summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md18
-rw-r--r--asm-de/battle_message.s2342
-rw-r--r--asm-de/berry_blender.s9141
-rw-r--r--asm/battle_2.s12
-rw-r--r--asm/battle_5.s4591
-rw-r--r--asm/battle_9.s1424
-rw-r--r--asm/battle_anim_81258BC.s1396
-rw-r--r--asm/battle_message.s2403
-rw-r--r--asm/battle_tower.s10
-rw-r--r--asm/battle_transition.s6254
-rw-r--r--asm/berry_blender.s9164
-rw-r--r--asm/cable_club.s1671
-rw-r--r--asm/cute_sketch.s439
-rw-r--r--asm/daycare.s2399
-rw-r--r--asm/egg_hatch.s1630
-rw-r--r--asm/evolution_graphics.s1829
-rw-r--r--asm/evolution_scene.s6717
-rw-r--r--asm/field_effect_helpers.s4349
-rw-r--r--asm/field_ground_effect.s1302
-rw-r--r--asm/field_map_obj.s628
-rw-r--r--asm/fldeff_80C5CD4.s68
-rw-r--r--asm/hall_of_fame.s3402
-rw-r--r--asm/intro_credits_graphics.s1166
-rw-r--r--asm/learn_move.s2739
-rw-r--r--asm/macros/event.inc6
-rw-r--r--asm/mauville_old_man.s1522
-rw-r--r--asm/party_menu.s24
-rw-r--r--asm/pokeblock_feed.s1836
-rw-r--r--asm/pokedex_area_screen.s6
-rw-r--r--asm/pokemon_menu.s3438
-rw-r--r--asm/pokenav.s6
-rw-r--r--asm/reshow_battle_screen.s1097
-rw-r--r--asm/shop.s2613
-rw-r--r--asm/trade.s8
-rw-r--r--common_syms/berry_blender.txt4
-rw-r--r--common_syms/cute_sketch.txt0
-rw-r--r--common_syms/egg_hatch.txt1
-rw-r--r--common_syms/evolution_scene.txt1
-rw-r--r--common_syms/overworld.txt (renamed from common_syms/rom4.txt)0
-rw-r--r--common_syms/pokeblock_feed.txt12
-rw-r--r--common_syms/pokemon_menu.txt2
-rw-r--r--data-de/event_scripts.s111
-rw-r--r--data-de/field_move_scripts.inc20
-rw-r--r--data-de/text/bard.inc18
-rw-r--r--data-de/text/giddy.inc8
-rw-r--r--data-de/text/hipster.inc8
-rw-r--r--data-de/text/storyteller.inc236
-rw-r--r--data-de/text/trader.inc28
-rw-r--r--data/battle_811DA74.s64
-rw-r--r--data/battle_anim_81258BC.s64
-rw-r--r--data/battle_anim_8137220.s64
-rw-r--r--data/battle_moves.s (renamed from data/battle_moves.inc)5
-rw-r--r--data/battle_transition.s399
-rw-r--r--data/berry_blender.s456
-rw-r--r--data/data2b.s210
-rw-r--r--data/daycare.s17
-rw-r--r--data/egg_hatch.s122
-rw-r--r--data/egg_moves.inc1306
-rw-r--r--data/event_scripts.s114
-rw-r--r--data/evolution_graphics.s70
-rw-r--r--data/evolution_scene.s14
-rw-r--r--data/field_effect_helpers.s37
-rw-r--r--data/field_ground_effect.s72
-rw-r--r--data/field_move_scripts.inc20
-rw-r--r--data/hall_of_fame.s230
-rw-r--r--data/intro_credits_graphics.s4
-rw-r--r--data/learn_move.s150
-rw-r--r--data/maps/events/FieryPath.inc12
-rw-r--r--data/maps/events/GraniteCave_B2F.inc14
-rw-r--r--data/maps/events/PetalburgWoods.inc4
-rw-r--r--data/maps/events/Route102.inc4
-rw-r--r--data/maps/events/Route103.inc10
-rw-r--r--data/maps/events/Route104.inc22
-rw-r--r--data/maps/events/Route110.inc6
-rw-r--r--data/maps/events/Route110_TrickHousePuzzle1.inc30
-rw-r--r--data/maps/events/Route110_TrickHousePuzzle3.inc12
-rw-r--r--data/maps/events/Route110_TrickHousePuzzle4.inc22
-rw-r--r--data/maps/events/Route111.inc14
-rw-r--r--data/maps/events/Route112.inc8
-rw-r--r--data/maps/events/Route114.inc16
-rw-r--r--data/maps/events/Route115.inc12
-rw-r--r--data/maps/events/Route116.inc16
-rw-r--r--data/maps/events/Route117.inc8
-rw-r--r--data/maps/events/Route118.inc8
-rw-r--r--data/maps/events/Route119.inc14
-rw-r--r--data/maps/events/Route120.inc26
-rw-r--r--data/maps/events/Route121.inc22
-rw-r--r--data/maps/events/Route123.inc42
-rw-r--r--data/maps/events/Route130.inc2
-rw-r--r--data/maps/events/RusturfTunnel.inc4
-rw-r--r--data/maps/events/SafariZone_Northeast.inc12
-rw-r--r--data/maps/events/SeafloorCavern_Room1.inc6
-rw-r--r--data/maps/events/SeafloorCavern_Room2.inc18
-rw-r--r--data/maps/events/SeafloorCavern_Room3.inc18
-rw-r--r--data/maps/events/SeafloorCavern_Room5.inc12
-rw-r--r--data/maps/events/SeafloorCavern_Room8.inc24
-rw-r--r--data/maps/events/ShoalCave_LowTideLowerRoom.inc2
-rw-r--r--data/maps/events/VictoryRoad_B1F.inc28
-rw-r--r--data/mauville_old_man.s101
-rw-r--r--data/mon_pokeblock_anims.inc133
-rw-r--r--data/pokeblock_feed.s225
-rw-r--r--data/pokemon_menu.s82
-rw-r--r--data/rom4.s66
-rw-r--r--data/scripts/bard.inc67
-rw-r--r--data/scripts/berry_tree.inc2
-rw-r--r--data/scripts/cable_club.inc8
-rw-r--r--data/scripts/day_care.inc2
-rw-r--r--data/scripts/giddy.inc51
-rw-r--r--data/scripts/hipster.inc25
-rw-r--r--data/scripts/maps/AncientTomb.inc2
-rw-r--r--data/scripts/maps/BattleTower_BattleRoom.inc4
-rw-r--r--data/scripts/maps/BattleTower_Lobby.inc2
-rw-r--r--data/scripts/maps/CaveOfOrigin_B4F.inc2
-rw-r--r--data/scripts/maps/DesertRuins.inc2
-rw-r--r--data/scripts/maps/IslandCave.inc4
-rw-r--r--data/scripts/maps/LilycoveCity_ContestLobby.inc2
-rw-r--r--data/scripts/maps/LilycoveCity_CoveLilyMotel_2F.inc2
-rw-r--r--data/scripts/maps/LilycoveCity_Harbor.inc2
-rw-r--r--data/scripts/maps/LilycoveCity_MoveDeletersHouse.inc6
-rw-r--r--data/scripts/maps/MossdeepCity_GameCorner_1F.inc2
-rw-r--r--data/scripts/maps/MossdeepCity_GameCorner_B1F.inc2
-rw-r--r--data/scripts/maps/PetalburgCity.inc2
-rw-r--r--data/scripts/maps/Route101.inc4
-rw-r--r--data/scripts/maps/Route110.inc2
-rw-r--r--data/scripts/maps/SkyPillar_Top.inc2
-rw-r--r--data/scripts/maps/SlateportCity.inc2
-rw-r--r--data/scripts/maps/SouthernIsland_Interior.inc2
-rw-r--r--data/scripts/mauville_man.inc357
-rw-r--r--data/scripts/players_house.inc2
-rw-r--r--data/scripts/pokeblocks.inc2
-rw-r--r--data/scripts/storyteller.inc82
-rw-r--r--data/scripts/trader.inc88
-rw-r--r--data/shop.s69
-rw-r--r--data/specials.inc88
-rw-r--r--data/text/bard.inc18
-rw-r--r--data/text/giddy.inc8
-rw-r--r--data/text/hipster.inc8
-rw-r--r--data/text/storyteller.inc236
-rw-r--r--data/text/trader.inc28
-rw-r--r--data/trainer_see.s41
-rw-r--r--include/bard_music.h31
-rw-r--r--include/battle.h49
-rw-r--r--include/battle_message.h20
-rw-r--r--include/battle_setup.h72
-rw-r--r--include/battle_transition.h40
-rw-r--r--include/berry_blender.h6
-rw-r--r--include/braille_puzzles.h2
-rw-r--r--include/cable_club.h30
-rw-r--r--include/data/field_map_obj/anim_func_ptrs.h2
-rw-r--r--include/data/field_map_obj/base_oam.h2
-rw-r--r--include/data/field_map_obj/berry_tree_graphics_tables.h2
-rw-r--r--include/data/field_map_obj/callback_subroutine_pointers.h4
-rw-r--r--include/data/field_map_obj/field_effect_object_template_pointers.h2
-rw-r--r--include/data/field_map_obj/field_effect_objects.h2
-rw-r--r--include/data/field_map_obj/map_object_anims.h2
-rw-r--r--include/data/field_map_obj/map_object_graphics_info.h2
-rw-r--r--include/data/field_map_obj/map_object_graphics_info_pointers.h2
-rw-r--r--include/data/field_map_obj/map_object_pic_tables.h2
-rw-r--r--include/data/field_map_obj/map_object_subsprites.h2
-rw-r--r--include/data/pokemon/base_stats.h2
-rw-r--r--include/data/pokemon/cry_ids.h2
-rw-r--r--include/data/pokemon/dex_order.h2
-rw-r--r--include/data/pokemon/egg_moves.h1318
-rw-r--r--include/data/pokemon/evolution.h2
-rw-r--r--include/data/pokemon/experience_tables.h2
-rw-r--r--include/data/pokemon/item_effects.h2
-rw-r--r--include/data/pokemon/level_up_learnset_pointers.h2
-rw-r--r--include/data/pokemon/level_up_learnsets.h2
-rw-r--r--include/data/pokemon/nature_stats.h2
-rw-r--r--include/data/pokemon/spinda_spots.h2
-rw-r--r--include/data/pokemon/tmhm_learnsets.h2
-rw-r--r--include/data/pokemon/trainer_class_lookups.h2
-rw-r--r--include/data2.h13
-rw-r--r--include/daycare.h6
-rw-r--r--include/decompress.h2
-rw-r--r--include/diploma.h2
-rw-r--r--include/easy_chat.h1036
-rw-r--r--include/event_data.h2
-rw-r--r--include/evolution_graphics.h15
-rw-r--r--include/evolution_scene.h10
-rw-r--r--include/field_camera.h2
-rw-r--r--include/field_door.h2
-rw-r--r--include/field_effect.h4
-rw-r--r--include/field_effect_helpers.h7
-rw-r--r--include/field_map_obj.h64
-rw-r--r--include/field_map_obj_helpers.h2
-rw-r--r--include/field_poison.h2
-rw-r--r--include/gba/m4a_internal.h4
-rw-r--r--include/gba/types.h10
-rw-r--r--include/global.fieldmap.h20
-rw-r--r--include/global.h120
-rw-r--r--include/intro_credits_graphics.h17
-rw-r--r--include/item_menu.h11
-rw-r--r--include/item_use.h3
-rw-r--r--include/m4a.h5
-rw-r--r--include/mail_data.h2
-rw-r--r--include/map_obj_lock.h2
-rw-r--r--include/mauville_man.h18
-rw-r--r--include/mauville_old_man.h11
-rw-r--r--include/menu.h4
-rw-r--r--include/money.h16
-rw-r--r--include/overworld.h (renamed from include/rom4.h)52
-rw-r--r--include/party_menu.h45
-rw-r--r--include/pokeblock.h26
-rw-r--r--include/pokeblock_feed.h10
-rw-r--r--include/pokemon.h10
-rw-r--r--include/pokemon_menu.h44
-rw-r--r--include/pokemon_storage_system.h2
-rw-r--r--include/rom3.h62
-rw-r--r--include/script.h8
-rw-r--r--include/script_menu.h34
-rw-r--r--include/script_movement.h4
-rw-r--r--include/script_pokemon_80C4.h4
-rw-r--r--include/shop.h36
-rw-r--r--include/songs.h190
-rw-r--r--include/species.h3
-rw-r--r--include/sprite.h18
-rw-r--r--include/start_menu.h2
-rw-r--r--include/text.h59
-rw-r--r--include/trade.h23
-rw-r--r--include/trader.h3
-rw-r--r--include/trainer_see.h20
-rw-r--r--include/unknown_task.h16
-rw-r--r--include/use_pokeblock.h10
-rw-r--r--include/vars.h1
-rw-r--r--include/wild_encounter.h6
-rw-r--r--ld_script.txt92
-rw-r--r--shared_syms.txt2
-rw-r--r--src/bard_music.c76
-rw-r--r--src/battle_2.c37
-rw-r--r--src/battle_3.c5566
-rw-r--r--src/battle_4.c89
-rw-r--r--src/battle_6.c1507
-rw-r--r--src/battle_7.c336
-rw-r--r--src/battle_anim_80CA710.c18
-rw-r--r--src/battle_anim_81258BC.c50
-rw-r--r--src/battle_controller_linkopponent.c (renamed from src/battle_10.c)685
-rw-r--r--src/battle_controller_linkpartner.c (renamed from src/battle_811DA74.c)246
-rw-r--r--src/battle_controller_opponent.c (renamed from src/battle_8.c)533
-rw-r--r--src/battle_controller_player.c3066
-rw-r--r--src/battle_controller_safari.c709
-rw-r--r--src/battle_controller_wally.c (renamed from src/battle_anim_8137220.c)279
-rw-r--r--src/battle_message.c959
-rw-r--r--src/battle_party_menu.c9
-rw-r--r--src/battle_records.c2
-rw-r--r--src/battle_setup.c641
-rw-r--r--src/battle_transition.c2513
-rw-r--r--src/berry.c6
-rw-r--r--src/berry_blender.c3884
-rw-r--r--src/berry_tag_screen.c245
-rw-r--r--src/bike.c6
-rw-r--r--src/braille_puzzles.c36
-rw-r--r--src/cable_club.c922
-rw-r--r--src/calculate_base_damage.c1363
-rw-r--r--src/choose_party.c103
-rw-r--r--src/clock.c2
-rw-r--r--src/cute_sketch.c164
-rw-r--r--src/daycare.c1838
-rw-r--r--src/de_rom_8040FE0.c202
-rw-r--r--src/decoration.c4
-rw-r--r--src/decoration_inventory.c2
-rw-r--r--src/diploma.c4
-rw-r--r--src/easy_chat.c28
-rw-r--r--src/egg_hatch.c814
-rw-r--r--src/event_data.c16
-rw-r--r--src/evolution_graphics.c614
-rw-r--r--src/evolution_scene.c3966
-rw-r--r--src/field_control_avatar.c48
-rw-r--r--src/field_door.c7
-rw-r--r--src/field_effect.c101
-rw-r--r--src/field_effect_helpers.c1632
-rw-r--r--src/field_fadetransition.c10
-rw-r--r--src/field_ground_effect.c598
-rw-r--r--src/field_map_obj.c564
-rw-r--r--src/field_map_obj_helpers.c14
-rw-r--r--src/field_player_avatar.c229
-rw-r--r--src/field_poison.c2
-rw-r--r--src/field_screen_effect.c15
-rw-r--r--src/field_special_scene.c12
-rw-r--r--src/field_specials.c48
-rw-r--r--src/field_tasks.c33
-rw-r--r--src/field_weather.c2
-rw-r--r--src/fieldmap.c16
-rw-r--r--src/fldeff_cut.c31
-rw-r--r--src/fldeff_flash.c10
-rw-r--r--src/fldeff_strength.c16
-rw-r--r--src/fldeff_sweetscent.c8
-rw-r--r--src/fldeff_teleport.c14
-rw-r--r--src/hall_of_fame.c1413
-rw-r--r--src/hof_pc.c6
-rwxr-xr-xsrc/intro_credits_graphics.c532
-rw-r--r--src/item_menu.c366
-rw-r--r--src/item_use.c120
-rw-r--r--src/learn_move.c1081
-rw-r--r--src/link.c5
-rw-r--r--src/load_save.c2
-rw-r--r--src/m4a_4.c2
-rw-r--r--src/mail.c4
-rw-r--r--src/main.c2
-rw-r--r--src/main_menu.c412
-rw-r--r--src/map_obj_lock.c2
-rw-r--r--src/matsuda_debug_menu.c2
-rw-r--r--src/mauville_man.c1311
-rw-r--r--src/mauville_old_man.c247
-rw-r--r--src/menu.c148
-rw-r--r--src/menu_cursor.c103
-rw-r--r--src/menu_helpers.c4
-rw-r--r--src/money.c54
-rw-r--r--src/mori_debug_menu.c10
-rw-r--r--src/mystery_event_menu.c22
-rw-r--r--src/naming_screen.c2
-rw-r--r--src/new_game.c6
-rw-r--r--src/option_menu.c102
-rw-r--r--src/overworld.c (renamed from src/rom4.c)505
-rw-r--r--src/party_menu.c11
-rw-r--r--src/player_pc.c10
-rw-r--r--src/pokeblock.c51
-rw-r--r--src/pokeblock_feed.c1015
-rw-r--r--src/pokedex.c2
-rw-r--r--src/pokemon_1.c35
-rw-r--r--src/pokemon_2.c116
-rw-r--r--src/pokemon_3.c6
-rw-r--r--src/pokemon_icon.c81
-rw-r--r--src/pokemon_menu.c1200
-rw-r--r--src/pokenav.c2
-rw-r--r--src/post_battle_event_funcs.c4
-rw-r--r--src/record_mixing.c38
-rw-r--r--src/region_map.c14
-rw-r--r--src/reshow_battle_screen.c332
-rw-r--r--src/rom3.c533
-rw-r--r--src/rom6.c48
-rw-r--r--src/rotating_gate.c711
-rw-r--r--src/safari_zone.c4
-rw-r--r--src/save.c2
-rw-r--r--src/scrcmd.c319
-rw-r--r--src/script.c16
-rw-r--r--src/script_menu.c1092
-rw-r--r--src/script_movement.c62
-rw-r--r--src/script_pokemon_util_80C4BF0.c54
-rw-r--r--src/script_pokemon_util_80F99CC.c65
-rw-r--r--src/secret_base.c8
-rw-r--r--src/shop.c1135
-rw-r--r--src/sound.c59
-rw-r--r--src/start_menu.c6
-rw-r--r--src/strings.c4
-rw-r--r--src/time_events.c6
-rw-r--r--src/title_screen.c184
-rw-r--r--src/trade.c1
-rw-r--r--src/trader.c47
-rw-r--r--src/trainer_card.c4
-rw-r--r--src/trainer_see.c344
-rw-r--r--src/tv.c29
-rw-r--r--src/unknown_task.c15
-rw-r--r--src/use_pokeblock.c270
-rw-r--r--src/wild_encounter.c59
-rw-r--r--sym_bss.txt119
-rw-r--r--sym_common.txt76
-rw-r--r--sym_ewram.txt77
358 files changed, 42151 insertions, 93138 deletions
diff --git a/README.md b/README.md
index 0782f7a12..a840a9a78 100644
--- a/README.md
+++ b/README.md
@@ -9,8 +9,24 @@ It builds the following roms:
To set up the repository, see [INSTALL.md](INSTALL.md).
-### irc: [freenode#pret][irc]
+## See also
+* Disassembly of [**Pokémon Red/Blue**][pokered]
+* Disassembly of [**Pokémon Yellow**][pokeyellow]
+* Disassembly of [**Pokémon Crystal**][pokecrystal]
+* Disassembly of [**Pokémon Pinball**][pokepinball]
+* Disassembly of [**Pokémon TCG**][poketcg]
+* Disassembly of [**Pokémon Emerald**][pokeemerald]
+* Discord: [**pret**][Discord]
+* irc: **irc.freenode.net** [**#pret**][irc]
+
+[pokered]: https://github.com/pret/pokered
+[pokeyellow]: https://github.com/pret/pokeyellow
+[pokecrystal]: https://github.com/pret/pokecrystal
+[pokepinball]: https://github.com/pret/pokepinball
+[poketcg]: https://github.com/pret/poketcg
+[pokeemerald]: https://github.com/pret/pokeemerald
+[Discord]: https://discord.gg/cJxDDVP
[irc]: https://kiwiirc.com/client/irc.freenode.net/?#pret
[travis]: https://travis-ci.org/pret/pokeruby
[travis-badge]: https://travis-ci.org/pret/pokeruby.svg?branch=master
diff --git a/asm-de/battle_message.s b/asm-de/battle_message.s
deleted file mode 100644
index 2f671a766..000000000
--- a/asm-de/battle_message.s
+++ /dev/null
@@ -1,2342 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start BufferStringBattle
-BufferStringBattle: @ 8120AA8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 16
- lsrs r7, r0, 16
- movs r6, 0
- ldr r5, _08120B70 @ =gSelectedOrderFromParty
- ldr r4, _08120B74 @ =gActiveBank
- ldrb r1, [r4]
- lsls r1, 9
- ldr r0, _08120B78 @ =gUnknown_02023A64
- adds r1, r0
- str r1, [r5]
- ldr r2, _08120B7C @ =gLastUsedItem
- ldrh r0, [r1, 0x4]
- strh r0, [r2]
- ldr r2, _08120B80 @ =gLastUsedAbility
- ldrb r0, [r1, 0x6]
- strb r0, [r2]
- ldr r3, _08120B84 @ =0x02000000
- ldrb r0, [r1, 0x7]
- mov r8, r0
- ldr r2, _08120B88 @ =0x00016003
- adds r0, r3, r2
- mov r2, r8
- strb r2, [r0]
- ldrb r0, [r1, 0x8]
- mov r8, r0
- ldr r2, _08120B8C @ =0x0001605e
- adds r0, r3, r2
- mov r2, r8
- strb r2, [r0]
- ldrb r0, [r1, 0x9]
- mov r8, r0
- ldr r2, _08120B90 @ =0x000160c1
- adds r0, r3, r2
- mov r2, r8
- strb r2, [r0]
- ldr r2, _08120B94 @ =gStringBank
- ldrb r0, [r1, 0xA]
- strb r0, [r2]
- ldrb r1, [r1, 0xB]
- ldr r2, _08120B98 @ =0x000160a0
- adds r0, r3, r2
- strb r1, [r0]
- movs r2, 0
- mov r9, r3
- ldr r3, _08120B9C @ =gBattleTextBuff1
- mov r10, r3
- ldr r3, _08120BA0 @ =gAbilitiesPerBank
-_08120B10:
- adds r0, r2, r3
- ldr r1, [r5]
- adds r1, 0xC
- adds r1, r2
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x3
- ble _08120B10
- movs r2, 0
- ldr r0, _08120B9C @ =gBattleTextBuff1
- mov r8, r0
- ldr r3, _08120B70 @ =gSelectedOrderFromParty
- ldr r1, _08120BA4 @ =gBattleTextBuff2
- mov r12, r1
- ldr r5, _08120BA8 @ =gBattleTextBuff3
-_08120B30:
- mov r0, r8
- adds r1, r2, r0
- ldr r0, [r3]
- adds r0, 0x10
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- mov r0, r12
- adds r1, r2, r0
- ldr r0, [r3]
- adds r0, 0x20
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- adds r1, r2, r5
- ldr r0, [r3]
- adds r0, 0x30
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- adds r2, 0x1
- cmp r2, 0xF
- ble _08120B30
- cmp r7, 0x5
- bls _08120B64
- b _08120F50
-_08120B64:
- lsls r0, r7, 2
- ldr r1, _08120BAC @ =_08120BB0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08120B70: .4byte gSelectedOrderFromParty
-_08120B74: .4byte gActiveBank
-_08120B78: .4byte gUnknown_02023A64
-_08120B7C: .4byte gLastUsedItem
-_08120B80: .4byte gLastUsedAbility
-_08120B84: .4byte 0x02000000
-_08120B88: .4byte 0x00016003
-_08120B8C: .4byte 0x0001605e
-_08120B90: .4byte 0x000160c1
-_08120B94: .4byte gStringBank
-_08120B98: .4byte 0x000160a0
-_08120B9C: .4byte gBattleTextBuff1
-_08120BA0: .4byte gAbilitiesPerBank
-_08120BA4: .4byte gBattleTextBuff2
-_08120BA8: .4byte gBattleTextBuff3
-_08120BAC: .4byte _08120BB0
- .align 2, 0
-_08120BB0:
- .4byte _08120BC8
- .4byte _08120C40
- .4byte _08120CCC
- .4byte _08120D5C
- .4byte _08120DE8
- .4byte _08120E50
-_08120BC8:
- ldr r0, _08120BEC @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _08120C00
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08120BF8
- movs r0, 0x40
- ands r0, r1
- ldr r6, _08120BF0 @ =gUnknown_084005C7
- cmp r0, 0
- bne _08120BE8
- b _08120F70
-_08120BE8:
- ldr r6, _08120BF4 @ =gUnknown_084005DB
- b _08120F70
- .align 2, 0
-_08120BEC: .4byte gBattleTypeFlags
-_08120BF0: .4byte gUnknown_084005C7
-_08120BF4: .4byte gUnknown_084005DB
-_08120BF8:
- ldr r6, _08120BFC @ =gUnknown_084005AA
- ldr r0, _08120C04 @ =0x0000ffff
- b _08120F9A
- .align 2, 0
-_08120BFC: .4byte gUnknown_084005AA
-_08120C04: .4byte 0x0000ffff
-_08120C00:
- movs r0, 0x80
- lsls r0, 6
- ands r0, r1
- cmp r0, 0
- beq _08120C14
- ldr r6, _08120C10 @ =gUnknown_08400568
- b _08120F70
- .align 2, 0
-_08120C10: .4byte gUnknown_08400568
-_08120C14:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08120C24
- ldr r6, _08120C20 @ =gUnknown_08400590
- b _08120F70
- .align 2, 0
-_08120C20: .4byte gUnknown_08400590
-_08120C24:
- movs r0, 0x80
- lsls r0, 2
- ands r0, r1
- ldr r6, _08120C38 @ =gUnknown_08400555
- cmp r0, 0
- bne _08120C32
- b _08120F70
-_08120C32:
- ldr r6, _08120C3C @ =gUnknown_0840057B
- b _08120F70
- .align 2, 0
-_08120C38: .4byte gUnknown_08400555
-_08120C3C: .4byte gUnknown_0840057B
-_08120C40:
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08120C7C
- ldr r0, _08120C68 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08120C74
- movs r0, 0x40
- ands r0, r1
- ldr r6, _08120C6C @ =gUnknown_084006A4
- cmp r0, 0
- bne _08120C64
- b _08120F70
-_08120C64:
- ldr r6, _08120C70 @ =gUnknown_084006F1
- b _08120F70
- .align 2, 0
-_08120C68: .4byte gBattleTypeFlags
-_08120C6C: .4byte gUnknown_084006A4
-_08120C70: .4byte gUnknown_084006F1
-_08120C74:
- ldr r6, _08120C78 @ =gUnknown_0840069C
- b _08120F70
- .align 2, 0
-_08120C78: .4byte gUnknown_0840069C
-_08120C7C:
- ldr r0, _08120C94 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08120CB4
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08120C9C
- ldr r6, _08120C98 @ =gUnknown_0840065C
- b _08120F70
- .align 2, 0
-_08120C94: .4byte gBattleTypeFlags
-_08120C98: .4byte gUnknown_0840065C
-_08120C9C:
- movs r0, 0x2
- ands r0, r1
- ldr r6, _08120CB8d @ =gUnknown_08400645
- cmp r0, 0
- beq _08120CA8
- b _08120F70
-_08120CA8:
- ldr r6, _08120CBCd @ =gUnknown_08400608
- ldr r0, _08120CC0d @ =0x0000ffff
- b _08120F9A
- .align 2, 0
-_08120CB8d: .4byte gUnknown_08400645
-_08120CBCd: .4byte gUnknown_08400608
-_08120CC0d: .4byte 0x0000ffff
-_08120CB4:
- movs r0, 0x2
- ands r0, r1
- ldr r6, _08120CD8 @ =gUnknown_08400635
- cmp r0, 0
- beq _08120CC0
- b _08120F70
-_08120CC0:
- ldr r6, _08120CDC @ =gUnknown_084005F5
- ldr r0, _08120CE0 @ =0x0000ffff
- b _08120F9A
- .align 2, 0
-_08120CD8: .4byte gUnknown_08400635
-_08120CDC: .4byte gUnknown_084005F5
-_08120CE0: .4byte 0x0000ffff
-_08120CCC:
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08120D24
- ldr r0, _08120CE8 @ =0x02000000
- ldr r1, _08120CEC @ =0x000160c1
- adds r0, r1
- ldrb r2, [r0]
- cmp r2, 0
- bne _08120CF4
- ldr r6, _08120CF0 @ =gUnknown_08400709
- b _08120F70
- .align 2, 0
-_08120CE8: .4byte 0x02000000
-_08120CEC: .4byte 0x000160c1
-_08120CF0: .4byte gUnknown_08400709
-_08120CF4:
- cmp r2, 0x1
- beq _08120D04
- ldr r0, _08120D08 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08120D10
-_08120D04:
- ldr r6, _08120D0C @ =gUnknown_08400727
- b _08120F70
- .align 2, 0
-_08120D08: .4byte gBattleTypeFlags
-_08120D0C: .4byte gUnknown_08400727
-_08120D10:
- ldr r6, _08120D1C @ =gUnknown_08400749
- cmp r2, 0x2
- beq _08120D18
- b _08120F70
-_08120D18:
- ldr r6, _08120D20 @ =gUnknown_08400736
- b _08120F70
- .align 2, 0
-_08120D1C: .4byte gUnknown_08400749
-_08120D20: .4byte gUnknown_08400736
-_08120D24:
- ldr r0, _08120D44 @ =gTrainerBattleOpponent
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 4
- cmp r1, r0
- bne _08120D54
- ldr r0, _08120D48 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- ldr r6, _08120D4C @ =gUnknown_08400771
- cmp r0, 0
- bne _08120D40
- b _08120F70
-_08120D40:
- ldr r6, _08120D50 @ =gUnknown_08400781
- b _08120F70
- .align 2, 0
-_08120D44: .4byte gTrainerBattleOpponent
-_08120D48: .4byte gBattleTypeFlags
-_08120D4C: .4byte gUnknown_08400771
-_08120D50: .4byte gUnknown_08400781
-_08120D54:
- ldr r6, _08120D58 @ =gUnknown_0840075E
- ldr r0, _d08120D78 @ =0x0000ffff
- b _08120F9A
- .align 2, 0
-_08120D58: .4byte gUnknown_0840075E
-_d08120D78: .4byte 0x0000ffff
-_08120D5C:
- ldr r0, _08120D88 @ =0x00016003
- add r0, r9
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08120DB8
- ldr r0, _08120D8C @ =0x000160c1
- add r0, r9
- ldrb r3, [r0]
- cmp r3, 0
- beq _08120D82
- ldr r0, _08120D90 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08120D98
-_08120D82:
- ldr r6, _08120D94 @ =gUnknown_084006B3
- b _08120F70
- .align 2, 0
-_08120D88: .4byte 0x00016003
-_08120D8C: .4byte 0x000160c1
-_08120D90: .4byte gBattleTypeFlags
-_08120D94: .4byte gUnknown_084006B3
-_08120D98:
- cmp r3, 0x1
- bne _08120DA4
- ldr r6, _08120DA0 @ =gUnknown_084006BB
- b _08120F70
- .align 2, 0
-_08120DA0: .4byte gUnknown_084006BB
-_08120DA4:
- ldr r6, _08120DB0 @ =gUnknown_084006D5
- cmp r3, 0x2
- beq _08120DAC
- b _08120F70
-_08120DAC:
- ldr r6, _08120DB4 @ =gUnknown_084006C6
- b _08120F70
- .align 2, 0
-_08120DB0: .4byte gUnknown_084006D5
-_08120DB4: .4byte gUnknown_084006C6
-_08120DB8:
- ldr r0, _08120DD4 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08120DE0
- movs r0, 0x40
- ands r0, r1
- ldr r6, _08120DD8 @ =gUnknown_0840067C
- cmp r0, 0
- bne _08120DD0
- b _08120F70
-_08120DD0:
- ldr r6, _08120DDC @ =gUnknown_0840068C
- b _08120F70
- .align 2, 0
-_08120DD4: .4byte gBattleTypeFlags
-_08120DD8: .4byte gUnknown_0840067C
-_08120DDC: .4byte gUnknown_0840068C
-_08120DE0:
- ldr r6, _08120DE4 @ =gUnknown_08400622
- ldr r0, _d08120E0C @ =0x0000ffff
- b _08120F9A
- .align 2, 0
-_08120DE4: .4byte gUnknown_08400622
-_d08120E0C: .4byte 0x0000ffff
-_08120DE8:
- mov r0, r10
- bl sub_8121D1C
- ldr r0, _08120E14 @ =gSelectedOrderFromParty
- ldr r2, [r0]
- ldrh r1, [r2]
- movs r0, 0xB1
- lsls r0, 1
- cmp r1, r0
- bls _08120E28
- ldr r0, _08120E18 @ =gBattleTextBuff2
- ldr r2, _08120E1C @ =gUnknown_08401674
- ldr r1, _08120E20 @ =0x02000000
- ldr r3, _08120E24 @ =0x000160a0
- adds r1, r3
- ldrb r1, [r1]
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- bl StringCopy
- b _08120E38
- .align 2, 0
-_08120E14: .4byte gSelectedOrderFromParty
-_08120E18: .4byte gBattleTextBuff2
-_08120E1C: .4byte gUnknown_08401674
-_08120E20: .4byte 0x02000000
-_08120E24: .4byte 0x000160a0
-_08120E28:
- ldr r0, _08120E44 @ =gBattleTextBuff2
- ldrh r2, [r2]
- movs r1, 0xD
- muls r1, r2
- ldr r2, _08120E48 @ =gMoveNames
- adds r1, r2
- bl StringCopy
-_08120E38:
- ldr r0, _08120E44 @ =gBattleTextBuff2
- bl sub_8121D74
- ldr r6, _08120E4C @ =gUnknown_084007BD
- b _08120F70
- .align 2, 0
-_08120E44: .4byte gBattleTextBuff2
-_08120E48: .4byte gMoveNames
-_08120E4C: .4byte gUnknown_084007BD
-_08120E50:
- ldr r5, _08120E90 @ =gBattleTextBuff1
- ldrb r1, [r5]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08120EB8
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r5]
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08120E7C
- ldrb r1, [r5]
- cmp r1, 0x3
- beq _08120E7C
- movs r0, 0x3
- eors r0, r1
- strb r0, [r5]
-_08120E7C:
- ldr r0, _08120E90 @ =gBattleTextBuff1
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _08120E98
- ldr r6, _08120E94 @ =gUnknown_083FFEFC
- b _08120F70
- .align 2, 0
-_08120E90: .4byte gBattleTextBuff1
-_08120E94: .4byte gUnknown_083FFEFC
-_08120E98:
- ldr r0, _08120EAC @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- ldr r6, _08120EB0 @ =gUnknown_083FFFEA
- cmp r0, 0
- beq _08120F70
- ldr r6, _08120EB4 @ =gUnknown_083FFFF7
- b _08120F70
- .align 2, 0
-_08120EAC: .4byte gBattleTypeFlags
-_08120EB0: .4byte gUnknown_083FFFEA
-_08120EB4: .4byte gUnknown_083FFFF7
-_08120EB8:
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08120ED2
- ldrb r1, [r5]
- cmp r1, 0x3
- beq _08120ED2
- movs r0, 0x3
- eors r0, r1
- strb r0, [r5]
-_08120ED2:
- ldr r0, _08120EF0 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08120F18
- ldr r0, _08120EF4 @ =gBattleTextBuff1
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _08120F08
- cmp r0, 0x2
- bgt _08120EF8
- cmp r0, 0x1
- beq _08120EFE
- b _08120F70
- .align 2, 0
-_08120EF0: .4byte gBattleTypeFlags
-_08120EF4: .4byte gBattleTextBuff1
-_08120EF8:
- cmp r0, 0x3
- beq _08120F10
- b _08120F70
-_08120EFE:
- ldr r6, _08120F04 @ =gUnknown_083FFF6A
- b _08120F70
- .align 2, 0
-_08120F04: .4byte gUnknown_083FFF6A
-_08120F08:
- ldr r6, _08120F0C @ =gUnknown_083FFF99
- b _08120F70
- .align 2, 0
-_08120F0C: .4byte gUnknown_083FFF99
-_08120F10:
- ldr r6, _08120F14 @ =gUnknown_083FFFCB
- b _08120F70
- .align 2, 0
-_08120F14: .4byte gUnknown_083FFFCB
-_08120F18:
- ldr r0, _08120F2C @ =gBattleTextBuff1
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _08120F40
- cmp r0, 0x2
- bgt _08120F30
- cmp r0, 0x1
- beq _08120F36
- b _08120F70
- .align 2, 0
-_08120F2C: .4byte gBattleTextBuff1
-_08120F30:
- cmp r0, 0x3
- beq _08120F48
- b _08120F70
-_08120F36:
- ldr r6, _08120F3C @ =gUnknown_083FFF56
- b _08120F70
- .align 2, 0
-_08120F3C: .4byte gUnknown_083FFF56
-_08120F40:
- ldr r6, _08120F44 @ =gUnknown_083FFF81
- b _08120F70
- .align 2, 0
-_08120F44: .4byte gUnknown_083FFF81
-_08120F48:
- ldr r6, _08120F4C @ =gUnknown_083FFFB3
- b _08120F70
- .align 2, 0
-_08120F4C: .4byte gUnknown_083FFFB3
-_08120F50:
- movs r0, 0xB5
- lsls r0, 1
- cmp r7, r0
- bls _08120F64
- ldr r1, _08120F60 @ =gDisplayedStringBattle
- movs r0, 0xFF
- strb r0, [r1]
- b _08120F76
- .align 2, 0
-_08120F60: .4byte gDisplayedStringBattle
-_08120F64:
- ldr r1, _08120F84 @ =gBattleStringsTable
- adds r0, r7, 0
- subs r0, 0xC
- lsls r0, 2
- adds r0, r1
- ldr r6, [r0]
- adds r0, r7, 0
-_08120F9A:
- adds r1, r6, 0
- bl de_sub_804110C
- adds r6, r0, 0
-_08120F70:
- adds r0, r6, 0
- bl StrCpyDecodeToDisplayedStringBattle
-_08120F76:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08120F84: .4byte gBattleStringsTable
- thumb_func_end BufferStringBattle
-
- thumb_func_start StrCpyDecodeToDisplayedStringBattle
-StrCpyDecodeToDisplayedStringBattle: @ 8120F88
- push {lr}
- ldr r1, _08120F94 @ =gDisplayedStringBattle
- bl StrCpyDecodeBattle
- pop {r1}
- bx r1
- .align 2, 0
-_08120F94: .4byte gDisplayedStringBattle
- thumb_func_end StrCpyDecodeToDisplayedStringBattle
-
- thumb_func_start sub_8120F98
-sub_8120F98: @ 8120F98
- push {r4,r5,lr}
- sub sp, 0x8
- adds r4, r0, 0
- ldr r1, _08120FB0 @ =gUnknown_084017A8
- mov r0, sp
- movs r2, 0x8
- bl memcpy
- mov r2, sp
- movs r3, 0
- b _08120FC0
- .align 2, 0
-_08120FB0: .4byte gUnknown_084017A8
-_08120FB4:
- strb r1, [r2]
- adds r4, 0x1
- adds r2, 0x1
- adds r3, 0x1
- cmp r3, 0x7
- bhi _08120FC8
-_08120FC0:
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _08120FB4
-_08120FC8:
- ldr r5, [sp]
- ldr r4, [sp, 0x4]
- movs r3, 0
- ldr r2, _08120FE4 @ =gUnknown_081FA6D4
-_08120FD0:
- ldr r1, [r2]
- ldr r0, [r1]
- cmp r5, r0
- bne _08120FE8
- ldr r0, [r1, 0x4]
- cmp r4, r0
- bne _08120FE8
- ldr r0, [r2, 0x4]
- b _08120FF2
- .align 2, 0
-_08120FE4: .4byte gUnknown_081FA6D4
-_08120FE8:
- adds r2, 0x8
- adds r3, 0x1
- cmp r3, 0x6
- bls _08120FD0
- movs r0, 0
-_08120FF2:
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8120F98
-
- thumb_func_start StrCpyDecodeBattle
-StrCpyDecodeBattle: @ 8120FFC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0xC
- mov r9, r0
- mov r8, r1
- movs r6, 0
- movs r4, 0
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r7, r0, 24
- mov r0, r9
- ldrb r1, [r0]
- bl _08121A40
-_0812101E:
- cmp r1, 0xFD
- beq _08121026
- bl _08121A30
-_08121026:
- movs r1, 0x1
- add r9, r1
- mov r2, r9
- ldrb r0, [r2]
- cmp r0, 0x2A
- bls _08121036
- bl _081219E6
-_08121036:
- lsls r0, 2
- ldr r1, _08121040 @ =_08121044
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08121040: .4byte _08121044
- .align 2, 0
-_08121044:
- .4byte _081210F0
- .4byte _0812111E
- .4byte _0812115A
- .4byte _08121180
- .4byte _081211A4
- .4byte _081211C8
- .4byte _081211EC
- .4byte _08121218
- .4byte _08121248
- .4byte _08121278
- .4byte _081212A8
- .4byte _0812133C
- .4byte _081213A8
- .4byte _0812141C
- .4byte _08121490
- .4byte _08121504
- .4byte _08121578
- .4byte _081215F8
- .4byte _08121620
- .4byte _08121660
- .4byte _081216EC
- .4byte _081216F4
- .4byte _08121704
- .4byte _08121714
- .4byte _0812172C
- .4byte _0812174C
- .4byte _081217C0
- .4byte _08121830
- .4byte _08121840
- .4byte _08121854
- .4byte _08121868
- .4byte _0812188C
- .4byte _081218B0
- .4byte _081218B8
- .4byte _081218C0
- .4byte _0812195C
- .4byte _081219A4
- .4byte _081219AC
- .4byte _0812197C
- .4byte _08121984
- .4byte _081219CC
- .4byte _081219D4
- .4byte _08121134
-_081210F0:
- ldr r5, _08121100 @ =gBattleTextBuff1
- ldrb r0, [r5]
- cmp r0, 0xFD
- bne _08121108
- ldr r4, _08121104 @ =gStringVar1
- adds r0, r5, 0
- b _08121140
- .align 2, 0
-_08121100: .4byte gBattleTextBuff1
-_08121104: .4byte gStringVar1
-_08121108:
- adds r0, r5, 0
- bl sub_8120F98
- adds r4, r0, 0
- cmp r4, 0
- beq _08121118
- bl _081219E6
-_08121118:
- adds r4, r5, 0
- bl _081219E6
-_0812111E:
- ldr r1, _0812112C @ =gBattleTextBuff2
- ldrb r0, [r1]
- cmp r0, 0xFD
- bne _08121154
- ldr r4, _08121130 @ =gStringVar2
- b _0812113E
- .align 2, 0
-_0812112C: .4byte gBattleTextBuff2
-_08121130: .4byte gStringVar2
-_08121134:
- ldr r1, _0812114C @ =gBattleTextBuff3
- ldrb r0, [r1]
- cmp r0, 0xFD
- bne _08121154
- ldr r4, _08121150 @ =gStringVar3
-_0812113E:
- adds r0, r1, 0
-_08121140:
- adds r1, r4, 0
- bl sub_8121A68
- bl _081219E6
- .align 2, 0
-_0812114C: .4byte gBattleTextBuff3
-_08121150: .4byte gStringVar3
-_08121154:
- adds r4, r1, 0
- bl _081219E6
-_0812115A:
- movs r0, 0
- bl GetBankByPlayerAI
- ldr r1, _08de12116C @ =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r1, [r0]
- b _0812193A
- .align 2, 0
-_08de12116C: .4byte gBattlePartyID
-_08121180:
- movs r0, 0x1
- bl GetBankByPlayerAI
- ldr r1, _0812119C @ =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _081211A0 @ =gEnemyParty
- b _08121940
- .align 2, 0
-_0812119C: .4byte gBattlePartyID
-_081211A0: .4byte gEnemyParty
-_081211A4:
- movs r0, 0x2
- bl GetBankByPlayerAI
- ldr r1, _081211C0 @ =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r1, [r0]
- b _0812193A
- .align 2, 0
-_081211C0: .4byte gBattlePartyID
-_081211C8:
- movs r0, 0x3
- bl GetBankByPlayerAI
- ldr r1, _081211E4 @ =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _081211E8 @ =gEnemyParty
- b _08121940
- .align 2, 0
-_081211E4: .4byte gBattlePartyID
-_081211E8: .4byte gEnemyParty
-_081211EC:
- ldr r2, _0812120C @ =gBattlePartyID
- ldr r1, _08121210 @ =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r1
- ldrh r0, [r0, 0x18]
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- b _0812193A
- .align 2, 0
-_0812120C: .4byte gBattlePartyID
-_08121210: .4byte gLinkPlayers
-_08121218:
- ldr r2, _0812123C @ =gBattlePartyID
- ldr r1, _08121240 @ =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r1
- ldrh r1, [r0, 0x18]
- movs r0, 0x1
- eors r0, r1
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08121244 @ =gEnemyParty
- b _08121940
- .align 2, 0
-_0812123C: .4byte gBattlePartyID
-_08121240: .4byte gLinkPlayers
-_08121244: .4byte gEnemyParty
-_08121248:
- ldr r2, _0812126C @ =gBattlePartyID
- ldr r1, _08121270 @ =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r1
- ldrh r1, [r0, 0x18]
- movs r0, 0x2
- eors r0, r1
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- b _0812193A
- .align 2, 0
-_0812126C: .4byte gBattlePartyID
-_08121270: .4byte gLinkPlayers
-_08121278:
- ldr r2, _0812129C @ =gBattlePartyID
- ldr r1, _081212A0 @ =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r1
- ldrh r1, [r0, 0x18]
- movs r0, 0x3
- eors r0, r1
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _081212A4 @ =gEnemyParty
- b _08121940
- .align 2, 0
-_0812129C: .4byte gBattlePartyID
-_081212A0: .4byte gLinkPlayers
-_081212A4: .4byte gEnemyParty
-_081212A8:
- ldr r4, _081212CC @ =gBankAttacker
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _081212E6
- ldrb r0, [r4]
- bl GetBankIdentity
- adds r1, r0, 0
- movs r0, 0x1
- ands r0, r1
- bl GetBankByPlayerAI
- ldr r1, _08121314 @ =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08121318 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- mov r4, sp
- b _08de1212BE
- .align 2, 0
-_081212CC: .4byte gBankAttacker
-_08121314: .4byte gBattlePartyID
-_08121318: .4byte gEnemyParty
-_08de1212B4:
- mov r3, r8
- adds r0, r3, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
-_08de1212BE:
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _08de1212B4
- b _08de12184E
-_081212E6:
- ldrb r0, [r4]
- bl GetBankIdentity
- adds r1, r0, 0
- movs r0, 0x1
- ands r0, r1
- bl GetBankByPlayerAI
- ldr r1, _08121338 @ =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r1, [r0]
- b _0812193A
- .align 2, 0
-_08121338: .4byte gBattlePartyID
-_0812133C:
- ldr r4, _08de121314 @ =gBankAttacker
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08de12131C
- ldrb r0, [r4]
- bl GetBankIdentity
- adds r1, r0, 0
- movs r0, 0x1
- ands r0, r1
- bl GetBankByPlayerAI
- ldr r1, _08de121318 @ =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, 0x4
- adds r0, r1
- ldrh r1, [r0]
- b _0812193A
- .align 2, 0
-_08de121314: .4byte gBankAttacker
-_08de121318: .4byte gBattlePartyID
-_08de12131C:
- ldrb r0, [r4]
- bl GetBankIdentity
- adds r1, r0, 0
- movs r0, 0x1
- ands r0, r1
- bl GetBankByPlayerAI
- ldr r1, _08de12134C @ =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, 0x4
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08de121350 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- b _0812194A
- .align 2, 0
-_08de12134C: .4byte gBattlePartyID
-_08de121350: .4byte gEnemyParty
-_081213A8:
- ldr r4, _08de121388 @ =gBankAttacker
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _08de1213A8
- ldr r1, _08de12138C @ =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08de121390 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- mov r4, sp
- b _08de12139E
- .align 2, 0
-_08de121388: .4byte gBankAttacker
-_08de12138C: .4byte gBattlePartyID
-_08de121390: .4byte gEnemyParty
-_08de121394:
- mov r5, r8
- adds r0, r5, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
-_08de12139E:
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _08de121394
- b _08de12184E
-_08de1213A8:
- ldr r1, _08de1213B4 @ =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- b _0812193A
- .align 2, 0
-_08de1213B4: .4byte gBattlePartyID
-_0812141C:
- ldr r4, _08de1213EC @ =gBankTarget
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _08de12140C
- ldr r1, _08de1213F0 @ =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08de1213F4 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- mov r4, sp
- b _08de121402
- .align 2, 0
-_08de1213EC: .4byte gBankTarget
-_08de1213F0: .4byte gBattlePartyID
-_08de1213F4: .4byte gEnemyParty
-_08de1213F8:
- mov r2, r8
- adds r0, r2, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
-_08de121402:
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _08de1213F8
- b _08de12184E
-_08de12140C:
- ldr r1, _08de121418 @ =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- b _0812193A
- .align 2, 0
-_08de121418: .4byte gBattlePartyID
-_08121490:
- ldr r4, _08de121450 @ =gEffectBank
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _08de121470
- ldr r1, _08de121454 @ =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08de121458 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- mov r4, sp
- b _08de121466
- .align 2, 0
-_08de121450: .4byte gEffectBank
-_08de121454: .4byte gBattlePartyID
-_08de121458: .4byte gEnemyParty
-_08de12145C:
- mov r3, r8
- adds r0, r3, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
-_08de121466:
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _08de12145C
- b _08de12184E
-_08de121470:
- ldr r1, _08de12147C @ =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- b _0812193A
- .align 2, 0
-_08de12147C: .4byte gBattlePartyID
-_08121504:
- ldr r4, _08de1214B4 @ =gActiveBank
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _08de1214D4
- ldr r1, _08de1214B8 @ =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08de1214BC @ =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- mov r4, sp
- b _08de1214CA
- .align 2, 0
-_08de1214B4: .4byte gActiveBank
-_08de1214B8: .4byte gBattlePartyID
-_08de1214BC: .4byte gEnemyParty
-_08de1214C0:
- mov r5, r8
- adds r0, r5, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
-_08de1214CA:
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _08de1214C0
- b _08de12184E
-_08de1214D4:
- ldr r1, _08de1214E0 @ =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- b _0812193A
- .align 2, 0
-_08de1214E0: .4byte gBattlePartyID
-_08121578:
- ldr r0, _08de12151C @ =0x02000000
- ldr r1, _08de121520 @ =0x00016003
- adds r4, r0, r1
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _081215E8
- ldr r1, _08de121524 @ =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08de121528 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- mov r4, sp
- b _08de121536
- .align 2, 0
-_08de12151C: .4byte 0x02000000
-_08de121520: .4byte 0x00016003
-_08de121524: .4byte gBattlePartyID
-_08de121528: .4byte gEnemyParty
-_08de12152C:
- mov r2, r8
- adds r0, r2, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
-_08de121536:
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _08de12152C
- b _08de12184E
-_081215E8:
- ldr r1, _081215F4 @ =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- b _0812193A
- .align 2, 0
-_081215F4: .4byte gBattlePartyID
-_081215F8:
- ldr r0, _08de121568 @ =gSelectedOrderFromParty
- ldr r2, [r0]
- ldrh r1, [r2]
- movs r0, 0xB1
- lsls r0, 1
- cmp r1, r0
- bls _08de121574
- ldr r0, _08de12156C @ =0x02000000
- ldr r3, _08de121570 @ =0x000160a0
- adds r0, r3
- b _08de12158C
- .align 2, 0
-_08de121568: .4byte gSelectedOrderFromParty
-_08de12156C: .4byte 0x02000000
-_08de121570: .4byte 0x000160a0
-_08de121574:
- ldrh r1, [r2]
- b _08de1215AA
-_08121620:
- ldr r0, _08de121598 @ =gSelectedOrderFromParty
- ldr r2, [r0]
- ldrh r1, [r2, 0x2]
- movs r0, 0xB1
- lsls r0, 1
- cmp r1, r0
- bls _08de1215A8
- ldr r0, _08de12159C @ =0x02000000
- ldr r5, _08de1215A0 @ =0x000160a0
- adds r0, r5
-_08de12158C:
- ldrb r0, [r0]
- lsls r0, 2
- ldr r1, _08de1215A4 @ =gUnknown_08401674
- adds r4, r0, r1
- b _081219E6
- .align 2, 0
-_08de121598: .4byte gSelectedOrderFromParty
-_08de12159C: .4byte 0x02000000
-_08de1215A0: .4byte 0x000160a0
-_08de1215A4: .4byte gUnknown_08401674
-_08de1215A8:
- ldrh r1, [r2, 0x2]
-_08de1215AA:
- movs r0, 0xD
- muls r1, r0
- ldr r0, _08de1215B4 @ =gMoveNames
- adds r4, r1, r0
- b _081219E6
- .align 2, 0
-_08de1215B4: .4byte gMoveNames
-_08121660:
- ldr r0, _08de121604 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08de121630
- ldr r1, _08de121608 @ =gLastUsedItem
- ldrh r0, [r1]
- cmp r0, 0xAF
- bne _08de12162C
- ldr r2, _08de12160C @ =gLinkPlayers
- ldr r0, _08de121610 @ =0x02000000
- ldr r1, _08de121614 @ =0x000160cb
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, _08de121618 @ =gStringBank
- ldrb r2, [r1]
- ldrh r0, [r0, 0x18]
- cmp r0, r2
- bne _08de121624
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- ldr r0, _08de12161C @ =gEnigmaBerries
- adds r1, r0
- mov r0, sp
- bl StringCopy
- ldr r1, _08de121620 @ =gUnknown_08400A85
- mov r0, sp
- bl de_sub_8073174
- mov r4, sp
- b _081219E6
- .align 2, 0
-_08de121604: .4byte gBattleTypeFlags
-_08de121608: .4byte gLastUsedItem
-_08de12160C: .4byte gLinkPlayers
-_08de121610: .4byte 0x02000000
-_08de121614: .4byte 0x000160cb
-_08de121618: .4byte gStringBank
-_08de12161C: .4byte gEnigmaBerries
-_08de121620: .4byte gUnknown_08400A85
-_08de121624:
- ldr r4, _08de121628 @ =gUnknown_08400A78
- b _081219E6
- .align 2, 0
-_08de121628: .4byte gUnknown_08400A78
-_08de12162C:
- ldrh r0, [r1]
- b _08de121634
-_08de121630:
- ldr r0, _08de121640 @ =gLastUsedItem
- ldrh r0, [r0]
-_08de121634:
- mov r1, sp
- bl CopyItemName
- mov r4, sp
- b _081219E6
- .align 2, 0
-_08de121640: .4byte gLastUsedItem
-_081216EC:
- ldr r0, _08de121648 @ =gLastUsedAbility
- b _08de12168C
- .align 2, 0
-_08de121648: .4byte gLastUsedAbility
-_081216F4:
- ldr r1, _08de121654 @ =gAbilitiesPerBank
- ldr r0, _08de121658 @ =gBankAttacker
- b _08de121688
- .align 2, 0
-_08de121654: .4byte gAbilitiesPerBank
-_08de121658: .4byte gBankAttacker
-_08121704:
- ldr r1, _08de121664 @ =gAbilitiesPerBank
- ldr r0, _08de121668 @ =gBankTarget
- b _08de121688
- .align 2, 0
-_08de121664: .4byte gAbilitiesPerBank
-_08de121668: .4byte gBankTarget
-_08121714:
- ldr r1, _08de121678 @ =gAbilitiesPerBank
- ldr r0, _08de12167C @ =0x02000000
- ldr r2, _08de121680 @ =0x00016003
- adds r0, r2
- b _08de121688
- .align 2, 0
-_08de121678: .4byte gAbilitiesPerBank
-_08de12167C: .4byte 0x02000000
-_08de121680: .4byte 0x00016003
-_0812172C:
- ldr r1, _08de121698 @ =gAbilitiesPerBank
- ldr r0, _08de12169C @ =gEffectBank
-_08de121688:
- ldrb r0, [r0]
- adds r0, r1
-_08de12168C:
- ldrb r1, [r0]
- movs r0, 0xD
- muls r1, r0
- ldr r0, _08de1216A0 @ =gAbilityNames
- adds r4, r1, r0
- b _081219E6
- .align 2, 0
-_08de121698: .4byte gAbilitiesPerBank
-_08de12169C: .4byte gEffectBank
-_08de1216A0: .4byte gAbilityNames
-_0812174C:
- ldr r3, _08de1216B8 @ =gTrainerBattleOpponent
- ldrh r1, [r3]
- movs r0, 0x80
- lsls r0, 3
- cmp r1, r0
- bne _08de1216BC
- adds r0, r1, 0
- movs r1, 0
- b _08de1216EE
- .align 2, 0
-_08de1216B8: .4byte gTrainerBattleOpponent
-_08de1216BC:
- ldr r0, _08de1216D4 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _08de1216D8
- adds r0, r2, 0
- movs r1, 0
- b _08de1216EE
- .align 2, 0
-_08de1216D4: .4byte gBattleTypeFlags
-_08de1216D8:
- movs r2, 0x80
- lsls r2, 4
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _08de1216EA
- adds r0, r2, 0
- movs r1, 0
- b _08de1216EE
-_08de1216EA:
- ldrh r1, [r3]
- movs r0, 0
-_08de1216EE:
- bl de_sub_8041024
- adds r4, r0, 0
- b _081219E6
-_081217C0:
- ldr r2, _08de12171C @ =gTrainerBattleOpponent
- ldrh r1, [r2]
- movs r0, 0x80
- lsls r0, 3
- cmp r1, r0
- bne _08de121724
- mov r0, sp
- movs r1, 0xFF
- movs r2, 0x8
- bl memset
- ldr r1, _08de121720 @ =0x02017002
- mov r0, sp
- movs r2, 0x7
- bl memcpy
- mov r4, sp
- b _081219E6
- .align 2, 0
-_08de12171C: .4byte gTrainerBattleOpponent
-_08de121720: .4byte 0x02017002
-_08de121724:
- ldr r0, _08de12173C @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _08de121740
- mov r0, sp
- bl get_trainer_name
- mov r4, sp
- b _081219E6
- .align 2, 0
-_08de12173C: .4byte gBattleTypeFlags
-_08de121740:
- movs r0, 0x80
- lsls r0, 4
- ands r0, r1
- cmp r0, 0
- beq _08de121754
- mov r0, sp
- bl sub_8135FF4
- mov r4, sp
- b _081219E6
-_08de121754:
- ldrh r0, [r2]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _08de121764 @ =gTrainers+4
- adds r4, r1, r0
- b _081219E6
- .align 2, 0
-_08de121764: .4byte gTrainers+4
-_08121830:
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- ldr r1, _08de121774 @ =0x03002988
- adds r4, r0, r1
- b _081219E6
- .align 2, 0
-_08de121774: .4byte 0x03002988
-_08121840:
- ldr r4, _08de121788 @ =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x18]
- movs r0, 0x2
- b _08de1217AE
- .align 2, 0
-_08de121788: .4byte gLinkPlayers
-_08121854:
- ldr r4, _08de12179C @ =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x18]
- movs r0, 0x1
- b _08de1217AE
- .align 2, 0
-_08de12179C: .4byte gLinkPlayers
-_08121868:
- ldr r4, _08de1217C0 @ =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x18]
- movs r0, 0x3
-_08de1217AE:
- eors r0, r1
- bl sub_803FC34
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r4, 0x8
- adds r4, r1, r4
- b _081219E6
- .align 2, 0
-_08de1217C0: .4byte gLinkPlayers
-_0812188C:
- ldr r0, _08de1217DC @ =0x02000000
- ldr r3, _08de1217E0 @ =0x00016003
- adds r0, r3
- ldrb r0, [r0]
- bl sub_803FC34
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- ldr r0, _08de1217E4 @ =0x03002988
- adds r4, r1, r0
- b _081219E6
- .align 2, 0
-_08de1217DC: .4byte 0x02000000
-_08de1217E0: .4byte 0x00016003
-_08de1217E4: .4byte 0x03002988
-_081218B0:
- ldr r4, _08de1217EC @ =gSaveBlock2
- b _081219E6
- .align 2, 0
-_08de1217EC: .4byte gSaveBlock2
-_081218B8:
- bl sub_8082830
- adds r4, r0, 0
- b _081219E6
-_081218C0:
- ldr r4, _08de12182C @ =0x02000000
- ldr r5, _08de121830 @ =0x00016003
- adds r0, r4, r5
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _08121934
- ldr r1, _08de121834 @ =0x0001605e
- adds r0, r4, r1
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08de121838 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- mov r4, sp
- b _08de121846
- .align 2, 0
-_08de12182C: .4byte 0x02000000
-_08de121830: .4byte 0x00016003
-_08de121834: .4byte 0x0001605e
-_08de121838: .4byte gEnemyParty
-_08de12183C:
- mov r2, r8
- adds r0, r2, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
-_08de121846:
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _08de12183C
-_08de12184E:
- ldr r0, _08121920 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- ldr r4, _08121924 @ =gUnknown_08400791
- cmp r0, 0
- beq _081219E6
- ldr r4, _08121928 @ =gUnknown_08400797
- b _081219E6
- .align 2, 0
-_08121920: .4byte gBattleTypeFlags
-_08121924: .4byte gUnknown_08400791
-_08121928: .4byte gUnknown_08400797
-_08121934:
- ldr r3, _08121954 @ =0x0001605e
- adds r0, r4, r3
- ldrb r1, [r0]
-_0812193A:
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08121958 @ =gPlayerParty
-_08121940:
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
-_0812194A:
- mov r0, sp
- bl StringGetEnd10
- mov r4, sp
- b _081219E6
- .align 2, 0
-_08121954: .4byte 0x0001605e
-_08121958: .4byte gPlayerParty
-_0812195C:
- ldr r0, _08121970 @ =0x0000084b
- bl FlagGet
- lsls r0, 24
- ldr r4, _08121974 @ =gUnknown_084009ED
- cmp r0, 0
- beq _081219E6
- ldr r4, _08121978 @ =gUnknown_084009F7
- b _081219E6
- .align 2, 0
-_08121970: .4byte 0x0000084b
-_08121974: .4byte gUnknown_084009ED
-_08121978: .4byte gUnknown_084009F7
-_0812197C:
- ldr r0, _08de1218B8 @ =gBankAttacker
- b _08121986
- .align 2, 0
-_08de1218B8: .4byte gBankAttacker
-_08121984:
- ldr r0, _08121998 @ =gBankTarget
-_08121986:
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- ldr r4, _0812199C @ =gUnknown_084007A7
- cmp r0, 0
- bne _081219E6
- ldr r4, _081219A0 @ =gUnknown_084007AC
- b _081219E6
- .align 2, 0
-_08121998: .4byte gBankTarget
-_0812199C: .4byte gUnknown_084007A7
-_081219A0: .4byte gUnknown_084007AC
-_081219A4:
- ldr r0, _081219A8 @ =gBankAttacker
- b _081219AE
- .align 2, 0
-_081219A8: .4byte gBankAttacker
-_081219AC:
- ldr r0, _081219C0 @ =gBankTarget
-_081219AE:
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- ldr r4, _081219C4 @ =gUnknown_0840079C
- cmp r0, 0
- bne _081219E6
- ldr r4, _081219C8 @ =gUnknown_084007A1
- b _081219E6
- .align 2, 0
-_081219C0: .4byte gBankTarget
-_081219C4: .4byte gUnknown_0840079C
-_081219C8: .4byte gUnknown_084007A1
-_081219CC:
- ldr r0, _081219D0 @ =gBankAttacker
- b _081219D6
- .align 2, 0
-_081219D0: .4byte gBankAttacker
-_081219D4:
- ldr r0, _08121A24 @ =gBankTarget
-_081219D6:
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- ldr r4, _08121A28 @ =gUnknown_084007B2
- cmp r0, 0
- bne _081219E6
- ldr r4, _08121A2C @ =gUnknown_084007B7
-_081219E6:
- ldrb r1, [r4]
- adds r0, r1, 0
- mov r5, r9
- ldrb r2, [r5]
- mov r3, r9
- adds r3, 0x1
- cmp r0, 0xFF
- beq _08121A06
-_081219F4:
- mov r5, r8
- adds r0, r5, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _081219F4
-_08121A06:
- lsls r0, r2, 24
- lsrs r0, 24
- cmp r0, 0x21
- bne _08121A3C
- mov r0, r8
- adds r1, r0, r6
- movs r0, 0xFC
- strb r0, [r1]
- adds r6, 0x1
- mov r2, r8
- adds r1, r2, r6
- movs r0, 0x9
- strb r0, [r1]
- adds r6, 0x1
- b _08121A3C
- .align 2, 0
-_08121A24: .4byte gBankTarget
-_08121A28: .4byte gUnknown_084007B2
-_08121A2C: .4byte gUnknown_084007B7
-_08121A30:
- mov r3, r8
- adds r0, r3, r6
- strb r1, [r0]
- adds r6, 0x1
- mov r3, r9
- adds r3, 0x1
-_08121A3C:
- mov r9, r3
- ldrb r1, [r3]
-_08121A40:
- adds r0, r1, 0
- cmp r0, 0xFF
- beq _08121A4A
- bl _0812101E
-_08121A4A:
- mov r5, r8
- adds r1, r5, r6
- mov r2, r9
- ldrb r0, [r2]
- strb r0, [r1]
- adds r6, 0x1
- adds r0, r6, 0
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end StrCpyDecodeBattle
-
- thumb_func_start sub_8121A68
-sub_8121A68: @ 8121A68
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- adds r7, r0, 0
- adds r6, r1, 0
- movs r5, 0x1
- movs r0, 0
- mov r8, r0
- movs r0, 0xFF
- strb r0, [r6]
- ldrb r0, [r7, 0x1]
- cmp r0, 0xFF
- bne _08121A86
- b _08121D0E
-_08121A86:
- adds r0, r7, r5
- ldrb r1, [r0]
- adds r2, r0, 0
- cmp r1, 0xA
- bls _08121A92
- b _08121D04
-_08121A92:
- lsls r0, r1, 2
- ldr r1, _08121A9C @ =_08121AA0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08121A9C: .4byte _08121AA0
- .align 2, 0
-_08121AA0:
- .4byte _08121ACC
- .4byte _08121AE8
- .4byte _08121B3C
- .4byte _08121B54
- .4byte _08121B64
- .4byte _08121BDC
- .4byte _08121BF0
- .4byte _08121C02
- .4byte _08121C48
- .4byte _08121C5C
- .4byte _08121C78
-_08121ACC:
- adds r0, r5, r7
- ldrb r2, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r2, r0
- cmp r2, 0xD1
- beq _08de121ADA
- cmp r2, 0xD3
- bne _08de121ADC
-_08de121ADA:
- adds r5, 0x3
-_08de121ADC:
- ldr r0, _08121AE4 @ =gBattleStringsTable
- adds r1, r2, 0
- subs r1, 0xC
- lsls r1, 2
- adds r1, r0
- ldr r1, [r1]
- b _08121CE2
- .align 2, 0
-_08121AE4: .4byte gBattleStringsTable
-_08121AE8:
- adds r1, r2, 0
- ldrb r0, [r1, 0x1]
- cmp r0, 0x2
- beq _08121B04
- cmp r0, 0x2
- bgt _08121AF8
- cmp r0, 0x1
- beq _08121AFE
- b _08121B26
-_08121AF8:
- cmp r0, 0x4
- beq _08121B0C
- b _08121B26
-_08121AFE:
- ldrb r1, [r1, 0x3]
- b _08de121B30
-_08121B04:
- ldrb r0, [r1, 0x3]
- mov r8, r0
- ldrb r0, [r1, 0x4]
- lsls r0, 8
- mov r1, r8
- b _08121B22
-_08121B0C:
- ldrb r0, [r2, 0x3]
- mov r8, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 8
- mov r1, r8
- orrs r1, r0
- ldrb r0, [r2, 0x5]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x6]
- lsls r0, 24
-_08121B22:
- orrs r1, r0
-_08de121B30:
- mov r8, r1
-_08121B26:
- adds r4, r5, r7
- ldrb r3, [r4, 0x2]
- adds r0, r6, 0
- mov r1, r8
- movs r2, 0
- bl ConvertIntToDecimalStringN
- adds r0, r5, 0x3
- ldrb r4, [r4, 0x1]
- adds r5, r0, r4
- b _08121D04
-_08121B3C:
- adds r0, r5, r7
- ldrb r1, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r1, r0
- movs r0, 0xD
- muls r1, r0
- ldr r0, _08de121B5C @ =gMoveNames
- adds r1, r0
- b _08121CE2
- .align 2, 0
-_08de121B5C: .4byte gMoveNames
-_08121B54:
- adds r0, r5, r7
- ldrb r0, [r0, 0x1]
- lsls r1, r0, 3
- subs r1, r0
- ldr r0, _08de121B6C @ =gTypeNames
- b _08121C66
- .align 2, 0
-_08de121B6C: .4byte gTypeNames
-_08121B64:
- adds r4, r5, r7
- ldrb r0, [r4, 0x1]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08121B88
- ldrb r1, [r4, 0x2]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08121B84 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- adds r0, r6, 0
- mov r1, sp
- bl StringAppend
- b _08121D02
- .align 2, 0
-_08121B84: .4byte gPlayerParty
-_08121B88:
- ldrb r1, [r4, 0x2]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08de121BD4 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- adds r0, r6, 0
- mov r1, sp
- bl StringAppend
- ldr r0, _08121BA0 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _08121BA8
- ldr r1, _08121BA4 @ =gUnknown_08400797
- b _08121CE2
- .align 2, 0
-_08de121BD4: .4byte gEnemyParty
-_08121BA0: .4byte gBattleTypeFlags
-_08121BA4: .4byte gUnknown_08400797
-_08121BA8:
- ldr r1, _08121BD4 @ =gUnknown_08400791
- adds r0, r6, 0
- bl StringAppend
- b _08121D02
- .align 2, 0
-_08121BD4: .4byte gUnknown_08400791
-_08121BDC:
- ldr r1, _08121BEC @ =gUnknown_08400F58
- adds r0, r5, r7
- ldrb r0, [r0, 0x1]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- b _08121C68
- .align 2, 0
-_08121BEC: .4byte gUnknown_08400F58
-_08121BF0:
- adds r0, r5, r7
- ldrb r1, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r1, r0
- adds r0, r6, 0
- bl GetSpeciesName
- b _08121D02
-_08121C02:
- adds r4, r5, r7
- ldrb r0, [r4, 0x1]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08121C28
- ldrb r1, [r4, 0x2]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08121C24 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- adds r2, r6, 0
- bl GetMonData
- b _08121C3A
- .align 2, 0
-_08121C24: .4byte gPlayerParty
-_08121C28:
- ldrb r1, [r4, 0x2]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08121C44 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- adds r2, r6, 0
- bl GetMonData
-_08121C3A:
- adds r0, r6, 0
- bl StringGetEnd10
- b _08121D02
- .align 2, 0
-_08121C44: .4byte gEnemyParty
-_08121C48:
- ldr r1, _08121C58 @ =gUnknown_08400F78
- adds r0, r5, r7
- ldrb r0, [r0, 0x1]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- b _08121C68
- .align 2, 0
-_08121C58: .4byte gUnknown_08400F78
-_08121C5C:
- adds r0, r5, r7
- ldrb r1, [r0, 0x1]
- movs r0, 0xD
- muls r1, r0
- ldr r0, _08121C74 @ =gAbilityNames
-_08121C66:
- adds r1, r0
-_08121C68:
- adds r0, r6, 0
- bl StringAppend
- adds r5, 0x2
- b _08121D04
- .align 2, 0
-_08121C74: .4byte gAbilityNames
-_08121C78:
- adds r0, r5, r7
- ldrb r2, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r2, r0
- ldr r0, _08121CC4 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08121CFA
- cmp r2, 0xAF
- bne _08121CF0
- ldr r2, _08121CC8 @ =gLinkPlayers
- ldr r0, _08121CCC @ =0x02000000
- ldr r1, _08121CD0 @ =0x000160cb
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, _08121CD4 @ =gStringBank
- ldrb r2, [r1]
- ldrh r0, [r0, 0x18]
- cmp r0, r2
- bne _08121CE0
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- ldr r0, _08121CD8 @ =gEnigmaBerries
- adds r1, r0
- adds r0, r6, 0
- bl StringCopy
- ldr r1, _08121CDC @ =gUnknown_08400A85
- adds r0, r6, 0
- bl de_sub_8073174
- b _08121D02
- .align 2, 0
-_08121CC4: .4byte gBattleTypeFlags
-_08121CC8: .4byte gLinkPlayers
-_08121CCC: .4byte 0x02000000
-_08121CD0: .4byte 0x000160cb
-_08121CD4: .4byte gStringBank
-_08121CD8: .4byte gEnigmaBerries
-_08121CDC: .4byte gUnknown_08400A85
-_08121CE0:
- ldr r1, _08121CEC @ =gUnknown_08400A78
-_08121CE2:
- adds r0, r6, 0
- bl StringAppend
- b _08121D02
- .align 2, 0
-_08121CEC: .4byte gUnknown_08400A78
-_08121CF0:
- adds r0, r2, 0
- adds r1, r6, 0
- bl CopyItemName
- b _08121D02
-_08121CFA:
- adds r0, r2, 0
- adds r1, r6, 0
- bl CopyItemName
-_08121D02:
- adds r5, 0x3
-_08121D04:
- adds r0, r7, r5
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _08121D0E
- b _08121A86
-_08121D0E:
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8121A68
-
- thumb_func_start sub_8121D1C
-sub_8121D1C: @ 8121D1C
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r2, 0
- ldr r5, _08121D50 @ =gSelectedOrderFromParty
- ldr r3, _08121D54 @ =gUnknown_084016BC
-_08121D26:
- cmp r2, 0x4
- beq _08121D3C
- ldrh r1, [r3]
- cmp r1, 0
- bne _08121D32
- adds r2, 0x1
-_08121D32:
- ldr r0, [r5]
- adds r3, 0x2
- ldrh r0, [r0]
- cmp r1, r0
- bne _08121D26
-_08121D3C:
- cmp r2, 0
- blt _08121D68
- cmp r2, 0x2
- bgt _08121D5C
- ldr r1, _08121D58 @ =gUnknown_08400E5E
- adds r0, r4, 0
- bl StringCopy
- b _08121D68
- .align 2, 0
-_08121D50: .4byte gSelectedOrderFromParty
-_08121D54: .4byte gUnknown_084016BC
-_08121D58: .4byte gUnknown_08400E5E
-_08121D5C:
- cmp r2, 0x4
- bgt _08121D68
- ldr r1, _08121D70 @ =gUnknown_08400E62
- adds r0, r4, 0
- bl StringCopy
-_08121D68:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08121D70: .4byte gUnknown_08400E62
- thumb_func_end sub_8121D1C
-
- thumb_func_start sub_8121D74
-sub_8121D74: @ 8121D74
- push {r4,r5,lr}
- adds r3, r0, 0
- movs r4, 0
- b _08121D7E
-_08121D7C:
- adds r3, 0x1
-_08121D7E:
- ldrb r0, [r3]
- cmp r0, 0xFF
- bne _08121D7C
- ldr r1, _08121DB4 @ =gUnknown_084016BC
- ldr r5, _08121DB8 @ =gSelectedOrderFromParty
- movs r0, 0
- lsls r0, 1
- adds r2, r0, r1
-_08121D8E:
- cmp r4, 0x4
- beq _08121DA8
- ldrh r1, [r2]
- cmp r1, 0
- bne _08121D9A
- adds r4, 0x1
-_08121D9A:
- ldr r0, [r5]
- adds r2, 0x2
- ldrh r0, [r0]
- cmp r1, r0
- bne _08121D8E
- cmp r4, 0x4
- bhi _08121E04
-_08121DA8:
- lsls r0, r4, 2
- ldr r1, _08121DBC @ =_08121DC0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08121DB4: .4byte gUnknown_084016BC
-_08121DB8: .4byte gSelectedOrderFromParty
-_08121DBC: .4byte _08121DC0
- .align 2, 0
-_08121DC0:
- .4byte _08121DD4
- .4byte _08121DDC
- .4byte _08121DE4
- .4byte _08121DEC
- .4byte _08121DFC
-_08121DD4:
- ldr r1, _08121DD8 @ =gUnknown_084007C8
- b _08121DEE
- .align 2, 0
-_08121DD8: .4byte gUnknown_084007C8
-_08121DDC:
- ldr r1, _08121DE0 @ =gUnknown_084007CA
- b _08121DEE
- .align 2, 0
-_08121DE0: .4byte gUnknown_084007CA
-_08121DE4:
- ldr r1, _08121DE8 @ =gUnknown_084007CC
- b _08121DEE
- .align 2, 0
-_08121DE8: .4byte gUnknown_084007CC
-_08121DEC:
- ldr r1, _08121DF8 @ =gUnknown_084007CE
-_08121DEE:
- adds r0, r3, 0
- bl StringCopy
- b _08121E04
- .align 2, 0
-_08121DF8: .4byte gUnknown_084007CE
-_08121DFC:
- ldr r1, _08121E0C @ =gUnknown_084007D0
- adds r0, r3, 0
- bl StringCopy
-_08121E04:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08121E0C: .4byte gUnknown_084007D0
- thumb_func_end sub_8121D74
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm-de/berry_blender.s b/asm-de/berry_blender.s
deleted file mode 100644
index 59aa1894a..000000000
--- a/asm-de/berry_blender.s
+++ /dev/null
@@ -1,9141 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_804E290
-sub_804E290: @ 804E290
- push {lr}
- ldr r0, _0804E2B0 @ =gMPlay_SE2
- ldr r1, _0804E2B4 @ =0x0000ffff
- ldr r2, _0804E2B8 @ =gUnknown_03004854
- ldr r2, [r2]
- adds r2, 0x56
- movs r3, 0
- ldrsh r2, [r2, r3]
- subs r2, 0x80
- lsls r2, 17
- asrs r2, 16
- bl m4aMPlayPitchControl
- pop {r0}
- bx r0
- .align 2, 0
-_0804E2B0: .4byte gMPlay_SE2
-_0804E2B4: .4byte 0x0000ffff
-_0804E2B8: .4byte gUnknown_03004854
- thumb_func_end sub_804E290
-
- thumb_func_start sub_804E2BC
-sub_804E2BC: @ 804E2BC
- push {lr}
- bl sub_80514A4
- bl sub_80514F0
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_804E2BC
-
- thumb_func_start sub_804E2D8
-sub_804E2D8: @ 804E2D8
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_804E2D8
-
- thumb_func_start sub_804E2EC
-sub_804E2EC: @ 804E2EC
- push {r4-r7,lr}
- ldr r1, _0804E308 @ =gUnknown_03004854
- ldr r0, [r1]
- ldrb r0, [r0, 0x1]
- mov r12, r1
- cmp r0, 0x9
- bls _0804E2FC
- b _0804E4F4
-_0804E2FC:
- lsls r0, 2
- ldr r1, _0804E30C @ =_0804E310
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0804E308: .4byte gUnknown_03004854
-_0804E30C: .4byte _0804E310
- .align 2, 0
-_0804E310:
- .4byte _0804E338
- .4byte _0804E34C
- .4byte _0804E380
- .4byte _0804E3C4
- .4byte _0804E3D8
- .4byte _0804E3EC
- .4byte _0804E410
- .4byte _0804E434
- .4byte _0804E48C
- .4byte _0804E4BC
-_0804E338:
- ldr r0, _0804E344 @ =gUnknown_08E6C100
- ldr r1, _0804E348 @ =0x02010000
- bl sub_800D238
- b _0804E49E
- .align 2, 0
-_0804E344: .4byte gUnknown_08E6C100
-_0804E348: .4byte 0x02010000
-_0804E34C:
- ldr r1, _0804E36C @ =gUnknown_08215C2C
- ldr r2, _0804E370 @ =0x06004000
- ldr r0, _0804E374 @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _0804E378 @ =0x80000200
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- ldr r0, _0804E37C @ =gUnknown_08215C0C
- movs r2, 0x80
- lsls r2, 1
- movs r1, 0
- bl LoadPalette
- b _0804E49E
- .align 2, 0
-_0804E36C: .4byte gUnknown_08215C2C
-_0804E370: .4byte 0x06004000
-_0804E374: .4byte 0x040000d4
-_0804E378: .4byte 0x80000200
-_0804E37C: .4byte gUnknown_08215C0C
-_0804E380:
- ldr r3, _0804E3B8 @ =0x02010000
- movs r4, 0xC0
- lsls r4, 19
- movs r5, 0x80
- lsls r5, 6
- ldr r1, _0804E3BC @ =0x040000d4
- ldr r6, _0804E3C0 @ =0x80000800
- movs r2, 0x80
- lsls r2, 5
- movs r7, 0x80
- lsls r7, 24
-_0804E396:
- str r3, [r1]
- str r4, [r1, 0x4]
- str r6, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r3, r2
- adds r4, r2
- subs r5, r2
- cmp r5, r2
- bhi _0804E396
- str r3, [r1]
- str r4, [r1, 0x4]
- lsrs r0, r5, 1
- orrs r0, r7
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- mov r0, r12
- b _0804E4A0
- .align 2, 0
-_0804E3B8: .4byte 0x02010000
-_0804E3BC: .4byte 0x040000d4
-_0804E3C0: .4byte 0x80000800
-_0804E3C4:
- ldr r0, _0804E3D0 @ =gUnknown_08E6C920
- ldr r1, _0804E3D4 @ =0x02010000
- bl sub_800D238
- b _0804E49E
- .align 2, 0
-_0804E3D0: .4byte gUnknown_08E6C920
-_0804E3D4: .4byte 0x02010000
-_0804E3D8:
- ldr r0, _0804E3E4 @ =gUnknown_08E6D354
- ldr r1, _0804E3E8 @ =0x02013000
- bl sub_800D238
- b _0804E49E
- .align 2, 0
-_0804E3E4: .4byte gUnknown_08E6D354
-_0804E3E8: .4byte 0x02013000
-_0804E3EC:
- ldr r1, _0804E400 @ =0x02010000
- ldr r2, _0804E404 @ =0x0600e000
- ldr r0, _0804E408 @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _0804E40C @ =0x80000800
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- mov r0, r12
- b _0804E4A0
- .align 2, 0
-_0804E400: .4byte 0x02010000
-_0804E404: .4byte 0x0600e000
-_0804E408: .4byte 0x040000d4
-_0804E40C: .4byte 0x80000800
-_0804E410:
- ldr r1, _0804E424 @ =0x02011000
- ldr r2, _0804E428 @ =0x0600f000
- ldr r0, _0804E42C @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _0804E430 @ =0x80000800
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- mov r0, r12
- b _0804E4A0
- .align 2, 0
-_0804E424: .4byte 0x02011000
-_0804E428: .4byte 0x0600f000
-_0804E42C: .4byte 0x040000d4
-_0804E430: .4byte 0x80000800
-_0804E434:
- ldr r3, _0804E474 @ =0x02013000
- movs r2, 0
- adds r6, r3, 0
- ldr r7, _0804E478 @ =gUnknown_0821602C
- movs r0, 0x80
- lsls r0, 1
- adds r5, r0, 0
- ldr r4, _0804E47C @ =0x0000027f
-_0804E444:
- lsls r0, r2, 1
- adds r0, r3
- ldrh r1, [r0]
- orrs r1, r5
- strh r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, r4
- bls _0804E444
- ldr r1, _0804E480 @ =0x06006000
- ldr r0, _0804E484 @ =0x040000d4
- str r6, [r0]
- str r1, [r0, 0x4]
- ldr r1, _0804E488 @ =0x80000280
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- adds r0, r7, 0
- movs r1, 0x80
- movs r2, 0x20
- bl LoadPalette
- b _0804E49E
- .align 2, 0
-_0804E474: .4byte 0x02013000
-_0804E478: .4byte gUnknown_0821602C
-_0804E47C: .4byte 0x0000027f
-_0804E480: .4byte 0x06006000
-_0804E484: .4byte 0x040000d4
-_0804E488: .4byte 0x80000280
-_0804E48C:
- ldr r0, _0804E4AC @ =gUnknown_082163DC
- bl LoadSpriteSheet
- ldr r0, _0804E4B0 @ =gUnknown_082164F4
- bl LoadSpriteSheet
- ldr r0, _0804E4B4 @ =gUnknown_08216454
- bl LoadSpriteSheet
-_0804E49E:
- ldr r0, _0804E4B8 @ =gUnknown_03004854
-_0804E4A0:
- ldr r1, [r0]
- ldrb r0, [r1, 0x1]
- adds r0, 0x1
- strb r0, [r1, 0x1]
- b _0804E4F4
- .align 2, 0
-_0804E4AC: .4byte gUnknown_082163DC
-_0804E4B0: .4byte gUnknown_082164F4
-_0804E4B4: .4byte gUnknown_08216454
-_0804E4B8: .4byte gUnknown_03004854
-_0804E4BC:
- ldr r0, _0804E4E0 @ =gUnknown_08216540
- bl LoadSpriteSheet
- ldr r0, _0804E4E4 @ =gUnknown_08216574
- bl LoadSpriteSheet
- ldr r0, _0804E4E8 @ =gUnknown_082163EC
- bl LoadSpritePalette
- ldr r0, _0804E4EC @ =gUnknown_082163E4
- bl LoadSpritePalette
- ldr r0, _0804E4F0 @ =gUnknown_03004854
- ldr r1, [r0]
- movs r0, 0
- strb r0, [r1, 0x1]
- movs r0, 0x1
- b _0804E4F6
- .align 2, 0
-_0804E4E0: .4byte gUnknown_08216540
-_0804E4E4: .4byte gUnknown_08216574
-_0804E4E8: .4byte gUnknown_082163EC
-_0804E4EC: .4byte gUnknown_082163E4
-_0804E4F0: .4byte gUnknown_03004854
-_0804E4F4:
- movs r0, 0
-_0804E4F6:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_804E2EC
-
- thumb_func_start sub_804E4FC
-sub_804E4FC: @ 804E4FC
- movs r1, 0x80
- lsls r1, 19
- ldr r2, _0804E52C @ =0x00001341
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0xC
- movs r2, 0x91
- lsls r2, 7
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0x2
- ldr r2, _0804E530 @ =0x00000c0d
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _0804E534 @ =REG_BG0HOFS
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- bx lr
- .align 2, 0
-_0804E52C: .4byte 0x00001341
-_0804E530: .4byte 0x00000c0d
-_0804E534: .4byte REG_BG0HOFS
- thumb_func_end sub_804E4FC
-
- thumb_func_start sub_804E538
-sub_804E538: @ 804E538
- push {lr}
- ldr r1, _0804E55C @ =gUnknown_03004854
- ldr r0, _0804E560 @ =0x02018000
- str r0, [r1]
- adds r2, r0, 0
- adds r2, 0x6F
- movs r1, 0
- strb r1, [r0]
- strb r1, [r2]
- ldr r0, _0804E564 @ =gSpecialVar_0x8004
- ldrb r0, [r0]
- bl sub_804E884
- ldr r0, _0804E568 @ =sub_804E56C
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_0804E55C: .4byte gUnknown_03004854
-_0804E560: .4byte 0x02018000
-_0804E564: .4byte gSpecialVar_0x8004
-_0804E568: .4byte sub_804E56C
- thumb_func_end sub_804E538
-
- thumb_func_start sub_804E56C
-sub_804E56C: @ 804E56C
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r0, _0804E588 @ =gUnknown_03004854
- ldr r0, [r0]
- ldrb r0, [r0]
- cmp r0, 0x6
- bls _0804E57C
- b _0804E71A
-_0804E57C:
- lsls r0, 2
- ldr r1, _0804E58C @ =_0804E590
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0804E588: .4byte gUnknown_03004854
-_0804E58C: .4byte _0804E590
- .align 2, 0
-_0804E590:
- .4byte _0804E5AC
- .4byte _0804E614
- .4byte _0804E67C
- .4byte _0804E692
- .4byte _0804E6A8
- .4byte _0804E6D4
- .4byte _0804E700
-_0804E5AC:
- movs r0, 0x80
- lsls r0, 19
- movs r5, 0
- strh r5, [r0]
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- movs r0, 0
- bl SetVBlankCallback
- ldr r4, _0804E60C @ =gWindowConfig_81E6F68
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- ldr r3, _0804E610 @ =gUnknown_03004854
- ldr r2, [r3]
- ldrb r0, [r2]
- adds r0, 0x1
- movs r1, 0
- strb r0, [r2]
- ldr r2, [r3]
- movs r3, 0xA0
- lsls r3, 1
- adds r0, r2, r3
- strh r1, [r0]
- subs r3, 0x2
- adds r0, r2, r3
- strh r1, [r0]
- movs r0, 0xA1
- lsls r0, 1
- adds r3, r2, r0
- movs r0, 0x50
- strh r0, [r3]
- movs r3, 0xA2
- lsls r3, 1
- adds r0, r2, r3
- strh r1, [r0]
- adds r3, 0x2
- adds r0, r2, r3
- strh r1, [r0]
- strb r5, [r2, 0x1]
- bl sub_8051474
- b _0804E71A
- .align 2, 0
-_0804E60C: .4byte gWindowConfig_81E6F68
-_0804E610: .4byte gUnknown_03004854
-_0804E614:
- bl sub_804E2EC
- lsls r0, 24
- cmp r0, 0
- bne _0804E620
- b _0804E71A
-_0804E620:
- movs r4, 0
- ldr r5, _0804E668 @ =gUnknown_082162E4
- ldr r6, _0804E66C @ =gUnknown_03004854
-_0804E626:
- ldrb r1, [r5]
- ldrb r2, [r5, 0x1]
- ldr r0, _0804E670 @ =gSpriteTemplate_82163F4
- movs r3, 0x1
- bl CreateSprite
- ldr r1, [r6]
- adds r1, 0x5C
- adds r1, r4
- strb r0, [r1]
- ldr r0, [r6]
- adds r0, 0x5C
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0804E674 @ =gSprites
- adds r0, r1
- adds r1, r4, 0
- adds r1, 0x8
- lsls r1, 24
- lsrs r1, 24
- bl StartSpriteAnim
- adds r5, 0x2
- adds r4, 0x1
- cmp r4, 0x3
- ble _0804E626
- ldr r0, _0804E678 @ =sub_804E2BC
- bl SetVBlankCallback
- b _0804E6BE
- .align 2, 0
-_0804E668: .4byte gUnknown_082162E4
-_0804E66C: .4byte gUnknown_03004854
-_0804E670: .4byte gSpriteTemplate_82163F4
-_0804E674: .4byte gSprites
-_0804E678: .4byte sub_804E2BC
-_0804E67C:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- bl sub_8051474
- b _0804E6BE
-_0804E692:
- bl sub_804E4FC
- ldr r0, _0804E6A4 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0804E71A
- b _0804E6BE
- .align 2, 0
-_0804E6A4: .4byte gPaletteFade
-_0804E6A8:
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _0804E6CC @ =gOtherText_BlenderChooseBerry
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrintMessage
-_0804E6BE:
- ldr r0, _0804E6D0 @ =gUnknown_03004854
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0804E71A
- .align 2, 0
-_0804E6CC: .4byte gOtherText_BlenderChooseBerry
-_0804E6D0: .4byte gUnknown_03004854
-_0804E6D4:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- beq _0804E71A
- ldr r0, _0804E6FC @ =gUnknown_03004854
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- movs r2, 0
- strb r0, [r1]
- movs r0, 0x1
- negs r0, r0
- str r2, [sp]
- movs r1, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- b _0804E71A
- .align 2, 0
-_0804E6FC: .4byte gUnknown_03004854
-_0804E700:
- ldr r0, _0804E730 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _0804E71A
- bl sub_80A6978
- ldr r0, _0804E734 @ =gUnknown_03004854
- ldr r0, [r0]
- strb r4, [r0]
-_0804E71A:
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E730: .4byte gPaletteFade
-_0804E734: .4byte gUnknown_03004854
- thumb_func_end sub_804E56C
-
- thumb_func_start sub_804E738
-sub_804E738: @ 804E738
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x3A]
- ldrh r1, [r4, 0x30]
- adds r0, r1
- strh r0, [r4, 0x30]
- ldrh r1, [r4, 0x32]
- ldrh r2, [r4, 0x36]
- subs r1, r2
- ldrh r0, [r4, 0x3C]
- adds r1, r0
- strh r1, [r4, 0x32]
- ldrh r3, [r4, 0x2E]
- adds r0, r3
- strh r0, [r4, 0x2E]
- subs r2, 0x1
- strh r2, [r4, 0x36]
- lsls r0, 16
- lsls r1, 16
- cmp r0, r1
- bge _0804E786
- ldrh r0, [r4, 0x34]
- subs r0, 0x1
- strh r0, [r4, 0x36]
- strh r0, [r4, 0x34]
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _0804E780
- adds r0, r4, 0
- bl DestroySprite
- b _0804E786
-_0804E780:
- movs r0, 0x74
- bl PlaySE
-_0804E786:
- ldrh r0, [r4, 0x30]
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x32]
- strh r0, [r4, 0x22]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_804E738
-
- thumb_func_start sub_804E794
-sub_804E794: @ 804E794
- push {r4-r6,lr}
- ldr r5, [sp, 0x10]
- ldr r6, [sp, 0x14]
- lsls r2, 16
- lsrs r2, 16
- movs r4, 0
- strh r2, [r0, 0x2E]
- strh r1, [r0, 0x30]
- strh r2, [r0, 0x32]
- strh r3, [r0, 0x34]
- movs r1, 0xA
- strh r1, [r0, 0x36]
- strh r4, [r0, 0x38]
- strh r5, [r0, 0x3A]
- strh r6, [r0, 0x3C]
- ldr r1, _0804E7BC @ =sub_804E738
- str r1, [r0, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E7BC: .4byte sub_804E738
- thumb_func_end sub_804E794
-
- thumb_func_start sub_804E7C0
-sub_804E7C0: @ 804E7C0
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x8
- adds r6, r1, 0
- lsls r6, 24
- lsrs r6, 24
- lsls r0, 24
- movs r1, 0xF6
- lsls r1, 23
- adds r0, r1
- lsrs r0, 24
- movs r3, 0x1
- ands r3, r6
- movs r1, 0
- movs r2, 0x50
- bl sub_80A7DEC
- lsls r0, 24
- lsrs r0, 24
- lsls r2, r0, 4
- mov r8, r2
- add r8, r0
- mov r3, r8
- lsls r3, 2
- mov r8, r3
- ldr r0, _0804E83C @ =gSprites
- add r8, r0
- ldr r5, _0804E840 @ =gUnknown_08216594
- lsls r4, r6, 2
- adds r4, r6
- lsls r4, 1
- adds r0, r4, r5
- movs r6, 0
- ldrsh r1, [r0, r6]
- adds r0, r5, 0x2
- adds r0, r4, r0
- movs r3, 0
- ldrsh r2, [r0, r3]
- adds r0, r5, 0x4
- adds r0, r4, r0
- movs r6, 0
- ldrsh r3, [r0, r6]
- adds r0, r5, 0x6
- adds r0, r4, r0
- movs r6, 0
- ldrsh r0, [r0, r6]
- str r0, [sp]
- adds r5, 0x8
- adds r4, r5
- movs r5, 0
- ldrsh r0, [r4, r5]
- str r0, [sp, 0x4]
- mov r0, r8
- bl sub_804E794
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E83C: .4byte gSprites
-_0804E840: .4byte gUnknown_08216594
- thumb_func_end sub_804E7C0
-
- thumb_func_start sub_804E844
-sub_804E844: @ 804E844
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r5, r1, 16
- lsrs r5, 16
- adds r0, r5, 0
- adds r0, 0x7C
- lsls r0, 24
- lsrs r0, 24
- bl GetBerryInfo
- adds r4, r0, 0
- strh r5, [r6]
- adds r0, r6, 0x2
- adds r1, r4, 0
- bl StringCopy
- ldrb r0, [r4, 0x15]
- strb r0, [r6, 0x9]
- ldrb r0, [r4, 0x16]
- strb r0, [r6, 0xA]
- ldrb r0, [r4, 0x17]
- strb r0, [r6, 0xB]
- ldrb r0, [r4, 0x18]
- strb r0, [r6, 0xC]
- ldrb r0, [r4, 0x19]
- strb r0, [r6, 0xD]
- ldrb r0, [r4, 0x1A]
- strb r0, [r6, 0xE]
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_804E844
-
- thumb_func_start sub_804E884
-sub_804E884: @ 804E884
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _0804E89E
- ldr r2, _0804E8AC @ =gLinkPlayers
- movs r3, 0x5
- adds r0, r2, 0
- adds r0, 0x54
-_0804E896:
- strh r3, [r0, 0x1A]
- subs r0, 0x1C
- cmp r0, r2
- bge _0804E896
-_0804E89E:
- cmp r1, 0x1
- beq _0804E8C4
- cmp r1, 0x1
- bgt _0804E8B0
- cmp r1, 0
- beq _0804E8BA
- b _0804E974
- .align 2, 0
-_0804E8AC: .4byte gLinkPlayers
-_0804E8B0:
- cmp r1, 0x2
- beq _0804E8F8
- cmp r1, 0x3
- beq _0804E93C
- b _0804E974
-_0804E8BA:
- ldr r0, _0804E8C0 @ =gUnknown_03004834
- strb r1, [r0]
- b _0804E974
- .align 2, 0
-_0804E8C0: .4byte gUnknown_03004834
-_0804E8C4:
- ldr r0, _0804E8E4 @ =gUnknown_03004834
- strb r1, [r0]
- ldr r0, _0804E8E8 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0x88
- movs r1, 0x2
- strb r1, [r0]
- ldr r4, _0804E8EC @ =gLinkPlayers + 0x8
- ldr r1, _0804E8F0 @ =gSaveBlock2
- adds r0, r4, 0
- bl StringCopy
- adds r4, 0x1C
- ldr r0, _0804E8F4 @ =gUnknown_082162B8
- ldr r1, [r0]
- b _0804E920
- .align 2, 0
-_0804E8E4: .4byte gUnknown_03004834
-_0804E8E8: .4byte gUnknown_03004854
-_0804E8EC: .4byte gLinkPlayers + 0x8
-_0804E8F0: .4byte gSaveBlock2
-_0804E8F4: .4byte gUnknown_082162B8
-_0804E8F8:
- ldr r0, _0804E928 @ =gUnknown_03004834
- strb r1, [r0]
- ldr r0, _0804E92C @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0x88
- movs r1, 0x3
- strb r1, [r0]
- ldr r4, _0804E930 @ =gLinkPlayers + 0x8
- ldr r1, _0804E934 @ =gSaveBlock2
- adds r0, r4, 0
- bl StringCopy
- adds r0, r4, 0
- adds r0, 0x1C
- ldr r5, _0804E938 @ =gUnknown_082162B8
- ldr r1, [r5]
- bl StringCopy
- adds r4, 0x38
- ldr r1, [r5, 0x4]
-_0804E920:
- adds r0, r4, 0
- bl StringCopy
- b _0804E974
- .align 2, 0
-_0804E928: .4byte gUnknown_03004834
-_0804E92C: .4byte gUnknown_03004854
-_0804E930: .4byte gLinkPlayers + 0x8
-_0804E934: .4byte gSaveBlock2
-_0804E938: .4byte gUnknown_082162B8
-_0804E93C:
- ldr r0, _0804E97C @ =gUnknown_03004834
- strb r1, [r0]
- ldr r0, _0804E980 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0x88
- movs r1, 0x4
- strb r1, [r0]
- ldr r4, _0804E984 @ =gLinkPlayers + 0x8
- ldr r1, _0804E988 @ =gSaveBlock2
- adds r0, r4, 0
- bl StringCopy
- adds r0, r4, 0
- adds r0, 0x1C
- ldr r5, _0804E98C @ =gUnknown_082162B8
- ldr r1, [r5]
- bl StringCopy
- adds r0, r4, 0
- adds r0, 0x38
- ldr r1, [r5, 0x4]
- bl StringCopy
- adds r4, 0x54
- ldr r1, [r5, 0x8]
- adds r0, r4, 0
- bl StringCopy
-_0804E974:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E97C: .4byte gUnknown_03004834
-_0804E980: .4byte gUnknown_03004854
-_0804E984: .4byte gLinkPlayers + 0x8
-_0804E988: .4byte gSaveBlock2
-_0804E98C: .4byte gUnknown_082162B8
- thumb_func_end sub_804E884
-
- thumb_func_start sub_804E990
-sub_804E990: @ 804E990
- push {r4,r5,lr}
- movs r0, 0x80
- lsls r0, 19
- movs r2, 0
- strh r2, [r0]
- ldr r3, _0804E9D8 @ =gUnknown_03004854
- ldr r0, _0804E9DC @ =0x02018000
- str r0, [r3]
- movs r1, 0
- strb r2, [r0]
- movs r2, 0x9A
- lsls r2, 1
- adds r0, r2
- str r1, [r0]
- movs r2, 0
- ldr r5, _0804E9E0 @ =gSpecialVar_0x8004
- adds r4, r3, 0
- movs r3, 0
-_0804E9B4:
- ldr r0, [r4]
- lsls r1, r2, 1
- adds r0, 0x80
- adds r0, r1
- strh r3, [r0]
- adds r2, 0x1
- cmp r2, 0x3
- ble _0804E9B4
- ldrb r0, [r5]
- bl sub_804E884
- ldrh r0, [r5]
- cmp r0, 0
- bne _0804E9E8
- ldr r0, _0804E9E4 @ =sub_804E9F8
- bl SetMainCallback2
- b _0804E9EE
- .align 2, 0
-_0804E9D8: .4byte gUnknown_03004854
-_0804E9DC: .4byte 0x02018000
-_0804E9E0: .4byte gSpecialVar_0x8004
-_0804E9E4: .4byte sub_804E9F8
-_0804E9E8:
- ldr r0, _0804E9F4 @ =sub_804F378
- bl SetMainCallback2
-_0804E9EE:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E9F4: .4byte sub_804F378
- thumb_func_end sub_804E990
-
- thumb_func_start sub_804E9F8
-sub_804E9F8: @ 804E9F8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- ldr r1, _0804EA18 @ =gUnknown_03004854
- ldr r0, [r1]
- ldrb r0, [r0]
- mov r8, r1
- cmp r0, 0x66
- bls _0804EA0E
- b _0804F0CE
-_0804EA0E:
- lsls r0, 2
- ldr r1, _0804EA1C @ =_0804EA20
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0804EA18: .4byte gUnknown_03004854
-_0804EA1C: .4byte _0804EA20
- .align 2, 0
-_0804EA20:
- .4byte _0804EBBC
- .4byte _0804EC74
- .4byte _0804EC94
- .4byte _0804ECE8
- .4byte _0804ECFA
- .4byte _0804ED14
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804ED48
- .4byte _0804ED94
- .4byte _0804EDB8
- .4byte _0804EE46
- .4byte _0804EEA0
- .4byte _0804EF16
- .4byte _0804EF34
- .4byte _0804EFD8
- .4byte _0804F00C
- .4byte _0804F0CE
- .4byte _0804F020
- .4byte _0804F024
- .4byte _0804F02A
- .4byte _0804F03A
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F084
- .4byte _0804F0A0
- .4byte _0804F0BC
-_0804EBBC:
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl ResetTasks
- ldr r0, _0804EC60 @ =sub_804E2BC
- bl SetVBlankCallback
- ldr r4, _0804EC64 @ =gWindowConfig_81E6F68
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- ldr r1, _0804EC68 @ =gLinkType
- ldr r2, _0804EC6C @ =0x00004422
- adds r0, r2, 0
- strh r0, [r1]
- ldr r3, _0804EC70 @ =gUnknown_03004854
- ldr r1, [r3]
- ldrb r0, [r1]
- adds r0, 0x1
- movs r2, 0
- strb r0, [r1]
- ldr r0, [r3]
- adds r4, r0, 0
- adds r4, 0x4E
- movs r1, 0
- strh r2, [r4]
- adds r0, 0x7E
- strb r1, [r0]
- ldr r1, [r3]
- movs r4, 0xA2
- lsls r4, 1
- adds r0, r1, r4
- strh r2, [r0]
- adds r4, 0x2
- adds r0, r1, r4
- strh r2, [r0]
- movs r5, 0
- movs r6, 0
- mov r8, r3
- movs r7, 0xA6
- lsls r7, 1
-_0804EC18:
- ldr r0, [r3]
- lsls r1, r5, 1
- adds r0, 0x70
- adds r0, r1
- strh r6, [r0]
- adds r4, r5, 0x1
- adds r1, r5
- lsls r1, 1
- movs r2, 0x2
-_0804EC2A:
- ldr r0, [r3]
- adds r0, r7
- adds r0, r1
- strh r6, [r0]
- adds r1, 0x2
- subs r2, 0x1
- cmp r2, 0
- bge _0804EC2A
- adds r5, r4, 0
- cmp r5, 0x3
- ble _0804EC18
- mov r0, r8
- ldr r3, [r0]
- adds r0, r3, 0
- adds r0, 0x7C
- movs r2, 0
- movs r1, 0
- strh r1, [r0]
- subs r0, 0x26
- strh r1, [r0]
- subs r0, 0x2
- strh r1, [r0]
- adds r0, 0x6
- strh r1, [r0]
- strb r2, [r3, 0x1]
- b _0804F0CE
- .align 2, 0
-_0804EC60: .4byte sub_804E2BC
-_0804EC64: .4byte gWindowConfig_81E6F68
-_0804EC68: .4byte gLinkType
-_0804EC6C: .4byte 0x00004422
-_0804EC70: .4byte gUnknown_03004854
-_0804EC74:
- bl sub_804E2EC
- lsls r0, 24
- cmp r0, 0
- bne _0804EC80
- b _0804F0CE
-_0804EC80:
- ldr r0, _0804EC90 @ =gUnknown_03004854
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl sub_8051474
- b _0804F0CE
- .align 2, 0
-_0804EC90: .4byte gUnknown_03004854
-_0804EC94:
- movs r5, 0
- ldr r4, _0804ECD8 @ =gUnknown_082162E4
- ldr r6, _0804ECDC @ =gUnknown_03004854
-_0804EC9A:
- ldrb r1, [r4]
- ldrb r2, [r4, 0x1]
- ldr r0, _0804ECE0 @ =gSpriteTemplate_82163F4
- movs r3, 0x1
- bl CreateSprite
- ldr r1, [r6]
- adds r1, 0x60
- adds r1, r5
- strb r0, [r1]
- ldr r0, [r6]
- adds r0, 0x60
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0804ECE4 @ =gSprites
- adds r0, r1
- adds r1, r5, 0
- adds r1, 0x8
- lsls r1, 24
- lsrs r1, 24
- bl StartSpriteAnim
- adds r4, 0x2
- adds r5, 0x1
- cmp r5, 0x3
- ble _0804EC9A
- b _0804F0AA
- .align 2, 0
-_0804ECD8: .4byte gUnknown_082162E4
-_0804ECDC: .4byte gUnknown_03004854
-_0804ECE0: .4byte gSpriteTemplate_82163F4
-_0804ECE4: .4byte gSprites
-_0804ECE8:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- b _0804F0AA
-_0804ECFA:
- bl sub_804E4FC
- ldr r0, _0804ED10 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0804ED0C
- b _0804F0CE
-_0804ED0C:
- b _0804F0AA
- .align 2, 0
-_0804ED10: .4byte gPaletteFade
-_0804ED14:
- movs r0, 0
- movs r1, 0xD
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _0804ED40 @ =gOtherText_LinkStandby3
- movs r1, 0x1
- movs r2, 0xE
- bl MenuPrint
- ldr r2, _0804ED44 @ =gUnknown_03004854
- ldr r1, [r2]
- movs r3, 0
- movs r0, 0x8
- strb r0, [r1]
- ldr r0, [r2]
- movs r1, 0x98
- lsls r1, 1
- adds r0, r1
- str r3, [r0]
- b _0804F0CE
- .align 2, 0
-_0804ED40: .4byte gOtherText_LinkStandby3
-_0804ED44: .4byte gUnknown_03004854
-_0804ED48:
- mov r2, r8
- ldr r1, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- movs r5, 0
- strb r0, [r1]
- ldr r0, [r2]
- movs r3, 0x9E
- lsls r3, 1
- adds r0, r3
- strb r5, [r0]
- ldr r0, [r2]
- movs r4, 0xBE
- lsls r4, 1
- adds r0, r4
- ldr r1, _0804ED8C @ =gScriptItemId
- ldrh r1, [r1]
- bl sub_804E844
- ldr r0, _0804ED90 @ =gBlockSendBuffer
- mov r2, r8
- ldr r1, [r2]
- adds r1, r4
- movs r2, 0x10
- bl memcpy
- bl sub_80084A4
- mov r3, r8
- ldr r0, [r3]
- subs r4, 0x4C
- adds r0, r4
- str r5, [r0]
- b _0804F0CE
- .align 2, 0
-_0804ED8C: .4byte gScriptItemId
-_0804ED90: .4byte gBlockSendBuffer
-_0804ED94:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- bne _0804EDA0
- b _0804F0CE
-_0804EDA0:
- bl ResetBlockReceivedFlags
- bl GetMultiplayerId
- lsls r0, 24
- cmp r0, 0
- beq _0804EDB0
- b _0804F0AA
-_0804EDB0:
- movs r0, 0x4
- bl sub_8007E9C
- b _0804F0AA
-_0804EDB8:
- mov r0, r8
- ldr r1, [r0]
- movs r2, 0x98
- lsls r2, 1
- adds r1, r2
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x14
- bgt _0804EDCE
- b _0804F0CE
-_0804EDCE:
- bl MenuZeroFillScreen
- bl GetBlockReceivedStatus
- adds r4, r0, 0
- bl sub_8008198
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- beq _0804EDE6
- b _0804F0CE
-_0804EDE6:
- movs r5, 0
- mov r7, r8
- movs r6, 0xBE
- lsls r6, 1
- b _0804EE18
-_0804EDF0:
- ldr r0, [r7]
- lsls r4, r5, 4
- adds r0, r4, r0
- adds r0, r6
- lsls r1, r5, 8
- ldr r2, _0804EE2C @ =gBlockRecvBuffer
- adds r1, r2
- movs r2, 0x10
- bl memcpy
- ldr r0, [r7]
- lsls r2, r5, 1
- adds r1, r0, 0
- adds r1, 0x80
- adds r1, r2
- adds r0, r4
- adds r0, r6
- ldrh r0, [r0]
- strh r0, [r1]
- adds r5, 0x1
-_0804EE18:
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r5, r0
- blt _0804EDF0
- bl ResetBlockReceivedFlags
- b _0804F0AA
- .align 2, 0
-_0804EE2C: .4byte gBlockRecvBuffer
-_0804EE30:
- ldrb r1, [r4]
- lsls r1, 1
- adds r0, r2, 0
- adds r0, 0x80
- adds r0, r1
- ldrh r0, [r0]
- lsls r1, r5, 24
- lsrs r1, 24
- bl sub_804E7C0
- b _0804EE7A
-_0804EE46:
- bl GetLinkPlayerCount
- ldr r2, _0804EE98 @ =gUnknown_03004854
- ldr r1, [r2]
- adds r1, 0x88
- strb r0, [r1]
- movs r5, 0
- ldr r2, [r2]
- movs r3, 0x9E
- lsls r3, 1
- adds r4, r2, r3
- ldr r1, _0804EE9C @ =gUnknown_082162EC
- adds r0, r2, 0
- adds r0, 0x88
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 2
- ldrb r3, [r4]
- adds r0, r1
-_0804EE6C:
- ldrb r1, [r0]
- cmp r3, r1
- beq _0804EE30
- adds r0, 0x1
- adds r5, 0x1
- cmp r5, 0x3
- ble _0804EE6C
-_0804EE7A:
- ldr r3, _0804EE98 @ =gUnknown_03004854
- ldr r1, [r3]
- movs r4, 0x98
- lsls r4, 1
- adds r2, r1, r4
- movs r0, 0
- str r0, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r1, [r3]
- movs r0, 0x9E
- lsls r0, 1
- adds r1, r0
- b _0804F0AE
- .align 2, 0
-_0804EE98: .4byte gUnknown_03004854
-_0804EE9C: .4byte gUnknown_082162EC
-_0804EEA0:
- mov r1, r8
- ldr r2, [r1]
- movs r3, 0x98
- lsls r3, 1
- adds r1, r2, r3
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x3C
- bgt _0804EEB6
- b _0804F0CE
-_0804EEB6:
- movs r4, 0x9E
- lsls r4, 1
- adds r0, r2, r4
- adds r1, r2, 0
- adds r1, 0x88
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- bcc _0804EF00
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- mov r0, r8
- ldr r2, [r0]
- ldr r3, _0804EEF4 @ =gUnknown_082162F8
- ldr r1, _0804EEF8 @ =gUnknown_08216300
- adds r0, r2, 0
- adds r0, 0x88
- ldrb r0, [r0]
- subs r0, 0x2
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r3
- ldr r3, _0804EEFC @ =0xffffa800
- adds r1, r3, 0
- ldrh r0, [r0]
- adds r1, r0
- adds r2, 0x54
- strh r1, [r2]
- b _0804EF06
- .align 2, 0
-_0804EEF4: .4byte gUnknown_082162F8
-_0804EEF8: .4byte gUnknown_08216300
-_0804EEFC: .4byte 0xffffa800
-_0804EF00:
- ldrb r0, [r2]
- subs r0, 0x1
- strb r0, [r2]
-_0804EF06:
- mov r4, r8
- ldr r0, [r4]
- movs r1, 0x98
- lsls r1, 1
- adds r0, r1
- movs r1, 0
- str r1, [r0]
- b _0804F0CE
-_0804EF16:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- bne _0804EF22
- b _0804F0CE
-_0804EF22:
- ldr r2, _0804EF30 @ =gUnknown_03004854
- ldr r1, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r2]
- b _0804EFBC
- .align 2, 0
-_0804EF30: .4byte gUnknown_03004854
-_0804EF34:
- movs r2, 0x80
- lsls r2, 19
- ldrh r0, [r2]
- movs r3, 0x80
- lsls r3, 3
- adds r1, r3, 0
- orrs r0, r1
- strh r0, [r2]
- mov r4, r8
- ldr r2, [r4]
- adds r1, r2, 0
- adds r1, 0x54
- movs r3, 0x80
- lsls r3, 2
- adds r0, r3, 0
- ldrh r4, [r1]
- adds r0, r4
- strh r0, [r1]
- movs r0, 0xA1
- lsls r0, 1
- adds r1, r2, r0
- ldrh r0, [r1]
- adds r0, 0x4
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xFF
- bls _0804EFB8
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- mov r1, r8
- ldr r3, [r1]
- movs r2, 0xA1
- lsls r2, 1
- adds r1, r3, r2
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r1]
- ldr r2, _0804EFC8 @ =gUnknown_082162F8
- ldr r1, _0804EFCC @ =gUnknown_08216300
- adds r0, r3, 0
- adds r0, 0x88
- ldrb r0, [r0]
- subs r0, 0x2
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- adds r0, r3, 0
- adds r0, 0x54
- strh r1, [r0]
- ldr r1, _0804EFD0 @ =REG_BG2CNT
- ldr r4, _0804EFD4 @ =0x00004882
- adds r0, r4, 0
- strh r0, [r1]
- movs r0, 0x98
- lsls r0, 1
- adds r1, r3, r0
- movs r0, 0
- str r0, [r1]
- bl sub_804F238
- bl BuyMenuDrawFieldObjects
-_0804EFB8:
- mov r1, r8
- ldr r0, [r1]
-_0804EFBC:
- movs r2, 0xB4
- lsls r2, 1
- adds r0, r2
- bl sub_8051414
- b _0804F0CE
- .align 2, 0
-_0804EFC8: .4byte gUnknown_082162F8
-_0804EFCC: .4byte gUnknown_08216300
-_0804EFD0: .4byte REG_BG2CNT
-_0804EFD4: .4byte 0x00004882
-_0804EFD8:
- bl sub_8051B8C
- lsls r0, 24
- cmp r0, 0
- beq _0804EFF6
- ldr r0, _0804F008 @ =gUnknown_03004854
- ldr r1, [r0]
- movs r3, 0x98
- lsls r3, 1
- adds r2, r1, r3
- movs r0, 0
- str r0, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_0804EFF6:
- ldr r0, _0804F008 @ =gUnknown_03004854
- ldr r0, [r0]
- movs r4, 0xB4
- lsls r4, 1
- adds r0, r4
- bl sub_8051414
- b _0804F0CE
- .align 2, 0
-_0804F008: .4byte gUnknown_03004854
-_0804F00C:
- ldr r0, _0804F01C @ =gSpriteTemplate_8216548
- movs r2, 0x10
- negs r2, r2
- movs r1, 0x78
- movs r3, 0x3
- bl CreateSprite
- b _0804F0AA
- .align 2, 0
-_0804F01C: .4byte gSpriteTemplate_8216548
-_0804F020:
- mov r0, r8
- b _0804F0AC
-_0804F024:
- bl sub_80084A4
- b _0804F0AA
-_0804F02A:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _0804F0CE
- bl sub_8007E24
- b _0804F0AA
-_0804F03A:
- mov r1, r8
- ldr r3, [r1]
- adds r2, r3, 0
- adds r2, 0x56
- movs r1, 0
- movs r0, 0x80
- strh r0, [r2]
- movs r2, 0x96
- lsls r2, 1
- adds r0, r3, r2
- str r1, [r0]
- ldr r0, _0804F07C @ =sub_80501FC
- bl SetMainCallback2
- bl GetCurrentMapMusic
- lsls r0, 16
- lsrs r0, 16
- ldr r4, _0804F080 @ =0x00000193
- cmp r0, r4
- beq _0804F074
- bl GetCurrentMapMusic
- mov r3, r8
- ldr r1, [r3]
- movs r2, 0xBC
- lsls r2, 1
- adds r1, r2
- strh r0, [r1]
-_0804F074:
- adds r0, r4, 0
- bl PlayBGM
- b _0804F0CE
- .align 2, 0
-_0804F07C: .4byte sub_80501FC
-_0804F080: .4byte 0x00000193
-_0804F084:
- movs r0, 0
- movs r1, 0xD
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _0804F09C @ =gOtherText_LinkNotFound
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrintMessage
- b _0804F0AA
- .align 2, 0
-_0804F09C: .4byte gOtherText_LinkNotFound
-_0804F0A0:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- beq _0804F0CE
-_0804F0AA:
- ldr r0, _0804F0B8 @ =gUnknown_03004854
-_0804F0AC:
- ldr r1, [r0]
-_0804F0AE:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0804F0CE
- .align 2, 0
-_0804F0B8: .4byte gUnknown_03004854
-_0804F0BC:
- ldr r0, _0804F0EC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0804F0CE
- ldr r0, _0804F0F0 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
-_0804F0CE:
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F0EC: .4byte gPaletteFade
-_0804F0F0: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
- thumb_func_end sub_804E9F8
-
- thumb_func_start sub_804F0F4
-sub_804F0F4: @ 804F0F4
- push {r4,lr}
- movs r1, 0x80
- lsls r1, 19
- movs r0, 0
- strh r0, [r1]
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl ResetTasks
- ldr r0, _0804F158 @ =sub_804E2BC
- bl SetVBlankCallback
- ldr r4, _0804F15C @ =gWindowConfig_81E6F68
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- ldr r1, _0804F160 @ =gLinkType
- ldr r2, _0804F164 @ =0x00004422
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _0804F168 @ =gUnknown_03004854
- ldr r2, [r0]
- adds r0, r2, 0
- adds r0, 0x4E
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x8
- strh r1, [r0]
- subs r0, 0x2
- strh r1, [r0]
- adds r0, 0x6
- strh r1, [r0]
- movs r3, 0xA2
- lsls r3, 1
- adds r0, r2, r3
- strh r1, [r0]
- adds r3, 0x2
- adds r0, r2, r3
- strh r1, [r0]
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F158: .4byte sub_804E2BC
-_0804F15C: .4byte gWindowConfig_81E6F68
-_0804F160: .4byte gLinkType
-_0804F164: .4byte 0x00004422
-_0804F168: .4byte gUnknown_03004854
- thumb_func_end sub_804F0F4
-
- thumb_func_start task_tutorial_oak_boy_girl
-task_tutorial_oak_boy_girl: @ 804F16C
- push {lr}
- lsls r0, 16
- lsls r1, 24
- lsrs r0, 24
- adds r2, r0, 0
- adds r2, 0x18
- ldr r0, _0804F1A8 @ =gUnknown_03004854
- ldr r0, [r0]
- lsrs r1, 23
- adds r0, 0xA2
- adds r0, r1
- ldrb r0, [r0]
- ldr r1, _0804F1AC @ =gUnknown_08216303
- adds r0, r1
- ldrb r1, [r0]
- cmp r2, r1
- bcc _0804F1B4
- adds r0, r1, 0
- adds r0, 0x30
- cmp r2, r0
- bcs _0804F1B4
- subs r0, 0x1C
- cmp r2, r0
- bcc _0804F1B0
- adds r0, 0x8
- cmp r2, r0
- bcs _0804F1B0
- movs r0, 0x2
- b _0804F1B6
- .align 2, 0
-_0804F1A8: .4byte gUnknown_03004854
-_0804F1AC: .4byte gUnknown_08216303
-_0804F1B0:
- movs r0, 0x1
- b _0804F1B6
-_0804F1B4:
- movs r0, 0
-_0804F1B6:
- pop {r1}
- bx r1
- thumb_func_end task_tutorial_oak_boy_girl
-
- thumb_func_start sub_804F1BC
-sub_804F1BC: @ 804F1BC
- push {r4-r7,lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 24
- lsrs r1, 24
- movs r4, 0
- cmp r0, 0xAF
- bne _0804F1EE
- movs r3, 0
- subs r5, r1, 0x1
- adds r2, 0x9
-_0804F1D2:
- adds r0, r2, r4
- adds r1, r2, r3
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- bls _0804F1E0
- adds r4, r3, 0
-_0804F1E0:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x4
- bls _0804F1D2
- adds r0, r4, 0x5
- b _0804F204
-_0804F1EE:
- subs r0, 0x85
- lsls r0, 16
- lsrs r4, r0, 16
- subs r5, r1, 0x1
- cmp r4, 0x4
- bls _0804F208
- adds r0, r4, 0
- movs r1, 0x5
- bl __umodsi3
- adds r0, 0x5
-_0804F204:
- lsls r0, 16
- lsrs r4, r0, 16
-_0804F208:
- movs r3, 0
- cmp r3, r5
- bge _0804F22E
- ldr r7, _0804F234 @ =gUnknown_082165BC
- lsls r0, r4, 1
- adds r6, r0, r4
-_0804F214:
- adds r4, r3, 0x1
- lsls r0, r4, 24
- lsrs r0, 24
- adds r1, r3, r6
- adds r1, r7
- ldrb r1, [r1]
- adds r1, 0x85
- bl sub_80516C4
- lsls r4, 16
- lsrs r3, r4, 16
- cmp r3, r5
- blt _0804F214
-_0804F22E:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F234: .4byte gUnknown_082165BC
- thumb_func_end sub_804F1BC
-
- thumb_func_start sub_804F238
-sub_804F238: @ 804F238
- push {r4-r7,lr}
- movs r4, 0
- ldr r7, _0804F2A0 @ =gUnknown_03004854
- movs r6, 0xFF
- ldr r5, _0804F2A4 @ =gUnknown_082162EC
-_0804F242:
- ldr r3, [r7]
- lsls r2, r4, 1
- adds r0, r3, 0
- adds r0, 0xA2
- adds r0, r2
- strh r6, [r0]
- adds r1, r3, 0
- adds r1, 0x9A
- adds r1, r2
- adds r0, r3, 0
- adds r0, 0x88
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 2
- adds r0, r4, r0
- adds r0, r5
- ldrb r0, [r0]
- strh r0, [r1]
- adds r4, 0x1
- cmp r4, 0x3
- ble _0804F242
- movs r3, 0
- ldr r7, _0804F2A0 @ =gUnknown_03004854
-_0804F270:
- movs r4, 0
- adds r6, r3, 0x1
- lsls r5, r3, 1
-_0804F276:
- ldr r2, [r7]
- lsls r0, r4, 1
- adds r1, r2, 0
- adds r1, 0x9A
- adds r1, r0
- ldrh r0, [r1]
- cmp r0, r3
- bne _0804F28E
- adds r0, r2, 0
- adds r0, 0xA2
- adds r0, r5
- strh r4, [r0]
-_0804F28E:
- adds r4, 0x1
- cmp r4, 0x3
- ble _0804F276
- adds r3, r6, 0
- cmp r3, 0x3
- ble _0804F270
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F2A0: .4byte gUnknown_03004854
-_0804F2A4: .4byte gUnknown_082162EC
- thumb_func_end sub_804F238
-
- thumb_func_start BuyMenuDrawFieldObjects
-BuyMenuDrawFieldObjects: @ 804F2A8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r6, 0
- ldr r7, _0804F360 @ =gUnknown_03004854
- ldr r0, _0804F364 @ =gUnknown_082162D4
- mov r8, r0
-_0804F2B6:
- ldr r2, [r7]
- lsls r4, r6, 1
- adds r0, r2, 0
- adds r0, 0x9A
- adds r3, r0, r4
- ldrh r0, [r3]
- cmp r0, 0xFF
- beq _0804F34A
- ldr r5, _0804F368 @ =gStringVar1
- adds r1, r2, 0
- adds r1, 0x5C
- ldrh r3, [r3]
- adds r1, r3
- adds r0, r2, 0
- adds r0, 0x60
- adds r0, r6
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r0, [r7]
- adds r1, r0, 0
- adds r1, 0x9A
- adds r1, r4
- adds r0, 0x5C
- ldrh r1, [r1]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0804F36C @ =gSprites
- adds r0, r1
- lsls r1, r6, 24
- lsrs r1, 24
- bl StartSpriteAnim
- bl GetMultiplayerId
- lsls r0, 24
- ldr r1, [r7]
- adds r1, 0x9A
- adds r1, r4
- lsrs r0, 24
- ldrh r1, [r1]
- cmp r0, r1
- bne _0804F31A
- adds r0, r5, 0
- ldr r1, _0804F370 @ =gUnknown_082162C4
- bl StringCopy
- adds r5, r0, 0
-_0804F31A:
- ldr r0, [r7]
- adds r0, 0x9A
- adds r0, r4
- ldrh r0, [r0]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- ldr r0, _0804F374 @ =gLinkPlayers + 0x8
- adds r1, r0
- adds r0, r5, 0
- bl StringCopy
- mov r0, r8
- ldrb r1, [r0]
- lsls r1, 3
- adds r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- ldrb r2, [r0, 0x1]
- lsls r2, 3
- ldr r0, _0804F368 @ =gStringVar1
- movs r3, 0x1
- bl MenuPrint_PixelCoords
-_0804F34A:
- movs r0, 0x2
- add r8, r0
- adds r6, 0x1
- cmp r6, 0x3
- ble _0804F2B6
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F360: .4byte gUnknown_03004854
-_0804F364: .4byte gUnknown_082162D4
-_0804F368: .4byte gStringVar1
-_0804F36C: .4byte gSprites
-_0804F370: .4byte gUnknown_082162C4
-_0804F374: .4byte gLinkPlayers + 0x8
- thumb_func_end BuyMenuDrawFieldObjects
-
- thumb_func_start sub_804F378
-sub_804F378: @ 804F378
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- ldr r1, _0804F398 @ =gUnknown_03004854
- ldr r0, [r1]
- ldrb r0, [r0]
- mov r8, r1
- cmp r0, 0x15
- bls _0804F38E
- b _0804F7E6
-_0804F38E:
- lsls r0, 2
- ldr r1, _0804F39C @ =_0804F3A0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0804F398: .4byte gUnknown_03004854
-_0804F39C: .4byte _0804F3A0
- .align 2, 0
-_0804F3A0:
- .4byte _0804F3F8
- .4byte _0804F474
- .4byte _0804F494
- .4byte _0804F4EC
- .4byte _0804F518
- .4byte _0804F7E6
- .4byte _0804F7E6
- .4byte _0804F7E6
- .4byte _0804F54C
- .4byte _0804F7E6
- .4byte _0804F7E6
- .4byte _0804F578
- .4byte _0804F5C8
- .4byte _0804F636
- .4byte _0804F650
- .4byte _0804F6F8
- .4byte _0804F720
- .4byte _0804F7E6
- .4byte _0804F73C
- .4byte _0804F742
- .4byte _0804F748
- .4byte _0804F754
-_0804F3F8:
- bl sub_804F0F4
- ldr r4, _0804F46C @ =gScriptItemId
- ldrh r1, [r4]
- movs r0, 0
- bl sub_80516C4
- ldr r5, _0804F470 @ =gUnknown_03004854
- ldr r0, [r5]
- movs r6, 0xBE
- lsls r6, 1
- adds r0, r6
- ldrh r1, [r4]
- bl sub_804E844
- ldrh r0, [r4]
- ldr r2, [r5]
- adds r1, r2, 0
- adds r1, 0x88
- ldrb r1, [r1]
- adds r2, r6
- bl sub_804F1BC
- movs r4, 0
- movs r6, 0
- mov r8, r5
- movs r7, 0xA6
- lsls r7, 1
-_0804F430:
- ldr r0, [r5]
- lsls r1, r4, 1
- adds r0, 0x70
- adds r0, r1
- strh r6, [r0]
- adds r3, r4, 0x1
- adds r1, r4
- lsls r1, 1
- movs r2, 0x2
-_0804F442:
- ldr r0, [r5]
- adds r0, r7
- adds r0, r1
- strh r6, [r0]
- adds r1, 0x2
- subs r2, 0x1
- cmp r2, 0
- bge _0804F442
- adds r4, r3, 0
- cmp r4, 0x3
- ble _0804F430
- mov r0, r8
- ldr r3, [r0]
- adds r1, r3, 0
- adds r1, 0x7C
- movs r2, 0
- movs r0, 0
- strh r0, [r1]
- strb r2, [r3, 0x1]
- b _0804F7E6
- .align 2, 0
-_0804F46C: .4byte gScriptItemId
-_0804F470: .4byte gUnknown_03004854
-_0804F474:
- bl sub_804E2EC
- lsls r0, 24
- cmp r0, 0
- bne _0804F480
- b _0804F7E6
-_0804F480:
- ldr r0, _0804F490 @ =gUnknown_03004854
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl sub_8051474
- b _0804F7E6
- .align 2, 0
-_0804F490: .4byte gUnknown_03004854
-_0804F494:
- movs r4, 0
- ldr r5, _0804F4DC @ =gUnknown_082162E4
- ldr r6, _0804F4E0 @ =gUnknown_03004854
-_0804F49A:
- ldrb r1, [r5]
- ldrb r2, [r5, 0x1]
- ldr r0, _0804F4E4 @ =gSpriteTemplate_82163F4
- movs r3, 0x1
- bl CreateSprite
- ldr r1, [r6]
- adds r1, 0x60
- adds r1, r4
- strb r0, [r1]
- ldr r0, [r6]
- adds r0, 0x60
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0804F4E8 @ =gSprites
- adds r0, r1
- adds r1, r4, 0
- adds r1, 0x8
- lsls r1, 24
- lsrs r1, 24
- bl StartSpriteAnim
- adds r5, 0x2
- adds r4, 0x1
- cmp r4, 0x3
- ble _0804F49A
- ldr r0, _0804F4E0 @ =gUnknown_03004854
- ldr r1, [r0]
- b _0804F74C
- .align 2, 0
-_0804F4DC: .4byte gUnknown_082162E4
-_0804F4E0: .4byte gUnknown_03004854
-_0804F4E4: .4byte gSpriteTemplate_82163F4
-_0804F4E8: .4byte gSprites
-_0804F4EC:
- movs r0, 0x1
- negs r0, r0
- movs r4, 0
- str r4, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r2, _0804F514 @ =gUnknown_03004854
- ldr r1, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r2]
- movs r1, 0x98
- lsls r1, 1
- adds r0, r1
- str r4, [r0]
- b _0804F7E6
- .align 2, 0
-_0804F514: .4byte gUnknown_03004854
-_0804F518:
- mov r2, r8
- ldr r1, [r2]
- movs r3, 0x98
- lsls r3, 1
- adds r1, r3
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x2
- bne _0804F530
- bl sub_804E4FC
-_0804F530:
- ldr r0, _0804F548 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0804F53E
- b _0804F7E6
-_0804F53E:
- mov r5, r8
- ldr r1, [r5]
- movs r0, 0x8
- strb r0, [r1]
- b _0804F7E6
- .align 2, 0
-_0804F548: .4byte gPaletteFade
-_0804F54C:
- mov r0, r8
- ldr r1, [r0]
- movs r2, 0
- movs r0, 0xB
- strb r0, [r1]
- mov r1, r8
- ldr r0, [r1]
- movs r3, 0x9E
- lsls r3, 1
- adds r0, r3
- strb r2, [r0]
- b _0804F7E6
-_0804F564:
- lsls r1, 1
- adds r0, r3, 0
- adds r0, 0x80
- adds r0, r1
- ldrh r0, [r0]
- lsls r1, r4, 24
- lsrs r1, 24
- bl sub_804E7C0
- b _0804F5A2
-_0804F578:
- movs r4, 0
- ldr r2, _0804F5C0 @ =gUnknown_082162EC
- ldr r0, _0804F5C4 @ =gUnknown_03004854
- ldr r3, [r0]
- adds r0, r3, 0
- adds r0, 0x88
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 2
- movs r5, 0x9E
- lsls r5, 1
- adds r1, r3, r5
- ldrb r1, [r1]
- adds r0, r2
-_0804F594:
- ldrb r2, [r0]
- cmp r1, r2
- beq _0804F564
- adds r0, 0x1
- adds r4, 0x1
- cmp r4, 0x3
- ble _0804F594
-_0804F5A2:
- ldr r3, _0804F5C4 @ =gUnknown_03004854
- ldr r1, [r3]
- movs r5, 0x98
- lsls r5, 1
- adds r2, r1, r5
- movs r0, 0
- str r0, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r1, [r3]
- movs r0, 0x9E
- lsls r0, 1
- adds r1, r0
- b _0804F74C
- .align 2, 0
-_0804F5C0: .4byte gUnknown_082162EC
-_0804F5C4: .4byte gUnknown_03004854
-_0804F5C8:
- mov r1, r8
- ldr r3, [r1]
- movs r2, 0x98
- lsls r2, 1
- adds r1, r3, r2
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x3C
- bgt _0804F5DE
- b _0804F7E6
-_0804F5DE:
- movs r5, 0x9E
- lsls r5, 1
- adds r0, r3, r5
- adds r4, r3, 0
- adds r4, 0x88
- ldrb r0, [r0]
- ldrb r1, [r4]
- cmp r0, r1
- bcc _0804F620
- ldr r2, _0804F614 @ =gUnknown_082162F8
- ldr r1, _0804F618 @ =gUnknown_08216300
- ldrb r0, [r4]
- subs r0, 0x2
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r2
- ldr r2, _0804F61C @ =0xffffa800
- adds r1, r2, 0
- ldrh r0, [r0]
- adds r1, r0
- adds r0, r3, 0
- adds r0, 0x54
- strh r1, [r0]
- ldrb r0, [r3]
- adds r0, 0x1
- b _0804F624
- .align 2, 0
-_0804F614: .4byte gUnknown_082162F8
-_0804F618: .4byte gUnknown_08216300
-_0804F61C: .4byte 0xffffa800
-_0804F620:
- ldrb r0, [r3]
- subs r0, 0x1
-_0804F624:
- strb r0, [r3]
- mov r3, r8
- ldr r0, [r3]
- movs r5, 0x98
- lsls r5, 1
- adds r0, r5
- movs r1, 0
- str r1, [r0]
- b _0804F7E6
-_0804F636:
- mov r1, r8
- ldr r0, [r1]
- ldrb r1, [r0]
- adds r1, 0x1
- strb r1, [r0]
- bl sub_804F238
- movs r0, 0x2B
- bl PlaySE
- mov r2, r8
- ldr r0, [r2]
- b _0804F710
-_0804F650:
- movs r2, 0x80
- lsls r2, 19
- ldrh r0, [r2]
- movs r5, 0x80
- lsls r5, 3
- adds r1, r5, 0
- orrs r0, r1
- strh r0, [r2]
- mov r0, r8
- ldr r2, [r0]
- adds r1, r2, 0
- adds r1, 0x54
- movs r3, 0x80
- lsls r3, 2
- adds r0, r3, 0
- ldrh r5, [r1]
- adds r0, r5
- strh r0, [r1]
- movs r0, 0xA1
- lsls r0, 1
- adds r1, r2, r0
- ldrh r0, [r1]
- adds r0, 0x4
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xFF
- bls _0804F6D6
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- mov r1, r8
- ldr r3, [r1]
- movs r2, 0xA1
- lsls r2, 1
- adds r1, r3, r2
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r1]
- ldr r2, _0804F6E8 @ =gUnknown_082162F8
- ldr r1, _0804F6EC @ =gUnknown_08216300
- adds r0, r3, 0
- adds r0, 0x88
- ldrb r0, [r0]
- subs r0, 0x2
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- adds r0, r3, 0
- adds r0, 0x54
- strh r1, [r0]
- ldr r1, _0804F6F0 @ =REG_BG2CNT
- ldr r5, _0804F6F4 @ =0x00004882
- adds r0, r5, 0
- strh r0, [r1]
- movs r0, 0x98
- lsls r0, 1
- adds r1, r3, r0
- movs r0, 0
- str r0, [r1]
- movs r0, 0x34
- bl PlaySE
- bl BuyMenuDrawFieldObjects
-_0804F6D6:
- mov r1, r8
- ldr r0, [r1]
- movs r2, 0xB4
- lsls r2, 1
- adds r0, r2
- bl sub_8051414
- b _0804F7E6
- .align 2, 0
-_0804F6E8: .4byte gUnknown_082162F8
-_0804F6EC: .4byte gUnknown_08216300
-_0804F6F0: .4byte REG_BG2CNT
-_0804F6F4: .4byte 0x00004882
-_0804F6F8:
- bl sub_8051B8C
- lsls r0, 24
- cmp r0, 0
- beq _0804F70C
- ldr r0, _0804F71C @ =gUnknown_03004854
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_0804F70C:
- ldr r0, _0804F71C @ =gUnknown_03004854
- ldr r0, [r0]
-_0804F710:
- movs r3, 0xB4
- lsls r3, 1
- adds r0, r3
- bl sub_8051414
- b _0804F7E6
- .align 2, 0
-_0804F71C: .4byte gUnknown_03004854
-_0804F720:
- ldr r0, _0804F734 @ =gSpriteTemplate_8216548
- movs r2, 0x10
- negs r2, r2
- movs r1, 0x78
- movs r3, 0x3
- bl CreateSprite
- ldr r0, _0804F738 @ =gUnknown_03004854
- ldr r1, [r0]
- b _0804F74C
- .align 2, 0
-_0804F734: .4byte gSpriteTemplate_8216548
-_0804F738: .4byte gUnknown_03004854
-_0804F73C:
- mov r5, r8
- ldr r1, [r5]
- b _0804F74C
-_0804F742:
- mov r0, r8
- ldr r1, [r0]
- b _0804F74C
-_0804F748:
- mov r2, r8
- ldr r1, [r2]
-_0804F74C:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0804F7E6
-_0804F754:
- bl sub_804F81C
- ldr r3, _0804F804 @ =gUnknown_03004854
- ldr r4, [r3]
- adds r5, r4, 0
- adds r5, 0x56
- movs r2, 0
- movs r1, 0
- movs r0, 0x80
- strh r0, [r5]
- movs r5, 0x96
- lsls r5, 1
- adds r0, r4, r5
- str r1, [r0]
- ldr r1, _0804F808 @ =0x0000014b
- adds r0, r4, r1
- strb r2, [r0]
- ldr r0, [r3]
- adds r0, 0x7E
- strb r2, [r0]
- ldr r0, _0804F80C @ =sub_80501FC
- bl SetMainCallback2
- movs r4, 0
- ldr r0, _0804F810 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r4, r0
- bge _0804F7B8
- movs r5, 0xA0
- lsls r5, 20
- ldr r6, _0804F814 @ =gUnknown_08216308
-_0804F792:
- ldm r6!, {r0}
- lsrs r1, r5, 24
- bl CreateTask
- ldr r1, _0804F804 @ =gUnknown_03004854
- ldr r1, [r1]
- movs r2, 0xA4
- lsls r2, 1
- adds r1, r2
- adds r1, r4
- strb r0, [r1]
- movs r3, 0x80
- lsls r3, 17
- adds r5, r3
- adds r4, 0x1
- ldr r0, _0804F810 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r4, r0
- blt _0804F792
-_0804F7B8:
- bl GetCurrentMapMusic
- lsls r0, 16
- lsrs r0, 16
- ldr r4, _0804F818 @ =0x00000193
- cmp r0, r4
- beq _0804F7D6
- bl GetCurrentMapMusic
- ldr r1, _0804F804 @ =gUnknown_03004854
- ldr r1, [r1]
- movs r5, 0xBC
- lsls r5, 1
- adds r1, r5
- strh r0, [r1]
-_0804F7D6:
- adds r0, r4, 0
- bl PlayBGM
- movs r0, 0x35
- bl PlaySE
- bl sub_804E290
-_0804F7E6:
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F804: .4byte gUnknown_03004854
-_0804F808: .4byte 0x0000014b
-_0804F80C: .4byte sub_80501FC
-_0804F810: .4byte gSpecialVar_0x8004
-_0804F814: .4byte gUnknown_08216308
-_0804F818: .4byte 0x00000193
- thumb_func_end sub_804F378
-
- thumb_func_start sub_804F81C
-sub_804F81C: @ 804F81C
- push {lr}
- ldr r3, _0804F83C @ =gSendCmd
- movs r0, 0
- ldr r1, _0804F840 @ =gRecvCmds
- movs r2, 0x3
-_0804F826:
- strh r0, [r3]
- strh r0, [r3, 0x4]
- strh r0, [r1]
- strh r0, [r1, 0x10]
- adds r1, 0x2
- subs r2, 0x1
- cmp r2, 0
- bge _0804F826
- pop {r0}
- bx r0
- .align 2, 0
-_0804F83C: .4byte gSendCmd
-_0804F840: .4byte gRecvCmds
- thumb_func_end sub_804F81C
-
- thumb_func_start sub_804F844
-sub_804F844: @ 804F844
- push {r4,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r1, _0804F884 @ =gTasks
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- adds r2, r0, r1
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
- lsls r0, 16
- asrs r0, 16
- movs r4, 0xA
- ldrsh r1, [r2, r4]
- cmp r0, r1
- ble _0804F87C
- ldr r0, _0804F888 @ =gRecvCmds
- movs r4, 0xC
- ldrsh r1, [r2, r4]
- lsls r1, 1
- adds r0, 0x10
- adds r1, r0
- ldr r0, _0804F88C @ =0x00002345
- strh r0, [r1]
- adds r0, r3, 0
- bl DestroyTask
-_0804F87C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F884: .4byte gTasks
-_0804F888: .4byte gRecvCmds
-_0804F88C: .4byte 0x00002345
- thumb_func_end sub_804F844
-
- thumb_func_start sub_804F890
-sub_804F890: @ 804F890
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0804F8C0 @ =sub_804F844
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0804F8C4 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0xA]
- strh r5, [r1, 0xC]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F8C0: .4byte sub_804F844
-_0804F8C4: .4byte gTasks
- thumb_func_end sub_804F890
-
- thumb_func_start sub_804F8C8
-sub_804F8C8: @ 804F8C8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _0804F934 @ =gUnknown_03004854
- ldr r0, [r4]
- adds r0, 0x54
- ldrh r0, [r0]
- movs r1, 0x1
- bl task_tutorial_oak_boy_girl
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- beq _0804F8E6
- b _0804F9DC
-_0804F8E6:
- ldr r2, _0804F938 @ =gTasks
- lsls r1, r5, 2
- adds r0, r1, r5
- lsls r0, 3
- adds r0, r2
- movs r2, 0x8
- ldrsh r0, [r0, r2]
- adds r6, r1, 0
- cmp r0, 0
- beq _0804F8FC
- b _0804F9EA
-_0804F8FC:
- ldr r0, [r4]
- ldr r1, _0804F93C @ =0x0000014b
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _0804F9BE
- bl Random
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _0804F940 @ =0x0000028f
- bl __udivsi3
- lsls r0, 24
- lsrs r1, r0, 24
- adds r3, r1, 0
- ldr r0, [r4]
- adds r0, 0x56
- movs r4, 0
- ldrsh r2, [r0, r4]
- ldr r0, _0804F944 @ =0x000001f3
- cmp r2, r0
- bgt _0804F964
- cmp r1, 0x4B
- bls _0804F950
- ldr r1, _0804F948 @ =gRecvCmds
- ldr r0, _0804F94C @ =0x00004523
- b _0804F954
- .align 2, 0
-_0804F934: .4byte gUnknown_03004854
-_0804F938: .4byte gTasks
-_0804F93C: .4byte 0x0000014b
-_0804F940: .4byte 0x0000028f
-_0804F944: .4byte 0x000001f3
-_0804F948: .4byte gRecvCmds
-_0804F94C: .4byte 0x00004523
-_0804F950:
- ldr r1, _0804F95C @ =gRecvCmds
- ldr r0, _0804F960 @ =0x00005432
-_0804F954:
- strh r0, [r1, 0x12]
- ldr r0, _0804F960 @ =0x00005432
- b _0804F9C2
- .align 2, 0
-_0804F95C: .4byte gRecvCmds
-_0804F960: .4byte 0x00005432
-_0804F964:
- ldr r0, _0804F980 @ =0x000005db
- cmp r2, r0
- bgt _0804F992
- cmp r1, 0x50
- bhi _0804F9BE
- adds r0, r1, 0
- subs r0, 0x15
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3B
- bhi _0804F98C
- ldr r1, _0804F984 @ =gRecvCmds
- ldr r0, _0804F988 @ =0x00005432
- b _0804F9C2
- .align 2, 0
-_0804F980: .4byte 0x000005db
-_0804F984: .4byte gRecvCmds
-_0804F988: .4byte 0x00005432
-_0804F98C:
- cmp r1, 0x9
- bhi _0804F9C4
- b _0804F9B4
-_0804F992:
- cmp r1, 0x5A
- bhi _0804F9BE
- adds r0, r1, 0
- subs r0, 0x47
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x13
- bhi _0804F9B0
- ldr r1, _0804F9A8 @ =gRecvCmds
- ldr r0, _0804F9AC @ =0x00005432
- b _0804F9C2
- .align 2, 0
-_0804F9A8: .4byte gRecvCmds
-_0804F9AC: .4byte 0x00005432
-_0804F9B0:
- cmp r3, 0x1D
- bhi _0804F9C4
-_0804F9B4:
- movs r0, 0x1
- movs r1, 0x5
- bl sub_804F890
- b _0804F9C4
-_0804F9BE:
- ldr r1, _0804F9D0 @ =gRecvCmds
- ldr r0, _0804F9D4 @ =0x00004523
-_0804F9C2:
- strh r0, [r1, 0x12]
-_0804F9C4:
- ldr r0, _0804F9D8 @ =gTasks
- adds r1, r6, r5
- lsls r1, 3
- adds r1, r0
- movs r0, 0x1
- b _0804F9E8
- .align 2, 0
-_0804F9D0: .4byte gRecvCmds
-_0804F9D4: .4byte 0x00004523
-_0804F9D8: .4byte gTasks
-_0804F9DC:
- ldr r0, _0804F9F0 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- movs r0, 0
-_0804F9E8:
- strh r0, [r1, 0x8]
-_0804F9EA:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F9F0: .4byte gTasks
- thumb_func_end sub_804F8C8
-
- thumb_func_start sub_804F9F4
-sub_804F9F4: @ 804F9F4
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r6, _0804FA78 @ =gUnknown_03004854
- ldr r3, [r6]
- adds r0, r3, 0
- adds r0, 0x54
- ldrh r0, [r0]
- movs r1, 0xC0
- lsls r1, 5
- adds r0, r1
- ldr r1, _0804FA7C @ =0x0000ffff
- ands r0, r1
- adds r1, r3, 0
- adds r1, 0xA6
- ldrb r1, [r1]
- lsrs r2, r0, 8
- ldr r0, _0804FA80 @ =gUnknown_08216303
- adds r1, r0
- ldrb r1, [r1]
- adds r0, r1, 0
- adds r0, 0x14
- cmp r2, r0
- bls _0804FB04
- adds r0, 0x14
- cmp r2, r0
- bcs _0804FB04
- ldr r2, _0804FA84 @ =gTasks
- lsls r1, r4, 2
- adds r0, r1, r4
- lsls r0, 3
- adds r2, r0, r2
- movs r5, 0x8
- ldrsh r0, [r2, r5]
- adds r5, r1, 0
- cmp r0, 0
- bne _0804FB12
- ldr r1, _0804FA88 @ =0x0000014b
- adds r0, r3, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _0804FAF0
- bl Random
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _0804FA8C @ =0x0000028f
- bl __udivsi3
- lsls r0, 24
- lsrs r2, r0, 24
- adds r3, r2, 0
- ldr r0, [r6]
- adds r0, 0x56
- movs r6, 0
- ldrsh r1, [r0, r6]
- ldr r0, _0804FA90 @ =0x000001f3
- cmp r1, r0
- bgt _0804FAAC
- cmp r2, 0x42
- bls _0804FA9C
- ldr r1, _0804FA94 @ =gRecvCmds
- ldr r0, _0804FA98 @ =0x00004523
- strh r0, [r1, 0x14]
- b _0804FAD4
- .align 2, 0
-_0804FA78: .4byte gUnknown_03004854
-_0804FA7C: .4byte 0x0000ffff
-_0804FA80: .4byte gUnknown_08216303
-_0804FA84: .4byte gTasks
-_0804FA88: .4byte 0x0000014b
-_0804FA8C: .4byte 0x0000028f
-_0804FA90: .4byte 0x000001f3
-_0804FA94: .4byte gRecvCmds
-_0804FA98: .4byte 0x00004523
-_0804FA9C:
- ldr r1, _0804FAA4 @ =gRecvCmds
- ldr r0, _0804FAA8 @ =0x00005432
- strh r0, [r1, 0x14]
- b _0804FAD4
- .align 2, 0
-_0804FAA4: .4byte gRecvCmds
-_0804FAA8: .4byte 0x00005432
-_0804FAAC:
- cmp r2, 0x41
- bls _0804FAB6
- ldr r1, _0804FAE0 @ =gRecvCmds
- ldr r0, _0804FAE4 @ =0x00004523
- strh r0, [r1, 0x14]
-_0804FAB6:
- adds r0, r2, 0
- subs r0, 0x29
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x18
- bhi _0804FAC8
- ldr r1, _0804FAE0 @ =gRecvCmds
- ldr r0, _0804FAE8 @ =0x00005432
- strh r0, [r1, 0x14]
-_0804FAC8:
- cmp r3, 0x9
- bhi _0804FAD4
- movs r0, 0x2
- movs r1, 0x5
- bl sub_804F890
-_0804FAD4:
- ldr r0, _0804FAEC @ =gTasks
- adds r1, r5, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0x1
- b _0804FB10
- .align 2, 0
-_0804FAE0: .4byte gRecvCmds
-_0804FAE4: .4byte 0x00004523
-_0804FAE8: .4byte 0x00005432
-_0804FAEC: .4byte gTasks
-_0804FAF0:
- ldr r0, _0804FAFC @ =gRecvCmds
- ldr r1, _0804FB00 @ =0x00004523
- strh r1, [r0, 0x14]
- movs r0, 0x1
- strh r0, [r2, 0x8]
- b _0804FB12
- .align 2, 0
-_0804FAFC: .4byte gRecvCmds
-_0804FB00: .4byte 0x00004523
-_0804FB04:
- ldr r0, _0804FB18 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0
-_0804FB10:
- strh r0, [r1, 0x8]
-_0804FB12:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804FB18: .4byte gTasks
- thumb_func_end sub_804F9F4
-
- thumb_func_start sub_804FB1C
-sub_804FB1C: @ 804FB1C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r5, _0804FB9C @ =gUnknown_03004854
- ldr r3, [r5]
- adds r0, r3, 0
- adds r0, 0x54
- ldrh r0, [r0]
- movs r1, 0xC0
- lsls r1, 5
- adds r0, r1
- ldr r1, _0804FBA0 @ =0x0000ffff
- ands r0, r1
- adds r1, r3, 0
- adds r1, 0xA8
- ldrb r1, [r1]
- lsrs r2, r0, 8
- ldr r0, _0804FBA4 @ =gUnknown_08216303
- adds r1, r0
- ldrb r1, [r1]
- adds r0, r1, 0
- adds r0, 0x14
- cmp r2, r0
- bls _0804FC30
- adds r0, 0x14
- cmp r2, r0
- bcs _0804FC30
- ldr r2, _0804FBA8 @ =gTasks
- lsls r1, r4, 2
- adds r0, r1, r4
- lsls r0, 3
- adds r2, r0, r2
- movs r6, 0x8
- ldrsh r0, [r2, r6]
- adds r6, r1, 0
- cmp r0, 0
- bne _0804FC3E
- ldr r1, _0804FBAC @ =0x0000014b
- adds r0, r3, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _0804FC1C
- bl Random
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _0804FBB0 @ =0x0000028f
- bl __udivsi3
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, [r5]
- adds r0, 0x56
- movs r3, 0
- ldrsh r1, [r0, r3]
- ldr r0, _0804FBB4 @ =0x000001f3
- cmp r1, r0
- bgt _0804FBD0
- cmp r2, 0x58
- bls _0804FBC0
- ldr r1, _0804FBB8 @ =gRecvCmds
- ldr r0, _0804FBBC @ =0x00004523
- strh r0, [r1, 0x16]
- b _0804FC02
- .align 2, 0
-_0804FB9C: .4byte gUnknown_03004854
-_0804FBA0: .4byte 0x0000ffff
-_0804FBA4: .4byte gUnknown_08216303
-_0804FBA8: .4byte gTasks
-_0804FBAC: .4byte 0x0000014b
-_0804FBB0: .4byte 0x0000028f
-_0804FBB4: .4byte 0x000001f3
-_0804FBB8: .4byte gRecvCmds
-_0804FBBC: .4byte 0x00004523
-_0804FBC0:
- ldr r1, _0804FBC8 @ =gRecvCmds
- ldr r0, _0804FBCC @ =0x00005432
- strh r0, [r1, 0x16]
- b _0804FC02
- .align 2, 0
-_0804FBC8: .4byte gRecvCmds
-_0804FBCC: .4byte 0x00005432
-_0804FBD0:
- cmp r2, 0x3C
- bls _0804FBE4
- ldr r1, _0804FBDC @ =gRecvCmds
- ldr r0, _0804FBE0 @ =0x00004523
- b _0804FBF4
- .align 2, 0
-_0804FBDC: .4byte gRecvCmds
-_0804FBE0: .4byte 0x00004523
-_0804FBE4:
- adds r0, r2, 0
- subs r0, 0x38
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _0804FBF6
- ldr r1, _0804FC10 @ =gRecvCmds
- ldr r0, _0804FC14 @ =0x00005432
-_0804FBF4:
- strh r0, [r1, 0x16]
-_0804FBF6:
- cmp r2, 0x4
- bhi _0804FC02
- movs r0, 0x3
- movs r1, 0x5
- bl sub_804F890
-_0804FC02:
- ldr r0, _0804FC18 @ =gTasks
- adds r1, r6, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0x1
- b _0804FC3C
- .align 2, 0
-_0804FC10: .4byte gRecvCmds
-_0804FC14: .4byte 0x00005432
-_0804FC18: .4byte gTasks
-_0804FC1C:
- ldr r0, _0804FC28 @ =gRecvCmds
- ldr r1, _0804FC2C @ =0x00004523
- strh r1, [r0, 0x16]
- movs r0, 0x1
- strh r0, [r2, 0x8]
- b _0804FC3E
- .align 2, 0
-_0804FC28: .4byte gRecvCmds
-_0804FC2C: .4byte 0x00004523
-_0804FC30:
- ldr r0, _0804FC44 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0
-_0804FC3C:
- strh r0, [r1, 0x8]
-_0804FC3E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804FC44: .4byte gTasks
- thumb_func_end sub_804FB1C
-
- thumb_func_start sub_804FC48
-sub_804FC48: @ 804FC48
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 16
- lsrs r7, r0, 16
- mov r8, r7
- lsls r1, 24
- ldr r0, _0804FCBC @ =gSpriteTemplate_821645C
- ldr r4, _0804FCC0 @ =gUnknown_082162E4
- lsrs r1, 23
- adds r2, r1, r4
- ldrb r6, [r2]
- ldr r5, _0804FCC4 @ =gUnknown_082162CC
- adds r2, r1, r5
- movs r3, 0
- ldrsb r3, [r2, r3]
- lsls r2, r3, 2
- adds r2, r3
- lsls r2, 1
- subs r6, r2
- adds r4, 0x1
- adds r4, r1, r4
- ldrb r2, [r4]
- adds r5, 0x1
- adds r1, r5
- movs r3, 0
- ldrsb r3, [r1, r3]
- lsls r1, r3, 2
- adds r1, r3
- lsls r1, 1
- subs r2, r1
- adds r1, r6, 0
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- adds r2, r1, 0
- ldr r0, _0804FCC8 @ =0x00004523
- cmp r7, r0
- bne _0804FCD4
- lsls r4, r1, 4
- adds r4, r1
- lsls r4, 2
- ldr r5, _0804FCCC @ =gSprites
- adds r0, r4, r5
- movs r1, 0x2
- bl StartSpriteAnim
- adds r5, 0x1C
- adds r4, r5
- ldr r0, _0804FCD0 @ =sub_8051684
- str r0, [r4]
- movs r0, 0x28
- bl PlaySE
- b _0804FD18
- .align 2, 0
-_0804FCBC: .4byte gSpriteTemplate_821645C
-_0804FCC0: .4byte gUnknown_082162E4
-_0804FCC4: .4byte gUnknown_082162CC
-_0804FCC8: .4byte 0x00004523
-_0804FCCC: .4byte gSprites
-_0804FCD0: .4byte sub_8051684
-_0804FCD4:
- ldr r0, _0804FCF4 @ =0x00005432
- cmp r7, r0
- bne _0804FCFC
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0804FCF8 @ =gSprites
- adds r0, r1
- movs r1, 0
- bl StartSpriteAnim
- movs r0, 0x1F
- bl PlaySE
- b _0804FD18
- .align 2, 0
-_0804FCF4: .4byte 0x00005432
-_0804FCF8: .4byte gSprites
-_0804FCFC:
- ldr r0, _0804FD28 @ =0x00002345
- cmp r8, r0
- bne _0804FD18
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- ldr r1, _0804FD2C @ =gSprites
- adds r0, r1
- movs r1, 0x1
- bl StartSpriteAnim
- movs r0, 0x20
- bl PlaySE
-_0804FD18:
- bl sub_805156C
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804FD28: .4byte 0x00002345
-_0804FD2C: .4byte gSprites
- thumb_func_end sub_804FC48
-
- thumb_func_start sub_804FD30
-sub_804FD30: @ 804FD30
- push {r4-r7,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- adds r5, r4, 0
- bl sub_804E290
- ldr r0, _0804FD50 @ =0x00004523
- cmp r4, r0
- beq _0804FD64
- cmp r4, r0
- bgt _0804FD58
- ldr r0, _0804FD54 @ =0x00002345
- cmp r4, r0
- beq _0804FE34
- b _0804FE60
- .align 2, 0
-_0804FD50: .4byte 0x00004523
-_0804FD54: .4byte 0x00002345
-_0804FD58:
- ldr r0, _0804FD60 @ =0x00005432
- cmp r5, r0
- beq _0804FDFC
- b _0804FE60
- .align 2, 0
-_0804FD60: .4byte 0x00005432
-_0804FD64:
- ldr r7, _0804FD94 @ =gUnknown_03004854
- ldr r4, [r7]
- adds r5, r4, 0
- adds r5, 0x56
- ldrh r6, [r5]
- movs r0, 0
- ldrsh r1, [r5, r0]
- ldr r0, _0804FD98 @ =0x000005db
- cmp r1, r0
- bgt _0804FDA0
- ldr r1, _0804FD9C @ =gUnknown_082165DA
- adds r0, r4, 0
- adds r0, 0x88
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0xC0
- lsls r0, 1
- bl __divsi3
- adds r0, r6, r0
- strh r0, [r5]
- b _0804FE60
- .align 2, 0
-_0804FD94: .4byte gUnknown_03004854
-_0804FD98: .4byte 0x000005db
-_0804FD9C: .4byte gUnknown_082165DA
-_0804FDA0:
- ldr r1, _0804FDF8 @ =gUnknown_082165DA
- adds r0, r4, 0
- adds r0, 0x88
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x80
- bl __divsi3
- adds r0, r6, r0
- strh r0, [r5]
- movs r1, 0xA2
- lsls r1, 1
- adds r4, r1
- movs r1, 0
- ldrsh r0, [r5, r1]
- movs r1, 0x64
- bl __divsi3
- adds r1, r0, 0
- subs r1, 0xA
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_8051AC8
- ldr r0, [r7]
- movs r1, 0xA3
- lsls r1, 1
- adds r4, r0, r1
- adds r0, 0x56
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r1, 0x64
- bl __divsi3
- adds r1, r0, 0
- subs r1, 0xA
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_8051AC8
- b _0804FE60
- .align 2, 0
-_0804FDF8: .4byte gUnknown_082165DA
-_0804FDFC:
- ldr r0, _0804FE28 @ =gUnknown_03004854
- ldr r2, [r0]
- adds r4, r2, 0
- adds r4, 0x56
- ldrh r5, [r4]
- movs r0, 0
- ldrsh r1, [r4, r0]
- ldr r0, _0804FE2C @ =0x000005db
- cmp r1, r0
- bgt _0804FE60
- ldr r1, _0804FE30 @ =gUnknown_082165DA
- adds r0, r2, 0
- adds r0, 0x88
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x80
- lsls r0, 1
- bl __divsi3
- adds r0, r5, r0
- b _0804FE5E
- .align 2, 0
-_0804FE28: .4byte gUnknown_03004854
-_0804FE2C: .4byte 0x000005db
-_0804FE30: .4byte gUnknown_082165DA
-_0804FE34:
- ldr r0, _0804FE68 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r4, r0, 0
- adds r4, 0x56
- ldr r1, _0804FE6C @ =gUnknown_082165DA
- adds r0, 0x88
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x80
- lsls r0, 1
- bl __divsi3
- ldrh r1, [r4]
- subs r1, r0
- strh r1, [r4]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x7F
- bgt _0804FE60
- movs r0, 0x80
-_0804FE5E:
- strh r0, [r4]
-_0804FE60:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804FE68: .4byte gUnknown_03004854
-_0804FE6C: .4byte gUnknown_082165DA
- thumb_func_end sub_804FD30
-
- thumb_func_start sub_804FE70
-sub_804FE70: @ 804FE70
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r0, _0804FF40 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0
- beq _0804FEB6
- ldr r3, _0804FF44 @ =gSendCmd
- ldrh r0, [r3, 0x4]
- ldr r2, _0804FF48 @ =gRecvCmds
- cmp r0, 0
- beq _0804FE98
- movs r1, 0
- strh r0, [r2, 0x10]
- ldr r0, _0804FF4C @ =0x00004444
- strh r0, [r2]
- strh r1, [r3, 0x4]
-_0804FE98:
- ldr r0, _0804FF48 @ =gRecvCmds
- ldr r3, _0804FF4C @ =0x00004444
- adds r1, r2, 0x2
- adds r2, r0, 0
- adds r2, 0x12
- movs r6, 0x2
-_0804FEA4:
- ldrh r0, [r2]
- cmp r0, 0
- beq _0804FEAC
- strh r3, [r1]
-_0804FEAC:
- adds r1, 0x2
- adds r2, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _0804FEA4
-_0804FEB6:
- movs r6, 0
- ldr r7, _0804FF50 @ =gUnknown_03004854
- adds r1, r7, 0
- ldr r0, [r1]
- adds r0, 0x88
- ldrb r0, [r0]
- cmp r6, r0
- blt _0804FEC8
- b _0805005C
-_0804FEC8:
- movs r2, 0
- str r2, [sp]
- mov r9, r2
- ldr r0, _0804FF48 @ =gRecvCmds
- adds r0, 0x10
- mov r8, r0
- ldr r1, _0804FF54 @ =0x00005432
- mov r10, r1
-_0804FED8:
- ldr r2, [sp]
- ldr r1, _0804FF48 @ =gRecvCmds
- adds r0, r2, r1
- ldrh r1, [r0]
- ldr r0, _0804FF4C @ =0x00004444
- cmp r1, r0
- beq _0804FEE8
- b _0805003E
-_0804FEE8:
- ldr r0, [r7]
- adds r0, 0xA2
- adds r0, r2
- ldrh r5, [r0]
- mov r2, r8
- ldrh r4, [r2]
- ldr r0, _0804FF58 @ =0x00004523
- cmp r4, r0
- bne _0804FF60
- bl sub_804FD30
- ldr r0, [r7]
- movs r1, 0x9F
- lsls r1, 1
- adds r4, r0, r1
- adds r0, 0x56
- movs r2, 0
- ldrsh r0, [r0, r2]
- movs r1, 0x37
- bl __divsi3
- ldrh r1, [r4]
- adds r1, r0
- strh r1, [r4]
- lsls r1, 16
- ldr r0, _0804FF5C @ =0x03e70000
- cmp r1, r0
- bls _0804FF26
- movs r0, 0xFA
- lsls r0, 2
- strh r0, [r4]
-_0804FF26:
- lsls r1, r5, 24
- lsrs r1, 24
- ldr r0, _0804FF58 @ =0x00004523
- bl sub_804FC48
- ldr r1, [r7]
- movs r0, 0xA6
- lsls r0, 1
- adds r1, r0
- add r1, r9
- ldrh r0, [r1]
- adds r0, 0x1
- b _0804FFCA
- .align 2, 0
-_0804FF40: .4byte gSpecialVar_0x8004
-_0804FF44: .4byte gSendCmd
-_0804FF48: .4byte gRecvCmds
-_0804FF4C: .4byte 0x00004444
-_0804FF50: .4byte gUnknown_03004854
-_0804FF54: .4byte 0x00005432
-_0804FF58: .4byte 0x00004523
-_0804FF5C: .4byte 0x03e70000
-_0804FF60:
- cmp r4, r10
- bne _0804FF9E
- mov r0, r10
- bl sub_804FD30
- ldr r0, [r7]
- movs r1, 0x9F
- lsls r1, 1
- adds r4, r0, r1
- adds r0, 0x56
- movs r2, 0
- ldrsh r0, [r0, r2]
- movs r1, 0x46
- bl __divsi3
- ldrh r1, [r4]
- adds r1, r0
- strh r1, [r4]
- lsls r1, r5, 24
- lsrs r1, 24
- mov r0, r10
- bl sub_804FC48
- ldr r1, [r7]
- movs r0, 0xA7
- lsls r0, 1
- adds r1, r0
- add r1, r9
- ldrh r0, [r1]
- adds r0, 0x1
- b _0804FFCA
-_0804FF9E:
- ldr r0, _08050018 @ =0x00002345
- cmp r4, r0
- bne _0804FFD6
- lsls r1, r5, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_804FC48
- adds r0, r4, 0
- bl sub_804FD30
- ldr r0, [r7]
- movs r1, 0xA8
- lsls r1, 1
- adds r0, r1
- mov r2, r9
- adds r1, r0, r2
- ldrh r2, [r1]
- ldr r0, _0805001C @ =0x000003e6
- cmp r2, r0
- bhi _0804FFCC
- adds r0, r2, 0x1
-_0804FFCA:
- strh r0, [r1]
-_0804FFCC:
- mov r0, r8
- ldrh r1, [r0]
- ldr r0, _08050018 @ =0x00002345
- cmp r1, r0
- beq _0804FFE4
-_0804FFD6:
- mov r1, r8
- ldrh r0, [r1]
- ldr r2, _08050020 @ =0x00004523
- cmp r0, r2
- beq _0804FFE4
- cmp r0, r10
- bne _0805003E
-_0804FFE4:
- ldr r0, _08050024 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r2, r0, 0
- adds r2, 0x56
- movs r0, 0
- ldrsh r1, [r2, r0]
- ldr r0, _08050028 @ =0x000005dc
- cmp r1, r0
- ble _08050034
- adds r0, r1, 0
- ldr r2, _0805002C @ =0xfffffd12
- adds r0, r2
- movs r1, 0x14
- bl __divsi3
- adds r1, r0, 0
- movs r0, 0x80
- lsls r0, 1
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- ldr r0, _08050030 @ =gMPlay_BGM
- bl m4aMPlayTempoControl
- b _0805003E
- .align 2, 0
-_08050018: .4byte 0x00002345
-_0805001C: .4byte 0x000003e6
-_08050020: .4byte 0x00004523
-_08050024: .4byte gUnknown_03004854
-_08050028: .4byte 0x000005dc
-_0805002C: .4byte 0xfffffd12
-_08050030: .4byte gMPlay_BGM
-_08050034:
- ldr r0, _08050098 @ =gMPlay_BGM
- movs r1, 0x80
- lsls r1, 1
- bl m4aMPlayTempoControl
-_0805003E:
- ldr r1, [sp]
- adds r1, 0x2
- str r1, [sp]
- movs r2, 0x6
- add r9, r2
- movs r0, 0x2
- add r8, r0
- adds r6, 0x1
- ldr r7, _0805009C @ =gUnknown_03004854
- ldr r0, [r7]
- adds r0, 0x88
- ldrb r0, [r0]
- cmp r6, r0
- bge _0805005C
- b _0804FED8
-_0805005C:
- ldr r0, _080500A0 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0
- beq _08050088
- movs r6, 0
- ldr r3, _0805009C @ =gUnknown_03004854
- ldr r0, [r3]
- adds r0, 0x88
- ldrb r0, [r0]
- cmp r6, r0
- bge _08050088
- movs r2, 0
- ldr r1, _080500A4 @ =gRecvCmds
-_08050076:
- strh r2, [r1]
- strh r2, [r1, 0x10]
- adds r1, 0x2
- adds r6, 0x1
- ldr r0, [r3]
- adds r0, 0x88
- ldrb r0, [r0]
- cmp r6, r0
- blt _08050076
-_08050088:
- 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
-_08050098: .4byte gMPlay_BGM
-_0805009C: .4byte gUnknown_03004854
-_080500A0: .4byte gSpecialVar_0x8004
-_080500A4: .4byte gRecvCmds
- thumb_func_end sub_804FE70
-
- thumb_func_start sub_80500A8
-sub_80500A8: @ 80500A8
- push {r4-r6,lr}
- movs r6, 0
- ldr r5, _080500EC @ =gUnknown_03004854
- ldr r4, [r5]
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r0, 23
- adds r4, 0xA2
- adds r4, r0
- ldrb r3, [r4]
- ldr r0, [r5]
- adds r0, 0x6F
- ldrb r0, [r0]
- cmp r0, 0
- bne _0805018A
- ldr r0, _080500F0 @ =gSaveBlock2
- ldrb r0, [r0, 0x13]
- cmp r0, 0x2
- bne _080500FC
- ldr r2, _080500F4 @ =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0805010A
- ldrh r0, [r2, 0x28]
- ldr r1, _080500F8 @ =0x00000201
- bics r1, r0
- negs r0, r1
- orrs r0, r1
- lsrs r6, r0, 31
- b _0805010A
- .align 2, 0
-_080500EC: .4byte gUnknown_03004854
-_080500F0: .4byte gSaveBlock2
-_080500F4: .4byte gMain
-_080500F8: .4byte 0x00000201
-_080500FC:
- ldr r0, _0805015C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0805010A
- movs r6, 0x1
-_0805010A:
- cmp r6, 0
- beq _0805018A
- ldr r4, _08050160 @ =gUnknown_03004854
- ldr r1, [r4]
- lsls r2, r3, 1
- adds r0, r1, 0
- adds r0, 0x9A
- adds r0, r2
- adds r1, 0x5C
- ldrh r0, [r0]
- adds r1, r0
- ldrb r1, [r1]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08050164 @ =gSprites
- adds r0, r1
- adds r1, r3, 0x4
- lsls r1, 24
- lsrs r1, 24
- bl StartSpriteAnim
- ldr r0, [r4]
- adds r0, 0x54
- ldrh r4, [r0]
- bl GetMultiplayerId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl task_tutorial_oak_boy_girl
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _08050170
- ldr r1, _08050168 @ =gSendCmd
- ldr r0, _0805016C @ =0x00004523
- b _08050188
- .align 2, 0
-_0805015C: .4byte gMain
-_08050160: .4byte gUnknown_03004854
-_08050164: .4byte gSprites
-_08050168: .4byte gSendCmd
-_0805016C: .4byte 0x00004523
-_08050170:
- cmp r0, 0x1
- bne _08050184
- ldr r1, _0805017C @ =gSendCmd
- ldr r0, _08050180 @ =0x00005432
- b _08050188
- .align 2, 0
-_0805017C: .4byte gSendCmd
-_08050180: .4byte 0x00005432
-_08050184:
- ldr r1, _080501E4 @ =gSendCmd
- ldr r0, _080501E8 @ =0x00002345
-_08050188:
- strh r0, [r1, 0x4]
-_0805018A:
- ldr r2, _080501EC @ =gUnknown_03004854
- ldr r1, [r2]
- adds r1, 0x7E
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- bls _080501BA
- ldr r0, [r2]
- adds r1, r0, 0
- adds r1, 0x56
- ldrh r3, [r1]
- movs r4, 0
- ldrsh r0, [r1, r4]
- cmp r0, 0x80
- ble _080501B2
- subs r0, r3, 0x1
- strh r0, [r1]
-_080501B2:
- ldr r0, [r2]
- adds r0, 0x7E
- movs r1, 0
- strb r1, [r0]
-_080501BA:
- ldr r0, _080501F0 @ =gUnknown_020297ED
- ldrb r0, [r0]
- cmp r0, 0
- beq _080501DE
- ldr r0, _080501F4 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- lsls r0, 2
- ands r0, r1
- cmp r0, 0
- beq _080501DE
- ldr r0, [r2]
- ldr r1, _080501F8 @ =0x0000014b
- adds r2, r0, r1
- ldrb r0, [r2]
- movs r1, 0x1
- eors r0, r1
- strb r0, [r2]
-_080501DE:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080501E4: .4byte gSendCmd
-_080501E8: .4byte 0x00002345
-_080501EC: .4byte gUnknown_03004854
-_080501F0: .4byte gUnknown_020297ED
-_080501F4: .4byte gMain
-_080501F8: .4byte 0x0000014b
- thumb_func_end sub_80500A8
-
- thumb_func_start sub_80501FC
-sub_80501FC: @ 80501FC
- push {r4-r6,lr}
- bl sub_8051474
- ldr r4, _08050294 @ =gUnknown_03004854
- ldr r0, [r4]
- movs r1, 0x96
- lsls r1, 1
- adds r2, r0, r1
- ldr r1, [r2]
- ldr r0, _08050298 @ =0x00057e03
- cmp r1, r0
- bhi _08050218
- adds r0, r1, 0x1
- str r0, [r2]
-_08050218:
- bl sub_80500A8
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x56
- ldrh r0, [r0]
- movs r5, 0x9F
- lsls r5, 1
- adds r1, r5
- ldrh r1, [r1]
- bl SetLinkDebugValues
- bl sub_804FE70
- ldr r0, [r4]
- adds r0, r5
- ldrh r0, [r0]
- movs r6, 0xFA
- lsls r6, 2
- adds r1, r6, 0
- bl sub_805194C
- ldr r0, [r4]
- adds r0, 0x56
- ldrh r0, [r0]
- bl sub_8051A3C
- bl sub_8051B18
- bl sub_805123C
- ldr r2, [r4]
- adds r3, r2, 0
- adds r3, 0x6F
- ldrb r0, [r3]
- cmp r0, 0
- bne _0805027E
- movs r1, 0xA0
- lsls r1, 1
- adds r0, r2, r1
- ldrh r1, [r0]
- ldr r0, _0805029C @ =0x000003e7
- cmp r1, r0
- bls _0805027E
- adds r0, r2, r5
- strh r6, [r0]
- movs r0, 0x1
- strb r0, [r3]
- ldr r0, _080502A0 @ =sub_8050954
- bl SetMainCallback2
-_0805027E:
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08050294: .4byte gUnknown_03004854
-_08050298: .4byte 0x00057e03
-_0805029C: .4byte 0x000003e7
-_080502A0: .4byte sub_8050954
- thumb_func_end sub_80501FC
-
- thumb_func_start help_system_is_not_first_time
-help_system_is_not_first_time: @ 80502A4
- push {r4,r5,lr}
- lsls r1, 24
- lsls r2, 24
- lsrs r1, 20
- adds r4, r1, r0
- lsrs r2, 20
- adds r5, r2, r0
- ldrh r0, [r4]
- ldrh r1, [r5]
- cmp r0, r1
- bne _080502E2
- adds r0, r4, 0x2
- adds r1, r5, 0x2
- bl StringCompare
- cmp r0, 0
- bne _080502F0
- ldr r0, [r4, 0x8]
- ldr r2, _080502E8 @ =0xffffff00
- ands r0, r2
- ldr r1, [r5, 0x8]
- ands r1, r2
- cmp r0, r1
- bne _080502F0
- ldr r0, [r4, 0xC]
- ldr r2, _080502EC @ =0x00ffffff
- ands r0, r2
- ldr r1, [r5, 0xC]
- ands r1, r2
- cmp r0, r1
- bne _080502F0
-_080502E2:
- movs r0, 0x1
- b _080502F2
- .align 2, 0
-_080502E8: .4byte 0xffffff00
-_080502EC: .4byte 0x00ffffff
-_080502F0:
- movs r0, 0
-_080502F2:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end help_system_is_not_first_time
-
- thumb_func_start sub_80502F8
-sub_80502F8: @ 80502F8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- mov r10, r0
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x10]
- lsls r3, 24
- lsrs r3, 24
- mov r2, sp
- movs r4, 0x5
-_08050314:
- ldrh r0, [r1]
- strh r0, [r2]
- adds r1, 0x2
- adds r2, 0x2
- subs r4, 0x1
- cmp r4, 0
- bge _08050314
- movs r6, 0
- mov r1, sp
- movs r4, 0x4
-_08050328:
- movs r2, 0
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _08050332
- adds r6, 0x1
-_08050332:
- adds r1, 0x2
- subs r4, 0x1
- cmp r4, 0
- bge _08050328
- cmp r6, 0x5
- beq _08050386
- cmp r3, 0x3
- bhi _08050386
- movs r4, 0
- ldr r3, [sp, 0x10]
- cmp r4, r3
- bge _0805039E
- mov r3, r10
-_0805034C:
- movs r6, 0
- ldr r7, [sp, 0x10]
- cmp r6, r7
- bge _08050394
- mov r9, r3
- mov r5, r10
- lsls r0, r4, 24
- mov r8, r0
-_0805035C:
- mov r1, r9
- ldrh r0, [r1]
- ldrh r2, [r5]
- cmp r0, r2
- bne _0805038A
- cmp r4, r6
- beq _0805038A
- cmp r0, 0xAF
- bne _08050386
- lsls r2, r6, 24
- lsrs r2, 24
- mov r0, r10
- mov r7, r8
- lsrs r1, r7, 24
- str r3, [sp, 0xC]
- bl help_system_is_not_first_time
- lsls r0, 24
- ldr r3, [sp, 0xC]
- cmp r0, 0
- beq _0805038A
-_08050386:
- movs r0, 0xC
- b _080504DE
-_0805038A:
- adds r5, 0x10
- adds r6, 0x1
- ldr r0, [sp, 0x10]
- cmp r6, r0
- blt _0805035C
-_08050394:
- adds r3, 0x10
- adds r4, 0x1
- ldr r1, [sp, 0x10]
- cmp r4, r1
- blt _0805034C
-_0805039E:
- movs r2, 0
- mov r1, sp
- movs r4, 0x4
-_080503A4:
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0
- ble _080503B2
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
-_080503B2:
- adds r1, 0x2
- subs r4, 0x1
- cmp r4, 0
- bge _080503A4
- cmp r2, 0x3
- bls _080503C2
- movs r0, 0xD
- b _080504DE
-_080503C2:
- cmp r2, 0x3
- bne _080503CA
- movs r0, 0xB
- b _080504DE
-_080503CA:
- movs r4, 0
- mov r1, sp
-_080503CE:
- movs r7, 0
- ldrsh r0, [r1, r7]
- cmp r0, 0x32
- ble _080503D8
- b _080504D8
-_080503D8:
- adds r1, 0x2
- adds r4, 0x1
- cmp r4, 0x4
- ble _080503CE
- cmp r2, 0x1
- bne _0805042A
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- ble _080503F2
- movs r0, 0x1
- b _080504DE
-_080503F2:
- mov r0, sp
- ldrh r0, [r0, 0x2]
- lsls r0, 16
- cmp r0, 0
- ble _08050400
- movs r0, 0x2
- b _080504DE
-_08050400:
- mov r0, sp
- movs r3, 0x4
- ldrsh r0, [r0, r3]
- cmp r0, 0
- ble _0805040E
- movs r0, 0x3
- b _080504DE
-_0805040E:
- mov r0, sp
- movs r4, 0x6
- ldrsh r0, [r0, r4]
- cmp r0, 0
- ble _0805041C
- movs r0, 0x4
- b _080504DE
-_0805041C:
- mov r0, sp
- movs r7, 0x8
- ldrsh r0, [r0, r7]
- cmp r0, 0
- ble _0805042A
- movs r0, 0x5
- b _080504DE
-_0805042A:
- cmp r2, 0x2
- bne _080504DC
- movs r4, 0
- ldr r5, _08050474 @ =gUnknown_03000520
- mov r1, sp
- adds r2, r5, 0
-_08050436:
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0
- ble _08050442
- strh r4, [r2]
- adds r2, 0x2
-_08050442:
- adds r1, 0x2
- adds r4, 0x1
- cmp r4, 0x4
- ble _08050436
- movs r4, 0
- ldrsh r3, [r5, r4]
- lsls r0, r3, 1
- mov r7, sp
- adds r1, r7, r0
- movs r0, 0x2
- ldrsh r2, [r5, r0]
- lsls r0, r2, 1
- add r0, sp
- movs r4, 0
- ldrsh r1, [r1, r4]
- movs r7, 0
- ldrsh r0, [r0, r7]
- cmp r1, r0
- blt _08050498
- adds r0, r3, 0
- cmp r0, 0
- bne _08050478
- lsls r0, r2, 16
- b _080504A2
- .align 2, 0
-_08050474: .4byte gUnknown_03000520
-_08050478:
- cmp r0, 0x1
- bne _08050480
- lsls r0, r2, 16
- b _080504AE
-_08050480:
- cmp r0, 0x2
- bne _08050488
- lsls r0, r2, 16
- b _080504BA
-_08050488:
- cmp r0, 0x3
- bne _08050490
- lsls r0, r2, 16
- b _080504C6
-_08050490:
- cmp r0, 0x4
- bne _080504DC
- lsls r0, r2, 16
- b _080504D2
-_08050498:
- movs r2, 0x2
- ldrsh r0, [r5, r2]
- cmp r0, 0
- bne _080504A8
- lsls r0, r3, 16
-_080504A2:
- movs r1, 0x6
- orrs r0, r1
- b _080504DE
-_080504A8:
- cmp r0, 0x1
- bne _080504B4
- lsls r0, r3, 16
-_080504AE:
- movs r1, 0x7
- orrs r0, r1
- b _080504DE
-_080504B4:
- cmp r0, 0x2
- bne _080504C0
- lsls r0, r3, 16
-_080504BA:
- movs r1, 0x8
- orrs r0, r1
- b _080504DE
-_080504C0:
- cmp r0, 0x3
- bne _080504CC
- lsls r0, r3, 16
-_080504C6:
- movs r1, 0x9
- orrs r0, r1
- b _080504DE
-_080504CC:
- cmp r0, 0x4
- bne _080504DC
- lsls r0, r3, 16
-_080504D2:
- movs r1, 0xA
- orrs r0, r1
- b _080504DE
-_080504D8:
- movs r0, 0xE
- b _080504DE
-_080504DC:
- movs r0, 0
-_080504DE:
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80502F8
-
- thumb_func_start sub_80504F0
-sub_80504F0: @ 80504F0
- ldr r1, _080504F8 @ =gUnknown_0300052C
- strh r0, [r1]
- bx lr
- .align 2, 0
-_080504F8: .4byte gUnknown_0300052C
- thumb_func_end sub_80504F0
-
- thumb_func_start unref_sub_80504FC
-unref_sub_80504FC: @ 80504FC
- ldr r0, _08050504 @ =gUnknown_0300052C
- movs r1, 0
- ldrsh r0, [r0, r1]
- bx lr
- .align 2, 0
-_08050504: .4byte gUnknown_0300052C
- thumb_func_end unref_sub_80504FC
-
- thumb_func_start sub_8050508
-sub_8050508: @ 8050508
- ldr r1, _08050510 @ =gUnknown_0300052E
- strh r0, [r1]
- bx lr
- .align 2, 0
-_08050510: .4byte gUnknown_0300052E
- thumb_func_end sub_8050508
-
- thumb_func_start unref_sub_8050514
-unref_sub_8050514: @ 8050514
- ldr r0, _0805051C @ =gUnknown_0300052E
- movs r1, 0
- ldrsh r0, [r0, r1]
- bx lr
- .align 2, 0
-_0805051C: .4byte gUnknown_0300052E
- thumb_func_end unref_sub_8050514
-
- thumb_func_start sub_8050520
-sub_8050520: @ 8050520
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- str r0, [sp]
- mov r8, r1
- str r3, [sp, 0x4]
- ldr r0, [sp, 0x30]
- lsls r2, 24
- lsrs r2, 24
- mov r9, r2
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0x8]
- ldr r7, _080505DC @ =gUnknown_03000510
- adds r2, r7, 0
- movs r1, 0
- adds r0, r7, 0
- adds r0, 0xA
-_0805054A:
- strh r1, [r0]
- subs r0, 0x2
- cmp r0, r2
- bge _0805054A
- movs r6, 0
- cmp r6, r9
- bge _08050580
- ldr r0, _080505DC @ =gUnknown_03000510
- mov r12, r0
- ldr r5, [sp]
- adds r5, 0x9
-_08050560:
- movs r3, 0
- adds r4, r5, 0
- mov r2, r12
-_08050566:
- adds r1, r4, r3
- ldrh r0, [r2]
- ldrb r1, [r1]
- adds r0, r1
- strh r0, [r2]
- adds r2, 0x2
- adds r3, 0x1
- cmp r3, 0x5
- ble _08050566
- adds r5, 0x10
- adds r6, 0x1
- cmp r6, r9
- blt _08050560
-_08050580:
- movs r1, 0
- ldrsh r3, [r7, r1]
- ldrh r0, [r7]
- ldrh r1, [r7, 0x2]
- subs r0, r1
- strh r0, [r7]
- ldrh r0, [r7, 0x4]
- subs r1, r0
- strh r1, [r7, 0x2]
- ldrh r1, [r7, 0x6]
- subs r0, r1
- strh r0, [r7, 0x4]
- ldrh r0, [r7, 0x8]
- subs r1, r0
- strh r1, [r7, 0x6]
- subs r0, r3
- strh r0, [r7, 0x8]
- movs r3, 0
- movs r2, 0
- adds r1, r7, 0
- movs r6, 0x4
-_080505AA:
- movs r4, 0
- ldrsh r0, [r1, r4]
- cmp r0, 0
- bge _080505B6
- strh r2, [r1]
- adds r3, 0x1
-_080505B6:
- adds r1, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _080505AA
- lsls r0, r3, 24
- lsrs r0, 24
- mov r10, r0
- movs r4, 0
- ldr r1, _080505DC @ =gUnknown_03000510
- movs r6, 0x4
-_080505CA:
- ldrh r2, [r1]
- movs r5, 0
- ldrsh r0, [r1, r5]
- cmp r0, 0
- ble _080505E4
- cmp r0, r3
- bge _080505E0
- strh r4, [r1]
- b _080505E4
- .align 2, 0
-_080505DC: .4byte gUnknown_03000510
-_080505E0:
- subs r0, r2, r3
- strh r0, [r1]
-_080505E4:
- adds r1, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _080505CA
- ldr r1, _080506C4 @ =gUnknown_03000510
- ldr r2, _080506C8 @ =gUnknown_03000530
- movs r6, 0x4
-_080505F2:
- movs r3, 0
- ldrsh r0, [r1, r3]
- stm r2!, {r0}
- adds r1, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _080505F2
- ldr r1, _080506CC @ =0x0000014d
- ldr r0, [sp, 0x8]
- bl __udivsi3
- lsls r0, 16
- lsrs r0, 16
- adds r3, r0, 0
- adds r3, 0x64
- ldr r4, _080506D0 @ =gUnknown_0300055C
- str r3, [r4]
- movs r6, 0x4
-_08050616:
- movs r0, 0
- ldrsh r5, [r7, r0]
- adds r0, r5, 0
- muls r0, r3
- movs r1, 0xA
- str r3, [sp, 0xC]
- bl __divsi3
- adds r5, r0, 0
- movs r1, 0xA
- bl __modsi3
- adds r4, r0, 0
- adds r0, r5, 0
- movs r1, 0xA
- bl __divsi3
- adds r5, r0, 0
- ldr r3, [sp, 0xC]
- cmp r4, 0x4
- ble _08050642
- adds r5, 0x1
-_08050642:
- strh r5, [r7]
- adds r7, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _08050616
- ldr r1, _080506C4 @ =gUnknown_03000510
- ldr r2, _080506D4 @ =gUnknown_03000548
- movs r6, 0x4
-_08050652:
- movs r3, 0
- ldrsh r0, [r1, r3]
- stm r2!, {r0}
- adds r1, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _08050652
- ldr r4, _080506C4 @ =gUnknown_03000510
- ldr r0, [sp]
- adds r1, r4, 0
- mov r2, r9
- mov r3, r10
- bl sub_80502F8
- mov r5, r8
- strb r0, [r5]
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- mov r1, r9
- bl __divsi3
- mov r3, r9
- subs r0, r3
- strh r0, [r4, 0xA]
- lsls r0, 16
- cmp r0, 0
- bge _0805068C
- movs r0, 0
- strh r0, [r4, 0xA]
-_0805068C:
- mov r5, r8
- ldrb r0, [r5]
- cmp r0, 0xC
- bne _080506E6
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xA
- bl __umodsi3
- lsls r0, 16
- lsrs r3, r0, 16
- movs r6, 0
- ldr r0, _080506D8 @ =gUnknown_082165DF
- adds r0, r3, r0
- ldrb r0, [r0]
- adds r1, r4, 0
- movs r4, 0x1
- movs r3, 0x2
-_080506B4:
- adds r2, r0, 0
- asrs r2, r6
- ands r2, r4
- cmp r2, 0
- beq _080506DC
- strh r3, [r1]
- b _080506DE
- .align 2, 0
-_080506C4: .4byte gUnknown_03000510
-_080506C8: .4byte gUnknown_03000530
-_080506CC: .4byte 0x0000014d
-_080506D0: .4byte gUnknown_0300055C
-_080506D4: .4byte gUnknown_03000548
-_080506D8: .4byte gUnknown_082165DF
-_080506DC:
- strh r2, [r1]
-_080506DE:
- adds r1, 0x2
- adds r6, 0x1
- cmp r6, 0x4
- ble _080506B4
-_080506E6:
- ldr r7, _08050740 @ =gUnknown_03000510
- movs r2, 0xFF
- adds r1, r7, 0
- movs r6, 0x5
-_080506EE:
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0xFF
- ble _080506F8
- strh r2, [r1]
-_080506F8:
- adds r1, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _080506EE
- ldrh r0, [r7]
- mov r4, r8
- strb r0, [r4, 0x1]
- ldrh r0, [r7, 0x2]
- strb r0, [r4, 0x2]
- ldrh r0, [r7, 0x4]
- strb r0, [r4, 0x3]
- ldrh r0, [r7, 0x6]
- strb r0, [r4, 0x4]
- ldrh r0, [r7, 0x8]
- strb r0, [r4, 0x5]
- ldrh r0, [r7, 0xA]
- strb r0, [r4, 0x6]
- movs r6, 0
- adds r2, r7, 0
-_0805071E:
- ldr r5, [sp, 0x4]
- adds r1, r5, r6
- ldrh r0, [r2]
- strb r0, [r1]
- adds r2, 0x2
- adds r6, 0x1
- cmp r6, 0x5
- ble _0805071E
- 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
-_08050740: .4byte gUnknown_03000510
- thumb_func_end sub_8050520
-
- thumb_func_start sub_8050744
-sub_8050744: @ 8050744
- push {r4,lr}
- sub sp, 0x4
- ldr r4, [sp, 0xC]
- lsls r2, 24
- lsrs r2, 24
- lsls r4, 16
- lsrs r4, 16
- str r4, [sp]
- bl sub_8050520
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8050744
-
- thumb_func_start sub_8050760
-sub_8050760: @ 8050760
- push {r4-r6,lr}
- ldr r0, _08050780 @ =gUnknown_03004854
- ldr r0, [r0]
- movs r2, 0x96
- lsls r2, 1
- adds r1, r0, r2
- ldrh r1, [r1]
- adds r0, 0x5A
- ldrh r4, [r0]
- movs r2, 0
- ldr r5, _08050784 @ =0x00000383
- cmp r1, r5
- bhi _08050788
- movs r2, 0x5
- b _080507DA
- .align 2, 0
-_08050780: .4byte gUnknown_03004854
-_08050784: .4byte 0x00000383
-_08050788:
- ldr r3, _0805079C @ =0xfffffc7c
- adds r0, r1, r3
- lsls r0, 16
- lsrs r0, 16
- ldr r3, _080507A0 @ =0x00000257
- cmp r0, r3
- bhi _080507A4
- movs r2, 0x4
- b _080507DA
- .align 2, 0
-_0805079C: .4byte 0xfffffc7c
-_080507A0: .4byte 0x00000257
-_080507A4:
- ldr r6, _080507B4 @ =0xfffffa24
- adds r0, r1, r6
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r3
- bhi _080507B8
- movs r2, 0x3
- b _080507DA
- .align 2, 0
-_080507B4: .4byte 0xfffffa24
-_080507B8:
- ldr r3, _080507C8 @ =0xfffff7cc
- adds r0, r1, r3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r5
- bhi _080507CC
- movs r2, 0x2
- b _080507DA
- .align 2, 0
-_080507C8: .4byte 0xfffff7cc
-_080507CC:
- ldr r6, _080507F8 @ =0xfffff31c
- adds r0, r1, r6
- lsls r0, 16
- ldr r1, _080507FC @ =0x012b0000
- cmp r0, r1
- bhi _080507DA
- movs r2, 0x1
-_080507DA:
- lsls r0, r2, 16
- asrs r0, 16
- bl sub_8050508
- movs r2, 0
- cmp r4, 0x40
- bhi _080508BC
- adds r0, r4, 0
- subs r0, 0x32
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _08050804
- ldr r2, _08050800 @ =0x0000ffff
- b _080508BC
- .align 2, 0
-_080507F8: .4byte 0xfffff31c
-_080507FC: .4byte 0x012b0000
-_08050800: .4byte 0x0000ffff
-_08050804:
- adds r0, r4, 0
- subs r0, 0x64
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _08050818
- ldr r2, _08050814 @ =0x0000fffe
- b _080508BC
- .align 2, 0
-_08050814: .4byte 0x0000fffe
-_08050818:
- adds r0, r4, 0
- subs r0, 0x96
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _0805082C
- ldr r2, _08050828 @ =0x0000fffd
- b _080508BC
- .align 2, 0
-_08050828: .4byte 0x0000fffd
-_0805082C:
- adds r0, r4, 0
- subs r0, 0xC8
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _08050840
- ldr r2, _0805083C @ =0x0000fffc
- b _080508BC
- .align 2, 0
-_0805083C: .4byte 0x0000fffc
-_08050840:
- adds r0, r4, 0
- subs r0, 0xFA
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _08050854
- ldr r2, _08050850 @ =0x0000fffb
- b _080508BC
- .align 2, 0
-_08050850: .4byte 0x0000fffb
-_08050854:
- ldr r1, _08050864 @ =0xfffffea2
- adds r0, r4, r1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _0805086C
- ldr r2, _08050868 @ =0x0000fffa
- b _080508BC
- .align 2, 0
-_08050864: .4byte 0xfffffea2
-_08050868: .4byte 0x0000fffa
-_0805086C:
- ldr r3, _0805087C @ =0xfffffe70
- adds r0, r4, r3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _08050884
- ldr r2, _08050880 @ =0x0000fff9
- b _080508BC
- .align 2, 0
-_0805087C: .4byte 0xfffffe70
-_08050880: .4byte 0x0000fff9
-_08050884:
- ldr r6, _08050894 @ =0xfffffe0c
- adds r0, r4, r6
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _0805089C
- ldr r2, _08050898 @ =0x0000fff8
- b _080508BC
- .align 2, 0
-_08050894: .4byte 0xfffffe0c
-_08050898: .4byte 0x0000fff8
-_0805089C:
- ldr r1, _080508AC @ =0xfffffdda
- adds r0, r4, r1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _080508B4
- ldr r2, _080508B0 @ =0x0000fff7
- b _080508BC
- .align 2, 0
-_080508AC: .4byte 0xfffffdda
-_080508B0: .4byte 0x0000fff7
-_080508B4:
- ldr r0, _080508CC @ =0x00000257
- cmp r4, r0
- bls _080508BC
- ldr r2, _080508D0 @ =0x0000fff6
-_080508BC:
- lsls r0, r2, 16
- asrs r0, 16
- bl sub_80504F0
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080508CC: .4byte 0x00000257
-_080508D0: .4byte 0x0000fff6
- thumb_func_end sub_8050760
-
- thumb_func_start sub_80508D4
-sub_80508D4: @ 80508D4
- push {lr}
- ldr r2, _080508F8 @ =gUnknown_03004854
- ldr r1, [r2]
- adds r1, 0xAA
- strb r0, [r1]
- ldr r0, [r2]
- adds r0, 0xAA
- ldrb r1, [r0]
- lsls r1, 28
- movs r0, 0x90
- lsls r0, 23
- adds r1, r0
- lsrs r1, 24
- movs r0, 0xC0
- bl sub_814A880
- pop {r0}
- bx r0
- .align 2, 0
-_080508F8: .4byte gUnknown_03004854
- thumb_func_end sub_80508D4
-
- thumb_func_start sub_80508FC
-sub_80508FC: @ 80508FC
- push {r4,lr}
- sub sp, 0x4
- ldr r4, _08050944 @ =gUnknown_03004854
- ldr r0, [r4]
- adds r0, 0xAA
- movs r1, 0
- strb r1, [r0]
- movs r0, 0x17
- movs r1, 0x8
- movs r2, 0x1C
- movs r3, 0xD
- bl MenuDrawTextWindow
- ldr r1, _08050948 @ =0x0000ffff
- ldr r3, _0805094C @ =0x00002d9f
- movs r0, 0x20
- str r0, [sp]
- movs r0, 0
- movs r2, 0xC
- bl sub_814A5C0
- ldr r0, _08050950 @ =gOtherText_YesNoTerminating
- movs r1, 0x18
- movs r2, 0x9
- bl MenuPrint
- ldr r0, [r4]
- adds r0, 0xAA
- ldrb r0, [r0]
- bl sub_80508D4
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08050944: .4byte gUnknown_03004854
-_08050948: .4byte 0x0000ffff
-_0805094C: .4byte 0x00002d9f
-_08050950: .4byte gOtherText_YesNoTerminating
- thumb_func_end sub_80508FC
-
- thumb_func_start sub_8050954
-sub_8050954: @ 8050954
- push {r4-r7,lr}
- bl sub_8051474
- bl GetMultiplayerId
- ldr r0, _08050978 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0x6F
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r0, 0xC
- bls _0805096E
- b _08050CB6
-_0805096E:
- lsls r0, 2
- ldr r1, _0805097C @ =_08050980
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08050978: .4byte gUnknown_03004854
-_0805097C: .4byte _08050980
- .align 2, 0
-_08050980:
- .4byte _080509B4
- .4byte _080509F8
- .4byte _08050A4C
- .4byte _08050A94
- .4byte _08050AD0
- .4byte _08050ADE
- .4byte _08050B08
- .4byte _08050B34
- .4byte _08050B42
- .4byte _08050B58
- .4byte _08050BE0
- .4byte _08050C64
- .4byte _08050C98
-_080509B4:
- bl ClearLinkCallback
- ldr r0, _080509C8 @ =gMPlay_BGM
- movs r1, 0x80
- lsls r1, 1
- bl m4aMPlayTempoControl
- movs r4, 0
- b _080509E4
- .align 2, 0
-_080509C8: .4byte gMPlay_BGM
-_080509CC:
- ldr r0, _080509F0 @ =gUnknown_03004854
- ldr r0, [r0]
- movs r1, 0xA4
- lsls r1, 1
- adds r0, r1
- adds r0, r4
- ldrb r0, [r0]
- bl DestroyTask
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_080509E4:
- ldr r0, _080509F4 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r4, r0
- bcc _080509CC
- b _08050C82
- .align 2, 0
-_080509F0: .4byte gUnknown_03004854
-_080509F4: .4byte gSpecialVar_0x8004
-_080509F8:
- ldr r1, _08050A24 @ =gUnknown_03004854
- ldr r3, [r1]
- adds r2, r3, 0
- adds r2, 0x56
- ldrh r0, [r2]
- subs r0, 0x20
- strh r0, [r2]
- lsls r0, 16
- adds r4, r1, 0
- cmp r0, 0
- bgt _08050A40
- movs r0, 0
- strh r0, [r2]
- ldr r0, _08050A28 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _08050A2C
- adds r1, r3, 0
- adds r1, 0x6F
- ldrb r0, [r1]
- adds r0, 0x1
- b _08050A32
- .align 2, 0
-_08050A24: .4byte gUnknown_03004854
-_08050A28: .4byte gReceivedRemoteLinkPlayers
-_08050A2C:
- adds r1, r3, 0
- adds r1, 0x6F
- movs r0, 0x5
-_08050A32:
- strb r0, [r1]
- ldr r0, [r4]
- movs r1, 0
- strb r1, [r0]
- ldr r0, _08050A48 @ =gMPlay_SE2
- bl m4aMPlayStop
-_08050A40:
- bl sub_804E290
- b _08050CB6
- .align 2, 0
-_08050A48: .4byte gMPlay_SE2
-_08050A4C:
- bl GetMultiplayerId
- lsls r0, 24
- cmp r0, 0
- beq _08050A58
- b _08050C82
-_08050A58:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- bne _08050A64
- b _08050CB6
-_08050A64:
- ldr r4, _08050A90 @ =gUnknown_03004854
- ldr r3, [r4]
- movs r2, 0xDE
- lsls r2, 1
- adds r1, r3, r2
- movs r5, 0x96
- lsls r5, 1
- adds r0, r3, r5
- ldr r0, [r0]
- str r0, [r1]
- adds r0, r3, 0
- adds r0, 0x5A
- ldrh r2, [r0]
- adds r5, 0x94
- adds r0, r3, r5
- strh r2, [r0]
- movs r0, 0
- movs r2, 0x28
- bl SendBlock
- ldr r1, [r4]
- b _08050C86
- .align 2, 0
-_08050A90: .4byte gUnknown_03004854
-_08050A94:
- bl GetBlockReceivedStatus
- lsls r0, 24
- cmp r0, 0
- bne _08050AA0
- b _08050CB6
-_08050AA0:
- ldr r2, _08050AC8 @ =gBlockRecvBuffer
- ldr r0, _08050ACC @ =gUnknown_03004854
- ldr r3, [r0]
- ldrh r0, [r2, 0x4]
- adds r1, r3, 0
- adds r1, 0x5A
- strh r0, [r1]
- movs r0, 0x96
- lsls r0, 1
- adds r1, r3, r0
- ldr r0, [r2]
- str r0, [r1]
- adds r1, r3, 0
- adds r1, 0x6F
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl ResetBlockReceivedFlags
- b _08050CB6
- .align 2, 0
-_08050AC8: .4byte gBlockRecvBuffer
-_08050ACC: .4byte gUnknown_03004854
-_08050AD0:
- bl sub_8052228
- lsls r0, 24
- cmp r0, 0
- bne _08050ADC
- b _08050CB6
-_08050ADC:
- b _08050C82
-_08050ADE:
- bl sub_8051C58
- lsls r0, 24
- cmp r0, 0
- bne _08050AEA
- b _08050CB6
-_08050AEA:
- ldr r0, _08050AFC @ =gUnknown_03004834
- ldrb r0, [r0]
- cmp r0, 0
- bne _08050B00
- movs r0, 0x22
- bl IncrementGameStat
- b _08050C82
- .align 2, 0
-_08050AFC: .4byte gUnknown_03004834
-_08050B00:
- movs r0, 0x21
- bl IncrementGameStat
- b _08050C82
-_08050B08:
- ldr r0, _08050B2C @ =gUnknown_03004854
- ldr r1, [r0]
- adds r1, 0x6F
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _08050B30 @ =gOtherText_BlendAnotherBerryPrompt
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrintMessage
- b _08050CB6
- .align 2, 0
-_08050B2C: .4byte gUnknown_03004854
-_08050B30: .4byte gOtherText_BlendAnotherBerryPrompt
-_08050B34:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- bne _08050B40
- b _08050CB6
-_08050B40:
- b _08050C82
-_08050B42:
- ldr r4, _08050B54 @ =gUnknown_03004854
- ldr r0, [r4]
- adds r0, 0xAA
- movs r1, 0
- strb r1, [r0]
- bl sub_80508FC
- ldr r1, [r4]
- b _08050C86
- .align 2, 0
-_08050B54: .4byte gUnknown_03004854
-_08050B58:
- ldr r0, _08050B80 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08050B88
- ldr r0, _08050B84 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0xAA
- ldrb r0, [r0]
- cmp r0, 0
- beq _08050B76
- movs r0, 0x5
- bl PlaySE
-_08050B76:
- movs r0, 0
- bl sub_80508D4
- b _08050CB6
- .align 2, 0
-_08050B80: .4byte gMain
-_08050B84: .4byte gUnknown_03004854
-_08050B88:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08050BA8
- ldr r0, _08050BA4 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0xAA
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _08050BD4
- movs r0, 0x5
- bl PlaySE
- b _08050BD4
- .align 2, 0
-_08050BA4: .4byte gUnknown_03004854
-_08050BA8:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08050BB8
- movs r0, 0x5
- bl PlaySE
- b _08050C82
-_08050BB8:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08050BC2
- b _08050CB6
-_08050BC2:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _08050BDC @ =gUnknown_03004854
- ldr r1, [r0]
- adds r1, 0x6F
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_08050BD4:
- movs r0, 0x1
- bl sub_80508D4
- b _08050CB6
- .align 2, 0
-_08050BDC: .4byte gUnknown_03004854
-_08050BE0:
- ldr r6, _08050C10 @ =gSendCmd
- movs r7, 0
- ldr r0, _08050C14 @ =0x00002fff
- strh r0, [r6]
- ldr r4, _08050C18 @ =gUnknown_03004854
- ldr r2, [r4]
- adds r0, r2, 0
- adds r0, 0xAA
- ldrb r5, [r0]
- cmp r5, 0
- bne _08050C50
- movs r0, 0x4
- bl IsBagPocketNonEmpty
- lsls r0, 24
- cmp r0, 0
- bne _08050C20
- ldr r0, [r4]
- adds r0, 0x7C
- movs r1, 0x2
- strh r1, [r0]
- ldr r0, _08050C1C @ =0x00009999
- b _08050C48
- .align 2, 0
-_08050C10: .4byte gSendCmd
-_08050C14: .4byte 0x00002fff
-_08050C18: .4byte gUnknown_03004854
-_08050C1C: .4byte 0x00009999
-_08050C20:
- bl sub_810CA00
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _08050C40
- ldr r0, [r4]
- adds r0, 0x7C
- movs r1, 0x3
- strh r1, [r0]
- ldr r0, _08050C3C @ =0x0000aaaa
- b _08050C48
- .align 2, 0
-_08050C3C: .4byte 0x0000aaaa
-_08050C40:
- ldr r0, [r4]
- adds r0, 0x7C
- strh r5, [r0]
- ldr r0, _08050C4C @ =0x00007779
-_08050C48:
- strh r0, [r6, 0x2]
- b _08050C82
- .align 2, 0
-_08050C4C: .4byte 0x00007779
-_08050C50:
- adds r1, r2, 0
- adds r1, 0x7C
- movs r0, 0x1
- strh r0, [r1]
- ldr r0, _08050C60 @ =0x00008888
- strh r0, [r6, 0x2]
- subs r1, 0xD
- b _08050C88
- .align 2, 0
-_08050C60: .4byte 0x00008888
-_08050C64:
- ldr r0, _08050C70 @ =gUnknown_03004834
- ldrb r0, [r0]
- cmp r0, 0
- beq _08050C78
- ldr r0, _08050C74 @ =sub_80510E8
- b _08050CA4
- .align 2, 0
-_08050C70: .4byte gUnknown_03004834
-_08050C74: .4byte sub_80510E8
-_08050C78:
- ldr r0, _08050C90 @ =gOtherText_LinkStandby3
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrintMessage
-_08050C82:
- ldr r0, _08050C94 @ =gUnknown_03004854
- ldr r1, [r0]
-_08050C86:
- adds r1, 0x6F
-_08050C88:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08050CB6
- .align 2, 0
-_08050C90: .4byte gOtherText_LinkStandby3
-_08050C94: .4byte gUnknown_03004854
-_08050C98:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- beq _08050CB6
- ldr r0, _08050CE0 @ =sub_8050E30
-_08050CA4:
- bl SetMainCallback2
- ldr r2, _08050CE4 @ =gUnknown_03004854
- ldr r0, [r2]
- adds r0, 0x6F
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r2]
- strb r1, [r0]
-_08050CB6:
- bl sub_8051B18
- ldr r0, _08050CE4 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0x56
- ldrh r0, [r0]
- bl sub_8051A3C
- bl sub_805123C
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08050CE0: .4byte sub_8050E30
-_08050CE4: .4byte gUnknown_03004854
- thumb_func_end sub_8050954
-
- thumb_func_start sub_8050CE8
-sub_8050CE8: @ 8050CE8
- push {r4,lr}
- ldr r1, _08050D08 @ =gUnknown_03004854
- ldr r0, [r1]
- movs r2, 0xE2
- lsls r2, 1
- adds r0, r2
- ldr r0, [r0]
- adds r4, r1, 0
- cmp r0, 0x6
- bls _08050CFE
- b _08050E28
-_08050CFE:
- lsls r0, 2
- ldr r1, _08050D0C @ =_08050D10
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08050D08: .4byte gUnknown_03004854
-_08050D0C: .4byte _08050D10
- .align 2, 0
-_08050D10:
- .4byte _08050D2C
- .4byte _08050D44
- .4byte _08050D70
- .4byte _08050D80
- .4byte _08050DA6
- .4byte _08050DEC
- .4byte _08050E06
-_08050D2C:
- bl sub_80084A4
- ldr r0, _08050D40 @ =gUnknown_03004854
- ldr r2, [r0]
- movs r3, 0xE2
- lsls r3, 1
- adds r1, r2, r3
- movs r0, 0x1
- b _08050DF8
- .align 2, 0
-_08050D40: .4byte gUnknown_03004854
-_08050D44:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _08050E28
- ldr r0, _08050D68 @ =gUnknown_03004854
- ldr r1, [r0]
- movs r2, 0xE2
- lsls r2, 1
- adds r1, r2
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- ldr r1, _08050D6C @ =gSoftResetDisabled
- movs r0, 0x1
- strb r0, [r1]
- b _08050E28
- .align 2, 0
-_08050D68: .4byte gUnknown_03004854
-_08050D6C: .4byte gSoftResetDisabled
-_08050D70:
- bl sub_8125E2C
- ldr r0, _08050D7C @ =gUnknown_03004854
- ldr r2, [r0]
- b _08050DEE
- .align 2, 0
-_08050D7C: .4byte gUnknown_03004854
-_08050D80:
- ldr r1, [r4]
- movs r2, 0x98
- lsls r2, 1
- adds r1, r2
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0xA
- bne _08050E28
- bl sub_80084A4
- ldr r1, [r4]
- movs r3, 0xE2
- lsls r3, 1
- adds r1, r3
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- b _08050E28
-_08050DA6:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _08050E28
- bl sub_8125E6C
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _08050DD0
- ldr r0, _08050DCC @ =gUnknown_03004854
- ldr r0, [r0]
- movs r1, 0xE2
- lsls r1, 1
- adds r0, r1
- movs r1, 0x5
- str r1, [r0]
- b _08050E28
- .align 2, 0
-_08050DCC: .4byte gUnknown_03004854
-_08050DD0:
- ldr r0, _08050DE8 @ =gUnknown_03004854
- ldr r1, [r0]
- movs r3, 0x98
- lsls r3, 1
- adds r0, r1, r3
- str r2, [r0]
- movs r0, 0xE2
- lsls r0, 1
- adds r1, r0
- movs r0, 0x3
- str r0, [r1]
- b _08050E28
- .align 2, 0
-_08050DE8: .4byte gUnknown_03004854
-_08050DEC:
- ldr r2, [r4]
-_08050DEE:
- movs r3, 0xE2
- lsls r3, 1
- adds r1, r2, r3
- ldr r0, [r1]
- adds r0, 0x1
-_08050DF8:
- str r0, [r1]
- movs r0, 0x98
- lsls r0, 1
- adds r1, r2, r0
- movs r0, 0
- str r0, [r1]
- b _08050E28
-_08050E06:
- ldr r1, [r4]
- movs r2, 0x98
- lsls r2, 1
- adds r1, r2
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x5
- ble _08050E28
- ldr r1, _08050E24 @ =gSoftResetDisabled
- movs r0, 0
- strb r0, [r1]
- movs r0, 0x1
- b _08050E2A
- .align 2, 0
-_08050E24: .4byte gSoftResetDisabled
-_08050E28:
- movs r0, 0
-_08050E2A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8050CE8
-
- thumb_func_start sub_8050E30
-sub_8050E30: @ 8050E30
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r1, _08050E50 @ =gUnknown_03004854
- ldr r0, [r1]
- adds r0, 0x6F
- ldrb r0, [r0]
- adds r5, r1, 0
- cmp r0, 0xC
- bls _08050E44
- b _080510AC
-_08050E44:
- lsls r0, 2
- ldr r1, _08050E54 @ =_08050E58
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08050E50: .4byte gUnknown_03004854
-_08050E54: .4byte _08050E58
- .align 2, 0
-_08050E58:
- .4byte _08050E8C
- .4byte _08050ED8
- .4byte _08050F00
- .4byte _08050F54
- .4byte _08050F74
- .4byte _08050F92
- .4byte _08050FBC
- .4byte _08050FEC
- .4byte _08051008
- .4byte _08051018
- .4byte _0805103C
- .4byte _0805107C
- .4byte _0805109E
-_08050E8C:
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x70
- ldrh r2, [r0]
- ldr r0, _08050EB8 @ =0x00002222
- cmp r2, r0
- beq _08050F8A
- ldr r0, _08050EBC @ =0x00001111
- cmp r2, r0
- beq _08050EA2
- b _080510AC
-_08050EA2:
- adds r0, r1, 0
- adds r0, 0x78
- ldrh r2, [r0]
- ldr r0, _08050EC0 @ =0x00009999
- cmp r2, r0
- bne _08050EC4
- adds r1, 0x6F
- movs r0, 0x2
- strb r0, [r1]
- b _080510AC
- .align 2, 0
-_08050EB8: .4byte 0x00002222
-_08050EBC: .4byte 0x00001111
-_08050EC0: .4byte 0x00009999
-_08050EC4:
- ldr r0, _08050ED4 @ =0x0000aaaa
- cmp r2, r0
- bne _08050F8A
- adds r1, 0x6F
- movs r0, 0x1
- strb r0, [r1]
- b _080510AC
- .align 2, 0
-_08050ED4: .4byte 0x0000aaaa
-_08050ED8:
- ldr r0, [r5]
- adds r0, 0x6F
- movs r1, 0x3
- strb r1, [r0]
- bl DestroyMenuCursor
- movs r0, 0x17
- movs r1, 0x8
- movs r2, 0x1C
- movs r3, 0xD
- bl MenuZeroFillWindowRect
- ldr r4, _08050EF8 @ =gStringVar4
- ldr r1, _08050EFC @ =gOtherText_OtherCaseIsFull
- b _08050F1E
- .align 2, 0
-_08050EF8: .4byte gStringVar4
-_08050EFC: .4byte gOtherText_OtherCaseIsFull
-_08050F00:
- ldr r1, [r5]
- adds r1, 0x6F
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl DestroyMenuCursor
- movs r0, 0x17
- movs r1, 0x8
- movs r2, 0x1C
- movs r3, 0xD
- bl MenuZeroFillWindowRect
- ldr r4, _08050F48 @ =gStringVar4
- ldr r1, _08050F4C @ =gOtherText_NoBerriesForBlend
-_08050F1E:
- adds r0, r4, 0
- bl StringCopy
- ldr r0, [r5]
- adds r0, 0x7A
- ldrh r0, [r0]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- ldr r0, _08050F50 @ =gLinkPlayers + 0x8
- adds r1, r0
- adds r0, r4, 0
- bl de_sub_8073110
- adds r0, r4, 0
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrintMessage
- b _080510AC
- .align 2, 0
-_08050F48: .4byte gStringVar4
-_08050F4C: .4byte gOtherText_NoBerriesForBlend
-_08050F50: .4byte gLinkPlayers + 0x8
-_08050F54:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- bne _08050F60
- b _080510AC
-_08050F60:
- ldr r0, _08050F70 @ =gUnknown_03004854
- ldr r1, [r0]
- movs r0, 0x98
- lsls r0, 1
- adds r2, r1, r0
- movs r0, 0
- str r0, [r2]
- b _08051094
- .align 2, 0
-_08050F70: .4byte gUnknown_03004854
-_08050F74:
- ldr r2, [r5]
- movs r0, 0x98
- lsls r0, 1
- adds r1, r2, r0
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x3C
- bgt _08050F88
- b _080510AC
-_08050F88:
- adds r1, r2, 0
-_08050F8A:
- adds r1, 0x6F
- movs r0, 0x5
- strb r0, [r1]
- b _080510AC
-_08050F92:
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _08050FB4 @ =gMultiText_Saving
- movs r1, 0x2
- movs r2, 0xF
- bl MenuPrint
- bl sub_80084A4
- ldr r0, _08050FB8 @ =gUnknown_03004854
- ldr r1, [r0]
- b _08051094
- .align 2, 0
-_08050FB4: .4byte gMultiText_Saving
-_08050FB8: .4byte gUnknown_03004854
-_08050FBC:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _080510AC
- ldr r3, _08050FE8 @ =gUnknown_03004854
- ldr r1, [r3]
- movs r2, 0x98
- lsls r2, 1
- adds r0, r1, r2
- movs r2, 0
- str r2, [r0]
- adds r1, 0x6F
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r3]
- movs r1, 0xE2
- lsls r1, 1
- adds r0, r1
- str r2, [r0]
- b _080510AC
- .align 2, 0
-_08050FE8: .4byte gUnknown_03004854
-_08050FEC:
- bl sub_8050CE8
- lsls r0, 24
- cmp r0, 0
- beq _080510AC
- movs r0, 0x37
- bl PlaySE
- ldr r0, _08051004 @ =gUnknown_03004854
- ldr r1, [r0]
- b _08051094
- .align 2, 0
-_08051004: .4byte gUnknown_03004854
-_08051008:
- ldr r1, [r5]
- adds r1, 0x6F
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl sub_80084A4
- b _080510AC
-_08051018:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _080510AC
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _08051038 @ =gUnknown_03004854
- ldr r1, [r0]
- b _08051094
- .align 2, 0
-_08051038: .4byte gUnknown_03004854
-_0805103C:
- ldr r0, _08051064 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0
- bne _080510AC
- ldr r2, [r5]
- adds r0, r2, 0
- adds r0, 0x70
- ldrh r1, [r0]
- ldr r0, _08051068 @ =0x00002222
- cmp r1, r0
- bne _08051070
- ldr r0, _0805106C @ =sub_804E538
- bl SetMainCallback2
- b _080510AC
- .align 2, 0
-_08051064: .4byte gPaletteFade
-_08051068: .4byte 0x00002222
-_0805106C: .4byte sub_804E538
-_08051070:
- movs r1, 0x98
- lsls r1, 1
- adds r0, r2, r1
- str r3, [r0]
- adds r1, r2, 0
- b _08051094
-_0805107C:
- ldr r1, [r5]
- movs r2, 0x98
- lsls r2, 1
- adds r1, r2
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x1E
- ble _080510AC
- bl sub_800832C
- ldr r1, [r5]
-_08051094:
- adds r1, 0x6F
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080510AC
-_0805109E:
- ldr r0, _080510C8 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _080510AC
- ldr r0, _080510CC @ =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
-_080510AC:
- bl sub_805123C
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080510C8: .4byte gReceivedRemoteLinkPlayers
-_080510CC: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
- thumb_func_end sub_8050E30
-
- thumb_func_start sub_80510E8
-sub_80510E8: @ 80510E8
- push {lr}
- ldr r1, _08051104 @ =gUnknown_03004854
- ldr r0, [r1]
- adds r0, 0x6F
- ldrb r0, [r0]
- adds r3, r1, 0
- cmp r0, 0xA
- bls _080510FA
- b _0805121E
-_080510FA:
- lsls r0, 2
- ldr r1, _08051108 @ =_0805110C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08051104: .4byte gUnknown_03004854
-_08051108: .4byte _0805110C
- .align 2, 0
-_0805110C:
- .4byte _08051138
- .4byte _0805116E
- .4byte _08051190
- .4byte _080511BC
- .4byte _0805121E
- .4byte _0805121E
- .4byte _0805121E
- .4byte _0805121E
- .4byte _0805121E
- .4byte _080511D8
- .4byte _080511F0
-_08051138:
- ldr r1, [r3]
- adds r0, r1, 0
- adds r0, 0x7C
- ldrh r0, [r0]
- cmp r0, 0x1
- bhi _0805114A
- adds r1, 0x6F
- movs r0, 0x9
- strb r0, [r1]
-_0805114A:
- ldr r2, [r3]
- adds r0, r2, 0
- adds r0, 0x7C
- ldrh r1, [r0]
- cmp r1, 0x2
- bne _0805115A
- subs r0, 0xD
- strb r1, [r0]
-_0805115A:
- ldr r1, [r3]
- adds r0, r1, 0
- adds r0, 0x7C
- ldrh r0, [r0]
- cmp r0, 0x3
- bne _0805121E
- adds r1, 0x6F
- movs r0, 0x1
- strb r0, [r1]
- b _0805121E
-_0805116E:
- ldr r0, [r3]
- adds r0, 0x6F
- movs r1, 0x3
- strb r1, [r0]
- bl DestroyMenuCursor
- movs r0, 0x17
- movs r1, 0x8
- movs r2, 0x1C
- movs r3, 0xD
- bl MenuZeroFillWindowRect
- ldr r0, _0805118C @ =gOtherText_CaseIsFull
- b _080511AC
- .align 2, 0
-_0805118C: .4byte gOtherText_CaseIsFull
-_08051190:
- ldr r0, [r3]
- adds r0, 0x6F
- ldrb r1, [r0]
- adds r1, 0x1
- strb r1, [r0]
- bl DestroyMenuCursor
- movs r0, 0x17
- movs r1, 0x8
- movs r2, 0x1C
- movs r3, 0xD
- bl MenuZeroFillWindowRect
- ldr r0, _080511B8 @ =gOtherText_OutOfBerries
-_080511AC:
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrintMessage
- b _0805121E
- .align 2, 0
-_080511B8: .4byte gOtherText_OutOfBerries
-_080511BC:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- beq _0805121E
- ldr r0, _080511D4 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0x6F
- movs r1, 0x9
- strb r1, [r0]
- b _0805121E
- .align 2, 0
-_080511D4: .4byte gUnknown_03004854
-_080511D8:
- movs r0, 0x3
- bl BeginFastPaletteFade
- ldr r0, _080511EC @ =gUnknown_03004854
- ldr r1, [r0]
- adds r1, 0x6F
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0805121E
- .align 2, 0
-_080511EC: .4byte gUnknown_03004854
-_080511F0:
- ldr r0, _08051210 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0805121E
- ldr r0, [r3]
- adds r0, 0x7C
- ldrh r0, [r0]
- cmp r0, 0
- bne _08051218
- ldr r0, _08051214 @ =sub_804E538
- bl SetMainCallback2
- b _0805121E
- .align 2, 0
-_08051210: .4byte gPaletteFade
-_08051214: .4byte sub_804E538
-_08051218:
- ldr r0, _08051238 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
-_0805121E:
- bl sub_805123C
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- .align 2, 0
-_08051238: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
- thumb_func_end sub_80510E8
-
- thumb_func_start sub_805123C
-sub_805123C: @ 805123C
- push {r4-r6,lr}
- ldr r0, _0805126C @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _08051248
- b _08051404
-_08051248:
- ldr r4, _08051270 @ =gRecvCmds
- ldrh r1, [r4]
- ldr r0, _08051274 @ =0x00002fff
- cmp r1, r0
- bne _080512C6
- ldrh r1, [r4, 0x8]
- ldr r0, _08051278 @ =0x00001111
- cmp r1, r0
- bne _080512B8
- ldrh r3, [r4, 0x10]
- ldr r0, _0805127C @ =0x00009999
- cmp r3, r0
- beq _08051298
- cmp r3, r0
- bgt _08051284
- ldr r0, _08051280 @ =0x00008888
- b _08051286
- .align 2, 0
-_0805126C: .4byte gReceivedRemoteLinkPlayers
-_08051270: .4byte gRecvCmds
-_08051274: .4byte 0x00002fff
-_08051278: .4byte 0x00001111
-_0805127C: .4byte 0x00009999
-_08051280: .4byte 0x00008888
-_08051284:
- ldr r0, _08051290 @ =0x0000aaaa
-_08051286:
- cmp r3, r0
- beq _08051298
- ldr r2, _08051294 @ =gUnknown_03004854
- b _080512A8
- .align 2, 0
-_08051290: .4byte 0x0000aaaa
-_08051294: .4byte gUnknown_03004854
-_08051298:
- ldr r2, _080512B0 @ =gUnknown_03004854
- ldr r0, [r2]
- adds r1, r0, 0
- adds r1, 0x78
- strh r3, [r1]
- ldrh r1, [r4, 0x18]
- adds r0, 0x7A
- strh r1, [r0]
-_080512A8:
- ldr r0, [r2]
- adds r0, 0x70
- ldr r1, _080512B4 @ =0x00001111
- b _080512C4
- .align 2, 0
-_080512B0: .4byte gUnknown_03004854
-_080512B4: .4byte 0x00001111
-_080512B8:
- ldr r0, _080512F4 @ =0x00002222
- cmp r1, r0
- bne _080512C6
- ldr r0, _080512F8 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0x70
-_080512C4:
- strh r1, [r0]
-_080512C6:
- bl GetMultiplayerId
- lsls r0, 24
- cmp r0, 0
- beq _080512D2
- b _08051404
-_080512D2:
- ldr r2, _080512F8 @ =gUnknown_03004854
- ldr r0, [r2]
- adds r0, 0x70
- ldrh r1, [r0]
- ldr r0, _080512FC @ =0x00001111
- cmp r1, r0
- bne _080512E2
- b _08051404
-_080512E2:
- ldr r0, _080512F4 @ =0x00002222
- cmp r1, r0
- bne _080512EA
- b _08051404
-_080512EA:
- movs r4, 0
- ldr r6, _08051300 @ =0x00002fff
- adds r5, r2, 0
- b _0805134E
- .align 2, 0
-_080512F4: .4byte 0x00002222
-_080512F8: .4byte gUnknown_03004854
-_080512FC: .4byte 0x00001111
-_08051300: .4byte 0x00002fff
-_08051304:
- ldr r1, _08051328 @ =gRecvCmds
- lsls r2, r4, 1
- adds r0, r2, r1
- ldrh r0, [r0]
- cmp r0, r6
- bne _08051348
- adds r0, r1, 0
- adds r0, 0x8
- adds r0, r2, r0
- ldrh r1, [r0]
- ldr r0, _0805132C @ =0x00008888
- cmp r1, r0
- beq _08051340
- cmp r1, r0
- bgt _08051334
- ldr r0, _08051330 @ =0x00007779
- b _0805133C
- .align 2, 0
-_08051328: .4byte gRecvCmds
-_0805132C: .4byte 0x00008888
-_08051330: .4byte 0x00007779
-_08051334:
- ldr r0, _08051360 @ =0x00009999
- cmp r1, r0
- beq _08051340
- ldr r0, _08051364 @ =0x0000aaaa
-_0805133C:
- cmp r1, r0
- bne _08051348
-_08051340:
- ldr r0, [r5]
- adds r0, 0x70
- adds r0, r2
- strh r1, [r0]
-_08051348:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_0805134E:
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bcc _08051304
- movs r4, 0
- b _0805136E
- .align 2, 0
-_08051360: .4byte 0x00009999
-_08051364: .4byte 0x0000aaaa
-_08051368:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_0805136E:
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bcs _0805138A
- ldr r0, _0805139C @ =gUnknown_03004854
- ldr r0, [r0]
- lsls r1, r4, 1
- adds r0, 0x70
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0
- bne _08051368
-_0805138A:
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bne _08051404
- movs r4, 0
- ldr r5, _080513A0 @ =0x00007779
- b _080513AA
- .align 2, 0
-_0805139C: .4byte gUnknown_03004854
-_080513A0: .4byte 0x00007779
-_080513A4:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_080513AA:
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bcs _080513C6
- ldr r0, _080513E0 @ =gUnknown_03004854
- ldr r0, [r0]
- lsls r1, r4, 1
- adds r0, 0x70
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, r5
- beq _080513A4
-_080513C6:
- ldr r5, _080513E4 @ =gSendCmd
- movs r6, 0
- ldr r0, _080513E8 @ =0x00002fff
- strh r0, [r5]
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bne _080513F0
- ldr r0, _080513EC @ =0x00002222
- strh r0, [r5, 0x2]
- b _08051404
- .align 2, 0
-_080513E0: .4byte gUnknown_03004854
-_080513E4: .4byte gSendCmd
-_080513E8: .4byte 0x00002fff
-_080513EC: .4byte 0x00002222
-_080513F0:
- ldr r0, _0805140C @ =0x00001111
- strh r0, [r5, 0x2]
- ldr r0, _08051410 @ =gUnknown_03004854
- ldr r0, [r0]
- lsls r1, r4, 1
- adds r0, 0x70
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r5, 0x4]
- strh r4, [r5, 0x6]
-_08051404:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0805140C: .4byte 0x00001111
-_08051410: .4byte gUnknown_03004854
- thumb_func_end sub_805123C
-
- thumb_func_start sub_8051414
-sub_8051414: @ 8051414
- push {lr}
- sub sp, 0x14
- adds r1, r0, 0
- movs r0, 0xF0
- lsls r0, 7
- str r0, [sp]
- movs r0, 0xA0
- lsls r0, 7
- str r0, [sp, 0x4]
- mov r3, sp
- ldr r0, _08051470 @ =gUnknown_03004854
- ldr r0, [r0]
- mov r12, r0
- movs r0, 0xA2
- lsls r0, 1
- add r0, r12
- ldrh r2, [r0]
- movs r0, 0x78
- subs r0, r2
- strh r0, [r3, 0x8]
- movs r0, 0xA3
- lsls r0, 1
- add r0, r12
- ldrh r2, [r0]
- movs r0, 0x50
- subs r0, r2
- strh r0, [r3, 0xA]
- mov r2, sp
- movs r3, 0xA1
- lsls r3, 1
- add r3, r12
- ldrh r0, [r3]
- strh r0, [r2, 0xC]
- ldrh r0, [r3]
- strh r0, [r2, 0xE]
- mov r0, r12
- adds r0, 0x54
- ldrh r0, [r0]
- strh r0, [r2, 0x10]
- mov r0, sp
- movs r2, 0x1
- bl BgAffineSet
- add sp, 0x14
- pop {r0}
- bx r0
- .align 2, 0
-_08051470: .4byte gUnknown_03004854
- thumb_func_end sub_8051414
-
- thumb_func_start sub_8051474
-sub_8051474: @ 8051474
- push {lr}
- ldr r0, _080514A0 @ =gUnknown_03004854
- ldr r3, [r0]
- adds r1, r3, 0
- adds r1, 0x54
- ldrh r2, [r1]
- adds r0, r3, 0
- adds r0, 0x58
- strh r2, [r0]
- subs r0, 0x2
- ldrh r0, [r0]
- ldrh r2, [r1]
- adds r0, r2
- strh r0, [r1]
- movs r1, 0xB4
- lsls r1, 1
- adds r0, r3, r1
- bl sub_8051414
- pop {r0}
- bx r0
- .align 2, 0
-_080514A0: .4byte gUnknown_03004854
- thumb_func_end sub_8051474
-
- thumb_func_start sub_80514A4
-sub_80514A4: @ 80514A4
- ldr r1, _080514E8 @ =REG_BG2PA
- ldr r0, _080514EC @ =gUnknown_03004854
- ldr r2, [r0]
- movs r3, 0xB4
- lsls r3, 1
- adds r0, r2, r3
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- adds r3, 0x2
- adds r0, r2, r3
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- adds r3, 0x2
- adds r0, r2, r3
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- adds r3, 0x2
- adds r0, r2, r3
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- adds r3, 0x2
- adds r0, r2, r3
- ldr r0, [r0]
- str r0, [r1]
- adds r1, 0x4
- adds r3, 0x4
- adds r0, r2, r3
- ldr r0, [r0]
- str r0, [r1]
- bx lr
- .align 2, 0
-_080514E8: .4byte REG_BG2PA
-_080514EC: .4byte gUnknown_03004854
- thumb_func_end sub_80514A4
-
- thumb_func_start sub_80514F0
-sub_80514F0: @ 80514F0
- ldr r1, _0805151C @ =REG_BG1HOFS
- ldr r0, _08051520 @ =gUnknown_03004854
- ldr r3, [r0]
- movs r0, 0xA2
- lsls r0, 1
- adds r2, r3, r0
- ldrh r0, [r2]
- strh r0, [r1]
- adds r1, 0x2
- movs r0, 0xA3
- lsls r0, 1
- adds r3, r0
- ldrh r0, [r3]
- strh r0, [r1]
- subs r1, 0x6
- ldrh r0, [r2]
- strh r0, [r1]
- adds r1, 0x2
- ldrh r0, [r3]
- strh r0, [r1]
- bx lr
- .align 2, 0
-_0805151C: .4byte REG_BG1HOFS
-_08051520: .4byte gUnknown_03004854
- thumb_func_end sub_80514F0
-
- thumb_func_start sub_8051524
-sub_8051524: @ 8051524
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x2E]
- ldrh r1, [r2, 0x32]
- adds r0, r1
- strh r0, [r2, 0x32]
- ldrh r0, [r2, 0x30]
- ldrh r1, [r2, 0x34]
- adds r0, r1
- strh r0, [r2, 0x34]
- movs r1, 0x32
- ldrsh r0, [r2, r1]
- cmp r0, 0
- bge _08051542
- adds r0, 0x7
-_08051542:
- asrs r0, 3
- strh r0, [r2, 0x24]
- movs r1, 0x34
- ldrsh r0, [r2, r1]
- cmp r0, 0
- bge _08051550
- adds r0, 0x7
-_08051550:
- asrs r0, 3
- strh r0, [r2, 0x26]
- adds r0, r2, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08051568
- adds r0, r2, 0
- bl DestroySprite
-_08051568:
- pop {r0}
- bx r0
- thumb_func_end sub_8051524
-
- thumb_func_start sub_805156C
-sub_805156C: @ 805156C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- bl Random
- lsls r0, 16
- lsrs r1, r0, 16
- movs r0, 0x1
- ands r1, r0
- adds r0, r1, 0x1
- cmp r0, 0
- beq _08051628
- ldr r0, _08051638 @ =gSineTable
- mov r9, r0
- ldr r2, _0805163C @ =gSprites
- mov r10, r2
- adds r6, r1, 0x1
- movs r3, 0x1F
- mov r8, r3
- movs r7, 0x10
-_08051598:
- bl Random
- ldr r1, _08051640 @ =gUnknown_03004854
- ldr r4, [r1]
- adds r4, 0x54
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x14
- bl __umodsi3
- ldrh r1, [r4]
- adds r1, r0
- lsls r1, 16
- movs r0, 0xFF
- lsls r0, 16
- ands r0, r1
- lsrs r2, r0, 16
- adds r0, r2, 0
- adds r0, 0x40
- lsls r0, 1
- add r0, r9
- movs r3, 0
- ldrsh r1, [r0, r3]
- cmp r1, 0
- bge _080515CC
- adds r1, 0x3
-_080515CC:
- asrs r1, 2
- lsls r0, r2, 1
- add r0, r9
- movs r2, 0
- ldrsh r0, [r0, r2]
- cmp r0, 0
- bge _080515DC
- adds r0, 0x3
-_080515DC:
- asrs r2, r0, 2
- adds r1, 0x78
- adds r2, 0x50
- ldr r0, _08051644 @ =gSpriteTemplate_82164FC
- movs r3, 0x1
- bl CreateSprite
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl Random
- lsls r5, r4, 4
- adds r5, r4
- lsls r5, 2
- mov r3, r10
- adds r4, r5, r3
- lsls r0, 16
- lsrs r0, 16
- mov r1, r8
- ands r0, r1
- subs r0, r7, r0
- strh r0, [r4, 0x2E]
- bl Random
- lsls r0, 16
- lsrs r0, 16
- mov r2, r8
- ands r0, r2
- subs r0, r7, r0
- strh r0, [r4, 0x30]
- ldr r3, _08051648 @ =gSprites + 0x1C
- adds r5, r3
- ldr r0, _0805164C @ =sub_8051524
- str r0, [r5]
- subs r6, 0x1
- cmp r6, 0
- bne _08051598
-_08051628:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08051638: .4byte gSineTable
-_0805163C: .4byte gSprites
-_08051640: .4byte gUnknown_03004854
-_08051644: .4byte gSpriteTemplate_82164FC
-_08051648: .4byte gSprites + 0x1C
-_0805164C: .4byte sub_8051524
- thumb_func_end sub_805156C
-
- thumb_func_start sub_8051650
-sub_8051650: @ 8051650
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x3
- bl __divsi3
- negs r0, r0
- strh r0, [r4, 0x26]
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0805167C
- adds r0, r4, 0
- bl DestroySprite
-_0805167C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8051650
-
- thumb_func_start sub_8051684
-sub_8051684: @ 8051684
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- lsls r0, 1
- negs r0, r0
- strh r0, [r2, 0x26]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0xC
- negs r1, r1
- cmp r0, r1
- bge _080516A8
- ldr r0, _080516C0 @ =0x0000fff4
- strh r0, [r2, 0x26]
-_080516A8:
- adds r0, r2, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080516BC
- adds r0, r2, 0
- bl DestroySprite
-_080516BC:
- pop {r0}
- bx r0
- .align 2, 0
-_080516C0: .4byte 0x0000fff4
- thumb_func_end sub_8051684
-
- thumb_func_start sub_80516C4
-sub_80516C4: @ 80516C4
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsrs r1, 16
- ldr r2, _080516F4 @ =gUnknown_03004854
- ldr r3, [r2]
- lsls r4, r0, 1
- adds r2, r3, 0
- adds r2, 0x80
- adds r2, r4
- strh r1, [r2]
- lsls r0, 4
- movs r2, 0xBE
- lsls r2, 1
- adds r0, r2
- adds r3, r0
- adds r0, r3, 0
- bl sub_804E844
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080516F4: .4byte gUnknown_03004854
- thumb_func_end sub_80516C4
-
- thumb_func_start unref_sub_80516F8
-unref_sub_80516F8: @ 80516F8
- 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, _080517B8 @ =gTasks
- adds r4, r0, r1
- ldr r6, _080517BC @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r6]
- cmp r0, 0
- beq _0805180C
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _080517D4
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x78
- ble _08051730
- strh r1, [r4, 0x8]
-_08051730:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x64
- bne _080517A0
- ldr r0, _080517C0 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0x4
- movs r1, 0x14
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl ZeroFillWindowRect
- movs r0, 0x4
- movs r1, 0x4
- movs r2, 0xA
- movs r3, 0xC
- bl MenuDrawTextWindow
- movs r2, 0
- ldr r6, _080517C4 @ =gLinkPlayers + 0x4
-_0805175C:
- adds r4, r2, 0x1
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- cmp r0, 0
- beq _08051784
- ldr r1, _080517C8 @ =gUnknown_08216284
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- lsls r2, 25
- movs r1, 0xA0
- lsls r1, 19
- adds r2, r1
- lsrs r2, 24
- movs r1, 0x5
- bl MenuPrint
-_08051784:
- movs r0, 0
- movs r1, 0xD
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _080517CC @ =gOtherText_PressAToStart
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrint
- adds r2, r4, 0
- cmp r2, 0x2
- ble _0805175C
-_080517A0:
- ldr r0, _080517D0 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0805180C
- bl sub_8007E4C
- adds r0, r5, 0
- bl DestroyTask
- b _0805180C
- .align 2, 0
-_080517B8: .4byte gTasks
-_080517BC: .4byte gReceivedRemoteLinkPlayers
-_080517C0: .4byte gUnknown_03004854
-_080517C4: .4byte gLinkPlayers + 0x4
-_080517C8: .4byte gUnknown_08216284
-_080517CC: .4byte gOtherText_PressAToStart
-_080517D0: .4byte gMain
-_080517D4:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0xA
- bne _080517E6
- ldr r0, _08051814 @ =gOtherText_PleaseWait
- movs r1, 0x3
- movs r2, 0xA
- bl MenuPrint
-_080517E6:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x78
- ble _080517F8
- movs r0, 0
- strh r0, [r4, 0x8]
-_080517F8:
- ldr r0, _08051818 @ =byte_3002A68
- ldrb r0, [r0]
- cmp r0, 0x4
- bls _0805180C
- ldrb r0, [r6]
- cmp r0, 0x1
- bne _0805180C
- adds r0, r5, 0
- bl DestroyTask
-_0805180C:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08051814: .4byte gOtherText_PleaseWait
-_08051818: .4byte byte_3002A68
- thumb_func_end unref_sub_80516F8
-
- thumb_func_start sub_805181C
-sub_805181C: @ 805181C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08051858
- cmp r0, 0x1
- bgt _08051832
- cmp r0, 0
- beq _08051838
- b _080518BE
-_08051832:
- cmp r0, 0x2
- beq _08051872
- b _080518BE
-_08051838:
- ldrh r0, [r4, 0x30]
- adds r0, 0x8
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x58
- ble _080518BE
- movs r0, 0x58
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- movs r0, 0x38
- bl PlaySE
- b _080518BE
-_08051858:
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- ble _080518BE
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- movs r0, 0
- strh r0, [r4, 0x32]
- b _080518BE
-_08051872:
- ldrh r0, [r4, 0x30]
- adds r0, 0x4
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xB0
- ble _080518BE
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- adds r1, r0, 0
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- bne _080518AC
- adds r0, r4, 0
- bl DestroySprite
- ldr r0, _080518A8 @ =gSpriteTemplate_821657C
- movs r2, 0x14
- negs r2, r2
- movs r1, 0x78
- movs r3, 0x2
- bl CreateSprite
- b _080518BE
- .align 2, 0
-_080518A8: .4byte gSpriteTemplate_821657C
-_080518AC:
- movs r0, 0
- strh r0, [r4, 0x2E]
- ldr r0, _080518C8 @ =0x0000fff0
- strh r0, [r4, 0x30]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
-_080518BE:
- ldrh r0, [r4, 0x30]
- strh r0, [r4, 0x26]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080518C8: .4byte 0x0000fff0
- thumb_func_end sub_805181C
-
- thumb_func_start sub_80518CC
-sub_80518CC: @ 80518CC
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08051908
- cmp r0, 0x1
- bgt _080518E2
- cmp r0, 0
- beq _080518E8
- b _0805193C
-_080518E2:
- cmp r0, 0x2
- beq _0805191E
- b _0805193C
-_080518E8:
- ldrh r0, [r4, 0x30]
- adds r0, 0x8
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5C
- ble _0805193C
- movs r0, 0x5C
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- movs r0, 0x15
- bl PlaySE
- b _0805193C
-_08051908:
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- ble _0805193C
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _0805193C
-_0805191E:
- ldrh r0, [r4, 0x30]
- adds r0, 0x4
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xB0
- ble _0805193C
- ldr r0, _08051948 @ =gUnknown_03004854
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- adds r0, r4, 0
- bl DestroySprite
-_0805193C:
- ldrh r0, [r4, 0x30]
- strh r0, [r4, 0x26]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08051948: .4byte gUnknown_03004854
- thumb_func_end sub_80518CC
-
- thumb_func_start sub_805194C
-sub_805194C: @ 805194C
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 16
- lsrs r3, r1, 16
- ldr r1, _08051978 @ =gUnknown_03004854
- ldr r1, [r1]
- movs r2, 0xA0
- lsls r2, 1
- adds r1, r2
- ldrh r2, [r1]
- cmp r2, r0
- bcs _08051972
- adds r0, r2, 0x2
- strh r0, [r1]
- ldrh r0, [r1]
- adds r1, r3, 0
- bl sub_805197C
-_08051972:
- pop {r0}
- bx r0
- .align 2, 0
-_08051978: .4byte gUnknown_03004854
- thumb_func_end sub_805194C
-
- thumb_func_start sub_805197C
-sub_805197C: @ 805197C
- push {r4-r7,lr}
- lsls r0, 16
- lsls r1, 16
- lsrs r1, 16
- ldr r7, _08051A0C @ =0x06006000
- lsrs r0, 10
- bl __divsi3
- adds r1, r0, 0
- cmp r1, 0
- bge _08051994
- adds r0, r1, 0x7
-_08051994:
- asrs r4, r0, 3
- movs r3, 0
- cmp r3, r4
- bge _080519BC
- ldr r0, _08051A10 @ =0x000081e9
- adds r6, r0, 0
- adds r0, 0x10
- adds r5, r0, 0
- adds r2, r7, 0
- adds r2, 0x56
- adds r0, r7, 0
- adds r3, r4, 0
-_080519AC:
- strh r6, [r0, 0x16]
- strh r5, [r2]
- adds r2, 0x2
- adds r0, 0x2
- subs r3, 0x1
- cmp r3, 0
- bne _080519AC
- adds r3, r4, 0
-_080519BC:
- adds r0, r1, 0
- cmp r1, 0
- bge _080519C4
- adds r0, r1, 0x7
-_080519C4:
- asrs r2, r0, 3
- lsls r0, r2, 3
- subs r2, r1, r0
- cmp r2, 0
- beq _080519E2
- lsls r0, r3, 1
- adds r0, r7
- ldr r4, _08051A14 @ =0xffff81e1
- adds r1, r2, r4
- strh r1, [r0, 0x16]
- adds r0, 0x56
- adds r4, 0x10
- adds r1, r2, r4
- strh r1, [r0]
- adds r3, 0x1
-_080519E2:
- cmp r3, 0x7
- bgt _08051A06
- ldr r0, _08051A18 @ =0x000081e1
- adds r4, r0, 0
- adds r0, 0x10
- adds r2, r0, 0
- lsls r1, r3, 1
- adds r0, r1, 0
- adds r0, 0x56
- adds r0, r7
- adds r1, r7
-_080519F8:
- strh r4, [r1, 0x16]
- strh r2, [r0]
- adds r0, 0x2
- adds r1, 0x2
- adds r3, 0x1
- cmp r3, 0x7
- ble _080519F8
-_08051A06:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08051A0C: .4byte 0x06006000
-_08051A10: .4byte 0x000081e9
-_08051A14: .4byte 0xffff81e1
-_08051A18: .4byte 0x000081e1
- thumb_func_end sub_805197C
-
- thumb_func_start sub_8051A1C
-sub_8051A1C: @ 8051A1C
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _08051A34 @ =0x00057e40
- muls r0, r1
- cmp r0, 0
- bge _08051A2E
- ldr r1, _08051A38 @ =0x0000ffff
- adds r0, r1
-_08051A2E:
- asrs r0, 16
- pop {r1}
- bx r1
- .align 2, 0
-_08051A34: .4byte 0x00057e40
-_08051A38: .4byte 0x0000ffff
- thumb_func_end sub_8051A1C
-
- thumb_func_start sub_8051A3C
-sub_8051A3C: @ 8051A3C
- push {r4-r6,lr}
- sub sp, 0x8
- lsls r0, 16
- lsrs r0, 16
- bl sub_8051A1C
- adds r5, r0, 0
- ldr r0, _08051ABC @ =gUnknown_03004854
- ldr r0, [r0]
- adds r1, r0, 0
- adds r1, 0x5A
- ldrh r0, [r1]
- cmp r0, r5
- bcs _08051A5A
- strh r5, [r1]
-_08051A5A:
- movs r6, 0
-_08051A5C:
- mov r0, sp
- adds r4, r0, r6
- adds r0, r5, 0
- movs r1, 0xA
- bl __umodsi3
- strb r0, [r4]
- adds r0, r5, 0
- movs r1, 0xA
- bl __udivsi3
- adds r5, r0, 0
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x4
- bls _08051A5C
- ldr r2, _08051AC0 @ =0x06006458
- mov r0, sp
- ldr r3, _08051AC4 @ =0x00008172
- adds r1, r3, 0
- ldrb r0, [r0, 0x4]
- adds r0, r1, r0
- strh r0, [r2]
- adds r2, 0x2
- mov r0, sp
- ldrb r0, [r0, 0x3]
- adds r0, r1
- strh r0, [r2]
- adds r2, 0x2
- mov r0, sp
- ldrb r0, [r0, 0x2]
- adds r0, r1
- strh r0, [r2]
- adds r2, 0x4
- mov r0, sp
- ldrb r0, [r0, 0x1]
- adds r0, r1
- strh r0, [r2]
- adds r2, 0x2
- mov r0, sp
- ldrb r0, [r0]
- adds r1, r0
- strh r1, [r2]
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08051ABC: .4byte gUnknown_03004854
-_08051AC0: .4byte 0x06006458
-_08051AC4: .4byte 0x00008172
- thumb_func_end sub_8051A3C
-
- thumb_func_start sub_8051AC8
-sub_8051AC8: @ 8051AC8
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r4, r1, 16
- lsrs r5, r4, 16
- movs r1, 0
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _08051AEC
- bl Random
- lsls r0, 16
- lsrs r0, 16
- adds r1, r5, 0
- bl __umodsi3
- lsrs r1, r4, 17
- subs r0, r1
- strh r0, [r6]
-_08051AEC:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8051AC8
-
- thumb_func_start sub_8051AF4
-sub_8051AF4: @ 8051AF4
- push {lr}
- adds r1, r0, 0
- ldrh r2, [r1]
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0
- bge _08051B06
- adds r0, r2, 0x1
- strh r0, [r1]
-_08051B06:
- ldrh r2, [r1]
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0
- ble _08051B14
- subs r0, r2, 0x1
- strh r0, [r1]
-_08051B14:
- pop {r0}
- bx r0
- thumb_func_end sub_8051AF4
-
- thumb_func_start sub_8051B18
-sub_8051B18: @ 8051B18
- push {r4,lr}
- ldr r4, _08051B3C @ =gUnknown_03004854
- ldr r0, [r4]
- movs r1, 0xA2
- lsls r1, 1
- adds r0, r1
- bl sub_8051AF4
- ldr r0, [r4]
- movs r1, 0xA3
- lsls r1, 1
- adds r0, r1
- bl sub_8051AF4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08051B3C: .4byte gUnknown_03004854
- thumb_func_end sub_8051B18
-
- thumb_func_start sub_8051B40
-sub_8051B40: @ 8051B40
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r1, 16
- lsrs r1, 16
- movs r5, 0x8
- cmp r1, 0x9
- bhi _08051B50
- movs r5, 0x10
-_08051B50:
- ldrh r0, [r4]
- movs r2, 0
- ldrsh r1, [r4, r2]
- cmp r1, 0
- bne _08051B6E
- bl Random
- lsls r0, 16
- lsrs r0, 16
- adds r1, r5, 0
- bl __modsi3
- lsrs r1, r5, 1
- subs r0, r1
- b _08051B82
-_08051B6E:
- cmp r1, 0
- bge _08051B76
- adds r0, 0x1
- strh r0, [r4]
-_08051B76:
- ldrh r1, [r4]
- movs r2, 0
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _08051B84
- subs r0, r1, 0x1
-_08051B82:
- strh r0, [r4]
-_08051B84:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8051B40
-
- thumb_func_start sub_8051B8C
-sub_8051B8C: @ 8051B8C
- push {r4,r5,lr}
- ldr r5, _08051BE4 @ =gUnknown_03004854
- ldr r2, [r5]
- movs r4, 0x98
- lsls r4, 1
- adds r0, r2, r4
- ldr r1, [r0]
- cmp r1, 0
- bne _08051BAC
- movs r3, 0xA2
- lsls r3, 1
- adds r0, r2, r3
- strh r1, [r0]
- adds r3, 0x2
- adds r0, r2, r3
- strh r1, [r0]
-_08051BAC:
- ldr r0, [r5]
- adds r2, r0, r4
- ldr r1, [r2]
- adds r1, 0x1
- str r1, [r2]
- movs r2, 0xA2
- lsls r2, 1
- adds r0, r2
- lsls r1, 16
- lsrs r1, 16
- bl sub_8051B40
- ldr r1, [r5]
- movs r3, 0xA3
- lsls r3, 1
- adds r0, r1, r3
- adds r1, r4
- ldrh r1, [r1]
- bl sub_8051B40
- ldr r2, [r5]
- adds r0, r2, r4
- ldr r0, [r0]
- cmp r0, 0x14
- beq _08051BE8
- movs r0, 0
- b _08051BFC
- .align 2, 0
-_08051BE4: .4byte gUnknown_03004854
-_08051BE8:
- movs r1, 0xA2
- lsls r1, 1
- adds r0, r2, r1
- movs r1, 0
- strh r1, [r0]
- movs r3, 0xA3
- lsls r3, 1
- adds r0, r2, r3
- strh r1, [r0]
- movs r0, 0x1
-_08051BFC:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8051B8C
-
- thumb_func_start sub_8051C04
-sub_8051C04: @ 8051C04
- ldr r1, _08051C20 @ =gUnknown_03004854
- ldr r2, [r1]
- movs r3, 0xA2
- lsls r3, 1
- adds r1, r2, r3
- ldrh r1, [r1]
- negs r1, r1
- strh r1, [r0, 0x24]
- adds r3, 0x2
- adds r1, r2, r3
- ldrh r1, [r1]
- negs r1, r1
- strh r1, [r0, 0x26]
- bx lr
- .align 2, 0
-_08051C20: .4byte gUnknown_03004854
- thumb_func_end sub_8051C04
-
- thumb_func_start sub_8051C24
-sub_8051C24: @ 8051C24
- push {lr}
- ldr r2, _08051C4C @ =gSaveBlock1
- ldr r0, _08051C50 @ =gUnknown_03004854
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x88
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 1
- ldr r3, _08051C54 @ =0x0000096c
- adds r2, r3
- adds r2, r0, r2
- adds r1, 0x5A
- ldrh r1, [r1]
- ldrh r0, [r2]
- cmp r0, r1
- bcs _08051C48
- strh r1, [r2]
-_08051C48:
- pop {r0}
- bx r0
- .align 2, 0
-_08051C4C: .4byte gSaveBlock1
-_08051C50: .4byte gUnknown_03004854
-_08051C54: .4byte 0x0000096c
- thumb_func_end sub_8051C24
-
- thumb_func_start sub_8051C58
-sub_8051C58: @ 8051C58
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x34
- ldr r1, _08051C7C @ =gUnknown_03004854
- ldr r0, [r1]
- ldrb r0, [r0]
- adds r2, r1, 0
- cmp r0, 0x6
- bls _08051C72
- b _08052006
-_08051C72:
- lsls r0, 2
- ldr r1, _08051C80 @ =_08051C84
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08051C7C: .4byte gUnknown_03004854
-_08051C80: .4byte _08051C84
- .align 2, 0
-_08051C84:
- .4byte _08051CA0
- .4byte _08051CB6
- .4byte _08051CD0
- .4byte _08051D20
- .4byte _08051F40
- .4byte _08051F54
- .4byte _08051FF4
-_08051CA0:
- ldr r1, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r2]
- movs r1, 0x98
- lsls r1, 1
- adds r0, r1
- movs r1, 0x11
- str r1, [r0]
- b _08052006
-_08051CB6:
- ldr r1, [r2]
- movs r0, 0x98
- lsls r0, 1
- adds r2, r1, r0
- ldr r0, [r2]
- subs r0, 0xA
- str r0, [r2]
- cmp r0, 0
- blt _08051CCA
- b _08052006
-_08051CCA:
- movs r0, 0
- str r0, [r2]
- b _08051FDE
-_08051CD0:
- ldr r1, [r2]
- movs r2, 0x98
- lsls r2, 1
- adds r1, r2
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x14
- bgt _08051CE4
- b _08052006
-_08051CE4:
- movs r6, 0
-_08051CE6:
- ldr r4, _08051D18 @ =gUnknown_03004854
- ldr r0, [r4]
- adds r0, 0x50
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08051D1C @ =gSprites
- adds r0, r1
- bl DestroySprite
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x2
- bls _08051CE6
- ldr r1, [r4]
- movs r0, 0x98
- lsls r0, 1
- adds r2, r1, r0
- movs r0, 0
- str r0, [r2]
- b _08051FDE
- .align 2, 0
-_08051D18: .4byte gUnknown_03004854
-_08051D1C: .4byte gSprites
-_08051D20:
- movs r0, 0x4
- movs r1, 0x2
- movs r2, 0x19
- movs r3, 0x11
- bl MenuDrawTextWindow
- ldr r0, _08051F10 @ =gOtherText_ResultsOfBlending
- movs r1, 0x5
- movs r2, 0x3
- movs r3, 0xA0
- bl sub_8072BD8
- movs r6, 0
- ldr r1, _08051F14 @ =gUnknown_03004854
- ldr r0, [r1]
- adds r0, 0x88
- add r2, sp, 0xC
- mov r9, r2
- mov r2, sp
- adds r2, 0x16
- str r2, [sp, 0x30]
- ldrb r0, [r0]
- cmp r6, r0
- bcs _08051E04
- mov r8, r1
- ldr r0, _08051F18 @ =gLinkPlayers
- mov r10, r0
-_08051D56:
- mov r1, r8
- ldr r2, [r1]
- movs r1, 0xB2
- lsls r1, 1
- adds r0, r2, r1
- adds r0, r6
- ldrb r5, [r0]
- mov r7, r9
- lsls r1, r5, 4
- adds r1, r2
- movs r2, 0xBF
- lsls r2, 1
- adds r1, r2
- adds r0, r7, 0
- bl StringCopy
- lsls r4, r5, 3
- subs r4, r5
- lsls r4, 2
- mov r1, r10
- adds r0, r4, r1
- ldrb r1, [r0, 0x1A]
- adds r0, r7, 0
- bl ConvertInternationalString
- adds r0, r7, 0
- ldr r1, _08051F1C @ =gOtherText_Berry
- bl de_sub_8073174
- mov r2, r8
- ldr r0, [r2]
- adds r7, r0, 0
- adds r7, 0xAB
- adds r5, r6, 0x1
- adds r0, r7, 0
- adds r1, r5, 0
- bl ConvertIntToDecimalString
- adds r7, r0, 0
- movs r1, 0
- strb r1, [r7]
- movs r0, 0xAD
- strb r0, [r7, 0x1]
- strb r1, [r7, 0x2]
- adds r7, 0x3
- ldr r0, _08051F20 @ =gLinkPlayers + 0x8
- adds r4, r0
- adds r0, r7, 0
- adds r1, r4, 0
- movs r2, 0x58
- movs r3, 0
- bl sub_8072C74
- adds r7, r0, 0
- add r1, sp, 0xC
- movs r2, 0x9D
- movs r3, 0
- bl sub_8072C74
- mov r2, r8
- ldr r1, [r2]
- adds r0, r1, 0
- adds r0, 0xAB
- ldr r3, _08051F24 @ =gUnknown_082165E9
- adds r1, 0x88
- ldrb r2, [r1]
- adds r3, r2, r3
- ldr r1, _08051F28 @ =gUnknown_082165EE
- adds r2, r1
- ldrb r1, [r2]
- adds r2, r6, 0
- muls r2, r1
- ldrb r3, [r3]
- adds r2, r3
- lsls r2, 24
- lsrs r2, 24
- movs r1, 0x5
- bl MenuPrint
- lsls r5, 16
- lsrs r6, r5, 16
- mov r1, r8
- ldr r0, [r1]
- adds r0, 0x88
- ldrb r0, [r0]
- cmp r6, r0
- bcc _08051D56
-_08051E04:
- ldr r6, _08051F14 @ =gUnknown_03004854
- ldr r0, [r6]
- adds r0, 0x5A
- ldrh r0, [r0]
- movs r1, 0x64
- bl __umodsi3
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- mov r0, r9
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r0, [r6]
- adds r7, r0, 0
- adds r7, 0xAB
- ldr r1, _08051F2C @ =gOtherText_MaxSpeed
- adds r0, r7, 0
- bl StringCopy
- adds r7, r0, 0
- ldr r0, [r6]
- adds r0, 0x5A
- ldrh r0, [r0]
- movs r1, 0x64
- bl __udivsi3
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r7, 0
- movs r2, 0x79
- movs r3, 0x1
- bl sub_8072C14
- adds r7, r0, 0
- movs r0, 0xB8
- strb r0, [r7]
- adds r7, 0x1
- adds r0, r7, 0
- mov r1, r9
- movs r2, 0x88
- movs r3, 0x1
- bl sub_8072C74
- adds r7, r0, 0
- ldr r1, _08051F30 @ =gOtherText_RPM
- bl StringCopy
- ldr r0, [r6]
- adds r0, 0xAB
- movs r1, 0x5
- movs r2, 0xD
- bl MenuPrint
- ldr r0, [r6]
- movs r2, 0x96
- lsls r2, 1
- adds r0, r2
- ldr r0, [r0]
- movs r1, 0x3C
- bl __udivsi3
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r4, 0
- movs r1, 0x3C
- bl __umodsi3
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r4, 0
- movs r1, 0x3C
- bl __udivsi3
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- mov r0, r9
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r0, [sp, 0x30]
- adds r1, r5, 0
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r0, [r6]
- adds r7, r0, 0
- adds r7, 0xAB
- ldr r1, _08051F34 @ =gOtherText_RequiredTime
- adds r0, r7, 0
- bl StringCopy
- adds r7, r0, 0
- mov r1, r9
- movs r2, 0x63
- movs r3, 0x1
- bl sub_8072C74
- adds r7, r0, 0
- ldr r1, _08051F38 @ =gOtherText_Min
- bl StringAppend
- adds r7, r0, 0
- ldr r1, [sp, 0x30]
- movs r2, 0x88
- movs r3, 0x1
- bl sub_8072C74
- adds r7, r0, 0
- ldr r1, _08051F3C @ =gOtherText_Sec
- bl StringCopy
- ldr r0, [r6]
- adds r0, 0xAB
- movs r1, 0x5
- movs r2, 0xF
- bl MenuPrint
- ldr r1, [r6]
- movs r0, 0x98
- lsls r0, 1
- adds r2, r1, r0
- movs r0, 0
- str r0, [r2]
- b _08051FDE
- .align 2, 0
-_08051F10: .4byte gOtherText_ResultsOfBlending
-_08051F14: .4byte gUnknown_03004854
-_08051F18: .4byte gLinkPlayers
-_08051F1C: .4byte gOtherText_Berry
-_08051F20: .4byte gLinkPlayers + 0x8
-_08051F24: .4byte gUnknown_082165E9
-_08051F28: .4byte gUnknown_082165EE
-_08051F2C: .4byte gOtherText_MaxSpeed
-_08051F30: .4byte gOtherText_RPM
-_08051F34: .4byte gOtherText_RequiredTime
-_08051F38: .4byte gOtherText_Min
-_08051F3C: .4byte gOtherText_Sec
-_08051F40:
- ldr r0, _08051F50 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08052006
- ldr r1, [r2]
- b _08051FDE
- .align 2, 0
-_08051F50: .4byte gMain
-_08051F54:
- bl MenuZeroFillScreen
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- movs r6, 0
- add r5, sp, 0x28
- ldr r0, _08051FE8 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r3, r0, 0
- adds r3, 0x80
- add r2, sp, 0x20
-_08051F72:
- lsls r1, r6, 1
- adds r0, r3, r1
- ldrh r0, [r0]
- cmp r0, 0
- beq _08051F82
- adds r1, r2, r1
- subs r0, 0x85
- strh r0, [r1]
-_08051F82:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x3
- bls _08051F72
- bl sub_8050760
- ldr r4, _08051FE8 @ =gUnknown_03004854
- ldr r3, [r4]
- movs r1, 0xBE
- lsls r1, 1
- adds r0, r3, r1
- adds r1, r3, 0
- adds r1, 0x88
- ldrb r2, [r1]
- subs r1, 0x2E
- ldrh r1, [r1]
- str r1, [sp]
- adds r1, r5, 0
- add r3, sp, 0x4
- bl sub_8050520
- ldr r1, [r4]
- adds r1, 0xAB
- adds r0, r5, 0
- bl sub_805201C
- ldr r0, _08051FEC @ =sub_8052BD0
- movs r1, 0x6
- bl CreateTask
- ldr r0, [r4]
- adds r0, 0xAB
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrintMessage
- ldr r0, _08051FF0 @ =gScriptItemId
- ldrh r0, [r0]
- movs r1, 0x1
- bl RemoveBagItem
- adds r0, r5, 0
- bl sub_810CA34
- ldr r1, [r4]
-_08051FDE:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08052006
- .align 2, 0
-_08051FE8: .4byte gUnknown_03004854
-_08051FEC: .4byte sub_8052BD0
-_08051FF0: .4byte gScriptItemId
-_08051FF4:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- beq _08052006
- bl sub_8051C24
- movs r0, 0x1
- b _08052008
-_08052006:
- movs r0, 0
-_08052008:
- add sp, 0x34
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8051C58
-
- thumb_func_start sub_805201C
-sub_805201C: @ 805201C
- push {r4-r6,lr}
- sub sp, 0xC
- adds r5, r0, 0
- adds r6, r1, 0
- movs r0, 0xFF
- strb r0, [r6]
- ldr r1, _080520B0 @ =gPokeblockNames
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- adds r0, r6, 0
- bl StringCopy
- ldr r1, _080520B4 @ =gOtherText_PokeBlockMade
- adds r0, r6, 0
- bl de_sub_8073174
- ldr r1, _080520B8 @ =gUnknown_082162C8
- adds r0, r6, 0
- bl StringAppend
- adds r0, r5, 0
- bl sub_810C9B0
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- bl sub_810C9E8
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r1, _080520BC @ =gOtherText_BlockLevelIs
- adds r0, r6, 0
- bl StringAppend
- mov r0, sp
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r0, r6, 0
- mov r1, sp
- bl StringAppend
- ldr r1, _080520C0 @ =gOtherText_BlockFeelIs
- adds r0, r6, 0
- bl StringAppend
- mov r0, sp
- adds r1, r5, 0
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r0, r6, 0
- mov r1, sp
- bl StringAppend
- ldr r1, _080520C4 @ =gOtherText_Period
- adds r0, r6, 0
- bl StringAppend
- ldr r1, _080520C8 @ =gUnknown_08216249
- adds r0, r6, 0
- bl StringAppend
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080520B0: .4byte gPokeblockNames
-_080520B4: .4byte gOtherText_PokeBlockMade
-_080520B8: .4byte gUnknown_082162C8
-_080520BC: .4byte gOtherText_BlockLevelIs
-_080520C0: .4byte gOtherText_BlockFeelIs
-_080520C4: .4byte gOtherText_Period
-_080520C8: .4byte gUnknown_08216249
- thumb_func_end sub_805201C
-
- thumb_func_start sub_80520CC
-sub_80520CC: @ 80520CC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- mov r9, r0
- mov r12, r2
- lsls r1, 24
- lsrs r7, r1, 24
- movs r0, 0
- cmp r0, r7
- bge _08052118
-_080520E2:
- movs r5, 0
- adds r1, r0, 0x1
- mov r8, r1
- cmp r5, r7
- bge _08052112
- mov r1, r9
- adds r6, r1, r0
-_080520F0:
- ldrb r4, [r6]
- lsls r1, r4, 2
- add r1, r12
- mov r0, r9
- adds r2, r0, r5
- ldrb r3, [r2]
- lsls r0, r3, 2
- add r0, r12
- ldr r1, [r1]
- ldr r0, [r0]
- cmp r1, r0
- bls _0805210C
- strb r3, [r6]
- strb r4, [r2]
-_0805210C:
- adds r5, 0x1
- cmp r5, r7
- blt _080520F0
-_08052112:
- mov r0, r8
- cmp r0, r7
- blt _080520E2
-_08052118:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80520CC
-
- thumb_func_start sub_8052124
-sub_8052124: @ 8052124
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- movs r5, 0
- ldr r1, _08052144 @ =gUnknown_03004854
- ldr r0, [r1]
- adds r0, 0x88
- mov r10, r1
- mov r2, sp
- adds r2, 0x4
- str r2, [sp, 0x14]
- b _08052158
- .align 2, 0
-_08052144: .4byte gUnknown_03004854
-_08052148:
- mov r4, sp
- adds r0, r4, r5
- strb r5, [r0]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, [r1]
- adds r0, 0x88
-_08052158:
- ldrb r0, [r0]
- cmp r5, r0
- bcc _08052148
- movs r5, 0
- mov r1, r10
- ldr r0, [r1]
- adds r1, r0, 0
- adds r1, 0x88
- ldrb r2, [r1]
- cmp r5, r2
- bcs _080521D6
- ldr r4, [sp, 0x14]
- mov r9, r4
- movs r2, 0xA6
- lsls r2, 1
- adds r2, r0
- mov r8, r2
- mov r12, r1
- movs r4, 0xA7
- lsls r4, 1
- adds r7, r0, r4
- movs r1, 0xA8
- lsls r1, 1
- adds r6, r0, r1
-_08052188:
- lsls r4, r5, 2
- add r4, r9
- lsls r3, r5, 1
- adds r3, r5
- lsls r3, 1
- mov r2, r8
- adds r0, r2, r3
- ldrh r2, [r0]
- lsls r0, r2, 5
- subs r0, r2
- lsls r1, r0, 6
- subs r1, r0
- lsls r1, 3
- adds r1, r2
- lsls r1, 6
- str r1, [r4]
- adds r0, r7, r3
- ldrh r2, [r0]
- lsls r0, r2, 5
- subs r0, r2
- lsls r0, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- str r1, [r4]
- movs r0, 0xFA
- lsls r0, 2
- adds r1, r0
- adds r3, r6, r3
- ldrh r0, [r3]
- subs r1, r0
- str r1, [r4]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- mov r1, r12
- ldrb r1, [r1]
- cmp r5, r1
- bcc _08052188
-_080521D6:
- mov r2, r10
- ldr r0, [r2]
- adds r0, 0x88
- ldrb r1, [r0]
- mov r0, sp
- ldr r2, [sp, 0x14]
- bl sub_80520CC
- movs r5, 0
- mov r4, r10
- ldr r0, [r4]
- adds r0, 0x88
- ldrb r0, [r0]
- cmp r5, r0
- bcs _08052218
- mov r2, r10
- movs r3, 0xB2
- lsls r3, 1
-_080521FA:
- ldr r1, [r2]
- adds r1, r3
- adds r1, r5
- mov r4, sp
- adds r0, r4, r5
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, [r2]
- adds r0, 0x88
- ldrb r0, [r0]
- cmp r5, r0
- bcc _080521FA
-_08052218:
- 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_8052124
-
- thumb_func_start sub_8052228
-sub_8052228: @ 8052228
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r1, _08052248 @ =gUnknown_03004854
- ldr r0, [r1]
- ldrb r0, [r0]
- adds r2, r1, 0
- cmp r0, 0x6
- bls _0805223C
- b _080524AE
-_0805223C:
- lsls r0, 2
- ldr r1, _0805224C @ =_08052250
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08052248: .4byte gUnknown_03004854
-_0805224C: .4byte _08052250
- .align 2, 0
-_08052250:
- .4byte _0805226C
- .4byte _08052282
- .4byte _0805229C
- .4byte _080522B6
- .4byte _08052464
- .4byte _0805247E
- .4byte _080524A4
-_0805226C:
- ldr r1, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r2]
- movs r1, 0x98
- lsls r1, 1
- adds r0, r1
- movs r1, 0xFF
- str r1, [r0]
- b _080524AE
-_08052282:
- ldr r1, [r2]
- movs r0, 0x98
- lsls r0, 1
- adds r2, r1, r0
- ldr r0, [r2]
- subs r0, 0xA
- str r0, [r2]
- cmp r0, 0
- blt _08052296
- b _080524AE
-_08052296:
- movs r0, 0
- str r0, [r2]
- b _08052494
-_0805229C:
- ldr r1, [r2]
- movs r0, 0x98
- lsls r0, 1
- adds r2, r1, r0
- ldr r0, [r2]
- adds r0, 0x1
- str r0, [r2]
- cmp r0, 0x14
- bgt _080522B0
- b _080524AE
-_080522B0:
- movs r0, 0
- str r0, [r2]
- b _08052494
-_080522B6:
- movs r0, 0x4
- movs r1, 0x2
- movs r2, 0x19
- movs r3, 0x11
- bl MenuDrawTextWindow
- ldr r0, _0805236C @ =gOtherText_Ranking
- movs r1, 0x5
- movs r2, 0x3
- movs r3, 0xA0
- bl sub_8072BD8
- ldr r6, _08052370 @ =gSpriteTemplate_821645C
- adds r0, r6, 0
- movs r1, 0x8C
- movs r2, 0x34
- movs r3, 0
- bl CreateSprite
- ldr r7, _08052374 @ =gUnknown_03004854
- ldr r1, [r7]
- adds r1, 0x50
- strb r0, [r1]
- ldr r1, _08052378 @ =gSprites
- mov r8, r1
- ldr r2, [r7]
- adds r2, 0x50
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- mov r5, r8
- adds r5, 0x1C
- adds r0, r5
- ldr r4, _0805237C @ =SpriteCallbackDummy
- str r4, [r0]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- movs r1, 0x3
- bl StartSpriteAnim
- adds r0, r6, 0
- movs r1, 0xA4
- movs r2, 0x34
- movs r3, 0
- bl CreateSprite
- ldr r1, [r7]
- adds r1, 0x51
- strb r0, [r1]
- ldr r0, [r7]
- adds r0, 0x51
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- str r4, [r0]
- adds r0, r6, 0
- movs r1, 0xBC
- movs r2, 0x34
- movs r3, 0
- bl CreateSprite
- ldr r1, [r7]
- adds r1, 0x52
- strb r0, [r1]
- ldr r2, [r7]
- adds r2, 0x52
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- str r4, [r0]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- movs r1, 0x1
- bl StartSpriteAnim
- bl sub_8052124
- movs r2, 0
- mov r8, r2
- b _0805243C
- .align 2, 0
-_0805236C: .4byte gOtherText_Ranking
-_08052370: .4byte gSpriteTemplate_821645C
-_08052374: .4byte gUnknown_03004854
-_08052378: .4byte gSprites
-_0805237C: .4byte SpriteCallbackDummy
-_08052380:
- ldr r1, [r7]
- movs r2, 0xB2
- lsls r2, 1
- adds r0, r1, r2
- add r0, r8
- ldrb r5, [r0]
- adds r2, r1, 0
- adds r2, 0xAB
- movs r0, 0xFC
- strb r0, [r2]
- movs r0, 0x13
- strb r0, [r2, 0x1]
- movs r0, 0x4
- strb r0, [r2, 0x2]
- adds r2, 0x3
- mov r6, r8
- adds r6, 0x1
- adds r0, r2, 0
- adds r1, r6, 0
- bl ConvertIntToDecimalString
- adds r2, r0, 0
- movs r1, 0
- strb r1, [r2]
- movs r0, 0xAD
- strb r0, [r2, 0x1]
- strb r1, [r2, 0x2]
- adds r2, 0x3
- lsls r1, r5, 3
- subs r1, r5
- lsls r1, 2
- ldr r0, _08052458 @ =gLinkPlayers + 0x8
- adds r1, r0
- adds r0, r2, 0
- bl StringCopy
- adds r2, r0, 0
- ldr r0, [r7]
- lsls r4, r5, 1
- adds r4, r5
- lsls r4, 1
- movs r1, 0xA6
- lsls r1, 1
- adds r0, r1
- adds r0, r4
- ldrh r1, [r0]
- adds r0, r2, 0
- movs r2, 0x6C
- movs r3, 0x1
- bl sub_8072C14
- adds r2, r0, 0
- ldr r0, [r7]
- movs r1, 0xA7
- lsls r1, 1
- adds r0, r1
- adds r0, r4
- ldrh r1, [r0]
- adds r0, r2, 0
- movs r2, 0x84
- movs r3, 0x1
- bl sub_8072C14
- adds r2, r0, 0
- ldr r0, [r7]
- movs r1, 0xA8
- lsls r1, 1
- adds r0, r1
- adds r0, r4
- ldrh r1, [r0]
- adds r0, r2, 0
- movs r2, 0x9C
- movs r3, 0x1
- bl sub_8072C14
- ldr r1, [r7]
- adds r0, r1, 0
- adds r0, 0xAB
- ldr r2, _0805245C @ =gUnknown_082165F3
- adds r1, 0x88
- ldrb r1, [r1]
- adds r1, r2
- ldrb r1, [r1]
- mov r2, r8
- muls r2, r1
- adds r2, 0x8
- lsls r2, 24
- lsrs r2, 24
- movs r1, 0x5
- bl MenuPrint
- lsls r6, 16
- lsrs r6, 16
- mov r8, r6
-_0805243C:
- ldr r0, [r7]
- adds r0, 0x88
- ldrb r0, [r0]
- cmp r8, r0
- bcc _08052380
- ldr r0, _08052460 @ =gUnknown_03004854
- ldr r1, [r0]
- movs r0, 0x98
- lsls r0, 1
- adds r2, r1, r0
- movs r0, 0
- str r0, [r2]
- b _08052494
- .align 2, 0
-_08052458: .4byte gLinkPlayers + 0x8
-_0805245C: .4byte gUnknown_082165F3
-_08052460: .4byte gUnknown_03004854
-_08052464:
- ldr r2, [r2]
- movs r0, 0x98
- lsls r0, 1
- adds r1, r2, r0
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x14
- ble _080524AE
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- b _080524AE
-_0805247E:
- ldr r0, _0805249C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080524AE
- movs r0, 0x5
- bl PlaySE
- ldr r0, _080524A0 @ =gUnknown_03004854
- ldr r1, [r0]
-_08052494:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080524AE
- .align 2, 0
-_0805249C: .4byte gMain
-_080524A0: .4byte gUnknown_03004854
-_080524A4:
- ldr r1, [r2]
- movs r0, 0
- strb r0, [r1]
- movs r0, 0x1
- b _080524B0
-_080524AE:
- movs r0, 0
-_080524B0:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8052228
-
- thumb_func_start unref_sub_80524BC
-unref_sub_80524BC: @ 80524BC
- push {r4,lr}
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl ResetTasks
- ldr r0, _0805251C @ =sub_804E2D8
- bl SetVBlankCallback
- ldr r4, _08052520 @ =gWindowConfig_81E6CE4
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- ldr r0, _08052524 @ =gMain
- ldrh r0, [r0, 0x20]
- bl SeedRng
- movs r1, 0x80
- lsls r1, 19
- movs r2, 0xAA
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- ldr r1, _08052528 @ =gUnknown_03000560
- movs r0, 0xFA
- lsls r0, 5
- strh r0, [r1, 0x1A]
- ldrb r0, [r1, 0x10]
- adds r0, 0x1
- strb r0, [r1, 0x10]
- ldr r0, _0805252C @ =sub_8052AF8
- bl SetMainCallback2
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0805251C: .4byte sub_804E2D8
-_08052520: .4byte gWindowConfig_81E6CE4
-_08052524: .4byte gMain
-_08052528: .4byte gUnknown_03000560
-_0805252C: .4byte sub_8052AF8
- thumb_func_end unref_sub_80524BC
-
- thumb_func_start sub_8052530
-sub_8052530: @ 8052530
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x98
- ldr r1, _080525C8 @ =gOtherText_BPMAndDash
- mov r0, sp
- bl StringCopy
- mov r0, sp
- movs r1, 0x2
- movs r2, 0
- bl MenuPrint
- ldr r4, _080525CC @ =gUnknown_03000560
- movs r1, 0x1A
- ldrsh r0, [r4, r1]
- movs r1, 0x64
- bl __divsi3
- adds r1, r0, 0
- lsls r1, 16
- asrs r1, 16
- mov r0, sp
- movs r2, 0x2
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- mov r0, sp
- movs r1, 0x6
- movs r2, 0
- bl MenuPrint
- movs r6, 0
- mov r2, sp
- adds r2, 0x3
- str r2, [sp, 0x84]
- mov r3, sp
- adds r3, 0x6
- str r3, [sp, 0x88]
- mov r0, sp
- adds r0, 0x9
- str r0, [sp, 0x8C]
- mov r1, sp
- adds r1, 0xC
- str r1, [sp, 0x90]
- adds r2, 0xC
- str r2, [sp, 0x94]
- mov r8, r4
- mov r7, sp
- ldr r3, _080525D0 @ =gBerries
- mov r9, r3
- ldr r0, _080525D4 @ =gUnknown_082165F8
- mov r10, r0
-_0805259E:
- mov r1, r8
- movs r0, 0
- ldrsb r0, [r1, r0]
- cmp r0, r6
- bne _080525D8
- movs r0, 0xEF
- strb r0, [r7]
- mov r0, r8
- adds r0, 0x1
- adds r0, r6, r0
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- adds r0, 0x85
- lsls r0, 16
- lsrs r0, 16
- mov r1, sp
- adds r1, 0x1
- bl CopyItemName
- b _080525F8
- .align 2, 0
-_080525C8: .4byte gOtherText_BPMAndDash
-_080525CC: .4byte gUnknown_03000560
-_080525D0: .4byte gBerries
-_080525D4: .4byte gUnknown_082165F8
-_080525D8:
- mov r0, r8
- adds r0, 0x1
- adds r0, r6, r0
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- adds r0, 0x85
- lsls r0, 16
- lsrs r0, 16
- mov r1, sp
- bl CopyItemName
- movs r0, 0
- strb r0, [r7, 0x6]
- movs r0, 0xFF
- strb r0, [r7, 0x7]
-_080525F8:
- lsls r5, r6, 1
- adds r5, r6
- adds r5, 0x3
- lsls r5, 24
- lsrs r5, 24
- mov r0, sp
- movs r1, 0x2
- adds r2, r5, 0
- bl MenuPrint
- mov r4, r8
- adds r4, 0x1
- adds r4, r6, r4
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r9
- ldrb r1, [r0, 0x15]
- mov r0, sp
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- mov r0, sp
- mov r1, r10
- bl StringAppend
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r9
- ldrb r1, [r0, 0x16]
- ldr r0, [sp, 0x84]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- mov r0, sp
- mov r1, r10
- bl StringAppend
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r9
- ldrb r1, [r0, 0x17]
- ldr r0, [sp, 0x88]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- mov r0, sp
- mov r1, r10
- bl StringAppend
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r9
- ldrb r1, [r0, 0x18]
- ldr r0, [sp, 0x8C]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- mov r0, sp
- mov r1, r10
- bl StringAppend
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r9
- ldrb r1, [r0, 0x19]
- ldr r0, [sp, 0x90]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- mov r0, sp
- mov r1, r10
- bl StringAppend
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r9
- ldrb r1, [r0, 0x1A]
- ldr r0, [sp, 0x94]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- movs r2, 0x1
- negs r2, r2
- add r3, sp, 0x80
- strb r2, [r3]
- movs r0, 0xFF
- strb r0, [r7, 0x11]
- mov r0, sp
- movs r1, 0x7
- adds r2, r5, 0
- bl MenuPrint
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x3
- bhi _080526EC
- b _0805259E
-_080526EC:
- mov r1, r8
- ldrb r0, [r1, 0x8]
- cmp r0, 0
- beq _080527A4
- ldr r1, _080527B4 @ =gPokeblockNames
- mov r2, r8
- ldrb r0, [r2, 0x8]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- mov r0, sp
- bl StringCopy
- mov r0, sp
- movs r1, 0x2
- movs r2, 0xF
- bl MenuPrint
- mov r3, r8
- ldrb r1, [r3, 0x11]
- mov r0, sp
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToHexStringN
- ldr r4, _080527B8 @ =gUnknown_082165F8
- mov r0, sp
- adds r1, r4, 0
- bl StringAppend
- mov r0, r8
- ldrb r1, [r0, 0x12]
- ldr r0, [sp, 0x84]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToHexStringN
- mov r0, sp
- adds r1, r4, 0
- bl StringAppend
- mov r2, r8
- ldrb r1, [r2, 0x13]
- ldr r0, [sp, 0x88]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToHexStringN
- mov r0, sp
- adds r1, r4, 0
- bl StringAppend
- mov r3, r8
- ldrb r1, [r3, 0x14]
- ldr r0, [sp, 0x8C]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToHexStringN
- mov r0, sp
- adds r1, r4, 0
- bl StringAppend
- mov r0, r8
- ldrb r1, [r0, 0x15]
- ldr r0, [sp, 0x90]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToHexStringN
- mov r0, sp
- adds r1, r4, 0
- bl StringAppend
- mov r2, r8
- ldrb r1, [r2, 0x16]
- ldr r0, [sp, 0x94]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToHexStringN
- mov r1, sp
- ldrb r0, [r1, 0x11]
- add r3, sp, 0x80
- ldrb r3, [r3]
- orrs r0, r3
- strb r0, [r1, 0x11]
- mov r0, sp
- movs r1, 0x7
- movs r2, 0x11
- bl MenuPrint
-_080527A4:
- add sp, 0x98
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080527B4: .4byte gPokeblockNames
-_080527B8: .4byte gUnknown_082165F8
- thumb_func_end sub_8052530
-
- thumb_func_start sub_80527BC
-sub_80527BC: @ 80527BC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x58
- ldr r0, _08052844 @ =gUnknown_020297DC
- ldrb r0, [r0]
- add r6, sp, 0x48
- cmp r0, 0x1
- bne _08052814
- movs r1, 0
- ldr r3, _08052848 @ =gUnknown_03004840
- movs r2, 0
-_080527D6:
- lsls r0, r1, 1
- adds r0, r3
- strh r2, [r0]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0x9
- bls _080527D6
- bl Random
- ldr r1, _0805284C @ =gUnknown_03004830
- strh r0, [r1]
- ldr r1, _08052850 @ =gUnknown_020297E0
- movs r0, 0
- str r0, [r1]
- ldr r1, _08052844 @ =gUnknown_020297DC
- movs r0, 0x2
- strb r0, [r1]
- movs r4, 0
- ldr r2, _08052854 @ =0x02000000
- movs r1, 0
-_08052800:
- adds r0, r4, r2
- strb r1, [r0]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0xC7
- bls _08052800
- ldr r1, _08052858 @ =gUnknown_020297E8
- movs r0, 0
- strb r0, [r1]
-_08052814:
- movs r4, 0
- movs r0, 0x1
- mov r8, r0
- ldr r7, _08052858 @ =gUnknown_020297E8
- ldr r5, _08052850 @ =gUnknown_020297E0
- ldr r1, _08052854 @ =0x02000000
- mov r9, r1
- ldr r3, _0805285C @ =gUnknown_020297E4
-_08052824:
- str r3, [sp, 0x54]
- bl Random
- lsls r0, 16
- lsrs r0, 31
- mov r1, r8
- ands r0, r1
- ldr r3, [sp, 0x54]
- ldrb r1, [r7]
- cmp r0, r1
- bne _08052860
- ldr r0, [r5]
- adds r0, 0x1
- str r0, [r5]
- b _0805287A
- .align 2, 0
-_08052844: .4byte gUnknown_020297DC
-_08052848: .4byte gUnknown_03004840
-_0805284C: .4byte gUnknown_03004830
-_08052850: .4byte gUnknown_020297E0
-_08052854: .4byte 0x02000000
-_08052858: .4byte gUnknown_020297E8
-_0805285C: .4byte gUnknown_020297E4
-_08052860:
- ldr r2, [r3]
- lsls r0, r2, 1
- add r0, r9
- ldr r1, [r5]
- strh r1, [r0]
- adds r2, 0x1
- str r2, [r3]
- movs r0, 0
- str r0, [r5]
- ldrb r0, [r7]
- mov r1, r8
- eors r0, r1
- strb r0, [r7]
-_0805287A:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x63
- bls _08052824
- mov r1, sp
- movs r0, 0xFF
- strb r0, [r1]
- ldr r0, _08052900 @ =gUnknown_03004830
- ldrh r1, [r0]
- adds r0, r6, 0
- movs r2, 0x2
- movs r3, 0x8
- bl ConvertIntToHexStringN
- mov r0, sp
- adds r1, r6, 0
- bl StringAppend
- ldr r1, _08052904 @ =gUnknown_082165F8
- mov r0, sp
- bl StringAppend
- ldr r0, _08052908 @ =gUnknown_020297E0
- ldr r1, [r0]
- adds r0, r6, 0
- movs r2, 0x2
- movs r3, 0x8
- bl ConvertIntToHexStringN
- mov r0, sp
- adds r1, r6, 0
- bl StringAppend
- ldr r1, _0805290C @ =gUnknown_08216600
- mov r0, sp
- bl StringAppend
- ldr r4, _08052910 @ =gUnknown_020297DC
- ldrb r0, [r4]
- cmp r0, 0x3
- bne _080528E8
- ldr r0, _08052914 @ =gUnknown_020297E4
- ldr r1, [r0]
- adds r0, r6, 0
- movs r2, 0x2
- movs r3, 0x10
- bl ConvertIntToHexStringN
- mov r0, sp
- adds r1, r6, 0
- bl StringAppend
- movs r0, 0
- strb r0, [r4]
-_080528E8:
- mov r0, sp
- movs r1, 0x2
- movs r2, 0xF
- bl MenuPrint
- add sp, 0x58
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08052900: .4byte gUnknown_03004830
-_08052904: .4byte gUnknown_082165F8
-_08052908: .4byte gUnknown_020297E0
-_0805290C: .4byte gUnknown_08216600
-_08052910: .4byte gUnknown_020297DC
-_08052914: .4byte gUnknown_020297E4
- thumb_func_end sub_80527BC
-
- thumb_func_start sub_8052918
-sub_8052918: @ 8052918
- push {r4-r6,lr}
- sub sp, 0x4C
- ldr r2, _08052A88 @ =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- ldr r4, _08052A8C @ =gUnknown_03000560
- cmp r0, 0
- beq _0805294C
- movs r1, 0xFA
- lsls r1, 2
- adds r0, r1, 0
- ldrh r1, [r4, 0x1A]
- adds r0, r1
- strh r0, [r4, 0x1A]
- lsls r0, 16
- ldr r1, _08052A90 @ =0x75300000
- cmp r0, r1
- ble _08052946
- movs r0, 0xFA
- lsls r0, 2
- strh r0, [r4, 0x1A]
-_08052946:
- ldrb r0, [r4, 0x10]
- adds r0, 0x1
- strb r0, [r4, 0x10]
-_0805294C:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x80
- lsls r0, 2
- ands r0, r1
- cmp r0, 0
- beq _08052972
- ldr r1, _08052A94 @ =0xfffffc18
- adds r0, r1, 0
- ldrh r1, [r4, 0x1A]
- adds r0, r1
- strh r0, [r4, 0x1A]
- lsls r0, 16
- cmp r0, 0
- bge _0805296C
- ldr r0, _08052A98 @ =0x00007530
- strh r0, [r4, 0x1A]
-_0805296C:
- ldrb r0, [r4, 0x10]
- adds r0, 0x1
- strb r0, [r4, 0x10]
-_08052972:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08052992
- ldrb r0, [r4]
- subs r0, 0x1
- strb r0, [r4]
- lsls r0, 24
- cmp r0, 0
- bge _0805298C
- movs r0, 0x3
- strb r0, [r4]
-_0805298C:
- ldrb r0, [r4, 0x10]
- adds r0, 0x1
- strb r0, [r4, 0x10]
-_08052992:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080529B4
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x3
- ble _080529AE
- movs r0, 0
- strb r0, [r4]
-_080529AE:
- ldrb r0, [r4, 0x10]
- adds r0, 0x1
- strb r0, [r4, 0x10]
-_080529B4:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080529E4
- adds r3, r4, 0
- movs r1, 0
- ldrsb r1, [r3, r1]
- adds r5, r3, 0x1
- adds r1, r5
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- cmp r0, 0
- bge _080529DE
- movs r0, 0
- ldrsb r0, [r3, r0]
- adds r0, r5
- movs r1, 0x2A
- strb r1, [r0]
-_080529DE:
- ldrb r0, [r4, 0x10]
- adds r0, 0x1
- strb r0, [r4, 0x10]
-_080529E4:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08052A16
- ldr r3, _08052A8C @ =gUnknown_03000560
- movs r1, 0
- ldrsb r1, [r3, r1]
- adds r4, r3, 0x1
- adds r1, r4
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x2A
- ble _08052A10
- movs r0, 0
- ldrsb r0, [r3, r0]
- adds r0, r4
- movs r1, 0
- strb r1, [r0]
-_08052A10:
- ldrb r0, [r3, 0x10]
- adds r0, 0x1
- strb r0, [r3, 0x10]
-_08052A16:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08052AA0
- movs r6, 0
- movs r4, 0
- ldr r5, _08052A8C @ =gUnknown_03000560
-_08052A26:
- adds r0, r5, 0x1
- adds r2, r4, r0
- movs r0, 0
- ldrsb r0, [r2, r0]
- cmp r0, 0x2A
- beq _08052A64
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r0, r4, 1
- mov r1, sp
- adds r1, r0
- adds r1, 0x4
- movs r0, 0
- ldrsb r0, [r2, r0]
- strh r0, [r1]
- add r0, sp, 0xC
- lsls r1, r4, 4
- adds r0, r1
- movs r1, 0
- ldrsb r1, [r2, r1]
- adds r1, 0x85
- lsls r1, 16
- lsrs r1, 16
- bl sub_804E844
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x3
- bls _08052A26
-_08052A64:
- cmp r6, 0x1
- bls _08052A9C
- add r0, sp, 0xC
- adds r1, r5, 0
- adds r1, 0x8
- lsls r2, r6, 24
- lsrs r2, 24
- adds r3, r5, 0
- adds r3, 0x11
- ldrh r4, [r5, 0x1A]
- str r4, [sp]
- bl sub_8050744
- ldrb r0, [r5, 0x10]
- adds r0, 0x1
- strb r0, [r5, 0x10]
- b _08052AA0
- .align 2, 0
-_08052A88: .4byte gMain
-_08052A8C: .4byte gUnknown_03000560
-_08052A90: .4byte 0x75300000
-_08052A94: .4byte 0xfffffc18
-_08052A98: .4byte 0x00007530
-_08052A9C:
- movs r0, 0xFF
- strb r0, [r5, 0x8]
-_08052AA0:
- ldr r4, _08052AE8 @ =gUnknown_03000560
- ldrb r0, [r4, 0x10]
- cmp r0, 0
- beq _08052AB0
- bl sub_8052530
- movs r0, 0
- strb r0, [r4, 0x10]
-_08052AB0:
- ldr r3, _08052AEC @ =gMain
- ldrh r1, [r3, 0x2E]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _08052AD4
- ldr r2, _08052AF0 @ =gUnknown_020297DC
- ldrb r0, [r2]
- adds r1, r0, 0
- cmp r1, 0
- bne _08052ADC
- adds r0, 0x1
- strb r0, [r2]
- ldr r0, _08052AF4 @ =gUnknown_020297E0
- str r1, [r0]
- ldrh r0, [r3, 0x20]
- bl SeedRng
-_08052AD4:
- ldr r0, _08052AF0 @ =gUnknown_020297DC
- ldrb r0, [r0]
- cmp r0, 0
- beq _08052AE0
-_08052ADC:
- bl sub_80527BC
-_08052AE0:
- add sp, 0x4C
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08052AE8: .4byte gUnknown_03000560
-_08052AEC: .4byte gMain
-_08052AF0: .4byte gUnknown_020297DC
-_08052AF4: .4byte gUnknown_020297E0
- thumb_func_end sub_8052918
-
- thumb_func_start sub_8052AF8
-sub_8052AF8: @ 8052AF8
- push {lr}
- bl sub_8052918
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_8052AF8
-
- thumb_func_start ShowBerryBlenderRecordWindow
-ShowBerryBlenderRecordWindow: @ 8052B14
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x20
- movs r0, 0x6
- movs r1, 0x3
- movs r2, 0x17
- movs r3, 0x10
- bl MenuDrawTextWindow
- ldr r0, _08052BAC @ =gMultiText_BerryBlenderMaxSpeedRecord
- movs r1, 0x8
- movs r2, 0x4
- bl MenuPrint
- ldr r0, _08052BB0 @ =gMultiText_2P3P4P
- movs r1, 0x8
- movs r2, 0x9
- bl MenuPrint
- movs r0, 0
- mov r8, r0
- ldr r0, _08052BB4 @ =gSaveBlock1
- movs r7, 0x90
- lsls r7, 20
- ldr r1, _08052BB8 @ =0x0000096c
- adds r6, r0, r1
-_08052B4A:
- ldrh r4, [r6]
- adds r0, r4, 0
- movs r1, 0x64
- bl __udivsi3
- adds r1, r0, 0
- mov r0, sp
- movs r2, 0x12
- movs r3, 0x1
- bl sub_8072C14
- adds r5, r0, 0
- movs r0, 0xB8
- strb r0, [r5]
- adds r5, 0x1
- adds r0, r4, 0
- movs r1, 0x64
- bl __umodsi3
- adds r1, r0, 0
- adds r0, r5, 0
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- adds r5, r0, 0
- ldr r1, _08052BBC @ =gOtherText_RPM
- bl StringAppend
- lsrs r2, r7, 24
- mov r0, sp
- movs r1, 0xF
- bl MenuPrint
- movs r0, 0x80
- lsls r0, 18
- adds r7, r0
- adds r6, 0x2
- movs r1, 0x1
- add r8, r1
- mov r0, r8
- cmp r0, 0x2
- ble _08052B4A
- add sp, 0x20
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08052BAC: .4byte gMultiText_BerryBlenderMaxSpeedRecord
-_08052BB0: .4byte gMultiText_2P3P4P
-_08052BB4: .4byte gSaveBlock1
-_08052BB8: .4byte 0x0000096c
-_08052BBC: .4byte gOtherText_RPM
- thumb_func_end ShowBerryBlenderRecordWindow
-
- thumb_func_start sub_8052BD0
-sub_8052BD0: @ 8052BD0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r1, _08052C1C @ =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 _08052BF6
- ldr r0, _08052C20 @ =0x0000016f
- bl PlayFanfare
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_08052BF6:
- bl IsFanfareTaskInactive
- lsls r0, 24
- cmp r0, 0
- beq _08052C16
- ldr r0, _08052C24 @ =gUnknown_03004854
- ldr r0, [r0]
- movs r1, 0xBC
- lsls r1, 1
- adds r0, r1
- ldrh r0, [r0]
- bl PlayBGM
- adds r0, r5, 0
- bl DestroyTask
-_08052C16:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08052C1C: .4byte gTasks
-_08052C20: .4byte 0x0000016f
-_08052C24: .4byte gUnknown_03004854
- thumb_func_end sub_8052BD0
diff --git a/asm/battle_2.s b/asm/battle_2.s
index 804cefa76..7868f8492 100644
--- a/asm/battle_2.s
+++ b/asm/battle_2.s
@@ -189,7 +189,7 @@ _080124A8:
lsls r0, 8
orrs r2, r0
movs r0, 0
- bl dp01_build_cmdbuf_x12_a_bb
+ bl Emitcmd18
bl _08012E32
.align 2, 0
_080124C0: .4byte gActionForBanks
@@ -408,7 +408,7 @@ _0801264E:
movs r0, 0
movs r2, 0
add r3, sp, 0x4
- bl sub_800CBA4
+ bl Emitcmd20
b _0801289E
.align 2, 0
_080126AC: .4byte gBattleMons
@@ -698,7 +698,7 @@ _08012908:
ldr r0, _08012928 @ =0x0201606c
adds r1, r0
movs r0, 0
- bl sub_800CBE0
+ bl EmitOpenBag
ldrb r0, [r4]
bl MarkBufferBankForExecution
b _08012968
@@ -725,7 +725,7 @@ _0801292C:
adds r0, r4
strb r5, [r0]
movs r0, 0
- bl dp01_build_cmdbuf_x32_32_32_32
+ bl Emitcmd50
mov r4, r8
ldrb r0, [r4]
bl MarkBufferBankForExecution
@@ -3144,7 +3144,7 @@ _08013D4C:
ldr r1, _08013D6C @ =gBattleMainFunc
ldr r0, _08013D70 @ =sub_8013DA8
str r0, [r1]
- ldr r1, _08013D74 @ =gUnknown_03005E94
+ ldr r1, _08013D74 @ =gCB2_AfterEvolution
ldr r0, _08013D78 @ =sub_800F808
str r0, [r1]
b _08013D96
@@ -3152,7 +3152,7 @@ _08013D4C:
_08013D68: .4byte gNoOfAllBanks
_08013D6C: .4byte gBattleMainFunc
_08013D70: .4byte sub_8013DA8
-_08013D74: .4byte gUnknown_03005E94
+_08013D74: .4byte gCB2_AfterEvolution
_08013D78: .4byte sub_800F808
_08013D7C:
ldr r0, _08013D9C @ =gBattleExecBuffer
diff --git a/asm/battle_5.s b/asm/battle_5.s
deleted file mode 100644
index b72266193..000000000
--- a/asm/battle_5.s
+++ /dev/null
@@ -1,4591 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start nullsub_91
-nullsub_91: @ 802BF70
- bx lr
- thumb_func_end nullsub_91
-
- thumb_func_start SetBankFuncToPlayerBufferRunCommand
-SetBankFuncToPlayerBufferRunCommand: @ 802BF74
- ldr r1, _0802BF8C @ =gBattleBankFunc
- ldr r0, _0802BF90 @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0802BF94 @ =PlayerBufferRunCommand
- str r1, [r0]
- ldr r1, _0802BF98 @ =gDoingBattleAnim
- movs r0, 0
- strb r0, [r1]
- bx lr
- .align 2, 0
-_0802BF8C: .4byte gBattleBankFunc
-_0802BF90: .4byte gActiveBank
-_0802BF94: .4byte PlayerBufferRunCommand
-_0802BF98: .4byte gDoingBattleAnim
- thumb_func_end SetBankFuncToPlayerBufferRunCommand
-
- thumb_func_start PlayerBufferExecCompleted
-PlayerBufferExecCompleted: @ 802BF9C
- push {r4,lr}
- sub sp, 0x4
- ldr r1, _0802BFDC @ =gBattleBankFunc
- ldr r4, _0802BFE0 @ =gActiveBank
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0802BFE4 @ =PlayerBufferRunCommand
- str r1, [r0]
- ldr r0, _0802BFE8 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0802BFF0
- bl GetMultiplayerId
- mov r1, sp
- strb r0, [r1]
- movs r0, 0x2
- movs r1, 0x4
- mov r2, sp
- bl dp01_prepare_buffer_wireless_probably
- ldr r1, _0802BFEC @ =gBattleBufferA
- ldrb r0, [r4]
- lsls r0, 9
- adds r0, r1
- movs r1, 0x38
- strb r1, [r0]
- b _0802C002
- .align 2, 0
-_0802BFDC: .4byte gBattleBankFunc
-_0802BFE0: .4byte gActiveBank
-_0802BFE4: .4byte PlayerBufferRunCommand
-_0802BFE8: .4byte gBattleTypeFlags
-_0802BFEC: .4byte gBattleBufferA
-_0802BFF0:
- ldr r2, _0802C00C @ =gBattleExecBuffer
- ldr r1, _0802C010 @ =gBitTable
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- ldr r0, [r2]
- bics r0, r1
- str r0, [r2]
-_0802C002:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0802C00C: .4byte gBattleExecBuffer
-_0802C010: .4byte gBitTable
- thumb_func_end PlayerBufferExecCompleted
-
- thumb_func_start PlayerBufferRunCommand
-PlayerBufferRunCommand: @ 802C014
- push {lr}
- ldr r2, _0802C048 @ =gBattleExecBuffer
- ldr r1, _0802C04C @ =gBitTable
- ldr r0, _0802C050 @ =gActiveBank
- ldrb r3, [r0]
- lsls r0, r3, 2
- adds r0, r1
- ldr r1, [r2]
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _0802C060
- ldr r0, _0802C054 @ =gBattleBufferA
- lsls r1, r3, 9
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0x38
- bhi _0802C05C
- ldr r0, _0802C058 @ =gPlayerBufferCommands
- ldrb r1, [r1]
- lsls r1, 2
- adds r1, r0
- ldr r0, [r1]
- bl _call_via_r0
- b _0802C060
- .align 2, 0
-_0802C048: .4byte gBattleExecBuffer
-_0802C04C: .4byte gBitTable
-_0802C050: .4byte gActiveBank
-_0802C054: .4byte gBattleBufferA
-_0802C058: .4byte gPlayerBufferCommands
-_0802C05C:
- bl PlayerBufferExecCompleted
-_0802C060:
- pop {r0}
- bx r0
- thumb_func_end PlayerBufferRunCommand
-
- thumb_func_start bx_0802E404
-bx_0802E404: @ 802C064
- push {lr}
- ldr r2, _0802C08C @ =gSprites
- ldr r1, _0802C090 @ =gObjectBankIDs
- ldr r0, _0802C094 @ =gActiveBank
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [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 _0802C086
- bl PlayerBufferExecCompleted
-_0802C086:
- pop {r0}
- bx r0
- .align 2, 0
-_0802C08C: .4byte gSprites
-_0802C090: .4byte gObjectBankIDs
-_0802C094: .4byte gActiveBank
- thumb_func_end bx_0802E404
-
- thumb_func_start sub_802C098
-sub_802C098: @ 802C098
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r7, _0802C0FC @ =gBattleBufferA
- ldr r4, _0802C100 @ =gActiveBank
- ldrb r0, [r4]
- lsls r2, r0, 9
- adds r1, r7, 0x2
- adds r1, r2, r1
- ldrb r5, [r1]
- adds r1, r7, 0x3
- adds r2, r1
- ldrb r1, [r2]
- lsls r1, 8
- orrs r5, r1
- movs r1, 0x1
- movs r2, 0x7
- movs r3, 0x1
- bl dp11b_obj_instanciate
- ldrb r0, [r4]
- movs r1, 0
- movs r2, 0x7
- movs r3, 0x1
- bl dp11b_obj_instanciate
- ldr r0, _0802C104 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r2, 0x1
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _0802C13E
- movs r0, 0x5
- bl PlaySE
- bl DestroyMenuCursor
- ldr r1, _0802C108 @ =gActionSelectionCursor
- ldrb r0, [r4]
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0802C11C
- cmp r0, 0x1
- bgt _0802C10C
- cmp r0, 0
- beq _0802C116
- b _0802C138
- .align 2, 0
-_0802C0FC: .4byte gBattleBufferA
-_0802C100: .4byte gActiveBank
-_0802C104: .4byte gMain
-_0802C108: .4byte gActionSelectionCursor
-_0802C10C:
- cmp r0, 0x2
- beq _0802C122
- cmp r0, 0x3
- beq _0802C12E
- b _0802C138
-_0802C116:
- movs r0, 0x1
- movs r1, 0
- b _0802C126
-_0802C11C:
- movs r0, 0x1
- movs r1, 0x1
- b _0802C126
-_0802C122:
- movs r0, 0x1
- movs r1, 0x2
-_0802C126:
- movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
- b _0802C138
-_0802C12E:
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
-_0802C138:
- bl PlayerBufferExecCompleted
- b _0802C2AC
-_0802C13E:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0802C178
- ldr r5, _0802C174 @ =gActionSelectionCursor
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _0802C158
- b _0802C2AC
-_0802C158:
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- bl nullsub_8
- ldrb r1, [r4]
- adds r1, r5
- ldrb r0, [r1]
- movs r2, 0x1
- b _0802C200
- .align 2, 0
-_0802C174: .4byte gActionSelectionCursor
-_0802C178:
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0802C1B0
- ldr r5, _0802C1AC @ =gActionSelectionCursor
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _0802C192
- b _0802C2AC
-_0802C192:
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- bl nullsub_8
- ldrb r1, [r4]
- adds r1, r5
- ldrb r0, [r1]
- movs r2, 0x1
- b _0802C200
- .align 2, 0
-_0802C1AC: .4byte gActionSelectionCursor
-_0802C1B0:
- movs r0, 0x40
- mov r8, r0
- ands r0, r1
- cmp r0, 0
- beq _0802C1D0
- ldr r5, _0802C1CC @ =gActionSelectionCursor
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0802C2AC
- b _0802C1E8
- .align 2, 0
-_0802C1CC: .4byte gActionSelectionCursor
-_0802C1D0:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0802C218
- ldr r5, _0802C214 @ =gActionSelectionCursor
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _0802C2AC
-_0802C1E8:
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- bl nullsub_8
- ldrb r1, [r4]
- adds r1, r5
- ldrb r0, [r1]
- movs r2, 0x2
-_0802C200:
- eors r0, r2
- strb r0, [r1]
- ldrb r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- movs r1, 0
- bl sub_802E3E4
- b _0802C2AC
- .align 2, 0
-_0802C214: .4byte gActionSelectionCursor
-_0802C218:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0802C2A0
- ldr r6, _0802C294 @ =gBattleTypeFlags
- ldrh r1, [r6]
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _0802C2AC
- ldrb r0, [r4]
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _0802C2AC
- movs r0, 0
- bl GetBankByPlayerAI
- ldr r1, _0802C298 @ =gAbsentBankFlags
- ldrb r1, [r1]
- ldr r2, _0802C29C @ =gBitTable
- lsls r0, 24
- lsrs r0, 22
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _0802C2AC
- ldrh r1, [r6]
- mov r0, r8
- ands r0, r1
- cmp r0, 0
- bne _0802C2AC
- ldrb r0, [r4]
- lsls r0, 9
- adds r1, r7, 0x1
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0802C278
- cmp r5, 0xC
- bhi _0802C2AC
- adds r0, r5, 0
- movs r1, 0x1
- bl AddBagItem
-_0802C278:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- movs r1, 0xC
- movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
- bl PlayerBufferExecCompleted
- bl DestroyMenuCursor
- b _0802C2AC
- .align 2, 0
-_0802C294: .4byte gBattleTypeFlags
-_0802C298: .4byte gAbsentBankFlags
-_0802C29C: .4byte gBitTable
-_0802C2A0:
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0802C2AC
- bl sub_804454C
-_0802C2AC:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_802C098
-
- thumb_func_start unref_sub_802C2B8
-unref_sub_802C2B8: @ 802C2B8
- push {r4,lr}
- ldr r4, _0802C2E0 @ =gActiveBank
- ldrb r0, [r4]
- movs r1, 0x1
- bl dp11b_obj_free
- ldrb r0, [r4]
- movs r1, 0
- bl dp11b_obj_free
- ldr r1, _0802C2E4 @ =gBattleBankFunc
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0802C2E8 @ =sub_802C2EC
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0802C2E0: .4byte gActiveBank
-_0802C2E4: .4byte gBattleBankFunc
-_0802C2E8: .4byte sub_802C2EC
- thumb_func_end unref_sub_802C2B8
-
- thumb_func_start sub_802C2EC
-sub_802C2EC: @ 802C2EC
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r1, _0802C384 @ =gUnknown_081FAE7C
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- ldr r0, _0802C388 @ =gUnknown_03004344
- ldrb r0, [r0]
- movs r1, 0x1
- movs r2, 0xF
- movs r3, 0x1
- bl dp11b_obj_instanciate
- movs r4, 0
- ldr r0, _0802C38C @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r0, 0
- beq _0802C32E
-_0802C312:
- ldr r0, _0802C388 @ =gUnknown_03004344
- ldrb r0, [r0]
- cmp r4, r0
- beq _0802C324
- lsls r0, r4, 24
- lsrs r0, 24
- movs r1, 0x1
- bl dp11b_obj_free
-_0802C324:
- adds r4, 0x1
- ldr r0, _0802C38C @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r4, r0
- blt _0802C312
-_0802C32E:
- ldr r0, _0802C390 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0802C3A8
- bl DestroyMenuCursor
- movs r0, 0x5
- bl PlaySE
- ldr r2, _0802C394 @ =gSprites
- ldr r1, _0802C398 @ =gObjectBankIDs
- ldr r4, _0802C388 @ =gUnknown_03004344
- ldrb r0, [r4]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, _0802C39C @ =sub_8010574
- str r1, [r0]
- ldr r1, _0802C3A0 @ =gMoveSelectionCursor
- ldr r0, _0802C3A4 @ =gActiveBank
- ldrb r0, [r0]
- adds r0, r1
- ldrb r2, [r0]
- ldrb r0, [r4]
- lsls r0, 8
- orrs r2, r0
- movs r0, 0x1
- movs r1, 0xA
- bl dp01_build_cmdbuf_x21_a_bb
- ldrb r0, [r4]
- movs r1, 0x1
- bl dp11b_obj_free
- bl PlayerBufferExecCompleted
- b _0802C658
- .align 2, 0
-_0802C384: .4byte gUnknown_081FAE7C
-_0802C388: .4byte gUnknown_03004344
-_0802C38C: .4byte gNoOfAllBanks
-_0802C390: .4byte gMain
-_0802C394: .4byte gSprites
-_0802C398: .4byte gObjectBankIDs
-_0802C39C: .4byte sub_8010574
-_0802C3A0: .4byte gMoveSelectionCursor
-_0802C3A4: .4byte gActiveBank
-_0802C3A8:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0802C41C
- movs r0, 0x5
- bl PlaySE
- ldr r2, _0802C400 @ =gSprites
- ldr r1, _0802C404 @ =gObjectBankIDs
- ldr r5, _0802C408 @ =gUnknown_03004344
- ldrb r0, [r5]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, _0802C40C @ =sub_8010574
- str r1, [r0]
- ldr r1, _0802C410 @ =gBattleBankFunc
- ldr r4, _0802C414 @ =gActiveBank
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0802C418 @ =sub_802C68C
- str r1, [r0]
- ldrb r0, [r4]
- movs r1, 0x1
- movs r2, 0x7
- movs r3, 0x1
- bl dp11b_obj_instanciate
- ldrb r0, [r4]
- movs r1, 0
- movs r2, 0x7
- movs r3, 0x1
- bl dp11b_obj_instanciate
- ldrb r0, [r5]
- movs r1, 0x1
- bl dp11b_obj_free
- b _0802C658
- .align 2, 0
-_0802C400: .4byte gSprites
-_0802C404: .4byte gObjectBankIDs
-_0802C408: .4byte gUnknown_03004344
-_0802C40C: .4byte sub_8010574
-_0802C410: .4byte gBattleBankFunc
-_0802C414: .4byte gActiveBank
-_0802C418: .4byte sub_802C68C
-_0802C41C:
- movs r0, 0x60
- ands r0, r1
- cmp r0, 0
- bne _0802C426
- b _0802C540
-_0802C426:
- movs r0, 0x5
- bl PlaySE
- ldr r2, _0802C458 @ =gSprites
- ldr r1, _0802C45C @ =gObjectBankIDs
- ldr r3, _0802C460 @ =gUnknown_03004344
- ldrb r0, [r3]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, _0802C464 @ =sub_8010574
- str r1, [r0]
- adds r5, r3, 0
-_0802C448:
- ldrb r0, [r5]
- bl GetBankIdentity
- lsls r0, 24
- lsrs r1, r0, 24
- movs r4, 0
- mov r0, sp
- b _0802C472
- .align 2, 0
-_0802C458: .4byte gSprites
-_0802C45C: .4byte gObjectBankIDs
-_0802C460: .4byte gUnknown_03004344
-_0802C464: .4byte sub_8010574
-_0802C468:
- adds r4, 0x1
- cmp r4, 0x3
- bgt _0802C478
- mov r2, sp
- adds r0, r2, r4
-_0802C472:
- ldrb r0, [r0]
- cmp r1, r0
- bne _0802C468
-_0802C478:
- subs r4, 0x1
- cmp r4, 0
- bge _0802C480
- movs r4, 0x3
-_0802C480:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- bl GetBankByPlayerAI
- strb r0, [r5]
- ldr r1, _0802C4B4 @ =gNoOfAllBanks
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- beq _0802C478
- movs r4, 0
- ldrb r0, [r5]
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0802C4FE
- cmp r0, 0x1
- bgt _0802C4B8
- cmp r0, 0
- beq _0802C4C2
- b _0802C500
- .align 2, 0
-_0802C4B4: .4byte gNoOfAllBanks
-_0802C4B8:
- cmp r0, 0x2
- beq _0802C4C2
- cmp r0, 0x3
- beq _0802C4FE
- b _0802C500
-_0802C4C2:
- ldr r2, _0802C520 @ =gActiveBank
- ldrb r0, [r2]
- ldrb r1, [r5]
- cmp r0, r1
- bne _0802C4FE
- ldr r1, _0802C524 @ =gBattlePartyID
- ldrb r2, [r2]
- lsls r0, r2, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0802C528 @ =gPlayerParty
- adds r0, r1
- ldr r1, _0802C52C @ =gMoveSelectionCursor
- adds r2, r1
- ldrb r1, [r2]
- adds r1, 0xD
- bl GetMonData
- ldr r2, _0802C530 @ =gBattleMoves
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r1, [r1, 0x6]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0802C500
-_0802C4FE:
- adds r4, 0x1
-_0802C500:
- ldr r0, _0802C534 @ =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, _0802C538 @ =gBitTable
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- ldr r0, _0802C53C @ =gUnknown_03004344
- cmp r1, 0
- beq _0802C518
- movs r4, 0
-_0802C518:
- cmp r4, 0
- beq _0802C448
- b _0802C640
- .align 2, 0
-_0802C520: .4byte gActiveBank
-_0802C524: .4byte gBattlePartyID
-_0802C528: .4byte gPlayerParty
-_0802C52C: .4byte gMoveSelectionCursor
-_0802C530: .4byte gBattleMoves
-_0802C534: .4byte gAbsentBankFlags
-_0802C538: .4byte gBitTable
-_0802C53C: .4byte gUnknown_03004344
-_0802C540:
- movs r0, 0x90
- ands r0, r1
- cmp r0, 0
- bne _0802C54A
- b _0802C658
-_0802C54A:
- movs r0, 0x5
- bl PlaySE
- ldr r2, _0802C57C @ =gSprites
- ldr r1, _0802C580 @ =gObjectBankIDs
- ldr r3, _0802C584 @ =gUnknown_03004344
- ldrb r0, [r3]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, _0802C588 @ =sub_8010574
- str r1, [r0]
- adds r5, r3, 0
-_0802C56C:
- ldrb r0, [r5]
- bl GetBankIdentity
- lsls r0, 24
- lsrs r1, r0, 24
- movs r4, 0
- mov r0, sp
- b _0802C596
- .align 2, 0
-_0802C57C: .4byte gSprites
-_0802C580: .4byte gObjectBankIDs
-_0802C584: .4byte gUnknown_03004344
-_0802C588: .4byte sub_8010574
-_0802C58C:
- adds r4, 0x1
- cmp r4, 0x3
- bgt _0802C59C
- mov r2, sp
- adds r0, r2, r4
-_0802C596:
- ldrb r0, [r0]
- cmp r1, r0
- bne _0802C58C
-_0802C59C:
- adds r4, 0x1
- cmp r4, 0x3
- ble _0802C5A4
- movs r4, 0
-_0802C5A4:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- bl GetBankByPlayerAI
- strb r0, [r5]
- ldr r1, _0802C5D8 @ =gNoOfAllBanks
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- beq _0802C59C
- movs r4, 0
- ldrb r0, [r5]
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0802C622
- cmp r0, 0x1
- bgt _0802C5DC
- cmp r0, 0
- beq _0802C5E6
- b _0802C624
- .align 2, 0
-_0802C5D8: .4byte gNoOfAllBanks
-_0802C5DC:
- cmp r0, 0x2
- beq _0802C5E6
- cmp r0, 0x3
- beq _0802C622
- b _0802C624
-_0802C5E6:
- ldr r2, _0802C660 @ =gActiveBank
- ldrb r0, [r2]
- ldrb r1, [r5]
- cmp r0, r1
- bne _0802C622
- ldr r1, _0802C664 @ =gBattlePartyID
- ldrb r2, [r2]
- lsls r0, r2, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0802C668 @ =gPlayerParty
- adds r0, r1
- ldr r1, _0802C66C @ =gMoveSelectionCursor
- adds r2, r1
- ldrb r1, [r2]
- adds r1, 0xD
- bl GetMonData
- ldr r2, _0802C670 @ =gBattleMoves
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r1, [r1, 0x6]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0802C624
-_0802C622:
- adds r4, 0x1
-_0802C624:
- ldr r0, _0802C674 @ =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, _0802C678 @ =gBitTable
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- ldr r0, _0802C67C @ =gUnknown_03004344
- cmp r1, 0
- beq _0802C63C
- movs r4, 0
-_0802C63C:
- cmp r4, 0
- beq _0802C56C
-_0802C640:
- ldr r2, _0802C680 @ =gSprites
- ldr r1, _0802C684 @ =gObjectBankIDs
- 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, _0802C688 @ =sub_8010520
- str r1, [r0]
-_0802C658:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0802C660: .4byte gActiveBank
-_0802C664: .4byte gBattlePartyID
-_0802C668: .4byte gPlayerParty
-_0802C66C: .4byte gMoveSelectionCursor
-_0802C670: .4byte gBattleMoves
-_0802C674: .4byte gAbsentBankFlags
-_0802C678: .4byte gBitTable
-_0802C67C: .4byte gUnknown_03004344
-_0802C680: .4byte gSprites
-_0802C684: .4byte gObjectBankIDs
-_0802C688: .4byte sub_8010520
- thumb_func_end sub_802C2EC
-
- thumb_func_start sub_802C68C
-sub_802C68C: @ 802C68C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- movs r0, 0
- mov r8, r0
- ldr r7, _0802C6E4 @ =gActiveBank
- ldrb r2, [r7]
- lsls r0, r2, 9
- ldr r1, _0802C6E8 @ =gUnknown_02023A64
- adds r6, r0, r1
- ldr r0, _0802C6EC @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r5, 0x1
- adds r4, r5, 0
- ands r4, r1
- cmp r4, 0
- bne _0802C6B2
- b _0802C864
-_0802C6B2:
- movs r0, 0x5
- bl PlaySE
- ldr r1, _0802C6F0 @ =gMoveSelectionCursor
- ldrb r0, [r7]
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 1
- adds r1, r6, r0
- ldrh r0, [r1]
- cmp r0, 0xAE
- bne _0802C6F4
- ldrb r0, [r6, 0x12]
- movs r4, 0
- cmp r0, 0x7
- beq _0802C702
- ldrb r1, [r6, 0x13]
- movs r0, 0x7
- eors r1, r0
- negs r0, r1
- orrs r0, r1
- asrs r4, r0, 31
- movs r0, 0x10
- ands r4, r0
- b _0802C702
- .align 2, 0
-_0802C6E4: .4byte gActiveBank
-_0802C6E8: .4byte gUnknown_02023A64
-_0802C6EC: .4byte gMain
-_0802C6F0: .4byte gMoveSelectionCursor
-_0802C6F4:
- ldr r2, _0802C714 @ =gBattleMoves
- ldrh r1, [r1]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r4, [r0, 0x6]
-_0802C702:
- movs r0, 0x10
- ands r0, r4
- cmp r0, 0
- beq _0802C720
- ldr r0, _0802C718 @ =gUnknown_03004344
- ldr r1, _0802C71C @ =gActiveBank
- ldrb r1, [r1]
- strb r1, [r0]
- b _0802C73A
- .align 2, 0
-_0802C714: .4byte gBattleMoves
-_0802C718: .4byte gUnknown_03004344
-_0802C71C: .4byte gActiveBank
-_0802C720:
- ldr r0, _0802C764 @ =gActiveBank
- ldrb r0, [r0]
- bl GetBankIdentity
- adds r1, r0, 0
- movs r2, 0x1
- movs r0, 0x1
- ands r0, r1
- eors r0, r2
- bl GetBankByPlayerAI
- ldr r1, _0802C768 @ =gUnknown_03004344
- strb r0, [r1]
-_0802C73A:
- ldr r3, _0802C76C @ =gBattleBufferA
- ldr r5, _0802C764 @ =gActiveBank
- ldrb r2, [r5]
- lsls r1, r2, 9
- adds r0, r3, 0x1
- adds r0, r1, r0
- ldrb r0, [r0]
- cmp r0, 0
- bne _0802C770
- movs r0, 0x2
- ands r0, r4
- cmp r0, 0
- beq _0802C7B2
- adds r0, r3, 0x2
- adds r0, r1, r0
- ldrb r0, [r0]
- cmp r0, 0
- bne _0802C7B2
- movs r2, 0x1
- add r8, r2
- b _0802C7B2
- .align 2, 0
-_0802C764: .4byte gActiveBank
-_0802C768: .4byte gUnknown_03004344
-_0802C76C: .4byte gBattleBufferA
-_0802C770:
- movs r0, 0x7D
- ands r0, r4
- cmp r0, 0
- bne _0802C77C
- movs r0, 0x1
- add r8, r0
-_0802C77C:
- ldr r0, _0802C7D0 @ =gMoveSelectionCursor
- adds r0, r2, r0
- adds r1, r6, 0
- adds r1, 0x8
- ldrb r0, [r0]
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0
- beq _0802C7B8
- movs r0, 0x12
- ands r0, r4
- cmp r0, 0
- bne _0802C7B2
- movs r0, 0
- bl CountAliveMons
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _0802C7B2
- ldrb r0, [r5]
- bl sub_803C434
- ldr r1, _0802C7D4 @ =gUnknown_03004344
- strb r0, [r1]
- movs r2, 0
- mov r8, r2
-_0802C7B2:
- mov r0, r8
- cmp r0, 0
- bne _0802C7DC
-_0802C7B8:
- bl DestroyMenuCursor
- ldr r1, _0802C7D0 @ =gMoveSelectionCursor
- ldr r0, _0802C7D8 @ =gActiveBank
- ldrb r0, [r0]
- adds r0, r1
- ldrb r2, [r0]
- ldr r0, _0802C7D4 @ =gUnknown_03004344
- ldrb r0, [r0]
- lsls r0, 8
- orrs r2, r0
- b _0802C888
- .align 2, 0
-_0802C7D0: .4byte gMoveSelectionCursor
-_0802C7D4: .4byte gUnknown_03004344
-_0802C7D8: .4byte gActiveBank
-_0802C7DC:
- ldr r1, _0802C7F8 @ =gBattleBankFunc
- ldr r2, _0802C7FC @ =gActiveBank
- ldrb r0, [r2]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0802C800 @ =sub_802C2EC
- str r1, [r0]
- movs r0, 0x12
- ands r4, r0
- cmp r4, 0
- beq _0802C808
- ldr r1, _0802C804 @ =gUnknown_03004344
- ldrb r0, [r2]
- b _0802C838
- .align 2, 0
-_0802C7F8: .4byte gBattleBankFunc
-_0802C7FC: .4byte gActiveBank
-_0802C800: .4byte sub_802C2EC
-_0802C804: .4byte gUnknown_03004344
-_0802C808:
- movs r0, 0x1
- bl GetBankByPlayerAI
- ldr r1, _0802C828 @ =gAbsentBankFlags
- ldrb r1, [r1]
- ldr r2, _0802C82C @ =gBitTable
- lsls r0, 24
- lsrs r0, 22
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _0802C830
- movs r0, 0x3
- b _0802C832
- .align 2, 0
-_0802C828: .4byte gAbsentBankFlags
-_0802C82C: .4byte gBitTable
-_0802C830:
- movs r0, 0x1
-_0802C832:
- bl GetBankByPlayerAI
- ldr r1, _0802C854 @ =gUnknown_03004344
-_0802C838:
- strb r0, [r1]
- ldr r2, _0802C858 @ =gSprites
- ldr r1, _0802C85C @ =gObjectBankIDs
- ldr r0, _0802C854 @ =gUnknown_03004344
- 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, _0802C860 @ =sub_8010520
- b _0802CA36
- .align 2, 0
-_0802C854: .4byte gUnknown_03004344
-_0802C858: .4byte gSprites
-_0802C85C: .4byte gObjectBankIDs
-_0802C860: .4byte sub_8010520
-_0802C864:
- movs r6, 0x2
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0
- beq _0802C8A4
- bl DestroyMenuCursor
- movs r0, 0x5
- bl PlaySE
- ldr r0, _0802C898 @ =gUnknown_030042A4
- strh r4, [r0]
- ldr r1, _0802C89C @ =gUnknown_030042A0
- movs r2, 0xA0
- lsls r2, 1
- adds r0, r2, 0
- strh r0, [r1]
- ldr r2, _0802C8A0 @ =0x0000ffff
-_0802C888:
- movs r0, 0x1
- movs r1, 0xA
- bl dp01_build_cmdbuf_x21_a_bb
- bl PlayerBufferExecCompleted
- b _0802CA38
- .align 2, 0
-_0802C898: .4byte gUnknown_030042A4
-_0802C89C: .4byte gUnknown_030042A0
-_0802C8A0: .4byte 0x0000ffff
-_0802C8A4:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0802C8D4
- ldr r4, _0802C8D0 @ =gMoveSelectionCursor
- adds r2, r4
- ldrb r1, [r2]
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- bne _0802C8BC
- b _0802CA38
-_0802C8BC:
- ldrb r0, [r2]
- bl nullsub_7
- ldrb r1, [r7]
- adds r1, r4
- ldrb r0, [r1]
- movs r2, 0x1
- eors r0, r2
- b _0802C976
- .align 2, 0
-_0802C8D0: .4byte gMoveSelectionCursor
-_0802C8D4:
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0802C914
- ldr r4, _0802C90C @ =gMoveSelectionCursor
- adds r3, r2, r4
- ldrb r2, [r3]
- movs r6, 0x1
- adds r0, r5, 0
- ands r0, r2
- cmp r0, 0
- beq _0802C8EE
- b _0802CA38
-_0802C8EE:
- ldr r1, _0802C910 @ =gUnknown_03004348
- adds r0, r6, 0
- eors r0, r2
- ldrb r1, [r1]
- cmp r0, r1
- bcc _0802C8FC
- b _0802CA38
-_0802C8FC:
- ldrb r0, [r3]
- bl nullsub_7
- ldrb r1, [r7]
- adds r1, r4
- ldrb r0, [r1]
- eors r0, r6
- b _0802C976
- .align 2, 0
-_0802C90C: .4byte gMoveSelectionCursor
-_0802C910: .4byte gUnknown_03004348
-_0802C914:
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0802C944
- ldr r4, _0802C940 @ =gMoveSelectionCursor
- adds r2, r4
- ldrb r1, [r2]
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0
- bne _0802C92C
- b _0802CA38
-_0802C92C:
- ldrb r0, [r2]
- bl nullsub_7
- ldrb r1, [r7]
- adds r1, r4
- ldrb r0, [r1]
- movs r2, 0x2
- eors r0, r2
- b _0802C976
- .align 2, 0
-_0802C940: .4byte gMoveSelectionCursor
-_0802C944:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0802C99C
- ldr r4, _0802C994 @ =gMoveSelectionCursor
- adds r3, r2, r4
- ldrb r2, [r3]
- movs r5, 0x2
- adds r0, r6, 0
- ands r0, r2
- cmp r0, 0
- bne _0802CA38
- ldr r1, _0802C998 @ =gUnknown_03004348
- adds r0, r5, 0
- eors r0, r2
- ldrb r1, [r1]
- cmp r0, r1
- bcs _0802CA38
- ldrb r0, [r3]
- bl nullsub_7
- ldrb r1, [r7]
- adds r1, r4
- ldrb r0, [r1]
- eors r0, r5
-_0802C976:
- strb r0, [r1]
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r7]
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0
- bl sub_802E3B4
- bl sub_802E220
- bl sub_802E2D4
- b _0802CA38
- .align 2, 0
-_0802C994: .4byte gMoveSelectionCursor
-_0802C998: .4byte gUnknown_03004348
-_0802C99C:
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0802CA38
- ldr r0, _0802C9D8 @ =gUnknown_03004348
- ldrb r0, [r0]
- cmp r0, 0x1
- bls _0802CA38
- ldr r0, _0802C9DC @ =gBattleTypeFlags
- ldrh r1, [r0]
- adds r0, r6, 0
- ands r0, r1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0
- bne _0802CA38
- ldr r4, _0802C9E0 @ =gMoveSelectionCursor
- adds r0, r2, r4
- ldrb r0, [r0]
- ldr r1, _0802C9E4 @ =gUnknown_081FAE80
- bl sub_802E12C
- ldrb r0, [r7]
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0
- beq _0802C9EC
- ldr r0, _0802C9E8 @ =gUnknown_03004344
- strb r5, [r0]
- b _0802C9F4
- .align 2, 0
-_0802C9D8: .4byte gUnknown_03004348
-_0802C9DC: .4byte gBattleTypeFlags
-_0802C9E0: .4byte gMoveSelectionCursor
-_0802C9E4: .4byte gUnknown_081FAE80
-_0802C9E8: .4byte gUnknown_03004344
-_0802C9EC:
- ldr r1, _0802CA44 @ =gUnknown_03004344
- adds r0, 0x1
- strb r0, [r1]
- adds r0, r1, 0
-_0802C9F4:
- ldrb r0, [r0]
- movs r1, 0x1B
- bl sub_802E3B4
- ldr r4, _0802CA48 @ =gUnknown_03004210
- ldr r1, _0802CA4C @ =0x00001016
- movs r0, 0x1C
- str r0, [sp]
- movs r0, 0x3A
- str r0, [sp, 0x4]
- adds r0, r4, 0
- movs r2, 0x17
- movs r3, 0x37
- bl FillWindowRect
- ldr r1, _0802CA50 @ =gUnknown_08400D89
- movs r2, 0xA4
- lsls r2, 2
- movs r0, 0x37
- str r0, [sp]
- adds r0, r4, 0
- movs r3, 0x17
- bl InitWindow
- adds r0, r4, 0
- bl sub_8002F44
- ldr r1, _0802CA54 @ =gBattleBankFunc
- ldr r0, _0802CA58 @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0802CA5C @ =sub_802CA60
-_0802CA36:
- str r1, [r0]
-_0802CA38:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802CA44: .4byte gUnknown_03004344
-_0802CA48: .4byte gUnknown_03004210
-_0802CA4C: .4byte 0x00001016
-_0802CA50: .4byte gUnknown_08400D89
-_0802CA54: .4byte gBattleBankFunc
-_0802CA58: .4byte gActiveBank
-_0802CA5C: .4byte sub_802CA60
- thumb_func_end sub_802C68C
-
- thumb_func_start sub_802CA60
-sub_802CA60: @ 802CA60
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x2C
- ldr r0, _0802CDEC @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x5
- ands r0, r1
- cmp r0, 0
- bne _0802CA7A
- b _0802CE78
-_0802CA7A:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _0802CDF0 @ =gMoveSelectionCursor
- mov r10, r0
- ldr r1, _0802CDF4 @ =gActiveBank
- mov r8, r1
- ldrb r1, [r1]
- adds r2, r1, r0
- ldr r5, _0802CDF8 @ =gUnknown_03004344
- ldrb r0, [r2]
- ldrb r3, [r5]
- cmp r0, r3
- bne _0802CA98
- b _0802CE14
-_0802CA98:
- lsls r1, 9
- ldr r0, _0802CDFC @ =gUnknown_02023A64
- adds r1, r0
- mov r9, r1
- ldrb r1, [r2]
- lsls r1, 1
- add r1, r9
- ldrh r6, [r1]
- ldrb r0, [r5]
- lsls r0, 1
- add r0, r9
- ldrh r0, [r0]
- strh r0, [r1]
- ldrb r0, [r5]
- lsls r0, 1
- add r0, r9
- strh r6, [r0]
- mov r1, r8
- ldrb r0, [r1]
- add r0, r10
- ldrb r1, [r0]
- mov r7, r9
- adds r7, 0x8
- adds r1, r7, r1
- ldrb r6, [r1]
- ldrb r0, [r5]
- adds r0, r7, r0
- ldrb r0, [r0]
- strb r0, [r1]
- ldrb r0, [r5]
- adds r0, r7, r0
- strb r6, [r0]
- mov r2, r8
- ldrb r0, [r2]
- add r0, r10
- ldrb r1, [r0]
- mov r2, r9
- adds r2, 0xC
- adds r1, r2, r1
- ldrb r6, [r1]
- ldrb r0, [r5]
- adds r0, r2, r0
- ldrb r0, [r0]
- strb r0, [r1]
- ldrb r0, [r5]
- adds r2, r0
- strb r6, [r2]
- mov r3, r8
- ldrb r1, [r3]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- ldr r2, _0802CE00 @ =gDisableStructs
- adds r6, r0, r2
- ldrb r4, [r6, 0x18]
- lsls r3, r4, 24
- lsrs r2, r3, 28
- ldr r0, _0802CE04 @ =gBitTable
- mov r12, r0
- add r1, r10
- ldrb r0, [r1]
- lsls r0, 2
- add r0, r12
- ldr r0, [r0]
- ands r2, r0
- cmp r2, 0
- beq _0802CB52
- lsrs r1, r3, 28
- bics r1, r0
- lsls r1, 4
- movs r2, 0xF
- adds r0, r2, 0
- ands r0, r4
- orrs r0, r1
- strb r0, [r6, 0x18]
- mov r1, r8
- ldrb r0, [r1]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- ldr r3, _0802CE00 @ =gDisableStructs
- adds r1, r3
- ldrb r4, [r1, 0x18]
- lsrs r3, r4, 4
- ldrb r0, [r5]
- lsls r0, 2
- add r0, r12
- ldr r0, [r0]
- orrs r0, r3
- lsls r0, 4
- ands r2, r4
- orrs r2, r0
- strb r2, [r1, 0x18]
-_0802CB52:
- bl sub_802E1B0
- movs r6, 0
- mov r12, r7
- mov r5, sp
- adds r5, 0x20
- str r5, [sp, 0x28]
- ldr r2, _0802CE08 @ =gBattleMons
- mov r0, r8
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r4, r0, 0
- adds r4, 0x3B
- mov r7, r8
- mov r10, r2
- movs r5, 0x3
-_0802CB76:
- mov r3, sp
- adds r3, r6
- adds r3, 0x8
- ldrb r1, [r4]
- lsls r2, r6, 1
- adds r0, r5, 0
- lsls r0, r2
- ands r1, r0
- asrs r1, r2
- strb r1, [r3]
- adds r6, 0x1
- cmp r6, 0x3
- ble _0802CB76
- ldr r1, _0802CDF0 @ =gMoveSelectionCursor
- ldrb r0, [r7]
- adds r0, r1
- ldrb r0, [r0]
- add r0, sp
- adds r0, 0x8
- ldrb r0, [r0]
- ldr r2, [sp, 0x28]
- strb r0, [r2]
- ldrb r0, [r7]
- adds r0, r1
- ldrb r0, [r0]
- mov r2, sp
- adds r2, r0
- adds r2, 0x8
- ldr r1, _0802CDF8 @ =gUnknown_03004344
- ldrb r0, [r1]
- add r0, sp
- adds r0, 0x8
- ldrb r0, [r0]
- movs r3, 0
- strb r0, [r2]
- ldrb r0, [r1]
- mov r1, sp
- adds r1, r0
- adds r1, 0x8
- ldr r5, [sp, 0x28]
- ldrb r0, [r5]
- strb r0, [r1]
- strb r3, [r5]
- movs r6, 0
- ldr r2, [sp, 0x28]
-_0802CBD0:
- mov r0, sp
- adds r0, r6
- adds r0, 0x8
- ldrb r1, [r0]
- lsls r0, r6, 1
- lsls r1, r0
- ldrb r0, [r2]
- orrs r0, r1
- strb r0, [r2]
- adds r6, 0x1
- cmp r6, 0x3
- ble _0802CBD0
- ldrb r1, [r7]
- movs r0, 0x58
- muls r0, r1
- add r0, r10
- adds r0, 0x3B
- ldr r2, [sp, 0x28]
- ldrb r1, [r2]
- strb r1, [r0]
- movs r6, 0
- adds r4, r7, 0
- movs r3, 0x58
- movs r5, 0x24
- add r5, r10
- mov r8, r5
- mov r2, r9
- mov r7, r10
- adds r7, 0xC
- mov r5, r12
-_0802CC0C:
- lsls r1, r6, 1
- ldrb r0, [r4]
- muls r0, r3
- adds r1, r0
- adds r1, r7
- ldrh r0, [r2]
- strh r0, [r1]
- ldrb r0, [r4]
- adds r1, r0, 0
- muls r1, r3
- adds r1, r6, r1
- add r1, r8
- adds r0, r5, r6
- ldrb r0, [r0]
- strb r0, [r1]
- adds r2, 0x2
- adds r6, 0x1
- cmp r6, 0x3
- ble _0802CC0C
- ldr r2, _0802CDF4 @ =gActiveBank
- ldrb r1, [r2]
- movs r0, 0x58
- muls r0, r1
- mov r1, r10
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 14
- ands r0, r1
- cmp r0, 0
- beq _0802CC4E
- b _0802CE1C
-_0802CC4E:
- movs r6, 0
- mov r0, sp
- adds r0, 0xC
- str r0, [sp, 0x24]
- add r1, sp, 0x14
- mov r10, r1
- ldr r3, _0802CE0C @ =gBattlePartyID
- mov r9, r3
- mov r8, r2
- movs r7, 0x64
- ldr r5, _0802CE10 @ =gPlayerParty
- adds r4, r0, 0
-_0802CC66:
- mov r1, r8
- ldrb r0, [r1]
- lsls r0, 1
- add r0, r9
- ldrh r0, [r0]
- muls r0, r7
- adds r0, r5
- adds r1, r6, 0
- adds r1, 0xD
- bl GetMonData
- strh r0, [r4]
- mov r2, r8
- ldrb r0, [r2]
- lsls r0, 1
- add r0, r9
- ldrh r0, [r0]
- muls r0, r7
- adds r0, r5
- adds r1, r6, 0
- adds r1, 0x11
- bl GetMonData
- mov r3, r10
- adds r1, r3, r6
- strb r0, [r1]
- adds r4, 0x2
- adds r6, 0x1
- cmp r6, 0x3
- ble _0802CC66
- ldr r1, _0802CE0C @ =gBattlePartyID
- ldr r0, _0802CDF4 @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0802CE10 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x15
- bl GetMonData
- ldr r5, [sp, 0x28]
- strb r0, [r5]
- movs r6, 0
- movs r5, 0x3
- ldr r4, [sp, 0x28]
-_0802CCC6:
- mov r3, sp
- adds r3, r6
- adds r3, 0x8
- lsls r2, r6, 1
- adds r1, r5, 0
- lsls r1, r2
- ldrb r0, [r4]
- ands r0, r1
- asrs r0, r2
- strb r0, [r3]
- adds r6, 0x1
- cmp r6, 0x3
- ble _0802CCC6
- ldr r4, _0802CDF0 @ =gMoveSelectionCursor
- ldr r3, _0802CDF4 @ =gActiveBank
- ldrb r0, [r3]
- adds r0, r4
- ldrb r1, [r0]
- lsls r1, 1
- ldr r0, [sp, 0x24]
- adds r1, r0, r1
- ldrh r6, [r1]
- ldr r2, _0802CDF8 @ =gUnknown_03004344
- ldrb r0, [r2]
- lsls r0, 1
- ldr r5, [sp, 0x24]
- adds r0, r5, r0
- ldrh r0, [r0]
- movs r5, 0
- strh r0, [r1]
- ldrb r0, [r2]
- lsls r0, 1
- ldr r1, [sp, 0x24]
- adds r0, r1, r0
- strh r6, [r0]
- ldrb r0, [r3]
- adds r0, r4
- ldrb r1, [r0]
- add r1, r10
- ldrb r6, [r1]
- ldrb r0, [r2]
- add r0, r10
- ldrb r0, [r0]
- strb r0, [r1]
- ldrb r0, [r2]
- add r0, r10
- strb r6, [r0]
- ldrb r0, [r3]
- adds r0, r4
- ldrb r0, [r0]
- add r0, sp
- adds r0, 0x8
- ldrb r0, [r0]
- ldr r1, [sp, 0x28]
- strb r0, [r1]
- ldrb r0, [r3]
- adds r0, r4
- ldrb r0, [r0]
- mov r1, sp
- adds r1, r0
- adds r1, 0x8
- ldrb r0, [r2]
- add r0, sp
- adds r0, 0x8
- ldrb r0, [r0]
- strb r0, [r1]
- ldrb r0, [r2]
- mov r1, sp
- adds r1, r0
- adds r1, 0x8
- ldr r2, [sp, 0x28]
- ldrb r0, [r2]
- strb r0, [r1]
- strb r5, [r2]
- movs r6, 0
- ldr r2, [sp, 0x28]
-_0802CD5E:
- mov r0, sp
- adds r0, r6
- adds r0, 0x8
- ldrb r1, [r0]
- lsls r0, r6, 1
- lsls r1, r0
- ldrb r0, [r2]
- orrs r0, r1
- strb r0, [r2]
- adds r6, 0x1
- cmp r6, 0x3
- ble _0802CD5E
- movs r6, 0
- ldr r3, _0802CE0C @ =gBattlePartyID
- mov r10, r3
- ldr r5, _0802CDF4 @ =gActiveBank
- mov r9, r5
- movs r0, 0x64
- mov r8, r0
- ldr r7, _0802CE10 @ =gPlayerParty
- ldr r5, [sp, 0x24]
- adds r5, 0x8
- ldr r4, [sp, 0x24]
-_0802CD8C:
- mov r1, r9
- ldrb r0, [r1]
- lsls r0, 1
- add r0, r10
- ldrh r0, [r0]
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- adds r0, r7
- adds r1, r6, 0
- adds r1, 0xD
- adds r2, r4, 0
- bl SetMonData
- mov r3, r9
- ldrb r0, [r3]
- lsls r0, 1
- add r0, r10
- ldrh r0, [r0]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r7
- adds r1, r6, 0
- adds r1, 0x11
- adds r2, r5, 0
- bl SetMonData
- adds r5, 0x1
- adds r4, 0x2
- adds r6, 0x1
- cmp r6, 0x3
- ble _0802CD8C
- ldr r1, _0802CE0C @ =gBattlePartyID
- ldr r0, _0802CDF4 @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0802CE10 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x15
- ldr r2, [sp, 0x28]
- bl SetMonData
- b _0802CE1C
- .align 2, 0
-_0802CDEC: .4byte gMain
-_0802CDF0: .4byte gMoveSelectionCursor
-_0802CDF4: .4byte gActiveBank
-_0802CDF8: .4byte gUnknown_03004344
-_0802CDFC: .4byte gUnknown_02023A64
-_0802CE00: .4byte gDisableStructs
-_0802CE04: .4byte gBitTable
-_0802CE08: .4byte gBattleMons
-_0802CE0C: .4byte gBattlePartyID
-_0802CE10: .4byte gPlayerParty
-_0802CE14:
- ldrb r0, [r5]
- ldr r1, _0802CF20 @ =gUnknown_08400D49
- bl sub_802E12C
-_0802CE1C:
- ldr r1, _0802CF24 @ =gBattleBankFunc
- ldr r2, _0802CF28 @ =gActiveBank
- ldrb r0, [r2]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0802CF2C @ =sub_802C68C
- str r1, [r0]
- ldr r3, _0802CF30 @ =gMoveSelectionCursor
- ldrb r0, [r2]
- adds r0, r3
- ldr r1, _0802CF34 @ =gUnknown_03004344
- ldrb r1, [r1]
- strb r1, [r0]
- ldrb r0, [r2]
- adds r0, r3
- ldrb r0, [r0]
- movs r1, 0
- bl sub_802E3B4
- ldr r4, _0802CF38 @ =gUnknown_03004210
- ldr r1, _0802CF3C @ =0x00001016
- movs r0, 0x1C
- str r0, [sp]
- movs r0, 0x3A
- str r0, [sp, 0x4]
- adds r0, r4, 0
- movs r2, 0x17
- movs r3, 0x37
- bl FillWindowRect
- ldr r1, _0802CF40 @ =gUnknown_08400D38
- movs r2, 0xA4
- lsls r2, 2
- movs r0, 0x37
- str r0, [sp]
- adds r0, r4, 0
- movs r3, 0x17
- bl InitWindow
- adds r0, r4, 0
- bl sub_8002F44
- bl sub_802E220
- bl sub_802E2D4
-_0802CE78:
- ldr r6, _0802CF44 @ =gMain
- ldrh r1, [r6, 0x2E]
- movs r0, 0x6
- ands r0, r1
- cmp r0, 0
- beq _0802CEF0
- movs r0, 0x5
- bl PlaySE
- ldr r0, _0802CF34 @ =gUnknown_03004344
- ldrb r0, [r0]
- bl nullsub_7
- ldr r5, _0802CF30 @ =gMoveSelectionCursor
- ldr r4, _0802CF28 @ =gActiveBank
- ldrb r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- movs r1, 0
- bl sub_802E3B4
- ldrb r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- ldr r1, _0802CF20 @ =gUnknown_08400D49
- bl sub_802E12C
- ldr r1, _0802CF24 @ =gBattleBankFunc
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0802CF2C @ =sub_802C68C
- str r1, [r0]
- ldr r4, _0802CF38 @ =gUnknown_03004210
- ldr r1, _0802CF3C @ =0x00001016
- movs r0, 0x1C
- str r0, [sp]
- movs r0, 0x3A
- str r0, [sp, 0x4]
- adds r0, r4, 0
- movs r2, 0x17
- movs r3, 0x37
- bl FillWindowRect
- ldr r1, _0802CF40 @ =gUnknown_08400D38
- movs r2, 0xA4
- lsls r2, 2
- movs r0, 0x37
- str r0, [sp]
- adds r0, r4, 0
- movs r3, 0x17
- bl InitWindow
- adds r0, r4, 0
- bl sub_8002F44
- bl sub_802E220
- bl sub_802E2D4
-_0802CEF0:
- ldrh r1, [r6, 0x2E]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0802CF8C
- ldr r3, _0802CF34 @ =gUnknown_03004344
- ldrb r2, [r3]
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- beq _0802CF8C
- ldr r0, _0802CF30 @ =gMoveSelectionCursor
- ldr r1, _0802CF28 @ =gActiveBank
- ldrb r1, [r1]
- adds r1, r0
- ldrb r5, [r1]
- cmp r2, r5
- bne _0802CF48
- ldrb r0, [r1]
- movs r1, 0x1D
- bl sub_802E3B4
- b _0802CF4E
- .align 2, 0
-_0802CF20: .4byte gUnknown_08400D49
-_0802CF24: .4byte gBattleBankFunc
-_0802CF28: .4byte gActiveBank
-_0802CF2C: .4byte sub_802C68C
-_0802CF30: .4byte gMoveSelectionCursor
-_0802CF34: .4byte gUnknown_03004344
-_0802CF38: .4byte gUnknown_03004210
-_0802CF3C: .4byte 0x00001016
-_0802CF40: .4byte gUnknown_08400D38
-_0802CF44: .4byte gMain
-_0802CF48:
- ldrb r0, [r3]
- bl nullsub_7
-_0802CF4E:
- ldr r4, _0802CF78 @ =gUnknown_03004344
- ldrb r0, [r4]
- movs r1, 0x1
- eors r0, r1
- strb r0, [r4]
- movs r0, 0x5
- bl PlaySE
- ldr r1, _0802CF7C @ =gMoveSelectionCursor
- ldr r0, _0802CF80 @ =gActiveBank
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r4]
- ldrb r0, [r0]
- cmp r1, r0
- bne _0802CF84
- adds r0, r1, 0
- movs r1, 0
- bl sub_802E3B4
- b _0802CF8C
- .align 2, 0
-_0802CF78: .4byte gUnknown_03004344
-_0802CF7C: .4byte gMoveSelectionCursor
-_0802CF80: .4byte gActiveBank
-_0802CF84:
- ldrb r0, [r4]
- movs r1, 0x1B
- bl sub_802E3B4
-_0802CF8C:
- ldr r0, _0802CFC8 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0802D020
- ldr r3, _0802CFCC @ =gUnknown_03004344
- ldrb r2, [r3]
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- bne _0802D020
- ldr r1, _0802CFD0 @ =gUnknown_03004348
- movs r0, 0x1
- eors r0, r2
- ldrb r1, [r1]
- cmp r0, r1
- bcs _0802D020
- ldr r0, _0802CFD4 @ =gMoveSelectionCursor
- ldr r1, _0802CFD8 @ =gActiveBank
- ldrb r1, [r1]
- adds r1, r0
- ldrb r0, [r1]
- cmp r2, r0
- bne _0802CFDC
- ldrb r0, [r1]
- movs r1, 0x1D
- bl sub_802E3B4
- b _0802CFE2
- .align 2, 0
-_0802CFC8: .4byte gMain
-_0802CFCC: .4byte gUnknown_03004344
-_0802CFD0: .4byte gUnknown_03004348
-_0802CFD4: .4byte gMoveSelectionCursor
-_0802CFD8: .4byte gActiveBank
-_0802CFDC:
- ldrb r0, [r3]
- bl nullsub_7
-_0802CFE2:
- ldr r4, _0802D00C @ =gUnknown_03004344
- ldrb r0, [r4]
- movs r1, 0x1
- eors r0, r1
- strb r0, [r4]
- movs r0, 0x5
- bl PlaySE
- ldr r1, _0802D010 @ =gMoveSelectionCursor
- ldr r0, _0802D014 @ =gActiveBank
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r4]
- ldrb r0, [r0]
- cmp r1, r0
- bne _0802D018
- adds r0, r1, 0
- movs r1, 0
- bl sub_802E3B4
- b _0802D020
- .align 2, 0
-_0802D00C: .4byte gUnknown_03004344
-_0802D010: .4byte gMoveSelectionCursor
-_0802D014: .4byte gActiveBank
-_0802D018:
- ldrb r0, [r4]
- movs r1, 0x1B
- bl sub_802E3B4
-_0802D020:
- ldr r0, _0802D050 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0802D0A4
- ldr r3, _0802D054 @ =gUnknown_03004344
- ldrb r2, [r3]
- movs r0, 0x2
- ands r0, r2
- cmp r0, 0
- beq _0802D0A4
- ldr r0, _0802D058 @ =gMoveSelectionCursor
- ldr r1, _0802D05C @ =gActiveBank
- ldrb r1, [r1]
- adds r1, r0
- ldrb r5, [r1]
- cmp r2, r5
- bne _0802D060
- ldrb r0, [r1]
- movs r1, 0x1D
- bl sub_802E3B4
- b _0802D066
- .align 2, 0
-_0802D050: .4byte gMain
-_0802D054: .4byte gUnknown_03004344
-_0802D058: .4byte gMoveSelectionCursor
-_0802D05C: .4byte gActiveBank
-_0802D060:
- ldrb r0, [r3]
- bl nullsub_7
-_0802D066:
- ldr r4, _0802D090 @ =gUnknown_03004344
- ldrb r0, [r4]
- movs r1, 0x2
- eors r0, r1
- strb r0, [r4]
- movs r0, 0x5
- bl PlaySE
- ldr r1, _0802D094 @ =gMoveSelectionCursor
- ldr r0, _0802D098 @ =gActiveBank
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r4]
- ldrb r0, [r0]
- cmp r1, r0
- bne _0802D09C
- adds r0, r1, 0
- movs r1, 0
- bl sub_802E3B4
- b _0802D0A4
- .align 2, 0
-_0802D090: .4byte gUnknown_03004344
-_0802D094: .4byte gMoveSelectionCursor
-_0802D098: .4byte gActiveBank
-_0802D09C:
- ldrb r0, [r4]
- movs r1, 0x1B
- bl sub_802E3B4
-_0802D0A4:
- ldr r0, _0802D0E0 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0802D138
- ldr r3, _0802D0E4 @ =gUnknown_03004344
- ldrb r2, [r3]
- movs r0, 0x2
- ands r0, r2
- cmp r0, 0
- bne _0802D138
- ldr r1, _0802D0E8 @ =gUnknown_03004348
- movs r0, 0x2
- eors r0, r2
- ldrb r1, [r1]
- cmp r0, r1
- bcs _0802D138
- ldr r0, _0802D0EC @ =gMoveSelectionCursor
- ldr r1, _0802D0F0 @ =gActiveBank
- ldrb r1, [r1]
- adds r1, r0
- ldrb r0, [r1]
- cmp r2, r0
- bne _0802D0F4
- ldrb r0, [r1]
- movs r1, 0x1D
- bl sub_802E3B4
- b _0802D0FA
- .align 2, 0
-_0802D0E0: .4byte gMain
-_0802D0E4: .4byte gUnknown_03004344
-_0802D0E8: .4byte gUnknown_03004348
-_0802D0EC: .4byte gMoveSelectionCursor
-_0802D0F0: .4byte gActiveBank
-_0802D0F4:
- ldrb r0, [r3]
- bl nullsub_7
-_0802D0FA:
- ldr r4, _0802D124 @ =gUnknown_03004344
- ldrb r0, [r4]
- movs r1, 0x2
- eors r0, r1
- strb r0, [r4]
- movs r0, 0x5
- bl PlaySE
- ldr r1, _0802D128 @ =gMoveSelectionCursor
- ldr r0, _0802D12C @ =gActiveBank
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r4]
- ldrb r0, [r0]
- cmp r1, r0
- bne _0802D130
- adds r0, r1, 0
- movs r1, 0
- bl sub_802E3B4
- b _0802D138
- .align 2, 0
-_0802D124: .4byte gUnknown_03004344
-_0802D128: .4byte gMoveSelectionCursor
-_0802D12C: .4byte gActiveBank
-_0802D130:
- ldrb r0, [r4]
- movs r1, 0x1B
- bl sub_802E3B4
-_0802D138:
- add sp, 0x2C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_802CA60
-
- thumb_func_start sub_802D148
-sub_802D148: @ 802D148
- push {lr}
- ldr r0, _0802D178 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _0802D174
- movs r0, 0x5A
- bl m4aSongNumStop
- ldr r3, _0802D17C @ =gMain
- ldr r0, _0802D180 @ =0x0000043d
- adds r2, r3, r0
- ldrb r1, [r2]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- ldr r0, _0802D184 @ =gPreBattleCallback1
- ldr r0, [r0]
- str r0, [r3]
- ldr r0, _0802D188 @ =c2_8011A1C
- bl SetMainCallback2
-_0802D174:
- pop {r0}
- bx r0
- .align 2, 0
-_0802D178: .4byte gReceivedRemoteLinkPlayers
-_0802D17C: .4byte gMain
-_0802D180: .4byte 0x0000043d
-_0802D184: .4byte gPreBattleCallback1
-_0802D188: .4byte c2_8011A1C
- thumb_func_end sub_802D148
-
- thumb_func_start sub_802D18C
-sub_802D18C: @ 802D18C
- push {lr}
- ldr r0, _0802D1BC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0802D1F2
- ldr r0, _0802D1C0 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0802D1D0
- bl sub_800832C
- ldr r1, _0802D1C4 @ =gBattleBankFunc
- ldr r0, _0802D1C8 @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0802D1CC @ =sub_802D148
- str r1, [r0]
- b _0802D1F2
- .align 2, 0
-_0802D1BC: .4byte gPaletteFade
-_0802D1C0: .4byte gBattleTypeFlags
-_0802D1C4: .4byte gBattleBankFunc
-_0802D1C8: .4byte gActiveBank
-_0802D1CC: .4byte sub_802D148
-_0802D1D0:
- movs r0, 0x5A
- bl m4aSongNumStop
- ldr r2, _0802D1F8 @ =gMain
- ldr r0, _0802D1FC @ =0x0000043d
- adds r3, r2, r0
- ldrb r1, [r3]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r3]
- ldr r0, _0802D200 @ =gPreBattleCallback1
- ldr r0, [r0]
- str r0, [r2]
- ldr r0, [r2, 0x8]
- bl SetMainCallback2
-_0802D1F2:
- pop {r0}
- bx r0
- .align 2, 0
-_0802D1F8: .4byte gMain
-_0802D1FC: .4byte 0x0000043d
-_0802D200: .4byte gPreBattleCallback1
- thumb_func_end sub_802D18C
-
- thumb_func_start sub_802D204
-sub_802D204: @ 802D204
- push {lr}
- ldr r2, _0802D22C @ =gSprites
- ldr r1, _0802D230 @ =gObjectBankIDs
- ldr r0, _0802D234 @ =gActiveBank
- 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, [r0]
- ldr r0, _0802D238 @ =SpriteCallbackDummy
- cmp r1, r0
- bne _0802D228
- bl PlayerBufferExecCompleted
-_0802D228:
- pop {r0}
- bx r0
- .align 2, 0
-_0802D22C: .4byte gSprites
-_0802D230: .4byte gObjectBankIDs
-_0802D234: .4byte gActiveBank
-_0802D238: .4byte SpriteCallbackDummy
- thumb_func_end sub_802D204
-
- thumb_func_start sub_802D23C
-sub_802D23C: @ 802D23C
- push {lr}
- ldr r2, _0802D264 @ =gSprites
- ldr r1, _0802D268 @ =gObjectBankIDs
- ldr r0, _0802D26C @ =gActiveBank
- 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, [r0]
- ldr r0, _0802D270 @ =SpriteCallbackDummy
- cmp r1, r0
- bne _0802D260
- bl PlayerBufferExecCompleted
-_0802D260:
- pop {r0}
- bx r0
- .align 2, 0
-_0802D264: .4byte gSprites
-_0802D268: .4byte gObjectBankIDs
-_0802D26C: .4byte gActiveBank
-_0802D270: .4byte SpriteCallbackDummy
- thumb_func_end sub_802D23C
-
- thumb_func_start sub_802D274
-sub_802D274: @ 802D274
- push {r4-r6,lr}
- ldr r6, _0802D2CC @ =gSprites
- ldr r5, _0802D2D0 @ =gObjectBankIDs
- ldr r4, _0802D2D4 @ =gActiveBank
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r6, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, [r0]
- ldr r0, _0802D2D8 @ =SpriteCallbackDummy
- cmp r1, r0
- bne _0802D2C6
- ldr r0, _0802D2DC @ =gSaveBlock2
- ldrb r0, [r0, 0x8]
- bl nullsub_10
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- bl FreeSpriteOamMatrix
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- bl DestroySprite
- bl PlayerBufferExecCompleted
-_0802D2C6:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802D2CC: .4byte gSprites
-_0802D2D0: .4byte gObjectBankIDs
-_0802D2D4: .4byte gActiveBank
-_0802D2D8: .4byte SpriteCallbackDummy
-_0802D2DC: .4byte gSaveBlock2
- thumb_func_end sub_802D274
-
- thumb_func_start sub_802D2E0
-sub_802D2E0: @ 802D2E0
- push {lr}
- ldr r3, _0802D314 @ =gActiveBank
- ldrb r0, [r3]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- ldr r2, _0802D318 @ =0x02017810
- adds r1, r2
- ldrb r0, [r1, 0x9]
- subs r0, 0x1
- strb r0, [r1, 0x9]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _0802D310
- ldrb r0, [r3]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r0, 0
- strb r0, [r1, 0x9]
- bl PlayerBufferExecCompleted
-_0802D310:
- pop {r0}
- bx r0
- .align 2, 0
-_0802D314: .4byte gActiveBank
-_0802D318: .4byte 0x02017810
- thumb_func_end sub_802D2E0
-
- thumb_func_start sub_802D31C
-sub_802D31C: @ 802D31C
- push {r4-r7,lr}
- movs r6, 0
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _0802D340
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _0802D374
- ldr r0, _0802D360 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0802D374
-_0802D340:
- ldr r2, _0802D364 @ =gSprites
- ldr r1, _0802D368 @ =gHealthboxIDs
- ldr r0, _0802D36C @ =gActiveBank
- 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, [r0]
- ldr r0, _0802D370 @ =SpriteCallbackDummy
- cmp r1, r0
- bne _0802D3AA
- b _0802D3A8
- .align 2, 0
-_0802D360: .4byte gBattleTypeFlags
-_0802D364: .4byte gSprites
-_0802D368: .4byte gHealthboxIDs
-_0802D36C: .4byte gActiveBank
-_0802D370: .4byte SpriteCallbackDummy
-_0802D374:
- ldr r2, _0802D45C @ =gSprites
- ldr r5, _0802D460 @ =gHealthboxIDs
- ldr r0, _0802D464 @ =gActiveBank
- ldrb r3, [r0]
- adds r0, r3, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r4, [r0]
- ldr r0, _0802D468 @ =SpriteCallbackDummy
- cmp r4, r0
- bne _0802D3AA
- movs r0, 0x2
- eors r3, r0
- adds r0, r3, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- cmp r0, r4
- bne _0802D3AA
-_0802D3A8:
- movs r6, 0x1
-_0802D3AA:
- bl IsCryPlayingOrClearCrySongs
- lsls r0, 24
- cmp r0, 0
- beq _0802D3B6
- movs r6, 0
-_0802D3B6:
- cmp r6, 0
- bne _0802D3BC
- b _0802D4DA
-_0802D3BC:
- ldr r7, _0802D464 @ =gActiveBank
- ldrb r2, [r7]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- ldr r5, _0802D46C @ =0x02017810
- adds r4, r0, r5
- ldrb r1, [r4, 0x1]
- movs r3, 0x1
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- bne _0802D3D8
- b _0802D4DA
-_0802D3D8:
- movs r6, 0x2
- adds r1, r6, 0
- eors r1, r2
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r0, 0x1]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _0802D4DA
- ldrb r1, [r4]
- movs r3, 0x7F
- adds r0, r3, 0
- ands r0, r1
- strb r0, [r4]
- ldrb r0, [r7]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- ldrb r2, [r1, 0x1]
- movs r4, 0x2
- negs r4, r4
- adds r0, r4, 0
- ands r0, r2
- strb r0, [r1, 0x1]
- ldrb r0, [r7]
- adds r1, r6, 0
- eors r1, r0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r0]
- ands r3, r1
- strb r3, [r0]
- ldrb r0, [r7]
- adds r1, r6, 0
- eors r1, r0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r0, 0x1]
- ands r4, r1
- strb r4, [r0, 0x1]
- ldr r4, _0802D470 @ =0x000027f9
- adds r0, r4, 0
- bl FreeSpriteTilesByTag
- adds r0, r4, 0
- bl FreeSpritePaletteByTag
- ldr r0, _0802D474 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0802D47C
- ldr r0, _0802D478 @ =gMPlay_BGM
- bl m4aMPlayContinue
- b _0802D488
- .align 2, 0
-_0802D45C: .4byte gSprites
-_0802D460: .4byte gHealthboxIDs
-_0802D464: .4byte gActiveBank
-_0802D468: .4byte SpriteCallbackDummy
-_0802D46C: .4byte 0x02017810
-_0802D470: .4byte 0x000027f9
-_0802D474: .4byte gBattleTypeFlags
-_0802D478: .4byte gMPlay_BGM
-_0802D47C:
- ldr r0, _0802D4E0 @ =gMPlay_BGM
- ldr r1, _0802D4E4 @ =0x0000ffff
- movs r2, 0x80
- lsls r2, 1
- bl m4aMPlayVolumeControl
-_0802D488:
- ldr r7, _0802D4E8 @ =gBattlePartyID
- ldr r4, _0802D4EC @ =gActiveBank
- ldrb r1, [r4]
- lsls r0, r1, 1
- adds r0, r7
- ldrh r0, [r0]
- movs r6, 0x64
- muls r0, r6
- ldr r5, _0802D4F0 @ =gPlayerParty
- adds r0, r5
- bl sub_80324F8
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _0802D4BE
- ldrb r0, [r4]
- movs r1, 0x2
- eors r1, r0
- lsls r0, r1, 1
- adds r0, r7
- ldrh r0, [r0]
- muls r0, r6
- adds r0, r5
- bl sub_80324F8
-_0802D4BE:
- ldrb r1, [r4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _0802D4F4 @ =0x02017810
- adds r0, r1
- movs r1, 0x3
- strb r1, [r0, 0x9]
- ldr r1, _0802D4F8 @ =gBattleBankFunc
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0802D4FC @ =sub_802D2E0
- str r1, [r0]
-_0802D4DA:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802D4E0: .4byte gMPlay_BGM
-_0802D4E4: .4byte 0x0000ffff
-_0802D4E8: .4byte gBattlePartyID
-_0802D4EC: .4byte gActiveBank
-_0802D4F0: .4byte gPlayerParty
-_0802D4F4: .4byte 0x02017810
-_0802D4F8: .4byte gBattleBankFunc
-_0802D4FC: .4byte sub_802D2E0
- thumb_func_end sub_802D31C
-
- thumb_func_start sub_802D500
-sub_802D500: @ 802D500
- push {r4-r7,lr}
- ldr r5, _0802D654 @ =gActiveBank
- ldrb r2, [r5]
- lsls r3, r2, 1
- adds r0, r3, r2
- lsls r0, 2
- ldr r4, _0802D658 @ =0x02017810
- adds r0, r4
- ldrb r1, [r0]
- movs r7, 0x88
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0
- bne _0802D530
- ldr r0, _0802D65C @ =gBattlePartyID
- adds r0, r3, r0
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _0802D660 @ =gPlayerParty
- adds r1, r0
- adds r0, r2, 0
- bl sub_8141828
-_0802D530:
- ldrb r0, [r5]
- movs r6, 0x2
- adds r2, r6, 0
- eors r2, r0
- lsls r3, r2, 1
- adds r0, r3, r2
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r0]
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0
- bne _0802D55E
- ldr r0, _0802D65C @ =gBattlePartyID
- adds r0, r3, r0
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _0802D660 @ =gPlayerParty
- adds r1, r0
- adds r0, r2, 0
- bl sub_8141828
-_0802D55E:
- ldrb r2, [r5]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r0]
- movs r3, 0x8
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- bne _0802D64C
- adds r1, r6, 0
- eors r1, r2
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r0]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- bne _0802D64C
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _0802D5EE
- ldr r0, _0802D664 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _0802D5EE
- ldr r1, _0802D668 @ =gUnknown_0300434C
- ldrb r0, [r5]
- eors r0, r6
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0802D66C @ =gSprites
- adds r0, r1
- bl DestroySprite
- ldr r4, _0802D670 @ =gHealthboxIDs
- ldrb r0, [r5]
- adds r1, r6, 0
- eors r1, r0
- adds r0, r1, r4
- ldrb r0, [r0]
- ldr r2, _0802D65C @ =gBattlePartyID
- lsls r1, 1
- adds r1, r2
- ldrh r2, [r1]
- movs r1, 0x64
- muls r1, r2
- ldr r2, _0802D660 @ =gPlayerParty
- adds r1, r2
- movs r2, 0
- bl sub_8045A5C
- ldrb r0, [r5]
- eors r0, r6
- bl sub_804777C
- ldrb r0, [r5]
- eors r0, r6
- adds r0, r4
- ldrb r0, [r0]
- bl sub_8043DFC
-_0802D5EE:
- ldr r1, _0802D668 @ =gUnknown_0300434C
- ldr r4, _0802D654 @ =gActiveBank
- ldrb r0, [r4]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0802D66C @ =gSprites
- adds r0, r1
- bl DestroySprite
- ldr r5, _0802D670 @ =gHealthboxIDs
- ldrb r1, [r4]
- adds r0, r1, r5
- ldrb r0, [r0]
- ldr r2, _0802D65C @ =gBattlePartyID
- lsls r1, 1
- adds r1, r2
- ldrh r2, [r1]
- movs r1, 0x64
- muls r1, r2
- ldr r2, _0802D660 @ =gPlayerParty
- adds r1, r2
- movs r2, 0
- bl sub_8045A5C
- ldrb r0, [r4]
- bl sub_804777C
- ldrb r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- bl sub_8043DFC
- ldr r2, _0802D674 @ =0x02017840
- ldrb r1, [r2, 0x9]
- movs r0, 0x2
- negs r0, r0
- ands r0, r1
- strb r0, [r2, 0x9]
- ldr r1, _0802D678 @ =gBattleBankFunc
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0802D67C @ =sub_802D31C
- str r1, [r0]
-_0802D64C:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802D654: .4byte gActiveBank
-_0802D658: .4byte 0x02017810
-_0802D65C: .4byte gBattlePartyID
-_0802D660: .4byte gPlayerParty
-_0802D664: .4byte gBattleTypeFlags
-_0802D668: .4byte gUnknown_0300434C
-_0802D66C: .4byte gSprites
-_0802D670: .4byte gHealthboxIDs
-_0802D674: .4byte 0x02017840
-_0802D678: .4byte gBattleBankFunc
-_0802D67C: .4byte sub_802D31C
- thumb_func_end sub_802D500
-
- thumb_func_start sub_802D680
-sub_802D680: @ 802D680
- push {r4-r6,lr}
- ldr r2, _0802D710 @ =gSprites
- ldr r0, _0802D714 @ =gHealthboxIDs
- ldr r6, _0802D718 @ =gActiveBank
- ldrb r3, [r6]
- adds r0, r3, r0
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, [r0]
- ldr r0, _0802D71C @ =SpriteCallbackDummy
- cmp r1, r0
- bne _0802D708
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 2
- ldr r5, _0802D720 @ =0x02017810
- adds r2, r0, r5
- ldrb r1, [r2, 0x1]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0802D708
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
- ldrb r0, [r6]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- ldrb r2, [r1, 0x1]
- movs r0, 0x2
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x1]
- ldr r4, _0802D724 @ =0x000027f9
- adds r0, r4, 0
- bl FreeSpriteTilesByTag
- adds r0, r4, 0
- bl FreeSpritePaletteByTag
- ldrb r2, [r6]
- lsls r0, r2, 2
- adds r1, r5, 0
- subs r1, 0x10
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0802D6FC
- adds r0, r2, 0
- adds r1, r2, 0
- movs r3, 0x6
- bl move_anim_start_t4
-_0802D6FC:
- ldr r0, _0802D728 @ =gBattleBankFunc
- ldrb r1, [r6]
- lsls r1, 2
- adds r1, r0
- ldr r0, _0802D72C @ =sub_802D730
- str r0, [r1]
-_0802D708:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802D710: .4byte gSprites
-_0802D714: .4byte gHealthboxIDs
-_0802D718: .4byte gActiveBank
-_0802D71C: .4byte SpriteCallbackDummy
-_0802D720: .4byte 0x02017810
-_0802D724: .4byte 0x000027f9
-_0802D728: .4byte gBattleBankFunc
-_0802D72C: .4byte sub_802D730
- thumb_func_end sub_802D680
-
- thumb_func_start sub_802D730
-sub_802D730: @ 802D730
- push {r4,lr}
- ldr r4, _0802D780 @ =gActiveBank
- ldrb r1, [r4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _0802D784 @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _0802D77A
- bl IsCryPlayingOrClearCrySongs
- lsls r0, 24
- cmp r0, 0
- bne _0802D77A
- ldr r0, _0802D788 @ =gMPlay_BGM
- ldr r1, _0802D78C @ =0x0000ffff
- movs r2, 0x80
- lsls r2, 1
- bl m4aMPlayVolumeControl
- ldr r2, _0802D790 @ =gBattlePartyID
- ldrb r1, [r4]
- lsls r0, r1, 1
- adds r0, r2
- ldrh r2, [r0]
- movs r0, 0x64
- muls r0, r2
- ldr r2, _0802D794 @ =gPlayerParty
- adds r0, r2
- bl sub_80324F8
- bl PlayerBufferExecCompleted
-_0802D77A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0802D780: .4byte gActiveBank
-_0802D784: .4byte 0x02017810
-_0802D788: .4byte gMPlay_BGM
-_0802D78C: .4byte 0x0000ffff
-_0802D790: .4byte gBattlePartyID
-_0802D794: .4byte gPlayerParty
- thumb_func_end sub_802D730
-
- thumb_func_start sub_802D798
-sub_802D798: @ 802D798
- push {r4-r6,lr}
- ldr r5, _0802D844 @ =gActiveBank
- ldrb r2, [r5]
- lsls r3, r2, 1
- adds r0, r3, r2
- lsls r0, 2
- ldr r6, _0802D848 @ =0x02017810
- adds r0, r6
- ldrb r1, [r0]
- movs r0, 0x88
- ands r0, r1
- cmp r0, 0
- bne _0802D7C6
- ldr r0, _0802D84C @ =gBattlePartyID
- adds r0, r3, r0
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _0802D850 @ =gPlayerParty
- adds r1, r0
- adds r0, r2, 0
- bl sub_8141828
-_0802D7C6:
- ldr r4, _0802D854 @ =gSprites
- ldr r0, _0802D858 @ =gUnknown_0300434C
- ldrb r2, [r5]
- adds r0, r2, r0
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r3, r0, 2
- adds r0, r4, 0
- adds r0, 0x1C
- adds r0, r3, r0
- ldr r1, [r0]
- ldr r0, _0802D85C @ =SpriteCallbackDummy
- cmp r1, r0
- bne _0802D83C
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r0, r6
- ldrb r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- bne _0802D83C
- adds r0, r3, r4
- bl DestroySprite
- ldr r4, _0802D860 @ =gHealthboxIDs
- ldrb r1, [r5]
- adds r0, r1, r4
- ldrb r0, [r0]
- ldr r2, _0802D84C @ =gBattlePartyID
- lsls r1, 1
- adds r1, r2
- ldrh r2, [r1]
- movs r1, 0x64
- muls r1, r2
- ldr r2, _0802D850 @ =gPlayerParty
- adds r1, r2
- movs r2, 0
- bl sub_8045A5C
- ldrb r0, [r5]
- bl sub_804777C
- ldrb r0, [r5]
- adds r0, r4
- ldrb r0, [r0]
- bl sub_8043DFC
- ldrb r0, [r5]
- bl sub_8031F88
- ldr r1, _0802D864 @ =gBattleBankFunc
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0802D868 @ =sub_802D680
- str r1, [r0]
-_0802D83C:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802D844: .4byte gActiveBank
-_0802D848: .4byte 0x02017810
-_0802D84C: .4byte gBattlePartyID
-_0802D850: .4byte gPlayerParty
-_0802D854: .4byte gSprites
-_0802D858: .4byte gUnknown_0300434C
-_0802D85C: .4byte SpriteCallbackDummy
-_0802D860: .4byte gHealthboxIDs
-_0802D864: .4byte gBattleBankFunc
-_0802D868: .4byte sub_802D680
- thumb_func_end sub_802D798
-
- thumb_func_start c3_0802FDF4
-c3_0802FDF4: @ 802D86C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsCryPlayingOrClearCrySongs
- lsls r0, 24
- cmp r0, 0
- bne _0802D88E
- ldr r0, _0802D894 @ =gMPlay_BGM
- ldr r1, _0802D898 @ =0x0000ffff
- movs r2, 0x80
- lsls r2, 1
- bl m4aMPlayVolumeControl
- adds r0, r4, 0
- bl DestroyTask
-_0802D88E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0802D894: .4byte gMPlay_BGM
-_0802D898: .4byte 0x0000ffff
- thumb_func_end c3_0802FDF4
-
- thumb_func_start bx_t1_healthbar_update
-bx_t1_healthbar_update: @ 802D89C
- push {r4-r6,lr}
- ldr r5, _0802D8DC @ =gActiveBank
- ldrb r0, [r5]
- ldr r6, _0802D8E0 @ =gHealthboxIDs
- adds r1, r0, r6
- ldrb r1, [r1]
- movs r2, 0
- movs r3, 0
- bl sub_8045C78
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldrb r0, [r5]
- adds r0, r6
- ldrb r0, [r0]
- bl sub_8043DFC
- lsls r4, 16
- asrs r1, r4, 16
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _0802D8E4
- ldrb r0, [r5]
- adds r0, r6
- ldrb r0, [r0]
- movs r2, 0
- bl sub_80440EC
- b _0802D8FE
- .align 2, 0
-_0802D8DC: .4byte gActiveBank
-_0802D8E0: .4byte gHealthboxIDs
-_0802D8E4:
- ldr r2, _0802D904 @ =gBattlePartyID
- ldrb r1, [r5]
- lsls r0, r1, 1
- adds r0, r2
- ldrh r2, [r0]
- movs r0, 0x64
- muls r0, r2
- ldr r2, _0802D908 @ =gPlayerParty
- adds r0, r2
- bl sub_80324F8
- bl PlayerBufferExecCompleted
-_0802D8FE:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802D904: .4byte gBattlePartyID
-_0802D908: .4byte gPlayerParty
- thumb_func_end bx_t1_healthbar_update
-
- thumb_func_start sub_802D90C
-sub_802D90C: @ 802D90C
- push {lr}
- ldr r0, _0802D920 @ =gUnknown_03004210
- ldrh r0, [r0, 0x16]
- cmp r0, 0
- bne _0802D91A
- bl PlayerBufferExecCompleted
-_0802D91A:
- pop {r0}
- bx r0
- .align 2, 0
-_0802D920: .4byte gUnknown_03004210
- thumb_func_end sub_802D90C
-
- thumb_func_start sub_802D924
-sub_802D924: @ 802D924
- 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 r9, r0
- ldr r1, _0802DA24 @ =gTasks
- lsls r0, 2
- add r0, r9
- lsls r0, 3
- adds r0, r1
- mov r8, r0
- ldrb r0, [r0, 0x8]
- mov r10, r0
- mov r1, r8
- ldrb r7, [r1, 0xC]
- str r7, [sp, 0x8]
- ldrh r2, [r1, 0xA]
- str r2, [sp, 0xC]
- bl IsDoubleBattle
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0802D96A
- ldr r1, _0802DA28 @ =gBattlePartyID
- lsls r0, r7, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r10, r0
- bne _0802D96A
- b _0802DA80
-_0802D96A:
- movs r0, 0x64
- mov r1, r10
- muls r1, r0
- ldr r0, _0802DA2C @ =gPlayerParty
- adds r6, r1, r0
- adds r0, r6, 0
- movs r1, 0xB
- bl GetMonData
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r6, 0
- movs r1, 0x38
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r6, 0
- movs r1, 0x19
- bl GetMonData
- str r0, [sp, 0x4]
- ldr r3, _0802DA30 @ =gExperienceTables
- adds r4, 0x1
- lsls r4, 2
- ldr r2, _0802DA34 @ =gBaseStats
- lsls r1, r5, 3
- subs r1, r5
- lsls r1, 2
- adds r1, r2
- ldrb r2, [r1, 0x13]
- movs r1, 0xCA
- lsls r1, 1
- muls r1, r2
- adds r4, r1
- adds r4, r3
- ldr r2, [r4]
- str r2, [sp]
- ldr r3, [sp, 0xC]
- lsls r1, r3, 16
- asrs r1, 16
- adds r0, r1
- cmp r0, r2
- bcc _0802DA58
- adds r0, r6, 0
- movs r1, 0x19
- mov r2, sp
- bl SetMonData
- adds r0, r6, 0
- bl CalculateMonStats
- ldr r2, [sp]
- add r0, sp, 0x4
- ldrh r0, [r0]
- subs r2, r0
- ldr r0, [sp, 0xC]
- subs r2, r0, r2
- ldr r4, _0802DA38 @ =gActiveBank
- ldrb r5, [r4]
- strb r7, [r4]
- lsls r2, 16
- lsrs r2, 16
- movs r0, 0x1
- movs r1, 0xB
- bl dp01_build_cmdbuf_x21_a_bb
- strb r5, [r4]
- bl IsDoubleBattle
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0802DA40
- ldr r2, _0802DA28 @ =gBattlePartyID
- lsls r0, r7, 1
- adds r0, r2
- mov r1, r10
- ldrh r0, [r0]
- cmp r1, r0
- beq _0802DA1E
- movs r0, 0x2
- eors r7, r0
- lsls r0, r7, 1
- adds r0, r2
- ldrh r0, [r0]
- cmp r1, r0
- bne _0802DA40
-_0802DA1E:
- ldr r0, _0802DA3C @ =sub_802DCB0
- b _0802DA82
- .align 2, 0
-_0802DA24: .4byte gTasks
-_0802DA28: .4byte gBattlePartyID
-_0802DA2C: .4byte gPlayerParty
-_0802DA30: .4byte gExperienceTables
-_0802DA34: .4byte gBaseStats
-_0802DA38: .4byte gActiveBank
-_0802DA3C: .4byte sub_802DCB0
-_0802DA40:
- ldr r0, _0802DA50 @ =gTasks
- mov r2, r9
- lsls r1, r2, 2
- add r1, r9
- lsls r1, 3
- adds r1, r0
- ldr r0, _0802DA54 @ =sub_802DDC4
- b _0802DA84
- .align 2, 0
-_0802DA50: .4byte gTasks
-_0802DA54: .4byte sub_802DDC4
-_0802DA58:
- str r0, [sp, 0x4]
- add r2, sp, 0x4
- adds r0, r6, 0
- movs r1, 0x19
- bl SetMonData
- ldr r1, _0802DA78 @ =gBattleBankFunc
- ldr r3, [sp, 0x8]
- lsls r0, r3, 2
- adds r0, r1
- ldr r1, _0802DA7C @ =sub_802D90C
- str r1, [r0]
- mov r0, r9
- bl DestroyTask
- b _0802DA86
- .align 2, 0
-_0802DA78: .4byte gBattleBankFunc
-_0802DA7C: .4byte sub_802D90C
-_0802DA80:
- ldr r0, _0802DA98 @ =sub_802DA9C
-_0802DA82:
- mov r1, r8
-_0802DA84:
- str r0, [r1]
-_0802DA86:
- 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
-_0802DA98: .4byte sub_802DA9C
- thumb_func_end sub_802D924
-
- thumb_func_start sub_802DA9C
-sub_802DA9C: @ 802DA9C
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0802DB54 @ =gTasks
- lsls r2, r0, 2
- mov r8, r2
- add r8, r0
- mov r0, r8
- lsls r0, 3
- mov r8, r0
- add r8, r1
- mov r2, r8
- ldrb r1, [r2, 0x8]
- movs r0, 0xA
- ldrsh r2, [r2, r0]
- mov r9, r2
- mov r2, r8
- ldrb r2, [r2, 0xC]
- mov r10, r2
- movs r0, 0x64
- adds r6, r1, 0
- muls r6, r0
- ldr r0, _0802DB58 @ =gPlayerParty
- adds r6, r0
- adds r0, r6, 0
- movs r1, 0x38
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r6, 0
- movs r1, 0xB
- bl GetMonData
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r6, 0
- movs r1, 0x19
- bl GetMonData
- adds r3, r0, 0
- ldr r6, _0802DB5C @ =gExperienceTables
- lsls r1, r4, 2
- ldr r2, _0802DB60 @ =gBaseStats
- lsls r0, r5, 3
- subs r0, r5
- lsls r0, 2
- adds r0, r2
- ldrb r2, [r0, 0x13]
- movs r0, 0xCA
- lsls r0, 1
- muls r0, r2
- adds r1, r0
- adds r1, r6
- ldr r1, [r1]
- subs r3, r1
- adds r4, 0x1
- lsls r4, 2
- adds r4, r0
- adds r4, r6
- ldr r2, [r4]
- subs r2, r1
- ldr r0, _0802DB64 @ =gHealthboxIDs
- add r0, r10
- ldrb r1, [r0]
- mov r0, r9
- negs r0, r0
- str r0, [sp]
- mov r0, r10
- bl sub_8043D84
- movs r0, 0x21
- bl PlaySE
- ldr r0, _0802DB68 @ =sub_802DB6C
- mov r1, r8
- str r0, [r1]
- 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
-_0802DB54: .4byte gTasks
-_0802DB58: .4byte gPlayerParty
-_0802DB5C: .4byte gExperienceTables
-_0802DB60: .4byte gBaseStats
-_0802DB64: .4byte gHealthboxIDs
-_0802DB68: .4byte sub_802DB6C
- thumb_func_end sub_802DA9C
-
- thumb_func_start sub_802DB6C
-sub_802DB6C: @ 802DB6C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r1, _0802DB98 @ =gTasks
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- adds r6, r0, r1
- ldrh r1, [r6, 0x1C]
- movs r2, 0x1C
- ldrsh r0, [r6, r2]
- cmp r0, 0xC
- bgt _0802DB9C
- adds r0, r1, 0x1
- strh r0, [r6, 0x1C]
- b _0802DC98
- .align 2, 0
-_0802DB98: .4byte gTasks
-_0802DB9C:
- ldrb r0, [r6, 0x8]
- mov r9, r0
- ldrh r2, [r6, 0xA]
- mov r10, r2
- ldrb r7, [r6, 0xC]
- ldr r5, _0802DC64 @ =gHealthboxIDs
- adds r5, r7, r5
- ldrb r1, [r5]
- adds r0, r7, 0
- movs r2, 0x1
- movs r3, 0
- bl sub_8045C78
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldrb r0, [r5]
- bl sub_8043DFC
- lsls r4, 16
- asrs r4, 16
- movs r0, 0x1
- negs r0, r0
- cmp r4, r0
- bne _0802DC98
- movs r0, 0x21
- bl m4aSongNumStop
- movs r0, 0x64
- mov r1, r9
- muls r1, r0
- ldr r0, _0802DC68 @ =gPlayerParty
- adds r5, r1, r0
- adds r0, r5, 0
- movs r1, 0x38
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x19
- bl GetMonData
- str r0, [sp, 0x4]
- adds r0, r5, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- ldr r3, _0802DC6C @ =gExperienceTables
- adds r4, 0x1
- lsls r4, 2
- ldr r2, _0802DC70 @ =gBaseStats
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r1, [r1, 0x13]
- movs r0, 0xCA
- lsls r0, 1
- muls r0, r1
- adds r4, r0
- adds r4, r3
- ldr r1, [r4]
- str r1, [sp]
- mov r2, r10
- lsls r0, r2, 16
- asrs r4, r0, 16
- ldr r0, [sp, 0x4]
- adds r0, r4
- cmp r0, r1
- blt _0802DC7C
- adds r0, r5, 0
- movs r1, 0x19
- mov r2, sp
- bl SetMonData
- adds r0, r5, 0
- bl CalculateMonStats
- ldr r2, [sp]
- add r0, sp, 0x4
- ldrh r0, [r0]
- subs r2, r0
- subs r2, r4, r2
- ldr r4, _0802DC74 @ =gActiveBank
- ldrb r5, [r4]
- strb r7, [r4]
- lsls r2, 16
- lsrs r2, 16
- movs r0, 0x1
- movs r1, 0xB
- bl dp01_build_cmdbuf_x21_a_bb
- strb r5, [r4]
- ldr r0, _0802DC78 @ =sub_802DCB0
- str r0, [r6]
- b _0802DC98
- .align 2, 0
-_0802DC64: .4byte gHealthboxIDs
-_0802DC68: .4byte gPlayerParty
-_0802DC6C: .4byte gExperienceTables
-_0802DC70: .4byte gBaseStats
-_0802DC74: .4byte gActiveBank
-_0802DC78: .4byte sub_802DCB0
-_0802DC7C:
- str r0, [sp, 0x4]
- add r2, sp, 0x4
- adds r0, r5, 0
- movs r1, 0x19
- bl SetMonData
- ldr r1, _0802DCA8 @ =gBattleBankFunc
- lsls r0, r7, 2
- adds r0, r1
- ldr r1, _0802DCAC @ =sub_802D90C
- str r1, [r0]
- mov r0, r8
- bl DestroyTask
-_0802DC98:
- 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
-_0802DCA8: .4byte gBattleBankFunc
-_0802DCAC: .4byte sub_802D90C
- thumb_func_end sub_802DB6C
-
- thumb_func_start sub_802DCB0
-sub_802DCB0: @ 802DCB0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _0802DD04 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldrb r4, [r0, 0xC]
- ldrb r6, [r0, 0x8]
- bl IsDoubleBattle
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0802DCE4
- ldr r1, _0802DD08 @ =gBattlePartyID
- movs r0, 0x2
- adds r2, r4, 0
- eors r2, r0
- lsls r0, r2, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r6, r0
- bne _0802DCE4
- adds r4, r2, 0
-_0802DCE4:
- adds r0, r4, 0
- adds r1, r4, 0
- adds r2, r4, 0
- movs r3, 0
- bl move_anim_start_t4
- ldr r0, _0802DD04 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, _0802DD0C @ =sub_802DD10
- str r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802DD04: .4byte gTasks
-_0802DD08: .4byte gBattlePartyID
-_0802DD0C: .4byte sub_802DD10
- thumb_func_end sub_802DCB0
-
- thumb_func_start sub_802DD10
-sub_802DD10: @ 802DD10
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, _0802DD78 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r2, r0, r1
- ldrb r5, [r2, 0xC]
- lsls r0, r5, 1
- adds r0, r5
- lsls r0, 2
- ldr r1, _0802DD7C @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _0802DDAE
- ldrb r4, [r2, 0x8]
- movs r0, 0x64
- adds r1, r4, 0
- muls r1, r0
- ldr r0, _0802DD80 @ =gPlayerParty
- adds r7, r1, r0
- adds r0, r7, 0
- movs r1, 0x38
- bl GetMonData
- bl IsDoubleBattle
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0802DD8C
- ldr r1, _0802DD84 @ =gBattlePartyID
- movs r0, 0x2
- adds r2, r5, 0
- eors r2, r0
- lsls r0, r2, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r4, r0
- bne _0802DD8C
- ldr r0, _0802DD88 @ =gHealthboxIDs
- adds r0, r2, r0
- ldrb r0, [r0]
- adds r1, r7, 0
- movs r2, 0
- bl sub_8045A5C
- b _0802DDA0
- .align 2, 0
-_0802DD78: .4byte gTasks
-_0802DD7C: .4byte 0x02017810
-_0802DD80: .4byte gPlayerParty
-_0802DD84: .4byte gBattlePartyID
-_0802DD88: .4byte gHealthboxIDs
-_0802DD8C:
- ldr r0, _0802DDB4 @ =gHealthboxIDs
- adds r0, r5, r0
- ldrb r0, [r0]
- movs r1, 0x64
- muls r1, r4
- ldr r2, _0802DDB8 @ =gPlayerParty
- adds r1, r2
- movs r2, 0
- bl sub_8045A5C
-_0802DDA0:
- ldr r0, _0802DDBC @ =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldr r0, _0802DDC0 @ =sub_802DDC4
- str r0, [r1]
-_0802DDAE:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802DDB4: .4byte gHealthboxIDs
-_0802DDB8: .4byte gPlayerParty
-_0802DDBC: .4byte gTasks
-_0802DDC0: .4byte sub_802DDC4
- thumb_func_end sub_802DD10
-
- thumb_func_start sub_802DDC4
-sub_802DDC4: @ 802DDC4
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r0, _0802DE00 @ =gTasks
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- adds r4, r0
- ldrb r1, [r4, 0x8]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0802DE04 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x38
- bl GetMonData
- ldrb r0, [r4, 0xC]
- ldr r1, _0802DE08 @ =gBattleBankFunc
- lsls r0, 2
- adds r0, r1
- ldr r1, _0802DE0C @ =sub_802D90C
- str r1, [r0]
- adds r0, r5, 0
- bl DestroyTask
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0802DE00: .4byte gTasks
-_0802DE04: .4byte gPlayerParty
-_0802DE08: .4byte gBattleBankFunc
-_0802DE0C: .4byte sub_802D90C
- thumb_func_end sub_802DDC4
-
- thumb_func_start sub_802DE10
-sub_802DE10: @ 802DE10
- push {r4-r6,lr}
- ldr r6, _0802DE94 @ =gSprites
- ldr r5, _0802DE98 @ =gObjectBankIDs
- ldr r4, _0802DE9C @ =gActiveBank
- ldrb r2, [r4]
- adds r0, r2, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r3, 0x22
- ldrsh r1, [r0, r3]
- movs r3, 0x26
- ldrsh r0, [r0, r3]
- adds r1, r0
- cmp r1, 0xA0
- ble _0802DE8C
- ldr r1, _0802DEA0 @ =gBattlePartyID
- lsls r0, r2, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0802DEA4 @ =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- bl nullsub_9
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrb r0, [r0, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- bl DestroySprite
- ldr r1, _0802DEA8 @ =gHealthboxIDs
- ldrb r0, [r4]
- adds r0, r1
- ldrb r0, [r0]
- bl sub_8043DB0
- bl PlayerBufferExecCompleted
-_0802DE8C:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802DE94: .4byte gSprites
-_0802DE98: .4byte gObjectBankIDs
-_0802DE9C: .4byte gActiveBank
-_0802DEA0: .4byte gBattlePartyID
-_0802DEA4: .4byte gPlayerParty
-_0802DEA8: .4byte gHealthboxIDs
- thumb_func_end sub_802DE10
-
- thumb_func_start sub_802DEAC
-sub_802DEAC: @ 802DEAC
- push {r4-r6,lr}
- ldr r6, _0802DF04 @ =gActiveBank
- ldrb r2, [r6]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- ldr r1, _0802DF08 @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _0802DEFC
- ldr r5, _0802DF0C @ =gObjectBankIDs
- adds r0, r2, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _0802DF10 @ =gSprites
- adds r0, r4
- bl FreeSpriteOamMatrix
- ldrb r0, [r6]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
- ldr r1, _0802DF14 @ =gHealthboxIDs
- ldrb r0, [r6]
- adds r0, r1
- ldrb r0, [r0]
- bl sub_8043DB0
- bl PlayerBufferExecCompleted
-_0802DEFC:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802DF04: .4byte gActiveBank
-_0802DF08: .4byte 0x02017810
-_0802DF0C: .4byte gObjectBankIDs
-_0802DF10: .4byte gSprites
-_0802DF14: .4byte gHealthboxIDs
- thumb_func_end sub_802DEAC
-
- thumb_func_start sub_802DF18
-sub_802DF18: @ 802DF18
- push {lr}
- ldr r0, _0802DF2C @ =gUnknown_03004210
- ldrh r0, [r0, 0x16]
- cmp r0, 0
- bne _0802DF26
- bl PlayerBufferExecCompleted
-_0802DF26:
- pop {r0}
- bx r0
- .align 2, 0
-_0802DF2C: .4byte gUnknown_03004210
- thumb_func_end sub_802DF18
-
- thumb_func_start sub_802DF30
-sub_802DF30: @ 802DF30
- push {r4,lr}
- ldr r0, _0802DF70 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0802DF6A
- ldr r1, _0802DF74 @ =gBattleBankFunc
- ldr r2, _0802DF78 @ =gActiveBank
- ldrb r0, [r2]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0802DF7C @ =sub_802DF88
- str r1, [r0]
- ldr r3, _0802DF80 @ =gTasks
- ldr r1, _0802DF84 @ =gUnknown_0300434C
- ldrb r0, [r2]
- adds r0, r1
- ldrb r0, [r0]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r3
- ldrb r4, [r1, 0x8]
- bl DestroyTask
- adds r0, r4, 0
- bl sub_8094E20
-_0802DF6A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0802DF70: .4byte gPaletteFade
-_0802DF74: .4byte gBattleBankFunc
-_0802DF78: .4byte gActiveBank
-_0802DF7C: .4byte sub_802DF88
-_0802DF80: .4byte gTasks
-_0802DF84: .4byte gUnknown_0300434C
- thumb_func_end sub_802DF30
-
- thumb_func_start sub_802DF88
-sub_802DF88: @ 802DF88
- push {lr}
- ldr r0, _0802DFB8 @ =gMain
- ldr r1, [r0, 0x4]
- ldr r0, _0802DFBC @ =sub_800F808
- cmp r1, r0
- bne _0802DFF8
- ldr r0, _0802DFC0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0802DFF8
- ldr r0, _0802DFC4 @ =gUnknown_0202E8F4
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0802DFD0
- ldr r0, _0802DFC8 @ =gUnknown_0202E8F5
- ldrb r1, [r0]
- ldr r2, _0802DFCC @ =gUnknown_02038470
- movs r0, 0x1
- bl dp01_build_cmdbuf_x22_a_three_bytes
- b _0802DFDA
- .align 2, 0
-_0802DFB8: .4byte gMain
-_0802DFBC: .4byte sub_800F808
-_0802DFC0: .4byte gPaletteFade
-_0802DFC4: .4byte gUnknown_0202E8F4
-_0802DFC8: .4byte gUnknown_0202E8F5
-_0802DFCC: .4byte gUnknown_02038470
-_0802DFD0:
- movs r0, 0x1
- movs r1, 0x6
- movs r2, 0
- bl dp01_build_cmdbuf_x22_a_three_bytes
-_0802DFDA:
- ldr r1, _0802DFFC @ =gBattleBufferA
- ldr r0, _0802E000 @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 9
- adds r1, 0x1
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0x1
- bne _0802DFF4
- bl b_link_standby_message
-_0802DFF4:
- bl PlayerBufferExecCompleted
-_0802DFF8:
- pop {r0}
- bx r0
- .align 2, 0
-_0802DFFC: .4byte gBattleBufferA
-_0802E000: .4byte gActiveBank
- thumb_func_end sub_802DF88
-
- thumb_func_start sub_802E004
-sub_802E004: @ 802E004
- push {lr}
- ldr r0, _0802E02C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0802E028
- ldr r1, _0802E030 @ =gBattleBankFunc
- ldr r0, _0802E034 @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0802E038 @ =sub_802E03C
- str r1, [r0]
- bl nullsub_14
- bl sub_80A6DCC
-_0802E028:
- pop {r0}
- bx r0
- .align 2, 0
-_0802E02C: .4byte gPaletteFade
-_0802E030: .4byte gBattleBankFunc
-_0802E034: .4byte gActiveBank
-_0802E038: .4byte sub_802E03C
- thumb_func_end sub_802E004
-
- thumb_func_start sub_802E03C
-sub_802E03C: @ 802E03C
- push {lr}
- ldr r0, _0802E068 @ =gMain
- ldr r1, [r0, 0x4]
- ldr r0, _0802E06C @ =sub_800F808
- cmp r1, r0
- bne _0802E062
- ldr r0, _0802E070 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0802E062
- ldr r0, _0802E074 @ =gScriptItemId
- ldrh r1, [r0]
- movs r0, 0x1
- bl dp01_build_cmdbuf_x23_aa_0
- bl PlayerBufferExecCompleted
-_0802E062:
- pop {r0}
- bx r0
- .align 2, 0
-_0802E068: .4byte gMain
-_0802E06C: .4byte sub_800F808
-_0802E070: .4byte gPaletteFade
-_0802E074: .4byte gScriptItemId
- thumb_func_end sub_802E03C
-
- thumb_func_start bx_wait_t1
-bx_wait_t1: @ 802E078
- push {lr}
- ldr r0, _0802E0A4 @ =gDoingBattleAnim
- ldrb r0, [r0]
- cmp r0, 0
- beq _0802E09A
- ldr r0, _0802E0A8 @ =gActiveBank
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _0802E0AC @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _0802E09E
-_0802E09A:
- bl PlayerBufferExecCompleted
-_0802E09E:
- pop {r0}
- bx r0
- .align 2, 0
-_0802E0A4: .4byte gDoingBattleAnim
-_0802E0A8: .4byte gActiveBank
-_0802E0AC: .4byte 0x02017810
- thumb_func_end bx_wait_t1
-
- thumb_func_start bx_blink_t1
-bx_blink_t1: @ 802E0B0
- push {r4,lr}
- ldr r1, _0802E0EC @ =gObjectBankIDs
- ldr r0, _0802E0F0 @ =gActiveBank
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- ldr r2, _0802E0F4 @ =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r4, r0, r2
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- cmp r0, 0x20
- bne _0802E0FC
- movs r3, 0
- movs r0, 0
- strh r0, [r4, 0x30]
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- subs r0, 0x5
- ands r0, r1
- strb r0, [r2]
- ldr r0, _0802E0F8 @ =gDoingBattleAnim
- strb r3, [r0]
- bl PlayerBufferExecCompleted
- b _0802E126
- .align 2, 0
-_0802E0EC: .4byte gObjectBankIDs
-_0802E0F0: .4byte gActiveBank
-_0802E0F4: .4byte gSprites
-_0802E0F8: .4byte gDoingBattleAnim
-_0802E0FC:
- ldrh r0, [r4, 0x30]
- movs r1, 0x3
- ands r0, r1
- cmp r0, 0
- bne _0802E120
- 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]
-_0802E120:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
-_0802E126:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end bx_blink_t1
-
- thumb_func_start sub_802E12C
-sub_802E12C: @ 802E12C
- push {r4-r6,lr}
- sub sp, 0x4
- adds r6, r0, 0
- ldr r0, _0802E180 @ =gActiveBank
- ldrb r4, [r0]
- lsls r4, 9
- ldr r0, _0802E184 @ =gUnknown_02023A64
- adds r4, r0
- ldr r5, _0802E188 @ =gDisplayedStringBattle
- adds r0, r5, 0
- bl StringCopy
- lsls r0, r6, 1
- adds r4, r0
- ldrh r1, [r4]
- movs r0, 0xD
- muls r1, r0
- ldr r0, _0802E18C @ =gMoveNames
- adds r1, r0
- adds r0, r5, 0
- bl StringAppend
- ldr r4, _0802E190 @ =gUnknown_03004210
- adds r1, r5, 0
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 18
- movs r2, 0xC0
- lsls r2, 18
- adds r0, r2
- lsrs r2, r0, 16
- movs r0, 0x1
- ands r0, r6
- movs r3, 0x1
- cmp r0, 0
- beq _0802E176
- movs r3, 0xB
-_0802E176:
- cmp r6, 0x1
- bgt _0802E194
- movs r0, 0x37
- b _0802E196
- .align 2, 0
-_0802E180: .4byte gActiveBank
-_0802E184: .4byte gUnknown_02023A64
-_0802E188: .4byte gDisplayedStringBattle
-_0802E18C: .4byte gMoveNames
-_0802E190: .4byte gUnknown_03004210
-_0802E194:
- movs r0, 0x39
-_0802E196:
- str r0, [sp]
- adds r0, r4, 0
- bl InitWindow
- ldr r0, _0802E1AC @ =gUnknown_03004210
- bl sub_8002F44
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802E1AC: .4byte gUnknown_03004210
- thumb_func_end sub_802E12C
-
- thumb_func_start sub_802E1B0
-sub_802E1B0: @ 802E1B0
- push {r4-r6,lr}
- sub sp, 0x8
- ldr r0, _0802E208 @ =gActiveBank
- ldrb r4, [r0]
- lsls r4, 9
- ldr r0, _0802E20C @ =gUnknown_02023A64
- adds r4, r0
- ldr r5, _0802E210 @ =gUnknown_03004348
- movs r0, 0
- strb r0, [r5]
- ldr r0, _0802E214 @ =gUnknown_03004210
- ldr r1, _0802E218 @ =0x00001016
- movs r2, 0x14
- str r2, [sp]
- movs r2, 0x3A
- str r2, [sp, 0x4]
- movs r2, 0x1
- movs r3, 0x37
- bl FillWindowRect
- movs r6, 0
-_0802E1DA:
- lsls r0, r6, 24
- lsrs r0, 24
- bl nullsub_7
- adds r0, r6, 0
- ldr r1, _0802E21C @ =gUnknown_08400D49
- bl sub_802E12C
- ldrh r0, [r4]
- cmp r0, 0
- beq _0802E1F6
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
-_0802E1F6:
- adds r4, 0x2
- adds r6, 0x1
- cmp r6, 0x3
- ble _0802E1DA
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802E208: .4byte gActiveBank
-_0802E20C: .4byte gUnknown_02023A64
-_0802E210: .4byte gUnknown_03004348
-_0802E214: .4byte gUnknown_03004210
-_0802E218: .4byte 0x00001016
-_0802E21C: .4byte gUnknown_08400D49
- thumb_func_end sub_802E1B0
-
- thumb_func_start sub_802E220
-sub_802E220: @ 802E220
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r4, _0802E2B8 @ =gBattleBufferA
- ldr r6, _0802E2BC @ =gActiveBank
- ldrb r0, [r6]
- lsls r1, r0, 9
- adds r0, r4, 0x2
- adds r0, r1, r0
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0802E2B0
- adds r4, 0x4
- adds r4, r1, r4
- ldr r2, _0802E2C0 @ =gDisplayedStringBattle
- ldr r1, _0802E2C4 @ =gUnknown_08400D49
- adds r0, r2, 0
- bl StringCopy
- adds r2, r0, 0
- movs r1, 0xFC
- strb r1, [r2]
- movs r0, 0x11
- strb r0, [r2, 0x1]
- movs r0, 0x2
- strb r0, [r2, 0x2]
- adds r2, 0x3
- strb r1, [r2]
- movs r0, 0x14
- strb r0, [r2, 0x1]
- movs r0, 0x6
- strb r0, [r2, 0x2]
- adds r2, 0x3
- ldr r5, _0802E2C8 @ =gMoveSelectionCursor
- ldrb r1, [r6]
- adds r1, r5
- adds r0, r4, 0
- adds r0, 0x8
- ldrb r1, [r1]
- adds r0, r1
- ldrb r1, [r0]
- adds r0, r2, 0
- movs r2, 0x1
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- adds r2, r0, 0
- movs r0, 0xBA
- strb r0, [r2]
- adds r2, 0x1
- ldrb r0, [r6]
- adds r0, r5
- adds r4, 0xC
- ldrb r0, [r0]
- adds r4, r0
- ldrb r1, [r4]
- adds r0, r2, 0
- movs r2, 0x1
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r4, _0802E2CC @ =gUnknown_03004210
- ldr r1, _0802E2C0 @ =gDisplayedStringBattle
- ldr r2, _0802E2D0 @ =0x000002a2
- movs r0, 0x37
- str r0, [sp]
- adds r0, r4, 0
- movs r3, 0x19
- bl InitWindow
- adds r0, r4, 0
- bl sub_8002F44
-_0802E2B0:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802E2B8: .4byte gBattleBufferA
-_0802E2BC: .4byte gActiveBank
-_0802E2C0: .4byte gDisplayedStringBattle
-_0802E2C4: .4byte gUnknown_08400D49
-_0802E2C8: .4byte gMoveSelectionCursor
-_0802E2CC: .4byte gUnknown_03004210
-_0802E2D0: .4byte 0x000002a2
- thumb_func_end sub_802E220
-
- thumb_func_start sub_802E2D4
-sub_802E2D4: @ 802E2D4
- push {r4,r5,lr}
- sub sp, 0x8
- ldr r4, _0802E314 @ =gBattleBufferA
- ldr r5, _0802E318 @ =gActiveBank
- ldrb r0, [r5]
- lsls r1, r0, 9
- adds r0, r4, 0x2
- adds r0, r1, r0
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0802E328
- ldr r4, _0802E31C @ =gUnknown_03004210
- ldr r1, _0802E320 @ =0x00001016
- movs r0, 0x1C
- str r0, [sp]
- movs r0, 0x3A
- str r0, [sp, 0x4]
- adds r0, r4, 0
- movs r2, 0x17
- movs r3, 0x37
- bl FillWindowRect
- ldr r1, _0802E324 @ =gUnknown_08400D52
- movs r2, 0xA4
- lsls r2, 2
- movs r0, 0x37
- str r0, [sp]
- adds r0, r4, 0
- movs r3, 0x13
- bl InitWindow
- b _0802E388
- .align 2, 0
-_0802E314: .4byte gBattleBufferA
-_0802E318: .4byte gActiveBank
-_0802E31C: .4byte gUnknown_03004210
-_0802E320: .4byte 0x00001016
-_0802E324: .4byte gUnknown_08400D52
-_0802E328:
- adds r4, 0x4
- adds r4, r1, r4
- ldr r3, _0802E398 @ =gDisplayedStringBattle
- ldr r1, _0802E39C @ =gUnknown_08400D49
- adds r0, r3, 0
- bl StringCopy
- adds r3, r0, 0
- ldr r2, _0802E3A0 @ =gBattleMoves
- ldr r1, _0802E3A4 @ =gMoveSelectionCursor
- ldrb r0, [r5]
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 1
- adds r4, r0
- ldrh r1, [r4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x2]
- lsls r1, r0, 3
- subs r1, r0
- ldr r0, _0802E3A8 @ =gTypeNames
- adds r1, r0
- adds r0, r3, 0
- bl StringCopy
- ldr r4, _0802E3AC @ =gUnknown_03004210
- ldr r1, _0802E3B0 @ =0x00001016
- movs r0, 0x1C
- str r0, [sp]
- movs r0, 0x3A
- str r0, [sp, 0x4]
- adds r0, r4, 0
- movs r2, 0x17
- movs r3, 0x39
- bl FillWindowRect
- ldr r1, _0802E398 @ =gDisplayedStringBattle
- movs r2, 0xB0
- lsls r2, 2
- movs r0, 0x39
- str r0, [sp]
- adds r0, r4, 0
- movs r3, 0x17
- bl InitWindow
-_0802E388:
- ldr r0, _0802E3AC @ =gUnknown_03004210
- bl sub_8002F44
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0802E398: .4byte gDisplayedStringBattle
-_0802E39C: .4byte gUnknown_08400D49
-_0802E3A0: .4byte gBattleMoves
-_0802E3A4: .4byte gMoveSelectionCursor
-_0802E3A8: .4byte gTypeNames
-_0802E3AC: .4byte gUnknown_03004210
-_0802E3B0: .4byte 0x00001016
- thumb_func_end sub_802E2D4
-
- thumb_func_start sub_802E3B4
-sub_802E3B4: @ 802E3B4
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x48
- bl sub_814A958
- ldr r1, _0802E3DC @ =gUnknown_081FAE89
- lsls r4, 1
- adds r0, r4, r1
- ldrb r0, [r0]
- adds r1, 0x1
- adds r4, r1
- ldrb r1, [r4]
- bl sub_814A880
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0802E3DC: .4byte gUnknown_081FAE89
- thumb_func_end sub_802E3B4
-
- thumb_func_start nullsub_7
-nullsub_7: @ 802E3E0
- bx lr
- thumb_func_end nullsub_7
-
- thumb_func_start sub_802E3E4
-sub_802E3E4: @ 802E3E4
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x2A
- bl sub_814A958
- ldr r1, _0802E40C @ =gUnknown_081FAE91
- lsls r4, 1
- adds r0, r4, r1
- ldrb r0, [r0]
- adds r1, 0x1
- adds r4, r1
- ldrb r1, [r4]
- bl sub_814A880
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0802E40C: .4byte gUnknown_081FAE91
- thumb_func_end sub_802E3E4
-
- thumb_func_start nullsub_8
-nullsub_8: @ 802E410
- bx lr
- thumb_func_end nullsub_8
-
- thumb_func_start sub_802E414
-sub_802E414: @ 802E414
- push {lr}
- ldr r0, _0802E420 @ =ReshowBattleScreenAfterMenu
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_0802E420: .4byte ReshowBattleScreenAfterMenu
- thumb_func_end sub_802E414
-
- thumb_func_start sub_802E424
-sub_802E424: @ 802E424
- push {lr}
- ldr r0, _0802E430 @ =ReshowBattleScreenAfterMenu
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_0802E430: .4byte ReshowBattleScreenAfterMenu
- thumb_func_end sub_802E424
-
- thumb_func_start sub_802E434
-sub_802E434: @ 802E434
- push {lr}
- ldr r0, _0802E458 @ =gActiveBank
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _0802E45C @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _0802E452
- bl PlayerBufferExecCompleted
-_0802E452:
- pop {r0}
- bx r0
- .align 2, 0
-_0802E458: .4byte gActiveBank
-_0802E45C: .4byte 0x02017810
- thumb_func_end sub_802E434
-
- thumb_func_start sub_802E460
-sub_802E460: @ 802E460
- push {lr}
- ldr r0, _0802E484 @ =gActiveBank
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _0802E488 @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _0802E47E
- bl PlayerBufferExecCompleted
-_0802E47E:
- pop {r0}
- bx r0
- .align 2, 0
-_0802E484: .4byte gActiveBank
-_0802E488: .4byte 0x02017810
- thumb_func_end sub_802E460
-
- thumb_func_start b_link_standby_message
-b_link_standby_message: @ 802E48C
- push {lr}
- sub sp, 0x4
- ldr r0, _0802E4BC @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0802E4B6
- ldr r0, _0802E4C0 @ =gUnknown_030042A4
- movs r1, 0
- strh r1, [r0]
- ldr r0, _0802E4C4 @ =gUnknown_030042A0
- strh r1, [r0]
- ldr r0, _0802E4C8 @ =gUnknown_03004210
- ldr r1, _0802E4CC @ =gUnknown_08400CE0
- movs r2, 0xF
- str r2, [sp]
- movs r2, 0x90
- movs r3, 0x2
- bl sub_8002EB0
-_0802E4B6:
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_0802E4BC: .4byte gBattleTypeFlags
-_0802E4C0: .4byte gUnknown_030042A4
-_0802E4C4: .4byte gUnknown_030042A0
-_0802E4C8: .4byte gUnknown_03004210
-_0802E4CC: .4byte gUnknown_08400CE0
- thumb_func_end b_link_standby_message
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_9.s b/asm/battle_9.s
index 1c5431afc..9f4beef55 100644
--- a/asm/battle_9.s
+++ b/asm/battle_9.s
@@ -41,7 +41,7 @@ ai_switch_perish_song: @ 8035FEC
movs r0, 0x1
movs r1, 0x2
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl Emitcmd33
movs r0, 0x1
b _0803604E
.align 2, 0
@@ -86,7 +86,7 @@ _08036070:
movs r0, 0x1
movs r1, 0x2
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl Emitcmd33
movs r0, 0x1
b _080361CA
.align 2, 0
@@ -410,7 +410,7 @@ _0803630C:
movs r0, 0x1
movs r1, 0x2
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl Emitcmd33
movs r0, 0x1
b _08036402
.align 2, 0
@@ -634,7 +634,7 @@ _080364E0:
movs r0, 0x1
movs r1, 0x2
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl Emitcmd33
_080364FE:
movs r0, 0x1
_08036500:
@@ -958,7 +958,7 @@ _08036768:
movs r0, 0x1
movs r1, 0x2
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl Emitcmd33
movs r0, 0x1
b _080368DA
.align 2, 0
@@ -1533,7 +1533,7 @@ _08036C2E:
lsls r2, 8
movs r0, 0x1
movs r1, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl Emitcmd33
_08036C40:
pop {r4-r6}
pop {r0}
@@ -2623,7 +2623,7 @@ _080374AE:
movs r0, 0x1
movs r1, 0x1
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl Emitcmd33
ldr r1, _080374DC @ =0x02000000
ldr r0, _080374E0 @ =gActiveBank
ldrb r0, [r0]
@@ -2667,1414 +2667,4 @@ _080374FA:
bx r1
thumb_func_end sub_803708C
- thumb_func_start nullsub_47
-nullsub_47: @ 803750C
- bx lr
- thumb_func_end nullsub_47
-
- thumb_func_start SetBankFuncToLinkOpponentBufferRunCommand
-SetBankFuncToLinkOpponentBufferRunCommand: @ 8037510
- ldr r1, _08037520 @ =gBattleBankFunc
- ldr r0, _08037524 @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r1, _08037528 @ =sub_803752C
- str r1, [r0]
- bx lr
- .align 2, 0
-_08037520: .4byte gBattleBankFunc
-_08037524: .4byte gActiveBank
-_08037528: .4byte sub_803752C
- thumb_func_end SetBankFuncToLinkOpponentBufferRunCommand
-
- thumb_func_start sub_803752C
-sub_803752C: @ 803752C
- push {lr}
- ldr r2, _08037560 @ =gBattleExecBuffer
- ldr r1, _08037564 @ =gBitTable
- ldr r0, _08037568 @ =gActiveBank
- ldrb r3, [r0]
- lsls r0, r3, 2
- adds r0, r1
- ldr r1, [r2]
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _08037578
- ldr r0, _0803756C @ =gBattleBufferA
- lsls r1, r3, 9
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0x38
- bhi _08037574
- ldr r0, _08037570 @ =gLinkOpponentBufferCommands
- ldrb r1, [r1]
- lsls r1, 2
- adds r1, r0
- ldr r0, [r1]
- bl _call_via_r0
- b _08037578
- .align 2, 0
-_08037560: .4byte gBattleExecBuffer
-_08037564: .4byte gBitTable
-_08037568: .4byte gActiveBank
-_0803756C: .4byte gBattleBufferA
-_08037570: .4byte gLinkOpponentBufferCommands
-_08037574:
- bl dp01_tbl4_exec_completed
-_08037578:
- pop {r0}
- bx r0
- thumb_func_end sub_803752C
-
- thumb_func_start sub_803757C
-sub_803757C: @ 803757C
- push {lr}
- ldr r2, _080375A4 @ =gSprites
- ldr r1, _080375A8 @ =gObjectBankIDs
- ldr r0, _080375AC @ =gActiveBank
- 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, [r0]
- ldr r0, _080375B0 @ =SpriteCallbackDummy
- cmp r1, r0
- bne _080375A0
- bl dp01_tbl4_exec_completed
-_080375A0:
- pop {r0}
- bx r0
- .align 2, 0
-_080375A4: .4byte gSprites
-_080375A8: .4byte gObjectBankIDs
-_080375AC: .4byte gActiveBank
-_080375B0: .4byte SpriteCallbackDummy
- thumb_func_end sub_803757C
-
- thumb_func_start sub_80375B4
-sub_80375B4: @ 80375B4
- push {r4-r6,lr}
- ldr r4, _0803762C @ =gSprites
- ldr r6, _08037630 @ =gObjectBankIDs
- ldr r5, _08037634 @ =gActiveBank
- ldrb r0, [r5]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r2, r0, 2
- adds r0, r4, 0
- adds r0, 0x1C
- adds r0, r2, r0
- ldr r1, [r0]
- ldr r0, _08037638 @ =SpriteCallbackDummy
- cmp r1, r0
- bne _08037624
- adds r0, r2, r4
- ldrh r0, [r0, 0x6]
- bl sub_8031B74
- ldrb r0, [r5]
- adds r0, r6
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrh r0, [r1, 0x38]
- ldr r2, _0803763C @ =0x000003ff
- ands r2, r0
- ldrh r3, [r1, 0x4]
- ldr r0, _08037640 @ =0xfffffc00
- ands r0, r3
- orrs r0, r2
- strh r0, [r1, 0x4]
- ldrb r0, [r5]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl FreeSpriteOamMatrix
- ldrb r0, [r5]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
- bl dp01_tbl4_exec_completed
-_08037624:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0803762C: .4byte gSprites
-_08037630: .4byte gObjectBankIDs
-_08037634: .4byte gActiveBank
-_08037638: .4byte SpriteCallbackDummy
-_0803763C: .4byte 0x000003ff
-_08037640: .4byte 0xfffffc00
- thumb_func_end sub_80375B4
-
- thumb_func_start sub_8037644
-sub_8037644: @ 8037644
- push {lr}
- ldr r3, _08037678 @ =gActiveBank
- ldrb r0, [r3]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- ldr r2, _0803767C @ =0x02017810
- adds r1, r2
- ldrb r0, [r1, 0x9]
- subs r0, 0x1
- strb r0, [r1, 0x9]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _08037674
- ldrb r0, [r3]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r0, 0
- strb r0, [r1, 0x9]
- bl dp01_tbl4_exec_completed
-_08037674:
- pop {r0}
- bx r0
- .align 2, 0
-_08037678: .4byte gActiveBank
-_0803767C: .4byte 0x02017810
- thumb_func_end sub_8037644
-
- thumb_func_start sub_8037680
-sub_8037680: @ 8037680
- push {r4-r7,lr}
- movs r6, 0
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _080376A4
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _080376D8
- ldr r0, _080376C4 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080376D8
-_080376A4:
- ldr r2, _080376C8 @ =gSprites
- ldr r1, _080376CC @ =gHealthboxIDs
- ldr r0, _080376D0 @ =gActiveBank
- 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, [r0]
- ldr r0, _080376D4 @ =SpriteCallbackDummy
- cmp r1, r0
- bne _0803770E
- b _0803770C
- .align 2, 0
-_080376C4: .4byte gBattleTypeFlags
-_080376C8: .4byte gSprites
-_080376CC: .4byte gHealthboxIDs
-_080376D0: .4byte gActiveBank
-_080376D4: .4byte SpriteCallbackDummy
-_080376D8:
- ldr r2, _080377D8 @ =gSprites
- ldr r5, _080377DC @ =gHealthboxIDs
- ldr r0, _080377E0 @ =gActiveBank
- ldrb r3, [r0]
- adds r0, r3, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r4, [r0]
- ldr r0, _080377E4 @ =SpriteCallbackDummy
- cmp r4, r0
- bne _0803770E
- movs r0, 0x2
- eors r3, r0
- adds r0, r3, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- cmp r0, r4
- bne _0803770E
-_0803770C:
- movs r6, 0x1
-_0803770E:
- bl IsCryPlayingOrClearCrySongs
- lsls r0, 24
- cmp r0, 0
- beq _0803771A
- movs r6, 0
-_0803771A:
- cmp r6, 0
- bne _08037720
- b _08037822
-_08037720:
- ldr r7, _080377E0 @ =gActiveBank
- ldrb r0, [r7]
- bl GetBankIdentity
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x1
- bne _080377B4
- ldrb r2, [r7]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- ldr r5, _080377E8 @ =0x02017810
- adds r4, r0, r5
- ldrb r1, [r4, 0x1]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _08037822
- movs r6, 0x2
- adds r1, r6, 0
- eors r1, r2
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r0, 0x1]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _08037822
- ldrb r1, [r4]
- movs r3, 0x7F
- adds r0, r3, 0
- ands r0, r1
- strb r0, [r4]
- ldrb r0, [r7]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- ldrb r2, [r1, 0x1]
- movs r4, 0x2
- negs r4, r4
- adds r0, r4, 0
- ands r0, r2
- strb r0, [r1, 0x1]
- ldrb r0, [r7]
- adds r1, r6, 0
- eors r1, r0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r0]
- ands r3, r1
- strb r3, [r0]
- ldrb r0, [r7]
- adds r1, r6, 0
- eors r1, r0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r0, 0x1]
- ands r4, r1
- strb r4, [r0, 0x1]
- ldr r4, _080377EC @ =0x000027f9
- adds r0, r4, 0
- bl FreeSpriteTilesByTag
- adds r0, r4, 0
- bl FreeSpritePaletteByTag
-_080377B4:
- ldr r0, _080377F0 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080377F8
- ldrb r0, [r7]
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08037804
- ldr r0, _080377F4 @ =gMPlay_BGM
- bl m4aMPlayContinue
- b _08037804
- .align 2, 0
-_080377D8: .4byte gSprites
-_080377DC: .4byte gHealthboxIDs
-_080377E0: .4byte gActiveBank
-_080377E4: .4byte SpriteCallbackDummy
-_080377E8: .4byte 0x02017810
-_080377EC: .4byte 0x000027f9
-_080377F0: .4byte gBattleTypeFlags
-_080377F4: .4byte gMPlay_BGM
-_080377F8:
- ldr r0, _08037828 @ =gMPlay_BGM
- ldr r1, _0803782C @ =0x0000ffff
- movs r2, 0x80
- lsls r2, 1
- bl m4aMPlayVolumeControl
-_08037804:
- ldr r2, _08037830 @ =gActiveBank
- ldrb r1, [r2]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _08037834 @ =0x02017810
- adds r0, r1
- movs r1, 0x3
- strb r1, [r0, 0x9]
- ldr r1, _08037838 @ =gBattleBankFunc
- ldrb r0, [r2]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0803783C @ =sub_8037644
- str r1, [r0]
-_08037822:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08037828: .4byte gMPlay_BGM
-_0803782C: .4byte 0x0000ffff
-_08037830: .4byte gActiveBank
-_08037834: .4byte 0x02017810
-_08037838: .4byte gBattleBankFunc
-_0803783C: .4byte sub_8037644
- thumb_func_end sub_8037680
-
- thumb_func_start sub_8037840
-sub_8037840: @ 8037840
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r6, _08037A48 @ =gActiveBank
- ldrb r2, [r6]
- lsls r3, r2, 1
- adds r0, r3, r2
- lsls r0, 2
- ldr r5, _08037A4C @ =0x02017810
- adds r0, r5
- ldrb r1, [r0]
- movs r4, 0x88
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- bne _08037878
- ldr r0, _08037A50 @ =gBattlePartyID
- adds r0, r3, r0
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _08037A54 @ =gEnemyParty
- adds r1, r0
- adds r0, r2, 0
- bl sub_8141828
-_08037878:
- ldrb r0, [r6]
- movs r7, 0x2
- adds r2, r7, 0
- eors r2, r0
- lsls r3, r2, 1
- adds r0, r3, r2
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r0]
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- bne _080378A6
- ldr r0, _08037A50 @ =gBattlePartyID
- adds r0, r3, r0
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _08037A54 @ =gEnemyParty
- adds r1, r0
- adds r0, r2, 0
- bl sub_8141828
-_080378A6:
- ldrb r2, [r6]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r0]
- movs r3, 0x8
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _080378BE
- b _08037A3A
-_080378BE:
- adds r1, r2, 0
- eors r1, r7
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r0]
- adds r0, r3, 0
- ands r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _080378DA
- b _08037A3A
-_080378DA:
- ldr r0, _08037A58 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0803791A
- adds r0, r2, 0
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bne _0803791A
- ldrb r0, [r6]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- ldrb r0, [r1, 0x9]
- adds r0, 0x1
- strb r0, [r1, 0x9]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0803790E
- b _08037A3A
-_0803790E:
- ldrb r1, [r6]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strb r4, [r0, 0x9]
-_0803791A:
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _080379B2
- ldr r0, _08037A58 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _080379B2
- ldr r1, _08037A5C @ =gUnknown_0300434C
- ldr r5, _08037A48 @ =gActiveBank
- ldrb r0, [r5]
- movs r4, 0x2
- eors r0, r4
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08037A60 @ =gSprites
- adds r0, r1
- bl DestroySprite
- ldr r0, _08037A64 @ =gHealthboxIDs
- mov r8, r0
- ldrb r0, [r5]
- adds r1, r4, 0
- eors r1, r0
- mov r2, r8
- adds r0, r1, r2
- ldrb r0, [r0]
- ldr r2, _08037A50 @ =gBattlePartyID
- mov r10, r2
- lsls r1, 1
- add r1, r10
- ldrh r1, [r1]
- movs r2, 0x64
- mov r9, r2
- mov r2, r9
- muls r2, r1
- adds r1, r2, 0
- ldr r6, _08037A54 @ =gEnemyParty
- adds r1, r6
- movs r2, 0
- bl sub_8045A5C
- ldrb r0, [r5]
- eors r0, r4
- bl sub_804777C
- ldrb r0, [r5]
- eors r0, r4
- add r0, r8
- ldrb r0, [r0]
- bl sub_8043DFC
- ldrb r0, [r5]
- eors r4, r0
- lsls r0, r4, 1
- add r0, r10
- ldrh r0, [r0]
- mov r1, r9
- muls r1, r0
- adds r0, r1, 0
- adds r0, r6
- movs r1, 0xB
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_8032984
-_080379B2:
- ldr r1, _08037A5C @ =gUnknown_0300434C
- ldr r4, _08037A48 @ =gActiveBank
- ldrb r0, [r4]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08037A60 @ =gSprites
- adds r0, r1
- bl DestroySprite
- ldr r5, _08037A64 @ =gHealthboxIDs
- ldrb r1, [r4]
- adds r0, r1, r5
- ldrb r0, [r0]
- ldr r2, _08037A50 @ =gBattlePartyID
- mov r9, r2
- lsls r1, 1
- add r1, r9
- ldrh r1, [r1]
- movs r2, 0x64
- mov r8, r2
- mov r2, r8
- muls r2, r1
- adds r1, r2, 0
- ldr r6, _08037A54 @ =gEnemyParty
- adds r1, r6
- movs r2, 0
- bl sub_8045A5C
- ldrb r0, [r4]
- bl sub_804777C
- ldrb r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- bl sub_8043DFC
- ldrb r5, [r4]
- lsls r0, r5, 1
- add r0, r9
- ldrh r0, [r0]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r6
- movs r1, 0xB
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r5, 0
- bl sub_8032984
- ldr r2, _08037A68 @ =0x02017840
- ldrb r1, [r2, 0x9]
- movs r0, 0x2
- negs r0, r0
- ands r0, r1
- strb r0, [r2, 0x9]
- ldr r1, _08037A6C @ =gBattleBankFunc
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, _08037A70 @ =sub_8037680
- str r1, [r0]
-_08037A3A:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08037A48: .4byte gActiveBank
-_08037A4C: .4byte 0x02017810
-_08037A50: .4byte gBattlePartyID
-_08037A54: .4byte gEnemyParty
-_08037A58: .4byte gBattleTypeFlags
-_08037A5C: .4byte gUnknown_0300434C
-_08037A60: .4byte gSprites
-_08037A64: .4byte gHealthboxIDs
-_08037A68: .4byte 0x02017840
-_08037A6C: .4byte gBattleBankFunc
-_08037A70: .4byte sub_8037680
- thumb_func_end sub_8037840
-
- thumb_func_start sub_8037A74
-sub_8037A74: @ 8037A74
- push {r4-r7,lr}
- ldr r2, _08037ACC @ =gSprites
- ldr r0, _08037AD0 @ =gObjectBankIDs
- ldr r7, _08037AD4 @ =gActiveBank
- ldrb r3, [r7]
- adds r0, r3, r0
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r2
- adds r0, r1, 0
- adds r0, 0x3F
- ldrb r0, [r0]
- lsls r0, 27
- lsrs r2, r0, 31
- cmp r2, 0x1
- bne _08037B18
- movs r4, 0x24
- ldrsh r0, [r1, r4]
- cmp r0, 0
- bne _08037B18
- lsls r4, r3, 1
- adds r0, r4, r3
- lsls r0, 2
- ldr r6, _08037AD8 @ =0x02017810
- adds r1, r0, r6
- ldrb r5, [r1]
- movs r0, 0x80
- ands r0, r5
- cmp r0, 0
- bne _08037AE4
- ldr r0, _08037ADC @ =gBattlePartyID
- adds r0, r4, r0
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _08037AE0 @ =gEnemyParty
- adds r1, r0
- adds r0, r3, 0
- bl sub_8141828
- b _08037B18
- .align 2, 0
-_08037ACC: .4byte gSprites
-_08037AD0: .4byte gObjectBankIDs
-_08037AD4: .4byte gActiveBank
-_08037AD8: .4byte 0x02017810
-_08037ADC: .4byte gBattlePartyID
-_08037AE0: .4byte gEnemyParty
-_08037AE4:
- ldrb r0, [r1, 0x1]
- ands r2, r0
- cmp r2, 0
- beq _08037B18
- movs r0, 0x7F
- ands r0, r5
- strb r0, [r1]
- ldrb r0, [r7]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- ldrb r2, [r1, 0x1]
- movs r0, 0x2
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x1]
- ldr r4, _08037B20 @ =0x000027f9
- adds r0, r4, 0
- bl FreeSpriteTilesByTag
- adds r0, r4, 0
- bl FreeSpritePaletteByTag
- bl dp01_tbl4_exec_completed
-_08037B18:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08037B20: .4byte 0x000027f9
- thumb_func_end sub_8037A74
-
- thumb_func_start sub_8037B24
-sub_8037B24: @ 8037B24
- push {r4-r6,lr}
- ldr r6, _08037B64 @ =gActiveBank
- ldrb r0, [r6]
- ldr r5, _08037B68 @ =gHealthboxIDs
- adds r1, r0, r5
- ldrb r1, [r1]
- movs r2, 0
- movs r3, 0
- bl sub_8045C78
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldrb r0, [r6]
- adds r0, r5
- ldrb r0, [r0]
- bl sub_8043DFC
- lsls r4, 16
- asrs r1, r4, 16
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _08037B6C
- ldrb r0, [r6]
- adds r0, r5
- ldrb r0, [r0]
- movs r2, 0
- bl sub_80440EC
- b _08037B70
- .align 2, 0
-_08037B64: .4byte gActiveBank
-_08037B68: .4byte gHealthboxIDs
-_08037B6C:
- bl dp01_tbl4_exec_completed
-_08037B70:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8037B24
-
- thumb_func_start sub_8037B78
-sub_8037B78: @ 8037B78
- push {lr}
- ldr r2, _08037BAC @ =gSprites
- ldr r0, _08037BB0 @ =gObjectBankIDs
- ldr r1, _08037BB4 @ =gActiveBank
- ldrb r3, [r1]
- adds r0, r3, r0
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r0, [r0]
- lsls r0, 31
- cmp r0, 0
- bne _08037BA6
- ldr r0, _08037BB8 @ =gHealthboxIDs
- adds r0, r3, r0
- ldrb r0, [r0]
- bl sub_8043DB0
- bl dp01_tbl4_exec_completed
-_08037BA6:
- pop {r0}
- bx r0
- .align 2, 0
-_08037BAC: .4byte gSprites
-_08037BB0: .4byte gObjectBankIDs
-_08037BB4: .4byte gActiveBank
-_08037BB8: .4byte gHealthboxIDs
- thumb_func_end sub_8037B78
-
- thumb_func_start sub_8037BBC
-sub_8037BBC: @ 8037BBC
- push {r4-r6,lr}
- ldr r6, _08037C18 @ =gActiveBank
- ldrb r2, [r6]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- ldr r1, _08037C1C @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _08037C12
- ldr r5, _08037C20 @ =gObjectBankIDs
- adds r0, r2, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _08037C24 @ =gSprites
- adds r0, r4
- bl FreeSpriteOamMatrix
- ldrb r0, [r6]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
- ldrb r0, [r6]
- bl sub_8032A08
- ldr r1, _08037C28 @ =gHealthboxIDs
- ldrb r0, [r6]
- adds r0, r1
- ldrb r0, [r0]
- bl sub_8043DB0
- bl dp01_tbl4_exec_completed
-_08037C12:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08037C18: .4byte gActiveBank
-_08037C1C: .4byte 0x02017810
-_08037C20: .4byte gObjectBankIDs
-_08037C24: .4byte gSprites
-_08037C28: .4byte gHealthboxIDs
- thumb_func_end sub_8037BBC
-
- thumb_func_start sub_8037C2C
-sub_8037C2C: @ 8037C2C
- push {lr}
- ldr r0, _08037C40 @ =gUnknown_03004210
- ldrh r0, [r0, 0x16]
- cmp r0, 0
- bne _08037C3A
- bl dp01_tbl4_exec_completed
-_08037C3A:
- pop {r0}
- bx r0
- .align 2, 0
-_08037C40: .4byte gUnknown_03004210
- thumb_func_end sub_8037C2C
-
- thumb_func_start dp01t_0F_4_move_anim
-dp01t_0F_4_move_anim: @ 8037C44
- push {r4,lr}
- ldr r1, _08037C80 @ =gObjectBankIDs
- ldr r0, _08037C84 @ =gActiveBank
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- ldr r2, _08037C88 @ =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r4, r0, r2
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- cmp r0, 0x20
- bne _08037C90
- movs r3, 0
- movs r0, 0
- strh r0, [r4, 0x30]
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- subs r0, 0x5
- ands r0, r1
- strb r0, [r2]
- ldr r0, _08037C8C @ =gDoingBattleAnim
- strb r3, [r0]
- bl dp01_tbl4_exec_completed
- b _08037CBA
- .align 2, 0
-_08037C80: .4byte gObjectBankIDs
-_08037C84: .4byte gActiveBank
-_08037C88: .4byte gSprites
-_08037C8C: .4byte gDoingBattleAnim
-_08037C90:
- ldrh r0, [r4, 0x30]
- movs r1, 0x3
- ands r0, r1
- cmp r0, 0
- bne _08037CB4
- 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]
-_08037CB4:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
-_08037CBA:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end dp01t_0F_4_move_anim
-
- thumb_func_start sub_8037CC0
-sub_8037CC0: @ 8037CC0
- push {r4,lr}
- ldr r2, _08037D10 @ =gSprites
- ldr r0, _08037D14 @ =gHealthboxIDs
- ldr r4, _08037D18 @ =gActiveBank
- ldrb r3, [r4]
- adds r0, r3, r0
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, [r0]
- ldr r0, _08037D1C @ =SpriteCallbackDummy
- cmp r1, r0
- bne _08037D08
- lsls r0, r3, 2
- ldr r1, _08037D20 @ =0x02017800
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _08037CFC
- adds r0, r3, 0
- adds r1, r3, 0
- adds r2, r3, 0
- movs r3, 0x6
- bl move_anim_start_t4
-_08037CFC:
- ldr r0, _08037D24 @ =gBattleBankFunc
- ldrb r1, [r4]
- lsls r1, 2
- adds r1, r0
- ldr r0, _08037D28 @ =sub_8037D2C
- str r0, [r1]
-_08037D08:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08037D10: .4byte gSprites
-_08037D14: .4byte gHealthboxIDs
-_08037D18: .4byte gActiveBank
-_08037D1C: .4byte SpriteCallbackDummy
-_08037D20: .4byte 0x02017800
-_08037D24: .4byte gBattleBankFunc
-_08037D28: .4byte sub_8037D2C
- thumb_func_end sub_8037CC0
-
- thumb_func_start sub_8037D2C
-sub_8037D2C: @ 8037D2C
- push {lr}
- ldr r0, _08037D58 @ =gActiveBank
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _08037D5C @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _08037D52
- ldr r0, _08037D60 @ =c3_0802FDF4
- movs r1, 0xA
- bl CreateTask
- bl dp01_tbl4_exec_completed
-_08037D52:
- pop {r0}
- bx r0
- .align 2, 0
-_08037D58: .4byte gActiveBank
-_08037D5C: .4byte 0x02017810
-_08037D60: .4byte c3_0802FDF4
- thumb_func_end sub_8037D2C
-
- thumb_func_start sub_8037D64
-sub_8037D64: @ 8037D64
- push {r4,r5,lr}
- ldr r5, _08037E08 @ =gActiveBank
- ldrb r1, [r5]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r3, _08037E0C @ =0x02017810
- adds r2, r0, r3
- ldrb r1, [r2, 0x1]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08037E00
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
- ldrb r0, [r5]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- ldrb r2, [r1, 0x1]
- movs r0, 0x2
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x1]
- ldr r4, _08037E10 @ =0x000027f9
- adds r0, r4, 0
- bl FreeSpriteTilesByTag
- adds r0, r4, 0
- bl FreeSpritePaletteByTag
- ldr r1, _08037E14 @ =gObjectBankIDs
- ldrb r0, [r5]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08037E18 @ =gSprites
- adds r0, r1
- movs r1, 0
- bl StartSpriteAnim
- ldr r4, _08037E1C @ =gHealthboxIDs
- ldrb r1, [r5]
- adds r0, r1, r4
- ldrb r0, [r0]
- ldr r2, _08037E20 @ =gBattlePartyID
- lsls r1, 1
- adds r1, r2
- ldrh r2, [r1]
- movs r1, 0x64
- muls r1, r2
- ldr r2, _08037E24 @ =gEnemyParty
- adds r1, r2
- movs r2, 0
- bl sub_8045A5C
- ldrb r0, [r5]
- bl sub_804777C
- ldrb r0, [r5]
- adds r0, r4
- ldrb r0, [r0]
- bl sub_8043DFC
- ldrb r0, [r5]
- bl sub_8031F88
- ldr r1, _08037E28 @ =gBattleBankFunc
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, _08037E2C @ =sub_8037CC0
- str r1, [r0]
-_08037E00:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08037E08: .4byte gActiveBank
-_08037E0C: .4byte 0x02017810
-_08037E10: .4byte 0x000027f9
-_08037E14: .4byte gObjectBankIDs
-_08037E18: .4byte gSprites
-_08037E1C: .4byte gHealthboxIDs
-_08037E20: .4byte gBattlePartyID
-_08037E24: .4byte gEnemyParty
-_08037E28: .4byte gBattleBankFunc
-_08037E2C: .4byte sub_8037CC0
- thumb_func_end sub_8037D64
-
- thumb_func_start sub_8037E30
-sub_8037E30: @ 8037E30
- push {r4-r6,lr}
- ldr r5, _08037ECC @ =gActiveBank
- ldrb r2, [r5]
- lsls r3, r2, 1
- adds r0, r3, r2
- lsls r0, 2
- ldr r6, _08037ED0 @ =0x02017810
- adds r0, r6
- ldrb r1, [r0]
- movs r0, 0x88
- ands r0, r1
- cmp r0, 0
- bne _08037E5E
- ldr r0, _08037ED4 @ =gBattlePartyID
- adds r0, r3, r0
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _08037ED8 @ =gEnemyParty
- adds r1, r0
- adds r0, r2, 0
- bl sub_8141828
-_08037E5E:
- ldr r4, _08037EDC @ =gSprites
- ldr r0, _08037EE0 @ =gUnknown_0300434C
- ldrb r2, [r5]
- adds r0, r2, r0
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r3, r0, 2
- adds r0, r4, 0
- adds r0, 0x1C
- adds r0, r3, r0
- ldr r1, [r0]
- ldr r0, _08037EE4 @ =SpriteCallbackDummy
- cmp r1, r0
- bne _08037EC4
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r0, r6
- ldrb r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- bne _08037EC4
- adds r0, r3, r4
- bl DestroySprite
- ldrb r4, [r5]
- ldr r1, _08037ED4 @ =gBattlePartyID
- lsls r0, r4, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08037ED8 @ =gEnemyParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_8032984
- ldr r1, _08037EE8 @ =gBattleBankFunc
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, _08037EEC @ =sub_8037D64
- str r1, [r0]
-_08037EC4:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08037ECC: .4byte gActiveBank
-_08037ED0: .4byte 0x02017810
-_08037ED4: .4byte gBattlePartyID
-_08037ED8: .4byte gEnemyParty
-_08037EDC: .4byte gSprites
-_08037EE0: .4byte gUnknown_0300434C
-_08037EE4: .4byte SpriteCallbackDummy
-_08037EE8: .4byte gBattleBankFunc
-_08037EEC: .4byte sub_8037D64
- thumb_func_end sub_8037E30
-
- thumb_func_start sub_8037EF0
-sub_8037EF0: @ 8037EF0
- push {lr}
- ldr r0, _08037F20 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _08037F1C
- movs r0, 0x5A
- bl m4aSongNumStop
- ldr r3, _08037F24 @ =gMain
- ldr r0, _08037F28 @ =0x0000043d
- adds r2, r3, r0
- ldrb r1, [r2]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- ldr r0, _08037F2C @ =gPreBattleCallback1
- ldr r0, [r0]
- str r0, [r3]
- ldr r0, _08037F30 @ =c2_8011A1C
- bl SetMainCallback2
-_08037F1C:
- pop {r0}
- bx r0
- .align 2, 0
-_08037F20: .4byte gReceivedRemoteLinkPlayers
-_08037F24: .4byte gMain
-_08037F28: .4byte 0x0000043d
-_08037F2C: .4byte gPreBattleCallback1
-_08037F30: .4byte c2_8011A1C
- thumb_func_end sub_8037EF0
-
- thumb_func_start sub_8037F34
-sub_8037F34: @ 8037F34
- push {lr}
- ldr r0, _08037F64 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08037F9A
- ldr r0, _08037F68 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08037F78
- bl sub_800832C
- ldr r1, _08037F6C @ =gBattleBankFunc
- ldr r0, _08037F70 @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r1, _08037F74 @ =sub_8037EF0
- str r1, [r0]
- b _08037F9A
- .align 2, 0
-_08037F64: .4byte gPaletteFade
-_08037F68: .4byte gBattleTypeFlags
-_08037F6C: .4byte gBattleBankFunc
-_08037F70: .4byte gActiveBank
-_08037F74: .4byte sub_8037EF0
-_08037F78:
- movs r0, 0x5A
- bl m4aSongNumStop
- ldr r2, _08037FA0 @ =gMain
- ldr r0, _08037FA4 @ =0x0000043d
- adds r3, r2, r0
- ldrb r1, [r3]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r3]
- ldr r0, _08037FA8 @ =gPreBattleCallback1
- ldr r0, [r0]
- str r0, [r2]
- ldr r0, [r2, 0x8]
- bl SetMainCallback2
-_08037F9A:
- pop {r0}
- bx r0
- .align 2, 0
-_08037FA0: .4byte gMain
-_08037FA4: .4byte 0x0000043d
-_08037FA8: .4byte gPreBattleCallback1
- thumb_func_end sub_8037F34
-
- thumb_func_start sub_8037FAC
-sub_8037FAC: @ 8037FAC
- push {lr}
- ldr r0, _08037FD0 @ =gActiveBank
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _08037FD4 @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _08037FCA
- bl dp01_tbl4_exec_completed
-_08037FCA:
- pop {r0}
- bx r0
- .align 2, 0
-_08037FD0: .4byte gActiveBank
-_08037FD4: .4byte 0x02017810
- thumb_func_end sub_8037FAC
-
- thumb_func_start sub_8037FD8
-sub_8037FD8: @ 8037FD8
- push {lr}
- ldr r0, _08037FFC @ =gActiveBank
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _08038000 @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _08037FF6
- bl dp01_tbl4_exec_completed
-_08037FF6:
- pop {r0}
- bx r0
- .align 2, 0
-_08037FFC: .4byte gActiveBank
-_08038000: .4byte 0x02017810
- thumb_func_end sub_8037FD8
-
- thumb_func_start dp01_tbl4_exec_completed
-dp01_tbl4_exec_completed: @ 8038004
- push {r4,lr}
- sub sp, 0x4
- ldr r1, _08038044 @ =gBattleBankFunc
- ldr r4, _08038048 @ =gActiveBank
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0803804C @ =sub_803752C
- str r1, [r0]
- ldr r0, _08038050 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08038058
- bl GetMultiplayerId
- mov r1, sp
- strb r0, [r1]
- movs r0, 0x2
- movs r1, 0x4
- mov r2, sp
- bl dp01_prepare_buffer_wireless_probably
- ldr r1, _08038054 @ =gBattleBufferA
- ldrb r0, [r4]
- lsls r0, 9
- adds r0, r1
- movs r1, 0x38
- strb r1, [r0]
- b _0803806A
- .align 2, 0
-_08038044: .4byte gBattleBankFunc
-_08038048: .4byte gActiveBank
-_0803804C: .4byte sub_803752C
-_08038050: .4byte gBattleTypeFlags
-_08038054: .4byte gBattleBufferA
-_08038058:
- ldr r2, _08038074 @ =gBattleExecBuffer
- ldr r1, _08038078 @ =gBitTable
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- ldr r0, [r2]
- bics r0, r1
- str r0, [r2]
-_0803806A:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08038074: .4byte gBattleExecBuffer
-_08038078: .4byte gBitTable
- thumb_func_end dp01_tbl4_exec_completed
-
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_anim_81258BC.s b/asm/battle_anim_81258BC.s
index a50b089db..951c0e2fc 100644
--- a/asm/battle_anim_81258BC.s
+++ b/asm/battle_anim_81258BC.s
@@ -729,1397 +729,5 @@ _0812B45C: .4byte gTasks
_0812B460: .4byte gUnknown_0202F7D2
thumb_func_end sub_812B404
- thumb_func_start unref_sub_812B464
-unref_sub_812B464: @ 812B464
- bx lr
- thumb_func_end unref_sub_812B464
-
- thumb_func_start SetBankFuncToSafariBufferRunCommand
-SetBankFuncToSafariBufferRunCommand: @ 812B468
- ldr r1, _0812B478 @ =gBattleBankFunc
- ldr r0, _0812B47C @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0812B480 @ =SafariBufferRunCommand
- str r1, [r0]
- bx lr
- .align 2, 0
-_0812B478: .4byte gBattleBankFunc
-_0812B47C: .4byte gActiveBank
-_0812B480: .4byte SafariBufferRunCommand
- thumb_func_end SetBankFuncToSafariBufferRunCommand
-
- thumb_func_start SafariBufferRunCommand
-SafariBufferRunCommand: @ 812B484
- push {lr}
- ldr r2, _0812B4B8 @ =gBattleExecBuffer
- ldr r1, _0812B4BC @ =gBitTable
- ldr r0, _0812B4C0 @ =gActiveBank
- ldrb r3, [r0]
- lsls r0, r3, 2
- adds r0, r1
- ldr r1, [r2]
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _0812B4D0
- ldr r0, _0812B4C4 @ =gBattleBufferA
- lsls r1, r3, 9
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0x38
- bhi _0812B4CC
- ldr r0, _0812B4C8 @ =gSafariBufferCommands
- ldrb r1, [r1]
- lsls r1, 2
- adds r1, r0
- ldr r0, [r1]
- bl _call_via_r0
- b _0812B4D0
- .align 2, 0
-_0812B4B8: .4byte gBattleExecBuffer
-_0812B4BC: .4byte gBitTable
-_0812B4C0: .4byte gActiveBank
-_0812B4C4: .4byte gBattleBufferA
-_0812B4C8: .4byte gSafariBufferCommands
-_0812B4CC:
- bl SafariBufferExecCompleted
-_0812B4D0:
- pop {r0}
- bx r0
- thumb_func_end SafariBufferRunCommand
-
- thumb_func_start bx_battle_menu_t6_2
-bx_battle_menu_t6_2: @ 812B4D4
- push {r4,r5,lr}
- ldr r0, _0812B508 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r2, 0x1
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _0812B546
- movs r0, 0x5
- bl PlaySE
- bl DestroyMenuCursor
- ldr r1, _0812B50C @ =gActionSelectionCursor
- ldr r0, _0812B510 @ =gActiveBank
- ldrb r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0812B524
- cmp r0, 0x1
- bgt _0812B514
- cmp r0, 0
- beq _0812B51E
- b _0812B540
- .align 2, 0
-_0812B508: .4byte gMain
-_0812B50C: .4byte gActionSelectionCursor
-_0812B510: .4byte gActiveBank
-_0812B514:
- cmp r0, 0x2
- beq _0812B52A
- cmp r0, 0x3
- beq _0812B536
- b _0812B540
-_0812B51E:
- movs r0, 0x1
- movs r1, 0x5
- b _0812B52E
-_0812B524:
- movs r0, 0x1
- movs r1, 0x6
- b _0812B52E
-_0812B52A:
- movs r0, 0x1
- movs r1, 0x7
-_0812B52E:
- movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
- b _0812B540
-_0812B536:
- movs r0, 0x1
- movs r1, 0x8
- movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
-_0812B540:
- bl SafariBufferExecCompleted
- b _0812B64E
-_0812B546:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0812B584
- ldr r5, _0812B57C @ =gActionSelectionCursor
- ldr r4, _0812B580 @ =gActiveBank
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _0812B64E
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- bl nullsub_8
- ldrb r1, [r4]
- adds r1, r5
- ldrb r0, [r1]
- movs r2, 0x1
- b _0812B5F2
- .align 2, 0
-_0812B57C: .4byte gActionSelectionCursor
-_0812B580: .4byte gActiveBank
-_0812B584:
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0812B5C0
- ldr r5, _0812B5B8 @ =gActionSelectionCursor
- ldr r4, _0812B5BC @ =gActiveBank
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _0812B64E
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- bl nullsub_8
- ldrb r1, [r4]
- adds r1, r5
- ldrb r0, [r1]
- movs r2, 0x1
- b _0812B5F2
- .align 2, 0
-_0812B5B8: .4byte gActionSelectionCursor
-_0812B5BC: .4byte gActiveBank
-_0812B5C0:
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0812B60C
- ldr r5, _0812B604 @ =gActionSelectionCursor
- ldr r4, _0812B608 @ =gActiveBank
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0812B64E
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- bl nullsub_8
- ldrb r1, [r4]
- adds r1, r5
- ldrb r0, [r1]
- movs r2, 0x2
-_0812B5F2:
- eors r0, r2
- strb r0, [r1]
- ldrb r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- movs r1, 0
- bl sub_802E3E4
- b _0812B64E
- .align 2, 0
-_0812B604: .4byte gActionSelectionCursor
-_0812B608: .4byte gActiveBank
-_0812B60C:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0812B64E
- ldr r5, _0812B654 @ =gActionSelectionCursor
- ldr r4, _0812B658 @ =gActiveBank
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _0812B64E
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- bl nullsub_8
- ldrb r1, [r4]
- adds r1, r5
- ldrb r0, [r1]
- movs r2, 0x2
- eors r0, r2
- strb r0, [r1]
- ldrb r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- movs r1, 0
- bl sub_802E3E4
-_0812B64E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0812B654: .4byte gActionSelectionCursor
-_0812B658: .4byte gActiveBank
- thumb_func_end bx_battle_menu_t6_2
-
- thumb_func_start sub_812B65C
-sub_812B65C: @ 812B65C
- push {lr}
- ldr r2, _0812B684 @ =gSprites
- ldr r1, _0812B688 @ =gObjectBankIDs
- ldr r0, _0812B68C @ =gActiveBank
- 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, [r0]
- ldr r0, _0812B690 @ =SpriteCallbackDummy
- cmp r1, r0
- bne _0812B680
- bl SafariBufferExecCompleted
-_0812B680:
- pop {r0}
- bx r0
- .align 2, 0
-_0812B684: .4byte gSprites
-_0812B688: .4byte gObjectBankIDs
-_0812B68C: .4byte gActiveBank
-_0812B690: .4byte SpriteCallbackDummy
- thumb_func_end sub_812B65C
-
- thumb_func_start sub_812B694
-sub_812B694: @ 812B694
- push {lr}
- ldr r0, _0812B6A8 @ =gUnknown_03004210
- ldrh r0, [r0, 0x16]
- cmp r0, 0
- bne _0812B6A2
- bl SafariBufferExecCompleted
-_0812B6A2:
- pop {r0}
- bx r0
- .align 2, 0
-_0812B6A8: .4byte gUnknown_03004210
- thumb_func_end sub_812B694
-
- thumb_func_start sub_812B6AC
-sub_812B6AC: @ 812B6AC
- push {lr}
- ldr r0, _0812B6DC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0812B6D6
- ldr r2, _0812B6E0 @ =gMain
- ldr r0, _0812B6E4 @ =0x0000043d
- adds r3, r2, r0
- ldrb r1, [r3]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r3]
- ldr r0, _0812B6E8 @ =gPreBattleCallback1
- ldr r0, [r0]
- str r0, [r2]
- ldr r0, [r2, 0x8]
- bl SetMainCallback2
-_0812B6D6:
- pop {r0}
- bx r0
- .align 2, 0
-_0812B6DC: .4byte gPaletteFade
-_0812B6E0: .4byte gMain
-_0812B6E4: .4byte 0x0000043d
-_0812B6E8: .4byte gPreBattleCallback1
- thumb_func_end sub_812B6AC
-
- thumb_func_start bx_wait_t6
-bx_wait_t6: @ 812B6EC
- push {lr}
- ldr r0, _0812B718 @ =gDoingBattleAnim
- ldrb r0, [r0]
- cmp r0, 0
- beq _0812B70E
- ldr r0, _0812B71C @ =gActiveBank
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _0812B720 @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _0812B712
-_0812B70E:
- bl SafariBufferExecCompleted
-_0812B712:
- pop {r0}
- bx r0
- .align 2, 0
-_0812B718: .4byte gDoingBattleAnim
-_0812B71C: .4byte gActiveBank
-_0812B720: .4byte 0x02017810
- thumb_func_end bx_wait_t6
-
- thumb_func_start sub_812B724
-sub_812B724: @ 812B724
- push {lr}
- ldr r0, _0812B748 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0812B744
- ldr r1, _0812B74C @ =gBattleBankFunc
- ldr r0, _0812B750 @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0812B754 @ =sub_812B758
- str r1, [r0]
- bl sub_810BADC
-_0812B744:
- pop {r0}
- bx r0
- .align 2, 0
-_0812B748: .4byte gPaletteFade
-_0812B74C: .4byte gBattleBankFunc
-_0812B750: .4byte gActiveBank
-_0812B754: .4byte sub_812B758
- thumb_func_end sub_812B724
-
- thumb_func_start sub_812B758
-sub_812B758: @ 812B758
- push {lr}
- ldr r0, _0812B784 @ =gMain
- ldr r1, [r0, 0x4]
- ldr r0, _0812B788 @ =sub_800F808
- cmp r1, r0
- bne _0812B77E
- ldr r0, _0812B78C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0812B77E
- ldr r0, _0812B790 @ =gScriptItemId
- ldrh r1, [r0]
- movs r0, 0x1
- bl dp01_build_cmdbuf_x23_aa_0
- bl SafariBufferExecCompleted
-_0812B77E:
- pop {r0}
- bx r0
- .align 2, 0
-_0812B784: .4byte gMain
-_0812B788: .4byte sub_800F808
-_0812B78C: .4byte gPaletteFade
-_0812B790: .4byte gScriptItemId
- thumb_func_end sub_812B758
-
- thumb_func_start sub_812B794
-sub_812B794: @ 812B794
- push {lr}
- ldr r0, _0812B7B8 @ =gActiveBank
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _0812B7BC @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _0812B7B2
- bl SafariBufferExecCompleted
-_0812B7B2:
- pop {r0}
- bx r0
- .align 2, 0
-_0812B7B8: .4byte gActiveBank
-_0812B7BC: .4byte 0x02017810
- thumb_func_end sub_812B794
-
- thumb_func_start SafariBufferExecCompleted
-SafariBufferExecCompleted: @ 812B7C0
- push {r4,lr}
- sub sp, 0x4
- ldr r1, _0812B800 @ =gBattleBankFunc
- ldr r4, _0812B804 @ =gActiveBank
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0812B808 @ =SafariBufferRunCommand
- str r1, [r0]
- ldr r0, _0812B80C @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0812B814
- bl GetMultiplayerId
- mov r1, sp
- strb r0, [r1]
- movs r0, 0x2
- movs r1, 0x4
- mov r2, sp
- bl dp01_prepare_buffer_wireless_probably
- ldr r1, _0812B810 @ =gBattleBufferA
- ldrb r0, [r4]
- lsls r0, 9
- adds r0, r1
- movs r1, 0x38
- strb r1, [r0]
- b _0812B826
- .align 2, 0
-_0812B800: .4byte gBattleBankFunc
-_0812B804: .4byte gActiveBank
-_0812B808: .4byte SafariBufferRunCommand
-_0812B80C: .4byte gBattleTypeFlags
-_0812B810: .4byte gBattleBufferA
-_0812B814:
- ldr r2, _0812B830 @ =gBattleExecBuffer
- ldr r1, _0812B834 @ =gBitTable
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- ldr r0, [r2]
- bics r0, r1
- str r0, [r2]
-_0812B826:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0812B830: .4byte gBattleExecBuffer
-_0812B834: .4byte gBitTable
- thumb_func_end SafariBufferExecCompleted
-
- thumb_func_start unref_sub_812B838
-unref_sub_812B838: @ 812B838
- push {lr}
- ldr r0, _0812B85C @ =gActiveBank
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _0812B860 @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _0812B856
- bl SafariBufferExecCompleted
-_0812B856:
- pop {r0}
- bx r0
- .align 2, 0
-_0812B85C: .4byte gActiveBank
-_0812B860: .4byte 0x02017810
- thumb_func_end unref_sub_812B838
-
- thumb_func_start SafariHandleGetAttributes
-SafariHandleGetAttributes: @ 812B864
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end SafariHandleGetAttributes
-
- thumb_func_start sub_812B870
-sub_812B870: @ 812B870
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812B870
-
- thumb_func_start sub_812B87C
-sub_812B87C: @ 812B87C
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812B87C
-
- thumb_func_start sub_812B888
-sub_812B888: @ 812B888
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812B888
-
- thumb_func_start sub_812B894
-sub_812B894: @ 812B894
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812B894
-
- thumb_func_start sub_812B8A0
-sub_812B8A0: @ 812B8A0
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812B8A0
-
- thumb_func_start sub_812B8AC
-sub_812B8AC: @ 812B8AC
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812B8AC
-
- thumb_func_start sub_812B8B8
-sub_812B8B8: @ 812B8B8
- push {r4-r6,lr}
- ldr r4, _0812B96C @ =gSaveBlock2
- ldrb r0, [r4, 0x8]
- ldr r5, _0812B970 @ =gActiveBank
- ldrb r1, [r5]
- bl sub_8031AF4
- ldrb r6, [r4, 0x8]
- ldrb r0, [r5]
- bl GetBankIdentity
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r6, 0
- bl GetMonSpriteTemplate_803C5A0
- ldr r0, _0812B974 @ =gUnknown_02024E8C
- ldr r2, _0812B978 @ =gTrainerBackPicCoords
- ldrb r1, [r4, 0x8]
- lsls r1, 2
- adds r1, r2
- ldrb r1, [r1]
- movs r2, 0x8
- subs r2, r1
- lsls r2, 18
- movs r1, 0xA0
- lsls r1, 15
- adds r2, r1
- asrs r2, 16
- movs r1, 0x50
- movs r3, 0x1E
- bl CreateSprite
- ldr r6, _0812B97C @ =gObjectBankIDs
- ldrb r1, [r5]
- adds r1, r6
- strb r0, [r1]
- ldr r4, _0812B980 @ =gSprites
- ldrb r3, [r5]
- adds r0, r3, r6
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- lsls r3, 4
- ldrb r2, [r1, 0x5]
- movs r0, 0xF
- ands r0, r2
- orrs r0, r3
- strb r0, [r1, 0x5]
- ldrb r0, [r5]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0xF0
- strh r1, [r0, 0x24]
- ldrb r0, [r5]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldr r1, _0812B984 @ =0x0000fffe
- strh r1, [r0, 0x2E]
- ldrb r0, [r5]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r4, 0x1C
- adds r0, r4
- ldr r1, _0812B988 @ =sub_80313A0
- str r1, [r0]
- ldr r1, _0812B98C @ =gBattleBankFunc
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0812B990 @ =sub_812B65C
- str r1, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0812B96C: .4byte gSaveBlock2
-_0812B970: .4byte gActiveBank
-_0812B974: .4byte gUnknown_02024E8C
-_0812B978: .4byte gTrainerBackPicCoords
-_0812B97C: .4byte gObjectBankIDs
-_0812B980: .4byte gSprites
-_0812B984: .4byte 0x0000fffe
-_0812B988: .4byte sub_80313A0
-_0812B98C: .4byte gBattleBankFunc
-_0812B990: .4byte sub_812B65C
- thumb_func_end sub_812B8B8
-
- thumb_func_start sub_812B994
-sub_812B994: @ 812B994
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812B994
-
- thumb_func_start sub_812B9A0
-sub_812B9A0: @ 812B9A0
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812B9A0
-
- thumb_func_start sub_812B9AC
-sub_812B9AC: @ 812B9AC
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812B9AC
-
- thumb_func_start sub_812B9B8
-sub_812B9B8: @ 812B9B8
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812B9B8
-
- thumb_func_start sub_812B9C4
-sub_812B9C4: @ 812B9C4
- push {r4,r5,lr}
- ldr r1, _0812BA00 @ =0x02017840
- movs r0, 0x4
- strb r0, [r1, 0x8]
- ldr r1, _0812BA04 @ =gDoingBattleAnim
- movs r0, 0x1
- strb r0, [r1]
- ldr r5, _0812BA08 @ =gActiveBank
- ldrb r4, [r5]
- movs r0, 0x1
- bl GetBankByPlayerAI
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r4, 0
- movs r3, 0x4
- bl move_anim_start_t4
- ldr r1, _0812BA0C @ =gBattleBankFunc
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0812BA10 @ =bx_wait_t6
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0812BA00: .4byte 0x02017840
-_0812BA04: .4byte gDoingBattleAnim
-_0812BA08: .4byte gActiveBank
-_0812BA0C: .4byte gBattleBankFunc
-_0812BA10: .4byte bx_wait_t6
- thumb_func_end sub_812B9C4
-
- thumb_func_start sub_812BA14
-sub_812BA14: @ 812BA14
- push {r4,r5,lr}
- ldr r1, _0812BA58 @ =gBattleBufferA
- ldr r5, _0812BA5C @ =gActiveBank
- ldrb r0, [r5]
- lsls r0, 9
- adds r1, 0x1
- adds r0, r1
- ldrb r1, [r0]
- ldr r0, _0812BA60 @ =0x02017840
- strb r1, [r0, 0x8]
- ldr r1, _0812BA64 @ =gDoingBattleAnim
- movs r0, 0x1
- strb r0, [r1]
- ldrb r4, [r5]
- movs r0, 0x1
- bl GetBankByPlayerAI
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r4, 0
- movs r3, 0x4
- bl move_anim_start_t4
- ldr r1, _0812BA68 @ =gBattleBankFunc
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0812BA6C @ =bx_wait_t6
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0812BA58: .4byte gBattleBufferA
-_0812BA5C: .4byte gActiveBank
-_0812BA60: .4byte 0x02017840
-_0812BA64: .4byte gDoingBattleAnim
-_0812BA68: .4byte gBattleBankFunc
-_0812BA6C: .4byte bx_wait_t6
- thumb_func_end sub_812BA14
-
- thumb_func_start sub_812BA70
-sub_812BA70: @ 812BA70
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BA70
-
- thumb_func_start sub_812BA7C
-sub_812BA7C: @ 812BA7C
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BA7C
-
- thumb_func_start SafariHandlePrintString
-SafariHandlePrintString: @ 812BA88
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _0812BACC @ =gUnknown_030042A4
- movs r1, 0
- strh r1, [r0]
- ldr r0, _0812BAD0 @ =gUnknown_030042A0
- strh r1, [r0]
- ldr r4, _0812BAD4 @ =gActiveBank
- ldrb r0, [r4]
- lsls r0, 9
- ldr r1, _0812BAD8 @ =gUnknown_02023A62
- adds r0, r1
- ldrh r0, [r0]
- bl BufferStringBattle
- ldr r0, _0812BADC @ =gUnknown_03004210
- ldr r1, _0812BAE0 @ =gDisplayedStringBattle
- movs r2, 0xF
- str r2, [sp]
- movs r2, 0x90
- movs r3, 0x2
- bl sub_8002EB0
- ldr r1, _0812BAE4 @ =gBattleBankFunc
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0812BAE8 @ =sub_812B694
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0812BACC: .4byte gUnknown_030042A4
-_0812BAD0: .4byte gUnknown_030042A0
-_0812BAD4: .4byte gActiveBank
-_0812BAD8: .4byte gUnknown_02023A62
-_0812BADC: .4byte gUnknown_03004210
-_0812BAE0: .4byte gDisplayedStringBattle
-_0812BAE4: .4byte gBattleBankFunc
-_0812BAE8: .4byte sub_812B694
- thumb_func_end SafariHandlePrintString
-
- thumb_func_start SafariHandlePrintStringPlayerOnly
-SafariHandlePrintStringPlayerOnly: @ 812BAEC
- push {lr}
- ldr r0, _0812BB04 @ =gActiveBank
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0812BB08
- bl SafariHandlePrintString
- b _0812BB0C
- .align 2, 0
-_0812BB04: .4byte gActiveBank
-_0812BB08:
- bl SafariBufferExecCompleted
-_0812BB0C:
- pop {r0}
- bx r0
- thumb_func_end SafariHandlePrintStringPlayerOnly
-
-.section .text_812BBFC
-
- thumb_func_start sub_812BBFC
-sub_812BBFC: @ 812BBFC
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BBFC
-
- thumb_func_start sub_812BC08
-sub_812BC08: @ 812BC08
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BC08
-
- thumb_func_start sub_812BC14
-sub_812BC14: @ 812BC14
- 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 r1, _0812BC44 @ =gBattleBankFunc
- ldr r2, _0812BC48 @ =gActiveBank
- ldrb r0, [r2]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0812BC4C @ =sub_812B724
- str r1, [r0]
- ldr r1, _0812BC50 @ =gBankInMenu
- ldrb r0, [r2]
- strb r0, [r1]
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_0812BC44: .4byte gBattleBankFunc
-_0812BC48: .4byte gActiveBank
-_0812BC4C: .4byte sub_812B724
-_0812BC50: .4byte gBankInMenu
- thumb_func_end sub_812BC14
-
- thumb_func_start sub_812BC54
-sub_812BC54: @ 812BC54
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BC54
-
- thumb_func_start sub_812BC60
-sub_812BC60: @ 812BC60
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BC60
-
- thumb_func_start sub_812BC6C
-sub_812BC6C: @ 812BC6C
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BC6C
-
- thumb_func_start sub_812BC78
-sub_812BC78: @ 812BC78
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BC78
-
- thumb_func_start sub_812BC84
-sub_812BC84: @ 812BC84
- push {lr}
- ldr r0, _0812BCB0 @ =gHealthboxIDs
- ldr r1, _0812BCB4 @ =gActiveBank
- ldrb r1, [r1]
- adds r0, r1, r0
- ldrb r0, [r0]
- ldr r2, _0812BCB8 @ =gBattlePartyID
- lsls r1, 1
- adds r1, r2
- ldrh r2, [r1]
- movs r1, 0x64
- muls r1, r2
- ldr r2, _0812BCBC @ =gPlayerParty
- adds r1, r2
- movs r2, 0xB
- bl sub_8045A5C
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- .align 2, 0
-_0812BCB0: .4byte gHealthboxIDs
-_0812BCB4: .4byte gActiveBank
-_0812BCB8: .4byte gBattlePartyID
-_0812BCBC: .4byte gPlayerParty
- thumb_func_end sub_812BC84
-
- thumb_func_start sub_812BCC0
-sub_812BCC0: @ 812BCC0
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BCC0
-
- thumb_func_start sub_812BCCC
-sub_812BCCC: @ 812BCCC
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BCCC
-
- thumb_func_start sub_812BCD8
-sub_812BCD8: @ 812BCD8
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BCD8
-
- thumb_func_start sub_812BCE4
-sub_812BCE4: @ 812BCE4
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BCE4
-
- thumb_func_start sub_812BCF0
-sub_812BCF0: @ 812BCF0
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BCF0
-
- thumb_func_start sub_812BCFC
-sub_812BCFC: @ 812BCFC
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BCFC
-
- thumb_func_start sub_812BD08
-sub_812BD08: @ 812BD08
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BD08
-
- thumb_func_start sub_812BD14
-sub_812BD14: @ 812BD14
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BD14
-
- thumb_func_start sub_812BD20
-sub_812BD20: @ 812BD20
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BD20
-
- thumb_func_start sub_812BD2C
-sub_812BD2C: @ 812BD2C
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BD2C
-
- thumb_func_start sub_812BD38
-sub_812BD38: @ 812BD38
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BD38
-
- thumb_func_start sub_812BD44
-sub_812BD44: @ 812BD44
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BD44
-
- thumb_func_start sub_812BD50
-sub_812BD50: @ 812BD50
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BD50
-
- thumb_func_start sub_812BD5C
-sub_812BD5C: @ 812BD5C
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BD5C
-
- thumb_func_start sub_812BD68
-sub_812BD68: @ 812BD68
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BD68
-
- thumb_func_start sub_812BD74
-sub_812BD74: @ 812BD74
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BD74
-
- thumb_func_start sub_812BD80
-sub_812BD80: @ 812BD80
- push {r4,lr}
- ldr r4, _0812BDBC @ =gActiveBank
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- movs r3, 0x3F
- cmp r0, 0
- bne _0812BD94
- movs r3, 0xC0
-_0812BD94:
- ldr r2, _0812BDC0 @ =gBattleBufferA
- ldrb r1, [r4]
- lsls r1, 9
- adds r0, r2, 0x1
- adds r0, r1, r0
- ldrb r0, [r0]
- adds r2, 0x2
- adds r1, r2
- ldrb r1, [r1]
- lsls r1, 8
- orrs r0, r1
- lsls r1, r3, 24
- asrs r1, 24
- bl PlaySE12WithPanning
- bl SafariBufferExecCompleted
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0812BDBC: .4byte gActiveBank
-_0812BDC0: .4byte gBattleBufferA
- thumb_func_end sub_812BD80
-
- thumb_func_start sub_812BDC4
-sub_812BDC4: @ 812BDC4
- push {lr}
- ldr r2, _0812BDEC @ =gBattleBufferA
- ldr r0, _0812BDF0 @ =gActiveBank
- ldrb r1, [r0]
- lsls r1, 9
- adds r0, r2, 0x1
- adds r0, r1, r0
- ldrb r0, [r0]
- adds r2, 0x2
- adds r1, r2
- ldrb r1, [r1]
- lsls r1, 8
- orrs r0, r1
- bl PlayFanfare
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- .align 2, 0
-_0812BDEC: .4byte gBattleBufferA
-_0812BDF0: .4byte gActiveBank
- thumb_func_end sub_812BDC4
-
- thumb_func_start sub_812BDF4
-sub_812BDF4: @ 812BDF4
- push {lr}
- ldr r1, _0812BE24 @ =gBattlePartyID
- ldr r0, _0812BE28 @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0812BE2C @ =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x19
- bl PlayCry1
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- .align 2, 0
-_0812BE24: .4byte gBattlePartyID
-_0812BE28: .4byte gActiveBank
-_0812BE2C: .4byte gPlayerParty
- thumb_func_end sub_812BDF4
-
- thumb_func_start dp01t_2E_6_battle_intro
-dp01t_2E_6_battle_intro: @ 812BE30
- push {lr}
- ldr r1, _0812BE58 @ =gBattleBufferA
- ldr r0, _0812BE5C @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 9
- adds r1, 0x1
- adds r0, r1
- ldrb r0, [r0]
- bl sub_80E43C0
- ldr r2, _0812BE60 @ =gUnknown_02024DE8
- ldrh r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strh r0, [r2]
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- .align 2, 0
-_0812BE58: .4byte gBattleBufferA
-_0812BE5C: .4byte gActiveBank
-_0812BE60: .4byte gUnknown_02024DE8
- thumb_func_end dp01t_2E_6_battle_intro
-
- thumb_func_start sub_812BE64
-sub_812BE64: @ 812BE64
- push {r4,r5,lr}
- ldr r5, _0812BEA0 @ =gHealthboxIDs
- ldr r4, _0812BEA4 @ =gActiveBank
- ldrb r1, [r4]
- adds r0, r1, r5
- ldrb r0, [r0]
- ldr r2, _0812BEA8 @ =gBattlePartyID
- lsls r1, 1
- adds r1, r2
- ldrh r2, [r1]
- movs r1, 0x64
- muls r1, r2
- ldr r2, _0812BEAC @ =gPlayerParty
- adds r1, r2
- movs r2, 0xA
- bl sub_8045A5C
- ldrb r0, [r4]
- bl sub_804777C
- ldrb r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- bl sub_8043DFC
- bl SafariBufferExecCompleted
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0812BEA0: .4byte gHealthboxIDs
-_0812BEA4: .4byte gActiveBank
-_0812BEA8: .4byte gBattlePartyID
-_0812BEAC: .4byte gPlayerParty
- thumb_func_end sub_812BE64
-
- thumb_func_start sub_812BEB0
-sub_812BEB0: @ 812BEB0
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BEB0
-
- thumb_func_start sub_812BEBC
-sub_812BEBC: @ 812BEBC
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BEBC
-
- thumb_func_start sub_812BEC8
-sub_812BEC8: @ 812BEC8
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BEC8
-
- thumb_func_start sub_812BED4
-sub_812BED4: @ 812BED4
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BED4
-
- thumb_func_start sub_812BEE0
-sub_812BEE0: @ 812BEE0
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r5, _0812BF18 @ =gBattleBufferA
- ldr r6, _0812BF1C @ =gActiveBank
- ldrb r2, [r6]
- lsls r1, r2, 9
- adds r0, r5, 0x1
- adds r0, r1, r0
- ldrb r3, [r0]
- adds r0, r5, 0x2
- adds r0, r1, r0
- ldrb r4, [r0]
- adds r5, 0x3
- adds r1, r5
- ldrb r0, [r1]
- lsls r0, 8
- orrs r4, r0
- str r4, [sp]
- adds r0, r2, 0
- adds r1, r2, 0
- bl move_anim_start_t3
- lsls r0, 24
- cmp r0, 0
- beq _0812BF20
- bl SafariBufferExecCompleted
- b _0812BF2C
- .align 2, 0
-_0812BF18: .4byte gBattleBufferA
-_0812BF1C: .4byte gActiveBank
-_0812BF20:
- ldr r0, _0812BF34 @ =gBattleBankFunc
- ldrb r1, [r6]
- lsls r1, 2
- adds r1, r0
- ldr r0, _0812BF38 @ =sub_812B794
- str r0, [r1]
-_0812BF2C:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0812BF34: .4byte gBattleBankFunc
-_0812BF38: .4byte sub_812B794
- thumb_func_end sub_812BEE0
-
- thumb_func_start sub_812BF3C
-sub_812BF3C: @ 812BF3C
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BF3C
-
- thumb_func_start sub_812BF48
-sub_812BF48: @ 812BF48
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BF48
-
- thumb_func_start sub_812BF54
-sub_812BF54: @ 812BF54
- push {r4,lr}
- ldr r2, _0812BF98 @ =gBattleOutcome
- ldr r1, _0812BF9C @ =gBattleBufferA
- ldr r4, _0812BFA0 @ =gActiveBank
- ldrb r0, [r4]
- lsls r0, 9
- adds r1, 0x1
- adds r0, r1
- ldrb r0, [r0]
- strb r0, [r2]
- movs r0, 0x5
- bl FadeOutMapMusic
- movs r0, 0x3
- bl BeginFastPaletteFade
- bl SafariBufferExecCompleted
- ldr r0, _0812BFA4 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x6
- ands r0, r1
- cmp r0, 0x2
- bne _0812BF90
- ldr r0, _0812BFA8 @ =gBattleBankFunc
- ldrb r1, [r4]
- lsls r1, 2
- adds r1, r0
- ldr r0, _0812BFAC @ =sub_812B6AC
- str r0, [r1]
-_0812BF90:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0812BF98: .4byte gBattleOutcome
-_0812BF9C: .4byte gBattleBufferA
-_0812BFA0: .4byte gActiveBank
-_0812BFA4: .4byte gBattleTypeFlags
-_0812BFA8: .4byte gBattleBankFunc
-_0812BFAC: .4byte sub_812B6AC
- thumb_func_end sub_812BF54
-
- thumb_func_start nullsub_78
-nullsub_78: @ 812BFB0
- bx lr
- thumb_func_end nullsub_78
-
- .align 2, 0 @ Don't pad with nop.
+ .align 2, 0 @ Don't pad with nop.
+ \ No newline at end of file
diff --git a/asm/battle_message.s b/asm/battle_message.s
deleted file mode 100644
index badbf2b7d..000000000
--- a/asm/battle_message.s
+++ /dev/null
@@ -1,2403 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start BufferStringBattle
-BufferStringBattle: @ 8120AA8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 16
- lsrs r7, r0, 16
- movs r6, 0
- ldr r5, _08120B70 @ =gSelectedOrderFromParty
- ldr r4, _08120B74 @ =gActiveBank
- ldrb r1, [r4]
- lsls r1, 9
- ldr r0, _08120B78 @ =gUnknown_02023A64
- adds r1, r0
- str r1, [r5]
- ldr r2, _08120B7C @ =gLastUsedItem
- ldrh r0, [r1, 0x4]
- strh r0, [r2]
- ldr r2, _08120B80 @ =gLastUsedAbility
- ldrb r0, [r1, 0x6]
- strb r0, [r2]
- ldr r3, _08120B84 @ =0x02000000
- ldrb r0, [r1, 0x7]
- mov r8, r0
- ldr r2, _08120B88 @ =0x00016003
- adds r0, r3, r2
- mov r2, r8
- strb r2, [r0]
- ldrb r0, [r1, 0x8]
- mov r8, r0
- ldr r2, _08120B8C @ =0x0001605e
- adds r0, r3, r2
- mov r2, r8
- strb r2, [r0]
- ldrb r0, [r1, 0x9]
- mov r8, r0
- ldr r2, _08120B90 @ =0x000160c1
- adds r0, r3, r2
- mov r2, r8
- strb r2, [r0]
- ldr r2, _08120B94 @ =gStringBank
- ldrb r0, [r1, 0xA]
- strb r0, [r2]
- ldrb r1, [r1, 0xB]
- ldr r2, _08120B98 @ =0x000160a0
- adds r0, r3, r2
- strb r1, [r0]
- movs r2, 0
- mov r9, r3
- ldr r3, _08120B9C @ =gBattleTextBuff1
- mov r10, r3
- ldr r3, _08120BA0 @ =gAbilitiesPerBank
-_08120B10:
- adds r0, r2, r3
- ldr r1, [r5]
- adds r1, 0xC
- adds r1, r2
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x3
- ble _08120B10
- movs r2, 0
- ldr r0, _08120B9C @ =gBattleTextBuff1
- mov r8, r0
- ldr r3, _08120B70 @ =gSelectedOrderFromParty
- ldr r1, _08120BA4 @ =gBattleTextBuff2
- mov r12, r1
- ldr r5, _08120BA8 @ =gBattleTextBuff3
-_08120B30:
- mov r0, r8
- adds r1, r2, r0
- ldr r0, [r3]
- adds r0, 0x10
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- mov r0, r12
- adds r1, r2, r0
- ldr r0, [r3]
- adds r0, 0x20
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- adds r1, r2, r5
- ldr r0, [r3]
- adds r0, 0x30
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- adds r2, 0x1
- cmp r2, 0xF
- ble _08120B30
- cmp r7, 0x5
- bls _08120B64
- b _08120F50
-_08120B64:
- lsls r0, r7, 2
- ldr r1, _08120BAC @ =_08120BB0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08120B70: .4byte gSelectedOrderFromParty
-_08120B74: .4byte gActiveBank
-_08120B78: .4byte gUnknown_02023A64
-_08120B7C: .4byte gLastUsedItem
-_08120B80: .4byte gLastUsedAbility
-_08120B84: .4byte 0x02000000
-_08120B88: .4byte 0x00016003
-_08120B8C: .4byte 0x0001605e
-_08120B90: .4byte 0x000160c1
-_08120B94: .4byte gStringBank
-_08120B98: .4byte 0x000160a0
-_08120B9C: .4byte gBattleTextBuff1
-_08120BA0: .4byte gAbilitiesPerBank
-_08120BA4: .4byte gBattleTextBuff2
-_08120BA8: .4byte gBattleTextBuff3
-_08120BAC: .4byte _08120BB0
- .align 2, 0
-_08120BB0:
- .4byte _08120BC8
- .4byte _08120C40
- .4byte _08120CCC
- .4byte _08120D5C
- .4byte _08120DE8
- .4byte _08120E50
-_08120BC8:
- ldr r0, _08120BEC @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _08120C00
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08120BF8
- movs r0, 0x40
- ands r0, r1
- ldr r6, _08120BF0 @ =gUnknown_084005C7
- cmp r0, 0
- bne _08120BE8
- b _08120F70
-_08120BE8:
- ldr r6, _08120BF4 @ =gUnknown_084005DB
- b _08120F70
- .align 2, 0
-_08120BEC: .4byte gBattleTypeFlags
-_08120BF0: .4byte gUnknown_084005C7
-_08120BF4: .4byte gUnknown_084005DB
-_08120BF8:
- ldr r6, _08120BFC @ =gUnknown_084005AA
- b _08120F70
- .align 2, 0
-_08120BFC: .4byte gUnknown_084005AA
-_08120C00:
- movs r0, 0x80
- lsls r0, 6
- ands r0, r1
- cmp r0, 0
- beq _08120C14
- ldr r6, _08120C10 @ =gUnknown_08400568
- b _08120F70
- .align 2, 0
-_08120C10: .4byte gUnknown_08400568
-_08120C14:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08120C24
- ldr r6, _08120C20 @ =gUnknown_08400590
- b _08120F70
- .align 2, 0
-_08120C20: .4byte gUnknown_08400590
-_08120C24:
- movs r0, 0x80
- lsls r0, 2
- ands r0, r1
- ldr r6, _08120C38 @ =gUnknown_08400555
- cmp r0, 0
- bne _08120C32
- b _08120F70
-_08120C32:
- ldr r6, _08120C3C @ =gUnknown_0840057B
- b _08120F70
- .align 2, 0
-_08120C38: .4byte gUnknown_08400555
-_08120C3C: .4byte gUnknown_0840057B
-_08120C40:
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08120C7C
- ldr r0, _08120C68 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08120C74
- movs r0, 0x40
- ands r0, r1
- ldr r6, _08120C6C @ =gUnknown_084006A4
- cmp r0, 0
- bne _08120C64
- b _08120F70
-_08120C64:
- ldr r6, _08120C70 @ =gUnknown_084006F1
- b _08120F70
- .align 2, 0
-_08120C68: .4byte gBattleTypeFlags
-_08120C6C: .4byte gUnknown_084006A4
-_08120C70: .4byte gUnknown_084006F1
-_08120C74:
- ldr r6, _08120C78 @ =gUnknown_0840069C
- b _08120F70
- .align 2, 0
-_08120C78: .4byte gUnknown_0840069C
-_08120C7C:
- ldr r0, _08120C94 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08120CB4
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08120C9C
- ldr r6, _08120C98 @ =gUnknown_0840065C
- b _08120F70
- .align 2, 0
-_08120C94: .4byte gBattleTypeFlags
-_08120C98: .4byte gUnknown_0840065C
-_08120C9C:
- movs r0, 0x2
- ands r0, r1
- ldr r6, _08120CAC @ =gUnknown_08400608
- cmp r0, 0
- bne _08120CA8
- b _08120F70
-_08120CA8:
- ldr r6, _08120CB0 @ =gUnknown_08400645
- b _08120F70
- .align 2, 0
-_08120CAC: .4byte gUnknown_08400608
-_08120CB0: .4byte gUnknown_08400645
-_08120CB4:
- movs r0, 0x2
- ands r0, r1
- ldr r6, _08120CC4 @ =gUnknown_084005F5
- cmp r0, 0
- bne _08120CC0
- b _08120F70
-_08120CC0:
- ldr r6, _08120CC8 @ =gUnknown_08400635
- b _08120F70
- .align 2, 0
-_08120CC4: .4byte gUnknown_084005F5
-_08120CC8: .4byte gUnknown_08400635
-_08120CCC:
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08120D24
- ldr r0, _08120CE8 @ =0x02000000
- ldr r1, _08120CEC @ =0x000160c1
- adds r0, r1
- ldrb r2, [r0]
- cmp r2, 0
- bne _08120CF4
- ldr r6, _08120CF0 @ =gUnknown_08400709
- b _08120F70
- .align 2, 0
-_08120CE8: .4byte 0x02000000
-_08120CEC: .4byte 0x000160c1
-_08120CF0: .4byte gUnknown_08400709
-_08120CF4:
- cmp r2, 0x1
- beq _08120D04
- ldr r0, _08120D08 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08120D10
-_08120D04:
- ldr r6, _08120D0C @ =gUnknown_08400727
- b _08120F70
- .align 2, 0
-_08120D08: .4byte gBattleTypeFlags
-_08120D0C: .4byte gUnknown_08400727
-_08120D10:
- ldr r6, _08120D1C @ =gUnknown_08400749
- cmp r2, 0x2
- beq _08120D18
- b _08120F70
-_08120D18:
- ldr r6, _08120D20 @ =gUnknown_08400736
- b _08120F70
- .align 2, 0
-_08120D1C: .4byte gUnknown_08400749
-_08120D20: .4byte gUnknown_08400736
-_08120D24:
- ldr r0, _08120D44 @ =gTrainerBattleOpponent
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 4
- cmp r1, r0
- bne _08120D54
- ldr r0, _08120D48 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- ldr r6, _08120D4C @ =gUnknown_08400771
- cmp r0, 0
- bne _08120D40
- b _08120F70
-_08120D40:
- ldr r6, _08120D50 @ =gUnknown_08400781
- b _08120F70
- .align 2, 0
-_08120D44: .4byte gTrainerBattleOpponent
-_08120D48: .4byte gBattleTypeFlags
-_08120D4C: .4byte gUnknown_08400771
-_08120D50: .4byte gUnknown_08400781
-_08120D54:
- ldr r6, _08120D58 @ =gUnknown_0840075E
- b _08120F70
- .align 2, 0
-_08120D58: .4byte gUnknown_0840075E
-_08120D5C:
- ldr r0, _08120D88 @ =0x00016003
- add r0, r9
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08120DB8
- ldr r0, _08120D8C @ =0x000160c1
- add r0, r9
- ldrb r3, [r0]
- cmp r3, 0
- beq _08120D82
- ldr r0, _08120D90 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08120D98
-_08120D82:
- ldr r6, _08120D94 @ =gUnknown_084006B3
- b _08120F70
- .align 2, 0
-_08120D88: .4byte 0x00016003
-_08120D8C: .4byte 0x000160c1
-_08120D90: .4byte gBattleTypeFlags
-_08120D94: .4byte gUnknown_084006B3
-_08120D98:
- cmp r3, 0x1
- bne _08120DA4
- ldr r6, _08120DA0 @ =gUnknown_084006BB
- b _08120F70
- .align 2, 0
-_08120DA0: .4byte gUnknown_084006BB
-_08120DA4:
- ldr r6, _08120DB0 @ =gUnknown_084006D5
- cmp r3, 0x2
- beq _08120DAC
- b _08120F70
-_08120DAC:
- ldr r6, _08120DB4 @ =gUnknown_084006C6
- b _08120F70
- .align 2, 0
-_08120DB0: .4byte gUnknown_084006D5
-_08120DB4: .4byte gUnknown_084006C6
-_08120DB8:
- ldr r0, _08120DD4 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08120DE0
- movs r0, 0x40
- ands r0, r1
- ldr r6, _08120DD8 @ =gUnknown_0840067C
- cmp r0, 0
- bne _08120DD0
- b _08120F70
-_08120DD0:
- ldr r6, _08120DDC @ =gUnknown_0840068C
- b _08120F70
- .align 2, 0
-_08120DD4: .4byte gBattleTypeFlags
-_08120DD8: .4byte gUnknown_0840067C
-_08120DDC: .4byte gUnknown_0840068C
-_08120DE0:
- ldr r6, _08120DE4 @ =gUnknown_08400622
- b _08120F70
- .align 2, 0
-_08120DE4: .4byte gUnknown_08400622
-_08120DE8:
- mov r0, r10
- bl sub_8121D1C
- ldr r0, _08120E14 @ =gSelectedOrderFromParty
- ldr r2, [r0]
- ldrh r1, [r2]
- movs r0, 0xB1
- lsls r0, 1
- cmp r1, r0
- bls _08120E28
- ldr r0, _08120E18 @ =gBattleTextBuff2
- ldr r2, _08120E1C @ =gUnknown_08401674
- ldr r1, _08120E20 @ =0x02000000
- ldr r3, _08120E24 @ =0x000160a0
- adds r1, r3
- ldrb r1, [r1]
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- bl StringCopy
- b _08120E38
- .align 2, 0
-_08120E14: .4byte gSelectedOrderFromParty
-_08120E18: .4byte gBattleTextBuff2
-_08120E1C: .4byte gUnknown_08401674
-_08120E20: .4byte 0x02000000
-_08120E24: .4byte 0x000160a0
-_08120E28:
- ldr r0, _08120E44 @ =gBattleTextBuff2
- ldrh r2, [r2]
- movs r1, 0xD
- muls r1, r2
- ldr r2, _08120E48 @ =gMoveNames
- adds r1, r2
- bl StringCopy
-_08120E38:
- ldr r0, _08120E44 @ =gBattleTextBuff2
- bl sub_8121D74
- ldr r6, _08120E4C @ =gUnknown_084007BD
- b _08120F70
- .align 2, 0
-_08120E44: .4byte gBattleTextBuff2
-_08120E48: .4byte gMoveNames
-_08120E4C: .4byte gUnknown_084007BD
-_08120E50:
- ldr r5, _08120E90 @ =gBattleTextBuff1
- ldrb r1, [r5]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08120EB8
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r5]
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08120E7C
- ldrb r1, [r5]
- cmp r1, 0x3
- beq _08120E7C
- movs r0, 0x3
- eors r0, r1
- strb r0, [r5]
-_08120E7C:
- ldr r0, _08120E90 @ =gBattleTextBuff1
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _08120E98
- ldr r6, _08120E94 @ =gUnknown_083FFEFC
- b _08120F70
- .align 2, 0
-_08120E90: .4byte gBattleTextBuff1
-_08120E94: .4byte gUnknown_083FFEFC
-_08120E98:
- ldr r0, _08120EAC @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- ldr r6, _08120EB0 @ =gUnknown_083FFFEA
- cmp r0, 0
- beq _08120F70
- ldr r6, _08120EB4 @ =gUnknown_083FFFF7
- b _08120F70
- .align 2, 0
-_08120EAC: .4byte gBattleTypeFlags
-_08120EB0: .4byte gUnknown_083FFFEA
-_08120EB4: .4byte gUnknown_083FFFF7
-_08120EB8:
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08120ED2
- ldrb r1, [r5]
- cmp r1, 0x3
- beq _08120ED2
- movs r0, 0x3
- eors r0, r1
- strb r0, [r5]
-_08120ED2:
- ldr r0, _08120EF0 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08120F18
- ldr r0, _08120EF4 @ =gBattleTextBuff1
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _08120F08
- cmp r0, 0x2
- bgt _08120EF8
- cmp r0, 0x1
- beq _08120EFE
- b _08120F70
- .align 2, 0
-_08120EF0: .4byte gBattleTypeFlags
-_08120EF4: .4byte gBattleTextBuff1
-_08120EF8:
- cmp r0, 0x3
- beq _08120F10
- b _08120F70
-_08120EFE:
- ldr r6, _08120F04 @ =gUnknown_083FFF6A
- b _08120F70
- .align 2, 0
-_08120F04: .4byte gUnknown_083FFF6A
-_08120F08:
- ldr r6, _08120F0C @ =gUnknown_083FFF99
- b _08120F70
- .align 2, 0
-_08120F0C: .4byte gUnknown_083FFF99
-_08120F10:
- ldr r6, _08120F14 @ =gUnknown_083FFFCB
- b _08120F70
- .align 2, 0
-_08120F14: .4byte gUnknown_083FFFCB
-_08120F18:
- ldr r0, _08120F2C @ =gBattleTextBuff1
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _08120F40
- cmp r0, 0x2
- bgt _08120F30
- cmp r0, 0x1
- beq _08120F36
- b _08120F70
- .align 2, 0
-_08120F2C: .4byte gBattleTextBuff1
-_08120F30:
- cmp r0, 0x3
- beq _08120F48
- b _08120F70
-_08120F36:
- ldr r6, _08120F3C @ =gUnknown_083FFF56
- b _08120F70
- .align 2, 0
-_08120F3C: .4byte gUnknown_083FFF56
-_08120F40:
- ldr r6, _08120F44 @ =gUnknown_083FFF81
- b _08120F70
- .align 2, 0
-_08120F44: .4byte gUnknown_083FFF81
-_08120F48:
- ldr r6, _08120F4C @ =gUnknown_083FFFB3
- b _08120F70
- .align 2, 0
-_08120F4C: .4byte gUnknown_083FFFB3
-_08120F50:
- movs r0, 0xB5
- lsls r0, 1
- cmp r7, r0
- bls _08120F64
- ldr r1, _08120F60 @ =gDisplayedStringBattle
- movs r0, 0xFF
- strb r0, [r1]
- b _08120F76
- .align 2, 0
-_08120F60: .4byte gDisplayedStringBattle
-_08120F64:
- ldr r1, _08120F84 @ =gBattleStringsTable
- adds r0, r7, 0
- subs r0, 0xC
- lsls r0, 2
- adds r0, r1
- ldr r6, [r0]
-_08120F70:
- adds r0, r6, 0
- bl StrCpyDecodeToDisplayedStringBattle
-_08120F76:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08120F84: .4byte gBattleStringsTable
- thumb_func_end BufferStringBattle
-
- thumb_func_start StrCpyDecodeToDisplayedStringBattle
-StrCpyDecodeToDisplayedStringBattle: @ 8120F88
- push {lr}
- ldr r1, _08120F94 @ =gDisplayedStringBattle
- bl StrCpyDecodeBattle
- pop {r1}
- bx r1
- .align 2, 0
-_08120F94: .4byte gDisplayedStringBattle
- thumb_func_end StrCpyDecodeToDisplayedStringBattle
-
- thumb_func_start sub_8120F98
-sub_8120F98: @ 8120F98
- push {r4,r5,lr}
- sub sp, 0x8
- adds r4, r0, 0
- ldr r1, _08120FB0 @ =gUnknown_084017A8
- mov r0, sp
- movs r2, 0x8
- bl memcpy
- mov r2, sp
- movs r3, 0
- b _08120FC0
- .align 2, 0
-_08120FB0: .4byte gUnknown_084017A8
-_08120FB4:
- strb r1, [r2]
- adds r4, 0x1
- adds r2, 0x1
- adds r3, 0x1
- cmp r3, 0x7
- bhi _08120FC8
-_08120FC0:
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _08120FB4
-_08120FC8:
- ldr r5, [sp]
- ldr r4, [sp, 0x4]
- movs r3, 0
- ldr r2, _08120FE4 @ =gUnknown_081FA6D4
-_08120FD0:
- ldr r1, [r2]
- ldr r0, [r1]
- cmp r5, r0
- bne _08120FE8
- ldr r0, [r1, 0x4]
- cmp r4, r0
- bne _08120FE8
- ldr r0, [r2, 0x4]
- b _08120FF2
- .align 2, 0
-_08120FE4: .4byte gUnknown_081FA6D4
-_08120FE8:
- adds r2, 0x8
- adds r3, 0x1
- cmp r3, 0x6
- bls _08120FD0
- movs r0, 0
-_08120FF2:
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8120F98
-
- thumb_func_start StrCpyDecodeBattle
-StrCpyDecodeBattle: @ 8120FFC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0xC
- mov r9, r0
- mov r8, r1
- movs r6, 0
- movs r4, 0
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r7, r0, 24
- mov r0, r9
- ldrb r1, [r0]
- bl _08121A40
-_0812101E:
- cmp r1, 0xFD
- beq _08121026
- bl _08121A30
-_08121026:
- movs r1, 0x1
- add r9, r1
- mov r2, r9
- ldrb r0, [r2]
- cmp r0, 0x2A
- bls _08121036
- bl _081219E6
-_08121036:
- lsls r0, 2
- ldr r1, _08121040 @ =_08121044
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08121040: .4byte _08121044
- .align 2, 0
-_08121044:
- .4byte _081210F0
- .4byte _0812111E
- .4byte _0812115A
- .4byte _08121180
- .4byte _081211A4
- .4byte _081211C8
- .4byte _081211EC
- .4byte _08121218
- .4byte _08121248
- .4byte _08121278
- .4byte _081212A8
- .4byte _0812133C
- .4byte _081213A8
- .4byte _0812141C
- .4byte _08121490
- .4byte _08121504
- .4byte _08121578
- .4byte _081215F8
- .4byte _08121620
- .4byte _08121660
- .4byte _081216EC
- .4byte _081216F4
- .4byte _08121704
- .4byte _08121714
- .4byte _0812172C
- .4byte _0812174C
- .4byte _081217C0
- .4byte _08121830
- .4byte _08121840
- .4byte _08121854
- .4byte _08121868
- .4byte _0812188C
- .4byte _081218B0
- .4byte _081218B8
- .4byte _081218C0
- .4byte _0812195C
- .4byte _081219A4
- .4byte _081219AC
- .4byte _0812197C
- .4byte _08121984
- .4byte _081219CC
- .4byte _081219D4
- .4byte _08121134
-_081210F0:
- ldr r5, _08121100 @ =gBattleTextBuff1
- ldrb r0, [r5]
- cmp r0, 0xFD
- bne _08121108
- ldr r4, _08121104 @ =gStringVar1
- adds r0, r5, 0
- b _08121140
- .align 2, 0
-_08121100: .4byte gBattleTextBuff1
-_08121104: .4byte gStringVar1
-_08121108:
- adds r0, r5, 0
- bl sub_8120F98
- adds r4, r0, 0
- cmp r4, 0
- beq _08121118
- bl _081219E6
-_08121118:
- adds r4, r5, 0
- bl _081219E6
-_0812111E:
- ldr r1, _0812112C @ =gBattleTextBuff2
- ldrb r0, [r1]
- cmp r0, 0xFD
- bne _08121154
- ldr r4, _08121130 @ =gStringVar2
- b _0812113E
- .align 2, 0
-_0812112C: .4byte gBattleTextBuff2
-_08121130: .4byte gStringVar2
-_08121134:
- ldr r1, _0812114C @ =gBattleTextBuff3
- ldrb r0, [r1]
- cmp r0, 0xFD
- bne _08121154
- ldr r4, _08121150 @ =gStringVar3
-_0812113E:
- adds r0, r1, 0
-_08121140:
- adds r1, r4, 0
- bl sub_8121A68
- bl _081219E6
- .align 2, 0
-_0812114C: .4byte gBattleTextBuff3
-_08121150: .4byte gStringVar3
-_08121154:
- adds r4, r1, 0
- bl _081219E6
-_0812115A:
- movs r0, 0
- bl GetBankByPlayerAI
- ldr r1, _08121178 @ =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0812117C @ =gPlayerParty
- adds r0, r1
- bl _0812190E
- .align 2, 0
-_08121178: .4byte gBattlePartyID
-_0812117C: .4byte gPlayerParty
-_08121180:
- movs r0, 0x1
- bl GetBankByPlayerAI
- ldr r1, _0812119C @ =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _081211A0 @ =gEnemyParty
- adds r0, r1
- b _0812190E
- .align 2, 0
-_0812119C: .4byte gBattlePartyID
-_081211A0: .4byte gEnemyParty
-_081211A4:
- movs r0, 0x2
- bl GetBankByPlayerAI
- ldr r1, _081211C0 @ =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _081211C4 @ =gPlayerParty
- adds r0, r1
- b _0812190E
- .align 2, 0
-_081211C0: .4byte gBattlePartyID
-_081211C4: .4byte gPlayerParty
-_081211C8:
- movs r0, 0x3
- bl GetBankByPlayerAI
- ldr r1, _081211E4 @ =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _081211E8 @ =gEnemyParty
- adds r0, r1
- b _0812190E
- .align 2, 0
-_081211E4: .4byte gBattlePartyID
-_081211E8: .4byte gEnemyParty
-_081211EC:
- ldr r2, _0812120C @ =gBattlePartyID
- ldr r1, _08121210 @ =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r1
- ldrh r0, [r0, 0x18]
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08121214 @ =gPlayerParty
- adds r0, r1
- b _0812190E
- .align 2, 0
-_0812120C: .4byte gBattlePartyID
-_08121210: .4byte gLinkPlayers
-_08121214: .4byte gPlayerParty
-_08121218:
- ldr r2, _0812123C @ =gBattlePartyID
- ldr r1, _08121240 @ =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r1
- ldrh r1, [r0, 0x18]
- movs r0, 0x1
- eors r0, r1
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08121244 @ =gEnemyParty
- adds r0, r1
- b _0812190E
- .align 2, 0
-_0812123C: .4byte gBattlePartyID
-_08121240: .4byte gLinkPlayers
-_08121244: .4byte gEnemyParty
-_08121248:
- ldr r2, _0812126C @ =gBattlePartyID
- ldr r1, _08121270 @ =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r1
- ldrh r1, [r0, 0x18]
- movs r0, 0x2
- eors r0, r1
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08121274 @ =gPlayerParty
- adds r0, r1
- b _0812190E
- .align 2, 0
-_0812126C: .4byte gBattlePartyID
-_08121270: .4byte gLinkPlayers
-_08121274: .4byte gPlayerParty
-_08121278:
- ldr r2, _0812129C @ =gBattlePartyID
- ldr r1, _081212A0 @ =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r1
- ldrh r1, [r0, 0x18]
- movs r0, 0x3
- eors r0, r1
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _081212A4 @ =gEnemyParty
- adds r0, r1
- b _0812190E
- .align 2, 0
-_0812129C: .4byte gBattlePartyID
-_081212A0: .4byte gLinkPlayers
-_081212A4: .4byte gEnemyParty
-_081212A8:
- ldr r4, _081212CC @ =gBankAttacker
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- adds r2, r4, 0
- cmp r0, 0
- beq _0812131C
- ldr r0, _081212D0 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- ldr r4, _081212D4 @ =gUnknown_08400791
- cmp r0, 0
- beq _081212E6
- ldr r4, _081212D8 @ =gUnknown_08400797
- b _081212E6
- .align 2, 0
-_081212CC: .4byte gBankAttacker
-_081212D0: .4byte gBattleTypeFlags
-_081212D4: .4byte gUnknown_08400791
-_081212D8: .4byte gUnknown_08400797
-_081212DC:
- mov r3, r8
- adds r0, r3, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
-_081212E6:
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _081212DC
- ldrb r0, [r2]
- bl GetBankIdentity
- adds r1, r0, 0
- movs r0, 0x1
- ands r0, r1
- bl GetBankByPlayerAI
- ldr r1, _08121314 @ =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08121318 @ =gEnemyParty
- adds r0, r1
- b _0812190E
- .align 2, 0
-_08121314: .4byte gBattlePartyID
-_08121318: .4byte gEnemyParty
-_0812131C:
- ldrb r0, [r2]
- bl GetBankIdentity
- adds r1, r0, 0
- movs r0, 0x1
- ands r0, r1
- bl GetBankByPlayerAI
- ldr r1, _08121338 @ =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r1, [r0]
- b _0812193A
- .align 2, 0
-_08121338: .4byte gBattlePartyID
-_0812133C:
- ldr r4, _08121370 @ =gBankAttacker
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0812137C
- ldrb r0, [r4]
- bl GetBankIdentity
- adds r1, r0, 0
- movs r0, 0x1
- ands r0, r1
- bl GetBankByPlayerAI
- ldr r1, _08121374 @ =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, 0x4
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08121378 @ =gPlayerParty
- adds r0, r1
- b _0812190E
- .align 2, 0
-_08121370: .4byte gBankAttacker
-_08121374: .4byte gBattlePartyID
-_08121378: .4byte gPlayerParty
-_0812137C:
- ldrb r0, [r4]
- bl GetBankIdentity
- adds r1, r0, 0
- movs r0, 0x1
- ands r0, r1
- bl GetBankByPlayerAI
- ldr r1, _081213A0 @ =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, 0x4
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _081213A4 @ =gEnemyParty
- b _08121940
- .align 2, 0
-_081213A0: .4byte gBattlePartyID
-_081213A4: .4byte gEnemyParty
-_081213A8:
- ldr r5, _081213F4 @ =gBankAttacker
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _0812140C
- ldr r0, _081213F8 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- ldr r4, _081213FC @ =gUnknown_08400791
- cmp r0, 0
- beq _081213C6
- ldr r4, _08121400 @ =gUnknown_08400797
-_081213C6:
- ldrb r1, [r4]
- adds r0, r1, 0
- ldr r3, _08121404 @ =gBattlePartyID
- ldr r2, _08121408 @ =gEnemyParty
- mov r12, r2
- adds r2, r5, 0
- cmp r0, 0xFF
- beq _081213E8
-_081213D6:
- mov r5, r8
- adds r0, r5, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _081213D6
-_081213E8:
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r3
- ldrh r1, [r0]
- b _08121908
- .align 2, 0
-_081213F4: .4byte gBankAttacker
-_081213F8: .4byte gBattleTypeFlags
-_081213FC: .4byte gUnknown_08400791
-_08121400: .4byte gUnknown_08400797
-_08121404: .4byte gBattlePartyID
-_08121408: .4byte gEnemyParty
-_0812140C:
- ldr r1, _08121418 @ =gBattlePartyID
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- b _0812193A
- .align 2, 0
-_08121418: .4byte gBattlePartyID
-_0812141C:
- ldr r5, _08121468 @ =gBankTarget
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _08121480
- ldr r0, _0812146C @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- ldr r4, _08121470 @ =gUnknown_08400791
- cmp r0, 0
- beq _0812143A
- ldr r4, _08121474 @ =gUnknown_08400797
-_0812143A:
- ldrb r1, [r4]
- adds r0, r1, 0
- ldr r3, _08121478 @ =gBattlePartyID
- ldr r2, _0812147C @ =gEnemyParty
- mov r12, r2
- adds r2, r5, 0
- cmp r0, 0xFF
- beq _0812145C
-_0812144A:
- mov r5, r8
- adds r0, r5, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _0812144A
-_0812145C:
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r3
- ldrh r1, [r0]
- b _08121908
- .align 2, 0
-_08121468: .4byte gBankTarget
-_0812146C: .4byte gBattleTypeFlags
-_08121470: .4byte gUnknown_08400791
-_08121474: .4byte gUnknown_08400797
-_08121478: .4byte gBattlePartyID
-_0812147C: .4byte gEnemyParty
-_08121480:
- ldr r1, _0812148C @ =gBattlePartyID
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- b _0812193A
- .align 2, 0
-_0812148C: .4byte gBattlePartyID
-_08121490:
- ldr r5, _081214DC @ =gEffectBank
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _081214F4
- ldr r0, _081214E0 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- ldr r4, _081214E4 @ =gUnknown_08400791
- cmp r0, 0
- beq _081214AE
- ldr r4, _081214E8 @ =gUnknown_08400797
-_081214AE:
- ldrb r1, [r4]
- adds r0, r1, 0
- ldr r3, _081214EC @ =gBattlePartyID
- ldr r2, _081214F0 @ =gEnemyParty
- mov r12, r2
- adds r2, r5, 0
- cmp r0, 0xFF
- beq _081214D0
-_081214BE:
- mov r5, r8
- adds r0, r5, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _081214BE
-_081214D0:
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r3
- ldrh r1, [r0]
- b _08121908
- .align 2, 0
-_081214DC: .4byte gEffectBank
-_081214E0: .4byte gBattleTypeFlags
-_081214E4: .4byte gUnknown_08400791
-_081214E8: .4byte gUnknown_08400797
-_081214EC: .4byte gBattlePartyID
-_081214F0: .4byte gEnemyParty
-_081214F4:
- ldr r1, _08121500 @ =gBattlePartyID
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- b _0812193A
- .align 2, 0
-_08121500: .4byte gBattlePartyID
-_08121504:
- ldr r5, _08121550 @ =gActiveBank
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _08121568
- ldr r0, _08121554 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- ldr r4, _08121558 @ =gUnknown_08400791
- cmp r0, 0
- beq _08121522
- ldr r4, _0812155C @ =gUnknown_08400797
-_08121522:
- ldrb r1, [r4]
- adds r0, r1, 0
- ldr r3, _08121560 @ =gBattlePartyID
- ldr r2, _08121564 @ =gEnemyParty
- mov r12, r2
- adds r2, r5, 0
- cmp r0, 0xFF
- beq _08121544
-_08121532:
- mov r5, r8
- adds r0, r5, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _08121532
-_08121544:
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r3
- ldrh r1, [r0]
- b _08121908
- .align 2, 0
-_08121550: .4byte gActiveBank
-_08121554: .4byte gBattleTypeFlags
-_08121558: .4byte gUnknown_08400791
-_0812155C: .4byte gUnknown_08400797
-_08121560: .4byte gBattlePartyID
-_08121564: .4byte gEnemyParty
-_08121568:
- ldr r1, _08121574 @ =gBattlePartyID
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- b _0812193A
- .align 2, 0
-_08121574: .4byte gBattlePartyID
-_08121578:
- ldr r4, _081215CC @ =0x02000000
- ldr r0, _081215D0 @ =0x00016003
- adds r5, r4, r0
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- adds r2, r4, 0
- cmp r0, 0
- beq _081215E8
- ldr r0, _081215D4 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- ldr r4, _081215D8 @ =gUnknown_08400791
- cmp r0, 0
- beq _0812159C
- ldr r4, _081215DC @ =gUnknown_08400797
-_0812159C:
- ldrb r1, [r4]
- adds r0, r1, 0
- ldr r3, _081215E0 @ =gBattlePartyID
- ldr r5, _081215E4 @ =gEnemyParty
- mov r12, r5
- cmp r0, 0xFF
- beq _081215BC
-_081215AA:
- mov r5, r8
- adds r0, r5, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _081215AA
-_081215BC:
- ldr r1, _081215D0 @ =0x00016003
- adds r0, r2, r1
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r3
- ldrh r1, [r0]
- b _08121908
- .align 2, 0
-_081215CC: .4byte 0x02000000
-_081215D0: .4byte 0x00016003
-_081215D4: .4byte gBattleTypeFlags
-_081215D8: .4byte gUnknown_08400791
-_081215DC: .4byte gUnknown_08400797
-_081215E0: .4byte gBattlePartyID
-_081215E4: .4byte gEnemyParty
-_081215E8:
- ldr r1, _081215F4 @ =gBattlePartyID
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- b _0812193A
- .align 2, 0
-_081215F4: .4byte gBattlePartyID
-_081215F8:
- ldr r0, _08121610 @ =gSelectedOrderFromParty
- ldr r2, [r0]
- ldrh r1, [r2]
- movs r0, 0xB1
- lsls r0, 1
- cmp r1, r0
- bls _0812161C
- ldr r0, _08121614 @ =0x02000000
- ldr r2, _08121618 @ =0x000160a0
- adds r0, r2
- b _08121634
- .align 2, 0
-_08121610: .4byte gSelectedOrderFromParty
-_08121614: .4byte 0x02000000
-_08121618: .4byte 0x000160a0
-_0812161C:
- ldrh r1, [r2]
- b _08121652
-_08121620:
- ldr r0, _08121640 @ =gSelectedOrderFromParty
- ldr r2, [r0]
- ldrh r1, [r2, 0x2]
- movs r0, 0xB1
- lsls r0, 1
- cmp r1, r0
- bls _08121650
- ldr r0, _08121644 @ =0x02000000
- ldr r3, _08121648 @ =0x000160a0
- adds r0, r3
-_08121634:
- ldrb r0, [r0]
- lsls r0, 2
- ldr r1, _0812164C @ =gUnknown_08401674
- adds r4, r0, r1
- b _081219E6
- .align 2, 0
-_08121640: .4byte gSelectedOrderFromParty
-_08121644: .4byte 0x02000000
-_08121648: .4byte 0x000160a0
-_0812164C: .4byte gUnknown_08401674
-_08121650:
- ldrh r1, [r2, 0x2]
-_08121652:
- movs r0, 0xD
- muls r1, r0
- ldr r0, _0812165C @ =gMoveNames
- adds r4, r1, r0
- b _081219E6
- .align 2, 0
-_0812165C: .4byte gMoveNames
-_08121660:
- ldr r0, _081216AC @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081216D8
- ldr r1, _081216B0 @ =gLastUsedItem
- ldrh r0, [r1]
- cmp r0, 0xAF
- bne _081216D4
- ldr r2, _081216B4 @ =gLinkPlayers
- ldr r0, _081216B8 @ =0x02000000
- ldr r5, _081216BC @ =0x000160cb
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, _081216C0 @ =gStringBank
- ldrb r2, [r1]
- ldrh r0, [r0, 0x18]
- cmp r0, r2
- bne _081216CC
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- ldr r0, _081216C4 @ =gEnigmaBerries
- adds r1, r0
- mov r0, sp
- bl StringCopy
- ldr r1, _081216C8 @ =gUnknown_08400A85
- mov r0, sp
- bl StringAppend
- mov r4, sp
- b _081219E6
- .align 2, 0
-_081216AC: .4byte gBattleTypeFlags
-_081216B0: .4byte gLastUsedItem
-_081216B4: .4byte gLinkPlayers
-_081216B8: .4byte 0x02000000
-_081216BC: .4byte 0x000160cb
-_081216C0: .4byte gStringBank
-_081216C4: .4byte gEnigmaBerries
-_081216C8: .4byte gUnknown_08400A85
-_081216CC:
- ldr r4, _081216D0 @ =gUnknown_08400A78
- b _081219E6
- .align 2, 0
-_081216D0: .4byte gUnknown_08400A78
-_081216D4:
- ldrh r0, [r1]
- b _081216DC
-_081216D8:
- ldr r0, _081216E8 @ =gLastUsedItem
- ldrh r0, [r0]
-_081216DC:
- mov r1, sp
- bl CopyItemName
- mov r4, sp
- b _081219E6
- .align 2, 0
-_081216E8: .4byte gLastUsedItem
-_081216EC:
- ldr r0, _081216F0 @ =gLastUsedAbility
- b _08121734
- .align 2, 0
-_081216F0: .4byte gLastUsedAbility
-_081216F4:
- ldr r1, _081216FC @ =gAbilitiesPerBank
- ldr r0, _08121700 @ =gBankAttacker
- b _08121730
- .align 2, 0
-_081216FC: .4byte gAbilitiesPerBank
-_08121700: .4byte gBankAttacker
-_08121704:
- ldr r1, _0812170C @ =gAbilitiesPerBank
- ldr r0, _08121710 @ =gBankTarget
- b _08121730
- .align 2, 0
-_0812170C: .4byte gAbilitiesPerBank
-_08121710: .4byte gBankTarget
-_08121714:
- ldr r1, _08121720 @ =gAbilitiesPerBank
- ldr r0, _08121724 @ =0x02000000
- ldr r2, _08121728 @ =0x00016003
- adds r0, r2
- b _08121730
- .align 2, 0
-_08121720: .4byte gAbilitiesPerBank
-_08121724: .4byte 0x02000000
-_08121728: .4byte 0x00016003
-_0812172C:
- ldr r1, _08121740 @ =gAbilitiesPerBank
- ldr r0, _08121744 @ =gEffectBank
-_08121730:
- ldrb r0, [r0]
- adds r0, r1
-_08121734:
- ldrb r1, [r0]
- movs r0, 0xD
- muls r1, r0
- ldr r0, _08121748 @ =gAbilityNames
- adds r4, r1, r0
- b _081219E6
- .align 2, 0
-_08121740: .4byte gAbilitiesPerBank
-_08121744: .4byte gEffectBank
-_08121748: .4byte gAbilityNames
-_0812174C:
- ldr r3, _08121764 @ =gTrainerBattleOpponent
- ldrh r1, [r3]
- movs r0, 0x80
- lsls r0, 3
- cmp r1, r0
- bne _08121768
- bl GetSecretBaseTrainerNameIndex
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0xD
- b _081217AE
- .align 2, 0
-_08121764: .4byte gTrainerBattleOpponent
-_08121768:
- ldr r0, _08121784 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _08121788
- bl get_trainer_class_name_index
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0xD
- b _081217AE
- .align 2, 0
-_08121784: .4byte gBattleTypeFlags
-_08121788:
- movs r0, 0x80
- lsls r0, 4
- ands r0, r1
- cmp r0, 0
- beq _0812179E
- bl sub_8135FD8
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0xD
- b _081217AE
-_0812179E:
- ldr r2, _081217B8 @ =gTrainers
- ldrh r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrb r1, [r0, 0x1]
- movs r0, 0xD
-_081217AE:
- muls r1, r0
- ldr r0, _081217BC @ =gTrainerClassNames
- adds r4, r1, r0
- b _081219E6
- .align 2, 0
-_081217B8: .4byte gTrainers
-_081217BC: .4byte gTrainerClassNames
-_081217C0:
- ldr r2, _081217E4 @ =gTrainerBattleOpponent
- ldrh r1, [r2]
- movs r0, 0x80
- lsls r0, 3
- cmp r1, r0
- bne _081217EC
- mov r0, sp
- movs r1, 0xFF
- movs r2, 0x8
- bl memset
- ldr r1, _081217E8 @ =0x02017002
- mov r0, sp
- movs r2, 0x7
- bl memcpy
- mov r4, sp
- b _081219E6
- .align 2, 0
-_081217E4: .4byte gTrainerBattleOpponent
-_081217E8: .4byte 0x02017002
-_081217EC:
- ldr r0, _08121804 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _08121808
- mov r0, sp
- bl get_trainer_name
- mov r4, sp
- b _081219E6
- .align 2, 0
-_08121804: .4byte gBattleTypeFlags
-_08121808:
- movs r0, 0x80
- lsls r0, 4
- ands r0, r1
- cmp r0, 0
- beq _0812181C
- mov r0, sp
- bl sub_8135FF4
- mov r4, sp
- b _081219E6
-_0812181C:
- ldrh r0, [r2]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _0812182C @ =gTrainers + 0x4
- adds r4, r1, r0
- b _081219E6
- .align 2, 0
-_0812182C: .4byte gTrainers + 0x4
-_08121830:
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- ldr r1, _0812183C @ =gLinkPlayers + 0x8
- adds r4, r0, r1
- b _081219E6
- .align 2, 0
-_0812183C: .4byte gLinkPlayers + 0x8
-_08121840:
- ldr r4, _08121850 @ =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x18]
- movs r0, 0x2
- b _08121876
- .align 2, 0
-_08121850: .4byte gLinkPlayers
-_08121854:
- ldr r4, _08121864 @ =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x18]
- movs r0, 0x1
- b _08121876
- .align 2, 0
-_08121864: .4byte gLinkPlayers
-_08121868:
- ldr r4, _08121888 @ =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x18]
- movs r0, 0x3
-_08121876:
- eors r0, r1
- bl sub_803FC34
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r4, 0x8
- adds r4, r1, r4
- b _081219E6
- .align 2, 0
-_08121888: .4byte gLinkPlayers
-_0812188C:
- ldr r0, _081218A4 @ =0x02000000
- ldr r3, _081218A8 @ =0x00016003
- adds r0, r3
- ldrb r0, [r0]
- bl sub_803FC34
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- ldr r0, _081218AC @ =gLinkPlayers + 0x8
- adds r4, r1, r0
- b _081219E6
- .align 2, 0
-_081218A4: .4byte 0x02000000
-_081218A8: .4byte 0x00016003
-_081218AC: .4byte gLinkPlayers + 0x8
-_081218B0:
- ldr r4, _081218B4 @ =gSaveBlock2
- b _081219E6
- .align 2, 0
-_081218B4: .4byte gSaveBlock2
-_081218B8:
- bl sub_8082830
- adds r4, r0, 0
- b _081219E6
-_081218C0:
- ldr r5, _08121918 @ =0x02000000
- ldr r1, _0812191C @ =0x00016003
- adds r0, r5, r1
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _08121934
- ldr r0, _08121920 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- ldr r4, _08121924 @ =gUnknown_08400791
- cmp r0, 0
- beq _081218E2
- ldr r4, _08121928 @ =gUnknown_08400797
-_081218E2:
- ldrb r1, [r4]
- adds r0, r1, 0
- ldr r2, _0812192C @ =gEnemyParty
- mov r12, r2
- adds r2, r5, 0
- cmp r0, 0xFF
- beq _08121902
-_081218F0:
- mov r3, r8
- adds r0, r3, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _081218F0
-_08121902:
- ldr r5, _08121930 @ =0x0001605e
- adds r0, r2, r5
- ldrb r1, [r0]
-_08121908:
- movs r0, 0x64
- muls r0, r1
- add r0, r12
-_0812190E:
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- b _0812194A
- .align 2, 0
-_08121918: .4byte 0x02000000
-_0812191C: .4byte 0x00016003
-_08121920: .4byte gBattleTypeFlags
-_08121924: .4byte gUnknown_08400791
-_08121928: .4byte gUnknown_08400797
-_0812192C: .4byte gEnemyParty
-_08121930: .4byte 0x0001605e
-_08121934:
- ldr r1, _08121954 @ =0x0001605e
- adds r0, r5, r1
- ldrb r1, [r0]
-_0812193A:
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08121958 @ =gPlayerParty
-_08121940:
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
-_0812194A:
- mov r0, sp
- bl StringGetEnd10
- mov r4, sp
- b _081219E6
- .align 2, 0
-_08121954: .4byte 0x0001605e
-_08121958: .4byte gPlayerParty
-_0812195C:
- ldr r0, _08121970 @ =0x0000084b
- bl FlagGet
- lsls r0, 24
- ldr r4, _08121974 @ =gUnknown_084009ED
- cmp r0, 0
- beq _081219E6
- ldr r4, _08121978 @ =gUnknown_084009F7
- b _081219E6
- .align 2, 0
-_08121970: .4byte 0x0000084b
-_08121974: .4byte gUnknown_084009ED
-_08121978: .4byte gUnknown_084009F7
-_0812197C:
- ldr r0, _08121980 @ =gBankAttacker
- b _08121986
- .align 2, 0
-_08121980: .4byte gBankAttacker
-_08121984:
- ldr r0, _08121998 @ =gBankTarget
-_08121986:
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- ldr r4, _0812199C @ =gUnknown_084007A7
- cmp r0, 0
- bne _081219E6
- ldr r4, _081219A0 @ =gUnknown_084007AC
- b _081219E6
- .align 2, 0
-_08121998: .4byte gBankTarget
-_0812199C: .4byte gUnknown_084007A7
-_081219A0: .4byte gUnknown_084007AC
-_081219A4:
- ldr r0, _081219A8 @ =gBankAttacker
- b _081219AE
- .align 2, 0
-_081219A8: .4byte gBankAttacker
-_081219AC:
- ldr r0, _081219C0 @ =gBankTarget
-_081219AE:
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- ldr r4, _081219C4 @ =gUnknown_0840079C
- cmp r0, 0
- bne _081219E6
- ldr r4, _081219C8 @ =gUnknown_084007A1
- b _081219E6
- .align 2, 0
-_081219C0: .4byte gBankTarget
-_081219C4: .4byte gUnknown_0840079C
-_081219C8: .4byte gUnknown_084007A1
-_081219CC:
- ldr r0, _081219D0 @ =gBankAttacker
- b _081219D6
- .align 2, 0
-_081219D0: .4byte gBankAttacker
-_081219D4:
- ldr r0, _08121A24 @ =gBankTarget
-_081219D6:
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- ldr r4, _08121A28 @ =gUnknown_084007B2
- cmp r0, 0
- bne _081219E6
- ldr r4, _08121A2C @ =gUnknown_084007B7
-_081219E6:
- ldrb r1, [r4]
- adds r0, r1, 0
- mov r3, r9
- ldrb r2, [r3]
- adds r3, 0x1
- cmp r0, 0xFF
- beq _08121A06
-_081219F4:
- mov r5, r8
- adds r0, r5, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _081219F4
-_08121A06:
- lsls r0, r2, 24
- lsrs r0, 24
- cmp r0, 0x21
- bne _08121A3C
- mov r0, r8
- adds r1, r0, r6
- movs r0, 0xFC
- strb r0, [r1]
- adds r6, 0x1
- mov r2, r8
- adds r1, r2, r6
- movs r0, 0x9
- strb r0, [r1]
- adds r6, 0x1
- b _08121A3C
- .align 2, 0
-_08121A24: .4byte gBankTarget
-_08121A28: .4byte gUnknown_084007B2
-_08121A2C: .4byte gUnknown_084007B7
-_08121A30:
- mov r3, r8
- adds r0, r3, r6
- strb r1, [r0]
- adds r6, 0x1
- mov r3, r9
- adds r3, 0x1
-_08121A3C:
- mov r9, r3
- ldrb r1, [r3]
-_08121A40:
- adds r0, r1, 0
- cmp r0, 0xFF
- beq _08121A4A
- bl _0812101E
-_08121A4A:
- mov r5, r8
- adds r1, r5, r6
- mov r2, r9
- ldrb r0, [r2]
- strb r0, [r1]
- adds r6, 0x1
- adds r0, r6, 0
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end StrCpyDecodeBattle
-
- thumb_func_start sub_8121A68
-sub_8121A68: @ 8121A68
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- adds r7, r0, 0
- adds r6, r1, 0
- movs r5, 0x1
- movs r0, 0
- mov r8, r0
- movs r0, 0xFF
- strb r0, [r6]
- ldrb r0, [r7, 0x1]
- cmp r0, 0xFF
- bne _08121A86
- b _08121D0E
-_08121A86:
- adds r0, r7, r5
- ldrb r1, [r0]
- adds r4, r0, 0
- cmp r1, 0xA
- bls _08121A92
- b _08121D04
-_08121A92:
- lsls r0, r1, 2
- ldr r1, _08121A9C @ =_08121AA0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08121A9C: .4byte _08121AA0
- .align 2, 0
-_08121AA0:
- .4byte _08121ACC
- .4byte _08121AE8
- .4byte _08121B3C
- .4byte _08121B54
- .4byte _08121B64
- .4byte _08121BDC
- .4byte _08121BF0
- .4byte _08121C02
- .4byte _08121C48
- .4byte _08121C5C
- .4byte _08121C78
-_08121ACC:
- adds r0, r5, r7
- ldrb r1, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldr r0, _08121AE4 @ =gBattleStringsTable
- subs r1, 0xC
- lsls r1, 2
- adds r1, r0
- ldr r1, [r1]
- b _08121CE2
- .align 2, 0
-_08121AE4: .4byte gBattleStringsTable
-_08121AE8:
- ldrb r0, [r4, 0x1]
- cmp r0, 0x2
- beq _08121B04
- cmp r0, 0x2
- bgt _08121AF8
- cmp r0, 0x1
- beq _08121AFE
- b _08121B26
-_08121AF8:
- cmp r0, 0x4
- beq _08121B0C
- b _08121B26
-_08121AFE:
- ldrb r4, [r4, 0x3]
- mov r8, r4
- b _08121B26
-_08121B04:
- ldrb r1, [r4, 0x3]
- ldrb r0, [r4, 0x4]
- lsls r0, 8
- b _08121B22
-_08121B0C:
- ldrb r0, [r4, 0x3]
- mov r8, r0
- ldrb r0, [r4, 0x4]
- lsls r0, 8
- mov r1, r8
- orrs r1, r0
- ldrb r0, [r4, 0x5]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r4, 0x6]
- lsls r0, 24
-_08121B22:
- orrs r1, r0
- mov r8, r1
-_08121B26:
- adds r4, r5, r7
- ldrb r3, [r4, 0x2]
- adds r0, r6, 0
- mov r1, r8
- movs r2, 0
- bl ConvertIntToDecimalStringN
- adds r0, r5, 0x3
- ldrb r4, [r4, 0x1]
- adds r5, r0, r4
- b _08121D04
-_08121B3C:
- adds r0, r5, r7
- ldrb r1, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r1, r0
- movs r0, 0xD
- muls r1, r0
- ldr r0, _08121B50 @ =gMoveNames
- adds r1, r0
- b _08121CE2
- .align 2, 0
-_08121B50: .4byte gMoveNames
-_08121B54:
- adds r0, r5, r7
- ldrb r0, [r0, 0x1]
- lsls r1, r0, 3
- subs r1, r0
- ldr r0, _08121B60 @ =gTypeNames
- b _08121C66
- .align 2, 0
-_08121B60: .4byte gTypeNames
-_08121B64:
- ldrb r0, [r4, 0x1]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08121B88
- ldrb r1, [r4, 0x2]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08121B84 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- b _08121BC4
- .align 2, 0
-_08121B84: .4byte gPlayerParty
-_08121B88:
- ldr r0, _08121BA0 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _08121BA8
- ldr r1, _08121BA4 @ =gUnknown_08400797
- adds r0, r6, 0
- bl StringAppend
- b _08121BB0
- .align 2, 0
-_08121BA0: .4byte gBattleTypeFlags
-_08121BA4: .4byte gUnknown_08400797
-_08121BA8:
- ldr r1, _08121BD4 @ =gUnknown_08400791
- adds r0, r6, 0
- bl StringAppend
-_08121BB0:
- adds r0, r5, r7
- ldrb r1, [r0, 0x2]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08121BD8 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
-_08121BC4:
- mov r0, sp
- bl StringGetEnd10
- adds r0, r6, 0
- mov r1, sp
- bl StringAppend
- b _08121D02
- .align 2, 0
-_08121BD4: .4byte gUnknown_08400791
-_08121BD8: .4byte gEnemyParty
-_08121BDC:
- ldr r1, _08121BEC @ =gUnknown_08400F58
- adds r0, r5, r7
- ldrb r0, [r0, 0x1]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- b _08121C68
- .align 2, 0
-_08121BEC: .4byte gUnknown_08400F58
-_08121BF0:
- adds r0, r5, r7
- ldrb r1, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r1, r0
- adds r0, r6, 0
- bl GetSpeciesName
- b _08121D02
-_08121C02:
- adds r4, r5, r7
- ldrb r0, [r4, 0x1]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08121C28
- ldrb r1, [r4, 0x2]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08121C24 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- adds r2, r6, 0
- bl GetMonData
- b _08121C3A
- .align 2, 0
-_08121C24: .4byte gPlayerParty
-_08121C28:
- ldrb r1, [r4, 0x2]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08121C44 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- adds r2, r6, 0
- bl GetMonData
-_08121C3A:
- adds r0, r6, 0
- bl StringGetEnd10
- b _08121D02
- .align 2, 0
-_08121C44: .4byte gEnemyParty
-_08121C48:
- ldr r1, _08121C58 @ =gUnknown_08400F78
- adds r0, r5, r7
- ldrb r0, [r0, 0x1]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- b _08121C68
- .align 2, 0
-_08121C58: .4byte gUnknown_08400F78
-_08121C5C:
- adds r0, r5, r7
- ldrb r1, [r0, 0x1]
- movs r0, 0xD
- muls r1, r0
- ldr r0, _08121C74 @ =gAbilityNames
-_08121C66:
- adds r1, r0
-_08121C68:
- adds r0, r6, 0
- bl StringAppend
- adds r5, 0x2
- b _08121D04
- .align 2, 0
-_08121C74: .4byte gAbilityNames
-_08121C78:
- adds r0, r5, r7
- ldrb r2, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r2, r0
- ldr r0, _08121CC4 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08121CFA
- cmp r2, 0xAF
- bne _08121CF0
- ldr r2, _08121CC8 @ =gLinkPlayers
- ldr r0, _08121CCC @ =0x02000000
- ldr r1, _08121CD0 @ =0x000160cb
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, _08121CD4 @ =gStringBank
- ldrb r2, [r1]
- ldrh r0, [r0, 0x18]
- cmp r0, r2
- bne _08121CE0
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- ldr r0, _08121CD8 @ =gEnigmaBerries
- adds r1, r0
- adds r0, r6, 0
- bl StringCopy
- ldr r1, _08121CDC @ =gUnknown_08400A85
- b _08121CE2
- .align 2, 0
-_08121CC4: .4byte gBattleTypeFlags
-_08121CC8: .4byte gLinkPlayers
-_08121CCC: .4byte 0x02000000
-_08121CD0: .4byte 0x000160cb
-_08121CD4: .4byte gStringBank
-_08121CD8: .4byte gEnigmaBerries
-_08121CDC: .4byte gUnknown_08400A85
-_08121CE0:
- ldr r1, _08121CEC @ =gUnknown_08400A78
-_08121CE2:
- adds r0, r6, 0
- bl StringAppend
- b _08121D02
- .align 2, 0
-_08121CEC: .4byte gUnknown_08400A78
-_08121CF0:
- adds r0, r2, 0
- adds r1, r6, 0
- bl CopyItemName
- b _08121D02
-_08121CFA:
- adds r0, r2, 0
- adds r1, r6, 0
- bl CopyItemName
-_08121D02:
- adds r5, 0x3
-_08121D04:
- adds r0, r7, r5
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _08121D0E
- b _08121A86
-_08121D0E:
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8121A68
-
- thumb_func_start sub_8121D1C
-sub_8121D1C: @ 8121D1C
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r2, 0
- ldr r5, _08121D50 @ =gSelectedOrderFromParty
- ldr r3, _08121D54 @ =gUnknown_084016BC
-_08121D26:
- cmp r2, 0x4
- beq _08121D3C
- ldrh r1, [r3]
- cmp r1, 0
- bne _08121D32
- adds r2, 0x1
-_08121D32:
- ldr r0, [r5]
- adds r3, 0x2
- ldrh r0, [r0]
- cmp r1, r0
- bne _08121D26
-_08121D3C:
- cmp r2, 0
- blt _08121D68
- cmp r2, 0x2
- bgt _08121D5C
- ldr r1, _08121D58 @ =gUnknown_08400E5E
- adds r0, r4, 0
- bl StringCopy
- b _08121D68
- .align 2, 0
-_08121D50: .4byte gSelectedOrderFromParty
-_08121D54: .4byte gUnknown_084016BC
-_08121D58: .4byte gUnknown_08400E5E
-_08121D5C:
- cmp r2, 0x4
- bgt _08121D68
- ldr r1, _08121D70 @ =gUnknown_08400E62
- adds r0, r4, 0
- bl StringCopy
-_08121D68:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08121D70: .4byte gUnknown_08400E62
- thumb_func_end sub_8121D1C
-
- thumb_func_start sub_8121D74
-sub_8121D74: @ 8121D74
- push {r4,r5,lr}
- adds r3, r0, 0
- movs r4, 0
- b _08121D7E
-_08121D7C:
- adds r3, 0x1
-_08121D7E:
- ldrb r0, [r3]
- cmp r0, 0xFF
- bne _08121D7C
- ldr r1, _08121DB4 @ =gUnknown_084016BC
- ldr r5, _08121DB8 @ =gSelectedOrderFromParty
- movs r0, 0
- lsls r0, 1
- adds r2, r0, r1
-_08121D8E:
- cmp r4, 0x4
- beq _08121DA8
- ldrh r1, [r2]
- cmp r1, 0
- bne _08121D9A
- adds r4, 0x1
-_08121D9A:
- ldr r0, [r5]
- adds r2, 0x2
- ldrh r0, [r0]
- cmp r1, r0
- bne _08121D8E
- cmp r4, 0x4
- bhi _08121E04
-_08121DA8:
- lsls r0, r4, 2
- ldr r1, _08121DBC @ =_08121DC0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08121DB4: .4byte gUnknown_084016BC
-_08121DB8: .4byte gSelectedOrderFromParty
-_08121DBC: .4byte _08121DC0
- .align 2, 0
-_08121DC0:
- .4byte _08121DD4
- .4byte _08121DDC
- .4byte _08121DE4
- .4byte _08121DEC
- .4byte _08121DFC
-_08121DD4:
- ldr r1, _08121DD8 @ =gUnknown_084007C8
- b _08121DEE
- .align 2, 0
-_08121DD8: .4byte gUnknown_084007C8
-_08121DDC:
- ldr r1, _08121DE0 @ =gUnknown_084007CA
- b _08121DEE
- .align 2, 0
-_08121DE0: .4byte gUnknown_084007CA
-_08121DE4:
- ldr r1, _08121DE8 @ =gUnknown_084007CC
- b _08121DEE
- .align 2, 0
-_08121DE8: .4byte gUnknown_084007CC
-_08121DEC:
- ldr r1, _08121DF8 @ =gUnknown_084007CE
-_08121DEE:
- adds r0, r3, 0
- bl StringCopy
- b _08121E04
- .align 2, 0
-_08121DF8: .4byte gUnknown_084007CE
-_08121DFC:
- ldr r1, _08121E0C @ =gUnknown_084007D0
- adds r0, r3, 0
- bl StringCopy
-_08121E04:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08121E0C: .4byte gUnknown_084007D0
- thumb_func_end sub_8121D74
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_tower.s b/asm/battle_tower.s
index 15cb95854..65fbd0c05 100644
--- a/asm/battle_tower.s
+++ b/asm/battle_tower.s
@@ -2082,7 +2082,7 @@ sub_8135534: @ 8135534
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl sub_811AAE8
+ bl IsBattleTransitionDone
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -2163,10 +2163,10 @@ _081355D6:
bl CreateTask
movs r0, 0
bl current_map_music_set__default_for_battle
- bl GetBattleTowerBattleTransition
+ bl BattleSetup_GetBattleTowerBattleTransition
lsls r0, 24
lsrs r0, 24
- bl sub_811AABC
+ bl BattleTransition_StartOnField
b _08135648
.align 2, 0
_081355F4: .4byte gPlayerParty
@@ -2200,10 +2200,10 @@ _08135606:
bl CreateTask
movs r0, 0
bl current_map_music_set__default_for_battle
- bl GetBattleTowerBattleTransition
+ bl BattleSetup_GetBattleTowerBattleTransition
lsls r0, 24
lsrs r0, 24
- bl sub_811AABC
+ bl BattleTransition_StartOnField
_08135648:
add sp, 0x4
pop {r4,r5}
diff --git a/asm/battle_transition.s b/asm/battle_transition.s
deleted file mode 100644
index a4b4d1666..000000000
--- a/asm/battle_transition.s
+++ /dev/null
@@ -1,6254 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_811AABC
-sub_811AABC: @ 811AABC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0811AAD0 @ =gMain
- ldr r1, _0811AAD4 @ =sub_8054398
- str r1, [r2, 0x4]
- bl sub_811AB20
- pop {r0}
- bx r0
- .align 2, 0
-_0811AAD0: .4byte gMain
-_0811AAD4: .4byte sub_8054398
- thumb_func_end sub_811AABC
-
- thumb_func_start sub_811AAD8
-sub_811AAD8: @ 811AAD8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_811AB20
- pop {r0}
- bx r0
- thumb_func_end sub_811AAD8
-
- thumb_func_start sub_811AAE8
-sub_811AAE8: @ 811AAE8
- push {lr}
- ldr r0, _0811AB0C @ =sub_811AB50
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _0811AB10 @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- movs r1, 0x26
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _0811AB14
- movs r0, 0
- b _0811AB1C
- .align 2, 0
-_0811AB0C: .4byte sub_811AB50
-_0811AB10: .4byte gTasks
-_0811AB14:
- adds r0, r2, 0
- bl DestroyTask
- movs r0, 0x1
-_0811AB1C:
- pop {r1}
- bx r1
- thumb_func_end sub_811AAE8
-
- thumb_func_start sub_811AB20
-sub_811AB20: @ 811AB20
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0811AB48 @ =sub_811AB50
- movs r1, 0x2
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0811AB4C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0xA]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0811AB48: .4byte sub_811AB50
-_0811AB4C: .4byte gTasks
- thumb_func_end sub_811AB20
-
- thumb_func_start sub_811AB50
-sub_811AB50: @ 811AB50
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0811AB80 @ =gUnknown_083FD794
- ldr r2, _0811AB84 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0811AB62:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0811AB62
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811AB80: .4byte gUnknown_083FD794
-_0811AB84: .4byte gTasks
- thumb_func_end sub_811AB50
-
- thumb_func_start sub_811AB88
-sub_811AB88: @ 811AB88
- push {r4,lr}
- adds r4, r0, 0
- bl sub_807DE10
- ldr r0, _0811ABB4 @ =gPlttBufferFaded
- ldr r1, _0811ABB8 @ =gPlttBufferUnfaded
- ldr r2, _0811ABBC @ =0x04000100
- bl CpuSet
- ldr r1, _0811ABC0 @ =gUnknown_083FD70C
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- cmp r0, 0
- bne _0811ABC4
- movs r0, 0x2
- strh r0, [r4, 0x8]
- movs r0, 0x1
- b _0811ABD2
- .align 2, 0
-_0811ABB4: .4byte gPlttBufferFaded
-_0811ABB8: .4byte gPlttBufferUnfaded
-_0811ABBC: .4byte 0x04000100
-_0811ABC0: .4byte gUnknown_083FD70C
-_0811ABC4:
- movs r1, 0x4
- bl CreateTask
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0
-_0811ABD2:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811AB88
-
- thumb_func_start sub_811ABD8
-sub_811ABD8: @ 811ABD8
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, _0811ABF8 @ =gUnknown_083FD70C
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _0811ABFC
- movs r0, 0
- b _0811AC04
- .align 2, 0
-_0811ABF8: .4byte gUnknown_083FD70C
-_0811ABFC:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0x1
-_0811AC04:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811ABD8
-
- thumb_func_start sub_811AC0C
-sub_811AC0C: @ 811AC0C
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, _0811AC30 @ =gBattleTransitionFuncs
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0
- bl CreateTask
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811AC30: .4byte gBattleTransitionFuncs
- thumb_func_end sub_811AC0C
-
- thumb_func_start sub_811AC34
-sub_811AC34: @ 811AC34
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0
- strh r0, [r4, 0x26]
- ldr r1, _0811AC60 @ =gBattleTransitionFuncs
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _0811AC58
- movs r0, 0x1
- strh r0, [r4, 0x26]
-_0811AC58:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811AC60: .4byte gBattleTransitionFuncs
- thumb_func_end sub_811AC34
-
- thumb_func_start sub_811AC64
-sub_811AC64: @ 811AC64
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- adds r4, r0, 0
- ldr r1, _0811AC98 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r1, r0, r1
- ldrh r2, [r1, 0x8]
- movs r3, 0x8
- ldrsh r0, [r1, r3]
- cmp r0, 0
- bne _0811AC9C
- adds r0, r2, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0
- movs r1, 0
- movs r2, 0x3
- movs r3, 0x2
- bl sub_811D4C8
- b _0811ACAC
- .align 2, 0
-_0811AC98: .4byte gTasks
-_0811AC9C:
- bl sub_811D52C
- lsls r0, 24
- cmp r0, 0
- beq _0811ACAC
- adds r0, r4, 0
- bl DestroyTask
-_0811ACAC:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_811AC64
-
- thumb_func_start sub_811ACB4
-sub_811ACB4: @ 811ACB4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0811ACE4 @ =gUnknown_083FD7A4
- ldr r2, _0811ACE8 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0811ACC6:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0811ACC6
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811ACE4: .4byte gUnknown_083FD7A4
-_0811ACE8: .4byte gTasks
- thumb_func_end sub_811ACB4
-
- thumb_func_start sub_811ACEC
-sub_811ACEC: @ 811ACEC
- ldr r2, _0811AD18 @ =REG_MOSAIC
- movs r1, 0
- strh r1, [r2]
- subs r2, 0x42
- ldrh r1, [r2]
- movs r3, 0x40
- orrs r1, r3
- strh r1, [r2]
- adds r2, 0x2
- ldrh r1, [r2]
- orrs r1, r3
- strh r1, [r2]
- adds r2, 0x2
- ldrh r1, [r2]
- orrs r1, r3
- strh r1, [r2]
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
- movs r0, 0x1
- bx lr
- .align 2, 0
-_0811AD18: .4byte REG_MOSAIC
- thumb_func_end sub_811ACEC
-
- thumb_func_start sub_811AD1C
-sub_811AD1C: @ 811AD1C
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- ldrh r0, [r4, 0xA]
- movs r1, 0xA
- ldrsh r2, [r4, r1]
- cmp r2, 0
- beq _0811AD32
- subs r0, 0x1
- strh r0, [r4, 0xA]
- b _0811AD70
-_0811AD32:
- movs r0, 0x4
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA
- bne _0811AD54
- movs r1, 0x1
- negs r1, r1
- str r2, [sp]
- adds r0, r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
-_0811AD54:
- ldr r2, _0811AD7C @ =REG_MOSAIC
- ldrh r0, [r4, 0xC]
- movs r1, 0xF
- ands r1, r0
- lsls r0, r1, 4
- adds r0, r1
- strh r0, [r2]
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0xE
- ble _0811AD70
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_0811AD70:
- movs r0, 0
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811AD7C: .4byte REG_MOSAIC
- thumb_func_end sub_811AD1C
-
- thumb_func_start sub_811AD80
-sub_811AD80: @ 811AD80
- push {lr}
- ldr r0, _0811ADA4 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0811AD9C
- ldr r0, _0811ADA8 @ =sub_811ACB4
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
-_0811AD9C:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0811ADA4: .4byte gPaletteFade
-_0811ADA8: .4byte sub_811ACB4
- thumb_func_end sub_811AD80
-
- thumb_func_start sub_811ADAC
-sub_811ADAC: @ 811ADAC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0811ADDC @ =gUnknown_083FD7B0
- ldr r2, _0811ADE0 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0811ADBE:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0811ADBE
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811ADDC: .4byte gUnknown_083FD7B0
-_0811ADE0: .4byte gTasks
- thumb_func_end sub_811ADAC
-
- thumb_func_start sub_811ADE4
-sub_811ADE4: @ 811ADE4
- push {r4,r5,lr}
- sub sp, 0x8
- adds r5, r0, 0
- bl sub_811D658
- bl dp12_8087EA4
- movs r0, 0x1
- negs r0, r0
- movs r4, 0
- str r4, [sp]
- movs r1, 0x4
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _0811AE54 @ =gUnknown_03005560
- ldr r1, _0811AE58 @ =0x0200c000
- movs r2, 0x14
- ldrsh r1, [r1, r2]
- str r4, [sp]
- movs r2, 0xA0
- str r2, [sp, 0x4]
- movs r2, 0
- movs r3, 0x2
- bl sub_811D6E8
- ldr r0, _0811AE5C @ =sub_811AEE0
- bl SetVBlankCallback
- ldr r0, _0811AE60 @ =sub_811AF18
- bl SetHBlankCallback
- ldr r3, _0811AE64 @ =0x04000208
- ldrh r2, [r3]
- strh r4, [r3]
- ldr r4, _0811AE68 @ =0x04000200
- ldrh r0, [r4]
- movs r1, 0x3
- orrs r0, r1
- strh r0, [r4]
- strh r2, [r3]
- ldr r2, _0811AE6C @ =REG_DISPSTAT
- ldrh r0, [r2]
- movs r1, 0x18
- orrs r0, r1
- strh r0, [r2]
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- movs r0, 0
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0811AE54: .4byte gUnknown_03005560
-_0811AE58: .4byte 0x0200c000
-_0811AE5C: .4byte sub_811AEE0
-_0811AE60: .4byte sub_811AF18
-_0811AE64: .4byte 0x04000208
-_0811AE68: .4byte 0x04000200
-_0811AE6C: .4byte REG_DISPSTAT
- thumb_func_end sub_811ADE4
-
- thumb_func_start sub_811AE70
-sub_811AE70: @ 811AE70
- push {r4,r5,lr}
- sub sp, 0x8
- ldr r4, _0811AED0 @ =0x0200c000
- ldrb r1, [r4]
- movs r1, 0
- strb r1, [r4]
- ldrh r1, [r0, 0xA]
- adds r1, 0x4
- strh r1, [r0, 0xA]
- ldrh r1, [r0, 0xC]
- adds r1, 0x8
- strh r1, [r0, 0xC]
- ldr r3, _0811AED4 @ =gUnknown_03004DE0
- movs r2, 0x14
- ldrsh r1, [r4, r2]
- movs r5, 0xA
- ldrsh r2, [r0, r5]
- movs r5, 0xC
- ldrsh r0, [r0, r5]
- str r0, [sp]
- movs r0, 0xA0
- str r0, [sp, 0x4]
- adds r0, r3, 0
- movs r3, 0x2
- bl sub_811D6E8
- ldr r0, _0811AED8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0811AEBE
- ldr r0, _0811AEDC @ =sub_811ADAC
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
-_0811AEBE:
- ldrb r0, [r4]
- adds r0, 0x1
- ldrb r1, [r4]
- strb r0, [r4]
- movs r0, 0
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0811AED0: .4byte 0x0200c000
-_0811AED4: .4byte gUnknown_03004DE0
-_0811AED8: .4byte gPaletteFade
-_0811AEDC: .4byte sub_811ADAC
- thumb_func_end sub_811AE70
-
- thumb_func_start sub_811AEE0
-sub_811AEE0: @ 811AEE0
- push {lr}
- bl sub_811D67C
- ldr r0, _0811AF08 @ =0x0200c000
- ldrb r0, [r0]
- cmp r0, 0
- beq _0811AF02
- ldr r1, _0811AF0C @ =0x040000d4
- ldr r0, _0811AF10 @ =gUnknown_03004DE0
- str r0, [r1]
- movs r2, 0xF0
- lsls r2, 3
- adds r0, r2
- str r0, [r1, 0x4]
- ldr r0, _0811AF14 @ =0x800000a0
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
-_0811AF02:
- pop {r0}
- bx r0
- .align 2, 0
-_0811AF08: .4byte 0x0200c000
-_0811AF0C: .4byte 0x040000d4
-_0811AF10: .4byte gUnknown_03004DE0
-_0811AF14: .4byte 0x800000a0
- thumb_func_end sub_811AEE0
-
- thumb_func_start sub_811AF18
-sub_811AF18: @ 811AF18
- ldr r1, _0811AF38 @ =gUnknown_03004DE0
- ldr r0, _0811AF3C @ =REG_VCOUNT
- ldrh r0, [r0]
- lsls r0, 1
- movs r2, 0xF0
- lsls r2, 3
- adds r1, r2
- adds r0, r1
- ldrh r1, [r0]
- ldr r0, _0811AF40 @ =REG_BG1HOFS
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- bx lr
- .align 2, 0
-_0811AF38: .4byte gUnknown_03004DE0
-_0811AF3C: .4byte REG_VCOUNT
-_0811AF40: .4byte REG_BG1HOFS
- thumb_func_end sub_811AF18
-
- thumb_func_start sub_811AF44
-sub_811AF44: @ 811AF44
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0811AF74 @ =gUnknown_083FD7B8
- ldr r2, _0811AF78 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0811AF56:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0811AF56
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811AF74: .4byte gUnknown_083FD7B8
-_0811AF78: .4byte gTasks
- thumb_func_end sub_811AF44
-
- thumb_func_start sub_811AF7C
-sub_811AF7C: @ 811AF7C
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- bl sub_811D658
- bl dp12_8087EA4
- movs r0, 0x1
- negs r0, r0
- movs r4, 0
- str r4, [sp]
- movs r1, 0x4
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _0811AFE4 @ =0x0200c000
- ldr r0, _0811AFE8 @ =gUnknown_03005560
- movs r2, 0x16
- ldrsh r1, [r1, r2]
- movs r2, 0xA0
- lsls r2, 1
- bl memset
- ldr r0, _0811AFEC @ =sub_811B08C
- bl SetVBlankCallback
- ldr r0, _0811AFF0 @ =sub_811B0C4
- bl SetHBlankCallback
- ldr r3, _0811AFF4 @ =0x04000208
- ldrh r2, [r3]
- strh r4, [r3]
- ldr r4, _0811AFF8 @ =0x04000200
- ldrh r0, [r4]
- movs r1, 0x3
- orrs r0, r1
- strh r0, [r4]
- strh r2, [r3]
- ldr r2, _0811AFFC @ =REG_DISPSTAT
- ldrh r0, [r2]
- movs r1, 0x18
- orrs r0, r1
- strh r0, [r2]
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- movs r0, 0
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0811AFE4: .4byte 0x0200c000
-_0811AFE8: .4byte gUnknown_03005560
-_0811AFEC: .4byte sub_811B08C
-_0811AFF0: .4byte sub_811B0C4
-_0811AFF4: .4byte 0x04000208
-_0811AFF8: .4byte 0x04000200
-_0811AFFC: .4byte REG_DISPSTAT
- thumb_func_end sub_811AF7C
-
- thumb_func_start sub_811B000
-sub_811B000: @ 811B000
- push {r4-r7,lr}
- ldr r2, _0811B07C @ =0x0200c000
- ldrb r1, [r2]
- movs r1, 0
- strb r1, [r2]
- ldrh r4, [r0, 0xA]
- ldrh r2, [r0, 0xC]
- lsls r3, r2, 16
- asrs r3, 24
- movs r5, 0x84
- lsls r5, 5
- adds r1, r4, r5
- strh r1, [r0, 0xA]
- movs r1, 0xC0
- lsls r1, 1
- adds r2, r1
- strh r2, [r0, 0xC]
- movs r5, 0
- lsls r7, r3, 16
-_0811B026:
- lsrs r0, r4, 8
- asrs r1, r7, 16
- bl Sin
- ldr r2, _0811B080 @ =gUnknown_03004DE0
- lsls r1, r5, 1
- adds r1, r2
- ldr r6, _0811B07C @ =0x0200c000
- ldrh r2, [r6, 0x16]
- adds r0, r2
- strh r0, [r1]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- movs r1, 0x84
- lsls r1, 5
- adds r0, r4, r1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r5, 0x9F
- bls _0811B026
- ldr r0, _0811B084 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0811B06A
- ldr r0, _0811B088 @ =sub_811AF44
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
-_0811B06A:
- ldrb r0, [r6]
- adds r0, 0x1
- ldrb r1, [r6]
- strb r0, [r6]
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B07C: .4byte 0x0200c000
-_0811B080: .4byte gUnknown_03004DE0
-_0811B084: .4byte gPaletteFade
-_0811B088: .4byte sub_811AF44
- thumb_func_end sub_811B000
-
- thumb_func_start sub_811B08C
-sub_811B08C: @ 811B08C
- push {lr}
- bl sub_811D67C
- ldr r0, _0811B0B4 @ =0x0200c000
- ldrb r0, [r0]
- cmp r0, 0
- beq _0811B0AE
- ldr r1, _0811B0B8 @ =0x040000d4
- ldr r0, _0811B0BC @ =gUnknown_03004DE0
- str r0, [r1]
- movs r2, 0xF0
- lsls r2, 3
- adds r0, r2
- str r0, [r1, 0x4]
- ldr r0, _0811B0C0 @ =0x800000a0
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
-_0811B0AE:
- pop {r0}
- bx r0
- .align 2, 0
-_0811B0B4: .4byte 0x0200c000
-_0811B0B8: .4byte 0x040000d4
-_0811B0BC: .4byte gUnknown_03004DE0
-_0811B0C0: .4byte 0x800000a0
- thumb_func_end sub_811B08C
-
- thumb_func_start sub_811B0C4
-sub_811B0C4: @ 811B0C4
- ldr r1, _0811B0E4 @ =gUnknown_03004DE0
- ldr r0, _0811B0E8 @ =REG_VCOUNT
- ldrh r0, [r0]
- lsls r0, 1
- movs r2, 0xF0
- lsls r2, 3
- adds r1, r2
- adds r0, r1
- ldrh r1, [r0]
- ldr r0, _0811B0EC @ =REG_BG1VOFS
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- bx lr
- .align 2, 0
-_0811B0E4: .4byte gUnknown_03004DE0
-_0811B0E8: .4byte REG_VCOUNT
-_0811B0EC: .4byte REG_BG1VOFS
- thumb_func_end sub_811B0C4
-
- thumb_func_start sub_811B0F0
-sub_811B0F0: @ 811B0F0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0811B120 @ =gUnknown_083FD7C0
- ldr r2, _0811B124 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0811B102:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0811B102
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811B120: .4byte gUnknown_083FD7C0
-_0811B124: .4byte gTasks
- thumb_func_end sub_811B0F0
-
- thumb_func_start sub_811B128
-sub_811B128: @ 811B128
- push {r4-r6,lr}
- sub sp, 0xC
- adds r4, r0, 0
- bl sub_811D658
- bl dp12_8087EA4
- movs r2, 0
- movs r3, 0x10
- strh r3, [r4, 0xA]
- strh r2, [r4, 0xC]
- strh r2, [r4, 0x10]
- movs r0, 0x80
- lsls r0, 7
- strh r0, [r4, 0x12]
- ldr r1, _0811B1BC @ =0x0200c000
- movs r0, 0x3F
- strh r0, [r1, 0x2]
- strh r2, [r1, 0x4]
- movs r0, 0xF0
- strh r0, [r1, 0x6]
- movs r0, 0xA0
- strh r0, [r1, 0x8]
- ldr r0, _0811B1C0 @ =0x00003f41
- strh r0, [r1, 0xE]
- lsls r3, 8
- strh r3, [r1, 0x10]
- movs r1, 0
- add r5, sp, 0x4
- add r6, sp, 0x8
- ldr r3, _0811B1C4 @ =gUnknown_03005560
- movs r2, 0xF0
-_0811B168:
- lsls r0, r1, 1
- adds r0, r3
- strh r2, [r0]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0x9F
- bls _0811B168
- ldr r0, _0811B1C8 @ =sub_811B520
- bl SetVBlankCallback
- adds r0, r5, 0
- adds r1, r6, 0
- bl sub_811D6A8
- mov r1, sp
- movs r0, 0
- strh r0, [r1]
- ldr r1, [sp, 0x4]
- ldr r2, _0811B1CC @ =0x01000400
- mov r0, sp
- bl CpuSet
- ldr r0, _0811B1D0 @ =gUnknown_083FBB88
- ldr r1, [sp, 0x8]
- movs r2, 0xB0
- lsls r2, 2
- bl CpuSet
- ldr r0, _0811B1D4 @ =gFieldEffectObjectPalette10
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0
- add sp, 0xC
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B1BC: .4byte 0x0200c000
-_0811B1C0: .4byte 0x00003f41
-_0811B1C4: .4byte gUnknown_03005560
-_0811B1C8: .4byte sub_811B520
-_0811B1CC: .4byte 0x01000400
-_0811B1D0: .4byte gUnknown_083FBB88
-_0811B1D4: .4byte gFieldEffectObjectPalette10
- thumb_func_end sub_811B128
-
- thumb_func_start sub_811B1D8
-sub_811B1D8: @ 811B1D8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x10
- adds r7, r0, 0
- ldr r5, _0811B260 @ =gUnknown_083FDB44
- add r1, sp, 0xC
- add r0, sp, 0x8
- bl sub_811D6A8
- movs r1, 0
- ldr r0, [sp, 0x8]
- mov r9, r0
- ldr r6, _0811B264 @ =gUnknown_03004DE0
- mov r8, r6
- movs r0, 0xF0
- lsls r0, 8
- mov r12, r0
-_0811B1FE:
- movs r0, 0
- lsls r3, r1, 16
- asrs r4, r3, 11
-_0811B204:
- lsls r2, r0, 16
- asrs r2, 16
- adds r1, r4, r2
- lsls r1, 1
- add r1, r9
- ldrh r0, [r5]
- mov r6, r12
- orrs r0, r6
- strh r0, [r1]
- adds r2, 0x1
- lsls r2, 16
- adds r5, 0x2
- lsrs r0, r2, 16
- asrs r2, 16
- cmp r2, 0x1D
- ble _0811B204
- movs r1, 0x80
- lsls r1, 9
- adds r0, r3, r1
- lsrs r1, r0, 16
- asrs r0, 16
- cmp r0, 0x13
- ble _0811B1FE
- movs r6, 0x10
- ldrsh r2, [r7, r6]
- movs r1, 0x12
- ldrsh r0, [r7, r1]
- str r0, [sp]
- movs r0, 0xA0
- str r0, [sp, 0x4]
- mov r0, r8
- movs r1, 0
- movs r3, 0x84
- bl sub_811D6E8
- ldrh r0, [r7, 0x8]
- adds r0, 0x1
- strh r0, [r7, 0x8]
- movs r0, 0x1
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B260: .4byte gUnknown_083FDB44
-_0811B264: .4byte gUnknown_03004DE0
- thumb_func_end sub_811B1D8
-
- thumb_func_start sub_811B268
-sub_811B268: @ 811B268
- push {r4,lr}
- sub sp, 0x8
- adds r2, r0, 0
- ldr r1, _0811B2E8 @ =0x0200c000
- ldrb r0, [r1]
- movs r0, 0
- strb r0, [r1]
- ldrh r3, [r2, 0xE]
- movs r4, 0xE
- ldrsh r0, [r2, r4]
- adds r4, r1, 0
- cmp r0, 0
- beq _0811B28C
- subs r0, r3, 0x1
- strh r0, [r2, 0xE]
- lsls r0, 16
- cmp r0, 0
- bne _0811B296
-_0811B28C:
- ldrh r0, [r2, 0xC]
- adds r0, 0x1
- strh r0, [r2, 0xC]
- movs r0, 0x2
- strh r0, [r2, 0xE]
-_0811B296:
- ldrh r0, [r2, 0xA]
- lsls r0, 8
- ldrh r1, [r2, 0xC]
- orrs r0, r1
- strh r0, [r4, 0x10]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0xF
- ble _0811B2AE
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
-_0811B2AE:
- ldrh r0, [r2, 0x10]
- adds r0, 0x8
- strh r0, [r2, 0x10]
- ldr r0, _0811B2EC @ =0xffffff00
- adds r1, r0, 0
- ldrh r3, [r2, 0x12]
- adds r1, r3
- strh r1, [r2, 0x12]
- ldr r0, _0811B2F0 @ =gUnknown_03004DE0
- movs r3, 0x10
- ldrsh r2, [r2, r3]
- lsls r1, 16
- asrs r1, 24
- str r1, [sp]
- movs r1, 0xA0
- str r1, [sp, 0x4]
- movs r1, 0
- movs r3, 0x84
- bl sub_811D6E8
- ldrb r0, [r4]
- adds r0, 0x1
- ldrb r1, [r4]
- strb r0, [r4]
- movs r0, 0
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B2E8: .4byte 0x0200c000
-_0811B2EC: .4byte 0xffffff00
-_0811B2F0: .4byte gUnknown_03004DE0
- thumb_func_end sub_811B268
-
- thumb_func_start sub_811B2F4
-sub_811B2F4: @ 811B2F4
- push {r4,r5,lr}
- sub sp, 0x8
- adds r3, r0, 0
- ldr r1, _0811B374 @ =0x0200c000
- ldrb r0, [r1]
- movs r0, 0
- strb r0, [r1]
- ldrh r2, [r3, 0xE]
- movs r4, 0xE
- ldrsh r0, [r3, r4]
- adds r4, r1, 0
- cmp r0, 0
- beq _0811B318
- subs r0, r2, 0x1
- strh r0, [r3, 0xE]
- lsls r0, 16
- cmp r0, 0
- bne _0811B322
-_0811B318:
- ldrh r0, [r3, 0xA]
- subs r0, 0x1
- strh r0, [r3, 0xA]
- movs r0, 0x2
- strh r0, [r3, 0xE]
-_0811B322:
- ldrh r0, [r3, 0xA]
- lsls r1, r0, 8
- ldrh r2, [r3, 0xC]
- orrs r1, r2
- strh r1, [r4, 0x10]
- lsls r0, 16
- cmp r0, 0
- bne _0811B338
- ldrh r0, [r3, 0x8]
- adds r0, 0x1
- strh r0, [r3, 0x8]
-_0811B338:
- ldrh r0, [r3, 0x10]
- adds r0, 0x8
- strh r0, [r3, 0x10]
- ldr r5, _0811B378 @ =0xffffff00
- adds r1, r5, 0
- ldrh r0, [r3, 0x12]
- adds r1, r0
- strh r1, [r3, 0x12]
- ldr r0, _0811B37C @ =gUnknown_03004DE0
- movs r5, 0x10
- ldrsh r2, [r3, r5]
- lsls r1, 16
- asrs r1, 24
- str r1, [sp]
- movs r1, 0xA0
- str r1, [sp, 0x4]
- movs r1, 0
- movs r3, 0x84
- bl sub_811D6E8
- ldrb r0, [r4]
- adds r0, 0x1
- ldrb r1, [r4]
- strb r0, [r4]
- movs r0, 0
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B374: .4byte 0x0200c000
-_0811B378: .4byte 0xffffff00
-_0811B37C: .4byte gUnknown_03004DE0
- thumb_func_end sub_811B2F4
-
- thumb_func_start sub_811B380
-sub_811B380: @ 811B380
- push {r4-r7,lr}
- sub sp, 0x8
- adds r4, r0, 0
- ldr r5, _0811B3E0 @ =0x0200c000
- ldrb r0, [r5]
- movs r7, 0
- strb r7, [r5]
- ldrh r0, [r4, 0x10]
- adds r0, 0x8
- strh r0, [r4, 0x10]
- ldr r0, _0811B3E4 @ =0xffffff00
- adds r1, r0, 0
- ldrh r3, [r4, 0x12]
- adds r1, r3
- strh r1, [r4, 0x12]
- ldr r0, _0811B3E8 @ =gUnknown_03004DE0
- movs r3, 0x10
- ldrsh r2, [r4, r3]
- lsls r1, 16
- asrs r1, 24
- str r1, [sp]
- movs r6, 0xA0
- str r6, [sp, 0x4]
- movs r1, 0
- movs r3, 0x84
- bl sub_811D6E8
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bgt _0811B3CE
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- strh r6, [r4, 0xA]
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r4, 0xC]
- strh r7, [r4, 0xE]
-_0811B3CE:
- ldrb r0, [r5]
- adds r0, 0x1
- ldrb r1, [r5]
- strb r0, [r5]
- movs r0, 0
- add sp, 0x8
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B3E0: .4byte 0x0200c000
-_0811B3E4: .4byte 0xffffff00
-_0811B3E8: .4byte gUnknown_03004DE0
- thumb_func_end sub_811B380
-
- thumb_func_start sub_811B3EC
-sub_811B3EC: @ 811B3EC
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _0811B488 @ =0x0200c000
- ldrb r1, [r0]
- movs r3, 0
- strb r3, [r0]
- ldrh r2, [r4, 0xC]
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- ldr r0, _0811B48C @ =0x000003ff
- cmp r1, r0
- bgt _0811B40A
- adds r0, r2, 0
- adds r0, 0x80
- strh r0, [r4, 0xC]
-_0811B40A:
- ldrh r1, [r4, 0xA]
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _0811B426
- ldrh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 24
- subs r0, r1, r0
- strh r0, [r4, 0xA]
- lsls r0, 16
- cmp r0, 0
- bge _0811B426
- strh r3, [r4, 0xA]
-_0811B426:
- ldr r0, _0811B490 @ =gUnknown_03004DE0
- movs r1, 0xA
- ldrsh r3, [r4, r1]
- movs r1, 0x78
- movs r2, 0x50
- bl sub_811D764
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _0811B462
- ldr r1, _0811B494 @ =0x040000b0
- ldrh r2, [r1, 0xA]
- ldr r0, _0811B498 @ =0x0000c5ff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r2, [r1, 0xA]
- ldr r0, _0811B49C @ =0x00007fff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r0, [r1, 0xA]
- bl sub_811D6D4
- ldr r0, _0811B4A0 @ =sub_811B0F0
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
-_0811B462:
- ldrh r1, [r4, 0xE]
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _0811B476
- adds r0, r1, 0x1
- strh r0, [r4, 0xE]
- ldr r0, _0811B4A4 @ =sub_811B54C
- bl SetVBlankCallback
-_0811B476:
- ldr r0, _0811B488 @ =0x0200c000
- ldrb r1, [r0]
- adds r1, 0x1
- ldrb r2, [r0]
- strb r1, [r0]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B488: .4byte 0x0200c000
-_0811B48C: .4byte 0x000003ff
-_0811B490: .4byte gUnknown_03004DE0
-_0811B494: .4byte 0x040000b0
-_0811B498: .4byte 0x0000c5ff
-_0811B49C: .4byte 0x00007fff
-_0811B4A0: .4byte sub_811B0F0
-_0811B4A4: .4byte sub_811B54C
- thumb_func_end sub_811B3EC
-
- thumb_func_start sub_811B4A8
-sub_811B4A8: @ 811B4A8
- push {lr}
- ldr r1, _0811B500 @ =0x040000b0
- ldrh r2, [r1, 0xA]
- ldr r0, _0811B504 @ =0x0000c5ff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r2, [r1, 0xA]
- ldr r0, _0811B508 @ =0x00007fff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r0, [r1, 0xA]
- bl sub_811D67C
- ldr r2, _0811B50C @ =0x0200c000
- ldrb r0, [r2]
- cmp r0, 0
- beq _0811B4DE
- ldr r1, _0811B510 @ =0x040000d4
- ldr r0, _0811B514 @ =gUnknown_03004DE0
- str r0, [r1]
- movs r3, 0xF0
- lsls r3, 3
- adds r0, r3
- str r0, [r1, 0x4]
- ldr r0, _0811B518 @ =0x800000a0
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
-_0811B4DE:
- ldr r1, _0811B51C @ =REG_WININ
- ldrh r0, [r2, 0x2]
- strh r0, [r1]
- adds r1, 0x2
- ldrh r0, [r2, 0x4]
- strh r0, [r1]
- subs r1, 0x6
- ldrh r0, [r2, 0x8]
- strh r0, [r1]
- adds r1, 0xC
- ldrh r0, [r2, 0xE]
- strh r0, [r1]
- adds r1, 0x2
- ldrh r0, [r2, 0x10]
- strh r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_0811B500: .4byte 0x040000b0
-_0811B504: .4byte 0x0000c5ff
-_0811B508: .4byte 0x00007fff
-_0811B50C: .4byte 0x0200c000
-_0811B510: .4byte 0x040000d4
-_0811B514: .4byte gUnknown_03004DE0
-_0811B518: .4byte 0x800000a0
-_0811B51C: .4byte REG_WININ
- thumb_func_end sub_811B4A8
-
- thumb_func_start sub_811B520
-sub_811B520: @ 811B520
- push {lr}
- bl sub_811B4A8
- ldr r1, _0811B53C @ =0x040000b0
- ldr r0, _0811B540 @ =gUnknown_03005560
- str r0, [r1]
- ldr r0, _0811B544 @ =REG_BG0HOFS
- str r0, [r1, 0x4]
- ldr r0, _0811B548 @ =0xa2400001
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- pop {r0}
- bx r0
- .align 2, 0
-_0811B53C: .4byte 0x040000b0
-_0811B540: .4byte gUnknown_03005560
-_0811B544: .4byte REG_BG0HOFS
-_0811B548: .4byte 0xa2400001
- thumb_func_end sub_811B520
-
- thumb_func_start sub_811B54C
-sub_811B54C: @ 811B54C
- push {lr}
- bl sub_811B4A8
- ldr r1, _0811B568 @ =0x040000b0
- ldr r0, _0811B56C @ =gUnknown_03005560
- str r0, [r1]
- ldr r0, _0811B570 @ =REG_WIN0H
- str r0, [r1, 0x4]
- ldr r0, _0811B574 @ =0xa2400001
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- pop {r0}
- bx r0
- .align 2, 0
-_0811B568: .4byte 0x040000b0
-_0811B56C: .4byte gUnknown_03005560
-_0811B570: .4byte REG_WIN0H
-_0811B574: .4byte 0xa2400001
- thumb_func_end sub_811B54C
-
- thumb_func_start sub_811B578
-sub_811B578: @ 811B578
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0811B5A8 @ =gUnknown_083FD7D8
- ldr r2, _0811B5AC @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0811B58A:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0811B58A
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811B5A8: .4byte gUnknown_083FD7D8
-_0811B5AC: .4byte gTasks
- thumb_func_end sub_811B578
-
- thumb_func_start sub_811B5B0
-sub_811B5B0: @ 811B5B0
- push {r4,lr}
- sub sp, 0xC
- adds r4, r0, 0
- add r0, sp, 0x4
- add r1, sp, 0x8
- bl sub_811D6A8
- ldr r0, _0811B5F0 @ =gUnknown_083FC108
- ldr r1, [sp, 0x8]
- movs r2, 0x20
- bl CpuSet
- movs r0, 0
- str r0, [sp]
- ldr r1, [sp, 0x4]
- ldr r2, _0811B5F4 @ =0x05000200
- mov r0, sp
- bl CpuSet
- ldr r0, _0811B5F8 @ =gFieldEffectObjectPalette10
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0
- add sp, 0xC
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B5F0: .4byte gUnknown_083FC108
-_0811B5F4: .4byte 0x05000200
-_0811B5F8: .4byte gFieldEffectObjectPalette10
- thumb_func_end sub_811B5B0
-
- thumb_func_start sub_811B5FC
-sub_811B5FC: @ 811B5FC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- adds r7, r0, 0
- ldr r1, _0811B67C @ =gUnknown_083FD7E4
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- add r4, sp, 0x4
- ldr r1, _0811B680 @ =gUnknown_083FD7E8
- adds r0, r4, 0
- movs r2, 0xA
- bl memcpy
- bl Random
- movs r5, 0x1
- ands r5, r0
- movs r1, 0
- mov r8, r4
- ldr r6, _0811B684 @ =gUnknown_0202FF84
-_0811B62A:
- lsls r5, 16
- asrs r5, 16
- lsls r0, r5, 1
- add r0, sp
- movs r2, 0
- ldrsh r0, [r0, r2]
- str r0, [r6]
- lsls r4, r1, 16
- asrs r4, 16
- lsls r0, r4, 5
- adds r0, 0x10
- str r0, [r6, 0x4]
- str r5, [r6, 0x8]
- lsls r0, r4, 1
- add r0, r8
- movs r1, 0
- ldrsh r0, [r0, r1]
- str r0, [r6, 0xC]
- movs r0, 0x2D
- bl FieldEffectStart
- adds r4, 0x1
- lsls r4, 16
- movs r0, 0x1
- eors r5, r0
- lsls r5, 16
- lsrs r5, 16
- lsrs r1, r4, 16
- asrs r4, 16
- cmp r4, 0x4
- ble _0811B62A
- ldrh r0, [r7, 0x8]
- adds r0, 0x1
- strh r0, [r7, 0x8]
- movs r0, 0
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B67C: .4byte gUnknown_083FD7E4
-_0811B680: .4byte gUnknown_083FD7E8
-_0811B684: .4byte gUnknown_0202FF84
- thumb_func_end sub_811B5FC
-
- thumb_func_start sub_811B688
-sub_811B688: @ 811B688
- push {lr}
- movs r0, 0x2D
- bl FieldEffectActiveListContains
- lsls r0, 24
- cmp r0, 0
- bne _0811B6A8
- bl sub_811D6D4
- ldr r0, _0811B6B0 @ =sub_811B578
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
-_0811B6A8:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0811B6B0: .4byte sub_811B578
- thumb_func_end sub_811B688
-
- thumb_func_start FldEff_Pokeball
-FldEff_Pokeball: @ 811B6B4
- push {r4,r5,lr}
- ldr r0, _0811B710 @ =gSpriteTemplate_83FD98C
- ldr r5, _0811B714 @ =gUnknown_0202FF84
- movs r2, 0
- ldrsh r1, [r5, r2]
- movs r3, 0x4
- ldrsh r2, [r5, r3]
- movs r3, 0
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0811B718 @ =gSprites
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- adds r4, r1
- ldrb r1, [r4, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- strb r0, [r4, 0x5]
- 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, [r5, 0x8]
- strh r0, [r4, 0x2E]
- ldr r0, [r5, 0xC]
- strh r0, [r4, 0x30]
- ldr r0, _0811B71C @ =0x0000ffff
- strh r0, [r4, 0x32]
- adds r0, r4, 0
- bl InitSpriteAffineAnim
- ldrb r1, [r5, 0x8]
- adds r0, r4, 0
- bl StartSpriteAffineAnim
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B710: .4byte gSpriteTemplate_83FD98C
-_0811B714: .4byte gUnknown_0202FF84
-_0811B718: .4byte gSprites
-_0811B71C: .4byte 0x0000ffff
- thumb_func_end FldEff_Pokeball
-
- thumb_func_start sub_811B720
-sub_811B720: @ 811B720
- push {r4-r6,lr}
- sub sp, 0x4
- adds r4, r0, 0
- ldr r1, _0811B740 @ =gUnknown_083FD7F2
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- ldrh r1, [r4, 0x30]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _0811B744
- subs r0, r1, 0x1
- strh r0, [r4, 0x30]
- b _0811B7D6
- .align 2, 0
-_0811B740: .4byte gUnknown_083FD7F2
-_0811B744:
- ldrh r0, [r4, 0x20]
- lsls r1, r0, 16
- lsrs r0, r1, 16
- cmp r0, 0xF0
- bhi _0811B7B2
- asrs r0, r1, 19
- lsls r0, 16
- ldrh r1, [r4, 0x22]
- lsls r1, 16
- asrs r1, 19
- lsls r1, 16
- lsrs r1, 16
- lsrs r2, r0, 16
- asrs r5, r0, 16
- movs r3, 0x32
- ldrsh r0, [r4, r3]
- cmp r5, r0
- beq _0811B7B2
- strh r2, [r4, 0x32]
- ldr r0, _0811B7E0 @ =REG_BG0CNT
- ldrh r2, [r0]
- lsrs r2, 8
- movs r0, 0x1F
- ands r2, r0
- lsls r2, 11
- movs r0, 0xC0
- lsls r0, 19
- adds r2, r0
- lsls r1, 16
- asrs r1, 16
- subs r0, r1, 0x2
- lsls r0, 5
- adds r0, r5
- lsls r0, 1
- adds r0, r2
- ldr r6, _0811B7E4 @ =0x0000f001
- adds r3, r6, 0
- strh r3, [r0]
- subs r0, r1, 0x1
- lsls r0, 5
- adds r0, r5
- lsls r0, 1
- adds r0, r2
- strh r3, [r0]
- lsls r0, r1, 5
- adds r0, r5
- lsls r0, 1
- adds r0, r2
- strh r3, [r0]
- adds r1, 0x1
- lsls r1, 5
- adds r1, r5
- lsls r1, 1
- adds r1, r2
- strh r3, [r1]
-_0811B7B2:
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- lsls r0, 1
- add r0, sp
- ldrh r0, [r0]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- adds r0, 0xF
- lsls r0, 16
- movs r1, 0x87
- lsls r1, 17
- cmp r0, r1
- bls _0811B7D6
- adds r0, r4, 0
- movs r1, 0x2D
- bl FieldEffectStop
-_0811B7D6:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0811B7E0: .4byte REG_BG0CNT
-_0811B7E4: .4byte 0x0000f001
- thumb_func_end sub_811B720
-
- thumb_func_start sub_811B7E8
-sub_811B7E8: @ 811B7E8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0811B818 @ =gUnknown_083FD7F8
- ldr r2, _0811B81C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0811B7FA:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0811B7FA
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811B818: .4byte gUnknown_083FD7F8
-_0811B81C: .4byte gTasks
- thumb_func_end sub_811B7E8
-
- thumb_func_start sub_811B820
-sub_811B820: @ 811B820
- push {r4,lr}
- adds r4, r0, 0
- bl sub_811D658
- bl dp12_8087EA4
- ldr r1, _0811B870 @ =0x0200c000
- movs r0, 0
- strh r0, [r1, 0x2]
- movs r0, 0x3F
- strh r0, [r1, 0x4]
- ldr r0, _0811B874 @ =0x0000f0f1
- strh r0, [r1, 0x6]
- movs r0, 0xA0
- strh r0, [r1, 0x8]
- movs r1, 0
- ldr r3, _0811B878 @ =gUnknown_03005560
- ldr r2, _0811B87C @ =0x0000f3f4
-_0811B844:
- lsls r0, r1, 1
- adds r0, r3
- strh r2, [r0]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0x9F
- bls _0811B844
- ldr r0, _0811B880 @ =sub_811BC2C
- bl SetVBlankCallback
- ldr r1, _0811B870 @ =0x0200c000
- movs r0, 0x78
- strh r0, [r1, 0x2C]
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B870: .4byte 0x0200c000
-_0811B874: .4byte 0x0000f0f1
-_0811B878: .4byte gUnknown_03005560
-_0811B87C: .4byte 0x0000f3f4
-_0811B880: .4byte sub_811BC2C
- thumb_func_end sub_811B820
-
- thumb_func_start sub_811B884
-sub_811B884: @ 811B884
- push {r4-r6,lr}
- sub sp, 0xC
- adds r6, r0, 0
- ldr r4, _0811B904 @ =0x0200c000
- ldrb r0, [r4]
- movs r0, 0
- strb r0, [r4]
- adds r0, r4, 0
- adds r0, 0x24
- movs r1, 0x2C
- ldrsh r3, [r4, r1]
- movs r1, 0x1
- negs r1, r1
- str r1, [sp]
- movs r1, 0x1
- str r1, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r1, 0x78
- movs r2, 0x50
- bl sub_811D8FC
- ldr r5, _0811B908 @ =gUnknown_03004DE0
-_0811B8B0:
- movs r3, 0x2A
- ldrsh r2, [r4, r3]
- lsls r2, 1
- adds r2, r5
- ldrh r0, [r4, 0x28]
- adds r0, 0x1
- movs r3, 0xF0
- lsls r3, 7
- adds r1, r3, 0
- orrs r0, r1
- strh r0, [r2]
- adds r0, r4, 0
- adds r0, 0x24
- movs r1, 0x1
- movs r2, 0x1
- bl sub_811D978
- lsls r0, 24
- cmp r0, 0
- beq _0811B8B0
- ldr r2, _0811B904 @ =0x0200c000
- ldrh r0, [r2, 0x2C]
- adds r0, 0x10
- strh r0, [r2, 0x2C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xEF
- ble _0811B8F2
- movs r0, 0
- strh r0, [r2, 0x2E]
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- strh r0, [r6, 0x8]
-_0811B8F2:
- ldrb r0, [r2]
- adds r0, 0x1
- ldrb r1, [r2]
- strb r0, [r2]
- movs r0, 0
- add sp, 0xC
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B904: .4byte 0x0200c000
-_0811B908: .4byte gUnknown_03004DE0
- thumb_func_end sub_811B884
-
- thumb_func_start sub_811B90C
-sub_811B90C: @ 811B90C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- adds r7, r0, 0
- add r1, sp, 0xC
- movs r0, 0
- strb r0, [r1]
- ldr r4, _0811B988 @ =0x0200c000
- ldrb r0, [r4]
- movs r0, 0
- strb r0, [r4]
- adds r0, r4, 0
- adds r0, 0x24
- movs r2, 0x2E
- ldrsh r1, [r4, r2]
- str r1, [sp]
- movs r1, 0x1
- str r1, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r1, 0x78
- movs r2, 0x50
- movs r3, 0xF0
- bl sub_811D8FC
- adds r6, r4, 0
- ldr r5, _0811B98C @ =gUnknown_03004DE0
- mov r8, r5
- add r5, sp, 0xC
-_0811B946:
- movs r1, 0x78
- ldrh r0, [r4, 0x28]
- adds r0, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0x4F
- ble _0811B95C
- ldrh r1, [r4, 0x28]
- movs r3, 0xF0
-_0811B95C:
- movs r0, 0x2A
- ldrsh r2, [r4, r0]
- lsls r2, 1
- add r2, r8
- lsls r1, 16
- asrs r1, 8
- lsls r0, r3, 16
- asrs r3, r0, 16
- orrs r3, r1
- strh r3, [r2]
- ldrb r0, [r5]
- cmp r0, 0
- bne _0811B990
- adds r0, r4, 0
- adds r0, 0x24
- movs r1, 0x1
- movs r2, 0x1
- bl sub_811D978
- strb r0, [r5]
- b _0811B946
- .align 2, 0
-_0811B988: .4byte 0x0200c000
-_0811B98C: .4byte gUnknown_03004DE0
-_0811B990:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x8
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r1, r0, 16
- cmp r1, 0x9F
- ble _0811B9AA
- movs r0, 0xF0
- strh r0, [r4, 0x2C]
- ldrh r0, [r7, 0x8]
- adds r0, 0x1
- strh r0, [r7, 0x8]
- b _0811B9D0
-_0811B9AA:
- movs r2, 0x2A
- ldrsh r0, [r4, r2]
- cmp r0, r1
- bge _0811B9D0
- ldr r4, _0811B9E8 @ =gUnknown_03004DE0
- ldr r2, _0811B9EC @ =0x0200c000
-_0811B9B6:
- ldrh r0, [r2, 0x2A]
- adds r0, 0x1
- strh r0, [r2, 0x2A]
- lsls r0, 16
- asrs r0, 15
- adds r0, r4
- strh r3, [r0]
- movs r5, 0x2A
- ldrsh r1, [r2, r5]
- movs r5, 0x2E
- ldrsh r0, [r2, r5]
- cmp r1, r0
- blt _0811B9B6
-_0811B9D0:
- ldrb r0, [r6]
- adds r0, 0x1
- ldrb r1, [r6]
- strb r0, [r6]
- movs r0, 0
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B9E8: .4byte gUnknown_03004DE0
-_0811B9EC: .4byte 0x0200c000
- thumb_func_end sub_811B90C
-
- thumb_func_start sub_811B9F0
-sub_811B9F0: @ 811B9F0
- push {r4-r6,lr}
- sub sp, 0xC
- adds r6, r0, 0
- ldr r4, _0811BA68 @ =0x0200c000
- ldrb r0, [r4]
- movs r0, 0
- strb r0, [r4]
- adds r0, r4, 0
- adds r0, 0x24
- movs r1, 0x2C
- ldrsh r3, [r4, r1]
- movs r1, 0xA0
- str r1, [sp]
- movs r1, 0x1
- str r1, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r1, 0x78
- movs r2, 0x50
- bl sub_811D8FC
- ldr r5, _0811BA6C @ =gUnknown_03004DE0
-_0811BA1A:
- movs r0, 0x2A
- ldrsh r2, [r4, r0]
- lsls r2, 1
- adds r2, r5
- ldrh r0, [r4, 0x28]
- lsls r0, 8
- movs r1, 0xF0
- orrs r0, r1
- strh r0, [r2]
- adds r0, r4, 0
- adds r0, 0x24
- movs r1, 0x1
- movs r2, 0x1
- bl sub_811D978
- lsls r0, 24
- cmp r0, 0
- beq _0811BA1A
- ldr r2, _0811BA68 @ =0x0200c000
- ldrh r0, [r2, 0x2C]
- subs r0, 0x10
- strh r0, [r2, 0x2C]
- lsls r0, 16
- cmp r0, 0
- bgt _0811BA56
- movs r0, 0xA0
- strh r0, [r2, 0x2E]
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- strh r0, [r6, 0x8]
-_0811BA56:
- ldrb r0, [r2]
- adds r0, 0x1
- ldrb r1, [r2]
- strb r0, [r2]
- movs r0, 0
- add sp, 0xC
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0811BA68: .4byte 0x0200c000
-_0811BA6C: .4byte gUnknown_03004DE0
- thumb_func_end sub_811B9F0
-
- thumb_func_start sub_811BA70
-sub_811BA70: @ 811BA70
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- mov r8, r0
- add r1, sp, 0xC
- movs r0, 0
- strb r0, [r1]
- ldr r4, _0811BAF0 @ =0x0200c000
- ldrb r0, [r4]
- movs r0, 0
- strb r0, [r4]
- adds r0, r4, 0
- adds r0, 0x24
- movs r2, 0x2E
- ldrsh r1, [r4, r2]
- str r1, [sp]
- movs r1, 0x1
- str r1, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r1, 0x78
- movs r2, 0x50
- movs r3, 0
- bl sub_811D8FC
- ldr r3, _0811BAF4 @ =gUnknown_03004DE0
- mov r9, r3
- mov r10, r4
- add r6, sp, 0xC
-_0811BAAE:
- movs r5, 0x2A
- ldrsh r0, [r4, r5]
- lsls r0, 1
- mov r7, r9
- adds r5, r0, r7
- ldrb r1, [r5]
- ldrh r2, [r4, 0x28]
- adds r3, r2, 0
- movs r7, 0x2E
- ldrsh r0, [r4, r7]
- cmp r0, 0x50
- bgt _0811BACA
- movs r2, 0x78
- adds r1, r3, 0
-_0811BACA:
- lsls r0, r2, 16
- asrs r0, 8
- lsls r1, 16
- asrs r1, 16
- orrs r1, r0
- movs r3, 0
- strh r1, [r5]
- ldrb r0, [r6]
- cmp r0, 0
- bne _0811BAF8
- adds r0, r4, 0
- adds r0, 0x24
- movs r1, 0x1
- movs r2, 0x1
- bl sub_811D978
- strb r0, [r6]
- b _0811BAAE
- .align 2, 0
-_0811BAF0: .4byte 0x0200c000
-_0811BAF4: .4byte gUnknown_03004DE0
-_0811BAF8:
- ldrh r0, [r4, 0x2E]
- subs r0, 0x8
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r2, r0, 16
- cmp r2, 0
- bgt _0811BB12
- strh r3, [r4, 0x2C]
- mov r1, r8
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _0811BB3A
-_0811BB12:
- movs r3, 0x2A
- ldrsh r0, [r4, r3]
- cmp r0, r2
- ble _0811BB3A
- ldr r4, _0811BB58 @ =gUnknown_03004DE0
- ldr r2, _0811BB5C @ =0x0200c000
- adds r3, r1, 0
-_0811BB20:
- ldrh r0, [r2, 0x2A]
- subs r0, 0x1
- strh r0, [r2, 0x2A]
- lsls r0, 16
- asrs r0, 15
- adds r0, r4
- strh r3, [r0]
- movs r5, 0x2A
- ldrsh r1, [r2, r5]
- movs r7, 0x2E
- ldrsh r0, [r2, r7]
- cmp r1, r0
- bgt _0811BB20
-_0811BB3A:
- mov r1, r10
- ldrb r0, [r1]
- adds r0, 0x1
- ldrb r1, [r1]
- mov r2, r10
- strb r0, [r2]
- movs r0, 0
- 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
-_0811BB58: .4byte gUnknown_03004DE0
-_0811BB5C: .4byte 0x0200c000
- thumb_func_end sub_811BA70
-
- thumb_func_start sub_811BB60
-sub_811BB60: @ 811BB60
- push {r4-r6,lr}
- sub sp, 0xC
- adds r6, r0, 0
- ldr r4, _0811BBE4 @ =0x0200c000
- ldrb r0, [r4]
- movs r1, 0
- strb r1, [r4]
- adds r0, r4, 0
- adds r0, 0x24
- movs r2, 0x2C
- ldrsh r3, [r4, r2]
- str r1, [sp]
- movs r1, 0x1
- str r1, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r1, 0x78
- movs r2, 0x50
- bl sub_811D8FC
- ldr r5, _0811BBE8 @ =gUnknown_03004DE0
-_0811BB88:
- movs r2, 0x78
- ldrh r3, [r4, 0x28]
- movs r1, 0x28
- ldrsh r0, [r4, r1]
- cmp r0, 0x77
- ble _0811BB98
- movs r2, 0
- movs r3, 0xF0
-_0811BB98:
- movs r0, 0x2A
- ldrsh r1, [r4, r0]
- lsls r1, 1
- adds r1, r5
- lsls r2, 8
- lsls r0, r3, 16
- asrs r0, 16
- orrs r0, r2
- strh r0, [r1]
- adds r0, r4, 0
- adds r0, 0x24
- movs r1, 0x1
- movs r2, 0x1
- bl sub_811D978
- lsls r0, 24
- cmp r0, 0
- beq _0811BB88
- ldr r2, _0811BBE4 @ =0x0200c000
- ldrh r0, [r2, 0x2C]
- adds r0, 0x10
- strh r0, [r2, 0x2C]
- movs r1, 0x28
- ldrsh r0, [r2, r1]
- cmp r0, 0x78
- ble _0811BBD2
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- strh r0, [r6, 0x8]
-_0811BBD2:
- ldrb r0, [r2]
- adds r0, 0x1
- ldrb r1, [r2]
- strb r0, [r2]
- movs r0, 0
- add sp, 0xC
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0811BBE4: .4byte 0x0200c000
-_0811BBE8: .4byte gUnknown_03004DE0
- thumb_func_end sub_811BB60
-
- thumb_func_start sub_811BBEC
-sub_811BBEC: @ 811BBEC
- push {lr}
- ldr r1, _0811BC1C @ =0x040000b0
- ldrh r2, [r1, 0xA]
- ldr r0, _0811BC20 @ =0x0000c5ff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r2, [r1, 0xA]
- ldr r0, _0811BC24 @ =0x00007fff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r0, [r1, 0xA]
- bl sub_811D6D4
- ldr r0, _0811BC28 @ =sub_811B7E8
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0811BC1C: .4byte 0x040000b0
-_0811BC20: .4byte 0x0000c5ff
-_0811BC24: .4byte 0x00007fff
-_0811BC28: .4byte sub_811B7E8
- thumb_func_end sub_811BBEC
-
- thumb_func_start sub_811BC2C
-sub_811BC2C: @ 811BC2C
- push {r4,lr}
- ldr r4, _0811BC94 @ =0x040000b0
- ldrh r1, [r4, 0xA]
- ldr r0, _0811BC98 @ =0x0000c5ff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r1, [r4, 0xA]
- ldr r0, _0811BC9C @ =0x00007fff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xA]
- bl sub_811D67C
- ldr r2, _0811BCA0 @ =0x0200c000
- ldrb r0, [r2]
- cmp r0, 0
- beq _0811BC62
- ldr r1, _0811BCA4 @ =0x040000d4
- ldr r0, _0811BCA8 @ =gUnknown_03004DE0
- str r0, [r1]
- movs r3, 0xF0
- lsls r3, 3
- adds r0, r3
- str r0, [r1, 0x4]
- ldr r0, _0811BCAC @ =0x800000a0
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
-_0811BC62:
- ldr r1, _0811BCB0 @ =REG_WININ
- ldrh r0, [r2, 0x2]
- strh r0, [r1]
- adds r1, 0x2
- ldrh r0, [r2, 0x4]
- strh r0, [r1]
- subs r1, 0x6
- ldrh r0, [r2, 0x8]
- strh r0, [r1]
- ldr r2, _0811BCB4 @ =REG_WIN0H
- ldr r0, _0811BCA8 @ =gUnknown_03004DE0
- movs r1, 0xF0
- lsls r1, 3
- adds r0, r1
- ldrh r1, [r0]
- strh r1, [r2]
- str r0, [r4]
- str r2, [r4, 0x4]
- ldr r0, _0811BCB8 @ =0xa2400001
- str r0, [r4, 0x8]
- ldr r0, [r4, 0x8]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0811BC94: .4byte 0x040000b0
-_0811BC98: .4byte 0x0000c5ff
-_0811BC9C: .4byte 0x00007fff
-_0811BCA0: .4byte 0x0200c000
-_0811BCA4: .4byte 0x040000d4
-_0811BCA8: .4byte gUnknown_03004DE0
-_0811BCAC: .4byte 0x800000a0
-_0811BCB0: .4byte REG_WININ
-_0811BCB4: .4byte REG_WIN0H
-_0811BCB8: .4byte 0xa2400001
- thumb_func_end sub_811BC2C
-
- thumb_func_start sub_811BCBC
-sub_811BCBC: @ 811BCBC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0811BCEC @ =gUnknown_083FD814
- ldr r2, _0811BCF0 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0811BCCE:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0811BCCE
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811BCEC: .4byte gUnknown_083FD814
-_0811BCF0: .4byte gTasks
- thumb_func_end sub_811BCBC
-
- thumb_func_start sub_811BCF4
-sub_811BCF4: @ 811BCF4
- push {r4,r5,lr}
- adds r5, r0, 0
- bl sub_811D658
- bl dp12_8087EA4
- movs r2, 0
- ldr r4, _0811BD48 @ =gUnknown_03005560
- ldr r3, _0811BD4C @ =0x0200c000
-_0811BD06:
- lsls r0, r2, 1
- adds r0, r4
- ldrh r1, [r3, 0x16]
- strh r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x9F
- bls _0811BD06
- ldr r0, _0811BD50 @ =sub_811BE3C
- bl SetVBlankCallback
- ldr r0, _0811BD54 @ =sub_811BE74
- bl SetHBlankCallback
- ldr r2, _0811BD58 @ =0x04000200
- ldrh r0, [r2]
- movs r1, 0x2
- orrs r0, r1
- strh r0, [r2]
- ldr r2, _0811BD5C @ =REG_DISPSTAT
- ldrh r0, [r2]
- movs r1, 0x10
- orrs r0, r1
- strh r0, [r2]
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0811BD48: .4byte gUnknown_03005560
-_0811BD4C: .4byte 0x0200c000
-_0811BD50: .4byte sub_811BE3C
-_0811BD54: .4byte sub_811BE74
-_0811BD58: .4byte 0x04000200
-_0811BD5C: .4byte REG_DISPSTAT
- thumb_func_end sub_811BCF4
-
- thumb_func_start sub_811BD60
-sub_811BD60: @ 811BD60
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r6, r0, 0
- ldr r1, _0811BE28 @ =0x0200c000
- ldrb r0, [r1]
- movs r0, 0
- strb r0, [r1]
- ldrh r2, [r6, 0xC]
- lsls r1, r2, 16
- asrs r0, r1, 24
- lsls r0, 16
- lsrs r3, r0, 16
- ldrh r4, [r6, 0xA]
- movs r0, 0xC0
- lsls r0, 1
- mov r8, r0
- movs r5, 0x80
- lsls r5, 3
- adds r0, r4, r5
- strh r0, [r6, 0xA]
- ldr r0, _0811BE2C @ =0x1fff0000
- cmp r1, r0
- bgt _0811BD9A
- movs r1, 0xC0
- lsls r1, 1
- adds r0, r2, r1
- strh r0, [r6, 0xC]
-_0811BD9A:
- movs r5, 0
- lsls r7, r3, 16
-_0811BD9E:
- lsrs r0, r4, 8
- asrs r1, r7, 16
- bl Sin
- ldr r1, _0811BE30 @ =gUnknown_03004DE0
- lsls r2, r5, 1
- adds r2, r1
- ldr r1, _0811BE28 @ =0x0200c000
- ldrh r1, [r1, 0x16]
- adds r0, r1
- strh r0, [r2]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- mov r1, r8
- adds r0, r4, r1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r5, 0x9F
- bls _0811BD9E
- ldrh r0, [r6, 0xE]
- adds r0, 0x1
- strh r0, [r6, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x51
- bne _0811BDEC
- ldrh r0, [r6, 0x10]
- adds r0, 0x1
- strh r0, [r6, 0x10]
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x2
- negs r1, r1
- movs r2, 0
- str r2, [sp]
- movs r3, 0x10
- bl BeginNormalPaletteFade
-_0811BDEC:
- movs r5, 0x10
- ldrsh r0, [r6, r5]
- cmp r0, 0
- beq _0811BE0E
- ldr r0, _0811BE34 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0811BE0E
- ldr r0, _0811BE38 @ =sub_811BCBC
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
-_0811BE0E:
- ldr r0, _0811BE28 @ =0x0200c000
- ldrb r1, [r0]
- adds r1, 0x1
- ldrb r2, [r0]
- strb r1, [r0]
- movs r0, 0
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0811BE28: .4byte 0x0200c000
-_0811BE2C: .4byte 0x1fff0000
-_0811BE30: .4byte gUnknown_03004DE0
-_0811BE34: .4byte gPaletteFade
-_0811BE38: .4byte sub_811BCBC
- thumb_func_end sub_811BD60
-
- thumb_func_start sub_811BE3C
-sub_811BE3C: @ 811BE3C
- push {lr}
- bl sub_811D67C
- ldr r0, _0811BE64 @ =0x0200c000
- ldrb r0, [r0]
- cmp r0, 0
- beq _0811BE5E
- ldr r1, _0811BE68 @ =0x040000d4
- ldr r0, _0811BE6C @ =gUnknown_03004DE0
- str r0, [r1]
- movs r2, 0xF0
- lsls r2, 3
- adds r0, r2
- str r0, [r1, 0x4]
- ldr r0, _0811BE70 @ =0x800000a0
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
-_0811BE5E:
- pop {r0}
- bx r0
- .align 2, 0
-_0811BE64: .4byte 0x0200c000
-_0811BE68: .4byte 0x040000d4
-_0811BE6C: .4byte gUnknown_03004DE0
-_0811BE70: .4byte 0x800000a0
- thumb_func_end sub_811BE3C
-
- thumb_func_start sub_811BE74
-sub_811BE74: @ 811BE74
- ldr r1, _0811BE94 @ =gUnknown_03004DE0
- ldr r0, _0811BE98 @ =REG_VCOUNT
- ldrh r0, [r0]
- lsls r0, 1
- movs r2, 0xF0
- lsls r2, 3
- adds r1, r2
- adds r0, r1
- ldrh r1, [r0]
- ldr r0, _0811BE9C @ =REG_BG1VOFS
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- bx lr
- .align 2, 0
-_0811BE94: .4byte gUnknown_03004DE0
-_0811BE98: .4byte REG_VCOUNT
-_0811BE9C: .4byte REG_BG1VOFS
- thumb_func_end sub_811BE74
-
- thumb_func_start sub_811BEA0
-sub_811BEA0: @ 811BEA0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0811BED0 @ =gUnknown_083FD81C
- ldr r2, _0811BED4 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0811BEB2:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0811BEB2
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811BED0: .4byte gUnknown_083FD81C
-_0811BED4: .4byte gTasks
- thumb_func_end sub_811BEA0
-
- thumb_func_start sub_811BED8
-sub_811BED8: @ 811BED8
- push {r4,lr}
- adds r4, r0, 0
- bl sub_811D658
- bl dp12_8087EA4
- ldr r1, _0811BF20 @ =0x0200c000
- movs r2, 0
- movs r0, 0x3F
- strh r0, [r1, 0x2]
- strh r2, [r1, 0x4]
- movs r0, 0xF0
- strh r0, [r1, 0x6]
- movs r0, 0xA0
- strh r0, [r1, 0x8]
- movs r1, 0
- ldr r3, _0811BF24 @ =gUnknown_03005560
- movs r2, 0xF2
-_0811BEFC:
- lsls r0, r1, 1
- adds r0, r3
- strh r2, [r0]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x9F
- bls _0811BEFC
- ldr r0, _0811BF28 @ =sub_811C004
- bl SetVBlankCallback
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811BF20: .4byte 0x0200c000
-_0811BF24: .4byte gUnknown_03005560
-_0811BF28: .4byte sub_811C004
- thumb_func_end sub_811BED8
-
- thumb_func_start sub_811BF2C
-sub_811BF2C: @ 811BF2C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r4, r0, 0
- ldr r1, _0811BFBC @ =0x0200c000
- ldrb r0, [r1]
- movs r0, 0
- strb r0, [r1]
- ldr r7, _0811BFC0 @ =gUnknown_03004DE0
- ldrh r0, [r4, 0xC]
- ldrb r5, [r4, 0xC]
- adds r0, 0x10
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0xA]
- adds r0, 0x8
- strh r0, [r4, 0xA]
- movs r6, 0
- movs r0, 0x1
- mov r8, r0
-_0811BF52:
- adds r0, r5, 0
- movs r1, 0x28
- bl Sin
- ldrh r1, [r4, 0xA]
- adds r0, r1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r0, 0
- bge _0811BF68
- movs r1, 0
-_0811BF68:
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0xF0
- ble _0811BF72
- movs r1, 0xF0
-_0811BF72:
- lsls r0, r1, 16
- asrs r0, 16
- lsls r1, r0, 8
- movs r2, 0xF1
- orrs r1, r2
- strh r1, [r7]
- cmp r0, 0xEF
- bgt _0811BF86
- movs r0, 0
- mov r8, r0
-_0811BF86:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- adds r0, r5, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- adds r7, 0x2
- cmp r6, 0x9F
- bls _0811BF52
- mov r1, r8
- cmp r1, 0
- beq _0811BFA4
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_0811BFA4:
- ldr r0, _0811BFBC @ =0x0200c000
- ldrb r1, [r0]
- adds r1, 0x1
- ldrb r2, [r0]
- strb r1, [r0]
- movs r0, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0811BFBC: .4byte 0x0200c000
-_0811BFC0: .4byte gUnknown_03004DE0
- thumb_func_end sub_811BF2C
-
- thumb_func_start sub_811BFC4
-sub_811BFC4: @ 811BFC4
- push {lr}
- ldr r1, _0811BFF4 @ =0x040000b0
- ldrh r2, [r1, 0xA]
- ldr r0, _0811BFF8 @ =0x0000c5ff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r2, [r1, 0xA]
- ldr r0, _0811BFFC @ =0x00007fff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r0, [r1, 0xA]
- bl sub_811D6D4
- ldr r0, _0811C000 @ =sub_811BEA0
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0811BFF4: .4byte 0x040000b0
-_0811BFF8: .4byte 0x0000c5ff
-_0811BFFC: .4byte 0x00007fff
-_0811C000: .4byte sub_811BEA0
- thumb_func_end sub_811BFC4
-
- thumb_func_start sub_811C004
-sub_811C004: @ 811C004
- push {r4,lr}
- ldr r4, _0811C060 @ =0x040000b0
- ldrh r1, [r4, 0xA]
- ldr r0, _0811C064 @ =0x0000c5ff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r1, [r4, 0xA]
- ldr r0, _0811C068 @ =0x00007fff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xA]
- bl sub_811D67C
- ldr r2, _0811C06C @ =0x0200c000
- ldrb r0, [r2]
- cmp r0, 0
- beq _0811C03A
- ldr r1, _0811C070 @ =0x040000d4
- ldr r0, _0811C074 @ =gUnknown_03004DE0
- str r0, [r1]
- movs r3, 0xF0
- lsls r3, 3
- adds r0, r3
- str r0, [r1, 0x4]
- ldr r0, _0811C078 @ =0x800000a0
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
-_0811C03A:
- ldr r1, _0811C07C @ =REG_WININ
- ldrh r0, [r2, 0x2]
- strh r0, [r1]
- adds r1, 0x2
- ldrh r0, [r2, 0x4]
- strh r0, [r1]
- subs r1, 0x6
- ldrh r0, [r2, 0x8]
- strh r0, [r1]
- ldr r0, _0811C080 @ =gUnknown_03005560
- str r0, [r4]
- ldr r0, _0811C084 @ =REG_WIN0H
- str r0, [r4, 0x4]
- ldr r0, _0811C088 @ =0xa2400001
- str r0, [r4, 0x8]
- ldr r0, [r4, 0x8]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0811C060: .4byte 0x040000b0
-_0811C064: .4byte 0x0000c5ff
-_0811C068: .4byte 0x00007fff
-_0811C06C: .4byte 0x0200c000
-_0811C070: .4byte 0x040000d4
-_0811C074: .4byte gUnknown_03004DE0
-_0811C078: .4byte 0x800000a0
-_0811C07C: .4byte REG_WININ
-_0811C080: .4byte gUnknown_03005560
-_0811C084: .4byte REG_WIN0H
-_0811C088: .4byte 0xa2400001
- thumb_func_end sub_811C004
-
- thumb_func_start sub_811C08C
-sub_811C08C: @ 811C08C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0811C0A8 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0
- strh r2, [r1, 0x26]
- bl sub_811C12C
- pop {r0}
- bx r0
- .align 2, 0
-_0811C0A8: .4byte gTasks
- thumb_func_end sub_811C08C
-
- thumb_func_start sub_811C0AC
-sub_811C0AC: @ 811C0AC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0811C0C8 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0x1
- strh r2, [r1, 0x26]
- bl sub_811C12C
- pop {r0}
- bx r0
- .align 2, 0
-_0811C0C8: .4byte gTasks
- thumb_func_end sub_811C0AC
-
- thumb_func_start sub_811C0CC
-sub_811C0CC: @ 811C0CC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0811C0E8 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0x2
- strh r2, [r1, 0x26]
- bl sub_811C12C
- pop {r0}
- bx r0
- .align 2, 0
-_0811C0E8: .4byte gTasks
- thumb_func_end sub_811C0CC
-
- thumb_func_start sub_811C0EC
-sub_811C0EC: @ 811C0EC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0811C108 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0x3
- strh r2, [r1, 0x26]
- bl sub_811C12C
- pop {r0}
- bx r0
- .align 2, 0
-_0811C108: .4byte gTasks
- thumb_func_end sub_811C0EC
-
- thumb_func_start sub_811C10C
-sub_811C10C: @ 811C10C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0811C128 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0x4
- strh r2, [r1, 0x26]
- bl sub_811C12C
- pop {r0}
- bx r0
- .align 2, 0
-_0811C128: .4byte gTasks
- thumb_func_end sub_811C10C
-
- thumb_func_start sub_811C12C
-sub_811C12C: @ 811C12C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0811C15C @ =gUnknown_083FD828
- ldr r2, _0811C160 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0811C13E:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0811C13E
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811C15C: .4byte gUnknown_083FD828
-_0811C160: .4byte gTasks
- thumb_func_end sub_811C12C
-
- thumb_func_start sub_811C164
-sub_811C164: @ 811C164
- push {r4,lr}
- adds r4, r0, 0
- bl sub_811D658
- bl dp12_8087EA4
- adds r0, r4, 0
- bl sub_811C7B0
- movs r0, 0
- strh r0, [r4, 0xA]
- movs r0, 0x1
- strh r0, [r4, 0xC]
- movs r0, 0xEF
- strh r0, [r4, 0xE]
- ldr r1, _0811C1BC @ =0x0200c000
- movs r0, 0x3F
- strh r0, [r1, 0x2]
- movs r0, 0x3E
- strh r0, [r1, 0x4]
- movs r0, 0xA0
- strh r0, [r1, 0x8]
- movs r1, 0
- ldr r3, _0811C1C0 @ =gUnknown_03005560
- ldr r2, _0811C1C4 @ =0x0000f0f1
-_0811C196:
- lsls r0, r1, 1
- adds r0, r3
- strh r2, [r0]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x9F
- bls _0811C196
- ldr r0, _0811C1C8 @ =sub_811C670
- bl SetVBlankCallback
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811C1BC: .4byte 0x0200c000
-_0811C1C0: .4byte gUnknown_03005560
-_0811C1C4: .4byte 0x0000f0f1
-_0811C1C8: .4byte sub_811C670
- thumb_func_end sub_811C164
-
- thumb_func_start sub_811C1CC
-sub_811C1CC: @ 811C1CC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- mov r8, r0
- ldr r6, _0811C284 @ =gUnknown_083FDFF4
- add r1, sp, 0x4
- mov r0, sp
- bl sub_811D6A8
- ldr r0, _0811C288 @ =gUnknown_083FC348
- ldr r1, [sp, 0x4]
- movs r2, 0xF0
- bl CpuSet
- ldr r1, _0811C28C @ =gUnknown_083FDB00
- mov r2, r8
- movs r3, 0x26
- ldrsh r0, [r2, r3]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- ldr r1, _0811C290 @ =gUnknown_083FDB14
- ldr r0, _0811C294 @ =gSaveBlock2
- ldrb r0, [r0, 0x8]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0xFA
- movs r2, 0xC
- bl LoadPalette
- movs r1, 0
- ldr r5, [sp]
- ldr r0, _0811C298 @ =sub_811C77C
- mov r12, r0
- movs r2, 0xF0
- lsls r2, 8
- adds r7, r2, 0
-_0811C222:
- movs r0, 0
- lsls r3, r1, 16
- asrs r4, r3, 11
-_0811C228:
- lsls r2, r0, 16
- asrs r2, 16
- adds r1, r4, r2
- lsls r1, 1
- adds r1, r5
- ldrh r0, [r6]
- orrs r0, r7
- strh r0, [r1]
- adds r2, 0x1
- lsls r2, 16
- adds r6, 0x2
- lsrs r0, r2, 16
- asrs r2, 16
- cmp r2, 0x1F
- ble _0811C228
- movs r1, 0x80
- lsls r1, 9
- adds r0, r3, r1
- lsrs r1, r0, 16
- asrs r0, 16
- cmp r0, 0x13
- ble _0811C222
- ldr r2, _0811C29C @ =0x04000200
- ldrh r0, [r2]
- movs r1, 0x2
- orrs r0, r1
- strh r0, [r2]
- ldr r2, _0811C2A0 @ =REG_DISPSTAT
- ldrh r0, [r2]
- movs r1, 0x10
- orrs r0, r1
- strh r0, [r2]
- mov r0, r12
- bl SetHBlankCallback
- mov r2, r8
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
- movs r0, 0
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0811C284: .4byte gUnknown_083FDFF4
-_0811C288: .4byte gUnknown_083FC348
-_0811C28C: .4byte gUnknown_083FDB00
-_0811C290: .4byte gUnknown_083FDB14
-_0811C294: .4byte gSaveBlock2
-_0811C298: .4byte sub_811C77C
-_0811C29C: .4byte 0x04000200
-_0811C2A0: .4byte REG_DISPSTAT
- thumb_func_end sub_811C1CC
-
- thumb_func_start sub_811C2A4
-sub_811C2A4: @ 811C2A4
- push {r4-r7,lr}
- adds r4, r0, 0
- ldr r1, _0811C384 @ =0x0200c000
- ldrb r0, [r1]
- movs r0, 0
- strb r0, [r1]
- ldr r7, _0811C388 @ =gUnknown_03004DE0
- ldrh r0, [r4, 0xA]
- ldrb r5, [r4, 0xA]
- adds r0, 0x10
- strh r0, [r4, 0xA]
- movs r6, 0
-_0811C2BC:
- adds r0, r5, 0
- movs r1, 0x10
- bl Sin
- ldrh r1, [r4, 0xC]
- adds r0, r1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r0, 0
- bge _0811C2D2
- movs r2, 0x1
-_0811C2D2:
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, 0xF0
- ble _0811C2DC
- movs r2, 0xF0
-_0811C2DC:
- strh r2, [r7]
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- adds r7, 0x2
- adds r0, r5, 0
- adds r0, 0x10
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r6, 0x4F
- bls _0811C2BC
- cmp r6, 0x9F
- bhi _0811C334
-_0811C2F6:
- adds r0, r5, 0
- movs r1, 0x10
- bl Sin
- ldrh r1, [r4, 0xE]
- subs r1, r0
- lsls r1, 16
- lsrs r2, r1, 16
- cmp r1, 0
- bge _0811C30C
- movs r2, 0
-_0811C30C:
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, 0xEF
- ble _0811C316
- movs r2, 0xEF
-_0811C316:
- lsls r0, r2, 16
- asrs r0, 8
- movs r1, 0xF0
- orrs r0, r1
- strh r0, [r7]
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- adds r7, 0x2
- adds r0, r5, 0
- adds r0, 0x10
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r6, 0x9F
- bls _0811C2F6
-_0811C334:
- ldrh r1, [r4, 0xC]
- adds r1, 0x8
- strh r1, [r4, 0xC]
- ldrh r0, [r4, 0xE]
- subs r0, 0x8
- strh r0, [r4, 0xE]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0xF0
- ble _0811C34C
- movs r0, 0xF0
- strh r0, [r4, 0xC]
-_0811C34C:
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bge _0811C358
- movs r0, 0
- strh r0, [r4, 0xE]
-_0811C358:
- ldr r0, [r4, 0xC]
- cmp r0, 0xF0
- bne _0811C364
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_0811C364:
- ldr r1, _0811C384 @ =0x0200c000
- ldrh r0, [r1, 0x18]
- subs r0, 0x8
- strh r0, [r1, 0x18]
- ldrh r0, [r1, 0x1A]
- adds r0, 0x8
- strh r0, [r1, 0x1A]
- ldrb r0, [r1]
- adds r0, 0x1
- ldrb r2, [r1]
- strb r0, [r1]
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0811C384: .4byte 0x0200c000
-_0811C388: .4byte gUnknown_03004DE0
- thumb_func_end sub_811C2A4
-
- thumb_func_start sub_811C38C
-sub_811C38C: @ 811C38C
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r0, _0811C3F8 @ =0x0200c000
- ldrb r1, [r0]
- movs r1, 0
- strb r1, [r0]
- ldr r2, _0811C3FC @ =gUnknown_03004DE0
- adds r5, r0, 0
- movs r3, 0xF0
-_0811C39E:
- strh r3, [r2]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- adds r2, 0x2
- cmp r1, 0x9F
- bls _0811C39E
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r4, 0x8]
- strh r1, [r4, 0xA]
- strh r1, [r4, 0xC]
- strh r1, [r4, 0xE]
- ldrh r0, [r5, 0x18]
- subs r0, 0x8
- strh r0, [r5, 0x18]
- ldrh r0, [r5, 0x1A]
- adds r0, 0x8
- strh r0, [r5, 0x1A]
- movs r1, 0x22
- ldrsh r0, [r4, r1]
- movs r1, 0
- bl sub_811CA10
- movs r1, 0x24
- ldrsh r0, [r4, r1]
- movs r1, 0x1
- bl sub_811CA10
- movs r1, 0x22
- ldrsh r0, [r4, r1]
- bl sub_811CA28
- movs r0, 0x68
- bl PlaySE
- ldrb r0, [r5]
- adds r0, 0x1
- ldrb r1, [r5]
- strb r0, [r5]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0811C3F8: .4byte 0x0200c000
-_0811C3FC: .4byte gUnknown_03004DE0
- thumb_func_end sub_811C38C
-
- thumb_func_start sub_811C400
-sub_811C400: @ 811C400
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, _0811C438 @ =0x0200c000
- ldrh r0, [r1, 0x18]
- subs r0, 0x8
- strh r0, [r1, 0x18]
- ldrh r0, [r1, 0x1A]
- adds r0, 0x8
- strh r0, [r1, 0x1A]
- movs r1, 0x22
- ldrsh r0, [r4, r1]
- bl sub_811CA44
- lsls r0, 16
- cmp r0, 0
- beq _0811C42E
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r1, 0x24
- ldrsh r0, [r4, r1]
- bl sub_811CA28
-_0811C42E:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811C438: .4byte 0x0200c000
- thumb_func_end sub_811C400
-
- thumb_func_start sub_811C43C
-sub_811C43C: @ 811C43C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- ldr r7, _0811C4D0 @ =0x0200c000
- ldrh r0, [r7, 0x18]
- subs r0, 0x8
- movs r1, 0
- mov r8, r1
- strh r0, [r7, 0x18]
- ldrh r0, [r7, 0x1A]
- adds r0, 0x8
- strh r0, [r7, 0x1A]
- movs r1, 0x24
- ldrsh r0, [r6, r1]
- bl sub_811CA44
- lsls r0, 16
- cmp r0, 0
- beq _0811C4C4
- ldrb r0, [r7]
- movs r0, 0
- strb r0, [r7]
- movs r0, 0
- bl SetVBlankCallback
- ldr r1, _0811C4D4 @ =0x040000b0
- ldrh r2, [r1, 0xA]
- ldr r0, _0811C4D8 @ =0x0000c5ff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r2, [r1, 0xA]
- ldr r0, _0811C4DC @ =0x00007fff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r0, [r1, 0xA]
- ldr r4, _0811C4E0 @ =gUnknown_03004DE0
- movs r5, 0xA0
- lsls r5, 1
- adds r0, r4, 0
- movs r1, 0
- adds r2, r5, 0
- bl memset
- movs r0, 0xF0
- lsls r0, 3
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0
- adds r2, r5, 0
- bl memset
- ldr r1, _0811C4E4 @ =REG_WIN0H
- movs r0, 0xF0
- strh r0, [r1]
- ldr r0, _0811C4E8 @ =REG_BLDY
- mov r1, r8
- strh r1, [r0]
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- strh r0, [r6, 0x8]
- strh r1, [r6, 0xE]
- strh r1, [r6, 0x10]
- movs r0, 0xBF
- strh r0, [r7, 0xE]
- ldr r0, _0811C4EC @ =sub_811C700
- bl SetVBlankCallback
-_0811C4C4:
- movs r0, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0811C4D0: .4byte 0x0200c000
-_0811C4D4: .4byte 0x040000b0
-_0811C4D8: .4byte 0x0000c5ff
-_0811C4DC: .4byte 0x00007fff
-_0811C4E0: .4byte gUnknown_03004DE0
-_0811C4E4: .4byte REG_WIN0H
-_0811C4E8: .4byte REG_BLDY
-_0811C4EC: .4byte sub_811C700
- thumb_func_end sub_811C43C
-
- thumb_func_start sub_811C4F0
-sub_811C4F0: @ 811C4F0
- push {r4-r7,lr}
- adds r4, r0, 0
- ldr r1, _0811C5AC @ =0x0200c000
- ldrb r0, [r1]
- movs r0, 0
- strb r0, [r1]
- movs r6, 0x1
- ldrh r0, [r1, 0x18]
- subs r0, 0x8
- strh r0, [r1, 0x18]
- ldrh r0, [r1, 0x1A]
- adds r0, 0x8
- strh r0, [r1, 0x1A]
- ldrh r2, [r4, 0x10]
- movs r3, 0x10
- ldrsh r0, [r4, r3]
- adds r7, r1, 0
- cmp r0, 0x4F
- bgt _0811C51A
- adds r0, r2, 0x2
- strh r0, [r4, 0x10]
-_0811C51A:
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r0, 0x50
- ble _0811C526
- movs r0, 0x50
- strh r0, [r4, 0x10]
-_0811C526:
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- movs r1, 0x1
- ands r0, r1
- ldrh r2, [r4, 0x10]
- cmp r0, 0
- beq _0811C58C
- movs r3, 0
- lsls r0, r2, 16
- movs r6, 0
- cmp r0, 0
- blt _0811C58C
- movs r2, 0x50
- mov r12, r2
- ldr r5, _0811C5B0 @ =gUnknown_03004DE0
-_0811C546:
- lsls r0, r3, 16
- asrs r2, r0, 16
- mov r3, r12
- subs r1, r3, r2
- adds r0, r2, 0
- adds r0, 0x50
- lsls r0, 16
- lsrs r3, r0, 16
- lsls r1, 16
- asrs r1, 15
- adds r1, r5
- ldrh r0, [r1]
- cmp r0, 0xF
- bhi _0811C568
- movs r6, 0x1
- adds r0, 0x1
- strh r0, [r1]
-_0811C568:
- lsls r0, r3, 16
- asrs r0, 15
- adds r1, r0, r5
- ldrh r0, [r1]
- cmp r0, 0xF
- bhi _0811C57A
- movs r6, 0x1
- adds r0, 0x1
- strh r0, [r1]
-_0811C57A:
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- asrs r0, 16
- movs r2, 0x10
- ldrsh r1, [r4, r2]
- ldrh r2, [r4, 0x10]
- cmp r0, r1
- ble _0811C546
-_0811C58C:
- cmp r2, 0x50
- bne _0811C59A
- cmp r6, 0
- bne _0811C59A
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_0811C59A:
- ldrb r0, [r7]
- adds r0, 0x1
- ldrb r1, [r7]
- strb r0, [r7]
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0811C5AC: .4byte 0x0200c000
-_0811C5B0: .4byte gUnknown_03004DE0
- thumb_func_end sub_811C4F0
-
- thumb_func_start sub_811C5B4
-sub_811C5B4: @ 811C5B4
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r4, _0811C5E0 @ =0x0200c000
- ldrb r0, [r4]
- movs r6, 0
- strb r6, [r4]
- movs r0, 0x1
- negs r0, r0
- ldr r2, _0811C5E4 @ =0x00007fff
- movs r1, 0x10
- bl BlendPalettes
- movs r0, 0xFF
- strh r0, [r4, 0xE]
- strh r6, [r5, 0xE]
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- movs r0, 0x1
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0811C5E0: .4byte 0x0200c000
-_0811C5E4: .4byte 0x00007fff
- thumb_func_end sub_811C5B4
-
- thumb_func_start sub_811C5E8
-sub_811C5E8: @ 811C5E8
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _0811C628 @ =0x0200c000
- ldrb r0, [r5]
- movs r0, 0
- strb r0, [r5]
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- ldr r0, _0811C62C @ =gUnknown_03004DE0
- movs r2, 0xE
- ldrsh r1, [r4, r2]
- movs r2, 0xA0
- lsls r2, 1
- bl memset
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- cmp r0, 0xF
- ble _0811C616
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_0811C616:
- ldrb r0, [r5]
- adds r0, 0x1
- ldrb r1, [r5]
- strb r0, [r5]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0811C628: .4byte 0x0200c000
-_0811C62C: .4byte gUnknown_03004DE0
- thumb_func_end sub_811C5E8
-
- thumb_func_start sub_811C630
-sub_811C630: @ 811C630
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, _0811C664 @ =0x040000b0
- ldrh r2, [r1, 0xA]
- ldr r0, _0811C668 @ =0x0000c5ff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r2, [r1, 0xA]
- ldr r0, _0811C66C @ =0x00007fff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r0, [r1, 0xA]
- bl sub_811D6D4
- ldr r0, [r4]
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811C664: .4byte 0x040000b0
-_0811C668: .4byte 0x0000c5ff
-_0811C66C: .4byte 0x00007fff
- thumb_func_end sub_811C630
-
- thumb_func_start sub_811C670
-sub_811C670: @ 811C670
- push {r4,lr}
- ldr r4, _0811C6D4 @ =0x040000b0
- ldrh r1, [r4, 0xA]
- ldr r0, _0811C6D8 @ =0x0000c5ff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r1, [r4, 0xA]
- ldr r0, _0811C6DC @ =0x00007fff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xA]
- bl sub_811D67C
- ldr r2, _0811C6E0 @ =0x0200c000
- ldrb r0, [r2]
- cmp r0, 0
- beq _0811C6A6
- ldr r1, _0811C6E4 @ =0x040000d4
- ldr r0, _0811C6E8 @ =gUnknown_03004DE0
- str r0, [r1]
- movs r3, 0xF0
- lsls r3, 3
- adds r0, r3
- str r0, [r1, 0x4]
- ldr r0, _0811C6EC @ =0x800000a0
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
-_0811C6A6:
- ldr r1, _0811C6F0 @ =REG_BG0VOFS
- ldrh r0, [r2, 0x1C]
- strh r0, [r1]
- adds r1, 0x36
- ldrh r0, [r2, 0x2]
- strh r0, [r1]
- adds r1, 0x2
- ldrh r0, [r2, 0x4]
- strh r0, [r1]
- subs r1, 0x6
- ldrh r0, [r2, 0x8]
- strh r0, [r1]
- ldr r0, _0811C6F4 @ =gUnknown_03005560
- str r0, [r4]
- ldr r0, _0811C6F8 @ =REG_WIN0H
- str r0, [r4, 0x4]
- ldr r0, _0811C6FC @ =0xa2400001
- str r0, [r4, 0x8]
- ldr r0, [r4, 0x8]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0811C6D4: .4byte 0x040000b0
-_0811C6D8: .4byte 0x0000c5ff
-_0811C6DC: .4byte 0x00007fff
-_0811C6E0: .4byte 0x0200c000
-_0811C6E4: .4byte 0x040000d4
-_0811C6E8: .4byte gUnknown_03004DE0
-_0811C6EC: .4byte 0x800000a0
-_0811C6F0: .4byte REG_BG0VOFS
-_0811C6F4: .4byte gUnknown_03005560
-_0811C6F8: .4byte REG_WIN0H
-_0811C6FC: .4byte 0xa2400001
- thumb_func_end sub_811C670
-
- thumb_func_start sub_811C700
-sub_811C700: @ 811C700
- push {r4,lr}
- ldr r4, _0811C750 @ =0x040000b0
- ldrh r1, [r4, 0xA]
- ldr r0, _0811C754 @ =0x0000c5ff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r1, [r4, 0xA]
- ldr r0, _0811C758 @ =0x00007fff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xA]
- bl sub_811D67C
- ldr r2, _0811C75C @ =0x0200c000
- ldrb r0, [r2]
- cmp r0, 0
- beq _0811C736
- ldr r1, _0811C760 @ =0x040000d4
- ldr r0, _0811C764 @ =gUnknown_03004DE0
- str r0, [r1]
- movs r3, 0xF0
- lsls r3, 3
- adds r0, r3
- str r0, [r1, 0x4]
- ldr r0, _0811C768 @ =0x800000a0
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
-_0811C736:
- ldr r1, _0811C76C @ =REG_BLDCNT
- ldrh r0, [r2, 0xE]
- strh r0, [r1]
- ldr r0, _0811C770 @ =gUnknown_03005560
- str r0, [r4]
- ldr r0, _0811C774 @ =REG_BLDY
- str r0, [r4, 0x4]
- ldr r0, _0811C778 @ =0xa2400001
- str r0, [r4, 0x8]
- ldr r0, [r4, 0x8]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0811C750: .4byte 0x040000b0
-_0811C754: .4byte 0x0000c5ff
-_0811C758: .4byte 0x00007fff
-_0811C75C: .4byte 0x0200c000
-_0811C760: .4byte 0x040000d4
-_0811C764: .4byte gUnknown_03004DE0
-_0811C768: .4byte 0x800000a0
-_0811C76C: .4byte REG_BLDCNT
-_0811C770: .4byte gUnknown_03005560
-_0811C774: .4byte REG_BLDY
-_0811C778: .4byte 0xa2400001
- thumb_func_end sub_811C700
-
- thumb_func_start sub_811C77C
-sub_811C77C: @ 811C77C
- push {lr}
- ldr r0, _0811C790 @ =REG_VCOUNT
- ldrh r0, [r0]
- cmp r0, 0x4F
- bhi _0811C79C
- ldr r0, _0811C794 @ =REG_BG0HOFS
- ldr r1, _0811C798 @ =0x0200c000
- ldrh r1, [r1, 0x18]
- b _0811C7A2
- .align 2, 0
-_0811C790: .4byte REG_VCOUNT
-_0811C794: .4byte REG_BG0HOFS
-_0811C798: .4byte 0x0200c000
-_0811C79C:
- ldr r0, _0811C7A8 @ =REG_BG0HOFS
- ldr r1, _0811C7AC @ =0x0200c000
- ldrh r1, [r1, 0x1A]
-_0811C7A2:
- strh r1, [r0]
- pop {r0}
- bx r0
- .align 2, 0
-_0811C7A8: .4byte REG_BG0HOFS
-_0811C7AC: .4byte 0x0200c000
- thumb_func_end sub_811C77C
-
- thumb_func_start sub_811C7B0
-sub_811C7B0: @ 811C7B0
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r4, r0, 0
- ldr r0, _0811C8EC @ =gUnknown_083FD850
- movs r2, 0x26
- ldrsh r1, [r4, r2]
- mov r8, r1
- add r0, r8
- ldrb r0, [r0]
- ldr r2, _0811C8F0 @ =gUnknown_083FD86A
- lsls r1, 2
- mov r8, r1
- adds r1, r2
- ldrh r1, [r1]
- subs r1, 0x20
- lsls r1, 16
- asrs r1, 16
- adds r2, 0x2
- add r2, r8
- ldrh r2, [r2]
- adds r2, 0x2A
- lsls r2, 16
- asrs r2, 16
- ldr r5, _0811C8F4 @ =0x0200c03c
- str r5, [sp]
- movs r3, 0
- bl CreateTrainerSprite_BirchSpeech
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x22]
- ldr r0, _0811C8F8 @ =gSaveBlock2
- ldrb r0, [r0, 0x8]
- movs r1, 0x88
- lsls r1, 1
- str r5, [sp]
- movs r2, 0x6A
- movs r3, 0
- bl CreateTrainerSprite_BirchSpeech
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x24]
- movs r3, 0x22
- ldrsh r0, [r4, r3]
- lsls r5, r0, 4
- adds r5, r0
- lsls r5, 2
- ldr r1, _0811C8FC @ =gSprites
- adds r5, r1
- movs r2, 0x24
- ldrsh r0, [r4, r2]
- lsls r6, r0, 4
- adds r6, r0
- lsls r6, 2
- adds r6, r1
- ldr r0, _0811C900 @ =sub_811C90C
- str r0, [r5, 0x1C]
- str r0, [r6, 0x1C]
- ldrb r0, [r5, 0x1]
- movs r1, 0x3
- orrs r0, r1
- strb r0, [r5, 0x1]
- ldrb r0, [r6, 0x1]
- orrs r0, r1
- strb r0, [r6, 0x1]
- bl AllocOamMatrix
- lsls r0, 24
- lsrs r0, 24
- movs r3, 0x1F
- mov r9, r3
- mov r4, r9
- ands r0, r4
- lsls r0, 1
- ldrb r2, [r5, 0x3]
- movs r4, 0x3F
- negs r4, r4
- adds r1, r4, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r5, 0x3]
- bl AllocOamMatrix
- lsls r0, 24
- lsrs r0, 24
- mov r1, r9
- ands r0, r1
- lsls r0, 1
- ldrb r1, [r6, 0x3]
- ands r4, r1
- orrs r4, r0
- strb r4, [r6, 0x3]
- ldrb r2, [r5, 0x1]
- movs r1, 0x3F
- adds r0, r1, 0
- ands r0, r2
- movs r2, 0x40
- orrs r0, r2
- strb r0, [r5, 0x1]
- ldrb r0, [r6, 0x1]
- ands r1, r0
- orrs r1, r2
- strb r1, [r6, 0x1]
- ldrb r0, [r5, 0x3]
- movs r1, 0xC0
- orrs r0, r1
- strb r0, [r5, 0x3]
- ldrb r0, [r6, 0x3]
- orrs r0, r1
- strb r0, [r6, 0x3]
- adds r0, r5, 0
- movs r1, 0x1
- movs r2, 0x3
- movs r3, 0x3
- bl CalcCenterToCornerVec
- adds r0, r6, 0
- movs r1, 0x1
- movs r2, 0x3
- movs r3, 0x3
- bl CalcCenterToCornerVec
- ldrb r0, [r5, 0x3]
- lsls r0, 26
- lsrs r0, 27
- ldr r2, _0811C904 @ =gUnknown_083FD856
- mov r3, r8
- adds r1, r3, r2
- movs r4, 0
- ldrsh r1, [r1, r4]
- adds r2, 0x2
- add r8, r2
- mov r3, r8
- movs r4, 0
- ldrsh r2, [r3, r4]
- movs r3, 0
- bl SetOamMatrixRotationScaling
- ldrb r0, [r6, 0x3]
- lsls r0, 26
- lsrs r0, 27
- ldr r1, _0811C908 @ =0xfffffe00
- movs r2, 0x80
- lsls r2, 2
- movs r3, 0
- bl SetOamMatrixRotationScaling
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0811C8EC: .4byte gUnknown_083FD850
-_0811C8F0: .4byte gUnknown_083FD86A
-_0811C8F4: .4byte 0x0200c03c
-_0811C8F8: .4byte gSaveBlock2
-_0811C8FC: .4byte gSprites
-_0811C900: .4byte sub_811C90C
-_0811C904: .4byte gUnknown_083FD856
-_0811C908: .4byte 0xfffffe00
- thumb_func_end sub_811C7B0
-
- thumb_func_start sub_811C90C
-sub_811C90C: @ 811C90C
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _0811C930 @ =gUnknown_083FD880
-_0811C912:
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0811C912
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811C930: .4byte gUnknown_083FD880
- thumb_func_end sub_811C90C
-
- thumb_func_start sub_811C934
-sub_811C934: @ 811C934
- movs r0, 0
- bx lr
- thumb_func_end sub_811C934
-
- thumb_func_start sub_811C938
-sub_811C938: @ 811C938
- push {r4,r5,lr}
- sub sp, 0x8
- adds r5, r0, 0
- ldr r1, _0811C97C @ =gUnknown_083FD89C
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- add r4, sp, 0x4
- ldr r1, _0811C980 @ =gUnknown_083FD8A0
- adds r0, r4, 0
- movs r2, 0x4
- bl memcpy
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- movs r1, 0x3C
- ldrsh r0, [r5, r1]
- lsls r0, 1
- add r0, sp
- ldrh r0, [r0]
- strh r0, [r5, 0x30]
- movs r1, 0x3C
- ldrsh r0, [r5, r1]
- lsls r0, 1
- adds r4, r0
- ldrh r0, [r4]
- strh r0, [r5, 0x32]
- movs r0, 0x1
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0811C97C: .4byte gUnknown_083FD89C
-_0811C980: .4byte gUnknown_083FD8A0
- thumb_func_end sub_811C938
-
- thumb_func_start sub_811C984
-sub_811C984: @ 811C984
- push {lr}
- adds r1, r0, 0
- ldrh r0, [r1, 0x30]
- ldrh r3, [r1, 0x20]
- adds r2, r0, r3
- strh r2, [r1, 0x20]
- movs r3, 0x3C
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _0811C9A2
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, 0x84
- bgt _0811C9B0
- b _0811C9AA
-_0811C9A2:
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, 0x67
- ble _0811C9B0
-_0811C9AA:
- ldrh r0, [r1, 0x2E]
- adds r0, 0x1
- strh r0, [r1, 0x2E]
-_0811C9B0:
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sub_811C984
-
- thumb_func_start sub_811C9B8
-sub_811C9B8: @ 811C9B8
- push {lr}
- adds r2, r0, 0
- ldrh r3, [r2, 0x32]
- ldrh r0, [r2, 0x30]
- adds r1, r3, r0
- strh r1, [r2, 0x30]
- ldrh r0, [r2, 0x20]
- adds r0, r1
- strh r0, [r2, 0x20]
- lsls r1, 16
- cmp r1, 0
- bne _0811C9DE
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- negs r0, r3
- strh r0, [r2, 0x32]
- movs r0, 0x1
- strh r0, [r2, 0x3A]
-_0811C9DE:
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sub_811C9B8
-
- thumb_func_start sub_811C9E4
-sub_811C9E4: @ 811C9E4
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x32]
- ldrh r1, [r2, 0x30]
- adds r0, r1
- strh r0, [r2, 0x30]
- ldrh r1, [r2, 0x20]
- adds r1, r0
- strh r1, [r2, 0x20]
- adds r1, 0x1F
- lsls r1, 16
- movs r0, 0x97
- lsls r0, 17
- cmp r1, r0
- bls _0811CA08
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
-_0811CA08:
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sub_811C9E4
-
- thumb_func_start sub_811CA10
-sub_811CA10: @ 811CA10
- ldr r3, _0811CA24 @ =gSprites
- lsls r0, 16
- asrs r0, 16
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r3
- strh r1, [r2, 0x3C]
- bx lr
- .align 2, 0
-_0811CA24: .4byte gSprites
- thumb_func_end sub_811CA10
-
- thumb_func_start sub_811CA28
-sub_811CA28: @ 811CA28
- ldr r2, _0811CA40 @ =gSprites
- lsls r0, 16
- asrs r0, 16
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrh r0, [r1, 0x2E]
- adds r0, 0x1
- strh r0, [r1, 0x2E]
- bx lr
- .align 2, 0
-_0811CA40: .4byte gSprites
- thumb_func_end sub_811CA28
-
- thumb_func_start sub_811CA44
-sub_811CA44: @ 811CA44
- ldr r2, _0811CA58 @ =gSprites
- lsls r0, 16
- asrs r0, 16
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r2, 0x3A
- ldrsh r0, [r1, r2]
- bx lr
- .align 2, 0
-_0811CA58: .4byte gSprites
- thumb_func_end sub_811CA44
-
- thumb_func_start sub_811CA5C
-sub_811CA5C: @ 811CA5C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0811CA8C @ =gUnknown_083FD8A4
- ldr r2, _0811CA90 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0811CA6E:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0811CA6E
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811CA8C: .4byte gUnknown_083FD8A4
-_0811CA90: .4byte gTasks
- thumb_func_end sub_811CA5C
-
- thumb_func_start sub_811CA94
-sub_811CA94: @ 811CA94
- push {r4-r6,lr}
- adds r4, r0, 0
- bl sub_811D658
- bl dp12_8087EA4
- movs r2, 0
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r4, 0xC]
- movs r0, 0x1
- strh r0, [r4, 0xE]
- ldr r1, _0811CB08 @ =0x0200c000
- movs r0, 0x3F
- strh r0, [r1, 0x2]
- strh r2, [r1, 0x4]
- movs r0, 0xA0
- strh r0, [r1, 0x8]
- ldr r3, _0811CB0C @ =gUnknown_03005560
- adds r6, r1, 0
- movs r5, 0xF0
-_0811CABE:
- lsls r0, r2, 1
- adds r0, r3
- ldrh r1, [r6, 0x14]
- strh r1, [r0]
- adds r0, r2, 0
- adds r0, 0xA0
- lsls r0, 1
- adds r0, r3
- strh r5, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x9F
- bls _0811CABE
- ldr r2, _0811CB10 @ =0x04000200
- ldrh r0, [r2]
- movs r1, 0x2
- orrs r0, r1
- strh r0, [r2]
- ldr r2, _0811CB14 @ =REG_DISPSTAT
- ldrh r0, [r2]
- movs r1, 0x10
- orrs r0, r1
- strh r0, [r2]
- ldr r0, _0811CB18 @ =sub_811CC28
- bl SetVBlankCallback
- ldr r0, _0811CB1C @ =sub_811CCB0
- bl SetHBlankCallback
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0x1
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0811CB08: .4byte 0x0200c000
-_0811CB0C: .4byte gUnknown_03005560
-_0811CB10: .4byte 0x04000200
-_0811CB14: .4byte REG_DISPSTAT
-_0811CB18: .4byte sub_811CC28
-_0811CB1C: .4byte sub_811CCB0
- thumb_func_end sub_811CA94
-
- thumb_func_start sub_811CB20
-sub_811CB20: @ 811CB20
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r2, r0, 0
- ldr r1, _0811CB98 @ =0x0200c000
- ldrb r0, [r1]
- movs r0, 0
- strb r0, [r1]
- ldrh r0, [r2, 0xC]
- lsls r0, 16
- asrs r0, 24
- ldrh r3, [r2, 0xA]
- adds r0, r3
- strh r0, [r2, 0xA]
- lsls r0, 16
- asrs r0, 16
- mov r12, r1
- cmp r0, 0xF0
- ble _0811CB4A
- movs r0, 0xF0
- strh r0, [r2, 0xA]
-_0811CB4A:
- ldrh r4, [r2, 0xC]
- movs r0, 0xC
- ldrsh r1, [r2, r0]
- ldr r0, _0811CB9C @ =0x00000fff
- ldrh r3, [r2, 0xE]
- cmp r1, r0
- bgt _0811CB5C
- adds r0, r4, r3
- strh r0, [r2, 0xC]
-_0811CB5C:
- lsls r0, r3, 16
- asrs r0, 16
- cmp r0, 0x7F
- bgt _0811CB68
- lsls r0, r3, 1
- strh r0, [r2, 0xE]
-_0811CB68:
- movs r5, 0
- ldr r7, _0811CBA0 @ =gUnknown_03004DE0
- movs r1, 0xA0
- lsls r1, 1
- adds r1, r7
- mov r8, r1
- mov r6, r12
-_0811CB76:
- lsls r0, r5, 1
- adds r3, r0, r7
- mov r1, r8
- adds r4, r0, r1
- movs r0, 0x1
- ands r0, r5
- cmp r0, 0
- beq _0811CBA4
- ldrh r0, [r2, 0xA]
- ldrh r1, [r6, 0x14]
- adds r0, r1
- strh r0, [r3]
- ldrh r1, [r2, 0xA]
- movs r0, 0xF0
- subs r0, r1
- b _0811CBB4
- .align 2, 0
-_0811CB98: .4byte 0x0200c000
-_0811CB9C: .4byte 0x00000fff
-_0811CBA0: .4byte gUnknown_03004DE0
-_0811CBA4:
- ldrh r0, [r6, 0x14]
- ldrh r1, [r2, 0xA]
- subs r0, r1
- strh r0, [r3]
- ldrh r0, [r2, 0xA]
- lsls r0, 8
- movs r1, 0xF1
- orrs r0, r1
-_0811CBB4:
- strh r0, [r4]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x9F
- bls _0811CB76
- movs r3, 0xA
- ldrsh r0, [r2, r3]
- cmp r0, 0xEF
- ble _0811CBCE
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
-_0811CBCE:
- mov r1, r12
- ldrb r0, [r1]
- adds r0, 0x1
- ldrb r1, [r1]
- mov r2, r12
- strb r0, [r2]
- movs r0, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_811CB20
-
- thumb_func_start sub_811CBE8
-sub_811CBE8: @ 811CBE8
- push {lr}
- ldr r1, _0811CC18 @ =0x040000b0
- ldrh r2, [r1, 0xA]
- ldr r0, _0811CC1C @ =0x0000c5ff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r2, [r1, 0xA]
- ldr r0, _0811CC20 @ =0x00007fff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r0, [r1, 0xA]
- bl sub_811D6D4
- ldr r0, _0811CC24 @ =sub_811CA5C
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0811CC18: .4byte 0x040000b0
-_0811CC1C: .4byte 0x0000c5ff
-_0811CC20: .4byte 0x00007fff
-_0811CC24: .4byte sub_811CA5C
- thumb_func_end sub_811CBE8
-
- thumb_func_start sub_811CC28
-sub_811CC28: @ 811CC28
- push {r4,lr}
- ldr r4, _0811CC84 @ =0x040000b0
- ldrh r1, [r4, 0xA]
- ldr r0, _0811CC88 @ =0x0000c5ff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r1, [r4, 0xA]
- ldr r0, _0811CC8C @ =0x00007fff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xA]
- bl sub_811D67C
- ldr r2, _0811CC90 @ =REG_WININ
- ldr r1, _0811CC94 @ =0x0200c000
- ldrh r0, [r1, 0x2]
- strh r0, [r2]
- adds r2, 0x2
- ldrh r0, [r1, 0x4]
- strh r0, [r2]
- subs r2, 0x6
- ldrh r0, [r1, 0x8]
- strh r0, [r2]
- ldrb r0, [r1]
- cmp r0, 0
- beq _0811CC70
- ldr r1, _0811CC98 @ =0x040000d4
- ldr r0, _0811CC9C @ =gUnknown_03004DE0
- str r0, [r1]
- movs r2, 0xF0
- lsls r2, 3
- adds r0, r2
- str r0, [r1, 0x4]
- ldr r0, _0811CCA0 @ =0x80000140
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
-_0811CC70:
- ldr r0, _0811CCA4 @ =gUnknown_030056A0
- str r0, [r4]
- ldr r0, _0811CCA8 @ =REG_WIN0H
- str r0, [r4, 0x4]
- ldr r0, _0811CCAC @ =0xa2400001
- str r0, [r4, 0x8]
- ldr r0, [r4, 0x8]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0811CC84: .4byte 0x040000b0
-_0811CC88: .4byte 0x0000c5ff
-_0811CC8C: .4byte 0x00007fff
-_0811CC90: .4byte REG_WININ
-_0811CC94: .4byte 0x0200c000
-_0811CC98: .4byte 0x040000d4
-_0811CC9C: .4byte gUnknown_03004DE0
-_0811CCA0: .4byte 0x80000140
-_0811CCA4: .4byte gUnknown_030056A0
-_0811CCA8: .4byte REG_WIN0H
-_0811CCAC: .4byte 0xa2400001
- thumb_func_end sub_811CC28
-
- thumb_func_start sub_811CCB0
-sub_811CCB0: @ 811CCB0
- ldr r1, _0811CCD0 @ =gUnknown_03004DE0
- ldr r0, _0811CCD4 @ =REG_VCOUNT
- ldrh r0, [r0]
- lsls r0, 1
- movs r2, 0xF0
- lsls r2, 3
- adds r1, r2
- adds r0, r1
- ldrh r1, [r0]
- ldr r0, _0811CCD8 @ =REG_BG1HOFS
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- bx lr
- .align 2, 0
-_0811CCD0: .4byte gUnknown_03004DE0
-_0811CCD4: .4byte REG_VCOUNT
-_0811CCD8: .4byte REG_BG1HOFS
- thumb_func_end sub_811CCB0
-
- thumb_func_start sub_811CCDC
-sub_811CCDC: @ 811CCDC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0811CD0C @ =gUnknown_083FD8B0
- ldr r2, _0811CD10 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0811CCEE:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0811CCEE
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811CD0C: .4byte gUnknown_083FD8B0
-_0811CD10: .4byte gTasks
- thumb_func_end sub_811CCDC
-
- thumb_func_start sub_811CD14
-sub_811CD14: @ 811CD14
- push {r4,r5,lr}
- adds r5, r0, 0
- bl sub_811D658
- bl dp12_8087EA4
- ldr r1, _0811CD88 @ =0x0200c000
- movs r2, 0
- movs r0, 0xBF
- strh r0, [r1, 0xE]
- strh r2, [r1, 0x12]
- movs r0, 0x1E
- strh r0, [r1, 0x2]
- movs r0, 0x3F
- strh r0, [r1, 0x4]
- movs r0, 0xA0
- strh r0, [r1, 0x8]
- movs r1, 0
- ldr r2, _0811CD8C @ =gUnknown_03005560
- movs r4, 0
- movs r3, 0xF0
-_0811CD3E:
- lsls r0, r1, 1
- adds r0, r2
- strh r4, [r0]
- adds r0, r1, 0
- adds r0, 0xA0
- lsls r0, 1
- adds r0, r2
- strh r3, [r0]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0x9F
- bls _0811CD3E
- ldr r2, _0811CD90 @ =0x04000200
- ldrh r0, [r2]
- movs r1, 0x2
- orrs r0, r1
- strh r0, [r2]
- ldr r2, _0811CD94 @ =REG_DISPSTAT
- ldrh r0, [r2]
- movs r1, 0x10
- orrs r0, r1
- strh r0, [r2]
- ldr r0, _0811CD98 @ =sub_811CFAC
- bl SetHBlankCallback
- ldr r0, _0811CD9C @ =sub_811CEE4
- bl SetVBlankCallback
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0811CD88: .4byte 0x0200c000
-_0811CD8C: .4byte gUnknown_03005560
-_0811CD90: .4byte 0x04000200
-_0811CD94: .4byte REG_DISPSTAT
-_0811CD98: .4byte sub_811CFAC
-_0811CD9C: .4byte sub_811CEE4
- thumb_func_end sub_811CD14
-
- thumb_func_start sub_811CDA0
-sub_811CDA0: @ 811CDA0
- push {r4-r6,lr}
- sub sp, 0x10
- adds r6, r0, 0
- ldr r1, _0811CE08 @ =gUnknown_083FD8C4
- mov r0, sp
- movs r2, 0x10
- bl memcpy
- movs r5, 0
- movs r4, 0
-_0811CDB4:
- ldr r0, _0811CE0C @ =sub_811CFD0
- bl CreateInvisibleSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _0811CE10 @ =gSprites
- adds r2, r1, r0
- movs r0, 0xF0
- strh r0, [r2, 0x20]
- strh r4, [r2, 0x22]
- lsls r1, r5, 16
- asrs r1, 16
- lsls r0, r1, 1
- add r0, sp
- ldrh r0, [r0]
- strh r0, [r2, 0x38]
- adds r1, 0x1
- lsls r1, 16
- lsls r0, r4, 16
- movs r3, 0xA0
- lsls r3, 13
- adds r0, r3
- lsrs r4, r0, 16
- lsrs r5, r1, 16
- asrs r1, 16
- cmp r1, 0x7
- ble _0811CDB4
- ldrh r0, [r2, 0x3A]
- adds r0, 0x1
- strh r0, [r2, 0x3A]
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- strh r0, [r6, 0x8]
- movs r0, 0
- add sp, 0x10
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0811CE08: .4byte gUnknown_083FD8C4
-_0811CE0C: .4byte sub_811CFD0
-_0811CE10: .4byte gSprites
- thumb_func_end sub_811CDA0
-
- thumb_func_start sub_811CE14
-sub_811CE14: @ 811CE14
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _0811CE44 @ =0x0200c000
- ldrb r1, [r0]
- movs r1, 0
- strb r1, [r0]
- movs r1, 0x20
- ldrsh r0, [r0, r1]
- cmp r0, 0x7
- ble _0811CE3A
- movs r0, 0x1
- negs r0, r0
- ldr r2, _0811CE48 @ =0x00007fff
- movs r1, 0x10
- bl BlendPalettes
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_0811CE3A:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811CE44: .4byte 0x0200c000
-_0811CE48: .4byte 0x00007fff
- thumb_func_end sub_811CE14
-
- thumb_func_start sub_811CE4C
-sub_811CE4C: @ 811CE4C
- push {r4-r6,lr}
- adds r6, r0, 0
- ldr r4, _0811CE9C @ =0x0200c000
- ldrb r0, [r4]
- movs r5, 0
- strb r5, [r4]
- ldr r1, _0811CEA0 @ =0x040000b0
- ldrh r2, [r1, 0xA]
- ldr r0, _0811CEA4 @ =0x0000c5ff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r2, [r1, 0xA]
- ldr r0, _0811CEA8 @ =0x00007fff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r0, [r1, 0xA]
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0
- bl SetHBlankCallback
- movs r0, 0xF0
- strh r0, [r4, 0x6]
- strh r5, [r4, 0x12]
- movs r0, 0xFF
- strh r0, [r4, 0xE]
- movs r0, 0x3F
- strh r0, [r4, 0x2]
- ldr r0, _0811CEAC @ =sub_811CF74
- bl SetVBlankCallback
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- strh r0, [r6, 0x8]
- movs r0, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0811CE9C: .4byte 0x0200c000
-_0811CEA0: .4byte 0x040000b0
-_0811CEA4: .4byte 0x0000c5ff
-_0811CEA8: .4byte 0x00007fff
-_0811CEAC: .4byte sub_811CF74
- thumb_func_end sub_811CE4C
-
- thumb_func_start sub_811CEB0
-sub_811CEB0: @ 811CEB0
- push {lr}
- ldr r1, _0811CEDC @ =0x0200c000
- ldrh r0, [r1, 0x12]
- adds r0, 0x1
- strh r0, [r1, 0x12]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x10
- bls _0811CED4
- bl sub_811D6D4
- ldr r0, _0811CEE0 @ =sub_811CCDC
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
-_0811CED4:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0811CEDC: .4byte 0x0200c000
-_0811CEE0: .4byte sub_811CCDC
- thumb_func_end sub_811CEB0
-
- thumb_func_start sub_811CEE4
-sub_811CEE4: @ 811CEE4
- push {r4,lr}
- ldr r4, _0811CF48 @ =0x040000b0
- ldrh r1, [r4, 0xA]
- ldr r0, _0811CF4C @ =0x0000c5ff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r1, [r4, 0xA]
- ldr r0, _0811CF50 @ =0x00007fff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xA]
- bl sub_811D67C
- ldr r2, _0811CF54 @ =REG_BLDCNT
- ldr r1, _0811CF58 @ =0x0200c000
- ldrh r0, [r1, 0xE]
- strh r0, [r2]
- subs r2, 0x8
- ldrh r0, [r1, 0x2]
- strh r0, [r2]
- adds r2, 0x2
- ldrh r0, [r1, 0x4]
- strh r0, [r2]
- subs r2, 0x6
- ldrh r0, [r1, 0x6]
- strh r0, [r2]
- ldrb r0, [r1]
- cmp r0, 0
- beq _0811CF32
- ldr r1, _0811CF5C @ =0x040000d4
- ldr r0, _0811CF60 @ =gUnknown_03004DE0
- str r0, [r1]
- movs r2, 0xF0
- lsls r2, 3
- adds r0, r2
- str r0, [r1, 0x4]
- ldr r0, _0811CF64 @ =0x80000140
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
-_0811CF32:
- ldr r0, _0811CF68 @ =gUnknown_030056A0
- str r0, [r4]
- ldr r0, _0811CF6C @ =REG_WIN0H
- str r0, [r4, 0x4]
- ldr r0, _0811CF70 @ =0xa2400001
- str r0, [r4, 0x8]
- ldr r0, [r4, 0x8]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0811CF48: .4byte 0x040000b0
-_0811CF4C: .4byte 0x0000c5ff
-_0811CF50: .4byte 0x00007fff
-_0811CF54: .4byte REG_BLDCNT
-_0811CF58: .4byte 0x0200c000
-_0811CF5C: .4byte 0x040000d4
-_0811CF60: .4byte gUnknown_03004DE0
-_0811CF64: .4byte 0x80000140
-_0811CF68: .4byte gUnknown_030056A0
-_0811CF6C: .4byte REG_WIN0H
-_0811CF70: .4byte 0xa2400001
- thumb_func_end sub_811CEE4
-
- thumb_func_start sub_811CF74
-sub_811CF74: @ 811CF74
- push {lr}
- bl sub_811D67C
- ldr r1, _0811CFA4 @ =REG_BLDY
- ldr r2, _0811CFA8 @ =0x0200c000
- ldrh r0, [r2, 0x12]
- strh r0, [r1]
- subs r1, 0x4
- ldrh r0, [r2, 0xE]
- strh r0, [r1]
- subs r1, 0x8
- ldrh r0, [r2, 0x2]
- strh r0, [r1]
- adds r1, 0x2
- ldrh r0, [r2, 0x4]
- strh r0, [r1]
- subs r1, 0xA
- ldrh r0, [r2, 0x6]
- strh r0, [r1]
- adds r1, 0x4
- ldrh r0, [r2, 0x8]
- strh r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_0811CFA4: .4byte REG_BLDY
-_0811CFA8: .4byte 0x0200c000
- thumb_func_end sub_811CF74
-
- thumb_func_start sub_811CFAC
-sub_811CFAC: @ 811CFAC
- ldr r2, _0811CFC4 @ =REG_BLDY
- ldr r1, _0811CFC8 @ =gUnknown_03004DE0
- ldr r0, _0811CFCC @ =REG_VCOUNT
- ldrh r0, [r0]
- lsls r0, 1
- movs r3, 0xF0
- lsls r3, 3
- adds r1, r3
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r2]
- bx lr
- .align 2, 0
-_0811CFC4: .4byte REG_BLDY
-_0811CFC8: .4byte gUnknown_03004DE0
-_0811CFCC: .4byte REG_VCOUNT
- thumb_func_end sub_811CFAC
-
- thumb_func_start sub_811CFD0
-sub_811CFD0: @ 811CFD0
- push {r4-r6,lr}
- adds r3, r0, 0
- ldrh r1, [r3, 0x38]
- movs r2, 0x38
- ldrsh r0, [r3, r2]
- cmp r0, 0
- beq _0811CFF8
- subs r0, r1, 0x1
- strh r0, [r3, 0x38]
- movs r1, 0x3A
- ldrsh r0, [r3, r1]
- cmp r0, 0
- beq _0811D0AA
- ldr r0, _0811CFF4 @ =0x0200c000
- ldrb r1, [r0]
- movs r1, 0x1
- strb r1, [r0]
- b _0811D0AA
- .align 2, 0
-_0811CFF4: .4byte 0x0200c000
-_0811CFF8:
- movs r2, 0x22
- ldrsh r1, [r3, r2]
- lsls r1, 1
- ldr r0, _0811D0B0 @ =gUnknown_03004DE0
- adds r6, r1, r0
- movs r2, 0xA0
- lsls r2, 1
- adds r0, r2
- adds r5, r1, r0
- movs r4, 0
-_0811D00C:
- lsls r1, r4, 1
- adds r2, r1, r6
- ldrh r0, [r3, 0x2E]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r2]
- adds r1, r5
- ldrh r0, [r3, 0x20]
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x13
- bls _0811D00C
- movs r1, 0x20
- ldrsh r0, [r3, r1]
- ldrh r2, [r3, 0x20]
- cmp r0, 0
- bne _0811D046
- movs r0, 0x2E
- ldrsh r1, [r3, r0]
- movs r0, 0x80
- lsls r0, 5
- cmp r1, r0
- bne _0811D046
- movs r0, 0x1
- strh r0, [r3, 0x30]
-_0811D046:
- adds r1, r2, 0
- subs r1, 0x10
- strh r1, [r3, 0x20]
- ldrh r0, [r3, 0x2E]
- adds r0, 0x80
- strh r0, [r3, 0x2E]
- lsls r1, 16
- cmp r1, 0
- bge _0811D05C
- movs r0, 0
- strh r0, [r3, 0x20]
-_0811D05C:
- movs r1, 0x2E
- ldrsh r0, [r3, r1]
- movs r1, 0x80
- lsls r1, 5
- cmp r0, r1
- ble _0811D06A
- strh r1, [r3, 0x2E]
-_0811D06A:
- movs r0, 0x3A
- ldrsh r2, [r3, r0]
- cmp r2, 0
- beq _0811D07A
- ldr r0, _0811D0B4 @ =0x0200c000
- ldrb r1, [r0]
- movs r1, 0x1
- strb r1, [r0]
-_0811D07A:
- movs r1, 0x30
- ldrsh r0, [r3, r1]
- cmp r0, 0
- beq _0811D0AA
- ldr r4, _0811D0B4 @ =0x0200c000
- cmp r2, 0
- beq _0811D09E
- movs r2, 0x20
- ldrsh r0, [r4, r2]
- cmp r0, 0x6
- ble _0811D0AA
- ldrh r0, [r3, 0x32]
- adds r1, r0, 0x1
- strh r1, [r3, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- ble _0811D0AA
-_0811D09E:
- ldrh r0, [r4, 0x20]
- adds r0, 0x1
- strh r0, [r4, 0x20]
- adds r0, r3, 0
- bl DestroySprite
-_0811D0AA:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0811D0B0: .4byte gUnknown_03004DE0
-_0811D0B4: .4byte 0x0200c000
- thumb_func_end sub_811CFD0
-
- thumb_func_start sub_811D0B8
-sub_811D0B8: @ 811D0B8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0811D0E8 @ =gUnknown_083FD8D4
- ldr r2, _0811D0EC @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0811D0CA:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0811D0CA
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811D0E8: .4byte gUnknown_083FD8D4
-_0811D0EC: .4byte gTasks
- thumb_func_end sub_811D0B8
-
- thumb_func_start sub_811D0F0
-sub_811D0F0: @ 811D0F0
- push {r4,lr}
- sub sp, 0xC
- adds r4, r0, 0
- add r0, sp, 0x4
- add r1, sp, 0x8
- bl sub_811D6A8
- ldr r0, _0811D138 @ =gUnknown_083FD528
- ldr r1, [sp, 0x8]
- movs r2, 0x10
- bl CpuSet
- mov r1, sp
- movs r2, 0xF0
- lsls r2, 8
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, [sp, 0x4]
- ldr r2, _0811D13C @ =0x01000400
- mov r0, sp
- bl CpuSet
- ldr r0, _0811D140 @ =gFieldEffectObjectPalette10
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0
- add sp, 0xC
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811D138: .4byte gUnknown_083FD528
-_0811D13C: .4byte 0x01000400
-_0811D140: .4byte gFieldEffectObjectPalette10
- thumb_func_end sub_811D0F0
-
- thumb_func_start sub_811D144
-sub_811D144: @ 811D144
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _0811D186
- mov r0, sp
- bl sub_811D690
- movs r0, 0x3
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- lsls r0, 5
- ldr r1, _0811D198 @ =gUnknown_083FD528
- adds r0, r1
- ldr r1, [sp]
- movs r2, 0x10
- bl CpuSet
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0xD
- ble _0811D186
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0x10
- strh r0, [r4, 0xA]
-_0811D186:
- ldrh r0, [r4, 0xA]
- subs r0, 0x1
- strh r0, [r4, 0xA]
- movs r0, 0
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811D198: .4byte gUnknown_083FD528
- thumb_func_end sub_811D144
-
- thumb_func_start sub_811D19C
-sub_811D19C: @ 811D19C
- push {lr}
- ldrh r1, [r0, 0xA]
- subs r1, 0x1
- strh r1, [r0, 0xA]
- lsls r1, 16
- cmp r1, 0
- bne _0811D1BC
- bl sub_811D6D4
- ldr r0, _0811D1C4 @ =sub_811D0B8
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
-_0811D1BC:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0811D1C4: .4byte sub_811D0B8
- thumb_func_end sub_811D19C
-
- thumb_func_start sub_811D1C8
-sub_811D1C8: @ 811D1C8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0811D1F8 @ =gUnknown_083FD8E0
- ldr r2, _0811D1FC @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0811D1DA:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0811D1DA
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811D1F8: .4byte gUnknown_083FD8E0
-_0811D1FC: .4byte gTasks
- thumb_func_end sub_811D1C8
-
- thumb_func_start sub_811D200
-sub_811D200: @ 811D200
- push {r4,r5,lr}
- adds r5, r0, 0
- bl sub_811D658
- bl dp12_8087EA4
- ldr r1, _0811D254 @ =0x0200c000
- movs r2, 0
- movs r0, 0x3F
- strh r0, [r1, 0x2]
- strh r2, [r1, 0x4]
- movs r0, 0xA0
- strh r0, [r1, 0x8]
- movs r1, 0
- ldr r2, _0811D258 @ =gUnknown_03004DE0
- movs r3, 0xF0
- adds r4, r2, 0
-_0811D222:
- lsls r0, r1, 1
- adds r0, r2
- strh r3, [r0]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0x9F
- bls _0811D222
- movs r0, 0xF0
- lsls r0, 3
- adds r1, r4, r0
- adds r0, r4, 0
- movs r2, 0xA0
- bl CpuSet
- ldr r0, _0811D25C @ =sub_811D438
- bl SetVBlankCallback
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0811D254: .4byte 0x0200c000
-_0811D258: .4byte gUnknown_03004DE0
-_0811D25C: .4byte sub_811D438
- thumb_func_end sub_811D200
-
- thumb_func_start sub_811D260
-sub_811D260: @ 811D260
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0xC
- mov r8, r0
- ldr r0, _0811D2D0 @ =0x0200c024
- ldr r6, _0811D2D4 @ =gUnknown_083FD8F4
- mov r2, r8
- movs r3, 0xA
- ldrsh r1, [r2, r3]
- lsls r4, r1, 2
- adds r4, r1
- lsls r4, 1
- adds r1, r4, r6
- movs r5, 0
- ldrsh r1, [r1, r5]
- adds r2, r6, 0x2
- adds r2, r4, r2
- movs r3, 0
- ldrsh r2, [r2, r3]
- adds r3, r6, 0x4
- adds r3, r4, r3
- movs r5, 0
- ldrsh r3, [r3, r5]
- adds r5, r6, 0x6
- adds r4, r5
- movs r5, 0
- ldrsh r4, [r4, r5]
- str r4, [sp]
- movs r4, 0x1
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- bl sub_811D8FC
- mov r0, r8
- movs r2, 0xA
- ldrsh r1, [r0, r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 1
- adds r6, 0x8
- adds r0, r6
- ldrh r0, [r0]
- mov r3, r8
- strh r0, [r3, 0xC]
- ldrh r0, [r3, 0x8]
- adds r0, 0x1
- strh r0, [r3, 0x8]
- movs r0, 0x1
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0811D2D0: .4byte 0x0200c024
-_0811D2D4: .4byte gUnknown_083FD8F4
- thumb_func_end sub_811D260
-
- thumb_func_start sub_811D2D8
-sub_811D2D8: @ 811D2D8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r7, r0, 0
- ldr r0, _0811D324 @ =0x0200c000
- ldrb r1, [r0]
- movs r1, 0
- strb r1, [r0]
- mov r8, r1
- mov r12, r1
- adds r6, r0, 0
- ldr r0, _0811D328 @ =gUnknown_03004DE0
- mov r9, r0
-_0811D2F4:
- ldr r1, _0811D328 @ =gUnknown_03004DE0
- movs r2, 0x2A
- ldrsh r0, [r6, r2]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- lsrs r3, r0, 8
- movs r4, 0xFF
- ands r4, r0
- movs r1, 0xC
- ldrsh r0, [r7, r1]
- cmp r0, 0
- bne _0811D32C
- movs r2, 0x28
- ldrsh r0, [r6, r2]
- cmp r3, r0
- bge _0811D318
- ldrh r3, [r6, 0x28]
-_0811D318:
- lsls r0, r3, 16
- lsls r1, r4, 16
- cmp r0, r1
- ble _0811D344
- lsrs r3, r1, 16
- b _0811D344
- .align 2, 0
-_0811D324: .4byte 0x0200c000
-_0811D328: .4byte gUnknown_03004DE0
-_0811D32C:
- lsls r0, r4, 16
- asrs r0, 16
- movs r2, 0x28
- ldrsh r1, [r6, r2]
- cmp r0, r1
- ble _0811D33A
- ldrh r4, [r6, 0x28]
-_0811D33A:
- lsls r0, r4, 16
- lsls r1, r3, 16
- cmp r0, r1
- bgt _0811D344
- lsrs r4, r1, 16
-_0811D344:
- ldr r5, _0811D368 @ =0x0200c000
- movs r0, 0x2A
- ldrsh r2, [r5, r0]
- lsls r2, 1
- add r2, r9
- lsls r1, r3, 16
- asrs r1, 8
- lsls r0, r4, 16
- asrs r0, 16
- orrs r0, r1
- strh r0, [r2]
- mov r1, r12
- cmp r1, 0
- beq _0811D36C
- ldrh r0, [r7, 0x8]
- adds r0, 0x1
- strh r0, [r7, 0x8]
- b _0811D392
- .align 2, 0
-_0811D368: .4byte 0x0200c000
-_0811D36C:
- adds r0, r5, 0
- adds r0, 0x24
- movs r1, 0x1
- movs r2, 0x1
- bl sub_811D978
- lsls r0, 24
- lsrs r0, 24
- mov r12, r0
- mov r2, r8
- lsls r0, r2, 16
- movs r1, 0x80
- lsls r1, 9
- adds r0, r1
- lsrs r2, r0, 16
- mov r8, r2
- asrs r0, 16
- cmp r0, 0xF
- ble _0811D2F4
-_0811D392:
- ldr r0, _0811D3AC @ =0x0200c000
- ldrb r1, [r0]
- adds r1, 0x1
- ldrb r2, [r0]
- strb r1, [r0]
- movs r0, 0
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0811D3AC: .4byte 0x0200c000
- thumb_func_end sub_811D2D8
-
- thumb_func_start sub_811D3B0
-sub_811D3B0: @ 811D3B0
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0xA]
- adds r0, 0x1
- strh r0, [r2, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- ble _0811D3FC
- ldr r1, _0811D3EC @ =0x040000b0
- ldrh r2, [r1, 0xA]
- ldr r0, _0811D3F0 @ =0x0000c5ff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r2, [r1, 0xA]
- ldr r0, _0811D3F4 @ =0x00007fff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r0, [r1, 0xA]
- bl sub_811D6D4
- ldr r0, _0811D3F8 @ =sub_811D1C8
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- movs r0, 0
- b _0811D414
- .align 2, 0
-_0811D3EC: .4byte 0x040000b0
-_0811D3F0: .4byte 0x0000c5ff
-_0811D3F4: .4byte 0x00007fff
-_0811D3F8: .4byte sub_811D1C8
-_0811D3FC:
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
- ldr r1, _0811D418 @ =gUnknown_083FD93A
- movs r3, 0xA
- ldrsh r0, [r2, r3]
- subs r0, 0x1
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r2, 0xE]
- movs r0, 0x1
-_0811D414:
- pop {r1}
- bx r1
- .align 2, 0
-_0811D418: .4byte gUnknown_083FD93A
- thumb_func_end sub_811D3B0
-
- thumb_func_start sub_811D41C
-sub_811D41C: @ 811D41C
- push {lr}
- adds r1, r0, 0
- ldrh r0, [r1, 0xE]
- subs r0, 0x1
- strh r0, [r1, 0xE]
- lsls r0, 16
- cmp r0, 0
- beq _0811D430
- movs r0, 0
- b _0811D434
-_0811D430:
- movs r0, 0x1
- strh r0, [r1, 0x8]
-_0811D434:
- pop {r1}
- bx r1
- thumb_func_end sub_811D41C
-
- thumb_func_start sub_811D438
-sub_811D438: @ 811D438
- push {r4,lr}
- ldr r4, _0811D4A0 @ =0x040000b0
- ldrh r1, [r4, 0xA]
- ldr r0, _0811D4A4 @ =0x0000c5ff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r1, [r4, 0xA]
- ldr r0, _0811D4A8 @ =0x00007fff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xA]
- bl sub_811D67C
- ldr r2, _0811D4AC @ =0x0200c000
- ldrb r0, [r2]
- cmp r0, 0
- beq _0811D46E
- ldr r1, _0811D4B0 @ =0x040000d4
- ldr r0, _0811D4B4 @ =gUnknown_03004DE0
- str r0, [r1]
- movs r3, 0xF0
- lsls r3, 3
- adds r0, r3
- str r0, [r1, 0x4]
- ldr r0, _0811D4B8 @ =0x800000a0
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
-_0811D46E:
- ldr r1, _0811D4BC @ =REG_WININ
- ldrh r0, [r2, 0x2]
- strh r0, [r1]
- adds r1, 0x2
- ldrh r0, [r2, 0x4]
- strh r0, [r1]
- subs r1, 0x6
- ldrh r0, [r2, 0x8]
- strh r0, [r1]
- ldr r2, _0811D4C0 @ =REG_WIN0H
- ldr r0, _0811D4B4 @ =gUnknown_03004DE0
- movs r1, 0xF0
- lsls r1, 3
- adds r0, r1
- ldrh r1, [r0]
- strh r1, [r2]
- str r0, [r4]
- str r2, [r4, 0x4]
- ldr r0, _0811D4C4 @ =0xa2400001
- str r0, [r4, 0x8]
- ldr r0, [r4, 0x8]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0811D4A0: .4byte 0x040000b0
-_0811D4A4: .4byte 0x0000c5ff
-_0811D4A8: .4byte 0x00007fff
-_0811D4AC: .4byte 0x0200c000
-_0811D4B0: .4byte 0x040000d4
-_0811D4B4: .4byte gUnknown_03004DE0
-_0811D4B8: .4byte 0x800000a0
-_0811D4BC: .4byte REG_WININ
-_0811D4C0: .4byte REG_WIN0H
-_0811D4C4: .4byte 0xa2400001
- thumb_func_end sub_811D438
-
- thumb_func_start sub_811D4C8
-sub_811D4C8: @ 811D4C8
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x4
- mov r8, r0
- adds r4, r1, 0
- adds r5, r2, 0
- adds r6, r3, 0
- ldr r3, [sp, 0x18]
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 16
- lsrs r5, 16
- lsls r6, 16
- lsrs r6, 16
- lsls r3, 16
- lsrs r3, 16
- ldr r0, _0811D524 @ =sub_811D54C
- movs r1, 0x3
- str r3, [sp]
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0811D528 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- mov r0, r8
- strh r0, [r1, 0xA]
- strh r4, [r1, 0xC]
- strh r5, [r1, 0xE]
- strh r6, [r1, 0x10]
- ldr r3, [sp]
- strh r3, [r1, 0x12]
- strh r0, [r1, 0x14]
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0811D524: .4byte sub_811D54C
-_0811D528: .4byte gTasks
- thumb_func_end sub_811D4C8
-
- thumb_func_start sub_811D52C
-sub_811D52C: @ 811D52C
- push {lr}
- ldr r0, _0811D540 @ =sub_811D54C
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _0811D544
- movs r0, 0
- b _0811D546
- .align 2, 0
-_0811D540: .4byte sub_811D54C
-_0811D544:
- movs r0, 0x1
-_0811D546:
- pop {r1}
- bx r1
- thumb_func_end sub_811D52C
-
- thumb_func_start sub_811D54C
-sub_811D54C: @ 811D54C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0811D57C @ =gUnknown_083FD948
- ldr r2, _0811D580 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0811D55E:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0811D55E
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811D57C: .4byte gUnknown_083FD948
-_0811D580: .4byte gTasks
- thumb_func_end sub_811D54C
-
- thumb_func_start sub_811D584
-sub_811D584: @ 811D584
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x14]
- movs r2, 0x14
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _0811D59C
- subs r0, r1, 0x1
- strh r0, [r4, 0x14]
- lsls r0, 16
- cmp r0, 0
- bne _0811D5C0
-_0811D59C:
- ldrh r0, [r4, 0xA]
- strh r0, [r4, 0x14]
- ldrh r0, [r4, 0x10]
- ldrh r1, [r4, 0x16]
- adds r0, r1
- strh r0, [r4, 0x16]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- ble _0811D5B4
- movs r0, 0x10
- strh r0, [r4, 0x16]
-_0811D5B4:
- movs r0, 0x1
- negs r0, r0
- ldrb r1, [r4, 0x16]
- ldr r2, _0811D5DC @ =0x00002d6b
- bl BlendPalettes
-_0811D5C0:
- movs r2, 0x16
- ldrsh r0, [r4, r2]
- cmp r0, 0xF
- ble _0811D5D2
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- ldrh r0, [r4, 0xC]
- strh r0, [r4, 0x14]
-_0811D5D2:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811D5DC: .4byte 0x00002d6b
- thumb_func_end sub_811D584
-
- thumb_func_start sub_811D5E0
-sub_811D5E0: @ 811D5E0
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x14]
- movs r2, 0x14
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _0811D5F8
- subs r0, r1, 0x1
- strh r0, [r4, 0x14]
- lsls r0, 16
- cmp r0, 0
- bne _0811D61A
-_0811D5F8:
- ldrh r0, [r4, 0xC]
- strh r0, [r4, 0x14]
- ldrh r0, [r4, 0x16]
- ldrh r1, [r4, 0x12]
- subs r0, r1
- strh r0, [r4, 0x16]
- lsls r0, 16
- cmp r0, 0
- bge _0811D60E
- movs r0, 0
- strh r0, [r4, 0x16]
-_0811D60E:
- movs r0, 0x1
- negs r0, r0
- ldrb r1, [r4, 0x16]
- ldr r2, _0811D640 @ =0x00002d6b
- bl BlendPalettes
-_0811D61A:
- movs r0, 0x16
- ldrsh r1, [r4, r0]
- cmp r1, 0
- bne _0811D64E
- ldrh r0, [r4, 0xE]
- subs r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- cmp r0, 0
- bne _0811D648
- ldr r0, _0811D644 @ =sub_811D54C
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- b _0811D64E
- .align 2, 0
-_0811D640: .4byte 0x00002d6b
-_0811D644: .4byte sub_811D54C
-_0811D648:
- ldrh r0, [r4, 0xA]
- strh r0, [r4, 0x14]
- strh r1, [r4, 0x8]
-_0811D64E:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811D5E0
-
- thumb_func_start sub_811D658
-sub_811D658: @ 811D658
- push {lr}
- ldr r0, _0811D674 @ =gUnknown_083FD708
- ldr r0, [r0]
- movs r1, 0
- movs r2, 0x3C
- bl memset
- ldr r0, _0811D678 @ =0x0200c014
- adds r1, r0, 0x2
- bl sub_8057B14
- pop {r0}
- bx r0
- .align 2, 0
-_0811D674: .4byte gUnknown_083FD708
-_0811D678: .4byte 0x0200c014
- thumb_func_end sub_811D658
-
- thumb_func_start sub_811D67C
-sub_811D67C: @ 811D67C
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_811D67C
-
- thumb_func_start sub_811D690
-sub_811D690: @ 811D690
- ldr r1, _0811D6A4 @ =REG_BG0CNT
- ldrh r1, [r1]
- lsrs r1, 2
- lsls r1, 30
- lsrs r1, 16
- movs r2, 0xC0
- lsls r2, 19
- adds r1, r2
- str r1, [r0]
- bx lr
- .align 2, 0
-_0811D6A4: .4byte REG_BG0CNT
- thumb_func_end sub_811D690
-
- thumb_func_start sub_811D6A8
-sub_811D6A8: @ 811D6A8
- push {r4,lr}
- ldr r3, _0811D6D0 @ =REG_BG0CNT
- ldrh r2, [r3]
- lsrs r2, 8
- ldrh r3, [r3]
- lsrs r3, 2
- lsls r2, 27
- lsrs r2, 16
- lsls r3, 30
- lsrs r3, 16
- movs r4, 0xC0
- lsls r4, 19
- adds r2, r4
- str r2, [r0]
- adds r3, r4
- str r3, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0811D6D0: .4byte REG_BG0CNT
- thumb_func_end sub_811D6A8
-
- thumb_func_start sub_811D6D4
-sub_811D6D4: @ 811D6D4
- push {lr}
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- pop {r0}
- bx r0
- thumb_func_end sub_811D6D4
-
- thumb_func_start sub_811D6E8
-sub_811D6E8: @ 811D6E8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- mov r10, r0
- ldr r0, [sp, 0x20]
- ldr r4, [sp, 0x24]
- lsls r1, 16
- lsrs r7, r1, 16
- lsls r2, 16
- lsrs r2, 16
- lsls r3, 16
- lsrs r3, 16
- lsls r0, 16
- lsrs r1, r0, 16
- lsls r4, 16
- movs r6, 0
- lsrs r5, r4, 16
- cmp r4, 0
- ble _0811D750
- lsls r0, r7, 16
- asrs r0, 16
- mov r9, r0
- lsls r1, 16
- mov r8, r1
- lsls r0, r3, 16
- asrs r7, r0, 16
-_0811D720:
- lsls r4, r2, 16
- asrs r4, 16
- movs r0, 0xFF
- ands r0, r4
- mov r2, r8
- asrs r1, r2, 16
- bl Sin
- lsls r1, r6, 1
- add r1, r10
- add r0, r9
- strh r0, [r1]
- lsls r1, r5, 16
- ldr r0, _0811D760 @ =0xffff0000
- adds r1, r0
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- adds r4, r7
- lsls r4, 16
- lsrs r2, r4, 16
- lsrs r5, r1, 16
- cmp r1, 0
- bgt _0811D720
-_0811D750:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0811D760: .4byte 0xffff0000
- thumb_func_end sub_811D6E8
-
- thumb_func_start sub_811D764
-sub_811D764: @ 811D764
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- mov r9, r0
- adds r5, r2, 0
- adds r4, r3, 0
- lsls r1, 16
- lsrs r1, 16
- str r1, [sp]
- lsls r5, 16
- lsrs r5, 16
- lsls r4, 16
- lsrs r4, 16
- movs r2, 0xA0
- lsls r2, 1
- movs r1, 0xA
- bl memset
- movs r1, 0
- lsls r4, 16
- asrs r4, 16
- str r4, [sp, 0x4]
- lsls r5, 16
- asrs r5, 16
- str r5, [sp, 0x8]
-_0811D79C:
- lsls r5, r1, 16
- asrs r0, r5, 16
- mov r10, r0
- ldr r1, [sp, 0x4]
- bl Sin
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- mov r0, r10
- ldr r1, [sp, 0x4]
- bl Cos
- ldr r2, [sp]
- lsls r1, r2, 16
- asrs r1, 16
- lsls r4, 16
- asrs r4, 16
- subs r2, r1, r4
- lsls r2, 16
- adds r1, r4
- lsls r1, 16
- lsrs r6, r1, 16
- lsls r0, 16
- asrs r0, 16
- ldr r3, [sp, 0x8]
- subs r1, r3, r0
- lsls r1, 16
- lsrs r7, r1, 16
- adds r0, r3, r0
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- lsrs r1, r2, 16
- str r5, [sp, 0x10]
- cmp r2, 0
- bge _0811D7E8
- movs r1, 0
-_0811D7E8:
- lsls r0, r6, 16
- asrs r0, 16
- cmp r0, 0xF0
- ble _0811D7F2
- movs r6, 0xF0
-_0811D7F2:
- lsls r0, r7, 16
- cmp r0, 0
- bge _0811D7FA
- movs r7, 0
-_0811D7FA:
- mov r2, r8
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, 0x9F
- ble _0811D808
- movs r3, 0x9F
- mov r8, r3
-_0811D808:
- lsls r0, r1, 24
- lsrs r0, 16
- orrs r6, r0
- lsls r0, r7, 16
- asrs r0, 16
- str r0, [sp, 0xC]
- lsls r0, 1
- add r0, r9
- strh r6, [r0]
- mov r0, r8
- lsls r4, r0, 16
- asrs r0, r4, 15
- add r0, r9
- strh r6, [r0]
- mov r0, r10
- adds r0, 0x1
- lsls r0, 16
- asrs r0, 16
- ldr r1, [sp, 0x4]
- bl Cos
- lsls r0, 16
- asrs r0, 16
- ldr r2, [sp, 0x8]
- subs r1, r2, r0
- lsls r1, 16
- adds r0, r2, r0
- lsls r0, 16
- lsrs r2, r0, 16
- lsrs r3, r1, 16
- cmp r1, 0
- bge _0811D84A
- movs r3, 0
-_0811D84A:
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, 0x9F
- ble _0811D854
- movs r2, 0x9F
-_0811D854:
- lsls r0, r3, 16
- asrs r1, r0, 16
- adds r3, r0, 0
- lsls r5, r2, 16
- ldr r0, [sp, 0xC]
- cmp r0, r1
- ble _0811D878
- adds r2, r1, 0
-_0811D864:
- lsls r1, r7, 16
- ldr r0, _0811D8F8 @ =0xffff0000
- adds r1, r0
- asrs r0, r1, 15
- add r0, r9
- strh r6, [r0]
- lsrs r7, r1, 16
- asrs r1, 16
- cmp r1, r2
- bgt _0811D864
-_0811D878:
- lsls r1, r7, 16
- asrs r0, r3, 16
- cmp r1, r3
- bge _0811D896
- adds r2, r0, 0
-_0811D882:
- movs r3, 0x80
- lsls r3, 9
- adds r0, r1, r3
- asrs r1, r0, 15
- add r1, r9
- strh r6, [r1]
- adds r1, r0, 0
- asrs r0, r1, 16
- cmp r0, r2
- blt _0811D882
-_0811D896:
- asrs r0, r5, 16
- cmp r4, r5
- ble _0811D8B4
- adds r1, r0, 0
-_0811D89E:
- ldr r2, _0811D8F8 @ =0xffff0000
- adds r0, r4, r2
- lsrs r3, r0, 16
- mov r8, r3
- asrs r0, 15
- add r0, r9
- strh r6, [r0]
- lsls r4, r3, 16
- asrs r0, r4, 16
- cmp r0, r1
- bgt _0811D89E
-_0811D8B4:
- mov r0, r8
- lsls r4, r0, 16
- asrs r0, r5, 16
- cmp r4, r5
- bge _0811D8D4
- adds r2, r0, 0
-_0811D8C0:
- movs r1, 0x80
- lsls r1, 9
- adds r0, r4, r1
- asrs r1, r0, 15
- add r1, r9
- strh r6, [r1]
- adds r4, r0, 0
- asrs r0, r4, 16
- cmp r0, r2
- blt _0811D8C0
-_0811D8D4:
- ldr r2, [sp, 0x10]
- movs r3, 0x80
- lsls r3, 9
- adds r0, r2, r3
- lsrs r1, r0, 16
- asrs r0, 16
- cmp r0, 0x3F
- bgt _0811D8E6
- b _0811D79C
-_0811D8E6:
- 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
-_0811D8F8: .4byte 0xffff0000
- thumb_func_end sub_811D764
-
- thumb_func_start sub_811D8FC
-sub_811D8FC: @ 811D8FC
- push {r4-r7,lr}
- adds r6, r0, 0
- ldr r0, [sp, 0x14]
- ldr r5, [sp, 0x18]
- ldr r4, [sp, 0x1C]
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 16
- lsrs r2, 16
- lsls r3, 16
- lsrs r3, 16
- lsls r0, 16
- lsrs r0, 16
- adds r7, r0, 0
- lsls r5, 16
- lsrs r5, 16
- lsls r4, 16
- lsrs r4, 16
- strh r1, [r6]
- strh r2, [r6, 0x2]
- strh r1, [r6, 0x4]
- strh r2, [r6, 0x6]
- strh r3, [r6, 0x8]
- strh r7, [r6, 0xA]
- strh r5, [r6, 0xC]
- strh r4, [r6, 0xE]
- lsls r3, 16
- asrs r3, 16
- lsls r1, 16
- asrs r1, 16
- subs r3, r1
- strh r3, [r6, 0x10]
- lsls r0, r3, 16
- cmp r0, 0
- bge _0811D94E
- negs r0, r3
- strh r0, [r6, 0x10]
- lsls r0, r5, 16
- asrs r0, 16
- negs r0, r0
- strh r0, [r6, 0xC]
-_0811D94E:
- lsls r0, r7, 16
- asrs r0, 16
- lsls r1, r2, 16
- asrs r1, 16
- subs r1, r0, r1
- strh r1, [r6, 0x12]
- lsls r0, r1, 16
- cmp r0, 0
- bge _0811D96C
- negs r0, r1
- strh r0, [r6, 0x12]
- lsls r0, r4, 16
- asrs r0, 16
- negs r0, r0
- strh r0, [r6, 0xE]
-_0811D96C:
- movs r0, 0
- strh r0, [r6, 0x14]
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_811D8FC
-
- thumb_func_start sub_811D978
-sub_811D978: @ 811D978
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r3, r0, 0
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- lsls r2, 24
- lsrs r2, 24
- mov r10, r2
- ldrh r0, [r3, 0x10]
- mov r8, r0
- movs r1, 0x10
- ldrsh r6, [r3, r1]
- ldrh r2, [r3, 0x12]
- mov r12, r2
- movs r4, 0x12
- ldrsh r5, [r3, r4]
- cmp r6, r5
- ble _0811D9C8
- ldrh r0, [r3, 0xC]
- ldrh r2, [r3, 0x4]
- adds r1, r0, r2
- strh r1, [r3, 0x4]
- ldrh r2, [r3, 0x14]
- add r2, r12
- strh r2, [r3, 0x14]
- lsls r1, r2, 16
- asrs r1, 16
- adds r4, r0, 0
- ldrh r7, [r3, 0xE]
- cmp r1, r6
- ble _0811D9EE
- ldrh r1, [r3, 0x6]
- adds r0, r7, r1
- strh r0, [r3, 0x6]
- mov r1, r8
- b _0811D9EA
-_0811D9C8:
- ldrh r0, [r3, 0xE]
- ldrh r2, [r3, 0x6]
- adds r1, r0, r2
- strh r1, [r3, 0x6]
- ldrh r2, [r3, 0x14]
- add r2, r8
- strh r2, [r3, 0x14]
- lsls r1, r2, 16
- asrs r1, 16
- ldrh r4, [r3, 0xC]
- adds r7, r0, 0
- cmp r1, r5
- ble _0811D9EE
- ldrh r1, [r3, 0x4]
- adds r0, r4, r1
- strh r0, [r3, 0x4]
- mov r1, r12
-_0811D9EA:
- subs r0, r2, r1
- strh r0, [r3, 0x14]
-_0811D9EE:
- movs r5, 0
- lsls r0, r4, 16
- asrs r2, r0, 16
- cmp r2, 0
- ble _0811DA06
- movs r4, 0x4
- ldrsh r1, [r3, r4]
- movs r4, 0x8
- ldrsh r0, [r3, r4]
- ldrh r4, [r3, 0x8]
- cmp r1, r0
- bge _0811DA18
-_0811DA06:
- cmp r2, 0
- bge _0811DA26
- movs r0, 0x4
- ldrsh r1, [r3, r0]
- movs r2, 0x8
- ldrsh r0, [r3, r2]
- ldrh r4, [r3, 0x8]
- cmp r1, r0
- bgt _0811DA26
-_0811DA18:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- mov r0, r9
- cmp r0, 0
- beq _0811DA26
- strh r4, [r3, 0x4]
-_0811DA26:
- lsls r0, r7, 16
- asrs r2, r0, 16
- cmp r2, 0
- ble _0811DA3C
- movs r4, 0x6
- ldrsh r1, [r3, r4]
- movs r4, 0xA
- ldrsh r0, [r3, r4]
- ldrh r4, [r3, 0xA]
- cmp r1, r0
- bge _0811DA4E
-_0811DA3C:
- cmp r2, 0
- bge _0811DA5C
- movs r0, 0x6
- ldrsh r1, [r3, r0]
- movs r2, 0xA
- ldrsh r0, [r3, r2]
- ldrh r4, [r3, 0xA]
- cmp r1, r0
- bgt _0811DA5C
-_0811DA4E:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- mov r0, r10
- cmp r0, 0
- beq _0811DA5C
- strh r4, [r3, 0x6]
-_0811DA5C:
- cmp r5, 0x2
- beq _0811DA64
- movs r0, 0
- b _0811DA66
-_0811DA64:
- movs r0, 0x1
-_0811DA66:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_811D978
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/berry_blender.s b/asm/berry_blender.s
deleted file mode 100644
index b6ee5f9f3..000000000
--- a/asm/berry_blender.s
+++ /dev/null
@@ -1,9164 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_804E290
-sub_804E290: @ 804E290
- push {lr}
- ldr r0, _0804E2B0 @ =gMPlay_SE2
- ldr r1, _0804E2B4 @ =0x0000ffff
- ldr r2, _0804E2B8 @ =gUnknown_03004854
- ldr r2, [r2]
- adds r2, 0x56
- movs r3, 0
- ldrsh r2, [r2, r3]
- subs r2, 0x80
- lsls r2, 17
- asrs r2, 16
- bl m4aMPlayPitchControl
- pop {r0}
- bx r0
- .align 2, 0
-_0804E2B0: .4byte gMPlay_SE2
-_0804E2B4: .4byte 0x0000ffff
-_0804E2B8: .4byte gUnknown_03004854
- thumb_func_end sub_804E290
-
- thumb_func_start sub_804E2BC
-sub_804E2BC: @ 804E2BC
- push {lr}
- bl sub_80514A4
- bl sub_80514F0
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_804E2BC
-
- thumb_func_start sub_804E2D8
-sub_804E2D8: @ 804E2D8
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_804E2D8
-
- thumb_func_start sub_804E2EC
-sub_804E2EC: @ 804E2EC
- push {r4-r7,lr}
- ldr r1, _0804E308 @ =gUnknown_03004854
- ldr r0, [r1]
- ldrb r0, [r0, 0x1]
- mov r12, r1
- cmp r0, 0x9
- bls _0804E2FC
- b _0804E4F4
-_0804E2FC:
- lsls r0, 2
- ldr r1, _0804E30C @ =_0804E310
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0804E308: .4byte gUnknown_03004854
-_0804E30C: .4byte _0804E310
- .align 2, 0
-_0804E310:
- .4byte _0804E338
- .4byte _0804E34C
- .4byte _0804E380
- .4byte _0804E3C4
- .4byte _0804E3D8
- .4byte _0804E3EC
- .4byte _0804E410
- .4byte _0804E434
- .4byte _0804E48C
- .4byte _0804E4BC
-_0804E338:
- ldr r0, _0804E344 @ =gUnknown_08E6C100
- ldr r1, _0804E348 @ =0x02010000
- bl sub_800D238
- b _0804E49E
- .align 2, 0
-_0804E344: .4byte gUnknown_08E6C100
-_0804E348: .4byte 0x02010000
-_0804E34C:
- ldr r1, _0804E36C @ =gUnknown_08215C2C
- ldr r2, _0804E370 @ =0x06004000
- ldr r0, _0804E374 @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _0804E378 @ =0x80000200
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- ldr r0, _0804E37C @ =gUnknown_08215C0C
- movs r2, 0x80
- lsls r2, 1
- movs r1, 0
- bl LoadPalette
- b _0804E49E
- .align 2, 0
-_0804E36C: .4byte gUnknown_08215C2C
-_0804E370: .4byte 0x06004000
-_0804E374: .4byte 0x040000d4
-_0804E378: .4byte 0x80000200
-_0804E37C: .4byte gUnknown_08215C0C
-_0804E380:
- ldr r3, _0804E3B8 @ =0x02010000
- movs r4, 0xC0
- lsls r4, 19
- movs r5, 0x80
- lsls r5, 6
- ldr r1, _0804E3BC @ =0x040000d4
- ldr r6, _0804E3C0 @ =0x80000800
- movs r2, 0x80
- lsls r2, 5
- movs r7, 0x80
- lsls r7, 24
-_0804E396:
- str r3, [r1]
- str r4, [r1, 0x4]
- str r6, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r3, r2
- adds r4, r2
- subs r5, r2
- cmp r5, r2
- bhi _0804E396
- str r3, [r1]
- str r4, [r1, 0x4]
- lsrs r0, r5, 1
- orrs r0, r7
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- mov r0, r12
- b _0804E4A0
- .align 2, 0
-_0804E3B8: .4byte 0x02010000
-_0804E3BC: .4byte 0x040000d4
-_0804E3C0: .4byte 0x80000800
-_0804E3C4:
- ldr r0, _0804E3D0 @ =gUnknown_08E6C920
- ldr r1, _0804E3D4 @ =0x02010000
- bl sub_800D238
- b _0804E49E
- .align 2, 0
-_0804E3D0: .4byte gUnknown_08E6C920
-_0804E3D4: .4byte 0x02010000
-_0804E3D8:
- ldr r0, _0804E3E4 @ =gUnknown_08E6D354
- ldr r1, _0804E3E8 @ =0x02013000
- bl sub_800D238
- b _0804E49E
- .align 2, 0
-_0804E3E4: .4byte gUnknown_08E6D354
-_0804E3E8: .4byte 0x02013000
-_0804E3EC:
- ldr r1, _0804E400 @ =0x02010000
- ldr r2, _0804E404 @ =0x0600e000
- ldr r0, _0804E408 @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _0804E40C @ =0x80000800
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- mov r0, r12
- b _0804E4A0
- .align 2, 0
-_0804E400: .4byte 0x02010000
-_0804E404: .4byte 0x0600e000
-_0804E408: .4byte 0x040000d4
-_0804E40C: .4byte 0x80000800
-_0804E410:
- ldr r1, _0804E424 @ =0x02011000
- ldr r2, _0804E428 @ =0x0600f000
- ldr r0, _0804E42C @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _0804E430 @ =0x80000800
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- mov r0, r12
- b _0804E4A0
- .align 2, 0
-_0804E424: .4byte 0x02011000
-_0804E428: .4byte 0x0600f000
-_0804E42C: .4byte 0x040000d4
-_0804E430: .4byte 0x80000800
-_0804E434:
- ldr r3, _0804E474 @ =0x02013000
- movs r2, 0
- adds r6, r3, 0
- ldr r7, _0804E478 @ =gUnknown_0821602C
- movs r0, 0x80
- lsls r0, 1
- adds r5, r0, 0
- ldr r4, _0804E47C @ =0x0000027f
-_0804E444:
- lsls r0, r2, 1
- adds r0, r3
- ldrh r1, [r0]
- orrs r1, r5
- strh r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, r4
- bls _0804E444
- ldr r1, _0804E480 @ =0x06006000
- ldr r0, _0804E484 @ =0x040000d4
- str r6, [r0]
- str r1, [r0, 0x4]
- ldr r1, _0804E488 @ =0x80000280
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- adds r0, r7, 0
- movs r1, 0x80
- movs r2, 0x20
- bl LoadPalette
- b _0804E49E
- .align 2, 0
-_0804E474: .4byte 0x02013000
-_0804E478: .4byte gUnknown_0821602C
-_0804E47C: .4byte 0x0000027f
-_0804E480: .4byte 0x06006000
-_0804E484: .4byte 0x040000d4
-_0804E488: .4byte 0x80000280
-_0804E48C:
- ldr r0, _0804E4AC @ =gUnknown_082163DC
- bl LoadSpriteSheet
- ldr r0, _0804E4B0 @ =gUnknown_082164F4
- bl LoadSpriteSheet
- ldr r0, _0804E4B4 @ =gUnknown_08216454
- bl LoadSpriteSheet
-_0804E49E:
- ldr r0, _0804E4B8 @ =gUnknown_03004854
-_0804E4A0:
- ldr r1, [r0]
- ldrb r0, [r1, 0x1]
- adds r0, 0x1
- strb r0, [r1, 0x1]
- b _0804E4F4
- .align 2, 0
-_0804E4AC: .4byte gUnknown_082163DC
-_0804E4B0: .4byte gUnknown_082164F4
-_0804E4B4: .4byte gUnknown_08216454
-_0804E4B8: .4byte gUnknown_03004854
-_0804E4BC:
- ldr r0, _0804E4E0 @ =gUnknown_08216540
- bl LoadSpriteSheet
- ldr r0, _0804E4E4 @ =gUnknown_08216574
- bl LoadSpriteSheet
- ldr r0, _0804E4E8 @ =gUnknown_082163EC
- bl LoadSpritePalette
- ldr r0, _0804E4EC @ =gUnknown_082163E4
- bl LoadSpritePalette
- ldr r0, _0804E4F0 @ =gUnknown_03004854
- ldr r1, [r0]
- movs r0, 0
- strb r0, [r1, 0x1]
- movs r0, 0x1
- b _0804E4F6
- .align 2, 0
-_0804E4E0: .4byte gUnknown_08216540
-_0804E4E4: .4byte gUnknown_08216574
-_0804E4E8: .4byte gUnknown_082163EC
-_0804E4EC: .4byte gUnknown_082163E4
-_0804E4F0: .4byte gUnknown_03004854
-_0804E4F4:
- movs r0, 0
-_0804E4F6:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_804E2EC
-
- thumb_func_start sub_804E4FC
-sub_804E4FC: @ 804E4FC
- movs r1, 0x80
- lsls r1, 19
- ldr r2, _0804E52C @ =0x00001341
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0xC
- movs r2, 0x91
- lsls r2, 7
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0x2
- ldr r2, _0804E530 @ =0x00000c0d
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _0804E534 @ =REG_BG0HOFS
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- bx lr
- .align 2, 0
-_0804E52C: .4byte 0x00001341
-_0804E530: .4byte 0x00000c0d
-_0804E534: .4byte REG_BG0HOFS
- thumb_func_end sub_804E4FC
-
- thumb_func_start sub_804E538
-sub_804E538: @ 804E538
- push {lr}
- ldr r1, _0804E55C @ =gUnknown_03004854
- ldr r0, _0804E560 @ =0x02018000
- str r0, [r1]
- adds r2, r0, 0
- adds r2, 0x6F
- movs r1, 0
- strb r1, [r0]
- strb r1, [r2]
- ldr r0, _0804E564 @ =gSpecialVar_0x8004
- ldrb r0, [r0]
- bl sub_804E884
- ldr r0, _0804E568 @ =sub_804E56C
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_0804E55C: .4byte gUnknown_03004854
-_0804E560: .4byte 0x02018000
-_0804E564: .4byte gSpecialVar_0x8004
-_0804E568: .4byte sub_804E56C
- thumb_func_end sub_804E538
-
- thumb_func_start sub_804E56C
-sub_804E56C: @ 804E56C
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r0, _0804E588 @ =gUnknown_03004854
- ldr r0, [r0]
- ldrb r0, [r0]
- cmp r0, 0x6
- bls _0804E57C
- b _0804E71A
-_0804E57C:
- lsls r0, 2
- ldr r1, _0804E58C @ =_0804E590
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0804E588: .4byte gUnknown_03004854
-_0804E58C: .4byte _0804E590
- .align 2, 0
-_0804E590:
- .4byte _0804E5AC
- .4byte _0804E614
- .4byte _0804E67C
- .4byte _0804E692
- .4byte _0804E6A8
- .4byte _0804E6D4
- .4byte _0804E700
-_0804E5AC:
- movs r0, 0x80
- lsls r0, 19
- movs r5, 0
- strh r5, [r0]
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- movs r0, 0
- bl SetVBlankCallback
- ldr r4, _0804E60C @ =gWindowConfig_81E6F68
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- ldr r3, _0804E610 @ =gUnknown_03004854
- ldr r2, [r3]
- ldrb r0, [r2]
- adds r0, 0x1
- movs r1, 0
- strb r0, [r2]
- ldr r2, [r3]
- movs r3, 0xA0
- lsls r3, 1
- adds r0, r2, r3
- strh r1, [r0]
- subs r3, 0x2
- adds r0, r2, r3
- strh r1, [r0]
- movs r0, 0xA1
- lsls r0, 1
- adds r3, r2, r0
- movs r0, 0x50
- strh r0, [r3]
- movs r3, 0xA2
- lsls r3, 1
- adds r0, r2, r3
- strh r1, [r0]
- adds r3, 0x2
- adds r0, r2, r3
- strh r1, [r0]
- strb r5, [r2, 0x1]
- bl sub_8051474
- b _0804E71A
- .align 2, 0
-_0804E60C: .4byte gWindowConfig_81E6F68
-_0804E610: .4byte gUnknown_03004854
-_0804E614:
- bl sub_804E2EC
- lsls r0, 24
- cmp r0, 0
- bne _0804E620
- b _0804E71A
-_0804E620:
- movs r4, 0
- ldr r5, _0804E668 @ =gUnknown_082162E4
- ldr r6, _0804E66C @ =gUnknown_03004854
-_0804E626:
- ldrb r1, [r5]
- ldrb r2, [r5, 0x1]
- ldr r0, _0804E670 @ =gSpriteTemplate_82163F4
- movs r3, 0x1
- bl CreateSprite
- ldr r1, [r6]
- adds r1, 0x5C
- adds r1, r4
- strb r0, [r1]
- ldr r0, [r6]
- adds r0, 0x5C
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0804E674 @ =gSprites
- adds r0, r1
- adds r1, r4, 0
- adds r1, 0x8
- lsls r1, 24
- lsrs r1, 24
- bl StartSpriteAnim
- adds r5, 0x2
- adds r4, 0x1
- cmp r4, 0x3
- ble _0804E626
- ldr r0, _0804E678 @ =sub_804E2BC
- bl SetVBlankCallback
- b _0804E6BE
- .align 2, 0
-_0804E668: .4byte gUnknown_082162E4
-_0804E66C: .4byte gUnknown_03004854
-_0804E670: .4byte gSpriteTemplate_82163F4
-_0804E674: .4byte gSprites
-_0804E678: .4byte sub_804E2BC
-_0804E67C:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- bl sub_8051474
- b _0804E6BE
-_0804E692:
- bl sub_804E4FC
- ldr r0, _0804E6A4 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0804E71A
- b _0804E6BE
- .align 2, 0
-_0804E6A4: .4byte gPaletteFade
-_0804E6A8:
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _0804E6CC @ =gOtherText_BlenderChooseBerry
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrintMessage
-_0804E6BE:
- ldr r0, _0804E6D0 @ =gUnknown_03004854
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0804E71A
- .align 2, 0
-_0804E6CC: .4byte gOtherText_BlenderChooseBerry
-_0804E6D0: .4byte gUnknown_03004854
-_0804E6D4:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- beq _0804E71A
- ldr r0, _0804E6FC @ =gUnknown_03004854
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- movs r2, 0
- strb r0, [r1]
- movs r0, 0x1
- negs r0, r0
- str r2, [sp]
- movs r1, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- b _0804E71A
- .align 2, 0
-_0804E6FC: .4byte gUnknown_03004854
-_0804E700:
- ldr r0, _0804E730 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _0804E71A
- bl sub_80A6978
- ldr r0, _0804E734 @ =gUnknown_03004854
- ldr r0, [r0]
- strb r4, [r0]
-_0804E71A:
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E730: .4byte gPaletteFade
-_0804E734: .4byte gUnknown_03004854
- thumb_func_end sub_804E56C
-
- thumb_func_start sub_804E738
-sub_804E738: @ 804E738
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x3A]
- ldrh r1, [r4, 0x30]
- adds r0, r1
- strh r0, [r4, 0x30]
- ldrh r1, [r4, 0x32]
- ldrh r2, [r4, 0x36]
- subs r1, r2
- ldrh r0, [r4, 0x3C]
- adds r1, r0
- strh r1, [r4, 0x32]
- ldrh r3, [r4, 0x2E]
- adds r0, r3
- strh r0, [r4, 0x2E]
- subs r2, 0x1
- strh r2, [r4, 0x36]
- lsls r0, 16
- lsls r1, 16
- cmp r0, r1
- bge _0804E786
- ldrh r0, [r4, 0x34]
- subs r0, 0x1
- strh r0, [r4, 0x36]
- strh r0, [r4, 0x34]
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _0804E780
- adds r0, r4, 0
- bl DestroySprite
- b _0804E786
-_0804E780:
- movs r0, 0x74
- bl PlaySE
-_0804E786:
- ldrh r0, [r4, 0x30]
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x32]
- strh r0, [r4, 0x22]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_804E738
-
- thumb_func_start sub_804E794
-sub_804E794: @ 804E794
- push {r4-r6,lr}
- ldr r5, [sp, 0x10]
- ldr r6, [sp, 0x14]
- lsls r2, 16
- lsrs r2, 16
- movs r4, 0
- strh r2, [r0, 0x2E]
- strh r1, [r0, 0x30]
- strh r2, [r0, 0x32]
- strh r3, [r0, 0x34]
- movs r1, 0xA
- strh r1, [r0, 0x36]
- strh r4, [r0, 0x38]
- strh r5, [r0, 0x3A]
- strh r6, [r0, 0x3C]
- ldr r1, _0804E7BC @ =sub_804E738
- str r1, [r0, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E7BC: .4byte sub_804E738
- thumb_func_end sub_804E794
-
- thumb_func_start sub_804E7C0
-sub_804E7C0: @ 804E7C0
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x8
- adds r6, r1, 0
- lsls r6, 24
- lsrs r6, 24
- lsls r0, 24
- movs r1, 0xF6
- lsls r1, 23
- adds r0, r1
- lsrs r0, 24
- movs r3, 0x1
- ands r3, r6
- movs r1, 0
- movs r2, 0x50
- bl sub_80A7DEC
- lsls r0, 24
- lsrs r0, 24
- lsls r2, r0, 4
- mov r8, r2
- add r8, r0
- mov r3, r8
- lsls r3, 2
- mov r8, r3
- ldr r0, _0804E83C @ =gSprites
- add r8, r0
- ldr r5, _0804E840 @ =gUnknown_08216594
- lsls r4, r6, 2
- adds r4, r6
- lsls r4, 1
- adds r0, r4, r5
- movs r6, 0
- ldrsh r1, [r0, r6]
- adds r0, r5, 0x2
- adds r0, r4, r0
- movs r3, 0
- ldrsh r2, [r0, r3]
- adds r0, r5, 0x4
- adds r0, r4, r0
- movs r6, 0
- ldrsh r3, [r0, r6]
- adds r0, r5, 0x6
- adds r0, r4, r0
- movs r6, 0
- ldrsh r0, [r0, r6]
- str r0, [sp]
- adds r5, 0x8
- adds r4, r5
- movs r5, 0
- ldrsh r0, [r4, r5]
- str r0, [sp, 0x4]
- mov r0, r8
- bl sub_804E794
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E83C: .4byte gSprites
-_0804E840: .4byte gUnknown_08216594
- thumb_func_end sub_804E7C0
-
- thumb_func_start sub_804E844
-sub_804E844: @ 804E844
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r5, r1, 16
- lsrs r5, 16
- adds r0, r5, 0
- adds r0, 0x7C
- lsls r0, 24
- lsrs r0, 24
- bl GetBerryInfo
- adds r4, r0, 0
- strh r5, [r6]
- adds r0, r6, 0x2
- adds r1, r4, 0
- bl StringCopy
- ldrb r0, [r4, 0x15]
- strb r0, [r6, 0x9]
- ldrb r0, [r4, 0x16]
- strb r0, [r6, 0xA]
- ldrb r0, [r4, 0x17]
- strb r0, [r6, 0xB]
- ldrb r0, [r4, 0x18]
- strb r0, [r6, 0xC]
- ldrb r0, [r4, 0x19]
- strb r0, [r6, 0xD]
- ldrb r0, [r4, 0x1A]
- strb r0, [r6, 0xE]
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_804E844
-
- thumb_func_start sub_804E884
-sub_804E884: @ 804E884
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _0804E89E
- ldr r2, _0804E8AC @ =gLinkPlayers
- movs r3, 0x2
- adds r0, r2, 0
- adds r0, 0x54
-_0804E896:
- strh r3, [r0, 0x1A]
- subs r0, 0x1C
- cmp r0, r2
- bge _0804E896
-_0804E89E:
- cmp r1, 0x1
- beq _0804E8C4
- cmp r1, 0x1
- bgt _0804E8B0
- cmp r1, 0
- beq _0804E8BA
- b _0804E974
- .align 2, 0
-_0804E8AC: .4byte gLinkPlayers
-_0804E8B0:
- cmp r1, 0x2
- beq _0804E8F8
- cmp r1, 0x3
- beq _0804E93C
- b _0804E974
-_0804E8BA:
- ldr r0, _0804E8C0 @ =gUnknown_03004834
- strb r1, [r0]
- b _0804E974
- .align 2, 0
-_0804E8C0: .4byte gUnknown_03004834
-_0804E8C4:
- ldr r0, _0804E8E4 @ =gUnknown_03004834
- strb r1, [r0]
- ldr r0, _0804E8E8 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0x88
- movs r1, 0x2
- strb r1, [r0]
- ldr r4, _0804E8EC @ =gLinkPlayers + 0x8
- ldr r1, _0804E8F0 @ =gSaveBlock2
- adds r0, r4, 0
- bl StringCopy
- adds r4, 0x1C
- ldr r0, _0804E8F4 @ =gUnknown_082162B8
- ldr r1, [r0]
- b _0804E920
- .align 2, 0
-_0804E8E4: .4byte gUnknown_03004834
-_0804E8E8: .4byte gUnknown_03004854
-_0804E8EC: .4byte gLinkPlayers + 0x8
-_0804E8F0: .4byte gSaveBlock2
-_0804E8F4: .4byte gUnknown_082162B8
-_0804E8F8:
- ldr r0, _0804E928 @ =gUnknown_03004834
- strb r1, [r0]
- ldr r0, _0804E92C @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0x88
- movs r1, 0x3
- strb r1, [r0]
- ldr r4, _0804E930 @ =gLinkPlayers + 0x8
- ldr r1, _0804E934 @ =gSaveBlock2
- adds r0, r4, 0
- bl StringCopy
- adds r0, r4, 0
- adds r0, 0x1C
- ldr r5, _0804E938 @ =gUnknown_082162B8
- ldr r1, [r5]
- bl StringCopy
- adds r4, 0x38
- ldr r1, [r5, 0x4]
-_0804E920:
- adds r0, r4, 0
- bl StringCopy
- b _0804E974
- .align 2, 0
-_0804E928: .4byte gUnknown_03004834
-_0804E92C: .4byte gUnknown_03004854
-_0804E930: .4byte gLinkPlayers + 0x8
-_0804E934: .4byte gSaveBlock2
-_0804E938: .4byte gUnknown_082162B8
-_0804E93C:
- ldr r0, _0804E97C @ =gUnknown_03004834
- strb r1, [r0]
- ldr r0, _0804E980 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0x88
- movs r1, 0x4
- strb r1, [r0]
- ldr r4, _0804E984 @ =gLinkPlayers + 0x8
- ldr r1, _0804E988 @ =gSaveBlock2
- adds r0, r4, 0
- bl StringCopy
- adds r0, r4, 0
- adds r0, 0x1C
- ldr r5, _0804E98C @ =gUnknown_082162B8
- ldr r1, [r5]
- bl StringCopy
- adds r0, r4, 0
- adds r0, 0x38
- ldr r1, [r5, 0x4]
- bl StringCopy
- adds r4, 0x54
- ldr r1, [r5, 0x8]
- adds r0, r4, 0
- bl StringCopy
-_0804E974:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E97C: .4byte gUnknown_03004834
-_0804E980: .4byte gUnknown_03004854
-_0804E984: .4byte gLinkPlayers + 0x8
-_0804E988: .4byte gSaveBlock2
-_0804E98C: .4byte gUnknown_082162B8
- thumb_func_end sub_804E884
-
- thumb_func_start sub_804E990
-sub_804E990: @ 804E990
- push {r4,r5,lr}
- movs r0, 0x80
- lsls r0, 19
- movs r2, 0
- strh r2, [r0]
- ldr r3, _0804E9D8 @ =gUnknown_03004854
- ldr r0, _0804E9DC @ =0x02018000
- str r0, [r3]
- movs r1, 0
- strb r2, [r0]
- movs r2, 0x9A
- lsls r2, 1
- adds r0, r2
- str r1, [r0]
- movs r2, 0
- ldr r5, _0804E9E0 @ =gSpecialVar_0x8004
- adds r4, r3, 0
- movs r3, 0
-_0804E9B4:
- ldr r0, [r4]
- lsls r1, r2, 1
- adds r0, 0x80
- adds r0, r1
- strh r3, [r0]
- adds r2, 0x1
- cmp r2, 0x3
- ble _0804E9B4
- ldrb r0, [r5]
- bl sub_804E884
- ldrh r0, [r5]
- cmp r0, 0
- bne _0804E9E8
- ldr r0, _0804E9E4 @ =sub_804E9F8
- bl SetMainCallback2
- b _0804E9EE
- .align 2, 0
-_0804E9D8: .4byte gUnknown_03004854
-_0804E9DC: .4byte 0x02018000
-_0804E9E0: .4byte gSpecialVar_0x8004
-_0804E9E4: .4byte sub_804E9F8
-_0804E9E8:
- ldr r0, _0804E9F4 @ =sub_804F378
- bl SetMainCallback2
-_0804E9EE:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E9F4: .4byte sub_804F378
- thumb_func_end sub_804E990
-
- thumb_func_start sub_804E9F8
-sub_804E9F8: @ 804E9F8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- ldr r1, _0804EA18 @ =gUnknown_03004854
- ldr r0, [r1]
- ldrb r0, [r0]
- mov r8, r1
- cmp r0, 0x66
- bls _0804EA0E
- b _0804F0CE
-_0804EA0E:
- lsls r0, 2
- ldr r1, _0804EA1C @ =_0804EA20
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0804EA18: .4byte gUnknown_03004854
-_0804EA1C: .4byte _0804EA20
- .align 2, 0
-_0804EA20:
- .4byte _0804EBBC
- .4byte _0804EC74
- .4byte _0804EC94
- .4byte _0804ECE8
- .4byte _0804ECFA
- .4byte _0804ED14
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804ED48
- .4byte _0804ED94
- .4byte _0804EDB8
- .4byte _0804EE46
- .4byte _0804EEA0
- .4byte _0804EF16
- .4byte _0804EF34
- .4byte _0804EFD8
- .4byte _0804F00C
- .4byte _0804F0CE
- .4byte _0804F020
- .4byte _0804F024
- .4byte _0804F02A
- .4byte _0804F03A
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F084
- .4byte _0804F0A0
- .4byte _0804F0BC
-_0804EBBC:
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl ResetTasks
- ldr r0, _0804EC60 @ =sub_804E2BC
- bl SetVBlankCallback
- ldr r4, _0804EC64 @ =gWindowConfig_81E6F68
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- ldr r1, _0804EC68 @ =gLinkType
- ldr r2, _0804EC6C @ =0x00004422
- adds r0, r2, 0
- strh r0, [r1]
- ldr r3, _0804EC70 @ =gUnknown_03004854
- ldr r1, [r3]
- ldrb r0, [r1]
- adds r0, 0x1
- movs r2, 0
- strb r0, [r1]
- ldr r0, [r3]
- adds r4, r0, 0
- adds r4, 0x4E
- movs r1, 0
- strh r2, [r4]
- adds r0, 0x7E
- strb r1, [r0]
- ldr r1, [r3]
- movs r4, 0xA2
- lsls r4, 1
- adds r0, r1, r4
- strh r2, [r0]
- adds r4, 0x2
- adds r0, r1, r4
- strh r2, [r0]
- movs r5, 0
- movs r6, 0
- mov r8, r3
- movs r7, 0xA6
- lsls r7, 1
-_0804EC18:
- ldr r0, [r3]
- lsls r1, r5, 1
- adds r0, 0x70
- adds r0, r1
- strh r6, [r0]
- adds r4, r5, 0x1
- adds r1, r5
- lsls r1, 1
- movs r2, 0x2
-_0804EC2A:
- ldr r0, [r3]
- adds r0, r7
- adds r0, r1
- strh r6, [r0]
- adds r1, 0x2
- subs r2, 0x1
- cmp r2, 0
- bge _0804EC2A
- adds r5, r4, 0
- cmp r5, 0x3
- ble _0804EC18
- mov r0, r8
- ldr r3, [r0]
- adds r0, r3, 0
- adds r0, 0x7C
- movs r2, 0
- movs r1, 0
- strh r1, [r0]
- subs r0, 0x26
- strh r1, [r0]
- subs r0, 0x2
- strh r1, [r0]
- adds r0, 0x6
- strh r1, [r0]
- strb r2, [r3, 0x1]
- b _0804F0CE
- .align 2, 0
-_0804EC60: .4byte sub_804E2BC
-_0804EC64: .4byte gWindowConfig_81E6F68
-_0804EC68: .4byte gLinkType
-_0804EC6C: .4byte 0x00004422
-_0804EC70: .4byte gUnknown_03004854
-_0804EC74:
- bl sub_804E2EC
- lsls r0, 24
- cmp r0, 0
- bne _0804EC80
- b _0804F0CE
-_0804EC80:
- ldr r0, _0804EC90 @ =gUnknown_03004854
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl sub_8051474
- b _0804F0CE
- .align 2, 0
-_0804EC90: .4byte gUnknown_03004854
-_0804EC94:
- movs r5, 0
- ldr r4, _0804ECD8 @ =gUnknown_082162E4
- ldr r6, _0804ECDC @ =gUnknown_03004854
-_0804EC9A:
- ldrb r1, [r4]
- ldrb r2, [r4, 0x1]
- ldr r0, _0804ECE0 @ =gSpriteTemplate_82163F4
- movs r3, 0x1
- bl CreateSprite
- ldr r1, [r6]
- adds r1, 0x60
- adds r1, r5
- strb r0, [r1]
- ldr r0, [r6]
- adds r0, 0x60
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0804ECE4 @ =gSprites
- adds r0, r1
- adds r1, r5, 0
- adds r1, 0x8
- lsls r1, 24
- lsrs r1, 24
- bl StartSpriteAnim
- adds r4, 0x2
- adds r5, 0x1
- cmp r5, 0x3
- ble _0804EC9A
- b _0804F0AA
- .align 2, 0
-_0804ECD8: .4byte gUnknown_082162E4
-_0804ECDC: .4byte gUnknown_03004854
-_0804ECE0: .4byte gSpriteTemplate_82163F4
-_0804ECE4: .4byte gSprites
-_0804ECE8:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- b _0804F0AA
-_0804ECFA:
- bl sub_804E4FC
- ldr r0, _0804ED10 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0804ED0C
- b _0804F0CE
-_0804ED0C:
- b _0804F0AA
- .align 2, 0
-_0804ED10: .4byte gPaletteFade
-_0804ED14:
- movs r0, 0
- movs r1, 0xD
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _0804ED40 @ =gOtherText_LinkStandby3
- movs r1, 0x1
- movs r2, 0xE
- bl MenuPrint
- ldr r2, _0804ED44 @ =gUnknown_03004854
- ldr r1, [r2]
- movs r3, 0
- movs r0, 0x8
- strb r0, [r1]
- ldr r0, [r2]
- movs r1, 0x98
- lsls r1, 1
- adds r0, r1
- str r3, [r0]
- b _0804F0CE
- .align 2, 0
-_0804ED40: .4byte gOtherText_LinkStandby3
-_0804ED44: .4byte gUnknown_03004854
-_0804ED48:
- mov r2, r8
- ldr r1, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- movs r5, 0
- strb r0, [r1]
- ldr r0, [r2]
- movs r3, 0x9E
- lsls r3, 1
- adds r0, r3
- strb r5, [r0]
- ldr r0, [r2]
- movs r4, 0xBE
- lsls r4, 1
- adds r0, r4
- ldr r1, _0804ED8C @ =gScriptItemId
- ldrh r1, [r1]
- bl sub_804E844
- ldr r0, _0804ED90 @ =gBlockSendBuffer
- mov r2, r8
- ldr r1, [r2]
- adds r1, r4
- movs r2, 0x10
- bl memcpy
- bl sub_80084A4
- mov r3, r8
- ldr r0, [r3]
- subs r4, 0x4C
- adds r0, r4
- str r5, [r0]
- b _0804F0CE
- .align 2, 0
-_0804ED8C: .4byte gScriptItemId
-_0804ED90: .4byte gBlockSendBuffer
-_0804ED94:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- bne _0804EDA0
- b _0804F0CE
-_0804EDA0:
- bl ResetBlockReceivedFlags
- bl GetMultiplayerId
- lsls r0, 24
- cmp r0, 0
- beq _0804EDB0
- b _0804F0AA
-_0804EDB0:
- movs r0, 0x4
- bl sub_8007E9C
- b _0804F0AA
-_0804EDB8:
- mov r0, r8
- ldr r1, [r0]
- movs r2, 0x98
- lsls r2, 1
- adds r1, r2
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x14
- bgt _0804EDCE
- b _0804F0CE
-_0804EDCE:
- bl MenuZeroFillScreen
- bl GetBlockReceivedStatus
- adds r4, r0, 0
- bl sub_8008198
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- beq _0804EDE6
- b _0804F0CE
-_0804EDE6:
- movs r5, 0
- mov r7, r8
- movs r6, 0xBE
- lsls r6, 1
- b _0804EE18
-_0804EDF0:
- ldr r0, [r7]
- lsls r4, r5, 4
- adds r0, r4, r0
- adds r0, r6
- lsls r1, r5, 8
- ldr r2, _0804EE2C @ =gBlockRecvBuffer
- adds r1, r2
- movs r2, 0x10
- bl memcpy
- ldr r0, [r7]
- lsls r2, r5, 1
- adds r1, r0, 0
- adds r1, 0x80
- adds r1, r2
- adds r0, r4
- adds r0, r6
- ldrh r0, [r0]
- strh r0, [r1]
- adds r5, 0x1
-_0804EE18:
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r5, r0
- blt _0804EDF0
- bl ResetBlockReceivedFlags
- b _0804F0AA
- .align 2, 0
-_0804EE2C: .4byte gBlockRecvBuffer
-_0804EE30:
- ldrb r1, [r4]
- lsls r1, 1
- adds r0, r2, 0
- adds r0, 0x80
- adds r0, r1
- ldrh r0, [r0]
- lsls r1, r5, 24
- lsrs r1, 24
- bl sub_804E7C0
- b _0804EE7A
-_0804EE46:
- bl GetLinkPlayerCount
- ldr r2, _0804EE98 @ =gUnknown_03004854
- ldr r1, [r2]
- adds r1, 0x88
- strb r0, [r1]
- movs r5, 0
- ldr r2, [r2]
- movs r3, 0x9E
- lsls r3, 1
- adds r4, r2, r3
- ldr r1, _0804EE9C @ =gUnknown_082162EC
- adds r0, r2, 0
- adds r0, 0x88
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 2
- ldrb r3, [r4]
- adds r0, r1
-_0804EE6C:
- ldrb r1, [r0]
- cmp r3, r1
- beq _0804EE30
- adds r0, 0x1
- adds r5, 0x1
- cmp r5, 0x3
- ble _0804EE6C
-_0804EE7A:
- ldr r3, _0804EE98 @ =gUnknown_03004854
- ldr r1, [r3]
- movs r4, 0x98
- lsls r4, 1
- adds r2, r1, r4
- movs r0, 0
- str r0, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r1, [r3]
- movs r0, 0x9E
- lsls r0, 1
- adds r1, r0
- b _0804F0AE
- .align 2, 0
-_0804EE98: .4byte gUnknown_03004854
-_0804EE9C: .4byte gUnknown_082162EC
-_0804EEA0:
- mov r1, r8
- ldr r2, [r1]
- movs r3, 0x98
- lsls r3, 1
- adds r1, r2, r3
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x3C
- bgt _0804EEB6
- b _0804F0CE
-_0804EEB6:
- movs r4, 0x9E
- lsls r4, 1
- adds r0, r2, r4
- adds r1, r2, 0
- adds r1, 0x88
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- bcc _0804EF00
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- mov r0, r8
- ldr r2, [r0]
- ldr r3, _0804EEF4 @ =gUnknown_082162F8
- ldr r1, _0804EEF8 @ =gUnknown_08216300
- adds r0, r2, 0
- adds r0, 0x88
- ldrb r0, [r0]
- subs r0, 0x2
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r3
- ldr r3, _0804EEFC @ =0xffffa800
- adds r1, r3, 0
- ldrh r0, [r0]
- adds r1, r0
- adds r2, 0x54
- strh r1, [r2]
- b _0804EF06
- .align 2, 0
-_0804EEF4: .4byte gUnknown_082162F8
-_0804EEF8: .4byte gUnknown_08216300
-_0804EEFC: .4byte 0xffffa800
-_0804EF00:
- ldrb r0, [r2]
- subs r0, 0x1
- strb r0, [r2]
-_0804EF06:
- mov r4, r8
- ldr r0, [r4]
- movs r1, 0x98
- lsls r1, 1
- adds r0, r1
- movs r1, 0
- str r1, [r0]
- b _0804F0CE
-_0804EF16:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- bne _0804EF22
- b _0804F0CE
-_0804EF22:
- ldr r2, _0804EF30 @ =gUnknown_03004854
- ldr r1, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r2]
- b _0804EFBC
- .align 2, 0
-_0804EF30: .4byte gUnknown_03004854
-_0804EF34:
- movs r2, 0x80
- lsls r2, 19
- ldrh r0, [r2]
- movs r3, 0x80
- lsls r3, 3
- adds r1, r3, 0
- orrs r0, r1
- strh r0, [r2]
- mov r4, r8
- ldr r2, [r4]
- adds r1, r2, 0
- adds r1, 0x54
- movs r3, 0x80
- lsls r3, 2
- adds r0, r3, 0
- ldrh r4, [r1]
- adds r0, r4
- strh r0, [r1]
- movs r0, 0xA1
- lsls r0, 1
- adds r1, r2, r0
- ldrh r0, [r1]
- adds r0, 0x4
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xFF
- bls _0804EFB8
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- mov r1, r8
- ldr r3, [r1]
- movs r2, 0xA1
- lsls r2, 1
- adds r1, r3, r2
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r1]
- ldr r2, _0804EFC8 @ =gUnknown_082162F8
- ldr r1, _0804EFCC @ =gUnknown_08216300
- adds r0, r3, 0
- adds r0, 0x88
- ldrb r0, [r0]
- subs r0, 0x2
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- adds r0, r3, 0
- adds r0, 0x54
- strh r1, [r0]
- ldr r1, _0804EFD0 @ =REG_BG2CNT
- ldr r4, _0804EFD4 @ =0x00004882
- adds r0, r4, 0
- strh r0, [r1]
- movs r0, 0x98
- lsls r0, 1
- adds r1, r3, r0
- movs r0, 0
- str r0, [r1]
- bl sub_804F238
- bl BuyMenuDrawFieldObjects
-_0804EFB8:
- mov r1, r8
- ldr r0, [r1]
-_0804EFBC:
- movs r2, 0xB4
- lsls r2, 1
- adds r0, r2
- bl sub_8051414
- b _0804F0CE
- .align 2, 0
-_0804EFC8: .4byte gUnknown_082162F8
-_0804EFCC: .4byte gUnknown_08216300
-_0804EFD0: .4byte REG_BG2CNT
-_0804EFD4: .4byte 0x00004882
-_0804EFD8:
- bl sub_8051B8C
- lsls r0, 24
- cmp r0, 0
- beq _0804EFF6
- ldr r0, _0804F008 @ =gUnknown_03004854
- ldr r1, [r0]
- movs r3, 0x98
- lsls r3, 1
- adds r2, r1, r3
- movs r0, 0
- str r0, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_0804EFF6:
- ldr r0, _0804F008 @ =gUnknown_03004854
- ldr r0, [r0]
- movs r4, 0xB4
- lsls r4, 1
- adds r0, r4
- bl sub_8051414
- b _0804F0CE
- .align 2, 0
-_0804F008: .4byte gUnknown_03004854
-_0804F00C:
- ldr r0, _0804F01C @ =gSpriteTemplate_8216548
- movs r2, 0x10
- negs r2, r2
- movs r1, 0x78
- movs r3, 0x3
- bl CreateSprite
- b _0804F0AA
- .align 2, 0
-_0804F01C: .4byte gSpriteTemplate_8216548
-_0804F020:
- mov r0, r8
- b _0804F0AC
-_0804F024:
- bl sub_80084A4
- b _0804F0AA
-_0804F02A:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _0804F0CE
- bl sub_8007E24
- b _0804F0AA
-_0804F03A:
- mov r1, r8
- ldr r3, [r1]
- adds r2, r3, 0
- adds r2, 0x56
- movs r1, 0
- movs r0, 0x80
- strh r0, [r2]
- movs r2, 0x96
- lsls r2, 1
- adds r0, r3, r2
- str r1, [r0]
- ldr r0, _0804F07C @ =sub_80501FC
- bl SetMainCallback2
- bl GetCurrentMapMusic
- lsls r0, 16
- lsrs r0, 16
- ldr r4, _0804F080 @ =0x00000193
- cmp r0, r4
- beq _0804F074
- bl GetCurrentMapMusic
- mov r3, r8
- ldr r1, [r3]
- movs r2, 0xBC
- lsls r2, 1
- adds r1, r2
- strh r0, [r1]
-_0804F074:
- adds r0, r4, 0
- bl PlayBGM
- b _0804F0CE
- .align 2, 0
-_0804F07C: .4byte sub_80501FC
-_0804F080: .4byte 0x00000193
-_0804F084:
- movs r0, 0
- movs r1, 0xD
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _0804F09C @ =gOtherText_LinkNotFound
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrintMessage
- b _0804F0AA
- .align 2, 0
-_0804F09C: .4byte gOtherText_LinkNotFound
-_0804F0A0:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- beq _0804F0CE
-_0804F0AA:
- ldr r0, _0804F0B8 @ =gUnknown_03004854
-_0804F0AC:
- ldr r1, [r0]
-_0804F0AE:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0804F0CE
- .align 2, 0
-_0804F0B8: .4byte gUnknown_03004854
-_0804F0BC:
- ldr r0, _0804F0EC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0804F0CE
- ldr r0, _0804F0F0 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
-_0804F0CE:
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F0EC: .4byte gPaletteFade
-_0804F0F0: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
- thumb_func_end sub_804E9F8
-
- thumb_func_start sub_804F0F4
-sub_804F0F4: @ 804F0F4
- push {r4,lr}
- movs r1, 0x80
- lsls r1, 19
- movs r0, 0
- strh r0, [r1]
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl ResetTasks
- ldr r0, _0804F158 @ =sub_804E2BC
- bl SetVBlankCallback
- ldr r4, _0804F15C @ =gWindowConfig_81E6F68
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- ldr r1, _0804F160 @ =gLinkType
- ldr r2, _0804F164 @ =0x00004422
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _0804F168 @ =gUnknown_03004854
- ldr r2, [r0]
- adds r0, r2, 0
- adds r0, 0x4E
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x8
- strh r1, [r0]
- subs r0, 0x2
- strh r1, [r0]
- adds r0, 0x6
- strh r1, [r0]
- movs r3, 0xA2
- lsls r3, 1
- adds r0, r2, r3
- strh r1, [r0]
- adds r3, 0x2
- adds r0, r2, r3
- strh r1, [r0]
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F158: .4byte sub_804E2BC
-_0804F15C: .4byte gWindowConfig_81E6F68
-_0804F160: .4byte gLinkType
-_0804F164: .4byte 0x00004422
-_0804F168: .4byte gUnknown_03004854
- thumb_func_end sub_804F0F4
-
- thumb_func_start task_tutorial_oak_boy_girl
-task_tutorial_oak_boy_girl: @ 804F16C
- push {lr}
- lsls r0, 16
- lsls r1, 24
- lsrs r0, 24
- adds r2, r0, 0
- adds r2, 0x18
- ldr r0, _0804F1A8 @ =gUnknown_03004854
- ldr r0, [r0]
- lsrs r1, 23
- adds r0, 0xA2
- adds r0, r1
- ldrb r0, [r0]
- ldr r1, _0804F1AC @ =gUnknown_08216303
- adds r0, r1
- ldrb r1, [r0]
- cmp r2, r1
- bcc _0804F1B4
- adds r0, r1, 0
- adds r0, 0x30
- cmp r2, r0
- bcs _0804F1B4
- subs r0, 0x1C
- cmp r2, r0
- bcc _0804F1B0
- adds r0, 0x8
- cmp r2, r0
- bcs _0804F1B0
- movs r0, 0x2
- b _0804F1B6
- .align 2, 0
-_0804F1A8: .4byte gUnknown_03004854
-_0804F1AC: .4byte gUnknown_08216303
-_0804F1B0:
- movs r0, 0x1
- b _0804F1B6
-_0804F1B4:
- movs r0, 0
-_0804F1B6:
- pop {r1}
- bx r1
- thumb_func_end task_tutorial_oak_boy_girl
-
- thumb_func_start sub_804F1BC
-sub_804F1BC: @ 804F1BC
- push {r4-r7,lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 24
- lsrs r1, 24
- movs r4, 0
- cmp r0, 0xAF
- bne _0804F1EE
- movs r3, 0
- subs r5, r1, 0x1
- adds r2, 0x9
-_0804F1D2:
- adds r0, r2, r4
- adds r1, r2, r3
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- bls _0804F1E0
- adds r4, r3, 0
-_0804F1E0:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x4
- bls _0804F1D2
- adds r0, r4, 0x5
- b _0804F204
-_0804F1EE:
- subs r0, 0x85
- lsls r0, 16
- lsrs r4, r0, 16
- subs r5, r1, 0x1
- cmp r4, 0x4
- bls _0804F208
- adds r0, r4, 0
- movs r1, 0x5
- bl __umodsi3
- adds r0, 0x5
-_0804F204:
- lsls r0, 16
- lsrs r4, r0, 16
-_0804F208:
- movs r3, 0
- cmp r3, r5
- bge _0804F22E
- ldr r7, _0804F234 @ =gUnknown_082165BC
- lsls r0, r4, 1
- adds r6, r0, r4
-_0804F214:
- adds r4, r3, 0x1
- lsls r0, r4, 24
- lsrs r0, 24
- adds r1, r3, r6
- adds r1, r7
- ldrb r1, [r1]
- adds r1, 0x85
- bl sub_80516C4
- lsls r4, 16
- lsrs r3, r4, 16
- cmp r3, r5
- blt _0804F214
-_0804F22E:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F234: .4byte gUnknown_082165BC
- thumb_func_end sub_804F1BC
-
- thumb_func_start sub_804F238
-sub_804F238: @ 804F238
- push {r4-r7,lr}
- movs r4, 0
- ldr r7, _0804F2A0 @ =gUnknown_03004854
- movs r6, 0xFF
- ldr r5, _0804F2A4 @ =gUnknown_082162EC
-_0804F242:
- ldr r3, [r7]
- lsls r2, r4, 1
- adds r0, r3, 0
- adds r0, 0xA2
- adds r0, r2
- strh r6, [r0]
- adds r1, r3, 0
- adds r1, 0x9A
- adds r1, r2
- adds r0, r3, 0
- adds r0, 0x88
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 2
- adds r0, r4, r0
- adds r0, r5
- ldrb r0, [r0]
- strh r0, [r1]
- adds r4, 0x1
- cmp r4, 0x3
- ble _0804F242
- movs r3, 0
- ldr r7, _0804F2A0 @ =gUnknown_03004854
-_0804F270:
- movs r4, 0
- adds r6, r3, 0x1
- lsls r5, r3, 1
-_0804F276:
- ldr r2, [r7]
- lsls r0, r4, 1
- adds r1, r2, 0
- adds r1, 0x9A
- adds r1, r0
- ldrh r0, [r1]
- cmp r0, r3
- bne _0804F28E
- adds r0, r2, 0
- adds r0, 0xA2
- adds r0, r5
- strh r4, [r0]
-_0804F28E:
- adds r4, 0x1
- cmp r4, 0x3
- ble _0804F276
- adds r3, r6, 0
- cmp r3, 0x3
- ble _0804F270
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F2A0: .4byte gUnknown_03004854
-_0804F2A4: .4byte gUnknown_082162EC
- thumb_func_end sub_804F238
-
- thumb_func_start BuyMenuDrawFieldObjects
-BuyMenuDrawFieldObjects: @ 804F2A8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r6, 0
- ldr r7, _0804F360 @ =gUnknown_03004854
- ldr r0, _0804F364 @ =gUnknown_082162D4
- mov r8, r0
-_0804F2B6:
- ldr r2, [r7]
- lsls r4, r6, 1
- adds r0, r2, 0
- adds r0, 0x9A
- adds r3, r0, r4
- ldrh r0, [r3]
- cmp r0, 0xFF
- beq _0804F34A
- ldr r5, _0804F368 @ =gStringVar1
- adds r1, r2, 0
- adds r1, 0x5C
- ldrh r3, [r3]
- adds r1, r3
- adds r0, r2, 0
- adds r0, 0x60
- adds r0, r6
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r0, [r7]
- adds r1, r0, 0
- adds r1, 0x9A
- adds r1, r4
- adds r0, 0x5C
- ldrh r1, [r1]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0804F36C @ =gSprites
- adds r0, r1
- lsls r1, r6, 24
- lsrs r1, 24
- bl StartSpriteAnim
- bl GetMultiplayerId
- lsls r0, 24
- ldr r1, [r7]
- adds r1, 0x9A
- adds r1, r4
- lsrs r0, 24
- ldrh r1, [r1]
- cmp r0, r1
- bne _0804F31A
- adds r0, r5, 0
- ldr r1, _0804F370 @ =gUnknown_082162C4
- bl StringCopy
- adds r5, r0, 0
-_0804F31A:
- ldr r0, [r7]
- adds r0, 0x9A
- adds r0, r4
- ldrh r0, [r0]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- ldr r0, _0804F374 @ =gLinkPlayers + 0x8
- adds r1, r0
- adds r0, r5, 0
- bl StringCopy
- mov r0, r8
- ldrb r1, [r0]
- lsls r1, 3
- adds r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- ldrb r2, [r0, 0x1]
- lsls r2, 3
- ldr r0, _0804F368 @ =gStringVar1
- movs r3, 0x1
- bl MenuPrint_PixelCoords
-_0804F34A:
- movs r0, 0x2
- add r8, r0
- adds r6, 0x1
- cmp r6, 0x3
- ble _0804F2B6
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F360: .4byte gUnknown_03004854
-_0804F364: .4byte gUnknown_082162D4
-_0804F368: .4byte gStringVar1
-_0804F36C: .4byte gSprites
-_0804F370: .4byte gUnknown_082162C4
-_0804F374: .4byte gLinkPlayers + 0x8
- thumb_func_end BuyMenuDrawFieldObjects
-
- thumb_func_start sub_804F378
-sub_804F378: @ 804F378
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- ldr r1, _0804F398 @ =gUnknown_03004854
- ldr r0, [r1]
- ldrb r0, [r0]
- mov r8, r1
- cmp r0, 0x15
- bls _0804F38E
- b _0804F7E6
-_0804F38E:
- lsls r0, 2
- ldr r1, _0804F39C @ =_0804F3A0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0804F398: .4byte gUnknown_03004854
-_0804F39C: .4byte _0804F3A0
- .align 2, 0
-_0804F3A0:
- .4byte _0804F3F8
- .4byte _0804F474
- .4byte _0804F494
- .4byte _0804F4EC
- .4byte _0804F518
- .4byte _0804F7E6
- .4byte _0804F7E6
- .4byte _0804F7E6
- .4byte _0804F54C
- .4byte _0804F7E6
- .4byte _0804F7E6
- .4byte _0804F578
- .4byte _0804F5C8
- .4byte _0804F636
- .4byte _0804F650
- .4byte _0804F6F8
- .4byte _0804F720
- .4byte _0804F7E6
- .4byte _0804F73C
- .4byte _0804F742
- .4byte _0804F748
- .4byte _0804F754
-_0804F3F8:
- bl sub_804F0F4
- ldr r4, _0804F46C @ =gScriptItemId
- ldrh r1, [r4]
- movs r0, 0
- bl sub_80516C4
- ldr r5, _0804F470 @ =gUnknown_03004854
- ldr r0, [r5]
- movs r6, 0xBE
- lsls r6, 1
- adds r0, r6
- ldrh r1, [r4]
- bl sub_804E844
- ldrh r0, [r4]
- ldr r2, [r5]
- adds r1, r2, 0
- adds r1, 0x88
- ldrb r1, [r1]
- adds r2, r6
- bl sub_804F1BC
- movs r4, 0
- movs r6, 0
- mov r8, r5
- movs r7, 0xA6
- lsls r7, 1
-_0804F430:
- ldr r0, [r5]
- lsls r1, r4, 1
- adds r0, 0x70
- adds r0, r1
- strh r6, [r0]
- adds r3, r4, 0x1
- adds r1, r4
- lsls r1, 1
- movs r2, 0x2
-_0804F442:
- ldr r0, [r5]
- adds r0, r7
- adds r0, r1
- strh r6, [r0]
- adds r1, 0x2
- subs r2, 0x1
- cmp r2, 0
- bge _0804F442
- adds r4, r3, 0
- cmp r4, 0x3
- ble _0804F430
- mov r0, r8
- ldr r3, [r0]
- adds r1, r3, 0
- adds r1, 0x7C
- movs r2, 0
- movs r0, 0
- strh r0, [r1]
- strb r2, [r3, 0x1]
- b _0804F7E6
- .align 2, 0
-_0804F46C: .4byte gScriptItemId
-_0804F470: .4byte gUnknown_03004854
-_0804F474:
- bl sub_804E2EC
- lsls r0, 24
- cmp r0, 0
- bne _0804F480
- b _0804F7E6
-_0804F480:
- ldr r0, _0804F490 @ =gUnknown_03004854
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl sub_8051474
- b _0804F7E6
- .align 2, 0
-_0804F490: .4byte gUnknown_03004854
-_0804F494:
- movs r4, 0
- ldr r5, _0804F4DC @ =gUnknown_082162E4
- ldr r6, _0804F4E0 @ =gUnknown_03004854
-_0804F49A:
- ldrb r1, [r5]
- ldrb r2, [r5, 0x1]
- ldr r0, _0804F4E4 @ =gSpriteTemplate_82163F4
- movs r3, 0x1
- bl CreateSprite
- ldr r1, [r6]
- adds r1, 0x60
- adds r1, r4
- strb r0, [r1]
- ldr r0, [r6]
- adds r0, 0x60
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0804F4E8 @ =gSprites
- adds r0, r1
- adds r1, r4, 0
- adds r1, 0x8
- lsls r1, 24
- lsrs r1, 24
- bl StartSpriteAnim
- adds r5, 0x2
- adds r4, 0x1
- cmp r4, 0x3
- ble _0804F49A
- ldr r0, _0804F4E0 @ =gUnknown_03004854
- ldr r1, [r0]
- b _0804F74C
- .align 2, 0
-_0804F4DC: .4byte gUnknown_082162E4
-_0804F4E0: .4byte gUnknown_03004854
-_0804F4E4: .4byte gSpriteTemplate_82163F4
-_0804F4E8: .4byte gSprites
-_0804F4EC:
- movs r0, 0x1
- negs r0, r0
- movs r4, 0
- str r4, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r2, _0804F514 @ =gUnknown_03004854
- ldr r1, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r2]
- movs r1, 0x98
- lsls r1, 1
- adds r0, r1
- str r4, [r0]
- b _0804F7E6
- .align 2, 0
-_0804F514: .4byte gUnknown_03004854
-_0804F518:
- mov r2, r8
- ldr r1, [r2]
- movs r3, 0x98
- lsls r3, 1
- adds r1, r3
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x2
- bne _0804F530
- bl sub_804E4FC
-_0804F530:
- ldr r0, _0804F548 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0804F53E
- b _0804F7E6
-_0804F53E:
- mov r5, r8
- ldr r1, [r5]
- movs r0, 0x8
- strb r0, [r1]
- b _0804F7E6
- .align 2, 0
-_0804F548: .4byte gPaletteFade
-_0804F54C:
- mov r0, r8
- ldr r1, [r0]
- movs r2, 0
- movs r0, 0xB
- strb r0, [r1]
- mov r1, r8
- ldr r0, [r1]
- movs r3, 0x9E
- lsls r3, 1
- adds r0, r3
- strb r2, [r0]
- b _0804F7E6
-_0804F564:
- lsls r1, 1
- adds r0, r3, 0
- adds r0, 0x80
- adds r0, r1
- ldrh r0, [r0]
- lsls r1, r4, 24
- lsrs r1, 24
- bl sub_804E7C0
- b _0804F5A2
-_0804F578:
- movs r4, 0
- ldr r2, _0804F5C0 @ =gUnknown_082162EC
- ldr r0, _0804F5C4 @ =gUnknown_03004854
- ldr r3, [r0]
- adds r0, r3, 0
- adds r0, 0x88
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 2
- movs r5, 0x9E
- lsls r5, 1
- adds r1, r3, r5
- ldrb r1, [r1]
- adds r0, r2
-_0804F594:
- ldrb r2, [r0]
- cmp r1, r2
- beq _0804F564
- adds r0, 0x1
- adds r4, 0x1
- cmp r4, 0x3
- ble _0804F594
-_0804F5A2:
- ldr r3, _0804F5C4 @ =gUnknown_03004854
- ldr r1, [r3]
- movs r5, 0x98
- lsls r5, 1
- adds r2, r1, r5
- movs r0, 0
- str r0, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r1, [r3]
- movs r0, 0x9E
- lsls r0, 1
- adds r1, r0
- b _0804F74C
- .align 2, 0
-_0804F5C0: .4byte gUnknown_082162EC
-_0804F5C4: .4byte gUnknown_03004854
-_0804F5C8:
- mov r1, r8
- ldr r3, [r1]
- movs r2, 0x98
- lsls r2, 1
- adds r1, r3, r2
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x3C
- bgt _0804F5DE
- b _0804F7E6
-_0804F5DE:
- movs r5, 0x9E
- lsls r5, 1
- adds r0, r3, r5
- adds r4, r3, 0
- adds r4, 0x88
- ldrb r0, [r0]
- ldrb r1, [r4]
- cmp r0, r1
- bcc _0804F620
- ldr r2, _0804F614 @ =gUnknown_082162F8
- ldr r1, _0804F618 @ =gUnknown_08216300
- ldrb r0, [r4]
- subs r0, 0x2
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r2
- ldr r2, _0804F61C @ =0xffffa800
- adds r1, r2, 0
- ldrh r0, [r0]
- adds r1, r0
- adds r0, r3, 0
- adds r0, 0x54
- strh r1, [r0]
- ldrb r0, [r3]
- adds r0, 0x1
- b _0804F624
- .align 2, 0
-_0804F614: .4byte gUnknown_082162F8
-_0804F618: .4byte gUnknown_08216300
-_0804F61C: .4byte 0xffffa800
-_0804F620:
- ldrb r0, [r3]
- subs r0, 0x1
-_0804F624:
- strb r0, [r3]
- mov r3, r8
- ldr r0, [r3]
- movs r5, 0x98
- lsls r5, 1
- adds r0, r5
- movs r1, 0
- str r1, [r0]
- b _0804F7E6
-_0804F636:
- mov r1, r8
- ldr r0, [r1]
- ldrb r1, [r0]
- adds r1, 0x1
- strb r1, [r0]
- bl sub_804F238
- movs r0, 0x2B
- bl PlaySE
- mov r2, r8
- ldr r0, [r2]
- b _0804F710
-_0804F650:
- movs r2, 0x80
- lsls r2, 19
- ldrh r0, [r2]
- movs r5, 0x80
- lsls r5, 3
- adds r1, r5, 0
- orrs r0, r1
- strh r0, [r2]
- mov r0, r8
- ldr r2, [r0]
- adds r1, r2, 0
- adds r1, 0x54
- movs r3, 0x80
- lsls r3, 2
- adds r0, r3, 0
- ldrh r5, [r1]
- adds r0, r5
- strh r0, [r1]
- movs r0, 0xA1
- lsls r0, 1
- adds r1, r2, r0
- ldrh r0, [r1]
- adds r0, 0x4
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xFF
- bls _0804F6D6
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- mov r1, r8
- ldr r3, [r1]
- movs r2, 0xA1
- lsls r2, 1
- adds r1, r3, r2
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r1]
- ldr r2, _0804F6E8 @ =gUnknown_082162F8
- ldr r1, _0804F6EC @ =gUnknown_08216300
- adds r0, r3, 0
- adds r0, 0x88
- ldrb r0, [r0]
- subs r0, 0x2
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- adds r0, r3, 0
- adds r0, 0x54
- strh r1, [r0]
- ldr r1, _0804F6F0 @ =REG_BG2CNT
- ldr r5, _0804F6F4 @ =0x00004882
- adds r0, r5, 0
- strh r0, [r1]
- movs r0, 0x98
- lsls r0, 1
- adds r1, r3, r0
- movs r0, 0
- str r0, [r1]
- movs r0, 0x34
- bl PlaySE
- bl BuyMenuDrawFieldObjects
-_0804F6D6:
- mov r1, r8
- ldr r0, [r1]
- movs r2, 0xB4
- lsls r2, 1
- adds r0, r2
- bl sub_8051414
- b _0804F7E6
- .align 2, 0
-_0804F6E8: .4byte gUnknown_082162F8
-_0804F6EC: .4byte gUnknown_08216300
-_0804F6F0: .4byte REG_BG2CNT
-_0804F6F4: .4byte 0x00004882
-_0804F6F8:
- bl sub_8051B8C
- lsls r0, 24
- cmp r0, 0
- beq _0804F70C
- ldr r0, _0804F71C @ =gUnknown_03004854
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_0804F70C:
- ldr r0, _0804F71C @ =gUnknown_03004854
- ldr r0, [r0]
-_0804F710:
- movs r3, 0xB4
- lsls r3, 1
- adds r0, r3
- bl sub_8051414
- b _0804F7E6
- .align 2, 0
-_0804F71C: .4byte gUnknown_03004854
-_0804F720:
- ldr r0, _0804F734 @ =gSpriteTemplate_8216548
- movs r2, 0x10
- negs r2, r2
- movs r1, 0x78
- movs r3, 0x3
- bl CreateSprite
- ldr r0, _0804F738 @ =gUnknown_03004854
- ldr r1, [r0]
- b _0804F74C
- .align 2, 0
-_0804F734: .4byte gSpriteTemplate_8216548
-_0804F738: .4byte gUnknown_03004854
-_0804F73C:
- mov r5, r8
- ldr r1, [r5]
- b _0804F74C
-_0804F742:
- mov r0, r8
- ldr r1, [r0]
- b _0804F74C
-_0804F748:
- mov r2, r8
- ldr r1, [r2]
-_0804F74C:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0804F7E6
-_0804F754:
- bl sub_804F81C
- ldr r3, _0804F804 @ =gUnknown_03004854
- ldr r4, [r3]
- adds r5, r4, 0
- adds r5, 0x56
- movs r2, 0
- movs r1, 0
- movs r0, 0x80
- strh r0, [r5]
- movs r5, 0x96
- lsls r5, 1
- adds r0, r4, r5
- str r1, [r0]
- ldr r1, _0804F808 @ =0x0000014b
- adds r0, r4, r1
- strb r2, [r0]
- ldr r0, [r3]
- adds r0, 0x7E
- strb r2, [r0]
- ldr r0, _0804F80C @ =sub_80501FC
- bl SetMainCallback2
- movs r4, 0
- ldr r0, _0804F810 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r4, r0
- bge _0804F7B8
- movs r5, 0xA0
- lsls r5, 20
- ldr r6, _0804F814 @ =gUnknown_08216308
-_0804F792:
- ldm r6!, {r0}
- lsrs r1, r5, 24
- bl CreateTask
- ldr r1, _0804F804 @ =gUnknown_03004854
- ldr r1, [r1]
- movs r2, 0xA4
- lsls r2, 1
- adds r1, r2
- adds r1, r4
- strb r0, [r1]
- movs r3, 0x80
- lsls r3, 17
- adds r5, r3
- adds r4, 0x1
- ldr r0, _0804F810 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r4, r0
- blt _0804F792
-_0804F7B8:
- bl GetCurrentMapMusic
- lsls r0, 16
- lsrs r0, 16
- ldr r4, _0804F818 @ =0x00000193
- cmp r0, r4
- beq _0804F7D6
- bl GetCurrentMapMusic
- ldr r1, _0804F804 @ =gUnknown_03004854
- ldr r1, [r1]
- movs r5, 0xBC
- lsls r5, 1
- adds r1, r5
- strh r0, [r1]
-_0804F7D6:
- adds r0, r4, 0
- bl PlayBGM
- movs r0, 0x35
- bl PlaySE
- bl sub_804E290
-_0804F7E6:
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F804: .4byte gUnknown_03004854
-_0804F808: .4byte 0x0000014b
-_0804F80C: .4byte sub_80501FC
-_0804F810: .4byte gSpecialVar_0x8004
-_0804F814: .4byte gUnknown_08216308
-_0804F818: .4byte 0x00000193
- thumb_func_end sub_804F378
-
- thumb_func_start sub_804F81C
-sub_804F81C: @ 804F81C
- push {lr}
- ldr r3, _0804F83C @ =gSendCmd
- movs r0, 0
- ldr r1, _0804F840 @ =gRecvCmds
- movs r2, 0x3
-_0804F826:
- strh r0, [r3]
- strh r0, [r3, 0x4]
- strh r0, [r1]
- strh r0, [r1, 0x10]
- adds r1, 0x2
- subs r2, 0x1
- cmp r2, 0
- bge _0804F826
- pop {r0}
- bx r0
- .align 2, 0
-_0804F83C: .4byte gSendCmd
-_0804F840: .4byte gRecvCmds
- thumb_func_end sub_804F81C
-
- thumb_func_start sub_804F844
-sub_804F844: @ 804F844
- push {r4,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r1, _0804F884 @ =gTasks
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- adds r2, r0, r1
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
- lsls r0, 16
- asrs r0, 16
- movs r4, 0xA
- ldrsh r1, [r2, r4]
- cmp r0, r1
- ble _0804F87C
- ldr r0, _0804F888 @ =gRecvCmds
- movs r4, 0xC
- ldrsh r1, [r2, r4]
- lsls r1, 1
- adds r0, 0x10
- adds r1, r0
- ldr r0, _0804F88C @ =0x00002345
- strh r0, [r1]
- adds r0, r3, 0
- bl DestroyTask
-_0804F87C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F884: .4byte gTasks
-_0804F888: .4byte gRecvCmds
-_0804F88C: .4byte 0x00002345
- thumb_func_end sub_804F844
-
- thumb_func_start sub_804F890
-sub_804F890: @ 804F890
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0804F8C0 @ =sub_804F844
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0804F8C4 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0xA]
- strh r5, [r1, 0xC]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F8C0: .4byte sub_804F844
-_0804F8C4: .4byte gTasks
- thumb_func_end sub_804F890
-
- thumb_func_start sub_804F8C8
-sub_804F8C8: @ 804F8C8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _0804F934 @ =gUnknown_03004854
- ldr r0, [r4]
- adds r0, 0x54
- ldrh r0, [r0]
- movs r1, 0x1
- bl task_tutorial_oak_boy_girl
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- beq _0804F8E6
- b _0804F9DC
-_0804F8E6:
- ldr r2, _0804F938 @ =gTasks
- lsls r1, r5, 2
- adds r0, r1, r5
- lsls r0, 3
- adds r0, r2
- movs r2, 0x8
- ldrsh r0, [r0, r2]
- adds r6, r1, 0
- cmp r0, 0
- beq _0804F8FC
- b _0804F9EA
-_0804F8FC:
- ldr r0, [r4]
- ldr r1, _0804F93C @ =0x0000014b
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _0804F9BE
- bl Random
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _0804F940 @ =0x0000028f
- bl __udivsi3
- lsls r0, 24
- lsrs r1, r0, 24
- adds r3, r1, 0
- ldr r0, [r4]
- adds r0, 0x56
- movs r4, 0
- ldrsh r2, [r0, r4]
- ldr r0, _0804F944 @ =0x000001f3
- cmp r2, r0
- bgt _0804F964
- cmp r1, 0x4B
- bls _0804F950
- ldr r1, _0804F948 @ =gRecvCmds
- ldr r0, _0804F94C @ =0x00004523
- b _0804F954
- .align 2, 0
-_0804F934: .4byte gUnknown_03004854
-_0804F938: .4byte gTasks
-_0804F93C: .4byte 0x0000014b
-_0804F940: .4byte 0x0000028f
-_0804F944: .4byte 0x000001f3
-_0804F948: .4byte gRecvCmds
-_0804F94C: .4byte 0x00004523
-_0804F950:
- ldr r1, _0804F95C @ =gRecvCmds
- ldr r0, _0804F960 @ =0x00005432
-_0804F954:
- strh r0, [r1, 0x12]
- ldr r0, _0804F960 @ =0x00005432
- b _0804F9C2
- .align 2, 0
-_0804F95C: .4byte gRecvCmds
-_0804F960: .4byte 0x00005432
-_0804F964:
- ldr r0, _0804F980 @ =0x000005db
- cmp r2, r0
- bgt _0804F992
- cmp r1, 0x50
- bhi _0804F9BE
- adds r0, r1, 0
- subs r0, 0x15
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3B
- bhi _0804F98C
- ldr r1, _0804F984 @ =gRecvCmds
- ldr r0, _0804F988 @ =0x00005432
- b _0804F9C2
- .align 2, 0
-_0804F980: .4byte 0x000005db
-_0804F984: .4byte gRecvCmds
-_0804F988: .4byte 0x00005432
-_0804F98C:
- cmp r1, 0x9
- bhi _0804F9C4
- b _0804F9B4
-_0804F992:
- cmp r1, 0x5A
- bhi _0804F9BE
- adds r0, r1, 0
- subs r0, 0x47
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x13
- bhi _0804F9B0
- ldr r1, _0804F9A8 @ =gRecvCmds
- ldr r0, _0804F9AC @ =0x00005432
- b _0804F9C2
- .align 2, 0
-_0804F9A8: .4byte gRecvCmds
-_0804F9AC: .4byte 0x00005432
-_0804F9B0:
- cmp r3, 0x1D
- bhi _0804F9C4
-_0804F9B4:
- movs r0, 0x1
- movs r1, 0x5
- bl sub_804F890
- b _0804F9C4
-_0804F9BE:
- ldr r1, _0804F9D0 @ =gRecvCmds
- ldr r0, _0804F9D4 @ =0x00004523
-_0804F9C2:
- strh r0, [r1, 0x12]
-_0804F9C4:
- ldr r0, _0804F9D8 @ =gTasks
- adds r1, r6, r5
- lsls r1, 3
- adds r1, r0
- movs r0, 0x1
- b _0804F9E8
- .align 2, 0
-_0804F9D0: .4byte gRecvCmds
-_0804F9D4: .4byte 0x00004523
-_0804F9D8: .4byte gTasks
-_0804F9DC:
- ldr r0, _0804F9F0 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- movs r0, 0
-_0804F9E8:
- strh r0, [r1, 0x8]
-_0804F9EA:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F9F0: .4byte gTasks
- thumb_func_end sub_804F8C8
-
- thumb_func_start sub_804F9F4
-sub_804F9F4: @ 804F9F4
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r6, _0804FA78 @ =gUnknown_03004854
- ldr r3, [r6]
- adds r0, r3, 0
- adds r0, 0x54
- ldrh r0, [r0]
- movs r1, 0xC0
- lsls r1, 5
- adds r0, r1
- ldr r1, _0804FA7C @ =0x0000ffff
- ands r0, r1
- adds r1, r3, 0
- adds r1, 0xA6
- ldrb r1, [r1]
- lsrs r2, r0, 8
- ldr r0, _0804FA80 @ =gUnknown_08216303
- adds r1, r0
- ldrb r1, [r1]
- adds r0, r1, 0
- adds r0, 0x14
- cmp r2, r0
- bls _0804FB04
- adds r0, 0x14
- cmp r2, r0
- bcs _0804FB04
- ldr r2, _0804FA84 @ =gTasks
- lsls r1, r4, 2
- adds r0, r1, r4
- lsls r0, 3
- adds r2, r0, r2
- movs r5, 0x8
- ldrsh r0, [r2, r5]
- adds r5, r1, 0
- cmp r0, 0
- bne _0804FB12
- ldr r1, _0804FA88 @ =0x0000014b
- adds r0, r3, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _0804FAF0
- bl Random
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _0804FA8C @ =0x0000028f
- bl __udivsi3
- lsls r0, 24
- lsrs r2, r0, 24
- adds r3, r2, 0
- ldr r0, [r6]
- adds r0, 0x56
- movs r6, 0
- ldrsh r1, [r0, r6]
- ldr r0, _0804FA90 @ =0x000001f3
- cmp r1, r0
- bgt _0804FAAC
- cmp r2, 0x42
- bls _0804FA9C
- ldr r1, _0804FA94 @ =gRecvCmds
- ldr r0, _0804FA98 @ =0x00004523
- strh r0, [r1, 0x14]
- b _0804FAD4
- .align 2, 0
-_0804FA78: .4byte gUnknown_03004854
-_0804FA7C: .4byte 0x0000ffff
-_0804FA80: .4byte gUnknown_08216303
-_0804FA84: .4byte gTasks
-_0804FA88: .4byte 0x0000014b
-_0804FA8C: .4byte 0x0000028f
-_0804FA90: .4byte 0x000001f3
-_0804FA94: .4byte gRecvCmds
-_0804FA98: .4byte 0x00004523
-_0804FA9C:
- ldr r1, _0804FAA4 @ =gRecvCmds
- ldr r0, _0804FAA8 @ =0x00005432
- strh r0, [r1, 0x14]
- b _0804FAD4
- .align 2, 0
-_0804FAA4: .4byte gRecvCmds
-_0804FAA8: .4byte 0x00005432
-_0804FAAC:
- cmp r2, 0x41
- bls _0804FAB6
- ldr r1, _0804FAE0 @ =gRecvCmds
- ldr r0, _0804FAE4 @ =0x00004523
- strh r0, [r1, 0x14]
-_0804FAB6:
- adds r0, r2, 0
- subs r0, 0x29
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x18
- bhi _0804FAC8
- ldr r1, _0804FAE0 @ =gRecvCmds
- ldr r0, _0804FAE8 @ =0x00005432
- strh r0, [r1, 0x14]
-_0804FAC8:
- cmp r3, 0x9
- bhi _0804FAD4
- movs r0, 0x2
- movs r1, 0x5
- bl sub_804F890
-_0804FAD4:
- ldr r0, _0804FAEC @ =gTasks
- adds r1, r5, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0x1
- b _0804FB10
- .align 2, 0
-_0804FAE0: .4byte gRecvCmds
-_0804FAE4: .4byte 0x00004523
-_0804FAE8: .4byte 0x00005432
-_0804FAEC: .4byte gTasks
-_0804FAF0:
- ldr r0, _0804FAFC @ =gRecvCmds
- ldr r1, _0804FB00 @ =0x00004523
- strh r1, [r0, 0x14]
- movs r0, 0x1
- strh r0, [r2, 0x8]
- b _0804FB12
- .align 2, 0
-_0804FAFC: .4byte gRecvCmds
-_0804FB00: .4byte 0x00004523
-_0804FB04:
- ldr r0, _0804FB18 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0
-_0804FB10:
- strh r0, [r1, 0x8]
-_0804FB12:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804FB18: .4byte gTasks
- thumb_func_end sub_804F9F4
-
- thumb_func_start sub_804FB1C
-sub_804FB1C: @ 804FB1C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r5, _0804FB9C @ =gUnknown_03004854
- ldr r3, [r5]
- adds r0, r3, 0
- adds r0, 0x54
- ldrh r0, [r0]
- movs r1, 0xC0
- lsls r1, 5
- adds r0, r1
- ldr r1, _0804FBA0 @ =0x0000ffff
- ands r0, r1
- adds r1, r3, 0
- adds r1, 0xA8
- ldrb r1, [r1]
- lsrs r2, r0, 8
- ldr r0, _0804FBA4 @ =gUnknown_08216303
- adds r1, r0
- ldrb r1, [r1]
- adds r0, r1, 0
- adds r0, 0x14
- cmp r2, r0
- bls _0804FC30
- adds r0, 0x14
- cmp r2, r0
- bcs _0804FC30
- ldr r2, _0804FBA8 @ =gTasks
- lsls r1, r4, 2
- adds r0, r1, r4
- lsls r0, 3
- adds r2, r0, r2
- movs r6, 0x8
- ldrsh r0, [r2, r6]
- adds r6, r1, 0
- cmp r0, 0
- bne _0804FC3E
- ldr r1, _0804FBAC @ =0x0000014b
- adds r0, r3, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _0804FC1C
- bl Random
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _0804FBB0 @ =0x0000028f
- bl __udivsi3
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, [r5]
- adds r0, 0x56
- movs r3, 0
- ldrsh r1, [r0, r3]
- ldr r0, _0804FBB4 @ =0x000001f3
- cmp r1, r0
- bgt _0804FBD0
- cmp r2, 0x58
- bls _0804FBC0
- ldr r1, _0804FBB8 @ =gRecvCmds
- ldr r0, _0804FBBC @ =0x00004523
- strh r0, [r1, 0x16]
- b _0804FC02
- .align 2, 0
-_0804FB9C: .4byte gUnknown_03004854
-_0804FBA0: .4byte 0x0000ffff
-_0804FBA4: .4byte gUnknown_08216303
-_0804FBA8: .4byte gTasks
-_0804FBAC: .4byte 0x0000014b
-_0804FBB0: .4byte 0x0000028f
-_0804FBB4: .4byte 0x000001f3
-_0804FBB8: .4byte gRecvCmds
-_0804FBBC: .4byte 0x00004523
-_0804FBC0:
- ldr r1, _0804FBC8 @ =gRecvCmds
- ldr r0, _0804FBCC @ =0x00005432
- strh r0, [r1, 0x16]
- b _0804FC02
- .align 2, 0
-_0804FBC8: .4byte gRecvCmds
-_0804FBCC: .4byte 0x00005432
-_0804FBD0:
- cmp r2, 0x3C
- bls _0804FBE4
- ldr r1, _0804FBDC @ =gRecvCmds
- ldr r0, _0804FBE0 @ =0x00004523
- b _0804FBF4
- .align 2, 0
-_0804FBDC: .4byte gRecvCmds
-_0804FBE0: .4byte 0x00004523
-_0804FBE4:
- adds r0, r2, 0
- subs r0, 0x38
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _0804FBF6
- ldr r1, _0804FC10 @ =gRecvCmds
- ldr r0, _0804FC14 @ =0x00005432
-_0804FBF4:
- strh r0, [r1, 0x16]
-_0804FBF6:
- cmp r2, 0x4
- bhi _0804FC02
- movs r0, 0x3
- movs r1, 0x5
- bl sub_804F890
-_0804FC02:
- ldr r0, _0804FC18 @ =gTasks
- adds r1, r6, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0x1
- b _0804FC3C
- .align 2, 0
-_0804FC10: .4byte gRecvCmds
-_0804FC14: .4byte 0x00005432
-_0804FC18: .4byte gTasks
-_0804FC1C:
- ldr r0, _0804FC28 @ =gRecvCmds
- ldr r1, _0804FC2C @ =0x00004523
- strh r1, [r0, 0x16]
- movs r0, 0x1
- strh r0, [r2, 0x8]
- b _0804FC3E
- .align 2, 0
-_0804FC28: .4byte gRecvCmds
-_0804FC2C: .4byte 0x00004523
-_0804FC30:
- ldr r0, _0804FC44 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0
-_0804FC3C:
- strh r0, [r1, 0x8]
-_0804FC3E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804FC44: .4byte gTasks
- thumb_func_end sub_804FB1C
-
- thumb_func_start sub_804FC48
-sub_804FC48: @ 804FC48
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 16
- lsrs r7, r0, 16
- mov r8, r7
- lsls r1, 24
- ldr r0, _0804FCBC @ =gSpriteTemplate_821645C
- ldr r4, _0804FCC0 @ =gUnknown_082162E4
- lsrs r1, 23
- adds r2, r1, r4
- ldrb r6, [r2]
- ldr r5, _0804FCC4 @ =gUnknown_082162CC
- adds r2, r1, r5
- movs r3, 0
- ldrsb r3, [r2, r3]
- lsls r2, r3, 2
- adds r2, r3
- lsls r2, 1
- subs r6, r2
- adds r4, 0x1
- adds r4, r1, r4
- ldrb r2, [r4]
- adds r5, 0x1
- adds r1, r5
- movs r3, 0
- ldrsb r3, [r1, r3]
- lsls r1, r3, 2
- adds r1, r3
- lsls r1, 1
- subs r2, r1
- adds r1, r6, 0
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- adds r2, r1, 0
- ldr r0, _0804FCC8 @ =0x00004523
- cmp r7, r0
- bne _0804FCD4
- lsls r4, r1, 4
- adds r4, r1
- lsls r4, 2
- ldr r5, _0804FCCC @ =gSprites
- adds r0, r4, r5
- movs r1, 0x2
- bl StartSpriteAnim
- adds r5, 0x1C
- adds r4, r5
- ldr r0, _0804FCD0 @ =sub_8051684
- str r0, [r4]
- movs r0, 0x28
- bl PlaySE
- b _0804FD18
- .align 2, 0
-_0804FCBC: .4byte gSpriteTemplate_821645C
-_0804FCC0: .4byte gUnknown_082162E4
-_0804FCC4: .4byte gUnknown_082162CC
-_0804FCC8: .4byte 0x00004523
-_0804FCCC: .4byte gSprites
-_0804FCD0: .4byte sub_8051684
-_0804FCD4:
- ldr r0, _0804FCF4 @ =0x00005432
- cmp r7, r0
- bne _0804FCFC
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0804FCF8 @ =gSprites
- adds r0, r1
- movs r1, 0
- bl StartSpriteAnim
- movs r0, 0x1F
- bl PlaySE
- b _0804FD18
- .align 2, 0
-_0804FCF4: .4byte 0x00005432
-_0804FCF8: .4byte gSprites
-_0804FCFC:
- ldr r0, _0804FD28 @ =0x00002345
- cmp r8, r0
- bne _0804FD18
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- ldr r1, _0804FD2C @ =gSprites
- adds r0, r1
- movs r1, 0x1
- bl StartSpriteAnim
- movs r0, 0x20
- bl PlaySE
-_0804FD18:
- bl sub_805156C
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804FD28: .4byte 0x00002345
-_0804FD2C: .4byte gSprites
- thumb_func_end sub_804FC48
-
- thumb_func_start sub_804FD30
-sub_804FD30: @ 804FD30
- push {r4-r7,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- adds r5, r4, 0
- bl sub_804E290
- ldr r0, _0804FD50 @ =0x00004523
- cmp r4, r0
- beq _0804FD64
- cmp r4, r0
- bgt _0804FD58
- ldr r0, _0804FD54 @ =0x00002345
- cmp r4, r0
- beq _0804FE34
- b _0804FE60
- .align 2, 0
-_0804FD50: .4byte 0x00004523
-_0804FD54: .4byte 0x00002345
-_0804FD58:
- ldr r0, _0804FD60 @ =0x00005432
- cmp r5, r0
- beq _0804FDFC
- b _0804FE60
- .align 2, 0
-_0804FD60: .4byte 0x00005432
-_0804FD64:
- ldr r7, _0804FD94 @ =gUnknown_03004854
- ldr r4, [r7]
- adds r5, r4, 0
- adds r5, 0x56
- ldrh r6, [r5]
- movs r0, 0
- ldrsh r1, [r5, r0]
- ldr r0, _0804FD98 @ =0x000005db
- cmp r1, r0
- bgt _0804FDA0
- ldr r1, _0804FD9C @ =gUnknown_082165DA
- adds r0, r4, 0
- adds r0, 0x88
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0xC0
- lsls r0, 1
- bl __divsi3
- adds r0, r6, r0
- strh r0, [r5]
- b _0804FE60
- .align 2, 0
-_0804FD94: .4byte gUnknown_03004854
-_0804FD98: .4byte 0x000005db
-_0804FD9C: .4byte gUnknown_082165DA
-_0804FDA0:
- ldr r1, _0804FDF8 @ =gUnknown_082165DA
- adds r0, r4, 0
- adds r0, 0x88
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x80
- bl __divsi3
- adds r0, r6, r0
- strh r0, [r5]
- movs r1, 0xA2
- lsls r1, 1
- adds r4, r1
- movs r1, 0
- ldrsh r0, [r5, r1]
- movs r1, 0x64
- bl __divsi3
- adds r1, r0, 0
- subs r1, 0xA
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_8051AC8
- ldr r0, [r7]
- movs r1, 0xA3
- lsls r1, 1
- adds r4, r0, r1
- adds r0, 0x56
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r1, 0x64
- bl __divsi3
- adds r1, r0, 0
- subs r1, 0xA
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_8051AC8
- b _0804FE60
- .align 2, 0
-_0804FDF8: .4byte gUnknown_082165DA
-_0804FDFC:
- ldr r0, _0804FE28 @ =gUnknown_03004854
- ldr r2, [r0]
- adds r4, r2, 0
- adds r4, 0x56
- ldrh r5, [r4]
- movs r0, 0
- ldrsh r1, [r4, r0]
- ldr r0, _0804FE2C @ =0x000005db
- cmp r1, r0
- bgt _0804FE60
- ldr r1, _0804FE30 @ =gUnknown_082165DA
- adds r0, r2, 0
- adds r0, 0x88
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x80
- lsls r0, 1
- bl __divsi3
- adds r0, r5, r0
- b _0804FE5E
- .align 2, 0
-_0804FE28: .4byte gUnknown_03004854
-_0804FE2C: .4byte 0x000005db
-_0804FE30: .4byte gUnknown_082165DA
-_0804FE34:
- ldr r0, _0804FE68 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r4, r0, 0
- adds r4, 0x56
- ldr r1, _0804FE6C @ =gUnknown_082165DA
- adds r0, 0x88
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x80
- lsls r0, 1
- bl __divsi3
- ldrh r1, [r4]
- subs r1, r0
- strh r1, [r4]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x7F
- bgt _0804FE60
- movs r0, 0x80
-_0804FE5E:
- strh r0, [r4]
-_0804FE60:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804FE68: .4byte gUnknown_03004854
-_0804FE6C: .4byte gUnknown_082165DA
- thumb_func_end sub_804FD30
-
- thumb_func_start sub_804FE70
-sub_804FE70: @ 804FE70
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r0, _0804FF40 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0
- beq _0804FEB6
- ldr r3, _0804FF44 @ =gSendCmd
- ldrh r0, [r3, 0x4]
- ldr r2, _0804FF48 @ =gRecvCmds
- cmp r0, 0
- beq _0804FE98
- movs r1, 0
- strh r0, [r2, 0x10]
- ldr r0, _0804FF4C @ =0x00004444
- strh r0, [r2]
- strh r1, [r3, 0x4]
-_0804FE98:
- ldr r0, _0804FF48 @ =gRecvCmds
- ldr r3, _0804FF4C @ =0x00004444
- adds r1, r2, 0x2
- adds r2, r0, 0
- adds r2, 0x12
- movs r6, 0x2
-_0804FEA4:
- ldrh r0, [r2]
- cmp r0, 0
- beq _0804FEAC
- strh r3, [r1]
-_0804FEAC:
- adds r1, 0x2
- adds r2, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _0804FEA4
-_0804FEB6:
- movs r6, 0
- ldr r7, _0804FF50 @ =gUnknown_03004854
- adds r1, r7, 0
- ldr r0, [r1]
- adds r0, 0x88
- ldrb r0, [r0]
- cmp r6, r0
- blt _0804FEC8
- b _0805005C
-_0804FEC8:
- movs r2, 0
- str r2, [sp]
- mov r9, r2
- ldr r0, _0804FF48 @ =gRecvCmds
- adds r0, 0x10
- mov r8, r0
- ldr r1, _0804FF54 @ =0x00005432
- mov r10, r1
-_0804FED8:
- ldr r2, [sp]
- ldr r1, _0804FF48 @ =gRecvCmds
- adds r0, r2, r1
- ldrh r1, [r0]
- ldr r0, _0804FF4C @ =0x00004444
- cmp r1, r0
- beq _0804FEE8
- b _0805003E
-_0804FEE8:
- ldr r0, [r7]
- adds r0, 0xA2
- adds r0, r2
- ldrh r5, [r0]
- mov r2, r8
- ldrh r4, [r2]
- ldr r0, _0804FF58 @ =0x00004523
- cmp r4, r0
- bne _0804FF60
- bl sub_804FD30
- ldr r0, [r7]
- movs r1, 0x9F
- lsls r1, 1
- adds r4, r0, r1
- adds r0, 0x56
- movs r2, 0
- ldrsh r0, [r0, r2]
- movs r1, 0x37
- bl __divsi3
- ldrh r1, [r4]
- adds r1, r0
- strh r1, [r4]
- lsls r1, 16
- ldr r0, _0804FF5C @ =0x03e70000
- cmp r1, r0
- bls _0804FF26
- movs r0, 0xFA
- lsls r0, 2
- strh r0, [r4]
-_0804FF26:
- lsls r1, r5, 24
- lsrs r1, 24
- ldr r0, _0804FF58 @ =0x00004523
- bl sub_804FC48
- ldr r1, [r7]
- movs r0, 0xA6
- lsls r0, 1
- adds r1, r0
- add r1, r9
- ldrh r0, [r1]
- adds r0, 0x1
- b _0804FFCA
- .align 2, 0
-_0804FF40: .4byte gSpecialVar_0x8004
-_0804FF44: .4byte gSendCmd
-_0804FF48: .4byte gRecvCmds
-_0804FF4C: .4byte 0x00004444
-_0804FF50: .4byte gUnknown_03004854
-_0804FF54: .4byte 0x00005432
-_0804FF58: .4byte 0x00004523
-_0804FF5C: .4byte 0x03e70000
-_0804FF60:
- cmp r4, r10
- bne _0804FF9E
- mov r0, r10
- bl sub_804FD30
- ldr r0, [r7]
- movs r1, 0x9F
- lsls r1, 1
- adds r4, r0, r1
- adds r0, 0x56
- movs r2, 0
- ldrsh r0, [r0, r2]
- movs r1, 0x46
- bl __divsi3
- ldrh r1, [r4]
- adds r1, r0
- strh r1, [r4]
- lsls r1, r5, 24
- lsrs r1, 24
- mov r0, r10
- bl sub_804FC48
- ldr r1, [r7]
- movs r0, 0xA7
- lsls r0, 1
- adds r1, r0
- add r1, r9
- ldrh r0, [r1]
- adds r0, 0x1
- b _0804FFCA
-_0804FF9E:
- ldr r0, _08050018 @ =0x00002345
- cmp r4, r0
- bne _0804FFD6
- lsls r1, r5, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_804FC48
- adds r0, r4, 0
- bl sub_804FD30
- ldr r0, [r7]
- movs r1, 0xA8
- lsls r1, 1
- adds r0, r1
- mov r2, r9
- adds r1, r0, r2
- ldrh r2, [r1]
- ldr r0, _0805001C @ =0x000003e6
- cmp r2, r0
- bhi _0804FFCC
- adds r0, r2, 0x1
-_0804FFCA:
- strh r0, [r1]
-_0804FFCC:
- mov r0, r8
- ldrh r1, [r0]
- ldr r0, _08050018 @ =0x00002345
- cmp r1, r0
- beq _0804FFE4
-_0804FFD6:
- mov r1, r8
- ldrh r0, [r1]
- ldr r2, _08050020 @ =0x00004523
- cmp r0, r2
- beq _0804FFE4
- cmp r0, r10
- bne _0805003E
-_0804FFE4:
- ldr r0, _08050024 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r2, r0, 0
- adds r2, 0x56
- movs r0, 0
- ldrsh r1, [r2, r0]
- ldr r0, _08050028 @ =0x000005dc
- cmp r1, r0
- ble _08050034
- adds r0, r1, 0
- ldr r2, _0805002C @ =0xfffffd12
- adds r0, r2
- movs r1, 0x14
- bl __divsi3
- adds r1, r0, 0
- movs r0, 0x80
- lsls r0, 1
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- ldr r0, _08050030 @ =gMPlay_BGM
- bl m4aMPlayTempoControl
- b _0805003E
- .align 2, 0
-_08050018: .4byte 0x00002345
-_0805001C: .4byte 0x000003e6
-_08050020: .4byte 0x00004523
-_08050024: .4byte gUnknown_03004854
-_08050028: .4byte 0x000005dc
-_0805002C: .4byte 0xfffffd12
-_08050030: .4byte gMPlay_BGM
-_08050034:
- ldr r0, _08050098 @ =gMPlay_BGM
- movs r1, 0x80
- lsls r1, 1
- bl m4aMPlayTempoControl
-_0805003E:
- ldr r1, [sp]
- adds r1, 0x2
- str r1, [sp]
- movs r2, 0x6
- add r9, r2
- movs r0, 0x2
- add r8, r0
- adds r6, 0x1
- ldr r7, _0805009C @ =gUnknown_03004854
- ldr r0, [r7]
- adds r0, 0x88
- ldrb r0, [r0]
- cmp r6, r0
- bge _0805005C
- b _0804FED8
-_0805005C:
- ldr r0, _080500A0 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0
- beq _08050088
- movs r6, 0
- ldr r3, _0805009C @ =gUnknown_03004854
- ldr r0, [r3]
- adds r0, 0x88
- ldrb r0, [r0]
- cmp r6, r0
- bge _08050088
- movs r2, 0
- ldr r1, _080500A4 @ =gRecvCmds
-_08050076:
- strh r2, [r1]
- strh r2, [r1, 0x10]
- adds r1, 0x2
- adds r6, 0x1
- ldr r0, [r3]
- adds r0, 0x88
- ldrb r0, [r0]
- cmp r6, r0
- blt _08050076
-_08050088:
- 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
-_08050098: .4byte gMPlay_BGM
-_0805009C: .4byte gUnknown_03004854
-_080500A0: .4byte gSpecialVar_0x8004
-_080500A4: .4byte gRecvCmds
- thumb_func_end sub_804FE70
-
- thumb_func_start sub_80500A8
-sub_80500A8: @ 80500A8
- push {r4-r6,lr}
- movs r6, 0
- ldr r5, _080500EC @ =gUnknown_03004854
- ldr r4, [r5]
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r0, 23
- adds r4, 0xA2
- adds r4, r0
- ldrb r3, [r4]
- ldr r0, [r5]
- adds r0, 0x6F
- ldrb r0, [r0]
- cmp r0, 0
- bne _0805018A
- ldr r0, _080500F0 @ =gSaveBlock2
- ldrb r0, [r0, 0x13]
- cmp r0, 0x2
- bne _080500FC
- ldr r2, _080500F4 @ =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0805010A
- ldrh r0, [r2, 0x28]
- ldr r1, _080500F8 @ =0x00000201
- bics r1, r0
- negs r0, r1
- orrs r0, r1
- lsrs r6, r0, 31
- b _0805010A
- .align 2, 0
-_080500EC: .4byte gUnknown_03004854
-_080500F0: .4byte gSaveBlock2
-_080500F4: .4byte gMain
-_080500F8: .4byte 0x00000201
-_080500FC:
- ldr r0, _0805015C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0805010A
- movs r6, 0x1
-_0805010A:
- cmp r6, 0
- beq _0805018A
- ldr r4, _08050160 @ =gUnknown_03004854
- ldr r1, [r4]
- lsls r2, r3, 1
- adds r0, r1, 0
- adds r0, 0x9A
- adds r0, r2
- adds r1, 0x5C
- ldrh r0, [r0]
- adds r1, r0
- ldrb r1, [r1]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08050164 @ =gSprites
- adds r0, r1
- adds r1, r3, 0x4
- lsls r1, 24
- lsrs r1, 24
- bl StartSpriteAnim
- ldr r0, [r4]
- adds r0, 0x54
- ldrh r4, [r0]
- bl GetMultiplayerId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl task_tutorial_oak_boy_girl
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _08050170
- ldr r1, _08050168 @ =gSendCmd
- ldr r0, _0805016C @ =0x00004523
- b _08050188
- .align 2, 0
-_0805015C: .4byte gMain
-_08050160: .4byte gUnknown_03004854
-_08050164: .4byte gSprites
-_08050168: .4byte gSendCmd
-_0805016C: .4byte 0x00004523
-_08050170:
- cmp r0, 0x1
- bne _08050184
- ldr r1, _0805017C @ =gSendCmd
- ldr r0, _08050180 @ =0x00005432
- b _08050188
- .align 2, 0
-_0805017C: .4byte gSendCmd
-_08050180: .4byte 0x00005432
-_08050184:
- ldr r1, _080501E4 @ =gSendCmd
- ldr r0, _080501E8 @ =0x00002345
-_08050188:
- strh r0, [r1, 0x4]
-_0805018A:
- ldr r2, _080501EC @ =gUnknown_03004854
- ldr r1, [r2]
- adds r1, 0x7E
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- bls _080501BA
- ldr r0, [r2]
- adds r1, r0, 0
- adds r1, 0x56
- ldrh r3, [r1]
- movs r4, 0
- ldrsh r0, [r1, r4]
- cmp r0, 0x80
- ble _080501B2
- subs r0, r3, 0x1
- strh r0, [r1]
-_080501B2:
- ldr r0, [r2]
- adds r0, 0x7E
- movs r1, 0
- strb r1, [r0]
-_080501BA:
- ldr r0, _080501F0 @ =gUnknown_020297ED
- ldrb r0, [r0]
- cmp r0, 0
- beq _080501DE
- ldr r0, _080501F4 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- lsls r0, 2
- ands r0, r1
- cmp r0, 0
- beq _080501DE
- ldr r0, [r2]
- ldr r1, _080501F8 @ =0x0000014b
- adds r2, r0, r1
- ldrb r0, [r2]
- movs r1, 0x1
- eors r0, r1
- strb r0, [r2]
-_080501DE:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080501E4: .4byte gSendCmd
-_080501E8: .4byte 0x00002345
-_080501EC: .4byte gUnknown_03004854
-_080501F0: .4byte gUnknown_020297ED
-_080501F4: .4byte gMain
-_080501F8: .4byte 0x0000014b
- thumb_func_end sub_80500A8
-
- thumb_func_start sub_80501FC
-sub_80501FC: @ 80501FC
- push {r4-r6,lr}
- bl sub_8051474
- ldr r4, _08050294 @ =gUnknown_03004854
- ldr r0, [r4]
- movs r1, 0x96
- lsls r1, 1
- adds r2, r0, r1
- ldr r1, [r2]
- ldr r0, _08050298 @ =0x00057e03
- cmp r1, r0
- bhi _08050218
- adds r0, r1, 0x1
- str r0, [r2]
-_08050218:
- bl sub_80500A8
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x56
- ldrh r0, [r0]
- movs r5, 0x9F
- lsls r5, 1
- adds r1, r5
- ldrh r1, [r1]
- bl SetLinkDebugValues
- bl sub_804FE70
- ldr r0, [r4]
- adds r0, r5
- ldrh r0, [r0]
- movs r6, 0xFA
- lsls r6, 2
- adds r1, r6, 0
- bl sub_805194C
- ldr r0, [r4]
- adds r0, 0x56
- ldrh r0, [r0]
- bl sub_8051A3C
- bl sub_8051B18
- bl sub_805123C
- ldr r2, [r4]
- adds r3, r2, 0
- adds r3, 0x6F
- ldrb r0, [r3]
- cmp r0, 0
- bne _0805027E
- movs r1, 0xA0
- lsls r1, 1
- adds r0, r2, r1
- ldrh r1, [r0]
- ldr r0, _0805029C @ =0x000003e7
- cmp r1, r0
- bls _0805027E
- adds r0, r2, r5
- strh r6, [r0]
- movs r0, 0x1
- strb r0, [r3]
- ldr r0, _080502A0 @ =sub_8050954
- bl SetMainCallback2
-_0805027E:
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08050294: .4byte gUnknown_03004854
-_08050298: .4byte 0x00057e03
-_0805029C: .4byte 0x000003e7
-_080502A0: .4byte sub_8050954
- thumb_func_end sub_80501FC
-
- thumb_func_start help_system_is_not_first_time
-help_system_is_not_first_time: @ 80502A4
- push {r4,r5,lr}
- lsls r1, 24
- lsls r2, 24
- lsrs r1, 20
- adds r4, r1, r0
- lsrs r2, 20
- adds r5, r2, r0
- ldrh r0, [r4]
- ldrh r1, [r5]
- cmp r0, r1
- bne _080502E2
- adds r0, r4, 0x2
- adds r1, r5, 0x2
- bl StringCompare
- cmp r0, 0
- bne _080502F0
- ldr r0, [r4, 0x8]
- ldr r2, _080502E8 @ =0xffffff00
- ands r0, r2
- ldr r1, [r5, 0x8]
- ands r1, r2
- cmp r0, r1
- bne _080502F0
- ldr r0, [r4, 0xC]
- ldr r2, _080502EC @ =0x00ffffff
- ands r0, r2
- ldr r1, [r5, 0xC]
- ands r1, r2
- cmp r0, r1
- bne _080502F0
-_080502E2:
- movs r0, 0x1
- b _080502F2
- .align 2, 0
-_080502E8: .4byte 0xffffff00
-_080502EC: .4byte 0x00ffffff
-_080502F0:
- movs r0, 0
-_080502F2:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end help_system_is_not_first_time
-
- thumb_func_start sub_80502F8
-sub_80502F8: @ 80502F8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- mov r10, r0
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x10]
- lsls r3, 24
- lsrs r3, 24
- mov r2, sp
- movs r4, 0x5
-_08050314:
- ldrh r0, [r1]
- strh r0, [r2]
- adds r1, 0x2
- adds r2, 0x2
- subs r4, 0x1
- cmp r4, 0
- bge _08050314
- movs r6, 0
- mov r1, sp
- movs r4, 0x4
-_08050328:
- movs r2, 0
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _08050332
- adds r6, 0x1
-_08050332:
- adds r1, 0x2
- subs r4, 0x1
- cmp r4, 0
- bge _08050328
- cmp r6, 0x5
- beq _08050386
- cmp r3, 0x3
- bhi _08050386
- movs r4, 0
- ldr r3, [sp, 0x10]
- cmp r4, r3
- bge _0805039E
- mov r3, r10
-_0805034C:
- movs r6, 0
- ldr r7, [sp, 0x10]
- cmp r6, r7
- bge _08050394
- mov r9, r3
- mov r5, r10
- lsls r0, r4, 24
- mov r8, r0
-_0805035C:
- mov r1, r9
- ldrh r0, [r1]
- ldrh r2, [r5]
- cmp r0, r2
- bne _0805038A
- cmp r4, r6
- beq _0805038A
- cmp r0, 0xAF
- bne _08050386
- lsls r2, r6, 24
- lsrs r2, 24
- mov r0, r10
- mov r7, r8
- lsrs r1, r7, 24
- str r3, [sp, 0xC]
- bl help_system_is_not_first_time
- lsls r0, 24
- ldr r3, [sp, 0xC]
- cmp r0, 0
- beq _0805038A
-_08050386:
- movs r0, 0xC
- b _080504DE
-_0805038A:
- adds r5, 0x10
- adds r6, 0x1
- ldr r0, [sp, 0x10]
- cmp r6, r0
- blt _0805035C
-_08050394:
- adds r3, 0x10
- adds r4, 0x1
- ldr r1, [sp, 0x10]
- cmp r4, r1
- blt _0805034C
-_0805039E:
- movs r2, 0
- mov r1, sp
- movs r4, 0x4
-_080503A4:
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0
- ble _080503B2
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
-_080503B2:
- adds r1, 0x2
- subs r4, 0x1
- cmp r4, 0
- bge _080503A4
- cmp r2, 0x3
- bls _080503C2
- movs r0, 0xD
- b _080504DE
-_080503C2:
- cmp r2, 0x3
- bne _080503CA
- movs r0, 0xB
- b _080504DE
-_080503CA:
- movs r4, 0
- mov r1, sp
-_080503CE:
- movs r7, 0
- ldrsh r0, [r1, r7]
- cmp r0, 0x32
- ble _080503D8
- b _080504D8
-_080503D8:
- adds r1, 0x2
- adds r4, 0x1
- cmp r4, 0x4
- ble _080503CE
- cmp r2, 0x1
- bne _0805042A
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- ble _080503F2
- movs r0, 0x1
- b _080504DE
-_080503F2:
- mov r0, sp
- ldrh r0, [r0, 0x2]
- lsls r0, 16
- cmp r0, 0
- ble _08050400
- movs r0, 0x2
- b _080504DE
-_08050400:
- mov r0, sp
- movs r3, 0x4
- ldrsh r0, [r0, r3]
- cmp r0, 0
- ble _0805040E
- movs r0, 0x3
- b _080504DE
-_0805040E:
- mov r0, sp
- movs r4, 0x6
- ldrsh r0, [r0, r4]
- cmp r0, 0
- ble _0805041C
- movs r0, 0x4
- b _080504DE
-_0805041C:
- mov r0, sp
- movs r7, 0x8
- ldrsh r0, [r0, r7]
- cmp r0, 0
- ble _0805042A
- movs r0, 0x5
- b _080504DE
-_0805042A:
- cmp r2, 0x2
- bne _080504DC
- movs r4, 0
- ldr r5, _08050474 @ =gUnknown_03000520
- mov r1, sp
- adds r2, r5, 0
-_08050436:
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0
- ble _08050442
- strh r4, [r2]
- adds r2, 0x2
-_08050442:
- adds r1, 0x2
- adds r4, 0x1
- cmp r4, 0x4
- ble _08050436
- movs r4, 0
- ldrsh r3, [r5, r4]
- lsls r0, r3, 1
- mov r7, sp
- adds r1, r7, r0
- movs r0, 0x2
- ldrsh r2, [r5, r0]
- lsls r0, r2, 1
- add r0, sp
- movs r4, 0
- ldrsh r1, [r1, r4]
- movs r7, 0
- ldrsh r0, [r0, r7]
- cmp r1, r0
- blt _08050498
- adds r0, r3, 0
- cmp r0, 0
- bne _08050478
- lsls r0, r2, 16
- b _080504A2
- .align 2, 0
-_08050474: .4byte gUnknown_03000520
-_08050478:
- cmp r0, 0x1
- bne _08050480
- lsls r0, r2, 16
- b _080504AE
-_08050480:
- cmp r0, 0x2
- bne _08050488
- lsls r0, r2, 16
- b _080504BA
-_08050488:
- cmp r0, 0x3
- bne _08050490
- lsls r0, r2, 16
- b _080504C6
-_08050490:
- cmp r0, 0x4
- bne _080504DC
- lsls r0, r2, 16
- b _080504D2
-_08050498:
- movs r2, 0x2
- ldrsh r0, [r5, r2]
- cmp r0, 0
- bne _080504A8
- lsls r0, r3, 16
-_080504A2:
- movs r1, 0x6
- orrs r0, r1
- b _080504DE
-_080504A8:
- cmp r0, 0x1
- bne _080504B4
- lsls r0, r3, 16
-_080504AE:
- movs r1, 0x7
- orrs r0, r1
- b _080504DE
-_080504B4:
- cmp r0, 0x2
- bne _080504C0
- lsls r0, r3, 16
-_080504BA:
- movs r1, 0x8
- orrs r0, r1
- b _080504DE
-_080504C0:
- cmp r0, 0x3
- bne _080504CC
- lsls r0, r3, 16
-_080504C6:
- movs r1, 0x9
- orrs r0, r1
- b _080504DE
-_080504CC:
- cmp r0, 0x4
- bne _080504DC
- lsls r0, r3, 16
-_080504D2:
- movs r1, 0xA
- orrs r0, r1
- b _080504DE
-_080504D8:
- movs r0, 0xE
- b _080504DE
-_080504DC:
- movs r0, 0
-_080504DE:
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80502F8
-
- thumb_func_start sub_80504F0
-sub_80504F0: @ 80504F0
- ldr r1, _080504F8 @ =gUnknown_0300052C
- strh r0, [r1]
- bx lr
- .align 2, 0
-_080504F8: .4byte gUnknown_0300052C
- thumb_func_end sub_80504F0
-
- thumb_func_start unref_sub_80504FC
-unref_sub_80504FC: @ 80504FC
- ldr r0, _08050504 @ =gUnknown_0300052C
- movs r1, 0
- ldrsh r0, [r0, r1]
- bx lr
- .align 2, 0
-_08050504: .4byte gUnknown_0300052C
- thumb_func_end unref_sub_80504FC
-
- thumb_func_start sub_8050508
-sub_8050508: @ 8050508
- ldr r1, _08050510 @ =gUnknown_0300052E
- strh r0, [r1]
- bx lr
- .align 2, 0
-_08050510: .4byte gUnknown_0300052E
- thumb_func_end sub_8050508
-
- thumb_func_start unref_sub_8050514
-unref_sub_8050514: @ 8050514
- ldr r0, _0805051C @ =gUnknown_0300052E
- movs r1, 0
- ldrsh r0, [r0, r1]
- bx lr
- .align 2, 0
-_0805051C: .4byte gUnknown_0300052E
- thumb_func_end unref_sub_8050514
-
- thumb_func_start sub_8050520
-sub_8050520: @ 8050520
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- str r0, [sp]
- mov r8, r1
- str r3, [sp, 0x4]
- ldr r0, [sp, 0x30]
- lsls r2, 24
- lsrs r2, 24
- mov r9, r2
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0x8]
- ldr r7, _080505DC @ =gUnknown_03000510
- adds r2, r7, 0
- movs r1, 0
- adds r0, r7, 0
- adds r0, 0xA
-_0805054A:
- strh r1, [r0]
- subs r0, 0x2
- cmp r0, r2
- bge _0805054A
- movs r6, 0
- cmp r6, r9
- bge _08050580
- ldr r0, _080505DC @ =gUnknown_03000510
- mov r12, r0
- ldr r5, [sp]
- adds r5, 0x9
-_08050560:
- movs r3, 0
- adds r4, r5, 0
- mov r2, r12
-_08050566:
- adds r1, r4, r3
- ldrh r0, [r2]
- ldrb r1, [r1]
- adds r0, r1
- strh r0, [r2]
- adds r2, 0x2
- adds r3, 0x1
- cmp r3, 0x5
- ble _08050566
- adds r5, 0x10
- adds r6, 0x1
- cmp r6, r9
- blt _08050560
-_08050580:
- movs r1, 0
- ldrsh r3, [r7, r1]
- ldrh r0, [r7]
- ldrh r1, [r7, 0x2]
- subs r0, r1
- strh r0, [r7]
- ldrh r0, [r7, 0x4]
- subs r1, r0
- strh r1, [r7, 0x2]
- ldrh r1, [r7, 0x6]
- subs r0, r1
- strh r0, [r7, 0x4]
- ldrh r0, [r7, 0x8]
- subs r1, r0
- strh r1, [r7, 0x6]
- subs r0, r3
- strh r0, [r7, 0x8]
- movs r3, 0
- movs r2, 0
- adds r1, r7, 0
- movs r6, 0x4
-_080505AA:
- movs r4, 0
- ldrsh r0, [r1, r4]
- cmp r0, 0
- bge _080505B6
- strh r2, [r1]
- adds r3, 0x1
-_080505B6:
- adds r1, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _080505AA
- lsls r0, r3, 24
- lsrs r0, 24
- mov r10, r0
- movs r4, 0
- ldr r1, _080505DC @ =gUnknown_03000510
- movs r6, 0x4
-_080505CA:
- ldrh r2, [r1]
- movs r5, 0
- ldrsh r0, [r1, r5]
- cmp r0, 0
- ble _080505E4
- cmp r0, r3
- bge _080505E0
- strh r4, [r1]
- b _080505E4
- .align 2, 0
-_080505DC: .4byte gUnknown_03000510
-_080505E0:
- subs r0, r2, r3
- strh r0, [r1]
-_080505E4:
- adds r1, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _080505CA
- ldr r1, _080506C4 @ =gUnknown_03000510
- ldr r2, _080506C8 @ =gUnknown_03000530
- movs r6, 0x4
-_080505F2:
- movs r3, 0
- ldrsh r0, [r1, r3]
- stm r2!, {r0}
- adds r1, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _080505F2
- ldr r1, _080506CC @ =0x0000014d
- ldr r0, [sp, 0x8]
- bl __udivsi3
- lsls r0, 16
- lsrs r0, 16
- adds r3, r0, 0
- adds r3, 0x64
- ldr r4, _080506D0 @ =gUnknown_0300055C
- str r3, [r4]
- movs r6, 0x4
-_08050616:
- movs r0, 0
- ldrsh r5, [r7, r0]
- adds r0, r5, 0
- muls r0, r3
- movs r1, 0xA
- str r3, [sp, 0xC]
- bl __divsi3
- adds r5, r0, 0
- movs r1, 0xA
- bl __modsi3
- adds r4, r0, 0
- adds r0, r5, 0
- movs r1, 0xA
- bl __divsi3
- adds r5, r0, 0
- ldr r3, [sp, 0xC]
- cmp r4, 0x4
- ble _08050642
- adds r5, 0x1
-_08050642:
- strh r5, [r7]
- adds r7, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _08050616
- ldr r1, _080506C4 @ =gUnknown_03000510
- ldr r2, _080506D4 @ =gUnknown_03000548
- movs r6, 0x4
-_08050652:
- movs r3, 0
- ldrsh r0, [r1, r3]
- stm r2!, {r0}
- adds r1, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _08050652
- ldr r4, _080506C4 @ =gUnknown_03000510
- ldr r0, [sp]
- adds r1, r4, 0
- mov r2, r9
- mov r3, r10
- bl sub_80502F8
- mov r5, r8
- strb r0, [r5]
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- mov r1, r9
- bl __divsi3
- mov r3, r9
- subs r0, r3
- strh r0, [r4, 0xA]
- lsls r0, 16
- cmp r0, 0
- bge _0805068C
- movs r0, 0
- strh r0, [r4, 0xA]
-_0805068C:
- mov r5, r8
- ldrb r0, [r5]
- cmp r0, 0xC
- bne _080506E6
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xA
- bl __umodsi3
- lsls r0, 16
- lsrs r3, r0, 16
- movs r6, 0
- ldr r0, _080506D8 @ =gUnknown_082165DF
- adds r0, r3, r0
- ldrb r0, [r0]
- adds r1, r4, 0
- movs r4, 0x1
- movs r3, 0x2
-_080506B4:
- adds r2, r0, 0
- asrs r2, r6
- ands r2, r4
- cmp r2, 0
- beq _080506DC
- strh r3, [r1]
- b _080506DE
- .align 2, 0
-_080506C4: .4byte gUnknown_03000510
-_080506C8: .4byte gUnknown_03000530
-_080506CC: .4byte 0x0000014d
-_080506D0: .4byte gUnknown_0300055C
-_080506D4: .4byte gUnknown_03000548
-_080506D8: .4byte gUnknown_082165DF
-_080506DC:
- strh r2, [r1]
-_080506DE:
- adds r1, 0x2
- adds r6, 0x1
- cmp r6, 0x4
- ble _080506B4
-_080506E6:
- ldr r7, _08050740 @ =gUnknown_03000510
- movs r2, 0xFF
- adds r1, r7, 0
- movs r6, 0x5
-_080506EE:
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0xFF
- ble _080506F8
- strh r2, [r1]
-_080506F8:
- adds r1, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _080506EE
- ldrh r0, [r7]
- mov r4, r8
- strb r0, [r4, 0x1]
- ldrh r0, [r7, 0x2]
- strb r0, [r4, 0x2]
- ldrh r0, [r7, 0x4]
- strb r0, [r4, 0x3]
- ldrh r0, [r7, 0x6]
- strb r0, [r4, 0x4]
- ldrh r0, [r7, 0x8]
- strb r0, [r4, 0x5]
- ldrh r0, [r7, 0xA]
- strb r0, [r4, 0x6]
- movs r6, 0
- adds r2, r7, 0
-_0805071E:
- ldr r5, [sp, 0x4]
- adds r1, r5, r6
- ldrh r0, [r2]
- strb r0, [r1]
- adds r2, 0x2
- adds r6, 0x1
- cmp r6, 0x5
- ble _0805071E
- 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
-_08050740: .4byte gUnknown_03000510
- thumb_func_end sub_8050520
-
- thumb_func_start sub_8050744
-sub_8050744: @ 8050744
- push {r4,lr}
- sub sp, 0x4
- ldr r4, [sp, 0xC]
- lsls r2, 24
- lsrs r2, 24
- lsls r4, 16
- lsrs r4, 16
- str r4, [sp]
- bl sub_8050520
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8050744
-
- thumb_func_start sub_8050760
-sub_8050760: @ 8050760
- push {r4-r6,lr}
- ldr r0, _08050780 @ =gUnknown_03004854
- ldr r0, [r0]
- movs r2, 0x96
- lsls r2, 1
- adds r1, r0, r2
- ldrh r1, [r1]
- adds r0, 0x5A
- ldrh r4, [r0]
- movs r2, 0
- ldr r5, _08050784 @ =0x00000383
- cmp r1, r5
- bhi _08050788
- movs r2, 0x5
- b _080507DA
- .align 2, 0
-_08050780: .4byte gUnknown_03004854
-_08050784: .4byte 0x00000383
-_08050788:
- ldr r3, _0805079C @ =0xfffffc7c
- adds r0, r1, r3
- lsls r0, 16
- lsrs r0, 16
- ldr r3, _080507A0 @ =0x00000257
- cmp r0, r3
- bhi _080507A4
- movs r2, 0x4
- b _080507DA
- .align 2, 0
-_0805079C: .4byte 0xfffffc7c
-_080507A0: .4byte 0x00000257
-_080507A4:
- ldr r6, _080507B4 @ =0xfffffa24
- adds r0, r1, r6
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r3
- bhi _080507B8
- movs r2, 0x3
- b _080507DA
- .align 2, 0
-_080507B4: .4byte 0xfffffa24
-_080507B8:
- ldr r3, _080507C8 @ =0xfffff7cc
- adds r0, r1, r3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r5
- bhi _080507CC
- movs r2, 0x2
- b _080507DA
- .align 2, 0
-_080507C8: .4byte 0xfffff7cc
-_080507CC:
- ldr r6, _080507F8 @ =0xfffff31c
- adds r0, r1, r6
- lsls r0, 16
- ldr r1, _080507FC @ =0x012b0000
- cmp r0, r1
- bhi _080507DA
- movs r2, 0x1
-_080507DA:
- lsls r0, r2, 16
- asrs r0, 16
- bl sub_8050508
- movs r2, 0
- cmp r4, 0x40
- bhi _080508BC
- adds r0, r4, 0
- subs r0, 0x32
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _08050804
- ldr r2, _08050800 @ =0x0000ffff
- b _080508BC
- .align 2, 0
-_080507F8: .4byte 0xfffff31c
-_080507FC: .4byte 0x012b0000
-_08050800: .4byte 0x0000ffff
-_08050804:
- adds r0, r4, 0
- subs r0, 0x64
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _08050818
- ldr r2, _08050814 @ =0x0000fffe
- b _080508BC
- .align 2, 0
-_08050814: .4byte 0x0000fffe
-_08050818:
- adds r0, r4, 0
- subs r0, 0x96
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _0805082C
- ldr r2, _08050828 @ =0x0000fffd
- b _080508BC
- .align 2, 0
-_08050828: .4byte 0x0000fffd
-_0805082C:
- adds r0, r4, 0
- subs r0, 0xC8
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _08050840
- ldr r2, _0805083C @ =0x0000fffc
- b _080508BC
- .align 2, 0
-_0805083C: .4byte 0x0000fffc
-_08050840:
- adds r0, r4, 0
- subs r0, 0xFA
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _08050854
- ldr r2, _08050850 @ =0x0000fffb
- b _080508BC
- .align 2, 0
-_08050850: .4byte 0x0000fffb
-_08050854:
- ldr r1, _08050864 @ =0xfffffea2
- adds r0, r4, r1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _0805086C
- ldr r2, _08050868 @ =0x0000fffa
- b _080508BC
- .align 2, 0
-_08050864: .4byte 0xfffffea2
-_08050868: .4byte 0x0000fffa
-_0805086C:
- ldr r3, _0805087C @ =0xfffffe70
- adds r0, r4, r3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _08050884
- ldr r2, _08050880 @ =0x0000fff9
- b _080508BC
- .align 2, 0
-_0805087C: .4byte 0xfffffe70
-_08050880: .4byte 0x0000fff9
-_08050884:
- ldr r6, _08050894 @ =0xfffffe0c
- adds r0, r4, r6
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _0805089C
- ldr r2, _08050898 @ =0x0000fff8
- b _080508BC
- .align 2, 0
-_08050894: .4byte 0xfffffe0c
-_08050898: .4byte 0x0000fff8
-_0805089C:
- ldr r1, _080508AC @ =0xfffffdda
- adds r0, r4, r1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _080508B4
- ldr r2, _080508B0 @ =0x0000fff7
- b _080508BC
- .align 2, 0
-_080508AC: .4byte 0xfffffdda
-_080508B0: .4byte 0x0000fff7
-_080508B4:
- ldr r0, _080508CC @ =0x00000257
- cmp r4, r0
- bls _080508BC
- ldr r2, _080508D0 @ =0x0000fff6
-_080508BC:
- lsls r0, r2, 16
- asrs r0, 16
- bl sub_80504F0
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080508CC: .4byte 0x00000257
-_080508D0: .4byte 0x0000fff6
- thumb_func_end sub_8050760
-
- thumb_func_start sub_80508D4
-sub_80508D4: @ 80508D4
- push {lr}
- ldr r2, _080508F8 @ =gUnknown_03004854
- ldr r1, [r2]
- adds r1, 0xAA
- strb r0, [r1]
- ldr r0, [r2]
- adds r0, 0xAA
- ldrb r1, [r0]
- lsls r1, 28
- movs r0, 0x90
- lsls r0, 23
- adds r1, r0
- lsrs r1, 24
- movs r0, 0xC0
- bl sub_814A880
- pop {r0}
- bx r0
- .align 2, 0
-_080508F8: .4byte gUnknown_03004854
- thumb_func_end sub_80508D4
-
- thumb_func_start sub_80508FC
-sub_80508FC: @ 80508FC
- push {r4,lr}
- sub sp, 0x4
- ldr r4, _08050944 @ =gUnknown_03004854
- ldr r0, [r4]
- adds r0, 0xAA
- movs r1, 0
- strb r1, [r0]
- movs r0, 0x17
- movs r1, 0x8
- movs r2, 0x1C
- movs r3, 0xD
- bl MenuDrawTextWindow
- ldr r1, _08050948 @ =0x0000ffff
- ldr r3, _0805094C @ =0x00002d9f
- movs r0, 0x20
- str r0, [sp]
- movs r0, 0
- movs r2, 0xC
- bl sub_814A5C0
- ldr r0, _08050950 @ =gOtherText_YesNoTerminating
- movs r1, 0x18
- movs r2, 0x9
- bl MenuPrint
- ldr r0, [r4]
- adds r0, 0xAA
- ldrb r0, [r0]
- bl sub_80508D4
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08050944: .4byte gUnknown_03004854
-_08050948: .4byte 0x0000ffff
-_0805094C: .4byte 0x00002d9f
-_08050950: .4byte gOtherText_YesNoTerminating
- thumb_func_end sub_80508FC
-
- thumb_func_start sub_8050954
-sub_8050954: @ 8050954
- push {r4-r7,lr}
- bl sub_8051474
- bl GetMultiplayerId
- ldr r0, _08050978 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0x6F
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r0, 0xC
- bls _0805096E
- b _08050CB6
-_0805096E:
- lsls r0, 2
- ldr r1, _0805097C @ =_08050980
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08050978: .4byte gUnknown_03004854
-_0805097C: .4byte _08050980
- .align 2, 0
-_08050980:
- .4byte _080509B4
- .4byte _080509F8
- .4byte _08050A4C
- .4byte _08050A94
- .4byte _08050AD0
- .4byte _08050ADE
- .4byte _08050B08
- .4byte _08050B34
- .4byte _08050B42
- .4byte _08050B58
- .4byte _08050BE0
- .4byte _08050C64
- .4byte _08050C98
-_080509B4:
- bl ClearLinkCallback
- ldr r0, _080509C8 @ =gMPlay_BGM
- movs r1, 0x80
- lsls r1, 1
- bl m4aMPlayTempoControl
- movs r4, 0
- b _080509E4
- .align 2, 0
-_080509C8: .4byte gMPlay_BGM
-_080509CC:
- ldr r0, _080509F0 @ =gUnknown_03004854
- ldr r0, [r0]
- movs r1, 0xA4
- lsls r1, 1
- adds r0, r1
- adds r0, r4
- ldrb r0, [r0]
- bl DestroyTask
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_080509E4:
- ldr r0, _080509F4 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r4, r0
- bcc _080509CC
- b _08050C82
- .align 2, 0
-_080509F0: .4byte gUnknown_03004854
-_080509F4: .4byte gSpecialVar_0x8004
-_080509F8:
- ldr r1, _08050A24 @ =gUnknown_03004854
- ldr r3, [r1]
- adds r2, r3, 0
- adds r2, 0x56
- ldrh r0, [r2]
- subs r0, 0x20
- strh r0, [r2]
- lsls r0, 16
- adds r4, r1, 0
- cmp r0, 0
- bgt _08050A40
- movs r0, 0
- strh r0, [r2]
- ldr r0, _08050A28 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _08050A2C
- adds r1, r3, 0
- adds r1, 0x6F
- ldrb r0, [r1]
- adds r0, 0x1
- b _08050A32
- .align 2, 0
-_08050A24: .4byte gUnknown_03004854
-_08050A28: .4byte gReceivedRemoteLinkPlayers
-_08050A2C:
- adds r1, r3, 0
- adds r1, 0x6F
- movs r0, 0x5
-_08050A32:
- strb r0, [r1]
- ldr r0, [r4]
- movs r1, 0
- strb r1, [r0]
- ldr r0, _08050A48 @ =gMPlay_SE2
- bl m4aMPlayStop
-_08050A40:
- bl sub_804E290
- b _08050CB6
- .align 2, 0
-_08050A48: .4byte gMPlay_SE2
-_08050A4C:
- bl GetMultiplayerId
- lsls r0, 24
- cmp r0, 0
- beq _08050A58
- b _08050C82
-_08050A58:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- bne _08050A64
- b _08050CB6
-_08050A64:
- ldr r4, _08050A90 @ =gUnknown_03004854
- ldr r3, [r4]
- movs r2, 0xDE
- lsls r2, 1
- adds r1, r3, r2
- movs r5, 0x96
- lsls r5, 1
- adds r0, r3, r5
- ldr r0, [r0]
- str r0, [r1]
- adds r0, r3, 0
- adds r0, 0x5A
- ldrh r2, [r0]
- adds r5, 0x94
- adds r0, r3, r5
- strh r2, [r0]
- movs r0, 0
- movs r2, 0x28
- bl SendBlock
- ldr r1, [r4]
- b _08050C86
- .align 2, 0
-_08050A90: .4byte gUnknown_03004854
-_08050A94:
- bl GetBlockReceivedStatus
- lsls r0, 24
- cmp r0, 0
- bne _08050AA0
- b _08050CB6
-_08050AA0:
- ldr r2, _08050AC8 @ =gBlockRecvBuffer
- ldr r0, _08050ACC @ =gUnknown_03004854
- ldr r3, [r0]
- ldrh r0, [r2, 0x4]
- adds r1, r3, 0
- adds r1, 0x5A
- strh r0, [r1]
- movs r0, 0x96
- lsls r0, 1
- adds r1, r3, r0
- ldr r0, [r2]
- str r0, [r1]
- adds r1, r3, 0
- adds r1, 0x6F
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl ResetBlockReceivedFlags
- b _08050CB6
- .align 2, 0
-_08050AC8: .4byte gBlockRecvBuffer
-_08050ACC: .4byte gUnknown_03004854
-_08050AD0:
- bl sub_8052228
- lsls r0, 24
- cmp r0, 0
- bne _08050ADC
- b _08050CB6
-_08050ADC:
- b _08050C82
-_08050ADE:
- bl sub_8051C58
- lsls r0, 24
- cmp r0, 0
- bne _08050AEA
- b _08050CB6
-_08050AEA:
- ldr r0, _08050AFC @ =gUnknown_03004834
- ldrb r0, [r0]
- cmp r0, 0
- bne _08050B00
- movs r0, 0x22
- bl IncrementGameStat
- b _08050C82
- .align 2, 0
-_08050AFC: .4byte gUnknown_03004834
-_08050B00:
- movs r0, 0x21
- bl IncrementGameStat
- b _08050C82
-_08050B08:
- ldr r0, _08050B2C @ =gUnknown_03004854
- ldr r1, [r0]
- adds r1, 0x6F
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _08050B30 @ =gOtherText_BlendAnotherBerryPrompt
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrintMessage
- b _08050CB6
- .align 2, 0
-_08050B2C: .4byte gUnknown_03004854
-_08050B30: .4byte gOtherText_BlendAnotherBerryPrompt
-_08050B34:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- bne _08050B40
- b _08050CB6
-_08050B40:
- b _08050C82
-_08050B42:
- ldr r4, _08050B54 @ =gUnknown_03004854
- ldr r0, [r4]
- adds r0, 0xAA
- movs r1, 0
- strb r1, [r0]
- bl sub_80508FC
- ldr r1, [r4]
- b _08050C86
- .align 2, 0
-_08050B54: .4byte gUnknown_03004854
-_08050B58:
- ldr r0, _08050B80 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08050B88
- ldr r0, _08050B84 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0xAA
- ldrb r0, [r0]
- cmp r0, 0
- beq _08050B76
- movs r0, 0x5
- bl PlaySE
-_08050B76:
- movs r0, 0
- bl sub_80508D4
- b _08050CB6
- .align 2, 0
-_08050B80: .4byte gMain
-_08050B84: .4byte gUnknown_03004854
-_08050B88:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08050BA8
- ldr r0, _08050BA4 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0xAA
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _08050BD4
- movs r0, 0x5
- bl PlaySE
- b _08050BD4
- .align 2, 0
-_08050BA4: .4byte gUnknown_03004854
-_08050BA8:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08050BB8
- movs r0, 0x5
- bl PlaySE
- b _08050C82
-_08050BB8:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08050BC2
- b _08050CB6
-_08050BC2:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _08050BDC @ =gUnknown_03004854
- ldr r1, [r0]
- adds r1, 0x6F
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_08050BD4:
- movs r0, 0x1
- bl sub_80508D4
- b _08050CB6
- .align 2, 0
-_08050BDC: .4byte gUnknown_03004854
-_08050BE0:
- ldr r6, _08050C10 @ =gSendCmd
- movs r7, 0
- ldr r0, _08050C14 @ =0x00002fff
- strh r0, [r6]
- ldr r4, _08050C18 @ =gUnknown_03004854
- ldr r2, [r4]
- adds r0, r2, 0
- adds r0, 0xAA
- ldrb r5, [r0]
- cmp r5, 0
- bne _08050C50
- movs r0, 0x4
- bl IsBagPocketNonEmpty
- lsls r0, 24
- cmp r0, 0
- bne _08050C20
- ldr r0, [r4]
- adds r0, 0x7C
- movs r1, 0x2
- strh r1, [r0]
- ldr r0, _08050C1C @ =0x00009999
- b _08050C48
- .align 2, 0
-_08050C10: .4byte gSendCmd
-_08050C14: .4byte 0x00002fff
-_08050C18: .4byte gUnknown_03004854
-_08050C1C: .4byte 0x00009999
-_08050C20:
- bl sub_810CA00
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _08050C40
- ldr r0, [r4]
- adds r0, 0x7C
- movs r1, 0x3
- strh r1, [r0]
- ldr r0, _08050C3C @ =0x0000aaaa
- b _08050C48
- .align 2, 0
-_08050C3C: .4byte 0x0000aaaa
-_08050C40:
- ldr r0, [r4]
- adds r0, 0x7C
- strh r5, [r0]
- ldr r0, _08050C4C @ =0x00007779
-_08050C48:
- strh r0, [r6, 0x2]
- b _08050C82
- .align 2, 0
-_08050C4C: .4byte 0x00007779
-_08050C50:
- adds r1, r2, 0
- adds r1, 0x7C
- movs r0, 0x1
- strh r0, [r1]
- ldr r0, _08050C60 @ =0x00008888
- strh r0, [r6, 0x2]
- subs r1, 0xD
- b _08050C88
- .align 2, 0
-_08050C60: .4byte 0x00008888
-_08050C64:
- ldr r0, _08050C70 @ =gUnknown_03004834
- ldrb r0, [r0]
- cmp r0, 0
- beq _08050C78
- ldr r0, _08050C74 @ =sub_80510E8
- b _08050CA4
- .align 2, 0
-_08050C70: .4byte gUnknown_03004834
-_08050C74: .4byte sub_80510E8
-_08050C78:
- ldr r0, _08050C90 @ =gOtherText_LinkStandby3
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrintMessage
-_08050C82:
- ldr r0, _08050C94 @ =gUnknown_03004854
- ldr r1, [r0]
-_08050C86:
- adds r1, 0x6F
-_08050C88:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08050CB6
- .align 2, 0
-_08050C90: .4byte gOtherText_LinkStandby3
-_08050C94: .4byte gUnknown_03004854
-_08050C98:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- beq _08050CB6
- ldr r0, _08050CE0 @ =sub_8050E30
-_08050CA4:
- bl SetMainCallback2
- ldr r2, _08050CE4 @ =gUnknown_03004854
- ldr r0, [r2]
- adds r0, 0x6F
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r2]
- strb r1, [r0]
-_08050CB6:
- bl sub_8051B18
- ldr r0, _08050CE4 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0x56
- ldrh r0, [r0]
- bl sub_8051A3C
- bl sub_805123C
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08050CE0: .4byte sub_8050E30
-_08050CE4: .4byte gUnknown_03004854
- thumb_func_end sub_8050954
-
- thumb_func_start sub_8050CE8
-sub_8050CE8: @ 8050CE8
- push {r4,lr}
- ldr r1, _08050D08 @ =gUnknown_03004854
- ldr r0, [r1]
- movs r2, 0xE2
- lsls r2, 1
- adds r0, r2
- ldr r0, [r0]
- adds r4, r1, 0
- cmp r0, 0x6
- bls _08050CFE
- b _08050E28
-_08050CFE:
- lsls r0, 2
- ldr r1, _08050D0C @ =_08050D10
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08050D08: .4byte gUnknown_03004854
-_08050D0C: .4byte _08050D10
- .align 2, 0
-_08050D10:
- .4byte _08050D2C
- .4byte _08050D44
- .4byte _08050D70
- .4byte _08050D80
- .4byte _08050DA6
- .4byte _08050DEC
- .4byte _08050E06
-_08050D2C:
- bl sub_80084A4
- ldr r0, _08050D40 @ =gUnknown_03004854
- ldr r2, [r0]
- movs r3, 0xE2
- lsls r3, 1
- adds r1, r2, r3
- movs r0, 0x1
- b _08050DF8
- .align 2, 0
-_08050D40: .4byte gUnknown_03004854
-_08050D44:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _08050E28
- ldr r0, _08050D68 @ =gUnknown_03004854
- ldr r1, [r0]
- movs r2, 0xE2
- lsls r2, 1
- adds r1, r2
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- ldr r1, _08050D6C @ =gSoftResetDisabled
- movs r0, 0x1
- strb r0, [r1]
- b _08050E28
- .align 2, 0
-_08050D68: .4byte gUnknown_03004854
-_08050D6C: .4byte gSoftResetDisabled
-_08050D70:
- bl sub_8125E2C
- ldr r0, _08050D7C @ =gUnknown_03004854
- ldr r2, [r0]
- b _08050DEE
- .align 2, 0
-_08050D7C: .4byte gUnknown_03004854
-_08050D80:
- ldr r1, [r4]
- movs r2, 0x98
- lsls r2, 1
- adds r1, r2
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0xA
- bne _08050E28
- bl sub_80084A4
- ldr r1, [r4]
- movs r3, 0xE2
- lsls r3, 1
- adds r1, r3
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- b _08050E28
-_08050DA6:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _08050E28
- bl sub_8125E6C
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _08050DD0
- ldr r0, _08050DCC @ =gUnknown_03004854
- ldr r0, [r0]
- movs r1, 0xE2
- lsls r1, 1
- adds r0, r1
- movs r1, 0x5
- str r1, [r0]
- b _08050E28
- .align 2, 0
-_08050DCC: .4byte gUnknown_03004854
-_08050DD0:
- ldr r0, _08050DE8 @ =gUnknown_03004854
- ldr r1, [r0]
- movs r3, 0x98
- lsls r3, 1
- adds r0, r1, r3
- str r2, [r0]
- movs r0, 0xE2
- lsls r0, 1
- adds r1, r0
- movs r0, 0x3
- str r0, [r1]
- b _08050E28
- .align 2, 0
-_08050DE8: .4byte gUnknown_03004854
-_08050DEC:
- ldr r2, [r4]
-_08050DEE:
- movs r3, 0xE2
- lsls r3, 1
- adds r1, r2, r3
- ldr r0, [r1]
- adds r0, 0x1
-_08050DF8:
- str r0, [r1]
- movs r0, 0x98
- lsls r0, 1
- adds r1, r2, r0
- movs r0, 0
- str r0, [r1]
- b _08050E28
-_08050E06:
- ldr r1, [r4]
- movs r2, 0x98
- lsls r2, 1
- adds r1, r2
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x5
- ble _08050E28
- ldr r1, _08050E24 @ =gSoftResetDisabled
- movs r0, 0
- strb r0, [r1]
- movs r0, 0x1
- b _08050E2A
- .align 2, 0
-_08050E24: .4byte gSoftResetDisabled
-_08050E28:
- movs r0, 0
-_08050E2A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8050CE8
-
- thumb_func_start sub_8050E30
-sub_8050E30: @ 8050E30
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r1, _08050E50 @ =gUnknown_03004854
- ldr r0, [r1]
- adds r0, 0x6F
- ldrb r0, [r0]
- adds r5, r1, 0
- cmp r0, 0xC
- bls _08050E44
- b _080510C4
-_08050E44:
- lsls r0, 2
- ldr r1, _08050E54 @ =_08050E58
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08050E50: .4byte gUnknown_03004854
-_08050E54: .4byte _08050E58
- .align 2, 0
-_08050E58:
- .4byte _08050E8C
- .4byte _08050ED8
- .4byte _08050F18
- .4byte _08050F6C
- .4byte _08050F8C
- .4byte _08050FAA
- .4byte _08050FD4
- .4byte _08051004
- .4byte _08051020
- .4byte _08051030
- .4byte _08051054
- .4byte _08051094
- .4byte _080510B6
-_08050E8C:
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x70
- ldrh r2, [r0]
- ldr r0, _08050EB8 @ =0x00002222
- cmp r2, r0
- bne _08050E9C
- b _08050FA2
-_08050E9C:
- ldr r0, _08050EBC @ =0x00001111
- cmp r2, r0
- beq _08050EA4
- b _080510C4
-_08050EA4:
- adds r0, r1, 0
- adds r0, 0x78
- ldrh r2, [r0]
- ldr r0, _08050EC0 @ =0x00009999
- cmp r2, r0
- bne _08050EC4
- adds r1, 0x6F
- movs r0, 0x2
- strb r0, [r1]
- b _080510C4
- .align 2, 0
-_08050EB8: .4byte 0x00002222
-_08050EBC: .4byte 0x00001111
-_08050EC0: .4byte 0x00009999
-_08050EC4:
- ldr r0, _08050ED4 @ =0x0000aaaa
- cmp r2, r0
- bne _08050FA2
- adds r1, 0x6F
- movs r0, 0x1
- strb r0, [r1]
- b _080510C4
- .align 2, 0
-_08050ED4: .4byte 0x0000aaaa
-_08050ED8:
- ldr r0, [r5]
- adds r0, 0x6F
- movs r1, 0x3
- strb r1, [r0]
- bl DestroyMenuCursor
- movs r0, 0x17
- movs r1, 0x8
- movs r2, 0x1C
- movs r3, 0xD
- bl MenuZeroFillWindowRect
- ldr r4, _08050F0C @ =gStringVar4
- ldr r0, [r5]
- adds r0, 0x7A
- ldrh r0, [r0]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- ldr r0, _08050F10 @ =gLinkPlayers + 0x8
- adds r1, r0
- adds r0, r4, 0
- bl StringCopy
- ldr r1, _08050F14 @ =gOtherText_OtherCaseIsFull
- b _08050F4C
- .align 2, 0
-_08050F0C: .4byte gStringVar4
-_08050F10: .4byte gLinkPlayers + 0x8
-_08050F14: .4byte gOtherText_OtherCaseIsFull
-_08050F18:
- ldr r1, [r5]
- adds r1, 0x6F
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl DestroyMenuCursor
- movs r0, 0x17
- movs r1, 0x8
- movs r2, 0x1C
- movs r3, 0xD
- bl MenuZeroFillWindowRect
- ldr r4, _08050F60 @ =gStringVar4
- ldr r0, [r5]
- adds r0, 0x7A
- ldrh r0, [r0]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- ldr r0, _08050F64 @ =gLinkPlayers + 0x8
- adds r1, r0
- adds r0, r4, 0
- bl StringCopy
- ldr r1, _08050F68 @ =gOtherText_NoBerriesForBlend
-_08050F4C:
- adds r0, r4, 0
- bl StringAppend
- adds r0, r4, 0
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrintMessage
- b _080510C4
- .align 2, 0
-_08050F60: .4byte gStringVar4
-_08050F64: .4byte gLinkPlayers + 0x8
-_08050F68: .4byte gOtherText_NoBerriesForBlend
-_08050F6C:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- bne _08050F78
- b _080510C4
-_08050F78:
- ldr r0, _08050F88 @ =gUnknown_03004854
- ldr r1, [r0]
- movs r0, 0x98
- lsls r0, 1
- adds r2, r1, r0
- movs r0, 0
- str r0, [r2]
- b _080510AC
- .align 2, 0
-_08050F88: .4byte gUnknown_03004854
-_08050F8C:
- ldr r2, [r5]
- movs r0, 0x98
- lsls r0, 1
- adds r1, r2, r0
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x3C
- bgt _08050FA0
- b _080510C4
-_08050FA0:
- adds r1, r2, 0
-_08050FA2:
- adds r1, 0x6F
- movs r0, 0x5
- strb r0, [r1]
- b _080510C4
-_08050FAA:
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _08050FCC @ =gMultiText_Saving
- movs r1, 0x2
- movs r2, 0xF
- bl MenuPrint
- bl sub_80084A4
- ldr r0, _08050FD0 @ =gUnknown_03004854
- ldr r1, [r0]
- b _080510AC
- .align 2, 0
-_08050FCC: .4byte gMultiText_Saving
-_08050FD0: .4byte gUnknown_03004854
-_08050FD4:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _080510C4
- ldr r3, _08051000 @ =gUnknown_03004854
- ldr r1, [r3]
- movs r2, 0x98
- lsls r2, 1
- adds r0, r1, r2
- movs r2, 0
- str r2, [r0]
- adds r1, 0x6F
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r3]
- movs r1, 0xE2
- lsls r1, 1
- adds r0, r1
- str r2, [r0]
- b _080510C4
- .align 2, 0
-_08051000: .4byte gUnknown_03004854
-_08051004:
- bl sub_8050CE8
- lsls r0, 24
- cmp r0, 0
- beq _080510C4
- movs r0, 0x37
- bl PlaySE
- ldr r0, _0805101C @ =gUnknown_03004854
- ldr r1, [r0]
- b _080510AC
- .align 2, 0
-_0805101C: .4byte gUnknown_03004854
-_08051020:
- ldr r1, [r5]
- adds r1, 0x6F
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl sub_80084A4
- b _080510C4
-_08051030:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _080510C4
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _08051050 @ =gUnknown_03004854
- ldr r1, [r0]
- b _080510AC
- .align 2, 0
-_08051050: .4byte gUnknown_03004854
-_08051054:
- ldr r0, _0805107C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0
- bne _080510C4
- ldr r2, [r5]
- adds r0, r2, 0
- adds r0, 0x70
- ldrh r1, [r0]
- ldr r0, _08051080 @ =0x00002222
- cmp r1, r0
- bne _08051088
- ldr r0, _08051084 @ =sub_804E538
- bl SetMainCallback2
- b _080510C4
- .align 2, 0
-_0805107C: .4byte gPaletteFade
-_08051080: .4byte 0x00002222
-_08051084: .4byte sub_804E538
-_08051088:
- movs r1, 0x98
- lsls r1, 1
- adds r0, r2, r1
- str r3, [r0]
- adds r1, r2, 0
- b _080510AC
-_08051094:
- ldr r1, [r5]
- movs r2, 0x98
- lsls r2, 1
- adds r1, r2
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x1E
- ble _080510C4
- bl sub_800832C
- ldr r1, [r5]
-_080510AC:
- adds r1, 0x6F
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080510C4
-_080510B6:
- ldr r0, _080510E0 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _080510C4
- ldr r0, _080510E4 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
-_080510C4:
- bl sub_805123C
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080510E0: .4byte gReceivedRemoteLinkPlayers
-_080510E4: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
- thumb_func_end sub_8050E30
-
- thumb_func_start sub_80510E8
-sub_80510E8: @ 80510E8
- push {lr}
- ldr r1, _08051104 @ =gUnknown_03004854
- ldr r0, [r1]
- adds r0, 0x6F
- ldrb r0, [r0]
- adds r3, r1, 0
- cmp r0, 0xA
- bls _080510FA
- b _0805121E
-_080510FA:
- lsls r0, 2
- ldr r1, _08051108 @ =_0805110C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08051104: .4byte gUnknown_03004854
-_08051108: .4byte _0805110C
- .align 2, 0
-_0805110C:
- .4byte _08051138
- .4byte _0805116E
- .4byte _08051190
- .4byte _080511BC
- .4byte _0805121E
- .4byte _0805121E
- .4byte _0805121E
- .4byte _0805121E
- .4byte _0805121E
- .4byte _080511D8
- .4byte _080511F0
-_08051138:
- ldr r1, [r3]
- adds r0, r1, 0
- adds r0, 0x7C
- ldrh r0, [r0]
- cmp r0, 0x1
- bhi _0805114A
- adds r1, 0x6F
- movs r0, 0x9
- strb r0, [r1]
-_0805114A:
- ldr r2, [r3]
- adds r0, r2, 0
- adds r0, 0x7C
- ldrh r1, [r0]
- cmp r1, 0x2
- bne _0805115A
- subs r0, 0xD
- strb r1, [r0]
-_0805115A:
- ldr r1, [r3]
- adds r0, r1, 0
- adds r0, 0x7C
- ldrh r0, [r0]
- cmp r0, 0x3
- bne _0805121E
- adds r1, 0x6F
- movs r0, 0x1
- strb r0, [r1]
- b _0805121E
-_0805116E:
- ldr r0, [r3]
- adds r0, 0x6F
- movs r1, 0x3
- strb r1, [r0]
- bl DestroyMenuCursor
- movs r0, 0x17
- movs r1, 0x8
- movs r2, 0x1C
- movs r3, 0xD
- bl MenuZeroFillWindowRect
- ldr r0, _0805118C @ =gOtherText_CaseIsFull
- b _080511AC
- .align 2, 0
-_0805118C: .4byte gOtherText_CaseIsFull
-_08051190:
- ldr r0, [r3]
- adds r0, 0x6F
- ldrb r1, [r0]
- adds r1, 0x1
- strb r1, [r0]
- bl DestroyMenuCursor
- movs r0, 0x17
- movs r1, 0x8
- movs r2, 0x1C
- movs r3, 0xD
- bl MenuZeroFillWindowRect
- ldr r0, _080511B8 @ =gOtherText_OutOfBerries
-_080511AC:
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrintMessage
- b _0805121E
- .align 2, 0
-_080511B8: .4byte gOtherText_OutOfBerries
-_080511BC:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- beq _0805121E
- ldr r0, _080511D4 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0x6F
- movs r1, 0x9
- strb r1, [r0]
- b _0805121E
- .align 2, 0
-_080511D4: .4byte gUnknown_03004854
-_080511D8:
- movs r0, 0x3
- bl BeginFastPaletteFade
- ldr r0, _080511EC @ =gUnknown_03004854
- ldr r1, [r0]
- adds r1, 0x6F
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0805121E
- .align 2, 0
-_080511EC: .4byte gUnknown_03004854
-_080511F0:
- ldr r0, _08051210 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0805121E
- ldr r0, [r3]
- adds r0, 0x7C
- ldrh r0, [r0]
- cmp r0, 0
- bne _08051218
- ldr r0, _08051214 @ =sub_804E538
- bl SetMainCallback2
- b _0805121E
- .align 2, 0
-_08051210: .4byte gPaletteFade
-_08051214: .4byte sub_804E538
-_08051218:
- ldr r0, _08051238 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
-_0805121E:
- bl sub_805123C
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- .align 2, 0
-_08051238: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
- thumb_func_end sub_80510E8
-
- thumb_func_start sub_805123C
-sub_805123C: @ 805123C
- push {r4-r6,lr}
- ldr r0, _0805126C @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _08051248
- b _08051404
-_08051248:
- ldr r4, _08051270 @ =gRecvCmds
- ldrh r1, [r4]
- ldr r0, _08051274 @ =0x00002fff
- cmp r1, r0
- bne _080512C6
- ldrh r1, [r4, 0x8]
- ldr r0, _08051278 @ =0x00001111
- cmp r1, r0
- bne _080512B8
- ldrh r3, [r4, 0x10]
- ldr r0, _0805127C @ =0x00009999
- cmp r3, r0
- beq _08051298
- cmp r3, r0
- bgt _08051284
- ldr r0, _08051280 @ =0x00008888
- b _08051286
- .align 2, 0
-_0805126C: .4byte gReceivedRemoteLinkPlayers
-_08051270: .4byte gRecvCmds
-_08051274: .4byte 0x00002fff
-_08051278: .4byte 0x00001111
-_0805127C: .4byte 0x00009999
-_08051280: .4byte 0x00008888
-_08051284:
- ldr r0, _08051290 @ =0x0000aaaa
-_08051286:
- cmp r3, r0
- beq _08051298
- ldr r2, _08051294 @ =gUnknown_03004854
- b _080512A8
- .align 2, 0
-_08051290: .4byte 0x0000aaaa
-_08051294: .4byte gUnknown_03004854
-_08051298:
- ldr r2, _080512B0 @ =gUnknown_03004854
- ldr r0, [r2]
- adds r1, r0, 0
- adds r1, 0x78
- strh r3, [r1]
- ldrh r1, [r4, 0x18]
- adds r0, 0x7A
- strh r1, [r0]
-_080512A8:
- ldr r0, [r2]
- adds r0, 0x70
- ldr r1, _080512B4 @ =0x00001111
- b _080512C4
- .align 2, 0
-_080512B0: .4byte gUnknown_03004854
-_080512B4: .4byte 0x00001111
-_080512B8:
- ldr r0, _080512F4 @ =0x00002222
- cmp r1, r0
- bne _080512C6
- ldr r0, _080512F8 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0x70
-_080512C4:
- strh r1, [r0]
-_080512C6:
- bl GetMultiplayerId
- lsls r0, 24
- cmp r0, 0
- beq _080512D2
- b _08051404
-_080512D2:
- ldr r2, _080512F8 @ =gUnknown_03004854
- ldr r0, [r2]
- adds r0, 0x70
- ldrh r1, [r0]
- ldr r0, _080512FC @ =0x00001111
- cmp r1, r0
- bne _080512E2
- b _08051404
-_080512E2:
- ldr r0, _080512F4 @ =0x00002222
- cmp r1, r0
- bne _080512EA
- b _08051404
-_080512EA:
- movs r4, 0
- ldr r6, _08051300 @ =0x00002fff
- adds r5, r2, 0
- b _0805134E
- .align 2, 0
-_080512F4: .4byte 0x00002222
-_080512F8: .4byte gUnknown_03004854
-_080512FC: .4byte 0x00001111
-_08051300: .4byte 0x00002fff
-_08051304:
- ldr r1, _08051328 @ =gRecvCmds
- lsls r2, r4, 1
- adds r0, r2, r1
- ldrh r0, [r0]
- cmp r0, r6
- bne _08051348
- adds r0, r1, 0
- adds r0, 0x8
- adds r0, r2, r0
- ldrh r1, [r0]
- ldr r0, _0805132C @ =0x00008888
- cmp r1, r0
- beq _08051340
- cmp r1, r0
- bgt _08051334
- ldr r0, _08051330 @ =0x00007779
- b _0805133C
- .align 2, 0
-_08051328: .4byte gRecvCmds
-_0805132C: .4byte 0x00008888
-_08051330: .4byte 0x00007779
-_08051334:
- ldr r0, _08051360 @ =0x00009999
- cmp r1, r0
- beq _08051340
- ldr r0, _08051364 @ =0x0000aaaa
-_0805133C:
- cmp r1, r0
- bne _08051348
-_08051340:
- ldr r0, [r5]
- adds r0, 0x70
- adds r0, r2
- strh r1, [r0]
-_08051348:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_0805134E:
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bcc _08051304
- movs r4, 0
- b _0805136E
- .align 2, 0
-_08051360: .4byte 0x00009999
-_08051364: .4byte 0x0000aaaa
-_08051368:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_0805136E:
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bcs _0805138A
- ldr r0, _0805139C @ =gUnknown_03004854
- ldr r0, [r0]
- lsls r1, r4, 1
- adds r0, 0x70
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0
- bne _08051368
-_0805138A:
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bne _08051404
- movs r4, 0
- ldr r5, _080513A0 @ =0x00007779
- b _080513AA
- .align 2, 0
-_0805139C: .4byte gUnknown_03004854
-_080513A0: .4byte 0x00007779
-_080513A4:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_080513AA:
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bcs _080513C6
- ldr r0, _080513E0 @ =gUnknown_03004854
- ldr r0, [r0]
- lsls r1, r4, 1
- adds r0, 0x70
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, r5
- beq _080513A4
-_080513C6:
- ldr r5, _080513E4 @ =gSendCmd
- movs r6, 0
- ldr r0, _080513E8 @ =0x00002fff
- strh r0, [r5]
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bne _080513F0
- ldr r0, _080513EC @ =0x00002222
- strh r0, [r5, 0x2]
- b _08051404
- .align 2, 0
-_080513E0: .4byte gUnknown_03004854
-_080513E4: .4byte gSendCmd
-_080513E8: .4byte 0x00002fff
-_080513EC: .4byte 0x00002222
-_080513F0:
- ldr r0, _0805140C @ =0x00001111
- strh r0, [r5, 0x2]
- ldr r0, _08051410 @ =gUnknown_03004854
- ldr r0, [r0]
- lsls r1, r4, 1
- adds r0, 0x70
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r5, 0x4]
- strh r4, [r5, 0x6]
-_08051404:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0805140C: .4byte 0x00001111
-_08051410: .4byte gUnknown_03004854
- thumb_func_end sub_805123C
-
- thumb_func_start sub_8051414
-sub_8051414: @ 8051414
- push {lr}
- sub sp, 0x14
- adds r1, r0, 0
- movs r0, 0xF0
- lsls r0, 7
- str r0, [sp]
- movs r0, 0xA0
- lsls r0, 7
- str r0, [sp, 0x4]
- mov r3, sp
- ldr r0, _08051470 @ =gUnknown_03004854
- ldr r0, [r0]
- mov r12, r0
- movs r0, 0xA2
- lsls r0, 1
- add r0, r12
- ldrh r2, [r0]
- movs r0, 0x78
- subs r0, r2
- strh r0, [r3, 0x8]
- movs r0, 0xA3
- lsls r0, 1
- add r0, r12
- ldrh r2, [r0]
- movs r0, 0x50
- subs r0, r2
- strh r0, [r3, 0xA]
- mov r2, sp
- movs r3, 0xA1
- lsls r3, 1
- add r3, r12
- ldrh r0, [r3]
- strh r0, [r2, 0xC]
- ldrh r0, [r3]
- strh r0, [r2, 0xE]
- mov r0, r12
- adds r0, 0x54
- ldrh r0, [r0]
- strh r0, [r2, 0x10]
- mov r0, sp
- movs r2, 0x1
- bl BgAffineSet
- add sp, 0x14
- pop {r0}
- bx r0
- .align 2, 0
-_08051470: .4byte gUnknown_03004854
- thumb_func_end sub_8051414
-
- thumb_func_start sub_8051474
-sub_8051474: @ 8051474
- push {lr}
- ldr r0, _080514A0 @ =gUnknown_03004854
- ldr r3, [r0]
- adds r1, r3, 0
- adds r1, 0x54
- ldrh r2, [r1]
- adds r0, r3, 0
- adds r0, 0x58
- strh r2, [r0]
- subs r0, 0x2
- ldrh r0, [r0]
- ldrh r2, [r1]
- adds r0, r2
- strh r0, [r1]
- movs r1, 0xB4
- lsls r1, 1
- adds r0, r3, r1
- bl sub_8051414
- pop {r0}
- bx r0
- .align 2, 0
-_080514A0: .4byte gUnknown_03004854
- thumb_func_end sub_8051474
-
- thumb_func_start sub_80514A4
-sub_80514A4: @ 80514A4
- ldr r1, _080514E8 @ =REG_BG2PA
- ldr r0, _080514EC @ =gUnknown_03004854
- ldr r2, [r0]
- movs r3, 0xB4
- lsls r3, 1
- adds r0, r2, r3
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- adds r3, 0x2
- adds r0, r2, r3
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- adds r3, 0x2
- adds r0, r2, r3
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- adds r3, 0x2
- adds r0, r2, r3
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- adds r3, 0x2
- adds r0, r2, r3
- ldr r0, [r0]
- str r0, [r1]
- adds r1, 0x4
- adds r3, 0x4
- adds r0, r2, r3
- ldr r0, [r0]
- str r0, [r1]
- bx lr
- .align 2, 0
-_080514E8: .4byte REG_BG2PA
-_080514EC: .4byte gUnknown_03004854
- thumb_func_end sub_80514A4
-
- thumb_func_start sub_80514F0
-sub_80514F0: @ 80514F0
- ldr r1, _0805151C @ =REG_BG1HOFS
- ldr r0, _08051520 @ =gUnknown_03004854
- ldr r3, [r0]
- movs r0, 0xA2
- lsls r0, 1
- adds r2, r3, r0
- ldrh r0, [r2]
- strh r0, [r1]
- adds r1, 0x2
- movs r0, 0xA3
- lsls r0, 1
- adds r3, r0
- ldrh r0, [r3]
- strh r0, [r1]
- subs r1, 0x6
- ldrh r0, [r2]
- strh r0, [r1]
- adds r1, 0x2
- ldrh r0, [r3]
- strh r0, [r1]
- bx lr
- .align 2, 0
-_0805151C: .4byte REG_BG1HOFS
-_08051520: .4byte gUnknown_03004854
- thumb_func_end sub_80514F0
-
- thumb_func_start sub_8051524
-sub_8051524: @ 8051524
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x2E]
- ldrh r1, [r2, 0x32]
- adds r0, r1
- strh r0, [r2, 0x32]
- ldrh r0, [r2, 0x30]
- ldrh r1, [r2, 0x34]
- adds r0, r1
- strh r0, [r2, 0x34]
- movs r1, 0x32
- ldrsh r0, [r2, r1]
- cmp r0, 0
- bge _08051542
- adds r0, 0x7
-_08051542:
- asrs r0, 3
- strh r0, [r2, 0x24]
- movs r1, 0x34
- ldrsh r0, [r2, r1]
- cmp r0, 0
- bge _08051550
- adds r0, 0x7
-_08051550:
- asrs r0, 3
- strh r0, [r2, 0x26]
- adds r0, r2, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08051568
- adds r0, r2, 0
- bl DestroySprite
-_08051568:
- pop {r0}
- bx r0
- thumb_func_end sub_8051524
-
- thumb_func_start sub_805156C
-sub_805156C: @ 805156C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- bl Random
- lsls r0, 16
- lsrs r1, r0, 16
- movs r0, 0x1
- ands r1, r0
- adds r0, r1, 0x1
- cmp r0, 0
- beq _08051628
- ldr r0, _08051638 @ =gSineTable
- mov r9, r0
- ldr r2, _0805163C @ =gSprites
- mov r10, r2
- adds r6, r1, 0x1
- movs r3, 0x1F
- mov r8, r3
- movs r7, 0x10
-_08051598:
- bl Random
- ldr r1, _08051640 @ =gUnknown_03004854
- ldr r4, [r1]
- adds r4, 0x54
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x14
- bl __umodsi3
- ldrh r1, [r4]
- adds r1, r0
- lsls r1, 16
- movs r0, 0xFF
- lsls r0, 16
- ands r0, r1
- lsrs r2, r0, 16
- adds r0, r2, 0
- adds r0, 0x40
- lsls r0, 1
- add r0, r9
- movs r3, 0
- ldrsh r1, [r0, r3]
- cmp r1, 0
- bge _080515CC
- adds r1, 0x3
-_080515CC:
- asrs r1, 2
- lsls r0, r2, 1
- add r0, r9
- movs r2, 0
- ldrsh r0, [r0, r2]
- cmp r0, 0
- bge _080515DC
- adds r0, 0x3
-_080515DC:
- asrs r2, r0, 2
- adds r1, 0x78
- adds r2, 0x50
- ldr r0, _08051644 @ =gSpriteTemplate_82164FC
- movs r3, 0x1
- bl CreateSprite
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl Random
- lsls r5, r4, 4
- adds r5, r4
- lsls r5, 2
- mov r3, r10
- adds r4, r5, r3
- lsls r0, 16
- lsrs r0, 16
- mov r1, r8
- ands r0, r1
- subs r0, r7, r0
- strh r0, [r4, 0x2E]
- bl Random
- lsls r0, 16
- lsrs r0, 16
- mov r2, r8
- ands r0, r2
- subs r0, r7, r0
- strh r0, [r4, 0x30]
- ldr r3, _08051648 @ =gSprites + 0x1C
- adds r5, r3
- ldr r0, _0805164C @ =sub_8051524
- str r0, [r5]
- subs r6, 0x1
- cmp r6, 0
- bne _08051598
-_08051628:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08051638: .4byte gSineTable
-_0805163C: .4byte gSprites
-_08051640: .4byte gUnknown_03004854
-_08051644: .4byte gSpriteTemplate_82164FC
-_08051648: .4byte gSprites + 0x1C
-_0805164C: .4byte sub_8051524
- thumb_func_end sub_805156C
-
- thumb_func_start sub_8051650
-sub_8051650: @ 8051650
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x3
- bl __divsi3
- negs r0, r0
- strh r0, [r4, 0x26]
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0805167C
- adds r0, r4, 0
- bl DestroySprite
-_0805167C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8051650
-
- thumb_func_start sub_8051684
-sub_8051684: @ 8051684
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- lsls r0, 1
- negs r0, r0
- strh r0, [r2, 0x26]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0xC
- negs r1, r1
- cmp r0, r1
- bge _080516A8
- ldr r0, _080516C0 @ =0x0000fff4
- strh r0, [r2, 0x26]
-_080516A8:
- adds r0, r2, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080516BC
- adds r0, r2, 0
- bl DestroySprite
-_080516BC:
- pop {r0}
- bx r0
- .align 2, 0
-_080516C0: .4byte 0x0000fff4
- thumb_func_end sub_8051684
-
- thumb_func_start sub_80516C4
-sub_80516C4: @ 80516C4
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsrs r1, 16
- ldr r2, _080516F4 @ =gUnknown_03004854
- ldr r3, [r2]
- lsls r4, r0, 1
- adds r2, r3, 0
- adds r2, 0x80
- adds r2, r4
- strh r1, [r2]
- lsls r0, 4
- movs r2, 0xBE
- lsls r2, 1
- adds r0, r2
- adds r3, r0
- adds r0, r3, 0
- bl sub_804E844
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080516F4: .4byte gUnknown_03004854
- thumb_func_end sub_80516C4
-
- thumb_func_start unref_sub_80516F8
-unref_sub_80516F8: @ 80516F8
- 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, _080517B8 @ =gTasks
- adds r4, r0, r1
- ldr r6, _080517BC @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r6]
- cmp r0, 0
- beq _0805180C
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _080517D4
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x78
- ble _08051730
- strh r1, [r4, 0x8]
-_08051730:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x64
- bne _080517A0
- ldr r0, _080517C0 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0x4
- movs r1, 0x14
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl ZeroFillWindowRect
- movs r0, 0x4
- movs r1, 0x4
- movs r2, 0xA
- movs r3, 0xC
- bl MenuDrawTextWindow
- movs r2, 0
- ldr r6, _080517C4 @ =gLinkPlayers + 0x4
-_0805175C:
- adds r4, r2, 0x1
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- cmp r0, 0
- beq _08051784
- ldr r1, _080517C8 @ =gUnknown_08216284
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- lsls r2, 25
- movs r1, 0xA0
- lsls r1, 19
- adds r2, r1
- lsrs r2, 24
- movs r1, 0x5
- bl MenuPrint
-_08051784:
- movs r0, 0
- movs r1, 0xD
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _080517CC @ =gOtherText_PressAToStart
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrint
- adds r2, r4, 0
- cmp r2, 0x2
- ble _0805175C
-_080517A0:
- ldr r0, _080517D0 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0805180C
- bl sub_8007E4C
- adds r0, r5, 0
- bl DestroyTask
- b _0805180C
- .align 2, 0
-_080517B8: .4byte gTasks
-_080517BC: .4byte gReceivedRemoteLinkPlayers
-_080517C0: .4byte gUnknown_03004854
-_080517C4: .4byte gLinkPlayers + 0x4
-_080517C8: .4byte gUnknown_08216284
-_080517CC: .4byte gOtherText_PressAToStart
-_080517D0: .4byte gMain
-_080517D4:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0xA
- bne _080517E6
- ldr r0, _08051814 @ =gOtherText_PleaseWait
- movs r1, 0x3
- movs r2, 0xA
- bl MenuPrint
-_080517E6:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x78
- ble _080517F8
- movs r0, 0
- strh r0, [r4, 0x8]
-_080517F8:
- ldr r0, _08051818 @ =byte_3002A68
- ldrb r0, [r0]
- cmp r0, 0x4
- bls _0805180C
- ldrb r0, [r6]
- cmp r0, 0x1
- bne _0805180C
- adds r0, r5, 0
- bl DestroyTask
-_0805180C:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08051814: .4byte gOtherText_PleaseWait
-_08051818: .4byte byte_3002A68
- thumb_func_end unref_sub_80516F8
-
- thumb_func_start sub_805181C
-sub_805181C: @ 805181C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08051858
- cmp r0, 0x1
- bgt _08051832
- cmp r0, 0
- beq _08051838
- b _080518BE
-_08051832:
- cmp r0, 0x2
- beq _08051872
- b _080518BE
-_08051838:
- ldrh r0, [r4, 0x30]
- adds r0, 0x8
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x58
- ble _080518BE
- movs r0, 0x58
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- movs r0, 0x38
- bl PlaySE
- b _080518BE
-_08051858:
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- ble _080518BE
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- movs r0, 0
- strh r0, [r4, 0x32]
- b _080518BE
-_08051872:
- ldrh r0, [r4, 0x30]
- adds r0, 0x4
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xB0
- ble _080518BE
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- adds r1, r0, 0
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- bne _080518AC
- adds r0, r4, 0
- bl DestroySprite
- ldr r0, _080518A8 @ =gSpriteTemplate_821657C
- movs r2, 0x14
- negs r2, r2
- movs r1, 0x78
- movs r3, 0x2
- bl CreateSprite
- b _080518BE
- .align 2, 0
-_080518A8: .4byte gSpriteTemplate_821657C
-_080518AC:
- movs r0, 0
- strh r0, [r4, 0x2E]
- ldr r0, _080518C8 @ =0x0000fff0
- strh r0, [r4, 0x30]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
-_080518BE:
- ldrh r0, [r4, 0x30]
- strh r0, [r4, 0x26]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080518C8: .4byte 0x0000fff0
- thumb_func_end sub_805181C
-
- thumb_func_start sub_80518CC
-sub_80518CC: @ 80518CC
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08051908
- cmp r0, 0x1
- bgt _080518E2
- cmp r0, 0
- beq _080518E8
- b _0805193C
-_080518E2:
- cmp r0, 0x2
- beq _0805191E
- b _0805193C
-_080518E8:
- ldrh r0, [r4, 0x30]
- adds r0, 0x8
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5C
- ble _0805193C
- movs r0, 0x5C
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- movs r0, 0x15
- bl PlaySE
- b _0805193C
-_08051908:
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- ble _0805193C
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _0805193C
-_0805191E:
- ldrh r0, [r4, 0x30]
- adds r0, 0x4
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xB0
- ble _0805193C
- ldr r0, _08051948 @ =gUnknown_03004854
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- adds r0, r4, 0
- bl DestroySprite
-_0805193C:
- ldrh r0, [r4, 0x30]
- strh r0, [r4, 0x26]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08051948: .4byte gUnknown_03004854
- thumb_func_end sub_80518CC
-
- thumb_func_start sub_805194C
-sub_805194C: @ 805194C
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 16
- lsrs r3, r1, 16
- ldr r1, _08051978 @ =gUnknown_03004854
- ldr r1, [r1]
- movs r2, 0xA0
- lsls r2, 1
- adds r1, r2
- ldrh r2, [r1]
- cmp r2, r0
- bcs _08051972
- adds r0, r2, 0x2
- strh r0, [r1]
- ldrh r0, [r1]
- adds r1, r3, 0
- bl sub_805197C
-_08051972:
- pop {r0}
- bx r0
- .align 2, 0
-_08051978: .4byte gUnknown_03004854
- thumb_func_end sub_805194C
-
- thumb_func_start sub_805197C
-sub_805197C: @ 805197C
- push {r4-r7,lr}
- lsls r0, 16
- lsls r1, 16
- lsrs r1, 16
- ldr r7, _08051A0C @ =0x06006000
- lsrs r0, 10
- bl __divsi3
- adds r1, r0, 0
- cmp r1, 0
- bge _08051994
- adds r0, r1, 0x7
-_08051994:
- asrs r4, r0, 3
- movs r3, 0
- cmp r3, r4
- bge _080519BC
- ldr r0, _08051A10 @ =0x000081e9
- adds r6, r0, 0
- adds r0, 0x10
- adds r5, r0, 0
- adds r2, r7, 0
- adds r2, 0x56
- adds r0, r7, 0
- adds r3, r4, 0
-_080519AC:
- strh r6, [r0, 0x16]
- strh r5, [r2]
- adds r2, 0x2
- adds r0, 0x2
- subs r3, 0x1
- cmp r3, 0
- bne _080519AC
- adds r3, r4, 0
-_080519BC:
- adds r0, r1, 0
- cmp r1, 0
- bge _080519C4
- adds r0, r1, 0x7
-_080519C4:
- asrs r2, r0, 3
- lsls r0, r2, 3
- subs r2, r1, r0
- cmp r2, 0
- beq _080519E2
- lsls r0, r3, 1
- adds r0, r7
- ldr r4, _08051A14 @ =0xffff81e1
- adds r1, r2, r4
- strh r1, [r0, 0x16]
- adds r0, 0x56
- adds r4, 0x10
- adds r1, r2, r4
- strh r1, [r0]
- adds r3, 0x1
-_080519E2:
- cmp r3, 0x7
- bgt _08051A06
- ldr r0, _08051A18 @ =0x000081e1
- adds r4, r0, 0
- adds r0, 0x10
- adds r2, r0, 0
- lsls r1, r3, 1
- adds r0, r1, 0
- adds r0, 0x56
- adds r0, r7
- adds r1, r7
-_080519F8:
- strh r4, [r1, 0x16]
- strh r2, [r0]
- adds r0, 0x2
- adds r1, 0x2
- adds r3, 0x1
- cmp r3, 0x7
- ble _080519F8
-_08051A06:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08051A0C: .4byte 0x06006000
-_08051A10: .4byte 0x000081e9
-_08051A14: .4byte 0xffff81e1
-_08051A18: .4byte 0x000081e1
- thumb_func_end sub_805197C
-
- thumb_func_start sub_8051A1C
-sub_8051A1C: @ 8051A1C
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _08051A34 @ =0x00057e40
- muls r0, r1
- cmp r0, 0
- bge _08051A2E
- ldr r1, _08051A38 @ =0x0000ffff
- adds r0, r1
-_08051A2E:
- asrs r0, 16
- pop {r1}
- bx r1
- .align 2, 0
-_08051A34: .4byte 0x00057e40
-_08051A38: .4byte 0x0000ffff
- thumb_func_end sub_8051A1C
-
- thumb_func_start sub_8051A3C
-sub_8051A3C: @ 8051A3C
- push {r4-r6,lr}
- sub sp, 0x8
- lsls r0, 16
- lsrs r0, 16
- bl sub_8051A1C
- adds r5, r0, 0
- ldr r0, _08051ABC @ =gUnknown_03004854
- ldr r0, [r0]
- adds r1, r0, 0
- adds r1, 0x5A
- ldrh r0, [r1]
- cmp r0, r5
- bcs _08051A5A
- strh r5, [r1]
-_08051A5A:
- movs r6, 0
-_08051A5C:
- mov r0, sp
- adds r4, r0, r6
- adds r0, r5, 0
- movs r1, 0xA
- bl __umodsi3
- strb r0, [r4]
- adds r0, r5, 0
- movs r1, 0xA
- bl __udivsi3
- adds r5, r0, 0
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x4
- bls _08051A5C
- ldr r2, _08051AC0 @ =0x06006458
- mov r0, sp
- ldr r3, _08051AC4 @ =0x00008172
- adds r1, r3, 0
- ldrb r0, [r0, 0x4]
- adds r0, r1, r0
- strh r0, [r2]
- adds r2, 0x2
- mov r0, sp
- ldrb r0, [r0, 0x3]
- adds r0, r1
- strh r0, [r2]
- adds r2, 0x2
- mov r0, sp
- ldrb r0, [r0, 0x2]
- adds r0, r1
- strh r0, [r2]
- adds r2, 0x4
- mov r0, sp
- ldrb r0, [r0, 0x1]
- adds r0, r1
- strh r0, [r2]
- adds r2, 0x2
- mov r0, sp
- ldrb r0, [r0]
- adds r1, r0
- strh r1, [r2]
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08051ABC: .4byte gUnknown_03004854
-_08051AC0: .4byte 0x06006458
-_08051AC4: .4byte 0x00008172
- thumb_func_end sub_8051A3C
-
- thumb_func_start sub_8051AC8
-sub_8051AC8: @ 8051AC8
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r4, r1, 16
- lsrs r5, r4, 16
- movs r1, 0
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _08051AEC
- bl Random
- lsls r0, 16
- lsrs r0, 16
- adds r1, r5, 0
- bl __umodsi3
- lsrs r1, r4, 17
- subs r0, r1
- strh r0, [r6]
-_08051AEC:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8051AC8
-
- thumb_func_start sub_8051AF4
-sub_8051AF4: @ 8051AF4
- push {lr}
- adds r1, r0, 0
- ldrh r2, [r1]
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0
- bge _08051B06
- adds r0, r2, 0x1
- strh r0, [r1]
-_08051B06:
- ldrh r2, [r1]
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0
- ble _08051B14
- subs r0, r2, 0x1
- strh r0, [r1]
-_08051B14:
- pop {r0}
- bx r0
- thumb_func_end sub_8051AF4
-
- thumb_func_start sub_8051B18
-sub_8051B18: @ 8051B18
- push {r4,lr}
- ldr r4, _08051B3C @ =gUnknown_03004854
- ldr r0, [r4]
- movs r1, 0xA2
- lsls r1, 1
- adds r0, r1
- bl sub_8051AF4
- ldr r0, [r4]
- movs r1, 0xA3
- lsls r1, 1
- adds r0, r1
- bl sub_8051AF4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08051B3C: .4byte gUnknown_03004854
- thumb_func_end sub_8051B18
-
- thumb_func_start sub_8051B40
-sub_8051B40: @ 8051B40
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r1, 16
- lsrs r1, 16
- movs r5, 0x8
- cmp r1, 0x9
- bhi _08051B50
- movs r5, 0x10
-_08051B50:
- ldrh r0, [r4]
- movs r2, 0
- ldrsh r1, [r4, r2]
- cmp r1, 0
- bne _08051B6E
- bl Random
- lsls r0, 16
- lsrs r0, 16
- adds r1, r5, 0
- bl __modsi3
- lsrs r1, r5, 1
- subs r0, r1
- b _08051B82
-_08051B6E:
- cmp r1, 0
- bge _08051B76
- adds r0, 0x1
- strh r0, [r4]
-_08051B76:
- ldrh r1, [r4]
- movs r2, 0
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _08051B84
- subs r0, r1, 0x1
-_08051B82:
- strh r0, [r4]
-_08051B84:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8051B40
-
- thumb_func_start sub_8051B8C
-sub_8051B8C: @ 8051B8C
- push {r4,r5,lr}
- ldr r5, _08051BE4 @ =gUnknown_03004854
- ldr r2, [r5]
- movs r4, 0x98
- lsls r4, 1
- adds r0, r2, r4
- ldr r1, [r0]
- cmp r1, 0
- bne _08051BAC
- movs r3, 0xA2
- lsls r3, 1
- adds r0, r2, r3
- strh r1, [r0]
- adds r3, 0x2
- adds r0, r2, r3
- strh r1, [r0]
-_08051BAC:
- ldr r0, [r5]
- adds r2, r0, r4
- ldr r1, [r2]
- adds r1, 0x1
- str r1, [r2]
- movs r2, 0xA2
- lsls r2, 1
- adds r0, r2
- lsls r1, 16
- lsrs r1, 16
- bl sub_8051B40
- ldr r1, [r5]
- movs r3, 0xA3
- lsls r3, 1
- adds r0, r1, r3
- adds r1, r4
- ldrh r1, [r1]
- bl sub_8051B40
- ldr r2, [r5]
- adds r0, r2, r4
- ldr r0, [r0]
- cmp r0, 0x14
- beq _08051BE8
- movs r0, 0
- b _08051BFC
- .align 2, 0
-_08051BE4: .4byte gUnknown_03004854
-_08051BE8:
- movs r1, 0xA2
- lsls r1, 1
- adds r0, r2, r1
- movs r1, 0
- strh r1, [r0]
- movs r3, 0xA3
- lsls r3, 1
- adds r0, r2, r3
- strh r1, [r0]
- movs r0, 0x1
-_08051BFC:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8051B8C
-
- thumb_func_start sub_8051C04
-sub_8051C04: @ 8051C04
- ldr r1, _08051C20 @ =gUnknown_03004854
- ldr r2, [r1]
- movs r3, 0xA2
- lsls r3, 1
- adds r1, r2, r3
- ldrh r1, [r1]
- negs r1, r1
- strh r1, [r0, 0x24]
- adds r3, 0x2
- adds r1, r2, r3
- ldrh r1, [r1]
- negs r1, r1
- strh r1, [r0, 0x26]
- bx lr
- .align 2, 0
-_08051C20: .4byte gUnknown_03004854
- thumb_func_end sub_8051C04
-
- thumb_func_start sub_8051C24
-sub_8051C24: @ 8051C24
- push {lr}
- ldr r2, _08051C4C @ =gSaveBlock1
- ldr r0, _08051C50 @ =gUnknown_03004854
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x88
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 1
- ldr r3, _08051C54 @ =0x0000096c
- adds r2, r3
- adds r2, r0, r2
- adds r1, 0x5A
- ldrh r1, [r1]
- ldrh r0, [r2]
- cmp r0, r1
- bcs _08051C48
- strh r1, [r2]
-_08051C48:
- pop {r0}
- bx r0
- .align 2, 0
-_08051C4C: .4byte gSaveBlock1
-_08051C50: .4byte gUnknown_03004854
-_08051C54: .4byte 0x0000096c
- thumb_func_end sub_8051C24
-
- thumb_func_start sub_8051C58
-sub_8051C58: @ 8051C58
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x34
- ldr r1, _08051C7C @ =gUnknown_03004854
- ldr r0, [r1]
- ldrb r0, [r0]
- adds r2, r1, 0
- cmp r0, 0x6
- bls _08051C72
- b _0805200A
-_08051C72:
- lsls r0, 2
- ldr r1, _08051C80 @ =_08051C84
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08051C7C: .4byte gUnknown_03004854
-_08051C80: .4byte _08051C84
- .align 2, 0
-_08051C84:
- .4byte _08051CA0
- .4byte _08051CB6
- .4byte _08051CD0
- .4byte _08051D20
- .4byte _08051F44
- .4byte _08051F58
- .4byte _08051FF8
-_08051CA0:
- ldr r1, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r2]
- movs r1, 0x98
- lsls r1, 1
- adds r0, r1
- movs r1, 0x11
- str r1, [r0]
- b _0805200A
-_08051CB6:
- ldr r1, [r2]
- movs r0, 0x98
- lsls r0, 1
- adds r2, r1, r0
- ldr r0, [r2]
- subs r0, 0xA
- str r0, [r2]
- cmp r0, 0
- blt _08051CCA
- b _0805200A
-_08051CCA:
- movs r0, 0
- str r0, [r2]
- b _08051FE2
-_08051CD0:
- ldr r1, [r2]
- movs r2, 0x98
- lsls r2, 1
- adds r1, r2
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x14
- bgt _08051CE4
- b _0805200A
-_08051CE4:
- movs r6, 0
-_08051CE6:
- ldr r4, _08051D18 @ =gUnknown_03004854
- ldr r0, [r4]
- adds r0, 0x50
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08051D1C @ =gSprites
- adds r0, r1
- bl DestroySprite
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x2
- bls _08051CE6
- ldr r1, [r4]
- movs r0, 0x98
- lsls r0, 1
- adds r2, r1, r0
- movs r0, 0
- str r0, [r2]
- b _08051FE2
- .align 2, 0
-_08051D18: .4byte gUnknown_03004854
-_08051D1C: .4byte gSprites
-_08051D20:
- movs r0, 0x4
- movs r1, 0x2
- movs r2, 0x19
- movs r3, 0x11
- bl MenuDrawTextWindow
- ldr r0, _08051F14 @ =gOtherText_ResultsOfBlending
- movs r1, 0x5
- movs r2, 0x3
- movs r3, 0xA0
- bl sub_8072BD8
- movs r6, 0
- ldr r1, _08051F18 @ =gUnknown_03004854
- ldr r0, [r1]
- adds r0, 0x88
- add r2, sp, 0xC
- mov r9, r2
- mov r2, sp
- adds r2, 0x16
- str r2, [sp, 0x30]
- ldrb r0, [r0]
- cmp r6, r0
- bcs _08051E04
- mov r8, r1
- ldr r0, _08051F1C @ =gLinkPlayers
- mov r10, r0
-_08051D56:
- mov r1, r8
- ldr r2, [r1]
- movs r1, 0xB2
- lsls r1, 1
- adds r0, r2, r1
- adds r0, r6
- ldrb r5, [r0]
- mov r7, r9
- lsls r1, r5, 4
- adds r1, r2
- movs r2, 0xBF
- lsls r2, 1
- adds r1, r2
- adds r0, r7, 0
- bl StringCopy
- lsls r4, r5, 3
- subs r4, r5
- lsls r4, 2
- mov r1, r10
- adds r0, r4, r1
- ldrb r1, [r0, 0x1A]
- adds r0, r7, 0
- bl ConvertInternationalString
- adds r0, r7, 0
- ldr r1, _08051F20 @ =gOtherText_Berry
- bl StringAppend
- mov r2, r8
- ldr r0, [r2]
- adds r7, r0, 0
- adds r7, 0xAB
- adds r5, r6, 0x1
- adds r0, r7, 0
- adds r1, r5, 0
- bl ConvertIntToDecimalString
- adds r7, r0, 0
- movs r1, 0
- strb r1, [r7]
- movs r0, 0xAD
- strb r0, [r7, 0x1]
- strb r1, [r7, 0x2]
- adds r7, 0x3
- ldr r0, _08051F24 @ =gLinkPlayers + 0x8
- adds r4, r0
- adds r0, r7, 0
- adds r1, r4, 0
- movs r2, 0x58
- movs r3, 0
- bl sub_8072C74
- adds r7, r0, 0
- add r1, sp, 0xC
- movs r2, 0x9D
- movs r3, 0
- bl sub_8072C74
- mov r2, r8
- ldr r1, [r2]
- adds r0, r1, 0
- adds r0, 0xAB
- ldr r3, _08051F28 @ =gUnknown_082165E9
- adds r1, 0x88
- ldrb r2, [r1]
- adds r3, r2, r3
- ldr r1, _08051F2C @ =gUnknown_082165EE
- adds r2, r1
- ldrb r1, [r2]
- adds r2, r6, 0
- muls r2, r1
- ldrb r3, [r3]
- adds r2, r3
- lsls r2, 24
- lsrs r2, 24
- movs r1, 0x5
- bl MenuPrint
- lsls r5, 16
- lsrs r6, r5, 16
- mov r1, r8
- ldr r0, [r1]
- adds r0, 0x88
- ldrb r0, [r0]
- cmp r6, r0
- bcc _08051D56
-_08051E04:
- ldr r6, _08051F18 @ =gUnknown_03004854
- ldr r0, [r6]
- adds r0, 0x5A
- ldrh r0, [r0]
- movs r1, 0x64
- bl __umodsi3
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- mov r0, r9
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r0, [r6]
- adds r7, r0, 0
- adds r7, 0xAB
- ldr r1, _08051F30 @ =gOtherText_MaxSpeed
- adds r0, r7, 0
- bl StringCopy
- adds r7, r0, 0
- ldr r0, [r6]
- adds r0, 0x5A
- ldrh r0, [r0]
- movs r1, 0x64
- bl __udivsi3
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r7, 0
- movs r2, 0x79
- movs r3, 0x1
- bl sub_8072C14
- adds r7, r0, 0
- movs r1, 0
- strb r1, [r7]
- movs r0, 0xAD
- strb r0, [r7, 0x1]
- strb r1, [r7, 0x2]
- adds r7, 0x3
- adds r0, r7, 0
- mov r1, r9
- movs r2, 0x8E
- movs r3, 0x1
- bl sub_8072C74
- adds r7, r0, 0
- ldr r1, _08051F34 @ =gOtherText_RPM
- bl StringCopy
- ldr r0, [r6]
- adds r0, 0xAB
- movs r1, 0x5
- movs r2, 0xD
- bl MenuPrint
- ldr r0, [r6]
- movs r2, 0x96
- lsls r2, 1
- adds r0, r2
- ldr r0, [r0]
- movs r1, 0x3C
- bl __udivsi3
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r4, 0
- movs r1, 0x3C
- bl __umodsi3
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r4, 0
- movs r1, 0x3C
- bl __udivsi3
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- mov r0, r9
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r0, [sp, 0x30]
- adds r1, r5, 0
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r0, [r6]
- adds r7, r0, 0
- adds r7, 0xAB
- ldr r1, _08051F38 @ =gOtherText_RequiredTime
- adds r0, r7, 0
- bl StringCopy
- adds r7, r0, 0
- mov r1, r9
- movs r2, 0x66
- movs r3, 0x1
- bl sub_8072C74
- adds r7, r0, 0
- ldr r1, _08051F3C @ =gOtherText_Min
- bl StringAppend
- adds r7, r0, 0
- ldr r1, [sp, 0x30]
- movs r2, 0x88
- movs r3, 0x1
- bl sub_8072C74
- adds r7, r0, 0
- ldr r1, _08051F40 @ =gOtherText_Sec
- bl StringCopy
- ldr r0, [r6]
- adds r0, 0xAB
- movs r1, 0x5
- movs r2, 0xF
- bl MenuPrint
- ldr r1, [r6]
- movs r0, 0x98
- lsls r0, 1
- adds r2, r1, r0
- movs r0, 0
- str r0, [r2]
- b _08051FE2
- .align 2, 0
-_08051F14: .4byte gOtherText_ResultsOfBlending
-_08051F18: .4byte gUnknown_03004854
-_08051F1C: .4byte gLinkPlayers
-_08051F20: .4byte gOtherText_Berry
-_08051F24: .4byte gLinkPlayers + 0x8
-_08051F28: .4byte gUnknown_082165E9
-_08051F2C: .4byte gUnknown_082165EE
-_08051F30: .4byte gOtherText_MaxSpeed
-_08051F34: .4byte gOtherText_RPM
-_08051F38: .4byte gOtherText_RequiredTime
-_08051F3C: .4byte gOtherText_Min
-_08051F40: .4byte gOtherText_Sec
-_08051F44:
- ldr r0, _08051F54 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0805200A
- ldr r1, [r2]
- b _08051FE2
- .align 2, 0
-_08051F54: .4byte gMain
-_08051F58:
- bl MenuZeroFillScreen
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- movs r6, 0
- add r5, sp, 0x28
- ldr r0, _08051FEC @ =gUnknown_03004854
- ldr r0, [r0]
- adds r3, r0, 0
- adds r3, 0x80
- add r2, sp, 0x20
-_08051F76:
- lsls r1, r6, 1
- adds r0, r3, r1
- ldrh r0, [r0]
- cmp r0, 0
- beq _08051F86
- adds r1, r2, r1
- subs r0, 0x85
- strh r0, [r1]
-_08051F86:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x3
- bls _08051F76
- bl sub_8050760
- ldr r4, _08051FEC @ =gUnknown_03004854
- ldr r3, [r4]
- movs r1, 0xBE
- lsls r1, 1
- adds r0, r3, r1
- adds r1, r3, 0
- adds r1, 0x88
- ldrb r2, [r1]
- subs r1, 0x2E
- ldrh r1, [r1]
- str r1, [sp]
- adds r1, r5, 0
- add r3, sp, 0x4
- bl sub_8050520
- ldr r1, [r4]
- adds r1, 0xAB
- adds r0, r5, 0
- bl sub_805201C
- ldr r0, _08051FF0 @ =sub_8052BD0
- movs r1, 0x6
- bl CreateTask
- ldr r0, [r4]
- adds r0, 0xAB
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrintMessage
- ldr r0, _08051FF4 @ =gScriptItemId
- ldrh r0, [r0]
- movs r1, 0x1
- bl RemoveBagItem
- adds r0, r5, 0
- bl sub_810CA34
- ldr r1, [r4]
-_08051FE2:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0805200A
- .align 2, 0
-_08051FEC: .4byte gUnknown_03004854
-_08051FF0: .4byte sub_8052BD0
-_08051FF4: .4byte gScriptItemId
-_08051FF8:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- beq _0805200A
- bl sub_8051C24
- movs r0, 0x1
- b _0805200C
-_0805200A:
- movs r0, 0
-_0805200C:
- add sp, 0x34
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8051C58
-
- thumb_func_start sub_805201C
-sub_805201C: @ 805201C
- push {r4-r6,lr}
- sub sp, 0xC
- adds r5, r0, 0
- adds r6, r1, 0
- movs r0, 0xFF
- strb r0, [r6]
- ldr r1, _080520B0 @ =gPokeblockNames
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- adds r0, r6, 0
- bl StringCopy
- ldr r1, _080520B4 @ =gOtherText_PokeBlockMade
- adds r0, r6, 0
- bl StringAppend
- ldr r1, _080520B8 @ =gUnknown_082162C8
- adds r0, r6, 0
- bl StringAppend
- adds r0, r5, 0
- bl sub_810C9B0
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- bl sub_810C9E8
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r1, _080520BC @ =gOtherText_BlockLevelIs
- adds r0, r6, 0
- bl StringAppend
- mov r0, sp
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r0, r6, 0
- mov r1, sp
- bl StringAppend
- ldr r1, _080520C0 @ =gOtherText_BlockFeelIs
- adds r0, r6, 0
- bl StringAppend
- mov r0, sp
- adds r1, r5, 0
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r0, r6, 0
- mov r1, sp
- bl StringAppend
- ldr r1, _080520C4 @ =gOtherText_Period
- adds r0, r6, 0
- bl StringAppend
- ldr r1, _080520C8 @ =gUnknown_08216249
- adds r0, r6, 0
- bl StringAppend
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080520B0: .4byte gPokeblockNames
-_080520B4: .4byte gOtherText_PokeBlockMade
-_080520B8: .4byte gUnknown_082162C8
-_080520BC: .4byte gOtherText_BlockLevelIs
-_080520C0: .4byte gOtherText_BlockFeelIs
-_080520C4: .4byte gOtherText_Period
-_080520C8: .4byte gUnknown_08216249
- thumb_func_end sub_805201C
-
- thumb_func_start sub_80520CC
-sub_80520CC: @ 80520CC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- mov r9, r0
- mov r12, r2
- lsls r1, 24
- lsrs r7, r1, 24
- movs r0, 0
- cmp r0, r7
- bge _08052118
-_080520E2:
- movs r5, 0
- adds r1, r0, 0x1
- mov r8, r1
- cmp r5, r7
- bge _08052112
- mov r1, r9
- adds r6, r1, r0
-_080520F0:
- ldrb r4, [r6]
- lsls r1, r4, 2
- add r1, r12
- mov r0, r9
- adds r2, r0, r5
- ldrb r3, [r2]
- lsls r0, r3, 2
- add r0, r12
- ldr r1, [r1]
- ldr r0, [r0]
- cmp r1, r0
- bls _0805210C
- strb r3, [r6]
- strb r4, [r2]
-_0805210C:
- adds r5, 0x1
- cmp r5, r7
- blt _080520F0
-_08052112:
- mov r0, r8
- cmp r0, r7
- blt _080520E2
-_08052118:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80520CC
-
- thumb_func_start sub_8052124
-sub_8052124: @ 8052124
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- movs r5, 0
- ldr r1, _08052144 @ =gUnknown_03004854
- ldr r0, [r1]
- adds r0, 0x88
- mov r10, r1
- mov r2, sp
- adds r2, 0x4
- str r2, [sp, 0x14]
- b _08052158
- .align 2, 0
-_08052144: .4byte gUnknown_03004854
-_08052148:
- mov r4, sp
- adds r0, r4, r5
- strb r5, [r0]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, [r1]
- adds r0, 0x88
-_08052158:
- ldrb r0, [r0]
- cmp r5, r0
- bcc _08052148
- movs r5, 0
- mov r1, r10
- ldr r0, [r1]
- adds r1, r0, 0
- adds r1, 0x88
- ldrb r2, [r1]
- cmp r5, r2
- bcs _080521D6
- ldr r4, [sp, 0x14]
- mov r9, r4
- movs r2, 0xA6
- lsls r2, 1
- adds r2, r0
- mov r8, r2
- mov r12, r1
- movs r4, 0xA7
- lsls r4, 1
- adds r7, r0, r4
- movs r1, 0xA8
- lsls r1, 1
- adds r6, r0, r1
-_08052188:
- lsls r4, r5, 2
- add r4, r9
- lsls r3, r5, 1
- adds r3, r5
- lsls r3, 1
- mov r2, r8
- adds r0, r2, r3
- ldrh r2, [r0]
- lsls r0, r2, 5
- subs r0, r2
- lsls r1, r0, 6
- subs r1, r0
- lsls r1, 3
- adds r1, r2
- lsls r1, 6
- str r1, [r4]
- adds r0, r7, r3
- ldrh r2, [r0]
- lsls r0, r2, 5
- subs r0, r2
- lsls r0, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- str r1, [r4]
- movs r0, 0xFA
- lsls r0, 2
- adds r1, r0
- adds r3, r6, r3
- ldrh r0, [r3]
- subs r1, r0
- str r1, [r4]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- mov r1, r12
- ldrb r1, [r1]
- cmp r5, r1
- bcc _08052188
-_080521D6:
- mov r2, r10
- ldr r0, [r2]
- adds r0, 0x88
- ldrb r1, [r0]
- mov r0, sp
- ldr r2, [sp, 0x14]
- bl sub_80520CC
- movs r5, 0
- mov r4, r10
- ldr r0, [r4]
- adds r0, 0x88
- ldrb r0, [r0]
- cmp r5, r0
- bcs _08052218
- mov r2, r10
- movs r3, 0xB2
- lsls r3, 1
-_080521FA:
- ldr r1, [r2]
- adds r1, r3
- adds r1, r5
- mov r4, sp
- adds r0, r4, r5
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, [r2]
- adds r0, 0x88
- ldrb r0, [r0]
- cmp r5, r0
- bcc _080521FA
-_08052218:
- 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_8052124
-
- thumb_func_start sub_8052228
-sub_8052228: @ 8052228
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r1, _08052248 @ =gUnknown_03004854
- ldr r0, [r1]
- ldrb r0, [r0]
- adds r2, r1, 0
- cmp r0, 0x6
- bls _0805223C
- b _080524AE
-_0805223C:
- lsls r0, 2
- ldr r1, _0805224C @ =_08052250
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08052248: .4byte gUnknown_03004854
-_0805224C: .4byte _08052250
- .align 2, 0
-_08052250:
- .4byte _0805226C
- .4byte _08052282
- .4byte _0805229C
- .4byte _080522B6
- .4byte _08052464
- .4byte _0805247E
- .4byte _080524A4
-_0805226C:
- ldr r1, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r2]
- movs r1, 0x98
- lsls r1, 1
- adds r0, r1
- movs r1, 0xFF
- str r1, [r0]
- b _080524AE
-_08052282:
- ldr r1, [r2]
- movs r0, 0x98
- lsls r0, 1
- adds r2, r1, r0
- ldr r0, [r2]
- subs r0, 0xA
- str r0, [r2]
- cmp r0, 0
- blt _08052296
- b _080524AE
-_08052296:
- movs r0, 0
- str r0, [r2]
- b _08052494
-_0805229C:
- ldr r1, [r2]
- movs r0, 0x98
- lsls r0, 1
- adds r2, r1, r0
- ldr r0, [r2]
- adds r0, 0x1
- str r0, [r2]
- cmp r0, 0x14
- bgt _080522B0
- b _080524AE
-_080522B0:
- movs r0, 0
- str r0, [r2]
- b _08052494
-_080522B6:
- movs r0, 0x4
- movs r1, 0x2
- movs r2, 0x19
- movs r3, 0x11
- bl MenuDrawTextWindow
- ldr r0, _0805236C @ =gOtherText_Ranking
- movs r1, 0x5
- movs r2, 0x3
- movs r3, 0xA0
- bl sub_8072BD8
- ldr r6, _08052370 @ =gSpriteTemplate_821645C
- adds r0, r6, 0
- movs r1, 0x8C
- movs r2, 0x34
- movs r3, 0
- bl CreateSprite
- ldr r7, _08052374 @ =gUnknown_03004854
- ldr r1, [r7]
- adds r1, 0x50
- strb r0, [r1]
- ldr r1, _08052378 @ =gSprites
- mov r8, r1
- ldr r2, [r7]
- adds r2, 0x50
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- mov r5, r8
- adds r5, 0x1C
- adds r0, r5
- ldr r4, _0805237C @ =SpriteCallbackDummy
- str r4, [r0]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- movs r1, 0x3
- bl StartSpriteAnim
- adds r0, r6, 0
- movs r1, 0xA4
- movs r2, 0x34
- movs r3, 0
- bl CreateSprite
- ldr r1, [r7]
- adds r1, 0x51
- strb r0, [r1]
- ldr r0, [r7]
- adds r0, 0x51
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- str r4, [r0]
- adds r0, r6, 0
- movs r1, 0xBC
- movs r2, 0x34
- movs r3, 0
- bl CreateSprite
- ldr r1, [r7]
- adds r1, 0x52
- strb r0, [r1]
- ldr r2, [r7]
- adds r2, 0x52
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- str r4, [r0]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- movs r1, 0x1
- bl StartSpriteAnim
- bl sub_8052124
- movs r2, 0
- mov r8, r2
- b _0805243C
- .align 2, 0
-_0805236C: .4byte gOtherText_Ranking
-_08052370: .4byte gSpriteTemplate_821645C
-_08052374: .4byte gUnknown_03004854
-_08052378: .4byte gSprites
-_0805237C: .4byte SpriteCallbackDummy
-_08052380:
- ldr r1, [r7]
- movs r2, 0xB2
- lsls r2, 1
- adds r0, r1, r2
- add r0, r8
- ldrb r5, [r0]
- adds r2, r1, 0
- adds r2, 0xAB
- movs r0, 0xFC
- strb r0, [r2]
- movs r0, 0x13
- strb r0, [r2, 0x1]
- movs r0, 0x4
- strb r0, [r2, 0x2]
- adds r2, 0x3
- mov r6, r8
- adds r6, 0x1
- adds r0, r2, 0
- adds r1, r6, 0
- bl ConvertIntToDecimalString
- adds r2, r0, 0
- movs r1, 0
- strb r1, [r2]
- movs r0, 0xAD
- strb r0, [r2, 0x1]
- strb r1, [r2, 0x2]
- adds r2, 0x3
- lsls r1, r5, 3
- subs r1, r5
- lsls r1, 2
- ldr r0, _08052458 @ =gLinkPlayers + 0x8
- adds r1, r0
- adds r0, r2, 0
- bl StringCopy
- adds r2, r0, 0
- ldr r0, [r7]
- lsls r4, r5, 1
- adds r4, r5
- lsls r4, 1
- movs r1, 0xA6
- lsls r1, 1
- adds r0, r1
- adds r0, r4
- ldrh r1, [r0]
- adds r0, r2, 0
- movs r2, 0x6C
- movs r3, 0x1
- bl sub_8072C14
- adds r2, r0, 0
- ldr r0, [r7]
- movs r1, 0xA7
- lsls r1, 1
- adds r0, r1
- adds r0, r4
- ldrh r1, [r0]
- adds r0, r2, 0
- movs r2, 0x84
- movs r3, 0x1
- bl sub_8072C14
- adds r2, r0, 0
- ldr r0, [r7]
- movs r1, 0xA8
- lsls r1, 1
- adds r0, r1
- adds r0, r4
- ldrh r1, [r0]
- adds r0, r2, 0
- movs r2, 0x9C
- movs r3, 0x1
- bl sub_8072C14
- ldr r1, [r7]
- adds r0, r1, 0
- adds r0, 0xAB
- ldr r2, _0805245C @ =gUnknown_082165F3
- adds r1, 0x88
- ldrb r1, [r1]
- adds r1, r2
- ldrb r1, [r1]
- mov r2, r8
- muls r2, r1
- adds r2, 0x8
- lsls r2, 24
- lsrs r2, 24
- movs r1, 0x5
- bl MenuPrint
- lsls r6, 16
- lsrs r6, 16
- mov r8, r6
-_0805243C:
- ldr r0, [r7]
- adds r0, 0x88
- ldrb r0, [r0]
- cmp r8, r0
- bcc _08052380
- ldr r0, _08052460 @ =gUnknown_03004854
- ldr r1, [r0]
- movs r0, 0x98
- lsls r0, 1
- adds r2, r1, r0
- movs r0, 0
- str r0, [r2]
- b _08052494
- .align 2, 0
-_08052458: .4byte gLinkPlayers + 0x8
-_0805245C: .4byte gUnknown_082165F3
-_08052460: .4byte gUnknown_03004854
-_08052464:
- ldr r2, [r2]
- movs r0, 0x98
- lsls r0, 1
- adds r1, r2, r0
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x14
- ble _080524AE
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- b _080524AE
-_0805247E:
- ldr r0, _0805249C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080524AE
- movs r0, 0x5
- bl PlaySE
- ldr r0, _080524A0 @ =gUnknown_03004854
- ldr r1, [r0]
-_08052494:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080524AE
- .align 2, 0
-_0805249C: .4byte gMain
-_080524A0: .4byte gUnknown_03004854
-_080524A4:
- ldr r1, [r2]
- movs r0, 0
- strb r0, [r1]
- movs r0, 0x1
- b _080524B0
-_080524AE:
- movs r0, 0
-_080524B0:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8052228
-
- thumb_func_start unref_sub_80524BC
-unref_sub_80524BC: @ 80524BC
- push {r4,lr}
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl ResetTasks
- ldr r0, _0805251C @ =sub_804E2D8
- bl SetVBlankCallback
- ldr r4, _08052520 @ =gWindowConfig_81E6CE4
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- ldr r0, _08052524 @ =gMain
- ldrh r0, [r0, 0x20]
- bl SeedRng
- movs r1, 0x80
- lsls r1, 19
- movs r2, 0xAA
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- ldr r1, _08052528 @ =gUnknown_03000560
- movs r0, 0xFA
- lsls r0, 5
- strh r0, [r1, 0x1A]
- ldrb r0, [r1, 0x10]
- adds r0, 0x1
- strb r0, [r1, 0x10]
- ldr r0, _0805252C @ =sub_8052AF8
- bl SetMainCallback2
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0805251C: .4byte sub_804E2D8
-_08052520: .4byte gWindowConfig_81E6CE4
-_08052524: .4byte gMain
-_08052528: .4byte gUnknown_03000560
-_0805252C: .4byte sub_8052AF8
- thumb_func_end unref_sub_80524BC
-
- thumb_func_start sub_8052530
-sub_8052530: @ 8052530
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x98
- ldr r1, _080525C8 @ =gOtherText_BPMAndDash
- mov r0, sp
- bl StringCopy
- mov r0, sp
- movs r1, 0x2
- movs r2, 0
- bl MenuPrint
- ldr r4, _080525CC @ =gUnknown_03000560
- movs r1, 0x1A
- ldrsh r0, [r4, r1]
- movs r1, 0x64
- bl __divsi3
- adds r1, r0, 0
- lsls r1, 16
- asrs r1, 16
- mov r0, sp
- movs r2, 0x2
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- mov r0, sp
- movs r1, 0x6
- movs r2, 0
- bl MenuPrint
- movs r6, 0
- mov r2, sp
- adds r2, 0x3
- str r2, [sp, 0x84]
- mov r3, sp
- adds r3, 0x6
- str r3, [sp, 0x88]
- mov r0, sp
- adds r0, 0x9
- str r0, [sp, 0x8C]
- mov r1, sp
- adds r1, 0xC
- str r1, [sp, 0x90]
- adds r2, 0xC
- str r2, [sp, 0x94]
- mov r8, r4
- mov r7, sp
- ldr r3, _080525D0 @ =gBerries
- mov r9, r3
- ldr r0, _080525D4 @ =gUnknown_082165F8
- mov r10, r0
-_0805259E:
- mov r1, r8
- movs r0, 0
- ldrsb r0, [r1, r0]
- cmp r0, r6
- bne _080525D8
- movs r0, 0xEF
- strb r0, [r7]
- mov r0, r8
- adds r0, 0x1
- adds r0, r6, r0
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- adds r0, 0x85
- lsls r0, 16
- lsrs r0, 16
- mov r1, sp
- adds r1, 0x1
- bl CopyItemName
- b _080525F8
- .align 2, 0
-_080525C8: .4byte gOtherText_BPMAndDash
-_080525CC: .4byte gUnknown_03000560
-_080525D0: .4byte gBerries
-_080525D4: .4byte gUnknown_082165F8
-_080525D8:
- mov r0, r8
- adds r0, 0x1
- adds r0, r6, r0
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- adds r0, 0x85
- lsls r0, 16
- lsrs r0, 16
- mov r1, sp
- bl CopyItemName
- movs r0, 0
- strb r0, [r7, 0x6]
- movs r0, 0xFF
- strb r0, [r7, 0x7]
-_080525F8:
- lsls r5, r6, 1
- adds r5, r6
- adds r5, 0x3
- lsls r5, 24
- lsrs r5, 24
- mov r0, sp
- movs r1, 0x2
- adds r2, r5, 0
- bl MenuPrint
- mov r4, r8
- adds r4, 0x1
- adds r4, r6, r4
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r9
- ldrb r1, [r0, 0x15]
- mov r0, sp
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- mov r0, sp
- mov r1, r10
- bl StringAppend
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r9
- ldrb r1, [r0, 0x16]
- ldr r0, [sp, 0x84]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- mov r0, sp
- mov r1, r10
- bl StringAppend
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r9
- ldrb r1, [r0, 0x17]
- ldr r0, [sp, 0x88]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- mov r0, sp
- mov r1, r10
- bl StringAppend
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r9
- ldrb r1, [r0, 0x18]
- ldr r0, [sp, 0x8C]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- mov r0, sp
- mov r1, r10
- bl StringAppend
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r9
- ldrb r1, [r0, 0x19]
- ldr r0, [sp, 0x90]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- mov r0, sp
- mov r1, r10
- bl StringAppend
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r9
- ldrb r1, [r0, 0x1A]
- ldr r0, [sp, 0x94]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- movs r2, 0x1
- negs r2, r2
- add r3, sp, 0x80
- strb r2, [r3]
- movs r0, 0xFF
- strb r0, [r7, 0x11]
- mov r0, sp
- movs r1, 0x7
- adds r2, r5, 0
- bl MenuPrint
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x3
- bhi _080526EC
- b _0805259E
-_080526EC:
- mov r1, r8
- ldrb r0, [r1, 0x8]
- cmp r0, 0
- beq _080527A4
- ldr r1, _080527B4 @ =gPokeblockNames
- mov r2, r8
- ldrb r0, [r2, 0x8]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- mov r0, sp
- bl StringCopy
- mov r0, sp
- movs r1, 0x2
- movs r2, 0xF
- bl MenuPrint
- mov r3, r8
- ldrb r1, [r3, 0x11]
- mov r0, sp
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToHexStringN
- ldr r4, _080527B8 @ =gUnknown_082165F8
- mov r0, sp
- adds r1, r4, 0
- bl StringAppend
- mov r0, r8
- ldrb r1, [r0, 0x12]
- ldr r0, [sp, 0x84]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToHexStringN
- mov r0, sp
- adds r1, r4, 0
- bl StringAppend
- mov r2, r8
- ldrb r1, [r2, 0x13]
- ldr r0, [sp, 0x88]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToHexStringN
- mov r0, sp
- adds r1, r4, 0
- bl StringAppend
- mov r3, r8
- ldrb r1, [r3, 0x14]
- ldr r0, [sp, 0x8C]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToHexStringN
- mov r0, sp
- adds r1, r4, 0
- bl StringAppend
- mov r0, r8
- ldrb r1, [r0, 0x15]
- ldr r0, [sp, 0x90]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToHexStringN
- mov r0, sp
- adds r1, r4, 0
- bl StringAppend
- mov r2, r8
- ldrb r1, [r2, 0x16]
- ldr r0, [sp, 0x94]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToHexStringN
- mov r1, sp
- ldrb r0, [r1, 0x11]
- add r3, sp, 0x80
- ldrb r3, [r3]
- orrs r0, r3
- strb r0, [r1, 0x11]
- mov r0, sp
- movs r1, 0x7
- movs r2, 0x11
- bl MenuPrint
-_080527A4:
- add sp, 0x98
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080527B4: .4byte gPokeblockNames
-_080527B8: .4byte gUnknown_082165F8
- thumb_func_end sub_8052530
-
- thumb_func_start sub_80527BC
-sub_80527BC: @ 80527BC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x58
- ldr r0, _08052844 @ =gUnknown_020297DC
- ldrb r0, [r0]
- add r6, sp, 0x48
- cmp r0, 0x1
- bne _08052814
- movs r1, 0
- ldr r3, _08052848 @ =gUnknown_03004840
- movs r2, 0
-_080527D6:
- lsls r0, r1, 1
- adds r0, r3
- strh r2, [r0]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0x9
- bls _080527D6
- bl Random
- ldr r1, _0805284C @ =gUnknown_03004830
- strh r0, [r1]
- ldr r1, _08052850 @ =gUnknown_020297E0
- movs r0, 0
- str r0, [r1]
- ldr r1, _08052844 @ =gUnknown_020297DC
- movs r0, 0x2
- strb r0, [r1]
- movs r4, 0
- ldr r2, _08052854 @ =0x02000000
- movs r1, 0
-_08052800:
- adds r0, r4, r2
- strb r1, [r0]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0xC7
- bls _08052800
- ldr r1, _08052858 @ =gUnknown_020297E8
- movs r0, 0
- strb r0, [r1]
-_08052814:
- movs r4, 0
- movs r0, 0x1
- mov r8, r0
- ldr r7, _08052858 @ =gUnknown_020297E8
- ldr r5, _08052850 @ =gUnknown_020297E0
- ldr r1, _08052854 @ =0x02000000
- mov r9, r1
- ldr r3, _0805285C @ =gUnknown_020297E4
-_08052824:
- str r3, [sp, 0x54]
- bl Random
- lsls r0, 16
- lsrs r0, 31
- mov r1, r8
- ands r0, r1
- ldr r3, [sp, 0x54]
- ldrb r1, [r7]
- cmp r0, r1
- bne _08052860
- ldr r0, [r5]
- adds r0, 0x1
- str r0, [r5]
- b _0805287A
- .align 2, 0
-_08052844: .4byte gUnknown_020297DC
-_08052848: .4byte gUnknown_03004840
-_0805284C: .4byte gUnknown_03004830
-_08052850: .4byte gUnknown_020297E0
-_08052854: .4byte 0x02000000
-_08052858: .4byte gUnknown_020297E8
-_0805285C: .4byte gUnknown_020297E4
-_08052860:
- ldr r2, [r3]
- lsls r0, r2, 1
- add r0, r9
- ldr r1, [r5]
- strh r1, [r0]
- adds r2, 0x1
- str r2, [r3]
- movs r0, 0
- str r0, [r5]
- ldrb r0, [r7]
- mov r1, r8
- eors r0, r1
- strb r0, [r7]
-_0805287A:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x63
- bls _08052824
- mov r1, sp
- movs r0, 0xFF
- strb r0, [r1]
- ldr r0, _08052900 @ =gUnknown_03004830
- ldrh r1, [r0]
- adds r0, r6, 0
- movs r2, 0x2
- movs r3, 0x8
- bl ConvertIntToHexStringN
- mov r0, sp
- adds r1, r6, 0
- bl StringAppend
- ldr r1, _08052904 @ =gUnknown_082165F8
- mov r0, sp
- bl StringAppend
- ldr r0, _08052908 @ =gUnknown_020297E0
- ldr r1, [r0]
- adds r0, r6, 0
- movs r2, 0x2
- movs r3, 0x8
- bl ConvertIntToHexStringN
- mov r0, sp
- adds r1, r6, 0
- bl StringAppend
- ldr r1, _0805290C @ =gUnknown_08216600
- mov r0, sp
- bl StringAppend
- ldr r4, _08052910 @ =gUnknown_020297DC
- ldrb r0, [r4]
- cmp r0, 0x3
- bne _080528E8
- ldr r0, _08052914 @ =gUnknown_020297E4
- ldr r1, [r0]
- adds r0, r6, 0
- movs r2, 0x2
- movs r3, 0x10
- bl ConvertIntToHexStringN
- mov r0, sp
- adds r1, r6, 0
- bl StringAppend
- movs r0, 0
- strb r0, [r4]
-_080528E8:
- mov r0, sp
- movs r1, 0x2
- movs r2, 0xF
- bl MenuPrint
- add sp, 0x58
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08052900: .4byte gUnknown_03004830
-_08052904: .4byte gUnknown_082165F8
-_08052908: .4byte gUnknown_020297E0
-_0805290C: .4byte gUnknown_08216600
-_08052910: .4byte gUnknown_020297DC
-_08052914: .4byte gUnknown_020297E4
- thumb_func_end sub_80527BC
-
- thumb_func_start sub_8052918
-sub_8052918: @ 8052918
- push {r4-r6,lr}
- sub sp, 0x4C
- ldr r2, _08052A88 @ =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- ldr r4, _08052A8C @ =gUnknown_03000560
- cmp r0, 0
- beq _0805294C
- movs r1, 0xFA
- lsls r1, 2
- adds r0, r1, 0
- ldrh r1, [r4, 0x1A]
- adds r0, r1
- strh r0, [r4, 0x1A]
- lsls r0, 16
- ldr r1, _08052A90 @ =0x75300000
- cmp r0, r1
- ble _08052946
- movs r0, 0xFA
- lsls r0, 2
- strh r0, [r4, 0x1A]
-_08052946:
- ldrb r0, [r4, 0x10]
- adds r0, 0x1
- strb r0, [r4, 0x10]
-_0805294C:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x80
- lsls r0, 2
- ands r0, r1
- cmp r0, 0
- beq _08052972
- ldr r1, _08052A94 @ =0xfffffc18
- adds r0, r1, 0
- ldrh r1, [r4, 0x1A]
- adds r0, r1
- strh r0, [r4, 0x1A]
- lsls r0, 16
- cmp r0, 0
- bge _0805296C
- ldr r0, _08052A98 @ =0x00007530
- strh r0, [r4, 0x1A]
-_0805296C:
- ldrb r0, [r4, 0x10]
- adds r0, 0x1
- strb r0, [r4, 0x10]
-_08052972:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08052992
- ldrb r0, [r4]
- subs r0, 0x1
- strb r0, [r4]
- lsls r0, 24
- cmp r0, 0
- bge _0805298C
- movs r0, 0x3
- strb r0, [r4]
-_0805298C:
- ldrb r0, [r4, 0x10]
- adds r0, 0x1
- strb r0, [r4, 0x10]
-_08052992:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080529B4
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x3
- ble _080529AE
- movs r0, 0
- strb r0, [r4]
-_080529AE:
- ldrb r0, [r4, 0x10]
- adds r0, 0x1
- strb r0, [r4, 0x10]
-_080529B4:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080529E4
- adds r3, r4, 0
- movs r1, 0
- ldrsb r1, [r3, r1]
- adds r5, r3, 0x1
- adds r1, r5
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- cmp r0, 0
- bge _080529DE
- movs r0, 0
- ldrsb r0, [r3, r0]
- adds r0, r5
- movs r1, 0x2A
- strb r1, [r0]
-_080529DE:
- ldrb r0, [r4, 0x10]
- adds r0, 0x1
- strb r0, [r4, 0x10]
-_080529E4:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08052A16
- ldr r3, _08052A8C @ =gUnknown_03000560
- movs r1, 0
- ldrsb r1, [r3, r1]
- adds r4, r3, 0x1
- adds r1, r4
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x2A
- ble _08052A10
- movs r0, 0
- ldrsb r0, [r3, r0]
- adds r0, r4
- movs r1, 0
- strb r1, [r0]
-_08052A10:
- ldrb r0, [r3, 0x10]
- adds r0, 0x1
- strb r0, [r3, 0x10]
-_08052A16:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08052AA0
- movs r6, 0
- movs r4, 0
- ldr r5, _08052A8C @ =gUnknown_03000560
-_08052A26:
- adds r0, r5, 0x1
- adds r2, r4, r0
- movs r0, 0
- ldrsb r0, [r2, r0]
- cmp r0, 0x2A
- beq _08052A64
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r0, r4, 1
- mov r1, sp
- adds r1, r0
- adds r1, 0x4
- movs r0, 0
- ldrsb r0, [r2, r0]
- strh r0, [r1]
- add r0, sp, 0xC
- lsls r1, r4, 4
- adds r0, r1
- movs r1, 0
- ldrsb r1, [r2, r1]
- adds r1, 0x85
- lsls r1, 16
- lsrs r1, 16
- bl sub_804E844
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x3
- bls _08052A26
-_08052A64:
- cmp r6, 0x1
- bls _08052A9C
- add r0, sp, 0xC
- adds r1, r5, 0
- adds r1, 0x8
- lsls r2, r6, 24
- lsrs r2, 24
- adds r3, r5, 0
- adds r3, 0x11
- ldrh r4, [r5, 0x1A]
- str r4, [sp]
- bl sub_8050744
- ldrb r0, [r5, 0x10]
- adds r0, 0x1
- strb r0, [r5, 0x10]
- b _08052AA0
- .align 2, 0
-_08052A88: .4byte gMain
-_08052A8C: .4byte gUnknown_03000560
-_08052A90: .4byte 0x75300000
-_08052A94: .4byte 0xfffffc18
-_08052A98: .4byte 0x00007530
-_08052A9C:
- movs r0, 0xFF
- strb r0, [r5, 0x8]
-_08052AA0:
- ldr r4, _08052AE8 @ =gUnknown_03000560
- ldrb r0, [r4, 0x10]
- cmp r0, 0
- beq _08052AB0
- bl sub_8052530
- movs r0, 0
- strb r0, [r4, 0x10]
-_08052AB0:
- ldr r3, _08052AEC @ =gMain
- ldrh r1, [r3, 0x2E]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _08052AD4
- ldr r2, _08052AF0 @ =gUnknown_020297DC
- ldrb r0, [r2]
- adds r1, r0, 0
- cmp r1, 0
- bne _08052ADC
- adds r0, 0x1
- strb r0, [r2]
- ldr r0, _08052AF4 @ =gUnknown_020297E0
- str r1, [r0]
- ldrh r0, [r3, 0x20]
- bl SeedRng
-_08052AD4:
- ldr r0, _08052AF0 @ =gUnknown_020297DC
- ldrb r0, [r0]
- cmp r0, 0
- beq _08052AE0
-_08052ADC:
- bl sub_80527BC
-_08052AE0:
- add sp, 0x4C
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08052AE8: .4byte gUnknown_03000560
-_08052AEC: .4byte gMain
-_08052AF0: .4byte gUnknown_020297DC
-_08052AF4: .4byte gUnknown_020297E0
- thumb_func_end sub_8052918
-
- thumb_func_start sub_8052AF8
-sub_8052AF8: @ 8052AF8
- push {lr}
- bl sub_8052918
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_8052AF8
-
- thumb_func_start ShowBerryBlenderRecordWindow
-ShowBerryBlenderRecordWindow: @ 8052B14
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x20
- movs r0, 0x6
- movs r1, 0x3
- movs r2, 0x17
- movs r3, 0x10
- bl MenuDrawTextWindow
- ldr r0, _08052BBC @ =gMultiText_BerryBlenderMaxSpeedRecord
- movs r1, 0x8
- movs r2, 0x4
- bl MenuPrint
- ldr r0, _08052BC0 @ =gMultiText_2P3P4P
- movs r1, 0x8
- movs r2, 0x9
- bl MenuPrint
- movs r0, 0
- mov r8, r0
- ldr r0, _08052BC4 @ =gSaveBlock1
- movs r7, 0x90
- lsls r7, 20
- ldr r1, _08052BC8 @ =0x0000096c
- adds r6, r0, r1
- movs r0, 0
- mov r9, r0
-_08052B50:
- ldrh r4, [r6]
- adds r0, r4, 0
- movs r1, 0x64
- bl __udivsi3
- adds r1, r0, 0
- mov r0, sp
- movs r2, 0x12
- movs r3, 0x1
- bl sub_8072C14
- adds r5, r0, 0
- mov r1, r9
- strb r1, [r5]
- movs r0, 0xAD
- strb r0, [r5, 0x1]
- strb r1, [r5, 0x2]
- adds r5, 0x3
- adds r0, r4, 0
- movs r1, 0x64
- bl __umodsi3
- adds r1, r0, 0
- adds r0, r5, 0
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- adds r5, r0, 0
- ldr r1, _08052BCC @ =gOtherText_RPM
- bl StringAppend
- lsrs r2, r7, 24
- mov r0, sp
- movs r1, 0xF
- bl MenuPrint
- movs r0, 0x80
- lsls r0, 18
- adds r7, r0
- adds r6, 0x2
- movs r1, 0x1
- add r8, r1
- mov r0, r8
- cmp r0, 0x2
- ble _08052B50
- add sp, 0x20
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08052BBC: .4byte gMultiText_BerryBlenderMaxSpeedRecord
-_08052BC0: .4byte gMultiText_2P3P4P
-_08052BC4: .4byte gSaveBlock1
-_08052BC8: .4byte 0x0000096c
-_08052BCC: .4byte gOtherText_RPM
- thumb_func_end ShowBerryBlenderRecordWindow
-
- thumb_func_start sub_8052BD0
-sub_8052BD0: @ 8052BD0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r1, _08052C1C @ =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 _08052BF6
- ldr r0, _08052C20 @ =0x0000016f
- bl PlayFanfare
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_08052BF6:
- bl IsFanfareTaskInactive
- lsls r0, 24
- cmp r0, 0
- beq _08052C16
- ldr r0, _08052C24 @ =gUnknown_03004854
- ldr r0, [r0]
- movs r1, 0xBC
- lsls r1, 1
- adds r0, r1
- ldrh r0, [r0]
- bl PlayBGM
- adds r0, r5, 0
- bl DestroyTask
-_08052C16:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08052C1C: .4byte gTasks
-_08052C20: .4byte 0x0000016f
-_08052C24: .4byte gUnknown_03004854
- thumb_func_end sub_8052BD0
diff --git a/asm/cable_club.s b/asm/cable_club.s
deleted file mode 100644
index 68804ca21..000000000
--- a/asm/cable_club.s
+++ /dev/null
@@ -1,1671 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8082CD4
-sub_8082CD4: @ 8082CD4
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- ldr r4, _08082D10 @ =sub_8082F20
- adds r0, r4, 0
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _08082D08
- adds r0, r4, 0
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08082D14 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r6, [r1, 0xA]
- strh r5, [r1, 0xC]
-_08082D08:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08082D10: .4byte sub_8082F20
-_08082D14: .4byte gTasks
- thumb_func_end sub_8082CD4
-
- thumb_func_start sub_8082D18
-sub_8082D18: @ 8082D18
- push {lr}
- adds r1, r0, 0
- ldr r0, _08082D44 @ =gStringVar1
- movs r2, 0
- movs r3, 0x1
- bl ConvertIntToDecimalStringN
- movs r0, 0x12
- movs r1, 0xA
- movs r2, 0x1C
- movs r3, 0xD
- bl MenuDrawTextWindow
- ldr r0, _08082D48 @ =gOtherText_PLink
- movs r1, 0x13
- movs r2, 0xB
- movs r3, 0x48
- bl sub_8072BD8
- pop {r0}
- bx r0
- .align 2, 0
-_08082D44: .4byte gStringVar1
-_08082D48: .4byte gOtherText_PLink
- thumb_func_end sub_8082D18
-
- thumb_func_start sub_8082D4C
-sub_8082D4C: @ 8082D4C
- push {lr}
- movs r0, 0x12
- movs r1, 0xA
- movs r2, 0x1C
- movs r3, 0xD
- bl MenuZeroFillWindowRect
- pop {r0}
- bx r0
- thumb_func_end sub_8082D4C
-
- thumb_func_start sub_8082D60
-sub_8082D60: @ 8082D60
- push {r4,r5,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, _08082D88 @ =gTasks + 0x8
- adds r1, r0
- adds r5, r1, 0x6
- movs r2, 0x6
- ldrsh r0, [r1, r2]
- cmp r4, r0
- beq _08082D94
- cmp r4, 0x1
- bhi _08082D8C
- bl sub_8082D4C
- b _08082D92
- .align 2, 0
-_08082D88: .4byte gTasks + 0x8
-_08082D8C:
- adds r0, r4, 0
- bl sub_8082D18
-_08082D92:
- strh r4, [r5]
-_08082D94:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8082D60
-
- thumb_func_start sub_8082D9C
-sub_8082D9C: @ 8082D9C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- bl GetLinkPlayerDataExchangeStatusTimed
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- beq _08082DEC
- cmp r0, 0x2
- bgt _08082DBC
- cmp r0, 0x1
- beq _08082DC2
- b _08082DEC
-_08082DBC:
- cmp r0, 0x3
- beq _08082DE8
- b _08082DEC
-_08082DC2:
- bl GetLinkPlayerCount_2
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r4, r1
- bgt _08082DD6
- cmp r1, r5
- bgt _08082DD6
- movs r0, 0x1
- b _08082DEE
-_08082DD6:
- ldr r0, _08082DE4 @ =gStringVar1
- movs r2, 0
- movs r3, 0x1
- bl ConvertIntToDecimalStringN
- movs r0, 0x4
- b _08082DEE
- .align 2, 0
-_08082DE4: .4byte gStringVar1
-_08082DE8:
- movs r0, 0x3
- b _08082DEE
-_08082DEC:
- movs r0, 0
-_08082DEE:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8082D9C
-
- thumb_func_start sub_8082DF4
-sub_8082DF4: @ 8082DF4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl HasLinkErrorOccurred
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08082E0A
- movs r0, 0
- b _08082E1A
-_08082E0A:
- ldr r0, _08082E20 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _08082E24 @ =sub_8083418
- str r0, [r1]
- movs r0, 0x1
-_08082E1A:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08082E20: .4byte gTasks
-_08082E24: .4byte sub_8083418
- thumb_func_end sub_8082DF4
-
- thumb_func_start sub_8082E28
-sub_8082E28: @ 8082E28
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08082E58 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08082E64
- bl IsLinkConnectionEstablished
- lsls r0, 24
- cmp r0, 0
- bne _08082E64
- ldr r0, _08082E5C @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _08082E60 @ =sub_80833EC
- str r0, [r1]
- movs r0, 0x1
- b _08082E66
- .align 2, 0
-_08082E58: .4byte gMain
-_08082E5C: .4byte gTasks
-_08082E60: .4byte sub_80833EC
-_08082E64:
- movs r0, 0
-_08082E66:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8082E28
-
- thumb_func_start sub_8082E6C
-sub_8082E6C: @ 8082E6C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsLinkConnectionEstablished
- lsls r0, 24
- cmp r0, 0
- beq _08082E82
- movs r0, 0x1
- bl SetSuppressLinkErrorMessage
-_08082E82:
- ldr r0, _08082E94 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08082E98
- movs r0, 0
- b _08082EA8
- .align 2, 0
-_08082E94: .4byte gMain
-_08082E98:
- ldr r0, _08082EB0 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _08082EB4 @ =sub_80833EC
- str r0, [r1]
- movs r0, 0x1
-_08082EA8:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08082EB0: .4byte gTasks
-_08082EB4: .4byte sub_80833EC
- thumb_func_end sub_8082E6C
-
- thumb_func_start sub_8082EB8
-sub_8082EB8: @ 8082EB8
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl GetSioMultiSI
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08082ECE
- movs r0, 0
- b _08082EDE
-_08082ECE:
- ldr r0, _08082EE4 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _08082EE8 @ =sub_8083418
- str r0, [r1]
- movs r0, 0x1
-_08082EDE:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08082EE4: .4byte gTasks
-_08082EE8: .4byte sub_8083418
- thumb_func_end sub_8082EB8
-
- thumb_func_start unref_sub_8082EEC
-unref_sub_8082EEC: @ 8082EEC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08082F1C @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA
- bne _08082F16
- movs r0, 0x2
- bl sub_8007E9C
- adds r0, r4, 0
- bl DestroyTask
-_08082F16:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08082F1C: .4byte gTasks
- thumb_func_end unref_sub_8082EEC
-
- thumb_func_start sub_8082F20
-sub_8082F20: @ 8082F20
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _08082F48 @ =gTasks + 0x8
- adds r4, r1, r0
- movs r3, 0
- ldrsh r2, [r4, r3]
- cmp r2, 0
- bne _08082F4C
- bl OpenLinkTimed
- bl sub_80082EC
- bl ResetLinkPlayers
- b _08082F58
- .align 2, 0
-_08082F48: .4byte gTasks + 0x8
-_08082F4C:
- cmp r2, 0x9
- ble _08082F58
- subs r0, 0x8
- adds r0, r1, r0
- ldr r1, _08082F64 @ =sub_8082F68
- str r1, [r0]
-_08082F58:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08082F64: .4byte sub_8082F68
- thumb_func_end sub_8082F20
-
- thumb_func_start sub_8082F68
-sub_8082F68: @ 8082F68
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl GetLinkPlayerCount_2
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r4, 0
- bl sub_8082E28
- cmp r0, 0x1
- beq _08082FDC
- adds r0, r4, 0
- bl sub_8082E6C
- cmp r0, 0x1
- beq _08082FDC
- cmp r5, 0x1
- bls _08082FDC
- movs r0, 0x1
- bl SetSuppressLinkErrorMessage
- ldr r1, _08082FC0 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r4, r0, r1
- movs r0, 0
- strh r0, [r4, 0xE]
- bl IsLinkMaster
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08082FCC
- movs r0, 0x15
- bl PlaySE
- ldr r0, _08082FC4 @ =gUnknown_081A4932
- bl ShowFieldAutoScrollMessage
- ldr r0, _08082FC8 @ =sub_8082FEC
- b _08082FDA
- .align 2, 0
-_08082FC0: .4byte gTasks
-_08082FC4: .4byte gUnknown_081A4932
-_08082FC8: .4byte sub_8082FEC
-_08082FCC:
- movs r0, 0x16
- bl PlaySE
- ldr r0, _08082FE4 @ =gUnknown_081A49B6
- bl ShowFieldAutoScrollMessage
- ldr r0, _08082FE8 @ =sub_80831F8
-_08082FDA:
- str r0, [r4]
-_08082FDC:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08082FE4: .4byte gUnknown_081A49B6
-_08082FE8: .4byte sub_80831F8
- thumb_func_end sub_8082F68
-
- thumb_func_start sub_8082FEC
-sub_8082FEC: @ 8082FEC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl sub_8082E28
- cmp r0, 0x1
- beq _0808302C
- adds r0, r4, 0
- bl sub_8082EB8
- cmp r0, 0x1
- beq _0808302C
- adds r0, r4, 0
- bl sub_8082DF4
- cmp r0, 0x1
- beq _0808302C
- bl GetFieldMessageBoxMode
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- bne _0808302C
- ldr r0, _08083034 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- strh r2, [r1, 0xE]
- ldr r0, _08083038 @ =sub_808303C
- str r0, [r1]
-_0808302C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08083034: .4byte gTasks
-_08083038: .4byte sub_808303C
- thumb_func_end sub_8082FEC
-
-.section .text_80830E4
-
-
-
-
-
-
-
-
-
- thumb_func_start sub_80833C4
-sub_80833C4: @ 80833C4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080833E8 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _080833E0
- bl sub_8082D4C
- bl EnableBothScriptContexts
- adds r0, r4, 0
- bl DestroyTask
-_080833E0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080833E8: .4byte gReceivedRemoteLinkPlayers
- thumb_func_end sub_80833C4
-
- thumb_func_start sub_80833EC
-sub_80833EC: @ 80833EC
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _08083414 @ =gScriptResult
- movs r0, 0x5
- strh r0, [r1]
- bl sub_8082D4C
- bl HideFieldMessageBox
- bl EnableBothScriptContexts
- adds r0, r4, 0
- bl DestroyTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08083414: .4byte gScriptResult
- thumb_func_end sub_80833EC
-
- thumb_func_start sub_8083418
-sub_8083418: @ 8083418
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _08083440 @ =gScriptResult
- movs r0, 0x6
- strh r0, [r1]
- bl sub_8082D4C
- bl HideFieldMessageBox
- bl EnableBothScriptContexts
- adds r0, r4, 0
- bl DestroyTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08083440: .4byte gScriptResult
- thumb_func_end sub_8083418
-
- thumb_func_start sub_8083444
-sub_8083444: @ 8083444
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08083468 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r2, r1, r2
- ldrh r0, [r2, 0x10]
- adds r0, 0x1
- strh r0, [r2, 0x10]
- lsls r0, 16
- movs r1, 0x96
- lsls r1, 18
- cmp r0, r1
- bgt _0808346C
- movs r0, 0
- b _08083472
- .align 2, 0
-_08083468: .4byte gTasks
-_0808346C:
- ldr r0, _08083478 @ =sub_8083418
- str r0, [r2]
- movs r0, 0x1
-_08083472:
- pop {r1}
- bx r1
- .align 2, 0
-_08083478: .4byte sub_8083418
- thumb_func_end sub_8083444
-
- thumb_func_start sub_808347C
-sub_808347C: @ 808347C
- push {r4,lr}
- movs r3, 0x2
- movs r2, 0x2
- ldr r0, _08083494 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0x2
- beq _080834B0
- cmp r0, 0x2
- bgt _08083498
- cmp r0, 0x1
- beq _0808349E
- b _080834CC
- .align 2, 0
-_08083494: .4byte gSpecialVar_0x8004
-_08083498:
- cmp r0, 0x5
- beq _080834C0
- b _080834CC
-_0808349E:
- movs r3, 0x2
- ldr r1, _080834A8 @ =gLinkType
- ldr r4, _080834AC @ =0x00002233
- b _080834C8
- .align 2, 0
-_080834A8: .4byte gLinkType
-_080834AC: .4byte 0x00002233
-_080834B0:
- movs r3, 0x2
- ldr r1, _080834B8 @ =gLinkType
- ldr r4, _080834BC @ =0x00002244
- b _080834C8
- .align 2, 0
-_080834B8: .4byte gLinkType
-_080834BC: .4byte 0x00002244
-_080834C0:
- movs r3, 0x4
- movs r2, 0x4
- ldr r1, _080834DC @ =gLinkType
- ldr r4, _080834E0 @ =0x00002255
-_080834C8:
- adds r0, r4, 0
- strh r0, [r1]
-_080834CC:
- adds r0, r3, 0
- adds r1, r2, 0
- bl sub_8082CD4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080834DC: .4byte gLinkType
-_080834E0: .4byte 0x00002255
- thumb_func_end sub_808347C
-
- thumb_func_start sub_80834E4
-sub_80834E4: @ 80834E4
- push {lr}
- ldr r1, _08083500 @ =gLinkType
- ldr r2, _08083504 @ =0x00001133
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, _08083508 @ =gBattleTypeFlags
- movs r0, 0
- strh r0, [r1]
- movs r0, 0x2
- movs r1, 0x2
- bl sub_8082CD4
- pop {r0}
- bx r0
- .align 2, 0
-_08083500: .4byte gLinkType
-_08083504: .4byte 0x00001133
-_08083508: .4byte gBattleTypeFlags
- thumb_func_end sub_80834E4
-
- thumb_func_start sub_808350C
-sub_808350C: @ 808350C
- push {lr}
- ldr r0, _0808352C @ =gScriptResult
- movs r2, 0
- strh r2, [r0]
- ldr r1, _08083530 @ =gLinkType
- ldr r3, _08083534 @ =0x00003311
- adds r0, r3, 0
- strh r0, [r1]
- ldr r0, _08083538 @ =gBattleTypeFlags
- strh r2, [r0]
- movs r0, 0x2
- movs r1, 0x4
- bl sub_8082CD4
- pop {r0}
- bx r0
- .align 2, 0
-_0808352C: .4byte gScriptResult
-_08083530: .4byte gLinkType
-_08083534: .4byte 0x00003311
-_08083538: .4byte gBattleTypeFlags
- thumb_func_end sub_808350C
-
- thumb_func_start sub_808353C
-sub_808353C: @ 808353C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _0808355C @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r1, 0x8
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _08083560
- cmp r0, 0x1
- beq _080835BC
- b _080835CE
- .align 2, 0
-_0808355C: .4byte gTasks
-_08083560:
- ldr r0, _08083594 @ =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0x1
- bne _08083586
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- cmp r1, r0
- bge _08083586
- ldr r2, _08083598 @ =gLinkPlayers
-_08083578:
- ldrh r4, [r2, 0x1A]
- cmp r4, 0x1
- beq _0808359C
- adds r2, 0x1C
- adds r1, 0x1
- cmp r1, r0
- blt _08083578
-_08083586:
- bl EnableBothScriptContexts
- adds r0, r5, 0
- bl DestroyTask
- b _080835CE
- .align 2, 0
-_08083594: .4byte gScriptResult
-_08083598: .4byte gLinkPlayers
-_0808359C:
- ldr r1, _080835B4 @ =gScriptResult
- movs r0, 0x7
- strh r0, [r1]
- bl sub_8008480
- ldr r1, _080835B8 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- strh r4, [r0, 0x8]
- b _080835CE
- .align 2, 0
-_080835B4: .4byte gScriptResult
-_080835B8: .4byte gTasks
-_080835BC:
- ldr r0, _080835D4 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _080835CE
- bl EnableBothScriptContexts
- adds r0, r5, 0
- bl DestroyTask
-_080835CE:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080835D4: .4byte gReceivedRemoteLinkPlayers
- thumb_func_end sub_808353C
-
- thumb_func_start sub_80835D8
-sub_80835D8: @ 80835D8
- push {r4,lr}
- ldr r4, _0808360C @ =sub_808353C
- adds r0, r4, 0
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- bne _08083604
- adds r0, r4, 0
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _08083610 @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0x8]
-_08083604:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808360C: .4byte sub_808353C
-_08083610: .4byte gTasks
- thumb_func_end sub_80835D8
-
- thumb_func_start sub_8083614
-sub_8083614: @ 8083614
- push {lr}
- ldr r1, _08083630 @ =gLinkType
- ldr r2, _08083634 @ =0x00004411
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, _08083638 @ =gBattleTypeFlags
- movs r0, 0
- strh r0, [r1]
- movs r0, 0x2
- movs r1, 0x4
- bl sub_8082CD4
- pop {r0}
- bx r0
- .align 2, 0
-_08083630: .4byte gLinkType
-_08083634: .4byte 0x00004411
-_08083638: .4byte gBattleTypeFlags
- thumb_func_end sub_8083614
-
- thumb_func_start sub_808363C
-sub_808363C: @ 808363C
- push {lr}
- ldr r1, _08083658 @ =gLinkType
- ldr r2, _0808365C @ =0x00006601
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, _08083660 @ =gBattleTypeFlags
- movs r0, 0
- strh r0, [r1]
- movs r0, 0x4
- movs r1, 0x4
- bl sub_8082CD4
- pop {r0}
- bx r0
- .align 2, 0
-_08083658: .4byte gLinkType
-_0808365C: .4byte 0x00006601
-_08083660: .4byte gBattleTypeFlags
- thumb_func_end sub_808363C
-
- thumb_func_start sub_8083664
-sub_8083664: @ 8083664
- push {lr}
- ldr r0, _08083678 @ =sub_8083710
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- beq _0808367C
- movs r0, 0xFF
- b _08083700
- .align 2, 0
-_08083678: .4byte sub_8083710
-_0808367C:
- ldr r0, _08083690 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- subs r0, 0x1
- cmp r0, 0x4
- bhi _080836F4
- lsls r0, 2
- ldr r1, _08083694 @ =_08083698
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08083690: .4byte gSpecialVar_0x8004
-_08083694: .4byte _08083698
- .align 2, 0
-_08083698:
- .4byte _080836AC
- .4byte _080836BC
- .4byte _080836DC
- .4byte _080836EC
- .4byte _080836CC
-_080836AC:
- ldr r1, _080836B4 @ =gLinkType
- ldr r2, _080836B8 @ =0x00002233
- b _080836F0
- .align 2, 0
-_080836B4: .4byte gLinkType
-_080836B8: .4byte 0x00002233
-_080836BC:
- ldr r1, _080836C4 @ =gLinkType
- ldr r2, _080836C8 @ =0x00002244
- b _080836F0
- .align 2, 0
-_080836C4: .4byte gLinkType
-_080836C8: .4byte 0x00002244
-_080836CC:
- ldr r1, _080836D4 @ =gLinkType
- ldr r2, _080836D8 @ =0x00002255
- b _080836F0
- .align 2, 0
-_080836D4: .4byte gLinkType
-_080836D8: .4byte 0x00002255
-_080836DC:
- ldr r1, _080836E4 @ =gLinkType
- ldr r2, _080836E8 @ =0x00001111
- b _080836F0
- .align 2, 0
-_080836E4: .4byte gLinkType
-_080836E8: .4byte 0x00001111
-_080836EC:
- ldr r1, _08083704 @ =gLinkType
- ldr r2, _08083708 @ =0x00003322
-_080836F0:
- adds r0, r2, 0
- strh r0, [r1]
-_080836F4:
- ldr r0, _0808370C @ =sub_8083710
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
-_08083700:
- pop {r1}
- bx r1
- .align 2, 0
-_08083704: .4byte gLinkType
-_08083708: .4byte 0x00003322
-_0808370C: .4byte sub_8083710
- thumb_func_end sub_8083664
-
- thumb_func_start sub_8083710
-sub_8083710: @ 8083710
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _0808373C @ =gTasks + 0x8
- adds r4, r1, r0
- movs r3, 0
- ldrsh r2, [r4, r3]
- cmp r2, 0
- bne _08083744
- bl OpenLink
- bl ResetLinkPlayers
- ldr r0, _08083740 @ =sub_8083C50
- movs r1, 0x50
- bl CreateTask
- b _08083750
- .align 2, 0
-_0808373C: .4byte gTasks + 0x8
-_08083740: .4byte sub_8083C50
-_08083744:
- cmp r2, 0x9
- ble _08083750
- subs r0, 0x8
- adds r0, r1, r0
- ldr r1, _0808375C @ =sub_8083760
- str r1, [r0]
-_08083750:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808375C: .4byte sub_8083760
- thumb_func_end sub_8083710
-
- thumb_func_start sub_8083760
-sub_8083760: @ 8083760
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- bl GetLinkPlayerCount_2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _080837A6
- bl IsLinkMaster
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08083798
- ldr r0, _08083790 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _08083794 @ =sub_80837B4
- b _080837A4
- .align 2, 0
-_08083790: .4byte gTasks
-_08083794: .4byte sub_80837B4
-_08083798:
- ldr r0, _080837AC @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, _080837B0 @ =sub_80837EC
-_080837A4:
- str r0, [r1]
-_080837A6:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080837AC: .4byte gTasks
-_080837B0: .4byte sub_80837EC
- thumb_func_end sub_8083760
-
- thumb_func_start sub_80837B4
-sub_80837B4: @ 80837B4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- bl sub_800820C
- adds r4, r0, 0
- bl GetLinkPlayerCount_2
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- bne _080837DE
- bl sub_8007F4C
- ldr r0, _080837E4 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, _080837E8 @ =sub_80837EC
- str r0, [r1]
-_080837DE:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080837E4: .4byte gTasks
-_080837E8: .4byte sub_80837EC
- thumb_func_end sub_80837B4
-
- thumb_func_start sub_80837EC
-sub_80837EC: @ 80837EC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0808381C @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _08083814
- bl IsLinkPlayerDataExchangeComplete
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08083814
- bl sub_800826C
- bl sub_8007B14
- adds r0, r4, 0
- bl DestroyTask
-_08083814:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808381C: .4byte gReceivedRemoteLinkPlayers
- thumb_func_end sub_80837EC
-
- thumb_func_start sub_8083820
-sub_8083820: @ 8083820
- push {lr}
- bl InitSaveDialog
- pop {r0}
- bx r0
- thumb_func_end sub_8083820
-
- thumb_func_start sub_808382C
-sub_808382C: @ 808382C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _08083850 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x5
- bls _08083846
- b _08083940
-_08083846:
- lsls r0, 2
- ldr r1, _08083854 @ =_08083858
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08083850: .4byte gTasks
-_08083854: .4byte _08083858
- .align 2, 0
-_08083858:
- .4byte _08083870
- .4byte _08083890
- .4byte _080838A0
- .4byte _080838B0
- .4byte _080838B6
- .4byte _080838CC
-_08083870:
- movs r0, 0x1
- movs r1, 0
- bl fade_screen
- ldr r1, _08083888 @ =gLinkType
- ldr r2, _0808388C @ =0x00002211
- adds r0, r2, 0
- strh r0, [r1]
- bl ClearLinkCallback_2
- b _080838BE
- .align 2, 0
-_08083888: .4byte gLinkType
-_0808388C: .4byte 0x00002211
-_08083890:
- ldr r0, _0808389C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- b _080838BA
- .align 2, 0
-_0808389C: .4byte gPaletteFade
-_080838A0:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- ble _08083940
- b _080838BE
-_080838B0:
- bl sub_800832C
- b _080838BE
-_080838B6:
- ldr r0, _080838C8 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
-_080838BA:
- cmp r0, 0
- bne _08083940
-_080838BE:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _08083940
- .align 2, 0
-_080838C8: .4byte gReceivedRemoteLinkPlayers
-_080838CC:
- ldr r0, _080838E4 @ =gLinkPlayers
- ldr r0, [r0, 0x4]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080838E8
- movs r0, 0xE6
- lsls r0, 1
- bl current_map_music_set__default_for_battle
- b _080838EE
- .align 2, 0
-_080838E4: .4byte gLinkPlayers
-_080838E8:
- ldr r0, _08083900 @ =0x000001cb
- bl current_map_music_set__default_for_battle
-_080838EE:
- ldr r0, _08083904 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0x2
- beq _08083918
- cmp r0, 0x2
- bgt _08083908
- cmp r0, 0x1
- beq _0808390E
- b _0808392E
- .align 2, 0
-_08083900: .4byte 0x000001cb
-_08083904: .4byte gSpecialVar_0x8004
-_08083908:
- cmp r0, 0x5
- beq _08083924
- b _0808392E
-_0808390E:
- ldr r1, _08083914 @ =gBattleTypeFlags
- movs r0, 0xA
- b _0808392C
- .align 2, 0
-_08083914: .4byte gBattleTypeFlags
-_08083918:
- ldr r1, _08083920 @ =gBattleTypeFlags
- movs r0, 0xB
- b _0808392C
- .align 2, 0
-_08083920: .4byte gBattleTypeFlags
-_08083924:
- bl ReducePlayerPartyToThree
- ldr r1, _08083948 @ =gBattleTypeFlags
- movs r0, 0x4B
-_0808392C:
- strh r0, [r1]
-_0808392E:
- ldr r0, _0808394C @ =sub_800E7C4
- bl SetMainCallback2
- ldr r1, _08083950 @ =gMain
- ldr r0, _08083954 @ =sub_8083958
- str r0, [r1, 0x8]
- adds r0, r5, 0
- bl DestroyTask
-_08083940:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08083948: .4byte gBattleTypeFlags
-_0808394C: .4byte sub_800E7C4
-_08083950: .4byte gMain
-_08083954: .4byte sub_8083958
- thumb_func_end sub_808382C
-
- thumb_func_start sub_8083958
-sub_8083958: @ 8083958
- push {lr}
- bl call_map_music_set_to_zero
- bl LoadPlayerParty
- bl SavePlayerBag
- bl sub_810FEFC
- ldr r0, _08083990 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0x5
- beq _0808397E
- ldr r0, _08083994 @ =gUnknown_03004860
- ldrb r1, [r0]
- movs r0, 0x1
- eors r0, r1
- bl UpdateLinkBattleRecords
-_0808397E:
- ldr r0, _08083998 @ =gMain
- ldr r1, _0808399C @ =sub_805465C
- str r1, [r0, 0x8]
- ldr r0, _080839A0 @ =sub_8071B28
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_08083990: .4byte gSpecialVar_0x8004
-_08083994: .4byte gUnknown_03004860
-_08083998: .4byte gMain
-_0808399C: .4byte sub_805465C
-_080839A0: .4byte sub_8071B28
- thumb_func_end sub_8083958
-
- thumb_func_start sub_80839A4
-sub_80839A4: @ 80839A4
- push {lr}
- ldr r0, _080839CC @ =gSpecialVar_0x8004
- ldrh r1, [r0]
- subs r0, r1, 0x1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bls _080839B8
- cmp r1, 0x5
- bne _080839C0
-_080839B8:
- bl LoadPlayerParty
- bl SavePlayerBag
-_080839C0:
- movs r0, 0x7F
- bl copy_saved_warp2_bank_and_enter_x_to_warp1
- pop {r0}
- bx r0
- .align 2, 0
-_080839CC: .4byte gSpecialVar_0x8004
- thumb_func_end sub_80839A4
-
- thumb_func_start sub_80839D0
-sub_80839D0: @ 80839D0
- push {lr}
- bl sub_805559C
- pop {r0}
- bx r0
- thumb_func_end sub_80839D0
-
- thumb_func_start sub_80839DC
-sub_80839DC: @ 80839DC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _08083A00 @ =gTasks
- adds r5, r0, r1
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _08083A20
- cmp r0, 0x1
- bgt _08083A04
- cmp r0, 0
- beq _08083A0E
- b _08083A7E
- .align 2, 0
-_08083A00: .4byte gTasks
-_08083A04:
- cmp r0, 0x2
- beq _08083A40
- cmp r0, 0x3
- beq _08083A68
- b _08083A7E
-_08083A0E:
- ldr r0, _08083A1C @ =gUnknown_081A490C
- bl ShowFieldMessage
- movs r0, 0x1
- strh r0, [r5, 0x8]
- b _08083A7E
- .align 2, 0
-_08083A1C: .4byte gUnknown_081A490C
-_08083A20:
- bl IsFieldMessageBoxHidden
- lsls r0, 24
- cmp r0, 0
- beq _08083A7E
- bl sub_8055574
- ldr r0, _08083A3C @ =gSpecialVar_0x8005
- ldrb r0, [r0]
- bl sub_8007270
- movs r0, 0x2
- strh r0, [r5, 0x8]
- b _08083A7E
- .align 2, 0
-_08083A3C: .4byte gSpecialVar_0x8005
-_08083A40:
- bl sub_80554F8
- cmp r0, 0x1
- beq _08083A52
- cmp r0, 0x1
- ble _08083A7E
- cmp r0, 0x2
- beq _08083A62
- b _08083A7E
-_08083A52:
- bl HideFieldMessageBox
- movs r0, 0
- strh r0, [r5, 0x8]
- adds r0, r4, 0
- bl SwitchTaskToFollowupFunc
- b _08083A7E
-_08083A62:
- movs r0, 0x3
- strh r0, [r5, 0x8]
- b _08083A7E
-_08083A68:
- bl sub_8055588
- bl HideFieldMessageBox
- bl MenuZeroFillScreen
- adds r0, r4, 0
- bl DestroyTask
- bl EnableBothScriptContexts
-_08083A7E:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80839DC
-
- thumb_func_start sub_8083A84
-sub_8083A84: @ 8083A84
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _08083AA8 @ =sub_80839DC
- adds r0, r4, 0
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- adds r1, r4, 0
- adds r2, r5, 0
- bl SetTaskFuncWithFollowupFunc
- bl ScriptContext1_Stop
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08083AA8: .4byte sub_80839DC
- thumb_func_end sub_8083A84
-
- thumb_func_start sub_8083AAC
-sub_8083AAC: @ 8083AAC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _08083AD0 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08083AF0
- cmp r0, 0x1
- bgt _08083AD4
- cmp r0, 0
- beq _08083ADE
- b _08083B34
- .align 2, 0
-_08083AD0: .4byte gTasks
-_08083AD4:
- cmp r0, 0x2
- beq _08083B04
- cmp r0, 0x3
- beq _08083B20
- b _08083B34
-_08083ADE:
- bl ScriptContext2_Enable
- movs r0, 0x1
- movs r1, 0
- bl fade_screen
- bl ClearLinkCallback_2
- b _08083B14
-_08083AF0:
- ldr r0, _08083B00 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08083B34
- b _08083B14
- .align 2, 0
-_08083B00: .4byte gPaletteFade
-_08083B04:
- ldr r1, _08083B1C @ =gUnknown_020297D8
- movs r0, 0
- strb r0, [r1]
- strb r0, [r1, 0x1]
- bl m4aMPlayAllStop
- bl sub_800832C
-_08083B14:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _08083B34
- .align 2, 0
-_08083B1C: .4byte gUnknown_020297D8
-_08083B20:
- ldr r0, _08083B3C @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _08083B34
- ldr r0, _08083B40 @ =sub_8047CD8
- bl SetMainCallback2
- adds r0, r5, 0
- bl DestroyTask
-_08083B34:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08083B3C: .4byte gReceivedRemoteLinkPlayers
-_08083B40: .4byte sub_8047CD8
- thumb_func_end sub_8083AAC
-
- thumb_func_start sub_8083B44
-sub_8083B44: @ 8083B44
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_8083B6C
- adds r0, r4, 0
- bl DestroyTask
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8083B44
-
- thumb_func_start sub_8083B5C
-sub_8083B5C: @ 8083B5C
- push {lr}
- ldr r0, _08083B68 @ =sub_8083B44
- bl sub_8083A84
- pop {r0}
- bx r0
- .align 2, 0
-_08083B68: .4byte sub_8083B44
- thumb_func_end sub_8083B5C
-
- thumb_func_start sub_8083B6C
-sub_8083B6C: @ 8083B6C
- push {lr}
- ldr r0, _08083B7C @ =sub_8083AAC
- movs r1, 0x50
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_08083B7C: .4byte sub_8083AAC
- thumb_func_end sub_8083B6C
-
- thumb_func_start sub_8083B80
-sub_8083B80: @ 8083B80
- push {lr}
- bl sub_8083B6C
- bl ScriptContext1_Stop
- pop {r0}
- bx r0
- thumb_func_end sub_8083B80
-
- thumb_func_start sub_8083B90
-sub_8083B90: @ 8083B90
- push {lr}
- ldr r0, _08083BA4 @ =gLinkType
- ldr r2, _08083BA8 @ =0x00002211
- adds r1, r2, 0
- strh r1, [r0]
- ldr r0, _08083BAC @ =sub_808382C
- bl sub_8083A84
- pop {r0}
- bx r0
- .align 2, 0
-_08083BA4: .4byte gLinkType
-_08083BA8: .4byte 0x00002211
-_08083BAC: .4byte sub_808382C
- thumb_func_end sub_8083B90
-
- thumb_func_start unref_sub_8083BB0
-unref_sub_8083BB0: @ 8083BB0
- push {r4,lr}
- ldr r4, _08083BD4 @ =sub_80839DC
- adds r0, r4, 0
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08083BD8 @ =Task_RecordMixing_Main
- adds r1, r4, 0
- bl SetTaskFuncWithFollowupFunc
- bl ScriptContext1_Stop
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08083BD4: .4byte sub_80839DC
-_08083BD8: .4byte Task_RecordMixing_Main
- thumb_func_end unref_sub_8083BB0
-
- thumb_func_start sub_8083BDC
-sub_8083BDC: @ 8083BDC
- push {lr}
- ldr r0, _08083BEC @ =gSpecialVar_0x8006
- ldrb r0, [r0]
- ldr r1, _08083BF0 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl sub_8093130
- pop {r0}
- bx r0
- .align 2, 0
-_08083BEC: .4byte gSpecialVar_0x8006
-_08083BF0: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
- thumb_func_end sub_8083BDC
-
- thumb_func_start sub_8083BF4
-sub_8083BF4: @ 8083BF4
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _08083C34 @ =gSpecialVar_0x8006
- strh r4, [r0]
- ldr r0, _08083C38 @ =gStringVar1
- lsls r1, r4, 3
- subs r1, r4
- lsls r1, 2
- ldr r2, _08083C3C @ =gLinkPlayers + 0x8
- adds r1, r2
- bl StringCopy
- adds r0, r4, 0
- bl sub_80934C4
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _08083C48
- ldr r0, _08083C40 @ =gStringVar2
- ldr r2, _08083C44 @ =gTrainerCardColorNames
- subs r1, 0x1
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- bl StringCopy
- movs r0, 0x1
- b _08083C4A
- .align 2, 0
-_08083C34: .4byte gSpecialVar_0x8006
-_08083C38: .4byte gStringVar1
-_08083C3C: .4byte gLinkPlayers + 0x8
-_08083C40: .4byte gStringVar2
-_08083C44: .4byte gTrainerCardColorNames
-_08083C48:
- movs r0, 0
-_08083C4A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8083BF4
-
- thumb_func_start sub_8083C50
-sub_8083C50: @ 8083C50
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _08083C98 @ =gTasks
- adds r0, r1
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
- lsls r1, 16
- movs r0, 0x96
- lsls r0, 17
- cmp r1, r0
- ble _08083C82
- bl CloseLink
- ldr r0, _08083C9C @ =CB2_LinkError
- bl SetMainCallback2
- adds r0, r4, 0
- bl DestroyTask
-_08083C82:
- ldr r0, _08083CA0 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _08083C90
- adds r0, r5, 0
- bl DestroyTask
-_08083C90:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08083C98: .4byte gTasks
-_08083C9C: .4byte CB2_LinkError
-_08083CA0: .4byte gReceivedRemoteLinkPlayers
- thumb_func_end sub_8083C50
-
- thumb_func_start sub_8083CA4
-sub_8083CA4: @ 8083CA4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08083CC4 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _08083CBC
- bl EnableBothScriptContexts
- adds r0, r4, 0
- bl DestroyTask
-_08083CBC:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08083CC4: .4byte gReceivedRemoteLinkPlayers
- thumb_func_end sub_8083CA4
-
- thumb_func_start unref_sub_8083CC8
-unref_sub_8083CC8: @ 8083CC8
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_800832C
- ldr r1, _08083CE8 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _08083CEC @ =sub_8083CA4
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08083CE8: .4byte gTasks
-_08083CEC: .4byte sub_8083CA4
- thumb_func_end unref_sub_8083CC8
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/cute_sketch.s b/asm/cute_sketch.s
index afacc19f6..14c28327d 100644
--- a/asm/cute_sketch.s
+++ b/asm/cute_sketch.s
@@ -6,445 +6,6 @@
.text
- thumb_func_start sub_80FC7A0
-sub_80FC7A0: @ 80FC7A0
- push {lr}
- ldr r2, _080FC7E8 @ =gUnknown_03005DEC
- ldr r1, [r0, 0x4]
- str r1, [r2]
- ldr r2, _080FC7EC @ =gUnknown_03005E00
- ldrb r1, [r0, 0x1F]
- strb r1, [r2]
- ldr r2, _080FC7F0 @ =gUnknown_03005DE8
- ldrb r1, [r0, 0x19]
- strb r1, [r2]
- ldr r2, _080FC7F4 @ =gUnknown_03005DFC
- ldrb r1, [r0, 0x1A]
- strb r1, [r2]
- ldr r2, _080FC7F8 @ =gUnknown_03005DF8
- ldrb r1, [r0, 0x1B]
- strb r1, [r2]
- ldr r2, _080FC7FC @ =gUnknown_03005DF0
- ldrb r1, [r0, 0x1C]
- strb r1, [r2]
- ldr r2, _080FC800 @ =gUnknown_03005E04
- ldrb r1, [r0, 0x1D]
- strb r1, [r2]
- ldr r2, _080FC804 @ =gUnknown_03005DF4
- ldrb r1, [r0, 0x1E]
- strb r1, [r2]
- ldrb r0, [r0]
- subs r0, 0x2
- cmp r0, 0x22
- bls _080FC7DC
- b _080FC928
-_080FC7DC:
- lsls r0, 2
- ldr r1, _080FC808 @ =_080FC80C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080FC7E8: .4byte gUnknown_03005DEC
-_080FC7EC: .4byte gUnknown_03005E00
-_080FC7F0: .4byte gUnknown_03005DE8
-_080FC7F4: .4byte gUnknown_03005DFC
-_080FC7F8: .4byte gUnknown_03005DF8
-_080FC7FC: .4byte gUnknown_03005DF0
-_080FC800: .4byte gUnknown_03005E04
-_080FC804: .4byte gUnknown_03005DF4
-_080FC808: .4byte _080FC80C
- .align 2, 0
-_080FC80C:
- .4byte _080FC898
- .4byte _080FC928
- .4byte _080FC928
- .4byte _080FC928
- .4byte _080FC8F8
- .4byte _080FC928
- .4byte _080FC89E
- .4byte _080FC8A4
- .4byte _080FC8B8
- .4byte _080FC8CA
- .4byte _080FC928
- .4byte _080FC8E0
- .4byte _080FC928
- .4byte _080FC928
- .4byte _080FC928
- .4byte _080FC928
- .4byte _080FC928
- .4byte _080FC928
- .4byte _080FC928
- .4byte _080FC928
- .4byte _080FC928
- .4byte _080FC928
- .4byte _080FC928
- .4byte _080FC928
- .4byte _080FC928
- .4byte _080FC928
- .4byte _080FC928
- .4byte _080FC928
- .4byte _080FC8E6
- .4byte _080FC8C4
- .4byte _080FC8EC
- .4byte _080FC8F2
- .4byte _080FC928
- .4byte _080FC928
- .4byte _080FC904
-_080FC898:
- bl sub_80FCAA4
- b _080FC928
-_080FC89E:
- bl sub_80FCB5C
- b _080FC928
-_080FC8A4:
- bl sub_80FCD54
- ldr r0, _080FC8B4 @ =gUnknown_03005E00
- ldrb r0, [r0]
- bl sub_80FCC18
- b _080FC928
- .align 2, 0
-_080FC8B4: .4byte gUnknown_03005E00
-_080FC8B8:
- bl sub_80FCD54
- bl sub_80FCEA4
- bl sub_80FCCBC
-_080FC8C4:
- bl sub_80FCEA4
- b _080FC928
-_080FC8CA:
- bl sub_80FCD54
- bl sub_80FD06C
- bl sub_80FD06C
- bl sub_80FD114
- bl sub_80FCCBC
- b _080FC928
-_080FC8E0:
- bl sub_80FCF3C
- b _080FC928
-_080FC8E6:
- bl sub_80FCD54
- b _080FC928
-_080FC8EC:
- bl sub_80FD06C
- b _080FC928
-_080FC8F2:
- bl sub_80FD114
- b _080FC928
-_080FC8F8:
- bl sub_80FCAC4
- movs r0, 0x3
- bl sub_80FC92C
- b _080FC928
-_080FC904:
- bl sub_80FCD54
- bl sub_80FD06C
- bl sub_80FD114
- bl sub_80FCCBC
- bl sub_80FCB5C
- bl sub_80FCB5C
- movs r0, 0x2
- bl sub_80FC92C
- movs r0, 0x4
- bl sub_80FC9E4
-_080FC928:
- pop {r0}
- bx r0
- thumb_func_end sub_80FC7A0
-
- thumb_func_start sub_80FC92C
-sub_80FC92C: @ 80FC92C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r7, r0, 24
- movs r2, 0
- ldr r0, _080FC9CC @ =gUnknown_03005DF0
- mov r8, r0
- ldrb r0, [r0]
- cmp r2, r0
- bcs _080FC9BE
- ldr r1, _080FC9D0 @ =gUnknown_03005DF8
- mov r12, r1
- ldr r3, _080FC9D4 @ =gUnknown_03005E04
- mov r10, r3
- ldr r0, _080FC9D8 @ =gUnknown_03005DE8
- mov r9, r0
-_080FC952:
- ldr r1, _080FC9DC @ =gUnknown_03005DFC
- ldrb r0, [r1]
- adds r0, r2
- mov r3, r10
- ldrb r1, [r3]
- muls r0, r1
- lsls r0, 1
- ldr r3, _080FC9E0 @ =gUnknown_03005DEC
- ldr r1, [r3]
- adds r1, r0
- mov r3, r9
- ldrb r0, [r3]
- lsls r0, 1
- adds r3, r1, r0
- movs r4, 0
- adds r5, r2, 0x1
- mov r0, r12
- ldrb r0, [r0]
- cmp r4, r0
- bcs _080FC9B2
- movs r6, 0x80
- lsls r6, 8
-_080FC97E:
- ldrh r1, [r3]
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0
- bne _080FC9A2
- movs r0, 0x1F
- ands r0, r1
- adds r0, r7
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x1F
- bls _080FC998
- movs r2, 0x1F
-_080FC998:
- lsls r0, r2, 10
- lsls r1, r2, 5
- orrs r0, r1
- orrs r0, r2
- strh r0, [r3]
-_080FC9A2:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- adds r3, 0x2
- mov r1, r12
- ldrb r1, [r1]
- cmp r4, r1
- bcc _080FC97E
-_080FC9B2:
- lsls r0, r5, 24
- lsrs r2, r0, 24
- mov r3, r8
- ldrb r3, [r3]
- cmp r2, r3
- bcc _080FC952
-_080FC9BE:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FC9CC: .4byte gUnknown_03005DF0
-_080FC9D0: .4byte gUnknown_03005DF8
-_080FC9D4: .4byte gUnknown_03005E04
-_080FC9D8: .4byte gUnknown_03005DE8
-_080FC9DC: .4byte gUnknown_03005DFC
-_080FC9E0: .4byte gUnknown_03005DEC
- thumb_func_end sub_80FC92C
-
- thumb_func_start sub_80FC9E4
-sub_80FC9E4: @ 80FC9E4
- 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 r2, 0
- ldr r0, _080FCA8C @ =gUnknown_03005DF0
- ldrb r0, [r0]
- cmp r2, r0
- bcs _080FCA7C
- ldr r1, _080FCA90 @ =gUnknown_03005DF8
- mov r10, r1
-_080FCA02:
- ldr r3, _080FCA94 @ =gUnknown_03005DFC
- ldrb r0, [r3]
- adds r0, r2
- ldr r3, _080FCA98 @ =gUnknown_03005E04
- ldrb r1, [r3]
- muls r0, r1
- lsls r0, 1
- ldr r3, _080FCA9C @ =gUnknown_03005DEC
- ldr r1, [r3]
- adds r1, r0
- ldr r3, _080FCAA0 @ =gUnknown_03005DE8
- ldrb r0, [r3]
- lsls r0, 1
- adds r3, r1, r0
- movs r5, 0
- adds r7, r2, 0x1
- mov r0, r10
- ldrb r0, [r0]
- cmp r5, r0
- bcs _080FCA70
- movs r1, 0x80
- lsls r1, 8
- mov r9, r1
- movs r0, 0x1F
- mov r12, r0
- mov r1, r8
- subs r6, r0, r1
-_080FCA38:
- ldrh r1, [r3]
- mov r0, r9
- ands r0, r1
- cmp r0, 0
- bne _080FCA60
- movs r4, 0x1F
- mov r2, r12
- ands r2, r1
- cmp r2, r6
- ble _080FCA56
- mov r1, r8
- lsrs r0, r1, 1
- subs r0, r4, r0
- lsls r0, 24
- lsrs r2, r0, 24
-_080FCA56:
- lsls r0, r2, 10
- lsls r1, r2, 5
- orrs r0, r1
- orrs r0, r2
- strh r0, [r3]
-_080FCA60:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- adds r3, 0x2
- mov r0, r10
- ldrb r0, [r0]
- cmp r5, r0
- bcc _080FCA38
-_080FCA70:
- lsls r0, r7, 24
- lsrs r2, r0, 24
- ldr r1, _080FCA8C @ =gUnknown_03005DF0
- ldrb r1, [r1]
- cmp r2, r1
- bcc _080FCA02
-_080FCA7C:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FCA8C: .4byte gUnknown_03005DF0
-_080FCA90: .4byte gUnknown_03005DF8
-_080FCA94: .4byte gUnknown_03005DFC
-_080FCA98: .4byte gUnknown_03005E04
-_080FCA9C: .4byte gUnknown_03005DEC
-_080FCAA0: .4byte gUnknown_03005DE8
- thumb_func_end sub_80FC9E4
-
- thumb_func_start sub_80FCAA4
-sub_80FCAA4: @ 80FCAA4
- push {r4,r5,lr}
- movs r4, 0
- ldr r5, _080FCAC0 @ =0x00000c7f
-_080FCAAA:
- lsls r0, r4, 16
- lsrs r0, 16
- bl sub_80FD1C8
- adds r4, 0x1
- cmp r4, r5
- bls _080FCAAA
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080FCAC0: .4byte 0x00000c7f
- thumb_func_end sub_80FCAA4
-
- thumb_func_start sub_80FCAC4
-sub_80FCAC4: @ 80FCAC4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- movs r2, 0
- ldr r0, _080FCB44 @ =gUnknown_03005DF0
- ldrb r0, [r0]
- cmp r2, r0
- bcs _080FCB36
- ldr r0, _080FCB48 @ =gUnknown_03005DEC
- mov r8, r0
- ldr r3, _080FCB4C @ =gUnknown_03005DF8
-_080FCADC:
- ldr r0, _080FCB50 @ =gUnknown_03005DFC
- ldrb r1, [r0]
- adds r1, r2
- ldr r0, _080FCB54 @ =gUnknown_03005E04
- ldrb r0, [r0]
- muls r0, r1
- lsls r0, 1
- mov r4, r8
- ldr r1, [r4]
- adds r1, r0
- ldr r0, _080FCB58 @ =gUnknown_03005DE8
- ldrb r0, [r0]
- lsls r0, 1
- adds r4, r1, r0
- movs r5, 0
- adds r6, r2, 0x1
- ldrb r0, [r3]
- cmp r5, r0
- bcs _080FCB2A
- movs r0, 0x80
- lsls r0, 8
- adds r7, r0, 0
-_080FCB08:
- ldrh r0, [r4]
- ands r0, r7
- cmp r0, 0
- bne _080FCB1C
- adds r0, r4, 0
- str r3, [sp]
- bl sub_80FD39C
- strh r0, [r4]
- ldr r3, [sp]
-_080FCB1C:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- adds r4, 0x2
- ldrb r0, [r3]
- cmp r5, r0
- bcc _080FCB08
-_080FCB2A:
- lsls r0, r6, 24
- lsrs r2, r0, 24
- ldr r0, _080FCB44 @ =gUnknown_03005DF0
- ldrb r0, [r0]
- cmp r2, r0
- bcc _080FCADC
-_080FCB36:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FCB44: .4byte gUnknown_03005DF0
-_080FCB48: .4byte gUnknown_03005DEC
-_080FCB4C: .4byte gUnknown_03005DF8
-_080FCB50: .4byte gUnknown_03005DFC
-_080FCB54: .4byte gUnknown_03005E04
-_080FCB58: .4byte gUnknown_03005DE8
- thumb_func_end sub_80FCAC4
thumb_func_start sub_80FCB5C
sub_80FCB5C: @ 80FCB5C
diff --git a/asm/daycare.s b/asm/daycare.s
deleted file mode 100644
index a0ea9124a..000000000
--- a/asm/daycare.s
+++ /dev/null
@@ -1,2399 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80416A0
-sub_80416A0: @ 80416A0
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r5, r0, 0
- lsls r4, r1, 24
- lsrs r4, 24
- lsls r0, r4, 2
- mov r8, r0
- add r4, r8
- lsls r4, 4
- adds r4, r5, r4
- adds r0, r4, 0
- bl GetLevelFromBoxMonExp
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- movs r0, 0x88
- lsls r0, 1
- adds r5, r0
- add r5, r8
- ldr r1, [r5]
- adds r0, r4, 0
- bl Daycare_GetLevelAfterSteps
- lsls r0, 24
- lsrs r0, 24
- subs r0, r6
- lsls r0, 24
- lsrs r0, 24
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80416A0
-
- thumb_func_start sub_80416E8
-sub_80416E8: @ 80416E8
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r4, r1, 24
- lsrs r4, 24
- adds r1, r4, 0
- bl sub_80416A0
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 4
- adds r6, r0
- ldr r1, _08041720 @ =gStringVar1
- adds r0, r6, 0
- bl GetBoxMonNick
- ldr r0, _08041724 @ =gStringVar2
- adds r1, r5, 0
- movs r2, 0
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- adds r0, r5, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08041720: .4byte gStringVar1
-_08041724: .4byte gStringVar2
- thumb_func_end sub_80416E8
-
- thumb_func_start sub_8041728
-sub_8041728: @ 8041728
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r4, r1, 24
- lsrs r4, 24
- adds r1, r4, 0
- bl sub_80416A0
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 4
- adds r6, r0
- ldr r1, _08041768 @ =gStringVar1
- adds r0, r6, 0
- bl GetBoxMonNick
- movs r0, 0x64
- adds r4, r5, 0
- muls r4, r0
- adds r4, 0x64
- ldr r0, _0804176C @ =gStringVar2
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0x5
- bl ConvertIntToDecimalStringN
- adds r0, r4, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08041768: .4byte gStringVar1
-_0804176C: .4byte gStringVar2
- thumb_func_end sub_8041728
-
- thumb_func_start sub_8041770
-sub_8041770: @ 8041770
- push {lr}
- ldr r0, _08041784 @ =gSaveBlock1 + 0x2F9C
- ldr r1, _08041788 @ =gSpecialVar_0x8004
- ldrb r1, [r1]
- bl sub_8041728
- ldr r1, _0804178C @ =gSpecialVar_0x8005
- strh r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08041784: .4byte gSaveBlock1 + 0x2F9C
-_08041788: .4byte gSpecialVar_0x8004
-_0804178C: .4byte gSpecialVar_0x8005
- thumb_func_end sub_8041770
-
- thumb_func_start sub_8041790
-sub_8041790: @ 8041790
- lsls r0, 16
- lsrs r0, 16
- ldr r2, _080417AC @ =gSaveBlock1
- ldr r1, _080417B0 @ =0x000030ac
- adds r3, r2, r1
- ldr r1, [r3]
- adds r1, r0
- str r1, [r3]
- ldr r1, _080417B4 @ =0x000030b0
- adds r2, r1
- ldr r1, [r2]
- adds r1, r0
- str r1, [r2]
- bx lr
- .align 2, 0
-_080417AC: .4byte gSaveBlock1
-_080417B0: .4byte 0x000030ac
-_080417B4: .4byte 0x000030b0
- thumb_func_end sub_8041790
-
- thumb_func_start sub_80417B8
-sub_80417B8: @ 80417B8
- push {r4,r5,lr}
- ldr r5, _080417D8 @ =gSpecialVar_0x8004
- ldrh r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 4
- ldr r4, _080417DC @ =gSaveBlock1 + 0x2F9C
- adds r0, r4
- movs r1, 0xB
- bl GetBoxMonData
- cmp r0, 0
- bne _080417E0
- movs r0, 0
- b _080417EC
- .align 2, 0
-_080417D8: .4byte gSpecialVar_0x8004
-_080417DC: .4byte gSaveBlock1 + 0x2F9C
-_080417E0:
- ldrb r1, [r5]
- adds r0, r4, 0
- bl sub_80416E8
- lsls r0, 24
- lsrs r0, 24
-_080417EC:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80417B8
-
- thumb_func_start sub_80417F4
-sub_80417F4: @ 80417F4
- push {lr}
- movs r3, 0
- movs r2, 0x7
- adds r1, r0, 0
- adds r1, 0x2B
-_080417FE:
- strb r3, [r1]
- subs r1, 0x1
- subs r2, 0x1
- cmp r2, 0
- bge _080417FE
- adds r2, r0, 0
- adds r2, 0x2C
- movs r3, 0
- adds r1, r0, 0
- adds r1, 0x36
-_08041812:
- strb r3, [r1]
- subs r1, 0x1
- cmp r1, r2
- bge _08041812
- bl ClearMailStruct
- pop {r0}
- bx r0
- thumb_func_end sub_80417F4
-
- thumb_func_start unref_sub_8041824
-unref_sub_8041824: @ 8041824
- push {r4-r6,lr}
- adds r6, r0, 0
- movs r5, 0
-_0804182A:
- lsls r4, r5, 2
- adds r0, r4, r5
- lsls r0, 4
- adds r0, r6, r0
- bl ZeroBoxMonData
- movs r1, 0x88
- lsls r1, 1
- adds r0, r6, r1
- adds r0, r4
- movs r4, 0
- str r4, [r0]
- lsls r0, r5, 3
- subs r0, r5
- lsls r0, 3
- adds r0, 0xA0
- adds r0, r6, r0
- bl sub_80417F4
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x1
- bls _0804182A
- movs r2, 0x8C
- lsls r2, 1
- adds r0, r6, r2
- movs r1, 0
- strh r4, [r0]
- adds r2, 0x2
- adds r0, r6, r2
- strb r1, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end unref_sub_8041824
-
- thumb_func_start sub_8041870
-sub_8041870: @ 8041870
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 16
- lsrs r2, r0, 16
- movs r0, 0
- mov r8, r0
- ldr r0, _0804189C @ =gEvolutionTable
- mov r12, r0
-_08041882:
- movs r7, 0
- movs r6, 0x1
- movs r4, 0x80
- lsls r4, 9
- movs r5, 0x28
- mov r3, r12
- adds r3, 0x28
-_08041890:
- movs r1, 0
- ldrh r0, [r3, 0x4]
- cmp r0, r2
- bne _080418A0
- lsrs r2, r4, 16
- b _080418CC
- .align 2, 0
-_0804189C: .4byte gEvolutionTable
-_080418A0:
- adds r1, 0x1
- cmp r1, 0x4
- bgt _080418B6
- lsls r0, r1, 3
- adds r0, r5
- add r0, r12
- ldrh r0, [r0, 0x4]
- cmp r0, r2
- bne _080418A0
- lsrs r2, r4, 16
- movs r7, 0x1
-_080418B6:
- cmp r7, 0
- bne _080418CC
- movs r0, 0x80
- lsls r0, 9
- adds r4, r0
- adds r5, 0x28
- adds r3, 0x28
- adds r6, 0x1
- ldr r0, _080418EC @ =0x0000019b
- cmp r6, r0
- ble _08041890
-_080418CC:
- movs r0, 0xCE
- lsls r0, 1
- cmp r6, r0
- beq _080418DE
- movs r0, 0x1
- add r8, r0
- mov r0, r8
- cmp r0, 0x4
- ble _08041882
-_080418DE:
- adds r0, r2, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080418EC: .4byte 0x0000019b
- thumb_func_end sub_8041870
-
- thumb_func_start sub_80418F0
-sub_80418F0: @ 80418F0
- push {r4,lr}
- adds r4, r0, 0
- bl Random
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _08041918 @ =0x0000fffe
- bl __umodsi3
- adds r0, 0x1
- movs r1, 0x8C
- lsls r1, 1
- adds r4, r1
- strh r0, [r4]
- movs r0, 0x86
- bl FlagSet
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08041918: .4byte 0x0000fffe
- thumb_func_end sub_80418F0
-
- thumb_func_start sub_804191C
-sub_804191C: @ 804191C
- push {r4,lr}
- adds r4, r0, 0
- bl Random
- movs r2, 0x80
- lsls r2, 8
- adds r1, r2, 0
- movs r2, 0x8C
- lsls r2, 1
- adds r4, r2
- orrs r1, r0
- strh r1, [r4]
- movs r0, 0x86
- bl FlagSet
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_804191C
-
- thumb_func_start sub_8041940
-sub_8041940: @ 8041940
- push {lr}
- ldr r0, _0804194C @ =gSaveBlock1 + 0x2F9C
- bl sub_80418F0
- pop {r0}
- bx r0
- .align 2, 0
-_0804194C: .4byte gSaveBlock1 + 0x2F9C
- thumb_func_end sub_8041940
-
- thumb_func_start sub_8041950
-sub_8041950: @ 8041950
- push {lr}
- ldr r0, _0804195C @ =gSaveBlock1 + 0x2F9C
- bl sub_804191C
- pop {r0}
- bx r0
- .align 2, 0
-_0804195C: .4byte gSaveBlock1 + 0x2F9C
- thumb_func_end sub_8041950
-
- thumb_func_start sub_8041960
-sub_8041960: @ 8041960
- push {r4,lr}
- sub sp, 0x8
- adds r4, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r1, r4, r1
- movs r0, 0xFF
- strb r0, [r1]
- movs r2, 0
-_08041972:
- mov r1, sp
- adds r0, r1, r2
- adds r1, r4, r2
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x5
- ble _08041972
- movs r3, 0
- movs r2, 0
-_08041986:
- mov r1, sp
- adds r0, r1, r2
- ldrb r1, [r0]
- adds r0, r1, 0
- cmp r0, 0xFF
- beq _08041998
- adds r0, r4, r3
- strb r1, [r0]
- adds r3, 0x1
-_08041998:
- adds r2, 0x1
- cmp r2, 0x5
- ble _08041986
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8041960
-
- thumb_func_start sub_80419A8
-sub_80419A8: @ 80419A8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x14
- mov r9, r0
- mov r8, r1
- movs r5, 0
- add r1, sp, 0x4
- add r7, sp, 0xC
- adds r2, r1, 0
-_080419BE:
- adds r0, r2, r5
- strb r5, [r0]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x5
- bls _080419BE
- movs r5, 0
- adds r6, r1, 0
-_080419D0:
- bl Random
- mov r1, sp
- adds r4, r1, r5
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x6
- subs r1, r5
- bl __modsi3
- adds r0, r6, r0
- ldrb r0, [r0]
- strb r0, [r4]
- ldrb r1, [r4]
- adds r0, r6, 0
- bl sub_8041960
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x2
- bls _080419D0
- movs r5, 0
- movs r4, 0x1
-_08041A00:
- bl Random
- adds r1, r7, r5
- lsls r0, 16
- lsrs r0, 16
- ands r0, r4
- strb r0, [r1]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x2
- bls _08041A00
- movs r5, 0
-_08041A1A:
- mov r1, sp
- adds r0, r1, r5
- ldrb r0, [r0]
- cmp r0, 0x5
- bhi _08041B02
- lsls r0, 2
- ldr r1, _08041A30 @ =_08041A34
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08041A30: .4byte _08041A34
- .align 2, 0
-_08041A34:
- .4byte _08041A4C
- .4byte _08041A6C
- .4byte _08041A88
- .4byte _08041AA4
- .4byte _08041AC0
- .4byte _08041AE2
-_08041A4C:
- adds r0, r7, r5
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 4
- add r0, r8
- movs r1, 0x27
- bl GetBoxMonData
- add r2, sp, 0x10
- strb r0, [r2]
- mov r0, r9
- movs r1, 0x27
- bl SetMonData
- b _08041B02
-_08041A6C:
- add r4, sp, 0x10
- adds r0, r7, r5
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 4
- add r0, r8
- movs r1, 0x28
- bl GetBoxMonData
- strb r0, [r4]
- mov r0, r9
- movs r1, 0x28
- b _08041ADA
-_08041A88:
- add r4, sp, 0x10
- adds r0, r7, r5
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 4
- add r0, r8
- movs r1, 0x29
- bl GetBoxMonData
- strb r0, [r4]
- mov r0, r9
- movs r1, 0x29
- b _08041ADA
-_08041AA4:
- add r4, sp, 0x10
- adds r0, r7, r5
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 4
- add r0, r8
- movs r1, 0x2A
- bl GetBoxMonData
- strb r0, [r4]
- mov r0, r9
- movs r1, 0x2A
- b _08041ADA
-_08041AC0:
- add r4, sp, 0x10
- adds r0, r7, r5
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 4
- add r0, r8
- movs r1, 0x2B
- bl GetBoxMonData
- strb r0, [r4]
- mov r0, r9
- movs r1, 0x2B
-_08041ADA:
- adds r2, r4, 0
- bl SetMonData
- b _08041B02
-_08041AE2:
- add r4, sp, 0x10
- adds r0, r7, r5
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 4
- add r0, r8
- movs r1, 0x2C
- bl GetBoxMonData
- strb r0, [r4]
- mov r0, r9
- movs r1, 0x2C
- adds r2, r4, 0
- bl SetMonData
-_08041B02:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x2
- bls _08041A1A
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80419A8
-
- thumb_func_start pokemon_get_eggmoves
-pokemon_get_eggmoves: @ 8041B1C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- mov r8, r1
- movs r6, 0
- movs r4, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r3, r0, 16
- movs r2, 0
- ldr r5, _08041B44 @ =gEggMoves
- ldrh r1, [r5]
- ldr r7, _08041B48 @ =0x00004e20
- adds r0, r3, r7
- cmp r1, r0
- bne _08041B4C
- movs r4, 0x1
- b _08041B6E
- .align 2, 0
-_08041B44: .4byte gEggMoves
-_08041B48: .4byte 0x00004e20
-_08041B4C:
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- ldr r0, _08041BB8 @ =0x00000471
- ldr r5, _08041BBC @ =gEggMoves
- cmp r2, r0
- bhi _08041B6E
- lsls r0, r2, 1
- adds r0, r5
- ldrh r1, [r0]
- ldr r7, _08041BC0 @ =0x00004e20
- adds r0, r3, r7
- cmp r1, r0
- bne _08041B4C
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
-_08041B6E:
- movs r2, 0
- lsls r0, r4, 1
- adds r0, r5
- ldrh r0, [r0]
- ldr r1, _08041BC0 @ =0x00004e20
- cmp r0, r1
- bhi _08041BAA
- adds r7, r5, 0
- adds r3, r1, 0
-_08041B80:
- lsls r1, r2, 1
- add r1, r8
- adds r0, r4, r2
- lsls r0, 1
- adds r0, r7
- ldrh r0, [r0]
- strh r0, [r1]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x9
- bhi _08041BAA
- adds r0, r4, r2
- lsls r0, 1
- adds r0, r5
- ldrh r0, [r0]
- cmp r0, r3
- bls _08041B80
-_08041BAA:
- lsls r0, r6, 24
- lsrs r0, 24
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08041BB8: .4byte 0x00000471
-_08041BBC: .4byte gEggMoves
-_08041BC0: .4byte 0x00004e20
- thumb_func_end pokemon_get_eggmoves
-
- thumb_func_start daycare_build_child_moveset
-daycare_build_child_moveset: @ 8041BC4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- adds r7, r0, 0
- mov r10, r1
- mov r9, r2
- movs r0, 0
- str r0, [sp]
- movs r6, 0
- ldr r5, _08041CC8 @ =gUnknown_03000500
- movs r2, 0
- ldr r4, _08041CCC @ =gUnknown_030004D8
- ldr r3, _08041CD0 @ =gUnknown_030004E0
-_08041BE4:
- lsls r1, r6, 1
- adds r0, r1, r5
- strh r2, [r0]
- adds r0, r1, r4
- strh r2, [r0]
- adds r1, r3
- strh r2, [r1]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x3
- bls _08041BE4
- movs r6, 0
- ldr r2, _08041CD4 @ =gUnknown_030004E8
- movs r1, 0
-_08041C02:
- lsls r0, r6, 1
- adds r0, r2
- strh r1, [r0]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x9
- bls _08041C02
- movs r6, 0
- ldr r2, _08041CD8 @ =gUnknown_03000470
- movs r1, 0
-_08041C18:
- lsls r0, r6, 1
- adds r0, r2
- strh r1, [r0]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x31
- bls _08041C18
- adds r0, r7, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _08041CD8 @ =gUnknown_03000470
- bl GetLevelUpMovesBySpecies
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- movs r6, 0
- ldr r1, _08041CCC @ =gUnknown_030004D8
- mov r8, r1
-_08041C46:
- adds r5, r6, 0
- adds r5, 0xD
- mov r0, r10
- adds r1, r5, 0
- bl GetBoxMonData
- lsls r4, r6, 1
- mov r2, r8
- adds r1, r4, r2
- strh r0, [r1]
- mov r0, r9
- adds r1, r5, 0
- bl GetBoxMonData
- ldr r1, _08041CC8 @ =gUnknown_03000500
- adds r4, r1
- strh r0, [r4]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x3
- bls _08041C46
- ldr r1, _08041CD4 @ =gUnknown_030004E8
- adds r0, r7, 0
- bl pokemon_get_eggmoves
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r6, 0
-_08041C82:
- ldr r0, _08041CCC @ =gUnknown_030004D8
- lsls r1, r6, 1
- adds r2, r1, r0
- ldrh r1, [r2]
- mov r9, r0
- cmp r1, 0
- beq _08041CF8
- movs r5, 0
- cmp r5, r8
- bcs _08041CEA
- adds r4, r2, 0
- ldr r2, _08041CDC @ =0x0000ffff
-_08041C9A:
- ldr r0, _08041CD4 @ =gUnknown_030004E8
- lsls r1, r5, 1
- adds r1, r0
- ldrh r0, [r4]
- ldrh r1, [r1]
- cmp r0, r1
- bne _08041CE0
- adds r1, r0, 0
- adds r0, r7, 0
- str r2, [sp, 0x8]
- bl GiveMoveToMon
- lsls r0, 16
- lsrs r0, 16
- ldr r2, [sp, 0x8]
- cmp r0, r2
- bne _08041CEA
- ldrh r1, [r4]
- adds r0, r7, 0
- bl DeleteFirstMoveAndGiveMoveToMon
- b _08041CEA
- .align 2, 0
-_08041CC8: .4byte gUnknown_03000500
-_08041CCC: .4byte gUnknown_030004D8
-_08041CD0: .4byte gUnknown_030004E0
-_08041CD4: .4byte gUnknown_030004E8
-_08041CD8: .4byte gUnknown_03000470
-_08041CDC: .4byte 0x0000ffff
-_08041CE0:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, r8
- bcc _08041C9A
-_08041CEA:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r3, _08041E14 @ =gUnknown_030004D8
- mov r9, r3
- cmp r6, 0x3
- bls _08041C82
-_08041CF8:
- movs r6, 0
-_08041CFA:
- lsls r0, r6, 1
- mov r2, r9
- adds r1, r0, r2
- ldrh r1, [r1]
- adds r2, r0, 0
- adds r6, 0x1
- mov r8, r6
- cmp r1, 0
- beq _08041D5C
- movs r5, 0
- ldr r0, _08041E14 @ =gUnknown_030004D8
- adds r4, r2, r0
- ldr r6, _08041E18 @ =0x0000ffff
- mov r9, r0
-_08041D16:
- ldr r3, _08041E1C @ =0x00000121
- adds r0, r5, r3
- lsls r0, 16
- lsrs r0, 16
- bl ItemIdToBattleMoveId
- ldrh r1, [r4]
- lsls r0, 16
- lsrs r0, 16
- cmp r1, r0
- bne _08041D52
- lsls r1, r5, 24
- lsrs r1, 24
- adds r0, r7, 0
- bl CanMonLearnTMHM
- cmp r0, 0
- beq _08041D52
- ldrh r1, [r4]
- adds r0, r7, 0
- bl GiveMoveToMon
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r6
- bne _08041D52
- ldrh r1, [r4]
- adds r0, r7, 0
- bl DeleteFirstMoveAndGiveMoveToMon
-_08041D52:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x39
- bls _08041D16
-_08041D5C:
- mov r1, r8
- lsls r0, r1, 16
- lsrs r6, r0, 16
- cmp r6, 0x3
- bls _08041CFA
- movs r6, 0
- mov r2, r9
- ldrh r0, [r2]
- ldr r3, _08041E20 @ =gUnknown_030004E0
- mov r10, r3
- cmp r0, 0
- beq _08041DC6
- mov r4, r9
- ldr r0, _08041E24 @ =gUnknown_03000500
- mov r9, r0
- mov r12, r10
-_08041D7C:
- movs r5, 0
- lsls r2, r6, 1
- adds r6, 0x1
- mov r8, r6
- adds r3, r2, r4
-_08041D86:
- lsls r0, r5, 1
- add r0, r9
- ldrh r2, [r3]
- adds r1, r2, 0
- ldrh r0, [r0]
- cmp r1, r0
- bne _08041DA8
- cmp r1, 0
- beq _08041DA8
- ldr r1, [sp]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp]
- lsls r1, 1
- add r1, r12
- strh r2, [r1]
-_08041DA8:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x3
- bls _08041D86
- mov r1, r8
- lsls r0, r1, 16
- lsrs r6, r0, 16
- cmp r6, 0x3
- bhi _08041DC6
- lsls r0, r6, 1
- adds r0, r4
- ldrh r0, [r0]
- cmp r0, 0
- bne _08041D7C
-_08041DC6:
- movs r6, 0
- mov r2, r10
- ldrh r0, [r2]
- cmp r0, 0
- beq _08041E50
-_08041DD0:
- movs r5, 0
- adds r3, r6, 0x1
- mov r8, r3
- ldr r0, [sp, 0x4]
- cmp r5, r0
- bcs _08041E38
- ldr r2, _08041E18 @ =0x0000ffff
-_08041DDE:
- ldr r1, _08041E28 @ =gUnknown_03000470
- lsls r0, r5, 1
- adds r0, r1
- ldrh r1, [r0]
- cmp r1, 0
- beq _08041E2C
- lsls r0, r6, 1
- mov r3, r10
- adds r4, r0, r3
- ldrh r0, [r4]
- cmp r0, r1
- bne _08041E2C
- adds r1, r0, 0
- adds r0, r7, 0
- str r2, [sp, 0x8]
- bl GiveMoveToMon
- lsls r0, 16
- lsrs r0, 16
- ldr r2, [sp, 0x8]
- cmp r0, r2
- bne _08041E38
- ldrh r1, [r4]
- adds r0, r7, 0
- bl DeleteFirstMoveAndGiveMoveToMon
- b _08041E38
- .align 2, 0
-_08041E14: .4byte gUnknown_030004D8
-_08041E18: .4byte 0x0000ffff
-_08041E1C: .4byte 0x00000121
-_08041E20: .4byte gUnknown_030004E0
-_08041E24: .4byte gUnknown_03000500
-_08041E28: .4byte gUnknown_03000470
-_08041E2C:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r0, [sp, 0x4]
- cmp r5, r0
- bcc _08041DDE
-_08041E38:
- mov r1, r8
- lsls r0, r1, 16
- lsrs r6, r0, 16
- cmp r6, 0x3
- bhi _08041E50
- ldr r0, _08041E60 @ =gUnknown_030004E0
- lsls r1, r6, 1
- adds r1, r0
- ldrh r1, [r1]
- mov r10, r0
- cmp r1, 0
- bne _08041DD0
-_08041E50:
- 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
-_08041E60: .4byte gUnknown_030004E0
- thumb_func_end daycare_build_child_moveset
-
- thumb_func_start sub_8041E64
-sub_8041E64: @ 8041E64
- adds r3, r0, 0
- movs r1, 0x8C
- lsls r1, 1
- adds r0, r3, r1
- movs r2, 0
- movs r1, 0
- strh r1, [r0]
- movs r1, 0x8D
- lsls r1, 1
- adds r0, r3, r1
- strb r2, [r0]
- bx lr
- thumb_func_end sub_8041E64
-
- thumb_func_start sub_8041E7C
-sub_8041E7C: @ 8041E7C
- push {lr}
- ldr r0, _08041E88 @ =gSaveBlock1 + 0x2F9C
- bl sub_8041E64
- pop {r0}
- bx r0
- .align 2, 0
-_08041E88: .4byte gSaveBlock1 + 0x2F9C
- thumb_func_end sub_8041E7C
-
- thumb_func_start incense_effects
-incense_effects: @ 8041E8C
- push {r4-r7,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrh r1, [r4]
- movs r7, 0xB4
- lsls r7, 1
- cmp r1, r7
- beq _08041EA4
- movs r0, 0xAF
- lsls r0, 1
- cmp r1, r0
- bne _08041EE6
-_08041EA4:
- adds r0, r5, 0
- movs r1, 0xC
- bl GetBoxMonData
- lsls r0, 16
- lsrs r6, r0, 16
- adds r0, r5, 0
- adds r0, 0x50
- movs r1, 0xC
- bl GetBoxMonData
- lsls r0, 16
- lsrs r2, r0, 16
- ldrh r0, [r4]
- cmp r0, r7
- bne _08041ED0
- cmp r6, 0xDD
- beq _08041ED0
- cmp r2, 0xDD
- beq _08041ED0
- movs r0, 0xCA
- strh r0, [r4]
-_08041ED0:
- ldrh r1, [r4]
- movs r0, 0xAF
- lsls r0, 1
- cmp r1, r0
- bne _08041EE6
- cmp r6, 0xDC
- beq _08041EE6
- cmp r2, 0xDC
- beq _08041EE6
- movs r0, 0xB7
- strh r0, [r4]
-_08041EE6:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end incense_effects
-
- thumb_func_start sub_8041EEC
-sub_8041EEC: @ 8041EEC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- mov r8, r0
- adds r6, r1, 0
- movs r4, 0
- movs r7, 0x1
-_08041EFC:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 4
- mov r1, r8
- adds r5, r1, r0
- adds r0, r5, 0
- movs r1, 0xB
- bl GetBoxMonData
- lsls r1, r4, 1
- add r1, sp
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x84
- bne _08041F26
- adds r0, r4, 0
- eors r0, r7
- strb r0, [r6]
- strb r4, [r6, 0x1]
- b _08041F3C
-_08041F26:
- adds r0, r5, 0
- bl GetBoxMonGender
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFE
- bne _08041F3C
- strb r4, [r6]
- adds r0, r4, 0
- eors r0, r7
- strb r0, [r6, 0x1]
-_08041F3C:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1
- bls _08041EFC
- ldrb r0, [r6]
- lsls r0, 1
- add r0, sp
- ldrh r0, [r0]
- bl sub_8041870
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1D
- bne _08041F6E
- movs r0, 0x8C
- lsls r0, 1
- add r0, r8
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- beq _08041F6E
- movs r4, 0x20
-_08041F6E:
- ldr r0, _08041FC0 @ =0x00000183
- cmp r4, r0
- bne _08041F88
- subs r0, 0x6B
- add r0, r8
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- beq _08041F88
- movs r4, 0xC1
- lsls r4, 1
-_08041F88:
- ldrb r0, [r6, 0x1]
- lsls r0, 1
- add r0, sp
- ldrh r0, [r0]
- cmp r0, 0x84
- bne _08041FB2
- ldrb r1, [r6]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 4
- add r0, r8
- bl GetBoxMonGender
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFE
- beq _08041FB2
- ldrb r1, [r6, 0x1]
- ldrb r0, [r6]
- strb r0, [r6, 0x1]
- strb r1, [r6]
-_08041FB2:
- adds r0, r4, 0
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08041FC0: .4byte 0x00000183
- thumb_func_end sub_8041EEC
-
- thumb_func_start sub_8041FC4
-sub_8041FC4: @ 8041FC4
- push {r4-r6,lr}
- sub sp, 0x6C
- adds r5, r0, 0
- add r6, sp, 0x64
- adds r1, r6, 0
- bl sub_8041EEC
- add r4, sp, 0x68
- strh r0, [r4]
- adds r0, r4, 0
- adds r1, r5, 0
- bl incense_effects
- ldrh r1, [r4]
- mov r0, sp
- adds r2, r5, 0
- bl sub_80420FC
- mov r0, sp
- adds r1, r5, 0
- bl sub_80419A8
- ldrb r0, [r6, 0x1]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 4
- adds r1, r5, r1
- ldrb r0, [r6]
- lsls r2, r0, 2
- adds r2, r0
- lsls r2, 4
- adds r2, r5, r2
- mov r0, sp
- bl daycare_build_child_moveset
- mov r2, sp
- adds r2, 0x6A
- movs r0, 0x1
- strb r0, [r2]
- mov r0, sp
- movs r1, 0x2D
- bl SetMonData
- ldr r0, _08042040 @ =gPlayerParty
- movs r1, 0xFA
- lsls r1, 1
- adds r0, r1
- mov r1, sp
- movs r2, 0x64
- bl memcpy
- bl party_compaction
- bl CalculatePlayerPartyCount
- adds r0, r5, 0
- bl sub_8041E64
- add sp, 0x6C
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08042040: .4byte gPlayerParty
- thumb_func_end sub_8041FC4
-
- thumb_func_start sub_8042044
-sub_8042044: @ 8042044
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x18
- adds r7, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- lsls r5, 16
- lsrs r5, 16
- lsls r6, 24
- lsrs r6, 24
- movs r4, 0
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- str r4, [sp, 0xC]
- adds r1, r5, 0
- movs r2, 0x5
- movs r3, 0x20
- bl CreateMon
- movs r0, 0x12
- add r0, sp
- mov r8, r0
- strb r4, [r0]
- movs r1, 0x4
- add r0, sp, 0x10
- strh r1, [r0]
- mov r4, sp
- adds r4, 0x13
- movs r0, 0x1
- mov r9, r0
- mov r0, r9
- strb r0, [r4]
- adds r0, r7, 0
- movs r1, 0x26
- add r2, sp, 0x10
- bl SetMonData
- ldr r2, _080420F4 @ =gUnknown_08209AD4
- adds r0, r7, 0
- movs r1, 0x2
- bl SetMonData
- lsls r2, r5, 3
- subs r2, r5
- lsls r2, 2
- ldr r0, _080420F8 @ =gBaseStats + 0x11 @ egg cycles offset
- adds r2, r0
- adds r0, r7, 0
- movs r1, 0x20
- bl SetMonData
- adds r0, r7, 0
- movs r1, 0x24
- mov r2, r8
- bl SetMonData
- adds r0, r7, 0
- movs r1, 0x3
- adds r2, r4, 0
- bl SetMonData
- cmp r6, 0
- beq _080420D6
- add r2, sp, 0x14
- movs r0, 0xFD
- strb r0, [r2]
- adds r0, r7, 0
- movs r1, 0x23
- bl SetMonData
-_080420D6:
- mov r2, sp
- adds r2, 0x15
- mov r0, r9
- strb r0, [r2]
- adds r0, r7, 0
- movs r1, 0x2D
- bl SetMonData
- add sp, 0x18
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080420F4: .4byte gUnknown_08209AD4
-_080420F8: .4byte gBaseStats + 0x11 @ egg cycles offset
- thumb_func_end sub_8042044
-
- thumb_func_start sub_80420FC
-sub_80420FC: @ 80420FC
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x14
- adds r6, r0, 0
- adds r5, r1, 0
- adds r4, r2, 0
- lsls r5, 16
- lsrs r5, 16
- bl Random
- movs r1, 0x8C
- lsls r1, 1
- adds r4, r1
- ldrh r1, [r4]
- lsls r0, 16
- orrs r1, r0
- movs r0, 0x1
- mov r8, r0
- str r0, [sp]
- str r1, [sp, 0x4]
- movs r4, 0
- str r4, [sp, 0x8]
- str r4, [sp, 0xC]
- adds r0, r6, 0
- adds r1, r5, 0
- movs r2, 0x5
- movs r3, 0x20
- bl CreateMon
- movs r1, 0x12
- add r1, sp
- mov r9, r1
- strb r4, [r1]
- movs r1, 0x4
- add r0, sp, 0x10
- strh r1, [r0]
- mov r4, sp
- adds r4, 0x13
- mov r0, r8
- strb r0, [r4]
- adds r0, r6, 0
- movs r1, 0x26
- add r2, sp, 0x10
- bl SetMonData
- ldr r2, _08042198 @ =gUnknown_08209AD4
- adds r0, r6, 0
- movs r1, 0x2
- bl SetMonData
- lsls r2, r5, 3
- subs r2, r5
- lsls r2, 2
- ldr r0, _0804219C @ =gBaseStats + 0x11 @ egg cycles offset
- adds r2, r0
- adds r0, r6, 0
- movs r1, 0x20
- bl SetMonData
- adds r0, r6, 0
- movs r1, 0x24
- mov r2, r9
- bl SetMonData
- adds r0, r6, 0
- movs r1, 0x3
- adds r2, r4, 0
- bl SetMonData
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08042198: .4byte gUnknown_08209AD4
-_0804219C: .4byte gBaseStats + 0x11 @ egg cycles offset
- thumb_func_end sub_80420FC
-
- thumb_func_start sp0B8_daycare
-sp0B8_daycare: @ 80421A0
- push {lr}
- ldr r0, _080421AC @ =gSaveBlock1 + 0x2F9C
- bl sub_8041FC4
- pop {r0}
- bx r0
- .align 2, 0
-_080421AC: .4byte gSaveBlock1 + 0x2F9C
- thumb_func_end sp0B8_daycare
-
- thumb_func_start sub_80421B0
-sub_80421B0: @ 80421B0
- push {r4-r7,lr}
- sub sp, 0x8
- adds r7, r0, 0
- movs r2, 0
- movs r6, 0
- adds r5, r7, 0
-_080421BC:
- lsls r4, r6, 2
- adds r0, r5, 0
- movs r1, 0x5
- str r2, [sp, 0x4]
- bl GetBoxMonData
- ldr r2, [sp, 0x4]
- cmp r0, 0
- beq _080421DE
- movs r0, 0x88
- lsls r0, 1
- adds r1, r7, r0
- adds r1, r4
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- adds r2, 0x1
-_080421DE:
- adds r5, 0x50
- adds r6, 0x1
- cmp r6, 0x1
- bls _080421BC
- movs r1, 0x8C
- lsls r1, 1
- adds r0, r7, r1
- ldrh r0, [r0]
- cmp r0, 0
- bne _08042226
- cmp r2, 0x2
- bne _08042226
- subs r1, 0x4
- adds r0, r7, r1
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _08042226
- adds r0, r7, 0
- bl daycare_relationship_score
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- muls r0, r1
- ldr r1, _08042240 @ =0x0000ffff
- bl __udivsi3
- cmp r4, r0
- bls _08042226
- bl sub_8041940
-_08042226:
- movs r0, 0x8D
- lsls r0, 1
- adds r1, r7, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _08042290
- movs r6, 0
- b _08042288
- .align 2, 0
-_08042240: .4byte 0x0000ffff
-_08042244:
- movs r0, 0x64
- adds r1, r6, 0
- muls r1, r0
- ldr r0, _08042270 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- beq _08042286
- adds r0, r4, 0
- movs r1, 0x20
- bl GetMonData
- str r0, [sp]
- cmp r0, 0
- bne _08042278
- ldr r0, _08042274 @ =gSpecialVar_0x8004
- strh r6, [r0]
- movs r0, 0x1
- b _08042292
- .align 2, 0
-_08042270: .4byte gPlayerParty
-_08042274: .4byte gSpecialVar_0x8004
-_08042278:
- subs r0, 0x1
- str r0, [sp]
- adds r0, r4, 0
- movs r1, 0x20
- mov r2, sp
- bl SetMonData
-_08042286:
- adds r6, 0x1
-_08042288:
- ldr r0, _0804229C @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r6, r0
- bcc _08042244
-_08042290:
- movs r0, 0
-_08042292:
- add sp, 0x8
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0804229C: .4byte gPlayerPartyCount
- thumb_func_end sub_80421B0
-
- thumb_func_start sub_80422A0
-sub_80422A0: @ 80422A0
- push {lr}
- ldr r0, _080422B0 @ =gSaveBlock1 + 0x2F9C
- bl sub_80421B0
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_080422B0: .4byte gSaveBlock1 + 0x2F9C
- thumb_func_end sub_80422A0
-
- thumb_func_start sub_80422B4
-sub_80422B4: @ 80422B4
- movs r1, 0x8C
- lsls r1, 1
- adds r0, r1
- ldrh r1, [r0]
- negs r0, r1
- orrs r0, r1
- lsrs r0, 31
- bx lr
- thumb_func_end sub_80422B4
-
- thumb_func_start sub_80422C4
-sub_80422C4: @ 80422C4
- push {r4-r6,lr}
- adds r6, r0, 0
- movs r1, 0xB
- bl GetBoxMonData
- cmp r0, 0
- beq _080422FC
- ldr r1, _0804231C @ =gStringVar1
- adds r0, r6, 0
- bl GetBoxMonNick
- adds r0, r6, 0
- movs r1, 0x3
- bl GetBoxMonData
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r5, _08042320 @ =gStringVar3
- adds r0, r6, 0
- movs r1, 0x7
- adds r2, r5, 0
- bl GetBoxMonData
- adds r0, r5, 0
- adds r1, r4, 0
- bl ConvertInternationalString
-_080422FC:
- adds r4, r6, 0
- adds r4, 0x50
- adds r0, r4, 0
- movs r1, 0xB
- bl GetBoxMonData
- cmp r0, 0
- beq _08042314
- ldr r1, _08042324 @ =gStringVar2
- adds r0, r4, 0
- bl GetBoxMonNick
-_08042314:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804231C: .4byte gStringVar1
-_08042320: .4byte gStringVar3
-_08042324: .4byte gStringVar2
- thumb_func_end sub_80422C4
-
- thumb_func_start sub_8042328
-sub_8042328: @ 8042328
- push {r4-r6,lr}
- ldr r6, _08042354 @ =gLastFieldPokeMenuOpened
- ldrb r0, [r6]
- movs r5, 0x64
- muls r0, r5
- ldr r4, _08042358 @ =gPlayerParty
- adds r0, r4
- ldr r1, _0804235C @ =gStringVar1
- bl GetBoxMonNick
- ldrb r0, [r6]
- muls r0, r5
- adds r0, r4
- movs r1, 0xB
- bl GetBoxMonData
- lsls r0, 16
- lsrs r0, 16
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08042354: .4byte gLastFieldPokeMenuOpened
-_08042358: .4byte gPlayerParty
-_0804235C: .4byte gStringVar1
- thumb_func_end sub_8042328
-
- thumb_func_start sp0B5_daycare
-sp0B5_daycare: @ 8042360
- push {lr}
- ldr r0, _0804236C @ =gSaveBlock1 + 0x2F9C
- bl sub_80422C4
- pop {r0}
- bx r0
- .align 2, 0
-_0804236C: .4byte gSaveBlock1 + 0x2F9C
- thumb_func_end sp0B5_daycare
-
- thumb_func_start sp0B6_daycare
-sp0B6_daycare: @ 8042370
- push {r4,lr}
- ldr r4, _08042384 @ =gSaveBlock1 + 0x2F9C
- adds r0, r4, 0
- bl sub_80422B4
- lsls r0, 24
- cmp r0, 0
- beq _08042388
- movs r0, 0x1
- b _080423A0
- .align 2, 0
-_08042384: .4byte gSaveBlock1 + 0x2F9C
-_08042388:
- adds r0, r4, 0
- bl Daycare_CountPokemon
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _0804239A
- movs r0, 0
- b _080423A0
-_0804239A:
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
-_080423A0:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sp0B6_daycare
-
- thumb_func_start sub_80423A8
-sub_80423A8: @ 80423A8
- push {r4-r6,lr}
- adds r5, r1, 0
- movs r4, 0
- adds r1, r0, 0
-_080423B0:
- movs r3, 0
- ldrh r0, [r1]
- adds r2, r5, 0
-_080423B6:
- ldrh r6, [r2]
- cmp r0, r6
- bne _080423C0
- movs r0, 0x1
- b _080423D2
-_080423C0:
- adds r2, 0x2
- adds r3, 0x1
- cmp r3, 0x1
- ble _080423B6
- adds r1, 0x2
- adds r4, 0x1
- cmp r4, 0x1
- ble _080423B0
- movs r0, 0
-_080423D2:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80423A8
-
- thumb_func_start daycare_relationship_score
-daycare_relationship_score: @ 80423D8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x2C
- movs r1, 0
- mov r8, r1
- mov r2, sp
- adds r2, 0x8
- str r2, [sp, 0x1C]
- add r1, sp, 0xC
- mov r10, r1
- adds r2, 0xC
- str r2, [sp, 0x20]
- mov r1, sp
- adds r1, 0x2
- ldr r2, _08042488 @ =gBaseStats
- mov r9, r2
- ldr r5, [sp, 0x1C]
- adds r7, r1, 0
- mov r6, sp
- ldr r1, [sp, 0x20]
- str r1, [sp, 0x24]
- mov r2, r10
- str r2, [sp, 0x28]
- adds r4, r0, 0
-_0804240E:
- adds r0, r4, 0
- movs r1, 0xB
- bl GetBoxMonData
- strh r0, [r5]
- adds r0, r4, 0
- movs r1, 0x1
- bl GetBoxMonData
- ldr r1, [sp, 0x28]
- stm r1!, {r0}
- str r1, [sp, 0x28]
- adds r0, r4, 0
- movs r1, 0
- bl GetBoxMonData
- adds r1, r0, 0
- ldrh r0, [r5]
- bl GetGenderFromSpeciesAndPersonality
- lsls r0, 24
- lsrs r0, 24
- ldr r2, [sp, 0x24]
- stm r2!, {r0}
- str r2, [sp, 0x24]
- ldrh r1, [r5]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r9
- ldrb r0, [r0, 0x14]
- strh r0, [r6]
- ldrh r1, [r5]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r9
- ldrb r0, [r0, 0x15]
- strh r0, [r7]
- adds r5, 0x2
- adds r7, 0x4
- adds r6, 0x4
- adds r4, 0x50
- movs r0, 0x1
- add r8, r0
- mov r1, r8
- cmp r1, 0x1
- bls _0804240E
- mov r0, sp
- ldrh r1, [r0]
- cmp r1, 0xF
- beq _08042484
- ldrh r0, [r0, 0x4]
- cmp r0, 0xF
- beq _08042484
- cmp r1, 0xD
- bne _0804248C
- cmp r0, 0xD
- bne _08042490
-_08042484:
- movs r0, 0
- b _080424E4
- .align 2, 0
-_08042488: .4byte gBaseStats
-_0804248C:
- cmp r0, 0xD
- bne _0804249C
-_08042490:
- ldr r1, [sp, 0xC]
- mov r2, r10
- ldr r0, [r2, 0x4]
- cmp r1, r0
- beq _080424DE
- b _080424E2
-_0804249C:
- ldr r0, [sp, 0x14]
- ldr r2, [sp, 0x20]
- ldr r1, [r2, 0x4]
- cmp r0, r1
- beq _08042484
- cmp r0, 0xFF
- beq _08042484
- cmp r1, 0xFF
- beq _08042484
- add r1, sp, 0x4
- mov r0, sp
- bl sub_80423A8
- lsls r0, 24
- cmp r0, 0
- beq _08042484
- ldr r0, [sp, 0x1C]
- ldrh r1, [r0, 0x2]
- ldrh r0, [r0]
- cmp r0, r1
- bne _080424D4
- ldr r1, [sp, 0xC]
- mov r2, r10
- ldr r0, [r2, 0x4]
- cmp r1, r0
- beq _080424E2
- movs r0, 0x46
- b _080424E4
-_080424D4:
- ldr r1, [sp, 0xC]
- mov r2, r10
- ldr r0, [r2, 0x4]
- cmp r1, r0
- bne _080424E2
-_080424DE:
- movs r0, 0x14
- b _080424E4
-_080424E2:
- movs r0, 0x32
-_080424E4:
- add sp, 0x2C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end daycare_relationship_score
-
- thumb_func_start daycare_relationship_score_from_savegame
-daycare_relationship_score_from_savegame: @ 80424F4
- push {lr}
- ldr r0, _08042504 @ =gSaveBlock1 + 0x2F9C
- bl daycare_relationship_score
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_08042504: .4byte gSaveBlock1 + 0x2F9C
- thumb_func_end daycare_relationship_score_from_savegame
-
- thumb_func_start sp0B9_daycare_relationship_comment
-sp0B9_daycare_relationship_comment: @ 8042508
- push {lr}
- bl daycare_relationship_score_from_savegame
- lsls r0, 24
- lsrs r0, 24
- adds r2, r0, 0
- movs r1, 0
- cmp r0, 0
- bne _0804251C
- movs r1, 0x3
-_0804251C:
- cmp r0, 0x14
- bne _08042522
- movs r1, 0x2
-_08042522:
- cmp r0, 0x32
- bne _08042528
- movs r1, 0x1
-_08042528:
- cmp r2, 0x46
- bne _0804252E
- movs r1, 0
-_0804252E:
- ldr r0, _08042540 @ =gStringVar4
- ldr r2, _08042544 @ =gUnknown_08209AC4
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- bl StringCopy
- pop {r0}
- bx r0
- .align 2, 0
-_08042540: .4byte gStringVar4
-_08042544: .4byte gUnknown_08209AC4
- thumb_func_end sp0B9_daycare_relationship_comment
-
- thumb_func_start NameHasGenderSymbol
-NameHasGenderSymbol: @ 8042548
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r1, 24
- lsrs r5, r1, 24
- mov r2, sp
- mov r1, sp
- movs r0, 0
- strb r0, [r1, 0x1]
- strb r0, [r2]
- movs r3, 0
- ldrb r0, [r4]
- cmp r0, 0xFF
- beq _0804258C
-_08042564:
- adds r1, r4, r3
- ldrb r0, [r1]
- cmp r0, 0xB5
- bne _08042572
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
-_08042572:
- ldrb r0, [r1]
- cmp r0, 0xB6
- bne _0804257E
- ldrb r0, [r2, 0x1]
- adds r0, 0x1
- strb r0, [r2, 0x1]
-_0804257E:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- adds r0, r4, r3
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _08042564
-_0804258C:
- cmp r5, 0
- bne _080425A0
- mov r0, sp
- ldrb r0, [r0]
- cmp r0, 0
- beq _080425A0
- mov r0, sp
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- beq _080425B4
-_080425A0:
- cmp r5, 0xFE
- bne _080425B8
- mov r0, sp
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- beq _080425B8
- mov r0, sp
- ldrb r0, [r0]
- cmp r0, 0
- bne _080425B8
-_080425B4:
- movs r0, 0x1
- b _080425BA
-_080425B8:
- movs r0, 0
-_080425BA:
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end NameHasGenderSymbol
-
- thumb_func_start AppendGenderSymbol
-AppendGenderSymbol: @ 80425C4
- push {r4,lr}
- adds r4, r0, 0
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0
- bne _080425E4
- movs r1, 0
- bl NameHasGenderSymbol
- lsls r0, 24
- cmp r0, 0
- bne _08042600
- ldr r1, _080425E0 @ =gOtherText_MaleSymbol3
- b _08042602
- .align 2, 0
-_080425E0: .4byte gOtherText_MaleSymbol3
-_080425E4:
- cmp r1, 0xFE
- bne _08042600
- adds r0, r4, 0
- movs r1, 0xFE
- bl NameHasGenderSymbol
- lsls r0, 24
- cmp r0, 0
- bne _08042600
- ldr r1, _080425FC @ =gOtherText_FemaleSymbol3
- b _08042602
- .align 2, 0
-_080425FC: .4byte gOtherText_FemaleSymbol3
-_08042600:
- ldr r1, _08042610 @ =gOtherText_GenderlessSymbol
-_08042602:
- adds r0, r4, 0
- bl StringAppend
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08042610: .4byte gOtherText_GenderlessSymbol
- thumb_func_end AppendGenderSymbol
-
- thumb_func_start MonAppendGenderSymbol
-MonAppendGenderSymbol: @ 8042614
- push {r4,lr}
- adds r4, r0, 0
- adds r0, r1, 0
- bl GetBoxMonGender
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl AppendGenderSymbol
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end MonAppendGenderSymbol
-
- thumb_func_start DaycareLevelMenuGetText
-DaycareLevelMenuGetText: @ 8042630
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x28
- mov r8, r0
- adds r7, r1, 0
- movs r0, 0xFF
- strb r0, [r7]
- movs r6, 0
- add r0, sp, 0x14
- mov r9, r0
-_08042648:
- lsls r0, r6, 2
- adds r0, r6
- lsls r4, r0, 4
- add r4, r8
- lsls r0, 2
- mov r1, sp
- adds r5, r1, r0
- adds r0, r4, 0
- adds r1, r5, 0
- bl GetBoxMonNick
- adds r0, r5, 0
- adds r1, r4, 0
- bl MonAppendGenderSymbol
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x1
- bls _08042648
- adds r0, r7, 0
- mov r1, sp
- bl StringCopy
- ldr r4, _080426A8 @ =gOtherText_NewLine2
- adds r0, r7, 0
- adds r1, r4, 0
- bl StringAppend
- adds r0, r7, 0
- mov r1, r9
- bl StringAppend
- adds r0, r7, 0
- adds r1, r4, 0
- bl StringAppend
- ldr r1, _080426AC @ =gOtherText_CancelAndLv
- adds r0, r7, 0
- bl StringAppend
- add sp, 0x28
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080426A8: .4byte gOtherText_NewLine2
-_080426AC: .4byte gOtherText_CancelAndLv
- thumb_func_end DaycareLevelMenuGetText
-
- thumb_func_start DaycareLevelMenuGetLevelText
-DaycareLevelMenuGetLevelText: @ 80426B0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- adds r4, r1, 0
- movs r0, 0xFF
- strb r0, [r4]
- movs r5, 0
- movs r0, 0xFC
- mov r8, r0
- movs r7, 0x14
-_080426C6:
- lsls r2, r5, 2
- adds r0, r2, r5
- lsls r0, 4
- adds r0, r6, r0
- movs r3, 0x88
- lsls r3, 1
- adds r1, r6, r3
- adds r1, r2
- ldr r1, [r1]
- bl Daycare_GetLevelAfterSteps
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x34
- strb r0, [r4]
- mov r0, r8
- strb r0, [r4, 0x1]
- strb r7, [r4, 0x2]
- movs r0, 0x6
- strb r0, [r4, 0x3]
- adds r0, r4, 0x4
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r4, r0, 0
- mov r3, r8
- strb r3, [r4]
- strb r7, [r4, 0x1]
- movs r0, 0
- strb r0, [r4, 0x2]
- adds r0, r4, 0x3
- ldr r1, _08042728 @ =gOtherText_NewLine2
- bl StringCopy
- adds r4, r0, 0
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x1
- bls _080426C6
- movs r0, 0xFF
- strb r0, [r4]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08042728: .4byte gOtherText_NewLine2
- thumb_func_end DaycareLevelMenuGetLevelText
-
- thumb_func_start DaycareLevelMenuProcessKeyInput
-DaycareLevelMenuProcessKeyInput: @ 804272C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- ldr r0, _08042760 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08042768
- ldr r0, _08042764 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldrh r2, [r1, 0x8]
- movs r3, 0x8
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _08042816
- subs r0, r2, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0x1
- negs r0, r0
- b _0804278A
- .align 2, 0
-_08042760: .4byte gMain
-_08042764: .4byte gTasks
-_08042768:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0804279C
- ldr r0, _08042798 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldrh r2, [r1, 0x8]
- movs r3, 0x8
- ldrsh r0, [r1, r3]
- cmp r0, 0x2
- beq _08042816
- adds r0, r2, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0x1
-_0804278A:
- bl MoveMenuCursor
- movs r0, 0x5
- bl PlaySE
- b _08042816
- .align 2, 0
-_08042798: .4byte gTasks
-_0804279C:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080427E8
- bl HandleDestroyMenuCursors
- movs r0, 0x5
- bl PlaySE
- ldr r3, _080427DC @ =gLastFieldPokeMenuOpened
- ldr r2, _080427E0 @ =gScriptResult
- ldr r1, _080427E4 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldrh r0, [r0, 0x8]
- strh r0, [r2]
- strb r0, [r3]
- adds r0, r4, 0
- bl DestroyTask
- movs r0, 0xF
- movs r1, 0x6
- movs r2, 0x1D
- movs r3, 0xD
- bl MenuZeroFillWindowRect
- bl EnableBothScriptContexts
- b _08042816
- .align 2, 0
-_080427DC: .4byte gLastFieldPokeMenuOpened
-_080427E0: .4byte gScriptResult
-_080427E4: .4byte gTasks
-_080427E8:
- movs r4, 0x2
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- beq _08042816
- bl HandleDestroyMenuCursors
- ldr r0, _0804281C @ =gLastFieldPokeMenuOpened
- ldr r1, _08042820 @ =gScriptResult
- strh r4, [r1]
- movs r1, 0x2
- strb r1, [r0]
- adds r0, r5, 0
- bl DestroyTask
- movs r0, 0xF
- movs r1, 0x6
- movs r2, 0x1D
- movs r3, 0xD
- bl MenuZeroFillWindowRect
- bl EnableBothScriptContexts
-_08042816:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0804281C: .4byte gLastFieldPokeMenuOpened
-_08042820: .4byte gScriptResult
- thumb_func_end DaycareLevelMenuProcessKeyInput
-
- thumb_func_start ShowDaycareLevelMenu
-ShowDaycareLevelMenu: @ 8042824
- push {r4,lr}
- sub sp, 0x6C
- movs r0, 0xF
- movs r1, 0x6
- movs r2, 0x1D
- movs r3, 0xD
- bl MenuDrawTextWindow
- ldr r4, _08042880 @ =gSaveBlock1 + 0x2F9C
- adds r0, r4, 0
- add r1, sp, 0x8
- bl DaycareLevelMenuGetText
- add r0, sp, 0x8
- movs r1, 0x10
- movs r2, 0x7
- bl MenuPrint
- adds r0, r4, 0
- add r1, sp, 0x8
- bl DaycareLevelMenuGetLevelText
- add r0, sp, 0x8
- movs r1, 0xCE
- movs r2, 0x38
- movs r3, 0x1
- bl MenuPrint_PixelCoords
- movs r0, 0
- str r0, [sp]
- movs r0, 0xD
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0x10
- movs r2, 0x7
- movs r3, 0x3
- bl InitMenu
- ldr r0, _08042884 @ =DaycareLevelMenuProcessKeyInput
- movs r1, 0x3
- bl CreateTask
- add sp, 0x6C
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08042880: .4byte gSaveBlock1 + 0x2F9C
-_08042884: .4byte DaycareLevelMenuProcessKeyInput
- thumb_func_end ShowDaycareLevelMenu
-
- thumb_func_start ChooseSendDaycareMon
-ChooseSendDaycareMon: @ 8042888
- push {lr}
- movs r0, 0x6
- movs r1, 0
- bl OpenPartyMenu
- ldr r1, _0804289C @ =gMain
- ldr r0, _080428A0 @ =c2_exit_to_overworld_2_switch
- str r0, [r1, 0x8]
- pop {r0}
- bx r0
- .align 2, 0
-_0804289C: .4byte gMain
-_080428A0: .4byte c2_exit_to_overworld_2_switch
- thumb_func_end ChooseSendDaycareMon
-
- .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 7365f4da6..000000000
--- a/asm/egg_hatch.s
+++ /dev/null
@@ -1,1630 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start AddHatchedMonToParty
-AddHatchedMonToParty: @ 80429EC
- push {r4-r6,lr}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- adds r5, r0, 0
- muls r5, r1
- ldr r0, _08042A9C @ =gPlayerParty
- adds r5, r0
- ldr r1, _08042AA0 @ =gEnemyParty
- adds r0, r5, 0
- bl CreatedHatchedMon
- add r2, sp, 0xC
- movs r6, 0
- strb r6, [r2]
- adds r0, r5, 0
- movs r1, 0x2D
- bl SetMonData
- adds r0, r5, 0
- movs r1, 0xB
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- mov r0, sp
- adds r1, r4, 0
- bl GetSpeciesName
- adds r0, r5, 0
- movs r1, 0x2
- mov r2, sp
- bl SetMonData
- adds r0, r4, 0
- bl SpeciesToNationalPokedexNum
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r4, 0
- movs r1, 0x2
- bl GetNationalPokedexFlag
- adds r0, r4, 0
- movs r1, 0x3
- bl GetNationalPokedexFlag
- ldr r1, _08042AA4 @ =gStringVar1
- adds r0, r5, 0
- bl GetMonNick
- mov r2, sp
- adds r2, 0xE
- movs r0, 0x4
- strh r0, [r2]
- adds r0, r5, 0
- movs r1, 0x26
- bl SetMonData
- add r2, sp, 0x10
- strh r6, [r2]
- adds r0, r5, 0
- movs r1, 0x24
- bl SetMonData
- bl sav1_map_get_name
- mov r2, sp
- adds r2, 0x12
- strb r0, [r2]
- adds r0, r5, 0
- movs r1, 0x23
- bl SetMonData
- adds r0, r5, 0
- bl MonRestorePP
- adds r0, r5, 0
- bl CalculateMonStats
- add sp, 0x14
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08042A9C: .4byte gPlayerParty
-_08042AA0: .4byte gEnemyParty
-_08042AA4: .4byte gStringVar1
- thumb_func_end AddHatchedMonToParty
-
- thumb_func_start ScriptHatchMon
-ScriptHatchMon: @ 8042AA8
- push {lr}
- ldr r0, _08042AB8 @ =gSpecialVar_0x8004
- ldrb r0, [r0]
- bl AddHatchedMonToParty
- pop {r0}
- bx r0
- .align 2, 0
-_08042AB8: .4byte gSpecialVar_0x8004
- thumb_func_end ScriptHatchMon
-
- thumb_func_start sub_8042ABC
-sub_8042ABC: @ 8042ABC
- push {r4-r6,lr}
- sub sp, 0x20
- adds r5, r0, 0
- lsls r4, r1, 24
- lsrs r4, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 4
- adds r0, r5, r0
- mov r1, sp
- bl GetBoxMonNick
- lsls r0, r4, 3
- subs r0, r4
- lsls r1, r0, 3
- adds r0, r5, r1
- adds r0, 0xC0
- ldrh r0, [r0]
- cmp r0, 0
- beq _08042B40
- adds r0, r1, 0
- adds r0, 0xA0
- adds r5, r0
- adds r6, r5, 0
- adds r6, 0x2C
- mov r0, sp
- adds r1, r6, 0
- bl StringCompareWithoutExtCtrlCodes
- cmp r0, 0
- bne _08042B08
- ldr r0, _08042B30 @ =gSaveBlock2
- adds r1, r5, 0
- adds r1, 0x24
- bl StringCompareWithoutExtCtrlCodes
- cmp r0, 0
- beq _08042B40
-_08042B08:
- ldr r0, _08042B34 @ =gStringVar1
- mov r1, sp
- bl StringCopy
- ldr r4, _08042B38 @ =gStringVar2
- adds r1, r5, 0
- adds r1, 0x24
- adds r0, r4, 0
- bl StringCopy
- ldr r0, _08042B3C @ =gStringVar3
- adds r1, r6, 0
- bl StringCopy
- adds r0, r4, 0
- bl SanitizeNameString
- movs r0, 0x1
- b _08042B42
- .align 2, 0
-_08042B30: .4byte gSaveBlock2
-_08042B34: .4byte gStringVar1
-_08042B38: .4byte gStringVar2
-_08042B3C: .4byte gStringVar3
-_08042B40:
- movs r0, 0
-_08042B42:
- add sp, 0x20
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8042ABC
-
- thumb_func_start sub_8042B4C
-sub_8042B4C: @ 8042B4C
- push {lr}
- ldr r0, _08042B60 @ =gSaveBlock1 + 0x2F9C
- ldr r1, _08042B64 @ =gSpecialVar_0x8004
- ldrb r1, [r1]
- bl sub_8042ABC
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_08042B60: .4byte gSaveBlock1 + 0x2F9C
-_08042B64: .4byte gSpecialVar_0x8004
- thumb_func_end sub_8042B4C
-
- thumb_func_start EggHatchCreateMonSprite
-EggHatchCreateMonSprite: @ 8042B68
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r3, r0, 24
- adds r4, r3, 0
- lsls r1, 24
- lsrs r6, r1, 24
- lsls r2, 24
- lsrs r1, r2, 24
- adds r2, r1, 0
- movs r5, 0
- mov r9, r5
- movs r7, 0
- cmp r3, 0
- bne _08042B96
- movs r0, 0x64
- muls r1, r0
- ldr r0, _08042BB0 @ =gPlayerParty
- adds r7, r1, r0
- movs r5, 0x1
-_08042B96:
- cmp r3, 0x1
- bne _08042BA6
- movs r0, 0x64
- adds r1, r2, 0
- muls r1, r0
- ldr r0, _08042BB0 @ =gPlayerParty
- adds r7, r1, r0
- movs r5, 0x3
-_08042BA6:
- cmp r6, 0
- beq _08042BB4
- cmp r6, 0x1
- beq _08042C14
- b _08042C50
- .align 2, 0
-_08042BB0: .4byte gPlayerParty
-_08042BB4:
- adds r0, r7, 0
- movs r1, 0xB
- bl GetMonData
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r7, 0
- movs r1, 0
- bl GetMonData
- mov r8, r0
- lsls r0, r5, 3
- ldr r1, _08042C04 @ =gMonFrontPicTable
- adds r0, r1
- ldr r1, _08042C08 @ =gMonFrontPicCoords
- lsls r2, r5, 2
- adds r2, r1
- ldrb r1, [r2]
- ldrb r2, [r2, 0x1]
- ldr r3, _08042C0C @ =0x02000000
- ldr r6, _08042C10 @ =gUnknown_081FAF4C
- lsls r4, 1
- adds r4, 0x1
- lsls r4, 2
- adds r4, r6
- ldr r4, [r4]
- str r4, [sp]
- str r5, [sp, 0x4]
- mov r4, r8
- str r4, [sp, 0x8]
- bl HandleLoadSpecialPokePic
- adds r0, r7, 0
- bl sub_8040990
- bl LoadCompressedObjectPalette
- b _08042C50
- .align 2, 0
-_08042C04: .4byte gMonFrontPicTable
-_08042C08: .4byte gMonFrontPicCoords
-_08042C0C: .4byte 0x02000000
-_08042C10: .4byte gUnknown_081FAF4C
-_08042C14:
- adds r0, r7, 0
- bl sub_8040990
- ldrh r0, [r0, 0x4]
- adds r1, r5, 0
- bl GetMonSpriteTemplate_803C56C
- ldr r0, _08042C60 @ =gUnknown_02024E8C
- movs r1, 0x78
- movs r2, 0x46
- movs r3, 0x6
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r4, _08042C64 @ =gSprites
- lsls r1, r0, 4
- add r1, r9
- lsls r1, 2
- adds r2, r1, r4
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r3, 0x4
- orrs r0, r3
- strb r0, [r2]
- adds r4, 0x1C
- adds r1, r4
- ldr r0, _08042C68 @ =SpriteCallbackDummy
- str r0, [r1]
-_08042C50:
- mov r0, r9
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08042C60: .4byte gUnknown_02024E8C
-_08042C64: .4byte gSprites
-_08042C68: .4byte SpriteCallbackDummy
- thumb_func_end EggHatchCreateMonSprite
-
- thumb_func_start VBlankCB_EggHatch
-VBlankCB_EggHatch: @ 8042C6C
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end VBlankCB_EggHatch
-
- thumb_func_start EggHatch
-EggHatch: @ 8042C80
- push {lr}
- sub sp, 0x4
- bl ScriptContext2_Enable
- ldr r0, _08042CA8 @ =Task_EggHatch
- movs r1, 0xA
- bl CreateTask
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_08042CA8: .4byte Task_EggHatch
- thumb_func_end EggHatch
-
- thumb_func_start Task_EggHatch
-Task_EggHatch: @ 8042CAC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08042CD8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08042CD0
- ldr r0, _08042CDC @ =CB2_EggHatch_0
- bl SetMainCallback2
- ldr r1, _08042CE0 @ =gFieldCallback
- ldr r0, _08042CE4 @ =sub_8080990
- str r0, [r1]
- adds r0, r4, 0
- bl DestroyTask
-_08042CD0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08042CD8: .4byte gPaletteFade
-_08042CDC: .4byte CB2_EggHatch_0
-_08042CE0: .4byte gFieldCallback
-_08042CE4: .4byte sub_8080990
- thumb_func_end Task_EggHatch
-
- thumb_func_start CB2_EggHatch_0
-CB2_EggHatch_0: @ 8042CE8
- push {r4-r7,lr}
- ldr r0, _08042D04 @ =gMain
- ldr r1, _08042D08 @ =0x0000043c
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x8
- bls _08042CF8
- b _08042F6E
-_08042CF8:
- lsls r0, 2
- ldr r1, _08042D0C @ =_08042D10
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08042D04: .4byte gMain
-_08042D08: .4byte 0x0000043c
-_08042D0C: .4byte _08042D10
- .align 2, 0
-_08042D10:
- .4byte _08042D34
- .4byte _08042D90
- .4byte _08042DC4
- .4byte _08042E20
- .4byte _08042E40
- .4byte _08042E74
- .4byte _08042E88
- .4byte _08042EB0
- .4byte _08042F40
-_08042D34:
- movs r0, 0x80
- lsls r0, 19
- movs r2, 0
- strh r2, [r0]
- ldr r1, _08042D74 @ =gUnknown_0300481C
- ldr r0, _08042D78 @ =0x02018000
- str r0, [r1]
- ldr r1, _08042D7C @ =gSpecialVar_0x8004
- ldrh r1, [r1]
- strb r1, [r0, 0x4]
- adds r0, 0x3A
- strb r2, [r0]
- bl ResetTasks
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- ldr r0, _08042D80 @ =VBlankCB_EggHatch
- bl SetVBlankCallback
- ldr r1, _08042D84 @ =gMain
- ldr r2, _08042D88 @ =0x0000043c
- adds r1, r2
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl GetCurrentMapMusic
- ldr r1, _08042D8C @ =gSpecialVar_0x8005
- strh r0, [r1]
- b _08042F6E
- .align 2, 0
-_08042D74: .4byte gUnknown_0300481C
-_08042D78: .4byte 0x02018000
-_08042D7C: .4byte gSpecialVar_0x8004
-_08042D80: .4byte VBlankCB_EggHatch
-_08042D84: .4byte gMain
-_08042D88: .4byte 0x0000043c
-_08042D8C: .4byte gSpecialVar_0x8005
-_08042D90:
- ldr r5, _08042DBC @ =gWindowConfig_81E6F84
- adds r0, r5, 0
- bl SetUpWindowConfig
- ldr r4, _08042DC0 @ =gUnknown_0300481C
- ldr r0, [r4]
- adds r0, 0x8
- adds r1, r5, 0
- bl InitWindowFromConfig
- movs r0, 0x14
- bl SetTextWindowBaseTileNum
- ldr r1, [r4]
- adds r1, 0x38
- strb r0, [r1]
- ldr r0, [r4]
- adds r0, 0x8
- bl LoadTextWindowGraphics
- b _08042F04
- .align 2, 0
-_08042DBC: .4byte gWindowConfig_81E6F84
-_08042DC0: .4byte gUnknown_0300481C
-_08042DC4:
- ldr r0, _08042DFC @ =gUnknown_08D00000
- movs r1, 0xC0
- lsls r1, 19
- bl LZDecompressVram
- ldr r0, _08042E00 @ =gUnknown_08D00524
- ldr r4, _08042E04 @ =0x02000000
- movs r2, 0x80
- lsls r2, 4
- adds r1, r4, 0
- bl CpuSet
- ldr r1, _08042E08 @ =0x040000d4
- str r4, [r1]
- ldr r0, _08042E0C @ =0x06002800
- str r0, [r1, 0x4]
- ldr r0, _08042E10 @ =0x80000280
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- ldr r0, _08042E14 @ =gUnknown_08D004E0
- movs r1, 0
- movs r2, 0x20
- bl LoadCompressedPalette
- ldr r1, _08042E18 @ =gMain
- ldr r2, _08042E1C @ =0x0000043c
- adds r1, r2
- b _08042F0A
- .align 2, 0
-_08042DFC: .4byte gUnknown_08D00000
-_08042E00: .4byte gUnknown_08D00524
-_08042E04: .4byte 0x02000000
-_08042E08: .4byte 0x040000d4
-_08042E0C: .4byte 0x06002800
-_08042E10: .4byte 0x80000280
-_08042E14: .4byte gUnknown_08D004E0
-_08042E18: .4byte gMain
-_08042E1C: .4byte 0x0000043c
-_08042E20:
- ldr r0, _08042E34 @ =gUnknown_0820A3B0
- bl LoadSpriteSheet
- ldr r0, _08042E38 @ =gUnknown_0820A3B8
- bl LoadSpriteSheet
- ldr r0, _08042E3C @ =gUnknown_0820A3C0
- bl LoadSpritePalette
- b _08042F04
- .align 2, 0
-_08042E34: .4byte gUnknown_0820A3B0
-_08042E38: .4byte gUnknown_0820A3B8
-_08042E3C: .4byte gUnknown_0820A3C0
-_08042E40:
- ldr r0, _08042E64 @ =gSpriteTemplate_820A3C8
- movs r1, 0x78
- movs r2, 0x4B
- movs r3, 0x5
- bl CreateSprite
- ldr r2, _08042E68 @ =gUnknown_0300481C
- ldr r1, [r2]
- strb r0, [r1]
- ldr r0, [r2]
- ldrb r0, [r0, 0x4]
- bl AddHatchedMonToParty
- ldr r1, _08042E6C @ =gMain
- ldr r2, _08042E70 @ =0x0000043c
- adds r1, r2
- b _08042F0A
- .align 2, 0
-_08042E64: .4byte gSpriteTemplate_820A3C8
-_08042E68: .4byte gUnknown_0300481C
-_08042E6C: .4byte gMain
-_08042E70: .4byte 0x0000043c
-_08042E74:
- ldr r0, _08042E84 @ =gUnknown_0300481C
- ldr r0, [r0]
- ldrb r2, [r0, 0x4]
- movs r0, 0
- movs r1, 0
- bl EggHatchCreateMonSprite
- b _08042F04
- .align 2, 0
-_08042E84: .4byte gUnknown_0300481C
-_08042E88:
- ldr r4, _08042EA4 @ =gUnknown_0300481C
- ldr r0, [r4]
- ldrb r2, [r0, 0x4]
- movs r0, 0
- movs r1, 0x1
- bl EggHatchCreateMonSprite
- ldr r1, [r4]
- strb r0, [r1, 0x1]
- ldr r1, _08042EA8 @ =gMain
- ldr r2, _08042EAC @ =0x0000043c
- adds r1, r2
- b _08042F0A
- .align 2, 0
-_08042EA4: .4byte gUnknown_0300481C
-_08042EA8: .4byte gMain
-_08042EAC: .4byte 0x0000043c
-_08042EB0:
- ldr r0, _08042F14 @ =REG_BG2CNT
- ldr r2, _08042F18 @ =0x00004c06
- adds r1, r2, 0
- strh r1, [r0]
- ldr r0, _08042F1C @ =gUnknown_0820C9F8
- movs r1, 0x10
- movs r2, 0xA0
- bl LoadPalette
- ldr r3, _08042F20 @ =gUnknown_0820CA98
- ldr r4, _08042F24 @ =0x06004000
- movs r5, 0x98
- lsls r5, 5
- ldr r1, _08042F28 @ =0x040000d4
- ldr r6, _08042F2C @ =0x80000800
- movs r2, 0x80
- lsls r2, 5
- movs r7, 0x80
- lsls r7, 24
-_08042ED6:
- str r3, [r1]
- str r4, [r1, 0x4]
- str r6, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r3, r2
- adds r4, r2
- subs r5, r2
- cmp r5, r2
- bhi _08042ED6
- str r3, [r1]
- str r4, [r1, 0x4]
- lsrs r0, r5, 1
- orrs r0, r7
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- ldr r1, _08042F30 @ =gUnknown_0820F798
- ldr r2, _08042F34 @ =0x06006000
- ldr r0, _08042F28 @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _08042F2C @ =0x80000800
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
-_08042F04:
- ldr r1, _08042F38 @ =gMain
- ldr r0, _08042F3C @ =0x0000043c
- adds r1, r0
-_08042F0A:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08042F6E
- .align 2, 0
-_08042F14: .4byte REG_BG2CNT
-_08042F18: .4byte 0x00004c06
-_08042F1C: .4byte gUnknown_0820C9F8
-_08042F20: .4byte gUnknown_0820CA98
-_08042F24: .4byte 0x06004000
-_08042F28: .4byte 0x040000d4
-_08042F2C: .4byte 0x80000800
-_08042F30: .4byte gUnknown_0820F798
-_08042F34: .4byte 0x06006000
-_08042F38: .4byte gMain
-_08042F3C: .4byte 0x0000043c
-_08042F40:
- ldr r1, _08042F74 @ =REG_BG1CNT
- ldr r2, _08042F78 @ =0x00000501
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _08042F7C @ =REG_BG0HOFS
- movs r4, 0
- strh r4, [r0]
- adds r0, 0x2
- strh r4, [r0]
- adds r0, 0x2
- strh r4, [r0]
- adds r0, 0x2
- strh r4, [r0]
- adds r0, 0x2
- strh r4, [r0]
- adds r0, 0x2
- strh r4, [r0]
- ldr r0, _08042F80 @ =CB2_EggHatch_1
- bl SetMainCallback2
- ldr r0, _08042F84 @ =gUnknown_0300481C
- ldr r0, [r0]
- strb r4, [r0, 0x2]
-_08042F6E:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08042F74: .4byte REG_BG1CNT
-_08042F78: .4byte 0x00000501
-_08042F7C: .4byte REG_BG0HOFS
-_08042F80: .4byte CB2_EggHatch_1
-_08042F84: .4byte gUnknown_0300481C
- thumb_func_end CB2_EggHatch_0
-
- thumb_func_start EggHatchSetMonNickname
-EggHatchSetMonNickname: @ 8042F88
- push {lr}
- ldr r0, _08042FA8 @ =gSpecialVar_0x8004
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08042FAC @ =gPlayerParty
- adds r0, r1
- ldr r2, _08042FB0 @ =gStringVar3
- movs r1, 0x2
- bl SetMonData
- ldr r0, _08042FB4 @ =c2_exit_to_overworld_2_switch
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_08042FA8: .4byte gSpecialVar_0x8004
-_08042FAC: .4byte gPlayerParty
-_08042FB0: .4byte gStringVar3
-_08042FB4: .4byte c2_exit_to_overworld_2_switch
- thumb_func_end EggHatchSetMonNickname
-
- thumb_func_start Task_EggHatchPlayBGM
-Task_EggHatchPlayBGM: @ 8042FB8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _08043004 @ =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 _08042FD4
- bl StopMapMusic
-_08042FD4:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- bne _08042FE4
- movs r0, 0xBC
- lsls r0, 1
- bl PlayBGM
-_08042FE4:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x3C
- ble _08042FF8
- ldr r0, _08043008 @ =0x00000179
- bl PlayBGM
- adds r0, r5, 0
- bl DestroyTask
-_08042FF8:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08043004: .4byte gTasks
-_08043008: .4byte 0x00000179
- thumb_func_end Task_EggHatchPlayBGM
-
- thumb_func_start CB2_EggHatch_1
-CB2_EggHatch_1: @ 804300C
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- sub sp, 0x8
- ldr r1, _08043030 @ =gUnknown_0300481C
- ldr r0, [r1]
- ldrb r0, [r0, 0x2]
- adds r5, r1, 0
- cmp r0, 0xB
- bls _08043026
- b _080432BA
-_08043026:
- lsls r0, 2
- ldr r1, _08043034 @ =_08043038
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08043030: .4byte gUnknown_0300481C
-_08043034: .4byte _08043038
- .align 2, 0
-_08043038:
- .4byte _08043068
- .4byte _080430A0
- .4byte _080430C0
- .4byte _080430F8
- .4byte _08043124
- .4byte _08043164
- .4byte _08043172
- .4byte _08043180
- .4byte _080431B8
- .4byte _080431DA
- .4byte _08043288
- .4byte _080432A8
-_08043068:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- movs r1, 0x80
- lsls r1, 19
- movs r2, 0xBA
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _08043098 @ =gUnknown_0300481C
- ldr r1, [r0]
- ldrb r0, [r1, 0x2]
- adds r0, 0x1
- strb r0, [r1, 0x2]
- ldr r0, _0804309C @ =Task_EggHatchPlayBGM
- movs r1, 0x5
- bl CreateTask
- b _080432BA
- .align 2, 0
-_08043098: .4byte gUnknown_0300481C
-_0804309C: .4byte Task_EggHatchPlayBGM
-_080430A0:
- ldr r0, _080430BC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _080430B2
- b _080432BA
-_080430B2:
- ldr r0, [r5]
- strb r1, [r0, 0x3]
- ldr r1, [r5]
- b _0804329C
- .align 2, 0
-_080430BC: .4byte gPaletteFade
-_080430C0:
- ldr r1, [r5]
- ldrb r0, [r1, 0x3]
- adds r0, 0x1
- strb r0, [r1, 0x3]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1E
- bhi _080430D2
- b _080432BA
-_080430D2:
- ldr r1, [r5]
- ldrb r0, [r1, 0x2]
- adds r0, 0x1
- strb r0, [r1, 0x2]
- ldr r2, _080430F0 @ =gSprites
- ldr r0, [r5]
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, _080430F4 @ =SpriteCB_Egg_0
- str r1, [r0]
- b _080432BA
- .align 2, 0
-_080430F0: .4byte gSprites
-_080430F4: .4byte SpriteCB_Egg_0
-_080430F8:
- ldr r2, _0804311C @ =gSprites
- ldr r3, [r5]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, [r0]
- ldr r0, _08043120 @ =SpriteCallbackDummy
- cmp r1, r0
- beq _08043112
- b _080432BA
-_08043112:
- ldrb r0, [r3, 0x2]
- adds r0, 0x1
- strb r0, [r3, 0x2]
- b _080432BA
- .align 2, 0
-_0804311C: .4byte gSprites
-_08043120: .4byte SpriteCallbackDummy
-_08043124:
- ldr r0, [r5]
- ldrb r1, [r0, 0x4]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08043150 @ =gPlayerParty
- adds r0, r1
- ldr r1, _08043154 @ =gStringVar1
- bl GetMonNick
- ldr r4, _08043158 @ =gStringVar4
- ldr r1, _0804315C @ =gOtherText_HatchedFromEgg
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- bl EggHatchPrintMessage2
- ldr r0, _08043160 @ =0x00000173
- bl PlayFanfare
- ldr r1, [r5]
- b _0804329C
- .align 2, 0
-_08043150: .4byte gPlayerParty
-_08043154: .4byte gStringVar1
-_08043158: .4byte gStringVar4
-_0804315C: .4byte gOtherText_HatchedFromEgg
-_08043160: .4byte 0x00000173
-_08043164:
- bl IsFanfareTaskInactive
- lsls r0, 24
- cmp r0, 0
- bne _08043170
- b _080432BA
-_08043170:
- b _08043298
-_08043172:
- bl IsFanfareTaskInactive
- lsls r0, 24
- cmp r0, 0
- bne _0804317E
- b _080432BA
-_0804317E:
- b _08043298
-_08043180:
- ldr r0, [r5]
- ldrb r1, [r0, 0x4]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080431A8 @ =gPlayerParty
- adds r0, r1
- ldr r1, _080431AC @ =gStringVar1
- bl GetMonNick
- ldr r4, _080431B0 @ =gStringVar4
- ldr r1, _080431B4 @ =gOtherText_NickHatchPrompt
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- bl EggHatchPrintMessage1
- ldr r1, [r5]
- b _0804329C
- .align 2, 0
-_080431A8: .4byte gPlayerParty
-_080431AC: .4byte gStringVar1
-_080431B0: .4byte gStringVar4
-_080431B4: .4byte gOtherText_NickHatchPrompt
-_080431B8:
- bl EggHatchUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- beq _080432BA
- movs r0, 0x16
- movs r1, 0x8
- movs r2, 0x1B
- movs r3, 0xD
- bl MenuDrawTextWindow
- movs r0, 0x16
- movs r1, 0x8
- movs r2, 0x4
- bl InitYesNoMenu
- b _08043298
-_080431DA:
- bl ProcessMenuInputNoWrap_
- lsls r0, 24
- lsrs r2, r0, 24
- asrs r0, 24
- movs r1, 0x2
- negs r1, r1
- cmp r0, r1
- beq _080432BA
- lsls r0, r2, 24
- asrs r1, r0, 24
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _08043298
- cmp r1, 0x1
- beq _08043298
- ldr r0, _08043278 @ =gUnknown_0300481C
- mov r9, r0
- ldr r0, [r0]
- ldrb r0, [r0, 0x4]
- movs r1, 0x64
- mov r8, r1
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- ldr r6, _0804327C @ =gPlayerParty
- adds r0, r6
- ldr r1, _08043280 @ =gStringVar3
- mov r10, r1
- bl GetMonNick
- mov r2, r9
- ldr r0, [r2]
- ldrb r0, [r0, 0x4]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r6
- movs r1, 0xB
- bl GetMonData
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- mov r2, r9
- ldr r0, [r2]
- ldrb r0, [r0, 0x4]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r6
- bl GetMonGender
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- mov r2, r9
- ldr r0, [r2]
- ldrb r0, [r0, 0x4]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r6
- movs r1, 0
- movs r2, 0
- bl GetMonData
- str r0, [sp]
- ldr r0, _08043284 @ =EggHatchSetMonNickname
- str r0, [sp, 0x4]
- movs r0, 0x3
- mov r1, r10
- adds r2, r5, 0
- adds r3, r4, 0
- bl DoNamingScreen
- b _080432BA
- .align 2, 0
-_08043278: .4byte gUnknown_0300481C
-_0804327C: .4byte gPlayerParty
-_08043280: .4byte gStringVar3
-_08043284: .4byte EggHatchSetMonNickname
-_08043288:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
-_08043298:
- ldr r0, _080432A4 @ =gUnknown_0300481C
- ldr r1, [r0]
-_0804329C:
- ldrb r0, [r1, 0x2]
- adds r0, 0x1
- strb r0, [r1, 0x2]
- b _080432BA
- .align 2, 0
-_080432A4: .4byte gUnknown_0300481C
-_080432A8:
- ldr r0, _080432DC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080432BA
- ldr r0, _080432E0 @ =c2_exit_to_overworld_2_switch
- bl SetMainCallback2
-_080432BA:
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080432DC: .4byte gPaletteFade
-_080432E0: .4byte c2_exit_to_overworld_2_switch
- thumb_func_end CB2_EggHatch_1
-
- thumb_func_start SpriteCB_Egg_0
-SpriteCB_Egg_0: @ 80432E4
- 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
- ble _08043304
- ldr r0, _08043300 @ =SpriteCB_Egg_1
- str r0, [r4, 0x1C]
- movs r0, 0
- strh r0, [r4, 0x2E]
- b _08043334
- .align 2, 0
-_08043300: .4byte SpriteCB_Egg_1
-_08043304:
- ldrh r0, [r4, 0x30]
- adds r0, 0x14
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x30]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x1
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0xF
- bne _08043334
- movs r0, 0x17
- bl PlaySE
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAnim
- bl CreateRandomEggShardSprite
-_08043334:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end SpriteCB_Egg_0
-
- thumb_func_start SpriteCB_Egg_1
-SpriteCB_Egg_1: @ 804333C
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1E
- ble _08043398
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- ble _0804336C
- ldr r0, _08043368 @ =SpriteCB_Egg_2
- str r0, [r4, 0x1C]
- strh r1, [r4, 0x2E]
- strh r1, [r4, 0x32]
- b _08043398
- .align 2, 0
-_08043368: .4byte SpriteCB_Egg_2
-_0804336C:
- ldrh r0, [r4, 0x30]
- adds r0, 0x14
- 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]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0xF
- bne _08043398
- movs r0, 0x17
- bl PlaySE
- adds r0, r4, 0
- movs r1, 0x2
- bl StartSpriteAnim
-_08043398:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end SpriteCB_Egg_1
-
- thumb_func_start SpriteCB_Egg_2
-SpriteCB_Egg_2: @ 80433A0
- push {r4-r6,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- movs r6, 0
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1E
- ble _0804345A
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x26
- ble _08043418
- ldr r0, _08043404 @ =SpriteCB_Egg_3
- str r0, [r4, 0x1C]
- strh r6, [r4, 0x2E]
- ldr r5, _08043408 @ =gUnknown_0300481C
- ldr r0, [r5]
- ldrb r1, [r0, 0x4]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0804340C @ =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- ldr r4, _08043410 @ =gSprites
- ldr r3, [r5]
- ldrb r2, [r3, 0x1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- strh r6, [r1, 0x24]
- ldrb r2, [r3, 0x1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- ldr r2, _08043414 @ =gMonFrontPicCoords
- lsrs r0, 14
- adds r0, r2
- ldrb r0, [r0, 0x1]
- strh r0, [r1, 0x26]
- b _0804345A
- .align 2, 0
-_08043404: .4byte SpriteCB_Egg_3
-_08043408: .4byte gUnknown_0300481C
-_0804340C: .4byte gPlayerParty
-_08043410: .4byte gSprites
-_08043414: .4byte gMonFrontPicCoords
-_08043418:
- ldrh r0, [r4, 0x30]
- adds r0, 0x14
- 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]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0xF
- bne _0804344C
- movs r0, 0x17
- bl PlaySE
- adds r0, r4, 0
- movs r1, 0x2
- bl StartSpriteAnim
- bl CreateRandomEggShardSprite
- bl CreateRandomEggShardSprite
-_0804344C:
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x1E
- bne _0804345A
- movs r0, 0x17
- bl PlaySE
-_0804345A:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end SpriteCB_Egg_2
-
- thumb_func_start SpriteCB_Egg_3
-SpriteCB_Egg_3: @ 8043460
- 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, 0x32
- ble _0804347A
- ldr r0, _08043480 @ =SpriteCB_Egg_4
- str r0, [r1, 0x1C]
- movs r0, 0
- strh r0, [r1, 0x2E]
-_0804347A:
- pop {r0}
- bx r0
- .align 2, 0
-_08043480: .4byte SpriteCB_Egg_4
- thumb_func_end SpriteCB_Egg_3
-
- thumb_func_start SpriteCB_Egg_4
-SpriteCB_Egg_4: @ 8043484
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080434A4
- movs r1, 0x1
- negs r1, r1
- ldr r0, _080434F8 @ =0x0000ffff
- str r0, [sp]
- adds r0, r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
-_080434A4:
- ldrh r0, [r5, 0x2E]
- cmp r0, 0x3
- bhi _080434C0
- movs r4, 0
-_080434AC:
- bl CreateRandomEggShardSprite
- lsls r0, r4, 16
- movs r1, 0x80
- lsls r1, 9
- adds r0, r1
- lsrs r4, r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _080434AC
-_080434C0:
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- ldr r0, _080434FC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _080434EE
- movs r0, 0x71
- bl PlaySE
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _08043500 @ =SpriteCB_Egg_5
- str r0, [r5, 0x1C]
- strh r4, [r5, 0x2E]
-_080434EE:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080434F8: .4byte 0x0000ffff
-_080434FC: .4byte gPaletteFade
-_08043500: .4byte SpriteCB_Egg_5
- thumb_func_end SpriteCB_Egg_4
-
- thumb_func_start SpriteCB_Egg_5
-SpriteCB_Egg_5: @ 8043504
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _08043540
- ldr r4, _08043594 @ =gSprites
- ldr r3, _08043598 @ =gUnknown_0300481C
- ldr r0, [r3]
- ldrb r1, [r0, 0x1]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- ldr r0, [r3]
- ldrb r1, [r0, 0x1]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x1
- bl StartSpriteAffineAnim
-_08043540:
- movs r2, 0x2E
- ldrsh r0, [r5, r2]
- cmp r0, 0x8
- bne _0804355A
- movs r1, 0x1
- negs r1, r1
- ldr r0, _0804359C @ =0x0000ffff
- str r0, [sp]
- adds r0, r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
-_0804355A:
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0x9
- bgt _08043578
- ldr r2, _08043594 @ =gSprites
- ldr r0, _08043598 @ =gUnknown_0300481C
- ldr r0, [r0]
- ldrb r1, [r0, 0x1]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x22]
- subs r1, 0x1
- strh r1, [r0, 0x22]
-_08043578:
- ldrh r1, [r5, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r5, r2]
- cmp r0, 0x28
- ble _08043586
- ldr r0, _080435A0 @ =SpriteCallbackDummy
- str r0, [r5, 0x1C]
-_08043586:
- adds r0, r1, 0x1
- strh r0, [r5, 0x2E]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08043594: .4byte gSprites
-_08043598: .4byte gUnknown_0300481C
-_0804359C: .4byte 0x0000ffff
-_080435A0: .4byte SpriteCallbackDummy
- thumb_func_end SpriteCB_Egg_5
-
- thumb_func_start SpriteCB_EggShard
-SpriteCB_EggShard: @ 80435A4
- push {r4,lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x30]
- ldrh r1, [r2, 0x36]
- adds r0, r1
- strh r0, [r2, 0x36]
- ldrh r1, [r2, 0x32]
- ldrh r3, [r2, 0x38]
- adds r0, r1, r3
- strh r0, [r2, 0x38]
- movs r4, 0x36
- ldrsh r0, [r2, r4]
- cmp r0, 0
- bge _080435C2
- adds r0, 0xFF
-_080435C2:
- asrs r0, 8
- strh r0, [r2, 0x24]
- movs r3, 0x38
- ldrsh r0, [r2, r3]
- cmp r0, 0
- bge _080435D0
- adds r0, 0xFF
-_080435D0:
- asrs r0, 8
- strh r0, [r2, 0x26]
- ldrh r0, [r2, 0x34]
- adds r3, r1, r0
- strh r3, [r2, 0x32]
- movs r4, 0x22
- ldrsh r1, [r2, r4]
- movs r4, 0x26
- ldrsh r0, [r2, r4]
- adds r0, r1, r0
- adds r1, 0x14
- cmp r0, r1
- ble _080435F6
- lsls r0, r3, 16
- cmp r0, 0
- ble _080435F6
- adds r0, r2, 0
- bl DestroySprite
-_080435F6:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end SpriteCB_EggShard
-
- thumb_func_start CreateRandomEggShardSprite
-CreateRandomEggShardSprite: @ 80435FC
- push {r4-r6,lr}
- sub sp, 0x8
- ldr r3, _0804364C @ =gEggShardVelocities
- ldr r0, _08043650 @ =gUnknown_0300481C
- ldr r4, [r0]
- adds r4, 0x3A
- ldrb r2, [r4]
- lsls r0, r2, 2
- adds r1, r0, r3
- ldrh r6, [r1]
- adds r3, 0x2
- adds r0, r3
- ldrh r5, [r0]
- adds r2, 0x1
- strb r2, [r4]
- bl Random
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r0
- lsls r6, 16
- asrs r6, 16
- lsls r5, 16
- asrs r5, 16
- movs r0, 0x64
- str r0, [sp]
- lsrs r1, 16
- str r1, [sp, 0x4]
- movs r0, 0x78
- movs r1, 0x3C
- adds r2, r6, 0
- adds r3, r5, 0
- bl CreateEggShardSprite
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804364C: .4byte gEggShardVelocities
-_08043650: .4byte gUnknown_0300481C
- thumb_func_end CreateRandomEggShardSprite
-
- thumb_func_start CreateEggShardSprite
-CreateEggShardSprite: @ 8043654
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- mov r8, r3
- ldr r0, [sp, 0x1C]
- mov r9, r0
- ldr r1, [sp, 0x20]
- mov r10, r1
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 16
- lsrs r6, 16
- mov r0, r8
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- mov r1, r9
- lsls r1, 16
- lsrs r1, 16
- mov r9, r1
- mov r0, r10
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldr r0, _080436CC @ =gSpriteTemplate_820A418
- adds r1, r4, 0
- adds r2, r5, 0
- movs r3, 0x4
- bl CreateSprite
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _080436D0 @ =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r6, [r0, 0x30]
- mov r1, r8
- strh r1, [r0, 0x32]
- mov r1, r9
- strh r1, [r0, 0x34]
- mov r1, r10
- bl StartSpriteAnim
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080436CC: .4byte gSpriteTemplate_820A418
-_080436D0: .4byte gSprites
- thumb_func_end CreateEggShardSprite
-
- thumb_func_start EggHatchPrintMessage1
-EggHatchPrintMessage1: @ 80436D4
- push {lr}
- sub sp, 0x4
- adds r1, r0, 0
- ldr r0, _080436F8 @ =gUnknown_0300481C
- ldr r2, [r0]
- adds r0, r2, 0
- adds r0, 0x8
- adds r2, 0x38
- ldrb r2, [r2]
- movs r3, 0xF
- str r3, [sp]
- movs r3, 0x3
- bl sub_8002EB0
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_080436F8: .4byte gUnknown_0300481C
- thumb_func_end EggHatchPrintMessage1
-
- thumb_func_start EggHatchPrintMessage2
-EggHatchPrintMessage2: @ 80436FC
- push {lr}
- sub sp, 0x4
- adds r1, r0, 0
- ldr r0, _08043720 @ =gUnknown_0300481C
- ldr r2, [r0]
- adds r0, r2, 0
- adds r0, 0x8
- adds r2, 0x38
- ldrb r2, [r2]
- movs r3, 0xF
- str r3, [sp]
- movs r3, 0x3
- bl sub_8003460
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_08043720: .4byte gUnknown_0300481C
- thumb_func_end EggHatchPrintMessage2
-
- thumb_func_start EggHatchUpdateWindowText
-EggHatchUpdateWindowText: @ 8043724
- push {lr}
- ldr r0, _08043738 @ =gUnknown_0300481C
- ldr r0, [r0]
- adds r0, 0x8
- bl sub_80035AC
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_08043738: .4byte gUnknown_0300481C
- thumb_func_end EggHatchUpdateWindowText
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/evolution_graphics.s b/asm/evolution_graphics.s
deleted file mode 100644
index 1130e085e..000000000
--- a/asm/evolution_graphics.s
+++ /dev/null
@@ -1,1829 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start nullsub_84
-nullsub_84: @ 814951C
- bx lr
- thumb_func_end nullsub_84
-
- thumb_func_start sub_8149520
-sub_8149520: @ 8149520
- push {r4,r5,lr}
- sub sp, 0x4
- movs r4, 0
- ldr r5, _08149554 @ =gUnknown_08416ED0
-_08149528:
- adds r0, r4, 0
- adds r0, 0x14
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r4, 1
- adds r1, r5
- ldrh r1, [r1]
- str r1, [sp]
- movs r2, 0
- movs r3, 0
- bl SetOamMatrix
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0xB
- bls _08149528
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08149554: .4byte gUnknown_08416ED0
- thumb_func_end sub_8149520
-
- thumb_func_start sub_8149558
-sub_8149558: @ 8149558
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x22
- ldrsh r0, [r4, r1]
- cmp r0, 0x8
- ble _08149606
- movs r2, 0x3C
- ldrsh r0, [r4, r2]
- adds r1, r0, 0
- muls r1, r0
- adds r0, r1, 0
- movs r1, 0x50
- bl __divsi3
- movs r1, 0x58
- subs r1, r0
- strh r1, [r4, 0x22]
- ldrh r0, [r4, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- bl Sin
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _08149592
- adds r0, 0x3
-_08149592:
- asrs r0, 2
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- bl Cos
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x3A]
- adds r0, 0x4
- strh r0, [r4, 0x3A]
- ldrh r1, [r4, 0x3C]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081495BC
- ldrh r0, [r4, 0x38]
- subs r0, 0x1
- strh r0, [r4, 0x38]
-_081495BC:
- ldrh r0, [r4, 0x3C]
- adds r0, 0x1
- strh r0, [r4, 0x3C]
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- cmp r0, 0
- ble _081495D2
- adds r1, r4, 0
- adds r1, 0x43
- movs r0, 0x1
- b _081495D8
-_081495D2:
- adds r1, r4, 0
- adds r1, 0x43
- movs r0, 0x14
-_081495D8:
- strb r0, [r1]
- movs r2, 0x38
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bge _081495E4
- adds r0, 0x3
-_081495E4:
- asrs r0, 2
- adds r0, 0x14
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x1F
- bls _081495F2
- movs r2, 0x1F
-_081495F2:
- movs r0, 0x1F
- ands r2, r0
- lsls r2, 1
- ldrb r1, [r4, 0x3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r1
- orrs r0, r2
- strb r0, [r4, 0x3]
- b _0814960C
-_08149606:
- adds r0, r4, 0
- bl DestroySprite
-_0814960C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8149558
-
- thumb_func_start sub_8149614
-sub_8149614: @ 8149614
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _08149664 @ =gSpriteTemplate_8416EB8
- movs r1, 0x78
- movs r2, 0x58
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _0814965E
- ldr r4, _08149668 @ =gSprites
- lsls r3, r0, 4
- adds r3, r0
- lsls r3, 2
- adds r2, r3, r4
- movs r1, 0
- movs r0, 0x30
- strh r0, [r2, 0x38]
- strh r5, [r2, 0x3A]
- strh r1, [r2, 0x3C]
- ldrb r1, [r2, 0x1]
- subs r0, 0x34
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0x1]
- ldrb r0, [r2, 0x3]
- movs r1, 0x3E
- orrs r0, r1
- strb r0, [r2, 0x3]
- adds r4, 0x1C
- adds r3, r4
- ldr r0, _0814966C @ =sub_8149558
- str r0, [r3]
-_0814965E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08149664: .4byte gSpriteTemplate_8416EB8
-_08149668: .4byte gSprites
-_0814966C: .4byte sub_8149558
- thumb_func_end sub_8149614
-
- thumb_func_start sub_8149670
-sub_8149670: @ 8149670
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x22
- ldrsh r0, [r4, r1]
- cmp r0, 0x57
- bgt _081496D6
- movs r2, 0x3C
- ldrsh r0, [r4, r2]
- adds r1, r0, 0
- muls r1, r0
- adds r0, r1, 0
- movs r1, 0x5
- bl __divsi3
- adds r0, 0x8
- strh r0, [r4, 0x22]
- ldrh r0, [r4, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- bl Sin
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _081496A8
- adds r0, 0x3
-_081496A8:
- asrs r0, 2
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- bl Cos
- strh r0, [r4, 0x24]
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- lsls r0, 26
- lsrs r0, 24
- movs r1, 0x28
- bl Sin
- adds r0, 0x8
- strh r0, [r4, 0x38]
- ldrh r0, [r4, 0x3C]
- adds r0, 0x1
- strh r0, [r4, 0x3C]
- b _081496DC
-_081496D6:
- adds r0, r4, 0
- bl DestroySprite
-_081496DC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8149670
-
- thumb_func_start sub_81496E4
-sub_81496E4: @ 81496E4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _08149740 @ =gSpriteTemplate_8416EB8
- movs r1, 0x78
- movs r2, 0x8
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _0814973A
- ldr r4, _08149744 @ =gSprites
- lsls r3, r0, 4
- adds r3, r0
- lsls r3, 2
- adds r2, r3, r4
- movs r1, 0
- movs r0, 0x8
- strh r0, [r2, 0x38]
- strh r5, [r2, 0x3A]
- strh r1, [r2, 0x3C]
- ldrb r1, [r2, 0x1]
- subs r0, 0xC
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0x1]
- ldrb r1, [r2, 0x3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r1
- movs r1, 0x32
- orrs r0, r1
- strb r0, [r2, 0x3]
- adds r2, 0x43
- movs r0, 0x1
- strb r0, [r2]
- adds r4, 0x1C
- adds r3, r4
- ldr r0, _08149748 @ =sub_8149670
- str r0, [r3]
-_0814973A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08149740: .4byte gSpriteTemplate_8416EB8
-_08149744: .4byte gSprites
-_08149748: .4byte sub_8149670
- thumb_func_end sub_81496E4
-
- thumb_func_start sub_814974C
-sub_814974C: @ 814974C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- cmp r0, 0x8
- ble _08149788
- ldrh r0, [r4, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- bl Cos
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x38]
- ldrh r1, [r4, 0x34]
- subs r0, r1
- strh r0, [r4, 0x38]
- ldrh r0, [r4, 0x3A]
- adds r0, 0x4
- strh r0, [r4, 0x3A]
- b _0814978E
-_08149788:
- adds r0, r4, 0
- bl DestroySprite
-_0814978E:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_814974C
-
- thumb_func_start sub_8149794
-sub_8149794: @ 8149794
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- ldr r0, _081497F0 @ =gSpriteTemplate_8416EB8
- movs r1, 0x78
- movs r2, 0x38
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _081497EA
- ldr r4, _081497F4 @ =gSprites
- lsls r3, r0, 4
- adds r3, r0
- lsls r3, 2
- adds r2, r3, r4
- movs r1, 0
- strh r5, [r2, 0x34]
- movs r0, 0x78
- strh r0, [r2, 0x38]
- strh r6, [r2, 0x3A]
- strh r1, [r2, 0x3C]
- ldrb r1, [r2, 0x1]
- subs r0, 0x7C
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0x1]
- ldrb r0, [r2, 0x3]
- movs r1, 0x3E
- orrs r0, r1
- strb r0, [r2, 0x3]
- adds r2, 0x43
- movs r0, 0x1
- strb r0, [r2]
- adds r4, 0x1C
- adds r3, r4
- ldr r0, _081497F8 @ =sub_814974C
- str r0, [r3]
-_081497EA:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081497F0: .4byte gSpriteTemplate_8416EB8
-_081497F4: .4byte gSprites
-_081497F8: .4byte sub_814974C
- thumb_func_end sub_8149794
-
- thumb_func_start sub_81497FC
-sub_81497FC: @ 81497FC
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x3C]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- bne _08149810
- ldrh r0, [r4, 0x22]
- adds r0, 0x1
- strh r0, [r4, 0x22]
-_08149810:
- ldrh r1, [r4, 0x3A]
- movs r2, 0x3A
- ldrsh r0, [r4, r2]
- cmp r0, 0x7F
- bgt _081498C0
- lsls r0, r1, 24
- lsrs r0, 24
- movs r5, 0x38
- ldrsh r1, [r4, r5]
- bl Sin
- negs r0, r0
- strh r0, [r4, 0x26]
- movs r0, 0x34
- ldrsh r1, [r4, r0]
- movs r2, 0x3C
- ldrsh r0, [r4, r2]
- muls r0, r1
- movs r1, 0x3
- bl __divsi3
- adds r0, 0x78
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x3A]
- adds r3, r0, 0x1
- strh r3, [r4, 0x3A]
- movs r5, 0x3A
- ldrsh r1, [r4, r5]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- cmp r0, 0
- bge _08149854
- adds r0, 0x7F
-_08149854:
- asrs r0, 7
- movs r1, 0x1F
- subs r1, r0
- lsls r1, 24
- lsrs r2, r1, 24
- lsls r0, r3, 16
- asrs r0, 16
- cmp r0, 0x40
- ble _08149870
- adds r1, r4, 0
- adds r1, 0x43
- movs r0, 0x1
- strb r0, [r1]
- b _081498A0
-_08149870:
- adds r3, r4, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r3]
- adds r1, r4, 0
- adds r1, 0x43
- movs r0, 0x14
- strb r0, [r1]
- ldrh r1, [r4, 0x3A]
- movs r5, 0x3A
- ldrsh r0, [r4, r5]
- cmp r0, 0x70
- ble _081498A0
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081498A0
- ldrb r0, [r3]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r3]
-_081498A0:
- cmp r2, 0x13
- bhi _081498A6
- movs r2, 0x14
-_081498A6:
- movs r0, 0x1F
- ands r2, r0
- lsls r2, 1
- ldrb r1, [r4, 0x3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r1
- orrs r0, r2
- strb r0, [r4, 0x3]
- ldrh r0, [r4, 0x3C]
- adds r0, 0x1
- strh r0, [r4, 0x3C]
- b _081498C6
-_081498C0:
- adds r0, r4, 0
- bl DestroySprite
-_081498C6:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81497FC
-
- thumb_func_start sub_81498CC
-sub_81498CC: @ 81498CC
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- ldr r0, _08149948 @ =gSpriteTemplate_8416EB8
- movs r1, 0x78
- movs r2, 0x38
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x40
- beq _0814993C
- bl Random
- ldr r6, _0814994C @ =gSprites
- lsls r5, r4, 4
- adds r5, r4
- lsls r5, 2
- adds r4, r5, r6
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x7
- bl __umodsi3
- movs r1, 0x3
- subs r1, r0
- movs r0, 0
- mov r8, r0
- strh r1, [r4, 0x34]
- bl Random
- movs r1, 0x3F
- ands r1, r0
- adds r1, 0x30
- strh r1, [r4, 0x38]
- mov r0, r8
- strh r0, [r4, 0x3C]
- ldrb r1, [r4, 0x1]
- movs r0, 0x4
- negs r0, r0
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r4, 0x1]
- ldrb r0, [r4, 0x3]
- movs r1, 0x3E
- orrs r0, r1
- strb r0, [r4, 0x3]
- adds r4, 0x43
- movs r0, 0x14
- strb r0, [r4]
- adds r6, 0x1C
- adds r5, r6
- ldr r0, _08149950 @ =sub_81497FC
- str r0, [r5]
-_0814993C:
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08149948: .4byte gSpriteTemplate_8416EB8
-_0814994C: .4byte gSprites
-_08149950: .4byte sub_81497FC
- thumb_func_end sub_81498CC
-
- thumb_func_start sub_8149954
-sub_8149954: @ 8149954
- push {lr}
- ldr r0, _08149968 @ =gUnknown_08416E84
- bl LoadCompressedObjectPic
- ldr r0, _0814996C @ =gUnknown_08416E94
- bl LoadSpritePalettes
- pop {r0}
- bx r0
- .align 2, 0
-_08149968: .4byte gUnknown_08416E84
-_0814996C: .4byte gUnknown_08416E94
- thumb_func_end sub_8149954
-
- thumb_func_start sub_8149970
-sub_8149970: @ 8149970
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldr r0, _08149998 @ =sub_81499A0
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0814999C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0xA]
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08149998: .4byte sub_81499A0
-_0814999C: .4byte gTasks
- thumb_func_end sub_8149970
-
- thumb_func_start sub_81499A0
-sub_81499A0: @ 81499A0
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_8149520
- ldr r0, _081499E4 @ =gTasks
- lsls r5, r4, 2
- adds r5, r4
- lsls r5, 3
- adds r5, r0
- movs r0, 0
- strh r0, [r5, 0x26]
- movs r0, 0xA
- ldrsh r1, [r5, r0]
- movs r0, 0x3
- lsls r0, r1
- ldr r1, _081499E8 @ =0x00007fff
- str r1, [sp]
- movs r1, 0xA
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _081499EC @ =sub_81499F0
- str r0, [r5]
- movs r0, 0x8C
- bl PlaySE
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081499E4: .4byte gTasks
-_081499E8: .4byte 0x00007fff
-_081499EC: .4byte sub_81499F0
- thumb_func_end sub_81499A0
-
- thumb_func_start sub_81499F0
-sub_81499F0: @ 81499F0
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _08149A48 @ =gTasks
- lsls r3, r5, 2
- adds r0, r3, r5
- lsls r0, 3
- adds r1, r0, r1
- ldrh r2, [r1, 0x26]
- movs r4, 0x26
- ldrsh r0, [r1, r4]
- cmp r0, 0x3F
- bgt _08149A4C
- movs r0, 0x7
- ands r0, r2
- adds r7, r3, 0
- cmp r0, 0
- bne _08149A36
- movs r4, 0
- adds r6, r1, 0
-_08149A18:
- ldrh r1, [r6, 0x26]
- movs r0, 0x78
- ands r0, r1
- lsls r0, 1
- lsls r1, r4, 6
- adds r0, r1
- lsls r0, 24
- lsrs r0, 24
- bl sub_8149614
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _08149A18
-_08149A36:
- ldr r0, _08149A48 @ =gTasks
- adds r1, r7, r5
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x26]
- adds r0, 0x1
- strh r0, [r1, 0x26]
- b _08149A54
- .align 2, 0
-_08149A48: .4byte gTasks
-_08149A4C:
- movs r0, 0x60
- strh r0, [r1, 0x26]
- ldr r0, _08149A5C @ =sub_8149A60
- str r0, [r1]
-_08149A54:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08149A5C: .4byte sub_8149A60
- thumb_func_end sub_81499F0
-
- thumb_func_start sub_8149A60
-sub_8149A60: @ 8149A60
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _08149A80 @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0, r1
- ldrh r3, [r1, 0x26]
- movs r4, 0x26
- ldrsh r0, [r1, r4]
- cmp r0, 0
- beq _08149A84
- subs r0, r3, 0x1
- strh r0, [r1, 0x26]
- b _08149A8A
- .align 2, 0
-_08149A80: .4byte gTasks
-_08149A84:
- adds r0, r2, 0
- bl DestroyTask
-_08149A8A:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8149A60
-
- thumb_func_start sub_8149A90
-sub_8149A90: @ 8149A90
- push {lr}
- ldr r0, _08149AA4 @ =sub_8149AA8
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_08149AA4: .4byte sub_8149AA8
- thumb_func_end sub_8149A90
-
- thumb_func_start sub_8149AA8
-sub_8149AA8: @ 8149AA8
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_8149520
- ldr r1, _08149AD4 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0x26]
- ldr r1, _08149AD8 @ =sub_8149ADC
- str r1, [r0]
- movs r0, 0xB7
- bl PlaySE
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08149AD4: .4byte gTasks
-_08149AD8: .4byte sub_8149ADC
- thumb_func_end sub_8149AA8
-
- thumb_func_start sub_8149ADC
-sub_8149ADC: @ 8149ADC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _08149B20 @ =gTasks
- lsls r2, r5, 2
- adds r0, r2, r5
- lsls r0, 3
- adds r1, r0, r1
- movs r3, 0x26
- ldrsh r0, [r1, r3]
- cmp r0, 0x5F
- bgt _08149B24
- adds r6, r2, 0
- cmp r0, 0x5
- bgt _08149B0E
- movs r4, 0
-_08149AFC:
- lsls r0, r4, 28
- lsrs r0, 24
- bl sub_81496E4
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x8
- bls _08149AFC
-_08149B0E:
- ldr r0, _08149B20 @ =gTasks
- adds r1, r6, r5
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x26]
- adds r0, 0x1
- strh r0, [r1, 0x26]
- b _08149B28
- .align 2, 0
-_08149B20: .4byte gTasks
-_08149B24:
- ldr r0, _08149B30 @ =sub_8149B34
- str r0, [r1]
-_08149B28:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08149B30: .4byte sub_8149B34
- thumb_func_end sub_8149ADC
-
- thumb_func_start sub_8149B34
-sub_8149B34: @ 8149B34
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- pop {r0}
- bx r0
- thumb_func_end sub_8149B34
-
- thumb_func_start sub_8149B44
-sub_8149B44: @ 8149B44
- push {lr}
- ldr r0, _08149B58 @ =sub_8149B5C
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_08149B58: .4byte sub_8149B5C
- thumb_func_end sub_8149B44
-
- thumb_func_start sub_8149B5C
-sub_8149B5C: @ 8149B5C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_8149520
- ldr r1, _08149B88 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0x26]
- ldr r1, _08149B8C @ =sub_8149B90
- str r1, [r0]
- movs r0, 0x66
- bl PlaySE
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08149B88: .4byte gTasks
-_08149B8C: .4byte sub_8149B90
- thumb_func_end sub_8149B5C
-
- thumb_func_start sub_8149B90
-sub_8149B90: @ 8149B90
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _08149BFC @ =gTasks
- lsls r2, r5, 2
- adds r0, r2, r5
- lsls r0, 3
- adds r1, r0, r1
- movs r3, 0x26
- ldrsh r0, [r1, r3]
- cmp r0, 0x2F
- bgt _08149C00
- adds r6, r2, 0
- cmp r0, 0
- bne _08149BC4
- movs r4, 0
-_08149BB0:
- lsls r0, r4, 28
- lsrs r0, 24
- movs r1, 0x4
- bl sub_8149794
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xF
- bls _08149BB0
-_08149BC4:
- ldr r0, _08149BFC @ =gTasks
- adds r1, r6, r5
- lsls r1, 3
- adds r1, r0
- movs r2, 0x26
- ldrsh r0, [r1, r2]
- cmp r0, 0x20
- bne _08149BEA
- movs r4, 0
-_08149BD6:
- lsls r0, r4, 28
- lsrs r0, 24
- movs r1, 0x8
- bl sub_8149794
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xF
- bls _08149BD6
-_08149BEA:
- ldr r0, _08149BFC @ =gTasks
- adds r1, r6, r5
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x26]
- adds r0, 0x1
- strh r0, [r1, 0x26]
- b _08149C04
- .align 2, 0
-_08149BFC: .4byte gTasks
-_08149C00:
- ldr r0, _08149C0C @ =sub_8149C10
- str r0, [r1]
-_08149C04:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08149C0C: .4byte sub_8149C10
- thumb_func_end sub_8149B90
-
- thumb_func_start sub_8149C10
-sub_8149C10: @ 8149C10
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- pop {r0}
- bx r0
- thumb_func_end sub_8149C10
-
- thumb_func_start sub_8149C20
-sub_8149C20: @ 8149C20
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldr r0, _08149C48 @ =sub_8149C50
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08149C4C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0xC]
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08149C48: .4byte sub_8149C50
-_08149C4C: .4byte gTasks
- thumb_func_end sub_8149C20
-
- thumb_func_start sub_8149C50
-sub_8149C50: @ 8149C50
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_8149520
- ldr r0, _08149C98 @ =gTasks
- lsls r5, r4, 2
- adds r5, r4
- lsls r5, 3
- adds r5, r0
- movs r0, 0
- strh r0, [r5, 0x26]
- ldr r0, _08149C9C @ =gPlttBufferFaded + 0x40
- ldr r1, _08149CA0 @ =gPlttBufferUnfaded + 0x40
- movs r2, 0x30
- bl CpuSet
- ldr r0, _08149CA4 @ =0xfff9001c
- ldr r1, _08149CA8 @ =0x00007fff
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _08149CAC @ =sub_8149CB0
- str r0, [r5]
- movs r0, 0xCA
- bl PlaySE
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08149C98: .4byte gTasks
-_08149C9C: .4byte gPlttBufferFaded + 0x40
-_08149CA0: .4byte gPlttBufferUnfaded + 0x40
-_08149CA4: .4byte 0xfff9001c
-_08149CA8: .4byte 0x00007fff
-_08149CAC: .4byte sub_8149CB0
- thumb_func_end sub_8149C50
-
- thumb_func_start sub_8149CB0
-sub_8149CB0: @ 8149CB0
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, _08149CE8 @ =gTasks
- lsls r5, r6, 2
- adds r0, r5, r6
- lsls r0, 3
- adds r1, r0, r1
- movs r0, 0x26
- ldrsh r2, [r1, r0]
- cmp r2, 0x7F
- bgt _08149D2C
- adds r0, r2, 0
- cmp r0, 0
- beq _08149CEC
- cmp r0, 0x20
- beq _08149D00
- cmp r2, 0x31
- bgt _08149D10
- bl Random
- movs r1, 0x7
- ands r0, r1
- bl sub_81498CC
- b _08149D10
- .align 2, 0
-_08149CE8: .4byte gTasks
-_08149CEC:
- movs r4, 0
-_08149CEE:
- adds r0, r4, 0
- bl sub_81498CC
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x7
- bls _08149CEE
- b _08149D10
-_08149D00:
- ldr r0, _08149D20 @ =0xffff001c
- ldr r1, _08149D24 @ =0x00007fff
- str r1, [sp]
- movs r1, 0x10
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
-_08149D10:
- ldr r0, _08149D28 @ =gTasks
- adds r1, r5, r6
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x26]
- adds r0, 0x1
- strh r0, [r1, 0x26]
- b _08149D30
- .align 2, 0
-_08149D20: .4byte 0xffff001c
-_08149D24: .4byte 0x00007fff
-_08149D28: .4byte gTasks
-_08149D2C:
- ldr r0, _08149D38 @ =sub_8149D3C
- str r0, [r1]
-_08149D30:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08149D38: .4byte sub_8149D3C
- thumb_func_end sub_8149CB0
-
- thumb_func_start sub_8149D3C
-sub_8149D3C: @ 8149D3C
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _08149D58 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08149D54
- adds r0, r2, 0
- bl DestroyTask
-_08149D54:
- pop {r0}
- bx r0
- .align 2, 0
-_08149D58: .4byte gPaletteFade
- thumb_func_end sub_8149D3C
-
- thumb_func_start sub_8149D5C
-sub_8149D5C: @ 8149D5C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldr r0, _08149D84 @ =sub_8149D8C
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08149D88 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0xC]
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08149D84: .4byte sub_8149D8C
-_08149D88: .4byte gTasks
- thumb_func_end sub_8149D5C
-
- thumb_func_start sub_8149D8C
-sub_8149D8C: @ 8149D8C
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_8149520
- ldr r0, _08149DD4 @ =gTasks
- lsls r5, r4, 2
- adds r5, r4
- lsls r5, 3
- adds r5, r0
- movs r0, 0
- strh r0, [r5, 0x26]
- ldr r0, _08149DD8 @ =gPlttBufferFaded + 0x40
- ldr r1, _08149DDC @ =gPlttBufferUnfaded + 0x40
- movs r2, 0x30
- bl CpuSet
- ldr r0, _08149DE0 @ =0xfff90001
- ldr r1, _08149DE4 @ =0x00007fff
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _08149DE8 @ =sub_8149DEC
- str r0, [r5]
- movs r0, 0xCA
- bl PlaySE
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08149DD4: .4byte gTasks
-_08149DD8: .4byte gPlttBufferFaded + 0x40
-_08149DDC: .4byte gPlttBufferUnfaded + 0x40
-_08149DE0: .4byte 0xfff90001
-_08149DE4: .4byte 0x00007fff
-_08149DE8: .4byte sub_8149DEC
- thumb_func_end sub_8149D8C
-
- thumb_func_start sub_8149DEC
-sub_8149DEC: @ 8149DEC
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, _08149E24 @ =gTasks
- lsls r5, r6, 2
- adds r0, r5, r6
- lsls r0, 3
- adds r1, r0, r1
- movs r0, 0x26
- ldrsh r2, [r1, r0]
- cmp r2, 0x7F
- bgt _08149E68
- adds r0, r2, 0
- cmp r0, 0
- beq _08149E28
- cmp r0, 0x20
- beq _08149E3C
- cmp r2, 0x31
- bgt _08149E4C
- bl Random
- movs r1, 0x7
- ands r0, r1
- bl sub_81498CC
- b _08149E4C
- .align 2, 0
-_08149E24: .4byte gTasks
-_08149E28:
- movs r4, 0
-_08149E2A:
- adds r0, r4, 0
- bl sub_81498CC
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x7
- bls _08149E2A
- b _08149E4C
-_08149E3C:
- ldr r0, _08149E5C @ =0xffff0001
- ldr r1, _08149E60 @ =0x00007fff
- str r1, [sp]
- movs r1, 0x10
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
-_08149E4C:
- ldr r0, _08149E64 @ =gTasks
- adds r1, r5, r6
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x26]
- adds r0, 0x1
- strh r0, [r1, 0x26]
- b _08149E6C
- .align 2, 0
-_08149E5C: .4byte 0xffff0001
-_08149E60: .4byte 0x00007fff
-_08149E64: .4byte gTasks
-_08149E68:
- ldr r0, _08149E74 @ =sub_8149D3C
- str r0, [r1]
-_08149E6C:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08149E74: .4byte sub_8149D3C
- thumb_func_end sub_8149DEC
-
- thumb_func_start nullsub_85
-nullsub_85: @ 8149E78
- bx lr
- thumb_func_end nullsub_85
-
- thumb_func_start sub_8149E7C
-sub_8149E7C: @ 8149E7C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x28
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 24
- lsrs r7, r1, 24
- movs r1, 0
- ldr r3, _08149FB0 @ =sub_8149FC8
- ldr r2, _08149FB4 @ =0x00007fff
-_08149E96:
- lsls r0, r1, 1
- add r0, sp
- adds r0, 0x4
- strh r2, [r0]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0xF
- bls _08149E96
- adds r0, r3, 0
- movs r1, 0
- bl CreateTask
- mov r8, r0
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r0, _08149FB8 @ =gTasks
- mov r1, r8
- lsls r6, r1, 2
- add r6, r8
- lsls r6, 3
- adds r6, r0
- strh r5, [r6, 0xA]
- strh r7, [r6, 0xC]
- movs r1, 0x80
- lsls r1, 1
- strh r1, [r6, 0xE]
- movs r0, 0x10
- strh r0, [r6, 0x10]
- movs r4, 0x80
- lsls r4, 9
- str r1, [sp]
- movs r0, 0x1E
- movs r2, 0
- movs r3, 0
- bl SetOamMatrix
- movs r0, 0x10
- ldrsh r1, [r6, r0]
- adds r0, r4, 0
- bl __divsi3
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- str r1, [sp]
- movs r0, 0x1F
- movs r2, 0
- movs r3, 0
- bl SetOamMatrix
- ldr r1, _08149FBC @ =gSprites
- mov r9, r1
- lsls r2, r5, 4
- adds r2, r5
- lsls r2, 2
- mov r3, r9
- adds r3, 0x1C
- adds r0, r2, r3
- ldr r1, _08149FC0 @ =nullsub_85
- str r1, [r0]
- add r2, r9
- ldrb r1, [r2, 0x1]
- movs r4, 0x4
- negs r4, r4
- adds r0, r4, 0
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0x1]
- ldrb r1, [r2, 0x3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r1
- movs r1, 0x3C
- orrs r0, r1
- strb r0, [r2, 0x3]
- movs r0, 0x3E
- adds r0, r2
- mov r10, r0
- ldrb r1, [r0]
- movs r5, 0x5
- negs r5, r5
- adds r0, r5, 0
- ands r0, r1
- mov r1, r10
- strb r0, [r1]
- ldrb r1, [r2, 0x5]
- lsrs r1, 4
- lsls r1, 5
- ldr r0, _08149FC4 @ =gPlttBufferFaded + 0x200
- mov r10, r0
- add r1, r10
- add r0, sp, 0x4
- movs r2, 0x10
- str r3, [sp, 0x24]
- bl CpuSet
- lsls r1, r7, 4
- adds r1, r7
- lsls r1, 2
- ldr r3, [sp, 0x24]
- adds r3, r1, r3
- ldr r0, _08149FC0 @ =nullsub_85
- str r0, [r3]
- add r1, r9
- ldrb r0, [r1, 0x1]
- ands r4, r0
- movs r0, 0x1
- orrs r4, r0
- strb r4, [r1, 0x1]
- ldrb r0, [r1, 0x3]
- movs r2, 0x3E
- orrs r0, r2
- strb r0, [r1, 0x3]
- adds r2, r1, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- ands r5, r0
- strb r5, [r2]
- ldrb r1, [r1, 0x5]
- lsrs r1, 4
- lsls r1, 5
- add r1, r10
- add r0, sp, 0x4
- movs r2, 0x10
- bl CpuSet
- movs r1, 0
- strh r1, [r6, 0x18]
- mov r0, r8
- add sp, 0x28
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08149FB0: .4byte sub_8149FC8
-_08149FB4: .4byte 0x00007fff
-_08149FB8: .4byte gTasks
-_08149FBC: .4byte gSprites
-_08149FC0: .4byte nullsub_85
-_08149FC4: .4byte gPlttBufferFaded + 0x200
- thumb_func_end sub_8149E7C
-
- thumb_func_start sub_8149FC8
-sub_8149FC8: @ 8149FC8
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08149FE4 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0
- strh r0, [r1, 0x12]
- movs r0, 0x8
- strh r0, [r1, 0x14]
- ldr r0, _08149FE8 @ =sub_8149FEC
- str r0, [r1]
- bx lr
- .align 2, 0
-_08149FE4: .4byte gTasks
-_08149FE8: .4byte sub_8149FEC
- thumb_func_end sub_8149FC8
-
- thumb_func_start sub_8149FEC
-sub_8149FEC: @ 8149FEC
- push {r4,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r1, _0814A00C @ =gTasks
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- adds r2, r0, r1
- movs r1, 0x18
- ldrsh r0, [r2, r1]
- cmp r0, 0
- beq _0814A010
- adds r0, r3, 0
- bl sub_814A208
- b _0814A032
- .align 2, 0
-_0814A00C: .4byte gTasks
-_0814A010:
- ldrh r1, [r2, 0x14]
- movs r4, 0x14
- ldrsh r0, [r2, r4]
- cmp r0, 0x80
- bne _0814A022
- adds r0, r3, 0
- bl sub_814A158
- b _0814A032
-_0814A022:
- adds r0, r1, 0x2
- strh r0, [r2, 0x14]
- ldrh r0, [r2, 0x12]
- movs r1, 0x1
- eors r0, r1
- strh r0, [r2, 0x12]
- ldr r0, _0814A038 @ =sub_814A03C
- str r0, [r2]
-_0814A032:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0814A038: .4byte sub_814A03C
- thumb_func_end sub_8149FEC
-
- thumb_func_start sub_814A03C
-sub_814A03C: @ 814A03C
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _0814A060 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r2, r0, r1
- movs r3, 0x18
- ldrsh r0, [r2, r3]
- adds r5, r1, 0
- cmp r0, 0
- beq _0814A068
- ldr r0, _0814A064 @ =sub_814A208
- str r0, [r2]
- b _0814A14C
- .align 2, 0
-_0814A060: .4byte gTasks
-_0814A064: .4byte sub_814A208
-_0814A068:
- movs r6, 0
- movs r7, 0x12
- ldrsh r0, [r2, r7]
- cmp r0, 0
- bne _0814A0B8
- movs r0, 0xE
- ldrsh r1, [r2, r0]
- movs r3, 0x14
- ldrsh r0, [r2, r3]
- movs r3, 0x80
- lsls r3, 1
- subs r0, r3, r0
- cmp r1, r0
- bge _0814A08E
- ldrh r0, [r2, 0x14]
- ldrh r7, [r2, 0xE]
- adds r0, r7
- strh r0, [r2, 0xE]
- b _0814A092
-_0814A08E:
- strh r3, [r2, 0xE]
- movs r6, 0x1
-_0814A092:
- lsls r2, r4, 2
- adds r0, r2, r4
- lsls r0, 3
- adds r3, r0, r5
- movs r0, 0x10
- ldrsh r1, [r3, r0]
- movs r7, 0x14
- ldrsh r0, [r3, r7]
- adds r0, 0x10
- cmp r1, r0
- ble _0814A0B2
- ldrh r0, [r3, 0x10]
- ldrh r1, [r3, 0x14]
- subs r0, r1
- strh r0, [r3, 0x10]
- b _0814A102
-_0814A0B2:
- movs r0, 0x10
- strh r0, [r3, 0x10]
- b _0814A0FC
-_0814A0B8:
- movs r0, 0x10
- ldrsh r1, [r2, r0]
- movs r3, 0x14
- ldrsh r0, [r2, r3]
- movs r3, 0x80
- lsls r3, 1
- subs r0, r3, r0
- cmp r1, r0
- bge _0814A0D4
- ldrh r0, [r2, 0x14]
- ldrh r7, [r2, 0x10]
- adds r0, r7
- strh r0, [r2, 0x10]
- b _0814A0D8
-_0814A0D4:
- strh r3, [r2, 0x10]
- movs r6, 0x1
-_0814A0D8:
- lsls r2, r4, 2
- adds r0, r2, r4
- lsls r0, 3
- adds r3, r0, r5
- movs r0, 0xE
- ldrsh r1, [r3, r0]
- movs r7, 0x14
- ldrsh r0, [r3, r7]
- adds r0, 0x10
- cmp r1, r0
- ble _0814A0F8
- ldrh r0, [r3, 0xE]
- ldrh r1, [r3, 0x14]
- subs r0, r1
- strh r0, [r3, 0xE]
- b _0814A102
-_0814A0F8:
- movs r0, 0x10
- strh r0, [r3, 0xE]
-_0814A0FC:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
-_0814A102:
- adds r0, r2, r4
- lsls r0, 3
- adds r5, r0, r5
- movs r0, 0xE
- ldrsh r1, [r5, r0]
- movs r4, 0x80
- lsls r4, 9
- adds r0, r4, 0
- bl __divsi3
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- str r1, [sp]
- movs r0, 0x1E
- movs r2, 0
- movs r3, 0
- bl SetOamMatrix
- movs r3, 0x10
- ldrsh r1, [r5, r3]
- adds r0, r4, 0
- bl __divsi3
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- str r1, [sp]
- movs r0, 0x1F
- movs r2, 0
- movs r3, 0
- bl SetOamMatrix
- cmp r6, 0x2
- bne _0814A14C
- ldr r0, _0814A154 @ =sub_8149FEC
- str r0, [r5]
-_0814A14C:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0814A154: .4byte sub_8149FEC
- thumb_func_end sub_814A03C
-
- thumb_func_start sub_814A158
-sub_814A158: @ 814A158
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0814A200 @ =gSprites
- mov r8, r1
- ldr r1, _0814A204 @ =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- movs r2, 0xA
- ldrsh r1, [r4, r2]
- lsls r2, r1, 4
- adds r2, r1
- lsls r2, 2
- add r2, r8
- ldrb r3, [r2, 0x1]
- movs r6, 0x4
- negs r6, r6
- adds r1, r6, 0
- ands r1, r3
- strb r1, [r2, 0x1]
- movs r2, 0xA
- ldrsh r1, [r4, r2]
- lsls r2, r1, 4
- adds r2, r1
- lsls r2, 2
- add r2, r8
- ldrb r3, [r2, 0x3]
- movs r5, 0x3F
- negs r5, r5
- adds r1, r5, 0
- ands r1, r3
- strb r1, [r2, 0x3]
- movs r1, 0xA
- ldrsh r2, [r4, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- add r1, r8
- adds r1, 0x3E
- ldrb r2, [r1]
- movs r3, 0x4
- orrs r2, r3
- strb r2, [r1]
- movs r1, 0xC
- ldrsh r2, [r4, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- add r1, r8
- ldrb r2, [r1, 0x1]
- ands r6, r2
- strb r6, [r1, 0x1]
- movs r1, 0xC
- ldrsh r2, [r4, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- add r1, r8
- ldrb r2, [r1, 0x3]
- ands r5, r2
- strb r5, [r1, 0x3]
- movs r1, 0xC
- ldrsh r2, [r4, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- add r1, r8
- adds r1, 0x3E
- ldrb r3, [r1]
- movs r2, 0x5
- negs r2, r2
- ands r2, r3
- strb r2, [r1]
- bl DestroyTask
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0814A200: .4byte gSprites
-_0814A204: .4byte gTasks
- thumb_func_end sub_814A158
-
- thumb_func_start sub_814A208
-sub_814A208: @ 814A208
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0814A2B0 @ =gSprites
- mov r8, r1
- ldr r1, _0814A2B4 @ =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- movs r2, 0xA
- ldrsh r1, [r4, r2]
- lsls r2, r1, 4
- adds r2, r1
- lsls r2, 2
- add r2, r8
- ldrb r3, [r2, 0x1]
- movs r6, 0x4
- negs r6, r6
- adds r1, r6, 0
- ands r1, r3
- strb r1, [r2, 0x1]
- movs r2, 0xA
- ldrsh r1, [r4, r2]
- lsls r2, r1, 4
- adds r2, r1
- lsls r2, 2
- add r2, r8
- ldrb r3, [r2, 0x3]
- movs r5, 0x3F
- negs r5, r5
- adds r1, r5, 0
- ands r1, r3
- strb r1, [r2, 0x3]
- movs r1, 0xA
- ldrsh r2, [r4, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- add r1, r8
- adds r1, 0x3E
- ldrb r3, [r1]
- movs r2, 0x5
- negs r2, r2
- ands r2, r3
- strb r2, [r1]
- movs r1, 0xC
- ldrsh r2, [r4, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- add r1, r8
- ldrb r2, [r1, 0x1]
- ands r6, r2
- strb r6, [r1, 0x1]
- movs r1, 0xC
- ldrsh r2, [r4, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- add r1, r8
- ldrb r2, [r1, 0x3]
- ands r5, r2
- strb r5, [r1, 0x3]
- movs r1, 0xC
- ldrsh r2, [r4, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- add r1, r8
- adds r1, 0x3E
- ldrb r2, [r1]
- movs r3, 0x4
- orrs r2, r3
- strb r2, [r1]
- bl DestroyTask
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0814A2B0: .4byte gSprites
-_0814A2B4: .4byte gTasks
- thumb_func_end sub_814A208
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s
deleted file mode 100644
index c6d3c0978..000000000
--- a/asm/evolution_scene.s
+++ /dev/null
@@ -1,6717 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start CB2_BeginEvolutionScene
-CB2_BeginEvolutionScene: @ 8111894
- push {lr}
- bl UpdatePaletteFade
- bl RunTasks
- pop {r0}
- bx r0
- thumb_func_end CB2_BeginEvolutionScene
-
- thumb_func_start Task_BeginEvolutionScene
-Task_BeginEvolutionScene: @ 81118A4
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r2, r0, 24
- movs r7, 0
- ldr r1, _081118C8 @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _081118CC
- cmp r0, 0x1
- beq _081118E4
- b _08111918
- .align 2, 0
-_081118C8: .4byte gTasks
-_081118CC:
- movs r0, 0x1
- negs r0, r0
- str r7, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _08111918
-_081118E4:
- ldr r0, _08111920 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08111918
- movs r0, 0xA
- ldrsh r7, [r4, r0]
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- lsls r0, 16
- orrs r7, r0
- ldrh r5, [r4, 0x10]
- ldrb r6, [r4, 0x12]
- ldrh r4, [r4, 0x20]
- lsls r4, 24
- lsrs r4, 24
- adds r0, r2, 0
- bl DestroyTask
- adds r0, r7, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r4, 0
- bl EvolutionScene
-_08111918:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08111920: .4byte gPaletteFade
- thumb_func_end Task_BeginEvolutionScene
-
- thumb_func_start BeginEvolutionScene
-BeginEvolutionScene: @ 8111924
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- mov r8, r0
- adds r4, r1, 0
- adds r5, r2, 0
- adds r6, r3, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- ldr r0, _08111978 @ =Task_BeginEvolutionScene
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0811197C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0
- strh r0, [r1, 0x8]
- mov r0, r8
- strh r0, [r1, 0xA]
- mov r0, r8
- lsrs r0, 16
- strh r0, [r1, 0xC]
- strh r4, [r1, 0x10]
- strh r5, [r1, 0x12]
- strh r6, [r1, 0x20]
- ldr r0, _08111980 @ =CB2_BeginEvolutionScene
- bl SetMainCallback2
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08111978: .4byte Task_BeginEvolutionScene
-_0811197C: .4byte gTasks
-_08111980: .4byte CB2_BeginEvolutionScene
- thumb_func_end BeginEvolutionScene
-
- thumb_func_start EvolutionScene
-EvolutionScene: @ 8111984
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x38
- str r0, [sp, 0x20]
- mov r10, r1
- mov r0, r10
- lsls r0, 16
- lsrs r0, 16
- mov r10, r0
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x24]
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x28]
- movs r0, 0
- bl SetHBlankCallback
- movs r0, 0
- bl SetVBlankCallback
- movs r5, 0
- str r5, [sp, 0x1C]
- add r0, sp, 0x1C
- movs r1, 0xC0
- lsls r1, 19
- ldr r2, _08111C10 @ =0x05006000
- bl CpuSet
- ldr r0, _08111C14 @ =REG_MOSAIC
- strh r5, [r0]
- subs r0, 0xC
- strh r5, [r0]
- adds r0, 0x4
- strh r5, [r0]
- subs r0, 0x2
- strh r5, [r0]
- adds r0, 0x4
- strh r5, [r0]
- adds r0, 0x2
- strh r5, [r0]
- adds r0, 0x2
- strh r5, [r0]
- ldr r4, _08111C18 @ =gWindowConfig_81E6C58
- adds r0, r4, 0
- bl SetUpWindowConfig
- bl ResetPaletteFade
- ldr r0, _08111C1C @ =gUnknown_030042A4
- strh r5, [r0]
- ldr r0, _08111C20 @ =gUnknown_030042A0
- strh r5, [r0]
- ldr r0, _08111C24 @ =gUnknown_030042C0
- strh r5, [r0]
- ldr r0, _08111C28 @ =gUnknown_030041B4
- strh r5, [r0]
- ldr r0, _08111C2C @ =gUnknown_03004288
- strh r5, [r0]
- ldr r0, _08111C30 @ =gUnknown_03004280
- strh r5, [r0]
- ldr r1, _08111C34 @ =gUnknown_030041B0
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _08111C38 @ =gUnknown_030041B8
- strh r5, [r0]
- ldr r0, _08111C3C @ =gUnknown_03004210
- adds r1, r4, 0
- bl InitWindowFromConfig
- ldr r1, _08111C40 @ =gBattleTerrain
- movs r0, 0x9
- strb r0, [r1]
- bl sub_800D6D4
- bl sub_800DAB8
- bl ResetSpriteData
- bl remove_some_task
- bl ResetTasks
- bl FreeAllSpritePalettes
- ldr r0, _08111C44 @ =gReservedSpritePaletteCount
- movs r3, 0x4
- strb r3, [r0]
- ldr r0, [sp, 0x20]
- movs r1, 0x2
- add r2, sp, 0x8
- bl GetMonData
- ldr r0, _08111C48 @ =gStringVar1
- add r1, sp, 0x8
- bl StringCopy10
- ldr r0, _08111C4C @ =gStringVar2
- movs r1, 0xB
- mov r4, r10
- muls r4, r1
- adds r1, r4, 0
- ldr r2, _08111C50 @ =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, [sp, 0x20]
- movs r1, 0xB
- bl GetMonData
- adds r6, r0, 0
- lsls r6, 16
- lsrs r6, 16
- ldr r0, [sp, 0x20]
- movs r1, 0x1
- bl GetMonData
- str r0, [sp, 0x2C]
- ldr r0, [sp, 0x20]
- movs r1, 0
- bl GetMonData
- str r0, [sp, 0x30]
- lsls r0, r6, 3
- ldr r1, _08111C54 @ =gMonFrontPicTable
- adds r0, r1
- lsls r2, r6, 2
- ldr r3, _08111C58 @ =gMonFrontPicCoords
- adds r2, r3
- ldrb r1, [r2]
- ldrb r2, [r2, 0x1]
- ldr r4, _08111C5C @ =gUnknown_081FAF4C
- ldr r3, [r4, 0x4]
- str r3, [sp]
- str r6, [sp, 0x4]
- movs r3, 0x80
- lsls r3, 18
- bl DecompressPicFromTable_2
- adds r0, r6, 0
- ldr r1, [sp, 0x2C]
- ldr r2, [sp, 0x30]
- bl sub_80409C8
- ldr r0, [r0]
- movs r1, 0x88
- lsls r1, 1
- movs r2, 0x20
- bl LoadCompressedPalette
- adds r0, r6, 0
- movs r1, 0x1
- bl GetMonSpriteTemplate_803C56C
- ldr r0, _08111C60 @ =gUnknown_02024E8C
- mov r9, r0
- ldr r1, _08111C64 @ =gDummySpriteAffineAnimTable
- str r1, [r0, 0x10]
- movs r1, 0x78
- movs r2, 0x40
- movs r3, 0x1E
- bl CreateSprite
- lsls r1, r0, 24
- lsrs r2, r1, 24
- ldr r3, _08111C68 @ =0x02014800
- strb r0, [r3]
- ldr r7, _08111C6C @ =gSprites
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- movs r4, 0x1C
- adds r4, r7
- mov r8, r4
- adds r0, r1, r4
- ldr r2, _08111C70 @ =nullsub_37
- str r2, [r0]
- adds r1, r7
- ldrb r2, [r1, 0x5]
- movs r4, 0xF
- adds r0, r4, 0
- ands r0, r2
- movs r2, 0x10
- orrs r0, r2
- strb r0, [r1, 0x5]
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r3, 0x4
- orrs r0, r3
- strb r0, [r1]
- mov r1, r10
- lsls r0, r1, 3
- ldr r2, _08111C54 @ =gMonFrontPicTable
- adds r0, r2
- lsls r2, r1, 2
- ldr r3, _08111C58 @ =gMonFrontPicCoords
- adds r2, r3
- ldrb r1, [r2]
- ldrb r2, [r2, 0x1]
- str r2, [sp, 0x34]
- ldr r2, _08111C5C @ =gUnknown_081FAF4C
- ldr r2, [r2, 0xC]
- str r2, [sp]
- mov r3, r10
- str r3, [sp, 0x4]
- ldr r2, [sp, 0x34]
- movs r3, 0x80
- lsls r3, 18
- bl DecompressPicFromTable_2
- mov r0, r10
- ldr r1, [sp, 0x2C]
- ldr r2, [sp, 0x30]
- bl sub_80409C8
- ldr r0, [r0]
- movs r1, 0x90
- lsls r1, 1
- movs r2, 0x20
- bl LoadCompressedPalette
- mov r0, r10
- movs r1, 0x3
- bl GetMonSpriteTemplate_803C56C
- ldr r0, _08111C64 @ =gDummySpriteAffineAnimTable
- mov r1, r9
- str r0, [r1, 0x10]
- mov r0, r9
- movs r1, 0x78
- movs r2, 0x40
- movs r3, 0x1E
- bl CreateSprite
- lsls r1, r0, 24
- lsrs r2, r1, 24
- ldr r3, _08111C68 @ =0x02014800
- strb r0, [r3, 0x1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- add r8, r1
- ldr r0, _08111C70 @ =nullsub_37
- mov r2, r8
- str r0, [r2]
- adds r1, r7
- ldrb r0, [r1, 0x5]
- ands r4, r0
- movs r0, 0x20
- orrs r4, r0
- strb r4, [r1, 0x5]
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r3, 0x4
- orrs r0, r3
- strb r0, [r1]
- bl sub_8149954
- ldr r0, _08111C74 @ =Task_EvolutionScene
- movs r1, 0
- bl CreateTask
- lsls r1, r0, 24
- lsrs r2, r1, 24
- ldr r4, _08111C68 @ =0x02014800
- strb r0, [r4, 0x2]
- ldr r1, _08111C78 @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- strh r5, [r0, 0x8]
- strh r6, [r0, 0xE]
- mov r1, r10
- strh r1, [r0, 0x10]
- mov r2, sp
- ldrh r2, [r2, 0x20]
- strh r2, [r0, 0xA]
- ldr r3, [sp, 0x20]
- lsrs r1, r3, 16
- strh r1, [r0, 0xC]
- mov r4, sp
- ldrh r4, [r4, 0x24]
- strh r4, [r0, 0x12]
- movs r1, 0x1
- strh r1, [r0, 0x14]
- strh r5, [r0, 0x1E]
- mov r1, sp
- ldrh r1, [r1, 0x28]
- strh r1, [r0, 0x20]
- ldr r0, _08111C7C @ =0x02009000
- ldr r1, _08111C80 @ =gPlttBufferUnfaded + 0x40
- movs r2, 0x60
- bl memcpy
- movs r1, 0x80
- lsls r1, 19
- movs r2, 0xFA
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _08111C84 @ =HBlankCB_EvolutionScene
- bl SetHBlankCallback
- ldr r0, _08111C88 @ =VBlankCB_EvolutionScene
- bl SetVBlankCallback
- bl m4aMPlayAllStop
- ldr r0, _08111C8C @ =CB2_EvolutionSceneUpdate_0
- bl SetMainCallback2
- add sp, 0x38
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08111C10: .4byte 0x05006000
-_08111C14: .4byte REG_MOSAIC
-_08111C18: .4byte gWindowConfig_81E6C58
-_08111C1C: .4byte gUnknown_030042A4
-_08111C20: .4byte gUnknown_030042A0
-_08111C24: .4byte gUnknown_030042C0
-_08111C28: .4byte gUnknown_030041B4
-_08111C2C: .4byte gUnknown_03004288
-_08111C30: .4byte gUnknown_03004280
-_08111C34: .4byte gUnknown_030041B0
-_08111C38: .4byte gUnknown_030041B8
-_08111C3C: .4byte gUnknown_03004210
-_08111C40: .4byte gBattleTerrain
-_08111C44: .4byte gReservedSpritePaletteCount
-_08111C48: .4byte gStringVar1
-_08111C4C: .4byte gStringVar2
-_08111C50: .4byte gSpeciesNames
-_08111C54: .4byte gMonFrontPicTable
-_08111C58: .4byte gMonFrontPicCoords
-_08111C5C: .4byte gUnknown_081FAF4C
-_08111C60: .4byte gUnknown_02024E8C
-_08111C64: .4byte gDummySpriteAffineAnimTable
-_08111C68: .4byte 0x02014800
-_08111C6C: .4byte gSprites
-_08111C70: .4byte nullsub_37
-_08111C74: .4byte Task_EvolutionScene
-_08111C78: .4byte gTasks
-_08111C7C: .4byte 0x02009000
-_08111C80: .4byte gPlttBufferUnfaded + 0x40
-_08111C84: .4byte HBlankCB_EvolutionScene
-_08111C88: .4byte VBlankCB_EvolutionScene
-_08111C8C: .4byte CB2_EvolutionSceneUpdate_0
- thumb_func_end EvolutionScene
-
- thumb_func_start CB2_EvolutionSceneLoadGraphics
-CB2_EvolutionSceneLoadGraphics: @ 8111C90
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- sub sp, 0xC
- ldr r2, _08111E14 @ =gTasks
- ldr r0, _08111E18 @ =0x02014800
- mov r9, r0
- ldrb r1, [r0, 0x2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- movs r1, 0x20
- ldrsh r2, [r0, r1]
- movs r1, 0x64
- adds r4, r2, 0
- muls r4, r1
- ldr r1, _08111E1C @ =gPlayerParty
- adds r4, r1
- ldrh r6, [r0, 0x10]
- adds r0, r4, 0
- movs r1, 0x1
- bl GetMonData
- mov r10, r0
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- mov r8, r0
- movs r0, 0
- bl SetHBlankCallback
- movs r0, 0
- bl SetVBlankCallback
- movs r5, 0
- str r5, [sp, 0x8]
- movs r1, 0xC0
- lsls r1, 19
- ldr r2, _08111E20 @ =0x05006000
- add r0, sp, 0x8
- bl CpuSet
- ldr r0, _08111E24 @ =REG_MOSAIC
- strh r5, [r0]
- subs r0, 0xC
- strh r5, [r0]
- adds r0, 0x4
- strh r5, [r0]
- subs r0, 0x2
- strh r5, [r0]
- adds r0, 0x4
- strh r5, [r0]
- adds r0, 0x2
- strh r5, [r0]
- adds r0, 0x2
- strh r5, [r0]
- ldr r4, _08111E28 @ =gWindowConfig_81E6C58
- adds r0, r4, 0
- bl SetUpWindowConfig
- bl ResetPaletteFade
- ldr r0, _08111E2C @ =gUnknown_030042A4
- strh r5, [r0]
- ldr r0, _08111E30 @ =gUnknown_030042A0
- strh r5, [r0]
- ldr r0, _08111E34 @ =gUnknown_030042C0
- strh r5, [r0]
- ldr r0, _08111E38 @ =gUnknown_030041B4
- strh r5, [r0]
- ldr r0, _08111E3C @ =gUnknown_03004288
- strh r5, [r0]
- ldr r0, _08111E40 @ =gUnknown_03004280
- strh r5, [r0]
- ldr r1, _08111E44 @ =gUnknown_030041B0
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _08111E48 @ =gUnknown_030041B8
- strh r5, [r0]
- ldr r0, _08111E4C @ =gUnknown_03004210
- adds r1, r4, 0
- bl InitWindowFromConfig
- ldr r1, _08111E50 @ =gBattleTerrain
- movs r0, 0x9
- strb r0, [r1]
- bl sub_800D6D4
- bl sub_800DAB8
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- ldr r1, _08111E54 @ =gReservedSpritePaletteCount
- movs r0, 0x4
- strb r0, [r1]
- lsls r0, r6, 3
- ldr r1, _08111E58 @ =gMonFrontPicTable
- adds r0, r1
- ldr r1, _08111E5C @ =gMonFrontPicCoords
- lsls r2, r6, 2
- adds r2, r1
- ldrb r1, [r2]
- ldrb r2, [r2, 0x1]
- movs r3, 0x80
- lsls r3, 18
- ldr r4, _08111E60 @ =gUnknown_081FAF4C
- ldr r4, [r4, 0xC]
- str r4, [sp]
- str r6, [sp, 0x4]
- bl DecompressPicFromTable_2
- adds r0, r6, 0
- mov r1, r10
- mov r2, r8
- bl sub_80409C8
- ldr r0, [r0]
- movs r1, 0x90
- lsls r1, 1
- movs r2, 0x20
- bl LoadCompressedPalette
- adds r0, r6, 0
- movs r1, 0x3
- bl GetMonSpriteTemplate_803C56C
- ldr r0, _08111E64 @ =gUnknown_02024E8C
- ldr r1, _08111E68 @ =gDummySpriteAffineAnimTable
- str r1, [r0, 0x10]
- movs r1, 0x78
- movs r2, 0x40
- movs r3, 0x1E
- bl CreateSprite
- lsls r2, r0, 24
- lsrs r2, 24
- mov r1, r9
- strb r0, [r1, 0x1]
- ldr r3, _08111E6C @ =gSprites
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r0, r3, 0
- adds r0, 0x1C
- adds r0, r1, r0
- ldr r2, _08111E70 @ =nullsub_37
- str r2, [r0]
- adds r1, r3
- ldrb r2, [r1, 0x5]
- movs r0, 0xF
- ands r0, r2
- movs r2, 0x20
- orrs r0, r2
- strb r0, [r1, 0x5]
- movs r1, 0x80
- lsls r1, 19
- movs r2, 0xFA
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _08111E74 @ =HBlankCB_EvolutionScene
- bl SetHBlankCallback
- ldr r0, _08111E78 @ =VBlankCB_EvolutionScene
- bl SetVBlankCallback
- ldr r0, _08111E7C @ =CB2_EvolutionSceneUpdate_0
- bl SetMainCallback2
- movs r0, 0x1
- negs r0, r0
- str r5, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08111E14: .4byte gTasks
-_08111E18: .4byte 0x02014800
-_08111E1C: .4byte gPlayerParty
-_08111E20: .4byte 0x05006000
-_08111E24: .4byte REG_MOSAIC
-_08111E28: .4byte gWindowConfig_81E6C58
-_08111E2C: .4byte gUnknown_030042A4
-_08111E30: .4byte gUnknown_030042A0
-_08111E34: .4byte gUnknown_030042C0
-_08111E38: .4byte gUnknown_030041B4
-_08111E3C: .4byte gUnknown_03004288
-_08111E40: .4byte gUnknown_03004280
-_08111E44: .4byte gUnknown_030041B0
-_08111E48: .4byte gUnknown_030041B8
-_08111E4C: .4byte gUnknown_03004210
-_08111E50: .4byte gBattleTerrain
-_08111E54: .4byte gReservedSpritePaletteCount
-_08111E58: .4byte gMonFrontPicTable
-_08111E5C: .4byte gMonFrontPicCoords
-_08111E60: .4byte gUnknown_081FAF4C
-_08111E64: .4byte gUnknown_02024E8C
-_08111E68: .4byte gDummySpriteAffineAnimTable
-_08111E6C: .4byte gSprites
-_08111E70: .4byte nullsub_37
-_08111E74: .4byte HBlankCB_EvolutionScene
-_08111E78: .4byte VBlankCB_EvolutionScene
-_08111E7C: .4byte CB2_EvolutionSceneUpdate_0
- thumb_func_end CB2_EvolutionSceneLoadGraphics
-
- thumb_func_start CB2_TradeEvolutionSceneLoadGraphics
-CB2_TradeEvolutionSceneLoadGraphics: @ 8111E80
- push {r4-r7,lr}
- sub sp, 0x8
- ldr r2, _08111EB8 @ =gTasks
- ldr r0, _08111EBC @ =0x02014800
- ldrb r1, [r0, 0x2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- movs r1, 0x20
- ldrsh r2, [r0, r1]
- movs r1, 0x64
- muls r2, r1
- ldr r1, _08111EC0 @ =gPlayerParty
- adds r4, r2, r1
- ldrh r7, [r0, 0x10]
- ldr r0, _08111EC4 @ =gMain
- ldr r2, _08111EC8 @ =0x0000043c
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0x6
- bls _08111EAE
- b _081120D6
-_08111EAE:
- lsls r0, 2
- ldr r1, _08111ECC @ =_08111ED0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08111EB8: .4byte gTasks
-_08111EBC: .4byte 0x02014800
-_08111EC0: .4byte gPlayerParty
-_08111EC4: .4byte gMain
-_08111EC8: .4byte 0x0000043c
-_08111ECC: .4byte _08111ED0
- .align 2, 0
-_08111ED0:
- .4byte _08111EEC
- .4byte _08111F68
- .4byte _08111F88
- .4byte _08111FDC
- .4byte _08111FE2
- .4byte _08112048
- .4byte _081120B4
-_08111EEC:
- movs r0, 0x80
- lsls r0, 19
- movs r4, 0
- strh r4, [r0]
- movs r0, 0
- bl SetHBlankCallback
- movs r0, 0
- bl SetVBlankCallback
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- ldr r1, _08111F3C @ =gReservedSpritePaletteCount
- movs r0, 0x4
- strb r0, [r1]
- ldr r0, _08111F40 @ =gUnknown_030042A4
- strh r4, [r0]
- ldr r0, _08111F44 @ =gUnknown_030042A0
- strh r4, [r0]
- ldr r0, _08111F48 @ =gUnknown_030042C0
- strh r4, [r0]
- ldr r0, _08111F4C @ =gUnknown_030041B4
- strh r4, [r0]
- ldr r0, _08111F50 @ =gUnknown_03004288
- strh r4, [r0]
- ldr r0, _08111F54 @ =gUnknown_03004280
- strh r4, [r0]
- ldr r1, _08111F58 @ =gUnknown_030041B0
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _08111F5C @ =gUnknown_030041B8
- strh r4, [r0]
- ldr r1, _08111F60 @ =gMain
- ldr r0, _08111F64 @ =0x0000043c
- adds r1, r0
- b _0811208E
- .align 2, 0
-_08111F3C: .4byte gReservedSpritePaletteCount
-_08111F40: .4byte gUnknown_030042A4
-_08111F44: .4byte gUnknown_030042A0
-_08111F48: .4byte gUnknown_030042C0
-_08111F4C: .4byte gUnknown_030041B4
-_08111F50: .4byte gUnknown_03004288
-_08111F54: .4byte gUnknown_03004280
-_08111F58: .4byte gUnknown_030041B0
-_08111F5C: .4byte gUnknown_030041B8
-_08111F60: .4byte gMain
-_08111F64: .4byte 0x0000043c
-_08111F68:
- ldr r4, _08111F80 @ =gWindowConfig_81E6F84
- adds r0, r4, 0
- bl SetUpWindowConfig
- ldr r0, _08111F84 @ =gUnknown_03004828
- ldr r0, [r0]
- adds r0, 0x4
- adds r1, r4, 0
- bl InitWindowFromConfig
- b _08112088
- .align 2, 0
-_08111F80: .4byte gWindowConfig_81E6F84
-_08111F84: .4byte gUnknown_03004828
-_08111F88:
- ldr r4, _08111FC8 @ =gUnknown_03004828
- ldr r0, [r4]
- adds r0, 0x4
- bl LoadTextWindowGraphics
- movs r0, 0x2
- bl SetTextWindowBaseTileNum
- ldr r1, [r4]
- adds r1, 0x34
- strb r0, [r1]
- ldr r0, [r4]
- adds r0, 0x4
- bl LoadTextWindowGraphics
- bl MenuZeroFillScreen
- bl ResetPaletteFade
- ldr r1, _08111FCC @ =gMain
- ldr r0, _08111FD0 @ =0x0000043c
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, _08111FD4 @ =HBlankCB_EvolutionScene
- bl SetHBlankCallback
- ldr r0, _08111FD8 @ =VBlankCB_TradeEvolutionScene
- bl SetVBlankCallback
- b _081120D6
- .align 2, 0
-_08111FC8: .4byte gUnknown_03004828
-_08111FCC: .4byte gMain
-_08111FD0: .4byte 0x0000043c
-_08111FD4: .4byte HBlankCB_EvolutionScene
-_08111FD8: .4byte VBlankCB_TradeEvolutionScene
-_08111FDC:
- bl sub_804E22C
- b _08112088
-_08111FE2:
- adds r0, r4, 0
- movs r1, 0x1
- bl GetMonData
- adds r6, r0, 0
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- adds r5, r0, 0
- lsls r0, r7, 3
- ldr r1, _08112034 @ =gMonFrontPicTable
- adds r0, r1
- ldr r1, _08112038 @ =gMonFrontPicCoords
- lsls r2, r7, 2
- adds r2, r1
- ldrb r1, [r2]
- ldrb r2, [r2, 0x1]
- movs r3, 0x80
- lsls r3, 18
- ldr r4, _0811203C @ =gUnknown_081FAF4C
- ldr r4, [r4, 0xC]
- str r4, [sp]
- str r7, [sp, 0x4]
- bl DecompressPicFromTable_2
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r5, 0
- bl sub_80409C8
- ldr r0, [r0]
- movs r1, 0x90
- lsls r1, 1
- movs r2, 0x20
- bl LoadCompressedPalette
- ldr r1, _08112040 @ =gMain
- ldr r0, _08112044 @ =0x0000043c
- adds r1, r0
- b _0811208E
- .align 2, 0
-_08112034: .4byte gMonFrontPicTable
-_08112038: .4byte gMonFrontPicCoords
-_0811203C: .4byte gUnknown_081FAF4C
-_08112040: .4byte gMain
-_08112044: .4byte 0x0000043c
-_08112048:
- adds r0, r7, 0
- movs r1, 0x3
- bl GetMonSpriteTemplate_803C56C
- ldr r0, _08112098 @ =gUnknown_02024E8C
- ldr r1, _0811209C @ =gDummySpriteAffineAnimTable
- str r1, [r0, 0x10]
- movs r1, 0x78
- movs r2, 0x40
- movs r3, 0x1E
- bl CreateSprite
- ldr r1, _081120A0 @ =0x02014800
- lsls r2, r0, 24
- lsrs r2, 24
- strb r0, [r1, 0x1]
- ldr r3, _081120A4 @ =gSprites
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r0, r3, 0
- adds r0, 0x1C
- adds r0, r1, r0
- ldr r2, _081120A8 @ =nullsub_37
- str r2, [r0]
- adds r1, r3
- ldrb r2, [r1, 0x5]
- movs r0, 0xF
- ands r0, r2
- movs r2, 0x20
- orrs r0, r2
- strb r0, [r1, 0x5]
-_08112088:
- ldr r1, _081120AC @ =gMain
- ldr r2, _081120B0 @ =0x0000043c
- adds r1, r2
-_0811208E:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _081120D6
- .align 2, 0
-_08112098: .4byte gUnknown_02024E8C
-_0811209C: .4byte gDummySpriteAffineAnimTable
-_081120A0: .4byte 0x02014800
-_081120A4: .4byte gSprites
-_081120A8: .4byte nullsub_37
-_081120AC: .4byte gMain
-_081120B0: .4byte 0x0000043c
-_081120B4:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r0, _081120E0 @ =CB2_EvolutionSceneUpdate_1
- bl SetMainCallback2
- movs r1, 0x80
- lsls r1, 19
- movs r2, 0x9A
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
-_081120D6:
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081120E0: .4byte CB2_EvolutionSceneUpdate_1
- thumb_func_end CB2_TradeEvolutionSceneLoadGraphics
-
- thumb_func_start TradeEvolutionScene
-TradeEvolutionScene: @ 81120E4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x24
- str r0, [sp, 0x1C]
- adds r5, r1, 0
- adds r4, r2, 0
- mov r10, r3
- lsls r5, 16
- lsrs r5, 16
- lsls r4, 24
- lsrs r4, 24
- mov r0, r10
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldr r0, [sp, 0x1C]
- movs r1, 0x2
- add r2, sp, 0x8
- bl GetMonData
- ldr r0, _08112234 @ =gStringVar1
- add r1, sp, 0x8
- bl StringCopy10
- ldr r0, _08112238 @ =gStringVar2
- movs r1, 0xB
- muls r1, r5
- ldr r2, _0811223C @ =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r1, _08112240 @ =gAffineAnimsDisabled
- movs r0, 0x1
- strb r0, [r1]
- ldr r0, [sp, 0x1C]
- movs r1, 0xB
- bl GetMonData
- mov r8, r0
- mov r1, r8
- lsls r1, 16
- lsrs r1, 16
- mov r8, r1
- ldr r0, [sp, 0x1C]
- movs r1, 0
- bl GetMonData
- adds r6, r0, 0
- ldr r0, [sp, 0x1C]
- movs r1, 0x1
- bl GetMonData
- adds r7, r0, 0
- ldr r2, _08112244 @ =0x02014800
- mov r9, r2
- strb r4, [r2]
- lsls r0, r5, 3
- ldr r1, _08112248 @ =gMonFrontPicTable
- adds r0, r1
- ldr r1, _0811224C @ =gMonFrontPicCoords
- lsls r2, r5, 2
- adds r2, r1
- ldrb r1, [r2]
- ldrb r2, [r2, 0x1]
- movs r3, 0x80
- lsls r3, 18
- ldr r4, _08112250 @ =gUnknown_081FAF4C
- ldr r4, [r4, 0x4]
- str r4, [sp]
- str r5, [sp, 0x4]
- bl DecompressPicFromTable_2
- adds r0, r5, 0
- adds r1, r7, 0
- adds r2, r6, 0
- bl sub_80409C8
- ldr r0, [r0]
- movs r1, 0x90
- lsls r1, 1
- movs r2, 0x20
- bl LoadCompressedPalette
- adds r0, r5, 0
- movs r1, 0x1
- bl GetMonSpriteTemplate_803C56C
- ldr r0, _08112254 @ =gUnknown_02024E8C
- ldr r1, _08112258 @ =gDummySpriteAffineAnimTable
- str r1, [r0, 0x10]
- movs r1, 0x78
- movs r2, 0x40
- movs r3, 0x1E
- bl CreateSprite
- lsls r1, r0, 24
- lsrs r2, r1, 24
- mov r1, r9
- strb r0, [r1, 0x1]
- ldr r3, _0811225C @ =gSprites
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r0, r3, 0
- adds r0, 0x1C
- adds r0, r1, r0
- ldr r2, _08112260 @ =nullsub_37
- str r2, [r0]
- adds r1, r3
- ldrb r2, [r1, 0x5]
- movs r0, 0xF
- ands r0, r2
- movs r2, 0x20
- orrs r0, r2
- strb r0, [r1, 0x5]
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1]
- bl sub_8149954
- ldr r0, _08112264 @ =Task_TradeEvolutionScene
- movs r1, 0
- bl CreateTask
- lsls r1, r0, 24
- lsrs r2, r1, 24
- mov r1, r9
- strb r0, [r1, 0x2]
- ldr r1, _08112268 @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- movs r2, 0
- strh r2, [r0, 0x8]
- mov r1, r8
- strh r1, [r0, 0xE]
- strh r5, [r0, 0x10]
- mov r2, sp
- ldrh r2, [r2, 0x1C]
- strh r2, [r0, 0xA]
- ldr r1, [sp, 0x1C]
- lsrs r1, 16
- str r1, [sp, 0x20]
- strh r1, [r0, 0xC]
- movs r1, 0x1
- strh r1, [r0, 0x14]
- movs r1, 0
- strh r1, [r0, 0x1E]
- mov r2, r10
- strh r2, [r0, 0x20]
- ldr r0, _0811226C @ =CB2_EvolutionSceneUpdate_1
- bl SetMainCallback2
- 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
-_08112234: .4byte gStringVar1
-_08112238: .4byte gStringVar2
-_0811223C: .4byte gSpeciesNames
-_08112240: .4byte gAffineAnimsDisabled
-_08112244: .4byte 0x02014800
-_08112248: .4byte gMonFrontPicTable
-_0811224C: .4byte gMonFrontPicCoords
-_08112250: .4byte gUnknown_081FAF4C
-_08112254: .4byte gUnknown_02024E8C
-_08112258: .4byte gDummySpriteAffineAnimTable
-_0811225C: .4byte gSprites
-_08112260: .4byte nullsub_37
-_08112264: .4byte Task_TradeEvolutionScene
-_08112268: .4byte gTasks
-_0811226C: .4byte CB2_EvolutionSceneUpdate_1
- thumb_func_end TradeEvolutionScene
-
- thumb_func_start CB2_EvolutionSceneUpdate_0
-CB2_EvolutionSceneUpdate_0: @ 8112270
- push {lr}
- bl AnimateSprites
- bl BuildOamBuffer
- ldr r0, _0811228C @ =gUnknown_03004210
- bl sub_800374C
- bl UpdatePaletteFade
- bl RunTasks
- pop {r0}
- bx r0
- .align 2, 0
-_0811228C: .4byte gUnknown_03004210
- thumb_func_end CB2_EvolutionSceneUpdate_0
-
- thumb_func_start CB2_EvolutionSceneUpdate_1
-CB2_EvolutionSceneUpdate_1: @ 8112290
- push {lr}
- bl AnimateSprites
- bl BuildOamBuffer
- ldr r0, _081122B0 @ =gUnknown_03004828
- ldr r0, [r0]
- adds r0, 0x4
- bl sub_80035AC
- bl UpdatePaletteFade
- bl RunTasks
- pop {r0}
- bx r0
- .align 2, 0
-_081122B0: .4byte gUnknown_03004828
- thumb_func_end CB2_EvolutionSceneUpdate_1
-
- thumb_func_start CreateShedinja
-CreateShedinja: @ 81122B4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- mov r10, r1
- lsls r0, 16
- lsrs r7, r0, 16
- movs r0, 0
- str r0, [sp]
- ldr r0, _081123F4 @ =gEvolutionTable
- mov r8, r0
- lsls r1, r7, 2
- mov r9, r1
- adds r0, r1, r7
- lsls r4, r0, 3
- mov r0, r8
- adds r6, r4, r0
- ldrh r0, [r6]
- cmp r0, 0xD
- beq _081122E2
- b _081123E2
-_081122E2:
- ldr r1, _081123F8 @ =gPlayerPartyCount
- ldrb r0, [r1]
- cmp r0, 0x5
- bhi _081123E2
- adds r1, r0, 0
- movs r0, 0x64
- muls r1, r0
- ldr r0, _081123FC @ =gPlayerParty
- adds r5, r1, r0
- adds r0, r5, 0
- mov r1, r10
- movs r2, 0x64
- bl CopyMon
- mov r1, r8
- adds r2, r1, r4
- adds r2, 0xC
- adds r0, r5, 0
- movs r1, 0xB
- bl SetMonData
- ldrh r1, [r6, 0xC]
- movs r0, 0xB
- adds r2, r1, 0
- muls r2, r0
- ldr r0, _08112400 @ =gSpeciesNames
- adds r2, r0
- adds r0, r5, 0
- movs r1, 0x2
- bl SetMonData
- adds r0, r5, 0
- movs r1, 0xC
- mov r2, sp
- bl SetMonData
- adds r0, r5, 0
- movs r1, 0x8
- mov r2, sp
- bl SetMonData
- adds r0, r5, 0
- movs r1, 0xA
- mov r2, sp
- bl SetMonData
- movs r4, 0x32
- mov r6, r9
-_08112342:
- adds r0, r5, 0
- adds r1, r4, 0
- mov r2, sp
- bl SetMonData
- adds r4, 0x1
- cmp r4, 0x36
- ble _08112342
- movs r4, 0x43
-_08112354:
- adds r0, r5, 0
- adds r1, r4, 0
- mov r2, sp
- bl SetMonData
- adds r4, 0x1
- cmp r4, 0x4F
- ble _08112354
- adds r0, r5, 0
- movs r1, 0x37
- mov r2, sp
- bl SetMonData
- movs r0, 0xFF
- str r0, [sp]
- adds r0, r5, 0
- movs r1, 0x40
- mov r2, sp
- bl SetMonData
- adds r0, r5, 0
- bl CalculateMonStats
- bl CalculatePlayerPartyCount
- ldr r0, _081123F4 @ =gEvolutionTable
- adds r4, r6, r7
- lsls r4, 3
- adds r4, r0
- ldrh r0, [r4, 0xC]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x2
- bl GetNationalPokedexFlag
- ldrh r0, [r4, 0xC]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl GetNationalPokedexFlag
- adds r0, r5, 0
- movs r1, 0xB
- bl GetMonData
- ldr r1, _08112404 @ =0x0000012f
- cmp r0, r1
- bne _081123E2
- adds r0, r5, 0
- movs r1, 0x3
- bl GetMonData
- cmp r0, 0x1
- bne _081123E2
- mov r0, r10
- movs r1, 0xB
- bl GetMonData
- movs r1, 0x97
- lsls r1, 1
- cmp r0, r1
- bne _081123E2
- ldr r2, _08112408 @ =gUnknown_083F868C
- adds r0, r5, 0
- movs r1, 0x2
- bl SetMonData
-_081123E2:
- 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
-_081123F4: .4byte gEvolutionTable
-_081123F8: .4byte gPlayerPartyCount
-_081123FC: .4byte gPlayerParty
-_08112400: .4byte gSpeciesNames
-_08112404: .4byte 0x0000012f
-_08112408: .4byte gUnknown_083F868C
- thumb_func_end CreateShedinja
-
- thumb_func_start Task_EvolutionScene
-Task_EvolutionScene: @ 811240C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x18
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r2, _08112490 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r3, r0, r2
- movs r1, 0xA
- ldrsh r0, [r3, r1]
- mov r9, r0
- movs r1, 0xC
- ldrsh r0, [r3, r1]
- lsls r0, 16
- mov r1, r9
- orrs r1, r0
- mov r9, r1
- ldr r0, _08112494 @ =gMain
- ldrh r1, [r0, 0x2C]
- adds r6, r2, 0
- adds r4, r0, 0
- cmp r1, 0x2
- bne _0811246E
- movs r2, 0x8
- ldrsh r0, [r3, r2]
- cmp r0, 0x8
- bne _0811246E
- ldrh r1, [r3, 0x12]
- movs r2, 0x1
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _0811246E
- movs r0, 0x10
- strh r0, [r3, 0x8]
- ldr r0, _08112498 @ =gBattleCommunication
- ldrb r1, [r0, 0x2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r1, r0, r6
- ldrb r0, [r1, 0x4]
- cmp r0, 0
- beq _0811246E
- strh r2, [r1, 0x18]
-_0811246E:
- lsls r1, r7, 2
- adds r0, r1, r7
- lsls r0, 3
- adds r0, r6
- movs r3, 0x8
- ldrsh r0, [r0, r3]
- mov r8, r1
- cmp r0, 0x15
- bls _08112484
- bl _08112FD0
-_08112484:
- lsls r0, 2
- ldr r1, _0811249C @ =_081124A0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08112490: .4byte gTasks
-_08112494: .4byte gMain
-_08112498: .4byte gBattleCommunication
-_0811249C: .4byte _081124A0
- .align 2, 0
-_081124A0:
- .4byte _081124F8
- .4byte _0811253C
- .4byte _08112588
- .4byte _08112594
- .4byte _081125BC
- .4byte _081125FC
- .4byte _08112630
- .4byte _0811266C
- .4byte _081126A0
- .4byte _081126E0
- .4byte _081126FC
- .4byte _08112728
- .4byte _08112754
- .4byte _081127A0
- .4byte _0811284C
- .4byte _081128E4
- .4byte _08112934
- .4byte _08112974
- .4byte _081129A0
- .4byte _081129E8
- .4byte _08112A4C
- .4byte _08112A88
-_081124F8:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r2, _08112530 @ =gSprites
- ldr r0, _08112534 @ =0x02014800
- 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]
- ldr r0, _08112538 @ =gTasks
- mov r2, r8
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- b _08112A2E
- .align 2, 0
-_08112530: .4byte gSprites
-_08112534: .4byte 0x02014800
-_08112538: .4byte gTasks
-_0811253C:
- ldr r0, _08112574 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0811254C
- bl _08112FD0
-_0811254C:
- ldr r4, _08112578 @ =gStringVar4
- ldr r1, _0811257C @ =gUnknown_08400C4A
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r0, _08112580 @ =gUnknown_03004210
- movs r1, 0xF
- str r1, [sp]
- adds r1, r4, 0
- movs r2, 0x90
- movs r3, 0x2
- bl sub_8002EB0
- ldr r0, _08112584 @ =gTasks
- mov r3, r8
- adds r1, r3, r7
- lsls r1, 3
- adds r1, r0
- b _08112A2E
- .align 2, 0
-_08112574: .4byte gPaletteFade
-_08112578: .4byte gStringVar4
-_0811257C: .4byte gUnknown_08400C4A
-_08112580: .4byte gUnknown_03004210
-_08112584: .4byte gTasks
-_08112588:
- ldr r0, _08112590 @ =gUnknown_03004210
- ldrh r0, [r0, 0x16]
- b _0811297C
- .align 2, 0
-_08112590: .4byte gUnknown_03004210
-_08112594:
- bl IsCryFinished
- lsls r0, 24
- cmp r0, 0
- bne _081125A2
- bl _08112FD0
-_081125A2:
- movs r0, 0xBC
- lsls r0, 1
- bl PlaySE
- ldr r0, _081125B8 @ =gTasks
- mov r2, r8
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- b _08112A2E
- .align 2, 0
-_081125B8: .4byte gTasks
-_081125BC:
- bl IsSEPlaying
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _081125CC
- bl _08112FD0
-_081125CC:
- ldr r0, _081125F4 @ =0x00000179
- bl PlayNewMapMusic
- ldr r0, _081125F8 @ =gTasks
- mov r3, r8
- adds r1, r3, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- str r4, [sp]
- movs r0, 0x1C
- movs r1, 0x4
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- bl _08112FD0
- .align 2, 0
-_081125F4: .4byte 0x00000179
-_081125F8: .4byte gTasks
-_081125FC:
- ldr r0, _08112624 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0811260C
- bl _08112FD0
-_0811260C:
- movs r0, 0x11
- bl sub_8149970
- ldr r1, _08112628 @ =gBattleCommunication
- strb r0, [r1, 0x2]
- ldr r0, _0811262C @ =gTasks
- mov r2, r8
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- b _08112A2E
- .align 2, 0
-_08112624: .4byte gPaletteFade
-_08112628: .4byte gBattleCommunication
-_0811262C: .4byte gTasks
-_08112630:
- ldr r4, _08112664 @ =gBattleCommunication
- ldrb r0, [r4, 0x2]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r6
- ldrb r0, [r1, 0x4]
- cmp r0, 0
- beq _08112646
- bl _08112FD0
-_08112646:
- mov r3, r8
- adds r1, r3, r7
- lsls r1, 3
- adds r1, r6
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- ldr r1, _08112668 @ =0x02014800
- movs r0, 0x1
- strb r0, [r1, 0x3]
- bl sub_8149A90
- strb r0, [r4, 0x2]
- bl _08112FD0
- .align 2, 0
-_08112664: .4byte gBattleCommunication
-_08112668: .4byte 0x02014800
-_0811266C:
- ldr r4, _08112698 @ =gBattleCommunication
- ldrb r0, [r4, 0x2]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r6
- ldrb r0, [r1, 0x4]
- cmp r0, 0
- beq _08112682
- bl _08112FD0
-_08112682:
- ldr r1, _0811269C @ =0x02014800
- ldrb r0, [r1]
- ldrb r1, [r1, 0x1]
- bl sub_8149E7C
- strb r0, [r4, 0x2]
- mov r0, r8
- adds r1, r0, r7
- lsls r1, 3
- adds r1, r6
- b _08112A2E
- .align 2, 0
-_08112698: .4byte gBattleCommunication
-_0811269C: .4byte 0x02014800
-_081126A0:
- ldr r1, _081126D8 @ =0x02014800
- ldrb r0, [r1, 0x3]
- subs r0, 0x1
- strb r0, [r1, 0x3]
- lsls r0, 24
- cmp r0, 0
- beq _081126B2
- bl _08112FD0
-_081126B2:
- movs r0, 0x3
- strb r0, [r1, 0x3]
- ldr r0, _081126DC @ =gBattleCommunication
- ldrb r1, [r0, 0x2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r6
- ldrb r0, [r0, 0x4]
- cmp r0, 0
- beq _081126CC
- bl _08112FD0
-_081126CC:
- mov r2, r8
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r6
- b _08112A2E
- .align 2, 0
-_081126D8: .4byte 0x02014800
-_081126DC: .4byte gBattleCommunication
-_081126E0:
- bl sub_8149B44
- ldr r1, _081126F4 @ =gBattleCommunication
- strb r0, [r1, 0x2]
- ldr r0, _081126F8 @ =gTasks
- mov r3, r8
- adds r1, r3, r7
- lsls r1, 3
- adds r1, r0
- b _08112A2E
- .align 2, 0
-_081126F4: .4byte gBattleCommunication
-_081126F8: .4byte gTasks
-_081126FC:
- ldr r5, _08112724 @ =gBattleCommunication
- ldrb r0, [r5, 0x2]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r6
- ldrb r0, [r1, 0x4]
- cmp r0, 0
- beq _08112712
- bl _08112FD0
-_08112712:
- mov r0, r8
- adds r4, r0, r7
- lsls r4, 3
- adds r4, r6
- ldrh r0, [r4, 0x10]
- bl sub_8149C20
- strb r0, [r5, 0x2]
- b _08112992
- .align 2, 0
-_08112724: .4byte gBattleCommunication
-_08112728:
- ldr r0, _08112750 @ =gBattleCommunication
- ldrb r1, [r0, 0x2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r6
- ldrb r0, [r0, 0x4]
- cmp r0, 0
- beq _0811273E
- bl _08112FD0
-_0811273E:
- movs r0, 0x21
- bl PlaySE
- mov r2, r8
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r6
- b _08112A2E
- .align 2, 0
-_08112750: .4byte gBattleCommunication
-_08112754:
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- bne _08112762
- bl _08112FD0
-_08112762:
- bl m4aMPlayAllStop
- ldr r0, _08112794 @ =gTasks
- mov r3, r8
- adds r4, r3, r7
- lsls r4, 3
- adds r4, r0
- ldrh r0, [r4, 0x10]
- movs r1, 0
- bl PlayCry1
- ldr r0, _08112798 @ =gPlttBufferUnfaded + 0x40
- ldr r1, _0811279C @ =0x02009000
- movs r2, 0x60
- bl memcpy
- movs r0, 0
- str r0, [sp]
- movs r0, 0x1C
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- b _08112992
- .align 2, 0
-_08112794: .4byte gTasks
-_08112798: .4byte gPlttBufferUnfaded + 0x40
-_0811279C: .4byte 0x02009000
-_081127A0:
- bl IsCryFinished
- lsls r0, 24
- cmp r0, 0
- bne _081127AE
- bl _08112FD0
-_081127AE:
- ldr r0, _08112834 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081127BE
- bl _08112FD0
-_081127BE:
- ldr r4, _08112838 @ =gStringVar4
- ldr r1, _0811283C @ =gUnknown_08400C60
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r0, _08112840 @ =gUnknown_03004210
- movs r1, 0xF
- str r1, [sp]
- adds r1, r4, 0
- movs r2, 0x90
- movs r3, 0x2
- bl sub_8002EB0
- ldr r0, _08112844 @ =0x00000173
- bl PlayBGM
- ldr r2, _08112848 @ =gTasks
- mov r0, r8
- adds r1, r0, r7
- lsls r1, 3
- adds r4, r1, r2
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- adds r2, r1
- adds r2, 0x10
- mov r0, r9
- movs r1, 0xB
- bl SetMonData
- mov r0, r9
- bl CalculateMonStats
- ldrh r1, [r4, 0xE]
- ldrh r2, [r4, 0x10]
- mov r0, r9
- bl EvolutionRenameMon
- ldrh r0, [r4, 0x10]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x2
- bl GetNationalPokedexFlag
- ldrh r0, [r4, 0x10]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl GetNationalPokedexFlag
- movs r0, 0xE
- bl IncrementGameStat
- b _08112FD0
- .align 2, 0
-_08112834: .4byte gPaletteFade
-_08112838: .4byte gStringVar4
-_0811283C: .4byte gUnknown_08400C60
-_08112840: .4byte gUnknown_03004210
-_08112844: .4byte 0x00000173
-_08112848: .4byte gTasks
-_0811284C:
- ldr r0, _081128A4 @ =gUnknown_03004210
- ldrh r0, [r0, 0x16]
- cmp r0, 0
- beq _08112856
- b _08112FD0
-_08112856:
- mov r1, r8
- adds r0, r1, r7
- lsls r0, 3
- adds r5, r0, r6
- ldrb r1, [r5, 0x14]
- mov r0, r9
- bl sub_803B7C8
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0
- beq _081128C4
- movs r2, 0x1E
- ldrsh r4, [r5, r2]
- cmp r4, 0
- bne _081128C4
- bl sub_8053E90
- ldrh r1, [r5, 0x12]
- movs r0, 0x80
- orrs r0, r1
- strh r0, [r5, 0x12]
- strh r4, [r5, 0x14]
- strh r4, [r5, 0x18]
- mov r0, r9
- movs r1, 0x2
- add r2, sp, 0x4
- bl GetMonData
- ldr r0, _081128A8 @ =gBattleTextBuff1
- add r1, sp, 0x4
- bl StringCopy10
- ldr r0, _081128AC @ =0x0000ffff
- cmp r6, r0
- bne _081128B0
- movs r0, 0x15
- strh r0, [r5, 0x8]
- b _08112FD0
- .align 2, 0
-_081128A4: .4byte gUnknown_03004210
-_081128A8: .4byte gBattleTextBuff1
-_081128AC: .4byte 0x0000ffff
-_081128B0:
- ldr r0, _081128C0 @ =0x0000fffe
- cmp r6, r0
- bne _081128B8
- b _08112FD0
-_081128B8:
- movs r0, 0x13
- strh r0, [r5, 0x8]
- b _08112FD0
- .align 2, 0
-_081128C0: .4byte 0x0000fffe
-_081128C4:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _081128E0 @ =gTasks
- mov r3, r8
- adds r1, r3, r7
- lsls r1, 3
- adds r1, r0
- b _08112A2E
- .align 2, 0
-_081128E0: .4byte gTasks
-_081128E4:
- ldr r0, _0811292C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r2, 0x80
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _081128F4
- b _08112FD0
-_081128F4:
- mov r1, r8
- adds r0, r1, r7
- lsls r0, 3
- adds r4, r0, r6
- ldrh r1, [r4, 0x12]
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _0811290A
- bl sub_8053E90
-_0811290A:
- movs r2, 0x1E
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _0811291A
- ldrh r0, [r4, 0xE]
- mov r1, r9
- bl CreateShedinja
-_0811291A:
- adds r0, r7, 0
- bl DestroyTask
- ldr r0, _08112930 @ =gUnknown_03005E94
- ldr r0, [r0]
- bl SetMainCallback2
- b _08112FD0
- .align 2, 0
-_0811292C: .4byte gPaletteFade
-_08112930: .4byte gUnknown_03005E94
-_08112934:
- ldr r0, _08112968 @ =gBattleCommunication
- ldrb r1, [r0, 0x2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r6
- ldrb r0, [r0, 0x4]
- cmp r0, 0
- beq _08112948
- b _08112FD0
-_08112948:
- bl m4aMPlayAllStop
- ldr r0, _0811296C @ =0x0006001c
- ldr r1, _08112970 @ =0x00007fff
- str r1, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- mov r3, r8
- adds r1, r3, r7
- lsls r1, 3
- adds r1, r6
- b _08112A2E
- .align 2, 0
-_08112968: .4byte gBattleCommunication
-_0811296C: .4byte 0x0006001c
-_08112970: .4byte 0x00007fff
-_08112974:
- ldr r0, _0811299C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
-_0811297C:
- cmp r0, 0
- beq _08112982
- b _08112FD0
-_08112982:
- mov r0, r8
- adds r4, r0, r7
- lsls r4, 3
- adds r4, r6
- ldrh r0, [r4, 0xE]
- movs r1, 0
- bl PlayCry1
-_08112992:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _08112FD0
- .align 2, 0
-_0811299C: .4byte gPaletteFade
-_081129A0:
- bl IsCryFinished
- lsls r0, 24
- cmp r0, 0
- bne _081129AC
- b _08112FD0
-_081129AC:
- ldr r4, _081129D8 @ =gStringVar4
- ldr r1, _081129DC @ =gUnknown_08400C8D
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r0, _081129E0 @ =gUnknown_03004210
- movs r1, 0xF
- str r1, [sp]
- adds r1, r4, 0
- movs r2, 0x90
- movs r3, 0x2
- bl sub_8002EB0
- ldr r1, _081129E4 @ =gTasks
- mov r2, r8
- adds r0, r2, r7
- lsls r0, 3
- adds r0, r1
- movs r1, 0x1
- strh r1, [r0, 0x1E]
- b _08112F9A
- .align 2, 0
-_081129D8: .4byte gStringVar4
-_081129DC: .4byte gUnknown_08400C8D
-_081129E0: .4byte gUnknown_03004210
-_081129E4: .4byte gTasks
-_081129E8:
- ldr r4, _08112A38 @ =gUnknown_03004210
- ldrh r0, [r4, 0x16]
- cmp r0, 0
- beq _081129F2
- b _08112FD0
-_081129F2:
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- beq _081129FE
- b _08112FD0
-_081129FE:
- bl sub_8024CEC
- ldr r0, _08112A3C @ =0x0000016f
- bl PlayFanfare
- ldr r0, _08112A40 @ =gBattleStringsTable
- ldr r0, [r0, 0xC]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r1, _08112A44 @ =gDisplayedStringBattle
- movs r0, 0xF
- str r0, [sp]
- adds r0, r4, 0
- movs r2, 0x90
- movs r3, 0x2
- bl sub_8002EB0
- ldr r0, _08112A48 @ =gTasks
- mov r3, r8
- adds r1, r3, r7
- lsls r1, 3
- adds r1, r0
- movs r0, 0x40
- strh r0, [r1, 0x14]
-_08112A2E:
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _08112FD0
- .align 2, 0
-_08112A38: .4byte gUnknown_03004210
-_08112A3C: .4byte 0x0000016f
-_08112A40: .4byte gBattleStringsTable
-_08112A44: .4byte gDisplayedStringBattle
-_08112A48: .4byte gTasks
-_08112A4C:
- ldr r0, _08112A80 @ =gUnknown_03004210
- ldrh r0, [r0, 0x16]
- cmp r0, 0
- beq _08112A56
- b _08112FD0
-_08112A56:
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- beq _08112A62
- b _08112FD0
-_08112A62:
- ldr r0, _08112A84 @ =gTasks
- mov r2, r8
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x14]
- subs r0, 0x1
- strh r0, [r1, 0x14]
- lsls r0, 16
- cmp r0, 0
- beq _08112A7A
- b _08112FD0
-_08112A7A:
- movs r0, 0xE
- strh r0, [r1, 0x8]
- b _08112FD0
- .align 2, 0
-_08112A80: .4byte gUnknown_03004210
-_08112A84: .4byte gTasks
-_08112A88:
- mov r3, r8
- adds r0, r3, r7
- lsls r0, 3
- adds r0, r6
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- cmp r0, 0xB
- bls _08112A9A
- b _08112FD0
-_08112A9A:
- lsls r0, 2
- ldr r1, _08112AA4 @ =_08112AA8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08112AA4: .4byte _08112AA8
- .align 2, 0
-_08112AA8:
- .4byte _08112AD8
- .4byte _08112B2C
- .4byte _08112B7C
- .4byte _08112BC0
- .4byte _08112C0C
- .4byte _08112D3C
- .4byte _08112D8C
- .4byte _08112E98
- .4byte _08112EE8
- .4byte _08112F38
- .4byte _08112F78
- .4byte _08112FB0
-_08112AD8:
- ldr r4, _08112B1C @ =gUnknown_03004210
- ldrh r0, [r4, 0x16]
- cmp r0, 0
- beq _08112AE2
- b _08112FD0
-_08112AE2:
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- beq _08112AEE
- b _08112FD0
-_08112AEE:
- bl sub_8024CEC
- ldr r0, _08112B20 @ =gBattleStringsTable
- ldr r0, [r0, 0x10]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r1, _08112B24 @ =gDisplayedStringBattle
- movs r0, 0xF
- str r0, [sp]
- adds r0, r4, 0
- movs r2, 0x90
- movs r3, 0x2
- bl sub_8002EB0
- ldr r0, _08112B28 @ =gTasks
- mov r2, r8
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x18]
- adds r0, 0x1
- b _08112FCE
- .align 2, 0
-_08112B1C: .4byte gUnknown_03004210
-_08112B20: .4byte gBattleStringsTable
-_08112B24: .4byte gDisplayedStringBattle
-_08112B28: .4byte gTasks
-_08112B2C:
- ldr r4, _08112B6C @ =gUnknown_03004210
- ldrh r0, [r4, 0x16]
- cmp r0, 0
- beq _08112B36
- b _08112FD0
-_08112B36:
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- beq _08112B42
- b _08112FD0
-_08112B42:
- ldr r0, _08112B70 @ =gBattleStringsTable
- ldr r0, [r0, 0x14]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r1, _08112B74 @ =gDisplayedStringBattle
- movs r0, 0xF
- str r0, [sp]
- adds r0, r4, 0
- movs r2, 0x90
- movs r3, 0x2
- bl sub_8002EB0
- ldr r0, _08112B78 @ =gTasks
- mov r3, r8
- adds r1, r3, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x18]
- adds r0, 0x1
- b _08112FCE
- .align 2, 0
-_08112B6C: .4byte gUnknown_03004210
-_08112B70: .4byte gBattleStringsTable
-_08112B74: .4byte gDisplayedStringBattle
-_08112B78: .4byte gTasks
-_08112B7C:
- ldr r4, _08112BF8 @ =gUnknown_03004210
- ldrh r0, [r4, 0x16]
- cmp r0, 0
- beq _08112B86
- b _08112FD0
-_08112B86:
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- bne _08112BC0
- ldr r0, _08112BFC @ =gBattleStringsTable
- ldr r0, [r0, 0x18]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r1, _08112C00 @ =gDisplayedStringBattle
- movs r0, 0xF
- str r0, [sp]
- adds r0, r4, 0
- movs r2, 0x90
- movs r3, 0x2
- bl sub_8002EB0
- ldr r0, _08112C04 @ =gTasks
- mov r2, r8
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- movs r0, 0x5
- strh r0, [r1, 0x1A]
- movs r0, 0x9
- strh r0, [r1, 0x1C]
- ldrh r0, [r1, 0x18]
- adds r0, 0x1
- strh r0, [r1, 0x18]
-_08112BC0:
- ldr r0, _08112BF8 @ =gUnknown_03004210
- ldrh r0, [r0, 0x16]
- cmp r0, 0
- beq _08112BCA
- b _08112FD0
-_08112BCA:
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- beq _08112BD6
- b _08112FD0
-_08112BD6:
- bl sub_8023A80
- ldr r0, _08112C04 @ =gTasks
- mov r3, r8
- adds r1, r3, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x18]
- adds r0, 0x1
- movs r2, 0
- strh r0, [r1, 0x18]
- ldr r0, _08112C08 @ =gBattleCommunication
- strb r2, [r0, 0x1]
- bl sub_802BC6C
- b _08112FD0
- .align 2, 0
-_08112BF8: .4byte gUnknown_03004210
-_08112BFC: .4byte gBattleStringsTable
-_08112C00: .4byte gDisplayedStringBattle
-_08112C04: .4byte gTasks
-_08112C08: .4byte gBattleCommunication
-_08112C0C:
- ldr r0, _08112CA4 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08112C32
- ldr r4, _08112CA8 @ =gBattleCommunication
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- beq _08112C32
- movs r0, 0x5
- bl PlaySE
- bl nullsub_6
- movs r0, 0
- strb r0, [r4, 0x1]
- bl sub_802BC6C
-_08112C32:
- ldr r0, _08112CA4 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08112C58
- ldr r4, _08112CA8 @ =gBattleCommunication
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- bne _08112C58
- movs r0, 0x5
- bl PlaySE
- bl nullsub_6
- movs r0, 0x1
- strb r0, [r4, 0x1]
- bl sub_802BC6C
-_08112C58:
- ldr r0, _08112CA4 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08112CE2
- bl sub_8023AD8
- ldr r0, _08112CAC @ =gBattleStringsTable
- movs r1, 0x92
- lsls r1, 3
- adds r0, r1
- ldr r0, [r0]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r0, _08112CB0 @ =gUnknown_03004210
- ldr r1, _08112CB4 @ =gDisplayedStringBattle
- movs r2, 0xF
- str r2, [sp]
- movs r2, 0x90
- movs r3, 0x2
- bl sub_8002EB0
- movs r0, 0x5
- bl PlaySE
- ldr r0, _08112CA8 @ =gBattleCommunication
- ldrb r2, [r0, 0x1]
- cmp r2, 0
- beq _08112CBC
- ldr r0, _08112CB8 @ =gTasks
- mov r2, r8
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x1C]
- strh r0, [r1, 0x18]
- b _08112CE2
- .align 2, 0
-_08112CA4: .4byte gMain
-_08112CA8: .4byte gBattleCommunication
-_08112CAC: .4byte gBattleStringsTable
-_08112CB0: .4byte gUnknown_03004210
-_08112CB4: .4byte gDisplayedStringBattle
-_08112CB8: .4byte gTasks
-_08112CBC:
- ldr r0, _08112D28 @ =gTasks
- mov r3, r8
- adds r1, r3, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x1A]
- strh r0, [r1, 0x18]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- bne _08112CE2
- movs r0, 0x1
- negs r0, r0
- str r2, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
-_08112CE2:
- ldr r0, _08112D2C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08112CF0
- b _08112FD0
-_08112CF0:
- bl sub_8023AD8
- ldr r0, _08112D30 @ =gBattleStringsTable
- movs r1, 0x92
- lsls r1, 3
- adds r0, r1
- ldr r0, [r0]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r0, _08112D34 @ =gUnknown_03004210
- ldr r1, _08112D38 @ =gDisplayedStringBattle
- movs r2, 0xF
- str r2, [sp]
- movs r2, 0x90
- movs r3, 0x2
- bl sub_8002EB0
- movs r0, 0x5
- bl PlaySE
- ldr r1, _08112D28 @ =gTasks
- mov r2, r8
- adds r0, r2, r7
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0x1C]
- strh r1, [r0, 0x18]
- b _08112FD0
- .align 2, 0
-_08112D28: .4byte gTasks
-_08112D2C: .4byte gMain
-_08112D30: .4byte gBattleStringsTable
-_08112D34: .4byte gUnknown_03004210
-_08112D38: .4byte gDisplayedStringBattle
-_08112D3C:
- ldr r0, _08112D78 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08112D4A
- b _08112FD0
-_08112D4A:
- ldr r0, _08112D7C @ =gPlayerParty
- mov r3, r8
- adds r5, r3, r7
- lsls r5, 3
- adds r5, r6
- ldrh r1, [r5, 0x20]
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _08112D80 @ =gPlayerPartyCount
- ldrb r2, [r2]
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldr r3, _08112D84 @ =CB2_EvolutionSceneLoadGraphics
- ldr r4, _08112D88 @ =word_2024E82
- ldrh r4, [r4]
- str r4, [sp]
- bl sub_809D9F0
- ldrh r0, [r5, 0x18]
- adds r0, 0x1
- strh r0, [r5, 0x18]
- b _08112FD0
- .align 2, 0
-_08112D78: .4byte gPaletteFade
-_08112D7C: .4byte gPlayerParty
-_08112D80: .4byte gPlayerPartyCount
-_08112D84: .4byte CB2_EvolutionSceneLoadGraphics
-_08112D88: .4byte word_2024E82
-_08112D8C:
- ldr r0, _08112DC0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08112D9A
- b _08112FD0
-_08112D9A:
- ldr r1, [r4, 0x4]
- ldr r0, _08112DC4 @ =CB2_EvolutionSceneUpdate_0
- cmp r1, r0
- beq _08112DA4
- b _08112FD0
-_08112DA4:
- bl sub_809FA30
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x4
- bne _08112DCC
- ldr r0, _08112DC8 @ =gTasks
- mov r2, r8
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- movs r0, 0x9
- b _08112FCE
- .align 2, 0
-_08112DC0: .4byte gPaletteFade
-_08112DC4: .4byte CB2_EvolutionSceneUpdate_0
-_08112DC8: .4byte gTasks
-_08112DCC:
- adds r1, r6, 0
- adds r1, 0xD
- mov r0, r9
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- bl IsHMMove2
- cmp r0, 0
- beq _08112E24
- ldr r0, _08112E10 @ =gBattleStringsTable
- ldr r3, _08112E14 @ =0x000004cc
- adds r0, r3
- ldr r0, [r0]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r0, _08112E18 @ =gUnknown_03004210
- ldr r1, _08112E1C @ =gDisplayedStringBattle
- movs r2, 0xF
- str r2, [sp]
- movs r2, 0x90
- movs r3, 0x2
- bl sub_8002EB0
- ldr r1, _08112E20 @ =gTasks
- mov r2, r8
- adds r0, r2, r7
- lsls r0, 3
- adds r0, r1
- movs r1, 0xB
- strh r1, [r0, 0x18]
- b _08112FD0
- .align 2, 0
-_08112E10: .4byte gBattleStringsTable
-_08112E14: .4byte 0x000004cc
-_08112E18: .4byte gUnknown_03004210
-_08112E1C: .4byte gDisplayedStringBattle
-_08112E20: .4byte gTasks
-_08112E24:
- ldr r1, _08112E80 @ =gBattleTextBuff2
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x2
- strb r0, [r1, 0x1]
- strb r4, [r1, 0x2]
- lsrs r0, r4, 8
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- lsls r4, r6, 24
- lsrs r4, 24
- mov r0, r9
- adds r1, r4, 0
- bl RemoveMonPPBonus
- ldr r0, _08112E84 @ =word_2024E82
- ldrh r1, [r0]
- mov r0, r9
- adds r2, r4, 0
- bl SetMonMoveSlot
- ldr r0, _08112E88 @ =gBattleStringsTable
- movs r3, 0xCF
- lsls r3, 2
- adds r0, r3
- ldr r0, [r0]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r0, _08112E8C @ =gUnknown_03004210
- ldr r1, _08112E90 @ =gDisplayedStringBattle
- movs r2, 0xF
- str r2, [sp]
- movs r2, 0x90
- movs r3, 0x2
- bl sub_8002EB0
- ldr r0, _08112E94 @ =gTasks
- mov r2, r8
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x18]
- adds r0, 0x1
- b _08112FCE
- .align 2, 0
-_08112E80: .4byte gBattleTextBuff2
-_08112E84: .4byte word_2024E82
-_08112E88: .4byte gBattleStringsTable
-_08112E8C: .4byte gUnknown_03004210
-_08112E90: .4byte gDisplayedStringBattle
-_08112E94: .4byte gTasks
-_08112E98:
- ldr r4, _08112ED8 @ =gUnknown_03004210
- ldrh r0, [r4, 0x16]
- cmp r0, 0
- beq _08112EA2
- b _08112FD0
-_08112EA2:
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- beq _08112EAE
- b _08112FD0
-_08112EAE:
- ldr r0, _08112EDC @ =gBattleStringsTable
- ldr r0, [r0, 0x1C]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r1, _08112EE0 @ =gDisplayedStringBattle
- movs r0, 0xF
- str r0, [sp]
- adds r0, r4, 0
- movs r2, 0x90
- movs r3, 0x2
- bl sub_8002EB0
- ldr r0, _08112EE4 @ =gTasks
- mov r3, r8
- adds r1, r3, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x18]
- adds r0, 0x1
- b _08112FCE
- .align 2, 0
-_08112ED8: .4byte gUnknown_03004210
-_08112EDC: .4byte gBattleStringsTable
-_08112EE0: .4byte gDisplayedStringBattle
-_08112EE4: .4byte gTasks
-_08112EE8:
- ldr r4, _08112F28 @ =gUnknown_03004210
- ldrh r0, [r4, 0x16]
- cmp r0, 0
- bne _08112FD0
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- bne _08112FD0
- ldr r0, _08112F2C @ =gBattleStringsTable
- movs r1, 0xD0
- lsls r1, 2
- adds r0, r1
- ldr r0, [r0]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r1, _08112F30 @ =gDisplayedStringBattle
- movs r0, 0xF
- str r0, [sp]
- adds r0, r4, 0
- movs r2, 0x90
- movs r3, 0x2
- bl sub_8002EB0
- ldr r1, _08112F34 @ =gTasks
- mov r2, r8
- adds r0, r2, r7
- lsls r0, 3
- adds r0, r1
- movs r1, 0x13
- strh r1, [r0, 0x8]
- b _08112FD0
- .align 2, 0
-_08112F28: .4byte gUnknown_03004210
-_08112F2C: .4byte gBattleStringsTable
-_08112F30: .4byte gDisplayedStringBattle
-_08112F34: .4byte gTasks
-_08112F38:
- ldr r0, _08112F68 @ =gBattleStringsTable
- ldr r0, [r0, 0x20]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r0, _08112F6C @ =gUnknown_03004210
- ldr r1, _08112F70 @ =gDisplayedStringBattle
- movs r2, 0xF
- str r2, [sp]
- movs r2, 0x90
- movs r3, 0x2
- bl sub_8002EB0
- ldr r1, _08112F74 @ =gTasks
- mov r3, r8
- adds r0, r3, r7
- lsls r0, 3
- adds r0, r1
- movs r2, 0
- movs r1, 0xA
- strh r1, [r0, 0x1A]
- strh r2, [r0, 0x1C]
- movs r1, 0x3
- strh r1, [r0, 0x18]
- b _08112FD0
- .align 2, 0
-_08112F68: .4byte gBattleStringsTable
-_08112F6C: .4byte gUnknown_03004210
-_08112F70: .4byte gDisplayedStringBattle
-_08112F74: .4byte gTasks
-_08112F78:
- ldr r0, _08112FA0 @ =gBattleStringsTable
- ldr r0, [r0, 0x24]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r0, _08112FA4 @ =gUnknown_03004210
- ldr r1, _08112FA8 @ =gDisplayedStringBattle
- movs r2, 0xF
- str r2, [sp]
- movs r2, 0x90
- movs r3, 0x2
- bl sub_8002EB0
- ldr r1, _08112FAC @ =gTasks
- mov r2, r8
- adds r0, r2, r7
- lsls r0, 3
- adds r0, r1
-_08112F9A:
- movs r1, 0xE
- strh r1, [r0, 0x8]
- b _08112FD0
- .align 2, 0
-_08112FA0: .4byte gBattleStringsTable
-_08112FA4: .4byte gUnknown_03004210
-_08112FA8: .4byte gDisplayedStringBattle
-_08112FAC: .4byte gTasks
-_08112FB0:
- ldr r0, _08112FE0 @ =gUnknown_03004210
- ldrh r0, [r0, 0x16]
- cmp r0, 0
- bne _08112FD0
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- bne _08112FD0
- ldr r0, _08112FE4 @ =gTasks
- mov r3, r8
- adds r1, r3, r7
- lsls r1, 3
- adds r1, r0
- movs r0, 0x5
-_08112FCE:
- strh r0, [r1, 0x18]
-_08112FD0:
- add sp, 0x18
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08112FE0: .4byte gUnknown_03004210
-_08112FE4: .4byte gTasks
- thumb_func_end Task_EvolutionScene
-
- thumb_func_start Task_TradeEvolutionScene
-Task_TradeEvolutionScene: @ 8112FE8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x18
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r2, _0811302C @ =gTasks
- lsls r1, r7, 2
- adds r1, r7
- lsls r1, 3
- adds r1, r2
- movs r3, 0xA
- ldrsh r0, [r1, r3]
- mov r8, r0
- movs r3, 0xC
- ldrsh r0, [r1, r3]
- lsls r0, 16
- mov r3, r8
- orrs r3, r0
- mov r8, r3
- movs r3, 0x8
- ldrsh r0, [r1, r3]
- adds r6, r2, 0
- cmp r0, 0x11
- bls _08113020
- bl _08113B3A
-_08113020:
- lsls r0, 2
- ldr r1, _08113030 @ =_08113034
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0811302C: .4byte gTasks
-_08113030: .4byte _08113034
- .align 2, 0
-_08113034:
- .4byte _0811307C
- .4byte _081130B8
- .4byte _081130DC
- .4byte _0811310C
- .4byte _0811314C
- .4byte _0811318C
- .4byte _081131C8
- .4byte _081131F4
- .4byte _0811322C
- .4byte _08113248
- .4byte _08113274
- .4byte _081132A8
- .4byte _081132F8
- .4byte _081133A8
- .4byte _0811346C
- .4byte _08113490
- .4byte _081134F8
- .4byte _08113538
-_0811307C:
- ldr r4, _081130A8 @ =gStringVar4
- ldr r1, _081130AC @ =gUnknown_08400C4A
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r0, _081130B0 @ =gUnknown_03004828
- ldr r1, [r0]
- adds r0, r1, 0x4
- adds r1, 0x34
- ldrb r2, [r1]
- movs r1, 0xF
- str r1, [sp]
- adds r1, r4, 0
- movs r3, 0x2
- bl sub_8002EB0
- ldr r1, _081130B4 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- b _08113298
- .align 2, 0
-_081130A8: .4byte gStringVar4
-_081130AC: .4byte gUnknown_08400C4A
-_081130B0: .4byte gUnknown_03004828
-_081130B4: .4byte gTasks
-_081130B8:
- ldr r0, _081130D8 @ =gUnknown_03004828
- ldr r0, [r0]
- ldrh r0, [r0, 0x1A]
- cmp r0, 0
- beq _081130C6
- bl _08113B3A
-_081130C6:
- lsls r4, r7, 2
- adds r4, r7
- lsls r4, 3
- adds r4, r6
- ldrh r0, [r4, 0xE]
- movs r1, 0
- bl PlayCry1
- b _081132E2
- .align 2, 0
-_081130D8: .4byte gUnknown_03004828
-_081130DC:
- bl IsCryFinished
- lsls r0, 24
- cmp r0, 0
- bne _081130EA
- bl _08113B3A
-_081130EA:
- ldr r0, _08113104 @ =0x00000179
- bl m4aSongNumStop
- movs r0, 0xBC
- lsls r0, 1
- bl PlaySE
- ldr r1, _08113108 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- b _08113298
- .align 2, 0
-_08113104: .4byte 0x00000179
-_08113108: .4byte gTasks
-_0811310C:
- bl IsSEPlaying
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- beq _0811311C
- bl _08113B3A
-_0811311C:
- ldr r0, _08113144 @ =0x00000179
- bl PlayBGM
- ldr r1, _08113148 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
- str r5, [sp]
- movs r0, 0x1C
- movs r1, 0x4
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- bl _08113B3A
- .align 2, 0
-_08113144: .4byte 0x00000179
-_08113148: .4byte gTasks
-_0811314C:
- ldr r0, _08113180 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0811315C
- bl _08113B3A
-_0811315C:
- movs r1, 0x80
- lsls r1, 19
- movs r2, 0x9A
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- movs r0, 0x11
- bl sub_8149970
- ldr r1, _08113184 @ =gBattleCommunication
- strb r0, [r1, 0x2]
- ldr r1, _08113188 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- b _08113298
- .align 2, 0
-_08113180: .4byte gPaletteFade
-_08113184: .4byte gBattleCommunication
-_08113188: .4byte gTasks
-_0811318C:
- ldr r4, _081131C0 @ =gBattleCommunication
- ldrb r0, [r4, 0x2]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r6
- ldrb r0, [r1, 0x4]
- cmp r0, 0
- beq _081131A2
- bl _08113B3A
-_081131A2:
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r6
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
- ldr r1, _081131C4 @ =0x02014800
- movs r0, 0x1
- strb r0, [r1, 0x3]
- bl sub_8149A90
- strb r0, [r4, 0x2]
- bl _08113B3A
- .align 2, 0
-_081131C0: .4byte gBattleCommunication
-_081131C4: .4byte 0x02014800
-_081131C8:
- ldr r4, _081131EC @ =gBattleCommunication
- ldrb r0, [r4, 0x2]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r6
- ldrb r0, [r1, 0x4]
- cmp r0, 0
- beq _081131DE
- bl _08113B3A
-_081131DE:
- ldr r1, _081131F0 @ =0x02014800
- ldrb r0, [r1]
- ldrb r1, [r1, 0x1]
- bl sub_8149E7C
- strb r0, [r4, 0x2]
- b _08113290
- .align 2, 0
-_081131EC: .4byte gBattleCommunication
-_081131F0: .4byte 0x02014800
-_081131F4:
- ldr r1, _08113224 @ =0x02014800
- ldrb r0, [r1, 0x3]
- subs r0, 0x1
- strb r0, [r1, 0x3]
- lsls r0, 24
- cmp r0, 0
- beq _08113206
- bl _08113B3A
-_08113206:
- movs r0, 0x3
- strb r0, [r1, 0x3]
- ldr r0, _08113228 @ =gBattleCommunication
- ldrb r1, [r0, 0x2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r6
- ldrb r0, [r0, 0x4]
- cmp r0, 0
- beq _08113220
- bl _08113B3A
-_08113220:
- b _08113290
- .align 2, 0
-_08113224: .4byte 0x02014800
-_08113228: .4byte gBattleCommunication
-_0811322C:
- bl sub_8149B44
- ldr r1, _08113240 @ =gBattleCommunication
- strb r0, [r1, 0x2]
- ldr r1, _08113244 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- b _08113298
- .align 2, 0
-_08113240: .4byte gBattleCommunication
-_08113244: .4byte gTasks
-_08113248:
- ldr r5, _08113270 @ =gBattleCommunication
- ldrb r0, [r5, 0x2]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r6
- ldrb r0, [r1, 0x4]
- cmp r0, 0
- beq _0811325E
- bl _08113B3A
-_0811325E:
- lsls r4, r7, 2
- adds r4, r7
- lsls r4, 3
- adds r4, r6
- ldrh r0, [r4, 0x10]
- bl sub_8149D5C
- strb r0, [r5, 0x2]
- b _081132E2
- .align 2, 0
-_08113270: .4byte gBattleCommunication
-_08113274:
- ldr r0, _081132A4 @ =gBattleCommunication
- ldrb r1, [r0, 0x2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r6
- ldrb r0, [r0, 0x4]
- cmp r0, 0
- beq _0811328A
- bl _08113B3A
-_0811328A:
- movs r0, 0x21
- bl PlaySE
-_08113290:
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r6
-_08113298:
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
- bl _08113B3A
- .align 2, 0
-_081132A4: .4byte gBattleCommunication
-_081132A8:
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- bne _081132B6
- bl _08113B3A
-_081132B6:
- ldr r0, _081132EC @ =gTasks
- lsls r4, r7, 2
- adds r4, r7
- lsls r4, 3
- adds r4, r0
- ldrh r0, [r4, 0x10]
- movs r1, 0
- bl PlayCry1
- ldr r0, _081132F0 @ =gPlttBufferUnfaded + 0x40
- ldr r1, _081132F4 @ =0x02009000
- movs r2, 0x60
- bl memcpy
- movs r0, 0
- str r0, [sp]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
-_081132E2:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- bl _08113B3A
- .align 2, 0
-_081132EC: .4byte gTasks
-_081132F0: .4byte gPlttBufferUnfaded + 0x40
-_081132F4: .4byte 0x02009000
-_081132F8:
- bl IsCryFinished
- lsls r0, 24
- cmp r0, 0
- bne _08113306
- bl _08113B3A
-_08113306:
- ldr r0, _08113390 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08113316
- bl _08113B3A
-_08113316:
- ldr r4, _08113394 @ =gStringVar4
- ldr r1, _08113398 @ =gUnknown_08400C60
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r0, _0811339C @ =gUnknown_03004828
- ldr r1, [r0]
- adds r0, r1, 0x4
- adds r1, 0x34
- ldrb r2, [r1]
- movs r1, 0xF
- str r1, [sp]
- adds r1, r4, 0
- movs r3, 0x2
- bl sub_8002EB0
- ldr r0, _081133A0 @ =0x00000173
- bl PlayFanfare
- ldr r2, _081133A4 @ =gTasks
- lsls r1, r7, 2
- adds r1, r7
- lsls r1, 3
- adds r4, r1, r2
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- adds r2, r1
- adds r2, 0x10
- mov r0, r8
- movs r1, 0xB
- bl SetMonData
- mov r0, r8
- bl CalculateMonStats
- ldrh r1, [r4, 0xE]
- ldrh r2, [r4, 0x10]
- mov r0, r8
- bl EvolutionRenameMon
- ldrh r0, [r4, 0x10]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x2
- bl GetNationalPokedexFlag
- ldrh r0, [r4, 0x10]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl GetNationalPokedexFlag
- movs r0, 0xE
- bl IncrementGameStat
- b _08113B3A
- .align 2, 0
-_08113390: .4byte gPaletteFade
-_08113394: .4byte gStringVar4
-_08113398: .4byte gUnknown_08400C60
-_0811339C: .4byte gUnknown_03004828
-_081133A0: .4byte 0x00000173
-_081133A4: .4byte gTasks
-_081133A8:
- ldr r0, _08113410 @ =gUnknown_03004828
- ldr r0, [r0]
- ldrh r0, [r0, 0x1A]
- cmp r0, 0
- beq _081133B4
- b _08113B3A
-_081133B4:
- bl IsFanfareTaskInactive
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081133C2
- b _08113B3A
-_081133C2:
- ldr r1, _08113414 @ =gTasks
- lsls r4, r7, 2
- adds r0, r4, r7
- lsls r0, 3
- adds r5, r0, r1
- ldrb r1, [r5, 0x14]
- mov r0, r8
- bl sub_803B7C8
- lsls r0, 16
- lsrs r6, r0, 16
- mov r9, r4
- cmp r6, 0
- beq _08113434
- movs r3, 0x1E
- ldrsh r2, [r5, r3]
- cmp r2, 0
- bne _08113434
- ldrh r1, [r5, 0x12]
- movs r0, 0x80
- orrs r0, r1
- strh r0, [r5, 0x12]
- strh r2, [r5, 0x14]
- strh r2, [r5, 0x18]
- mov r0, r8
- movs r1, 0x2
- add r2, sp, 0x4
- bl GetMonData
- ldr r0, _08113418 @ =gBattleTextBuff1
- add r1, sp, 0x4
- bl StringCopy10
- ldr r0, _0811341C @ =0x0000ffff
- cmp r6, r0
- bne _08113420
- movs r0, 0x11
- strh r0, [r5, 0x8]
- b _08113B3A
- .align 2, 0
-_08113410: .4byte gUnknown_03004828
-_08113414: .4byte gTasks
-_08113418: .4byte gBattleTextBuff1
-_0811341C: .4byte 0x0000ffff
-_08113420:
- ldr r0, _08113430 @ =0x0000fffe
- cmp r6, r0
- bne _08113428
- b _08113B3A
-_08113428:
- movs r0, 0xF
- strh r0, [r5, 0x8]
- b _08113B3A
- .align 2, 0
-_08113430: .4byte 0x0000fffe
-_08113434:
- ldr r0, _0811345C @ =0x00000179
- bl PlayBGM
- ldr r0, _08113460 @ =gUnknown_03004828
- ldr r2, [r0]
- adds r0, r2, 0x4
- ldr r1, _08113464 @ =gOtherText_LinkStandby2
- adds r2, 0x34
- ldrb r2, [r2]
- movs r3, 0xF
- str r3, [sp]
- movs r3, 0x2
- bl sub_8002EB0
- ldr r0, _08113468 @ =gTasks
- mov r2, r9
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- b _081134DC
- .align 2, 0
-_0811345C: .4byte 0x00000179
-_08113460: .4byte gUnknown_03004828
-_08113464: .4byte gOtherText_LinkStandby2
-_08113468: .4byte gTasks
-_0811346C:
- ldr r0, _08113488 @ =gUnknown_03004828
- ldr r0, [r0]
- ldrh r0, [r0, 0x1A]
- cmp r0, 0
- beq _08113478
- b _08113B3A
-_08113478:
- adds r0, r7, 0
- bl DestroyTask
- ldr r0, _0811348C @ =gUnknown_03005E94
- ldr r0, [r0]
- bl SetMainCallback2
- b _08113B3A
- .align 2, 0
-_08113488: .4byte gUnknown_03004828
-_0811348C: .4byte gUnknown_03005E94
-_08113490:
- ldr r4, _081134E4 @ =gUnknown_03004828
- ldr r0, [r4]
- ldrh r0, [r0, 0x1A]
- cmp r0, 0
- beq _0811349C
- b _08113B3A
-_0811349C:
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- beq _081134A8
- b _08113B3A
-_081134A8:
- bl sub_8024CEC
- ldr r0, _081134E8 @ =0x0000016f
- bl PlayFanfare
- ldr r0, _081134EC @ =gBattleStringsTable
- ldr r0, [r0, 0xC]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r2, [r4]
- adds r0, r2, 0x4
- ldr r1, _081134F0 @ =gDisplayedStringBattle
- adds r2, 0x34
- ldrb r2, [r2]
- movs r3, 0xF
- str r3, [sp]
- movs r3, 0x2
- bl sub_8002EB0
- ldr r0, _081134F4 @ =gTasks
- lsls r1, r7, 2
- adds r1, r7
- lsls r1, 3
- adds r1, r0
- movs r0, 0x40
- strh r0, [r1, 0x14]
-_081134DC:
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _08113B3A
- .align 2, 0
-_081134E4: .4byte gUnknown_03004828
-_081134E8: .4byte 0x0000016f
-_081134EC: .4byte gBattleStringsTable
-_081134F0: .4byte gDisplayedStringBattle
-_081134F4: .4byte gTasks
-_081134F8:
- ldr r0, _08113530 @ =gUnknown_03004828
- ldr r0, [r0]
- ldrh r0, [r0, 0x1A]
- cmp r0, 0
- beq _08113504
- b _08113B3A
-_08113504:
- bl IsFanfareTaskInactive
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08113512
- b _08113B3A
-_08113512:
- ldr r0, _08113534 @ =gTasks
- lsls r1, r7, 2
- adds r1, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x14]
- subs r0, 0x1
- strh r0, [r1, 0x14]
- lsls r0, 16
- cmp r0, 0
- beq _0811352A
- b _08113B3A
-_0811352A:
- movs r0, 0xD
- strh r0, [r1, 0x8]
- b _08113B3A
- .align 2, 0
-_08113530: .4byte gUnknown_03004828
-_08113534: .4byte gTasks
-_08113538:
- lsls r1, r7, 2
- adds r0, r1, r7
- lsls r0, 3
- adds r0, r6
- movs r3, 0x18
- ldrsh r0, [r0, r3]
- mov r9, r1
- cmp r0, 0xB
- bls _0811354C
- b _08113B3A
-_0811354C:
- lsls r0, 2
- ldr r1, _08113558 @ =_0811355C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08113558: .4byte _0811355C
- .align 2, 0
-_0811355C:
- .4byte _0811358C
- .4byte _081135E4
- .4byte _08113638
- .4byte _08113682
- .4byte _0811371C
- .4byte _0811387C
- .4byte _081138CC
- .4byte _081139E8
- .4byte _08113A3C
- .4byte _08113A90
- .4byte _08113AD8
- .4byte _08113B18
-_0811358C:
- ldr r4, _081135D4 @ =gUnknown_03004828
- ldr r0, [r4]
- ldrh r0, [r0, 0x1A]
- cmp r0, 0
- beq _08113598
- b _08113B3A
-_08113598:
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- beq _081135A4
- b _08113B3A
-_081135A4:
- bl sub_8024CEC
- ldr r0, _081135D8 @ =gBattleStringsTable
- ldr r0, [r0, 0x10]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r2, [r4]
- adds r0, r2, 0x4
- ldr r1, _081135DC @ =gDisplayedStringBattle
- adds r2, 0x34
- ldrb r2, [r2]
- movs r3, 0xF
- str r3, [sp]
- movs r3, 0x2
- bl sub_8002EB0
- ldr r0, _081135E0 @ =gTasks
- mov r2, r9
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x18]
- adds r0, 0x1
- b _08113B38
- .align 2, 0
-_081135D4: .4byte gUnknown_03004828
-_081135D8: .4byte gBattleStringsTable
-_081135DC: .4byte gDisplayedStringBattle
-_081135E0: .4byte gTasks
-_081135E4:
- ldr r4, _08113628 @ =gUnknown_03004828
- ldr r0, [r4]
- ldrh r0, [r0, 0x1A]
- cmp r0, 0
- beq _081135F0
- b _08113B3A
-_081135F0:
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- beq _081135FC
- b _08113B3A
-_081135FC:
- ldr r0, _0811362C @ =gBattleStringsTable
- ldr r0, [r0, 0x14]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r2, [r4]
- adds r0, r2, 0x4
- ldr r1, _08113630 @ =gDisplayedStringBattle
- adds r2, 0x34
- ldrb r2, [r2]
- movs r3, 0xF
- str r3, [sp]
- movs r3, 0x2
- bl sub_8002EB0
- ldr r0, _08113634 @ =gTasks
- mov r3, r9
- adds r1, r3, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x18]
- adds r0, 0x1
- b _08113B38
- .align 2, 0
-_08113628: .4byte gUnknown_03004828
-_0811362C: .4byte gBattleStringsTable
-_08113630: .4byte gDisplayedStringBattle
-_08113634: .4byte gTasks
-_08113638:
- ldr r4, _081136FC @ =gUnknown_03004828
- ldr r0, [r4]
- ldrh r0, [r0, 0x1A]
- cmp r0, 0
- beq _08113644
- b _08113B3A
-_08113644:
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- bne _08113682
- ldr r0, _08113700 @ =gBattleStringsTable
- ldr r0, [r0, 0x18]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r2, [r4]
- adds r0, r2, 0x4
- ldr r1, _08113704 @ =gDisplayedStringBattle
- adds r2, 0x34
- ldrb r2, [r2]
- movs r3, 0xF
- str r3, [sp]
- movs r3, 0x2
- bl sub_8002EB0
- ldr r0, _08113708 @ =gTasks
- mov r2, r9
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- movs r0, 0x5
- strh r0, [r1, 0x1A]
- movs r0, 0x9
- strh r0, [r1, 0x1C]
- ldrh r0, [r1, 0x18]
- adds r0, 0x1
- strh r0, [r1, 0x18]
-_08113682:
- ldr r5, _081136FC @ =gUnknown_03004828
- ldr r0, [r5]
- ldrh r0, [r0, 0x1A]
- cmp r0, 0
- beq _0811368E
- b _08113B3A
-_0811368E:
- bl IsSEPlaying
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- beq _0811369C
- b _08113B3A
-_0811369C:
- ldr r0, [r5]
- adds r0, 0x4
- movs r1, 0xD
- str r1, [sp]
- movs r1, 0x18
- movs r2, 0x8
- movs r3, 0x1D
- bl DrawTextWindow
- ldr r4, _0811370C @ =gBattleCommunication
- strb r6, [r4, 0x1]
- ldr r2, [r5]
- adds r0, r2, 0x4
- ldr r1, _08113710 @ =gOtherText_YesNoAndPlayer
- adds r2, 0x34
- ldrb r2, [r2]
- adds r2, 0x80
- movs r3, 0x9
- str r3, [sp]
- movs r3, 0x19
- bl InitWindow
- ldr r0, [r5]
- adds r0, 0x4
- bl sub_8002F44
- ldr r1, _08113714 @ =0x0000ffff
- ldr r3, _08113718 @ =0x00002d9f
- movs r0, 0x20
- str r0, [sp]
- movs r0, 0
- movs r2, 0xC
- bl sub_814A5C0
- bl sub_81150D8
- ldr r0, _08113708 @ =gTasks
- mov r3, r9
- adds r1, r3, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x18]
- adds r0, 0x1
- movs r2, 0
- strh r0, [r1, 0x18]
- strb r2, [r4, 0x1]
- b _08113B3A
- .align 2, 0
-_081136FC: .4byte gUnknown_03004828
-_08113700: .4byte gBattleStringsTable
-_08113704: .4byte gDisplayedStringBattle
-_08113708: .4byte gTasks
-_0811370C: .4byte gBattleCommunication
-_08113710: .4byte gOtherText_YesNoAndPlayer
-_08113714: .4byte 0x0000ffff
-_08113718: .4byte 0x00002d9f
-_0811371C:
- ldr r0, _081137CC @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08113742
- ldr r4, _081137D0 @ =gBattleCommunication
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- beq _08113742
- movs r0, 0x5
- bl PlaySE
- bl HBlankCB_TradeEvolutionScene
- movs r0, 0
- strb r0, [r4, 0x1]
- bl sub_81150D8
-_08113742:
- ldr r0, _081137CC @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08113768
- ldr r4, _081137D0 @ =gBattleCommunication
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- bne _08113768
- movs r0, 0x5
- bl PlaySE
- bl HBlankCB_TradeEvolutionScene
- movs r0, 0x1
- strb r0, [r4, 0x1]
- bl sub_81150D8
-_08113768:
- ldr r0, _081137CC @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0811380A
- ldr r4, _081137D4 @ =gUnknown_03004828
- ldr r0, [r4]
- adds r0, 0x4
- movs r1, 0xD
- str r1, [sp]
- movs r1, 0x18
- movs r2, 0x8
- movs r3, 0x1D
- bl ZeroFillWindowRect
- bl DestroyMenuCursor
- ldr r0, _081137D8 @ =gBattleStringsTable
- movs r1, 0x92
- lsls r1, 3
- adds r0, r1
- ldr r0, [r0]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r2, [r4]
- adds r0, r2, 0x4
- ldr r1, _081137DC @ =gDisplayedStringBattle
- adds r2, 0x34
- ldrb r2, [r2]
- movs r3, 0xF
- str r3, [sp]
- movs r3, 0x2
- bl sub_8002EB0
- movs r0, 0x5
- bl PlaySE
- ldr r0, _081137D0 @ =gBattleCommunication
- ldrb r2, [r0, 0x1]
- cmp r2, 0
- beq _081137E4
- ldr r0, _081137E0 @ =gTasks
- mov r2, r9
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x1C]
- strh r0, [r1, 0x18]
- b _0811380A
- .align 2, 0
-_081137CC: .4byte gMain
-_081137D0: .4byte gBattleCommunication
-_081137D4: .4byte gUnknown_03004828
-_081137D8: .4byte gBattleStringsTable
-_081137DC: .4byte gDisplayedStringBattle
-_081137E0: .4byte gTasks
-_081137E4:
- ldr r0, _08113868 @ =gTasks
- mov r3, r9
- adds r1, r3, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x1A]
- strh r0, [r1, 0x18]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- bne _0811380A
- movs r0, 0x1
- negs r0, r0
- str r2, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
-_0811380A:
- ldr r0, _0811386C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08113818
- b _08113B3A
-_08113818:
- ldr r4, _08113870 @ =gUnknown_03004828
- ldr r0, [r4]
- adds r0, 0x4
- movs r1, 0xD
- str r1, [sp]
- movs r1, 0x18
- movs r2, 0x8
- movs r3, 0x1D
- bl ZeroFillWindowRect
- bl DestroyMenuCursor
- ldr r0, _08113874 @ =gBattleStringsTable
- movs r1, 0x92
- lsls r1, 3
- adds r0, r1
- ldr r0, [r0]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r2, [r4]
- adds r0, r2, 0x4
- ldr r1, _08113878 @ =gDisplayedStringBattle
- adds r2, 0x34
- ldrb r2, [r2]
- movs r3, 0xF
- str r3, [sp]
- movs r3, 0x2
- bl sub_8002EB0
- movs r0, 0x5
- bl PlaySE
- ldr r1, _08113868 @ =gTasks
- mov r2, r9
- adds r0, r2, r7
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0x1C]
- strh r1, [r0, 0x18]
- b _08113B3A
- .align 2, 0
-_08113868: .4byte gTasks
-_0811386C: .4byte gMain
-_08113870: .4byte gUnknown_03004828
-_08113874: .4byte gBattleStringsTable
-_08113878: .4byte gDisplayedStringBattle
-_0811387C:
- ldr r0, _081138B8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0811388A
- b _08113B3A
-_0811388A:
- ldr r0, _081138BC @ =gPlayerParty
- mov r3, r9
- adds r5, r3, r7
- lsls r5, 3
- adds r5, r6
- ldrh r1, [r5, 0x20]
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _081138C0 @ =gPlayerPartyCount
- ldrb r2, [r2]
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldr r3, _081138C4 @ =CB2_TradeEvolutionSceneLoadGraphics
- ldr r4, _081138C8 @ =word_2024E82
- ldrh r4, [r4]
- str r4, [sp]
- bl sub_809D9F0
- ldrh r0, [r5, 0x18]
- adds r0, 0x1
- strh r0, [r5, 0x18]
- b _08113B3A
- .align 2, 0
-_081138B8: .4byte gPaletteFade
-_081138BC: .4byte gPlayerParty
-_081138C0: .4byte gPlayerPartyCount
-_081138C4: .4byte CB2_TradeEvolutionSceneLoadGraphics
-_081138C8: .4byte word_2024E82
-_081138CC:
- ldr r0, _08113900 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081138DA
- b _08113B3A
-_081138DA:
- ldr r0, _08113904 @ =gMain
- ldr r1, [r0, 0x4]
- ldr r0, _08113908 @ =CB2_EvolutionSceneUpdate_1
- cmp r1, r0
- beq _081138E6
- b _08113B3A
-_081138E6:
- bl sub_809FA30
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x4
- bne _08113910
- ldr r0, _0811390C @ =gTasks
- mov r2, r9
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- movs r0, 0x9
- b _08113B38
- .align 2, 0
-_08113900: .4byte gPaletteFade
-_08113904: .4byte gMain
-_08113908: .4byte CB2_EvolutionSceneUpdate_1
-_0811390C: .4byte gTasks
-_08113910:
- adds r1, r6, 0
- adds r1, 0xD
- mov r0, r8
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- bl IsHMMove2
- cmp r0, 0
- beq _08113970
- ldr r0, _0811395C @ =gBattleStringsTable
- ldr r3, _08113960 @ =0x000004cc
- adds r0, r3
- ldr r0, [r0]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r0, _08113964 @ =gUnknown_03004828
- ldr r2, [r0]
- adds r0, r2, 0x4
- ldr r1, _08113968 @ =gDisplayedStringBattle
- adds r2, 0x34
- ldrb r2, [r2]
- movs r3, 0xF
- str r3, [sp]
- movs r3, 0x2
- bl sub_8002EB0
- ldr r1, _0811396C @ =gTasks
- mov r2, r9
- adds r0, r2, r7
- lsls r0, 3
- adds r0, r1
- movs r1, 0xB
- strh r1, [r0, 0x18]
- b _08113B3A
- .align 2, 0
-_0811395C: .4byte gBattleStringsTable
-_08113960: .4byte 0x000004cc
-_08113964: .4byte gUnknown_03004828
-_08113968: .4byte gDisplayedStringBattle
-_0811396C: .4byte gTasks
-_08113970:
- ldr r1, _081139D0 @ =gBattleTextBuff2
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x2
- strb r0, [r1, 0x1]
- strb r4, [r1, 0x2]
- lsrs r0, r4, 8
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- lsls r4, r6, 24
- lsrs r4, 24
- mov r0, r8
- adds r1, r4, 0
- bl RemoveMonPPBonus
- ldr r0, _081139D4 @ =word_2024E82
- ldrh r1, [r0]
- mov r0, r8
- adds r2, r4, 0
- bl SetMonMoveSlot
- ldr r0, _081139D8 @ =gBattleStringsTable
- movs r3, 0xCF
- lsls r3, 2
- adds r0, r3
- ldr r0, [r0]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r0, _081139DC @ =gUnknown_03004828
- ldr r2, [r0]
- adds r0, r2, 0x4
- ldr r1, _081139E0 @ =gDisplayedStringBattle
- adds r2, 0x34
- ldrb r2, [r2]
- movs r3, 0xF
- str r3, [sp]
- movs r3, 0x2
- bl sub_8002EB0
- ldr r0, _081139E4 @ =gTasks
- mov r2, r9
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x18]
- adds r0, 0x1
- b _08113B38
- .align 2, 0
-_081139D0: .4byte gBattleTextBuff2
-_081139D4: .4byte word_2024E82
-_081139D8: .4byte gBattleStringsTable
-_081139DC: .4byte gUnknown_03004828
-_081139E0: .4byte gDisplayedStringBattle
-_081139E4: .4byte gTasks
-_081139E8:
- ldr r4, _08113A2C @ =gUnknown_03004828
- ldr r0, [r4]
- ldrh r0, [r0, 0x1A]
- cmp r0, 0
- beq _081139F4
- b _08113B3A
-_081139F4:
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- beq _08113A00
- b _08113B3A
-_08113A00:
- ldr r0, _08113A30 @ =gBattleStringsTable
- ldr r0, [r0, 0x1C]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r2, [r4]
- adds r0, r2, 0x4
- ldr r1, _08113A34 @ =gDisplayedStringBattle
- adds r2, 0x34
- ldrb r2, [r2]
- movs r3, 0xF
- str r3, [sp]
- movs r3, 0x2
- bl sub_8002EB0
- ldr r0, _08113A38 @ =gTasks
- mov r3, r9
- adds r1, r3, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x18]
- adds r0, 0x1
- b _08113B38
- .align 2, 0
-_08113A2C: .4byte gUnknown_03004828
-_08113A30: .4byte gBattleStringsTable
-_08113A34: .4byte gDisplayedStringBattle
-_08113A38: .4byte gTasks
-_08113A3C:
- ldr r4, _08113A80 @ =gUnknown_03004828
- ldr r0, [r4]
- ldrh r0, [r0, 0x1A]
- cmp r0, 0
- bne _08113B3A
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- bne _08113B3A
- ldr r0, _08113A84 @ =gBattleStringsTable
- movs r1, 0xD0
- lsls r1, 2
- adds r0, r1
- ldr r0, [r0]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r2, [r4]
- adds r0, r2, 0x4
- ldr r1, _08113A88 @ =gDisplayedStringBattle
- adds r2, 0x34
- ldrb r2, [r2]
- movs r4, 0xF
- str r4, [sp]
- movs r3, 0x2
- bl sub_8002EB0
- ldr r1, _08113A8C @ =gTasks
- mov r2, r9
- adds r0, r2, r7
- lsls r0, 3
- adds r0, r1
- strh r4, [r0, 0x8]
- b _08113B3A
- .align 2, 0
-_08113A80: .4byte gUnknown_03004828
-_08113A84: .4byte gBattleStringsTable
-_08113A88: .4byte gDisplayedStringBattle
-_08113A8C: .4byte gTasks
-_08113A90:
- ldr r0, _08113AC8 @ =gBattleStringsTable
- ldr r0, [r0, 0x20]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r0, _08113ACC @ =gUnknown_03004828
- ldr r2, [r0]
- adds r0, r2, 0x4
- ldr r1, _08113AD0 @ =gDisplayedStringBattle
- adds r2, 0x34
- ldrb r2, [r2]
- movs r3, 0xF
- str r3, [sp]
- movs r3, 0x2
- bl sub_8002EB0
- ldr r1, _08113AD4 @ =gTasks
- mov r3, r9
- adds r0, r3, r7
- lsls r0, 3
- adds r0, r1
- movs r2, 0
- movs r1, 0xA
- strh r1, [r0, 0x1A]
- strh r2, [r0, 0x1C]
- movs r1, 0x3
- strh r1, [r0, 0x18]
- b _08113B3A
- .align 2, 0
-_08113AC8: .4byte gBattleStringsTable
-_08113ACC: .4byte gUnknown_03004828
-_08113AD0: .4byte gDisplayedStringBattle
-_08113AD4: .4byte gTasks
-_08113AD8:
- ldr r0, _08113B08 @ =gBattleStringsTable
- ldr r0, [r0, 0x24]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r0, _08113B0C @ =gUnknown_03004828
- ldr r2, [r0]
- adds r0, r2, 0x4
- ldr r1, _08113B10 @ =gDisplayedStringBattle
- adds r2, 0x34
- ldrb r2, [r2]
- movs r3, 0xF
- str r3, [sp]
- movs r3, 0x2
- bl sub_8002EB0
- ldr r1, _08113B14 @ =gTasks
- mov r2, r9
- adds r0, r2, r7
- lsls r0, 3
- adds r0, r1
- movs r1, 0xD
- strh r1, [r0, 0x8]
- b _08113B3A
- .align 2, 0
-_08113B08: .4byte gBattleStringsTable
-_08113B0C: .4byte gUnknown_03004828
-_08113B10: .4byte gDisplayedStringBattle
-_08113B14: .4byte gTasks
-_08113B18:
- ldr r0, _08113B48 @ =gUnknown_03004828
- ldr r0, [r0]
- ldrh r0, [r0, 0x1A]
- cmp r0, 0
- bne _08113B3A
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- bne _08113B3A
- ldr r0, _08113B4C @ =gTasks
- mov r3, r9
- adds r1, r3, r7
- lsls r1, 3
- adds r1, r0
- movs r0, 0x5
-_08113B38:
- strh r0, [r1, 0x18]
-_08113B3A:
- add sp, 0x18
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08113B48: .4byte gUnknown_03004828
-_08113B4C: .4byte gTasks
- thumb_func_end Task_TradeEvolutionScene
-
- thumb_func_start unref_sub_8113B50
-unref_sub_8113B50: @ 8113B50
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x3C
- str r0, [sp]
- str r1, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0xC]
- movs r1, 0
- str r1, [sp, 0x10]
- movs r2, 0
- str r2, [sp, 0x8]
- ldr r3, _08113C60 @ =0x02014800
- mov r12, r3
- ldr r4, _08113C64 @ =0x000018c4
- add r4, r12
- mov r10, r4
- ldr r5, _08113C68 @ =0x000020c4
- add r5, r12
- mov r8, r5
-_08113B7C:
- adds r0, r3, 0
- adds r0, 0x84
- ldr r1, [sp, 0x8]
- adds r0, r1, r0
- strb r2, [r0]
- adds r0, r3, 0x4
- adds r0, r1, r0
- strb r2, [r0]
- ldr r4, _08113C6C @ =0x02014844
- adds r0, r1, r4
- strb r2, [r0]
- movs r6, 0
- lsls r1, 5
- mov r9, r1
- ldr r5, [sp, 0x8]
- lsls r4, r5, 6
-_08113B9C:
- mov r0, r9
- adds r1, r6, r0
- ldr r5, _08113C70 @ =0x020158c4
- adds r0, r1, r5
- strb r2, [r0]
- mov r5, r10
- adds r0, r1, r5
- strb r2, [r0]
- mov r5, r8
- adds r0, r1, r5
- strb r2, [r0]
- ldr r5, _08113C74 @ =0x020170c4
- adds r0, r1, r5
- strb r2, [r0]
- adds r7, r3, 0
- adds r7, 0xC4
- adds r0, r1, r7
- strb r2, [r0]
- ldr r5, _08113C78 @ =0x000008c4
- adds r0, r3, r5
- adds r0, r1, r0
- strb r2, [r0]
- ldr r5, _08113C7C @ =0x000030c4
- adds r0, r3, r5
- adds r0, r1, r0
- strb r2, [r0]
- ldr r5, _08113C80 @ =0x000038c4
- adds r0, r3, r5
- adds r1, r0
- strb r2, [r1]
- lsls r1, r6, 1
- adds r1, r4
- ldr r5, _08113C84 @ =0x000060c4
- adds r0, r3, r5
- adds r0, r1, r0
- strh r2, [r0]
- ldr r5, _08113C88 @ =0x000070c4
- adds r0, r3, r5
- adds r0, r1, r0
- strh r2, [r0]
- ldr r5, _08113C8C @ =0x000080c4
- adds r0, r3, r5
- adds r0, r1, r0
- strh r2, [r0]
- ldr r5, _08113C90 @ =0x000090c4
- adds r0, r3, r5
- adds r1, r0
- strh r2, [r1]
- adds r6, 0x1
- cmp r6, 0x1F
- ble _08113B9C
- ldr r0, [sp, 0x8]
- adds r0, 0x1
- str r0, [sp, 0x8]
- cmp r0, 0x3F
- ble _08113B7C
- ldr r1, _08113C94 @ =0x0000a0c4
- add r1, r12
- movs r0, 0x40
- strb r0, [r1]
- movs r1, 0
- mov r8, r1
- movs r2, 0
- str r2, [sp, 0x8]
- movs r3, 0x80
- lsls r3, 5
- adds r3, r7
- mov r12, r3
- movs r4, 0xC0
- lsls r4, 5
- adds r4, r7
- mov r9, r4
- movs r5, 0
- adds r4, r7, 0
- subs r4, 0xC0
-_08113C32:
- movs r3, 0
- ldr r2, [sp]
- add r2, r8
- movs r6, 0
- ldr r0, [sp, 0x8]
- adds r0, 0x1
- str r0, [sp, 0x30]
- ldr r1, [sp, 0x8]
- lsls r1, 7
- mov r10, r1
- movs r7, 0x1
- negs r7, r7
-_08113C4A:
- asrs r0, r6, 1
- lsls r0, 2
- add r0, r10
- ldr r1, _08113C98 @ =0x020188c4
- adds r0, r1
- str r2, [r0]
- cmp r3, 0
- beq _08113C9C
- cmp r3, 0x1
- beq _08113CC6
- b _08113CF4
- .align 2, 0
-_08113C60: .4byte 0x02014800
-_08113C64: .4byte 0x000018c4
-_08113C68: .4byte 0x000020c4
-_08113C6C: .4byte 0x02014844
-_08113C70: .4byte 0x020158c4
-_08113C74: .4byte 0x020170c4
-_08113C78: .4byte 0x000008c4
-_08113C7C: .4byte 0x000030c4
-_08113C80: .4byte 0x000038c4
-_08113C84: .4byte 0x000060c4
-_08113C88: .4byte 0x000070c4
-_08113C8C: .4byte 0x000080c4
-_08113C90: .4byte 0x000090c4
-_08113C94: .4byte 0x0000a0c4
-_08113C98: .4byte 0x020188c4
-_08113C9C:
- movs r0, 0x1
- ands r0, r6
- cmp r0, 0
- beq _08113CAA
- cmp r0, 0x1
- beq _08113CB0
- b _08113CF4
-_08113CAA:
- ldrb r1, [r2]
- movs r0, 0xF
- b _08113CB4
-_08113CB0:
- ldrb r1, [r2]
- movs r0, 0xF0
-_08113CB4:
- ands r0, r1
- cmp r0, 0
- beq _08113CF4
- ldrb r0, [r4]
- adds r0, r5
- add r0, r12
- strb r6, [r0]
- movs r3, 0x1
- b _08113CF4
-_08113CC6:
- adds r0, r6, 0
- ands r0, r3
- cmp r0, 0
- beq _08113CD4
- cmp r0, 0x1
- beq _08113CDA
- b _08113CF4
-_08113CD4:
- ldrb r1, [r2]
- movs r0, 0xF
- b _08113CDE
-_08113CDA:
- ldrb r1, [r2]
- movs r0, 0xF0
-_08113CDE:
- ands r0, r1
- cmp r0, 0
- bne _08113CF4
- ldrb r0, [r4]
- adds r0, r5
- add r0, r9
- strb r7, [r0]
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- movs r3, 0
-_08113CF4:
- adds r0, r6, 0x1
- movs r1, 0x7
- ands r0, r1
- cmp r0, 0
- bne _08113D02
- adds r2, 0x1D
- b _08113D0C
-_08113D02:
- movs r0, 0x1
- ands r0, r6
- cmp r0, 0
- beq _08113D0C
- adds r2, 0x1
-_08113D0C:
- adds r7, 0x1
- adds r6, 0x1
- cmp r6, 0x3F
- ble _08113C4A
- cmp r3, 0
- beq _08113D26
- ldrb r0, [r4]
- adds r0, r5
- add r0, r9
- strb r6, [r0]
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
-_08113D26:
- movs r0, 0x7
- ldr r2, [sp, 0x30]
- ands r2, r0
- cmp r2, 0
- bne _08113D36
- movs r3, 0xE4
- add r8, r3
- b _08113D3A
-_08113D36:
- movs r0, 0x4
- add r8, r0
-_08113D3A:
- adds r5, 0x20
- adds r4, 0x1
- ldr r1, [sp, 0x8]
- adds r1, 0x1
- str r1, [sp, 0x8]
- cmp r1, 0x3F
- bgt _08113D4A
- b _08113C32
-_08113D4A:
- movs r2, 0
- mov r8, r2
- movs r3, 0
- str r3, [sp, 0x8]
- ldr r0, _08113D84 @ =0x02014844
- movs r4, 0x82
- lsls r4, 6
- adds r4, r0
- mov r10, r4
- movs r5, 0xA2
- lsls r5, 6
- adds r7, r0, r5
- movs r5, 0
- adds r4, r0, 0
- movs r0, 0x1
- mov r9, r0
-_08113D6A:
- movs r3, 0
- ldr r2, [sp, 0x4]
- add r2, r8
- movs r6, 0
- ldr r1, [sp, 0x8]
- adds r1, 0x1
- str r1, [sp, 0x30]
-_08113D78:
- cmp r3, 0
- beq _08113D88
- cmp r3, 0x1
- beq _08113DB4
- b _08113DE4
- .align 2, 0
-_08113D84: .4byte 0x02014844
-_08113D88:
- adds r0, r6, 0
- mov r1, r9
- ands r0, r1
- cmp r0, 0
- beq _08113D98
- cmp r0, 0x1
- beq _08113D9E
- b _08113DE4
-_08113D98:
- ldrb r1, [r2]
- movs r0, 0xF
- b _08113DA2
-_08113D9E:
- ldrb r1, [r2]
- movs r0, 0xF0
-_08113DA2:
- ands r0, r1
- cmp r0, 0
- beq _08113DE4
- ldrb r0, [r4]
- adds r0, r5
- add r0, r10
- strb r6, [r0]
- movs r3, 0x1
- b _08113DE4
-_08113DB4:
- adds r0, r6, 0
- ands r0, r3
- cmp r0, 0
- beq _08113DC2
- cmp r0, 0x1
- beq _08113DC8
- b _08113DE4
-_08113DC2:
- ldrb r1, [r2]
- movs r0, 0xF
- b _08113DCC
-_08113DC8:
- ldrb r1, [r2]
- movs r0, 0xF0
-_08113DCC:
- ands r0, r1
- cmp r0, 0
- bne _08113DE4
- ldrb r0, [r4]
- adds r0, r5
- adds r0, r7
- subs r1, r6, 0x1
- strb r1, [r0]
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- movs r3, 0
-_08113DE4:
- adds r1, r6, 0x1
- movs r0, 0x7
- ands r0, r1
- cmp r0, 0
- bne _08113DF2
- adds r2, 0x1D
- b _08113DFC
-_08113DF2:
- mov r0, r9
- ands r6, r0
- cmp r6, 0
- beq _08113DFC
- adds r2, 0x1
-_08113DFC:
- adds r6, r1, 0
- cmp r6, 0x3F
- ble _08113D78
- cmp r3, 0
- beq _08113E14
- ldrb r0, [r4]
- adds r0, r5
- adds r0, r7
- strb r6, [r0]
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
-_08113E14:
- movs r0, 0x7
- ldr r1, [sp, 0x30]
- ands r1, r0
- cmp r1, 0
- bne _08113E24
- movs r2, 0xE4
- add r8, r2
- b _08113E28
-_08113E24:
- movs r3, 0x4
- add r8, r3
-_08113E28:
- adds r5, 0x20
- adds r4, 0x1
- ldr r0, [sp, 0x8]
- adds r0, 0x1
- str r0, [sp, 0x8]
- cmp r0, 0x3F
- ble _08113D6A
- movs r1, 0
- str r1, [sp, 0x8]
-_08113E3A:
- ldr r3, [sp, 0x8]
- ldr r4, _08113EBC @ =0x02014804
- adds r2, r3, r4
- ldr r5, _08113EC0 @ =0x02014844
- adds r1, r3, r5
- ldrb r0, [r2]
- adds r3, 0x1
- str r3, [sp, 0x30]
- ldrb r1, [r1]
- cmp r0, r1
- bcc _08113E52
- b _08113F9E
-_08113E52:
- movs r0, 0
- str r0, [sp, 0xC]
- ldrb r2, [r2]
- cmp r0, r2
- bge _08113F54
- ldr r0, _08113EC4 @ =0x02014800
- adds r0, 0x4
- ldr r1, [sp, 0x8]
- adds r0, r1, r0
- str r0, [sp, 0x18]
-_08113E66:
- movs r2, 0x80
- lsls r2, 1
- str r2, [sp, 0x14]
- movs r6, 0
- ldr r3, [sp, 0x8]
- ldr r4, _08113EC0 @ =0x02014844
- adds r0, r3, r4
- ldr r5, [sp, 0xC]
- adds r5, 0x1
- str r5, [sp, 0x34]
- ldrb r0, [r0]
- cmp r6, r0
- bge _08113F3E
- ldr r0, _08113EC4 @ =0x02014800
- mov r10, r0
- lsls r0, r3, 5
- ldr r2, [sp, 0xC]
- adds r1, r2, r0
- mov r9, r0
- ldr r0, _08113EC4 @ =0x02014800
- adds r0, 0xC4
- mov r3, r9
- adds r7, r3, r0
- mov r5, r9
- ldr r4, _08113EC4 @ =0x02014800
- ldr r2, _08113EC8 @ =0x000010c4
- adds r0, r4, r2
- adds r1, r0
- mov r8, r1
- ldrb r3, [r1]
- str r3, [sp, 0x1C]
-_08113EA4:
- ldr r0, _08113ECC @ =0x000020c4
- add r0, r10
- adds r0, r5, r0
- ldr r4, [sp, 0x1C]
- ldrb r1, [r0]
- cmp r4, r1
- bls _08113ED0
- mov r2, r8
- ldrb r1, [r2]
- ldrb r0, [r0]
- b _08113ED6
- .align 2, 0
-_08113EBC: .4byte 0x02014804
-_08113EC0: .4byte 0x02014844
-_08113EC4: .4byte 0x02014800
-_08113EC8: .4byte 0x000010c4
-_08113ECC: .4byte 0x000020c4
-_08113ED0:
- ldrb r1, [r0]
- mov r3, r8
- ldrb r0, [r3]
-_08113ED6:
- subs r3, r1, r0
- ldr r1, [sp, 0xC]
- add r1, r9
- ldr r0, _08113EFC @ =0x000018c4
- add r0, r10
- adds r4, r1, r0
- ldr r0, _08113F00 @ =0x000028c4
- add r0, r10
- adds r2, r5, r0
- ldrb r0, [r4]
- ldr r1, _08113F04 @ =0x02014800
- mov r12, r1
- ldrb r1, [r2]
- cmp r0, r1
- bls _08113F08
- adds r1, r0, 0
- ldrb r0, [r2]
- b _08113F0C
- .align 2, 0
-_08113EFC: .4byte 0x000018c4
-_08113F00: .4byte 0x000028c4
-_08113F04: .4byte 0x02014800
-_08113F08:
- ldrb r1, [r2]
- ldrb r0, [r4]
-_08113F0C:
- subs r1, r0
- adds r3, r1
- ldr r2, [sp, 0x14]
- cmp r2, r3
- ble _08113F2C
- ldrb r0, [r7]
- cmp r0, 0
- bne _08113F2C
- ldr r0, _08114050 @ =0x000008c4
- add r0, r12
- adds r0, r5, r0
- ldrb r0, [r0]
- cmp r0, 0
- bne _08113F2C
- str r6, [sp, 0x10]
- str r3, [sp, 0x14]
-_08113F2C:
- adds r7, 0x1
- adds r5, 0x1
- adds r6, 0x1
- ldr r3, [sp, 0x8]
- ldr r4, _08114054 @ =0x02014844
- adds r0, r3, r4
- ldrb r0, [r0]
- cmp r6, r0
- blt _08113EA4
-_08113F3E:
- ldr r0, [sp, 0xC]
- ldr r1, [sp, 0x10]
- ldr r2, [sp, 0x8]
- bl sub_81141F0
- ldr r5, [sp, 0x34]
- str r5, [sp, 0xC]
- ldr r0, [sp, 0x18]
- ldrb r0, [r0]
- cmp r5, r0
- blt _08113E66
-_08113F54:
- movs r6, 0
- ldr r2, _08114058 @ =0x02014800
- ldr r1, [sp, 0x8]
- ldr r3, _08114054 @ =0x02014844
- adds r0, r1, r3
- adds r4, r2, 0
- mov r12, r4
- ldrb r0, [r0]
- cmp r6, r0
- bge _08113F9E
- mov r0, r12
- adds r0, 0x44
- adds r4, r1, r0
-_08113F6E:
- ldr r5, [sp, 0x8]
- lsls r0, r5, 5
- adds r1, r6, r0
- adds r0, r2, 0
- adds r0, 0xC4
- adds r0, r1, r0
- ldrb r0, [r0]
- cmp r0, 0
- bne _08113F94
- ldr r3, _08114050 @ =0x000008c4
- adds r0, r2, r3
- adds r0, r1, r0
- ldrb r0, [r0]
- cmp r0, 0
- bne _08113F94
- adds r0, r6, 0
- adds r1, r5, 0
- bl sub_811430C
-_08113F94:
- adds r6, 0x1
- ldr r2, _08114058 @ =0x02014800
- ldrb r5, [r4]
- cmp r6, r5
- blt _08113F6E
-_08113F9E:
- ldr r0, [sp, 0x8]
- ldr r1, _0811405C @ =0x02014804
- adds r2, r0, r1
- ldr r3, _08114054 @ =0x02014844
- adds r1, r0, r3
- ldrb r0, [r2]
- ldrb r1, [r1]
- cmp r0, r1
- bne _08113FCC
- movs r6, 0
- ldrb r4, [r2]
- cmp r6, r4
- bge _08113FCC
- adds r4, r2, 0
-_08113FBA:
- adds r0, r6, 0
- adds r1, r6, 0
- ldr r2, [sp, 0x8]
- bl sub_81141F0
- adds r6, 0x1
- ldrb r5, [r4]
- cmp r6, r5
- blt _08113FBA
-_08113FCC:
- ldr r0, [sp, 0x8]
- ldr r1, _0811405C @ =0x02014804
- adds r2, r0, r1
- ldr r3, _08114054 @ =0x02014844
- adds r1, r0, r3
- ldrb r0, [r2]
- ldr r4, _08114058 @ =0x02014800
- ldrb r5, [r1]
- cmp r0, r5
- bhi _08113FE2
- b _081141C4
-_08113FE2:
- movs r0, 0
- str r0, [sp, 0x10]
- ldrb r1, [r1]
- cmp r0, r1
- blt _08113FEE
- b _08114104
-_08113FEE:
- str r2, [sp, 0x2C]
- ldr r1, [sp, 0x8]
- lsls r1, 5
- mov r9, r1
- adds r0, r4, 0
- adds r0, 0x44
- ldr r2, [sp, 0x8]
- adds r0, r2, r0
- str r0, [sp, 0x20]
- mov r3, r9
- str r3, [sp, 0x24]
-_08114004:
- movs r4, 0x80
- lsls r4, 1
- str r4, [sp, 0x14]
- movs r6, 0
- ldr r5, [sp, 0x10]
- adds r5, 0x1
- str r5, [sp, 0x38]
- ldr r0, [sp, 0x2C]
- ldrb r0, [r0]
- cmp r6, r0
- bge _081140C4
- ldr r1, [sp, 0x10]
- ldr r2, [sp, 0x24]
- adds r1, r2
- mov r10, r1
- ldr r0, _08114058 @ =0x02014800
- adds r0, 0xC4
- adds r2, r0
- mov r8, r2
- ldr r7, [sp, 0x24]
- ldr r3, _08114058 @ =0x02014800
- ldr r4, _08114060 @ =0x000010c4
- adds r0, r3, r4
- adds r5, r7, r0
- ldr r0, _08114064 @ =0x020168c4
- add r0, r10
- mov r12, r0
- ldrb r1, [r0]
- str r1, [sp, 0x28]
-_0811403E:
- ldrb r0, [r5]
- ldr r2, [sp, 0x28]
- cmp r0, r2
- bls _08114068
- adds r1, r0, 0
- mov r3, r12
- ldrb r0, [r3]
- b _0811406E
- .align 2, 0
-_08114050: .4byte 0x000008c4
-_08114054: .4byte 0x02014844
-_08114058: .4byte 0x02014800
-_0811405C: .4byte 0x02014804
-_08114060: .4byte 0x000010c4
-_08114064: .4byte 0x020168c4
-_08114068:
- mov r4, r12
- ldrb r1, [r4]
- ldrb r0, [r5]
-_0811406E:
- subs r3, r1, r0
- ldr r1, _0811408C @ =0x02014800
- ldr r2, _08114090 @ =0x000018c4
- adds r0, r1, r2
- adds r4, r7, r0
- ldr r2, _08114094 @ =0x020170c4
- add r2, r10
- ldrb r0, [r4]
- ldrb r1, [r2]
- cmp r0, r1
- bls _08114098
- adds r1, r0, 0
- ldrb r0, [r2]
- b _0811409C
- .align 2, 0
-_0811408C: .4byte 0x02014800
-_08114090: .4byte 0x000018c4
-_08114094: .4byte 0x020170c4
-_08114098:
- ldrb r1, [r2]
- ldrb r0, [r4]
-_0811409C:
- subs r1, r0
- adds r3, r1
- ldr r2, [sp, 0x14]
- cmp r2, r3
- ble _081140B2
- mov r4, r8
- ldrb r0, [r4]
- cmp r0, 0
- bne _081140B2
- str r6, [sp, 0xC]
- str r3, [sp, 0x14]
-_081140B2:
- movs r0, 0x1
- add r8, r0
- adds r7, 0x1
- adds r5, 0x1
- adds r6, 0x1
- ldr r1, [sp, 0x2C]
- ldrb r1, [r1]
- cmp r6, r1
- blt _0811403E
-_081140C4:
- ldr r3, [sp, 0xC]
- add r3, r9
- ldr r2, _08114164 @ =0x02014800
- ldr r4, _08114168 @ =0x000030c4
- adds r1, r2, r4
- adds r1, r3, r1
- ldr r2, [sp, 0x10]
- add r2, r9
- ldr r5, _0811416C @ =0x020168c4
- adds r0, r2, r5
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r0, _08114164 @ =0x02014800
- ldr r4, _08114170 @ =0x000038c4
- adds r1, r0, r4
- adds r1, r3, r1
- ldr r5, _08114174 @ =0x020170c4
- adds r2, r5
- ldrb r0, [r2]
- strb r0, [r1]
- ldr r0, _08114164 @ =0x02014800
- adds r0, 0xC4
- adds r3, r0
- movs r0, 0x1
- strb r0, [r3]
- ldr r0, [sp, 0x38]
- str r0, [sp, 0x10]
- ldr r1, [sp, 0x20]
- ldrb r1, [r1]
- cmp r0, r1
- bge _08114104
- b _08114004
-_08114104:
- movs r6, 0
- ldr r4, _08114164 @ =0x02014800
- ldr r2, [sp, 0x8]
- ldr r3, _08114178 @ =0x02014804
- adds r0, r2, r3
- ldrb r0, [r0]
- cmp r6, r0
- bge _081141C4
- adds r7, r4, 0
- mov r9, r6
- movs r5, 0xC4
- adds r5, r7
- mov r8, r5
-_0811411E:
- ldr r1, [sp, 0x8]
- lsls r0, r1, 5
- adds r2, r6, r0
- ldr r3, _0811417C @ =0x000020c4
- adds r0, r7, r3
- adds r0, r2
- mov r10, r0
- ldr r5, _08114168 @ =0x000030c4
- adds r0, r7, r5
- adds r0, r2, r0
- ldrb r0, [r0]
- mov r1, r10
- strb r0, [r1]
- ldr r3, _08114180 @ =0x000028c4
- adds r0, r7, r3
- adds r3, r2, r0
- ldr r5, _08114170 @ =0x000038c4
- adds r0, r7, r5
- adds r0, r2, r0
- ldrb r0, [r0]
- strb r0, [r3]
- mov r0, r8
- adds r1, r2, r0
- ldrb r0, [r1]
- cmp r0, 0
- beq _08114184
- mov r2, r9
- strb r2, [r1]
- adds r0, r6, 0
- adds r1, r6, 0
- ldr r2, [sp, 0x8]
- bl sub_81141F0
- b _081141B4
- .align 2, 0
-_08114164: .4byte 0x02014800
-_08114168: .4byte 0x000030c4
-_0811416C: .4byte 0x020168c4
-_08114170: .4byte 0x000038c4
-_08114174: .4byte 0x020170c4
-_08114178: .4byte 0x02014804
-_0811417C: .4byte 0x000020c4
-_08114180: .4byte 0x000028c4
-_08114184:
- ldr r5, _081141E0 @ =0x000010c4
- adds r1, r4, r5
- adds r1, r2, r1
- ldr r5, _081141E4 @ =0x000018c4
- adds r0, r4, r5
- adds r0, r2, r0
- ldrb r0, [r0]
- ldrb r2, [r1]
- subs r0, r2
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- adds r2, r0
- strb r2, [r3]
- mov r0, r10
- strb r2, [r0]
- ldrb r0, [r3]
- subs r0, 0x1
- strb r0, [r3]
- adds r0, r6, 0
- adds r1, r6, 0
- ldr r2, [sp, 0x8]
- bl sub_81141F0
-_081141B4:
- adds r6, 0x1
- ldr r4, _081141E8 @ =0x02014800
- ldr r1, [sp, 0x8]
- ldr r2, _081141EC @ =0x02014804
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r6, r0
- blt _0811411E
-_081141C4:
- ldr r3, [sp, 0x30]
- str r3, [sp, 0x8]
- cmp r3, 0x3F
- bgt _081141CE
- b _08113E3A
-_081141CE:
- add sp, 0x3C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081141E0: .4byte 0x000010c4
-_081141E4: .4byte 0x000018c4
-_081141E8: .4byte 0x02014800
-_081141EC: .4byte 0x02014804
- thumb_func_end unref_sub_8113B50
-
- thumb_func_start sub_81141F0
-sub_81141F0: @ 81141F0
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r6, r0, 0
- mov r8, r1
- mov r9, r2
- ldr r3, _0811424C @ =0x02014800
- lsls r1, r2, 5
- mov r0, r8
- adds r4, r0, r1
- ldr r5, _08114250 @ =0x000030c4
- adds r2, r3, r5
- adds r2, r4, r2
- adds r1, r6, r1
- ldr r7, _08114254 @ =0x000010c4
- adds r0, r3, r7
- adds r5, r1, r0
- ldrb r0, [r5]
- strb r0, [r2]
- ldr r0, _08114258 @ =0x000038c4
- adds r2, r3, r0
- adds r2, r4, r2
- ldr r7, _0811425C @ =0x000018c4
- adds r0, r3, r7
- adds r1, r0
- ldrb r0, [r1]
- strb r0, [r2]
- movs r7, 0
- ldr r1, _08114260 @ =0x000020c4
- adds r0, r3, r1
- adds r2, r4, r0
- ldrb r1, [r5]
- ldrb r0, [r2]
- mov r12, r3
- cmp r1, r0
- bcs _08114264
- mov r0, r12
- adds r0, 0xC4
- adds r0, r4, r0
- movs r1, 0x4
- strb r1, [r0]
- ldrb r1, [r2]
- ldrb r0, [r5]
- b _08114276
- .align 2, 0
-_0811424C: .4byte 0x02014800
-_08114250: .4byte 0x000030c4
-_08114254: .4byte 0x000010c4
-_08114258: .4byte 0x000038c4
-_0811425C: .4byte 0x000018c4
-_08114260: .4byte 0x000020c4
-_08114264:
- cmp r1, r0
- bls _08114278
- mov r0, r12
- adds r0, 0xC4
- adds r0, r4, r0
- movs r1, 0x1
- strb r1, [r0]
- ldrb r1, [r5]
- ldrb r0, [r2]
-_08114276:
- subs r7, r1, r0
-_08114278:
- mov r5, r8
- lsls r3, r5, 1
- mov r0, r9
- lsls r4, r0, 6
- adds r0, r3, r4
- ldr r1, _081142BC @ =0x000080c4
- add r1, r12
- adds r0, r1
- lsls r1, r7, 4
- strh r1, [r0]
- movs r7, 0
- mov r1, r9
- lsls r2, r1, 5
- adds r1, r6, r2
- ldr r0, _081142C0 @ =0x000018c4
- add r0, r12
- adds r6, r1, r0
- adds r1, r5, r2
- ldr r0, _081142C4 @ =0x000028c4
- add r0, r12
- adds r5, r1, r0
- ldrb r2, [r6]
- ldrb r0, [r5]
- cmp r2, r0
- bcs _081142CC
- ldr r0, _081142C8 @ =0x000008c4
- add r0, r12
- adds r0, r1, r0
- movs r1, 0x3
- strb r1, [r0]
- ldrb r1, [r5]
- ldrb r0, [r6]
- b _081142DE
- .align 2, 0
-_081142BC: .4byte 0x000080c4
-_081142C0: .4byte 0x000018c4
-_081142C4: .4byte 0x000028c4
-_081142C8: .4byte 0x000008c4
-_081142CC:
- cmp r2, r0
- bls _081142E0
- ldr r0, _08114304 @ =0x000008c4
- add r0, r12
- adds r0, r1, r0
- movs r1, 0x2
- strb r1, [r0]
- ldrb r1, [r6]
- ldrb r0, [r5]
-_081142DE:
- subs r7, r1, r0
-_081142E0:
- adds r0, r3, r4
- ldr r1, _08114308 @ =0x000090c4
- add r1, r12
- adds r0, r1
- lsls r1, r7, 4
- strh r1, [r0]
- mov r1, r12
- adds r1, 0x84
- add r1, r9
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08114304: .4byte 0x000008c4
-_08114308: .4byte 0x000090c4
- thumb_func_end sub_81141F0
-
- thumb_func_start sub_811430C
-sub_811430C: @ 811430C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r5, _081143AC @ =0x02014800
- lsls r4, r1, 5
- adds r4, r0, r4
- ldr r2, _081143B0 @ =0x000028c4
- adds r2, r5
- mov r10, r2
- add r10, r4
- mov r3, r10
- ldrb r2, [r3]
- ldr r6, _081143B4 @ =0x000020c4
- adds r6, r5
- mov r8, r6
- add r8, r4
- mov r6, r8
- ldrb r3, [r6]
- subs r7, r2, r3
- ldr r2, _081143B8 @ =0x000030c4
- adds r6, r5, r2
- adds r6, r4, r6
- ldr r2, _081143BC @ =0x000038c4
- adds r2, r5
- mov r9, r2
- add r9, r4
- lsrs r2, r7, 31
- adds r2, r7, r2
- asrs r2, 1
- adds r3, r2
- mov r2, r9
- strb r3, [r2]
- strb r3, [r6]
- adds r2, r5, 0
- adds r2, 0xC4
- adds r2, r4, r2
- movs r3, 0x5
- strb r3, [r2]
- ldr r3, _081143C0 @ =0x000008c4
- adds r2, r5, r3
- adds r4, r2
- movs r2, 0x7
- strb r2, [r4]
- adds r3, r5, 0
- adds r3, 0x84
- adds r3, r1, r3
- ldrb r2, [r3]
- adds r2, 0x1
- strb r2, [r3]
- ldrb r3, [r6]
- mov r4, r8
- ldrb r2, [r4]
- subs r7, r3, r2
- lsls r0, 1
- lsls r1, 6
- adds r0, r1
- ldr r6, _081143C4 @ =0x000080c4
- adds r1, r5, r6
- adds r1, r0, r1
- lsls r2, r7, 4
- strh r2, [r1]
- mov r1, r10
- ldrb r2, [r1]
- mov r3, r9
- ldrb r1, [r3]
- subs r7, r2, r1
- ldr r4, _081143C8 @ =0x000090c4
- adds r5, r4
- adds r0, r5
- lsls r1, r7, 4
- strh r1, [r0]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081143AC: .4byte 0x02014800
-_081143B0: .4byte 0x000028c4
-_081143B4: .4byte 0x000020c4
-_081143B8: .4byte 0x000030c4
-_081143BC: .4byte 0x000038c4
-_081143C0: .4byte 0x000008c4
-_081143C4: .4byte 0x000080c4
-_081143C8: .4byte 0x000090c4
- thumb_func_end sub_811430C
-
- thumb_func_start unref_sub_81143CC
-unref_sub_81143CC: @ 81143CC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- movs r0, 0x1
- str r0, [sp, 0x4]
- ldr r0, _08114408 @ =0x02014800
- ldr r2, _0811440C @ =0x0000a0c4
- adds r1, r0, r2
- ldrb r3, [r1]
- adds r4, r0, 0
- cmp r3, 0
- beq _081143EE
- subs r0, r3, 0x1
- strb r0, [r1]
-_081143EE:
- movs r5, 0
- str r5, [sp]
-_081143F2:
- movs r3, 0
- adds r2, r4, 0
- adds r0, r4, 0
- adds r0, 0x84
- ldr r1, [sp]
- adds r0, r1, r0
- adds r1, 0x1
- str r1, [sp, 0x8]
- bl _08114D84
- .align 2, 0
-_08114408: .4byte 0x02014800
-_0811440C: .4byte 0x0000a0c4
-_08114410:
- ldr r5, [sp]
- lsls r0, r5, 5
- adds r1, r3, r0
- adds r2, 0xC4
- adds r1, r2
- ldrb r2, [r1]
- mov r8, r0
- adds r0, r3, 0x1
- mov r10, r0
- cmp r2, 0xC
- bls _08114428
- b _081148D2
-_08114428:
- lsls r0, r2, 2
- ldr r1, _08114434 @ =_08114438
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08114434: .4byte _08114438
- .align 2, 0
-_08114438:
- .4byte _081148D2
- .4byte _0811446C
- .4byte _081144F0
- .4byte _0811457C
- .4byte _08114600
- .4byte _0811468C
- .4byte _081146C8
- .4byte _08114704
- .4byte _08114740
- .4byte _0811477C
- .4byte _081147D0
- .4byte _08114810
- .4byte _08114858
-_0811446C:
- movs r1, 0
- str r1, [sp, 0x4]
- lsls r0, r3, 1
- ldr r2, [sp]
- lsls r1, r2, 6
- adds r0, r1
- ldr r5, _081144E0 @ =0x000060c4
- adds r2, r4, r5
- adds r2, r0, r2
- ldr r5, _081144E4 @ =0x000080c4
- adds r1, r4, r5
- adds r0, r1
- ldrh r1, [r0]
- ldrh r0, [r2]
- adds r1, r0
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- lsrs r5, r0, 8
- movs r0, 0xFF
- ands r1, r0
- strh r1, [r2]
- movs r6, 0
- adds r1, r3, 0x1
- mov r10, r1
- ldr r2, [sp, 0x4]
- cmp r2, r5
- blt _081144A6
- b _081148D2
-_081144A6:
- mov r9, r4
- mov r4, r8
- adds r7, r3, r4
- ldr r0, _081144E8 @ =0x000030c4
- add r0, r9
- adds r4, r7, r0
- ldr r0, _081144EC @ =0x000020c4
- add r0, r9
- adds r2, r7, r0
-_081144B8:
- ldrb r0, [r4]
- subs r0, 0x1
- strb r0, [r4]
- ldrb r1, [r4]
- ldr r0, [sp]
- str r2, [sp, 0xC]
- str r3, [sp, 0x10]
- bl sub_8114DB4
- ldrb r0, [r4]
- ldr r2, [sp, 0xC]
- ldr r3, [sp, 0x10]
- ldrb r1, [r2]
- cmp r0, r1
- bne _081144D8
- b _081148A0
-_081144D8:
- adds r6, 0x1
- cmp r6, r5
- blt _081144B8
- b _081148D2
- .align 2, 0
-_081144E0: .4byte 0x000060c4
-_081144E4: .4byte 0x000080c4
-_081144E8: .4byte 0x000030c4
-_081144EC: .4byte 0x000020c4
-_081144F0:
- movs r2, 0
- str r2, [sp, 0x4]
- ldr r4, _08114568 @ =0x02014800
- lsls r0, r3, 1
- ldr r5, [sp]
- lsls r1, r5, 6
- adds r0, r1
- ldr r1, _0811456C @ =0x000060c4
- adds r2, r4, r1
- adds r2, r0, r2
- ldr r5, _08114570 @ =0x000080c4
- adds r1, r4, r5
- adds r0, r1
- ldrh r1, [r0]
- ldrh r0, [r2]
- adds r1, r0
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- lsrs r5, r0, 8
- movs r0, 0xFF
- ands r1, r0
- strh r1, [r2]
- movs r6, 0
- adds r1, r3, 0x1
- mov r10, r1
- ldr r2, [sp, 0x4]
- cmp r2, r5
- blt _0811452C
- b _081148D2
-_0811452C:
- mov r9, r4
- mov r4, r8
- adds r7, r3, r4
- ldr r0, _08114574 @ =0x000030c4
- add r0, r9
- adds r4, r7, r0
- ldr r0, _08114578 @ =0x000020c4
- add r0, r9
- adds r2, r7, r0
-_0811453E:
- ldrb r0, [r4]
- ldrb r1, [r2]
- cmp r0, r1
- bne _08114548
- b _081148B8
-_08114548:
- adds r1, r0, 0
- ldr r0, [sp]
- str r2, [sp, 0xC]
- str r3, [sp, 0x10]
- bl sub_8114DF0
- ldrb r0, [r4]
- subs r0, 0x1
- strb r0, [r4]
- adds r6, 0x1
- ldr r2, [sp, 0xC]
- ldr r3, [sp, 0x10]
- cmp r6, r5
- blt _0811453E
- b _081148D2
- .align 2, 0
-_08114568: .4byte 0x02014800
-_0811456C: .4byte 0x000060c4
-_08114570: .4byte 0x000080c4
-_08114574: .4byte 0x000030c4
-_08114578: .4byte 0x000020c4
-_0811457C:
- movs r2, 0
- str r2, [sp, 0x4]
- lsls r0, r3, 1
- ldr r5, [sp]
- lsls r1, r5, 6
- adds r0, r1
- ldr r1, _081145F0 @ =0x000060c4
- adds r2, r4, r1
- adds r2, r0, r2
- ldr r5, _081145F4 @ =0x000080c4
- adds r1, r4, r5
- adds r0, r1
- ldrh r1, [r0]
- ldrh r0, [r2]
- adds r1, r0
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- lsrs r5, r0, 8
- movs r0, 0xFF
- ands r1, r0
- strh r1, [r2]
- movs r6, 0
- adds r1, r3, 0x1
- mov r10, r1
- ldr r2, [sp, 0x4]
- cmp r2, r5
- blt _081145B6
- b _081148D2
-_081145B6:
- mov r9, r4
- mov r4, r8
- adds r7, r3, r4
- ldr r0, _081145F8 @ =0x000030c4
- add r0, r9
- adds r4, r7, r0
- ldr r0, _081145FC @ =0x000020c4
- add r0, r9
- adds r2, r7, r0
-_081145C8:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldrb r1, [r4]
- ldr r0, [sp]
- str r2, [sp, 0xC]
- str r3, [sp, 0x10]
- bl sub_8114DB4
- ldrb r0, [r4]
- ldr r2, [sp, 0xC]
- ldr r3, [sp, 0x10]
- ldrb r1, [r2]
- cmp r0, r1
- bne _081145E8
- b _081148AC
-_081145E8:
- adds r6, 0x1
- cmp r6, r5
- blt _081145C8
- b _081148D2
- .align 2, 0
-_081145F0: .4byte 0x000060c4
-_081145F4: .4byte 0x000080c4
-_081145F8: .4byte 0x000030c4
-_081145FC: .4byte 0x000020c4
-_08114600:
- movs r2, 0
- str r2, [sp, 0x4]
- ldr r4, _08114678 @ =0x02014800
- lsls r0, r3, 1
- ldr r5, [sp]
- lsls r1, r5, 6
- adds r0, r1
- ldr r1, _0811467C @ =0x000060c4
- adds r2, r4, r1
- adds r2, r0, r2
- ldr r5, _08114680 @ =0x000080c4
- adds r1, r4, r5
- adds r0, r1
- ldrh r1, [r0]
- ldrh r0, [r2]
- adds r1, r0
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- lsrs r5, r0, 8
- movs r0, 0xFF
- ands r1, r0
- strh r1, [r2]
- movs r6, 0
- adds r1, r3, 0x1
- mov r10, r1
- ldr r2, [sp, 0x4]
- cmp r2, r5
- blt _0811463C
- b _081148D2
-_0811463C:
- mov r9, r4
- mov r4, r8
- adds r7, r3, r4
- ldr r0, _08114684 @ =0x000030c4
- add r0, r9
- adds r4, r7, r0
- ldr r0, _08114688 @ =0x000020c4
- add r0, r9
- adds r2, r7, r0
-_0811464E:
- ldrb r0, [r4]
- ldrb r1, [r2]
- cmp r0, r1
- bne _08114658
- b _081148B8
-_08114658:
- adds r1, r0, 0
- ldr r0, [sp]
- str r2, [sp, 0xC]
- str r3, [sp, 0x10]
- bl sub_8114DF0
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- adds r6, 0x1
- ldr r2, [sp, 0xC]
- ldr r3, [sp, 0x10]
- cmp r6, r5
- blt _0811464E
- b _081148D2
- .align 2, 0
-_08114678: .4byte 0x02014800
-_0811467C: .4byte 0x000060c4
-_08114680: .4byte 0x000080c4
-_08114684: .4byte 0x000030c4
-_08114688: .4byte 0x000020c4
-_0811468C:
- movs r2, 0
- str r2, [sp, 0x4]
- ldr r5, _081146C0 @ =0x02014800
- mov r0, r8
- adds r4, r3, r0
- ldr r1, _081146C4 @ =0x000030c4
- adds r0, r5, r1
- adds r0, r4, r0
- ldrb r1, [r0]
- ldr r0, [sp]
- str r3, [sp, 0x10]
- bl sub_8114E48
- lsls r0, 24
- ldr r3, [sp, 0x10]
- adds r2, r3, 0x1
- mov r10, r2
- cmp r0, 0
- bne _081146B4
- b _081148D2
-_081146B4:
- adds r0, r5, 0
- adds r0, 0xC4
- adds r0, r4, r0
- movs r1, 0x9
- strb r1, [r0]
- b _081148D2
- .align 2, 0
-_081146C0: .4byte 0x02014800
-_081146C4: .4byte 0x000030c4
-_081146C8:
- movs r4, 0
- str r4, [sp, 0x4]
- ldr r5, _081146FC @ =0x02014800
- mov r0, r8
- adds r4, r3, r0
- ldr r1, _08114700 @ =0x000030c4
- adds r0, r5, r1
- adds r0, r4, r0
- ldrb r1, [r0]
- ldr r0, [sp]
- str r3, [sp, 0x10]
- bl sub_8114E48
- lsls r0, 24
- ldr r3, [sp, 0x10]
- adds r2, r3, 0x1
- mov r10, r2
- cmp r0, 0
- bne _081146F0
- b _081148D2
-_081146F0:
- adds r0, r5, 0
- adds r0, 0xC4
- adds r0, r4, r0
- movs r1, 0xA
- strb r1, [r0]
- b _081148D2
- .align 2, 0
-_081146FC: .4byte 0x02014800
-_08114700: .4byte 0x000030c4
-_08114704:
- movs r4, 0
- str r4, [sp, 0x4]
- ldr r5, _08114738 @ =0x02014800
- mov r0, r8
- adds r4, r3, r0
- ldr r1, _0811473C @ =0x000030c4
- adds r0, r5, r1
- adds r0, r4, r0
- ldrb r1, [r0]
- ldr r0, [sp]
- str r3, [sp, 0x10]
- bl sub_8114E48
- lsls r0, 24
- ldr r3, [sp, 0x10]
- adds r2, r3, 0x1
- mov r10, r2
- cmp r0, 0
- bne _0811472C
- b _081148D2
-_0811472C:
- adds r0, r5, 0
- adds r0, 0xC4
- adds r0, r4, r0
- movs r1, 0xB
- strb r1, [r0]
- b _081148D2
- .align 2, 0
-_08114738: .4byte 0x02014800
-_0811473C: .4byte 0x000030c4
-_08114740:
- movs r4, 0
- str r4, [sp, 0x4]
- ldr r5, _08114774 @ =0x02014800
- mov r0, r8
- adds r4, r3, r0
- ldr r1, _08114778 @ =0x000030c4
- adds r0, r5, r1
- adds r0, r4, r0
- ldrb r1, [r0]
- ldr r0, [sp]
- str r3, [sp, 0x10]
- bl sub_8114E48
- lsls r0, 24
- ldr r3, [sp, 0x10]
- adds r2, r3, 0x1
- mov r10, r2
- cmp r0, 0
- bne _08114768
- b _081148D2
-_08114768:
- adds r0, r5, 0
- adds r0, 0xC4
- adds r0, r4, r0
- movs r1, 0xC
- strb r1, [r0]
- b _081148D2
- .align 2, 0
-_08114774: .4byte 0x02014800
-_08114778: .4byte 0x000030c4
-_0811477C:
- movs r4, 0
- str r4, [sp, 0x4]
- ldr r6, _081147B4 @ =0x02014800
- mov r0, r8
- adds r5, r3, r0
- ldr r1, _081147B8 @ =0x000030c4
- adds r4, r6, r1
- adds r4, r5, r4
- ldrb r1, [r4]
- ldr r0, [sp]
- str r3, [sp, 0x10]
- bl sub_8114DB4
- ldr r2, _081147BC @ =0x000020c4
- adds r0, r6, r2
- adds r0, r5, r0
- ldrb r1, [r4]
- ldr r3, [sp, 0x10]
- ldrb r0, [r0]
- cmp r1, r0
- bne _081147C0
- adds r0, r6, 0
- adds r0, 0xC4
- adds r0, r5, r0
- mov r4, sp
- ldrb r4, [r4, 0x4]
- strb r4, [r0]
- b _08114844
- .align 2, 0
-_081147B4: .4byte 0x02014800
-_081147B8: .4byte 0x000030c4
-_081147BC: .4byte 0x000020c4
-_081147C0:
- adds r0, r6, 0
- adds r0, 0xC4
- adds r0, r5, r0
- movs r1, 0x1
- strb r1, [r0]
- adds r0, r3, 0x1
- mov r10, r0
- b _081148D2
-_081147D0:
- movs r1, 0
- str r1, [sp, 0x4]
- ldr r6, _08114804 @ =0x02014800
- mov r2, r8
- adds r5, r3, r2
- ldr r0, _08114808 @ =0x000030c4
- adds r4, r6, r0
- adds r4, r5, r4
- ldrb r1, [r4]
- ldr r0, [sp]
- str r3, [sp, 0x10]
- bl sub_8114DF0
- ldr r1, _0811480C @ =0x000020c4
- adds r0, r6, r1
- adds r0, r5, r0
- ldrb r1, [r4]
- ldr r3, [sp, 0x10]
- ldrb r0, [r0]
- cmp r1, r0
- beq _08114882
- adds r0, r6, 0
- adds r0, 0xC4
- adds r0, r5, r0
- movs r1, 0x2
- b _08114842
- .align 2, 0
-_08114804: .4byte 0x02014800
-_08114808: .4byte 0x000030c4
-_0811480C: .4byte 0x000020c4
-_08114810:
- movs r0, 0
- str r0, [sp, 0x4]
- ldr r6, _0811484C @ =0x02014800
- mov r1, r8
- adds r5, r3, r1
- ldr r2, _08114850 @ =0x000030c4
- adds r4, r6, r2
- adds r4, r5, r4
- ldrb r1, [r4]
- ldr r0, [sp]
- str r3, [sp, 0x10]
- bl sub_8114DB4
- ldr r1, _08114854 @ =0x000020c4
- adds r0, r6, r1
- adds r0, r5, r0
- ldrb r1, [r4]
- ldr r3, [sp, 0x10]
- ldrb r0, [r0]
- cmp r1, r0
- beq _08114882
- adds r0, r6, 0
- adds r0, 0xC4
- adds r0, r5, r0
- movs r1, 0x3
-_08114842:
- strb r1, [r0]
-_08114844:
- adds r5, r3, 0x1
- mov r10, r5
- b _081148D2
- .align 2, 0
-_0811484C: .4byte 0x02014800
-_08114850: .4byte 0x000030c4
-_08114854: .4byte 0x000020c4
-_08114858:
- movs r0, 0
- str r0, [sp, 0x4]
- ldr r6, _08114894 @ =0x02014800
- mov r1, r8
- adds r5, r3, r1
- ldr r2, _08114898 @ =0x000030c4
- adds r4, r6, r2
- adds r4, r5, r4
- ldrb r1, [r4]
- ldr r0, [sp]
- str r3, [sp, 0x10]
- bl sub_8114DF0
- ldr r1, _0811489C @ =0x000020c4
- adds r0, r6, r1
- adds r0, r5, r0
- ldrb r1, [r4]
- ldr r3, [sp, 0x10]
- ldrb r0, [r0]
- cmp r1, r0
- bne _081148C4
-_08114882:
- adds r0, r6, 0
- adds r0, 0xC4
- adds r0, r5, r0
- mov r2, sp
- ldrb r2, [r2, 0x4]
- strb r2, [r0]
- adds r4, r3, 0x1
- mov r10, r4
- b _081148D2
- .align 2, 0
-_08114894: .4byte 0x02014800
-_08114898: .4byte 0x000030c4
-_0811489C: .4byte 0x000020c4
-_081148A0:
- mov r0, r9
- adds r0, 0xC4
- adds r0, r7, r0
- movs r5, 0
- strb r5, [r0]
- b _081148D2
-_081148AC:
- mov r0, r9
- adds r0, 0xC4
- adds r0, r7, r0
- movs r1, 0
- strb r1, [r0]
- b _081148D2
-_081148B8:
- mov r0, r9
- adds r0, 0xC4
- adds r0, r7, r0
- movs r1, 0
- strb r1, [r0]
- b _081148D2
-_081148C4:
- adds r0, r6, 0
- adds r0, 0xC4
- adds r0, r5, r0
- movs r1, 0x4
- strb r1, [r0]
- adds r2, r3, 0x1
- mov r10, r2
-_081148D2:
- ldr r0, _081148F4 @ =0x02014800
- mov r4, r8
- adds r1, r3, r4
- ldr r5, _081148F8 @ =0x000008c4
- adds r2, r0, r5
- adds r1, r2
- ldrb r1, [r1]
- adds r4, r0, 0
- cmp r1, 0xC
- bls _081148E8
- b _08114D76
-_081148E8:
- lsls r0, r1, 2
- ldr r1, _081148FC @ =_08114900
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081148F4: .4byte 0x02014800
-_081148F8: .4byte 0x000008c4
-_081148FC: .4byte _08114900
- .align 2, 0
-_08114900:
- .4byte _08114D76
- .4byte _08114934
- .4byte _081149B8
- .4byte _08114A3C
- .4byte _08114AC0
- .4byte _08114B44
- .4byte _08114B7C
- .4byte _08114BB4
- .4byte _08114BEC
- .4byte _08114C24
- .4byte _08114C78
- .4byte _08114CB8
- .4byte _08114CF8
-_08114934:
- movs r0, 0
- str r0, [sp, 0x4]
- lsls r0, r3, 1
- ldr r2, [sp]
- lsls r1, r2, 6
- adds r0, r1
- ldr r5, _081149A8 @ =0x000070c4
- adds r2, r4, r5
- adds r2, r0, r2
- ldr r5, _081149AC @ =0x000090c4
- adds r1, r4, r5
- adds r0, r1
- ldrh r1, [r0]
- ldrh r0, [r2]
- adds r1, r0
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- lsrs r5, r0, 8
- movs r0, 0xFF
- ands r1, r0
- strh r1, [r2]
- movs r6, 0
- ldr r1, [sp, 0x4]
- cmp r1, r5
- blt _0811496A
- b _08114D76
-_0811496A:
- mov r9, r4
- mov r2, r8
- adds r7, r3, r2
- ldr r0, _081149B0 @ =0x000038c4
- add r0, r9
- adds r4, r7, r0
- movs r3, 0
- ldr r0, _081149B4 @ =0x000028c4
- add r0, r9
- adds r2, r7, r0
-_0811497E:
- ldrb r0, [r4]
- subs r0, 0x1
- strb r0, [r4]
- ldrb r1, [r4]
- ldr r0, [sp]
- str r2, [sp, 0xC]
- str r3, [sp, 0x10]
- bl sub_8114DB4
- ldrb r0, [r4]
- ldr r2, [sp, 0xC]
- ldr r3, [sp, 0x10]
- ldrb r1, [r2]
- cmp r0, r1
- bne _0811499E
- b _08114D4C
-_0811499E:
- adds r6, 0x1
- cmp r6, r5
- blt _0811497E
- b _08114D76
- .align 2, 0
-_081149A8: .4byte 0x000070c4
-_081149AC: .4byte 0x000090c4
-_081149B0: .4byte 0x000038c4
-_081149B4: .4byte 0x000028c4
-_081149B8:
- movs r2, 0
- str r2, [sp, 0x4]
- ldr r4, _08114A28 @ =0x02014800
- lsls r0, r3, 1
- ldr r5, [sp]
- lsls r1, r5, 6
- adds r0, r1
- ldr r1, _08114A2C @ =0x000070c4
- adds r2, r4, r1
- adds r2, r0, r2
- ldr r5, _08114A30 @ =0x000090c4
- adds r1, r4, r5
- adds r0, r1
- ldrh r1, [r0]
- ldrh r0, [r2]
- adds r1, r0
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- lsrs r5, r0, 8
- movs r0, 0xFF
- ands r1, r0
- strh r1, [r2]
- movs r6, 0
- ldr r1, [sp, 0x4]
- cmp r1, r5
- blt _081149F0
- b _08114D76
-_081149F0:
- mov r9, r4
- mov r2, r8
- adds r7, r3, r2
- ldr r0, _08114A34 @ =0x000038c4
- add r0, r9
- adds r4, r7, r0
- ldr r0, _08114A38 @ =0x000028c4
- add r0, r9
- adds r2, r7, r0
-_08114A02:
- ldrb r0, [r4]
- ldrb r1, [r2]
- cmp r0, r1
- bne _08114A0C
- b _08114D3C
-_08114A0C:
- adds r1, r0, 0
- ldr r0, [sp]
- str r2, [sp, 0xC]
- bl sub_8114DF0
- ldrb r0, [r4]
- subs r0, 0x1
- strb r0, [r4]
- adds r6, 0x1
- ldr r2, [sp, 0xC]
- cmp r6, r5
- blt _08114A02
- b _08114D76
- .align 2, 0
-_08114A28: .4byte 0x02014800
-_08114A2C: .4byte 0x000070c4
-_08114A30: .4byte 0x000090c4
-_08114A34: .4byte 0x000038c4
-_08114A38: .4byte 0x000028c4
-_08114A3C:
- movs r2, 0
- str r2, [sp, 0x4]
- lsls r0, r3, 1
- ldr r5, [sp]
- lsls r1, r5, 6
- adds r0, r1
- ldr r1, _08114AB0 @ =0x000070c4
- adds r2, r4, r1
- adds r2, r0, r2
- ldr r5, _08114AB4 @ =0x000090c4
- adds r1, r4, r5
- adds r0, r1
- ldrh r1, [r0]
- ldrh r0, [r2]
- adds r1, r0
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- lsrs r5, r0, 8
- movs r0, 0xFF
- ands r1, r0
- strh r1, [r2]
- movs r6, 0
- ldr r1, [sp, 0x4]
- cmp r1, r5
- blt _08114A72
- b _08114D76
-_08114A72:
- mov r9, r4
- mov r2, r8
- adds r7, r3, r2
- ldr r0, _08114AB8 @ =0x000038c4
- add r0, r9
- adds r4, r7, r0
- movs r3, 0
- ldr r0, _08114ABC @ =0x000028c4
- add r0, r9
- adds r2, r7, r0
-_08114A86:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldrb r1, [r4]
- ldr r0, [sp]
- str r2, [sp, 0xC]
- str r3, [sp, 0x10]
- bl sub_8114DB4
- ldrb r0, [r4]
- ldr r2, [sp, 0xC]
- ldr r3, [sp, 0x10]
- ldrb r1, [r2]
- cmp r0, r1
- bne _08114AA6
- b _08114D4C
-_08114AA6:
- adds r6, 0x1
- cmp r6, r5
- blt _08114A86
- b _08114D76
- .align 2, 0
-_08114AB0: .4byte 0x000070c4
-_08114AB4: .4byte 0x000090c4
-_08114AB8: .4byte 0x000038c4
-_08114ABC: .4byte 0x000028c4
-_08114AC0:
- movs r2, 0
- str r2, [sp, 0x4]
- ldr r4, _08114B30 @ =0x02014800
- lsls r0, r3, 1
- ldr r5, [sp]
- lsls r1, r5, 6
- adds r0, r1
- ldr r1, _08114B34 @ =0x000070c4
- adds r2, r4, r1
- adds r2, r0, r2
- ldr r5, _08114B38 @ =0x000090c4
- adds r1, r4, r5
- adds r0, r1
- ldrh r1, [r0]
- ldrh r0, [r2]
- adds r1, r0
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- lsrs r5, r0, 8
- movs r0, 0xFF
- ands r1, r0
- strh r1, [r2]
- movs r6, 0
- ldr r1, [sp, 0x4]
- cmp r1, r5
- blt _08114AF8
- b _08114D76
-_08114AF8:
- mov r9, r4
- mov r2, r8
- adds r7, r3, r2
- ldr r0, _08114B3C @ =0x000038c4
- add r0, r9
- adds r4, r7, r0
- ldr r0, _08114B40 @ =0x000028c4
- add r0, r9
- adds r2, r7, r0
-_08114B0A:
- ldrb r0, [r4]
- ldrb r1, [r2]
- cmp r0, r1
- bne _08114B14
- b _08114D5C
-_08114B14:
- adds r1, r0, 0
- ldr r0, [sp]
- str r2, [sp, 0xC]
- bl sub_8114DF0
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- adds r6, 0x1
- ldr r2, [sp, 0xC]
- cmp r6, r5
- blt _08114B0A
- b _08114D76
- .align 2, 0
-_08114B30: .4byte 0x02014800
-_08114B34: .4byte 0x000070c4
-_08114B38: .4byte 0x000090c4
-_08114B3C: .4byte 0x000038c4
-_08114B40: .4byte 0x000028c4
-_08114B44:
- movs r2, 0
- str r2, [sp, 0x4]
- ldr r5, _08114B70 @ =0x02014800
- mov r0, r8
- adds r4, r3, r0
- ldr r1, _08114B74 @ =0x000038c4
- adds r0, r5, r1
- adds r0, r4, r0
- ldrb r1, [r0]
- ldr r0, [sp]
- bl sub_8114E48
- lsls r0, 24
- cmp r0, 0
- bne _08114B64
- b _08114D76
-_08114B64:
- ldr r2, _08114B78 @ =0x000008c4
- adds r0, r5, r2
- adds r0, r4, r0
- movs r1, 0x9
- b _08114D74
- .align 2, 0
-_08114B70: .4byte 0x02014800
-_08114B74: .4byte 0x000038c4
-_08114B78: .4byte 0x000008c4
-_08114B7C:
- movs r4, 0
- str r4, [sp, 0x4]
- ldr r5, _08114BA8 @ =0x02014800
- mov r0, r8
- adds r4, r3, r0
- ldr r1, _08114BAC @ =0x000038c4
- adds r0, r5, r1
- adds r0, r4, r0
- ldrb r1, [r0]
- ldr r0, [sp]
- bl sub_8114E48
- lsls r0, 24
- cmp r0, 0
- bne _08114B9C
- b _08114D76
-_08114B9C:
- ldr r2, _08114BB0 @ =0x000008c4
- adds r0, r5, r2
- adds r0, r4, r0
- movs r1, 0xA
- b _08114D74
- .align 2, 0
-_08114BA8: .4byte 0x02014800
-_08114BAC: .4byte 0x000038c4
-_08114BB0: .4byte 0x000008c4
-_08114BB4:
- movs r4, 0
- str r4, [sp, 0x4]
- ldr r5, _08114BE0 @ =0x02014800
- mov r0, r8
- adds r4, r3, r0
- ldr r1, _08114BE4 @ =0x000038c4
- adds r0, r5, r1
- adds r0, r4, r0
- ldrb r1, [r0]
- ldr r0, [sp]
- bl sub_8114E48
- lsls r0, 24
- cmp r0, 0
- bne _08114BD4
- b _08114D76
-_08114BD4:
- ldr r2, _08114BE8 @ =0x000008c4
- adds r0, r5, r2
- adds r0, r4, r0
- movs r1, 0xB
- b _08114D74
- .align 2, 0
-_08114BE0: .4byte 0x02014800
-_08114BE4: .4byte 0x000038c4
-_08114BE8: .4byte 0x000008c4
-_08114BEC:
- movs r4, 0
- str r4, [sp, 0x4]
- ldr r5, _08114C18 @ =0x02014800
- mov r0, r8
- adds r4, r3, r0
- ldr r1, _08114C1C @ =0x000038c4
- adds r0, r5, r1
- adds r0, r4, r0
- ldrb r1, [r0]
- ldr r0, [sp]
- bl sub_8114E48
- lsls r0, 24
- cmp r0, 0
- bne _08114C0C
- b _08114D76
-_08114C0C:
- ldr r2, _08114C20 @ =0x000008c4
- adds r0, r5, r2
- adds r0, r4, r0
- movs r1, 0xC
- b _08114D74
- .align 2, 0
-_08114C18: .4byte 0x02014800
-_08114C1C: .4byte 0x000038c4
-_08114C20: .4byte 0x000008c4
-_08114C24:
- movs r4, 0
- str r4, [sp, 0x4]
- ldr r6, _08114C58 @ =0x02014800
- mov r0, r8
- adds r5, r3, r0
- ldr r1, _08114C5C @ =0x000038c4
- adds r4, r6, r1
- adds r4, r5, r4
- ldrb r1, [r4]
- ldr r0, [sp]
- bl sub_8114DB4
- ldr r2, _08114C60 @ =0x000028c4
- adds r0, r6, r2
- adds r0, r5, r0
- ldrb r1, [r4]
- ldrb r0, [r0]
- cmp r1, r0
- bne _08114C68
- ldr r4, _08114C64 @ =0x000008c4
- adds r0, r6, r4
- adds r0, r5, r0
- mov r5, sp
- ldrb r5, [r5, 0x4]
- strb r5, [r0]
- b _08114D76
- .align 2, 0
-_08114C58: .4byte 0x02014800
-_08114C5C: .4byte 0x000038c4
-_08114C60: .4byte 0x000028c4
-_08114C64: .4byte 0x000008c4
-_08114C68:
- ldr r1, _08114C74 @ =0x000008c4
- adds r0, r6, r1
- adds r0, r5, r0
- movs r1, 0x1
- b _08114D74
- .align 2, 0
-_08114C74: .4byte 0x000008c4
-_08114C78:
- movs r2, 0
- str r2, [sp, 0x4]
- ldr r6, _08114CA8 @ =0x02014800
- mov r4, r8
- adds r5, r3, r4
- ldr r0, _08114CAC @ =0x000038c4
- adds r4, r6, r0
- adds r4, r5, r4
- ldrb r1, [r4]
- ldr r0, [sp]
- bl sub_8114DF0
- ldr r1, _08114CB0 @ =0x000028c4
- adds r0, r6, r1
- adds r0, r5, r0
- ldrb r1, [r4]
- ldrb r0, [r0]
- cmp r1, r0
- beq _08114D1E
- ldr r1, _08114CB4 @ =0x000008c4
- adds r0, r6, r1
- adds r0, r5, r0
- movs r1, 0x2
- b _08114D74
- .align 2, 0
-_08114CA8: .4byte 0x02014800
-_08114CAC: .4byte 0x000038c4
-_08114CB0: .4byte 0x000028c4
-_08114CB4: .4byte 0x000008c4
-_08114CB8:
- movs r2, 0
- str r2, [sp, 0x4]
- ldr r6, _08114CE8 @ =0x02014800
- mov r4, r8
- adds r5, r3, r4
- ldr r0, _08114CEC @ =0x000038c4
- adds r4, r6, r0
- adds r4, r5, r4
- ldrb r1, [r4]
- ldr r0, [sp]
- bl sub_8114DB4
- ldr r1, _08114CF0 @ =0x000028c4
- adds r0, r6, r1
- adds r0, r5, r0
- ldrb r1, [r4]
- ldrb r0, [r0]
- cmp r1, r0
- beq _08114D1E
- ldr r1, _08114CF4 @ =0x000008c4
- adds r0, r6, r1
- adds r0, r5, r0
- movs r1, 0x3
- b _08114D74
- .align 2, 0
-_08114CE8: .4byte 0x02014800
-_08114CEC: .4byte 0x000038c4
-_08114CF0: .4byte 0x000028c4
-_08114CF4: .4byte 0x000008c4
-_08114CF8:
- movs r2, 0
- str r2, [sp, 0x4]
- ldr r6, _08114D2C @ =0x02014800
- mov r4, r8
- adds r5, r3, r4
- ldr r0, _08114D30 @ =0x000038c4
- adds r4, r6, r0
- adds r4, r5, r4
- ldrb r1, [r4]
- ldr r0, [sp]
- bl sub_8114DF0
- ldr r1, _08114D34 @ =0x000028c4
- adds r0, r6, r1
- adds r0, r5, r0
- ldrb r1, [r4]
- ldrb r0, [r0]
- cmp r1, r0
- bne _08114D6C
-_08114D1E:
- ldr r2, _08114D38 @ =0x000008c4
- adds r0, r6, r2
- adds r0, r5, r0
- mov r4, sp
- ldrb r4, [r4, 0x4]
- strb r4, [r0]
- b _08114D76
- .align 2, 0
-_08114D2C: .4byte 0x02014800
-_08114D30: .4byte 0x000038c4
-_08114D34: .4byte 0x000028c4
-_08114D38: .4byte 0x000008c4
-_08114D3C:
- ldr r0, _08114D48 @ =0x000008c4
- add r0, r9
- adds r0, r7, r0
- movs r1, 0
- b _08114D74
- .align 2, 0
-_08114D48: .4byte 0x000008c4
-_08114D4C:
- ldr r0, _08114D58 @ =0x000008c4
- add r0, r9
- adds r0, r7, r0
- strb r3, [r0]
- b _08114D76
- .align 2, 0
-_08114D58: .4byte 0x000008c4
-_08114D5C:
- ldr r0, _08114D68 @ =0x000008c4
- add r0, r9
- adds r0, r7, r0
- movs r1, 0
- b _08114D74
- .align 2, 0
-_08114D68: .4byte 0x000008c4
-_08114D6C:
- ldr r1, _08114DAC @ =0x000008c4
- adds r0, r6, r1
- adds r0, r5, r0
- movs r1, 0x4
-_08114D74:
- strb r1, [r0]
-_08114D76:
- mov r3, r10
- ldr r2, _08114DB0 @ =0x02014800
- adds r0, r2, 0
- adds r0, 0x84
- ldr r4, [sp]
- adds r0, r4, r0
- adds r4, r2, 0
-_08114D84:
- ldrb r0, [r0]
- cmp r3, r0
- bge _08114D8E
- bl _08114410
-_08114D8E:
- ldr r5, [sp, 0x8]
- str r5, [sp]
- cmp r5, 0x3F
- bgt _08114D9A
- bl _081143F2
-_08114D9A:
- ldr r0, [sp, 0x4]
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08114DAC: .4byte 0x000008c4
-_08114DB0: .4byte 0x02014800
- thumb_func_end unref_sub_81143CC
-
- thumb_func_start sub_8114DB4
-sub_8114DB4: @ 8114DB4
- push {lr}
- lsls r1, 24
- lsrs r3, r1, 24
- ldr r2, _08114DDC @ =0x02014800
- lsrs r1, 25
- lsls r1, 2
- lsls r0, 7
- adds r1, r0
- ldr r0, _08114DE0 @ =0x000040c4
- adds r2, r0
- adds r1, r2
- ldr r2, [r1]
- movs r0, 0x1
- ands r3, r0
- cmp r3, 0
- beq _08114DE4
- ldrb r0, [r2]
- movs r1, 0xF0
- b _08114DE8
- .align 2, 0
-_08114DDC: .4byte 0x02014800
-_08114DE0: .4byte 0x000040c4
-_08114DE4:
- ldrb r0, [r2]
- movs r1, 0xF
-_08114DE8:
- orrs r0, r1
- strb r0, [r2]
- pop {r0}
- bx r0
- thumb_func_end sub_8114DB4
-
- thumb_func_start sub_8114DF0
-sub_8114DF0: @ 8114DF0
- push {lr}
- lsls r1, 24
- lsrs r3, r1, 24
- ldr r2, _08114E28 @ =0x02014800
- lsrs r1, 25
- lsls r1, 2
- lsls r0, 7
- adds r1, r0
- ldr r0, _08114E2C @ =0x000040c4
- adds r2, r0
- adds r1, r2
- ldr r2, [r1]
- movs r0, 0xC0
- lsls r0, 7
- adds r1, r2, r0
- movs r0, 0x1
- ands r3, r0
- cmp r3, 0
- beq _08114E30
- ldrb r1, [r1]
- movs r0, 0xF0
- ands r0, r1
- cmp r0, 0
- bne _08114E42
- ldrb r1, [r2]
- movs r0, 0xF
- b _08114E3E
- .align 2, 0
-_08114E28: .4byte 0x02014800
-_08114E2C: .4byte 0x000040c4
-_08114E30:
- ldrb r1, [r1]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0
- bne _08114E42
- ldrb r1, [r2]
- movs r0, 0xF0
-_08114E3E:
- ands r0, r1
- strb r0, [r2]
-_08114E42:
- pop {r0}
- bx r0
- thumb_func_end sub_8114DF0
-
- thumb_func_start sub_8114E48
-sub_8114E48: @ 8114E48
- push {r4-r7,lr}
- adds r4, r0, 0
- lsls r1, 24
- lsrs r6, r1, 24
- ldr r1, _08114E6C @ =0x02014800
- ldr r2, _08114E70 @ =0x0000a0c4
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r5, r1, 0
- cmp r0, 0
- bne _08114E60
- b _08114F5E
-_08114E60:
- movs r1, 0
- movs r3, 0
- cmp r4, 0
- bne _08114E74
- movs r1, 0x1
- b _08114EA6
- .align 2, 0
-_08114E6C: .4byte 0x02014800
-_08114E70: .4byte 0x0000a0c4
-_08114E74:
- subs r0, r4, 0x1
- lsls r0, 5
- adds r2, r3, r0
- adds r0, r5, 0
- adds r0, 0xC4
- adds r0, r2, r0
- ldrb r0, [r0]
- cmp r0, 0
- bne _08114EA6
- ldr r7, _08114EC4 @ =0x000008c4
- adds r0, r5, r7
- adds r0, r2, r0
- ldrb r0, [r0]
- cmp r0, 0
- bne _08114EA6
- adds r3, 0x1
- cmp r3, 0x1F
- bgt _08114EA6
- cmp r4, 0
- bne _08114E74
- lsls r0, r1, 24
- movs r1, 0x80
- lsls r1, 17
- adds r0, r1
- lsrs r1, r0, 24
-_08114EA6:
- cmp r3, 0x20
- bne _08114EB4
- lsls r0, r1, 24
- movs r2, 0x80
- lsls r2, 17
- adds r0, r2
- lsrs r1, r0, 24
-_08114EB4:
- movs r3, 0
- cmp r4, 0x3F
- bne _08114EC8
- lsls r0, r1, 24
- movs r7, 0x80
- lsls r7, 17
- adds r0, r7
- b _08114EF8
- .align 2, 0
-_08114EC4: .4byte 0x000008c4
-_08114EC8:
- adds r0, r4, 0x1
- lsls r0, 5
- adds r2, r3, r0
- adds r0, r5, 0
- adds r0, 0xC4
- adds r0, r2, r0
- ldrb r0, [r0]
- cmp r0, 0
- bne _08114EFA
- ldr r7, _08114F64 @ =0x000008c4
- adds r0, r5, r7
- adds r0, r2, r0
- ldrb r0, [r0]
- cmp r0, 0
- bne _08114EFA
- adds r3, 0x1
- cmp r3, 0x1F
- bgt _08114EFA
- cmp r4, 0x3F
- bne _08114EC8
- lsls r0, r1, 24
- movs r1, 0x80
- lsls r1, 17
- adds r0, r1
-_08114EF8:
- lsrs r1, r0, 24
-_08114EFA:
- cmp r3, 0x20
- bne _08114F08
- lsls r0, r1, 24
- movs r2, 0x80
- lsls r2, 17
- adds r0, r2
- lsrs r1, r0, 24
-_08114F08:
- cmp r1, 0x2
- beq _08114F5E
- subs r0, r6, 0x2
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r0, 0
- bge _08114F18
- movs r1, 0
-_08114F18:
- adds r0, r6, 0x2
- lsls r0, 24
- lsrs r2, r0, 24
- asrs r0, 24
- cmp r0, 0x3F
- ble _08114F26
- movs r2, 0x3F
-_08114F26:
- lsls r1, 24
- asrs r3, r1, 24
- lsls r0, r2, 24
- asrs r2, r0, 24
- adds r6, r1, 0
- adds r7, r0, 0
- cmp r3, r2
- bge _08114F7C
- cmp r4, 0
- beq _08114F7C
- subs r0, r4, 0x1
- lsls r5, r0, 7
- ldr r0, _08114F68 @ =0x020188c4
- mov r12, r0
-_08114F42:
- asrs r0, r3, 1
- lsls r0, 2
- adds r0, r5
- add r0, r12
- ldr r1, [r0]
- movs r0, 0x1
- ands r0, r3
- cmp r0, 0
- beq _08114F6C
- ldrb r1, [r1]
- movs r0, 0xF0
-_08114F58:
- ands r0, r1
- cmp r0, 0
- beq _08114F72
-_08114F5E:
- movs r0, 0x1
- b _08114FCA
- .align 2, 0
-_08114F64: .4byte 0x000008c4
-_08114F68: .4byte 0x020188c4
-_08114F6C:
- ldrb r1, [r1]
- movs r0, 0xF
- b _08114F58
-_08114F72:
- adds r3, 0x1
- cmp r3, r2
- bge _08114F7C
- cmp r4, 0
- bne _08114F42
-_08114F7C:
- asrs r3, r6, 24
- asrs r1, r7, 24
- cmp r3, r1
- bge _08114FC8
- cmp r4, 0x3F
- beq _08114FC8
- adds r0, r4, 0x1
- lsls r5, r0, 7
- ldr r6, _08114FB0 @ =0x020188c4
- adds r2, r1, 0
-_08114F90:
- asrs r0, r3, 1
- lsls r0, 2
- adds r0, r5
- adds r0, r6
- ldr r1, [r0]
- movs r0, 0x1
- ands r0, r3
- cmp r0, 0
- beq _08114FB4
- ldrb r1, [r1]
- movs r0, 0xF0
- ands r0, r1
- cmp r0, 0
- beq _08114FBE
- b _08114F5E
- .align 2, 0
-_08114FB0: .4byte 0x020188c4
-_08114FB4:
- ldrb r1, [r1]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0
- bne _08114F5E
-_08114FBE:
- adds r3, 0x1
- cmp r3, r2
- bge _08114FC8
- cmp r4, 0x3F
- bne _08114F90
-_08114FC8:
- movs r0, 0
-_08114FCA:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8114E48
-
- thumb_func_start HBlankCB_EvolutionScene
-HBlankCB_EvolutionScene: @ 8114FD0
- bx lr
- thumb_func_end HBlankCB_EvolutionScene
-
- thumb_func_start VBlankCB_EvolutionScene
-VBlankCB_EvolutionScene: @ 8114FD4
- push {lr}
- ldr r1, _08115034 @ =REG_BG0CNT
- ldr r2, _08115038 @ =0x00009803
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x8
- ldr r0, _0811503C @ =gUnknown_030042A4
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _08115040 @ =gUnknown_030042A0
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _08115044 @ =gUnknown_030042C0
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _08115048 @ =gUnknown_030041B4
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _0811504C @ =gUnknown_03004288
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _08115050 @ =gUnknown_03004280
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _08115054 @ =gUnknown_030041B0
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _08115058 @ =gUnknown_030041B8
- ldrh r0, [r0]
- strh r0, [r1]
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- bl sub_8089668
- pop {r0}
- bx r0
- .align 2, 0
-_08115034: .4byte REG_BG0CNT
-_08115038: .4byte 0x00009803
-_0811503C: .4byte gUnknown_030042A4
-_08115040: .4byte gUnknown_030042A0
-_08115044: .4byte gUnknown_030042C0
-_08115048: .4byte gUnknown_030041B4
-_0811504C: .4byte gUnknown_03004288
-_08115050: .4byte gUnknown_03004280
-_08115054: .4byte gUnknown_030041B0
-_08115058: .4byte gUnknown_030041B8
- thumb_func_end VBlankCB_EvolutionScene
-
- thumb_func_start VBlankCB_TradeEvolutionScene
-VBlankCB_TradeEvolutionScene: @ 811505C
- push {lr}
- ldr r1, _081150B4 @ =REG_BG0HOFS
- ldr r0, _081150B8 @ =gUnknown_030042A4
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _081150BC @ =gUnknown_030042A0
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _081150C0 @ =gUnknown_030042C0
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _081150C4 @ =gUnknown_030041B4
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _081150C8 @ =gUnknown_03004288
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _081150CC @ =gUnknown_03004280
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _081150D0 @ =gUnknown_030041B0
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _081150D4 @ =gUnknown_030041B8
- ldrh r0, [r0]
- strh r0, [r1]
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- bl sub_8089668
- pop {r0}
- bx r0
- .align 2, 0
-_081150B4: .4byte REG_BG0HOFS
-_081150B8: .4byte gUnknown_030042A4
-_081150BC: .4byte gUnknown_030042A0
-_081150C0: .4byte gUnknown_030042C0
-_081150C4: .4byte gUnknown_030041B4
-_081150C8: .4byte gUnknown_03004288
-_081150CC: .4byte gUnknown_03004280
-_081150D0: .4byte gUnknown_030041B0
-_081150D4: .4byte gUnknown_030041B8
- thumb_func_end VBlankCB_TradeEvolutionScene
-
- thumb_func_start sub_81150D8
-sub_81150D8: @ 81150D8
- push {lr}
- ldr r0, _081150F4 @ =gBattleCommunication
- ldrb r1, [r0, 0x1]
- lsls r1, 28
- movs r0, 0x90
- lsls r0, 23
- adds r1, r0
- lsrs r1, 24
- movs r0, 0xC8
- bl sub_814A880
- pop {r0}
- bx r0
- .align 2, 0
-_081150F4: .4byte gBattleCommunication
- thumb_func_end sub_81150D8
-
- thumb_func_start HBlankCB_TradeEvolutionScene
-HBlankCB_TradeEvolutionScene: @ 81150F8
- bx lr
- thumb_func_end HBlankCB_TradeEvolutionScene
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s
deleted file mode 100644
index 9df9dfd8d..000000000
--- a/asm/field_effect_helpers.s
+++ /dev/null
@@ -1,4349 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start SetUpReflection
-SetUpReflection: @ 812680C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- adds r4, r1, 0
- lsls r5, r2, 24
- lsrs r5, 24
- movs r0, 0x20
- ldrsh r1, [r4, r0]
- movs r0, 0x22
- ldrsh r2, [r4, r0]
- adds r0, r4, 0
- movs r3, 0x98
- bl obj_unfreeze
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _081268BC @ =gSprites
- adds r7, r1, r0
- ldr r0, _081268C0 @ =sub_81269E0
- str r0, [r7, 0x1C]
- ldrb r1, [r7, 0x5]
- movs r0, 0xC
- orrs r1, r0
- strb r1, [r7, 0x5]
- ldr r2, _081268C4 @ =gUnknown_0830FD14
- lsrs r0, r1, 4
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 4
- movs r2, 0xF
- ands r1, r2
- orrs r1, r0
- strb r1, [r7, 0x5]
- movs r1, 0x3F
- adds r1, r7
- mov r8, r1
- ldrb r0, [r1]
- movs r1, 0x40
- orrs r0, r1
- mov r1, r8
- strb r0, [r1]
- ldr r0, _081268C8 @ =gDummySpriteAnimTable
- str r0, [r7, 0x8]
- adds r0, r7, 0
- movs r1, 0
- bl StartSpriteAnim
- ldr r0, _081268CC @ =gDummySpriteAffineAnimTable
- str r0, [r7, 0x10]
- mov r1, r8
- ldrb r0, [r1]
- movs r1, 0x8
- orrs r0, r1
- mov r1, r8
- strb r0, [r1]
- adds r2, r7, 0
- adds r2, 0x42
- ldrb r1, [r2]
- movs r0, 0x3F
- ands r0, r1
- strb r0, [r2]
- ldrh r0, [r4, 0x2E]
- strh r0, [r7, 0x2E]
- ldrb r0, [r6, 0x8]
- strh r0, [r7, 0x30]
- strh r5, [r7, 0x3C]
- adds r0, r6, 0
- adds r1, r7, 0
- bl npc_pal_op
- cmp r5, 0
- bne _081268B2
- ldrb r0, [r7, 0x1]
- movs r1, 0x4
- negs r1, r1
- ands r1, r0
- movs r0, 0x1
- orrs r1, r0
- strb r1, [r7, 0x1]
-_081268B2:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081268BC: .4byte gSprites
-_081268C0: .4byte sub_81269E0
-_081268C4: .4byte gUnknown_0830FD14
-_081268C8: .4byte gDummySpriteAnimTable
-_081268CC: .4byte gDummySpriteAffineAnimTable
- thumb_func_end SetUpReflection
-
- thumb_func_start sub_81268D0
-sub_81268D0: @ 81268D0
- push {lr}
- ldrb r0, [r0, 0x5]
- bl GetFieldObjectGraphicsInfo
- ldrh r0, [r0, 0xA]
- subs r0, 0x2
- lsls r0, 16
- asrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_81268D0
-
- thumb_func_start npc_pal_op
-npc_pal_op: @ 81268E4
- push {r4,r5,lr}
- sub sp, 0x8
- adds r5, r0, 0
- adds r4, r1, 0
- ldr r1, _0812693C @ =gUnknown_08401E2C
- mov r0, sp
- movs r2, 0x6
- bl memcpy
- movs r0, 0
- strh r0, [r4, 0x32]
- ldrb r0, [r5, 0x5]
- bl GetFieldObjectGraphicsInfo
- ldrb r1, [r0, 0xC]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08126940
- ldrb r0, [r5, 0x1F]
- bl sub_8057450
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _08126926
- ldrb r0, [r5, 0x1E]
- bl sub_8057450
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _08126940
-_08126926:
- subs r0, 0x1
- lsls r0, 1
- add r0, sp
- ldrh r0, [r0]
- strh r0, [r4, 0x32]
- ldrb r1, [r4, 0x5]
- lsrs r1, 4
- adds r0, r5, 0
- bl npc_pal_op_A
- b _0812694A
- .align 2, 0
-_0812693C: .4byte gUnknown_08401E2C
-_08126940:
- ldrb r1, [r4, 0x5]
- lsrs r1, 4
- adds r0, r5, 0
- bl npc_pal_op_B
-_0812694A:
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end npc_pal_op
-
- thumb_func_start npc_pal_op_B
-npc_pal_op_B: @ 8126954
- push {r4,lr}
- lsls r1, 24
- lsrs r4, r1, 24
- ldrb r0, [r0, 0x5]
- bl GetFieldObjectGraphicsInfo
- adds r2, r0, 0
- ldrh r1, [r2, 0x4]
- ldr r0, _08126980 @ =0x000011ff
- cmp r1, r0
- beq _081269A8
- ldrb r0, [r2, 0xC]
- movs r1, 0xF
- ands r1, r0
- cmp r1, 0
- bne _08126984
- ldrh r0, [r2, 0x2]
- adds r1, r4, 0
- bl npc_load_two_palettes__no_record
- b _081269A2
- .align 2, 0
-_08126980: .4byte 0x000011ff
-_08126984:
- cmp r1, 0xA
- bne _08126992
- ldrh r0, [r2, 0x2]
- adds r1, r4, 0
- bl npc_load_two_palettes__and_record
- b _081269A2
-_08126992:
- adds r0, r4, 0
- bl npc_paltag_by_palslot
- lsls r0, 16
- lsrs r0, 16
- adds r1, r4, 0
- bl pal_patch_for_npc
-_081269A2:
- adds r0, r4, 0
- bl sub_807D78C
-_081269A8:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end npc_pal_op_B
-
- thumb_func_start npc_pal_op_A
-npc_pal_op_A: @ 81269B0
- push {r4,lr}
- lsls r1, 24
- lsrs r4, r1, 24
- ldrb r0, [r0, 0x5]
- bl GetFieldObjectGraphicsInfo
- adds r2, r0, 0
- ldrh r1, [r2, 0x4]
- ldr r0, _081269DC @ =0x000011ff
- cmp r1, r0
- beq _081269D4
- adds r0, r1, 0
- adds r1, r4, 0
- bl pal_patch_for_npc
- adds r0, r4, 0
- bl sub_807D78C
-_081269D4:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081269DC: .4byte 0x000011ff
- thumb_func_end npc_pal_op_A
-
- thumb_func_start sub_81269E0
-sub_81269E0: @ 81269E0
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r4, r0, 0
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _08126A28 @ =gMapObjects
- adds r7, r0, r1
- ldrb r1, [r7, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08126A2C @ =gSprites
- adds r5, r0, r1
- ldr r0, [r7]
- ldr r1, _08126A30 @ =0x00020001
- ands r0, r1
- cmp r0, r1
- bne _08126A18
- ldrb r1, [r7, 0x8]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- cmp r1, r0
- beq _08126A34
-_08126A18:
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x2
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- b _08126B3E
- .align 2, 0
-_08126A28: .4byte gMapObjects
-_08126A2C: .4byte gSprites
-_08126A30: .4byte 0x00020001
-_08126A34:
- ldr r1, _08126B4C @ =gUnknown_0830FD14
- ldrb r0, [r5, 0x5]
- lsrs r0, 4
- adds r0, r1
- ldrb r1, [r0]
- lsls r1, 4
- ldrb r2, [r4, 0x5]
- movs r0, 0xF
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x5]
- ldrb r1, [r5, 0x1]
- lsrs r1, 6
- lsls r1, 6
- ldrb r2, [r4, 0x1]
- movs r3, 0x3F
- adds r0, r3, 0
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x1]
- ldrb r0, [r5, 0x3]
- lsrs r0, 6
- lsls r0, 6
- ldrb r2, [r4, 0x3]
- adds r1, r3, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r4, 0x3]
- ldrb r0, [r5, 0x3]
- lsls r0, 26
- lsrs r0, 27
- movs r2, 0x10
- orrs r0, r2
- lsls r0, 1
- subs r2, 0x4F
- mov r9, r2
- ands r1, r2
- orrs r1, r0
- strb r1, [r4, 0x3]
- ldrh r1, [r5, 0x4]
- lsls r1, 22
- lsrs r1, 22
- ldrh r2, [r4, 0x4]
- ldr r0, _08126B50 @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r4, 0x4]
- ldr r0, [r5, 0x18]
- str r0, [r4, 0x18]
- adds r0, r5, 0
- adds r0, 0x42
- ldrb r0, [r0]
- lsls r0, 26
- lsrs r0, 26
- adds r2, r4, 0
- adds r2, 0x42
- ands r3, r0
- ldrb r1, [r2]
- movs r0, 0x40
- negs r0, r0
- ands r0, r1
- orrs r0, r3
- strb r0, [r2]
- movs r0, 0x3E
- adds r0, r5
- mov r8, r0
- ldrb r0, [r0]
- adds r6, r4, 0
- adds r6, 0x3E
- movs r1, 0x4
- ands r1, r0
- ldrb r2, [r6]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r6]
- ldrh r0, [r5, 0x20]
- strh r0, [r4, 0x20]
- adds r0, r7, 0
- bl sub_81268D0
- ldrh r1, [r5, 0x22]
- adds r0, r1
- ldrh r1, [r4, 0x32]
- adds r1, r0
- strh r1, [r4, 0x22]
- adds r0, r5, 0
- adds r0, 0x28
- ldrb r1, [r0]
- adds r0, r4, 0
- adds r0, 0x28
- strb r1, [r0]
- adds r0, r5, 0
- adds r0, 0x29
- ldrb r0, [r0]
- adds r1, r4, 0
- adds r1, 0x29
- strb r0, [r1]
- ldrh r0, [r5, 0x24]
- strh r0, [r4, 0x24]
- ldrh r0, [r5, 0x26]
- negs r0, r0
- strh r0, [r4, 0x26]
- mov r2, r8
- ldrb r0, [r2]
- movs r1, 0x2
- ands r1, r0
- ldrb r2, [r6]
- movs r0, 0x3
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r6]
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _08126B3E
- ldrb r0, [r4, 0x3]
- mov r2, r9
- ands r2, r0
- strb r2, [r4, 0x3]
- ldrb r0, [r5, 0x3]
- lsls r0, 26
- lsrs r0, 27
- movs r1, 0x8
- ands r0, r1
- cmp r0, 0
- beq _08126B3E
- movs r1, 0x2
- adds r0, r2, 0
- orrs r0, r1
- strb r0, [r4, 0x3]
-_08126B3E:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08126B4C: .4byte gUnknown_0830FD14
-_08126B50: .4byte 0xfffffc00
- thumb_func_end sub_81269E0
-
- thumb_func_start sub_8126B54
-sub_8126B54: @ 8126B54
- push {r4,lr}
- ldr r0, _08126B9C @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x20]
- movs r1, 0
- movs r2, 0
- movs r3, 0x52
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- adds r4, r0, 0
- cmp r0, 0x40
- beq _08126B92
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _08126BA0 @ =gSprites
- adds r1, r0
- ldrb r2, [r1, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- movs r3, 0x4
- orrs r0, r3
- strb r0, [r1, 0x5]
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x2
- orrs r0, r2
- orrs r0, r3
- strb r0, [r1]
-_08126B92:
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08126B9C: .4byte gFieldEffectObjectTemplatePointers
-_08126BA0: .4byte gSprites
- thumb_func_end sub_8126B54
-
- thumb_func_start objid_set_invisible
-objid_set_invisible: @ 8126BA4
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08126BC0 @ =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
- strb r0, [r1]
- bx lr
- .align 2, 0
-_08126BC0: .4byte gSprites
- thumb_func_end objid_set_invisible
-
- thumb_func_start sub_8126BC4
-sub_8126BC4: @ 8126BC4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- lsls r2, 16
- lsrs r7, r2, 16
- lsls r3, 16
- lsrs r6, r3, 16
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- ldr r1, _08126C68 @ =gSprites
- adds r2, r0, r1
- adds r0, r2, 0
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- bne _08126C0E
- movs r0, 0x2E
- ldrsh r1, [r2, r0]
- lsls r0, r7, 16
- asrs r0, 16
- cmp r1, r0
- bne _08126C0E
- movs r0, 0x30
- ldrsh r1, [r2, r0]
- lsls r0, r6, 16
- asrs r0, 16
- cmp r1, r0
- beq _08126C5A
-_08126C0E:
- lsls r0, r7, 16
- asrs r0, 16
- lsls r1, r6, 16
- asrs r1, 16
- mov r4, sp
- adds r4, 0x2
- mov r2, sp
- adds r3, r4, 0
- bl sub_80603CC
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- ldr r1, _08126C68 @ =gSprites
- adds r2, r0, r1
- mov r0, sp
- ldrh r0, [r0]
- adds r0, 0x8
- strh r0, [r2, 0x20]
- ldrh r0, [r4]
- adds r0, 0x8
- strh r0, [r2, 0x22]
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r3]
- strh r7, [r2, 0x2E]
- strh r6, [r2, 0x30]
- mov r1, r8
- subs r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- adds r0, r2, 0
- bl StartSpriteAnim
-_08126C5A:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08126C68: .4byte gSprites
- thumb_func_end sub_8126BC4
-
- thumb_func_start FldEff_Shadow
-FldEff_Shadow: @ 8126C6C
- push {r4,r5,lr}
- ldr r5, _08126CF8 @ =gUnknown_0202FF84
- ldrb r0, [r5]
- ldrb r1, [r5, 0x4]
- ldrb r2, [r5, 0x8]
- bl GetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08126CFC @ =gMapObjects
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r0, [r1, 0x5]
- bl GetFieldObjectGraphicsInfo
- adds r4, r0, 0
- ldr r2, _08126D00 @ =gFieldEffectObjectTemplatePointers
- ldr r1, _08126D04 @ =gUnknown_08401E32
- ldrb r0, [r4, 0xC]
- lsls r0, 26
- lsrs r0, 30
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- movs r1, 0
- movs r2, 0
- movs r3, 0x94
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _08126CF0
- ldr r0, _08126D08 @ =gSprites
- lsls r2, r1, 4
- adds r2, r1
- lsls r2, 2
- adds r2, r0
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r3]
- ldr r0, [r5]
- strh r0, [r2, 0x2E]
- ldr r0, [r5, 0x4]
- strh r0, [r2, 0x30]
- ldr r0, [r5, 0x8]
- strh r0, [r2, 0x32]
- ldrh r1, [r4, 0xA]
- lsls r1, 16
- asrs r1, 17
- ldr r3, _08126D0C @ =gUnknown_08401E36
- ldrb r0, [r4, 0xC]
- lsls r0, 26
- lsrs r0, 30
- lsls r0, 1
- adds r0, r3
- ldrh r0, [r0]
- subs r1, r0
- strh r1, [r2, 0x34]
-_08126CF0:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08126CF8: .4byte gUnknown_0202FF84
-_08126CFC: .4byte gMapObjects
-_08126D00: .4byte gFieldEffectObjectTemplatePointers
-_08126D04: .4byte gUnknown_08401E32
-_08126D08: .4byte gSprites
-_08126D0C: .4byte gUnknown_08401E36
- thumb_func_end FldEff_Shadow
-
- thumb_func_start oamc_shadow
-oamc_shadow: @ 8126D10
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- ldrh r0, [r5, 0x2E]
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r5, 0x30]
- lsls r1, 24
- lsrs r1, 24
- ldrh r2, [r5, 0x32]
- lsls r2, 24
- lsrs r2, 24
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- beq _08126D3E
- adds r0, r5, 0
- movs r1, 0x3
- bl FieldEffectStop
- b _08126DC4
-_08126D3E:
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _08126DCC @ =gMapObjects
- adds r4, r0, r1
- ldrb r0, [r4, 0x4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _08126DD0 @ =gSprites
- adds r1, r0
- ldrb r0, [r1, 0x5]
- movs r2, 0xC
- ands r2, r0
- ldrb r3, [r5, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r2
- strb r0, [r5, 0x5]
- ldrh r0, [r1, 0x20]
- strh r0, [r5, 0x20]
- ldrh r0, [r5, 0x34]
- ldrh r1, [r1, 0x22]
- adds r0, r1
- strh r0, [r5, 0x22]
- ldr r0, [r4]
- ldr r1, _08126DD4 @ =0x00400001
- ands r0, r1
- cmp r0, r1
- bne _08126DBC
- ldrb r0, [r4, 0x1E]
- bl MetatileBehavior_IsPokeGrass
- lsls r0, 24
- cmp r0, 0
- bne _08126DBC
- ldrb r0, [r4, 0x1E]
- bl MetatileBehavior_IsSurfableWaterOrUnderwater
- lsls r0, 24
- cmp r0, 0
- bne _08126DBC
- ldrb r0, [r4, 0x1F]
- bl MetatileBehavior_IsSurfableWaterOrUnderwater
- lsls r0, 24
- cmp r0, 0
- bne _08126DBC
- ldrb r0, [r4, 0x1E]
- bl MetatileBehavior_IsReflective
- lsls r0, 24
- cmp r0, 0
- bne _08126DBC
- ldrb r0, [r4, 0x1F]
- bl MetatileBehavior_IsReflective
- lsls r0, 24
- cmp r0, 0
- beq _08126DC4
-_08126DBC:
- adds r0, r5, 0
- movs r1, 0x3
- bl FieldEffectStop
-_08126DC4:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08126DCC: .4byte gMapObjects
-_08126DD0: .4byte gSprites
-_08126DD4: .4byte 0x00400001
- thumb_func_end oamc_shadow
-
- thumb_func_start FldEff_TallGrass
-FldEff_TallGrass: @ 8126DD8
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r5, _08126E70 @ =gUnknown_0202FF84
- ldrh r1, [r5]
- mov r0, sp
- strh r1, [r0]
- ldrh r0, [r5, 0x4]
- mov r4, sp
- adds r4, 0x2
- strh r0, [r4]
- mov r0, sp
- adds r1, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _08126E74 @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x10]
- mov r1, sp
- movs r2, 0
- ldrsh r1, [r1, r2]
- movs r3, 0
- ldrsh r2, [r4, r3]
- movs r3, 0
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _08126E64
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08126E78 @ =gSprites
- adds r3, r0, r1
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0x3
- ldrb r1, [r5, 0xC]
- 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]
- ldr r0, [r5, 0x8]
- strh r0, [r3, 0x2E]
- ldr r0, [r5]
- strh r0, [r3, 0x30]
- ldr r0, [r5, 0x4]
- strh r0, [r3, 0x32]
- ldr r0, [r5, 0x10]
- strh r0, [r3, 0x34]
- ldr r0, [r5, 0x14]
- strh r0, [r3, 0x36]
- ldr r0, [r5, 0x18]
- strh r0, [r3, 0x38]
- ldr r0, [r5, 0x1C]
- cmp r0, 0
- beq _08126E64
- adds r0, r3, 0
- movs r1, 0x4
- bl SeekSpriteAnim
-_08126E64:
- movs r0, 0
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08126E70: .4byte gUnknown_0202FF84
-_08126E74: .4byte gFieldEffectObjectTemplatePointers
-_08126E78: .4byte gSprites
- thumb_func_end FldEff_TallGrass
-
- thumb_func_start unc_grass_normal
-unc_grass_normal: @ 8126E7C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r5, r0, 0
- ldrh r0, [r5, 0x38]
- lsrs r4, r0, 8
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r3, _08126F24 @ =gUnknown_0202E844
- ldrb r1, [r3]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08126EC6
- ldr r2, _08126F28 @ =gSaveBlock1
- movs r0, 0x5
- ldrsb r0, [r2, r0]
- cmp r0, r4
- bne _08126EAC
- movs r0, 0x4
- ldrsb r0, [r2, r0]
- cmp r0, r7
- beq _08126EC6
-_08126EAC:
- ldr r1, [r3, 0x4]
- ldrh r0, [r5, 0x30]
- subs r0, r1
- strh r0, [r5, 0x30]
- ldr r1, [r3, 0x8]
- ldrh r0, [r5, 0x32]
- subs r0, r1
- strh r0, [r5, 0x32]
- ldrb r1, [r2, 0x5]
- lsls r1, 8
- ldrb r0, [r2, 0x4]
- orrs r0, r1
- strh r0, [r5, 0x38]
-_08126EC6:
- ldrh r0, [r5, 0x34]
- lsrs r1, r0, 8
- mov r8, r1
- lsls r0, 24
- lsrs r4, r0, 24
- ldrh r0, [r5, 0x36]
- lsls r0, 24
- lsrs r7, r0, 24
- movs r2, 0x30
- ldrsh r0, [r5, r2]
- movs r2, 0x32
- ldrsh r1, [r5, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r6, r0, 24
- mov r0, r8
- adds r1, r4, 0
- adds r2, r7, 0
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- bne _08126F1A
- adds r0, r6, 0
- bl MetatileBehavior_IsTallGrass
- lsls r0, 24
- cmp r0, 0
- beq _08126F1A
- movs r1, 0x3C
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _08126F2C
- adds r0, r5, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08126F2C
-_08126F1A:
- adds r0, r5, 0
- movs r1, 0x4
- bl FieldEffectStop
- b _08126F70
- .align 2, 0
-_08126F24: .4byte gUnknown_0202E844
-_08126F28: .4byte gSaveBlock1
-_08126F2C:
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _08126F7C @ =gMapObjects
- adds r2, r0, r1
- ldr r0, [r2, 0x10]
- ldr r1, [r5, 0x30]
- cmp r0, r1
- beq _08126F4C
- ldr r0, [r2, 0x14]
- cmp r0, r1
- beq _08126F4C
- movs r0, 0x1
- strh r0, [r5, 0x3C]
-_08126F4C:
- movs r6, 0
- adds r0, r5, 0
- adds r0, 0x2B
- ldrb r0, [r0]
- cmp r0, 0
- bne _08126F5A
- movs r6, 0x4
-_08126F5A:
- adds r0, r5, 0
- movs r1, 0
- bl sub_806487C
- ldrh r1, [r5, 0x2E]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- adds r2, r6, 0
- bl sub_812882C
-_08126F70:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08126F7C: .4byte gMapObjects
- thumb_func_end unc_grass_normal
-
- thumb_func_start FldEff_JumpTallGrass
-FldEff_JumpTallGrass: @ 8126F80
- push {r4,lr}
- ldr r4, _08126FE4 @ =gUnknown_0202FF84
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0xC
- bl sub_8060470
- ldr r0, _08126FE8 @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x28]
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- movs r3, 0
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _08126FDC
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _08126FEC @ =gSprites
- adds r2, r0
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r3]
- movs r0, 0x3
- ldrb r1, [r4, 0xC]
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
- ldr r0, [r4, 0x8]
- strh r0, [r2, 0x2E]
- movs r0, 0xC
- strh r0, [r2, 0x30]
-_08126FDC:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08126FE4: .4byte gUnknown_0202FF84
-_08126FE8: .4byte gFieldEffectObjectTemplatePointers
-_08126FEC: .4byte gSprites
- thumb_func_end FldEff_JumpTallGrass
-
- thumb_func_start sub_8126FF0
-sub_8126FF0: @ 8126FF0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r4, [sp, 0x18]
- lsls r0, 24
- lsrs r0, 24
- mov r12, r0
- lsls r1, 24
- lsrs r7, r1, 24
- lsls r2, 24
- lsrs r6, r2, 24
- movs r5, 0
- ldr r0, _08127060 @ =gSprites
- mov r8, r0
- lsls r3, 16
- asrs r3, 16
- lsls r4, 16
- asrs r4, 16
-_08127014:
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- mov r1, r8
- adds r2, r0, r1
- adds r0, r2, 0
- adds r0, 0x3E
- ldrb r0, [r0]
- lsls r0, 31
- cmp r0, 0
- beq _08127068
- ldr r1, [r2, 0x1C]
- ldr r0, _08127064 @ =unc_grass_normal
- cmp r1, r0
- bne _08127068
- movs r1, 0x30
- ldrsh r0, [r2, r1]
- cmp r3, r0
- bne _08127068
- movs r1, 0x32
- ldrsh r0, [r2, r1]
- cmp r4, r0
- bne _08127068
- ldrh r1, [r2, 0x34]
- lsrs r0, r1, 8
- cmp r12, r0
- bne _08127068
- movs r0, 0xFF
- ands r0, r1
- cmp r7, r0
- bne _08127068
- movs r1, 0x36
- ldrsh r0, [r2, r1]
- cmp r6, r0
- bne _08127068
- adds r0, r5, 0
- b _08127074
- .align 2, 0
-_08127060: .4byte gSprites
-_08127064: .4byte unc_grass_normal
-_08127068:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x3F
- bls _08127014
- movs r0, 0x40
-_08127074:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8126FF0
-
- thumb_func_start FldEff_LongGrass
-FldEff_LongGrass: @ 8127080
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r5, _0812711C @ =gUnknown_0202FF84
- ldrh r1, [r5]
- mov r0, sp
- strh r1, [r0]
- ldrh r0, [r5, 0x4]
- mov r4, sp
- adds r4, 0x2
- strh r0, [r4]
- mov r0, sp
- adds r1, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _08127120 @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x3C]
- mov r1, sp
- movs r2, 0
- ldrsh r1, [r1, r2]
- movs r3, 0
- ldrsh r2, [r4, r3]
- movs r3, 0
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _08127110
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08127124 @ =gSprites
- adds r4, r0, r1
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2]
- ldrb r0, [r5, 0x8]
- bl ZCoordToPriority
- 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 r0, [r5, 0x8]
- strh r0, [r4, 0x2E]
- ldr r0, [r5]
- strh r0, [r4, 0x30]
- ldr r0, [r5, 0x4]
- strh r0, [r4, 0x32]
- ldr r0, [r5, 0x10]
- strh r0, [r4, 0x34]
- ldr r0, [r5, 0x14]
- strh r0, [r4, 0x36]
- ldr r0, [r5, 0x18]
- strh r0, [r4, 0x38]
- ldr r0, [r5, 0x1C]
- cmp r0, 0
- beq _08127110
- adds r0, r4, 0
- movs r1, 0x6
- bl SeekSpriteAnim
-_08127110:
- movs r0, 0
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0812711C: .4byte gUnknown_0202FF84
-_08127120: .4byte gFieldEffectObjectTemplatePointers
-_08127124: .4byte gSprites
- thumb_func_end FldEff_LongGrass
-
- thumb_func_start unc_grass_tall
-unc_grass_tall: @ 8127128
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r5, r0, 0
- ldrh r0, [r5, 0x38]
- lsrs r7, r0, 8
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r3, _081271D0 @ =gUnknown_0202E844
- ldrb r1, [r3]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08127172
- ldr r2, _081271D4 @ =gSaveBlock1
- movs r0, 0x5
- ldrsb r0, [r2, r0]
- cmp r0, r7
- bne _08127158
- movs r0, 0x4
- ldrsb r0, [r2, r0]
- cmp r0, r6
- beq _08127172
-_08127158:
- ldr r1, [r3, 0x4]
- ldrh r0, [r5, 0x30]
- subs r0, r1
- strh r0, [r5, 0x30]
- ldr r1, [r3, 0x8]
- ldrh r0, [r5, 0x32]
- subs r0, r1
- strh r0, [r5, 0x32]
- ldrb r1, [r2, 0x5]
- lsls r1, 8
- ldrb r0, [r2, 0x4]
- orrs r0, r1
- strh r0, [r5, 0x38]
-_08127172:
- ldrh r0, [r5, 0x34]
- lsrs r1, r0, 8
- mov r8, r1
- lsls r0, 24
- lsrs r7, r0, 24
- ldrh r0, [r5, 0x36]
- lsls r0, 24
- lsrs r6, r0, 24
- movs r2, 0x30
- ldrsh r0, [r5, r2]
- movs r2, 0x32
- ldrsh r1, [r5, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r4, r0, 24
- mov r0, r8
- adds r1, r7, 0
- adds r2, r6, 0
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- bne _081271C6
- adds r0, r4, 0
- bl MetatileBehavior_IsLongGrass
- lsls r0, 24
- cmp r0, 0
- beq _081271C6
- movs r1, 0x3C
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _081271D8
- adds r0, r5, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _081271D8
-_081271C6:
- adds r0, r5, 0
- movs r1, 0x11
- bl FieldEffectStop
- b _0812720E
- .align 2, 0
-_081271D0: .4byte gUnknown_0202E844
-_081271D4: .4byte gSaveBlock1
-_081271D8:
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _0812721C @ =gMapObjects
- adds r2, r0, r1
- ldr r0, [r2, 0x10]
- ldr r1, [r5, 0x30]
- cmp r0, r1
- beq _081271F8
- ldr r0, [r2, 0x14]
- cmp r0, r1
- beq _081271F8
- movs r0, 0x1
- strh r0, [r5, 0x3C]
-_081271F8:
- adds r0, r5, 0
- movs r1, 0
- bl sub_806487C
- ldrh r1, [r5, 0x2E]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- movs r2, 0
- bl sub_812882C
-_0812720E:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812721C: .4byte gMapObjects
- thumb_func_end unc_grass_tall
-
- thumb_func_start FldEff_JumpLongGrass
-FldEff_JumpLongGrass: @ 8127220
- push {r4,lr}
- ldr r4, _08127284 @ =gUnknown_0202FF84
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _08127288 @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x40]
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- movs r3, 0
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _0812727C
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _0812728C @ =gSprites
- adds r2, r0
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r3]
- movs r0, 0x3
- ldrb r1, [r4, 0xC]
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
- ldr r0, [r4, 0x8]
- strh r0, [r2, 0x2E]
- movs r0, 0x12
- strh r0, [r2, 0x30]
-_0812727C:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08127284: .4byte gUnknown_0202FF84
-_08127288: .4byte gFieldEffectObjectTemplatePointers
-_0812728C: .4byte gSprites
- thumb_func_end FldEff_JumpLongGrass
-
- thumb_func_start FldEff_ShortGrass
-FldEff_ShortGrass: @ 8127290
- push {r4-r6,lr}
- ldr r6, _08127324 @ =gUnknown_0202FF84
- ldrb r0, [r6]
- ldrb r1, [r6, 0x4]
- ldrb r2, [r6, 0x8]
- bl GetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- ldr r0, _08127328 @ =gMapObjects
- adds r5, r1, r0
- ldr r0, _0812732C @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x78]
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _0812731C
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r4, _08127330 @ =gSprites
- adds r2, r4
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r3]
- ldrb r1, [r5, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r0, [r0, 0x5]
- movs r1, 0xC
- ands r1, r0
- ldrb r3, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
- ldr r0, [r6]
- strh r0, [r2, 0x2E]
- ldr r0, [r6, 0x4]
- strh r0, [r2, 0x30]
- ldr r0, [r6, 0x8]
- strh r0, [r2, 0x32]
- ldrb r1, [r5, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r0, [r0, 0x20]
- strh r0, [r2, 0x34]
- ldrb r1, [r5, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r0, [r0, 0x22]
- strh r0, [r2, 0x36]
-_0812731C:
- movs r0, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08127324: .4byte gUnknown_0202FF84
-_08127328: .4byte gMapObjects
-_0812732C: .4byte gFieldEffectObjectTemplatePointers
-_08127330: .4byte gSprites
- thumb_func_end FldEff_ShortGrass
-
- thumb_func_start sub_8127334
-sub_8127334: @ 8127334
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x30]
- lsls r1, 24
- lsrs r1, 24
- ldrh r2, [r4, 0x32]
- lsls r2, 24
- lsrs r2, 24
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- bne _08127372
- ldr r5, _0812737C @ =gMapObjects
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r5
- ldrb r0, [r1, 0x2]
- lsls r0, 29
- cmp r0, 0
- blt _08127380
-_08127372:
- adds r0, r4, 0
- movs r1, 0x29
- bl FieldEffectStop
- b _08127416
- .align 2, 0
-_0812737C: .4byte gMapObjects
-_08127380:
- ldrb r0, [r1, 0x5]
- bl GetFieldObjectGraphicsInfo
- mov r8, r0
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r0, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08127424 @ =gSprites
- adds r6, r0, r1
- ldrh r5, [r6, 0x22]
- ldrh r7, [r6, 0x20]
- movs r0, 0x20
- ldrsh r1, [r6, r0]
- movs r2, 0x34
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _081273BC
- lsls r0, r5, 16
- asrs r0, 16
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- cmp r0, r1
- beq _081273D6
-_081273BC:
- strh r7, [r4, 0x34]
- strh r5, [r4, 0x36]
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _081273D6
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAnim
-_081273D6:
- strh r7, [r4, 0x20]
- strh r5, [r4, 0x22]
- mov r1, r8
- ldrh r0, [r1, 0xA]
- lsls r0, 16
- asrs r0, 17
- subs r0, 0x8
- strh r0, [r4, 0x26]
- adds r0, r6, 0
- adds r0, 0x43
- ldrb r0, [r0]
- subs r0, 0x1
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- ldrb r0, [r6, 0x5]
- movs r1, 0xC
- ands r1, r0
- ldrb r2, [r4, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x5]
- adds r0, r6, 0
- adds r0, 0x3E
- ldrb r1, [r0]
- lsls r1, 29
- lsrs r1, 31
- adds r0, r4, 0
- bl sub_806487C
-_08127416:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08127424: .4byte gSprites
- thumb_func_end sub_8127334
-
- thumb_func_start FldEff_SandFootprints
-FldEff_SandFootprints: @ 8127428
- push {r4,lr}
- ldr r4, _08127490 @ =gUnknown_0202FF84
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _08127494 @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x2C]
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- ldrb r3, [r4, 0x8]
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _08127486
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08127498 @ =gSprites
- adds r0, r1
- adds r3, r0, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r3]
- movs r1, 0x3
- ldrb r2, [r4, 0xC]
- ands r2, r1
- lsls r2, 2
- ldrb r3, [r0, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r3
- orrs r1, r2
- strb r1, [r0, 0x5]
- movs r1, 0xD
- strh r1, [r0, 0x3C]
- ldrb r1, [r4, 0x10]
- bl StartSpriteAnim
-_08127486:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08127490: .4byte gUnknown_0202FF84
-_08127494: .4byte gFieldEffectObjectTemplatePointers
-_08127498: .4byte gSprites
- thumb_func_end FldEff_SandFootprints
-
- thumb_func_start FldEff_DeepSandFootprints
-FldEff_DeepSandFootprints: @ 812749C
- push {r4,r5,lr}
- ldr r4, _08127504 @ =gUnknown_0202FF84
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _08127508 @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x5C]
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- ldrb r3, [r4, 0x8]
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r1, r0, 24
- adds r5, r1, 0
- cmp r1, 0x40
- beq _081274FC
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0812750C @ =gSprites
- adds r0, r1
- adds r3, r0, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r3]
- movs r1, 0x3
- ldrb r2, [r4, 0xC]
- ands r2, r1
- lsls r2, 2
- ldrb r3, [r0, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r3
- orrs r1, r2
- strb r1, [r0, 0x5]
- movs r1, 0x18
- strh r1, [r0, 0x3C]
- ldrb r1, [r4, 0x10]
- bl StartSpriteAnim
-_081274FC:
- adds r0, r5, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08127504: .4byte gUnknown_0202FF84
-_08127508: .4byte gFieldEffectObjectTemplatePointers
-_0812750C: .4byte gSprites
- thumb_func_end FldEff_DeepSandFootprints
-
- thumb_func_start FldEff_BikeTireTracks
-FldEff_BikeTireTracks: @ 8127510
- push {r4,r5,lr}
- ldr r4, _08127578 @ =gUnknown_0202FF84
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _0812757C @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x6C]
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- ldrb r3, [r4, 0x8]
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r1, r0, 24
- adds r5, r1, 0
- cmp r1, 0x40
- beq _08127570
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08127580 @ =gSprites
- adds r0, r1
- adds r3, r0, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r3]
- movs r1, 0x3
- ldrb r2, [r4, 0xC]
- ands r2, r1
- lsls r2, 2
- ldrb r3, [r0, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r3
- orrs r1, r2
- strb r1, [r0, 0x5]
- movs r1, 0x23
- strh r1, [r0, 0x3C]
- ldrb r1, [r4, 0x10]
- bl StartSpriteAnim
-_08127570:
- adds r0, r5, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08127578: .4byte gUnknown_0202FF84
-_0812757C: .4byte gFieldEffectObjectTemplatePointers
-_08127580: .4byte gSprites
- thumb_func_end FldEff_BikeTireTracks
-
- thumb_func_start sub_8127584
-sub_8127584: @ 8127584
- push {lr}
- ldr r2, _0812759C @ =gUnknown_08401E40
- movs r3, 0x2E
- ldrsh r1, [r0, r3]
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- bl _call_via_r1
- pop {r0}
- bx r0
- .align 2, 0
-_0812759C: .4byte gUnknown_08401E40
- thumb_func_end sub_8127584
-
- thumb_func_start sub_81275A0
-sub_81275A0: @ 81275A0
- 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, 0x28
- ble _081275B6
- movs r0, 0x1
- strh r0, [r1, 0x2E]
-_081275B6:
- adds r0, r1, 0
- movs r1, 0
- bl sub_806487C
- pop {r0}
- bx r0
- thumb_func_end sub_81275A0
-
- thumb_func_start sub_81275C4
-sub_81275C4: @ 81275C4
- push {r4,lr}
- adds r4, r0, 0
- 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]
- ldrb r1, [r3]
- lsls r1, 29
- lsrs r1, 31
- adds r0, r4, 0
- bl sub_806487C
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- cmp r0, 0x38
- ble _08127608
- ldrh r1, [r4, 0x3C]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl FieldEffectStop
-_08127608:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81275C4
-
- thumb_func_start FldEff_Splash
-FldEff_Splash: @ 8127610
- push {r4-r6,lr}
- ldr r6, _081276A4 @ =gUnknown_0202FF84
- ldrb r0, [r6]
- ldrb r1, [r6, 0x4]
- ldrb r2, [r6, 0x8]
- bl GetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- ldr r0, _081276A8 @ =gMapObjects
- adds r5, r1, r0
- ldr r0, _081276AC @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x34]
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x40
- beq _0812769A
- ldrb r0, [r5, 0x5]
- bl GetFieldObjectGraphicsInfo
- lsls r3, r4, 4
- adds r3, r4
- lsls r3, 2
- ldr r4, _081276B0 @ =gSprites
- adds r3, r4
- movs r1, 0x3E
- adds r1, r3
- mov r12, r1
- ldrb r1, [r1]
- movs r2, 0x2
- orrs r1, r2
- mov r2, r12
- strb r1, [r2]
- ldrb r2, [r5, 0x4]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- ldrb r1, [r1, 0x5]
- movs r2, 0xC
- ands r2, r1
- ldrb r4, [r3, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r4
- orrs r1, r2
- strb r1, [r3, 0x5]
- ldr r1, [r6]
- strh r1, [r3, 0x2E]
- ldr r1, [r6, 0x4]
- strh r1, [r3, 0x30]
- ldr r1, [r6, 0x8]
- strh r1, [r3, 0x32]
- ldrh r0, [r0, 0xA]
- lsls r0, 16
- asrs r0, 17
- subs r0, 0x4
- strh r0, [r3, 0x26]
- movs r0, 0x46
- bl PlaySE
-_0812769A:
- movs r0, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_081276A4: .4byte gUnknown_0202FF84
-_081276A8: .4byte gMapObjects
-_081276AC: .4byte gFieldEffectObjectTemplatePointers
-_081276B0: .4byte gSprites
- thumb_func_end FldEff_Splash
-
- thumb_func_start sub_81276B4
-sub_81276B4: @ 81276B4
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _081276E4
- ldrh r0, [r4, 0x2E]
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x30]
- lsls r1, 24
- lsrs r1, 24
- ldrh r2, [r4, 0x32]
- lsls r2, 24
- lsrs r2, 24
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- beq _081276EE
-_081276E4:
- adds r0, r4, 0
- movs r1, 0xF
- bl FieldEffectStop
- b _0812772E
-_081276EE:
- ldr r3, _08127738 @ =gSprites
- ldr r2, _0812773C @ =gMapObjects
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r0, [r0, 0x20]
- strh r0, [r4, 0x20]
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r0, [r0, 0x22]
- strh r0, [r4, 0x22]
- adds r0, r4, 0
- movs r1, 0
- bl sub_806487C
-_0812772E:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08127738: .4byte gSprites
-_0812773C: .4byte gMapObjects
- thumb_func_end sub_81276B4
-
- thumb_func_start FldEff_JumpSmallSplash
-FldEff_JumpSmallSplash: @ 8127740
- push {r4,lr}
- ldr r4, _081277A4 @ =gUnknown_0202FF84
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0xC
- bl sub_8060470
- ldr r0, _081277A8 @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x38]
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- movs r3, 0
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _0812779C
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _081277AC @ =gSprites
- adds r2, r0
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r3]
- movs r0, 0x3
- ldrb r1, [r4, 0xC]
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
- ldr r0, [r4, 0x8]
- strh r0, [r2, 0x2E]
- movs r0, 0x10
- strh r0, [r2, 0x30]
-_0812779C:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_081277A4: .4byte gUnknown_0202FF84
-_081277A8: .4byte gFieldEffectObjectTemplatePointers
-_081277AC: .4byte gSprites
- thumb_func_end FldEff_JumpSmallSplash
-
- thumb_func_start FldEff_JumpBigSplash
-FldEff_JumpBigSplash: @ 81277B0
- push {r4,lr}
- ldr r4, _08127814 @ =gUnknown_0202FF84
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _08127818 @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x30]
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- movs r3, 0
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _0812780C
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _0812781C @ =gSprites
- adds r2, r0
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r3]
- movs r0, 0x3
- ldrb r1, [r4, 0xC]
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
- ldr r0, [r4, 0x8]
- strh r0, [r2, 0x2E]
- movs r0, 0xE
- strh r0, [r2, 0x30]
-_0812780C:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08127814: .4byte gUnknown_0202FF84
-_08127818: .4byte gFieldEffectObjectTemplatePointers
-_0812781C: .4byte gSprites
- thumb_func_end FldEff_JumpBigSplash
-
- thumb_func_start FldEff_FeetInFlowingWater
-FldEff_FeetInFlowingWater: @ 8127820
- push {r4-r7,lr}
- ldr r7, _081278C0 @ =gUnknown_0202FF84
- ldrb r0, [r7]
- ldrb r1, [r7, 0x4]
- ldrb r2, [r7, 0x8]
- bl GetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- ldr r0, _081278C4 @ =gMapObjects
- adds r6, r1, r0
- ldr r0, _081278C8 @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x34]
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x40
- beq _081278B6
- ldrb r0, [r6, 0x5]
- bl GetFieldObjectGraphicsInfo
- adds r4, r0, 0
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- ldr r3, _081278CC @ =gSprites
- adds r0, r3
- ldr r1, _081278D0 @ =sub_81278D8
- str r1, [r0, 0x1C]
- adds r5, r0, 0
- adds r5, 0x3E
- ldrb r1, [r5]
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r5]
- ldrb r2, [r6, 0x4]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r3
- ldrb r1, [r1, 0x5]
- movs r2, 0xC
- ands r2, r1
- ldrb r3, [r0, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r3
- orrs r1, r2
- strb r1, [r0, 0x5]
- ldr r1, [r7]
- strh r1, [r0, 0x2E]
- ldr r1, [r7, 0x4]
- strh r1, [r0, 0x30]
- ldr r1, [r7, 0x8]
- strh r1, [r0, 0x32]
- ldr r1, _081278D4 @ =0x0000ffff
- strh r1, [r0, 0x34]
- movs r1, 0x1
- negs r1, r1
- strh r1, [r0, 0x36]
- ldrh r1, [r4, 0xA]
- lsls r1, 16
- asrs r1, 17
- subs r1, 0x4
- strh r1, [r0, 0x26]
- movs r1, 0x1
- bl StartSpriteAnim
-_081278B6:
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_081278C0: .4byte gUnknown_0202FF84
-_081278C4: .4byte gMapObjects
-_081278C8: .4byte gFieldEffectObjectTemplatePointers
-_081278CC: .4byte gSprites
-_081278D0: .4byte sub_81278D8
-_081278D4: .4byte 0x0000ffff
- thumb_func_end FldEff_FeetInFlowingWater
-
- thumb_func_start sub_81278D8
-sub_81278D8: @ 81278D8
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x30]
- lsls r1, 24
- lsrs r1, 24
- ldrh r2, [r4, 0x32]
- lsls r2, 24
- lsrs r2, 24
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- bne _08127912
- ldr r2, _0812791C @ =gMapObjects
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r5, r0, r2
- ldrb r0, [r5, 0x2]
- lsls r0, 28
- cmp r0, 0
- blt _08127920
-_08127912:
- adds r0, r4, 0
- movs r1, 0x22
- bl FieldEffectStop
- b _0812796A
- .align 2, 0
-_0812791C: .4byte gMapObjects
-_08127920:
- ldrb r1, [r5, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08127974 @ =gSprites
- adds r0, r1
- ldrh r1, [r0, 0x20]
- strh r1, [r4, 0x20]
- ldrh r1, [r0, 0x22]
- strh r1, [r4, 0x22]
- adds r0, 0x43
- ldrb r0, [r0]
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- adds r0, r4, 0
- movs r1, 0
- bl sub_806487C
- ldr r1, [r5, 0x10]
- ldr r0, [r4, 0x34]
- cmp r1, r0
- beq _0812796A
- ldrh r0, [r5, 0x10]
- strh r0, [r4, 0x34]
- ldrh r0, [r5, 0x12]
- strh r0, [r4, 0x36]
- adds r0, r4, 0
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- bne _0812796A
- movs r0, 0x46
- bl PlaySE
-_0812796A:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08127974: .4byte gSprites
- thumb_func_end sub_81278D8
-
- thumb_func_start FldEff_Ripple
-FldEff_Ripple: @ 8127978
- push {r4,lr}
- ldr r0, _081279CC @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x14]
- ldr r4, _081279D0 @ =gUnknown_0202FF84
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- ldrb r3, [r4, 0x8]
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _081279C4
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _081279D4 @ =gSprites
- adds r2, r0
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r3]
- movs r0, 0x3
- ldrb r1, [r4, 0xC]
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
- movs r0, 0x5
- strh r0, [r2, 0x2E]
-_081279C4:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_081279CC: .4byte gFieldEffectObjectTemplatePointers
-_081279D0: .4byte gUnknown_0202FF84
-_081279D4: .4byte gSprites
- thumb_func_end FldEff_Ripple
-
- thumb_func_start FldEff_HotSpringsWater
-FldEff_HotSpringsWater: @ 81279D8
- push {r4-r6,lr}
- ldr r6, _08127A6C @ =gUnknown_0202FF84
- ldrb r0, [r6]
- ldrb r1, [r6, 0x4]
- ldrb r2, [r6, 0x8]
- bl GetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- ldr r0, _08127A70 @ =gMapObjects
- adds r5, r1, r0
- ldr r0, _08127A74 @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x7C]
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _08127A64
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r4, _08127A78 @ =gSprites
- adds r2, r4
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r3]
- ldrb r1, [r5, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r0, [r0, 0x5]
- movs r1, 0xC
- ands r1, r0
- ldrb r3, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
- ldr r0, [r6]
- strh r0, [r2, 0x2E]
- ldr r0, [r6, 0x4]
- strh r0, [r2, 0x30]
- ldr r0, [r6, 0x8]
- strh r0, [r2, 0x32]
- ldrb r1, [r5, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r0, [r0, 0x20]
- strh r0, [r2, 0x34]
- ldrb r1, [r5, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r0, [r0, 0x22]
- strh r0, [r2, 0x36]
-_08127A64:
- movs r0, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08127A6C: .4byte gUnknown_0202FF84
-_08127A70: .4byte gMapObjects
-_08127A74: .4byte gFieldEffectObjectTemplatePointers
-_08127A78: .4byte gSprites
- thumb_func_end FldEff_HotSpringsWater
-
- thumb_func_start sub_8127A7C
-sub_8127A7C: @ 8127A7C
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x30]
- lsls r1, 24
- lsrs r1, 24
- ldrh r2, [r4, 0x32]
- lsls r2, 24
- lsrs r2, 24
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- bne _08127AB6
- ldr r5, _08127AC0 @ =gMapObjects
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r5
- ldrb r0, [r1, 0x2]
- lsls r0, 26
- cmp r0, 0
- blt _08127AC4
-_08127AB6:
- adds r0, r4, 0
- movs r1, 0x2A
- bl FieldEffectStop
- b _08127B08
- .align 2, 0
-_08127AC0: .4byte gMapObjects
-_08127AC4:
- ldrb r0, [r1, 0x5]
- bl GetFieldObjectGraphicsInfo
- mov r1, sp
- ldrb r2, [r1]
- lsls r1, r2, 3
- adds r1, r2
- lsls r1, 2
- adds r1, r5
- ldrb r2, [r1, 0x4]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- ldr r2, _08127B10 @ =gSprites
- adds r1, r2
- ldrh r2, [r1, 0x20]
- strh r2, [r4, 0x20]
- ldrh r0, [r0, 0xA]
- lsls r0, 16
- asrs r0, 17
- ldrh r2, [r1, 0x22]
- adds r0, r2
- subs r0, 0x8
- strh r0, [r4, 0x22]
- adds r1, 0x43
- ldrb r0, [r1]
- subs r0, 0x1
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- adds r0, r4, 0
- movs r1, 0
- bl sub_806487C
-_08127B08:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08127B10: .4byte gSprites
- thumb_func_end sub_8127A7C
-
- thumb_func_start FldEff_Unknown19
-FldEff_Unknown19: @ 8127B14
- push {r4,lr}
- ldr r4, _08127B74 @ =gUnknown_0202FF84
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _08127B78 @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x44]
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- ldrb r3, [r4, 0x8]
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _08127B6C
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _08127B7C @ =gSprites
- adds r2, r0
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r3]
- movs r0, 0x3
- ldrb r1, [r4, 0xC]
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
- movs r0, 0x13
- strh r0, [r2, 0x2E]
-_08127B6C:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08127B74: .4byte gUnknown_0202FF84
-_08127B78: .4byte gFieldEffectObjectTemplatePointers
-_08127B7C: .4byte gSprites
- thumb_func_end FldEff_Unknown19
-
- thumb_func_start FldEff_Unknown20
-FldEff_Unknown20: @ 8127B80
- push {r4,lr}
- ldr r4, _08127BE0 @ =gUnknown_0202FF84
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _08127BE4 @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x48]
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- ldrb r3, [r4, 0x8]
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _08127BD8
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _08127BE8 @ =gSprites
- adds r2, r0
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r3]
- movs r0, 0x3
- ldrb r1, [r4, 0xC]
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
- movs r0, 0x14
- strh r0, [r2, 0x2E]
-_08127BD8:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08127BE0: .4byte gUnknown_0202FF84
-_08127BE4: .4byte gFieldEffectObjectTemplatePointers
-_08127BE8: .4byte gSprites
- thumb_func_end FldEff_Unknown20
-
- thumb_func_start FldEff_Unknown21
-FldEff_Unknown21: @ 8127BEC
- push {r4,lr}
- ldr r4, _08127C4C @ =gUnknown_0202FF84
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _08127C50 @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x4C]
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- ldrb r3, [r4, 0x8]
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _08127C44
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _08127C54 @ =gSprites
- adds r2, r0
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r3]
- movs r0, 0x3
- ldrb r1, [r4, 0xC]
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
- movs r0, 0x15
- strh r0, [r2, 0x2E]
-_08127C44:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08127C4C: .4byte gUnknown_0202FF84
-_08127C50: .4byte gFieldEffectObjectTemplatePointers
-_08127C54: .4byte gSprites
- thumb_func_end FldEff_Unknown21
-
- thumb_func_start FldEff_Unknown22
-FldEff_Unknown22: @ 8127C58
- push {r4,lr}
- ldr r4, _08127CB8 @ =gUnknown_0202FF84
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _08127CBC @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x50]
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- ldrb r3, [r4, 0x8]
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _08127CB0
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _08127CC0 @ =gSprites
- adds r2, r0
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r3]
- movs r0, 0x3
- ldrb r1, [r4, 0xC]
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
- movs r0, 0x16
- strh r0, [r2, 0x2E]
-_08127CB0:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08127CB8: .4byte gUnknown_0202FF84
-_08127CBC: .4byte gFieldEffectObjectTemplatePointers
-_08127CC0: .4byte gSprites
- thumb_func_end FldEff_Unknown22
-
- thumb_func_start ash
-ash: @ 8127CC4
- push {r4,lr}
- lsls r2, 16
- lsrs r2, 16
- ldr r4, _08127CF4 @ =gUnknown_0202FF84
- lsls r0, 16
- asrs r0, 16
- str r0, [r4]
- lsls r1, 16
- asrs r1, 16
- str r1, [r4, 0x4]
- movs r0, 0x52
- str r0, [r4, 0x8]
- movs r0, 0x1
- str r0, [r4, 0xC]
- str r2, [r4, 0x10]
- lsls r3, 16
- asrs r3, 16
- str r3, [r4, 0x14]
- movs r0, 0x7
- bl FieldEffectStart
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08127CF4: .4byte gUnknown_0202FF84
- thumb_func_end ash
-
- thumb_func_start FldEff_Ash
-FldEff_Ash: @ 8127CF8
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r5, _08127D78 @ =gUnknown_0202FF84
- ldrh r1, [r5]
- mov r0, sp
- strh r1, [r0]
- ldrh r0, [r5, 0x4]
- mov r4, sp
- adds r4, 0x2
- strh r0, [r4]
- mov r0, sp
- adds r1, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _08127D7C @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x18]
- mov r1, sp
- movs r2, 0
- ldrsh r1, [r1, r2]
- movs r3, 0
- ldrsh r2, [r4, r3]
- ldrb r3, [r5, 0x8]
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _08127D6E
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _08127D80 @ =gSprites
- adds r2, r0
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r3]
- movs r0, 0x3
- ldrb r1, [r5, 0xC]
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
- ldr r0, [r5]
- strh r0, [r2, 0x30]
- ldr r0, [r5, 0x4]
- strh r0, [r2, 0x32]
- ldr r0, [r5, 0x10]
- strh r0, [r2, 0x34]
- ldr r0, [r5, 0x14]
- strh r0, [r2, 0x36]
-_08127D6E:
- movs r0, 0
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08127D78: .4byte gUnknown_0202FF84
-_08127D7C: .4byte gFieldEffectObjectTemplatePointers
-_08127D80: .4byte gSprites
- thumb_func_end FldEff_Ash
-
- thumb_func_start sub_8127D84
-sub_8127D84: @ 8127D84
- push {lr}
- ldr r2, _08127D9C @ =gUnknown_08401E48
- movs r3, 0x2E
- ldrsh r1, [r0, r3]
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- bl _call_via_r1
- pop {r0}
- bx r0
- .align 2, 0
-_08127D9C: .4byte gUnknown_08401E48
- thumb_func_end sub_8127D84
-
- thumb_func_start sub_8127DA0
-sub_8127DA0: @ 8127DA0
- 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]
- subs r2, 0x12
- ldrb r0, [r2]
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r2]
- ldrh r0, [r3, 0x36]
- subs r0, 0x1
- strh r0, [r3, 0x36]
- lsls r0, 16
- cmp r0, 0
- bne _08127DCA
- movs r0, 0x1
- strh r0, [r3, 0x2E]
-_08127DCA:
- pop {r0}
- bx r0
- thumb_func_end sub_8127DA0
-
- thumb_func_start sub_8127DD0
-sub_8127DD0: @ 8127DD0
- 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]
- subs r2, 0x12
- ldrb r1, [r2]
- movs r0, 0x41
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r2, 0x32
- ldrsh r1, [r4, r2]
- ldrh r2, [r4, 0x34]
- bl MapGridSetMetatileIdAt
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r2, 0x32
- ldrsh r1, [r4, r2]
- bl CurrentMapDrawMetatileAt
- ldr r2, _08127E28 @ =gMapObjects
- ldr r0, _08127E2C @ =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- movs r0, 0x2
- strh r0, [r4, 0x2E]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08127E28: .4byte gMapObjects
-_08127E2C: .4byte gPlayerAvatar
- thumb_func_end sub_8127DD0
-
- thumb_func_start sub_8127E30
-sub_8127E30: @ 8127E30
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0
- bl sub_806487C
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08127E50
- adds r0, r4, 0
- movs r1, 0x7
- bl FieldEffectStop
-_08127E50:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8127E30
-
- thumb_func_start FldEff_SurfBlob
-FldEff_SurfBlob: @ 8127E58
- push {r4,r5,lr}
- ldr r4, _08127EC0 @ =gUnknown_0202FF84
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _08127EC4 @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x1C]
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- movs r3, 0x96
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- cmp r0, 0x40
- beq _08127EB2
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _08127EC8 @ =gSprites
- adds r1, r0
- adds r3, r1, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r2, 0x2
- orrs r0, r2
- strb r0, [r3]
- ldrb r2, [r1, 0x5]
- movs r0, 0xF
- ands r0, r2
- strb r0, [r1, 0x5]
- ldr r0, [r4, 0x8]
- strh r0, [r1, 0x32]
- ldr r0, _08127ECC @ =0x0000ffff
- strh r0, [r1, 0x34]
- movs r0, 0x1
- negs r0, r0
- strh r0, [r1, 0x3A]
- strh r0, [r1, 0x3C]
-_08127EB2:
- movs r0, 0x8
- bl FieldEffectActiveListRemove
- adds r0, r5, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08127EC0: .4byte gUnknown_0202FF84
-_08127EC4: .4byte gFieldEffectObjectTemplatePointers
-_08127EC8: .4byte gSprites
-_08127ECC: .4byte 0x0000ffff
- thumb_func_end FldEff_SurfBlob
-
- thumb_func_start sub_8127ED0
-sub_8127ED0: @ 8127ED0
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- ldr r3, _08127EF8 @ =gSprites
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r3
- ldrh r0, [r2, 0x2E]
- movs r3, 0x10
- negs r3, r3
- ands r3, r0
- movs r0, 0xF0
- lsls r0, 20
- ands r0, r1
- lsrs r0, 24
- orrs r0, r3
- strh r0, [r2, 0x2E]
- bx lr
- .align 2, 0
-_08127EF8: .4byte gSprites
- thumb_func_end sub_8127ED0
-
- thumb_func_start sub_8127EFC
-sub_8127EFC: @ 8127EFC
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- ldr r3, _08127F24 @ =gSprites
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r3
- ldrh r0, [r2, 0x2E]
- movs r3, 0xF1
- negs r3, r3
- ands r3, r0
- movs r0, 0xF0
- lsls r0, 20
- ands r0, r1
- lsrs r0, 20
- orrs r3, r0
- strh r3, [r2, 0x2E]
- bx lr
- .align 2, 0
-_08127F24: .4byte gSprites
- thumb_func_end sub_8127EFC
-
- thumb_func_start sub_8127F28
-sub_8127F28: @ 8127F28
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- ldr r4, _08127F54 @ =gSprites
- lsls r3, r0, 4
- adds r3, r0
- lsls r3, 2
- adds r3, r4
- ldrh r0, [r3, 0x2E]
- ldr r4, _08127F58 @ =0xfffff0ff
- ands r4, r0
- movs r0, 0xF0
- lsls r0, 20
- ands r0, r1
- lsrs r0, 16
- orrs r4, r0
- strh r4, [r3, 0x2E]
- strh r2, [r3, 0x30]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08127F54: .4byte gSprites
-_08127F58: .4byte 0xfffff0ff
- thumb_func_end sub_8127F28
-
- thumb_func_start sub_8127F5C
-sub_8127F5C: @ 8127F5C
- ldrh r1, [r0, 0x2E]
- movs r0, 0xF
- ands r0, r1
- bx lr
- thumb_func_end sub_8127F5C
-
- thumb_func_start sub_8127F64
-sub_8127F64: @ 8127F64
- ldrh r1, [r0, 0x2E]
- movs r0, 0xF0
- ands r0, r1
- lsrs r0, 4
- bx lr
- thumb_func_end sub_8127F64
-
- thumb_func_start sub_8127F70
-sub_8127F70: @ 8127F70
- ldrh r1, [r0, 0x2E]
- movs r0, 0xF0
- lsls r0, 4
- ands r0, r1
- lsrs r0, 8
- bx lr
- thumb_func_end sub_8127F70
-
- thumb_func_start sub_8127F7C
-sub_8127F7C: @ 8127F7C
- push {r4-r6,lr}
- adds r6, r0, 0
- movs r1, 0x32
- ldrsh r0, [r6, r1]
- lsls r4, r0, 3
- adds r4, r0
- lsls r4, 2
- ldr r0, _08127FCC @ =gMapObjects
- adds r4, r0
- ldrb r0, [r4, 0x4]
- lsls r5, r0, 4
- adds r5, r0
- lsls r5, 2
- ldr r0, _08127FD0 @ =gSprites
- adds r5, r0
- adds r0, r4, 0
- adds r1, r6, 0
- bl sub_8127FD4
- adds r0, r4, 0
- adds r1, r6, 0
- bl sub_812800C
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- bl sub_81280A0
- ldrb r0, [r5, 0x5]
- movs r1, 0xC
- ands r1, r0
- ldrb r2, [r6, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r6, 0x5]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08127FCC: .4byte gMapObjects
-_08127FD0: .4byte gSprites
- thumb_func_end sub_8127F7C
-
- thumb_func_start sub_8127FD4
-sub_8127FD4: @ 8127FD4
- push {r4,r5,lr}
- sub sp, 0x8
- adds r5, r0, 0
- adds r4, r1, 0
- ldr r1, _08128008 @ =gUnknown_08401E54
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- adds r0, r4, 0
- bl sub_8127F64
- lsls r0, 24
- cmp r0, 0
- bne _08128000
- ldrb r0, [r5, 0x18]
- lsrs r0, 4
- add r0, sp
- ldrb r1, [r0]
- adds r0, r4, 0
- bl StartSpriteAnimIfDifferent
-_08128000:
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08128008: .4byte gUnknown_08401E54
- thumb_func_end sub_8127FD4
-
- thumb_func_start sub_812800C
-sub_812800C: @ 812800C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r4, r1, 0
- ldrh r2, [r0, 0x10]
- mov r1, sp
- strh r2, [r1]
- ldrh r1, [r0, 0x12]
- mov r0, sp
- adds r0, 0x2
- strh r1, [r0]
- movs r2, 0x26
- ldrsh r3, [r4, r2]
- mov r8, r0
- cmp r3, 0
- bne _08128094
- mov r0, sp
- movs r5, 0
- ldrsh r2, [r0, r5]
- movs r5, 0x3A
- ldrsh r0, [r4, r5]
- cmp r2, r0
- bne _08128048
- lsls r0, r1, 16
- asrs r0, 16
- movs r5, 0x3C
- ldrsh r1, [r4, r5]
- cmp r0, r1
- beq _08128094
-_08128048:
- strh r3, [r4, 0x38]
- strh r2, [r4, 0x3A]
- mov r1, r8
- movs r2, 0
- ldrsh r0, [r1, r2]
- strh r0, [r4, 0x3C]
- movs r5, 0x1
- mov r7, r8
- mov r6, sp
-_0812805A:
- adds r0, r5, 0
- mov r1, sp
- adds r2, r7, 0
- bl MoveCoords
- movs r1, 0
- ldrsh r0, [r6, r1]
- movs r2, 0
- ldrsh r1, [r7, r2]
- bl MapGridGetZCoordAt
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bne _08128080
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- b _08128094
-_08128080:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- ldrh r0, [r4, 0x3A]
- strh r0, [r6]
- ldrh r0, [r4, 0x3C]
- mov r1, r8
- strh r0, [r1]
- cmp r5, 0x4
- bls _0812805A
-_08128094:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_812800C
-
- thumb_func_start sub_81280A0
-sub_81280A0: @ 81280A0
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r1, 0
- adds r4, r2, 0
- ldr r1, _08128104 @ =gUnknown_08401E5A
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r0, r4, 0
- bl sub_8127F5C
- lsls r0, 24
- lsrs r0, 24
- adds r2, r0, 0
- cmp r2, 0
- beq _0812811A
- ldrh r1, [r4, 0x36]
- adds r1, 0x1
- strh r1, [r4, 0x36]
- movs r3, 0x38
- ldrsh r0, [r4, r3]
- lsls r0, 1
- add r0, sp
- ldrh r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _081280E0
- ldrh r0, [r4, 0x34]
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
-_081280E0:
- ldrh r1, [r4, 0x36]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0
- bne _081280F0
- ldrh r0, [r4, 0x34]
- negs r0, r0
- strh r0, [r4, 0x34]
-_081280F0:
- cmp r2, 0x2
- beq _0812811A
- adds r0, r4, 0
- bl sub_8127F70
- lsls r0, 24
- cmp r0, 0
- bne _08128108
- ldrh r0, [r4, 0x26]
- b _0812810E
- .align 2, 0
-_08128104: .4byte gUnknown_08401E5A
-_08128108:
- ldrh r0, [r4, 0x26]
- ldrh r3, [r4, 0x30]
- adds r0, r3
-_0812810E:
- strh r0, [r5, 0x26]
- ldrh r0, [r5, 0x20]
- strh r0, [r4, 0x20]
- ldrh r0, [r5, 0x22]
- adds r0, 0x8
- strh r0, [r4, 0x22]
-_0812811A:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81280A0
-
- thumb_func_start sub_8128124
-sub_8128124: @ 8128124
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _08128168 @ =gDummySpriteTemplate
- movs r1, 0
- movs r2, 0
- movs r3, 0xFF
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r1, _0812816C @ =gSprites
- adds r2, r1
- ldr r1, _08128170 @ =sub_8128174
- str r1, [r2, 0x1C]
- movs r1, 0x3E
- adds r1, r2
- mov r12, r1
- ldrb r1, [r1]
- movs r3, 0x4
- orrs r1, r3
- mov r3, r12
- strb r1, [r3]
- strh r4, [r2, 0x2E]
- movs r1, 0x1
- strh r1, [r2, 0x30]
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08128168: .4byte gDummySpriteTemplate
-_0812816C: .4byte gSprites
-_08128170: .4byte sub_8128174
- thumb_func_end sub_8128124
-
- thumb_func_start sub_8128174
-sub_8128174: @ 8128174
- push {lr}
- adds r2, r0, 0
- movs r0, 0x2E
- ldrsh r1, [r2, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _081281B0 @ =gSprites
- adds r3, r0, r1
- ldrh r1, [r2, 0x32]
- adds r0, r1, 0x1
- strh r0, [r2, 0x32]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- bne _0812819C
- ldrh r0, [r2, 0x30]
- ldrh r1, [r3, 0x26]
- adds r0, r1
- strh r0, [r3, 0x26]
-_0812819C:
- ldrh r1, [r2, 0x32]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0
- bne _081281AC
- ldrh r0, [r2, 0x30]
- negs r0, r0
- strh r0, [r2, 0x30]
-_081281AC:
- pop {r0}
- bx r0
- .align 2, 0
-_081281B0: .4byte gSprites
- thumb_func_end sub_8128174
-
- thumb_func_start FldEff_Dust
-FldEff_Dust: @ 81281B4
- push {r4,lr}
- ldr r4, _08128218 @ =gUnknown_0202FF84
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0xC
- bl sub_8060470
- ldr r0, _0812821C @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x24]
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- movs r3, 0
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _08128210
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _08128220 @ =gSprites
- adds r2, r0
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r3]
- movs r0, 0x3
- ldrb r1, [r4, 0xC]
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
- ldr r0, [r4, 0x8]
- strh r0, [r2, 0x2E]
- movs r0, 0xA
- strh r0, [r2, 0x30]
-_08128210:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08128218: .4byte gUnknown_0202FF84
-_0812821C: .4byte gFieldEffectObjectTemplatePointers
-_08128220: .4byte gSprites
- thumb_func_end FldEff_Dust
-
- thumb_func_start FldEff_SandPile
-FldEff_SandPile: @ 8128224
- push {r4-r7,lr}
- ldr r7, _081282D0 @ =gUnknown_0202FF84
- ldrb r0, [r7]
- ldrb r1, [r7, 0x4]
- ldrb r2, [r7, 0x8]
- bl GetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- ldr r0, _081282D4 @ =gMapObjects
- adds r6, r1, r0
- ldr r0, _081282D8 @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x74]
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x40
- beq _081282C8
- ldrb r0, [r6, 0x5]
- bl GetFieldObjectGraphicsInfo
- adds r5, r0, 0
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- ldr r4, _081282DC @ =gSprites
- adds r0, r4
- adds r3, r0, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r3]
- ldrb r2, [r6, 0x4]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- ldrb r1, [r1, 0x5]
- movs r2, 0xC
- ands r2, r1
- ldrb r3, [r0, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r3
- orrs r1, r2
- strb r1, [r0, 0x5]
- ldr r1, [r7]
- strh r1, [r0, 0x2E]
- ldr r1, [r7, 0x4]
- strh r1, [r0, 0x30]
- ldr r1, [r7, 0x8]
- strh r1, [r0, 0x32]
- ldrb r2, [r6, 0x4]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- ldrh r1, [r1, 0x20]
- strh r1, [r0, 0x34]
- ldrb r2, [r6, 0x4]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- ldrh r1, [r1, 0x22]
- strh r1, [r0, 0x36]
- ldrh r1, [r5, 0xA]
- lsls r1, 16
- asrs r1, 17
- subs r1, 0x2
- strh r1, [r0, 0x26]
- movs r1, 0x2
- bl SeekSpriteAnim
-_081282C8:
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_081282D0: .4byte gUnknown_0202FF84
-_081282D4: .4byte gMapObjects
-_081282D8: .4byte gFieldEffectObjectTemplatePointers
-_081282DC: .4byte gSprites
- thumb_func_end FldEff_SandPile
-
- thumb_func_start sub_81282E0
-sub_81282E0: @ 81282E0
- push {r4-r6,lr}
- sub sp, 0x4
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x30]
- lsls r1, 24
- lsrs r1, 24
- ldrh r2, [r4, 0x32]
- lsls r2, 24
- lsrs r2, 24
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- bne _0812831A
- ldr r2, _08128324 @ =gMapObjects
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r2
- ldrb r0, [r1, 0x2]
- lsls r0, 27
- cmp r0, 0
- blt _08128328
-_0812831A:
- adds r0, r4, 0
- movs r1, 0x27
- bl FieldEffectStop
- b _0812839A
- .align 2, 0
-_08128324: .4byte gMapObjects
-_08128328:
- ldr r2, _081283A4 @ =gSprites
- ldrb r1, [r1, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r5, [r0, 0x22]
- ldrh r6, [r0, 0x20]
- movs r2, 0x20
- ldrsh r1, [r0, r2]
- movs r2, 0x34
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _08128350
- lsls r0, r5, 16
- asrs r0, 16
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- cmp r0, r1
- beq _0812836A
-_08128350:
- strh r6, [r4, 0x34]
- strh r5, [r4, 0x36]
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0812836A
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAnim
-_0812836A:
- strh r6, [r4, 0x20]
- strh r5, [r4, 0x22]
- ldr r3, _081283A4 @ =gSprites
- ldr r2, _081283A8 @ =gMapObjects
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x43
- ldrb r0, [r0]
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- adds r0, r4, 0
- movs r1, 0
- bl sub_806487C
-_0812839A:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081283A4: .4byte gSprites
-_081283A8: .4byte gMapObjects
- thumb_func_end sub_81282E0
-
- thumb_func_start FldEff_Bubbles
-FldEff_Bubbles: @ 81283AC
- push {r4,lr}
- ldr r4, _08128404 @ =gUnknown_0202FF84
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0
- bl sub_8060470
- ldr r0, _08128408 @ =gFieldEffectObjectTemplatePointers
- adds r0, 0x88
- ldr r0, [r0]
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- movs r3, 0x52
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _081283FC
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _0812840C @ =gSprites
- adds r1, r0
- adds r3, r1, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r2, 0x2
- orrs r0, r2
- strb r0, [r3]
- ldrb r2, [r1, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1, 0x5]
-_081283FC:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08128404: .4byte gUnknown_0202FF84
-_08128408: .4byte gFieldEffectObjectTemplatePointers
-_0812840C: .4byte gSprites
- thumb_func_end FldEff_Bubbles
-
- thumb_func_start sub_8128410
-sub_8128410: @ 8128410
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0x80
- movs r1, 0x80
- lsls r1, 1
- ands r0, r1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 24
- ldrh r1, [r4, 0x22]
- subs r1, r0
- strh r1, [r4, 0x22]
- adds r0, r4, 0
- movs r1, 0
- bl sub_806487C
- ldrh r1, [r4, 0x3E]
- ldr r0, _0812844C @ =0x00001004
- ands r0, r1
- cmp r0, 0
- beq _08128444
- adds r0, r4, 0
- movs r1, 0x35
- bl FieldEffectStop
-_08128444:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0812844C: .4byte 0x00001004
- thumb_func_end sub_8128410
-
- thumb_func_start FldEff_BerryTreeGrowthSparkle
-FldEff_BerryTreeGrowthSparkle: @ 8128450
- push {r4,lr}
- ldr r4, _081284B8 @ =gUnknown_0202FF84
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0x4
- bl sub_8060470
- ldr r0, _081284BC @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x58]
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- ldrb r3, [r4, 0x8]
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _081284B0
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _081284C0 @ =gSprites
- adds r2, r0
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r3]
- movs r0, 0x3
- ldrb r1, [r4, 0xC]
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- movs r1, 0xF
- ands r0, r1
- movs r1, 0x50
- orrs r0, r1
- strb r0, [r2, 0x5]
- movs r0, 0x17
- strh r0, [r2, 0x2E]
-_081284B0:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_081284B8: .4byte gUnknown_0202FF84
-_081284BC: .4byte gFieldEffectObjectTemplatePointers
-_081284C0: .4byte gSprites
- thumb_func_end FldEff_BerryTreeGrowthSparkle
-
- thumb_func_start FldEff_TreeDisguise
-FldEff_TreeDisguise: @ 81284C4
- push {lr}
- movs r0, 0x1C
- movs r1, 0x18
- movs r2, 0x4
- bl ShowDisguiseFieldEffect
- pop {r1}
- bx r1
- thumb_func_end FldEff_TreeDisguise
-
- thumb_func_start FldEff_MountainDisguise
-FldEff_MountainDisguise: @ 81284D4
- push {lr}
- movs r0, 0x1D
- movs r1, 0x19
- movs r2, 0x3
- bl ShowDisguiseFieldEffect
- pop {r1}
- bx r1
- thumb_func_end FldEff_MountainDisguise
-
- thumb_func_start FldEff_SandDisguise
-FldEff_SandDisguise: @ 81284E4
- push {lr}
- movs r0, 0x24
- movs r1, 0x1C
- movs r2, 0x2
- bl ShowDisguiseFieldEffect
- pop {r1}
- bx r1
- thumb_func_end FldEff_SandDisguise
-
- thumb_func_start ShowDisguiseFieldEffect
-ShowDisguiseFieldEffect: @ 81284F4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- mov r8, r4
- lsls r1, 24
- lsrs r6, r1, 24
- lsls r2, 24
- lsrs r7, r2, 24
- ldr r5, _08128528 @ =gUnknown_0202FF84
- ldrb r0, [r5]
- ldrb r1, [r5, 0x4]
- ldrb r2, [r5, 0x8]
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- beq _0812852C
- adds r0, r4, 0
- bl FieldEffectActiveListRemove
- movs r0, 0x40
- b _08128598
- .align 2, 0
-_08128528: .4byte gUnknown_0202FF84
-_0812852C:
- ldr r1, _081285A4 @ =gFieldEffectObjectTemplatePointers
- lsls r0, r6, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl CreateSpriteAtEnd
- mov r1, sp
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _08128594
- mov r0, sp
- ldrb r0, [r0]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _081285A8 @ =gSprites
- adds r2, r0
- movs r0, 0x3E
- adds r0, r2
- mov r12, r0
- ldrb r3, [r0]
- lsls r1, r3, 30
- lsrs r1, 31
- adds r1, 0x1
- movs r0, 0x1
- ands r1, r0
- lsls r1, 1
- movs r0, 0x3
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
- lsls r3, r7, 4
- ldrb r1, [r2, 0x5]
- movs r0, 0xF
- ands r0, r1
- orrs r0, r3
- strb r0, [r2, 0x5]
- mov r0, r8
- strh r0, [r2, 0x30]
- ldr r0, [r5]
- strh r0, [r2, 0x32]
- ldr r0, [r5, 0x4]
- strh r0, [r2, 0x34]
- ldr r0, [r5, 0x8]
- strh r0, [r2, 0x36]
-_08128594:
- mov r0, sp
- ldrb r0, [r0]
-_08128598:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_081285A4: .4byte gFieldEffectObjectTemplatePointers
-_081285A8: .4byte gSprites
- thumb_func_end ShowDisguiseFieldEffect
-
- thumb_func_start sub_81285AC
-sub_81285AC: @ 81285AC
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- ldrh r0, [r5, 0x32]
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r5, 0x34]
- lsls r1, 24
- lsrs r1, 24
- ldrh r2, [r5, 0x36]
- lsls r2, 24
- lsrs r2, 24
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- beq _081285DC
- ldrh r1, [r5, 0x30]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- bl FieldEffectStop
-_081285DC:
- ldr r4, _08128694 @ =gMapObjects
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r0, [r0, 0x5]
- bl GetFieldObjectGraphicsInfo
- mov r1, sp
- ldrb r2, [r1]
- lsls r1, r2, 3
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- ldrb r1, [r1, 0x4]
- lsls r2, r1, 4
- adds r2, r1
- lsls r2, 2
- ldr r1, _08128698 @ =gSprites
- adds r2, r1
- adds r1, r2, 0
- adds r1, 0x3E
- ldrb r1, [r1]
- movs r3, 0x3E
- adds r3, r5
- mov r12, r3
- movs r3, 0x4
- ands r3, r1
- mov r1, r12
- ldrb r4, [r1]
- movs r1, 0x5
- negs r1, r1
- ands r1, r4
- orrs r1, r3
- mov r3, r12
- strb r1, [r3]
- ldrh r1, [r2, 0x20]
- strh r1, [r5, 0x20]
- ldrh r0, [r0, 0xA]
- lsls r0, 16
- asrs r0, 17
- ldrh r1, [r2, 0x22]
- adds r0, r1
- subs r0, 0x10
- strh r0, [r5, 0x22]
- adds r2, 0x43
- ldrb r0, [r2]
- subs r0, 0x1
- adds r1, r5, 0
- adds r1, 0x43
- strb r0, [r1]
- ldrh r1, [r5, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r5, r2]
- cmp r0, 0x1
- bne _0812865C
- adds r0, r1, 0x1
- strh r0, [r5, 0x2E]
- adds r0, r5, 0
- movs r1, 0x1
- bl StartSpriteAnim
-_0812865C:
- movs r3, 0x2E
- ldrsh r0, [r5, r3]
- ldrh r2, [r5, 0x2E]
- cmp r0, 0x2
- bne _08128678
- adds r0, r5, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08128678
- movs r0, 0x1
- strh r0, [r5, 0x3C]
-_08128678:
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, 0x3
- bne _0812868C
- ldrh r1, [r5, 0x30]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- bl FieldEffectStop
-_0812868C:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08128694: .4byte gMapObjects
-_08128698: .4byte gSprites
- thumb_func_end sub_81285AC
-
- thumb_func_start sub_812869C
-sub_812869C: @ 812869C
- push {lr}
- adds r1, r0, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _081286BA
- ldr r2, _081286C0 @ =gSprites
- ldrb r1, [r1, 0x1A]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x2E]
- adds r1, 0x1
- strh r1, [r0, 0x2E]
-_081286BA:
- pop {r0}
- bx r0
- .align 2, 0
-_081286C0: .4byte gSprites
- thumb_func_end sub_812869C
-
- thumb_func_start sub_81286C4
-sub_81286C4: @ 81286C4
- push {lr}
- adds r2, r0, 0
- adds r2, 0x21
- ldrb r1, [r2]
- cmp r1, 0x2
- beq _081286FA
- cmp r1, 0
- beq _081286FA
- ldrb r1, [r0, 0x1A]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _081286EC @ =gSprites
- adds r1, r0, r1
- movs r3, 0x3C
- ldrsh r0, [r1, r3]
- cmp r0, 0
- bne _081286F0
- movs r0, 0
- b _081286FC
- .align 2, 0
-_081286EC: .4byte gSprites
-_081286F0:
- movs r0, 0x2
- strb r0, [r2]
- ldrh r0, [r1, 0x2E]
- adds r0, 0x1
- strh r0, [r1, 0x2E]
-_081286FA:
- movs r0, 0x1
-_081286FC:
- pop {r1}
- bx r1
- thumb_func_end sub_81286C4
-
- thumb_func_start FldEff_Sparkle
-FldEff_Sparkle: @ 8128700
- push {r4,lr}
- ldr r4, _08128768 @ =gUnknown_0202FF84
- ldr r0, [r4]
- adds r0, 0x7
- str r0, [r4]
- ldr r0, [r4, 0x4]
- adds r0, 0x7
- str r0, [r4, 0x4]
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _0812876C @ =gFieldEffectObjectTemplatePointers
- adds r0, 0x8C
- ldr r0, [r0]
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- movs r3, 0x52
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x40
- beq _08128760
- ldr r0, _08128770 @ =gSprites
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- movs r0, 0x3
- ldrb r2, [r4, 0x8]
- 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]
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x2
- orrs r0, r2
- strb r0, [r1]
-_08128760:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08128768: .4byte gUnknown_0202FF84
-_0812876C: .4byte gFieldEffectObjectTemplatePointers
-_08128770: .4byte gSprites
- thumb_func_end FldEff_Sparkle
-
- thumb_func_start sub_8128774
-sub_8128774: @ 8128774
- push {lr}
- adds r2, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- cmp r0, 0
- bne _081287A8
- adds r0, r2, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _081287A0
- 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]
-_081287A0:
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- cmp r0, 0
- beq _081287BE
-_081287A8:
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- strh r0, [r2, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x22
- ble _081287BE
- adds r0, r2, 0
- movs r1, 0x36
- bl FieldEffectStop
-_081287BE:
- pop {r0}
- bx r0
- thumb_func_end sub_8128774
-
- thumb_func_start sub_81287C4
-sub_81287C4: @ 81287C4
- push {r4,lr}
- adds r4, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _081287E2
- ldrh r1, [r4, 0x30]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl FieldEffectStop
- b _081287F8
-_081287E2:
- adds r0, r4, 0
- movs r1, 0
- bl sub_806487C
- ldrh r0, [r4, 0x2E]
- lsls r0, 24
- lsrs r0, 24
- adds r1, r4, 0
- movs r2, 0
- bl SetObjectSubpriorityByZCoord
-_081287F8:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81287C4
-
- thumb_func_start sub_8128800
-sub_8128800: @ 8128800
- push {lr}
- adds r2, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0812881E
- ldrh r1, [r2, 0x2E]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r2, 0
- bl FieldEffectStop
- b _08128826
-_0812881E:
- adds r0, r2, 0
- movs r1, 0
- bl sub_806487C
-_08128826:
- pop {r0}
- bx r0
- thumb_func_end sub_8128800
-
- thumb_func_start sub_812882C
-sub_812882C: @ 812882C
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r0, r1, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r2, 24
- lsrs r2, 24
- adds r1, r6, 0
- bl SetObjectSubpriorityByZCoord
- movs r7, 0
-_08128842:
- lsls r0, r7, 3
- adds r0, r7
- lsls r0, 2
- ldr r1, _081288DC @ =gMapObjects
- adds r4, r0, r1
- ldrb r0, [r4]
- lsls r0, 31
- cmp r0, 0
- beq _081288E4
- ldrb r0, [r4, 0x5]
- bl GetFieldObjectGraphicsInfo
- ldrb r1, [r4, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _081288E0 @ =gSprites
- adds r5, r0, r1
- adds r0, r6, 0
- adds r0, 0x28
- movs r2, 0
- ldrsb r2, [r0, r2]
- ldrh r0, [r6, 0x20]
- adds r1, r0, r2
- subs r0, r2
- lsls r0, 16
- lsrs r4, r0, 16
- lsls r1, 16
- asrs r1, 16
- movs r0, 0x20
- ldrsh r2, [r5, r0]
- cmp r1, r2
- bge _081288E4
- lsls r0, r4, 16
- asrs r0, 16
- cmp r0, r2
- ble _081288E4
- adds r0, r5, 0
- adds r0, 0x29
- movs r3, 0
- ldrsb r3, [r0, r3]
- ldrh r2, [r5, 0x22]
- adds r2, r3
- ldrh r4, [r5, 0x22]
- adds r0, r6, 0
- adds r0, 0x29
- movs r1, 0
- ldrsb r1, [r0, r1]
- ldrh r0, [r6, 0x22]
- subs r0, r1
- lsls r0, 16
- asrs r0, 16
- adds r3, r0, r3
- lsls r2, 16
- asrs r2, 16
- lsls r3, 16
- asrs r3, 16
- cmp r2, r3
- blt _081288BC
- cmp r2, r0
- bge _081288E4
-_081288BC:
- lsls r0, r4, 16
- asrs r0, 16
- cmp r0, r3
- ble _081288E4
- adds r2, r6, 0
- adds r2, 0x43
- adds r0, r5, 0
- adds r0, 0x43
- ldrb r1, [r0]
- ldrb r0, [r2]
- cmp r0, r1
- bhi _081288E4
- adds r0, r1, 0x2
- strb r0, [r2]
- b _081288EE
- .align 2, 0
-_081288DC: .4byte gMapObjects
-_081288E0: .4byte gSprites
-_081288E4:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0xF
- bls _08128842
-_081288EE:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_812882C
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/field_ground_effect.s b/asm/field_ground_effect.s
deleted file mode 100644
index 47c4b4c60..000000000
--- a/asm/field_ground_effect.s
+++ /dev/null
@@ -1,1302 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start FieldObjectCheckForReflectiveSurface
-FieldObjectCheckForReflectiveSurface: @ 8063A44
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- adds r5, r0, 0
- ldrb r0, [r5, 0x5]
- bl GetFieldObjectGraphicsInfo
- movs r2, 0x8
- ldrsh r1, [r0, r2]
- adds r1, 0x8
- lsls r1, 12
- lsrs r1, 16
- str r1, [sp]
- movs r1, 0xA
- ldrsh r0, [r0, r1]
- adds r0, 0x8
- lsls r0, 12
- movs r4, 0
- lsrs r2, r0, 16
- str r2, [sp, 0x4]
- asrs r0, 16
- cmp r4, r0
- blt _08063A7A
- b _08063B80
-_08063A7A:
- movs r0, 0x1
- mov r10, r0
-_08063A7E:
- movs r1, 0x10
- ldrsh r0, [r5, r1]
- movs r2, 0x12
- ldrsh r1, [r5, r2]
- add r1, r10
- lsls r4, 16
- asrs r6, r4, 16
- adds r1, r6
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl GetReflectionTypeByMetatileBehavior
- lsls r0, 24
- lsrs r0, 24
- mov r9, r4
- cmp r0, 0
- bne _08063B82
- movs r1, 0x14
- ldrsh r0, [r5, r1]
- movs r2, 0x16
- ldrsh r1, [r5, r2]
- add r1, r10
- adds r1, r6
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl GetReflectionTypeByMetatileBehavior
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _08063B82
- movs r2, 0x1
- ldr r1, [sp]
- lsls r0, r1, 16
- asrs r1, r0, 16
- mov r8, r0
- cmp r2, r1
- bge _08063B6E
- movs r0, 0x80
- lsls r0, 9
- asrs r7, r0, 16
-_08063AD8:
- movs r1, 0x10
- ldrsh r0, [r5, r1]
- lsls r1, r2, 16
- asrs r4, r1, 16
- adds r0, r4
- movs r2, 0x12
- ldrsh r1, [r5, r2]
- adds r1, r7
- adds r1, r6
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl GetReflectionTypeByMetatileBehavior
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _08063B82
- movs r1, 0x10
- ldrsh r0, [r5, r1]
- subs r0, r4
- movs r2, 0x12
- ldrsh r1, [r5, r2]
- adds r1, r7
- adds r1, r6
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl GetReflectionTypeByMetatileBehavior
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _08063B82
- movs r1, 0x14
- ldrsh r0, [r5, r1]
- adds r0, r4
- movs r2, 0x16
- ldrsh r1, [r5, r2]
- adds r1, r7
- adds r1, r6
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl GetReflectionTypeByMetatileBehavior
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _08063B82
- movs r1, 0x14
- ldrsh r0, [r5, r1]
- subs r0, r4
- movs r2, 0x16
- ldrsh r1, [r5, r2]
- adds r1, r7
- adds r1, r6
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl GetReflectionTypeByMetatileBehavior
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _08063B82
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r0, r8
- blt _08063AD8
-_08063B6E:
- movs r1, 0x80
- lsls r1, 9
- add r1, r9
- lsrs r4, r1, 16
- ldr r2, [sp, 0x4]
- lsls r0, r2, 16
- cmp r1, r0
- bge _08063B80
- b _08063A7E
-_08063B80:
- movs r0, 0
-_08063B82:
- 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 FieldObjectCheckForReflectiveSurface
-
- thumb_func_start GetReflectionTypeByMetatileBehavior
-GetReflectionTypeByMetatileBehavior: @ 8063B94
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl MetatileBehavior_IsIce
- lsls r0, 24
- cmp r0, 0
- beq _08063BAA
- movs r0, 0x1
- b _08063BBC
-_08063BAA:
- adds r0, r4, 0
- bl MetatileBehavior_IsReflective
- lsls r0, 24
- cmp r0, 0
- bne _08063BBA
- movs r0, 0
- b _08063BBC
-_08063BBA:
- movs r0, 0x2
-_08063BBC:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end GetReflectionTypeByMetatileBehavior
-
- thumb_func_start GetLedgeJumpDirection
-GetLedgeJumpDirection: @ 8063BC4
- push {r4,lr}
- lsls r0, 16
- lsrs r3, r0, 16
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 24
- lsrs r4, r2, 24
- cmp r4, 0
- beq _08063C0A
- cmp r4, 0x4
- bls _08063BE0
- subs r0, r4, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
-_08063BE0:
- subs r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r3, 16
- asrs r0, 16
- lsls r1, 16
- asrs r1, 16
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08063C10 @ =gUnknown_08376040
- lsls r1, r4, 2
- adds r1, r2
- ldr r1, [r1]
- bl _call_via_r1
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08063C14
-_08063C0A:
- movs r0, 0
- b _08063C1A
- .align 2, 0
-_08063C10: .4byte gUnknown_08376040
-_08063C14:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r0, 24
-_08063C1A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end GetLedgeJumpDirection
-
- thumb_func_start FieldObjectSetSpriteOamTableForLongGrass
-FieldObjectSetSpriteOamTableForLongGrass: @ 8063C20
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- ldrb r0, [r5]
- lsls r0, 27
- cmp r0, 0
- blt _08063C74
- ldrb r0, [r5, 0x1E]
- bl MetatileBehavior_IsLongGrass
- lsls r0, 24
- cmp r0, 0
- beq _08063C74
- ldrb r0, [r5, 0x1F]
- bl MetatileBehavior_IsLongGrass
- lsls r0, 24
- cmp r0, 0
- beq _08063C74
- adds r4, 0x42
- ldrb r1, [r4]
- movs r6, 0x40
- negs r6, r6
- adds r0, r6, 0
- ands r0, r1
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r4]
- ldrb r0, [r5, 0xB]
- lsrs r0, 4
- bl ZCoordToPriority
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08063C74
- ldrb r0, [r4]
- adds r1, r6, 0
- ands r1, r0
- movs r0, 0x5
- orrs r1, r0
- strb r1, [r4]
-_08063C74:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end FieldObjectSetSpriteOamTableForLongGrass
-
- thumb_func_start IsZCoordMismatchAt
-IsZCoordMismatchAt: @ 8063C7C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 16
- lsrs r0, r1, 16
- lsls r2, 16
- lsrs r1, r2, 16
- cmp r4, 0
- beq _08063CAA
- lsls r0, 16
- asrs r0, 16
- lsls r1, 16
- asrs r1, 16
- bl MapGridGetZCoordAt
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _08063CAA
- cmp r0, 0xF
- beq _08063CAA
- cmp r0, r4
- bne _08063CAE
-_08063CAA:
- movs r0, 0
- b _08063CB0
-_08063CAE:
- movs r0, 0x1
-_08063CB0:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end IsZCoordMismatchAt
-
- thumb_func_start FieldObjectUpdateZCoordAndPriority
-FieldObjectUpdateZCoordAndPriority: @ 8063CB8
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x3]
- lsls r0, 29
- cmp r0, 0
- blt _08063D06
- adds r0, r4, 0
- bl FieldObjectUpdateZCoord
- ldr r1, _08063D0C @ =gFieldObjectPriorities_08376070
- ldrb r2, [r4, 0xB]
- lsls r2, 24
- lsrs r0, r2, 28
- adds r0, r1
- ldrb r0, [r0]
- adds r4, r5, 0
- adds r4, 0x42
- movs r1, 0x3F
- ands r1, r0
- ldrb r3, [r4]
- movs r0, 0x40
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r4]
- ldr r0, _08063D10 @ =gFieldObjectPriorities_08376060
- lsrs r2, 28
- adds r2, r0
- movs r0, 0x3
- ldrb r1, [r2]
- 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]
-_08063D06:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08063D0C: .4byte gFieldObjectPriorities_08376070
-_08063D10: .4byte gFieldObjectPriorities_08376060
- thumb_func_end FieldObjectUpdateZCoordAndPriority
-
- thumb_func_start InitObjectPriorityByZCoord
-InitObjectPriorityByZCoord: @ 8063D14
- push {r4,lr}
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _08063D58 @ =gFieldObjectPriorities_08376070
- adds r2, r1, r2
- ldrb r2, [r2]
- movs r3, 0x42
- adds r3, r0
- mov r12, r3
- movs r3, 0x3F
- ands r3, r2
- mov r2, r12
- ldrb r4, [r2]
- movs r2, 0x40
- negs r2, r2
- ands r2, r4
- orrs r2, r3
- mov r3, r12
- strb r2, [r3]
- ldr r2, _08063D5C @ =gFieldObjectPriorities_08376060
- adds r1, r2
- movs r3, 0x3
- ldrb r2, [r1]
- ands r2, r3
- lsls r2, 2
- ldrb r3, [r0, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r3
- orrs r1, r2
- strb r1, [r0, 0x5]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08063D58: .4byte gFieldObjectPriorities_08376070
-_08063D5C: .4byte gFieldObjectPriorities_08376060
- thumb_func_end InitObjectPriorityByZCoord
-
- thumb_func_start ZCoordToPriority
-ZCoordToPriority: @ 8063D60
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _08063D6C @ =gFieldObjectPriorities_08376060
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_08063D6C: .4byte gFieldObjectPriorities_08376060
- thumb_func_end ZCoordToPriority
-
- thumb_func_start FieldObjectUpdateZCoord
-FieldObjectUpdateZCoord: @ 8063D70
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- movs r2, 0x12
- ldrsh r1, [r4, r2]
- bl MapGridGetZCoordAt
- lsls r0, 24
- lsrs r5, r0, 24
- movs r1, 0x14
- ldrsh r0, [r4, r1]
- movs r2, 0x16
- ldrsh r1, [r4, r2]
- bl MapGridGetZCoordAt
- lsls r0, 24
- lsrs r0, 24
- cmp r5, 0xF
- beq _08063DBE
- cmp r0, 0xF
- beq _08063DBE
- movs r3, 0xF
- adds r0, r5, 0
- ands r0, r3
- ldrb r1, [r4, 0xB]
- movs r2, 0x10
- negs r2, r2
- ands r2, r1
- orrs r2, r0
- strb r2, [r4, 0xB]
- cmp r5, 0
- beq _08063DBE
- cmp r5, 0xF
- beq _08063DBE
- lsls r0, r5, 4
- ands r2, r3
- orrs r2, r0
- strb r2, [r4, 0xB]
-_08063DBE:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end FieldObjectUpdateZCoord
-
- thumb_func_start SetObjectSubpriorityByZCoord
-SetObjectSubpriorityByZCoord: @ 8063DC4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r2, 24
- lsrs r2, 24
- adds r3, r1, 0
- adds r3, 0x29
- movs r5, 0
- ldrsb r5, [r3, r5]
- ldrh r4, [r1, 0x22]
- ldr r3, _08063E04 @ =gSpriteCoordOffsetY
- subs r4, r5
- ldrh r3, [r3]
- adds r4, r3
- adds r4, 0x8
- movs r3, 0xFF
- ands r4, r3
- lsrs r4, 4
- movs r3, 0x10
- subs r3, r4
- lsls r3, 17
- ldr r4, _08063E08 @ =gUnknown_08376050
- adds r0, r4
- lsrs r3, 16
- ldrb r0, [r0]
- adds r3, r0
- adds r2, r3
- adds r1, 0x43
- strb r2, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08063E04: .4byte gSpriteCoordOffsetY
-_08063E08: .4byte gUnknown_08376050
- thumb_func_end SetObjectSubpriorityByZCoord
-
- thumb_func_start FieldObjectUpdateSubpriority
-FieldObjectUpdateSubpriority: @ 8063E0C
- push {lr}
- adds r2, r0, 0
- ldrb r0, [r2, 0x3]
- lsls r0, 29
- cmp r0, 0
- blt _08063E22
- ldrb r0, [r2, 0xB]
- lsrs r0, 4
- movs r2, 0x1
- bl SetObjectSubpriorityByZCoord
-_08063E22:
- pop {r0}
- bx r0
- thumb_func_end FieldObjectUpdateSubpriority
-
- thumb_func_start AreZCoordsCompatible
-AreZCoordsCompatible: @ 8063E28
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- cmp r0, 0
- beq _08063E3E
- cmp r1, 0
- beq _08063E3E
- cmp r0, r1
- bne _08063E42
-_08063E3E:
- movs r0, 0x1
- b _08063E44
-_08063E42:
- movs r0, 0
-_08063E44:
- pop {r1}
- bx r1
- thumb_func_end AreZCoordsCompatible
-
- thumb_func_start GroundEffect_SpawnOnTallGrass
-GroundEffect_SpawnOnTallGrass: @ 8063E48
- push {lr}
- ldr r3, _08063E8C @ =gUnknown_0202FF84
- movs r2, 0x10
- ldrsh r1, [r0, r2]
- str r1, [r3]
- movs r2, 0x12
- ldrsh r1, [r0, r2]
- str r1, [r3, 0x4]
- ldrb r1, [r0, 0xB]
- lsrs r1, 4
- str r1, [r3, 0x8]
- movs r1, 0x2
- str r1, [r3, 0xC]
- ldrb r1, [r0, 0x8]
- lsls r1, 8
- ldrb r2, [r0, 0x9]
- orrs r1, r2
- str r1, [r3, 0x10]
- ldrb r0, [r0, 0xA]
- str r0, [r3, 0x14]
- ldr r1, _08063E90 @ =gSaveBlock1
- ldrb r0, [r1, 0x5]
- lsls r0, 8
- ldrb r1, [r1, 0x4]
- orrs r0, r1
- str r0, [r3, 0x18]
- movs r0, 0x1
- str r0, [r3, 0x1C]
- movs r0, 0x4
- bl FieldEffectStart
- pop {r0}
- bx r0
- .align 2, 0
-_08063E8C: .4byte gUnknown_0202FF84
-_08063E90: .4byte gSaveBlock1
- thumb_func_end GroundEffect_SpawnOnTallGrass
-
- thumb_func_start sub_8063E94
-sub_8063E94: @ 8063E94
- push {lr}
- ldr r3, _08063ED8 @ =gUnknown_0202FF84
- movs r2, 0x10
- ldrsh r1, [r0, r2]
- str r1, [r3]
- movs r2, 0x12
- ldrsh r1, [r0, r2]
- str r1, [r3, 0x4]
- ldrb r1, [r0, 0xB]
- lsrs r1, 4
- str r1, [r3, 0x8]
- movs r1, 0x2
- str r1, [r3, 0xC]
- ldrb r1, [r0, 0x8]
- lsls r1, 8
- ldrb r2, [r0, 0x9]
- orrs r1, r2
- str r1, [r3, 0x10]
- ldrb r0, [r0, 0xA]
- str r0, [r3, 0x14]
- ldr r1, _08063EDC @ =gSaveBlock1
- ldrb r0, [r1, 0x5]
- lsls r0, 8
- ldrb r1, [r1, 0x4]
- orrs r0, r1
- str r0, [r3, 0x18]
- movs r0, 0
- str r0, [r3, 0x1C]
- movs r0, 0x4
- bl FieldEffectStart
- pop {r0}
- bx r0
- .align 2, 0
-_08063ED8: .4byte gUnknown_0202FF84
-_08063EDC: .4byte gSaveBlock1
- thumb_func_end sub_8063E94
-
- thumb_func_start sub_8063EE0
-sub_8063EE0: @ 8063EE0
- push {lr}
- ldr r3, _08063F24 @ =gUnknown_0202FF84
- movs r2, 0x10
- ldrsh r1, [r0, r2]
- str r1, [r3]
- movs r2, 0x12
- ldrsh r1, [r0, r2]
- str r1, [r3, 0x4]
- ldrb r1, [r0, 0xB]
- lsrs r1, 4
- str r1, [r3, 0x8]
- movs r1, 0x2
- str r1, [r3, 0xC]
- ldrb r1, [r0, 0x8]
- lsls r1, 8
- ldrb r2, [r0, 0x9]
- orrs r1, r2
- str r1, [r3, 0x10]
- ldrb r0, [r0, 0xA]
- str r0, [r3, 0x14]
- ldr r1, _08063F28 @ =gSaveBlock1
- ldrb r0, [r1, 0x5]
- lsls r0, 8
- ldrb r1, [r1, 0x4]
- orrs r0, r1
- str r0, [r3, 0x18]
- movs r0, 0x1
- str r0, [r3, 0x1C]
- movs r0, 0x11
- bl FieldEffectStart
- pop {r0}
- bx r0
- .align 2, 0
-_08063F24: .4byte gUnknown_0202FF84
-_08063F28: .4byte gSaveBlock1
- thumb_func_end sub_8063EE0
-
- thumb_func_start sub_8063F2C
-sub_8063F2C: @ 8063F2C
- push {lr}
- ldr r3, _08063F70 @ =gUnknown_0202FF84
- movs r2, 0x10
- ldrsh r1, [r0, r2]
- str r1, [r3]
- movs r2, 0x12
- ldrsh r1, [r0, r2]
- str r1, [r3, 0x4]
- ldrb r1, [r0, 0xB]
- lsrs r1, 4
- str r1, [r3, 0x8]
- movs r1, 0x2
- str r1, [r3, 0xC]
- ldrb r1, [r0, 0x8]
- lsls r1, 8
- ldrb r2, [r0, 0x9]
- orrs r1, r2
- str r1, [r3, 0x10]
- ldrb r0, [r0, 0xA]
- str r0, [r3, 0x14]
- ldr r1, _08063F74 @ =gSaveBlock1
- ldrb r0, [r1, 0x5]
- lsls r0, 8
- ldrb r1, [r1, 0x4]
- orrs r0, r1
- str r0, [r3, 0x18]
- movs r0, 0
- str r0, [r3, 0x1C]
- movs r0, 0x11
- bl FieldEffectStart
- pop {r0}
- bx r0
- .align 2, 0
-_08063F70: .4byte gUnknown_0202FF84
-_08063F74: .4byte gSaveBlock1
- thumb_func_end sub_8063F2C
-
- thumb_func_start GroundEffect_WaterReflection
-GroundEffect_WaterReflection: @ 8063F78
- push {lr}
- movs r2, 0
- bl SetUpReflection
- pop {r0}
- bx r0
- thumb_func_end GroundEffect_WaterReflection
-
- thumb_func_start GroundEffect_IceReflection
-GroundEffect_IceReflection: @ 8063F84
- push {lr}
- movs r2, 0x1
- bl SetUpReflection
- pop {r0}
- bx r0
- thumb_func_end GroundEffect_IceReflection
-
- thumb_func_start GroundEffect_FlowingWater
-GroundEffect_FlowingWater: @ 8063F90
- push {lr}
- adds r1, r0, 0
- movs r0, 0x22
- bl oe_exec_and_other_stuff
- pop {r0}
- bx r0
- thumb_func_end GroundEffect_FlowingWater
-
- thumb_func_start sub_8063FA0
-sub_8063FA0: @ 8063FA0
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x5]
- bl GetFieldObjectGraphicsInfo
- ldr r1, _08063FC8 @ =gUnknown_08376080
- ldrb r0, [r0, 0xD]
- lsls r0, 2
- adds r0, r1
- ldr r3, [r0]
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0
- bl _call_via_r3
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08063FC8: .4byte gUnknown_08376080
- thumb_func_end sub_8063FA0
-
- thumb_func_start sub_8063FCC
-sub_8063FCC: @ 8063FCC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x5]
- bl GetFieldObjectGraphicsInfo
- ldr r1, _08063FF4 @ =gUnknown_08376080
- ldrb r0, [r0, 0xD]
- lsls r0, 2
- adds r0, r1
- ldr r3, [r0]
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x1
- bl _call_via_r3
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08063FF4: .4byte gUnknown_08376080
- thumb_func_end sub_8063FCC
-
- thumb_func_start nullsub_50
-nullsub_50: @ 8063FF8
- bx lr
- thumb_func_end nullsub_50
-
- thumb_func_start DoTracksGroundEffect_Footprints
-DoTracksGroundEffect_Footprints: @ 8063FFC
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- lsls r4, r2, 24
- lsrs r4, 24
- ldr r1, _08064044 @ =gSandFootprints_FieldEffectData
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- ldr r1, _08064048 @ =gUnknown_0202FF84
- movs r2, 0x14
- ldrsh r0, [r5, r2]
- str r0, [r1]
- movs r2, 0x16
- ldrsh r0, [r5, r2]
- str r0, [r1, 0x4]
- movs r0, 0x95
- str r0, [r1, 0x8]
- movs r0, 0x2
- str r0, [r1, 0xC]
- ldrb r0, [r5, 0x18]
- lsls r0, 28
- lsrs r0, 28
- str r0, [r1, 0x10]
- lsls r4, 1
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- bl FieldEffectStart
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08064044: .4byte gSandFootprints_FieldEffectData
-_08064048: .4byte gUnknown_0202FF84
- thumb_func_end DoTracksGroundEffect_Footprints
-
- thumb_func_start DoTracksGroundEffect_BikeTireTracks
-DoTracksGroundEffect_BikeTireTracks: @ 806404C
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, [r4, 0x10]
- ldr r0, [r4, 0x14]
- cmp r1, r0
- beq _0806408E
- ldr r2, _08064094 @ =gUnknown_0202FF84
- movs r1, 0x14
- ldrsh r0, [r4, r1]
- str r0, [r2]
- movs r1, 0x16
- ldrsh r0, [r4, r1]
- str r0, [r2, 0x4]
- movs r0, 0x95
- str r0, [r2, 0x8]
- movs r0, 0x2
- str r0, [r2, 0xC]
- ldr r3, _08064098 @ =gBikeTireTracks_Transitions
- ldrb r1, [r4, 0x18]
- lsls r1, 28
- lsrs r1, 28
- adds r0, r4, 0
- adds r0, 0x20
- ldrb r0, [r0]
- lsls r0, 2
- subs r0, 0x5
- adds r1, r0
- adds r1, r3
- ldrb r0, [r1]
- str r0, [r2, 0x10]
- movs r0, 0x23
- bl FieldEffectStart
-_0806408E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08064094: .4byte gUnknown_0202FF84
-_08064098: .4byte gBikeTireTracks_Transitions
- thumb_func_end DoTracksGroundEffect_BikeTireTracks
-
- thumb_func_start GroundEffect_Ripple
-GroundEffect_Ripple: @ 806409C
- push {lr}
- bl DoRippleFieldEffect
- pop {r0}
- bx r0
- thumb_func_end GroundEffect_Ripple
-
- thumb_func_start GroundEffect_StepOnPuddle
-GroundEffect_StepOnPuddle: @ 80640A8
- push {lr}
- adds r1, r0, 0
- movs r0, 0xF
- bl oe_exec_and_other_stuff
- pop {r0}
- bx r0
- thumb_func_end GroundEffect_StepOnPuddle
-
- thumb_func_start GroundEffect_SandPile
-GroundEffect_SandPile: @ 80640B8
- push {lr}
- adds r1, r0, 0
- movs r0, 0x27
- bl oe_exec_and_other_stuff
- pop {r0}
- bx r0
- thumb_func_end GroundEffect_SandPile
-
- thumb_func_start GroundEffect_JumpOnTallGrass
-GroundEffect_JumpOnTallGrass: @ 80640C8
- push {r4-r7,lr}
- sub sp, 0x4
- adds r5, r0, 0
- adds r6, r1, 0
- ldr r1, _0806411C @ =gUnknown_0202FF84
- movs r2, 0x10
- ldrsh r0, [r5, r2]
- str r0, [r1]
- movs r4, 0x12
- ldrsh r0, [r5, r4]
- str r0, [r1, 0x4]
- ldrb r0, [r5, 0xB]
- lsrs r0, 4
- str r0, [r1, 0x8]
- movs r0, 0x2
- str r0, [r1, 0xC]
- movs r0, 0xC
- bl FieldEffectStart
- ldrb r0, [r5, 0x8]
- ldrb r1, [r5, 0x9]
- ldrb r2, [r5, 0xA]
- movs r7, 0x10
- ldrsh r3, [r5, r7]
- movs r7, 0x12
- ldrsh r4, [r5, r7]
- str r4, [sp]
- bl sub_8126FF0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- bne _08064112
- adds r0, r5, 0
- adds r1, r6, 0
- bl GroundEffect_SpawnOnTallGrass
-_08064112:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0806411C: .4byte gUnknown_0202FF84
- thumb_func_end GroundEffect_JumpOnTallGrass
-
- thumb_func_start GroundEffect_JumpOnLongGrass
-GroundEffect_JumpOnLongGrass: @ 8064120
- push {lr}
- ldr r2, _08064144 @ =gUnknown_0202FF84
- movs r3, 0x10
- ldrsh r1, [r0, r3]
- str r1, [r2]
- movs r3, 0x12
- ldrsh r1, [r0, r3]
- str r1, [r2, 0x4]
- ldrb r0, [r0, 0xB]
- lsrs r0, 4
- str r0, [r2, 0x8]
- movs r0, 0x2
- str r0, [r2, 0xC]
- movs r0, 0x12
- bl FieldEffectStart
- pop {r0}
- bx r0
- .align 2, 0
-_08064144: .4byte gUnknown_0202FF84
- thumb_func_end GroundEffect_JumpOnLongGrass
-
- thumb_func_start GroundEffect_JumpOnShallowWater
-GroundEffect_JumpOnShallowWater: @ 8064148
- push {r4,lr}
- ldr r3, _08064174 @ =gUnknown_0202FF84
- movs r4, 0x10
- ldrsh r2, [r0, r4]
- str r2, [r3]
- movs r4, 0x12
- ldrsh r2, [r0, r4]
- str r2, [r3, 0x4]
- ldrb r0, [r0, 0xB]
- lsrs r0, 4
- str r0, [r3, 0x8]
- ldrb r0, [r1, 0x5]
- lsls r0, 28
- lsrs r0, 30
- str r0, [r3, 0xC]
- movs r0, 0x10
- bl FieldEffectStart
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08064174: .4byte gUnknown_0202FF84
- thumb_func_end GroundEffect_JumpOnShallowWater
-
- thumb_func_start GroundEffect_JumpOnWater
-GroundEffect_JumpOnWater: @ 8064178
- push {r4,lr}
- ldr r3, _080641A4 @ =gUnknown_0202FF84
- movs r4, 0x10
- ldrsh r2, [r0, r4]
- str r2, [r3]
- movs r4, 0x12
- ldrsh r2, [r0, r4]
- str r2, [r3, 0x4]
- ldrb r0, [r0, 0xB]
- lsrs r0, 4
- str r0, [r3, 0x8]
- ldrb r0, [r1, 0x5]
- lsls r0, 28
- lsrs r0, 30
- str r0, [r3, 0xC]
- movs r0, 0xE
- bl FieldEffectStart
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080641A4: .4byte gUnknown_0202FF84
- thumb_func_end GroundEffect_JumpOnWater
-
- thumb_func_start GroundEffect_JumpLandingDust
-GroundEffect_JumpLandingDust: @ 80641A8
- push {r4,lr}
- ldr r3, _080641D4 @ =gUnknown_0202FF84
- movs r4, 0x10
- ldrsh r2, [r0, r4]
- str r2, [r3]
- movs r4, 0x12
- ldrsh r2, [r0, r4]
- str r2, [r3, 0x4]
- ldrb r0, [r0, 0xB]
- lsrs r0, 4
- str r0, [r3, 0x8]
- ldrb r0, [r1, 0x5]
- lsls r0, 28
- lsrs r0, 30
- str r0, [r3, 0xC]
- movs r0, 0xA
- bl FieldEffectStart
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080641D4: .4byte gUnknown_0202FF84
- thumb_func_end GroundEffect_JumpLandingDust
-
- thumb_func_start GroundEffect_ShortGrass
-GroundEffect_ShortGrass: @ 80641D8
- push {lr}
- adds r1, r0, 0
- movs r0, 0x29
- bl oe_exec_and_other_stuff
- pop {r0}
- bx r0
- thumb_func_end GroundEffect_ShortGrass
-
- thumb_func_start GroundEffect_HotSprings
-GroundEffect_HotSprings: @ 80641E8
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2A
- bl oe_exec_and_other_stuff
- pop {r0}
- bx r0
- thumb_func_end GroundEffect_HotSprings
-
- thumb_func_start GroundEffect_Seaweed
-GroundEffect_Seaweed: @ 80641F8
- push {lr}
- ldr r2, _08064214 @ =gUnknown_0202FF84
- movs r3, 0x10
- ldrsh r1, [r0, r3]
- str r1, [r2]
- movs r1, 0x12
- ldrsh r0, [r0, r1]
- str r0, [r2, 0x4]
- movs r0, 0x35
- bl FieldEffectStart
- pop {r0}
- bx r0
- .align 2, 0
-_08064214: .4byte gUnknown_0202FF84
- thumb_func_end GroundEffect_Seaweed
-
- thumb_func_start sub_8064218
-sub_8064218: @ 8064218
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r7, r0, 0
- adds r6, r1, 0
- adds r5, r2, 0
- movs r4, 0
- ldr r0, _08064258 @ =gUnknown_083760A0
- mov r8, r0
-_0806422A:
- movs r0, 0x1
- ands r0, r5
- cmp r0, 0
- beq _08064240
- lsls r0, r4, 2
- add r0, r8
- ldr r2, [r0]
- adds r0, r7, 0
- adds r1, r6, 0
- bl _call_via_r2
-_08064240:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- lsrs r5, 1
- cmp r4, 0x13
- bls _0806422A
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08064258: .4byte gUnknown_083760A0
- thumb_func_end sub_8064218
-
- thumb_func_start filters_out_some_ground_effects
-filters_out_some_ground_effects: @ 806425C
- push {lr}
- adds r2, r0, 0
- adds r3, r1, 0
- ldrb r0, [r2]
- lsls r0, 27
- cmp r0, 0
- bge _0806428A
- ldrb r1, [r2, 0x2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- movs r1, 0x11
- negs r1, r1
- ands r0, r1
- adds r1, 0x8
- ands r0, r1
- subs r1, 0x18
- ands r0, r1
- strb r0, [r2, 0x2]
- ldr r0, [r3]
- ldr r1, _08064290 @ =0xfff9f7bd
- ands r0, r1
- str r0, [r3]
-_0806428A:
- pop {r0}
- bx r0
- .align 2, 0
-_08064290: .4byte 0xfff9f7bd
- thumb_func_end filters_out_some_ground_effects
-
- thumb_func_start FilterOutStepOnPuddleGroundEffectIfJumping
-FilterOutStepOnPuddleGroundEffectIfJumping: @ 8064294
- push {lr}
- adds r2, r1, 0
- ldrb r0, [r0]
- lsls r0, 26
- cmp r0, 0
- bge _080642A8
- ldr r0, [r2]
- ldr r1, _080642AC @ =0xfffffbff
- ands r0, r1
- str r0, [r2]
-_080642A8:
- pop {r0}
- bx r0
- .align 2, 0
-_080642AC: .4byte 0xfffffbff
- thumb_func_end FilterOutStepOnPuddleGroundEffectIfJumping
-
- thumb_func_start DoGroundEffects_OnSpawn
-DoGroundEffects_OnSpawn: @ 80642B0
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4]
- lsls r0, 29
- cmp r0, 0
- bge _080642F4
- movs r0, 0
- str r0, [sp]
- adds r0, r4, 0
- bl FieldObjectUpdateZCoordAndPriority
- adds r0, r4, 0
- mov r1, sp
- bl GetAllGroundEffectFlags_OnSpawn
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetSpriteOamTableForLongGrass
- ldr r2, [sp]
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8064218
- ldrb r1, [r4]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- movs r1, 0x11
- negs r1, r1
- ands r0, r1
- strb r0, [r4]
-_080642F4:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end DoGroundEffects_OnSpawn
-
- thumb_func_start DoGroundEffects_OnBeginStep
-DoGroundEffects_OnBeginStep: @ 80642FC
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4]
- lsls r0, 29
- cmp r0, 0
- bge _08064348
- movs r0, 0
- str r0, [sp]
- adds r0, r4, 0
- bl FieldObjectUpdateZCoordAndPriority
- adds r0, r4, 0
- mov r1, sp
- bl GetAllGroundEffectFlags_OnBeginStep
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetSpriteOamTableForLongGrass
- adds r0, r4, 0
- mov r1, sp
- bl filters_out_some_ground_effects
- ldr r2, [sp]
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8064218
- ldrb r1, [r4]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- movs r1, 0x11
- negs r1, r1
- ands r0, r1
- strb r0, [r4]
-_08064348:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end DoGroundEffects_OnBeginStep
-
- thumb_func_start DoGroundEffects_OnFinishStep
-DoGroundEffects_OnFinishStep: @ 8064350
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4]
- lsls r0, 28
- cmp r0, 0
- bge _0806439C
- movs r0, 0
- str r0, [sp]
- adds r0, r4, 0
- bl FieldObjectUpdateZCoordAndPriority
- adds r0, r4, 0
- mov r1, sp
- bl GetAllGroundEffectFlags_OnFinishStep
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetSpriteOamTableForLongGrass
- adds r0, r4, 0
- mov r1, sp
- bl FilterOutStepOnPuddleGroundEffectIfJumping
- ldr r2, [sp]
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8064218
- ldrb r1, [r4]
- movs r0, 0x9
- negs r0, r0
- ands r0, r1
- movs r1, 0x21
- negs r1, r1
- ands r0, r1
- strb r0, [r4]
-_0806439C:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end DoGroundEffects_OnFinishStep
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s
deleted file mode 100644
index c8c402217..000000000
--- a/asm/field_map_obj.s
+++ /dev/null
@@ -1,628 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
-.ifndef NONMATCHING
- thumb_func_start sub_805F3EC
-sub_805F3EC: @ 805F3EC
- movs r0, 0
- bx lr
- thumb_func_end sub_805F3EC
-
- thumb_func_start sub_805F3F0
-sub_805F3F0: @ 805F3F0
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r2, 24
- lsrs r2, 24
- ldr r1, _0805F434 @ =gUnknown_0836DC09
- ldrb r0, [r4, 0x6]
- adds r0, r1
- ldrb r0, [r0]
- adds r1, r4, 0
- adds r1, 0x21
- ldrb r1, [r1]
- bl state_to_direction
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- ldrb r0, [r4]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4]
- movs r0, 0x2
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805F434: .4byte gUnknown_0836DC09
- thumb_func_end sub_805F3F0
-
- thumb_func_start sub_805F438
-sub_805F438: @ 805F438
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r4, r0, 0
- adds r7, r1, 0
- mov r8, r3
- lsls r2, 24
- lsrs r6, r2, 24
- ldr r1, _0805F4EC @ =gUnknown_0836DC09
- ldrb r0, [r4, 0x6]
- adds r0, r1
- ldrb r0, [r0]
- adds r1, r4, 0
- adds r1, 0x21
- ldrb r1, [r1]
- adds r2, r6, 0
- bl state_to_direction
- adds r6, r0, 0
- mov r5, sp
- adds r5, 0x2
- adds r0, r4, 0
- adds r1, r6, 0
- mov r2, sp
- adds r3, r5, 0
- bl FieldObjectMoveDestCoords
- adds r0, r6, 0
- bl GetGoSpeed0AnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r7, 0
- bl FieldObjectSetRegularAnim
- mov r0, sp
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r0, 0
- ldrsh r2, [r5, r0]
- adds r0, r4, 0
- adds r3, r6, 0
- bl npc_block_way
- lsls r0, 24
- cmp r0, 0
- bne _0805F4BE
- mov r1, r8
- cmp r1, 0
- beq _0805F4D2
- mov r0, sp
- movs r2, 0
- ldrsh r0, [r0, r2]
- movs r2, 0
- ldrsh r1, [r5, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl _call_via_r8
- lsls r0, 24
- cmp r0, 0
- bne _0805F4D2
-_0805F4BE:
- adds r0, r6, 0
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r7, 0
- bl FieldObjectSetRegularAnim
-_0805F4D2:
- ldrb r0, [r4]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4]
- movs r0, 0x2
- strh r0, [r7, 0x30]
- movs r0, 0x1
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805F4EC: .4byte gUnknown_0836DC09
- thumb_func_end sub_805F438
-.endif
-
- thumb_func_start sub_805F4F0
-sub_805F4F0: @ 805F4F0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r4, r0, 0
- adds r7, r1, 0
- mov r8, r3
- lsls r2, 24
- lsrs r6, r2, 24
- ldr r1, _0805F5A4 @ =gUnknown_0836DC09
- ldrb r0, [r4, 0x6]
- adds r0, r1
- ldrb r0, [r0]
- adds r1, r4, 0
- adds r1, 0x21
- ldrb r1, [r1]
- adds r2, r6, 0
- bl state_to_direction
- adds r6, r0, 0
- mov r5, sp
- adds r5, 0x2
- adds r0, r4, 0
- adds r1, r6, 0
- mov r2, sp
- adds r3, r5, 0
- bl FieldObjectMoveDestCoords
- adds r0, r6, 0
- bl sub_8060744
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r7, 0
- bl FieldObjectSetRegularAnim
- mov r0, sp
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r0, 0
- ldrsh r2, [r5, r0]
- adds r0, r4, 0
- adds r3, r6, 0
- bl npc_block_way
- lsls r0, 24
- cmp r0, 0
- bne _0805F576
- mov r1, r8
- cmp r1, 0
- beq _0805F58A
- mov r0, sp
- movs r2, 0
- ldrsh r0, [r0, r2]
- movs r2, 0
- ldrsh r1, [r5, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl _call_via_r8
- lsls r0, 24
- cmp r0, 0
- bne _0805F58A
-_0805F576:
- adds r0, r6, 0
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r7, 0
- bl FieldObjectSetRegularAnim
-_0805F58A:
- ldrb r0, [r4]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4]
- movs r0, 0x2
- strh r0, [r7, 0x30]
- movs r0, 0x1
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805F5A4: .4byte gUnknown_0836DC09
- thumb_func_end sub_805F4F0
-
- thumb_func_start sub_805F5A8
-sub_805F5A8: @ 805F5A8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r4, r0, 0
- adds r7, r1, 0
- mov r8, r3
- lsls r2, 24
- lsrs r6, r2, 24
- ldr r1, _0805F65C @ =gUnknown_0836DC09
- ldrb r0, [r4, 0x6]
- adds r0, r1
- ldrb r0, [r0]
- adds r1, r4, 0
- adds r1, 0x21
- ldrb r1, [r1]
- adds r2, r6, 0
- bl state_to_direction
- adds r6, r0, 0
- mov r5, sp
- adds r5, 0x2
- adds r0, r4, 0
- adds r1, r6, 0
- mov r2, sp
- adds r3, r5, 0
- bl FieldObjectMoveDestCoords
- adds r0, r6, 0
- bl sub_806079C
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r7, 0
- bl FieldObjectSetRegularAnim
- mov r0, sp
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r0, 0
- ldrsh r2, [r5, r0]
- adds r0, r4, 0
- adds r3, r6, 0
- bl npc_block_way
- lsls r0, 24
- cmp r0, 0
- bne _0805F62E
- mov r1, r8
- cmp r1, 0
- beq _0805F642
- mov r0, sp
- movs r2, 0
- ldrsh r0, [r0, r2]
- movs r2, 0
- ldrsh r1, [r5, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl _call_via_r8
- lsls r0, 24
- cmp r0, 0
- bne _0805F642
-_0805F62E:
- adds r0, r6, 0
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r7, 0
- bl FieldObjectSetRegularAnim
-_0805F642:
- ldrb r0, [r4]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4]
- movs r0, 0x2
- strh r0, [r7, 0x30]
- movs r0, 0x1
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805F65C: .4byte gUnknown_0836DC09
- thumb_func_end sub_805F5A8
-
- thumb_func_start sub_805F660
-sub_805F660: @ 805F660
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r4, r0, 0
- adds r7, r1, 0
- mov r8, r3
- lsls r2, 24
- lsrs r6, r2, 24
- ldr r1, _0805F714 @ =gUnknown_0836DC09
- ldrb r0, [r4, 0x6]
- adds r0, r1
- ldrb r0, [r0]
- adds r1, r4, 0
- adds r1, 0x21
- ldrb r1, [r1]
- adds r2, r6, 0
- bl state_to_direction
- adds r6, r0, 0
- mov r5, sp
- adds r5, 0x2
- adds r0, r4, 0
- adds r1, r6, 0
- mov r2, sp
- adds r3, r5, 0
- bl FieldObjectMoveDestCoords
- adds r0, r6, 0
- bl sub_80607C8
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r7, 0
- bl FieldObjectSetRegularAnim
- mov r0, sp
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r0, 0
- ldrsh r2, [r5, r0]
- adds r0, r4, 0
- adds r3, r6, 0
- bl npc_block_way
- lsls r0, 24
- cmp r0, 0
- bne _0805F6E6
- mov r1, r8
- cmp r1, 0
- beq _0805F6FA
- mov r0, sp
- movs r2, 0
- ldrsh r0, [r0, r2]
- movs r2, 0
- ldrsh r1, [r5, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl _call_via_r8
- lsls r0, 24
- cmp r0, 0
- bne _0805F6FA
-_0805F6E6:
- adds r0, r6, 0
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r7, 0
- bl FieldObjectSetRegularAnim
-_0805F6FA:
- ldrb r0, [r4]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4]
- movs r0, 0x2
- strh r0, [r7, 0x30]
- movs r0, 0x1
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805F714: .4byte gUnknown_0836DC09
- thumb_func_end sub_805F660
-
- thumb_func_start cph_IM_DIFFERENT
-cph_IM_DIFFERENT: @ 805F718
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r2, 24
- lsrs r2, 24
- ldr r1, _0805F75C @ =gUnknown_0836DC09
- ldrb r0, [r4, 0x6]
- adds r0, r1
- ldrb r0, [r0]
- adds r1, r4, 0
- adds r1, 0x21
- ldrb r1, [r1]
- bl state_to_direction
- bl sub_806084C
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- ldrb r0, [r4]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4]
- movs r0, 0x2
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805F75C: .4byte gUnknown_0836DC09
- thumb_func_end cph_IM_DIFFERENT
-
- thumb_func_start sub_805F760
-sub_805F760: @ 805F760
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r4, r0, 0
- adds r7, r1, 0
- mov r8, r3
- lsls r2, 24
- lsrs r6, r2, 24
- ldr r1, _0805F814 @ =gUnknown_0836DC09
- ldrb r0, [r4, 0x6]
- adds r0, r1
- ldrb r0, [r0]
- adds r1, r4, 0
- adds r1, 0x21
- ldrb r1, [r1]
- adds r2, r6, 0
- bl state_to_direction
- adds r6, r0, 0
- mov r5, sp
- adds r5, 0x2
- adds r0, r4, 0
- adds r1, r6, 0
- mov r2, sp
- adds r3, r5, 0
- bl FieldObjectMoveDestCoords
- adds r0, r6, 0
- bl sub_80608A4
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r7, 0
- bl FieldObjectSetRegularAnim
- mov r0, sp
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r0, 0
- ldrsh r2, [r5, r0]
- adds r0, r4, 0
- adds r3, r6, 0
- bl npc_block_way
- lsls r0, 24
- cmp r0, 0
- bne _0805F7E6
- mov r1, r8
- cmp r1, 0
- beq _0805F7FA
- mov r0, sp
- movs r2, 0
- ldrsh r0, [r0, r2]
- movs r2, 0
- ldrsh r1, [r5, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl _call_via_r8
- lsls r0, 24
- cmp r0, 0
- bne _0805F7FA
-_0805F7E6:
- adds r0, r6, 0
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r7, 0
- bl FieldObjectSetRegularAnim
-_0805F7FA:
- ldrb r0, [r4]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4]
- movs r0, 0x2
- strh r0, [r7, 0x30]
- movs r0, 0x1
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805F814: .4byte gUnknown_0836DC09
- thumb_func_end sub_805F760
-
- thumb_func_start oac_hopping
-oac_hopping: @ 805F818
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- adds r4, r0, 0
- adds r7, r1, 0
- mov r8, r3
- lsls r2, 24
- lsrs r6, r2, 24
- ldr r1, _0805F8DC @ =gUnknown_0836DC09
- ldrb r0, [r4, 0x6]
- adds r0, r1
- ldrb r0, [r0]
- adds r1, r4, 0
- adds r1, 0x21
- ldrb r1, [r1]
- adds r2, r6, 0
- bl state_to_direction
- adds r6, r0, 0
- ldrh r1, [r4, 0x10]
- add r0, sp, 0x4
- strh r1, [r0]
- ldrh r0, [r4, 0x12]
- mov r5, sp
- adds r5, 0x6
- strh r0, [r5]
- movs r0, 0x2
- str r0, [sp]
- adds r0, r6, 0
- add r1, sp, 0x4
- adds r2, r5, 0
- movs r3, 0x2
- bl sub_8060320
- adds r0, r6, 0
- bl GetJumpLedgeAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r7, 0
- bl FieldObjectSetRegularAnim
- add r0, sp, 0x4
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r0, 0
- ldrsh r2, [r5, r0]
- adds r0, r4, 0
- adds r3, r6, 0
- bl npc_block_way
- lsls r0, 24
- cmp r0, 0
- bne _0805F8AC
- mov r1, r8
- cmp r1, 0
- beq _0805F8C0
- add r0, sp, 0x4
- movs r2, 0
- ldrsh r0, [r0, r2]
- movs r2, 0
- ldrsh r1, [r5, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl _call_via_r8
- lsls r0, 24
- cmp r0, 0
- bne _0805F8C0
-_0805F8AC:
- adds r0, r6, 0
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r7, 0
- bl FieldObjectSetRegularAnim
-_0805F8C0:
- ldrb r0, [r4]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4]
- movs r0, 0x2
- strh r0, [r7, 0x30]
- movs r0, 0x1
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805F8DC: .4byte gUnknown_0836DC09
- thumb_func_end oac_hopping
diff --git a/asm/fldeff_80C5CD4.s b/asm/fldeff_80C5CD4.s
index 33182fc6a..011ce6427 100644
--- a/asm/fldeff_80C5CD4.s
+++ b/asm/fldeff_80C5CD4.s
@@ -741,7 +741,7 @@ _080C627C: .4byte gMapHeader
thumb_func_start sub_80C6280
sub_80C6280: @ 80C6280
push {lr}
- ldr r1, _080C6294 @ =gUnknown_0202FF84
+ ldr r1, _080C6294 @ =gFieldEffectArguments
ldr r0, [r1, 0x4]
cmp r0, 0x2
beq _080C62AA
@@ -751,7 +751,7 @@ sub_80C6280: @ 80C6280
beq _080C62A2
b _080C62BE
.align 2, 0
-_080C6294: .4byte gUnknown_0202FF84
+_080C6294: .4byte gFieldEffectArguments
_080C6298:
cmp r0, 0x3
beq _080C62AE
@@ -815,7 +815,7 @@ SetUpFieldMove_SecretPower: @ 80C62C4
bne _080C6330
bl sub_80C6264
ldr r1, _080C6320 @ =gFieldCallback
- ldr r0, _080C6324 @ =sub_808AB90
+ ldr r0, _080C6324 @ =FieldCallback_Teleport
str r0, [r1]
ldr r1, _080C6328 @ =gUnknown_03005CE4
ldr r0, _080C632C @ =sub_80C639C
@@ -824,7 +824,7 @@ SetUpFieldMove_SecretPower: @ 80C62C4
_080C6318: .4byte gScriptResult
_080C631C: .4byte gUnknown_0203923C
_080C6320: .4byte gFieldCallback
-_080C6324: .4byte sub_808AB90
+_080C6324: .4byte FieldCallback_Teleport
_080C6328: .4byte gUnknown_03005CE4
_080C632C: .4byte sub_80C639C
_080C6330:
@@ -836,14 +836,14 @@ _080C6330:
bne _080C6360
bl sub_80C6264
ldr r1, _080C6350 @ =gFieldCallback
- ldr r0, _080C6354 @ =sub_808AB90
+ ldr r0, _080C6354 @ =FieldCallback_Teleport
str r0, [r1]
ldr r1, _080C6358 @ =gUnknown_03005CE4
ldr r0, _080C635C @ =sub_80C64A8
b _080C6380
.align 2, 0
_080C6350: .4byte gFieldCallback
-_080C6354: .4byte sub_808AB90
+_080C6354: .4byte FieldCallback_Teleport
_080C6358: .4byte gUnknown_03005CE4
_080C635C: .4byte sub_80C64A8
_080C6360:
@@ -859,7 +859,7 @@ _080C636E:
_080C6372:
bl sub_80C6264
ldr r1, _080C638C @ =gFieldCallback
- ldr r0, _080C6390 @ =sub_808AB90
+ ldr r0, _080C6390 @ =FieldCallback_Teleport
str r0, [r1]
ldr r1, _080C6394 @ =gUnknown_03005CE4
ldr r0, _080C6398 @ =sub_80C660C
@@ -872,7 +872,7 @@ _080C6384:
bx r1
.align 2, 0
_080C638C: .4byte gFieldCallback
-_080C6390: .4byte sub_808AB90
+_080C6390: .4byte FieldCallback_Teleport
_080C6394: .4byte gUnknown_03005CE4
_080C6398: .4byte sub_80C660C
thumb_func_end SetUpFieldMove_SecretPower
@@ -880,7 +880,7 @@ _080C6398: .4byte sub_80C660C
thumb_func_start sub_80C639C
sub_80C639C: @ 80C639C
push {lr}
- ldr r1, _080C63B0 @ =gUnknown_0202FF84
+ ldr r1, _080C63B0 @ =gFieldEffectArguments
ldr r0, _080C63B4 @ =gLastFieldPokeMenuOpened
ldrb r0, [r0]
str r0, [r1]
@@ -889,7 +889,7 @@ sub_80C639C: @ 80C639C
pop {r0}
bx r0
.align 2, 0
-_080C63B0: .4byte gUnknown_0202FF84
+_080C63B0: .4byte gFieldEffectArguments
_080C63B4: .4byte gLastFieldPokeMenuOpened
_080C63B8: .4byte gUnknown_081A2CE6
thumb_func_end sub_80C639C
@@ -943,7 +943,7 @@ FldEff_SecretPowerCave: @ 80C63FC
ldrh r1, [r2, 0x2]
lsls r1, 23
lsrs r1, 23
- ldr r4, _080C6448 @ =gUnknown_0202FF84
+ ldr r4, _080C6448 @ =gFieldEffectArguments
ldr r3, [r4, 0x14]
adds r1, r3
lsls r1, 16
@@ -963,7 +963,7 @@ FldEff_SecretPowerCave: @ 80C63FC
_080C643C: .4byte gSpriteTemplate_83D2614
_080C6440: .4byte gSprites
_080C6444: .4byte gPlayerAvatar
-_080C6448: .4byte gUnknown_0202FF84
+_080C6448: .4byte gFieldEffectArguments
thumb_func_end FldEff_SecretPowerCave
thumb_func_start sub_80C644C
@@ -1025,7 +1025,7 @@ sub_80C6498: @ 80C6498
thumb_func_start sub_80C64A8
sub_80C64A8: @ 80C64A8
push {lr}
- ldr r1, _080C64BC @ =gUnknown_0202FF84
+ ldr r1, _080C64BC @ =gFieldEffectArguments
ldr r0, _080C64C0 @ =gLastFieldPokeMenuOpened
ldrb r0, [r0]
str r0, [r1]
@@ -1034,7 +1034,7 @@ sub_80C64A8: @ 80C64A8
pop {r0}
bx r0
.align 2, 0
-_080C64BC: .4byte gUnknown_0202FF84
+_080C64BC: .4byte gFieldEffectArguments
_080C64C0: .4byte gLastFieldPokeMenuOpened
_080C64C4: .4byte gUnknown_081A2D3E
thumb_func_end sub_80C64A8
@@ -1088,13 +1088,13 @@ FldEff_SecretPowerTree: @ 80C6508
ands r2, r0
cmp r2, 0x96
bne _080C652A
- ldr r1, _080C6588 @ =gUnknown_0202FF84
+ ldr r1, _080C6588 @ =gFieldEffectArguments
movs r0, 0
str r0, [r1, 0x1C]
_080C652A:
cmp r2, 0x9C
bne _080C6534
- ldr r1, _080C6588 @ =gUnknown_0202FF84
+ ldr r1, _080C6588 @ =gFieldEffectArguments
movs r0, 0x2
str r0, [r1, 0x1C]
_080C6534:
@@ -1110,7 +1110,7 @@ _080C6534:
ldrh r1, [r2, 0x2]
lsls r1, 23
lsrs r1, 23
- ldr r4, _080C6588 @ =gUnknown_0202FF84
+ ldr r4, _080C6588 @ =gFieldEffectArguments
ldr r3, [r4, 0x14]
adds r1, r3
lsls r1, 16
@@ -1137,7 +1137,7 @@ _080C6576:
.align 2, 0
_080C6580: .4byte gUnknown_0203923C
_080C6584: .4byte 0x00000fff
-_080C6588: .4byte gUnknown_0202FF84
+_080C6588: .4byte gFieldEffectArguments
_080C658C: .4byte gSpriteTemplate_83D262C
_080C6590: .4byte gSprites
_080C6594: .4byte gPlayerAvatar
@@ -1149,7 +1149,7 @@ sub_80C6598: @ 80C6598
adds r4, r0, 0
movs r0, 0x9B
bl PlaySE
- ldr r0, _080C65BC @ =gUnknown_0202FF84
+ ldr r0, _080C65BC @ =gFieldEffectArguments
ldr r1, [r0, 0x1C]
adds r2, r4, 0
adds r2, 0x2A
@@ -1162,7 +1162,7 @@ sub_80C6598: @ 80C6598
pop {r0}
bx r0
.align 2, 0
-_080C65BC: .4byte gUnknown_0202FF84
+_080C65BC: .4byte gFieldEffectArguments
_080C65C0: .4byte sub_80C65C4
thumb_func_end sub_80C6598
@@ -1177,7 +1177,7 @@ sub_80C65C4: @ 80C65C4
asrs r0, 16
cmp r0, 0x27
ble _080C65EE
- ldr r0, _080C65F4 @ =gUnknown_0202FF84
+ ldr r0, _080C65F4 @ =gFieldEffectArguments
ldr r0, [r0, 0x1C]
cmp r0, 0
beq _080C65E2
@@ -1195,7 +1195,7 @@ _080C65EE:
pop {r0}
bx r0
.align 2, 0
-_080C65F4: .4byte gUnknown_0202FF84
+_080C65F4: .4byte gFieldEffectArguments
_080C65F8: .4byte sub_80C65FC
thumb_func_end sub_80C65C4
@@ -1212,7 +1212,7 @@ sub_80C65FC: @ 80C65FC
thumb_func_start sub_80C660C
sub_80C660C: @ 80C660C
push {lr}
- ldr r1, _080C6620 @ =gUnknown_0202FF84
+ ldr r1, _080C6620 @ =gFieldEffectArguments
ldr r0, _080C6624 @ =gLastFieldPokeMenuOpened
ldrb r0, [r0]
str r0, [r1]
@@ -1221,7 +1221,7 @@ sub_80C660C: @ 80C660C
pop {r0}
bx r0
.align 2, 0
-_080C6620: .4byte gUnknown_0202FF84
+_080C6620: .4byte gFieldEffectArguments
_080C6624: .4byte gLastFieldPokeMenuOpened
_080C6628: .4byte gUnknown_081A2D96
thumb_func_end sub_80C660C
@@ -1275,7 +1275,7 @@ FldEff_SecretPowerShrub: @ 80C666C
ldrh r1, [r2, 0x2]
lsls r1, 23
lsrs r1, 23
- ldr r4, _080C66B8 @ =gUnknown_0202FF84
+ ldr r4, _080C66B8 @ =gFieldEffectArguments
ldr r3, [r4, 0x14]
adds r1, r3
lsls r1, 16
@@ -1295,7 +1295,7 @@ FldEff_SecretPowerShrub: @ 80C666C
_080C66AC: .4byte gSpriteTemplate_83D2644
_080C66B0: .4byte gSprites
_080C66B4: .4byte gPlayerAvatar
-_080C66B8: .4byte gUnknown_0202FF84
+_080C66B8: .4byte gFieldEffectArguments
thumb_func_end FldEff_SecretPowerShrub
thumb_func_start sub_80C66BC
@@ -2103,7 +2103,7 @@ FldEff_SandPillar: @ 80C6D3C
mov r0, sp
adds r1, r4, 0
bl GetXYCoordsOneStepInFrontOfPlayer
- ldr r1, _080C6D78 @ =gUnknown_0202FF84
+ ldr r1, _080C6D78 @ =gFieldEffectArguments
mov r0, sp
movs r2, 0
ldrsh r0, [r0, r2]
@@ -2122,7 +2122,7 @@ FldEff_SandPillar: @ 80C6D3C
beq _080C6D86
b _080C6E4C
.align 2, 0
-_080C6D78: .4byte gUnknown_0202FF84
+_080C6D78: .4byte gFieldEffectArguments
_080C6D7C:
cmp r0, 0x3
beq _080C6DEC
@@ -2240,7 +2240,7 @@ SpriteCB_SandPillar_0: @ 80C6E64
adds r5, r0, 0
movs r0, 0x83
bl PlaySE
- ldr r4, _080C6E90 @ =gUnknown_0202FF84
+ ldr r4, _080C6E90 @ =gFieldEffectArguments
ldr r0, [r4, 0x14]
ldr r1, [r4, 0x18]
subs r1, 0x1
@@ -2255,7 +2255,7 @@ SpriteCB_SandPillar_0: @ 80C6E64
bl MapGridSetMetatileIdAt
b _080C6EAA
.align 2, 0
-_080C6E90: .4byte gUnknown_0202FF84
+_080C6E90: .4byte gFieldEffectArguments
_080C6E94: .4byte 0x00000286
_080C6E98: .4byte 0x00000e02
_080C6E9C:
@@ -2266,7 +2266,7 @@ _080C6E9C:
lsls r2, 2
bl MapGridSetMetatileIdAt
_080C6EAA:
- ldr r4, _080C6ED8 @ =gUnknown_0202FF84
+ ldr r4, _080C6ED8 @ =gFieldEffectArguments
ldr r0, [r4, 0x14]
ldr r1, [r4, 0x18]
ldr r2, _080C6EDC @ =0x0000020a
@@ -2286,7 +2286,7 @@ _080C6EAA:
pop {r0}
bx r0
.align 2, 0
-_080C6ED8: .4byte gUnknown_0202FF84
+_080C6ED8: .4byte gFieldEffectArguments
_080C6EDC: .4byte 0x0000020a
_080C6EE0: .4byte SpriteCB_SandPillar_1
thumb_func_end SpriteCB_SandPillar_0
@@ -2304,7 +2304,7 @@ SpriteCB_SandPillar_1: @ 80C6EE4
strh r0, [r5, 0x2E]
b _080C6F14
_080C6EF8:
- ldr r4, _080C6F1C @ =gUnknown_0202FF84
+ ldr r4, _080C6F1C @ =gFieldEffectArguments
ldr r0, [r4, 0x14]
ldr r1, [r4, 0x18]
ldr r2, _080C6F20 @ =0x00000e8c
@@ -2321,7 +2321,7 @@ _080C6F14:
pop {r0}
bx r0
.align 2, 0
-_080C6F1C: .4byte gUnknown_0202FF84
+_080C6F1C: .4byte gFieldEffectArguments
_080C6F20: .4byte 0x00000e8c
_080C6F24: .4byte SpriteCB_SandPillar_2
thumb_func_end SpriteCB_SandPillar_1
diff --git a/asm/hall_of_fame.s b/asm/hall_of_fame.s
deleted file mode 100644
index 3ad85d7cf..000000000
--- a/asm/hall_of_fame.s
+++ /dev/null
@@ -1,3402 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8141E38
-sub_8141E38: @ 8141E38
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_8141E38
-
- thumb_func_start sub_8141E4C
-sub_8141E4C: @ 8141E4C
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_8141E4C
-
- thumb_func_start sub_8141E64
-sub_8141E64: @ 8141E64
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _08141E80 @ =gMain
- ldr r1, _08141E84 @ =0x0000043c
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x4
- bhi _08141EA0
- lsls r0, 2
- ldr r1, _08141E88 @ =_08141E8C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08141E80: .4byte gMain
-_08141E84: .4byte 0x0000043c
-_08141E88: .4byte _08141E8C
- .align 2, 0
-_08141E8C:
- .4byte _08141EA0
- .4byte _08141EC0
- .4byte _08141EC6
- .4byte _08141F1C
- .4byte _08141F58
-_08141EA0:
- movs r0, 0
- bl SetVBlankCallback
- bl sub_81433E0
- ldr r0, _08141EB8 @ =gMain
- ldr r2, _08141EBC @ =0x0000043c
- adds r0, r2
- movs r1, 0x1
- strb r1, [r0]
- b _08141F84
- .align 2, 0
-_08141EB8: .4byte gMain
-_08141EBC: .4byte 0x0000043c
-_08141EC0:
- bl sub_8143570
- b _08141F38
-_08141EC6:
- movs r0, 0x1
- negs r0, r0
- movs r4, 0
- str r4, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r0, _08141F04 @ =sub_8141E38
- bl SetVBlankCallback
- ldr r3, _08141F08 @ =0x04000208
- ldrh r2, [r3]
- strh r4, [r3]
- ldr r4, _08141F0C @ =0x04000200
- ldrh r0, [r4]
- movs r1, 0x1
- orrs r0, r1
- strh r0, [r4]
- strh r2, [r3]
- ldr r2, _08141F10 @ =REG_DISPSTAT
- ldrh r0, [r2]
- movs r1, 0x8
- orrs r0, r1
- strh r0, [r2]
- ldr r1, _08141F14 @ =gMain
- ldr r2, _08141F18 @ =0x0000043c
- adds r1, r2
- b _08141F3E
- .align 2, 0
-_08141F04: .4byte sub_8141E38
-_08141F08: .4byte 0x04000208
-_08141F0C: .4byte 0x04000200
-_08141F10: .4byte REG_DISPSTAT
-_08141F14: .4byte gMain
-_08141F18: .4byte 0x0000043c
-_08141F1C:
- ldr r1, _08141F48 @ =REG_BLDCNT
- ldr r2, _08141F4C @ =0x00003f42
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- movs r2, 0xE2
- lsls r2, 3
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- movs r0, 0
- strh r0, [r1]
- bl sub_81435B8
-_08141F38:
- ldr r1, _08141F50 @ =gMain
- ldr r0, _08141F54 @ =0x0000043c
- adds r1, r0
-_08141F3E:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08141F84
- .align 2, 0
-_08141F48: .4byte REG_BLDCNT
-_08141F4C: .4byte 0x00003f42
-_08141F50: .4byte gMain
-_08141F54: .4byte 0x0000043c
-_08141F58:
- bl UpdatePaletteFade
- ldr r0, _08141F7C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08141F84
- ldr r0, _08141F80 @ =sub_8141E4C
- bl SetMainCallback2
- movs r0, 0xDA
- lsls r0, 1
- bl PlayBGM
- movs r0, 0
- b _08141F86
- .align 2, 0
-_08141F7C: .4byte gPaletteFade
-_08141F80: .4byte sub_8141E4C
-_08141F84:
- movs r0, 0x1
-_08141F86:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8141E64
-
- thumb_func_start sub_8141F90
-sub_8141F90: @ 8141F90
- push {r4,lr}
- bl sub_8141E64
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _08141FB6
- ldr r0, _08141FBC @ =sub_8141FF8
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08141FC0 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0x8]
-_08141FB6:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08141FBC: .4byte sub_8141FF8
-_08141FC0: .4byte gTasks
- thumb_func_end sub_8141F90
-
- thumb_func_start sub_8141FC4
-sub_8141FC4: @ 8141FC4
- push {lr}
- bl sub_8141E64
- lsls r0, 24
- cmp r0, 0
- bne _08141FEA
- ldr r0, _08141FF0 @ =sub_8141FF8
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08141FF4 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0x1
- strh r0, [r1, 0x8]
-_08141FEA:
- pop {r0}
- bx r0
- .align 2, 0
-_08141FF0: .4byte sub_8141FF8
-_08141FF4: .4byte gTasks
- thumb_func_end sub_8141FC4
-
- thumb_func_start sub_8141FF8
-sub_8141FF8: @ 8141FF8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r0, _081420C8 @ =0x0201c000
- mov r9, r0
- ldr r1, _081420CC @ =gTasks
- mov r2, r8
- lsls r0, r2, 2
- add r0, r8
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0xC]
- movs r7, 0
- ldr r4, _081420D0 @ =0xfffffe00
- mov r10, r4
-_08142024:
- movs r0, 0x64
- adds r1, r7, 0
- muls r1, r0
- ldr r0, _081420D4 @ =gPlayerParty
- adds r6, r1, r0
- adds r0, r6, 0
- movs r1, 0xB
- bl GetMonData
- adds r3, r0, 0
- cmp r3, 0
- beq _081420DC
- adds r0, r6, 0
- movs r1, 0x41
- bl GetMonData
- lsls r4, r7, 2
- adds r4, r7
- lsls r4, 2
- mov r1, r9
- adds r5, r1, r4
- ldr r2, _081420D8 @ =0x000001ff
- adds r1, r2, 0
- ands r0, r1
- ldrh r1, [r5, 0x8]
- mov r2, r10
- ands r1, r2
- orrs r1, r0
- strh r1, [r5, 0x8]
- adds r0, r6, 0
- movs r1, 0x1
- bl GetMonData
- str r0, [r5]
- adds r0, r6, 0
- movs r1, 0
- bl GetMonData
- mov r1, r9
- adds r1, 0x4
- adds r1, r4
- str r0, [r1]
- adds r0, r6, 0
- movs r1, 0x38
- bl GetMonData
- lsls r0, 1
- ldrb r2, [r5, 0x9]
- movs r1, 0x1
- ands r1, r2
- orrs r1, r0
- strb r1, [r5, 0x9]
- adds r0, r6, 0
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- movs r2, 0
- mov r6, r8
- lsls r5, r6, 2
- mov r3, r9
- adds r3, 0xA
-_081420A0:
- adds r1, r2, r4
- adds r1, r3, r1
- mov r6, sp
- adds r0, r6, r2
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x9
- bls _081420A0
- ldr r0, _081420CC @ =gTasks
- mov r2, r8
- adds r1, r5, r2
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0xC]
- adds r0, 0x1
- strh r0, [r1, 0xC]
- b _08142108
- .align 2, 0
-_081420C8: .4byte 0x0201c000
-_081420CC: .4byte gTasks
-_081420D0: .4byte 0xfffffe00
-_081420D4: .4byte gPlayerParty
-_081420D8: .4byte 0x000001ff
-_081420DC:
- lsls r1, r7, 2
- adds r1, r7
- lsls r1, 2
- mov r4, r9
- adds r2, r4, r1
- ldrh r0, [r2, 0x8]
- mov r6, r10
- ands r0, r6
- strh r0, [r2, 0x8]
- str r3, [r2]
- mov r0, r9
- adds r0, 0x4
- adds r0, r1
- str r3, [r0]
- ldrb r1, [r2, 0x9]
- movs r0, 0x1
- ands r0, r1
- strb r0, [r2, 0x9]
- movs r0, 0xFF
- strb r0, [r2, 0xA]
- mov r0, r8
- lsls r5, r0, 2
-_08142108:
- adds r0, r7, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
- cmp r7, 0x5
- bls _08142024
- ldr r0, _08142158 @ =gUnknown_0203931C
- movs r3, 0
- str r3, [r0]
- ldr r4, _0814215C @ =gTasks
- mov r2, r8
- adds r1, r5, r2
- lsls r1, 3
- adds r2, r1, r4
- strh r3, [r2, 0xA]
- movs r0, 0xFF
- strh r0, [r2, 0x10]
- movs r7, 0
- adds r3, r4, 0
- adds r3, 0x8
- movs r2, 0xFF
-_08142130:
- adds r0, r7, 0x5
- lsls r0, 1
- adds r0, r1
- adds r0, r3
- strh r2, [r0]
- adds r0, r7, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
- cmp r7, 0x5
- bls _08142130
- mov r6, r8
- adds r0, r5, r6
- lsls r0, 3
- adds r1, r0, r4
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0
- beq _08142164
- ldr r0, _08142160 @ =sub_81422E8
- b _08142166
- .align 2, 0
-_08142158: .4byte gUnknown_0203931C
-_0814215C: .4byte gTasks
-_08142160: .4byte sub_81422E8
-_08142164:
- ldr r0, _08142178 @ =sub_814217C
-_08142166:
- str r0, [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
-_08142178: .4byte sub_814217C
- thumb_func_end sub_8141FF8
-
- thumb_func_start sub_814217C
-sub_814217C: @ 814217C
- 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
- ldr r0, _081421C4 @ =0x0201c000
- mov r9, r0
- movs r7, 0x80
- lsls r7, 6
- add r7, r9
- ldr r0, _081421C8 @ =gUnknown_02039324
- ldrb r0, [r0]
- cmp r0, 0
- bne _081421D4
- movs r4, 0
- mov r0, r8
- lsls r0, 2
- mov r10, r0
- ldr r5, _081421CC @ =0xfffe4000
- add r5, r9
- movs r3, 0xF0
- lsls r3, 9
- movs r2, 0
- ldr r1, _081421D0 @ =0x00001fff
-_081421B2:
- adds r0, r4, r3
- adds r0, r5
- strb r2, [r0]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, r1
- bls _081421B2
- b _081421E0
- .align 2, 0
-_081421C4: .4byte 0x0201c000
-_081421C8: .4byte gUnknown_02039324
-_081421CC: .4byte 0xfffe4000
-_081421D0: .4byte 0x00001fff
-_081421D4:
- movs r0, 0x3
- bl sub_8125EC8
- mov r0, r8
- lsls r0, 2
- mov r10, r0
-_081421E0:
- movs r4, 0
- ldrh r1, [r7, 0x8]
- ldr r2, _081421E8 @ =0x000001ff
- b _081421FA
- .align 2, 0
-_081421E8: .4byte 0x000001ff
-_081421EC:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- adds r7, 0x78
- cmp r4, 0x31
- bhi _08142206
- ldrh r1, [r7, 0x8]
-_081421FA:
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _081421EC
- cmp r4, 0x31
- bls _08142228
-_08142206:
- ldr r5, _08142264 @ =0x0201e000
- adds r6, r5, 0
- adds r5, 0x78
- movs r4, 0
- subs r7, 0x78
-_08142210:
- adds r0, r6, 0
- adds r1, r5, 0
- movs r2, 0x78
- bl memcpy
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- adds r6, 0x78
- adds r5, 0x78
- cmp r4, 0x30
- bls _08142210
-_08142228:
- adds r0, r7, 0
- mov r1, r9
- movs r2, 0x78
- bl memcpy
- movs r0, 0x2
- movs r1, 0xE
- movs r2, 0x1B
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _08142268 @ =gMenuText_HOFSaving
- movs r1, 0x3
- movs r2, 0xF
- bl MenuPrint
- ldr r1, _0814226C @ =gTasks
- mov r0, r10
- add r0, r8
- lsls r0, 3
- adds r0, r1
- ldr r1, _08142270 @ =sub_8142274
- str r1, [r0]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08142264: .4byte 0x0201e000
-_08142268: .4byte gMenuText_HOFSaving
-_0814226C: .4byte gTasks
-_08142270: .4byte sub_8142274
- thumb_func_end sub_814217C
-
- thumb_func_start sub_8142274
-sub_8142274: @ 8142274
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _081422A8 @ =gGameContinueCallback
- ldr r0, _081422AC @ =sub_8141FC4
- str r0, [r1]
- movs r0, 0x3
- bl TrySavingData
- movs r0, 0x37
- bl PlaySE
- ldr r1, _081422B0 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _081422B4 @ =sub_81422B8
- str r1, [r0]
- movs r1, 0x20
- strh r1, [r0, 0xE]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081422A8: .4byte gGameContinueCallback
-_081422AC: .4byte sub_8141FC4
-_081422B0: .4byte gTasks
-_081422B4: .4byte sub_81422B8
- thumb_func_end sub_8142274
-
- thumb_func_start sub_81422B8
-sub_81422B8: @ 81422B8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _081422D8 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrh r2, [r1, 0xE]
- movs r3, 0xE
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _081422DC
- subs r0, r2, 0x1
- strh r0, [r1, 0xE]
- b _081422E0
- .align 2, 0
-_081422D8: .4byte gTasks
-_081422DC:
- ldr r0, _081422E4 @ =sub_81422E8
- str r0, [r1]
-_081422E0:
- pop {r0}
- bx r0
- .align 2, 0
-_081422E4: .4byte sub_81422E8
- thumb_func_end sub_81422B8
-
- thumb_func_start sub_81422E8
-sub_81422E8: @ 81422E8
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r5, _08142314 @ =gWindowConfig_81E7198
- adds r0, r5, 0
- bl SetUpWindowConfig
- adds r0, r5, 0
- bl InitMenuWindow
- ldr r1, _08142318 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0814231C @ =sub_8142320
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08142314: .4byte gWindowConfig_81E7198
-_08142318: .4byte gTasks
-_0814231C: .4byte sub_8142320
- thumb_func_end sub_81422E8
-
- thumb_func_start sub_8142320
-sub_8142320: @ 8142320
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r2, _08142350 @ =0x0201c000
- ldr r0, _08142354 @ =gTasks
- lsls r1, r7, 2
- adds r1, r7
- lsls r1, 3
- adds r1, r0
- ldrh r6, [r1, 0xA]
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 2
- adds r4, r0, r2
- movs r2, 0xC
- ldrsh r0, [r1, r2]
- cmp r0, 0x3
- ble _0814235C
- ldr r1, _08142358 @ =gUnknown_0840B534
- b _0814235E
- .align 2, 0
-_08142350: .4byte 0x0201c000
-_08142354: .4byte gTasks
-_08142358: .4byte gUnknown_0840B534
-_0814235C:
- ldr r1, _081423F0 @ =gUnknown_0840B564
-_0814235E:
- lsls r2, r6, 3
- adds r0, r2, r1
- ldrh r5, [r0]
- adds r0, r1, 0x2
- adds r0, r2, r0
- ldrh r3, [r0]
- adds r0, r1, 0x4
- adds r0, r2, r0
- ldrh r0, [r0]
- mov r9, r0
- adds r1, 0x6
- adds r2, r1
- ldrh r2, [r2]
- mov r8, r2
- ldrh r0, [r4, 0x8]
- lsls r0, 23
- lsrs r0, 23
- lsls r1, r5, 16
- asrs r1, 16
- lsls r2, r3, 16
- asrs r2, 16
- ldr r3, [r4]
- str r3, [sp]
- ldr r3, [r4, 0x4]
- str r3, [sp, 0x4]
- adds r3, r6, 0
- bl sub_81436BC
- lsls r0, 24
- lsrs r0, 24
- ldr r3, _081423F4 @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r2, r1, r3
- movs r4, 0
- mov r5, r9
- strh r5, [r2, 0x30]
- mov r5, r8
- strh r5, [r2, 0x32]
- strh r4, [r2, 0x2E]
- adds r3, 0x1C
- adds r1, r3
- ldr r2, _081423F8 @ =sub_81435DC
- str r2, [r1]
- ldr r5, _081423FC @ =gTasks
- adds r1, r6, 0x5
- lsls r1, 1
- lsls r4, r7, 2
- adds r4, r7
- lsls r4, 3
- adds r1, r4
- adds r2, r5, 0
- adds r2, 0x8
- adds r1, r2
- strh r0, [r1]
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- adds r4, r5
- ldr r0, _08142400 @ =sub_8142404
- str r0, [r4]
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081423F0: .4byte gUnknown_0840B564
-_081423F4: .4byte gSprites
-_081423F8: .4byte sub_81435DC
-_081423FC: .4byte gTasks
-_08142400: .4byte sub_8142404
- thumb_func_end sub_8142320
-
- thumb_func_start sub_8142404
-sub_8142404: @ 8142404
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r4, _08142470 @ =0x0201c000
- ldr r3, _08142474 @ =gTasks
- lsls r2, r0, 2
- adds r2, r0
- lsls r2, 3
- adds r5, r2, r3
- ldrh r1, [r5, 0xA]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r6, r0, r4
- ldr r4, _08142478 @ =gSprites
- adds r1, 0x5
- lsls r1, 1
- adds r1, r2
- adds r3, 0x8
- adds r1, r3
- movs r0, 0
- ldrsh r1, [r1, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x2E
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _0814246A
- ldrh r2, [r6, 0x8]
- ldr r0, _0814247C @ =0x000001ff
- ands r0, r2
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _08142458
- lsls r0, r2, 23
- lsrs r0, 23
- movs r1, 0
- bl PlayCry1
-_08142458:
- adds r0, r6, 0
- movs r1, 0
- movs r2, 0xE
- bl sub_8143088
- movs r0, 0x78
- strh r0, [r5, 0xE]
- ldr r0, _08142480 @ =sub_8142484
- str r0, [r5]
-_0814246A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08142470: .4byte 0x0201c000
-_08142474: .4byte gTasks
-_08142478: .4byte gSprites
-_0814247C: .4byte 0x000001ff
-_08142480: .4byte sub_8142484
- thumb_func_end sub_8142404
-
- thumb_func_start sub_8142484
-sub_8142484: @ 8142484
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r2, _081424BC @ =0x0201c000
- ldr r1, _081424C0 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r6, r0, 3
- adds r4, r6, r1
- ldrh r3, [r4, 0xA]
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 2
- adds r0, r2
- mov r9, r0
- ldrh r2, [r4, 0xE]
- movs r7, 0xE
- ldrsh r0, [r4, r7]
- mov r12, r1
- cmp r0, 0
- beq _081424C4
- subs r0, r2, 0x1
- strh r0, [r4, 0xE]
- b _0814255C
- .align 2, 0
-_081424BC: .4byte 0x0201c000
-_081424C0: .4byte gTasks
-_081424C4:
- ldr r2, _0814253C @ =gUnknown_0203931C
- ldr r0, _08142540 @ =gSprites
- mov r8, r0
- adds r0, r3, 0x5
- lsls r0, 1
- adds r0, r6
- mov r1, r12
- adds r1, 0x8
- adds r6, r0, r1
- movs r7, 0
- ldrsh r1, [r6, r7]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- ldrb r0, [r0, 0x5]
- lsrs r0, 4
- movs r1, 0x80
- lsls r1, 9
- lsls r1, r0
- ldr r3, [r2]
- orrs r3, r1
- str r3, [r2]
- ldrh r2, [r4, 0xA]
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bgt _08142550
- mov r7, r9
- ldrh r1, [r7, 0x1C]
- ldr r0, _08142544 @ =0x000001ff
- ands r0, r1
- cmp r0, 0
- beq _08142550
- adds r0, r2, 0x1
- strh r0, [r4, 0xA]
- ldr r0, _08142548 @ =0x0000735f
- str r0, [sp]
- adds r0, r3, 0
- movs r1, 0
- movs r2, 0xC
- movs r3, 0xC
- bl BeginNormalPaletteFade
- movs r0, 0
- ldrsh r1, [r6, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- ldrb r2, [r0, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0, 0x5]
- ldr r0, _0814254C @ =sub_8142320
- str r0, [r4]
- b _0814255C
- .align 2, 0
-_0814253C: .4byte gUnknown_0203931C
-_08142540: .4byte gSprites
-_08142544: .4byte 0x000001ff
-_08142548: .4byte 0x0000735f
-_0814254C: .4byte sub_8142320
-_08142550:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- add r0, r12
- ldr r1, _0814256C @ =sub_8142570
- str r1, [r0]
-_0814255C:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0814256C: .4byte sub_8142570
- thumb_func_end sub_8142484
-
- thumb_func_start sub_8142570
-sub_8142570: @ 8142570
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08142604 @ =0xffff0000
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0
- bl BeginNormalPaletteFade
- movs r3, 0
- lsls r1, r4, 2
- adds r0, r1, r4
- lsls r5, r0, 3
- ldr r0, _08142608 @ =gTasks + 0x8
- mov r12, r0
- mov r8, r1
- ldr r6, _0814260C @ =gSprites
- movs r7, 0xD
- negs r7, r7
-_0814259E:
- adds r0, r3, 0x5
- lsls r0, 1
- adds r0, r5
- mov r2, r12
- adds r1, r0, r2
- movs r2, 0
- ldrsh r0, [r1, r2]
- cmp r0, 0xFF
- beq _081425C0
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- ldrb r2, [r1, 0x5]
- adds r0, r7, 0
- ands r0, r2
- strb r0, [r1, 0x5]
-_081425C0:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x5
- bls _0814259E
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- movs r0, 0
- movs r1, 0xF
- bl sub_8143068
- movs r0, 0x69
- bl PlaySE
- ldr r1, _08142610 @ =gTasks
- mov r2, r8
- adds r0, r2, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0xC8
- lsls r1, 1
- strh r1, [r0, 0xE]
- ldr r1, _08142614 @ =sub_8142618
- str r1, [r0]
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08142604: .4byte 0xffff0000
-_08142608: .4byte gTasks + 0x8
-_0814260C: .4byte gSprites
-_08142610: .4byte gTasks
-_08142614: .4byte sub_8142618
- thumb_func_end sub_8142570
-
- thumb_func_start sub_8142618
-sub_8142618: @ 8142618
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r7, _08142658 @ =gTasks
- lsls r4, r6, 2
- adds r0, r4, r6
- lsls r5, r0, 3
- adds r1, r5, r7
- ldrh r2, [r1, 0xE]
- movs r3, 0xE
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _0814265C
- subs r2, 0x1
- strh r2, [r1, 0xE]
- movs r0, 0x3
- ands r0, r2
- cmp r0, 0
- bne _081426D2
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, 0x6E
- ble _081426D2
- bl sub_81438C4
- b _081426D2
- .align 2, 0
-_08142658: .4byte gTasks
-_0814265C:
- movs r3, 0
- mov r9, r4
- ldr r0, _081426E4 @ =gUnknown_0203931C
- mov r10, r0
- adds r4, r5, 0
- adds r7, 0x8
- mov r8, r7
- ldr r7, _081426E8 @ =gSprites
- movs r1, 0xD
- negs r1, r1
- mov r12, r1
- movs r5, 0x4
-_08142674:
- adds r0, r3, 0x5
- lsls r0, 1
- adds r0, r4
- mov r2, r8
- adds r1, r0, r2
- movs r2, 0
- ldrsh r0, [r1, r2]
- cmp r0, 0xFF
- beq _08142698
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r7
- ldrb r2, [r1, 0x5]
- mov r0, r12
- ands r0, r2
- orrs r0, r5
- strb r0, [r1, 0x5]
-_08142698:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x5
- bls _08142674
- mov r3, r10
- ldr r0, [r3]
- ldr r1, _081426EC @ =0x0000735f
- str r1, [sp]
- movs r1, 0
- movs r2, 0xC
- movs r3, 0xC
- bl BeginNormalPaletteFade
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- ldr r1, _081426F0 @ =gTasks
- mov r2, r9
- adds r0, r2, r6
- lsls r0, 3
- adds r0, r1
- movs r1, 0x7
- strh r1, [r0, 0xE]
- ldr r1, _081426F4 @ =sub_81426F8
- str r1, [r0]
-_081426D2:
- 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
-_081426E4: .4byte gUnknown_0203931C
-_081426E8: .4byte gSprites
-_081426EC: .4byte 0x0000735f
-_081426F0: .4byte gTasks
-_081426F4: .4byte sub_81426F8
- thumb_func_end sub_8142618
-
- thumb_func_start sub_81426F8
-sub_81426F8: @ 81426F8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08142718 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r2, r1, r2
- ldrh r1, [r2, 0xE]
- movs r3, 0xE
- ldrsh r0, [r2, r3]
- cmp r0, 0xF
- ble _08142720
- ldr r0, _0814271C @ =sub_8142738
- str r0, [r2]
- b _0814272E
- .align 2, 0
-_08142718: .4byte gTasks
-_0814271C: .4byte sub_8142738
-_08142720:
- adds r0, r1, 0x1
- strh r0, [r2, 0xE]
- ldr r1, _08142734 @ =REG_BLDALPHA
- movs r3, 0xE
- ldrsh r0, [r2, r3]
- lsls r0, 8
- strh r0, [r1]
-_0814272E:
- pop {r0}
- bx r0
- .align 2, 0
-_08142734: .4byte REG_BLDALPHA
- thumb_func_end sub_81426F8
-
- thumb_func_start sub_8142738
-sub_8142738: @ 8142738
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- movs r1, 0x80
- lsls r1, 19
- movs r2, 0xCA
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- ldr r4, _08142784 @ =gWindowConfig_81E71B4
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- ldr r0, _08142788 @ =gSaveBlock2
- ldrb r0, [r0, 0x8]
- movs r1, 0x78
- movs r2, 0x48
- movs r3, 0x6
- bl sub_81437A4
- ldr r2, _0814278C @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r2
- strh r0, [r1, 0x10]
- movs r0, 0x78
- strh r0, [r1, 0xE]
- ldr r0, _08142790 @ =sub_8142794
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08142784: .4byte gWindowConfig_81E71B4
-_08142788: .4byte gSaveBlock2
-_0814278C: .4byte gTasks
-_08142790: .4byte sub_8142794
- thumb_func_end sub_8142738
-
- thumb_func_start sub_8142794
-sub_8142794: @ 8142794
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _081427B4 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
- ldrh r1, [r4, 0xE]
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _081427B8
- subs r0, r1, 0x1
- strh r0, [r4, 0xE]
- b _0814280A
- .align 2, 0
-_081427B4: .4byte gTasks
-_081427B8:
- ldr r2, _081427D8 @ =gSprites
- movs r3, 0x10
- ldrsh r1, [r4, r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r2
- ldrh r2, [r1, 0x20]
- movs r3, 0x20
- ldrsh r0, [r1, r3]
- cmp r0, 0xA0
- beq _081427DC
- adds r0, r2, 0x1
- strh r0, [r1, 0x20]
- b _0814280A
- .align 2, 0
-_081427D8: .4byte gSprites
-_081427DC:
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0xF
- movs r3, 0x9
- bl MenuDrawTextWindow
- movs r0, 0x1
- movs r1, 0x2
- bl sub_8143300
- movs r0, 0x2
- movs r1, 0xE
- movs r2, 0x1B
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _08142810 @ =gMenuText_HOFCongratulations
- movs r1, 0x4
- movs r2, 0xF
- bl MenuPrint
- ldr r0, _08142814 @ =sub_8142818
- str r0, [r4]
-_0814280A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08142810: .4byte gMenuText_HOFCongratulations
-_08142814: .4byte sub_8142818
- thumb_func_end sub_8142794
-
- thumb_func_start sub_8142818
-sub_8142818: @ 8142818
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08142844 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0814283E
- movs r0, 0x4
- bl FadeOutBGM
- ldr r0, _08142848 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _0814284C @ =sub_8142850
- str r0, [r1]
-_0814283E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08142844: .4byte gMain
-_08142848: .4byte gTasks
-_0814284C: .4byte sub_8142850
- thumb_func_end sub_8142818
-
- thumb_func_start sub_8142850
-sub_8142850: @ 8142850
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _08142890 @ =gPlttBufferFaded
- ldr r1, _08142894 @ =gPlttBufferUnfaded
- movs r2, 0x80
- lsls r2, 2
- bl CpuSet
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r1, 0x8
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _08142898 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0814289C @ =sub_81428A0
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08142890: .4byte gPlttBufferFaded
-_08142894: .4byte gPlttBufferUnfaded
-_08142898: .4byte gTasks
-_0814289C: .4byte sub_81428A0
- thumb_func_end sub_8142850
-
- thumb_func_start sub_81428A0
-sub_81428A0: @ 81428A0
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _081428C4 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _081428BE
- adds r0, r2, 0
- bl DestroyTask
- ldr r0, _081428C8 @ =sub_81439D0
- bl SetMainCallback2
-_081428BE:
- pop {r0}
- bx r0
- .align 2, 0
-_081428C4: .4byte gPaletteFade
-_081428C8: .4byte sub_81439D0
- thumb_func_end sub_81428A0
-
- thumb_func_start sub_81428CC
-sub_81428CC: @ 81428CC
- push {r4,r5,lr}
- ldr r0, _081428E4 @ =gMain
- ldr r1, _081428E8 @ =0x0000043c
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x5
- bhi _08142908
- lsls r0, 2
- ldr r1, _081428EC @ =_081428F0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081428E4: .4byte gMain
-_081428E8: .4byte 0x0000043c
-_081428EC: .4byte _081428F0
- .align 2, 0
-_081428F0:
- .4byte _08142908
- .4byte _08142928
- .4byte _0814293C
- .4byte _08142980
- .4byte _081429C0
- .4byte _081429EC
-_08142908:
- movs r0, 0
- bl SetVBlankCallback
- bl sub_81433E0
- ldr r0, _08142920 @ =gMain
- ldr r2, _08142924 @ =0x0000043c
- adds r0, r2
- movs r1, 0x1
- strb r1, [r0]
- b _08142A12
- .align 2, 0
-_08142920: .4byte gMain
-_08142924: .4byte 0x0000043c
-_08142928:
- bl sub_8143570
- ldr r1, _08142934 @ =gMain
- ldr r3, _08142938 @ =0x0000043c
- adds r1, r3
- b _081429DC
- .align 2, 0
-_08142934: .4byte gMain
-_08142938: .4byte 0x0000043c
-_0814293C:
- ldr r0, _08142968 @ =sub_8141E38
- bl SetVBlankCallback
- ldr r3, _0814296C @ =0x04000208
- ldrh r2, [r3]
- movs r0, 0
- strh r0, [r3]
- ldr r4, _08142970 @ =0x04000200
- ldrh r0, [r4]
- movs r1, 0x1
- orrs r0, r1
- strh r0, [r4]
- strh r2, [r3]
- ldr r2, _08142974 @ =REG_DISPSTAT
- ldrh r0, [r2]
- movs r1, 0x8
- orrs r0, r1
- strh r0, [r2]
- ldr r1, _08142978 @ =gMain
- ldr r4, _0814297C @ =0x0000043c
- adds r1, r4
- b _081429DC
- .align 2, 0
-_08142968: .4byte sub_8141E38
-_0814296C: .4byte 0x04000208
-_08142970: .4byte 0x04000200
-_08142974: .4byte REG_DISPSTAT
-_08142978: .4byte gMain
-_0814297C: .4byte 0x0000043c
-_08142980:
- ldr r0, _081429AC @ =REG_BLDCNT
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- bl sub_81435B8
- ldr r0, _081429B0 @ =0x0201c000
- adds r2, r0, 0
- ldr r1, _081429B4 @ =gUnknown_0840B57C
- ldm r1!, {r3-r5}
- stm r2!, {r3-r5}
- ldm r1!, {r3,r5}
- stm r2!, {r3,r5}
- bl sub_80C5CD4
- ldr r1, _081429B8 @ =gMain
- ldr r4, _081429BC @ =0x0000043c
- adds r1, r4
- b _081429DC
- .align 2, 0
-_081429AC: .4byte REG_BLDCNT
-_081429B0: .4byte 0x0201c000
-_081429B4: .4byte gUnknown_0840B57C
-_081429B8: .4byte gMain
-_081429BC: .4byte 0x0000043c
-_081429C0:
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- bl sub_80C5DCC
- lsls r0, 24
- cmp r0, 0
- beq _08142A12
- ldr r1, _081429E4 @ =gMain
- ldr r5, _081429E8 @ =0x0000043c
- adds r1, r5
-_081429DC:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08142A12
- .align 2, 0
-_081429E4: .4byte gMain
-_081429E8: .4byte 0x0000043c
-_081429EC:
- ldr r1, _08142A18 @ =REG_BLDCNT
- ldr r2, _08142A1C @ =0x00003f42
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- movs r3, 0xE2
- lsls r3, 3
- adds r0, r3, 0
- strh r0, [r1]
- adds r1, 0x2
- movs r0, 0
- strh r0, [r1]
- ldr r0, _08142A20 @ =sub_8142A28
- movs r1, 0
- bl CreateTask
- ldr r0, _08142A24 @ =sub_8141E4C
- bl SetMainCallback2
-_08142A12:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08142A18: .4byte REG_BLDCNT
-_08142A1C: .4byte 0x00003f42
-_08142A20: .4byte sub_8142A28
-_08142A24: .4byte sub_8141E4C
- thumb_func_end sub_81428CC
-
- thumb_func_start sub_8142A28
-sub_8142A28: @ 8142A28
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r0, 0x3
- bl sub_8125EC8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08142A54
- ldr r0, _08142A4C @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, _08142A50 @ =sub_8142FEC
- str r0, [r1]
- b _08142AEA
- .align 2, 0
-_08142A4C: .4byte gTasks
-_08142A50: .4byte sub_8142FEC
-_08142A54:
- ldr r2, _08142A8C @ =0x0201e000
- movs r3, 0
- ldrh r1, [r2, 0x8]
- ldr r4, _08142A90 @ =0x000001ff
- adds r0, r4, 0
- ands r0, r1
- ldr r7, _08142A94 @ =gTasks
- lsls r6, r5, 2
- cmp r0, 0
- beq _08142A7E
-_08142A68:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- adds r2, 0x78
- cmp r3, 0x31
- bhi _08142A98
- ldrh r1, [r2, 0x8]
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- bne _08142A68
-_08142A7E:
- cmp r3, 0x31
- bhi _08142A98
- adds r0, r6, r5
- lsls r0, 3
- adds r0, r7
- subs r1, r3, 0x1
- b _08142AA0
- .align 2, 0
-_08142A8C: .4byte 0x0201e000
-_08142A90: .4byte 0x000001ff
-_08142A94: .4byte gTasks
-_08142A98:
- adds r0, r6, r5
- lsls r0, 3
- adds r0, r7
- movs r1, 0x31
-_08142AA0:
- strh r1, [r0, 0x8]
- movs r0, 0xA
- bl GetGameStat
- ldr r2, _08142AF0 @ =gTasks
- adds r1, r6, r5
- lsls r1, 3
- adds r1, r2
- strh r0, [r1, 0xA]
- movs r3, 0
- ldr r7, _08142AF4 @ =0x0600381a
- ldr r4, _08142AF8 @ =0x0600385a
-_08142AB8:
- lsls r1, r3, 1
- adds r2, r1, r7
- adds r0, r3, 0x3
- strh r0, [r2]
- adds r1, r4
- adds r0, 0x11
- strh r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x10
- bls _08142AB8
- ldr r4, _08142AFC @ =gWindowConfig_81E7198
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- ldr r1, _08142AF0 @ =gTasks
- adds r0, r6, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _08142B00 @ =sub_8142B04
- str r1, [r0]
-_08142AEA:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08142AF0: .4byte gTasks
-_08142AF4: .4byte 0x0600381a
-_08142AF8: .4byte 0x0600385a
-_08142AFC: .4byte gWindowConfig_81E7198
-_08142B00: .4byte sub_8142B04
- thumb_func_end sub_8142A28
-
- thumb_func_start sub_8142B04
-sub_8142B04: @ 8142B04
- 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 r8, r0
- ldr r3, _08142BB8 @ =0x0201e000
- movs r5, 0
- ldr r1, _08142BBC @ =gTasks
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- adds r0, r1
- movs r2, 0x8
- ldrsh r0, [r0, r2]
- adds r6, r1, 0
- ldr r2, _08142BC0 @ =gUnknown_0203931C
- cmp r5, r0
- bge _08142B3E
- adds r1, r0, 0
-_08142B32:
- adds r3, 0x78
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, r1
- blt _08142B32
-_08142B3E:
- adds r4, r3, 0
- movs r0, 0
- str r0, [r2]
- mov r5, r8
- lsls r2, r5, 2
- adds r1, r2, r5
- lsls r1, 3
- adds r1, r6
- strh r0, [r1, 0xC]
- strh r0, [r1, 0x10]
- movs r5, 0
- str r2, [sp, 0xC]
- ldr r6, _08142BC4 @ =0x000001ff
- adds r2, r1, 0
-_08142B5A:
- ldrh r1, [r4, 0x8]
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0
- beq _08142B6A
- ldrh r0, [r2, 0x10]
- adds r0, 0x1
- strh r0, [r2, 0x10]
-_08142B6A:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- adds r4, 0x14
- cmp r5, 0x5
- bls _08142B5A
- adds r4, r3, 0
- movs r5, 0
- ldr r1, _08142BBC @ =gTasks
- ldr r0, [sp, 0xC]
- add r0, r8
- lsls r7, r0, 3
- adds r6, r7, r1
- str r6, [sp, 0x8]
- adds r1, 0x8
- mov r9, r1
- ldr r0, _08142BC8 @ =gUnknown_0840B564
- mov r10, r0
-_08142B8E:
- ldrh r1, [r4, 0x8]
- ldr r2, _08142BC4 @ =0x000001ff
- adds r0, r2, 0
- ands r0, r1
- adds r6, r1, 0
- cmp r0, 0
- beq _08142C30
- ldr r1, [sp, 0x8]
- movs r2, 0x10
- ldrsh r0, [r1, r2]
- cmp r0, 0x3
- ble _08142BD4
- lsls r1, r5, 3
- ldr r0, _08142BCC @ =gUnknown_0840B534
- adds r0, 0x4
- adds r0, r1, r0
- ldrh r3, [r0]
- ldr r0, _08142BD0 @ =gUnknown_0840B534 + 0x6
- adds r1, r0
- b _08142BE2
- .align 2, 0
-_08142BB8: .4byte 0x0201e000
-_08142BBC: .4byte gTasks
-_08142BC0: .4byte gUnknown_0203931C
-_08142BC4: .4byte 0x000001ff
-_08142BC8: .4byte gUnknown_0840B564
-_08142BCC: .4byte gUnknown_0840B534
-_08142BD0: .4byte gUnknown_0840B534 + 0x6
-_08142BD4:
- lsls r1, r5, 3
- mov r0, r10
- adds r0, 0x4
- adds r0, r1, r0
- ldrh r3, [r0]
- ldr r2, _08142C28 @ =gUnknown_0840B564 + 0x6
- adds r1, r2
-_08142BE2:
- ldrh r2, [r1]
- lsls r0, r6, 23
- lsrs r0, 23
- lsls r1, r3, 16
- asrs r1, 16
- lsls r2, 16
- asrs r2, 16
- ldr r3, [r4]
- str r3, [sp]
- ldr r3, [r4, 0x4]
- str r3, [sp, 0x4]
- adds r3, r5, 0
- bl sub_81436BC
- lsls r0, 16
- lsrs r0, 16
- ldr r2, _08142C2C @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r3, [r1, 0x5]
- movs r6, 0xD
- negs r6, r6
- adds r2, r6, 0
- ands r3, r2
- movs r2, 0x4
- orrs r3, r2
- strb r3, [r1, 0x5]
- adds r1, r5, 0x5
- lsls r1, 1
- adds r1, r7
- add r1, r9
- strh r0, [r1]
- b _08142C3C
- .align 2, 0
-_08142C28: .4byte gUnknown_0840B564 + 0x6
-_08142C2C: .4byte gSprites
-_08142C30:
- adds r0, r5, 0x5
- lsls r0, 1
- adds r0, r7
- add r0, r9
- movs r1, 0xFF
- strh r1, [r0]
-_08142C3C:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- adds r4, 0x14
- cmp r5, 0x5
- bls _08142B8E
- ldr r0, _08142CB0 @ =0xffff0000
- ldr r2, _08142CB4 @ =0x0000735f
- movs r1, 0xC
- bl BlendPalettes
- ldr r3, _08142CB8 @ =gStringVar1
- ldr r1, _08142CBC @ =gMenuText_HOFNumber
- adds r0, r3, 0
- bl StringCopy
- adds r3, r0, 0
- movs r5, 0xFC
- strb r5, [r3]
- movs r0, 0x14
- strb r0, [r3, 0x1]
- movs r0, 0x6
- strb r0, [r3, 0x2]
- adds r3, 0x3
- ldr r0, _08142CC0 @ =gTasks
- ldr r4, [sp, 0xC]
- add r4, r8
- lsls r4, 3
- adds r4, r0
- movs r0, 0xA
- ldrsh r1, [r4, r0]
- adds r0, r3, 0
- bl ConvertIntToDecimalString
- adds r3, r0, 0
- strb r5, [r3]
- movs r0, 0x13
- strb r0, [r3, 0x1]
- movs r0, 0xF0
- strb r0, [r3, 0x2]
- movs r0, 0xFF
- strb r0, [r3, 0x3]
- ldr r0, _08142CB8 @ =gStringVar1
- movs r1, 0
- movs r2, 0
- bl MenuPrint
- ldr r0, _08142CC4 @ =sub_8142CC8
- str r0, [r4]
- 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
-_08142CB0: .4byte 0xffff0000
-_08142CB4: .4byte 0x0000735f
-_08142CB8: .4byte gStringVar1
-_08142CBC: .4byte gMenuText_HOFNumber
-_08142CC0: .4byte gTasks
-_08142CC4: .4byte sub_8142CC8
- thumb_func_end sub_8142B04
-
- thumb_func_start sub_8142CC8
-sub_8142CC8: @ 8142CC8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08142DD0 @ =0x0201e000
- mov r8, r0
- movs r3, 0
- ldr r1, _08142DD4 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r2, 0x8
- ldrsh r0, [r0, r2]
- cmp r3, r0
- bge _08142CFE
- adds r1, r0, 0
-_08142CF0:
- movs r0, 0x78
- add r8, r0
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, r1
- blt _08142CF0
-_08142CFE:
- movs r3, 0
- lsls r6, r4, 2
- adds r0, r6, r4
- lsls r5, r0, 3
- ldr r1, _08142DD8 @ =gTasks + 0x8
- mov r10, r1
- ldr r2, _08142DDC @ =gSprites
- mov r12, r2
- movs r0, 0xD
- negs r0, r0
- mov r9, r0
- movs r7, 0x4
-_08142D16:
- adds r0, r3, 0x5
- lsls r0, 1
- adds r0, r5
- add r0, r10
- ldrh r1, [r0]
- cmp r1, 0xFF
- beq _08142D36
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r12
- ldrb r2, [r0, 0x5]
- mov r1, r9
- ands r1, r2
- orrs r1, r7
- strb r1, [r0, 0x5]
-_08142D36:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x5
- bls _08142D16
- adds r1, r6, r4
- lsls r1, 3
- ldr r2, _08142DD4 @ =gTasks
- adds r5, r1, r2
- movs r2, 0xC
- ldrsh r0, [r5, r2]
- adds r0, 0x5
- lsls r0, 1
- adds r0, r1
- ldr r1, _08142DD4 @ =gTasks
- adds r1, 0x8
- adds r0, r1
- ldrh r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08142DDC @ =gSprites
- adds r0, r1
- ldrb r2, [r0, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- strb r1, [r0, 0x5]
- lsrs r1, 4
- movs r0, 0x80
- lsls r0, 9
- lsls r0, r1
- ldr r1, _08142DE0 @ =0xffff0000
- eors r0, r1
- ldr r2, _08142DE4 @ =gUnknown_0203931C
- str r0, [r2]
- ldr r2, _08142DE8 @ =0x0000735f
- movs r1, 0xC
- bl BlendPalettesUnfaded
- movs r0, 0xC
- ldrsh r1, [r5, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- mov r1, r8
- adds r4, r1, r0
- ldrh r1, [r4, 0x8]
- ldr r0, _08142DEC @ =0x000001ff
- ands r0, r1
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _08142DB2
- bl StopCryAndClearCrySongs
- ldrh r0, [r4, 0x8]
- lsls r0, 23
- lsrs r0, 23
- movs r1, 0
- bl PlayCry1
-_08142DB2:
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0xE
- bl sub_8143088
- ldr r0, _08142DF0 @ =sub_8142DF4
- str r0, [r5]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08142DD0: .4byte 0x0201e000
-_08142DD4: .4byte gTasks
-_08142DD8: .4byte gTasks + 0x8
-_08142DDC: .4byte gSprites
-_08142DE0: .4byte 0xffff0000
-_08142DE4: .4byte gUnknown_0203931C
-_08142DE8: .4byte 0x0000735f
-_08142DEC: .4byte 0x000001ff
-_08142DF0: .4byte sub_8142DF4
- thumb_func_end sub_8142CC8
-
- thumb_func_start sub_8142DF4
-sub_8142DF4: @ 8142DF4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, _08142E88 @ =gMain
- ldrh r2, [r1, 0x2E]
- movs r0, 0x1
- ands r0, r2
- adds r3, r1, 0
- cmp r0, 0
- beq _08142EC4
- ldr r7, _08142E8C @ =gTasks
- lsls r0, r6, 2
- adds r1, r0, r6
- lsls r3, r1, 3
- adds r4, r3, r7
- ldrh r2, [r4, 0x8]
- movs r5, 0x8
- ldrsh r1, [r4, r5]
- mov r8, r0
- cmp r1, 0
- beq _08142E98
- subs r0, r2, 0x1
- strh r0, [r4, 0x8]
- movs r5, 0
- adds r7, 0x8
- mov r9, r7
- adds r7, r3, 0
-_08142E30:
- adds r0, r5, 0x5
- lsls r0, 1
- adds r0, r7
- add r0, r9
- ldrb r1, [r0]
- cmp r1, 0xFF
- beq _08142E5E
- ldr r0, _08142E90 @ =gSprites
- lsls r4, r1, 4
- adds r4, r1
- lsls r4, 2
- adds r4, r0
- ldrb r0, [r4, 0x5]
- lsrs r0, 4
- bl GetSpritePaletteTagByPaletteNum
- lsls r0, 16
- lsrs r0, 16
- bl FreeSpritePaletteByTag
- adds r0, r4, 0
- bl DestroySprite
-_08142E5E:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x5
- bls _08142E30
- ldr r0, _08142E8C @ =gTasks
- mov r2, r8
- adds r1, r2, r6
- lsls r1, 3
- adds r1, r0
- ldrh r2, [r1, 0xA]
- movs r3, 0xA
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _08142E80
- subs r0, r2, 0x1
- strh r0, [r1, 0xA]
-_08142E80:
- ldr r0, _08142E94 @ =sub_8142B04
- str r0, [r1]
- b _08142F64
- .align 2, 0
-_08142E88: .4byte gMain
-_08142E8C: .4byte gTasks
-_08142E90: .4byte gSprites
-_08142E94: .4byte sub_8142B04
-_08142E98:
- bl IsCryPlayingOrClearCrySongs
- lsls r0, 24
- cmp r0, 0
- beq _08142EB2
- bl StopCryAndClearCrySongs
- ldr r0, _08142EB8 @ =gMPlay_BGM
- ldr r1, _08142EBC @ =0x0000ffff
- movs r2, 0x80
- lsls r2, 1
- bl m4aMPlayVolumeControl
-_08142EB2:
- ldr r0, _08142EC0 @ =sub_8142F78
- str r0, [r4]
- b _08142F64
- .align 2, 0
-_08142EB8: .4byte gMPlay_BGM
-_08142EBC: .4byte 0x0000ffff
-_08142EC0: .4byte sub_8142F78
-_08142EC4:
- movs r0, 0x2
- ands r0, r2
- cmp r0, 0
- beq _08142F08
- bl IsCryPlayingOrClearCrySongs
- lsls r0, 24
- cmp r0, 0
- beq _08142EE6
- bl StopCryAndClearCrySongs
- ldr r0, _08142EF8 @ =gMPlay_BGM
- ldr r1, _08142EFC @ =0x0000ffff
- movs r2, 0x80
- lsls r2, 1
- bl m4aMPlayVolumeControl
-_08142EE6:
- ldr r0, _08142F00 @ =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldr r0, _08142F04 @ =sub_8142F78
- str r0, [r1]
- b _08142F64
- .align 2, 0
-_08142EF8: .4byte gMPlay_BGM
-_08142EFC: .4byte 0x0000ffff
-_08142F00: .4byte gTasks
-_08142F04: .4byte sub_8142F78
-_08142F08:
- movs r0, 0x40
- ands r0, r2
- cmp r0, 0
- beq _08142F38
- ldr r0, _08142F30 @ =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldrh r2, [r1, 0xC]
- movs r4, 0xC
- ldrsh r0, [r1, r4]
- cmp r0, 0
- beq _08142F38
- subs r0, r2, 0x1
- strh r0, [r1, 0xC]
- ldr r0, _08142F34 @ =sub_8142CC8
- str r0, [r1]
- b _08142F64
- .align 2, 0
-_08142F30: .4byte gTasks
-_08142F34: .4byte sub_8142CC8
-_08142F38:
- ldrh r1, [r3, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08142F64
- ldr r1, _08142F70 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r2, r0, r1
- movs r5, 0xC
- ldrsh r1, [r2, r5]
- movs r3, 0x10
- ldrsh r0, [r2, r3]
- subs r0, 0x1
- cmp r1, r0
- bge _08142F64
- ldrh r0, [r2, 0xC]
- adds r0, 0x1
- strh r0, [r2, 0xC]
- ldr r0, _08142F74 @ =sub_8142CC8
- str r0, [r2]
-_08142F64:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08142F70: .4byte gTasks
-_08142F74: .4byte sub_8142CC8
- thumb_func_end sub_8142DF4
-
- thumb_func_start sub_8142F78
-sub_8142F78: @ 8142F78
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _08142FB4 @ =gPlttBufferFaded
- ldr r1, _08142FB8 @ =gPlttBufferUnfaded
- movs r2, 0x80
- lsls r2, 2
- bl CpuSet
- ldr r0, _08142FBC @ =0x0201c000
- adds r2, r0, 0
- ldr r1, _08142FC0 @ =gUnknown_0840B57C
- ldm r1!, {r3,r5,r6}
- stm r2!, {r3,r5,r6}
- ldm r1!, {r3,r5}
- stm r2!, {r3,r5}
- bl sub_80C5E38
- ldr r1, _08142FC4 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _08142FC8 @ =sub_8142FCC
- str r1, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08142FB4: .4byte gPlttBufferFaded
-_08142FB8: .4byte gPlttBufferUnfaded
-_08142FBC: .4byte 0x0201c000
-_08142FC0: .4byte gUnknown_0840B57C
-_08142FC4: .4byte gTasks
-_08142FC8: .4byte sub_8142FCC
- thumb_func_end sub_8142F78
-
- thumb_func_start sub_8142FCC
-sub_8142FCC: @ 8142FCC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_80C5F98
- lsls r0, 24
- cmp r0, 0
- beq _08142FE6
- adds r0, r4, 0
- bl DestroyTask
- bl ReturnFromHallOfFamePC
-_08142FE6:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8142FCC
-
- thumb_func_start sub_8142FEC
-sub_8142FEC: @ 8142FEC
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x2
- movs r1, 0xE
- movs r2, 0x1B
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _08143020 @ =gMenuText_HOFCorrupt
- movs r1, 0x3
- movs r2, 0xF
- bl MenuPrintMessage
- ldr r1, _08143024 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _08143028 @ =sub_814302C
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08143020: .4byte gMenuText_HOFCorrupt
-_08143024: .4byte gTasks
-_08143028: .4byte sub_814302C
- thumb_func_end sub_8142FEC
-
- thumb_func_start sub_814302C
-sub_814302C: @ 814302C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- beq _08143056
- ldr r0, _0814305C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08143056
- ldr r0, _08143060 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _08143064 @ =sub_8142F78
- str r0, [r1]
-_08143056:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0814305C: .4byte gMain
-_08143060: .4byte gTasks
-_08143064: .4byte sub_8142F78
- thumb_func_end sub_814302C
-
- thumb_func_start sub_8143068
-sub_8143068: @ 8143068
- push {lr}
- lsls r2, r1, 24
- ldr r0, _08143084 @ =gMenuText_WelcomeToHOFAndDexRating
- movs r1, 0x80
- lsls r1, 17
- adds r2, r1
- lsrs r2, 24
- movs r1, 0
- movs r3, 0xF0
- bl sub_8072BD8
- pop {r0}
- bx r0
- .align 2, 0
-_08143084: .4byte gMenuText_WelcomeToHOFAndDexRating
- thumb_func_end sub_8143068
-
- thumb_func_start sub_8143088
-sub_8143088: @ 8143088
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- mov r9, r0
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- lsls r2, 24
- lsrs r2, 24
- mov r10, r2
- ldr r7, _08143188 @ =gStringVar1
- movs r0, 0xFC
- strb r0, [r7]
- movs r0, 0x13
- strb r0, [r7, 0x1]
- movs r0, 0x28
- strb r0, [r7, 0x2]
- movs r0, 0xFF
- strb r0, [r7, 0x3]
- mov r0, r9
- ldrh r2, [r0, 0x8]
- ldr r0, _0814318C @ =0x000001ff
- ands r0, r2
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _081430EA
- lsls r0, r2, 23
- lsrs r0, 23
- bl SpeciesToPokedexNum
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r0, _08143190 @ =0x0000ffff
- cmp r6, r0
- beq _081430EA
- ldr r1, _08143194 @ =gOtherText_Number2
- adds r0, r7, 0
- bl StringCopy
- adds r7, r0, 0
- adds r1, r6, 0
- movs r2, 0x2
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
-_081430EA:
- ldr r5, _08143188 @ =gStringVar1
- mov r1, r8
- adds r1, 0x4
- lsls r1, 24
- lsrs r1, 24
- mov r4, r10
- adds r4, 0x1
- lsls r2, r4, 24
- lsrs r2, 24
- adds r0, r5, 0
- bl MenuPrint
- adds r7, r5, 0
- movs r3, 0
- mov r1, r9
- ldrb r0, [r1, 0xA]
- str r4, [sp]
- mov r2, r8
- adds r2, 0x9
- str r2, [sp, 0xC]
- mov r6, r10
- adds r6, 0x3
- str r6, [sp, 0x8]
- cmp r0, 0xFF
- beq _0814313A
- mov r2, r9
- adds r2, 0xA
-_08143120:
- adds r1, r7, r3
- adds r0, r2, r3
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x9
- bhi _0814313A
- adds r0, r2, r3
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _08143120
-_0814313A:
- adds r7, r3
- movs r2, 0xFF
- strb r2, [r7]
- mov r1, r9
- ldrh r0, [r1, 0x8]
- ldr r1, _0814318C @ =0x000001ff
- ands r1, r0
- movs r0, 0xCE
- lsls r0, 1
- cmp r1, r0
- bne _08143198
- movs r0, 0xFC
- strb r0, [r7]
- movs r0, 0x13
- strb r0, [r7, 0x1]
- movs r0, 0xA0
- strb r0, [r7, 0x2]
- strb r2, [r7, 0x3]
- ldr r0, _08143188 @ =gStringVar1
- ldr r2, [sp, 0xC]
- lsls r1, r2, 24
- lsrs r1, 24
- ldr r3, [sp]
- lsls r2, r3, 24
- lsrs r2, 24
- bl MenuPrint
- ldr r6, [sp, 0x8]
- lsls r1, r6, 24
- lsrs r1, 24
- mov r3, r10
- adds r3, 0x4
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0
- movs r2, 0x1D
- bl MenuZeroFillWindowRect
- b _081432E4
- .align 2, 0
-_08143188: .4byte gStringVar1
-_0814318C: .4byte 0x000001ff
-_08143190: .4byte 0x0000ffff
-_08143194: .4byte gOtherText_Number2
-_08143198:
- movs r0, 0xFC
- strb r0, [r7]
- movs r0, 0x13
- strb r0, [r7, 0x1]
- movs r0, 0x3E
- strb r0, [r7, 0x2]
- adds r7, 0x3
- movs r0, 0xBA
- strb r0, [r7]
- adds r7, 0x1
- movs r3, 0
- ldr r2, _08143238 @ =gSpeciesNames
- mov r1, r9
- ldrh r0, [r1, 0x8]
- lsls r0, 23
- lsrs r0, 23
- movs r1, 0xB
- muls r0, r1
- adds r0, r2
- ldrb r0, [r0]
- mov r6, r8
- adds r6, 0x7
- str r6, [sp, 0x4]
- mov r1, r8
- adds r1, 0xD
- str r1, [sp, 0x10]
- cmp r0, 0xFF
- beq _08143204
- adds r5, r2, 0
- movs r4, 0xB
-_081431D4:
- adds r1, r7, r3
- mov r6, r9
- ldrh r0, [r6, 0x8]
- lsls r0, 23
- lsrs r0, 23
- muls r0, r4
- adds r0, r3, r0
- adds r0, r5
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x9
- bhi _08143204
- ldrh r0, [r6, 0x8]
- lsls r0, 23
- lsrs r0, 23
- muls r0, r4
- adds r0, r3, r0
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _081431D4
-_08143204:
- adds r7, r3
- movs r0, 0
- strb r0, [r7]
- adds r7, 0x1
- mov r1, r9
- ldrh r0, [r1, 0x8]
- ldr r1, _0814323C @ =0x000001ff
- ands r1, r0
- cmp r1, 0x20
- beq _0814324A
- cmp r1, 0x1D
- beq _0814324A
- lsls r0, 23
- lsrs r0, 23
- mov r2, r9
- ldr r1, [r2, 0x4]
- bl GetGenderFromSpeciesAndPersonality
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _08143240
- cmp r0, 0xFE
- beq _08143244
- b _0814324A
- .align 2, 0
-_08143238: .4byte gSpeciesNames
-_0814323C: .4byte 0x000001ff
-_08143240:
- movs r0, 0xB5
- b _08143246
-_08143244:
- movs r0, 0xB6
-_08143246:
- strb r0, [r7]
- adds r7, 0x1
-_0814324A:
- movs r4, 0xFC
- strb r4, [r7]
- movs r3, 0x13
- mov r8, r3
- strb r3, [r7, 0x1]
- movs r0, 0xA0
- strb r0, [r7, 0x2]
- movs r6, 0xFF
- mov r10, r6
- strb r6, [r7, 0x3]
- ldr r5, _081432F4 @ =gStringVar1
- ldr r0, [sp, 0xC]
- lsls r1, r0, 24
- lsrs r1, 24
- ldr r3, [sp]
- lsls r2, r3, 24
- lsrs r2, 24
- adds r0, r5, 0
- bl MenuPrint
- mov r6, r9
- ldrb r0, [r6, 0x9]
- lsrs r6, r0, 1
- ldr r1, _081432F8 @ =gOtherText_Level3
- adds r0, r5, 0
- bl StringCopy
- adds r7, r0, 0
- strb r4, [r7]
- movs r0, 0x14
- strb r0, [r7, 0x1]
- movs r0, 0x6
- strb r0, [r7, 0x2]
- adds r7, 0x3
- adds r0, r7, 0
- adds r1, r6, 0
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r7, r0, 0
- strb r4, [r7]
- mov r0, r8
- strb r0, [r7, 0x1]
- movs r0, 0x30
- strb r0, [r7, 0x2]
- mov r1, r10
- strb r1, [r7, 0x3]
- ldr r2, [sp, 0x4]
- lsls r1, r2, 24
- lsrs r1, 24
- ldr r3, [sp, 0x8]
- lsls r4, r3, 24
- lsrs r4, 24
- adds r0, r5, 0
- adds r2, r4, 0
- bl MenuPrint
- mov r0, r9
- ldrh r6, [r0]
- ldr r1, _081432FC @ =gOtherText_IDNumber
- adds r0, r5, 0
- bl StringCopy
- adds r7, r0, 0
- adds r1, r6, 0
- movs r2, 0x2
- movs r3, 0x5
- bl ConvertIntToDecimalStringN
- ldr r2, [sp, 0x10]
- lsls r1, r2, 24
- lsrs r1, 24
- adds r0, r5, 0
- adds r2, r4, 0
- bl MenuPrint
-_081432E4:
- 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
-_081432F4: .4byte gStringVar1
-_081432F8: .4byte gOtherText_Level3
-_081432FC: .4byte gOtherText_IDNumber
- thumb_func_end sub_8143088
-
- thumb_func_start sub_8143300
-sub_8143300: @ 8143300
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- adds r5, r0, 0
- adds r4, r1, 0
- lsls r5, 24
- lsls r4, 24
- ldr r0, _081433CC @ =gOtherText_Name
- lsrs r1, r5, 24
- mov r8, r1
- movs r2, 0x80
- lsls r2, 17
- adds r5, r2
- lsrs r5, 24
- lsrs r6, r4, 24
- adds r4, r2
- lsrs r4, 24
- adds r1, r5, 0
- adds r2, r4, 0
- bl MenuPrint
- ldr r0, _081433D0 @ =gSaveBlock2
- mov r10, r0
- movs r1, 0xE
- add r8, r1
- mov r2, r8
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- mov r1, r8
- adds r2, r4, 0
- bl MenuPrint_RightAligned
- ldr r0, _081433D4 @ =gOtherText_IDNumber2
- adds r4, r6, 0x3
- lsls r4, 24
- lsrs r4, 24
- adds r1, r5, 0
- adds r2, r4, 0
- bl MenuPrint
- mov r0, r10
- ldrb r1, [r0, 0xA]
- ldrb r0, [r0, 0xB]
- lsls r0, 8
- orrs r1, r0
- ldr r2, _081433D8 @ =gStringVar1
- mov r9, r2
- mov r0, r9
- movs r2, 0x2
- movs r3, 0x5
- bl ConvertIntToDecimalStringN
- mov r0, r9
- mov r1, r8
- adds r2, r4, 0
- bl MenuPrint_RightAligned
- ldr r0, _081433DC @ =gMainMenuString_Time
- adds r6, 0x5
- lsls r6, 24
- lsrs r6, 24
- adds r1, r5, 0
- adds r2, r6, 0
- bl MenuPrint
- mov r0, r10
- ldrh r1, [r0, 0xE]
- mov r0, r9
- bl ConvertIntToDecimalString
- adds r2, r0, 0
- movs r1, 0
- strb r1, [r2]
- movs r0, 0xF0
- strb r0, [r2, 0x1]
- strb r1, [r2, 0x2]
- adds r2, 0x3
- mov r0, r10
- ldrb r1, [r0, 0x10]
- adds r0, r2, 0
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- adds r2, r0, 0
- movs r0, 0xFF
- strb r0, [r2]
- mov r0, r9
- mov r1, r8
- adds r2, r6, 0
- bl MenuPrint_RightAligned
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081433CC: .4byte gOtherText_Name
-_081433D0: .4byte gSaveBlock2
-_081433D4: .4byte gOtherText_IDNumber2
-_081433D8: .4byte gStringVar1
-_081433DC: .4byte gMainMenuString_Time
- thumb_func_end sub_8143300
-
- thumb_func_start sub_81433E0
-sub_81433E0: @ 81433E0
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- movs r0, 0x80
- lsls r0, 19
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x8
- strh r1, [r0]
- adds r0, 0x8
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- subs r0, 0x8
- strh r1, [r0]
- adds r0, 0xA
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- subs r0, 0xA
- strh r1, [r0]
- adds r0, 0xC
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- subs r0, 0xC
- strh r1, [r0]
- adds r0, 0xE
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- movs r3, 0xC0
- lsls r3, 19
- movs r4, 0xC0
- lsls r4, 9
- add r0, sp, 0x4
- mov r8, r0
- ldr r1, _0814354C @ =gHallOfFame_Gfx
- mov r9, r1
- mov r2, sp
- movs r6, 0
- ldr r1, _08143550 @ =0x040000d4
- movs r5, 0x80
- lsls r5, 5
- ldr r7, _08143554 @ =0x81000800
- movs r0, 0x81
- lsls r0, 24
- mov r12, r0
-_08143444:
- 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 _08143444
- 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, _08143550 @ =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 r1, 0xC0
- lsls r1, 19
- mov r0, r9
- bl LZ77UnCompVram
- movs r1, 0
- ldr r3, _08143558 @ =0x06003800
- movs r2, 0x1
-_081434B2:
- lsls r0, r1, 1
- adds r0, r3
- strh r2, [r0]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0x3F
- bls _081434B2
- movs r1, 0
- ldr r5, _0814355C @ =0x02000000
- ldr r3, _08143560 @ =0x06003b80
- movs r2, 0x1
-_081434CA:
- lsls r0, r1, 1
- adds r0, r3
- strh r2, [r0]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0xBF
- bls _081434CA
- movs r1, 0
- ldr r4, _08143564 @ =0x06003000
- movs r3, 0x2
- ldr r2, _08143568 @ =0x000003ff
-_081434E2:
- lsls r0, r1, 1
- adds r0, r4
- strh r3, [r0]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, r2
- bls _081434E2
- adds r2, r5, 0
- movs r3, 0x80
- lsls r3, 7
- mov r4, sp
- movs r6, 0
- ldr r1, _08143550 @ =0x040000d4
- movs r5, 0x80
- lsls r5, 5
- ldr r7, _08143554 @ =0x81000800
- movs r0, 0x81
- lsls r0, 24
- mov r12, r0
-_0814350A:
- strh r6, [r4]
- mov r0, sp
- str r0, [r1]
- str r2, [r1, 0x4]
- str r7, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r2, r5
- subs r3, r5
- cmp r3, r5
- bhi _0814350A
- strh r6, [r4]
- mov r0, sp
- str r0, [r1]
- str r2, [r1, 0x4]
- lsrs r0, r3, 1
- mov r2, r12
- orrs r0, r2
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- bl ResetPaletteFade
- ldr r0, _0814356C @ =gHallOfFame_Pal
- movs r1, 0
- movs r2, 0x20
- bl LoadPalette
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0814354C: .4byte gHallOfFame_Gfx
-_08143550: .4byte 0x040000d4
-_08143554: .4byte 0x81000800
-_08143558: .4byte 0x06003800
-_0814355C: .4byte 0x02000000
-_08143560: .4byte 0x06003b80
-_08143564: .4byte 0x06003000
-_08143568: .4byte 0x000003ff
-_0814356C: .4byte gHallOfFame_Pal
- thumb_func_end sub_81433E0
-
- thumb_func_start sub_8143570
-sub_8143570: @ 8143570
- push {r4,lr}
- bl remove_some_task
- bl ResetTasks
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- ldr r1, _081435A8 @ =gReservedSpritePaletteCount
- movs r0, 0x8
- strb r0, [r1]
- ldr r0, _081435AC @ =gUnknown_0840B514
- bl LoadCompressedObjectPic
- ldr r0, _081435B0 @ =gUnknown_0840B524
- bl LoadCompressedObjectPalette
- ldr r4, _081435B4 @ =gWindowConfig_81E71B4
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081435A8: .4byte gReservedSpritePaletteCount
-_081435AC: .4byte gUnknown_0840B514
-_081435B0: .4byte gUnknown_0840B524
-_081435B4: .4byte gWindowConfig_81E71B4
- thumb_func_end sub_8143570
-
- thumb_func_start sub_81435B8
-sub_81435B8: @ 81435B8
- ldr r1, _081435D8 @ =REG_BG1CNT
- movs r2, 0xE0
- lsls r2, 3
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x4
- subs r2, 0xFD
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0xE
- movs r2, 0xDA
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- bx lr
- .align 2, 0
-_081435D8: .4byte REG_BG1CNT
- thumb_func_end sub_81435B8
-
- thumb_func_start sub_81435DC
-sub_81435DC: @ 81435DC
- push {r4,lr}
- adds r2, r0, 0
- ldr r1, [r2, 0x20]
- ldr r0, [r2, 0x30]
- cmp r1, r0
- beq _08143632
- ldrh r3, [r2, 0x20]
- movs r1, 0x20
- ldrsh r0, [r2, r1]
- movs r4, 0x30
- ldrsh r1, [r2, r4]
- cmp r0, r1
- bge _081435FC
- adds r0, r3, 0
- adds r0, 0xF
- strh r0, [r2, 0x20]
-_081435FC:
- ldrh r3, [r2, 0x20]
- movs r4, 0x20
- ldrsh r0, [r2, r4]
- cmp r0, r1
- ble _0814360C
- adds r0, r3, 0
- subs r0, 0xF
- strh r0, [r2, 0x20]
-_0814360C:
- ldrh r3, [r2, 0x22]
- movs r1, 0x22
- ldrsh r0, [r2, r1]
- movs r4, 0x32
- ldrsh r1, [r2, r4]
- cmp r0, r1
- bge _08143620
- adds r0, r3, 0
- adds r0, 0xA
- strh r0, [r2, 0x22]
-_08143620:
- ldrh r3, [r2, 0x22]
- movs r4, 0x22
- ldrsh r0, [r2, r4]
- cmp r0, r1
- ble _0814363A
- adds r0, r3, 0
- subs r0, 0xA
- strh r0, [r2, 0x22]
- b _0814363A
-_08143632:
- movs r0, 0x1
- strh r0, [r2, 0x2E]
- ldr r0, _08143640 @ =nullsub_81
- str r0, [r2, 0x1C]
-_0814363A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08143640: .4byte nullsub_81
- thumb_func_end sub_81435DC
-
- thumb_func_start nullsub_81
-nullsub_81: @ 8143644
- bx lr
- thumb_func_end nullsub_81
-
- thumb_func_start sub_8143648
-sub_8143648: @ 8143648
- push {r4-r7,lr}
- lsls r1, 24
- ldr r4, _08143670 @ =gUnknown_02024E8C
- adds r3, r4, 0
- ldr r2, _08143674 @ =gUnknown_0840B6B8
- ldm r2!, {r5-r7}
- stm r3!, {r5-r7}
- ldm r2!, {r5-r7}
- stm r3!, {r5-r7}
- strh r0, [r4, 0x2]
- ldr r0, _08143678 @ =gUnknown_0840B69C
- lsrs r1, 22
- adds r1, r0
- ldr r0, [r1]
- str r0, [r4, 0xC]
- ldr r0, _0814367C @ =gSpriteAnimTable_81E7C64
- str r0, [r4, 0x8]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08143670: .4byte gUnknown_02024E8C
-_08143674: .4byte gUnknown_0840B6B8
-_08143678: .4byte gUnknown_0840B69C
-_0814367C: .4byte gSpriteAnimTable_81E7C64
- thumb_func_end sub_8143648
-
- thumb_func_start sub_8143680
-sub_8143680: @ 8143680
- push {r4-r7,lr}
- lsls r1, 24
- ldr r4, _081436AC @ =gUnknown_02024E8C
- adds r3, r4, 0
- ldr r2, _081436B0 @ =gUnknown_0840B6B8
- ldm r2!, {r5-r7}
- stm r3!, {r5-r7}
- ldm r2!, {r5-r7}
- stm r3!, {r5-r7}
- strh r0, [r4, 0x2]
- ldr r0, _081436B4 @ =gUnknown_0840B69C
- lsrs r1, 22
- adds r1, r0
- ldr r0, [r1]
- str r0, [r4, 0xC]
- ldr r0, _081436B8 @ =gUnknown_081EC2A4
- ldr r0, [r0]
- str r0, [r4, 0x8]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081436AC: .4byte gUnknown_02024E8C
-_081436B0: .4byte gUnknown_0840B6B8
-_081436B4: .4byte gUnknown_0840B69C
-_081436B8: .4byte gUnknown_081EC2A4
- thumb_func_end sub_8143680
-
- thumb_func_start sub_81436BC
-sub_81436BC: @ 81436BC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- adds r6, r0, 0
- mov r9, r1
- mov r10, r2
- mov r8, r3
- ldr r7, [sp, 0x34]
- lsls r6, 16
- lsrs r6, 16
- mov r0, r9
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- mov r1, r10
- lsls r1, 16
- lsrs r1, 16
- mov r10, r1
- mov r2, r8
- lsls r2, 16
- lsrs r2, 16
- mov r8, r2
- lsls r0, r6, 3
- ldr r1, _08143790 @ =gMonFrontPicTable
- adds r0, r1
- ldr r1, _08143794 @ =gMonFrontPicCoords
- lsls r2, r6, 2
- adds r2, r1
- ldrb r1, [r2]
- ldrb r2, [r2, 0x1]
- movs r3, 0x80
- lsls r3, 18
- ldr r4, _08143798 @ =gUnknown_0840B5A0
- mov r12, r4
- mov r5, r8
- lsls r4, r5, 2
- add r4, r12
- ldr r4, [r4]
- str r4, [sp]
- str r6, [sp, 0x4]
- str r7, [sp, 0x8]
- movs r4, 0x1
- str r4, [sp, 0xC]
- bl LoadSpecialPokePic
- adds r0, r6, 0
- ldr r1, [sp, 0x30]
- adds r2, r7, 0
- bl species_and_otid_get_pal
- lsls r4, r5, 4
- movs r2, 0x80
- lsls r2, 1
- adds r1, r4, r2
- lsls r1, 16
- lsrs r1, 16
- movs r2, 0x20
- bl LoadCompressedPalette
- lsls r1, r5, 24
- lsrs r1, 24
- mov r0, r8
- bl sub_8143648
- ldr r0, _0814379C @ =gUnknown_02024E8C
- mov r5, r9
- lsls r5, 16
- asrs r5, 16
- mov r9, r5
- mov r1, r10
- lsls r1, 16
- asrs r1, 16
- mov r10, r1
- movs r3, 0xA
- mov r2, r8
- subs r3, r2
- lsls r3, 24
- lsrs r3, 24
- mov r1, r9
- mov r2, r10
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _081437A0 @ =gSprites
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r1
- ldrb r3, [r2, 0x5]
- movs r1, 0xF
- ands r1, r3
- orrs r1, r4
- strb r1, [r2, 0x5]
- 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
-_08143790: .4byte gMonFrontPicTable
-_08143794: .4byte gMonFrontPicCoords
-_08143798: .4byte gUnknown_0840B5A0
-_0814379C: .4byte gUnknown_02024E8C
-_081437A0: .4byte gSprites
- thumb_func_end sub_81436BC
-
- thumb_func_start sub_81437A4
-sub_81437A4: @ 81437A4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- mov r9, r1
- mov r10, r2
- adds r6, r3, 0
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 16
- lsrs r1, 16
- mov r9, r1
- lsls r2, 16
- lsrs r2, 16
- mov r10, r2
- lsls r6, 16
- lsrs r6, 16
- lsls r7, r0, 3
- ldr r1, _08143854 @ =gTrainerFrontPicTable
- mov r8, r1
- add r8, r7
- ldr r1, _08143858 @ =gTrainerFrontPicCoords
- lsls r2, r0, 2
- adds r2, r1
- ldrb r1, [r2]
- ldrb r2, [r2, 0x1]
- movs r3, 0x80
- lsls r3, 18
- ldr r5, _0814385C @ =gUnknown_0840B5A0
- lsls r4, r6, 2
- adds r4, r5
- ldr r4, [r4]
- str r4, [sp]
- str r0, [sp, 0x4]
- mov r0, r8
- bl DecompressPicFromTable_2
- ldr r0, _08143860 @ =gTrainerFrontPicPaletteTable
- adds r0, r7, r0
- ldr r0, [r0]
- lsls r4, r6, 4
- movs r2, 0x80
- lsls r2, 1
- adds r1, r4, r2
- lsls r1, 16
- lsrs r1, 16
- movs r2, 0x20
- bl LoadCompressedPalette
- lsls r1, r6, 24
- lsrs r1, 24
- adds r0, r6, 0
- bl sub_8143680
- ldr r0, _08143864 @ =gUnknown_02024E8C
- mov r1, r9
- lsls r1, 16
- asrs r1, 16
- mov r9, r1
- mov r2, r10
- lsls r2, 16
- asrs r2, 16
- mov r10, r2
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _08143868 @ =gSprites
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r1
- ldrb r3, [r2, 0x5]
- movs r1, 0xF
- ands r1, r3
- orrs r1, r4
- strb r1, [r2, 0x5]
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08143854: .4byte gTrainerFrontPicTable
-_08143858: .4byte gTrainerFrontPicCoords
-_0814385C: .4byte gUnknown_0840B5A0
-_08143860: .4byte gTrainerFrontPicPaletteTable
-_08143864: .4byte gUnknown_02024E8C
-_08143868: .4byte gSprites
- thumb_func_end sub_81437A4
-
- thumb_func_start sub_814386C
-sub_814386C: @ 814386C
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrh r1, [r5, 0x26]
- movs r2, 0x26
- ldrsh r0, [r5, r2]
- cmp r0, 0x78
- ble _08143882
- adds r0, r5, 0
- bl DestroySprite
- b _081438BA
-_08143882:
- adds r0, r1, 0x1
- ldrh r1, [r5, 0x30]
- adds r0, r1
- strh r0, [r5, 0x26]
- ldrh r4, [r5, 0x2E]
- lsls r4, 24
- lsrs r4, 24
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- ands r0, r1
- adds r0, 0x8
- ldr r1, _081438C0 @ =gSineTable
- lsls r4, 1
- adds r4, r1
- movs r2, 0
- ldrsh r1, [r4, r2]
- muls r0, r1
- cmp r0, 0
- bge _081438B0
- adds r0, 0xFF
-_081438B0:
- asrs r0, 8
- strh r0, [r5, 0x24]
- ldrh r0, [r5, 0x2E]
- adds r0, 0x4
- strh r0, [r5, 0x2E]
-_081438BA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081438C0: .4byte gSineTable
- thumb_func_end sub_814386C
-
- thumb_func_start sub_81438C4
-sub_81438C4: @ 81438C4
- push {r4,lr}
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xF0
- bl __umodsi3
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- bl Random
- adds r2, r0, 0
- lsls r2, 16
- lsrs r2, 16
- movs r0, 0x7
- ands r2, r0
- negs r2, r2
- ldr r0, _08143934 @ =gSpriteTemplate_840B7A4
- lsls r4, 16
- asrs r4, 16
- lsls r2, 16
- asrs r2, 16
- adds r1, r4, 0
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _08143938 @ =gSprites
- adds r4, r1, r0
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x11
- bl __umodsi3
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
- bl Random
- movs r1, 0x3
- ands r1, r0
- cmp r1, 0
- beq _0814393C
- movs r0, 0
- b _0814393E
- .align 2, 0
-_08143934: .4byte gSpriteTemplate_840B7A4
-_08143938: .4byte gSprites
-_0814393C:
- movs r0, 0x1
-_0814393E:
- strh r0, [r4, 0x30]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81438C4
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/intro_credits_graphics.s b/asm/intro_credits_graphics.s
deleted file mode 100644
index 8d73f6cf6..000000000
--- a/asm/intro_credits_graphics.s
+++ /dev/null
@@ -1,1166 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start load_intro_part2_graphics
-load_intro_part2_graphics: @ 8148B8C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08148BE8 @ =gUnknown_0841225C
- ldr r1, _08148BEC @ =0x06004000
- bl LZ77UnCompVram
- ldr r0, _08148BF0 @ =gUnknown_084126DC
- ldr r1, _08148BF4 @ =0x06007800
- bl LZ77UnCompVram
- ldr r0, _08148BF8 @ =gUnknown_084121FC
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- cmp r4, 0
- beq _08148BB4
- cmp r4, 0x1
- beq _08148C14
-_08148BB4:
- ldr r0, _08148BFC @ =gUnknown_084128D8
- movs r1, 0xC0
- lsls r1, 19
- bl LZ77UnCompVram
- ldr r0, _08148C00 @ =gUnknown_08412EB4
- ldr r1, _08148C04 @ =0x06003000
- bl LZ77UnCompVram
- ldr r0, _08148C08 @ =gUnknown_08412818
- movs r1, 0
- movs r2, 0x60
- bl LoadPalette
- ldr r0, _08148C0C @ =gUnknown_08416B54
- bl LoadCompressedObjectPic
- ldr r0, _08148C10 @ =gUnknown_08413184
- movs r1, 0x80
- lsls r1, 1
- movs r2, 0x20
- bl LoadPalette
- bl sub_8149248
- b _08148C46
- .align 2, 0
-_08148BE8: .4byte gUnknown_0841225C
-_08148BEC: .4byte 0x06004000
-_08148BF0: .4byte gUnknown_084126DC
-_08148BF4: .4byte 0x06007800
-_08148BF8: .4byte gUnknown_084121FC
-_08148BFC: .4byte gUnknown_084128D8
-_08148C00: .4byte gUnknown_08412EB4
-_08148C04: .4byte 0x06003000
-_08148C08: .4byte gUnknown_08412818
-_08148C0C: .4byte gUnknown_08416B54
-_08148C10: .4byte gUnknown_08413184
-_08148C14:
- ldr r0, _08148C58 @ =gUnknown_08413340
- movs r1, 0xC0
- lsls r1, 19
- bl LZ77UnCompVram
- ldr r0, _08148C5C @ =gUnknown_084139C8
- ldr r1, _08148C60 @ =0x06003000
- bl LZ77UnCompVram
- ldr r0, _08148C64 @ =gUnknown_08413300
- movs r1, 0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _08148C68 @ =gUnknown_08416BDC
- bl LoadCompressedObjectPic
- ldr r0, _08148C6C @ =gUnknown_08413CCC
- movs r1, 0x80
- lsls r1, 1
- movs r2, 0x20
- bl LoadPalette
- bl sub_8149264
-_08148C46:
- ldr r1, _08148C70 @ =gUnknown_0203935C
- movs r0, 0
- strh r0, [r1]
- ldr r1, _08148C74 @ =gReservedSpritePaletteCount
- movs r0, 0x8
- strb r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08148C58: .4byte gUnknown_08413340
-_08148C5C: .4byte gUnknown_084139C8
-_08148C60: .4byte 0x06003000
-_08148C64: .4byte gUnknown_08413300
-_08148C68: .4byte gUnknown_08416BDC
-_08148C6C: .4byte gUnknown_08413CCC
-_08148C70: .4byte gUnknown_0203935C
-_08148C74: .4byte gReservedSpritePaletteCount
- thumb_func_end load_intro_part2_graphics
-
- thumb_func_start sub_8148C78
-sub_8148C78: @ 8148C78
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _08148CA4 @ =REG_BG3CNT
- ldr r2, _08148CA8 @ =0x00000603
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0x2
- adds r2, 0xFF
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0x2
- ldr r2, _08148CAC @ =0x00000f05
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0xA
- movs r2, 0xF2
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08148CA4: .4byte REG_BG3CNT
-_08148CA8: .4byte 0x00000603
-_08148CAC: .4byte 0x00000f05
- thumb_func_end sub_8148C78
-
- thumb_func_start sub_8148CB0
-sub_8148CB0: @ 8148CB0
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08148CD4 @ =gUnknown_0841225C
- ldr r1, _08148CD8 @ =0x06004000
- bl LZ77UnCompVram
- ldr r0, _08148CDC @ =gUnknown_084126DC
- ldr r1, _08148CE0 @ =0x06007800
- bl LZ77UnCompVram
- cmp r4, 0x4
- bhi _08148CFC
- lsls r0, r4, 2
- ldr r1, _08148CE4 @ =_08148CE8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08148CD4: .4byte gUnknown_0841225C
-_08148CD8: .4byte 0x06004000
-_08148CDC: .4byte gUnknown_084126DC
-_08148CE0: .4byte 0x06007800
-_08148CE4: .4byte _08148CE8
- .align 2, 0
-_08148CE8:
- .4byte _08148CFC
- .4byte _08148D58
- .4byte _08148DC4
- .4byte _08148DC4
- .4byte _08148E1C
-_08148CFC:
- ldr r0, _08148D34 @ =gUnknown_084121FC
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _08148D38 @ =gUnknown_084128D8
- movs r1, 0xC0
- lsls r1, 19
- bl LZ77UnCompVram
- ldr r0, _08148D3C @ =gUnknown_08412EB4
- ldr r1, _08148D40 @ =0x06003000
- bl LZ77UnCompVram
- ldr r0, _08148D44 @ =gUnknown_08412818
- movs r1, 0
- movs r2, 0x60
- bl LoadPalette
- ldr r0, _08148D48 @ =gUnknown_08416B54
- bl LoadCompressedObjectPic
- ldr r0, _08148D4C @ =gUnknown_084131C4
- ldr r1, _08148D50 @ =0x06010000
- bl LZ77UnCompVram
- ldr r0, _08148D54 @ =gUnknown_08413184
- b _08148D8E
- .align 2, 0
-_08148D34: .4byte gUnknown_084121FC
-_08148D38: .4byte gUnknown_084128D8
-_08148D3C: .4byte gUnknown_08412EB4
-_08148D40: .4byte 0x06003000
-_08148D44: .4byte gUnknown_08412818
-_08148D48: .4byte gUnknown_08416B54
-_08148D4C: .4byte gUnknown_084131C4
-_08148D50: .4byte 0x06010000
-_08148D54: .4byte gUnknown_08413184
-_08148D58:
- ldr r0, _08148DA0 @ =gUnknown_0841221C
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _08148DA4 @ =gUnknown_084128D8
- movs r1, 0xC0
- lsls r1, 19
- bl LZ77UnCompVram
- ldr r0, _08148DA8 @ =gUnknown_08412EB4
- ldr r1, _08148DAC @ =0x06003000
- bl LZ77UnCompVram
- ldr r0, _08148DB0 @ =gUnknown_08412878
- movs r1, 0
- movs r2, 0x60
- bl LoadPalette
- ldr r0, _08148DB4 @ =gUnknown_08416B54
- bl LoadCompressedObjectPic
- ldr r0, _08148DB8 @ =gUnknown_084131C4
- ldr r1, _08148DBC @ =0x06010000
- bl LZ77UnCompVram
- ldr r0, _08148DC0 @ =gUnknown_084131A4
-_08148D8E:
- movs r1, 0x80
- lsls r1, 1
- movs r2, 0x20
- bl LoadPalette
- bl sub_8149248
- b _08148E58
- .align 2, 0
-_08148DA0: .4byte gUnknown_0841221C
-_08148DA4: .4byte gUnknown_084128D8
-_08148DA8: .4byte gUnknown_08412EB4
-_08148DAC: .4byte 0x06003000
-_08148DB0: .4byte gUnknown_08412878
-_08148DB4: .4byte gUnknown_08416B54
-_08148DB8: .4byte gUnknown_084131C4
-_08148DBC: .4byte 0x06010000
-_08148DC0: .4byte gUnknown_084131A4
-_08148DC4:
- ldr r0, _08148E04 @ =gUnknown_0841221C
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _08148E08 @ =gUnknown_08413340
- movs r1, 0xC0
- lsls r1, 19
- bl LZ77UnCompVram
- ldr r0, _08148E0C @ =gUnknown_084139C8
- ldr r1, _08148E10 @ =0x06003000
- bl LZ77UnCompVram
- ldr r4, _08148E14 @ =gUnknown_08413320
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _08148E18 @ =gUnknown_08416BDC
- bl LoadCompressedObjectPic
- movs r1, 0x80
- lsls r1, 1
- adds r0, r4, 0
- movs r2, 0x20
- bl LoadPalette
- bl sub_8149264
- b _08148E58
- .align 2, 0
-_08148E04: .4byte gUnknown_0841221C
-_08148E08: .4byte gUnknown_08413340
-_08148E0C: .4byte gUnknown_084139C8
-_08148E10: .4byte 0x06003000
-_08148E14: .4byte gUnknown_08413320
-_08148E18: .4byte gUnknown_08416BDC
-_08148E1C:
- ldr r0, _08148E6C @ =gUnknown_0841223C
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _08148E70 @ =gUnknown_08413E78
- movs r1, 0xC0
- lsls r1, 19
- bl LZ77UnCompVram
- ldr r0, _08148E74 @ =gUnknown_08414084
- ldr r1, _08148E78 @ =0x06003000
- bl LZ77UnCompVram
- ldr r0, _08148E7C @ =gUnknown_08413E38
- movs r1, 0
- movs r2, 0x40
- bl LoadPalette
- ldr r0, _08148E80 @ =gUnknown_08416C70
- bl LoadCompressedObjectPic
- ldr r0, _08148E84 @ =gUnknown_08414064
- movs r1, 0x80
- lsls r1, 1
- movs r2, 0x20
- bl LoadPalette
- bl sub_8149280
-_08148E58:
- ldr r1, _08148E88 @ =gReservedSpritePaletteCount
- movs r0, 0x8
- strb r0, [r1]
- ldr r1, _08148E8C @ =gUnknown_0203935C
- movs r0, 0
- strh r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08148E6C: .4byte gUnknown_0841223C
-_08148E70: .4byte gUnknown_08413E78
-_08148E74: .4byte gUnknown_08414084
-_08148E78: .4byte 0x06003000
-_08148E7C: .4byte gUnknown_08413E38
-_08148E80: .4byte gUnknown_08416C70
-_08148E84: .4byte gUnknown_08414064
-_08148E88: .4byte gReservedSpritePaletteCount
-_08148E8C: .4byte gUnknown_0203935C
- thumb_func_end sub_8148CB0
-
- thumb_func_start sub_8148E90
-sub_8148E90: @ 8148E90
- ldr r1, _08148EB4 @ =REG_BG3CNT
- ldr r2, _08148EB8 @ =0x00000603
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0x2
- adds r2, 0xFF
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0x2
- ldr r2, _08148EBC @ =0x00000f05
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0xA
- movs r2, 0xFA
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- bx lr
- .align 2, 0
-_08148EB4: .4byte REG_BG3CNT
-_08148EB8: .4byte 0x00000603
-_08148EBC: .4byte 0x00000f05
- thumb_func_end sub_8148E90
-
- thumb_func_start sub_8148EC0
-sub_8148EC0: @ 8148EC0
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r5, r0, 0
- adds r6, r1, 0
- mov r8, r2
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 16
- lsrs r6, 16
- mov r0, r8
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- lsls r3, 16
- lsrs r3, 16
- ldr r1, _08148F34 @ =sub_8148F3C
- mov r9, r1
- mov r0, r9
- movs r1, 0
- str r3, [sp]
- bl CreateTask
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _08148F38 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r2, 0
- strh r5, [r0, 0x8]
- strh r6, [r0, 0xA]
- strh r2, [r0, 0xC]
- strh r2, [r0, 0xE]
- mov r1, r8
- strh r1, [r0, 0x10]
- strh r2, [r0, 0x12]
- strh r2, [r0, 0x14]
- ldr r3, [sp]
- strh r3, [r0, 0x16]
- movs r1, 0x8
- strh r1, [r0, 0x18]
- strh r2, [r0, 0x1A]
- adds r0, r4, 0
- bl _call_via_r9
- adds r0, r4, 0
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08148F34: .4byte sub_8148F3C
-_08148F38: .4byte gTasks
- thumb_func_end sub_8148EC0
-
- thumb_func_start sub_8148F3C
-sub_8148F3C: @ 8148F3C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _08148FB4 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r3, r0, r1
- ldrh r0, [r3, 0xA]
- lsls r4, r0, 16
- adds r6, r1, 0
- cmp r4, 0
- beq _08148F7C
- movs r1, 0xC
- ldrsh r0, [r3, r1]
- lsls r0, 16
- ldrh r1, [r3, 0xE]
- adds r2, r0, r1
- lsrs r0, r4, 12
- subs r2, r0
- asrs r1, r2, 16
- strh r1, [r3, 0xC]
- strh r2, [r3, 0xE]
- ldr r0, _08148FB8 @ =REG_BG1HOFS
- strh r1, [r0]
- ldr r2, _08148FBC @ =REG_BG1VOFS
- ldr r1, _08148FC0 @ =gUnknown_02039358
- ldr r0, _08148FC4 @ =gUnknown_0203935A
- ldrh r0, [r0]
- ldrh r1, [r1]
- adds r0, r1
- strh r0, [r2]
-_08148F7C:
- ldrh r0, [r3, 0x10]
- lsls r4, r0, 16
- cmp r4, 0
- beq _08148FD8
- movs r1, 0x12
- ldrsh r0, [r3, r1]
- lsls r0, 16
- ldrh r1, [r3, 0x14]
- adds r2, r0, r1
- lsrs r0, r4, 12
- subs r2, r0
- asrs r1, r2, 16
- strh r1, [r3, 0x12]
- strh r2, [r3, 0x14]
- ldr r0, _08148FC8 @ =REG_BG2HOFS
- strh r1, [r0]
- movs r1, 0x8
- ldrsh r0, [r3, r1]
- cmp r0, 0
- beq _08148FD0
- ldr r2, _08148FCC @ =REG_BG2VOFS
- ldr r1, _08148FC0 @ =gUnknown_02039358
- ldr r0, _08148FC4 @ =gUnknown_0203935A
- ldrh r0, [r0]
- ldrh r1, [r1]
- adds r0, r1
- strh r0, [r2]
- b _08148FD8
- .align 2, 0
-_08148FB4: .4byte gTasks
-_08148FB8: .4byte REG_BG1HOFS
-_08148FBC: .4byte REG_BG1VOFS
-_08148FC0: .4byte gUnknown_02039358
-_08148FC4: .4byte gUnknown_0203935A
-_08148FC8: .4byte REG_BG2HOFS
-_08148FCC: .4byte REG_BG2VOFS
-_08148FD0:
- ldr r0, _08149010 @ =REG_BG2VOFS
- ldr r1, _08149014 @ =gUnknown_02039358
- ldrh r1, [r1]
- strh r1, [r0]
-_08148FD8:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r3, r0, r6
- ldrh r0, [r3, 0x16]
- lsls r4, r0, 16
- cmp r4, 0
- beq _08149008
- movs r1, 0x18
- ldrsh r0, [r3, r1]
- lsls r0, 16
- ldrh r1, [r3, 0x1A]
- adds r2, r0, r1
- lsrs r0, r4, 12
- subs r2, r0
- asrs r1, r2, 16
- strh r1, [r3, 0x18]
- strh r2, [r3, 0x1A]
- ldr r0, _08149018 @ =REG_BG3HOFS
- strh r1, [r0]
- ldr r1, _0814901C @ =REG_BG3VOFS
- ldr r0, _08149014 @ =gUnknown_02039358
- ldrh r0, [r0]
- strh r0, [r1]
-_08149008:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08149010: .4byte REG_BG2VOFS
-_08149014: .4byte gUnknown_02039358
-_08149018: .4byte REG_BG3HOFS
-_0814901C: .4byte REG_BG3VOFS
- thumb_func_end sub_8148F3C
-
- thumb_func_start sub_8149020
-sub_8149020: @ 8149020
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08149100
- cmp r0, 0x1
- ble _08149034
- cmp r0, 0x2
- beq _08149098
-_08149034:
- ldr r0, _08149060 @ =gMain
- ldr r2, [r0, 0x20]
- movs r0, 0x3
- ands r0, r2
- cmp r0, 0
- bne _08149100
- ldr r0, _08149064 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08149100
- movs r0, 0x4
- ands r2, r0
- cmp r2, 0
- beq _0814906C
- ldr r2, _08149068 @ =gPlttBufferUnfaded
- ldrh r1, [r2, 0x12]
- mov r0, sp
- strh r1, [r0]
- ldrh r1, [r2, 0x14]
- b _08149076
- .align 2, 0
-_08149060: .4byte gMain
-_08149064: .4byte gPaletteFade
-_08149068: .4byte gPlttBufferUnfaded
-_0814906C:
- ldr r2, _08149094 @ =gPlttBufferUnfaded
- ldrh r1, [r2, 0x14]
- mov r0, sp
- strh r1, [r0]
- ldrh r1, [r2, 0x12]
-_08149076:
- adds r0, 0x2
- strh r1, [r0]
- adds r4, r0, 0
- mov r0, sp
- movs r1, 0x9
- movs r2, 0x2
- bl LoadPalette
- adds r0, r4, 0
- movs r1, 0xA
- movs r2, 0x2
- bl LoadPalette
- b _08149100
- .align 2, 0
-_08149094: .4byte gPlttBufferUnfaded
-_08149098:
- ldr r0, _081490C8 @ =gMain
- ldr r2, [r0, 0x20]
- movs r0, 0x3
- ands r0, r2
- cmp r0, 0
- bne _08149100
- ldr r0, _081490CC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08149100
- movs r0, 0x4
- ands r2, r0
- cmp r2, 0
- beq _081490D8
- mov r1, sp
- ldr r2, _081490D0 @ =0x00003d27
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- ldr r2, _081490D4 @ =0x00000295
- b _081490E6
- .align 2, 0
-_081490C8: .4byte gMain
-_081490CC: .4byte gPaletteFade
-_081490D0: .4byte 0x00003d27
-_081490D4: .4byte 0x00000295
-_081490D8:
- mov r1, sp
- movs r2, 0xC7
- lsls r2, 2
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- ldr r2, _08149108 @ =0x00003d27
-_081490E6:
- adds r0, r2, 0
- strh r0, [r1]
- adds r4, r1, 0
- mov r0, sp
- movs r1, 0xC
- movs r2, 0x2
- bl LoadPalette
- adds r0, r4, 0
- movs r1, 0xD
- movs r2, 0x2
- bl LoadPalette
-_08149100:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08149108: .4byte 0x00003d27
- thumb_func_end sub_8149020
-
- thumb_func_start sub_814910C
-sub_814910C: @ 814910C
- push {lr}
- adds r2, r0, 0
- ldr r0, _08149124 @ =gUnknown_0203935C
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _08149128
- adds r0, r2, 0
- bl DestroySprite
- b _0814916C
- .align 2, 0
-_08149124: .4byte gUnknown_0203935C
-_08149128:
- movs r1, 0x20
- ldrsh r0, [r2, r1]
- lsls r0, 16
- ldrh r1, [r2, 0x32]
- orrs r0, r1
- ldrh r1, [r2, 0x30]
- adds r0, r1
- asrs r1, r0, 16
- strh r1, [r2, 0x20]
- strh r0, [r2, 0x32]
- cmp r1, 0xFF
- ble _08149144
- ldr r0, _08149158 @ =0x0000ffe0
- strh r0, [r2, 0x20]
-_08149144:
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- cmp r0, 0
- beq _08149164
- ldr r1, _0814915C @ =gUnknown_02039358
- ldr r0, _08149160 @ =gUnknown_0203935A
- ldrh r0, [r0]
- ldrh r1, [r1]
- adds r0, r1
- b _08149168
- .align 2, 0
-_08149158: .4byte 0x0000ffe0
-_0814915C: .4byte gUnknown_02039358
-_08149160: .4byte gUnknown_0203935A
-_08149164:
- ldr r0, _08149170 @ =gUnknown_02039358
- ldrh r0, [r0]
-_08149168:
- negs r0, r0
- strh r0, [r2, 0x26]
-_0814916C:
- pop {r0}
- bx r0
- .align 2, 0
-_08149170: .4byte gUnknown_02039358
- thumb_func_end sub_814910C
-
- thumb_func_start sub_8149174
-sub_8149174: @ 8149174
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- str r1, [sp, 0x4]
- str r2, [sp, 0x8]
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- lsls r3, 24
- lsrs r3, 24
- mov r8, r3
- movs r7, 0
- cmp r7, r8
- bcs _0814922A
- ldr r0, _0814923C @ =gSprites
- mov r10, r0
- movs r2, 0x3F
- mov r9, r2
-_0814919E:
- lsls r6, r7, 3
- ldr r0, [sp, 0x4]
- adds r6, r0
- ldrb r1, [r6, 0x1]
- ldrb r2, [r6, 0x2]
- ldrb r3, [r6, 0x3]
- ldr r0, _08149240 @ =gSpriteTemplate_8416B3C
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r5, r0, 4
- adds r5, r0
- lsls r5, 2
- mov r2, r10
- adds r4, r5, r2
- ldrb r2, [r6]
- lsls r1, r2, 26
- lsrs r1, 30
- lsrs r2, 6
- adds r0, r4, 0
- movs r3, 0
- bl CalcCenterToCornerVec
- ldrb r3, [r4, 0x5]
- movs r0, 0xC
- orrs r3, r0
- strb r3, [r4, 0x5]
- ldrb r1, [r6]
- lsls r1, 26
- lsrs r1, 30
- lsls r1, 6
- ldrb r2, [r4, 0x1]
- mov r0, r9
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x1]
- ldrb r1, [r6]
- lsrs r1, 6
- lsls r1, 6
- ldrb r2, [r4, 0x3]
- mov r0, r9
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x3]
- movs r0, 0xF
- ands r3, r0
- strb r3, [r4, 0x5]
- ldr r0, _08149244 @ =gSprites + 0x8
- adds r5, r0
- ldr r2, [sp, 0x8]
- str r2, [r5]
- ldrb r1, [r6]
- lsls r1, 28
- lsrs r1, 28
- adds r0, r4, 0
- bl StartSpriteAnim
- movs r1, 0
- mov r0, sp
- ldrh r0, [r0]
- strh r0, [r4, 0x2E]
- ldrh r0, [r6, 0x4]
- strh r0, [r4, 0x30]
- strh r1, [r4, 0x32]
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, r8
- bcc _0814919E
-_0814922A:
- 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
-_0814923C: .4byte gSprites
-_08149240: .4byte gSpriteTemplate_8416B3C
-_08149244: .4byte gSprites + 0x8
- thumb_func_end sub_8149174
-
- thumb_func_start sub_8149248
-sub_8149248: @ 8149248
- push {lr}
- ldr r1, _0814925C @ =gUnknown_08416B94
- ldr r2, _08149260 @ =gSpriteAnimTable_8416B84
- movs r0, 0
- movs r3, 0x9
- bl sub_8149174
- pop {r0}
- bx r0
- .align 2, 0
-_0814925C: .4byte gUnknown_08416B94
-_08149260: .4byte gSpriteAnimTable_8416B84
- thumb_func_end sub_8149248
-
- thumb_func_start sub_8149264
-sub_8149264: @ 8149264
- push {lr}
- ldr r1, _08149278 @ =gUnknown_08416C10
- ldr r2, _0814927C @ =gSpriteAnimTable_8416C04
- movs r0, 0x1
- movs r3, 0xC
- bl sub_8149174
- pop {r0}
- bx r0
- .align 2, 0
-_08149278: .4byte gUnknown_08416C10
-_0814927C: .4byte gSpriteAnimTable_8416C04
- thumb_func_end sub_8149264
-
- thumb_func_start sub_8149280
-sub_8149280: @ 8149280
- push {lr}
- ldr r1, _08149294 @ =gUnknown_08416C8C
- ldr r2, _08149298 @ =gSpriteAnimTable_8416C88
- movs r0, 0x1
- movs r3, 0x6
- bl sub_8149174
- pop {r0}
- bx r0
- .align 2, 0
-_08149294: .4byte gUnknown_08416C8C
-_08149298: .4byte gSpriteAnimTable_8416C88
- thumb_func_end sub_8149280
-
- thumb_func_start nullsub_82
-nullsub_82: @ 814929C
- bx lr
- thumb_func_end nullsub_82
-
- thumb_func_start sub_81492A0
-sub_81492A0: @ 81492A0
- push {r4,lr}
- ldr r4, _0814930C @ =gSprites
- movs r1, 0x2E
- ldrsh r2, [r0, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- adds r1, 0x3E
- ldrb r1, [r1]
- movs r2, 0x3E
- adds r2, r0
- mov r12, r2
- movs r2, 0x4
- ands r2, r1
- mov r1, r12
- ldrb r3, [r1]
- movs r1, 0x5
- negs r1, r1
- ands r1, r3
- orrs r1, r2
- mov r2, r12
- strb r1, [r2]
- movs r1, 0x2E
- ldrsh r2, [r0, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- ldrh r1, [r1, 0x20]
- strh r1, [r0, 0x20]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- ldrh r1, [r1, 0x22]
- adds r1, 0x8
- strh r1, [r0, 0x22]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- ldrh r1, [r1, 0x24]
- strh r1, [r0, 0x24]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- ldrh r1, [r1, 0x26]
- strh r1, [r0, 0x26]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0814930C: .4byte gSprites
- thumb_func_end sub_81492A0
-
- thumb_func_start intro_create_brendan_sprite
-intro_create_brendan_sprite: @ 8149310
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- ldr r0, _0814935C @ =gSpriteTemplate_8416CDC
- lsls r5, 16
- asrs r5, 16
- lsls r4, 16
- asrs r4, 16
- adds r1, r5, 0
- adds r2, r4, 0
- movs r3, 0
- bl CreateSprite
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- ldr r0, _08149360 @ =gSpriteTemplate_8416D2C
- adds r4, 0x8
- lsls r4, 16
- asrs r4, 16
- adds r1, r5, 0
- adds r2, r4, 0
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08149364 @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- strh r6, [r1, 0x2E]
- adds r0, r6, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0814935C: .4byte gSpriteTemplate_8416CDC
-_08149360: .4byte gSpriteTemplate_8416D2C
-_08149364: .4byte gSprites
- thumb_func_end intro_create_brendan_sprite
-
- thumb_func_start intro_create_may_sprite
-intro_create_may_sprite: @ 8149368
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- ldr r0, _081493B4 @ =gSpriteTemplate_8416CF4
- lsls r5, 16
- asrs r5, 16
- lsls r4, 16
- asrs r4, 16
- adds r1, r5, 0
- adds r2, r4, 0
- movs r3, 0
- bl CreateSprite
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- ldr r0, _081493B8 @ =gSpriteTemplate_8416D44
- adds r4, 0x8
- lsls r4, 16
- asrs r4, 16
- adds r1, r5, 0
- adds r2, r4, 0
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _081493BC @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- strh r6, [r1, 0x2E]
- adds r0, r6, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_081493B4: .4byte gSpriteTemplate_8416CF4
-_081493B8: .4byte gSpriteTemplate_8416D44
-_081493BC: .4byte gSprites
- thumb_func_end intro_create_may_sprite
-
- thumb_func_start nullsub_83
-nullsub_83: @ 81493C0
- bx lr
- thumb_func_end nullsub_83
-
- thumb_func_start sub_81493C4
-sub_81493C4: @ 81493C4
- push {r4,lr}
- ldr r4, _08149420 @ =gSprites
- movs r1, 0x2E
- ldrsh r2, [r0, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- adds r1, 0x3E
- ldrb r1, [r1]
- movs r2, 0x3E
- adds r2, r0
- mov r12, r2
- movs r2, 0x4
- ands r2, r1
- mov r1, r12
- ldrb r3, [r1]
- movs r1, 0x5
- negs r1, r1
- ands r1, r3
- orrs r1, r2
- mov r2, r12
- strb r1, [r2]
- movs r1, 0x2E
- ldrsh r2, [r0, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- ldrh r1, [r1, 0x22]
- strh r1, [r0, 0x22]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- ldrh r1, [r1, 0x24]
- strh r1, [r0, 0x24]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- ldrh r1, [r1, 0x26]
- strh r1, [r0, 0x26]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08149420: .4byte gSprites
- thumb_func_end sub_81493C4
-
- thumb_func_start intro_create_latios_sprite
-intro_create_latios_sprite: @ 8149424
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r2, r0, 0
- adds r5, r1, 0
- ldr r0, _08149490 @ =gSpriteTemplate_8416D7C
- mov r8, r0
- lsls r2, 16
- asrs r4, r2, 16
- ldr r0, _08149494 @ =0xffe00000
- adds r2, r0
- asrs r2, 16
- lsls r5, 16
- asrs r5, 16
- mov r0, r8
- adds r1, r2, 0
- adds r2, r5, 0
- movs r3, 0x2
- bl CreateSprite
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- adds r4, 0x20
- lsls r4, 16
- asrs r4, 16
- mov r0, r8
- adds r1, r4, 0
- adds r2, r5, 0
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _08149498 @ =gSprites
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- adds r0, r4, r5
- strh r6, [r0, 0x2E]
- movs r1, 0x1
- bl StartSpriteAnim
- adds r5, 0x1C
- adds r4, r5
- ldr r0, _0814949C @ =sub_81493C4
- str r0, [r4]
- adds r0, r6, 0
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08149490: .4byte gSpriteTemplate_8416D7C
-_08149494: .4byte 0xffe00000
-_08149498: .4byte gSprites
-_0814949C: .4byte sub_81493C4
- thumb_func_end intro_create_latios_sprite
-
- thumb_func_start intro_create_latias_sprite
-intro_create_latias_sprite: @ 81494A0
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r2, r0, 0
- adds r5, r1, 0
- ldr r0, _0814950C @ =gSpriteTemplate_8416D94
- mov r8, r0
- lsls r2, 16
- asrs r4, r2, 16
- ldr r0, _08149510 @ =0xffe00000
- adds r2, r0
- asrs r2, 16
- lsls r5, 16
- asrs r5, 16
- mov r0, r8
- adds r1, r2, 0
- adds r2, r5, 0
- movs r3, 0x2
- bl CreateSprite
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- adds r4, 0x20
- lsls r4, 16
- asrs r4, 16
- mov r0, r8
- adds r1, r4, 0
- adds r2, r5, 0
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _08149514 @ =gSprites
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- adds r0, r4, r5
- strh r6, [r0, 0x2E]
- movs r1, 0x1
- bl StartSpriteAnim
- adds r5, 0x1C
- adds r4, r5
- ldr r0, _08149518 @ =sub_81493C4
- str r0, [r4]
- adds r0, r6, 0
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0814950C: .4byte gSpriteTemplate_8416D94
-_08149510: .4byte 0xffe00000
-_08149514: .4byte gSprites
-_08149518: .4byte sub_81493C4
- thumb_func_end intro_create_latias_sprite
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/learn_move.s b/asm/learn_move.s
deleted file mode 100644
index 89cd2efb8..000000000
--- a/asm/learn_move.s
+++ /dev/null
@@ -1,2739 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_813265C
-sub_813265C: @ 813265C
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_813265C
-
- thumb_func_start sub_8132670
-sub_8132670: @ 8132670
- push {lr}
- sub sp, 0x4
- bl ScriptContext2_Enable
- ldr r0, _08132698 @ =sub_813269C
- movs r1, 0xA
- bl CreateTask
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_08132698: .4byte sub_813269C
- thumb_func_end sub_8132670
-
- thumb_func_start sub_813269C
-sub_813269C: @ 813269C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _081326C8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _081326C0
- ldr r0, _081326CC @ =sub_81326D8
- bl SetMainCallback2
- ldr r1, _081326D0 @ =gFieldCallback
- ldr r0, _081326D4 @ =sub_8080990
- str r0, [r1]
- adds r0, r4, 0
- bl DestroyTask
-_081326C0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081326C8: .4byte gPaletteFade
-_081326CC: .4byte sub_81326D8
-_081326D0: .4byte gFieldCallback
-_081326D4: .4byte sub_8080990
- thumb_func_end sub_813269C
-
- thumb_func_start sub_81326D8
-sub_81326D8: @ 81326D8
- push {r4,r5,lr}
- movs r1, 0x80
- lsls r1, 19
- movs r0, 0
- strh r0, [r1]
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl ResetTasks
- ldr r4, _08132778 @ =gUnknown_030007B0
- ldr r0, _0813277C @ =0x02017000
- str r0, [r4]
- bl sub_81332A0
- ldr r1, [r4]
- ldr r0, _08132780 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- ldr r2, _08132784 @ =0x000002c5
- adds r1, r2
- movs r5, 0
- strb r0, [r1]
- bl sub_8133558
- ldr r0, _08132788 @ =sub_813265C
- bl SetVBlankCallback
- ldr r4, _0813278C @ =gWindowConfig_81E7240
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- bl MenuZeroFillScreen
- ldr r4, _08132790 @ =gWindowConfig_81E6CE4
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- bl MenuZeroFillScreen
- ldr r0, _08132794 @ =REG_BG0VOFS
- strh r5, [r0]
- strh r5, [r0]
- adds r0, 0x2
- strh r5, [r0]
- strh r5, [r0]
- ldr r0, _08132798 @ =gUnknown_08402D80
- bl LoadSpriteSheet
- ldr r0, _0813279C @ =gUnknown_08402D88
- bl LoadSpritePalette
- bl sub_8133358
- movs r0, 0
- movs r1, 0
- movs r2, 0x2
- bl FillPalette
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- ldr r0, _081327A0 @ =sub_8132870
- bl SetMainCallback2
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08132778: .4byte gUnknown_030007B0
-_0813277C: .4byte 0x02017000
-_08132780: .4byte gSpecialVar_0x8004
-_08132784: .4byte 0x000002c5
-_08132788: .4byte sub_813265C
-_0813278C: .4byte gWindowConfig_81E7240
-_08132790: .4byte gWindowConfig_81E6CE4
-_08132794: .4byte REG_BG0VOFS
-_08132798: .4byte gUnknown_08402D80
-_0813279C: .4byte gUnknown_08402D88
-_081327A0: .4byte sub_8132870
- thumb_func_end sub_81326D8
-
- thumb_func_start sub_81327A4
-sub_81327A4: @ 81327A4
- push {r4,r5,lr}
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl ResetTasks
- ldr r4, _08132844 @ =gUnknown_030007B0
- ldr r0, _08132848 @ =0x02017000
- str r0, [r4]
- bl sub_8133558
- ldr r1, [r4]
- ldr r0, _0813284C @ =gSpecialVar_0x8005
- ldrh r0, [r0]
- ldr r2, _08132850 @ =0x000002c6
- adds r1, r2
- movs r5, 0
- strb r0, [r1]
- ldr r0, _08132854 @ =sub_813265C
- bl SetVBlankCallback
- ldr r4, _08132858 @ =gWindowConfig_81E7240
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- bl MenuZeroFillScreen
- ldr r4, _0813285C @ =gWindowConfig_81E6CE4
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- bl MenuZeroFillScreen
- movs r1, 0x80
- lsls r1, 19
- movs r2, 0x9A
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _08132860 @ =REG_BG0VOFS
- strh r5, [r0]
- subs r0, 0x2
- strh r5, [r0]
- adds r0, 0x4
- strh r5, [r0]
- strh r5, [r0]
- ldr r0, _08132864 @ =gUnknown_08402D80
- bl LoadSpriteSheet
- ldr r0, _08132868 @ =gUnknown_08402D88
- bl LoadSpritePalette
- bl sub_8133358
- movs r0, 0
- movs r1, 0
- movs r2, 0x2
- bl FillPalette
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- ldr r0, _0813286C @ =sub_8132870
- bl SetMainCallback2
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08132844: .4byte gUnknown_030007B0
-_08132848: .4byte 0x02017000
-_0813284C: .4byte gSpecialVar_0x8005
-_08132850: .4byte 0x000002c6
-_08132854: .4byte sub_813265C
-_08132858: .4byte gWindowConfig_81E7240
-_0813285C: .4byte gWindowConfig_81E6CE4
-_08132860: .4byte REG_BG0VOFS
-_08132864: .4byte gUnknown_08402D80
-_08132868: .4byte gUnknown_08402D88
-_0813286C: .4byte sub_8132870
- thumb_func_end sub_81327A4
-
- thumb_func_start sub_8132870
-sub_8132870: @ 8132870
- push {r4,lr}
- bl sub_8132908
- ldr r4, _081328E0 @ =gUnknown_030007B0
- ldr r1, [r4]
- ldrb r0, [r1, 0x1D]
- cmp r0, 0
- beq _08132896
- movs r0, 0
- strb r0, [r1, 0x1D]
- ldr r0, [r4]
- ldrb r1, [r0, 0x18]
- lsls r1, 1
- adds r1, 0x1
- lsls r1, 27
- lsrs r1, 24
- movs r0, 0x58
- bl sub_814AD7C
-_08132896:
- ldr r1, [r4]
- ldrb r0, [r1, 0x1E]
- cmp r0, 0
- beq _081328A6
- movs r0, 0
- strb r0, [r1, 0x1E]
- bl sub_8133800
-_081328A6:
- ldr r1, [r4]
- ldr r2, _081328E4 @ =0x000002c3
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _081328C8
- adds r2, 0x1
- adds r0, r1, r2
- ldrb r0, [r0]
- movs r1, 0x1
- bl sub_8133AEC
- ldr r0, [r4]
- ldr r1, _081328E4 @ =0x000002c3
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
-_081328C8:
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081328E0: .4byte gUnknown_030007B0
-_081328E4: .4byte 0x000002c3
- thumb_func_end sub_8132870
-
- thumb_func_start sub_81328E8
-sub_81328E8: @ 81328E8
- push {r4,lr}
- adds r1, r0, 0
- ldr r4, _08132904 @ =gStringVar4
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0x3
- movs r2, 0xF
- bl MenuPrintMessage
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08132904: .4byte gStringVar4
- thumb_func_end sub_81328E8
-
- thumb_func_start sub_8132908
-sub_8132908: @ 8132908
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- ldr r1, _0813292C @ =gUnknown_030007B0
- ldr r0, [r1]
- ldrb r0, [r0]
- adds r7, r1, 0
- cmp r0, 0x21
- bls _08132920
- b _08132FD6
-_08132920:
- lsls r0, 2
- ldr r1, _08132930 @ =_08132934
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0813292C: .4byte gUnknown_030007B0
-_08132930: .4byte _08132934
- .align 2, 0
-_08132934:
- .4byte _081329BC
- .4byte _08132A0C
- .4byte _08132A24
- .4byte _08132A2C
- .4byte _08132A60
- .4byte _08132A66
- .4byte _08132A98
- .4byte _08132FD6
- .4byte _08132AAA
- .4byte _08132AD0
- .4byte _08132FD6
- .4byte _08132FD6
- .4byte _08132B74
- .4byte _08132B98
- .4byte _08132DD8
- .4byte _08132DF8
- .4byte _08132BF0
- .4byte _08132C08
- .4byte _08132C2C
- .4byte _08132D40
- .4byte _08132D68
- .4byte _08132DB8
- .4byte _08132DC6
- .4byte _08132FD6
- .4byte _08132C74
- .4byte _08132C8C
- .4byte _08132CB0
- .4byte _08132D0C
- .4byte _08132E18
- .4byte _08132E7C
- .4byte _08132F58
- .4byte _08132F84
- .4byte _08132FA4
- .4byte _08132FBC
-_081329BC:
- ldr r1, [r7]
- ldrb r0, [r1]
- adds r0, 0x1
- movs r4, 0
- strb r0, [r1]
- bl sub_8132FEC
- movs r0, 0
- bl sub_8133030
- bl sub_8133800
- ldr r0, _08132A04 @ =gSprites
- adds r0, 0x64
- movs r1, 0x48
- strh r1, [r0]
- ldr r0, [r7]
- ldr r1, _08132A08 @ =0x000002c3
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- movs r0, 0x1
- negs r0, r0
- str r4, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- movs r1, 0x80
- lsls r1, 19
- movs r2, 0x9A
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- b _08132FD6
- .align 2, 0
-_08132A04: .4byte gSprites
-_08132A08: .4byte 0x000002c3
-_08132A0C:
- ldr r0, _08132A20 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08132A1A
- b _08132FD6
-_08132A1A:
- ldr r1, [r7]
- movs r0, 0x4
- b _08132FD4
- .align 2, 0
-_08132A20: .4byte gPaletteFade
-_08132A24:
- ldr r1, [r7]
- ldrb r0, [r1]
- adds r0, 0x1
- b _08132FD4
-_08132A2C:
- movs r0, 0
- bl sub_8133030
- bl sub_8133800
- ldr r2, _08132A54 @ =gUnknown_030007B0
- ldr r0, [r2]
- ldr r1, _08132A58 @ =0x000002c3
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- ldr r1, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, _08132A5C @ =gSprites
- adds r0, 0x64
- movs r1, 0x48
- strh r1, [r0]
- b _08132FD6
- .align 2, 0
-_08132A54: .4byte gUnknown_030007B0
-_08132A58: .4byte 0x000002c3
-_08132A5C: .4byte gSprites
-_08132A60:
- bl sub_81330E8
- b _08132A9C
-_08132A66:
- movs r0, 0
- bl sub_8133140
- bl sub_8133800
- ldr r2, _08132A8C @ =gUnknown_030007B0
- ldr r0, [r2]
- ldr r1, _08132A90 @ =0x000002c3
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- ldr r0, _08132A94 @ =gSprites
- adds r0, 0x64
- movs r1, 0x48
- strh r1, [r0]
- ldr r1, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- b _08132FD4
- .align 2, 0
-_08132A8C: .4byte gUnknown_030007B0
-_08132A90: .4byte 0x000002c3
-_08132A94: .4byte gSprites
-_08132A98:
- bl sub_8133248
-_08132A9C:
- lsls r0, 24
- cmp r0, 0
- beq _08132AA4
- b _08132FD6
-_08132AA4:
- bl sub_813362C
- b _08132FD6
-_08132AAA:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- bne _08132AB6
- b _08132FD6
-_08132AB6:
- movs r0, 0x15
- movs r1, 0x7
- movs r2, 0x1
- bl DisplayYesNoMenu
- ldr r0, _08132ACC @ =gUnknown_030007B0
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- b _08132FD4
- .align 2, 0
-_08132ACC: .4byte gUnknown_030007B0
-_08132AD0:
- bl ProcessMenuInputNoWrap_
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- bne _08132B3A
- bl sub_8133CA4
- ldr r4, _08132B1C @ =gUnknown_030007B0
- ldr r2, [r4]
- ldr r1, _08132B20 @ =0x000002c5
- adds r0, r2, r1
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08132B24 @ =gPlayerParty
- adds r0, r1
- ldrb r1, [r2, 0x1B]
- lsls r1, 1
- adds r2, 0x20
- adds r2, r1
- ldrh r1, [r2]
- bl GiveMoveToMon
- lsls r0, 16
- ldr r1, _08132B28 @ =0xffff0000
- cmp r0, r1
- beq _08132B34
- ldr r0, _08132B2C @ =gOtherText_PokeLearnedMove
- bl sub_81328E8
- ldr r1, _08132B30 @ =gSpecialVar_0x8004
- movs r0, 0x1
- strh r0, [r1]
- ldr r1, [r4]
- movs r0, 0x1F
- b _08132FD4
- .align 2, 0
-_08132B1C: .4byte gUnknown_030007B0
-_08132B20: .4byte 0x000002c5
-_08132B24: .4byte gPlayerParty
-_08132B28: .4byte 0xffff0000
-_08132B2C: .4byte gOtherText_PokeLearnedMove
-_08132B30: .4byte gSpecialVar_0x8004
-_08132B34:
- ldr r1, [r4]
- movs r0, 0x10
- b _08132FD4
-_08132B3A:
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _08132B48
- cmp r1, 0x1
- beq _08132B48
- b _08132FD6
-_08132B48:
- bl sub_8133CA4
- ldr r3, _08132B70 @ =gUnknown_030007B0
- ldr r1, [r3]
- movs r2, 0xB1
- lsls r2, 2
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _08132B60
- movs r0, 0x3
- strb r0, [r1]
-_08132B60:
- ldr r1, [r3]
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _08132B6C
- b _08132FD6
-_08132B6C:
- movs r0, 0x5
- b _08132FD4
- .align 2, 0
-_08132B70: .4byte gUnknown_030007B0
-_08132B74:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- bne _08132B80
- b _08132FD6
-_08132B80:
- movs r0, 0x15
- movs r1, 0x7
- movs r2, 0x1
- bl DisplayYesNoMenu
- ldr r0, _08132B94 @ =gUnknown_030007B0
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- b _08132FD4
- .align 2, 0
-_08132B94: .4byte gUnknown_030007B0
-_08132B98:
- bl ProcessMenuInputNoWrap_
- lsls r0, 24
- asrs r4, r0, 24
- cmp r4, 0
- bne _08132BB4
- bl sub_8133CA4
- ldr r0, _08132BB0 @ =gSpecialVar_0x8004
- strh r4, [r0]
- b _08132FCE
- .align 2, 0
-_08132BB0: .4byte gSpecialVar_0x8004
-_08132BB4:
- movs r0, 0x1
- negs r0, r0
- cmp r4, r0
- beq _08132BC2
- cmp r4, 0x1
- beq _08132BC2
- b _08132FD6
-_08132BC2:
- bl sub_8133CA4
- ldr r3, _08132BEC @ =gUnknown_030007B0
- ldr r1, [r3]
- movs r2, 0xB1
- lsls r2, 2
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _08132BDA
- movs r0, 0x3
- strb r0, [r1]
-_08132BDA:
- ldr r1, [r3]
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _08132BE6
- b _08132FD6
-_08132BE6:
- movs r0, 0x5
- b _08132FD4
- .align 2, 0
-_08132BEC: .4byte gUnknown_030007B0
-_08132BF0:
- ldr r0, _08132C00 @ =gOtherText_DeleteOlderMove
- bl sub_81328E8
- ldr r0, _08132C04 @ =gUnknown_030007B0
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- b _08132FD4
- .align 2, 0
-_08132C00: .4byte gOtherText_DeleteOlderMove
-_08132C04: .4byte gUnknown_030007B0
-_08132C08:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- bne _08132C14
- b _08132FD6
-_08132C14:
- movs r0, 0x15
- movs r1, 0x7
- movs r2, 0x1
- bl DisplayYesNoMenu
- ldr r0, _08132C28 @ =gUnknown_030007B0
- ldr r1, [r0]
- movs r0, 0x12
- b _08132FD4
- .align 2, 0
-_08132C28: .4byte gUnknown_030007B0
-_08132C2C:
- bl ProcessMenuInputNoWrap_
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- bne _08132C54
- bl sub_8133CA4
- ldr r0, _08132C4C @ =gOtherText_WhichMoveToForget
- bl sub_81328E8
- ldr r0, _08132C50 @ =gUnknown_030007B0
- ldr r1, [r0]
- movs r0, 0x13
- b _08132FD4
- .align 2, 0
-_08132C4C: .4byte gOtherText_WhichMoveToForget
-_08132C50: .4byte gUnknown_030007B0
-_08132C54:
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _08132C62
- cmp r1, 0x1
- beq _08132C62
- b _08132FD6
-_08132C62:
- bl sub_8133CA4
- ldr r0, _08132C70 @ =gUnknown_030007B0
- ldr r1, [r0]
- movs r0, 0x18
- b _08132FD4
- .align 2, 0
-_08132C70: .4byte gUnknown_030007B0
-_08132C74:
- ldr r0, _08132C84 @ =gOtherText_StopLearningMove
- bl sub_81328E8
- ldr r0, _08132C88 @ =gUnknown_030007B0
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- b _08132FD4
- .align 2, 0
-_08132C84: .4byte gOtherText_StopLearningMove
-_08132C88: .4byte gUnknown_030007B0
-_08132C8C:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- bne _08132C98
- b _08132FD6
-_08132C98:
- ldr r0, _08132CAC @ =gUnknown_030007B0
- ldr r1, [r0]
- movs r0, 0x1A
- strb r0, [r1]
- movs r0, 0x15
- movs r1, 0x7
- movs r2, 0x1
- bl DisplayYesNoMenu
- b _08132FD6
- .align 2, 0
-_08132CAC: .4byte gUnknown_030007B0
-_08132CB0:
- bl ProcessMenuInputNoWrap_
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- bne _08132CCC
- bl sub_8133CA4
- ldr r0, _08132CC8 @ =gUnknown_030007B0
- ldr r1, [r0]
- movs r0, 0x1B
- b _08132FD4
- .align 2, 0
-_08132CC8: .4byte gUnknown_030007B0
-_08132CCC:
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _08132CDA
- cmp r1, 0x1
- beq _08132CDA
- b _08132FD6
-_08132CDA:
- bl sub_8133CA4
- ldr r1, _08132D08 @ =gUnknown_030007B0
- ldr r2, [r1]
- movs r3, 0xB1
- lsls r3, 2
- adds r0, r2, r3
- ldrb r0, [r0]
- cmp r0, 0
- bne _08132CF2
- movs r0, 0x3
- strb r0, [r2]
-_08132CF2:
- ldr r2, [r1]
- adds r0, r2, r3
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _08132D00
- movs r0, 0x5
- strb r0, [r2]
-_08132D00:
- ldr r1, [r1]
- movs r0, 0x10
- b _08132FD4
- .align 2, 0
-_08132D08: .4byte gUnknown_030007B0
-_08132D0C:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- bne _08132D18
- b _08132FD6
-_08132D18:
- ldr r3, _08132D3C @ =gUnknown_030007B0
- ldr r1, [r3]
- movs r2, 0xB1
- lsls r2, 2
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _08132D2C
- movs r0, 0x3
- strb r0, [r1]
-_08132D2C:
- ldr r1, [r3]
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _08132D38
- b _08132FD6
-_08132D38:
- movs r0, 0x5
- b _08132FD4
- .align 2, 0
-_08132D3C: .4byte gUnknown_030007B0
-_08132D40:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- bne _08132D4C
- b _08132FD6
-_08132D4C:
- ldr r0, _08132D64 @ =gUnknown_030007B0
- ldr r1, [r0]
- movs r2, 0
- movs r0, 0x14
- strb r0, [r1]
- subs r0, 0x15
- str r2, [sp]
- movs r1, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- b _08132FD6
- .align 2, 0
-_08132D64: .4byte gUnknown_030007B0
-_08132D68:
- ldr r0, _08132DA4 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08132D76
- b _08132FD6
-_08132D76:
- ldr r0, _08132DA8 @ =gPlayerParty
- ldr r5, [r7]
- ldr r2, _08132DAC @ =0x000002c5
- adds r1, r5, r2
- ldrb r1, [r1]
- ldr r2, _08132DB0 @ =gPlayerPartyCount
- ldrb r2, [r2]
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldr r3, _08132DB4 @ =sub_81327A4
- ldrb r4, [r5, 0x1B]
- lsls r4, 1
- adds r5, 0x20
- adds r5, r4
- ldrh r4, [r5]
- str r4, [sp]
- bl sub_809D9F0
- ldr r1, [r7]
- movs r0, 0x1C
- b _08132FD4
- .align 2, 0
-_08132DA4: .4byte gPaletteFade
-_08132DA8: .4byte gPlayerParty
-_08132DAC: .4byte 0x000002c5
-_08132DB0: .4byte gPlayerPartyCount
-_08132DB4: .4byte sub_81327A4
-_08132DB8:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- bne _08132DC4
- b _08132FD6
-_08132DC4:
- b _08132FCE
-_08132DC6:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- b _08132FD6
-_08132DD8:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _08132DF4 @ =gUnknown_030007B0
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- b _08132FD4
- .align 2, 0
-_08132DF4: .4byte gUnknown_030007B0
-_08132DF8:
- ldr r0, _08132E10 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08132E06
- b _08132FD6
-_08132E06:
- ldr r0, _08132E14 @ =c2_exit_to_overworld_2_switch
- bl SetMainCallback2
- b _08132FD6
- .align 2, 0
-_08132E10: .4byte gPaletteFade
-_08132E14: .4byte c2_exit_to_overworld_2_switch
-_08132E18:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r5, _08132E74 @ =gUnknown_030007B0
- ldr r1, [r5]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl sub_8132FEC
- bl sub_8133800
- ldr r0, [r5]
- movs r4, 0xB1
- lsls r4, 2
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0
- bne _08132E4E
- movs r0, 0x1
- bl sub_8133030
-_08132E4E:
- ldr r0, [r5]
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _08132E66
- ldr r0, _08132E78 @ =gSprites
- adds r0, 0x64
- movs r1, 0x48
- strh r1, [r0]
- movs r0, 0x1
- bl sub_8133140
-_08132E66:
- ldr r0, [r5]
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0x1
- bl sub_8133AEC
- b _08132FD6
- .align 2, 0
-_08132E74: .4byte gUnknown_030007B0
-_08132E78: .4byte gSprites
-_08132E7C:
- ldr r0, _08132E9C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08132E8A
- b _08132FD6
-_08132E8A:
- ldr r1, [r7]
- ldr r0, _08132EA0 @ =0x000002c6
- adds r2, r1, r0
- ldrb r0, [r2]
- cmp r0, 0x4
- bne _08132EA4
- movs r0, 0x18
- b _08132FD4
- .align 2, 0
-_08132E9C: .4byte gPaletteFade
-_08132EA0: .4byte 0x000002c6
-_08132EA4:
- ldr r4, _08132F38 @ =0x000002c5
- adds r0, r1, r4
- ldrb r0, [r0]
- movs r6, 0x64
- muls r0, r6
- ldr r5, _08132F3C @ =gPlayerParty
- adds r0, r5
- ldrb r1, [r2]
- adds r1, 0xD
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- ldr r2, _08132F40 @ =gStringVar3
- movs r1, 0xD
- mov r9, r1
- mov r1, r9
- muls r1, r0
- ldr r0, _08132F44 @ =gMoveNames
- mov r8, r0
- add r1, r8
- adds r0, r2, 0
- bl StringCopy
- ldr r1, [r7]
- adds r0, r1, r4
- ldrb r0, [r0]
- muls r0, r6
- adds r0, r5
- ldr r2, _08132F48 @ =0x000002c6
- adds r1, r2
- ldrb r1, [r1]
- bl RemoveMonPPBonus
- ldr r3, [r7]
- adds r4, r3, r4
- ldrb r0, [r4]
- muls r0, r6
- adds r0, r5
- ldrb r2, [r3, 0x1B]
- lsls r2, 1
- adds r1, r3, 0
- adds r1, 0x20
- adds r1, r2
- ldrh r1, [r1]
- ldr r2, _08132F48 @ =0x000002c6
- adds r3, r2
- ldrb r2, [r3]
- bl SetMonMoveSlot
- ldr r0, _08132F4C @ =gStringVar2
- ldr r1, [r7]
- ldrb r2, [r1, 0x1B]
- lsls r2, 1
- adds r1, 0x20
- adds r1, r2
- ldrh r1, [r1]
- mov r2, r9
- muls r2, r1
- adds r1, r2, 0
- add r1, r8
- bl StringCopy
- ldr r0, _08132F50 @ =gOtherText_ForgotMove123
- bl sub_81328E8
- ldr r1, [r7]
- movs r0, 0x1E
- strb r0, [r1]
- ldr r1, _08132F54 @ =gSpecialVar_0x8004
- movs r0, 0x1
- strh r0, [r1]
- b _08132FD6
- .align 2, 0
-_08132F38: .4byte 0x000002c5
-_08132F3C: .4byte gPlayerParty
-_08132F40: .4byte gStringVar3
-_08132F44: .4byte gMoveNames
-_08132F48: .4byte 0x000002c6
-_08132F4C: .4byte gStringVar2
-_08132F50: .4byte gOtherText_ForgotMove123
-_08132F54: .4byte gSpecialVar_0x8004
-_08132F58:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- beq _08132FD6
- ldr r0, _08132F78 @ =gOtherText_ForgotOrDidNotLearnMove / deuOtherText_ForgotAndLearned
- bl sub_81328E8
- ldr r0, _08132F7C @ =gUnknown_030007B0
- ldr r1, [r0]
- movs r0, 0x1F
- strb r0, [r1]
- ldr r0, _08132F80 @ =0x0000016f
- bl PlayFanfare
- b _08132FD6
- .align 2, 0
-.ifdef ENGLISH
-_08132F78: .4byte gOtherText_ForgotOrDidNotLearnMove
-.else
-_08132F78: .4byte deuOtherText_ForgotAndLearned
-.endif
-_08132F7C: .4byte gUnknown_030007B0
-_08132F80: .4byte 0x0000016f
-_08132F84:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- beq _08132FD6
- ldr r0, _08132F9C @ =0x0000016f
- bl PlayFanfare
- ldr r0, _08132FA0 @ =gUnknown_030007B0
- ldr r1, [r0]
- movs r0, 0x20
- b _08132FD4
- .align 2, 0
-_08132F9C: .4byte 0x0000016f
-_08132FA0: .4byte gUnknown_030007B0
-_08132FA4:
- bl IsFanfareTaskInactive
- lsls r0, 24
- cmp r0, 0
- beq _08132FD6
- ldr r0, _08132FB8 @ =gUnknown_030007B0
- ldr r1, [r0]
- movs r0, 0x21
- b _08132FD4
- .align 2, 0
-_08132FB8: .4byte gUnknown_030007B0
-_08132FBC:
- ldr r0, _08132FE4 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08132FD6
- movs r0, 0x5
- bl PlaySE
-_08132FCE:
- ldr r0, _08132FE8 @ =gUnknown_030007B0
- ldr r1, [r0]
- movs r0, 0xE
-_08132FD4:
- strb r0, [r1]
-_08132FD6:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08132FE4: .4byte gMain
-_08132FE8: .4byte gUnknown_030007B0
- thumb_func_end sub_8132908
-
- thumb_func_start sub_8132FEC
-sub_8132FEC: @ 8132FEC
- push {r4-r6,lr}
- ldr r0, _08133024 @ =gWindowConfig_81E7240
- bl BasicInitMenuWindow
- movs r5, 0
- ldr r4, _08133028 @ =gUnknown_08402CF8
- adds r6, r4, 0
-_08132FFA:
- lsls r3, r5, 2
- ldrb r0, [r4]
- adds r1, r6, 0x1
- adds r1, r3, r1
- ldrb r1, [r1]
- adds r2, r6, 0x2
- adds r3, r2
- ldrb r2, [r3]
- ldrb r3, [r4, 0x3]
- bl MenuDrawTextWindow
- adds r4, 0x4
- adds r5, 0x1
- cmp r5, 0x3
- bls _08132FFA
- ldr r0, _0813302C @ =gWindowConfig_81E6CE4
- bl BasicInitMenuWindow
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08133024: .4byte gWindowConfig_81E7240
-_08133028: .4byte gUnknown_08402CF8
-_0813302C: .4byte gWindowConfig_81E6CE4
- thumb_func_end sub_8132FEC
-
- thumb_func_start sub_8133030
-sub_8133030: @ 8133030
- push {r4-r7,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r4, _081330D4 @ =gSprites
- ldr r5, _081330D8 @ =gUnknown_030007B0
- ldr r0, [r5]
- ldrb r0, [r0, 0x3]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- adds r1, 0x3E
- ldrb r3, [r1]
- movs r2, 0x5
- negs r2, r2
- adds r0, r2, 0
- ands r0, r3
- strb r0, [r1]
- ldr r0, [r5]
- ldrb r1, [r0, 0x4]
- 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]
- movs r2, 0
- ldr r6, _081330DC @ =gUnknown_08402D08
- movs r3, 0x4
-_08133070:
- ldr r0, [r5]
- adds r0, r2
- ldrb r1, [r0, 0x7]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r3
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0xF
- ble _08133070
- ldr r0, [r6]
- cmp r0, 0
- beq _081330B4
- ldr r5, _081330E0 @ =gTileBuffer
- adds r4, r6, 0
-_08133096:
- ldr r1, [r4]
- adds r0, r5, 0
- movs r2, 0x40
- movs r3, 0x2
- bl sub_8072C74
- ldrb r1, [r4, 0x4]
- ldrb r2, [r4, 0x5]
- adds r0, r5, 0
- bl MenuPrint
- adds r4, 0x8
- ldr r0, [r4]
- cmp r0, 0
- bne _08133096
-_081330B4:
- cmp r7, 0
- bne _081330CC
- ldr r0, _081330E4 @ =gOtherText_TeachWhichMove
- movs r1, 0x20
- str r1, [sp]
- movs r1, 0x1
- str r1, [sp, 0x4]
- movs r1, 0x18
- movs r2, 0x78
- movs r3, 0xC0
- bl sub_8072AB0
-_081330CC:
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081330D4: .4byte gSprites
-_081330D8: .4byte gUnknown_030007B0
-_081330DC: .4byte gUnknown_08402D08
-_081330E0: .4byte gTileBuffer
-_081330E4: .4byte gOtherText_TeachWhichMove
- thumb_func_end sub_8133030
-
- thumb_func_start sub_81330E8
-sub_81330E8: @ 81330E8
- push {r4,lr}
- ldr r0, _08133134 @ =gMain
- ldrh r2, [r0, 0x2E]
- movs r1, 0x30
- ands r1, r2
- negs r0, r1
- orrs r0, r1
- lsrs r4, r0, 31
- ldr r0, _08133138 @ =gSaveBlock2
- ldrb r0, [r0, 0x13]
- cmp r0, 0x1
- bne _0813310C
- movs r0, 0xC0
- lsls r0, 2
- ands r0, r2
- cmp r0, 0
- beq _0813310C
- adds r4, 0x1
-_0813310C:
- cmp r4, 0
- beq _0813312A
- movs r0, 0x5
- bl PlaySE
- ldr r2, _0813313C @ =gUnknown_030007B0
- ldr r1, [r2]
- movs r0, 0x5
- strb r0, [r1]
- ldr r0, [r2]
- movs r1, 0xB1
- lsls r1, 2
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
-_0813312A:
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08133134: .4byte gMain
-_08133138: .4byte gSaveBlock2
-_0813313C: .4byte gUnknown_030007B0
- thumb_func_end sub_81330E8
-
- thumb_func_start sub_8133140
-sub_8133140: @ 8133140
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x8]
- ldr r4, _08133234 @ =gSprites
- ldr r5, _08133238 @ =gUnknown_030007B0
- ldr r0, [r5]
- ldrb r0, [r0, 0x3]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- adds r1, 0x3E
- ldrb r2, [r1]
- movs r3, 0x5
- negs r3, r3
- adds r0, r3, 0
- ands r0, r2
- strb r0, [r1]
- ldr r0, [r5]
- ldrb r1, [r0, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r2, [r0]
- adds r1, r3, 0
- ands r1, r2
- strb r1, [r0]
- movs r6, 0
- ldr r7, _0813323C @ =gUnknown_08402D08
-_0813318A:
- ldr r0, [r5]
- adds r0, r6
- ldrb r0, [r0, 0x7]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- adds r1, 0x3E
- ldrb r2, [r1]
- adds r0, r3, 0
- ands r0, r2
- strb r0, [r1]
- adds r6, 0x1
- cmp r6, 0xF
- ble _0813318A
- movs r6, 0
- ldr r0, [r7]
- cmp r0, 0
- beq _08133208
- mov r9, r7
- mov r10, r6
- movs r0, 0x24
- add r0, r9
- mov r8, r0
-_081331BA:
- mov r0, r9
- adds r0, 0x20
- add r0, r10
- ldr r1, [r0]
- ldr r0, _08133240 @ =gTileBuffer
- movs r2, 0x40
- movs r3, 0x2
- bl sub_8072C74
- mov r0, r8
- ldrb r5, [r0]
- ldrb r4, [r0, 0x1]
- ldr r0, _08133240 @ =gTileBuffer
- adds r1, r5, 0
- adds r2, r4, 0
- bl MenuPrint
- cmp r6, 0
- beq _081331F8
- adds r1, r4, 0x2
- lsls r1, 24
- lsrs r1, 24
- adds r2, r5, 0x7
- lsls r2, 24
- lsrs r2, 24
- adds r3, r4, 0x3
- lsls r3, 24
- lsrs r3, 24
- adds r0, r5, 0
- bl MenuZeroFillWindowRect
-_081331F8:
- movs r0, 0x8
- add r10, r0
- add r8, r0
- adds r7, 0x8
- adds r6, 0x1
- ldr r0, [r7]
- cmp r0, 0
- bne _081331BA
-_08133208:
- ldr r0, [sp, 0x8]
- cmp r0, 0
- bne _08133222
- ldr r0, _08133244 @ =gOtherText_TeachWhichMove
- movs r1, 0x20
- str r1, [sp]
- movs r1, 0x1
- str r1, [sp, 0x4]
- movs r1, 0x18
- movs r2, 0x78
- movs r3, 0xC0
- bl sub_8072AB0
-_08133222:
- 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
-_08133234: .4byte gSprites
-_08133238: .4byte gUnknown_030007B0
-_0813323C: .4byte gUnknown_08402D08
-_08133240: .4byte gTileBuffer
-_08133244: .4byte gOtherText_TeachWhichMove
- thumb_func_end sub_8133140
-
- thumb_func_start sub_8133248
-sub_8133248: @ 8133248
- push {r4,lr}
- ldr r0, _08133294 @ =gMain
- ldrh r2, [r0, 0x2E]
- movs r1, 0x30
- ands r1, r2
- negs r0, r1
- orrs r0, r1
- lsrs r4, r0, 31
- ldr r0, _08133298 @ =gSaveBlock2
- ldrb r0, [r0, 0x13]
- cmp r0, 0x1
- bne _0813326C
- movs r0, 0xC0
- lsls r0, 2
- ands r0, r2
- cmp r0, 0
- beq _0813326C
- adds r4, 0x1
-_0813326C:
- cmp r4, 0
- beq _0813328A
- movs r0, 0x5
- bl PlaySE
- ldr r2, _0813329C @ =gUnknown_030007B0
- ldr r1, [r2]
- movs r3, 0
- movs r0, 0x3
- strb r0, [r1]
- ldr r0, [r2]
- movs r1, 0xB1
- lsls r1, 2
- adds r0, r1
- strb r3, [r0]
-_0813328A:
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08133294: .4byte gMain
-_08133298: .4byte gSaveBlock2
-_0813329C: .4byte gUnknown_030007B0
- thumb_func_end sub_8133248
-
- thumb_func_start sub_81332A0
-sub_81332A0: @ 81332A0
- push {r4,lr}
- ldr r2, _081332F8 @ =gUnknown_030007B0
- ldr r0, [r2]
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r2]
- strb r1, [r0, 0x2]
- ldr r0, [r2]
- strb r1, [r0, 0x19]
- ldr r0, [r2]
- strb r1, [r0, 0x18]
- ldr r0, [r2]
- strb r1, [r0, 0x1C]
- ldr r0, [r2]
- strb r1, [r0, 0x1A]
- ldr r0, [r2]
- strb r1, [r0, 0x1B]
- ldr r0, [r2]
- strb r1, [r0, 0x1D]
- ldr r0, [r2]
- strb r1, [r0, 0x1E]
- ldr r0, [r2]
- ldr r3, _081332FC @ =0x000002c3
- adds r0, r3
- strb r1, [r0]
- ldr r0, [r2]
- adds r3, 0x1
- adds r0, r3
- strb r1, [r0]
- movs r3, 0
- adds r4, r2, 0
- movs r2, 0
-_081332E0:
- ldr r0, [r4]
- lsls r1, r3, 1
- adds r0, 0x20
- adds r0, r1
- strh r2, [r0]
- adds r3, 0x1
- cmp r3, 0x13
- ble _081332E0
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081332F8: .4byte gUnknown_030007B0
-_081332FC: .4byte 0x000002c3
- thumb_func_end sub_81332A0
-
- thumb_func_start sub_8133300
-sub_8133300: @ 8133300
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 1
- movs r0, 0xFF
- ands r1, r0
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0x1
- beq _08133324
- cmp r0, 0x1
- ble _0813334A
- cmp r0, 0x2
- beq _08133338
- b _0813334A
-_08133324:
- adds r0, r1, 0
- movs r1, 0x3
- bl Sin
- ldrh r1, [r4, 0x32]
- adds r2, r0, 0
- muls r2, r1
- adds r0, r2, 0
- strh r0, [r4, 0x24]
- b _0813334A
-_08133338:
- adds r0, r1, 0
- movs r1, 0x1
- bl Sin
- ldrh r1, [r4, 0x32]
- adds r2, r0, 0
- muls r2, r1
- adds r0, r2, 0
- strh r0, [r4, 0x26]
-_0813334A:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8133300
-
- thumb_func_start sub_8133358
-sub_8133358: @ 8133358
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- ldr r6, _0813353C @ =gSpriteTemplate_8402D90
- adds r0, r6, 0
- movs r1, 0x8
- movs r2, 0x10
- movs r3, 0
- bl CreateSprite
- ldr r4, _08133540 @ =gUnknown_030007B0
- ldr r1, [r4]
- strb r0, [r1, 0x3]
- ldr r5, _08133544 @ =gSprites
- ldr r2, [r4]
- ldrb r1, [r2, 0x3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0x1
- mov r8, r1
- mov r1, r8
- strh r1, [r0, 0x2E]
- ldrb r1, [r2, 0x3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r1, _08133548 @ =0x0000ffff
- strh r1, [r0, 0x32]
- adds r0, r6, 0
- movs r1, 0x48
- movs r2, 0x10
- movs r3, 0
- bl CreateSprite
- ldr r1, [r4]
- strb r0, [r1, 0x4]
- ldr r0, [r4]
- ldrb r1, [r0, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0x1
- bl StartSpriteAnim
- ldr r2, [r4]
- ldrb r1, [r2, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- mov r1, r8
- strh r1, [r0, 0x2E]
- ldrb r1, [r2, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- mov r1, r8
- strh r1, [r0, 0x32]
- ldr r0, _0813354C @ =gSpriteTemplate_8402DC0
- mov r9, r0
- movs r1, 0xA0
- movs r2, 0x4
- movs r3, 0
- bl CreateSprite
- ldr r1, [r4]
- strb r0, [r1, 0x5]
- ldr r0, [r4]
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0x1
- bl StartSpriteAnim
- ldr r2, [r4]
- ldrb r1, [r2, 0x5]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r6, 0x2
- strh r6, [r0, 0x2E]
- ldrb r1, [r2, 0x5]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0x1
- negs r1, r1
- strh r1, [r0, 0x32]
- mov r0, r9
- movs r1, 0xA0
- movs r2, 0x3C
- movs r3, 0
- bl CreateSprite
- ldr r1, [r4]
- strb r0, [r1, 0x6]
- ldr r2, [r4]
- ldrb r1, [r2, 0x6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r6, [r0, 0x2E]
- ldrb r1, [r2, 0x6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- mov r1, r8
- strh r1, [r0, 0x32]
- movs r5, 0
- ldr r6, _08133550 @ =gSpriteTemplate_8402E08
-_0813344E:
- adds r2, r5, 0
- cmp r5, 0
- bge _08133456
- adds r2, r5, 0x3
-_08133456:
- asrs r2, 2
- lsls r1, r2, 2
- subs r1, r5, r1
- lsls r1, 19
- movs r0, 0xE0
- lsls r0, 13
- adds r1, r0
- asrs r1, 16
- lsls r2, 19
- movs r0, 0xD0
- lsls r0, 14
- adds r2, r0
- asrs r2, 16
- adds r0, r6, 0
- movs r3, 0
- bl CreateSprite
- ldr r1, [r4]
- adds r2, r5, 0x4
- adds r1, 0x3
- adds r1, r2
- strb r0, [r1]
- ldr r0, [r4]
- adds r0, 0x3
- adds r0, r2
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08133544 @ =gSprites
- adds r0, r1
- movs r1, 0x2
- bl StartSpriteAnim
- adds r5, 0x1
- cmp r5, 0x7
- ble _0813344E
- movs r5, 0
- ldr r7, _08133550 @ =gSpriteTemplate_8402E08
- ldr r6, _08133540 @ =gUnknown_030007B0
-_081334A6:
- adds r2, r5, 0
- cmp r5, 0
- bge _081334AE
- adds r2, r5, 0x3
-_081334AE:
- asrs r2, 2
- lsls r1, r2, 2
- subs r1, r5, r1
- lsls r1, 19
- movs r0, 0xE0
- lsls r0, 13
- adds r1, r0
- asrs r1, 16
- lsls r2, 19
- movs r0, 0xB8
- lsls r0, 15
- adds r2, r0
- asrs r2, 16
- adds r0, r7, 0
- movs r3, 0
- bl CreateSprite
- ldr r1, [r6]
- adds r2, r5, 0
- adds r2, 0xC
- adds r1, 0x3
- adds r1, r2
- strb r0, [r1]
- ldr r0, [r6]
- adds r0, 0x3
- adds r0, r2
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _08133544 @ =gSprites
- adds r0, r4
- movs r1, 0x2
- bl StartSpriteAnim
- adds r5, 0x1
- cmp r5, 0x7
- ble _081334A6
- movs r5, 0
- ldr r3, _08133540 @ =gUnknown_030007B0
- movs r2, 0x4
-_08133500:
- ldr r0, [r3]
- adds r0, 0x3
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r2
- strb r1, [r0]
- adds r5, 0x1
- cmp r5, 0x13
- ble _08133500
- ldr r1, _08133548 @ =0x0000ffff
- ldr r3, _08133554 @ =0x00002d9f
- movs r0, 0x12
- str r0, [sp]
- movs r0, 0x10
- movs r2, 0xC
- bl CreateBlendedOutlineCursor
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813353C: .4byte gSpriteTemplate_8402D90
-_08133540: .4byte gUnknown_030007B0
-_08133544: .4byte gSprites
-_08133548: .4byte 0x0000ffff
-_0813354C: .4byte gSpriteTemplate_8402DC0
-_08133550: .4byte gSpriteTemplate_8402E08
-_08133554: .4byte 0x00002d9f
- thumb_func_end sub_8133358
-
- thumb_func_start sub_8133558
-sub_8133558: @ 8133558
- push {r4-r6,lr}
- sub sp, 0xC
- ldr r5, _081335F4 @ =gUnknown_030007B0
- ldr r1, [r5]
- ldr r2, _081335F8 @ =0x000002c5
- adds r0, r1, r2
- ldrb r2, [r0]
- movs r0, 0x64
- muls r0, r2
- ldr r2, _081335FC @ =gPlayerParty
- adds r0, r2
- adds r1, 0x20
- bl GetMoveRelearnerMoves
- ldr r1, [r5]
- strb r0, [r1, 0x1A]
- movs r4, 0
- ldr r0, [r5]
- ldrb r0, [r0, 0x1A]
- cmp r4, r0
- bge _081335AA
- adds r6, r5, 0
- movs r5, 0x52
-_08133586:
- lsls r2, r4, 1
- ldr r1, [r6]
- adds r0, r1, r5
- adds r1, 0x20
- adds r1, r2
- ldrh r2, [r1]
- movs r1, 0xD
- muls r1, r2
- ldr r2, _08133600 @ =gMoveNames
- adds r1, r2
- bl StringCopy
- adds r5, 0x19
- adds r4, 0x1
- ldr r0, [r6]
- ldrb r0, [r0, 0x1A]
- cmp r4, r0
- blt _08133586
-_081335AA:
- ldr r4, _081335F4 @ =gUnknown_030007B0
- ldr r0, [r4]
- ldr r1, _081335F8 @ =0x000002c5
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _081335FC @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- ldr r0, _08133604 @ =gStringVar1
- mov r1, sp
- bl StringCopy10
- ldr r0, [r4]
- ldrb r2, [r0, 0x1A]
- lsls r1, r2, 1
- adds r1, r2
- lsls r1, 3
- adds r1, r2
- adds r1, 0x52
- adds r0, r1
- ldr r1, _08133608 @ =gUnknownText_Exit
- bl StringCopy
- ldr r1, [r4]
- ldrb r0, [r1, 0x1A]
- adds r0, 0x1
- strb r0, [r1, 0x1A]
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081335F4: .4byte gUnknown_030007B0
-_081335F8: .4byte 0x000002c5
-_081335FC: .4byte gPlayerParty
-_08133600: .4byte gMoveNames
-_08133604: .4byte gStringVar1
-_08133608: .4byte gUnknownText_Exit
- thumb_func_end sub_8133558
-
- thumb_func_start sub_813360C
-sub_813360C: @ 813360C
- lsls r0, 24
- ldr r3, _08133628 @ =gUnknown_030007B0
- ldr r2, [r3]
- ldrb r1, [r2, 0x18]
- strb r1, [r2, 0x1C]
- ldr r1, [r3]
- lsrs r0, 24
- ldrb r2, [r1, 0x18]
- adds r0, r2
- strb r0, [r1, 0x18]
- ldr r1, [r3]
- movs r0, 0x1
- strb r0, [r1, 0x1D]
- bx lr
- .align 2, 0
-_08133628: .4byte gUnknown_030007B0
- thumb_func_end sub_813360C
-
- thumb_func_start sub_813362C
-sub_813362C: @ 813362C
- push {r4,r5,lr}
- ldr r2, _08133670 @ =gMain
- ldrh r1, [r2, 0x30]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08133688
- ldr r4, _08133674 @ =gUnknown_030007B0
- ldr r0, [r4]
- ldrb r0, [r0, 0x1B]
- cmp r0, 0
- bne _08133646
- b _08133796
-_08133646:
- movs r0, 0x5
- bl PlaySE
- ldr r1, [r4]
- ldrb r0, [r1, 0x1B]
- subs r0, 0x1
- strb r0, [r1, 0x1B]
- ldr r0, [r4]
- ldr r1, _08133678 @ =0x000002c3
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- ldr r1, [r4]
- ldrb r0, [r1, 0x18]
- cmp r0, 0
- beq _0813367C
- movs r0, 0x1
- negs r0, r0
- bl sub_813360C
- b _08133796
- .align 2, 0
-_08133670: .4byte gMain
-_08133674: .4byte gUnknown_030007B0
-_08133678: .4byte 0x000002c3
-_0813367C:
- ldrb r0, [r1, 0x19]
- cmp r0, 0
- bne _08133684
- b _08133796
-_08133684:
- subs r0, 0x1
- b _081336DC
-_08133688:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081336E8
- ldr r4, _081336C8 @ =gUnknown_030007B0
- ldr r0, [r4]
- ldrb r1, [r0, 0x1B]
- ldrb r0, [r0, 0x1A]
- subs r0, 0x1
- cmp r1, r0
- blt _081336A0
- b _08133796
-_081336A0:
- movs r0, 0x5
- bl PlaySE
- ldr r1, [r4]
- ldrb r0, [r1, 0x1B]
- adds r0, 0x1
- strb r0, [r1, 0x1B]
- ldr r0, [r4]
- ldr r3, _081336CC @ =0x000002c3
- adds r0, r3
- movs r1, 0x1
- strb r1, [r0]
- ldr r1, [r4]
- ldrb r0, [r1, 0x18]
- cmp r0, 0x2
- beq _081336D0
- movs r0, 0x1
- bl sub_813360C
- b _08133796
- .align 2, 0
-_081336C8: .4byte gUnknown_030007B0
-_081336CC: .4byte 0x000002c3
-_081336D0:
- ldrb r2, [r1, 0x19]
- ldrb r0, [r1, 0x1A]
- subs r0, 0x3
- cmp r2, r0
- beq _08133796
- adds r0, r2, 0x1
-_081336DC:
- strb r0, [r1, 0x19]
- ldr r1, [r4]
- ldrb r0, [r1, 0x1E]
- adds r0, 0x1
- strb r0, [r1, 0x1E]
- b _08133796
-_081336E8:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0813376C
- movs r0, 0x5
- bl PlaySE
- ldr r5, _08133738 @ =gUnknown_030007B0
- ldr r2, [r5]
- ldrb r1, [r2, 0x1B]
- ldrb r0, [r2, 0x1A]
- subs r0, 0x1
- cmp r1, r0
- beq _08133748
- movs r0, 0x8
- strb r0, [r2]
- ldr r0, _0813373C @ =gStringVar2
- ldr r1, [r5]
- ldrb r3, [r1, 0x1B]
- lsls r2, r3, 1
- adds r2, r3
- lsls r2, 3
- adds r2, r3
- adds r2, 0x52
- adds r1, r2
- bl StringCopy
- ldr r4, _08133740 @ =gStringVar4
- ldr r1, _08133744 @ =gOtherText_TeachSpecificMove
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0x3
- movs r2, 0xF
- bl MenuPrintMessage
- b _08133796
- .align 2, 0
-_08133738: .4byte gUnknown_030007B0
-_0813373C: .4byte gStringVar2
-_08133740: .4byte gStringVar4
-_08133744: .4byte gOtherText_TeachSpecificMove
-_08133748:
- ldr r4, _08133764 @ =gStringVar4
- ldr r1, _08133768 @ =gOtherText_GiveUpTeachingMove
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0x3
- movs r2, 0xF
- bl MenuPrintMessage
- ldr r1, [r5]
- movs r0, 0xC
- strb r0, [r1]
- b _08133796
- .align 2, 0
-_08133764: .4byte gStringVar4
-_08133768: .4byte gOtherText_GiveUpTeachingMove
-_0813376C:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08133796
- movs r0, 0x5
- bl PlaySE
- ldr r0, _081337D4 @ =gUnknown_030007B0
- ldr r1, [r0]
- movs r0, 0xC
- strb r0, [r1]
- ldr r4, _081337D8 @ =gStringVar4
- ldr r1, _081337DC @ =gOtherText_GiveUpTeachingMove
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0x3
- movs r2, 0xF
- bl MenuPrintMessage
-_08133796:
- ldr r0, _081337D4 @ =gUnknown_030007B0
- ldr r4, [r0]
- ldrb r0, [r4, 0x1A]
- cmp r0, 0x3
- bls _081337F8
- ldr r3, _081337E0 @ =gSprites
- adds r5, r3, 0
- adds r5, 0xC6
- ldrb r0, [r5]
- movs r1, 0x5
- negs r1, r1
- adds r2, r1, 0
- ands r2, r0
- strb r2, [r5]
- movs r0, 0x85
- lsls r0, 1
- adds r0, r3
- mov r12, r0
- ldrb r0, [r0]
- adds r3, r1, 0
- ands r3, r0
- mov r1, r12
- strb r3, [r1]
- ldrb r0, [r4, 0x19]
- cmp r0, 0
- bne _081337E4
- movs r1, 0x4
- adds r0, r2, 0
- orrs r0, r1
- strb r0, [r5]
- b _081337F8
- .align 2, 0
-_081337D4: .4byte gUnknown_030007B0
-_081337D8: .4byte gStringVar4
-_081337DC: .4byte gOtherText_GiveUpTeachingMove
-_081337E0: .4byte gSprites
-_081337E4:
- ldrb r1, [r4, 0x19]
- ldrb r0, [r4, 0x1A]
- subs r0, 0x3
- cmp r1, r0
- bne _081337F8
- movs r1, 0x4
- adds r0, r3, 0
- orrs r0, r1
- mov r3, r12
- strb r0, [r3]
-_081337F8:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_813362C
-
- thumb_func_start sub_8133800
-sub_8133800: @ 8133800
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r1, _08133834 @ =gUnknown_030007B0
- ldr r0, [r1]
- ldrb r6, [r0, 0x19]
- ldr r3, _08133838 @ =gTileBuffer
- mov r10, r1
- ldr r0, _0813383C @ =gBattleMoves
- mov r9, r0
- movs r1, 0x2
- mov r8, r1
-_0813381C:
- mov r4, r10
- ldr r2, [r4]
- ldrb r0, [r2, 0x1A]
- cmp r6, r0
- bcc _08133844
- adds r0, r3, 0
- ldr r1, _08133840 @ =gEmptyString_81E72B0
- movs r2, 0x90
- movs r3, 0
- bl sub_8072C74
- b _081338FA
- .align 2, 0
-_08133834: .4byte gUnknown_030007B0
-_08133838: .4byte gTileBuffer
-_0813383C: .4byte gBattleMoves
-_08133840: .4byte gEmptyString_81E72B0
-_08133844:
- ldrb r0, [r2, 0x1A]
- subs r0, 0x1
- cmp r6, r0
- bne _08133860
- adds r0, r3, 0
- ldr r1, _0813385C @ =gUnknownText_Exit
- movs r2, 0x90
- movs r3, 0
- bl sub_8072C74
- b _081338FA
- .align 2, 0
-_0813385C: .4byte gUnknownText_Exit
-_08133860:
- lsls r1, r6, 1
- adds r0, r2, 0
- adds r0, 0x20
- adds r0, r1
- ldrh r5, [r0]
- movs r4, 0xB1
- lsls r4, 2
- adds r0, r2, r4
- ldrb r0, [r0]
- adds r7, r1, 0
- cmp r0, 0
- beq _081338A4
- ldr r1, _0813389C @ =gContestMoves
- lsls r0, r5, 3
- adds r0, r1
- ldrb r0, [r0, 0x1]
- lsls r0, 29
- lsrs r0, 27
- ldr r1, _081338A0 @ =gUnknown_083CAF70
- adds r0, r1
- ldr r1, [r0]
- adds r0, r3, 0
- movs r2, 0x27
- movs r3, 0
- bl sub_8072C74
- adds r3, r0, 0
- lsls r4, r5, 1
- b _081338C2
- .align 2, 0
-_0813389C: .4byte gContestMoves
-_081338A0: .4byte gUnknown_083CAF70
-_081338A4:
- lsls r4, r5, 1
- adds r0, r4, r5
- lsls r0, 2
- add r0, r9
- ldrb r0, [r0, 0x2]
- lsls r1, r0, 3
- subs r1, r0
- ldr r0, _08133938 @ =gTypeNames
- adds r1, r0
- adds r0, r3, 0
- movs r2, 0x27
- movs r3, 0
- bl sub_8072C74
- adds r3, r0, 0
-_081338C2:
- adds r0, r7, r6
- lsls r0, 3
- adds r0, r6
- adds r0, 0x52
- mov r2, r10
- ldr r1, [r2]
- adds r1, r0
- adds r0, r3, 0
- movs r2, 0x72
- movs r3, 0
- bl sub_8072C74
- adds r3, r0, 0
- movs r0, 0xCA
- strb r0, [r3]
- strb r0, [r3, 0x1]
- movs r0, 0xBA
- strb r0, [r3, 0x2]
- adds r3, 0x3
- adds r0, r4, r5
- lsls r0, 2
- add r0, r9
- ldrb r1, [r0, 0x4]
- adds r0, r3, 0
- movs r2, 0x90
- movs r3, 0
- bl sub_8072C14
-_081338FA:
- adds r3, r0, 0
- movs r0, 0xFE
- strb r0, [r3]
- adds r3, 0x1
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- movs r4, 0x1
- negs r4, r4
- add r8, r4
- mov r0, r8
- cmp r0, 0
- blt _08133916
- b _0813381C
-_08133916:
- movs r0, 0xFF
- strb r0, [r3]
- ldr r0, _0813393C @ =gTileBuffer
- movs r1, 0xB
- movs r2, 0x1
- bl MenuPrint
- movs r0, 0
- bl sub_813360C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08133938: .4byte gTypeNames
-_0813393C: .4byte gTileBuffer
- thumb_func_end sub_8133800
-
- thumb_func_start sub_8133940
-sub_8133940: @ 8133940
- push {r4-r7,lr}
- sub sp, 0x34
- adds r4, r1, 0
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r1, _08133968 @ =gExpandedPlaceholder_Empty
- mov r0, sp
- bl StringCopy
- ldrb r0, [r4, 0x2]
- subs r0, 0x1
- cmp r0, 0x6
- bls _0813395C
- b _08133AE2
-_0813395C:
- lsls r0, 2
- ldr r1, _0813396C @ =_08133970
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08133968: .4byte gExpandedPlaceholder_Empty
-_0813396C: .4byte _08133970
- .align 2, 0
-_08133970:
- .4byte _08133AE2
- .4byte _0813398C
- .4byte _08133AE2
- .4byte _081339A4
- .4byte _08133AE2
- .4byte _081339E4
- .4byte _08133A64
-_0813398C:
- ldr r0, _081339A0 @ =gBattleMoves
- lsls r1, r5, 1
- adds r1, r5
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- cmp r0, 0x1
- bls _081339B4
- ldrb r1, [r1, 0x1]
- b _081339CE
- .align 2, 0
-_081339A0: .4byte gBattleMoves
-_081339A4:
- ldr r0, _081339C4 @ =gBattleMoves
- lsls r1, r5, 1
- adds r1, r5
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x3]
- cmp r0, 0
- bne _081339CC
-_081339B4:
- ldr r1, _081339C8 @ =gOtherText_ThreeDashes2
- mov r0, sp
- movs r2, 0x20
- movs r3, 0x2
- bl sub_8072C74
- b _081339D8
- .align 2, 0
-_081339C4: .4byte gBattleMoves
-_081339C8: .4byte gOtherText_ThreeDashes2
-_081339CC:
- ldrb r1, [r1, 0x3]
-_081339CE:
- mov r0, sp
- movs r2, 0x20
- movs r3, 0x2
- bl sub_8072C14
-_081339D8:
- ldrb r1, [r4]
- ldrb r2, [r4, 0x1]
- mov r0, sp
- bl MenuPrint
- b _08133AE2
-_081339E4:
- ldrb r2, [r4]
- ldrb r1, [r4, 0x1]
- adds r3, r1, 0x1
- lsls r3, 24
- lsrs r3, 24
- adds r0, r2, 0
- bl MenuZeroFillWindowRect
- ldr r2, _08133A34 @ =gContestEffects
- ldr r1, _08133A38 @ =gContestMoves
- lsls r0, r5, 3
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- movs r1, 0xA
- bl __udivsi3
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0xFF
- bne _08133A14
- movs r5, 0
-_08133A14:
- movs r4, 0
- ldr r7, _08133A3C @ =gUnknown_030007B0
- ldr r6, _08133A40 @ =gSprites
-_08133A1A:
- cmp r4, r5
- bcs _08133A44
- ldr r0, [r7]
- adds r0, r4
- ldrb r1, [r0, 0x7]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x1
- bl StartSpriteAnim
- b _08133A58
- .align 2, 0
-_08133A34: .4byte gContestEffects
-_08133A38: .4byte gContestMoves
-_08133A3C: .4byte gUnknown_030007B0
-_08133A40: .4byte gSprites
-_08133A44:
- ldr r0, [r7]
- adds r0, r4
- ldrb r1, [r0, 0x7]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0
- bl StartSpriteAnim
-_08133A58:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x7
- bls _08133A1A
- b _08133AE2
-_08133A64:
- ldrb r2, [r4]
- ldrb r1, [r4, 0x1]
- adds r3, r1, 0x1
- lsls r3, 24
- lsrs r3, 24
- adds r0, r2, 0
- bl MenuZeroFillWindowRect
- ldr r2, _08133AB4 @ =gContestEffects
- ldr r1, _08133AB8 @ =gContestMoves
- lsls r0, r5, 3
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x2]
- movs r1, 0xA
- bl __udivsi3
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0xFF
- bne _08133A94
- movs r5, 0
-_08133A94:
- movs r4, 0
- ldr r7, _08133ABC @ =gUnknown_030007B0
- ldr r6, _08133AC0 @ =gSprites
-_08133A9A:
- cmp r4, r5
- bcs _08133AC4
- ldr r0, [r7]
- adds r0, r4
- ldrb r1, [r0, 0xF]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x3
- bl StartSpriteAnim
- b _08133AD8
- .align 2, 0
-_08133AB4: .4byte gContestEffects
-_08133AB8: .4byte gContestMoves
-_08133ABC: .4byte gUnknown_030007B0
-_08133AC0: .4byte gSprites
-_08133AC4:
- ldr r0, [r7]
- adds r0, r4
- ldrb r1, [r0, 0xF]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x2
- bl StartSpriteAnim
-_08133AD8:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x7
- bls _08133A9A
-_08133AE2:
- add sp, 0x34
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8133940
-
- thumb_func_start sub_8133AEC
-sub_8133AEC: @ 8133AEC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r6, _08133B88 @ =gUnknown_030007B0
- ldr r2, [r6]
- ldrb r1, [r2, 0x1B]
- ldrb r0, [r2, 0x1A]
- subs r0, 0x1
- cmp r1, r0
- bne _08133B08
- b _08133C04
-_08133B08:
- lsls r1, 1
- adds r0, r2, 0
- adds r0, 0x20
- adds r0, r1
- ldrh r5, [r0]
- cmp r3, 0
- beq _08133BA0
- movs r4, 0
- lsls r0, r5, 3
- mov r8, r0
- ldr r7, _08133B8C @ =gSprites
- adds r3, r6, 0
- movs r6, 0x5
- negs r6, r6
-_08133B24:
- ldr r0, [r3]
- adds r0, r4
- ldrb r0, [r0, 0x7]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r7
- adds r1, 0x3E
- ldrb r2, [r1]
- adds r0, r6, 0
- ands r0, r2
- strb r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0xF
- bls _08133B24
- movs r4, 0
-_08133B48:
- ldr r0, _08133B90 @ =gUnknown_08402E3D
- adds r0, r4, r0
- ldrb r0, [r0]
- lsls r1, r0, 1
- adds r1, r0
- ldr r0, _08133B94 @ =gUnknown_08402E24
- adds r1, r0
- adds r0, r5, 0
- bl sub_8133940
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x2
- bls _08133B48
- ldr r1, _08133B98 @ =gUnknown_083CADD4
- ldr r0, _08133B9C @ =gContestMoves
- add r0, r8
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x20
- str r1, [sp]
- movs r1, 0x1
- str r1, [sp, 0x4]
- movs r1, 0x58
- movs r2, 0x48
- movs r3, 0x90
- bl sub_8072AB0
- b _08133C92
- .align 2, 0
-_08133B88: .4byte gUnknown_030007B0
-_08133B8C: .4byte gSprites
-_08133B90: .4byte gUnknown_08402E3D
-_08133B94: .4byte gUnknown_08402E24
-_08133B98: .4byte gUnknown_083CADD4
-_08133B9C: .4byte gContestMoves
-_08133BA0:
- movs r4, 0
- subs r6, r5, 0x1
-_08133BA4:
- ldr r0, _08133BF8 @ =gUnknown_08402E39
- adds r0, r4, r0
- ldrb r0, [r0]
- lsls r1, r0, 1
- adds r1, r0
- ldr r0, _08133BFC @ =gUnknown_08402E24
- adds r1, r0
- adds r0, r5, 0
- bl sub_8133940
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x3
- bls _08133BA4
- ldr r1, _08133C00 @ =gMoveDescriptions
- lsls r0, r6, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x1
- str r1, [sp]
- movs r1, 0x58
- movs r2, 0x48
- movs r3, 0x90
- bl sub_8072A18
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _08133C92
- lsls r1, r0, 25
- movs r0, 0x90
- lsls r0, 20
- adds r1, r0
- lsrs r1, 24
- movs r0, 0xB
- movs r2, 0x1C
- movs r3, 0xC
- bl MenuFillWindowRectWithBlankTile
- b _08133C92
- .align 2, 0
-_08133BF8: .4byte gUnknown_08402E39
-_08133BFC: .4byte gUnknown_08402E24
-_08133C00: .4byte gMoveDescriptions
-_08133C04:
- cmp r3, 0
- beq _08133C5C
- ldr r4, _08133C54 @ =gUnknown_08402E24
- ldrb r2, [r4, 0xF]
- ldrb r1, [r4, 0x10]
- adds r3, r1, 0x1
- lsls r3, 24
- lsrs r3, 24
- adds r0, r2, 0
- bl MenuZeroFillWindowRect
- ldrb r2, [r4, 0x12]
- ldrb r1, [r4, 0x13]
- adds r3, r1, 0x1
- lsls r3, 24
- lsrs r3, 24
- adds r0, r2, 0
- bl MenuZeroFillWindowRect
- movs r4, 0
- ldr r5, _08133C58 @ =gSprites
- adds r3, r6, 0
- movs r2, 0x4
-_08133C32:
- ldr r0, [r3]
- adds r0, r4
- ldrb r1, [r0, 0x7]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r2
- strb r1, [r0]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0xF
- bls _08133C32
- b _08133C86
- .align 2, 0
-_08133C54: .4byte gUnknown_08402E24
-_08133C58: .4byte gSprites
-_08133C5C:
- ldr r4, _08133CA0 @ =gUnknown_08402E24
- ldrb r0, [r4, 0x3]
- ldrb r1, [r4, 0x4]
- adds r2, r0, 0x3
- lsls r2, 24
- lsrs r2, 24
- adds r3, r1, 0x1
- lsls r3, 24
- lsrs r3, 24
- bl MenuZeroFillWindowRect
- ldrb r0, [r4, 0x9]
- ldrb r1, [r4, 0xA]
- adds r2, r0, 0x3
- lsls r2, 24
- lsrs r2, 24
- adds r3, r1, 0x1
- lsls r3, 24
- lsrs r3, 24
- bl MenuZeroFillWindowRect
-_08133C86:
- movs r0, 0xB
- movs r1, 0x9
- movs r2, 0x1C
- movs r3, 0xC
- bl MenuZeroFillWindowRect
-_08133C92:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08133CA0: .4byte gUnknown_08402E24
- thumb_func_end sub_8133AEC
-
- thumb_func_start sub_8133CA4
-sub_8133CA4: @ 8133CA4
- push {lr}
- movs r0, 0x15
- movs r1, 0x7
- movs r2, 0x1B
- movs r3, 0xC
- bl MenuZeroFillWindowRect
- ldr r0, _08133CC8 @ =gUnknown_030007B0
- ldr r0, [r0]
- movs r1, 0xB1
- lsls r1, 2
- adds r0, r1
- ldrb r0, [r0]
- movs r1, 0
- bl sub_8133AEC
- pop {r0}
- bx r0
- .align 2, 0
-_08133CC8: .4byte gUnknown_030007B0
- thumb_func_end sub_8133CA4
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/macros/event.inc b/asm/macros/event.inc
index cd2927c66..9fddd9194 100644
--- a/asm/macros/event.inc
+++ b/asm/macros/event.inc
@@ -1493,6 +1493,12 @@
callstd \type
.endm
+ @ Message box types
+ MSGBOX_YESNO = 5
+
+ YES = 1
+ NO = 0
+
.macro giveitem item, amount=1, function=0
setorcopyvar 0x8000, \item
setorcopyvar 0x8001, \amount
diff --git a/asm/mauville_old_man.s b/asm/mauville_old_man.s
deleted file mode 100644
index 726de6fc1..000000000
--- a/asm/mauville_old_man.s
+++ /dev/null
@@ -1,1522 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80F7DC0
-sub_80F7DC0: @ 80F7DC0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- ldr r1, _080F7E84 @ =gUnknown_083E53C8
- mov r0, sp
- movs r2, 0x18
- bl memcpy
- movs r5, 0
- movs r0, 0x2
- add r0, sp
- mov r8, r0
- ldr r1, _080F7E88 @ =gSaveBlock1 + 0x2D94
- adds r1, 0x18
- adds r3, r1, 0
-_080F7DE4:
- adds r0, r3, r5
- strb r5, [r0]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x7
- bls _080F7DE4
- movs r5, 0
- ldr r2, _080F7E88 @ =gSaveBlock1 + 0x2D94
- adds r2, 0x4
- mov r9, r2
- adds r6, r1, 0
-_080F7DFC:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- adds r4, r5, 0x1
- adds r1, r4, 0
- bl __modsi3
- lsls r0, 16
- lsrs r1, r0, 16
- adds r2, r6, r5
- ldrb r7, [r2]
- adds r1, r6, r1
- ldrb r0, [r1]
- strb r0, [r2]
- strb r7, [r1]
- lsls r4, 16
- lsrs r5, r4, 16
- cmp r5, 0x7
- bls _080F7DFC
- movs r3, 0
- mov r10, r3
- movs r5, 0
-_080F7E2A:
- lsls r4, r5, 2
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- bl sub_80EAE88
- add r4, r8
- strh r0, [r4]
- add r0, r10
- lsls r0, 16
- lsrs r0, 16
- mov r10, r0
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x5
- bls _080F7E2A
- movs r0, 0
- ldr r2, _080F7E88 @ =gSaveBlock1 + 0x2D94
- strb r0, [r2, 0x2]
- movs r7, 0
- movs r5, 0
-_080F7E56:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xA
- bl __umodsi3
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0x2
- bhi _080F7E90
- cmp r7, 0x7
- bhi _080F7E90
- lsls r0, r5, 1
- add r0, r9
- ldr r1, _080F7E8C @ =0x0000ffff
- strh r1, [r0]
- adds r0, r7, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
- adds r4, r5, 0x1
- b _080F7EE2
- .align 2, 0
-_080F7E84: .4byte gUnknown_083E53C8
-_080F7E88: .4byte gSaveBlock1 + 0x2D94
-_080F7E8C: .4byte 0x0000ffff
-_080F7E90:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- mov r1, r10
- bl __umodsi3
- lsls r0, 16
- lsrs r2, r0, 16
- movs r1, 0
- adds r4, r5, 0x1
- lsls r6, r5, 1
- cmp r5, 0x5
- bhi _080F7ECC
- mov r3, r8
- ldrh r0, [r3]
- b _080F7EC2
-_080F7EB2:
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r5, 0x5
- bhi _080F7ECC
- lsls r0, r1, 2
- adds r0, r3, r0
- ldrh r0, [r0]
-_080F7EC2:
- subs r0, r2, r0
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r0, 0
- bgt _080F7EB2
-_080F7ECC:
- cmp r1, 0x6
- bne _080F7ED2
- movs r1, 0
-_080F7ED2:
- lsls r0, r1, 2
- add r0, sp
- ldrh r0, [r0]
- bl sub_80EB784
- mov r2, r9
- adds r1, r2, r6
- strh r0, [r1]
-_080F7EE2:
- lsls r0, r4, 16
- lsrs r5, r0, 16
- cmp r5, 0x9
- bls _080F7E56
- 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_80F7DC0
-
- thumb_func_start sub_80F7EFC
-sub_80F7EFC: @ 80F7EFC
- ldr r0, _080F7F08 @ =gSaveBlock1 + 0x2D94
- adds r0, 0x29
- movs r1, 0
- strb r1, [r0]
- bx lr
- .align 2, 0
-_080F7F08: .4byte gSaveBlock1 + 0x2D94
- thumb_func_end sub_80F7EFC
-
- thumb_func_start sub_80F7F0C
-sub_80F7F0C: @ 80F7F0C
- ldr r1, _080F7F14 @ =gSaveBlock1 + 0x2D94
- movs r0, 0
- strb r0, [r1, 0x1]
- bx lr
- .align 2, 0
-_080F7F14: .4byte gSaveBlock1 + 0x2D94
- thumb_func_end sub_80F7F0C
-
- thumb_func_start sub_80F7F18
-sub_80F7F18: @ 80F7F18
- push {lr}
- bl sub_8109A20
- pop {r0}
- bx r0
- thumb_func_end sub_80F7F18
-
- thumb_func_start sub_80F7F24
-sub_80F7F24: @ 80F7F24
- push {lr}
- bl sub_80F8428
- pop {r0}
- bx r0
- thumb_func_end sub_80F7F24
-
- thumb_func_start sub_80F7F30
-sub_80F7F30: @ 80F7F30
- push {lr}
- bl GetCurrentMauvilleOldMan
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080F7F76
- lsls r0, 2
- ldr r1, _080F7F48 @ =_080F7F4C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080F7F48: .4byte _080F7F4C
- .align 2, 0
-_080F7F4C:
- .4byte _080F7F60
- .4byte _080F7F66
- .4byte _080F7F72
- .4byte _080F7F6C
- .4byte _080F7F76
-_080F7F60:
- bl sub_80F7EFC
- b _080F7F76
-_080F7F66:
- bl sub_80F7F0C
- b _080F7F76
-_080F7F6C:
- bl sub_80F7F24
- b _080F7F76
-_080F7F72:
- bl sub_80F7F18
-_080F7F76:
- bl sub_80F83D0
- pop {r0}
- bx r0
- thumb_func_end sub_80F7F30
-
- thumb_func_start sub_80F7F80
-sub_80F7F80: @ 80F7F80
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080F7FA8 @ =sub_80F8184
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080F7FAC @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0x12]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F7FA8: .4byte sub_80F8184
-_080F7FAC: .4byte gTasks
- thumb_func_end sub_80F7F80
-
- thumb_func_start sub_80F7FB0
-sub_80F7FB0: @ 80F7FB0
- push {r4-r7,lr}
- adds r6, r1, 0
- movs r1, 0x8
- ldrsh r0, [r0, r1]
- cmp r0, 0x5
- bls _080F7FBE
- b _080F817A
-_080F7FBE:
- lsls r0, 2
- ldr r1, _080F7FC8 @ =_080F7FCC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080F7FC8: .4byte _080F7FCC
- .align 2, 0
-_080F7FCC:
- .4byte _080F7FE4
- .4byte _080F817A
- .4byte _080F8040
- .4byte _080F8074
- .4byte _080F8074
- .4byte _080F817A
-_080F7FE4:
- ldr r2, _080F8034 @ =gSaveBlock1 + 0x2D94
- ldr r0, _080F8038 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- adds r1, r2, 0
- adds r1, 0xE
- cmp r0, 0
- bne _080F7FF4
- adds r1, r2, 0x2
-_080F7FF4:
- adds r2, r1, 0
- adds r1, r6, 0
- adds r1, 0xC
- movs r3, 0x5
-_080F7FFC:
- ldrh r0, [r2]
- strh r0, [r1]
- adds r2, 0x2
- adds r1, 0x2
- subs r3, 0x1
- cmp r3, 0
- bge _080F7FFC
- ldr r2, _080F803C @ =0x0000ffff
- adds r4, r2, 0
- movs r2, 0
- adds r1, r6, 0
- adds r1, 0x18
- movs r3, 0x5
-_080F8016:
- ldrh r0, [r1]
- orrs r0, r4
- strh r0, [r1]
- strh r2, [r1, 0x2]
- strh r2, [r1, 0x4]
- strh r2, [r1, 0x6]
- adds r1, 0x8
- subs r3, 0x1
- cmp r3, 0
- bge _080F8016
- movs r0, 0
- strb r0, [r6]
- strb r0, [r6, 0x1]
- strh r0, [r6, 0x4]
- b _080F817A
- .align 2, 0
-_080F8034: .4byte gSaveBlock1 + 0x2D94
-_080F8038: .4byte gSpecialVar_0x8004
-_080F803C: .4byte 0x0000ffff
-_080F8040:
- ldrb r1, [r6]
- lsls r1, 1
- adds r0, r6, 0
- adds r0, 0xC
- adds r0, r1
- ldrh r4, [r0]
- lsrs r0, r4, 9
- ldr r1, _080F8070 @ =0x000001ff
- ands r1, r4
- bl sub_814A2D0
- adds r1, r0, 0
- movs r0, 0
- strh r0, [r6, 0x4]
- movs r2, 0x3
- ands r2, r4
- lsrs r4, 3
- movs r0, 0x1
- ands r4, r0
- adds r2, r4
- adds r0, r6, 0
- bl sub_814A2EC
- b _080F817A
- .align 2, 0
-_080F8070: .4byte 0x000001ff
-_080F8074:
- ldrb r1, [r6, 0x1]
- lsls r0, r1, 3
- adds r0, 0x18
- adds r7, r6, r0
- ldrb r0, [r6, 0x3]
- cmp r0, 0x1
- beq _080F8124
- cmp r0, 0x1
- bgt _080F808C
- cmp r0, 0
- beq _080F8092
- b _080F817A
-_080F808C:
- cmp r0, 0xFE
- beq _080F8170
- b _080F817A
-_080F8092:
- ldrb r0, [r6, 0x2]
- cmp r0, 0
- bne _080F80D0
- cmp r1, 0x6
- beq _080F80A2
- ldrh r0, [r7]
- cmp r0, 0xFF
- bne _080F80A6
-_080F80A2:
- movs r0, 0xFE
- b _080F8178
-_080F80A6:
- ldrh r0, [r7, 0x2]
- strb r0, [r6, 0x2]
- ldrh r0, [r7]
- cmp r0, 0x32
- bhi _080F80CA
- movs r1, 0x3
- bl __udivsi3
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- lsls r0, r1, 1
- adds r0, r1
- adds r0, 0xF9
- lsls r0, 16
- lsrs r0, 16
- bl m4aSongNumStart
-_080F80CA:
- movs r0, 0x1
- strb r0, [r6, 0x3]
- b _080F8114
-_080F80D0:
- ldrh r1, [r6, 0xA]
- movs r2, 0xA
- ldrsh r0, [r6, r2]
- cmp r0, 0xA
- ble _080F80E0
- ldrh r0, [r6, 0x6]
- subs r0, 0x2
- strh r0, [r6, 0x6]
-_080F80E0:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080F80EE
- ldrh r0, [r6, 0x8]
- adds r0, 0x40
- b _080F80F2
-_080F80EE:
- ldrh r0, [r6, 0x8]
- subs r0, 0x40
-_080F80F2:
- strh r0, [r6, 0x8]
- ldr r4, _080F811C @ =gMPlay_SE2
- ldr r5, _080F8120 @ =0x0000ffff
- ldrh r2, [r6, 0x6]
- adds r0, r4, 0
- adds r1, r5, 0
- bl m4aMPlayVolumeControl
- movs r0, 0x8
- ldrsh r2, [r6, r0]
- adds r0, r4, 0
- adds r1, r5, 0
- bl m4aMPlayPitchControl
- ldrh r0, [r6, 0xA]
- adds r0, 0x1
- strh r0, [r6, 0xA]
-_080F8114:
- ldrb r0, [r6, 0x2]
- subs r0, 0x1
- strb r0, [r6, 0x2]
- b _080F817A
- .align 2, 0
-_080F811C: .4byte gMPlay_SE2
-_080F8120: .4byte 0x0000ffff
-_080F8124:
- adds r0, r1, 0x1
- movs r1, 0
- strb r0, [r6, 0x1]
- strb r1, [r6, 0x3]
- ldrh r0, [r7]
- cmp r0, 0x32
- bhi _080F817A
- ldrh r0, [r7, 0x6]
- lsls r0, 4
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1
- strh r0, [r6, 0x6]
- ldr r4, _080F8168 @ =gMPlay_SE2
- ldr r5, _080F816C @ =0x0000ffff
- ldrh r2, [r6, 0x6]
- adds r0, r4, 0
- adds r1, r5, 0
- bl m4aMPlayVolumeControl
- movs r2, 0x80
- lsls r2, 2
- adds r0, r2, 0
- ldrh r7, [r7, 0x4]
- adds r0, r7
- strh r0, [r6, 0x8]
- movs r0, 0x8
- ldrsh r2, [r6, r0]
- adds r0, r4, 0
- adds r1, r5, 0
- bl m4aMPlayPitchControl
- b _080F817A
- .align 2, 0
-_080F8168: .4byte gMPlay_SE2
-_080F816C: .4byte 0x0000ffff
-_080F8170:
- ldr r0, _080F8180 @ =gMPlay_SE2
- bl m4aMPlayStop
- movs r0, 0xFF
-_080F8178:
- strb r0, [r6, 0x3]
-_080F817A:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F8180: .4byte gMPlay_SE2
- thumb_func_end sub_80F7FB0
-
- thumb_func_start sub_80F8184
-sub_80F8184: @ 80F8184
- 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, _080F81B4 @ =gTasks
- adds r5, r0, r1
- ldr r1, _080F81B8 @ =gUnknown_03005DA0
- adds r0, r5, 0
- bl sub_80F7FB0
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0x5
- bls _080F81A8
- b _080F83C8
-_080F81A8:
- lsls r0, 2
- ldr r1, _080F81BC @ =_080F81C0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080F81B4: .4byte gTasks
-_080F81B8: .4byte gUnknown_03005DA0
-_080F81BC: .4byte _080F81C0
- .align 2, 0
-_080F81C0:
- .4byte _080F81D8
- .4byte _080F8218
- .4byte _080F8228
- .4byte _080F82D8
- .4byte _080F83B8
- .4byte _080F82C6
-_080F81D8:
- bl sub_80F7BA0
- ldr r4, _080F820C @ =gMenuWindowPtr
- ldr r0, [r4]
- ldr r1, _080F8210 @ =gWindowConfig_81E6CE4
- bl InitWindowFromConfig
- ldr r0, [r4]
- ldr r1, _080F8214 @ =gStringVar4
- movs r2, 0xF
- str r2, [sp]
- movs r2, 0x2
- movs r3, 0x4
- bl sub_8002EB0
- movs r0, 0
- strh r0, [r5, 0xA]
- strh r0, [r5, 0xC]
- strh r0, [r5, 0xE]
- strh r0, [r5, 0x10]
- movs r0, 0x4
- bl FadeOutBGMTemporarily
- movs r0, 0x1
- b _080F83C6
- .align 2, 0
-_080F820C: .4byte gMenuWindowPtr
-_080F8210: .4byte gWindowConfig_81E6CE4
-_080F8214: .4byte gStringVar4
-_080F8218:
- bl IsBGMPausedOrStopped
- lsls r0, 24
- cmp r0, 0
- bne _080F8224
- b _080F83C8
-_080F8224:
- movs r0, 0x2
- b _080F83C6
-_080F8228:
- ldr r4, _080F8240 @ =gSaveBlock1 + 0x2D94
- movs r2, 0xE
- ldrsh r1, [r5, r2]
- ldr r0, _080F8244 @ =gStringVar4
- adds r1, r0
- movs r3, 0
- ldrb r0, [r1]
- ldr r7, _080F8248 @ =gUnknown_03005DA0
- ldrh r2, [r5, 0x12]
- ldr r6, _080F824C @ =gUnknown_020388BC
- b _080F825A
- .align 2, 0
-_080F8240: .4byte gSaveBlock1 + 0x2D94
-_080F8244: .4byte gStringVar4
-_080F8248: .4byte gUnknown_03005DA0
-_080F824C: .4byte gUnknown_020388BC
-_080F8250:
- adds r1, 0x1
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- ldrb r0, [r1]
-_080F825A:
- cmp r0, 0
- beq _080F826A
- cmp r0, 0xFE
- beq _080F826A
- cmp r0, 0xFC
- beq _080F826A
- cmp r0, 0xFF
- bne _080F8250
-_080F826A:
- cmp r2, 0
- bne _080F8278
- movs r0, 0x10
- ldrsh r1, [r5, r0]
- lsls r1, 1
- adds r0, r4, 0x2
- b _080F8282
-_080F8278:
- movs r2, 0x10
- ldrsh r1, [r5, r2]
- lsls r1, 1
- adds r0, r4, 0
- adds r0, 0xE
-_080F8282:
- adds r0, r1
- ldrh r0, [r0]
- movs r1, 0x3
- ands r1, r0
- lsrs r0, 3
- movs r2, 0x1
- ands r0, r2
- adds r1, r0
- strh r1, [r6]
- movs r1, 0x4
- ldrsh r0, [r7, r1]
- adds r1, r3, 0
- bl __divsi3
- movs r1, 0
- strh r0, [r7, 0x4]
- lsls r0, 16
- cmp r0, 0
- bgt _080F82AC
- movs r0, 0x1
- strh r0, [r7, 0x4]
-_080F82AC:
- ldrh r0, [r5, 0x10]
- adds r0, 0x1
- strh r0, [r5, 0x10]
- movs r2, 0xC
- ldrsh r0, [r5, r2]
- cmp r0, 0
- bne _080F82BE
- movs r0, 0x3
- b _080F82C0
-_080F82BE:
- movs r0, 0x5
-_080F82C0:
- strh r0, [r5, 0x8]
- strh r1, [r5, 0xA]
- b _080F83C8
-_080F82C6:
- ldrh r1, [r5, 0xC]
- movs r2, 0xC
- ldrsh r0, [r5, r2]
- cmp r0, 0
- bne _080F82D2
- b _080F83C4
-_080F82D2:
- subs r0, r1, 0x1
- strh r0, [r5, 0xC]
- b _080F83C8
-_080F82D8:
- ldr r1, _080F8304 @ =gStringVar4
- movs r2, 0xE
- ldrsh r0, [r5, r2]
- adds r0, r1
- ldrb r4, [r0]
- cmp r4, 0xFF
- bne _080F830C
- movs r0, 0xC8
- lsls r0, 1
- movs r1, 0x6
- bl FadeInNewBGM
- ldr r0, _080F8308 @ =gMPlay_SE2
- movs r1, 0x2
- bl m4aMPlayFadeOutTemporarily
- bl EnableBothScriptContexts
- adds r0, r6, 0
- bl DestroyTask
- b _080F83C8
- .align 2, 0
-_080F8304: .4byte gStringVar4
-_080F8308: .4byte gMPlay_SE2
-_080F830C:
- cmp r4, 0
- bne _080F832C
- ldr r0, _080F8328 @ =gMenuWindowPtr
- ldr r0, [r0]
- bl sub_8003418
- ldrh r0, [r5, 0xE]
- adds r0, 0x1
- strh r0, [r5, 0xE]
- movs r0, 0x2
- strh r0, [r5, 0x8]
- strh r4, [r5, 0xC]
- b _080F83C8
- .align 2, 0
-_080F8328: .4byte gMenuWindowPtr
-_080F832C:
- cmp r4, 0xFE
- bne _080F8340
- ldrh r0, [r5, 0xE]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r5, 0xE]
- movs r0, 0x2
- strh r0, [r5, 0x8]
- strh r1, [r5, 0xC]
- b _080F83C8
-_080F8340:
- cmp r4, 0xFC
- bne _080F8354
- ldrh r0, [r5, 0xE]
- adds r0, 0x2
- strh r0, [r5, 0xE]
- movs r0, 0x2
- strh r0, [r5, 0x8]
- movs r0, 0x8
- strh r0, [r5, 0xC]
- b _080F83C8
-_080F8354:
- cmp r4, 0x37
- bne _080F8374
- movs r4, 0
- strb r4, [r0]
- ldr r0, _080F8370 @ =gMenuWindowPtr
- ldr r0, [r0]
- bl sub_8003418
- ldrh r0, [r5, 0xE]
- adds r0, 0x1
- strh r0, [r5, 0xE]
- strh r4, [r5, 0xC]
- b _080F83C8
- .align 2, 0
-_080F8370: .4byte gMenuWindowPtr
-_080F8374:
- movs r1, 0xA
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _080F8394
- cmp r0, 0x1
- bgt _080F8386
- cmp r0, 0
- beq _080F838C
- b _080F83C8
-_080F8386:
- cmp r0, 0x2
- beq _080F83A0
- b _080F83C8
-_080F838C:
- ldr r0, _080F839C @ =gMenuWindowPtr
- ldr r0, [r0]
- bl sub_8003418
-_080F8394:
- ldrh r0, [r5, 0xA]
- adds r0, 0x1
- strh r0, [r5, 0xA]
- b _080F83C8
- .align 2, 0
-_080F839C: .4byte gMenuWindowPtr
-_080F83A0:
- ldrh r0, [r5, 0xE]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r5, 0xE]
- strh r1, [r5, 0xA]
- ldr r0, _080F83B4 @ =gUnknown_03005DA0
- ldrh r0, [r0, 0x4]
- strh r0, [r5, 0xC]
- movs r0, 0x4
- b _080F83C6
- .align 2, 0
-_080F83B4: .4byte gUnknown_03005DA0
-_080F83B8:
- ldrh r0, [r5, 0xC]
- subs r0, 0x1
- strh r0, [r5, 0xC]
- lsls r0, 16
- cmp r0, 0
- bne _080F83C8
-_080F83C4:
- movs r0, 0x3
-_080F83C6:
- strh r0, [r5, 0x8]
-_080F83C8:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80F8184
-
- thumb_func_start sub_80F83D0
-sub_80F83D0: @ 80F83D0
- push {r4,lr}
- ldr r4, _080F83F4 @ =0x00004010
- bl GetCurrentMauvilleOldMan
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 8
- movs r0, 0x8A
- lsls r0, 15
- adds r1, r0
- lsrs r1, 16
- adds r0, r4, 0
- bl VarSet
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F83F4: .4byte 0x00004010
- thumb_func_end sub_80F83D0
-
- thumb_func_start sub_80F83F8
-sub_80F83F8: @ 80F83F8
- push {r4,lr}
- ldr r0, _080F8424 @ =gSaveBlock1 + 0x2D94
- movs r2, 0
- movs r1, 0x3
- strb r1, [r0]
- strb r2, [r0, 0x1]
- movs r4, 0
- movs r3, 0xFF
- adds r1, r0, 0x4
- movs r2, 0x3
-_080F840C:
- strb r4, [r1]
- ldrb r0, [r1, 0x4]
- orrs r0, r3
- strb r0, [r1, 0x4]
- adds r1, 0x1
- subs r2, 0x1
- cmp r2, 0
- bge _080F840C
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F8424: .4byte gSaveBlock1 + 0x2D94
- thumb_func_end sub_80F83F8
-
- thumb_func_start sub_80F8428
-sub_80F8428: @ 80F8428
- ldr r0, _080F8434 @ =gSaveBlock1 + 0x2D94
- movs r2, 0
- movs r1, 0x3
- strb r1, [r0]
- strb r2, [r0, 0x1]
- bx lr
- .align 2, 0
-_080F8434: .4byte gSaveBlock1 + 0x2D94
- thumb_func_end sub_80F8428
-
- thumb_func_start sub_80F8438
-sub_80F8438: @ 80F8438
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x32
- bne _080F8444
- movs r0, 0
-_080F8444:
- bl GetGameStat
- pop {r1}
- bx r1
- thumb_func_end sub_80F8438
-
- thumb_func_start sub_80F844C
-sub_80F844C: @ 80F844C
- push {lr}
- adds r3, r0, 0
- movs r2, 0
- ldr r1, _080F8460 @ =gUnknown_083E53E0
-_080F8454:
- ldrb r0, [r1]
- cmp r0, r3
- bne _080F8464
- adds r0, r1, 0
- b _080F846E
- .align 2, 0
-_080F8460: .4byte gUnknown_083E53E0
-_080F8464:
- adds r1, 0x10
- adds r2, 0x1
- cmp r2, 0x23
- ble _080F8454
- ldr r0, _080F8474 @ =gUnknown_083E5610
-_080F846E:
- pop {r1}
- bx r1
- .align 2, 0
-_080F8474: .4byte gUnknown_083E5610
- thumb_func_end sub_80F844C
-
- thumb_func_start sub_80F8478
-sub_80F8478: @ 80F8478
- push {lr}
- bl sub_80F844C
- ldr r0, [r0, 0x4]
- pop {r1}
- bx r1
- thumb_func_end sub_80F8478
-
- thumb_func_start sub_80F8484
-sub_80F8484: @ 80F8484
- push {lr}
- bl sub_80F844C
- ldr r0, [r0, 0xC]
- pop {r1}
- bx r1
- thumb_func_end sub_80F8484
-
- thumb_func_start sub_80F8490
-sub_80F8490: @ 80F8490
- push {lr}
- bl sub_80F844C
- ldr r0, [r0, 0x8]
- pop {r1}
- bx r1
- thumb_func_end sub_80F8490
-
- thumb_func_start sub_80F849C
-sub_80F849C: @ 80F849C
- push {lr}
- movs r1, 0
- ldr r2, _080F84C4 @ =gSaveBlock1 + 0x2D94
- ldrb r0, [r2, 0x4]
- cmp r0, 0
- beq _080F84BC
- adds r2, 0x4
-_080F84AA:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x3
- bhi _080F84BC
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _080F84AA
-_080F84BC:
- adds r0, r1, 0
- pop {r1}
- bx r1
- .align 2, 0
-_080F84C4: .4byte gSaveBlock1 + 0x2D94
- thumb_func_end sub_80F849C
-
- thumb_func_start sub_80F84C8
-sub_80F84C8: @ 80F84C8
- lsls r0, 2
- ldr r1, _080F84E8 @ =gSaveBlock1 + 0x2DB8
- adds r0, r1
- ldrb r2, [r0]
- ldrb r1, [r0, 0x1]
- lsls r1, 8
- orrs r2, r1
- ldrb r1, [r0, 0x2]
- lsls r1, 16
- orrs r2, r1
- ldrb r0, [r0, 0x3]
- lsls r0, 24
- orrs r2, r0
- adds r0, r2, 0
- bx lr
- .align 2, 0
-_080F84E8: .4byte gSaveBlock1 + 0x2DB8
- thumb_func_end sub_80F84C8
-
- thumb_func_start sub_80F84EC
-sub_80F84EC: @ 80F84EC
- lsls r0, 2
- ldr r2, _080F8504 @ =gSaveBlock1 + 0x2DB8
- adds r0, r2
- strb r1, [r0]
- lsrs r2, r1, 8
- strb r2, [r0, 0x1]
- lsrs r2, r1, 16
- strb r2, [r0, 0x2]
- lsrs r1, 24
- strb r1, [r0, 0x3]
- bx lr
- .align 2, 0
-_080F8504: .4byte gSaveBlock1 + 0x2DB8
- thumb_func_end sub_80F84EC
-
- thumb_func_start sub_80F8508
-sub_80F8508: @ 80F8508
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, _080F8528 @ =gSaveBlock1 + 0x2D94
- adds r0, 0x4
- adds r0, r5, r0
- ldrb r0, [r0]
- bl sub_80F8438
- adds r4, r0, 0
- adds r0, r5, 0
- bl sub_80F84C8
- cmp r4, r0
- bhi _080F852C
- movs r0, 0
- b _080F852E
- .align 2, 0
-_080F8528: .4byte gSaveBlock1 + 0x2D94
-_080F852C:
- movs r0, 0x1
-_080F852E:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80F8508
-
- thumb_func_start sub_80F8534
-sub_80F8534: @ 80F8534
- push {r4,r5,lr}
- adds r5, r1, 0
- lsls r4, r0, 3
- subs r4, r0
- ldr r0, _080F855C @ =gSaveBlock1 + 0x2D9C
- adds r4, r0
- adds r0, r5, 0
- movs r1, 0xFF
- movs r2, 0x8
- bl memset
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x7
- bl memcpy
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F855C: .4byte gSaveBlock1 + 0x2D9C
- thumb_func_end sub_80F8534
-
- thumb_func_start sub_80F8560
-sub_80F8560: @ 80F8560
- push {r4-r6,lr}
- adds r6, r1, 0
- lsls r5, r0, 3
- subs r5, r0
- ldr r0, _080F8594 @ =gSaveBlock1 + 0x2D9C
- adds r5, r0
- adds r0, r6, 0
- bl StringLength
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0xFF
- movs r2, 0x7
- bl memset
- adds r0, r5, 0
- adds r1, r6, 0
- adds r2, r4, 0
- bl StringCopyN
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080F8594: .4byte gSaveBlock1 + 0x2D9C
- thumb_func_end sub_80F8560
-
- thumb_func_start sub_80F8598
-sub_80F8598: @ 80F8598
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r6, r1, 0
- ldr r0, _080F85EC @ =gSaveBlock1 + 0x2D94
- adds r0, 0x4
- adds r0, r5, r0
- strb r6, [r0]
- ldr r1, _080F85F0 @ =gSaveBlock2
- adds r0, r5, 0
- bl sub_80F8560
- lsls r4, r6, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl sub_80F8438
- adds r1, r0, 0
- adds r0, r5, 0
- bl sub_80F84EC
- ldr r5, _080F85F4 @ =gStringVar1
- adds r0, r4, 0
- bl sub_80F8438
- adds r1, r0, 0
- adds r0, r5, 0
- movs r2, 0
- movs r3, 0xA
- bl ConvertIntToDecimalStringN
- ldr r4, _080F85F8 @ =gStringVar2
- adds r0, r6, 0
- bl sub_80F8490
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080F85EC: .4byte gSaveBlock1 + 0x2D94
-_080F85F0: .4byte gSaveBlock2
-_080F85F4: .4byte gStringVar1
-_080F85F8: .4byte gStringVar2
- thumb_func_end sub_80F8598
-
- thumb_func_start sub_80F85FC
-sub_80F85FC: @ 80F85FC
- push {r4-r7,lr}
- adds r7, r0, 0
- adds r6, r1, 0
- movs r5, 0
- cmp r5, r6
- bge _080F8612
-_080F8608:
- adds r0, r7, r5
- strb r5, [r0]
- adds r5, 0x1
- cmp r5, r6
- blt _080F8608
-_080F8612:
- cmp r6, 0
- ble _080F8648
- adds r5, r6, 0
-_080F8618:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- adds r1, r6, 0
- bl __modsi3
- adds r4, r0, 0
- bl Random
- lsls r0, 16
- lsrs r0, 16
- adds r1, r6, 0
- bl __modsi3
- adds r4, r7, r4
- ldrb r2, [r4]
- adds r0, r7, r0
- ldrb r1, [r0]
- strb r1, [r4]
- strb r2, [r0]
- subs r5, 0x1
- cmp r5, 0
- bne _080F8618
-_080F8648:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80F85FC
-
- thumb_func_start sub_80F8650
-sub_80F8650: @ 80F8650
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- mov r7, sp
- mov r10, sp
- ldr r0, _080F86D4 @ =gUnknown_083E5620
- ldr r0, [r0]
- lsls r0, 3
- lsrs r0, 3
- adds r0, 0x3
- lsrs r0, 2
- lsls r0, 2
- mov r1, sp
- subs r1, r0
- mov sp, r1
- mov r8, sp
- mov r0, sp
- movs r1, 0x24
- bl sub_80F85FC
- movs r5, 0
- ldr r0, _080F86D8 @ =gUnknown_083E53E0
- mov r9, r0
- ldr r3, _080F86DC @ =gSaveBlock1 + 0x2D94
-_080F8686:
- mov r1, r8
- adds r0, r1, r5
- ldrb r0, [r0]
- lsls r0, 4
- add r0, r9
- ldrb r4, [r0]
- ldrb r6, [r0, 0x1]
- movs r1, 0
- ldrb r0, [r3, 0x4]
- cmp r0, r4
- beq _080F86AC
- ldr r2, _080F86E0 @ =gSaveBlock1 + 0x2D98
-_080F869E:
- adds r1, 0x1
- cmp r1, 0x3
- bgt _080F86AC
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, r4
- bne _080F869E
-_080F86AC:
- cmp r1, 0x4
- bne _080F86E4
- adds r0, r4, 0
- str r3, [r7]
- bl sub_80F8438
- ldr r3, [r7]
- cmp r0, r6
- bcc _080F86E4
- movs r0, 0x1
- strb r0, [r3, 0x1]
- bl sub_80F849C
- lsls r0, 24
- lsrs r0, 24
- adds r1, r4, 0
- bl sub_80F8598
- movs r0, 0x1
- b _080F86EC
- .align 2, 0
-_080F86D4: .4byte gUnknown_083E5620
-_080F86D8: .4byte gUnknown_083E53E0
-_080F86DC: .4byte gSaveBlock1 + 0x2D94
-_080F86E0: .4byte gSaveBlock1 + 0x2D98
-_080F86E4:
- adds r5, 0x1
- cmp r5, 0x23
- ble _080F8686
- movs r0, 0
-_080F86EC:
- mov sp, r10
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80F8650
-
- thumb_func_start sub_80F8700
-sub_80F8700: @ 80F8700
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r0, _080F8748 @ =gSaveBlock1 + 0x2D94
- adds r0, 0x4
- adds r0, r5, r0
- ldrb r6, [r0]
- ldr r4, _080F874C @ =gStringVar1
- adds r0, r5, 0
- bl sub_80F84C8
- adds r1, r0, 0
- adds r0, r4, 0
- movs r2, 0
- movs r3, 0xA
- bl ConvertIntToDecimalStringN
- ldr r4, _080F8750 @ =gStringVar2
- adds r0, r6, 0
- bl sub_80F8490
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldr r1, _080F8754 @ =gStringVar3
- adds r0, r5, 0
- bl sub_80F8534
- adds r0, r6, 0
- bl sub_80F8484
- bl ShowFieldMessage
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080F8748: .4byte gSaveBlock1 + 0x2D94
-_080F874C: .4byte gStringVar1
-_080F8750: .4byte gStringVar2
-_080F8754: .4byte gStringVar3
- thumb_func_end sub_80F8700
-
- thumb_func_start sub_80F8758
-sub_80F8758: @ 80F8758
- push {r4-r6,lr}
- bl sub_80F849C
- adds r3, r0, 0
- lsls r3, 25
- movs r0, 0x80
- lsls r0, 19
- adds r3, r0
- lsrs r3, 24
- movs r0, 0
- movs r1, 0
- movs r2, 0x19
- bl MenuDrawTextWindow
- movs r4, 0
- ldr r1, _080F87BC @ =gSaveBlock1 + 0x2D94
- ldrb r0, [r1, 0x4]
- cmp r0, 0
- beq _080F87A4
- adds r6, r1, 0x4
- movs r5, 0x80
- lsls r5, 18
-_080F8784:
- bl sub_80F8478
- lsrs r2, r5, 24
- movs r1, 0x1
- bl MenuPrint
- movs r1, 0x80
- lsls r1, 18
- adds r5, r1
- adds r4, 0x1
- cmp r4, 0x3
- bgt _080F87A4
- adds r0, r4, r6
- ldrb r0, [r0]
- cmp r0, 0
- bne _080F8784
-_080F87A4:
- ldr r0, _080F87C0 @ =gPCText_Cancel
- lsls r2, r4, 25
- movs r1, 0x80
- lsls r1, 18
- adds r2, r1
- lsrs r2, 24
- movs r1, 0x1
- bl MenuPrint
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080F87BC: .4byte gSaveBlock1 + 0x2D94
-_080F87C0: .4byte gPCText_Cancel
- thumb_func_end sub_80F8758
-
- thumb_func_start sub_80F87C4
-sub_80F87C4: @ 80F87C4
- push {r4-r6,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _080F87E4 @ =gTasks
- adds r4, r0, r1
- movs r0, 0x8
- ldrsh r5, [r4, r0]
- cmp r5, 0
- beq _080F87E8
- cmp r5, 0x1
- beq _080F8810
- b _080F8862
- .align 2, 0
-_080F87E4: .4byte gTasks
-_080F87E8:
- bl sub_80F8758
- bl sub_80F849C
- adds r3, r0, 0
- adds r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- str r5, [sp]
- movs r0, 0x18
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0x1
- movs r2, 0x2
- bl InitMenu
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080F8862
-_080F8810:
- bl ProcessMenuInput
- lsls r0, 24
- asrs r4, r0, 24
- movs r0, 0x2
- negs r0, r0
- cmp r4, r0
- beq _080F8862
- adds r0, 0x1
- cmp r4, r0
- beq _080F8832
- bl sub_80F849C
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bne _080F8840
-_080F8832:
- ldr r1, _080F883C @ =gScriptResult
- movs r0, 0
- strh r0, [r1]
- b _080F8848
- .align 2, 0
-_080F883C: .4byte gScriptResult
-_080F8840:
- ldr r0, _080F886C @ =gScriptResult
- strh r5, [r0]
- ldr r0, _080F8870 @ =gUnknown_03000748
- strb r4, [r0]
-_080F8848:
- bl HandleDestroyMenuCursors
- movs r0, 0
- movs r1, 0
- movs r2, 0x19
- movs r3, 0xC
- bl MenuZeroFillWindowRect
- adds r0, r6, 0
- bl DestroyTask
- bl EnableBothScriptContexts
-_080F8862:
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080F886C: .4byte gScriptResult
-_080F8870: .4byte gUnknown_03000748
- thumb_func_end sub_80F87C4
-
- thumb_func_start sub_80F8874
-sub_80F8874: @ 80F8874
- push {lr}
- ldr r0, _080F8884 @ =sub_80F87C4
- movs r1, 0x50
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_080F8884: .4byte sub_80F87C4
- thumb_func_end sub_80F8874
-
- thumb_func_start sub_80F8888
-sub_80F8888: @ 80F8888
- push {lr}
- ldr r0, _080F8898 @ =gUnknown_03000748
- ldrb r0, [r0]
- bl sub_80F8700
- pop {r0}
- bx r0
- .align 2, 0
-_080F8898: .4byte gUnknown_03000748
- thumb_func_end sub_80F8888
-
- thumb_func_start sub_80F889C
-sub_80F889C: @ 80F889C
- push {lr}
- bl sub_80F849C
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_80F889C
-
- thumb_func_start sub_80F88AC
-sub_80F88AC: @ 80F88AC
- push {r4,r5,lr}
- ldr r1, _080F88C8 @ =gSaveBlock1 + 0x2D94
- ldr r5, _080F88CC @ =gUnknown_03000748
- ldrb r0, [r5]
- adds r1, 0x4
- adds r1, r0, r1
- ldrb r4, [r1]
- bl sub_80F8508
- cmp r0, 0x1
- beq _080F88D0
- movs r0, 0
- b _080F88DA
- .align 2, 0
-_080F88C8: .4byte gSaveBlock1 + 0x2D94
-_080F88CC: .4byte gUnknown_03000748
-_080F88D0:
- ldrb r0, [r5]
- adds r1, r4, 0
- bl sub_80F8598
- movs r0, 0x1
-_080F88DA:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80F88AC
-
- thumb_func_start sub_80F88E0
-sub_80F88E0: @ 80F88E0
- push {lr}
- ldr r0, _080F88F0 @ =gSaveBlock1 + 0x2D94
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- beq _080F88F4
- movs r0, 0x1
- b _080F88F6
- .align 2, 0
-_080F88F0: .4byte gSaveBlock1 + 0x2D94
-_080F88F4:
- movs r0, 0
-_080F88F6:
- pop {r1}
- bx r1
- thumb_func_end sub_80F88E0
-
- thumb_func_start sub_80F88FC
-sub_80F88FC: @ 80F88FC
- push {lr}
- bl sub_80F8650
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_80F88FC
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/party_menu.s b/asm/party_menu.s
index 8a7c153b9..ec6754b86 100644
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -7645,7 +7645,7 @@ _08070AF4:
ldr r7, _08070B28 @ =0x0201c000
ldr r0, [r7]
movs r1, 0x1
- bl sub_803B7C8
+ bl MonTryLearningNewMove
lsls r0, 16
lsrs r4, r0, 16
ldr r1, _08070B2C @ =0xfffff282
@@ -7680,7 +7680,7 @@ _08070B40:
lsrs r2, r0, 16
cmp r2, 0
beq _08070B74
- ldr r1, _08070B6C @ =gUnknown_03005E94
+ ldr r1, _08070B6C @ =gCB2_AfterEvolution
ldr r0, _08070B70 @ =sub_80A53F8
str r0, [r1]
ldr r0, [r7]
@@ -7692,7 +7692,7 @@ _08070B40:
bl DestroyTask
b _08070C2C
.align 2, 0
-_08070B6C: .4byte gUnknown_03005E94
+_08070B6C: .4byte gCB2_AfterEvolution
_08070B70: .4byte sub_80A53F8
_08070B74:
adds r0, r6, 0
@@ -7703,7 +7703,7 @@ _08070B7C:
ldr r1, _08070BBC @ =gStringVar1
bl GetMonNickname
ldr r0, _08070BC0 @ =gStringVar2
- ldr r5, _08070BC4 @ =word_2024E82
+ ldr r5, _08070BC4 @ =gMoveToLearn
ldrh r2, [r5]
movs r1, 0xD
muls r1, r2
@@ -7729,7 +7729,7 @@ _08070B7C:
.align 2, 0
_08070BBC: .4byte gStringVar1
_08070BC0: .4byte gStringVar2
-_08070BC4: .4byte word_2024E82
+_08070BC4: .4byte gMoveToLearn
_08070BC8: .4byte gMoveNames
_08070BCC: .4byte gStringVar4
_08070BD0: .4byte gOtherText_WantsToLearn
@@ -7796,7 +7796,7 @@ sub_8070C54: @ 8070C54
ldr r7, _08070C78 @ =0x0201c000
ldr r0, [r7]
movs r1, 0
- bl sub_803B7C8
+ bl MonTryLearningNewMove
lsls r0, 16
lsrs r4, r0, 16
ldr r0, _08070C7C @ =0x0000fffe
@@ -7826,7 +7826,7 @@ _08070C8C:
lsrs r2, r0, 16
cmp r2, 0
beq _08070CC0
- ldr r1, _08070CB8 @ =gUnknown_03005E94
+ ldr r1, _08070CB8 @ =gCB2_AfterEvolution
ldr r0, _08070CBC @ =sub_80A53F8
str r0, [r1]
ldr r0, [r7]
@@ -7838,7 +7838,7 @@ _08070C8C:
bl DestroyTask
b _08070D68
.align 2, 0
-_08070CB8: .4byte gUnknown_03005E94
+_08070CB8: .4byte gCB2_AfterEvolution
_08070CBC: .4byte sub_80A53F8
_08070CC0:
adds r0, r6, 0
@@ -7849,7 +7849,7 @@ _08070CC8:
ldr r1, _08070D08 @ =gStringVar1
bl GetMonNickname
ldr r0, _08070D0C @ =gStringVar2
- ldr r5, _08070D10 @ =word_2024E82
+ ldr r5, _08070D10 @ =gMoveToLearn
ldrh r2, [r5]
movs r1, 0xD
muls r1, r2
@@ -7875,7 +7875,7 @@ _08070CC8:
.align 2, 0
_08070D08: .4byte gStringVar1
_08070D0C: .4byte gStringVar2
-_08070D10: .4byte word_2024E82
+_08070D10: .4byte gMoveToLearn
_08070D14: .4byte gMoveNames
_08070D18: .4byte gStringVar4
_08070D1C: .4byte gOtherText_WantsToLearn
@@ -7971,7 +7971,7 @@ DoEvolutionStoneItemEffect: @ 8070DBC
adds r1, r6, 0
adds r2, r5, 0
bl sub_806E8D0
- ldr r1, _08070E20 @ =gUnknown_03005E94
+ ldr r1, _08070E20 @ =gCB2_AfterEvolution
ldr r0, _08070E24 @ =sub_80A53F8
str r0, [r1]
ldr r0, _08070E28 @ =0x0201c000
@@ -7995,7 +7995,7 @@ DoEvolutionStoneItemEffect: @ 8070DBC
.align 2, 0
_08070E18: .4byte gTasks
_08070E1C: .4byte TaskDummy
-_08070E20: .4byte gUnknown_03005E94
+_08070E20: .4byte gCB2_AfterEvolution
_08070E24: .4byte sub_80A53F8
_08070E28: .4byte 0x0201c000
_08070E2C: .4byte gUnknown_0202E8F4
diff --git a/asm/pokeblock_feed.s b/asm/pokeblock_feed.s
deleted file mode 100644
index 7df634399..000000000
--- a/asm/pokeblock_feed.s
+++ /dev/null
@@ -1,1836 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8147890
-sub_8147890: @ 8147890
- push {lr}
- bl AnimateSprites
- bl BuildOamBuffer
- bl RunTasks
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_8147890
-
- thumb_func_start sub_81478A8
-sub_81478A8: @ 81478A8
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_81478A8
-
- thumb_func_start sub_81478BC
-sub_81478BC: @ 81478BC
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _081478D8 @ =gMain
- ldr r1, _081478DC @ =0x0000043c
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0xD
- bls _081478CE
- b _08147AD0
-_081478CE:
- lsls r0, 2
- ldr r1, _081478E0 @ =_081478E4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081478D8: .4byte gMain
-_081478DC: .4byte 0x0000043c
-_081478E0: .4byte _081478E4
- .align 2, 0
-_081478E4:
- .4byte _0814791C
- .4byte _08147938
- .4byte _0814794C
- .4byte _08147960
- .4byte _08147966
- .4byte _08147980
- .4byte _0814798C
- .4byte _081479B8
- .4byte _081479DC
- .4byte _081479F4
- .4byte _08147A20
- .4byte _08147A3C
- .4byte _08147A5C
- .4byte _08147A8C
-_0814791C:
- bl sub_80F9438
- bl sub_80F9368
- bl sub_8147B04
- ldr r1, _08147930 @ =gMain
- ldr r2, _08147934 @ =0x0000043c
- adds r1, r2
- b _08147A4A
- .align 2, 0
-_08147930: .4byte gMain
-_08147934: .4byte 0x0000043c
-_08147938:
- bl ResetPaletteFade
- ldr r2, _08147948 @ =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- b _08147A44
- .align 2, 0
-_08147948: .4byte gPaletteFade
-_0814794C:
- bl ResetSpriteData
- ldr r1, _08147958 @ =gMain
- ldr r2, _0814795C @ =0x0000043c
- adds r1, r2
- b _08147A4A
- .align 2, 0
-_08147958: .4byte gMain
-_0814795C: .4byte 0x0000043c
-_08147960:
- bl FreeAllSpritePalettes
- b _08147A44
-_08147966:
- ldr r0, _08147974 @ =gWindowConfig_81E6E50
- bl SetUpWindowConfig
- ldr r1, _08147978 @ =gMain
- ldr r2, _0814797C @ =0x0000043c
- adds r1, r2
- b _08147A4A
- .align 2, 0
-_08147974: .4byte gWindowConfig_81E6E50
-_08147978: .4byte gMain
-_0814797C: .4byte 0x0000043c
-_08147980:
- ldr r0, _08147988 @ =gWindowConfig_81E6E50
- bl MultistepInitMenuWindowBegin
- b _08147A44
- .align 2, 0
-_08147988: .4byte gWindowConfig_81E6E50
-_0814798C:
- bl MultistepInitMenuWindowContinue
- cmp r0, 0
- bne _08147996
- b _08147AD0
-_08147996:
- ldr r0, _081479A8 @ =0x02000000
- ldr r1, _081479AC @ =0x0001ffff
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- ldr r1, _081479B0 @ =gMain
- ldr r2, _081479B4 @ =0x0000043c
- adds r1, r2
- b _08147A4A
- .align 2, 0
-_081479A8: .4byte 0x02000000
-_081479AC: .4byte 0x0001ffff
-_081479B0: .4byte gMain
-_081479B4: .4byte 0x0000043c
-_081479B8:
- ldr r0, _081479D4 @ =gUnknown_02039310
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _081479D8 @ =gPlayerParty
- adds r0, r1
- bl sub_8147B20
- lsls r0, 24
- cmp r0, 0
- bne _081479D0
- b _08147AD0
-_081479D0:
- b _08147A44
- .align 2, 0
-_081479D4: .4byte gUnknown_02039310
-_081479D8: .4byte gPlayerParty
-_081479DC:
- bl sub_81480B4
- ldr r1, _081479EC @ =0x02000000
- ldr r2, _081479F0 @ =0x0001fffd
- adds r1, r2
- strb r0, [r1]
- b _08147A44
- .align 2, 0
-_081479EC: .4byte 0x02000000
-_081479F0: .4byte 0x0001fffd
-_081479F4:
- ldr r0, _08147A10 @ =gUnknown_02039310
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08147A14 @ =gPlayerParty
- adds r0, r1
- bl sub_8147F84
- ldr r1, _08147A18 @ =0x02000000
- ldr r2, _08147A1C @ =0x0001fffe
- adds r1, r2
- strb r0, [r1]
- b _08147A44
- .align 2, 0
-_08147A10: .4byte gUnknown_02039310
-_08147A14: .4byte gPlayerParty
-_08147A18: .4byte 0x02000000
-_08147A1C: .4byte 0x0001fffe
-_08147A20:
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r1, _08147A34 @ =gMain
- ldr r2, _08147A38 @ =0x0000043c
- adds r1, r2
- b _08147A4A
- .align 2, 0
-_08147A34: .4byte gMain
-_08147A38: .4byte 0x0000043c
-_08147A3C:
- bl sub_8055870
- cmp r0, 0x1
- beq _08147AD0
-_08147A44:
- ldr r1, _08147A54 @ =gMain
- ldr r0, _08147A58 @ =0x0000043c
- adds r1, r0
-_08147A4A:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08147AD0
- .align 2, 0
-_08147A54: .4byte gMain
-_08147A58: .4byte 0x0000043c
-_08147A5C:
- ldr r3, _08147AB0 @ =0x04000208
- ldrh r2, [r3]
- movs r0, 0
- strh r0, [r3]
- ldr r4, _08147AB4 @ =0x04000200
- ldrh r0, [r4]
- movs r1, 0x1
- orrs r0, r1
- strh r0, [r4]
- strh r2, [r3]
- ldr r2, _08147AB8 @ =REG_DISPSTAT
- ldrh r0, [r2]
- movs r1, 0x8
- orrs r0, r1
- strh r0, [r2]
- ldr r0, _08147ABC @ =sub_81478A8
- bl SetVBlankCallback
- ldr r1, _08147AC0 @ =gMain
- ldr r2, _08147AC4 @ =0x0000043c
- adds r1, r2
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_08147A8C:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r2, _08147AC8 @ =gPaletteFade
- ldrb r1, [r2, 0x8]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2, 0x8]
- ldr r0, _08147ACC @ =sub_8147890
- bl SetMainCallback2
- movs r0, 0x1
- b _08147AD2
- .align 2, 0
-_08147AB0: .4byte 0x04000208
-_08147AB4: .4byte 0x04000200
-_08147AB8: .4byte REG_DISPSTAT
-_08147ABC: .4byte sub_81478A8
-_08147AC0: .4byte gMain
-_08147AC4: .4byte 0x0000043c
-_08147AC8: .4byte gPaletteFade
-_08147ACC: .4byte sub_8147890
-_08147AD0:
- movs r0, 0
-_08147AD2:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81478BC
-
- thumb_func_start sub_8147ADC
-sub_8147ADC: @ 8147ADC
- push {lr}
-_08147ADE:
- bl sub_81478BC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08147AF2
- movs r0, 0x1
- bl sub_8147DDC
- b _08147AFE
-_08147AF2:
- bl sub_80F9344
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08147ADE
-_08147AFE:
- pop {r0}
- bx r0
- thumb_func_end sub_8147ADC
-
- thumb_func_start sub_8147B04
-sub_8147B04: @ 8147B04
- ldr r1, _08147B18 @ =REG_BG1CNT
- ldr r2, _08147B1C @ =0x00001d02
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0xA
- movs r2, 0x9A
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- bx lr
- .align 2, 0
-_08147B18: .4byte REG_BG1CNT
-_08147B1C: .4byte 0x00001d02
- thumb_func_end sub_8147B04
-
- thumb_func_start sub_8147B20
-sub_8147B20: @ 8147B20
- push {r4-r6,lr}
- sub sp, 0xC
- adds r4, r0, 0
- ldr r0, _08147B40 @ =0x02000000
- ldr r1, _08147B44 @ =0x0001ffff
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x8
- bls _08147B34
- b _08147C84
-_08147B34:
- lsls r0, 2
- ldr r1, _08147B48 @ =_08147B4C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08147B40: .4byte 0x02000000
-_08147B44: .4byte 0x0001ffff
-_08147B48: .4byte _08147B4C
- .align 2, 0
-_08147B4C:
- .4byte _08147B70
- .4byte _08147BB8
- .4byte _08147BF0
- .4byte _08147BFC
- .4byte _08147C08
- .4byte _08147C14
- .4byte _08147C2C
- .4byte _08147C38
- .4byte _08147C60
-_08147B70:
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- adds r6, r0, 0
- lsls r0, r5, 3
- ldr r1, _08147BAC @ =gMonFrontPicTable
- adds r0, r1
- ldr r1, _08147BB0 @ =gMonFrontPicCoords
- lsls r2, r5, 2
- adds r2, r1
- ldrb r1, [r2]
- ldrb r2, [r2, 0x1]
- movs r3, 0x80
- lsls r3, 18
- ldr r4, _08147BB4 @ =gUnknown_081FAF4C
- ldr r4, [r4, 0x4]
- str r4, [sp]
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- bl HandleLoadSpecialPokePic
- b _08147C40
- .align 2, 0
-_08147BAC: .4byte gMonFrontPicTable
-_08147BB0: .4byte gMonFrontPicCoords
-_08147BB4: .4byte gUnknown_081FAF4C
-_08147BB8:
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- adds r6, r0, 0
- adds r0, r4, 0
- movs r1, 0x1
- bl GetMonData
- adds r1, r0, 0
- adds r0, r5, 0
- adds r2, r6, 0
- bl sub_80409C8
- adds r4, r0, 0
- bl LoadCompressedObjectPalette
- ldrh r0, [r4, 0x4]
- movs r1, 0x1
- bl GetMonSpriteTemplate_803C56C
- b _08147C40
-_08147BF0:
- ldr r0, _08147BF8 @ =gUnknown_083F7F74
- bl LoadCompressedObjectPic
- b _08147C40
- .align 2, 0
-_08147BF8: .4byte gUnknown_083F7F74
-_08147BFC:
- ldr r0, _08147C04 @ =gUnknown_083F7F7C
- bl LoadCompressedObjectPalette
- b _08147C40
- .align 2, 0
-_08147C04: .4byte gUnknown_083F7F7C
-_08147C08:
- ldr r0, _08147C10 @ =gUnknown_084121DC
- bl LoadCompressedObjectPic
- b _08147C40
- .align 2, 0
-_08147C10: .4byte gUnknown_084121DC
-_08147C14:
- ldr r0, _08147C24 @ =gScriptItemId
- ldrb r0, [r0]
- bl sub_8147C90
- ldr r0, _08147C28 @ =gUnknown_02039350
- bl LoadCompressedObjectPalette
- b _08147C40
- .align 2, 0
-_08147C24: .4byte gScriptItemId
-_08147C28: .4byte gUnknown_02039350
-_08147C2C:
- ldr r0, _08147C34 @ =gBattleTerrainTiles_Building
- movs r1, 0xC0
- lsls r1, 19
- b _08147C3C
- .align 2, 0
-_08147C34: .4byte gBattleTerrainTiles_Building
-_08147C38:
- ldr r0, _08147C50 @ =gUnknown_08E782FC
- ldr r1, _08147C54 @ =0x0600e800
-_08147C3C:
- bl LZDecompressVram
-_08147C40:
- ldr r1, _08147C58 @ =0x02000000
- ldr r0, _08147C5C @ =0x0001ffff
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08147C84
- .align 2, 0
-_08147C50: .4byte gUnknown_08E782FC
-_08147C54: .4byte 0x0600e800
-_08147C58: .4byte 0x02000000
-_08147C5C: .4byte 0x0001ffff
-_08147C60:
- ldr r0, _08147C78 @ =gBattleTerrainPalette_BattleTower
- movs r1, 0x20
- movs r2, 0x60
- bl LoadCompressedPalette
- ldr r0, _08147C7C @ =0x02000000
- ldr r1, _08147C80 @ =0x0001ffff
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- movs r0, 0x1
- b _08147C86
- .align 2, 0
-_08147C78: .4byte gBattleTerrainPalette_BattleTower
-_08147C7C: .4byte 0x02000000
-_08147C80: .4byte 0x0001ffff
-_08147C84:
- movs r0, 0
-_08147C86:
- add sp, 0xC
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8147B20
-
- thumb_func_start sub_8147C90
-sub_8147C90: @ 8147C90
- push {lr}
- lsls r0, 24
- lsrs r0, 21
- ldr r1, _08147CB8 @ =gSaveBlock1 + 0x7F8
- adds r0, r1
- movs r1, 0
- bl sub_810CA9C
- lsls r0, 24
- ldr r2, _08147CBC @ =gUnknown_02039350
- ldr r1, _08147CC0 @ =gUnknown_084120A4
- lsrs r0, 22
- subs r0, 0x4
- adds r0, r1
- ldr r0, [r0]
- str r0, [r2]
- ldr r0, _08147CC4 @ =0x000039e2
- strh r0, [r2, 0x4]
- pop {r0}
- bx r0
- .align 2, 0
-_08147CB8: .4byte gSaveBlock1 + 0x7F8
-_08147CBC: .4byte gUnknown_02039350
-_08147CC0: .4byte gUnknown_084120A4
-_08147CC4: .4byte 0x000039e2
- thumb_func_end sub_8147C90
-
- thumb_func_start sub_8147CC8
-sub_8147CC8: @ 8147CC8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08147D00 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08147CDC
- b _08147DCE
-_08147CDC:
- ldr r0, _08147D04 @ =gTasks
- lsls r2, r4, 2
- adds r1, r2, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0x8
- ldrsh r3, [r1, r0]
- ldr r0, _08147D08 @ =0x0000010d
- adds r5, r2, 0
- cmp r3, r0
- beq _08147D50
- cmp r3, r0
- bgt _08147D0C
- cmp r3, 0
- beq _08147D20
- cmp r3, 0xFF
- beq _08147D38
- b _08147D8C
- .align 2, 0
-_08147D00: .4byte gPaletteFade
-_08147D04: .4byte gTasks
-_08147D08: .4byte 0x0000010d
-_08147D0C:
- ldr r0, _08147D1C @ =0x00000119
- cmp r3, r0
- beq _08147D68
- adds r0, 0x10
- cmp r3, r0
- beq _08147D80
- b _08147D8C
- .align 2, 0
-_08147D1C: .4byte 0x00000119
-_08147D20:
- ldr r0, _08147D30 @ =gUnknown_03005F3C
- strb r3, [r0]
- ldr r0, _08147D34 @ =gUnknown_03005F94
- strh r3, [r0]
- bl sub_81481DC
- b _08147D8C
- .align 2, 0
-_08147D30: .4byte gUnknown_03005F3C
-_08147D34: .4byte gUnknown_03005F94
-_08147D38:
- ldr r0, _08147D48 @ =0x02000000
- ldr r2, _08147D4C @ =0x0001fffd
- adds r0, r2
- ldrb r0, [r0]
- ldrb r1, [r1, 0xA]
- bl sub_8148108
- b _08147D8C
- .align 2, 0
-_08147D48: .4byte 0x02000000
-_08147D4C: .4byte 0x0001fffd
-_08147D50:
- bl sub_814817C
- ldr r1, _08147D60 @ =0x02000000
- ldr r2, _08147D64 @ =0x0001fffc
- adds r1, r2
- strb r0, [r1]
- b _08147D8C
- .align 2, 0
-_08147D60: .4byte 0x02000000
-_08147D64: .4byte 0x0001fffc
-_08147D68:
- ldr r0, _08147D78 @ =0x02000000
- ldr r1, _08147D7C @ =0x0001fffe
- adds r0, r1
- ldrb r0, [r0]
- bl sub_8148044
- b _08147D8C
- .align 2, 0
-_08147D78: .4byte 0x02000000
-_08147D7C: .4byte 0x0001fffe
-_08147D80:
- ldr r0, _08147D88 @ =sub_8147E40
- str r0, [r1]
- b _08147DCE
- .align 2, 0
-_08147D88: .4byte sub_8147E40
-_08147D8C:
- ldr r0, _08147DA0 @ =gUnknown_03005F94
- ldr r1, _08147DA4 @ =gUnknown_03005F34
- ldrh r2, [r0]
- ldrh r0, [r1]
- cmp r2, r0
- bcs _08147DA8
- bl sub_814825C
- b _08147DB8
- .align 2, 0
-_08147DA0: .4byte gUnknown_03005F94
-_08147DA4: .4byte gUnknown_03005F34
-_08147DA8:
- cmp r2, r0
- bne _08147DB8
- ldr r0, _08147DD4 @ =gTasks
- adds r1, r5, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0xFE
- strh r0, [r1, 0x8]
-_08147DB8:
- ldr r1, _08147DD8 @ =gUnknown_03005F94
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- ldr r0, _08147DD4 @ =gTasks
- adds r1, r5, r4
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
-_08147DCE:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08147DD4: .4byte gTasks
-_08147DD8: .4byte gUnknown_03005F94
- thumb_func_end sub_8147CC8
-
- thumb_func_start sub_8147DDC
-sub_8147DDC: @ 8147DDC
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _08147E08 @ =sub_8147CC8
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08147E0C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0
- strh r0, [r1, 0x8]
- strh r4, [r1, 0xA]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08147E08: .4byte sub_8147CC8
-_08147E0C: .4byte gTasks
- thumb_func_end sub_8147DDC
-
- thumb_func_start sub_8147E10
-sub_8147E10: @ 8147E10
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl MenuUpdateWindowText
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08147E30
- ldr r0, _08147E38 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _08147E3C @ =sub_8147F4C
- str r0, [r1]
-_08147E30:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08147E38: .4byte gTasks
-_08147E3C: .4byte sub_8147F4C
- thumb_func_end sub_8147E10
-
- thumb_func_start sub_8147E40
-sub_8147E40: @ 8147E40
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, _08147E94 @ =gUnknown_02039310
- ldrb r1, [r0]
- movs r0, 0x64
- adds r5, r1, 0
- muls r5, r0
- ldr r0, _08147E98 @ =gPlayerParty
- adds r5, r0
- ldr r0, _08147E9C @ =gScriptItemId
- ldrh r4, [r0]
- lsls r4, 3
- ldr r0, _08147EA0 @ =gSaveBlock1 + 0x7F8
- adds r4, r0
- adds r0, r5, 0
- bl GetNature
- lsls r0, 24
- lsrs r0, 24
- adds r1, r4, 0
- bl sub_810CAE4
- ldr r6, _08147EA4 @ =gUnknown_02039312
- strh r0, [r6]
- ldr r1, _08147EA8 @ =gStringVar1
- adds r0, r5, 0
- bl GetMonNickname
- ldr r1, _08147EAC @ =gStringVar2
- adds r0, r4, 0
- bl sub_810CB44
- movs r1, 0
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _08147EB8
- ldr r0, _08147EB0 @ =gStringVar4
- ldr r1, _08147EB4 @ =gContestStatsText_NormallyAte
- bl StringExpandPlaceholders
- b _08147ED8
- .align 2, 0
-_08147E94: .4byte gUnknown_02039310
-_08147E98: .4byte gPlayerParty
-_08147E9C: .4byte gScriptItemId
-_08147EA0: .4byte gSaveBlock1 + 0x7F8
-_08147EA4: .4byte gUnknown_02039312
-_08147EA8: .4byte gStringVar1
-_08147EAC: .4byte gStringVar2
-_08147EB0: .4byte gStringVar4
-_08147EB4: .4byte gContestStatsText_NormallyAte
-_08147EB8:
- cmp r0, 0
- ble _08147ED0
- ldr r0, _08147EC8 @ =gStringVar4
- ldr r1, _08147ECC @ =gContestStatsText_HappilyAte
- bl StringExpandPlaceholders
- b _08147ED8
- .align 2, 0
-_08147EC8: .4byte gStringVar4
-_08147ECC: .4byte gContestStatsText_HappilyAte
-_08147ED0:
- ldr r0, _08147EF8 @ =gStringVar4
- ldr r1, _08147EFC @ =gContestStatsText_DisdainfullyAte
- bl StringExpandPlaceholders
-_08147ED8:
- ldr r0, _08147EF8 @ =gStringVar4
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrintMessage
- ldr r1, _08147F00 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldr r1, _08147F04 @ =sub_8147E10
- str r1, [r0]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08147EF8: .4byte gStringVar4
-_08147EFC: .4byte gContestStatsText_DisdainfullyAte
-_08147F00: .4byte gTasks
-_08147F04: .4byte sub_8147E10
- thumb_func_end sub_8147E40
-
- thumb_func_start sub_8147F08
-sub_8147F08: @ 8147F08
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08147F3C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08147F34
- ldr r0, _08147F40 @ =gMPlay_BGM
- ldr r1, _08147F44 @ =0x0000ffff
- movs r2, 0x80
- lsls r2, 1
- bl m4aMPlayVolumeControl
- ldr r0, _08147F48 @ =gMain
- ldr r0, [r0, 0x8]
- bl SetMainCallback2
- adds r0, r4, 0
- bl DestroyTask
-_08147F34:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08147F3C: .4byte gPaletteFade
-_08147F40: .4byte gMPlay_BGM
-_08147F44: .4byte 0x0000ffff
-_08147F48: .4byte gMain
- thumb_func_end sub_8147F08
-
- thumb_func_start sub_8147F4C
-sub_8147F4C: @ 8147F4C
- 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, _08147F7C @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _08147F80 @ =sub_8147F08
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08147F7C: .4byte gTasks
-_08147F80: .4byte sub_8147F08
- thumb_func_end sub_8147F4C
-
- thumb_func_start sub_8147F84
-sub_8147F84: @ 8147F84
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r5, r0, 0
- movs r1, 0x41
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldr r0, _08148024 @ =gUnknown_02024E8C
- movs r1, 0x30
- movs r2, 0x50
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r0, _08148028 @ =gUnknown_03005F24
- strh r4, [r0]
- ldr r0, _0814802C @ =gUnknown_03005F2C
- mov r1, r8
- strb r1, [r0]
- adds r0, r5, 0
- bl GetNature
- ldr r1, _08148030 @ =gUnknown_03005F30
- strb r0, [r1]
- ldr r7, _08148034 @ =gSprites
- mov r1, r8
- lsls r0, r1, 4
- add r0, r8
- lsls r5, r0, 2
- adds r6, r5, r7
- strh r4, [r6, 0x32]
- adds r0, r7, 0
- adds r0, 0x1C
- adds r0, r5, r0
- ldr r1, _08148038 @ =SpriteCallbackDummy
- str r1, [r0]
- ldr r0, _0814803C @ =gUnknown_03005F28
- mov r9, r0
- movs r0, 0x1
- mov r1, r9
- strb r0, [r1]
- adds r0, r4, 0
- bl sub_8040A3C
- lsls r0, 24
- cmp r0, 0
- bne _08148016
- adds r0, r7, 0
- adds r0, 0x10
- adds r0, r5, r0
- ldr r1, _08148040 @ =gSpriteAffineAnimTable_84120EC
- str r1, [r0]
- ldrb r3, [r6, 0x1]
- movs r0, 0x3
- orrs r3, r0
- strb r3, [r6, 0x1]
- lsrs r1, r3, 6
- ldrb r2, [r6, 0x3]
- lsrs r2, 6
- lsls r3, 30
- lsrs r3, 30
- adds r0, r6, 0
- bl CalcCenterToCornerVec
- movs r0, 0
- mov r1, r9
- strb r0, [r1]
-_08148016:
- mov r0, r8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08148024: .4byte gUnknown_02024E8C
-_08148028: .4byte gUnknown_03005F24
-_0814802C: .4byte gUnknown_03005F2C
-_08148030: .4byte gUnknown_03005F30
-_08148034: .4byte gSprites
-_08148038: .4byte SpriteCallbackDummy
-_0814803C: .4byte gUnknown_03005F28
-_08148040: .4byte gSpriteAffineAnimTable_84120EC
- thumb_func_end sub_8147F84
-
- thumb_func_start sub_8148044
-sub_8148044: @ 8148044
- lsls r0, 24
- lsrs r0, 24
- ldr r3, _0814806C @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r2, r1, r3
- movs r0, 0x30
- strh r0, [r2, 0x20]
- movs r0, 0x50
- strh r0, [r2, 0x22]
- ldr r0, _08148070 @ =0x0000fff8
- strh r0, [r2, 0x2E]
- movs r0, 0x1
- strh r0, [r2, 0x30]
- adds r3, 0x1C
- adds r1, r3
- ldr r0, _08148074 @ =sub_8148078
- str r0, [r1]
- bx lr
- .align 2, 0
-_0814806C: .4byte gSprites
-_08148070: .4byte 0x0000fff8
-_08148074: .4byte sub_8148078
- thumb_func_end sub_8148044
-
- thumb_func_start sub_8148078
-sub_8148078: @ 8148078
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x20]
- adds r0, 0x4
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x2E]
- ldrh r2, [r4, 0x22]
- adds r1, r0, r2
- strh r1, [r4, 0x22]
- ldrh r1, [r4, 0x30]
- adds r0, r1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- cmp r0, 0
- bne _0814809E
- ldrh r0, [r4, 0x32]
- movs r1, 0
- bl PlayCry1
-_0814809E:
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x9
- bne _081480AA
- ldr r0, _081480B0 @ =SpriteCallbackDummy
- str r0, [r4, 0x1C]
-_081480AA:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081480B0: .4byte SpriteCallbackDummy
- thumb_func_end sub_8148078
-
- thumb_func_start sub_81480B4
-sub_81480B4: @ 81480B4
- push {r4,r5,lr}
- movs r0, 0xBC
- movs r1, 0x64
- movs r2, 0x2
- bl sub_810BA50
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r5, _081480FC @ =gSprites
- lsls r3, r4, 4
- adds r3, r4
- lsls r3, 2
- adds r0, r3, r5
- ldrb r2, [r0, 0x1]
- movs r1, 0x4
- negs r1, r1
- ands r1, r2
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0, 0x1]
- adds r1, r5, 0
- adds r1, 0x10
- adds r1, r3, r1
- ldr r2, _08148100 @ =gSpriteAffineAnimTable_84121A0
- str r2, [r1]
- adds r5, 0x1C
- adds r3, r5
- ldr r1, _08148104 @ =SpriteCallbackDummy
- str r1, [r3]
- bl InitSpriteAffineAnim
- adds r0, r4, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_081480FC: .4byte gSprites
-_08148100: .4byte gSpriteAffineAnimTable_84121A0
-_08148104: .4byte SpriteCallbackDummy
- thumb_func_end sub_81480B4
-
- thumb_func_start sub_8148108
-sub_8148108: @ 8148108
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r5, r1, 0
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r5, 24
- lsrs r5, 24
- ldr r0, _08148148 @ =gSprites
- mov r8, r0
- lsls r0, r7, 4
- adds r0, r7
- lsls r6, r0, 2
- mov r0, r8
- adds r4, r6, r0
- ldrb r0, [r4, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- ldrb r0, [r4, 0x1]
- movs r1, 0x3
- orrs r0, r1
- strb r0, [r4, 0x1]
- cmp r5, 0
- bne _08148150
- mov r0, r8
- adds r0, 0x10
- adds r0, r6, r0
- ldr r1, _0814814C @ =gSpriteAffineAnimTable_84121A4
- b _08148158
- .align 2, 0
-_08148148: .4byte gSprites
-_0814814C: .4byte gSpriteAffineAnimTable_84121A4
-_08148150:
- mov r0, r8
- adds r0, 0x10
- adds r0, r6, r0
- ldr r1, _08148174 @ =gSpriteAffineAnimTable_84121A8
-_08148158:
- str r1, [r0]
- lsls r0, r7, 4
- adds r0, r7
- lsls r0, 2
- ldr r1, _08148178 @ =gSprites
- adds r0, r1
- bl InitSpriteAffineAnim
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08148174: .4byte gSpriteAffineAnimTable_84121A8
-_08148178: .4byte gSprites
- thumb_func_end sub_8148108
-
- thumb_func_start sub_814817C
-sub_814817C: @ 814817C
- push {lr}
- ldr r0, _081481A4 @ =gSpriteTemplate_84121E4
- movs r1, 0xAE
- movs r2, 0x54
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _081481A8 @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldr r2, _081481AC @ =0x0000fff4
- strh r2, [r1, 0x2E]
- movs r2, 0x1
- strh r2, [r1, 0x30]
- pop {r1}
- bx r1
- .align 2, 0
-_081481A4: .4byte gSpriteTemplate_84121E4
-_081481A8: .4byte gSprites
-_081481AC: .4byte 0x0000fff4
- thumb_func_end sub_814817C
-
- thumb_func_start sub_81481B0
-sub_81481B0: @ 81481B0
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x20]
- subs r0, 0x4
- strh r0, [r2, 0x20]
- ldrh r0, [r2, 0x2E]
- ldrh r3, [r2, 0x22]
- adds r1, r0, r3
- strh r1, [r2, 0x22]
- ldrh r1, [r2, 0x30]
- adds r0, r1
- strh r0, [r2, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA
- bne _081481D6
- adds r0, r2, 0
- bl DestroySprite
-_081481D6:
- pop {r0}
- bx r0
- thumb_func_end sub_81481B0
-
- thumb_func_start sub_81481DC
-sub_81481DC: @ 81481DC
- push {r4-r7,lr}
- ldr r6, _0814824C @ =gUnknown_03005F34
- movs r0, 0x1
- strh r0, [r6]
- ldr r1, _08148250 @ =gNatureToMonPokeblockAnim
- ldr r0, _08148254 @ =gUnknown_03005F30
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrb r3, [r0]
- movs r4, 0
- ldr r2, _08148258 @ =gMonPokeblockAnims
- lsls r1, r3, 2
- adds r1, r3
- lsls r1, 2
- adds r7, r2, 0
- adds r7, 0x8
- adds r0, r1, r7
- ldrh r0, [r0]
- adds r0, 0x1
- strh r0, [r6]
- adds r5, r2, 0
- adds r5, 0x12
- adds r1, r5
- movs r2, 0
- ldrsh r0, [r1, r2]
- cmp r0, 0x1
- beq _08148244
- adds r2, r6, 0
- adds r6, r5, 0
- adds r5, r7, 0
-_0814821A:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r4, 0x7
- bhi _08148244
- lsls r1, r3, 2
- adds r1, r3
- lsls r1, 2
- adds r0, r1, r5
- ldrh r0, [r0]
- ldrh r7, [r2]
- adds r0, r7
- strh r0, [r2]
- adds r1, r6
- movs r7, 0
- ldrsh r0, [r1, r7]
- cmp r0, 0x1
- bne _0814821A
-_08148244:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0814824C: .4byte gUnknown_03005F34
-_08148250: .4byte gNatureToMonPokeblockAnim
-_08148254: .4byte gUnknown_03005F30
-_08148258: .4byte gMonPokeblockAnims
- thumb_func_end sub_81481DC
-
- thumb_func_start sub_814825C
-sub_814825C: @ 814825C
- push {lr}
- ldr r0, _08148274 @ =gUnknown_03005F3C
- ldrb r0, [r0]
- cmp r0, 0x5A
- bls _08148268
- b _08148532
-_08148268:
- lsls r0, 2
- ldr r1, _08148278 @ =_0814827C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08148274: .4byte gUnknown_03005F3C
-_08148278: .4byte _0814827C
- .align 2, 0
-_0814827C:
- .4byte _081483E8
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _0814843C
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _0814847A
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _081484CC
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148524
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
-_081483E8:
- ldr r2, _0814841C @ =gUnknown_03005F40
- ldr r1, _08148420 @ =gNatureToMonPokeblockAnim
- ldr r0, _08148424 @ =gUnknown_03005F30
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrb r0, [r0]
- strb r0, [r2]
- ldr r2, _08148428 @ =gUnknown_03005F20
- ldr r0, _0814842C @ =gUnknown_03005F2C
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _08148430 @ =gSprites
- adds r1, r0
- str r1, [r2]
- ldr r0, _08148434 @ =gUnknown_03005F50
- movs r2, 0x44
- bl memcpy
- ldr r1, _08148438 @ =gUnknown_03005F3C
- movs r0, 0xA
- strb r0, [r1]
- b _08148532
- .align 2, 0
-_0814841C: .4byte gUnknown_03005F40
-_08148420: .4byte gNatureToMonPokeblockAnim
-_08148424: .4byte gUnknown_03005F30
-_08148428: .4byte gUnknown_03005F20
-_0814842C: .4byte gUnknown_03005F2C
-_08148430: .4byte gSprites
-_08148434: .4byte gUnknown_03005F50
-_08148438: .4byte gUnknown_03005F3C
-_0814843C:
- bl sub_8148540
- ldr r1, _081484A4 @ =gNatureToMonPokeblockAnim
- ldr r0, _081484A8 @ =gUnknown_03005F30
- ldrb r0, [r0]
- lsls r0, 1
- adds r1, 0x1
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _08148474
- ldr r3, _081484AC @ =gUnknown_03005F20
- ldr r2, [r3]
- ldrb r0, [r2, 0x1]
- movs r1, 0x3
- orrs r0, r1
- strb r0, [r2, 0x1]
- ldr r2, [r3]
- ldrb r1, [r2, 0x3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r1
- strb r0, [r2, 0x3]
- ldr r0, [r3]
- ldr r1, _081484B0 @ =gSpriteAffineAnimTable_8412050
- str r1, [r0, 0x10]
- bl InitSpriteAffineAnim
-_08148474:
- ldr r1, _081484B4 @ =gUnknown_03005F3C
- movs r0, 0x32
- strb r0, [r1]
-_0814847A:
- ldr r1, _081484A4 @ =gNatureToMonPokeblockAnim
- ldr r0, _081484A8 @ =gUnknown_03005F30
- ldrb r0, [r0]
- lsls r0, 1
- adds r1, 0x1
- adds r2, r0, r1
- ldrb r1, [r2]
- cmp r1, 0
- beq _081484EE
- ldr r0, _081484B8 @ =gUnknown_03005F28
- ldrb r0, [r0]
- cmp r0, 0
- bne _081484BC
- ldr r0, _081484AC @ =gUnknown_03005F20
- ldr r0, [r0]
- adds r1, 0xA
- lsls r1, 24
- lsrs r1, 24
- bl StartSpriteAffineAnim
- b _081484EE
- .align 2, 0
-_081484A4: .4byte gNatureToMonPokeblockAnim
-_081484A8: .4byte gUnknown_03005F30
-_081484AC: .4byte gUnknown_03005F20
-_081484B0: .4byte gSpriteAffineAnimTable_8412050
-_081484B4: .4byte gUnknown_03005F3C
-_081484B8: .4byte gUnknown_03005F28
-_081484BC:
- ldr r0, _081484C8 @ =gUnknown_03005F20
- ldr r0, [r0]
- ldrb r1, [r2]
- bl StartSpriteAffineAnim
- b _081484EE
- .align 2, 0
-_081484C8: .4byte gUnknown_03005F20
-_081484CC:
- bl sub_81485CC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08148532
- ldr r0, _081484F8 @ =gUnknown_03005FA0
- movs r1, 0x12
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _08148504
- ldr r1, _081484FC @ =gUnknown_03005F40
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl sub_8148540
-_081484EE:
- ldr r1, _08148500 @ =gUnknown_03005F3C
- movs r0, 0x3C
- strb r0, [r1]
- b _08148532
- .align 2, 0
-_081484F8: .4byte gUnknown_03005FA0
-_081484FC: .4byte gUnknown_03005F40
-_08148500: .4byte gUnknown_03005F3C
-_08148504:
- ldr r0, _0814851C @ =gUnknown_03005F20
- ldr r0, [r0]
- ldrb r0, [r0, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- ldr r1, _08148520 @ =gUnknown_03005F3C
- movs r0, 0x46
- strb r0, [r1]
- b _08148532
- .align 2, 0
-_0814851C: .4byte gUnknown_03005F20
-_08148520: .4byte gUnknown_03005F3C
-_08148524:
- bl sub_8148618
- ldr r0, _08148538 @ =gUnknown_03005F40
- movs r1, 0
- strb r1, [r0]
- ldr r0, _0814853C @ =gUnknown_03005F3C
- strb r1, [r0]
-_08148532:
- pop {r0}
- bx r0
- .align 2, 0
-_08148538: .4byte gUnknown_03005F40
-_0814853C: .4byte gUnknown_03005F3C
- thumb_func_end sub_814825C
-
- thumb_func_start sub_8148540
-sub_8148540: @ 8148540
- push {r4-r7,lr}
- movs r4, 0
- ldr r5, _081485B4 @ =gUnknown_03005FA0
- mov r12, r5
- ldr r7, _081485B8 @ =gMonPokeblockAnims
- ldr r6, _081485BC @ =gUnknown_03005F40
-_0814854C:
- lsls r2, r4, 1
- mov r0, r12
- adds r3, r2, r0
- ldrb r1, [r6]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r2, r0
- adds r2, r7
- ldrh r0, [r2]
- strh r0, [r3]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x9
- bls _0814854C
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _081485C4
- movs r2, 0
- ldrsh r0, [r5, r2]
- movs r2, 0x4
- ldrsh r1, [r5, r2]
- bl Sin
- strh r0, [r5, 0x14]
- movs r1, 0
- ldrsh r0, [r5, r1]
- movs r2, 0x6
- ldrsh r1, [r5, r2]
- bl Cos
- strh r0, [r5, 0x16]
- ldrh r0, [r5, 0x8]
- strh r0, [r5, 0x18]
- ldr r0, _081485C0 @ =gUnknown_03005F20
- ldr r1, [r0]
- ldrh r0, [r1, 0x24]
- strh r0, [r5, 0x1A]
- ldrh r0, [r1, 0x26]
- strh r0, [r5, 0x1C]
- bl sub_8148710
- ldrh r0, [r5, 0x18]
- strh r0, [r5, 0x8]
- bl sub_814862C
- ldrh r0, [r5, 0x18]
- strh r0, [r5, 0x8]
- movs r0, 0
- b _081485C6
- .align 2, 0
-_081485B4: .4byte gUnknown_03005FA0
-_081485B8: .4byte gMonPokeblockAnims
-_081485BC: .4byte gUnknown_03005F40
-_081485C0: .4byte gUnknown_03005F20
-_081485C4:
- movs r0, 0x1
-_081485C6:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8148540
-
- thumb_func_start sub_81485CC
-sub_81485CC: @ 81485CC
- push {r4,lr}
- ldr r3, _08148604 @ =gUnknown_03005FA0
- ldrh r0, [r3, 0x18]
- ldrh r1, [r3, 0x8]
- subs r0, r1
- lsls r0, 16
- ldr r1, _08148608 @ =gUnknown_03005F20
- ldr r4, [r1]
- lsrs r0, 15
- ldr r1, _0814860C @ =0x0201d000
- adds r2, r0, r1
- ldrh r2, [r2]
- strh r2, [r4, 0x24]
- movs r2, 0x80
- lsls r2, 3
- adds r1, r2
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r4, 0x26]
- ldrh r0, [r3, 0x8]
- subs r0, 0x1
- strh r0, [r3, 0x8]
- lsls r0, 16
- cmp r0, 0
- beq _08148610
- movs r0, 0
- b _08148612
- .align 2, 0
-_08148604: .4byte gUnknown_03005FA0
-_08148608: .4byte gUnknown_03005F20
-_0814860C: .4byte 0x0201d000
-_08148610:
- movs r0, 0x1
-_08148612:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81485CC
-
- thumb_func_start sub_8148618
-sub_8148618: @ 8148618
- push {lr}
- ldr r0, _08148628 @ =gUnknown_03005F20
- ldr r0, [r0]
- bl FreeSpriteOamMatrix
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_08148628: .4byte gUnknown_03005F20
- thumb_func_end sub_8148618
-
- thumb_func_start sub_814862C
-sub_814862C: @ 814862C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- ldr r1, _08148700 @ =gUnknown_03005FA0
- ldrh r0, [r1, 0x10]
- mov r8, r0
- ldrh r0, [r1, 0x18]
- mov r2, r8
- subs r0, r2
- lsls r0, 16
- lsrs r7, r0, 16
- ldrh r0, [r1, 0xC]
- ldrh r3, [r1, 0x1A]
- adds r0, r3
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp]
- ldrh r0, [r1, 0xE]
- ldrh r1, [r1, 0x1C]
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- movs r6, 0
- subs r0, r7, 0x1
- ldr r4, _08148704 @ =0x0201cffe
- mov r10, r4
- cmp r6, r0
- bge _081486D4
- ldr r1, [sp]
- lsls r0, r1, 16
- asrs r0, 16
- str r0, [sp, 0x4]
-_08148674:
- mov r2, r8
- adds r5, r2, r6
- lsls r5, 1
- ldr r4, _08148708 @ =0x0201d000
- adds r3, r5, r4
- ldrh r2, [r3]
- ldr r0, [sp, 0x4]
- subs r1, r2, r0
- ldr r4, _0814870C @ =0x0201d400
- adds r5, r4
- ldrh r0, [r5]
- mov r12, r0
- mov r4, r9
- lsls r0, r4, 16
- asrs r0, 16
- mov r4, r12
- subs r0, r4, r0
- lsls r4, r0, 16
- lsrs r4, 16
- lsls r1, 16
- asrs r1, 16
- adds r6, 0x1
- adds r0, r1, 0
- muls r0, r6
- adds r1, r7, 0
- str r2, [sp, 0x8]
- str r3, [sp, 0xC]
- bl __divsi3
- ldr r2, [sp, 0x8]
- subs r2, r0
- ldr r3, [sp, 0xC]
- strh r2, [r3]
- lsls r4, 16
- asrs r4, 16
- adds r0, r4, 0
- muls r0, r6
- adds r1, r7, 0
- bl __divsi3
- ldrh r1, [r5]
- subs r1, r0
- strh r1, [r5]
- lsls r6, 16
- lsrs r6, 16
- subs r0, r7, 0x1
- cmp r6, r0
- blt _08148674
-_081486D4:
- mov r1, r8
- adds r0, r1, r7
- lsls r0, 1
- mov r2, r10
- adds r1, r0, r2
- mov r3, sp
- ldrh r3, [r3]
- strh r3, [r1]
- movs r1, 0x80
- lsls r1, 3
- add r1, r10
- adds r0, r1
- mov r4, r9
- strh r4, [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
-_08148700: .4byte gUnknown_03005FA0
-_08148704: .4byte 0x0201cffe
-_08148708: .4byte 0x0201d000
-_0814870C: .4byte 0x0201d400
- thumb_func_end sub_814862C
-
- thumb_func_start sub_8148710
-sub_8148710: @ 8148710
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- movs r0, 0
- str r0, [sp]
- ldr r1, _081487A4 @ =gUnknown_03005FA0
- ldrh r2, [r1, 0x1A]
- ldrh r0, [r1, 0x14]
- subs r2, r0
- ldrh r3, [r1, 0x1C]
- ldrh r0, [r1, 0x16]
- subs r3, r0
- adds r6, r1, 0
- ldr r1, _081487A8 @ =0x0201d000
- mov r9, r1
- lsls r2, 16
- asrs r2, 16
- mov r8, r2
- movs r2, 0x80
- lsls r2, 3
- add r2, r9
- mov r10, r2
- lsls r3, 16
- asrs r7, r3, 16
-_08148746:
- movs r1, 0xA
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bge _08148750
- negs r0, r0
-_08148750:
- lsls r0, 16
- lsrs r0, 16
- ldrh r2, [r6, 0x6]
- adds r0, r2
- lsls r5, r0, 16
- strh r0, [r6, 0x6]
- ldrh r2, [r6, 0x4]
- movs r1, 0x4
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bge _0814876A
- movs r0, 0x1
- str r0, [sp]
-_0814876A:
- ldrh r0, [r6, 0x18]
- ldrh r1, [r6, 0x8]
- subs r0, r1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r1, 0
- beq _081487F0
- ldr r1, [sp]
- cmp r1, 0
- bne _081487AC
- movs r1, 0
- ldrsh r0, [r6, r1]
- lsrs r5, 24
- adds r1, r2, r5
- lsls r1, 16
- asrs r1, 16
- bl Sin
- lsls r4, 1
- mov r2, r9
- adds r1, r4, r2
- add r0, r8
- strh r0, [r1]
- movs r1, 0
- ldrsh r0, [r6, r1]
- ldrh r1, [r6, 0x6]
- adds r1, r5
- b _081487CE
- .align 2, 0
-_081487A4: .4byte gUnknown_03005FA0
-_081487A8: .4byte 0x0201d000
-_081487AC:
- movs r1, 0
- ldrsh r0, [r6, r1]
- lsrs r5, 24
- subs r1, r2, r5
- lsls r1, 16
- asrs r1, 16
- bl Sin
- lsls r4, 1
- mov r2, r9
- adds r1, r4, r2
- add r0, r8
- strh r0, [r1]
- movs r1, 0
- ldrsh r0, [r6, r1]
- ldrh r1, [r6, 0x6]
- subs r1, r5
-_081487CE:
- lsls r1, 16
- asrs r1, 16
- bl Cos
- add r4, r10
- adds r0, r7, r0
- strh r0, [r4]
- ldrh r0, [r6, 0x2]
- ldrh r2, [r6]
- adds r0, r2
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r6]
- ldrh r0, [r6, 0x8]
- subs r0, 0x1
- strh r0, [r6, 0x8]
- b _08148746
-_081487F0:
- 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_8148710
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/pokedex_area_screen.s b/asm/pokedex_area_screen.s
index 542eed201..9e380f597 100644
--- a/asm/pokedex_area_screen.s
+++ b/asm/pokedex_area_screen.s
@@ -518,7 +518,7 @@ _08110A44:
bl GetRoamerLocation
ldrb r0, [r4, 0x10]
ldrb r1, [r4, 0x11]
- bl get_mapheader_by_bank_and_number
+ bl Overworld_GetMapHeaderByGroupAndId
ldrb r0, [r0, 0x14]
strh r0, [r4, 0x12]
movs r3, 0x88
@@ -566,7 +566,7 @@ SetAreaHasMon: @ 8110A98
adds r0, r5
strb r1, [r0, 0x11]
adds r0, r2, 0
- bl get_mapheader_by_bank_and_number
+ bl Overworld_GetMapHeaderByGroupAndId
ldrb r0, [r0, 0x14]
bl sub_80FBA04
ldrh r1, [r4]
@@ -599,7 +599,7 @@ SetSpecialMapHasMon: @ 8110AE4
cmp r0, 0x1F
bhi _08110B96
adds r0, r2, 0
- bl get_mapheader_by_bank_and_number
+ bl Overworld_GetMapHeaderByGroupAndId
adds r6, r0, 0
ldrb r0, [r6, 0x14]
cmp r0, 0x57
diff --git a/asm/pokemon_menu.s b/asm/pokemon_menu.s
deleted file mode 100644
index fe1b41724..000000000
--- a/asm/pokemon_menu.s
+++ /dev/null
@@ -1,3438 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8089A70
-sub_8089A70: @ 8089A70
- push {lr}
- ldr r0, _08089A88 @ =gPaletteFade
- ldrb r1, [r0, 0x8]
- movs r2, 0x80
- orrs r1, r2
- strb r1, [r0, 0x8]
- movs r0, 0
- movs r1, 0
- bl OpenPartyMenu
- pop {r0}
- bx r0
- .align 2, 0
-_08089A88: .4byte gPaletteFade
- thumb_func_end sub_8089A70
-
- thumb_func_start sub_8089A8C
-sub_8089A8C: @ 8089A8C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r5, _08089AD0 @ =gUnknown_0202FFA9
- movs r0, 0
- strb r0, [r5]
- ldr r0, _08089AD4 @ =gLastFieldPokeMenuOpened
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08089AD8 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- beq _08089AE0
- ldr r4, _08089ADC @ =gUnknown_0202FFAA
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0
- bl AppendToList
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x1
- bl AppendToList
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x3
- bl AppendToList
- b _08089BC8
- .align 2, 0
-_08089AD0: .4byte gUnknown_0202FFA9
-_08089AD4: .4byte gLastFieldPokeMenuOpened
-_08089AD8: .4byte gPlayerParty
-_08089ADC: .4byte gUnknown_0202FFAA
-_08089AE0:
- movs r6, 0
- ldr r0, _08089B24 @ =gUnknown_0839F554
- ldrh r0, [r0]
- mov r8, r0
-_08089AE8:
- movs r4, 0
- adds r7, r6, 0x1
- mov r0, r8
- cmp r0, 0xFF
- beq _08089B48
- ldr r5, _08089B24 @ =gUnknown_0839F554
-_08089AF4:
- ldr r0, _08089B28 @ =gLastFieldPokeMenuOpened
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08089B2C @ =gPlayerParty
- adds r0, r1
- adds r1, r6, 0
- adds r1, 0xD
- bl GetMonData
- lsls r1, r4, 1
- adds r1, r5
- ldrh r1, [r1]
- cmp r0, r1
- bne _08089B38
- adds r2, r4, 0
- adds r2, 0xA
- lsls r2, 24
- lsrs r2, 24
- ldr r0, _08089B30 @ =gUnknown_0202FFAA
- ldr r1, _08089B34 @ =gUnknown_0202FFA9
- bl AppendToList
- b _08089B48
- .align 2, 0
-_08089B24: .4byte gUnknown_0839F554
-_08089B28: .4byte gLastFieldPokeMenuOpened
-_08089B2C: .4byte gPlayerParty
-_08089B30: .4byte gUnknown_0202FFAA
-_08089B34: .4byte gUnknown_0202FFA9
-_08089B38:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- lsls r0, r4, 1
- adds r0, r5
- ldrh r0, [r0]
- cmp r0, 0xFF
- bne _08089AF4
-_08089B48:
- lsls r0, r7, 16
- lsrs r6, r0, 16
- cmp r6, 0x3
- bls _08089AE8
- ldr r4, _08089BA4 @ =gUnknown_0202FFAA
- ldr r5, _08089BA8 @ =gUnknown_0202FFA9
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0
- bl AppendToList
- ldr r6, _08089BAC @ =gPlayerParty + 1 * 0x64
- adds r0, r6, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _08089B76
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x1
- bl AppendToList
-_08089B76:
- ldr r0, _08089BB0 @ =gLastFieldPokeMenuOpened
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- adds r1, r6, 0
- subs r1, 0x64
- adds r0, r1
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- bl ItemIsMail
- lsls r0, 24
- cmp r0, 0
- beq _08089BB4
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x7
- bl AppendToList
- b _08089BBE
- .align 2, 0
-_08089BA4: .4byte gUnknown_0202FFAA
-_08089BA8: .4byte gUnknown_0202FFA9
-_08089BAC: .4byte gPlayerParty + 1 * 0x64
-_08089BB0: .4byte gLastFieldPokeMenuOpened
-_08089BB4:
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x2
- bl AppendToList
-_08089BBE:
- ldr r0, _08089BD4 @ =gUnknown_0202FFAA
- ldr r1, _08089BD8 @ =gUnknown_0202FFA9
- movs r2, 0x3
- bl AppendToList
-_08089BC8:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08089BD4: .4byte gUnknown_0202FFAA
-_08089BD8: .4byte gUnknown_0202FFA9
- thumb_func_end sub_8089A8C
-
- thumb_func_start sub_8089BDC
-sub_8089BDC: @ 8089BDC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r5, r0, 0
- adds r6, r1, 0
- adds r4, r2, 0
- mov r8, r3
- ldr r7, [sp, 0x20]
- ldr r1, [sp, 0x24]
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- lsls r4, 24
- lsrs r4, 24
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x5
- bl sub_806D538
- adds r4, r5, r4
- lsls r4, 24
- lsrs r4, 24
- mov r0, r8
- lsls r3, r0, 1
- adds r3, r6, r3
- adds r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- adds r0, r5, 0
- adds r1, r6, 0
- adds r2, r4, 0
- bl MenuDrawTextWindow
- adds r5, 0x1
- lsls r5, 24
- lsrs r5, 24
- adds r6, 0x1
- lsls r6, 24
- lsrs r6, 24
- str r7, [sp]
- adds r0, r5, 0
- adds r1, r6, 0
- mov r2, r8
- ldr r3, [sp, 0x1C]
- bl PrintMenuItemsReordered
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8089BDC
-
- thumb_func_start sub_8089C50
-sub_8089C50: @ 8089C50
- push {r4,r5,lr}
- sub sp, 0xC
- ldr r4, [sp, 0x18]
- ldr r5, [sp, 0x1C]
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r3, 24
- str r4, [sp]
- str r5, [sp, 0x4]
- movs r4, 0x1
- str r4, [sp, 0x8]
- bl sub_8089BDC
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8089C50
-
- thumb_func_start sub_8089C7C
-sub_8089C7C: @ 8089C7C
- push {r4-r6,lr}
- sub sp, 0xC
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r6, _08089CC8 @ =gUnknown_0202FFA9
- ldrb r0, [r6]
- lsls r0, 1
- movs r4, 0x12
- subs r4, r0
- lsls r4, 24
- lsrs r4, 24
- ldrb r3, [r6]
- ldr r0, _08089CCC @ =gPokemonMenuActions
- str r0, [sp]
- ldr r0, _08089CD0 @ =gUnknown_0202FFAA
- str r0, [sp, 0x4]
- movs r0, 0x3
- str r0, [sp, 0x8]
- movs r0, 0x13
- adds r1, r4, 0
- movs r2, 0xA
- bl sub_8089BDC
- movs r2, 0x1
- orrs r2, r4
- ldrb r3, [r6]
- str r5, [sp]
- movs r0, 0x9
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0x14
- bl InitMenu
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08089CC8: .4byte gUnknown_0202FFA9
-_08089CCC: .4byte gPokemonMenuActions
-_08089CD0: .4byte gUnknown_0202FFAA
- thumb_func_end sub_8089C7C
-
- thumb_func_start sub_8089CD4
-sub_8089CD4: @ 8089CD4
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08089D00 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _08089D84
- adds r0, r4, 0
- bl sub_806BD80
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- beq _08089D04
- cmp r0, 0x2
- beq _08089D60
- b _08089D84
- .align 2, 0
-_08089D00: .4byte gPaletteFade
-_08089D04:
- movs r0, 0x5
- bl PlaySE
- adds r0, r4, 0
- bl sub_806CA38
- ldr r1, _08089D48 @ =gLastFieldPokeMenuOpened
- strb r0, [r1]
- ldrb r1, [r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08089D4C @ =gPlayerParty
- adds r0, r1
- ldr r1, _08089D50 @ =gStringVar1
- bl GetMonNickname
- bl sub_8089A8C
- ldr r0, _08089D54 @ =gUnknown_0202FFA8
- strb r5, [r0]
- movs r0, 0
- bl sub_8089C7C
- ldr r1, _08089D58 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _08089D5C @ =sub_8089D94
- str r1, [r0]
- adds r0, r4, 0
- bl sub_808B5B4
- b _08089D84
- .align 2, 0
-_08089D48: .4byte gLastFieldPokeMenuOpened
-_08089D4C: .4byte gPlayerParty
-_08089D50: .4byte gStringVar1
-_08089D54: .4byte gUnknown_0202FFA8
-_08089D58: .4byte gTasks
-_08089D5C: .4byte sub_8089D94
-_08089D60:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- str r5, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _08089D8C @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _08089D90 @ =sub_8089E4C
- str r1, [r0]
-_08089D84:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08089D8C: .4byte gTasks
-_08089D90: .4byte sub_8089E4C
- thumb_func_end sub_8089CD4
-
- thumb_func_start sub_8089D94
-sub_8089D94: @ 8089D94
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- ldr r0, _08089DC8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08089E44
- ldr r2, _08089DCC @ =gMain
- ldrh r0, [r2, 0x30]
- movs r1, 0xF0
- ands r1, r0
- cmp r1, 0x40
- bne _08089DD4
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- bl MoveMenuCursor
- ldr r1, _08089DD0 @ =gUnknown_0202FFA8
- strb r0, [r1]
- b _08089E1A
- .align 2, 0
-_08089DC8: .4byte gPaletteFade
-_08089DCC: .4byte gMain
-_08089DD0: .4byte gUnknown_0202FFA8
-_08089DD4:
- cmp r1, 0x80
- bne _08089DF0
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- bl MoveMenuCursor
- ldr r1, _08089DEC @ =gUnknown_0202FFA8
- strb r0, [r1]
- b _08089E1A
- .align 2, 0
-_08089DEC: .4byte gUnknown_0202FFA8
-_08089DF0:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08089E30
- movs r0, 0x5
- bl PlaySE
- ldr r1, _08089E24 @ =gPokemonMenuActions
- ldr r2, _08089E28 @ =gUnknown_0202FFAA
- ldr r0, _08089E2C @ =gUnknown_0202FFA8
- ldrb r0, [r0]
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 3
- adds r1, 0x4
- adds r0, r1
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
-_08089E1A:
- adds r0, r4, 0
- bl sub_808B5B4
- b _08089E44
- .align 2, 0
-_08089E24: .4byte gPokemonMenuActions
-_08089E28: .4byte gUnknown_0202FFAA
-_08089E2C: .4byte gUnknown_0202FFA8
-_08089E30:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08089E44
- adds r0, r5, 0
- bl PokemonMenu_Cancel
- adds r0, r5, 0
- bl sub_808B5B4
-_08089E44:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8089D94
-
- thumb_func_start sub_8089E4C
-sub_8089E4C: @ 8089E4C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08089E78 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _08089E72
- ldr r0, _08089E7C @ =gLastFieldPokeMenuOpened
- strb r1, [r0]
- ldr r0, _08089E80 @ =sub_805469C
- bl SetMainCallback2
- adds r0, r4, 0
- bl DestroyTask
-_08089E72:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08089E78: .4byte gPaletteFade
-_08089E7C: .4byte gLastFieldPokeMenuOpened
-_08089E80: .4byte sub_805469C
- thumb_func_end sub_8089E4C
-
- thumb_func_start sub_8089E84
-sub_8089E84: @ 8089E84
- push {lr}
- ldr r0, _08089EAC @ =gLastFieldPokeMenuOpened
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08089EB0 @ =gPlayerParty
- adds r0, r1
- ldr r1, _08089EB4 @ =gStringVar1
- bl GetMonNickname
- bl sub_8089A8C
- ldr r1, _08089EB8 @ =gUnknown_0202FFA8
- movs r0, 0
- strb r0, [r1]
- movs r0, 0
- bl sub_8089C7C
- pop {r0}
- bx r0
- .align 2, 0
-_08089EAC: .4byte gLastFieldPokeMenuOpened
-_08089EB0: .4byte gPlayerParty
-_08089EB4: .4byte gStringVar1
-_08089EB8: .4byte gUnknown_0202FFA8
- thumb_func_end sub_8089E84
-
- thumb_func_start sub_8089EBC
-sub_8089EBC: @ 8089EBC
- push {r4,r5,lr}
- ldr r4, _08089EC4 @ =0x0201b260
- ldr r5, _08089EC8 @ =gUnknown_020384F0
- b _08089ED8
- .align 2, 0
-_08089EC4: .4byte 0x0201b260
-_08089EC8: .4byte gUnknown_020384F0
-_08089ECC:
- bl sub_80F9344
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08089F04
-_08089ED8:
- bl sub_806B124
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08089ECC
- ldrb r0, [r4]
- ldrb r1, [r5]
- bl sub_806C994
- ldrb r0, [r4]
- movs r1, 0
- bl sub_806BF74
- ldr r1, _08089F0C @ =gLastFieldPokeMenuOpened
- ldrb r0, [r5]
- strb r0, [r1]
- bl sub_8089E84
- ldr r0, _08089F10 @ =sub_806AEDC
- bl SetMainCallback2
-_08089F04:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08089F0C: .4byte gLastFieldPokeMenuOpened
-_08089F10: .4byte sub_806AEDC
- thumb_func_end sub_8089EBC
-
- thumb_func_start sub_8089F14
-sub_8089F14: @ 8089F14
- push {lr}
- ldr r2, _08089F38 @ =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- ldr r2, _08089F3C @ =sub_8089D94
- movs r0, 0
- movs r1, 0xFF
- movs r3, 0x5
- bl sub_806AF4C
- ldr r0, _08089F40 @ =sub_8089EBC
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_08089F38: .4byte gPaletteFade
-_08089F3C: .4byte sub_8089D94
-_08089F40: .4byte sub_8089EBC
- thumb_func_end sub_8089F14
-
- thumb_func_start sub_8089F44
-sub_8089F44: @ 8089F44
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r0, _08089FAC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _08089FA2
- ldr r2, _08089FB0 @ =gSprites
- ldr r1, _08089FB4 @ =gTasks
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0xE]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r4, [r0, 0x2E]
- lsls r4, 24
- lsrs r4, 24
- adds r0, r3, 0
- bl DestroyTask
- ldr r0, _08089FB8 @ =0x0201b000
- ldr r1, _08089FBC @ =0x00000262
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- ldr r0, _08089FC0 @ =gPlayerParty
- ldr r1, _08089FC4 @ =gPlayerPartyCount
- ldrb r2, [r1]
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldr r3, _08089FC8 @ =sub_8089F14
- str r5, [sp]
- adds r1, r4, 0
- bl ShowPokemonSummaryScreen
-_08089FA2:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08089FAC: .4byte gPaletteFade
-_08089FB0: .4byte gSprites
-_08089FB4: .4byte gTasks
-_08089FB8: .4byte 0x0201b000
-_08089FBC: .4byte 0x00000262
-_08089FC0: .4byte gPlayerParty
-_08089FC4: .4byte gPlayerPartyCount
-_08089FC8: .4byte sub_8089F14
- thumb_func_end sub_8089F44
-
- thumb_func_start PokemonMenu_Summary
-PokemonMenu_Summary: @ 8089FCC
- 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, _08089FFC @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808A000 @ =sub_8089F44
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08089FFC: .4byte gTasks
-_0808A000: .4byte sub_8089F44
- thumb_func_end PokemonMenu_Summary
-
- thumb_func_start sub_808A004
-sub_808A004: @ 808A004
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0808A024 @ =sub_806CA60
- ldr r2, _0808A028 @ =sub_8089CD4
- bl SetTaskFuncWithFollowupFunc
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- pop {r0}
- bx r0
- .align 2, 0
-_0808A024: .4byte sub_806CA60
-_0808A028: .4byte sub_8089CD4
- thumb_func_end sub_808A004
-
- thumb_func_start PokemonMenu_Switch
-PokemonMenu_Switch: @ 808A02C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl HandleDestroyMenuCursors
- ldr r0, _0808A054 @ =0x02001000
- ldr r1, _0808A058 @ =sub_806CD5C
- str r1, [r0, 0xC]
- ldr r1, _0808A05C @ =0x0001a272
- adds r0, r1
- movs r1, 0x1
- strh r1, [r0]
- adds r0, r4, 0
- bl sub_808A004
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A054: .4byte 0x02001000
-_0808A058: .4byte sub_806CD5C
-_0808A05C: .4byte 0x0001a272
- thumb_func_end PokemonMenu_Switch
-
- thumb_func_start sub_808A060
-sub_808A060: @ 808A060
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _0808A0D0 @ =gMain
- ldrh r0, [r0, 0x2E]
- cmp r0, 0x40
- bne _0808A086
- ldr r4, _0808A0D4 @ =gUnknown_0202FFA8
- ldrb r0, [r4]
- cmp r0, 0
- beq _0808A086
- movs r0, 0x1
- negs r0, r0
- bl MoveMenuCursor
- strb r0, [r4]
- movs r0, 0x5
- bl PlaySE
-_0808A086:
- ldr r0, _0808A0D0 @ =gMain
- ldrh r0, [r0, 0x2E]
- cmp r0, 0x80
- bne _0808A0A4
- ldr r4, _0808A0D4 @ =gUnknown_0202FFA8
- ldrb r0, [r4]
- cmp r0, 0x2
- beq _0808A0A4
- movs r0, 0x1
- bl MoveMenuCursor
- strb r0, [r4]
- movs r0, 0x5
- bl PlaySE
-_0808A0A4:
- ldr r0, _0808A0D0 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0808A0E0
- movs r0, 0x5
- bl PlaySE
- ldr r1, _0808A0D8 @ =gUnknown_0839F578
- ldr r2, _0808A0DC @ =gPokemonMenuActions
- ldr r0, _0808A0D4 @ =gUnknown_0202FFA8
- ldrb r3, [r0]
- movs r0, 0
- bl PartyMenuGetPopupMenuFunc
- adds r1, r0, 0
- adds r0, r5, 0
- bl _call_via_r1
- b _0808A0F6
- .align 2, 0
-_0808A0D0: .4byte gMain
-_0808A0D4: .4byte gUnknown_0202FFA8
-_0808A0D8: .4byte gUnknown_0839F578
-_0808A0DC: .4byte gPokemonMenuActions
-_0808A0E0:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0808A0F6
- ldr r1, _0808A0FC @ =gUnknown_0839F578
- movs r0, 0
- bl sub_806E7D0
- adds r0, r5, 0
- bl PokemonMenu_CancelSubmenu
-_0808A0F6:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A0FC: .4byte gUnknown_0839F578
- thumb_func_end sub_808A060
-
- thumb_func_start sub_808A100
-sub_808A100: @ 808A100
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _0808A130 @ =gUnknown_0839F578
- ldr r2, _0808A134 @ =gPokemonMenuActions
- movs r0, 0
- movs r3, 0
- bl sub_806E750
- movs r0, 0xD
- movs r1, 0x2
- bl sub_806D538
- ldr r1, _0808A138 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808A13C @ =sub_808A060
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A130: .4byte gUnknown_0839F578
-_0808A134: .4byte gPokemonMenuActions
-_0808A138: .4byte gTasks
-_0808A13C: .4byte sub_808A060
- thumb_func_end sub_808A100
-
- thumb_func_start PokemonMenu_Item
-PokemonMenu_Item: @ 808A140
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl HandleDestroyMenuCursors
- ldr r1, _0808A174 @ =gUnknown_0202FFA8
- movs r0, 0
- strb r0, [r1]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- ldr r1, _0808A178 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808A17C @ =sub_808A100
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A174: .4byte gUnknown_0202FFA8
-_0808A178: .4byte gTasks
-_0808A17C: .4byte sub_808A100
- thumb_func_end PokemonMenu_Item
-
- thumb_func_start sub_808A180
-sub_808A180: @ 808A180
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _0808A1D0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0808A1CA
- adds r0, r5, 0
- bl sub_806CA38
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldr r1, _0808A1D4 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x40
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- bl DestroyTask
- lsls r1, r4, 3
- adds r1, r4
- lsls r1, 2
- ldr r0, _0808A1D8 @ =gSaveBlock1 + 0x2B4C
- adds r1, r0
- ldr r2, _0808A1DC @ =sub_808A520
- movs r0, 0x4
- movs r3, 0x3
- bl sub_80E62A0
-_0808A1CA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A1D0: .4byte gPaletteFade
-_0808A1D4: .4byte gPlayerParty
-_0808A1D8: .4byte gSaveBlock1 + 0x2B4C
-_0808A1DC: .4byte sub_808A520
- thumb_func_end sub_808A180
-
- thumb_func_start sub_808A1E0
-sub_808A1E0: @ 808A1E0
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0808A21C @ =gUnknown_0202E8F6
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0808A216
- adds r0, r4, 0
- bl sub_806CA38
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl SetHeldItemIconVisibility
- movs r0, 0
- movs r1, 0
- bl sub_806D538
- ldr r1, _0808A220 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808A224 @ =sub_8089CD4
- str r1, [r0]
-_0808A216:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A21C: .4byte gUnknown_0202E8F6
-_0808A220: .4byte gTasks
-_0808A224: .4byte sub_8089CD4
- thumb_func_end sub_808A1E0
-
- thumb_func_start sub_808A228
-sub_808A228: @ 808A228
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0808A268 @ =gScriptItemId
- ldrh r0, [r0]
- bl ItemIsMail
- lsls r0, 24
- cmp r0, 0
- beq _0808A278
- ldr r0, _0808A26C @ =gUnknown_0202E8F4
- ldrb r0, [r0]
- cmp r0, 0
- beq _0808A278
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _0808A270 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808A274 @ =sub_808A180
- str r1, [r0]
- b _0808A29A
- .align 2, 0
-_0808A268: .4byte gScriptItemId
-_0808A26C: .4byte gUnknown_0202E8F4
-_0808A270: .4byte gTasks
-_0808A274: .4byte sub_808A180
-_0808A278:
- movs r0, 0
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- movs r0, 0
- movs r1, 0
- bl sub_806D538
- ldr r0, _0808A2A4 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _0808A2A8 @ =sub_8089CD4
- str r0, [r1]
-_0808A29A:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A2A4: .4byte gTasks
-_0808A2A8: .4byte sub_8089CD4
- thumb_func_end sub_808A228
-
- thumb_func_start sub_808A2AC
-sub_808A2AC: @ 808A2AC
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r0, _0808A2D0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0808A2CA
- ldr r0, _0808A2D4 @ =gScriptItemId
- ldrh r1, [r0]
- ldr r2, _0808A2D8 @ =sub_808A228
- adds r0, r3, 0
- bl PartyMenuTryGiveMonHeldItem
-_0808A2CA:
- pop {r0}
- bx r0
- .align 2, 0
-_0808A2D0: .4byte gPaletteFade
-_0808A2D4: .4byte gScriptItemId
-_0808A2D8: .4byte sub_808A228
- thumb_func_end sub_808A2AC
-
- thumb_func_start sub_808A2DC
-sub_808A2DC: @ 808A2DC
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- adds r0, r5, 0
- bl sub_806CA38
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldr r1, _0808A324 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x40
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- bl DestroyTask
- lsls r1, r4, 3
- adds r1, r4
- lsls r1, 2
- ldr r0, _0808A328 @ =gSaveBlock1 + 0x2B4C
- adds r1, r0
- ldr r2, _0808A32C @ =sub_808A520
- movs r0, 0x4
- movs r3, 0x3
- bl sub_80E62A0
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A324: .4byte gPlayerParty
-_0808A328: .4byte gSaveBlock1 + 0x2B4C
-_0808A32C: .4byte sub_808A520
- thumb_func_end sub_808A2DC
-
- thumb_func_start sub_808A330
-sub_808A330: @ 808A330
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0808A344 @ =gScriptItemId
- ldrh r1, [r1]
- ldr r2, _0808A348 @ =sub_808A2DC
- bl PartyMenuTryGiveMonHeldItem
- pop {r0}
- bx r0
- .align 2, 0
-_0808A344: .4byte gScriptItemId
-_0808A348: .4byte sub_808A2DC
- thumb_func_end sub_808A330
-
- thumb_func_start sub_808A34C
-sub_808A34C: @ 808A34C
- push {lr}
- bl RunTasks
- pop {r0}
- bx r0
- thumb_func_end sub_808A34C
-
- thumb_func_start sub_808A358
-sub_808A358: @ 808A358
- push {r4,lr}
- ldr r4, _0808A360 @ =0x0201b260
- b _0808A370
- .align 2, 0
-_0808A360: .4byte 0x0201b260
-_0808A364:
- bl sub_80F9344
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0808A394
-_0808A370:
- bl sub_806B124
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808A364
- ldrb r0, [r4]
- ldr r1, _0808A39C @ =gLastFieldPokeMenuOpened
- ldrb r1, [r1]
- bl sub_806C994
- ldrb r0, [r4]
- movs r1, 0
- bl sub_806BF74
- ldr r0, _0808A3A0 @ =sub_806AEDC
- bl SetMainCallback2
-_0808A394:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A39C: .4byte gLastFieldPokeMenuOpened
-_0808A3A0: .4byte sub_806AEDC
- thumb_func_end sub_808A358
-
- thumb_func_start sub_808A3A4
-sub_808A3A4: @ 808A3A4
- push {r4,r5,lr}
- ldr r4, _0808A3D8 @ =0x0201b260
- adds r5, r4, 0x2
-_0808A3AA:
- bl sub_806B124
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808A3E4
- ldrb r0, [r4]
- ldr r1, _0808A3DC @ =gLastFieldPokeMenuOpened
- ldrb r1, [r1]
- bl sub_806C994
- ldrb r0, [r4]
- movs r1, 0
- bl sub_806BF74
- movs r0, 0x3
- strb r0, [r5]
- bl sub_8089E84
- ldr r0, _0808A3E0 @ =sub_806AEDC
- bl SetMainCallback2
- b _0808A3F0
- .align 2, 0
-_0808A3D8: .4byte 0x0201b260
-_0808A3DC: .4byte gLastFieldPokeMenuOpened
-_0808A3E0: .4byte sub_806AEDC
-_0808A3E4:
- bl sub_80F9344
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808A3AA
-_0808A3F0:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_808A3A4
-
- thumb_func_start sub_808A3F8
-sub_808A3F8: @ 808A3F8
- push {r4,lr}
- ldr r0, _0808A460 @ =gScriptItemId
- ldrh r0, [r0]
- bl ItemIsMail
- lsls r0, 24
- cmp r0, 0
- beq _0808A47E
- ldr r0, _0808A464 @ =sub_808A330
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r2, _0808A468 @ =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- adds r0, r4, 0
- movs r1, 0
- bl sub_806BD58
- ldr r0, _0808A46C @ =gLastFieldPokeMenuOpened
- ldrb r1, [r0]
- adds r0, r4, 0
- bl sub_806C994
- adds r0, r4, 0
- movs r1, 0
- bl sub_806BF74
- adds r0, r4, 0
- bl sub_806CA38
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldr r1, _0808A470 @ =gPlayerParty
- adds r0, r1
- movs r1, 0xC
- bl GetMonData
- lsls r0, 24
- cmp r0, 0
- bne _0808A478
- ldr r0, _0808A474 @ =sub_808A34C
- bl SetMainCallback2
- b _0808A4C6
- .align 2, 0
-_0808A460: .4byte gScriptItemId
-_0808A464: .4byte sub_808A330
-_0808A468: .4byte gPaletteFade
-_0808A46C: .4byte gLastFieldPokeMenuOpened
-_0808A470: .4byte gPlayerParty
-_0808A474: .4byte sub_808A34C
-_0808A478:
- adds r0, r4, 0
- bl DestroyTask
-_0808A47E:
- ldr r2, _0808A4A4 @ =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- ldr r0, _0808A4A8 @ =gScriptItemId
- ldrh r0, [r0]
- cmp r0, 0
- beq _0808A4B4
- ldr r2, _0808A4AC @ =sub_808A2AC
- movs r0, 0
- movs r1, 0xFF
- movs r3, 0xFF
- bl sub_806AF4C
- ldr r0, _0808A4B0 @ =sub_808A358
- bl SetMainCallback2
- b _0808A4C6
- .align 2, 0
-_0808A4A4: .4byte gPaletteFade
-_0808A4A8: .4byte gScriptItemId
-_0808A4AC: .4byte sub_808A2AC
-_0808A4B0: .4byte sub_808A358
-_0808A4B4:
- ldr r2, _0808A4CC @ =sub_8089D94
- movs r0, 0
- movs r1, 0xFF
- movs r3, 0x5
- bl sub_806AF4C
- ldr r0, _0808A4D0 @ =sub_808A3A4
- bl SetMainCallback2
-_0808A4C6:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A4CC: .4byte sub_8089D94
-_0808A4D0: .4byte sub_808A3A4
- thumb_func_end sub_808A3F8
-
- thumb_func_start sub_808A4D4
-sub_808A4D4: @ 808A4D4
- push {r4,lr}
- ldr r4, _0808A4DC @ =0x0201b260
- b _0808A4EC
- .align 2, 0
-_0808A4DC: .4byte 0x0201b260
-_0808A4E0:
- bl sub_80F9344
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0808A510
-_0808A4EC:
- bl sub_806B124
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808A4E0
- ldrb r0, [r4]
- ldr r1, _0808A518 @ =gLastFieldPokeMenuOpened
- ldrb r1, [r1]
- bl sub_806C994
- ldrb r0, [r4]
- movs r1, 0
- bl sub_806BF74
- ldr r0, _0808A51C @ =sub_806AEDC
- bl SetMainCallback2
-_0808A510:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A518: .4byte gLastFieldPokeMenuOpened
-_0808A51C: .4byte sub_806AEDC
- thumb_func_end sub_808A4D4
-
- thumb_func_start sub_808A520
-sub_808A520: @ 808A520
- push {r4-r7,lr}
- ldr r2, _0808A584 @ =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- ldr r0, _0808A588 @ =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0
- bne _0808A59C
- ldr r7, _0808A58C @ =gUnknown_0202E8F8
- ldrh r0, [r7]
- cmp r0, 0
- beq _0808A542
- movs r1, 0x1
- bl RemoveBagItem
-_0808A542:
- ldr r6, _0808A590 @ =gLastFieldPokeMenuOpened
- ldrb r0, [r6]
- movs r5, 0x64
- muls r0, r5
- ldr r4, _0808A594 @ =gPlayerParty
- adds r0, r4
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- bl AddBagItem
- ldrb r0, [r6]
- muls r0, r5
- adds r0, r4
- bl TakeMailFromMon
- ldrb r0, [r6]
- muls r0, r5
- adds r0, r4
- movs r1, 0xC
- adds r2, r7, 0
- bl SetMonData
- ldr r2, _0808A598 @ =sub_8089CD4
- movs r0, 0
- movs r1, 0xFF
- movs r3, 0
- bl sub_806AF4C
- b _0808A5A8
- .align 2, 0
-_0808A584: .4byte gPaletteFade
-_0808A588: .4byte gScriptResult
-_0808A58C: .4byte gUnknown_0202E8F8
-_0808A590: .4byte gLastFieldPokeMenuOpened
-_0808A594: .4byte gPlayerParty
-_0808A598: .4byte sub_8089CD4
-_0808A59C:
- ldr r2, _0808A5B4 @ =sub_808A5BC
- movs r0, 0
- movs r1, 0xFF
- movs r3, 0xFF
- bl sub_806AF4C
-_0808A5A8:
- ldr r0, _0808A5B8 @ =sub_808A4D4
- bl SetMainCallback2
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A5B4: .4byte sub_808A5BC
-_0808A5B8: .4byte sub_808A4D4
- thumb_func_end sub_808A520
-
- thumb_func_start sub_808A5BC
-sub_808A5BC: @ 808A5BC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0808A5F0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0808A5EA
- ldr r0, _0808A5F4 @ =gLastFieldPokeMenuOpened
- ldrb r0, [r0]
- ldr r1, _0808A5F8 @ =gScriptItemId
- ldrh r1, [r1]
- movs r2, 0
- bl DisplayGiveHeldItemMessage
- ldr r1, _0808A5FC @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808A600 @ =sub_808A1E0
- str r1, [r0]
-_0808A5EA:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A5F0: .4byte gPaletteFade
-_0808A5F4: .4byte gLastFieldPokeMenuOpened
-_0808A5F8: .4byte gScriptItemId
-_0808A5FC: .4byte gTasks
-_0808A600: .4byte sub_808A1E0
- thumb_func_end sub_808A5BC
-
- thumb_func_start sub_808A604
-sub_808A604: @ 808A604
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0808A628 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0808A622
- ldr r0, _0808A62C @ =sub_80A61D0
- bl SetMainCallback2
- adds r0, r4, 0
- bl DestroyTask
-_0808A622:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A628: .4byte gPaletteFade
-_0808A62C: .4byte sub_80A61D0
- thumb_func_end sub_808A604
-
- thumb_func_start PokemonMenu_GiveItem
-PokemonMenu_GiveItem: @ 808A630
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl sub_806CA38
- ldr r1, _0808A66C @ =gUnknown_0202E8F5
- strb r0, [r1]
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _0808A670 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808A674 @ =sub_808A604
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A66C: .4byte gUnknown_0202E8F5
-_0808A670: .4byte gTasks
-_0808A674: .4byte sub_808A604
- thumb_func_end PokemonMenu_GiveItem
-
- thumb_func_start sub_808A678
-sub_808A678: @ 808A678
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_808A8D4
- pop {r0}
- bx r0
- thumb_func_end sub_808A678
-
- thumb_func_start PokemonMenu_TakeItem
-PokemonMenu_TakeItem: @ 808A688
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl HandleDestroyMenuCursors
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- bl sub_806D5A4
- ldr r1, _0808A6B4 @ =sub_808A678
- adds r0, r4, 0
- bl PartyMenuTryGiveMonHeldItem_806ECE8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A6B4: .4byte sub_808A678
- thumb_func_end PokemonMenu_TakeItem
-
- thumb_func_start PokemonMenu_TakeMail
-PokemonMenu_TakeMail: @ 808A6B8
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl HandleDestroyMenuCursors
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- bl sub_806D5A4
- ldr r1, _0808A6E4 @ =sub_808A678
- adds r0, r4, 0
- bl DoTakeMail
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A6E4: .4byte sub_808A678
- thumb_func_end PokemonMenu_TakeMail
-
- thumb_func_start PokemonMenu_Mail
-PokemonMenu_Mail: @ 808A6E8
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl HandleDestroyMenuCursors
- ldr r1, _0808A728 @ =gUnknown_0202FFA8
- movs r0, 0
- strb r0, [r1]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- ldr r1, _0808A72C @ =gUnknown_0839F584
- ldr r2, _0808A730 @ =gPokemonMenuActions
- movs r0, 0
- movs r3, 0
- bl sub_806E750
- ldr r1, _0808A734 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808A738 @ =sub_808A73C
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A728: .4byte gUnknown_0202FFA8
-_0808A72C: .4byte gUnknown_0839F584
-_0808A730: .4byte gPokemonMenuActions
-_0808A734: .4byte gTasks
-_0808A738: .4byte sub_808A73C
- thumb_func_end PokemonMenu_Mail
-
- thumb_func_start sub_808A73C
-sub_808A73C: @ 808A73C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _0808A764 @ =gMain
- ldrh r0, [r0, 0x30]
- cmp r0, 0x40
- bne _0808A77A
- movs r0, 0x5
- bl PlaySE
- ldr r4, _0808A768 @ =gUnknown_0202FFA8
- ldrb r0, [r4]
- cmp r0, 0
- bne _0808A770
- ldr r0, _0808A76C @ =gUnknown_0839F584
- ldrb r0, [r0]
- subs r0, 0x1
- lsls r0, 24
- asrs r0, 24
- b _0808A774
- .align 2, 0
-_0808A764: .4byte gMain
-_0808A768: .4byte gUnknown_0202FFA8
-_0808A76C: .4byte gUnknown_0839F584
-_0808A770:
- movs r0, 0x1
- negs r0, r0
-_0808A774:
- bl MoveMenuCursor
- strb r0, [r4]
-_0808A77A:
- ldr r0, _0808A7A0 @ =gMain
- ldrh r0, [r0, 0x30]
- cmp r0, 0x80
- bne _0808A7B4
- movs r0, 0x5
- bl PlaySE
- ldr r4, _0808A7A4 @ =gUnknown_0202FFA8
- ldrb r0, [r4]
- ldr r1, _0808A7A8 @ =gUnknown_0839F584
- ldrb r2, [r1]
- subs r1, r2, 0x1
- cmp r0, r1
- bne _0808A7AC
- movs r0, 0x1
- subs r0, r2
- lsls r0, 24
- asrs r0, 24
- b _0808A7AE
- .align 2, 0
-_0808A7A0: .4byte gMain
-_0808A7A4: .4byte gUnknown_0202FFA8
-_0808A7A8: .4byte gUnknown_0839F584
-_0808A7AC:
- movs r0, 0x1
-_0808A7AE:
- bl MoveMenuCursor
- strb r0, [r4]
-_0808A7B4:
- ldr r0, _0808A7E0 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0808A7F0
- movs r0, 0x5
- bl PlaySE
- ldr r1, _0808A7E4 @ =gUnknown_0839F584
- ldr r2, _0808A7E8 @ =gPokemonMenuActions
- ldr r0, _0808A7EC @ =gUnknown_0202FFA8
- ldrb r3, [r0]
- movs r0, 0
- bl PartyMenuGetPopupMenuFunc
- adds r1, r0, 0
- adds r0, r5, 0
- bl _call_via_r1
- b _0808A806
- .align 2, 0
-_0808A7E0: .4byte gMain
-_0808A7E4: .4byte gUnknown_0839F584
-_0808A7E8: .4byte gPokemonMenuActions
-_0808A7EC: .4byte gUnknown_0202FFA8
-_0808A7F0:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0808A806
- ldr r1, _0808A80C @ =gUnknown_0839F584
- movs r0, 0
- bl sub_806E7D0
- adds r0, r5, 0
- bl PokemonMenu_Cancel
-_0808A806:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A80C: .4byte gUnknown_0839F584
- thumb_func_end sub_808A73C
-
- thumb_func_start PokemonMenu_ReadMail
-PokemonMenu_ReadMail: @ 808A810
- 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, _0808A840 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808A844 @ =sub_808A848
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A840: .4byte gTasks
-_0808A844: .4byte sub_808A848
- thumb_func_end PokemonMenu_ReadMail
-
- thumb_func_start sub_808A848
-sub_808A848: @ 808A848
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _0808A898 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0808A890
- adds r0, r5, 0
- bl sub_806CA38
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldr r1, _0808A89C @ =gPlayerParty
- adds r0, r1
- movs r1, 0x40
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- bl DestroyTask
- lsls r0, r4, 3
- adds r0, r4
- lsls r0, 2
- ldr r1, _0808A8A0 @ =gSaveBlock1 + 0x2B4C
- adds r0, r1
- ldr r1, _0808A8A4 @ =sub_808A8A8
- movs r2, 0x1
- bl HandleReadMail
-_0808A890:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A898: .4byte gPaletteFade
-_0808A89C: .4byte gPlayerParty
-_0808A8A0: .4byte gSaveBlock1 + 0x2B4C
-_0808A8A4: .4byte sub_808A8A8
- thumb_func_end sub_808A848
-
- thumb_func_start sub_808A8A8
-sub_808A8A8: @ 808A8A8
- push {lr}
- ldr r1, _0808A8C4 @ =gUnknown_020384F0
- ldr r0, _0808A8C8 @ =gLastFieldPokeMenuOpened
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r0, _0808A8CC @ =0x0201b000
- ldr r1, _0808A8D0 @ =0x00000262
- adds r0, r1
- movs r1, 0x4
- strb r1, [r0]
- bl sub_8089F14
- pop {r0}
- bx r0
- .align 2, 0
-_0808A8C4: .4byte gUnknown_020384F0
-_0808A8C8: .4byte gLastFieldPokeMenuOpened
-_0808A8CC: .4byte 0x0201b000
-_0808A8D0: .4byte 0x00000262
- thumb_func_end sub_808A8A8
-
- thumb_func_start sub_808A8D4
-sub_808A8D4: @ 808A8D4
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _0808A90C @ =gUnknown_0202FFA8
- movs r0, 0
- strb r0, [r1]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- movs r0, 0
- movs r1, 0
- bl sub_806D538
- ldr r1, _0808A910 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808A914 @ =sub_8089CD4
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A90C: .4byte gUnknown_0202FFA8
-_0808A910: .4byte gTasks
-_0808A914: .4byte sub_8089CD4
- thumb_func_end sub_808A8D4
-
- thumb_func_start PokemonMenu_Cancel
-PokemonMenu_Cancel: @ 808A918
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl HandleDestroyMenuCursors
- movs r0, 0x5
- bl PlaySE
- adds r0, r4, 0
- bl sub_808A8D4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end PokemonMenu_Cancel
-
- thumb_func_start PokemonMenu_CancelSubmenu
-PokemonMenu_CancelSubmenu: @ 808A938
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl HandleDestroyMenuCursors
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- bl sub_806D5A4
- ldr r0, _0808A978 @ =gUnknown_0202FFA8
- ldrb r0, [r0]
- bl sub_8089C7C
- ldr r1, _0808A97C @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808A980 @ =sub_8089D94
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A978: .4byte gUnknown_0202FFA8
-_0808A97C: .4byte gTasks
-_0808A980: .4byte sub_8089D94
- thumb_func_end PokemonMenu_CancelSubmenu
-
- thumb_func_start PokemonMenu_FieldMove
-PokemonMenu_FieldMove: @ 808A984
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r6, r0, 3
- ldr r7, _0808A9D0 @ =gTasks + 0x8
- adds r4, r6, r7
- bl HandleDestroyMenuCursors
- ldr r1, _0808A9D4 @ =gUnknown_0202FFAA
- ldr r0, _0808A9D8 @ =gUnknown_0202FFA8
- ldrb r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- subs r0, 0xA
- strh r0, [r4, 0x16]
- bl sub_80F9344
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808A9DC
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- ldrh r0, [r4, 0x16]
- subs r0, 0xB
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bhi _0808AABA
- movs r0, 0x9
- b _0808AAB2
- .align 2, 0
-_0808A9D0: .4byte gTasks + 0x8
-_0808A9D4: .4byte gUnknown_0202FFAA
-_0808A9D8: .4byte gUnknown_0202FFA8
-_0808A9DC:
- ldrh r1, [r4, 0x16]
- movs r2, 0x16
- ldrsh r0, [r4, r2]
- cmp r0, 0x7
- bgt _0808AA2C
- ldr r2, _0808AA20 @ =0x00000807
- adds r0, r1, r2
- lsls r0, 16
- lsrs r0, 16
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0808AA2C
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- bl sub_806D5A4
- ldr r0, _0808AA24 @ =gOtherText_CantBeUsedBadge
- movs r1, 0x1
- bl sub_806E834
- adds r0, r7, 0
- subs r0, 0x8
- adds r0, r6, r0
- ldr r1, _0808AA28 @ =sub_808AAF0
- str r1, [r0]
- b _0808AADA
- .align 2, 0
-_0808AA20: .4byte 0x00000807
-_0808AA24: .4byte gOtherText_CantBeUsedBadge
-_0808AA28: .4byte sub_808AAF0
-_0808AA2C:
- ldr r1, _0808AA78 @ =gFieldMoveFuncs
- movs r2, 0x16
- ldrsh r0, [r4, r2]
- lsls r0, 3
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808AA90
- ldr r1, _0808AA7C @ =gUnknown_0202FFA8
- movs r0, 0
- strb r0, [r1]
- ldrh r0, [r4, 0x16]
- subs r0, 0xB
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bls _0808AA88
- ldr r1, _0808AA80 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808AA84 @ =sub_808AB34
- str r1, [r0]
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- b _0808AADA
- .align 2, 0
-_0808AA78: .4byte gFieldMoveFuncs
-_0808AA7C: .4byte gUnknown_0202FFA8
-_0808AA80: .4byte gTasks
-_0808AA84: .4byte sub_808AB34
-_0808AA88:
- adds r0, r5, 0
- bl sub_8133D28
- b _0808AADA
-_0808AA90:
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- movs r1, 0x16
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bne _0808AABA
- movs r0, 0x8
- bl TestPlayerAvatarFlags
- lsls r0, 24
- cmp r0, 0
- beq _0808AABA
- movs r0, 0x8
-_0808AAB2:
- movs r1, 0
- bl sub_806D538
- b _0808AACC
-_0808AABA:
- ldr r0, _0808AAE4 @ =gFieldMoveFuncs
- movs r2, 0x16
- ldrsh r1, [r4, r2]
- lsls r1, 3
- adds r1, r0
- ldrb r0, [r1, 0x4]
- movs r1, 0
- bl sub_806D538
-_0808AACC:
- ldr r0, _0808AAE8 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, _0808AAEC @ =sub_808ABF4
- str r0, [r1]
-_0808AADA:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0808AAE4: .4byte gFieldMoveFuncs
-_0808AAE8: .4byte gTasks
-_0808AAEC: .4byte sub_808ABF4
- thumb_func_end PokemonMenu_FieldMove
-
- thumb_func_start sub_808AAF0
-sub_808AAF0: @ 808AAF0
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0808AB2C @ =gUnknown_0202E8F6
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0808AB24
- ldr r0, _0808AB30 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0808AB12
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0808AB24
-_0808AB12:
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- adds r0, r4, 0
- bl PokemonMenu_Cancel
-_0808AB24:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808AB2C: .4byte gUnknown_0202E8F6
-_0808AB30: .4byte gMain
- thumb_func_end sub_808AAF0
-
- thumb_func_start sub_808AB34
-sub_808AB34: @ 808AB34
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0808AB6C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0808AB84
- ldr r0, _0808AB70 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r2, 0x1E
- ldrsh r0, [r1, r2]
- cmp r0, 0x5
- bne _0808AB62
- bl ShouldDoBrailleFlyEffect
- lsls r0, 24
- cmp r0, 0
- beq _0808AB78
-_0808AB62:
- ldr r0, _0808AB74 @ =c2_exit_to_overworld_2_switch
- bl SetMainCallback2
- b _0808AB7E
- .align 2, 0
-_0808AB6C: .4byte gPaletteFade
-_0808AB70: .4byte gTasks
-_0808AB74: .4byte c2_exit_to_overworld_2_switch
-_0808AB78:
- ldr r0, _0808AB8C @ =CB2_InitFlyRegionMap
- bl SetMainCallback2
-_0808AB7E:
- adds r0, r4, 0
- bl DestroyTask
-_0808AB84:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808AB8C: .4byte CB2_InitFlyRegionMap
- thumb_func_end sub_808AB34
-
- thumb_func_start sub_808AB90
-sub_808AB90: @ 808AB90
- push {lr}
- bl pal_fill_black
- ldr r0, _0808ABA4 @ =sub_808ABA8
- movs r1, 0x8
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_0808ABA4: .4byte sub_808ABA8
- thumb_func_end sub_808AB90
-
- thumb_func_start sub_808ABA8
-sub_808ABA8: @ 808ABA8
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_807D770
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808ABDE
- ldr r0, _0808ABE4 @ =gLastFieldPokeMenuOpened
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0808ABE8 @ =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- ldr r1, _0808ABEC @ =gUnknown_0202FF84
- str r0, [r1]
- ldr r0, _0808ABF0 @ =gUnknown_03005CE4
- ldr r0, [r0]
- bl _call_via_r0
- adds r0, r4, 0
- bl DestroyTask
-_0808ABDE:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808ABE4: .4byte gLastFieldPokeMenuOpened
-_0808ABE8: .4byte gPlayerParty
-_0808ABEC: .4byte gUnknown_0202FF84
-_0808ABF0: .4byte gUnknown_03005CE4
- thumb_func_end sub_808ABA8
-
- thumb_func_start sub_808ABF4
-sub_808ABF4: @ 808ABF4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0808AC28 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0808AC0E
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0808AC20
-_0808AC0E:
- movs r0, 0x1
- movs r1, 0x11
- movs r2, 0x1C
- movs r3, 0x12
- bl MenuZeroFillWindowRect
- adds r0, r4, 0
- bl PokemonMenu_Cancel
-_0808AC20:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808AC28: .4byte gMain
- thumb_func_end sub_808ABF4
-
- thumb_func_start sub_808AC2C
-sub_808AC2C: @ 808AC2C
- push {lr}
- ldr r0, _0808AC40 @ =gUnknown_0202FF84
- ldr r1, _0808AC44 @ =gLastFieldPokeMenuOpened
- ldrb r1, [r1]
- str r1, [r0]
- movs r0, 0x9
- bl FieldEffectStart
- pop {r0}
- bx r0
- .align 2, 0
-_0808AC40: .4byte gUnknown_0202FF84
-_0808AC44: .4byte gLastFieldPokeMenuOpened
- thumb_func_end sub_808AC2C
-
- thumb_func_start SetUpFieldMove_Surf
-SetUpFieldMove_Surf: @ 808AC48
- push {lr}
- bl PartyHasMonWithSurf
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808AC84
- bl IsPlayerFacingSurfableFishableWater
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808AC84
- ldr r1, _0808AC74 @ =gFieldCallback
- ldr r0, _0808AC78 @ =sub_808AB90
- str r0, [r1]
- ldr r1, _0808AC7C @ =gUnknown_03005CE4
- ldr r0, _0808AC80 @ =sub_808AC2C
- str r0, [r1]
- movs r0, 0x1
- b _0808AC86
- .align 2, 0
-_0808AC74: .4byte gFieldCallback
-_0808AC78: .4byte sub_808AB90
-_0808AC7C: .4byte gUnknown_03005CE4
-_0808AC80: .4byte sub_808AC2C
-_0808AC84:
- movs r0, 0
-_0808AC86:
- pop {r1}
- bx r1
- thumb_func_end SetUpFieldMove_Surf
-
- thumb_func_start sub_808AC8C
-sub_808AC8C: @ 808AC8C
- push {lr}
- ldr r0, _0808ACA0 @ =gUnknown_0202FF84
- ldr r1, _0808ACA4 @ =gLastFieldPokeMenuOpened
- ldrb r1, [r1]
- str r1, [r0]
- movs r0, 0x1F
- bl FieldEffectStart
- pop {r0}
- bx r0
- .align 2, 0
-_0808ACA0: .4byte gUnknown_0202FF84
-_0808ACA4: .4byte gLastFieldPokeMenuOpened
- thumb_func_end sub_808AC8C
-
- thumb_func_start SetUpFieldMove_Fly
-SetUpFieldMove_Fly: @ 808ACA8
- push {lr}
- bl ShouldDoBrailleFlyEffect
- lsls r0, 24
- cmp r0, 0
- beq _0808ACD0
- ldr r1, _0808ACC0 @ =gFieldCallback
- ldr r0, _0808ACC4 @ =sub_808AB90
- str r0, [r1]
- ldr r1, _0808ACC8 @ =gUnknown_03005CE4
- ldr r0, _0808ACCC @ =DoBrailleFlyEffect
- b _0808ACF2
- .align 2, 0
-_0808ACC0: .4byte gFieldCallback
-_0808ACC4: .4byte sub_808AB90
-_0808ACC8: .4byte gUnknown_03005CE4
-_0808ACCC: .4byte DoBrailleFlyEffect
-_0808ACD0:
- ldr r0, _0808ACE4 @ =gMapHeader
- ldrb r0, [r0, 0x17]
- bl is_light_level_1_2_3_or_6
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0808ACE8
- movs r0, 0
- b _0808ACF6
- .align 2, 0
-_0808ACE4: .4byte gMapHeader
-_0808ACE8:
- ldr r1, _0808ACFC @ =gFieldCallback
- ldr r0, _0808AD00 @ =sub_808AB90
- str r0, [r1]
- ldr r1, _0808AD04 @ =gUnknown_03005CE4
- ldr r0, _0808AD08 @ =sub_808AC8C
-_0808ACF2:
- str r0, [r1]
- movs r0, 0x1
-_0808ACF6:
- pop {r1}
- bx r1
- .align 2, 0
-_0808ACFC: .4byte gFieldCallback
-_0808AD00: .4byte sub_808AB90
-_0808AD04: .4byte gUnknown_03005CE4
-_0808AD08: .4byte sub_808AC8C
- thumb_func_end SetUpFieldMove_Fly
-
- thumb_func_start sub_808AD0C
-sub_808AD0C: @ 808AD0C
- push {r4,lr}
- ldr r4, _0808AD14 @ =0x0201b260
- b _0808AD24
- .align 2, 0
-_0808AD14: .4byte 0x0201b260
-_0808AD18:
- bl sub_80F9344
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0808AD48
-_0808AD24:
- bl sub_806B124
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808AD18
- ldrb r0, [r4]
- ldr r1, _0808AD50 @ =gLastFieldPokeMenuOpened
- ldrb r1, [r1]
- bl sub_806C994
- ldrb r0, [r4]
- movs r1, 0
- bl sub_806BF74
- ldr r0, _0808AD54 @ =sub_806AEDC
- bl SetMainCallback2
-_0808AD48:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808AD50: .4byte gLastFieldPokeMenuOpened
-_0808AD54: .4byte sub_806AEDC
- thumb_func_end sub_808AD0C
-
- thumb_func_start sub_808AD58
-sub_808AD58: @ 808AD58
- push {lr}
- ldr r2, _0808AD7C @ =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- ldr r2, _0808AD80 @ =sub_8089CD4
- movs r0, 0
- movs r1, 0xFF
- movs r3, 0
- bl sub_806AF4C
- ldr r0, _0808AD84 @ =sub_808AD0C
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_0808AD7C: .4byte gPaletteFade
-_0808AD80: .4byte sub_8089CD4
-_0808AD84: .4byte sub_808AD0C
- thumb_func_end sub_808AD58
-
- thumb_func_start unref_sub_808AD88
-unref_sub_808AD88: @ 808AD88
- push {lr}
- ldr r0, _0808ADA4 @ =gLastFieldPokeMenuOpened
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0808ADA8 @ =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- .align 2, 0
-_0808ADA4: .4byte gLastFieldPokeMenuOpened
-_0808ADA8: .4byte gPlayerParty
- thumb_func_end unref_sub_808AD88
-
- thumb_func_start sub_808ADAC
-sub_808ADAC: @ 808ADAC
- push {lr}
- ldr r0, _0808ADC0 @ =gUnknown_0202FF84
- ldr r1, _0808ADC4 @ =gLastFieldPokeMenuOpened
- ldrb r1, [r1]
- str r1, [r0]
- movs r0, 0x2C
- bl FieldEffectStart
- pop {r0}
- bx r0
- .align 2, 0
-_0808ADC0: .4byte gUnknown_0202FF84
-_0808ADC4: .4byte gLastFieldPokeMenuOpened
- thumb_func_end sub_808ADAC
-
- thumb_func_start SetUpFieldMove_Dive
-SetUpFieldMove_Dive: @ 808ADC8
- push {lr}
- bl sub_8068F18
- ldr r1, _0808ADE0 @ =gUnknown_0202FF84
- lsls r0, 24
- lsrs r0, 24
- str r0, [r1, 0x4]
- cmp r0, 0
- bne _0808ADE4
- movs r0, 0
- b _0808ADF2
- .align 2, 0
-_0808ADE0: .4byte gUnknown_0202FF84
-_0808ADE4:
- ldr r1, _0808ADF8 @ =gFieldCallback
- ldr r0, _0808ADFC @ =sub_808AB90
- str r0, [r1]
- ldr r1, _0808AE00 @ =gUnknown_03005CE4
- ldr r0, _0808AE04 @ =sub_808ADAC
- str r0, [r1]
- movs r0, 0x1
-_0808ADF2:
- pop {r1}
- bx r1
- .align 2, 0
-_0808ADF8: .4byte gFieldCallback
-_0808ADFC: .4byte sub_808AB90
-_0808AE00: .4byte gUnknown_03005CE4
-_0808AE04: .4byte sub_808ADAC
- thumb_func_end SetUpFieldMove_Dive
-
- thumb_func_start sub_808AE08
-sub_808AE08: @ 808AE08
- push {lr}
- ldr r0, _0808AE1C @ =gUnknown_0202FF84
- ldr r1, _0808AE20 @ =gLastFieldPokeMenuOpened
- ldrb r1, [r1]
- str r1, [r0]
- movs r0, 0x2B
- bl FieldEffectStart
- pop {r0}
- bx r0
- .align 2, 0
-_0808AE1C: .4byte gUnknown_0202FF84
-_0808AE20: .4byte gLastFieldPokeMenuOpened
- thumb_func_end sub_808AE08
-
- thumb_func_start SetUpFieldMove_Waterfall
-SetUpFieldMove_Waterfall: @ 808AE24
- push {r4,lr}
- sub sp, 0x4
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl GetXYCoordsOneStepInFrontOfPlayer
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r4, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl MetatileBehavior_IsWaterfall
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808AE80
- bl IsPlayerSurfingNorth
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808AE80
- ldr r1, _0808AE70 @ =gFieldCallback
- ldr r0, _0808AE74 @ =sub_808AB90
- str r0, [r1]
- ldr r1, _0808AE78 @ =gUnknown_03005CE4
- ldr r0, _0808AE7C @ =sub_808AE08
- str r0, [r1]
- movs r0, 0x1
- b _0808AE82
- .align 2, 0
-_0808AE70: .4byte gFieldCallback
-_0808AE74: .4byte sub_808AB90
-_0808AE78: .4byte gUnknown_03005CE4
-_0808AE7C: .4byte sub_808AE08
-_0808AE80:
- movs r0, 0
-_0808AE82:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end SetUpFieldMove_Waterfall
-
- thumb_func_start sub_808AE8C
-sub_808AE8C: @ 808AE8C
- push {r4-r6,lr}
- ldr r0, _0808AED8 @ =gScriptItemId
- ldrb r0, [r0]
- subs r0, 0x21
- lsls r0, 24
- lsrs r6, r0, 24
- movs r5, 0
-_0808AE9A:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _0808AEDC @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _0808AF10
- adds r0, r5, 0
- bl sub_806D668
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _0808AECE
- adds r0, r4, 0
- adds r1, r6, 0
- bl CanMonLearnTMHM
- cmp r0, 0
- bne _0808AEE0
-_0808AECE:
- adds r0, r5, 0
- movs r1, 0x9A
- bl sub_806BC3C
- b _0808AF10
- .align 2, 0
-_0808AED8: .4byte gScriptItemId
-_0808AEDC: .4byte gPlayerParty
-_0808AEE0:
- ldr r0, _0808AF04 @ =gScriptItemId
- ldrh r0, [r0]
- bl ItemIdToBattleMoveId
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl pokemon_has_move
- lsls r0, 24
- cmp r0, 0
- beq _0808AF08
- adds r0, r5, 0
- movs r1, 0xA8
- bl sub_806BC3C
- b _0808AF10
- .align 2, 0
-_0808AF04: .4byte gScriptItemId
-_0808AF08:
- adds r0, r5, 0
- movs r1, 0x8C
- bl sub_806BC3C
-_0808AF10:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x5
- bls _0808AE9A
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_808AE8C
-
- thumb_func_start sub_808AF20
-sub_808AF20: @ 808AF20
- push {r4,r5,lr}
- movs r5, 0
-_0808AF24:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _0808AF78 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _0808AF66
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _0808AF58
- ldr r0, _0808AF7C @ =gScriptItemId
- ldrh r2, [r0]
- adds r0, r4, 0
- movs r1, 0x3
- bl GetEvolutionTargetSpecies
- lsls r0, 16
- cmp r0, 0
- bne _0808AF66
-_0808AF58:
- adds r0, r5, 0
- bl sub_806D668
- adds r0, r5, 0
- movs r1, 0
- bl sub_806BC3C
-_0808AF66:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x5
- bls _0808AF24
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0808AF78: .4byte gPlayerParty
-_0808AF7C: .4byte gScriptItemId
- thumb_func_end sub_808AF20
-
- thumb_func_start sub_808AF80
-sub_808AF80: @ 808AF80
- push {r4,r5,lr}
- ldr r5, _0808AFB0 @ =0x0201b260
-_0808AF84:
- bl sub_806B124
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808B00C
- ldr r0, _0808AFB4 @ =gUnknown_02038561
- ldrb r0, [r0]
- cmp r0, 0
- bne _0808AFC6
- ldr r0, _0808AFB8 @ =gScriptItemId
- ldrh r0, [r0]
- bl CheckIfItemIsTMHMOrEvolutionStone
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0808AFBC
- cmp r0, 0x2
- beq _0808AFC2
- b _0808AFC6
- .align 2, 0
-_0808AFB0: .4byte 0x0201b260
-_0808AFB4: .4byte gUnknown_02038561
-_0808AFB8: .4byte gScriptItemId
-_0808AFBC:
- bl sub_808AE8C
- b _0808AFC6
-_0808AFC2:
- bl sub_808AF20
-_0808AFC6:
- ldr r4, _0808B000 @ =gLastFieldPokeMenuOpened
- ldrb r0, [r4]
- cmp r0, 0x5
- bhi _0808AFE2
- adds r1, r0, 0
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0808B004 @ =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- bne _0808AFE6
-_0808AFE2:
- movs r0, 0
- strb r0, [r4]
-_0808AFE6:
- ldrb r0, [r5]
- ldr r1, _0808B000 @ =gLastFieldPokeMenuOpened
- ldrb r1, [r1]
- bl sub_806C994
- ldrb r0, [r5]
- movs r1, 0
- bl sub_806BF74
- ldr r0, _0808B008 @ =sub_806AEDC
- bl SetMainCallback2
- b _0808B018
- .align 2, 0
-_0808B000: .4byte gLastFieldPokeMenuOpened
-_0808B004: .4byte gPlayerParty
-_0808B008: .4byte sub_806AEDC
-_0808B00C:
- bl sub_80F9344
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808AF84
-_0808B018:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_808AF80
-
- thumb_func_start sub_808B020
-sub_808B020: @ 808B020
- push {lr}
- ldr r2, _0808B040 @ =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- ldr r0, _0808B044 @ =gUnknown_02038561
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0808B0A0
- cmp r0, 0x1
- bgt _0808B048
- cmp r0, 0
- beq _0808B052
- b _0808B0AC
- .align 2, 0
-_0808B040: .4byte gPaletteFade
-_0808B044: .4byte gUnknown_02038561
-_0808B048:
- cmp r0, 0x3
- beq _0808B0A0
- cmp r0, 0x4
- beq _0808B08C
- b _0808B0AC
-_0808B052:
- ldr r0, _0808B070 @ =gScriptItemId
- ldrh r0, [r0]
- bl CheckIfItemIsTMHMOrEvolutionStone
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808B078
- ldr r2, _0808B074 @ =sub_808B0C0
- movs r0, 0
- movs r1, 0
- movs r3, 0x14
- bl sub_806AF4C
- b _0808B0AC
- .align 2, 0
-_0808B070: .4byte gScriptItemId
-_0808B074: .4byte sub_808B0C0
-_0808B078:
- ldr r2, _0808B088 @ =sub_808B0C0
- movs r0, 0
- movs r1, 0
- movs r3, 0x3
- bl sub_806AF4C
- b _0808B0AC
- .align 2, 0
-_0808B088: .4byte sub_808B0C0
-_0808B08C:
- ldr r2, _0808B09C @ =sub_808B1EC
- movs r0, 0
- movs r1, 0
- movs r3, 0xFF
- bl sub_806AF4C
- b _0808B0AC
- .align 2, 0
-_0808B09C: .4byte sub_808B1EC
-_0808B0A0:
- ldr r2, _0808B0B8 @ =sub_808B0C0
- movs r0, 0
- movs r1, 0
- movs r3, 0x4
- bl sub_806AF4C
-_0808B0AC:
- ldr r0, _0808B0BC @ =sub_808AF80
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_0808B0B8: .4byte sub_808B0C0
-_0808B0BC: .4byte sub_808AF80
- thumb_func_end sub_808B020
-
- thumb_func_start sub_808B0C0
-sub_808B0C0: @ 808B0C0
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0808B0EC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _0808B1CE
- adds r0, r4, 0
- bl sub_806BD80
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- beq _0808B0F0
- cmp r0, 0x2
- beq _0808B184
- b _0808B1CE
- .align 2, 0
-_0808B0EC: .4byte gPaletteFade
-_0808B0F0:
- adds r0, r4, 0
- bl sub_806CA38
- ldr r1, _0808B118 @ =gLastFieldPokeMenuOpened
- strb r0, [r1]
- ldrb r1, [r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0808B11C @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- beq _0808B120
- movs r0, 0x20
- bl PlaySE
- b _0808B1CE
- .align 2, 0
-_0808B118: .4byte gLastFieldPokeMenuOpened
-_0808B11C: .4byte gPlayerParty
-_0808B120:
- bl sub_806D5A4
- ldr r5, _0808B16C @ =gUnknown_02038561
- ldrb r0, [r5]
- cmp r0, 0
- bne _0808B13C
- ldr r3, _0808B170 @ =gUnknown_03004AE4
- ldr r0, _0808B174 @ =gScriptItemId
- ldrh r1, [r0]
- ldr r2, _0808B178 @ =sub_808B224
- ldr r3, [r3]
- adds r0, r4, 0
- bl _call_via_r3
-_0808B13C:
- ldrb r0, [r5]
- cmp r0, 0x1
- bne _0808B154
- movs r0, 0x5
- bl PlaySE
- ldr r0, _0808B174 @ =gScriptItemId
- ldrh r1, [r0]
- ldr r2, _0808B17C @ =sub_808B2EC
- adds r0, r4, 0
- bl PartyMenuTryGiveMonHeldItem
-_0808B154:
- ldrb r0, [r5]
- cmp r0, 0x3
- bne _0808B1CE
- movs r0, 0x5
- bl PlaySE
- ldr r1, _0808B180 @ =sub_808B2B4
- adds r0, r4, 0
- bl PartyMenuTryGiveMonMail
- b _0808B1CE
- .align 2, 0
-_0808B16C: .4byte gUnknown_02038561
-_0808B170: .4byte gUnknown_03004AE4
-_0808B174: .4byte gScriptItemId
-_0808B178: .4byte sub_808B224
-_0808B17C: .4byte sub_808B2EC
-_0808B180: .4byte sub_808B2B4
-_0808B184:
- adds r0, r4, 0
- bl sub_806CA38
- ldr r1, _0808B1D8 @ =gLastFieldPokeMenuOpened
- strb r0, [r1]
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- str r5, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r2, _0808B1DC @ =gUnknown_02038561
- ldrb r0, [r2]
- cmp r0, 0x1
- bhi _0808B1BA
- ldr r0, _0808B1E0 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _0808B1E4 @ =sub_808B25C
- str r0, [r1]
-_0808B1BA:
- ldrb r0, [r2]
- cmp r0, 0x3
- bne _0808B1CE
- ldr r0, _0808B1E0 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _0808B1E8 @ =sub_808B2B4
- str r0, [r1]
-_0808B1CE:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0808B1D8: .4byte gLastFieldPokeMenuOpened
-_0808B1DC: .4byte gUnknown_02038561
-_0808B1E0: .4byte gTasks
-_0808B1E4: .4byte sub_808B25C
-_0808B1E8: .4byte sub_808B2B4
- thumb_func_end sub_808B0C0
-
- thumb_func_start sub_808B1EC
-sub_808B1EC: @ 808B1EC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0808B214 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0808B20E
- ldr r3, _0808B218 @ =gUnknown_03004AE4
- ldr r0, _0808B21C @ =gScriptItemId
- ldrh r1, [r0]
- ldr r2, _0808B220 @ =sub_808B224
- ldr r3, [r3]
- adds r0, r4, 0
- bl _call_via_r3
-_0808B20E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808B214: .4byte gPaletteFade
-_0808B218: .4byte gUnknown_03004AE4
-_0808B21C: .4byte gScriptItemId
-_0808B220: .4byte sub_808B224
- thumb_func_end sub_808B1EC
-
- thumb_func_start sub_808B224
-sub_808B224: @ 808B224
- 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, _0808B254 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808B258 @ =sub_808B25C
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808B254: .4byte gTasks
-_0808B258: .4byte sub_808B25C
- thumb_func_end sub_808B224
-
- thumb_func_start sub_808B25C
-sub_808B25C: @ 808B25C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0808B280 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0808B27A
- ldr r0, _0808B284 @ =sub_80A5B40
- bl SetMainCallback2
- adds r0, r4, 0
- bl DestroyTask
-_0808B27A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808B280: .4byte gPaletteFade
-_0808B284: .4byte sub_80A5B40
- thumb_func_end sub_808B25C
-
- thumb_func_start sub_808B288
-sub_808B288: @ 808B288
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0808B2AC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0808B2A6
- ldr r0, _0808B2B0 @ =Mailbox_ReturnToMailListAfterDeposit
- bl SetMainCallback2
- adds r0, r4, 0
- bl DestroyTask
-_0808B2A6:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808B2AC: .4byte gPaletteFade
-_0808B2B0: .4byte Mailbox_ReturnToMailListAfterDeposit
- thumb_func_end sub_808B288
-
- thumb_func_start sub_808B2B4
-sub_808B2B4: @ 808B2B4
- 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, _0808B2E4 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808B2E8 @ =sub_808B288
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808B2E4: .4byte gTasks
-_0808B2E8: .4byte sub_808B288
- thumb_func_end sub_808B2B4
-
- thumb_func_start sub_808B2EC
-sub_808B2EC: @ 808B2EC
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0808B31C @ =gUnknown_0202E8F4
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _0808B328
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _0808B320 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808B324 @ =sub_808B338
- str r1, [r0]
- b _0808B32E
- .align 2, 0
-_0808B31C: .4byte gUnknown_0202E8F4
-_0808B320: .4byte gTasks
-_0808B324: .4byte sub_808B338
-_0808B328:
- adds r0, r4, 0
- bl sub_808B224
-_0808B32E:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_808B2EC
-
- thumb_func_start sub_808B338
-sub_808B338: @ 808B338
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _0808B38C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0808B384
- adds r0, r5, 0
- bl sub_806CA38
- ldr r1, _0808B390 @ =gLastFieldPokeMenuOpened
- strb r0, [r1]
- ldrb r1, [r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0808B394 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x40
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- bl DestroyTask
- lsls r1, r4, 3
- adds r1, r4
- lsls r1, 2
- ldr r0, _0808B398 @ =gSaveBlock1 + 0x2B4C
- adds r1, r0
- ldr r2, _0808B39C @ =sub_808B3EC
- movs r0, 0x4
- movs r3, 0x3
- bl sub_80E62A0
-_0808B384:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0808B38C: .4byte gPaletteFade
-_0808B390: .4byte gLastFieldPokeMenuOpened
-_0808B394: .4byte gPlayerParty
-_0808B398: .4byte gSaveBlock1 + 0x2B4C
-_0808B39C: .4byte sub_808B3EC
- thumb_func_end sub_808B338
-
- thumb_func_start sub_808B3A0
-sub_808B3A0: @ 808B3A0
- push {r4,lr}
- ldr r4, _0808B3A8 @ =0x0201b260
- b _0808B3B8
- .align 2, 0
-_0808B3A8: .4byte 0x0201b260
-_0808B3AC:
- bl sub_80F9344
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0808B3DC
-_0808B3B8:
- bl sub_806B124
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808B3AC
- ldrb r0, [r4]
- ldr r1, _0808B3E4 @ =gLastFieldPokeMenuOpened
- ldrb r1, [r1]
- bl sub_806C994
- ldrb r0, [r4]
- movs r1, 0
- bl sub_806BF74
- ldr r0, _0808B3E8 @ =sub_806AEDC
- bl SetMainCallback2
-_0808B3DC:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808B3E4: .4byte gLastFieldPokeMenuOpened
-_0808B3E8: .4byte sub_806AEDC
- thumb_func_end sub_808B3A0
-
- thumb_func_start sub_808B3EC
-sub_808B3EC: @ 808B3EC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r0, _0808B464 @ =gPaletteFade
- mov r8, r0
- ldrb r0, [r0, 0x8]
- movs r1, 0x80
- orrs r0, r1
- mov r1, r8
- strb r0, [r1, 0x8]
- ldr r0, _0808B468 @ =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0
- bne _0808B480
- ldr r7, _0808B46C @ =gUnknown_0202E8F8
- ldrh r0, [r7]
- cmp r0, 0
- beq _0808B416
- movs r1, 0x1
- bl RemoveBagItem
-_0808B416:
- ldr r6, _0808B470 @ =gLastFieldPokeMenuOpened
- ldrb r0, [r6]
- movs r5, 0x64
- muls r0, r5
- ldr r4, _0808B474 @ =gPlayerParty
- adds r0, r4
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- bl AddBagItem
- ldrb r0, [r6]
- muls r0, r5
- adds r0, r4
- bl TakeMailFromMon
- ldrb r0, [r6]
- muls r0, r5
- adds r0, r4
- movs r1, 0xC
- adds r2, r7, 0
- bl SetMonData
- ldr r0, _0808B478 @ =sub_808B25C
- movs r1, 0x5
- bl CreateTask
- mov r0, r8
- ldrb r1, [r0, 0x8]
- movs r0, 0x7F
- ands r0, r1
- mov r1, r8
- strb r0, [r1, 0x8]
- ldr r0, _0808B47C @ =sub_806AEDC
- b _0808B48E
- .align 2, 0
-_0808B464: .4byte gPaletteFade
-_0808B468: .4byte gScriptResult
-_0808B46C: .4byte gUnknown_0202E8F8
-_0808B470: .4byte gLastFieldPokeMenuOpened
-_0808B474: .4byte gPlayerParty
-_0808B478: .4byte sub_808B25C
-_0808B47C: .4byte sub_806AEDC
-_0808B480:
- ldr r2, _0808B49C @ =sub_808B4A4
- movs r0, 0
- movs r1, 0
- movs r3, 0xFF
- bl sub_806AF4C
- ldr r0, _0808B4A0 @ =sub_808B3A0
-_0808B48E:
- bl SetMainCallback2
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0808B49C: .4byte sub_808B4A4
-_0808B4A0: .4byte sub_808B3A0
- thumb_func_end sub_808B3EC
-
- thumb_func_start sub_808B4A4
-sub_808B4A4: @ 808B4A4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0808B4D8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0808B4D2
- ldr r0, _0808B4DC @ =gLastFieldPokeMenuOpened
- ldrb r0, [r0]
- ldr r1, _0808B4E0 @ =gScriptItemId
- ldrh r1, [r1]
- movs r2, 0x1
- bl DisplayGiveHeldItemMessage
- ldr r1, _0808B4E4 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808B4E8 @ =sub_808B4EC
- str r1, [r0]
-_0808B4D2:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808B4D8: .4byte gPaletteFade
-_0808B4DC: .4byte gLastFieldPokeMenuOpened
-_0808B4E0: .4byte gScriptItemId
-_0808B4E4: .4byte gTasks
-_0808B4E8: .4byte sub_808B4EC
- thumb_func_end sub_808B4A4
-
- thumb_func_start sub_808B4EC
-sub_808B4EC: @ 808B4EC
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r0, _0808B504 @ =gUnknown_0202E8F6
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0808B500
- adds r0, r1, 0
- bl sub_808B224
-_0808B500:
- pop {r0}
- bx r0
- .align 2, 0
-_0808B504: .4byte gUnknown_0202E8F6
- thumb_func_end sub_808B4EC
-
- thumb_func_start sub_808B508
-sub_808B508: @ 808B508
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_808B224
- pop {r0}
- bx r0
- thumb_func_end sub_808B508
-
- thumb_func_start sub_808B518
-sub_808B518: @ 808B518
- push {r4,lr}
- ldr r4, _0808B520 @ =0x0201b260
- b _0808B530
- .align 2, 0
-_0808B520: .4byte 0x0201b260
-_0808B524:
- bl sub_80F9344
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0808B554
-_0808B530:
- bl sub_806B124
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808B524
- ldrb r0, [r4]
- ldr r1, _0808B55C @ =gUnknown_020384F0
- ldrb r1, [r1]
- bl sub_806C994
- ldrb r0, [r4]
- movs r1, 0
- bl sub_806BF74
- ldr r0, _0808B560 @ =sub_806AEDC
- bl SetMainCallback2
-_0808B554:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808B55C: .4byte gUnknown_020384F0
-_0808B560: .4byte sub_806AEDC
- thumb_func_end sub_808B518
-
- thumb_func_start sub_808B564
-sub_808B564: @ 808B564
- push {lr}
- ldr r2, _0808B58C @ =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- bl sub_809FA30
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- beq _0808B594
- ldr r2, _0808B590 @ =TaughtMove
- movs r0, 0
- movs r1, 0
- movs r3, 0xFF
- bl sub_806AF4C
- b _0808B5A0
- .align 2, 0
-_0808B58C: .4byte gPaletteFade
-_0808B590: .4byte TaughtMove
-_0808B594:
- ldr r2, _0808B5AC @ =StopTryingToTeachMove_806F588
- movs r0, 0
- movs r1, 0
- movs r3, 0xFF
- bl sub_806AF4C
-_0808B5A0:
- ldr r0, _0808B5B0 @ =sub_808B518
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_0808B5AC: .4byte StopTryingToTeachMove_806F588
-_0808B5B0: .4byte sub_808B518
- thumb_func_end sub_808B564
-
- thumb_func_start sub_808B5B4
-sub_808B5B4: @ 808B5B4
- push {lr}
- ldr r3, _0808B5D8 @ =gUnknown_03005CF0
- ldr r2, _0808B5DC @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r2, [r1]
- str r2, [r3]
- ldr r2, _0808B5E0 @ =sub_808B5E4
- str r2, [r1]
- lsls r0, 24
- lsrs r0, 24
- bl _call_via_r2
- pop {r0}
- bx r0
- .align 2, 0
-_0808B5D8: .4byte gUnknown_03005CF0
-_0808B5DC: .4byte gTasks
-_0808B5E0: .4byte sub_808B5E4
- thumb_func_end sub_808B5B4
-
- thumb_func_start sub_808B5E4
-sub_808B5E4: @ 808B5E4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_8055870
- cmp r0, 0x1
- beq _0808B602
- ldr r1, _0808B608 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808B60C @ =gUnknown_03005CF0
- ldr r1, [r1]
- str r1, [r0]
-_0808B602:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808B608: .4byte gTasks
-_0808B60C: .4byte gUnknown_03005CF0
- thumb_func_end sub_808B5E4
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/pokenav.s b/asm/pokenav.s
index cb6a40450..1062abc48 100644
--- a/asm/pokenav.s
+++ b/asm/pokenav.s
@@ -22370,7 +22370,7 @@ _080F6C3A:
adds r6, r0, r1
ldrh r7, [r6]
adds r0, r7, 0
- bl trainer_flag_check
+ bl HasTrainerAlreadyBeenFought
lsls r0, 24
cmp r0, 0
beq _080F6CA0
@@ -22402,7 +22402,7 @@ _080F6C3A:
strb r1, [r0]
ldrh r0, [r6, 0xA]
ldrh r1, [r6, 0xC]
- bl get_mapheader_by_bank_and_number
+ bl Overworld_GetMapHeaderByGroupAndId
ldrh r1, [r5]
lsls r1, 3
adds r4, r1
@@ -22431,7 +22431,7 @@ _080F6CB4:
adds r5, r0, r1
ldrh r4, [r5]
adds r0, r4, 0
- bl trainer_flag_check
+ bl HasTrainerAlreadyBeenFought
lsls r0, 24
cmp r0, 0
beq _080F6D0E
diff --git a/asm/reshow_battle_screen.s b/asm/reshow_battle_screen.s
deleted file mode 100644
index 59b08dd01..000000000
--- a/asm/reshow_battle_screen.s
+++ /dev/null
@@ -1,1097 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start nullsub_14
-nullsub_14: @ 807AD54
- bx lr
- thumb_func_end nullsub_14
-
- thumb_func_start ReshowBattleScreenAfterMenu
-ReshowBattleScreenAfterMenu: @ 807AD58
- push {lr}
- ldr r2, _0807AD90 @ =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- movs r0, 0
- bl SetHBlankCallback
- movs r0, 0
- bl SetVBlankCallback
- ldr r0, _0807AD94 @ =REG_MOSAIC
- movs r2, 0
- strh r2, [r0]
- ldr r0, _0807AD98 @ =0x02000000
- ldr r3, _0807AD9C @ =0x0001ffff
- adds r1, r0, r3
- strb r2, [r1]
- ldr r1, _0807ADA0 @ =0x0001fffe
- adds r0, r1
- strb r2, [r0]
- ldr r0, _0807ADA4 @ =CB2_ReshowBattleScreenAfterMenu
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_0807AD90: .4byte gPaletteFade
-_0807AD94: .4byte REG_MOSAIC
-_0807AD98: .4byte 0x02000000
-_0807AD9C: .4byte 0x0001ffff
-_0807ADA0: .4byte 0x0001fffe
-_0807ADA4: .4byte CB2_ReshowBattleScreenAfterMenu
- thumb_func_end ReshowBattleScreenAfterMenu
-
- thumb_func_start CB2_ReshowBattleScreenAfterMenu
-CB2_ReshowBattleScreenAfterMenu: @ 807ADA8
- push {r4-r7,lr}
- sub sp, 0x8
- ldr r0, _0807ADC4 @ =0x02000000
- ldr r1, _0807ADC8 @ =0x0001ffff
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x13
- bls _0807ADBA
- b _0807B010
-_0807ADBA:
- lsls r0, 2
- ldr r1, _0807ADCC @ =_0807ADD0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0807ADC4: .4byte 0x02000000
-_0807ADC8: .4byte 0x0001ffff
-_0807ADCC: .4byte _0807ADD0
- .align 2, 0
-_0807ADD0:
- .4byte _0807AE20
- .4byte _0807AE84
- .4byte _0807AE9C
- .4byte _0807AEC8
- .4byte _0807AECE
- .4byte _0807AEE0
- .4byte _0807AEE6
- .4byte _0807AF18
- .4byte _0807AF1C
- .4byte _0807AF20
- .4byte _0807AF24
- .4byte _0807AF48
- .4byte _0807AF50
- .4byte _0807AF58
- .4byte _0807AF60
- .4byte _0807AF68
- .4byte _0807AF70
- .4byte _0807AF78
- .4byte _0807AF80
- .4byte _0807AF88
-_0807AE20:
- bl dp12_8087EA4
- ldr r4, _0807AE5C @ =gWindowConfig_81E6C58
- adds r0, r4, 0
- bl SetUpWindowConfig
- bl ResetPaletteFade
- ldr r0, _0807AE60 @ =gUnknown_03004210
- adds r1, r4, 0
- bl InitWindowFromConfig
- ldr r0, _0807AE64 @ =gUnknown_030042A4
- movs r1, 0
- strh r1, [r0]
- ldr r0, _0807AE68 @ =gUnknown_030042A0
- strh r1, [r0]
- ldr r0, _0807AE6C @ =gUnknown_030042C0
- strh r1, [r0]
- ldr r0, _0807AE70 @ =gUnknown_030041B4
- strh r1, [r0]
- ldr r0, _0807AE74 @ =gUnknown_03004288
- strh r1, [r0]
- ldr r0, _0807AE78 @ =gUnknown_03004280
- strh r1, [r0]
- ldr r0, _0807AE7C @ =gUnknown_030041B0
- strh r1, [r0]
- ldr r0, _0807AE80 @ =gUnknown_030041B8
- strh r1, [r0]
- b _0807B040
- .align 2, 0
-_0807AE5C: .4byte gWindowConfig_81E6C58
-_0807AE60: .4byte gUnknown_03004210
-_0807AE64: .4byte gUnknown_030042A4
-_0807AE68: .4byte gUnknown_030042A0
-_0807AE6C: .4byte gUnknown_030042C0
-_0807AE70: .4byte gUnknown_030041B4
-_0807AE74: .4byte gUnknown_03004288
-_0807AE78: .4byte gUnknown_03004280
-_0807AE7C: .4byte gUnknown_030041B0
-_0807AE80: .4byte gUnknown_030041B8
-_0807AE84:
- movs r0, 0
- str r0, [sp, 0x4]
- movs r1, 0xC0
- lsls r1, 19
- ldr r2, _0807AE98 @ =0x01006000
- add r0, sp, 0x4
- bl CpuFastSet
- b _0807B040
- .align 2, 0
-_0807AE98: .4byte 0x01006000
-_0807AE9C:
- ldr r5, _0807AEBC @ =0x02000000
- ldr r0, _0807AEC0 @ =0x0001fffe
- adds r4, r5, r0
- ldrb r0, [r4]
- bl sub_800E414
- lsls r0, 24
- cmp r0, 0
- bne _0807AEF8
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldr r0, _0807AEC4 @ =0x0001ffff
- adds r1, r5, r0
- b _0807AF38
- .align 2, 0
-_0807AEBC: .4byte 0x02000000
-_0807AEC0: .4byte 0x0001fffe
-_0807AEC4: .4byte 0x0001ffff
-_0807AEC8:
- bl ResetSpriteData
- b _0807B040
-_0807AECE:
- bl FreeAllSpritePalettes
- ldr r1, _0807AEDC @ =gReservedSpritePaletteCount
- movs r0, 0x4
- strb r0, [r1]
- b _0807B040
- .align 2, 0
-_0807AEDC: .4byte gReservedSpritePaletteCount
-_0807AEE0:
- bl sub_8031EE8
- b _0807B040
-_0807AEE6:
- ldr r5, _0807AF00 @ =0x02000000
- ldr r1, _0807AF04 @ =0x0001fffe
- adds r4, r5, r1
- ldrb r0, [r4]
- bl sub_8031C30
- lsls r0, 24
- cmp r0, 0
- beq _0807AF08
-_0807AEF8:
- movs r0, 0
- strb r0, [r4]
- b _0807B040
- .align 2, 0
-_0807AF00: .4byte 0x02000000
-_0807AF04: .4byte 0x0001fffe
-_0807AF08:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldr r0, _0807AF14 @ =0x0001ffff
- adds r1, r5, r0
- b _0807AF38
- .align 2, 0
-_0807AF14: .4byte 0x0001ffff
-_0807AF18:
- movs r0, 0
- b _0807AF26
-_0807AF1C:
- movs r0, 0x1
- b _0807AF26
-_0807AF20:
- movs r0, 0x2
- b _0807AF26
-_0807AF24:
- movs r0, 0x3
-_0807AF26:
- bl sub_807B094
- lsls r0, 24
- cmp r0, 0
- beq _0807AF32
- b _0807B040
-_0807AF32:
- ldr r1, _0807AF40 @ =0x02000000
- ldr r0, _0807AF44 @ =0x0001ffff
- adds r1, r0
-_0807AF38:
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- b _0807B040
- .align 2, 0
-_0807AF40: .4byte 0x02000000
-_0807AF44: .4byte 0x0001ffff
-_0807AF48:
- movs r0, 0
- bl sub_807B184
- b _0807B040
-_0807AF50:
- movs r0, 0x1
- bl sub_807B184
- b _0807B040
-_0807AF58:
- movs r0, 0x2
- bl sub_807B184
- b _0807B040
-_0807AF60:
- movs r0, 0x3
- bl sub_807B184
- b _0807B040
-_0807AF68:
- movs r0, 0
- bl sub_807B508
- b _0807B040
-_0807AF70:
- movs r0, 0x1
- bl sub_807B508
- b _0807B040
-_0807AF78:
- movs r0, 0x2
- bl sub_807B508
- b _0807B040
-_0807AF80:
- movs r0, 0x3
- bl sub_807B508
- b _0807B040
-_0807AF88:
- bl sub_80327CC
- movs r0, 0x1
- bl GetBankByPlayerAI
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r7, _0807B000 @ =gBattlePartyID
- lsls r0, r4, 1
- adds r0, r7
- ldrh r0, [r0]
- movs r6, 0x64
- muls r0, r6
- ldr r5, _0807B004 @ =gEnemyParty
- adds r0, r5
- movs r1, 0xB
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_8032984
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _0807AFEC
- movs r0, 0x3
- bl GetBankByPlayerAI
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r0, r4, 1
- adds r0, r7
- ldrh r0, [r0]
- muls r0, r6
- adds r0, r5
- movs r1, 0xB
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_8032984
-_0807AFEC:
- ldr r1, _0807B008 @ =gActionSelectionCursor
- ldr r0, _0807B00C @ =gBankInMenu
- ldrb r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- movs r1, 0
- bl sub_802E3E4
- b _0807B040
- .align 2, 0
-_0807B000: .4byte gBattlePartyID
-_0807B004: .4byte gEnemyParty
-_0807B008: .4byte gActionSelectionCursor
-_0807B00C: .4byte gBankInMenu
-_0807B010:
- ldr r0, _0807B054 @ =sub_800FCD4
- bl SetHBlankCallback
- ldr r0, _0807B058 @ =sub_800FCFC
- bl SetVBlankCallback
- bl sub_807B06C
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0xFF
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginHardwarePaletteFade
- ldr r2, _0807B05C @ =gPaletteFade
- ldrb r1, [r2, 0x8]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2, 0x8]
- ldr r0, _0807B060 @ =sub_800F808
- bl SetMainCallback2
-_0807B040:
- ldr r1, _0807B064 @ =0x02000000
- ldr r0, _0807B068 @ =0x0001ffff
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0807B054: .4byte sub_800FCD4
-_0807B058: .4byte sub_800FCFC
-_0807B05C: .4byte gPaletteFade
-_0807B060: .4byte sub_800F808
-_0807B064: .4byte 0x02000000
-_0807B068: .4byte 0x0001ffff
- thumb_func_end CB2_ReshowBattleScreenAfterMenu
-
- thumb_func_start sub_807B06C
-sub_807B06C: @ 807B06C
- push {lr}
- bl sub_800D6D4
- ldr r3, _0807B08C @ =REG_BG1CNT
- ldrb r2, [r3]
- movs r1, 0xD
- negs r1, r1
- adds r0, r1, 0
- ands r0, r2
- strb r0, [r3]
- ldr r2, _0807B090 @ =REG_BG2CNT
- ldrb r0, [r2]
- ands r1, r0
- strb r1, [r2]
- pop {r0}
- bx r0
- .align 2, 0
-_0807B08C: .4byte REG_BG1CNT
-_0807B090: .4byte REG_BG2CNT
- thumb_func_end sub_807B06C
-
- thumb_func_start sub_807B094
-sub_807B094: @ 807B094
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0807B0D8 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r4, r0
- bcs _0807B172
- adds r0, r4, 0
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _0807B0F2
- lsls r0, r4, 2
- ldr r1, _0807B0DC @ =0x02017800
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- bne _0807B0E8
- ldr r1, _0807B0E0 @ =gBattlePartyID
- lsls r0, r4, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0807B0E4 @ =gEnemyParty
- adds r0, r1
- adds r1, r4, 0
- bl sub_8031794
- b _0807B168
- .align 2, 0
-_0807B0D8: .4byte gNoOfAllBanks
-_0807B0DC: .4byte 0x02017800
-_0807B0E0: .4byte gBattlePartyID
-_0807B0E4: .4byte gEnemyParty
-_0807B0E8:
- adds r0, r4, 0
- movs r1, 0
- bl sub_8032350
- b _0807B168
-_0807B0F2:
- ldr r2, _0807B108 @ =gBattleTypeFlags
- ldrh r1, [r2]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0807B110
- cmp r4, 0
- bne _0807B110
- ldr r0, _0807B10C @ =gSaveBlock2
- ldrb r0, [r0, 0x8]
- b _0807B122
- .align 2, 0
-_0807B108: .4byte gBattleTypeFlags
-_0807B10C: .4byte gSaveBlock2
-_0807B110:
- ldrh r1, [r2]
- movs r0, 0x80
- lsls r0, 2
- ands r0, r1
- cmp r0, 0
- beq _0807B12A
- cmp r4, 0
- bne _0807B12A
- movs r0, 0x2
-_0807B122:
- movs r1, 0
- bl sub_8031AF4
- b _0807B168
-_0807B12A:
- lsls r0, r4, 2
- ldr r1, _0807B154 @ =0x02017800
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- bne _0807B160
- ldr r1, _0807B158 @ =gBattlePartyID
- lsls r0, r4, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0807B15C @ =gPlayerParty
- adds r0, r1
- adds r1, r4, 0
- bl sub_80318FC
- b _0807B168
- .align 2, 0
-_0807B154: .4byte 0x02017800
-_0807B158: .4byte gBattlePartyID
-_0807B15C: .4byte gPlayerParty
-_0807B160:
- adds r0, r4, 0
- movs r1, 0
- bl sub_8032350
-_0807B168:
- ldr r0, _0807B17C @ =0x02000000
- ldr r1, _0807B180 @ =0x0001fffe
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
-_0807B172:
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0807B17C: .4byte 0x02000000
-_0807B180: .4byte 0x0001fffe
- thumb_func_end sub_807B094
-
- thumb_func_start sub_807B184
-sub_807B184: @ 807B184
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, _0807B1B8 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r7, r0
- bcc _0807B19E
- b _0807B4D8
-_0807B19E:
- lsls r2, r7, 2
- ldr r0, _0807B1BC @ =0x02017800
- adds r0, r2, r0
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- str r2, [sp]
- cmp r0, 0
- beq _0807B1C0
- adds r0, r7, 0
- bl sub_8077F7C
- b _0807B1C6
- .align 2, 0
-_0807B1B8: .4byte gNoOfAllBanks
-_0807B1BC: .4byte 0x02017800
-_0807B1C0:
- adds r0, r7, 0
- bl sub_8077F68
-_0807B1C6:
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- adds r0, r7, 0
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0807B1DA
- b _0807B2D8
-_0807B1DA:
- ldr r1, _0807B2BC @ =gBattlePartyID
- lsls r0, r7, 1
- adds r6, r0, r1
- ldrh r0, [r6]
- movs r1, 0x64
- mov r10, r1
- mov r1, r10
- muls r1, r0
- adds r0, r1, 0
- ldr r1, _0807B2C0 @ =gEnemyParty
- mov r9, r1
- add r0, r9
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _0807B1FE
- b _0807B4D8
-_0807B1FE:
- ldrh r0, [r6]
- mov r1, r10
- muls r1, r0
- adds r0, r1, 0
- add r0, r9
- movs r1, 0xB
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r7, 0
- bl GetBankIdentity
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl GetMonSpriteTemplate_803C56C
- ldr r5, _0807B2C4 @ =gUnknown_02024E8C
- adds r0, r7, 0
- movs r1, 0x2
- bl sub_8077ABC
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r7, 0
- bl sub_8079E90
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- adds r0, r5, 0
- adds r1, r4, 0
- mov r2, r8
- bl CreateSprite
- ldr r4, _0807B2C8 @ =gObjectBankIDs
- adds r4, r7, r4
- strb r0, [r4]
- ldr r5, _0807B2CC @ =gSprites
- ldrb r0, [r4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- lsls r3, r7, 4
- ldrb r2, [r1, 0x5]
- movs r0, 0xF
- ands r0, r2
- orrs r0, r3
- strb r0, [r1, 0x5]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r5, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, _0807B2D0 @ =SpriteCallbackDummy
- str r1, [r0]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r7, [r0, 0x2E]
- ldrh r0, [r6]
- mov r1, r10
- muls r1, r0
- adds r0, r1, 0
- add r0, r9
- movs r1, 0xB
- bl GetMonData
- ldrb r2, [r4]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r5
- strh r0, [r1, 0x32]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r1, _0807B2D4 @ =gBattleMonForms
- adds r1, r7, r1
- ldrb r1, [r1]
- bl StartSpriteAnim
- b _0807B4AC
- .align 2, 0
-_0807B2BC: .4byte gBattlePartyID
-_0807B2C0: .4byte gEnemyParty
-_0807B2C4: .4byte gUnknown_02024E8C
-_0807B2C8: .4byte gObjectBankIDs
-_0807B2CC: .4byte gSprites
-_0807B2D0: .4byte SpriteCallbackDummy
-_0807B2D4: .4byte gBattleMonForms
-_0807B2D8:
- ldr r2, _0807B328 @ =gBattleTypeFlags
- ldrh r1, [r2]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0807B338
- cmp r7, 0
- bne _0807B338
- ldr r5, _0807B32C @ =gSaveBlock2
- ldrb r4, [r5, 0x8]
- movs r0, 0
- bl GetBankIdentity
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl GetMonSpriteTemplate_803C5A0
- ldr r6, _0807B330 @ =gUnknown_02024E8C
- ldr r1, _0807B334 @ =gTrainerBackPicCoords
- ldrb r0, [r5, 0x8]
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0]
- movs r4, 0x8
- subs r4, r0
- lsls r4, 18
- movs r0, 0xA0
- lsls r0, 15
- adds r4, r0
- asrs r4, 16
- movs r0, 0
- bl sub_8079E90
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- adds r0, r6, 0
- b _0807B37C
- .align 2, 0
-_0807B328: .4byte gBattleTypeFlags
-_0807B32C: .4byte gSaveBlock2
-_0807B330: .4byte gUnknown_02024E8C
-_0807B334: .4byte gTrainerBackPicCoords
-_0807B338:
- ldrh r1, [r2]
- movs r0, 0x80
- lsls r0, 2
- ands r0, r1
- cmp r0, 0
- beq _0807B3D0
- cmp r7, 0
- bne _0807B3D0
- movs r0, 0
- bl GetBankIdentity
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x2
- bl GetMonSpriteTemplate_803C5A0
- ldr r5, _0807B3BC @ =gUnknown_02024E8C
- ldr r0, _0807B3C0 @ =gTrainerBackPicCoords
- ldrb r0, [r0, 0x8]
- movs r4, 0x8
- subs r4, r0
- lsls r4, 18
- movs r1, 0xA0
- lsls r1, 15
- adds r4, r1
- asrs r4, 16
- movs r0, 0
- bl sub_8079E90
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- adds r0, r5, 0
-_0807B37C:
- movs r1, 0x50
- adds r2, r4, 0
- bl CreateSprite
- ldr r3, _0807B3C4 @ =gObjectBankIDs
- strb r0, [r3]
- ldr r4, _0807B3C8 @ =gSprites
- ldrb r0, [r3]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r2, [r1, 0x5]
- movs r0, 0xF
- ands r0, r2
- strb r0, [r1, 0x5]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r4, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, _0807B3CC @ =SpriteCallbackDummy
- str r1, [r0]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- strh r7, [r0, 0x2E]
- b _0807B4AC
- .align 2, 0
-_0807B3BC: .4byte gUnknown_02024E8C
-_0807B3C0: .4byte gTrainerBackPicCoords
-_0807B3C4: .4byte gObjectBankIDs
-_0807B3C8: .4byte gSprites
-_0807B3CC: .4byte SpriteCallbackDummy
-_0807B3D0:
- ldr r1, _0807B4E8 @ =gBattlePartyID
- lsls r0, r7, 1
- adds r6, r0, r1
- ldrh r0, [r6]
- movs r1, 0x64
- mov r10, r1
- mov r1, r10
- muls r1, r0
- adds r0, r1, 0
- ldr r1, _0807B4EC @ =gPlayerParty
- mov r9, r1
- add r0, r9
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _0807B4D8
- ldrh r0, [r6]
- mov r1, r10
- muls r1, r0
- adds r0, r1, 0
- add r0, r9
- movs r1, 0xB
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r7, 0
- bl GetBankIdentity
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl GetMonSpriteTemplate_803C56C
- ldr r5, _0807B4F0 @ =gUnknown_02024E8C
- adds r0, r7, 0
- movs r1, 0x2
- bl sub_8077ABC
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r7, 0
- bl sub_8079E90
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- adds r0, r5, 0
- adds r1, r4, 0
- mov r2, r8
- bl CreateSprite
- ldr r4, _0807B4F4 @ =gObjectBankIDs
- adds r4, r7, r4
- strb r0, [r4]
- ldr r5, _0807B4F8 @ =gSprites
- ldrb r0, [r4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- lsls r3, r7, 4
- ldrb r2, [r1, 0x5]
- movs r0, 0xF
- ands r0, r2
- orrs r0, r3
- strb r0, [r1, 0x5]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r5, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, _0807B4FC @ =SpriteCallbackDummy
- str r1, [r0]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r7, [r0, 0x2E]
- ldrh r0, [r6]
- mov r1, r10
- muls r1, r0
- adds r0, r1, 0
- add r0, r9
- movs r1, 0xB
- bl GetMonData
- ldrb r2, [r4]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r5
- strh r0, [r1, 0x32]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r1, _0807B500 @ =gBattleMonForms
- adds r1, r7, r1
- ldrb r1, [r1]
- bl StartSpriteAnim
-_0807B4AC:
- ldr r1, _0807B4F8 @ =gSprites
- ldr r0, _0807B4F4 @ =gObjectBankIDs
- adds r0, r7, r0
- ldrb r0, [r0]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r1
- ldr r0, _0807B504 @ =0x02017800
- ldr r1, [sp]
- adds r0, r1, r0
- ldr r1, [r0]
- lsls r1, 31
- adds r2, 0x3E
- lsrs r1, 31
- lsls r1, 2
- ldrb r3, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
-_0807B4D8:
- 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
-_0807B4E8: .4byte gBattlePartyID
-_0807B4EC: .4byte gPlayerParty
-_0807B4F0: .4byte gUnknown_02024E8C
-_0807B4F4: .4byte gObjectBankIDs
-_0807B4F8: .4byte gSprites
-_0807B4FC: .4byte SpriteCallbackDummy
-_0807B500: .4byte gBattleMonForms
-_0807B504: .4byte 0x02017800
- thumb_func_end sub_807B184
-
- thumb_func_start sub_807B508
-sub_807B508: @ 807B508
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _0807B530 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r5, r0
- bcc _0807B518
- b _0807B68A
-_0807B518:
- ldr r2, _0807B534 @ =gBattleTypeFlags
- ldrh r1, [r2]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0807B538
- cmp r5, 0
- bne _0807B538
- bl battle_make_oam_safari_battle
- b _0807B550
- .align 2, 0
-_0807B530: .4byte gNoOfAllBanks
-_0807B534: .4byte gBattleTypeFlags
-_0807B538:
- ldrh r1, [r2]
- movs r0, 0x80
- lsls r0, 2
- ands r0, r1
- cmp r0, 0
- beq _0807B54A
- cmp r5, 0
- bne _0807B54A
- b _0807B68A
-_0807B54A:
- adds r0, r5, 0
- bl battle_make_oam_normal_battle
-_0807B550:
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _0807B58C @ =gHealthboxIDs
- adds r4, r5, r0
- strb r6, [r4]
- adds r0, r5, 0
- bl sub_8043F44
- adds r0, r6, 0
- bl sub_8043DFC
- adds r0, r5, 0
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _0807B598
- ldrb r0, [r4]
- ldr r1, _0807B590 @ =gBattlePartyID
- lsls r4, r5, 1
- adds r1, r4, r1
- ldrh r2, [r1]
- movs r1, 0x64
- muls r1, r2
- ldr r2, _0807B594 @ =gEnemyParty
- adds r1, r2
- movs r2, 0
- bl sub_8045A5C
- b _0807B5E4
- .align 2, 0
-_0807B58C: .4byte gHealthboxIDs
-_0807B590: .4byte gBattlePartyID
-_0807B594: .4byte gEnemyParty
-_0807B598:
- ldr r0, _0807B5C0 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0807B5CC
- ldrb r0, [r4]
- ldr r1, _0807B5C4 @ =gBattlePartyID
- lsls r4, r5, 1
- adds r1, r4, r1
- ldrh r2, [r1]
- movs r1, 0x64
- muls r1, r2
- ldr r2, _0807B5C8 @ =gPlayerParty
- adds r1, r2
- movs r2, 0xA
- bl sub_8045A5C
- b _0807B5E4
- .align 2, 0
-_0807B5C0: .4byte gBattleTypeFlags
-_0807B5C4: .4byte gBattlePartyID
-_0807B5C8: .4byte gPlayerParty
-_0807B5CC:
- ldrb r0, [r4]
- ldr r1, _0807B610 @ =gBattlePartyID
- lsls r4, r5, 1
- adds r1, r4, r1
- ldrh r2, [r1]
- movs r1, 0x64
- muls r1, r2
- ldr r2, _0807B614 @ =gPlayerParty
- adds r1, r2
- movs r2, 0
- bl sub_8045A5C
-_0807B5E4:
- adds r0, r5, 0
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- beq _0807B600
- adds r0, r5, 0
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _0807B61C
-_0807B600:
- ldr r0, _0807B618 @ =gHealthboxIDs
- adds r0, r5, r0
- ldrb r0, [r0]
- movs r1, 0x1
- bl nullsub_11
- b _0807B628
- .align 2, 0
-_0807B610: .4byte gBattlePartyID
-_0807B614: .4byte gPlayerParty
-_0807B618: .4byte gHealthboxIDs
-_0807B61C:
- ldr r0, _0807B654 @ =gHealthboxIDs
- adds r0, r5, r0
- ldrb r0, [r0]
- movs r1, 0
- bl nullsub_11
-_0807B628:
- adds r0, r5, 0
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _0807B660
- ldr r0, _0807B658 @ =gBattlePartyID
- adds r0, r4, r0
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0807B65C @ =gEnemyParty
- adds r0, r1
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _0807B68A
- adds r0, r6, 0
- bl sub_8043DB0
- b _0807B68A
- .align 2, 0
-_0807B654: .4byte gHealthboxIDs
-_0807B658: .4byte gBattlePartyID
-_0807B65C: .4byte gEnemyParty
-_0807B660:
- ldr r0, _0807B690 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0807B68A
- ldr r0, _0807B694 @ =gBattlePartyID
- adds r0, r4, r0
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0807B698 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _0807B68A
- adds r0, r6, 0
- bl sub_8043DB0
-_0807B68A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0807B690: .4byte gBattleTypeFlags
-_0807B694: .4byte gBattlePartyID
-_0807B698: .4byte gPlayerParty
- thumb_func_end sub_807B508
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/shop.s b/asm/shop.s
deleted file mode 100644
index a341e90a1..000000000
--- a/asm/shop.s
+++ /dev/null
@@ -1,2613 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80B33D0
-sub_80B33D0: @ 80B33D0
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r6, r0, 0
- adds r4, r1, 0
- mov r8, r2
- lsls r4, 22
- ldr r5, _080B3418 @ =gBGTilemapBuffers + 0x1800
- lsls r6, 17
- asrs r6, 16
- movs r0, 0x80
- lsls r0, 15
- adds r4, r0
- asrs r4, 16
- adds r0, r5, 0
- adds r1, r6, 0
- adds r2, r4, 0
- mov r3, r8
- bl BuyMenuDrawMapMetatileLayer
- ldr r0, _080B341C @ =0xfffff800
- adds r5, r0
- movs r0, 0x8
- add r8, r0
- adds r0, r5, 0
- adds r1, r6, 0
- adds r2, r4, 0
- mov r3, r8
- bl BuyMenuDrawMapMetatileLayer
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3418: .4byte gBGTilemapBuffers + 0x1800
-_080B341C: .4byte 0xfffff800
- thumb_func_end sub_80B33D0
-
- thumb_func_start sub_80B3420
-sub_80B3420: @ 80B3420
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl GetXYCoordsOneStepInFrontOfPlayer
- mov r1, sp
- mov r0, sp
- ldrh r0, [r0]
- subs r0, 0x3
- strh r0, [r1]
- ldrh r0, [r4]
- subs r0, 0x3
- strh r0, [r4]
- movs r1, 0
- ldr r0, _080B34A8 @ =0x000001ff
- mov r10, r0
- ldr r2, _080B34AC @ =gMapHeader
- mov r9, r2
-_080B3452:
- movs r4, 0
- lsls r1, 16
- mov r8, r1
- asrs r7, r1, 16
-_080B345A:
- mov r0, sp
- movs r3, 0
- ldrsh r0, [r0, r3]
- lsls r4, 16
- asrs r6, r4, 16
- adds r0, r6
- mov r2, sp
- movs r3, 0x2
- ldrsh r1, [r2, r3]
- adds r1, r7
- bl MapGridGetMetatileIdAt
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r7, 0x5
- beq _080B34D0
- cmp r6, 0x6
- beq _080B34D0
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- adds r0, r6
- mov r2, sp
- movs r3, 0x2
- ldrsh r1, [r2, r3]
- adds r1, r7
- bl MapGridGetMetatileLayerTypeAt
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r5, r10
- bhi _080B34B0
- mov r1, r9
- ldr r0, [r1]
- ldr r0, [r0, 0x10]
- lsls r1, r5, 4
- ldr r2, [r0, 0xC]
- adds r2, r1
- b _080B34C0
- .align 2, 0
-_080B34A8: .4byte 0x000001ff
-_080B34AC: .4byte gMapHeader
-_080B34B0:
- mov r2, r9
- ldr r0, [r2]
- ldr r1, [r0, 0x14]
- ldr r2, _080B34CC @ =0xfffffe00
- adds r0, r5, r2
- lsls r0, 4
- ldr r2, [r1, 0xC]
- adds r2, r0
-_080B34C0:
- adds r0, r6, 0
- adds r1, r7, 0
- bl BuyMenuDrawMapMetatile
- b _080B3506
- .align 2, 0
-_080B34CC: .4byte 0xfffffe00
-_080B34D0:
- cmp r5, r10
- bhi _080B34EC
- asrs r0, r4, 16
- mov r3, r9
- ldr r1, [r3]
- ldr r1, [r1, 0x10]
- lsls r3, r5, 4
- ldr r2, [r1, 0xC]
- adds r2, r3
- mov r3, r8
- asrs r1, r3, 16
- bl sub_80B33D0
- b _080B3506
-_080B34EC:
- asrs r0, r4, 16
- mov r2, r9
- ldr r1, [r2]
- ldr r2, [r1, 0x14]
- ldr r3, _080B354C @ =0xfffffe00
- adds r1, r5, r3
- lsls r1, 4
- ldr r2, [r2, 0xC]
- adds r2, r1
- mov r3, r8
- asrs r1, r3, 16
- bl sub_80B33D0
-_080B3506:
- cmp r7, 0
- bne _080B3520
- asrs r1, r4, 16
- cmp r1, 0
- beq _080B3520
- cmp r1, 0x6
- beq _080B3520
- lsls r1, 17
- asrs r1, 16
- ldr r0, _080B3550 @ =gBGTilemapBuffers + 0x800
- movs r2, 0x40
- bl sub_80B32EC
-_080B3520:
- movs r1, 0x80
- lsls r1, 9
- adds r0, r4, r1
- lsrs r4, r0, 16
- asrs r0, 16
- cmp r0, 0x6
- ble _080B345A
- adds r0, r1, 0
- add r0, r8
- lsrs r1, r0, 16
- asrs r0, 16
- cmp r0, 0x5
- ble _080B3452
- 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
-_080B354C: .4byte 0xfffffe00
-_080B3550: .4byte gBGTilemapBuffers + 0x800
- thumb_func_end sub_80B3420
-
- thumb_func_start BuyMenuDrawMapGraphics
-BuyMenuDrawMapGraphics: @ 80B3554
- push {lr}
- bl sub_80F9020
- bl sub_80B356C
- bl sub_80B368C
- bl sub_80B3420
- pop {r0}
- bx r0
- thumb_func_end BuyMenuDrawMapGraphics
-
- thumb_func_start sub_80B356C
-sub_80B356C: @ 80B356C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- movs r0, 0
- mov r8, r0
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl GetXYCoordsOneStepInFrontOfPlayer
- bl PlayerGetZCoord
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- movs r5, 0
- ldr r2, _080B3674 @ =gUnknown_020386A4
- movs r1, 0x10
-_080B3598:
- lsls r0, r5, 3
- adds r0, r2
- strh r1, [r0]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0xF
- bls _080B3598
- movs r5, 0
- ldr r7, _080B3678 @ =gUnknown_020386AA
- subs r1, r7, 0x6
- mov r9, r1
-_080B35B0:
- movs r4, 0
- adds r2, r5, 0x1
- mov r10, r2
-_080B35B6:
- mov r1, sp
- ldr r3, _080B367C @ =0x0000fffd
- adds r0, r3, 0
- ldrh r1, [r1]
- adds r0, r1
- adds r0, r4
- lsls r0, 16
- lsrs r0, 16
- ldr r2, _080B3680 @ =0x0000fffe
- adds r1, r2, 0
- mov r3, sp
- ldrh r3, [r3, 0x2]
- adds r1, r3
- adds r1, r5
- lsls r1, 16
- lsrs r1, 16
- ldr r2, [sp, 0x4]
- bl GetFieldObjectIdByXYZ
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x10
- beq _080B3650
- mov r0, r8
- lsls r3, r0, 3
- mov r1, r9
- adds r0, r3, r1
- movs r6, 0
- strh r2, [r0]
- mov r0, r9
- adds r0, 0x2
- adds r0, r3, r0
- strh r4, [r0]
- ldr r1, _080B3684 @ =gUnknown_020386A8
- adds r0, r3, r1
- strh r5, [r0]
- ldr r1, _080B3688 @ =gMapObjects
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- adds r2, r0, r1
- ldrb r0, [r2, 0x18]
- lsls r0, 28
- lsrs r0, 28
- cmp r0, 0x1
- bne _080B3616
- adds r0, r3, r7
- strh r6, [r0]
-_080B3616:
- ldrb r0, [r2, 0x18]
- lsls r0, 28
- lsrs r0, 28
- cmp r0, 0x2
- bne _080B3626
- adds r1, r3, r7
- movs r0, 0x1
- strh r0, [r1]
-_080B3626:
- ldrb r0, [r2, 0x18]
- lsls r0, 28
- lsrs r0, 28
- cmp r0, 0x3
- bne _080B3636
- adds r1, r3, r7
- movs r0, 0x2
- strh r0, [r1]
-_080B3636:
- ldrb r0, [r2, 0x18]
- lsls r0, 28
- lsrs r0, 28
- cmp r0, 0x4
- bne _080B3646
- adds r1, r3, r7
- movs r0, 0x3
- strh r0, [r1]
-_080B3646:
- mov r0, r8
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
-_080B3650:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x6
- bls _080B35B6
- mov r2, r10
- lsls r0, r2, 24
- lsrs r5, r0, 24
- cmp r5, 0x4
- bls _080B35B0
- 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
-_080B3674: .4byte gUnknown_020386A4
-_080B3678: .4byte gUnknown_020386AA
-_080B367C: .4byte 0x0000fffd
-_080B3680: .4byte 0x0000fffe
-_080B3684: .4byte gUnknown_020386A8
-_080B3688: .4byte gMapObjects
- thumb_func_end sub_80B356C
-
- thumb_func_start sub_80B368C
-sub_80B368C: @ 80B368C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- movs r5, 0
- ldr r6, _080B3710 @ =gUnknown_020386A4
- adds r0, r6, 0x6
- mov r8, r0
- ldr r7, _080B3714 @ =gMapObjects
-_080B369E:
- lsls r4, r5, 3
- adds r1, r4, r6
- movs r2, 0
- ldrsh r0, [r1, r2]
- cmp r0, 0x10
- beq _080B36F8
- adds r1, r0, 0
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- ldrb r0, [r0, 0x5]
- adds r1, r6, 0x2
- adds r1, r4, r1
- ldrh r2, [r1]
- lsls r2, 4
- adds r2, 0x8
- lsls r2, 16
- asrs r2, 16
- adds r1, r6, 0x4
- adds r1, r4, r1
- ldrh r3, [r1]
- lsls r3, 20
- movs r1, 0x80
- lsls r1, 14
- adds r3, r1
- asrs r3, 16
- movs r1, 0x2
- str r1, [sp]
- ldr r1, _080B3718 @ =SpriteCallbackDummy
- bl AddPseudoFieldObject
- lsls r0, 24
- lsrs r0, 24
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _080B371C @ =gSprites
- adds r2, r0
- mov r1, r8
- adds r0, r4, r1
- ldrb r1, [r0]
- adds r0, r2, 0
- bl StartSpriteAnim
-_080B36F8:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0xF
- bls _080B369E
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3710: .4byte gUnknown_020386A4
-_080B3714: .4byte gMapObjects
-_080B3718: .4byte SpriteCallbackDummy
-_080B371C: .4byte gSprites
- thumb_func_end sub_80B368C
-
- thumb_func_start sub_80B3720
-sub_80B3720: @ 80B3720
- push {r4-r6,lr}
- movs r1, 0
- ldr r6, _080B3754 @ =gBGTilemapBuffers + 0x800
- ldr r5, _080B3758 @ =0x000003ff
- ldr r4, _080B375C @ =0x02018000
- ldr r0, _080B3760 @ =0x0000c3e0
- adds r3, r0, 0
-_080B372E:
- lsls r0, r1, 16
- asrs r2, r0, 16
- lsls r1, r2, 1
- adds r0, r1, r4
- ldrh r0, [r0]
- cmp r0, 0
- beq _080B3742
- adds r1, r6
- adds r0, r3
- strh r0, [r1]
-_080B3742:
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- asrs r0, 16
- cmp r0, r5
- ble _080B372E
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3754: .4byte gBGTilemapBuffers + 0x800
-_080B3758: .4byte 0x000003ff
-_080B375C: .4byte 0x02018000
-_080B3760: .4byte 0x0000c3e0
- thumb_func_end sub_80B3720
-
- thumb_func_start sub_80B3764
-sub_80B3764: @ 80B3764
- push {r4,r5,lr}
- sub sp, 0x8
- adds r4, r0, 0
- adds r5, r1, 0
- bl sub_80B3720
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0
- bl sub_80B39D0
- ldr r0, _080B3798 @ =gUnknown_03000708
- ldrb r0, [r0, 0x9]
- str r0, [sp]
- movs r0, 0xF
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x2
- movs r3, 0x8
- bl InitMenu
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3798: .4byte gUnknown_03000708
- thumb_func_end sub_80B3764
-
- thumb_func_start sub_80B379C
-sub_80B379C: @ 80B379C
- push {r4-r7,lr}
- movs r1, 0
- ldr r0, _080B37E0 @ =gBGTilemapBuffers + 0x800
- mov r12, r0
- ldr r7, _080B37E4 @ =0x02018300
- ldr r0, _080B37E8 @ =0x0000c3e0
- adds r6, r0, 0
-_080B37AA:
- movs r2, 0
- adds r0, r1, 0
- adds r0, 0xC
- adds r5, r1, 0x1
- lsls r4, r0, 5
- lsls r3, r1, 5
-_080B37B6:
- adds r1, r4, r2
- lsls r1, 1
- add r1, r12
- adds r0, r3, r2
- lsls r0, 1
- adds r0, r7
- ldrh r0, [r0]
- adds r0, r6, r0
- strh r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0xD
- bls _080B37B6
- lsls r0, r5, 16
- lsrs r1, r0, 16
- cmp r1, 0x7
- bls _080B37AA
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B37E0: .4byte gBGTilemapBuffers + 0x800
-_080B37E4: .4byte 0x02018300
-_080B37E8: .4byte 0x0000c3e0
- thumb_func_end sub_80B379C
-
- thumb_func_start sub_80B37EC
-sub_80B37EC: @ 80B37EC
- push {lr}
- bl sub_80B3A70
- pop {r0}
- bx r0
- thumb_func_end sub_80B37EC
-
- thumb_func_start sub_80B37F8
-sub_80B37F8: @ 80B37F8
- push {r4-r6,lr}
- sub sp, 0x8
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- ldr r1, _080B3884 @ =gUnknown_03000708
- ldrb r0, [r1, 0xB]
- ldrb r2, [r1, 0x9]
- adds r0, r2
- ldr r1, [r1, 0x4]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- bl ItemId_GetPrice
- adds r4, r0, 0
- movs r0, 0x1
- bl GetPriceReduction
- lsls r4, 16
- lsrs r4, 16
- lsls r0, 24
- lsrs r0, 24
- asrs r4, r0
- ldr r0, _080B3888 @ =gTasks
- lsls r5, r6, 2
- adds r5, r6
- lsls r5, 3
- adds r5, r0
- movs r1, 0xA
- ldrsh r0, [r5, r1]
- muls r0, r4
- movs r1, 0x6
- movs r2, 0x6
- movs r3, 0xB
- bl sub_80B7A94
- ldr r0, _080B388C @ =gStringVar1
- movs r1, 0xFC
- strb r1, [r0]
- movs r1, 0x14
- strb r1, [r0, 0x1]
- movs r1, 0x6
- strb r1, [r0, 0x2]
- adds r0, 0x3
- movs r2, 0xA
- ldrsh r1, [r5, r2]
- movs r2, 0x1
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r0, _080B3890 @ =gOtherText_xString1
- movs r1, 0x1
- movs r2, 0xB
- bl MenuPrint
- ldr r0, _080B3894 @ =gBGTilemapBuffers + 0x800
- movs r1, 0x2
- str r1, [sp]
- ldr r1, _080B3898 @ =0x0000c3e1
- str r1, [sp, 0x4]
- movs r1, 0x1
- movs r2, 0xB
- movs r3, 0xC
- bl sub_80A3FA0
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3884: .4byte gUnknown_03000708
-_080B3888: .4byte gTasks
-_080B388C: .4byte gStringVar1
-_080B3890: .4byte gOtherText_xString1
-_080B3894: .4byte gBGTilemapBuffers + 0x800
-_080B3898: .4byte 0x0000c3e1
- thumb_func_end sub_80B37F8
-
- thumb_func_start sub_80B389C
-sub_80B389C: @ 80B389C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- mov r8, r2
- lsls r0, 16
- lsrs r2, r0, 16
- mov r9, r2
- lsls r1, 24
- lsrs r4, r1, 24
- ldr r5, _080B392C @ =gStringVar1
- mov r0, r8
- cmp r0, 0
- beq _080B38C8
- movs r0, 0xFC
- strb r0, [r5]
- movs r0, 0x1
- strb r0, [r5, 0x1]
- movs r0, 0x2
- strb r0, [r5, 0x2]
- adds r5, 0x3
-_080B38C8:
- adds r0, r2, 0
- adds r1, r5, 0
- bl CopyItemName
- ldr r6, _080B392C @ =gStringVar1
- lsls r7, r4, 3
- movs r0, 0x1
- str r0, [sp]
- adds r0, r6, 0
- movs r1, 0x70
- adds r2, r7, 0
- movs r3, 0x58
- bl sub_8072A18
- adds r5, r6, 0
- mov r0, r8
- cmp r0, 0
- beq _080B38EE
- adds r5, r6, 0x3
-_080B38EE:
- mov r0, r9
- bl ItemId_GetPrice
- adds r4, r0, 0
- movs r0, 0x1
- bl GetPriceReduction
- lsls r4, 16
- lsrs r4, 16
- lsls r0, 24
- lsrs r0, 24
- asrs r4, r0
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x4
- bl sub_80B79F8
- adds r0, r6, 0
- movs r1, 0xCA
- adds r2, r7, 0
- movs r3, 0x1
- bl MenuPrint_PixelCoords
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B392C: .4byte gStringVar1
- thumb_func_end sub_80B389C
-
- thumb_func_start sub_80B3930
-sub_80B3930: @ 80B3930
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- adds r4, r2, 0
- lsls r0, 16
- lsrs r3, r0, 16
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- ldr r2, _080B39A0 @ =gStringVar1
- cmp r4, 0
- beq _080B395A
- movs r0, 0xFC
- strb r0, [r2]
- movs r0, 0x1
- strb r0, [r2, 0x1]
- movs r0, 0x2
- strb r0, [r2, 0x2]
- adds r2, 0x3
-_080B395A:
- lsls r6, r3, 5
- ldr r0, _080B39A4 @ =gDecorations + 0x1
- mov r8, r0
- adds r1, r6, r0
- adds r0, r2, 0
- bl StringCopy
- ldr r5, _080B39A0 @ =gStringVar1
- mov r0, r9
- lsls r7, r0, 3
- movs r0, 0x1
- str r0, [sp]
- adds r0, r5, 0
- movs r1, 0x70
- adds r2, r7, 0
- movs r3, 0x58
- bl sub_8072A18
- adds r2, r5, 0
- cmp r4, 0
- beq _080B3986
- adds r2, r5, 0x3
-_080B3986:
- mov r0, r8
- subs r0, 0x1
- adds r3, r6, r0
- ldrh r1, [r3, 0x14]
- ldr r0, _080B39A8 @ =0x00002710
- cmp r1, r0
- bne _080B39AC
- movs r0, 0x19
- mov r1, r9
- adds r2, r4, 0
- bl sub_80B7B34
- b _080B39C2
- .align 2, 0
-_080B39A0: .4byte gStringVar1
-_080B39A4: .4byte gDecorations + 0x1
-_080B39A8: .4byte 0x00002710
-_080B39AC:
- ldrh r1, [r3, 0x14]
- adds r0, r2, 0
- movs r2, 0x4
- bl sub_80B79F8
- adds r0, r5, 0
- movs r1, 0xCA
- adds r2, r7, 0
- movs r3, 0x1
- bl MenuPrint_PixelCoords
-_080B39C2:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80B3930
-
- thumb_func_start sub_80B39D0
-sub_80B39D0: @ 80B39D0
- push {r4-r6,lr}
- adds r6, r1, 0
- adds r5, r2, 0
- b _080B3A1A
-_080B39D8:
- ldrb r0, [r1, 0xC]
- cmp r0, 0
- bne _080B39FC
- ldrb r0, [r1, 0xB]
- adds r0, r4
- ldr r1, [r1, 0x4]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- lsls r1, r4, 25
- movs r2, 0x80
- lsls r2, 18
- adds r1, r2
- lsrs r1, 24
- adds r2, r5, 0
- bl sub_80B389C
- b _080B3A18
-_080B39FC:
- ldrb r0, [r1, 0xB]
- adds r0, r4
- ldr r1, [r1, 0x4]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- lsls r1, r4, 25
- movs r2, 0x80
- lsls r2, 18
- adds r1, r2
- lsrs r1, 24
- adds r2, r5, 0
- bl sub_80B3930
-_080B3A18:
- adds r0, r4, 0x1
-_080B3A1A:
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r6
- bgt _080B3A2E
- ldr r1, _080B3A68 @ =gUnknown_03000708
- ldrb r0, [r1, 0xB]
- adds r0, r4
- ldrb r2, [r1, 0x8]
- cmp r0, r2
- blt _080B39D8
-_080B3A2E:
- cmp r4, 0x8
- beq _080B3A60
- ldr r1, _080B3A68 @ =gUnknown_03000708
- ldrb r0, [r1, 0xB]
- adds r0, r4
- ldrb r1, [r1, 0x8]
- cmp r0, r1
- bne _080B3A60
- lsls r3, r4, 1
- adds r4, r3, 0x2
- lsls r4, 24
- lsrs r4, 24
- adds r3, 0x3
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0xE
- adds r1, r4, 0
- movs r2, 0x1C
- bl MenuFillWindowRectWithBlankTile
- ldr r0, _080B3A6C @ =gOtherText_CancelNoTerminator
- movs r1, 0xE
- adds r2, r4, 0
- bl MenuPrint
-_080B3A60:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3A68: .4byte gUnknown_03000708
-_080B3A6C: .4byte gOtherText_CancelNoTerminator
- thumb_func_end sub_80B39D0
-
- thumb_func_start sub_80B3A70
-sub_80B3A70: @ 80B3A70
- push {r4,lr}
- sub sp, 0x8
- ldr r2, _080B3A9C @ =gUnknown_03000708
- ldrb r1, [r2, 0xB]
- ldrb r0, [r2, 0x9]
- adds r0, r1, r0
- ldrb r1, [r2, 0x8]
- cmp r0, r1
- beq _080B3ACC
- ldrb r4, [r2, 0xC]
- cmp r4, 0
- bne _080B3AA0
- ldr r1, [r2, 0x4]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- bl ItemId_GetDescription
- movs r1, 0x30
- str r1, [sp]
- str r4, [sp, 0x4]
- b _080B3ABA
- .align 2, 0
-_080B3A9C: .4byte gUnknown_03000708
-_080B3AA0:
- ldr r1, _080B3AC8 @ =gDecorations
- ldr r2, [r2, 0x4]
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- lsls r0, 5
- adds r1, 0x18
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x30
- str r1, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
-_080B3ABA:
- movs r1, 0x4
- movs r2, 0x68
- movs r3, 0x68
- bl sub_8072AB0
- b _080B3AE0
- .align 2, 0
-_080B3AC8: .4byte gDecorations
-_080B3ACC:
- ldr r0, _080B3AE8 @ =gOtherText_QuitShopping
- movs r1, 0x30
- str r1, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- movs r1, 0x4
- movs r2, 0x68
- movs r3, 0x68
- bl sub_8072AB0
-_080B3AE0:
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3AE8: .4byte gOtherText_QuitShopping
- thumb_func_end sub_80B3A70
-
- thumb_func_start sub_80B3AEC
-sub_80B3AEC: @ 80B3AEC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _080B3B5C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080B3B06
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080B3B7A
-_080B3B06:
- ldr r4, _080B3B60 @ =gUnknown_03000708
- ldrb r1, [r4, 0x9]
- adds r0, r1, 0
- movs r2, 0
- bl sub_80B39D0
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r4, 0xB]
- ldrb r1, [r4, 0x9]
- adds r0, r1
- ldr r1, [r4, 0x4]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0x4
- bne _080B3B74
- ldr r0, _080B3B64 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- movs r2, 0xA
- ldrsh r0, [r1, r2]
- cmp r0, 0x9
- ble _080B3B74
- movs r0, 0xC
- movs r1, 0x1
- bl AddBagItem
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B3B74
- ldr r1, _080B3B68 @ =gOtherText_FreePremierBall
- ldr r2, _080B3B6C @ =sub_80B4378
- ldr r3, _080B3B70 @ =0x0000c3e1
- adds r0, r5, 0
- bl DisplayItemMessageOnField
- b _080B3B7A
- .align 2, 0
-_080B3B5C: .4byte gMain
-_080B3B60: .4byte gUnknown_03000708
-_080B3B64: .4byte gTasks
-_080B3B68: .4byte gOtherText_FreePremierBall
-_080B3B6C: .4byte sub_80B4378
-_080B3B70: .4byte 0x0000c3e1
-_080B3B74:
- adds r0, r5, 0
- bl sub_80B4378
-_080B3B7A:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80B3AEC
-
- thumb_func_start sub_80B3B80
-sub_80B3B80: @ 80B3B80
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x26
- bl IncrementGameStat
- ldr r5, _080B3BC0 @ =gSaveBlock1 + 0x490
- ldr r0, _080B3BC4 @ =gUnknown_020386A0
- ldr r1, [r0]
- adds r0, r5, 0
- bl sub_80B79E0
- movs r0, 0x5F
- bl PlaySE
- ldr r0, [r5]
- movs r1, 0
- movs r2, 0
- bl sub_80B7BEC
- ldr r1, _080B3BC8 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080B3BCC @ =sub_80B3AEC
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3BC0: .4byte gSaveBlock1 + 0x490
-_080B3BC4: .4byte gUnknown_020386A0
-_080B3BC8: .4byte gTasks
-_080B3BCC: .4byte sub_80B3AEC
- thumb_func_end sub_80B3B80
-
- thumb_func_start sub_80B3BD0
-sub_80B3BD0: @ 80B3BD0
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080B3BF0 @ =gUnknown_03000708
- ldrb r1, [r0, 0x9]
- adds r0, r1, 0
- movs r2, 0
- bl sub_80B39D0
- adds r0, r4, 0
- bl sub_80B4378
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3BF0: .4byte gUnknown_03000708
- thumb_func_end sub_80B3BD0
-
- thumb_func_start sub_80B3BF4
-sub_80B3BF4: @ 80B3BF4
- push {r4,r5,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r5, r0, 24
- movs r0, 0x7
- movs r1, 0x8
- movs r2, 0xD
- movs r3, 0xD
- bl MenuZeroFillWindowRect
- ldr r0, _080B3C7C @ =gBGTilemapBuffers + 0x800
- movs r1, 0x4
- str r1, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- movs r1, 0x8
- movs r2, 0x9
- movs r3, 0x4
- bl sub_80A3FA0
- bl sub_80B379C
- bl sub_80B3420
- ldr r0, _080B3C80 @ =gSaveBlock1
- movs r1, 0x92
- lsls r1, 3
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _080B3C84 @ =gUnknown_020386A0
- ldr r1, [r1]
- bl IsEnoughMoney
- lsls r0, 24
- cmp r0, 0
- beq _080B3D18
- ldr r4, _080B3C88 @ =gUnknown_03000708
- ldrb r0, [r4, 0xC]
- cmp r0, 0
- bne _080B3CAC
- ldrb r0, [r4, 0xB]
- ldrb r1, [r4, 0x9]
- adds r0, r1
- ldr r1, [r4, 0x4]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- ldr r2, _080B3C8C @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r2
- ldrh r1, [r1, 0xA]
- bl AddBagItem
- lsls r0, 24
- cmp r0, 0
- beq _080B3C9C
- ldr r1, _080B3C90 @ =gOtherText_HereYouGo
- ldr r2, _080B3C94 @ =sub_80B3B80
- ldr r3, _080B3C98 @ =0x0000c3e1
- adds r0, r5, 0
- bl DisplayItemMessageOnField
- adds r0, r5, 0
- bl sub_80B4470
- b _080B3D24
- .align 2, 0
-_080B3C7C: .4byte gBGTilemapBuffers + 0x800
-_080B3C80: .4byte gSaveBlock1
-_080B3C84: .4byte gUnknown_020386A0
-_080B3C88: .4byte gUnknown_03000708
-_080B3C8C: .4byte gTasks
-_080B3C90: .4byte gOtherText_HereYouGo
-_080B3C94: .4byte sub_80B3B80
-_080B3C98: .4byte 0x0000c3e1
-_080B3C9C:
- ldr r1, _080B3CA4 @ =gOtherText_NoRoomFor
- ldr r2, _080B3CA8 @ =sub_80B3BD0
- b _080B3CD8
- .align 2, 0
-_080B3CA4: .4byte gOtherText_NoRoomFor
-_080B3CA8: .4byte sub_80B3BD0
-_080B3CAC:
- ldrb r0, [r4, 0xB]
- ldrb r1, [r4, 0x9]
- adds r0, r1
- ldr r1, [r4, 0x4]
- lsls r0, 1
- adds r0, r1
- ldrb r0, [r0]
- bl IsThereStorageSpaceForDecoration
- lsls r0, 24
- cmp r0, 0
- beq _080B3CF0
- ldrb r0, [r4, 0xC]
- cmp r0, 0x1
- bne _080B3CD4
- ldr r1, _080B3CD0 @ =gOtherText_HereYouGo2
- b _080B3CD6
- .align 2, 0
-_080B3CD0: .4byte gOtherText_HereYouGo2
-_080B3CD4:
- ldr r1, _080B3CE4 @ =gOtherText_HereYouGo3
-_080B3CD6:
- ldr r2, _080B3CE8 @ =sub_80B3B80
-_080B3CD8:
- ldr r3, _080B3CEC @ =0x0000c3e1
- adds r0, r5, 0
- bl DisplayItemMessageOnField
- b _080B3D24
- .align 2, 0
-_080B3CE4: .4byte gOtherText_HereYouGo3
-_080B3CE8: .4byte sub_80B3B80
-_080B3CEC: .4byte 0x0000c3e1
-_080B3CF0:
- ldr r4, _080B3D08 @ =gStringVar4
- ldr r1, _080B3D0C @ =gOtherText_SpaceForIsFull
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r2, _080B3D10 @ =sub_80B3BD0
- ldr r3, _080B3D14 @ =0x0000c3e1
- adds r0, r5, 0
- adds r1, r4, 0
- bl DisplayItemMessageOnField
- b _080B3D24
- .align 2, 0
-_080B3D08: .4byte gStringVar4
-_080B3D0C: .4byte gOtherText_SpaceForIsFull
-_080B3D10: .4byte sub_80B3BD0
-_080B3D14: .4byte 0x0000c3e1
-_080B3D18:
- ldr r1, _080B3D2C @ =gOtherText_NotEnoughMoney
- ldr r2, _080B3D30 @ =sub_80B3BD0
- ldr r3, _080B3D34 @ =0x0000c3e1
- adds r0, r5, 0
- bl DisplayItemMessageOnField
-_080B3D24:
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3D2C: .4byte gOtherText_NotEnoughMoney
-_080B3D30: .4byte sub_80B3BD0
-_080B3D34: .4byte 0x0000c3e1
- thumb_func_end sub_80B3BF4
-
- thumb_func_start sub_80B3D38
-sub_80B3D38: @ 80B3D38
- push {r4,lr}
- sub sp, 0x8
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x7
- movs r1, 0x8
- movs r2, 0x1
- bl DisplayYesNoMenu
- ldr r0, _080B3D70 @ =gBGTilemapBuffers + 0x800
- movs r1, 0x4
- str r1, [sp]
- ldr r1, _080B3D74 @ =0x0000c3e1
- str r1, [sp, 0x4]
- movs r1, 0x8
- movs r2, 0x9
- movs r3, 0x4
- bl sub_80A3FA0
- ldr r1, _080B3D78 @ =gUnknown_083CC708
- adds r0, r4, 0
- bl DoYesNoFuncWithChoice
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3D70: .4byte gBGTilemapBuffers + 0x800
-_080B3D74: .4byte 0x0000c3e1
-_080B3D78: .4byte gUnknown_083CC708
- thumb_func_end sub_80B3D38
-
- thumb_func_start sub_80B3D7C
-sub_80B3D7C: @ 80B3D7C
- push {r4,lr}
- sub sp, 0x8
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080B3DC0 @ =gUnknown_03000708
- ldrb r1, [r0, 0x9]
- adds r0, r1, 0
- movs r2, 0
- bl sub_80B39D0
- movs r0, 0x7
- movs r1, 0x8
- movs r2, 0xD
- movs r3, 0xD
- bl MenuZeroFillWindowRect
- ldr r0, _080B3DC4 @ =gBGTilemapBuffers + 0x800
- movs r1, 0x4
- str r1, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- movs r1, 0x8
- movs r2, 0x9
- movs r3, 0x4
- bl sub_80A3FA0
- adds r0, r4, 0
- bl sub_80B4378
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3DC0: .4byte gUnknown_03000708
-_080B3DC4: .4byte gBGTilemapBuffers + 0x800
- thumb_func_end sub_80B3D7C
-
- thumb_func_start sub_80B3DC8
-sub_80B3DC8: @ 80B3DC8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r6, r0, 24
- adds r4, r6, 0
- ldr r7, _080B3EA8 @ =gUnknown_03000708
- ldrb r1, [r7, 0xD]
- adds r0, r6, 0
- bl sub_80A52C4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B3DEE
- adds r0, r6, 0
- bl sub_80B37F8
-_080B3DEE:
- ldr r0, _080B3EAC @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080B3ED8
- ldr r0, _080B3EB0 @ =gUnknown_020386A0
- mov r8, r0
- ldrb r0, [r7, 0xB]
- ldrb r1, [r7, 0x9]
- adds r0, r1
- ldr r1, [r7, 0x4]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- bl ItemId_GetPrice
- adds r4, r0, 0
- movs r0, 0x1
- bl GetPriceReduction
- lsls r4, 16
- lsrs r4, 16
- lsls r0, 24
- lsrs r0, 24
- asrs r4, r0
- ldr r0, _080B3EB4 @ =gTasks
- lsls r5, r6, 2
- adds r5, r6
- lsls r5, 3
- adds r5, r0
- movs r1, 0xA
- ldrsh r0, [r5, r1]
- muls r0, r4
- mov r2, r8
- str r0, [r2]
- movs r0, 0
- movs r1, 0xA
- movs r2, 0xD
- movs r3, 0xD
- bl MenuZeroFillWindowRect
- ldr r0, _080B3EB8 @ =gBGTilemapBuffers + 0x800
- movs r1, 0x2
- str r1, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- movs r1, 0x1
- movs r2, 0xB
- movs r3, 0xC
- bl sub_80A3FA0
- bl sub_80B379C
- bl sub_80B3420
- ldrb r0, [r7, 0xB]
- ldrb r1, [r7, 0x9]
- adds r0, r1
- ldr r1, [r7, 0x4]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- ldr r1, _080B3EBC @ =gStringVar1
- bl CopyItemName
- ldr r0, _080B3EC0 @ =gStringVar2
- movs r2, 0xA
- ldrsh r1, [r5, r2]
- movs r2, 0
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r0, _080B3EC4 @ =gStringVar3
- mov r2, r8
- ldr r1, [r2]
- movs r2, 0
- movs r3, 0x8
- bl ConvertIntToDecimalStringN
- ldr r4, _080B3EC8 @ =gStringVar4
- ldr r1, _080B3ECC @ =gOtherText_ThatWillBe
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r2, _080B3ED0 @ =sub_80B3D38
- ldr r3, _080B3ED4 @ =0x0000c3e1
- adds r0, r6, 0
- adds r1, r4, 0
- bl DisplayItemMessageOnField
- b _080B3EF0
- .align 2, 0
-_080B3EA8: .4byte gUnknown_03000708
-_080B3EAC: .4byte gMain
-_080B3EB0: .4byte gUnknown_020386A0
-_080B3EB4: .4byte gTasks
-_080B3EB8: .4byte gBGTilemapBuffers + 0x800
-_080B3EBC: .4byte gStringVar1
-_080B3EC0: .4byte gStringVar2
-_080B3EC4: .4byte gStringVar3
-_080B3EC8: .4byte gStringVar4
-_080B3ECC: .4byte gOtherText_ThatWillBe
-_080B3ED0: .4byte sub_80B3D38
-_080B3ED4: .4byte 0x0000c3e1
-_080B3ED8:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080B3EF0
- ldrb r1, [r7, 0x9]
- adds r0, r1, 0
- movs r2, 0
- bl sub_80B39D0
- adds r0, r4, 0
- bl sub_80B4378
-_080B3EF0:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80B3DC8
-
- thumb_func_start sub_80B3EFC
-sub_80B3EFC: @ 80B3EFC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080B3F78 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r1, 0x1
- strh r1, [r0, 0xA]
- movs r0, 0
- movs r1, 0xA
- movs r2, 0xD
- movs r3, 0xD
- bl MenuDrawTextWindow
- adds r0, r5, 0
- bl sub_80B37F8
- ldr r6, _080B3F7C @ =gUnknown_03000708
- ldrb r0, [r6, 0xB]
- ldrb r1, [r6, 0x9]
- adds r0, r1
- ldr r1, [r6, 0x4]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- bl ItemId_GetPrice
- adds r4, r0, 0
- movs r0, 0x1
- bl GetPriceReduction
- ldr r1, _080B3F80 @ =gSaveBlock1
- movs r2, 0x92
- lsls r2, 3
- adds r1, r2
- lsls r4, 16
- lsrs r4, 16
- lsls r0, 24
- lsrs r0, 24
- asrs r4, r0
- ldr r0, [r1]
- adds r1, r4, 0
- bl __udivsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x63
- bls _080B3F62
- movs r0, 0x63
-_080B3F62:
- strb r0, [r6, 0xD]
- ldr r0, _080B3F78 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, _080B3F84 @ =sub_80B3DC8
- str r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3F78: .4byte gTasks
-_080B3F7C: .4byte gUnknown_03000708
-_080B3F80: .4byte gSaveBlock1
-_080B3F84: .4byte sub_80B3DC8
- thumb_func_end sub_80B3EFC
-
- thumb_func_start sub_80B3F88
-sub_80B3F88: @ 80B3F88
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r0, _080B4020 @ =gMenuWindow
- mov r8, r0
- ldr r1, [r0, 0x28]
- ldr r3, _080B4024 @ =0x000003de
- adds r1, r3
- adds r2, r1, 0
- adds r2, 0x80
- ldr r7, [r0, 0x24]
- mov r10, r7
- ldr r0, _080B4028 @ =0x000003ff
- mov r9, r0
- movs r6, 0xD
-_080B3FAC:
- adds r3, r2, 0
- subs r3, 0x40
- str r3, [sp]
- movs r7, 0x40
- negs r7, r7
- adds r7, r1
- mov r12, r7
- adds r3, r2, 0
- adds r4, r1, 0
- movs r5, 0xE
-_080B3FC0:
- ldrh r2, [r4]
- mov r1, r9
- ands r1, r2
- mov r7, r8
- ldrh r0, [r7, 0x1A]
- adds r0, 0x1
- cmp r1, r0
- ble _080B3FD4
- adds r0, r2, 0
- adds r0, 0x3C
-_080B3FD4:
- strh r0, [r3]
- adds r3, 0x2
- adds r4, 0x2
- subs r5, 0x1
- cmp r5, 0
- bge _080B3FC0
- ldr r2, [sp]
- mov r1, r12
- subs r6, 0x1
- cmp r6, 0
- bge _080B3FAC
- ldr r1, _080B402C @ =0x00003a20
- add r1, r10
- movs r0, 0xF0
- lsls r0, 3
- adds r2, r1, r0
- ldr r3, _080B4030 @ =0x040000d4
- ldr r5, _080B4034 @ =0x800000f0
- ldr r4, _080B4038 @ =0xfffffc40
- movs r6, 0xD
-_080B3FFC:
- str r1, [r3]
- str r2, [r3, 0x4]
- str r5, [r3, 0x8]
- ldr r0, [r3, 0x8]
- adds r2, r4
- adds r1, r4
- subs r6, 0x1
- cmp r6, 0
- bge _080B3FFC
- 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
-_080B4020: .4byte gMenuWindow
-_080B4024: .4byte 0x000003de
-_080B4028: .4byte 0x000003ff
-_080B402C: .4byte 0x00003a20
-_080B4030: .4byte 0x040000d4
-_080B4034: .4byte 0x800000f0
-_080B4038: .4byte 0xfffffc40
- thumb_func_end sub_80B3F88
-
- thumb_func_start sub_80B403C
-sub_80B403C: @ 80B403C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r0, _080B40D8 @ =gMenuWindow
- mov r8, r0
- ldr r2, [r0, 0x28]
- adds r1, r2, 0
- adds r1, 0x9E
- adds r2, r1, 0
- adds r1, 0x80
- ldr r3, [r0, 0x24]
- mov r10, r3
- ldr r7, _080B40DC @ =0x000003ff
- mov r9, r7
- movs r6, 0xD
-_080B4060:
- adds r0, r2, 0
- adds r0, 0x40
- str r0, [sp]
- movs r3, 0x40
- adds r3, r1
- mov r12, r3
- adds r3, r2, 0
- adds r4, r1, 0
- movs r5, 0xE
-_080B4072:
- ldrh r2, [r4]
- mov r1, r9
- ands r1, r2
- mov r7, r8
- ldrh r0, [r7, 0x1A]
- adds r0, 0x1
- cmp r1, r0
- ble _080B4086
- adds r0, r2, 0
- subs r0, 0x3C
-_080B4086:
- strh r0, [r3]
- adds r3, 0x2
- adds r4, 0x2
- subs r5, 0x1
- cmp r5, 0
- bge _080B4072
- ldr r2, [sp]
- mov r1, r12
- subs r6, 0x1
- cmp r6, 0
- bge _080B4060
- movs r1, 0x96
- lsls r1, 4
- add r1, r10
- adds r2, r1, 0
- movs r0, 0xF0
- lsls r0, 3
- adds r1, r0
- ldr r3, _080B40E0 @ =0x040000d4
- ldr r5, _080B40E4 @ =0x800000f0
- movs r4, 0xF0
- lsls r4, 2
- movs r6, 0xD
-_080B40B4:
- str r1, [r3]
- str r2, [r3, 0x4]
- str r5, [r3, 0x8]
- ldr r0, [r3, 0x8]
- adds r2, r4
- adds r1, r4
- subs r6, 0x1
- cmp r6, 0
- bge _080B40B4
- 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
-_080B40D8: .4byte gMenuWindow
-_080B40DC: .4byte 0x000003ff
-_080B40E0: .4byte 0x040000d4
-_080B40E4: .4byte 0x800000f0
- thumb_func_end sub_80B403C
-
- thumb_func_start sub_80B40E8
-sub_80B40E8: @ 80B40E8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r7, r0, 24
- mov r8, r7
- ldr r0, _080B4134 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080B4102
- b _080B436C
-_080B4102:
- ldr r2, _080B4138 @ =gMain
- ldrh r0, [r2, 0x30]
- movs r1, 0xF0
- ands r1, r0
- cmp r1, 0x40
- bne _080B414C
- ldr r4, _080B413C @ =gUnknown_03000708
- ldrb r0, [r4, 0x9]
- cmp r0, 0
- bne _080B4140
- ldrb r0, [r4, 0xB]
- cmp r0, 0
- bne _080B411E
- b _080B436C
-_080B411E:
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r4, 0xB]
- subs r0, 0x1
- strb r0, [r4, 0xB]
- bl sub_80B3F88
- movs r0, 0
- movs r1, 0
- b _080B417A
- .align 2, 0
-_080B4134: .4byte gPaletteFade
-_080B4138: .4byte gMain
-_080B413C: .4byte gUnknown_03000708
-_080B4140:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- b _080B41A0
-_080B414C:
- cmp r1, 0x80
- bne _080B41AC
- ldr r4, _080B418C @ =gUnknown_03000708
- ldrb r0, [r4, 0x9]
- cmp r0, 0x7
- bne _080B4190
- ldrb r0, [r4, 0xB]
- ldrb r1, [r4, 0x9]
- adds r0, r1
- ldrb r1, [r4, 0x8]
- cmp r0, r1
- bne _080B4166
- b _080B436C
-_080B4166:
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r4, 0xB]
- adds r0, 0x1
- strb r0, [r4, 0xB]
- bl sub_80B403C
- movs r0, 0x7
- movs r1, 0x7
-_080B417A:
- movs r2, 0
- bl sub_80B39D0
- bl sub_80B3A70
- bl sub_80B32A4
- b _080B436C
- .align 2, 0
-_080B418C: .4byte gUnknown_03000708
-_080B4190:
- ldrb r2, [r4, 0x8]
- cmp r0, r2
- bne _080B4198
- b _080B436C
-_080B4198:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
-_080B41A0:
- bl MoveMenuCursor
- strb r0, [r4, 0x9]
- bl sub_80B3A70
- b _080B436C
-_080B41AC:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080B41B8
- b _080B4358
-_080B41B8:
- movs r0, 0x5
- bl PlaySE
- ldr r6, _080B426C @ =gUnknown_03000708
- ldrb r0, [r6, 0xB]
- ldrb r1, [r6, 0x9]
- adds r0, r1
- ldrb r1, [r6, 0x8]
- cmp r0, r1
- bne _080B41CE
- b _080B4350
-_080B41CE:
- movs r0, 0
- bl PauseVerticalScrollIndicator
- movs r0, 0x1
- bl PauseVerticalScrollIndicator
- movs r0, 0x1
- movs r1, 0x1
- bl sub_80F979C
- ldrb r1, [r6, 0x9]
- adds r0, r1, 0
- movs r2, 0x1
- bl sub_80B39D0
- bl HandleDestroyMenuCursors
- movs r0, 0
- movs r1, 0xC
- movs r2, 0xD
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- ldrb r0, [r6, 0xC]
- cmp r0, 0
- bne _080B428C
- ldr r5, _080B4270 @ =gUnknown_020386A0
- ldrb r0, [r6, 0xB]
- ldrb r1, [r6, 0x9]
- adds r0, r1
- ldr r1, [r6, 0x4]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- bl ItemId_GetPrice
- adds r4, r0, 0
- movs r0, 0x1
- bl GetPriceReduction
- lsls r4, 16
- lsrs r4, 16
- lsls r0, 24
- lsrs r0, 24
- asrs r4, r0
- str r4, [r5]
- ldr r0, _080B4274 @ =gSaveBlock1
- movs r2, 0x92
- lsls r2, 3
- adds r0, r2
- ldr r0, [r0]
- adds r1, r4, 0
- bl IsEnoughMoney
- lsls r0, 24
- cmp r0, 0
- beq _080B42BA
- ldrb r0, [r6, 0xB]
- ldrb r1, [r6, 0x9]
- adds r0, r1
- ldr r1, [r6, 0x4]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- ldr r1, _080B4278 @ =gStringVar1
- bl CopyItemName
- ldr r4, _080B427C @ =gStringVar4
- ldr r1, _080B4280 @ =gOtherText_HowManyYouWant
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r2, _080B4284 @ =sub_80B3EFC
- ldr r3, _080B4288 @ =0x0000c3e1
- adds r0, r7, 0
- adds r1, r4, 0
- bl DisplayItemMessageOnField
- b _080B436C
- .align 2, 0
-_080B426C: .4byte gUnknown_03000708
-_080B4270: .4byte gUnknown_020386A0
-_080B4274: .4byte gSaveBlock1
-_080B4278: .4byte gStringVar1
-_080B427C: .4byte gStringVar4
-_080B4280: .4byte gOtherText_HowManyYouWant
-_080B4284: .4byte sub_80B3EFC
-_080B4288: .4byte 0x0000c3e1
-_080B428C:
- ldr r5, _080B42C8 @ =gUnknown_020386A0
- ldr r4, _080B42CC @ =gDecorations
- ldrb r0, [r6, 0xB]
- ldrb r1, [r6, 0x9]
- adds r0, r1
- ldr r1, [r6, 0x4]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- lsls r0, 5
- adds r0, r4
- ldrh r1, [r0, 0x14]
- str r1, [r5]
- ldr r0, _080B42D0 @ =gSaveBlock1
- movs r2, 0x92
- lsls r2, 3
- adds r0, r2
- ldr r0, [r0]
- bl IsEnoughMoney
- lsls r0, 24
- cmp r0, 0
- bne _080B42E0
-_080B42BA:
- ldr r1, _080B42D4 @ =gOtherText_NotEnoughMoney
- ldr r2, _080B42D8 @ =sub_80B3BD0
- ldr r3, _080B42DC @ =0x0000c3e1
- adds r0, r7, 0
- bl DisplayItemMessageOnField
- b _080B436C
- .align 2, 0
-_080B42C8: .4byte gUnknown_020386A0
-_080B42CC: .4byte gDecorations
-_080B42D0: .4byte gSaveBlock1
-_080B42D4: .4byte gOtherText_NotEnoughMoney
-_080B42D8: .4byte sub_80B3BD0
-_080B42DC: .4byte 0x0000c3e1
-_080B42E0:
- ldr r0, _080B4318 @ =gStringVar1
- ldrb r1, [r6, 0xB]
- ldrb r2, [r6, 0x9]
- adds r1, r2
- ldr r2, [r6, 0x4]
- lsls r1, 1
- adds r1, r2
- ldrh r1, [r1]
- lsls r1, 5
- adds r2, r4, 0x1
- adds r1, r2
- bl StringCopy
- ldr r0, _080B431C @ =gStringVar2
- ldr r1, [r5]
- movs r2, 0
- movs r3, 0x8
- bl ConvertIntToDecimalStringN
- ldrb r0, [r6, 0xC]
- cmp r0, 0x1
- bne _080B4328
- ldr r0, _080B4320 @ =gStringVar4
- ldr r1, _080B4324 @ =gOtherText_ThatWillBe2
- bl StringExpandPlaceholders
- b _080B4330
- .align 2, 0
-_080B4318: .4byte gStringVar1
-_080B431C: .4byte gStringVar2
-_080B4320: .4byte gStringVar4
-_080B4324: .4byte gOtherText_ThatWillBe2
-_080B4328:
- ldr r0, _080B4340 @ =gStringVar4
- ldr r1, _080B4344 @ =gOtherText_ThatWillBe3
- bl StringExpandPlaceholders
-_080B4330:
- ldr r1, _080B4340 @ =gStringVar4
- ldr r2, _080B4348 @ =sub_80B3D38
- ldr r3, _080B434C @ =0x0000c3e1
- mov r0, r8
- bl DisplayItemMessageOnField
- b _080B436C
- .align 2, 0
-_080B4340: .4byte gStringVar4
-_080B4344: .4byte gOtherText_ThatWillBe3
-_080B4348: .4byte sub_80B3D38
-_080B434C: .4byte 0x0000c3e1
-_080B4350:
- adds r0, r7, 0
- bl sub_80B43F0
- b _080B436C
-_080B4358:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080B436C
- movs r0, 0x5
- bl PlaySE
- mov r0, r8
- bl sub_80B43F0
-_080B436C:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80B40E8
-
- thumb_func_start sub_80B4378
-sub_80B4378: @ 80B4378
- push {r4,lr}
- sub sp, 0x8
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- movs r0, 0
- movs r1, 0xA
- movs r2, 0xD
- movs r3, 0xD
- bl MenuZeroFillWindowRect
- ldr r0, _080B43E4 @ =gBGTilemapBuffers + 0x800
- movs r1, 0x2
- str r1, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- movs r1, 0x1
- movs r2, 0xB
- movs r3, 0xC
- bl sub_80A3FA0
- bl sub_80B3420
- movs r0, 0x6
- movs r1, 0x7
- bl sub_80B3764
- bl sub_80B37EC
- movs r0, 0
- bl StartVerticalScrollIndicators
- movs r0, 0x1
- bl StartVerticalScrollIndicators
- bl sub_80B32A4
- ldr r1, _080B43E8 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080B43EC @ =sub_80B40E8
- str r1, [r0]
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B43E4: .4byte gBGTilemapBuffers + 0x800
-_080B43E8: .4byte gTasks
-_080B43EC: .4byte sub_80B40E8
- thumb_func_end sub_80B4378
-
- thumb_func_start sub_80B43F0
-sub_80B43F0: @ 80B43F0
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _080B4428 @ =gFieldCallback
- ldr r0, _080B442C @ =sub_80B3050
- str r0, [r1]
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _080B4430 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080B4434 @ =Task_ExitBuyMenu
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B4428: .4byte gFieldCallback
-_080B442C: .4byte sub_80B3050
-_080B4430: .4byte gTasks
-_080B4434: .4byte Task_ExitBuyMenu
- thumb_func_end sub_80B43F0
-
- thumb_func_start Task_ExitBuyMenu
-Task_ExitBuyMenu: @ 80B4438
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080B4468 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080B4462
- movs r0, 0
- movs r1, 0
- bl RemoveMoneyLabelObject
- bl BuyMenuFreeMemory
- ldr r0, _080B446C @ =c2_exit_to_overworld_2_switch
- bl SetMainCallback2
- adds r0, r4, 0
- bl DestroyTask
-_080B4462:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B4468: .4byte gPaletteFade
-_080B446C: .4byte c2_exit_to_overworld_2_switch
- thumb_func_end Task_ExitBuyMenu
-
- thumb_func_start sub_80B4470
-sub_80B4470: @ 80B4470
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r2, 0
- ldr r0, _080B44C8 @ =gUnknown_02038724
- mov r12, r0
- ldr r6, _080B44CC @ =gUnknown_03000708
- mov r8, r12
- adds r4, r6, 0
- ldr r1, _080B44D0 @ =gTasks
- mov r9, r1
- lsls r0, r5, 2
- adds r0, r5
- lsls r7, r0, 3
-_080B4492:
- lsls r0, r2, 2
- mov r1, r8
- adds r3, r0, r1
- ldrb r0, [r4, 0xB]
- ldrb r1, [r4, 0x9]
- adds r0, r1
- ldr r1, [r4, 0x4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r3]
- ldrh r0, [r0]
- cmp r1, r0
- bne _080B44DC
- ldrh r0, [r3, 0x2]
- cmp r0, 0
- beq _080B44DC
- adds r2, r0, 0
- mov r4, r9
- adds r1, r7, r4
- movs r4, 0xA
- ldrsh r0, [r1, r4]
- adds r0, r2, r0
- cmp r0, 0xFF
- ble _080B44D4
- movs r0, 0xFF
- strh r0, [r3, 0x2]
- b _080B451E
- .align 2, 0
-_080B44C8: .4byte gUnknown_02038724
-_080B44CC: .4byte gUnknown_03000708
-_080B44D0: .4byte gTasks
-_080B44D4:
- ldrh r0, [r1, 0xA]
- adds r0, r2, r0
- strh r0, [r3, 0x2]
- b _080B451E
-_080B44DC:
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x2
- bls _080B4492
- ldr r3, _080B452C @ =gUnknown_02038730
- ldrb r0, [r3]
- cmp r0, 0x2
- bhi _080B451E
- adds r2, r0, 0
- lsls r2, 2
- add r2, r12
- ldrb r0, [r6, 0xB]
- ldrb r1, [r6, 0x9]
- adds r0, r1
- ldr r1, [r6, 0x4]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r2]
- ldrb r1, [r3]
- lsls r1, 2
- add r1, r12
- ldr r2, _080B4530 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r2
- ldrh r0, [r0, 0xA]
- strh r0, [r1, 0x2]
- ldrb r0, [r3]
- adds r0, 0x1
- strb r0, [r3]
-_080B451E:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B452C: .4byte gUnknown_02038730
-_080B4530: .4byte gTasks
- thumb_func_end sub_80B4470
-
- thumb_func_start ClearItemPurchases
-ClearItemPurchases: @ 80B4534
- push {lr}
- ldr r0, _080B4548 @ =gUnknown_02038730
- movs r1, 0
- strb r1, [r0]
- ldr r0, _080B454C @ =gUnknown_02038724
- movs r1, 0x3
- bl ClearItemSlots
- pop {r0}
- bx r0
- .align 2, 0
-_080B4548: .4byte gUnknown_02038730
-_080B454C: .4byte gUnknown_02038724
- thumb_func_end ClearItemPurchases
-
- thumb_func_start CreatePokemartMenu
-CreatePokemartMenu: @ 80B4550
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0
- bl CreateShopMenu
- adds r0, r4, 0
- bl SetShopItemsForSale
- bl ClearItemPurchases
- ldr r0, _080B4570 @ =EnableBothScriptContexts
- bl SetShopMenuCallback
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B4570: .4byte EnableBothScriptContexts
- thumb_func_end CreatePokemartMenu
-
- thumb_func_start CreateDecorationShop1Menu
-CreateDecorationShop1Menu: @ 80B4574
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x1
- bl CreateShopMenu
- adds r0, r4, 0
- bl SetShopItemsForSale
- ldr r0, _080B4590 @ =EnableBothScriptContexts
- bl SetShopMenuCallback
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B4590: .4byte EnableBothScriptContexts
- thumb_func_end CreateDecorationShop1Menu
-
- thumb_func_start CreateDecorationShop2Menu
-CreateDecorationShop2Menu: @ 80B4594
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x2
- bl CreateShopMenu
- adds r0, r4, 0
- bl SetShopItemsForSale
- ldr r0, _080B45B0 @ =EnableBothScriptContexts
- bl SetShopMenuCallback
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B45B0: .4byte EnableBothScriptContexts
- thumb_func_end CreateDecorationShop2Menu
-
- thumb_func_start sub_80B45B4
-sub_80B45B4: @ 80B45B4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- mov r9, r1
- lsls r0, 24
- lsrs r0, 24
- lsls r2, 16
- lsrs r2, 16
- mov r10, r2
- ldr r2, _080B4648 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrh r0, [r1, 0x10]
- subs r0, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- ldrh r0, [r1, 0x12]
- subs r0, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- ldrh r4, [r1, 0xA]
- movs r2, 0xC
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _080B4678
- movs r2, 0
- lsls r5, 16
- str r5, [sp, 0xC]
- lsls r0, r3, 16
- lsls r1, r4, 16
- asrs r0, 16
- str r0, [sp]
- asrs r1, 16
- str r1, [sp, 0x4]
- lsls r0, r1, 1
- mov r1, r9
- adds r7, r0, r1
-_080B4608:
- movs r4, 0
- lsls r2, 16
- mov r8, r2
- asrs r0, r2, 16
- ldr r2, [sp]
- adds r6, r2, r0
-_080B4614:
- ldr r0, [sp, 0xC]
- asrs r1, r0, 16
- lsls r4, 16
- asrs r0, r4, 16
- adds r5, r1, r0
- adds r0, r5, 0
- adds r1, r6, 0
- bl MapGridGetMetatileIdAt
- movs r2, 0
- ldrsh r1, [r7, r2]
- lsls r0, 16
- asrs r0, 16
- cmp r1, r0
- bne _080B465C
- ldr r0, [sp, 0x4]
- cmp r0, 0x2
- beq _080B464C
- ldrh r0, [r7, 0x2]
- mov r2, r10
- orrs r2, r0
- adds r0, r5, 0
- adds r1, r6, 0
- bl MapGridSetMetatileIdAt
- b _080B465C
- .align 2, 0
-_080B4648: .4byte gTasks
-_080B464C:
- mov r1, r9
- ldrh r0, [r1]
- mov r2, r10
- orrs r2, r0
- adds r0, r5, 0
- adds r1, r6, 0
- bl MapGridSetMetatileIdAt
-_080B465C:
- movs r2, 0x80
- lsls r2, 9
- adds r0, r4, r2
- lsrs r4, r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _080B4614
- adds r0, r2, 0
- add r0, r8
- lsrs r2, r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _080B4608
- b _080B4700
-_080B4678:
- movs r2, 0
- lsls r5, 16
- str r5, [sp, 0xC]
- lsls r0, r3, 16
- lsls r1, r4, 16
- asrs r0, 16
- str r0, [sp, 0x8]
- asrs r7, r1, 16
-_080B4688:
- movs r4, 0
- lsls r2, 16
- mov r8, r2
- asrs r0, r2, 16
- ldr r1, [sp, 0x8]
- adds r6, r1, r0
-_080B4694:
- ldr r2, [sp, 0xC]
- asrs r1, r2, 16
- lsls r4, 16
- asrs r0, r4, 16
- adds r5, r1, r0
- adds r0, r5, 0
- adds r1, r6, 0
- bl MapGridGetMetatileIdAt
- movs r1, 0x2
- subs r1, r7
- lsls r1, 1
- add r1, r9
- movs r2, 0
- ldrsh r1, [r1, r2]
- lsls r0, 16
- asrs r0, 16
- cmp r1, r0
- bne _080B46E6
- cmp r7, 0x2
- beq _080B46D6
- movs r0, 0x1
- subs r0, r7
- lsls r0, 1
- add r0, r9
- ldrh r0, [r0]
- mov r2, r10
- orrs r2, r0
- adds r0, r5, 0
- adds r1, r6, 0
- bl MapGridSetMetatileIdAt
- b _080B46E6
-_080B46D6:
- mov r1, r9
- ldrh r0, [r1, 0x4]
- mov r2, r10
- orrs r2, r0
- adds r0, r5, 0
- adds r1, r6, 0
- bl MapGridSetMetatileIdAt
-_080B46E6:
- movs r2, 0x80
- lsls r2, 9
- adds r0, r4, r2
- lsrs r4, r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _080B4694
- adds r0, r2, 0
- add r0, r8
- lsrs r2, r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _080B4688
-_080B4700:
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80B45B4
-
- thumb_func_start sub_80B4710
-sub_80B4710: @ 80B4710
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- ldr r1, _080B4738 @ =gTasks + 0x8
- adds r4, r0, r1
- movs r0, 0x1
- strh r0, [r4, 0x6]
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0x6
- bhi _080B47AA
- lsls r0, 2
- ldr r1, _080B473C @ =_080B4740
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080B4738: .4byte gTasks + 0x8
-_080B473C: .4byte _080B4740
- .align 2, 0
-_080B4740:
- .4byte _080B475C
- .4byte _080B4764
- .4byte _080B476C
- .4byte _080B4774
- .4byte _080B477C
- .4byte _080B4790
- .4byte _080B47A0
-_080B475C:
- ldr r1, _080B4760 @ =gUnknown_083CC714
- b _080B4792
- .align 2, 0
-_080B4760: .4byte gUnknown_083CC714
-_080B4764:
- ldr r1, _080B4768 @ =gUnknown_083CC71A
- b _080B4792
- .align 2, 0
-_080B4768: .4byte gUnknown_083CC71A
-_080B476C:
- ldr r1, _080B4770 @ =gUnknown_083CC720
- b _080B477E
- .align 2, 0
-_080B4770: .4byte gUnknown_083CC720
-_080B4774:
- ldr r1, _080B4778 @ =gUnknown_083CC726
- b _080B4792
- .align 2, 0
-_080B4778: .4byte gUnknown_083CC726
-_080B477C:
- ldr r1, _080B478C @ =gUnknown_083CC72C
-_080B477E:
- movs r2, 0xC0
- lsls r2, 4
- adds r0, r3, 0
- bl sub_80B45B4
- b _080B47AA
- .align 2, 0
-_080B478C: .4byte gUnknown_083CC72C
-_080B4790:
- ldr r1, _080B479C @ =gUnknown_083CC732
-_080B4792:
- adds r0, r3, 0
- movs r2, 0
- bl sub_80B45B4
- b _080B47AA
- .align 2, 0
-_080B479C: .4byte gUnknown_083CC732
-_080B47A0:
- ldr r1, _080B47D4 @ =gUnknown_083CC738
- adds r0, r3, 0
- movs r2, 0
- bl sub_80B45B4
-_080B47AA:
- ldrh r0, [r4]
- adds r0, 0x1
- movs r1, 0x7
- ands r0, r1
- strh r0, [r4]
- adds r5, r0, 0
- cmp r5, 0
- bne _080B47CE
- bl DrawWholeMapView
- movs r1, 0x2
- ldrsh r0, [r4, r1]
- adds r0, 0x1
- movs r1, 0x3
- bl __modsi3
- strh r0, [r4, 0x2]
- strh r5, [r4, 0x6]
-_080B47CE:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B47D4: .4byte gUnknown_083CC738
- thumb_func_end sub_80B4710
-
- thumb_func_start sub_80B47D8
-sub_80B47D8: @ 80B47D8
- push {r4-r7,lr}
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- ldr r6, _080B481C @ =sub_80B4710
- adds r0, r6, 0
- movs r1, 0
- bl CreateTask
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _080B4820 @ =gTasks + 0x8
- adds r7, r0, r1
- adds r0, r7, 0
- adds r0, 0x8
- adds r1, r7, 0
- adds r1, 0xA
- bl PlayerGetDestCoords
- movs r0, 0
- strh r0, [r7]
- strh r0, [r7, 0x2]
- strh r5, [r7, 0x4]
- adds r0, r4, 0
- bl _call_via_r6
- adds r0, r4, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080B481C: .4byte sub_80B4710
-_080B4820: .4byte gTasks + 0x8
- thumb_func_end sub_80B47D8
-
- thumb_func_start sub_80B4824
-sub_80B4824: @ 80B4824
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_80B47D8
- ldr r1, _080B4838 @ =gUnknown_02038731
- strb r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_080B4838: .4byte gUnknown_02038731
- thumb_func_end sub_80B4824
-
- thumb_func_start sub_80B483C
-sub_80B483C: @ 80B483C
- push {lr}
- ldr r0, _080B484C @ =gUnknown_02038731
- ldrb r0, [r0]
- bl DestroyTask
- pop {r0}
- bx r0
- .align 2, 0
-_080B484C: .4byte gUnknown_02038731
- thumb_func_end sub_80B483C
-
- thumb_func_start sub_80B4850
-sub_80B4850: @ 80B4850
- push {lr}
- ldr r2, _080B4874 @ =gTasks
- ldr r0, _080B4878 @ =gUnknown_02038731
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r1, r0, r2
- movs r2, 0xE
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _080B487C
- movs r2, 0xA
- ldrsh r0, [r1, r2]
- cmp r0, 0x2
- bne _080B487C
- movs r0, 0
- b _080B487E
- .align 2, 0
-_080B4874: .4byte gTasks
-_080B4878: .4byte gUnknown_02038731
-_080B487C:
- movs r0, 0x1
-_080B487E:
- pop {r1}
- bx r1
- thumb_func_end sub_80B4850
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/trade.s b/asm/trade.s
index 223f62474..b07a3b632 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -10512,7 +10512,7 @@ _0804D4CC:
ldrb r0, [r0]
movs r1, 0
bl sub_804BA94
- ldr r1, _0804D514 @ =gUnknown_03005E94
+ ldr r1, _0804D514 @ =gCB2_AfterEvolution
ldr r0, _0804D518 @ =sub_804BBCC
str r0, [r1]
ldr r7, _0804D51C @ =gUnknown_020297D8
@@ -10541,7 +10541,7 @@ _0804D4CC:
b _0804D538
.align 2, 0
_0804D510: .4byte gSpecialVar_0x8005
-_0804D514: .4byte gUnknown_03005E94
+_0804D514: .4byte gCB2_AfterEvolution
_0804D518: .4byte sub_804BBCC
_0804D51C: .4byte gUnknown_020297D8
_0804D520: .4byte gPlayerParty
@@ -10623,7 +10623,7 @@ _0804D5A8:
.align 2, 0
_0804D5B4: .4byte gSoftResetDisabled
_0804D5B8:
- ldr r0, _0804D5F4 @ =gUnknown_03005E94
+ ldr r0, _0804D5F4 @ =gCB2_AfterEvolution
ldr r1, _0804D5F8 @ =sub_804DC88
mov r8, r1
str r1, [r0]
@@ -10652,7 +10652,7 @@ _0804D5B8:
bl TradeEvolutionScene
b _0804D60E
.align 2, 0
-_0804D5F4: .4byte gUnknown_03005E94
+_0804D5F4: .4byte gCB2_AfterEvolution
_0804D5F8: .4byte sub_804DC88
_0804D5FC: .4byte gUnknown_020297D8
_0804D600: .4byte gPlayerParty
diff --git a/common_syms/berry_blender.txt b/common_syms/berry_blender.txt
new file mode 100644
index 000000000..524a31411
--- /dev/null
+++ b/common_syms/berry_blender.txt
@@ -0,0 +1,4 @@
+gUnknown_03004830
+gInGameOpponentsNo
+gUnknown_03004840
+gBerryBlenderData
diff --git a/common_syms/cute_sketch.txt b/common_syms/cute_sketch.txt
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/common_syms/cute_sketch.txt
diff --git a/common_syms/egg_hatch.txt b/common_syms/egg_hatch.txt
new file mode 100644
index 000000000..891ccc104
--- /dev/null
+++ b/common_syms/egg_hatch.txt
@@ -0,0 +1 @@
+gEggHatchData
diff --git a/common_syms/evolution_scene.txt b/common_syms/evolution_scene.txt
new file mode 100644
index 000000000..137cd3e05
--- /dev/null
+++ b/common_syms/evolution_scene.txt
@@ -0,0 +1 @@
+gCB2_AfterEvolution
diff --git a/common_syms/rom4.txt b/common_syms/overworld.txt
index ecdb190b2..ecdb190b2 100644
--- a/common_syms/rom4.txt
+++ b/common_syms/overworld.txt
diff --git a/common_syms/pokeblock_feed.txt b/common_syms/pokeblock_feed.txt
new file mode 100644
index 000000000..827e6526e
--- /dev/null
+++ b/common_syms/pokeblock_feed.txt
@@ -0,0 +1,12 @@
+gPokeblockFeedPokeSprite
+gPokeblockFeedMonSpecies
+gPokeblockMonNotFlipped
+gPokeblockFeedMonSpriteID
+gPokeblockFeedMonNature
+gUnknown_03005F34
+gPokeblockFeedUnused0
+gUnknown_03005F3C
+gUnknown_03005F40
+gPokeblockFeedPokeSpriteCopy
+gUnknown_03005F94
+gUnknown_03005FA0
diff --git a/common_syms/pokemon_menu.txt b/common_syms/pokemon_menu.txt
new file mode 100644
index 000000000..98a1bf53b
--- /dev/null
+++ b/common_syms/pokemon_menu.txt
@@ -0,0 +1,2 @@
+gLastFieldPokeMenuOpened
+gUnknown_03005CE4
diff --git a/data-de/event_scripts.s b/data-de/event_scripts.s
index 4d809241c..114bc4d97 100644
--- a/data-de/event_scripts.s
+++ b/data-de/event_scripts.s
@@ -919,20 +919,20 @@ Std_5:
@ 819F805
return
-BattleTower_Lobby_EventScript_19F806:: @ 819F806
-FallarborTown_ContestLobby_EventScript_19F806:: @ 819F806
-LilycoveCity_ContestLobby_EventScript_19F806:: @ 819F806
-MossdeepCity_GameCorner_1F_EventScript_19F806:: @ 819F806
-OldaleTown_PokemonCenter_2F_EventScript_19F806:: @ 819F806
-SecretBase_RedCave1_EventScript_19F806:: @ 819F806
- special InitSaveDialog
+S_DoSaveDialog:: @ 819F806
+S_DoSaveDialog:: @ 819F806
+S_DoSaveDialog:: @ 819F806
+S_DoSaveDialog:: @ 819F806
+S_DoSaveDialog:: @ 819F806
+S_DoSaveDialog:: @ 819F806
+ special ScrSpecial_DoSaveDialog
waitstate
return
gUnknown_0819F80B:: @ 819F80B
lock
special PlayTrainerEncounterMusic
- special sub_80847C8
+ special ScrSpecial_EndTrainerApproach
waitstate
jump EventScript_19F8F2
@@ -941,7 +941,7 @@ gUnknown_0819F818:: @ 819F818
faceplayer
move LAST_TALKED, Movement_19F8F0
waitmove 0
- specialval RESULT, sub_8082564
+ specialval RESULT, ScrSpecial_HasTrainerBeenFought
compare RESULT, 0
jumpif 5, EventScript_19F83F
special PlayTrainerEncounterMusic
@@ -955,7 +955,7 @@ gUnknown_0819F840:: @ 819F840
lock
faceplayer
call EventScript_19F8E5
- specialval RESULT, sub_8082564
+ specialval RESULT, ScrSpecial_HasTrainerBeenFought
compare RESULT, 0
jumpif 5, EventScript_19F877
special CheckForAlivePartyMons
@@ -966,7 +966,7 @@ gUnknown_0819F840:: @ 819F840
jump EventScript_19F8F2
EventScript_19F870:
- special sub_8082718
+ special ScrSpecial_ShowTrainerNonBattlingSpeech
waittext
waitbutton
release
@@ -984,15 +984,15 @@ gUnknown_0819F878:: @ 819F878
gUnknown_0819F887:: @ 819F887
call EventScript_19F8E5
- specialval RESULT, sub_8082C9C
+ specialval RESULT, ScrSpecial_GetTrainerEyeRematchFlag
compare RESULT, 0
jumpeq EventScript_19F8AD
special PlayTrainerEncounterMusic
special sub_8082524
- special sub_80826D8
+ special ScrSpecial_ShowTrainerIntroSpeech
waittext
waitbutton
- special sub_80826B0
+ special ScrSpecial_StartTrainerEyeRematch
waitstate
releaseall
end
@@ -1001,7 +1001,7 @@ EventScript_19F8AD:
endtrainerbattle
gUnknown_0819F8AE:: @ 819F8AE
- specialval RESULT, sub_8082C9C
+ specialval RESULT, ScrSpecial_GetTrainerEyeRematchFlag
compare RESULT, 0
jumpeq EventScript_19F8DD
special CheckForAlivePartyMons
@@ -1009,10 +1009,10 @@ gUnknown_0819F8AE:: @ 819F8AE
jumpif 5, EventScript_19F8DE
special PlayTrainerEncounterMusic
special sub_8082524
- special sub_80826D8
+ special ScrSpecial_ShowTrainerIntroSpeech
waittext
waitbutton
- special sub_80826B0
+ special ScrSpecial_StartTrainerEyeRematch
waitstate
releaseall
end
@@ -1021,7 +1021,7 @@ EventScript_19F8DD:
endtrainerbattle
EventScript_19F8DE:
- special sub_8082718
+ special ScrSpecial_ShowTrainerNonBattlingSpeech
waittext
waitbutton
release
@@ -1037,11 +1037,11 @@ Movement_19F8F0::
step_end
EventScript_19F8F2:
- special sub_80826D8
+ special ScrSpecial_ShowTrainerIntroSpeech
waittext
waitbutton
reptrainerbattle
- specialval RESULT, sub_8082558
+ specialval RESULT, ScrSpecial_GetTrainerBattleMode
compare RESULT, 0
jumpeq EventScript_19F934
compare RESULT, 2
@@ -1325,7 +1325,7 @@ EverGrandeCity_HallOfFame_EventScript_19FC70:: @ 819FC70
setflag 2141
return
-EventScript_LeagueWhiteOut:: @ 819FC74
+S_WhiteOut:: @ 819FC74
call EverGrandeCity_HallOfFame_EventScript_19FD09
call EventScript_19FC84
jump gUnknown_0819FC9F
@@ -1438,7 +1438,7 @@ SootopolisCity_PokemonCenter_1F_EventScript_19FD5B:: @ 819FD5B
VerdanturfTown_PokemonCenter_1F_EventScript_19FD5B:: @ 819FD5B
lock
faceplayer
- msgbox OldaleTown_PokemonCenter_1F_Text_1A0A7D, 5
+ msgbox gText_NurseJoy_Welcome, 5
compare RESULT, 1
jumpeq OldaleTown_PokemonCenter_1F_EventScript_19FD7C
compare RESULT, 0
@@ -1447,7 +1447,7 @@ VerdanturfTown_PokemonCenter_1F_EventScript_19FD5B:: @ 819FD5B
OldaleTown_PokemonCenter_1F_EventScript_19FD7C:: @ 819FD7C
inccounter GAME_STAT_USED_POKECENTER
- message OldaleTown_PokemonCenter_1F_Text_1A1245
+ message gText_NurseJoy_OkayIllTakeYourPokemon
waittext
move 0x800b, OldaleTown_PokemonCenter_1F_Movement_1A083F
waitmove 0
@@ -1455,23 +1455,23 @@ OldaleTown_PokemonCenter_1F_EventScript_19FD7C:: @ 819FD7C
checkanimation 25
move 0x800b, OldaleTown_PokemonCenter_1F_Movement_1A0845
waitmove 0
- special HealPlayerParty
+ special ScrSpecial_HealPlayerParty
checkflag 273
jumpif 0, OldaleTown_PokemonCenter_1F_EventScript_19FDCE
jump OldaleTown_PokemonCenter_1F_EventScript_19FDB0
end
OldaleTown_PokemonCenter_1F_EventScript_19FDB0:: @ 819FDB0
- message OldaleTown_PokemonCenter_1F_Text_1A0B14
+ message gText_NurseJoy_ThankYouForWaiting
waittext
move 0x800b, OldaleTown_PokemonCenter_1F_Movement_19FDF4
waitmove 0
- message OldaleTown_PokemonCenter_1F_Text_1A0AFA
+ message gText_NurseJoy_WeHopeToSeeYouAgain
waittext
return
OldaleTown_PokemonCenter_1F_EventScript_19FDC7:: @ 819FDC7
- message OldaleTown_PokemonCenter_1F_Text_1A0AFA
+ message gText_NurseJoy_WeHopeToSeeYouAgain
waittext
return
@@ -1484,7 +1484,7 @@ OldaleTown_PokemonCenter_1F_EventScript_19FDCE:: @ 819FDCE
end
OldaleTown_PokemonCenter_1F_EventScript_19FDEA:: @ 819FDEA
- message OldaleTown_PokemonCenter_1F_Text_1A1275
+ message gText_NurseJoy_Pokerus
waittext
setflag 273
return
@@ -1689,7 +1689,7 @@ gUnknown_081A0009:: @ 81A0009
EventScript_1A0023:
message gPCText_WhichPCShouldBeAccessed
waittext
- special TryCreatePCMenu
+ special ScrSpecial_CreatePCMenu
waitstate
jump EventScript_1A0033
end
@@ -2112,7 +2112,7 @@ SSTidalRooms_EventScript_1A02CA:: @ 81A02CA
fadescreen 1
fanfare 368
waitfanfare
- special HealPlayerParty
+ special ScrSpecial_HealPlayerParty
fadescreen 0
return
@@ -2986,16 +2986,16 @@ UnknownString_81A0A54: @ 81A0A54
UnknownString_81A0A66: @ 81A0A66
.string "Verbindung zu LANETTES PC hergestellt.$"
-OldaleTown_PokemonCenter_1F_Text_1A0A7D:: @ 81A0A7D
+gText_NurseJoy_Welcome:: @ 81A0A7D
.string "Willkommen im POKéMON-CENTER!\p"
.string "Wir heilen deine POKéMON und\n"
.string "machen sie wieder fit.\p"
.string "O.K. Wir benötigen deine POKéMON.$"
-OldaleTown_PokemonCenter_1F_Text_1A0AFA:: @ 81A0AFA
+gText_NurseJoy_WeHopeToSeeYouAgain:: @ 81A0AFA
.string "Komm jederzeit wieder vorbei!$"
-OldaleTown_PokemonCenter_1F_Text_1A0B14:: @ 81A0B14
+gText_NurseJoy_ThankYouForWaiting:: @ 81A0B14
.string "Danke!\p"
.string "Deine POKéMON sind wieder topfit!$"
@@ -3214,11 +3214,11 @@ SlateportCity_Text_1A116E:: @ 81A116E
.string "nehmen und dir unter der Hand tolle\l"
.string "Sachen verkaufen.$"
-OldaleTown_PokemonCenter_1F_Text_1A1245:: @ 81A1245
+gText_NurseJoy_OkayIllTakeYourPokemon:: @ 81A1245
.string "Okay, ich nehme deine POKéMON für einen\n"
.string "Moment in meine Obhut.$"
-OldaleTown_PokemonCenter_1F_Text_1A1275:: @ 81A1275
+gText_NurseJoy_Pokerus:: @ 81A1275
.string "Dein POKéMON scheint von dem\n"
.string "POKéRUS befallen zu sein.\p"
.string "Über den POKéRUS ist bisher wenig be-\n"
@@ -3965,7 +3965,7 @@ SecretBase_RedCave1_EventScript_1A3032:: @ 81A3032
jumpeq SecretBase_RedCave1_EventScript_1A308F
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A308F
hidebox 0, 0, 15, 10
@@ -4000,7 +4000,7 @@ SecretBase_RedCave1_EventScript_1A30AE:: @ 81A30AE
jumpeq SecretBase_RedCave1_EventScript_1A310B
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A310B
hidebox 0, 0, 15, 10
@@ -4035,7 +4035,7 @@ SecretBase_RedCave1_EventScript_1A312A:: @ 81A312A
jumpeq SecretBase_RedCave1_EventScript_1A3187
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A3187
hidebox 0, 0, 15, 10
@@ -4070,7 +4070,7 @@ SecretBase_RedCave1_EventScript_1A31A6:: @ 81A31A6
jumpeq SecretBase_RedCave1_EventScript_1A3203
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A3203
hidebox 0, 0, 15, 10
@@ -4105,7 +4105,7 @@ SecretBase_RedCave1_EventScript_1A3222:: @ 81A3222
jumpeq SecretBase_RedCave1_EventScript_1A327F
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A327F
hidebox 0, 0, 15, 10
@@ -4140,7 +4140,7 @@ SecretBase_RedCave1_EventScript_1A329E:: @ 81A329E
jumpeq SecretBase_RedCave1_EventScript_1A32FB
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A32FB
hidebox 0, 0, 15, 10
@@ -4175,7 +4175,7 @@ SecretBase_RedCave1_EventScript_1A331A:: @ 81A331A
jumpeq SecretBase_RedCave1_EventScript_1A3377
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A3377
hidebox 0, 0, 15, 10
@@ -4210,7 +4210,7 @@ SecretBase_RedCave1_EventScript_1A3396:: @ 81A3396
jumpeq SecretBase_RedCave1_EventScript_1A33F3
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A33F3
hidebox 0, 0, 15, 10
@@ -4245,7 +4245,7 @@ SecretBase_RedCave1_EventScript_1A3412:: @ 81A3412
jumpeq SecretBase_RedCave1_EventScript_1A346F
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A346F
hidebox 0, 0, 15, 10
@@ -4280,7 +4280,7 @@ SecretBase_RedCave1_EventScript_1A348E:: @ 81A348E
jumpeq SecretBase_RedCave1_EventScript_1A34EB
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A34EB
hidebox 0, 0, 15, 10
@@ -4309,7 +4309,7 @@ SecretBase_RedCave1_EventScript_1A350A:: @ 81A350A
setvar 0x8005, 0
special sub_813556C
waitstate
- special HealPlayerParty
+ special ScrSpecial_HealPlayerParty
release
end
@@ -4771,16 +4771,7 @@ BattleTower_Lobby_EventScript_1AE30F:: @ 81AE30F
.include "data/scripts/gabby_and_ty.inc"
- .include "data/scripts/bard.inc"
- .include "data/scripts/hipster.inc"
- .include "data/text/trader.inc"
- .include "data/scripts/trader.inc"
- .include "data/text/storyteller.inc"
- .include "data/scripts/storyteller.inc"
- .include "data/text/giddy.inc"
- .include "data/scripts/giddy.inc"
- .include "data/text/bard.inc"
- .include "data/text/hipster.inc"
+ .include "data/scripts/mauville_man.inc"
.include "data/field_move_scripts.inc"
.include "data/item_ball_scripts.inc"
@@ -4810,7 +4801,7 @@ gUnknown_081B694A:: @ 81B694A
.include "data/scripts/players_house.inc"
-Event_RunningShoesManual:: @ 81B6E5A
+S_RunningShoesManual:: @ 81B6E5A
msgbox UnknownString_81728E3, 3
end
@@ -4819,7 +4810,7 @@ Event_RunningShoesManual:: @ 81B6E5A
.include "data/text/trainers.inc"
-Event_RepelWoreOff:: @ 81C33E6
+S_RepelWoreOff:: @ 81C33E6
msgbox Text_RepelWoreOff, 3
end
@@ -4899,7 +4890,7 @@ GraniteCave_B1F_MapScript2_1C6BB5:: @ 81C6BB5
MtPyre_2F_MapScript2_1C6BB5:: @ 81C6BB5
SkyPillar_2F_MapScript2_1C6BB5:: @ 81C6BB5
SkyPillar_4F_MapScript2_1C6BB5:: @ 81C6BB5
- map_script_2 0x4022, 0, GraniteCave_B1F_EventScript_1C6BC5
+ map_script_2 0x4022, 0, S_FallDownHole
.2byte 0
GraniteCave_B1F_MapScript1_1C6BBF:: @ 81C6BBF
@@ -4909,7 +4900,7 @@ SkyPillar_4F_MapScript1_1C6BBF:: @ 81C6BBF
copyvar 0x4022, 0x1
end
-GraniteCave_B1F_EventScript_1C6BC5:: @ 81C6BC5
+S_FallDownHole:: @ 81C6BC5
lockall
pause 20
move 255, GraniteCave_B1F_Movement_1C6BF7
diff --git a/data-de/field_move_scripts.inc b/data-de/field_move_scripts.inc
index 91c3dcca8..017198c2d 100644
--- a/data-de/field_move_scripts.inc
+++ b/data-de/field_move_scripts.inc
@@ -1,4 +1,4 @@
-CuttableTreeScript:: @ 81B0DCC
+S_CuttableTree:: @ 81B0DCC
lockall
checkflag 2055
jumpif 0, CannotUseCut
@@ -18,7 +18,7 @@ CuttableTreeScript:: @ 81B0DCC
jump DoTreeCutMovement
end
-UseCutScript:: @ 81B0E16
+S_UseCut:: @ 81B0E16
lockall
doanimation 2
waitstate
@@ -59,7 +59,7 @@ CannotUseCutText: @ 81B0E8E
.string "Der ZERSCHNEIDER kann hier eingesetzt\n"
.string "werden.$"
-BreakableRockScript:: @ 81B0EB7
+S_BreakableRock:: @ 81B0EB7
lockall
checkflag 2057
jumpif 0, CannotUseRockSmash
@@ -79,7 +79,7 @@ BreakableRockScript:: @ 81B0EB7
jump DoRockSmashMovement
end
-UseRockSmashScript:: @ 81B0F01
+S_UseRockSmash:: @ 81B0F01
lockall
doanimation 37
waitstate
@@ -93,7 +93,7 @@ DoRockSmashMovement: @ 81B0F0C
specialval RESULT, sub_810F5BC
compare RESULT, 1
jumpeq DoRockSmashMovement_Done
- special RockSmashWildEncounter
+ special ScrSpecial_RockSmashWildEncounter
compare RESULT, 0
jumpeq DoRockSmashMovement_Done
waitstate
@@ -126,7 +126,7 @@ CannotUseRockSmashText: @ 81B0F90
.string "Ein großer Felsen. Ein POKéMON könnte\n"
.string "ihn vielleicht zertrümmern.$"
-PushableBoulderScript:: @ 81B0FCB
+S_PushableBoulder:: @ 81B0FCB
lockall
checkflag 2058
jumpif 0, CannotUseStrength
@@ -145,7 +145,7 @@ PushableBoulderScript:: @ 81B0FCB
jump UsedStrength
end
-UseStrengthScript:: @ 81B100E
+S_UseStrength:: @ 81B100E
lockall
doanimation 40
waitstate
@@ -191,7 +191,7 @@ AlreadyUsedStrengthText: @ 81B1127
.string "STÄRKE ermöglicht es, Felsen zu\n"
.string "bewegen.$"
-UseWaterfallScript:: @ 81B115A
+S_UseWaterfall:: @ 81B115A
lockall
checkattack MOVE_WATERFALL
compare RESULT, 6
@@ -205,7 +205,7 @@ UseWaterfallScript:: @ 81B115A
doanimation 43
jump Waterfall_Done
-CannotUseWaterfallScript:: @ 81B1194
+S_CannotUseWaterfall:: @ 81B1194
lockall
Waterfall_NoMonKnows: @ 81B1195
msgbox CannotUseWaterfallText, 4
@@ -247,7 +247,7 @@ Dive_Done: @ 81B1267
releaseall
end
-UnderwaterUseDiveScript:: @ 81B1269
+S_UseDiveUnderwater:: @ 81B1269
lockall
checkattack MOVE_DIVE
compare RESULT, 6
diff --git a/data-de/text/bard.inc b/data-de/text/bard.inc
index 089741d00..dbfb7d400 100644
--- a/data-de/text/bard.inc
+++ b/data-de/text/bard.inc
@@ -1,20 +1,20 @@
-UnknownString_81B0A83: @ 81B0A83
+gTextBard_BardTesting: @ 81B0A83
.string "BARDEN Test.$"
-MauvilleCity_PokemonCenter_1F_Text_1B0A91:: @ 81B0A91
+gTextBard_HiImTheBard:: @ 81B0A91
.string "Hallo, ich bin der BARDE.\n"
.string "Möchtest du meinem Lied lauschen?$"
-MauvilleCity_PokemonCenter_1F_Text_1B0AC3:: @ 81B0AC3
+gTextBard_OhYouveLeftMe:: @ 81B0AC3
.string "Oh...\n"
.string "Du überlässt mich meinem Blues?$"
-MauvilleCity_PokemonCenter_1F_Text_1B0AED:: @ 81B0AED
+gTextBard_OhWhatAMovingSong:: @ 81B0AED
.string "Hach, was für ein bewegendes Lied...\n"
.string "Ich wünschte, ich könnte es für\l"
.string "andere spielen...$"
-MauvilleCity_PokemonCenter_1F_Text_1B0B2C:: @ 81B0B2C
+gTextBard_SoHowDoYouLikeMySong:: @ 81B0B2C
.string "So?\n"
.string "Wie fandest du mein Lied?\p"
.string "Ich bin noch nicht ganz zufrieden mit\n"
@@ -22,17 +22,17 @@ MauvilleCity_PokemonCenter_1F_Text_1B0B2C:: @ 81B0B2C
.string "Hast du nicht Lust, den Text für mich\n"
.string "neu zu schreiben?$"
-MauvilleCity_PokemonCenter_1F_Text_1B0BA6:: @ 81B0BA6
+gTextBard_OhYouveLeftMe2:: @ 81B0BA6
.string "Oh... Und wieder werde ich meinem\n"
.string "Blues überlassen.$"
-MauvilleCity_PokemonCenter_1F_Text_1B0BD0:: @ 81B0BD0
+gTextBard_ThankYouKindly:: @ 81B0BD0
.string "Vielen herzlichen Dank!\n"
.string "Ich möchte für dich singen.$"
-MauvilleCity_PokemonCenter_1F_Text_1B0BFA:: @ 81B0BFA
+gTextBard_WasThatHowYouWanted:: @ 81B0BFA
.string "Hast du dir dein Lied so vorgestellt?$"
-MauvilleCity_PokemonCenter_1F_Text_1B0C23:: @ 81B0C23
+gTextBard_OkayThatsIt:: @ 81B0C23
.string "Okay! Das ist es! Dieses Lied werde\n"
.string "ich nun für eine Weile singen.$"
diff --git a/data-de/text/giddy.inc b/data-de/text/giddy.inc
index 6e1a46883..8bc5bebda 100644
--- a/data-de/text/giddy.inc
+++ b/data-de/text/giddy.inc
@@ -1,16 +1,16 @@
-MauvilleCity_PokemonCenter_1F_Text_1B092A:: @ 81B092A
+gTextGiddy_Introduction:: @ 81B092A
.string "Ich bin MÄRCHEN-MAN! Ich habe eine sehr\n"
.string "geistreiche Geschichte für dich!\p"
.string "Soll ich sie dir erzählen?$"
-MauvilleCity_PokemonCenter_1F_Text_1B097C:: @ 81B097C
+gTextGiddy_YouveDeflatedMe:: @ 81B097C
.string "Oh...\n"
.string "Du hast mir die Luft rausgelassen...$"
-MauvilleCity_PokemonCenter_1F_Text_1B0998:: @ 81B0998
+gTextGiddy_AlsoIWasThinking:: @ 81B0998
.string "Und ich war in Gedanken vertieft...$"
-MauvilleCity_PokemonCenter_1F_Text_1B09B0:: @ 81B09B0
+gTextGiddy_ByeBye:: @ 81B09B0
.string "Das wäre alles, glaube ich...\p"
.string "Wir sollten bald wieder ein Schwätzchen\n"
.string "halten! Tschüss!$"
diff --git a/data-de/text/hipster.inc b/data-de/text/hipster.inc
index c315b523d..8801b05fd 100644
--- a/data-de/text/hipster.inc
+++ b/data-de/text/hipster.inc
@@ -1,18 +1,18 @@
-MauvilleCity_PokemonCenter_1F_Text_1B0C5B:: @ 81B0C5B
+gTextHipster_TheyCallMeTheHipster:: @ 81B0C5B
.string "Hey, yo! Man nennt mich TRENDWIG. Ich\n"
.string "zeige dir, was hip ist und abgeht.$"
-MauvilleCity_PokemonCenter_1F_Text_1B0CA7:: @ 81B0CA7
+gTextHipster_TaughtYouAlready:: @ 81B0CA7
.string "Aber, hey, ich habe dir doch schon ge-\n"
.string "zeigt, was hip ist und abgeht.\p"
.string "Ich will das auch anderen mitteilen.$"
-MauvilleCity_PokemonCenter_1F_Text_1B0D11:: @ 81B0D11
+gTextHipster_YouAlreadyKnowALot:: @ 81B0D11
.string "Aber, hey, ich habe dir doch schon ge-\n"
.string "zeigt, was hip ist und abgeht.\p"
.string "Ich habe nichts mehr in petto.$"
-MauvilleCity_PokemonCenter_1F_Text_1B0D75:: @ 81B0D75
+gTextHipster_HaveYouHeardAbout:: @ 81B0D75
.string "Hast du schon von\n"
.string "“{STR_VAR_1}” gehört?\p"
.string "Was das heißt? Ähäm...\n"
diff --git a/data-de/text/storyteller.inc b/data-de/text/storyteller.inc
index ee2068766..abcc8a4a8 100644
--- a/data-de/text/storyteller.inc
+++ b/data-de/text/storyteller.inc
@@ -1,25 +1,25 @@
-MauvilleCity_PokemonCenter_1F_Text_1AECC6:: @ 81AECC6
+gTextStoryteller_Introduction:: @ 81AECC6
.string "Ich bin der GESCHICHTENERZÄHLER.\n"
.string "Ich erzähle dir die Geschichten von\l"
.string "legendären TRAINERN.\p"
.string "Soll ich dir etwas erzählen?$"
-MauvilleCity_PokemonCenter_1F_Text_1AED1D:: @ 81AED1D
+gTextStoryteller_OhIFeelStifled:: @ 81AED1D
.string "Oh...\n"
.string "Keiner mag mich...$"
-MauvilleCity_PokemonCenter_1F_Text_1AED35:: @ 81AED35
+gTextStoryteller_WhichTale:: @ 81AED35
.string "Ich kenne viele dieser Legenden.\n"
.string "Welche möchtest du hören?$"
-MauvilleCity_PokemonCenter_1F_Text_1AED70:: @ 81AED70
+gTextStoryteller_ButIKnowOfNoLegendaryTrainers:: @ 81AED70
.string "Aber ich weiß nichts über legendäre\n"
.string "TRAINER. Also habe ich keine Ge-\l"
.string "schichte auf Lager.\p"
.string "Wo findet man wohl einen TRAINER, der\n"
.string "einer lebenden Legende gleicht?$"
-MauvilleCity_PokemonCenter_1F_Text_1AEDE8:: @ 81AEDE8
+gTextStoryteller_BirthOfANewLegend:: @ 81AEDE8
.string "Was ist?\n"
.string "Du... Du...\p"
.string "{STR_VAR_2}\n"
@@ -27,39 +27,39 @@ MauvilleCity_PokemonCenter_1F_Text_1AEDE8:: @ 81AEDE8
.string "Das ist einfach großartig!\n"
.string "Die Geburt einer neuen Legende!$"
-MauvilleCity_PokemonCenter_1F_Text_1AEE50:: @ 81AEE50
+gTextStoryteller_CouldThereBeOtherTrainers:: @ 81AEE50
.string "Ich überlege, ob es nicht noch andere\n"
.string "TRAINER gibt, die mir beeindruckende\l"
.string "Geschichten erzählen können.$"
-MauvilleCity_PokemonCenter_1F_Text_1AEEB4:: @ 81AEEB4
+gTextStoryteller_HaveYouAnyTales:: @ 81AEEB4
.string "Bist du ein TRAINER?\p"
.string "Dann sag mir, ob du Geschichten\n"
.string "für mich hast, die legendär sind?$"
-MauvilleCity_PokemonCenter_1F_Text_1AEF0A:: @ 81AEF0A
+gTextStoryteller_HearAnotherLegendaryTale:: @ 81AEF0A
.string "Übrigens... Möchtest du eine weitere\n"
.string "legendäre Geschichte hören?$"
-MauvilleCity_PokemonCenter_1F_Text_1AEF49:: @ 81AEF49
+gTextStoryteller_ImNotSatisfied:: @ 81AEF49
.string "Hmm...\n"
.string "Ich bin nicht zufrieden...\p"
.string "Ich wünschte, du würdest mir Neuig-\n"
.string "keiten erzählen, die den Titel Legende\l"
.string "verdienen.$"
-MauvilleCity_PokemonCenter_1F_Text_1AEFA5:: @ 81AEFA5
+gTextStoryteller_WishMorePeopleWould:: @ 81AEFA5
.string "Ich wollte, mehr Leute würden sich für\n"
.string "meine epischen Geschichten über\l"
.string "legendäre TRAINER interessieren.$"
-UnknownString_81AEFFC:: @ 81AEFFC
+gTextStoryteller_Story1Title:: @ 81AEFFC
.string "Der speicherfreudige TRAINER$"
-UnknownString_81AF013:: @ 81AF013
+gTextStoryteller_Story1Action:: @ 81AF013
.string "Hast das Spiel gespeichert?$"
-UnknownString_81AF022:: @ 81AF022
+gTextStoryteller_Story1Text:: @ 81AF022
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat das Spiel\n"
@@ -67,13 +67,13 @@ UnknownString_81AF022:: @ 81AF022
.string "Einen vorsichtigeren TRAINER als\n"
.string "{STR_VAR_3} wird man nicht finden!$"
-UnknownString_81AF0A3:: @ 81AF0A3
+gTextStoryteller_Story2Title:: @ 81AF0A3
.string "Der TRAINER als Trendsetter$"
-UnknownString_81AF0BB:: @ 81AF0BB
+gTextStoryteller_Story2Action:: @ 81AF0BB
.string "Hast Trends gesetzt?$"
-UnknownString_81AF0CA:: @ 81AF0CA
+gTextStoryteller_Story2Text:: @ 81AF0CA
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
@@ -81,13 +81,13 @@ UnknownString_81AF0CA:: @ 81AF0CA
.string "{STR_VAR_3} setzt den Trend für alle - in\n"
.string "der ganzen HOENN-Region!$"
-UnknownString_81AF149:: @ 81AF149
+gTextStoryteller_Story3Title:: @ 81AF149
.string "Der BEEREN pflanzende TRAINER$"
-UnknownString_81AF164:: @ 81AF164
+gTextStoryteller_Story3Action:: @ 81AF164
.string "Hast BEEREN gepflanzt?$"
-UnknownString_81AF174:: @ 81AF174
+gTextStoryteller_Story3Text:: @ 81AF174
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
@@ -95,13 +95,13 @@ UnknownString_81AF174:: @ 81AF174
.string "{STR_VAR_3} ist ein legendärer Lieb-\n"
.string "haber von BEEREN!$"
-UnknownString_81AF1E5:: @ 81AF1E5
+gTextStoryteller_Story4Title:: @ 81AF1E5
.string "Der RAD verrückte TRAINER$"
-UnknownString_81AF1FD:: @ 81AF1FD
+gTextStoryteller_Story4Action:: @ 81AF1FD
.string "Hast RÄDER getauscht?$"
-UnknownString_81AF20A:: @ 81AF20A
+gTextStoryteller_Story4Text:: @ 81AF20A
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
@@ -109,13 +109,13 @@ UnknownString_81AF20A:: @ 81AF20A
.string "{STR_VAR_3} ist ein TRAINER, dessen\n"
.string "Passion das RADfahren ist!$"
-UnknownString_81AF281:: @ 81AF281
+gTextStoryteller_Story5Title:: @ 81AF281
.string "Der Interviews gebende TRAINER$"
-UnknownString_81AF299:: @ 81AF299
+gTextStoryteller_Story5Action:: @ 81AF299
.string "Hast Interviews gegeben?$"
-UnknownString_81AF2A9:: @ 81AF2A9
+gTextStoryteller_Story5Text:: @ 81AF2A9
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER wurde {STR_VAR_1}-mal\n"
@@ -123,13 +123,13 @@ UnknownString_81AF2A9:: @ 81AF2A9
.string "{STR_VAR_3} ist ein TRAINER, der überall\n"
.string "Aufmerksamkeit erregt!$"
-UnknownString_81AF32C:: @ 81AF32C
+gTextStoryteller_Story6Title:: @ 81AF32C
.string "Der kampfliebende TRAINER$"
-UnknownString_81AF345:: @ 81AF345
+gTextStoryteller_Story6Action:: @ 81AF345
.string "Hast oft gekämpft?$"
-UnknownString_81AF34D:: @ 81AF34D
+gTextStoryteller_Story6Text:: @ 81AF34D
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
@@ -137,13 +137,13 @@ UnknownString_81AF34D:: @ 81AF34D
.string "{STR_VAR_3} ist ein TRAINER, der zu\n"
.string "einem Kampf nicht nein sagt!$"
-UnknownString_81AF3D0:: @ 81AF3D0
+gTextStoryteller_Story7Title:: @ 81AF3D0
.string "Der POKéMON fangende TRAINER$"
-UnknownString_81AF3ED:: @ 81AF3ED
+gTextStoryteller_Story7Action:: @ 81AF3ED
.string "Hast POKéMON gefangen?$"
-UnknownString_81AF3FC:: @ 81AF3FC
+gTextStoryteller_Story7Text:: @ 81AF3FC
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}\n"
@@ -151,13 +151,13 @@ UnknownString_81AF3FC:: @ 81AF3FC
.string "{STR_VAR_3} ist ein legendärer Fänger\n"
.string "von POKéMON!$"
-UnknownString_81AF46D:: @ 81AF46D
+gTextStoryteller_Story8Title:: @ 81AF46D
.string "Der angelnde TRAINER$"
-UnknownString_81AF481:: @ 81AF481
+gTextStoryteller_Story8Action:: @ 81AF481
.string "Hast POKéMON mit einer ANGEL gefangen?$"
-UnknownString_81AF49B:: @ 81AF49B
+gTextStoryteller_Story8Text:: @ 81AF49B
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}\n"
@@ -165,13 +165,13 @@ UnknownString_81AF49B:: @ 81AF49B
.string "{STR_VAR_3} ist ein legendärer Angel-\n"
.string "experte!$"
-UnknownString_81AF511:: @ 81AF511
+gTextStoryteller_Story9Title:: @ 81AF511
.string "Der EIER wärmende TRAINER$"
-UnknownString_81AF529:: @ 81AF529
+gTextStoryteller_Story9Action:: @ 81AF529
.string "Hast EIER ausgebrütet?$"
-UnknownString_81AF536:: @ 81AF536
+gTextStoryteller_Story9Text:: @ 81AF536
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Es passierte {STR_VAR_1}-mal, dass der TRAINER\n"
@@ -179,13 +179,13 @@ UnknownString_81AF536:: @ 81AF536
.string "{STR_VAR_3} ist ein legendärer Pfleger\n"
.string "von EIERN!$"
-UnknownString_81AF5A9:: @ 81AF5A9
+gTextStoryteller_Story10Title:: @ 81AF5A9
.string "Der TRAINER der Entwicklungen$"
-UnknownString_81AF5BD:: @ 81AF5BD
+gTextStoryteller_Story10Action:: @ 81AF5BD
.string "Hast POKéMON sich entwickeln lassen?$"
-UnknownString_81AF5CD:: @ 81AF5CD
+gTextStoryteller_Story10Text:: @ 81AF5CD
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}\n"
@@ -193,13 +193,13 @@ UnknownString_81AF5CD:: @ 81AF5CD
.string "{STR_VAR_3} ist der ultimative Ent-\n"
.string "wickler von POKéMON!$"
-UnknownString_81AF63F:: @ 81AF63F
+gTextStoryteller_Story11Title:: @ 81AF63F
.string "Der PKMN-CENTER liebende TRAINER$"
-UnknownString_81AF661:: @ 81AF661
+gTextStoryteller_Story11Action:: @ 81AF661
.string "Gingst in ein POKéMON-CENTER?$"
-UnknownString_81AF676:: @ 81AF676
+gTextStoryteller_Story11Text:: @ 81AF676
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat POKéMON\n"
@@ -208,13 +208,13 @@ UnknownString_81AF676:: @ 81AF676
.string "Es gibt keinen größeren Fan der\n"
.string "POKéMON-CENTER als {STR_VAR_3}!$"
-UnknownString_81AF711:: @ 81AF711
+gTextStoryteller_Story12Title:: @ 81AF711
.string "Der gastfreundliche TRAINER$"
-UnknownString_81AF726:: @ 81AF726
+gTextStoryteller_Story12Action:: @ 81AF726
.string "POKéMON haben sich bei dir erholt?$"
-UnknownString_81AF73D:: @ 81AF73D
+gTextStoryteller_Story12Text:: @ 81AF73D
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat POKéMON\n"
@@ -223,13 +223,13 @@ UnknownString_81AF73D:: @ 81AF73D
.string "Kein TRAINER ist so gastfreundlich\n"
.string "wie {STR_VAR_3}!$"
-UnknownString_81AF7BF:: @ 81AF7BF
+gTextStoryteller_Story13Title:: @ 81AF7BF
.string "Der SAFARI liebende TRAINER$"
-UnknownString_81AF7D9:: @ 81AF7D9
+gTextStoryteller_Story13Action:: @ 81AF7D9
.string "Bist in die SAFARI-ZONE gegangen?$"
-UnknownString_81AF7F1:: @ 81AF7F1
+gTextStoryteller_Story13Text:: @ 81AF7F1
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER ist {STR_VAR_1}-mal in die\n"
@@ -238,13 +238,13 @@ UnknownString_81AF7F1:: @ 81AF7F1
.string "wilde Seite in der SAFARI-ZONE zum\l"
.string "Vorschein kommt!$"
-UnknownString_81AF88A:: @ 81AF88A
+gTextStoryteller_Story14Title:: @ 81AF88A
.string "Der TRAINER als ZERSCHNEIDER$"
-UnknownString_81AF8A1:: @ 81AF8A1
+gTextStoryteller_Story14Action:: @ 81AF8A1
.string "Hast ZERSCHNEIDER eingesetzt?$"
-UnknownString_81AF8AA:: @ 81AF8AA
+gTextStoryteller_Story14Text:: @ 81AF8AA
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
@@ -252,13 +252,13 @@ UnknownString_81AF8AA:: @ 81AF8AA
.string "{STR_VAR_3} ist ein TRAINER, der es\n"
.string "liebt, etwas zu ZERSCHNEIDEN.$"
-UnknownString_81AF91B:: @ 81AF91B
+gTextStoryteller_Story15Title:: @ 81AF91B
.string "Der TRAINER als ZERTRÜMMERER$"
-UnknownString_81AF935:: @ 81AF935
+gTextStoryteller_Story15Action:: @ 81AF935
.string "Hast Felsen ZERTRÜMMERT?$"
-UnknownString_81AF943:: @ 81AF943
+gTextStoryteller_Story15Text:: @ 81AF943
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
@@ -266,13 +266,13 @@ UnknownString_81AF943:: @ 81AF943
.string "{STR_VAR_3} ist ein TRAINER, der keinen\n"
.string "Felsen unbeschädigt lassen kann.$"
-UnknownString_81AF9C8:: @ 81AF9C8
+gTextStoryteller_Story16Title:: @ 81AF9C8
.string "Der Umzüge liebende TRAINER$"
-UnknownString_81AF9E0:: @ 81AF9E0
+gTextStoryteller_Story16Action:: @ 81AF9E0
.string "Bist du mit der GEHEIMBASIS umgezogen?$"
-UnknownString_81AF9F6:: @ 81AF9F6
+gTextStoryteller_Story16Text:: @ 81AF9F6
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER ist {STR_VAR_1}-mal mit\n"
@@ -280,13 +280,13 @@ UnknownString_81AF9F6:: @ 81AF9F6
.string "{STR_VAR_3} ist ein TRAINER, der es\n"
.string "liebt, sich ein neues Haus einzurichten.$"
-UnknownString_81AFA79:: @ 81AFA79
+gTextStoryteller_Story17Title:: @ 81AFA79
.string "Der PLATSCHER des TRAINERS$"
-UnknownString_81AFA92:: @ 81AFA92
+gTextStoryteller_Story17Action:: @ 81AFA92
.string "Hast PLATSCHER eingesetzt?$"
-UnknownString_81AFA9E:: @ 81AFA9E
+gTextStoryteller_Story17Text:: @ 81AFA9E
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
@@ -294,13 +294,13 @@ UnknownString_81AFA9E:: @ 81AFA9E
.string "{STR_VAR_3} ist ein TRAINER, der es\n"
.string "liebt, zu PLATSCHEN.$"
-UnknownString_81AFB17:: @ 81AFB17
+gTextStoryteller_Story18Title:: @ 81AFB17
.string "Der verbissene TRAINER$"
-UnknownString_81AFB2D:: @ 81AFB2D
+gTextStoryteller_Story18Action:: @ 81AFB2D
.string "Hast VERZWEIFLER angewendet?$"
-UnknownString_81AFB48:: @ 81AFB48
+gTextStoryteller_Story18Text:: @ 81AFB48
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat sich {STR_VAR_1}-mal\n"
@@ -308,13 +308,13 @@ UnknownString_81AFB48:: @ 81AFB48
.string "{STR_VAR_3}... Ein verbissener TRAINER,\n"
.string "der auch in der Not nicht aufgibt.$"
-UnknownString_81AFBD8:: @ 81AFBD8
+gTextStoryteller_Story19Title:: @ 81AFBD8
.string "Der König der EINARMIGEN BANDITEN$"
-UnknownString_81AFBE7:: @ 81AFBE7
+gTextStoryteller_Story19Action:: @ 81AFBE7
.string "Hast den EINARMIGEN BANDITEN besiegt?$"
-UnknownString_81AFC04:: @ 81AFC04
+gTextStoryteller_Story19Text:: @ 81AFC04
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
@@ -322,13 +322,13 @@ UnknownString_81AFC04:: @ 81AFC04
.string "{STR_VAR_3}... Ein TRAINER, der am\n"
.string "EINARMIGEN BANDITEN Glück hat.$"
-UnknownString_81AFC8A:: @ 81AFC8A
+gTextStoryteller_Story20Title:: @ 81AFC8A
.string "Der König des ROULETTES$"
-UnknownString_81AFC9D:: @ 81AFC9D
+gTextStoryteller_Story20Action:: @ 81AFC9D
.string "Hast in Folge beim ROULETTE gewonnen,$"
-UnknownString_81AFCBE:: @ 81AFCBE
+gTextStoryteller_Story20Text:: @ 81AFCBE
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal in Folge\n"
@@ -336,13 +336,13 @@ UnknownString_81AFCBE:: @ 81AFCBE
.string "{STR_VAR_3}... Ein TRAINER, dem die Kugel\n"
.string "beim ROULETTE gehorcht.$"
-UnknownString_81AFD44:: @ 81AFD44
+gTextStoryteller_Story21Title:: @ 81AFD44
.string "Der Herausforderer im DUELLTURM$"
-UnknownString_81AFD60:: @ 81AFD60
+gTextStoryteller_Story21Action:: @ 81AFD60
.string "Hast Gegner im DUELLTURM gefordert?$"
-UnknownString_81AFD80:: @ 81AFD80
+gTextStoryteller_Story21Text:: @ 81AFD80
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal Gegner\n"
@@ -350,13 +350,13 @@ UnknownString_81AFD80:: @ 81AFD80
.string "{STR_VAR_3}... Ein TRAINER, der im DUELL-\n"
.string "TURM nach Perfektion strebt.$"
-UnknownString_81AFE1D:: @ 81AFE1D
+gTextStoryteller_Story22Title:: @ 81AFE1D
.string "Der mixende TRAINER$"
-UnknownString_81AFE36:: @ 81AFE36
+gTextStoryteller_Story22Action:: @ 81AFE36
.string "Hast {POKEBLOCK} hergestellt?$"
-UnknownString_81AFE42:: @ 81AFE42
+gTextStoryteller_Story22Text:: @ 81AFE42
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
@@ -364,13 +364,13 @@ UnknownString_81AFE42:: @ 81AFE42
.string "Niemand bedient den BEERENMIXER\n"
.string "besser als {STR_VAR_3}.$"
-UnknownString_81AFEC2:: @ 81AFEC2
+gTextStoryteller_Story23Title:: @ 81AFEC2
.string "Der Fan der WETTBEWERBE$"
-UnknownString_81AFEDD:: @ 81AFEDD
+gTextStoryteller_Story23Action:: @ 81AFEDD
.string "Hast an WETTBEWERBEN teilgenommen?$"
-UnknownString_81AFEEE:: @ 81AFEEE
+gTextStoryteller_Story23Text:: @ 81AFEEE
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
@@ -378,13 +378,13 @@ UnknownString_81AFEEE:: @ 81AFEEE
.string "{STR_VAR_3} liebt es, anderen seine\n"
.string "POKéMON zu zeigen.$"
-UnknownString_81AFF68:: @ 81AFF68
+gTextStoryteller_Story24Title:: @ 81AFF68
.string "Der Meister der WETTBEWERBE$"
-UnknownString_81AFF7B:: @ 81AFF7B
+gTextStoryteller_Story24Action:: @ 81AFF7B
.string "Hast WETTBEWERBE gewonnen?$"
-UnknownString_81AFF88:: @ 81AFF88
+gTextStoryteller_Story24Text:: @ 81AFF88
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
@@ -392,26 +392,26 @@ UnknownString_81AFF88:: @ 81AFF88
.string "{STR_VAR_3} ist ein unvergleichlicher\n"
.string "Meister der WETTBEWERBE.$"
-UnknownString_81AFFFB:: @ 81AFFFB
+gTextStoryteller_Story25Title:: @ 81AFFFB
.string "Der glückliche Einkäufer$"
-UnknownString_81B000D:: @ 81B000D
+gTextStoryteller_Story25Action:: @ 81B000D
.string "Bist einkaufen gegangen?$"
-UnknownString_81B0015:: @ 81B0015
+gTextStoryteller_Story25Text:: @ 81B0015
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
.string "in einem Geschäft Items gekauft!\p"
.string "{STR_VAR_3} ein geborener Einkäufer.$"
-UnknownString_81B009D:: @ 81B009D
+gTextStoryteller_Story26Title:: @ 81B009D
.string "Der TRAINER, der Items findet$"
-UnknownString_81B00B6:: @ 81B00B6
+gTextStoryteller_Story26Action:: @ 81B00B6
.string "Hast den DETEKTOR eingesetzt?$"
-UnknownString_81B00C9:: @ 81B00C9
+gTextStoryteller_Story26Text:: @ 81B00C9
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
@@ -419,13 +419,13 @@ UnknownString_81B00C9:: @ 81B00C9
.string "{STR_VAR_3} liebt es, den Boden nach\n"
.string "verborgenen Items abzusuchen.$"
-UnknownString_81B014D:: @ 81B014D
+gTextStoryteller_Story27Title:: @ 81B014D
.string "Der regennasse TRAINER$"
-UnknownString_81B0165:: @ 81B0165
+gTextStoryteller_Story27Action:: @ 81B0165
.string "Wurdest nass geregnet?$"
-UnknownString_81B0173:: @ 81B0173
+gTextStoryteller_Story27Text:: @ 81B0173
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER wurde {STR_VAR_1}-mal\n"
@@ -433,13 +433,13 @@ UnknownString_81B0173:: @ 81B0173
.string "Das Charisma von {STR_VAR_3} zieht\n"
.string "sogar den Regen an.$"
-UnknownString_81B01E9:: @ 81B01E9
+gTextStoryteller_Story28Title:: @ 81B01E9
.string "Der passionierte POKéDEX-Leser$"
-UnknownString_81B0201:: @ 81B0201
+gTextStoryteller_Story28Action:: @ 81B0201
.string "Hast im POKéDEX nachgeschlagen?$"
-UnknownString_81B0213:: @ 81B0213
+gTextStoryteller_Story28Text:: @ 81B0213
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
@@ -447,13 +447,13 @@ UnknownString_81B0213:: @ 81B0213
.string "{STR_VAR_3} liebt es, alles über\n"
.string "POKéMON im POKéDEX nachzulesen.$"
-UnknownString_81B0290:: @ 81B0290
+gTextStoryteller_Story29Title:: @ 81B0290
.string "Der Sammler der BÄNDER$"
-UnknownString_81B02A5:: @ 81B02A5
+gTextStoryteller_Story29Action:: @ 81B02A5
.string "Hast BÄNDER erhalten?$"
-UnknownString_81B02B6:: @ 81B02B6
+gTextStoryteller_Story29Text:: @ 81B02B6
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}\n"
@@ -461,13 +461,13 @@ UnknownString_81B02B6:: @ 81B02B6
.string "{STR_VAR_3} ist ein TRAINER, der es\n"
.string "liebt, BÄNDER zu sammeln.$"
-UnknownString_81B0337:: @ 81B0337
+gTextStoryteller_Story30Title:: @ 81B0337
.string "Der springende TRAINER$"
-UnknownString_81B0351:: @ 81B0351
+gTextStoryteller_Story30Action:: @ 81B0351
.string "Bist Absätze heruntergesprungen?$"
-UnknownString_81B0364:: @ 81B0364
+gTextStoryteller_Story30Text:: @ 81B0364
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER ist {STR_VAR_1}-mal\n"
@@ -476,26 +476,26 @@ UnknownString_81B0364:: @ 81B0364
.string "TRAINER {STR_VAR_3} einfach hinab-\l"
.string "springen.$"
-UnknownString_81B03E9:: @ 81B03E9
+gTextStoryteller_Story31Title:: @ 81B03E9
.string "Der legendäre Fernsehzuschauer$"
-UnknownString_81B0401:: @ 81B0401
+gTextStoryteller_Story31Action:: @ 81B0401
.string "Hast ferngeschaut?$"
-UnknownString_81B040C:: @ 81B040C
+gTextStoryteller_Story31Text:: @ 81B040C
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
.string "Fernsehen geschaut!\p"
.string "{STR_VAR_3} liebt es, fernzusehen.$"
-UnknownString_81B046E:: @ 81B046E
+gTextStoryteller_Story32Title:: @ 81B046E
.string "Der zeitbewusste TRAINER$"
-UnknownString_81B0489:: @ 81B0489
+gTextStoryteller_Story32Action:: @ 81B0489
.string "Hast nach der Uhrzeit gesehen?$"
-UnknownString_81B049A:: @ 81B049A
+gTextStoryteller_Story32Text:: @ 81B049A
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
@@ -503,13 +503,13 @@ UnknownString_81B049A:: @ 81B049A
.string "{STR_VAR_3} ist ein pünktlicher\n"
.string "TRAINER, der sich der Zeit bewusst ist.$"
-UnknownString_81B0523:: @ 81B0523
+gTextStoryteller_Story33Title:: @ 81B0523
.string "Der Zauberer der POKéMON-LOTTERIE$"
-UnknownString_81B053E:: @ 81B053E
+gTextStoryteller_Story33Action:: @ 81B053E
.string "Hast in der LOTTERIE gewonnen?$"
-UnknownString_81B0554:: @ 81B0554
+gTextStoryteller_Story33Text:: @ 81B0554
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
@@ -517,13 +517,13 @@ UnknownString_81B0554:: @ 81B0554
.string "TRAINER {STR_VAR_3} hat viele Freunde,\n"
.string "die mit ihm POKéMON tauschen.$"
-UnknownString_81B05D8:: @ 81B05D8
+gTextStoryteller_Story34Title:: @ 81B05D8
.string "Der TRAINER und die PENSION$"
-UnknownString_81B05F3:: @ 81B05F3
+gTextStoryteller_Story34Action:: @ 81B05F3
.string "Hast POKéMON in die PENSION gebracht?$"
-UnknownString_81B0610:: @ 81B0610
+gTextStoryteller_Story34Text:: @ 81B0610
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
@@ -532,13 +532,13 @@ UnknownString_81B0610:: @ 81B0610
.string "alles für die Entwicklung seiner\l"
.string "POKéMON tut.$"
-UnknownString_81B06A9:: @ 81B06A9
+gTextStoryteller_Story35Title:: @ 81B06A9
.string "Der SEILBAHN verrückte TRAINER$"
-UnknownString_81B06C6:: @ 81B06C6
+gTextStoryteller_Story35Action:: @ 81B06C6
.string "Bist mit der SEILBAHN gefahren?$"
-UnknownString_81B06D9:: @ 81B06D9
+gTextStoryteller_Story35Text:: @ 81B06D9
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER ist {STR_VAR_1}-mal\n"
@@ -547,13 +547,13 @@ UnknownString_81B06D9:: @ 81B06D9
.string "TRAINER, der ständig rauf und runter\l"
.string "fährt.$"
-UnknownString_81B0763:: @ 81B0763
+gTextStoryteller_Story36Title:: @ 81B0763
.string "Der Liebhaber der Heißen Quellen$"
-UnknownString_81B0781:: @ 81B0781
+gTextStoryteller_Story36Action:: @ 81B0781
.string "Hast in den Heißen Quellen gebadet?$"
-UnknownString_81B0797:: @ 81B0797
+gTextStoryteller_Story36Text:: @ 81B0797
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
diff --git a/data-de/text/trader.inc b/data-de/text/trader.inc
index adf5d3aeb..dae453e8b 100644
--- a/data-de/text/trader.inc
+++ b/data-de/text/trader.inc
@@ -1,58 +1,58 @@
-MauvilleCity_PokemonCenter_1F_Text_1AE88F:: @ 81AE88F
+gTextTrader_Introduction:: @ 81AE88F
.string "Hallo! Ich bin der HÄNDLER. Möchtest\n"
.string "du Dekorationen mit mir tauschen?$"
-MauvilleCity_PokemonCenter_1F_Text_1AE8C6:: @ 81AE8C6
+gTextTrader_FeelUnwanted1:: @ 81AE8C6
.string "Oh...\n"
.string "Ich fühle mich überflüssig...$"
-MauvilleCity_PokemonCenter_1F_Text_1AE8DF:: @ 81AE8DF
+gTextTrader_TradedAlready:: @ 81AE8DF
.string "Aber wir beide haben doch bereits\n"
.string "Dekorationen ausgetauscht.$"
-MauvilleCity_PokemonCenter_1F_Text_1AE910:: @ 81AE910
+gTextTrader_MenuPrompt:: @ 81AE910
.string "Wenn du etwas Dekoratives siehst, das\n"
.string "du haben möchtest, lass es mich wissen.$"
-MauvilleCity_PokemonCenter_1F_Text_1AE950:: @ 81AE950
+gTextTrader_DontWantAnything:: @ 81AE950
.string "Du möchtest nichts haben?\n"
.string "Ich fühle mich so überflüssig...$"
-MauvilleCity_PokemonCenter_1F_Text_1AE97C:: @ 81AE97C
+gTextTrader_ItemOnceBelongedTo:: @ 81AE97C
.string "Das dekorative Item gehörte einst\n"
.string "{STR_VAR_1}.\p"
.string "Möchtest du es haben?$"
-MauvilleCity_PokemonCenter_1F_Text_1AE9B6:: @ 81AE9B6
+gTextTrader_YouDontHaveDecorations:: @ 81AE9B6
.string "Äh... Warte eine Sekunde. Du hast über-\n"
.string "haupt kein dekoratives Item!$"
-MauvilleCity_PokemonCenter_1F_Text_1AE9F8:: @ 81AE9F8
+gTextTrader_PickDecorationYoullTrade:: @ 81AE9F8
.string "Okay, wähle die Dekoration aus, die du\n"
.string "mit mir tauschen willst.$"
-MauvilleCity_PokemonCenter_1F_Text_1AEA2B:: @ 81AEA2B
+gTextTrader_FeelUnwanted2:: @ 81AEA2B
.string "Du willst nicht mit mir tauschen?\n"
.string "Ich fühle mich überflüssig...$"
-MauvilleCity_PokemonCenter_1F_Text_1AEA57:: @ 81AEA57
+gTextTrader_NoRoomForThis:: @ 81AEA57
.string "Du hast keinen Platz mehr für eine/n\n"
.string "{STR_VAR_2}.$"
-MauvilleCity_PokemonCenter_1F_Text_1AEA9B:: @ 81AEA9B
+gTextTrader_SoWellTrade:: @ 81AEA9B
.string "Okay, dann lass uns tauschen:\n"
.string "{STR_VAR_3} gegen\l"
.string "{STR_VAR_2}!$"
-MauvilleCity_PokemonCenter_1F_Text_1AEAC3:: @ 81AEAC3
+gTextTrader_InUseYouCantTradeIt:: @ 81AEAC3
.string "Dieses Dekorationsstück ist im Ge-\n"
.string "brauch. Das kannst du nicht tauschen.$"
-MauvilleCity_PokemonCenter_1F_Text_1AEAFB:: @ 81AEAFB
+gTextTrader_ThenWellTrade:: @ 81AEAFB
.string "Dann lass uns tauschen! Ich werde meine\n"
.string "Dekorationen auf deinen PC senden.$"
-MauvilleCity_PokemonCenter_1F_Text_1AEB31:: @ 81AEB31
+gTextTrader_ICantTradeThatOneAway:: @ 81AEB31
.string "Huups! Tut mir Leid!\n"
.string "Das ist ein ganz seltenes Stück!\l"
.string "Das kann ich nicht tauschen!\p"
diff --git a/data/battle_811DA74.s b/data/battle_811DA74.s
deleted file mode 100644
index 873c76eb9..000000000
--- a/data/battle_811DA74.s
+++ /dev/null
@@ -1,64 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gLinkPartnerBufferCommands:: @ 83FE4F4
- .4byte LinkPartnerHandleGetAttributes
- .4byte sub_811EC04
- .4byte LinkPartnerHandleSetAttributes
- .4byte sub_811F664
- .4byte sub_811F6D8
- .4byte sub_811F7F4
- .4byte sub_811F9D0
- .4byte sub_811FAE4
- .4byte sub_811FC30
- .4byte sub_811FC3C
- .4byte sub_811FCE8
- .4byte sub_811FDCC
- .4byte sub_811FDD8
- .4byte sub_811FDE4
- .4byte sub_811FDF0
- .4byte sub_811FDFC
- .4byte sub_8120094
- .4byte sub_81200F8
- .4byte sub_8120104
- .4byte sub_8120110
- .4byte sub_812011C
- .4byte sub_8120128
- .4byte sub_8120134
- .4byte sub_8120140
- .4byte LinkPartnerHandleHealthBarUpdate
- .4byte LinkPartnerHandleExpBarUpdate
- .4byte LinkPartnerHandleStatusIconUpdate
- .4byte LinkPartnerHandleStatusAnimation
- .4byte sub_8120324
- .4byte sub_8120330
- .4byte sub_812033C
- .4byte sub_8120348
- .4byte sub_8120354
- .4byte sub_8120360
- .4byte sub_812036C
- .4byte sub_8120378
- .4byte sub_8120384
- .4byte sub_8120390
- .4byte sub_81203AC
- .4byte sub_81203E4
- .4byte sub_81203FC
- .4byte LinkPartnerHandleHitAnimation
- .4byte sub_8120494
- .4byte LinkPartnerHandleEffectivenessSound
- .4byte sub_81204E4
- .4byte LinkPartnerHandleFaintingCry
- .4byte dp01t_2E_3_battle_intro
- .4byte sub_8120588
- .4byte dp01t_30_3_80EB11C
- .4byte sub_8120920
- .4byte sub_812096C
- .4byte sub_8120978
- .4byte sub_81209D8
- .4byte sub_8120A40
- .4byte sub_8120A4C
- .4byte sub_8120A58
- .4byte nullsub_75
diff --git a/data/battle_anim_81258BC.s b/data/battle_anim_81258BC.s
deleted file mode 100644
index 993adbc2e..000000000
--- a/data/battle_anim_81258BC.s
+++ /dev/null
@@ -1,64 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gSafariBufferCommands:: @ 8402080
- .4byte SafariHandleGetAttributes
- .4byte sub_812B870
- .4byte sub_812B87C
- .4byte sub_812B888
- .4byte sub_812B894
- .4byte sub_812B8A0
- .4byte sub_812B8AC
- .4byte sub_812B8B8
- .4byte sub_812B994
- .4byte sub_812B9A0
- .4byte sub_812B9AC
- .4byte sub_812B9B8
- .4byte sub_812B9C4
- .4byte sub_812BA14
- .4byte sub_812BA70
- .4byte sub_812BA7C
- .4byte SafariHandlePrintString
- .4byte SafariHandlePrintStringPlayerOnly
- .4byte sub_812BB10
- .4byte sub_812BBFC
- .4byte sub_812BC08
- .4byte sub_812BC14
- .4byte sub_812BC54
- .4byte sub_812BC60
- .4byte sub_812BC6C
- .4byte sub_812BC78
- .4byte sub_812BC84
- .4byte sub_812BCC0
- .4byte sub_812BCCC
- .4byte sub_812BCD8
- .4byte sub_812BCE4
- .4byte sub_812BCF0
- .4byte sub_812BCFC
- .4byte sub_812BD08
- .4byte sub_812BD14
- .4byte sub_812BD20
- .4byte sub_812BD2C
- .4byte sub_812BD38
- .4byte sub_812BD44
- .4byte sub_812BD50
- .4byte sub_812BD5C
- .4byte sub_812BD68
- .4byte sub_812BD74
- .4byte sub_812BD80
- .4byte sub_812BDC4
- .4byte sub_812BDF4
- .4byte dp01t_2E_6_battle_intro
- .4byte sub_812BE64
- .4byte sub_812BEB0
- .4byte sub_812BEBC
- .4byte sub_812BEC8
- .4byte sub_812BED4
- .4byte sub_812BEE0
- .4byte sub_812BF3C
- .4byte sub_812BF48
- .4byte sub_812BF54
- .4byte nullsub_78
diff --git a/data/battle_anim_8137220.s b/data/battle_anim_8137220.s
deleted file mode 100644
index c1673af9a..000000000
--- a/data/battle_anim_8137220.s
+++ /dev/null
@@ -1,64 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gWallyBufferCommands:: @ 84061A4
- .4byte dp01t_00_5_getattr
- .4byte sub_8138230
- .4byte sub_813823C
- .4byte sub_8138C90
- .4byte sub_8138C9C
- .4byte sub_8138CA8
- .4byte sub_8138CB4
- .4byte sub_8138D38
- .4byte sub_8138E04
- .4byte sub_8138ED0
- .4byte sub_8138EDC
- .4byte sub_8138EE8
- .4byte sub_8138EF4
- .4byte sub_8138F44
- .4byte sub_8138FA0
- .4byte sub_8138FAC
- .4byte sub_8139208
- .4byte dp01t_11_5_message_for_player_only
- .4byte sub_8139298
- .4byte sub_8139378
- .4byte sub_8139384
- .4byte sub_81393EC
- .4byte sub_813942C
- .4byte sub_8139438
- .4byte sub_8139444
- .4byte sub_8139544
- .4byte sub_8139550
- .4byte sub_813955C
- .4byte sub_8139568
- .4byte sub_8139574
- .4byte sub_8139580
- .4byte sub_813958C
- .4byte sub_8139598
- .4byte sub_81395A4
- .4byte sub_81395B0
- .4byte sub_81395BC
- .4byte sub_81395C8
- .4byte sub_81395D4
- .4byte sub_81395E0
- .4byte sub_81395EC
- .4byte sub_81395F8
- .4byte sub_8139604
- .4byte sub_8139674
- .4byte sub_8139680
- .4byte sub_81396B0
- .4byte sub_81396E0
- .4byte dp01t_2E_5_battle_intro
- .4byte sub_8139750
- .4byte sub_8139AA0
- .4byte sub_8139B20
- .4byte sub_8139B2C
- .4byte sub_8139B38
- .4byte sub_8139B44
- .4byte sub_8139BA0
- .4byte sub_8139BAC
- .4byte sub_8139BB8
- .4byte nullsub_80
diff --git a/data/battle_moves.inc b/data/battle_moves.s
index ff7e2cb33..ea32446d2 100644
--- a/data/battle_moves.inc
+++ b/data/battle_moves.s
@@ -1,3 +1,8 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .section .rodata
+
.align 2
gBattleMoves:: @ 81FB12C
@ NONE
diff --git a/data/battle_transition.s b/data/battle_transition.s
deleted file mode 100644
index 0d463ddef..000000000
--- a/data/battle_transition.s
+++ /dev/null
@@ -1,399 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gUnknown_083FBB88:: @ 83FBB88
- .incbin "graphics/battle_transitions/big_pokeball.4bpp"
-
- .align 2
-gUnknown_083FC108:: @ 83FC108
- .incbin "graphics/battle_transitions/pokeball_trail.4bpp"
-
- .align 2
-gSpriteImage_83FC148:: @ 83FC148
- .incbin "graphics/battle_transitions/pokeball.4bpp"
-
- .align 2
-gUnknown_083FC348:: @ 83FC348
- .incbin "graphics/battle_transitions/elite_four_bg.4bpp"
-
- .align 2
-gSpriteImage_83FC528:: @ 83FC528
- .incbin "graphics/battle_transitions/unused_brendan.4bpp"
-
- .align 2
-gSpriteImage_83FCD28:: @ 83FCD28
- .incbin "graphics/battle_transitions/unused_lass.4bpp"
-
- .align 2
-gUnknown_083FD528:: @ 83FD528
- .incbin "graphics/battle_transitions/shrinking_box.4bpp"
-
- .align 2
-gUnknown_083FD708:: @ 83FD708
- .4byte 0x0200c000
-
- .align 2
-gUnknown_083FD70C:: @ 83FD70C
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
-
- .align 2
-gBattleTransitionFuncs:: @ 83FD750
- .4byte sub_811ACB4
- .4byte sub_811ADAC
- .4byte sub_811AF44
- .4byte sub_811B0F0
- .4byte sub_811B578
- .4byte sub_811B7E8
- .4byte sub_811BCBC
- .4byte sub_811BEA0
- .4byte sub_811CA5C
- .4byte sub_811CCDC
- .4byte sub_811D0B8
- .4byte sub_811D1C8
- .4byte sub_811C08C
- .4byte sub_811C0AC
- .4byte sub_811C0CC
- .4byte sub_811C0EC
- .4byte sub_811C10C
-
- .align 2
-gUnknown_083FD794:: @ 83FD794
- .4byte sub_811AB88
- .4byte sub_811ABD8
- .4byte sub_811AC0C
- .4byte sub_811AC34
-
- .align 2
-gUnknown_083FD7A4:: @ 83FD7A4
- .4byte sub_811ACEC
- .4byte sub_811AD1C
- .4byte sub_811AD80
-
- .align 2
-gUnknown_083FD7B0:: @ 83FD7B0
- .4byte sub_811ADE4
- .4byte sub_811AE70
-
- .align 2
-gUnknown_083FD7B8:: @ 83FD7B8
- .4byte sub_811AF7C
- .4byte sub_811B000
-
- .align 2
-gUnknown_083FD7C0:: @ 83FD7C0
- .4byte sub_811B128
- .4byte sub_811B1D8
- .4byte sub_811B268
- .4byte sub_811B2F4
- .4byte sub_811B380
- .4byte sub_811B3EC
-
- .align 2
-gUnknown_083FD7D8:: @ 83FD7D8
- .4byte sub_811B5B0
- .4byte sub_811B5FC
- .4byte sub_811B688
-
- .align 1
-gUnknown_083FD7E4:: @ 83FD7E4
- .2byte -16
- .2byte 256
-
- .align 1
-gUnknown_083FD7E8:: @ 83FD7E8
- .2byte 0
- .2byte 32
- .2byte 64
- .2byte 18
- .2byte 48
-
- .align 1
-gUnknown_083FD7F2:: @ 83FD7F2
- .2byte 8
- .2byte -8
-
- .align 2
-gUnknown_083FD7F8:: @ 83FD7F8
- .4byte sub_811B820
- .4byte sub_811B884
- .4byte sub_811B90C
- .4byte sub_811B9F0
- .4byte sub_811BA70
- .4byte sub_811BB60
- .4byte sub_811BBEC
-
- .align 2
-gUnknown_083FD814:: @ 83FD814
- .4byte sub_811BCF4
- .4byte sub_811BD60
-
- .align 2
-gUnknown_083FD81C:: @ 83FD81C
- .4byte sub_811BED8
- .4byte sub_811BF2C
- .4byte sub_811BFC4
-
- .align 2
-gUnknown_083FD828:: @ 83FD828
- .4byte sub_811C164
- .4byte sub_811C1CC
- .4byte sub_811C2A4
- .4byte sub_811C38C
- .4byte sub_811C400
- .4byte sub_811C43C
- .4byte sub_811C4F0
- .4byte sub_811C5B4
- .4byte sub_811C5E8
- .4byte sub_811C630
-
-gUnknown_083FD850:: @ 83FD850
- .byte TRAINER_PIC_SIDNEY
- .byte TRAINER_PIC_PHOEBE
- .byte TRAINER_PIC_GLACIA
- .byte TRAINER_PIC_DRAKE
- .byte TRAINER_PIC_STEVEN
-
- .align 1
-gUnknown_083FD856:: @ 83FD856
- .2byte 0x200, 0x200
- .2byte 0x200, 0x200
- .2byte 0x1B0, 0x1B0
- .2byte 0x1A0, 0x1A0
- .2byte 0x188, 0x188
-
- .align 1
-gUnknown_083FD86A:: @ 83FD86A
- .2byte 0, 0
- .2byte 0, 0
- .2byte -4, 4
- .2byte 0, 5
- .2byte 0, 7
-
- .align 2
-gUnknown_083FD880:: @ 83FD880
- .4byte sub_811C934
- .4byte sub_811C938
- .4byte sub_811C984
- .4byte sub_811C9B8
- .4byte sub_811C934
- .4byte sub_811C9E4
- .4byte sub_811C934
-
- .align 1
-gUnknown_083FD89C:: @ 83FD89C
- .2byte 12, -12
-
- .align 1
-gUnknown_083FD8A0:: @ 83FD8A0
- .2byte -1, 1
-
- .align 2
-gUnknown_083FD8A4:: @ 83FD8A4
- .4byte sub_811CA94
- .4byte sub_811CB20
- .4byte sub_811CBE8
-
- .align 2
-gUnknown_083FD8B0:: @ 83FD8B0
- .4byte sub_811CD14
- .4byte sub_811CDA0
- .4byte sub_811CE14
- .4byte sub_811CE4C
- .4byte sub_811CEB0
-
- .align 1
-gUnknown_083FD8C4:: @ 83FD8C4
- .2byte 0
- .2byte 20
- .2byte 15
- .2byte 40
- .2byte 10
- .2byte 25
- .2byte 35
- .2byte 5
-
- .align 2
-gUnknown_083FD8D4:: @ 83FD8D4
- .4byte sub_811D0F0
- .4byte sub_811D144
- .4byte sub_811D19C
-
- .align 2
-gUnknown_083FD8E0:: @ 83FD8E0
- .4byte sub_811D200
- .4byte sub_811D260
- .4byte sub_811D2D8
- .4byte sub_811D3B0
- .4byte sub_811D41C
-
- .align 1
-gUnknown_083FD8F4:: @ 83FD8F4
- .2byte 56, 0, 0, 160, 0
- .2byte 104, 160, 240, 88, 1
- .2byte 240, 72, 56, 0, 1
- .2byte 0, 32, 144, 160, 0
- .2byte 144, 160, 184, 0, 1
- .2byte 56, 0, 168, 160, 0
- .2byte 168, 160, 48, 0, 1
-
- .align 1
-gUnknown_083FD93A:: @ 83FD93A
- .2byte 8
- .2byte 4
- .2byte 2
- .2byte 1
- .2byte 1
- .2byte 1
- .2byte 0
-
- .align 2
-gUnknown_083FD948:: @ 83FD948
- .4byte sub_811D584
- .4byte sub_811D5E0
-
- .align 2
-gSpriteImageTable_83FD950:: @ 83FD950
- obj_frame_tiles gSpriteImage_83FC148, 0x200
-
- .align 2
-gSpriteAnim_83FD958:: @ 83FD958
- obj_image_anim_frame 0, 1
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_83FD960:: @ 83FD960
- .4byte gSpriteAnim_83FD958
-
- .align 2
-gSpriteAffineAnim_83FD964:: @ 83FD964
- obj_rot_scal_anim_frame 0x0, 0x0, -4, 1
- obj_rot_scal_anim_jump 0
-
- .align 2
-gSpriteAffineAnim_83FD974:: @ 83FD974
- obj_rot_scal_anim_frame 0x0, 0x0, 4, 1
- obj_rot_scal_anim_jump 0
-
- .align 2
-gSpriteAffineAnimTable_83FD984:: @ 83FD984
- .4byte gSpriteAffineAnim_83FD964
- .4byte gSpriteAffineAnim_83FD974
-
- .align 2
-gSpriteTemplate_83FD98C:: @ 83FD98C
- spr_template 0xFFFF, 4105, gFieldOamData_32x32, gSpriteAnimTable_83FD960, gSpriteImageTable_83FD950, gSpriteAffineAnimTable_83FD984, sub_811B720
-
- .align 2
-gOamData_83FD9A4:: @ 83FD9A4
- .2byte 0x0000
- .2byte 0xC000
- .2byte 0x0000
-
- .align 2
-gSpriteImageTable_83FD9AC:: @ 83FD9AC
- obj_frame_tiles gSpriteImage_83FC528, 0x800
-
- .align 2
-gSpriteImageTable_83FD9B4:: @ 83FD9B4
- obj_frame_tiles gSpriteImage_83FCD28, 0x800
-
- .align 2
-gSpriteAnim_83FD9BC:: @ 83FD9BC
- obj_image_anim_frame 0, 1
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_83FD9C4:: @ 83FD9C4
- .4byte gSpriteAnim_83FD9BC
-
- .align 2
-gSpriteTemplate_83FD9C8:: @ 83FD9C8
- spr_template 0xFFFF, 4106, gOamData_83FD9A4, gSpriteAnimTable_83FD9C4, gSpriteImageTable_83FD9AC, gDummySpriteAffineAnimTable, sub_811C90C
-
- .align 2
-gSpriteTemplate_83FD9E0:: @ 83FD9E0
- spr_template 0xFFFF, 4106, gOamData_83FD9A4, gSpriteAnimTable_83FD9C4, gSpriteImageTable_83FD9B4, gDummySpriteAffineAnimTable, sub_811C90C
-
- .align 2
-gFieldEffectObjectPalette10:: @ 83FD9F8
- .incbin "graphics/field_effect_objects/palettes/10.gbapal"
-
- .align 2
-gFieldEffectObjectPaletteInfo10:: @ 83FDA18
- obj_pal gFieldEffectObjectPalette10, 0x1009
-
- .align 2
-Unknown_83FDA20:
- .incbin "graphics/battle_transitions/sidney_bg.gbapal"
-
- .align 2
-Unknown_83FDA40:
- .incbin "graphics/battle_transitions/phoebe_bg.gbapal"
-
- .align 2
-Unknown_83FDA60:
- .incbin "graphics/battle_transitions/glacia_bg.gbapal"
-
- .align 2
-Unknown_83FDA80:
- .incbin "graphics/battle_transitions/drake_bg.gbapal"
-
- .align 2
-Unknown_83FDAA0:
- .incbin "graphics/battle_transitions/steven_bg.gbapal"
-
- .align 2
-Unknown_83FDAC0:
- .incbin "graphics/battle_transitions/brendan_bg.gbapal"
-
- .align 2
-Unknown_83FDAE0:
- .incbin "graphics/battle_transitions/may_bg.gbapal"
-
- .align 2
-gUnknown_083FDB00:: @ 83FDB00
- .4byte Unknown_83FDA20
- .4byte Unknown_83FDA40
- .4byte Unknown_83FDA60
- .4byte Unknown_83FDA80
- .4byte Unknown_83FDAA0
-
- .align 2
-gUnknown_083FDB14:: @ 83FDB14
- .4byte Unknown_83FDAC0
- .4byte Unknown_83FDAE0
-
- .align 2
-UnusedTrainerPalette:
- .incbin "graphics/battle_transitions/unused_trainer.gbapal"
-
- .align 2
-gSpritePalette_UnusedTrainer:: @ 83FDB3C
- obj_pal UnusedTrainerPalette, 0x100A
-
- .align 2
-gUnknown_083FDB44:: @ 83FDB44
- .incbin "graphics/battle_transitions/big_pokeball_map.bin"
-
- .align 2
-gUnknown_083FDFF4:: @ 83FDFF4
- .incbin "graphics/battle_transitions/elite_four_bg_map.bin"
diff --git a/data/berry_blender.s b/data/berry_blender.s
deleted file mode 100644
index ff0f06473..000000000
--- a/data/berry_blender.s
+++ /dev/null
@@ -1,456 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gUnknown_08215C0C:: @ 8215C0C
- .incbin "graphics/berry_blender/center.gbapal"
-
- .align 2
-gUnknown_08215C2C:: @ 8215C2C
- .incbin "graphics/berry_blender/center_map.bin"
-
- .align 2
-gUnknown_0821602C:: @ 821602C
- .incbin "graphics/berry_blender/outer.gbapal"
-
- .incbin "graphics/unused/unknown/821604C.gbapal"
-
- .space 0x1C0
-
- .string "▶$"
- .string " $"
- .string "カッコイ$" @ "cool" (missing an イ at the end)
- .string "カワイイ$" @ "cute"
- .string "ウツクシ$" @ "beautiful" (missing an イ at the end)
- .string "カシコイ$" @ "smart"
- .string "タクマシ$" @ "tough" (missing an イ at the end)
-
-gUnknown_08216249:: @ 8216249
- .string "\p$"
-
-@ unreferenced
-@ These appear to be the first names of four people who worked on the game.
- .string "てつじ$", 10 @ Tetsuji (Ohta)
- .string "あきと$", 10 @ Akito (Mori)
- .string "シゲル$", 10 @ Shigeru (Ohmori)
- .string "ヨシノリ$", 10 @ Yoshinori (Matsuda)
-
-UnknownText_2Pok:
- .string "2Pok$"
-UnknownText_3Pok:
- .string "3Pok$"
-UnknownText_4Pok:
- .string "4Pok$"
-
- .align 2
-gUnknown_08216284:: @ 8216284
- .4byte UnknownText_2Pok
- .4byte UnknownText_3Pok
- .4byte UnknownText_4Pok
-
-@ unreferenced
- .string "1P$", 4
- .string "2P$", 4
- .string "3P$", 4
- .string "4P$", 4
-
-.ifdef ENGLISH
-UnknownText_Mister:
- .string "MISTER$"
-UnknownText_Laddie:
- .string "LADDIE$"
-UnknownText_Lassie:
- .string "LASSIE$"
-.else
-UnknownText_Mister:
- .string "OPI$"
-UnknownText_Laddie:
- .string "KUMPEL$"
-UnknownText_Lassie:
- .string "TUSSI$"
-.endif
-
- .align 2
-gUnknown_082162B8:: @ 82162B8
- .4byte UnknownText_Mister
- .4byte UnknownText_Laddie
- .4byte UnknownText_Lassie
-
-gUnknown_082162C4:: @ 82162C4
- .string "{COLOR RED}$"
-
-gUnknown_082162C8:: @ 82162C8
- .string "\n$"
-
- .string " $"
-
-gUnknown_082162CC:: @ 82162CC
- .byte -1, -1
- .byte 1, -1
- .byte -1, 1
- .byte 1, 1
-
-gUnknown_082162D4:: @ 82162D4
- .byte 2, 6
- .byte 23, 6
- .byte 2, 12
- .byte 23, 12
- .byte 1, 6
- .byte 22, 6
- .byte 1, 12
- .byte 22, 12
-
-gUnknown_082162E4:: @ 82162E4
- .byte 72, 32
- .byte 168, 32
- .byte 72, 128
- .byte 168, 128
-
-gUnknown_082162EC:: @ 82162EC
- .byte -1, 0, 1, -1
- .byte -1, 0, 1, 2
- .byte 0, 1, 2, 3
-
- .align 1
-gUnknown_082162F8:: @ 82162F8
- .2byte 0x0000, 0xC000, 0x4000, 0x8000
-
-gUnknown_08216300:: @ 8216300
- .byte 1
- .byte 1
- .byte 0
-
-gUnknown_08216303:: @ 8216303
- .byte 32
- .byte 224
- .byte 96
- .byte 160
- .byte 0
-
- .align 2
-gUnknown_08216308:: @ 8216308
- .4byte sub_804F8C8
- .4byte sub_804F9F4
- .4byte sub_804FB1C
-
- .align 2
-gOamData_8216314:: @ 8216314
- .2byte 0x0000
- .2byte 0x8000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_821631C:: @ 821631C
- obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8216324:: @ 8216324
- obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_821632C:: @ 821632C
- obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8216334:: @ 8216334
- obj_image_anim_frame 16, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_821633C:: @ 821633C
- obj_image_anim_frame 48, 2, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_frame 32, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_frame 48, 3, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8216350:: @ 8216350
- obj_image_anim_frame 48, 2, OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_frame 32, 5, OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_frame 48, 3, OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8216364:: @ 8216364
- obj_image_anim_frame 48, 2, OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_frame 32, 5, OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_frame 48, 3, OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8216378:: @ 8216378
- obj_image_anim_frame 48, 2
- obj_image_anim_frame 32, 5
- obj_image_anim_frame 48, 3
- obj_image_anim_frame 16, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_821638C:: @ 821638C
- obj_image_anim_frame 0, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8216394:: @ 8216394
- obj_image_anim_frame 0, 5, OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_821639C:: @ 821639C
- obj_image_anim_frame 0, 5, OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_82163A4:: @ 82163A4
- obj_image_anim_frame 0, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_82163AC:: @ 82163AC
- .4byte gSpriteAnim_821631C
- .4byte gSpriteAnim_8216324
- .4byte gSpriteAnim_821632C
- .4byte gSpriteAnim_8216334
- .4byte gSpriteAnim_821633C
- .4byte gSpriteAnim_8216350
- .4byte gSpriteAnim_8216364
- .4byte gSpriteAnim_8216378
- .4byte gSpriteAnim_821638C
- .4byte gSpriteAnim_8216394
- .4byte gSpriteAnim_821639C
- .4byte gSpriteAnim_82163A4
-
- .align 2
-gUnknown_082163DC:: @ 82163DC
- obj_tiles gBerryBlenderArrowTiles, 0x800, 46545
-
- .align 2
-gUnknown_082163E4:: @ 82163E4
- obj_pal gBerryBlenderMiscPalette, 46546
-
- .align 2
-gUnknown_082163EC:: @ 82163EC
- obj_pal gBerryBlenderArrowPalette, 12312
-
- .align 2
-gSpriteTemplate_82163F4:: @ 82163F4
- spr_template 46545, 12312, gOamData_8216314, gSpriteAnimTable_82163AC, NULL, gDummySpriteAffineAnimTable, sub_8051C04
-
- .align 2
-gOamData_821640C:: @ 821640C
- .2byte 0x0000
- .2byte 0x4000
- .2byte 0x0000
-
- .align 2
-gSpriteAnim_8216414:: @ 8216414
- obj_image_anim_frame 0, 20
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_821641C:: @ 821641C
- obj_image_anim_frame 4, 20, OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8216424:: @ 8216424
- obj_image_anim_frame 8, 4
- obj_image_anim_frame 12, 4
- obj_image_anim_frame 8, 4
- obj_image_anim_frame 12, 4
- obj_image_anim_frame 8, 4
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_821643C:: @ 821643C
- obj_image_anim_frame 8, 4
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_8216444:: @ 8216444
- .4byte gSpriteAnim_8216414
- .4byte gSpriteAnim_821641C
- .4byte gSpriteAnim_8216424
- .4byte gSpriteAnim_821643C
-
- .align 2
-gUnknown_08216454:: @ 8216454
- obj_tiles gBerryBlenderMarubatsuTiles, 0x200, 48888
-
- .align 2
-gSpriteTemplate_821645C:: @ 821645C
- spr_template 48888, 46546, gOamData_821640C, gSpriteAnimTable_8216444, NULL, gDummySpriteAffineAnimTable, sub_8051650
-
- .align 2
-gOamData_8216474:: @ 8216474
- .2byte 0x0000
- .2byte 0x0000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_821647C:: @ 821647C
- obj_image_anim_frame 0, 3
- obj_image_anim_frame 1, 4
- obj_image_anim_frame 3, 5
- obj_image_anim_frame 1, 4
- obj_image_anim_frame 0, 3
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8216494:: @ 8216494
- obj_image_anim_frame 0, 3
- obj_image_anim_frame 2, 4
- obj_image_anim_frame 4, 5
- obj_image_anim_frame 2, 4
- obj_image_anim_frame 0, 3
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_82164AC:: @ 82164AC
- obj_image_anim_frame 0, 2
- obj_image_anim_frame 1, 2
- obj_image_anim_frame 2, 2
- obj_image_anim_frame 4, 4
- obj_image_anim_frame 3, 3
- obj_image_anim_frame 2, 2
- obj_image_anim_frame 1, 2
- obj_image_anim_frame 0, 2
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_82164D0:: @ 82164D0
- obj_image_anim_frame 5, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_82164D8:: @ 82164D8
- obj_image_anim_frame 6, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_82164E0:: @ 82164E0
- .4byte gSpriteAnim_821647C
- .4byte gSpriteAnim_8216494
- .4byte gSpriteAnim_82164AC
- .4byte gSpriteAnim_82164D0
- .4byte gSpriteAnim_82164D8
-
- .align 2
-gUnknown_082164F4:: @ 82164F4
- obj_tiles gBerryBlenderParticlesTiles, 0xE0, 23456
-
- .align 2
-gSpriteTemplate_82164FC:: @ 82164FC
- spr_template 23456, 46546, gOamData_8216474, gSpriteAnimTable_82164E0, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gOamData_8216514:: @ 8216514
- .2byte 0x0000
- .2byte 0x8000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_821651C:: @ 821651C
- obj_image_anim_frame 32, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8216524:: @ 8216524
- obj_image_anim_frame 16, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_821652C:: @ 821652C
- obj_image_anim_frame 0, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_8216534:: @ 8216534
- .4byte gSpriteAnim_821651C
- .4byte gSpriteAnim_8216524
- .4byte gSpriteAnim_821652C
-
- .align 2
-gUnknown_08216540:: @ 8216540
- obj_tiles gBerryBlenderCountdownNumbersTiles, 0x600, 12345
-
- .align 2
-gSpriteTemplate_8216548:: @ 8216548
- spr_template 12345, 46546, gOamData_8216514, gSpriteAnimTable_8216534, NULL, gDummySpriteAffineAnimTable, sub_805181C
-
- .align 2
-gOamData_8216560:: @ 8216560
- .2byte 0x4000
- .2byte 0xC000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_8216568:: @ 8216568
- obj_image_anim_frame 0, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_8216570:: @ 8216570
- .4byte gSpriteAnim_8216568
-
- .align 2
-gUnknown_08216574:: @ 8216574
- obj_tiles gBerryBlenderStartTiles, 0x400, 12346
-
- .align 2
-gSpriteTemplate_821657C:: @ 821657C
- spr_template 12346, 46546, gOamData_8216560, gSpriteAnimTable_8216570, NULL, gDummySpriteAffineAnimTable, sub_80518CC
-
- .align 1
-gUnknown_08216594:: @ 8216594
- .2byte -10, 20, 10, 2, 1
- .2byte 250, 20, 10, -2, 1
- .2byte -10, 140, 10, 2, -1
- .2byte 250, 140, 10, -2, -1
-
-gUnknown_082165BC:: @ 82165BC
- .byte 4, 3, 2
- .byte 0, 4, 3
- .byte 1, 0, 4
- .byte 2, 1, 0
- .byte 3, 2, 1
- .byte 0, 2, 3
- .byte 1, 3, 4
- .byte 2, 4, 0
- .byte 3, 0, 1
- .byte 4, 1, 2
-
-gUnknown_082165DA:: @ 82165DA
- .byte 1, 1, 2, 3, 4
-
-gUnknown_082165DF:: @ 82165DF
- .byte 0x1C, 0x16, 0x13, 0x1A, 0x19, 0x0E, 0x0D, 0x0B, 0x07, 0x15
-
-gUnknown_082165E9:: @ 82165E9
- .byte 6, 6, 6, 6, 5
-
-gUnknown_082165EE:: @ 82165EE
- .byte 3, 3, 3, 2, 2
-
-gUnknown_082165F3:: @ 82165F3
- .byte 3, 3, 3, 3, 2
-
-gUnknown_082165F8:: @ 82165F8
- .string " $"
-
-gOtherText_BPMAndDash:: @ 82165FA
- .string "BPM$"
- .string "-$"
-
-gUnknown_08216600:: @ 8216600
- .string "\n$"
-
- .string "\n$"
diff --git a/data/data2b.s b/data/data2b.s
index 5fb3fa982..329384396 100644
--- a/data/data2b.s
+++ b/data/data2b.s
@@ -3,90 +3,6 @@
.section .rodata
- .string "ターン$" @ "turn"
-
- .align 2
-gPlayerBufferCommands:: @ 81FAD98
- .4byte PlayerHandleGetAttributes
- .4byte sub_802ECF0
- .4byte PlayerHandleSetAttributes
- .4byte sub_802F7CC
- .4byte PlayerHandleLoadPokeSprite
- .4byte PlayerHandleSendOutPoke
- .4byte PlayerHandleReturnPokeToBall
- .4byte PlayerHandleTrainerThrow
- .4byte PlayerHandleTrainerSlide
- .4byte PlayerHandleTrainerSlideBack
- .4byte sub_802FE7C
- .4byte sub_802FF60
- .4byte sub_802FF80
- .4byte PlayerHandleBallThrow
- .4byte PlayerHandlePuase
- .4byte PlayerHandleMoveAnimation
- .4byte PlayerHandlePrintString
- .4byte PlayerHandlePrintStringPlayerOnly
- .4byte sub_803037C
- .4byte nullsub_42
- .4byte sub_8030468
- .4byte PlayerHandleOpenBag
- .4byte sub_8030594
- .4byte sub_8030674
- .4byte PlayerHandleHealthBarUpdate
- .4byte PlayerHandleExpBarUpdate
- .4byte PlayerHandleStatusIconUpdate
- .4byte PlayerHandleStatusAnimation
- .4byte PlayerHandleStatusXor
- .4byte sub_803097C
- .4byte PlayerHandleDMATransfer
- .4byte sub_8030A3C
- .4byte sub_8030A6C
- .4byte sub_8030A78
- .4byte sub_8030A8C
- .4byte sub_8030AA0
- .4byte sub_8030AB4
- .4byte sub_8030AC8
- .4byte sub_8030AE4
- .4byte sub_8030B1C
- .4byte sub_8030B34
- .4byte PlayerHandleHitAnimation
- .4byte sub_8030BCC
- .4byte PlayerHandleEffectivenessSound
- .4byte sub_8030C1C
- .4byte PlayerHandleFaintingCry
- .4byte PlayerHandleIntroSlide
- .4byte PlayerHandleTrainerBallThrow
- .4byte sub_8030FAC
- .4byte sub_80310A4
- .4byte sub_80310F0
- .4byte PlayerHandleSpriteInvisibility
- .4byte PlayerHandleBattleAnimation
- .4byte PlayerHandleLinkStandbyMsg
- .4byte PlayerHandleResetActionMoveSelection
- .4byte sub_80312A0
- .4byte nullsub_43
-
-gUnknown_081FAE7C:: @ 81FAE7C
- .byte 0, 2, 3, 1
-
-gUnknown_081FAE80:: @ 81FAE80
- .string "{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW WHITE LIGHT_BLUE WHITE2}$"
-
-gUnknown_081FAE89:: @ 81FAE89
- .byte 8, 120
- .byte 88, 120
- .byte 8, 136
- .byte 88, 136
-
-gUnknown_081FAE91:: @ 81FAE91
- .byte 144, 120
- .byte 190, 120
- .byte 144, 136
- .byte 190, 136
- .byte 72, 72
- .byte 32, 90
- .byte 80, 80
- .byte 80, 88
-
.align 2
gUnknown_081FAEA4:: @ 81FAEA4
obj_tiles gSmokescreenImpactTiles, 0x180, 55019
@@ -160,129 +76,3 @@ gUnknown_081FAF4C:: @ 81FAF4C
.4byte 0x0200a000
.4byte 0x0200c000
.4byte 0x0200e000
-
- .align 2
-gOpponentBufferCommands:: @ 81FAF5C
- .4byte OpponentHandleGetAttributes
- .4byte dp01t_01_2_read_pokmon_data_slice
- .4byte OpponentHandleSetAttributes
- .4byte sub_8034744
- .4byte OpponentHandleLoadPokeSprite
- .4byte OpponentHandleSendOutPoke
- .4byte OpponentHandleReturnPokeToBall
- .4byte OpponentHandleTrainerThrow
- .4byte OpponentHandleTrainerSlide
- .4byte OpponentHandleTrainerSlideBack
- .4byte sub_8035030
- .4byte sub_80350D4
- .4byte sub_80350E0
- .4byte OpponentHandleBallThrow
- .4byte OpponentHandlePause
- .4byte OpponentHandleMoveAnimation
- .4byte OpponentHandlePrintString
- .4byte OpponentHandlePrintStringPlayerOnly
- .4byte sub_803540C
- .4byte sub_803541C
- .4byte sub_8035428
- .4byte sub_8035590
- .4byte sub_80355C0
- .4byte sub_80356C0
- .4byte OpponentHandleHealthBarUpdate
- .4byte OpponentHandleExpBarUpdate
- .4byte OpponentHandleStatusIconUpdate
- .4byte OpponentHandleStatusAnimation
- .4byte OpponentHandleStatusXor
- .4byte sub_80358B0
- .4byte OpponentHandleDMATransfer
- .4byte sub_80358C8
- .4byte sub_80358D4
- .4byte sub_80358E0
- .4byte sub_80358EC
- .4byte sub_80358F8
- .4byte sub_8035904
- .4byte sub_8035910
- .4byte sub_803592C
- .4byte sub_8035964
- .4byte sub_803597C
- .4byte OpponentHandleHitAnimation
- .4byte sub_8035A14
- .4byte OpponentHandleEffectivenessSound
- .4byte sub_8035A64
- .4byte OpponentHandleFaintingCry
- .4byte dp01t_2E_7_battle_intro
- .4byte sub_8035B04
- .4byte dp01t_30_7_0803D67C
- .4byte sub_8035E6C
- .4byte sub_8035EB8
- .4byte OpponentHandleSpriteInvisibility
- .4byte OpponentHandleBattleAnimation
- .4byte OpponentHandleLinkStandbyMsg
- .4byte OpponentHandleResetActionMoveSelection
- .4byte sub_8035FA4
- .4byte nullsub_46
-
-@ unreferenced unknown values
- .byte 0xB0, 0xB0, 0xC8, 0x98, 0x28, 0x28, 0x28, 0x20
-
- .align 2
-gLinkOpponentBufferCommands:: @ 81FB048
- .4byte LinkOpponentHandleGetAttributes
- .4byte sub_803889C
- .4byte sub_80388A8
- .4byte sub_8039220
- .4byte sub_8039294
- .4byte sub_80393E4
- .4byte sub_80395B4
- .4byte sub_80396D0
- .4byte sub_80398A4
- .4byte sub_80398B0
- .4byte sub_803995C
- .4byte sub_8039A00
- .4byte sub_8039A0C
- .4byte sub_8039A18
- .4byte sub_8039A24
- .4byte sub_8039A30
- .4byte sub_8039CC8
- .4byte sub_8039D2C
- .4byte sub_8039D38
- .4byte sub_8039D44
- .4byte sub_8039D50
- .4byte sub_8039D5C
- .4byte sub_8039D68
- .4byte sub_8039D74
- .4byte sub_8039D80
- .4byte sub_8039E70
- .4byte sub_8039E7C
- .4byte sub_8039EF0
- .4byte sub_8039F58
- .4byte sub_8039F64
- .4byte sub_8039F70
- .4byte sub_8039F7C
- .4byte sub_8039F88
- .4byte sub_8039F94
- .4byte sub_8039FA0
- .4byte sub_8039FAC
- .4byte sub_8039FB8
- .4byte sub_8039FC4
- .4byte sub_8039FE0
- .4byte sub_803A018
- .4byte sub_803A030
- .4byte dp01t_29_4_blink
- .4byte sub_803A0C8
- .4byte sub_803A0D4
- .4byte sub_803A118
- .4byte sub_803A148
- .4byte dp01t_2E_4_battle_intro
- .4byte sub_803A1B8
- .4byte sub_803A3DC
- .4byte sub_803A520
- .4byte sub_803A56C
- .4byte sub_803A578
- .4byte bx_exec_buffer_A_ch0_tbl4
- .4byte sub_803A640
- .4byte sub_803A64C
- .4byte sub_803A658
- .4byte nullsub_48
-
-@ 81FB12C
- .include "data/battle_moves.inc"
diff --git a/data/daycare.s b/data/daycare.s
deleted file mode 100644
index 92eb4637e..000000000
--- a/data/daycare.s
+++ /dev/null
@@ -1,17 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-@ 82091DC
- .include "data/egg_moves.inc"
-
- .align 2
-gUnknown_08209AC4:: @ 8209AC4
- .4byte DaycareText_GetAlongVeryWell
- .4byte DaycareText_GetAlong
- .4byte DaycareText_DontLikeOther
- .4byte DaycareText_PlayOther
-
-gUnknown_08209AD4:: @ 8209AD4
- .string "タマゴ$"
diff --git a/data/egg_hatch.s b/data/egg_hatch.s
deleted file mode 100644
index 1823409dd..000000000
--- a/data/egg_hatch.s
+++ /dev/null
@@ -1,122 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-EggPalette:: @ 8209AD8
- .incbin "graphics/pokemon/egg/palette.gbapal"
-
-EggHatchTiles:: @ 8209AF8
- .incbin "graphics/misc/egg_hatch.4bpp"
-
-EggShardTiles:: @ 820A2F8
- .incbin "graphics/misc/egg_shard.4bpp"
-
- .align 2
-gOamData_820A378:: @ 820A378
- .2byte 0x0000
- .2byte 0x8000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_820A380:: @ 820A380
- obj_image_anim_frame 0, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_820A388:: @ 820A388
- obj_image_anim_frame 16, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_820A390:: @ 820A390
- obj_image_anim_frame 32, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_820A398:: @ 820A398
- obj_image_anim_frame 48, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_820A3A0:: @ 820A3A0
- .4byte gSpriteAnim_820A380
- .4byte gSpriteAnim_820A388
- .4byte gSpriteAnim_820A390
- .4byte gSpriteAnim_820A398
-
- .align 2
-gUnknown_0820A3B0:: @ 820A3B0
- obj_tiles EggHatchTiles, 2048, 12345
-
- .align 2
-gUnknown_0820A3B8:: @ 820A3B8
- obj_tiles EggShardTiles, 128, 23456
-
- .align 2
-gUnknown_0820A3C0:: @ 820A3C0
- obj_pal EggPalette, 54321
-
- .align 2
-gSpriteTemplate_820A3C8:: @ 820A3C8
- spr_template 12345, 54321, gOamData_820A378, gSpriteAnimTable_820A3A0, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gOamData_820A3E0:: @ 820A3E0
- .2byte 0x0000
- .2byte 0x0000
- .2byte 0x0800
-
- .align 2
-gSpriteAnim_820A3E8:: @ 820A3E8
- obj_image_anim_frame 0, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_820A3F0:: @ 820A3F0
- obj_image_anim_frame 1, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_820A3F8:: @ 820A3F8
- obj_image_anim_frame 2, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_820A400:: @ 820A400
- obj_image_anim_frame 3, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_820A408:: @ 820A408
- .4byte gSpriteAnim_820A3E8
- .4byte gSpriteAnim_820A3F0
- .4byte gSpriteAnim_820A3F8
- .4byte gSpriteAnim_820A400
-
- .align 2
-gSpriteTemplate_820A418:: @ 820A418
- spr_template 23456, 54321, gOamData_820A3E0, gSpriteAnimTable_820A408, NULL, gDummySpriteAffineAnimTable, SpriteCB_EggShard
-
-@ The values are Q8.8 fixed-point numbers.
- .align 1
-gEggShardVelocities:: @ 820A430
- .2byte 0xFE80, 0xFC40 @ (-1.5, -3.75)
- .2byte 0xFB00, 0xFD00 @ (-5, -3)
- .2byte 0x0380, 0xFD00 @ (3.5, -3)
- .2byte 0xFC00, 0xFC40 @ (-4, -3.75)
- .2byte 0x0200, 0xFE80 @ (2, -1.5)
- .2byte 0xFF80, 0xF940 @ (-0.5, -6.75)
- .2byte 0x0500, 0xFDC0 @ (5, -2.25)
- .2byte 0xFE80, 0xFC40 @ (-1.5, -3.75)
- .2byte 0x0480, 0xFE80 @ (4.5, -1.5)
- .2byte 0xFF00, 0xF940 @ (-1, -6.75)
- .2byte 0x0400, 0xFDC0 @ (4, -2.25)
- .2byte 0xFC80, 0xFC40 @ (-3.5, -3.75)
- .2byte 0x0100, 0xFE80 @ (1, -1.5)
- .2byte 0xFC7C, 0xF940 @ (-3.515625, -6.75)
- .2byte 0x0480, 0xFDC0 @ (4.5, -2.25)
- .2byte 0xFF80, 0xF880 @ (-0.5, -7.5)
- .2byte 0x0100, 0xFB80 @ (1, -4.5)
- .2byte 0xFD80, 0xFDC0 @ (-2.5, -2.25)
- .2byte 0x0280, 0xF880 @ (2.5, -7.5)
diff --git a/data/egg_moves.inc b/data/egg_moves.inc
deleted file mode 100644
index e684e04ce..000000000
--- a/data/egg_moves.inc
+++ /dev/null
@@ -1,1306 +0,0 @@
- .align 2
-gEggMoves:: @ 82091DC
- egg_moves_begin SPECIES_BULBASAUR
- .2byte MOVE_LIGHT_SCREEN
- .2byte MOVE_SKULL_BASH
- .2byte MOVE_SAFEGUARD
- .2byte MOVE_CHARM
- .2byte MOVE_PETAL_DANCE
- .2byte MOVE_MAGICAL_LEAF
- .2byte MOVE_GRASS_WHISTLE
- .2byte MOVE_CURSE
-
- egg_moves_begin SPECIES_CHARMANDER
- .2byte MOVE_BELLY_DRUM
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_BITE
- .2byte MOVE_OUTRAGE
- .2byte MOVE_BEAT_UP
- .2byte MOVE_SWORDS_DANCE
- .2byte MOVE_DRAGON_DANCE
-
- egg_moves_begin SPECIES_SQUIRTLE
- .2byte MOVE_MIRROR_COAT
- .2byte MOVE_HAZE
- .2byte MOVE_MIST
- .2byte MOVE_FORESIGHT
- .2byte MOVE_FLAIL
- .2byte MOVE_REFRESH
- .2byte MOVE_MUD_SPORT
- .2byte MOVE_YAWN
-
- egg_moves_begin SPECIES_PIDGEY
- .2byte MOVE_PURSUIT
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_FORESIGHT
- .2byte MOVE_STEEL_WING
- .2byte MOVE_AIR_CUTTER
-
- egg_moves_begin SPECIES_RATTATA
- .2byte MOVE_SCREECH
- .2byte MOVE_FLAME_WHEEL
- .2byte MOVE_FURY_SWIPES
- .2byte MOVE_BITE
- .2byte MOVE_COUNTER
- .2byte MOVE_REVERSAL
- .2byte MOVE_UPROAR
- .2byte MOVE_SWAGGER
-
- egg_moves_begin SPECIES_SPEAROW
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_FALSE_SWIPE
- .2byte MOVE_SCARY_FACE
- .2byte MOVE_QUICK_ATTACK
- .2byte MOVE_TRI_ATTACK
- .2byte MOVE_ASTONISH
- .2byte MOVE_SKY_ATTACK
-
- egg_moves_begin SPECIES_EKANS
- .2byte MOVE_PURSUIT
- .2byte MOVE_SLAM
- .2byte MOVE_SPITE
- .2byte MOVE_BEAT_UP
- .2byte MOVE_POISON_FANG
-
- egg_moves_begin SPECIES_SANDSHREW
- .2byte MOVE_FLAIL
- .2byte MOVE_SAFEGUARD
- .2byte MOVE_COUNTER
- .2byte MOVE_RAPID_SPIN
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_METAL_CLAW
- .2byte MOVE_SWORDS_DANCE
- .2byte MOVE_CRUSH_CLAW
-
- egg_moves_begin SPECIES_NIDORAN_F
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_DISABLE
- .2byte MOVE_TAKE_DOWN
- .2byte MOVE_FOCUS_ENERGY
- .2byte MOVE_CHARM
- .2byte MOVE_COUNTER
- .2byte MOVE_BEAT_UP
-
- egg_moves_begin SPECIES_NIDORAN_M
- .2byte MOVE_COUNTER
- .2byte MOVE_DISABLE
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_TAKE_DOWN
- .2byte MOVE_AMNESIA
- .2byte MOVE_CONFUSION
- .2byte MOVE_BEAT_UP
-
- egg_moves_begin SPECIES_VULPIX
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_HYPNOSIS
- .2byte MOVE_FLAIL
- .2byte MOVE_SPITE
- .2byte MOVE_DISABLE
- .2byte MOVE_HOWL
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_HEAT_WAVE
-
- egg_moves_begin SPECIES_ZUBAT
- .2byte MOVE_QUICK_ATTACK
- .2byte MOVE_PURSUIT
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_GUST
- .2byte MOVE_WHIRLWIND
- .2byte MOVE_CURSE
-
- egg_moves_begin SPECIES_ODDISH
- .2byte MOVE_SWORDS_DANCE
- .2byte MOVE_RAZOR_LEAF
- .2byte MOVE_FLAIL
- .2byte MOVE_SYNTHESIS
- .2byte MOVE_CHARM
- .2byte MOVE_INGRAIN
-
- egg_moves_begin SPECIES_PARAS
- .2byte MOVE_FALSE_SWIPE
- .2byte MOVE_SCREECH
- .2byte MOVE_COUNTER
- .2byte MOVE_PSYBEAM
- .2byte MOVE_FLAIL
- .2byte MOVE_SWEET_SCENT
- .2byte MOVE_LIGHT_SCREEN
- .2byte MOVE_PURSUIT
-
- egg_moves_begin SPECIES_VENONAT
- .2byte MOVE_BATON_PASS
- .2byte MOVE_SCREECH
- .2byte MOVE_GIGA_DRAIN
- .2byte MOVE_SIGNAL_BEAM
-
- egg_moves_begin SPECIES_DIGLETT
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_SCREECH
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_PURSUIT
- .2byte MOVE_BEAT_UP
- .2byte MOVE_UPROAR
- .2byte MOVE_ROCK_SLIDE
-
- egg_moves_begin SPECIES_MEOWTH
- .2byte MOVE_SPITE
- .2byte MOVE_CHARM
- .2byte MOVE_HYPNOSIS
- .2byte MOVE_AMNESIA
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_ASSIST
-
- egg_moves_begin SPECIES_PSYDUCK
- .2byte MOVE_HYPNOSIS
- .2byte MOVE_PSYBEAM
- .2byte MOVE_FORESIGHT
- .2byte MOVE_LIGHT_SCREEN
- .2byte MOVE_FUTURE_SIGHT
- .2byte MOVE_PSYCHIC
- .2byte MOVE_CROSS_CHOP
- .2byte MOVE_REFRESH
-
- egg_moves_begin SPECIES_MANKEY
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_FORESIGHT
- .2byte MOVE_MEDITATE
- .2byte MOVE_COUNTER
- .2byte MOVE_REVERSAL
- .2byte MOVE_BEAT_UP
- .2byte MOVE_REVENGE
- .2byte MOVE_SMELLING_SALT
-
- egg_moves_begin SPECIES_GROWLITHE
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_SAFEGUARD
- .2byte MOVE_CRUNCH
- .2byte MOVE_THRASH
- .2byte MOVE_FIRE_SPIN
- .2byte MOVE_HOWL
- .2byte MOVE_HEAT_WAVE
-
- egg_moves_begin SPECIES_POLIWAG
- .2byte MOVE_MIST
- .2byte MOVE_SPLASH
- .2byte MOVE_BUBBLE_BEAM
- .2byte MOVE_HAZE
- .2byte MOVE_MIND_READER
- .2byte MOVE_WATER_SPORT
- .2byte MOVE_ICE_BALL
-
- egg_moves_begin SPECIES_ABRA
- .2byte MOVE_ENCORE
- .2byte MOVE_BARRIER
- .2byte MOVE_KNOCK_OFF
- .2byte MOVE_FIRE_PUNCH
- .2byte MOVE_THUNDER_PUNCH
- .2byte MOVE_ICE_PUNCH
-
- egg_moves_begin SPECIES_MACHOP
- .2byte MOVE_LIGHT_SCREEN
- .2byte MOVE_MEDITATE
- .2byte MOVE_ROLLING_KICK
- .2byte MOVE_ENCORE
- .2byte MOVE_SMELLING_SALT
- .2byte MOVE_COUNTER
- .2byte MOVE_ROCK_SLIDE
-
- egg_moves_begin SPECIES_BELLSPROUT
- .2byte MOVE_SWORDS_DANCE
- .2byte MOVE_ENCORE
- .2byte MOVE_REFLECT
- .2byte MOVE_SYNTHESIS
- .2byte MOVE_LEECH_LIFE
- .2byte MOVE_INGRAIN
- .2byte MOVE_MAGICAL_LEAF
-
- egg_moves_begin SPECIES_TENTACOOL
- .2byte MOVE_AURORA_BEAM
- .2byte MOVE_MIRROR_COAT
- .2byte MOVE_RAPID_SPIN
- .2byte MOVE_HAZE
- .2byte MOVE_SAFEGUARD
- .2byte MOVE_CONFUSE_RAY
-
- egg_moves_begin SPECIES_GEODUDE
- .2byte MOVE_MEGA_PUNCH
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_BLOCK
-
- egg_moves_begin SPECIES_PONYTA
- .2byte MOVE_FLAME_WHEEL
- .2byte MOVE_THRASH
- .2byte MOVE_DOUBLE_KICK
- .2byte MOVE_HYPNOSIS
- .2byte MOVE_CHARM
- .2byte MOVE_DOUBLE_EDGE
-
- egg_moves_begin SPECIES_SLOWPOKE
- .2byte MOVE_SAFEGUARD
- .2byte MOVE_BELLY_DRUM
- .2byte MOVE_FUTURE_SIGHT
- .2byte MOVE_STOMP
- .2byte MOVE_MUD_SPORT
- .2byte MOVE_SLEEP_TALK
- .2byte MOVE_SNORE
-
- egg_moves_begin SPECIES_FARFETCHD
- .2byte MOVE_STEEL_WING
- .2byte MOVE_FORESIGHT
- .2byte MOVE_MIRROR_MOVE
- .2byte MOVE_GUST
- .2byte MOVE_QUICK_ATTACK
- .2byte MOVE_FLAIL
- .2byte MOVE_FEATHER_DANCE
- .2byte MOVE_CURSE
-
- egg_moves_begin SPECIES_DODUO
- .2byte MOVE_QUICK_ATTACK
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_HAZE
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_FLAIL
- .2byte MOVE_ENDEAVOR
-
- egg_moves_begin SPECIES_SEEL
- .2byte MOVE_LICK
- .2byte MOVE_PERISH_SONG
- .2byte MOVE_DISABLE
- .2byte MOVE_HORN_DRILL
- .2byte MOVE_SLAM
- .2byte MOVE_ENCORE
- .2byte MOVE_FAKE_OUT
- .2byte MOVE_ICICLE_SPEAR
-
- egg_moves_begin SPECIES_GRIMER
- .2byte MOVE_HAZE
- .2byte MOVE_MEAN_LOOK
- .2byte MOVE_LICK
- .2byte MOVE_IMPRISON
- .2byte MOVE_CURSE
- .2byte MOVE_SHADOW_PUNCH
- .2byte MOVE_EXPLOSION
-
- egg_moves_begin SPECIES_SHELLDER
- .2byte MOVE_BUBBLE_BEAM
- .2byte MOVE_TAKE_DOWN
- .2byte MOVE_BARRIER
- .2byte MOVE_RAPID_SPIN
- .2byte MOVE_SCREECH
- .2byte MOVE_ICICLE_SPEAR
-
- egg_moves_begin SPECIES_GASTLY
- .2byte MOVE_PSYWAVE
- .2byte MOVE_PERISH_SONG
- .2byte MOVE_HAZE
- .2byte MOVE_ASTONISH
- .2byte MOVE_WILL_O_WISP
- .2byte MOVE_GRUDGE
- .2byte MOVE_EXPLOSION
-
- egg_moves_begin SPECIES_ONIX
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_FLAIL
- .2byte MOVE_EXPLOSION
- .2byte MOVE_BLOCK
-
- egg_moves_begin SPECIES_DROWZEE
- .2byte MOVE_BARRIER
- .2byte MOVE_ASSIST
- .2byte MOVE_ROLE_PLAY
- .2byte MOVE_FIRE_PUNCH
- .2byte MOVE_THUNDER_PUNCH
- .2byte MOVE_ICE_PUNCH
-
- egg_moves_begin SPECIES_KRABBY
- .2byte MOVE_DIG
- .2byte MOVE_HAZE
- .2byte MOVE_AMNESIA
- .2byte MOVE_FLAIL
- .2byte MOVE_SLAM
- .2byte MOVE_KNOCK_OFF
- .2byte MOVE_SWORDS_DANCE
-
- egg_moves_begin SPECIES_EXEGGCUTE
- .2byte MOVE_SYNTHESIS
- .2byte MOVE_MOONLIGHT
- .2byte MOVE_REFLECT
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_INGRAIN
- .2byte MOVE_CURSE
-
- egg_moves_begin SPECIES_CUBONE
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_BELLY_DRUM
- .2byte MOVE_SCREECH
- .2byte MOVE_SKULL_BASH
- .2byte MOVE_PERISH_SONG
- .2byte MOVE_SWORDS_DANCE
-
- egg_moves_begin SPECIES_LICKITUNG
- .2byte MOVE_BELLY_DRUM
- .2byte MOVE_MAGNITUDE
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_CURSE
- .2byte MOVE_SMELLING_SALT
- .2byte MOVE_SLEEP_TALK
- .2byte MOVE_SNORE
- .2byte MOVE_SUBSTITUTE
-
- egg_moves_begin SPECIES_KOFFING
- .2byte MOVE_SCREECH
- .2byte MOVE_PSYWAVE
- .2byte MOVE_PSYBEAM
- .2byte MOVE_DESTINY_BOND
- .2byte MOVE_PAIN_SPLIT
- .2byte MOVE_WILL_O_WISP
-
- egg_moves_begin SPECIES_RHYHORN
- .2byte MOVE_CRUNCH
- .2byte MOVE_REVERSAL
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_COUNTER
- .2byte MOVE_MAGNITUDE
- .2byte MOVE_SWORDS_DANCE
- .2byte MOVE_CURSE
- .2byte MOVE_CRUSH_CLAW
-
- egg_moves_begin SPECIES_CHANSEY
- .2byte MOVE_PRESENT
- .2byte MOVE_METRONOME
- .2byte MOVE_HEAL_BELL
- .2byte MOVE_AROMATHERAPY
- .2byte MOVE_SUBSTITUTE
-
- egg_moves_begin SPECIES_TANGELA
- .2byte MOVE_FLAIL
- .2byte MOVE_CONFUSION
- .2byte MOVE_MEGA_DRAIN
- .2byte MOVE_REFLECT
- .2byte MOVE_AMNESIA
- .2byte MOVE_LEECH_SEED
- .2byte MOVE_NATURE_POWER
-
- egg_moves_begin SPECIES_KANGASKHAN
- .2byte MOVE_STOMP
- .2byte MOVE_FORESIGHT
- .2byte MOVE_FOCUS_ENERGY
- .2byte MOVE_SAFEGUARD
- .2byte MOVE_DISABLE
- .2byte MOVE_COUNTER
- .2byte MOVE_CRUSH_CLAW
- .2byte MOVE_SUBSTITUTE
-
- egg_moves_begin SPECIES_HORSEA
- .2byte MOVE_FLAIL
- .2byte MOVE_AURORA_BEAM
- .2byte MOVE_OCTAZOOKA
- .2byte MOVE_DISABLE
- .2byte MOVE_SPLASH
- .2byte MOVE_DRAGON_RAGE
- .2byte MOVE_DRAGON_BREATH
-
- egg_moves_begin SPECIES_GOLDEEN
- .2byte MOVE_PSYBEAM
- .2byte MOVE_HAZE
- .2byte MOVE_HYDRO_PUMP
- .2byte MOVE_SLEEP_TALK
- .2byte MOVE_MUD_SPORT
-
- egg_moves_begin SPECIES_MR_MIME
- .2byte MOVE_FUTURE_SIGHT
- .2byte MOVE_HYPNOSIS
- .2byte MOVE_MIMIC
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_FAKE_OUT
- .2byte MOVE_TRICK
-
- egg_moves_begin SPECIES_SCYTHER
- .2byte MOVE_COUNTER
- .2byte MOVE_SAFEGUARD
- .2byte MOVE_BATON_PASS
- .2byte MOVE_RAZOR_WIND
- .2byte MOVE_REVERSAL
- .2byte MOVE_LIGHT_SCREEN
- .2byte MOVE_ENDURE
- .2byte MOVE_SILVER_WIND
-
- egg_moves_begin SPECIES_PINSIR
- .2byte MOVE_FURY_ATTACK
- .2byte MOVE_FLAIL
- .2byte MOVE_FALSE_SWIPE
- .2byte MOVE_FAINT_ATTACK
-
- egg_moves_begin SPECIES_LAPRAS
- .2byte MOVE_FORESIGHT
- .2byte MOVE_SUBSTITUTE
- .2byte MOVE_TICKLE
- .2byte MOVE_REFRESH
- .2byte MOVE_DRAGON_DANCE
- .2byte MOVE_CURSE
- .2byte MOVE_SLEEP_TALK
- .2byte MOVE_HORN_DRILL
-
- egg_moves_begin SPECIES_EEVEE
- .2byte MOVE_CHARM
- .2byte MOVE_FLAIL
- .2byte MOVE_ENDURE
- .2byte MOVE_CURSE
- .2byte MOVE_TICKLE
- .2byte MOVE_WISH
-
- egg_moves_begin SPECIES_OMANYTE
- .2byte MOVE_BUBBLE_BEAM
- .2byte MOVE_AURORA_BEAM
- .2byte MOVE_SLAM
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_HAZE
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_SPIKES
-
- egg_moves_begin SPECIES_KABUTO
- .2byte MOVE_BUBBLE_BEAM
- .2byte MOVE_AURORA_BEAM
- .2byte MOVE_RAPID_SPIN
- .2byte MOVE_DIG
- .2byte MOVE_FLAIL
- .2byte MOVE_KNOCK_OFF
- .2byte MOVE_CONFUSE_RAY
-
- egg_moves_begin SPECIES_AERODACTYL
- .2byte MOVE_WHIRLWIND
- .2byte MOVE_PURSUIT
- .2byte MOVE_FORESIGHT
- .2byte MOVE_STEEL_WING
- .2byte MOVE_DRAGON_BREATH
- .2byte MOVE_CURSE
-
- egg_moves_begin SPECIES_SNORLAX
- .2byte MOVE_LICK
- .2byte MOVE_CHARM
- .2byte MOVE_DOUBLE_EDGE
- .2byte MOVE_CURSE
- .2byte MOVE_FISSURE
- .2byte MOVE_SUBSTITUTE
-
- egg_moves_begin SPECIES_DRATINI
- .2byte MOVE_LIGHT_SCREEN
- .2byte MOVE_MIST
- .2byte MOVE_HAZE
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_DRAGON_BREATH
- .2byte MOVE_DRAGON_DANCE
-
- egg_moves_begin SPECIES_CHIKORITA
- .2byte MOVE_VINE_WHIP
- .2byte MOVE_LEECH_SEED
- .2byte MOVE_COUNTER
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_FLAIL
- .2byte MOVE_NATURE_POWER
- .2byte MOVE_INGRAIN
- .2byte MOVE_GRASS_WHISTLE
-
- egg_moves_begin SPECIES_CYNDAQUIL
- .2byte MOVE_FURY_SWIPES
- .2byte MOVE_QUICK_ATTACK
- .2byte MOVE_REVERSAL
- .2byte MOVE_THRASH
- .2byte MOVE_FORESIGHT
- .2byte MOVE_COVET
- .2byte MOVE_HOWL
- .2byte MOVE_CRUSH_CLAW
-
- egg_moves_begin SPECIES_TOTODILE
- .2byte MOVE_CRUNCH
- .2byte MOVE_THRASH
- .2byte MOVE_HYDRO_PUMP
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_MUD_SPORT
- .2byte MOVE_WATER_SPORT
- .2byte MOVE_DRAGON_CLAW
-
- egg_moves_begin SPECIES_SENTRET
- .2byte MOVE_DOUBLE_EDGE
- .2byte MOVE_PURSUIT
- .2byte MOVE_SLASH
- .2byte MOVE_FOCUS_ENERGY
- .2byte MOVE_REVERSAL
- .2byte MOVE_SUBSTITUTE
- .2byte MOVE_TRICK
- .2byte MOVE_ASSIST
-
- egg_moves_begin SPECIES_HOOTHOOT
- .2byte MOVE_MIRROR_MOVE
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_WING_ATTACK
- .2byte MOVE_WHIRLWIND
- .2byte MOVE_SKY_ATTACK
- .2byte MOVE_FEATHER_DANCE
-
- egg_moves_begin SPECIES_LEDYBA
- .2byte MOVE_PSYBEAM
- .2byte MOVE_BIDE
- .2byte MOVE_SILVER_WIND
-
- egg_moves_begin SPECIES_SPINARAK
- .2byte MOVE_PSYBEAM
- .2byte MOVE_DISABLE
- .2byte MOVE_SONIC_BOOM
- .2byte MOVE_BATON_PASS
- .2byte MOVE_PURSUIT
- .2byte MOVE_SIGNAL_BEAM
-
- egg_moves_begin SPECIES_CHINCHOU
- .2byte MOVE_FLAIL
- .2byte MOVE_SCREECH
- .2byte MOVE_AMNESIA
-
- egg_moves_begin SPECIES_PICHU
- .2byte MOVE_REVERSAL
- .2byte MOVE_BIDE
- .2byte MOVE_PRESENT
- .2byte MOVE_ENCORE
- .2byte MOVE_DOUBLE_SLAP
- .2byte MOVE_WISH
- .2byte MOVE_CHARGE
-
- egg_moves_begin SPECIES_CLEFFA
- .2byte MOVE_PRESENT
- .2byte MOVE_METRONOME
- .2byte MOVE_AMNESIA
- .2byte MOVE_BELLY_DRUM
- .2byte MOVE_SPLASH
- .2byte MOVE_MIMIC
- .2byte MOVE_WISH
- .2byte MOVE_SUBSTITUTE
-
- egg_moves_begin SPECIES_IGGLYBUFF
- .2byte MOVE_PERISH_SONG
- .2byte MOVE_PRESENT
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_WISH
- .2byte MOVE_FAKE_TEARS
-
- egg_moves_begin SPECIES_TOGEPI
- .2byte MOVE_PRESENT
- .2byte MOVE_MIRROR_MOVE
- .2byte MOVE_PECK
- .2byte MOVE_FORESIGHT
- .2byte MOVE_FUTURE_SIGHT
- .2byte MOVE_SUBSTITUTE
- .2byte MOVE_PSYCH_UP
-
- egg_moves_begin SPECIES_NATU
- .2byte MOVE_HAZE
- .2byte MOVE_DRILL_PECK
- .2byte MOVE_QUICK_ATTACK
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_STEEL_WING
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_FEATHER_DANCE
- .2byte MOVE_REFRESH
-
- egg_moves_begin SPECIES_MAREEP
- .2byte MOVE_TAKE_DOWN
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_SAFEGUARD
- .2byte MOVE_SCREECH
- .2byte MOVE_REFLECT
- .2byte MOVE_ODOR_SLEUTH
- .2byte MOVE_CHARGE
-
- egg_moves_begin SPECIES_MARILL
- .2byte MOVE_LIGHT_SCREEN
- .2byte MOVE_PRESENT
- .2byte MOVE_AMNESIA
- .2byte MOVE_FUTURE_SIGHT
- .2byte MOVE_BELLY_DRUM
- .2byte MOVE_PERISH_SONG
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_SUBSTITUTE
-
- egg_moves_begin SPECIES_SUDOWOODO
- .2byte MOVE_SELF_DESTRUCT
-
- egg_moves_begin SPECIES_HOPPIP
- .2byte MOVE_CONFUSION
- .2byte MOVE_ENCORE
- .2byte MOVE_DOUBLE_EDGE
- .2byte MOVE_REFLECT
- .2byte MOVE_AMNESIA
- .2byte MOVE_HELPING_HAND
- .2byte MOVE_PSYCH_UP
-
- egg_moves_begin SPECIES_AIPOM
- .2byte MOVE_COUNTER
- .2byte MOVE_SCREECH
- .2byte MOVE_PURSUIT
- .2byte MOVE_AGILITY
- .2byte MOVE_SPITE
- .2byte MOVE_SLAM
- .2byte MOVE_DOUBLE_SLAP
- .2byte MOVE_BEAT_UP
-
- egg_moves_begin SPECIES_SUNKERN
- .2byte MOVE_GRASS_WHISTLE
- .2byte MOVE_ENCORE
- .2byte MOVE_LEECH_SEED
- .2byte MOVE_NATURE_POWER
- .2byte MOVE_CURSE
- .2byte MOVE_HELPING_HAND
-
- egg_moves_begin SPECIES_YANMA
- .2byte MOVE_WHIRLWIND
- .2byte MOVE_REVERSAL
- .2byte MOVE_LEECH_LIFE
- .2byte MOVE_SIGNAL_BEAM
- .2byte MOVE_SILVER_WIND
-
- egg_moves_begin SPECIES_WOOPER
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_SAFEGUARD
- .2byte MOVE_CURSE
- .2byte MOVE_MUD_SPORT
- .2byte MOVE_STOCKPILE
- .2byte MOVE_SWALLOW
- .2byte MOVE_SPIT_UP
-
- egg_moves_begin SPECIES_MURKROW
- .2byte MOVE_WHIRLWIND
- .2byte MOVE_DRILL_PECK
- .2byte MOVE_MIRROR_MOVE
- .2byte MOVE_WING_ATTACK
- .2byte MOVE_SKY_ATTACK
- .2byte MOVE_CONFUSE_RAY
- .2byte MOVE_FEATHER_DANCE
- .2byte MOVE_PERISH_SONG
-
- egg_moves_begin SPECIES_MISDREAVUS
- .2byte MOVE_SCREECH
- .2byte MOVE_DESTINY_BOND
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_IMPRISON
-
- egg_moves_begin SPECIES_GIRAFARIG
- .2byte MOVE_TAKE_DOWN
- .2byte MOVE_AMNESIA
- .2byte MOVE_FORESIGHT
- .2byte MOVE_FUTURE_SIGHT
- .2byte MOVE_BEAT_UP
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_WISH
- .2byte MOVE_MAGIC_COAT
-
- egg_moves_begin SPECIES_PINECO
- .2byte MOVE_REFLECT
- .2byte MOVE_PIN_MISSILE
- .2byte MOVE_FLAIL
- .2byte MOVE_SWIFT
- .2byte MOVE_COUNTER
- .2byte MOVE_SAND_TOMB
-
- egg_moves_begin SPECIES_DUNSPARCE
- .2byte MOVE_BIDE
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_BITE
- .2byte MOVE_HEADBUTT
- .2byte MOVE_ASTONISH
- .2byte MOVE_CURSE
-
- egg_moves_begin SPECIES_GLIGAR
- .2byte MOVE_METAL_CLAW
- .2byte MOVE_WING_ATTACK
- .2byte MOVE_RAZOR_WIND
- .2byte MOVE_COUNTER
- .2byte MOVE_SAND_TOMB
-
- egg_moves_begin SPECIES_SNUBBULL
- .2byte MOVE_METRONOME
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_REFLECT
- .2byte MOVE_PRESENT
- .2byte MOVE_CRUNCH
- .2byte MOVE_HEAL_BELL
- .2byte MOVE_SNORE
- .2byte MOVE_SMELLING_SALT
-
- egg_moves_begin SPECIES_QWILFISH
- .2byte MOVE_FLAIL
- .2byte MOVE_HAZE
- .2byte MOVE_BUBBLE_BEAM
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_ASTONISH
-
- egg_moves_begin SPECIES_SHUCKLE
- .2byte MOVE_SWEET_SCENT
-
- egg_moves_begin SPECIES_HERACROSS
- .2byte MOVE_HARDEN
- .2byte MOVE_BIDE
- .2byte MOVE_FLAIL
- .2byte MOVE_FALSE_SWIPE
-
- egg_moves_begin SPECIES_SNEASEL
- .2byte MOVE_COUNTER
- .2byte MOVE_SPITE
- .2byte MOVE_FORESIGHT
- .2byte MOVE_REFLECT
- .2byte MOVE_BITE
- .2byte MOVE_CRUSH_CLAW
- .2byte MOVE_FAKE_OUT
-
- egg_moves_begin SPECIES_TEDDIURSA
- .2byte MOVE_CRUNCH
- .2byte MOVE_TAKE_DOWN
- .2byte MOVE_SEISMIC_TOSS
- .2byte MOVE_COUNTER
- .2byte MOVE_METAL_CLAW
- .2byte MOVE_FAKE_TEARS
- .2byte MOVE_YAWN
- .2byte MOVE_SLEEP_TALK
-
- egg_moves_begin SPECIES_SLUGMA
- .2byte MOVE_ACID_ARMOR
- .2byte MOVE_HEAT_WAVE
-
- egg_moves_begin SPECIES_SWINUB
- .2byte MOVE_TAKE_DOWN
- .2byte MOVE_BITE
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_MUD_SHOT
- .2byte MOVE_ICICLE_SPEAR
- .2byte MOVE_DOUBLE_EDGE
-
- egg_moves_begin SPECIES_CORSOLA
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_SCREECH
- .2byte MOVE_MIST
- .2byte MOVE_AMNESIA
- .2byte MOVE_BARRIER
- .2byte MOVE_INGRAIN
- .2byte MOVE_CONFUSE_RAY
- .2byte MOVE_ICICLE_SPEAR
-
- egg_moves_begin SPECIES_REMORAID
- .2byte MOVE_AURORA_BEAM
- .2byte MOVE_OCTAZOOKA
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_HAZE
- .2byte MOVE_SCREECH
- .2byte MOVE_THUNDER_WAVE
- .2byte MOVE_ROCK_BLAST
-
- egg_moves_begin SPECIES_DELIBIRD
- .2byte MOVE_AURORA_BEAM
- .2byte MOVE_QUICK_ATTACK
- .2byte MOVE_FUTURE_SIGHT
- .2byte MOVE_SPLASH
- .2byte MOVE_RAPID_SPIN
- .2byte MOVE_ICE_BALL
-
- egg_moves_begin SPECIES_MANTINE
- .2byte MOVE_TWISTER
- .2byte MOVE_HYDRO_PUMP
- .2byte MOVE_HAZE
- .2byte MOVE_SLAM
- .2byte MOVE_MUD_SPORT
- .2byte MOVE_ROCK_SLIDE
-
- egg_moves_begin SPECIES_SKARMORY
- .2byte MOVE_DRILL_PECK
- .2byte MOVE_PURSUIT
- .2byte MOVE_WHIRLWIND
- .2byte MOVE_SKY_ATTACK
- .2byte MOVE_CURSE
-
- egg_moves_begin SPECIES_HOUNDOUR
- .2byte MOVE_FIRE_SPIN
- .2byte MOVE_RAGE
- .2byte MOVE_PURSUIT
- .2byte MOVE_COUNTER
- .2byte MOVE_SPITE
- .2byte MOVE_REVERSAL
- .2byte MOVE_BEAT_UP
- .2byte MOVE_WILL_O_WISP
-
- egg_moves_begin SPECIES_PHANPY
- .2byte MOVE_FOCUS_ENERGY
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_SNORE
- .2byte MOVE_COUNTER
- .2byte MOVE_FISSURE
-
- egg_moves_begin SPECIES_STANTLER
- .2byte MOVE_SPITE
- .2byte MOVE_DISABLE
- .2byte MOVE_BITE
- .2byte MOVE_SWAGGER
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_EXTRASENSORY
-
- egg_moves_begin SPECIES_TYROGUE
- .2byte MOVE_RAPID_SPIN
- .2byte MOVE_HI_JUMP_KICK
- .2byte MOVE_MACH_PUNCH
- .2byte MOVE_MIND_READER
- .2byte MOVE_HELPING_HAND
-
- egg_moves_begin SPECIES_SMOOCHUM
- .2byte MOVE_MEDITATE
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_FAKE_OUT
- .2byte MOVE_WISH
- .2byte MOVE_ICE_PUNCH
-
- egg_moves_begin SPECIES_ELEKID
- .2byte MOVE_KARATE_CHOP
- .2byte MOVE_BARRIER
- .2byte MOVE_ROLLING_KICK
- .2byte MOVE_MEDITATE
- .2byte MOVE_CROSS_CHOP
- .2byte MOVE_FIRE_PUNCH
- .2byte MOVE_ICE_PUNCH
-
- egg_moves_begin SPECIES_MAGBY
- .2byte MOVE_KARATE_CHOP
- .2byte MOVE_MEGA_PUNCH
- .2byte MOVE_BARRIER
- .2byte MOVE_SCREECH
- .2byte MOVE_CROSS_CHOP
- .2byte MOVE_THUNDER_PUNCH
-
- egg_moves_begin SPECIES_MILTANK
- .2byte MOVE_PRESENT
- .2byte MOVE_REVERSAL
- .2byte MOVE_SEISMIC_TOSS
- .2byte MOVE_ENDURE
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_CURSE
- .2byte MOVE_HELPING_HAND
- .2byte MOVE_SLEEP_TALK
-
- egg_moves_begin SPECIES_LARVITAR
- .2byte MOVE_PURSUIT
- .2byte MOVE_STOMP
- .2byte MOVE_OUTRAGE
- .2byte MOVE_FOCUS_ENERGY
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_DRAGON_DANCE
- .2byte MOVE_CURSE
-
- egg_moves_begin SPECIES_TREECKO
- .2byte MOVE_CRUNCH
- .2byte MOVE_MUD_SPORT
- .2byte MOVE_ENDEAVOR
- .2byte MOVE_LEECH_SEED
- .2byte MOVE_DRAGON_BREATH
- .2byte MOVE_CRUSH_CLAW
-
- egg_moves_begin SPECIES_TORCHIC
- .2byte MOVE_COUNTER
- .2byte MOVE_REVERSAL
- .2byte MOVE_ENDURE
- .2byte MOVE_SWAGGER
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_SMELLING_SALT
-
- egg_moves_begin SPECIES_MUDKIP
- .2byte MOVE_REFRESH
- .2byte MOVE_UPROAR
- .2byte MOVE_CURSE
- .2byte MOVE_STOMP
- .2byte MOVE_ICE_BALL
- .2byte MOVE_MIRROR_COAT
-
- egg_moves_begin SPECIES_POOCHYENA
- .2byte MOVE_ASTONISH
- .2byte MOVE_POISON_FANG
- .2byte MOVE_COVET
- .2byte MOVE_LEER
- .2byte MOVE_YAWN
-
- egg_moves_begin SPECIES_ZIGZAGOON
- .2byte MOVE_CHARM
- .2byte MOVE_PURSUIT
- .2byte MOVE_SUBSTITUTE
- .2byte MOVE_TICKLE
- .2byte MOVE_TRICK
-
- egg_moves_begin SPECIES_LOTAD
- .2byte MOVE_SYNTHESIS
- .2byte MOVE_RAZOR_LEAF
- .2byte MOVE_SWEET_SCENT
- .2byte MOVE_LEECH_SEED
- .2byte MOVE_FLAIL
- .2byte MOVE_WATER_GUN
-
- egg_moves_begin SPECIES_SEEDOT
- .2byte MOVE_LEECH_SEED
- .2byte MOVE_AMNESIA
- .2byte MOVE_QUICK_ATTACK
- .2byte MOVE_RAZOR_WIND
- .2byte MOVE_TAKE_DOWN
- .2byte MOVE_FALSE_SWIPE
-
- egg_moves_begin SPECIES_NINCADA
- .2byte MOVE_ENDURE
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_GUST
- .2byte MOVE_SILVER_WIND
-
- egg_moves_begin SPECIES_TAILLOW
- .2byte MOVE_PURSUIT
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_REFRESH
- .2byte MOVE_MIRROR_MOVE
- .2byte MOVE_RAGE
- .2byte MOVE_SKY_ATTACK
-
- egg_moves_begin SPECIES_SHROOMISH
- .2byte MOVE_FAKE_TEARS
- .2byte MOVE_SWAGGER
- .2byte MOVE_CHARM
- .2byte MOVE_FALSE_SWIPE
- .2byte MOVE_HELPING_HAND
-
- egg_moves_begin SPECIES_SPINDA
- .2byte MOVE_ENCORE
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_ASSIST
- .2byte MOVE_DISABLE
- .2byte MOVE_BATON_PASS
- .2byte MOVE_WISH
- .2byte MOVE_TRICK
- .2byte MOVE_SMELLING_SALT
-
- egg_moves_begin SPECIES_WINGULL
- .2byte MOVE_MIST
- .2byte MOVE_TWISTER
- .2byte MOVE_AGILITY
- .2byte MOVE_GUST
- .2byte MOVE_WATER_SPORT
-
- egg_moves_begin SPECIES_SURSKIT
- .2byte MOVE_FORESIGHT
- .2byte MOVE_MUD_SHOT
- .2byte MOVE_PSYBEAM
- .2byte MOVE_HYDRO_PUMP
- .2byte MOVE_MIND_READER
-
- egg_moves_begin SPECIES_WAILMER
- .2byte MOVE_DOUBLE_EDGE
- .2byte MOVE_THRASH
- .2byte MOVE_SWAGGER
- .2byte MOVE_SNORE
- .2byte MOVE_SLEEP_TALK
- .2byte MOVE_CURSE
- .2byte MOVE_FISSURE
- .2byte MOVE_TICKLE
-
- egg_moves_begin SPECIES_SKITTY
- .2byte MOVE_HELPING_HAND
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_UPROAR
- .2byte MOVE_FAKE_TEARS
- .2byte MOVE_WISH
- .2byte MOVE_BATON_PASS
- .2byte MOVE_SUBSTITUTE
- .2byte MOVE_TICKLE
-
- egg_moves_begin SPECIES_KECLEON
- .2byte MOVE_DISABLE
- .2byte MOVE_MAGIC_COAT
- .2byte MOVE_TRICK
-
- egg_moves_begin SPECIES_NOSEPASS
- .2byte MOVE_MAGNITUDE
- .2byte MOVE_ROLLOUT
- .2byte MOVE_EXPLOSION
-
- egg_moves_begin SPECIES_TORKOAL
- .2byte MOVE_ERUPTION
- .2byte MOVE_ENDURE
- .2byte MOVE_SLEEP_TALK
- .2byte MOVE_YAWN
-
- egg_moves_begin SPECIES_SABLEYE
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_RECOVER
- .2byte MOVE_MOONLIGHT
-
- egg_moves_begin SPECIES_BARBOACH
- .2byte MOVE_THRASH
- .2byte MOVE_WHIRLPOOL
- .2byte MOVE_SPARK
-
- egg_moves_begin SPECIES_LUVDISC
- .2byte MOVE_SPLASH
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_WATER_SPORT
- .2byte MOVE_MUD_SPORT
-
- egg_moves_begin SPECIES_CORPHISH
- .2byte MOVE_MUD_SPORT
- .2byte MOVE_ENDEAVOR
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_ANCIENT_POWER
-
- egg_moves_begin SPECIES_FEEBAS
- .2byte MOVE_MIRROR_COAT
- .2byte MOVE_DRAGON_BREATH
- .2byte MOVE_MUD_SPORT
- .2byte MOVE_HYPNOSIS
- .2byte MOVE_LIGHT_SCREEN
- .2byte MOVE_CONFUSE_RAY
-
- egg_moves_begin SPECIES_CARVANHA
- .2byte MOVE_HYDRO_PUMP
- .2byte MOVE_DOUBLE_EDGE
- .2byte MOVE_THRASH
-
- egg_moves_begin SPECIES_TRAPINCH
- .2byte MOVE_FOCUS_ENERGY
- .2byte MOVE_QUICK_ATTACK
- .2byte MOVE_GUST
-
- egg_moves_begin SPECIES_MAKUHITA
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_DETECT
- .2byte MOVE_FORESIGHT
- .2byte MOVE_HELPING_HAND
- .2byte MOVE_CROSS_CHOP
- .2byte MOVE_REVENGE
- .2byte MOVE_DYNAMIC_PUNCH
- .2byte MOVE_COUNTER
-
- egg_moves_begin SPECIES_ELECTRIKE
- .2byte MOVE_CRUNCH
- .2byte MOVE_HEADBUTT
- .2byte MOVE_UPROAR
- .2byte MOVE_CURSE
- .2byte MOVE_SWIFT
-
- egg_moves_begin SPECIES_NUMEL
- .2byte MOVE_HOWL
- .2byte MOVE_SCARY_FACE
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_ROLLOUT
- .2byte MOVE_DEFENSE_CURL
- .2byte MOVE_STOMP
-
- egg_moves_begin SPECIES_SPHEAL
- .2byte MOVE_WATER_SPORT
- .2byte MOVE_STOCKPILE
- .2byte MOVE_SWALLOW
- .2byte MOVE_SPIT_UP
- .2byte MOVE_YAWN
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_CURSE
- .2byte MOVE_FISSURE
-
- egg_moves_begin SPECIES_CACNEA
- .2byte MOVE_GRASS_WHISTLE
- .2byte MOVE_ACID
- .2byte MOVE_TEETER_DANCE
- .2byte MOVE_DYNAMIC_PUNCH
- .2byte MOVE_COUNTER
-
- egg_moves_begin SPECIES_SNORUNT
- .2byte MOVE_BLOCK
- .2byte MOVE_SPIKES
-
- egg_moves_begin SPECIES_AZURILL
- .2byte MOVE_ENCORE
- .2byte MOVE_SING
- .2byte MOVE_REFRESH
- .2byte MOVE_SLAM
- .2byte MOVE_TICKLE
-
- egg_moves_begin SPECIES_SPOINK
- .2byte MOVE_FUTURE_SIGHT
- .2byte MOVE_EXTRASENSORY
- .2byte MOVE_SUBSTITUTE
- .2byte MOVE_TRICK
-
- egg_moves_begin SPECIES_PLUSLE
- .2byte MOVE_SUBSTITUTE
- .2byte MOVE_WISH
-
- egg_moves_begin SPECIES_MINUN
- .2byte MOVE_SUBSTITUTE
- .2byte MOVE_WISH
-
- egg_moves_begin SPECIES_MAWILE
- .2byte MOVE_SWORDS_DANCE
- .2byte MOVE_FALSE_SWIPE
- .2byte MOVE_POISON_FANG
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_TICKLE
-
- egg_moves_begin SPECIES_MEDITITE
- .2byte MOVE_FIRE_PUNCH
- .2byte MOVE_THUNDER_PUNCH
- .2byte MOVE_ICE_PUNCH
- .2byte MOVE_FORESIGHT
- .2byte MOVE_FAKE_OUT
- .2byte MOVE_BATON_PASS
- .2byte MOVE_DYNAMIC_PUNCH
-
- egg_moves_begin SPECIES_SWABLU
- .2byte MOVE_AGILITY
- .2byte MOVE_HAZE
- .2byte MOVE_PURSUIT
- .2byte MOVE_RAGE
-
- egg_moves_begin SPECIES_DUSKULL
- .2byte MOVE_IMPRISON
- .2byte MOVE_DESTINY_BOND
- .2byte MOVE_PAIN_SPLIT
- .2byte MOVE_GRUDGE
- .2byte MOVE_MEMENTO
- .2byte MOVE_FAINT_ATTACK
-
- egg_moves_begin SPECIES_ROSELIA
- .2byte MOVE_SPIKES
- .2byte MOVE_SYNTHESIS
- .2byte MOVE_PIN_MISSILE
- .2byte MOVE_COTTON_SPORE
-
- egg_moves_begin SPECIES_SLAKOTH
- .2byte MOVE_PURSUIT
- .2byte MOVE_SLASH
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_SNORE
- .2byte MOVE_CRUSH_CLAW
- .2byte MOVE_CURSE
- .2byte MOVE_SLEEP_TALK
-
- egg_moves_begin SPECIES_GULPIN
- .2byte MOVE_DREAM_EATER
- .2byte MOVE_ACID_ARMOR
- .2byte MOVE_SMOG
- .2byte MOVE_PAIN_SPLIT
-
- egg_moves_begin SPECIES_TROPIUS
- .2byte MOVE_HEADBUTT
- .2byte MOVE_SLAM
- .2byte MOVE_RAZOR_WIND
- .2byte MOVE_LEECH_SEED
- .2byte MOVE_NATURE_POWER
-
- egg_moves_begin SPECIES_WHISMUR
- .2byte MOVE_TAKE_DOWN
- .2byte MOVE_SNORE
- .2byte MOVE_SWAGGER
- .2byte MOVE_EXTRASENSORY
- .2byte MOVE_SMELLING_SALT
-
- egg_moves_begin SPECIES_CLAMPERL
- .2byte MOVE_REFRESH
- .2byte MOVE_MUD_SPORT
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_BARRIER
- .2byte MOVE_CONFUSE_RAY
-
- egg_moves_begin SPECIES_ABSOL
- .2byte MOVE_BATON_PASS
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_DOUBLE_EDGE
- .2byte MOVE_MAGIC_COAT
- .2byte MOVE_CURSE
- .2byte MOVE_SUBSTITUTE
-
- egg_moves_begin SPECIES_SHUPPET
- .2byte MOVE_DISABLE
- .2byte MOVE_DESTINY_BOND
- .2byte MOVE_FORESIGHT
- .2byte MOVE_ASTONISH
- .2byte MOVE_IMPRISON
-
- egg_moves_begin SPECIES_SEVIPER
- .2byte MOVE_STOCKPILE
- .2byte MOVE_SWALLOW
- .2byte MOVE_SPIT_UP
- .2byte MOVE_BODY_SLAM
-
- egg_moves_begin SPECIES_ZANGOOSE
- .2byte MOVE_FLAIL
- .2byte MOVE_DOUBLE_KICK
- .2byte MOVE_RAZOR_WIND
- .2byte MOVE_COUNTER
- .2byte MOVE_ROAR
- .2byte MOVE_CURSE
-
- egg_moves_begin SPECIES_RELICANTH
- .2byte MOVE_MAGNITUDE
- .2byte MOVE_SKULL_BASH
- .2byte MOVE_WATER_SPORT
- .2byte MOVE_AMNESIA
- .2byte MOVE_SLEEP_TALK
- .2byte MOVE_ROCK_SLIDE
-
- egg_moves_begin SPECIES_ARON
- .2byte MOVE_ENDEAVOR
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_STOMP
- .2byte MOVE_SMELLING_SALT
-
- egg_moves_begin SPECIES_CASTFORM
- .2byte MOVE_FUTURE_SIGHT
- .2byte MOVE_PSYCH_UP
-
- egg_moves_begin SPECIES_VOLBEAT
- .2byte MOVE_BATON_PASS
- .2byte MOVE_SILVER_WIND
- .2byte MOVE_TRICK
-
- egg_moves_begin SPECIES_ILLUMISE
- .2byte MOVE_BATON_PASS
- .2byte MOVE_SILVER_WIND
- .2byte MOVE_GROWTH
-
- egg_moves_begin SPECIES_LILEEP
- .2byte MOVE_BARRIER
- .2byte MOVE_RECOVER
- .2byte MOVE_MIRROR_COAT
- .2byte MOVE_ROCK_SLIDE
-
- egg_moves_begin SPECIES_ANORITH
- .2byte MOVE_RAPID_SPIN
- .2byte MOVE_KNOCK_OFF
- .2byte MOVE_SWORDS_DANCE
- .2byte MOVE_ROCK_SLIDE
-
- egg_moves_begin SPECIES_RALTS
- .2byte MOVE_DISABLE
- .2byte MOVE_WILL_O_WISP
- .2byte MOVE_MEAN_LOOK
- .2byte MOVE_MEMENTO
- .2byte MOVE_DESTINY_BOND
-
- egg_moves_begin SPECIES_BAGON
- .2byte MOVE_HYDRO_PUMP
- .2byte MOVE_THRASH
- .2byte MOVE_DRAGON_RAGE
- .2byte MOVE_TWISTER
- .2byte MOVE_DRAGON_DANCE
-
- egg_moves_begin SPECIES_CHIMECHO
- .2byte MOVE_DISABLE
- .2byte MOVE_CURSE
- .2byte MOVE_HYPNOSIS
- .2byte MOVE_DREAM_EATER
-
- .2byte -1
diff --git a/data/event_scripts.s b/data/event_scripts.s
index d6702745a..0a8390a8f 100644
--- a/data/event_scripts.s
+++ b/data/event_scripts.s
@@ -918,20 +918,15 @@ Std_5:
@ 819F805
return
-BattleTower_Lobby_EventScript_19F806:: @ 819F806
-FallarborTown_ContestLobby_EventScript_19F806:: @ 819F806
-LilycoveCity_ContestLobby_EventScript_19F806:: @ 819F806
-MossdeepCity_GameCorner_1F_EventScript_19F806:: @ 819F806
-OldaleTown_PokemonCenter_2F_EventScript_19F806:: @ 819F806
-SecretBase_RedCave1_EventScript_19F806:: @ 819F806
- special InitSaveDialog
+S_DoSaveDialog:: @ 819F806
+ special ScrSpecial_DoSaveDialog
waitstate
return
gUnknown_0819F80B:: @ 819F80B
lock
special PlayTrainerEncounterMusic
- special sub_80847C8
+ special ScrSpecial_EndTrainerApproach
waitstate
jump EventScript_19F8F2
@@ -940,7 +935,7 @@ gUnknown_0819F818:: @ 819F818
faceplayer
move LAST_TALKED, Movement_19F8F0
waitmove 0
- specialval RESULT, sub_8082564
+ specialval RESULT, ScrSpecial_HasTrainerBeenFought
compare RESULT, 0
jumpif 5, EventScript_19F83F
special PlayTrainerEncounterMusic
@@ -954,7 +949,7 @@ gUnknown_0819F840:: @ 819F840
lock
faceplayer
call EventScript_19F8E5
- specialval RESULT, sub_8082564
+ specialval RESULT, ScrSpecial_HasTrainerBeenFought
compare RESULT, 0
jumpif 5, EventScript_19F877
special CheckForAlivePartyMons
@@ -965,7 +960,7 @@ gUnknown_0819F840:: @ 819F840
jump EventScript_19F8F2
EventScript_19F870:
- special sub_8082718
+ special ScrSpecial_ShowTrainerNonBattlingSpeech
waittext
waitbutton
release
@@ -983,15 +978,15 @@ gUnknown_0819F878:: @ 819F878
gUnknown_0819F887:: @ 819F887
call EventScript_19F8E5
- specialval RESULT, sub_8082C9C
+ specialval RESULT, ScrSpecial_GetTrainerEyeRematchFlag
compare RESULT, 0
jumpeq EventScript_19F8AD
special PlayTrainerEncounterMusic
special sub_8082524
- special sub_80826D8
+ special ScrSpecial_ShowTrainerIntroSpeech
waittext
waitbutton
- special sub_80826B0
+ special ScrSpecial_StartTrainerEyeRematch
waitstate
releaseall
end
@@ -1000,7 +995,7 @@ EventScript_19F8AD:
endtrainerbattle
gUnknown_0819F8AE:: @ 819F8AE
- specialval RESULT, sub_8082C9C
+ specialval RESULT, ScrSpecial_GetTrainerEyeRematchFlag
compare RESULT, 0
jumpeq EventScript_19F8DD
special CheckForAlivePartyMons
@@ -1008,10 +1003,10 @@ gUnknown_0819F8AE:: @ 819F8AE
jumpif 5, EventScript_19F8DE
special PlayTrainerEncounterMusic
special sub_8082524
- special sub_80826D8
+ special ScrSpecial_ShowTrainerIntroSpeech
waittext
waitbutton
- special sub_80826B0
+ special ScrSpecial_StartTrainerEyeRematch
waitstate
releaseall
end
@@ -1020,7 +1015,7 @@ EventScript_19F8DD:
endtrainerbattle
EventScript_19F8DE:
- special sub_8082718
+ special ScrSpecial_ShowTrainerNonBattlingSpeech
waittext
waitbutton
release
@@ -1036,11 +1031,11 @@ Movement_19F8F0::
step_end
EventScript_19F8F2:
- special sub_80826D8
+ special ScrSpecial_ShowTrainerIntroSpeech
waittext
waitbutton
reptrainerbattle
- specialval RESULT, sub_8082558
+ specialval RESULT, ScrSpecial_GetTrainerBattleMode
compare RESULT, 0
jumpeq EventScript_19F934
compare RESULT, 2
@@ -1324,7 +1319,7 @@ EverGrandeCity_HallOfFame_EventScript_19FC70:: @ 819FC70
setflag 2141
return
-EventScript_LeagueWhiteOut:: @ 819FC74
+S_WhiteOut:: @ 819FC74
call EverGrandeCity_HallOfFame_EventScript_19FD09
call EventScript_19FC84
jump gUnknown_0819FC9F
@@ -1437,16 +1432,16 @@ SootopolisCity_PokemonCenter_1F_EventScript_19FD5B:: @ 819FD5B
VerdanturfTown_PokemonCenter_1F_EventScript_19FD5B:: @ 819FD5B
lock
faceplayer
- msgbox OldaleTown_PokemonCenter_1F_Text_1A0A7D, 5
+ msgbox gText_NurseJoy_Welcome, MSGBOX_YESNO
compare RESULT, 1
- jumpeq OldaleTown_PokemonCenter_1F_EventScript_19FD7C
+ jumpeq do_heal_party
compare RESULT, 0
- jumpeq OldaleTown_PokemonCenter_1F_EventScript_19FDC7
+ jumpeq dont_heal_party
end
-OldaleTown_PokemonCenter_1F_EventScript_19FD7C:: @ 819FD7C
+do_heal_party:: @ 819FD7C
inccounter GAME_STAT_USED_POKECENTER
- message OldaleTown_PokemonCenter_1F_Text_1A1245
+ message gText_NurseJoy_OkayIllTakeYourPokemon
waittext
move 0x800b, OldaleTown_PokemonCenter_1F_Movement_1A083F
waitmove 0
@@ -1454,23 +1449,23 @@ OldaleTown_PokemonCenter_1F_EventScript_19FD7C:: @ 819FD7C
checkanimation 25
move 0x800b, OldaleTown_PokemonCenter_1F_Movement_1A0845
waitmove 0
- special HealPlayerParty
+ special ScrSpecial_HealPlayerParty
checkflag 273
jumpif 0, OldaleTown_PokemonCenter_1F_EventScript_19FDCE
jump OldaleTown_PokemonCenter_1F_EventScript_19FDB0
end
OldaleTown_PokemonCenter_1F_EventScript_19FDB0:: @ 819FDB0
- message OldaleTown_PokemonCenter_1F_Text_1A0B14
+ message gText_NurseJoy_ThankYouForWaiting
waittext
move 0x800b, OldaleTown_PokemonCenter_1F_Movement_19FDF4
waitmove 0
- message OldaleTown_PokemonCenter_1F_Text_1A0AFA
+ message gText_NurseJoy_WeHopeToSeeYouAgain
waittext
return
-OldaleTown_PokemonCenter_1F_EventScript_19FDC7:: @ 819FDC7
- message OldaleTown_PokemonCenter_1F_Text_1A0AFA
+dont_heal_party:: @ 819FDC7
+ message gText_NurseJoy_WeHopeToSeeYouAgain
waittext
return
@@ -1483,7 +1478,7 @@ OldaleTown_PokemonCenter_1F_EventScript_19FDCE:: @ 819FDCE
end
OldaleTown_PokemonCenter_1F_EventScript_19FDEA:: @ 819FDEA
- message OldaleTown_PokemonCenter_1F_Text_1A1275
+ message gText_NurseJoy_Pokerus
waittext
setflag 273
return
@@ -1688,7 +1683,7 @@ gUnknown_081A0009:: @ 81A0009
EventScript_1A0023:
message gPCText_WhichPCShouldBeAccessed
waittext
- special TryCreatePCMenu
+ special ScrSpecial_CreatePCMenu
waitstate
jump EventScript_1A0033
end
@@ -2111,7 +2106,7 @@ SSTidalRooms_EventScript_1A02CA:: @ 81A02CA
fadescreen 1
fanfare 368
waitfanfare
- special HealPlayerParty
+ special ScrSpecial_HealPlayerParty
fadescreen 0
return
@@ -2985,17 +2980,17 @@ UnknownString_81A0A54: @ 81A0A54
UnknownString_81A0A66: @ 81A0A66
.string "Accessed LANETTE’s PC.$"
-OldaleTown_PokemonCenter_1F_Text_1A0A7D:: @ 81A0A7D
+gText_NurseJoy_Welcome:: @ 81A0A7D
.string "Hello, and welcome to the POKéMON\n"
.string "CENTER.\p"
.string "We restore your tired POKéMON to\n"
.string "full health.\p"
.string "Would you like to rest your POKéMON?$"
-OldaleTown_PokemonCenter_1F_Text_1A0AFA:: @ 81A0AFA
+gText_NurseJoy_WeHopeToSeeYouAgain:: @ 81A0AFA
.string "We hope to see you again!$"
-OldaleTown_PokemonCenter_1F_Text_1A0B14:: @ 81A0B14
+gText_NurseJoy_ThankYouForWaiting:: @ 81A0B14
.string "Thank you for waiting.\p"
.string "We’ve restored your POKéMON to\n"
.string "full health.$"
@@ -3209,11 +3204,11 @@ SlateportCity_Text_1A116E:: @ 81A116E
.string "We’ll accept you as a member and sell\n"
.string "you good stuff in secrecy.$"
-OldaleTown_PokemonCenter_1F_Text_1A1245:: @ 81A1245
+gText_NurseJoy_OkayIllTakeYourPokemon:: @ 81A1245
.string "Okay, I’ll take your POKéMON for a\n"
.string "few seconds.$"
-OldaleTown_PokemonCenter_1F_Text_1A1275:: @ 81A1275
+gText_NurseJoy_Pokerus:: @ 81A1275
.string "Your POKéMON may be infected with\n"
.string "POKéRUS.\p"
.string "Little is known about the POKéRUS\n"
@@ -3949,7 +3944,7 @@ SecretBase_RedCave1_EventScript_1A3032:: @ 81A3032
jumpeq SecretBase_RedCave1_EventScript_1A308F
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A308F
hidebox 0, 0, 15, 10
@@ -3984,7 +3979,7 @@ SecretBase_RedCave1_EventScript_1A30AE:: @ 81A30AE
jumpeq SecretBase_RedCave1_EventScript_1A310B
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A310B
hidebox 0, 0, 15, 10
@@ -4019,7 +4014,7 @@ SecretBase_RedCave1_EventScript_1A312A:: @ 81A312A
jumpeq SecretBase_RedCave1_EventScript_1A3187
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A3187
hidebox 0, 0, 15, 10
@@ -4054,7 +4049,7 @@ SecretBase_RedCave1_EventScript_1A31A6:: @ 81A31A6
jumpeq SecretBase_RedCave1_EventScript_1A3203
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A3203
hidebox 0, 0, 15, 10
@@ -4089,7 +4084,7 @@ SecretBase_RedCave1_EventScript_1A3222:: @ 81A3222
jumpeq SecretBase_RedCave1_EventScript_1A327F
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A327F
hidebox 0, 0, 15, 10
@@ -4124,7 +4119,7 @@ SecretBase_RedCave1_EventScript_1A329E:: @ 81A329E
jumpeq SecretBase_RedCave1_EventScript_1A32FB
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A32FB
hidebox 0, 0, 15, 10
@@ -4159,7 +4154,7 @@ SecretBase_RedCave1_EventScript_1A331A:: @ 81A331A
jumpeq SecretBase_RedCave1_EventScript_1A3377
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A3377
hidebox 0, 0, 15, 10
@@ -4194,7 +4189,7 @@ SecretBase_RedCave1_EventScript_1A3396:: @ 81A3396
jumpeq SecretBase_RedCave1_EventScript_1A33F3
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A33F3
hidebox 0, 0, 15, 10
@@ -4229,7 +4224,7 @@ SecretBase_RedCave1_EventScript_1A3412:: @ 81A3412
jumpeq SecretBase_RedCave1_EventScript_1A346F
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A346F
hidebox 0, 0, 15, 10
@@ -4264,7 +4259,7 @@ SecretBase_RedCave1_EventScript_1A348E:: @ 81A348E
jumpeq SecretBase_RedCave1_EventScript_1A34EB
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
jumpeq SecretBase_RedCave1_EventScript_1A34EB
hidebox 0, 0, 15, 10
@@ -4293,7 +4288,7 @@ SecretBase_RedCave1_EventScript_1A350A:: @ 81A350A
setvar 0x8005, 0
special sub_813556C
waitstate
- special HealPlayerParty
+ special ScrSpecial_HealPlayerParty
release
end
@@ -4744,16 +4739,7 @@ BattleTower_Lobby_EventScript_1AE30F:: @ 81AE30F
.include "data/scripts/gabby_and_ty.inc"
- .include "data/scripts/bard.inc"
- .include "data/scripts/hipster.inc"
- .include "data/text/trader.inc"
- .include "data/scripts/trader.inc"
- .include "data/text/storyteller.inc"
- .include "data/scripts/storyteller.inc"
- .include "data/text/giddy.inc"
- .include "data/scripts/giddy.inc"
- .include "data/text/bard.inc"
- .include "data/text/hipster.inc"
+ .include "data/scripts/mauville_man.inc"
.include "data/field_move_scripts.inc"
.include "data/item_ball_scripts.inc"
@@ -4783,7 +4769,7 @@ gUnknown_081B694A:: @ 81B694A
.include "data/scripts/players_house.inc"
-Event_RunningShoesManual:: @ 81B6E5A
+S_RunningShoesManual:: @ 81B6E5A
msgbox UnknownString_81728E3, 3
end
@@ -4792,7 +4778,7 @@ Event_RunningShoesManual:: @ 81B6E5A
.include "data/text/trainers.inc"
-Event_RepelWoreOff:: @ 81C33E6
+S_RepelWoreOff:: @ 81C33E6
msgbox Text_RepelWoreOff, 3
end
@@ -4872,7 +4858,7 @@ GraniteCave_B1F_MapScript2_1C6BB5:: @ 81C6BB5
MtPyre_2F_MapScript2_1C6BB5:: @ 81C6BB5
SkyPillar_2F_MapScript2_1C6BB5:: @ 81C6BB5
SkyPillar_4F_MapScript2_1C6BB5:: @ 81C6BB5
- map_script_2 0x4022, 0, GraniteCave_B1F_EventScript_1C6BC5
+ map_script_2 0x4022, 0, S_FallDownHole
.2byte 0
GraniteCave_B1F_MapScript1_1C6BBF:: @ 81C6BBF
@@ -4882,7 +4868,7 @@ SkyPillar_4F_MapScript1_1C6BBF:: @ 81C6BBF
copyvar 0x4022, 0x1
end
-GraniteCave_B1F_EventScript_1C6BC5:: @ 81C6BC5
+S_FallDownHole:: @ 81C6BC5
lockall
pause 20
move 255, GraniteCave_B1F_Movement_1C6BF7
diff --git a/data/evolution_graphics.s b/data/evolution_graphics.s
deleted file mode 100644
index e362b4dba..000000000
--- a/data/evolution_graphics.s
+++ /dev/null
@@ -1,70 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gEvoSparklePalette: @ 8416E44
- .incbin "graphics/misc/evo_sparkle.gbapal"
-
- .align 2
-gEvoSparkleTiles: @ 8416E64
- .incbin "graphics/misc/evo_sparkle.4bpp.lz"
-
-gUnknown_08416E84:: @ 8416E84
- obj_tiles gEvoSparkleTiles, 0x20, 1001
- .space 8
-
-gUnknown_08416E94:: @ 8416E94
- obj_pal gEvoSparklePalette, 1001
- .space 8
-
- .align 2
-gOamData_8416EA4:: @ 8416EA4
- .2byte 0x00A0
- .2byte 0x0000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_8416EAC:: @ 8416EAC
- obj_image_anim_frame 0, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_8416EB4:: @ 8416EB4
- .4byte gSpriteAnim_8416EAC
-
- .align 2
-gSpriteTemplate_8416EB8:: @ 8416EB8
- spr_template 1001, 1001, gOamData_8416EA4, gSpriteAnimTable_8416EB4, NULL, gDummySpriteAffineAnimTable, nullsub_84
-
- .align 1
-gUnknown_08416ED0:: @ 8416ED0
- .2byte 0x3C0
- .2byte 0x380
- .2byte 0x340
- .2byte 0x300
- .2byte 0x2C0
- .2byte 0x280
- .2byte 0x240
- .2byte 0x200
- .2byte 0x1C0
- .2byte 0x180
- .2byte 0x140
- .2byte 0x100
- .2byte 0xFFFC
- .2byte 0x10
- .2byte 0xFFFD
- .2byte 0x30
- .2byte 0xFFFE
- .2byte 0x50
- .2byte 0xFFFF
- .2byte 0x70
- .2byte 0x1
- .2byte 0x70
- .2byte 0x2
- .2byte 0x50
- .2byte 0x3
- .2byte 0x30
- .2byte 0x4
- .2byte 0x10
diff --git a/data/evolution_scene.s b/data/evolution_scene.s
deleted file mode 100644
index 24744a196..000000000
--- a/data/evolution_scene.s
+++ /dev/null
@@ -1,14 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-gUnknown_083F868C:: @ 83F868C
- .string "ヌケニン$"
-
- .string "{COLOR DARK_GREY}{HIGHLIGHT WHITE2}{SHADOW LIGHT_GREY}$"
- .string "▶\n $"
- .string " \n▶$"
- .string " \n $"
-
- .space 9
diff --git a/data/field_effect_helpers.s b/data/field_effect_helpers.s
deleted file mode 100644
index d22bd8dde..000000000
--- a/data/field_effect_helpers.s
+++ /dev/null
@@ -1,37 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-@ XXX: Unused? Probably aligned because it's at the beginning of an object file.
- .align 2
- .string "タマゴ$"
-
- .align 1
-gUnknown_08401E2C:: @ 8401E2C
- .2byte 0xC, 0x1C, 0x2C
-
-gUnknown_08401E32:: @ 8401E32
- .byte 0, 1, 2, 3
-
- .align 1
-gUnknown_08401E36:: @ 8401E36
- .2byte 4, 4, 4, 16
-
- .align 2
-gUnknown_08401E40:: @ 8401E40
- .4byte sub_81275A0
- .4byte sub_81275C4
-
- .align 2
-gUnknown_08401E48:: @ 8401E48
- .4byte sub_8127DA0
- .4byte sub_8127DD0
- .4byte sub_8127E30
-
-gUnknown_08401E54:: @ 8401E54
- .byte 0, 0, 1, 2, 3
-
- .align 1
-gUnknown_08401E5A:: @ 8401E5A
- .2byte 3, 7
diff --git a/data/field_ground_effect.s b/data/field_ground_effect.s
deleted file mode 100644
index d3dbceedb..000000000
--- a/data/field_ground_effect.s
+++ /dev/null
@@ -1,72 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gUnknown_08376040:: @ 8376040
- .4byte MetatileBehavior_IsJumpSouth
- .4byte MetatileBehavior_IsJumpNorth
- .4byte MetatileBehavior_IsJumpWest
- .4byte MetatileBehavior_IsJumpEast
-
-gUnknown_08376050:: @ 8376050
- .byte 0x73, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x00, 0x00, 0x73
-
-@ Each byte corresponds to a sprite priority for a field object.
-@ This is directly the inverse of gFieldObjectPriorities_08376070.
-gFieldObjectPriorities_08376060:: @ 8376060
- .byte 2, 2, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 0, 0, 2
-
-@ Each byte corresponds to a sprite priority for a field object.
-@ This is the inverse of gFieldObjectPriorities_08376060.
-@ 1 = Above player sprite
-@ 2 = Below player sprite
-gFieldObjectPriorities_08376070:: @ 8376070
- .byte 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 1
-
- .align 2
-gUnknown_08376080:: @ 8376080
- .4byte nullsub_50
- .4byte DoTracksGroundEffect_Footprints
- .4byte DoTracksGroundEffect_BikeTireTracks
-
-@ First byte is a Field Effect script id. (gFieldEffectScriptPointers)
-@ Last three bytes are unknown.
-gSandFootprints_FieldEffectData:: @ 837608C
- .byte 0xD, 0x0, 0x18, 0x0
-
-@ Specifies which bike track shape to show next.
-@ For example, when the bike turns from up to right, it will show
-@ a track that curves to the right.
-@ Each 4-byte row corresponds to the initial direction of the bike, and
-@ each byte in that row is for the next direction of the bike in the order
-@ of down, up, left, right.
-gBikeTireTracks_Transitions:: @ 8376090
- .byte 1, 2, 7, 8
- .byte 1, 2, 6, 5
- .byte 5, 8, 3, 4
- .byte 6, 7, 3, 4
-
- .align 2
-gUnknown_083760A0:: @ 83760A0
- .4byte GroundEffect_SpawnOnTallGrass
- .4byte sub_8063E94
- .4byte sub_8063EE0
- .4byte sub_8063F2C
- .4byte GroundEffect_WaterReflection
- .4byte GroundEffect_IceReflection
- .4byte GroundEffect_FlowingWater
- .4byte sub_8063FA0
- .4byte sub_8063FCC
- .4byte GroundEffect_Ripple
- .4byte GroundEffect_StepOnPuddle
- .4byte GroundEffect_SandPile
- .4byte GroundEffect_JumpOnTallGrass
- .4byte GroundEffect_JumpOnLongGrass
- .4byte GroundEffect_JumpOnShallowWater
- .4byte GroundEffect_JumpOnWater
- .4byte GroundEffect_JumpLandingDust
- .4byte GroundEffect_ShortGrass
- .4byte GroundEffect_HotSprings
- .4byte GroundEffect_Seaweed
diff --git a/data/field_move_scripts.inc b/data/field_move_scripts.inc
index 315217055..9911dca3a 100644
--- a/data/field_move_scripts.inc
+++ b/data/field_move_scripts.inc
@@ -1,4 +1,4 @@
-CuttableTreeScript:: @ 81B0DCC
+S_CuttableTree:: @ 81B0DCC
lockall
checkflag 2055
jumpif 0, CannotUseCut
@@ -18,7 +18,7 @@ CuttableTreeScript:: @ 81B0DCC
jump DoTreeCutMovement
end
-UseCutScript:: @ 81B0E16
+S_UseCut:: @ 81B0E16
lockall
doanimation 2
waitstate
@@ -56,7 +56,7 @@ UsedCutRockSmashText: @ 81B0E82
CannotUseCutText: @ 81B0E8E
.string "This tree looks like it can be CUT down.$"
-BreakableRockScript:: @ 81B0EB7
+S_BreakableRock:: @ 81B0EB7
lockall
checkflag 2057
jumpif 0, CannotUseRockSmash
@@ -76,7 +76,7 @@ BreakableRockScript:: @ 81B0EB7
jump DoRockSmashMovement
end
-UseRockSmashScript:: @ 81B0F01
+S_UseRockSmash:: @ 81B0F01
lockall
doanimation 37
waitstate
@@ -90,7 +90,7 @@ DoRockSmashMovement: @ 81B0F0C
specialval RESULT, sub_810F5BC
compare RESULT, 1
jumpeq DoRockSmashMovement_Done
- special RockSmashWildEncounter
+ special ScrSpecial_RockSmashWildEncounter
compare RESULT, 0
jumpeq DoRockSmashMovement_Done
waitstate
@@ -123,7 +123,7 @@ CannotUseRockSmashText: @ 81B0F90
.string "It’s a rugged rock, but a POKéMON\n"
.string "may be able to smash it.$"
-PushableBoulderScript:: @ 81B0FCB
+S_PushableBoulder:: @ 81B0FCB
lockall
checkflag 2058
jumpif 0, CannotUseStrength
@@ -142,7 +142,7 @@ PushableBoulderScript:: @ 81B0FCB
jump UsedStrength
end
-UseStrengthScript:: @ 81B100E
+S_UseStrength:: @ 81B100E
lockall
doanimation 40
waitstate
@@ -188,7 +188,7 @@ AlreadyUsedStrengthText: @ 81B1127
.string "STRENGTH made it possible to move\n"
.string "boulders around.$"
-UseWaterfallScript:: @ 81B115A
+S_UseWaterfall:: @ 81B115A
lockall
checkattack MOVE_WATERFALL
compare RESULT, 6
@@ -202,7 +202,7 @@ UseWaterfallScript:: @ 81B115A
doanimation 43
jump Waterfall_Done
-CannotUseWaterfallScript:: @ 81B1194
+S_CannotUseWaterfall:: @ 81B1194
lockall
Waterfall_NoMonKnows: @ 81B1195
msgbox CannotUseWaterfallText, 4
@@ -244,7 +244,7 @@ Dive_Done: @ 81B1267
releaseall
end
-UnderwaterUseDiveScript:: @ 81B1269
+S_UseDiveUnderwater:: @ 81B1269
lockall
checkattack MOVE_DIVE
compare RESULT, 6
diff --git a/data/hall_of_fame.s b/data/hall_of_fame.s
deleted file mode 100644
index 0795e7389..000000000
--- a/data/hall_of_fame.s
+++ /dev/null
@@ -1,230 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gUnknown_0840B514:: @ 840B514
- obj_tiles gContestConfetti_Gfx, 0x220, 1001
- .space 8
-
-gUnknown_0840B524:: @ 840B524
- obj_pal gContestConfetti_Pal, 1001
- .space 8
-
- .align 2
-gUnknown_0840B534:: @ 840B534
- .2byte 120,210,120, 40
- .2byte 326,220, 56, 40
- .2byte -86,220,184, 40
- .2byte 120,-62,120, 88
- .2byte -25,-62,200, 88
- .2byte 265,-62, 40, 88
-
- .align 2
-gUnknown_0840B564:: @ 840B564
- .2byte 120,214,120, 64
- .2byte 281,214, 56, 64
- .2byte -41,214,184, 64
-
- .align 2
-gUnknown_0840B57C:: @ 840B57C
- .2byte 1002
- .2byte 1002
- .space 0x10
-
-@ unused data?
- .byte 2, 1, 3, 6, 4, 5
-
- .align 2
-gOamData_840B598:: @ 840B598
- .2byte 0x0000
- .2byte 0xC000
- .2byte 0x0000
-
- .align 2
-gUnknown_0840B5A0:: @ 840B5A0
- .4byte 0x02008000
- .4byte 0x0200A000
- .4byte 0x0200C000
- .4byte 0x0200E000
- .4byte 0x02010000
- .4byte 0x02014000
- .4byte 0x02018000
-
- .align 2
-gSpriteImageTable_840B5BC:: @ 840B5BC
- obj_frame_tiles 0x02008000, 0x800
- obj_frame_tiles 0x02008800, 0x800
- obj_frame_tiles 0x02009000, 0x800
- obj_frame_tiles 0x02009800, 0x800
-
- .align 2
-gSpriteImageTable_840B5DC:: @ 840B5DC
- obj_frame_tiles 0x0200A000, 0x800
- obj_frame_tiles 0x0200A800, 0x800
- obj_frame_tiles 0x0200B000, 0x800
- obj_frame_tiles 0x0200B800, 0x800
-
- .align 2
-gSpriteImageTable_840B5FC:: @ 840B5FC
- obj_frame_tiles 0x0200C000, 0x800
- obj_frame_tiles 0x0200C800, 0x800
- obj_frame_tiles 0x0200D000, 0x800
- obj_frame_tiles 0x0200D800, 0x800
-
- .align 2
-gSpriteImageTable_840B61C:: @ 840B61C
- obj_frame_tiles 0x0200E000, 0x800
- obj_frame_tiles 0x0200E800, 0x800
- obj_frame_tiles 0x0200F000, 0x800
- obj_frame_tiles 0x0200F800, 0x800
-
- .align 2
-gSpriteImageTable_840B63C:: @ 840B63C
- obj_frame_tiles 0x02010000, 0x800
- obj_frame_tiles 0x02010800, 0x800
- obj_frame_tiles 0x02011000, 0x800
- obj_frame_tiles 0x02011800, 0x800
-
- .align 2
-gSpriteImageTable_840B65C:: @ 840B65C
- obj_frame_tiles 0x02014000, 0x800
- obj_frame_tiles 0x02014800, 0x800
- obj_frame_tiles 0x02015000, 0x800
- obj_frame_tiles 0x02015800, 0x800
-
- .align 2
-gSpriteImageTable_840B67C:: @ 840B67C
- obj_frame_tiles 0x02018000, 0x800
- obj_frame_tiles 0x02018800, 0x800
- obj_frame_tiles 0x02019000, 0x800
- obj_frame_tiles 0x02019800, 0x800
-
- .align 2
-gUnknown_0840B69C:: @ 840B69C
- .4byte gSpriteImageTable_840B5BC
- .4byte gSpriteImageTable_840B5DC
- .4byte gSpriteImageTable_840B5FC
- .4byte gSpriteImageTable_840B61C
- .4byte gSpriteImageTable_840B63C
- .4byte gSpriteImageTable_840B65C
- .4byte gSpriteImageTable_840B67C
-
-gUnknown_0840B6B8:: @ 840B6B8
- spr_template -1, -1, gOamData_840B598, NULL, gSpriteImageTable_840B5BC, gDummySpriteAffineAnimTable, nullsub_81
-
- .align 2
-gOamData_840B6D0:: @ 840B6D0
- .2byte 0x0000
- .2byte 0x0000
- .2byte 0x0000
-
- .align 2
-gSpriteAnim_840B6D8:: @ 840B6D8
- obj_image_anim_frame 0, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840B6E0:: @ 840B6E0
- obj_image_anim_frame 1, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840B6E8:: @ 840B6E8
- obj_image_anim_frame 2, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840B6F0:: @ 840B6F0
- obj_image_anim_frame 3, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840B6F8:: @ 840B6F8
- obj_image_anim_frame 4, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840B700:: @ 840B700
- obj_image_anim_frame 5, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840B708:: @ 840B708
- obj_image_anim_frame 6, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840B710:: @ 840B710
- obj_image_anim_frame 7, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840B718:: @ 840B718
- obj_image_anim_frame 8, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840B720:: @ 840B720
- obj_image_anim_frame 9, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840B728:: @ 840B728
- obj_image_anim_frame 10, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840B730:: @ 840B730
- obj_image_anim_frame 11, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840B738:: @ 840B738
- obj_image_anim_frame 12, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840B740:: @ 840B740
- obj_image_anim_frame 13, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840B748:: @ 840B748
- obj_image_anim_frame 14, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840B750:: @ 840B750
- obj_image_anim_frame 15, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840B758:: @ 840B758
- obj_image_anim_frame 16, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_840B760:: @ 840B760
- .4byte gSpriteAnim_840B6D8
- .4byte gSpriteAnim_840B6E0
- .4byte gSpriteAnim_840B6E8
- .4byte gSpriteAnim_840B6F0
- .4byte gSpriteAnim_840B6F8
- .4byte gSpriteAnim_840B700
- .4byte gSpriteAnim_840B708
- .4byte gSpriteAnim_840B710
- .4byte gSpriteAnim_840B718
- .4byte gSpriteAnim_840B720
- .4byte gSpriteAnim_840B728
- .4byte gSpriteAnim_840B730
- .4byte gSpriteAnim_840B738
- .4byte gSpriteAnim_840B740
- .4byte gSpriteAnim_840B748
- .4byte gSpriteAnim_840B750
- .4byte gSpriteAnim_840B758
-
- .align 2
-gSpriteTemplate_840B7A4:: @ 840B7A4
- spr_template 1001, 1001, gOamData_840B6D0, gSpriteAnimTable_840B760, NULL, gDummySpriteAffineAnimTable, sub_814386C
diff --git a/data/intro_credits_graphics.s b/data/intro_credits_graphics.s
index 82931f6ee..8c096e1cd 100644
--- a/data/intro_credits_graphics.s
+++ b/data/intro_credits_graphics.s
@@ -338,11 +338,11 @@ gSpriteAnimTable_8416D28:: @ 8416D28
.4byte gSpriteAnim_8416D14
.align 2
-gSpriteTemplate_8416D2C:: @ 8416D2C
+gSpriteTemplate_Brendan:: @ 8416D2C
spr_template 1001, 1002, gOamData_8416D0C, gSpriteAnimTable_8416D28, NULL, gDummySpriteAffineAnimTable, sub_81492A0
.align 2
-gSpriteTemplate_8416D44:: @ 8416D44
+gSpriteTemplate_May:: @ 8416D44
spr_template 1001, 1003, gOamData_8416D0C, gSpriteAnimTable_8416D28, NULL, gDummySpriteAffineAnimTable, sub_81492A0
.align 2
diff --git a/data/learn_move.s b/data/learn_move.s
deleted file mode 100644
index 369fbfdf0..000000000
--- a/data/learn_move.s
+++ /dev/null
@@ -1,150 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gDexArrows_Pal::
- .incbin "graphics/pokedex/arrows.gbapal"
-
- .align 2
-gDexArrows_Gfx::
- .incbin "graphics/pokedex/arrows.4bpp"
-
-gUnknown_08402CF8:: @ 8402CF8
- .byte 0, 0, 9, 13
- .byte 10, 0, 29, 7
- .byte 2, 14, 27, 19
- .byte 10, 8, 29, 13
-
-gUnknown_08402D08:: @ 8402D08
- .4byte OtherText_Battle
- .byte 1, 1, 0, 0
- .4byte OtherText_Power
- .byte 1, 4, 1, 0
- .4byte OtherText_Accuracy
- .byte 1, 9, 2, 0
- .space 8
-
- .4byte OtherText_Contest
- .byte 1, 1, 0, 0
- .4byte OtherText_Appeal
- .byte 1, 4, 1, 0
- .4byte OtherText_Jam
- .byte 1, 9, 2, 0
- .space 8
-
- .4byte 0xFF00FFEF
- .4byte gTileBuffer
-
- .align 2
-gOamData_8402D50:: @ 8402D50
- .2byte 0x0000
- .2byte 0x0000
- .2byte 0x0000
-
- .align 2
-gOamData_8402D58:: @ 8402D58
- .2byte 0x8000
- .2byte 0x0000
- .2byte 0x0000
-
- .align 2
-gOamData_8402D60:: @ 8402D60
- .2byte 0x4000
- .2byte 0x0000
- .2byte 0x0000
-
- .align 2
-gSpriteAnim_8402D68:: @ 8402D68
- obj_image_anim_frame 2, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8402D70:: @ 8402D70
- obj_image_anim_frame 0, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_8402D78:: @ 8402D78
- .4byte gSpriteAnim_8402D68
- .4byte gSpriteAnim_8402D70
-
- .align 2
-gUnknown_08402D80:: @ 8402D80
- obj_tiles gDexArrows_Gfx, 384, 0x1595
-
- .align 2
-gUnknown_08402D88:: @ 8402D88
- obj_pal gDexArrows_Pal, 0x1596
-
- .align 2
-gSpriteTemplate_8402D90:: @ 8402D90
- spr_template 5525, 5526, gOamData_8402D58, gSpriteAnimTable_8402D78, NULL, gDummySpriteAffineAnimTable, sub_8133300
-
- .align 2
-gSpriteAnim_8402DA8:: @ 8402DA8
- obj_image_anim_frame 4, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8402DB0:: @ 8402DB0
- obj_image_anim_frame 6, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_8402DB8:: @ 8402DB8
- .4byte gSpriteAnim_8402DA8
- .4byte gSpriteAnim_8402DB0
-
- .align 2
-gSpriteTemplate_8402DC0:: @ 8402DC0
- spr_template 5525, 5526, gOamData_8402D60, gSpriteAnimTable_8402DB8, NULL, gDummySpriteAffineAnimTable, sub_8133300
-
- .align 2
-gSpriteAnim_8402DD8:: @ 8402DD8
- obj_image_anim_frame 8, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8402DE0:: @ 8402DE0
- obj_image_anim_frame 9, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8402DE8:: @ 8402DE8
- obj_image_anim_frame 10, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8402DF0:: @ 8402DF0
- obj_image_anim_frame 11, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_8402DF8:: @ 8402DF8
- .4byte gSpriteAnim_8402DD8
- .4byte gSpriteAnim_8402DE0
- .4byte gSpriteAnim_8402DE8
- .4byte gSpriteAnim_8402DF0
-
- .align 2
-gSpriteTemplate_8402E08:: @ 8402E08
- spr_template 5525, 5526, gOamData_8402D50, gSpriteAnimTable_8402DF8, NULL, gDummySpriteAffineAnimTable, sub_8133300
-
- .string "あきと$" @ programmer Akito Mori?
-
-gUnknown_08402E24:: @ 8402E24
- .byte 11, 1, 1
- .byte 3, 6, 2
- .byte 24, 1, 3
- .byte 3, 11, 4
- .byte 5, 4, 5
- .byte 3, 6, 6
- .byte 3, 11, 7
-
-gUnknown_08402E39:: @ 8402E39
- .byte 0, 1, 2, 3
-
-gUnknown_08402E3D:: @ 8402E3D
- .byte 4, 5, 6
diff --git a/data/maps/events/FieryPath.inc b/data/maps/events/FieryPath.inc
index 01b7b3efe..a4ac688d8 100644
--- a/data/maps/events/FieryPath.inc
+++ b/data/maps/events/FieryPath.inc
@@ -1,11 +1,11 @@
FieryPath_MapObjects:: @ 838C718
object_event 1, MAP_OBJ_GFX_ITEM_BALL, 0, 8, 0, 3, 0, 3, 1, 17, 0, 0, 0, 0, 0, FieryPath_EventScript_1B17EE, 1091, 0, 0
- object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 10, 0, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 17, 0, 0
- object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 17, 0, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 18, 0, 0
- object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 8, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 19, 0, 0
- object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 20, 0, 0
- object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 23, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 21, 0, 0
- object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 24, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 22, 0, 0
+ object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 10, 0, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 17, 0, 0
+ object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 17, 0, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 18, 0, 0
+ object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 8, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 19, 0, 0
+ object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 20, 0, 0
+ object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 23, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 21, 0, 0
+ object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 24, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 22, 0, 0
object_event 8, MAP_OBJ_GFX_ITEM_BALL, 0, 7, 0, 32, 0, 3, 1, 17, 0, 0, 0, 0, 0, FieryPath_EventScript_1B17E1, 1111, 0, 0
FieryPath_MapWarps:: @ 838C7D8
diff --git a/data/maps/events/GraniteCave_B2F.inc b/data/maps/events/GraniteCave_B2F.inc
index 49c0bace0..158577482 100644
--- a/data/maps/events/GraniteCave_B2F.inc
+++ b/data/maps/events/GraniteCave_B2F.inc
@@ -1,13 +1,13 @@
GraniteCave_B2F_MapObjects:: @ 838BFEC
object_event 1, MAP_OBJ_GFX_ITEM_BALL, 0, 4, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, GraniteCave_B2F_EventScript_1B17BA, 1053, 0, 0
object_event 2, MAP_OBJ_GFX_ITEM_BALL, 0, 29, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, GraniteCave_B2F_EventScript_1B17C7, 1054, 0, 0
- object_event 3, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 5, 0, 14, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 17, 0, 0
- object_event 4, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 3, 0, 14, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 18, 0, 0
- object_event 5, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 2, 0, 16, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 19, 0, 0
- object_event 6, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 7, 0, 12, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 20, 0, 0
- object_event 7, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 4, 0, 22, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 21, 0, 0
- object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 6, 0, 22, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 22, 0, 0
- object_event 9, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 3, 0, 21, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 23, 0, 0
+ object_event 3, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 5, 0, 14, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 17, 0, 0
+ object_event 4, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 3, 0, 14, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 18, 0, 0
+ object_event 5, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 2, 0, 16, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 19, 0, 0
+ object_event 6, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 7, 0, 12, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 20, 0, 0
+ object_event 7, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 4, 0, 22, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 21, 0, 0
+ object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 6, 0, 22, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 22, 0, 0
+ object_event 9, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 3, 0, 21, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 23, 0, 0
GraniteCave_B2F_MapWarps:: @ 838C0C4
warp_def 29, 13, 3, 2, GraniteCave_B1F
diff --git a/data/maps/events/PetalburgWoods.inc b/data/maps/events/PetalburgWoods.inc
index 0ec69c1a2..cb0ff7ca1 100644
--- a/data/maps/events/PetalburgWoods.inc
+++ b/data/maps/events/PetalburgWoods.inc
@@ -1,6 +1,6 @@
PetalburgWoods_MapObjects:: @ 838C14C
- object_event 1, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 19, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 17, 0, 0
- object_event 2, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 19, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 18, 0, 0
+ object_event 1, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 19, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 17, 0, 0
+ object_event 2, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 19, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 18, 0, 0
object_event 3, 241, 0, 26, 0, 17, 0, 3, 10, 0, 0, 0, 0, 0, 0, 0x0, 725, 0, 0
object_event 4, MAP_OBJ_GFX_MAN_2, 0, 26, 0, 20, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0x0, 724, 0, 0
object_event 5, MAP_OBJ_GFX_ITEM_BALL, 0, 45, 0, 7, 0, 3, 8, 0, 0, 0, 0, 0, 0, PetalburgWoods_EventScript_1B175F, 1056, 0, 0
diff --git a/data/maps/events/Route102.inc b/data/maps/events/Route102.inc
index 9cf97de4b..7ffa0e191 100644
--- a/data/maps/events/Route102.inc
+++ b/data/maps/events/Route102.inc
@@ -5,8 +5,8 @@ Route102_MapObjects:: @ 83811FC
object_event 4, MAP_OBJ_GFX_LASS, 0, 8, 0, 7, 0, 3, 18, 0, 0, 1, 0, 3, 0, Route102_EventScript_14EB53, 0, 0, 0
object_event 5, MAP_OBJ_GFX_BOY_1, 0, 37, 0, 4, 0, 3, 2, 17, 0, 0, 0, 0, 0, Route102_EventScript_14EAF5, 0, 0, 0
object_event 6, MAP_OBJ_GFX_ITEM_BALL, 0, 11, 0, 15, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route102_EventScript_1B1439, 1000, 0, 0
- object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 24, 0, 2, 0, 3, 12, 0, 0, 0, 0, 2, 0, BerryTreeScript, 0, 0, 0
- object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 25, 0, 2, 0, 3, 12, 0, 0, 0, 0, 1, 0, BerryTreeScript, 0, 0, 0
+ object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 24, 0, 2, 0, 3, 12, 0, 0, 0, 0, 2, 0, S_BerryTree, 0, 0, 0
+ object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 25, 0, 2, 0, 3, 12, 0, 0, 0, 0, 1, 0, S_BerryTree, 0, 0, 0
object_event 9, MAP_OBJ_GFX_YOUNGSTER, 0, 19, 0, 4, 0, 3, 8, 17, 0, 1, 0, 3, 0, Route102_EventScript_14EB6A, 0, 0, 0
Route102_MapBGEvents:: @ 83812D4
diff --git a/data/maps/events/Route103.inc b/data/maps/events/Route103.inc
index 01640eb65..462fe1a3b 100644
--- a/data/maps/events/Route103.inc
+++ b/data/maps/events/Route103.inc
@@ -5,15 +5,15 @@ Route103_MapObjects:: @ 8381300
object_event 4, MAP_OBJ_GFX_LITTLE_GIRL_1, 0, 65, 0, 11, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route103_EventScript_14EDF1, 0, 0, 0
object_event 5, MAP_OBJ_GFX_LITTLE_GIRL_1, 0, 64, 0, 11, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route103_EventScript_14EDAB, 0, 0, 0
object_event 6, MAP_OBJ_GFX_FISHERMAN, 0, 50, 0, 8, 0, 3, 26, 16, 0, 1, 0, 3, 0, Route103_EventScript_14EE37, 0, 0, 0
- object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 58, 0, 5, 0, 3, 12, 0, 0, 0, 0, 5, 0, BerryTreeScript, 0, 0, 0
- object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 59, 0, 5, 0, 3, 12, 0, 0, 0, 0, 6, 0, BerryTreeScript, 0, 0, 0
- object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 60, 0, 5, 0, 3, 12, 0, 0, 0, 0, 7, 0, BerryTreeScript, 0, 0, 0
+ object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 58, 0, 5, 0, 3, 12, 0, 0, 0, 0, 5, 0, S_BerryTree, 0, 0, 0
+ object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 59, 0, 5, 0, 3, 12, 0, 0, 0, 0, 6, 0, S_BerryTree, 0, 0, 0
+ object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 60, 0, 5, 0, 3, 12, 0, 0, 0, 0, 7, 0, S_BerryTree, 0, 0, 0
object_event 10, MAP_OBJ_GFX_BOY_1, 0, 20, 0, 10, 0, 3, 2, 33, 0, 0, 0, 0, 0, Route103_EventScript_14ED79, 0, 0, 0
object_event 11, MAP_OBJ_GFX_PROF_BIRCH, 0, 7, 0, 3, 0, 3, 2, 17, 0, 0, 0, 0, 0, Route103_EventScript_1A037F, 898, 0, 0
object_event 12, MAP_OBJ_GFX_MAN_3, 0, 56, 0, 12, 0, 3, 10, 0, 0, 1, 0, 5, 0, Route103_EventScript_14EE4E, 0, 0, 0
object_event 13, MAP_OBJ_GFX_ITEM_BALL, 0, 63, 0, 8, 0, 3, 1, 17, 0, 0, 0, 0, 0, Route103_EventScript_1B1446, 1114, 0, 0
- object_event 14, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 67, 0, 7, 0, 3, 1, 17, 0, 0, 0, 0, 0, CuttableTreeScript, 18, 0, 0
- object_event 15, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 69, 0, 7, 0, 3, 1, 17, 0, 0, 0, 0, 0, CuttableTreeScript, 19, 0, 0
+ object_event 14, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 67, 0, 7, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_CuttableTree, 18, 0, 0
+ object_event 15, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 69, 0, 7, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_CuttableTree, 19, 0, 0
Route103_MapBGEvents:: @ 8381468
bg_event 11, 9, 0, 0, 0, Route103_EventScript_14ED8B
diff --git a/data/maps/events/Route104.inc b/data/maps/events/Route104.inc
index da4b5ffc1..b4c8a2834 100644
--- a/data/maps/events/Route104.inc
+++ b/data/maps/events/Route104.inc
@@ -8,17 +8,17 @@ Route104_MapObjects:: @ 8381488
object_event 7, MAP_OBJ_GFX_MR_BRINEYS_BOAT, 0, 12, 0, 54, 0, 1, 7, 0, 0, 0, 0, 0, 0, 0x0, 742, 0, 0
object_event 8, MAP_OBJ_GFX_OLD_MAN_1, 0, 12, 0, 51, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0x0, 738, 0, 0
object_event 9, MAP_OBJ_GFX_FISHERMAN, 0, 29, 0, 8, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route104_EventScript_14F172, 0, 0, 0
- object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 34, 0, 6, 0, 3, 12, 0, 0, 0, 0, 8, 0, BerryTreeScript, 0, 0, 0
- object_event 11, MAP_OBJ_GFX_BERRY_TREE, 0, 35, 0, 6, 0, 3, 12, 0, 0, 0, 0, 9, 0, BerryTreeScript, 0, 0, 0
- object_event 12, MAP_OBJ_GFX_BERRY_TREE, 0, 36, 0, 6, 0, 3, 12, 0, 0, 0, 0, 10, 0, BerryTreeScript, 0, 0, 0
- object_event 13, MAP_OBJ_GFX_BERRY_TREE, 0, 22, 0, 41, 0, 3, 12, 0, 0, 0, 0, 11, 0, BerryTreeScript, 0, 0, 0
- object_event 14, MAP_OBJ_GFX_BERRY_TREE, 0, 23, 0, 41, 0, 3, 12, 0, 0, 0, 0, 12, 0, BerryTreeScript, 0, 0, 0
- object_event 15, MAP_OBJ_GFX_BERRY_TREE, 0, 24, 0, 41, 0, 3, 12, 0, 0, 0, 0, 13, 0, BerryTreeScript, 0, 0, 0
+ object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 34, 0, 6, 0, 3, 12, 0, 0, 0, 0, 8, 0, S_BerryTree, 0, 0, 0
+ object_event 11, MAP_OBJ_GFX_BERRY_TREE, 0, 35, 0, 6, 0, 3, 12, 0, 0, 0, 0, 9, 0, S_BerryTree, 0, 0, 0
+ object_event 12, MAP_OBJ_GFX_BERRY_TREE, 0, 36, 0, 6, 0, 3, 12, 0, 0, 0, 0, 10, 0, S_BerryTree, 0, 0, 0
+ object_event 13, MAP_OBJ_GFX_BERRY_TREE, 0, 22, 0, 41, 0, 3, 12, 0, 0, 0, 0, 11, 0, S_BerryTree, 0, 0, 0
+ object_event 14, MAP_OBJ_GFX_BERRY_TREE, 0, 23, 0, 41, 0, 3, 12, 0, 0, 0, 0, 12, 0, S_BerryTree, 0, 0, 0
+ object_event 15, MAP_OBJ_GFX_BERRY_TREE, 0, 24, 0, 41, 0, 3, 12, 0, 0, 0, 0, 13, 0, S_BerryTree, 0, 0, 0
object_event 16, MAP_OBJ_GFX_OLD_WOMAN_1, 0, 37, 0, 8, 0, 3, 9, 17, 0, 0, 0, 0, 0, Route104_EventScript_14EEC8, 0, 0, 0
- object_event 17, MAP_OBJ_GFX_BERRY_TREE, 0, 3, 0, 22, 0, 3, 12, 0, 0, 0, 0, 3, 0, BerryTreeScript, 0, 0, 0
- object_event 18, MAP_OBJ_GFX_BERRY_TREE, 0, 3, 0, 23, 0, 3, 12, 0, 0, 0, 0, 4, 0, BerryTreeScript, 0, 0, 0
- object_event 19, MAP_OBJ_GFX_BERRY_TREE, 0, 3, 0, 24, 0, 3, 12, 0, 0, 0, 0, 75, 0, BerryTreeScript, 0, 0, 0
- object_event 20, MAP_OBJ_GFX_BERRY_TREE, 0, 3, 0, 25, 0, 3, 12, 0, 0, 0, 0, 76, 0, BerryTreeScript, 0, 0, 0
+ object_event 17, MAP_OBJ_GFX_BERRY_TREE, 0, 3, 0, 22, 0, 3, 12, 0, 0, 0, 0, 3, 0, S_BerryTree, 0, 0, 0
+ object_event 18, MAP_OBJ_GFX_BERRY_TREE, 0, 3, 0, 23, 0, 3, 12, 0, 0, 0, 0, 4, 0, S_BerryTree, 0, 0, 0
+ object_event 19, MAP_OBJ_GFX_BERRY_TREE, 0, 3, 0, 24, 0, 3, 12, 0, 0, 0, 0, 75, 0, S_BerryTree, 0, 0, 0
+ object_event 20, MAP_OBJ_GFX_BERRY_TREE, 0, 3, 0, 25, 0, 3, 12, 0, 0, 0, 0, 76, 0, S_BerryTree, 0, 0, 0
object_event 21, MAP_OBJ_GFX_ITEM_BALL, 0, 39, 0, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route104_EventScript_1B1453, 1002, 0, 0
object_event 22, MAP_OBJ_GFX_WOMAN_7, 0, 8, 0, 19, 0, 3, 5, 1, 0, 0, 0, 0, 0, Route104_EventScript_14EF09, 906, 0, 0
object_event 23, MAP_OBJ_GFX_LITTLE_GIRL_1, 0, 27, 0, 15, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route104_EventScript_14F25A, 0, 0, 0
@@ -28,7 +28,7 @@ Route104_MapObjects:: @ 8381488
object_event 27, MAP_OBJ_GFX_ITEM_BALL, 0, 29, 0, 53, 0, 3, 1, 17, 0, 0, 0, 0, 0, Route104_EventScript_1B1460, 1057, 0, 0
object_event 28, MAP_OBJ_GFX_YOUNGSTER, 0, 18, 0, 67, 0, 3, 46, 101, 0, 1, 0, 2, 0, Route104_EventScript_14F189, 0, 0, 0
object_event 29, MAP_OBJ_GFX_ITEM_BALL, 0, 37, 0, 22, 0, 3, 1, 17, 0, 0, 0, 0, 0, Route104_EventScript_1B146D, 1115, 0, 0
- object_event 30, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 35, 0, 22, 0, 3, 1, 17, 0, 0, 0, 0, 0, CuttableTreeScript, 17, 0, 0
+ object_event 30, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 35, 0, 22, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_CuttableTree, 17, 0, 0
object_event 31, MAP_OBJ_GFX_ITEM_BALL, 0, 5, 0, 8, 0, 3, 1, 17, 0, 0, 0, 0, 0, Route104_EventScript_1B147A, 1135, 0, 0
object_event 32, MAP_OBJ_GFX_BOY_2, 0, 5, 0, 26, 0, 3, 1, 17, 0, 0, 0, 0, 0, Route104_EventScript_14EF93, 0, 0, 0
diff --git a/data/maps/events/Route110.inc b/data/maps/events/Route110.inc
index 4ece25549..3db4ce8e8 100644
--- a/data/maps/events/Route110.inc
+++ b/data/maps/events/Route110.inc
@@ -14,9 +14,9 @@ Route110_MapObjects:: @ 8381D58
object_event 13, MAP_OBJ_GFX_LASS, 0, 33, 0, 15, 0, 3, 9, 0, 0, 1, 0, 1, 0, Route110_EventScript_14FAA5, 0, 0, 0
object_event 14, MAP_OBJ_GFX_MANIAC, 0, 23, 0, 40, 0, 3, 20, 0, 0, 1, 0, 3, 0, Route110_EventScript_14FABC, 0, 0, 0
object_event 15, MAP_OBJ_GFX_FISHERMAN, 0, 10, 0, 19, 0, 3, 8, 0, 0, 1, 0, 1, 0, Route110_EventScript_14FAFA, 0, 0, 0
- object_event 16, MAP_OBJ_GFX_BERRY_TREE, 0, 5, 0, 11, 0, 3, 12, 0, 0, 0, 0, 16, 0, BerryTreeScript, 0, 0, 0
- object_event 17, MAP_OBJ_GFX_BERRY_TREE, 0, 6, 0, 11, 0, 3, 12, 0, 0, 0, 0, 17, 0, BerryTreeScript, 0, 0, 0
- object_event 18, MAP_OBJ_GFX_BERRY_TREE, 0, 7, 0, 11, 0, 3, 12, 0, 0, 0, 0, 18, 0, BerryTreeScript, 0, 0, 0
+ object_event 16, MAP_OBJ_GFX_BERRY_TREE, 0, 5, 0, 11, 0, 3, 12, 0, 0, 0, 0, 16, 0, S_BerryTree, 0, 0, 0
+ object_event 17, MAP_OBJ_GFX_BERRY_TREE, 0, 6, 0, 11, 0, 3, 12, 0, 0, 0, 0, 17, 0, S_BerryTree, 0, 0, 0
+ object_event 18, MAP_OBJ_GFX_BERRY_TREE, 0, 7, 0, 11, 0, 3, 12, 0, 0, 0, 0, 18, 0, S_BerryTree, 0, 0, 0
object_event 19, MAP_OBJ_GFX_ITEM_BALL, 0, 30, 0, 69, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route110_EventScript_1B14BB, 1007, 0, 0
object_event 20, MAP_OBJ_GFX_ITEM_BALL, 0, 26, 0, 47, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route110_EventScript_1B14AE, 1006, 0, 0
object_event 21, MAP_OBJ_GFX_CYCLING_TRIATHLETE_M, 0, 27, 0, 92, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route110_EventScript_14FA53, 0, 0, 0
diff --git a/data/maps/events/Route110_TrickHousePuzzle1.inc b/data/maps/events/Route110_TrickHousePuzzle1.inc
index 7e282f0e8..3660e3c3f 100644
--- a/data/maps/events/Route110_TrickHousePuzzle1.inc
+++ b/data/maps/events/Route110_TrickHousePuzzle1.inc
@@ -2,22 +2,22 @@ Route110_TrickHousePuzzle1_MapObjects:: @ 839225C
object_event 1, MAP_OBJ_GFX_LASS, 0, 13, 0, 21, 0, 3, 9, 0, 0, 1, 0, 5, 0, Route110_TrickHousePuzzle1_EventScript_161D31, 0, 0, 0
object_event 2, MAP_OBJ_GFX_YOUNGSTER, 0, 13, 0, 7, 0, 3, 8, 0, 0, 1, 0, 2, 0, Route110_TrickHousePuzzle1_EventScript_161D48, 0, 0, 0
object_event 3, MAP_OBJ_GFX_LASS, 0, 3, 0, 8, 0, 3, 9, 0, 0, 1, 0, 3, 0, Route110_TrickHousePuzzle1_EventScript_161D5F, 0, 0, 0
- object_event 4, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 3, 0, 18, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 19, 0, 0
- object_event 5, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 7, 0, 21, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 17, 0, 0
- object_event 6, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 12, 0, 18, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 18, 0, 0
- object_event 7, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 10, 0, 16, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 20, 0, 0
- object_event 8, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 12, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 23, 0, 0
- object_event 9, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 3, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 22, 0, 0
- object_event 10, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 0, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 21, 0, 0
- object_event 11, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 6, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 25, 0, 0
- object_event 12, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 2, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 24, 0, 0
- object_event 13, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 9, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 26, 0, 0
- object_event 14, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 2, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 28, 0, 0
- object_event 15, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 0, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 27, 0, 0
- object_event 16, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 6, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 29, 0, 0
- object_event 17, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 11, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 30, 0, 0
+ object_event 4, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 3, 0, 18, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 19, 0, 0
+ object_event 5, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 7, 0, 21, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 17, 0, 0
+ object_event 6, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 12, 0, 18, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 18, 0, 0
+ object_event 7, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 10, 0, 16, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 20, 0, 0
+ object_event 8, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 12, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 23, 0, 0
+ object_event 9, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 3, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 22, 0, 0
+ object_event 10, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 0, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 21, 0, 0
+ object_event 11, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 6, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 25, 0, 0
+ object_event 12, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 2, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 24, 0, 0
+ object_event 13, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 9, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 26, 0, 0
+ object_event 14, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 2, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 28, 0, 0
+ object_event 15, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 0, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 27, 0, 0
+ object_event 16, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 6, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 29, 0, 0
+ object_event 17, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 11, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 30, 0, 0
object_event 18, MAP_OBJ_GFX_ITEM_BALL, 0, 9, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route110_TrickHousePuzzle1_EventScript_1B1A51, 1060, 0, 0
- object_event 19, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 14, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 31, 0, 0
+ object_event 19, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 14, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 31, 0, 0
Route110_TrickHousePuzzle1_MapWarps:: @ 8392424
warp_def 0, 21, 3, 2, Route110_TrickHouseEntrance
diff --git a/data/maps/events/Route110_TrickHousePuzzle3.inc b/data/maps/events/Route110_TrickHousePuzzle3.inc
index b7a902a54..abccae1d4 100644
--- a/data/maps/events/Route110_TrickHousePuzzle3.inc
+++ b/data/maps/events/Route110_TrickHousePuzzle3.inc
@@ -2,14 +2,14 @@ Route110_TrickHousePuzzle3_MapObjects:: @ 839254C
object_event 1, MAP_OBJ_GFX_CAMPER, 0, 10, 0, 16, 0, 3, 8, 0, 0, 1, 0, 1, 0, Route110_TrickHousePuzzle3_EventScript_162708, 0, 0, 0
object_event 2, MAP_OBJ_GFX_PICNICKER, 0, 1, 0, 13, 0, 3, 10, 0, 0, 1, 0, 1, 0, Route110_TrickHousePuzzle3_EventScript_16271F, 0, 0, 0
object_event 3, MAP_OBJ_GFX_HIKER, 0, 11, 0, 4, 0, 3, 8, 0, 0, 1, 0, 1, 0, Route110_TrickHousePuzzle3_EventScript_162736, 0, 0, 0
- object_event 4, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 4, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 17, 0, 0
- object_event 5, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 1, 0, 3, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 18, 0, 0
- object_event 6, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 11, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 19, 0, 0
- object_event 7, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 13, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 20, 0, 0
+ object_event 4, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 4, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 17, 0, 0
+ object_event 5, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 1, 0, 3, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 18, 0, 0
+ object_event 6, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 11, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 19, 0, 0
+ object_event 7, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 13, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 20, 0, 0
object_event 8, MAP_OBJ_GFX_ITEM_BALL, 0, 0, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route110_TrickHousePuzzle3_EventScript_1B1A85, 1064, 0, 0
object_event 9, MAP_OBJ_GFX_ITEM_BALL, 0, 7, 0, 2, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route110_TrickHousePuzzle3_EventScript_1B1A78, 1063, 0, 0
- object_event 10, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 1, 0, 20, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 21, 0, 0
- object_event 11, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 2, 0, 21, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 22, 0, 0
+ object_event 10, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 1, 0, 20, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 21, 0, 0
+ object_event 11, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 2, 0, 21, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 22, 0, 0
Route110_TrickHousePuzzle3_MapWarps:: @ 8392654
warp_def 0, 21, 3, 2, Route110_TrickHouseEntrance
diff --git a/data/maps/events/Route110_TrickHousePuzzle4.inc b/data/maps/events/Route110_TrickHousePuzzle4.inc
index ac3e152a2..ef450800d 100644
--- a/data/maps/events/Route110_TrickHousePuzzle4.inc
+++ b/data/maps/events/Route110_TrickHousePuzzle4.inc
@@ -3,17 +3,17 @@ Route110_TrickHousePuzzle4_MapObjects:: @ 83926FC
object_event 2, MAP_OBJ_GFX_GIRL_3, 0, 10, 0, 4, 0, 3, 10, 0, 0, 1, 0, 1, 0, Route110_TrickHousePuzzle4_EventScript_162799, 0, 0, 0
object_event 3, MAP_OBJ_GFX_BLACK_BELT, 0, 7, 0, 4, 0, 3, 9, 0, 0, 1, 0, 2, 0, Route110_TrickHousePuzzle4_EventScript_162782, 0, 0, 0
object_event 4, MAP_OBJ_GFX_ITEM_BALL, 0, 4, 0, 4, 0, 0, 1, 0, 0, 0, 0, 0, 0, Route110_TrickHousePuzzle4_EventScript_1B1A92, 1065, 0, 0
- object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 13, 0, 3, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 17, 0, 0
- object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 18, 0, 0
- object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 2, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 19, 0, 0
- object_event 8, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 20, 0, 0
- object_event 9, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 12, 0, 2, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 21, 0, 0
- object_event 10, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 8, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 22, 0, 0
- object_event 11, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 9, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 23, 0, 0
- object_event 12, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 13, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 24, 0, 0
- object_event 13, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 14, 0, 2, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 25, 0, 0
- object_event 14, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 26, 0, 0
- object_event 15, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 14, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 27, 0, 0
+ object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 13, 0, 3, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 17, 0, 0
+ object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 18, 0, 0
+ object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 2, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 19, 0, 0
+ object_event 8, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 20, 0, 0
+ object_event 9, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 12, 0, 2, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 21, 0, 0
+ object_event 10, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 8, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 22, 0, 0
+ object_event 11, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 9, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 23, 0, 0
+ object_event 12, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 13, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 24, 0, 0
+ object_event 13, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 14, 0, 2, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 25, 0, 0
+ object_event 14, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 26, 0, 0
+ object_event 15, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 14, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 27, 0, 0
Route110_TrickHousePuzzle4_MapWarps:: @ 8392864
warp_def 0, 21, 3, 2, Route110_TrickHouseEntrance
diff --git a/data/maps/events/Route111.inc b/data/maps/events/Route111.inc
index 9eeed5ede..e36cd7e74 100644
--- a/data/maps/events/Route111.inc
+++ b/data/maps/events/Route111.inc
@@ -4,8 +4,8 @@ Route111_MapObjects:: @ 83821A0
object_event 3, MAP_OBJ_GFX_LASS, 0, 13, 0, 113, 0, 0, 8, 1, 0, 0, 0, 0, 0, 0x0, 770, 0, 0
object_event 4, MAP_OBJ_GFX_OLD_WOMAN_1, 0, 13, 0, 113, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0x0, 771, 0, 0
object_event 5, MAP_OBJ_GFX_PICNICKER, 0, 28, 0, 51, 0, 3, 17, 0, 0, 1, 0, 3, 0, Route111_EventScript_1503BE, 0, 0, 0
- object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 22, 0, 5, 0, 3, 12, 0, 0, 0, 0, 19, 0, BerryTreeScript, 0, 0, 0
- object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 23, 0, 5, 0, 3, 12, 0, 0, 0, 0, 20, 0, BerryTreeScript, 0, 0, 0
+ object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 22, 0, 5, 0, 3, 12, 0, 0, 0, 0, 19, 0, S_BerryTree, 0, 0, 0
+ object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 23, 0, 5, 0, 3, 12, 0, 0, 0, 0, 20, 0, S_BerryTree, 0, 0, 0
object_event 8, MAP_OBJ_GFX_MAN_4, 0, 8, 0, 91, 0, 3, 2, 17, 0, 0, 0, 0, 0, Route111_EventScript_150395, 0, 0, 0
object_event 9, MAP_OBJ_GFX_CAMPER, 0, 24, 0, 60, 0, 3, 21, 0, 0, 1, 0, 3, 0, Route111_EventScript_1503A7, 0, 0, 0
object_event 10, MAP_OBJ_GFX_HIKER, 0, 27, 0, 69, 0, 3, 50, 34, 0, 1, 0, 2, 0, Route111_EventScript_150403, 0, 0, 0
@@ -13,19 +13,19 @@ Route111_MapObjects:: @ 83821A0
object_event 12, MAP_OBJ_GFX_PICNICKER, 0, 32, 0, 72, 0, 3, 24, 0, 0, 1, 0, 3, 0, Route111_EventScript_1503EC, 0, 0, 0
object_event 13, MAP_OBJ_GFX_CAMERAMAN, 0, 14, 0, 86, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route111_EventScript_1AE442, 796, 0, 0
object_event 14, MAP_OBJ_GFX_REPORTER_F, 0, 13, 0, 86, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route111_EventScript_1AE422, 796, 0, 0
- object_event 15, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 18, 0, 101, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 17, 0, 0
- object_event 16, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 19, 0, 100, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 18, 0, 0
+ object_event 15, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 18, 0, 101, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 17, 0, 0
+ object_event 16, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 19, 0, 100, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 18, 0, 0
object_event 17, MAP_OBJ_GFX_GIRL_1, 0, 23, 0, 8, 0, 3, 5, 1, 0, 0, 0, 0, 0, Route111_EventScript_1500C5, 0, 0, 0
object_event 18, MAP_OBJ_GFX_ITEM_BALL, 0, 32, 0, 105, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route111_EventScript_1B14C8, 1008, 0, 0
- object_event 19, MAP_OBJ_GFX_BERRY_TREE, 0, 18, 0, 5, 0, 3, 12, 0, 0, 0, 0, 80, 0, BerryTreeScript, 0, 0, 0
- object_event 20, MAP_OBJ_GFX_BERRY_TREE, 0, 19, 0, 5, 0, 3, 12, 0, 0, 0, 0, 81, 0, BerryTreeScript, 0, 0, 0
+ object_event 19, MAP_OBJ_GFX_BERRY_TREE, 0, 18, 0, 5, 0, 3, 12, 0, 0, 0, 0, 80, 0, S_BerryTree, 0, 0, 0
+ object_event 20, MAP_OBJ_GFX_BERRY_TREE, 0, 19, 0, 5, 0, 3, 12, 0, 0, 0, 0, 81, 0, S_BerryTree, 0, 0, 0
object_event 21, MAP_OBJ_GFX_REPORTER_F, 0, 13, 0, 86, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route111_EventScript_1AE4E2, 799, 0, 0
object_event 22, MAP_OBJ_GFX_CAMERAMAN, 0, 14, 0, 86, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route111_EventScript_1AE502, 799, 0, 0
object_event 23, MAP_OBJ_GFX_REPORTER_F, 0, 13, 0, 86, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route111_EventScript_1AE562, 903, 0, 0
object_event 24, MAP_OBJ_GFX_CAMERAMAN, 0, 14, 0, 86, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route111_EventScript_1AE582, 903, 0, 0
object_event 25, MAP_OBJ_GFX_ITEM_BALL, 0, 12, 0, 54, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route111_EventScript_1B14D5, 1009, 0, 0
object_event 26, MAP_OBJ_GFX_ITEM_BALL, 0, 3, 0, 114, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route111_EventScript_1B14E2, 1010, 0, 0
- object_event 27, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 22, 0, 21, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 19, 0, 0
+ object_event 27, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 22, 0, 21, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 19, 0, 0
object_event 28, MAP_OBJ_GFX_PICNICKER, 0, 10, 0, 82, 0, 3, 14, 0, 0, 1, 0, 2, 0, Route111_EventScript_150458, 0, 0, 0
object_event 29, MAP_OBJ_GFX_CAMPER, 0, 11, 0, 71, 0, 3, 22, 0, 0, 1, 0, 3, 0, Route111_EventScript_150441, 0, 0, 0
object_event 30, MAP_OBJ_GFX_BLACK_BELT, 0, 32, 0, 29, 0, 3, 28, 1, 0, 1, 0, 2, 0, Route111_EventScript_15046F, 0, 0, 0
diff --git a/data/maps/events/Route112.inc b/data/maps/events/Route112.inc
index f6dfcfbe5..a4991a907 100644
--- a/data/maps/events/Route112.inc
+++ b/data/maps/events/Route112.inc
@@ -5,10 +5,10 @@ Route112_MapObjects:: @ 8382818
object_event 4, MAP_OBJ_GFX_PICNICKER, 0, 22, 0, 46, 0, 3, 23, 0, 0, 1, 0, 3, 0, Route112_EventScript_1505B5, 0, 0, 0
object_event 5, MAP_OBJ_GFX_HIKER, 0, 17, 0, 40, 0, 3, 16, 0, 0, 1, 0, 4, 0, Route112_EventScript_150560, 0, 0, 0
object_event 6, 241, 0, 27, 0, 30, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route112_EventScript_15051C, 819, 0, 0
- object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 27, 0, 6, 0, 0, 12, 0, 0, 0, 0, 24, 0, BerryTreeScript, 0, 0, 0
- object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 28, 0, 6, 0, 0, 12, 0, 0, 0, 0, 23, 0, BerryTreeScript, 0, 0, 0
- object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 29, 0, 6, 0, 0, 12, 0, 0, 0, 0, 22, 0, BerryTreeScript, 0, 0, 0
- object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 30, 0, 6, 0, 3, 12, 0, 0, 0, 0, 21, 0, BerryTreeScript, 0, 0, 0
+ object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 27, 0, 6, 0, 0, 12, 0, 0, 0, 0, 24, 0, S_BerryTree, 0, 0, 0
+ object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 28, 0, 6, 0, 0, 12, 0, 0, 0, 0, 23, 0, S_BerryTree, 0, 0, 0
+ object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 29, 0, 6, 0, 0, 12, 0, 0, 0, 0, 22, 0, S_BerryTree, 0, 0, 0
+ object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 30, 0, 6, 0, 3, 12, 0, 0, 0, 0, 21, 0, S_BerryTree, 0, 0, 0
object_event 11, MAP_OBJ_GFX_HIKER, 0, 8, 0, 50, 0, 3, 26, 48, 0, 0, 0, 0, 0, Route112_EventScript_150540, 0, 0, 0
object_event 12, MAP_OBJ_GFX_ITEM_BALL, 0, 14, 0, 43, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route112_EventScript_1B14EF, 1011, 0, 0
diff --git a/data/maps/events/Route114.inc b/data/maps/events/Route114.inc
index a2d948d33..1f4d761e3 100644
--- a/data/maps/events/Route114.inc
+++ b/data/maps/events/Route114.inc
@@ -1,25 +1,25 @@
Route114_MapObjects:: @ 8382C48
- object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 43, 0, 3, 12, 0, 0, 0, 0, 77, 0, BerryTreeScript, 0, 0, 0
- object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 44, 0, 3, 12, 0, 0, 0, 0, 78, 0, BerryTreeScript, 0, 0, 0
+ object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 43, 0, 3, 12, 0, 0, 0, 0, 77, 0, S_BerryTree, 0, 0, 0
+ object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 44, 0, 3, 12, 0, 0, 0, 0, 78, 0, S_BerryTree, 0, 0, 0
object_event 3, MAP_OBJ_GFX_HIKER, 0, 15, 0, 65, 0, 7, 10, 0, 0, 1, 0, 6, 0, Route114_EventScript_1507F1, 0, 0, 0
object_event 4, MAP_OBJ_GFX_HIKER, 0, 30, 0, 72, 0, 5, 15, 0, 0, 1, 0, 4, 0, Route114_EventScript_150808, 0, 0, 0
object_event 5, MAP_OBJ_GFX_CAMPER, 0, 22, 0, 50, 0, 3, 10, 0, 0, 1, 0, 3, 0, Route114_EventScript_15081F, 0, 0, 0
object_event 6, MAP_OBJ_GFX_PICNICKER, 0, 19, 0, 35, 0, 3, 1, 0, 0, 1, 0, 3, 0, Route114_EventScript_150836, 0, 0, 0
object_event 7, MAP_OBJ_GFX_MANIAC, 0, 20, 0, 56, 0, 3, 7, 0, 0, 1, 0, 3, 0, Route114_EventScript_15084D, 0, 0, 0
- object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 45, 0, 3, 12, 0, 0, 0, 0, 68, 0, BerryTreeScript, 0, 0, 0
+ object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 45, 0, 3, 12, 0, 0, 0, 0, 68, 0, S_BerryTree, 0, 0, 0
object_event 9, MAP_OBJ_GFX_ITEM_BALL, 0, 7, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route114_EventScript_1B1516, 1014, 0, 0
object_event 10, MAP_OBJ_GFX_ITEM_BALL, 0, 11, 0, 37, 0, 4, 1, 0, 0, 0, 0, 0, 0, Route114_EventScript_1B1523, 1015, 0, 0
- object_event 11, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 12, 0, 43, 0, 4, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 17, 0, 0
+ object_event 11, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 12, 0, 43, 0, 4, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 17, 0, 0
object_event 12, MAP_OBJ_GFX_GENTLEMAN, 0, 19, 0, 11, 0, 3, 10, 0, 0, 0, 0, 0, 0, Route114_EventScript_150782, 0, 0, 0
object_event 13, MAP_OBJ_GFX_POOCHYENA, 0, 19, 0, 12, 0, 3, 10, 0, 0, 0, 0, 0, 0, Route114_EventScript_1507C3, 0, 0, 0
object_event 14, MAP_OBJ_GFX_MAN_5, 0, 27, 0, 42, 0, 3, 3, 16, 0, 0, 0, 0, 0, Route114_EventScript_150733, 0, 0, 0
object_event 15, MAP_OBJ_GFX_FISHERMAN, 0, 23, 0, 20, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route114_EventScript_1508E0, 0, 0, 0
object_event 16, MAP_OBJ_GFX_FISHERMAN, 0, 19, 0, 26, 0, 3, 9, 0, 0, 1, 0, 0, 0, Route114_EventScript_1508C9, 0, 0, 0
object_event 17, MAP_OBJ_GFX_MAN_6, 0, 30, 0, 58, 0, 5, 23, 0, 0, 1, 0, 3, 0, Route114_EventScript_15088B, 0, 0, 0
- object_event 18, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 29, 0, 53, 0, 5, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 18, 0, 0
- object_event 19, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 30, 0, 54, 0, 5, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 19, 0, 0
- object_event 20, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 22, 0, 69, 0, 7, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 20, 0, 0
- object_event 21, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 11, 0, 64, 0, 5, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 21, 0, 0
+ object_event 18, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 29, 0, 53, 0, 5, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 18, 0, 0
+ object_event 19, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 30, 0, 54, 0, 5, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 19, 0, 0
+ object_event 20, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 22, 0, 69, 0, 7, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 20, 0, 0
+ object_event 21, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 11, 0, 64, 0, 5, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 21, 0, 0
object_event 22, MAP_OBJ_GFX_LASS, 0, 24, 0, 44, 0, 3, 8, 17, 0, 1, 0, 0, 0, Route114_EventScript_150912, 0, 0, 0
object_event 23, MAP_OBJ_GFX_LASS, 0, 23, 0, 44, 0, 3, 8, 17, 0, 1, 0, 0, 0, Route114_EventScript_1508F7, 0, 0, 0
diff --git a/data/maps/events/Route115.inc b/data/maps/events/Route115.inc
index cba3c3e7d..ddca08fad 100644
--- a/data/maps/events/Route115.inc
+++ b/data/maps/events/Route115.inc
@@ -2,18 +2,18 @@ Route115_MapObjects:: @ 8382F2C
object_event 1, MAP_OBJ_GFX_WOMAN_3, 0, 18, 0, 68, 0, 3, 2, 17, 0, 0, 0, 0, 0, Route115_EventScript_15092E, 0, 0, 0
object_event 2, MAP_OBJ_GFX_OLD_MAN_1, 0, 5, 0, 15, 0, 3, 10, 0, 0, 1, 0, 6, 0, Route115_EventScript_150949, 0, 0, 0
object_event 3, MAP_OBJ_GFX_BLACK_BELT, 0, 27, 0, 53, 0, 3, 15, 17, 0, 1, 0, 4, 0, Route115_EventScript_15099E, 0, 0, 0
- object_event 4, MAP_OBJ_GFX_BERRY_TREE, 0, 11, 0, 5, 0, 3, 12, 0, 0, 0, 0, 69, 0, BerryTreeScript, 0, 0, 0
- object_event 5, MAP_OBJ_GFX_BERRY_TREE, 0, 12, 0, 5, 0, 3, 12, 0, 0, 0, 0, 70, 0, BerryTreeScript, 0, 0, 0
- object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 13, 0, 5, 0, 3, 12, 0, 0, 0, 0, 71, 0, BerryTreeScript, 0, 0, 0
+ object_event 4, MAP_OBJ_GFX_BERRY_TREE, 0, 11, 0, 5, 0, 3, 12, 0, 0, 0, 0, 69, 0, S_BerryTree, 0, 0, 0
+ object_event 5, MAP_OBJ_GFX_BERRY_TREE, 0, 12, 0, 5, 0, 3, 12, 0, 0, 0, 0, 70, 0, S_BerryTree, 0, 0, 0
+ object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 13, 0, 5, 0, 3, 12, 0, 0, 0, 0, 71, 0, S_BerryTree, 0, 0, 0
object_event 7, MAP_OBJ_GFX_GIRL_3, 0, 15, 0, 50, 0, 3, 64, 0, 0, 1, 0, 3, 0, Route115_EventScript_1509DC, 0, 0, 0
object_event 8, MAP_OBJ_GFX_BLACK_BELT, 0, 17, 0, 17, 0, 3, 50, 51, 0, 1, 0, 2, 0, Route115_EventScript_150987, 0, 0, 0
object_event 9, MAP_OBJ_GFX_MANIAC, 0, 25, 0, 61, 0, 3, 14, 0, 0, 1, 0, 3, 0, Route115_EventScript_150A1A, 0, 0, 0
object_event 10, MAP_OBJ_GFX_ITEM_BALL, 0, 20, 0, 60, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route115_EventScript_1B1530, 1016, 0, 0
object_event 11, MAP_OBJ_GFX_ITEM_BALL, 0, 19, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route115_EventScript_1B153D, 1017, 0, 0
object_event 12, MAP_OBJ_GFX_ITEM_BALL, 0, 23, 0, 29, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route115_EventScript_1B154A, 1018, 0, 0
- object_event 13, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 64, 0, 3, 12, 0, 0, 0, 0, 55, 0, BerryTreeScript, 0, 0, 0
- object_event 14, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 65, 0, 3, 12, 0, 0, 0, 0, 56, 0, BerryTreeScript, 0, 0, 0
- object_event 15, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 29, 0, 50, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 17, 0, 0
+ object_event 13, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 64, 0, 3, 12, 0, 0, 0, 0, 55, 0, S_BerryTree, 0, 0, 0
+ object_event 14, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 65, 0, 3, 12, 0, 0, 0, 0, 56, 0, S_BerryTree, 0, 0, 0
+ object_event 15, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 29, 0, 50, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 17, 0, 0
object_event 16, MAP_OBJ_GFX_ITEM_BALL, 0, 31, 0, 56, 0, 3, 1, 17, 0, 0, 0, 0, 0, Route115_EventScript_1B1557, 1118, 0, 0
Route115_MapWarps:: @ 83830AC
diff --git a/data/maps/events/Route116.inc b/data/maps/events/Route116.inc
index 18717be4e..b5f922524 100644
--- a/data/maps/events/Route116.inc
+++ b/data/maps/events/Route116.inc
@@ -1,18 +1,18 @@
Route116_MapObjects:: @ 8383170
- object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 18, 0, 2, 0, 3, 12, 0, 0, 0, 0, 25, 0, BerryTreeScript, 0, 0, 0
- object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 19, 0, 2, 0, 3, 12, 0, 0, 0, 0, 26, 0, BerryTreeScript, 0, 0, 0
+ object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 18, 0, 2, 0, 3, 12, 0, 0, 0, 0, 25, 0, S_BerryTree, 0, 0, 0
+ object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 19, 0, 2, 0, 3, 12, 0, 0, 0, 0, 26, 0, S_BerryTree, 0, 0, 0
object_event 3, MAP_OBJ_GFX_YOUNGSTER, 0, 12, 0, 7, 0, 3, 16, 0, 0, 1, 0, 3, 0, Route116_EventScript_150C62, 0, 0, 0
- object_event 4, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 21, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 17, 0, 0
- object_event 5, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 33, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 18, 0, 0
+ object_event 4, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 21, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 17, 0, 0
+ object_event 5, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 33, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 18, 0, 0
object_event 6, MAP_OBJ_GFX_BUG_CATCHER, 0, 13, 0, 17, 0, 3, 24, 0, 0, 1, 0, 2, 0, Route116_EventScript_150C79, 0, 0, 0
object_event 7, MAP_OBJ_GFX_ITEM_BALL, 0, 19, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route116_EventScript_1B1571, 1019, 0, 0
object_event 8, MAP_OBJ_GFX_ITEM_BALL, 0, 10, 0, 17, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route116_EventScript_1B157E, 1020, 0, 0
- object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 20, 0, 2, 0, 3, 12, 0, 0, 0, 0, 66, 0, BerryTreeScript, 0, 0, 0
- object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 21, 0, 2, 0, 3, 12, 0, 0, 0, 0, 67, 0, BerryTreeScript, 0, 0, 0
+ object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 20, 0, 2, 0, 3, 12, 0, 0, 0, 0, 66, 0, S_BerryTree, 0, 0, 0
+ object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 21, 0, 2, 0, 3, 12, 0, 0, 0, 0, 67, 0, S_BerryTree, 0, 0, 0
object_event 11, MAP_OBJ_GFX_OLD_MAN_1, 0, 46, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route116_EventScript_150B5D, 891, 0, 0
- object_event 12, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 30, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 19, 0, 0
+ object_event 12, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 30, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 19, 0, 0
object_event 13, MAP_OBJ_GFX_HIKER, 0, 36, 0, 15, 0, 3, 13, 0, 0, 1, 0, 2, 0, Route116_EventScript_150CCE, 0, 0, 0
- object_event 14, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 24, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 20, 0, 0
+ object_event 14, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 24, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 20, 0, 0
object_event 15, MAP_OBJ_GFX_ITEM_BALL, 0, 80, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route116_EventScript_1B158B, 1021, 0, 0
object_event 16, MAP_OBJ_GFX_LASS, 0, 22, 0, 16, 0, 3, 13, 0, 0, 1, 0, 3, 0, Route116_EventScript_150CE5, 0, 0, 0
object_event 17, MAP_OBJ_GFX_GIRL_3, 0, 25, 0, 4, 0, 3, 8, 0, 0, 1, 0, 2, 0, Route116_EventScript_150CFC, 0, 0, 0
diff --git a/data/maps/events/Route117.inc b/data/maps/events/Route117.inc
index b53e3de57..bf6aeb5d0 100644
--- a/data/maps/events/Route117.inc
+++ b/data/maps/events/Route117.inc
@@ -9,11 +9,11 @@ Route117_MapObjects:: @ 8383440
object_event 8, MAP_OBJ_GFX_RUNNING_TRIATHLETE_M, 0, 35, 0, 7, 0, 3, 28, 7, 0, 1, 0, 4, 0, Route117_EventScript_150E09, 0, 0, 0
object_event 9, MAP_OBJ_GFX_WOMAN_3, 0, 31, 0, 11, 0, 3, 23, 0, 0, 1, 0, 3, 0, Route117_EventScript_150DCB, 0, 0, 0
object_event 10, MAP_OBJ_GFX_MAN_5, 0, 10, 0, 9, 0, 3, 18, 0, 0, 1, 0, 3, 0, Route117_EventScript_150D8D, 0, 0, 0
- object_event 11, MAP_OBJ_GFX_BERRY_TREE, 0, 41, 0, 13, 0, 3, 12, 0, 0, 0, 0, 29, 0, BerryTreeScript, 0, 0, 0
- object_event 12, MAP_OBJ_GFX_BERRY_TREE, 0, 42, 0, 13, 0, 3, 12, 0, 0, 0, 0, 28, 0, BerryTreeScript, 0, 0, 0
- object_event 13, MAP_OBJ_GFX_BERRY_TREE, 0, 43, 0, 13, 0, 3, 12, 0, 0, 0, 0, 27, 0, BerryTreeScript, 0, 0, 0
+ object_event 11, MAP_OBJ_GFX_BERRY_TREE, 0, 41, 0, 13, 0, 3, 12, 0, 0, 0, 0, 29, 0, S_BerryTree, 0, 0, 0
+ object_event 12, MAP_OBJ_GFX_BERRY_TREE, 0, 42, 0, 13, 0, 3, 12, 0, 0, 0, 0, 28, 0, S_BerryTree, 0, 0, 0
+ object_event 13, MAP_OBJ_GFX_BERRY_TREE, 0, 43, 0, 13, 0, 3, 12, 0, 0, 0, 0, 27, 0, S_BerryTree, 0, 0, 0
object_event 14, MAP_OBJ_GFX_ITEM_BALL, 0, 16, 0, 18, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route117_EventScript_1B1598, 1022, 0, 0
- object_event 15, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 15, 0, 2, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 17, 0, 0
+ object_event 15, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 15, 0, 2, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 17, 0, 0
object_event 16, MAP_OBJ_GFX_ITEM_BALL, 0, 9, 0, 1, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route117_EventScript_1B15A5, 1023, 0, 0
object_event 17, MAP_OBJ_GFX_RUNNING_TRIATHLETE_F, 0, 21, 0, 1, 0, 3, 40, 68, 0, 1, 0, 3, 0, Route117_EventScript_150E47, 0, 0, 0
object_event 18, MAP_OBJ_GFX_MANIAC, 0, 17, 0, 12, 0, 3, 7, 17, 0, 1, 0, 4, 0, Route117_EventScript_150E85, 0, 0, 0
diff --git a/data/maps/events/Route118.inc b/data/maps/events/Route118.inc
index f912b6fbd..df887ba1e 100644
--- a/data/maps/events/Route118.inc
+++ b/data/maps/events/Route118.inc
@@ -1,7 +1,7 @@
Route118_MapObjects:: @ 8383684
- object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 35, 0, 5, 0, 3, 12, 0, 0, 0, 0, 31, 0, BerryTreeScript, 0, 0, 0
- object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 36, 0, 5, 0, 3, 12, 0, 0, 0, 0, 32, 0, BerryTreeScript, 0, 0, 0
- object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 37, 0, 5, 0, 3, 12, 0, 0, 0, 0, 33, 0, BerryTreeScript, 0, 0, 0
+ object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 35, 0, 5, 0, 3, 12, 0, 0, 0, 0, 31, 0, S_BerryTree, 0, 0, 0
+ object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 36, 0, 5, 0, 3, 12, 0, 0, 0, 0, 32, 0, S_BerryTree, 0, 0, 0
+ object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 37, 0, 5, 0, 3, 12, 0, 0, 0, 0, 33, 0, S_BerryTree, 0, 0, 0
object_event 4, MAP_OBJ_GFX_MAN_6, 0, 64, 0, 10, 0, 3, 8, 0, 0, 1, 0, 3, 0, Route118_EventScript_151139, 0, 0, 0
object_event 5, MAP_OBJ_GFX_REPORTER_F, 0, 33, 0, 8, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route118_EventScript_1AE462, 797, 0, 0
object_event 6, MAP_OBJ_GFX_CAMERAMAN, 0, 34, 0, 8, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route118_EventScript_1AE482, 797, 0, 0
@@ -10,7 +10,7 @@ Route118_MapObjects:: @ 8383684
object_event 9, MAP_OBJ_GFX_CAMERAMAN, 0, 34, 0, 8, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route118_EventScript_1AE542, 901, 0, 0
object_event 10, MAP_OBJ_GFX_REPORTER_F, 0, 33, 0, 8, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route118_EventScript_1AE562, 904, 0, 0
object_event 11, MAP_OBJ_GFX_CAMERAMAN, 0, 34, 0, 8, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route118_EventScript_1AE582, 904, 0, 0
- object_event 12, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 38, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 17, 0, 0
+ object_event 12, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 38, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 17, 0, 0
object_event 13, MAP_OBJ_GFX_FISHERMAN, 0, 28, 0, 8, 0, 3, 9, 0, 0, 0, 0, 0, 0, Route118_EventScript_150F34, 0, 0, 0
object_event 14, MAP_OBJ_GFX_WOMAN_3, 0, 7, 0, 10, 0, 3, 24, 0, 0, 1, 0, 4, 0, Route118_EventScript_15108F, 0, 0, 0
object_event 15, MAP_OBJ_GFX_FISHERMAN, 0, 14, 0, 14, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route118_EventScript_1510E4, 0, 0, 0
diff --git a/data/maps/events/Route119.inc b/data/maps/events/Route119.inc
index 966ae6058..08e6e3649 100644
--- a/data/maps/events/Route119.inc
+++ b/data/maps/events/Route119.inc
@@ -1,7 +1,7 @@
Route119_MapObjects:: @ 8383914
- object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 24, 0, 5, 0, 3, 12, 0, 0, 0, 0, 34, 0, BerryTreeScript, 0, 0, 0
- object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 25, 0, 5, 0, 3, 12, 0, 0, 0, 0, 35, 0, BerryTreeScript, 0, 0, 0
- object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 26, 0, 5, 0, 3, 12, 0, 0, 0, 0, 36, 0, BerryTreeScript, 0, 0, 0
+ object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 24, 0, 5, 0, 3, 12, 0, 0, 0, 0, 34, 0, S_BerryTree, 0, 0, 0
+ object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 25, 0, 5, 0, 3, 12, 0, 0, 0, 0, 35, 0, S_BerryTree, 0, 0, 0
+ object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 26, 0, 5, 0, 3, 12, 0, 0, 0, 0, 36, 0, S_BerryTree, 0, 0, 0
object_event 4, MAP_OBJ_GFX_BUG_CATCHER, 0, 12, 0, 123, 0, 3, 59, 0, 0, 1, 0, 1, 0, Route119_EventScript_151491, 0, 0, 0
object_event 5, MAP_OBJ_GFX_MANIAC, 0, 26, 0, 123, 0, 3, 60, 0, 0, 1, 0, 1, 0, Route119_EventScript_151463, 0, 0, 0
object_event 6, MAP_OBJ_GFX_MANIAC, 0, 5, 0, 125, 0, 3, 62, 0, 0, 1, 0, 1, 0, Route119_EventScript_15144C, 0, 0, 0
@@ -25,10 +25,10 @@ Route119_MapObjects:: @ 8383914
object_event 24, 241, 0, 13, 0, 34, 0, 4, 10, 0, 0, 0, 0, 0, 0, Route119_EventScript_1515DC, 890, 0, 0
object_event 25, 243, 0, 17, 0, 33, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0x0, 923, 0, 0
object_event 26, MAP_OBJ_GFX_BOY_3, 0, 31, 0, 109, 0, 3, 8, 17, 0, 0, 0, 0, 0, Route119_EventScript_1515F3, 0, 0, 0
- object_event 27, MAP_OBJ_GFX_BERRY_TREE, 0, 8, 0, 23, 0, 3, 12, 0, 0, 0, 0, 83, 0, BerryTreeScript, 0, 0, 0
- object_event 28, MAP_OBJ_GFX_BERRY_TREE, 0, 9, 0, 23, 0, 3, 12, 0, 0, 0, 0, 84, 0, BerryTreeScript, 0, 0, 0
- object_event 29, MAP_OBJ_GFX_BERRY_TREE, 0, 29, 0, 90, 0, 3, 12, 0, 0, 0, 0, 85, 0, BerryTreeScript, 0, 0, 0
- object_event 30, MAP_OBJ_GFX_BERRY_TREE, 0, 30, 0, 90, 0, 3, 12, 0, 0, 0, 0, 86, 0, BerryTreeScript, 0, 0, 0
+ object_event 27, MAP_OBJ_GFX_BERRY_TREE, 0, 8, 0, 23, 0, 3, 12, 0, 0, 0, 0, 83, 0, S_BerryTree, 0, 0, 0
+ object_event 28, MAP_OBJ_GFX_BERRY_TREE, 0, 9, 0, 23, 0, 3, 12, 0, 0, 0, 0, 84, 0, S_BerryTree, 0, 0, 0
+ object_event 29, MAP_OBJ_GFX_BERRY_TREE, 0, 29, 0, 90, 0, 3, 12, 0, 0, 0, 0, 85, 0, S_BerryTree, 0, 0, 0
+ object_event 30, MAP_OBJ_GFX_BERRY_TREE, 0, 30, 0, 90, 0, 3, 12, 0, 0, 0, 0, 86, 0, S_BerryTree, 0, 0, 0
object_event 31, MAP_OBJ_GFX_CYCLING_TRIATHLETE_M, 0, 19, 0, 133, 0, 3, 5, 18, 0, 0, 0, 0, 0, Route119_EventScript_15141A, 0, 0, 0
object_event 32, MAP_OBJ_GFX_ITEM_BALL, 0, 3, 0, 56, 0, 3, 1, 17, 0, 0, 0, 0, 0, Route119_EventScript_1B160D, 1106, 0, 0
object_event 33, MAP_OBJ_GFX_BOY_2, 0, 35, 0, 93, 0, 4, 2, 17, 0, 0, 0, 0, 0, Route119_EventScript_1515FC, 0, 0, 0
diff --git a/data/maps/events/Route120.inc b/data/maps/events/Route120.inc
index 43a67ee99..81fa21c7f 100644
--- a/data/maps/events/Route120.inc
+++ b/data/maps/events/Route120.inc
@@ -1,14 +1,14 @@
Route120_MapObjects:: @ 8383F30
- object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 4, 0, 79, 0, 3, 12, 0, 0, 0, 0, 46, 0, BerryTreeScript, 0, 0, 0
- object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 5, 0, 79, 0, 3, 12, 0, 0, 0, 0, 45, 0, BerryTreeScript, 0, 0, 0
- object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 6, 0, 79, 0, 3, 12, 0, 0, 0, 0, 44, 0, BerryTreeScript, 0, 0, 0
- object_event 4, MAP_OBJ_GFX_BERRY_TREE, 0, 7, 0, 79, 0, 3, 12, 0, 0, 0, 0, 43, 0, BerryTreeScript, 0, 0, 0
- object_event 5, MAP_OBJ_GFX_BERRY_TREE, 0, 34, 0, 24, 0, 3, 12, 0, 0, 0, 0, 37, 0, BerryTreeScript, 0, 0, 0
- object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 35, 0, 24, 0, 3, 12, 0, 0, 0, 0, 38, 0, BerryTreeScript, 0, 0, 0
- object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 36, 0, 24, 0, 3, 12, 0, 0, 0, 0, 39, 0, BerryTreeScript, 0, 0, 0
- object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 9, 0, 92, 0, 5, 12, 0, 0, 0, 0, 40, 0, BerryTreeScript, 0, 0, 0
- object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 10, 0, 92, 0, 5, 12, 0, 0, 0, 0, 41, 0, BerryTreeScript, 0, 0, 0
- object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 11, 0, 92, 0, 5, 12, 0, 0, 0, 0, 42, 0, BerryTreeScript, 0, 0, 0
+ object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 4, 0, 79, 0, 3, 12, 0, 0, 0, 0, 46, 0, S_BerryTree, 0, 0, 0
+ object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 5, 0, 79, 0, 3, 12, 0, 0, 0, 0, 45, 0, S_BerryTree, 0, 0, 0
+ object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 6, 0, 79, 0, 3, 12, 0, 0, 0, 0, 44, 0, S_BerryTree, 0, 0, 0
+ object_event 4, MAP_OBJ_GFX_BERRY_TREE, 0, 7, 0, 79, 0, 3, 12, 0, 0, 0, 0, 43, 0, S_BerryTree, 0, 0, 0
+ object_event 5, MAP_OBJ_GFX_BERRY_TREE, 0, 34, 0, 24, 0, 3, 12, 0, 0, 0, 0, 37, 0, S_BerryTree, 0, 0, 0
+ object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 35, 0, 24, 0, 3, 12, 0, 0, 0, 0, 38, 0, S_BerryTree, 0, 0, 0
+ object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 36, 0, 24, 0, 3, 12, 0, 0, 0, 0, 39, 0, S_BerryTree, 0, 0, 0
+ object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 9, 0, 92, 0, 5, 12, 0, 0, 0, 0, 40, 0, S_BerryTree, 0, 0, 0
+ object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 10, 0, 92, 0, 5, 12, 0, 0, 0, 0, 41, 0, S_BerryTree, 0, 0, 0
+ object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 11, 0, 92, 0, 5, 12, 0, 0, 0, 0, 42, 0, S_BerryTree, 0, 0, 0
object_event 11, MAP_OBJ_GFX_MAN_6, 0, 5, 0, 22, 0, 3, 14, 0, 0, 1, 0, 3, 0, Route120_EventScript_1519B3, 0, 0, 0
object_event 12, MAP_OBJ_GFX_MAN_6, 0, 32, 0, 14, 0, 3, 10, 0, 0, 1, 0, 3, 0, Route120_EventScript_1519CA, 0, 0, 0
object_event 13, MAP_OBJ_GFX_CAMPER, 0, 27, 0, 51, 0, 3, 9, 0, 0, 1, 0, 7, 0, Route120_EventScript_151A08, 0, 0, 0
@@ -19,7 +19,7 @@ Route120_MapObjects:: @ 8383F30
object_event 18, MAP_OBJ_GFX_REPORTER_F, 0, 36, 0, 5, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route120_EventScript_1AE4A2, 798, 0, 0
object_event 19, MAP_OBJ_GFX_REPORTER_F, 0, 36, 0, 5, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route120_EventScript_1AE562, 902, 0, 0
object_event 20, MAP_OBJ_GFX_CAMERAMAN, 0, 37, 0, 5, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route120_EventScript_1AE582, 902, 0, 0
- object_event 21, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 35, 0, 32, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 17, 0, 0
+ object_event 21, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 35, 0, 32, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 17, 0, 0
object_event 22, MAP_OBJ_GFX_ITEM_BALL, 0, 7, 0, 89, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route120_EventScript_1B1627, 1031, 0, 0
object_event 23, MAP_OBJ_GFX_BEAUTY, 0, 14, 0, 92, 0, 5, 5, 1, 0, 0, 0, 0, 0, Route120_EventScript_151739, 0, 0, 0
object_event 24, MAP_OBJ_GFX_WOMAN_7, 0, 28, 0, 35, 0, 3, 15, 0, 0, 1, 0, 4, 0, Route120_EventScript_151A74, 0, 0, 0
@@ -30,8 +30,8 @@ Route120_MapObjects:: @ 8383F30
object_event 29, MAP_OBJ_GFX_ITEM_BALL, 0, 23, 0, 82, 0, 5, 1, 17, 0, 0, 0, 0, 0, Route120_EventScript_1B1634, 1107, 0, 0
object_event 30, MAP_OBJ_GFX_KECLEON_1, 0, 12, 0, 16, 0, 4, 76, 17, 0, 0, 0, 0, 0, Route120_EventScript_151998, 970, 0, 0
object_event 31, MAP_OBJ_GFX_STEVEN, 0, 13, 0, 15, 0, 4, 8, 17, 0, 0, 0, 0, 0, Route120_EventScript_151853, 972, 0, 0
- object_event 32, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 20, 0, 1, 0, 3, 1, 17, 0, 0, 0, 0, 0, CuttableTreeScript, 20, 0, 0
- object_event 33, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 15, 0, 1, 0, 3, 1, 17, 0, 0, 0, 0, 0, CuttableTreeScript, 18, 0, 0
+ object_event 32, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 20, 0, 1, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_CuttableTree, 20, 0, 0
+ object_event 33, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 15, 0, 1, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_CuttableTree, 18, 0, 0
object_event 34, MAP_OBJ_GFX_LITTLE_BOY_1, 0, 10, 0, 72, 0, 3, 58, 17, 0, 1, 0, 3, 0, Route120_EventScript_151AD0, 0, 0, 0
object_event 35, MAP_OBJ_GFX_LITTLE_BOY_1, 0, 19, 0, 28, 0, 3, 57, 17, 0, 1, 0, 3, 0, Route120_EventScript_151AE7, 0, 0, 0
object_event 36, MAP_OBJ_GFX_KECLEON_2, 0, 12, 0, 16, 0, 3, 8, 17, 0, 0, 0, 0, 0, 0x0, 981, 0, 0
diff --git a/data/maps/events/Route121.inc b/data/maps/events/Route121.inc
index 514f51349..9961344a8 100644
--- a/data/maps/events/Route121.inc
+++ b/data/maps/events/Route121.inc
@@ -1,26 +1,26 @@
Route121_MapObjects:: @ 8384504
object_event 1, MAP_OBJ_GFX_WOMAN_4, 0, 29, 0, 14, 0, 3, 10, 17, 0, 0, 0, 0, 0, Route121_EventScript_151B0A, 0, 0, 0
- object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 14, 0, 2, 0, 3, 12, 0, 0, 0, 0, 47, 0, BerryTreeScript, 0, 0, 0
- object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 15, 0, 2, 0, 3, 12, 0, 0, 0, 0, 48, 0, BerryTreeScript, 0, 0, 0
- object_event 4, MAP_OBJ_GFX_BERRY_TREE, 0, 16, 0, 2, 0, 3, 12, 0, 0, 0, 0, 49, 0, BerryTreeScript, 0, 0, 0
- object_event 5, MAP_OBJ_GFX_BERRY_TREE, 0, 17, 0, 2, 0, 3, 12, 0, 0, 0, 0, 50, 0, BerryTreeScript, 0, 0, 0
- object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 64, 0, 14, 0, 3, 12, 0, 0, 0, 0, 51, 0, BerryTreeScript, 0, 0, 0
- object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 65, 0, 14, 0, 3, 12, 0, 0, 0, 0, 52, 0, BerryTreeScript, 0, 0, 0
- object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 66, 0, 14, 0, 3, 12, 0, 0, 0, 0, 53, 0, BerryTreeScript, 0, 0, 0
- object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 67, 0, 14, 0, 3, 12, 0, 0, 0, 0, 54, 0, BerryTreeScript, 0, 0, 0
+ object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 14, 0, 2, 0, 3, 12, 0, 0, 0, 0, 47, 0, S_BerryTree, 0, 0, 0
+ object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 15, 0, 2, 0, 3, 12, 0, 0, 0, 0, 48, 0, S_BerryTree, 0, 0, 0
+ object_event 4, MAP_OBJ_GFX_BERRY_TREE, 0, 16, 0, 2, 0, 3, 12, 0, 0, 0, 0, 49, 0, S_BerryTree, 0, 0, 0
+ object_event 5, MAP_OBJ_GFX_BERRY_TREE, 0, 17, 0, 2, 0, 3, 12, 0, 0, 0, 0, 50, 0, S_BerryTree, 0, 0, 0
+ object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 64, 0, 14, 0, 3, 12, 0, 0, 0, 0, 51, 0, S_BerryTree, 0, 0, 0
+ object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 65, 0, 14, 0, 3, 12, 0, 0, 0, 0, 52, 0, S_BerryTree, 0, 0, 0
+ object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 66, 0, 14, 0, 3, 12, 0, 0, 0, 0, 53, 0, S_BerryTree, 0, 0, 0
+ object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 67, 0, 14, 0, 3, 12, 0, 0, 0, 0, 54, 0, S_BerryTree, 0, 0, 0
object_event 10, MAP_OBJ_GFX_LASS, 0, 39, 0, 9, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route121_EventScript_151BDE, 0, 0, 0
object_event 11, MAP_OBJ_GFX_LASS, 0, 40, 0, 9, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route121_EventScript_151BF9, 0, 0, 0
object_event 12, 241, 0, 30, 0, 8, 0, 3, 7, 0, 0, 0, 0, 0, 0, 0x0, 914, 0, 0
object_event 13, 241, 0, 30, 0, 7, 0, 3, 10, 0, 0, 0, 0, 0, 0, 0x0, 914, 0, 0
object_event 14, 241, 0, 31, 0, 7, 0, 3, 9, 0, 0, 0, 0, 0, 0, 0x0, 914, 0, 0
- object_event 15, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 32, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 17, 0, 0
- object_event 16, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 65, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 18, 0, 0
+ object_event 15, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 32, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 17, 0, 0
+ object_event 16, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 65, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 18, 0, 0
object_event 17, MAP_OBJ_GFX_WOMAN_2, 0, 63, 0, 5, 0, 3, 9, 0, 0, 1, 0, 4, 0, Route121_EventScript_151B72, 0, 0, 0
object_event 18, MAP_OBJ_GFX_GENTLEMAN, 0, 55, 0, 8, 0, 3, 17, 0, 0, 1, 0, 3, 0, Route121_EventScript_151B89, 0, 0, 0
object_event 19, MAP_OBJ_GFX_HEX_MANIAC, 0, 11, 0, 10, 0, 3, 15, 0, 0, 1, 0, 4, 0, Route121_EventScript_151BC7, 0, 0, 0
object_event 20, MAP_OBJ_GFX_BEAUTY, 0, 22, 0, 5, 0, 3, 17, 0, 0, 1, 0, 4, 0, Route121_EventScript_151C14, 0, 0, 0
object_event 21, MAP_OBJ_GFX_ITEM_BALL, 0, 55, 0, 10, 0, 3, 1, 17, 0, 0, 0, 0, 0, Route121_EventScript_1B164E, 1103, 0, 0
- object_event 22, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 26, 0, 12, 0, 3, 1, 17, 0, 0, 0, 0, 0, CuttableTreeScript, 19, 0, 0
+ object_event 22, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 26, 0, 12, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_CuttableTree, 19, 0, 0
Route121_MapWarps:: @ 8384714
warp_def 37, 5, 0, 2, Route121_SafariZoneEntrance
diff --git a/data/maps/events/Route123.inc b/data/maps/events/Route123.inc
index 6b97bafe5..dc5ac0fb4 100644
--- a/data/maps/events/Route123.inc
+++ b/data/maps/events/Route123.inc
@@ -1,30 +1,30 @@
Route123_MapObjects:: @ 83847F8
- object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 11, 0, 3, 0, 3, 12, 0, 0, 0, 0, 58, 0, BerryTreeScript, 0, 0, 0
- object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 12, 0, 3, 0, 3, 12, 0, 0, 0, 0, 59, 0, BerryTreeScript, 0, 0, 0
- object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 14, 0, 3, 0, 3, 12, 0, 0, 0, 0, 60, 0, BerryTreeScript, 0, 0, 0
- object_event 4, MAP_OBJ_GFX_BERRY_TREE, 0, 15, 0, 3, 0, 3, 12, 0, 0, 0, 0, 61, 0, BerryTreeScript, 0, 0, 0
- object_event 5, MAP_OBJ_GFX_BERRY_TREE, 0, 81, 0, 1, 0, 3, 12, 0, 0, 0, 0, 62, 0, BerryTreeScript, 0, 0, 0
- object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 82, 0, 1, 0, 3, 12, 0, 0, 0, 0, 63, 0, BerryTreeScript, 0, 0, 0
- object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 83, 0, 1, 0, 3, 12, 0, 0, 0, 0, 64, 0, BerryTreeScript, 0, 0, 0
+ object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 11, 0, 3, 0, 3, 12, 0, 0, 0, 0, 58, 0, S_BerryTree, 0, 0, 0
+ object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 12, 0, 3, 0, 3, 12, 0, 0, 0, 0, 59, 0, S_BerryTree, 0, 0, 0
+ object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 14, 0, 3, 0, 3, 12, 0, 0, 0, 0, 60, 0, S_BerryTree, 0, 0, 0
+ object_event 4, MAP_OBJ_GFX_BERRY_TREE, 0, 15, 0, 3, 0, 3, 12, 0, 0, 0, 0, 61, 0, S_BerryTree, 0, 0, 0
+ object_event 5, MAP_OBJ_GFX_BERRY_TREE, 0, 81, 0, 1, 0, 3, 12, 0, 0, 0, 0, 62, 0, S_BerryTree, 0, 0, 0
+ object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 82, 0, 1, 0, 3, 12, 0, 0, 0, 0, 63, 0, S_BerryTree, 0, 0, 0
+ object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 83, 0, 1, 0, 3, 12, 0, 0, 0, 0, 64, 0, S_BerryTree, 0, 0, 0
object_event 8, MAP_OBJ_GFX_WOMAN_7, 0, 70, 0, 12, 0, 3, 24, 0, 0, 1, 0, 1, 0, Route123_EventScript_151CD1, 0, 0, 0
object_event 9, MAP_OBJ_GFX_MAN_4, 0, 58, 0, 7, 0, 3, 17, 0, 0, 1, 0, 2, 0, Route123_EventScript_151CE8, 0, 0, 0
- object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 14, 0, 5, 0, 3, 12, 0, 0, 0, 0, 65, 0, BerryTreeScript, 0, 0, 0
- object_event 11, MAP_OBJ_GFX_BERRY_TREE, 0, 15, 0, 5, 0, 3, 12, 0, 0, 0, 0, 72, 0, BerryTreeScript, 0, 0, 0
- object_event 12, MAP_OBJ_GFX_BERRY_TREE, 0, 17, 0, 5, 0, 3, 12, 0, 0, 0, 0, 73, 0, BerryTreeScript, 0, 0, 0
- object_event 13, MAP_OBJ_GFX_BERRY_TREE, 0, 18, 0, 5, 0, 3, 12, 0, 0, 0, 0, 74, 0, BerryTreeScript, 0, 0, 0
- object_event 14, MAP_OBJ_GFX_BERRY_TREE, 0, 17, 0, 3, 0, 3, 12, 0, 0, 0, 0, 79, 0, BerryTreeScript, 0, 0, 0
- object_event 15, MAP_OBJ_GFX_BERRY_TREE, 0, 18, 0, 3, 0, 3, 12, 0, 0, 0, 0, 14, 0, BerryTreeScript, 0, 0, 0
- object_event 16, MAP_OBJ_GFX_BERRY_TREE, 0, 11, 0, 5, 0, 3, 12, 0, 0, 0, 0, 15, 0, BerryTreeScript, 0, 0, 0
- object_event 17, MAP_OBJ_GFX_BERRY_TREE, 0, 12, 0, 5, 0, 3, 12, 0, 0, 0, 0, 30, 0, BerryTreeScript, 0, 0, 0
- object_event 18, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 101, 0, 13, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 17, 0, 0
- object_event 19, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 129, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 18, 0, 0
- object_event 20, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 92, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 19, 0, 0
+ object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 14, 0, 5, 0, 3, 12, 0, 0, 0, 0, 65, 0, S_BerryTree, 0, 0, 0
+ object_event 11, MAP_OBJ_GFX_BERRY_TREE, 0, 15, 0, 5, 0, 3, 12, 0, 0, 0, 0, 72, 0, S_BerryTree, 0, 0, 0
+ object_event 12, MAP_OBJ_GFX_BERRY_TREE, 0, 17, 0, 5, 0, 3, 12, 0, 0, 0, 0, 73, 0, S_BerryTree, 0, 0, 0
+ object_event 13, MAP_OBJ_GFX_BERRY_TREE, 0, 18, 0, 5, 0, 3, 12, 0, 0, 0, 0, 74, 0, S_BerryTree, 0, 0, 0
+ object_event 14, MAP_OBJ_GFX_BERRY_TREE, 0, 17, 0, 3, 0, 3, 12, 0, 0, 0, 0, 79, 0, S_BerryTree, 0, 0, 0
+ object_event 15, MAP_OBJ_GFX_BERRY_TREE, 0, 18, 0, 3, 0, 3, 12, 0, 0, 0, 0, 14, 0, S_BerryTree, 0, 0, 0
+ object_event 16, MAP_OBJ_GFX_BERRY_TREE, 0, 11, 0, 5, 0, 3, 12, 0, 0, 0, 0, 15, 0, S_BerryTree, 0, 0, 0
+ object_event 17, MAP_OBJ_GFX_BERRY_TREE, 0, 12, 0, 5, 0, 3, 12, 0, 0, 0, 0, 30, 0, S_BerryTree, 0, 0, 0
+ object_event 18, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 101, 0, 13, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 17, 0, 0
+ object_event 19, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 129, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 18, 0, 0
+ object_event 20, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 92, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 19, 0, 0
object_event 21, MAP_OBJ_GFX_ITEM_BALL, 0, 31, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route123_EventScript_1B165B, 1032, 0, 0
object_event 22, MAP_OBJ_GFX_ITEM_BALL, 0, 139, 0, 18, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route123_EventScript_1B1668, 1033, 0, 0
object_event 23, MAP_OBJ_GFX_GIRL_3, 0, 108, 0, 13, 0, 3, 15, 0, 0, 0, 0, 0, 0, Route123_EventScript_151C5D, 0, 0, 0
- object_event 24, MAP_OBJ_GFX_BERRY_TREE, 0, 109, 0, 13, 0, 3, 12, 0, 0, 0, 0, 87, 0, BerryTreeScript, 0, 0, 0
- object_event 25, MAP_OBJ_GFX_BERRY_TREE, 0, 110, 0, 13, 0, 3, 12, 0, 0, 0, 0, 88, 0, BerryTreeScript, 0, 0, 0
- object_event 26, MAP_OBJ_GFX_BERRY_TREE, 0, 111, 0, 13, 0, 3, 12, 0, 0, 0, 0, 89, 0, BerryTreeScript, 0, 0, 0
+ object_event 24, MAP_OBJ_GFX_BERRY_TREE, 0, 109, 0, 13, 0, 3, 12, 0, 0, 0, 0, 87, 0, S_BerryTree, 0, 0, 0
+ object_event 25, MAP_OBJ_GFX_BERRY_TREE, 0, 110, 0, 13, 0, 3, 12, 0, 0, 0, 0, 88, 0, S_BerryTree, 0, 0, 0
+ object_event 26, MAP_OBJ_GFX_BERRY_TREE, 0, 111, 0, 13, 0, 3, 12, 0, 0, 0, 0, 89, 0, S_BerryTree, 0, 0, 0
object_event 27, MAP_OBJ_GFX_WOMAN_3, 0, 16, 0, 9, 0, 3, 23, 0, 0, 1, 0, 2, 0, Route123_EventScript_151CFF, 0, 0, 0
object_event 28, MAP_OBJ_GFX_LITTLE_GIRL_1, 0, 38, 0, 13, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route123_EventScript_151DAD, 0, 0, 0
object_event 29, MAP_OBJ_GFX_LITTLE_GIRL_1, 0, 37, 0, 13, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route123_EventScript_151D92, 0, 0, 0
diff --git a/data/maps/events/Route130.inc b/data/maps/events/Route130.inc
index f2c72ef2d..009604d4b 100644
--- a/data/maps/events/Route130.inc
+++ b/data/maps/events/Route130.inc
@@ -1,7 +1,7 @@
Route130_MapObjects:: @ 838523C
object_event 1, MAP_OBJ_GFX_SWIMMER_M, 0, 7, 0, 26, 0, 1, 29, 99, 0, 1, 0, 3, 0, Route130_EventScript_152410, 0, 0, 0
object_event 2, MAP_OBJ_GFX_SWIMMER_F, 0, 68, 0, 22, 0, 1, 13, 17, 0, 1, 0, 3, 0, Route130_EventScript_152427, 0, 0, 0
- object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 52, 0, 9, 0, 3, 12, 0, 0, 0, 0, 82, 0, BerryTreeScript, 17, 0, 0
+ object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 52, 0, 9, 0, 3, 12, 0, 0, 0, 0, 82, 0, S_BerryTree, 17, 0, 0
Route130_MapEvents:: @ 8385284
map_events Route130_MapObjects, 0x0, 0x0, 0x0
diff --git a/data/maps/events/RusturfTunnel.inc b/data/maps/events/RusturfTunnel.inc
index 490afda7b..ef1559687 100644
--- a/data/maps/events/RusturfTunnel.inc
+++ b/data/maps/events/RusturfTunnel.inc
@@ -1,12 +1,12 @@
RusturfTunnel_MapObjects:: @ 838BD2C
object_event 1, MAP_OBJ_GFX_BLACK_BELT, 0, 23, 0, 5, 0, 3, 10, 0, 0, 0, 0, 0, 0, RusturfTunnel_EventScript_15C799, 807, 0, 0
- object_event 2, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 24, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 931, 0, 0
+ object_event 2, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 24, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 931, 0, 0
object_event 3, MAP_OBJ_GFX_ITEM_BALL, 0, 3, 0, 1, 0, 3, 1, 0, 0, 0, 0, 0, 0, RusturfTunnel_EventScript_1B1786, 1048, 0, 0
object_event 4, MAP_OBJ_GFX_ITEM_BALL, 0, 30, 0, 2, 0, 3, 1, 0, 0, 0, 0, 0, 0, RusturfTunnel_EventScript_1B1793, 1049, 0, 0
object_event 5, MAP_OBJ_GFX_OLD_MAN_1, 0, 5, 0, 4, 0, 3, 10, 0, 0, 0, 0, 0, 0, 0x0, 879, 0, 0
object_event 6, 241, 0, 14, 0, 5, 0, 3, 9, 0, 0, 0, 0, 0, 0, RusturfTunnel_EventScript_15C9EA, 878, 0, 0
object_event 7, MAP_OBJ_GFX_WINGULL, 0, 14, 0, 4, 0, 3, 9, 0, 0, 0, 0, 0, 0, RusturfTunnel_EventScript_15C9D7, 880, 0, 0
- object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 24, 0, 4, 0, 3, 8, 0, 0, 0, 0, 0, 0, BreakableRockScript, 932, 0, 0
+ object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 24, 0, 4, 0, 3, 8, 0, 0, 0, 0, 0, 0, S_BreakableRock, 932, 0, 0
object_event 9, MAP_OBJ_GFX_HIKER, 0, 32, 0, 13, 0, 3, 9, 17, 0, 1, 0, 3, 0, RusturfTunnel_EventScript_15CACD, 0, 0, 0
object_event 10, MAP_OBJ_GFX_WOMAN_3, 0, 25, 0, 4, 0, 3, 9, 17, 0, 0, 0, 0, 0, RusturfTunnel_EventScript_15C782, 983, 0, 0
diff --git a/data/maps/events/SafariZone_Northeast.inc b/data/maps/events/SafariZone_Northeast.inc
index 30921f095..cea87fb14 100644
--- a/data/maps/events/SafariZone_Northeast.inc
+++ b/data/maps/events/SafariZone_Northeast.inc
@@ -1,12 +1,12 @@
SafariZone_Northeast_MapObjects:: @ 8391A2C
object_event 1, MAP_OBJ_GFX_FISHERMAN, 0, 22, 0, 9, 0, 3, 2, 17, 0, 0, 0, 0, 0, SafariZone_Northeast_EventScript_160011, 0, 0, 0
object_event 2, MAP_OBJ_GFX_MAN_5, 0, 6, 0, 29, 0, 3, 2, 17, 0, 0, 0, 0, 0, SafariZone_Northeast_EventScript_16001A, 0, 0, 0
- object_event 3, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 25, 0, 10, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 17, 0, 0
- object_event 4, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 25, 0, 13, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 18, 0, 0
- object_event 5, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 28, 0, 14, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 19, 0, 0
- object_event 6, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 23, 0, 6, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 20, 0, 0
- object_event 7, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 20, 0, 7, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 21, 0, 0
- object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 27, 0, 7, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 22, 0, 0
+ object_event 3, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 25, 0, 10, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 17, 0, 0
+ object_event 4, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 25, 0, 13, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 18, 0, 0
+ object_event 5, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 28, 0, 14, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 19, 0, 0
+ object_event 6, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 23, 0, 6, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 20, 0, 0
+ object_event 7, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 20, 0, 7, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 21, 0, 0
+ object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 27, 0, 7, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 22, 0, 0
object_event 9, MAP_OBJ_GFX_ITEM_BALL, 0, 7, 0, 6, 0, 3, 1, 17, 0, 0, 0, 0, 0, SafariZone_Northeast_EventScript_1B1919, 1119, 0, 0
SafariZone_Northeast_MapEvents:: @ 8391B04
diff --git a/data/maps/events/SeafloorCavern_Room1.inc b/data/maps/events/SeafloorCavern_Room1.inc
index 1e791f884..093934481 100644
--- a/data/maps/events/SeafloorCavern_Room1.inc
+++ b/data/maps/events/SeafloorCavern_Room1.inc
@@ -1,7 +1,7 @@
SeafloorCavern_Room1_MapObjects:: @ 838D0B8
- object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 17, 0, 0
- object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 12, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 18, 0, 0
- object_event 3, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 5, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 19, 0, 0
+ object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 17, 0, 0
+ object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 12, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 18, 0, 0
+ object_event 3, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 5, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 19, 0, 0
object_event 4, 241, 0, 8, 0, 6, 0, 3, 1, 17, 0, 1, 0, 2, 0, SeafloorCavern_Room1_EventScript_15DA6D, 946, 0, 0
object_event 5, 241, 0, 15, 0, 10, 0, 3, 16, 17, 0, 1, 0, 3, 0, SeafloorCavern_Room1_EventScript_15DA84, 946, 0, 0
diff --git a/data/maps/events/SeafloorCavern_Room2.inc b/data/maps/events/SeafloorCavern_Room2.inc
index 3dbe5e8a7..86a0354e4 100644
--- a/data/maps/events/SeafloorCavern_Room2.inc
+++ b/data/maps/events/SeafloorCavern_Room2.inc
@@ -1,13 +1,13 @@
SeafloorCavern_Room2_MapObjects:: @ 838D15C
- object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 17, 0, 0
- object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 18, 0, 0
- object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 19, 0, 0
- object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 20, 0, 0
- object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 21, 0, 0
- object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 22, 0, 0
- object_event 7, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 11, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 24, 0, 0
- object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 7, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 25, 0, 0
- object_event 9, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 15, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 23, 0, 0
+ object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 17, 0, 0
+ object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 18, 0, 0
+ object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 19, 0, 0
+ object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 20, 0, 0
+ object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 21, 0, 0
+ object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 22, 0, 0
+ object_event 7, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 11, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 24, 0, 0
+ object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 7, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 25, 0, 0
+ object_event 9, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 15, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 23, 0, 0
SeafloorCavern_Room2_MapWarps:: @ 838D234
warp_def 12, 19, 3, 2, SeafloorCavern_Room1
diff --git a/data/maps/events/SeafloorCavern_Room3.inc b/data/maps/events/SeafloorCavern_Room3.inc
index 98e6066f2..5c5c9c219 100644
--- a/data/maps/events/SeafloorCavern_Room3.inc
+++ b/data/maps/events/SeafloorCavern_Room3.inc
@@ -1,13 +1,13 @@
SeafloorCavern_Room3_MapObjects:: @ 838D268
- object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 13, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 17, 0, 0
- object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 8, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 18, 0, 0
- object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 7, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 19, 0, 0
- object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 9, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 20, 0, 0
- object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 21, 0, 0
- object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 8, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 22, 0, 0
- object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 23, 0, 0
- object_event 8, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 7, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 24, 0, 0
- object_event 9, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 9, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 25, 0, 0
+ object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 13, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 17, 0, 0
+ object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 8, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 18, 0, 0
+ object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 7, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 19, 0, 0
+ object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 9, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 20, 0, 0
+ object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 21, 0, 0
+ object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 8, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 22, 0, 0
+ object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 23, 0, 0
+ object_event 8, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 7, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 24, 0, 0
+ object_event 9, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 9, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 25, 0, 0
object_event 10, 242, 0, 10, 0, 5, 0, 3, 8, 17, 0, 1, 0, 3, 0, SeafloorCavern_Room3_EventScript_15DAA8, 946, 0, 0
SeafloorCavern_Room3_MapWarps:: @ 838D358
diff --git a/data/maps/events/SeafloorCavern_Room5.inc b/data/maps/events/SeafloorCavern_Room5.inc
index 0ebd46a56..37a501512 100644
--- a/data/maps/events/SeafloorCavern_Room5.inc
+++ b/data/maps/events/SeafloorCavern_Room5.inc
@@ -1,10 +1,10 @@
SeafloorCavern_Room5_MapObjects:: @ 838D3D0
- object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 17, 0, 0
- object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 18, 0, 0
- object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 19, 0, 0
- object_event 4, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 3, 0, 13, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 21, 0, 0
- object_event 5, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 13, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 22, 0, 0
- object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 12, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 20, 0, 0
+ object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 17, 0, 0
+ object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 18, 0, 0
+ object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 19, 0, 0
+ object_event 4, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 3, 0, 13, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 21, 0, 0
+ object_event 5, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 13, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 22, 0, 0
+ object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 12, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 20, 0, 0
SeafloorCavern_Room5_MapWarps:: @ 838D460
warp_def 4, 1, 3, 1, SeafloorCavern_Room1
diff --git a/data/maps/events/SeafloorCavern_Room8.inc b/data/maps/events/SeafloorCavern_Room8.inc
index 610937753..2d7329aec 100644
--- a/data/maps/events/SeafloorCavern_Room8.inc
+++ b/data/maps/events/SeafloorCavern_Room8.inc
@@ -1,16 +1,16 @@
SeafloorCavern_Room8_MapObjects:: @ 838D4DC
- object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 17, 0, 0
- object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 18, 0, 0
- object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 19, 0, 0
- object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 20, 0, 0
- object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 7, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 21, 0, 0
- object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 22, 0, 0
- object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 23, 0, 0
- object_event 8, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 24, 0, 0
- object_event 9, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 25, 0, 0
- object_event 10, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 26, 0, 0
- object_event 11, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 27, 0, 0
- object_event 12, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 7, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 28, 0, 0
+ object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 17, 0, 0
+ object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 18, 0, 0
+ object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 19, 0, 0
+ object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 20, 0, 0
+ object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 7, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 21, 0, 0
+ object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 22, 0, 0
+ object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 23, 0, 0
+ object_event 8, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 24, 0, 0
+ object_event 9, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 25, 0, 0
+ object_event 10, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 26, 0, 0
+ object_event 11, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 27, 0, 0
+ object_event 12, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 7, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 28, 0, 0
SeafloorCavern_Room8_MapWarps:: @ 838D5FC
warp_def 5, 2, 3, 0, SeafloorCavern_Room9
diff --git a/data/maps/events/ShoalCave_LowTideLowerRoom.inc b/data/maps/events/ShoalCave_LowTideLowerRoom.inc
index a1770b5bb..858f919e0 100644
--- a/data/maps/events/ShoalCave_LowTideLowerRoom.inc
+++ b/data/maps/events/ShoalCave_LowTideLowerRoom.inc
@@ -1,5 +1,5 @@
ShoalCave_LowTideLowerRoom_MapObjects:: @ 838DE3C
- object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 25, 0, 3, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 17, 0, 0
+ object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 25, 0, 3, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 17, 0, 0
object_event 2, MAP_OBJ_GFX_BLACK_BELT, 0, 11, 0, 4, 0, 3, 2, 17, 0, 0, 0, 0, 0, ShoalCave_LowTideLowerRoom_EventScript_15E44F, 0, 0, 0
ShoalCave_LowTideLowerRoom_MapWarps:: @ 838DE6C
diff --git a/data/maps/events/VictoryRoad_B1F.inc b/data/maps/events/VictoryRoad_B1F.inc
index a4f778c4d..b00074990 100644
--- a/data/maps/events/VictoryRoad_B1F.inc
+++ b/data/maps/events/VictoryRoad_B1F.inc
@@ -1,21 +1,21 @@
VictoryRoad_B1F_MapObjects:: @ 838DA04
- object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 20, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 19, 0, 0
- object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 21, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 20, 0, 0
- object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 17, 0, 0
- object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 9, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 18, 0, 0
- object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 20, 0, 26, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 23, 0, 0
- object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 21, 0, 25, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 22, 0, 0
- object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 35, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 30, 0, 0
- object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 19, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 25, 0, 0
- object_event 9, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 20, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 26, 0, 0
- object_event 10, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 18, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 27, 0, 0
- object_event 11, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 20, 0, 25, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 28, 0, 0
- object_event 12, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 21, 0, 26, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 29, 0, 0
- object_event 13, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 34, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 31, 0, 0
+ object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 20, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 19, 0, 0
+ object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 21, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 20, 0, 0
+ object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 17, 0, 0
+ object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 9, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 18, 0, 0
+ object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 20, 0, 26, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 23, 0, 0
+ object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 21, 0, 25, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 22, 0, 0
+ object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 35, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 30, 0, 0
+ object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 19, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 25, 0, 0
+ object_event 9, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 20, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 26, 0, 0
+ object_event 10, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 18, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 27, 0, 0
+ object_event 11, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 20, 0, 25, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 28, 0, 0
+ object_event 12, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 21, 0, 26, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 29, 0, 0
+ object_event 13, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 34, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 31, 0, 0
object_event 14, MAP_OBJ_GFX_MAN_4, 0, 37, 0, 12, 0, 3, 9, 0, 0, 1, 0, 3, 0, VictoryRoad_B1F_EventScript_15DFB5, 0, 0, 0
object_event 15, MAP_OBJ_GFX_WOMAN_7, 0, 26, 0, 16, 0, 3, 7, 0, 0, 1, 0, 4, 0, VictoryRoad_B1F_EventScript_15DFCC, 0, 0, 0
object_event 16, MAP_OBJ_GFX_WOMAN_7, 0, 5, 0, 21, 0, 3, 9, 0, 0, 1, 0, 2, 0, VictoryRoad_B1F_EventScript_15DFE3, 0, 0, 0
- object_event 17, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 34, 0, 3, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 32, 0, 0
+ object_event 17, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 34, 0, 3, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 32, 0, 0
object_event 18, MAP_OBJ_GFX_ITEM_BALL, 0, 42, 0, 8, 0, 4, 1, 17, 0, 0, 0, 0, 0, VictoryRoad_B1F_EventScript_1B1AE0, 1086, 0, 0
object_event 19, MAP_OBJ_GFX_ITEM_BALL, 0, 32, 0, 3, 0, 3, 1, 17, 0, 0, 0, 0, 0, VictoryRoad_B1F_EventScript_1B1AED, 1087, 0, 0
diff --git a/data/mauville_old_man.s b/data/mauville_old_man.s
deleted file mode 100644
index 5c4bd47b9..000000000
--- a/data/mauville_old_man.s
+++ /dev/null
@@ -1,101 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 1
-gUnknown_083E537C:: @ 83E537C
-.ifdef ENGLISH
- ec_word SISTER
- ec_word EATS
- ec_word SWEETS
- ec_word VORACIOUS
- ec_word AND
- ec_word DROOLING
-.else
- ec_word SISTER
- ec_word MUST_BE
- ec_word SWEETS
- ec_word VORACIOUS
- ec_word DROOLING
- ec_word THICK
-.endif
-
-
- .align 2
-gUnknown_083E5388:: @ 83E5388
- .4byte OtherText_SoPretty
- .4byte OtherText_SoDarling
- .4byte OtherText_SoRelaxed
- .4byte OtherText_SoSunny
- .4byte OtherText_SoDesirable
- .4byte OtherText_SoExciting
- .4byte OtherText_SoAmusing
- .4byte OtherText_SoMagical
-
- .align 2
-gUnknown_083E53A8:: @ 83E53A8
- .4byte OtherText_WantVacationNicePlace
- .4byte OtherText_BoughtCrayonsIsNice
- .4byte OtherText_IfWeCouldFloat
- .4byte OtherText_SandWashesAwayMakeSad
- .4byte OtherText_WhatsBottomSeaLike
- .4byte OtherText_SeeSettingSun
- .4byte OtherText_LyingInGreenGrass
- .4byte OtherText_SecretBasesWonderful
-
- .align 1
-gUnknown_083E53C8:: @ 83E53C8
- .2byte 0x0, 0
- .2byte 0xC, 0
- .2byte 0xD, 0
- .2byte 0x12, 0
- .2byte 0x13, 0
- .2byte 0x15, 0
-
- .align 2
-gUnknown_083E53E0:: @ 83E53E0
- .4byte 0x132, UnknownString_81AEFFC, UnknownString_81AF013, UnknownString_81AF022
- .4byte 0x102, UnknownString_81AF0A3, UnknownString_81AF0BB, UnknownString_81AF0CA
- .4byte 0x103, UnknownString_81AF149, UnknownString_81AF164, UnknownString_81AF174
- .4byte 0x104, UnknownString_81AF1E5, UnknownString_81AF1FD, UnknownString_81AF20A
- .4byte 0x106, UnknownString_81AF281, UnknownString_81AF299, UnknownString_81AF2A9
- .4byte 0x109, UnknownString_81AF32C, UnknownString_81AF345, UnknownString_81AF34D
- .4byte 0x10b, UnknownString_81AF3D0, UnknownString_81AF3ED, UnknownString_81AF3FC
- .4byte 0x10c, UnknownString_81AF46D, UnknownString_81AF481, UnknownString_81AF49B
- .4byte 0x10d, UnknownString_81AF511, UnknownString_81AF529, UnknownString_81AF536
- .4byte 0x10e, UnknownString_81AF5A9, UnknownString_81AF5BD, UnknownString_81AF5CD
- .4byte 0x10f, UnknownString_81AF63F, UnknownString_81AF661, UnknownString_81AF676
- .4byte 0x110, UnknownString_81AF711, UnknownString_81AF726, UnknownString_81AF73D
- .4byte 0x111, UnknownString_81AF7BF, UnknownString_81AF7D9, UnknownString_81AF7F1
- .4byte 0x112, UnknownString_81AF88A, UnknownString_81AF8A1, UnknownString_81AF8AA
- .4byte 0x113, UnknownString_81AF91B, UnknownString_81AF935, UnknownString_81AF943
- .4byte 0x114, UnknownString_81AF9C8, UnknownString_81AF9E0, UnknownString_81AF9F6
- .4byte 0x11a, UnknownString_81AFA79, UnknownString_81AFA92, UnknownString_81AFA9E
- .4byte 0x11b, UnknownString_81AFB17, UnknownString_81AFB2D, UnknownString_81AFB48
- .4byte 0x11c, UnknownString_81AFBD8, UnknownString_81AFBE7, UnknownString_81AFC04
- .4byte 0x21d, UnknownString_81AFC8A, UnknownString_81AFC9D, UnknownString_81AFCBE
- .4byte 0x11e, UnknownString_81AFD44, UnknownString_81AFD60, UnknownString_81AFD80
- .4byte 0x121, UnknownString_81AFE1D, UnknownString_81AFE36, UnknownString_81AFE42
- .4byte 0x124, UnknownString_81AFEC2, UnknownString_81AFEDD, UnknownString_81AFEEE
- .4byte 0x125, UnknownString_81AFF68, UnknownString_81AFF7B, UnknownString_81AFF88
- .4byte 0x126, UnknownString_81AFFFB, UnknownString_81B000D, UnknownString_81B0015
- .4byte 0x127, UnknownString_81B009D, UnknownString_81B00B6, UnknownString_81B00C9
- .4byte 0x128, UnknownString_81B014D, UnknownString_81B0165, UnknownString_81B0173
- .4byte 0x129, UnknownString_81B01E9, UnknownString_81B0201, UnknownString_81B0213
- .4byte 0x12a, UnknownString_81B0290, UnknownString_81B02A5, UnknownString_81B02B6
- .4byte 0x12b, UnknownString_81B0337, UnknownString_81B0351, UnknownString_81B0364
- .4byte 0x12c, UnknownString_81B03E9, UnknownString_81B0401, UnknownString_81B040C
- .4byte 0x12d, UnknownString_81B046E, UnknownString_81B0489, UnknownString_81B049A
- .4byte 0x12e, UnknownString_81B0523, UnknownString_81B053E, UnknownString_81B0554
- .4byte 0x12f, UnknownString_81B05D8, UnknownString_81B05F3, UnknownString_81B0610
- .4byte 0x130, UnknownString_81B06A9, UnknownString_81B06C6, UnknownString_81B06D9
-
-gUnknown_083E5610:: @ 83E5610
- .4byte 0x131, UnknownString_81B0763, UnknownString_81B0781, UnknownString_81B0797
-
- .align 2
-gUnknown_083E5620:: @ 83E5620
- .4byte 0x24
- .4byte gSaveBlock1 + 0x2D94
- .4byte 0xC
diff --git a/data/mon_pokeblock_anims.inc b/data/mon_pokeblock_anims.inc
deleted file mode 100644
index d8df29c1d..000000000
--- a/data/mon_pokeblock_anims.inc
+++ /dev/null
@@ -1,133 +0,0 @@
-gNatureToMonPokeblockAnim:: @ 8411A10
- .byte 0, 0 @ HARDY
- .byte 3, 0 @ LONELY
- .byte 4, 1 @ BRAVE
- .byte 5, 0 @ ADAMANT
- .byte 10, 0 @ NAUGHTY
- .byte 13, 0 @ BOLD
- .byte 15, 0 @ DOCILE
- .byte 16, 2 @ RELAXED
- .byte 18, 0 @ IMPISH
- .byte 19, 0 @ LAX
- .byte 20, 0 @ TIMID
- .byte 25, 0 @ HASTY
- .byte 27, 3 @ SERIOUS
- .byte 28, 0 @ JOLLY
- .byte 29, 0 @ NAIVE
- .byte 33, 4 @ MODEST
- .byte 36, 0 @ MILD
- .byte 37, 0 @ QUIET
- .byte 39, 0 @ BASHFUL
- .byte 42, 0 @ RASH
- .byte 45, 0 @ CALM
- .byte 46, 5 @ GENTLE
- .byte 47, 6 @ SASSY
- .byte 48, 0 @ CAREFUL
- .byte 53, 0 @ QUIRKY
-
- .align 1
-gMonPokeblockAnims:: @ 8411A42
- @ HARDY
- .2byte 0, 4, 0, 8, 24, 0, 0, 0, 12, 0
- .2byte 0, 4, 0, 16, 24, 0, 0, 0, 12, 0
- .2byte 0, 4, 0, 32, 32, 0, 0, 0, 16, 1
-
- @ LONELY
- .2byte 0, 3, 6, 0, 48, 0, 0, 0, 24, 1
-
- @ BRAVE
- .2byte 64, 16, -24, 0, 32, 0, 0, 0, 0, 1
-
- @ ADAMANT
- .2byte 0, 4, 8, 0, 16, 0, -8, 0, 0, 0
- .2byte 0, 0, 0, 0, 16, 0, 0, 0, 0, 0
- .2byte 0, 4, 8, 0, 16, 0, -8, 0, 0, 0
- .2byte 0, 0, 0, 0, 16, 0, 0, 0, 0, 0
- .2byte 0, 4, -16, 0, 4, 0, 16, 0, 0, 1
-
- @ NAUGHTY
- .2byte 0, 3, 6, 0, 12, 0, 0, 0, 6, 0
- .2byte 0, 3, -6, 0, 12, 0, 0, 0, 6, 0
- .2byte 0, 16, 16, 0, 45, 1, 0, 0, 0, 1
-
- @ BOLD
- .2byte 0, 16, 0, 24, 32, 0, 0, 0, 16, 0
- .2byte 0, 16, 0, 23, 32, 0, 0, 0, 16, 1
-
- @ DOCILE
- .2byte 0, 0, 0, 0, 80, 0, 0, 0, 0, 1
-
- @ RELAXED
- .2byte 0, 2, 8, 0, 32, 0, 0, 0, 0, 0
- .2byte 0, 2, -8, 0, 32, 0, 0, 0, 0, 1
-
- @ IMPISH
- .2byte 0, 32, 2, 1, 48, 1, 0, 0, 24, 1
-
- @ LAX
- .2byte 0, 2, 16, 16, 128, 0, 0, 0, 0, 1
-
- @ TIMID
- .2byte 0, 2, -8, 0, 48, 0, -24, 0, 0, 0
- .2byte 0, 0, 0, 0, 8, 0, 0, 0, 0, 0
- .2byte 64, 32, 2, 0, 36, 0, 0, 0, 0, 0
- .2byte 0, 0, 0, 0, 8, 0, 0, 0, 0, 0
- .2byte 0, 2, 8, 0, 48, 0, 24, 0, 0, 1
-
- @ HASTY
- .2byte 64, 24, 16, 0, 32, 0, 0, 0, 0, 0
- .2byte 0, 28, 2, 1, 32, 1, 0, 0, 16, 1
-
- @ SERIOUS
- .2byte 0, 0, 0, 0, 32, 0, 0, 0, 0, 1
-
- @ JOLLY
- .2byte 64, 16, -16, 2, 48, 0, 0, 0, 32, 1
-
- @ NAIVE
- .2byte 0, 12, -8, 4, 24, 0, 8, 0, 12, 0
- .2byte 0, 12, 8, 8, 24, 0, -16, 0, 12, 0
- .2byte 0, 12, -8, 16, 24, 0, 16, 0, 12, 0
- .2byte 0, 12, 8, 28, 24, 0, -8, 0, 12, 1
-
- @ MODEST
- .2byte 0, 0, 0, 0, 8, 0, 0, 0, 0, 0
- .2byte 64, 16, -4, 0, 32, 0, 0, 0, 0, 0
- .2byte 0, 0, 0, 0, 8, 0, 0, 0, 0, 1
-
- @ MILD
- .2byte 128, 4, 0, 8, 64, 0, 0, 0, 0, 1
-
- @ QUIET
- .2byte 0, 2, 16, 0, 48, 0, 0, 0, 0, 0
- .2byte 128, 2, 16, 0, 48, 0, 0, 0, 0, 1
-
- @ BASHFUL
- .2byte 0, 2, -4, 0, 48, 0, -48, 0, 0, 0
- .2byte 0, 0, 0, 0, 80, 0, 0, 0, 0, 0
- .2byte 0, 2, 8, 0, 24, 0, 48, 0, 0, 1
-
- @ RASH
- .2byte 64, 4, 64, 58, 52, 0, -88, 0, 0, 0
- .2byte 0, 0, 0, 0, 80, 0, 0, 0, 0, 0
- .2byte 0, 24, 80, 0, 32, 0, 88, 0, 0, 1
-
- @ CALM
- .2byte 0, 2, 16, 4, 64, 0, 0, 0, 0, 1
-
- @ GENTLE
- .2byte 0, 0, 0, 0, 32, 0, 0, 0, 0, 1
-
- @ SASSY
- .2byte 0, 0, 0, 0, 42, 0, 0, 0, 0, 1
-
- @ CAREFUL
- .2byte 0, 4, 0, 8, 24, 0, 0, 0, 12, 0
- .2byte 0, 0, 0, 0, 12, 0, 0, 0, 0, 0
- .2byte 0, 4, 0, 12, 24, 0, 0, 0, 12, 0
- .2byte 0, 0, 0, 0, 12, 0, 0, 0, 0, 0
- .2byte 0, 4, 0, 4, 24, 0, 0, 0, 12, 1
-
- @ QUIRKY
- .2byte 0, 4, 16, 12, 64, 0, 0, 0, 0, 0
- .2byte 0, -4, 16, 12, 64, 0, 0, 0, 0, 1
diff --git a/data/pokeblock_feed.s b/data/pokeblock_feed.s
deleted file mode 100644
index ae5b17d12..000000000
--- a/data/pokeblock_feed.s
+++ /dev/null
@@ -1,225 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-@ 8411A10
- .include "data/mon_pokeblock_anims.inc"
-
- .align 2
-gSpriteAffineAnim_8411E90:: @ 8411E90
- obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_8411EA0:: @ 8411EA0
- obj_rot_scal_anim_frame 0x0, 0x0, 12, 1
- obj_rot_scal_anim_frame 0x0, 0x0, 0, 30
- obj_rot_scal_anim_frame 0x0, 0x0, -12, 1
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_8411EC0:: @ 8411EC0
- obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0
- obj_rot_scal_anim_frame 0x0, 0x0, 12, 1
- obj_rot_scal_anim_frame 0x0, 0x0, 0, 28
- obj_rot_scal_anim_frame 0x0, 0x0, -4, 3
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_8411EE8:: @ 8411EE8
- obj_rot_scal_anim_frame 0x0, 0x0, 1, 16
- obj_rot_scal_anim_frame 0x0, 0x0, -1, 32
- obj_rot_scal_anim_frame 0x0, 0x0, 1, 16
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_8411F08:: @ 8411F08
- obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0
- obj_rot_scal_anim_frame 0x0, 0x0, 1, 16
- obj_rot_scal_anim_frame 0x0, 0x0, -1, 32
- obj_rot_scal_anim_frame 0x0, 0x0, 1, 16
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_8411F30:: @ 8411F30
- obj_rot_scal_anim_frame 0x0, 0x0, -1, 8
- obj_rot_scal_anim_frame 0x0, 0x0, 0, 16
- obj_rot_scal_anim_frame 0x0, 0x0, 1, 8
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_8411F50:: @ 8411F50
- obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0
- obj_rot_scal_anim_frame 0x0, 0x0, -1, 8
- obj_rot_scal_anim_frame 0x0, 0x0, 0, 16
- obj_rot_scal_anim_frame 0x0, 0x0, 1, 8
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_8411F78:: @ 8411F78
- obj_rot_scal_anim_frame 0x0, 0x0, -1, 8
- obj_rot_scal_anim_frame 0x0, 0x0, 0, 32
- obj_rot_scal_anim_frame 0x0, 0x0, 1, 8
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_8411F98:: @ 8411F98
- obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0
- obj_rot_scal_anim_frame 0x0, 0x0, -1, 8
- obj_rot_scal_anim_frame 0x0, 0x0, 0, 32
- obj_rot_scal_anim_frame 0x0, 0x0, 1, 8
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_8411FC0:: @ 8411FC0
- obj_rot_scal_anim_frame 0x0, 0x0, -1, 4
- obj_rot_scal_anim_frame 0x0, 0x0, 0, 24
- obj_rot_scal_anim_frame 0x0, 0x0, 1, 4
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_8411FE0:: @ 8411FE0
- obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0
- obj_rot_scal_anim_frame 0x0, 0x0, -1, 4
- obj_rot_scal_anim_frame 0x0, 0x0, 0, 24
- obj_rot_scal_anim_frame 0x0, 0x0, 1, 4
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_8412008:: @ 8412008
- obj_rot_scal_anim_frame 0x0, 0x0, 1, 24
- obj_rot_scal_anim_frame 0x0, 0x0, 0, 16
- obj_rot_scal_anim_frame 0x0, 0x0, -12, 2
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_8412028:: @ 8412028
- obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0
- obj_rot_scal_anim_frame 0x0, 0x0, 1, 24
- obj_rot_scal_anim_frame 0x0, 0x0, 0, 16
- obj_rot_scal_anim_frame 0x0, 0x0, -12, 2
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnimTable_8412050:: @ 8412050
- .4byte gSpriteAffineAnim_8411E90
- .4byte gSpriteAffineAnim_8411EA0
- .4byte gSpriteAffineAnim_8411EE8
- .4byte gSpriteAffineAnim_8411F30
- .4byte gSpriteAffineAnim_8411F78
- .4byte gSpriteAffineAnim_8411FC0
- .4byte gSpriteAffineAnim_8412008
- .4byte gSpriteAffineAnim_8411E90
- .4byte gSpriteAffineAnim_8411E90
- .4byte gSpriteAffineAnim_8411E90
- .4byte gSpriteAffineAnim_8411E90
- .4byte gSpriteAffineAnim_8411EC0
- .4byte gSpriteAffineAnim_8411F08
- .4byte gSpriteAffineAnim_8411F50
- .4byte gSpriteAffineAnim_8411F98
- .4byte gSpriteAffineAnim_8411FE0
- .4byte gSpriteAffineAnim_8412028
- .4byte gSpriteAffineAnim_8411E90
- .4byte gSpriteAffineAnim_8411E90
- .4byte gSpriteAffineAnim_8411E90
- .4byte gSpriteAffineAnim_8411E90
-
- .align 2
-gUnknown_084120A4:: @ 84120A4
- .4byte gPokeblockRed_Pal
- .4byte gPokeblockBlue_Pal
- .4byte gPokeblockPink_Pal
- .4byte gPokeblockGreen_Pal
- .4byte gPokeblockYellow_Pal
- .4byte gPokeblockPurple_Pal
- .4byte gPokeblockIndigo_Pal
- .4byte gPokeblockBrown_Pal
- .4byte gPokeblockLiteBlue_Pal
- .4byte gPokeblockOlive_Pal
- .4byte gPokeblockGray_Pal
- .4byte gPokeblockBlack_Pal
- .4byte gPokeblockWhite_Pal
- .4byte gPokeblockGold_Pal
-
- .align 2
-gSpriteAffineAnim_84120DC:: @ 84120DC
- obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnimTable_84120EC:: @ 84120EC
- .4byte gSpriteAffineAnim_84120DC
-
- .align 2
-gSpriteAffineAnim_84120F0:: @ 84120F0
- obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0
- obj_rot_scal_anim_frame 0x0, 0x0, -8, 1
- obj_rot_scal_anim_frame 0x0, 0x0, -8, 1
- obj_rot_scal_anim_frame 0x0, 0x0, -8, 1
- obj_rot_scal_anim_frame 0x0, 0x0, -8, 1
- obj_rot_scal_anim_frame 0x0, 0x0, 0, 8
- obj_rot_scal_anim_frame 0x0, 0x0, 16, 1
- obj_rot_scal_anim_frame 0x0, 0x0, 16, 1
- obj_rot_scal_anim_frame 0x0, 0x0, 16, 1
- obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_8412148:: @ 8412148
- obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0
- obj_rot_scal_anim_frame 0x0, 0x0, 8, 1
- obj_rot_scal_anim_frame 0x0, 0x0, 8, 1
- obj_rot_scal_anim_frame 0x0, 0x0, 8, 1
- obj_rot_scal_anim_frame 0x0, 0x0, 8, 1
- obj_rot_scal_anim_frame 0x0, 0x0, 0, 8
- obj_rot_scal_anim_frame 0x0, 0x0, -16, 1
- obj_rot_scal_anim_frame 0x0, 0x0, -16, 1
- obj_rot_scal_anim_frame 0x0, 0x0, -16, 1
- obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnimTable_84121A0:: @ 84121A0
- .4byte gSpriteAffineAnim_84120DC
-
- .align 2
-gSpriteAffineAnimTable_84121A4:: @ 84121A4
- .4byte gSpriteAffineAnim_84120F0
-
- .align 2
-gSpriteAffineAnimTable_84121A8:: @ 84121A8
- .4byte gSpriteAffineAnim_8412148
-
- .align 2
-gOamData_84121AC:: @ 84121AC
- .2byte 0x0300
- .2byte 0x0000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_84121B4:: @ 84121B4
- obj_image_anim_frame 0, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_84121BC:: @ 84121BC
- .4byte gSpriteAnim_84121B4
-
- .align 2
-gSpriteAffineAnim_84121C0:: @ 84121C0
- obj_rot_scal_anim_frame 0x100, 0x100, 0, 0
- obj_rot_scal_anim_frame 0xFFF8, 0xFFF8, 0, 1
- obj_rot_scal_anim_jump 1
-
- .align 2
-gSpriteAffineAnimTable_84121D8:: @ 84121D8
- .4byte gSpriteAffineAnim_84121C0
-
- .align 2
-gUnknown_084121DC:: @ 84121DC
- obj_tiles gPokeblock_Gfx, 0x20, 14818
-
- .align 2
-gSpriteTemplate_84121E4:: @ 84121E4
- spr_template 14818, 14818, gOamData_84121AC, gSpriteAnimTable_84121BC, NULL, gSpriteAffineAnimTable_84121D8, sub_81481B0
diff --git a/data/pokemon_menu.s b/data/pokemon_menu.s
deleted file mode 100644
index 9e2ce2864..000000000
--- a/data/pokemon_menu.s
+++ /dev/null
@@ -1,82 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gPokemonMenuActions:: @ 839F494
- .4byte OtherText_Summary, PokemonMenu_Summary
- .4byte OtherText_Switch2, PokemonMenu_Switch
- .4byte OtherText_Item, PokemonMenu_Item
- .4byte gOtherText_CancelNoTerminator, PokemonMenu_Cancel
- .4byte OtherText_Give2, PokemonMenu_GiveItem
- .4byte OtherText_Take2, PokemonMenu_TakeItem
- .4byte OtherText_Take, PokemonMenu_TakeMail
- .4byte OtherText_Mail, PokemonMenu_Mail
- .4byte OtherText_Read2, PokemonMenu_ReadMail
- .4byte gOtherText_CancelNoTerminator, PokemonMenu_CancelSubmenu
- .4byte gMoveNames + 13 * MOVE_CUT, PokemonMenu_FieldMove
- .4byte gMoveNames + 13 * MOVE_FLASH, PokemonMenu_FieldMove
- .4byte gMoveNames + 13 * MOVE_ROCK_SMASH, PokemonMenu_FieldMove
- .4byte gMoveNames + 13 * MOVE_STRENGTH, PokemonMenu_FieldMove
- .4byte gMoveNames + 13 * MOVE_SURF, PokemonMenu_FieldMove
- .4byte gMoveNames + 13 * MOVE_FLY, PokemonMenu_FieldMove
- .4byte gMoveNames + 13 * MOVE_DIVE, PokemonMenu_FieldMove
- .4byte gMoveNames + 13 * MOVE_WATERFALL, PokemonMenu_FieldMove
- .4byte gMoveNames + 13 * MOVE_TELEPORT, PokemonMenu_FieldMove
- .4byte gMoveNames + 13 * MOVE_DIG, PokemonMenu_FieldMove
- .4byte gMoveNames + 13 * MOVE_SECRET_POWER, PokemonMenu_FieldMove
- .4byte gMoveNames + 13 * MOVE_MILK_DRINK, PokemonMenu_FieldMove
- .4byte gMoveNames + 13 * MOVE_SOFT_BOILED, PokemonMenu_FieldMove
- .4byte gMoveNames + 13 * MOVE_SWEET_SCENT, PokemonMenu_FieldMove
-
- .align 1
-gUnknown_0839F554:: @ 839F554
- .2byte MOVE_CUT
- .2byte MOVE_FLASH
- .2byte MOVE_ROCK_SMASH
- .2byte MOVE_STRENGTH
- .2byte MOVE_SURF
- .2byte MOVE_FLY
- .2byte MOVE_DIVE
- .2byte MOVE_WATERFALL
- .2byte MOVE_TELEPORT
- .2byte MOVE_DIG
- .2byte MOVE_SECRET_POWER
- .2byte MOVE_MILK_DRINK
- .2byte MOVE_SOFT_BOILED
- .2byte MOVE_SWEET_SCENT
- .2byte 0xFF
-
-Unknown_39F572: @ 839F572
- .byte 4, 5, 9, 0
-
- .align 2
-gUnknown_0839F578:: @ 839F578
- .byte 3, 6, 0, 0
- .4byte Unknown_39F572
-
-Unknown_39F580: @ 839F580
- .byte 8, 6, 9, 0
-
- .align 2
-gUnknown_0839F584:: @ 839F584
- .byte 3, 9, 0, 0
- .4byte Unknown_39F580
-
- .align 2
-gFieldMoveFuncs:: @ 839F58C
- .4byte SetUpFieldMove_Cut, 0x6
- .4byte SetUpFieldMove_Flash, 0x9
- .4byte SetUpFieldMove_RockSmash, 0x9
- .4byte SetUpFieldMove_Strength, 0x9
- .4byte SetUpFieldMove_Surf, 0x7
- .4byte SetUpFieldMove_Fly, 0x9
- .4byte SetUpFieldMove_Dive, 0x9
- .4byte SetUpFieldMove_Waterfall, 0x9
- .4byte SetUpFieldMove_Teleport, 0x9
- .4byte SetUpFieldMove_Dig, 0x9
- .4byte SetUpFieldMove_SecretPower, 0x9
- .4byte SetUpFieldMove_SoftBoiled, 0x10
- .4byte SetUpFieldMove_SoftBoiled, 0x10
- .4byte SetUpFieldMove_SweetScent, 0x9
diff --git a/data/rom4.s b/data/rom4.s
deleted file mode 100644
index 6f883c64c..000000000
--- a/data/rom4.s
+++ /dev/null
@@ -1,66 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gDummyWarpData:: @ 8216624
- .byte -1
- .byte -1
- .byte -1
- .space 1
- .2byte -1
- .2byte -1
-
-@ unused, unknown data
- .byte 0xB0, 0x04, 0x00, 0x00
- .byte 0x10, 0x0E, 0x00, 0x00
- .byte 0xB0, 0x04, 0x00, 0x00
- .byte 0x60, 0x09, 0x00, 0x00
- .byte 0x32, 0x00, 0x00, 0x00
- .byte 0x50, 0x00, 0x00, 0x00
- .byte 0xD4, 0xFF, 0xFF, 0xFF
- .byte 0x2C, 0x00, 0x00, 0x00
-
- .align 2
-gUnknown_0821664C:: @ 821664C
- .4byte 0, 0
- .4byte 0, 1
- .4byte 0, -1
- .4byte -1, 0
- .4byte 1, 0
- .4byte -1, 1
- .4byte 1, 1
- .4byte -1, -1
- .4byte 1, -1
-
- .align 2
-gUnknown_08216694:: @ 8216694
- .4byte REG_WIN0H
- .4byte ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1
- .4byte 1
-
- .align 2
-gUnknown_082166A0:: @ 82166A0
- .4byte sub_8055C68
- .4byte sub_8055C88
- .4byte sub_8055C8C
-
- .align 2
-gUnknown_082166AC:: @ 82166AC
- .4byte sub_8055CAC
- .4byte sub_8055CB0
- .4byte sub_8055CB0
- .4byte sub_8055CB0
- .4byte sub_8055CB0
- .4byte sub_8055CAC
- .4byte sub_8055CAC
- .4byte sub_8055D18
- .4byte sub_8055D18
- .4byte sub_8055D18
- .4byte sub_8055D18
-
- .align 2
-gUnknown_082166D8:: @ 82166D8
- .4byte sub_8055D30
- .4byte sub_8055D38
diff --git a/data/scripts/bard.inc b/data/scripts/bard.inc
deleted file mode 100644
index 3f25b100f..000000000
--- a/data/scripts/bard.inc
+++ /dev/null
@@ -1,67 +0,0 @@
-MauvilleCity_PokemonCenter_1F_EventScript_1AE744:: @ 81AE744
- special sub_80F7B14
- switch RESULT
- case 0, MauvilleCity_PokemonCenter_1F_EventScript_1AE784
- case 1, MauvilleCity_PokemonCenter_1F_EventScript_1AE845
- case 2, MauvilleCity_PokemonCenter_1F_EventScript_1AEBAB
- case 3, MauvilleCity_PokemonCenter_1F_EventScript_1B0816
- case 4, MauvilleCity_PokemonCenter_1F_EventScript_1B09EB
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AE784:: @ 81AE784
- lock
- faceplayer
- msgbox MauvilleCity_PokemonCenter_1F_Text_1B0A91, 5
- compare RESULT, 1
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE7A5
- compare RESULT, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE7C8
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AE7A5:: @ 81AE7A5
- setvar 0x8004, 0
- special sub_80F7C54
- pause 60
- special sub_80F7B2C
- compare RESULT, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE7D2
- msgbox MauvilleCity_PokemonCenter_1F_Text_1B0AED, 4
- release
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AE7C8:: @ 81AE7C8
- msgbox MauvilleCity_PokemonCenter_1F_Text_1B0AC3, 4
- release
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AE7D2:: @ 81AE7D2
- msgbox MauvilleCity_PokemonCenter_1F_Text_1B0B2C, 5
- compare RESULT, 1
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE7F1
- compare RESULT, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE83B
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AE7F1:: @ 81AE7F1
- setvar 0x8004, 6
- call MauvilleCity_PokemonCenter_1F_EventScript_1A00F3
- lock
- faceplayer
- compare RESULT, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE83B
- msgbox MauvilleCity_PokemonCenter_1F_Text_1B0BD0, 4
- setvar 0x8004, 1
- special sub_80F7C54
- pause 60
- msgbox MauvilleCity_PokemonCenter_1F_Text_1B0BFA, 5
- compare RESULT, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE7F1
- special sub_80F7B40
- msgbox MauvilleCity_PokemonCenter_1F_Text_1B0C23, 4
- release
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AE83B:: @ 81AE83B
- msgbox MauvilleCity_PokemonCenter_1F_Text_1B0BA6, 4
- release
- end
diff --git a/data/scripts/berry_tree.inc b/data/scripts/berry_tree.inc
index 1bbe7d355..f4707d8cb 100644
--- a/data/scripts/berry_tree.inc
+++ b/data/scripts/berry_tree.inc
@@ -1,4 +1,4 @@
-BerryTreeScript:: @ 81A14DD
+S_BerryTree:: @ 81A14DD
special FieldObjectInteractionGetBerryTreeData
switch 0x8004
case 255, Route102_EventScript_1A1533
diff --git a/data/scripts/cable_club.inc b/data/scripts/cable_club.inc
index 4a919c597..6507677e0 100644
--- a/data/scripts/cable_club.inc
+++ b/data/scripts/cable_club.inc
@@ -191,7 +191,7 @@ OldaleTown_PokemonCenter_2F_EventScript_1A3EBC:: @ 81A3EBC
case 127, OldaleTown_PokemonCenter_2F_EventScript_1A4319
OldaleTown_PokemonCenter_2F_EventScript_1A3EF2:: @ 81A3EF2
- call OldaleTown_PokemonCenter_2F_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319
call OldaleTown_PokemonCenter_2F_EventScript_1A3FEF
@@ -215,7 +215,7 @@ OldaleTown_PokemonCenter_2F_EventScript_1A3EF2:: @ 81A3EF2
jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A42F5
OldaleTown_PokemonCenter_2F_EventScript_1A3F5E:: @ 81A3F5E
- special HealPlayerParty
+ special ScrSpecial_HealPlayerParty
special SavePlayerParty
special LoadPlayerBag
copyvar 0x4087, 0x8004
@@ -361,7 +361,7 @@ OldaleTown_PokemonCenter_2F_EventScript_1A40FA:: @ 81A40FA
call OldaleTown_PokemonCenter_2F_EventScript_1A41BB
compare RESULT, 0
jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319
- call OldaleTown_PokemonCenter_2F_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319
message OldaleTown_PokemonCenter_2F_Text_1A490C
@@ -455,7 +455,7 @@ VerdanturfTown_PokemonCenter_2F_EventScript_1A41FB:: @ 81A41FB
jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4229
OldaleTown_PokemonCenter_2F_EventScript_1A4229:: @ 81A4229
- call OldaleTown_PokemonCenter_2F_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319
message OldaleTown_PokemonCenter_2F_Text_1A490C
diff --git a/data/scripts/day_care.inc b/data/scripts/day_care.inc
index b5b3d4670..dcc4b44e7 100644
--- a/data/scripts/day_care.inc
+++ b/data/scripts/day_care.inc
@@ -282,7 +282,7 @@ Route117_PokemonDayCare_EventScript_1B2558:: @ 81B2558
release
end
-Event_EggHatch:: @ 81B25BC
+S_EggHatch:: @ 81B25BC
lockall
msgbox UnknownString_81B2C68, 4
special EggHatch
diff --git a/data/scripts/giddy.inc b/data/scripts/giddy.inc
deleted file mode 100644
index 263589fe9..000000000
--- a/data/scripts/giddy.inc
+++ /dev/null
@@ -1,51 +0,0 @@
-MauvilleCity_PokemonCenter_1F_EventScript_1B09EB:: @ 81B09EB
- lock
- faceplayer
- msgbox MauvilleCity_PokemonCenter_1F_Text_1B092A, 5
- compare RESULT, 1
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0A0C
- compare RESULT, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0A6F
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1B0A0C:: @ 81B0A0C
- special sub_80F7CC8
- compare RESULT, 1
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0A4E
- compare RESULT, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0A79
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1B0A26:: @ 81B0A26
- special sub_80F7CC8
- compare RESULT, 1
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0A40
- compare RESULT, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0A79
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1B0A40:: @ 81B0A40
- msgbox MauvilleCity_PokemonCenter_1F_Text_1B0998, 4
- jump MauvilleCity_PokemonCenter_1F_EventScript_1B0A4E
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1B0A4E:: @ 81B0A4E
- special sub_80F7CF4
- special ShowFieldMessageStringVar4
- waittext
- yesnobox 20, 8
- compare RESULT, 1
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0A26
- compare RESULT, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0A26
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1B0A6F:: @ 81B0A6F
- msgbox MauvilleCity_PokemonCenter_1F_Text_1B097C, 4
- release
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1B0A79:: @ 81B0A79
- msgbox MauvilleCity_PokemonCenter_1F_Text_1B09B0, 4
- release
- end
diff --git a/data/scripts/hipster.inc b/data/scripts/hipster.inc
deleted file mode 100644
index 3e24e4868..000000000
--- a/data/scripts/hipster.inc
+++ /dev/null
@@ -1,25 +0,0 @@
-MauvilleCity_PokemonCenter_1F_EventScript_1AE845:: @ 81AE845
- lock
- faceplayer
- setflag 2054
- msgbox MauvilleCity_PokemonCenter_1F_Text_1B0C5B, 4
- special sub_80F7C70
- compare RESULT, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE86A
- msgbox MauvilleCity_PokemonCenter_1F_Text_1B0CA7, 4
- release
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AE86A:: @ 81AE86A
- special sub_80F7C90
- compare RESULT, 1
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE882
- msgbox MauvilleCity_PokemonCenter_1F_Text_1B0D11, 4
- release
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AE882:: @ 81AE882
- msgbox MauvilleCity_PokemonCenter_1F_Text_1B0D75, 4
- special sub_80F7C84
- release
- end
diff --git a/data/scripts/maps/AncientTomb.inc b/data/scripts/maps/AncientTomb.inc
index 7ba7540c4..bfc5b6a79 100644
--- a/data/scripts/maps/AncientTomb.inc
+++ b/data/scripts/maps/AncientTomb.inc
@@ -64,7 +64,7 @@ AncientTomb_EventScript_15F050:: @ 815F050
setwildbattle SPECIES_REGISTEEL, 40, ITEM_NONE
setflag 937
setflag 2145
- special StartBattle_Regi
+ special ScrSpecial_StartRegiBattle
waitstate
clearflag 2145
release
diff --git a/data/scripts/maps/BattleTower_BattleRoom.inc b/data/scripts/maps/BattleTower_BattleRoom.inc
index 176d8e8e8..2f0fb97b9 100644
--- a/data/scripts/maps/BattleTower_BattleRoom.inc
+++ b/data/scripts/maps/BattleTower_BattleRoom.inc
@@ -20,7 +20,7 @@ BattleTower_BattleRoom_EventScript_1608FA:: @ 81608FA
msgbox 0x20234cc, 4
waittext
closebutton
- special HealPlayerParty
+ special ScrSpecial_HealPlayerParty
setvar 0x8004, 0
setvar 0x8005, 0
special sub_813556C
@@ -56,7 +56,7 @@ BattleTower_BattleRoom_EventScript_160961:: @ 8160961
special sub_8135A14
fanfare 368
waitfanfare
- special HealPlayerParty
+ special ScrSpecial_HealPlayerParty
BattleTower_BattleRoom_EventScript_1609B2:: @ 81609B2
msgbox BattleTower_BattleRoom_Text_19AD09, 5
diff --git a/data/scripts/maps/BattleTower_Lobby.inc b/data/scripts/maps/BattleTower_Lobby.inc
index 8cd3639a5..a1570ac13 100644
--- a/data/scripts/maps/BattleTower_Lobby.inc
+++ b/data/scripts/maps/BattleTower_Lobby.inc
@@ -242,7 +242,7 @@ BattleTower_Lobby_EventScript_160587:: @ 8160587
special LoadPlayerParty
closebutton
pause 2
- call BattleTower_Lobby_EventScript_19F806
+ call S_DoSaveDialog
setvar 0x4000, 5
hidebox 0, 0, 15, 10
compare RESULT, 0
diff --git a/data/scripts/maps/CaveOfOrigin_B4F.inc b/data/scripts/maps/CaveOfOrigin_B4F.inc
index 023892d36..5517a9c7e 100644
--- a/data/scripts/maps/CaveOfOrigin_B4F.inc
+++ b/data/scripts/maps/CaveOfOrigin_B4F.inc
@@ -62,7 +62,7 @@ CaveOfOrigin_B4F_EventScript_15DDD7:: @ 815DDD7
pause 40
waitpokecry
setflag 2145
- special StartBattle_GroudonKyogre
+ special ScrSpecial_StartGroudonKyogreBattle
waitstate
clearflag 2145
specialval RESULT, sub_810E300
diff --git a/data/scripts/maps/DesertRuins.inc b/data/scripts/maps/DesertRuins.inc
index df40fc126..97a22bae3 100644
--- a/data/scripts/maps/DesertRuins.inc
+++ b/data/scripts/maps/DesertRuins.inc
@@ -64,7 +64,7 @@ DesertRuins_EventScript_15CB85:: @ 815CB85
setwildbattle SPECIES_REGIROCK, 40, ITEM_NONE
setflag 935
setflag 2145
- special StartBattle_Regi
+ special ScrSpecial_StartRegiBattle
waitstate
clearflag 2145
release
diff --git a/data/scripts/maps/IslandCave.inc b/data/scripts/maps/IslandCave.inc
index b16f386d8..2f8ba2121 100644
--- a/data/scripts/maps/IslandCave.inc
+++ b/data/scripts/maps/IslandCave.inc
@@ -31,7 +31,7 @@ IslandCave_MapScript1_15EF15:: @ 815EF15
setflag 2133
end
-gIslandCave_EventScript_OpenRegiiceChamber:: @ 815EF19
+S_OpenRegiceChamber:: @ 815EF19
setmaptile 7, 19, 554, 1
setmaptile 8, 19, 555, 1
setmaptile 9, 19, 556, 1
@@ -84,7 +84,7 @@ IslandCave_EventScript_15EF9D:: @ 815EF9D
setwildbattle SPECIES_REGICE, 40, ITEM_NONE
setflag 936
setflag 2145
- special StartBattle_Regi
+ special ScrSpecial_StartRegiBattle
waitstate
clearflag 2145
release
diff --git a/data/scripts/maps/LilycoveCity_ContestLobby.inc b/data/scripts/maps/LilycoveCity_ContestLobby.inc
index 3c8cc5bdf..6bdcf55e2 100644
--- a/data/scripts/maps/LilycoveCity_ContestLobby.inc
+++ b/data/scripts/maps/LilycoveCity_ContestLobby.inc
@@ -330,7 +330,7 @@ LilycoveCity_ContestLobby_EventScript_158BC4:: @ 8158BC4
msgbox LilycoveCity_ContestLobby_Text_188521, 5
compare RESULT, 0
jumpeq LilycoveCity_ContestLobby_EventScript_158C35
- call LilycoveCity_ContestLobby_EventScript_19F806
+ call S_DoSaveDialog
hidebox 0, 0, 15, 9
compare RESULT, 0
jumpeq LilycoveCity_ContestLobby_EventScript_158C35
diff --git a/data/scripts/maps/LilycoveCity_CoveLilyMotel_2F.inc b/data/scripts/maps/LilycoveCity_CoveLilyMotel_2F.inc
index dcf74b77c..09d19c1c5 100644
--- a/data/scripts/maps/LilycoveCity_CoveLilyMotel_2F.inc
+++ b/data/scripts/maps/LilycoveCity_CoveLilyMotel_2F.inc
@@ -29,7 +29,7 @@ LilycoveCity_CoveLilyMotel_2F_EventScript_1583DD:: @ 81583DD
message LilycoveCity_CoveLilyMotel_2F_Text_18708F
waittext
call LilycoveCity_CoveLilyMotel_2F_EventScript_1A02C5
- special sub_810D6A4
+ special ScrSpecial_ShowDiploma
waitstate
release
end
diff --git a/data/scripts/maps/LilycoveCity_Harbor.inc b/data/scripts/maps/LilycoveCity_Harbor.inc
index f8ff8f9f3..aca6b16d4 100644
--- a/data/scripts/maps/LilycoveCity_Harbor.inc
+++ b/data/scripts/maps/LilycoveCity_Harbor.inc
@@ -135,7 +135,7 @@ LilycoveCity_Harbor_EventScript_1599EE:: @ 81599EE
callif 1, LilycoveCity_Harbor_EventScript_1599CE
pause 30
spriteinvisible 255, 0, 0
- special HealPlayerParty
+ special ScrSpecial_HealPlayerParty
setvar 0x8004, 2
call LilycoveCity_Harbor_EventScript_1A040E
warp SouthernIsland_Exterior, 255, 13, 22
diff --git a/data/scripts/maps/LilycoveCity_MoveDeletersHouse.inc b/data/scripts/maps/LilycoveCity_MoveDeletersHouse.inc
index 6adea2eb2..2786c930c 100644
--- a/data/scripts/maps/LilycoveCity_MoveDeletersHouse.inc
+++ b/data/scripts/maps/LilycoveCity_MoveDeletersHouse.inc
@@ -21,7 +21,7 @@ LilycoveCity_MoveDeletersHouse_EventScript_159ADE:: @ 8159ADE
special sub_80FA148
compare RESULT, 1
jumpeq LilycoveCity_MoveDeletersHouse_EventScript_159B71
- special sub_80F9F3C
+ special ScrSpecial_CountPokemonMoves
compare RESULT, 1
jumpeq LilycoveCity_MoveDeletersHouse_EventScript_159B64
msgbox LilycoveCity_MoveDeletersHouse_Text_18B6B0, 4
@@ -30,7 +30,7 @@ LilycoveCity_MoveDeletersHouse_EventScript_159ADE:: @ 8159ADE
fadescreen 0
compare 0x8005, 4
jumpeq LilycoveCity_MoveDeletersHouse_EventScript_159ADE
- special sub_80F9F84
+ special ScrSpecial_GetPokemonNicknameAndMoveName
msgbox LilycoveCity_MoveDeletersHouse_Text_18B6F2, 5
switch RESULT
case 1, LilycoveCity_MoveDeletersHouse_EventScript_159B53
@@ -47,7 +47,7 @@ LilycoveCity_MoveDeletersHouse_EventScript_159B53:: @ 8159B53
end
LilycoveCity_MoveDeletersHouse_EventScript_159B64:: @ 8159B64
- special sub_80F9F84
+ special ScrSpecial_GetPokemonNicknameAndMoveName
msgbox LilycoveCity_MoveDeletersHouse_Text_18B6D0, 4
releaseall
end
diff --git a/data/scripts/maps/MossdeepCity_GameCorner_1F.inc b/data/scripts/maps/MossdeepCity_GameCorner_1F.inc
index 14836f3e0..59669596a 100644
--- a/data/scripts/maps/MossdeepCity_GameCorner_1F.inc
+++ b/data/scripts/maps/MossdeepCity_GameCorner_1F.inc
@@ -103,7 +103,7 @@ MossdeepCity_GameCorner_1F_EventScript_15AD59:: @ 815AD59
compare RESULT, 0
callif 1, MossdeepCity_GameCorner_1F_EventScript_15ADE8
special LoadPlayerParty
- call MossdeepCity_GameCorner_1F_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
jumpeq MossdeepCity_GameCorner_1F_EventScript_15ADE8
hidebox 0, 0, 15, 10
diff --git a/data/scripts/maps/MossdeepCity_GameCorner_B1F.inc b/data/scripts/maps/MossdeepCity_GameCorner_B1F.inc
index a5a013d5f..c7d1201fd 100644
--- a/data/scripts/maps/MossdeepCity_GameCorner_B1F.inc
+++ b/data/scripts/maps/MossdeepCity_GameCorner_B1F.inc
@@ -29,7 +29,7 @@ MossdeepCity_GameCorner_B1F_EventScript_15AE6E:: @ 815AE6E
compare RESULT, 2
callif 1, MossdeepCity_GameCorner_B1F_EventScript_15AEEE
closebutton
- special HealPlayerParty
+ special ScrSpecial_HealPlayerParty
move 255, MossdeepCity_GameCorner_B1F_Movement_15AEFF
waitmove 0
special LoadPlayerParty
diff --git a/data/scripts/maps/PetalburgCity.inc b/data/scripts/maps/PetalburgCity.inc
index dc5efe243..123b099fe 100644
--- a/data/scripts/maps/PetalburgCity.inc
+++ b/data/scripts/maps/PetalburgCity.inc
@@ -32,7 +32,7 @@ PetalburgCity_EventScript_14B747:: @ 814B747
move 255, PetalburgCity_Movement_14B7CC
waitmove 0
msgbox PetalburgCity_Text_16D361, 4
- special StartBattle_WallyTutorial
+ special ScrSpecial_StartWallyTutorialBattle
waitstate
msgbox PetalburgCity_Text_16D3DE, 4
movecoords 2, PetalburgCity_Movement_1A083F, 0, 0
diff --git a/data/scripts/maps/Route101.inc b/data/scripts/maps/Route101.inc
index 8462603a6..d945aadfc 100644
--- a/data/scripts/maps/Route101.inc
+++ b/data/scripts/maps/Route101.inc
@@ -224,12 +224,12 @@ Route101_EventScript_14EA7F:: @ 814EA7F
movesprite 255, 6, 13
move 255, Route101_Movement_1A083F
waitmove 0
- special ChooseStarter
+ special ScrSpecial_ChooseStarter
waitstate
move 2, Route101_Movement_14EAD7
waitmove 0
msgbox Route101_Text_16D191, 4
- special HealPlayerParty
+ special ScrSpecial_HealPlayerParty
setflag 720
clearflag 721
setflag 700
diff --git a/data/scripts/maps/Route110.inc b/data/scripts/maps/Route110.inc
index d8c19d92c..a77feaa0f 100644
--- a/data/scripts/maps/Route110.inc
+++ b/data/scripts/maps/Route110.inc
@@ -25,7 +25,7 @@ Route110_MapScript2_14F933:: @ 814F933
.2byte 0
Route110_EventScript_14F93D:: @ 814F93D
- special BeginCyclingRoadChallenge
+ special ScrSpecial_BeginCyclingRoadChallenge
setvar 0x40a9, 2
return
diff --git a/data/scripts/maps/SkyPillar_Top.inc b/data/scripts/maps/SkyPillar_Top.inc
index 23db6a8ea..d659a23c1 100644
--- a/data/scripts/maps/SkyPillar_Top.inc
+++ b/data/scripts/maps/SkyPillar_Top.inc
@@ -21,7 +21,7 @@ SkyPillar_Top_EventScript_15F316:: @ 815F316
waitpokecry
setflag 773
setflag 2145
- special StartBattle_Rayquaza
+ special ScrSpecial_StartRayquazaBattle
waitstate
clearflag 2145
release
diff --git a/data/scripts/maps/SlateportCity.inc b/data/scripts/maps/SlateportCity.inc
index 48eb5c1df..e156f8948 100644
--- a/data/scripts/maps/SlateportCity.inc
+++ b/data/scripts/maps/SlateportCity.inc
@@ -69,7 +69,7 @@ SlateportCity_EventScript_14BAE0:: @ 814BAE0
specialval RESULT, LeadMonHasEffortRibbon
compare RESULT, 1
callif 1, SlateportCity_EventScript_14BB35
- specialval RESULT, GetLeadMonEVCount
+ specialval RESULT, ScrSpecial_AreLeadMonEVsMaxedOut
compare RESULT, 0
callif 1, SlateportCity_EventScript_14BB2B
msgbox SlateportCity_Text_164691, 4
diff --git a/data/scripts/maps/SouthernIsland_Interior.inc b/data/scripts/maps/SouthernIsland_Interior.inc
index 3adf3545f..e5eaadab5 100644
--- a/data/scripts/maps/SouthernIsland_Interior.inc
+++ b/data/scripts/maps/SouthernIsland_Interior.inc
@@ -67,7 +67,7 @@ SouthernIsland_Interior_EventScript_160BA7:: @ 8160BA7
setwildbattle SPECIES_LATIAS_OR_LATIOS, 50, ITEM_SOUL_DEW
setflag 911
setflag 2145
- special StartBattle_SouthernIsland
+ special ScrSpecial_StartSouthernIslandBattle
waitstate
clearflag 2145
releaseall
diff --git a/data/scripts/mauville_man.inc b/data/scripts/mauville_man.inc
new file mode 100644
index 000000000..997b5a31c
--- /dev/null
+++ b/data/scripts/mauville_man.inc
@@ -0,0 +1,357 @@
+@ From mauville_old_man.h
+@ TODO: Put these in a header
+
+MAUVILLE_MAN_BARD = 0
+MAUVILLE_MAN_HIPSTER = 1
+MAUVILLE_MAN_TRADER = 2
+MAUVILLE_MAN_STORYTELLER = 3
+MAUVILLE_MAN_GIDDY = 4
+
+MauvilleCity_PokemonCenter_1F_EventScript_1AE744:: @ 81AE744
+ special ScrSpecial_GetCurrentMauvilleMan
+ switch RESULT
+ case MAUVILLE_MAN_BARD, SpeakToBard
+ case MAUVILLE_MAN_HIPSTER, SpeakToHipster
+ case MAUVILLE_MAN_TRADER, SpeakToTrader
+ case MAUVILLE_MAN_STORYTELLER, SpeakToStoryteller
+ case MAUVILLE_MAN_GIDDY, SpeakToGiddy
+ end
+
+
+@-------------------------------------------------------------------------------
+@ Bard
+@-------------------------------------------------------------------------------
+
+SpeakToBard:
+ lock
+ faceplayer
+ msgbox gTextBard_HiImTheBard, MSGBOX_YESNO
+ compare RESULT, YES
+ jumpeq yes_hear_song
+ compare RESULT, NO
+ jumpeq dont_hear_song
+ end
+
+yes_hear_song:
+ setvar 0x8004, 0
+ @ Give the player ear rape
+ special ScrSpecial_PlayBardSong
+ pause 60
+ special ScrSpecial_HasBardSongBeenChanged
+ compare RESULT, FALSE
+ @ Prompt new lyrics only if song hasn't been changed
+ jumpeq prompt_write_lyrics
+ msgbox gTextBard_OhWhatAMovingSong, 4
+ release
+ end
+
+dont_hear_song:
+ msgbox gTextBard_OhYouveLeftMe, 4
+ release
+ end
+
+prompt_write_lyrics:
+ msgbox gTextBard_SoHowDoYouLikeMySong, MSGBOX_YESNO
+ compare RESULT, YES
+ jumpeq write_lyrics
+ compare RESULT, NO
+ jumpeq dont_write_lyrics
+ end
+
+write_lyrics:
+ setvar 0x8004, 6
+ call MauvilleCity_PokemonCenter_1F_EventScript_1A00F3
+ lock
+ faceplayer
+ compare RESULT, NO
+ jumpeq dont_write_lyrics
+ msgbox gTextBard_ThankYouKindly, 4
+ setvar 0x8004, 1
+ @ Give the player ear rape again
+ special ScrSpecial_PlayBardSong
+ pause 60
+ msgbox gTextBard_WasThatHowYouWanted, MSGBOX_YESNO
+ compare RESULT, NO
+ jumpeq write_lyrics @ Keep looping until player responds YES
+ special ScrSpecial_SaveBardSongLyrics
+ msgbox gTextBard_OkayThatsIt, 4
+ release
+ end
+
+dont_write_lyrics:
+ msgbox gTextBard_OhYouveLeftMe2, 4
+ release
+ end
+
+
+@-------------------------------------------------------------------------------
+@ Hipster
+@-------------------------------------------------------------------------------
+
+SpeakToHipster:
+ lock
+ faceplayer
+ setflag 2054
+ msgbox gTextHipster_TheyCallMeTheHipster, 4
+ special ScrSpecial_GetHipsterSpokenFlag
+ compare RESULT, FALSE
+ jumpeq hipster_first_time
+ msgbox gTextHipster_TaughtYouAlready, 4
+ release
+ end
+
+hipster_first_time:
+ special ScrSpecial_HipsterTeachWord
+ compare RESULT, TRUE @ TRUE if player learned a new word
+ jumpeq teach_new_word
+ msgbox gTextHipster_YouAlreadyKnowALot, 4
+ release
+ end
+
+teach_new_word:
+ msgbox gTextHipster_HaveYouHeardAbout, 4
+ special ScrSpecial_SetHipsterSpokenFlag
+ release
+ end
+
+
+@-------------------------------------------------------------------------------
+@ Trader
+@-------------------------------------------------------------------------------
+
+ .include "data/text/trader.inc"
+
+SpeakToTrader:
+ lock
+ faceplayer
+ msgbox gTextTrader_Introduction, MSGBOX_YESNO
+ compare RESULT, NO
+ jumpeq dont_want_to_trade
+ special ScrSpecial_GetTraderTradedFlag
+ compare RESULT, TRUE
+ jumpeq already_traded
+ message gTextTrader_MenuPrompt
+ waittext
+ jump do_trader_menu_get
+ end
+
+dont_want_to_trade:
+ msgbox gTextTrader_FeelUnwanted1, 2
+ end
+
+already_traded:
+ msgbox gTextTrader_TradedAlready, 2
+ end
+
+do_trader_menu_get:
+ special ScrSpecial_TraderMenuGetDecoration
+ waitstate
+ compare 0x8004, 0
+ jumpeq cancelled_get_menu
+ compare 0x8004, 65535
+ jumpeq rare_item_cant_trade_away
+ msgbox gTextTrader_ItemOnceBelongedTo, MSGBOX_YESNO
+ compare RESULT, NO
+ jumpeq dont_want_item
+ special ScrSpecial_DoesPlayerHaveNoDecorations
+ compare RESULT, TRUE
+ jumpeq player_has_no_decorations
+ jump do_trader_menu_give
+ end
+
+cancelled_get_menu:
+ msgbox gTextTrader_DontWantAnything, 2
+ end
+
+rare_item_cant_trade_away:
+ message gTextTrader_ICantTradeThatOneAway
+ waittext
+ jump do_trader_menu_get
+ end
+
+dont_want_item:
+ message gTextTrader_MenuPrompt
+ waittext
+ jump do_trader_menu_get
+ end
+
+player_has_no_decorations:
+ msgbox gTextTrader_YouDontHaveDecorations, 2
+ end
+
+do_trader_menu_give:
+ msgbox gTextTrader_PickDecorationYoullTrade, 4
+ special ScrSpecial_TraderMenuGiveDecoration
+ waitstate
+ compare 0x8006, 0
+ jumpeq cancelled_give_menu
+ compare 0x8006, 65535
+ jumpeq decoration_is_in_use
+ special ScrSpecial_IsDecorationFull
+ compare RESULT, 1
+ jumpeq decorations_full
+ msgbox gTextTrader_SoWellTrade, MSGBOX_YESNO
+ compare RESULT, NO
+ jumpeq do_trader_menu_give
+ special ScrSpecial_TraderDoDecorationTrade
+ msgbox gTextTrader_ThenWellTrade, 2
+ end
+
+cancelled_give_menu:
+ msgbox gTextTrader_FeelUnwanted2, 2
+ end
+
+decoration_is_in_use:
+ msgbox gTextTrader_InUseYouCantTradeIt, 4
+ jump do_trader_menu_give
+ end
+
+decorations_full:
+ msgbox gTextTrader_NoRoomForThis, 2
+ end
+
+
+@-------------------------------------------------------------------------------
+@ Storyteller
+@-------------------------------------------------------------------------------
+
+ .include "data/text/storyteller.inc"
+
+SpeakToStoryteller:
+ setvar 0x8008, 0
+ setvar 0x8009, 0
+ setvar 0x800a, 0
+ setvar 0x800b, 0
+ lock
+ faceplayer
+ msgbox gTextStoryteller_Introduction, MSGBOX_YESNO
+ compare RESULT, NO
+ jumpeq dont_hear_story
+ specialval RESULT, ScrSpecial_StorytellerGetFreeStorySlot
+ compare RESULT, 0 @ If slot is 0, then the list is empty
+ jumpeq no_stories_recorded
+choose_story:
+ message gTextStoryteller_WhichTale
+ waittext
+ special ScrSpecial_StorytellerStoryListMenu
+ waitstate
+ compare RESULT, FALSE
+ jumpeq cancel_story_menu
+ setvar 0x8008, 1
+ special ScrSpecial_StorytellerDisplayStory
+ waittext
+ waitbutton
+ specialval RESULT, ScrSpecial_StorytellerUpdateStat
+ compare RESULT, FALSE
+ jumpeq no_stat_update
+ jump stat_update
+cancel_story_menu:
+ compare 0x8008, 0
+ jumpeq dont_hear_story
+ jump yes_hear_story
+no_stat_update:
+ msgbox gTextStoryteller_CouldThereBeOtherTrainers, 4
+ msgbox gTextStoryteller_HearAnotherLegendaryTale, MSGBOX_YESNO
+ compare RESULT, YES
+ jumpeq choose_story
+yes_hear_story:
+ specialval RESULT, ScrSpecial_HasStorytellerAlreadyRecorded
+ compare RESULT, TRUE
+ jumpeq cant_record_story @ already recorded story
+ specialval RESULT, ScrSpecial_StorytellerGetFreeStorySlot
+ compare RESULT, 4
+ jumpeq cant_record_story @ story list is full
+ jump prompt_record_story
+no_stories_recorded:
+ msgbox gTextStoryteller_ButIKnowOfNoLegendaryTrainers, 4
+prompt_record_story:
+ msgbox gTextStoryteller_HaveYouAnyTales, MSGBOX_YESNO
+ compare RESULT, NO
+ jumpeq dont_hear_story
+ specialval RESULT, ScrSpecial_StorytellerInitializeRandomStat
+ compare RESULT, TRUE
+ jumpeq stat_update
+ msgbox gTextStoryteller_ImNotSatisfied, 4
+ closebutton
+ release
+ end
+
+stat_update:
+ msgbox gTextStoryteller_BirthOfANewLegend, 4
+ closebutton
+ release
+ end
+
+dont_hear_story:
+ msgbox gTextStoryteller_OhIFeelStifled, 4
+ closebutton
+ release
+ end
+
+cant_record_story:
+ msgbox gTextStoryteller_WishMorePeopleWould, 4
+ closebutton
+ release
+ end
+
+
+@-------------------------------------------------------------------------------
+@ Giddy
+@-------------------------------------------------------------------------------
+
+ .include "data/text/giddy.inc"
+
+SpeakToGiddy:
+ lock
+ faceplayer
+ msgbox gTextGiddy_Introduction, MSGBOX_YESNO
+ compare RESULT, YES
+ jumpeq yes_hear_giddy
+ compare RESULT, NO
+ jumpeq dont_hear_giddy
+ end
+
+yes_hear_giddy:
+ special ScrSpecial_GiddyShouldTellAnotherTale
+ compare RESULT, TRUE
+ jumpeq tell_giddy_tale
+ compare RESULT, FALSE
+ jumpeq bye_bye
+ end
+
+tell_another_giddy_tale:
+ special ScrSpecial_GiddyShouldTellAnotherTale
+ compare RESULT, TRUE
+ jumpeq also_i_was_thinking
+ compare RESULT, FALSE
+ jumpeq bye_bye
+ end
+
+also_i_was_thinking:
+ msgbox gTextGiddy_AlsoIWasThinking, 4
+ jump tell_giddy_tale
+ end
+
+tell_giddy_tale:
+ special ScrSpecial_GenerateGiddyLine
+ special ShowFieldMessageStringVar4
+ waittext
+ yesnobox 20, 8
+ compare RESULT, 1
+ jumpeq tell_another_giddy_tale
+ compare RESULT, 0
+ jumpeq tell_another_giddy_tale
+ end
+
+dont_hear_giddy:
+ msgbox gTextGiddy_YouveDeflatedMe, 4
+ release
+ end
+
+bye_bye:
+ msgbox gTextGiddy_ByeBye, 4
+ release
+ end
+
+ .include "data/text/bard.inc"
+ .include "data/text/hipster.inc"
diff --git a/data/scripts/players_house.inc b/data/scripts/players_house.inc
index ca4b2bdb9..e9f379b24 100644
--- a/data/scripts/players_house.inc
+++ b/data/scripts/players_house.inc
@@ -107,7 +107,7 @@ LittlerootTown_BrendansHouse_2F_EventScript_1B6A61:: @ 81B6A61
LittlerootTown_BrendansHouse_2F_EventScript_1B6A91:: @ 81B6A91
inccounter GAME_STAT_CHECKED_CLOCK
fadescreen 1
- special sub_810D6B8
+ special ScrSpecial_ViewWallClock
waitstate
releaseall
end
diff --git a/data/scripts/pokeblocks.inc b/data/scripts/pokeblocks.inc
index e1add8734..852acd292 100644
--- a/data/scripts/pokeblocks.inc
+++ b/data/scripts/pokeblocks.inc
@@ -235,7 +235,7 @@ FallarborTown_ContestLobby_EventScript_1B7897:: @ 81B7897
end
FallarborTown_ContestLobby_EventScript_1B78A1:: @ 81B78A1
- call FallarborTown_ContestLobby_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
jumpeq FallarborTown_ContestLobby_EventScript_1B7936
message FallarborTown_ContestLobby_Text_1B7304
diff --git a/data/scripts/storyteller.inc b/data/scripts/storyteller.inc
deleted file mode 100644
index eba94e698..000000000
--- a/data/scripts/storyteller.inc
+++ /dev/null
@@ -1,82 +0,0 @@
-MauvilleCity_PokemonCenter_1F_EventScript_1B0816:: @ 81B0816
- setvar 0x8008, 0
- setvar 0x8009, 0
- setvar 0x800a, 0
- setvar 0x800b, 0
- lock
- faceplayer
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AECC6, 5
- compare RESULT, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0914
- specialval RESULT, sub_80F889C
- compare RESULT, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B08D3
-
-MauvilleCity_PokemonCenter_1F_EventScript_1B084F:: @ 81B084F
- message MauvilleCity_PokemonCenter_1F_Text_1AED35
- waittext
- special sub_80F8874
- waitstate
- compare RESULT, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0883
- setvar 0x8008, 1
- special sub_80F8888
- waittext
- waitbutton
- specialval RESULT, sub_80F88AC
- compare RESULT, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0893
- jump MauvilleCity_PokemonCenter_1F_EventScript_1B0909
-
-MauvilleCity_PokemonCenter_1F_EventScript_1B0883:: @ 81B0883
- compare 0x8008, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0914
- jump MauvilleCity_PokemonCenter_1F_EventScript_1B08AE
-
-MauvilleCity_PokemonCenter_1F_EventScript_1B0893:: @ 81B0893
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AEE50, 4
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AEF0A, 5
- compare RESULT, 1
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B084F
-
-MauvilleCity_PokemonCenter_1F_EventScript_1B08AE:: @ 81B08AE
- specialval RESULT, sub_80F88E0
- compare RESULT, 1
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B091F
- specialval RESULT, sub_80F889C
- compare RESULT, 4
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B091F
- jump MauvilleCity_PokemonCenter_1F_EventScript_1B08DB
-
-MauvilleCity_PokemonCenter_1F_EventScript_1B08D3:: @ 81B08D3
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AED70, 4
-
-MauvilleCity_PokemonCenter_1F_EventScript_1B08DB:: @ 81B08DB
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AEEB4, 5
- compare RESULT, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0914
- specialval RESULT, sub_80F88FC
- compare RESULT, 1
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0909
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AEF49, 4
- closebutton
- release
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1B0909:: @ 81B0909
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AEDE8, 4
- closebutton
- release
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1B0914:: @ 81B0914
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AED1D, 4
- closebutton
- release
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1B091F:: @ 81B091F
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AEFA5, 4
- closebutton
- release
- end
diff --git a/data/scripts/trader.inc b/data/scripts/trader.inc
deleted file mode 100644
index b52c8a2dc..000000000
--- a/data/scripts/trader.inc
+++ /dev/null
@@ -1,88 +0,0 @@
-MauvilleCity_PokemonCenter_1F_EventScript_1AEBAB:: @ 81AEBAB
- lock
- faceplayer
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AE88F, 5
- compare RESULT, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AEBDA
- special sub_8109C44
- compare RESULT, 1
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AEBE3
- message MauvilleCity_PokemonCenter_1F_Text_1AE910
- waittext
- jump MauvilleCity_PokemonCenter_1F_EventScript_1AEBEC
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AEBDA:: @ 81AEBDA
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AE8C6, 2
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AEBE3:: @ 81AEBE3
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AE8DF, 2
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AEBEC:: @ 81AEBEC
- special sub_8109E34
- waitstate
- compare 0x8004, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AEC2D
- compare 0x8004, 65535
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AEC36
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AE97C, 5
- compare RESULT, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AEC42
- special sub_8109C58
- compare RESULT, 1
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AEC4E
- jump MauvilleCity_PokemonCenter_1F_EventScript_1AEC57
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AEC2D:: @ 81AEC2D
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AE950, 2
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AEC36:: @ 81AEC36
- message MauvilleCity_PokemonCenter_1F_Text_1AEB31
- waittext
- jump MauvilleCity_PokemonCenter_1F_EventScript_1AEBEC
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AEC42:: @ 81AEC42
- message MauvilleCity_PokemonCenter_1F_Text_1AE910
- waittext
- jump MauvilleCity_PokemonCenter_1F_EventScript_1AEBEC
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AEC4E:: @ 81AEC4E
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AE9B6, 2
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AEC57:: @ 81AEC57
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AE9F8, 4
- special sub_8109CF0
- waitstate
- compare 0x8006, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AECA6
- compare 0x8006, 65535
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AECAF
- special sub_8109C90
- compare RESULT, 1
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AECBD
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AEA9B, 5
- compare RESULT, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AEC57
- special sub_8109DE0
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AEAFB, 2
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AECA6:: @ 81AECA6
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AEA2B, 2
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AECAF:: @ 81AECAF
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AEAC3, 4
- jump MauvilleCity_PokemonCenter_1F_EventScript_1AEC57
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AECBD:: @ 81AECBD
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AEA57, 2
- end
diff --git a/data/shop.s b/data/shop.s
deleted file mode 100644
index 071874d0e..000000000
--- a/data/shop.s
+++ /dev/null
@@ -1,69 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gUnknown_083CC6D0:: @ 83CC6D0
- .4byte MartText_Buy, sub_80B2EFC
- .4byte MartText_Sell, sub_80B2F30
- .4byte MartText_Quit2, HandleShopMenuQuit
-
-gUnknown_083CC6E8:: @ 83CC6E8
- .byte 0, 1, 2
-
-gUnknown_083CC6EB:: @ 83CC6EB
- .byte 0, 2
-
-@ unknown, unreferenced data
- .align 1
- .2byte 0x2
- .2byte 0x3
- .2byte 0x4
- .2byte 0xD
- .2byte 0x121
- .2byte 0xE
- .2byte 0xE
- .2byte 0xE
- .2byte 0xE
- .2byte 0xE
- .2byte 0xE
- .2byte 0x0
- .2byte 0x0
-
- .align 2
-gUnknown_083CC708:: @ 83CC708
- .4byte sub_80B3BF4
- .4byte sub_80B3D7C
-
- .align 1
-gUnknown_083CC710:: @ 83CC710
- .2byte 0x41EE,0x7FFF
-
- .align 1
-gUnknown_083CC714:: @ 83CC714
- .2byte 0x284,0x282,0x280
-
- .align 1
-gUnknown_083CC71A:: @ 83CC71A
- .2byte 0x285,0x283,0x281
-
- .align 1
-gUnknown_083CC720:: @ 83CC720
- .2byte 0x28C,0x28A,0x288
-
- .align 1
-gUnknown_083CC726:: @ 83CC726
- .2byte 0x28D,0x28B,0x289
-
- .align 1
-gUnknown_083CC72C:: @ 83CC72C
- .2byte 0x2A0,0x2A2,0x2A4
-
- .align 1
-gUnknown_083CC732:: @ 83CC732
- .2byte 0x2A1,0x2A3,0x2A5
-
- .align 1
-gUnknown_083CC738:: @ 83CC738
- .2byte 0x2A8,0x2AA,0x2AC
diff --git a/data/specials.inc b/data/specials.inc
index 0eb6b742d..3545d1dff 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -7,7 +7,7 @@
.set __special__, 0
.align 2
gSpecials::
- def_special HealPlayerParty
+ def_special ScrSpecial_HealPlayerParty
def_special SetCableClubWarp
def_special DoCableClubWarp
def_special sub_80810DC
@@ -58,15 +58,15 @@ gSpecials::
def_special FieldObjectInteractionWaterBerryTree
def_special PlayerHasBerries
def_special IsEnigmaBerryValid
- def_special sub_8082558
- def_special sub_80826D8
- def_special sub_8082718
- def_special sub_8082564
- def_special sub_80847C8
+ def_special ScrSpecial_GetTrainerBattleMode
+ def_special ScrSpecial_ShowTrainerIntroSpeech
+ def_special ScrSpecial_ShowTrainerNonBattlingSpeech
+ def_special ScrSpecial_HasTrainerBeenFought
+ def_special ScrSpecial_EndTrainerApproach
def_special PlayTrainerEncounterMusic
def_special sub_8082C68
- def_special sub_8082C9C
- def_special sub_80826B0
+ def_special ScrSpecial_GetTrainerEyeRematchFlag
+ def_special ScrSpecial_StartTrainerEyeRematch
def_special ShowPokemonStorageSystem
def_special CheckForAlivePartyMons
def_special TurnOffTVScreen
@@ -100,32 +100,32 @@ gSpecials::
def_special sub_80C5044
def_special GiveMonArtistRibbon
def_special sub_808363C
- def_special InitSaveDialog
+ def_special ScrSpecial_DoSaveDialog
def_special DoWateringBerryTreeAnim
def_special sub_80E60D8
def_special sub_80EB7C4
- def_special sub_80F7B14
- def_special sub_80F7B2C
- def_special sub_80F7B40
- def_special sub_80F7C70
- def_special sub_80F7C84
- def_special sub_80F7C90
- def_special sub_80F7C54
+ def_special ScrSpecial_GetCurrentMauvilleMan
+ def_special ScrSpecial_HasBardSongBeenChanged
+ def_special ScrSpecial_SaveBardSongLyrics
+ def_special ScrSpecial_GetHipsterSpokenFlag
+ def_special ScrSpecial_SetHipsterSpokenFlag
+ def_special ScrSpecial_HipsterTeachWord
+ def_special ScrSpecial_PlayBardSong
def_special sub_80F83D0
- def_special sub_80F7CF4
- def_special sub_80F7CC8
- def_special sub_80F889C
- def_special sub_80F8888
- def_special sub_80F8874
- def_special sub_80F88AC
- def_special sub_80F88FC
- def_special sub_80F88E0
- def_special sub_8109E34
- def_special sub_8109C44
- def_special sub_8109C58
- def_special sub_8109C90
- def_special sub_8109CF0
- def_special sub_8109DE0
+ def_special ScrSpecial_GenerateGiddyLine
+ def_special ScrSpecial_GiddyShouldTellAnotherTale
+ def_special ScrSpecial_StorytellerGetFreeStorySlot
+ def_special ScrSpecial_StorytellerDisplayStory
+ def_special ScrSpecial_StorytellerStoryListMenu
+ def_special ScrSpecial_StorytellerUpdateStat
+ def_special ScrSpecial_StorytellerInitializeRandomStat
+ def_special ScrSpecial_HasStorytellerAlreadyRecorded
+ def_special ScrSpecial_TraderMenuGetDecoration
+ def_special ScrSpecial_GetTraderTradedFlag
+ def_special ScrSpecial_DoesPlayerHaveNoDecorations
+ def_special ScrSpecial_IsDecorationFull
+ def_special ScrSpecial_TraderMenuGiveDecoration
+ def_special ScrSpecial_TraderDoDecorationTrade
def_special GetShroomishSizeRecordInfo
def_special CompareShroomishSize
def_special GetBarboachSizeRecordInfo
@@ -162,9 +162,9 @@ gSpecials::
def_special sub_8123218
def_special sub_8053E90
def_special StartWallClock
- def_special sub_810D6B8
- def_special ChooseStarter
- def_special StartBattle_WallyTutorial
+ def_special ScrSpecial_ViewWallClock
+ def_special ScrSpecial_ChooseStarter
+ def_special ScrSpecial_StartWallyTutorialBattle
def_special sub_80BF9F8
def_special sub_80F9A0C
def_special sub_810CA00
@@ -178,7 +178,7 @@ gSpecials::
def_special sub_810FF48
def_special sub_810FAA0
def_special sub_810FF60
- def_special RockSmashWildEncounter
+ def_special ScrSpecial_RockSmashWildEncounter
def_special GabbyAndTyGetBattleNum
def_special sub_80BDC14
def_special GabbyAndTyBeforeInterview
@@ -229,11 +229,11 @@ gSpecials::
def_special sub_80F9A4C
def_special sub_80F9EEC
def_special sub_80FA0DC
- def_special sub_80F9F84
- def_special sub_80F9F3C
+ def_special ScrSpecial_GetPokemonNicknameAndMoveName
+ def_special ScrSpecial_CountPokemonMoves
def_special sub_8132670
def_special GetRecordedCyclingRoadResults
- def_special BeginCyclingRoadChallenge
+ def_special ScrSpecial_BeginCyclingRoadChallenge
def_special GetPlayerAvatarBike
def_special FinishCyclingRoadChallenge
def_special UpdateCyclingRoadState
@@ -269,9 +269,9 @@ gSpecials::
def_special ShowBerryBlenderRecordWindow
def_special ResetTrickHouseEndRoomFlag
def_special SetTrickHouseEndRoomFlag
- def_special TryCreatePCMenu
+ def_special ScrSpecial_CreatePCMenu
def_special AccessHallOfFamePC
- def_special sub_810D6A4
+ def_special ScrSpecial_ShowDiploma
def_special CheckLeadMonCool
def_special CheckLeadMonBeauty
def_special CheckLeadMonCute
@@ -301,7 +301,7 @@ gSpecials::
def_special sub_810F4FC
def_special LeadMonHasEffortRibbon
def_special GivLeadMonEffortRibbon
- def_special GetLeadMonEVCount
+ def_special ScrSpecial_AreLeadMonEVsMaxedOut
def_special sub_8064EAC
def_special sub_8064ED4
def_special InitRoamer
@@ -318,9 +318,9 @@ gSpecials::
def_special IsPokerusInParty
def_special sub_8069D78
def_special sub_810F758
- def_special StartBattle_GroudonKyogre
- def_special StartBattle_Rayquaza
- def_special StartBattle_Regi
+ def_special ScrSpecial_StartGroudonKyogreBattle
+ def_special ScrSpecial_StartRayquazaBattle
+ def_special ScrSpecial_StartRegiBattle
def_special sub_8082524
def_special DoSealedChamberShakingEffect2
def_special sub_810F828
@@ -330,7 +330,7 @@ gSpecials::
def_special ShowContestEntryMonPic
def_special sub_80C5164
def_special sub_8134AB4
- def_special StartBattle_SouthernIsland
+ def_special ScrSpecial_StartSouthernIslandBattle
def_special SetRoute119Weather
def_special SetRoute123Weather
def_special ScriptGetMultiplayerId
diff --git a/data/text/bard.inc b/data/text/bard.inc
index edf4942f6..bd22c97a3 100644
--- a/data/text/bard.inc
+++ b/data/text/bard.inc
@@ -1,19 +1,19 @@
-UnknownString_81B0A83: @ 81B0A83
+gTextBard_BardTesting: @ 81B0A83
.string "BARD testing!$"
-MauvilleCity_PokemonCenter_1F_Text_1B0A91:: @ 81B0A91
+gTextBard_HiImTheBard:: @ 81B0A91
.string "Hi, I’m the BARD.\n"
.string "Would you like to hear my song?$"
-MauvilleCity_PokemonCenter_1F_Text_1B0AC3:: @ 81B0AC3
+gTextBard_OhYouveLeftMe:: @ 81B0AC3
.string "Oh...\n"
.string "You’ve left me feeling the blues...$"
-MauvilleCity_PokemonCenter_1F_Text_1B0AED:: @ 81B0AED
+gTextBard_OhWhatAMovingSong:: @ 81B0AED
.string "Oh, what a moving song...\n"
.string "I wish I could play it for others...$"
-MauvilleCity_PokemonCenter_1F_Text_1B0B2C:: @ 81B0B2C
+gTextBard_SoHowDoYouLikeMySong:: @ 81B0B2C
.string "So?\n"
.string "How do you like my song?\p"
.string "But I’m none too happy about the\n"
@@ -21,18 +21,18 @@ MauvilleCity_PokemonCenter_1F_Text_1B0B2C:: @ 81B0B2C
.string "How would you like to write some new\n"
.string "lyrics for me?$"
-MauvilleCity_PokemonCenter_1F_Text_1B0BA6:: @ 81B0BA6
+gTextBard_OhYouveLeftMe2:: @ 81B0BA6
.string "Oh...\n"
.string "You’ve left me feeling the blues...$"
-MauvilleCity_PokemonCenter_1F_Text_1B0BD0:: @ 81B0BD0
+gTextBard_ThankYouKindly:: @ 81B0BD0
.string "Thank you kindly!\n"
.string "Let me sing it for you.$"
-MauvilleCity_PokemonCenter_1F_Text_1B0BFA:: @ 81B0BFA
+gTextBard_WasThatHowYouWanted:: @ 81B0BFA
.string "Was that how you wanted your song\n"
.string "to go?$"
-MauvilleCity_PokemonCenter_1F_Text_1B0C23:: @ 81B0C23
+gTextBard_OkayThatsIt:: @ 81B0C23
.string "Okay! That’s it, then.\n"
.string "I’ll sing this song for a while.$"
diff --git a/data/text/giddy.inc b/data/text/giddy.inc
index 040ef2ae5..a763776bf 100644
--- a/data/text/giddy.inc
+++ b/data/text/giddy.inc
@@ -1,16 +1,16 @@
-MauvilleCity_PokemonCenter_1F_Text_1B092A:: @ 81B092A
+gTextGiddy_Introduction:: @ 81B092A
.string "I’m GIDDY!\n"
.string "I have a scintillating story for you!\p"
.string "Would you like to hear my story?$"
-MauvilleCity_PokemonCenter_1F_Text_1B097C:: @ 81B097C
+gTextGiddy_YouveDeflatedMe:: @ 81B097C
.string "Oh...\n"
.string "You’ve deflated me...$"
-MauvilleCity_PokemonCenter_1F_Text_1B0998:: @ 81B0998
+gTextGiddy_AlsoIWasThinking:: @ 81B0998
.string "Also, I was thinking...$"
-MauvilleCity_PokemonCenter_1F_Text_1B09B0:: @ 81B09B0
+gTextGiddy_ByeBye:: @ 81B09B0
.string "That’s about it, I think...\p"
.string "We should chat again!\n"
.string "Bye-bye!$"
diff --git a/data/text/hipster.inc b/data/text/hipster.inc
index a30943d3a..630db02b2 100644
--- a/data/text/hipster.inc
+++ b/data/text/hipster.inc
@@ -1,19 +1,19 @@
-MauvilleCity_PokemonCenter_1F_Text_1B0C5B:: @ 81B0C5B
+gTextHipster_TheyCallMeTheHipster:: @ 81B0C5B
.string "Hey, yo! They call me the HIPSTER.\n"
.string "I’ll teach you what’s hip and happening.$"
-MauvilleCity_PokemonCenter_1F_Text_1B0CA7:: @ 81B0CA7
+gTextHipster_TaughtYouAlready:: @ 81B0CA7
.string "But, hey, I taught you what’s hip and\n"
.string "happening already.\p"
.string "I’d like to spread the good word to\n"
.string "other folks.$"
-MauvilleCity_PokemonCenter_1F_Text_1B0D11:: @ 81B0D11
+gTextHipster_YouAlreadyKnowALot:: @ 81B0D11
.string "But, hey, you already know a lot about\n"
.string "what’s hip and happening.\p"
.string "I’ve got nothing new to teach you!$"
-MauvilleCity_PokemonCenter_1F_Text_1B0D75:: @ 81B0D75
+gTextHipster_HaveYouHeardAbout:: @ 81B0D75
.string "Hey, have you heard about\n"
.string "“{STR_VAR_1}”?\p"
.string "What’s it mean? Well...\n"
diff --git a/data/text/storyteller.inc b/data/text/storyteller.inc
index 3cfa8a698..437a1fa21 100644
--- a/data/text/storyteller.inc
+++ b/data/text/storyteller.inc
@@ -1,24 +1,24 @@
-MauvilleCity_PokemonCenter_1F_Text_1AECC6:: @ 81AECC6
+gTextStoryteller_Introduction:: @ 81AECC6
.string "I’m the STORYTELLER.\n"
.string "I’ll tell you tales of legendary\l"
.string "TRAINERS.\p"
.string "Will you hear my tale?$"
-MauvilleCity_PokemonCenter_1F_Text_1AED1D:: @ 81AED1D
+gTextStoryteller_OhIFeelStifled:: @ 81AED1D
.string "Oh...\n"
.string "I feel stifled...$"
-MauvilleCity_PokemonCenter_1F_Text_1AED35:: @ 81AED35
+gTextStoryteller_WhichTale:: @ 81AED35
.string "I know of these legends.\n"
.string "Which tale will you have me tell?$"
-MauvilleCity_PokemonCenter_1F_Text_1AED70:: @ 81AED70
+gTextStoryteller_ButIKnowOfNoLegendaryTrainers:: @ 81AED70
.string "But, I know of no legendary TRAINERS.\n"
.string "Hence, I know no tales.\p"
.string "Where does one find a TRAINER worthy\n"
.string "of a legendary tale?$"
-MauvilleCity_PokemonCenter_1F_Text_1AEDE8:: @ 81AEDE8
+gTextStoryteller_BirthOfANewLegend:: @ 81AEDE8
.string "What’s that?!\n"
.string "You... You...\p"
.string "{STR_VAR_2}\n"
@@ -26,38 +26,38 @@ MauvilleCity_PokemonCenter_1F_Text_1AEDE8:: @ 81AEDE8
.string "That is indeed magnificent!\n"
.string "It’s the birth of a new legend!$"
-MauvilleCity_PokemonCenter_1F_Text_1AEE50:: @ 81AEE50
+gTextStoryteller_CouldThereBeOtherTrainers:: @ 81AEE50
.string "It gets me thinking, could there be\n"
.string "other TRAINERS with more impressive\l"
.string "legends awaiting discovery?$"
-MauvilleCity_PokemonCenter_1F_Text_1AEEB4:: @ 81AEEB4
+gTextStoryteller_HaveYouAnyTales:: @ 81AEEB4
.string "Are you a TRAINER?\p"
.string "Then tell me, have you any tales that\n"
.string "are even remotely legendary?$"
-MauvilleCity_PokemonCenter_1F_Text_1AEF0A:: @ 81AEF0A
+gTextStoryteller_HearAnotherLegendaryTale:: @ 81AEF0A
.string "Incidentally... Would you care to hear\n"
.string "another legendary tale?$"
-MauvilleCity_PokemonCenter_1F_Text_1AEF49:: @ 81AEF49
+gTextStoryteller_ImNotSatisfied:: @ 81AEF49
.string "Hmm...\n"
.string "I’m not satisfied...\p"
.string "I wish you would bring me news worthy\n"
.string "of being called a legend.$"
-MauvilleCity_PokemonCenter_1F_Text_1AEFA5:: @ 81AEFA5
+gTextStoryteller_WishMorePeopleWould:: @ 81AEFA5
.string "I wish more people would be interested\n"
.string "in hearing my epic tales of legendary\l"
.string "TRAINERS.$"
-UnknownString_81AEFFC:: @ 81AEFFC
+gTextStoryteller_Story1Title:: @ 81AEFFC
.string "The Save-Happy TRAINER$"
-UnknownString_81AF013:: @ 81AF013
+gTextStoryteller_Story1Action:: @ 81AF013
.string "Saved the game$"
-UnknownString_81AF022:: @ 81AF022
+gTextStoryteller_Story1Text:: @ 81AF022
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER saved the game\n"
@@ -65,13 +65,13 @@ UnknownString_81AF022:: @ 81AF022
.string "A more cautious TRAINER than\n"
.string "{STR_VAR_3} one will never find!$"
-UnknownString_81AF0A3:: @ 81AF0A3
+gTextStoryteller_Story2Title:: @ 81AF0A3
.string "The Trendsetter TRAINER$"
-UnknownString_81AF0BB:: @ 81AF0BB
+gTextStoryteller_Story2Action:: @ 81AF0BB
.string "Started trends$"
-UnknownString_81AF0CA:: @ 81AF0CA
+gTextStoryteller_Story2Text:: @ 81AF0CA
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER started new trends\n"
@@ -79,13 +79,13 @@ UnknownString_81AF0CA:: @ 81AF0CA
.string "{STR_VAR_3} is setting trends for all\n"
.string "the HOENN region!$"
-UnknownString_81AF149:: @ 81AF149
+gTextStoryteller_Story3Title:: @ 81AF149
.string "The BERRY-Planting TRAINER$"
-UnknownString_81AF164:: @ 81AF164
+gTextStoryteller_Story3Action:: @ 81AF164
.string "Planted BERRIES$"
-UnknownString_81AF174:: @ 81AF174
+gTextStoryteller_Story3Text:: @ 81AF174
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER planted BERRIES\n"
@@ -93,13 +93,13 @@ UnknownString_81AF174:: @ 81AF174
.string "{STR_VAR_3} is a legendary lover of\n"
.string "BERRIES!$"
-UnknownString_81AF1E5:: @ 81AF1E5
+gTextStoryteller_Story4Title:: @ 81AF1E5
.string "The BIKE-Loving TRAINER$"
-UnknownString_81AF1FD:: @ 81AF1FD
+gTextStoryteller_Story4Action:: @ 81AF1FD
.string "Traded BIKES$"
-UnknownString_81AF20A:: @ 81AF20A
+gTextStoryteller_Story4Text:: @ 81AF20A
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER swapped BIKES\n"
@@ -107,13 +107,13 @@ UnknownString_81AF20A:: @ 81AF20A
.string "{STR_VAR_3} must love BIKES deeply\n"
.string "and passionately!$"
-UnknownString_81AF281:: @ 81AF281
+gTextStoryteller_Story5Title:: @ 81AF281
.string "The Interviewed TRAINER$"
-UnknownString_81AF299:: @ 81AF299
+gTextStoryteller_Story5Action:: @ 81AF299
.string "Got interviewed$"
-UnknownString_81AF2A9:: @ 81AF2A9
+gTextStoryteller_Story5Text:: @ 81AF2A9
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER got interviewed\n"
@@ -121,26 +121,26 @@ UnknownString_81AF2A9:: @ 81AF2A9
.string "{STR_VAR_3} must be a TRAINER who’s\n"
.string "attracting much attention!$"
-UnknownString_81AF32C:: @ 81AF32C
+gTextStoryteller_Story6Title:: @ 81AF32C
.string "The Battle-Happy TRAINER$"
-UnknownString_81AF345:: @ 81AF345
+gTextStoryteller_Story6Action:: @ 81AF345
.string "Battled$"
-UnknownString_81AF34D:: @ 81AF34D
+gTextStoryteller_Story6Text:: @ 81AF34D
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER battled {STR_VAR_1} times!\p"
.string "{STR_VAR_3} must be a TRAINER who can\n"
.string "never refuse a chance to battle!$"
-UnknownString_81AF3D0:: @ 81AF3D0
+gTextStoryteller_Story7Title:: @ 81AF3D0
.string "The POKéMON-Catching TRAINER$"
-UnknownString_81AF3ED:: @ 81AF3ED
+gTextStoryteller_Story7Action:: @ 81AF3ED
.string "Caught POKéMON$"
-UnknownString_81AF3FC:: @ 81AF3FC
+gTextStoryteller_Story7Text:: @ 81AF3FC
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER caught\n"
@@ -148,13 +148,13 @@ UnknownString_81AF3FC:: @ 81AF3FC
.string "{STR_VAR_3} is a legendary catcher of\n"
.string "wild POKéMON!$"
-UnknownString_81AF46D:: @ 81AF46D
+gTextStoryteller_Story8Title:: @ 81AF46D
.string "The Fishing TRAINER$"
-UnknownString_81AF481:: @ 81AF481
+gTextStoryteller_Story8Action:: @ 81AF481
.string "Caught POKéMON with a ROD$"
-UnknownString_81AF49B:: @ 81AF49B
+gTextStoryteller_Story8Text:: @ 81AF49B
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER caught\n"
@@ -162,13 +162,13 @@ UnknownString_81AF49B:: @ 81AF49B
.string "{STR_VAR_3} is a legendary fishing\n"
.string "expert!$"
-UnknownString_81AF511:: @ 81AF511
+gTextStoryteller_Story9Title:: @ 81AF511
.string "The EGG-Warming TRAINER$"
-UnknownString_81AF529:: @ 81AF529
+gTextStoryteller_Story9Action:: @ 81AF529
.string "Hatched EGGS$"
-UnknownString_81AF536:: @ 81AF536
+gTextStoryteller_Story9Text:: @ 81AF536
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER hatched {STR_VAR_1} POKéMON\n"
@@ -176,13 +176,13 @@ UnknownString_81AF536:: @ 81AF536
.string "{STR_VAR_3} is a legendary warmer\n"
.string "of EGGS!$"
-UnknownString_81AF5A9:: @ 81AF5A9
+gTextStoryteller_Story10Title:: @ 81AF5A9
.string "The Evolver TRAINER$"
-UnknownString_81AF5BD:: @ 81AF5BD
+gTextStoryteller_Story10Action:: @ 81AF5BD
.string "Evolved POKéMON$"
-UnknownString_81AF5CD:: @ 81AF5CD
+gTextStoryteller_Story10Text:: @ 81AF5CD
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER made {STR_VAR_1} POKéMON\n"
@@ -190,13 +190,13 @@ UnknownString_81AF5CD:: @ 81AF5CD
.string "{STR_VAR_3} is the ultimate evolver\n"
.string "of POKéMON!$"
-UnknownString_81AF63F:: @ 81AF63F
+gTextStoryteller_Story11Title:: @ 81AF63F
.string "The POKéMON CENTER-Loving TRAINER$"
-UnknownString_81AF661:: @ 81AF661
+gTextStoryteller_Story11Action:: @ 81AF661
.string "Used POKéMON CENTERS$"
-UnknownString_81AF676:: @ 81AF676
+gTextStoryteller_Story11Text:: @ 81AF676
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER healed POKéMON\n"
@@ -204,13 +204,13 @@ UnknownString_81AF676:: @ 81AF676
.string "There could be no greater lover of\n"
.string "POKéMON CENTERS than {STR_VAR_3}!$"
-UnknownString_81AF711:: @ 81AF711
+gTextStoryteller_Story12Title:: @ 81AF711
.string "The Homebody TRAINER$"
-UnknownString_81AF726:: @ 81AF726
+gTextStoryteller_Story12Action:: @ 81AF726
.string "Rested POKéMON at home$"
-UnknownString_81AF73D:: @ 81AF73D
+gTextStoryteller_Story12Text:: @ 81AF73D
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER healed POKéMON\n"
@@ -218,13 +218,13 @@ UnknownString_81AF73D:: @ 81AF73D
.string "There could be no more of a homebody\n"
.string "than {STR_VAR_3}!$"
-UnknownString_81AF7BF:: @ 81AF7BF
+gTextStoryteller_Story13Title:: @ 81AF7BF
.string "The SAFARI-Loving TRAINER$"
-UnknownString_81AF7D9:: @ 81AF7D9
+gTextStoryteller_Story13Action:: @ 81AF7D9
.string "Entered the SAFARI ZONE$"
-UnknownString_81AF7F1:: @ 81AF7F1
+gTextStoryteller_Story13Text:: @ 81AF7F1
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER went into the SAFARI ZONE\n"
@@ -232,13 +232,13 @@ UnknownString_81AF7F1:: @ 81AF7F1
.string "{STR_VAR_3} is a TRAINER whose wild side\n"
.string "must come out in the SAFARI ZONE!$"
-UnknownString_81AF88A:: @ 81AF88A
+gTextStoryteller_Story14Title:: @ 81AF88A
.string "The CUT-Frenzy TRAINER$"
-UnknownString_81AF8A1:: @ 81AF8A1
+gTextStoryteller_Story14Action:: @ 81AF8A1
.string "Used CUT$"
-UnknownString_81AF8AA:: @ 81AF8AA
+gTextStoryteller_Story14Text:: @ 81AF8AA
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER used CUT\n"
@@ -246,13 +246,13 @@ UnknownString_81AF8AA:: @ 81AF8AA
.string "{STR_VAR_3} is a TRAINER who just must\n"
.string "love to CUT!$"
-UnknownString_81AF91B:: @ 81AF91B
+gTextStoryteller_Story15Title:: @ 81AF91B
.string "The ROCK-SMASHING TRAINER$"
-UnknownString_81AF935:: @ 81AF935
+gTextStoryteller_Story15Action:: @ 81AF935
.string "Smashed rocks$"
-UnknownString_81AF943:: @ 81AF943
+gTextStoryteller_Story15Text:: @ 81AF943
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER used ROCK SMASH\n"
@@ -260,13 +260,13 @@ UnknownString_81AF943:: @ 81AF943
.string "{STR_VAR_3} must be a TRAINER who\n"
.string "can’t leave a stone unsmashed!$"
-UnknownString_81AF9C8:: @ 81AF9C8
+gTextStoryteller_Story16Title:: @ 81AF9C8
.string "The Move-Loving TRAINER$"
-UnknownString_81AF9E0:: @ 81AF9E0
+gTextStoryteller_Story16Action:: @ 81AF9E0
.string "Moved the SECRET BASE$"
-UnknownString_81AF9F6:: @ 81AF9F6
+gTextStoryteller_Story16Text:: @ 81AF9F6
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER moved the SECRET BASE\n"
@@ -274,13 +274,13 @@ UnknownString_81AF9F6:: @ 81AF9F6
.string "{STR_VAR_3} is a TRAINER who loves\n"
.string "to move houses often!$"
-UnknownString_81AFA79:: @ 81AFA79
+gTextStoryteller_Story17Title:: @ 81AFA79
.string "The SPLASH-Happy TRAINER$"
-UnknownString_81AFA92:: @ 81AFA92
+gTextStoryteller_Story17Action:: @ 81AFA92
.string "Used SPLASH$"
-UnknownString_81AFA9E:: @ 81AFA9E
+gTextStoryteller_Story17Text:: @ 81AFA9E
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER used SPLASH\n"
@@ -288,13 +288,13 @@ UnknownString_81AFA9E:: @ 81AFA9E
.string "{STR_VAR_3} is a TRAINER who must love\n"
.string "SPLASHING around!$"
-UnknownString_81AFB17:: @ 81AFB17
+gTextStoryteller_Story18Title:: @ 81AFB17
.string "The Tenacious TRAINER$"
-UnknownString_81AFB2D:: @ 81AFB2D
+gTextStoryteller_Story18Action:: @ 81AFB2D
.string "Resorted to using STRUGGLE$"
-UnknownString_81AFB48:: @ 81AFB48
+gTextStoryteller_Story18Text:: @ 81AFB48
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER had to rely on STRUGGLE\n"
@@ -302,13 +302,13 @@ UnknownString_81AFB48:: @ 81AFB48
.string "{STR_VAR_3} is a tenacious TRAINER\n"
.string "who never gives in to adversity!$"
-UnknownString_81AFBD8:: @ 81AFBD8
+gTextStoryteller_Story19Title:: @ 81AFBD8
.string "The SLOT Champ$"
-UnknownString_81AFBE7:: @ 81AFBE7
+gTextStoryteller_Story19Action:: @ 81AFBE7
.string "Won the jackpot on the SLOTS$"
-UnknownString_81AFC04:: @ 81AFC04
+gTextStoryteller_Story19Text:: @ 81AFC04
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER won the jackpot on\n"
@@ -316,13 +316,13 @@ UnknownString_81AFC04:: @ 81AFC04
.string "{STR_VAR_3} is a TRAINER who was lucky\n"
.string "on the SLOTS!$"
-UnknownString_81AFC8A:: @ 81AFC8A
+gTextStoryteller_Story20Title:: @ 81AFC8A
.string "The ROULETTE Champ$"
-UnknownString_81AFC9D:: @ 81AFC9D
+gTextStoryteller_Story20Action:: @ 81AFC9D
.string "Had consecutive ROULETTE wins of$"
-UnknownString_81AFCBE:: @ 81AFCBE
+gTextStoryteller_Story20Text:: @ 81AFCBE
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER won in ROULETTE\n"
@@ -330,13 +330,13 @@ UnknownString_81AFCBE:: @ 81AFCBE
.string "{STR_VAR_3} was lucky when the ball\n"
.string "bounced in ROULETTE!$"
-UnknownString_81AFD44:: @ 81AFD44
+gTextStoryteller_Story21Title:: @ 81AFD44
.string "The BATTLE TOWER Challenger$"
-UnknownString_81AFD60:: @ 81AFD60
+gTextStoryteller_Story21Action:: @ 81AFD60
.string "Took the BATTLE TOWER challenge$"
-UnknownString_81AFD80:: @ 81AFD80
+gTextStoryteller_Story21Text:: @ 81AFD80
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER took the BATTLE TOWER\n"
@@ -344,13 +344,13 @@ UnknownString_81AFD80:: @ 81AFD80
.string "{STR_VAR_3} is a TRAINER who aspires\n"
.string "for excellence in the BATTLE TOWER!$"
-UnknownString_81AFE1D:: @ 81AFE1D
+gTextStoryteller_Story22Title:: @ 81AFE1D
.string "The Blend-Loving TRAINER$"
-UnknownString_81AFE36:: @ 81AFE36
+gTextStoryteller_Story22Action:: @ 81AFE36
.string "Made {POKEBLOCK}S$"
-UnknownString_81AFE42:: @ 81AFE42
+gTextStoryteller_Story22Text:: @ 81AFE42
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER made {POKEBLOCK}S\n"
@@ -358,13 +358,13 @@ UnknownString_81AFE42:: @ 81AFE42
.string "There is none better at using a BERRY\n"
.string "BLENDER than {STR_VAR_3}!$"
-UnknownString_81AFEC2:: @ 81AFEC2
+gTextStoryteller_Story23Title:: @ 81AFEC2
.string "The CONTEST-Loving TRAINER$"
-UnknownString_81AFEDD:: @ 81AFEDD
+gTextStoryteller_Story23Action:: @ 81AFEDD
.string "Entered CONTESTS$"
-UnknownString_81AFEEE:: @ 81AFEEE
+gTextStoryteller_Story23Text:: @ 81AFEEE
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER entered CONTESTS\n"
@@ -372,13 +372,13 @@ UnknownString_81AFEEE:: @ 81AFEEE
.string "{STR_VAR_3} must love showing off\n"
.string "POKéMON to others!$"
-UnknownString_81AFF68:: @ 81AFF68
+gTextStoryteller_Story24Title:: @ 81AFF68
.string "The CONTEST Master$"
-UnknownString_81AFF7B:: @ 81AFF7B
+gTextStoryteller_Story24Action:: @ 81AFF7B
.string "Won CONTESTS$"
-UnknownString_81AFF88:: @ 81AFF88
+gTextStoryteller_Story24Text:: @ 81AFF88
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER won CONTESTS\n"
@@ -386,13 +386,13 @@ UnknownString_81AFF88:: @ 81AFF88
.string "{STR_VAR_3} must be an incredible\n"
.string "CONTEST master!$"
-UnknownString_81AFFFB:: @ 81AFFFB
+gTextStoryteller_Story25Title:: @ 81AFFFB
.string "The Happy Shopper$"
-UnknownString_81B000D:: @ 81B000D
+gTextStoryteller_Story25Action:: @ 81B000D
.string "Shopped$"
-UnknownString_81B0015:: @ 81B0015
+gTextStoryteller_Story25Text:: @ 81B0015
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER bought items in shops\n"
@@ -400,13 +400,13 @@ UnknownString_81B0015:: @ 81B0015
.string "{STR_VAR_3} must be one of those\n"
.string "people who are born to shop.$"
-UnknownString_81B009D:: @ 81B009D
+gTextStoryteller_Story26Title:: @ 81B009D
.string "The Item-Finding TRAINER$"
-UnknownString_81B00B6:: @ 81B00B6
+gTextStoryteller_Story26Action:: @ 81B00B6
.string "Used an ITEMFINDER$"
-UnknownString_81B00C9:: @ 81B00C9
+gTextStoryteller_Story26Text:: @ 81B00C9
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER used an ITEMFINDER\n"
@@ -414,13 +414,13 @@ UnknownString_81B00C9:: @ 81B00C9
.string "{STR_VAR_3} must enjoy scouring the\n"
.string "ground for hidden items!$"
-UnknownString_81B014D:: @ 81B014D
+gTextStoryteller_Story27Title:: @ 81B014D
.string "The Rain-Soaked TRAINER$"
-UnknownString_81B0165:: @ 81B0165
+gTextStoryteller_Story27Action:: @ 81B0165
.string "Got rained on$"
-UnknownString_81B0173:: @ 81B0173
+gTextStoryteller_Story27Text:: @ 81B0173
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER got soaked by rain\n"
@@ -428,13 +428,13 @@ UnknownString_81B0173:: @ 81B0173
.string "{STR_VAR_3}’s charisma must even\n"
.string "attract rain!$"
-UnknownString_81B01E9:: @ 81B01E9
+gTextStoryteller_Story28Title:: @ 81B01E9
.string "The Avid POKéDEX Reader$"
-UnknownString_81B0201:: @ 81B0201
+gTextStoryteller_Story28Action:: @ 81B0201
.string "Checked a POKéDEX$"
-UnknownString_81B0213:: @ 81B0213
+gTextStoryteller_Story28Text:: @ 81B0213
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER checked a POKéDEX\n"
@@ -442,13 +442,13 @@ UnknownString_81B0213:: @ 81B0213
.string "{STR_VAR_3} must love inspecting\n"
.string "POKéMON in a POKéDEX!$"
-UnknownString_81B0290:: @ 81B0290
+gTextStoryteller_Story29Title:: @ 81B0290
.string "The RIBBON Collector$"
-UnknownString_81B02A5:: @ 81B02A5
+gTextStoryteller_Story29Action:: @ 81B02A5
.string "Received RIBBONS$"
-UnknownString_81B02B6:: @ 81B02B6
+gTextStoryteller_Story29Text:: @ 81B02B6
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER received RIBBONS\n"
@@ -456,13 +456,13 @@ UnknownString_81B02B6:: @ 81B02B6
.string "{STR_VAR_3} must be a TRAINER who\n"
.string "loves to collect RIBBONS!$"
-UnknownString_81B0337:: @ 81B0337
+gTextStoryteller_Story30Title:: @ 81B0337
.string "The Ledge-Jumping TRAINER$"
-UnknownString_81B0351:: @ 81B0351
+gTextStoryteller_Story30Action:: @ 81B0351
.string "Jumped down ledges$"
-UnknownString_81B0364:: @ 81B0364
+gTextStoryteller_Story30Text:: @ 81B0364
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER jumped down ledges\n"
@@ -470,26 +470,26 @@ UnknownString_81B0364:: @ 81B0364
.string "If there’s a ledge to be jumped,\n"
.string "{STR_VAR_3} can’t ignore it!$"
-UnknownString_81B03E9:: @ 81B03E9
+gTextStoryteller_Story31Title:: @ 81B03E9
.string "The Legendary TV Viewer$"
-UnknownString_81B0401:: @ 81B0401
+gTextStoryteller_Story31Action:: @ 81B0401
.string "Watched TV$"
-UnknownString_81B040C:: @ 81B040C
+gTextStoryteller_Story31Text:: @ 81B040C
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER watched TV\n"
.string "{STR_VAR_1} times!\p"
.string "{STR_VAR_3} must love watching TV!$"
-UnknownString_81B046E:: @ 81B046E
+gTextStoryteller_Story32Title:: @ 81B046E
.string "The Time-Conscious TRAINER$"
-UnknownString_81B0489:: @ 81B0489
+gTextStoryteller_Story32Action:: @ 81B0489
.string "Checked the time$"
-UnknownString_81B049A:: @ 81B049A
+gTextStoryteller_Story32Text:: @ 81B049A
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER checked the time\n"
@@ -497,13 +497,13 @@ UnknownString_81B049A:: @ 81B049A
.string "{STR_VAR_3} must be a punctual TRAINER\n"
.string "who’s conscious of the time.$"
-UnknownString_81B0523:: @ 81B0523
+gTextStoryteller_Story33Title:: @ 81B0523
.string "The POKéMON LOTTERY Wizard$"
-UnknownString_81B053E:: @ 81B053E
+gTextStoryteller_Story33Action:: @ 81B053E
.string "Won POKéMON LOTTERIES$"
-UnknownString_81B0554:: @ 81B0554
+gTextStoryteller_Story33Text:: @ 81B0554
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER won POKéMON LOTTERIES\n"
@@ -511,13 +511,13 @@ UnknownString_81B0554:: @ 81B0554
.string "{STR_VAR_3} must have many friends\n"
.string "to trade POKéMON with!$"
-UnknownString_81B05D8:: @ 81B05D8
+gTextStoryteller_Story34Title:: @ 81B05D8
.string "The DAY CARE-Using Trainer$"
-UnknownString_81B05F3:: @ 81B05F3
+gTextStoryteller_Story34Action:: @ 81B05F3
.string "Left POKéMON at the DAY CARE$"
-UnknownString_81B0610:: @ 81B0610
+gTextStoryteller_Story34Text:: @ 81B0610
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER left POKéMON with the\n"
@@ -525,13 +525,13 @@ UnknownString_81B0610:: @ 81B0610
.string "{STR_VAR_3} must be a real go-getter\n"
.string "who raises POKéMON aggressively!$"
-UnknownString_81B06A9:: @ 81B06A9
+gTextStoryteller_Story35Title:: @ 81B06A9
.string "The CABLE CAR-Loving TRAINER$"
-UnknownString_81B06C6:: @ 81B06C6
+gTextStoryteller_Story35Action:: @ 81B06C6
.string "Rode the CABLE CAR$"
-UnknownString_81B06D9:: @ 81B06D9
+gTextStoryteller_Story35Text:: @ 81B06D9
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER rode the CABLE CAR\n"
@@ -539,13 +539,13 @@ UnknownString_81B06D9:: @ 81B06D9
.string "{STR_VAR_3} must be a busy TRAINER\n"
.string "who’s up and down all the time!$"
-UnknownString_81B0763:: @ 81B0763
+gTextStoryteller_Story36Title:: @ 81B0763
.string "The Hot Spring-Loving TRAINER$"
-UnknownString_81B0781:: @ 81B0781
+gTextStoryteller_Story36Action:: @ 81B0781
.string "Bathed in hot springs$"
-UnknownString_81B0797:: @ 81B0797
+gTextStoryteller_Story36Text:: @ 81B0797
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER bathed in hot springs\n"
diff --git a/data/text/trader.inc b/data/text/trader.inc
index dba63bcf8..599344091 100644
--- a/data/text/trader.inc
+++ b/data/text/trader.inc
@@ -1,57 +1,57 @@
-MauvilleCity_PokemonCenter_1F_Text_1AE88F:: @ 81AE88F
+gTextTrader_Introduction:: @ 81AE88F
.string "Hi, I’m the TRADER.\n"
.string "Want to trade decorations with me?$"
-MauvilleCity_PokemonCenter_1F_Text_1AE8C6:: @ 81AE8C6
+gTextTrader_FeelUnwanted1:: @ 81AE8C6
.string "Oh...\n"
.string "I feel unwanted...$"
-MauvilleCity_PokemonCenter_1F_Text_1AE8DF:: @ 81AE8DF
+gTextTrader_TradedAlready:: @ 81AE8DF
.string "But we’ve traded decorations already,\n"
.string "you and I.$"
-MauvilleCity_PokemonCenter_1F_Text_1AE910:: @ 81AE910
+gTextTrader_MenuPrompt:: @ 81AE910
.string "If you see any decorative item that\n"
.string "you want of mine, speak up.$"
-MauvilleCity_PokemonCenter_1F_Text_1AE950:: @ 81AE950
+gTextTrader_DontWantAnything:: @ 81AE950
.string "You don’t want anything?\n"
.string "I feel unwanted...$"
-MauvilleCity_PokemonCenter_1F_Text_1AE97C:: @ 81AE97C
+gTextTrader_ItemOnceBelongedTo:: @ 81AE97C
.string "That decorative item once belonged\n"
.string "to {STR_VAR_1}.\p"
.string "Do you want it?$"
-MauvilleCity_PokemonCenter_1F_Text_1AE9B6:: @ 81AE9B6
+gTextTrader_YouDontHaveDecorations:: @ 81AE9B6
.string "Uh... Wait a second. You don’t have a\n"
.string "single piece of decoration!$"
-MauvilleCity_PokemonCenter_1F_Text_1AE9F8:: @ 81AE9F8
+gTextTrader_PickDecorationYoullTrade:: @ 81AE9F8
.string "Okay, pick the decoration that you’ll\n"
.string "trade to me.$"
-MauvilleCity_PokemonCenter_1F_Text_1AEA2B:: @ 81AEA2B
+gTextTrader_FeelUnwanted2:: @ 81AEA2B
.string "You won’t trade with me?\n"
.string "I feel unwanted...$"
-MauvilleCity_PokemonCenter_1F_Text_1AEA57:: @ 81AEA57
+gTextTrader_NoRoomForThis:: @ 81AEA57
.string "You’ve got all the {STR_VAR_2}S that can\n"
.string "be stored. You’ve no room for this.$"
-MauvilleCity_PokemonCenter_1F_Text_1AEA9B:: @ 81AEA9B
+gTextTrader_SoWellTrade:: @ 81AEA9B
.string "Okay, so we’ll trade my {STR_VAR_3}\n"
.string "for your {STR_VAR_2}?$"
-MauvilleCity_PokemonCenter_1F_Text_1AEAC3:: @ 81AEAC3
+gTextTrader_InUseYouCantTradeIt:: @ 81AEAC3
.string "That piece of decoration is in use.\n"
.string "You can’t trade it.$"
-MauvilleCity_PokemonCenter_1F_Text_1AEAFB:: @ 81AEAFB
+gTextTrader_ThenWellTrade:: @ 81AEAFB
.string "Then we’ll trade!\n"
.string "I’ll send my decoration to your PC.$"
-MauvilleCity_PokemonCenter_1F_Text_1AEB31:: @ 81AEB31
+gTextTrader_ICantTradeThatOneAway:: @ 81AEB31
.string "Oops! Sorry!\n"
.string "That’s a really rare piece of decoration.\l"
.string "I can’t trade that one away!\p"
diff --git a/data/trainer_see.s b/data/trainer_see.s
index 57eeae061..04a787f0c 100644
--- a/data/trainer_see.s
+++ b/data/trainer_see.s
@@ -4,47 +4,6 @@
.section .rodata
.align 2
-gSpriteImage_839B308:: @ 839B308
- .incbin "graphics/unknown_sprites/839B4E0/0.4bpp"
-
- .align 2
-gSpriteImage_839B388:: @ 839B388
- .incbin "graphics/unknown_sprites/839B4E0/1.4bpp"
-
- .align 2
-gSpriteImage_839B408:: @ 839B408
- .incbin "graphics/unknown_sprites/839B408.4bpp"
-
- .align 2
-gIsTrainerInRange:: @ 839B488
- .4byte IsTrainerInRangeSouth
- .4byte IsTrainerInRangeNorth
- .4byte IsTrainerInRangeWest
- .4byte IsTrainerInRangeEast
-
- .align 2
-gTrainerSeeFuncList:: @ 839B498
- .4byte sub_8084394
- .4byte sub_8084398
- .4byte sub_80843DC
- .4byte sub_808441C
- .4byte sub_8084478
- .4byte sub_8084534
- .4byte sub_8084578
- .4byte sub_80845AC
- .4byte sub_80845C8
- .4byte sub_80845FC
- .4byte sub_8084654
- .4byte sub_80846C8
-
- .align 2
-gTrainerSeeFuncList2:: @ 839B4C8
- .4byte sub_80845C8
- .4byte sub_80845FC
- .4byte sub_8084654
- .4byte sub_80846C8
-
- .align 2
gOamData_839B4D8:: @ 839B4D8
.2byte 0x0000
.2byte 0x4000
diff --git a/include/bard_music.h b/include/bard_music.h
new file mode 100644
index 000000000..529fd50f8
--- /dev/null
+++ b/include/bard_music.h
@@ -0,0 +1,31 @@
+#ifndef GUARD_BARD_MUSIC_H
+#define GUARD_BARD_MUSIC_H
+
+struct BardSound;
+
+struct BardPhoneme
+{
+ /*0x00*/ u16 sound;
+ /*0x02*/ u16 length;
+ /*0x04*/ s16 pitch;
+ /*0x06*/ u16 volume;
+};
+
+struct BardSong
+{
+ /*0x00*/ u8 currWord;
+ /*0x01*/ u8 currPhoneme;
+ /*0x02*/ u8 phonemeTimer;
+ /*0x03*/ u8 state;
+ /*0x04*/ s16 var04;
+ /*0x06*/ u16 volume;
+ /*0x08*/ s16 pitch;
+ /*0x0A*/ s16 voiceInflection;
+ /*0x0C*/ u16 lyrics[6];
+ /*0x18*/ struct BardPhoneme phonemes[6];
+};
+
+const struct BardSound *GetWordSounds(u16 arg0, u16 arg1);
+s32 GetWordPhonemes(struct BardSong *dest, const struct BardSound *src, u16 arg2);
+
+#endif // GUARD_BARD_MUSIC_H
diff --git a/include/battle.h b/include/battle.h
index 495432259..2b6773660 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -19,6 +19,15 @@
#define BATTLE_TYPE_LEGENDARY 0x2000
#define BATTLE_TYPE_REGI 0x4000
+#define BATTLE_WON 0x1
+#define BATTLE_LOST 0x2
+#define BATTLE_DREW 0x3
+#define BATTLE_RAN 0x4
+#define BATTLE_PLAYER_TELEPORTED 0x5
+#define BATTLE_POKE_FLED 0x6
+#define BATTLE_CAUGHT 0x7
+#define BATTLE_OPPONENT_TELEPORTED 0xA
+
#define AI_ACTION_DONE 0x0001
#define AI_ACTION_FLEE 0x0002
#define AI_ACTION_WATCH 0x0004
@@ -164,6 +173,20 @@
#define WEATHER_SUN_ANY ((WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT))
#define WEATHER_HAIL (1 << 7)
+enum
+{
+ BATTLE_TERRAIN_GRASS,
+ BATTLE_TERRAIN_LONG_GRASS,
+ BATTLE_TERRAIN_SAND,
+ BATTLE_TERRAIN_UNDERWATER,
+ BATTLE_TERRAIN_WATER,
+ BATTLE_TERRAIN_POND,
+ BATTLE_TERRAIN_MOUNTAIN,
+ BATTLE_TERRAIN_CAVE,
+ BATTLE_TERRAIN_BUILDING,
+ BATTLE_TERRAIN_PLAIN,
+};
+
// needed to match the hack that is get_item, thanks cam, someone else clean this up later.
extern u8 unk_2000000[];
@@ -326,7 +349,7 @@ struct BattleStruct /* 0x2000000 */
/*0x1609D*/ u8 unk1609D;
/*0x1609E*/ u8 unk1609E;
/*0x1609F*/ u8 unk1609F;
- /*0x160A0*/ u8 unk160a0;
+ /*0x160A0*/ u8 stringMoveType;
/*0x160A1*/ u8 animTargetsHit;
/*0x160A2*/ u8 expGetterBank;
/*0x160A3*/ u8 unk160A3;
@@ -510,12 +533,12 @@ struct BattleResults
struct Struct2017800
{
- u8 unk0_0:1;
+ u8 invisible:1;
u8 unk0_1:1;
- u8 unk0_2:1;
+ u8 substituteSprite:1;
u8 unk0_3:1;
u8 unk0_4:1;
- u16 unk2;
+ u16 transformedSpecies;
};
struct Struct2017810
@@ -679,13 +702,13 @@ extern u8 gBattleTextBuff1[];
//function declarations of buffer emits
void EmitGetAttributes(u8 buffID, u8 request, u8 c); //0x0
-void dp01_build_cmdbuf_x01_a_b_0(u8 a, u8 b, u8 c); //0x1
+void Emitcmd1(u8 a, u8 b, u8 c); //0x1
void EmitSetAttributes(u8 a, u8 request, u8 c, u8 bytes, void *data); //0x2
-void EmitSwitchInAnim(u8 a, u8 b, u8 c); //0x5
+void EmitSendOutPoke(u8 a, u8 b, u8 c); //0x5
void EmitReturnPokeToBall(u8 a, u8 b); //0x6
void EmitTrainerSlide(u8 a); //0x8
-void EmitFaintAnimation(u8 a); //0xA
-void EmitBallThrowAnim(u8 a, u8 shakes); //0xD
+void Emitcmd10(u8 a); //0xA
+void EmitBallThrow(u8 a, u8 shakes); //0xD
//void EmitMoveAnimation(u8 a, u16 move, u8 turn, u16 power, s32 dmg, u8 happiness, void *disable_struct); //0xF
void EmitPrintString(u8 a, u16 stringID); //0x10
//void EmitPrintStringPlayerOnly(u8 a, u16 stringID); //0x11
@@ -697,15 +720,15 @@ void EmitStatusAnimation(u8 a, u8 b, u32 c); //0x1B
void EmitStatusXor(u8 a, u8 b); //0x1C
void EmitHitAnimation(u8 a); //0x29
void EmitEffectivenessSound(u8 a, u16 sound); //0x2B
-void EmitPlaySound(u8 a, u16 sound); //0x2C
+void Emitcmd44(u8 a, u16 sound); //0x2C
void EmitFaintingCry(u8 a); //0x2D
-void EmitBattleIntroSlide(u8 a, u8 b); //0x2E
-void dp01_build_cmdbuf_x30_TODO(u8 a, u8 *b, u8 c); //0x30
-void dp01_build_cmdbuf_x31_31_31_31(u8 a); //0x31
+void EmitIntroSlide(u8 a, u8 b); //0x2E
+void Emitcmd48(u8 a, u8 *b, u8 c); //0x30
+void Emitcmd49(u8 a); //0x31
void EmitSpriteInvisibility(u8 a, u8 b); //0x33
void EmitBattleAnimation(u8 a, u8 b, u16 c); //0x34
void EmitResetActionMoveSelection(u8 a, u8 b); //0x36
-void dp01_build_cmdbuf_x37_a(u8 a, u8 b); //0x37
+void Emitcmd55(u8 a, u8 b); //0x37
#define REQUEST_ALL_BATTLE 0x0
#define REQUEST_SPECIES_BATTLE 0x1
diff --git a/include/battle_message.h b/include/battle_message.h
index da57333a5..3e37a1ccd 100644
--- a/include/battle_message.h
+++ b/include/battle_message.h
@@ -1,7 +1,23 @@
#ifndef GUARD_BATTLE_MESSAGE_H
#define GUARD_BATTLE_MESSAGE_H
-void StrCpyDecodeToDisplayedStringBattle(const u8 *);
-void StrCpyDecodeBattle(const u8 *, u8 *);
+struct StringInfoBattle
+{
+ u16 currentMove;
+ u16 lastMove;
+ u16 lastItem;
+ u8 lastAbility;
+ u8 scrActive;
+ u8 unk1605E;
+ u8 hpScale;
+ u8 StringBank;
+ u8 moveType;
+ u8 abilities[4];
+ u8 textBuffs[3][0x10];
+};
+
+void BufferStringBattle(u16 stringID);
+u32 StrCpyDecodeToDisplayedStringBattle(const u8* src);
+u32 StrCpyDecodeBattle(const u8* src, u8* dst);
#endif // GUARD_BATTLE_MESSAGE_H
diff --git a/include/battle_setup.h b/include/battle_setup.h
index c8c463f6d..444ab5467 100644
--- a/include/battle_setup.h
+++ b/include/battle_setup.h
@@ -40,72 +40,38 @@ struct TrainerPartyMember3
u16 moves[4];
};
-struct TrainerBattleSpec
-{
- void *ptr;
- u8 ptrType;
-};
-
struct TrainerEyeTrainer
{
- u16 trainerNums[5];
+ u16 opponentIDs[5]; // Each of these trainers has 5 increasingly stronger teams.
u16 mapGroup;
u16 mapNum;
};
-//void task01_battle_start(u8 taskId);
-//void task_add_01_battle_start(u8 transition, u16 song);
-void CheckForSafariZoneAndProceed(void);
-void StartBattle_StandardWild(void);
-void StartBattle_Roamer(void);
-void StartBattle_Safari(void);
-//void task_add_01_battle_start_with_music_and_stats(void);
-//void StartBattle_WallyTutorial(void);
-void StartBattle_ScriptedWild(void);
-//void StartBattle_SouthernIsland(void);
-//void StartBattle_Rayquaza(void);
-//void StartBattle_GroudonKyogre(void);
-//void StartBattle_Regi(void);
-void HandleWildBattleEnd(void);
-void HandleScriptedWildBattleEnd(void);
-s8 GetBattleTerrain(void);
-//s8 GetBattleTransitionTypeByMap(void);
-//u16 GetSumOfPartyMonLevel(u8 numMons);
-//u8 GetSumOfEnemyPartyLevel(u16 trainerNum, u8 numMons);
-u8 GetWildBattleTransition(void);
-u8 GetTrainerBattleTransition(void);
-u8 GetBattleTowerBattleTransition(void);
-//void ChooseStarter(void);
-void CB2_GiveStarter(void);
-void CB2_StartFirstBattle(void);
-void HandleFirstBattleEnd(void);
-//u32 TrainerBattleLoadArg32(u8 *ptr);
-//u16 TrainerBattleLoadArg16(u8 *ptr);
-//u8 TrainerBattleLoadArg8(u8 *ptr);
-//u16 trainerflag_opponent(void);
-bool32 battle_exit_is_player_defeat(u32 a1);
-//void sub_80822BC(void);
-//void TrainerBattleLoadArgs(const struct TrainerBattleSpec *specs, u8 *data);
-//void battle_80801F0(void);
-u8 *TrainerBattleConfigure(const u8 *data);
+void BattleSetup_StartWildBattle(void);
+void BattleSetup_StartRoamerBattle(void);
+void BattleSetup_StartScriptedWildBattle(void);
+s8 BattleSetup_GetTerrain(void);
+u8 BattleSetup_GetBattleTowerBattleTransition(void);
+u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data);
void TrainerWantsBattle(u8, u8 *);
+
bool32 GetTrainerFlagFromScriptPointer(u8 *data);
//void sub_8082524(void);
-//u8 sub_8082558(void);
-//u8 sub_8082564(void);
+//u8 ScrSpecial_GetTrainerBattleMode(void);
+//u8 ScrSpecial_HasTrainerBeenFought(void);
//void sub_808257C(void);
//void unref_sub_8082590(void); // unused
-u8 trainer_flag_check(u16);
+u8 HasTrainerAlreadyBeenFought(u16);
void trainer_flag_set(u16);
void trainer_flag_clear(u16);
-void sub_80825E4(void);
+void BattleSetup_StartTrainerBattle(void);
void sub_808260C(void);
void do_choose_name_or_words_screen(void);
-//void sub_80826B0(void);
-//void sub_80826D8(void);
-u8 *sub_80826E8(void);
-u8 *sub_8082700(void);
-//void sub_8082718(void);
+//void ScrSpecial_StartTrainerEyeRematch(void);
+//void ScrSpecial_ShowTrainerIntroSpeech(void);
+u8 *BattleSetup_GetScriptAddrAfterBattle(void);
+u8 *BattleSetup_GetTrainerPostBattleScript(void);
+//void ScrSpecial_ShowTrainerNonBattlingSpeech(void);
//void PlayTrainerEncounterMusic(void);
//u8 *SanitizeString(u8 *str);
u8 *sub_808281C(void);
@@ -118,7 +84,7 @@ u8 *sub_8082880(void);
//s32 sub_80829A8(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum);
//s32 sub_80829E8(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum);
//bool8 sub_8082A18(const struct TrainerEyeTrainer *trainers, u16 trainerNum);
-//bool8 sub_8082A54(const struct TrainerEyeTrainer *trainers, u16 trainerNum);
+//bool8 DoesTrainerEyeTrainerWantRematch(const struct TrainerEyeTrainer *trainers, u16 trainerNum);
//u16 sub_8082A90(const struct TrainerEyeTrainer *trainers, u16 trainerNum);
//void sub_8082AE4(const struct TrainerEyeTrainer *trainers, u16 trainerNum);
//bool8 sub_8082B10(const struct TrainerEyeTrainer *trainers, u16 trainerNum);
@@ -130,7 +96,7 @@ s32 sub_8082C0C(u16 mapGroup, u16 mapNum);
s32 unref_sub_8082C2C(u16 mapGroup, u16 mapNum);
u16 sub_8082C4C(u16 a1);
//s32 sub_8082C68(void);
-//u8 sub_8082C9C(void);
+//u8 ScrSpecial_GetTrainerEyeRematchFlag(void);
void sub_8082CB8(void);
#endif // GUARD_BATTLE_SETUP_H
diff --git a/include/battle_transition.h b/include/battle_transition.h
index b01378505..0b8766e87 100644
--- a/include/battle_transition.h
+++ b/include/battle_transition.h
@@ -1,8 +1,42 @@
#ifndef GUARD_BATTLE_TRANSITION_H
#define GUARD_BATTLE_TRANSITION_H
-void sub_811AABC(u8);
-void sub_811AAD8(u8);
-u8 sub_811AAE8(void);
+void BattleTransition_StartOnField(u8 transitionID);
+void BattleTransition_Start(u8 transitionID);
+bool8 IsBattleTransitionDone(void);
+
+#define TRANSITIONS_NO 17
+
+enum // TRANSITION_MUGSHOT
+{
+ MUGSHOT_SYDNEY,
+ MUGSHOT_PHOEBE,
+ MUGSHOT_GLACIA,
+ MUGSHOT_DRAKE,
+ MUGSHOT_STEVEN,
+};
+
+#define MUGSHOTS_NO 5
+
+// credits for the names go to Dyskinesia and Tetrable
+// names are naturally subject to change
+
+#define B_TRANSITION_BLUR 0
+#define B_TRANSITION_SWIRL 1
+#define B_TRANSITION_SHUFFLE 2
+#define B_TRANSITION_BIG_POKEBALL 3
+#define B_TRANSITION_POKEBALLS_TRAIL 4
+#define B_TRANSITION_CLOCKWISE_BLACKFADE 5
+#define B_TRANSITION_RIPPLE 6
+#define B_TRANSITION_WAVE 7
+#define B_TRANSITION_SLICE 8
+#define B_TRANSITION_WHITEFADE 9
+#define B_TRANSITION_GRID_SQUARES 10
+#define B_TRANSITION_SHARDS 11
+#define B_TRANSITION_SYDNEY 12
+#define B_TRANSITION_PHOEBE 13
+#define B_TRANSITION_GLACIA 14
+#define B_TRANSITION_DRAKE 15
+#define B_TRANSITION_STEVEN 16
#endif // GUARD_BATTLE_TRANSITION_H
diff --git a/include/berry_blender.h b/include/berry_blender.h
deleted file mode 100644
index 924b24b00..000000000
--- a/include/berry_blender.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef GUARD_BERRY_BLENDER_H
-#define GUARD_BERRY_BLENDER_H
-
-void sub_80516C4(u8, u16);
-
-#endif // GUARD_BERRY_BLENDER_H
diff --git a/include/braille_puzzles.h b/include/braille_puzzles.h
index 2b0e2bb96..e9d1f5d7c 100644
--- a/include/braille_puzzles.h
+++ b/include/braille_puzzles.h
@@ -2,6 +2,7 @@
#define GUARD_BRAILLEPUZZLES_H
bool8 ShouldDoBrailleStrengthEffect(void);
+bool8 ShouldDoBrailleFlyEffect(void);
void DoBrailleStrengthEffect(void);
void UseFlyAncientTomb_Callback(void);
void UseFlyAncientTomb_Finish(void);
@@ -10,5 +11,6 @@ bool32 BrailleWait_CheckButtonPress(void);
void SealedChamberShakingEffect(u8 taskId);
bool8 ShouldDoBrailleDigEffect(void);
void DoBrailleDigEffect(void);
+void DoBrailleFlyEffect(void);
#endif
diff --git a/include/cable_club.h b/include/cable_club.h
index 9e6a703e3..a2fe46b30 100644
--- a/include/cable_club.h
+++ b/include/cable_club.h
@@ -3,20 +3,22 @@
#include "task.h"
-void sub_8082D4C();
-void sub_8082D60(u8, u8);
-u16 sub_8082D9C(u8, u8);
-u32 sub_8082DF4(u8);
-u32 sub_8082E28(u8);
-u32 sub_8082EB8(u8);
-void sub_8082FEC(u8 taskId);
-void sub_80833C4(u8 taskId);
-void sub_8083418(u8 taskId);
-u8 sub_8083444(u8 taskId);
+void sub_808347C(u8 arg0);
+void sub_80834E4(void);
+void sub_808350C(void);
+void sub_80835D8(void);
+void sub_8083614(void);
+void sub_808363C(void);
u8 sub_8083664(void);
-void sub_8083A84(TaskFunc);
-s32 sub_8083BF4(u8 id);
-void sub_8083C50(u8);
-void sub_8083188(u8 taskId);
+void sub_8083820(void);
+void sub_80839A4(void);
+void sub_80839D0(void);
+void sub_8083A84(TaskFunc followupFunc);
+void sub_8083B5C(void);
+void sub_8083B80(void);
+void sub_8083B90(void);
+void sub_8083BDC(void);
+bool32 sub_8083BF4(u8 linkPlayerIndex);
+void sub_8083C50(u8 taskId);
#endif // GUARD_CABLE_CLUB_H
diff --git a/include/data/field_map_obj/anim_func_ptrs.h b/include/data/field_map_obj/anim_func_ptrs.h
index 63575727d..1d1fac71e 100644
--- a/include/data/field_map_obj/anim_func_ptrs.h
+++ b/include/data/field_map_obj/anim_func_ptrs.h
@@ -1,5 +1,5 @@
//
-// Created by scott on 6/18/2017.
+
//
#ifndef POKERUBY_ANIM_FUNC_PTRS_H
diff --git a/include/data/field_map_obj/base_oam.h b/include/data/field_map_obj/base_oam.h
index 8595f97e7..49c14e8c2 100644
--- a/include/data/field_map_obj/base_oam.h
+++ b/include/data/field_map_obj/base_oam.h
@@ -1,5 +1,5 @@
//
-// Created by scott on 6/17/2017.
+
//
#ifndef POKERUBY_BASE_OAM_H
diff --git a/include/data/field_map_obj/berry_tree_graphics_tables.h b/include/data/field_map_obj/berry_tree_graphics_tables.h
index 53a0fd482..5b60fee6f 100644
--- a/include/data/field_map_obj/berry_tree_graphics_tables.h
+++ b/include/data/field_map_obj/berry_tree_graphics_tables.h
@@ -1,5 +1,5 @@
//
-// Created by scott on 6/17/2017.
+
//
#ifndef POKERUBY_BERRY_TREE_GRAPHICS_TABLES_H
diff --git a/include/data/field_map_obj/callback_subroutine_pointers.h b/include/data/field_map_obj/callback_subroutine_pointers.h
index d24a47184..a324066b7 100644
--- a/include/data/field_map_obj/callback_subroutine_pointers.h
+++ b/include/data/field_map_obj/callback_subroutine_pointers.h
@@ -1,5 +1,5 @@
//
-// Created by scott on 6/18/2017.
+
//
#ifndef POKERUBY_CALLBACK_SUBROUTINE_POINTERS_H
@@ -394,7 +394,7 @@ u8 (*const gUnknown_08375588[])(struct MapObject *, struct Sprite *) = {
sub_805F3C4
};
-u8 (*const gUnknown_08375594[])(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)) = {
+u8 (*const gUnknown_08375594[])(struct MapObject *, struct Sprite *, u8, bool8(u8)) = {
sub_805F3EC,
sub_805F3F0,
sub_805F438,
diff --git a/include/data/field_map_obj/field_effect_object_template_pointers.h b/include/data/field_map_obj/field_effect_object_template_pointers.h
index 8e19747ce..320af1ff8 100644
--- a/include/data/field_map_obj/field_effect_object_template_pointers.h
+++ b/include/data/field_map_obj/field_effect_object_template_pointers.h
@@ -1,5 +1,5 @@
//
-// Created by scott on 6/17/2017.
+
//
#ifndef POKERUBY_FIELD_EFFECT_OBJECT_TEMPLATE_POINTERS_H
diff --git a/include/data/field_map_obj/field_effect_objects.h b/include/data/field_map_obj/field_effect_objects.h
index dc8a38542..9d3ae343d 100644
--- a/include/data/field_map_obj/field_effect_objects.h
+++ b/include/data/field_map_obj/field_effect_objects.h
@@ -1,5 +1,5 @@
//
-// Created by scott on 6/17/2017.
+
//
#ifndef POKERUBY_FIELD_EFFECT_OBJECTS_H
diff --git a/include/data/field_map_obj/map_object_anims.h b/include/data/field_map_obj/map_object_anims.h
index 0d6e299ee..0993f3efd 100644
--- a/include/data/field_map_obj/map_object_anims.h
+++ b/include/data/field_map_obj/map_object_anims.h
@@ -1,5 +1,5 @@
//
-// Created by scott on 6/17/2017.
+
//
#ifndef POKERUBY_MAP_OBJECT_ANIMS_H
diff --git a/include/data/field_map_obj/map_object_graphics_info.h b/include/data/field_map_obj/map_object_graphics_info.h
index 818c5b90c..7b021b66d 100644
--- a/include/data/field_map_obj/map_object_graphics_info.h
+++ b/include/data/field_map_obj/map_object_graphics_info.h
@@ -1,5 +1,5 @@
//
-// Created by scott on 6/17/2017.
+
//
#ifndef POKERUBY_MAP_OBJECT_GRAPHICS_INFO_H
diff --git a/include/data/field_map_obj/map_object_graphics_info_pointers.h b/include/data/field_map_obj/map_object_graphics_info_pointers.h
index c36827709..22a052b0d 100644
--- a/include/data/field_map_obj/map_object_graphics_info_pointers.h
+++ b/include/data/field_map_obj/map_object_graphics_info_pointers.h
@@ -1,5 +1,5 @@
//
-// Created by scott on 6/17/2017.
+
//
#ifndef POKERUBY_MAP_OBJECT_GRAPHICS_INFO_POINTERS_H
diff --git a/include/data/field_map_obj/map_object_pic_tables.h b/include/data/field_map_obj/map_object_pic_tables.h
index 37d579512..ecb5c8836 100644
--- a/include/data/field_map_obj/map_object_pic_tables.h
+++ b/include/data/field_map_obj/map_object_pic_tables.h
@@ -1,5 +1,5 @@
//
-// Created by scott on 6/17/2017.
+
//
#ifndef POKERUBY_MAP_OBJECT_PIC_TABLES_H
diff --git a/include/data/field_map_obj/map_object_subsprites.h b/include/data/field_map_obj/map_object_subsprites.h
index f928db88a..951d71e99 100644
--- a/include/data/field_map_obj/map_object_subsprites.h
+++ b/include/data/field_map_obj/map_object_subsprites.h
@@ -1,5 +1,5 @@
//
-// Created by scott on 6/17/2017.
+
//
#ifndef POKERUBY_MAP_OBJECT_SUBSPRITES_H
diff --git a/include/data/pokemon/base_stats.h b/include/data/pokemon/base_stats.h
index eadfbfe30..37f59e1c6 100644
--- a/include/data/pokemon/base_stats.h
+++ b/include/data/pokemon/base_stats.h
@@ -1,5 +1,5 @@
//
-// Created by Scott Norton on 6/27/17.
+
//
#ifndef POKERUBY_BASE_STATS_H
diff --git a/include/data/pokemon/cry_ids.h b/include/data/pokemon/cry_ids.h
index d965a41cf..6207a92f0 100644
--- a/include/data/pokemon/cry_ids.h
+++ b/include/data/pokemon/cry_ids.h
@@ -1,5 +1,5 @@
//
-// Created by Scott Norton on 6/27/17.
+
//
#ifndef POKERUBY_CRY_IDS_H
diff --git a/include/data/pokemon/dex_order.h b/include/data/pokemon/dex_order.h
index 6f8582533..cbb7182ed 100644
--- a/include/data/pokemon/dex_order.h
+++ b/include/data/pokemon/dex_order.h
@@ -1,5 +1,5 @@
//
-// Created by Scott Norton on 6/27/17.
+
//
#ifndef POKERUBY_DEX_ORDER_H
diff --git a/include/data/pokemon/egg_moves.h b/include/data/pokemon/egg_moves.h
new file mode 100644
index 000000000..ab1b1dd33
--- /dev/null
+++ b/include/data/pokemon/egg_moves.h
@@ -0,0 +1,1318 @@
+//
+
+//
+
+#ifndef POKERUBY_DAYCARE_H
+#define POKERUBY_DAYCARE_H
+
+#define EGG_MOVES_SPECIES_OFFSET 20000
+#define egg_moves(species, moves...) (SPECIES_##species + EGG_MOVES_SPECIES_OFFSET), moves
+
+#endif //POKERUBY_DAYCARE_H
+
+const u16 gEggMoves[] = {
+ egg_moves(BULBASAUR,
+ MOVE_LIGHT_SCREEN,
+ MOVE_SKULL_BASH,
+ MOVE_SAFEGUARD,
+ MOVE_CHARM,
+ MOVE_PETAL_DANCE,
+ MOVE_MAGICAL_LEAF,
+ MOVE_GRASS_WHISTLE,
+ MOVE_CURSE),
+
+ egg_moves(CHARMANDER,
+ MOVE_BELLY_DRUM,
+ MOVE_ANCIENT_POWER,
+ MOVE_ROCK_SLIDE,
+ MOVE_BITE,
+ MOVE_OUTRAGE,
+ MOVE_BEAT_UP,
+ MOVE_SWORDS_DANCE,
+ MOVE_DRAGON_DANCE),
+
+ egg_moves(SQUIRTLE,
+ MOVE_MIRROR_COAT,
+ MOVE_HAZE,
+ MOVE_MIST,
+ MOVE_FORESIGHT,
+ MOVE_FLAIL,
+ MOVE_REFRESH,
+ MOVE_MUD_SPORT,
+ MOVE_YAWN),
+
+ egg_moves(PIDGEY,
+ MOVE_PURSUIT,
+ MOVE_FAINT_ATTACK,
+ MOVE_FORESIGHT,
+ MOVE_STEEL_WING,
+ MOVE_AIR_CUTTER),
+
+ egg_moves(RATTATA,
+ MOVE_SCREECH,
+ MOVE_FLAME_WHEEL,
+ MOVE_FURY_SWIPES,
+ MOVE_BITE,
+ MOVE_COUNTER,
+ MOVE_REVERSAL,
+ MOVE_UPROAR,
+ MOVE_SWAGGER),
+
+ egg_moves(SPEAROW,
+ MOVE_FAINT_ATTACK,
+ MOVE_FALSE_SWIPE,
+ MOVE_SCARY_FACE,
+ MOVE_QUICK_ATTACK,
+ MOVE_TRI_ATTACK,
+ MOVE_ASTONISH,
+ MOVE_SKY_ATTACK),
+
+ egg_moves(EKANS,
+ MOVE_PURSUIT,
+ MOVE_SLAM,
+ MOVE_SPITE,
+ MOVE_BEAT_UP,
+ MOVE_POISON_FANG),
+
+ egg_moves(SANDSHREW,
+ MOVE_FLAIL,
+ MOVE_SAFEGUARD,
+ MOVE_COUNTER,
+ MOVE_RAPID_SPIN,
+ MOVE_ROCK_SLIDE,
+ MOVE_METAL_CLAW,
+ MOVE_SWORDS_DANCE,
+ MOVE_CRUSH_CLAW),
+
+ egg_moves(NIDORAN_F,
+ MOVE_SUPERSONIC,
+ MOVE_DISABLE,
+ MOVE_TAKE_DOWN,
+ MOVE_FOCUS_ENERGY,
+ MOVE_CHARM,
+ MOVE_COUNTER,
+ MOVE_BEAT_UP),
+
+ egg_moves(NIDORAN_M,
+ MOVE_COUNTER,
+ MOVE_DISABLE,
+ MOVE_SUPERSONIC,
+ MOVE_TAKE_DOWN,
+ MOVE_AMNESIA,
+ MOVE_CONFUSION,
+ MOVE_BEAT_UP),
+
+ egg_moves(VULPIX,
+ MOVE_FAINT_ATTACK,
+ MOVE_HYPNOSIS,
+ MOVE_FLAIL,
+ MOVE_SPITE,
+ MOVE_DISABLE,
+ MOVE_HOWL,
+ MOVE_PSYCH_UP,
+ MOVE_HEAT_WAVE),
+
+ egg_moves(ZUBAT,
+ MOVE_QUICK_ATTACK,
+ MOVE_PURSUIT,
+ MOVE_FAINT_ATTACK,
+ MOVE_GUST,
+ MOVE_WHIRLWIND,
+ MOVE_CURSE),
+
+ egg_moves(ODDISH,
+ MOVE_SWORDS_DANCE,
+ MOVE_RAZOR_LEAF,
+ MOVE_FLAIL,
+ MOVE_SYNTHESIS,
+ MOVE_CHARM,
+ MOVE_INGRAIN),
+
+ egg_moves(PARAS,
+ MOVE_FALSE_SWIPE,
+ MOVE_SCREECH,
+ MOVE_COUNTER,
+ MOVE_PSYBEAM,
+ MOVE_FLAIL,
+ MOVE_SWEET_SCENT,
+ MOVE_LIGHT_SCREEN,
+ MOVE_PURSUIT),
+
+ egg_moves(VENONAT,
+ MOVE_BATON_PASS,
+ MOVE_SCREECH,
+ MOVE_GIGA_DRAIN,
+ MOVE_SIGNAL_BEAM),
+
+ egg_moves(DIGLETT,
+ MOVE_FAINT_ATTACK,
+ MOVE_SCREECH,
+ MOVE_ANCIENT_POWER,
+ MOVE_PURSUIT,
+ MOVE_BEAT_UP,
+ MOVE_UPROAR,
+ MOVE_ROCK_SLIDE),
+
+ egg_moves(MEOWTH,
+ MOVE_SPITE,
+ MOVE_CHARM,
+ MOVE_HYPNOSIS,
+ MOVE_AMNESIA,
+ MOVE_PSYCH_UP,
+ MOVE_ASSIST),
+
+ egg_moves(PSYDUCK,
+ MOVE_HYPNOSIS,
+ MOVE_PSYBEAM,
+ MOVE_FORESIGHT,
+ MOVE_LIGHT_SCREEN,
+ MOVE_FUTURE_SIGHT,
+ MOVE_PSYCHIC,
+ MOVE_CROSS_CHOP,
+ MOVE_REFRESH),
+
+ egg_moves(MANKEY,
+ MOVE_ROCK_SLIDE,
+ MOVE_FORESIGHT,
+ MOVE_MEDITATE,
+ MOVE_COUNTER,
+ MOVE_REVERSAL,
+ MOVE_BEAT_UP,
+ MOVE_REVENGE,
+ MOVE_SMELLING_SALT),
+
+ egg_moves(GROWLITHE,
+ MOVE_BODY_SLAM,
+ MOVE_SAFEGUARD,
+ MOVE_CRUNCH,
+ MOVE_THRASH,
+ MOVE_FIRE_SPIN,
+ MOVE_HOWL,
+ MOVE_HEAT_WAVE),
+
+ egg_moves(POLIWAG,
+ MOVE_MIST,
+ MOVE_SPLASH,
+ MOVE_BUBBLE_BEAM,
+ MOVE_HAZE,
+ MOVE_MIND_READER,
+ MOVE_WATER_SPORT,
+ MOVE_ICE_BALL),
+
+ egg_moves(ABRA,
+ MOVE_ENCORE,
+ MOVE_BARRIER,
+ MOVE_KNOCK_OFF,
+ MOVE_FIRE_PUNCH,
+ MOVE_THUNDER_PUNCH,
+ MOVE_ICE_PUNCH),
+
+ egg_moves(MACHOP,
+ MOVE_LIGHT_SCREEN,
+ MOVE_MEDITATE,
+ MOVE_ROLLING_KICK,
+ MOVE_ENCORE,
+ MOVE_SMELLING_SALT,
+ MOVE_COUNTER,
+ MOVE_ROCK_SLIDE),
+
+ egg_moves(BELLSPROUT,
+ MOVE_SWORDS_DANCE,
+ MOVE_ENCORE,
+ MOVE_REFLECT,
+ MOVE_SYNTHESIS,
+ MOVE_LEECH_LIFE,
+ MOVE_INGRAIN,
+ MOVE_MAGICAL_LEAF),
+
+ egg_moves(TENTACOOL,
+ MOVE_AURORA_BEAM,
+ MOVE_MIRROR_COAT,
+ MOVE_RAPID_SPIN,
+ MOVE_HAZE,
+ MOVE_SAFEGUARD,
+ MOVE_CONFUSE_RAY),
+
+ egg_moves(GEODUDE,
+ MOVE_MEGA_PUNCH,
+ MOVE_ROCK_SLIDE,
+ MOVE_BLOCK),
+
+ egg_moves(PONYTA,
+ MOVE_FLAME_WHEEL,
+ MOVE_THRASH,
+ MOVE_DOUBLE_KICK,
+ MOVE_HYPNOSIS,
+ MOVE_CHARM,
+ MOVE_DOUBLE_EDGE),
+
+ egg_moves(SLOWPOKE,
+ MOVE_SAFEGUARD,
+ MOVE_BELLY_DRUM,
+ MOVE_FUTURE_SIGHT,
+ MOVE_STOMP,
+ MOVE_MUD_SPORT,
+ MOVE_SLEEP_TALK,
+ MOVE_SNORE),
+
+ egg_moves(FARFETCHD,
+ MOVE_STEEL_WING,
+ MOVE_FORESIGHT,
+ MOVE_MIRROR_MOVE,
+ MOVE_GUST,
+ MOVE_QUICK_ATTACK,
+ MOVE_FLAIL,
+ MOVE_FEATHER_DANCE,
+ MOVE_CURSE),
+
+ egg_moves(DODUO,
+ MOVE_QUICK_ATTACK,
+ MOVE_SUPERSONIC,
+ MOVE_HAZE,
+ MOVE_FAINT_ATTACK,
+ MOVE_FLAIL,
+ MOVE_ENDEAVOR),
+
+ egg_moves(SEEL,
+ MOVE_LICK,
+ MOVE_PERISH_SONG,
+ MOVE_DISABLE,
+ MOVE_HORN_DRILL,
+ MOVE_SLAM,
+ MOVE_ENCORE,
+ MOVE_FAKE_OUT,
+ MOVE_ICICLE_SPEAR),
+
+ egg_moves(GRIMER,
+ MOVE_HAZE,
+ MOVE_MEAN_LOOK,
+ MOVE_LICK,
+ MOVE_IMPRISON,
+ MOVE_CURSE,
+ MOVE_SHADOW_PUNCH,
+ MOVE_EXPLOSION),
+
+ egg_moves(SHELLDER,
+ MOVE_BUBBLE_BEAM,
+ MOVE_TAKE_DOWN,
+ MOVE_BARRIER,
+ MOVE_RAPID_SPIN,
+ MOVE_SCREECH,
+ MOVE_ICICLE_SPEAR),
+
+ egg_moves(GASTLY,
+ MOVE_PSYWAVE,
+ MOVE_PERISH_SONG,
+ MOVE_HAZE,
+ MOVE_ASTONISH,
+ MOVE_WILL_O_WISP,
+ MOVE_GRUDGE,
+ MOVE_EXPLOSION),
+
+ egg_moves(ONIX,
+ MOVE_ROCK_SLIDE,
+ MOVE_FLAIL,
+ MOVE_EXPLOSION,
+ MOVE_BLOCK),
+
+ egg_moves(DROWZEE,
+ MOVE_BARRIER,
+ MOVE_ASSIST,
+ MOVE_ROLE_PLAY,
+ MOVE_FIRE_PUNCH,
+ MOVE_THUNDER_PUNCH,
+ MOVE_ICE_PUNCH),
+
+ egg_moves(KRABBY,
+ MOVE_DIG,
+ MOVE_HAZE,
+ MOVE_AMNESIA,
+ MOVE_FLAIL,
+ MOVE_SLAM,
+ MOVE_KNOCK_OFF,
+ MOVE_SWORDS_DANCE),
+
+ egg_moves(EXEGGCUTE,
+ MOVE_SYNTHESIS,
+ MOVE_MOONLIGHT,
+ MOVE_REFLECT,
+ MOVE_ANCIENT_POWER,
+ MOVE_PSYCH_UP,
+ MOVE_INGRAIN,
+ MOVE_CURSE),
+
+ egg_moves(CUBONE,
+ MOVE_ROCK_SLIDE,
+ MOVE_ANCIENT_POWER,
+ MOVE_BELLY_DRUM,
+ MOVE_SCREECH,
+ MOVE_SKULL_BASH,
+ MOVE_PERISH_SONG,
+ MOVE_SWORDS_DANCE),
+
+ egg_moves(LICKITUNG,
+ MOVE_BELLY_DRUM,
+ MOVE_MAGNITUDE,
+ MOVE_BODY_SLAM,
+ MOVE_CURSE,
+ MOVE_SMELLING_SALT,
+ MOVE_SLEEP_TALK,
+ MOVE_SNORE,
+ MOVE_SUBSTITUTE),
+
+ egg_moves(KOFFING,
+ MOVE_SCREECH,
+ MOVE_PSYWAVE,
+ MOVE_PSYBEAM,
+ MOVE_DESTINY_BOND,
+ MOVE_PAIN_SPLIT,
+ MOVE_WILL_O_WISP),
+
+ egg_moves(RHYHORN,
+ MOVE_CRUNCH,
+ MOVE_REVERSAL,
+ MOVE_ROCK_SLIDE,
+ MOVE_COUNTER,
+ MOVE_MAGNITUDE,
+ MOVE_SWORDS_DANCE,
+ MOVE_CURSE,
+ MOVE_CRUSH_CLAW),
+
+ egg_moves(CHANSEY,
+ MOVE_PRESENT,
+ MOVE_METRONOME,
+ MOVE_HEAL_BELL,
+ MOVE_AROMATHERAPY,
+ MOVE_SUBSTITUTE),
+
+ egg_moves(TANGELA,
+ MOVE_FLAIL,
+ MOVE_CONFUSION,
+ MOVE_MEGA_DRAIN,
+ MOVE_REFLECT,
+ MOVE_AMNESIA,
+ MOVE_LEECH_SEED,
+ MOVE_NATURE_POWER),
+
+ egg_moves(KANGASKHAN,
+ MOVE_STOMP,
+ MOVE_FORESIGHT,
+ MOVE_FOCUS_ENERGY,
+ MOVE_SAFEGUARD,
+ MOVE_DISABLE,
+ MOVE_COUNTER,
+ MOVE_CRUSH_CLAW,
+ MOVE_SUBSTITUTE),
+
+ egg_moves(HORSEA,
+ MOVE_FLAIL,
+ MOVE_AURORA_BEAM,
+ MOVE_OCTAZOOKA,
+ MOVE_DISABLE,
+ MOVE_SPLASH,
+ MOVE_DRAGON_RAGE,
+ MOVE_DRAGON_BREATH),
+
+ egg_moves(GOLDEEN,
+ MOVE_PSYBEAM,
+ MOVE_HAZE,
+ MOVE_HYDRO_PUMP,
+ MOVE_SLEEP_TALK,
+ MOVE_MUD_SPORT),
+
+ egg_moves(MR_MIME,
+ MOVE_FUTURE_SIGHT,
+ MOVE_HYPNOSIS,
+ MOVE_MIMIC,
+ MOVE_PSYCH_UP,
+ MOVE_FAKE_OUT,
+ MOVE_TRICK),
+
+ egg_moves(SCYTHER,
+ MOVE_COUNTER,
+ MOVE_SAFEGUARD,
+ MOVE_BATON_PASS,
+ MOVE_RAZOR_WIND,
+ MOVE_REVERSAL,
+ MOVE_LIGHT_SCREEN,
+ MOVE_ENDURE,
+ MOVE_SILVER_WIND),
+
+ egg_moves(PINSIR,
+ MOVE_FURY_ATTACK,
+ MOVE_FLAIL,
+ MOVE_FALSE_SWIPE,
+ MOVE_FAINT_ATTACK),
+
+ egg_moves(LAPRAS,
+ MOVE_FORESIGHT,
+ MOVE_SUBSTITUTE,
+ MOVE_TICKLE,
+ MOVE_REFRESH,
+ MOVE_DRAGON_DANCE,
+ MOVE_CURSE,
+ MOVE_SLEEP_TALK,
+ MOVE_HORN_DRILL),
+
+ egg_moves(EEVEE,
+ MOVE_CHARM,
+ MOVE_FLAIL,
+ MOVE_ENDURE,
+ MOVE_CURSE,
+ MOVE_TICKLE,
+ MOVE_WISH),
+
+ egg_moves(OMANYTE,
+ MOVE_BUBBLE_BEAM,
+ MOVE_AURORA_BEAM,
+ MOVE_SLAM,
+ MOVE_SUPERSONIC,
+ MOVE_HAZE,
+ MOVE_ROCK_SLIDE,
+ MOVE_SPIKES),
+
+ egg_moves(KABUTO,
+ MOVE_BUBBLE_BEAM,
+ MOVE_AURORA_BEAM,
+ MOVE_RAPID_SPIN,
+ MOVE_DIG,
+ MOVE_FLAIL,
+ MOVE_KNOCK_OFF,
+ MOVE_CONFUSE_RAY),
+
+ egg_moves(AERODACTYL,
+ MOVE_WHIRLWIND,
+ MOVE_PURSUIT,
+ MOVE_FORESIGHT,
+ MOVE_STEEL_WING,
+ MOVE_DRAGON_BREATH,
+ MOVE_CURSE),
+
+ egg_moves(SNORLAX,
+ MOVE_LICK,
+ MOVE_CHARM,
+ MOVE_DOUBLE_EDGE,
+ MOVE_CURSE,
+ MOVE_FISSURE,
+ MOVE_SUBSTITUTE),
+
+ egg_moves(DRATINI,
+ MOVE_LIGHT_SCREEN,
+ MOVE_MIST,
+ MOVE_HAZE,
+ MOVE_SUPERSONIC,
+ MOVE_DRAGON_BREATH,
+ MOVE_DRAGON_DANCE),
+
+ egg_moves(CHIKORITA,
+ MOVE_VINE_WHIP,
+ MOVE_LEECH_SEED,
+ MOVE_COUNTER,
+ MOVE_ANCIENT_POWER,
+ MOVE_FLAIL,
+ MOVE_NATURE_POWER,
+ MOVE_INGRAIN,
+ MOVE_GRASS_WHISTLE),
+
+ egg_moves(CYNDAQUIL,
+ MOVE_FURY_SWIPES,
+ MOVE_QUICK_ATTACK,
+ MOVE_REVERSAL,
+ MOVE_THRASH,
+ MOVE_FORESIGHT,
+ MOVE_COVET,
+ MOVE_HOWL,
+ MOVE_CRUSH_CLAW),
+
+ egg_moves(TOTODILE,
+ MOVE_CRUNCH,
+ MOVE_THRASH,
+ MOVE_HYDRO_PUMP,
+ MOVE_ANCIENT_POWER,
+ MOVE_ROCK_SLIDE,
+ MOVE_MUD_SPORT,
+ MOVE_WATER_SPORT,
+ MOVE_DRAGON_CLAW),
+
+ egg_moves(SENTRET,
+ MOVE_DOUBLE_EDGE,
+ MOVE_PURSUIT,
+ MOVE_SLASH,
+ MOVE_FOCUS_ENERGY,
+ MOVE_REVERSAL,
+ MOVE_SUBSTITUTE,
+ MOVE_TRICK,
+ MOVE_ASSIST),
+
+ egg_moves(HOOTHOOT,
+ MOVE_MIRROR_MOVE,
+ MOVE_SUPERSONIC,
+ MOVE_FAINT_ATTACK,
+ MOVE_WING_ATTACK,
+ MOVE_WHIRLWIND,
+ MOVE_SKY_ATTACK,
+ MOVE_FEATHER_DANCE),
+
+ egg_moves(LEDYBA,
+ MOVE_PSYBEAM,
+ MOVE_BIDE,
+ MOVE_SILVER_WIND),
+
+ egg_moves(SPINARAK,
+ MOVE_PSYBEAM,
+ MOVE_DISABLE,
+ MOVE_SONIC_BOOM,
+ MOVE_BATON_PASS,
+ MOVE_PURSUIT,
+ MOVE_SIGNAL_BEAM),
+
+ egg_moves(CHINCHOU,
+ MOVE_FLAIL,
+ MOVE_SCREECH,
+ MOVE_AMNESIA),
+
+ egg_moves(PICHU,
+ MOVE_REVERSAL,
+ MOVE_BIDE,
+ MOVE_PRESENT,
+ MOVE_ENCORE,
+ MOVE_DOUBLE_SLAP,
+ MOVE_WISH,
+ MOVE_CHARGE),
+
+ egg_moves(CLEFFA,
+ MOVE_PRESENT,
+ MOVE_METRONOME,
+ MOVE_AMNESIA,
+ MOVE_BELLY_DRUM,
+ MOVE_SPLASH,
+ MOVE_MIMIC,
+ MOVE_WISH,
+ MOVE_SUBSTITUTE),
+
+ egg_moves(IGGLYBUFF,
+ MOVE_PERISH_SONG,
+ MOVE_PRESENT,
+ MOVE_FAINT_ATTACK,
+ MOVE_WISH,
+ MOVE_FAKE_TEARS),
+
+ egg_moves(TOGEPI,
+ MOVE_PRESENT,
+ MOVE_MIRROR_MOVE,
+ MOVE_PECK,
+ MOVE_FORESIGHT,
+ MOVE_FUTURE_SIGHT,
+ MOVE_SUBSTITUTE,
+ MOVE_PSYCH_UP),
+
+ egg_moves(NATU,
+ MOVE_HAZE,
+ MOVE_DRILL_PECK,
+ MOVE_QUICK_ATTACK,
+ MOVE_FAINT_ATTACK,
+ MOVE_STEEL_WING,
+ MOVE_PSYCH_UP,
+ MOVE_FEATHER_DANCE,
+ MOVE_REFRESH),
+
+ egg_moves(MAREEP,
+ MOVE_TAKE_DOWN,
+ MOVE_BODY_SLAM,
+ MOVE_SAFEGUARD,
+ MOVE_SCREECH,
+ MOVE_REFLECT,
+ MOVE_ODOR_SLEUTH,
+ MOVE_CHARGE),
+
+ egg_moves(MARILL,
+ MOVE_LIGHT_SCREEN,
+ MOVE_PRESENT,
+ MOVE_AMNESIA,
+ MOVE_FUTURE_SIGHT,
+ MOVE_BELLY_DRUM,
+ MOVE_PERISH_SONG,
+ MOVE_SUPERSONIC,
+ MOVE_SUBSTITUTE),
+
+ egg_moves(SUDOWOODO,
+ MOVE_SELF_DESTRUCT),
+
+ egg_moves(HOPPIP,
+ MOVE_CONFUSION,
+ MOVE_ENCORE,
+ MOVE_DOUBLE_EDGE,
+ MOVE_REFLECT,
+ MOVE_AMNESIA,
+ MOVE_HELPING_HAND,
+ MOVE_PSYCH_UP),
+
+ egg_moves(AIPOM,
+ MOVE_COUNTER,
+ MOVE_SCREECH,
+ MOVE_PURSUIT,
+ MOVE_AGILITY,
+ MOVE_SPITE,
+ MOVE_SLAM,
+ MOVE_DOUBLE_SLAP,
+ MOVE_BEAT_UP),
+
+ egg_moves(SUNKERN,
+ MOVE_GRASS_WHISTLE,
+ MOVE_ENCORE,
+ MOVE_LEECH_SEED,
+ MOVE_NATURE_POWER,
+ MOVE_CURSE,
+ MOVE_HELPING_HAND),
+
+ egg_moves(YANMA,
+ MOVE_WHIRLWIND,
+ MOVE_REVERSAL,
+ MOVE_LEECH_LIFE,
+ MOVE_SIGNAL_BEAM,
+ MOVE_SILVER_WIND),
+
+ egg_moves(WOOPER,
+ MOVE_BODY_SLAM,
+ MOVE_ANCIENT_POWER,
+ MOVE_SAFEGUARD,
+ MOVE_CURSE,
+ MOVE_MUD_SPORT,
+ MOVE_STOCKPILE,
+ MOVE_SWALLOW,
+ MOVE_SPIT_UP),
+
+ egg_moves(MURKROW,
+ MOVE_WHIRLWIND,
+ MOVE_DRILL_PECK,
+ MOVE_MIRROR_MOVE,
+ MOVE_WING_ATTACK,
+ MOVE_SKY_ATTACK,
+ MOVE_CONFUSE_RAY,
+ MOVE_FEATHER_DANCE,
+ MOVE_PERISH_SONG),
+
+ egg_moves(MISDREAVUS,
+ MOVE_SCREECH,
+ MOVE_DESTINY_BOND,
+ MOVE_PSYCH_UP,
+ MOVE_IMPRISON),
+
+ egg_moves(GIRAFARIG,
+ MOVE_TAKE_DOWN,
+ MOVE_AMNESIA,
+ MOVE_FORESIGHT,
+ MOVE_FUTURE_SIGHT,
+ MOVE_BEAT_UP,
+ MOVE_PSYCH_UP,
+ MOVE_WISH,
+ MOVE_MAGIC_COAT),
+
+ egg_moves(PINECO,
+ MOVE_REFLECT,
+ MOVE_PIN_MISSILE,
+ MOVE_FLAIL,
+ MOVE_SWIFT,
+ MOVE_COUNTER,
+ MOVE_SAND_TOMB),
+
+ egg_moves(DUNSPARCE,
+ MOVE_BIDE,
+ MOVE_ANCIENT_POWER,
+ MOVE_ROCK_SLIDE,
+ MOVE_BITE,
+ MOVE_HEADBUTT,
+ MOVE_ASTONISH,
+ MOVE_CURSE),
+
+ egg_moves(GLIGAR,
+ MOVE_METAL_CLAW,
+ MOVE_WING_ATTACK,
+ MOVE_RAZOR_WIND,
+ MOVE_COUNTER,
+ MOVE_SAND_TOMB),
+
+ egg_moves(SNUBBULL,
+ MOVE_METRONOME,
+ MOVE_FAINT_ATTACK,
+ MOVE_REFLECT,
+ MOVE_PRESENT,
+ MOVE_CRUNCH,
+ MOVE_HEAL_BELL,
+ MOVE_SNORE,
+ MOVE_SMELLING_SALT),
+
+ egg_moves(QWILFISH,
+ MOVE_FLAIL,
+ MOVE_HAZE,
+ MOVE_BUBBLE_BEAM,
+ MOVE_SUPERSONIC,
+ MOVE_ASTONISH),
+
+ egg_moves(SHUCKLE,
+ MOVE_SWEET_SCENT),
+
+ egg_moves(HERACROSS,
+ MOVE_HARDEN,
+ MOVE_BIDE,
+ MOVE_FLAIL,
+ MOVE_FALSE_SWIPE),
+
+ egg_moves(SNEASEL,
+ MOVE_COUNTER,
+ MOVE_SPITE,
+ MOVE_FORESIGHT,
+ MOVE_REFLECT,
+ MOVE_BITE,
+ MOVE_CRUSH_CLAW,
+ MOVE_FAKE_OUT),
+
+ egg_moves(TEDDIURSA,
+ MOVE_CRUNCH,
+ MOVE_TAKE_DOWN,
+ MOVE_SEISMIC_TOSS,
+ MOVE_COUNTER,
+ MOVE_METAL_CLAW,
+ MOVE_FAKE_TEARS,
+ MOVE_YAWN,
+ MOVE_SLEEP_TALK),
+
+ egg_moves(SLUGMA,
+ MOVE_ACID_ARMOR,
+ MOVE_HEAT_WAVE),
+
+ egg_moves(SWINUB,
+ MOVE_TAKE_DOWN,
+ MOVE_BITE,
+ MOVE_BODY_SLAM,
+ MOVE_ROCK_SLIDE,
+ MOVE_ANCIENT_POWER,
+ MOVE_MUD_SHOT,
+ MOVE_ICICLE_SPEAR,
+ MOVE_DOUBLE_EDGE),
+
+ egg_moves(CORSOLA,
+ MOVE_ROCK_SLIDE,
+ MOVE_SCREECH,
+ MOVE_MIST,
+ MOVE_AMNESIA,
+ MOVE_BARRIER,
+ MOVE_INGRAIN,
+ MOVE_CONFUSE_RAY,
+ MOVE_ICICLE_SPEAR),
+
+ egg_moves(REMORAID,
+ MOVE_AURORA_BEAM,
+ MOVE_OCTAZOOKA,
+ MOVE_SUPERSONIC,
+ MOVE_HAZE,
+ MOVE_SCREECH,
+ MOVE_THUNDER_WAVE,
+ MOVE_ROCK_BLAST),
+
+ egg_moves(DELIBIRD,
+ MOVE_AURORA_BEAM,
+ MOVE_QUICK_ATTACK,
+ MOVE_FUTURE_SIGHT,
+ MOVE_SPLASH,
+ MOVE_RAPID_SPIN,
+ MOVE_ICE_BALL),
+
+ egg_moves(MANTINE,
+ MOVE_TWISTER,
+ MOVE_HYDRO_PUMP,
+ MOVE_HAZE,
+ MOVE_SLAM,
+ MOVE_MUD_SPORT,
+ MOVE_ROCK_SLIDE),
+
+ egg_moves(SKARMORY,
+ MOVE_DRILL_PECK,
+ MOVE_PURSUIT,
+ MOVE_WHIRLWIND,
+ MOVE_SKY_ATTACK,
+ MOVE_CURSE),
+
+ egg_moves(HOUNDOUR,
+ MOVE_FIRE_SPIN,
+ MOVE_RAGE,
+ MOVE_PURSUIT,
+ MOVE_COUNTER,
+ MOVE_SPITE,
+ MOVE_REVERSAL,
+ MOVE_BEAT_UP,
+ MOVE_WILL_O_WISP),
+
+ egg_moves(PHANPY,
+ MOVE_FOCUS_ENERGY,
+ MOVE_BODY_SLAM,
+ MOVE_ANCIENT_POWER,
+ MOVE_SNORE,
+ MOVE_COUNTER,
+ MOVE_FISSURE),
+
+ egg_moves(STANTLER,
+ MOVE_SPITE,
+ MOVE_DISABLE,
+ MOVE_BITE,
+ MOVE_SWAGGER,
+ MOVE_PSYCH_UP,
+ MOVE_EXTRASENSORY),
+
+ egg_moves(TYROGUE,
+ MOVE_RAPID_SPIN,
+ MOVE_HI_JUMP_KICK,
+ MOVE_MACH_PUNCH,
+ MOVE_MIND_READER,
+ MOVE_HELPING_HAND),
+
+ egg_moves(SMOOCHUM,
+ MOVE_MEDITATE,
+ MOVE_PSYCH_UP,
+ MOVE_FAKE_OUT,
+ MOVE_WISH,
+ MOVE_ICE_PUNCH),
+
+ egg_moves(ELEKID,
+ MOVE_KARATE_CHOP,
+ MOVE_BARRIER,
+ MOVE_ROLLING_KICK,
+ MOVE_MEDITATE,
+ MOVE_CROSS_CHOP,
+ MOVE_FIRE_PUNCH,
+ MOVE_ICE_PUNCH),
+
+ egg_moves(MAGBY,
+ MOVE_KARATE_CHOP,
+ MOVE_MEGA_PUNCH,
+ MOVE_BARRIER,
+ MOVE_SCREECH,
+ MOVE_CROSS_CHOP,
+ MOVE_THUNDER_PUNCH),
+
+ egg_moves(MILTANK,
+ MOVE_PRESENT,
+ MOVE_REVERSAL,
+ MOVE_SEISMIC_TOSS,
+ MOVE_ENDURE,
+ MOVE_PSYCH_UP,
+ MOVE_CURSE,
+ MOVE_HELPING_HAND,
+ MOVE_SLEEP_TALK),
+
+ egg_moves(LARVITAR,
+ MOVE_PURSUIT,
+ MOVE_STOMP,
+ MOVE_OUTRAGE,
+ MOVE_FOCUS_ENERGY,
+ MOVE_ANCIENT_POWER,
+ MOVE_DRAGON_DANCE,
+ MOVE_CURSE),
+
+ egg_moves(TREECKO,
+ MOVE_CRUNCH,
+ MOVE_MUD_SPORT,
+ MOVE_ENDEAVOR,
+ MOVE_LEECH_SEED,
+ MOVE_DRAGON_BREATH,
+ MOVE_CRUSH_CLAW),
+
+ egg_moves(TORCHIC,
+ MOVE_COUNTER,
+ MOVE_REVERSAL,
+ MOVE_ENDURE,
+ MOVE_SWAGGER,
+ MOVE_ROCK_SLIDE,
+ MOVE_SMELLING_SALT),
+
+ egg_moves(MUDKIP,
+ MOVE_REFRESH,
+ MOVE_UPROAR,
+ MOVE_CURSE,
+ MOVE_STOMP,
+ MOVE_ICE_BALL,
+ MOVE_MIRROR_COAT),
+
+ egg_moves(POOCHYENA,
+ MOVE_ASTONISH,
+ MOVE_POISON_FANG,
+ MOVE_COVET,
+ MOVE_LEER,
+ MOVE_YAWN),
+
+ egg_moves(ZIGZAGOON,
+ MOVE_CHARM,
+ MOVE_PURSUIT,
+ MOVE_SUBSTITUTE,
+ MOVE_TICKLE,
+ MOVE_TRICK),
+
+ egg_moves(LOTAD,
+ MOVE_SYNTHESIS,
+ MOVE_RAZOR_LEAF,
+ MOVE_SWEET_SCENT,
+ MOVE_LEECH_SEED,
+ MOVE_FLAIL,
+ MOVE_WATER_GUN),
+
+ egg_moves(SEEDOT,
+ MOVE_LEECH_SEED,
+ MOVE_AMNESIA,
+ MOVE_QUICK_ATTACK,
+ MOVE_RAZOR_WIND,
+ MOVE_TAKE_DOWN,
+ MOVE_FALSE_SWIPE),
+
+ egg_moves(NINCADA,
+ MOVE_ENDURE,
+ MOVE_FAINT_ATTACK,
+ MOVE_GUST,
+ MOVE_SILVER_WIND),
+
+ egg_moves(TAILLOW,
+ MOVE_PURSUIT,
+ MOVE_SUPERSONIC,
+ MOVE_REFRESH,
+ MOVE_MIRROR_MOVE,
+ MOVE_RAGE,
+ MOVE_SKY_ATTACK),
+
+ egg_moves(SHROOMISH,
+ MOVE_FAKE_TEARS,
+ MOVE_SWAGGER,
+ MOVE_CHARM,
+ MOVE_FALSE_SWIPE,
+ MOVE_HELPING_HAND),
+
+ egg_moves(SPINDA,
+ MOVE_ENCORE,
+ MOVE_ROCK_SLIDE,
+ MOVE_ASSIST,
+ MOVE_DISABLE,
+ MOVE_BATON_PASS,
+ MOVE_WISH,
+ MOVE_TRICK,
+ MOVE_SMELLING_SALT),
+
+ egg_moves(WINGULL,
+ MOVE_MIST,
+ MOVE_TWISTER,
+ MOVE_AGILITY,
+ MOVE_GUST,
+ MOVE_WATER_SPORT),
+
+ egg_moves(SURSKIT,
+ MOVE_FORESIGHT,
+ MOVE_MUD_SHOT,
+ MOVE_PSYBEAM,
+ MOVE_HYDRO_PUMP,
+ MOVE_MIND_READER),
+
+ egg_moves(WAILMER,
+ MOVE_DOUBLE_EDGE,
+ MOVE_THRASH,
+ MOVE_SWAGGER,
+ MOVE_SNORE,
+ MOVE_SLEEP_TALK,
+ MOVE_CURSE,
+ MOVE_FISSURE,
+ MOVE_TICKLE),
+
+ egg_moves(SKITTY,
+ MOVE_HELPING_HAND,
+ MOVE_PSYCH_UP,
+ MOVE_UPROAR,
+ MOVE_FAKE_TEARS,
+ MOVE_WISH,
+ MOVE_BATON_PASS,
+ MOVE_SUBSTITUTE,
+ MOVE_TICKLE),
+
+ egg_moves(KECLEON,
+ MOVE_DISABLE,
+ MOVE_MAGIC_COAT,
+ MOVE_TRICK),
+
+ egg_moves(NOSEPASS,
+ MOVE_MAGNITUDE,
+ MOVE_ROLLOUT,
+ MOVE_EXPLOSION),
+
+ egg_moves(TORKOAL,
+ MOVE_ERUPTION,
+ MOVE_ENDURE,
+ MOVE_SLEEP_TALK,
+ MOVE_YAWN),
+
+ egg_moves(SABLEYE,
+ MOVE_PSYCH_UP,
+ MOVE_RECOVER,
+ MOVE_MOONLIGHT),
+
+ egg_moves(BARBOACH,
+ MOVE_THRASH,
+ MOVE_WHIRLPOOL,
+ MOVE_SPARK),
+
+ egg_moves(LUVDISC,
+ MOVE_SPLASH,
+ MOVE_SUPERSONIC,
+ MOVE_WATER_SPORT,
+ MOVE_MUD_SPORT),
+
+ egg_moves(CORPHISH,
+ MOVE_MUD_SPORT,
+ MOVE_ENDEAVOR,
+ MOVE_BODY_SLAM,
+ MOVE_ANCIENT_POWER),
+
+ egg_moves(FEEBAS,
+ MOVE_MIRROR_COAT,
+ MOVE_DRAGON_BREATH,
+ MOVE_MUD_SPORT,
+ MOVE_HYPNOSIS,
+ MOVE_LIGHT_SCREEN,
+ MOVE_CONFUSE_RAY),
+
+ egg_moves(CARVANHA,
+ MOVE_HYDRO_PUMP,
+ MOVE_DOUBLE_EDGE,
+ MOVE_THRASH),
+
+ egg_moves(TRAPINCH,
+ MOVE_FOCUS_ENERGY,
+ MOVE_QUICK_ATTACK,
+ MOVE_GUST),
+
+ egg_moves(MAKUHITA,
+ MOVE_FAINT_ATTACK,
+ MOVE_DETECT,
+ MOVE_FORESIGHT,
+ MOVE_HELPING_HAND,
+ MOVE_CROSS_CHOP,
+ MOVE_REVENGE,
+ MOVE_DYNAMIC_PUNCH,
+ MOVE_COUNTER),
+
+ egg_moves(ELECTRIKE,
+ MOVE_CRUNCH,
+ MOVE_HEADBUTT,
+ MOVE_UPROAR,
+ MOVE_CURSE,
+ MOVE_SWIFT),
+
+ egg_moves(NUMEL,
+ MOVE_HOWL,
+ MOVE_SCARY_FACE,
+ MOVE_BODY_SLAM,
+ MOVE_ROLLOUT,
+ MOVE_DEFENSE_CURL,
+ MOVE_STOMP),
+
+ egg_moves(SPHEAL,
+ MOVE_WATER_SPORT,
+ MOVE_STOCKPILE,
+ MOVE_SWALLOW,
+ MOVE_SPIT_UP,
+ MOVE_YAWN,
+ MOVE_ROCK_SLIDE,
+ MOVE_CURSE,
+ MOVE_FISSURE),
+
+ egg_moves(CACNEA,
+ MOVE_GRASS_WHISTLE,
+ MOVE_ACID,
+ MOVE_TEETER_DANCE,
+ MOVE_DYNAMIC_PUNCH,
+ MOVE_COUNTER),
+
+ egg_moves(SNORUNT,
+ MOVE_BLOCK,
+ MOVE_SPIKES),
+
+ egg_moves(AZURILL,
+ MOVE_ENCORE,
+ MOVE_SING,
+ MOVE_REFRESH,
+ MOVE_SLAM,
+ MOVE_TICKLE),
+
+ egg_moves(SPOINK,
+ MOVE_FUTURE_SIGHT,
+ MOVE_EXTRASENSORY,
+ MOVE_SUBSTITUTE,
+ MOVE_TRICK),
+
+ egg_moves(PLUSLE,
+ MOVE_SUBSTITUTE,
+ MOVE_WISH),
+
+ egg_moves(MINUN,
+ MOVE_SUBSTITUTE,
+ MOVE_WISH),
+
+ egg_moves(MAWILE,
+ MOVE_SWORDS_DANCE,
+ MOVE_FALSE_SWIPE,
+ MOVE_POISON_FANG,
+ MOVE_PSYCH_UP,
+ MOVE_ANCIENT_POWER,
+ MOVE_TICKLE),
+
+ egg_moves(MEDITITE,
+ MOVE_FIRE_PUNCH,
+ MOVE_THUNDER_PUNCH,
+ MOVE_ICE_PUNCH,
+ MOVE_FORESIGHT,
+ MOVE_FAKE_OUT,
+ MOVE_BATON_PASS,
+ MOVE_DYNAMIC_PUNCH),
+
+ egg_moves(SWABLU,
+ MOVE_AGILITY,
+ MOVE_HAZE,
+ MOVE_PURSUIT,
+ MOVE_RAGE),
+
+ egg_moves(DUSKULL,
+ MOVE_IMPRISON,
+ MOVE_DESTINY_BOND,
+ MOVE_PAIN_SPLIT,
+ MOVE_GRUDGE,
+ MOVE_MEMENTO,
+ MOVE_FAINT_ATTACK),
+
+ egg_moves(ROSELIA,
+ MOVE_SPIKES,
+ MOVE_SYNTHESIS,
+ MOVE_PIN_MISSILE,
+ MOVE_COTTON_SPORE),
+
+ egg_moves(SLAKOTH,
+ MOVE_PURSUIT,
+ MOVE_SLASH,
+ MOVE_BODY_SLAM,
+ MOVE_SNORE,
+ MOVE_CRUSH_CLAW,
+ MOVE_CURSE,
+ MOVE_SLEEP_TALK),
+
+ egg_moves(GULPIN,
+ MOVE_DREAM_EATER,
+ MOVE_ACID_ARMOR,
+ MOVE_SMOG,
+ MOVE_PAIN_SPLIT),
+
+ egg_moves(TROPIUS,
+ MOVE_HEADBUTT,
+ MOVE_SLAM,
+ MOVE_RAZOR_WIND,
+ MOVE_LEECH_SEED,
+ MOVE_NATURE_POWER),
+
+ egg_moves(WHISMUR,
+ MOVE_TAKE_DOWN,
+ MOVE_SNORE,
+ MOVE_SWAGGER,
+ MOVE_EXTRASENSORY,
+ MOVE_SMELLING_SALT),
+
+ egg_moves(CLAMPERL,
+ MOVE_REFRESH,
+ MOVE_MUD_SPORT,
+ MOVE_BODY_SLAM,
+ MOVE_SUPERSONIC,
+ MOVE_BARRIER,
+ MOVE_CONFUSE_RAY),
+
+ egg_moves(ABSOL,
+ MOVE_BATON_PASS,
+ MOVE_FAINT_ATTACK,
+ MOVE_DOUBLE_EDGE,
+ MOVE_MAGIC_COAT,
+ MOVE_CURSE,
+ MOVE_SUBSTITUTE),
+
+ egg_moves(SHUPPET,
+ MOVE_DISABLE,
+ MOVE_DESTINY_BOND,
+ MOVE_FORESIGHT,
+ MOVE_ASTONISH,
+ MOVE_IMPRISON),
+
+ egg_moves(SEVIPER,
+ MOVE_STOCKPILE,
+ MOVE_SWALLOW,
+ MOVE_SPIT_UP,
+ MOVE_BODY_SLAM),
+
+ egg_moves(ZANGOOSE,
+ MOVE_FLAIL,
+ MOVE_DOUBLE_KICK,
+ MOVE_RAZOR_WIND,
+ MOVE_COUNTER,
+ MOVE_ROAR,
+ MOVE_CURSE),
+
+ egg_moves(RELICANTH,
+ MOVE_MAGNITUDE,
+ MOVE_SKULL_BASH,
+ MOVE_WATER_SPORT,
+ MOVE_AMNESIA,
+ MOVE_SLEEP_TALK,
+ MOVE_ROCK_SLIDE),
+
+ egg_moves(ARON,
+ MOVE_ENDEAVOR,
+ MOVE_BODY_SLAM,
+ MOVE_STOMP,
+ MOVE_SMELLING_SALT),
+
+ egg_moves(CASTFORM,
+ MOVE_FUTURE_SIGHT,
+ MOVE_PSYCH_UP),
+
+ egg_moves(VOLBEAT,
+ MOVE_BATON_PASS,
+ MOVE_SILVER_WIND,
+ MOVE_TRICK),
+
+ egg_moves(ILLUMISE,
+ MOVE_BATON_PASS,
+ MOVE_SILVER_WIND,
+ MOVE_GROWTH),
+
+ egg_moves(LILEEP,
+ MOVE_BARRIER,
+ MOVE_RECOVER,
+ MOVE_MIRROR_COAT,
+ MOVE_ROCK_SLIDE),
+
+ egg_moves(ANORITH,
+ MOVE_RAPID_SPIN,
+ MOVE_KNOCK_OFF,
+ MOVE_SWORDS_DANCE,
+ MOVE_ROCK_SLIDE),
+
+ egg_moves(RALTS,
+ MOVE_DISABLE,
+ MOVE_WILL_O_WISP,
+ MOVE_MEAN_LOOK,
+ MOVE_MEMENTO,
+ MOVE_DESTINY_BOND),
+
+ egg_moves(BAGON,
+ MOVE_HYDRO_PUMP,
+ MOVE_THRASH,
+ MOVE_DRAGON_RAGE,
+ MOVE_TWISTER,
+ MOVE_DRAGON_DANCE),
+
+ egg_moves(CHIMECHO,
+ MOVE_DISABLE,
+ MOVE_CURSE,
+ MOVE_HYPNOSIS,
+ MOVE_DREAM_EATER),
+
+ 0xFFFF
+};
diff --git a/include/data/pokemon/evolution.h b/include/data/pokemon/evolution.h
index 51e993347..919416fee 100644
--- a/include/data/pokemon/evolution.h
+++ b/include/data/pokemon/evolution.h
@@ -1,5 +1,5 @@
//
-// Created by Scott Norton on 6/27/17.
+
//
#ifndef POKERUBY_EVOLUTION_H
diff --git a/include/data/pokemon/experience_tables.h b/include/data/pokemon/experience_tables.h
index 70c5e88ed..2fb416fe9 100644
--- a/include/data/pokemon/experience_tables.h
+++ b/include/data/pokemon/experience_tables.h
@@ -1,5 +1,5 @@
//
-// Created by Scott Norton on 6/27/17.
+
//
#ifndef POKERUBY_EXPERIENCE_TABLES_H
diff --git a/include/data/pokemon/item_effects.h b/include/data/pokemon/item_effects.h
index b07573933..cd06228dd 100644
--- a/include/data/pokemon/item_effects.h
+++ b/include/data/pokemon/item_effects.h
@@ -1,5 +1,5 @@
//
-// Created by Scott Norton on 6/27/17.
+
//
#ifndef POKERUBY_ITEM_EFFECTS_H
diff --git a/include/data/pokemon/level_up_learnset_pointers.h b/include/data/pokemon/level_up_learnset_pointers.h
index 753947d51..19761c996 100644
--- a/include/data/pokemon/level_up_learnset_pointers.h
+++ b/include/data/pokemon/level_up_learnset_pointers.h
@@ -1,5 +1,5 @@
//
-// Created by Scott Norton on 6/27/17.
+
//
#ifndef POKERUBY_LEVEL_UP_LEARNSET_POINTERS_H
diff --git a/include/data/pokemon/level_up_learnsets.h b/include/data/pokemon/level_up_learnsets.h
index 5b79f4bc0..bc1de82de 100644
--- a/include/data/pokemon/level_up_learnsets.h
+++ b/include/data/pokemon/level_up_learnsets.h
@@ -1,5 +1,5 @@
//
-// Created by Scott Norton on 6/27/17.
+
//
#ifndef POKERUBY_LEVEL_UP_LEARNSETS_H
diff --git a/include/data/pokemon/nature_stats.h b/include/data/pokemon/nature_stats.h
index 27bd98f9d..fcef2a0ac 100644
--- a/include/data/pokemon/nature_stats.h
+++ b/include/data/pokemon/nature_stats.h
@@ -1,5 +1,5 @@
//
-// Created by Scott Norton on 6/27/17.
+
//
#ifndef POKERUBY_NATURE_STATS_H
diff --git a/include/data/pokemon/spinda_spots.h b/include/data/pokemon/spinda_spots.h
index 234cdf00e..d045e0734 100644
--- a/include/data/pokemon/spinda_spots.h
+++ b/include/data/pokemon/spinda_spots.h
@@ -1,5 +1,5 @@
//
-// Created by Scott Norton on 6/27/17.
+
//
#ifndef POKERUBY_SPINDA_SPOTS_H
diff --git a/include/data/pokemon/tmhm_learnsets.h b/include/data/pokemon/tmhm_learnsets.h
index fa48f7f5c..02cd22d56 100644
--- a/include/data/pokemon/tmhm_learnsets.h
+++ b/include/data/pokemon/tmhm_learnsets.h
@@ -1,5 +1,5 @@
//
-// Created by Scott Norton on 6/27/17.
+
//
#ifndef POKERUBY_TMHM_LEARNSETS_H
diff --git a/include/data/pokemon/trainer_class_lookups.h b/include/data/pokemon/trainer_class_lookups.h
index 0aea322a0..c86e795c4 100644
--- a/include/data/pokemon/trainer_class_lookups.h
+++ b/include/data/pokemon/trainer_class_lookups.h
@@ -1,5 +1,5 @@
//
-// Created by Scott Norton on 6/27/17.
+
//
#ifndef POKERUBY_TRAINER_CLASS_LOOKUPS_H
diff --git a/include/data2.h b/include/data2.h
index 9dd26fd5f..53a90944d 100644
--- a/include/data2.h
+++ b/include/data2.h
@@ -3,12 +3,7 @@
#include "sprite.h"
-struct UnknownStructD2
-{
- u32 unk0;
- u32 unk4;
- u32 unk8;
-};
+struct UnknownTaskStruct;
struct MonCoords
{
@@ -44,8 +39,10 @@ extern u8 gEnemyMonElevation[];
extern const u8 gTrainerClassNames[][13];
extern const struct Trainer gTrainers[];
extern u8 gSpeciesNames[][11];
-extern u8 gMoveNames[][13];
-extern const struct UnknownStructD2 gUnknown_081F9674;
+extern const u8 gMoveNames[][13];
+extern const u8 gAbilityNames[][13];
+extern const u8 gTypeNames[][7];
+extern const struct UnknownTaskStruct gUnknown_081F9674;
extern const u8 gUnknown_081F96C8[];
extern struct CompressedSpriteSheet gUnknown_081FAEA4;
extern struct CompressedSpritePalette gUnknown_081FAEAC;
diff --git a/include/daycare.h b/include/daycare.h
index b90c50610..e3aec68d3 100644
--- a/include/daycare.h
+++ b/include/daycare.h
@@ -1,9 +1,9 @@
#ifndef GUARD_DAYCARE_H
#define GUARD_DAYCARE_H
-u8 Daycare_CountPokemon(struct BoxPokemon *);
-void sub_8041324(struct BoxPokemon *, struct RecordMixing_UnknownStruct *);
-void sub_8041790(int i);
+u8 Daycare_CountPokemon(struct DayCareData *);
+void sub_8041324(struct BoxPokemon *, struct RecordMixingDayCareMail *);
+void sub_8041790(u16 i);
u16 sub_8041870(u16);
void sub_8041940(void);
void sub_8041950(void);
diff --git a/include/decompress.h b/include/decompress.h
index 07d69301f..84c1f29c0 100644
--- a/include/decompress.h
+++ b/include/decompress.h
@@ -10,7 +10,7 @@ void LoadCompressedObjectPicOverrideBuffer(const struct CompressedSpriteSheet *a
void LoadCompressedObjectPalette(const struct CompressedSpritePalette *a);
void LoadCompressedObjectPaletteOverrideBuffer(const struct CompressedSpritePalette *a, void *buffer);
void DecompressPicFromTable_2(const struct CompressedSpriteSheet *a, u8 b, u8 c, void *d, void *e, s32 f);
-void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *spriteSheet, u32 b, u32 c, u32 d, void *dest, s32 species, u32 g);
+void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *spriteSheet, u32 b, u32 c, u32 d, void *dest, s32 species, u32 pid);
void LoadSpecialPokePic(const struct CompressedSpriteSheet *spriteSheet, u32 b, u32 c, u32 d, void *dest, s32 species, u32 g, u32 h);
void Unused_LZDecompressWramIndirect(const void **src, void *dest);
diff --git a/include/diploma.h b/include/diploma.h
index 81e9e3bb2..8d730fa05 100644
--- a/include/diploma.h
+++ b/include/diploma.h
@@ -1,6 +1,6 @@
#ifndef GUARD_DIPLOMA_H
#define GUARD_DIPLOMA_H
-void sub_8145D88(void);
+void CB2_ShowDiploma(void);
#endif // GUARD_DIPLOMA_H
diff --git a/include/easy_chat.h b/include/easy_chat.h
index 03e9bb737..702082966 100644
--- a/include/easy_chat.h
+++ b/include/easy_chat.h
@@ -1,7 +1,8 @@
#ifndef GUARD_EASYCHAT_H
#define GUARD_EASYCHAT_H
-enum {
+enum
+{
EC_GROUP_POKEMON,
EC_GROUP_TRAINER,
EC_GROUP_STATUS,
@@ -26,6 +27,1037 @@ enum {
EC_GROUP_POKEMON_2,
};
+// TRAINER
+#define EC_WORD_I_CHOOSE_YOU (EC_GROUP_TRAINER << 9) | 0x0
+#define EC_WORD_GOTCHA (EC_GROUP_TRAINER << 9) | 0x1
+#define EC_WORD_TRADE (EC_GROUP_TRAINER << 9) | 0x2
+#define EC_WORD_SAPPHIRE (EC_GROUP_TRAINER << 9) | 0x3
+#define EC_WORD_EVOLVE (EC_GROUP_TRAINER << 9) | 0x4
+#define EC_WORD_ENCYCLOPEDIA (EC_GROUP_TRAINER << 9) | 0x5
+#define EC_WORD_NATURE (EC_GROUP_TRAINER << 9) | 0x6
+#define EC_WORD_CENTER (EC_GROUP_TRAINER << 9) | 0x7
+#define EC_WORD_EGG (EC_GROUP_TRAINER << 9) | 0x8
+#define EC_WORD_LINK (EC_GROUP_TRAINER << 9) | 0x9
+#define EC_WORD_SP_ABILITY (EC_GROUP_TRAINER << 9) | 0xa
+#define EC_WORD_TRAINER (EC_GROUP_TRAINER << 9) | 0xb
+#define EC_WORD_VERSION (EC_GROUP_TRAINER << 9) | 0xc
+#define EC_WORD_POKENAV (EC_GROUP_TRAINER << 9) | 0xd
+#define EC_WORD_POKEMON (EC_GROUP_TRAINER << 9) | 0xe
+#define EC_WORD_GET (EC_GROUP_TRAINER << 9) | 0xf
+#define EC_WORD_POKEDEX (EC_GROUP_TRAINER << 9) | 0x10
+#define EC_WORD_RUBY (EC_GROUP_TRAINER << 9) | 0x11
+#define EC_WORD_LEVEL (EC_GROUP_TRAINER << 9) | 0x12
+
+// STATUS
+#define EC_WORD_DARK (EC_GROUP_STATUS << 9) | 0x0
+#define EC_WORD_STENCH (EC_GROUP_STATUS << 9) | 0x1
+#define EC_WORD_THICK_FAT (EC_GROUP_STATUS << 9) | 0x2
+#define EC_WORD_RAIN_DISH (EC_GROUP_STATUS << 9) | 0x3
+#define EC_WORD_DRIZZLE (EC_GROUP_STATUS << 9) | 0x4
+#define EC_WORD_ARENA_TRAP (EC_GROUP_STATUS << 9) | 0x5
+#define EC_WORD_INTIMIDATE (EC_GROUP_STATUS << 9) | 0x6
+#define EC_WORD_ROCK_HEAD (EC_GROUP_STATUS << 9) | 0x7
+#define EC_WORD_COLOR (EC_GROUP_STATUS << 9) | 0x8
+#define EC_WORD_ALT_COLOR (EC_GROUP_STATUS << 9) | 0x9
+#define EC_WORD_ROCK (EC_GROUP_STATUS << 9) | 0xa
+#define EC_WORD_BEAUTIFUL (EC_GROUP_STATUS << 9) | 0xb
+#define EC_WORD_BEAUTY (EC_GROUP_STATUS << 9) | 0xc
+#define EC_WORD_AIR_LOCK (EC_GROUP_STATUS << 9) | 0xd
+#define EC_WORD_PSYCHIC (EC_GROUP_STATUS << 9) | 0xe
+#define EC_WORD_HYPER_CUTTER (EC_GROUP_STATUS << 9) | 0xf
+#define EC_WORD_FIGHTING (EC_GROUP_STATUS << 9) | 0x10
+#define EC_WORD_SHADOW_TAG (EC_GROUP_STATUS << 9) | 0x11
+#define EC_WORD_SMART (EC_GROUP_STATUS << 9) | 0x12
+#define EC_WORD_SMARTNESS (EC_GROUP_STATUS << 9) | 0x13
+#define EC_WORD_SPEED_BOOST (EC_GROUP_STATUS << 9) | 0x14
+#define EC_WORD_COOL (EC_GROUP_STATUS << 9) | 0x15
+#define EC_WORD_COOLNESS (EC_GROUP_STATUS << 9) | 0x16
+#define EC_WORD_BATTLE_ARMOR (EC_GROUP_STATUS << 9) | 0x17
+#define EC_WORD_CUTE (EC_GROUP_STATUS << 9) | 0x18
+#define EC_WORD_CUTENESS (EC_GROUP_STATUS << 9) | 0x19
+#define EC_WORD_STURDY (EC_GROUP_STATUS << 9) | 0x1a
+#define EC_WORD_SUCTION_CUPS (EC_GROUP_STATUS << 9) | 0x1b
+#define EC_WORD_GRASS (EC_GROUP_STATUS << 9) | 0x1c
+#define EC_WORD_CLEAR_BODY (EC_GROUP_STATUS << 9) | 0x1d
+#define EC_WORD_TORRENT (EC_GROUP_STATUS << 9) | 0x1e
+#define EC_WORD_GHOST (EC_GROUP_STATUS << 9) | 0x1f
+#define EC_WORD_ICE (EC_GROUP_STATUS << 9) | 0x20
+#define EC_WORD_GUTS (EC_GROUP_STATUS << 9) | 0x21
+#define EC_WORD_ROUGH_SKIN (EC_GROUP_STATUS << 9) | 0x22
+#define EC_WORD_SHELL_ARMOR (EC_GROUP_STATUS << 9) | 0x23
+#define EC_WORD_NATURAL_CURE (EC_GROUP_STATUS << 9) | 0x24
+#define EC_WORD_DAMP (EC_GROUP_STATUS << 9) | 0x25
+#define EC_WORD_GROUND (EC_GROUP_STATUS << 9) | 0x26
+#define EC_WORD_LIMBER (EC_GROUP_STATUS << 9) | 0x27
+#define EC_WORD_MAGNET_PULL (EC_GROUP_STATUS << 9) | 0x28
+#define EC_WORD_WHITE_SMOKE (EC_GROUP_STATUS << 9) | 0x29
+#define EC_WORD_SYNCHRONIZE (EC_GROUP_STATUS << 9) | 0x2a
+#define EC_WORD_OVERGROW (EC_GROUP_STATUS << 9) | 0x2b
+#define EC_WORD_SWIFT_SWIM (EC_GROUP_STATUS << 9) | 0x2c
+#define EC_WORD_SAND_STREAM (EC_GROUP_STATUS << 9) | 0x2d
+#define EC_WORD_SAND_VEIL (EC_GROUP_STATUS << 9) | 0x2e
+#define EC_WORD_KEEN_EYE (EC_GROUP_STATUS << 9) | 0x2f
+#define EC_WORD_INNER_FOCUS (EC_GROUP_STATUS << 9) | 0x30
+#define EC_WORD_STATIC (EC_GROUP_STATUS << 9) | 0x31
+#define EC_WORD_TYPE (EC_GROUP_STATUS << 9) | 0x32
+#define EC_WORD_TOUGH (EC_GROUP_STATUS << 9) | 0x33
+#define EC_WORD_TOUGHNESS (EC_GROUP_STATUS << 9) | 0x34
+#define EC_WORD_SHED_SKIN (EC_GROUP_STATUS << 9) | 0x35
+#define EC_WORD_HUGE_POWER (EC_GROUP_STATUS << 9) | 0x36
+#define EC_WORD_VOLT_ABSORB (EC_GROUP_STATUS << 9) | 0x37
+#define EC_WORD_WATER_ABSORB (EC_GROUP_STATUS << 9) | 0x38
+#define EC_WORD_ELECTRIC (EC_GROUP_STATUS << 9) | 0x39
+#define EC_WORD_FORECAST (EC_GROUP_STATUS << 9) | 0x3a
+#define EC_WORD_SERENE_GRACE (EC_GROUP_STATUS << 9) | 0x3b
+#define EC_WORD_POISON (EC_GROUP_STATUS << 9) | 0x3c
+#define EC_WORD_POISON_POINT (EC_GROUP_STATUS << 9) | 0x3d
+#define EC_WORD_DRAGON (EC_GROUP_STATUS << 9) | 0x3e
+#define EC_WORD_TRACE (EC_GROUP_STATUS << 9) | 0x3f
+#define EC_WORD_OBLIVIOUS (EC_GROUP_STATUS << 9) | 0x40
+#define EC_WORD_TRUANT (EC_GROUP_STATUS << 9) | 0x41
+#define EC_WORD_RUN_AWAY (EC_GROUP_STATUS << 9) | 0x42
+#define EC_WORD_STICKY_HOLD (EC_GROUP_STATUS << 9) | 0x43
+#define EC_WORD_CLOUD_NINE (EC_GROUP_STATUS << 9) | 0x44
+#define EC_WORD_NORMAL (EC_GROUP_STATUS << 9) | 0x45
+#define EC_WORD_STEEL (EC_GROUP_STATUS << 9) | 0x46
+#define EC_WORD_ILLUMINATE (EC_GROUP_STATUS << 9) | 0x47
+#define EC_WORD_EARLY_BIRD (EC_GROUP_STATUS << 9) | 0x48
+#define EC_WORD_HUSTLE (EC_GROUP_STATUS << 9) | 0x49
+#define EC_WORD_SHINE (EC_GROUP_STATUS << 9) | 0x4a
+#define EC_WORD_FLYING (EC_GROUP_STATUS << 9) | 0x4b
+#define EC_WORD_DROUGHT (EC_GROUP_STATUS << 9) | 0x4c
+#define EC_WORD_LIGHTNINGROD (EC_GROUP_STATUS << 9) | 0x4d
+#define EC_WORD_COMPOUNDEYES (EC_GROUP_STATUS << 9) | 0x4e
+#define EC_WORD_MARVEL_SCALE (EC_GROUP_STATUS << 9) | 0x4f
+#define EC_WORD_WONDER_GUARD (EC_GROUP_STATUS << 9) | 0x50
+#define EC_WORD_INSOMNIA (EC_GROUP_STATUS << 9) | 0x51
+#define EC_WORD_LEVITATE (EC_GROUP_STATUS << 9) | 0x52
+#define EC_WORD_PLUS (EC_GROUP_STATUS << 9) | 0x53
+#define EC_WORD_PRESSURE (EC_GROUP_STATUS << 9) | 0x54
+#define EC_WORD_LIQUID_OOZE (EC_GROUP_STATUS << 9) | 0x55
+#define EC_WORD_COLOR_CHANGE (EC_GROUP_STATUS << 9) | 0x56
+#define EC_WORD_SOUNDPROOF (EC_GROUP_STATUS << 9) | 0x57
+#define EC_WORD_EFFECT_SPORE (EC_GROUP_STATUS << 9) | 0x58
+#define EC_WORD_PKRS (EC_GROUP_STATUS << 9) | 0x59
+#define EC_WORD_FIRE (EC_GROUP_STATUS << 9) | 0x5a
+#define EC_WORD_FLAME_BODY (EC_GROUP_STATUS << 9) | 0x5b
+#define EC_WORD_MINUS (EC_GROUP_STATUS << 9) | 0x5c
+#define EC_WORD_OWN_TEMPO (EC_GROUP_STATUS << 9) | 0x5d
+#define EC_WORD_MAGMA_ARMOR (EC_GROUP_STATUS << 9) | 0x5e
+#define EC_WORD_WATER (EC_GROUP_STATUS << 9) | 0x5f
+#define EC_WORD_WATER_VEIL (EC_GROUP_STATUS << 9) | 0x60
+#define EC_WORD_BUG (EC_GROUP_STATUS << 9) | 0x61
+#define EC_WORD_SWARM (EC_GROUP_STATUS << 9) | 0x62
+#define EC_WORD_CUTE_CHARM (EC_GROUP_STATUS << 9) | 0x63
+#define EC_WORD_IMMUNITY (EC_GROUP_STATUS << 9) | 0x64
+#define EC_WORD_BLAZE (EC_GROUP_STATUS << 9) | 0x65
+#define EC_WORD_PICKUP (EC_GROUP_STATUS << 9) | 0x66
+#define EC_WORD_PATTERN (EC_GROUP_STATUS << 9) | 0x67
+#define EC_WORD_FLASH_FIRE (EC_GROUP_STATUS << 9) | 0x68
+#define EC_WORD_VITAL_SPIRIT (EC_GROUP_STATUS << 9) | 0x69
+#define EC_WORD_CHLOROPHYLL (EC_GROUP_STATUS << 9) | 0x6a
+#define EC_WORD_PURE_POWER (EC_GROUP_STATUS << 9) | 0x6b
+#define EC_WORD_SHIELD_DUST (EC_GROUP_STATUS << 9) | 0x6c
+
+// BATTLE
+#define EC_WORD_MATCH_UP (EC_GROUP_BATTLE << 9) | 0x0
+#define EC_WORD_GO (EC_GROUP_BATTLE << 9) | 0x1
+#define EC_WORD_NO_1 (EC_GROUP_BATTLE << 9) | 0x2
+#define EC_WORD_DECIDE (EC_GROUP_BATTLE << 9) | 0x3
+#define EC_WORD_LET_ME_WIN (EC_GROUP_BATTLE << 9) | 0x4
+#define EC_WORD_WINS (EC_GROUP_BATTLE << 9) | 0x5
+#define EC_WORD_WIN (EC_GROUP_BATTLE << 9) | 0x6
+#define EC_WORD_WON (EC_GROUP_BATTLE << 9) | 0x7
+#define EC_WORD_IF_I_WIN (EC_GROUP_BATTLE << 9) | 0x8
+#define EC_WORD_WHEN_I_WIN (EC_GROUP_BATTLE << 9) | 0x9
+#define EC_WORD_CAN_T_WIN (EC_GROUP_BATTLE << 9) | 0xa
+#define EC_WORD_CAN_WIN (EC_GROUP_BATTLE << 9) | 0xb
+#define EC_WORD_NO_MATCH (EC_GROUP_BATTLE << 9) | 0xc
+#define EC_WORD_SPIRIT (EC_GROUP_BATTLE << 9) | 0xd
+#define EC_WORD_DECIDED (EC_GROUP_BATTLE << 9) | 0xe
+#define EC_WORD_TRUMP_CARD (EC_GROUP_BATTLE << 9) | 0xf
+#define EC_WORD_TAKE_THAT (EC_GROUP_BATTLE << 9) | 0x10
+#define EC_WORD_COME_ON (EC_GROUP_BATTLE << 9) | 0x11
+#define EC_WORD_ATTACK (EC_GROUP_BATTLE << 9) | 0x12
+#define EC_WORD_SURRENDER (EC_GROUP_BATTLE << 9) | 0x13
+#define EC_WORD_GUTSY (EC_GROUP_BATTLE << 9) | 0x14
+#define EC_WORD_TALENT (EC_GROUP_BATTLE << 9) | 0x15
+#define EC_WORD_STRATEGY (EC_GROUP_BATTLE << 9) | 0x16
+#define EC_WORD_SMITE (EC_GROUP_BATTLE << 9) | 0x17
+#define EC_WORD_MATCH (EC_GROUP_BATTLE << 9) | 0x18
+#define EC_WORD_VICTORY (EC_GROUP_BATTLE << 9) | 0x19
+#define EC_WORD_OFFENSIVE (EC_GROUP_BATTLE << 9) | 0x1a
+#define EC_WORD_SENSE (EC_GROUP_BATTLE << 9) | 0x1b
+#define EC_WORD_VERSUS (EC_GROUP_BATTLE << 9) | 0x1c
+#define EC_WORD_FIGHTS (EC_GROUP_BATTLE << 9) | 0x1d
+#define EC_WORD_POWER (EC_GROUP_BATTLE << 9) | 0x1e
+#define EC_WORD_CHALLENGE (EC_GROUP_BATTLE << 9) | 0x1f
+#define EC_WORD_STRONG (EC_GROUP_BATTLE << 9) | 0x20
+#define EC_WORD_TOO_STRONG (EC_GROUP_BATTLE << 9) | 0x21
+#define EC_WORD_GO_EASY (EC_GROUP_BATTLE << 9) | 0x22
+#define EC_WORD_FOE (EC_GROUP_BATTLE << 9) | 0x23
+#define EC_WORD_GENIUS (EC_GROUP_BATTLE << 9) | 0x24
+#define EC_WORD_LEGEND (EC_GROUP_BATTLE << 9) | 0x25
+#define EC_WORD_ESCAPE (EC_GROUP_BATTLE << 9) | 0x26
+#define EC_WORD_AIM (EC_GROUP_BATTLE << 9) | 0x27
+#define EC_WORD_BATTLE (EC_GROUP_BATTLE << 9) | 0x28
+#define EC_WORD_FIGHT (EC_GROUP_BATTLE << 9) | 0x29
+#define EC_WORD_RESUSCITATE (EC_GROUP_BATTLE << 9) | 0x2a
+#define EC_WORD_POINTS (EC_GROUP_BATTLE << 9) | 0x2b
+#define EC_WORD_SERIOUS (EC_GROUP_BATTLE << 9) | 0x2c
+#define EC_WORD_GIVE_UP (EC_GROUP_BATTLE << 9) | 0x2d
+#define EC_WORD_LOSS (EC_GROUP_BATTLE << 9) | 0x2e
+#define EC_WORD_IF_I_LOSE (EC_GROUP_BATTLE << 9) | 0x2f
+#define EC_WORD_LOST (EC_GROUP_BATTLE << 9) | 0x30
+#define EC_WORD_LOSE (EC_GROUP_BATTLE << 9) | 0x31
+#define EC_WORD_GUARD (EC_GROUP_BATTLE << 9) | 0x32
+#define EC_WORD_PARTNER (EC_GROUP_BATTLE << 9) | 0x33
+#define EC_WORD_REJECT (EC_GROUP_BATTLE << 9) | 0x34
+#define EC_WORD_ACCEPT (EC_GROUP_BATTLE << 9) | 0x35
+#define EC_WORD_INVINCIBLE (EC_GROUP_BATTLE << 9) | 0x36
+#define EC_WORD_RECEIVED (EC_GROUP_BATTLE << 9) | 0x37
+#define EC_WORD_EASY (EC_GROUP_BATTLE << 9) | 0x38
+#define EC_WORD_WEAK (EC_GROUP_BATTLE << 9) | 0x39
+#define EC_WORD_TOO_WEAK (EC_GROUP_BATTLE << 9) | 0x3a
+#define EC_WORD_PUSHOVER (EC_GROUP_BATTLE << 9) | 0x3b
+#define EC_WORD_LEADER (EC_GROUP_BATTLE << 9) | 0x3c
+#define EC_WORD_RULE (EC_GROUP_BATTLE << 9) | 0x3d
+#define EC_WORD_MOVE (EC_GROUP_BATTLE << 9) | 0x3e
+
+// GREETINGS
+#define EC_WORD_THANKS (EC_GROUP_GREETINGS << 9) | 0x0
+#define EC_WORD_YES (EC_GROUP_GREETINGS << 9) | 0x1
+#define EC_WORD_HERE_GOES (EC_GROUP_GREETINGS << 9) | 0x2
+#define EC_WORD_HERE_I_COME (EC_GROUP_GREETINGS << 9) | 0x3
+#define EC_WORD_HERE_IT_IS (EC_GROUP_GREETINGS << 9) | 0x4
+#define EC_WORD_YEAH (EC_GROUP_GREETINGS << 9) | 0x5
+#define EC_WORD_WELCOME (EC_GROUP_GREETINGS << 9) | 0x6
+#define EC_WORD_OI (EC_GROUP_GREETINGS << 9) | 0x7
+#define EC_WORD_HOW_DO (EC_GROUP_GREETINGS << 9) | 0x8
+#define EC_WORD_CONGRATS (EC_GROUP_GREETINGS << 9) | 0x9
+#define EC_WORD_GIVE_ME (EC_GROUP_GREETINGS << 9) | 0xa
+#define EC_WORD_SORRY (EC_GROUP_GREETINGS << 9) | 0xb
+#define EC_WORD_APOLOGIZE (EC_GROUP_GREETINGS << 9) | 0xc
+#define EC_WORD_FORGIVE (EC_GROUP_GREETINGS << 9) | 0xd
+#define EC_WORD_HEY_THERE (EC_GROUP_GREETINGS << 9) | 0xe
+#define EC_WORD_HELLO (EC_GROUP_GREETINGS << 9) | 0xf
+#define EC_WORD_GOOD_BYE (EC_GROUP_GREETINGS << 9) | 0x10
+#define EC_WORD_THANK_YOU (EC_GROUP_GREETINGS << 9) | 0x11
+#define EC_WORD_I_VE_ARRIVED (EC_GROUP_GREETINGS << 9) | 0x12
+#define EC_WORD_PARDON (EC_GROUP_GREETINGS << 9) | 0x13
+#define EC_WORD_EXCUSE (EC_GROUP_GREETINGS << 9) | 0x14
+#define EC_WORD_SEE_YA (EC_GROUP_GREETINGS << 9) | 0x15
+#define EC_WORD_EXCUSE_ME (EC_GROUP_GREETINGS << 9) | 0x16
+#define EC_WORD_WELL_THEN (EC_GROUP_GREETINGS << 9) | 0x17
+#define EC_WORD_GO_AHEAD (EC_GROUP_GREETINGS << 9) | 0x18
+#define EC_WORD_APPRECIATE (EC_GROUP_GREETINGS << 9) | 0x19
+#define EC_WORD_HEY_QUES (EC_GROUP_GREETINGS << 9) | 0x1a
+#define EC_WORD_WHAT_S_UP_QUES (EC_GROUP_GREETINGS << 9) | 0x1b
+#define EC_WORD_HUH_QUES (EC_GROUP_GREETINGS << 9) | 0x1c
+#define EC_WORD_NO (EC_GROUP_GREETINGS << 9) | 0x1d
+#define EC_WORD_HI (EC_GROUP_GREETINGS << 9) | 0x1e
+#define EC_WORD_YEAH_YEAH (EC_GROUP_GREETINGS << 9) | 0x1f
+#define EC_WORD_BYE_BYE (EC_GROUP_GREETINGS << 9) | 0x20
+#define EC_WORD_MEET_YOU (EC_GROUP_GREETINGS << 9) | 0x21
+#define EC_WORD_HEY (EC_GROUP_GREETINGS << 9) | 0x22
+#define EC_WORD_SMELL (EC_GROUP_GREETINGS << 9) | 0x23
+#define EC_WORD_LISTENING (EC_GROUP_GREETINGS << 9) | 0x24
+#define EC_WORD_HOO_HAH (EC_GROUP_GREETINGS << 9) | 0x25
+#define EC_WORD_YAHOO (EC_GROUP_GREETINGS << 9) | 0x26
+#define EC_WORD_YO (EC_GROUP_GREETINGS << 9) | 0x27
+#define EC_WORD_COME_OVER (EC_GROUP_GREETINGS << 9) | 0x28
+#define EC_WORD_COUNT_ON (EC_GROUP_GREETINGS << 9) | 0x29
+
+// PEOPLE
+#define EC_WORD_OPPONENT (EC_GROUP_PEOPLE << 9) | 0x0
+#define EC_WORD_I (EC_GROUP_PEOPLE << 9) | 0x1
+#define EC_WORD_YOU (EC_GROUP_PEOPLE << 9) | 0x2
+#define EC_WORD_YOURS (EC_GROUP_PEOPLE << 9) | 0x3
+#define EC_WORD_SON (EC_GROUP_PEOPLE << 9) | 0x4
+#define EC_WORD_YOUR (EC_GROUP_PEOPLE << 9) | 0x5
+#define EC_WORD_YOU_RE (EC_GROUP_PEOPLE << 9) | 0x6
+#define EC_WORD_YOU_VE (EC_GROUP_PEOPLE << 9) | 0x7
+#define EC_WORD_MOTHER (EC_GROUP_PEOPLE << 9) | 0x8
+#define EC_WORD_GRANDFATHER (EC_GROUP_PEOPLE << 9) | 0x9
+#define EC_WORD_UNCLE (EC_GROUP_PEOPLE << 9) | 0xa
+#define EC_WORD_FATHER (EC_GROUP_PEOPLE << 9) | 0xb
+#define EC_WORD_BOY (EC_GROUP_PEOPLE << 9) | 0xc
+#define EC_WORD_ADULT (EC_GROUP_PEOPLE << 9) | 0xd
+#define EC_WORD_BROTHER (EC_GROUP_PEOPLE << 9) | 0xe
+#define EC_WORD_SISTER (EC_GROUP_PEOPLE << 9) | 0xf
+#define EC_WORD_GRANDMOTHER (EC_GROUP_PEOPLE << 9) | 0x10
+#define EC_WORD_AUNT (EC_GROUP_PEOPLE << 9) | 0x11
+#define EC_WORD_PARENT (EC_GROUP_PEOPLE << 9) | 0x12
+#define EC_WORD_MAN (EC_GROUP_PEOPLE << 9) | 0x13
+#define EC_WORD_ME (EC_GROUP_PEOPLE << 9) | 0x14
+#define EC_WORD_GIRL (EC_GROUP_PEOPLE << 9) | 0x15
+#define EC_WORD_BABE (EC_GROUP_PEOPLE << 9) | 0x16
+#define EC_WORD_FAMILY (EC_GROUP_PEOPLE << 9) | 0x17
+#define EC_WORD_HER (EC_GROUP_PEOPLE << 9) | 0x18
+#define EC_WORD_HIM (EC_GROUP_PEOPLE << 9) | 0x19
+#define EC_WORD_HE (EC_GROUP_PEOPLE << 9) | 0x1a
+#define EC_WORD_PLACE (EC_GROUP_PEOPLE << 9) | 0x1b
+#define EC_WORD_DAUGHTER (EC_GROUP_PEOPLE << 9) | 0x1c
+#define EC_WORD_HIS (EC_GROUP_PEOPLE << 9) | 0x1d
+#define EC_WORD_HE_S (EC_GROUP_PEOPLE << 9) | 0x1e
+#define EC_WORD_AREN_T (EC_GROUP_PEOPLE << 9) | 0x1f
+#define EC_WORD_SIBLINGS (EC_GROUP_PEOPLE << 9) | 0x20
+#define EC_WORD_KID (EC_GROUP_PEOPLE << 9) | 0x21
+#define EC_WORD_CHILDREN (EC_GROUP_PEOPLE << 9) | 0x22
+#define EC_WORD_MR (EC_GROUP_PEOPLE << 9) | 0x23
+#define EC_WORD_MRS (EC_GROUP_PEOPLE << 9) | 0x24
+#define EC_WORD_MYSELF (EC_GROUP_PEOPLE << 9) | 0x25
+#define EC_WORD_I_WAS (EC_GROUP_PEOPLE << 9) | 0x26
+#define EC_WORD_TO_ME (EC_GROUP_PEOPLE << 9) | 0x27
+#define EC_WORD_MY (EC_GROUP_PEOPLE << 9) | 0x28
+#define EC_WORD_I_AM (EC_GROUP_PEOPLE << 9) | 0x29
+#define EC_WORD_I_VE (EC_GROUP_PEOPLE << 9) | 0x2a
+#define EC_WORD_WHO (EC_GROUP_PEOPLE << 9) | 0x2b
+#define EC_WORD_SOMEONE (EC_GROUP_PEOPLE << 9) | 0x2c
+#define EC_WORD_WHO_WAS (EC_GROUP_PEOPLE << 9) | 0x2d
+#define EC_WORD_TO_WHOM (EC_GROUP_PEOPLE << 9) | 0x2e
+#define EC_WORD_WHOSE (EC_GROUP_PEOPLE << 9) | 0x2f
+#define EC_WORD_WHO_IS (EC_GROUP_PEOPLE << 9) | 0x30
+#define EC_WORD_IT_S (EC_GROUP_PEOPLE << 9) | 0x31
+#define EC_WORD_LADY (EC_GROUP_PEOPLE << 9) | 0x32
+#define EC_WORD_FRIEND (EC_GROUP_PEOPLE << 9) | 0x33
+#define EC_WORD_ALLY (EC_GROUP_PEOPLE << 9) | 0x34
+#define EC_WORD_PERSON (EC_GROUP_PEOPLE << 9) | 0x35
+#define EC_WORD_DUDE (EC_GROUP_PEOPLE << 9) | 0x36
+#define EC_WORD_THEY (EC_GROUP_PEOPLE << 9) | 0x37
+#define EC_WORD_THEY_WERE (EC_GROUP_PEOPLE << 9) | 0x38
+#define EC_WORD_TO_THEM (EC_GROUP_PEOPLE << 9) | 0x39
+#define EC_WORD_THEIR (EC_GROUP_PEOPLE << 9) | 0x3a
+#define EC_WORD_THEY_RE (EC_GROUP_PEOPLE << 9) | 0x3b
+#define EC_WORD_THEY_VE (EC_GROUP_PEOPLE << 9) | 0x3c
+#define EC_WORD_WE (EC_GROUP_PEOPLE << 9) | 0x3d
+#define EC_WORD_BEEN (EC_GROUP_PEOPLE << 9) | 0x3e
+#define EC_WORD_TO_US (EC_GROUP_PEOPLE << 9) | 0x3f
+#define EC_WORD_OUR (EC_GROUP_PEOPLE << 9) | 0x40
+#define EC_WORD_WE_RE (EC_GROUP_PEOPLE << 9) | 0x41
+#define EC_WORD_RIVAL (EC_GROUP_PEOPLE << 9) | 0x42
+#define EC_WORD_WE_VE (EC_GROUP_PEOPLE << 9) | 0x43
+#define EC_WORD_WOMAN (EC_GROUP_PEOPLE << 9) | 0x44
+#define EC_WORD_SHE (EC_GROUP_PEOPLE << 9) | 0x45
+#define EC_WORD_SHE_WAS (EC_GROUP_PEOPLE << 9) | 0x46
+#define EC_WORD_TO_HER (EC_GROUP_PEOPLE << 9) | 0x47
+#define EC_WORD_HERS (EC_GROUP_PEOPLE << 9) | 0x48
+#define EC_WORD_SHE_IS (EC_GROUP_PEOPLE << 9) | 0x49
+#define EC_WORD_SOME (EC_GROUP_PEOPLE << 9) | 0x4a
+
+// VOICES
+#define EC_WORD_EXCL (EC_GROUP_VOICES << 9) | 0x0
+#define EC_WORD_EXCL_EXCL (EC_GROUP_VOICES << 9) | 0x1
+#define EC_WORD_QUES_EXCL (EC_GROUP_VOICES << 9) | 0x2
+#define EC_WORD_QUES (EC_GROUP_VOICES << 9) | 0x3
+#define EC_WORD_ELLIPSIS (EC_GROUP_VOICES << 9) | 0x4
+#define EC_WORD_ELLIPSIS_EXCL (EC_GROUP_VOICES << 9) | 0x5
+#define EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS (EC_GROUP_VOICES << 9) | 0x6
+#define EC_WORD_DASH (EC_GROUP_VOICES << 9) | 0x7
+#define EC_WORD_DASH_DASH_DASH (EC_GROUP_VOICES << 9) | 0x8
+#define EC_WORD_UH_OH (EC_GROUP_VOICES << 9) | 0x9
+#define EC_WORD_WAAAH (EC_GROUP_VOICES << 9) | 0xa
+#define EC_WORD_AHAHA (EC_GROUP_VOICES << 9) | 0xb
+#define EC_WORD_OH_QUES (EC_GROUP_VOICES << 9) | 0xc
+#define EC_WORD_NOPE (EC_GROUP_VOICES << 9) | 0xd
+#define EC_WORD_URGH (EC_GROUP_VOICES << 9) | 0xe
+#define EC_WORD_HMM (EC_GROUP_VOICES << 9) | 0xf
+#define EC_WORD_WHOAH (EC_GROUP_VOICES << 9) | 0x10
+#define EC_WORD_WROOOAAR_EXCL (EC_GROUP_VOICES << 9) | 0x11
+#define EC_WORD_WOW (EC_GROUP_VOICES << 9) | 0x12
+#define EC_WORD_GIGGLE (EC_GROUP_VOICES << 9) | 0x13
+#define EC_WORD_SIGH (EC_GROUP_VOICES << 9) | 0x14
+#define EC_WORD_UNBELIEVABLE (EC_GROUP_VOICES << 9) | 0x15
+#define EC_WORD_CRIES (EC_GROUP_VOICES << 9) | 0x16
+#define EC_WORD_AGREE (EC_GROUP_VOICES << 9) | 0x17
+#define EC_WORD_EH_QUES (EC_GROUP_VOICES << 9) | 0x18
+#define EC_WORD_CRY (EC_GROUP_VOICES << 9) | 0x19
+#define EC_WORD_EHEHE (EC_GROUP_VOICES << 9) | 0x1a
+#define EC_WORD_OI_OI_OI (EC_GROUP_VOICES << 9) | 0x1b
+#define EC_WORD_OH_YEAH (EC_GROUP_VOICES << 9) | 0x1c
+#define EC_WORD_OH (EC_GROUP_VOICES << 9) | 0x1d
+#define EC_WORD_OOPS (EC_GROUP_VOICES << 9) | 0x1e
+#define EC_WORD_SHOCKED (EC_GROUP_VOICES << 9) | 0x1f
+#define EC_WORD_EEK (EC_GROUP_VOICES << 9) | 0x20
+#define EC_WORD_GRAAAH (EC_GROUP_VOICES << 9) | 0x21
+#define EC_WORD_GWAHAHAHA (EC_GROUP_VOICES << 9) | 0x22
+#define EC_WORD_WAY (EC_GROUP_VOICES << 9) | 0x23
+#define EC_WORD_TCH (EC_GROUP_VOICES << 9) | 0x24
+#define EC_WORD_HEHE (EC_GROUP_VOICES << 9) | 0x25
+#define EC_WORD_HAH (EC_GROUP_VOICES << 9) | 0x26
+#define EC_WORD_YUP (EC_GROUP_VOICES << 9) | 0x27
+#define EC_WORD_HAHAHA (EC_GROUP_VOICES << 9) | 0x28
+#define EC_WORD_AIYEEH (EC_GROUP_VOICES << 9) | 0x29
+#define EC_WORD_HIYAH (EC_GROUP_VOICES << 9) | 0x2a
+#define EC_WORD_FUFUFU (EC_GROUP_VOICES << 9) | 0x2b
+#define EC_WORD_LOL (EC_GROUP_VOICES << 9) | 0x2c
+#define EC_WORD_SNORT (EC_GROUP_VOICES << 9) | 0x2d
+#define EC_WORD_HUMPH (EC_GROUP_VOICES << 9) | 0x2e
+#define EC_WORD_HEHEHE (EC_GROUP_VOICES << 9) | 0x2f
+#define EC_WORD_HEH (EC_GROUP_VOICES << 9) | 0x30
+#define EC_WORD_HOHOHO (EC_GROUP_VOICES << 9) | 0x31
+#define EC_WORD_UH_HUH (EC_GROUP_VOICES << 9) | 0x32
+#define EC_WORD_OH_DEAR (EC_GROUP_VOICES << 9) | 0x33
+#define EC_WORD_ARRGH (EC_GROUP_VOICES << 9) | 0x34
+#define EC_WORD_MUFUFU (EC_GROUP_VOICES << 9) | 0x35
+#define EC_WORD_MMM (EC_GROUP_VOICES << 9) | 0x36
+#define EC_WORD_OH_KAY (EC_GROUP_VOICES << 9) | 0x37
+#define EC_WORD_OKAY (EC_GROUP_VOICES << 9) | 0x38
+#define EC_WORD_LALALA (EC_GROUP_VOICES << 9) | 0x39
+#define EC_WORD_YAY (EC_GROUP_VOICES << 9) | 0x3a
+#define EC_WORD_AWW (EC_GROUP_VOICES << 9) | 0x3b
+#define EC_WORD_WOWEE (EC_GROUP_VOICES << 9) | 0x3c
+#define EC_WORD_GWAH (EC_GROUP_VOICES << 9) | 0x3d
+#define EC_WORD_WAHAHAHA (EC_GROUP_VOICES << 9) | 0x3e
+
+// SPEECH
+#define EC_WORD_LISTEN (EC_GROUP_SPEECH << 9) | 0x0
+#define EC_WORD_NOT_VERY (EC_GROUP_SPEECH << 9) | 0x1
+#define EC_WORD_MEAN (EC_GROUP_SPEECH << 9) | 0x2
+#define EC_WORD_LIE (EC_GROUP_SPEECH << 9) | 0x3
+#define EC_WORD_LAY (EC_GROUP_SPEECH << 9) | 0x4
+#define EC_WORD_RECOMMEND (EC_GROUP_SPEECH << 9) | 0x5
+#define EC_WORD_NITWIT (EC_GROUP_SPEECH << 9) | 0x6
+#define EC_WORD_QUITE (EC_GROUP_SPEECH << 9) | 0x7
+#define EC_WORD_FROM (EC_GROUP_SPEECH << 9) | 0x8
+#define EC_WORD_FEELING (EC_GROUP_SPEECH << 9) | 0x9
+#define EC_WORD_BUT (EC_GROUP_SPEECH << 9) | 0xa
+#define EC_WORD_HOWEVER (EC_GROUP_SPEECH << 9) | 0xb
+#define EC_WORD_CASE (EC_GROUP_SPEECH << 9) | 0xc
+#define EC_WORD_THE (EC_GROUP_SPEECH << 9) | 0xd
+#define EC_WORD_MISS (EC_GROUP_SPEECH << 9) | 0xe
+#define EC_WORD_HOW (EC_GROUP_SPEECH << 9) | 0xf
+#define EC_WORD_HIT (EC_GROUP_SPEECH << 9) | 0x10
+#define EC_WORD_ENOUGH (EC_GROUP_SPEECH << 9) | 0x11
+#define EC_WORD_A_LOT (EC_GROUP_SPEECH << 9) | 0x12
+#define EC_WORD_A_LITTLE (EC_GROUP_SPEECH << 9) | 0x13
+#define EC_WORD_ABSOLUTELY (EC_GROUP_SPEECH << 9) | 0x14
+#define EC_WORD_AND (EC_GROUP_SPEECH << 9) | 0x15
+#define EC_WORD_ONLY (EC_GROUP_SPEECH << 9) | 0x16
+#define EC_WORD_AROUND (EC_GROUP_SPEECH << 9) | 0x17
+#define EC_WORD_PROBABLY (EC_GROUP_SPEECH << 9) | 0x18
+#define EC_WORD_IF (EC_GROUP_SPEECH << 9) | 0x19
+#define EC_WORD_VERY (EC_GROUP_SPEECH << 9) | 0x1a
+#define EC_WORD_A_TINY_BIT (EC_GROUP_SPEECH << 9) | 0x1b
+#define EC_WORD_WILD (EC_GROUP_SPEECH << 9) | 0x1c
+#define EC_WORD_THAT_S (EC_GROUP_SPEECH << 9) | 0x1d
+#define EC_WORD_JUST (EC_GROUP_SPEECH << 9) | 0x1e
+#define EC_WORD_EVEN_SO (EC_GROUP_SPEECH << 9) | 0x1f
+#define EC_WORD_MUST_BE (EC_GROUP_SPEECH << 9) | 0x20
+#define EC_WORD_NATURALLY (EC_GROUP_SPEECH << 9) | 0x21
+#define EC_WORD_FOR_NOW (EC_GROUP_SPEECH << 9) | 0x22
+#define EC_WORD_UNDERSTOOD (EC_GROUP_SPEECH << 9) | 0x23
+#define EC_WORD_JOKING (EC_GROUP_SPEECH << 9) | 0x24
+#define EC_WORD_READY (EC_GROUP_SPEECH << 9) | 0x25
+#define EC_WORD_SOMETHING (EC_GROUP_SPEECH << 9) | 0x26
+#define EC_WORD_SOMEHOW (EC_GROUP_SPEECH << 9) | 0x27
+#define EC_WORD_ALTHOUGH (EC_GROUP_SPEECH << 9) | 0x28
+#define EC_WORD_ALSO (EC_GROUP_SPEECH << 9) | 0x29
+#define EC_WORD_PERFECT (EC_GROUP_SPEECH << 9) | 0x2a
+#define EC_WORD_AS_MUCH_AS (EC_GROUP_SPEECH << 9) | 0x2b
+#define EC_WORD_REALLY (EC_GROUP_SPEECH << 9) | 0x2c
+#define EC_WORD_TRULY (EC_GROUP_SPEECH << 9) | 0x2d
+#define EC_WORD_SERIOUSLY (EC_GROUP_SPEECH << 9) | 0x2e
+#define EC_WORD_TOTALLY (EC_GROUP_SPEECH << 9) | 0x2f
+#define EC_WORD_UNTIL (EC_GROUP_SPEECH << 9) | 0x30
+#define EC_WORD_AS_IF (EC_GROUP_SPEECH << 9) | 0x31
+#define EC_WORD_MOOD (EC_GROUP_SPEECH << 9) | 0x32
+#define EC_WORD_RATHER (EC_GROUP_SPEECH << 9) | 0x33
+#define EC_WORD_AWFULLY (EC_GROUP_SPEECH << 9) | 0x34
+#define EC_WORD_MODE (EC_GROUP_SPEECH << 9) | 0x35
+#define EC_WORD_MORE (EC_GROUP_SPEECH << 9) | 0x36
+#define EC_WORD_TOO_LATE (EC_GROUP_SPEECH << 9) | 0x37
+#define EC_WORD_FINALLY (EC_GROUP_SPEECH << 9) | 0x38
+#define EC_WORD_ANY (EC_GROUP_SPEECH << 9) | 0x39
+#define EC_WORD_INSTEAD (EC_GROUP_SPEECH << 9) | 0x3a
+#define EC_WORD_FANTASTIC (EC_GROUP_SPEECH << 9) | 0x3b
+
+// ENDINGS
+#define EC_WORD_WILL (EC_GROUP_ENDINGS << 9) | 0x0
+#define EC_WORD_WILL_BE_HERE (EC_GROUP_ENDINGS << 9) | 0x1
+#define EC_WORD_OR (EC_GROUP_ENDINGS << 9) | 0x2
+#define EC_WORD_TIMES (EC_GROUP_ENDINGS << 9) | 0x3
+#define EC_WORD_WONDER (EC_GROUP_ENDINGS << 9) | 0x4
+#define EC_WORD_IS_IT_QUES (EC_GROUP_ENDINGS << 9) | 0x5
+#define EC_WORD_BE (EC_GROUP_ENDINGS << 9) | 0x6
+#define EC_WORD_GIMME (EC_GROUP_ENDINGS << 9) | 0x7
+#define EC_WORD_COULD (EC_GROUP_ENDINGS << 9) | 0x8
+#define EC_WORD_LIKELY_TO (EC_GROUP_ENDINGS << 9) | 0x9
+#define EC_WORD_WOULD (EC_GROUP_ENDINGS << 9) | 0xa
+#define EC_WORD_IS (EC_GROUP_ENDINGS << 9) | 0xb
+#define EC_WORD_ISN_T_IT_QUES (EC_GROUP_ENDINGS << 9) | 0xc
+#define EC_WORD_LET_S (EC_GROUP_ENDINGS << 9) | 0xd
+#define EC_WORD_OTHER (EC_GROUP_ENDINGS << 9) | 0xe
+#define EC_WORD_ARE (EC_GROUP_ENDINGS << 9) | 0xf
+#define EC_WORD_WAS (EC_GROUP_ENDINGS << 9) | 0x10
+#define EC_WORD_WERE (EC_GROUP_ENDINGS << 9) | 0x11
+#define EC_WORD_THOSE (EC_GROUP_ENDINGS << 9) | 0x12
+#define EC_WORD_ISN_T (EC_GROUP_ENDINGS << 9) | 0x13
+#define EC_WORD_WON_T (EC_GROUP_ENDINGS << 9) | 0x14
+#define EC_WORD_CAN_T (EC_GROUP_ENDINGS << 9) | 0x15
+#define EC_WORD_CAN (EC_GROUP_ENDINGS << 9) | 0x16
+#define EC_WORD_DON_T (EC_GROUP_ENDINGS << 9) | 0x17
+#define EC_WORD_DO (EC_GROUP_ENDINGS << 9) | 0x18
+#define EC_WORD_DOES (EC_GROUP_ENDINGS << 9) | 0x19
+#define EC_WORD_WHOM (EC_GROUP_ENDINGS << 9) | 0x1a
+#define EC_WORD_WHICH (EC_GROUP_ENDINGS << 9) | 0x1b
+#define EC_WORD_WASN_T (EC_GROUP_ENDINGS << 9) | 0x1c
+#define EC_WORD_WEREN_T (EC_GROUP_ENDINGS << 9) | 0x1d
+#define EC_WORD_HAVE (EC_GROUP_ENDINGS << 9) | 0x1e
+#define EC_WORD_HAVEN_T (EC_GROUP_ENDINGS << 9) | 0x1f
+#define EC_WORD_A (EC_GROUP_ENDINGS << 9) | 0x20
+#define EC_WORD_AN (EC_GROUP_ENDINGS << 9) | 0x21
+#define EC_WORD_NOT (EC_GROUP_ENDINGS << 9) | 0x22
+#define EC_WORD_THERE (EC_GROUP_ENDINGS << 9) | 0x23
+#define EC_WORD_OK_QUES (EC_GROUP_ENDINGS << 9) | 0x24
+#define EC_WORD_SO (EC_GROUP_ENDINGS << 9) | 0x25
+#define EC_WORD_MAYBE (EC_GROUP_ENDINGS << 9) | 0x26
+#define EC_WORD_ABOUT (EC_GROUP_ENDINGS << 9) | 0x27
+#define EC_WORD_OVER (EC_GROUP_ENDINGS << 9) | 0x28
+#define EC_WORD_IT (EC_GROUP_ENDINGS << 9) | 0x29
+#define EC_WORD_ALL (EC_GROUP_ENDINGS << 9) | 0x2a
+#define EC_WORD_FOR (EC_GROUP_ENDINGS << 9) | 0x2b
+#define EC_WORD_ON (EC_GROUP_ENDINGS << 9) | 0x2c
+#define EC_WORD_OFF (EC_GROUP_ENDINGS << 9) | 0x2d
+#define EC_WORD_AS (EC_GROUP_ENDINGS << 9) | 0x2e
+#define EC_WORD_TO (EC_GROUP_ENDINGS << 9) | 0x2f
+#define EC_WORD_WITH (EC_GROUP_ENDINGS << 9) | 0x30
+#define EC_WORD_BETTER (EC_GROUP_ENDINGS << 9) | 0x31
+#define EC_WORD_EVER (EC_GROUP_ENDINGS << 9) | 0x32
+#define EC_WORD_SINCE (EC_GROUP_ENDINGS << 9) | 0x33
+#define EC_WORD_OF (EC_GROUP_ENDINGS << 9) | 0x34
+#define EC_WORD_BELONGS_TO (EC_GROUP_ENDINGS << 9) | 0x35
+#define EC_WORD_AT (EC_GROUP_ENDINGS << 9) | 0x36
+#define EC_WORD_IN (EC_GROUP_ENDINGS << 9) | 0x37
+#define EC_WORD_OUT (EC_GROUP_ENDINGS << 9) | 0x38
+#define EC_WORD_TOO (EC_GROUP_ENDINGS << 9) | 0x39
+#define EC_WORD_LIKE (EC_GROUP_ENDINGS << 9) | 0x3a
+#define EC_WORD_DID (EC_GROUP_ENDINGS << 9) | 0x3b
+#define EC_WORD_DIDN_T (EC_GROUP_ENDINGS << 9) | 0x3c
+#define EC_WORD_DOESN_T (EC_GROUP_ENDINGS << 9) | 0x3d
+#define EC_WORD_WITHOUT (EC_GROUP_ENDINGS << 9) | 0x3e
+#define EC_WORD_AFTER (EC_GROUP_ENDINGS << 9) | 0x3f
+#define EC_WORD_BEFORE (EC_GROUP_ENDINGS << 9) | 0x40
+#define EC_WORD_WHILE (EC_GROUP_ENDINGS << 9) | 0x41
+#define EC_WORD_THAN (EC_GROUP_ENDINGS << 9) | 0x42
+#define EC_WORD_ONCE (EC_GROUP_ENDINGS << 9) | 0x43
+#define EC_WORD_ANYWHERE (EC_GROUP_ENDINGS << 9) | 0x44
+
+// FEELINGS
+#define EC_WORD_MEET (EC_GROUP_FEELINGS << 9) | 0x0
+#define EC_WORD_PLAY (EC_GROUP_FEELINGS << 9) | 0x1
+#define EC_WORD_HURRIED (EC_GROUP_FEELINGS << 9) | 0x2
+#define EC_WORD_GOES (EC_GROUP_FEELINGS << 9) | 0x3
+#define EC_WORD_GIDDY (EC_GROUP_FEELINGS << 9) | 0x4
+#define EC_WORD_HAPPY (EC_GROUP_FEELINGS << 9) | 0x5
+#define EC_WORD_HAPPINESS (EC_GROUP_FEELINGS << 9) | 0x6
+#define EC_WORD_EXCITE (EC_GROUP_FEELINGS << 9) | 0x7
+#define EC_WORD_IMPORTANT (EC_GROUP_FEELINGS << 9) | 0x8
+#define EC_WORD_FUNNY (EC_GROUP_FEELINGS << 9) | 0x9
+#define EC_WORD_GOT (EC_GROUP_FEELINGS << 9) | 0xa
+#define EC_WORD_GO_HOME (EC_GROUP_FEELINGS << 9) | 0xb
+#define EC_WORD_DISAPPOINTED (EC_GROUP_FEELINGS << 9) | 0xc
+#define EC_WORD_DISAPPOINTS (EC_GROUP_FEELINGS << 9) | 0xd
+#define EC_WORD_SAD (EC_GROUP_FEELINGS << 9) | 0xe
+#define EC_WORD_TRY (EC_GROUP_FEELINGS << 9) | 0xf
+#define EC_WORD_TRIES (EC_GROUP_FEELINGS << 9) | 0x10
+#define EC_WORD_HEARS (EC_GROUP_FEELINGS << 9) | 0x11
+#define EC_WORD_THINK (EC_GROUP_FEELINGS << 9) | 0x12
+#define EC_WORD_HEAR (EC_GROUP_FEELINGS << 9) | 0x13
+#define EC_WORD_WANTS (EC_GROUP_FEELINGS << 9) | 0x14
+#define EC_WORD_MISHEARD (EC_GROUP_FEELINGS << 9) | 0x15
+#define EC_WORD_DISLIKE (EC_GROUP_FEELINGS << 9) | 0x16
+#define EC_WORD_ANGRY (EC_GROUP_FEELINGS << 9) | 0x17
+#define EC_WORD_ANGER (EC_GROUP_FEELINGS << 9) | 0x18
+#define EC_WORD_SCARY (EC_GROUP_FEELINGS << 9) | 0x19
+#define EC_WORD_LONESOME (EC_GROUP_FEELINGS << 9) | 0x1a
+#define EC_WORD_DISAPPOINT (EC_GROUP_FEELINGS << 9) | 0x1b
+#define EC_WORD_JOY (EC_GROUP_FEELINGS << 9) | 0x1c
+#define EC_WORD_GETS (EC_GROUP_FEELINGS << 9) | 0x1d
+#define EC_WORD_NEVER (EC_GROUP_FEELINGS << 9) | 0x1e
+#define EC_WORD_DARN (EC_GROUP_FEELINGS << 9) | 0x1f
+#define EC_WORD_DOWNCAST (EC_GROUP_FEELINGS << 9) | 0x20
+#define EC_WORD_INCREDIBLE (EC_GROUP_FEELINGS << 9) | 0x21
+#define EC_WORD_LIKES (EC_GROUP_FEELINGS << 9) | 0x22
+#define EC_WORD_DISLIKES (EC_GROUP_FEELINGS << 9) | 0x23
+#define EC_WORD_BORING (EC_GROUP_FEELINGS << 9) | 0x24
+#define EC_WORD_CARE (EC_GROUP_FEELINGS << 9) | 0x25
+#define EC_WORD_CARES (EC_GROUP_FEELINGS << 9) | 0x26
+#define EC_WORD_ALL_RIGHT (EC_GROUP_FEELINGS << 9) | 0x27
+#define EC_WORD_ADORE (EC_GROUP_FEELINGS << 9) | 0x28
+#define EC_WORD_DISASTER (EC_GROUP_FEELINGS << 9) | 0x29
+#define EC_WORD_ENJOY (EC_GROUP_FEELINGS << 9) | 0x2a
+#define EC_WORD_ENJOYS (EC_GROUP_FEELINGS << 9) | 0x2b
+#define EC_WORD_EAT (EC_GROUP_FEELINGS << 9) | 0x2c
+#define EC_WORD_LACKING (EC_GROUP_FEELINGS << 9) | 0x2d
+#define EC_WORD_BAD (EC_GROUP_FEELINGS << 9) | 0x2e
+#define EC_WORD_HARD (EC_GROUP_FEELINGS << 9) | 0x2f
+#define EC_WORD_TERRIBLE (EC_GROUP_FEELINGS << 9) | 0x30
+#define EC_WORD_SHOULD (EC_GROUP_FEELINGS << 9) | 0x31
+#define EC_WORD_NICE (EC_GROUP_FEELINGS << 9) | 0x32
+#define EC_WORD_DRINK (EC_GROUP_FEELINGS << 9) | 0x33
+#define EC_WORD_SURPRISE (EC_GROUP_FEELINGS << 9) | 0x34
+#define EC_WORD_FEAR (EC_GROUP_FEELINGS << 9) | 0x35
+#define EC_WORD_WANT (EC_GROUP_FEELINGS << 9) | 0x36
+#define EC_WORD_WAIT (EC_GROUP_FEELINGS << 9) | 0x37
+#define EC_WORD_SATISFIED (EC_GROUP_FEELINGS << 9) | 0x38
+#define EC_WORD_SEE (EC_GROUP_FEELINGS << 9) | 0x39
+#define EC_WORD_RARE (EC_GROUP_FEELINGS << 9) | 0x3a
+#define EC_WORD_NEGATIVE (EC_GROUP_FEELINGS << 9) | 0x3b
+#define EC_WORD_DONE (EC_GROUP_FEELINGS << 9) | 0x3c
+#define EC_WORD_DANGER (EC_GROUP_FEELINGS << 9) | 0x3d
+#define EC_WORD_DEFEATED (EC_GROUP_FEELINGS << 9) | 0x3e
+#define EC_WORD_BEAT (EC_GROUP_FEELINGS << 9) | 0x3f
+#define EC_WORD_GREAT (EC_GROUP_FEELINGS << 9) | 0x40
+#define EC_WORD_ROMANTIC (EC_GROUP_FEELINGS << 9) | 0x41
+#define EC_WORD_QUESTION (EC_GROUP_FEELINGS << 9) | 0x42
+#define EC_WORD_UNDERSTAND (EC_GROUP_FEELINGS << 9) | 0x43
+#define EC_WORD_UNDERSTANDS (EC_GROUP_FEELINGS << 9) | 0x44
+
+// CONDITIONS
+#define EC_WORD_HOT (EC_GROUP_CONDITIONS << 9) | 0x0
+#define EC_WORD_EXISTS (EC_GROUP_CONDITIONS << 9) | 0x1
+#define EC_WORD_EXCESS (EC_GROUP_CONDITIONS << 9) | 0x2
+#define EC_WORD_APPROVED (EC_GROUP_CONDITIONS << 9) | 0x3
+#define EC_WORD_HAS (EC_GROUP_CONDITIONS << 9) | 0x4
+#define EC_WORD_GOOD (EC_GROUP_CONDITIONS << 9) | 0x5
+#define EC_WORD_LESS (EC_GROUP_CONDITIONS << 9) | 0x6
+#define EC_WORD_MOMENTUM (EC_GROUP_CONDITIONS << 9) | 0x7
+#define EC_WORD_GOING (EC_GROUP_CONDITIONS << 9) | 0x8
+#define EC_WORD_WEIRD (EC_GROUP_CONDITIONS << 9) | 0x9
+#define EC_WORD_BUSY (EC_GROUP_CONDITIONS << 9) | 0xa
+#define EC_WORD_TOGETHER (EC_GROUP_CONDITIONS << 9) | 0xb
+#define EC_WORD_FULL (EC_GROUP_CONDITIONS << 9) | 0xc
+#define EC_WORD_ABSENT (EC_GROUP_CONDITIONS << 9) | 0xd
+#define EC_WORD_BEING (EC_GROUP_CONDITIONS << 9) | 0xe
+#define EC_WORD_NEED (EC_GROUP_CONDITIONS << 9) | 0xf
+#define EC_WORD_TASTY (EC_GROUP_CONDITIONS << 9) | 0x10
+#define EC_WORD_SKILLED (EC_GROUP_CONDITIONS << 9) | 0x11
+#define EC_WORD_NOISY (EC_GROUP_CONDITIONS << 9) | 0x12
+#define EC_WORD_BIG (EC_GROUP_CONDITIONS << 9) | 0x13
+#define EC_WORD_LATE (EC_GROUP_CONDITIONS << 9) | 0x14
+#define EC_WORD_CLOSE (EC_GROUP_CONDITIONS << 9) | 0x15
+#define EC_WORD_DOCILE (EC_GROUP_CONDITIONS << 9) | 0x16
+#define EC_WORD_AMUSING (EC_GROUP_CONDITIONS << 9) | 0x17
+#define EC_WORD_ENTERTAINING (EC_GROUP_CONDITIONS << 9) | 0x18
+#define EC_WORD_PERFECTION (EC_GROUP_CONDITIONS << 9) | 0x19
+#define EC_WORD_PRETTY (EC_GROUP_CONDITIONS << 9) | 0x1a
+#define EC_WORD_HEALTHY (EC_GROUP_CONDITIONS << 9) | 0x1b
+#define EC_WORD_EXCELLENT (EC_GROUP_CONDITIONS << 9) | 0x1c
+#define EC_WORD_UPSIDE_DOWN (EC_GROUP_CONDITIONS << 9) | 0x1d
+#define EC_WORD_COLD (EC_GROUP_CONDITIONS << 9) | 0x1e
+#define EC_WORD_REFRESHING (EC_GROUP_CONDITIONS << 9) | 0x1f
+#define EC_WORD_UNAVOIDABLE (EC_GROUP_CONDITIONS << 9) | 0x20
+#define EC_WORD_MUCH (EC_GROUP_CONDITIONS << 9) | 0x21
+#define EC_WORD_OVERWHELMING (EC_GROUP_CONDITIONS << 9) | 0x22
+#define EC_WORD_FABULOUS (EC_GROUP_CONDITIONS << 9) | 0x23
+#define EC_WORD_ELSE (EC_GROUP_CONDITIONS << 9) | 0x24
+#define EC_WORD_EXPENSIVE (EC_GROUP_CONDITIONS << 9) | 0x25
+#define EC_WORD_CORRECT (EC_GROUP_CONDITIONS << 9) | 0x26
+#define EC_WORD_IMPOSSIBLE (EC_GROUP_CONDITIONS << 9) | 0x27
+#define EC_WORD_SMALL (EC_GROUP_CONDITIONS << 9) | 0x28
+#define EC_WORD_DIFFERENT (EC_GROUP_CONDITIONS << 9) | 0x29
+#define EC_WORD_TIRED (EC_GROUP_CONDITIONS << 9) | 0x2a
+#define EC_WORD_SKILL (EC_GROUP_CONDITIONS << 9) | 0x2b
+#define EC_WORD_TOP (EC_GROUP_CONDITIONS << 9) | 0x2c
+#define EC_WORD_NON_STOP (EC_GROUP_CONDITIONS << 9) | 0x2d
+#define EC_WORD_PREPOSTEROUS (EC_GROUP_CONDITIONS << 9) | 0x2e
+#define EC_WORD_NONE (EC_GROUP_CONDITIONS << 9) | 0x2f
+#define EC_WORD_NOTHING (EC_GROUP_CONDITIONS << 9) | 0x30
+#define EC_WORD_NATURAL (EC_GROUP_CONDITIONS << 9) | 0x31
+#define EC_WORD_BECOMES (EC_GROUP_CONDITIONS << 9) | 0x32
+#define EC_WORD_LUKEWARM (EC_GROUP_CONDITIONS << 9) | 0x33
+#define EC_WORD_FAST (EC_GROUP_CONDITIONS << 9) | 0x34
+#define EC_WORD_LOW (EC_GROUP_CONDITIONS << 9) | 0x35
+#define EC_WORD_AWFUL (EC_GROUP_CONDITIONS << 9) | 0x36
+#define EC_WORD_ALONE (EC_GROUP_CONDITIONS << 9) | 0x37
+#define EC_WORD_BORED (EC_GROUP_CONDITIONS << 9) | 0x38
+#define EC_WORD_SECRET (EC_GROUP_CONDITIONS << 9) | 0x39
+#define EC_WORD_MYSTERY (EC_GROUP_CONDITIONS << 9) | 0x3a
+#define EC_WORD_LACKS (EC_GROUP_CONDITIONS << 9) | 0x3b
+#define EC_WORD_BEST (EC_GROUP_CONDITIONS << 9) | 0x3c
+#define EC_WORD_LOUSY (EC_GROUP_CONDITIONS << 9) | 0x3d
+#define EC_WORD_MISTAKE (EC_GROUP_CONDITIONS << 9) | 0x3e
+#define EC_WORD_KIND (EC_GROUP_CONDITIONS << 9) | 0x3f
+#define EC_WORD_WELL (EC_GROUP_CONDITIONS << 9) | 0x40
+#define EC_WORD_WEAKENED (EC_GROUP_CONDITIONS << 9) | 0x41
+#define EC_WORD_SIMPLE (EC_GROUP_CONDITIONS << 9) | 0x42
+#define EC_WORD_SEEMS (EC_GROUP_CONDITIONS << 9) | 0x43
+#define EC_WORD_BADLY (EC_GROUP_CONDITIONS << 9) | 0x44
+
+// ACTIONS
+#define EC_WORD_MEETS (EC_GROUP_ACTIONS << 9) | 0x0
+#define EC_WORD_CONCEDE (EC_GROUP_ACTIONS << 9) | 0x1
+#define EC_WORD_GIVE (EC_GROUP_ACTIONS << 9) | 0x2
+#define EC_WORD_GIVES (EC_GROUP_ACTIONS << 9) | 0x3
+#define EC_WORD_PLAYED (EC_GROUP_ACTIONS << 9) | 0x4
+#define EC_WORD_PLAYS (EC_GROUP_ACTIONS << 9) | 0x5
+#define EC_WORD_COLLECT (EC_GROUP_ACTIONS << 9) | 0x6
+#define EC_WORD_WALKING (EC_GROUP_ACTIONS << 9) | 0x7
+#define EC_WORD_WALKS (EC_GROUP_ACTIONS << 9) | 0x8
+#define EC_WORD_SAYS (EC_GROUP_ACTIONS << 9) | 0x9
+#define EC_WORD_WENT (EC_GROUP_ACTIONS << 9) | 0xa
+#define EC_WORD_SAID (EC_GROUP_ACTIONS << 9) | 0xb
+#define EC_WORD_WAKE_UP (EC_GROUP_ACTIONS << 9) | 0xc
+#define EC_WORD_WAKES_UP (EC_GROUP_ACTIONS << 9) | 0xd
+#define EC_WORD_ANGERS (EC_GROUP_ACTIONS << 9) | 0xe
+#define EC_WORD_TEACH (EC_GROUP_ACTIONS << 9) | 0xf
+#define EC_WORD_TEACHES (EC_GROUP_ACTIONS << 9) | 0x10
+#define EC_WORD_PLEASE (EC_GROUP_ACTIONS << 9) | 0x11
+#define EC_WORD_LEARN (EC_GROUP_ACTIONS << 9) | 0x12
+#define EC_WORD_CHANGE (EC_GROUP_ACTIONS << 9) | 0x13
+#define EC_WORD_STORY (EC_GROUP_ACTIONS << 9) | 0x14
+#define EC_WORD_TRUST (EC_GROUP_ACTIONS << 9) | 0x15
+#define EC_WORD_LAVISH (EC_GROUP_ACTIONS << 9) | 0x16
+#define EC_WORD_LISTENS (EC_GROUP_ACTIONS << 9) | 0x17
+#define EC_WORD_HEARING (EC_GROUP_ACTIONS << 9) | 0x18
+#define EC_WORD_TRAINS (EC_GROUP_ACTIONS << 9) | 0x19
+#define EC_WORD_CHOOSE (EC_GROUP_ACTIONS << 9) | 0x1a
+#define EC_WORD_COME (EC_GROUP_ACTIONS << 9) | 0x1b
+#define EC_WORD_CAME (EC_GROUP_ACTIONS << 9) | 0x1c
+#define EC_WORD_SEARCH (EC_GROUP_ACTIONS << 9) | 0x1d
+#define EC_WORD_MAKE (EC_GROUP_ACTIONS << 9) | 0x1e
+#define EC_WORD_CAUSE (EC_GROUP_ACTIONS << 9) | 0x1f
+#define EC_WORD_KNOW (EC_GROUP_ACTIONS << 9) | 0x20
+#define EC_WORD_KNOWS (EC_GROUP_ACTIONS << 9) | 0x21
+#define EC_WORD_REFUSE (EC_GROUP_ACTIONS << 9) | 0x22
+#define EC_WORD_STORES (EC_GROUP_ACTIONS << 9) | 0x23
+#define EC_WORD_BRAG (EC_GROUP_ACTIONS << 9) | 0x24
+#define EC_WORD_IGNORANT (EC_GROUP_ACTIONS << 9) | 0x25
+#define EC_WORD_THINKS (EC_GROUP_ACTIONS << 9) | 0x26
+#define EC_WORD_BELIEVE (EC_GROUP_ACTIONS << 9) | 0x27
+#define EC_WORD_SLIDE (EC_GROUP_ACTIONS << 9) | 0x28
+#define EC_WORD_EATS (EC_GROUP_ACTIONS << 9) | 0x29
+#define EC_WORD_USE (EC_GROUP_ACTIONS << 9) | 0x2a
+#define EC_WORD_USES (EC_GROUP_ACTIONS << 9) | 0x2b
+#define EC_WORD_USING (EC_GROUP_ACTIONS << 9) | 0x2c
+#define EC_WORD_COULDN_T (EC_GROUP_ACTIONS << 9) | 0x2d
+#define EC_WORD_CAPABLE (EC_GROUP_ACTIONS << 9) | 0x2e
+#define EC_WORD_DISAPPEAR (EC_GROUP_ACTIONS << 9) | 0x2f
+#define EC_WORD_APPEAR (EC_GROUP_ACTIONS << 9) | 0x30
+#define EC_WORD_THROW (EC_GROUP_ACTIONS << 9) | 0x31
+#define EC_WORD_WORRY (EC_GROUP_ACTIONS << 9) | 0x32
+#define EC_WORD_SLEPT (EC_GROUP_ACTIONS << 9) | 0x33
+#define EC_WORD_SLEEP (EC_GROUP_ACTIONS << 9) | 0x34
+#define EC_WORD_RELEASE (EC_GROUP_ACTIONS << 9) | 0x35
+#define EC_WORD_DRINKS (EC_GROUP_ACTIONS << 9) | 0x36
+#define EC_WORD_RUNS (EC_GROUP_ACTIONS << 9) | 0x37
+#define EC_WORD_RUN (EC_GROUP_ACTIONS << 9) | 0x38
+#define EC_WORD_WORKS (EC_GROUP_ACTIONS << 9) | 0x39
+#define EC_WORD_WORKING (EC_GROUP_ACTIONS << 9) | 0x3a
+#define EC_WORD_TALKING (EC_GROUP_ACTIONS << 9) | 0x3b
+#define EC_WORD_TALK (EC_GROUP_ACTIONS << 9) | 0x3c
+#define EC_WORD_SINK (EC_GROUP_ACTIONS << 9) | 0x3d
+#define EC_WORD_SMACK (EC_GROUP_ACTIONS << 9) | 0x3e
+#define EC_WORD_PRETEND (EC_GROUP_ACTIONS << 9) | 0x3f
+#define EC_WORD_PRAISE (EC_GROUP_ACTIONS << 9) | 0x40
+#define EC_WORD_OVERDO (EC_GROUP_ACTIONS << 9) | 0x41
+#define EC_WORD_SHOW (EC_GROUP_ACTIONS << 9) | 0x42
+#define EC_WORD_LOOKS (EC_GROUP_ACTIONS << 9) | 0x43
+#define EC_WORD_SEES (EC_GROUP_ACTIONS << 9) | 0x44
+#define EC_WORD_SEEK (EC_GROUP_ACTIONS << 9) | 0x45
+#define EC_WORD_OWN (EC_GROUP_ACTIONS << 9) | 0x46
+#define EC_WORD_TAKE (EC_GROUP_ACTIONS << 9) | 0x47
+#define EC_WORD_ALLOW (EC_GROUP_ACTIONS << 9) | 0x48
+#define EC_WORD_FORGET (EC_GROUP_ACTIONS << 9) | 0x49
+#define EC_WORD_FORGETS (EC_GROUP_ACTIONS << 9) | 0x4a
+#define EC_WORD_APPEARS (EC_GROUP_ACTIONS << 9) | 0x4b
+#define EC_WORD_FAINT (EC_GROUP_ACTIONS << 9) | 0x4c
+#define EC_WORD_FAINTED (EC_GROUP_ACTIONS << 9) | 0x4d
+
+// LIFESTYLE
+#define EC_WORD_CHORES (EC_GROUP_LIFESTYLE << 9) | 0x0
+#define EC_WORD_HOME (EC_GROUP_LIFESTYLE << 9) | 0x1
+#define EC_WORD_MONEY (EC_GROUP_LIFESTYLE << 9) | 0x2
+#define EC_WORD_ALLOWANCE (EC_GROUP_LIFESTYLE << 9) | 0x3
+#define EC_WORD_BATH (EC_GROUP_LIFESTYLE << 9) | 0x4
+#define EC_WORD_CONVERSATION (EC_GROUP_LIFESTYLE << 9) | 0x5
+#define EC_WORD_SCHOOL (EC_GROUP_LIFESTYLE << 9) | 0x6
+#define EC_WORD_COMMEMORATE (EC_GROUP_LIFESTYLE << 9) | 0x7
+#define EC_WORD_HABIT (EC_GROUP_LIFESTYLE << 9) | 0x8
+#define EC_WORD_GROUP (EC_GROUP_LIFESTYLE << 9) | 0x9
+#define EC_WORD_WORD (EC_GROUP_LIFESTYLE << 9) | 0xa
+#define EC_WORD_STORE (EC_GROUP_LIFESTYLE << 9) | 0xb
+#define EC_WORD_SERVICE (EC_GROUP_LIFESTYLE << 9) | 0xc
+#define EC_WORD_WORK (EC_GROUP_LIFESTYLE << 9) | 0xd
+#define EC_WORD_SYSTEM (EC_GROUP_LIFESTYLE << 9) | 0xe
+#define EC_WORD_TRAIN (EC_GROUP_LIFESTYLE << 9) | 0xf
+#define EC_WORD_CLASS (EC_GROUP_LIFESTYLE << 9) | 0x10
+#define EC_WORD_LESSONS (EC_GROUP_LIFESTYLE << 9) | 0x11
+#define EC_WORD_INFORMATION (EC_GROUP_LIFESTYLE << 9) | 0x12
+#define EC_WORD_LIVING (EC_GROUP_LIFESTYLE << 9) | 0x13
+#define EC_WORD_TEACHER (EC_GROUP_LIFESTYLE << 9) | 0x14
+#define EC_WORD_TOURNAMENT (EC_GROUP_LIFESTYLE << 9) | 0x15
+#define EC_WORD_LETTER (EC_GROUP_LIFESTYLE << 9) | 0x16
+#define EC_WORD_EVENT (EC_GROUP_LIFESTYLE << 9) | 0x17
+#define EC_WORD_DIGITAL (EC_GROUP_LIFESTYLE << 9) | 0x18
+#define EC_WORD_TEST (EC_GROUP_LIFESTYLE << 9) | 0x19
+#define EC_WORD_DEPT_STORE (EC_GROUP_LIFESTYLE << 9) | 0x1a
+#define EC_WORD_TELEVISION (EC_GROUP_LIFESTYLE << 9) | 0x1b
+#define EC_WORD_PHONE (EC_GROUP_LIFESTYLE << 9) | 0x1c
+#define EC_WORD_ITEM (EC_GROUP_LIFESTYLE << 9) | 0x1d
+#define EC_WORD_NAME (EC_GROUP_LIFESTYLE << 9) | 0x1e
+#define EC_WORD_NEWS (EC_GROUP_LIFESTYLE << 9) | 0x1f
+#define EC_WORD_POPULAR (EC_GROUP_LIFESTYLE << 9) | 0x20
+#define EC_WORD_PARTY (EC_GROUP_LIFESTYLE << 9) | 0x21
+#define EC_WORD_STUDY (EC_GROUP_LIFESTYLE << 9) | 0x22
+#define EC_WORD_MACHINE (EC_GROUP_LIFESTYLE << 9) | 0x23
+#define EC_WORD_MAIL (EC_GROUP_LIFESTYLE << 9) | 0x24
+#define EC_WORD_MESSAGE (EC_GROUP_LIFESTYLE << 9) | 0x25
+#define EC_WORD_PROMISE (EC_GROUP_LIFESTYLE << 9) | 0x26
+#define EC_WORD_DREAM (EC_GROUP_LIFESTYLE << 9) | 0x27
+#define EC_WORD_KINDERGARTEN (EC_GROUP_LIFESTYLE << 9) | 0x28
+#define EC_WORD_LIFE (EC_GROUP_LIFESTYLE << 9) | 0x29
+#define EC_WORD_RADIO (EC_GROUP_LIFESTYLE << 9) | 0x2a
+#define EC_WORD_RENTAL (EC_GROUP_LIFESTYLE << 9) | 0x2b
+#define EC_WORD_WORLD (EC_GROUP_LIFESTYLE << 9) | 0x2c
+
+// HOBBIES
+#define EC_WORD_IDOL (EC_GROUP_HOBBIES << 9) | 0x0
+#define EC_WORD_ANIME (EC_GROUP_HOBBIES << 9) | 0x1
+#define EC_WORD_SONG (EC_GROUP_HOBBIES << 9) | 0x2
+#define EC_WORD_MOVIE (EC_GROUP_HOBBIES << 9) | 0x3
+#define EC_WORD_SWEETS (EC_GROUP_HOBBIES << 9) | 0x4
+#define EC_WORD_CHAT (EC_GROUP_HOBBIES << 9) | 0x5
+#define EC_WORD_CHILD_S_PLAY (EC_GROUP_HOBBIES << 9) | 0x6
+#define EC_WORD_TOYS (EC_GROUP_HOBBIES << 9) | 0x7
+#define EC_WORD_MUSIC (EC_GROUP_HOBBIES << 9) | 0x8
+#define EC_WORD_CARDS (EC_GROUP_HOBBIES << 9) | 0x9
+#define EC_WORD_SHOPPING (EC_GROUP_HOBBIES << 9) | 0xa
+#define EC_WORD_CAMERA (EC_GROUP_HOBBIES << 9) | 0xb
+#define EC_WORD_VIEWING (EC_GROUP_HOBBIES << 9) | 0xc
+#define EC_WORD_SPECTATOR (EC_GROUP_HOBBIES << 9) | 0xd
+#define EC_WORD_GOURMET (EC_GROUP_HOBBIES << 9) | 0xe
+#define EC_WORD_GAME (EC_GROUP_HOBBIES << 9) | 0xf
+#define EC_WORD_RPG (EC_GROUP_HOBBIES << 9) | 0x10
+#define EC_WORD_COLLECTION (EC_GROUP_HOBBIES << 9) | 0x11
+#define EC_WORD_COMPLETE (EC_GROUP_HOBBIES << 9) | 0x12
+#define EC_WORD_MAGAZINE (EC_GROUP_HOBBIES << 9) | 0x13
+#define EC_WORD_WALK (EC_GROUP_HOBBIES << 9) | 0x14
+#define EC_WORD_BIKE (EC_GROUP_HOBBIES << 9) | 0x15
+#define EC_WORD_HOBBY (EC_GROUP_HOBBIES << 9) | 0x16
+#define EC_WORD_SPORTS (EC_GROUP_HOBBIES << 9) | 0x17
+#define EC_WORD_SOFTWARE (EC_GROUP_HOBBIES << 9) | 0x18
+#define EC_WORD_SONGS (EC_GROUP_HOBBIES << 9) | 0x19
+#define EC_WORD_DIET (EC_GROUP_HOBBIES << 9) | 0x1a
+#define EC_WORD_TREASURE (EC_GROUP_HOBBIES << 9) | 0x1b
+#define EC_WORD_TRAVEL (EC_GROUP_HOBBIES << 9) | 0x1c
+#define EC_WORD_DANCE (EC_GROUP_HOBBIES << 9) | 0x1d
+#define EC_WORD_CHANNEL (EC_GROUP_HOBBIES << 9) | 0x1e
+#define EC_WORD_MAKING (EC_GROUP_HOBBIES << 9) | 0x1f
+#define EC_WORD_FISHING (EC_GROUP_HOBBIES << 9) | 0x20
+#define EC_WORD_DATE (EC_GROUP_HOBBIES << 9) | 0x21
+#define EC_WORD_DESIGN (EC_GROUP_HOBBIES << 9) | 0x22
+#define EC_WORD_LOCOMOTIVE (EC_GROUP_HOBBIES << 9) | 0x23
+#define EC_WORD_PLUSH_DOLL (EC_GROUP_HOBBIES << 9) | 0x24
+#define EC_WORD_PC (EC_GROUP_HOBBIES << 9) | 0x25
+#define EC_WORD_FLOWERS (EC_GROUP_HOBBIES << 9) | 0x26
+#define EC_WORD_HERO (EC_GROUP_HOBBIES << 9) | 0x27
+#define EC_WORD_NAP (EC_GROUP_HOBBIES << 9) | 0x28
+#define EC_WORD_HEROINE (EC_GROUP_HOBBIES << 9) | 0x29
+#define EC_WORD_FASHION (EC_GROUP_HOBBIES << 9) | 0x2a
+#define EC_WORD_ADVENTURE (EC_GROUP_HOBBIES << 9) | 0x2b
+#define EC_WORD_BOARD (EC_GROUP_HOBBIES << 9) | 0x2c
+#define EC_WORD_BALL (EC_GROUP_HOBBIES << 9) | 0x2d
+#define EC_WORD_BOOK (EC_GROUP_HOBBIES << 9) | 0x2e
+#define EC_WORD_FESTIVAL (EC_GROUP_HOBBIES << 9) | 0x2f
+#define EC_WORD_COMICS (EC_GROUP_HOBBIES << 9) | 0x30
+#define EC_WORD_HOLIDAY (EC_GROUP_HOBBIES << 9) | 0x31
+#define EC_WORD_PLANS (EC_GROUP_HOBBIES << 9) | 0x32
+#define EC_WORD_TRENDY (EC_GROUP_HOBBIES << 9) | 0x33
+#define EC_WORD_VACATION (EC_GROUP_HOBBIES << 9) | 0x34
+#define EC_WORD_LOOK (EC_GROUP_HOBBIES << 9) | 0x35
+
+// TIME
+#define EC_WORD_FALL (EC_GROUP_TIME << 9) | 0x0
+#define EC_WORD_MORNING (EC_GROUP_TIME << 9) | 0x1
+#define EC_WORD_TOMORROW (EC_GROUP_TIME << 9) | 0x2
+#define EC_WORD_LAST (EC_GROUP_TIME << 9) | 0x3
+#define EC_WORD_DAY (EC_GROUP_TIME << 9) | 0x4
+#define EC_WORD_SOMETIME (EC_GROUP_TIME << 9) | 0x5
+#define EC_WORD_ALWAYS (EC_GROUP_TIME << 9) | 0x6
+#define EC_WORD_CURRENT (EC_GROUP_TIME << 9) | 0x7
+#define EC_WORD_FOREVER (EC_GROUP_TIME << 9) | 0x8
+#define EC_WORD_DAYS (EC_GROUP_TIME << 9) | 0x9
+#define EC_WORD_END (EC_GROUP_TIME << 9) | 0xa
+#define EC_WORD_TUESDAY (EC_GROUP_TIME << 9) | 0xb
+#define EC_WORD_YESTERDAY (EC_GROUP_TIME << 9) | 0xc
+#define EC_WORD_TODAY (EC_GROUP_TIME << 9) | 0xd
+#define EC_WORD_FRIDAY (EC_GROUP_TIME << 9) | 0xe
+#define EC_WORD_MONDAY (EC_GROUP_TIME << 9) | 0xf
+#define EC_WORD_LATER (EC_GROUP_TIME << 9) | 0x10
+#define EC_WORD_EARLIER (EC_GROUP_TIME << 9) | 0x11
+#define EC_WORD_ANOTHER (EC_GROUP_TIME << 9) | 0x12
+#define EC_WORD_TIME (EC_GROUP_TIME << 9) | 0x13
+#define EC_WORD_FINISH (EC_GROUP_TIME << 9) | 0x14
+#define EC_WORD_WEDNESDAY (EC_GROUP_TIME << 9) | 0x15
+#define EC_WORD_SOON (EC_GROUP_TIME << 9) | 0x16
+#define EC_WORD_START (EC_GROUP_TIME << 9) | 0x17
+#define EC_WORD_MONTH (EC_GROUP_TIME << 9) | 0x18
+#define EC_WORD_STOP (EC_GROUP_TIME << 9) | 0x19
+#define EC_WORD_NOW (EC_GROUP_TIME << 9) | 0x1a
+#define EC_WORD_FINAL (EC_GROUP_TIME << 9) | 0x1b
+#define EC_WORD_NEXT (EC_GROUP_TIME << 9) | 0x1c
+#define EC_WORD_AGE (EC_GROUP_TIME << 9) | 0x1d
+#define EC_WORD_SATURDAY (EC_GROUP_TIME << 9) | 0x1e
+#define EC_WORD_SUMMER (EC_GROUP_TIME << 9) | 0x1f
+#define EC_WORD_SUNDAY (EC_GROUP_TIME << 9) | 0x20
+#define EC_WORD_BEGINNING (EC_GROUP_TIME << 9) | 0x21
+#define EC_WORD_SPRING (EC_GROUP_TIME << 9) | 0x22
+#define EC_WORD_DAYTIME (EC_GROUP_TIME << 9) | 0x23
+#define EC_WORD_WINTER (EC_GROUP_TIME << 9) | 0x24
+#define EC_WORD_DAILY (EC_GROUP_TIME << 9) | 0x25
+#define EC_WORD_OLDEN (EC_GROUP_TIME << 9) | 0x26
+#define EC_WORD_ALMOST (EC_GROUP_TIME << 9) | 0x27
+#define EC_WORD_NEARLY (EC_GROUP_TIME << 9) | 0x28
+#define EC_WORD_THURSDAY (EC_GROUP_TIME << 9) | 0x29
+#define EC_WORD_NIGHTTIME (EC_GROUP_TIME << 9) | 0x2a
+#define EC_WORD_NIGHT (EC_GROUP_TIME << 9) | 0x2b
+#define EC_WORD_WEEK (EC_GROUP_TIME << 9) | 0x2c
+
+// MISC
+#define EC_WORD_HIGHS (EC_GROUP_MISC << 9) | 0x0
+#define EC_WORD_LOWS (EC_GROUP_MISC << 9) | 0x1
+#define EC_WORD_UM (EC_GROUP_MISC << 9) | 0x2
+#define EC_WORD_REAR (EC_GROUP_MISC << 9) | 0x3
+#define EC_WORD_THINGS (EC_GROUP_MISC << 9) | 0x4
+#define EC_WORD_THING (EC_GROUP_MISC << 9) | 0x5
+#define EC_WORD_BELOW (EC_GROUP_MISC << 9) | 0x6
+#define EC_WORD_ABOVE (EC_GROUP_MISC << 9) | 0x7
+#define EC_WORD_BACK (EC_GROUP_MISC << 9) | 0x8
+#define EC_WORD_HIGH (EC_GROUP_MISC << 9) | 0x9
+#define EC_WORD_HERE (EC_GROUP_MISC << 9) | 0xa
+#define EC_WORD_INSIDE (EC_GROUP_MISC << 9) | 0xb
+#define EC_WORD_OUTSIDE (EC_GROUP_MISC << 9) | 0xc
+#define EC_WORD_BESIDE (EC_GROUP_MISC << 9) | 0xd
+#define EC_WORD_THIS_IS_IT_EXCL (EC_GROUP_MISC << 9) | 0xe
+#define EC_WORD_THIS (EC_GROUP_MISC << 9) | 0xf
+#define EC_WORD_EVERY (EC_GROUP_MISC << 9) | 0x10
+#define EC_WORD_THESE (EC_GROUP_MISC << 9) | 0x11
+#define EC_WORD_THESE_WERE (EC_GROUP_MISC << 9) | 0x12
+#define EC_WORD_DOWN (EC_GROUP_MISC << 9) | 0x13
+#define EC_WORD_THAT (EC_GROUP_MISC << 9) | 0x14
+#define EC_WORD_THOSE_ARE (EC_GROUP_MISC << 9) | 0x15
+#define EC_WORD_THOSE_WERE (EC_GROUP_MISC << 9) | 0x16
+#define EC_WORD_THAT_S_IT_EXCL (EC_GROUP_MISC << 9) | 0x17
+#define EC_WORD_AM (EC_GROUP_MISC << 9) | 0x18
+#define EC_WORD_THAT_WAS (EC_GROUP_MISC << 9) | 0x19
+#define EC_WORD_FRONT (EC_GROUP_MISC << 9) | 0x1a
+#define EC_WORD_UP (EC_GROUP_MISC << 9) | 0x1b
+#define EC_WORD_CHOICE (EC_GROUP_MISC << 9) | 0x1c
+#define EC_WORD_FAR (EC_GROUP_MISC << 9) | 0x1d
+#define EC_WORD_AWAY (EC_GROUP_MISC << 9) | 0x1e
+#define EC_WORD_NEAR (EC_GROUP_MISC << 9) | 0x1f
+#define EC_WORD_WHERE (EC_GROUP_MISC << 9) | 0x20
+#define EC_WORD_WHEN (EC_GROUP_MISC << 9) | 0x21
+#define EC_WORD_WHAT (EC_GROUP_MISC << 9) | 0x22
+#define EC_WORD_DEEP (EC_GROUP_MISC << 9) | 0x23
+#define EC_WORD_SHALLOW (EC_GROUP_MISC << 9) | 0x24
+#define EC_WORD_WHY (EC_GROUP_MISC << 9) | 0x25
+#define EC_WORD_CONFUSED (EC_GROUP_MISC << 9) | 0x26
+#define EC_WORD_OPPOSITE (EC_GROUP_MISC << 9) | 0x27
+#define EC_WORD_LEFT (EC_GROUP_MISC << 9) | 0x28
+#define EC_WORD_RIGHT (EC_GROUP_MISC << 9) | 0x29
+
+// ADJECTIVES
+#define EC_WORD_WANDERING (EC_GROUP_ADJECTIVES << 9) | 0x0
+#define EC_WORD_RICKETY (EC_GROUP_ADJECTIVES << 9) | 0x1
+#define EC_WORD_ROCK_SOLID (EC_GROUP_ADJECTIVES << 9) | 0x2
+#define EC_WORD_HUNGRY (EC_GROUP_ADJECTIVES << 9) | 0x3
+#define EC_WORD_TIGHT (EC_GROUP_ADJECTIVES << 9) | 0x4
+#define EC_WORD_TICKLISH (EC_GROUP_ADJECTIVES << 9) | 0x5
+#define EC_WORD_TWIRLING (EC_GROUP_ADJECTIVES << 9) | 0x6
+#define EC_WORD_SPIRALING (EC_GROUP_ADJECTIVES << 9) | 0x7
+#define EC_WORD_THIRSTY (EC_GROUP_ADJECTIVES << 9) | 0x8
+#define EC_WORD_LOLLING (EC_GROUP_ADJECTIVES << 9) | 0x9
+#define EC_WORD_SILKY (EC_GROUP_ADJECTIVES << 9) | 0xa
+#define EC_WORD_SADLY (EC_GROUP_ADJECTIVES << 9) | 0xb
+#define EC_WORD_HOPELESS (EC_GROUP_ADJECTIVES << 9) | 0xc
+#define EC_WORD_USELESS (EC_GROUP_ADJECTIVES << 9) | 0xd
+#define EC_WORD_DROOLING (EC_GROUP_ADJECTIVES << 9) | 0xe
+#define EC_WORD_EXCITING (EC_GROUP_ADJECTIVES << 9) | 0xf
+#define EC_WORD_THICK (EC_GROUP_ADJECTIVES << 9) | 0x10
+#define EC_WORD_SMOOTH (EC_GROUP_ADJECTIVES << 9) | 0x11
+#define EC_WORD_SLIMY (EC_GROUP_ADJECTIVES << 9) | 0x12
+#define EC_WORD_THIN (EC_GROUP_ADJECTIVES << 9) | 0x13
+#define EC_WORD_BREAK (EC_GROUP_ADJECTIVES << 9) | 0x14
+#define EC_WORD_VORACIOUS (EC_GROUP_ADJECTIVES << 9) | 0x15
+#define EC_WORD_SCATTER (EC_GROUP_ADJECTIVES << 9) | 0x16
+#define EC_WORD_AWESOME (EC_GROUP_ADJECTIVES << 9) | 0x17
+#define EC_WORD_WIMPY (EC_GROUP_ADJECTIVES << 9) | 0x18
+#define EC_WORD_WOBBLY (EC_GROUP_ADJECTIVES << 9) | 0x19
+#define EC_WORD_SHAKY (EC_GROUP_ADJECTIVES << 9) | 0x1a
+#define EC_WORD_RIPPED (EC_GROUP_ADJECTIVES << 9) | 0x1b
+#define EC_WORD_SHREDDED (EC_GROUP_ADJECTIVES << 9) | 0x1c
+#define EC_WORD_INCREASING (EC_GROUP_ADJECTIVES << 9) | 0x1d
+#define EC_WORD_YET (EC_GROUP_ADJECTIVES << 9) | 0x1e
+#define EC_WORD_DESTROYED (EC_GROUP_ADJECTIVES << 9) | 0x1f
+#define EC_WORD_FIERY (EC_GROUP_ADJECTIVES << 9) | 0x20
+#define EC_WORD_LOVEY_DOVEY (EC_GROUP_ADJECTIVES << 9) | 0x21
+#define EC_WORD_HAPPILY (EC_GROUP_ADJECTIVES << 9) | 0x22
+#define EC_WORD_ANTICIPATION (EC_GROUP_ADJECTIVES << 9) | 0x23
+
+// EVENTS
+#define EC_WORD_APPEAL (EC_GROUP_EVENTS << 9) | 0x0
+#define EC_WORD_EVENTS (EC_GROUP_EVENTS << 9) | 0x1
+#define EC_WORD_STAY_AT_HOME (EC_GROUP_EVENTS << 9) | 0x2
+#define EC_WORD_BERRY (EC_GROUP_EVENTS << 9) | 0x3
+#define EC_WORD_CONTEST (EC_GROUP_EVENTS << 9) | 0x4
+#define EC_WORD_MC (EC_GROUP_EVENTS << 9) | 0x5
+#define EC_WORD_JUDGE (EC_GROUP_EVENTS << 9) | 0x6
+#define EC_WORD_SUPER (EC_GROUP_EVENTS << 9) | 0x7
+#define EC_WORD_STAGE (EC_GROUP_EVENTS << 9) | 0x8
+#define EC_WORD_HALL_OF_FAME (EC_GROUP_EVENTS << 9) | 0x9
+#define EC_WORD_EVOLUTION (EC_GROUP_EVENTS << 9) | 0xa
+#define EC_WORD_HYPER (EC_GROUP_EVENTS << 9) | 0xb
+#define EC_WORD_BATTLE_TOWER (EC_GROUP_EVENTS << 9) | 0xc
+#define EC_WORD_LEADERS (EC_GROUP_EVENTS << 9) | 0xd
+#define EC_WORD_BATTLE_ROOM (EC_GROUP_EVENTS << 9) | 0xe
+#define EC_WORD_HIDDEN (EC_GROUP_EVENTS << 9) | 0xf
+#define EC_WORD_SECRET_BASE (EC_GROUP_EVENTS << 9) | 0x10
+#define EC_WORD_BLEND (EC_GROUP_EVENTS << 9) | 0x11
+#define EC_WORD_POKEBLOCK (EC_GROUP_EVENTS << 9) | 0x12
+#define EC_WORD_MASTER (EC_GROUP_EVENTS << 9) | 0x13
+#define EC_WORD_RANK (EC_GROUP_EVENTS << 9) | 0x14
+#define EC_WORD_RIBBON (EC_GROUP_EVENTS << 9) | 0x15
+
+// TRENDY_SAYING
+#define EC_WORD_KTHX_BYE (EC_GROUP_TRENDY_SAYING << 9) | 0x0
+#define EC_WORD_YES_SIR_EXCL (EC_GROUP_TRENDY_SAYING << 9) | 0x1
+#define EC_WORD_AVANT_GARDE (EC_GROUP_TRENDY_SAYING << 9) | 0x2
+#define EC_WORD_COUPLE (EC_GROUP_TRENDY_SAYING << 9) | 0x3
+#define EC_WORD_MUCH_OBLIGED (EC_GROUP_TRENDY_SAYING << 9) | 0x4
+#define EC_WORD_YEEHAW_EXCL (EC_GROUP_TRENDY_SAYING << 9) | 0x5
+#define EC_WORD_MEGA (EC_GROUP_TRENDY_SAYING << 9) | 0x6
+#define EC_WORD_1_HIT_KO_EXCL (EC_GROUP_TRENDY_SAYING << 9) | 0x7
+#define EC_WORD_DESTINY (EC_GROUP_TRENDY_SAYING << 9) | 0x8
+#define EC_WORD_CANCEL (EC_GROUP_TRENDY_SAYING << 9) | 0x9
+#define EC_WORD_NEW (EC_GROUP_TRENDY_SAYING << 9) | 0xa
+#define EC_WORD_FLATTEN (EC_GROUP_TRENDY_SAYING << 9) | 0xb
+#define EC_WORD_KIDDING (EC_GROUP_TRENDY_SAYING << 9) | 0xc
+#define EC_WORD_LOSER (EC_GROUP_TRENDY_SAYING << 9) | 0xd
+#define EC_WORD_LOSING (EC_GROUP_TRENDY_SAYING << 9) | 0xe
+#define EC_WORD_HAPPENING (EC_GROUP_TRENDY_SAYING << 9) | 0xf
+#define EC_WORD_HIP_AND (EC_GROUP_TRENDY_SAYING << 9) | 0x10
+#define EC_WORD_SHAKE (EC_GROUP_TRENDY_SAYING << 9) | 0x11
+#define EC_WORD_SHADY (EC_GROUP_TRENDY_SAYING << 9) | 0x12
+#define EC_WORD_UPBEAT (EC_GROUP_TRENDY_SAYING << 9) | 0x13
+#define EC_WORD_MODERN (EC_GROUP_TRENDY_SAYING << 9) | 0x14
+#define EC_WORD_SMELL_YA (EC_GROUP_TRENDY_SAYING << 9) | 0x15
+#define EC_WORD_BANG (EC_GROUP_TRENDY_SAYING << 9) | 0x16
+#define EC_WORD_KNOCKOUT (EC_GROUP_TRENDY_SAYING << 9) | 0x17
+#define EC_WORD_HASSLE (EC_GROUP_TRENDY_SAYING << 9) | 0x18
+#define EC_WORD_WINNER (EC_GROUP_TRENDY_SAYING << 9) | 0x19
+#define EC_WORD_FEVER (EC_GROUP_TRENDY_SAYING << 9) | 0x1a
+#define EC_WORD_WANNABE (EC_GROUP_TRENDY_SAYING << 9) | 0x1b
+#define EC_WORD_BABY (EC_GROUP_TRENDY_SAYING << 9) | 0x1c
+#define EC_WORD_HEART (EC_GROUP_TRENDY_SAYING << 9) | 0x1d
+#define EC_WORD_OLD (EC_GROUP_TRENDY_SAYING << 9) | 0x1e
+#define EC_WORD_YOUNG (EC_GROUP_TRENDY_SAYING << 9) | 0x1f
+#define EC_WORD_UGLY (EC_GROUP_TRENDY_SAYING << 9) | 0x20
+
+#define EC_GROUP(word) ((word) >> 9)
+#define EC_INDEX(word) ((word) & 0x1FF)
u16 sub_80EB72C(u16 group);
void sub_80EB6FC(u16 *, u16);
@@ -33,7 +1065,7 @@ void InitEasyChatPhrases(void);
u8 sub_80EAD7C(u8 group);
u16 sub_80EAE88(u8);
u8 sub_80EB37C(u16);
-u8* sub_80EB3FC(u8 *, u16);
+u8* EasyChat_GetWordText(u8 *, u16);
u8 *ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16, u16);
u16 sub_80EB784(u16 group);
u8 sub_80EB868(u8);
diff --git a/include/event_data.h b/include/event_data.h
index 98e4a6da3..ae048af4c 100644
--- a/include/event_data.h
+++ b/include/event_data.h
@@ -22,7 +22,7 @@ bool8 VarSet(u16 id, u16 value);
u8 VarGetFieldObjectGraphicsId(u8 id);
u8 *GetFlagPointer(u16 id);
u8 FlagSet(u16 id);
-u8 FlagReset(u16 id);
+u8 FlagClear(u16 id);
bool8 FlagGet(u16 id);
extern u16 gSpecialVar_0x8000;
diff --git a/include/evolution_graphics.h b/include/evolution_graphics.h
new file mode 100644
index 000000000..a960f637b
--- /dev/null
+++ b/include/evolution_graphics.h
@@ -0,0 +1,15 @@
+#ifndef GUARD_EVOLUTION_GRAPHICS_H
+#define GUARD_EVOLUTION_GRAPHICS_H
+
+void LoadEvoSparkleSpriteAndPal(void);
+
+u8 LaunchTask_PreEvoSparklesSet1(u16 arg0);
+u8 LaunchTask_PreEvoSparklesSet2(void);
+u8 LaunchTask_PostEvoSparklesSet1(void);
+u8 LaunchTask_PostEvoSparklesSet2AndFlash(u16 species);
+u8 LaunchTask_PostEvoSparklesSet2AndFlash_Trade(u16 species);
+u8 sub_8149E7C(u8 preEvoSpriteID, u8 postEvoSpriteID);
+
+#define EvoGraphicsTaskEvoStop data[8]
+
+#endif // GUARD_EVOLUTION_GRAPHICS_H
diff --git a/include/evolution_scene.h b/include/evolution_scene.h
new file mode 100644
index 000000000..48bd6ebe1
--- /dev/null
+++ b/include/evolution_scene.h
@@ -0,0 +1,10 @@
+#ifndef GUARD_EVOLUTION_SCENE_H
+#define GUARD_EVOLUTION_SCENE_H
+
+void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID);
+void BeginEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID);
+void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpriteID, u8 partyID);
+
+extern void (*gCB2_AfterEvolution)(void);
+
+#endif // GUARD_EVOLUTION_SCENE_H
diff --git a/include/field_camera.h b/include/field_camera.h
index 4ce207541..17126d190 100644
--- a/include/field_camera.h
+++ b/include/field_camera.h
@@ -11,7 +11,7 @@ struct CameraSomething
s32 unk14;
};
-extern struct Camera gUnknown_0202E844;
+extern struct Camera gCamera;
void move_tilemap_camera_to_upper_left_corner(void);
void sub_8057A58(void);
diff --git a/include/field_door.h b/include/field_door.h
index 1759e0dc1..31fdd154b 100644
--- a/include/field_door.h
+++ b/include/field_door.h
@@ -20,6 +20,6 @@ void FieldSetDoorClosed(u32, u32);
s8 FieldAnimateDoorClose(u32, u32);
s8 FieldAnimateDoorOpen(u32, u32);
bool8 FieldIsDoorAnimationRunning(void);
-u32 sub_8058790(u32 x, u32 y);
+u32 GetDoorSoundEffect(u32 x, u32 y);
#endif
diff --git a/include/field_effect.h b/include/field_effect.h
index ea02c4131..a509697e4 100644
--- a/include/field_effect.h
+++ b/include/field_effect.h
@@ -244,7 +244,7 @@ void sub_808948C(struct Task *);
void sub_80894C4(struct Task *);
void fishE(struct Task *);
-u8 CreateTrainerSprite_BirchSpeech(u8 gender, s16 x, s16 y, u8 subpriority, u8 *buffer);
+u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer);
void LoadTrainerGfx_TrainerCard(u8 gender, u16 palOffset, u8 *dest);
u8 CreateBirchSprite(s16 x, s16 y, u8 subpriority);
u8 CreateMonSprite_PicBox(u16, s16, s16, u8);
@@ -253,6 +253,6 @@ void MultiplyInvertedPaletteRGBComponents(u16, u8, u8, u8);
void sub_80878A8(void);
void sub_8087BA8(void);
-extern u32 gUnknown_0202FF84[8];
+extern u32 gFieldEffectArguments[8];
#endif // GUARD_FIELD_EFFECT_H
diff --git a/include/field_effect_helpers.h b/include/field_effect_helpers.h
index a1dd53a2b..7bba24fa6 100644
--- a/include/field_effect_helpers.h
+++ b/include/field_effect_helpers.h
@@ -1,6 +1,8 @@
#ifndef GUARD_FIELD_EFFECT_HELPERS_H
#define GUARD_FIELD_EFFECT_HELPERS_H
+extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[];
+
void sub_812869C(struct MapObject *);
bool8 sub_81286C4(struct MapObject *);
void oamc_shadow(struct Sprite *);
@@ -26,6 +28,9 @@ void sub_8126BC4(u8 unk_1B, u8 r6, s16 x, s16 y);
void sub_8127ED0(u8, u8);
void sub_8127F28(u8, u8, s16);
u8 sub_8128124(u8 id);
-void ash(s16, s16, u16, u8);
+void ash(s16, s16, u16, s16);
+void SetUpReflection(struct MapObject *mapObj, struct Sprite *sprite, u8 a);
+u32 oe_exec_and_other_stuff(u8 fieldEffectId, struct MapObject *mapObject);
+u8 sub_8126FF0(u8, u8, u8, s16, s16);
#endif // GUARD_FIELD_EFFECT_HELPERS_H
diff --git a/include/field_map_obj.h b/include/field_map_obj.h
index d2a1a9b1f..641a28ed3 100644
--- a/include/field_map_obj.h
+++ b/include/field_map_obj.h
@@ -3,6 +3,8 @@
#include "sprite.h"
+extern const u8 gUnknown_0830FD14[];
+
#define fieldmap_object_cb(setup, callback, table) \
static u8 callback(struct MapObject *, struct Sprite *);\
void setup(struct Sprite *sprite)\
@@ -54,17 +56,15 @@ u8 sub_805CCAC(s16 a0, s16 a1, s16 a2, s16 a3);
u8 sub_805CCE8(s16 a0, s16 a1, s16 a2, s16 a3);
u8 sub_805CD24(s16 a0, s16 a1, s16 a2, s16 a3);
-u8 sub_805F3EC(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8));
-u8 sub_805F3F0(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8));
-u8 sub_805F438(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8));
-u8 sub_805F4F0(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8));
-u8 sub_805F5A8(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8));
-u8 sub_805F660(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8));
-u8 cph_IM_DIFFERENT(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8));
-u8 sub_805F760(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8));
-u8 oac_hopping(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8));
-u8 sub_805F3EC(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8));
-u8 sub_805F3EC(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8));
+u8 sub_805F3EC(struct MapObject *, struct Sprite *, u8, bool8(u8));
+u8 sub_805F3F0(struct MapObject *, struct Sprite *, u8, bool8(u8));
+u8 sub_805F438(struct MapObject *, struct Sprite *, u8, bool8(u8));
+u8 sub_805F4F0(struct MapObject *, struct Sprite *, u8, bool8(u8));
+u8 sub_805F5A8(struct MapObject *, struct Sprite *, u8, bool8(u8));
+u8 sub_805F660(struct MapObject *, struct Sprite *, u8, bool8(u8));
+u8 cph_IM_DIFFERENT(struct MapObject *, struct Sprite *, u8, bool8(u8));
+u8 sub_805F760(struct MapObject *, struct Sprite *, u8, bool8(u8));
+u8 oac_hopping(struct MapObject *, struct Sprite *, u8, bool8(u8));
extern struct CameraSomething gUnknown_03004880;
extern u16 gUnknown_03004898;
@@ -318,7 +318,7 @@ u8 get_go_fast_image_anim_num(u8);
u8 get_go_faster_image_anim_num(u8);
u8 sub_805FD78(u8);
-int state_to_direction(u8, u8, u8);
+u32 state_to_direction(u8, u32, u32);
void sub_805AA98();
void sub_805AAB0(void);
@@ -379,14 +379,14 @@ u8 sub_805FDF8(u8);
u8 sub_805FE08(u8);
void npc_set_running_behaviour_etc(struct MapObject *, u8);
u8 npc_running_behaviour_by_direction(u8);
-u8 npc_block_way(struct MapObject *, s16, s16, u8);
+u8 npc_block_way(struct MapObject *, s16, s16, u32);
u8 sub_8060024(struct MapObject *, s16, s16, u8);
u8 sub_8060234(u8, u8, u8);
void sub_8060288(u8, u8, u8);
void sub_8060388(s16, s16, s16 *, s16 *);
void sub_80603CC(s16 x, s16 y, s16 *pInt, s16 *pInt1);
void GetFieldObjectMovingCameraOffset(s16 *, s16 *);
-void FieldObjectMoveDestCoords(struct MapObject *pObject, u8 unk_19, s16 *pInt, s16 *pInt1);
+void FieldObjectMoveDestCoords(struct MapObject *pObject, u32 unk_19, s16 *pInt, s16 *pInt1);
bool8 FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(struct MapObject *);
bool8 FieldObjectIsSpecialAnimActive(struct MapObject *);
bool8 FieldObjectSetSpecialAnim(struct MapObject *, u8);
@@ -396,21 +396,23 @@ void FieldObjectClearAnim(struct MapObject *);
bool8 FieldObjectCheckIfSpecialAnimFinishedOrInactive(struct MapObject *);
u8 FieldObjectClearAnimIfSpecialAnimFinished(struct MapObject *);
u8 FieldObjectGetSpecialAnim(struct MapObject *);
-u8 GetFaceDirectionAnimId(u8);
-u8 GetSimpleGoAnimId(u8);
-u8 GetGoSpeed0AnimId(u8 a);
-u8 sub_8060744(u8 a);
-u8 d2s_08064034(u8 a);
-u8 sub_806079C(u8 a);
-u8 sub_80607F4(u8 a);
-u8 GetJumpLedgeAnimId(u8 a);
-u8 sub_806084C(u8);
-u8 sub_8060878(u8);
-u8 sub_80608D0(u8);
-u8 GetStepInPlaceDelay32AnimId(u8 a);
-u8 GetStepInPlaceDelay16AnimId(u8);
-u8 GetStepInPlaceDelay8AnimId(u8 a);
-u8 GetStepInPlaceDelay4AnimId(u8 a);
+u8 GetFaceDirectionAnimId(u32);
+u8 GetSimpleGoAnimId(u32);
+u8 GetGoSpeed0AnimId(u32);
+u8 sub_8060744(u32);
+u8 d2s_08064034(u32);
+u8 sub_806079C(u32);
+u8 sub_80607C8(u32);
+u8 sub_80607F4(u32);
+u8 GetJumpLedgeAnimId(u32);
+u8 sub_806084C(u32);
+u8 sub_8060878(u32);
+u8 sub_80608A4(u32);
+u8 sub_80608D0(u32);
+u8 GetStepInPlaceDelay32AnimId(u32);
+u8 GetStepInPlaceDelay16AnimId(u32);
+u8 GetStepInPlaceDelay8AnimId(u32);
+u8 GetStepInPlaceDelay4AnimId(u32);
u8 FieldObjectFaceOppositeDirection(struct MapObject *, u8);
u8 sub_80609D8(u8);
u8 sub_8060A04(u8);
@@ -427,5 +429,9 @@ void sub_80634D0(struct MapObject *, struct Sprite *);
u8 SpawnSpecialFieldObjectParametrized(u8, u8, u8, s16, s16, u8);
void CameraObjectSetFollowedObjectId(u8);
u8 sub_805ADDC(u8);
+void sub_8060320(u32, s16 *, s16 *, s16, s16);
+u8 obj_unfreeze(struct Sprite *, s16, s16, u8);
+u16 npc_paltag_by_palslot(u8);
+void sub_8060470(s16 *, s16 *, s16, s16);
#endif // GUARD_FIELD_MAP_OBJ_H
diff --git a/include/field_map_obj_helpers.h b/include/field_map_obj_helpers.h
index fd29a9a7f..f760bf153 100644
--- a/include/field_map_obj_helpers.h
+++ b/include/field_map_obj_helpers.h
@@ -18,4 +18,6 @@ void DoShadowFieldEffect(struct MapObject *mapObject);
u8 sub_8064704(struct Sprite *);
u8 sub_806478C(struct Sprite *);
void obj_anim_image_set_and_seek(struct Sprite *sprite, u8 a2, u8 a3);
+void DoRippleFieldEffect(struct MapObject *mapObj, struct Sprite *sprite);
+
#endif
diff --git a/include/field_poison.h b/include/field_poison.h
index 8e8e2746f..df0b31434 100644
--- a/include/field_poison.h
+++ b/include/field_poison.h
@@ -1,6 +1,6 @@
#ifndef GUARD_FIELD_POISON_H
#define GUARD_FIELD_POISON_H
-s32 overworld_poison(void);
+s32 DoPoisonFieldEffect(void);
#endif // GUARD_FIELD_POISON_H
diff --git a/include/gba/m4a_internal.h b/include/gba/m4a_internal.h
index 572b77711..ff92fcc40 100644
--- a/include/gba/m4a_internal.h
+++ b/include/gba/m4a_internal.h
@@ -404,10 +404,6 @@ void SampleFreqSet(u32 freq);
void m4aSoundVSyncOn(void);
void m4aSoundVSyncOff(void);
-void m4aMPlayTempoControl(struct MusicPlayerInfo *mplayInfo, u16 tempo);
-void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 volume);
-void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 pitch);
-void m4aMPlayPanpotControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s8 pan);
void ClearModM(struct MusicPlayerTrack *track);
void m4aMPlayModDepthSet(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u8 modDepth);
void m4aMPlayLFOSpeedSet(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u8 lfoSpeed);
diff --git a/include/gba/types.h b/include/gba/types.h
index 96e057ab7..480619d21 100644
--- a/include/gba/types.h
+++ b/include/gba/types.h
@@ -39,11 +39,11 @@ struct PlttData
struct OamData
{
/*0x00*/ u32 y:8;
- /*0x01*/ u32 affineMode:2;
- u32 objMode:2;
- u32 mosaic:1;
- u32 bpp:1;
- u32 shape:2;
+ /*0x01*/ u32 affineMode:2; // 0x1, 0x2 = 0x3
+ u32 objMode:2; // 0x4, 0x8 = 0xC
+ u32 mosaic:1; // 0x10
+ u32 bpp:1; // 0x20
+ u32 shape:2; // 0x40, 0x80
/*0x02*/ u32 x:9;
u32 matrixNum:5; // bits 3/4 are h-flip/v-flip if not in affine mode
diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h
index 4029132e8..5c93eb8ab 100644
--- a/include/global.fieldmap.h
+++ b/include/global.fieldmap.h
@@ -14,16 +14,16 @@ enum
// map types
enum
{
- MAP_TYPE_0,
- MAP_TYPE_TOWN,
- MAP_TYPE_CITY,
- MAP_TYPE_ROUTE,
- MAP_TYPE_UNDERGROUND,
- MAP_TYPE_UNDERWATER,
- MAP_TYPE_6,
- MAP_TYPE_7,
- MAP_TYPE_INDOOR,
- MAP_TYPE_SECRET_BASE
+ MAP_TYPE_0, // 0
+ MAP_TYPE_TOWN, // 1
+ MAP_TYPE_CITY, // 2
+ MAP_TYPE_ROUTE, // 3
+ MAP_TYPE_UNDERGROUND, // 4
+ MAP_TYPE_UNDERWATER, // 5
+ MAP_TYPE_6, // 6
+ MAP_TYPE_7, // 7
+ MAP_TYPE_INDOOR, // 8
+ MAP_TYPE_SECRET_BASE // 9
};
// map battle scenes
diff --git a/include/global.h b/include/global.h
index f076274cc..ac28507e8 100644
--- a/include/global.h
+++ b/include/global.h
@@ -447,43 +447,69 @@ struct MailStruct
/*0x20*/ u16 itemId;
};
-struct UnkMauvilleOldManStruct
-{
- u8 unk_2D94;
- u8 unk_2D95;
- /*0x2D96*/ u16 mauvilleOldMan_ecArray[6];
- /*0x2DA2*/ u16 mauvilleOldMan_ecArray2[6];
- /*0x2DAE*/ u8 playerName[8];
- /*0x2DB6*/ u8 filler_2DB6[0x3];
- /*0x2DB9*/ u8 playerTrainerId[4];
- u8 unk_2DBD;
-}; /*size = 0x2C*/
-struct UnkMauvilleOldManStruct2
+// Mauville Pokemon Center men
+
+struct MauvilleManCommon
+{
+ u8 id;
+};
+
+struct MauvilleManBard
{
- u8 filler0;
- u8 unk1;
- u8 unk2;
- u16 mauvilleOldMan_ecArray[10];
- u8 mauvilleOldMan_ecArray2[12];
- u8 fillerF[0x2];
+ /*0x00*/ u8 id;
+ /*0x02*/ u16 songLyrics[6];
+ /*0x0E*/ u16 temporaryLyrics[6];
+ /*0x1A*/ u8 playerName[8];
+ /*0x22*/ u8 filler_2DB6[0x3];
+ /*0x25*/ u8 playerTrainerId[4];
+ /*0x29*/ bool8 hasChangedSong;
}; /*size = 0x2C*/
-struct MauvilleOldManTrader
+struct MauvilleManHipster
{
- u8 unk0;
+ u8 id;
+ bool8 alreadySpoken;
+};
+
+struct MauvilleManTrader
+{
+ u8 id;
u8 unk1[4];
u8 unk5[4][11];
- u8 unk31;
+ bool8 alreadyTraded;
+};
+
+struct MauvilleManStoryteller
+{
+ u8 id;
+ bool8 alreadyRecorded;
+ u8 filler2[2];
+ u8 gameStatIDs[4];
+ u8 trainerNames[4][7];
+ u8 statValues[4][4];
};
-typedef union OldMan
+struct MauvilleManGiddy
{
- struct UnkMauvilleOldManStruct oldMan1;
- struct UnkMauvilleOldManStruct2 oldMan2;
- struct MauvilleOldManTrader trader;
- u8 filler[0x40];
-} OldMan;
+ /*0x00*/ u8 id;
+ /*0x01*/ u8 taleCounter;
+ /*0x02*/ u8 questionNum;
+ /*0x04*/ u16 randomWords[10];
+ /*0x18*/ u8 questionList[12];
+}; /*size = 0x2C*/
+
+
+union MauvilleMan
+{
+ struct MauvilleManCommon common;
+ struct MauvilleManBard bard;
+ struct MauvilleManHipster hipster;
+ struct MauvilleManTrader trader;
+ struct MauvilleManStoryteller storyteller;
+ struct MauvilleManGiddy giddy;
+ u8 filler[0x40]; // needed to pad out the struct
+};
struct Unk_SB_Access_Struct1
{
@@ -534,18 +560,34 @@ struct GabbyAndTyData
/*2b1b*/ u8 valB_5:3;
};
-struct RecordMixing_UnknownStructSub
+struct DayCareMail
{
- u32 unk0;
- u8 data[0x34];
- //u8 data[0x38];
+ /*0x00*/ struct MailStruct message;
+ /*0x24*/ u8 names[19];
+};
+
+struct DayCareStepCountersEtc {
+ u32 steps[2];
+ u16 personalityLo;
+ u8 unk_11a;
};
-struct RecordMixing_UnknownStruct
+struct RecordMixingDayCareMail
{
- struct RecordMixing_UnknownStructSub data[2];
+ struct DayCareMail mail[2];
u32 unk70;
- u16 unk74[0x2];
+ u16 unk74[2];
+};
+
+struct DayCareMisc
+{
+ struct DayCareMail mail[2];
+ struct DayCareStepCountersEtc countersEtc;
+};
+
+struct DayCareData {
+ struct BoxPokemon mons[2];
+ struct DayCareMisc misc;
};
struct LinkBattleRecord
@@ -582,7 +624,7 @@ struct SaveBlock1 /* 0x02025734 */
/*0x2C*/ u16 battleMusic;
/*0x2E*/ u8 weather;
/*0x2F*/ u8 filler_2F;
- /*0x30*/ u8 flashUsed;
+ /*0x30*/ u8 flashLevel; // flash level on current map, 0 being normal and 4 being the darkest
/*0x32*/ u16 mapDataId;
/*0x34*/ u16 mapView[0x100];
/*0x234*/ u8 playerPartyCount;
@@ -640,15 +682,11 @@ struct SaveBlock1 /* 0x02025734 */
/*0x2B4C*/ struct MailStruct mail[16];
/*0x2D8C*/ u8 unk2D8C[4];
/*0x2D90*/ u8 filler_2D90[0x4];
- /*0x2D94*/ OldMan oldMan;
+ /*0x2D94*/ union MauvilleMan mauvilleMan;
/*0x2DD4*/ struct EasyChatPair easyChatPairs[5]; //Dewford trend [0] and some other stuff
/*0x2DFC*/ u8 filler_2DFC[0x8];
/*0x2E04*/ SB_Struct sbStruct;
- /*0x2F9C*/ struct BoxPokemon daycareData[2];
- /*0x303C*/ struct RecordMixing_UnknownStruct filler_303C;
- /*0x30AC*/ u8 filler_30B4[0x2];
- /*0x30B6*/ u8 filler_30B6;
- /*0x30B7*/ u8 filler_30B7[1];
+ /*0x2F9C*/ struct DayCareData daycareData;
/*0x30B8*/ struct LinkBattleRecord linkBattleRecords[5];
/*0x3108*/ u8 filler_3108[8];
/*0x3110*/ u8 giftRibbons[7];
diff --git a/include/intro_credits_graphics.h b/include/intro_credits_graphics.h
index 5abb2381b..2718d2f9f 100644
--- a/include/intro_credits_graphics.h
+++ b/include/intro_credits_graphics.h
@@ -10,15 +10,16 @@ extern const struct SpritePalette gIntro2SpritePalettes[];
extern const struct CompressedSpriteSheet gUnknown_08416E24;
extern const struct CompressedSpriteSheet gUnknown_08416E34;
-void load_intro_part2_graphics(/*TODO: arg types*/);
-void sub_8148C78(/*TODO: arg types*/);
+void load_intro_part2_graphics(u8 a);
+void sub_8148C78(u8 a);
void sub_8148CB0(u8);
void sub_8148E90(u8);
-u8 sub_8148EC0(/*TODO: arg types*/);
-void sub_8149020(/*TODO: arg types*/);
-u8 intro_create_brendan_sprite(/*TODO: arg types*/);
-u8 intro_create_may_sprite(/*TODO: arg types*/);
-u8 intro_create_latios_sprite(/*TODO: arg types*/);
-u8 intro_create_latias_sprite(/*TODO: arg types*/);
+u8 sub_8148EC0(u8 a, u16 b, u16 c, u16 d);
+void sub_8148F3C(u8);
+void sub_8149020(u8);
+u8 intro_create_brendan_sprite(s16 a, s16 b);
+u8 intro_create_may_sprite(s16 a, s16 b);
+u8 intro_create_latios_sprite(s16 a, s16 b);
+u8 intro_create_latias_sprite(s16 a, s16 b);
#endif // GUARD_INTRO_CREDITS_GRAPHICS_H
diff --git a/include/item_menu.h b/include/item_menu.h
index 6950ed0ff..29618f347 100644
--- a/include/item_menu.h
+++ b/include/item_menu.h
@@ -3,6 +3,17 @@
#include "string_util.h"
+struct PocketScrollState
+{
+ u8 cursorPos;
+ u8 scrollTop;
+ u8 numSlots;
+ u8 cursorMax;
+};
+
+extern struct PocketScrollState gBagPocketScrollStates[];
+extern struct ItemSlot *gCurrentBagPocketItemSlots;
+
void ResetBagScrollPositions(void);
void ClearBag(void);
void sub_80A3E0C(void);
diff --git a/include/item_use.h b/include/item_use.h
index 1558f7691..227c0c9ee 100644
--- a/include/item_use.h
+++ b/include/item_use.h
@@ -38,7 +38,7 @@ void sub_80C9FC0(u8);
void ItemUseOutOfBattle_Repel(u8);
void ItemUseOutOfBattle_BlackWhiteFlute(u8);
void task08_080A1C44(u8);
-u8 sub_80CA1C8(void);
+u8 CanUseEscapeRopeOnCurrMap(void);
void ItemUseOutOfBattle_EscapeRope(u8);
void ItemUseOutOfBattle_EvolutionStone(u8);
void ItemUseInBattle_PokeBall(u8);
@@ -49,5 +49,6 @@ void ItemUseInBattle_Escape(u8);
void ItemUseOutOfBattle_EnigmaBerry(u8);
void ItemUseInBattle_EnigmaBerry(u8);
void ItemUseOutOfBattle_CannotUse(u8);
+u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId);
#endif // GUARD_ITEM_USE_H
diff --git a/include/m4a.h b/include/m4a.h
index b6c8f9072..7d016c98b 100644
--- a/include/m4a.h
+++ b/include/m4a.h
@@ -16,4 +16,9 @@ void m4aMPlayFadeOutTemporarily(struct MusicPlayerInfo *mplayInfo, u16 speed);
void m4aMPlayFadeIn(struct MusicPlayerInfo *mplayInfo, u16 speed);
void m4aMPlayImmInit(struct MusicPlayerInfo *mplayInfo);
+void m4aMPlayTempoControl(struct MusicPlayerInfo *mplayInfo, u16 tempo);
+void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 volume);
+void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s16 pitch);
+void m4aMPlayPanpotControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s8 pan);
+
#endif //GUARD_M4A_H
diff --git a/include/mail_data.h b/include/mail_data.h
index df4b385a1..2659c0d37 100644
--- a/include/mail_data.h
+++ b/include/mail_data.h
@@ -11,6 +11,6 @@ u8 GiveMailToMon2(struct Pokemon *, struct MailStruct *);
void TakeMailFromMon(struct Pokemon *);
u8 TakeMailFromMon2(struct Pokemon *);
bool8 ItemIsMail(u16);
-bool8 ItemIsMail(u16);
+bool8 MonHasMail(struct Pokemon *);
#endif // GUARD_MAIL_DATA_H
diff --git a/include/map_obj_lock.h b/include/map_obj_lock.h
index f7352be22..9fb57743e 100644
--- a/include/map_obj_lock.h
+++ b/include/map_obj_lock.h
@@ -7,7 +7,7 @@ bool8 sub_8064CFC(void);
void ScriptFreezeMapObjects(void);
void sub_8064D38(u8 taskId);
bool8 sub_8064DB4(void);
-void sub_8064DD8(void);
+void LockSelectedMapObject(void);
void sub_8064E2C(void);
void unref_sub_8064E5C(void);
void sub_8064EAC(void);
diff --git a/include/mauville_man.h b/include/mauville_man.h
new file mode 100644
index 000000000..2b8f139f2
--- /dev/null
+++ b/include/mauville_man.h
@@ -0,0 +1,18 @@
+#ifndef GUARD_MAUVILLE_OLD_MAN_H
+#define GUARD_MAUVILLE_OLD_MAN_H
+
+// IDs
+enum
+{
+ MAUVILLE_MAN_BARD,
+ MAUVILLE_MAN_HIPSTER,
+ MAUVILLE_MAN_TRADER,
+ MAUVILLE_MAN_STORYTELLER,
+ MAUVILLE_MAN_GIDDY,
+};
+
+void SetupMauvilleOldMan(void);
+void sub_80F7F30(void);
+void sub_80F83D0(void);
+
+#endif // GUARD_MAUVILLE_OLD_MAN_H
diff --git a/include/mauville_old_man.h b/include/mauville_old_man.h
deleted file mode 100644
index 473fcf5c8..000000000
--- a/include/mauville_old_man.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef GUARD_MAUVILLE_OLD_MAN_H
-#define GUARD_MAUVILLE_OLD_MAN_H
-
-void SetMauvilleOldMan(void);
-void sub_80F7DC0(void);
-void sub_80F7F30(void);
-void sub_80F7F80(u8);
-void sub_80F83D0(void);
-void sub_80F83F8(void);
-
-#endif // GUARD_MAUVILLE_OLD_MAN_H
diff --git a/include/menu.h b/include/menu.h
index e1bb4f1e4..3cf47b9b8 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -43,7 +43,7 @@ u16 unref_sub_8071F98(u8, u8);
void unref_sub_8071FBC(u16, u8, u8, u8, u8);
void MenuDisplayMessageBox(void);
void MenuPrintMessage(const u8 *, u8, u8);
-void sub_8072044(const u8 *);
+void MenuPrintMessageDefaultCoords(const u8 *);
void MenuSetText(const u8 *);
u8 MenuUpdateWindowText(void);
u8 unref_sub_8072098(void);
@@ -59,7 +59,7 @@ void sub_807274C(u8, u8, u8, u8, const struct MenuAction[], u8, u32);
s8 sub_80727CC(void);
u8 sub_807288C(u8);
void PrintMenuItems(u8, u8, u8, const struct MenuAction[]);
-void PrintMenuItemsReordered(u8, u8, u8, const struct MenuAction[], const u8*);
+void PrintMenuItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct MenuAction2 menuItems[], const u8 *order);
void InitYesNoMenu(u8, u8, u8);
void DisplayYesNoMenu(u8, u8, u32);
s8 ProcessMenuInputNoWrap_(void);
diff --git a/include/money.h b/include/money.h
index 49015ee19..5a0acd482 100644
--- a/include/money.h
+++ b/include/money.h
@@ -2,15 +2,15 @@
#define GUARD_MONEY_H
bool8 IsEnoughMoney(u32, u32);
-void sub_80B79B8(u32 *, u32);
-void sub_80B79E0(u32 *, u32);
-void sub_80B79F8(u8 *buffer, u32 arg1, u8 arg2);
-void sub_80B7A94(u32 arg0, u8 arg1, u8 x, u8 y);
+void AddMoney(u32 *, u32);
+void RemoveMoney(u32 *, u32);
+void GetMoneyAmountText(u8 *buffer, u32 arg1, u8 arg2);
+void PrintMoneyAmount(u32 arg0, u8 arg1, u8 x, u8 y);
void sub_80B7AEC(u32, u8 left, u8 top);
-void sub_80B7B34(void);
-void sub_80B7BEC(u32, u8, u8);
-void sub_80B7C14(u32, u8, u8);
-void RemoveMoneyLabelObject(u8, u8);
+void sub_80B7B34(u8, u8, int);
+void UpdateMoneyWindow(u32, u8, u8);
+void OpenMoneyWindow(u32, u8, u8);
+void CloseMoneyWindow(u8, u8);
bool8 sub_80B7CE8(void);
void sub_80B7D0C(void);
diff --git a/include/rom4.h b/include/overworld.h
index 8d5b1bfa2..fcdc8ed97 100644
--- a/include/rom4.h
+++ b/include/overworld.h
@@ -22,12 +22,12 @@ struct UCoords32
u32 x, y;
};
-extern struct UCoords32 gUnknown_0821664C[];
+extern const struct UCoords32 gUnknown_0821664C[];
extern void (*gFieldCallback)(void);
// sub_8052F5C
void flag_var_implications_of_teleport_(void);
-void new_game(void);
+void Overworld_ResetStateAfterTeleport(void);
void sub_8053014(void);
void sub_8053050(void);
// sub_805308C
@@ -36,18 +36,18 @@ void IncrementGameStat(u8 index);
u32 GetGameStat(u8 index);
void SetGameStat(u8, u32);
// sub_8053154
-// sub_8053198
-void update_saveblock1_field_object_coords(u8, s16, s16);
-void update_saveblock1_field_object_movement_behavior(u8, u8);
+// LoadSaveblockMapObjScripts
+void Overworld_SaveMapObjCoords(u8, s16, s16);
+void Overworld_SaveMapObjMovementType(u8, u8);
// mapdata_load_assets_to_gpu_and_full_redraw
// get_mapdata_header
// warp_shift
// warp_set
// warp_data_is_not_neg_1
-struct MapHeader * const get_mapheader_by_bank_and_number(u16 mapGroup, u16 mapNum);
+struct MapHeader * const Overworld_GetMapHeaderByGroupAndId(u16 mapGroup, u16 mapNum);
struct MapHeader * const warp1_get_mapheader(void);
// set_current_map_header_from_sav1_save_old_name
-// sub_805338C
+// LoadSaveblockMapHeader
// sub_80533CC
void warp_in(void);
void warp1_set(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
@@ -81,14 +81,14 @@ void walkrun_find_lowest_active_bit_in_bitfield(void);
u8 sub_8053B00(struct UnkPlayerStruct *playerStruct, u16 a2, u8 a3);
u8 sub_8053B60(struct UnkPlayerStruct *playerStruct, u8, u16, u8);
u16 cur_mapdata_block_role_at_screen_center_acc_to_sav1(void);
-bool32 IsBikingAllowedByMap(void);
-void sub_8053C98(void);
-void sub_8053CE4(s32 a1);
-u8 sav1_get_flash_used_on_map(void);
+bool32 Overworld_IsBikeAllowedOnCurrentMap(void);
+void SetDefaultFlashLevel(void);
+void Overworld_SetFlashLevel(s32 a1);
+u8 Overworld_GetFlashLevel(void);
void sub_8053D14(u16);
// sub_8053D30
// sub_8053D6C
-// sub_8053D9C
+// GetLocationMusic
// sav1_map_get_music
// warp1_target_get_music
// call_map_music_set_to_zero
@@ -97,21 +97,21 @@ void sav1_set_battle_music_maybe(u16);
void sav1_reset_battle_music_maybe(void);
void sub_8053F0C(void);
void sub_8053F84(void);
-void sub_8053FB0(u16);
-// is_warp1_light_level_8_or_9
+void Overworld_ChangeMusicTo(u16);
+// GetMapMusicFadeoutSpeed
void sub_8053FF8(void);
bool8 sub_8054034(void);
void sub_8054044(void);
-// sub_8054050
-void sub_80540D0(s16 *, u16 *);
-void sub_8054164(void);
-u8 get_map_light_level_by_bank_and_number(s8 mapGroup, s8 mapNum);
-// get_map_light_level_from_warp
-u8 sav1_map_get_light_level(void);
-u8 get_map_light_from_warp0(void);
-bool8 is_light_level_1_2_3_5_or_6(u8 a1);
-bool8 is_light_level_1_2_3_or_6(u8 a1);
-u8 is_light_level_8_or_9(u8);
+// PlayAmbientCry
+void UpdateAmbientCry(s16 *, u16 *);
+void ChooseAmbientCrySpecies(void);
+u8 GetMapTypeByGroupAndId(s8 mapGroup, s8 mapNum);
+// GetMapTypeByWarpData
+u8 Overworld_GetMapTypeOfSaveblockLocation(void);
+u8 get_map_type_from_warp0(void);
+bool8 is_map_type_1_2_3_5_or_6(u8 a1);
+bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 a1);
+u8 Overworld_MapTypeIsIndoors(u8);
// unref_sub_8054260
u8 sav1_map_get_name();
// sav1_map_get_battletype
@@ -119,8 +119,8 @@ u8 sav1_map_get_name();
bool32 is_c1_link_related_active(void);
// c1_overworld_normal
// c1_overworld
-// c2_overworld_basic
-// sub_8054398
+// OverworldBasic
+void CB2_OverworldBasic(void);
void c2_overworld(void);
// set_callback1
// sub_80543DC
diff --git a/include/party_menu.h b/include/party_menu.h
index 9ce476869..5250486bb 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -53,38 +53,55 @@ struct Struct201B000
u16 unk282;
};
+struct Unk2001000
+{
+ u8 unk0;
+ u8 unk1;
+ u8 unk2;
+ u8 unk3;
+ u8 unk4;
+ u8 unk5;
+ u8 unk6;
+ u8 unk7;
+ u8 unk8;
+ u8 unk9;
+ u8 unkA;
+ u8 unkB;
+ void* unkC;
+ u16 array[53561];
+};
+
extern u8 ewram[];
+#define ewram01000 (*(struct Unk2001000 *)(ewram + 0x01000))
#define ewram1B000 (*(struct Unk201B000 *)(ewram + 0x1B000))
#define ewram1B000_alt (*(struct Struct201B000 *)(ewram + 0x1B000))
#define EWRAM_1B000 ewram1B000_alt
void sub_806AEDC(void);
-void sub_806AF4C();
+void sub_806AF4C(u8 arg0, u8 arg1, void* arg2, u8 arg3);
void OpenPartyMenu(u8, u8);
void OpenPartyMenu();
-u8 sub_806B124(void);
+bool8 sub_806B124(void);
u8 IsLinkDoubleBattle(void);
u8 sub_806B58C(u8);
u8 sub_806B58C(u8);
void sub_806BC3C(u8, u8);
u8 sub_806BD58(u8, u8);
u8 sub_806BD58(u8, u8);
-u16 sub_806BD80(); // undefined args in battle_party_menu.c
+u16 sub_806BD80(u8);
void task_pc_turn_off();
-void sub_806BF74();
-void sub_806C994();
-u8 sub_806CA38(u8);
+void sub_806BF74(u8 arg0, u8 arg1);
+void sub_806C994(u8 arg0, u8 arg1);
+u8 sub_806CA38(u8 taskID);
void sub_806CB74(u8 taskId);
void sub_806CCE4(void);
void sub_806CD44(u8 taskId);
-void sub_806D538();
-void sub_806D538();
-void sub_806D538();
+void sub_806D538(u8 arg0, u8 arg1);
void sub_806D5A4(void);
void SetMonIconAnim();
void TryCreatePartyMenuMonIcon(u8, u8, struct Pokemon *);
void LoadHeldItemIconGraphics(void);
-void LoadHeldItemIconGraphics(void);
+void PartyMenuTryGiveMonHeldItem(u8 taskId, u16 newItem, TaskFunc c);
void CreateHeldItemIcons_806DC34(); // undefined args
void CreateHeldItemIcons_806DC34();
u8 GetMonIconSpriteId_maybe();
@@ -151,5 +168,13 @@ void DoRareCandyItemEffect(u8, u16, TaskFunc);
void Task_RareCandy1(u8);
void Task_RareCandy2(u8);
void sub_8070848(u8 taskId);
+void sub_806CA60(u8 taskId);
+void sub_806CD5C(u8 taskId);
+void DoTakeMail(u8 taskId, TaskFunc func);
+void PartyMenuTryGiveMonHeldItem_806ECE8(u8 taskId, TaskFunc func);
+void PartyMenuTryGiveMonMail(u8 taskId, TaskFunc func);
+void sub_806D668(u8 partyID);
+void TaughtMove(u8 taskId);
+void StopTryingToTeachMove_806F588(u8 taskId);
#endif // GUARD_PARTY_MENU_H
diff --git a/include/pokeblock.h b/include/pokeblock.h
index f78ed40c3..6720653a0 100644
--- a/include/pokeblock.h
+++ b/include/pokeblock.h
@@ -1,7 +1,8 @@
#ifndef GUARD_POKEBLOCK_H
#define GUARD_POKEBLOCK_H
-enum {
+enum
+{
PBLOCK_CLR_BLACK,
PBLOCK_CLR_RED,
PBLOCK_CLR_BLUE,
@@ -10,15 +11,32 @@ enum {
PBLOCK_CLR_YELLOW
};
+enum
+{
+ PBLOCK_COLOR,
+ PBLOCK_SPICY,
+ PBLOCK_DRY,
+ PBLOCK_SWEET,
+ PBLOCK_BITTER,
+ PBLOCK_SOUR,
+ PBLOCK_FEEL,
+};
+
void sub_810B96C(void);
u8 sub_810BA50(s16, s16, u8);
u8 sub_810C9B0(struct Pokeblock *);
-s16 sub_810CA9C(const struct Pokeblock *, u8);
+s16 GetPokeblockData(const struct Pokeblock *, u8);
u8 sub_810C9E8(struct Pokeblock *);
void sub_810BA7C(u8);
void ClearPokeblocks(void);
-bool8 sub_810CA6C(u8);
-s16 sub_810CAE4(u8, const struct Pokeblock *);
+bool8 PokeblockClearIfExists(u8);
+s16 PokeblockGetGain(u8, const struct Pokeblock *);
u8 sub_810CB68(u8, u8*);
+void PokeblockCopyName(struct Pokeblock *pokeblock, u8 *dest);
+void CB2_PreparePokeblockFeedScene(void);
+
+#include "main.h"
+
+void sub_8136130(struct Pokeblock *, MainCallback);
#endif // GUARD_POKEBLOCK_H
diff --git a/include/pokeblock_feed.h b/include/pokeblock_feed.h
deleted file mode 100644
index 65d0d1dc9..000000000
--- a/include/pokeblock_feed.h
+++ /dev/null
@@ -1,10 +0,0 @@
-//
-// Created by Scott Norton on 6/28/17.
-//
-
-#ifndef POKERUBY_POKEBLOCK_FEED_H
-#define POKERUBY_POKEBLOCK_FEED_H
-
-void sub_8147ADC(void);
-
-#endif //POKERUBY_POKEBLOCK_FEED_H
diff --git a/include/pokemon.h b/include/pokemon.h
index 21173d503..5d76a8a05 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -93,6 +93,8 @@
#define MON_DATA_SPATK2 87
#define MON_DATA_SPDEF2 88
+#define MAX_LEVEL 100
+
#define MON_MALE 0x00
#define MON_FEMALE 0xFE
#define MON_GENDERLESS 0xFF
@@ -510,7 +512,7 @@ void sub_803ADE8(struct Pokemon *mon, struct UnknownPokemonStruct *src);
void sub_803AF78(struct Pokemon *mon, struct UnknownPokemonStruct *dest);
u16 CalculateBoxMonChecksum(struct BoxPokemon *boxMon);
void CalculateMonStats(struct Pokemon *mon);
-void sub_803B4B4(struct Pokemon *src, struct Pokemon *dest);
+void sub_803B4B4(const struct BoxPokemon *src, struct Pokemon *dest);
u8 GetLevelFromMonExp(struct Pokemon *mon);
u8 GetLevelFromBoxMonExp(struct BoxPokemon *boxMon);
u16 GiveMoveToMon(struct Pokemon *mon, u16 move);
@@ -520,7 +522,7 @@ 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 sub_803B7C8(struct Pokemon *mon, u8 a2);
+u16 MonTryLearningNewMove(struct Pokemon *mon, bool8 a2);
void DeleteFirstMoveAndGiveMoveToMon(struct Pokemon *mon, u16 move);
void DeleteFirstMoveAndGiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move);
@@ -576,6 +578,7 @@ u16 NationalPokedexNumToSpecies(u16 nationalNum);
u16 NationalToHoennOrder(u16);
u16 SpeciesToNationalPokedexNum(u16);
u16 HoennToNationalOrder(u16);
+u16 SpeciesToCryId(u16 species);
void DrawSpindaSpots(u16, u32, u8 *, u8);
u8 sub_803FBBC(void);
u8 sub_803FC58(u16);
@@ -583,6 +586,7 @@ void AdjustFriendship(struct Pokemon *, u8);
u8 CheckPartyHasHadPokerus(struct Pokemon *, u8);
void UpdatePartyPokerusTime(u16);
u32 CanMonLearnTMHM(struct Pokemon *, u8);
+u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves);
u8 sub_8040574(struct Pokemon *party);
void ClearBattleMonForms(void);
void sub_80408BC();
@@ -597,5 +601,7 @@ u8 *sub_8040D08();
bool32 sub_8040D3C(u16 species, u8 *name, u8 language);
s8 sub_8040A54(struct Pokemon *, u8);
u16 GetMonEVCount(struct Pokemon *);
+u8 GetLevelUpMovesBySpecies(u16, u16 *);
+u8 TryIncrementMonLevel(struct Pokemon *);
#endif // GUARD_POKEMON_H
diff --git a/include/pokemon_menu.h b/include/pokemon_menu.h
index fc43a44c6..06f905577 100644
--- a/include/pokemon_menu.h
+++ b/include/pokemon_menu.h
@@ -1,15 +1,47 @@
#ifndef GUARD_POKEMON_MENU_H
#define GUARD_POKEMON_MENU_H
+#define POKEMENU_FIRST_FIELD_MOVE_ID 10
+
+enum
+{
+ POKEMENU_SUMMARY, // 0
+ POKEMENU_SWITCH, // 1
+ POKEMENU_ITEM, // 2
+ POKEMENU_CANCEL, // 3
+ POKEMENU_GIVE_ITEM, // 4
+ POKEMENU_TAKE_ITEM, // 5
+ POKEMENU_TAKE_MAIL, // 6
+ POKEMENU_MAIL, // 7
+ POKEMENU_READ_MAIL, // 8
+ POKEMENU_CANCEL_SUBMENU, // 9
+ POKEMENU_CUT, // 10
+ POKEMENU_FLASH, // 11
+ POKEMENU_ROCK_SMASH, // 12
+ POKEMENU_STRENGTH, // 13
+ POKEMENU_SURF, // 14
+ POKEMENU_FLY, // 15
+ POKEMENU_DIVE, // 16
+ POKEMENU_WATERFALL, // 17
+ POKEMENU_TELEPORT, // 18
+ POKEMENU_DIG, // 19
+ POKEMENU_SECRET_POWER, // 20
+ POKEMENU_MILK_DRINK, // 21
+ POKEMENU_SOFT_BOILED, // 22
+ POKEMENU_SWEET_SCENT, // 23
+};
+
+extern u8 gLastFieldPokeMenuOpened;
+extern void (*gUnknown_03005CE4)(void);
+
+void sub_808B5B4(u32 taskID);
void sub_8089A70(void);
-void sub_808A004();
-void sub_808AB90(void);
-void sub_808AB90(void); // unknown args
-void sub_808AB90(void);
+void sub_808A004(u8 taskID);
+void FieldCallback_Teleport(void);
void sub_808AD58(void);
void sub_808B020(void);
-void sub_808B0C0(u8);
+void sub_808B0C0(u8 taskID);
void sub_808B508(u8);
-void sub_808B564();
+void sub_808B564(void);
#endif // GUARD_POKEMON_MENU_H
diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h
index bd4e7915b..9fe3436ef 100644
--- a/include/pokemon_storage_system.h
+++ b/include/pokemon_storage_system.h
@@ -2,5 +2,7 @@
#define GUARD_POKEMON_STORAGE_SYSTEM_H
void ResetPokemonStorageSystem(void);
+void BoxMonRestorePP(struct BoxPokemon *);
+void party_compaction(void);
#endif // GUARD_POKEMON_STORAGE_SYSTEM_H
diff --git a/include/rom3.h b/include/rom3.h
index 1fa55d11a..81bb56df1 100644
--- a/include/rom3.h
+++ b/include/rom3.h
@@ -10,58 +10,58 @@ void sub_800B9A8(void);
void sub_800BA78(void);
void sub_800BD54(void);
void sub_800BF28(void);
-void dp01_prepare_buffer_wireless_probably(u8 a, u16, u8 *c);
+void PrepareBufferDataTransferLink(u8 a, u16, u8 *c);
void sub_800C1A8(u8);
void sub_800C35C(void);
void sub_800C47C(u8);
void EmitGetAttributes(u8 a, u8 b, u8 c);
-void dp01_build_cmdbuf_x01_a_b_0(u8 a, u8 b, u8 c);
-void dp01_build_cmdbuf_x04_4_4_4(u8 a);
-void EmitSwitchInAnim(u8, u8, u8);
+void Emitcmd1(u8 a, u8 b, u8 c);
+void EmitLoadPokeSprite(u8 a);
+void EmitSendOutPoke(u8, u8, u8);
void EmitReturnPokeToBall(u8 a, u8 b);
-void dp01_build_cmdbuf_x07_7_7_7(u8 a);
+void EmitTrainerThrow(u8 a);
void EmitTrainerSlide(u8 a);
-void dp01_build_cmdbuf_x09_9_9_9(u8 a);
-void EmitFaintAnimation(u8 a);
-void dp01_build_cmdbuf_x0B_B_B_B(u8 a);
-void dp01_build_cmdbuf_x0C_C_C_C(u8 a);
-void EmitBallThrowAnim(u8 a, u8 b);
+void EmitTrainerSlideBack(u8 a);
+void Emitcmd10(u8 a);
+void Emitcmd11(u8 a);
+void Emitcmd12(u8 a);
+void EmitBallThrow(u8 a, u8 b);
void EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, struct DisableStruct *g);
void EmitPrintString(u8 a, u16 b);
void EmitPrintStringPlayerOnly(u8 a, u16 stringID);
-void dp01_build_cmdbuf_x12_a_bb(u8 a, u8 b, u16 c);
-void sub_800CBA4(u8 a, u8 b, u8 c, u8 *d);
-void sub_800CBE0(u8 a, u8 *b);
+void Emitcmd18(u8 a, u8 b, u16 c);
+void Emitcmd20(u8 a, u8 b, u8 c, u8 *d);
+void EmitOpenBag(u8 a, u8 *b);
void EmitChoosePokemon(u8 a, u8 b, u8 c, u8 d, u8 *e);
-void dp01_build_cmdbuf_x17_17_17_17(u8 a);
+void Emitcmd23(u8 a);
void EmitHealthBarUpdate(u8 a, u16 b);
void EmitExpBarUpdate(u8 a, u8 b, u16 c);
void EmitStatusIconUpdate(u8 a, u32 b, u32 c);
void EmitStatusAnimation(u8 a, u8 b, u32 c);
void EmitStatusXor(u8 a, u8 b);
-void dp01_build_cmdbuf_x1D_1D_numargs_varargs(u8, u16, u8 *);
-void dp01_build_cmdbuf_x21_a_bb(u8 a, u8 b, u16 c);
-void dp01_build_cmdbuf_x22_a_three_bytes(u8 a, u8 b, u8 *c);
-void dp01_build_cmdbuf_x23_aa_0(u8 a, u16 b);
-void dp01_build_cmdbuf_x24_aa_0(u8 a, u16 b);
-void dp01_build_cmdbuf_x25_25_25_25(u8 a);
-void dp01_build_cmdbuf_x26_a(u8 a, u8 b);
-void dp01_build_cmdbuf_x27_27_27_27(u8 a);
-void dp01_build_cmdbuf_x28_28_28_28(u8 a);
+void Emitcmd29(u8, u16, u8 *);
+void Emitcmd33(u8 a, u8 b, u16 c);
+void Emitcmd34(u8 a, u8 b, u8 *c);
+void Emitcmd35(u8 a, u16 b);
+void Emitcmd36(u8 a, u16 b);
+void Emitcmd37(u8 a);
+void Emitcmd38(u8 a, u8 b);
+void Emitcmd39(u8 a);
+void Emitcmd40(u8 a);
void EmitHitAnimation(u8 a);
-void dp01_build_cmdbuf_x2A_2A_2A_2A(u8 a);
+void Emitcmd42(u8 a);
void EmitEffectivenessSound(u8 a, u16 b);
-void EmitPlaySound(u8 a, u16 b);
+void Emitcmd44(u8 a, u16 b);
void EmitFaintingCry(u8 a);
-void EmitBattleIntroSlide(u8 a, u8 b);
-void dp01_build_cmdbuf_x2F_2F_2F_2F(u8 a);
-void dp01_build_cmdbuf_x30_TODO(u8 a, u8 *b, u8 c);
-void dp01_build_cmdbuf_x31_31_31_31(u8 a);
-void dp01_build_cmdbuf_x32_32_32_32(u8 a);
+void EmitIntroSlide(u8 a, u8 b);
+void EmitTrainerBallThrow(u8 a);
+void Emitcmd48(u8 a, u8 *b, u8 c);
+void Emitcmd49(u8 a);
+void Emitcmd50(u8 a);
void EmitSpriteInvisibility(u8 a, u8 b);
void EmitBattleAnimation(u8 a, u8 b, u16 c);
void EmitLinkStandbyMsg(u8 a, u8 b);
void EmitResetActionMoveSelection(u8 a, u8 b);
-void dp01_build_cmdbuf_x37_a(u8 a, u8 b);
+void Emitcmd55(u8 a, u8 b);
#endif // GUARD_ROM3_H
diff --git a/include/script.h b/include/script.h
index 2a738698c..5a899cf4a 100644
--- a/include/script.h
+++ b/include/script.h
@@ -11,7 +11,7 @@ struct ScriptContext
u8 stackDepth;
u8 mode;
u8 comparisonResult;
- u8 (*nativePtr)(void);
+ bool8 (*nativePtr)(void);
const u8 *scriptPtr;
const u8 *stack[20];
ScrCmdFunc *cmdTable;
@@ -23,7 +23,7 @@ struct ScriptContext
void InitScriptContext(struct ScriptContext *ctx, void *cmdTable, void *cmdTableEnd);
u8 SetupBytecodeScript(struct ScriptContext *ctx, const u8 *ptr);
-void SetupNativeScript(struct ScriptContext *ctx, void *ptr);
+void SetupNativeScript(struct ScriptContext *ctx, bool8 (*ptr)(void));
void StopScript(struct ScriptContext *ctx);
u8 RunScriptCommand(struct ScriptContext *ctx);
u8 ScriptPush(struct ScriptContext *ctx, const u8 *ptr);
@@ -42,16 +42,12 @@ void ScriptContext1_SetupScript(const u8 *ptr);
void ScriptContext1_Stop(void);
void EnableBothScriptContexts(void);
void ScriptContext2_RunNewScript(const u8 *ptr);
-u8 *mapheader_get_tagged_pointer(u8 tag);
-void mapheader_run_script_by_tag(u8 tag);
-u8 *mapheader_get_first_match_from_tagged_ptr_list(u8 tag);
void mapheader_run_script_with_tag_x1(void);
void mapheader_run_script_with_tag_x3(void);
void mapheader_run_script_with_tag_x5(void);
void mapheader_run_script_with_tag_x6(void);
bool8 mapheader_run_first_tag2_script_list_match(void);
void mapheader_run_first_tag4_script_list_match(void);
-u32 CalculateRamScriptChecksum(void);
void ClearRamScript(void);
bool8 InitRamScript(u8 *script, u16 scriptSize, u8 mapGroup, u8 mapNum, u8 objectId);
u8 *GetRamScript(u8 objectId, u8 *script);
diff --git a/include/script_menu.h b/include/script_menu.h
index cc5c442ec..dca8c26a7 100644
--- a/include/script_menu.h
+++ b/include/script_menu.h
@@ -1,33 +1,19 @@
#ifndef GUARD_SCRIPTMENU_H
#define GUARD_SCRIPTMENU_H
-struct MultichoiceListStruct
-{
- struct MenuAction *list;
- u8 count;
-};
+struct MenuAction;
extern const u8 *const gUnknown_083CE048[];
-bool8 sub_80B5054(u8 left, u8 top, u8 var3, u8 var4);
-bool8 sub_80B50B0(u8 left, u8 top, u8 var3, u8 var4, u8 var5);
-u16 GetStringWidthInTilesForScriptMenu(const u8 *str);
-void DrawMultichoiceMenu(u8, u8, u8, struct MenuAction *list, u8, u8);
-void sub_80B5230(u8, u8, u8, u8, u8, u8);
-void sub_80B52B4(u8);
+bool8 ScriptMenu_Multichoice(u8 left, u8 top, u8 var3, u8 var4);
+bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 var3, u8 var4, u8 var5);
bool8 Multichoice(u8 var1, u8 var2, u8 var3, u8 var4);
-void sub_80B53B4(u8, u8, u8, struct MenuAction *list, u8);
-bool8 yes_no_box(u8 var1, u8 var2);
-bool8 IsScriptActive(void); // unused
-void task_yes_no_maybe(u8);
-bool8 sub_80B5578(u8 left, u8 top, u8 multichoiceId, u8 a4, u8 columnCount);
-void sub_80B5684(u8);
-bool8 TryCreatePCMenu(void);
-void CreatePCMenu(void);
-void sub_80B5838(void);
-void task_picbox(u8 taskId);
-bool8 sub_80B58C4(u16 var1, u8 var2, u8 var3);
-void *picbox_close(void);
-bool8 sub_80B59AC(void);
+bool8 ScriptMenu_YesNo(u8 var1, u8 var2);
+bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, u8 a4, u8 columnCount);
+bool8 ScrSpecial_CreatePCMenu(void);
+void ScriptMenu_CreatePCMenu(void);
+void ScriptMenu_DisplayPCStartupPrompt(void);
+bool8 ScriptMenu_ShowPokemonPic(u16 var1, u8 var2, u8 var3);
+bool8 (*ScriptMenu_GetPicboxWaitFunc(void))(void);
#endif
diff --git a/include/script_movement.h b/include/script_movement.h
index e3cdc25b3..dc6d7e51b 100644
--- a/include/script_movement.h
+++ b/include/script_movement.h
@@ -1,8 +1,8 @@
#ifndef GUARD_SCRIPT_MOVEMENT_H
#define GUARD_SCRIPT_MOVEMENT_H
-bool8 exec_movement(u8, u8, u8, u8 *);
-bool8 sub_80A212C(u8, u8, u8);
+bool8 ScriptMovement_StartObjectMovementScript(u8, u8, u8, u8 *);
+bool8 ScriptMovement_IsObjectMovementFinished(u8, u8, u8);
void sub_80A2178(void);
#endif // GUARD_SCRIPT_MOVEMENT_H
diff --git a/include/script_pokemon_80C4.h b/include/script_pokemon_80C4.h
index 629980a2d..fab07994e 100644
--- a/include/script_pokemon_80C4.h
+++ b/include/script_pokemon_80C4.h
@@ -8,10 +8,10 @@ void ReducePlayerPartyToThree(void);
u8 sub_80C4D50(void);
void ShowContestWinner(void);
-void HealPlayerParty();
+void ScrSpecial_HealPlayerParty();
u8 ScriptGiveMon(u16, u8, u16, u32, u32, u8);
u8 ScriptGiveEgg(u16);
-void ScriptWildBattle(u16, u8, u16);
+void CreateScriptedWildMon(u16, u8, u16);
void ScriptSetMonMoveSlot(u8, u16, u8);
#endif
diff --git a/include/shop.h b/include/shop.h
index cca6091c9..b785ca764 100644
--- a/include/shop.h
+++ b/include/shop.h
@@ -1,6 +1,34 @@
#ifndef GUARD_SHOP_H
#define GUARD_SHOP_H
+enum
+{
+ MART_TYPE_0, // normal mart
+ MART_TYPE_1,
+ MART_TYPE_2,
+};
+
+// shop view window NPC info enum
+enum
+{
+ MAP_OBJ_ID,
+ X_COORD,
+ Y_COORD,
+ ANIM_NUM
+};
+
+struct MartInfo
+{
+ /* 0x0 */ void (* callback) (void);
+ /* 0x4 */ u16 *itemList;
+ /* 0x8 */ u8 itemCount; // how many unique items are there for sale?
+ /* 0x9 */ u8 cursor; // this shows the on-screen true index of the cursor and not the current item selected.
+ /* 0xA */ u8 numChoices; // how many options does the mart have? can be either 2 or 1 (BUY/SELL vs BUY)
+ /* 0xB */ u8 choicesAbove; // when your cursor is far down, there are choices that have scrolled up past the top. this is the count of that.
+ /* 0xC */ u8 martType; // 0-2. 0 is normal mart while 1-2 seem to be decor shops or non-stackable purchases in general.
+ /* 0xD */ u8 curItemCount; // if you are selling an item, this is the count of the current item stack you have.
+};
+
void sub_80B2E38(u8);
void HandleShopMenuQuit(u8);
void sub_80B2FA0(u8);
@@ -11,8 +39,10 @@ void BuyMenuDrawMapGraphics(void);
void sub_80B3764(int, int);
void sub_80B37EC(void);
void sub_80B40E8(u8);
-void CreatePokemartMenu(void *);
-void CreateDecorationShop1Menu(void *);
-void CreateDecorationShop2Menu(void *);
+void CreatePokemartMenu(u16 *);
+void CreateDecorationShop1Menu(u16 *);
+void CreateDecorationShop2Menu(u16 *);
+void sub_80B356C(void);
+void sub_80B368C(void);
#endif // GUARD_SHOP_H
diff --git a/include/songs.h b/include/songs.h
index 8cf7ee5e9..afd26d683 100644
--- a/include/songs.h
+++ b/include/songs.h
@@ -36,29 +36,29 @@ enum
/*0x1E*/ SE_N,
/*0x1F*/ SE_SEIKAI,
/*0x20*/ SE_HAZURE,
- SE_EXP,
- SE_JITE_PYOKO,
- SE_MU_PACHI,
- SE_TK_KASYA,
- SE_FU_ZAKU,
- SE_FU_ZAKU2,
- SE_FU_ZUZUZU,
- SE_RU_GASHIN,
- SE_RU_GASYAN,
- SE_RU_BARI,
- SE_RU_HYUU,
- SE_KI_GASYAN,
- SE_TK_WARPIN,
- SE_TK_WARPOUT,
- SE_TU_SAA,
- SE_HI_TURUN,
- SE_TRACK_MOVE,
- SE_TRACK_STOP,
- SE_TRACK_HAIK,
- SE_TRACK_DOOR,
- SE_MOTER,
- SE_CARD,
- SE_SAVE,
+ /*0x21*/ SE_EXP,
+ /*0x22*/ SE_JITE_PYOKO,
+ /*0x23*/ SE_MU_PACHI,
+ /*0x24*/ SE_TK_KASYA,
+ /*0x25*/ SE_FU_ZAKU,
+ /*0x26*/ SE_FU_ZAKU2,
+ /*0x27*/ SE_FU_ZUZUZU,
+ /*0x28*/ SE_RU_GASHIN,
+ /*0x29*/ SE_RU_GASYAN,
+ /*0x2A*/ SE_RU_BARI,
+ /*0x2B*/ SE_RU_HYUU,
+ /*0x2C*/ SE_KI_GASYAN,
+ /*0x2D*/ SE_TK_WARPIN,
+ /*0x2E*/ SE_TK_WARPOUT,
+ /*0x2F*/ SE_TU_SAA,
+ /*0x30*/ SE_HI_TURUN,
+ /*0x31*/ SE_TRACK_MOVE,
+ /*0x32*/ SE_TRACK_STOP,
+ /*0x33*/ SE_TRACK_HAIK,
+ /*0x34*/ SE_TRACK_DOOR,
+ /*0x35*/ SE_MOTER,
+ /*0x36*/ SE_CARD,
+ /*0x37*/ SE_SAVE,
/*0x38*/ SE_KON,
/*0x39*/ SE_KON2,
/*0x3A*/ SE_KON3,
@@ -105,9 +105,9 @@ enum
SE_C_PASI,
SE_C_SYU,
SE_C_PIKON,
- SE_REAPOKE,
- SE_OP_BASYU,
- SE_BT_START,
+ /*0x66*/ SE_REAPOKE,
+ /*0x67*/ SE_OP_BASYU,
+ /*0x68*/ SE_BT_START,
SE_DENDOU,
SE_JIHANKI,
SE_TAMA,
@@ -131,20 +131,20 @@ enum
/*0x7D*/ SE_W145B,
/*0x7E*/ SE_W145C,
/*0x7F*/ SE_W240,
- SE_W015,
- SE_W081,
- SE_W081B,
- SE_W088,
- SE_W016,
- SE_W016B,
- SE_W003,
- SE_W104,
- SE_W013,
- SE_W196,
- SE_W086,
- SE_W004,
- SE_W025,
- SE_W025B,
+ /*0x80*/ SE_W015,
+ /*0x81*/ SE_W081,
+ /*0x82*/ SE_W081B,
+ /*0x83*/ SE_W088,
+ /*0x84*/ SE_W016,
+ /*0x85*/ SE_W016B,
+ /*0x86*/ SE_W003,
+ /*0x87*/ SE_W104,
+ /*0x88*/ SE_W013,
+ /*0x89*/ SE_W196,
+ /*0x8A*/ SE_W086,
+ /*0x8B*/ SE_W004,
+ /*0x8C*/ SE_W025,
+ /*0x8D*/ SE_W025B,
SE_W152,
SE_W026,
SE_W172,
@@ -185,29 +185,29 @@ enum
SE_W071B,
SE_W071,
SE_W103,
- SE_W062,
- SE_W062B,
- SE_W048,
- SE_W187,
- SE_W118,
- SE_W155,
- SE_W122,
- SE_W060,
- SE_W185,
- SE_W014,
- SE_W043,
- SE_W207,
- SE_W207B,
- SE_W215,
- SE_W109,
- SE_W173,
- SE_W280,
- SE_W202,
- SE_W060B,
- SE_W076,
- SE_W080,
- SE_W100,
- SE_W107,
+ /*0xB6*/ SE_W062,
+ /*0xB7*/ SE_W062B,
+ /*0xB8*/ SE_W048,
+ /*0xB9*/ SE_W187,
+ /*0xBA*/ SE_W118,
+ /*0xBB*/ SE_W155,
+ /*0xBC*/ SE_W122,
+ /*0xBD*/ SE_W060,
+ /*0xBE*/ SE_W185,
+ /*0xBF*/ SE_W014,
+ /*0xC0*/ SE_W043,
+ /*0xC1*/ SE_W207,
+ /*0xC2*/ SE_W207B,
+ /*0xC3*/ SE_W215,
+ /*0xC4*/ SE_W109,
+ /*0xC5*/ SE_W173,
+ /*0xC6*/ SE_W280,
+ /*0xC7*/ SE_W202,
+ /*0xC8*/ SE_W060B,
+ /*0xC9*/ SE_W076,
+ /*0xCA*/ SE_W080,
+ /*0xCB*/ SE_W100,
+ /*0xCC*/ SE_W107,
SE_W166,
SE_W129,
SE_W115,
@@ -274,38 +274,38 @@ enum
/*0x171*/ BGM_ME_BACHI,
/*0x172*/ BGM_FANFA4,
/*0x173*/ BGM_FANFA5,
- BGM_ME_WAZA,
- BGM_BIJYUTU,
- BGM_DOORO_X4,
- BGM_FUNE_KAN,
- BGM_ME_SHINKA,
- BGM_SHINKA,
- BGM_ME_WASURE,
- BGM_SYOUJOEYE,
- BGM_BOYEYE,
- BGM_DAN02,
- BGM_MACHI_S3,
- BGM_ODAMAKI,
- BGM_B_TOWER,
- BGM_SWIMEYE,
- BGM_DAN03,
- BGM_ME_KINOMI,
- BGM_ME_TAMA,
- BGM_ME_B_BIG,
- BGM_ME_B_SMALL,
- BGM_ME_ZANNEN,
- BGM_BD_TIME,
- BGM_TEST1,
- BGM_TEST2,
- BGM_TEST3,
- BGM_TEST4,
- BGM_TEST,
- BGM_GOMACHI0,
- BGM_GOTOWN,
- BGM_POKECEN,
- BGM_NEXTROAD,
- BGM_GRANROAD,
- BGM_CYCLING,
+ /*0x174*/ BGM_ME_WAZA,
+ /*0x175*/ BGM_BIJYUTU,
+ /*0x176*/ BGM_DOORO_X4,
+ /*0x177*/ BGM_FUNE_KAN,
+ /*0x178*/ BGM_ME_SHINKA,
+ /*0x179*/ BGM_SHINKA,
+ /*0x17A*/ BGM_ME_WASURE,
+ /*0x17B*/ BGM_SYOUJOEYE,
+ /*0x17C*/ BGM_BOYEYE,
+ /*0x17D*/ BGM_DAN02,
+ /*0x17E*/ BGM_MACHI_S3,
+ /*0x17F*/ BGM_ODAMAKI,
+ /*0x180*/ BGM_B_TOWER,
+ /*0x181*/ BGM_SWIMEYE,
+ /*0x182*/ BGM_DAN03,
+ /*0x183*/ BGM_ME_KINOMI,
+ /*0x184*/ BGM_ME_TAMA,
+ /*0x185*/ BGM_ME_B_BIG,
+ /*0x186*/ BGM_ME_B_SMALL,
+ /*0x187*/ BGM_ME_ZANNEN,
+ /*0x188*/ BGM_BD_TIME,
+ /*0x189*/ BGM_TEST1,
+ /*0x18A*/ BGM_TEST2,
+ /*0x18B*/ BGM_TEST3,
+ /*0x18C*/ BGM_TEST4,
+ /*0x18D*/ BGM_TEST,
+ /*0x18E*/ BGM_GOMACHI0,
+ /*0x18F*/ BGM_GOTOWN,
+ /*0x190*/ BGM_POKECEN,
+ /*0x191*/ BGM_NEXTROAD,
+ /*0x192*/ BGM_GRANROAD,
+ /*0x193*/ BGM_CYCLING,
BGM_FRIENDLY,
BGM_MISHIRO,
BGM_TOZAN,
diff --git a/include/species.h b/include/species.h
index e33481afd..9ab0565cb 100644
--- a/include/species.h
+++ b/include/species.h
@@ -1,7 +1,8 @@
#ifndef GUARD_SPECIES_H
#define GUARD_SPECIES_H
-enum {
+enum
+{
SPECIES_NONE, // 0x000
SPECIES_BULBASAUR, // 0x001
SPECIES_IVYSAUR, // 0x002
diff --git a/include/sprite.h b/include/sprite.h
index 733231eb5..0d84c8127 100644
--- a/include/sprite.h
+++ b/include/sprite.h
@@ -204,14 +204,14 @@ struct Sprite
/*0x3A*/ s16 data6;
/*0x3C*/ s16 data7;
- /*0x3E*/ u16 inUse:1;
- u16 coordOffsetEnabled:1;
- u16 invisible:1;
- u16 flags_3:1;
- u16 flags_4:1;
- u16 flags_5:1;
- u16 flags_6:1;
- u16 flags_7:1;
+ /*0x3E*/ u16 inUse:1; //1
+ u16 coordOffsetEnabled:1; //2
+ u16 invisible:1; //4
+ u16 flags_3:1; //8
+ u16 flags_4:1; //0x10
+ u16 flags_5:1; //0x20
+ u16 flags_6:1; //0x40
+ u16 flags_7:1; //0x80
/*0x3F*/ u16 hFlip:1;
u16 vFlip:1;
u16 animBeginning:1;
@@ -299,4 +299,6 @@ u8 SpriteTileAllocBitmapOp(u16 bit, u8 op);
extern const union AffineAnimCmd *const gDummySpriteAffineAnimTable[];
+extern const struct SpriteTemplate gDummySpriteTemplate;
+
#endif // GUARD_SPRITE_H
diff --git a/include/start_menu.h b/include/start_menu.h
index 5169b3bf0..d3f77dc99 100644
--- a/include/start_menu.h
+++ b/include/start_menu.h
@@ -5,7 +5,7 @@
void CreateStartMenuTask(void (*func)(u8));
void sub_80712B4(u8 taskId);
void sub_8071310(void);
-void InitSaveDialog(void);
+void ScrSpecial_DoSaveDialog(void);
void sub_8071B28(void);
#endif // GUARD_STARTER_CHOOSE_H
diff --git a/include/text.h b/include/text.h
index 99987d2c3..7125bc803 100644
--- a/include/text.h
+++ b/include/text.h
@@ -2,6 +2,7 @@
#define GUARD_TEXT_H
#define CHAR_SPACE 0x00
+#define CHAR_SONG_WORD_SEPARATOR 0x37 // separates words in the bard song. Not sure if it's used for anything else
#define CHAR_0 0xA1
#define CHAR_QUESTION_MARK 0xAC
#define CHAR_PERIOD 0xAD
@@ -97,35 +98,35 @@ struct WindowConfig
struct Window
{
- u8 textMode;
- u8 fontNum;
- u8 language;
- u8 foregroundColor;
- u8 backgroundColor;
- u8 shadowColor;
- u8 paletteNum;
- u8 tilemapLeft;
- u8 tilemapTop;
- u8 width;
- u8 height;
- u8 win_field_B;
- u8 win_field_C;
- u8 delayCounter;
- u8 spacing;
- u8 win_field_F;
- u8 cursorX;
- u8 cursorY;
- u8 left;
- u16 top;
- u16 state;
- u16 downArrowCounter;
- u16 tileDataStartOffset;
- u16 tileDataOffset;
- u16 textIndex;
- const u8 *text;
- u8 *tileData;
- u16 *tilemap;
- struct WindowConfig *config;
+ /*0x00*/ u8 textMode;
+ /*0x01*/ u8 fontNum;
+ /*0x02*/ u8 language;
+ /*0x03*/ u8 foregroundColor;
+ /*0x04*/ u8 backgroundColor;
+ /*0x05*/ u8 shadowColor;
+ /*0x06*/ u8 paletteNum;
+ /*0x07*/ u8 tilemapLeft;
+ /*0x08*/ u8 tilemapTop;
+ /*0x09*/ u8 width;
+ /*0x0A*/ u8 height;
+ /*0x0B*/ u8 win_field_B;
+ /*0x0C*/ u8 win_field_C;
+ /*0x0D*/ u8 delayCounter;
+ /*0x0E*/ u8 spacing;
+ /*0x0F*/ u8 win_field_F;
+ /*0x10*/ u8 cursorX;
+ /*0x11*/ u8 cursorY;
+ /*0x12*/ u8 left;
+ /*0x14*/ u16 top; // padded to 0x14
+ /*0x16*/ u16 state;
+ /*0x18*/ u16 downArrowCounter;
+ /*0x1A*/ u16 tileDataStartOffset;
+ /*0x1C*/ u16 tileDataOffset;
+ /*0x1E*/ u16 textIndex;
+ /*0x20*/ const u8 *text;
+ /*0x24*/ u8 *tileData;
+ /*0x28*/ u16 *tilemap;
+ /*0x2C*/ struct WindowConfig *config;
};
extern vu16 *const gBGControlRegs[];
diff --git a/include/trade.h b/include/trade.h
new file mode 100644
index 000000000..a44388506
--- /dev/null
+++ b/include/trade.h
@@ -0,0 +1,23 @@
+
+#ifndef GUARD_TRADE_H
+#define GUARD_TRADE_H
+
+struct SomeTradeStruct
+{
+ u8 unk0;
+ u8 unk1;
+ u8 unk2;
+ u8 unk3;
+ struct Window field_4;
+ u8 field_34;
+};
+
+extern struct SomeTradeStruct* gUnknown_03004828;
+
+const u8 gOtherText_MaleSymbol3[1];
+const u8 gOtherText_FemaleSymbol3[1];
+const u8 gOtherText_GenderlessSymbol[1];
+
+void sub_804E22C(void);
+
+#endif // GUARD_TRADE_H
diff --git a/include/trader.h b/include/trader.h
index 24a9f2a07..832a04b65 100644
--- a/include/trader.h
+++ b/include/trader.h
@@ -1,6 +1,7 @@
#ifndef GUARD_TRADER_H
#define GUARD_TRADER_H
-void sub_81099CC(void);
+void TraderSetup(void);
+void sub_8109A20(void);
#endif // GUARD_TRADER_H
diff --git a/include/trainer_see.h b/include/trainer_see.h
index b80a41641..de96dcd3a 100644
--- a/include/trainer_see.h
+++ b/include/trainer_see.h
@@ -7,29 +7,13 @@
bool8 CheckTrainers(void);
bool8 CheckTrainer(u8);
u8 TrainerCanApproachPlayer(struct MapObject *);
-bool8 IsTrainerInRangeSouth(struct MapObject *trainerObj, s16 vision, s16 x, s16 y);
-bool8 IsTrainerInRangeNorth(struct MapObject *trainerObj, s16 vision, s16 x, s16 y);
-bool8 IsTrainerInRangeWest(struct MapObject *trainerObj, s16 vision, s16 x, s16 y);
-bool8 IsTrainerInRangeEast(struct MapObject *trainerObj, s16 vision, s16 x, s16 y);
+
bool8 CheckPathBetweenTrainerAndPlayer(struct MapObject2 *, u8, u8);
void sub_80842C8(struct MapObject *, u8);
void sub_80842FC(void (*func)(u8));
void RunTrainerSeeFuncList(u8);
-u8 sub_8084394(void);
-s8 sub_8084398(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-s8 sub_80843DC(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-s8 sub_808441C(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-s8 sub_8084478(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-s8 sub_8084534(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-s8 sub_8084578(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-s8 sub_80845AC(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-s8 sub_80845C8(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-s8 sub_80845FC(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-s8 sub_8084654(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-s8 sub_80846C8(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-void sub_80846E4(u8 taskId);
void sub_8084794(struct MapObject *var);
-void sub_80847C8(void);
+void ScrSpecial_EndTrainerApproach(void);
void sub_80847D8(u8);
void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3);
void objc_exclamation_mark_probably(struct Sprite *sprite);
diff --git a/include/unknown_task.h b/include/unknown_task.h
index dc07767d6..d7ac63931 100644
--- a/include/unknown_task.h
+++ b/include/unknown_task.h
@@ -1,14 +1,24 @@
#ifndef GUARD_UNKNOWN_TASK_H
#define GUARD_UNKNOWN_TASK_H
+struct UnknownTaskStruct
+{
+ volatile void *dest;
+ u32 control;
+ u8 unk8;
+ u8 unk9;
+};
+
void remove_some_task(void);
void remove_some_task(void);
void dp12_8087EA4(void);
void dp12_8087EA4(void);
-void sub_80895F8(u32 i, u32 i1, u32 i2);
-void sub_80895F8();
+//void sub_80895F8(u32 i, u32 i1, u32 i2);
+//void sub_80895F8();
+void sub_80895F8(struct UnknownTaskStruct unk);
void sub_8089668(void);
void sub_8089668();
-void sub_8089944(int i, int i1, int i2, int i3, int i4, int i5, int i6);
+//void sub_8089944(int i, int i1, int i2, int i3, int i4, int i5, int i6);
+u8 sub_8089944(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7);
#endif // GUARD_UNKNOWN_TASK_H
diff --git a/include/use_pokeblock.h b/include/use_pokeblock.h
deleted file mode 100644
index f34857cf1..000000000
--- a/include/use_pokeblock.h
+++ /dev/null
@@ -1,10 +0,0 @@
-//
-// Created by Scott Norton on 5/31/17.
-//
-
-#ifndef POKERUBY_USE_POKEBLOCK_H
-#define POKERUBY_USE_POKEBLOCK_H
-
-void sub_8136130(struct Pokeblock *, MainCallback);
-
-#endif //POKERUBY_USE_POKEBLOCK_H
diff --git a/include/vars.h b/include/vars.h
index efbb462a4..179fd6f93 100644
--- a/include/vars.h
+++ b/include/vars.h
@@ -45,6 +45,7 @@
#define VAR_0x4095 0x4095
#define VAR_0x4097 0x4097
#define VAR_0x409a 0x409a
+#define VAR_WEATHER_INSTITUTE_CLEARED 0x040B3
#define VAR_PORTHOLE 0x40B4
#define VAR_0x40BC 0x40BC
diff --git a/include/wild_encounter.h b/include/wild_encounter.h
index a4485b08d..d4b343126 100644
--- a/include/wild_encounter.h
+++ b/include/wild_encounter.h
@@ -28,12 +28,12 @@ extern struct WildPokemonHeader gWildMonHeaders[];
void DisableWildEncounters(bool8 disabled);
bool8 StandardWildEncounter(u16 a, u16 b);
-void RockSmashWildEncounter(void);
+void ScrSpecial_RockSmashWildEncounter(void);
bool8 SweetScentWildEncounter(void);
-bool8 GetFishingWildMonListHeader(void);
+bool8 DoesCurrentMapHaveFishingMons(void);
void FishingWildEncounter(u8 rod);
u16 GetLocalWildMon(bool8 *isWaterMon);
-u16 GetMirageIslandMon(void);
+u16 GetLocalWaterMon(void);
bool8 UpdateRepelCounter(void);
#endif // GUARD_WILD_ENCOUNTER_H
diff --git a/ld_script.txt b/ld_script.txt
index a0054668e..aacee605e 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -55,12 +55,11 @@ SECTIONS {
asm/battle_2.o(.text);
src/battle_3.o(.text);
src/battle_4.o(.text);
- asm/battle_5.o(.text);
- src/battle_6.o(.text);
+ src/battle_controller_player.o(.text);
src/battle_7.o(.text);
- src/battle_8.o(.text);
+ src/battle_controller_opponent.o(.text);
asm/battle_9.o(.text);
- src/battle_10.o(.text);
+ src/battle_controller_linkopponent.o(.text);
src/pokemon_1.o(.text);
src/calculate_base_damage.o(.text);
src/pokemon_2.o(.text);
@@ -72,9 +71,7 @@ SECTIONS {
src/util.o(.text);
src/blend_palette.o(.text);
src/daycare.o(.text);
- asm/daycare.o(.text);
src/egg_hatch.o(.text);
- asm/egg_hatch.o(.text);
src/battle_interface.o(.text);
src/smokescreen.o(.text);
src/pokeball.o(.text);
@@ -84,20 +81,17 @@ SECTIONS {
asm/trade.o(.text.sub_804A9F4);
src/trade.o(.text.sub_804DAD4);
asm/trade.o(.text.sub_804DB2C);
- asm/berry_blender.o(.text);
+ src/berry_blender.o(.text);
src/play_time.o(.text);
src/new_game.o(.text);
- src/rom4.o(.text);
+ src/overworld.o(.text);
src/fieldmap.o(.text);
src/metatile_behavior.o(.text);
src/field_camera.o(.text);
src/field_door.o(.text);
src/field_player_avatar.o(.text);
src/field_map_obj.o(.text);
- asm/field_map_obj.o(.text);
- src/field_map_obj.o(.text_fmocb2_c);
src/field_ground_effect.o(.text);
- asm/field_ground_effect.o(.text);
src/field_map_obj_helpers.o(.text);
src/field_message_box.o(.text);
src/map_obj_lock.o(.text);
@@ -121,7 +115,7 @@ SECTIONS {
src/battle_anim.o(.text);
src/rom_8077ABC.o(.text);
src/task.o(.text);
- asm/reshow_battle_screen.o(.text);
+ src/reshow_battle_screen.o(.text);
src/battle_anim_807B69C.o(.text);
src/title_screen.o(.text);
src/field_weather.o(.text);
@@ -129,15 +123,13 @@ SECTIONS {
src/field_fadetransition.o(.text);
src/field_screen_effect.o(.text);
src/battle_setup.o(.text);
- asm/cable_club.o(.text);
src/cable_club.o(.text);
- asm/cable_club.o(.text_80830E4);
src/mori_debug_menu.o(.text);
src/trainer_see.o(.text);
src/wild_encounter.o(.text);
src/field_effect.o(.text);
src/unknown_task.o(.text);
- asm/pokemon_menu.o(.text);
+ src/pokemon_menu.o(.text);
src/option_menu.o(.text);
src/pokedex.o(.text);
src/trainer_card.o(.text);
@@ -160,7 +152,6 @@ SECTIONS {
src/matsuda_debug_menu.o(.text);
asm/contest.o(.text);
src/shop.o(.text);
- asm/shop.o(.text);
src/berry.o(.text);
src/script_menu.o(.text);
src/naming_screen.o(.text);
@@ -190,14 +181,14 @@ SECTIONS {
src/pokenav.o(.text);
asm/pokenav.o(.text_80F708C);
src/mon_markings.o(.text);
- src/mauville_old_man.o(.text);
- asm/mauville_old_man.o(.text);
+ src/mauville_man.o(.text);
src/mail.o(.text);
src/menu_helpers.o(.text);
src/script_pokemon_util_80F99CC.o(.text);
src/dewford_trend.o(.text);
src/heal_location.o(.text);
src/region_map.o(.text);
+ src/cute_sketch.o(.text);
asm/cute_sketch.o(.text);
src/decoration.o(.text);
asm/slot_machine.o(.text);
@@ -219,7 +210,7 @@ SECTIONS {
src/field_specials.o(.text);
src/battle_records.o(.text);
asm/pokedex_area_screen.o(.text);
- asm/evolution_scene.o(.text);
+ src/evolution_scene.o(.text);
asm/roulette.o(.text);
asm/pokedex_cry_screen.o(.text);
src/pokedex_cry_screen.o(.text);
@@ -227,9 +218,9 @@ SECTIONS {
src/coins.o(.text);
src/landmark.o(.text);
src/fldeff_strength.o(.text);
- asm/battle_transition.o(.text);
- src/battle_811DA74.o(.text);
- asm/battle_message.o(.text);
+ src/battle_transition.o(.text);
+ src/battle_controller_linkpartner.o(.text);
+ src/battle_message.o(.text);
src/choose_party.o(.text);
asm/cable_car.o(.text);
asm/roulette_util.o(.text);
@@ -237,25 +228,24 @@ SECTIONS {
src/unused_8124F94.o(.text);
src/save.o(.text);
src/mystery_event_script.o(.text);
- asm/field_effect_helpers.o(.text);
+ src/field_effect_helpers.o(.text);
asm/contest_ai.o(.text);
asm/battle_anim_81258BC.o(.text);
- src/battle_anim_81258BC.o(.text);
- asm/battle_anim_81258BC.o(.text_812BBFC);
+ src/battle_controller_safari.o(.text);
src/fldeff_sweetscent.o(.text);
asm/battle_anim_812C144.o(.text);
- asm/learn_move.o(.text);
+ src/learn_move.o(.text);
src/fldeff_softboiled.o(.text);
src/decoration_inventory.o(.text);
src/roamer.o(.text);
asm/battle_tower.o(.text);
src/use_pokeblock.o(.text);
- src/battle_anim_8137220.o(.text);
+ src/battle_controller_wally.o(.text);
src/player_pc.o(.text);
src/intro.o(.text);
src/field_region_map.o(.text);
asm/battle_anim_813F0F4.o(.text);
- asm/hall_of_fame.o(.text);
+ src/hall_of_fame.o(.text);
src/credits.o(.text);
src/lottery_corner.o(.text);
src/diploma.o(.text);
@@ -263,10 +253,10 @@ SECTIONS {
src/mystery_event_menu.o(.text);
src/save_failed_screen.o(.text);
src/braille_puzzles.o(.text);
- asm/pokeblock_feed.o(.text);
+ src/pokeblock_feed.o(.text);
src/clear_save_data_menu.o(.text);
- asm/intro_credits_graphics.o(.text);
- asm/evolution_graphics.o(.text);
+ src/intro_credits_graphics.o(.text);
+ src/evolution_graphics.o(.text);
src/bard_music.o(.text);
src/fldeff_teleport.o(.text);
src/unknown_debug_menu.o(.text);
@@ -331,20 +321,24 @@ SECTIONS {
data/main_menu.o(.rodata);
data/data2a.o(.rodata);
src/battle_4.o(.rodata);
+ src/battle_controller_player.o(.rodata);
data/data2b.o(.rodata);
+ src/battle_controller_opponent.o(.rodata);
+ src/battle_controller_linkopponent.o(.rodata);
+ data/battle_moves.o(.rodata);
src/battle_3.o(.rodata);
src/pokemon_data.o(.rodata);
. = ALIGN(4);
src/trig.o(.rodata);
src/util.o(.rodata);
- data/daycare.o(.rodata);
- data/egg_hatch.o(.rodata);
+ src/daycare.o(.rodata);
+ src/egg_hatch.o(.rodata);
data/battle_interface.o(.rodata);
src/pokeball.o(.rodata);
data/trade.o(.rodata);
- data/berry_blender.o(.rodata);
+ src/berry_blender.o(.rodata);
src/new_game.o(.rodata);
- data/rom4.o(.rodata);
+ src/overworld.o(.rodata);
data/tilesets.o(.rodata);
data/maps.o(.rodata);
src/fieldmap.o(.rodata);
@@ -353,7 +347,6 @@ SECTIONS {
src/field_player_avatar.o(.rodata);
src/field_map_obj.o(.rodata);
src/field_ground_effect.o(.rodata);
- data/field_ground_effect.o(.rodata);
data/field_map_obj_helpers.o(.rodata);
data/text_window.o(.rodata);
src/script.o(.rodata);
@@ -380,11 +373,12 @@ SECTIONS {
src/battle_setup.o(.rodata);
data/cable_club.o(.rodata);
data/mori_debug_menu.o(.rodata);
+ src/trainer_see.o(.rodata);
data/trainer_see.o(.rodata);
src/wild_encounter.o(.rodata);
data/wild_encounter.o(.rodata);
src/field_effect.o(.rodata);
- data/pokemon_menu.o(.rodata);
+ src/pokemon_menu.o(.rodata);
src/option_menu.o(.rodata);
src/pokedex.o(.rodata);
src/trainer_card.o(.rodata);
@@ -398,7 +392,7 @@ SECTIONS {
src/item.o(.rodata);
data/matsuda_debug_menu.o(.rodata);
data/contest.o(.rodata);
- data/shop.o(.rodata);
+ src/shop.o(.rodata);
src/berry.o(.rodata);
src/script_menu.o(.rodata);
src/naming_screen.o(.rodata);
@@ -422,7 +416,7 @@ SECTIONS {
data/easy_chat.o(.rodata);
data/pokenav.o(.rodata);
data/mon_markings.o(.rodata);
- data/mauville_old_man.o(.rodata);
+ src/mauville_man.o(.rodata);
data/mail.o(.rodata);
src/menu_helpers.o(.rodata);
src/heal_location.o(.rodata);
@@ -440,30 +434,30 @@ SECTIONS {
src/time_events.o(.rodata);
src/field_specials.o(.rodata);
data/pokedex_area_screen.o(.rodata);
- data/evolution_scene.o(.rodata);
+ src/evolution_scene.o(.rodata);
data/roulette.o(.rodata);
data/pokedex_cry_screen.o(.rodata);
data/landmark.o(.rodata);
- data/battle_transition.o(.rodata);
- data/battle_811DA74.o(.rodata);
+ src/battle_transition.o(.rodata);
+ src/battle_controller_linkpartner.o(.rodata);
data/battle_message.o(.rodata);
src/choose_party.o(.rodata);
data/cable_car.o(.rodata);
src/save.o(.rodata);
- data/field_effect_helpers.o(.rodata);
+ src/field_effect_helpers.o(.rodata);
data/contest_ai.o(.rodata);
- data/battle_anim_81258BC.o(.rodata);
+ src/battle_controller_safari.o(.rodata);
data/battle_anim_812C144.o(.rodata);
- data/learn_move.o(.rodata);
+ src/learn_move.o(.rodata);
src/decoration_inventory.o(.rodata);
src/roamer.o(.rodata);
data/battle_tower.o(.rodata);
src/use_pokeblock.o(.rodata);
- data/battle_anim_8137220.o(.rodata);
+ src/battle_controller_wally.o(.rodata);
src/player_pc.o(.rodata);
src/intro.o(.rodata);
data/battle_anim_813F0F4.o(.rodata);
- data/hall_of_fame.o(.rodata);
+ src/hall_of_fame.o(.rodata);
src/credits.o(.rodata);
data/credits.o(.rodata);
src/lottery_corner.o(.rodata);
@@ -471,9 +465,9 @@ SECTIONS {
src/strings.o(.rodata);
src/berry_tag_screen.o(.rodata);
src/save_failed_screen.o(.rodata);
- data/pokeblock_feed.o(.rodata);
+ src/pokeblock_feed.o(.rodata);
data/intro_credits_graphics.o(.rodata);
- data/evolution_graphics.o(.rodata);
+ src/evolution_graphics.o(.rodata);
data/bard_music.o(.rodata);
data/unknown_debug_menu.o(.rodata);
data/strings2.o(.rodata);
diff --git a/shared_syms.txt b/shared_syms.txt
index 884f0e89d..571e0633e 100644
--- a/shared_syms.txt
+++ b/shared_syms.txt
@@ -3,6 +3,8 @@ ewram = 0x2000000;
unk_2004000 = 0x2004000;
+gUnk_2009000 = 0x2009000;
+
unk_2007800 = 0x2007800;
unk_2007900 = 0x2007900;
diff --git a/src/bard_music.c b/src/bard_music.c
index a31568475..daf003233 100644
--- a/src/bard_music.c
+++ b/src/bard_music.c
@@ -1,71 +1,43 @@
#include "global.h"
+#include "bard_music.h"
#include "easy_chat.h"
struct BardSound
{
- u8 pad_00[48];
-};
-
-struct UnkBard
-{
/*0x00*/ u8 var00;
/*0x01*/ s8 var01;
/*0x02*/ u16 var02;
- /*0x04*/ u16 var04;
+ /*0x04*/ u16 volume;
/*0x06*/ u16 var06;
};
-struct UnkBard3
-{
- /*0x00*/ u16 var00;
- /*0x02*/ u16 var02;
- /*0x04*/ s16 var04;
- /*0x06*/ u16 var06;
-};
-
-struct UnkBard2
-{
- /*0x00*/ u8 var00;
- /*0x01*/ u8 var01;
- /*0x02*/ u8 var02;
- /*0x03*/ u8 var03;
- /*0x04*/ u16 var04;
- u8 pad06[4];
- /*0x0A*/ u16 var0A;
- u8 pad0C[12];
- /*0x18*/ struct UnkBard3 var18[6];
-};
-
-extern struct BardSound *gBardMusicTable[];
+extern const struct BardSound (*const gBardMusicTable[])[][6];
extern s16 *gUnknown_08417068[];
extern u32 gUnknown_084170F4[];
-static s16 sub_814A2B8(u32 arg0, u32 arg1)
+static s16 CalcWordPitch(u32 arg0, u32 songPos)
{
- return gUnknown_08417068[arg0][arg1];
+ return gUnknown_08417068[arg0][songPos];
}
#if ENGLISH
-struct BardSound *sub_814A2D0(u16 arg0, u16 arg1)
+const struct BardSound *GetWordSounds(u16 group, u16 word)
{
- struct BardSound *sounds = gBardMusicTable[arg0];
+ const struct BardSound (*sounds)[][6] = gBardMusicTable[group];
- return &sounds[arg1];
+ return (*sounds)[word];
}
#elif GERMAN
-struct BardSound *sub_814A2D0(u16 arg0, u16 arg1)
+const struct BardSound *GetWordSounds(u16 group, u16 word)
{
- u32 index;
- struct BardSound *sounds;
-
- sounds = gBardMusicTable[arg0];
- index = de_sub_80EB748(arg0, arg1);
+ const struct BardSound (*sounds)[][6] = gBardMusicTable[group];
+ u32 index = de_sub_80EB748(group, word);
- return &sounds[index];
+ return (*sounds)[index];
}
#endif
-s32 sub_814A2EC(struct UnkBard2 *dest, struct UnkBard *src, u16 arg2)
+s32 GetWordPhonemes(struct BardSong *song, const struct BardSound *src, u16 arg2)
{
s32 i;
s32 j;
@@ -73,25 +45,25 @@ s32 sub_814A2EC(struct UnkBard2 *dest, struct UnkBard *src, u16 arg2)
for (i = 0; i < 6; i++)
{
- dest->var18[i].var00 = src[i].var00;
+ song->phonemes[i].sound = src[i].var00;
if (src[i].var00 != 0xFF)
{
- s32 r1 = src[i].var01 +gUnknown_084170F4[src[i].var00];
+ s32 length = src[i].var01 + gUnknown_084170F4[src[i].var00];
- dest->var18[i].var02 = r1;
- dest->var18[i].var06 = src[i].var04;
- dest->var04 += r1;
+ song->phonemes[i].length = length;
+ song->phonemes[i].volume = src[i].volume;
+ song->var04 += length;
}
}
for (j = 0, thirty = 30; j < i; j++)
- dest->var18[j].var04 = sub_814A2B8(thirty + arg2, j);
+ song->phonemes[j].pitch = CalcWordPitch(thirty + arg2, j);
- dest->var00++;
- dest->var01 = 0;
- dest->var02 = 0;
- dest->var03 = 0;
- dest->var0A = 0;
+ song->currWord++;
+ song->currPhoneme = 0;
+ song->phonemeTimer = 0;
+ song->state = 0;
+ song->voiceInflection = 0;
//warning: no return statement in function returning non-void
}
diff --git a/src/battle_2.c b/src/battle_2.c
index 7772444d7..3cdea07be 100644
--- a/src/battle_2.c
+++ b/src/battle_2.c
@@ -181,7 +181,7 @@ extern u8 gHealthboxIDs[];
extern struct UnknownStruct6 gUnknown_03004DE0;
//extern u16 gUnknown_03004DE0[][0xA0]; // possibly?
extern u16 gBattleTypeFlags;
-extern s8 gBattleTerrain; // I'm not sure if this is supposed to be s8 or u8. Regardless, it must have the same type as the return value of GetBattleTerrain.
+extern s8 gBattleTerrain; // I'm not sure if this is supposed to be s8 or u8. Regardless, it must have the same type as the return value of BattleSetup_GetTerrain.
extern u8 gReservedSpritePaletteCount;
extern u16 gTrainerBattleOpponent;
extern struct BattleEnigmaBerry gEnigmaBerries[];
@@ -239,7 +239,8 @@ void InitBattle(void)
gUnknown_03004DE0.unk0[i] = 0xFF10;
gUnknown_03004DE0.unk780[i] = 0xFF10;
}
- sub_80895F8(gUnknown_081F9674.unk0, gUnknown_081F9674.unk4, gUnknown_081F9674.unk8);
+ //sub_80895F8(gUnknown_081F9674.unk0, gUnknown_081F9674.unk4, gUnknown_081F9674.unk8);
+ sub_80895F8(gUnknown_081F9674);
SetUpWindowConfig(&gWindowConfig_81E6C58);
ResetPaletteFade();
gUnknown_030042A4 = 0;
@@ -250,7 +251,7 @@ void InitBattle(void)
gUnknown_03004280 = 0;
gUnknown_030041B0 = 0;
gUnknown_030041B8 = 0;
- gBattleTerrain = GetBattleTerrain();
+ gBattleTerrain = BattleSetup_GetTerrain();
InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58);
InitWindowFromConfig(&gUnknown_030041D0, &gWindowConfig_81E71D0);
InitWindowFromConfig(&gUnknown_03004250, &gWindowConfig_81E71EC);
@@ -1347,8 +1348,8 @@ void sub_8010384(struct Sprite *sprite)
u16 species;
u8 yOffset;
- if (ewram17800[r6].unk2 != 0)
- species = ewram17800[r6].unk2;
+ if (ewram17800[r6].transformedSpecies != 0)
+ species = ewram17800[r6].transformedSpecies;
else
species = sprite->data2;
@@ -1866,7 +1867,7 @@ static void BattlePrepIntroSlide(void)
if (gBattleExecBuffer == 0)
{
gActiveBank = GetBankByPlayerAI(0);
- EmitBattleIntroSlide(0, gBattleTerrain);
+ EmitIntroSlide(0, gBattleTerrain);
MarkBufferBankForExecution(gActiveBank);
gBattleMainFunc = sub_8011384;
gBattleCommunication[0] = 0;
@@ -1910,7 +1911,7 @@ void sub_8011384(void)
if (GetBankIdentity(gActiveBank) == 0)
{
- dp01_build_cmdbuf_x07_7_7_7(0);
+ EmitTrainerThrow(0);
MarkBufferBankForExecution(gActiveBank);
}
@@ -1918,7 +1919,7 @@ void sub_8011384(void)
{
if (GetBankIdentity(gActiveBank) == 1)
{
- dp01_build_cmdbuf_x07_7_7_7(0);
+ EmitTrainerThrow(0);
MarkBufferBankForExecution(gActiveBank);
}
if (GetBankSide(gActiveBank) == 1
@@ -1931,7 +1932,7 @@ void sub_8011384(void)
&& !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK)))
{
GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), 2);
- dp01_build_cmdbuf_x04_4_4_4(0);
+ EmitLoadPokeSprite(0);
MarkBufferBankForExecution(gActiveBank);
}
}
@@ -1941,7 +1942,7 @@ void sub_8011384(void)
if (GetBankIdentity(gActiveBank) == 2
|| GetBankIdentity(gActiveBank) == 3)
{
- dp01_build_cmdbuf_x07_7_7_7(0);
+ EmitTrainerThrow(0);
MarkBufferBankForExecution(gActiveBank);
}
}
@@ -1979,7 +1980,7 @@ void bc_801333C(void)
}
}
gActiveBank = GetBankByPlayerAI(1);
- dp01_build_cmdbuf_x30_TODO(0, (u8 *)sp0, 0x80);
+ Emitcmd48(0, (u8 *)sp0, 0x80);
MarkBufferBankForExecution(gActiveBank);
for (i = 0; i < 6; i++)
@@ -1997,7 +1998,7 @@ void bc_801333C(void)
}
}
gActiveBank = GetBankByPlayerAI(0);
- dp01_build_cmdbuf_x30_TODO(0, (u8 *)sp0, 0x80);
+ Emitcmd48(0, (u8 *)sp0, 0x80);
MarkBufferBankForExecution(gActiveBank);
gBattleMainFunc = bc_battle_begin_message;
@@ -2063,13 +2064,13 @@ void sub_8011834(void)
{
if (GetBankIdentity(gActiveBank) == 1)
{
- dp01_build_cmdbuf_x2F_2F_2F_2F(0);
+ EmitTrainerBallThrow(0);
MarkBufferBankForExecution(gActiveBank);
}
if ((gBattleTypeFlags & BATTLE_TYPE_MULTI)
&& GetBankIdentity(gActiveBank) == 3)
{
- dp01_build_cmdbuf_x2F_2F_2F_2F(0);
+ EmitTrainerBallThrow(0);
MarkBufferBankForExecution(gActiveBank);
}
}
@@ -2115,13 +2116,13 @@ void sub_80119B4(void)
{
if (GetBankIdentity(gActiveBank) == 0)
{
- dp01_build_cmdbuf_x2F_2F_2F_2F(0);
+ EmitTrainerBallThrow(0);
MarkBufferBankForExecution(gActiveBank);
}
if ((gBattleTypeFlags & BATTLE_TYPE_MULTI)
&& GetBankIdentity(gActiveBank) == 2)
{
- dp01_build_cmdbuf_x2F_2F_2F_2F(0);
+ EmitTrainerBallThrow(0);
MarkBufferBankForExecution(gActiveBank);
}
}
@@ -2140,7 +2141,7 @@ void unref_sub_8011A68(void)
{
if (GetBankSide(gActiveBank) == 0)
{
- EmitSwitchInAnim(0, gBattlePartyID[gActiveBank], 0);
+ EmitSendOutPoke(0, gBattlePartyID[gActiveBank], 0);
MarkBufferBankForExecution(gActiveBank);
}
}
@@ -2429,7 +2430,7 @@ void sub_8012324(void)
}
else
{
- dp01_build_cmdbuf_x12_a_bb(0, gActionForBanks[0], gBattleBufferB[0][1] | (gBattleBufferB[0][2] << 8));
+ Emitcmd18(0, gActionForBanks[0], gBattleBufferB[0][1] | (gBattleBufferB[0][2] << 8));
MarkBufferBankForExecution(gActiveBank);
gBattleCommunication[gActiveBank]++;
}
diff --git a/src/battle_3.c b/src/battle_3.c
index 9bb9e333f..f04e722c4 100644
--- a/src/battle_3.c
+++ b/src/battle_3.c
@@ -1506,11 +1506,11 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
if (gBankAttacker >= gNoOfAllBanks)
gBankAttacker = bank;
switch (gLastUsedAbility)
- {
- case 0xFF: //weather from overworld
+ {
+ case 0xFF: //weather from overworld
//_08018586
- switch (weather_get_current())
- {
+ switch (weather_get_current())
+ {
case 3:
case 5:
case 13:
@@ -1540,34 +1540,34 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
effect++;
}
break;
- }
- if (effect)
+ }
+ if (effect)
{
gBattleCommunication[MULTISTRING_CHOOSER] = weather_get_current();
b_push_move_exec(gUnknown_081D901D);
}
- break;
- case ABILITY_DRIZZLE:
+ break;
+ case ABILITY_DRIZZLE:
//_08018680
- if (!(gBattleWeather & WEATHER_RAIN_PERMANENT))
+ if (!(gBattleWeather & WEATHER_RAIN_PERMANENT))
{
gBattleWeather = (WEATHER_RAIN_PERMANENT | WEATHER_RAIN_TEMPORARY);
b_push_move_exec(BattleScript_DrizzleActivates);
BATTLE_STRUCT->scriptingActive = bank;
effect++;
}
- break;
- case ABILITY_SAND_STREAM:
+ break;
+ case ABILITY_SAND_STREAM:
//_080186B8
- if (!(gBattleWeather & WEATHER_SANDSTORM_PERMANENT))
+ if (!(gBattleWeather & WEATHER_SANDSTORM_PERMANENT))
{
gBattleWeather = (WEATHER_SANDSTORM_PERMANENT | WEATHER_SANDSTORM_TEMPORARY);
b_push_move_exec(BattleScript_SandstreamActivates);
BATTLE_STRUCT->scriptingActive = bank;
effect++;
}
- break;
- case ABILITY_DROUGHT:
+ break;
+ case ABILITY_DROUGHT:
//_080186F0
if (!(gBattleWeather & WEATHER_SUN_PERMANENT))
{
@@ -1576,16 +1576,16 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
BATTLE_STRUCT->scriptingActive = bank;
effect++;
}
- break;
- case ABILITY_INTIMIDATE:
+ break;
+ case ABILITY_INTIMIDATE:
//_08018728
if (!(gSpecialStatuses[bank].intimidatedPoke))
{
gStatuses3[bank] |= STATUS3_INTIMIDATE_POKES;
gSpecialStatuses[bank].intimidatedPoke = 1;
}
- break;
- case ABILITY_FORECAST:
+ break;
+ case ABILITY_FORECAST:
//_0801875C
effect = CastformDataTypeChange(bank);
if (effect != 0)
@@ -1594,22 +1594,22 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
BATTLE_STRUCT->scriptingActive = bank;
BATTLE_STRUCT->castformToChangeInto = effect - 1;
}
- break;
- case ABILITY_TRACE:
+ break;
+ case ABILITY_TRACE:
//_080187A0
- if (!(gSpecialStatuses[bank].traced))
+ if (!(gSpecialStatuses[bank].traced))
{
gStatuses3[bank] |= STATUS3_TRACE;
gSpecialStatuses[bank].traced = 1;
}
- break;
- case ABILITY_CLOUD_NINE:
- case ABILITY_AIR_LOCK:
+ break;
+ case ABILITY_CLOUD_NINE:
+ case ABILITY_AIR_LOCK:
//_080187DC
- {
- u8 i;
+ {
+ u8 i;
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (i = 0; i < gNoOfAllBanks; i++)
{
// TODO: i should be in r6 here
//asm("":::"r4","r5");
@@ -1622,10 +1622,10 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
break;
}
}
- }
- break;
- }
- break;
+ }
+ break;
+ }
+ break;
case ABILITYEFFECT_ENDTURN: // 1
//_08018814
if (gBattleMons[bank].hp != 0)
@@ -2271,391 +2271,391 @@ __attribute__((naked))
u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x28\n\
- ldr r4, [sp, 0x48]\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- str r0, [sp, 0x4]\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- mov r10, r1\n\
- lsls r2, 24\n\
- lsrs r6, r2, 24\n\
- lsls r3, 24\n\
- lsrs r3, 24\n\
- mov r8, r3\n\
- lsls r4, 16\n\
- lsrs r4, 16\n\
- movs r0, 0\n\
- mov r9, r0\n\
- ldr r5, _08018380 @ =gBankAttacker\n\
- ldr r1, _08018384 @ =gNoOfAllBanks\n\
- ldrb r0, [r5]\n\
- ldrb r1, [r1]\n\
- cmp r0, r1\n\
- bcc _08018360\n\
- mov r1, r10\n\
- strb r1, [r5]\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x28\n\
+ ldr r4, [sp, 0x48]\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ str r0, [sp, 0x4]\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ mov r10, r1\n\
+ lsls r2, 24\n\
+ lsrs r6, r2, 24\n\
+ lsls r3, 24\n\
+ lsrs r3, 24\n\
+ mov r8, r3\n\
+ lsls r4, 16\n\
+ lsrs r4, 16\n\
+ movs r0, 0\n\
+ mov r9, r0\n\
+ ldr r5, _08018380 @ =gBankAttacker\n\
+ ldr r1, _08018384 @ =gNoOfAllBanks\n\
+ ldrb r0, [r5]\n\
+ ldrb r1, [r1]\n\
+ cmp r0, r1\n\
+ bcc _08018360\n\
+ mov r1, r10\n\
+ strb r1, [r5]\n\
_08018360:\n\
- ldrb r0, [r5]\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _08018390\n\
- ldr r1, _08018388 @ =gBattlePartyID\n\
- ldrb r0, [r5]\n\
- lsls r0, 1\n\
- adds r0, r1\n\
- ldrh r1, [r0]\n\
- movs r0, 0x64\n\
- muls r1, r0\n\
- ldr r0, _0801838C @ =gPlayerParty\n\
- b _080183A0\n\
- .align 2, 0\n\
+ ldrb r0, [r5]\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _08018390\n\
+ ldr r1, _08018388 @ =gBattlePartyID\n\
+ ldrb r0, [r5]\n\
+ lsls r0, 1\n\
+ adds r0, r1\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x64\n\
+ muls r1, r0\n\
+ ldr r0, _0801838C @ =gPlayerParty\n\
+ b _080183A0\n\
+ .align 2, 0\n\
_08018380: .4byte gBankAttacker\n\
_08018384: .4byte gNoOfAllBanks\n\
_08018388: .4byte gBattlePartyID\n\
_0801838C: .4byte gPlayerParty\n\
_08018390:\n\
- ldr r1, _080183D0 @ =gBattlePartyID\n\
- ldrb r0, [r5]\n\
- lsls r0, 1\n\
- adds r0, r1\n\
- ldrh r1, [r0]\n\
- movs r0, 0x64\n\
- muls r1, r0\n\
- ldr r0, _080183D4 @ =gEnemyParty\n\
+ ldr r1, _080183D0 @ =gBattlePartyID\n\
+ ldrb r0, [r5]\n\
+ lsls r0, 1\n\
+ adds r0, r1\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x64\n\
+ muls r1, r0\n\
+ ldr r0, _080183D4 @ =gEnemyParty\n\
_080183A0:\n\
- adds r7, r1, r0\n\
- ldr r5, _080183D8 @ =gBankTarget\n\
- ldr r1, _080183DC @ =gNoOfAllBanks\n\
- ldrb r0, [r5]\n\
- ldrb r1, [r1]\n\
- cmp r0, r1\n\
- bcc _080183B2\n\
- mov r2, r10\n\
- strb r2, [r5]\n\
+ adds r7, r1, r0\n\
+ ldr r5, _080183D8 @ =gBankTarget\n\
+ ldr r1, _080183DC @ =gNoOfAllBanks\n\
+ ldrb r0, [r5]\n\
+ ldrb r1, [r1]\n\
+ cmp r0, r1\n\
+ bcc _080183B2\n\
+ mov r2, r10\n\
+ strb r2, [r5]\n\
_080183B2:\n\
- ldrb r0, [r5]\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _080183E4\n\
- ldr r1, _080183D0 @ =gBattlePartyID\n\
- ldrb r0, [r5]\n\
- lsls r0, 1\n\
- adds r0, r1\n\
- ldrh r1, [r0]\n\
- movs r0, 0x64\n\
- muls r1, r0\n\
- ldr r0, _080183E0 @ =gPlayerParty\n\
- b _080183F4\n\
- .align 2, 0\n\
+ ldrb r0, [r5]\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _080183E4\n\
+ ldr r1, _080183D0 @ =gBattlePartyID\n\
+ ldrb r0, [r5]\n\
+ lsls r0, 1\n\
+ adds r0, r1\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x64\n\
+ muls r1, r0\n\
+ ldr r0, _080183E0 @ =gPlayerParty\n\
+ b _080183F4\n\
+ .align 2, 0\n\
_080183D0: .4byte gBattlePartyID\n\
_080183D4: .4byte gEnemyParty\n\
_080183D8: .4byte gBankTarget\n\
_080183DC: .4byte gNoOfAllBanks\n\
_080183E0: .4byte gPlayerParty\n\
_080183E4:\n\
- ldr r1, _08018444 @ =gBattlePartyID\n\
- ldrb r0, [r5]\n\
- lsls r0, 1\n\
- adds r0, r1\n\
- ldrh r1, [r0]\n\
- movs r0, 0x64\n\
- muls r1, r0\n\
- ldr r0, _08018448 @ =gEnemyParty\n\
+ ldr r1, _08018444 @ =gBattlePartyID\n\
+ ldrb r0, [r5]\n\
+ lsls r0, 1\n\
+ adds r0, r1\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x64\n\
+ muls r1, r0\n\
+ ldr r0, _08018448 @ =gEnemyParty\n\
_080183F4:\n\
- adds r5, r1, r0\n\
- adds r0, r7, 0\n\
- movs r1, 0xB\n\
- bl GetMonData\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x8]\n\
- adds r0, r7, 0\n\
- movs r1, 0\n\
- bl GetMonData\n\
- str r0, [sp, 0x10]\n\
- adds r0, r5, 0\n\
- movs r1, 0xB\n\
- bl GetMonData\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0xC]\n\
- adds r0, r5, 0\n\
- movs r1, 0\n\
- bl GetMonData\n\
- str r0, [sp, 0x14]\n\
- ldr r0, _0801844C @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- movs r0, 0x80\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08018436\n\
- bl _08019F92\n\
+ adds r5, r1, r0\n\
+ adds r0, r7, 0\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ str r0, [sp, 0x8]\n\
+ adds r0, r7, 0\n\
+ movs r1, 0\n\
+ bl GetMonData\n\
+ str r0, [sp, 0x10]\n\
+ adds r0, r5, 0\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ str r0, [sp, 0xC]\n\
+ adds r0, r5, 0\n\
+ movs r1, 0\n\
+ bl GetMonData\n\
+ str r0, [sp, 0x14]\n\
+ ldr r0, _0801844C @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x80\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08018436\n\
+ bl _08019F92\n\
_08018436:\n\
- mov r3, r8\n\
- cmp r3, 0\n\
- beq _08018454\n\
- ldr r0, _08018450 @ =gLastUsedAbility\n\
- strb r3, [r0]\n\
- mov r8, r0\n\
- b _0801846A\n\
- .align 2, 0\n\
+ mov r3, r8\n\
+ cmp r3, 0\n\
+ beq _08018454\n\
+ ldr r0, _08018450 @ =gLastUsedAbility\n\
+ strb r3, [r0]\n\
+ mov r8, r0\n\
+ b _0801846A\n\
+ .align 2, 0\n\
_08018444: .4byte gBattlePartyID\n\
_08018448: .4byte gEnemyParty\n\
_0801844C: .4byte gBattleTypeFlags\n\
_08018450: .4byte gLastUsedAbility\n\
_08018454:\n\
- ldr r2, _08018474 @ =gLastUsedAbility\n\
- ldr r1, _08018478 @ =gBattleMons\n\
- movs r0, 0x58\n\
- mov r5, r10\n\
- muls r5, r0\n\
- adds r0, r5, 0\n\
- adds r0, r1\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- strb r0, [r2]\n\
- mov r8, r2\n\
+ ldr r2, _08018474 @ =gLastUsedAbility\n\
+ ldr r1, _08018478 @ =gBattleMons\n\
+ movs r0, 0x58\n\
+ mov r5, r10\n\
+ muls r5, r0\n\
+ adds r0, r5, 0\n\
+ adds r0, r1\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r2]\n\
+ mov r8, r2\n\
_0801846A:\n\
- cmp r4, 0\n\
- beq _0801847C\n\
- adds r3, r4, 0\n\
- b _08018480\n\
- .align 2, 0\n\
+ cmp r4, 0\n\
+ beq _0801847C\n\
+ adds r3, r4, 0\n\
+ b _08018480\n\
+ .align 2, 0\n\
_08018474: .4byte gLastUsedAbility\n\
_08018478: .4byte gBattleMons\n\
_0801847C:\n\
- ldr r0, _08018494 @ =gCurrentMove\n\
- ldrh r3, [r0]\n\
+ ldr r0, _08018494 @ =gCurrentMove\n\
+ ldrh r3, [r0]\n\
_08018480:\n\
- ldr r1, _08018498 @ =0x02000000\n\
- ldr r2, _0801849C @ =0x0001601c\n\
- adds r0, r1, r2\n\
- ldrb r0, [r0]\n\
- adds r7, r1, 0\n\
- cmp r0, 0\n\
- beq _080184A0\n\
- movs r4, 0x3F\n\
- ands r4, r0\n\
- b _080184AC\n\
- .align 2, 0\n\
+ ldr r1, _08018498 @ =0x02000000\n\
+ ldr r2, _0801849C @ =0x0001601c\n\
+ adds r0, r1, r2\n\
+ ldrb r0, [r0]\n\
+ adds r7, r1, 0\n\
+ cmp r0, 0\n\
+ beq _080184A0\n\
+ movs r4, 0x3F\n\
+ ands r4, r0\n\
+ b _080184AC\n\
+ .align 2, 0\n\
_08018494: .4byte gCurrentMove\n\
_08018498: .4byte 0x02000000\n\
_0801849C: .4byte 0x0001601c\n\
_080184A0:\n\
- ldr r1, _080184C0 @ =gBattleMoves\n\
- lsls r0, r3, 1\n\
- adds r0, r3\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r4, [r0, 0x2]\n\
+ ldr r1, _080184C0 @ =gBattleMoves\n\
+ lsls r0, r3, 1\n\
+ adds r0, r3\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r4, [r0, 0x2]\n\
_080184AC:\n\
- ldr r5, [sp, 0x4]\n\
- cmp r5, 0x13\n\
- bls _080184B6\n\
- bl _08019F76\n\
+ ldr r5, [sp, 0x4]\n\
+ cmp r5, 0x13\n\
+ bls _080184B6\n\
+ bl _08019F76\n\
_080184B6:\n\
- lsls r0, r5, 2\n\
- ldr r1, _080184C4 @ =_080184C8\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .align 2, 0\n\
+ lsls r0, r5, 2\n\
+ ldr r1, _080184C4 @ =_080184C8\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
_080184C0: .4byte gBattleMoves\n\
_080184C4: .4byte _080184C8\n\
- .align 2, 0\n\
+ .align 2, 0\n\
_080184C8:\n\
- .4byte _08018518\n\
- .4byte _08018814\n\
- .4byte _08018A40\n\
- .4byte _08018AD8\n\
- .4byte _08018CF0\n\
- .4byte _08019448\n\
- .4byte _080197B4\n\
- .4byte _08019804\n\
- .4byte _08019880\n\
- .4byte _080198FC\n\
- .4byte _08019B1C\n\
- .4byte _08019940\n\
- .4byte _08019B60\n\
- .4byte _08019BBC\n\
- .4byte _08019C18\n\
- .4byte _08019D18\n\
- .4byte _08019D5C\n\
- .4byte _08019DB8\n\
- .4byte _08019F44\n\
- .4byte _08019CD4\n\
+ .4byte _08018518\n\
+ .4byte _08018814\n\
+ .4byte _08018A40\n\
+ .4byte _08018AD8\n\
+ .4byte _08018CF0\n\
+ .4byte _08019448\n\
+ .4byte _080197B4\n\
+ .4byte _08019804\n\
+ .4byte _08019880\n\
+ .4byte _080198FC\n\
+ .4byte _08019B1C\n\
+ .4byte _08019940\n\
+ .4byte _08019B60\n\
+ .4byte _08019BBC\n\
+ .4byte _08019C18\n\
+ .4byte _08019D18\n\
+ .4byte _08019D5C\n\
+ .4byte _08019DB8\n\
+ .4byte _08019F44\n\
+ .4byte _08019CD4\n\
_08018518:\n\
- ldr r2, _0801854C @ =gBankAttacker\n\
- ldr r0, _08018550 @ =gNoOfAllBanks\n\
- ldrb r1, [r2]\n\
- adds r5, r0, 0\n\
- ldrb r0, [r5]\n\
- cmp r1, r0\n\
- bcc _0801852A\n\
- mov r1, r10\n\
- strb r1, [r2]\n\
+ ldr r2, _0801854C @ =gBankAttacker\n\
+ ldr r0, _08018550 @ =gNoOfAllBanks\n\
+ ldrb r1, [r2]\n\
+ adds r5, r0, 0\n\
+ ldrb r0, [r5]\n\
+ cmp r1, r0\n\
+ bcc _0801852A\n\
+ mov r1, r10\n\
+ strb r1, [r2]\n\
_0801852A:\n\
- mov r2, r8\n\
- ldrb r0, [r2]\n\
- cmp r0, 0x2D\n\
- bne _08018534\n\
- b _080186B8\n\
+ mov r2, r8\n\
+ ldrb r0, [r2]\n\
+ cmp r0, 0x2D\n\
+ bne _08018534\n\
+ b _080186B8\n\
_08018534:\n\
- cmp r0, 0x2D\n\
- bgt _08018564\n\
- cmp r0, 0xD\n\
- bne _0801853E\n\
- b _080187DC\n\
+ cmp r0, 0x2D\n\
+ bgt _08018564\n\
+ cmp r0, 0xD\n\
+ bne _0801853E\n\
+ b _080187DC\n\
_0801853E:\n\
- cmp r0, 0xD\n\
- bgt _08018554\n\
- cmp r0, 0x2\n\
- bne _08018548\n\
- b _08018680\n\
+ cmp r0, 0xD\n\
+ bgt _08018554\n\
+ cmp r0, 0x2\n\
+ bne _08018548\n\
+ b _08018680\n\
_08018548:\n\
- bl _08019F76\n\
- .align 2, 0\n\
+ bl _08019F76\n\
+ .align 2, 0\n\
_0801854C: .4byte gBankAttacker\n\
_08018550: .4byte gNoOfAllBanks\n\
_08018554:\n\
- cmp r0, 0x16\n\
- bne _0801855A\n\
- b _08018728\n\
+ cmp r0, 0x16\n\
+ bne _0801855A\n\
+ b _08018728\n\
_0801855A:\n\
- cmp r0, 0x24\n\
- bne _08018560\n\
- b _080187A0\n\
+ cmp r0, 0x24\n\
+ bne _08018560\n\
+ b _080187A0\n\
_08018560:\n\
- bl _08019F76\n\
+ bl _08019F76\n\
_08018564:\n\
- cmp r0, 0x46\n\
- bne _0801856A\n\
- b _080186F0\n\
+ cmp r0, 0x46\n\
+ bne _0801856A\n\
+ b _080186F0\n\
_0801856A:\n\
- cmp r0, 0x46\n\
- bgt _08018578\n\
- cmp r0, 0x3B\n\
- bne _08018574\n\
- b _0801875C\n\
+ cmp r0, 0x46\n\
+ bgt _08018578\n\
+ cmp r0, 0x3B\n\
+ bne _08018574\n\
+ b _0801875C\n\
_08018574:\n\
- bl _08019F76\n\
+ bl _08019F76\n\
_08018578:\n\
- cmp r0, 0x4D\n\
- bne _0801857E\n\
- b _080187DC\n\
+ cmp r0, 0x4D\n\
+ bne _0801857E\n\
+ b _080187DC\n\
_0801857E:\n\
- cmp r0, 0xFF\n\
- beq _08018586\n\
- bl _08019F76\n\
+ cmp r0, 0xFF\n\
+ beq _08018586\n\
+ bl _08019F76\n\
_08018586:\n\
- bl weather_get_current\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- subs r0, 0x3\n\
- cmp r0, 0xA\n\
- bhi _0801864C\n\
- lsls r0, 2\n\
- ldr r1, _080185A0 @ =_080185A4\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .align 2, 0\n\
+ bl weather_get_current\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ subs r0, 0x3\n\
+ cmp r0, 0xA\n\
+ bhi _0801864C\n\
+ lsls r0, 2\n\
+ ldr r1, _080185A0 @ =_080185A4\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
_080185A0: .4byte _080185A4\n\
- .align 2, 0\n\
+ .align 2, 0\n\
_080185A4:\n\
- .4byte _080185D0\n\
- .4byte _0801864C\n\
- .4byte _080185D0\n\
- .4byte _0801864C\n\
- .4byte _0801864C\n\
- .4byte _080185F8\n\
- .4byte _0801864C\n\
- .4byte _0801864C\n\
- .4byte _0801864C\n\
- .4byte _08018620\n\
- .4byte _080185D0\n\
+ .4byte _080185D0\n\
+ .4byte _0801864C\n\
+ .4byte _080185D0\n\
+ .4byte _0801864C\n\
+ .4byte _0801864C\n\
+ .4byte _080185F8\n\
+ .4byte _0801864C\n\
+ .4byte _0801864C\n\
+ .4byte _0801864C\n\
+ .4byte _08018620\n\
+ .4byte _080185D0\n\
_080185D0:\n\
- ldr r2, _080185EC @ =gBattleWeather\n\
- ldrh r1, [r2]\n\
- movs r0, 0x7\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0801864C\n\
- movs r0, 0x5\n\
- strh r0, [r2]\n\
- ldr r0, _080185F0 @ =0x02000000\n\
- ldr r3, _080185F4 @ =0x000160a4\n\
- adds r2, r0, r3\n\
- movs r1, 0xA\n\
- b _08018638\n\
- .align 2, 0\n\
+ ldr r2, _080185EC @ =gBattleWeather\n\
+ ldrh r1, [r2]\n\
+ movs r0, 0x7\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0801864C\n\
+ movs r0, 0x5\n\
+ strh r0, [r2]\n\
+ ldr r0, _080185F0 @ =0x02000000\n\
+ ldr r3, _080185F4 @ =0x000160a4\n\
+ adds r2, r0, r3\n\
+ movs r1, 0xA\n\
+ b _08018638\n\
+ .align 2, 0\n\
_080185EC: .4byte gBattleWeather\n\
_080185F0: .4byte 0x02000000\n\
_080185F4: .4byte 0x000160a4\n\
_080185F8:\n\
- ldr r3, _08018614 @ =gBattleWeather\n\
- ldrh r1, [r3]\n\
- movs r2, 0x18\n\
- adds r0, r2, 0\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0801864C\n\
- strh r2, [r3]\n\
- ldr r0, _08018618 @ =0x02000000\n\
- ldr r3, _0801861C @ =0x000160a4\n\
- adds r2, r0, r3\n\
- movs r1, 0xC\n\
- b _08018638\n\
- .align 2, 0\n\
+ ldr r3, _08018614 @ =gBattleWeather\n\
+ ldrh r1, [r3]\n\
+ movs r2, 0x18\n\
+ adds r0, r2, 0\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0801864C\n\
+ strh r2, [r3]\n\
+ ldr r0, _08018618 @ =0x02000000\n\
+ ldr r3, _0801861C @ =0x000160a4\n\
+ adds r2, r0, r3\n\
+ movs r1, 0xC\n\
+ b _08018638\n\
+ .align 2, 0\n\
_08018614: .4byte gBattleWeather\n\
_08018618: .4byte 0x02000000\n\
_0801861C: .4byte 0x000160a4\n\
_08018620:\n\
- ldr r3, _08018668 @ =gBattleWeather\n\
- ldrh r1, [r3]\n\
- movs r2, 0x60\n\
- adds r0, r2, 0\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0801864C\n\
- strh r2, [r3]\n\
- ldr r0, _0801866C @ =0x02000000\n\
- ldr r3, _08018670 @ =0x000160a4\n\
- adds r2, r0, r3\n\
- movs r1, 0xB\n\
+ ldr r3, _08018668 @ =gBattleWeather\n\
+ ldrh r1, [r3]\n\
+ movs r2, 0x60\n\
+ adds r0, r2, 0\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0801864C\n\
+ strh r2, [r3]\n\
+ ldr r0, _0801866C @ =0x02000000\n\
+ ldr r3, _08018670 @ =0x000160a4\n\
+ adds r2, r0, r3\n\
+ movs r1, 0xB\n\
_08018638:\n\
- strb r1, [r2]\n\
- ldr r5, _08018674 @ =0x00016003\n\
- adds r0, r5\n\
- mov r1, r10\n\
- strb r1, [r0]\n\
- mov r0, r9\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
+ strb r1, [r2]\n\
+ ldr r5, _08018674 @ =0x00016003\n\
+ adds r0, r5\n\
+ mov r1, r10\n\
+ strb r1, [r0]\n\
+ mov r0, r9\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
_0801864C:\n\
- mov r2, r9\n\
- cmp r2, 0\n\
- bne _08018656\n\
- bl _08019F92\n\
+ mov r2, r9\n\
+ cmp r2, 0\n\
+ bne _08018656\n\
+ bl _08019F92\n\
_08018656:\n\
- bl weather_get_current\n\
- ldr r1, _08018678 @ =gBattleCommunication\n\
- strb r0, [r1, 0x5]\n\
- ldr r0, _0801867C @ =gUnknown_081D901D\n\
- bl b_push_move_exec\n\
- bl _08019F76\n\
- .align 2, 0\n\
+ bl weather_get_current\n\
+ ldr r1, _08018678 @ =gBattleCommunication\n\
+ strb r0, [r1, 0x5]\n\
+ ldr r0, _0801867C @ =gUnknown_081D901D\n\
+ bl b_push_move_exec\n\
+ bl _08019F76\n\
+ .align 2, 0\n\
_08018668: .4byte gBattleWeather\n\
_0801866C: .4byte 0x02000000\n\
_08018670: .4byte 0x000160a4\n\
@@ -2663,367 +2663,367 @@ _08018674: .4byte 0x00016003\n\
_08018678: .4byte gBattleCommunication\n\
_0801867C: .4byte gUnknown_081D901D\n\
_08018680:\n\
- ldr r2, _080186A8 @ =gBattleWeather\n\
- ldrh r1, [r2]\n\
- movs r0, 0x4\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08018690\n\
- bl _08019F76\n\
+ ldr r2, _080186A8 @ =gBattleWeather\n\
+ ldrh r1, [r2]\n\
+ movs r0, 0x4\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08018690\n\
+ bl _08019F76\n\
_08018690:\n\
- movs r0, 0x5\n\
- strh r0, [r2]\n\
- ldr r0, _080186AC @ =BattleScript_DrizzleActivates\n\
- bl b_push_move_exec\n\
- ldr r0, _080186B0 @ =0x02000000\n\
- ldr r3, _080186B4 @ =0x00016003\n\
- adds r0, r3\n\
- mov r5, r10\n\
- strb r5, [r0]\n\
- bl _08019F22\n\
- .align 2, 0\n\
+ movs r0, 0x5\n\
+ strh r0, [r2]\n\
+ ldr r0, _080186AC @ =BattleScript_DrizzleActivates\n\
+ bl b_push_move_exec\n\
+ ldr r0, _080186B0 @ =0x02000000\n\
+ ldr r3, _080186B4 @ =0x00016003\n\
+ adds r0, r3\n\
+ mov r5, r10\n\
+ strb r5, [r0]\n\
+ bl _08019F22\n\
+ .align 2, 0\n\
_080186A8: .4byte gBattleWeather\n\
_080186AC: .4byte BattleScript_DrizzleActivates\n\
_080186B0: .4byte 0x02000000\n\
_080186B4: .4byte 0x00016003\n\
_080186B8:\n\
- ldr r2, _080186E0 @ =gBattleWeather\n\
- ldrh r1, [r2]\n\
- movs r0, 0x10\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080186C8\n\
- bl _08019F76\n\
+ ldr r2, _080186E0 @ =gBattleWeather\n\
+ ldrh r1, [r2]\n\
+ movs r0, 0x10\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080186C8\n\
+ bl _08019F76\n\
_080186C8:\n\
- movs r0, 0x18\n\
- strh r0, [r2]\n\
- ldr r0, _080186E4 @ =BattleScript_SandstreamActivates\n\
- bl b_push_move_exec\n\
- ldr r0, _080186E8 @ =0x02000000\n\
- ldr r1, _080186EC @ =0x00016003\n\
- adds r0, r1\n\
- mov r2, r10\n\
- strb r2, [r0]\n\
- bl _08019F22\n\
- .align 2, 0\n\
+ movs r0, 0x18\n\
+ strh r0, [r2]\n\
+ ldr r0, _080186E4 @ =BattleScript_SandstreamActivates\n\
+ bl b_push_move_exec\n\
+ ldr r0, _080186E8 @ =0x02000000\n\
+ ldr r1, _080186EC @ =0x00016003\n\
+ adds r0, r1\n\
+ mov r2, r10\n\
+ strb r2, [r0]\n\
+ bl _08019F22\n\
+ .align 2, 0\n\
_080186E0: .4byte gBattleWeather\n\
_080186E4: .4byte BattleScript_SandstreamActivates\n\
_080186E8: .4byte 0x02000000\n\
_080186EC: .4byte 0x00016003\n\
_080186F0:\n\
- ldr r2, _08018718 @ =gBattleWeather\n\
- ldrh r1, [r2]\n\
- movs r0, 0x40\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08018700\n\
- bl _08019F76\n\
+ ldr r2, _08018718 @ =gBattleWeather\n\
+ ldrh r1, [r2]\n\
+ movs r0, 0x40\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08018700\n\
+ bl _08019F76\n\
_08018700:\n\
- movs r0, 0x60\n\
- strh r0, [r2]\n\
- ldr r0, _0801871C @ =BattleScript_DroughtActivates\n\
- bl b_push_move_exec\n\
- ldr r0, _08018720 @ =0x02000000\n\
- ldr r3, _08018724 @ =0x00016003\n\
- adds r0, r3\n\
- mov r5, r10\n\
- strb r5, [r0]\n\
- bl _08019F22\n\
- .align 2, 0\n\
+ movs r0, 0x60\n\
+ strh r0, [r2]\n\
+ ldr r0, _0801871C @ =BattleScript_DroughtActivates\n\
+ bl b_push_move_exec\n\
+ ldr r0, _08018720 @ =0x02000000\n\
+ ldr r3, _08018724 @ =0x00016003\n\
+ adds r0, r3\n\
+ mov r5, r10\n\
+ strb r5, [r0]\n\
+ bl _08019F22\n\
+ .align 2, 0\n\
_08018718: .4byte gBattleWeather\n\
_0801871C: .4byte BattleScript_DroughtActivates\n\
_08018720: .4byte 0x02000000\n\
_08018724: .4byte 0x00016003\n\
_08018728:\n\
- ldr r0, _08018754 @ =gSpecialStatuses\n\
- mov r1, r10\n\
- lsls r2, r1, 2\n\
- adds r1, r2, r1\n\
- lsls r1, 2\n\
- adds r3, r1, r0\n\
- ldrb r0, [r3]\n\
- lsls r0, 28\n\
- cmp r0, 0\n\
- bge _08018740\n\
- bl _08019F76\n\
+ ldr r0, _08018754 @ =gSpecialStatuses\n\
+ mov r1, r10\n\
+ lsls r2, r1, 2\n\
+ adds r1, r2, r1\n\
+ lsls r1, 2\n\
+ adds r3, r1, r0\n\
+ ldrb r0, [r3]\n\
+ lsls r0, 28\n\
+ cmp r0, 0\n\
+ bge _08018740\n\
+ bl _08019F76\n\
_08018740:\n\
- ldr r1, _08018758 @ =gStatuses3\n\
- adds r1, r2, r1\n\
- ldr r0, [r1]\n\
- movs r2, 0x80\n\
- lsls r2, 12\n\
- orrs r0, r2\n\
- str r0, [r1]\n\
- ldrb r0, [r3]\n\
- movs r1, 0x8\n\
- b _080187CA\n\
- .align 2, 0\n\
+ ldr r1, _08018758 @ =gStatuses3\n\
+ adds r1, r2, r1\n\
+ ldr r0, [r1]\n\
+ movs r2, 0x80\n\
+ lsls r2, 12\n\
+ orrs r0, r2\n\
+ str r0, [r1]\n\
+ ldrb r0, [r3]\n\
+ movs r1, 0x8\n\
+ b _080187CA\n\
+ .align 2, 0\n\
_08018754: .4byte gSpecialStatuses\n\
_08018758: .4byte gStatuses3\n\
_0801875C:\n\
- mov r0, r10\n\
- bl CastformDataTypeChange\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
- cmp r0, 0\n\
- bne _08018770\n\
- bl _08019F92\n\
+ mov r0, r10\n\
+ bl CastformDataTypeChange\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
+ cmp r0, 0\n\
+ bne _08018770\n\
+ bl _08019F92\n\
_08018770:\n\
- ldr r0, _08018790 @ =BattleScript_CastformChange\n\
- bl b_push_move_exec\n\
- ldr r0, _08018794 @ =0x02000000\n\
- ldr r2, _08018798 @ =0x00016003\n\
- adds r1, r0, r2\n\
- mov r3, r10\n\
- strb r3, [r1]\n\
- mov r1, r9\n\
- subs r1, 0x1\n\
- ldr r5, _0801879C @ =0x0001609b\n\
- adds r0, r5\n\
- strb r1, [r0]\n\
- bl _08019F76\n\
- .align 2, 0\n\
+ ldr r0, _08018790 @ =BattleScript_CastformChange\n\
+ bl b_push_move_exec\n\
+ ldr r0, _08018794 @ =0x02000000\n\
+ ldr r2, _08018798 @ =0x00016003\n\
+ adds r1, r0, r2\n\
+ mov r3, r10\n\
+ strb r3, [r1]\n\
+ mov r1, r9\n\
+ subs r1, 0x1\n\
+ ldr r5, _0801879C @ =0x0001609b\n\
+ adds r0, r5\n\
+ strb r1, [r0]\n\
+ bl _08019F76\n\
+ .align 2, 0\n\
_08018790: .4byte BattleScript_CastformChange\n\
_08018794: .4byte 0x02000000\n\
_08018798: .4byte 0x00016003\n\
_0801879C: .4byte 0x0001609b\n\
_080187A0:\n\
- ldr r0, _080187D4 @ =gSpecialStatuses\n\
- mov r1, r10\n\
- lsls r2, r1, 2\n\
- adds r1, r2, r1\n\
- lsls r1, 2\n\
- adds r3, r1, r0\n\
- ldrb r0, [r3]\n\
- lsls r0, 27\n\
- cmp r0, 0\n\
- bge _080187B8\n\
- bl _08019F76\n\
+ ldr r0, _080187D4 @ =gSpecialStatuses\n\
+ mov r1, r10\n\
+ lsls r2, r1, 2\n\
+ adds r1, r2, r1\n\
+ lsls r1, 2\n\
+ adds r3, r1, r0\n\
+ ldrb r0, [r3]\n\
+ lsls r0, 27\n\
+ cmp r0, 0\n\
+ bge _080187B8\n\
+ bl _08019F76\n\
_080187B8:\n\
- ldr r1, _080187D8 @ =gStatuses3\n\
- adds r1, r2, r1\n\
- ldr r0, [r1]\n\
- movs r2, 0x80\n\
- lsls r2, 13\n\
- orrs r0, r2\n\
- str r0, [r1]\n\
- ldrb r0, [r3]\n\
- movs r1, 0x10\n\
+ ldr r1, _080187D8 @ =gStatuses3\n\
+ adds r1, r2, r1\n\
+ ldr r0, [r1]\n\
+ movs r2, 0x80\n\
+ lsls r2, 13\n\
+ orrs r0, r2\n\
+ str r0, [r1]\n\
+ ldrb r0, [r3]\n\
+ movs r1, 0x10\n\
_080187CA:\n\
- orrs r0, r1\n\
- strb r0, [r3]\n\
- bl _08019F76\n\
- .align 2, 0\n\
+ orrs r0, r1\n\
+ strb r0, [r3]\n\
+ bl _08019F76\n\
+ .align 2, 0\n\
_080187D4: .4byte gSpecialStatuses\n\
_080187D8: .4byte gStatuses3\n\
_080187DC:\n\
- movs r6, 0\n\
- ldrb r5, [r5]\n\
- cmp r6, r5\n\
- bcc _080187E8\n\
- bl _08019F76\n\
+ movs r6, 0\n\
+ ldrb r5, [r5]\n\
+ cmp r6, r5\n\
+ bcc _080187E8\n\
+ bl _08019F76\n\
_080187E8:\n\
- adds r0, r6, 0\n\
- bl CastformDataTypeChange\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
- cmp r0, 0\n\
- beq _080187FC\n\
- bl _08019E14\n\
+ adds r0, r6, 0\n\
+ bl CastformDataTypeChange\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
+ cmp r0, 0\n\
+ beq _080187FC\n\
+ bl _08019E14\n\
_080187FC:\n\
- adds r0, r6, 0x1\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- ldr r0, _08018810 @ =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r6, r0\n\
- bcc _080187E8\n\
- bl _08019F76\n\
- .align 2, 0\n\
+ adds r0, r6, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r6, r0, 24\n\
+ ldr r0, _08018810 @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r6, r0\n\
+ bcc _080187E8\n\
+ bl _08019F76\n\
+ .align 2, 0\n\
_08018810: .4byte gNoOfAllBanks\n\
_08018814:\n\
- ldr r2, _08018844 @ =gBattleMons\n\
- movs r0, 0x58\n\
- mov r1, r10\n\
- muls r1, r0\n\
- adds r4, r1, r2\n\
- ldrh r0, [r4, 0x28]\n\
- cmp r0, 0\n\
- bne _08018828\n\
- bl _08019F76\n\
+ ldr r2, _08018844 @ =gBattleMons\n\
+ movs r0, 0x58\n\
+ mov r1, r10\n\
+ muls r1, r0\n\
+ adds r4, r1, r2\n\
+ ldrh r0, [r4, 0x28]\n\
+ cmp r0, 0\n\
+ bne _08018828\n\
+ bl _08019F76\n\
_08018828:\n\
- ldr r0, _08018848 @ =gBankAttacker\n\
- mov r3, r10\n\
- strb r3, [r0]\n\
- mov r3, r8\n\
- ldrb r5, [r3]\n\
- cmp r5, 0x2C\n\
- beq _0801885A\n\
- cmp r5, 0x2C\n\
- bgt _0801884C\n\
- cmp r5, 0x3\n\
- bne _08018840\n\
- b _080189B8\n\
+ ldr r0, _08018848 @ =gBankAttacker\n\
+ mov r3, r10\n\
+ strb r3, [r0]\n\
+ mov r3, r8\n\
+ ldrb r5, [r3]\n\
+ cmp r5, 0x2C\n\
+ beq _0801885A\n\
+ cmp r5, 0x2C\n\
+ bgt _0801884C\n\
+ cmp r5, 0x3\n\
+ bne _08018840\n\
+ b _080189B8\n\
_08018840:\n\
- bl _08019F76\n\
- .align 2, 0\n\
+ bl _08019F76\n\
+ .align 2, 0\n\
_08018844: .4byte gBattleMons\n\
_08018848: .4byte gBankAttacker\n\
_0801884C:\n\
- cmp r5, 0x36\n\
- bne _08018852\n\
- b _08018A18\n\
+ cmp r5, 0x36\n\
+ bne _08018852\n\
+ b _08018A18\n\
_08018852:\n\
- cmp r5, 0x3D\n\
- beq _080188DC\n\
- bl _08019F76\n\
+ cmp r5, 0x3D\n\
+ beq _080188DC\n\
+ bl _08019F76\n\
_0801885A:\n\
- movs r0, 0\n\
- str r0, [sp]\n\
- movs r0, 0x13\n\
- movs r1, 0\n\
- movs r2, 0xD\n\
- movs r3, 0\n\
- bl AbilityBattleEffects\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0\n\
- beq _08018876\n\
- bl _08019F76\n\
+ movs r0, 0\n\
+ str r0, [sp]\n\
+ movs r0, 0x13\n\
+ movs r1, 0\n\
+ movs r2, 0xD\n\
+ movs r3, 0\n\
+ bl AbilityBattleEffects\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0\n\
+ beq _08018876\n\
+ bl _08019F76\n\
_08018876:\n\
- str r0, [sp]\n\
- movs r0, 0x13\n\
- movs r1, 0\n\
- movs r2, 0x4D\n\
- movs r3, 0\n\
- bl AbilityBattleEffects\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0801888E\n\
- bl _08019F76\n\
+ str r0, [sp]\n\
+ movs r0, 0x13\n\
+ movs r1, 0\n\
+ movs r2, 0x4D\n\
+ movs r3, 0\n\
+ bl AbilityBattleEffects\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _0801888E\n\
+ bl _08019F76\n\
_0801888E:\n\
- ldr r0, _080188D0 @ =gBattleWeather\n\
- ldrh r1, [r0]\n\
- movs r0, 0x7\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0801889E\n\
- bl _08019F76\n\
+ ldr r0, _080188D0 @ =gBattleWeather\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x7\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0801889E\n\
+ bl _08019F76\n\
_0801889E:\n\
- ldrh r0, [r4, 0x2C]\n\
- ldrh r1, [r4, 0x28]\n\
- cmp r0, r1\n\
- bhi _080188AA\n\
- bl _08019F76\n\
+ ldrh r0, [r4, 0x2C]\n\
+ ldrh r1, [r4, 0x28]\n\
+ cmp r0, r1\n\
+ bhi _080188AA\n\
+ bl _08019F76\n\
_080188AA:\n\
- mov r2, r8\n\
- strb r5, [r2]\n\
- ldr r0, _080188D4 @ =BattleScript_RainDishActivates\n\
- bl b_push_move_exec\n\
- ldr r1, _080188D8 @ =gBattleMoveDamage\n\
- ldrh r0, [r4, 0x2C]\n\
- lsrs r0, 4\n\
- str r0, [r1]\n\
- cmp r0, 0\n\
- bne _080188C4\n\
- movs r0, 0x1\n\
- str r0, [r1]\n\
+ mov r2, r8\n\
+ strb r5, [r2]\n\
+ ldr r0, _080188D4 @ =BattleScript_RainDishActivates\n\
+ bl b_push_move_exec\n\
+ ldr r1, _080188D8 @ =gBattleMoveDamage\n\
+ ldrh r0, [r4, 0x2C]\n\
+ lsrs r0, 4\n\
+ str r0, [r1]\n\
+ cmp r0, 0\n\
+ bne _080188C4\n\
+ movs r0, 0x1\n\
+ str r0, [r1]\n\
_080188C4:\n\
- ldr r0, [r1]\n\
- negs r0, r0\n\
- str r0, [r1]\n\
- bl _08019F22\n\
- .align 2, 0\n\
+ ldr r0, [r1]\n\
+ negs r0, r0\n\
+ str r0, [r1]\n\
+ bl _08019F22\n\
+ .align 2, 0\n\
_080188D0: .4byte gBattleWeather\n\
_080188D4: .4byte BattleScript_RainDishActivates\n\
_080188D8: .4byte gBattleMoveDamage\n\
_080188DC:\n\
- adds r0, r2, 0\n\
- adds r0, 0x4C\n\
- adds r5, r1, r0\n\
- ldrb r0, [r5]\n\
- cmp r0, 0\n\
- bne _080188EC\n\
- bl _08019F76\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x4C\n\
+ adds r5, r1, r0\n\
+ ldrb r0, [r5]\n\
+ cmp r0, 0\n\
+ bne _080188EC\n\
+ bl _08019F76\n\
_080188EC:\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- movs r1, 0x3\n\
- bl __umodsi3\n\
- lsls r0, 16\n\
- lsrs r4, r0, 16\n\
- cmp r4, 0\n\
- beq _08018906\n\
- bl _08019F76\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0x3\n\
+ bl __umodsi3\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ cmp r4, 0\n\
+ beq _08018906\n\
+ bl _08019F76\n\
_08018906:\n\
- ldr r0, [r5]\n\
- movs r1, 0x88\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08018918\n\
- ldr r0, _08018990 @ =gBattleTextBuff1\n\
- ldr r1, _08018994 @ =gStatusConditionString_PoisonJpn\n\
- bl StringCopy\n\
+ ldr r0, [r5]\n\
+ movs r1, 0x88\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08018918\n\
+ ldr r0, _08018990 @ =gBattleTextBuff1\n\
+ ldr r1, _08018994 @ =gStatusConditionString_PoisonJpn\n\
+ bl StringCopy\n\
_08018918:\n\
- ldr r0, [r5]\n\
- movs r1, 0x7\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0801892A\n\
- ldr r0, _08018990 @ =gBattleTextBuff1\n\
- ldr r1, _08018998 @ =gStatusConditionString_SleepJpn\n\
- bl StringCopy\n\
+ ldr r0, [r5]\n\
+ movs r1, 0x7\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0801892A\n\
+ ldr r0, _08018990 @ =gBattleTextBuff1\n\
+ ldr r1, _08018998 @ =gStatusConditionString_SleepJpn\n\
+ bl StringCopy\n\
_0801892A:\n\
- ldr r0, [r5]\n\
- movs r1, 0x40\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0801893C\n\
- ldr r0, _08018990 @ =gBattleTextBuff1\n\
- ldr r1, _0801899C @ =gStatusConditionString_ParalysisJpn\n\
- bl StringCopy\n\
+ ldr r0, [r5]\n\
+ movs r1, 0x40\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0801893C\n\
+ ldr r0, _08018990 @ =gBattleTextBuff1\n\
+ ldr r1, _0801899C @ =gStatusConditionString_ParalysisJpn\n\
+ bl StringCopy\n\
_0801893C:\n\
- ldr r0, [r5]\n\
- movs r1, 0x10\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0801894E\n\
- ldr r0, _08018990 @ =gBattleTextBuff1\n\
- ldr r1, _080189A0 @ =gStatusConditionString_BurnJpn\n\
- bl StringCopy\n\
+ ldr r0, [r5]\n\
+ movs r1, 0x10\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0801894E\n\
+ ldr r0, _08018990 @ =gBattleTextBuff1\n\
+ ldr r1, _080189A0 @ =gStatusConditionString_BurnJpn\n\
+ bl StringCopy\n\
_0801894E:\n\
- ldr r0, [r5]\n\
- movs r1, 0x20\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08018960\n\
- ldr r0, _08018990 @ =gBattleTextBuff1\n\
- ldr r1, _080189A4 @ =gStatusConditionString_IceJpn\n\
- bl StringCopy\n\
+ ldr r0, [r5]\n\
+ movs r1, 0x20\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08018960\n\
+ ldr r0, _08018990 @ =gBattleTextBuff1\n\
+ ldr r1, _080189A4 @ =gStatusConditionString_IceJpn\n\
+ bl StringCopy\n\
_08018960:\n\
- str r4, [r5]\n\
- ldr r0, _080189A8 @ =0x02000000\n\
- ldr r4, _080189AC @ =gActiveBank\n\
- mov r3, r10\n\
- strb r3, [r4]\n\
- ldr r1, _080189B0 @ =0x00016003\n\
- adds r0, r1\n\
- strb r3, [r0]\n\
- ldr r0, _080189B4 @ =BattleScript_ShedSkinActivates\n\
- bl b_push_move_exec\n\
- str r5, [sp]\n\
- movs r0, 0\n\
- movs r1, 0x28\n\
- movs r2, 0\n\
- movs r3, 0x4\n\
- bl EmitSetAttributes\n\
- ldrb r0, [r4]\n\
- bl MarkBufferBankForExecution\n\
- bl _08019F22\n\
- .align 2, 0\n\
+ str r4, [r5]\n\
+ ldr r0, _080189A8 @ =0x02000000\n\
+ ldr r4, _080189AC @ =gActiveBank\n\
+ mov r3, r10\n\
+ strb r3, [r4]\n\
+ ldr r1, _080189B0 @ =0x00016003\n\
+ adds r0, r1\n\
+ strb r3, [r0]\n\
+ ldr r0, _080189B4 @ =BattleScript_ShedSkinActivates\n\
+ bl b_push_move_exec\n\
+ str r5, [sp]\n\
+ movs r0, 0\n\
+ movs r1, 0x28\n\
+ movs r2, 0\n\
+ movs r3, 0x4\n\
+ bl EmitSetAttributes\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+ bl _08019F22\n\
+ .align 2, 0\n\
_08018990: .4byte gBattleTextBuff1\n\
_08018994: .4byte gStatusConditionString_PoisonJpn\n\
_08018998: .4byte gStatusConditionString_SleepJpn\n\
@@ -3035,132 +3035,132 @@ _080189AC: .4byte gActiveBank\n\
_080189B0: .4byte 0x00016003\n\
_080189B4: .4byte BattleScript_ShedSkinActivates\n\
_080189B8:\n\
- ldrb r2, [r4, 0x1B]\n\
- movs r0, 0x1B\n\
- ldrsb r0, [r4, r0]\n\
- cmp r0, 0xB\n\
- ble _080189C6\n\
- bl _08019F76\n\
+ ldrb r2, [r4, 0x1B]\n\
+ movs r0, 0x1B\n\
+ ldrsb r0, [r4, r0]\n\
+ cmp r0, 0xB\n\
+ ble _080189C6\n\
+ bl _08019F76\n\
_080189C6:\n\
- ldr r0, _08018A04 @ =gDisableStructs\n\
- mov r3, r10\n\
- lsls r1, r3, 3\n\
- subs r1, r3\n\
- lsls r1, 2\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x16]\n\
- cmp r0, 0x2\n\
- bne _080189DC\n\
- bl _08019F76\n\
+ ldr r0, _08018A04 @ =gDisableStructs\n\
+ mov r3, r10\n\
+ lsls r1, r3, 3\n\
+ subs r1, r3\n\
+ lsls r1, 2\n\
+ adds r1, r0\n\
+ ldrb r0, [r1, 0x16]\n\
+ cmp r0, 0x2\n\
+ bne _080189DC\n\
+ bl _08019F76\n\
_080189DC:\n\
- adds r0, r2, 0x1\n\
- movs r2, 0\n\
- strb r0, [r4, 0x1B]\n\
- ldr r5, _08018A08 @ =0x000160a4\n\
- adds r1, r7, r5\n\
- movs r0, 0x11\n\
- strb r0, [r1]\n\
- ldr r1, _08018A0C @ =0x000160a5\n\
- adds r0, r7, r1\n\
- strb r2, [r0]\n\
- ldr r0, _08018A10 @ =BattleScript_SpeedBoostActivates\n\
- bl b_push_move_exec\n\
- ldr r2, _08018A14 @ =0x00016003\n\
- adds r0, r7, r2\n\
- mov r3, r10\n\
- strb r3, [r0]\n\
- bl _08019F22\n\
- .align 2, 0\n\
+ adds r0, r2, 0x1\n\
+ movs r2, 0\n\
+ strb r0, [r4, 0x1B]\n\
+ ldr r5, _08018A08 @ =0x000160a4\n\
+ adds r1, r7, r5\n\
+ movs r0, 0x11\n\
+ strb r0, [r1]\n\
+ ldr r1, _08018A0C @ =0x000160a5\n\
+ adds r0, r7, r1\n\
+ strb r2, [r0]\n\
+ ldr r0, _08018A10 @ =BattleScript_SpeedBoostActivates\n\
+ bl b_push_move_exec\n\
+ ldr r2, _08018A14 @ =0x00016003\n\
+ adds r0, r7, r2\n\
+ mov r3, r10\n\
+ strb r3, [r0]\n\
+ bl _08019F22\n\
+ .align 2, 0\n\
_08018A04: .4byte gDisableStructs\n\
_08018A08: .4byte 0x000160a4\n\
_08018A0C: .4byte 0x000160a5\n\
_08018A10: .4byte BattleScript_SpeedBoostActivates\n\
_08018A14: .4byte 0x00016003\n\
_08018A18:\n\
- ldr r2, _08018A3C @ =gDisableStructs\n\
- ldrb r0, [r0]\n\
- lsls r1, r0, 3\n\
- subs r1, r0\n\
- lsls r1, 2\n\
- adds r1, r2\n\
- ldrb r3, [r1, 0x18]\n\
- lsls r0, r3, 31\n\
- lsrs r0, 31\n\
- movs r2, 0x1\n\
- eors r2, r0\n\
- movs r0, 0x2\n\
- negs r0, r0\n\
- ands r0, r3\n\
- orrs r0, r2\n\
- strb r0, [r1, 0x18]\n\
- bl _08019F76\n\
- .align 2, 0\n\
+ ldr r2, _08018A3C @ =gDisableStructs\n\
+ ldrb r0, [r0]\n\
+ lsls r1, r0, 3\n\
+ subs r1, r0\n\
+ lsls r1, 2\n\
+ adds r1, r2\n\
+ ldrb r3, [r1, 0x18]\n\
+ lsls r0, r3, 31\n\
+ lsrs r0, 31\n\
+ movs r2, 0x1\n\
+ eors r2, r0\n\
+ movs r0, 0x2\n\
+ negs r0, r0\n\
+ ands r0, r3\n\
+ orrs r0, r2\n\
+ strb r0, [r1, 0x18]\n\
+ bl _08019F76\n\
+ .align 2, 0\n\
_08018A3C: .4byte gDisableStructs\n\
_08018A40:\n\
- mov r5, r8\n\
- ldrb r0, [r5]\n\
- cmp r0, 0x2B\n\
- beq _08018A4C\n\
- bl _08019F76\n\
+ mov r5, r8\n\
+ ldrb r0, [r5]\n\
+ cmp r0, 0x2B\n\
+ beq _08018A4C\n\
+ bl _08019F76\n\
_08018A4C:\n\
- movs r4, 0\n\
- ldr r0, _08018ABC @ =gSoundMovesTable\n\
- ldrh r2, [r0]\n\
- ldr r5, _08018AC0 @ =0x0000ffff\n\
- adds r1, r0, 0\n\
- cmp r2, r5\n\
- bne _08018A5E\n\
- bl _08019F76\n\
+ movs r4, 0\n\
+ ldr r0, _08018ABC @ =gSoundMovesTable\n\
+ ldrh r2, [r0]\n\
+ ldr r5, _08018AC0 @ =0x0000ffff\n\
+ adds r1, r0, 0\n\
+ cmp r2, r5\n\
+ bne _08018A5E\n\
+ bl _08019F76\n\
_08018A5E:\n\
- cmp r2, r3\n\
- beq _08018A76\n\
- adds r2, r1, 0\n\
+ cmp r2, r3\n\
+ beq _08018A76\n\
+ adds r2, r1, 0\n\
_08018A64:\n\
- adds r2, 0x2\n\
- adds r4, 0x1\n\
- ldrh r0, [r2]\n\
- cmp r0, r5\n\
- bne _08018A72\n\
- bl _08019F76\n\
+ adds r2, 0x2\n\
+ adds r4, 0x1\n\
+ ldrh r0, [r2]\n\
+ cmp r0, r5\n\
+ bne _08018A72\n\
+ bl _08019F76\n\
_08018A72:\n\
- cmp r0, r3\n\
- bne _08018A64\n\
+ cmp r0, r3\n\
+ bne _08018A64\n\
_08018A76:\n\
- lsls r0, r4, 1\n\
- adds r0, r1\n\
- ldrh r1, [r0]\n\
- ldr r0, _08018AC0 @ =0x0000ffff\n\
- cmp r1, r0\n\
- bne _08018A86\n\
- bl _08019F76\n\
+ lsls r0, r4, 1\n\
+ adds r0, r1\n\
+ ldrh r1, [r0]\n\
+ ldr r0, _08018AC0 @ =0x0000ffff\n\
+ cmp r1, r0\n\
+ bne _08018A86\n\
+ bl _08019F76\n\
_08018A86:\n\
- ldr r1, _08018AC4 @ =gBattleMons\n\
- ldr r0, _08018AC8 @ =gBankAttacker\n\
- ldrb r2, [r0]\n\
- movs r0, 0x58\n\
- muls r0, r2\n\
- adds r1, 0x50\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- movs r1, 0x80\n\
- lsls r1, 5\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08018AAC\n\
- ldr r0, _08018ACC @ =gHitMarker\n\
- ldr r1, [r0]\n\
- movs r2, 0x80\n\
- lsls r2, 4\n\
- orrs r1, r2\n\
- str r1, [r0]\n\
+ ldr r1, _08018AC4 @ =gBattleMons\n\
+ ldr r0, _08018AC8 @ =gBankAttacker\n\
+ ldrb r2, [r0]\n\
+ movs r0, 0x58\n\
+ muls r0, r2\n\
+ adds r1, 0x50\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x80\n\
+ lsls r1, 5\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08018AAC\n\
+ ldr r0, _08018ACC @ =gHitMarker\n\
+ ldr r1, [r0]\n\
+ movs r2, 0x80\n\
+ lsls r2, 4\n\
+ orrs r1, r2\n\
+ str r1, [r0]\n\
_08018AAC:\n\
- ldr r1, _08018AD0 @ =gBattlescriptCurrInstr\n\
- ldr r0, _08018AD4 @ =BattleScript_SoundproofProtected\n\
- str r0, [r1]\n\
- movs r0, 0x1\n\
- mov r9, r0\n\
- bl _08019F7C\n\
- .align 2, 0\n\
+ ldr r1, _08018AD0 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08018AD4 @ =BattleScript_SoundproofProtected\n\
+ str r0, [r1]\n\
+ movs r0, 0x1\n\
+ mov r9, r0\n\
+ bl _08019F7C\n\
+ .align 2, 0\n\
_08018ABC: .4byte gSoundMovesTable\n\
_08018AC0: .4byte 0x0000ffff\n\
_08018AC4: .4byte gBattleMons\n\
@@ -3169,150 +3169,150 @@ _08018ACC: .4byte gHitMarker\n\
_08018AD0: .4byte gBattlescriptCurrInstr\n\
_08018AD4: .4byte BattleScript_SoundproofProtected\n\
_08018AD8:\n\
- cmp r3, 0\n\
- bne _08018AE0\n\
- bl _08019F76\n\
+ cmp r3, 0\n\
+ bne _08018AE0\n\
+ bl _08019F76\n\
_08018AE0:\n\
- mov r1, r8\n\
- ldrb r0, [r1]\n\
- cmp r0, 0xB\n\
- beq _08018B50\n\
- cmp r0, 0xB\n\
- bgt _08018AF2\n\
- cmp r0, 0xA\n\
- beq _08018AF8\n\
- b _08018C6A\n\
+ mov r1, r8\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0xB\n\
+ beq _08018B50\n\
+ cmp r0, 0xB\n\
+ bgt _08018AF2\n\
+ cmp r0, 0xA\n\
+ beq _08018AF8\n\
+ b _08018C6A\n\
_08018AF2:\n\
- cmp r0, 0x12\n\
- beq _08018BA8\n\
- b _08018C6A\n\
+ cmp r0, 0x12\n\
+ beq _08018BA8\n\
+ b _08018C6A\n\
_08018AF8:\n\
- cmp r4, 0xD\n\
- beq _08018AFE\n\
- b _08018C6A\n\
+ cmp r4, 0xD\n\
+ beq _08018AFE\n\
+ b _08018C6A\n\
_08018AFE:\n\
- ldr r0, _08018B28 @ =gBattleMoves\n\
- lsls r1, r3, 1\n\
- adds r1, r3\n\
- lsls r1, 2\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x1]\n\
- cmp r0, 0\n\
- bne _08018B10\n\
- b _08018C6A\n\
+ ldr r0, _08018B28 @ =gBattleMoves\n\
+ lsls r1, r3, 1\n\
+ adds r1, r3\n\
+ lsls r1, 2\n\
+ adds r1, r0\n\
+ ldrb r0, [r1, 0x1]\n\
+ cmp r0, 0\n\
+ bne _08018B10\n\
+ b _08018C6A\n\
_08018B10:\n\
- ldr r1, _08018B2C @ =gProtectStructs\n\
- ldr r0, _08018B30 @ =gBankAttacker\n\
- ldrb r0, [r0]\n\
- lsls r0, 4\n\
- adds r0, r1\n\
- ldrb r0, [r0, 0x2]\n\
- lsls r0, 28\n\
- cmp r0, 0\n\
- bge _08018B3C\n\
- ldr r1, _08018B34 @ =gBattlescriptCurrInstr\n\
- ldr r0, _08018B38 @ =BattleScript_MoveHPDrain\n\
- b _08018B40\n\
- .align 2, 0\n\
+ ldr r1, _08018B2C @ =gProtectStructs\n\
+ ldr r0, _08018B30 @ =gBankAttacker\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 4\n\
+ adds r0, r1\n\
+ ldrb r0, [r0, 0x2]\n\
+ lsls r0, 28\n\
+ cmp r0, 0\n\
+ bge _08018B3C\n\
+ ldr r1, _08018B34 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08018B38 @ =BattleScript_MoveHPDrain\n\
+ b _08018B40\n\
+ .align 2, 0\n\
_08018B28: .4byte gBattleMoves\n\
_08018B2C: .4byte gProtectStructs\n\
_08018B30: .4byte gBankAttacker\n\
_08018B34: .4byte gBattlescriptCurrInstr\n\
_08018B38: .4byte BattleScript_MoveHPDrain\n\
_08018B3C:\n\
- ldr r1, _08018B48 @ =gBattlescriptCurrInstr\n\
- ldr r0, _08018B4C @ =BattleScript_MoveHPDrain_PPLoss\n\
+ ldr r1, _08018B48 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08018B4C @ =BattleScript_MoveHPDrain_PPLoss\n\
_08018B40:\n\
- str r0, [r1]\n\
- movs r2, 0x1\n\
- b _08018C68\n\
- .align 2, 0\n\
+ str r0, [r1]\n\
+ movs r2, 0x1\n\
+ b _08018C68\n\
+ .align 2, 0\n\
_08018B48: .4byte gBattlescriptCurrInstr\n\
_08018B4C: .4byte BattleScript_MoveHPDrain_PPLoss\n\
_08018B50:\n\
- cmp r4, 0xB\n\
- beq _08018B56\n\
- b _08018C6A\n\
+ cmp r4, 0xB\n\
+ beq _08018B56\n\
+ b _08018C6A\n\
_08018B56:\n\
- ldr r0, _08018B80 @ =gBattleMoves\n\
- lsls r1, r3, 1\n\
- adds r1, r3\n\
- lsls r1, 2\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x1]\n\
- cmp r0, 0\n\
- bne _08018B68\n\
- b _08018C6A\n\
+ ldr r0, _08018B80 @ =gBattleMoves\n\
+ lsls r1, r3, 1\n\
+ adds r1, r3\n\
+ lsls r1, 2\n\
+ adds r1, r0\n\
+ ldrb r0, [r1, 0x1]\n\
+ cmp r0, 0\n\
+ bne _08018B68\n\
+ b _08018C6A\n\
_08018B68:\n\
- ldr r1, _08018B84 @ =gProtectStructs\n\
- ldr r0, _08018B88 @ =gBankAttacker\n\
- ldrb r0, [r0]\n\
- lsls r0, 4\n\
- adds r0, r1\n\
- ldrb r0, [r0, 0x2]\n\
- lsls r0, 28\n\
- cmp r0, 0\n\
- bge _08018B94\n\
- ldr r1, _08018B8C @ =gBattlescriptCurrInstr\n\
- ldr r0, _08018B90 @ =BattleScript_MoveHPDrain\n\
- b _08018B98\n\
- .align 2, 0\n\
+ ldr r1, _08018B84 @ =gProtectStructs\n\
+ ldr r0, _08018B88 @ =gBankAttacker\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 4\n\
+ adds r0, r1\n\
+ ldrb r0, [r0, 0x2]\n\
+ lsls r0, 28\n\
+ cmp r0, 0\n\
+ bge _08018B94\n\
+ ldr r1, _08018B8C @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08018B90 @ =BattleScript_MoveHPDrain\n\
+ b _08018B98\n\
+ .align 2, 0\n\
_08018B80: .4byte gBattleMoves\n\
_08018B84: .4byte gProtectStructs\n\
_08018B88: .4byte gBankAttacker\n\
_08018B8C: .4byte gBattlescriptCurrInstr\n\
_08018B90: .4byte BattleScript_MoveHPDrain\n\
_08018B94:\n\
- ldr r1, _08018BA0 @ =gBattlescriptCurrInstr\n\
- ldr r0, _08018BA4 @ =BattleScript_MoveHPDrain_PPLoss\n\
+ ldr r1, _08018BA0 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08018BA4 @ =BattleScript_MoveHPDrain_PPLoss\n\
_08018B98:\n\
- str r0, [r1]\n\
- movs r3, 0x1\n\
- mov r9, r3\n\
- b _08018C6A\n\
- .align 2, 0\n\
+ str r0, [r1]\n\
+ movs r3, 0x1\n\
+ mov r9, r3\n\
+ b _08018C6A\n\
+ .align 2, 0\n\
_08018BA0: .4byte gBattlescriptCurrInstr\n\
_08018BA4: .4byte BattleScript_MoveHPDrain_PPLoss\n\
_08018BA8:\n\
- cmp r4, 0xA\n\
- bne _08018C6A\n\
- ldr r1, _08018BF4 @ =gBattleMons\n\
- movs r0, 0x58\n\
- mov r5, r10\n\
- muls r5, r0\n\
- adds r0, r5, 0\n\
- adds r1, 0x4C\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- movs r1, 0x20\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08018C6A\n\
- ldr r2, _08018BF8 @ =0x02017100\n\
- mov r0, r10\n\
- lsls r1, r0, 2\n\
- adds r0, r1, r2\n\
- ldr r3, [r0]\n\
- movs r4, 0x1\n\
- ands r3, r4\n\
- adds r5, r1, 0\n\
- cmp r3, 0\n\
- bne _08018C30\n\
- ldr r0, _08018BFC @ =gBattleCommunication\n\
- strb r3, [r0, 0x5]\n\
- ldr r1, _08018C00 @ =gProtectStructs\n\
- ldr r0, _08018C04 @ =gBankAttacker\n\
- ldrb r0, [r0]\n\
- lsls r0, 4\n\
- adds r0, r1\n\
- ldrb r0, [r0, 0x2]\n\
- lsls r0, 28\n\
- cmp r0, 0\n\
- bge _08018C10\n\
- ldr r1, _08018C08 @ =gBattlescriptCurrInstr\n\
- ldr r0, _08018C0C @ =BattleScript_FlashFireBoost\n\
- b _08018C14\n\
- .align 2, 0\n\
+ cmp r4, 0xA\n\
+ bne _08018C6A\n\
+ ldr r1, _08018BF4 @ =gBattleMons\n\
+ movs r0, 0x58\n\
+ mov r5, r10\n\
+ muls r5, r0\n\
+ adds r0, r5, 0\n\
+ adds r1, 0x4C\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x20\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08018C6A\n\
+ ldr r2, _08018BF8 @ =0x02017100\n\
+ mov r0, r10\n\
+ lsls r1, r0, 2\n\
+ adds r0, r1, r2\n\
+ ldr r3, [r0]\n\
+ movs r4, 0x1\n\
+ ands r3, r4\n\
+ adds r5, r1, 0\n\
+ cmp r3, 0\n\
+ bne _08018C30\n\
+ ldr r0, _08018BFC @ =gBattleCommunication\n\
+ strb r3, [r0, 0x5]\n\
+ ldr r1, _08018C00 @ =gProtectStructs\n\
+ ldr r0, _08018C04 @ =gBankAttacker\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 4\n\
+ adds r0, r1\n\
+ ldrb r0, [r0, 0x2]\n\
+ lsls r0, 28\n\
+ cmp r0, 0\n\
+ bge _08018C10\n\
+ ldr r1, _08018C08 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08018C0C @ =BattleScript_FlashFireBoost\n\
+ b _08018C14\n\
+ .align 2, 0\n\
_08018BF4: .4byte gBattleMons\n\
_08018BF8: .4byte 0x02017100\n\
_08018BFC: .4byte gBattleCommunication\n\
@@ -3321,80 +3321,80 @@ _08018C04: .4byte gBankAttacker\n\
_08018C08: .4byte gBattlescriptCurrInstr\n\
_08018C0C: .4byte BattleScript_FlashFireBoost\n\
_08018C10:\n\
- ldr r1, _08018C28 @ =gBattlescriptCurrInstr\n\
- ldr r0, _08018C2C @ =BattleScript_FlashFireBoost_PPLoss\n\
+ ldr r1, _08018C28 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08018C2C @ =BattleScript_FlashFireBoost_PPLoss\n\
_08018C14:\n\
- str r0, [r1]\n\
- adds r0, r5, r2\n\
- ldr r1, [r0]\n\
- movs r2, 0x1\n\
- orrs r1, r2\n\
- str r1, [r0]\n\
- movs r1, 0x2\n\
- mov r9, r1\n\
- b _08018C6A\n\
- .align 2, 0\n\
+ str r0, [r1]\n\
+ adds r0, r5, r2\n\
+ ldr r1, [r0]\n\
+ movs r2, 0x1\n\
+ orrs r1, r2\n\
+ str r1, [r0]\n\
+ movs r1, 0x2\n\
+ mov r9, r1\n\
+ b _08018C6A\n\
+ .align 2, 0\n\
_08018C28: .4byte gBattlescriptCurrInstr\n\
_08018C2C: .4byte BattleScript_FlashFireBoost_PPLoss\n\
_08018C30:\n\
- ldr r0, _08018C4C @ =gBattleCommunication\n\
- strb r4, [r0, 0x5]\n\
- ldr r1, _08018C50 @ =gProtectStructs\n\
- ldr r0, _08018C54 @ =gBankAttacker\n\
- ldrb r0, [r0]\n\
- lsls r0, 4\n\
- adds r0, r1\n\
- ldrb r0, [r0, 0x2]\n\
- lsls r0, 28\n\
- cmp r0, 0\n\
- bge _08018C60\n\
- ldr r1, _08018C58 @ =gBattlescriptCurrInstr\n\
- ldr r0, _08018C5C @ =BattleScript_FlashFireBoost\n\
- b _08018C64\n\
- .align 2, 0\n\
+ ldr r0, _08018C4C @ =gBattleCommunication\n\
+ strb r4, [r0, 0x5]\n\
+ ldr r1, _08018C50 @ =gProtectStructs\n\
+ ldr r0, _08018C54 @ =gBankAttacker\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 4\n\
+ adds r0, r1\n\
+ ldrb r0, [r0, 0x2]\n\
+ lsls r0, 28\n\
+ cmp r0, 0\n\
+ bge _08018C60\n\
+ ldr r1, _08018C58 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08018C5C @ =BattleScript_FlashFireBoost\n\
+ b _08018C64\n\
+ .align 2, 0\n\
_08018C4C: .4byte gBattleCommunication\n\
_08018C50: .4byte gProtectStructs\n\
_08018C54: .4byte gBankAttacker\n\
_08018C58: .4byte gBattlescriptCurrInstr\n\
_08018C5C: .4byte BattleScript_FlashFireBoost\n\
_08018C60:\n\
- ldr r1, _08018CA4 @ =gBattlescriptCurrInstr\n\
- ldr r0, _08018CA8 @ =BattleScript_FlashFireBoost_PPLoss\n\
+ ldr r1, _08018CA4 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08018CA8 @ =BattleScript_FlashFireBoost_PPLoss\n\
_08018C64:\n\
- str r0, [r1]\n\
- movs r2, 0x2\n\
+ str r0, [r1]\n\
+ movs r2, 0x2\n\
_08018C68:\n\
- mov r9, r2\n\
+ mov r9, r2\n\
_08018C6A:\n\
- mov r3, r9\n\
- cmp r3, 0x1\n\
- beq _08018C74\n\
- bl _08019F76\n\
+ mov r3, r9\n\
+ cmp r3, 0x1\n\
+ beq _08018C74\n\
+ bl _08019F76\n\
_08018C74:\n\
- ldr r1, _08018CAC @ =gBattleMons\n\
- movs r0, 0x58\n\
- mov r5, r10\n\
- muls r5, r0\n\
- adds r0, r5, 0\n\
- adds r1, r0, r1\n\
- ldrh r0, [r1, 0x2C]\n\
- ldrh r2, [r1, 0x28]\n\
- cmp r0, r2\n\
- bne _08018CD0\n\
- ldr r1, _08018CB0 @ =gProtectStructs\n\
- ldr r0, _08018CB4 @ =gBankAttacker\n\
- ldrb r0, [r0]\n\
- lsls r0, 4\n\
- adds r0, r1\n\
- ldrb r0, [r0, 0x2]\n\
- lsls r0, 28\n\
- cmp r0, 0\n\
- bge _08018CBC\n\
- ldr r1, _08018CA4 @ =gBattlescriptCurrInstr\n\
- ldr r0, _08018CB8 @ =BattleScript_MoveHPDrain_FullHP\n\
- str r0, [r1]\n\
- bl _08019F76\n\
- .align 2, 0\n\
+ ldr r1, _08018CAC @ =gBattleMons\n\
+ movs r0, 0x58\n\
+ mov r5, r10\n\
+ muls r5, r0\n\
+ adds r0, r5, 0\n\
+ adds r1, r0, r1\n\
+ ldrh r0, [r1, 0x2C]\n\
+ ldrh r2, [r1, 0x28]\n\
+ cmp r0, r2\n\
+ bne _08018CD0\n\
+ ldr r1, _08018CB0 @ =gProtectStructs\n\
+ ldr r0, _08018CB4 @ =gBankAttacker\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 4\n\
+ adds r0, r1\n\
+ ldrb r0, [r0, 0x2]\n\
+ lsls r0, 28\n\
+ cmp r0, 0\n\
+ bge _08018CBC\n\
+ ldr r1, _08018CA4 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08018CB8 @ =BattleScript_MoveHPDrain_FullHP\n\
+ str r0, [r1]\n\
+ bl _08019F76\n\
+ .align 2, 0\n\
_08018CA4: .4byte gBattlescriptCurrInstr\n\
_08018CA8: .4byte BattleScript_FlashFireBoost_PPLoss\n\
_08018CAC: .4byte gBattleMons\n\
@@ -3402,178 +3402,178 @@ _08018CB0: .4byte gProtectStructs\n\
_08018CB4: .4byte gBankAttacker\n\
_08018CB8: .4byte BattleScript_MoveHPDrain_FullHP\n\
_08018CBC:\n\
- ldr r1, _08018CC8 @ =gBattlescriptCurrInstr\n\
- ldr r0, _08018CCC @ =BattleScript_MoveHPDrain_FullHP_PPLoss\n\
- str r0, [r1]\n\
- bl _08019F76\n\
- .align 2, 0\n\
+ ldr r1, _08018CC8 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08018CCC @ =BattleScript_MoveHPDrain_FullHP_PPLoss\n\
+ str r0, [r1]\n\
+ bl _08019F76\n\
+ .align 2, 0\n\
_08018CC8: .4byte gBattlescriptCurrInstr\n\
_08018CCC: .4byte BattleScript_MoveHPDrain_FullHP_PPLoss\n\
_08018CD0:\n\
- ldr r2, _08018CEC @ =gBattleMoveDamage\n\
- ldrh r0, [r1, 0x2C]\n\
- lsrs r0, 2\n\
- str r0, [r2]\n\
- cmp r0, 0\n\
- bne _08018CE0\n\
- mov r3, r9\n\
- str r3, [r2]\n\
+ ldr r2, _08018CEC @ =gBattleMoveDamage\n\
+ ldrh r0, [r1, 0x2C]\n\
+ lsrs r0, 2\n\
+ str r0, [r2]\n\
+ cmp r0, 0\n\
+ bne _08018CE0\n\
+ mov r3, r9\n\
+ str r3, [r2]\n\
_08018CE0:\n\
- ldr r0, [r2]\n\
- negs r0, r0\n\
- str r0, [r2]\n\
- bl _08019F76\n\
- .align 2, 0\n\
+ ldr r0, [r2]\n\
+ negs r0, r0\n\
+ str r0, [r2]\n\
+ bl _08019F76\n\
+ .align 2, 0\n\
_08018CEC: .4byte gBattleMoveDamage\n\
_08018CF0:\n\
- mov r5, r8\n\
- ldrb r0, [r5]\n\
- subs r0, 0x9\n\
- cmp r0, 0x2F\n\
- bls _08018CFE\n\
- bl _08019F76\n\
+ mov r5, r8\n\
+ ldrb r0, [r5]\n\
+ subs r0, 0x9\n\
+ cmp r0, 0x2F\n\
+ bls _08018CFE\n\
+ bl _08019F76\n\
_08018CFE:\n\
- lsls r0, 2\n\
- ldr r1, _08018D08 @ =_08018D0C\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .align 2, 0\n\
+ lsls r0, 2\n\
+ ldr r1, _08018D08 @ =_08018D0C\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
_08018D08: .4byte _08018D0C\n\
- .align 2, 0\n\
+ .align 2, 0\n\
_08018D0C:\n\
- .4byte _08019128\n\
- .4byte _08019F76\n\
- .4byte _08019F76\n\
- .4byte _08019F76\n\
- .4byte _08019F76\n\
- .4byte _08019F76\n\
- .4byte _08019F76\n\
- .4byte _08018DCC\n\
- .4byte _08019F76\n\
- .4byte _08019F76\n\
- .4byte _08019F76\n\
- .4byte _08019F76\n\
- .4byte _08019F76\n\
- .4byte _08019F76\n\
- .4byte _08019F76\n\
- .4byte _08018E94\n\
- .4byte _08019F76\n\
- .4byte _08019F76\n\
- .4byte _08018F54\n\
- .4byte _08019F76\n\
- .4byte _08019F76\n\
- .4byte _08019F76\n\
- .4byte _08019F76\n\
- .4byte _08019F76\n\
- .4byte _08019F76\n\
- .4byte _08019F76\n\
- .4byte _08019F76\n\
- .4byte _08019F76\n\
- .4byte _08019F76\n\
- .4byte _0801904C\n\
- .4byte _08019F76\n\
- .4byte _08019F76\n\
- .4byte _08019F76\n\
- .4byte _08019F76\n\
- .4byte _08019F76\n\
- .4byte _08019F76\n\
- .4byte _08019F76\n\
- .4byte _08019F76\n\
- .4byte _08019F76\n\
- .4byte _08019F76\n\
- .4byte _08019204\n\
- .4byte _08019F76\n\
- .4byte _08019F76\n\
- .4byte _08019F76\n\
- .4byte _08019F76\n\
- .4byte _08019F76\n\
- .4byte _08019F76\n\
- .4byte _080192E0\n\
+ .4byte _08019128\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08018DCC\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08018E94\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08018F54\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _0801904C\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019204\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _080192E0\n\
_08018DCC:\n\
- ldr r0, _08018E74 @ =gBattleMoveFlags\n\
- ldrb r1, [r0]\n\
- movs r0, 0x29\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08018DDC\n\
- bl _08019F76\n\
+ ldr r0, _08018E74 @ =gBattleMoveFlags\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x29\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08018DDC\n\
+ bl _08019F76\n\
_08018DDC:\n\
- cmp r3, 0xA5\n\
- bne _08018DE4\n\
- bl _08019F76\n\
+ cmp r3, 0xA5\n\
+ bne _08018DE4\n\
+ bl _08019F76\n\
_08018DE4:\n\
- ldr r0, _08018E78 @ =gBattleMoves\n\
- lsls r1, r3, 1\n\
- adds r1, r3\n\
- lsls r1, 2\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x1]\n\
- cmp r0, 0\n\
- bne _08018DF8\n\
- bl _08019F76\n\
+ ldr r0, _08018E78 @ =gBattleMoves\n\
+ lsls r1, r3, 1\n\
+ adds r1, r3\n\
+ lsls r1, 2\n\
+ adds r1, r0\n\
+ ldrb r0, [r1, 0x1]\n\
+ cmp r0, 0\n\
+ bne _08018DF8\n\
+ bl _08019F76\n\
_08018DF8:\n\
- ldr r2, _08018E7C @ =gSpecialStatuses\n\
- ldr r0, _08018E80 @ =gBankTarget\n\
- ldrb r1, [r0]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r1, r0, 2\n\
- adds r0, r2, 0\n\
- adds r0, 0x8\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _08018E20\n\
- adds r0, r2, 0\n\
- adds r0, 0xC\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _08018E20\n\
- bl _08019F76\n\
+ ldr r2, _08018E7C @ =gSpecialStatuses\n\
+ ldr r0, _08018E80 @ =gBankTarget\n\
+ ldrb r1, [r0]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r1, r0, 2\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x8\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _08018E20\n\
+ adds r0, r2, 0\n\
+ adds r0, 0xC\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _08018E20\n\
+ bl _08019F76\n\
_08018E20:\n\
- ldr r1, _08018E84 @ =gBattleMons\n\
- movs r0, 0x58\n\
- mov r2, r10\n\
- muls r2, r0\n\
- adds r0, r2, 0\n\
- adds r1, r0, r1\n\
- adds r3, r1, 0\n\
- adds r3, 0x21\n\
- ldrb r0, [r3]\n\
- cmp r0, r4\n\
- bne _08018E3A\n\
- bl _08019F76\n\
+ ldr r1, _08018E84 @ =gBattleMons\n\
+ movs r0, 0x58\n\
+ mov r2, r10\n\
+ muls r2, r0\n\
+ adds r0, r2, 0\n\
+ adds r1, r0, r1\n\
+ adds r3, r1, 0\n\
+ adds r3, 0x21\n\
+ ldrb r0, [r3]\n\
+ cmp r0, r4\n\
+ bne _08018E3A\n\
+ bl _08019F76\n\
_08018E3A:\n\
- adds r2, r1, 0\n\
- adds r2, 0x22\n\
- ldrb r0, [r2]\n\
- cmp r0, r4\n\
- bne _08018E48\n\
- bl _08019F76\n\
+ adds r2, r1, 0\n\
+ adds r2, 0x22\n\
+ ldrb r0, [r2]\n\
+ cmp r0, r4\n\
+ bne _08018E48\n\
+ bl _08019F76\n\
_08018E48:\n\
- ldrh r0, [r1, 0x28]\n\
- cmp r0, 0\n\
- bne _08018E52\n\
- bl _08019F76\n\
+ ldrh r0, [r1, 0x28]\n\
+ cmp r0, 0\n\
+ bne _08018E52\n\
+ bl _08019F76\n\
_08018E52:\n\
- strb r4, [r3]\n\
- strb r4, [r2]\n\
- ldr r1, _08018E88 @ =gBattleTextBuff1\n\
- movs r0, 0xFD\n\
- strb r0, [r1]\n\
- movs r0, 0x3\n\
- strb r0, [r1, 0x1]\n\
- strb r4, [r1, 0x2]\n\
- movs r0, 0xFF\n\
- strb r0, [r1, 0x3]\n\
- bl b_movescr_stack_push_cursor\n\
- ldr r1, _08018E8C @ =gBattlescriptCurrInstr\n\
- ldr r0, _08018E90 @ =BattleScript_ColorChangeActivates\n\
- str r0, [r1]\n\
- bl _08019F22\n\
- .align 2, 0\n\
+ strb r4, [r3]\n\
+ strb r4, [r2]\n\
+ ldr r1, _08018E88 @ =gBattleTextBuff1\n\
+ movs r0, 0xFD\n\
+ strb r0, [r1]\n\
+ movs r0, 0x3\n\
+ strb r0, [r1, 0x1]\n\
+ strb r4, [r1, 0x2]\n\
+ movs r0, 0xFF\n\
+ strb r0, [r1, 0x3]\n\
+ bl b_movescr_stack_push_cursor\n\
+ ldr r1, _08018E8C @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08018E90 @ =BattleScript_ColorChangeActivates\n\
+ str r0, [r1]\n\
+ bl _08019F22\n\
+ .align 2, 0\n\
_08018E74: .4byte gBattleMoveFlags\n\
_08018E78: .4byte gBattleMoves\n\
_08018E7C: .4byte gSpecialStatuses\n\
@@ -3583,81 +3583,81 @@ _08018E88: .4byte gBattleTextBuff1\n\
_08018E8C: .4byte gBattlescriptCurrInstr\n\
_08018E90: .4byte BattleScript_ColorChangeActivates\n\
_08018E94:\n\
- ldr r0, _08018F2C @ =gBattleMoveFlags\n\
- ldrb r1, [r0]\n\
- movs r0, 0x29\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08018EA4\n\
- bl _08019F76\n\
+ ldr r0, _08018F2C @ =gBattleMoveFlags\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x29\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08018EA4\n\
+ bl _08019F76\n\
_08018EA4:\n\
- ldr r1, _08018F30 @ =gBattleMons\n\
- ldr r0, _08018F34 @ =gBankAttacker\n\
- ldrb r2, [r0]\n\
- movs r0, 0x58\n\
- muls r0, r2\n\
- adds r4, r0, r1\n\
- ldrh r0, [r4, 0x28]\n\
- cmp r0, 0\n\
- bne _08018EBA\n\
- bl _08019F76\n\
+ ldr r1, _08018F30 @ =gBattleMons\n\
+ ldr r0, _08018F34 @ =gBankAttacker\n\
+ ldrb r2, [r0]\n\
+ movs r0, 0x58\n\
+ muls r0, r2\n\
+ adds r4, r0, r1\n\
+ ldrh r0, [r4, 0x28]\n\
+ cmp r0, 0\n\
+ bne _08018EBA\n\
+ bl _08019F76\n\
_08018EBA:\n\
- ldr r0, _08018F38 @ =gProtectStructs\n\
- lsls r1, r2, 4\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x1]\n\
- lsls r0, 31\n\
- cmp r0, 0\n\
- beq _08018ECC\n\
- bl _08019F76\n\
+ ldr r0, _08018F38 @ =gProtectStructs\n\
+ lsls r1, r2, 4\n\
+ adds r1, r0\n\
+ ldrb r0, [r1, 0x1]\n\
+ lsls r0, 31\n\
+ cmp r0, 0\n\
+ beq _08018ECC\n\
+ bl _08019F76\n\
_08018ECC:\n\
- ldr r2, _08018F3C @ =gSpecialStatuses\n\
- ldr r0, _08018F40 @ =gBankTarget\n\
- ldrb r1, [r0]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r1, r0, 2\n\
- adds r0, r2, 0\n\
- adds r0, 0x8\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _08018EF4\n\
- adds r0, r2, 0\n\
- adds r0, 0xC\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _08018EF4\n\
- bl _08019F76\n\
+ ldr r2, _08018F3C @ =gSpecialStatuses\n\
+ ldr r0, _08018F40 @ =gBankTarget\n\
+ ldrb r1, [r0]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r1, r0, 2\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x8\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _08018EF4\n\
+ adds r0, r2, 0\n\
+ adds r0, 0xC\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _08018EF4\n\
+ bl _08019F76\n\
_08018EF4:\n\
- ldr r1, _08018F44 @ =gBattleMoves\n\
- lsls r0, r3, 1\n\
- adds r0, r3\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r1, [r0, 0x8]\n\
- movs r2, 0x1\n\
- adds r0, r2, 0\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08018F0E\n\
- bl _08019F76\n\
+ ldr r1, _08018F44 @ =gBattleMoves\n\
+ lsls r0, r3, 1\n\
+ adds r0, r3\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r1, [r0, 0x8]\n\
+ movs r2, 0x1\n\
+ adds r0, r2, 0\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08018F0E\n\
+ bl _08019F76\n\
_08018F0E:\n\
- ldr r1, _08018F48 @ =gBattleMoveDamage\n\
- ldrh r0, [r4, 0x2C]\n\
- lsrs r0, 4\n\
- str r0, [r1]\n\
- cmp r0, 0\n\
- bne _08018F1C\n\
- str r2, [r1]\n\
+ ldr r1, _08018F48 @ =gBattleMoveDamage\n\
+ ldrh r0, [r4, 0x2C]\n\
+ lsrs r0, 4\n\
+ str r0, [r1]\n\
+ cmp r0, 0\n\
+ bne _08018F1C\n\
+ str r2, [r1]\n\
_08018F1C:\n\
- bl b_movescr_stack_push_cursor\n\
- ldr r1, _08018F4C @ =gBattlescriptCurrInstr\n\
- ldr r0, _08018F50 @ =BattleScript_RoughSkinActivates\n\
- str r0, [r1]\n\
- bl _08019F22\n\
- .align 2, 0\n\
+ bl b_movescr_stack_push_cursor\n\
+ ldr r1, _08018F4C @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08018F50 @ =BattleScript_RoughSkinActivates\n\
+ str r0, [r1]\n\
+ bl _08019F22\n\
+ .align 2, 0\n\
_08018F2C: .4byte gBattleMoveFlags\n\
_08018F30: .4byte gBattleMons\n\
_08018F34: .4byte gBankAttacker\n\
@@ -3669,106 +3669,106 @@ _08018F48: .4byte gBattleMoveDamage\n\
_08018F4C: .4byte gBattlescriptCurrInstr\n\
_08018F50: .4byte BattleScript_RoughSkinActivates\n\
_08018F54:\n\
- ldr r0, _08019020 @ =gBattleMoveFlags\n\
- ldrb r1, [r0]\n\
- movs r0, 0x29\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08018F64\n\
- bl _08019F76\n\
+ ldr r0, _08019020 @ =gBattleMoveFlags\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x29\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08018F64\n\
+ bl _08019F76\n\
_08018F64:\n\
- ldr r1, _08019024 @ =gBattleMons\n\
- ldr r0, _08019028 @ =gBankAttacker\n\
- ldrb r2, [r0]\n\
- movs r0, 0x58\n\
- muls r0, r2\n\
- adds r0, r1\n\
- ldrh r0, [r0, 0x28]\n\
- cmp r0, 0\n\
- bne _08018F7A\n\
- bl _08019F76\n\
+ ldr r1, _08019024 @ =gBattleMons\n\
+ ldr r0, _08019028 @ =gBankAttacker\n\
+ ldrb r2, [r0]\n\
+ movs r0, 0x58\n\
+ muls r0, r2\n\
+ adds r0, r1\n\
+ ldrh r0, [r0, 0x28]\n\
+ cmp r0, 0\n\
+ bne _08018F7A\n\
+ bl _08019F76\n\
_08018F7A:\n\
- ldr r0, _0801902C @ =gProtectStructs\n\
- lsls r1, r2, 4\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x1]\n\
- lsls r0, 31\n\
- cmp r0, 0\n\
- beq _08018F8C\n\
- bl _08019F76\n\
+ ldr r0, _0801902C @ =gProtectStructs\n\
+ lsls r1, r2, 4\n\
+ adds r1, r0\n\
+ ldrb r0, [r1, 0x1]\n\
+ lsls r0, 31\n\
+ cmp r0, 0\n\
+ beq _08018F8C\n\
+ bl _08019F76\n\
_08018F8C:\n\
- ldr r2, _08019030 @ =gSpecialStatuses\n\
- ldr r0, _08019034 @ =gBankTarget\n\
- ldrb r1, [r0]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r1, r0, 2\n\
- adds r0, r2, 0\n\
- adds r0, 0x8\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _08018FB4\n\
- adds r0, r2, 0\n\
- adds r0, 0xC\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _08018FB4\n\
- bl _08019F76\n\
+ ldr r2, _08019030 @ =gSpecialStatuses\n\
+ ldr r0, _08019034 @ =gBankTarget\n\
+ ldrb r1, [r0]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r1, r0, 2\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x8\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _08018FB4\n\
+ adds r0, r2, 0\n\
+ adds r0, 0xC\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _08018FB4\n\
+ bl _08019F76\n\
_08018FB4:\n\
- ldr r1, _08019038 @ =gBattleMoves\n\
- lsls r0, r3, 1\n\
- adds r0, r3\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r1, [r0, 0x8]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08018FCC\n\
- bl _08019F76\n\
+ ldr r1, _08019038 @ =gBattleMoves\n\
+ lsls r0, r3, 1\n\
+ adds r0, r3\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r1, [r0, 0x8]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08018FCC\n\
+ bl _08019F76\n\
_08018FCC:\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- movs r1, 0xA\n\
- bl __umodsi3\n\
- lsls r0, 16\n\
- cmp r0, 0\n\
- beq _08018FE4\n\
- bl _08019F76\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0xA\n\
+ bl __umodsi3\n\
+ lsls r0, 16\n\
+ cmp r0, 0\n\
+ beq _08018FE4\n\
+ bl _08019F76\n\
_08018FE4:\n\
- ldr r5, _0801903C @ =gBattleCommunication\n\
- movs r4, 0x3\n\
+ ldr r5, _0801903C @ =gBattleCommunication\n\
+ movs r4, 0x3\n\
_08018FE8:\n\
- bl Random\n\
- ands r0, r4\n\
- strb r0, [r5, 0x3]\n\
- cmp r0, 0\n\
- beq _08018FE8\n\
- ldr r1, _0801903C @ =gBattleCommunication\n\
- ldrb r0, [r1, 0x3]\n\
- cmp r0, 0x3\n\
- bne _08019000\n\
- adds r0, 0x2\n\
- strb r0, [r1, 0x3]\n\
+ bl Random\n\
+ ands r0, r4\n\
+ strb r0, [r5, 0x3]\n\
+ cmp r0, 0\n\
+ beq _08018FE8\n\
+ ldr r1, _0801903C @ =gBattleCommunication\n\
+ ldrb r0, [r1, 0x3]\n\
+ cmp r0, 0x3\n\
+ bne _08019000\n\
+ adds r0, 0x2\n\
+ strb r0, [r1, 0x3]\n\
_08019000:\n\
- ldrb r0, [r1, 0x3]\n\
- adds r0, 0x40\n\
- strb r0, [r1, 0x3]\n\
- bl b_movescr_stack_push_cursor\n\
- ldr r1, _08019040 @ =gBattlescriptCurrInstr\n\
- ldr r0, _08019044 @ =BattleScript_ApplySecondaryEffect\n\
- str r0, [r1]\n\
- ldr r2, _08019048 @ =gHitMarker\n\
- ldr r0, [r2]\n\
- movs r1, 0x80\n\
- lsls r1, 6\n\
- orrs r0, r1\n\
- str r0, [r2]\n\
- bl _08019F22\n\
- .align 2, 0\n\
+ ldrb r0, [r1, 0x3]\n\
+ adds r0, 0x40\n\
+ strb r0, [r1, 0x3]\n\
+ bl b_movescr_stack_push_cursor\n\
+ ldr r1, _08019040 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08019044 @ =BattleScript_ApplySecondaryEffect\n\
+ str r0, [r1]\n\
+ ldr r2, _08019048 @ =gHitMarker\n\
+ ldr r0, [r2]\n\
+ movs r1, 0x80\n\
+ lsls r1, 6\n\
+ orrs r0, r1\n\
+ str r0, [r2]\n\
+ bl _08019F22\n\
+ .align 2, 0\n\
_08019020: .4byte gBattleMoveFlags\n\
_08019024: .4byte gBattleMons\n\
_08019028: .4byte gBankAttacker\n\
@@ -3781,91 +3781,91 @@ _08019040: .4byte gBattlescriptCurrInstr\n\
_08019044: .4byte BattleScript_ApplySecondaryEffect\n\
_08019048: .4byte gHitMarker\n\
_0801904C:\n\
- ldr r0, _080190FC @ =gBattleMoveFlags\n\
- ldrb r1, [r0]\n\
- movs r0, 0x29\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0801905C\n\
- bl _08019F76\n\
+ ldr r0, _080190FC @ =gBattleMoveFlags\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x29\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0801905C\n\
+ bl _08019F76\n\
_0801905C:\n\
- ldr r1, _08019100 @ =gBattleMons\n\
- ldr r0, _08019104 @ =gBankAttacker\n\
- ldrb r2, [r0]\n\
- movs r0, 0x58\n\
- muls r0, r2\n\
- adds r0, r1\n\
- ldrh r0, [r0, 0x28]\n\
- cmp r0, 0\n\
- bne _08019072\n\
- bl _08019F76\n\
+ ldr r1, _08019100 @ =gBattleMons\n\
+ ldr r0, _08019104 @ =gBankAttacker\n\
+ ldrb r2, [r0]\n\
+ movs r0, 0x58\n\
+ muls r0, r2\n\
+ adds r0, r1\n\
+ ldrh r0, [r0, 0x28]\n\
+ cmp r0, 0\n\
+ bne _08019072\n\
+ bl _08019F76\n\
_08019072:\n\
- ldr r0, _08019108 @ =gProtectStructs\n\
- lsls r1, r2, 4\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x1]\n\
- lsls r0, 31\n\
- cmp r0, 0\n\
- beq _08019084\n\
- bl _08019F76\n\
+ ldr r0, _08019108 @ =gProtectStructs\n\
+ lsls r1, r2, 4\n\
+ adds r1, r0\n\
+ ldrb r0, [r1, 0x1]\n\
+ lsls r0, 31\n\
+ cmp r0, 0\n\
+ beq _08019084\n\
+ bl _08019F76\n\
_08019084:\n\
- ldr r2, _0801910C @ =gSpecialStatuses\n\
- ldr r0, _08019110 @ =gBankTarget\n\
- ldrb r1, [r0]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r1, r0, 2\n\
- adds r0, r2, 0\n\
- adds r0, 0x8\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _080190AC\n\
- adds r0, r2, 0\n\
- adds r0, 0xC\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _080190AC\n\
- bl _08019F76\n\
+ ldr r2, _0801910C @ =gSpecialStatuses\n\
+ ldr r0, _08019110 @ =gBankTarget\n\
+ ldrb r1, [r0]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r1, r0, 2\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x8\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _080190AC\n\
+ adds r0, r2, 0\n\
+ adds r0, 0xC\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _080190AC\n\
+ bl _08019F76\n\
_080190AC:\n\
- ldr r1, _08019114 @ =gBattleMoves\n\
- lsls r0, r3, 1\n\
- adds r0, r3\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r1, [r0, 0x8]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _080190C4\n\
- bl _08019F76\n\
+ ldr r1, _08019114 @ =gBattleMoves\n\
+ lsls r0, r3, 1\n\
+ adds r0, r3\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r1, [r0, 0x8]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _080190C4\n\
+ bl _08019F76\n\
_080190C4:\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- movs r1, 0x3\n\
- bl __umodsi3\n\
- lsls r0, 16\n\
- cmp r0, 0\n\
- beq _080190DC\n\
- bl _08019F76\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0x3\n\
+ bl __umodsi3\n\
+ lsls r0, 16\n\
+ cmp r0, 0\n\
+ beq _080190DC\n\
+ bl _08019F76\n\
_080190DC:\n\
- ldr r1, _08019118 @ =gBattleCommunication\n\
- movs r0, 0x42\n\
- strb r0, [r1, 0x3]\n\
- bl b_movescr_stack_push_cursor\n\
- ldr r1, _0801911C @ =gBattlescriptCurrInstr\n\
- ldr r0, _08019120 @ =BattleScript_ApplySecondaryEffect\n\
- str r0, [r1]\n\
- ldr r2, _08019124 @ =gHitMarker\n\
- ldr r0, [r2]\n\
- movs r1, 0x80\n\
- lsls r1, 6\n\
- orrs r0, r1\n\
- str r0, [r2]\n\
- bl _08019F22\n\
- .align 2, 0\n\
+ ldr r1, _08019118 @ =gBattleCommunication\n\
+ movs r0, 0x42\n\
+ strb r0, [r1, 0x3]\n\
+ bl b_movescr_stack_push_cursor\n\
+ ldr r1, _0801911C @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08019120 @ =BattleScript_ApplySecondaryEffect\n\
+ str r0, [r1]\n\
+ ldr r2, _08019124 @ =gHitMarker\n\
+ ldr r0, [r2]\n\
+ movs r1, 0x80\n\
+ lsls r1, 6\n\
+ orrs r0, r1\n\
+ str r0, [r2]\n\
+ bl _08019F22\n\
+ .align 2, 0\n\
_080190FC: .4byte gBattleMoveFlags\n\
_08019100: .4byte gBattleMons\n\
_08019104: .4byte gBankAttacker\n\
@@ -3878,91 +3878,91 @@ _0801911C: .4byte gBattlescriptCurrInstr\n\
_08019120: .4byte BattleScript_ApplySecondaryEffect\n\
_08019124: .4byte gHitMarker\n\
_08019128:\n\
- ldr r0, _080191D8 @ =gBattleMoveFlags\n\
- ldrb r1, [r0]\n\
- movs r0, 0x29\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08019138\n\
- bl _08019F76\n\
+ ldr r0, _080191D8 @ =gBattleMoveFlags\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x29\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08019138\n\
+ bl _08019F76\n\
_08019138:\n\
- ldr r1, _080191DC @ =gBattleMons\n\
- ldr r0, _080191E0 @ =gBankAttacker\n\
- ldrb r2, [r0]\n\
- movs r0, 0x58\n\
- muls r0, r2\n\
- adds r0, r1\n\
- ldrh r0, [r0, 0x28]\n\
- cmp r0, 0\n\
- bne _0801914E\n\
- bl _08019F76\n\
+ ldr r1, _080191DC @ =gBattleMons\n\
+ ldr r0, _080191E0 @ =gBankAttacker\n\
+ ldrb r2, [r0]\n\
+ movs r0, 0x58\n\
+ muls r0, r2\n\
+ adds r0, r1\n\
+ ldrh r0, [r0, 0x28]\n\
+ cmp r0, 0\n\
+ bne _0801914E\n\
+ bl _08019F76\n\
_0801914E:\n\
- ldr r0, _080191E4 @ =gProtectStructs\n\
- lsls r1, r2, 4\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x1]\n\
- lsls r0, 31\n\
- cmp r0, 0\n\
- beq _08019160\n\
- bl _08019F76\n\
+ ldr r0, _080191E4 @ =gProtectStructs\n\
+ lsls r1, r2, 4\n\
+ adds r1, r0\n\
+ ldrb r0, [r1, 0x1]\n\
+ lsls r0, 31\n\
+ cmp r0, 0\n\
+ beq _08019160\n\
+ bl _08019F76\n\
_08019160:\n\
- ldr r2, _080191E8 @ =gSpecialStatuses\n\
- ldr r0, _080191EC @ =gBankTarget\n\
- ldrb r1, [r0]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r1, r0, 2\n\
- adds r0, r2, 0\n\
- adds r0, 0x8\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _08019188\n\
- adds r0, r2, 0\n\
- adds r0, 0xC\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _08019188\n\
- bl _08019F76\n\
+ ldr r2, _080191E8 @ =gSpecialStatuses\n\
+ ldr r0, _080191EC @ =gBankTarget\n\
+ ldrb r1, [r0]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r1, r0, 2\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x8\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _08019188\n\
+ adds r0, r2, 0\n\
+ adds r0, 0xC\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _08019188\n\
+ bl _08019F76\n\
_08019188:\n\
- ldr r1, _080191F0 @ =gBattleMoves\n\
- lsls r0, r3, 1\n\
- adds r0, r3\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r1, [r0, 0x8]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _080191A0\n\
- bl _08019F76\n\
+ ldr r1, _080191F0 @ =gBattleMoves\n\
+ lsls r0, r3, 1\n\
+ adds r0, r3\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r1, [r0, 0x8]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _080191A0\n\
+ bl _08019F76\n\
_080191A0:\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- movs r1, 0x3\n\
- bl __umodsi3\n\
- lsls r0, 16\n\
- cmp r0, 0\n\
- beq _080191B8\n\
- bl _08019F76\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0x3\n\
+ bl __umodsi3\n\
+ lsls r0, 16\n\
+ cmp r0, 0\n\
+ beq _080191B8\n\
+ bl _08019F76\n\
_080191B8:\n\
- ldr r1, _080191F4 @ =gBattleCommunication\n\
- movs r0, 0x45\n\
- strb r0, [r1, 0x3]\n\
- bl b_movescr_stack_push_cursor\n\
- ldr r1, _080191F8 @ =gBattlescriptCurrInstr\n\
- ldr r0, _080191FC @ =BattleScript_ApplySecondaryEffect\n\
- str r0, [r1]\n\
- ldr r2, _08019200 @ =gHitMarker\n\
- ldr r0, [r2]\n\
- movs r1, 0x80\n\
- lsls r1, 6\n\
- orrs r0, r1\n\
- str r0, [r2]\n\
- bl _08019F22\n\
- .align 2, 0\n\
+ ldr r1, _080191F4 @ =gBattleCommunication\n\
+ movs r0, 0x45\n\
+ strb r0, [r1, 0x3]\n\
+ bl b_movescr_stack_push_cursor\n\
+ ldr r1, _080191F8 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _080191FC @ =BattleScript_ApplySecondaryEffect\n\
+ str r0, [r1]\n\
+ ldr r2, _08019200 @ =gHitMarker\n\
+ ldr r0, [r2]\n\
+ movs r1, 0x80\n\
+ lsls r1, 6\n\
+ orrs r0, r1\n\
+ str r0, [r2]\n\
+ bl _08019F22\n\
+ .align 2, 0\n\
_080191D8: .4byte gBattleMoveFlags\n\
_080191DC: .4byte gBattleMons\n\
_080191E0: .4byte gBankAttacker\n\
@@ -3975,91 +3975,91 @@ _080191F8: .4byte gBattlescriptCurrInstr\n\
_080191FC: .4byte BattleScript_ApplySecondaryEffect\n\
_08019200: .4byte gHitMarker\n\
_08019204:\n\
- ldr r0, _080192B4 @ =gBattleMoveFlags\n\
- ldrb r1, [r0]\n\
- movs r0, 0x29\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08019214\n\
- bl _08019F76\n\
+ ldr r0, _080192B4 @ =gBattleMoveFlags\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x29\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08019214\n\
+ bl _08019F76\n\
_08019214:\n\
- ldr r1, _080192B8 @ =gBattleMons\n\
- ldr r0, _080192BC @ =gBankAttacker\n\
- ldrb r2, [r0]\n\
- movs r0, 0x58\n\
- muls r0, r2\n\
- adds r0, r1\n\
- ldrh r0, [r0, 0x28]\n\
- cmp r0, 0\n\
- bne _0801922A\n\
- bl _08019F76\n\
+ ldr r1, _080192B8 @ =gBattleMons\n\
+ ldr r0, _080192BC @ =gBankAttacker\n\
+ ldrb r2, [r0]\n\
+ movs r0, 0x58\n\
+ muls r0, r2\n\
+ adds r0, r1\n\
+ ldrh r0, [r0, 0x28]\n\
+ cmp r0, 0\n\
+ bne _0801922A\n\
+ bl _08019F76\n\
_0801922A:\n\
- ldr r0, _080192C0 @ =gProtectStructs\n\
- lsls r1, r2, 4\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x1]\n\
- lsls r0, 31\n\
- cmp r0, 0\n\
- beq _0801923C\n\
- bl _08019F76\n\
+ ldr r0, _080192C0 @ =gProtectStructs\n\
+ lsls r1, r2, 4\n\
+ adds r1, r0\n\
+ ldrb r0, [r1, 0x1]\n\
+ lsls r0, 31\n\
+ cmp r0, 0\n\
+ beq _0801923C\n\
+ bl _08019F76\n\
_0801923C:\n\
- ldr r1, _080192C4 @ =gBattleMoves\n\
- lsls r0, r3, 1\n\
- adds r0, r3\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r1, [r0, 0x8]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08019254\n\
- bl _08019F76\n\
+ ldr r1, _080192C4 @ =gBattleMoves\n\
+ lsls r0, r3, 1\n\
+ adds r0, r3\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r1, [r0, 0x8]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08019254\n\
+ bl _08019F76\n\
_08019254:\n\
- ldr r2, _080192C8 @ =gSpecialStatuses\n\
- ldr r0, _080192CC @ =gBankTarget\n\
- ldrb r1, [r0]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r1, r0, 2\n\
- adds r0, r2, 0\n\
- adds r0, 0x8\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _0801927C\n\
- adds r0, r2, 0\n\
- adds r0, 0xC\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _0801927C\n\
- bl _08019F76\n\
+ ldr r2, _080192C8 @ =gSpecialStatuses\n\
+ ldr r0, _080192CC @ =gBankTarget\n\
+ ldrb r1, [r0]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r1, r0, 2\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x8\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _0801927C\n\
+ adds r0, r2, 0\n\
+ adds r0, 0xC\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _0801927C\n\
+ bl _08019F76\n\
_0801927C:\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- movs r1, 0x3\n\
- bl __umodsi3\n\
- lsls r0, 16\n\
- cmp r0, 0\n\
- beq _08019294\n\
- bl _08019F76\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0x3\n\
+ bl __umodsi3\n\
+ lsls r0, 16\n\
+ cmp r0, 0\n\
+ beq _08019294\n\
+ bl _08019F76\n\
_08019294:\n\
- ldr r1, _080192D0 @ =gBattleCommunication\n\
- movs r0, 0x43\n\
- strb r0, [r1, 0x3]\n\
- bl b_movescr_stack_push_cursor\n\
- ldr r1, _080192D4 @ =gBattlescriptCurrInstr\n\
- ldr r0, _080192D8 @ =BattleScript_ApplySecondaryEffect\n\
- str r0, [r1]\n\
- ldr r2, _080192DC @ =gHitMarker\n\
- ldr r0, [r2]\n\
- movs r1, 0x80\n\
- lsls r1, 6\n\
- orrs r0, r1\n\
- str r0, [r2]\n\
- bl _08019F22\n\
- .align 2, 0\n\
+ ldr r1, _080192D0 @ =gBattleCommunication\n\
+ movs r0, 0x43\n\
+ strb r0, [r1, 0x3]\n\
+ bl b_movescr_stack_push_cursor\n\
+ ldr r1, _080192D4 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _080192D8 @ =BattleScript_ApplySecondaryEffect\n\
+ str r0, [r1]\n\
+ ldr r2, _080192DC @ =gHitMarker\n\
+ ldr r0, [r2]\n\
+ movs r1, 0x80\n\
+ lsls r1, 6\n\
+ orrs r0, r1\n\
+ str r0, [r2]\n\
+ bl _08019F22\n\
+ .align 2, 0\n\
_080192B4: .4byte gBattleMoveFlags\n\
_080192B8: .4byte gBattleMons\n\
_080192BC: .4byte gBankAttacker\n\
@@ -4072,159 +4072,159 @@ _080192D4: .4byte gBattlescriptCurrInstr\n\
_080192D8: .4byte BattleScript_ApplySecondaryEffect\n\
_080192DC: .4byte gHitMarker\n\
_080192E0:\n\
- ldr r0, _08019420 @ =gBattleMoveFlags\n\
- ldrb r1, [r0]\n\
- movs r0, 0x29\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080192F0\n\
- bl _08019F76\n\
+ ldr r0, _08019420 @ =gBattleMoveFlags\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x29\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080192F0\n\
+ bl _08019F76\n\
_080192F0:\n\
- ldr r5, _08019424 @ =gBattleMons\n\
- ldr r7, _08019428 @ =gBankAttacker\n\
- ldrb r1, [r7]\n\
- movs r6, 0x58\n\
- adds r0, r1, 0\n\
- muls r0, r6\n\
- adds r0, r5\n\
- ldrh r0, [r0, 0x28]\n\
- cmp r0, 0\n\
- bne _08019308\n\
- bl _08019F76\n\
+ ldr r5, _08019424 @ =gBattleMons\n\
+ ldr r7, _08019428 @ =gBankAttacker\n\
+ ldrb r1, [r7]\n\
+ movs r6, 0x58\n\
+ adds r0, r1, 0\n\
+ muls r0, r6\n\
+ adds r0, r5\n\
+ ldrh r0, [r0, 0x28]\n\
+ cmp r0, 0\n\
+ bne _08019308\n\
+ bl _08019F76\n\
_08019308:\n\
- ldr r0, _0801942C @ =gProtectStructs\n\
- lsls r1, 4\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x1]\n\
- lsls r0, 31\n\
- cmp r0, 0\n\
- beq _0801931A\n\
- bl _08019F76\n\
+ ldr r0, _0801942C @ =gProtectStructs\n\
+ lsls r1, 4\n\
+ adds r1, r0\n\
+ ldrb r0, [r1, 0x1]\n\
+ lsls r0, 31\n\
+ cmp r0, 0\n\
+ beq _0801931A\n\
+ bl _08019F76\n\
_0801931A:\n\
- ldr r1, _08019430 @ =gBattleMoves\n\
- lsls r0, r3, 1\n\
- adds r0, r3\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r1, [r0, 0x8]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08019332\n\
- bl _08019F76\n\
+ ldr r1, _08019430 @ =gBattleMoves\n\
+ lsls r0, r3, 1\n\
+ adds r0, r3\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r1, [r0, 0x8]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08019332\n\
+ bl _08019F76\n\
_08019332:\n\
- ldr r3, _08019434 @ =gSpecialStatuses\n\
- ldr r0, _08019438 @ =gBankTarget\n\
- mov r8, r0\n\
- ldrb r1, [r0]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r2, r0, 2\n\
- adds r0, r3, 0\n\
- adds r0, 0x8\n\
- adds r0, r2, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _0801935C\n\
- adds r0, r3, 0\n\
- adds r0, 0xC\n\
- adds r0, r2, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _0801935C\n\
- bl _08019F76\n\
+ ldr r3, _08019434 @ =gSpecialStatuses\n\
+ ldr r0, _08019438 @ =gBankTarget\n\
+ mov r8, r0\n\
+ ldrb r1, [r0]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r2, r0, 2\n\
+ adds r0, r3, 0\n\
+ adds r0, 0x8\n\
+ adds r0, r2, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _0801935C\n\
+ adds r0, r3, 0\n\
+ adds r0, 0xC\n\
+ adds r0, r2, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _0801935C\n\
+ bl _08019F76\n\
_0801935C:\n\
- adds r0, r1, 0\n\
- muls r0, r6\n\
- adds r0, r5\n\
- ldrh r0, [r0, 0x28]\n\
- cmp r0, 0\n\
- bne _0801936C\n\
- bl _08019F76\n\
+ adds r0, r1, 0\n\
+ muls r0, r6\n\
+ adds r0, r5\n\
+ ldrh r0, [r0, 0x28]\n\
+ cmp r0, 0\n\
+ bne _0801936C\n\
+ bl _08019F76\n\
_0801936C:\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- movs r1, 0x3\n\
- bl __umodsi3\n\
- lsls r0, 16\n\
- cmp r0, 0\n\
- beq _08019384\n\
- bl _08019F76\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0x3\n\
+ bl __umodsi3\n\
+ lsls r0, 16\n\
+ cmp r0, 0\n\
+ beq _08019384\n\
+ bl _08019F76\n\
_08019384:\n\
- ldrb r0, [r7]\n\
- muls r0, r6\n\
- adds r0, r5\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, 0xC\n\
- bne _08019396\n\
- bl _08019F76\n\
+ ldrb r0, [r7]\n\
+ muls r0, r6\n\
+ adds r0, r5\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0xC\n\
+ bne _08019396\n\
+ bl _08019F76\n\
_08019396:\n\
- ldr r0, [sp, 0x8]\n\
- ldr r1, [sp, 0x10]\n\
- bl GetGenderFromSpeciesAndPersonality\n\
- adds r4, r0, 0\n\
- ldr r0, [sp, 0xC]\n\
- ldr r1, [sp, 0x14]\n\
- bl GetGenderFromSpeciesAndPersonality\n\
- lsls r4, 24\n\
- lsls r0, 24\n\
- cmp r4, r0\n\
- bne _080193B4\n\
- bl _08019F76\n\
+ ldr r0, [sp, 0x8]\n\
+ ldr r1, [sp, 0x10]\n\
+ bl GetGenderFromSpeciesAndPersonality\n\
+ adds r4, r0, 0\n\
+ ldr r0, [sp, 0xC]\n\
+ ldr r1, [sp, 0x14]\n\
+ bl GetGenderFromSpeciesAndPersonality\n\
+ lsls r4, 24\n\
+ lsls r0, 24\n\
+ cmp r4, r0\n\
+ bne _080193B4\n\
+ bl _08019F76\n\
_080193B4:\n\
- ldrb r0, [r7]\n\
- muls r0, r6\n\
- adds r4, r5, 0\n\
- adds r4, 0x50\n\
- adds r0, r4\n\
- ldr r0, [r0]\n\
- movs r1, 0xF0\n\
- lsls r1, 12\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080193CE\n\
- bl _08019F76\n\
+ ldrb r0, [r7]\n\
+ muls r0, r6\n\
+ adds r4, r5, 0\n\
+ adds r4, 0x50\n\
+ adds r0, r4\n\
+ ldr r0, [r0]\n\
+ movs r1, 0xF0\n\
+ lsls r1, 12\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080193CE\n\
+ bl _08019F76\n\
_080193CE:\n\
- ldr r0, [sp, 0x8]\n\
- ldr r1, [sp, 0x10]\n\
- bl GetGenderFromSpeciesAndPersonality\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0xFF\n\
- bne _080193E2\n\
- bl _08019F76\n\
+ ldr r0, [sp, 0x8]\n\
+ ldr r1, [sp, 0x10]\n\
+ bl GetGenderFromSpeciesAndPersonality\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0xFF\n\
+ bne _080193E2\n\
+ bl _08019F76\n\
_080193E2:\n\
- ldr r0, [sp, 0xC]\n\
- ldr r1, [sp, 0x14]\n\
- bl GetGenderFromSpeciesAndPersonality\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0xFF\n\
- bne _080193F6\n\
- bl _08019F76\n\
+ ldr r0, [sp, 0xC]\n\
+ ldr r1, [sp, 0x14]\n\
+ bl GetGenderFromSpeciesAndPersonality\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0xFF\n\
+ bne _080193F6\n\
+ bl _08019F76\n\
_080193F6:\n\
- ldrb r0, [r7]\n\
- adds r2, r0, 0\n\
- muls r2, r6\n\
- adds r2, r4\n\
- ldr r1, _0801943C @ =gBitTable\n\
- mov r3, r8\n\
- ldrb r0, [r3]\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldr r1, [r0]\n\
- lsls r1, 16\n\
- ldr r0, [r2]\n\
- orrs r0, r1\n\
- str r0, [r2]\n\
- bl b_movescr_stack_push_cursor\n\
- ldr r1, _08019440 @ =gBattlescriptCurrInstr\n\
- ldr r0, _08019444 @ =BattleScript_CuteCharmActivates\n\
- str r0, [r1]\n\
- bl _08019F22\n\
- .align 2, 0\n\
+ ldrb r0, [r7]\n\
+ adds r2, r0, 0\n\
+ muls r2, r6\n\
+ adds r2, r4\n\
+ ldr r1, _0801943C @ =gBitTable\n\
+ mov r3, r8\n\
+ ldrb r0, [r3]\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldr r1, [r0]\n\
+ lsls r1, 16\n\
+ ldr r0, [r2]\n\
+ orrs r0, r1\n\
+ str r0, [r2]\n\
+ bl b_movescr_stack_push_cursor\n\
+ ldr r1, _08019440 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08019444 @ =BattleScript_CuteCharmActivates\n\
+ str r0, [r1]\n\
+ bl _08019F22\n\
+ .align 2, 0\n\
_08019420: .4byte gBattleMoveFlags\n\
_08019424: .4byte gBattleMons\n\
_08019428: .4byte gBankAttacker\n\
@@ -4236,347 +4236,347 @@ _0801943C: .4byte gBitTable\n\
_08019440: .4byte gBattlescriptCurrInstr\n\
_08019444: .4byte BattleScript_CuteCharmActivates\n\
_08019448:\n\
- movs r5, 0\n\
- mov r10, r5\n\
- ldr r0, _0801947C @ =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r10, r0\n\
- bcc _08019458\n\
- bl _08019F76\n\
+ movs r5, 0\n\
+ mov r10, r5\n\
+ ldr r0, _0801947C @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r10, r0\n\
+ bcc _08019458\n\
+ bl _08019F76\n\
_08019458:\n\
- ldr r1, _08019480 @ =gBattleMons\n\
- movs r0, 0x58\n\
- mov r2, r10\n\
- muls r2, r0\n\
- adds r0, r2, 0\n\
- adds r0, r1\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- subs r0, 0x7\n\
- adds r2, r1, 0\n\
- cmp r0, 0x41\n\
- bls _08019472\n\
- b _080196D6\n\
+ ldr r1, _08019480 @ =gBattleMons\n\
+ movs r0, 0x58\n\
+ mov r2, r10\n\
+ muls r2, r0\n\
+ adds r0, r2, 0\n\
+ adds r0, r1\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ subs r0, 0x7\n\
+ adds r2, r1, 0\n\
+ cmp r0, 0x41\n\
+ bls _08019472\n\
+ b _080196D6\n\
_08019472:\n\
- lsls r0, 2\n\
- ldr r1, _08019484 @ =_08019488\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .align 2, 0\n\
+ lsls r0, 2\n\
+ ldr r1, _08019484 @ =_08019488\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
_0801947C: .4byte gNoOfAllBanks\n\
_08019480: .4byte gBattleMons\n\
_08019484: .4byte _08019488\n\
- .align 2, 0\n\
+ .align 2, 0\n\
_08019488:\n\
- .4byte _080195EC\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196B0\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _08019614\n\
- .4byte _080196D6\n\
- .4byte _08019590\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080195BC\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _08019680\n\
- .4byte _08019650\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _080196D6\n\
- .4byte _08019614\n\
+ .4byte _080195EC\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196B0\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _08019614\n\
+ .4byte _080196D6\n\
+ .4byte _08019590\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080195BC\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _08019680\n\
+ .4byte _08019650\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _08019614\n\
_08019590:\n\
- movs r0, 0x58\n\
- mov r3, r10\n\
- muls r3, r0\n\
- adds r0, r3, 0\n\
- adds r1, r2, 0\n\
- adds r1, 0x4C\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- ldr r1, _080195B0 @ =0x00000f88\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _080195AA\n\
- b _080196D6\n\
+ movs r0, 0x58\n\
+ mov r3, r10\n\
+ muls r3, r0\n\
+ adds r0, r3, 0\n\
+ adds r1, r2, 0\n\
+ adds r1, 0x4C\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ ldr r1, _080195B0 @ =0x00000f88\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _080195AA\n\
+ b _080196D6\n\
_080195AA:\n\
- ldr r0, _080195B4 @ =gBattleTextBuff1\n\
- ldr r1, _080195B8 @ =gStatusConditionString_PoisonJpn\n\
- b _0801969C\n\
- .align 2, 0\n\
+ ldr r0, _080195B4 @ =gBattleTextBuff1\n\
+ ldr r1, _080195B8 @ =gStatusConditionString_PoisonJpn\n\
+ b _0801969C\n\
+ .align 2, 0\n\
_080195B0: .4byte 0x00000f88\n\
_080195B4: .4byte gBattleTextBuff1\n\
_080195B8: .4byte gStatusConditionString_PoisonJpn\n\
_080195BC:\n\
- movs r0, 0x58\n\
- mov r1, r10\n\
- muls r1, r0\n\
- adds r0, r1, 0\n\
- adds r1, r2, 0\n\
- adds r1, 0x50\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- movs r1, 0x7\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _080195D6\n\
- b _080196D6\n\
+ movs r0, 0x58\n\
+ mov r1, r10\n\
+ muls r1, r0\n\
+ adds r0, r1, 0\n\
+ adds r1, r2, 0\n\
+ adds r1, 0x50\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x7\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _080195D6\n\
+ b _080196D6\n\
_080195D6:\n\
- ldr r0, _080195E4 @ =gBattleTextBuff1\n\
- ldr r1, _080195E8 @ =gStatusConditionString_ConfusionJpn\n\
- bl StringCopy\n\
- movs r2, 0x2\n\
- mov r9, r2\n\
- b _080196DC\n\
- .align 2, 0\n\
+ ldr r0, _080195E4 @ =gBattleTextBuff1\n\
+ ldr r1, _080195E8 @ =gStatusConditionString_ConfusionJpn\n\
+ bl StringCopy\n\
+ movs r2, 0x2\n\
+ mov r9, r2\n\
+ b _080196DC\n\
+ .align 2, 0\n\
_080195E4: .4byte gBattleTextBuff1\n\
_080195E8: .4byte gStatusConditionString_ConfusionJpn\n\
_080195EC:\n\
- movs r0, 0x58\n\
- mov r3, r10\n\
- muls r3, r0\n\
- adds r0, r3, 0\n\
- adds r1, r2, 0\n\
- adds r1, 0x4C\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- movs r1, 0x40\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080196D6\n\
- ldr r0, _0801960C @ =gBattleTextBuff1\n\
- ldr r1, _08019610 @ =gStatusConditionString_ParalysisJpn\n\
- b _0801969C\n\
- .align 2, 0\n\
+ movs r0, 0x58\n\
+ mov r3, r10\n\
+ muls r3, r0\n\
+ adds r0, r3, 0\n\
+ adds r1, r2, 0\n\
+ adds r1, 0x4C\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x40\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080196D6\n\
+ ldr r0, _0801960C @ =gBattleTextBuff1\n\
+ ldr r1, _08019610 @ =gStatusConditionString_ParalysisJpn\n\
+ b _0801969C\n\
+ .align 2, 0\n\
_0801960C: .4byte gBattleTextBuff1\n\
_08019610: .4byte gStatusConditionString_ParalysisJpn\n\
_08019614:\n\
- movs r0, 0x58\n\
- mov r3, r10\n\
- muls r3, r0\n\
- adds r0, r2, 0\n\
- adds r0, 0x4C\n\
- adds r0, r3, r0\n\
- ldr r0, [r0]\n\
- movs r1, 0x7\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080196D6\n\
- adds r2, 0x50\n\
- adds r2, r3, r2\n\
- ldr r0, [r2]\n\
- ldr r1, _08019644 @ =0xf7ffffff\n\
- ands r0, r1\n\
- str r0, [r2]\n\
- ldr r0, _08019648 @ =gBattleTextBuff1\n\
- ldr r1, _0801964C @ =gStatusConditionString_SleepJpn\n\
- bl StringCopy\n\
- movs r0, 0x1\n\
- mov r9, r0\n\
- b _080196DC\n\
- .align 2, 0\n\
+ movs r0, 0x58\n\
+ mov r3, r10\n\
+ muls r3, r0\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x4C\n\
+ adds r0, r3, r0\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x7\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080196D6\n\
+ adds r2, 0x50\n\
+ adds r2, r3, r2\n\
+ ldr r0, [r2]\n\
+ ldr r1, _08019644 @ =0xf7ffffff\n\
+ ands r0, r1\n\
+ str r0, [r2]\n\
+ ldr r0, _08019648 @ =gBattleTextBuff1\n\
+ ldr r1, _0801964C @ =gStatusConditionString_SleepJpn\n\
+ bl StringCopy\n\
+ movs r0, 0x1\n\
+ mov r9, r0\n\
+ b _080196DC\n\
+ .align 2, 0\n\
_08019644: .4byte 0xf7ffffff\n\
_08019648: .4byte gBattleTextBuff1\n\
_0801964C: .4byte gStatusConditionString_SleepJpn\n\
_08019650:\n\
- movs r0, 0x58\n\
- mov r1, r10\n\
- muls r1, r0\n\
- adds r0, r1, 0\n\
- adds r1, r2, 0\n\
- adds r1, 0x4C\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- movs r1, 0x10\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080196D6\n\
- ldr r0, _08019678 @ =gBattleTextBuff1\n\
- ldr r1, _0801967C @ =gStatusConditionString_BurnJpn\n\
- bl StringCopy\n\
- movs r2, 0x1\n\
- mov r9, r2\n\
- b _080196DC\n\
- .align 2, 0\n\
+ movs r0, 0x58\n\
+ mov r1, r10\n\
+ muls r1, r0\n\
+ adds r0, r1, 0\n\
+ adds r1, r2, 0\n\
+ adds r1, 0x4C\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x10\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080196D6\n\
+ ldr r0, _08019678 @ =gBattleTextBuff1\n\
+ ldr r1, _0801967C @ =gStatusConditionString_BurnJpn\n\
+ bl StringCopy\n\
+ movs r2, 0x1\n\
+ mov r9, r2\n\
+ b _080196DC\n\
+ .align 2, 0\n\
_08019678: .4byte gBattleTextBuff1\n\
_0801967C: .4byte gStatusConditionString_BurnJpn\n\
_08019680:\n\
- movs r0, 0x58\n\
- mov r3, r10\n\
- muls r3, r0\n\
- adds r0, r3, 0\n\
- adds r1, r2, 0\n\
- adds r1, 0x4C\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- movs r1, 0x20\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080196D6\n\
- ldr r0, _080196A8 @ =gBattleTextBuff1\n\
- ldr r1, _080196AC @ =gStatusConditionString_IceJpn\n\
+ movs r0, 0x58\n\
+ mov r3, r10\n\
+ muls r3, r0\n\
+ adds r0, r3, 0\n\
+ adds r1, r2, 0\n\
+ adds r1, 0x4C\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x20\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080196D6\n\
+ ldr r0, _080196A8 @ =gBattleTextBuff1\n\
+ ldr r1, _080196AC @ =gStatusConditionString_IceJpn\n\
_0801969C:\n\
- bl StringCopy\n\
- movs r5, 0x1\n\
- mov r9, r5\n\
- b _080196DC\n\
- .align 2, 0\n\
+ bl StringCopy\n\
+ movs r5, 0x1\n\
+ mov r9, r5\n\
+ b _080196DC\n\
+ .align 2, 0\n\
_080196A8: .4byte gBattleTextBuff1\n\
_080196AC: .4byte gStatusConditionString_IceJpn\n\
_080196B0:\n\
- movs r0, 0x58\n\
- mov r1, r10\n\
- muls r1, r0\n\
- adds r0, r1, 0\n\
- adds r1, r2, 0\n\
- adds r1, 0x50\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- movs r1, 0xF0\n\
- lsls r1, 12\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080196D6\n\
- ldr r0, _080196EC @ =gBattleTextBuff1\n\
- ldr r1, _080196F0 @ =gStatusConditionString_LoveJpn\n\
- bl StringCopy\n\
- movs r2, 0x3\n\
- mov r9, r2\n\
+ movs r0, 0x58\n\
+ mov r1, r10\n\
+ muls r1, r0\n\
+ adds r0, r1, 0\n\
+ adds r1, r2, 0\n\
+ adds r1, 0x50\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ movs r1, 0xF0\n\
+ lsls r1, 12\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080196D6\n\
+ ldr r0, _080196EC @ =gBattleTextBuff1\n\
+ ldr r1, _080196F0 @ =gStatusConditionString_LoveJpn\n\
+ bl StringCopy\n\
+ movs r2, 0x3\n\
+ mov r9, r2\n\
_080196D6:\n\
- mov r3, r9\n\
- cmp r3, 0\n\
- beq _08019798\n\
+ mov r3, r9\n\
+ cmp r3, 0\n\
+ beq _08019798\n\
_080196DC:\n\
- mov r5, r9\n\
- cmp r5, 0x2\n\
- beq _08019710\n\
- cmp r5, 0x2\n\
- bgt _080196F4\n\
- cmp r5, 0x1\n\
- beq _080196FC\n\
- b _0801973C\n\
- .align 2, 0\n\
+ mov r5, r9\n\
+ cmp r5, 0x2\n\
+ beq _08019710\n\
+ cmp r5, 0x2\n\
+ bgt _080196F4\n\
+ cmp r5, 0x1\n\
+ beq _080196FC\n\
+ b _0801973C\n\
+ .align 2, 0\n\
_080196EC: .4byte gBattleTextBuff1\n\
_080196F0: .4byte gStatusConditionString_LoveJpn\n\
_080196F4:\n\
- mov r0, r9\n\
- cmp r0, 0x3\n\
- beq _08019728\n\
- b _0801973C\n\
+ mov r0, r9\n\
+ cmp r0, 0x3\n\
+ beq _08019728\n\
+ b _0801973C\n\
_080196FC:\n\
- ldr r1, _0801970C @ =gBattleMons\n\
- movs r0, 0x58\n\
- mov r2, r10\n\
- muls r2, r0\n\
- adds r1, 0x4C\n\
- adds r2, r1\n\
- movs r0, 0\n\
- b _0801973A\n\
- .align 2, 0\n\
+ ldr r1, _0801970C @ =gBattleMons\n\
+ movs r0, 0x58\n\
+ mov r2, r10\n\
+ muls r2, r0\n\
+ adds r1, 0x4C\n\
+ adds r2, r1\n\
+ movs r0, 0\n\
+ b _0801973A\n\
+ .align 2, 0\n\
_0801970C: .4byte gBattleMons\n\
_08019710:\n\
- ldr r1, _08019724 @ =gBattleMons\n\
- movs r0, 0x58\n\
- mov r2, r10\n\
- muls r2, r0\n\
- adds r1, 0x50\n\
- adds r2, r1\n\
- ldr r0, [r2]\n\
- movs r1, 0x8\n\
- negs r1, r1\n\
- b _08019738\n\
- .align 2, 0\n\
+ ldr r1, _08019724 @ =gBattleMons\n\
+ movs r0, 0x58\n\
+ mov r2, r10\n\
+ muls r2, r0\n\
+ adds r1, 0x50\n\
+ adds r2, r1\n\
+ ldr r0, [r2]\n\
+ movs r1, 0x8\n\
+ negs r1, r1\n\
+ b _08019738\n\
+ .align 2, 0\n\
_08019724: .4byte gBattleMons\n\
_08019728:\n\
- ldr r1, _08019778 @ =gBattleMons\n\
- movs r0, 0x58\n\
- mov r2, r10\n\
- muls r2, r0\n\
- adds r1, 0x50\n\
- adds r2, r1\n\
- ldr r0, [r2]\n\
- ldr r1, _0801977C @ =0xfff0ffff\n\
+ ldr r1, _08019778 @ =gBattleMons\n\
+ movs r0, 0x58\n\
+ mov r2, r10\n\
+ muls r2, r0\n\
+ adds r1, 0x50\n\
+ adds r2, r1\n\
+ ldr r0, [r2]\n\
+ ldr r1, _0801977C @ =0xfff0ffff\n\
_08019738:\n\
- ands r0, r1\n\
+ ands r0, r1\n\
_0801973A:\n\
- str r0, [r2]\n\
+ str r0, [r2]\n\
_0801973C:\n\
- bl b_movescr_stack_push_cursor\n\
- ldr r1, _08019780 @ =gBattlescriptCurrInstr\n\
- ldr r0, _08019784 @ =gUnknown_081D9956\n\
- str r0, [r1]\n\
- ldr r0, _08019788 @ =0x02000000\n\
- ldr r1, _0801978C @ =0x00016003\n\
- adds r0, r1\n\
- mov r2, r10\n\
- strb r2, [r0]\n\
- ldr r4, _08019790 @ =gActiveBank\n\
- strb r2, [r4]\n\
- ldrb r1, [r4]\n\
- movs r0, 0x58\n\
- muls r0, r1\n\
- ldr r1, _08019794 @ =gUnknown_02024ACC\n\
- adds r0, r1\n\
- str r0, [sp]\n\
- movs r0, 0\n\
- movs r1, 0x28\n\
- movs r2, 0\n\
- movs r3, 0x4\n\
- bl EmitSetAttributes\n\
- ldrb r0, [r4]\n\
- bl MarkBufferBankForExecution\n\
- bl _08019F92\n\
- .align 2, 0\n\
+ bl b_movescr_stack_push_cursor\n\
+ ldr r1, _08019780 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08019784 @ =gUnknown_081D9956\n\
+ str r0, [r1]\n\
+ ldr r0, _08019788 @ =0x02000000\n\
+ ldr r1, _0801978C @ =0x00016003\n\
+ adds r0, r1\n\
+ mov r2, r10\n\
+ strb r2, [r0]\n\
+ ldr r4, _08019790 @ =gActiveBank\n\
+ strb r2, [r4]\n\
+ ldrb r1, [r4]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ ldr r1, _08019794 @ =gUnknown_02024ACC\n\
+ adds r0, r1\n\
+ str r0, [sp]\n\
+ movs r0, 0\n\
+ movs r1, 0x28\n\
+ movs r2, 0\n\
+ movs r3, 0x4\n\
+ bl EmitSetAttributes\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+ bl _08019F92\n\
+ .align 2, 0\n\
_08019778: .4byte gBattleMons\n\
_0801977C: .4byte 0xfff0ffff\n\
_08019780: .4byte gBattlescriptCurrInstr\n\
@@ -4586,112 +4586,112 @@ _0801978C: .4byte 0x00016003\n\
_08019790: .4byte gActiveBank\n\
_08019794: .4byte gUnknown_02024ACC\n\
_08019798:\n\
- mov r0, r10\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r10, r0\n\
- ldr r0, _080197B0 @ =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r10, r0\n\
- bcs _080197AC\n\
- b _08019458\n\
+ mov r0, r10\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r10, r0\n\
+ ldr r0, _080197B0 @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r10, r0\n\
+ bcs _080197AC\n\
+ b _08019458\n\
_080197AC:\n\
- bl _08019F76\n\
- .align 2, 0\n\
+ bl _08019F76\n\
+ .align 2, 0\n\
_080197B0: .4byte gNoOfAllBanks\n\
_080197B4:\n\
- movs r3, 0\n\
- mov r10, r3\n\
- ldr r0, _080197FC @ =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r10, r0\n\
- bcc _080197C2\n\
- b _08019F76\n\
+ movs r3, 0\n\
+ mov r10, r3\n\
+ ldr r0, _080197FC @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r10, r0\n\
+ bcc _080197C2\n\
+ b _08019F76\n\
_080197C2:\n\
- ldr r4, _08019800 @ =gBattleMons\n\
+ ldr r4, _08019800 @ =gBattleMons\n\
_080197C4:\n\
- movs r0, 0x58\n\
- mov r5, r10\n\
- muls r5, r0\n\
- adds r0, r5, 0\n\
- adds r0, r4\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x3B\n\
- bne _080197E8\n\
- mov r0, r10\n\
- bl CastformDataTypeChange\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
- cmp r0, 0\n\
- beq _080197E8\n\
- b _08019E40\n\
+ movs r0, 0x58\n\
+ mov r5, r10\n\
+ muls r5, r0\n\
+ adds r0, r5, 0\n\
+ adds r0, r4\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x3B\n\
+ bne _080197E8\n\
+ mov r0, r10\n\
+ bl CastformDataTypeChange\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
+ cmp r0, 0\n\
+ beq _080197E8\n\
+ b _08019E40\n\
_080197E8:\n\
- mov r0, r10\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r10, r0\n\
- ldr r0, _080197FC @ =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r10, r0\n\
- bcc _080197C4\n\
- b _08019F76\n\
- .align 2, 0\n\
+ mov r0, r10\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r10, r0\n\
+ ldr r0, _080197FC @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r10, r0\n\
+ bcc _080197C4\n\
+ b _08019F76\n\
+ .align 2, 0\n\
_080197FC: .4byte gNoOfAllBanks\n\
_08019800: .4byte gBattleMons\n\
_08019804:\n\
- mov r1, r8\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x1C\n\
- beq _0801980E\n\
- b _08019F76\n\
+ mov r1, r8\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0x1C\n\
+ beq _0801980E\n\
+ b _08019F76\n\
_0801980E:\n\
- ldr r4, _08019860 @ =gHitMarker\n\
- ldr r1, [r4]\n\
- movs r0, 0x80\n\
- lsls r0, 7\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0801981E\n\
- b _08019F76\n\
+ ldr r4, _08019860 @ =gHitMarker\n\
+ ldr r1, [r4]\n\
+ movs r0, 0x80\n\
+ lsls r0, 7\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0801981E\n\
+ b _08019F76\n\
_0801981E:\n\
- ldr r0, _08019864 @ =0xffffbfff\n\
- ands r1, r0\n\
- str r1, [r4]\n\
- ldr r3, _08019868 @ =0x000160ca\n\
- adds r2, r7, r3\n\
- ldrb r1, [r2]\n\
- movs r0, 0x3F\n\
- ands r0, r1\n\
- strb r0, [r2]\n\
- cmp r0, 0x6\n\
- bne _08019838\n\
- movs r0, 0x2\n\
- strb r0, [r2]\n\
+ ldr r0, _08019864 @ =0xffffbfff\n\
+ ands r1, r0\n\
+ str r1, [r4]\n\
+ ldr r3, _08019868 @ =0x000160ca\n\
+ adds r2, r7, r3\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0x3F\n\
+ ands r0, r1\n\
+ strb r0, [r2]\n\
+ cmp r0, 0x6\n\
+ bne _08019838\n\
+ movs r0, 0x2\n\
+ strb r0, [r2]\n\
_08019838:\n\
- ldr r1, _0801986C @ =gBattleCommunication\n\
- ldrb r0, [r2]\n\
- adds r0, 0x40\n\
- strb r0, [r1, 0x3]\n\
- ldr r0, _08019870 @ =gBankTarget\n\
- ldrb r1, [r0]\n\
- ldr r5, _08019874 @ =0x00016003\n\
- adds r0, r7, r5\n\
- strb r1, [r0]\n\
- bl b_movescr_stack_push_cursor\n\
- ldr r1, _08019878 @ =gBattlescriptCurrInstr\n\
- ldr r0, _0801987C @ =BattleScript_SynchronizeActivates\n\
- str r0, [r1]\n\
- ldr r0, [r4]\n\
- movs r1, 0x80\n\
- lsls r1, 6\n\
- orrs r0, r1\n\
- str r0, [r4]\n\
- b _08019F22\n\
- .align 2, 0\n\
+ ldr r1, _0801986C @ =gBattleCommunication\n\
+ ldrb r0, [r2]\n\
+ adds r0, 0x40\n\
+ strb r0, [r1, 0x3]\n\
+ ldr r0, _08019870 @ =gBankTarget\n\
+ ldrb r1, [r0]\n\
+ ldr r5, _08019874 @ =0x00016003\n\
+ adds r0, r7, r5\n\
+ strb r1, [r0]\n\
+ bl b_movescr_stack_push_cursor\n\
+ ldr r1, _08019878 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _0801987C @ =BattleScript_SynchronizeActivates\n\
+ str r0, [r1]\n\
+ ldr r0, [r4]\n\
+ movs r1, 0x80\n\
+ lsls r1, 6\n\
+ orrs r0, r1\n\
+ str r0, [r4]\n\
+ b _08019F22\n\
+ .align 2, 0\n\
_08019860: .4byte gHitMarker\n\
_08019864: .4byte 0xffffbfff\n\
_08019868: .4byte 0x000160ca\n\
@@ -4701,54 +4701,54 @@ _08019874: .4byte 0x00016003\n\
_08019878: .4byte gBattlescriptCurrInstr\n\
_0801987C: .4byte BattleScript_SynchronizeActivates\n\
_08019880:\n\
- mov r1, r8\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x1C\n\
- beq _0801988A\n\
- b _08019F76\n\
+ mov r1, r8\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0x1C\n\
+ beq _0801988A\n\
+ b _08019F76\n\
_0801988A:\n\
- ldr r4, _080198DC @ =gHitMarker\n\
- ldr r1, [r4]\n\
- movs r0, 0x80\n\
- lsls r0, 7\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0801989A\n\
- b _08019F76\n\
+ ldr r4, _080198DC @ =gHitMarker\n\
+ ldr r1, [r4]\n\
+ movs r0, 0x80\n\
+ lsls r0, 7\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0801989A\n\
+ b _08019F76\n\
_0801989A:\n\
- ldr r0, _080198E0 @ =0xffffbfff\n\
- ands r1, r0\n\
- str r1, [r4]\n\
- ldr r3, _080198E4 @ =0x000160ca\n\
- adds r2, r7, r3\n\
- ldrb r1, [r2]\n\
- movs r0, 0x3F\n\
- ands r0, r1\n\
- strb r0, [r2]\n\
- cmp r0, 0x6\n\
- bne _080198B4\n\
- movs r0, 0x2\n\
- strb r0, [r2]\n\
+ ldr r0, _080198E0 @ =0xffffbfff\n\
+ ands r1, r0\n\
+ str r1, [r4]\n\
+ ldr r3, _080198E4 @ =0x000160ca\n\
+ adds r2, r7, r3\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0x3F\n\
+ ands r0, r1\n\
+ strb r0, [r2]\n\
+ cmp r0, 0x6\n\
+ bne _080198B4\n\
+ movs r0, 0x2\n\
+ strb r0, [r2]\n\
_080198B4:\n\
- ldr r1, _080198E8 @ =gBattleCommunication\n\
- ldrb r0, [r2]\n\
- strb r0, [r1, 0x3]\n\
- ldr r0, _080198EC @ =gBankAttacker\n\
- ldrb r1, [r0]\n\
- ldr r5, _080198F0 @ =0x00016003\n\
- adds r0, r7, r5\n\
- strb r1, [r0]\n\
- bl b_movescr_stack_push_cursor\n\
- ldr r1, _080198F4 @ =gBattlescriptCurrInstr\n\
- ldr r0, _080198F8 @ =BattleScript_SynchronizeActivates\n\
- str r0, [r1]\n\
- ldr r0, [r4]\n\
- movs r1, 0x80\n\
- lsls r1, 6\n\
- orrs r0, r1\n\
- str r0, [r4]\n\
- b _08019F22\n\
- .align 2, 0\n\
+ ldr r1, _080198E8 @ =gBattleCommunication\n\
+ ldrb r0, [r2]\n\
+ strb r0, [r1, 0x3]\n\
+ ldr r0, _080198EC @ =gBankAttacker\n\
+ ldrb r1, [r0]\n\
+ ldr r5, _080198F0 @ =0x00016003\n\
+ adds r0, r7, r5\n\
+ strb r1, [r0]\n\
+ bl b_movescr_stack_push_cursor\n\
+ ldr r1, _080198F4 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _080198F8 @ =BattleScript_SynchronizeActivates\n\
+ str r0, [r1]\n\
+ ldr r0, [r4]\n\
+ movs r1, 0x80\n\
+ lsls r1, 6\n\
+ orrs r0, r1\n\
+ str r0, [r4]\n\
+ b _08019F22\n\
+ .align 2, 0\n\
_080198DC: .4byte gHitMarker\n\
_080198E0: .4byte 0xffffbfff\n\
_080198E4: .4byte 0x000160ca\n\
@@ -4758,152 +4758,152 @@ _080198F0: .4byte 0x00016003\n\
_080198F4: .4byte gBattlescriptCurrInstr\n\
_080198F8: .4byte BattleScript_SynchronizeActivates\n\
_080198FC:\n\
- movs r4, 0\n\
- ldr r0, _08019934 @ =gNoOfAllBanks\n\
- ldrb r1, [r0]\n\
- cmp r4, r1\n\
- blt _08019908\n\
- b _08019F76\n\
+ movs r4, 0\n\
+ ldr r0, _08019934 @ =gNoOfAllBanks\n\
+ ldrb r1, [r0]\n\
+ cmp r4, r1\n\
+ blt _08019908\n\
+ b _08019F76\n\
_08019908:\n\
- ldr r0, _08019938 @ =gBattleMons\n\
- adds r5, r1, 0\n\
- ldr r2, _0801993C @ =gStatuses3\n\
- adds r3, r0, 0\n\
- adds r3, 0x20\n\
- movs r6, 0x80\n\
- lsls r6, 12\n\
+ ldr r0, _08019938 @ =gBattleMons\n\
+ adds r5, r1, 0\n\
+ ldr r2, _0801993C @ =gStatuses3\n\
+ adds r3, r0, 0\n\
+ adds r3, 0x20\n\
+ movs r6, 0x80\n\
+ lsls r6, 12\n\
_08019916:\n\
- ldrb r1, [r3]\n\
- cmp r1, 0x16\n\
- bne _08019926\n\
- ldr r0, [r2]\n\
- ands r0, r6\n\
- cmp r0, 0\n\
- beq _08019926\n\
- b _08019E6C\n\
+ ldrb r1, [r3]\n\
+ cmp r1, 0x16\n\
+ bne _08019926\n\
+ ldr r0, [r2]\n\
+ ands r0, r6\n\
+ cmp r0, 0\n\
+ beq _08019926\n\
+ b _08019E6C\n\
_08019926:\n\
- adds r2, 0x4\n\
- adds r3, 0x58\n\
- adds r4, 0x1\n\
- cmp r4, r5\n\
- blt _08019916\n\
- b _08019F76\n\
- .align 2, 0\n\
+ adds r2, 0x4\n\
+ adds r3, 0x58\n\
+ adds r4, 0x1\n\
+ cmp r4, r5\n\
+ blt _08019916\n\
+ b _08019F76\n\
+ .align 2, 0\n\
_08019934: .4byte gNoOfAllBanks\n\
_08019938: .4byte gBattleMons\n\
_0801993C: .4byte gStatuses3\n\
_08019940:\n\
- movs r4, 0\n\
- ldr r0, _08019A1C @ =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _0801994C\n\
- b _08019F76\n\
+ movs r4, 0\n\
+ ldr r0, _08019A1C @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt _0801994C\n\
+ b _08019F76\n\
_0801994C:\n\
- ldr r0, _08019A20 @ =gActiveBank\n\
- mov r8, r0\n\
- ldr r1, _08019A24 @ =gBattleMons\n\
- adds r1, 0x20\n\
- str r1, [sp, 0x1C]\n\
- movs r2, 0\n\
- str r2, [sp, 0x20]\n\
+ ldr r0, _08019A20 @ =gActiveBank\n\
+ mov r8, r0\n\
+ ldr r1, _08019A24 @ =gBattleMons\n\
+ adds r1, 0x20\n\
+ str r1, [sp, 0x1C]\n\
+ movs r2, 0\n\
+ str r2, [sp, 0x20]\n\
_0801995A:\n\
- ldr r3, [sp, 0x1C]\n\
- ldrb r0, [r3]\n\
- cmp r0, 0x24\n\
- beq _08019964\n\
- b _08019AF6\n\
+ ldr r3, [sp, 0x1C]\n\
+ ldrb r0, [r3]\n\
+ cmp r0, 0x24\n\
+ beq _08019964\n\
+ b _08019AF6\n\
_08019964:\n\
- ldr r0, _08019A28 @ =gStatuses3\n\
- ldr r5, [sp, 0x20]\n\
- adds r0, r5, r0\n\
- ldr r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 13\n\
- ands r1, r0\n\
- str r5, [sp, 0x18]\n\
- cmp r1, 0\n\
- bne _0801997A\n\
- b _08019AF6\n\
+ ldr r0, _08019A28 @ =gStatuses3\n\
+ ldr r5, [sp, 0x20]\n\
+ adds r0, r5, r0\n\
+ ldr r1, [r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 13\n\
+ ands r1, r0\n\
+ str r5, [sp, 0x18]\n\
+ cmp r1, 0\n\
+ bne _0801997A\n\
+ b _08019AF6\n\
_0801997A:\n\
- lsls r0, r4, 24\n\
- lsrs r0, 24\n\
- bl GetBankIdentity\n\
- movs r1, 0x1\n\
- adds r5, r0, 0\n\
- eors r5, r1\n\
- ands r5, r1\n\
- adds r0, r5, 0\n\
- bl GetBankByPlayerAI\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- adds r0, r5, 0x2\n\
- bl GetBankByPlayerAI\n\
- lsls r0, 24\n\
- lsrs r7, r0, 24\n\
- ldr r0, _08019A2C @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- movs r2, 0x1\n\
- adds r0, r2, 0\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _080199AE\n\
- b _08019ABC\n\
+ lsls r0, r4, 24\n\
+ lsrs r0, 24\n\
+ bl GetBankIdentity\n\
+ movs r1, 0x1\n\
+ adds r5, r0, 0\n\
+ eors r5, r1\n\
+ ands r5, r1\n\
+ adds r0, r5, 0\n\
+ bl GetBankByPlayerAI\n\
+ lsls r0, 24\n\
+ lsrs r6, r0, 24\n\
+ adds r0, r5, 0x2\n\
+ bl GetBankByPlayerAI\n\
+ lsls r0, 24\n\
+ lsrs r7, r0, 24\n\
+ ldr r0, _08019A2C @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ movs r2, 0x1\n\
+ adds r0, r2, 0\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _080199AE\n\
+ b _08019ABC\n\
_080199AE:\n\
- movs r1, 0x58\n\
- adds r0, r6, 0\n\
- muls r0, r1\n\
- ldr r3, _08019A24 @ =gBattleMons\n\
- adds r1, r0, r3\n\
- adds r0, r1, 0\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- beq _08019A78\n\
- ldrh r0, [r1, 0x28]\n\
- cmp r0, 0\n\
- beq _08019A34\n\
- movs r1, 0x58\n\
- adds r0, r7, 0\n\
- muls r0, r1\n\
- adds r1, r0, r3\n\
- adds r0, r1, 0\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- beq _08019A34\n\
- ldrh r0, [r1, 0x28]\n\
- cmp r0, 0\n\
- beq _08019A34\n\
- str r2, [sp, 0x24]\n\
- bl Random\n\
- ldr r2, [sp, 0x24]\n\
- adds r1, r2, 0\n\
- ands r1, r0\n\
- lsls r1, 1\n\
- orrs r5, r1\n\
- adds r0, r5, 0\n\
- bl GetBankByPlayerAI\n\
- mov r2, r8\n\
- strb r0, [r2]\n\
- ldrb r0, [r2]\n\
- movs r3, 0x58\n\
- muls r0, r3\n\
- ldr r5, _08019A24 @ =gBattleMons\n\
- adds r0, r5\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- ldr r1, [sp, 0x1C]\n\
- strb r0, [r1]\n\
- ldrb r0, [r2]\n\
- muls r0, r3\n\
- adds r0, r5\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- ldr r2, _08019A30 @ =gLastUsedAbility\n\
- strb r0, [r2]\n\
- b _08019AE4\n\
- .align 2, 0\n\
+ movs r1, 0x58\n\
+ adds r0, r6, 0\n\
+ muls r0, r1\n\
+ ldr r3, _08019A24 @ =gBattleMons\n\
+ adds r1, r0, r3\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _08019A78\n\
+ ldrh r0, [r1, 0x28]\n\
+ cmp r0, 0\n\
+ beq _08019A34\n\
+ movs r1, 0x58\n\
+ adds r0, r7, 0\n\
+ muls r0, r1\n\
+ adds r1, r0, r3\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _08019A34\n\
+ ldrh r0, [r1, 0x28]\n\
+ cmp r0, 0\n\
+ beq _08019A34\n\
+ str r2, [sp, 0x24]\n\
+ bl Random\n\
+ ldr r2, [sp, 0x24]\n\
+ adds r1, r2, 0\n\
+ ands r1, r0\n\
+ lsls r1, 1\n\
+ orrs r5, r1\n\
+ adds r0, r5, 0\n\
+ bl GetBankByPlayerAI\n\
+ mov r2, r8\n\
+ strb r0, [r2]\n\
+ ldrb r0, [r2]\n\
+ movs r3, 0x58\n\
+ muls r0, r3\n\
+ ldr r5, _08019A24 @ =gBattleMons\n\
+ adds r0, r5\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ ldr r1, [sp, 0x1C]\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r2]\n\
+ muls r0, r3\n\
+ adds r0, r5\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ ldr r2, _08019A30 @ =gLastUsedAbility\n\
+ strb r0, [r2]\n\
+ b _08019AE4\n\
+ .align 2, 0\n\
_08019A1C: .4byte gNoOfAllBanks\n\
_08019A20: .4byte gActiveBank\n\
_08019A24: .4byte gBattleMons\n\
@@ -4911,609 +4911,609 @@ _08019A28: .4byte gStatuses3\n\
_08019A2C: .4byte gBattleTypeFlags\n\
_08019A30: .4byte gLastUsedAbility\n\
_08019A34:\n\
- ldr r3, _08019A74 @ =gBattleMons\n\
- movs r2, 0x58\n\
- adds r0, r6, 0\n\
- muls r0, r2\n\
- adds r1, r0, r3\n\
- adds r0, r1, 0\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- beq _08019A78\n\
- ldrh r0, [r1, 0x28]\n\
- cmp r0, 0\n\
- beq _08019A78\n\
- mov r5, r8\n\
- strb r6, [r5]\n\
- adds r1, r4, 0\n\
- muls r1, r2\n\
- adds r1, r3\n\
- ldrb r0, [r5]\n\
- muls r0, r2\n\
- adds r0, r3\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- adds r1, 0x20\n\
- strb r0, [r1]\n\
- ldrb r0, [r5]\n\
- muls r0, r2\n\
- adds r0, r3\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- b _08019AE0\n\
- .align 2, 0\n\
+ ldr r3, _08019A74 @ =gBattleMons\n\
+ movs r2, 0x58\n\
+ adds r0, r6, 0\n\
+ muls r0, r2\n\
+ adds r1, r0, r3\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _08019A78\n\
+ ldrh r0, [r1, 0x28]\n\
+ cmp r0, 0\n\
+ beq _08019A78\n\
+ mov r5, r8\n\
+ strb r6, [r5]\n\
+ adds r1, r4, 0\n\
+ muls r1, r2\n\
+ adds r1, r3\n\
+ ldrb r0, [r5]\n\
+ muls r0, r2\n\
+ adds r0, r3\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ adds r1, 0x20\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r5]\n\
+ muls r0, r2\n\
+ adds r0, r3\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ b _08019AE0\n\
+ .align 2, 0\n\
_08019A74: .4byte gBattleMons\n\
_08019A78:\n\
- ldr r3, _08019AB8 @ =gBattleMons\n\
- movs r2, 0x58\n\
- adds r0, r7, 0\n\
- muls r0, r2\n\
- adds r1, r0, r3\n\
- adds r0, r1, 0\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- beq _08019AEE\n\
- ldrh r0, [r1, 0x28]\n\
- cmp r0, 0\n\
- beq _08019AEE\n\
- mov r5, r8\n\
- strb r7, [r5]\n\
- adds r1, r4, 0\n\
- muls r1, r2\n\
- adds r1, r3\n\
- ldrb r0, [r5]\n\
- muls r0, r2\n\
- adds r0, r3\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- adds r1, 0x20\n\
- strb r0, [r1]\n\
- ldrb r0, [r5]\n\
- muls r0, r2\n\
- adds r0, r3\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- b _08019AE0\n\
- .align 2, 0\n\
+ ldr r3, _08019AB8 @ =gBattleMons\n\
+ movs r2, 0x58\n\
+ adds r0, r7, 0\n\
+ muls r0, r2\n\
+ adds r1, r0, r3\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _08019AEE\n\
+ ldrh r0, [r1, 0x28]\n\
+ cmp r0, 0\n\
+ beq _08019AEE\n\
+ mov r5, r8\n\
+ strb r7, [r5]\n\
+ adds r1, r4, 0\n\
+ muls r1, r2\n\
+ adds r1, r3\n\
+ ldrb r0, [r5]\n\
+ muls r0, r2\n\
+ adds r0, r3\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ adds r1, 0x20\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r5]\n\
+ muls r0, r2\n\
+ adds r0, r3\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ b _08019AE0\n\
+ .align 2, 0\n\
_08019AB8: .4byte gBattleMons\n\
_08019ABC:\n\
- mov r2, r8\n\
- strb r6, [r2]\n\
- movs r3, 0x58\n\
- adds r0, r6, 0\n\
- muls r0, r3\n\
- ldr r5, _08019B10 @ =gBattleMons\n\
- adds r0, r5\n\
- adds r2, r0, 0\n\
- adds r2, 0x20\n\
- ldrb r1, [r2]\n\
- cmp r1, 0\n\
- beq _08019AEE\n\
- ldrh r0, [r0, 0x28]\n\
- cmp r0, 0\n\
- beq _08019AEE\n\
- ldr r0, [sp, 0x1C]\n\
- strb r1, [r0]\n\
- ldrb r0, [r2]\n\
+ mov r2, r8\n\
+ strb r6, [r2]\n\
+ movs r3, 0x58\n\
+ adds r0, r6, 0\n\
+ muls r0, r3\n\
+ ldr r5, _08019B10 @ =gBattleMons\n\
+ adds r0, r5\n\
+ adds r2, r0, 0\n\
+ adds r2, 0x20\n\
+ ldrb r1, [r2]\n\
+ cmp r1, 0\n\
+ beq _08019AEE\n\
+ ldrh r0, [r0, 0x28]\n\
+ cmp r0, 0\n\
+ beq _08019AEE\n\
+ ldr r0, [sp, 0x1C]\n\
+ strb r1, [r0]\n\
+ ldrb r0, [r2]\n\
_08019AE0:\n\
- ldr r1, _08019B14 @ =gLastUsedAbility\n\
- strb r0, [r1]\n\
+ ldr r1, _08019B14 @ =gLastUsedAbility\n\
+ strb r0, [r1]\n\
_08019AE4:\n\
- mov r0, r9\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
+ mov r0, r9\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
_08019AEE:\n\
- mov r2, r9\n\
- cmp r2, 0\n\
- beq _08019AF6\n\
- b _08019E88\n\
+ mov r2, r9\n\
+ cmp r2, 0\n\
+ beq _08019AF6\n\
+ b _08019E88\n\
_08019AF6:\n\
- ldr r3, [sp, 0x1C]\n\
- adds r3, 0x58\n\
- str r3, [sp, 0x1C]\n\
- ldr r5, [sp, 0x20]\n\
- adds r5, 0x4\n\
- str r5, [sp, 0x20]\n\
- adds r4, 0x1\n\
- ldr r0, _08019B18 @ =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- bge _08019B0E\n\
- b _0801995A\n\
+ ldr r3, [sp, 0x1C]\n\
+ adds r3, 0x58\n\
+ str r3, [sp, 0x1C]\n\
+ ldr r5, [sp, 0x20]\n\
+ adds r5, 0x4\n\
+ str r5, [sp, 0x20]\n\
+ adds r4, 0x1\n\
+ ldr r0, _08019B18 @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ bge _08019B0E\n\
+ b _0801995A\n\
_08019B0E:\n\
- b _08019F76\n\
- .align 2, 0\n\
+ b _08019F76\n\
+ .align 2, 0\n\
_08019B10: .4byte gBattleMons\n\
_08019B14: .4byte gLastUsedAbility\n\
_08019B18: .4byte gNoOfAllBanks\n\
_08019B1C:\n\
- movs r4, 0\n\
- ldr r0, _08019B54 @ =gNoOfAllBanks\n\
- ldrb r1, [r0]\n\
- cmp r4, r1\n\
- blt _08019B28\n\
- b _08019F76\n\
+ movs r4, 0\n\
+ ldr r0, _08019B54 @ =gNoOfAllBanks\n\
+ ldrb r1, [r0]\n\
+ cmp r4, r1\n\
+ blt _08019B28\n\
+ b _08019F76\n\
_08019B28:\n\
- ldr r0, _08019B58 @ =gBattleMons\n\
- adds r5, r1, 0\n\
- ldr r2, _08019B5C @ =gStatuses3\n\
- adds r3, r0, 0\n\
- adds r3, 0x20\n\
- movs r6, 0x80\n\
- lsls r6, 12\n\
+ ldr r0, _08019B58 @ =gBattleMons\n\
+ adds r5, r1, 0\n\
+ ldr r2, _08019B5C @ =gStatuses3\n\
+ adds r3, r0, 0\n\
+ adds r3, 0x20\n\
+ movs r6, 0x80\n\
+ lsls r6, 12\n\
_08019B36:\n\
- ldrb r1, [r3]\n\
- cmp r1, 0x16\n\
- bne _08019B46\n\
- ldr r0, [r2]\n\
- ands r0, r6\n\
- cmp r0, 0\n\
- beq _08019B46\n\
- b _08019F04\n\
+ ldrb r1, [r3]\n\
+ cmp r1, 0x16\n\
+ bne _08019B46\n\
+ ldr r0, [r2]\n\
+ ands r0, r6\n\
+ cmp r0, 0\n\
+ beq _08019B46\n\
+ b _08019F04\n\
_08019B46:\n\
- adds r2, 0x4\n\
- adds r3, 0x58\n\
- adds r4, 0x1\n\
- cmp r4, r5\n\
- blt _08019B36\n\
- b _08019F76\n\
- .align 2, 0\n\
+ adds r2, 0x4\n\
+ adds r3, 0x58\n\
+ adds r4, 0x1\n\
+ cmp r4, r5\n\
+ blt _08019B36\n\
+ b _08019F76\n\
+ .align 2, 0\n\
_08019B54: .4byte gNoOfAllBanks\n\
_08019B58: .4byte gBattleMons\n\
_08019B5C: .4byte gStatuses3\n\
_08019B60:\n\
- mov r0, r10\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- movs r4, 0\n\
- ldr r0, _08019BB0 @ =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _08019B76\n\
- b _08019F76\n\
+ mov r0, r10\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ movs r4, 0\n\
+ ldr r0, _08019BB0 @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt _08019B76\n\
+ b _08019F76\n\
_08019B76:\n\
- ldr r7, _08019BB4 @ =gBattleMons\n\
+ ldr r7, _08019BB4 @ =gBattleMons\n\
_08019B78:\n\
- lsls r0, r4, 24\n\
- lsrs r0, 24\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- adds r3, r4, 0x1\n\
- cmp r0, r5\n\
- beq _08019BA2\n\
- movs r0, 0x58\n\
- muls r0, r4\n\
- adds r0, r7\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, r6\n\
- bne _08019BA2\n\
- ldr r0, _08019BB8 @ =gLastUsedAbility\n\
- strb r6, [r0]\n\
- lsls r0, r3, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
+ lsls r0, r4, 24\n\
+ lsrs r0, 24\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ adds r3, r4, 0x1\n\
+ cmp r0, r5\n\
+ beq _08019BA2\n\
+ movs r0, 0x58\n\
+ muls r0, r4\n\
+ adds r0, r7\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, r6\n\
+ bne _08019BA2\n\
+ ldr r0, _08019BB8 @ =gLastUsedAbility\n\
+ strb r6, [r0]\n\
+ lsls r0, r3, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
_08019BA2:\n\
- adds r4, r3, 0\n\
- ldr r0, _08019BB0 @ =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _08019B78\n\
- b _08019F76\n\
- .align 2, 0\n\
+ adds r4, r3, 0\n\
+ ldr r0, _08019BB0 @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt _08019B78\n\
+ b _08019F76\n\
+ .align 2, 0\n\
_08019BB0: .4byte gNoOfAllBanks\n\
_08019BB4: .4byte gBattleMons\n\
_08019BB8: .4byte gLastUsedAbility\n\
_08019BBC:\n\
- mov r0, r10\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- movs r4, 0\n\
- ldr r0, _08019C0C @ =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _08019BD2\n\
- b _08019F76\n\
+ mov r0, r10\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ movs r4, 0\n\
+ ldr r0, _08019C0C @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt _08019BD2\n\
+ b _08019F76\n\
_08019BD2:\n\
- ldr r7, _08019C10 @ =gBattleMons\n\
+ ldr r7, _08019C10 @ =gBattleMons\n\
_08019BD4:\n\
- lsls r0, r4, 24\n\
- lsrs r0, 24\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- adds r3, r4, 0x1\n\
- cmp r0, r5\n\
- bne _08019BFE\n\
- movs r0, 0x58\n\
- muls r0, r4\n\
- adds r0, r7\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, r6\n\
- bne _08019BFE\n\
- ldr r0, _08019C14 @ =gLastUsedAbility\n\
- strb r6, [r0]\n\
- lsls r0, r3, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
+ lsls r0, r4, 24\n\
+ lsrs r0, 24\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ adds r3, r4, 0x1\n\
+ cmp r0, r5\n\
+ bne _08019BFE\n\
+ movs r0, 0x58\n\
+ muls r0, r4\n\
+ adds r0, r7\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, r6\n\
+ bne _08019BFE\n\
+ ldr r0, _08019C14 @ =gLastUsedAbility\n\
+ strb r6, [r0]\n\
+ lsls r0, r3, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
_08019BFE:\n\
- adds r4, r3, 0\n\
- ldr r0, _08019C0C @ =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _08019BD4\n\
- b _08019F76\n\
- .align 2, 0\n\
+ adds r4, r3, 0\n\
+ ldr r0, _08019C0C @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt _08019BD4\n\
+ b _08019F76\n\
+ .align 2, 0\n\
_08019C0C: .4byte gNoOfAllBanks\n\
_08019C10: .4byte gBattleMons\n\
_08019C14: .4byte gLastUsedAbility\n\
_08019C18:\n\
- mov r1, r8\n\
- ldrb r0, [r1]\n\
- cmp r0, 0xFD\n\
- beq _08019C40\n\
- cmp r0, 0xFE\n\
- beq _08019C78\n\
- movs r4, 0\n\
- ldr r0, _08019C38 @ =gNoOfAllBanks\n\
- adds r5, r0, 0\n\
- ldrb r2, [r5]\n\
- cmp r4, r2\n\
- blt _08019C32\n\
- b _08019F76\n\
+ mov r1, r8\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0xFD\n\
+ beq _08019C40\n\
+ cmp r0, 0xFE\n\
+ beq _08019C78\n\
+ movs r4, 0\n\
+ ldr r0, _08019C38 @ =gNoOfAllBanks\n\
+ adds r5, r0, 0\n\
+ ldrb r2, [r5]\n\
+ cmp r4, r2\n\
+ blt _08019C32\n\
+ b _08019F76\n\
_08019C32:\n\
- ldr r2, _08019C3C @ =gBattleMons\n\
- b _08019CB0\n\
- .align 2, 0\n\
+ ldr r2, _08019C3C @ =gBattleMons\n\
+ b _08019CB0\n\
+ .align 2, 0\n\
_08019C38: .4byte gNoOfAllBanks\n\
_08019C3C: .4byte gBattleMons\n\
_08019C40:\n\
- movs r4, 0\n\
- ldr r0, _08019C70 @ =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _08019C4C\n\
- b _08019F76\n\
+ movs r4, 0\n\
+ ldr r0, _08019C70 @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt _08019C4C\n\
+ b _08019F76\n\
_08019C4C:\n\
- ldr r5, _08019C74 @ =gStatuses3\n\
- movs r2, 0x80\n\
- lsls r2, 9\n\
- adds r1, r0, 0\n\
+ ldr r5, _08019C74 @ =gStatuses3\n\
+ movs r2, 0x80\n\
+ lsls r2, 9\n\
+ adds r1, r0, 0\n\
_08019C54:\n\
- lsls r0, r4, 2\n\
- adds r0, r5\n\
- ldr r0, [r0]\n\
- ands r0, r2\n\
- adds r3, r4, 0x1\n\
- cmp r0, 0\n\
- beq _08019C68\n\
- lsls r0, r3, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
+ lsls r0, r4, 2\n\
+ adds r0, r5\n\
+ ldr r0, [r0]\n\
+ ands r0, r2\n\
+ adds r3, r4, 0x1\n\
+ cmp r0, 0\n\
+ beq _08019C68\n\
+ lsls r0, r3, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
_08019C68:\n\
- adds r4, r3, 0\n\
- cmp r4, r1\n\
- blt _08019C54\n\
- b _08019F76\n\
- .align 2, 0\n\
+ adds r4, r3, 0\n\
+ cmp r4, r1\n\
+ blt _08019C54\n\
+ b _08019F76\n\
+ .align 2, 0\n\
_08019C70: .4byte gNoOfAllBanks\n\
_08019C74: .4byte gStatuses3\n\
_08019C78:\n\
- movs r4, 0\n\
- ldr r0, _08019CA8 @ =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _08019C84\n\
- b _08019F76\n\
+ movs r4, 0\n\
+ ldr r0, _08019CA8 @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt _08019C84\n\
+ b _08019F76\n\
_08019C84:\n\
- ldr r5, _08019CAC @ =gStatuses3\n\
- movs r2, 0x80\n\
- lsls r2, 10\n\
- adds r1, r0, 0\n\
+ ldr r5, _08019CAC @ =gStatuses3\n\
+ movs r2, 0x80\n\
+ lsls r2, 10\n\
+ adds r1, r0, 0\n\
_08019C8C:\n\
- lsls r0, r4, 2\n\
- adds r0, r5\n\
- ldr r0, [r0]\n\
- ands r0, r2\n\
- adds r3, r4, 0x1\n\
- cmp r0, 0\n\
- beq _08019CA0\n\
- lsls r0, r3, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
+ lsls r0, r4, 2\n\
+ adds r0, r5\n\
+ ldr r0, [r0]\n\
+ ands r0, r2\n\
+ adds r3, r4, 0x1\n\
+ cmp r0, 0\n\
+ beq _08019CA0\n\
+ lsls r0, r3, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
_08019CA0:\n\
- adds r4, r3, 0\n\
- cmp r4, r1\n\
- blt _08019C8C\n\
- b _08019F76\n\
- .align 2, 0\n\
+ adds r4, r3, 0\n\
+ cmp r4, r1\n\
+ blt _08019C8C\n\
+ b _08019F76\n\
+ .align 2, 0\n\
_08019CA8: .4byte gNoOfAllBanks\n\
_08019CAC: .4byte gStatuses3\n\
_08019CB0:\n\
- movs r0, 0x58\n\
- muls r0, r4\n\
- adds r0, r2\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- adds r3, r4, 0x1\n\
- cmp r0, r6\n\
- bne _08019CCA\n\
- mov r0, r8\n\
- strb r6, [r0]\n\
- lsls r0, r3, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
+ movs r0, 0x58\n\
+ muls r0, r4\n\
+ adds r0, r2\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ adds r3, r4, 0x1\n\
+ cmp r0, r6\n\
+ bne _08019CCA\n\
+ mov r0, r8\n\
+ strb r6, [r0]\n\
+ lsls r0, r3, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
_08019CCA:\n\
- adds r4, r3, 0\n\
- ldrb r1, [r5]\n\
- cmp r4, r1\n\
- blt _08019CB0\n\
- b _08019F76\n\
+ adds r4, r3, 0\n\
+ ldrb r1, [r5]\n\
+ cmp r4, r1\n\
+ blt _08019CB0\n\
+ b _08019F76\n\
_08019CD4:\n\
- movs r4, 0\n\
- ldr r0, _08019D10 @ =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _08019CE0\n\
- b _08019F76\n\
+ movs r4, 0\n\
+ ldr r0, _08019D10 @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt _08019CE0\n\
+ b _08019F76\n\
_08019CE0:\n\
- ldr r7, _08019D14 @ =gBattleMons\n\
- adds r2, r0, 0\n\
- movs r5, 0x58\n\
+ ldr r7, _08019D14 @ =gBattleMons\n\
+ adds r2, r0, 0\n\
+ movs r5, 0x58\n\
_08019CE6:\n\
- adds r0, r4, 0\n\
- muls r0, r5\n\
- adds r1, r0, r7\n\
- adds r0, r1, 0\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- adds r3, r4, 0x1\n\
- cmp r0, r6\n\
- bne _08019D08\n\
- ldrh r0, [r1, 0x28]\n\
- cmp r0, 0\n\
- beq _08019D08\n\
- mov r0, r8\n\
- strb r6, [r0]\n\
- lsls r0, r3, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
+ adds r0, r4, 0\n\
+ muls r0, r5\n\
+ adds r1, r0, r7\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ adds r3, r4, 0x1\n\
+ cmp r0, r6\n\
+ bne _08019D08\n\
+ ldrh r0, [r1, 0x28]\n\
+ cmp r0, 0\n\
+ beq _08019D08\n\
+ mov r0, r8\n\
+ strb r6, [r0]\n\
+ lsls r0, r3, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
_08019D08:\n\
- adds r4, r3, 0\n\
- cmp r4, r2\n\
- blt _08019CE6\n\
- b _08019F76\n\
- .align 2, 0\n\
+ adds r4, r3, 0\n\
+ cmp r4, r2\n\
+ blt _08019CE6\n\
+ b _08019F76\n\
+ .align 2, 0\n\
_08019D10: .4byte gNoOfAllBanks\n\
_08019D14: .4byte gBattleMons\n\
_08019D18:\n\
- movs r4, 0\n\
- ldr r0, _08019D50 @ =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _08019D24\n\
- b _08019F76\n\
+ movs r4, 0\n\
+ ldr r0, _08019D50 @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt _08019D24\n\
+ b _08019F76\n\
_08019D24:\n\
- ldr r7, _08019D54 @ =gBattleMons\n\
- adds r1, r0, 0\n\
- movs r5, 0x58\n\
- ldr r2, _08019D58 @ =gLastUsedAbility\n\
+ ldr r7, _08019D54 @ =gBattleMons\n\
+ adds r1, r0, 0\n\
+ movs r5, 0x58\n\
+ ldr r2, _08019D58 @ =gLastUsedAbility\n\
_08019D2C:\n\
- adds r0, r4, 0\n\
- muls r0, r5\n\
- adds r0, r7\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- adds r3, r4, 0x1\n\
- cmp r0, r6\n\
- bne _08019D48\n\
- cmp r4, r10\n\
- beq _08019D48\n\
- strb r6, [r2]\n\
- lsls r0, r3, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
+ adds r0, r4, 0\n\
+ muls r0, r5\n\
+ adds r0, r7\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ adds r3, r4, 0x1\n\
+ cmp r0, r6\n\
+ bne _08019D48\n\
+ cmp r4, r10\n\
+ beq _08019D48\n\
+ strb r6, [r2]\n\
+ lsls r0, r3, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
_08019D48:\n\
- adds r4, r3, 0\n\
- cmp r4, r1\n\
- blt _08019D2C\n\
- b _08019F76\n\
- .align 2, 0\n\
+ adds r4, r3, 0\n\
+ cmp r4, r1\n\
+ blt _08019D2C\n\
+ b _08019F76\n\
+ .align 2, 0\n\
_08019D50: .4byte gNoOfAllBanks\n\
_08019D54: .4byte gBattleMons\n\
_08019D58: .4byte gLastUsedAbility\n\
_08019D5C:\n\
- mov r0, r10\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- movs r4, 0\n\
- ldr r0, _08019DAC @ =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _08019D72\n\
- b _08019F76\n\
+ mov r0, r10\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ movs r4, 0\n\
+ ldr r0, _08019DAC @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt _08019D72\n\
+ b _08019F76\n\
_08019D72:\n\
- ldr r7, _08019DB0 @ =gBattleMons\n\
+ ldr r7, _08019DB0 @ =gBattleMons\n\
_08019D74:\n\
- lsls r0, r4, 24\n\
- lsrs r0, 24\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, r5\n\
- beq _08019DA0\n\
- movs r0, 0x58\n\
- muls r0, r4\n\
- adds r0, r7\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, r6\n\
- bne _08019DA0\n\
- ldr r0, _08019DB4 @ =gLastUsedAbility\n\
- strb r6, [r0]\n\
- mov r0, r9\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
+ lsls r0, r4, 24\n\
+ lsrs r0, 24\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, r5\n\
+ beq _08019DA0\n\
+ movs r0, 0x58\n\
+ muls r0, r4\n\
+ adds r0, r7\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, r6\n\
+ bne _08019DA0\n\
+ ldr r0, _08019DB4 @ =gLastUsedAbility\n\
+ strb r6, [r0]\n\
+ mov r0, r9\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
_08019DA0:\n\
- adds r4, 0x1\n\
- ldr r0, _08019DAC @ =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _08019D74\n\
- b _08019F76\n\
- .align 2, 0\n\
+ adds r4, 0x1\n\
+ ldr r0, _08019DAC @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt _08019D74\n\
+ b _08019F76\n\
+ .align 2, 0\n\
_08019DAC: .4byte gNoOfAllBanks\n\
_08019DB0: .4byte gBattleMons\n\
_08019DB4: .4byte gLastUsedAbility\n\
_08019DB8:\n\
- mov r0, r10\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- movs r4, 0\n\
- ldr r0, _08019E08 @ =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _08019DCE\n\
- b _08019F76\n\
+ mov r0, r10\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ movs r4, 0\n\
+ ldr r0, _08019E08 @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt _08019DCE\n\
+ b _08019F76\n\
_08019DCE:\n\
- ldr r7, _08019E0C @ =gBattleMons\n\
+ ldr r7, _08019E0C @ =gBattleMons\n\
_08019DD0:\n\
- lsls r0, r4, 24\n\
- lsrs r0, 24\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, r5\n\
- bne _08019DFC\n\
- movs r0, 0x58\n\
- muls r0, r4\n\
- adds r0, r7\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, r6\n\
- bne _08019DFC\n\
- ldr r0, _08019E10 @ =gLastUsedAbility\n\
- strb r6, [r0]\n\
- mov r0, r9\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
+ lsls r0, r4, 24\n\
+ lsrs r0, 24\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, r5\n\
+ bne _08019DFC\n\
+ movs r0, 0x58\n\
+ muls r0, r4\n\
+ adds r0, r7\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, r6\n\
+ bne _08019DFC\n\
+ ldr r0, _08019E10 @ =gLastUsedAbility\n\
+ strb r6, [r0]\n\
+ mov r0, r9\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
_08019DFC:\n\
- adds r4, 0x1\n\
- ldr r0, _08019E08 @ =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _08019DD0\n\
- b _08019F76\n\
- .align 2, 0\n\
+ adds r4, 0x1\n\
+ ldr r0, _08019E08 @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt _08019DD0\n\
+ b _08019F76\n\
+ .align 2, 0\n\
_08019E08: .4byte gNoOfAllBanks\n\
_08019E0C: .4byte gBattleMons\n\
_08019E10: .4byte gLastUsedAbility\n\
_08019E14:\n\
- ldr r0, _08019E30 @ =BattleScript_CastformChange\n\
- bl b_push_move_exec\n\
- ldr r0, _08019E34 @ =0x02000000\n\
- ldr r2, _08019E38 @ =0x00016003\n\
- adds r1, r0, r2\n\
- strb r6, [r1]\n\
- mov r1, r9\n\
- subs r1, 0x1\n\
- ldr r3, _08019E3C @ =0x0001609b\n\
- adds r0, r3\n\
- strb r1, [r0]\n\
- b _08019F76\n\
- .align 2, 0\n\
+ ldr r0, _08019E30 @ =BattleScript_CastformChange\n\
+ bl b_push_move_exec\n\
+ ldr r0, _08019E34 @ =0x02000000\n\
+ ldr r2, _08019E38 @ =0x00016003\n\
+ adds r1, r0, r2\n\
+ strb r6, [r1]\n\
+ mov r1, r9\n\
+ subs r1, 0x1\n\
+ ldr r3, _08019E3C @ =0x0001609b\n\
+ adds r0, r3\n\
+ strb r1, [r0]\n\
+ b _08019F76\n\
+ .align 2, 0\n\
_08019E30: .4byte BattleScript_CastformChange\n\
_08019E34: .4byte 0x02000000\n\
_08019E38: .4byte 0x00016003\n\
_08019E3C: .4byte 0x0001609b\n\
_08019E40:\n\
- ldr r0, _08019E5C @ =BattleScript_CastformChange\n\
- bl b_push_move_exec\n\
- ldr r0, _08019E60 @ =0x02000000\n\
- ldr r5, _08019E64 @ =0x00016003\n\
- adds r1, r0, r5\n\
- mov r2, r10\n\
- strb r2, [r1]\n\
- mov r1, r9\n\
- subs r1, 0x1\n\
- ldr r3, _08019E68 @ =0x0001609b\n\
- adds r0, r3\n\
- strb r1, [r0]\n\
- b _08019F92\n\
- .align 2, 0\n\
+ ldr r0, _08019E5C @ =BattleScript_CastformChange\n\
+ bl b_push_move_exec\n\
+ ldr r0, _08019E60 @ =0x02000000\n\
+ ldr r5, _08019E64 @ =0x00016003\n\
+ adds r1, r0, r5\n\
+ mov r2, r10\n\
+ strb r2, [r1]\n\
+ mov r1, r9\n\
+ subs r1, 0x1\n\
+ ldr r3, _08019E68 @ =0x0001609b\n\
+ adds r0, r3\n\
+ strb r1, [r0]\n\
+ b _08019F92\n\
+ .align 2, 0\n\
_08019E5C: .4byte BattleScript_CastformChange\n\
_08019E60: .4byte 0x02000000\n\
_08019E64: .4byte 0x00016003\n\
_08019E68: .4byte 0x0001609b\n\
_08019E6C:\n\
- mov r5, r8\n\
- strb r1, [r5]\n\
- ldr r0, [r2]\n\
- ldr r1, _08019E80 @ =0xfff7ffff\n\
- ands r0, r1\n\
- str r0, [r2]\n\
- ldr r0, _08019E84 @ =gUnknown_081D978C\n\
- bl b_push_move_exec\n\
- b _08019F1A\n\
- .align 2, 0\n\
+ mov r5, r8\n\
+ strb r1, [r5]\n\
+ ldr r0, [r2]\n\
+ ldr r1, _08019E80 @ =0xfff7ffff\n\
+ ands r0, r1\n\
+ str r0, [r2]\n\
+ ldr r0, _08019E84 @ =gUnknown_081D978C\n\
+ bl b_push_move_exec\n\
+ b _08019F1A\n\
+ .align 2, 0\n\
_08019E80: .4byte 0xfff7ffff\n\
_08019E84: .4byte gUnknown_081D978C\n\
_08019E88:\n\
- ldr r0, _08019EDC @ =BattleScript_TraceActivates\n\
- bl b_push_move_exec\n\
- ldr r1, _08019EE0 @ =gStatuses3\n\
- ldr r2, [sp, 0x18]\n\
- adds r1, r2, r1\n\
- ldr r0, [r1]\n\
- ldr r2, _08019EE4 @ =0xffefffff\n\
- ands r0, r2\n\
- str r0, [r1]\n\
- ldr r0, _08019EE8 @ =0x02000000\n\
- ldr r3, _08019EEC @ =0x00016003\n\
- adds r0, r3\n\
- strb r4, [r0]\n\
- ldr r1, _08019EF0 @ =gBattleTextBuff1\n\
- movs r4, 0xFD\n\
- strb r4, [r1]\n\
- movs r0, 0x4\n\
- strb r0, [r1, 0x1]\n\
- ldr r2, _08019EF4 @ =gActiveBank\n\
- ldrb r0, [r2]\n\
- strb r0, [r1, 0x2]\n\
- ldr r3, _08019EF8 @ =gBattlePartyID\n\
- ldrb r0, [r2]\n\
- lsls r0, 1\n\
- adds r0, r3\n\
- ldrh r0, [r0]\n\
- strb r0, [r1, 0x3]\n\
- movs r0, 0xFF\n\
- strb r0, [r1, 0x4]\n\
- ldr r1, _08019EFC @ =gBattleTextBuff2\n\
- strb r4, [r1]\n\
- movs r0, 0x9\n\
- strb r0, [r1, 0x1]\n\
- ldr r0, _08019F00 @ =gLastUsedAbility\n\
- ldrb r0, [r0]\n\
- strb r0, [r1, 0x2]\n\
- movs r0, 0x1\n\
- negs r0, r0\n\
- strb r0, [r1, 0x3]\n\
- b _08019F76\n\
- .align 2, 0\n\
+ ldr r0, _08019EDC @ =BattleScript_TraceActivates\n\
+ bl b_push_move_exec\n\
+ ldr r1, _08019EE0 @ =gStatuses3\n\
+ ldr r2, [sp, 0x18]\n\
+ adds r1, r2, r1\n\
+ ldr r0, [r1]\n\
+ ldr r2, _08019EE4 @ =0xffefffff\n\
+ ands r0, r2\n\
+ str r0, [r1]\n\
+ ldr r0, _08019EE8 @ =0x02000000\n\
+ ldr r3, _08019EEC @ =0x00016003\n\
+ adds r0, r3\n\
+ strb r4, [r0]\n\
+ ldr r1, _08019EF0 @ =gBattleTextBuff1\n\
+ movs r4, 0xFD\n\
+ strb r4, [r1]\n\
+ movs r0, 0x4\n\
+ strb r0, [r1, 0x1]\n\
+ ldr r2, _08019EF4 @ =gActiveBank\n\
+ ldrb r0, [r2]\n\
+ strb r0, [r1, 0x2]\n\
+ ldr r3, _08019EF8 @ =gBattlePartyID\n\
+ ldrb r0, [r2]\n\
+ lsls r0, 1\n\
+ adds r0, r3\n\
+ ldrh r0, [r0]\n\
+ strb r0, [r1, 0x3]\n\
+ movs r0, 0xFF\n\
+ strb r0, [r1, 0x4]\n\
+ ldr r1, _08019EFC @ =gBattleTextBuff2\n\
+ strb r4, [r1]\n\
+ movs r0, 0x9\n\
+ strb r0, [r1, 0x1]\n\
+ ldr r0, _08019F00 @ =gLastUsedAbility\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r1, 0x2]\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ strb r0, [r1, 0x3]\n\
+ b _08019F76\n\
+ .align 2, 0\n\
_08019EDC: .4byte BattleScript_TraceActivates\n\
_08019EE0: .4byte gStatuses3\n\
_08019EE4: .4byte 0xffefffff\n\
@@ -5525,88 +5525,88 @@ _08019EF8: .4byte gBattlePartyID\n\
_08019EFC: .4byte gBattleTextBuff2\n\
_08019F00: .4byte gLastUsedAbility\n\
_08019F04:\n\
- mov r5, r8\n\
- strb r1, [r5]\n\
- ldr r0, [r2]\n\
- ldr r1, _08019F30 @ =0xfff7ffff\n\
- ands r0, r1\n\
- str r0, [r2]\n\
- bl b_movescr_stack_push_cursor\n\
- ldr r1, _08019F34 @ =gBattlescriptCurrInstr\n\
- ldr r0, _08019F38 @ =gUnknown_081D9795\n\
- str r0, [r1]\n\
+ mov r5, r8\n\
+ strb r1, [r5]\n\
+ ldr r0, [r2]\n\
+ ldr r1, _08019F30 @ =0xfff7ffff\n\
+ ands r0, r1\n\
+ str r0, [r2]\n\
+ bl b_movescr_stack_push_cursor\n\
+ ldr r1, _08019F34 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08019F38 @ =gUnknown_081D9795\n\
+ str r0, [r1]\n\
_08019F1A:\n\
- ldr r0, _08019F3C @ =0x02000000\n\
- ldr r1, _08019F40 @ =0x000160dd\n\
- adds r0, r1\n\
- strb r4, [r0]\n\
+ ldr r0, _08019F3C @ =0x02000000\n\
+ ldr r1, _08019F40 @ =0x000160dd\n\
+ adds r0, r1\n\
+ strb r4, [r0]\n\
_08019F22:\n\
- mov r0, r9\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
- b _08019F76\n\
- .align 2, 0\n\
+ mov r0, r9\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
+ b _08019F76\n\
+ .align 2, 0\n\
_08019F30: .4byte 0xfff7ffff\n\
_08019F34: .4byte gBattlescriptCurrInstr\n\
_08019F38: .4byte gUnknown_081D9795\n\
_08019F3C: .4byte 0x02000000\n\
_08019F40: .4byte 0x000160dd\n\
_08019F44:\n\
- movs r4, 0\n\
- ldr r0, _08019FA4 @ =gNoOfAllBanks\n\
- ldrb r1, [r0]\n\
- cmp r4, r1\n\
- bge _08019F76\n\
- ldr r0, _08019FA8 @ =gBattleMons\n\
- adds r2, r1, 0\n\
- adds r1, r0, 0\n\
- adds r1, 0x20\n\
- ldr r3, _08019FAC @ =gLastUsedAbility\n\
+ movs r4, 0\n\
+ ldr r0, _08019FA4 @ =gNoOfAllBanks\n\
+ ldrb r1, [r0]\n\
+ cmp r4, r1\n\
+ bge _08019F76\n\
+ ldr r0, _08019FA8 @ =gBattleMons\n\
+ adds r2, r1, 0\n\
+ adds r1, r0, 0\n\
+ adds r1, 0x20\n\
+ ldr r3, _08019FAC @ =gLastUsedAbility\n\
_08019F58:\n\
- ldrb r0, [r1]\n\
- cmp r0, r6\n\
- bne _08019F6E\n\
- cmp r4, r10\n\
- beq _08019F6E\n\
- strb r6, [r3]\n\
- mov r0, r9\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
+ ldrb r0, [r1]\n\
+ cmp r0, r6\n\
+ bne _08019F6E\n\
+ cmp r4, r10\n\
+ beq _08019F6E\n\
+ strb r6, [r3]\n\
+ mov r0, r9\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
_08019F6E:\n\
- adds r1, 0x58\n\
- adds r4, 0x1\n\
- cmp r4, r2\n\
- blt _08019F58\n\
+ adds r1, 0x58\n\
+ adds r4, 0x1\n\
+ cmp r4, r2\n\
+ blt _08019F58\n\
_08019F76:\n\
- mov r2, r9\n\
- cmp r2, 0\n\
- beq _08019F92\n\
+ mov r2, r9\n\
+ cmp r2, 0\n\
+ beq _08019F92\n\
_08019F7C:\n\
- ldr r3, [sp, 0x4]\n\
- cmp r3, 0xB\n\
- bhi _08019F92\n\
- ldr r1, _08019FAC @ =gLastUsedAbility\n\
- ldrb r0, [r1]\n\
- cmp r0, 0xFF\n\
- beq _08019F92\n\
- adds r1, r0, 0\n\
- mov r0, r10\n\
- bl RecordAbilityBattle\n\
+ ldr r3, [sp, 0x4]\n\
+ cmp r3, 0xB\n\
+ bhi _08019F92\n\
+ ldr r1, _08019FAC @ =gLastUsedAbility\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0xFF\n\
+ beq _08019F92\n\
+ adds r1, r0, 0\n\
+ mov r0, r10\n\
+ bl RecordAbilityBattle\n\
_08019F92:\n\
- mov r0, r9\n\
- add sp, 0x28\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
+ mov r0, r9\n\
+ add sp, 0x28\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
_08019FA4: .4byte gNoOfAllBanks\n\
_08019FA8: .4byte gBattleMons\n\
_08019FAC: .4byte gLastUsedAbility\n\
diff --git a/src/battle_4.c b/src/battle_4.c
index ecd7fc34b..d37ad197d 100644
--- a/src/battle_4.c
+++ b/src/battle_4.c
@@ -82,7 +82,7 @@ extern void (*gBattleMainFunc)(void);
extern struct Window gUnknown_03004210;
extern const u8 gUnknown_08400D7A[];
extern u8 gPlayerPartyCount;
-extern u16 word_2024E82; //move to learn
+extern u16 gMoveToLearn; //move to learn
extern const u8 gTrainerMoney[];
extern u16 gRandomMove;
extern u8* gBattleScriptsEffectsTable[];
@@ -130,7 +130,7 @@ u16 sub_803FBFC(u8 a);
u8 GetBankByPlayerAI(u8 ID);
void sub_8012258(u8);
void sub_80157C4(u8 bank); //update sent pokes in battle
-//sub_803B7C8 teach poke a move
+//MonTryLearningNewMove teach poke a move
u16 GiveMoveToBattleMon(struct BattlePokemon *mon, u16 move);
void IncrementGameStat(u8 index);
u8 GetScaledHPFraction(s16 hp, s16 maxhp, u8 scale);
@@ -145,7 +145,7 @@ void sub_802BBD4(u8 r0, u8 r1, u8 r2, u8 r3, u8 sp0);
void nullsub_6(void);
void ReshowBattleScreenAfterMenu(void);
void sub_800F808(void);
-void sub_80B79B8(u32* moneySaveblock, u32 to_give);
+void AddMoney(u32* moneySaveblock, u32 to_give);
void sub_80156DC(void); //set sentpokes value
bool8 sub_8014AB8(u8 bank); //can run from battle
u8 CountAliveMons(u8 caseID);
@@ -155,7 +155,7 @@ u8 GetMoveTarget(u16 move, u8 targetbyte); //get target of move
void sub_80153D0(u8 atk); //pressure perish song pp decrement
u8 CastformDataTypeChange(u8 bank);
void b_push_move_exec(u8* bs_ptr);
-u8 sav1_map_get_light_level(void);
+u8 Overworld_GetMapTypeOfSaveblockLocation(void);
u8 CalculatePlayerPartyCount(void);
u16 Sqrt(u32 num);
u8 sub_809070C(u16 nationalNum, u32 TiD, u32 PiD); //task prepare poke dex display
@@ -255,15 +255,6 @@ extern u8 gUnknown_081D9468[];
#define CMP_COMMON_BITS 0x4
#define CMP_NO_COMMON_BITS 0x5
-#define BATTLE_WON 0x1
-#define BATTLE_LOST 0x2
-#define BATTLE_DREW 0x3
-#define BATTLE_RAN 0x4
-#define BATTLE_PLAYER_TELEPORTED 0x5
-#define BATTLE_POKE_FLED 0x6
-#define BATTLE_CAUGHT 0x7
-#define BATTLE_OPPONENT_TELEPORTED 0xA
-
#define uBYTE0_16(value)(( (u8) (((u16)(value) & (0x000000FF)) >> 0x00)))
#define uBYTE1_16(value)(( (u8) (((u16)(value) & (0x0000FF00)) >> 0x08)))
@@ -5089,7 +5080,7 @@ static void atk1A_faint_animation(void)
if (gBattleExecBuffer == 0)
{
gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
- EmitFaintAnimation(0);
+ Emitcmd10(0);
MarkBufferBankForExecution(gActiveBank);
gBattlescriptCurrInstr += 2;
}
@@ -9614,7 +9605,7 @@ static void atk4E_switchin_anim(void)
GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), 2);
}
gAbsentBankFlags &= ~(gBitTable[gActiveBank]);
- EmitSwitchInAnim(0, gBattlePartyID[gActiveBank], BSScriptRead8(gBattlescriptCurrInstr + 2));
+ EmitSendOutPoke(0, gBattlePartyID[gActiveBank], BSScriptRead8(gBattlescriptCurrInstr + 2));
MarkBufferBankForExecution(gActiveBank);
gBattlescriptCurrInstr += 3;
}
@@ -9935,7 +9926,7 @@ _08022BC4:\n\
bics r0, r1\n\
str r0, [r2]\n\
movs r0, 0\n\
- bl dp01_build_cmdbuf_x2A_2A_2A_2A\n\
+ bl Emitcmd42\n\
ldrb r0, [r4]\n\
bl MarkBufferBankForExecution\n\
b _08022C7E\n\
@@ -10020,7 +10011,7 @@ _08022C7E:\n\
bics r0, r1\n\
str r0, [r2]\n\
movs r0, 0\n\
- bl dp01_build_cmdbuf_x2A_2A_2A_2A\n\
+ bl Emitcmd42\n\
ldrb r0, [r4]\n\
bl MarkBufferBankForExecution\n\
b _08022D40\n\
@@ -10104,7 +10095,7 @@ _08022D40:\n\
bics r0, r1\n\
str r0, [r2]\n\
movs r0, 0\n\
- bl dp01_build_cmdbuf_x2A_2A_2A_2A\n\
+ bl Emitcmd42\n\
ldrb r0, [r4]\n\
bl MarkBufferBankForExecution\n\
b _08022DF6\n\
@@ -10191,7 +10182,7 @@ _08022DF6:\n\
bics r0, r1\n\
str r0, [r2]\n\
movs r0, 0\n\
- bl dp01_build_cmdbuf_x2A_2A_2A_2A\n\
+ bl Emitcmd42\n\
ldrb r0, [r4]\n\
bl MarkBufferBankForExecution\n\
b _08022EB8\n\
@@ -10389,7 +10380,7 @@ _08022F92:\n\
bics r0, r1\n\
str r0, [r7]\n\
movs r0, 0\n\
- bl dp01_build_cmdbuf_x2A_2A_2A_2A\n\
+ bl Emitcmd42\n\
ldrb r0, [r6]\n\
bl MarkBufferBankForExecution\n\
b _0802303A\n\
@@ -10466,7 +10457,7 @@ _0802303A:\n\
bics r0, r1\n\
str r0, [r2]\n\
movs r0, 0\n\
- bl dp01_build_cmdbuf_x2A_2A_2A_2A\n\
+ bl Emitcmd42\n\
ldrb r0, [r5]\n\
bl MarkBufferBankForExecution\n\
b _080230EE\n\
@@ -10915,7 +10906,7 @@ static void atk54_effectiveness_sound(void)
static void atk55_play_sound(void)
{
gActiveBank = gBankAttacker;
- EmitPlaySound(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1));
+ Emitcmd44(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1));
MarkBufferBankForExecution(gActiveBank);
gBattlescriptCurrInstr += 3;
}
@@ -10931,7 +10922,7 @@ static void atk56_fainting_cry(void)
static void atk57(void)
{
gActiveBank = GetBankByPlayerAI(0);
- dp01_build_cmdbuf_x37_a(0, gBattleOutcome);
+ Emitcmd55(0, gBattleOutcome);
MarkBufferBankForExecution(gActiveBank);
gBattlescriptCurrInstr += 1;
}
@@ -10949,9 +10940,9 @@ void atk59_learnmove_inbattle(void)
u8* loc1 = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
u8* loc2 = BSScriptReadPtr(gBattlescriptCurrInstr + 5);
- u16 ret = sub_803B7C8(&gPlayerParty[BATTLE_STRUCT->expGetterID], BSScriptRead8(gBattlescriptCurrInstr + 9));
+ u16 ret = MonTryLearningNewMove(&gPlayerParty[BATTLE_STRUCT->expGetterID], BSScriptRead8(gBattlescriptCurrInstr + 9));
while (ret == 0xFFFE)
- ret = sub_803B7C8(&gPlayerParty[BATTLE_STRUCT->expGetterID], 0);
+ ret = MonTryLearningNewMove(&gPlayerParty[BATTLE_STRUCT->expGetterID], 0);
if (ret == 0)
{
@@ -11038,7 +11029,7 @@ static void atk5A(void)
case 2:
if (!gPaletteFade.active)
{
- sub_809D9F0(gPlayerParty, BATTLE_STRUCT->expGetterID, gPlayerPartyCount - 1, ReshowBattleScreenAfterMenu, word_2024E82);
+ sub_809D9F0(gPlayerParty, BATTLE_STRUCT->expGetterID, gPlayerPartyCount - 1, ReshowBattleScreenAfterMenu, gMoveToLearn);
BATTLE_STRUCT->atk5A_StateTracker++;
}
break;
@@ -11073,18 +11064,18 @@ static void atk5A(void)
}
ptr[0] = 0xFF;
RemoveMonPPBonus(&gPlayerParty[BATTLE_STRUCT->expGetterID], move_pos);
- SetMonMoveSlot(&gPlayerParty[BATTLE_STRUCT->expGetterID], word_2024E82, move_pos);
+ SetMonMoveSlot(&gPlayerParty[BATTLE_STRUCT->expGetterID], gMoveToLearn, move_pos);
if (gBattlePartyID[0] == BATTLE_STRUCT->expGetterID && !(gBattleMons[0].status2 & STATUS2_TRANSFORMED)
&& !(gDisableStructs[0].unk18_b & gBitTable[move_pos]))
{
RemoveBattleMonPPBonus(&gBattleMons[0], move_pos);
- SetBattleMonMoveSlot(&gBattleMons[0], word_2024E82, move_pos);
+ SetBattleMonMoveSlot(&gBattleMons[0], gMoveToLearn, move_pos);
}
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && gBattlePartyID[2] == BATTLE_STRUCT->expGetterID && !(gBattleMons[2].status2 & STATUS2_TRANSFORMED)
&& !(gDisableStructs[2].unk18_b & gBitTable[move_pos]))
{
RemoveBattleMonPPBonus(&gBattleMons[2], move_pos);
- SetBattleMonMoveSlot(&gBattleMons[2], word_2024E82, move_pos);
+ SetBattleMonMoveSlot(&gBattleMons[2], gMoveToLearn, move_pos);
}
}
}
@@ -11206,7 +11197,7 @@ static void atk5D_getmoneyreward(void)
money_to_give = 1 * gTrainerMoney[i * 4 + 1] * money_to_give;
}
- sub_80B79B8(&gSaveBlock1.money, money_to_give);
+ AddMoney(&gSaveBlock1.money, money_to_give);
gBattleTextBuff1[0] = 0xFD;
gBattleTextBuff1[1] = 1;
gBattleTextBuff1[2] = 4;
@@ -11378,7 +11369,7 @@ _0802413C:\n\
_08024140:\n\
mov r0, r8\n\
adds r1, r4, 0\n\
- bl sub_80B79B8\n\
+ bl AddMoney\n\
ldr r1, _0802418C @ =gBattleTextBuff1\n\
movs r0, 0xFD\n\
strb r0, [r1]\n\
@@ -11500,7 +11491,7 @@ static void atk61_8025BA4(void)
hpStatus[i].status = GetMonData(&party[i], MON_DATA_STATUS);
}
}
- dp01_build_cmdbuf_x30_TODO(0, (u8*)(hpStatus), 1);
+ Emitcmd48(0, (u8*)(hpStatus), 1);
MarkBufferBankForExecution(gActiveBank);
gBattlescriptCurrInstr += 2;
}
@@ -11508,7 +11499,7 @@ static void atk61_8025BA4(void)
static void atk62_08025C6C(void)
{
gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
- dp01_build_cmdbuf_x31_31_31_31(0);
+ Emitcmd49(0);
MarkBufferBankForExecution(gActiveBank);
gBattlescriptCurrInstr += 2;
}
@@ -12142,8 +12133,8 @@ void sub_8024CEC(void)
{
gBattleTextBuff2[0] = 0xFD;
gBattleTextBuff2[1] = 2;
- gBattleTextBuff2[2] = (word_2024E82);
- gBattleTextBuff2[3] = uBYTE1_16(word_2024E82);
+ gBattleTextBuff2[2] = (gMoveToLearn);
+ gBattleTextBuff2[3] = uBYTE1_16(gMoveToLearn);
gBattleTextBuff2[4] = 0xFF;
}
@@ -13675,7 +13666,7 @@ static void atk91_givepaydaymoney(void)
{
if (!(gBattleTypeFlags & BATTLE_TYPE_LINK) && gPaydayMoney)
{
- sub_80B79B8(&gSaveBlock1.money, gPaydayMoney * BATTLE_STRUCT->moneyMultiplier);
+ AddMoney(&gSaveBlock1.money, gPaydayMoney * BATTLE_STRUCT->moneyMultiplier);
gBattleTextBuff1[0] = 0xFD;
gBattleTextBuff1[1] = 1;
gBattleTextBuff1[2] = 2;
@@ -17059,28 +17050,28 @@ static void atkE4_getsecretpowereffect(void)
{
switch (gBattleTerrain)
{
- case 0:
+ case BATTLE_TERRAIN_GRASS:
gBattleCommunication[MOVE_EFFECT_BYTE] = 2;
break;
- case 1:
+ case BATTLE_TERRAIN_LONG_GRASS:
gBattleCommunication[MOVE_EFFECT_BYTE] = 1;
break;
- case 2:
+ case BATTLE_TERRAIN_SAND:
gBattleCommunication[MOVE_EFFECT_BYTE] = 27;
break;
- case 3:
+ case BATTLE_TERRAIN_UNDERWATER:
gBattleCommunication[MOVE_EFFECT_BYTE] = 23;
break;
- case 4:
+ case BATTLE_TERRAIN_WATER:
gBattleCommunication[MOVE_EFFECT_BYTE] = 22;
break;
- case 5:
+ case BATTLE_TERRAIN_POND:
gBattleCommunication[MOVE_EFFECT_BYTE] = 24;
break;
- case 6:
+ case BATTLE_TERRAIN_MOUNTAIN:
gBattleCommunication[MOVE_EFFECT_BYTE] = 7;
break;
- case 7:
+ case BATTLE_TERRAIN_CAVE:
gBattleCommunication[MOVE_EFFECT_BYTE] = 8;
break;
default:
@@ -17278,13 +17269,13 @@ void atkEF_pokeball_catch_calculation(void)
gBankTarget = gBankAttacker ^ 1;
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
{
- EmitBallThrowAnim(0, 5);
+ EmitBallThrow(0, 5);
MarkBufferBankForExecution(gActiveBank);
gBattlescriptCurrInstr = BattleScript_TrainerBallBlock;
}
else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL)
{
- EmitBallThrowAnim(0, 4);
+ EmitBallThrow(0, 4);
MarkBufferBankForExecution(gActiveBank);
gBattlescriptCurrInstr = BattleScript_WallyBallThrow;
}
@@ -17307,7 +17298,7 @@ void atkEF_pokeball_catch_calculation(void)
ball_multiplier = 10;
break;
case ITEM_DIVE_BALL:
- if (sav1_map_get_light_level() == 5)
+ if (Overworld_GetMapTypeOfSaveblockLocation() == 5)
ball_multiplier = 35;
else
ball_multiplier = 10;
@@ -17362,7 +17353,7 @@ void atkEF_pokeball_catch_calculation(void)
}
if (odds > 254) //poke caught
{
- EmitBallThrowAnim(0, 4);
+ EmitBallThrow(0, 4);
MarkBufferBankForExecution(gActiveBank);
gBattlescriptCurrInstr = BattleScript_SuccessBallThrow;
SetMonData(&gEnemyParty[gBattlePartyID[gBankTarget]], MON_DATA_POKEBALL, (const void*) &gLastUsedItem);
@@ -17379,7 +17370,7 @@ void atkEF_pokeball_catch_calculation(void)
for (shakes = 0; shakes < 4 && Random() < odds; shakes++) {}
if (gLastUsedItem == ITEM_MASTER_BALL)
shakes = 4; //why calculate the shakes before that check?
- EmitBallThrowAnim(0, shakes);
+ EmitBallThrow(0, shakes);
MarkBufferBankForExecution(gActiveBank);
if (shakes == 4) //poke caught, copy of the code above
{
diff --git a/src/battle_6.c b/src/battle_6.c
deleted file mode 100644
index c833aef5e..000000000
--- a/src/battle_6.c
+++ /dev/null
@@ -1,1507 +0,0 @@
-#include "global.h"
-#include "battle.h"
-#include "battle_interface.h"
-#include "battle_message.h"
-#include "data2.h"
-#include "menu_cursor.h"
-#include "palette.h"
-#include "pokemon.h"
-#include "rom3.h"
-#include "songs.h"
-#include "sound.h"
-#include "sprite.h"
-#include "string_util.h"
-#include "task.h"
-#include "text.h"
-#include "util.h"
-
-//Possibly PokemonSubstruct1
-struct UnknownStruct3
-{
- u16 moves[4];
- u8 pp[4];
- u8 ppBonuses;
-};
-
-extern u16 gUnknown_030042A4;
-extern u16 gUnknown_030042A0;
-
-extern struct Window gUnknown_03004210;
-
-extern void (*gBattleBankFunc[])(void);
-
-extern u8 gActiveBank;
-extern u8 gActionSelectionCursor[];
-extern u8 gDisplayedStringBattle[];
-extern u8 gMoveSelectionCursor[];
-extern u8 gBattleBufferA[][0x200];
-extern u8 gBankInMenu;
-extern u16 gBattlePartyID[];
-extern u8 gHealthboxIDs[];
-extern u8 gDoingBattleAnim;
-extern u8 gObjectBankIDs[];
-extern u16 gBattleTypeFlags;
-extern u8 gBattleOutcome;
-extern void (*gAnimScriptCallback)(void);
-extern bool8 gAnimScriptActive;
-extern u16 gMovePowerMoveAnim;
-extern u32 gMoveDmgMoveAnim;
-extern u8 gHappinessMoveAnim;
-extern u16 gWeatherMoveAnim;
-extern u32 *gDisableStructMoveAnim;
-extern u32 gPID_perBank[];
-extern u8 gBattleMonForms[];
-extern u16 gUnknown_02024DE8;
-extern u8 gUnknown_02024E68[];
-extern struct SpriteTemplate gUnknown_02024E8C;
-extern u8 gUnknown_0202F7C4;
-extern u8 gUnknown_02038470[];
-extern u16 gUnknown_030041B0;
-extern u16 gUnknown_030041B4;
-extern u16 gUnknown_030041B8;
-extern u16 gUnknown_03004280;
-extern u16 gUnknown_03004288;
-extern u16 gUnknown_030042A4;
-extern u16 gUnknown_030042C0;
-extern u8 gUnknown_03004344;
-extern u8 gUnknown_0300434C[];
-
-extern const u8 gUnknown_08400CA8[];
-extern const u8 gUnknown_08400CF3[];
-extern const u8 gUnknown_08400D38[];
-
-#if ENGLISH
-#define SUB_803037C_TILE_DATA_OFFSET 440
-#elif GERMAN
-#define SUB_803037C_TILE_DATA_OFFSET 444
-#endif
-
-extern void sub_802C68C(void);
-extern void sub_802E1B0(void);
-extern void sub_802E3B4();
-extern void sub_802E220();
-extern void sub_802E2D4();
-extern void sub_802E004(void);
-extern void sub_802DF30(void);
-extern void BattleMusicStop(void);
-extern void PlayerBufferExecCompleted(void);
-extern void bx_t1_healthbar_update(void);
-extern void nullsub_91(void);
-extern void sub_802D924(u8);
-extern void sub_802E434(void);
-extern bool8 mplay_80342A4(u8);
-extern void move_anim_start_t2_for_situation();
-extern void bx_blink_t1(void);
-extern void sub_8047858();
-extern u8 GetBankSide(u8);
-extern void sub_80E43C0();
-extern void oamt_add_pos2_onto_pos1();
-extern void sub_8078B34(struct Sprite *);
-extern void oamt_set_x3A_32();
-extern void sub_80318FC();
-extern bool8 IsDoubleBattle(void);
-extern void sub_802D500(void);
-extern void dp11b_obj_free();
-extern bool8 sub_8078874(u8);
-extern bool8 move_anim_start_t3();
-extern void sub_802E460(void);
-extern void b_link_standby_message(void);
-extern void sub_802D18C(void);
-extern void sub_802DF18(void);
-extern void BufferStringBattle();
-extern void sub_80326EC();
-extern void ExecuteMoveAnim();
-extern void sub_8031F24(void);
-extern void sub_80324BC();
-extern u8 sub_8031720();
-extern void bx_wait_t1(void);
-extern u8 GetBankByPlayerAI(u8);
-extern void sub_802DE10(void);
-extern void sub_80105EC(struct Sprite *);
-extern void sub_802D274(void);
-extern void sub_802D23C(void);
-extern u8 GetBankIdentity(u8);
-extern void sub_8031AF4();
-extern void sub_80313A0(struct Sprite *);
-extern void sub_802D204(void);
-extern u8 sub_8079E90();
-extern void sub_802DEAC(void);
-extern void sub_80312F0(struct Sprite *);
-extern u8 sub_8077ABC();
-extern u8 sub_8077F68();
-extern u8 sub_8046400();
-extern void sub_802D798(void);
-extern void bx_0802E404(void);
-
-u32 dp01_getattr_by_ch1_for_player_pokemon_(u8, u8 *);
-void dp01_setattr_by_ch1_for_player_pokemon(u8);
-void sub_802F934(u8, u8);
-void sub_802FB2C(void);
-void sub_8030190(void);
-void sub_80304A8(void);
-void sub_8030E38(struct Sprite *);
-void task05_08033660(u8);
-void sub_8031064(void);
-
-void PlayerHandleGetAttributes(void)
-{
- u8 unkData[0x100];
- u32 offset = 0;
- u8 r4;
- s32 i;
-
- if (gBattleBufferA[gActiveBank][2] == 0)
- {
- offset += dp01_getattr_by_ch1_for_player_pokemon_(gBattlePartyID[gActiveBank], unkData);
- }
- else
- {
- r4 = gBattleBufferA[gActiveBank][2];
- for (i = 0; i < 6; i++)
- {
- if (r4 & 1)
- offset += dp01_getattr_by_ch1_for_player_pokemon_(i, unkData + offset);
- r4 >>= 1;
- }
- }
- dp01_build_cmdbuf_x1D_1D_numargs_varargs(1, offset, unkData);
- PlayerBufferExecCompleted();
-}
-
-// Duplicate of dp01_getattr_by_ch1_for_player_pokemon
-u32 dp01_getattr_by_ch1_for_player_pokemon_(u8 a, u8 *buffer)
-{
- struct BattlePokemon battlePokemon;
- struct UnknownStruct3 moveData;
- u8 nickname[20];
- u8 *src;
- s16 data16;
- u32 data32;
- s32 size = 0;
-
- switch (gBattleBufferA[gActiveBank][1])
- {
- case 0:
- battlePokemon.species = GetMonData(&gPlayerParty[a], MON_DATA_SPECIES);
- battlePokemon.item = GetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM);
- for (size = 0; size < 4; size++)
- {
- battlePokemon.moves[size] = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + size);
- battlePokemon.pp[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + size);
- }
- battlePokemon.ppBonuses = GetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES);
- battlePokemon.friendship = GetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP);
- battlePokemon.experience = GetMonData(&gPlayerParty[a], MON_DATA_EXP);
- battlePokemon.hpIV = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV);
- battlePokemon.attackIV = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV);
- battlePokemon.defenseIV = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV);
- battlePokemon.speedIV = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV);
- battlePokemon.spAttackIV = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV);
- battlePokemon.spDefenseIV = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV);
- battlePokemon.personality = GetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY);
- battlePokemon.status1 = GetMonData(&gPlayerParty[a], MON_DATA_STATUS);
- battlePokemon.level = GetMonData(&gPlayerParty[a], MON_DATA_LEVEL);
- battlePokemon.hp = GetMonData(&gPlayerParty[a], MON_DATA_HP);
- battlePokemon.maxHP = GetMonData(&gPlayerParty[a], MON_DATA_MAX_HP);
- battlePokemon.attack = GetMonData(&gPlayerParty[a], MON_DATA_ATK);
- battlePokemon.defense = GetMonData(&gPlayerParty[a], MON_DATA_DEF);
- battlePokemon.speed = GetMonData(&gPlayerParty[a], MON_DATA_SPD);
- battlePokemon.spAttack = GetMonData(&gPlayerParty[a], MON_DATA_SPATK);
- battlePokemon.spDefense = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF);
- battlePokemon.isEgg = GetMonData(&gPlayerParty[a], MON_DATA_IS_EGG);
- battlePokemon.altAbility = GetMonData(&gPlayerParty[a], MON_DATA_ALT_ABILITY);
- battlePokemon.otId = GetMonData(&gPlayerParty[a], MON_DATA_OT_ID);
- GetMonData(&gPlayerParty[a], MON_DATA_NICKNAME, nickname);
- StringCopy10(battlePokemon.nickname, nickname);
- GetMonData(&gPlayerParty[a], MON_DATA_OT_NAME, battlePokemon.otName);
- src = (u8 *)&battlePokemon;
- for (size = 0; size < sizeof(battlePokemon); size++)
- buffer[size] = src[size];
- break;
- case 1:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPECIES);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 2:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 3:
- for (size = 0; size < 4; size++)
- {
- moveData.moves[size] = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + size);
- moveData.pp[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + size);
- }
- moveData.ppBonuses = GetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES);
- src = (u8 *)&moveData;
- for (size = 0; size < sizeof(moveData); size++)
- buffer[size] = src[size];
- break;
- case 4:
- case 5:
- case 6:
- case 7:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - 4);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 8:
- for (size = 0; size < 4; size++)
- buffer[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + size);
- buffer[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES);
- size++;
- break;
- case 9:
- case 10:
- case 11:
- case 12:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9);
- size = 1;
- break;
- case 17:
- data32 = GetMonData(&gPlayerParty[a], MON_DATA_OT_ID);
- buffer[0] = (data32 & 0x000000FF);
- buffer[1] = (data32 & 0x0000FF00) >> 8;
- buffer[2] = (data32 & 0x00FF0000) >> 16;
- size = 3;
- break;
- case 18:
- data32 = GetMonData(&gPlayerParty[a], MON_DATA_EXP);
- buffer[0] = (data32 & 0x000000FF);
- buffer[1] = (data32 & 0x0000FF00) >> 8;
- buffer[2] = (data32 & 0x00FF0000) >> 16;
- size = 3;
- break;
- case 19:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_HP_EV);
- size = 1;
- break;
- case 20:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_ATK_EV);
- size = 1;
- break;
- case 21:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_DEF_EV);
- size = 1;
- break;
- case 22:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPD_EV);
- size = 1;
- break;
- case 23:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_EV);
- size = 1;
- break;
- case 24:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_EV);
- size = 1;
- break;
- case 25:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP);
- size = 1;
- break;
- case 26:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_POKERUS);
- size = 1;
- break;
- case 27:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_MET_LOCATION);
- size = 1;
- break;
- case 28:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_MET_LEVEL);
- size = 1;
- break;
- case 29:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_MET_GAME);
- size = 1;
- break;
- case 30:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_POKEBALL);
- size = 1;
- break;
- case 31:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV);
- buffer[1] = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV);
- buffer[2] = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV);
- buffer[3] = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV);
- buffer[4] = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV);
- buffer[5] = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV);
- size = 6;
- break;
- case 32:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV);
- size = 1;
- break;
- case 33:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV);
- size = 1;
- break;
- case 34:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV);
- size = 1;
- break;
- case 35:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV);
- size = 1;
- break;
- case 36:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV);
- size = 1;
- break;
- case 37:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV);
- size = 1;
- break;
- case 38:
- data32 = GetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY);
- buffer[0] = (data32 & 0x000000FF);
- buffer[1] = (data32 & 0x0000FF00) >> 8;
- buffer[2] = (data32 & 0x00FF0000) >> 16;
- buffer[3] = (data32 & 0xFF000000) >> 24;
- size = 4;
- break;
- case 39:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_CHECKSUM);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 40:
- data32 = GetMonData(&gPlayerParty[a], MON_DATA_STATUS);
- buffer[0] = (data32 & 0x000000FF);
- buffer[1] = (data32 & 0x0000FF00) >> 8;
- buffer[2] = (data32 & 0x00FF0000) >> 16;
- buffer[3] = (data32 & 0xFF000000) >> 24;
- size = 4;
- break;
- case 41:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_LEVEL);
- size = 1;
- break;
- case 42:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_HP);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 43:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_MAX_HP);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 44:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_ATK);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 45:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_DEF);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 46:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPD);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 47:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPATK);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 48:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 49:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_COOL);
- size = 1;
- break;
- case 50:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_BEAUTY);
- size = 1;
- break;
- case 51:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_CUTE);
- size = 1;
- break;
- case 52:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SMART);
- size = 1;
- break;
- case 53:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_TOUGH);
- size = 1;
- break;
- case 54:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SHEEN);
- size = 1;
- break;
- case 55:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_COOL_RIBBON);
- size = 1;
- break;
- case 56:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_BEAUTY_RIBBON);
- size = 1;
- break;
- case 57:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_CUTE_RIBBON);
- size = 1;
- break;
- case 58:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SMART_RIBBON);
- size = 1;
- break;
- case 59:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_TOUGH_RIBBON);
- size = 1;
- break;
- }
- return size;
-}
-
-void sub_802ECF0(void)
-{
- struct BattlePokemon battleMon; // I think this is a BattlePokemon
- u8 *src = (u8 *)&gPlayerParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
- u8 *dst = (u8 *)&battleMon + gBattleBufferA[gActiveBank][1];
- u8 i;
-
- for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++)
- dst[i] = src[i];
- dp01_build_cmdbuf_x1D_1D_numargs_varargs(1, gBattleBufferA[gActiveBank][2], dst);
- PlayerBufferExecCompleted();
-}
-
-void PlayerHandleSetAttributes(void)
-{
- u8 r4;
- u8 i;
-
- if (gBattleBufferA[gActiveBank][2] == 0)
- {
- dp01_setattr_by_ch1_for_player_pokemon(gBattlePartyID[gActiveBank]);
- }
- else
- {
- r4 = gBattleBufferA[gActiveBank][2];
- for (i = 0; i < 6; i++)
- {
- if (r4 & 1)
- dp01_setattr_by_ch1_for_player_pokemon(i);
- r4 >>= 1;
- }
- }
- PlayerBufferExecCompleted();
-}
-
-// Duplicate of sub_811EC68
-void dp01_setattr_by_ch1_for_player_pokemon(u8 a)
-{
- struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBank][3];
- struct UnknownStruct3 *moveData = (struct UnknownStruct3 *)&gBattleBufferA[gActiveBank][3];
- s32 i;
-
- switch (gBattleBufferA[gActiveBank][1])
- {
- case 0:
- {
- u8 iv;
-
- SetMonData(&gPlayerParty[a], MON_DATA_SPECIES, (u8 *)&battlePokemon->species);
- SetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM, (u8 *)&battlePokemon->item);
- for (i = 0; i < 4; i++)
- {
- SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + i, (u8 *)&battlePokemon->moves[i]);
- SetMonData(&gPlayerParty[a], MON_DATA_PP1 + i, (u8 *)&battlePokemon->pp[i]);
- }
- SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, (u8 *)&battlePokemon->ppBonuses);
- SetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP, (u8 *)&battlePokemon->friendship);
- SetMonData(&gPlayerParty[a], MON_DATA_EXP, (u8 *)&battlePokemon->experience);
- iv = battlePokemon->hpIV;
- SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, (u8 *)&iv);
- iv = battlePokemon->attackIV;
- SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, (u8 *)&iv);
- iv = battlePokemon->defenseIV;
- SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, (u8 *)&iv);
- iv = battlePokemon->speedIV;
- SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, (u8 *)&iv);
- iv = battlePokemon->spAttackIV;
- SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, (u8 *)&iv);
- iv = battlePokemon->spDefenseIV;
- SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, (u8 *)&iv);
- SetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY, (u8 *)&battlePokemon->personality);
- SetMonData(&gPlayerParty[a], MON_DATA_STATUS, (u8 *)&battlePokemon->status1);
- SetMonData(&gPlayerParty[a], MON_DATA_LEVEL, (u8 *)&battlePokemon->level);
- SetMonData(&gPlayerParty[a], MON_DATA_HP, (u8 *)&battlePokemon->hp);
- SetMonData(&gPlayerParty[a], MON_DATA_MAX_HP, (u8 *)&battlePokemon->maxHP);
- SetMonData(&gPlayerParty[a], MON_DATA_ATK, (u8 *)&battlePokemon->attack);
- SetMonData(&gPlayerParty[a], MON_DATA_DEF, (u8 *)&battlePokemon->defense);
- SetMonData(&gPlayerParty[a], MON_DATA_SPD, (u8 *)&battlePokemon->speed);
- SetMonData(&gPlayerParty[a], MON_DATA_SPATK, (u8 *)&battlePokemon->spAttack);
- SetMonData(&gPlayerParty[a], MON_DATA_SPDEF, (u8 *)&battlePokemon->spDefense);
- }
- break;
- case 1:
- SetMonData(&gPlayerParty[a], MON_DATA_SPECIES, &gBattleBufferA[gActiveBank][3]);
- break;
- case 2:
- SetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBank][3]);
- break;
- case 3:
- for (i = 0; i < 4; i++)
- {
- SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + i, (u8 *)&moveData->moves[i]);
- SetMonData(&gPlayerParty[a], MON_DATA_PP1 + i, (u8 *)&moveData->pp[i]);
- }
- SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, &moveData->ppBonuses);
- break;
- case 4:
- case 5:
- case 6:
- case 7:
- SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - 4, &gBattleBufferA[gActiveBank][3]);
- break;
- case 8:
- SetMonData(&gPlayerParty[a], MON_DATA_PP1, &gBattleBufferA[gActiveBank][3]);
- SetMonData(&gPlayerParty[a], MON_DATA_PP2, &gBattleBufferA[gActiveBank][4]);
- SetMonData(&gPlayerParty[a], MON_DATA_PP3, &gBattleBufferA[gActiveBank][5]);
- SetMonData(&gPlayerParty[a], MON_DATA_PP4, &gBattleBufferA[gActiveBank][6]);
- SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBank][7]);
- break;
- case 9:
- case 10:
- case 11:
- case 12:
- SetMonData(&gPlayerParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9, &gBattleBufferA[gActiveBank][3]);
- break;
- case 17:
- SetMonData(&gPlayerParty[a], MON_DATA_OT_ID, &gBattleBufferA[gActiveBank][3]);
- break;
- case 18:
- SetMonData(&gPlayerParty[a], MON_DATA_EXP, &gBattleBufferA[gActiveBank][3]);
- break;
- case 19:
- SetMonData(&gPlayerParty[a], MON_DATA_HP_EV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 20:
- SetMonData(&gPlayerParty[a], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 21:
- SetMonData(&gPlayerParty[a], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 22:
- SetMonData(&gPlayerParty[a], MON_DATA_SPD_EV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 23:
- SetMonData(&gPlayerParty[a], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 24:
- SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 25:
- SetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBank][3]);
- break;
- case 26:
- SetMonData(&gPlayerParty[a], MON_DATA_POKERUS, &gBattleBufferA[gActiveBank][3]);
- break;
- case 27:
- SetMonData(&gPlayerParty[a], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBank][3]);
- break;
- case 28:
- SetMonData(&gPlayerParty[a], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBank][3]);
- break;
- case 29:
- SetMonData(&gPlayerParty[a], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBank][3]);
- break;
- case 30:
- SetMonData(&gPlayerParty[a], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBank][3]);
- break;
- case 31:
- SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
- SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][4]);
- SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][5]);
- SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][6]);
- SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][7]);
- SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][8]);
- break;
- case 32:
- SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 33:
- SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 34:
- SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 35:
- SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 36:
- SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 37:
- SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 38:
- SetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBank][3]);
- break;
- case 39:
- SetMonData(&gPlayerParty[a], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBank][3]);
- break;
- case 40:
- SetMonData(&gPlayerParty[a], MON_DATA_STATUS, &gBattleBufferA[gActiveBank][3]);
- break;
- case 41:
- SetMonData(&gPlayerParty[a], MON_DATA_LEVEL, &gBattleBufferA[gActiveBank][3]);
- break;
- case 42:
- SetMonData(&gPlayerParty[a], MON_DATA_HP, &gBattleBufferA[gActiveBank][3]);
- break;
- case 43:
- SetMonData(&gPlayerParty[a], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBank][3]);
- break;
- case 44:
- SetMonData(&gPlayerParty[a], MON_DATA_ATK, &gBattleBufferA[gActiveBank][3]);
- break;
- case 45:
- SetMonData(&gPlayerParty[a], MON_DATA_DEF, &gBattleBufferA[gActiveBank][3]);
- break;
- case 46:
- SetMonData(&gPlayerParty[a], MON_DATA_SPD, &gBattleBufferA[gActiveBank][3]);
- break;
- case 47:
- SetMonData(&gPlayerParty[a], MON_DATA_SPATK, &gBattleBufferA[gActiveBank][3]);
- break;
- case 48:
- SetMonData(&gPlayerParty[a], MON_DATA_SPDEF, &gBattleBufferA[gActiveBank][3]);
- break;
- case 49:
- SetMonData(&gPlayerParty[a], MON_DATA_COOL, &gBattleBufferA[gActiveBank][3]);
- break;
- case 50:
- SetMonData(&gPlayerParty[a], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBank][3]);
- break;
- case 51:
- SetMonData(&gPlayerParty[a], MON_DATA_CUTE, &gBattleBufferA[gActiveBank][3]);
- break;
- case 52:
- SetMonData(&gPlayerParty[a], MON_DATA_SMART, &gBattleBufferA[gActiveBank][3]);
- break;
- case 53:
- SetMonData(&gPlayerParty[a], MON_DATA_TOUGH, &gBattleBufferA[gActiveBank][3]);
- break;
- case 54:
- SetMonData(&gPlayerParty[a], MON_DATA_SHEEN, &gBattleBufferA[gActiveBank][3]);
- break;
- case 55:
- SetMonData(&gPlayerParty[a], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBank][3]);
- break;
- case 56:
- SetMonData(&gPlayerParty[a], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBank][3]);
- break;
- case 57:
- SetMonData(&gPlayerParty[a], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBank][3]);
- break;
- case 58:
- SetMonData(&gPlayerParty[a], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBank][3]);
- break;
- case 59:
- SetMonData(&gPlayerParty[a], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBank][3]);
- break;
- }
- sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
-}
-
-void sub_802F7CC(void)
-{
- u8 *dst = (u8 *)&gPlayerParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
- u8 i;
-
- for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++)
- dst[i] = gBattleBufferA[gActiveBank][3 + i];
- PlayerBufferExecCompleted();
-}
-
-void PlayerHandleLoadPokeSprite(void)
-{
- sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
- gBattleBankFunc[gActiveBank] = bx_0802E404;
-}
-
-void PlayerHandleSendOutPoke(void)
-{
- sub_8032AA8(gActiveBank, gBattleBufferA[gActiveBank][2]);
- gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1];
- sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- gActionSelectionCursor[gActiveBank] = 0;
- gMoveSelectionCursor[gActiveBank] = 0;
- sub_802F934(gActiveBank, gBattleBufferA[gActiveBank][2]);
- gBattleBankFunc[gActiveBank] = sub_802D798;
-}
-
-void sub_802F934(u8 bank, u8 b)
-{
- u16 species;
-
- sub_8032AA8(bank, b);
- gBattlePartyID[bank] = gBattleBufferA[bank][1];
- species = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
- gUnknown_0300434C[bank] = CreateInvisibleSpriteWithCallback(sub_80312F0);
- GetMonSpriteTemplate_803C56C(species, GetBankIdentity(bank));
- gObjectBankIDs[bank] = CreateSprite(
- &gUnknown_02024E8C,
- sub_8077ABC(bank, 2),
- sub_8077F68(bank),
- sub_8079E90(bank));
- gSprites[gUnknown_0300434C[bank]].data1 = gObjectBankIDs[bank];
- gSprites[gObjectBankIDs[bank]].data0 = bank;
- gSprites[gObjectBankIDs[bank]].data2 = species;
- gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank;
- StartSpriteAnim(&gSprites[gObjectBankIDs[bank]], gBattleMonForms[bank]);
- gSprites[gObjectBankIDs[bank]].invisible = TRUE;
- gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy;
- gSprites[gUnknown_0300434C[bank]].data0 = sub_8046400(0, 0xFF);
-}
-
-void PlayerHandleReturnPokeToBall(void)
-{
- if (gBattleBufferA[gActiveBank][1] == 0)
- {
- ewram17810[gActiveBank].unk4 = 0;
- gBattleBankFunc[gActiveBank] = sub_802FB2C;
- }
- else
- {
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
- sub_8043DB0(gHealthboxIDs[gActiveBank]);
- PlayerBufferExecCompleted();
- }
-}
-
-void sub_802FB2C(void)
-{
- switch (ewram17810[gActiveBank].unk4)
- {
- case 0:
- if (ewram17800[gActiveBank].unk0_2)
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
- ewram17810[gActiveBank].unk4 = 1;
- break;
- case 1:
- if (!ewram17810[gActiveBank].unk0_6)
- {
- ewram17810[gActiveBank].unk4 = 0;
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 1);
- gBattleBankFunc[gActiveBank] = sub_802DEAC;
- }
- }
-}
-
-void PlayerHandleTrainerThrow(void)
-{
- s16 r7;
-
- if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
- {
- if (GetBankIdentity(gActiveBank) & 2)
- r7 = 16;
- else
- r7 = -16;
- }
- else
- {
- r7 = 0;
- }
- sub_8031AF4(gSaveBlock2.playerGender, gActiveBank);
- GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank));
- gObjectBankIDs[gActiveBank] = CreateSprite(
- &gUnknown_02024E8C,
- r7 + 80,
- (8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80,
- sub_8079E90(gActiveBank));
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
- gSprites[gObjectBankIDs[gActiveBank]].pos2.x = 240;
- gSprites[gObjectBankIDs[gActiveBank]].data0 = -2;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0;
- gBattleBankFunc[gActiveBank] = sub_802D204;
-}
-
-void PlayerHandleTrainerSlide(void)
-{
- sub_8031AF4(gSaveBlock2.playerGender, gActiveBank);
- GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank));
- gObjectBankIDs[gActiveBank] = CreateSprite(
- &gUnknown_02024E8C,
- 80,
- (8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80,
- 30);
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
- gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -96;
- gSprites[gObjectBankIDs[gActiveBank]].data0 = 2;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0;
- gBattleBankFunc[gActiveBank] = sub_802D23C;
-}
-
-void PlayerHandleTrainerSlideBack(void)
-{
- oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
- gSprites[gObjectBankIDs[gActiveBank]].data0 = 50;
- gSprites[gObjectBankIDs[gActiveBank]].data2 = -40;
- gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34;
- oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy);
- StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1);
- gBattleBankFunc[gActiveBank] = sub_802D274;
-}
-
-void sub_802FE7C(void)
-{
- if (ewram17810[gActiveBank].unk4 == 0)
- {
- if (ewram17800[gActiveBank].unk0_2)
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
- ewram17810[gActiveBank].unk4++;
- }
- else
- {
- if (ewram17810[gActiveBank].unk0_6 == 0)
- {
- ewram17810[gActiveBank].unk4 = 0;
- sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- PlaySE12WithPanning(SE_POKE_DEAD, -64);
- gSprites[gObjectBankIDs[gActiveBank]].data1 = 0;
- gSprites[gObjectBankIDs[gActiveBank]].data2 = 5;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80105EC;
- gBattleBankFunc[gActiveBank] = sub_802DE10;
- }
- }
-}
-
-void sub_802FF60(void)
-{
- BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, 0);
- PlayerBufferExecCompleted();
-}
-
-void sub_802FF80(void)
-{
- ewram17840.unk8 = 4;
- gDoingBattleAnim = 1;
- move_anim_start_t4(gActiveBank, gActiveBank, GetBankByPlayerAI(1), 3);
- gBattleBankFunc[gActiveBank] = bx_wait_t1;
-}
-
-void PlayerHandleBallThrow(void)
-{
- u8 var = gBattleBufferA[gActiveBank][1];
-
- ewram17840.unk8 = var;
- gDoingBattleAnim = 1;
- move_anim_start_t4(gActiveBank, gActiveBank, GetBankByPlayerAI(1), 3);
- gBattleBankFunc[gActiveBank] = bx_wait_t1;
-}
-
-void PlayerHandlePuase(void)
-{
- u8 var = gBattleBufferA[gActiveBank][1];
-
- // WTF is this??
- while (var != 0)
- var--;
-
- PlayerBufferExecCompleted();
-}
-
-void PlayerHandleMoveAnimation(void)
-{
- if (!mplay_80342A4(gActiveBank))
- {
- u16 r0 = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8);
-
- gUnknown_0202F7C4 = gBattleBufferA[gActiveBank][3];
- gMovePowerMoveAnim = gBattleBufferA[gActiveBank][4] | (gBattleBufferA[gActiveBank][5] << 8);
- gMoveDmgMoveAnim = gBattleBufferA[gActiveBank][6] | (gBattleBufferA[gActiveBank][7] << 8) | (gBattleBufferA[gActiveBank][8] << 16) | (gBattleBufferA[gActiveBank][9] << 24);
- gHappinessMoveAnim = gBattleBufferA[gActiveBank][10];
- gWeatherMoveAnim = gBattleBufferA[gActiveBank][12] | (gBattleBufferA[gActiveBank][13] << 8);
- gDisableStructMoveAnim = (u32 *)&gBattleBufferA[gActiveBank][16];
- gPID_perBank[gActiveBank] = *gDisableStructMoveAnim;
- if (sub_8031720(r0, gUnknown_0202F7C4) != 0)
- {
- // Dead code. sub_8031720 always returns 0.
- PlayerBufferExecCompleted();
- }
- else
- {
- ewram17810[gActiveBank].unk4 = 0;
- gBattleBankFunc[gActiveBank] = sub_8030190;
- }
- }
-}
-
-void sub_8030190(void)
-{
- u16 r4 = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8);
- u8 r7 = gBattleBufferA[gActiveBank][11];
-
- switch (ewram17810[gActiveBank].unk4)
- {
- case 0:
- if (ewram17800[gActiveBank].unk0_2 == 1 && ewram17800[gActiveBank].unk0_3 == 0)
- {
- ewram17800[gActiveBank].unk0_3 = 1;
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
- }
- ewram17810[gActiveBank].unk4 = 1;
- break;
- case 1:
- if (ewram17810[gActiveBank].unk0_6 == 0)
- {
- sub_80326EC(0);
- ExecuteMoveAnim(r4);
- ewram17810[gActiveBank].unk4 = 2;
- }
- break;
- case 2:
- gAnimScriptCallback();
- if (!gAnimScriptActive)
- {
- sub_80326EC(1);
- if (ewram17800[gActiveBank].unk0_2 == 1 && r7 < 2)
- {
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
- ewram17800[gActiveBank].unk0_3 = 0;
- }
- ewram17810[gActiveBank].unk4 = 3;
- }
- break;
- case 3:
- if (ewram17810[gActiveBank].unk0_6 == 0)
- {
- sub_8031F24();
- sub_80324BC(gActiveBank, gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
- ewram17810[gActiveBank].unk4 = 0;
- PlayerBufferExecCompleted();
- }
- break;
- }
-}
-
-void PlayerHandlePrintString(void)
-{
- gUnknown_030042A4 = 0;
- gUnknown_030042A0 = 0;
- BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]);
- sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 0x90, 2, 15);
- gBattleBankFunc[gActiveBank] = sub_802DF18;
-}
-
-void PlayerHandlePrintStringPlayerOnly(void)
-{
- if (GetBankSide(gActiveBank) == 0)
- PlayerHandlePrintString();
- else
- PlayerBufferExecCompleted();
-}
-
-void sub_803037C(void)
-{
- int r4;
-
- gUnknown_030042A4 = 0;
- gUnknown_030042A0 = 160;
- FillWindowRect(&gUnknown_03004210, 10, 2, 15, 27, 18);
- FillWindowRect(&gUnknown_03004210, 10, 2, 35, 16, 38);
-
- gBattleBankFunc[gActiveBank] = sub_802C098;
-
- InitWindow(&gUnknown_03004210, gUnknown_08400CF3, 400, 18, 35);
- sub_8002F44(&gUnknown_03004210);
- sub_814A5C0(0, 0xFFFF, 12, 11679, 0);
-
- for (r4 = 0; r4 < 4; r4++)
- nullsub_8(r4);
-
- sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
-
- StrCpyDecodeToDisplayedStringBattle((u8 *) gUnknown_08400CA8);
- InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_803037C_TILE_DATA_OFFSET, 2, 35);
- sub_8002F44(&gUnknown_03004210);
-}
-
-void nullsub_42()
-{
-}
-
-void sub_8030468(void)
-{
- sub_814A5C0(0, 0xFFFF, 12, 0x2D9F, 0);
- sub_80304A8();
- gBattleBankFunc[gActiveBank] = sub_802C68C;
-}
-
-void sub_80304A8(void)
-{
- gUnknown_030042A4 = 0;
- gUnknown_030042A0 = 320;
- sub_802E1B0();
- gUnknown_03004344 = 0xFF;
- sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0);
- if (gBattleBufferA[gActiveBank][2] != 1)
- {
- InitWindow(&gUnknown_03004210, gUnknown_08400D38, 656, 23, 55);
- sub_8002F44(&gUnknown_03004210);
- }
- sub_802E220();
- sub_802E2D4();
-}
-
-void PlayerHandleOpenBag(void)
-{
- s32 i;
-
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
- gBattleBankFunc[gActiveBank] = sub_802E004;
- gBankInMenu = gActiveBank;
- for (i = 0; i < 3; i++)
- gUnknown_02038470[i] = gBattleBufferA[gActiveBank][1 + i];
-}
-
-void sub_8030594(void)
-{
- s32 i;
-
- gUnknown_0300434C[gActiveBank] = CreateTask(TaskDummy, 0xFF);
- gTasks[gUnknown_0300434C[gActiveBank]].data[0] = gBattleBufferA[gActiveBank][1] & 0xF;
- ewram[0x16054] = gBattleBufferA[gActiveBank][1] >> 4;
- ewram[0x1609D] = gBattleBufferA[gActiveBank][2];
- ewram[0x160C0] = gBattleBufferA[gActiveBank][3];
- for (i = 0; i < 3; i++)
- gUnknown_02038470[i] = gBattleBufferA[gActiveBank][4 + i];
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
- gBattleBankFunc[gActiveBank] = sub_802DF30;
- gBankInMenu = gActiveBank;
-}
-
-void sub_8030674(void)
-{
- BattleMusicStop();
- BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, 0);
- PlayerBufferExecCompleted();
-}
-
-void PlayerHandleHealthBarUpdate(void)
-{
- s16 r7;
-
- load_gfxc_health_bar(0);
- r7 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
- if (r7 != 0x7FFF)
- {
- u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
- u32 curHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_HP);
-
- sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, curHP, r7);
- }
- else
- {
- u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
-
- sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, 0, r7);
- sub_80440EC(gHealthboxIDs[gActiveBank], 0, 0);
- }
- gBattleBankFunc[gActiveBank] = bx_t1_healthbar_update;
-}
-
-void PlayerHandleExpBarUpdate(void)
-{
- u8 r7 = gBattleBufferA[gActiveBank][1];
-
- if (GetMonData(&gPlayerParty[r7], MON_DATA_LEVEL) >= 100)
- {
- PlayerBufferExecCompleted();
- }
- else
- {
- u16 r4;
- u8 taskId;
-
- load_gfxc_health_bar(1);
- GetMonData(&gPlayerParty[r7], MON_DATA_SPECIES); // unused return value
- r4 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
- taskId = CreateTask(sub_802D924, 10);
- gTasks[taskId].data[0] = r7;
- gTasks[taskId].data[1] = r4;
- gTasks[taskId].data[2] = gActiveBank;
- gBattleBankFunc[gActiveBank] = nullsub_91;
- }
-}
-
-void PlayerHandleStatusIconUpdate(void)
-{
- if (!mplay_80342A4(gActiveBank))
- {
- sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 9);
- ewram17810[gActiveBank].unk0_4 = 0;
- gBattleBankFunc[gActiveBank] = sub_802E434;
- }
-}
-
-void PlayerHandleStatusAnimation(void)
-{
- if (!mplay_80342A4(gActiveBank))
- {
- move_anim_start_t2_for_situation(
- gBattleBufferA[gActiveBank][1],
- gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8) | (gBattleBufferA[gActiveBank][4] << 16) | (gBattleBufferA[gActiveBank][5] << 24));
- gBattleBankFunc[gActiveBank] = sub_802E434;
- }
-}
-
-void PlayerHandleStatusXor(void)
-{
- u8 val = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_STATUS) ^ gBattleBufferA[gActiveBank][1];
-
- SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_STATUS, &val);
- PlayerBufferExecCompleted();
-}
-
-void sub_803097C(void)
-{
- PlayerBufferExecCompleted();
-}
-
-void PlayerHandleDMATransfer(void)
-{
- u32 val1 = gBattleBufferA[gActiveBank][1]
- | (gBattleBufferA[gActiveBank][2] << 8)
- | (gBattleBufferA[gActiveBank][3] << 16)
- | (gBattleBufferA[gActiveBank][4] << 24);
- u16 val2 = gBattleBufferA[gActiveBank][5] | (gBattleBufferA[gActiveBank][6] << 8);
-
- const u8 *src = &gBattleBufferA[gActiveBank][7];
- u8 *dst = (u8 *)val1;
- u32 size = val2;
-
- while (1)
- {
- if (size <= 0x1000)
- {
- DmaCopy16(3, src, dst, size);
- break;
- }
- DmaCopy16(3, src, dst, 0x1000);
- src += 0x1000;
- dst += 0x1000;
- size -= 0x1000;
- }
- PlayerBufferExecCompleted();
-}
-
-void sub_8030A3C(void)
-{
- PlayBGM(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
- PlayerBufferExecCompleted();
-}
-
-void sub_8030A6C(void)
-{
- PlayerBufferExecCompleted();
-}
-
-void sub_8030A78(void)
-{
- dp01_build_cmdbuf_x21_a_bb(1, 0, 0);
- PlayerBufferExecCompleted();
-}
-
-void sub_8030A8C(void)
-{
- dp01_build_cmdbuf_x22_a_three_bytes(1, 0, 0);
- PlayerBufferExecCompleted();
-}
-
-void sub_8030AA0(void)
-{
- dp01_build_cmdbuf_x23_aa_0(1, 0);
- PlayerBufferExecCompleted();
-}
-
-void sub_8030AB4(void)
-{
- dp01_build_cmdbuf_x24_aa_0(1, 0);
- PlayerBufferExecCompleted();
-}
-
-void sub_8030AC8(void)
-{
- gUnknown_020238C8.unk0_0 = 0;
- PlayerBufferExecCompleted();
-}
-
-void sub_8030AE4(void)
-{
- gUnknown_020238C8.unk0_0 = gBattleBufferA[gActiveBank][1];
- PlayerBufferExecCompleted();
-}
-
-void sub_8030B1C(void)
-{
- gUnknown_020238C8.unk0_7 = 0;
- PlayerBufferExecCompleted();
-}
-
-void sub_8030B34(void)
-{
- gUnknown_020238C8.unk0_7 ^= 1;
- PlayerBufferExecCompleted();
-}
-
-void PlayerHandleHitAnimation(void)
-{
- if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE)
- {
- PlayerBufferExecCompleted();
- }
- else
- {
- gDoingBattleAnim = 1;
- gSprites[gObjectBankIDs[gActiveBank]].data1 = 0;
- sub_8047858(gActiveBank);
- gBattleBankFunc[gActiveBank] = bx_blink_t1;
- }
-}
-
-void sub_8030BCC(void)
-{
- PlayerBufferExecCompleted();
-}
-
-void PlayerHandleEffectivenessSound(void)
-{
- s8 pan;
-
- if (GetBankSide(gActiveBank) == 0)
- pan = -64;
- else
- pan = 63;
- PlaySE12WithPanning(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8), pan);
- PlayerBufferExecCompleted();
-}
-
-void sub_8030C1C(void)
-{
- PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
- PlayerBufferExecCompleted();
-}
-
-void PlayerHandleFaintingCry(void)
-{
- u16 species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
-
- PlayCry3(species, -25, 5);
- PlayerBufferExecCompleted();
-}
-
-void PlayerHandleIntroSlide(void)
-{
- sub_80E43C0(gBattleBufferA[gActiveBank][1]);
- gUnknown_02024DE8 |= 1;
- PlayerBufferExecCompleted();
-}
-
-void PlayerHandleTrainerBallThrow(void)
-{
- u8 paletteNum;
- u8 taskId;
-
- oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
- gSprites[gObjectBankIDs[gActiveBank]].data0 = 50;
- gSprites[gObjectBankIDs[gActiveBank]].data2 = -40;
- gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34;
- gSprites[gObjectBankIDs[gActiveBank]].data5 = gActiveBank;
- oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], sub_8030E38);
- StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1);
- paletteNum = AllocSpritePalette(0xD6F8);
- LoadCompressedPalette(gTrainerBackPicPaletteTable[gSaveBlock2.playerGender].data, 0x100 + paletteNum * 16, 32);
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = paletteNum;
- taskId = CreateTask(task05_08033660, 5);
- gTasks[taskId].data[0] = gActiveBank;
- if (ewram17810[gActiveBank].unk0_0)
- gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0;
- ewram17810[4].unk9 |= 1;
- gBattleBankFunc[gActiveBank] = nullsub_91;
-}
-
-void sub_8030E38(struct Sprite *sprite)
-{
- u8 r4 = sprite->data5;
-
- FreeSpriteOamMatrix(sprite);
- FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum));
- DestroySprite(sprite);
- sub_80318FC(&gPlayerParty[gBattlePartyID[r4]], r4);
- StartSpriteAnim(&gSprites[gObjectBankIDs[r4]], 0);
-}
-
-void task05_08033660(u8 taskId)
-{
- if (gTasks[taskId].data[1] < 31)
- {
- gTasks[taskId].data[1]++;
- }
- else
- {
- u8 savedActiveBank = gActiveBank;
-
- gActiveBank = gTasks[taskId].data[0];
- if (!IsDoubleBattle() || (gBattleTypeFlags & 0x40))
- {
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_802F934(gActiveBank, 0);
- }
- else
- {
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_802F934(gActiveBank, 0);
- gActiveBank ^= 2;
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- sub_802F934(gActiveBank, 0);
- gActiveBank ^= 2;
- }
- gBattleBankFunc[gActiveBank] = sub_802D500;
- gActiveBank = savedActiveBank;
- DestroyTask(taskId);
- }
-}
-
-void sub_8030FAC(void)
-{
- if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == 0)
- {
- PlayerBufferExecCompleted();
- }
- else
- {
- ewram17810[gActiveBank].unk0_0 = 1;
- gUnknown_02024E68[gActiveBank] = sub_8044804(gActiveBank, (struct BattleInterfaceStruct2 *)&gBattleBufferA[gActiveBank][4], gBattleBufferA[gActiveBank][1], gBattleBufferA[gActiveBank][2]);
- ewram17810[gActiveBank].unk5 = 0;
- if (gBattleBufferA[gActiveBank][2] != 0)
- ewram17810[gActiveBank].unk5 = 0x5D;
- gBattleBankFunc[gActiveBank] = sub_8031064;
- }
-}
-
-void sub_8031064(void)
-{
- if (ewram17810[gActiveBank].unk5++ > 0x5C)
- {
- ewram17810[gActiveBank].unk5 = 0;
- PlayerBufferExecCompleted();
- }
-}
-
-void sub_80310A4(void)
-{
- if (ewram17810[gActiveBank].unk0_0)
- gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0;
- PlayerBufferExecCompleted();
-}
-
-void sub_80310F0(void)
-{
- dp11b_obj_free(gActiveBank, 1);
- dp11b_obj_free(gActiveBank, 0);
- PlayerBufferExecCompleted();
-}
-
-void PlayerHandleSpriteInvisibility(void)
-{
- if (sub_8078874(gActiveBank))
- {
- gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
- sub_8031F88(gActiveBank);
- }
- PlayerBufferExecCompleted();
-}
-
-void PlayerHandleBattleAnimation(void)
-{
- if (!mplay_80342A4(gActiveBank))
- {
- u8 val2 = gBattleBufferA[gActiveBank][1];
- u16 val = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
-
- if (move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, val2, val))
- PlayerBufferExecCompleted();
- else
- gBattleBankFunc[gActiveBank] = sub_802E460;
- }
-}
-
-void PlayerHandleLinkStandbyMsg(void)
-{
- switch (gBattleBufferA[gActiveBank][1])
- {
- case 0:
- b_link_standby_message();
- // fall through
- case 1:
- dp11b_obj_free(gActiveBank, 1);
- dp11b_obj_free(gActiveBank, 0);
- break;
- case 2:
- b_link_standby_message();
- break;
- }
- PlayerBufferExecCompleted();
-}
-
-void PlayerHandleResetActionMoveSelection(void)
-{
- switch (gBattleBufferA[gActiveBank][1])
- {
- case 0:
- gActionSelectionCursor[gActiveBank] = 0;
- gMoveSelectionCursor[gActiveBank] = 0;
- break;
- case 1:
- gActionSelectionCursor[gActiveBank] = 0;
- break;
- case 2:
- gMoveSelectionCursor[gActiveBank] = 0;
- break;
- }
- PlayerBufferExecCompleted();
-}
-
-void sub_80312A0(void)
-{
- gBattleOutcome = gBattleBufferA[gActiveBank][1];
- FadeOutMapMusic(5);
- BeginFastPaletteFade(3);
- PlayerBufferExecCompleted();
- gBattleBankFunc[gActiveBank] = sub_802D18C;
-}
-
-void nullsub_43(void)
-{
-}
diff --git a/src/battle_7.c b/src/battle_7.c
index f2838467e..cf3a3522e 100644
--- a/src/battle_7.c
+++ b/src/battle_7.c
@@ -31,7 +31,6 @@ struct Struct2019348
extern u8 gBattleBufferA[][0x200];
extern u8 gActiveBank;
-extern u32 gBattleExecBuffer;
extern u8 gNoOfAllBanks;
extern u16 gBattlePartyID[];
extern u8 gBanksBySide[];
@@ -63,7 +62,6 @@ extern const u8 gSubstituteDollGfx[];
extern const u8 gSubstituteDollPal[];
extern const struct CompressedSpriteSheet gUnknown_081FAF24;
extern const struct SpriteTemplate gSpriteTemplate_81FAF34;
-extern void (*const gOpponentBufferCommands[])(void);
extern const struct CompressedSpriteSheet gUnknown_0820A47C;
extern const struct CompressedSpriteSheet gUnknown_0820A484;
extern const struct CompressedSpriteSheet gUnknown_0820A48C[];
@@ -96,9 +94,6 @@ void sub_80324E0(u8 a);
void sub_80327CC(void);
void sub_8032978(struct Sprite *);
void sub_80328A4(struct Sprite *);
-void OpponentBufferRunCommand(void);
-void sub_80332D0(void);
-void OpponentBufferExecCompleted(void);
void sub_80312F0(struct Sprite *sprite)
{
@@ -182,9 +177,9 @@ bool8 move_anim_start_t3(u8 a, u8 b, u8 c, u8 d, u16 e)
gBattleMonForms[a] = e & 0x7F;
return TRUE;
}
- if (ewram17800[a].unk0_2 && sub_803163C(d) == 0)
+ if (ewram17800[a].substituteSprite && sub_803163C(d) == 0)
return TRUE;
- if (ewram17800[a].unk0_2 && d == 2 && gSprites[gObjectBankIDs[a]].invisible)
+ if (ewram17800[a].substituteSprite && d == 2 && gSprites[gObjectBankIDs[a]].invisible)
{
refresh_graphics_maybe(a, 1, gObjectBankIDs[a]);
sub_80324E0(a);
@@ -273,7 +268,7 @@ bool8 mplay_80342A4(u8 a)
return TRUE;
}
-void sub_8031794(struct Pokemon *pkmn, u8 b)
+void BattleLoadOpponentMonSprite(struct Pokemon *pkmn, u8 b)
{
u32 personalityValue;
u16 species;
@@ -284,14 +279,14 @@ void sub_8031794(struct Pokemon *pkmn, u8 b)
const u8 *lzPaletteData;
personalityValue = GetMonData(pkmn, MON_DATA_PERSONALITY);
- if (ewram17800[b].unk2 == 0)
+ if (ewram17800[b].transformedSpecies == 0)
{
species = GetMonData(pkmn, MON_DATA_SPECIES);
r7 = personalityValue;
}
else
{
- species = ewram17800[b].unk2;
+ species = ewram17800[b].transformedSpecies;
r7 = gPID_perBank[b];
}
otId = GetMonData(pkmn, MON_DATA_OT_ID);
@@ -305,7 +300,7 @@ void sub_8031794(struct Pokemon *pkmn, u8 b)
species,
r7);
paletteOffset = 0x100 + b * 16;
- if (ewram17800[b].unk2 == 0)
+ if (ewram17800[b].transformedSpecies == 0)
lzPaletteData = pokemon_get_pal(pkmn);
else
lzPaletteData = species_and_otid_get_pal(species, otId, personalityValue);
@@ -318,14 +313,14 @@ void sub_8031794(struct Pokemon *pkmn, u8 b)
sub_800D238(lzPaletteData, ewram + 0x16400);
LoadPalette(ewram + 0x16400 + gBattleMonForms[b] * 32, paletteOffset, 0x20);
}
- if (ewram17800[b].unk2 != 0)
+ if (ewram17800[b].transformedSpecies != 0)
{
BlendPalette(paletteOffset, 16, 6, 0x7FFF);
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
}
}
-void sub_80318FC(struct Pokemon *pkmn, u8 b)
+void BattleLoadPlayerMonSprite(struct Pokemon *pkmn, u8 b)
{
u32 personalityValue;
u16 species;
@@ -336,14 +331,14 @@ void sub_80318FC(struct Pokemon *pkmn, u8 b)
const u8 *lzPaletteData;
personalityValue = GetMonData(pkmn, MON_DATA_PERSONALITY);
- if (ewram17800[b].unk2 == 0)
+ if (ewram17800[b].transformedSpecies == 0)
{
species = GetMonData(pkmn, MON_DATA_SPECIES);
r7 = personalityValue;
}
else
{
- species = ewram17800[b].unk2;
+ species = ewram17800[b].transformedSpecies;
r7 = gPID_perBank[b];
}
otId = GetMonData(pkmn, MON_DATA_OT_ID);
@@ -357,7 +352,7 @@ void sub_80318FC(struct Pokemon *pkmn, u8 b)
species,
r7);
paletteOffset = 0x100 + b * 16;
- if (ewram17800[b].unk2 == 0)
+ if (ewram17800[b].transformedSpecies == 0)
lzPaletteData = pokemon_get_pal(pkmn);
else
lzPaletteData = species_and_otid_get_pal(species, otId, personalityValue);
@@ -370,7 +365,7 @@ void sub_80318FC(struct Pokemon *pkmn, u8 b)
sub_800D238(lzPaletteData, ewram + 0x16400);
LoadPalette(ewram + 0x16400 + gBattleMonForms[b] * 32, paletteOffset, 0x20);
}
- if (ewram17800[b].unk2 != 0)
+ if (ewram17800[b].transformedSpecies != 0)
{
BlendPalette(paletteOffset, 16, 6, 0x7FFF);
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
@@ -405,7 +400,7 @@ void sub_8031A6C(u16 a, u8 b)
LoadCompressedObjectPalette(&gTrainerFrontPicPaletteTable[a]);
}
-void sub_8031AF4(u16 a, u8 b)
+void LoadPlayerTrainerBankSprite(u16 a, u8 b)
{
u8 status;
@@ -607,12 +602,12 @@ void sub_8031F24(void)
s32 i;
for (i = 0; i < gNoOfAllBanks; i++)
- ewram17800[i].unk0_0 = gSprites[gObjectBankIDs[i]].invisible;
+ ewram17800[i].invisible = gSprites[gObjectBankIDs[i]].invisible;
}
void sub_8031F88(u8 a)
{
- ewram17800[a].unk0_0 = gSprites[gObjectBankIDs[a]].invisible;
+ ewram17800[a].invisible = gSprites[gObjectBankIDs[a]].invisible;
}
void sub_8031FC4(u8 a, u8 b, bool8 c)
@@ -630,7 +625,7 @@ void sub_8031FC4(u8 a, u8 b, bool8 c)
paletteOffset = 0x100 + a * 16;
LoadPalette(ewram + 0x16400 + ewram17840.unk0 * 32, paletteOffset, 32);
gBattleMonForms[a] = ewram17840.unk0;
- if (ewram17800[a].unk2 != 0)
+ if (ewram17800[a].transformedSpecies != 0)
{
BlendPalette(paletteOffset, 16, 6, 0x7FFF);
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
@@ -709,7 +704,7 @@ void sub_8031FC4(u8 a, u8 b, bool8 c)
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
if (!IsContest())
{
- ewram17800[a].unk2 = species;
+ ewram17800[a].transformedSpecies = species;
gBattleMonForms[a] = gBattleMonForms[b];
}
gSprites[gObjectBankIDs[a]].pos1.y = sub_8077F68(a);
@@ -717,7 +712,7 @@ void sub_8031FC4(u8 a, u8 b, bool8 c)
}
}
-void sub_8032350(u8 a, u8 b)
+void BattleLoadSubstituteSprite(u8 a, u8 b)
{
u8 r4;
u16 foo;
@@ -750,16 +745,16 @@ void sub_8032350(u8 a, u8 b)
if (!IsContest())
{
if (GetBankSide(a) != 0)
- sub_8031794(&gEnemyParty[gBattlePartyID[a]], a);
+ BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[a]], a);
else
- sub_80318FC(&gPlayerParty[gBattlePartyID[a]], a);
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[a]], a);
}
}
}
void refresh_graphics_maybe(u8 a, u8 b, u8 spriteId)
{
- sub_8032350(a, b);
+ BattleLoadSubstituteSprite(a, b);
StartSpriteAnim(&gSprites[spriteId], gBattleMonForms[a]);
if (b == 0)
gSprites[spriteId].pos1.y = sub_8077F7C(a);
@@ -770,12 +765,12 @@ void refresh_graphics_maybe(u8 a, u8 b, u8 spriteId)
void sub_80324BC(u8 a, u16 b)
{
if (b == 0xA4)
- ewram17800[a].unk0_2 = 1;
+ ewram17800[a].substituteSprite = 1;
}
void sub_80324E0(u8 a)
{
- ewram17800[a].unk0_2 = 0;
+ ewram17800[a].substituteSprite = 0;
}
void sub_80324F8(struct Pokemon *pkmn, u8 b)
@@ -896,9 +891,9 @@ void sub_80328A4(struct Sprite *sprite)
}
if (gAnimScriptActive || r7->invisible)
invisible = TRUE;
- else if (ewram17800[r4].unk2 != 0 && gEnemyMonElevation[ewram17800[r4].unk2] == 0)
+ else if (ewram17800[r4].transformedSpecies != 0 && gEnemyMonElevation[ewram17800[r4].transformedSpecies] == 0)
invisible = TRUE;
- if (ewram17800[r4].unk0_2)
+ if (ewram17800[r4].substituteSprite)
invisible = TRUE;
sprite->pos1.x = r7->pos1.x;
sprite->pos2.x = r7->pos2.x;
@@ -914,8 +909,8 @@ void sub_8032984(u8 a, u16 b)
{
if (GetBankSide(a) != 0)
{
- if (ewram17800[a].unk2 != 0)
- b = ewram17800[a].unk2;
+ if (ewram17800[a].transformedSpecies != 0)
+ b = ewram17800[a].transformedSpecies;
if (gEnemyMonElevation[b] != 0)
gSprites[ewram17810[a].unk7].callback = sub_80328A4;
else
@@ -953,283 +948,8 @@ void sub_8032A38(void)
void sub_8032AA8(u8 a, u8 b)
{
- ewram17800[a].unk2 = 0;
+ ewram17800[a].transformedSpecies = 0;
gBattleMonForms[a] = 0;
if (b == 0)
sub_80324E0(a);
}
-
-void nullsub_45(void)
-{
-}
-
-void SetBankFuncToOpponentBufferRunCommand(void)
-{
- gBattleBankFunc[gActiveBank] = OpponentBufferRunCommand;
-}
-
-void OpponentBufferRunCommand(void)
-{
- if (gBattleExecBuffer & gBitTable[gActiveBank])
- {
- if (gBattleBufferA[gActiveBank][0] <= 0x38)
- gOpponentBufferCommands[gBattleBufferA[gActiveBank][0]]();
- else
- OpponentBufferExecCompleted();
- }
-}
-
-void sub_8032B4C(void)
-{
- if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
- OpponentBufferExecCompleted();
-}
-
-// Duplicate of sub_8032B4C
-void sub_8032B84(void)
-{
- if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
- OpponentBufferExecCompleted();
-}
-
-void sub_8032BBC(void)
-{
- if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
- {
- sub_8031B74(gSprites[gObjectBankIDs[gActiveBank]].oam.affineParam);
- gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum = gSprites[gObjectBankIDs[gActiveBank]].data5;
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
- OpponentBufferExecCompleted();
- }
-}
-
-void sub_8032C4C(void)
-{
- if ((--ewram17810[gActiveBank].unk9) == 0xFF)
- {
- ewram17810[gActiveBank].unk9 = 0;
- OpponentBufferExecCompleted();
- }
-}
-
-void sub_8032C88(void)
-{
- bool8 r6 = FALSE;
-
- if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI)))
- {
- if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy)
- r6 = TRUE;
- }
- else
- {
- if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy
- && gSprites[gHealthboxIDs[gActiveBank ^ 2]].callback == SpriteCallbackDummy)
- r6 = TRUE;
- }
- if (IsCryPlayingOrClearCrySongs())
- r6 = FALSE;
-
- if (r6 && ewram17810[gActiveBank].unk1_0 && ewram17810[gActiveBank ^ 2].unk1_0)
- {
- ewram17810[gActiveBank].unk0_7 = 0;
- ewram17810[gActiveBank].unk1_0 = 0;
- ewram17810[gActiveBank ^ 2].unk0_7 = 0;
- ewram17810[gActiveBank ^ 2].unk1_0 = 0;
- FreeSpriteTilesByTag(0x27F9);
- FreeSpritePaletteByTag(0x27F9);
- if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
- m4aMPlayContinue(&gMPlay_BGM);
- else
- m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 256);
- ewram17810[gActiveBank].unk9 = 3;
- gBattleBankFunc[gActiveBank] = sub_8032C4C;
- }
-}
-
-void sub_8032E2C(void)
-{
- if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7)
- sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
- if (!ewram17810[gActiveBank ^ 2].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_7)
- sub_8141828(gActiveBank ^ 2, &gEnemyParty[gBattlePartyID[gActiveBank ^ 2]]);
- if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_3)
- {
- if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
- {
- DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank ^ 2]]);
- sub_8045A5C(
- gHealthboxIDs[gActiveBank ^ 2],
- &gEnemyParty[gBattlePartyID[gActiveBank ^ 2]],
- 0);
- sub_804777C(gActiveBank ^ 2);
- sub_8043DFC(gHealthboxIDs[gActiveBank ^ 2]);
- sub_8032984(
- gActiveBank ^ 2,
- GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank ^ 2]], MON_DATA_SPECIES));
- }
- DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]);
- sub_8045A5C(
- gHealthboxIDs[gActiveBank],
- &gEnemyParty[gBattlePartyID[gActiveBank]],
- 0);
- sub_804777C(gActiveBank);
- sub_8043DFC(gHealthboxIDs[gActiveBank]);
- sub_8032984(
- gActiveBank,
- GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
-
- ewram17840.unk9_0 = 0;
- gBattleBankFunc[gActiveBank] = sub_8032C88;
- }
-}
-
-void sub_8033018(void)
-{
- if (gSprites[gObjectBankIDs[gActiveBank]].animEnded == TRUE
- && gSprites[gObjectBankIDs[gActiveBank]].pos2.x == 0)
- {
- if (!ewram17810[gActiveBank].unk0_7)
- {
- sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
- return;
- }
- if (ewram17810[gActiveBank].unk1_0)
- {
- ewram17810[gActiveBank].unk0_7 = 0;
- ewram17810[gActiveBank].unk1_0 = 0;
- FreeSpriteTilesByTag(0x27F9);
- FreeSpritePaletteByTag(0x27F9);
- OpponentBufferExecCompleted();
- return;
- }
- }
-}
-
-void sub_80330C8(void)
-{
- s16 r4 = sub_8045C78(gActiveBank, gHealthboxIDs[gActiveBank], 0, 0);
-
- sub_8043DFC(gHealthboxIDs[gActiveBank]);
- if (r4 != -1)
- sub_80440EC(gHealthboxIDs[gActiveBank], r4, 0);
- else
- OpponentBufferExecCompleted();
-}
-
-void sub_803311C(void)
-{
- if (!gSprites[gObjectBankIDs[gActiveBank]].inUse)
- {
- sub_8043DB0(gHealthboxIDs[gActiveBank]);
- OpponentBufferExecCompleted();
- }
-}
-
-void sub_8033160(void)
-{
- if (!ewram17810[gActiveBank].unk0_6)
- {
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
- sub_8032A08(gActiveBank);
- sub_8043DB0(gHealthboxIDs[gActiveBank]);
- OpponentBufferExecCompleted();
- }
-}
-
-void sub_80331D0(void)
-{
- if (gUnknown_03004210.state == 0)
- OpponentBufferExecCompleted();
-}
-
-void bx_blink_t7(void)
-{
- u8 spriteId = gObjectBankIDs[gActiveBank];
-
- if (gSprites[spriteId].data1 == 32)
- {
- gSprites[spriteId].data1 = 0;
- gSprites[spriteId].invisible = FALSE;
- gDoingBattleAnim = 0;
- OpponentBufferExecCompleted();
- }
- else
- {
- if (((u16)gSprites[spriteId].data1 % 4) == 0)
- gSprites[spriteId].invisible ^= 1;
- gSprites[spriteId].data1++;
- }
-}
-
-void sub_8033264(void)
-{
- if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy)
- {
- if (ewram17800[gActiveBank].unk0_2)
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
- gBattleBankFunc[gActiveBank] = sub_80332D0;
- }
-}
-
-void sub_80332D0(void)
-{
- if (!ewram17810[gActiveBank].unk0_6)
- {
- CreateTask(c3_0802FDF4, 10);
- OpponentBufferExecCompleted();
- }
-}
-
-void sub_8033308(void)
-{
- if (ewram17810[gActiveBank].unk1_0)
- {
- ewram17810[gActiveBank].unk0_7 = 0;
- ewram17810[gActiveBank].unk1_0 = 0;
- FreeSpriteTilesByTag(0x27F9);
- FreeSpritePaletteByTag(0x27F9);
- StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 0);
- sub_8045A5C(
- gHealthboxIDs[gActiveBank],
- &gEnemyParty[gBattlePartyID[gActiveBank]],
- 0);
- sub_804777C(gActiveBank);
- sub_8043DFC(gHealthboxIDs[gActiveBank]);
- sub_8031F88(gActiveBank);
- gBattleBankFunc[gActiveBank] = sub_8033264;
- }
-}
-
-void sub_80333D4(void)
-{
- if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7)
- sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
- if (gSprites[gUnknown_0300434C[gActiveBank]].callback == SpriteCallbackDummy
- && !ewram17810[gActiveBank].unk0_3)
- {
- DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]);
- sub_8032984(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
- gBattleBankFunc[gActiveBank] = sub_8033308;
- }
-}
-
-void sub_8033494(void)
-{
- if (!ewram17810[gActiveBank].unk0_4)
- OpponentBufferExecCompleted();
-}
-
-void sub_80334C0(void)
-{
- if (!ewram17810[gActiveBank].unk0_5)
- OpponentBufferExecCompleted();
-}
-
-void OpponentBufferExecCompleted(void)
-{
- gBattleBankFunc[gActiveBank] = OpponentBufferRunCommand;
- gBattleExecBuffer &= ~gBitTable[gActiveBank];
-}
diff --git a/src/battle_anim_80CA710.c b/src/battle_anim_80CA710.c
new file mode 100644
index 000000000..65ccd7c21
--- /dev/null
+++ b/src/battle_anim_80CA710.c
@@ -0,0 +1,18 @@
+
+// Includes
+#include "global.h"
+
+// Static type declarations
+
+// Static RAM declarations
+
+IWRAM_DATA u32 filler_03000724;
+IWRAM_DATA u16 gUnknown_03000728[4];
+IWRAM_DATA u16 gUnknown_03000730[6];
+IWRAM_DATA u32 filler_0300073c;
+
+// Static ROM declarations
+
+// .rodata
+
+// .text
diff --git a/src/battle_anim_81258BC.c b/src/battle_anim_81258BC.c
deleted file mode 100644
index 5bdbb4946..000000000
--- a/src/battle_anim_81258BC.c
+++ /dev/null
@@ -1,50 +0,0 @@
-#include "global.h"
-#include "battle_anim_81258BC.h"
-#include "battle.h"
-#include "battle_message.h"
-#include "menu_cursor.h"
-#include "text.h"
-
-extern struct Window gUnknown_03004210;
-extern u8 gDisplayedStringBattle[];
-extern u8 gActionSelectionCursor[];
-
-extern const u8 gUnknown_08400CBB[];
-extern u8 gActiveBank;
-extern const u8 gUnknown_08400D15[];
-
-extern void *gBattleBankFunc[];
-extern u16 gUnknown_030042A0;
-extern u16 gUnknown_030042A4;
-
-#if ENGLISH
-#define SUB_812BB10_TILE_DATA_OFFSET 440
-#elif GERMAN
-#define SUB_812BB10_TILE_DATA_OFFSET 444
-#endif
-
-void sub_812BB10(void) {
- int i;
-
- gUnknown_030042A4 = 0;
- gUnknown_030042A0 = 160;
- gUnknown_03004210.paletteNum = 0;
- FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 15, 27, 18);
- FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 35, 16, 36);
- gBattleBankFunc[gActiveBank] = bx_battle_menu_t6_2;
-
- InitWindow(&gUnknown_03004210, gUnknown_08400D15, 400, 18, 35);
- sub_8002F44(&gUnknown_03004210);
- sub_814A5C0(0, 0xFFFF, 12, 11679, 0);
-
- for (i = 0; i < 4; i++)
- {
- nullsub_8(i);
- }
-
- sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
- StrCpyDecodeToDisplayedStringBattle((u8 *) gUnknown_08400CBB);
-
- InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_812BB10_TILE_DATA_OFFSET, 2, 35);
- sub_8002F44(&gUnknown_03004210);
-} \ No newline at end of file
diff --git a/src/battle_10.c b/src/battle_controller_linkopponent.c
index 0237bab4b..93c6671e5 100644
--- a/src/battle_10.c
+++ b/src/battle_controller_linkopponent.c
@@ -3,6 +3,8 @@
#include "battle_interface.h"
#include "data2.h"
#include "link.h"
+#include "m4a.h"
+#include "main.h"
#include "palette.h"
#include "rom_8077ABC.h"
#include "rom3.h"
@@ -48,11 +50,14 @@ extern struct Window gUnknown_03004210;
extern u16 gUnknown_030042A0;
extern u16 gUnknown_030042A4;
extern u8 gUnknown_0300434C[];
+extern u32 gBattleExecBuffer;
+extern MainCallback gPreBattleCallback1;
+extern struct MusicPlayerInfo gMPlay_BGM;
extern u8 sub_8077F68();
extern u8 sub_8079E90();
extern u8 GetBankIdentity(u8);
-extern void sub_8031794(struct Pokemon *, u8);
+extern void BattleLoadOpponentMonSprite(struct Pokemon *, u8);
extern void sub_8037A74(void);
extern void sub_8032984(u8, u16);
extern void sub_8037E30(void);
@@ -98,9 +103,15 @@ extern u8 sub_8078874();
extern u8 move_anim_start_t3();
extern void sub_8037FD8(void);
extern void sub_8037F34(void);
-extern void dp01_tbl4_exec_completed(void);
+extern void LinkOpponentBufferExecCompleted(void);
+extern void sub_8141828();
+extern void sub_804777C();
+
+// this file's functions
u32 dp01_getattr_by_ch1_for_player_pokemon__(u8, u8 *);
+void sub_803752C(void);
+void sub_8037D2C(void);
void sub_8038900(u8);
void sub_8039430(u8, u8);
void sub_8039648(void);
@@ -108,6 +119,454 @@ void sub_8039B64(void);
void sub_803A2C4(u8);
void sub_803A4E0(void);
+void LinkOpponentHandleGetAttributes(void);
+void LinkOpponentHandlecmd1(void);
+void LinkOpponentHandleSetAttributes(void);
+void LinkOpponentHandlecmd3(void);
+void LinkOpponentHandleLoadPokeSprite(void);
+void LinkOpponentHandleSendOutPoke(void);
+void LinkOpponentHandleReturnPokeToBall(void);
+void LinkOpponentHandleTrainerThrow(void);
+void LinkOpponentHandleTrainerSlide(void);
+void LinkOpponentHandleTrainerSlideBack(void);
+void LinkOpponentHandlecmd10(void);
+void LinkOpponentHandlecmd11(void);
+void LinkOpponentHandlecmd12(void);
+void LinkOpponentHandleBallThrow(void);
+void LinkOpponentHandlePuase(void);
+void LinkOpponentHandleMoveAnimation(void);
+void LinkOpponentHandlePrintString(void);
+void LinkOpponentHandlePrintStringPlayerOnly(void);
+void LinkOpponentHandlecmd18(void);
+void LinkOpponentHandlecmd19(void);
+void LinkOpponentHandlecmd20(void);
+void LinkOpponentHandleOpenBag(void);
+void LinkOpponentHandlecmd22(void);
+void LinkOpponentHandlecmd23(void);
+void LinkOpponentHandleHealthBarUpdate(void);
+void LinkOpponentHandleExpBarUpdate(void);
+void LinkOpponentHandleStatusIconUpdate(void);
+void LinkOpponentHandleStatusAnimation(void);
+void LinkOpponentHandleStatusXor(void);
+void LinkOpponentHandlecmd29(void);
+void LinkOpponentHandleDMATransfer(void);
+void LinkOpponentHandlecmd31(void);
+void LinkOpponentHandlecmd32(void);
+void LinkOpponentHandlecmd33(void);
+void LinkOpponentHandlecmd34(void);
+void LinkOpponentHandlecmd35(void);
+void LinkOpponentHandlecmd36(void);
+void LinkOpponentHandlecmd37(void);
+void LinkOpponentHandlecmd38(void);
+void LinkOpponentHandlecmd39(void);
+void LinkOpponentHandlecmd40(void);
+void LinkOpponentHandleHitAnimation(void);
+void LinkOpponentHandlecmd42(void);
+void LinkOpponentHandleEffectivenessSound(void);
+void LinkOpponentHandlecmd44(void);
+void LinkOpponentHandleFaintingCry(void);
+void LinkOpponentHandleIntroSlide(void);
+void LinkOpponentHandleTrainerBallThrow(void);
+void LinkOpponentHandlecmd48(void);
+void LinkOpponentHandlecmd49(void);
+void LinkOpponentHandlecmd50(void);
+void LinkOpponentHandleSpriteInvisibility(void);
+void LinkOpponentHandleBattleAnimation(void);
+void LinkOpponentHandleLinkStandbyMsg(void);
+void LinkOpponentHandleResetActionMoveSelection(void);
+void LinkOpponentHandlecmd55(void);
+void LinkOpponentHandlecmd56(void);
+
+// const data
+
+typedef void (*BattleBufferCmd) (void);
+const BattleBufferCmd gLinkOpponentBufferCommands[] =
+{
+ LinkOpponentHandleGetAttributes,
+ LinkOpponentHandlecmd1,
+ LinkOpponentHandleSetAttributes,
+ LinkOpponentHandlecmd3,
+ LinkOpponentHandleLoadPokeSprite,
+ LinkOpponentHandleSendOutPoke,
+ LinkOpponentHandleReturnPokeToBall,
+ LinkOpponentHandleTrainerThrow,
+ LinkOpponentHandleTrainerSlide,
+ LinkOpponentHandleTrainerSlideBack,
+ LinkOpponentHandlecmd10,
+ LinkOpponentHandlecmd11,
+ LinkOpponentHandlecmd12,
+ LinkOpponentHandleBallThrow,
+ LinkOpponentHandlePuase,
+ LinkOpponentHandleMoveAnimation,
+ LinkOpponentHandlePrintString,
+ LinkOpponentHandlePrintStringPlayerOnly,
+ LinkOpponentHandlecmd18,
+ LinkOpponentHandlecmd19,
+ LinkOpponentHandlecmd20,
+ LinkOpponentHandleOpenBag,
+ LinkOpponentHandlecmd22,
+ LinkOpponentHandlecmd23,
+ LinkOpponentHandleHealthBarUpdate,
+ LinkOpponentHandleExpBarUpdate,
+ LinkOpponentHandleStatusIconUpdate,
+ LinkOpponentHandleStatusAnimation,
+ LinkOpponentHandleStatusXor,
+ LinkOpponentHandlecmd29,
+ LinkOpponentHandleDMATransfer,
+ LinkOpponentHandlecmd31,
+ LinkOpponentHandlecmd32,
+ LinkOpponentHandlecmd33,
+ LinkOpponentHandlecmd34,
+ LinkOpponentHandlecmd35,
+ LinkOpponentHandlecmd36,
+ LinkOpponentHandlecmd37,
+ LinkOpponentHandlecmd38,
+ LinkOpponentHandlecmd39,
+ LinkOpponentHandlecmd40,
+ LinkOpponentHandleHitAnimation,
+ LinkOpponentHandlecmd42,
+ LinkOpponentHandleEffectivenessSound,
+ LinkOpponentHandlecmd44,
+ LinkOpponentHandleFaintingCry,
+ LinkOpponentHandleIntroSlide,
+ LinkOpponentHandleTrainerBallThrow,
+ LinkOpponentHandlecmd48,
+ LinkOpponentHandlecmd49,
+ LinkOpponentHandlecmd50,
+ LinkOpponentHandleSpriteInvisibility,
+ LinkOpponentHandleBattleAnimation,
+ LinkOpponentHandleLinkStandbyMsg,
+ LinkOpponentHandleResetActionMoveSelection,
+ LinkOpponentHandlecmd55,
+ LinkOpponentHandlecmd56
+};
+
+// code
+
+void nullsub_47(void)
+{
+}
+
+void SetBankFuncToLinkOpponentBufferRunCommand(void)
+{
+ gBattleBankFunc[gActiveBank] = sub_803752C;
+}
+
+void sub_803752C(void)
+{
+ if (gBattleExecBuffer & gBitTable[gActiveBank])
+ {
+ if (gBattleBufferA[gActiveBank][0] <= 0x38)
+ gLinkOpponentBufferCommands[gBattleBufferA[gActiveBank][0]]();
+ else
+ LinkOpponentBufferExecCompleted();
+ }
+}
+
+void sub_803757C(void)
+{
+ if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ LinkOpponentBufferExecCompleted();
+}
+
+void sub_80375B4(void)
+{
+ if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ {
+ sub_8031B74(gSprites[gObjectBankIDs[gActiveBank]].oam.affineParam);
+ gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum = gSprites[gObjectBankIDs[gActiveBank]].data5;
+ FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
+ DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ LinkOpponentBufferExecCompleted();
+ }
+}
+
+void sub_8037644(void)
+{
+ if ((--ewram17810[gActiveBank].unk9) == 0xFF)
+ {
+ ewram17810[gActiveBank].unk9 = 0;
+ LinkOpponentBufferExecCompleted();
+ }
+}
+
+void sub_8037680(void)
+{
+ bool8 r6 = FALSE;
+
+ if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI)))
+ {
+ if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ r6 = TRUE;
+ }
+ else
+ {
+ if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy
+ && gSprites[gHealthboxIDs[gActiveBank ^ 2]].callback == SpriteCallbackDummy)
+ r6 = TRUE;
+ }
+ if (IsCryPlayingOrClearCrySongs())
+ r6 = FALSE;
+
+ if (r6)
+ {
+ if (GetBankIdentity(gActiveBank) == 1)
+ {
+ if (!ewram17810[gActiveBank].unk1_0 || !ewram17810[gActiveBank ^ 2].unk1_0)
+ return;
+ ewram17810[gActiveBank].unk0_7 = 0;
+ ewram17810[gActiveBank].unk1_0 = 0;
+ ewram17810[gActiveBank ^ 2].unk0_7 = 0;
+ ewram17810[gActiveBank ^ 2].unk1_0 = 0;
+ FreeSpriteTilesByTag(0x27F9);
+ FreeSpritePaletteByTag(0x27F9);
+ }
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ if (GetBankIdentity(gActiveBank) == 1)
+ m4aMPlayContinue(&gMPlay_BGM);
+ }
+ else
+ {
+ m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 256);
+ }
+ ewram17810[gActiveBank].unk9 = 3;
+ gBattleBankFunc[gActiveBank] = sub_8037644;
+ }
+}
+
+void sub_8037840(void)
+{
+ if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7)
+ sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
+ if (!ewram17810[gActiveBank ^ 2].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_7)
+ sub_8141828(gActiveBank ^ 2, &gEnemyParty[gBattlePartyID[gActiveBank ^ 2]]);
+ if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_3)
+ {
+ if ((gBattleTypeFlags & BATTLE_TYPE_MULTI) && GetBankIdentity(gActiveBank) == 3)
+ {
+ if (++ewram17810[gActiveBank].unk9 == 1)
+ return;
+ ewram17810[gActiveBank].unk9 = 0;
+ }
+ if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
+ {
+ DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank ^ 2]]);
+ sub_8045A5C(
+ gHealthboxIDs[gActiveBank ^ 2],
+ &gEnemyParty[gBattlePartyID[gActiveBank ^ 2]],
+ 0);
+ sub_804777C(gActiveBank ^ 2);
+ sub_8043DFC(gHealthboxIDs[gActiveBank ^ 2]);
+ sub_8032984(
+ gActiveBank ^ 2,
+ GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank ^ 2]], MON_DATA_SPECIES));
+ }
+ DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]);
+ sub_8045A5C(
+ gHealthboxIDs[gActiveBank],
+ &gEnemyParty[gBattlePartyID[gActiveBank]],
+ 0);
+ sub_804777C(gActiveBank);
+ sub_8043DFC(gHealthboxIDs[gActiveBank]);
+ sub_8032984(
+ gActiveBank,
+ GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
+
+ ewram17840.unk9_0 = 0;
+ gBattleBankFunc[gActiveBank] = sub_8037680;
+ }
+}
+
+void sub_8037A74(void)
+{
+ if (gSprites[gObjectBankIDs[gActiveBank]].animEnded == TRUE
+ && gSprites[gObjectBankIDs[gActiveBank]].pos2.x == 0)
+ {
+ if (!ewram17810[gActiveBank].unk0_7)
+ {
+ sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
+ return;
+ }
+ if (ewram17810[gActiveBank].unk1_0)
+ {
+ ewram17810[gActiveBank].unk0_7 = 0;
+ ewram17810[gActiveBank].unk1_0 = 0;
+ FreeSpriteTilesByTag(0x27F9);
+ FreeSpritePaletteByTag(0x27F9);
+ LinkOpponentBufferExecCompleted();
+ return;
+ }
+ }
+}
+
+void sub_8037B24(void)
+{
+ s16 r4 = sub_8045C78(gActiveBank, gHealthboxIDs[gActiveBank], 0, 0);
+
+ sub_8043DFC(gHealthboxIDs[gActiveBank]);
+ if (r4 != -1)
+ sub_80440EC(gHealthboxIDs[gActiveBank], r4, 0);
+ else
+ LinkOpponentBufferExecCompleted();
+}
+
+void sub_8037B78(void)
+{
+ if (!gSprites[gObjectBankIDs[gActiveBank]].inUse)
+ {
+ sub_8043DB0(gHealthboxIDs[gActiveBank]);
+ LinkOpponentBufferExecCompleted();
+ }
+}
+
+void sub_8037BBC(void)
+{
+ if (!ewram17810[gActiveBank].unk0_6)
+ {
+ FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
+ DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ sub_8032A08(gActiveBank);
+ sub_8043DB0(gHealthboxIDs[gActiveBank]);
+ LinkOpponentBufferExecCompleted();
+ }
+}
+
+void sub_8037C2C(void)
+{
+ if (gUnknown_03004210.state == 0)
+ LinkOpponentBufferExecCompleted();
+}
+
+void dp01t_0F_4_move_anim(void)
+{
+ u8 spriteId = gObjectBankIDs[gActiveBank];
+
+ if (gSprites[spriteId].data1 == 32)
+ {
+ gSprites[spriteId].data1 = 0;
+ gSprites[spriteId].invisible = FALSE;
+ gDoingBattleAnim = 0;
+ LinkOpponentBufferExecCompleted();
+ }
+ else
+ {
+ if (((u16)gSprites[spriteId].data1 % 4) == 0)
+ gSprites[spriteId].invisible ^= 1;
+ gSprites[spriteId].data1++;
+ }
+}
+
+void sub_8037CC0(void)
+{
+ if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ {
+ if (ewram17800[gActiveBank].substituteSprite)
+ move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
+ gBattleBankFunc[gActiveBank] = sub_8037D2C;
+ }
+}
+
+void sub_8037D2C(void)
+{
+ if (!ewram17810[gActiveBank].unk0_6)
+ {
+ CreateTask(c3_0802FDF4, 10);
+ LinkOpponentBufferExecCompleted();
+ }
+}
+
+void sub_8037D64(void)
+{
+ if (ewram17810[gActiveBank].unk1_0)
+ {
+ ewram17810[gActiveBank].unk0_7 = 0;
+ ewram17810[gActiveBank].unk1_0 = 0;
+ FreeSpriteTilesByTag(0x27F9);
+ FreeSpritePaletteByTag(0x27F9);
+ StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 0);
+ sub_8045A5C(
+ gHealthboxIDs[gActiveBank],
+ &gEnemyParty[gBattlePartyID[gActiveBank]],
+ 0);
+ sub_804777C(gActiveBank);
+ sub_8043DFC(gHealthboxIDs[gActiveBank]);
+ sub_8031F88(gActiveBank);
+ gBattleBankFunc[gActiveBank] = sub_8037CC0;
+ }
+}
+
+void sub_8037E30(void)
+{
+ if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7)
+ sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
+ if (gSprites[gUnknown_0300434C[gActiveBank]].callback == SpriteCallbackDummy
+ && !ewram17810[gActiveBank].unk0_3)
+ {
+ DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]);
+ sub_8032984(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
+ gBattleBankFunc[gActiveBank] = sub_8037D64;
+ }
+}
+
+void sub_8037EF0(void)
+{
+ if (gReceivedRemoteLinkPlayers == 0)
+ {
+ m4aSongNumStop(SE_HINSI);
+ gMain.inBattle = FALSE;
+ gMain.callback1 = gPreBattleCallback1;
+ SetMainCallback2(c2_8011A1C);
+ }
+}
+
+void sub_8037F34(void)
+{
+ if (!gPaletteFade.active)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ sub_800832C();
+ gBattleBankFunc[gActiveBank] = sub_8037EF0;
+ }
+ else
+ {
+ m4aSongNumStop(SE_HINSI);
+ gMain.inBattle = FALSE;
+ gMain.callback1 = gPreBattleCallback1;
+ SetMainCallback2(gMain.savedCallback);
+ }
+ }
+}
+
+void sub_8037FAC(void)
+{
+ if (!ewram17810[gActiveBank].unk0_4)
+ LinkOpponentBufferExecCompleted();
+}
+
+void sub_8037FD8(void)
+{
+ if (!ewram17810[gActiveBank].unk0_5)
+ LinkOpponentBufferExecCompleted();
+}
+
+void LinkOpponentBufferExecCompleted(void)
+{
+ gBattleBankFunc[gActiveBank] = sub_803752C;
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ u8 playerId = GetMultiplayerId();
+
+ PrepareBufferDataTransferLink(2, 4, &playerId);
+ gBattleBufferA[gActiveBank][0] = 0x38;
+ }
+ else
+ {
+ gBattleExecBuffer &= ~gBitTable[gActiveBank];
+ }
+}
+
void LinkOpponentHandleGetAttributes(void)
{
u8 buffer[0x100];
@@ -129,8 +588,8 @@ void LinkOpponentHandleGetAttributes(void)
r4 >>= 1;
}
}
- dp01_build_cmdbuf_x1D_1D_numargs_varargs(1, r6, buffer);
- dp01_tbl4_exec_completed();
+ Emitcmd29(1, r6, buffer);
+ LinkOpponentBufferExecCompleted();
}
u32 dp01_getattr_by_ch1_for_player_pokemon__(u8 a, u8 *buffer)
@@ -438,12 +897,12 @@ u32 dp01_getattr_by_ch1_for_player_pokemon__(u8 a, u8 *buffer)
return size;
}
-void sub_803889C(void)
+void LinkOpponentHandlecmd1(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_80388A8(void)
+void LinkOpponentHandleSetAttributes(void)
{
u8 i;
u8 r4;
@@ -462,7 +921,7 @@ void sub_80388A8(void)
r4 >>= 1;
}
}
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
void sub_8038900(u8 a)
@@ -681,7 +1140,7 @@ void sub_8038900(u8 a)
}
}
-void sub_8039220(void)
+void LinkOpponentHandlecmd3(void)
{
u8 *dst;
u8 i;
@@ -689,14 +1148,14 @@ void sub_8039220(void)
dst = (u8 *)&gEnemyParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++)
dst[i] = gBattleBufferA[gActiveBank][3 + i];
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039294(void)
+void LinkOpponentHandleLoadPokeSprite(void)
{
u16 species = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
- sub_8031794(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank);
GetMonSpriteTemplate_803C56C(species, GetBankIdentity(gActiveBank));
gObjectBankIDs[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
@@ -711,7 +1170,7 @@ void sub_8039294(void)
gBattleBankFunc[gActiveBank] = sub_8037A74;
}
-void sub_80393E4(void)
+void LinkOpponentHandleSendOutPoke(void)
{
gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1];
sub_8039430(gActiveBank, gBattleBufferA[gActiveBank][2]);
@@ -726,7 +1185,7 @@ void sub_8039430(u8 a, u8 b)
gBattlePartyID[a] = gBattleBufferA[a][1];
species = GetMonData(&gEnemyParty[gBattlePartyID[a]], MON_DATA_SPECIES);
gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0);
- sub_8031794(&gEnemyParty[gBattlePartyID[a]], a);
+ BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[a]], a);
GetMonSpriteTemplate_803C56C(species, GetBankIdentity(a));
gObjectBankIDs[a] = CreateSprite(
&gUnknown_02024E8C,
@@ -743,7 +1202,7 @@ void sub_8039430(u8 a, u8 b)
gSprites[gUnknown_0300434C[a]].data0 = sub_8046400(0, 0xFE);
}
-void sub_80395B4(void)
+void LinkOpponentHandleReturnPokeToBall(void)
{
if (gBattleBufferA[gActiveBank][1] == 0)
{
@@ -756,7 +1215,7 @@ void sub_80395B4(void)
DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
sub_8032A08(gActiveBank);
sub_8043DB0(gHealthboxIDs[gActiveBank]);
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
}
@@ -765,7 +1224,7 @@ void sub_8039648(void)
switch (ewram17810[gActiveBank].unk4)
{
case 0:
- if (ewram17800[gActiveBank].unk0_2)
+ if (ewram17800[gActiveBank].substituteSprite)
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
ewram17810[gActiveBank].unk4 = 1;
break;
@@ -780,7 +1239,7 @@ void sub_8039648(void)
}
}
-void sub_80396D0(void)
+void LinkOpponentHandleTrainerThrow(void)
{
s16 xOffset;
u32 gender;
@@ -814,12 +1273,12 @@ void sub_80396D0(void)
gBattleBankFunc[gActiveBank] = sub_803757C;
}
-void sub_80398A4(void)
+void LinkOpponentHandleTrainerSlide(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_80398B0(void)
+void LinkOpponentHandleTrainerSlideBack(void)
{
oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
gSprites[gObjectBankIDs[gActiveBank]].data0 = 35;
@@ -830,11 +1289,11 @@ void sub_80398B0(void)
gBattleBankFunc[gActiveBank] = sub_80375B4;
}
-void sub_803995C(void)
+void LinkOpponentHandlecmd10(void)
{
if (ewram17810[gActiveBank].unk4 == 0)
{
- if (ewram17800[gActiveBank].unk0_2)
+ if (ewram17800[gActiveBank].substituteSprite)
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
ewram17810[gActiveBank].unk4++;
}
@@ -847,27 +1306,27 @@ void sub_803995C(void)
}
}
-void sub_8039A00(void)
+void LinkOpponentHandlecmd11(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039A0C(void)
+void LinkOpponentHandlecmd12(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039A18(void)
+void LinkOpponentHandleBallThrow(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039A24(void)
+void LinkOpponentHandlePuase(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039A30(void)
+void LinkOpponentHandleMoveAnimation(void)
{
if (!mplay_80342A4(gActiveBank))
{
@@ -890,7 +1349,7 @@ void sub_8039A30(void)
// Dead code. sub_8031720 always returns 0.
if (sub_8031720(r0, gUnknown_0202F7C4) != 0)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
else
{
@@ -909,7 +1368,7 @@ void sub_8039B64(void)
switch (ewram17810[gActiveBank].unk4)
{
case 0:
- if (ewram17800[gActiveBank].unk0_2 && !ewram17800[gActiveBank].unk0_3)
+ if (ewram17800[gActiveBank].substituteSprite && !ewram17800[gActiveBank].unk0_3)
{
ewram17800[gActiveBank].unk0_3 = 1;
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
@@ -929,7 +1388,7 @@ void sub_8039B64(void)
if (!gAnimScriptActive)
{
sub_80326EC(1);
- if ((ewram17800[gActiveBank].unk0_2) && r7 <= 1)
+ if ((ewram17800[gActiveBank].substituteSprite) && r7 <= 1)
{
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
ewram17800[gActiveBank].unk0_3 = 0;
@@ -945,13 +1404,13 @@ void sub_8039B64(void)
gActiveBank,
gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
ewram17810[gActiveBank].unk4 = 0;
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
break;
}
}
-void sub_8039CC8(void)
+void LinkOpponentHandlePrintString(void)
{
gUnknown_030042A4 = 0;
gUnknown_030042A0 = 0;
@@ -960,42 +1419,42 @@ void sub_8039CC8(void)
gBattleBankFunc[gActiveBank] = sub_8037C2C;
}
-void sub_8039D2C(void)
+void LinkOpponentHandlePrintStringPlayerOnly(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039D38(void)
+void LinkOpponentHandlecmd18(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039D44(void)
+void LinkOpponentHandlecmd19(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039D50(void)
+void LinkOpponentHandlecmd20(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039D5C(void)
+void LinkOpponentHandleOpenBag(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039D68(void)
+void LinkOpponentHandlecmd22(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039D74(void)
+void LinkOpponentHandlecmd23(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039D80(void)
+void LinkOpponentHandleHealthBarUpdate(void)
{
s16 r7;
@@ -1017,12 +1476,12 @@ void sub_8039D80(void)
gBattleBankFunc[gActiveBank] = sub_8037B24;
}
-void sub_8039E70(void)
+void LinkOpponentHandleExpBarUpdate(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039E7C(void)
+void LinkOpponentHandleStatusIconUpdate(void)
{
if (mplay_80342A4(gActiveBank) == 0)
{
@@ -1032,7 +1491,7 @@ void sub_8039E7C(void)
}
}
-void sub_8039EF0(void)
+void LinkOpponentHandleStatusAnimation(void)
{
if (mplay_80342A4(gActiveBank) == 0)
{
@@ -1046,80 +1505,80 @@ void sub_8039EF0(void)
}
}
-void sub_8039F58(void)
+void LinkOpponentHandleStatusXor(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039F64(void)
+void LinkOpponentHandlecmd29(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039F70(void)
+void LinkOpponentHandleDMATransfer(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039F7C(void)
+void LinkOpponentHandlecmd31(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039F88(void)
+void LinkOpponentHandlecmd32(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039F94(void)
+void LinkOpponentHandlecmd33(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039FA0(void)
+void LinkOpponentHandlecmd34(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039FAC(void)
+void LinkOpponentHandlecmd35(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039FB8(void)
+void LinkOpponentHandlecmd36(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039FC4(void)
+void LinkOpponentHandlecmd37(void)
{
gUnknown_020238C8.unk0_0 = 0;
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039FE0(void)
+void LinkOpponentHandlecmd38(void)
{
gUnknown_020238C8.unk0_0 = gBattleBufferA[gActiveBank][1];
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_803A018(void)
+void LinkOpponentHandlecmd39(void)
{
gUnknown_020238C8.unk0_7 = 0;
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_803A030(void)
+void LinkOpponentHandlecmd40(void)
{
gUnknown_020238C8.unk0_7 ^= 1;
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void dp01t_29_4_blink(void)
+void LinkOpponentHandleHitAnimation(void)
{
if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
else
{
@@ -1130,12 +1589,12 @@ void dp01t_29_4_blink(void)
}
}
-void sub_803A0C8(void)
+void LinkOpponentHandlecmd42(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_803A0D4(void)
+void LinkOpponentHandleEffectivenessSound(void)
{
s8 pan;
@@ -1144,31 +1603,31 @@ void sub_803A0D4(void)
else
pan = 63;
PlaySE12WithPanning(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8), pan);
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_803A118(void)
+void LinkOpponentHandlecmd44(void)
{
PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_803A148(void)
+void LinkOpponentHandleFaintingCry(void)
{
PlayCry3(
GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES),
25, 5);
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void dp01t_2E_4_battle_intro(void)
+void LinkOpponentHandleIntroSlide(void)
{
sub_80E43C0(gBattleBufferA[gActiveBank][1]);
gUnknown_02024DE8 |= 1;
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_803A1B8(void)
+void LinkOpponentHandleTrainerBallThrow(void)
{
u8 taskId;
@@ -1219,11 +1678,11 @@ void sub_803A3A8(struct Sprite *sprite)
DestroySprite(sprite);
}
-void sub_803A3DC(void)
+void LinkOpponentHandlecmd48(void)
{
if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == 0)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
return;
}
@@ -1256,33 +1715,33 @@ void sub_803A4E0(void)
if (ewram17810[gActiveBank].unk5++ >= 93)
{
ewram17810[gActiveBank].unk5 = 0;
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
}
-void sub_803A520(void)
+void LinkOpponentHandlecmd49(void)
{
if (ewram17810[gActiveBank].unk0_0)
gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0;
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_803A56C(void)
+void LinkOpponentHandlecmd50(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_803A578(void)
+void LinkOpponentHandleSpriteInvisibility(void)
{
if (sub_8078874(gActiveBank) != 0)
{
gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
sub_8031F88(gActiveBank);
}
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void bx_exec_buffer_A_ch0_tbl4(void)
+void LinkOpponentHandleBattleAnimation(void)
{
if (mplay_80342A4(gActiveBank) == 0)
{
@@ -1290,23 +1749,23 @@ void bx_exec_buffer_A_ch0_tbl4(void)
u16 r4 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
if (move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, r3, r4) != 0)
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
else
gBattleBankFunc[gActiveBank] = sub_8037FD8;
}
}
-void sub_803A640(void)
+void LinkOpponentHandleLinkStandbyMsg(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_803A64C(void)
+void LinkOpponentHandleResetActionMoveSelection(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_803A658(void)
+void LinkOpponentHandlecmd55(void)
{
if (gBattleBufferA[gActiveBank][1] == 3)
gBattleOutcome = gBattleBufferA[gActiveBank][1];
@@ -1314,10 +1773,10 @@ void sub_803A658(void)
gBattleOutcome = gBattleBufferA[gActiveBank][1] ^ 3;
FadeOutMapMusic(5);
BeginFastPaletteFade(3);
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
gBattleBankFunc[gActiveBank] = sub_8037F34;
}
-void nullsub_48(void)
+void LinkOpponentHandlecmd56(void)
{
}
diff --git a/src/battle_811DA74.c b/src/battle_controller_linkpartner.c
index 36a287efc..95022eaaf 100644
--- a/src/battle_811DA74.c
+++ b/src/battle_controller_linkpartner.c
@@ -64,7 +64,6 @@ extern u8 gUnknown_0300434C[];
extern u8 gBattleMonForms[];
extern u8 gAnimScriptActive;
extern void (*gAnimScriptCallback)(void);
-extern void (*const gLinkPartnerBufferCommands[])(void);
extern u8 move_anim_start_t3();
extern u8 sub_8078874();
@@ -87,12 +86,12 @@ extern void oamt_set_x3A_32();
extern void sub_8078B34(struct Sprite *);
extern void sub_80105EC(struct Sprite *);
extern s32 sub_803FC34(u16);
-extern void sub_8031AF4();
+extern void LoadPlayerTrainerBankSprite();
extern void sub_80313A0(struct Sprite *);
extern u8 sub_8046400();
extern void sub_80312F0(struct Sprite *);
extern u8 CreateInvisibleSpriteWithCallback();
-extern void sub_80318FC();
+extern void BattleLoadPlayerMonSprite();
extern u8 sub_8077ABC();
extern u8 sub_8077F68();
extern u8 sub_8079E90();
@@ -111,6 +110,8 @@ extern void sub_8031F88();
extern void sub_8141828();
extern void c2_8011A1C(void);
+// this file's functions
+
void LinkPartnerBufferRunCommand(void);
void sub_811E0A0(void);
void LinkPartnerBufferExecCompleted(void);
@@ -122,6 +123,127 @@ void sub_811FF30(void);
void sub_812071C(u8);
void sub_81208E0(void);
+void LinkPartnerHandleGetAttributes(void);
+void LinkPartnerHandlecmd1(void);
+void LinkPartnerHandleSetAttributes(void);
+void LinkPartnerHandlecmd3(void);
+void LinkPartnerHandleLoadPokeSprite(void);
+void LinkPartnerHandleSendOutPoke(void);
+void LinkPartnerHandleReturnPokeToBall(void);
+void LinkPartnerHandleTrainerThrow(void);
+void LinkPartnerHandleTrainerSlide(void);
+void LinkPartnerHandleTrainerSlideBack(void);
+void LinkPartnerHandlecmd10(void);
+void LinkPartnerHandlecmd11(void);
+void LinkPartnerHandlecmd12(void);
+void LinkPartnerHandleBallThrow(void);
+void LinkPartnerHandlePuase(void);
+void LinkPartnerHandleMoveAnimation(void);
+void LinkPartnerHandlePrintString(void);
+void LinkPartnerHandlePrintStringPlayerOnly(void);
+void LinkPartnerHandlecmd18(void);
+void LinkPartnerHandlecmd19(void);
+void LinkPartnerHandlecmd20(void);
+void LinkPartnerHandleOpenBag(void);
+void LinkPartnerHandlecmd22(void);
+void LinkPartnerHandlecmd23(void);
+void LinkPartnerHandleHealthBarUpdate(void);
+void LinkPartnerHandleExpBarUpdate(void);
+void LinkPartnerHandleStatusIconUpdate(void);
+void LinkPartnerHandleStatusAnimation(void);
+void LinkPartnerHandleStatusXor(void);
+void LinkPartnerHandlecmd29(void);
+void LinkPartnerHandleDMATransfer(void);
+void LinkPartnerHandlecmd31(void);
+void LinkPartnerHandlecmd32(void);
+void LinkPartnerHandlecmd33(void);
+void LinkPartnerHandlecmd34(void);
+void LinkPartnerHandlecmd35(void);
+void LinkPartnerHandlecmd36(void);
+void LinkPartnerHandlecmd37(void);
+void LinkPartnerHandlecmd38(void);
+void LinkPartnerHandlecmd39(void);
+void LinkPartnerHandlecmd40(void);
+void LinkPartnerHandleHitAnimation(void);
+void LinkPartnerHandlecmd42(void);
+void LinkPartnerHandleEffectivenessSound(void);
+void LinkPartnerHandlecmd44(void);
+void LinkPartnerHandleFaintingCry(void);
+void LinkPartnerHandleIntroSlide(void);
+void LinkPartnerHandleTrainerBallThrow(void);
+void LinkPartnerHandlecmd48(void);
+void LinkPartnerHandlecmd49(void);
+void LinkPartnerHandlecmd50(void);
+void LinkPartnerHandleSpriteInvisibility(void);
+void LinkPartnerHandleBattleAnimation(void);
+void LinkPartnerHandleLinkStandbyMsg(void);
+void LinkPartnerHandleResetActionMoveSelection(void);
+void LinkPartnerHandlecmd55(void);
+void LinkPartnerHandlecmd56(void);
+
+// const data
+typedef void (*BattleBufferCmd) (void);
+static const BattleBufferCmd gLinkPartnerBufferCommands[] =
+{
+ LinkPartnerHandleGetAttributes,
+ LinkPartnerHandlecmd1,
+ LinkPartnerHandleSetAttributes,
+ LinkPartnerHandlecmd3,
+ LinkPartnerHandleLoadPokeSprite,
+ LinkPartnerHandleSendOutPoke,
+ LinkPartnerHandleReturnPokeToBall,
+ LinkPartnerHandleTrainerThrow,
+ LinkPartnerHandleTrainerSlide,
+ LinkPartnerHandleTrainerSlideBack,
+ LinkPartnerHandlecmd10,
+ LinkPartnerHandlecmd11,
+ LinkPartnerHandlecmd12,
+ LinkPartnerHandleBallThrow,
+ LinkPartnerHandlePuase,
+ LinkPartnerHandleMoveAnimation,
+ LinkPartnerHandlePrintString,
+ LinkPartnerHandlePrintStringPlayerOnly,
+ LinkPartnerHandlecmd18,
+ LinkPartnerHandlecmd19,
+ LinkPartnerHandlecmd20,
+ LinkPartnerHandleOpenBag,
+ LinkPartnerHandlecmd22,
+ LinkPartnerHandlecmd23,
+ LinkPartnerHandleHealthBarUpdate,
+ LinkPartnerHandleExpBarUpdate,
+ LinkPartnerHandleStatusIconUpdate,
+ LinkPartnerHandleStatusAnimation,
+ LinkPartnerHandleStatusXor,
+ LinkPartnerHandlecmd29,
+ LinkPartnerHandleDMATransfer,
+ LinkPartnerHandlecmd31,
+ LinkPartnerHandlecmd32,
+ LinkPartnerHandlecmd33,
+ LinkPartnerHandlecmd34,
+ LinkPartnerHandlecmd35,
+ LinkPartnerHandlecmd36,
+ LinkPartnerHandlecmd37,
+ LinkPartnerHandlecmd38,
+ LinkPartnerHandlecmd39,
+ LinkPartnerHandlecmd40,
+ LinkPartnerHandleHitAnimation,
+ LinkPartnerHandlecmd42,
+ LinkPartnerHandleEffectivenessSound,
+ LinkPartnerHandlecmd44,
+ LinkPartnerHandleFaintingCry,
+ LinkPartnerHandleIntroSlide,
+ LinkPartnerHandleTrainerBallThrow,
+ LinkPartnerHandlecmd48,
+ LinkPartnerHandlecmd49,
+ LinkPartnerHandlecmd50,
+ LinkPartnerHandleSpriteInvisibility,
+ LinkPartnerHandleBattleAnimation,
+ LinkPartnerHandleLinkStandbyMsg,
+ LinkPartnerHandleResetActionMoveSelection,
+ LinkPartnerHandlecmd55,
+ LinkPartnerHandlecmd56,
+};
+// code starts here
void nullsub_74(void)
{
@@ -298,7 +420,7 @@ void sub_811E034(void)
{
if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy)
{
- if (ewram17800[gActiveBank].unk0_2)
+ if (ewram17800[gActiveBank].substituteSprite)
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
gBattleBankFunc[gActiveBank] = sub_811E0A0;
}
@@ -379,7 +501,7 @@ void LinkPartnerBufferExecCompleted(void)
if (gBattleTypeFlags & 2)
{
multiplayerId = GetMultiplayerId();
- dp01_prepare_buffer_wireless_probably(2, 4, &multiplayerId);
+ PrepareBufferDataTransferLink(2, 4, &multiplayerId);
gBattleBufferA[gActiveBank][0] = 0x38;
}
else
@@ -421,7 +543,7 @@ void LinkPartnerHandleGetAttributes(void)
r4 >>= 1;
}
}
- dp01_build_cmdbuf_x1D_1D_numargs_varargs(1, r6, unk);
+ Emitcmd29(1, r6, unk);
LinkPartnerBufferExecCompleted();
}
@@ -731,7 +853,7 @@ u32 dp01_getattr_by_ch1_for_player_pokemon(u8 a, u8 *buffer)
return size;
}
-void sub_811EC04(void)
+void LinkPartnerHandlecmd1(void)
{
LinkPartnerBufferExecCompleted();
}
@@ -976,7 +1098,7 @@ void sub_811EC68(u8 a)
sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
}
-void sub_811F664(void)
+void LinkPartnerHandlecmd3(void)
{
u8 *dst;
u8 i;
@@ -987,9 +1109,9 @@ void sub_811F664(void)
LinkPartnerBufferExecCompleted();
}
-void sub_811F6D8(void)
+void LinkPartnerHandleLoadPokeSprite(void)
{
- sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
GetMonSpriteTemplate_803C56C(
GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES),
GetBankIdentity(gActiveBank));
@@ -1005,11 +1127,11 @@ void sub_811F6D8(void)
gBattleBankFunc[gActiveBank] = sub_811DDE8;
}
-void sub_811F7F4(void)
+void LinkPartnerHandleSendOutPoke(void)
{
sub_8032AA8(gActiveBank, gBattleBufferA[gActiveBank][2]);
gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1];
- sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
sub_811F864(gActiveBank, gBattleBufferA[gActiveBank][2]);
gBattleBankFunc[gActiveBank] = sub_811E1BC;
}
@@ -1038,7 +1160,7 @@ void sub_811F864(u8 a, u8 b)
gSprites[gUnknown_0300434C[a]].data0 = sub_8046400(0, 0xFF);
}
-void sub_811F9D0(void)
+void LinkPartnerHandleReturnPokeToBall(void)
{
if (gBattleBufferA[gActiveBank][1] == 0)
{
@@ -1059,7 +1181,7 @@ void sub_811FA5C(void)
switch (ewram17810[gActiveBank].unk4)
{
case 0:
- if (ewram17800[gActiveBank].unk0_2)
+ if (ewram17800[gActiveBank].substituteSprite)
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
ewram17810[gActiveBank].unk4 = 1;
break;
@@ -1074,7 +1196,7 @@ void sub_811FA5C(void)
}
}
-void sub_811FAE4(void)
+void LinkPartnerHandleTrainerThrow(void)
{
s16 xOffset;
u32 gender;
@@ -1092,7 +1214,7 @@ void sub_811FAE4(void)
xOffset = 0;
gender = gLinkPlayers[GetMultiplayerId() ^ 1].gender;
}
- sub_8031AF4(gender, gActiveBank);
+ LoadPlayerTrainerBankSprite(gender, gActiveBank);
GetMonSpriteTemplate_803C5A0(gender, GetBankIdentity(gActiveBank));
gObjectBankIDs[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
@@ -1105,12 +1227,12 @@ void sub_811FAE4(void)
gBattleBankFunc[gActiveBank] = sub_811DAE4;
}
-void sub_811FC30(void)
+void LinkPartnerHandleTrainerSlide(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_811FC3C(void)
+void LinkPartnerHandleTrainerSlideBack(void)
{
oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
gSprites[gObjectBankIDs[gActiveBank]].data0 = 35;
@@ -1121,11 +1243,11 @@ void sub_811FC3C(void)
gBattleBankFunc[gActiveBank] = sub_811DB1C;
}
-void sub_811FCE8(void)
+void LinkPartnerHandlecmd10(void)
{
if (ewram17810[gActiveBank].unk4 == 0)
{
- if (ewram17800[gActiveBank].unk0_2)
+ if (ewram17800[gActiveBank].substituteSprite)
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
ewram17810[gActiveBank].unk4++;
}
@@ -1141,27 +1263,27 @@ void sub_811FCE8(void)
}
}
-void sub_811FDCC(void)
+void LinkPartnerHandlecmd11(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_811FDD8(void)
+void LinkPartnerHandlecmd12(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_811FDE4(void)
+void LinkPartnerHandleBallThrow(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_811FDF0(void)
+void LinkPartnerHandlePuase(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_811FDFC(void)
+void LinkPartnerHandleMoveAnimation(void)
{
if (!mplay_80342A4(gActiveBank))
{
@@ -1200,7 +1322,7 @@ void sub_811FF30(void)
switch (ewram17810[gActiveBank].unk4)
{
case 0:
- if (ewram17800[gActiveBank].unk0_2 && !ewram17800[gActiveBank].unk0_3)
+ if (ewram17800[gActiveBank].substituteSprite && !ewram17800[gActiveBank].unk0_3)
{
ewram17800[gActiveBank].unk0_3 = 1;
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
@@ -1220,7 +1342,7 @@ void sub_811FF30(void)
if (!gAnimScriptActive)
{
sub_80326EC(1);
- if ((ewram17800[gActiveBank].unk0_2) && r7 <= 1)
+ if ((ewram17800[gActiveBank].substituteSprite) && r7 <= 1)
{
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
ewram17800[gActiveBank].unk0_3 = 0;
@@ -1242,7 +1364,7 @@ void sub_811FF30(void)
}
}
-void sub_8120094(void)
+void LinkPartnerHandlePrintString(void)
{
gUnknown_030042A4 = 0;
gUnknown_030042A0 = 0;
@@ -1251,37 +1373,37 @@ void sub_8120094(void)
gBattleBankFunc[gActiveBank] = sub_811DFA0;
}
-void sub_81200F8(void)
+void LinkPartnerHandlePrintStringPlayerOnly(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_8120104(void)
+void LinkPartnerHandlecmd18(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_8120110(void)
+void LinkPartnerHandlecmd19(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_812011C(void)
+void LinkPartnerHandlecmd20(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_8120128(void)
+void LinkPartnerHandleOpenBag(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_8120134(void)
+void LinkPartnerHandlecmd22(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_8120140(void)
+void LinkPartnerHandlecmd23(void)
{
LinkPartnerBufferExecCompleted();
}
@@ -1337,70 +1459,70 @@ void LinkPartnerHandleStatusAnimation(void)
}
}
-void sub_8120324(void)
+void LinkPartnerHandleStatusXor(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_8120330(void)
+void LinkPartnerHandlecmd29(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_812033C(void)
+void LinkPartnerHandleDMATransfer(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_8120348(void)
+void LinkPartnerHandlecmd31(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_8120354(void)
+void LinkPartnerHandlecmd32(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_8120360(void)
+void LinkPartnerHandlecmd33(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_812036C(void)
+void LinkPartnerHandlecmd34(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_8120378(void)
+void LinkPartnerHandlecmd35(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_8120384(void)
+void LinkPartnerHandlecmd36(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_8120390(void)
+void LinkPartnerHandlecmd37(void)
{
gUnknown_020238C8.unk0_0 = 0;
LinkPartnerBufferExecCompleted();
}
-void sub_81203AC(void)
+void LinkPartnerHandlecmd38(void)
{
gUnknown_020238C8.unk0_0 = gBattleBufferA[gActiveBank][1];
LinkPartnerBufferExecCompleted();
}
-void sub_81203E4(void)
+void LinkPartnerHandlecmd39(void)
{
gUnknown_020238C8.unk0_7 = 0;
LinkPartnerBufferExecCompleted();
}
-void sub_81203FC(void)
+void LinkPartnerHandlecmd40(void)
{
gUnknown_020238C8.unk0_7 ^= 1;
LinkPartnerBufferExecCompleted();
@@ -1421,7 +1543,7 @@ void LinkPartnerHandleHitAnimation(void)
}
}
-void sub_8120494(void)
+void LinkPartnerHandlecmd42(void)
{
LinkPartnerBufferExecCompleted();
}
@@ -1438,7 +1560,7 @@ void LinkPartnerHandleEffectivenessSound(void)
LinkPartnerBufferExecCompleted();
}
-void sub_81204E4(void)
+void LinkPartnerHandlecmd44(void)
{
PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
LinkPartnerBufferExecCompleted();
@@ -1452,14 +1574,14 @@ void LinkPartnerHandleFaintingCry(void)
LinkPartnerBufferExecCompleted();
}
-void dp01t_2E_3_battle_intro(void)
+void LinkPartnerHandleIntroSlide(void)
{
sub_80E43C0(gBattleBufferA[gActiveBank][1]);
gUnknown_02024DE8 |= 1;
LinkPartnerBufferExecCompleted();
}
-void sub_8120588(void)
+void LinkPartnerHandleTrainerBallThrow(void)
{
u8 r4;
u8 taskId;
@@ -1508,7 +1630,7 @@ void sub_812071C(u8 taskId)
sub_811F864(gActiveBank, 0);
gActiveBank ^= 2;
gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
sub_811F864(gActiveBank, 0);
gActiveBank ^= 2;
}
@@ -1517,7 +1639,7 @@ void sub_812071C(u8 taskId)
DestroyTask(taskId);
}
-void dp01t_30_3_80EB11C(void)
+void LinkPartnerHandlecmd48(void)
{
if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == 0)
{
@@ -1546,19 +1668,19 @@ void sub_81208E0(void)
}
}
-void sub_8120920(void)
+void LinkPartnerHandlecmd49(void)
{
if (ewram17810[gActiveBank].unk0_0)
gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0;
LinkPartnerBufferExecCompleted();
}
-void sub_812096C(void)
+void LinkPartnerHandlecmd50(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_8120978(void)
+void LinkPartnerHandleSpriteInvisibility(void)
{
if (sub_8078874(gActiveBank) != 0)
{
@@ -1568,7 +1690,7 @@ void sub_8120978(void)
LinkPartnerBufferExecCompleted();
}
-void sub_81209D8(void)
+void LinkPartnerHandleBattleAnimation(void)
{
if (mplay_80342A4(gActiveBank) == 0)
{
@@ -1582,17 +1704,17 @@ void sub_81209D8(void)
}
}
-void sub_8120A40(void)
+void LinkPartnerHandleLinkStandbyMsg(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_8120A4C(void)
+void LinkPartnerHandleResetActionMoveSelection(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_8120A58(void)
+void LinkPartnerHandlecmd55(void)
{
gBattleOutcome = gBattleBufferA[gActiveBank][1];
FadeOutMapMusic(5);
@@ -1601,6 +1723,6 @@ void sub_8120A58(void)
gBattleBankFunc[gActiveBank] = sub_811E29C;
}
-void nullsub_75(void)
+void LinkPartnerHandlecmd56(void)
{
}
diff --git a/src/battle_8.c b/src/battle_controller_opponent.c
index 75f10c4b1..dd8c62cce 100644
--- a/src/battle_8.c
+++ b/src/battle_controller_opponent.c
@@ -1,15 +1,19 @@
#include "global.h"
#include "battle.h"
-#include "battle_ai.h"
#include "battle_interface.h"
#include "data2.h"
-#include "graphics.h"
+#include "battle_811DA74.h"
+#include "battle_anim_813F0F4.h"
+#include "link.h"
+#include "m4a.h"
#include "main.h"
+#include "palette.h"
+#include "pokeball.h"
#include "pokemon.h"
-#include "rng.h"
#include "rom3.h"
-#include "songs.h"
+#include "rom_8077ABC.h"
#include "sound.h"
+#include "songs.h"
#include "sprite.h"
#include "string_util.h"
#include "task.h"
@@ -53,12 +57,17 @@ extern bool8 gDoingBattleAnim;
extern u16 gUnknown_02024DE8;
extern u8 gUnknown_02024E68[];
extern MainCallback gPreBattleCallback1;
+extern void (*const gOpponentBufferCommands[])(void);
+extern struct MusicPlayerInfo gMPlay_SE1;
+extern struct MusicPlayerInfo gMPlay_SE2;
+extern struct MusicPlayerInfo gMPlay_BGM;
+extern u32 gBattleExecBuffer;
extern u8 sub_8077ABC();
extern u8 sub_8077F68();
extern u8 sub_8079E90();
extern void sub_8033018(void);
-extern void sub_8031794();
+extern void BattleLoadOpponentMonSprite();
extern u8 GetBankIdentity(u8);
extern void sub_8032984(u8, u16);
extern void sub_80333D4(void);
@@ -107,8 +116,11 @@ extern void sub_8032E2C(void);
extern u8 sub_8078874();
extern u8 move_anim_start_t3();
extern void sub_80334C0(void);
-extern void OpponentBufferExecCompleted(void);
+// this file's functions
+
+void OpponentBufferExecCompleted(void);
+void OpponentBufferRunCommand(void);
u32 sub_8033598(u8, u8 *);
void sub_8033E24(u8);
void sub_803495C(u8, u8);
@@ -117,6 +129,407 @@ void sub_8035238(void);
void sub_8035C10(struct Sprite *);
void sub_8035C44(u8);
void sub_8035E2C(void);
+void sub_80332D0(void);
+
+void OpponentHandleGetAttributes(void);
+void OpponentHandlecmd1(void);
+void OpponentHandleSetAttributes(void);
+void OpponentHandlecmd3(void);
+void OpponentHandleLoadPokeSprite(void);
+void OpponentHandleSendOutPoke(void);
+void OpponentHandleReturnPokeToBall(void);
+void OpponentHandleTrainerThrow(void);
+void OpponentHandleTrainerSlide(void);
+void OpponentHandleTrainerSlideBack(void);
+void OpponentHandlecmd10(void);
+void OpponentHandlecmd11(void);
+void OpponentHandlecmd12(void);
+void OpponentHandleBallThrow(void);
+void OpponentHandlePuase(void);
+void OpponentHandleMoveAnimation(void);
+void OpponentHandlePrintString(void);
+void OpponentHandlePrintStringPlayerOnly(void);
+void OpponentHandlecmd18(void);
+void OpponentHandlecmd19(void);
+void OpponentHandlecmd20(void);
+void OpponentHandleOpenBag(void);
+void OpponentHandlecmd22(void);
+void OpponentHandlecmd23(void);
+void OpponentHandleHealthBarUpdate(void);
+void OpponentHandleExpBarUpdate(void);
+void OpponentHandleStatusIconUpdate(void);
+void OpponentHandleStatusAnimation(void);
+void OpponentHandleStatusXor(void);
+void OpponentHandlecmd29(void);
+void OpponentHandleDMATransfer(void);
+void OpponentHandlecmd31(void);
+void OpponentHandlecmd32(void);
+void OpponentHandlecmd33(void);
+void OpponentHandlecmd34(void);
+void OpponentHandlecmd35(void);
+void OpponentHandlecmd36(void);
+void OpponentHandlecmd37(void);
+void OpponentHandlecmd38(void);
+void OpponentHandlecmd39(void);
+void OpponentHandlecmd40(void);
+void OpponentHandleHitAnimation(void);
+void OpponentHandlecmd42(void);
+void OpponentHandleEffectivenessSound(void);
+void OpponentHandlecmd44(void);
+void OpponentHandleFaintingCry(void);
+void OpponentHandleIntroSlide(void);
+void OpponentHandleTrainerBallThrow(void);
+void OpponentHandlecmd48(void);
+void OpponentHandlecmd49(void);
+void OpponentHandlecmd50(void);
+void OpponentHandleSpriteInvisibility(void);
+void OpponentHandleBattleAnimation(void);
+void OpponentHandleLinkStandbyMsg(void);
+void OpponentHandleResetActionMoveSelection(void);
+void OpponentHandlecmd55(void);
+void OpponentHandlecmd56(void);
+
+// const data
+typedef void (*BattleBufferCmd) (void);
+static const BattleBufferCmd gOpponentBufferCommands[] =
+{
+ OpponentHandleGetAttributes,
+ OpponentHandlecmd1,
+ OpponentHandleSetAttributes,
+ OpponentHandlecmd3,
+ OpponentHandleLoadPokeSprite,
+ OpponentHandleSendOutPoke,
+ OpponentHandleReturnPokeToBall,
+ OpponentHandleTrainerThrow,
+ OpponentHandleTrainerSlide,
+ OpponentHandleTrainerSlideBack,
+ OpponentHandlecmd10,
+ OpponentHandlecmd11,
+ OpponentHandlecmd12,
+ OpponentHandleBallThrow,
+ OpponentHandlePuase,
+ OpponentHandleMoveAnimation,
+ OpponentHandlePrintString,
+ OpponentHandlePrintStringPlayerOnly,
+ OpponentHandlecmd18,
+ OpponentHandlecmd19,
+ OpponentHandlecmd20,
+ OpponentHandleOpenBag,
+ OpponentHandlecmd22,
+ OpponentHandlecmd23,
+ OpponentHandleHealthBarUpdate,
+ OpponentHandleExpBarUpdate,
+ OpponentHandleStatusIconUpdate,
+ OpponentHandleStatusAnimation,
+ OpponentHandleStatusXor,
+ OpponentHandlecmd29,
+ OpponentHandleDMATransfer,
+ OpponentHandlecmd31,
+ OpponentHandlecmd32,
+ OpponentHandlecmd33,
+ OpponentHandlecmd34,
+ OpponentHandlecmd35,
+ OpponentHandlecmd36,
+ OpponentHandlecmd37,
+ OpponentHandlecmd38,
+ OpponentHandlecmd39,
+ OpponentHandlecmd40,
+ OpponentHandleHitAnimation,
+ OpponentHandlecmd42,
+ OpponentHandleEffectivenessSound,
+ OpponentHandlecmd44,
+ OpponentHandleFaintingCry,
+ OpponentHandleIntroSlide,
+ OpponentHandleTrainerBallThrow,
+ OpponentHandlecmd48,
+ OpponentHandlecmd49,
+ OpponentHandlecmd50,
+ OpponentHandleSpriteInvisibility,
+ OpponentHandleBattleAnimation,
+ OpponentHandleLinkStandbyMsg,
+ OpponentHandleResetActionMoveSelection,
+ OpponentHandlecmd55,
+ OpponentHandlecmd56,
+};
+
+static const u8 sUnknownBytes[] = {0xB0, 0xB0, 0xC8, 0x98, 0x28, 0x28, 0x28, 0x20};
+
+// code
+
+void nullsub_45(void)
+{
+}
+
+void SetBankFuncToOpponentBufferRunCommand(void)
+{
+ gBattleBankFunc[gActiveBank] = OpponentBufferRunCommand;
+}
+
+void OpponentBufferRunCommand(void)
+{
+ if (gBattleExecBuffer & gBitTable[gActiveBank])
+ {
+ if (gBattleBufferA[gActiveBank][0] <= 0x38)
+ gOpponentBufferCommands[gBattleBufferA[gActiveBank][0]]();
+ else
+ OpponentBufferExecCompleted();
+ }
+}
+
+void sub_8032B4C(void)
+{
+ if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ OpponentBufferExecCompleted();
+}
+
+// Duplicate of sub_8032B4C
+void sub_8032B84(void)
+{
+ if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ OpponentBufferExecCompleted();
+}
+
+void sub_8032BBC(void)
+{
+ if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ {
+ sub_8031B74(gSprites[gObjectBankIDs[gActiveBank]].oam.affineParam);
+ gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum = gSprites[gObjectBankIDs[gActiveBank]].data5;
+ FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
+ DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ OpponentBufferExecCompleted();
+ }
+}
+
+void sub_8032C4C(void)
+{
+ if ((--ewram17810[gActiveBank].unk9) == 0xFF)
+ {
+ ewram17810[gActiveBank].unk9 = 0;
+ OpponentBufferExecCompleted();
+ }
+}
+
+void sub_8032C88(void)
+{
+ bool8 r6 = FALSE;
+
+ if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI)))
+ {
+ if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ r6 = TRUE;
+ }
+ else
+ {
+ if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy
+ && gSprites[gHealthboxIDs[gActiveBank ^ 2]].callback == SpriteCallbackDummy)
+ r6 = TRUE;
+ }
+ if (IsCryPlayingOrClearCrySongs())
+ r6 = FALSE;
+
+ if (r6 && ewram17810[gActiveBank].unk1_0 && ewram17810[gActiveBank ^ 2].unk1_0)
+ {
+ ewram17810[gActiveBank].unk0_7 = 0;
+ ewram17810[gActiveBank].unk1_0 = 0;
+ ewram17810[gActiveBank ^ 2].unk0_7 = 0;
+ ewram17810[gActiveBank ^ 2].unk1_0 = 0;
+ FreeSpriteTilesByTag(0x27F9);
+ FreeSpritePaletteByTag(0x27F9);
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ m4aMPlayContinue(&gMPlay_BGM);
+ else
+ m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 256);
+ ewram17810[gActiveBank].unk9 = 3;
+ gBattleBankFunc[gActiveBank] = sub_8032C4C;
+ }
+}
+
+void sub_8032E2C(void)
+{
+ if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7)
+ sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
+ if (!ewram17810[gActiveBank ^ 2].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_7)
+ sub_8141828(gActiveBank ^ 2, &gEnemyParty[gBattlePartyID[gActiveBank ^ 2]]);
+ if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_3)
+ {
+ if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
+ {
+ DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank ^ 2]]);
+ sub_8045A5C(
+ gHealthboxIDs[gActiveBank ^ 2],
+ &gEnemyParty[gBattlePartyID[gActiveBank ^ 2]],
+ 0);
+ sub_804777C(gActiveBank ^ 2);
+ sub_8043DFC(gHealthboxIDs[gActiveBank ^ 2]);
+ sub_8032984(
+ gActiveBank ^ 2,
+ GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank ^ 2]], MON_DATA_SPECIES));
+ }
+ DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]);
+ sub_8045A5C(
+ gHealthboxIDs[gActiveBank],
+ &gEnemyParty[gBattlePartyID[gActiveBank]],
+ 0);
+ sub_804777C(gActiveBank);
+ sub_8043DFC(gHealthboxIDs[gActiveBank]);
+ sub_8032984(
+ gActiveBank,
+ GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
+
+ ewram17840.unk9_0 = 0;
+ gBattleBankFunc[gActiveBank] = sub_8032C88;
+ }
+}
+
+void sub_8033018(void)
+{
+ if (gSprites[gObjectBankIDs[gActiveBank]].animEnded == TRUE
+ && gSprites[gObjectBankIDs[gActiveBank]].pos2.x == 0)
+ {
+ if (!ewram17810[gActiveBank].unk0_7)
+ {
+ sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
+ return;
+ }
+ if (ewram17810[gActiveBank].unk1_0)
+ {
+ ewram17810[gActiveBank].unk0_7 = 0;
+ ewram17810[gActiveBank].unk1_0 = 0;
+ FreeSpriteTilesByTag(0x27F9);
+ FreeSpritePaletteByTag(0x27F9);
+ OpponentBufferExecCompleted();
+ return;
+ }
+ }
+}
+
+void sub_80330C8(void)
+{
+ s16 r4 = sub_8045C78(gActiveBank, gHealthboxIDs[gActiveBank], 0, 0);
+
+ sub_8043DFC(gHealthboxIDs[gActiveBank]);
+ if (r4 != -1)
+ sub_80440EC(gHealthboxIDs[gActiveBank], r4, 0);
+ else
+ OpponentBufferExecCompleted();
+}
+
+void sub_803311C(void)
+{
+ if (!gSprites[gObjectBankIDs[gActiveBank]].inUse)
+ {
+ sub_8043DB0(gHealthboxIDs[gActiveBank]);
+ OpponentBufferExecCompleted();
+ }
+}
+
+void sub_8033160(void)
+{
+ if (!ewram17810[gActiveBank].unk0_6)
+ {
+ FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
+ DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ sub_8032A08(gActiveBank);
+ sub_8043DB0(gHealthboxIDs[gActiveBank]);
+ OpponentBufferExecCompleted();
+ }
+}
+
+void sub_80331D0(void)
+{
+ if (gUnknown_03004210.state == 0)
+ OpponentBufferExecCompleted();
+}
+
+void bx_blink_t7(void)
+{
+ u8 spriteId = gObjectBankIDs[gActiveBank];
+
+ if (gSprites[spriteId].data1 == 32)
+ {
+ gSprites[spriteId].data1 = 0;
+ gSprites[spriteId].invisible = FALSE;
+ gDoingBattleAnim = 0;
+ OpponentBufferExecCompleted();
+ }
+ else
+ {
+ if (((u16)gSprites[spriteId].data1 % 4) == 0)
+ gSprites[spriteId].invisible ^= 1;
+ gSprites[spriteId].data1++;
+ }
+}
+
+void sub_8033264(void)
+{
+ if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ {
+ if (ewram17800[gActiveBank].substituteSprite)
+ move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
+ gBattleBankFunc[gActiveBank] = sub_80332D0;
+ }
+}
+
+void sub_80332D0(void)
+{
+ if (!ewram17810[gActiveBank].unk0_6)
+ {
+ CreateTask(c3_0802FDF4, 10);
+ OpponentBufferExecCompleted();
+ }
+}
+
+void sub_8033308(void)
+{
+ if (ewram17810[gActiveBank].unk1_0)
+ {
+ ewram17810[gActiveBank].unk0_7 = 0;
+ ewram17810[gActiveBank].unk1_0 = 0;
+ FreeSpriteTilesByTag(0x27F9);
+ FreeSpritePaletteByTag(0x27F9);
+ StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 0);
+ sub_8045A5C(
+ gHealthboxIDs[gActiveBank],
+ &gEnemyParty[gBattlePartyID[gActiveBank]],
+ 0);
+ sub_804777C(gActiveBank);
+ sub_8043DFC(gHealthboxIDs[gActiveBank]);
+ sub_8031F88(gActiveBank);
+ gBattleBankFunc[gActiveBank] = sub_8033264;
+ }
+}
+
+void sub_80333D4(void)
+{
+ if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7)
+ sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
+ if (gSprites[gUnknown_0300434C[gActiveBank]].callback == SpriteCallbackDummy
+ && !ewram17810[gActiveBank].unk0_3)
+ {
+ DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]);
+ sub_8032984(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
+ gBattleBankFunc[gActiveBank] = sub_8033308;
+ }
+}
+
+void sub_8033494(void)
+{
+ if (!ewram17810[gActiveBank].unk0_4)
+ OpponentBufferExecCompleted();
+}
+
+void sub_80334C0(void)
+{
+ if (!ewram17810[gActiveBank].unk0_5)
+ OpponentBufferExecCompleted();
+}
+
+void OpponentBufferExecCompleted(void)
+{
+ gBattleBankFunc[gActiveBank] = OpponentBufferRunCommand;
+ gBattleExecBuffer &= ~gBitTable[gActiveBank];
+}
void OpponentHandleGetAttributes(void)
{
@@ -139,7 +552,7 @@ void OpponentHandleGetAttributes(void)
r4 >>= 1;
}
}
- dp01_build_cmdbuf_x1D_1D_numargs_varargs(1, r6, buffer);
+ Emitcmd29(1, r6, buffer);
OpponentBufferExecCompleted();
}
@@ -448,7 +861,7 @@ u32 sub_8033598(u8 a, u8 *buffer)
return size;
}
-void dp01t_01_2_read_pokmon_data_slice(void)
+void OpponentHandlecmd1(void)
{
struct BattlePokemon buffer;
u8 *src = (u8 *)&gEnemyParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
@@ -457,7 +870,7 @@ void dp01t_01_2_read_pokmon_data_slice(void)
for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++)
dst[i] = src[i];
- dp01_build_cmdbuf_x1D_1D_numargs_varargs(1, gBattleBufferA[gActiveBank][2], dst);
+ Emitcmd29(1, gBattleBufferA[gActiveBank][2], dst);
OpponentBufferExecCompleted();
}
@@ -699,7 +1112,7 @@ void sub_8033E24(u8 a)
}
}
-void sub_8034744(void)
+void OpponentHandlecmd3(void)
{
u8 *dst;
u8 i;
@@ -714,7 +1127,7 @@ void OpponentHandleLoadPokeSprite(void)
{
u16 species = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
- sub_8031794(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank);
GetMonSpriteTemplate_803C56C(species, GetBankIdentity(gActiveBank));
gObjectBankIDs[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
@@ -746,7 +1159,7 @@ void sub_803495C(u8 a, u8 b)
gBattlePartyID[a] = gBattleBufferA[a][1];
species = GetMonData(&gEnemyParty[gBattlePartyID[a]], MON_DATA_SPECIES);
gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0);
- sub_8031794(&gEnemyParty[gBattlePartyID[a]], a);
+ BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[a]], a);
GetMonSpriteTemplate_803C56C(species, GetBankIdentity(a));
gObjectBankIDs[a] = CreateSprite(
&gUnknown_02024E8C,
@@ -785,7 +1198,7 @@ void sub_8034B74(void)
switch (ewram17810[gActiveBank].unk4)
{
case 0:
- if (ewram17800[gActiveBank].unk0_2)
+ if (ewram17800[gActiveBank].substituteSprite)
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
ewram17810[gActiveBank].unk4 = 1;
break;
@@ -872,11 +1285,11 @@ void OpponentHandleTrainerSlideBack(void)
gBattleBankFunc[gActiveBank] = sub_8032BBC;
}
-void sub_8035030(void)
+void OpponentHandlecmd10(void)
{
if (ewram17810[gActiveBank].unk4 == 0)
{
- if (ewram17800[gActiveBank].unk0_2)
+ if (ewram17800[gActiveBank].substituteSprite)
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
ewram17810[gActiveBank].unk4++;
}
@@ -889,12 +1302,12 @@ void sub_8035030(void)
}
}
-void sub_80350D4(void)
+void OpponentHandlecmd11(void)
{
OpponentBufferExecCompleted();
}
-void sub_80350E0(void)
+void OpponentHandlecmd12(void)
{
OpponentBufferExecCompleted();
}
@@ -904,7 +1317,7 @@ void OpponentHandleBallThrow(void)
OpponentBufferExecCompleted();
}
-void OpponentHandlePause(void)
+void OpponentHandlePuase(void)
{
OpponentBufferExecCompleted();
}
@@ -951,7 +1364,7 @@ void sub_8035238(void)
switch (ewram17810[gActiveBank].unk4)
{
case 0:
- if (ewram17800[gActiveBank].unk0_2 && !ewram17800[gActiveBank].unk0_3)
+ if (ewram17800[gActiveBank].substituteSprite && !ewram17800[gActiveBank].unk0_3)
{
ewram17800[gActiveBank].unk0_3 = 1;
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
@@ -971,7 +1384,7 @@ void sub_8035238(void)
if (!gAnimScriptActive)
{
sub_80326EC(1);
- if ((ewram17800[gActiveBank].unk0_2) && r7 <= 1)
+ if ((ewram17800[gActiveBank].substituteSprite) && r7 <= 1)
{
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
ewram17800[gActiveBank].unk0_3 = 0;
@@ -1007,19 +1420,19 @@ void OpponentHandlePrintStringPlayerOnly(void)
OpponentBufferExecCompleted();
}
-void sub_803540C(void)
+void OpponentHandlecmd18(void)
{
sub_8036B0C();
OpponentBufferExecCompleted();
}
-void sub_803541C(void)
+void OpponentHandlecmd19(void)
{
OpponentBufferExecCompleted();
}
#ifdef NONMATCHING
-void sub_8035428(void)
+void OpponentHandlecmd20(void)
{
u16 r4;
// Needed to match closer
@@ -1032,10 +1445,10 @@ void sub_8035428(void)
switch (r4)
{
case 5:
- dp01_build_cmdbuf_x21_a_bb(1, 4, 0);
+ Emitcmd33(1, 4, 0);
break;
case 4:
- dp01_build_cmdbuf_x21_a_bb(1, 3, 0);
+ Emitcmd33(1, 3, 0);
break;
default:
if (gBattleMoves[r5->moves[r4]].target & 0x12)
@@ -1047,7 +1460,7 @@ void sub_8035428(void)
gBankTarget = GetBankByPlayerAI(2);
}
r4 |= gBankTarget << 8;
- dp01_build_cmdbuf_x21_a_bb(1, 10, r4);
+ Emitcmd33(1, 10, r4);
break;
}
OpponentBufferExecCompleted();
@@ -1066,26 +1479,26 @@ void sub_8035428(void)
if (gBattleMoves[r2].target & 0x12)
{
r4 |= gActiveBank << 8;
- dp01_build_cmdbuf_x21_a_bb(1, 10, r4);
+ Emitcmd33(1, 10, r4);
}
else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
u16 r2 = GetBankByPlayerAI(Random() & 2) << 8;
- dp01_build_cmdbuf_x21_a_bb(1, 10, r4 | r2);
+ Emitcmd33(1, 10, r4 | r2);
}
else
{
u16 r2 = GetBankByPlayerAI(0) << 8;
- dp01_build_cmdbuf_x21_a_bb(1, 10, r4 | r2);
+ Emitcmd33(1, 10, r4 | r2);
}
OpponentBufferExecCompleted();
}
}
#else
__attribute__((naked))
-void sub_8035428(void)
+void OpponentHandlecmd20(void)
{
asm(".syntax unified\n\
push {r4-r6,lr}\n\
@@ -1121,7 +1534,7 @@ _08035468:\n\
movs r1, 0x3\n\
_0803546C:\n\
movs r2, 0\n\
- bl dp01_build_cmdbuf_x21_a_bb\n\
+ bl Emitcmd33\n\
b _080354E0\n\
_08035474:\n\
ldr r3, _080354E8 @ =gBattleMoves\n\
@@ -1176,7 +1589,7 @@ _080354CE:\n\
movs r0, 0x1\n\
movs r1, 0xA\n\
adds r2, r4, 0\n\
- bl dp01_build_cmdbuf_x21_a_bb\n\
+ bl Emitcmd33\n\
_080354E0:\n\
bl OpponentBufferExecCompleted\n\
b _0803558A\n\
@@ -1213,7 +1626,7 @@ _080354FA:\n\
movs r0, 0x1\n\
movs r1, 0xA\n\
adds r2, r4, 0\n\
- bl dp01_build_cmdbuf_x21_a_bb\n\
+ bl Emitcmd33\n\
b _08035586\n\
.align 2, 0\n\
_08035534: .4byte gBattleMoves\n\
@@ -1238,7 +1651,7 @@ _0803553C:\n\
orrs r2, r4\n\
movs r0, 0x1\n\
movs r1, 0xA\n\
- bl dp01_build_cmdbuf_x21_a_bb\n\
+ bl Emitcmd33\n\
b _08035586\n\
.align 2, 0\n\
_0803556C: .4byte gBattleTypeFlags\n\
@@ -1251,7 +1664,7 @@ _08035570:\n\
orrs r2, r4\n\
movs r0, 0x1\n\
movs r1, 0xA\n\
- bl dp01_build_cmdbuf_x21_a_bb\n\
+ bl Emitcmd33\n\
_08035586:\n\
bl OpponentBufferExecCompleted\n\
_0803558A:\n\
@@ -1262,14 +1675,14 @@ _0803558A:\n\
}
#endif
-void sub_8035590(void)
+void OpponentHandleOpenBag(void)
{
// What is this?
- dp01_build_cmdbuf_x23_aa_0(1, ewram[0x160D4 + gActiveBank / 2 * 2]);
+ Emitcmd35(1, ewram[0x160D4 + gActiveBank / 2 * 2]);
OpponentBufferExecCompleted();
}
-void sub_80355C0(void)
+void OpponentHandlecmd22(void)
{
s32 r4;
@@ -1306,11 +1719,11 @@ void sub_80355C0(void)
ewram[0x160C8 + GetBankIdentity(gActiveBank) / 2] = 6;
}
ewram[0x16068 + gActiveBank] = r4;
- dp01_build_cmdbuf_x22_a_three_bytes(1, r4, 0);
+ Emitcmd34(1, r4, 0);
OpponentBufferExecCompleted();
}
-void sub_80356C0(void)
+void OpponentHandlecmd23(void)
{
OpponentBufferExecCompleted();
}
@@ -1371,7 +1784,7 @@ void OpponentHandleStatusXor(void)
OpponentBufferExecCompleted();
}
-void sub_80358B0(void)
+void OpponentHandlecmd29(void)
{
OpponentBufferExecCompleted();
}
@@ -1381,55 +1794,55 @@ void OpponentHandleDMATransfer(void)
OpponentBufferExecCompleted();
}
-void sub_80358C8(void)
+void OpponentHandlecmd31(void)
{
OpponentBufferExecCompleted();
}
-void sub_80358D4(void)
+void OpponentHandlecmd32(void)
{
OpponentBufferExecCompleted();
}
-void sub_80358E0(void)
+void OpponentHandlecmd33(void)
{
OpponentBufferExecCompleted();
}
-void sub_80358EC(void)
+void OpponentHandlecmd34(void)
{
OpponentBufferExecCompleted();
}
-void sub_80358F8(void)
+void OpponentHandlecmd35(void)
{
OpponentBufferExecCompleted();
}
-void sub_8035904(void)
+void OpponentHandlecmd36(void)
{
OpponentBufferExecCompleted();
}
-void sub_8035910(void)
+void OpponentHandlecmd37(void)
{
gUnknown_020238C8.unk0_0 = 0;
OpponentBufferExecCompleted();
}
-void sub_803592C(void)
+void OpponentHandlecmd38(void)
{
gUnknown_020238C8.unk0_0 = gBattleBufferA[gActiveBank][1];
OpponentBufferExecCompleted();
}
-void sub_8035964(void)
+void OpponentHandlecmd39(void)
{
gUnknown_020238C8.unk0_7 = 0;
OpponentBufferExecCompleted();
}
-void sub_803597C(void)
+void OpponentHandlecmd40(void)
{
gUnknown_020238C8.unk0_7 ^= 1;
OpponentBufferExecCompleted();
@@ -1450,7 +1863,7 @@ void OpponentHandleHitAnimation(void)
}
}
-void sub_8035A14(void)
+void OpponentHandlecmd42(void)
{
OpponentBufferExecCompleted();
}
@@ -1467,7 +1880,7 @@ void OpponentHandleEffectivenessSound(void)
OpponentBufferExecCompleted();
}
-void sub_8035A64(void)
+void OpponentHandlecmd44(void)
{
PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
OpponentBufferExecCompleted();
@@ -1481,14 +1894,14 @@ void OpponentHandleFaintingCry(void)
OpponentBufferExecCompleted();
}
-void dp01t_2E_7_battle_intro(void)
+void OpponentHandleIntroSlide(void)
{
sub_80E43C0(gBattleBufferA[gActiveBank][1]);
gUnknown_02024DE8 |= 1;
OpponentBufferExecCompleted();
}
-void sub_8035B04(void)
+void OpponentHandleTrainerBallThrow(void)
{
u8 taskId;
@@ -1539,7 +1952,7 @@ void sub_8035C44(u8 taskId)
DestroyTask(taskId);
}
-void dp01t_30_7_0803D67C(void)
+void OpponentHandlecmd48(void)
{
if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == 0)
{
@@ -1580,14 +1993,14 @@ void sub_8035E2C(void)
}
}
-void sub_8035E6C(void)
+void OpponentHandlecmd49(void)
{
if (ewram17810[gActiveBank].unk0_0)
gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0;
OpponentBufferExecCompleted();
}
-void sub_8035EB8(void)
+void OpponentHandlecmd50(void)
{
OpponentBufferExecCompleted();
}
@@ -1626,7 +2039,7 @@ void OpponentHandleResetActionMoveSelection(void)
OpponentBufferExecCompleted();
}
-void sub_8035FA4(void)
+void OpponentHandlecmd55(void)
{
if ((gBattleTypeFlags & BATTLE_TYPE_LINK) && !(gBattleTypeFlags & BATTLE_TYPE_WILD))
{
@@ -1637,6 +2050,6 @@ void sub_8035FA4(void)
OpponentBufferExecCompleted();
}
-void nullsub_46(void)
+void OpponentHandlecmd56(void)
{
}
diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c
new file mode 100644
index 000000000..5cfdeefbe
--- /dev/null
+++ b/src/battle_controller_player.c
@@ -0,0 +1,3066 @@
+#include "global.h"
+#include "data2.h"
+#include "battle.h"
+#include "battle_interface.h"
+#include "battle_message.h"
+#include "item.h"
+#include "items.h"
+#include "link.h"
+#include "m4a.h"
+#include "main.h"
+#include "menu_cursor.h"
+#include "moves.h"
+#include "palette.h"
+#include "pokemon.h"
+#include "rom3.h"
+#include "songs.h"
+#include "sound.h"
+#include "string_util.h"
+#include "task.h"
+#include "text.h"
+#include "util.h"
+
+//Possibly PokemonSubstruct1
+struct UnknownStruct3
+{
+ u16 moves[4];
+ u8 pp[4];
+ u8 ppBonuses;
+};
+
+#if ENGLISH
+#define SUB_803037C_TILE_DATA_OFFSET 440
+#elif GERMAN
+#define SUB_803037C_TILE_DATA_OFFSET 444
+#endif
+
+extern u16 gUnknown_030042A4;
+extern u16 gUnknown_030042A0;
+
+extern struct Window gUnknown_03004210;
+
+extern void (*gBattleBankFunc[])(void);
+
+extern u8 gActiveBank;
+extern u8 gActionSelectionCursor[];
+extern u8 gDisplayedStringBattle[];
+extern u8 gMoveSelectionCursor[];
+extern u8 gBattleBufferA[][0x200];
+extern u8 gBankInMenu;
+extern u16 gBattlePartyID[];
+extern u8 gHealthboxIDs[];
+extern u8 gDoingBattleAnim;
+extern u8 gObjectBankIDs[];
+extern u16 gBattleTypeFlags;
+extern u8 gBattleOutcome;
+extern void (*gAnimScriptCallback)(void);
+extern bool8 gAnimScriptActive;
+extern u16 gMovePowerMoveAnim;
+extern u32 gMoveDmgMoveAnim;
+extern u8 gHappinessMoveAnim;
+extern u16 gWeatherMoveAnim;
+extern u32 *gDisableStructMoveAnim;
+extern u32 gPID_perBank[];
+extern u8 gBattleMonForms[];
+extern u16 gUnknown_02024DE8;
+extern u8 gUnknown_02024E68[];
+extern struct SpriteTemplate gUnknown_02024E8C;
+extern u8 gUnknown_0202F7C4;
+extern u8 gUnknown_02038470[];
+extern u16 gUnknown_030041B0;
+extern u16 gUnknown_030041B4;
+extern u16 gUnknown_030041B8;
+extern u16 gUnknown_03004280;
+extern u16 gUnknown_03004288;
+extern u16 gUnknown_030042A4;
+extern u16 gUnknown_030042C0;
+extern u8 gUnknown_03004344;
+extern u8 gUnknown_0300434C[];
+
+extern const u8 gUnknown_08400CA8[];
+extern const u8 gUnknown_08400CF3[];
+extern const u8 gUnknown_08400D38[];
+
+extern void sub_802C68C(void);
+extern void sub_802E1B0(void);
+extern void sub_802E220();
+extern void sub_802E2D4();
+extern void sub_802E004(void);
+extern void sub_802DF30(void);
+extern void BattleMusicStop(void);
+extern void PlayerBufferExecCompleted(void);
+extern void bx_t1_healthbar_update(void);
+extern void nullsub_91(void);
+extern void sub_802D924(u8);
+extern void sub_802E434(void);
+extern bool8 mplay_80342A4(u8);
+extern void move_anim_start_t2_for_situation();
+extern void bx_blink_t1(void);
+extern void sub_8047858();
+extern u8 GetBankSide(u8);
+extern void sub_80E43C0();
+extern void oamt_add_pos2_onto_pos1();
+extern void sub_8078B34(struct Sprite *);
+extern void oamt_set_x3A_32();
+extern void BattleLoadPlayerMonSprite();
+extern bool8 IsDoubleBattle(void);
+extern void sub_802D500(void);
+extern bool8 sub_8078874(u8);
+extern bool8 move_anim_start_t3();
+extern void sub_802E460(void);
+extern void b_link_standby_message(void);
+extern void sub_802D18C(void);
+extern void sub_802DF18(void);
+extern void BufferStringBattle();
+extern void sub_80326EC();
+extern void ExecuteMoveAnim();
+extern void sub_8031F24(void);
+extern void sub_80324BC();
+extern u8 sub_8031720();
+extern void bx_wait_t1(void);
+extern u8 GetBankByPlayerAI(u8);
+extern void sub_802DE10(void);
+extern void sub_80105EC(struct Sprite *);
+extern void sub_802D274(void);
+extern void sub_802D23C(void);
+extern u8 GetBankIdentity(u8);
+extern void LoadPlayerTrainerBankSprite();
+extern void sub_80313A0(struct Sprite *);
+extern void sub_802D204(void);
+extern u8 sub_8079E90();
+extern void sub_802DEAC(void);
+extern void sub_80312F0(struct Sprite *);
+extern u8 sub_8077ABC();
+extern u8 sub_8077F68();
+extern u8 sub_8046400();
+extern void sub_802D798(void);
+extern void bx_0802E404(void);
+extern u8 gActiveBank;
+extern void (*gBattleBankFunc[])(void);
+extern bool8 gDoingBattleAnim;
+extern u16 gBattleTypeFlags;
+extern u32 gBattleExecBuffer;
+extern u8 gBattleBufferA[][0x200];
+extern u8 gObjectBankIDs[];
+extern u8 gActionSelectionCursor[];
+extern u8 gMoveSelectionCursor[];
+extern u8 gAbsentBankFlags;
+extern u8 gUnknown_03004344;
+extern u8 gNoOfAllBanks;
+extern u16 gBattlePartyID[];
+extern u16 gUnknown_030042A0;
+extern u16 gUnknown_030042A4;
+extern struct Window gUnknown_03004210;
+extern const u8 gUnknown_08400D89[];
+extern u8 gUnknown_03004348;
+extern struct BattlePokemon gBattleMons[];
+extern MainCallback gPreBattleCallback1;
+extern u8 gHealthboxIDs[];
+extern struct MusicPlayerInfo gMPlay_BGM;
+extern u8 gUnknown_0300434C[];
+extern u8 gUnknown_0202E8F4;
+extern u8 gUnknown_0202E8F5;
+extern u8 gUnknown_02038470[];
+extern u16 gScriptItemId;
+extern u8 gDisplayedStringBattle[];
+extern const u8 gUnknown_08400CE0[];
+
+extern void dp11b_obj_instanciate(u8, u8, s8, s8);
+extern u8 GetBankIdentity(u8);
+extern u8 GetBankByPlayerAI(u8);
+extern void dp11b_obj_free(u8, u8);
+extern void sub_8010520(struct Sprite *);
+extern void sub_8010574(struct Sprite *);
+extern bool8 IsDoubleBattle();
+extern void sub_804777C();
+extern void sub_8141828();
+extern void sub_8094E20(u8);
+extern void nullsub_14(void);
+extern void sub_80A6DCC(void);
+extern void ReshowBattleScreenAfterMenu(void);
+
+void PlayerHandleGetAttributes(void);
+void PlayerHandlecmd1(void);
+void PlayerHandleSetAttributes(void);
+void PlayerHandlecmd3(void);
+void PlayerHandleLoadPokeSprite(void);
+void PlayerHandleSendOutPoke(void);
+void PlayerHandleReturnPokeToBall(void);
+void PlayerHandleTrainerThrow(void);
+void PlayerHandleTrainerSlide(void);
+void PlayerHandleTrainerSlideBack(void);
+void PlayerHandlecmd10(void);
+void PlayerHandlecmd11(void);
+void PlayerHandlecmd12(void);
+void PlayerHandleBallThrow(void);
+void PlayerHandlePuase(void);
+void PlayerHandleMoveAnimation(void);
+void PlayerHandlePrintString(void);
+void PlayerHandlePrintStringPlayerOnly(void);
+void PlayerHandlecmd18(void);
+void PlayerHandlecmd19(void);
+void PlayerHandlecmd20(void);
+void PlayerHandleOpenBag(void);
+void PlayerHandlecmd22(void);
+void PlayerHandlecmd23(void);
+void PlayerHandleHealthBarUpdate(void);
+void PlayerHandleExpBarUpdate(void);
+void PlayerHandleStatusIconUpdate(void);
+void PlayerHandleStatusAnimation(void);
+void PlayerHandleStatusXor(void);
+void PlayerHandlecmd29(void);
+void PlayerHandleDMATransfer(void);
+void PlayerHandlecmd31(void);
+void PlayerHandlecmd32(void);
+void PlayerHandlecmd33(void);
+void PlayerHandlecmd34(void);
+void PlayerHandlecmd35(void);
+void PlayerHandlecmd36(void);
+void PlayerHandlecmd37(void);
+void PlayerHandlecmd38(void);
+void PlayerHandlecmd39(void);
+void PlayerHandlecmd40(void);
+void PlayerHandleHitAnimation(void);
+void PlayerHandlecmd42(void);
+void PlayerHandleEffectivenessSound(void);
+void PlayerHandlecmd44(void);
+void PlayerHandleFaintingCry(void);
+void PlayerHandleIntroSlide(void);
+void PlayerHandleTrainerBallThrow(void);
+void PlayerHandlecmd48(void);
+void PlayerHandlecmd49(void);
+void PlayerHandlecmd50(void);
+void PlayerHandleSpriteInvisibility(void);
+void PlayerHandleBattleAnimation(void);
+void PlayerHandleLinkStandbyMsg(void);
+void PlayerHandleResetActionMoveSelection(void);
+void PlayerHandlecmd55(void);
+void PlayerHandlecmd56(void);
+
+const u8 gString_TurnJP[] = _("ターン");
+
+void (*const gPlayerBufferCommands[])(void) =
+{
+ PlayerHandleGetAttributes,
+ PlayerHandlecmd1,
+ PlayerHandleSetAttributes,
+ PlayerHandlecmd3,
+ PlayerHandleLoadPokeSprite,
+ PlayerHandleSendOutPoke,
+ PlayerHandleReturnPokeToBall,
+ PlayerHandleTrainerThrow,
+ PlayerHandleTrainerSlide,
+ PlayerHandleTrainerSlideBack,
+ PlayerHandlecmd10,
+ PlayerHandlecmd11,
+ PlayerHandlecmd12,
+ PlayerHandleBallThrow,
+ PlayerHandlePuase,
+ PlayerHandleMoveAnimation,
+ PlayerHandlePrintString,
+ PlayerHandlePrintStringPlayerOnly,
+ PlayerHandlecmd18,
+ PlayerHandlecmd19,
+ PlayerHandlecmd20,
+ PlayerHandleOpenBag,
+ PlayerHandlecmd22,
+ PlayerHandlecmd23,
+ PlayerHandleHealthBarUpdate,
+ PlayerHandleExpBarUpdate,
+ PlayerHandleStatusIconUpdate,
+ PlayerHandleStatusAnimation,
+ PlayerHandleStatusXor,
+ PlayerHandlecmd29,
+ PlayerHandleDMATransfer,
+ PlayerHandlecmd31,
+ PlayerHandlecmd32,
+ PlayerHandlecmd33,
+ PlayerHandlecmd34,
+ PlayerHandlecmd35,
+ PlayerHandlecmd36,
+ PlayerHandlecmd37,
+ PlayerHandlecmd38,
+ PlayerHandlecmd39,
+ PlayerHandlecmd40,
+ PlayerHandleHitAnimation,
+ PlayerHandlecmd42,
+ PlayerHandleEffectivenessSound,
+ PlayerHandlecmd44,
+ PlayerHandleFaintingCry,
+ PlayerHandleIntroSlide,
+ PlayerHandleTrainerBallThrow,
+ PlayerHandlecmd48,
+ PlayerHandlecmd49,
+ PlayerHandlecmd50,
+ PlayerHandleSpriteInvisibility,
+ PlayerHandleBattleAnimation,
+ PlayerHandleLinkStandbyMsg,
+ PlayerHandleResetActionMoveSelection,
+ PlayerHandlecmd55,
+ PlayerHandlecmd56,
+};
+
+void PlayerBufferRunCommand(void);
+void sub_802C2EC(void);
+void sub_802C68C(void);
+void sub_802CA60(void);
+void sub_802D730(void);
+void sub_802DA9C(u8);
+void sub_802DB6C(u8);
+void sub_802DCB0(u8);
+void sub_802DD10(u8);
+void sub_802DDC4(u8);
+void sub_802DF88(void);
+void sub_802E03C(void);
+void sub_802E12C(s32, const u8 *);
+void sub_802E1B0(void);
+void sub_802E220(void);
+void sub_802E2D4(void);
+void sub_802E3B4(u8, int);
+void nullsub_7(u8);
+void b_link_standby_message(void);
+u32 dp01_getattr_by_ch1_for_player_pokemon_(u8, u8 *);
+void dp01_setattr_by_ch1_for_player_pokemon(u8);
+void sub_802F934(u8, u8);
+void sub_802FB2C(void);
+void sub_8030190(void);
+void sub_80304A8(void);
+void sub_8030E38(struct Sprite *);
+void task05_08033660(u8);
+void sub_8031064(void);
+
+void nullsub_91(void)
+{
+}
+
+void SetBankFuncToPlayerBufferRunCommand(void)
+{
+ gBattleBankFunc[gActiveBank] = PlayerBufferRunCommand;
+ gDoingBattleAnim = FALSE;
+}
+
+void PlayerBufferExecCompleted(void)
+{
+ gBattleBankFunc[gActiveBank] = PlayerBufferRunCommand;
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ u8 playerId = GetMultiplayerId();
+
+ PrepareBufferDataTransferLink(2, 4, &playerId);
+ gBattleBufferA[gActiveBank][0] = 0x38;
+ }
+ else
+ {
+ gBattleExecBuffer &= ~gBitTable[gActiveBank];
+ }
+}
+
+void PlayerBufferRunCommand(void)
+{
+ if (gBattleExecBuffer & gBitTable[gActiveBank])
+ {
+ if (gBattleBufferA[gActiveBank][0] < 0x39)
+ gPlayerBufferCommands[gBattleBufferA[gActiveBank][0]]();
+ else
+ PlayerBufferExecCompleted();
+ }
+}
+
+void bx_0802E404(void)
+{
+ if (gSprites[gObjectBankIDs[gActiveBank]].pos2.x == 0)
+ PlayerBufferExecCompleted();
+}
+
+void sub_802C098(void)
+{
+ u16 itemId = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+
+ dp11b_obj_instanciate(gActiveBank, 1, 7, 1);
+ dp11b_obj_instanciate(gActiveBank, 0, 7, 1);
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ DestroyMenuCursor();
+
+ // Useless switch statement.
+ switch (gActionSelectionCursor[gActiveBank])
+ {
+ case 0:
+ Emitcmd33(1, 0, 0);
+ break;
+ case 1:
+ Emitcmd33(1, 1, 0);
+ break;
+ case 2:
+ Emitcmd33(1, 2, 0);
+ break;
+ case 3:
+ Emitcmd33(1, 3, 0);
+ break;
+ }
+ PlayerBufferExecCompleted();
+ }
+ else if (gMain.newKeys & DPAD_LEFT)
+ {
+ if (gActionSelectionCursor[gActiveBank] & 1)
+ {
+ PlaySE(SE_SELECT);
+ nullsub_8(gActionSelectionCursor[gActiveBank]);
+ gActionSelectionCursor[gActiveBank] ^= 1;
+ sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
+ }
+ }
+ else if (gMain.newKeys & DPAD_RIGHT)
+ {
+ if (!(gActionSelectionCursor[gActiveBank] & 1))
+ {
+ PlaySE(SE_SELECT);
+ nullsub_8(gActionSelectionCursor[gActiveBank]);
+ gActionSelectionCursor[gActiveBank] ^= 1;
+ sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
+ }
+ }
+ else if (gMain.newKeys & DPAD_UP)
+ {
+ if (gActionSelectionCursor[gActiveBank] & 2)
+ {
+ PlaySE(SE_SELECT);
+ nullsub_8(gActionSelectionCursor[gActiveBank]);
+ gActionSelectionCursor[gActiveBank] ^= 2;
+ sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
+ }
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ if (!(gActionSelectionCursor[gActiveBank] & 2))
+ {
+ PlaySE(SE_SELECT);
+ nullsub_8(gActionSelectionCursor[gActiveBank]);
+ gActionSelectionCursor[gActiveBank] ^= 2;
+ sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
+ }
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ && GetBankIdentity(gActiveBank) == 2
+ && !(gAbsentBankFlags & gBitTable[GetBankByPlayerAI(0)])
+ && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
+ {
+ if (gBattleBufferA[gActiveBank][1] == 1)
+ {
+ // Add item to bag if it is a ball
+ if (itemId <= ITEM_PREMIER_BALL)
+ AddBagItem(itemId, 1);
+ else
+ return;
+ }
+ PlaySE(SE_SELECT);
+ Emitcmd33(1, 12, 0);
+ PlayerBufferExecCompleted();
+ DestroyMenuCursor();
+ }
+ }
+ else if (gMain.newKeys & START_BUTTON)
+ {
+ sub_804454C();
+ }
+}
+
+void unref_sub_802C2B8(void)
+{
+ dp11b_obj_free(gActiveBank, 1);
+ dp11b_obj_free(gActiveBank, 0);
+ gBattleBankFunc[gActiveBank] = sub_802C2EC;
+}
+
+// TODO: fix this function
+void sub_802C2EC(void)
+{
+ u8 arr[4] = {0, 2, 3, 1};
+ s32 i;
+
+ dp11b_obj_instanciate(gUnknown_03004344, 1, 15, 1);
+ i = 0;
+ if (gNoOfAllBanks != 0)
+ {
+ do
+ {
+ if (i != gUnknown_03004344)
+ dp11b_obj_free(i, 1);
+ i++;
+ } while (i < gNoOfAllBanks);
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ DestroyMenuCursor();
+ PlaySE(SE_SELECT);
+ gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010574;
+ Emitcmd33(1, 10, gMoveSelectionCursor[gActiveBank] | (gUnknown_03004344 << 8));
+ dp11b_obj_free(gUnknown_03004344, 1);
+ PlayerBufferExecCompleted();
+ }
+ //_0802C3A8
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010574;
+ gBattleBankFunc[gActiveBank] = sub_802C68C;
+ dp11b_obj_instanciate(gActiveBank, 1, 7, 1);
+ dp11b_obj_instanciate(gActiveBank, 0, 7, 1);
+ dp11b_obj_free(gUnknown_03004344, 1);
+ }
+ else if (gMain.newKeys & 0x60)
+ {
+ PlaySE(SE_SELECT);
+ gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010574;
+ do
+ {
+ u8 var = GetBankIdentity(gUnknown_03004344);
+
+ for (i = 0; i < 4; i++)
+ {
+ if (var == arr[i])
+ break;
+ }
+ do
+ {
+ i--;
+ if (i < 0)
+ i = 3;
+ gUnknown_03004344 = GetBankByPlayerAI(arr[i]);
+ } while(gUnknown_03004344 == gNoOfAllBanks);
+ i = 0;
+ switch (GetBankIdentity(gUnknown_03004344))
+ {
+ case 0:
+ case 2:
+ if (gActiveBank == gUnknown_03004344)
+ {
+ u32 moveId;
+
+ asm("":::"memory");
+ moveId = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1 + gMoveSelectionCursor[gActiveBank]);
+ if (!(gBattleMoves[moveId].target & 2))
+ break;
+ }
+ i++;
+ break;
+ case 1:
+ case 3:
+ i++;
+ }
+ //_0802C500
+ if (gAbsentBankFlags & gBitTable[gUnknown_03004344])
+ i = 0;
+ } while (i == 0);
+ gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010520;
+ }
+ //_0802C540
+ else if (gMain.newKeys & 0x90)
+ {
+ PlaySE(SE_SELECT);
+ gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010574;
+ do
+ {
+ u8 var = GetBankIdentity(gUnknown_03004344);
+
+ for (i = 0; i < 4; i++)
+ {
+ if (var == arr[i])
+ break;
+ }
+ do
+ {
+ i++;
+ if (i > 3)
+ i = 0;
+ gUnknown_03004344 = GetBankByPlayerAI(arr[i]);
+ } while (gUnknown_03004344 == gNoOfAllBanks);
+ i = 0;
+ switch (GetBankIdentity(gUnknown_03004344))
+ {
+ case 0:
+ case 2:
+ if (gActiveBank == gUnknown_03004344)
+ {
+ u32 moveId;
+
+ asm("":::"memory");
+ moveId = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1 + gMoveSelectionCursor[gActiveBank]);
+ if (!(gBattleMoves[moveId].target & 2))
+ break;
+ }
+ i++;
+ break;
+ case 1:
+ case 3:
+ i++;
+ }
+ if (gAbsentBankFlags & gBitTable[gUnknown_03004344])
+ i = 0;
+ } while (i == 0);
+ gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010520;
+ }
+}
+
+struct UnknownStruct1
+{
+ u16 moves[4];
+ u8 pp[4];
+ u8 unkC[0x12-0xC];
+ u8 unk12;
+ u8 unk13;
+ u8 filler14[0x20-0x14];
+};
+
+const u8 gUnknown_081FAE80[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW WHITE LIGHT_BLUE WHITE2}");
+
+void sub_802C68C(void)
+{
+ u32 r8 = 0;
+ struct UnknownStruct1 *r6 = (struct UnknownStruct1 *)(gBattleBufferA[gActiveBank] + 4);
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ u32 r4;
+
+ PlaySE(SE_SELECT);
+
+ if (r6->moves[gMoveSelectionCursor[gActiveBank]] == MOVE_CURSE)
+ r4 = (r6->unk12 != TYPE_GHOST && (r6->unk13 ^ 7)) ? 0x10 : 0;
+ else
+ r4 = gBattleMoves[r6->moves[gMoveSelectionCursor[gActiveBank]]].target;
+
+ if (r4 & 0x10)
+ gUnknown_03004344 = gActiveBank;
+ else
+ gUnknown_03004344 = GetBankByPlayerAI((GetBankIdentity(gActiveBank) & 1) ^ 1);
+
+ if (gBattleBufferA[gActiveBank][1] == 0)
+ {
+ if ((r4 & 2) && gBattleBufferA[gActiveBank][2] == 0)
+ r8++;
+ }
+ else
+ {
+ if (!(r4 & 0x7D))
+ r8++;
+ if (r6->pp[gMoveSelectionCursor[gActiveBank]] == 0)
+ {
+ r8 = 0;
+ }
+ else if (!(r4 & 0x12) && CountAliveMons(0) <= 1)
+ {
+ gUnknown_03004344 = sub_803C434(gActiveBank);
+ r8 = 0;
+ }
+ }
+ if (r8 == 0)
+ {
+ DestroyMenuCursor();
+ Emitcmd33(1, 10, gMoveSelectionCursor[gActiveBank] | (gUnknown_03004344 << 8));
+ PlayerBufferExecCompleted();
+ }
+ else
+ {
+ gBattleBankFunc[gActiveBank] = sub_802C2EC;
+ if (r4 & 0x12)
+ gUnknown_03004344 = gActiveBank;
+ else if (gAbsentBankFlags & gBitTable[GetBankByPlayerAI(1)])
+ gUnknown_03004344 = GetBankByPlayerAI(3);
+ else
+ gUnknown_03004344 = GetBankByPlayerAI(1);
+ gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010520;
+ }
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ DestroyMenuCursor();
+ PlaySE(SE_SELECT);
+ gUnknown_030042A4 = 0;
+ gUnknown_030042A0 = 320;
+ Emitcmd33(1, 10, 0xFFFF);
+ PlayerBufferExecCompleted();
+ }
+ else if (gMain.newKeys & DPAD_LEFT)
+ {
+ if (gMoveSelectionCursor[gActiveBank] & 1)
+ {
+ nullsub_7(gMoveSelectionCursor[gActiveBank]);
+ gMoveSelectionCursor[gActiveBank] ^= 1;
+ PlaySE(SE_SELECT);
+ sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0);
+ sub_802E220();
+ sub_802E2D4();
+ }
+ }
+ else if (gMain.newKeys & DPAD_RIGHT)
+ {
+ if (!(gMoveSelectionCursor[gActiveBank] & 1)
+ && (gMoveSelectionCursor[gActiveBank] ^ 1) < gUnknown_03004348)
+ {
+ nullsub_7(gMoveSelectionCursor[gActiveBank]);
+ gMoveSelectionCursor[gActiveBank] ^= 1;
+ PlaySE(SE_SELECT);
+ sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0);
+ sub_802E220();
+ sub_802E2D4();
+ }
+ }
+ else if (gMain.newKeys & DPAD_UP)
+ {
+ if (gMoveSelectionCursor[gActiveBank] & 2)
+ {
+ nullsub_7(gMoveSelectionCursor[gActiveBank]);
+ gMoveSelectionCursor[gActiveBank] ^= 2;
+ PlaySE(SE_SELECT);
+ sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0);
+ sub_802E220();
+ sub_802E2D4();
+ }
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ if (!(gMoveSelectionCursor[gActiveBank] & 2)
+ && (gMoveSelectionCursor[gActiveBank] ^ 2) < gUnknown_03004348)
+ {
+ nullsub_7(gMoveSelectionCursor[gActiveBank]);
+ gMoveSelectionCursor[gActiveBank] ^= 2;
+ PlaySE(SE_SELECT);
+ sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0);
+ sub_802E220();
+ sub_802E2D4();
+ }
+ }
+ else if (gMain.newKeys & SELECT_BUTTON)
+ {
+ if (gUnknown_03004348 > 1 && !(gBattleTypeFlags & BATTLE_TYPE_LINK))
+ {
+ sub_802E12C(gMoveSelectionCursor[gActiveBank], gUnknown_081FAE80);
+ if (gMoveSelectionCursor[gActiveBank] != 0)
+ gUnknown_03004344 = 0;
+ else
+ gUnknown_03004344 = gMoveSelectionCursor[gActiveBank] + 1;
+ sub_802E3B4(gUnknown_03004344, 27);
+ FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A);
+ InitWindow(&gUnknown_03004210, gUnknown_08400D89, 0x290, 0x17, 0x37);
+ sub_8002F44(&gUnknown_03004210);
+ gBattleBankFunc[gActiveBank] = sub_802CA60;
+ }
+ }
+}
+
+extern const u8 gUnknown_08400D49[];
+extern const u8 gUnknown_08400D38[];
+
+void sub_802CA60(void)
+{
+ u8 perMovePPBonuses[4];
+ struct
+ {
+ u16 moves[4];
+ u8 pp[4];
+ u8 filler18[8]; // what is this?
+ } sp0;
+ //struct UnknownStruct1 sp0;
+ u8 totalPPBonuses;
+
+ if (gMain.newKeys & (A_BUTTON | SELECT_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ if (gMoveSelectionCursor[gActiveBank] != gUnknown_03004344)
+ {
+ struct UnknownStruct1 *r9 = (struct UnknownStruct1 *)&gBattleBufferA[gActiveBank][4];
+ s32 i;
+
+ i = r9->moves[gMoveSelectionCursor[gActiveBank]];
+ r9->moves[gMoveSelectionCursor[gActiveBank]] = r9->moves[gUnknown_03004344];
+ r9->moves[gUnknown_03004344] = i;
+
+ i = r9->pp[gMoveSelectionCursor[gActiveBank]];
+ r9->pp[gMoveSelectionCursor[gActiveBank]] = r9->pp[gUnknown_03004344];
+ r9->pp[gUnknown_03004344] = i;
+
+ i = r9->unkC[gMoveSelectionCursor[gActiveBank]];
+ r9->unkC[gMoveSelectionCursor[gActiveBank]] = r9->unkC[gUnknown_03004344];
+ r9->unkC[gUnknown_03004344] = i;
+
+ if (gDisableStructs[gActiveBank].unk18_b & gBitTable[gMoveSelectionCursor[gActiveBank]])
+ {
+ gDisableStructs[gActiveBank].unk18_b &= ~gBitTable[gMoveSelectionCursor[gActiveBank]];
+ gDisableStructs[gActiveBank].unk18_b |= gBitTable[gUnknown_03004344];
+ }
+
+ sub_802E1B0();
+
+ for (i = 0; i < 4; i++)
+ perMovePPBonuses[i] = (gBattleMons[gActiveBank].ppBonuses & (3 << (i * 2))) >> (i * 2);
+ totalPPBonuses = perMovePPBonuses[gMoveSelectionCursor[gActiveBank]];
+ perMovePPBonuses[gMoveSelectionCursor[gActiveBank]] = perMovePPBonuses[gUnknown_03004344];
+ perMovePPBonuses[gUnknown_03004344] = totalPPBonuses;
+
+ totalPPBonuses = 0;
+ for (i = 0; i < 4; i++)
+ totalPPBonuses |= perMovePPBonuses[i] << (i * 2);
+ gBattleMons[gActiveBank].ppBonuses = totalPPBonuses;
+
+ for (i = 0; i < 4; i++)
+ {
+ gBattleMons[gActiveBank].moves[i] = r9->moves[i];
+ gBattleMons[gActiveBank].pp[i] = r9->pp[i];
+ }
+ if (!(gBattleMons[gActiveBank].status2 & 0x200000))
+ {
+ for (i = 0; i < 4; i++)
+ {
+ sp0.moves[i] = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1 + i);
+ sp0.pp[i] = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_PP1 + i);
+ }
+
+ totalPPBonuses = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_PP_BONUSES);
+ for (i = 0; i < 4; i++)
+ perMovePPBonuses[i] = (totalPPBonuses & (3 << (i * 2))) >> (i * 2);
+
+ i = sp0.moves[gMoveSelectionCursor[gActiveBank]];
+ sp0.moves[gMoveSelectionCursor[gActiveBank]] = sp0.moves[gUnknown_03004344];
+ sp0.moves[gUnknown_03004344] = i;
+
+ i = sp0.pp[gMoveSelectionCursor[gActiveBank]];
+ sp0.pp[gMoveSelectionCursor[gActiveBank]] = sp0.pp[gUnknown_03004344];
+ sp0.pp[gUnknown_03004344] = i;
+
+ totalPPBonuses = perMovePPBonuses[gMoveSelectionCursor[gActiveBank]];
+ perMovePPBonuses[gMoveSelectionCursor[gActiveBank]] = perMovePPBonuses[gUnknown_03004344];
+ perMovePPBonuses[gUnknown_03004344] = totalPPBonuses;
+
+ totalPPBonuses = 0;
+ for (i = 0; i < 4; i++)
+ totalPPBonuses |= perMovePPBonuses[i] << (i * 2);
+
+ for (i = 0; i < 4; i++)
+ {
+ SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1 + i, (u8 *)&sp0.moves[i]);
+ SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_PP1 + i, &sp0.pp[i]);
+ }
+ SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_PP_BONUSES, &totalPPBonuses);
+ }
+ }
+ else
+ {
+ sub_802E12C(gUnknown_03004344, gUnknown_08400D49);
+ }
+ gBattleBankFunc[gActiveBank] = sub_802C68C;
+ gMoveSelectionCursor[gActiveBank] = gUnknown_03004344;
+ sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0);
+ FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A);
+ InitWindow(&gUnknown_03004210, gUnknown_08400D38, 0x290, 0x17, 0x37);
+ sub_8002F44(&gUnknown_03004210);
+ sub_802E220();
+ sub_802E2D4();
+ }
+ if (gMain.newKeys & (B_BUTTON | SELECT_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ nullsub_7(gUnknown_03004344);
+ sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0);
+ sub_802E12C(gMoveSelectionCursor[gActiveBank], gUnknown_08400D49);
+ gBattleBankFunc[gActiveBank] = sub_802C68C;
+ FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A);
+ InitWindow(&gUnknown_03004210, gUnknown_08400D38, 0x290, 0x17, 0x37);
+ sub_8002F44(&gUnknown_03004210);
+ sub_802E220();
+ sub_802E2D4();
+ }
+ if ((gMain.newKeys & DPAD_LEFT) && (gUnknown_03004344 & 1))
+ {
+ if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank])
+ sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0x1D);
+ else
+ nullsub_7(gUnknown_03004344);
+ gUnknown_03004344 ^= 1;
+ PlaySE(SE_SELECT);
+ if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank])
+ sub_802E3B4(gUnknown_03004344, 0);
+ else
+ sub_802E3B4(gUnknown_03004344, 0x1B);
+ }
+ if ((gMain.newKeys & DPAD_RIGHT) && !(gUnknown_03004344 & 1) && (gUnknown_03004344 ^ 1) < gUnknown_03004348)
+ {
+ if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank])
+ sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0x1D);
+ else
+ nullsub_7(gUnknown_03004344);
+ gUnknown_03004344 ^= 1;
+ PlaySE(SE_SELECT);
+ if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank])
+ sub_802E3B4(gUnknown_03004344, 0);
+ else
+ sub_802E3B4(gUnknown_03004344, 0x1B);
+ }
+ if ((gMain.newKeys & DPAD_UP) && (gUnknown_03004344 & 2))
+ {
+ if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank])
+ sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0x1D);
+ else
+ nullsub_7(gUnknown_03004344);
+ gUnknown_03004344 ^= 2;
+ PlaySE(SE_SELECT);
+ if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank])
+ sub_802E3B4(gUnknown_03004344, 0);
+ else
+ sub_802E3B4(gUnknown_03004344, 0x1B);
+ }
+ if ((gMain.newKeys & DPAD_DOWN) && !(gUnknown_03004344 & 2) && (gUnknown_03004344 ^ 2) < gUnknown_03004348)
+ {
+ if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank])
+ sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0x1D);
+ else
+ nullsub_7(gUnknown_03004344);
+ gUnknown_03004344 ^= 2;
+ PlaySE(SE_SELECT);
+ if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank])
+ sub_802E3B4(gUnknown_03004344, 0);
+ else
+ sub_802E3B4(gUnknown_03004344, 0x1B);
+ }
+}
+
+void sub_802D148(void)
+{
+ if (gReceivedRemoteLinkPlayers == 0)
+ {
+ m4aSongNumStop(SE_HINSI);
+ gMain.inBattle = FALSE;
+ gMain.callback1 = gPreBattleCallback1;
+ SetMainCallback2(c2_8011A1C);
+ }
+}
+
+void sub_802D18C(void)
+{
+ if (!gPaletteFade.active)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ sub_800832C();
+ gBattleBankFunc[gActiveBank] = sub_802D148;
+ }
+ else
+ {
+ m4aSongNumStop(SE_HINSI);
+ gMain.inBattle = FALSE;
+ gMain.callback1 = gPreBattleCallback1;
+ SetMainCallback2(gMain.savedCallback);
+ }
+ }
+}
+
+void sub_802D204(void)
+{
+ if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ PlayerBufferExecCompleted();
+}
+
+// duplicate of sub_802D204
+void sub_802D23C(void)
+{
+ if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ PlayerBufferExecCompleted();
+}
+
+void sub_802D274(void)
+{
+ if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ {
+ nullsub_10(gSaveBlock2.playerGender);
+ FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
+ DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ PlayerBufferExecCompleted();
+ }
+}
+
+void sub_802D2E0(void)
+{
+ if (--ewram17810[gActiveBank].unk9 == 0xFF)
+ {
+ ewram17810[gActiveBank].unk9 = 0;
+ PlayerBufferExecCompleted();
+ }
+}
+
+void sub_802D31C(void)
+{
+ bool8 r6 = FALSE;
+
+ if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI)))
+ {
+ if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ r6 = TRUE;
+ }
+ else
+ {
+ if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy
+ && gSprites[gHealthboxIDs[gActiveBank ^ 2]].callback == SpriteCallbackDummy)
+ r6 = TRUE;
+ }
+ if (IsCryPlayingOrClearCrySongs())
+ r6 = FALSE;
+
+ if (r6 && ewram17810[gActiveBank].unk1_0 && ewram17810[gActiveBank ^ 2].unk1_0)
+ {
+ ewram17810[gActiveBank].unk0_7 = 0;
+ ewram17810[gActiveBank].unk1_0 = 0;
+ ewram17810[gActiveBank ^ 2].unk0_7 = 0;
+ ewram17810[gActiveBank ^ 2].unk1_0 = 0;
+ FreeSpriteTilesByTag(0x27F9);
+ FreeSpritePaletteByTag(0x27F9);
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ m4aMPlayContinue(&gMPlay_BGM);
+ else
+ m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 256);
+ sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ if (IsDoubleBattle())
+ sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank ^ 2]], gActiveBank ^ 2);
+ ewram17810[gActiveBank].unk9 = 3;
+ gBattleBankFunc[gActiveBank] = sub_802D2E0;
+ }
+}
+
+void sub_802D500(void)
+{
+ if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7)
+ sub_8141828(gActiveBank, &gPlayerParty[gBattlePartyID[gActiveBank]]);
+ if (!ewram17810[gActiveBank ^ 2].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_7)
+ sub_8141828(gActiveBank ^ 2, &gPlayerParty[gBattlePartyID[gActiveBank ^ 2]]);
+ if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_3)
+ {
+ if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
+ {
+ DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank ^ 2]]);
+ sub_8045A5C(
+ gHealthboxIDs[gActiveBank ^ 2],
+ &gPlayerParty[gBattlePartyID[gActiveBank ^ 2]],
+ 0);
+ sub_804777C(gActiveBank ^ 2);
+ sub_8043DFC(gHealthboxIDs[gActiveBank ^ 2]);
+ }
+ DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]);
+ sub_8045A5C(
+ gHealthboxIDs[gActiveBank],
+ &gPlayerParty[gBattlePartyID[gActiveBank]],
+ 0);
+ sub_804777C(gActiveBank);
+ sub_8043DFC(gHealthboxIDs[gActiveBank]);
+ ewram17840.unk9_0 = 0;
+ gBattleBankFunc[gActiveBank] = sub_802D31C;
+ }
+}
+
+void sub_802D680(void)
+{
+ if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy
+ && ewram17810[gActiveBank].unk1_0)
+ {
+ ewram17810[gActiveBank].unk0_7 = 0;
+ ewram17810[gActiveBank].unk1_0 = 0;
+ FreeSpriteTilesByTag(0x27F9);
+ FreeSpritePaletteByTag(0x27F9);
+ if (ewram17800[gActiveBank].substituteSprite)
+ move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
+ gBattleBankFunc[gActiveBank] = sub_802D730;
+ }
+}
+
+void sub_802D730(void)
+{
+ if (!ewram17810[gActiveBank].unk0_6 && !IsCryPlayingOrClearCrySongs())
+ {
+ m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100);
+ sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ PlayerBufferExecCompleted();
+ }
+}
+
+void sub_802D798(void)
+{
+ if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7)
+ sub_8141828(gActiveBank, &gPlayerParty[gBattlePartyID[gActiveBank]]);
+ if (gSprites[gUnknown_0300434C[gActiveBank]].callback == SpriteCallbackDummy
+ && !ewram17810[gActiveBank].unk0_3)
+ {
+ DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]);
+ sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 0);
+ sub_804777C(gActiveBank);
+ sub_8043DFC(gHealthboxIDs[gActiveBank]);
+ sub_8031F88(gActiveBank);
+ gBattleBankFunc[gActiveBank] = sub_802D680;
+ }
+}
+
+void c3_0802FDF4(u8 taskId)
+{
+ if (!IsCryPlayingOrClearCrySongs())
+ {
+ m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100);
+ DestroyTask(taskId);
+ }
+}
+
+void bx_t1_healthbar_update(void)
+{
+ s16 r4 = sub_8045C78(gActiveBank, gHealthboxIDs[gActiveBank], 0, 0);
+
+ sub_8043DFC(gHealthboxIDs[gActiveBank]);
+ if (r4 != -1)
+ {
+ sub_80440EC(gHealthboxIDs[gActiveBank], r4, 0);
+ }
+ else
+ {
+ sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ PlayerBufferExecCompleted();
+ }
+}
+
+void sub_802D90C(void)
+{
+ if (gUnknown_03004210.state == 0)
+ PlayerBufferExecCompleted();
+}
+
+// Rare Candy usage, maybe?
+void sub_802D924(u8 taskId)
+{
+ u32 pkmnIndex = (u8)gTasks[taskId].data[0];
+ u8 bank = gTasks[taskId].data[2];
+ s16 gainedExp = gTasks[taskId].data[1];
+
+ if (IsDoubleBattle() == TRUE || pkmnIndex != gBattlePartyID[bank])
+ {
+ struct Pokemon *pkmn = &gPlayerParty[pkmnIndex];
+ u16 species = GetMonData(pkmn, MON_DATA_SPECIES);
+ u8 level = GetMonData(pkmn, MON_DATA_LEVEL);
+ u32 currExp = GetMonData(pkmn, MON_DATA_EXP);
+ u32 nextLvlExp = gExperienceTables[gBaseStats[species].growthRate][level + 1];
+
+ if (currExp + gainedExp >= nextLvlExp)
+ {
+ u8 savedActiveBank;
+
+ SetMonData(pkmn, MON_DATA_EXP, (u8 *)&nextLvlExp);
+ CalculateMonStats(pkmn);
+ gainedExp -= nextLvlExp - currExp;
+ savedActiveBank = gActiveBank;
+ gActiveBank = bank;
+ Emitcmd33(1, 11, gainedExp);
+ gActiveBank = savedActiveBank;
+
+ if (IsDoubleBattle() == TRUE
+ && ((u16)pkmnIndex == gBattlePartyID[bank] || (u16)pkmnIndex == gBattlePartyID[bank ^ 2]))
+ gTasks[taskId].func = sub_802DCB0;
+ else
+ gTasks[taskId].func = sub_802DDC4;
+ }
+ else
+ {
+ currExp += gainedExp;
+ SetMonData(pkmn, MON_DATA_EXP, (u8 *)&currExp);
+ gBattleBankFunc[bank] = sub_802D90C;
+ DestroyTask(taskId);
+ }
+ }
+ else
+ {
+ gTasks[taskId].func = sub_802DA9C;
+ }
+}
+
+void sub_802DA9C(u8 taskId)
+{
+ u8 pkmnIndex = gTasks[taskId].data[0];
+ s32 r9 = gTasks[taskId].data[1];
+ u8 bank = gTasks[taskId].data[2];
+ struct Pokemon *pkmn = &gPlayerParty[pkmnIndex];
+ u8 level = GetMonData(pkmn, MON_DATA_LEVEL);
+ u16 species = GetMonData(pkmn, MON_DATA_SPECIES);
+ u32 exp = GetMonData(pkmn, MON_DATA_EXP);
+ u32 currLvlExp = gExperienceTables[gBaseStats[species].growthRate][level];
+ u32 expToNextLvl;
+
+ exp -= currLvlExp;
+ expToNextLvl = gExperienceTables[gBaseStats[species].growthRate][level + 1] - currLvlExp;
+ sub_8043D84(bank, gHealthboxIDs[bank], expToNextLvl, exp, -r9);
+ PlaySE(SE_EXP);
+ gTasks[taskId].func = sub_802DB6C;
+}
+
+#ifdef NONMATCHING
+void sub_802DB6C(u8 taskId)
+{
+ if (gTasks[taskId].data[10] < 13)
+ {
+ gTasks[taskId].data[10]++;
+ }
+ else
+ {
+ u8 r9 = gTasks[taskId].data[0];
+ s32 r10 = gTasks[taskId].data[1]; //s16?
+ u8 r7 = gTasks[taskId].data[2];
+ s16 r4;
+
+ r4 = sub_8045C78(r7, gHealthboxIDs[r7], 1, 0);
+ sub_8043DFC(gHealthboxIDs[r7]);
+ if (r4 == -1)
+ {
+ struct Pokemon *pkmn;
+ u8 r4;
+ u32 sp4;
+ u16 r0;
+ u32 sp0;
+
+ m4aSongNumStop(SE_EXP);
+ pkmn = &gPlayerParty[r9];
+ r4 = GetMonData(pkmn, MON_DATA_LEVEL);
+ sp4 = GetMonData(pkmn, MON_DATA_EXP);
+ r0 = GetMonData(pkmn, MON_DATA_SPECIES);
+ sp0 = gExperienceTables[gBaseStats[r0].growthRate][r4 + 1];
+ if (sp4 + r10 >= sp0)
+ {
+ u8 r5;
+ u32 asdf;
+
+ SetMonData(pkmn, MON_DATA_EXP, (u8 *)&sp0);
+ CalculateMonStats(pkmn);
+ //r10 -= sp0 - sp4;
+ asdf = sp0 - sp4;
+ //asdf = r10 - (sp0 - sp4);
+ r10 -= asdf;
+ r5 = gActiveBank;
+ gActiveBank = r7;
+ Emitcmd33(1, 11, r10);
+ gActiveBank = r5;
+ gTasks[taskId].func = sub_802DCB0;
+ }
+ else
+ {
+ //u32 asdf = sp4 + r10;
+ sp4 += r10;
+ SetMonData(pkmn, MON_DATA_EXP, (u8 *)&sp4);
+ gBattleBankFunc[r7] = sub_802D90C;
+ DestroyTask(taskId);
+ }
+ }
+ }
+}
+#else
+__attribute__((naked))
+void sub_802DB6C(u8 taskId)
+{
+ asm_unified("push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x8\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r8, r0\n\
+ ldr r1, _0802DB98 @ =gTasks\n\
+ lsls r0, 2\n\
+ add r0, r8\n\
+ lsls r0, 3\n\
+ adds r6, r0, r1\n\
+ ldrh r1, [r6, 0x1C]\n\
+ movs r2, 0x1C\n\
+ ldrsh r0, [r6, r2]\n\
+ cmp r0, 0xC\n\
+ bgt _0802DB9C\n\
+ adds r0, r1, 0x1\n\
+ strh r0, [r6, 0x1C]\n\
+ b _0802DC98\n\
+ .align 2, 0\n\
+_0802DB98: .4byte gTasks\n\
+_0802DB9C:\n\
+ ldrb r0, [r6, 0x8]\n\
+ mov r9, r0\n\
+ ldrh r2, [r6, 0xA]\n\
+ mov r10, r2\n\
+ ldrb r7, [r6, 0xC]\n\
+ ldr r5, _0802DC64 @ =gHealthboxIDs\n\
+ adds r5, r7, r5\n\
+ ldrb r1, [r5]\n\
+ adds r0, r7, 0\n\
+ movs r2, 0x1\n\
+ movs r3, 0\n\
+ bl sub_8045C78\n\
+ adds r4, r0, 0\n\
+ lsls r4, 16\n\
+ lsrs r4, 16\n\
+ ldrb r0, [r5]\n\
+ bl sub_8043DFC\n\
+ lsls r4, 16\n\
+ asrs r4, 16\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ cmp r4, r0\n\
+ bne _0802DC98\n\
+ movs r0, 0x21\n\
+ bl m4aSongNumStop\n\
+ movs r0, 0x64\n\
+ mov r1, r9\n\
+ muls r1, r0\n\
+ ldr r0, _0802DC68 @ =gPlayerParty\n\
+ adds r5, r1, r0\n\
+ adds r0, r5, 0\n\
+ movs r1, 0x38\n\
+ bl GetMonData\n\
+ adds r4, r0, 0\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ adds r0, r5, 0\n\
+ movs r1, 0x19\n\
+ bl GetMonData\n\
+ str r0, [sp, 0x4]\n\
+ adds r0, r5, 0\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ ldr r3, _0802DC6C @ =gExperienceTables\n\
+ adds r4, 0x1\n\
+ lsls r4, 2\n\
+ ldr r2, _0802DC70 @ =gBaseStats\n\
+ lsls r1, r0, 3\n\
+ subs r1, r0\n\
+ lsls r1, 2\n\
+ adds r1, r2\n\
+ ldrb r1, [r1, 0x13]\n\
+ movs r0, 0xCA\n\
+ lsls r0, 1\n\
+ muls r0, r1\n\
+ adds r4, r0\n\
+ adds r4, r3\n\
+ ldr r1, [r4]\n\
+ str r1, [sp]\n\
+ mov r2, r10\n\
+ lsls r0, r2, 16\n\
+ asrs r4, r0, 16\n\
+ ldr r0, [sp, 0x4]\n\
+ adds r0, r4\n\
+ cmp r0, r1\n\
+ blt _0802DC7C\n\
+ adds r0, r5, 0\n\
+ movs r1, 0x19\n\
+ mov r2, sp\n\
+ bl SetMonData\n\
+ adds r0, r5, 0\n\
+ bl CalculateMonStats\n\
+ ldr r2, [sp]\n\
+ add r0, sp, 0x4\n\
+ ldrh r0, [r0]\n\
+ subs r2, r0\n\
+ subs r2, r4, r2\n\
+ ldr r4, _0802DC74 @ =gActiveBank\n\
+ ldrb r5, [r4]\n\
+ strb r7, [r4]\n\
+ lsls r2, 16\n\
+ lsrs r2, 16\n\
+ movs r0, 0x1\n\
+ movs r1, 0xB\n\
+ bl Emitcmd33\n\
+ strb r5, [r4]\n\
+ ldr r0, _0802DC78 @ =sub_802DCB0\n\
+ str r0, [r6]\n\
+ b _0802DC98\n\
+ .align 2, 0\n\
+_0802DC64: .4byte gHealthboxIDs\n\
+_0802DC68: .4byte gPlayerParty\n\
+_0802DC6C: .4byte gExperienceTables\n\
+_0802DC70: .4byte gBaseStats\n\
+_0802DC74: .4byte gActiveBank\n\
+_0802DC78: .4byte sub_802DCB0\n\
+_0802DC7C:\n\
+ str r0, [sp, 0x4]\n\
+ add r2, sp, 0x4\n\
+ adds r0, r5, 0\n\
+ movs r1, 0x19\n\
+ bl SetMonData\n\
+ ldr r1, _0802DCA8 @ =gBattleBankFunc\n\
+ lsls r0, r7, 2\n\
+ adds r0, r1\n\
+ ldr r1, _0802DCAC @ =sub_802D90C\n\
+ str r1, [r0]\n\
+ mov r0, r8\n\
+ bl DestroyTask\n\
+_0802DC98:\n\
+ add sp, 0x8\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_0802DCA8: .4byte gBattleBankFunc\n\
+_0802DCAC: .4byte sub_802D90C\n");
+}
+#endif
+
+void sub_802DCB0(u8 taskId)
+{
+ u8 bank = gTasks[taskId].data[2];
+ u8 pkmnIndex = gTasks[taskId].data[0];
+
+ if (IsDoubleBattle() == TRUE && pkmnIndex == gBattlePartyID[bank ^ 2])
+ bank ^= 2;
+ move_anim_start_t4(bank, bank, bank, 0);
+ gTasks[taskId].func = sub_802DD10;
+}
+
+void sub_802DD10(u8 taskId)
+{
+ u8 bank = gTasks[taskId].data[2];
+
+ if (!ewram17810[bank].unk0_6)
+ {
+ u8 pkmnIndex = gTasks[taskId].data[0];
+
+ GetMonData(&gPlayerParty[pkmnIndex], MON_DATA_LEVEL); // Unused return value
+ if (IsDoubleBattle() == TRUE && pkmnIndex == gBattlePartyID[bank ^ 2])
+ sub_8045A5C(gHealthboxIDs[bank ^ 2], &gPlayerParty[pkmnIndex], 0);
+ else
+ sub_8045A5C(gHealthboxIDs[bank], &gPlayerParty[pkmnIndex], 0);
+ gTasks[taskId].func = sub_802DDC4;
+ }
+}
+
+void sub_802DDC4(u8 taskId)
+{
+ u8 pkmnIndex;
+ u8 bank;
+
+ pkmnIndex = gTasks[taskId].data[0];
+ GetMonData(&gPlayerParty[pkmnIndex], MON_DATA_LEVEL); // Unused return value
+ bank = gTasks[taskId].data[2];
+ gBattleBankFunc[bank] = sub_802D90C;
+ DestroyTask(taskId);
+}
+
+void sub_802DE10(void)
+{
+ if (gSprites[gObjectBankIDs[gActiveBank]].pos1.y + gSprites[gObjectBankIDs[gActiveBank]].pos2.y > DISPLAY_HEIGHT)
+ {
+ u16 species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
+
+ nullsub_9(species);
+ FreeOamMatrix(gSprites[gObjectBankIDs[gActiveBank]].oam.matrixNum);
+ DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ sub_8043DB0(gHealthboxIDs[gActiveBank]);
+ PlayerBufferExecCompleted();
+ }
+}
+
+void sub_802DEAC(void)
+{
+ if (!ewram17810[gActiveBank].unk0_6)
+ {
+ FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
+ DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ sub_8043DB0(gHealthboxIDs[gActiveBank]);
+ PlayerBufferExecCompleted();
+ }
+}
+
+// Duplicate of sub_802D90C
+void sub_802DF18(void)
+{
+ if (gUnknown_03004210.state == 0)
+ PlayerBufferExecCompleted();
+}
+
+void sub_802DF30(void)
+{
+ if (!gPaletteFade.active)
+ {
+ u8 r4;
+
+ gBattleBankFunc[gActiveBank] = sub_802DF88;
+ r4 = gTasks[gUnknown_0300434C[gActiveBank]].data[0];
+ DestroyTask(gUnknown_0300434C[gActiveBank]);
+ sub_8094E20(r4);
+ }
+}
+
+void sub_802DF88(void)
+{
+ if (gMain.callback2 == sub_800F808 && !gPaletteFade.active)
+ {
+ if (gUnknown_0202E8F4 == 1)
+ Emitcmd34(1, gUnknown_0202E8F5, gUnknown_02038470);
+ else
+ Emitcmd34(1, 6, NULL);
+ if ((gBattleBufferA[gActiveBank][1] & 0xF) == 1)
+ b_link_standby_message();
+ PlayerBufferExecCompleted();
+ }
+}
+
+void sub_802E004(void)
+{
+ if (!gPaletteFade.active)
+ {
+ gBattleBankFunc[gActiveBank] = sub_802E03C;
+ nullsub_14();
+ sub_80A6DCC();
+ }
+}
+
+void sub_802E03C(void)
+{
+ if (gMain.callback2 == sub_800F808 && !gPaletteFade.active)
+ {
+ Emitcmd35(1, gScriptItemId);
+ PlayerBufferExecCompleted();
+ }
+}
+
+void bx_wait_t1(void)
+{
+ if (!gDoingBattleAnim || !ewram17810[gActiveBank].unk0_6)
+ PlayerBufferExecCompleted();
+}
+
+void bx_blink_t1(void)
+{
+ u8 spriteId = gObjectBankIDs[gActiveBank];
+
+ if (gSprites[spriteId].data1 == 32)
+ {
+ gSprites[spriteId].data1 = 0;
+ gSprites[spriteId].invisible = FALSE;
+ gDoingBattleAnim = 0;
+ PlayerBufferExecCompleted();
+ }
+ else
+ {
+ if (((u16)gSprites[spriteId].data1 % 4) == 0)
+ gSprites[spriteId].invisible ^= 1;
+ gSprites[spriteId].data1++;
+ }
+}
+
+void sub_802E12C(s32 a, const u8 *b)
+{
+ struct UnknownStruct1 *r4 = (struct UnknownStruct1 *)&gBattleBufferA[gActiveBank][4];
+
+ StringCopy(gDisplayedStringBattle, b);
+ StringAppend(gDisplayedStringBattle, gMoveNames[r4->moves[a]]);
+ InitWindow(
+ &gUnknown_03004210,
+ gDisplayedStringBattle,
+ 0x300 + a * 20,
+ (a & 1) ? 11 : 1,
+ (a < 2) ? 0x37 : 0x39);
+ sub_8002F44(&gUnknown_03004210);
+}
+
+void sub_802E1B0(void)
+{
+ struct UnknownStruct1 *r4 = (struct UnknownStruct1 *)&gBattleBufferA[gActiveBank][4];
+ s32 i;
+
+ gUnknown_03004348 = 0;
+ FillWindowRect(&gUnknown_03004210, 0x1016, 1, 0x37, 0x14, 0x3A);
+ for (i = 0; i < 4; i++)
+ {
+ nullsub_7(i);
+ sub_802E12C(i, gUnknown_08400D49);
+ if (r4->moves[i] != 0)
+ gUnknown_03004348++;
+ }
+}
+
+void sub_802E220(void)
+{
+ if (gBattleBufferA[gActiveBank][2] != 1)
+ {
+ struct UnknownStruct1 *r4 = (struct UnknownStruct1 *)&gBattleBufferA[gActiveBank][4];
+ u8 *str = gDisplayedStringBattle;
+
+ str = StringCopy(str, gUnknown_08400D49);
+ str[0] = EXT_CTRL_CODE_BEGIN;
+ str[1] = 0x11;
+ str[2] = 2;
+ str += 3;
+ str[0] = EXT_CTRL_CODE_BEGIN;
+ str[1] = 0x14;
+ str[2] = 6;
+ str += 3;
+ str = ConvertIntToDecimalStringN(str, r4->pp[gMoveSelectionCursor[gActiveBank]], 1, 2);
+ *str++ = CHAR_SLASH;
+ ConvertIntToDecimalStringN(str, r4->unkC[gMoveSelectionCursor[gActiveBank]], 1, 2);
+ InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 0x2A2, 0x19, 0x37);
+ sub_8002F44(&gUnknown_03004210);
+ }
+}
+
+extern const u8 gUnknown_08400D52[];
+extern const u8 gTypeNames[][7];
+
+void sub_802E2D4(void)
+{
+ if (gBattleBufferA[gActiveBank][2] == 1)
+ {
+ FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A);
+ InitWindow(&gUnknown_03004210, gUnknown_08400D52, 0x290, 0x13, 0x37);
+ }
+ else
+ {
+ struct UnknownStruct1 *r4 = (struct UnknownStruct1 *)&gBattleBufferA[gActiveBank][4];
+ u8 *str = gDisplayedStringBattle;
+
+ str = StringCopy(str, gUnknown_08400D49);
+ StringCopy(str, gTypeNames[gBattleMoves[r4->moves[gMoveSelectionCursor[gActiveBank]]].type]);
+ FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x39, 0x1C, 0x3A);
+ InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 0x2C0, 0x17, 0x39);
+ }
+ sub_8002F44(&gUnknown_03004210);
+}
+
+const u8 gUnknown_081FAE89[][2] =
+{
+ { 8, 120},
+ {88, 120},
+ { 8, 136},
+ {88, 136},
+};
+
+const u8 gUnknown_081FAE91[][2] =
+{
+ {144, 120},
+ {190, 120},
+ {144, 136},
+ {190, 136},
+ { 72, 72},
+ { 32, 90},
+ { 80, 80},
+ { 80, 88},
+};
+
+void sub_802E3B4(u8 a, int unused)
+{
+ sub_814A958(0x48);
+ sub_814A880(gUnknown_081FAE89[a][0], gUnknown_081FAE89[a][1]);
+}
+
+void nullsub_7(u8 a)
+{
+}
+
+void sub_802E3E4(u8 a, int unused)
+{
+ sub_814A958(0x2A);
+ sub_814A880(gUnknown_081FAE91[a][0], gUnknown_081FAE91[a][1]);
+}
+
+void nullsub_8(u8 a)
+{
+}
+
+void sub_802E414(void)
+{
+ SetMainCallback2(ReshowBattleScreenAfterMenu);
+}
+
+void sub_802E424(void)
+{
+ SetMainCallback2(ReshowBattleScreenAfterMenu);
+}
+
+void sub_802E434(void)
+{
+ if (!ewram17810[gActiveBank].unk0_4)
+ PlayerBufferExecCompleted();
+}
+
+void sub_802E460(void)
+{
+ if (!ewram17810[gActiveBank].unk0_5)
+ PlayerBufferExecCompleted();
+}
+
+void b_link_standby_message(void)
+{
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ gUnknown_030042A4 = 0;
+ gUnknown_030042A0 = 0;
+ sub_8002EB0(&gUnknown_03004210, gUnknown_08400CE0, 0x90, 2, 15);
+ }
+}
+
+void PlayerHandleGetAttributes(void)
+{
+ u8 unkData[0x100];
+ u32 offset = 0;
+ u8 r4;
+ s32 i;
+
+ if (gBattleBufferA[gActiveBank][2] == 0)
+ {
+ offset += dp01_getattr_by_ch1_for_player_pokemon_(gBattlePartyID[gActiveBank], unkData);
+ }
+ else
+ {
+ r4 = gBattleBufferA[gActiveBank][2];
+ for (i = 0; i < 6; i++)
+ {
+ if (r4 & 1)
+ offset += dp01_getattr_by_ch1_for_player_pokemon_(i, unkData + offset);
+ r4 >>= 1;
+ }
+ }
+ Emitcmd29(1, offset, unkData);
+ PlayerBufferExecCompleted();
+}
+
+// Duplicate of dp01_getattr_by_ch1_for_player_pokemon
+u32 dp01_getattr_by_ch1_for_player_pokemon_(u8 a, u8 *buffer)
+{
+ struct BattlePokemon battlePokemon;
+ struct UnknownStruct3 moveData;
+ u8 nickname[20];
+ u8 *src;
+ s16 data16;
+ u32 data32;
+ s32 size = 0;
+
+ switch (gBattleBufferA[gActiveBank][1])
+ {
+ case 0:
+ battlePokemon.species = GetMonData(&gPlayerParty[a], MON_DATA_SPECIES);
+ battlePokemon.item = GetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM);
+ for (size = 0; size < 4; size++)
+ {
+ battlePokemon.moves[size] = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + size);
+ battlePokemon.pp[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + size);
+ }
+ battlePokemon.ppBonuses = GetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES);
+ battlePokemon.friendship = GetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP);
+ battlePokemon.experience = GetMonData(&gPlayerParty[a], MON_DATA_EXP);
+ battlePokemon.hpIV = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV);
+ battlePokemon.attackIV = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV);
+ battlePokemon.defenseIV = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV);
+ battlePokemon.speedIV = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV);
+ battlePokemon.spAttackIV = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV);
+ battlePokemon.spDefenseIV = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV);
+ battlePokemon.personality = GetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY);
+ battlePokemon.status1 = GetMonData(&gPlayerParty[a], MON_DATA_STATUS);
+ battlePokemon.level = GetMonData(&gPlayerParty[a], MON_DATA_LEVEL);
+ battlePokemon.hp = GetMonData(&gPlayerParty[a], MON_DATA_HP);
+ battlePokemon.maxHP = GetMonData(&gPlayerParty[a], MON_DATA_MAX_HP);
+ battlePokemon.attack = GetMonData(&gPlayerParty[a], MON_DATA_ATK);
+ battlePokemon.defense = GetMonData(&gPlayerParty[a], MON_DATA_DEF);
+ battlePokemon.speed = GetMonData(&gPlayerParty[a], MON_DATA_SPD);
+ battlePokemon.spAttack = GetMonData(&gPlayerParty[a], MON_DATA_SPATK);
+ battlePokemon.spDefense = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF);
+ battlePokemon.isEgg = GetMonData(&gPlayerParty[a], MON_DATA_IS_EGG);
+ battlePokemon.altAbility = GetMonData(&gPlayerParty[a], MON_DATA_ALT_ABILITY);
+ battlePokemon.otId = GetMonData(&gPlayerParty[a], MON_DATA_OT_ID);
+ GetMonData(&gPlayerParty[a], MON_DATA_NICKNAME, nickname);
+ StringCopy10(battlePokemon.nickname, nickname);
+ GetMonData(&gPlayerParty[a], MON_DATA_OT_NAME, battlePokemon.otName);
+ src = (u8 *)&battlePokemon;
+ for (size = 0; size < sizeof(battlePokemon); size++)
+ buffer[size] = src[size];
+ break;
+ case 1:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPECIES);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 2:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 3:
+ for (size = 0; size < 4; size++)
+ {
+ moveData.moves[size] = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + size);
+ moveData.pp[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + size);
+ }
+ moveData.ppBonuses = GetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES);
+ src = (u8 *)&moveData;
+ for (size = 0; size < sizeof(moveData); size++)
+ buffer[size] = src[size];
+ break;
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - 4);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 8:
+ for (size = 0; size < 4; size++)
+ buffer[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + size);
+ buffer[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES);
+ size++;
+ break;
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9);
+ size = 1;
+ break;
+ case 17:
+ data32 = GetMonData(&gPlayerParty[a], MON_DATA_OT_ID);
+ buffer[0] = (data32 & 0x000000FF);
+ buffer[1] = (data32 & 0x0000FF00) >> 8;
+ buffer[2] = (data32 & 0x00FF0000) >> 16;
+ size = 3;
+ break;
+ case 18:
+ data32 = GetMonData(&gPlayerParty[a], MON_DATA_EXP);
+ buffer[0] = (data32 & 0x000000FF);
+ buffer[1] = (data32 & 0x0000FF00) >> 8;
+ buffer[2] = (data32 & 0x00FF0000) >> 16;
+ size = 3;
+ break;
+ case 19:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_HP_EV);
+ size = 1;
+ break;
+ case 20:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_ATK_EV);
+ size = 1;
+ break;
+ case 21:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_DEF_EV);
+ size = 1;
+ break;
+ case 22:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPD_EV);
+ size = 1;
+ break;
+ case 23:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_EV);
+ size = 1;
+ break;
+ case 24:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_EV);
+ size = 1;
+ break;
+ case 25:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP);
+ size = 1;
+ break;
+ case 26:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_POKERUS);
+ size = 1;
+ break;
+ case 27:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_MET_LOCATION);
+ size = 1;
+ break;
+ case 28:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_MET_LEVEL);
+ size = 1;
+ break;
+ case 29:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_MET_GAME);
+ size = 1;
+ break;
+ case 30:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_POKEBALL);
+ size = 1;
+ break;
+ case 31:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV);
+ buffer[1] = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV);
+ buffer[2] = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV);
+ buffer[3] = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV);
+ buffer[4] = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV);
+ buffer[5] = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV);
+ size = 6;
+ break;
+ case 32:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV);
+ size = 1;
+ break;
+ case 33:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV);
+ size = 1;
+ break;
+ case 34:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV);
+ size = 1;
+ break;
+ case 35:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV);
+ size = 1;
+ break;
+ case 36:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV);
+ size = 1;
+ break;
+ case 37:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV);
+ size = 1;
+ break;
+ case 38:
+ data32 = GetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY);
+ buffer[0] = (data32 & 0x000000FF);
+ buffer[1] = (data32 & 0x0000FF00) >> 8;
+ buffer[2] = (data32 & 0x00FF0000) >> 16;
+ buffer[3] = (data32 & 0xFF000000) >> 24;
+ size = 4;
+ break;
+ case 39:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_CHECKSUM);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 40:
+ data32 = GetMonData(&gPlayerParty[a], MON_DATA_STATUS);
+ buffer[0] = (data32 & 0x000000FF);
+ buffer[1] = (data32 & 0x0000FF00) >> 8;
+ buffer[2] = (data32 & 0x00FF0000) >> 16;
+ buffer[3] = (data32 & 0xFF000000) >> 24;
+ size = 4;
+ break;
+ case 41:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_LEVEL);
+ size = 1;
+ break;
+ case 42:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_HP);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 43:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_MAX_HP);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 44:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_ATK);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 45:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_DEF);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 46:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPD);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 47:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPATK);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 48:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 49:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_COOL);
+ size = 1;
+ break;
+ case 50:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_BEAUTY);
+ size = 1;
+ break;
+ case 51:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_CUTE);
+ size = 1;
+ break;
+ case 52:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SMART);
+ size = 1;
+ break;
+ case 53:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_TOUGH);
+ size = 1;
+ break;
+ case 54:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SHEEN);
+ size = 1;
+ break;
+ case 55:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_COOL_RIBBON);
+ size = 1;
+ break;
+ case 56:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_BEAUTY_RIBBON);
+ size = 1;
+ break;
+ case 57:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_CUTE_RIBBON);
+ size = 1;
+ break;
+ case 58:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SMART_RIBBON);
+ size = 1;
+ break;
+ case 59:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_TOUGH_RIBBON);
+ size = 1;
+ break;
+ }
+ return size;
+}
+
+void PlayerHandlecmd1(void)
+{
+ struct BattlePokemon battleMon; // I think this is a BattlePokemon
+ u8 *src = (u8 *)&gPlayerParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
+ u8 *dst = (u8 *)&battleMon + gBattleBufferA[gActiveBank][1];
+ u8 i;
+
+ for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++)
+ dst[i] = src[i];
+ Emitcmd29(1, gBattleBufferA[gActiveBank][2], dst);
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandleSetAttributes(void)
+{
+ u8 r4;
+ u8 i;
+
+ if (gBattleBufferA[gActiveBank][2] == 0)
+ {
+ dp01_setattr_by_ch1_for_player_pokemon(gBattlePartyID[gActiveBank]);
+ }
+ else
+ {
+ r4 = gBattleBufferA[gActiveBank][2];
+ for (i = 0; i < 6; i++)
+ {
+ if (r4 & 1)
+ dp01_setattr_by_ch1_for_player_pokemon(i);
+ r4 >>= 1;
+ }
+ }
+ PlayerBufferExecCompleted();
+}
+
+// Duplicate of sub_811EC68
+void dp01_setattr_by_ch1_for_player_pokemon(u8 a)
+{
+ struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBank][3];
+ struct UnknownStruct3 *moveData = (struct UnknownStruct3 *)&gBattleBufferA[gActiveBank][3];
+ s32 i;
+
+ switch (gBattleBufferA[gActiveBank][1])
+ {
+ case 0:
+ {
+ u8 iv;
+
+ SetMonData(&gPlayerParty[a], MON_DATA_SPECIES, (u8 *)&battlePokemon->species);
+ SetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM, (u8 *)&battlePokemon->item);
+ for (i = 0; i < 4; i++)
+ {
+ SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + i, (u8 *)&battlePokemon->moves[i]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PP1 + i, (u8 *)&battlePokemon->pp[i]);
+ }
+ SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, (u8 *)&battlePokemon->ppBonuses);
+ SetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP, (u8 *)&battlePokemon->friendship);
+ SetMonData(&gPlayerParty[a], MON_DATA_EXP, (u8 *)&battlePokemon->experience);
+ iv = battlePokemon->hpIV;
+ SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, (u8 *)&iv);
+ iv = battlePokemon->attackIV;
+ SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, (u8 *)&iv);
+ iv = battlePokemon->defenseIV;
+ SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, (u8 *)&iv);
+ iv = battlePokemon->speedIV;
+ SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, (u8 *)&iv);
+ iv = battlePokemon->spAttackIV;
+ SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, (u8 *)&iv);
+ iv = battlePokemon->spDefenseIV;
+ SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, (u8 *)&iv);
+ SetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY, (u8 *)&battlePokemon->personality);
+ SetMonData(&gPlayerParty[a], MON_DATA_STATUS, (u8 *)&battlePokemon->status1);
+ SetMonData(&gPlayerParty[a], MON_DATA_LEVEL, (u8 *)&battlePokemon->level);
+ SetMonData(&gPlayerParty[a], MON_DATA_HP, (u8 *)&battlePokemon->hp);
+ SetMonData(&gPlayerParty[a], MON_DATA_MAX_HP, (u8 *)&battlePokemon->maxHP);
+ SetMonData(&gPlayerParty[a], MON_DATA_ATK, (u8 *)&battlePokemon->attack);
+ SetMonData(&gPlayerParty[a], MON_DATA_DEF, (u8 *)&battlePokemon->defense);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPD, (u8 *)&battlePokemon->speed);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPATK, (u8 *)&battlePokemon->spAttack);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPDEF, (u8 *)&battlePokemon->spDefense);
+ }
+ break;
+ case 1:
+ SetMonData(&gPlayerParty[a], MON_DATA_SPECIES, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 2:
+ SetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 3:
+ for (i = 0; i < 4; i++)
+ {
+ SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + i, (u8 *)&moveData->moves[i]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PP1 + i, (u8 *)&moveData->pp[i]);
+ }
+ SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, &moveData->ppBonuses);
+ break;
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - 4, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 8:
+ SetMonData(&gPlayerParty[a], MON_DATA_PP1, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PP2, &gBattleBufferA[gActiveBank][4]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PP3, &gBattleBufferA[gActiveBank][5]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PP4, &gBattleBufferA[gActiveBank][6]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBank][7]);
+ break;
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ SetMonData(&gPlayerParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 17:
+ SetMonData(&gPlayerParty[a], MON_DATA_OT_ID, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 18:
+ SetMonData(&gPlayerParty[a], MON_DATA_EXP, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 19:
+ SetMonData(&gPlayerParty[a], MON_DATA_HP_EV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 20:
+ SetMonData(&gPlayerParty[a], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 21:
+ SetMonData(&gPlayerParty[a], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 22:
+ SetMonData(&gPlayerParty[a], MON_DATA_SPD_EV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 23:
+ SetMonData(&gPlayerParty[a], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 24:
+ SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 25:
+ SetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 26:
+ SetMonData(&gPlayerParty[a], MON_DATA_POKERUS, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 27:
+ SetMonData(&gPlayerParty[a], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 28:
+ SetMonData(&gPlayerParty[a], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 29:
+ SetMonData(&gPlayerParty[a], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 30:
+ SetMonData(&gPlayerParty[a], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 31:
+ SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][4]);
+ SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][5]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][6]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][7]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][8]);
+ break;
+ case 32:
+ SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 33:
+ SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 34:
+ SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 35:
+ SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 36:
+ SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 37:
+ SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 38:
+ SetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 39:
+ SetMonData(&gPlayerParty[a], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 40:
+ SetMonData(&gPlayerParty[a], MON_DATA_STATUS, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 41:
+ SetMonData(&gPlayerParty[a], MON_DATA_LEVEL, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 42:
+ SetMonData(&gPlayerParty[a], MON_DATA_HP, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 43:
+ SetMonData(&gPlayerParty[a], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 44:
+ SetMonData(&gPlayerParty[a], MON_DATA_ATK, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 45:
+ SetMonData(&gPlayerParty[a], MON_DATA_DEF, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 46:
+ SetMonData(&gPlayerParty[a], MON_DATA_SPD, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 47:
+ SetMonData(&gPlayerParty[a], MON_DATA_SPATK, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 48:
+ SetMonData(&gPlayerParty[a], MON_DATA_SPDEF, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 49:
+ SetMonData(&gPlayerParty[a], MON_DATA_COOL, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 50:
+ SetMonData(&gPlayerParty[a], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 51:
+ SetMonData(&gPlayerParty[a], MON_DATA_CUTE, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 52:
+ SetMonData(&gPlayerParty[a], MON_DATA_SMART, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 53:
+ SetMonData(&gPlayerParty[a], MON_DATA_TOUGH, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 54:
+ SetMonData(&gPlayerParty[a], MON_DATA_SHEEN, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 55:
+ SetMonData(&gPlayerParty[a], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 56:
+ SetMonData(&gPlayerParty[a], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 57:
+ SetMonData(&gPlayerParty[a], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 58:
+ SetMonData(&gPlayerParty[a], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 59:
+ SetMonData(&gPlayerParty[a], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ break;
+ }
+ sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+}
+
+void PlayerHandlecmd3(void)
+{
+ u8 *dst = (u8 *)&gPlayerParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
+ u8 i;
+
+ for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++)
+ dst[i] = gBattleBufferA[gActiveBank][3 + i];
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandleLoadPokeSprite(void)
+{
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
+ gBattleBankFunc[gActiveBank] = bx_0802E404;
+}
+
+void PlayerHandleSendOutPoke(void)
+{
+ sub_8032AA8(gActiveBank, gBattleBufferA[gActiveBank][2]);
+ gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1];
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ gActionSelectionCursor[gActiveBank] = 0;
+ gMoveSelectionCursor[gActiveBank] = 0;
+ sub_802F934(gActiveBank, gBattleBufferA[gActiveBank][2]);
+ gBattleBankFunc[gActiveBank] = sub_802D798;
+}
+
+void sub_802F934(u8 bank, u8 b)
+{
+ u16 species;
+
+ sub_8032AA8(bank, b);
+ gBattlePartyID[bank] = gBattleBufferA[bank][1];
+ species = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
+ gUnknown_0300434C[bank] = CreateInvisibleSpriteWithCallback(sub_80312F0);
+ GetMonSpriteTemplate_803C56C(species, GetBankIdentity(bank));
+ gObjectBankIDs[bank] = CreateSprite(
+ &gUnknown_02024E8C,
+ sub_8077ABC(bank, 2),
+ sub_8077F68(bank),
+ sub_8079E90(bank));
+ gSprites[gUnknown_0300434C[bank]].data1 = gObjectBankIDs[bank];
+ gSprites[gObjectBankIDs[bank]].data0 = bank;
+ gSprites[gObjectBankIDs[bank]].data2 = species;
+ gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank;
+ StartSpriteAnim(&gSprites[gObjectBankIDs[bank]], gBattleMonForms[bank]);
+ gSprites[gObjectBankIDs[bank]].invisible = TRUE;
+ gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy;
+ gSprites[gUnknown_0300434C[bank]].data0 = sub_8046400(0, 0xFF);
+}
+
+void PlayerHandleReturnPokeToBall(void)
+{
+ if (gBattleBufferA[gActiveBank][1] == 0)
+ {
+ ewram17810[gActiveBank].unk4 = 0;
+ gBattleBankFunc[gActiveBank] = sub_802FB2C;
+ }
+ else
+ {
+ FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
+ DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ sub_8043DB0(gHealthboxIDs[gActiveBank]);
+ PlayerBufferExecCompleted();
+ }
+}
+
+void sub_802FB2C(void)
+{
+ switch (ewram17810[gActiveBank].unk4)
+ {
+ case 0:
+ if (ewram17800[gActiveBank].substituteSprite)
+ move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
+ ewram17810[gActiveBank].unk4 = 1;
+ break;
+ case 1:
+ if (!ewram17810[gActiveBank].unk0_6)
+ {
+ ewram17810[gActiveBank].unk4 = 0;
+ move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 1);
+ gBattleBankFunc[gActiveBank] = sub_802DEAC;
+ }
+ }
+}
+
+void PlayerHandleTrainerThrow(void)
+{
+ s16 r7;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ if (GetBankIdentity(gActiveBank) & 2)
+ r7 = 16;
+ else
+ r7 = -16;
+ }
+ else
+ {
+ r7 = 0;
+ }
+ LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBank);
+ GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank));
+ gObjectBankIDs[gActiveBank] = CreateSprite(
+ &gUnknown_02024E8C,
+ r7 + 80,
+ (8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80,
+ sub_8079E90(gActiveBank));
+ gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
+ gSprites[gObjectBankIDs[gActiveBank]].pos2.x = 240;
+ gSprites[gObjectBankIDs[gActiveBank]].data0 = -2;
+ gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0;
+ gBattleBankFunc[gActiveBank] = sub_802D204;
+}
+
+void PlayerHandleTrainerSlide(void)
+{
+ LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBank);
+ GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank));
+ gObjectBankIDs[gActiveBank] = CreateSprite(
+ &gUnknown_02024E8C,
+ 80,
+ (8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80,
+ 30);
+ gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
+ gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -96;
+ gSprites[gObjectBankIDs[gActiveBank]].data0 = 2;
+ gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0;
+ gBattleBankFunc[gActiveBank] = sub_802D23C;
+}
+
+void PlayerHandleTrainerSlideBack(void)
+{
+ oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
+ gSprites[gObjectBankIDs[gActiveBank]].data0 = 50;
+ gSprites[gObjectBankIDs[gActiveBank]].data2 = -40;
+ gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y;
+ gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34;
+ oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy);
+ StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1);
+ gBattleBankFunc[gActiveBank] = sub_802D274;
+}
+
+void PlayerHandlecmd10(void)
+{
+ if (ewram17810[gActiveBank].unk4 == 0)
+ {
+ if (ewram17800[gActiveBank].substituteSprite)
+ move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
+ ewram17810[gActiveBank].unk4++;
+ }
+ else
+ {
+ if (ewram17810[gActiveBank].unk0_6 == 0)
+ {
+ ewram17810[gActiveBank].unk4 = 0;
+ sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ PlaySE12WithPanning(SE_POKE_DEAD, -64);
+ gSprites[gObjectBankIDs[gActiveBank]].data1 = 0;
+ gSprites[gObjectBankIDs[gActiveBank]].data2 = 5;
+ gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80105EC;
+ gBattleBankFunc[gActiveBank] = sub_802DE10;
+ }
+ }
+}
+
+void PlayerHandlecmd11(void)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, 0);
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandlecmd12(void)
+{
+ ewram17840.unk8 = 4;
+ gDoingBattleAnim = 1;
+ move_anim_start_t4(gActiveBank, gActiveBank, GetBankByPlayerAI(1), 3);
+ gBattleBankFunc[gActiveBank] = bx_wait_t1;
+}
+
+void PlayerHandleBallThrow(void)
+{
+ u8 var = gBattleBufferA[gActiveBank][1];
+
+ ewram17840.unk8 = var;
+ gDoingBattleAnim = 1;
+ move_anim_start_t4(gActiveBank, gActiveBank, GetBankByPlayerAI(1), 3);
+ gBattleBankFunc[gActiveBank] = bx_wait_t1;
+}
+
+void PlayerHandlePuase(void)
+{
+ u8 var = gBattleBufferA[gActiveBank][1];
+
+ // WTF is this??
+ while (var != 0)
+ var--;
+
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandleMoveAnimation(void)
+{
+ if (!mplay_80342A4(gActiveBank))
+ {
+ u16 r0 = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8);
+
+ gUnknown_0202F7C4 = gBattleBufferA[gActiveBank][3];
+ gMovePowerMoveAnim = gBattleBufferA[gActiveBank][4] | (gBattleBufferA[gActiveBank][5] << 8);
+ gMoveDmgMoveAnim = gBattleBufferA[gActiveBank][6] | (gBattleBufferA[gActiveBank][7] << 8) | (gBattleBufferA[gActiveBank][8] << 16) | (gBattleBufferA[gActiveBank][9] << 24);
+ gHappinessMoveAnim = gBattleBufferA[gActiveBank][10];
+ gWeatherMoveAnim = gBattleBufferA[gActiveBank][12] | (gBattleBufferA[gActiveBank][13] << 8);
+ gDisableStructMoveAnim = (u32 *)&gBattleBufferA[gActiveBank][16];
+ gPID_perBank[gActiveBank] = *gDisableStructMoveAnim;
+ if (sub_8031720(r0, gUnknown_0202F7C4) != 0)
+ {
+ // Dead code. sub_8031720 always returns 0.
+ PlayerBufferExecCompleted();
+ }
+ else
+ {
+ ewram17810[gActiveBank].unk4 = 0;
+ gBattleBankFunc[gActiveBank] = sub_8030190;
+ }
+ }
+}
+
+void sub_8030190(void)
+{
+ u16 r4 = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8);
+ u8 r7 = gBattleBufferA[gActiveBank][11];
+
+ switch (ewram17810[gActiveBank].unk4)
+ {
+ case 0:
+ if (ewram17800[gActiveBank].substituteSprite == 1 && ewram17800[gActiveBank].unk0_3 == 0)
+ {
+ ewram17800[gActiveBank].unk0_3 = 1;
+ move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
+ }
+ ewram17810[gActiveBank].unk4 = 1;
+ break;
+ case 1:
+ if (ewram17810[gActiveBank].unk0_6 == 0)
+ {
+ sub_80326EC(0);
+ ExecuteMoveAnim(r4);
+ ewram17810[gActiveBank].unk4 = 2;
+ }
+ break;
+ case 2:
+ gAnimScriptCallback();
+ if (!gAnimScriptActive)
+ {
+ sub_80326EC(1);
+ if (ewram17800[gActiveBank].substituteSprite == 1 && r7 < 2)
+ {
+ move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
+ ewram17800[gActiveBank].unk0_3 = 0;
+ }
+ ewram17810[gActiveBank].unk4 = 3;
+ }
+ break;
+ case 3:
+ if (ewram17810[gActiveBank].unk0_6 == 0)
+ {
+ sub_8031F24();
+ sub_80324BC(gActiveBank, gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ ewram17810[gActiveBank].unk4 = 0;
+ PlayerBufferExecCompleted();
+ }
+ break;
+ }
+}
+
+void PlayerHandlePrintString(void)
+{
+ gUnknown_030042A4 = 0;
+ gUnknown_030042A0 = 0;
+ BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]);
+ sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 0x90, 2, 15);
+ gBattleBankFunc[gActiveBank] = sub_802DF18;
+}
+
+void PlayerHandlePrintStringPlayerOnly(void)
+{
+ if (GetBankSide(gActiveBank) == 0)
+ PlayerHandlePrintString();
+ else
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandlecmd18(void)
+{
+ int r4;
+
+ gUnknown_030042A4 = 0;
+ gUnknown_030042A0 = 160;
+ FillWindowRect(&gUnknown_03004210, 10, 2, 15, 27, 18);
+ FillWindowRect(&gUnknown_03004210, 10, 2, 35, 16, 38);
+
+ gBattleBankFunc[gActiveBank] = sub_802C098;
+
+ InitWindow(&gUnknown_03004210, gUnknown_08400CF3, 400, 18, 35);
+ sub_8002F44(&gUnknown_03004210);
+ sub_814A5C0(0, 0xFFFF, 12, 11679, 0);
+
+ for (r4 = 0; r4 < 4; r4++)
+ nullsub_8(r4);
+
+ sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
+
+ StrCpyDecodeToDisplayedStringBattle((u8 *) gUnknown_08400CA8);
+ InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_803037C_TILE_DATA_OFFSET, 2, 35);
+ sub_8002F44(&gUnknown_03004210);
+}
+
+void PlayerHandlecmd19()
+{
+}
+
+void PlayerHandlecmd20(void)
+{
+ sub_814A5C0(0, 0xFFFF, 12, 0x2D9F, 0);
+ sub_80304A8();
+ gBattleBankFunc[gActiveBank] = sub_802C68C;
+}
+
+void sub_80304A8(void)
+{
+ gUnknown_030042A4 = 0;
+ gUnknown_030042A0 = 320;
+ sub_802E1B0();
+ gUnknown_03004344 = 0xFF;
+ sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0);
+ if (gBattleBufferA[gActiveBank][2] != 1)
+ {
+ InitWindow(&gUnknown_03004210, gUnknown_08400D38, 656, 23, 55);
+ sub_8002F44(&gUnknown_03004210);
+ }
+ sub_802E220();
+ sub_802E2D4();
+}
+
+void PlayerHandleOpenBag(void)
+{
+ s32 i;
+
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gBattleBankFunc[gActiveBank] = sub_802E004;
+ gBankInMenu = gActiveBank;
+ for (i = 0; i < 3; i++)
+ gUnknown_02038470[i] = gBattleBufferA[gActiveBank][1 + i];
+}
+
+void PlayerHandlecmd22(void)
+{
+ s32 i;
+
+ gUnknown_0300434C[gActiveBank] = CreateTask(TaskDummy, 0xFF);
+ gTasks[gUnknown_0300434C[gActiveBank]].data[0] = gBattleBufferA[gActiveBank][1] & 0xF;
+ ewram[0x16054] = gBattleBufferA[gActiveBank][1] >> 4;
+ ewram[0x1609D] = gBattleBufferA[gActiveBank][2];
+ ewram[0x160C0] = gBattleBufferA[gActiveBank][3];
+ for (i = 0; i < 3; i++)
+ gUnknown_02038470[i] = gBattleBufferA[gActiveBank][4 + i];
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gBattleBankFunc[gActiveBank] = sub_802DF30;
+ gBankInMenu = gActiveBank;
+}
+
+void PlayerHandlecmd23(void)
+{
+ BattleMusicStop();
+ BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, 0);
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandleHealthBarUpdate(void)
+{
+ s16 r7;
+
+ load_gfxc_health_bar(0);
+ r7 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ if (r7 != 0x7FFF)
+ {
+ u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
+ u32 curHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_HP);
+
+ sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, curHP, r7);
+ }
+ else
+ {
+ u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
+
+ sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, 0, r7);
+ sub_80440EC(gHealthboxIDs[gActiveBank], 0, 0);
+ }
+ gBattleBankFunc[gActiveBank] = bx_t1_healthbar_update;
+}
+
+void PlayerHandleExpBarUpdate(void)
+{
+ u8 r7 = gBattleBufferA[gActiveBank][1];
+
+ if (GetMonData(&gPlayerParty[r7], MON_DATA_LEVEL) >= 100)
+ {
+ PlayerBufferExecCompleted();
+ }
+ else
+ {
+ u16 r4;
+ u8 taskId;
+
+ load_gfxc_health_bar(1);
+ GetMonData(&gPlayerParty[r7], MON_DATA_SPECIES); // unused return value
+ r4 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ taskId = CreateTask(sub_802D924, 10);
+ gTasks[taskId].data[0] = r7;
+ gTasks[taskId].data[1] = r4;
+ gTasks[taskId].data[2] = gActiveBank;
+ gBattleBankFunc[gActiveBank] = nullsub_91;
+ }
+}
+
+void PlayerHandleStatusIconUpdate(void)
+{
+ if (!mplay_80342A4(gActiveBank))
+ {
+ sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 9);
+ ewram17810[gActiveBank].unk0_4 = 0;
+ gBattleBankFunc[gActiveBank] = sub_802E434;
+ }
+}
+
+void PlayerHandleStatusAnimation(void)
+{
+ if (!mplay_80342A4(gActiveBank))
+ {
+ move_anim_start_t2_for_situation(
+ gBattleBufferA[gActiveBank][1],
+ gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8) | (gBattleBufferA[gActiveBank][4] << 16) | (gBattleBufferA[gActiveBank][5] << 24));
+ gBattleBankFunc[gActiveBank] = sub_802E434;
+ }
+}
+
+void PlayerHandleStatusXor(void)
+{
+ u8 val = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_STATUS) ^ gBattleBufferA[gActiveBank][1];
+
+ SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_STATUS, &val);
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandlecmd29(void)
+{
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandleDMATransfer(void)
+{
+ u32 val1 = gBattleBufferA[gActiveBank][1]
+ | (gBattleBufferA[gActiveBank][2] << 8)
+ | (gBattleBufferA[gActiveBank][3] << 16)
+ | (gBattleBufferA[gActiveBank][4] << 24);
+ u16 val2 = gBattleBufferA[gActiveBank][5] | (gBattleBufferA[gActiveBank][6] << 8);
+
+ const u8 *src = &gBattleBufferA[gActiveBank][7];
+ u8 *dst = (u8 *)val1;
+ u32 size = val2;
+
+ while (1)
+ {
+ if (size <= 0x1000)
+ {
+ DmaCopy16(3, src, dst, size);
+ break;
+ }
+ DmaCopy16(3, src, dst, 0x1000);
+ src += 0x1000;
+ dst += 0x1000;
+ size -= 0x1000;
+ }
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandlecmd31(void)
+{
+ PlayBGM(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandlecmd32(void)
+{
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandlecmd33(void)
+{
+ Emitcmd33(1, 0, 0);
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandlecmd34(void)
+{
+ Emitcmd34(1, 0, 0);
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandlecmd35(void)
+{
+ Emitcmd35(1, 0);
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandlecmd36(void)
+{
+ Emitcmd36(1, 0);
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandlecmd37(void)
+{
+ gUnknown_020238C8.unk0_0 = 0;
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandlecmd38(void)
+{
+ gUnknown_020238C8.unk0_0 = gBattleBufferA[gActiveBank][1];
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandlecmd39(void)
+{
+ gUnknown_020238C8.unk0_7 = 0;
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandlecmd40(void)
+{
+ gUnknown_020238C8.unk0_7 ^= 1;
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandleHitAnimation(void)
+{
+ if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE)
+ {
+ PlayerBufferExecCompleted();
+ }
+ else
+ {
+ gDoingBattleAnim = 1;
+ gSprites[gObjectBankIDs[gActiveBank]].data1 = 0;
+ sub_8047858(gActiveBank);
+ gBattleBankFunc[gActiveBank] = bx_blink_t1;
+ }
+}
+
+void PlayerHandlecmd42(void)
+{
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandleEffectivenessSound(void)
+{
+ s8 pan;
+
+ if (GetBankSide(gActiveBank) == 0)
+ pan = -64;
+ else
+ pan = 63;
+ PlaySE12WithPanning(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8), pan);
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandlecmd44(void)
+{
+ PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandleFaintingCry(void)
+{
+ u16 species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
+
+ PlayCry3(species, -25, 5);
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandleIntroSlide(void)
+{
+ sub_80E43C0(gBattleBufferA[gActiveBank][1]);
+ gUnknown_02024DE8 |= 1;
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandleTrainerBallThrow(void)
+{
+ u8 paletteNum;
+ u8 taskId;
+
+ oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
+ gSprites[gObjectBankIDs[gActiveBank]].data0 = 50;
+ gSprites[gObjectBankIDs[gActiveBank]].data2 = -40;
+ gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y;
+ gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34;
+ gSprites[gObjectBankIDs[gActiveBank]].data5 = gActiveBank;
+ oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], sub_8030E38);
+ StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1);
+ paletteNum = AllocSpritePalette(0xD6F8);
+ LoadCompressedPalette(gTrainerBackPicPaletteTable[gSaveBlock2.playerGender].data, 0x100 + paletteNum * 16, 32);
+ gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = paletteNum;
+ taskId = CreateTask(task05_08033660, 5);
+ gTasks[taskId].data[0] = gActiveBank;
+ if (ewram17810[gActiveBank].unk0_0)
+ gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0;
+ ewram17810[4].unk9 |= 1;
+ gBattleBankFunc[gActiveBank] = nullsub_91;
+}
+
+void sub_8030E38(struct Sprite *sprite)
+{
+ u8 r4 = sprite->data5;
+
+ FreeSpriteOamMatrix(sprite);
+ FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum));
+ DestroySprite(sprite);
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[r4]], r4);
+ StartSpriteAnim(&gSprites[gObjectBankIDs[r4]], 0);
+}
+
+void task05_08033660(u8 taskId)
+{
+ if (gTasks[taskId].data[1] < 31)
+ {
+ gTasks[taskId].data[1]++;
+ }
+ else
+ {
+ u8 savedActiveBank = gActiveBank;
+
+ gActiveBank = gTasks[taskId].data[0];
+ if (!IsDoubleBattle() || (gBattleTypeFlags & 0x40))
+ {
+ gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
+ sub_802F934(gActiveBank, 0);
+ }
+ else
+ {
+ gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
+ sub_802F934(gActiveBank, 0);
+ gActiveBank ^= 2;
+ gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ sub_802F934(gActiveBank, 0);
+ gActiveBank ^= 2;
+ }
+ gBattleBankFunc[gActiveBank] = sub_802D500;
+ gActiveBank = savedActiveBank;
+ DestroyTask(taskId);
+ }
+}
+
+void PlayerHandlecmd48(void)
+{
+ if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == 0)
+ {
+ PlayerBufferExecCompleted();
+ }
+ else
+ {
+ ewram17810[gActiveBank].unk0_0 = 1;
+ gUnknown_02024E68[gActiveBank] = sub_8044804(gActiveBank, (struct BattleInterfaceStruct2 *)&gBattleBufferA[gActiveBank][4], gBattleBufferA[gActiveBank][1], gBattleBufferA[gActiveBank][2]);
+ ewram17810[gActiveBank].unk5 = 0;
+ if (gBattleBufferA[gActiveBank][2] != 0)
+ ewram17810[gActiveBank].unk5 = 0x5D;
+ gBattleBankFunc[gActiveBank] = sub_8031064;
+ }
+}
+
+void sub_8031064(void)
+{
+ if (ewram17810[gActiveBank].unk5++ > 0x5C)
+ {
+ ewram17810[gActiveBank].unk5 = 0;
+ PlayerBufferExecCompleted();
+ }
+}
+
+void PlayerHandlecmd49(void)
+{
+ if (ewram17810[gActiveBank].unk0_0)
+ gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0;
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandlecmd50(void)
+{
+ dp11b_obj_free(gActiveBank, 1);
+ dp11b_obj_free(gActiveBank, 0);
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandleSpriteInvisibility(void)
+{
+ if (sub_8078874(gActiveBank))
+ {
+ gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
+ sub_8031F88(gActiveBank);
+ }
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandleBattleAnimation(void)
+{
+ if (!mplay_80342A4(gActiveBank))
+ {
+ u8 val2 = gBattleBufferA[gActiveBank][1];
+ u16 val = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+
+ if (move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, val2, val))
+ PlayerBufferExecCompleted();
+ else
+ gBattleBankFunc[gActiveBank] = sub_802E460;
+ }
+}
+
+void PlayerHandleLinkStandbyMsg(void)
+{
+ switch (gBattleBufferA[gActiveBank][1])
+ {
+ case 0:
+ b_link_standby_message();
+ // fall through
+ case 1:
+ dp11b_obj_free(gActiveBank, 1);
+ dp11b_obj_free(gActiveBank, 0);
+ break;
+ case 2:
+ b_link_standby_message();
+ break;
+ }
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandleResetActionMoveSelection(void)
+{
+ switch (gBattleBufferA[gActiveBank][1])
+ {
+ case 0:
+ gActionSelectionCursor[gActiveBank] = 0;
+ gMoveSelectionCursor[gActiveBank] = 0;
+ break;
+ case 1:
+ gActionSelectionCursor[gActiveBank] = 0;
+ break;
+ case 2:
+ gMoveSelectionCursor[gActiveBank] = 0;
+ break;
+ }
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandlecmd55(void)
+{
+ gBattleOutcome = gBattleBufferA[gActiveBank][1];
+ FadeOutMapMusic(5);
+ BeginFastPaletteFade(3);
+ PlayerBufferExecCompleted();
+ gBattleBankFunc[gActiveBank] = sub_802D18C;
+}
+
+void PlayerHandlecmd56(void)
+{
+}
diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c
new file mode 100644
index 000000000..e05578c31
--- /dev/null
+++ b/src/battle_controller_safari.c
@@ -0,0 +1,709 @@
+#include "global.h"
+#include "battle_anim_81258BC.h"
+#include "battle.h"
+#include "battle_message.h"
+#include "data2.h"
+#include "link.h"
+#include "main.h"
+#include "menu_cursor.h"
+#include "palette.h"
+#include "rom3.h"
+#include "songs.h"
+#include "sound.h"
+#include "text.h"
+#include "util.h"
+
+extern struct Window gUnknown_03004210;
+extern u8 gDisplayedStringBattle[];
+extern u8 gActionSelectionCursor[];
+
+extern const u8 gUnknown_08400CBB[];
+extern u8 gActiveBank;
+extern const u8 gUnknown_08400D15[];
+
+extern void *gBattleBankFunc[];
+extern u16 gUnknown_030042A0;
+extern u16 gUnknown_030042A4;
+extern u8 gBattleBufferA[][0x200];
+extern bool8 gDoingBattleAnim;
+extern u8 gObjectBankIDs[];
+extern struct SpriteTemplate gUnknown_02024E8C;
+extern u16 gBattleTypeFlags;
+extern u32 gBattleExecBuffer;
+extern u16 gScriptItemId;
+extern MainCallback gPreBattleCallback1;
+extern u8 gBankInMenu;
+extern u8 gHealthboxIDs[];
+extern u16 gBattlePartyID[];
+extern u16 gUnknown_02024DE8;
+extern u8 gBattleOutcome;
+
+extern u8 GetBankSide(u8);
+extern u8 GetBankByPlayerAI(u8);
+extern u8 GetBankIdentity(u8);
+extern void LoadPlayerTrainerBankSprite();
+extern u8 sub_8079E90();
+extern void sub_80313A0(struct Sprite *);
+extern void sub_810BADC(void);
+extern void sub_8045A5C();
+extern void sub_80E43C0();
+extern void sub_804777C();
+extern void sub_8043DFC();
+extern bool8 move_anim_start_t3();
+
+#if ENGLISH
+#define SUB_812BB10_TILE_DATA_OFFSET 440
+#elif GERMAN
+#define SUB_812BB10_TILE_DATA_OFFSET 444
+#endif
+
+// this file's functions
+void SafariHandleGetAttributes(void);
+void SafariHandlecmd1(void);
+void SafariHandleSetAttributes(void);
+void SafariHandlecmd3(void);
+void SafariHandleLoadPokeSprite(void);
+void SafariHandleSendOutPoke(void);
+void SafariHandleReturnPokeToBall(void);
+void SafariHandleTrainerThrow(void);
+void SafariHandleTrainerSlide(void);
+void SafariHandleTrainerSlideBack(void);
+void SafariHandlecmd10(void);
+void SafariHandlecmd11(void);
+void SafariHandlecmd12(void);
+void SafariHandleBallThrow(void);
+void SafariHandlePuase(void);
+void SafariHandleMoveAnimation(void);
+void SafariHandlePrintString(void);
+void SafariHandlePrintStringPlayerOnly(void);
+void SafariHandlecmd18(void);
+void SafariHandlecmd19(void);
+void SafariHandlecmd20(void);
+void SafariHandleOpenBag(void);
+void SafariHandlecmd22(void);
+void SafariHandlecmd23(void);
+void SafariHandleHealthBarUpdate(void);
+void SafariHandleExpBarUpdate(void);
+void SafariHandleStatusIconUpdate(void);
+void SafariHandleStatusAnimation(void);
+void SafariHandleStatusXor(void);
+void SafariHandlecmd29(void);
+void SafariHandleDMATransfer(void);
+void SafariHandlecmd31(void);
+void SafariHandlecmd32(void);
+void SafariHandlecmd33(void);
+void SafariHandlecmd34(void);
+void SafariHandlecmd35(void);
+void SafariHandlecmd36(void);
+void SafariHandlecmd37(void);
+void SafariHandlecmd38(void);
+void SafariHandlecmd39(void);
+void SafariHandlecmd40(void);
+void SafariHandleHitAnimation(void);
+void SafariHandlecmd42(void);
+void SafariHandleEffectivenessSound(void);
+void SafariHandlecmd44(void);
+void SafariHandleFaintingCry(void);
+void SafariHandleIntroSlide(void);
+void SafariHandleTrainerBallThrow(void);
+void SafariHandlecmd48(void);
+void SafariHandlecmd49(void);
+void SafariHandlecmd50(void);
+void SafariHandleSpriteInvisibility(void);
+void SafariHandleBattleAnimation(void);
+void SafariHandleLinkStandbyMsg(void);
+void SafariHandleResetActionMoveSelection(void);
+void SafariHandlecmd55(void);
+void SafariHandlecmd56(void);
+
+// const data
+typedef void (*BattleBufferCmd) (void);
+const BattleBufferCmd gSafariBufferCommands[] =
+{
+ SafariHandleGetAttributes,
+ SafariHandlecmd1,
+ SafariHandleSetAttributes,
+ SafariHandlecmd3,
+ SafariHandleLoadPokeSprite,
+ SafariHandleSendOutPoke,
+ SafariHandleReturnPokeToBall,
+ SafariHandleTrainerThrow,
+ SafariHandleTrainerSlide,
+ SafariHandleTrainerSlideBack,
+ SafariHandlecmd10,
+ SafariHandlecmd11,
+ SafariHandlecmd12,
+ SafariHandleBallThrow,
+ SafariHandlePuase,
+ SafariHandleMoveAnimation,
+ SafariHandlePrintString,
+ SafariHandlePrintStringPlayerOnly,
+ SafariHandlecmd18,
+ SafariHandlecmd19,
+ SafariHandlecmd20,
+ SafariHandleOpenBag,
+ SafariHandlecmd22,
+ SafariHandlecmd23,
+ SafariHandleHealthBarUpdate,
+ SafariHandleExpBarUpdate,
+ SafariHandleStatusIconUpdate,
+ SafariHandleStatusAnimation,
+ SafariHandleStatusXor,
+ SafariHandlecmd29,
+ SafariHandleDMATransfer,
+ SafariHandlecmd31,
+ SafariHandlecmd32,
+ SafariHandlecmd33,
+ SafariHandlecmd34,
+ SafariHandlecmd35,
+ SafariHandlecmd36,
+ SafariHandlecmd37,
+ SafariHandlecmd38,
+ SafariHandlecmd39,
+ SafariHandlecmd40,
+ SafariHandleHitAnimation,
+ SafariHandlecmd42,
+ SafariHandleEffectivenessSound,
+ SafariHandlecmd44,
+ SafariHandleFaintingCry,
+ SafariHandleIntroSlide,
+ SafariHandleTrainerBallThrow,
+ SafariHandlecmd48,
+ SafariHandlecmd49,
+ SafariHandlecmd50,
+ SafariHandleSpriteInvisibility,
+ SafariHandleBattleAnimation,
+ SafariHandleLinkStandbyMsg,
+ SafariHandleResetActionMoveSelection,
+ SafariHandlecmd55,
+ SafariHandlecmd56,
+};
+// code
+
+void SafariBufferExecCompleted(void);
+void bx_wait_t6(void);
+void sub_812B65C(void);
+void SafariBufferRunCommand(void);
+void sub_812B758(void);
+
+void unref_sub_812B464(void)
+{
+}
+
+void SetBankFuncToSafariBufferRunCommand(void)
+{
+ gBattleBankFunc[gActiveBank] = SafariBufferRunCommand;
+}
+
+void SafariBufferRunCommand(void)
+{
+ if (gBattleExecBuffer & gBitTable[gActiveBank])
+ {
+ if (gBattleBufferA[gActiveBank][0] < 0x39)
+ gSafariBufferCommands[gBattleBufferA[gActiveBank][0]]();
+ else
+ SafariBufferExecCompleted();
+ }
+}
+
+void bx_battle_menu_t6_2(void)
+{
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ DestroyMenuCursor();
+
+ // Useless switch statement.
+ switch (gActionSelectionCursor[gActiveBank])
+ {
+ case 0:
+ Emitcmd33(1, 5, 0);
+ break;
+ case 1:
+ Emitcmd33(1, 6, 0);
+ break;
+ case 2:
+ Emitcmd33(1, 7, 0);
+ break;
+ case 3:
+ Emitcmd33(1, 8, 0);
+ break;
+ }
+ SafariBufferExecCompleted();
+ }
+ else if (gMain.newKeys & DPAD_LEFT)
+ {
+ if (gActionSelectionCursor[gActiveBank] & 1)
+ {
+ PlaySE(SE_SELECT);
+ nullsub_8(gActionSelectionCursor[gActiveBank]);
+ gActionSelectionCursor[gActiveBank] ^= 1;
+ sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
+ }
+ }
+ else if (gMain.newKeys & DPAD_RIGHT)
+ {
+ if (!(gActionSelectionCursor[gActiveBank] & 1))
+ {
+ PlaySE(SE_SELECT);
+ nullsub_8(gActionSelectionCursor[gActiveBank]);
+ gActionSelectionCursor[gActiveBank] ^= 1;
+ sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
+ }
+ }
+ else if (gMain.newKeys & DPAD_UP)
+ {
+ if (gActionSelectionCursor[gActiveBank] & 2)
+ {
+ PlaySE(SE_SELECT);
+ nullsub_8(gActionSelectionCursor[gActiveBank]);
+ gActionSelectionCursor[gActiveBank] ^= 2;
+ sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
+ }
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ if (!(gActionSelectionCursor[gActiveBank] & 2))
+ {
+ PlaySE(SE_SELECT);
+ nullsub_8(gActionSelectionCursor[gActiveBank]);
+ gActionSelectionCursor[gActiveBank] ^= 2;
+ sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
+ }
+ }
+}
+
+void sub_812B65C(void)
+{
+ if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ SafariBufferExecCompleted();
+}
+
+void sub_812B694(void)
+{
+ if (gUnknown_03004210.state == 0)
+ SafariBufferExecCompleted();
+}
+
+void sub_812B6AC(void)
+{
+ if (!gPaletteFade.active)
+ {
+ gMain.inBattle = FALSE;
+ gMain.callback1 = gPreBattleCallback1;
+ SetMainCallback2(gMain.savedCallback);
+ }
+}
+
+void bx_wait_t6(void)
+{
+ if (!gDoingBattleAnim || !ewram17810[gActiveBank].unk0_6)
+ SafariBufferExecCompleted();
+}
+
+void sub_812B724(void)
+{
+ if (!gPaletteFade.active)
+ {
+ gBattleBankFunc[gActiveBank] = sub_812B758;
+ sub_810BADC();
+ }
+}
+
+void sub_812B758(void)
+{
+ if (gMain.callback2 == sub_800F808 && !gPaletteFade.active)
+ {
+ Emitcmd35(1, gScriptItemId);
+ SafariBufferExecCompleted();
+ }
+}
+
+void sub_812B794(void)
+{
+ if (!ewram17810[gActiveBank].unk0_5)
+ SafariBufferExecCompleted();
+}
+
+void SafariBufferExecCompleted(void)
+{
+ gBattleBankFunc[gActiveBank] = SafariBufferRunCommand;
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ u8 playerId = GetMultiplayerId();
+
+ PrepareBufferDataTransferLink(2, 4, &playerId);
+ gBattleBufferA[gActiveBank][0] = 0x38;
+ }
+ else
+ {
+ gBattleExecBuffer &= ~gBitTable[gActiveBank];
+ }
+}
+
+void unref_sub_812B838(void)
+{
+ if (!ewram17810[gActiveBank].unk0_4)
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleGetAttributes(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd1(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleSetAttributes(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd3(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleLoadPokeSprite(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleSendOutPoke(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleReturnPokeToBall(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleTrainerThrow(void)
+{
+ LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBank);
+ GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank));
+ gObjectBankIDs[gActiveBank] = CreateSprite(
+ &gUnknown_02024E8C,
+ 80,
+ (8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80,
+ 30);
+ gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
+ gSprites[gObjectBankIDs[gActiveBank]].pos2.x = 240;
+ gSprites[gObjectBankIDs[gActiveBank]].data0 = -2;
+ gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0;
+ gBattleBankFunc[gActiveBank] = sub_812B65C;
+}
+
+void SafariHandleTrainerSlide(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleTrainerSlideBack(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd10(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd11(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd12(void)
+{
+ ewram17840.unk8 = 4;
+ gDoingBattleAnim = 1;
+ move_anim_start_t4(gActiveBank, gActiveBank, GetBankByPlayerAI(1), 4);
+ gBattleBankFunc[gActiveBank] = bx_wait_t6;
+}
+
+void SafariHandleBallThrow(void)
+{
+ u8 var = gBattleBufferA[gActiveBank][1];
+
+ ewram17840.unk8 = var;
+ gDoingBattleAnim = 1;
+ move_anim_start_t4(gActiveBank, gActiveBank, GetBankByPlayerAI(1), 4);
+ gBattleBankFunc[gActiveBank] = bx_wait_t6;
+}
+
+// TODO: spell Pause correctly
+void SafariHandlePuase(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleMoveAnimation(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlePrintString(void)
+{
+ gUnknown_030042A4 = 0;
+ gUnknown_030042A0 = 0;
+ BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]);
+ sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ gBattleBankFunc[gActiveBank] = sub_812B694;
+}
+
+void SafariHandlePrintStringPlayerOnly(void)
+{
+ if (GetBankSide(gActiveBank) == 0)
+ SafariHandlePrintString();
+ else
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd18(void)
+{
+ int i;
+
+ gUnknown_030042A4 = 0;
+ gUnknown_030042A0 = 160;
+ gUnknown_03004210.paletteNum = 0;
+ FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 15, 27, 18);
+ FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 35, 16, 36);
+ gBattleBankFunc[gActiveBank] = bx_battle_menu_t6_2;
+
+ InitWindow(&gUnknown_03004210, gUnknown_08400D15, 400, 18, 35);
+ sub_8002F44(&gUnknown_03004210);
+ sub_814A5C0(0, 0xFFFF, 12, 11679, 0);
+
+ for (i = 0; i < 4; i++)
+ nullsub_8(i);
+
+ sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
+ StrCpyDecodeToDisplayedStringBattle((u8 *) gUnknown_08400CBB);
+
+ InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_812BB10_TILE_DATA_OFFSET, 2, 35);
+ sub_8002F44(&gUnknown_03004210);
+}
+
+void SafariHandlecmd19(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd20(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleOpenBag(void)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gBattleBankFunc[gActiveBank] = sub_812B724;
+ gBankInMenu = gActiveBank;
+}
+
+void SafariHandlecmd22(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd23(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleHealthBarUpdate(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleExpBarUpdate(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleStatusIconUpdate(void)
+{
+ sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 11);
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleStatusAnimation(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleStatusXor(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd29(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleDMATransfer(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd31(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd32(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd33(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd34(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd35(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd36(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd37(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd38(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd39(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd40(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleHitAnimation(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd42(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleEffectivenessSound(void)
+{
+ s8 pan;
+
+ if (GetBankSide(gActiveBank) == 0)
+ pan = -64;
+ else
+ pan = 63;
+ PlaySE12WithPanning(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8), pan);
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd44(void)
+{
+ PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleFaintingCry(void)
+{
+ u16 species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
+
+ PlayCry1(species, 25);
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleIntroSlide(void)
+{
+ sub_80E43C0(gBattleBufferA[gActiveBank][1]);
+ gUnknown_02024DE8 |= 1;
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleTrainerBallThrow(void)
+{
+ sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 10);
+ sub_804777C(gActiveBank);
+ sub_8043DFC(gHealthboxIDs[gActiveBank]);
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd48(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd49(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd50(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleSpriteInvisibility(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleBattleAnimation(void)
+{
+ u8 r3 = gBattleBufferA[gActiveBank][1];
+ u16 r4 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+
+ if (move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, r3, r4) != 0)
+ SafariBufferExecCompleted();
+ else
+ gBattleBankFunc[gActiveBank] = sub_812B794;
+}
+
+void SafariHandleLinkStandbyMsg(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleResetActionMoveSelection(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd55(void)
+{
+ gBattleOutcome = gBattleBufferA[gActiveBank][1];
+ FadeOutMapMusic(5);
+ BeginFastPaletteFade(3);
+ SafariBufferExecCompleted();
+ if ((gBattleTypeFlags & BATTLE_TYPE_LINK) && !(gBattleTypeFlags & BATTLE_TYPE_WILD))
+ gBattleBankFunc[gActiveBank] = sub_812B6AC;
+}
+
+void SafariHandlecmd56(void)
+{
+}
diff --git a/src/battle_anim_8137220.c b/src/battle_controller_wally.c
index bb181d5fb..f2cf5bbb4 100644
--- a/src/battle_anim_8137220.c
+++ b/src/battle_controller_wally.c
@@ -29,7 +29,6 @@ struct UnknownStruct3
extern u8 gActiveBank;
extern void (*gBattleBankFunc[])(void);
extern u32 gBattleExecBuffer;
-extern void (*gWallyBufferCommands[])(void);
extern u8 gBattleBufferA[][0x200];
extern u8 gObjectBankIDs[];
extern MainCallback gPreBattleCallback1;
@@ -61,8 +60,8 @@ extern const u8 gUnknown_08400CCC[];
extern const u8 gUnknown_08400CF3[];
// TODO: include rom3.h when my other PR gets merged
-extern void dp01_build_cmdbuf_x21_a_bb(u8, u8, u16);
-extern void dp01_build_cmdbuf_x23_aa_0(u8, u16);
+extern void Emitcmd33(u8, u8, u16);
+extern void Emitcmd35(u8, u16);
extern void nullsub_14(void);
extern void PrepareBagForWallyTutorial(void);
@@ -72,8 +71,8 @@ extern void sub_804777C();
extern void sub_8043DFC();
extern bool8 IsDoubleBattle(void);
extern void c3_0802FDF4(u8);
-extern void sub_802ECF0(void);
-extern void sub_8031AF4();
+extern void PlayerHandlecmd1(void);
+extern void LoadPlayerTrainerBankSprite();
extern u8 GetBankIdentity(u8);
extern void sub_80313A0(struct Sprite *);
extern u8 GetBankByPlayerAI(u8);
@@ -98,6 +97,8 @@ extern u8 sub_8079E90();
extern void sub_80312F0(struct Sprite *);
extern bool8 move_anim_start_t3();
+// this file's functions
+
void WallyBufferRunCommand(void);
void sub_81374FC(void);
void sub_81376B8(void);
@@ -107,6 +108,130 @@ void sub_8138294(u8);
void sub_81390D0(void);
void sub_8139A2C(u8);
+void WallyHandleGetAttributes(void);
+void WallyHandlecmd1(void);
+void WallyHandleSetAttributes(void);
+void WallyHandlecmd3(void);
+void WallyHandleLoadPokeSprite(void);
+void WallyHandleSendOutPoke(void);
+void WallyHandleReturnPokeToBall(void);
+void WallyHandleTrainerThrow(void);
+void WallyHandleTrainerSlide(void);
+void WallyHandleTrainerSlideBack(void);
+void WallyHandlecmd10(void);
+void WallyHandlecmd11(void);
+void WallyHandlecmd12(void);
+void WallyHandleBallThrow(void);
+void WallyHandlePuase(void);
+void WallyHandleMoveAnimation(void);
+void WallyHandlePrintString(void);
+void WallyHandlePrintStringPlayerOnly(void);
+void WallyHandlecmd18(void);
+void WallyHandlecmd19(void);
+void WallyHandlecmd20(void);
+void WallyHandleOpenBag(void);
+void WallyHandlecmd22(void);
+void WallyHandlecmd23(void);
+void WallyHandleHealthBarUpdate(void);
+void WallyHandleExpBarUpdate(void);
+void WallyHandleStatusIconUpdate(void);
+void WallyHandleStatusAnimation(void);
+void WallyHandleStatusXor(void);
+void WallyHandlecmd29(void);
+void WallyHandleDMATransfer(void);
+void WallyHandlecmd31(void);
+void WallyHandlecmd32(void);
+void WallyHandlecmd33(void);
+void WallyHandlecmd34(void);
+void WallyHandlecmd35(void);
+void WallyHandlecmd36(void);
+void WallyHandlecmd37(void);
+void WallyHandlecmd38(void);
+void WallyHandlecmd39(void);
+void WallyHandlecmd40(void);
+void WallyHandleHitAnimation(void);
+void WallyHandlecmd42(void);
+void WallyHandleEffectivenessSound(void);
+void WallyHandlecmd44(void);
+void WallyHandleFaintingCry(void);
+void WallyHandleIntroSlide(void);
+void WallyHandleTrainerBallThrow(void);
+void WallyHandlecmd48(void);
+void WallyHandlecmd49(void);
+void WallyHandlecmd50(void);
+void WallyHandleSpriteInvisibility(void);
+void WallyHandleBattleAnimation(void);
+void WallyHandleLinkStandbyMsg(void);
+void WallyHandleResetActionMoveSelection(void);
+void WallyHandlecmd55(void);
+void WallyHandlecmd56(void);
+
+// const data
+
+typedef void (*BattleBufferCmd) (void);
+static const BattleBufferCmd gWallyBufferCommands[] =
+{
+ WallyHandleGetAttributes,
+ WallyHandlecmd1,
+ WallyHandleSetAttributes,
+ WallyHandlecmd3,
+ WallyHandleLoadPokeSprite,
+ WallyHandleSendOutPoke,
+ WallyHandleReturnPokeToBall,
+ WallyHandleTrainerThrow,
+ WallyHandleTrainerSlide,
+ WallyHandleTrainerSlideBack,
+ WallyHandlecmd10,
+ WallyHandlecmd11,
+ WallyHandlecmd12,
+ WallyHandleBallThrow,
+ WallyHandlePuase,
+ WallyHandleMoveAnimation,
+ WallyHandlePrintString,
+ WallyHandlePrintStringPlayerOnly,
+ WallyHandlecmd18,
+ WallyHandlecmd19,
+ WallyHandlecmd20,
+ WallyHandleOpenBag,
+ WallyHandlecmd22,
+ WallyHandlecmd23,
+ WallyHandleHealthBarUpdate,
+ WallyHandleExpBarUpdate,
+ WallyHandleStatusIconUpdate,
+ WallyHandleStatusAnimation,
+ WallyHandleStatusXor,
+ WallyHandlecmd29,
+ WallyHandleDMATransfer,
+ WallyHandlecmd31,
+ WallyHandlecmd32,
+ WallyHandlecmd33,
+ WallyHandlecmd34,
+ WallyHandlecmd35,
+ WallyHandlecmd36,
+ WallyHandlecmd37,
+ WallyHandlecmd38,
+ WallyHandlecmd39,
+ WallyHandlecmd40,
+ WallyHandleHitAnimation,
+ WallyHandlecmd42,
+ WallyHandleEffectivenessSound,
+ WallyHandlecmd44,
+ WallyHandleFaintingCry,
+ WallyHandleIntroSlide,
+ WallyHandleTrainerBallThrow,
+ WallyHandlecmd48,
+ WallyHandlecmd49,
+ WallyHandlecmd50,
+ WallyHandleSpriteInvisibility,
+ WallyHandleBattleAnimation,
+ WallyHandleLinkStandbyMsg,
+ WallyHandleResetActionMoveSelection,
+ WallyHandlecmd55,
+ WallyHandlecmd56,
+};
+
+// code
+
void unref_sub_8137220(void)
{
}
@@ -146,7 +271,7 @@ void sub_81372BC(void)
if (r4 == 0)
{
PlaySE(SE_SELECT);
- dp01_build_cmdbuf_x21_a_bb(1, 0, 0);
+ Emitcmd33(1, 0, 0);
WallyBufferExecCompleted();
ewram[0x160A8]++;
ewram[0x160A9] = r4;
@@ -158,7 +283,7 @@ void sub_81372BC(void)
if (r4 == 0)
{
PlaySE(SE_SELECT);
- dp01_build_cmdbuf_x21_a_bb(1, 0, 0);
+ Emitcmd33(1, 0, 0);
WallyBufferExecCompleted();
ewram[0x160A8]++;
ewram[0x160A9] = r4;
@@ -169,7 +294,7 @@ void sub_81372BC(void)
r4 = --ewram[0x160AA];
if (r4 == 0)
{
- dp01_build_cmdbuf_x21_a_bb(1, 9, 0);
+ Emitcmd33(1, 9, 0);
WallyBufferExecCompleted();
ewram[0x160A8]++;
ewram[0x160A9] = r4;
@@ -191,7 +316,7 @@ void sub_81372BC(void)
{
PlaySE(SE_SELECT);
DestroyMenuCursor();
- dp01_build_cmdbuf_x21_a_bb(1, 1, 0);
+ Emitcmd33(1, 1, 0);
WallyBufferExecCompleted();
}
break;
@@ -241,7 +366,7 @@ void sub_81374FC(void)
if (gMain.callback2 == sub_800F808
&& !gPaletteFade.active)
{
- dp01_build_cmdbuf_x23_aa_0(1, gScriptItemId);
+ Emitcmd35(1, gScriptItemId);
WallyBufferExecCompleted();
}
}
@@ -359,7 +484,7 @@ void WallyBufferExecCompleted(void)
{
u8 multiplayerId = GetMultiplayerId();
- dp01_prepare_buffer_wireless_probably(2, 4, &multiplayerId);
+ PrepareBufferDataTransferLink(2, 4, &multiplayerId);
gBattleBufferA[gActiveBank][0] = 0x38;
}
else
@@ -374,7 +499,7 @@ void unref_sub_81379E4(void)
WallyBufferExecCompleted();
}
-void dp01t_00_5_getattr(void)
+void WallyHandleGetAttributes(void)
{
u8 arr[0x100];
u32 r6 = 0;
@@ -395,7 +520,7 @@ void dp01t_00_5_getattr(void)
r4 >>= 1;
}
}
- dp01_build_cmdbuf_x1D_1D_numargs_varargs(1, r6, arr);
+ Emitcmd29(1, r6, arr);
WallyBufferExecCompleted();
}
@@ -704,12 +829,12 @@ u32 sub_8137A84(u8 a, u8 *buffer)
return size;
}
-void sub_8138230(void)
+void WallyHandlecmd1(void)
{
- sub_802ECF0();
+ PlayerHandlecmd1();
}
-void sub_813823C(void)
+void WallyHandleSetAttributes(void)
{
u8 r4;
u8 i;
@@ -948,22 +1073,22 @@ void sub_8138294(u8 a)
sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
}
-void sub_8138C90(void)
+void WallyHandlecmd3(void)
{
WallyBufferExecCompleted();
}
-void sub_8138C9C(void)
+void WallyHandleLoadPokeSprite(void)
{
WallyBufferExecCompleted();
}
-void sub_8138CA8(void)
+void WallyHandleSendOutPoke(void)
{
WallyBufferExecCompleted();
}
-void sub_8138CB4(void)
+void WallyHandleReturnPokeToBall(void)
{
if (gBattleBufferA[gActiveBank][1] == 0)
{
@@ -979,9 +1104,9 @@ void sub_8138CB4(void)
}
}
-void sub_8138D38(void)
+void WallyHandleTrainerThrow(void)
{
- sub_8031AF4(2, gActiveBank);
+ LoadPlayerTrainerBankSprite(2, gActiveBank);
GetMonSpriteTemplate_803C5A0(2, GetBankIdentity(gActiveBank));
gObjectBankIDs[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
@@ -994,9 +1119,9 @@ void sub_8138D38(void)
gBattleBankFunc[gActiveBank] = sub_813741C;
}
-void sub_8138E04(void)
+void WallyHandleTrainerSlide(void)
{
- sub_8031AF4(2, gActiveBank);
+ LoadPlayerTrainerBankSprite(2, gActiveBank);
GetMonSpriteTemplate_803C5A0(2, GetBankIdentity(gActiveBank));
gObjectBankIDs[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
@@ -1009,22 +1134,22 @@ void sub_8138E04(void)
gBattleBankFunc[gActiveBank] = sub_8137908;
}
-void sub_8138ED0(void)
+void WallyHandleTrainerSlideBack(void)
{
WallyBufferExecCompleted();
}
-void sub_8138EDC(void)
+void WallyHandlecmd10(void)
{
WallyBufferExecCompleted();
}
-void sub_8138EE8(void)
+void WallyHandlecmd11(void)
{
WallyBufferExecCompleted();
}
-void sub_8138EF4(void)
+void WallyHandlecmd12(void)
{
ewram17840.unk8 = 4;
gDoingBattleAnim = TRUE;
@@ -1032,7 +1157,7 @@ void sub_8138EF4(void)
gBattleBankFunc[gActiveBank] = bx_wait_t5;
}
-void sub_8138F44(void)
+void WallyHandleBallThrow(void)
{
u8 val = gBattleBufferA[gActiveBank][1];
@@ -1042,12 +1167,12 @@ void sub_8138F44(void)
gBattleBankFunc[gActiveBank] = bx_wait_t5;
}
-void sub_8138FA0(void)
+void WallyHandlePuase(void)
{
WallyBufferExecCompleted();
}
-void sub_8138FAC(void)
+void WallyHandleMoveAnimation(void)
{
u16 r0 = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8);
@@ -1081,7 +1206,7 @@ void sub_81390D0(void)
switch (ewram17810[gActiveBank].unk4)
{
case 0:
- if (ewram17800[gActiveBank].unk0_2 == 1)
+ if (ewram17800[gActiveBank].substituteSprite == 1)
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
ewram17810[gActiveBank].unk4 = 1;
break;
@@ -1098,7 +1223,7 @@ void sub_81390D0(void)
if (!gAnimScriptActive)
{
sub_80326EC(1);
- if (ewram17800[gActiveBank].unk0_2 == 1)
+ if (ewram17800[gActiveBank].substituteSprite == 1)
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
ewram17810[gActiveBank].unk4 = 3;
}
@@ -1115,7 +1240,7 @@ void sub_81390D0(void)
}
}
-void sub_8139208(void)
+void WallyHandlePrintString(void)
{
u16 *ptr;
@@ -1129,15 +1254,15 @@ void sub_8139208(void)
gBattleBankFunc[gActiveBank] = sub_8137454;
}
-void dp01t_11_5_message_for_player_only(void)
+void WallyHandlePrintStringPlayerOnly(void)
{
if (GetBankSide(gActiveBank) == 0)
- sub_8139208();
+ WallyHandlePrintString();
else
WallyBufferExecCompleted();
}
-void sub_8139298(void)
+void WallyHandlecmd18(void)
{
s32 i;
@@ -1162,12 +1287,12 @@ void sub_8139298(void)
sub_8002F44(&gUnknown_03004210);
}
-void sub_8139378(void)
+void WallyHandlecmd19(void)
{
WallyBufferExecCompleted();
}
-void sub_8139384(void)
+void WallyHandlecmd20(void)
{
switch (ewram[0x160A9])
{
@@ -1182,31 +1307,31 @@ void sub_8139384(void)
{
DestroyMenuCursor();
PlaySE(SE_SELECT);
- dp01_build_cmdbuf_x21_a_bb(1, 10, 256);
+ Emitcmd33(1, 10, 256);
WallyBufferExecCompleted();
}
break;
}
}
-void sub_81393EC(void)
+void WallyHandleOpenBag(void)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
gBattleBankFunc[gActiveBank] = sub_81374C4;
gBankInMenu = gActiveBank;
}
-void sub_813942C(void)
+void WallyHandlecmd22(void)
{
WallyBufferExecCompleted();
}
-void sub_8139438(void)
+void WallyHandlecmd23(void)
{
WallyBufferExecCompleted();
}
-void sub_8139444(void)
+void WallyHandleHealthBarUpdate(void)
{
s16 r7;
@@ -1229,87 +1354,87 @@ void sub_8139444(void)
gBattleBankFunc[gActiveBank] = sub_81377B0;
}
-void sub_8139544(void)
+void WallyHandleExpBarUpdate(void)
{
WallyBufferExecCompleted();
}
-void sub_8139550(void)
+void WallyHandleStatusIconUpdate(void)
{
WallyBufferExecCompleted();
}
-void sub_813955C(void)
+void WallyHandleStatusAnimation(void)
{
WallyBufferExecCompleted();
}
-void sub_8139568(void)
+void WallyHandleStatusXor(void)
{
WallyBufferExecCompleted();
}
-void sub_8139574(void)
+void WallyHandlecmd29(void)
{
WallyBufferExecCompleted();
}
-void sub_8139580(void)
+void WallyHandleDMATransfer(void)
{
WallyBufferExecCompleted();
}
-void sub_813958C(void)
+void WallyHandlecmd31(void)
{
WallyBufferExecCompleted();
}
-void sub_8139598(void)
+void WallyHandlecmd32(void)
{
WallyBufferExecCompleted();
}
-void sub_81395A4(void)
+void WallyHandlecmd33(void)
{
WallyBufferExecCompleted();
}
-void sub_81395B0(void)
+void WallyHandlecmd34(void)
{
WallyBufferExecCompleted();
}
-void sub_81395BC(void)
+void WallyHandlecmd35(void)
{
WallyBufferExecCompleted();
}
-void sub_81395C8(void)
+void WallyHandlecmd36(void)
{
WallyBufferExecCompleted();
}
-void sub_81395D4(void)
+void WallyHandlecmd37(void)
{
WallyBufferExecCompleted();
}
-void sub_81395E0(void)
+void WallyHandlecmd38(void)
{
WallyBufferExecCompleted();
}
-void sub_81395EC(void)
+void WallyHandlecmd39(void)
{
WallyBufferExecCompleted();
}
-void sub_81395F8(void)
+void WallyHandlecmd40(void)
{
WallyBufferExecCompleted();
}
-void sub_8139604(void)
+void WallyHandleHitAnimation(void)
{
if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE)
{
@@ -1324,37 +1449,37 @@ void sub_8139604(void)
}
}
-void sub_8139674(void)
+void WallyHandlecmd42(void)
{
WallyBufferExecCompleted();
}
-void sub_8139680(void)
+void WallyHandleEffectivenessSound(void)
{
PlaySE(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
WallyBufferExecCompleted();
}
-void sub_81396B0(void)
+void WallyHandlecmd44(void)
{
PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
WallyBufferExecCompleted();
}
-void sub_81396E0(void)
+void WallyHandleFaintingCry(void)
{
PlayCry1(GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES), 25);
WallyBufferExecCompleted();
}
-void dp01t_2E_5_battle_intro(void)
+void WallyHandleIntroSlide(void)
{
sub_80E43C0(gBattleBufferA[gActiveBank][1]);
gUnknown_02024DE8 |= 1;
WallyBufferExecCompleted();
}
-void sub_8139750(void)
+void WallyHandleTrainerBallThrow(void)
{
u8 paletteNum;
u8 taskId;
@@ -1382,7 +1507,7 @@ void sub_81398BC(u8 bank)
{
u16 species;
- ewram17800[bank].unk2 = 0;
+ ewram17800[bank].transformedSpecies = 0;
gBattlePartyID[bank] = gBattleBufferA[bank][1];
species = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
gUnknown_0300434C[bank] = CreateInvisibleSpriteWithCallback(sub_80312F0);
@@ -1421,7 +1546,7 @@ void sub_8139A2C(u8 taskId)
}
}
-void sub_8139AA0(void)
+void WallyHandlecmd48(void)
{
if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == 0)
{
@@ -1435,22 +1560,22 @@ void sub_8139AA0(void)
}
}
-void sub_8139B20(void)
+void WallyHandlecmd49(void)
{
WallyBufferExecCompleted();
}
-void sub_8139B2C(void)
+void WallyHandlecmd50(void)
{
WallyBufferExecCompleted();
}
-void sub_8139B38(void)
+void WallyHandleSpriteInvisibility(void)
{
WallyBufferExecCompleted();
}
-void sub_8139B44(void)
+void WallyHandleBattleAnimation(void)
{
u8 val2 = gBattleBufferA[gActiveBank][1];
u16 val = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
@@ -1461,17 +1586,17 @@ void sub_8139B44(void)
gBattleBankFunc[gActiveBank] = sub_8137940;
}
-void sub_8139BA0(void)
+void WallyHandleLinkStandbyMsg(void)
{
WallyBufferExecCompleted();
}
-void sub_8139BAC(void)
+void WallyHandleResetActionMoveSelection(void)
{
WallyBufferExecCompleted();
}
-void sub_8139BB8(void)
+void WallyHandlecmd55(void)
{
gBattleOutcome = gBattleBufferA[gActiveBank][1];
FadeOutMapMusic(5);
@@ -1481,6 +1606,6 @@ void sub_8139BB8(void)
gBattleBankFunc[gActiveBank] = sub_813746C;
}
-void nullsub_80(void)
+void WallyHandlecmd56(void)
{
}
diff --git a/src/battle_message.c b/src/battle_message.c
new file mode 100644
index 000000000..a3cc320ad
--- /dev/null
+++ b/src/battle_message.c
@@ -0,0 +1,959 @@
+#include "global.h"
+#include "battle_message.h"
+#include "battle.h"
+#include "item.h"
+#include "items.h"
+#include "pokemon.h"
+#include "data2.h"
+#include "text.h"
+#include "string_util.h"
+#include "link.h"
+#include "battle_setup.h"
+#include "battle_tower.h"
+#include "flags.h"
+
+#define BATTLESTRING_TO_SUB 12
+#define BATTLESTRINGS_NO 351
+#define BATTLESTRINGS_MAX BATTLESTRINGS_NO + BATTLESTRING_TO_SUB
+
+extern const u8* const gBattleStringsTable[BATTLESTRINGS_NO];
+
+extern u16 gLastUsedItem;
+extern u8 gLastUsedAbility;
+extern u8 gActiveBank;
+extern u8 gBankAttacker;
+extern u8 gBankTarget;
+extern u8 gStringBank;
+extern u8 gEffectBank;
+extern u8 gAbilitiesPerBank[4];
+extern u8 gBattleTextBuff1[];
+extern u8 gBattleTextBuff2[];
+extern u8 gBattleTextBuff3[];
+extern u8 gStringVar1[];
+extern u8 gStringVar2[];
+extern u8 gStringVar3[];
+extern u16 gBattleTypeFlags;
+extern u16 gTrainerBattleOpponent;
+extern u8 gDisplayedStringBattle[];
+extern u8 gStringVar1[];
+extern u8 gStringVar2[];
+extern u8 gStringVar3[];
+extern u16 gBattlePartyID[4];
+extern struct BattleEnigmaBerry gEnigmaBerries[4];
+extern u8 gBattleBufferA[4][0x200];
+
+extern const u8 gUnknown_084005DB[];
+extern const u8 gUnknown_084005C7[];
+extern const u8 gUnknown_084005AA[];
+extern const u8 gUnknown_08400568[];
+extern const u8 gUnknown_08400590[];
+extern const u8 gUnknown_0840057B[];
+extern const u8 gUnknown_08400555[];
+extern const u8 gUnknown_084006F1[];
+extern const u8 gUnknown_084006A4[];
+extern const u8 gUnknown_0840069C[];
+extern const u8 gUnknown_0840065C[];
+extern const u8 gUnknown_08400645[];
+extern const u8 gUnknown_08400608[];
+extern const u8 gUnknown_08400635[];
+extern const u8 gUnknown_084005F5[];
+extern const u8 gUnknown_08400709[];
+extern const u8 gUnknown_08400727[];
+extern const u8 gUnknown_08400736[];
+extern const u8 gUnknown_08400749[];
+extern const u8 gUnknown_08400781[];
+extern const u8 gUnknown_08400771[];
+extern const u8 gUnknown_0840075E[];
+extern const u8 gUnknown_084006B3[];
+extern const u8 gUnknown_084006BB[];
+extern const u8 gUnknown_084006C6[];
+extern const u8 gUnknown_084006D5[];
+extern const u8 gUnknown_0840068C[];
+extern const u8 gUnknown_0840067C[];
+extern const u8 gUnknown_08400622[];
+extern const u8 gUnknown_084007BD[];
+extern const u8 gUnknown_083FFEFC[];
+extern const u8 gUnknown_083FFFF7[];
+extern const u8 gUnknown_083FFFEA[];
+extern const u8 gUnknown_083FFF6A[];
+extern const u8 gUnknown_083FFF99[];
+extern const u8 gUnknown_083FFFCB[];
+extern const u8 gUnknown_083FFF56[];
+extern const u8 gUnknown_083FFF81[];
+extern const u8 gUnknown_083FFFB3[];
+extern const u8 gUnknown_08400A78[];
+extern const u8 gUnknown_08400A85[];
+extern const u8 gUnknown_08400797[];
+extern const u8 gUnknown_08400791[];
+extern const u8 gUnknown_084007B7[];
+extern const u8 gUnknown_084007B2[];
+extern const u8 gUnknown_0840079C[];
+extern const u8 gUnknown_084007A1[];
+extern const u8 gUnknown_084007A7[];
+extern const u8 gUnknown_084007AC[];
+extern const u8 gUnknown_084009ED[];
+extern const u8 gUnknown_084009F7[];
+extern const u8 gUnknown_084007C8[];
+extern const u8 gUnknown_084007CA[];
+extern const u8 gUnknown_084007CC[];
+extern const u8 gUnknown_084007CE[];
+extern const u8 gUnknown_084007D0[];
+extern const u8 gUnknown_08400E5E[];
+extern const u8 gUnknown_08400E62[];
+
+extern const u16 gUnknown_084016BC[]; // a table of moves
+
+extern const u8* const gUnknown_08401674[]; // table of pointers to 'a -TYPE' strings
+extern const u8* const gUnknown_08400F58[]; // table of pointers to stat strings
+extern const u8* const gUnknown_08400F78[]; // table of pointers to flavour strings
+
+struct StatusFlagString
+{
+ u8* flag;
+ u8* ptr;
+};
+
+extern const struct StatusFlagString gUnknown_081FA6D4[7]; // status flag/text
+extern const u8 gUnknown_084017A8[8]; // empty flags
+
+extern struct StringInfoBattle* gSelectedOrderFromParty;
+#define gStringInfo gSelectedOrderFromParty
+
+void sub_8121D1C(u8* textBuff);
+void sub_8121D74(u8* textBuff);
+void StrCpyDecodeBattleTextBuff(u8* src, u8* dst);
+
+u8 GetBankSide(u8 bank);
+s32 sub_803FC34(u16);
+void get_trainer_name(u8* dst);
+u8 get_trainer_class_name_index(void);
+u8 sub_8135FD8(void);
+u8 GetMultiplayerId(void);
+u8 GetBankByPlayerAI(u8 ID);
+u8 GetBankSide(u8 bank);
+u8 GetBankIdentity(u8 bank);
+#ifdef GERMAN
+extern u8 *de_sub_804110C();
+#endif
+
+void BufferStringBattle(u16 stringID)
+{
+ int i;
+ const u8* stringPtr = NULL;
+
+ gStringInfo = (struct StringInfoBattle*)(&gBattleBufferA[gActiveBank][4]);
+ gLastUsedItem = gStringInfo->lastItem;
+ gLastUsedAbility = gStringInfo->lastAbility;
+ BATTLE_STRUCT->scriptingActive = gStringInfo->scrActive;
+ BATTLE_STRUCT->unk1605E = gStringInfo->unk1605E;
+ BATTLE_STRUCT->hpScale = gStringInfo->hpScale;
+ gStringBank = gStringInfo->StringBank;
+ BATTLE_STRUCT->stringMoveType = gStringInfo->moveType;
+ for (i = 0; i < 4; i++)
+ {
+ gAbilitiesPerBank[i] = gStringInfo->abilities[i];
+ }
+ for (i = 0; i < 0x10; i++)
+ {
+ gBattleTextBuff1[i] = gStringInfo->textBuffs[0][i];
+ gBattleTextBuff2[i] = gStringInfo->textBuffs[1][i];
+ gBattleTextBuff3[i] = gStringInfo->textBuffs[2][i];
+ }
+ switch (stringID)
+ {
+ case 0: // first battle msg
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ stringPtr = gUnknown_084005DB;
+ else
+ stringPtr = gUnknown_084005C7;
+ }
+ else
+ {
+ stringPtr = gUnknown_084005AA;
+#ifdef GERMAN
+ stringPtr = de_sub_804110C(0xFFFF, stringPtr);
+#endif
+ }
+ }
+ else
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY)
+ stringPtr = gUnknown_08400568;
+ else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) // interesting, looks like they had something planned for wild double battles
+ stringPtr = gUnknown_08400590;
+ else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL)
+ stringPtr = gUnknown_0840057B;
+ else
+ stringPtr = gUnknown_08400555;
+ }
+ break;
+ case 1: // poke first send-out
+ if (GetBankSide(gActiveBank) == 0)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ stringPtr = gUnknown_084006F1;
+ else
+ stringPtr = gUnknown_084006A4;
+ }
+ else
+ stringPtr = gUnknown_0840069C;
+ }
+ else
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ stringPtr = gUnknown_0840065C;
+ else if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ stringPtr = gUnknown_08400645;
+ else
+ {
+ stringPtr = gUnknown_08400608;
+#ifdef GERMAN
+ stringPtr = de_sub_804110C(0xFFFF, stringPtr);
+#endif
+ }
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ stringPtr = gUnknown_08400635;
+ else
+ {
+ stringPtr = gUnknown_084005F5;
+#ifdef GERMAN
+ stringPtr = de_sub_804110C(0xFFFF, stringPtr);
+#endif
+ }
+ }
+ break;
+ case 2: // sending poke to ball msg
+ if (GetBankSide(gActiveBank) == 0)
+ {
+ if (BATTLE_STRUCT->hpScale == 0)
+ stringPtr = gUnknown_08400709;
+ else if (BATTLE_STRUCT->hpScale == 1 || gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ stringPtr = gUnknown_08400727;
+ else if (BATTLE_STRUCT->hpScale == 2)
+ stringPtr = gUnknown_08400736;
+ else
+ stringPtr = gUnknown_08400749;
+ }
+ else
+ {
+ if (gTrainerBattleOpponent == 0x800)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ stringPtr = gUnknown_08400781;
+ else
+ stringPtr = gUnknown_08400771;
+ }
+ else
+ {
+ stringPtr = gUnknown_0840075E;
+#ifdef GERMAN
+ stringPtr = de_sub_804110C(0xFFFF, stringPtr);
+#endif
+ }
+ }
+ break;
+ case 3: // switch-in msg
+ if (GetBankSide(BATTLE_STRUCT->scriptingActive) == 0)
+ {
+ if (BATTLE_STRUCT->hpScale == 0 || gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ stringPtr = gUnknown_084006B3;
+ else if (BATTLE_STRUCT->hpScale == 1)
+ stringPtr = gUnknown_084006BB;
+ else if (BATTLE_STRUCT->hpScale == 2)
+ stringPtr = gUnknown_084006C6;
+ else
+ stringPtr = gUnknown_084006D5;
+ }
+ else
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ stringPtr = gUnknown_0840068C;
+ else
+ stringPtr = gUnknown_0840067C;
+ }
+ else
+ {
+ stringPtr = gUnknown_08400622;
+#ifdef GERMAN
+ stringPtr = de_sub_804110C(0xFFFF, stringPtr);
+#endif
+ }
+ }
+ break;
+ case 4: // pokemon used a move msg
+ sub_8121D1C(gBattleTextBuff1);
+ if (gStringInfo->currentMove > 0x162)
+ StringCopy(gBattleTextBuff2, gUnknown_08401674[BATTLE_STRUCT->stringMoveType]);
+ else
+ StringCopy(gBattleTextBuff2, gMoveNames[gStringInfo->currentMove]);
+ sub_8121D74(gBattleTextBuff2);
+ stringPtr = gUnknown_084007BD;
+ break;
+ case 5: // battle end
+ if (gBattleTextBuff1[0] & 0x80)
+ {
+ gBattleTextBuff1[0] &= ~(0x80);
+ if (GetBankSide(gActiveBank) == 1 && gBattleTextBuff1[0] != 3)
+ gBattleTextBuff1[0] ^= 3;
+ if (gBattleTextBuff1[0] == BATTLE_LOST || gBattleTextBuff1[0] == BATTLE_DREW)
+ stringPtr = gUnknown_083FFEFC;
+ else
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ stringPtr = gUnknown_083FFFF7;
+ else
+ stringPtr = gUnknown_083FFFEA;
+ }
+ }
+ else
+ {
+ if (GetBankSide(gActiveBank) == 1 && gBattleTextBuff1[0] != 3)
+ gBattleTextBuff1[0] ^= 3;
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ switch (gBattleTextBuff1[0])
+ {
+ case BATTLE_WON:
+ stringPtr = gUnknown_083FFF6A;
+ break;
+ case BATTLE_LOST:
+ stringPtr = gUnknown_083FFF99;
+ break;
+ case BATTLE_DREW:
+ stringPtr = gUnknown_083FFFCB;
+ break;
+ }
+ }
+ else
+ {
+ switch (gBattleTextBuff1[0])
+ {
+ case BATTLE_WON:
+ stringPtr = gUnknown_083FFF56;
+ break;
+ case BATTLE_LOST:
+ stringPtr = gUnknown_083FFF81;
+ break;
+ case BATTLE_DREW:
+ stringPtr = gUnknown_083FFFB3;
+ break;
+ }
+ }
+ }
+ break;
+ default: // load a string from the table
+ if (stringID >= BATTLESTRINGS_MAX)
+ {
+ gDisplayedStringBattle[0] = EOS;
+ return;
+ }
+ else
+ {
+ stringPtr = gBattleStringsTable[stringID - BATTLESTRING_TO_SUB];
+#ifdef GERMAN
+ stringPtr = de_sub_804110C(stringID, stringPtr);
+#endif
+ }
+ break;
+ }
+ StrCpyDecodeToDisplayedStringBattle(stringPtr);
+}
+
+u32 StrCpyDecodeToDisplayedStringBattle(const u8* src)
+{
+ StrCpyDecodeBattle(src, gDisplayedStringBattle);
+}
+
+const u8* AppendStatusString(u8* src)
+{
+ u32 i;
+ u8 status[8];
+ u32 flag1, flag2;
+ u8* statusPtr;
+
+ memcpy(status, gUnknown_084017A8, 8);
+
+ statusPtr = status;
+ for (i = 0; i < sizeof(struct StatusFlagString); i++)
+ {
+ if (*src == EOS)
+ break;
+ *statusPtr = *src;
+ src++;
+ statusPtr++;
+ }
+ flag1 = *(u32*)(&status[0]);
+ flag2 = *(u32*)(&status[4]);
+ for (i = 0; i < 7; i++)
+ {
+ if (flag1 == *(u32*)(&gUnknown_081FA6D4[i].flag[0]) && flag2 == *(u32*)(&gUnknown_081FA6D4[i].flag[4]))
+ return gUnknown_081FA6D4[i].ptr;
+ }
+ return NULL;
+}
+
+#ifdef GERMAN
+extern u8 *de_sub_8073174(u8 *, const u8 *);
+extern u8 *de_sub_8041024(s32, u32);
+#endif
+
+#ifdef ENGLISH
+#define HANDLE_NICKNAME_STRING_CASE(bank, monIndex) \
+ if (GetBankSide(bank) != 0) \
+ { \
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) \
+ toCpy = gUnknown_08400797; \
+ else \
+ toCpy = gUnknown_08400791; \
+ while (*toCpy != EOS) \
+ { \
+ dst[dstID] = *toCpy; \
+ dstID++; \
+ toCpy++; \
+ } \
+ GetMonData(&gEnemyParty[monIndex], MON_DATA_NICKNAME, text); \
+ } \
+ else \
+ { \
+ GetMonData(&gPlayerParty[monIndex], MON_DATA_NICKNAME, text); \
+ } \
+ StringGetEnd10(text); \
+ toCpy = text;
+#else
+#define HANDLE_NICKNAME_STRING_CASE(bank, monIndex) \
+ if (GetBankSide(bank) != 0) \
+ { \
+ GetMonData(&gEnemyParty[monIndex], MON_DATA_NICKNAME, text); \
+ StringGetEnd10(text); \
+ toCpy = text; \
+ while (*toCpy != EOS) \
+ { \
+ dst[dstID] = *toCpy; \
+ dstID++; \
+ toCpy++; \
+ } \
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) \
+ toCpy = gUnknown_08400797; \
+ else \
+ toCpy = gUnknown_08400791; \
+ } \
+ else \
+ { \
+ GetMonData(&gPlayerParty[monIndex], MON_DATA_NICKNAME, text); \
+ StringGetEnd10(text); \
+ toCpy = text; \
+ }
+#endif
+
+u32 StrCpyDecodeBattle(const u8* src, u8* dst)
+{
+ u32 dstID = 0; // if they used dstID, why not use srcID as well?
+ const u8* toCpy = NULL;
+ u8 text[12];
+ u8 multiplayerID = GetMultiplayerId();
+
+ while (*src != EOS)
+ {
+ if (*src == 0xFD)
+ {
+ src++;
+ switch (*src)
+ {
+ case 0:
+ if (gBattleTextBuff1[0] == 0xFD)
+ {
+ StrCpyDecodeBattleTextBuff(gBattleTextBuff1, gStringVar1);
+ toCpy = gStringVar1;
+ }
+ else
+ {
+ toCpy = AppendStatusString(gBattleTextBuff1);
+ if (toCpy == 0)
+ toCpy = gBattleTextBuff1;
+ }
+ break;
+ case 1:
+ if (gBattleTextBuff2[0] == 0xFD)
+ {
+ StrCpyDecodeBattleTextBuff(gBattleTextBuff2, gStringVar2);
+ toCpy = gStringVar2;
+ }
+ else
+ toCpy = gBattleTextBuff2;
+ break;
+ case 42:
+ if (gBattleTextBuff3[0] == 0xFD)
+ {
+ StrCpyDecodeBattleTextBuff(gBattleTextBuff3, gStringVar3);
+ toCpy = gStringVar3;
+ }
+ else
+ toCpy = gBattleTextBuff3;
+ break;
+ case 2: // first player poke name
+ GetMonData(&gPlayerParty[gBattlePartyID[GetBankByPlayerAI(0)]], MON_DATA_NICKNAME, text);
+ StringGetEnd10(text);
+ toCpy = text;
+ break;
+ case 3: // first enemy poke name
+ GetMonData(&gEnemyParty[gBattlePartyID[GetBankByPlayerAI(1)]], MON_DATA_NICKNAME, text);
+ StringGetEnd10(text);
+ toCpy = text;
+ break;
+ case 4: // second player poke name
+ GetMonData(&gPlayerParty[gBattlePartyID[GetBankByPlayerAI(2)]], MON_DATA_NICKNAME, text);
+ StringGetEnd10(text);
+ toCpy = text;
+ break;
+ case 5: // second enemy poke name
+ GetMonData(&gEnemyParty[gBattlePartyID[GetBankByPlayerAI(3)]], MON_DATA_NICKNAME, text);
+ StringGetEnd10(text);
+ toCpy = text;
+ break;
+ case 6: // link first player poke name
+ GetMonData(&gPlayerParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18]], MON_DATA_NICKNAME, text);
+ StringGetEnd10(text);
+ toCpy = text;
+ break;
+ case 7: // link first opponent poke name
+ GetMonData(&gEnemyParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18 ^ 1]], MON_DATA_NICKNAME, text);
+ StringGetEnd10(text);
+ toCpy = text;
+ break;
+ case 8: // link second player poke name
+ GetMonData(&gPlayerParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18 ^ 2]], MON_DATA_NICKNAME, text);
+ StringGetEnd10(text);
+ toCpy = text;
+ break;
+ case 9: // link second opponent poke name
+ GetMonData(&gEnemyParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18 ^ 3]], MON_DATA_NICKNAME, text);
+ StringGetEnd10(text);
+ toCpy = text;
+ break;
+ case 10: // attacker name with prefix, only bank 0/1
+ HANDLE_NICKNAME_STRING_CASE(gBankAttacker, gBattlePartyID[GetBankByPlayerAI(GetBankIdentity(gBankAttacker) & 1)])
+ break;
+ case 11: // attacker partner name, only bank 0/1
+ if (GetBankSide(gBankAttacker) == 0)
+ GetMonData(&gPlayerParty[gBattlePartyID[GetBankByPlayerAI(GetBankIdentity(gBankAttacker) & 1) + 2]], MON_DATA_NICKNAME, text);
+ else
+ GetMonData(&gEnemyParty[gBattlePartyID[GetBankByPlayerAI(GetBankIdentity(gBankAttacker) & 1) + 2]], MON_DATA_NICKNAME, text);
+
+ StringGetEnd10(text);
+ toCpy = text;
+ break;
+ case 12: // attacker name with prefix
+ HANDLE_NICKNAME_STRING_CASE(gBankAttacker, gBattlePartyID[gBankAttacker])
+ break;
+ case 13: // target name with prefix
+ HANDLE_NICKNAME_STRING_CASE(gBankTarget, gBattlePartyID[gBankTarget])
+ break;
+ case 14: // effect bank name with prefix
+ HANDLE_NICKNAME_STRING_CASE(gEffectBank, gBattlePartyID[gEffectBank])
+ break;
+ case 15: // active bank name with prefix
+ HANDLE_NICKNAME_STRING_CASE(gActiveBank, gBattlePartyID[gActiveBank])
+ break;
+ case 16: // scripting active bank name with prefix
+ HANDLE_NICKNAME_STRING_CASE(BATTLE_STRUCT->scriptingActive, gBattlePartyID[BATTLE_STRUCT->scriptingActive])
+ break;
+ case 17: // current move name
+ if (gStringInfo->currentMove > 0x162)
+ toCpy = (void*) &gUnknown_08401674[BATTLE_STRUCT->stringMoveType];
+ else
+ toCpy = gMoveNames[gStringInfo->currentMove];
+ break;
+ case 18: // last used move name
+ if (gStringInfo->lastMove > 0x162)
+ toCpy = (void*) &gUnknown_08401674[BATTLE_STRUCT->stringMoveType];
+ else
+ toCpy = gMoveNames[gStringInfo->lastMove];
+ break;
+ case 19: // last used item
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ if (gLastUsedItem == ITEM_ENIGMA_BERRY)
+ {
+ if (gLinkPlayers[BATTLE_STRUCT->linkPlayerIndex].lp_field_18 == gStringBank)
+ {
+ StringCopy(text, gEnigmaBerries[gStringBank].name);
+#ifdef ENGLISH
+ StringAppend(text, gUnknown_08400A85);
+#else
+ de_sub_8073174(text, gUnknown_08400A85);
+#endif
+ toCpy = text;
+ }
+ else
+ toCpy = gUnknown_08400A78;
+ }
+ else
+ {
+ CopyItemName(gLastUsedItem, text);
+ toCpy = text;
+ }
+ }
+ else
+ {
+ CopyItemName(gLastUsedItem, text);
+ toCpy = text;
+ }
+ break;
+ case 20: // last used ability
+ toCpy = gAbilityNames[gLastUsedAbility];
+ break;
+ case 21: // attacker ability
+ toCpy = gAbilityNames[gAbilitiesPerBank[gBankAttacker]];
+ break;
+ case 22: // target ability
+ toCpy = gAbilityNames[gAbilitiesPerBank[gBankTarget]];
+ break;
+ case 23: // scripting active ability
+ toCpy = gAbilityNames[gAbilitiesPerBank[BATTLE_STRUCT->scriptingActive]];
+ break;
+ case 24: // effect bank ability
+ toCpy = gAbilityNames[gAbilitiesPerBank[gEffectBank]];
+ break;
+ case 25: // trainer class name
+#ifdef ENGLISH
+ if (gTrainerBattleOpponent == 0x400)
+ toCpy = gTrainerClassNames[GetSecretBaseTrainerNameIndex()];
+ else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
+ toCpy = gTrainerClassNames[get_trainer_class_name_index()];
+ else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER)
+ toCpy = gTrainerClassNames[sub_8135FD8()];
+ else
+ toCpy = gTrainerClassNames[gTrainers[gTrainerBattleOpponent].trainerClass];
+ break;
+#else
+ if (gTrainerBattleOpponent == 0x400)
+ toCpy = de_sub_8041024(gTrainerBattleOpponent, 0);
+ else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
+ toCpy = de_sub_8041024(BATTLE_TYPE_BATTLE_TOWER, 0);
+ else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER)
+ toCpy = de_sub_8041024(BATTLE_TYPE_EREADER_TRAINER, 0);
+ else
+ toCpy = de_sub_8041024(0, gTrainerBattleOpponent);
+ break;
+#endif
+ case 26: // trainer name
+ if (gTrainerBattleOpponent == 0x400)
+ {
+ memset(text, 0xFF, 8);
+ memcpy(text, &ewram[0x17002], 7);
+ toCpy = text;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
+ {
+ get_trainer_name(text);
+ toCpy = text;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER)
+ {
+ sub_8135FF4(text);
+ toCpy = text;
+ }
+ else
+ toCpy = gTrainers[gTrainerBattleOpponent].trainerName;
+ break;
+ case 27: // link player name?
+ toCpy = gLinkPlayers[multiplayerID].name;
+ break;
+ case 28: // link partner name?
+ toCpy = gLinkPlayers[sub_803FC34(2 ^ gLinkPlayers[multiplayerID].lp_field_18)].name;
+ break;
+ case 29: // link opponent 1 name?
+ toCpy = gLinkPlayers[sub_803FC34(1 ^ gLinkPlayers[multiplayerID].lp_field_18)].name;
+ break;
+ case 30: // link opponent 2 name?
+ toCpy = gLinkPlayers[sub_803FC34(3 ^ gLinkPlayers[multiplayerID].lp_field_18)].name;
+ break;
+ case 31: // link scripting active name
+ toCpy = gLinkPlayers[sub_803FC34(BATTLE_STRUCT->scriptingActive)].name;
+ break;
+ case 32: // player name
+ toCpy = gSaveBlock2.playerName;
+ break;
+ case 33: // ?
+ toCpy = sub_8082830();
+ break;
+ case 34: // ?
+ HANDLE_NICKNAME_STRING_CASE(BATTLE_STRUCT->scriptingActive, BATTLE_STRUCT->unk1605E)
+ break;
+ case 35: // lanette pc
+ if (FlagGet(SYS_PC_LANETTE))
+ toCpy = gUnknown_084009F7;
+ else
+ toCpy = gUnknown_084009ED;
+ break;
+ case 38:
+ if (GetBankSide(gBankAttacker) == 0)
+ toCpy = gUnknown_084007AC;
+ else
+ toCpy = gUnknown_084007A7;
+ break;
+ case 39:
+ if (GetBankSide(gBankTarget) == 0)
+ toCpy = gUnknown_084007AC;
+ else
+ toCpy = gUnknown_084007A7;
+ break;
+ case 36:
+ if (GetBankSide(gBankAttacker) == 0)
+ toCpy = gUnknown_084007A1;
+ else
+ toCpy = gUnknown_0840079C;
+ break;
+ case 37:
+ if (GetBankSide(gBankTarget) == 0)
+ toCpy = gUnknown_084007A1;
+ else
+ toCpy = gUnknown_0840079C;
+ break;
+ case 40:
+ if (GetBankSide(gBankAttacker) == 0)
+ toCpy = gUnknown_084007B7;
+ else
+ toCpy = gUnknown_084007B2;
+ break;
+ case 41:
+ if (GetBankSide(gBankTarget) == 0)
+ toCpy = gUnknown_084007B7;
+ else
+ toCpy = gUnknown_084007B2;
+ break;
+ }
+ //if (toCpy != NULL) really GF, why did you forget about this?
+ while (*toCpy != EOS)
+ {
+ dst[dstID] = *toCpy;
+ dstID++;
+ toCpy++;
+ }
+ if (*src == 33)
+ {
+ dst[dstID] = 0xFC;
+ dstID++;
+ dst[dstID] = 9;
+ dstID++;
+ }
+ }
+ else
+ {
+ dst[dstID] = *src;
+ dstID++;
+ }
+ src++;
+ }
+ dst[dstID] = *src;
+ dstID++;
+ return dstID;
+}
+
+#define ByteRead16(ptr) ((ptr)[0] | ((ptr)[1] << 8))
+#define ByteRead32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24)
+
+void StrCpyDecodeBattleTextBuff(u8* src, u8* dst)
+{
+ u32 srcID = 1;
+ u32 value = 0;
+ u8 text[12];
+ u16 hword;
+
+ *dst = EOS;
+ while (src[srcID] != EOS)
+ {
+ switch (src[srcID])
+ {
+ case 0: // battle string
+ hword = ByteRead16(&src[srcID + 1]);
+#ifdef GERMAN
+ if (hword == 209 || hword == 211)
+ srcID += 3;
+#endif
+ StringAppend(dst, gBattleStringsTable[hword - BATTLESTRING_TO_SUB]);
+ srcID += 3;
+ break;
+ case 1: // int to string
+ switch (src[srcID + 1])
+ {
+ case 1:
+ value = src[srcID + 3];
+ break;
+ case 2:
+ value = ByteRead16(&src[srcID + 3]);
+ break;
+ case 4:
+ value = ByteRead32(&src[srcID + 3]);
+ break;
+ }
+ ConvertIntToDecimalStringN(dst, value, 0, src[srcID + 2]);
+ srcID += src[srcID + 1] + 3;
+ break;
+ case 2: // move name
+ StringAppend(dst, gMoveNames[ByteRead16(&src[srcID + 1])]);
+ srcID += 3;
+ break;
+ case 3: // type name
+ StringAppend(dst, gTypeNames[src[srcID + 1]]);
+ srcID += 2;
+ break;
+ case 4: // poke nick with prefix
+#ifdef ENGLISH
+ if (GetBankSide(src[srcID + 1]) == 0)
+ {
+ GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, text);
+ }
+ else
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ StringAppend(dst, gUnknown_08400797);
+ else
+ StringAppend(dst, gUnknown_08400791);
+ GetMonData(&gEnemyParty[src[srcID + 2]], MON_DATA_NICKNAME, text);
+ }
+ StringGetEnd10(text);
+ StringAppend(dst, text);
+#else
+ if (GetBankSide(src[srcID + 1]) == 0)
+ {
+ GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, text);
+ StringGetEnd10(text);
+ StringAppend(dst, text);
+ }
+ else
+ {
+ GetMonData(&gEnemyParty[src[srcID + 2]], MON_DATA_NICKNAME, text);
+ StringGetEnd10(text);
+ StringAppend(dst, text);
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ StringAppend(dst, gUnknown_08400797);
+ else
+ StringAppend(dst, gUnknown_08400791);
+ }
+#endif
+ srcID += 3;
+ break;
+ case 5: // stats
+ StringAppend(dst, gUnknown_08400F58[src[srcID + 1]]);
+ srcID += 2;
+ break;
+ case 6: // species name
+ GetSpeciesName(dst, ByteRead16(&src[srcID + 1]));
+ srcID += 3;
+ break;
+ case 7: // poke nick without prefix
+ if (GetBankSide(src[srcID + 1]) == 0)
+ GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, dst);
+ else
+ GetMonData(&gEnemyParty[src[srcID + 2]], MON_DATA_NICKNAME, dst);
+ StringGetEnd10(dst);
+ srcID += 3;
+ break;
+ case 8: // flavour table
+ StringAppend(dst, gUnknown_08400F78[src[srcID + 1]]);
+ srcID += 2;
+ break;
+ case 9: // ability names
+ StringAppend(dst, gAbilityNames[src[srcID + 1]]);
+ srcID += 2;
+ break;
+ case 10: // item name
+ {
+ hword = ByteRead16(&src[srcID + 1]);
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ if (hword == ITEM_ENIGMA_BERRY)
+ {
+ if (gLinkPlayers[BATTLE_STRUCT->linkPlayerIndex].lp_field_18 == gStringBank)
+ {
+ StringCopy(dst, gEnigmaBerries[gStringBank].name);
+#ifdef ENGLISH
+ StringAppend(dst, gUnknown_08400A85);
+#else
+ de_sub_8073174(dst, gUnknown_08400A85);
+#endif
+ }
+ else
+ StringAppend(dst, gUnknown_08400A78);
+ }
+ else
+ CopyItemName(hword, dst);
+ }
+ else
+ CopyItemName(hword, dst);
+ srcID += 3;
+ }
+ break;
+ }
+ }
+}
+
+void sub_8121D1C(u8* textBuff)
+{
+ s32 counter = 0;
+ u32 i = 0;
+
+ while (counter != 4)
+ {
+ if (gUnknown_084016BC[i] == 0)
+ counter++;
+ if (gUnknown_084016BC[i++] == gStringInfo->currentMove)
+ break;
+ }
+
+ if (counter >= 0)
+ {
+ if (counter <= 2)
+ StringCopy(textBuff, gUnknown_08400E5E); // is
+ else if (counter <= 4)
+ StringCopy(textBuff, gUnknown_08400E62); // 's
+ }
+}
+
+void sub_8121D74(u8* dst)
+{
+ s32 counter = 0;
+ s32 i = 0;
+
+ while (*dst != EOS)
+ dst++;
+
+ while (counter != 4)
+ {
+ if (gUnknown_084016BC[i] == 0)
+ counter++;
+ if (gUnknown_084016BC[i++] == gStringInfo->currentMove)
+ break;
+ }
+
+ switch (counter)
+ {
+ case 0:
+ StringCopy(dst, gUnknown_084007C8);
+ break;
+ case 1:
+ StringCopy(dst, gUnknown_084007CA);
+ break;
+ case 2:
+ StringCopy(dst, gUnknown_084007CC);
+ break;
+ case 3:
+ StringCopy(dst, gUnknown_084007CE);
+ break;
+ case 4:
+ StringCopy(dst, gUnknown_084007D0);
+ break;
+ }
+}
diff --git a/src/battle_party_menu.c b/src/battle_party_menu.c
index 73b847713..49e0b8432 100644
--- a/src/battle_party_menu.c
+++ b/src/battle_party_menu.c
@@ -35,23 +35,16 @@ extern void PartyMenuDrawHPBars(void);
extern u8 sub_806B58C(u8);
extern u8 GetItemEffectType();
extern void sub_806E750(u8, const struct PartyPopupMenu *, const struct PartyMenuItem *, int);
-extern u16 sub_806BD80();
-extern u8 sub_806CA38();
extern void sub_806D5A4(void);
extern void sub_802E414(void);
extern void sub_80A6DCC(void);
extern void sub_806AF4C();
-extern u8 sub_80F9344(void);
-extern u8 sub_806B124(void);
-extern void sub_806C994();
-extern void sub_806BF74();
extern void sub_806AEDC(void);
extern TaskFunc PartyMenuGetPopupMenuFunc(u8, const struct PartyPopupMenu *, const struct PartyMenuItem *, u8);
extern void sub_806E7D0(u8, const struct PartyPopupMenu *);
extern u8 *sub_8040D08();
extern void sub_8040B8C(void);
extern void sub_806E6F0();
-extern void sub_806D538();
extern void nullsub_14();
extern void OpenPartyMenu();
extern u8 sub_803FBBC(void);
@@ -586,7 +579,7 @@ static void Task_809538C(void)
{
do
{
- if (sub_806B124() == 1)
+ if (sub_806B124() == TRUE)
{
sub_806C994(EWRAM_1B000.unk260, gUnknown_020384F0);
sub_806BF74(EWRAM_1B000.unk260, 0);
diff --git a/src/battle_records.c b/src/battle_records.c
index 61dc09792..d848a10b8 100644
--- a/src/battle_records.c
+++ b/src/battle_records.c
@@ -3,7 +3,7 @@
#include "game_stat.h"
#include "link.h"
#include "menu.h"
-#include "rom4.h"
+#include "overworld.h"
#include "string_util.h"
#include "strings2.h"
#include "trainer_card.h"
diff --git a/src/battle_setup.c b/src/battle_setup.c
index 04674e739..59e17e9eb 100644
--- a/src/battle_setup.c
+++ b/src/battle_setup.c
@@ -18,7 +18,7 @@
#include "opponent_constants.h"
#include "palette.h"
#include "rng.h"
-#include "rom4.h"
+#include "overworld.h"
#include "safari_zone.h"
#include "script.h"
#include "script_pokemon_80C4.h"
@@ -37,15 +37,15 @@ extern u16 gScriptResult;
extern void (*gFieldCallback)(void);
-EWRAM_DATA u16 gTrainerBattleMode = 0;
+EWRAM_DATA static u16 sTrainerBattleMode = 0;
EWRAM_DATA u16 gTrainerBattleOpponent = 0;
-EWRAM_DATA u16 gTrainerMapObjectLocalId = 0;
-EWRAM_DATA u8 *gTrainerIntroSpeech = NULL;
-EWRAM_DATA u8 *gTrainerDefeatSpeech = NULL;
-EWRAM_DATA u8 *gTrainerVictorySpeech = NULL;
-EWRAM_DATA u8 *gTrainerCannotBattleSpeech = NULL;
-EWRAM_DATA u8 *gTrainerBattleScriptReturnAddress = NULL;
-EWRAM_DATA u8 *gTrainerBattleEndScript = NULL;
+EWRAM_DATA static u16 sTrainerMapObjectLocalId = 0;
+EWRAM_DATA static u8 *sTrainerIntroSpeech = NULL;
+EWRAM_DATA static u8 *sTrainerDefeatSpeech = NULL;
+EWRAM_DATA static u8 *sTrainerVictorySpeech = NULL;
+EWRAM_DATA static u8 *sTrainerCannotBattleSpeech = NULL;
+EWRAM_DATA static u8 *sTrainerBattleScriptRetAddr = NULL;
+EWRAM_DATA static u8 *sTrainerBattleEndScript = NULL;
extern u16 gBattleTypeFlags;
extern u16 gScriptLastTalked;
@@ -62,80 +62,99 @@ extern u8 gUnknown_0819F8AE[];
extern u8 gUnknown_0819F80B[];
extern u8 gUnknown_081C6C02[];
-
+// The first transition is used if the enemy pokemon are lower level than our pokemon.
+// Otherwise, the second transition is used.
static const u8 gBattleTransitionTable_Wild[][2] =
{
- {8, 9},
- {5, 10},
- {0, 10},
- {7, 6},
+ {B_TRANSITION_SLICE, B_TRANSITION_WHITEFADE}, // Normal
+ {B_TRANSITION_CLOCKWISE_BLACKFADE, B_TRANSITION_GRID_SQUARES}, // Cave
+ {B_TRANSITION_BLUR, B_TRANSITION_GRID_SQUARES}, // Cave with flash used
+ {B_TRANSITION_WAVE, B_TRANSITION_RIPPLE}, // Water
};
static const u8 gBattleTransitionTable_Trainer[][2] =
{
- {4, 11},
- {2, 3},
- {0, 10},
- {1, 6},
+ {B_TRANSITION_POKEBALLS_TRAIL, B_TRANSITION_SHARDS}, // Normal
+ {B_TRANSITION_SHUFFLE, B_TRANSITION_BIG_POKEBALL}, // Cave
+ {B_TRANSITION_BLUR, B_TRANSITION_GRID_SQUARES}, // Cave with flash used
+ {B_TRANSITION_SWIRL, B_TRANSITION_RIPPLE}, // Water
+};
+
+enum
+{
+ TRAINER_PARAM_LOAD_VAL_8BIT,
+ TRAINER_PARAM_LOAD_VAL_16BIT,
+ TRAINER_PARAM_LOAD_VAL_32BIT,
+ TRAINER_PARAM_CLEAR_VAL_8BIT,
+ TRAINER_PARAM_CLEAR_VAL_16BIT,
+ TRAINER_PARAM_CLEAR_VAL_32BIT,
+ TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR,
+};
+
+struct TrainerBattleParameter
+{
+ void *varPtr;
+ u8 ptrType;
};
-static const struct TrainerBattleSpec gTrainerBattleSpecs_0[] =
-{
- {&gTrainerBattleMode, 0},
- {&gTrainerBattleOpponent, 1},
- {&gTrainerMapObjectLocalId, 1},
- {&gTrainerIntroSpeech, 2},
- {&gTrainerDefeatSpeech, 2},
- {&gTrainerVictorySpeech, 5},
- {&gTrainerCannotBattleSpeech, 5},
- {&gTrainerBattleEndScript, 5},
- {&gTrainerBattleScriptReturnAddress, 6},
+
+static const struct TrainerBattleParameter gTrainerBattleSpecs_0[] =
+{
+ {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
+ {&gTrainerBattleOpponent, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerDefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerCannotBattleSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerBattleEndScript, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerBattleScriptRetAddr, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR},
};
-static const struct TrainerBattleSpec gTrainerBattleSpecs_1[] =
-{
- {&gTrainerBattleMode, 0},
- {&gTrainerBattleOpponent, 1},
- {&gTrainerMapObjectLocalId, 1},
- {&gTrainerIntroSpeech, 2},
- {&gTrainerDefeatSpeech, 2},
- {&gTrainerVictorySpeech, 5},
- {&gTrainerCannotBattleSpeech, 5},
- {&gTrainerBattleEndScript, 2},
- {&gTrainerBattleScriptReturnAddress, 6},
+static const struct TrainerBattleParameter gTrainerBattleSpecs_1[] =
+{
+ {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
+ {&gTrainerBattleOpponent, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerDefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerCannotBattleSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerBattleScriptRetAddr, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR},
};
-static const struct TrainerBattleSpec gTrainerBattleSpecs_2[] =
-{
- {&gTrainerBattleMode, 0},
- {&gTrainerBattleOpponent, 1},
- {&gTrainerMapObjectLocalId, 1},
- {&gTrainerIntroSpeech, 2},
- {&gTrainerDefeatSpeech, 2},
- {&gTrainerVictorySpeech, 5},
- {&gTrainerCannotBattleSpeech, 2},
- {&gTrainerBattleEndScript, 5},
- {&gTrainerBattleScriptReturnAddress, 6},
+static const struct TrainerBattleParameter gTrainerBattleSpecs_2[] =
+{
+ {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
+ {&gTrainerBattleOpponent, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerDefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerCannotBattleSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerBattleEndScript, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerBattleScriptRetAddr, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR},
};
-static const struct TrainerBattleSpec gTrainerBattleSpecs_3[] =
-{
- {&gTrainerBattleMode, 0},
- {&gTrainerBattleOpponent, 1},
- {&gTrainerMapObjectLocalId, 1},
- {&gTrainerIntroSpeech, 5},
- {&gTrainerDefeatSpeech, 2},
- {&gTrainerVictorySpeech, 5},
- {&gTrainerCannotBattleSpeech, 5},
- {&gTrainerBattleEndScript, 5},
- {&gTrainerBattleScriptReturnAddress, 6},
+static const struct TrainerBattleParameter gTrainerBattleSpecs_3[] =
+{
+ {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
+ {&gTrainerBattleOpponent, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerIntroSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerDefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerCannotBattleSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerBattleEndScript, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerBattleScriptRetAddr, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR},
};
-static const struct TrainerBattleSpec gTrainerBattleSpecs_4[] =
-{
- {&gTrainerBattleMode, 0},
- {&gTrainerBattleOpponent, 1},
- {&gTrainerMapObjectLocalId, 1},
- {&gTrainerIntroSpeech, 2},
- {&gTrainerDefeatSpeech, 2},
- {&gTrainerVictorySpeech, 5},
- {&gTrainerCannotBattleSpeech, 2},
- {&gTrainerBattleEndScript, 2},
- {&gTrainerBattleScriptReturnAddress, 6},
+static const struct TrainerBattleParameter gTrainerBattleSpecs_4[] =
+{
+ {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
+ {&gTrainerBattleOpponent, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerDefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerCannotBattleSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerBattleScriptRetAddr, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR},
};
const struct TrainerEyeTrainer gTrainerEyeTrainers[] =
@@ -424,21 +443,36 @@ const struct TrainerEyeTrainer gTrainerEyeTrainers[] =
static const u16 sBadgeFlags[] = {BADGE01_GET, BADGE02_GET, BADGE03_GET, BADGE04_GET, BADGE05_GET, BADGE06_GET, BADGE07_GET, BADGE08_GET};
-void task01_battle_start(u8 taskId)
+static void DoStandardWildBattle(void);
+static void DoSafariBattle(void);
+static void SetTrainerFlagsAfterTrainerEyeRematch(void);
+static void CB2_EndWildBattle(void);
+static void CB2_EndScriptedWildBattle(void);
+static u8 GetWildBattleTransition(void);
+static u8 GetTrainerBattleTransition(void);
+static void CB2_GiveStarter(void);
+static void CB2_StartFirstBattle(void);
+static void CB2_EndFirstBattle(void);
+static bool32 IsPlayerDefeated(u32 a1);
+
+#define tState data[0]
+#define tTransition data[1]
+
+static void Task_BattleStart(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- switch (data[0])
+ switch (tState)
{
case 0:
if (!FieldPoisonEffectIsRunning()) // is poison not active?
{
- sub_811AABC(data[1]);
- data[0]++; // go to case 1.
+ BattleTransition_StartOnField(tTransition);
+ tState++; // go to case 1.
}
break;
case 1:
- if (sub_811AAE8() == TRUE)
+ if (IsBattleTransitionDone() == TRUE)
{
SetMainCallback2(sub_800E7C4);
prev_quest_postbuffer_cursor_backup_reset();
@@ -449,132 +483,135 @@ void task01_battle_start(u8 taskId)
}
}
-void task_add_01_battle_start(u8 transition, u16 song)
+static void CreateBattleStartTask(u8 transition, u16 song)
{
- u8 taskId = CreateTask(task01_battle_start, 1);
+ u8 taskId = CreateTask(Task_BattleStart, 1);
- gTasks[taskId].data[1] = transition;
+ gTasks[taskId].tTransition = transition;
current_map_music_set__default_for_battle(song);
}
-void CheckForSafariZoneAndProceed(void)
+#undef tState
+#undef tTransition
+
+void BattleSetup_StartWildBattle(void)
{
if (GetSafariZoneFlag())
- StartBattle_Safari();
+ DoSafariBattle();
else
- StartBattle_StandardWild();
+ DoStandardWildBattle();
}
-void StartBattle_StandardWild(void)
+static void DoStandardWildBattle(void)
{
ScriptContext2_Enable();
FreezeMapObjects();
sub_80597F4();
- gMain.savedCallback = HandleWildBattleEnd;
+ gMain.savedCallback = CB2_EndWildBattle;
gBattleTypeFlags = 0;
- task_add_01_battle_start(GetWildBattleTransition(), 0);
+ CreateBattleStartTask(GetWildBattleTransition(), 0);
IncrementGameStat(7);
IncrementGameStat(8);
}
-void StartBattle_Roamer(void)
+void BattleSetup_StartRoamerBattle(void)
{
ScriptContext2_Enable();
FreezeMapObjects();
sub_80597F4();
- gMain.savedCallback = HandleWildBattleEnd;
+ gMain.savedCallback = CB2_EndWildBattle;
gBattleTypeFlags = BATTLE_TYPE_ROAMER;
- task_add_01_battle_start(GetWildBattleTransition(), 0);
+ CreateBattleStartTask(GetWildBattleTransition(), 0);
IncrementGameStat(7);
IncrementGameStat(8);
}
-void StartBattle_Safari(void)
+static void DoSafariBattle(void)
{
ScriptContext2_Enable();
FreezeMapObjects();
sub_80597F4();
gMain.savedCallback = sub_80C824C;
gBattleTypeFlags = BATTLE_TYPE_SAFARI;
- task_add_01_battle_start(GetWildBattleTransition(), 0);
+ CreateBattleStartTask(GetWildBattleTransition(), 0);
}
-void task_add_01_battle_start_with_music_and_stats(void)
+static void StartTheBattle(void)
{
- task_add_01_battle_start(GetTrainerBattleTransition(), 0);
+ CreateBattleStartTask(GetTrainerBattleTransition(), 0);
IncrementGameStat(7);
IncrementGameStat(9);
}
//Initiates battle where Wally catches Ralts
-void StartBattle_WallyTutorial(void)
+void ScrSpecial_StartWallyTutorialBattle(void)
{
CreateMaleMon(&gEnemyParty[0], SPECIES_RALTS, 5);
ScriptContext2_Enable();
gMain.savedCallback = c2_exit_to_overworld_1_continue_scripts_restart_music;
gBattleTypeFlags = BATTLE_TYPE_WALLY_TUTORIAL;
- task_add_01_battle_start(8, 0);
+ CreateBattleStartTask(B_TRANSITION_SLICE, 0);
}
-void StartBattle_ScriptedWild(void)
+void BattleSetup_StartScriptedWildBattle(void)
{
ScriptContext2_Enable();
- gMain.savedCallback = HandleScriptedWildBattleEnd;
+ gMain.savedCallback = CB2_EndScriptedWildBattle;
gBattleTypeFlags = 0;
- task_add_01_battle_start(GetWildBattleTransition(), 0);
+ CreateBattleStartTask(GetWildBattleTransition(), 0);
IncrementGameStat(7);
IncrementGameStat(8);
}
-void StartBattle_SouthernIsland(void)
+void ScrSpecial_StartSouthernIslandBattle(void)
{
ScriptContext2_Enable();
- gMain.savedCallback = HandleScriptedWildBattleEnd;
+ gMain.savedCallback = CB2_EndScriptedWildBattle;
gBattleTypeFlags = BATTLE_TYPE_LEGENDARY;
- task_add_01_battle_start(GetWildBattleTransition(), 0);
+ CreateBattleStartTask(GetWildBattleTransition(), 0);
IncrementGameStat(7);
IncrementGameStat(8);
}
-void StartBattle_Rayquaza(void)
+void ScrSpecial_StartRayquazaBattle(void)
{
ScriptContext2_Enable();
- gMain.savedCallback = HandleScriptedWildBattleEnd;
+ gMain.savedCallback = CB2_EndScriptedWildBattle;
gBattleTypeFlags = BATTLE_TYPE_LEGENDARY;
- task_add_01_battle_start(0, BGM_BATTLE34);
+ CreateBattleStartTask(B_TRANSITION_BLUR, BGM_BATTLE34);
IncrementGameStat(7);
IncrementGameStat(8);
}
-void StartBattle_GroudonKyogre(void)
+void ScrSpecial_StartGroudonKyogreBattle(void)
{
ScriptContext2_Enable();
- gMain.savedCallback = HandleScriptedWildBattleEnd;
+ gMain.savedCallback = CB2_EndScriptedWildBattle;
gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_KYOGRE_GROUDON;
- if (gGameVersion == 2)
- task_add_01_battle_start(0xB, BGM_BATTLE34); // KYOGRE
+ if (gGameVersion == VERSION_RUBY)
+ CreateBattleStartTask(B_TRANSITION_SHARDS, BGM_BATTLE34); // GROUDON
else
- task_add_01_battle_start(0x6, BGM_BATTLE34); // GROUDON
+ CreateBattleStartTask(B_TRANSITION_RIPPLE, BGM_BATTLE34); // KYOGRE
IncrementGameStat(7);
IncrementGameStat(8);
}
-void StartBattle_Regi(void)
+void ScrSpecial_StartRegiBattle(void)
{
ScriptContext2_Enable();
- gMain.savedCallback = HandleScriptedWildBattleEnd;
+ gMain.savedCallback = CB2_EndScriptedWildBattle;
gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_REGI;
- task_add_01_battle_start(0xA, BGM_BATTLE36);
+ CreateBattleStartTask(B_TRANSITION_GRID_SQUARES, BGM_BATTLE36);
IncrementGameStat(7);
IncrementGameStat(8);
}
-void HandleWildBattleEnd(void)
+static void CB2_EndWildBattle(void)
{
CpuFill16(0, (void *)BG_PLTT, BG_PLTT_SIZE);
ResetOamRange(0, 128);
- if (battle_exit_is_player_defeat(gBattleOutcome) == TRUE)
+ if (IsPlayerDefeated(gBattleOutcome) == TRUE)
{
SetMainCallback2(CB2_WhiteOut);
}
@@ -585,18 +622,18 @@ void HandleWildBattleEnd(void)
}
}
-void HandleScriptedWildBattleEnd(void)
+void CB2_EndScriptedWildBattle(void)
{
CpuFill16(0, (void *)BG_PLTT, BG_PLTT_SIZE);
ResetOamRange(0, 128);
- if (battle_exit_is_player_defeat(gBattleOutcome) == TRUE)
+ if (IsPlayerDefeated(gBattleOutcome) == TRUE)
SetMainCallback2(CB2_WhiteOut);
else
SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
}
-s8 GetBattleTerrain(void)
+s8 BattleSetup_GetTerrain(void)
{
u16 tileBehavior;
s16 x, y;
@@ -605,11 +642,11 @@ s8 GetBattleTerrain(void)
tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
if (MetatileBehavior_IsTallGrass(tileBehavior))
- return 0;
+ return BATTLE_TERRAIN_GRASS;
if (MetatileBehavior_IsLongGrass(tileBehavior))
- return 1;
+ return BATTLE_TERRAIN_LONG_GRASS;
if (MetatileBehavior_IsSandOrDeepSand(tileBehavior))
- return 2;
+ return BATTLE_TERRAIN_SAND;
switch (gMapHeader.mapType)
{
case MAP_TYPE_TOWN:
@@ -618,54 +655,49 @@ s8 GetBattleTerrain(void)
break;
case MAP_TYPE_UNDERGROUND:
if (sub_80574C4(tileBehavior))
- return 8;
+ return BATTLE_TERRAIN_BUILDING;
if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior))
- return 5;
- return 7;
+ return BATTLE_TERRAIN_POND;
+ return BATTLE_TERRAIN_CAVE;
case MAP_TYPE_INDOOR:
case MAP_TYPE_SECRET_BASE:
- return 8;
+ return BATTLE_TERRAIN_BUILDING;
case MAP_TYPE_UNDERWATER:
- return 3;
+ return BATTLE_TERRAIN_UNDERWATER;
case MAP_TYPE_6:
if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior))
- return 4;
- return 9;
+ return BATTLE_TERRAIN_WATER;
+ return BATTLE_TERRAIN_PLAIN;
}
if (sub_8057568(tileBehavior))
- return 4;
+ return BATTLE_TERRAIN_WATER;
if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior))
- return 5;
+ return BATTLE_TERRAIN_POND;
if (sub_80574D8(tileBehavior))
- return 6;
+ return BATTLE_TERRAIN_MOUNTAIN;
if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
{
if (sub_8057450(tileBehavior))
- return 5;
+ return BATTLE_TERRAIN_POND;
if (MetatileBehavior_IsBridge(tileBehavior) == TRUE)
- return 4;
+ return BATTLE_TERRAIN_WATER;
}
- if (gSaveBlock1.location.mapGroup == 0 && gSaveBlock1.location.mapNum == 28)
- return 2;
+ if (gSaveBlock1.location.mapGroup == MAP_GROUP_ROUTE113 && gSaveBlock1.location.mapNum == MAP_ID_ROUTE113)
+ return BATTLE_TERRAIN_SAND;
if (GetSav1Weather() == 8)
- return 2;
- return 9;
+ return BATTLE_TERRAIN_SAND;
+ return BATTLE_TERRAIN_PLAIN;
}
-s8 GetBattleTransitionTypeByMap(void)
+static s8 GetBattleTransitionTypeByMap(void)
{
- u8 flashUsed;
u16 tileBehavior;
s16 x, y;
PlayerGetDestCoords(&x, &y);
tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
-
- flashUsed = sav1_get_flash_used_on_map();
-
- if (flashUsed)
+ if (Overworld_GetFlashLevel())
return 2;
-
if (!MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior))
{
switch (gMapHeader.mapType)
@@ -681,7 +713,7 @@ s8 GetBattleTransitionTypeByMap(void)
return 3;
}
-u16 GetSumOfPartyMonLevel(u8 numMons)
+static u16 GetSumOfPlayerPartyLevel(u8 numMons)
{
u8 sum = 0;
int i;
@@ -701,37 +733,37 @@ u16 GetSumOfPartyMonLevel(u8 numMons)
return sum;
}
-u8 GetSumOfEnemyPartyLevel(u16 trainerNum, u8 numMons)
+static u8 GetSumOfEnemyPartyLevel(u16 opponentId, u8 numMons)
{
u8 i;
u8 sum;
u32 count = numMons;
void *party;
- if (gTrainers[trainerNum].partySize < count)
- count = gTrainers[trainerNum].partySize;
+ if (gTrainers[opponentId].partySize < count)
+ count = gTrainers[opponentId].partySize;
sum = 0;
- switch (gTrainers[trainerNum].partyFlags)
+ switch (gTrainers[opponentId].partyFlags)
{
case 0:
- party = gTrainers[trainerNum].party;
+ party = gTrainers[opponentId].party;
for (i = 0; i < count; i++)
sum += ((struct TrainerPartyMember0 *)party)[i].level;
break;
case 1:
- party = gTrainers[trainerNum].party;
+ party = gTrainers[opponentId].party;
for (i = 0; i < count; i++)
sum += ((struct TrainerPartyMember1 *)party)[i].level;
break;
case 2:
- party = gTrainers[trainerNum].party;
+ party = gTrainers[opponentId].party;
for (i = 0; i < count; i++)
sum += ((struct TrainerPartyMember2 *)party)[i].level;
break;
case 3:
- party = gTrainers[trainerNum].party;
+ party = gTrainers[opponentId].party;
for (i = 0; i < count; i++)
sum += ((struct TrainerPartyMember3 *)party)[i].level;
break;
@@ -740,76 +772,79 @@ u8 GetSumOfEnemyPartyLevel(u16 trainerNum, u8 numMons)
return sum;
}
-u8 GetWildBattleTransition(void)
+static u8 GetWildBattleTransition(void)
{
- u8 flashVar = GetBattleTransitionTypeByMap();
- u8 level = GetMonData(&gEnemyParty[0], MON_DATA_LEVEL);
+ u8 transitionType = GetBattleTransitionTypeByMap();
+ u8 enemyLevel = GetMonData(&gEnemyParty[0], MON_DATA_LEVEL);
+ u8 playerLevel = GetSumOfPlayerPartyLevel(1);
- if (level < (u8)GetSumOfPartyMonLevel(1)) // is wild mon level than the player's mon level?
- return gBattleTransitionTable_Wild[flashVar][0];
+ if (enemyLevel < playerLevel)
+ return gBattleTransitionTable_Wild[transitionType][0];
else
- return gBattleTransitionTable_Wild[flashVar][1]; // use a white fade in instead of normal transition.
+ return gBattleTransitionTable_Wild[transitionType][1];
}
-u8 GetTrainerBattleTransition(void)
+static u8 GetTrainerBattleTransition(void)
{
const struct Trainer *trainer;
u8 minPartyCount;
- u8 flashVar;
- u8 level;
+ u8 transitionType;
+ u8 enemyLevel;
+ u8 playerLevel;
if (gTrainerBattleOpponent == 1024) // link battle?
- return 16;
+ return B_TRANSITION_STEVEN;
trainer = gTrainers;
if (trainer[gTrainerBattleOpponent].trainerClass == 24) // league?
{
if (gTrainerBattleOpponent == 261)
- return 12;
+ return B_TRANSITION_SYDNEY;
if (gTrainerBattleOpponent == 262)
- return 13;
+ return B_TRANSITION_PHOEBE;
if (gTrainerBattleOpponent == 263)
- return 14;
+ return B_TRANSITION_GLACIA;
if (gTrainerBattleOpponent == 264)
- return 15;
- return 16;
+ return B_TRANSITION_DRAKE;
+ return B_TRANSITION_STEVEN;
}
if (trainer[gTrainerBattleOpponent].trainerClass == 32) // team leader?
- return 16;
+ return B_TRANSITION_STEVEN;
if (trainer[gTrainerBattleOpponent].doubleBattle == TRUE)
minPartyCount = 2; // double battles always at least have 2 pokemon.
else
minPartyCount = 1;
- flashVar = GetBattleTransitionTypeByMap();
- level = GetSumOfEnemyPartyLevel(gTrainerBattleOpponent, minPartyCount);
-
- if (level < (u8)GetSumOfPartyMonLevel(minPartyCount)) // is wild mon level than the player's mon level?
- return gBattleTransitionTable_Trainer[flashVar][0];
+ transitionType = GetBattleTransitionTypeByMap();
+ enemyLevel = GetSumOfEnemyPartyLevel(gTrainerBattleOpponent, minPartyCount);
+ playerLevel = GetSumOfPlayerPartyLevel(minPartyCount);
+ if (enemyLevel < playerLevel) // is wild mon level than the player's mon level?
+ return gBattleTransitionTable_Trainer[transitionType][0];
else
- return gBattleTransitionTable_Trainer[flashVar][1];
+ return gBattleTransitionTable_Trainer[transitionType][1];
}
-u8 GetBattleTowerBattleTransition(void)
+u8 BattleSetup_GetBattleTowerBattleTransition(void)
{
- u8 monData = GetMonData(&gEnemyParty[0], MON_DATA_LEVEL);
+ u8 enemyLevel = GetMonData(&gEnemyParty[0], MON_DATA_LEVEL);
+ u8 playerLevel = GetSumOfPlayerPartyLevel(1);
- if (monData < (u8)GetSumOfPartyMonLevel(1))
- return 4;
+ if (enemyLevel < playerLevel)
+ return B_TRANSITION_POKEBALLS_TRAIL;
else
- return 3;
+ return B_TRANSITION_BIG_POKEBALL;
}
-void ChooseStarter(void)
+void ScrSpecial_ChooseStarter(void)
{
SetMainCallback2(CB2_ChooseStarter);
gMain.savedCallback = CB2_GiveStarter;
}
-void CB2_GiveStarter(void)
+static void CB2_GiveStarter(void)
{
u16 starterPoke;
@@ -819,18 +854,18 @@ void CB2_GiveStarter(void)
ResetTasks();
sub_80408BC();
SetMainCallback2(CB2_StartFirstBattle);
- sub_811AAD8(0);
+ BattleTransition_Start(0);
}
-void CB2_StartFirstBattle(void)
+static void CB2_StartFirstBattle(void)
{
UpdatePaletteFade();
RunTasks();
- if (sub_811AAE8() == TRUE)
+ if (IsBattleTransitionDone() == TRUE)
{
gBattleTypeFlags = BATTLE_TYPE_FIRST_BATTLE;
- gMain.savedCallback = HandleFirstBattleEnd;
+ gMain.savedCallback = CB2_EndFirstBattle;
SetMainCallback2(sub_800E7C4);
prev_quest_postbuffer_cursor_backup_reset();
overworld_poison_timer_set();
@@ -839,35 +874,35 @@ void CB2_StartFirstBattle(void)
}
}
-void HandleFirstBattleEnd(void)
+static void CB2_EndFirstBattle(void)
{
sav1_reset_battle_music_maybe();
SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
}
-u32 TrainerBattleLoadArg32(const u8 *ptr)
+static u32 TrainerBattleLoadArg32(const u8 *ptr)
{
return ptr[0] | (ptr[1] << 8) | (ptr[2] << 16) | (ptr[3] << 24);
}
-u16 TrainerBattleLoadArg16(const u8 *ptr)
+static u16 TrainerBattleLoadArg16(const u8 *ptr)
{
return ptr[0] | (ptr[1] << 8);
}
-u8 TrainerBattleLoadArg8(const u8 *ptr)
+static u8 TrainerBattleLoadArg8(const u8 *ptr)
{
return ptr[0];
}
-u16 trainerflag_opponent(void)
+static u16 CurrentOpponentTrainerFlag(void)
{
return TRAINER_FLAG_START + gTrainerBattleOpponent;
}
-bool32 battle_exit_is_player_defeat(u32 a1)
+static bool32 IsPlayerDefeated(u32 battleOutcome)
{
- switch (a1)
+ switch (battleOutcome)
{
case 2:
case 3:
@@ -882,69 +917,69 @@ bool32 battle_exit_is_player_defeat(u32 a1)
return FALSE;
}
-void sub_80822BC(void)
+static void sub_80822BC(void)
{
- gTrainerBattleMode = 0;
+ sTrainerBattleMode = 0;
gTrainerBattleOpponent = 0;
- gTrainerMapObjectLocalId = 0;
- gTrainerIntroSpeech = 0;
- gTrainerDefeatSpeech = 0;
- gTrainerVictorySpeech = 0;
- gTrainerCannotBattleSpeech = 0;
- gTrainerBattleScriptReturnAddress = 0;
- gTrainerBattleEndScript = 0;
+ sTrainerMapObjectLocalId = 0;
+ sTrainerIntroSpeech = 0;
+ sTrainerDefeatSpeech = 0;
+ sTrainerVictorySpeech = 0;
+ sTrainerCannotBattleSpeech = 0;
+ sTrainerBattleScriptRetAddr = 0;
+ sTrainerBattleEndScript = 0;
}
-void TrainerBattleLoadArgs(const struct TrainerBattleSpec *specs, const u8 *data)
+static void TrainerBattleLoadArgs(const struct TrainerBattleParameter *specs, const u8 *data)
{
while (1)
{
switch (specs->ptrType)
{
- case 0:
- *(u8 *)specs->ptr = TrainerBattleLoadArg8(data);
- data++;
+ case TRAINER_PARAM_LOAD_VAL_8BIT:
+ *(u8 *)specs->varPtr = TrainerBattleLoadArg8(data);
+ data += 1;
break;
- case 1:
- *(u16 *)specs->ptr = TrainerBattleLoadArg16(data);
+ case TRAINER_PARAM_LOAD_VAL_16BIT:
+ *(u16 *)specs->varPtr = TrainerBattleLoadArg16(data);
data += 2;
break;
- case 2:
- *(u32 *)specs->ptr = TrainerBattleLoadArg32(data);
+ case TRAINER_PARAM_LOAD_VAL_32BIT:
+ *(u32 *)specs->varPtr = TrainerBattleLoadArg32(data);
data += 4;
break;
- case 3:
- *(u8 *)specs->ptr = 0;
+ case TRAINER_PARAM_CLEAR_VAL_8BIT:
+ *(u8 *)specs->varPtr = 0;
break;
- case 4:
- *(u16 *)specs->ptr = 0;
+ case TRAINER_PARAM_CLEAR_VAL_16BIT:
+ *(u16 *)specs->varPtr = 0;
break;
- case 5:
- *(u32 *)specs->ptr = 0;
+ case TRAINER_PARAM_CLEAR_VAL_32BIT:
+ *(u32 *)specs->varPtr = 0;
break;
- case 6:
- *(const u8 **)specs->ptr = data;
+ case TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR:
+ *(const u8 **)specs->varPtr = data;
return;
}
specs++;
}
}
-void battle_80801F0(void)
+static void battle_80801F0(void)
{
- if (gTrainerMapObjectLocalId)
+ if (sTrainerMapObjectLocalId)
{
- gScriptLastTalked = gTrainerMapObjectLocalId;
- gSelectedMapObject = GetFieldObjectIdByLocalIdAndMap(gTrainerMapObjectLocalId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
+ gScriptLastTalked = sTrainerMapObjectLocalId;
+ gSelectedMapObject = GetFieldObjectIdByLocalIdAndMap(sTrainerMapObjectLocalId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
}
}
-u8 *TrainerBattleConfigure(const u8 *data)
+u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data)
{
sub_80822BC();
- gTrainerBattleMode = TrainerBattleLoadArg8(data);
+ sTrainerBattleMode = TrainerBattleLoadArg8(data);
- switch (gTrainerBattleMode)
+ switch (sTrainerBattleMode)
{
case 3:
TrainerBattleLoadArgs(gTrainerBattleSpecs_3, data);
@@ -984,7 +1019,7 @@ void TrainerWantsBattle(u8 trainerMapObjId, u8 *trainerScript)
{
gSelectedMapObject = trainerMapObjId;
gScriptLastTalked = gMapObjects[trainerMapObjId].localId;
- TrainerBattleConfigure(trainerScript + 1);
+ BattleSetup_ConfigureTrainerBattle(trainerScript + 1);
ScriptContext1_SetupScript(gUnknown_0819F80B);
ScriptContext2_Enable();
}
@@ -1002,27 +1037,27 @@ void sub_8082524(void)
npc_set_running_behaviour_etc(mapObject, npc_running_behaviour_by_direction(mapObject->mapobj_unk_18));
}
-u8 sub_8082558(void)
+u8 ScrSpecial_GetTrainerBattleMode(void)
{
- return gTrainerBattleMode;
+ return sTrainerBattleMode;
}
-u8 sub_8082564(void)
+u8 ScrSpecial_HasTrainerBeenFought(void)
{
- return FlagGet(trainerflag_opponent());
+ return FlagGet(CurrentOpponentTrainerFlag());
}
-void sub_808257C(void)
+void SetCurrentTrainerBattledFlag(void)
{
- FlagSet(trainerflag_opponent());
+ FlagSet(CurrentOpponentTrainerFlag());
}
void unref_sub_8082590(void)
{
- FlagSet(trainerflag_opponent()); // duplicate function
+ FlagSet(CurrentOpponentTrainerFlag()); // duplicate function
}
-u8 trainer_flag_check(u16 flag)
+u8 HasTrainerAlreadyBeenFought(u16 flag)
{
return FlagGet(TRAINER_FLAG_START + flag);
}
@@ -1034,14 +1069,14 @@ void trainer_flag_set(u16 flag)
void trainer_flag_clear(u16 flag)
{
- FlagReset(TRAINER_FLAG_START + flag);
+ FlagClear(TRAINER_FLAG_START + flag);
}
-void sub_80825E4(void)
+void BattleSetup_StartTrainerBattle(void)
{
gBattleTypeFlags = BATTLE_TYPE_TRAINER;
gMain.savedCallback = sub_808260C;
- task_add_01_battle_start_with_music_and_stats();
+ StartTheBattle();
ScriptContext1_Stop();
}
@@ -1051,74 +1086,77 @@ void sub_808260C(void)
{
SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); // link battle?
}
- else if (battle_exit_is_player_defeat(gBattleOutcome) == TRUE)
+ else if (IsPlayerDefeated(gBattleOutcome) == TRUE)
{
SetMainCallback2(CB2_WhiteOut);
}
else
{
SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
- sub_808257C();
+ SetCurrentTrainerBattledFlag();
}
}
-void do_choose_name_or_words_screen(void)
+void CB2_EndTrainerEyeRematchBattle(void)
{
if (gTrainerBattleOpponent == 1024)
{
SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); // link battle?
}
- else if (battle_exit_is_player_defeat(gBattleOutcome) == TRUE)
+ else if (IsPlayerDefeated(gBattleOutcome) == TRUE)
{
SetMainCallback2(CB2_WhiteOut);
}
else
{
SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
- sub_808257C();
- sub_8082CB8();
+ SetCurrentTrainerBattledFlag();
+ SetTrainerFlagsAfterTrainerEyeRematch();
}
}
-void sub_80826B0(void)
+void ScrSpecial_StartTrainerEyeRematch(void)
{
gBattleTypeFlags = BATTLE_TYPE_TRAINER;
- gMain.savedCallback = do_choose_name_or_words_screen;
- task_add_01_battle_start_with_music_and_stats();
+ gMain.savedCallback = CB2_EndTrainerEyeRematchBattle;
+ StartTheBattle();
ScriptContext1_Stop();
}
-void sub_80826D8(void)
+static u8 *GetTrainerIntroSpeech(void);
+static u8 *GetTrainerNonBattlingSpeech(void);
+
+void ScrSpecial_ShowTrainerIntroSpeech(void)
{
- ShowFieldMessage(sub_808281C());
+ ShowFieldMessage(GetTrainerIntroSpeech());
}
-u8 *sub_80826E8(void)
+u8 *BattleSetup_GetScriptAddrAfterBattle(void)
{
- if (gTrainerBattleScriptReturnAddress)
- return gTrainerBattleScriptReturnAddress;
+ if (sTrainerBattleScriptRetAddr)
+ return sTrainerBattleScriptRetAddr;
else
return gUnknown_081C6C02;
}
-u8 *sub_8082700(void)
+u8 *BattleSetup_GetTrainerPostBattleScript(void)
{
- if (gTrainerBattleEndScript)
- return gTrainerBattleEndScript;
+ if (sTrainerBattleEndScript)
+ return sTrainerBattleEndScript;
else
return gUnknown_081C6C02;
}
-void sub_8082718(void)
+void ScrSpecial_ShowTrainerNonBattlingSpeech(void)
{
- ShowFieldMessage(sub_8082880());
+ ShowFieldMessage(GetTrainerNonBattlingSpeech());
}
void PlayTrainerEncounterMusic(void)
{
u16 music;
- if (gTrainerBattleMode != 1 && gTrainerBattleMode != 8)
+ if (sTrainerBattleMode != 1 && sTrainerBattleMode != 8)
{
switch (sub_803FC58(gTrainerBattleOpponent))
{
@@ -1169,7 +1207,7 @@ void PlayTrainerEncounterMusic(void)
}
//Returns an empty string if a null pointer was passed, otherwise returns str
-u8 *SanitizeString(const u8 *str)
+static u8 *SanitizeString(const u8 *str)
{
if (str)
return (u8 *) str;
@@ -1177,9 +1215,9 @@ u8 *SanitizeString(const u8 *str)
return (u8 *) gOtherText_CancelWithTerminator;
}
-u8 *sub_808281C(void)
+static u8 *GetTrainerIntroSpeech(void)
{
- return SanitizeString(gTrainerIntroSpeech);
+ return SanitizeString(sTrainerIntroSpeech);
}
u8 *sub_8082830(void)
@@ -1189,7 +1227,7 @@ u8 *sub_8082830(void)
if (gTrainerBattleOpponent == 1024)
str = sub_80BCCE8();
else
- str = gTrainerDefeatSpeech;
+ str = sTrainerDefeatSpeech;
StringExpandPlaceholders(gStringVar4, SanitizeString(str));
return gStringVar4;
@@ -1197,43 +1235,43 @@ u8 *sub_8082830(void)
u8 *unref_sub_808286C(void)
{
- return SanitizeString(gTrainerVictorySpeech);
+ return SanitizeString(sTrainerVictorySpeech);
}
-u8 *sub_8082880(void)
+static u8 *GetTrainerNonBattlingSpeech(void)
{
- return SanitizeString(gTrainerCannotBattleSpeech);
+ return SanitizeString(sTrainerCannotBattleSpeech);
}
-s32 sub_8082894(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
+s32 sub_8082894(const struct TrainerEyeTrainer *trainers, u16 opponentId)
{
s32 i;
for (i = 0; i < NUM_TRAINER_EYE_TRAINERS; i++)
{
- if (trainers[i].trainerNums[0] == trainerNum)
+ if (trainers[i].opponentIDs[0] == opponentId)
return i;
}
return -1;
}
-s32 sub_80828B8(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
+s32 sub_80828B8(const struct TrainerEyeTrainer *trainers, u16 opponentId)
{
s32 i;
s32 j;
for (i = 0; i < NUM_TRAINER_EYE_TRAINERS; i++)
{
- for (j = 0; j < 5 && trainers[i].trainerNums[j] != 0; j++)
+ for (j = 0; j < 5 && trainers[i].opponentIDs[j] != 0; j++)
{
- if (trainers[i].trainerNums[j] == trainerNum)
+ if (trainers[i].opponentIDs[j] == opponentId)
return i;
}
}
return -1;
}
-bool32 sub_80828FC(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
+bool32 UpdateRandomTrainerEyeRematches(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
{
int i;
bool32 ret = FALSE;
@@ -1243,14 +1281,19 @@ bool32 sub_80828FC(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 m
if (trainers[i].mapGroup == mapGroup && trainers[i].mapNum == mapNum)
{
if (gSaveBlock1.trainerRematches[i] != 0)
+ {
+ // Trainer already wants rematch. Don't bother updating it
ret = TRUE;
- else if (trainer_flag_check(trainers[i].trainerNums[0]) == TRUE && (Random() % 100) <= 30)
+ }
+ else if (HasTrainerAlreadyBeenFought(trainers[i].opponentIDs[0]) == TRUE
+ && (Random() % 100) <= 30) // 31% chance of getting a rematch
{
- int j = 1;
+ int rematches = 1;
- while (j < 5 && trainers[i].trainerNums[j] != 0 && trainer_flag_check(trainers[i].trainerNums[j]))
- j++;
- gSaveBlock1.trainerRematches[i] = j;
+ while (rematches < 5 && trainers[i].opponentIDs[rematches] != 0
+ && HasTrainerAlreadyBeenFought(trainers[i].opponentIDs[rematches]))
+ rematches++;
+ gSaveBlock1.trainerRematches[i] = rematches;
ret = TRUE;
}
}
@@ -1282,9 +1325,9 @@ s32 sub_80829E8(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapN
return 0;
}
-bool8 sub_8082A18(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
+bool8 sub_8082A18(const struct TrainerEyeTrainer *trainers, u16 opponentId)
{
- s32 trainerEyeIndex = sub_8082894(trainers, trainerNum);
+ s32 trainerEyeIndex = sub_8082894(trainers, opponentId);
if (trainerEyeIndex != -1 && trainerEyeIndex < 100 && gSaveBlock1.trainerRematches[trainerEyeIndex])
return TRUE;
@@ -1292,9 +1335,9 @@ bool8 sub_8082A18(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
return FALSE;
}
-bool8 sub_8082A54(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
+bool8 GetTrainerEyeRematchFlag(const struct TrainerEyeTrainer *trainers, u16 opponentId)
{
- s32 trainerEyeIndex = sub_80828B8(trainers, trainerNum);
+ s32 trainerEyeIndex = sub_80828B8(trainers, opponentId);
if (trainerEyeIndex != -1 && trainerEyeIndex < 100 && gSaveBlock1.trainerRematches[trainerEyeIndex])
return TRUE;
@@ -1302,38 +1345,38 @@ bool8 sub_8082A54(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
return FALSE;
}
-u16 sub_8082A90(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
+u16 sub_8082A90(const struct TrainerEyeTrainer *trainers, u16 opponentId)
{
int i;
const struct TrainerEyeTrainer *trainer;
- s32 trainerEyeIndex = sub_8082894(trainers, trainerNum);
+ s32 trainerEyeIndex = sub_8082894(trainers, opponentId);
if (trainerEyeIndex == -1)
return 0;
trainer = &trainers[trainerEyeIndex];
for (i = 1; i < 5; i++)
{
- if (!trainer->trainerNums[i])
- return trainer->trainerNums[i - 1];
- if (!trainer_flag_check(trainer->trainerNums[i]))
- return trainer->trainerNums[i];
+ if (!trainer->opponentIDs[i])
+ return trainer->opponentIDs[i - 1];
+ if (!HasTrainerAlreadyBeenFought(trainer->opponentIDs[i]))
+ return trainer->opponentIDs[i];
}
- return trainer->trainerNums[4];
+ return trainer->opponentIDs[4];
}
-void sub_8082AE4(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
+void ClearTrainerEyeRematchFlag(const struct TrainerEyeTrainer *trainers, u16 opponentId)
{
- s32 trainerEyeIndex = sub_80828B8(trainers, trainerNum);
+ s32 trainerEyeIndex = sub_80828B8(trainers, opponentId);
if (trainerEyeIndex != -1)
gSaveBlock1.trainerRematches[trainerEyeIndex] = 0;
}
-bool8 sub_8082B10(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
+bool8 sub_8082B10(const struct TrainerEyeTrainer *trainers, u16 opponentId)
{
- s32 trainerEyeIndex = sub_8082894(trainers, trainerNum);
+ s32 trainerEyeIndex = sub_8082894(trainers, opponentId);
- if (trainerEyeIndex != -1 && trainer_flag_check(trainers[trainerEyeIndex].trainerNums[1]))
+ if (trainerEyeIndex != -1 && HasTrainerAlreadyBeenFought(trainers[trainerEyeIndex].opponentIDs[1]))
return TRUE;
else
return FALSE;
@@ -1377,7 +1420,7 @@ bool32 sub_8082BA4(void)
void sub_8082BD0(u16 mapGroup, u16 mapNum)
{
- if (sub_8082BA4() && sub_80828FC(gTrainerEyeTrainers, mapGroup, mapNum) == TRUE)
+ if (sub_8082BA4() && UpdateRandomTrainerEyeRematches(gTrainerEyeTrainers, mapGroup, mapNum) == TRUE)
gSaveBlock1.trainerRematchStepCounter = 0;
}
@@ -1391,9 +1434,9 @@ s32 unref_sub_8082C2C(u16 mapGroup, u16 mapNum)
return sub_80829E8(gTrainerEyeTrainers, mapGroup, mapNum);
}
-u16 sub_8082C4C(u16 trainerNum)
+u16 sub_8082C4C(u16 opponentId)
{
- return sub_8082A90(gTrainerEyeTrainers, trainerNum);
+ return sub_8082A90(gTrainerEyeTrainers, opponentId);
}
s32 sub_8082C68(void)
@@ -1404,13 +1447,13 @@ s32 sub_8082C68(void)
return sub_8082B10(gTrainerEyeTrainers, gTrainerBattleOpponent);
}
-u8 sub_8082C9C(void)
+u8 ScrSpecial_GetTrainerEyeRematchFlag(void)
{
- return sub_8082A54(gTrainerEyeTrainers, gTrainerBattleOpponent);
+ return GetTrainerEyeRematchFlag(gTrainerEyeTrainers, gTrainerBattleOpponent);
}
-void sub_8082CB8(void)
+void SetTrainerFlagsAfterTrainerEyeRematch(void)
{
- sub_8082AE4(gTrainerEyeTrainers, gTrainerBattleOpponent);
- sub_808257C();
+ ClearTrainerEyeRematchFlag(gTrainerEyeTrainers, gTrainerBattleOpponent);
+ SetCurrentTrainerBattledFlag();
}
diff --git a/src/battle_transition.c b/src/battle_transition.c
new file mode 100644
index 000000000..53d32d03a
--- /dev/null
+++ b/src/battle_transition.c
@@ -0,0 +1,2513 @@
+#include "global.h"
+#include "battle_transition.h"
+#include "main.h"
+#include "overworld.h"
+#include "task.h"
+#include "palette.h"
+#include "trig.h"
+#include "field_effect.h"
+#include "rng.h"
+#include "sprite.h"
+#include "sound.h"
+#include "songs.h"
+#include "trainer.h"
+#include "field_camera.h"
+
+void sub_807DE10(void);
+void dp12_8087EA4(void);
+
+extern u8 ewram[];
+extern u16 gUnknown_03005560[];
+extern u16 gUnknown_03004DE0[][0x3C0];
+
+extern const struct OamData gFieldOamData_32x32;
+
+struct TransitionData
+{
+ vs8 VBlank_DMA;
+ u16 WININ;
+ u16 WINOUT;
+ u16 field_6;
+ u16 WIN0V;
+ u16 field_A;
+ u16 field_C;
+ u16 BLDCNT;
+ u16 BLDALPHA;
+ u16 BLDY;
+ s16 field_14;
+ s16 field_16;
+ s16 field_18;
+ s16 field_1A;
+ s16 field_1C;
+ s16 field_1E; // unused
+ s16 field_20;
+ s16 field_22; // unused
+ s16 data[11];
+};
+
+#define TRANSITION_STRUCT (*(struct TransitionData *) (ewram + 0xC000))
+typedef bool8 (*TransitionState)(struct Task* task);
+typedef bool8 (*TransitionSpriteCallback)(struct Sprite* sprite);
+
+// this file's functions
+static void LaunchBattleTransitionTask(u8 transitionID);
+static void Task_BattleTransitionMain(u8 taskID);
+static void Phase1Task_TransitionAll(u8 taskID);
+static void Phase2Task_Transition_Blur(u8 taskID);
+static void Phase2Task_Transition_Swirl(u8 taskID);
+static void Phase2Task_Transition_Shuffle(u8 taskID);
+static void Phase2Task_Transition_BigPokeball(u8 taskID);
+static void Phase2Task_Transition_PokeballsTrail(u8 taskID);
+static void Phase2Task_Transition_Clockwise_BlackFade(u8 taskID);
+static void Phase2Task_Transition_Ripple(u8 taskID);
+static void Phase2Task_Transition_Wave(u8 taskID);
+static void Phase2Task_Transition_Slice(u8 taskID);
+static void Phase2Task_Transition_WhiteFade(u8 taskID);
+static void Phase2Task_Transition_GridSquares(u8 taskID);
+static void Phase2Task_Transition_Shards(u8 taskID);
+static void Phase2Task_Transition_Sydney(u8 taskID);
+static void Phase2Task_Transition_Phoebe(u8 taskID);
+static void Phase2Task_Transition_Glacia(u8 taskID);
+static void Phase2Task_Transition_Drake(u8 taskID);
+static void Phase2Task_Transition_Steven(u8 taskID);
+static bool8 Transition_Phase1(struct Task* task);
+static bool8 Transition_WaitForPhase1(struct Task* task);
+static bool8 Transition_Phase2(struct Task* task);
+static bool8 Transition_WaitForPhase2(struct Task* task);
+static void VBlankCB_Phase2_Transition_Swirl(void);
+static void HBlankCB_Phase2_Transition_Swirl(void);
+static void VBlankCB_Phase2_Transition_Shuffle(void);
+static void HBlankCB_Phase2_Transition_Shuffle(void);
+static void VBlankCB0_Phase2_Transition_BigPokeball(void);
+static void VBlankCB1_Phase2_Transition_BigPokeball(void);
+static void VBlankCB_Phase2_Transition_Clockwise_BlackFade(void);
+static void VBlankCB_Phase2_Transition_Ripple(void);
+static void HBlankCB_Phase2_Transition_Ripple(void);
+static void VBlankCB_Phase2_Transition_Wave(void);
+static void VBlankCB_Phase2_Transition_Slice(void);
+static void HBlankCB_Phase2_Transition_Slice(void);
+static void VBlankCB0_Phase2_Transition_WhiteFade(void);
+static void VBlankCB1_Phase2_Transition_WhiteFade(void);
+static void HBlankCB_Phase2_Transition_WhiteFade(void);
+static void VBlankCB0_Phase2_Mugshots(void);
+static void VBlankCB1_Phase2_Mugshots(void);
+static void HBlankCB_Phase2_Mugshots(void);
+static void VBlankCB_Phase2_Transition_Shards(void);
+static bool8 Phase2_Transition_Blur_Func1(struct Task* task);
+static bool8 Phase2_Transition_Blur_Func2(struct Task* task);
+static bool8 Phase2_Transition_Blur_Func3(struct Task* task);
+static bool8 Phase2_Transition_Swirl_Func1(struct Task* task);
+static bool8 Phase2_Transition_Swirl_Func2(struct Task* task);
+static bool8 Phase2_Transition_Shuffle_Func1(struct Task* task);
+static bool8 Phase2_Transition_Shuffle_Func2(struct Task* task);
+static bool8 Phase2_Transition_BigPokeball_Func1(struct Task* task);
+static bool8 Phase2_Transition_BigPokeball_Func2(struct Task* task);
+static bool8 Phase2_Transition_BigPokeball_Func3(struct Task* task);
+static bool8 Phase2_Transition_BigPokeball_Func4(struct Task* task);
+static bool8 Phase2_Transition_BigPokeball_Func5(struct Task* task);
+static bool8 Phase2_Transition_BigPokeball_Func6(struct Task* task);
+static bool8 Phase2_Transition_PokeballsTrail_Func1(struct Task* task);
+static bool8 Phase2_Transition_PokeballsTrail_Func2(struct Task* task);
+static bool8 Phase2_Transition_PokeballsTrail_Func3(struct Task* task);
+static bool8 Phase2_Transition_Clockwise_BlackFade_Func1(struct Task* task);
+static bool8 Phase2_Transition_Clockwise_BlackFade_Func2(struct Task* task);
+static bool8 Phase2_Transition_Clockwise_BlackFade_Func3(struct Task* task);
+static bool8 Phase2_Transition_Clockwise_BlackFade_Func4(struct Task* task);
+static bool8 Phase2_Transition_Clockwise_BlackFade_Func5(struct Task* task);
+static bool8 Phase2_Transition_Clockwise_BlackFade_Func6(struct Task* task);
+static bool8 Phase2_Transition_Clockwise_BlackFade_Func7(struct Task* task);
+static bool8 Phase2_Transition_Ripple_Func1(struct Task* task);
+static bool8 Phase2_Transition_Ripple_Func2(struct Task* task);
+static bool8 Phase2_Transition_Wave_Func1(struct Task* task);
+static bool8 Phase2_Transition_Wave_Func2(struct Task* task);
+static bool8 Phase2_Transition_Wave_Func3(struct Task* task);
+static bool8 Phase2_Transition_Slice_Func1(struct Task* task);
+static bool8 Phase2_Transition_Slice_Func2(struct Task* task);
+static bool8 Phase2_Transition_Slice_Func3(struct Task* task);
+static bool8 Phase2_Transition_WhiteFade_Func1(struct Task* task);
+static bool8 Phase2_Transition_WhiteFade_Func2(struct Task* task);
+static bool8 Phase2_Transition_WhiteFade_Func3(struct Task* task);
+static bool8 Phase2_Transition_WhiteFade_Func4(struct Task* task);
+static bool8 Phase2_Transition_WhiteFade_Func5(struct Task* task);
+static bool8 Phase2_Transition_GridSquares_Func1(struct Task* task);
+static bool8 Phase2_Transition_GridSquares_Func2(struct Task* task);
+static bool8 Phase2_Transition_GridSquares_Func3(struct Task* task);
+static bool8 Phase2_Transition_Shards_Func1(struct Task* task);
+static bool8 Phase2_Transition_Shards_Func2(struct Task* task);
+static bool8 Phase2_Transition_Shards_Func3(struct Task* task);
+static bool8 Phase2_Transition_Shards_Func4(struct Task* task);
+static bool8 Phase2_Transition_Shards_Func5(struct Task* task);
+static bool8 Phase2_Mugshot_Func1(struct Task* task);
+static bool8 Phase2_Mugshot_Func2(struct Task* task);
+static bool8 Phase2_Mugshot_Func3(struct Task* task);
+static bool8 Phase2_Mugshot_Func4(struct Task* task);
+static bool8 Phase2_Mugshot_Func5(struct Task* task);
+static bool8 Phase2_Mugshot_Func6(struct Task* task);
+static bool8 Phase2_Mugshot_Func7(struct Task* task);
+static bool8 Phase2_Mugshot_Func8(struct Task* task);
+static bool8 Phase2_Mugshot_Func9(struct Task* task);
+static bool8 Phase2_Mugshot_Func10(struct Task* task);
+static void Phase2Task_MugShotTransition(u8 taskID);
+static void Mugshots_CreateOpponentPlayerSprites(struct Task* task);
+static void sub_811CA10(s16 spriteID, s16 value);
+static void sub_811CA28(s16 spriteID);
+static s16 sub_811CA44(s16 spriteID);
+static bool8 sub_811C934(struct Sprite* sprite);
+static bool8 sub_811C938(struct Sprite* sprite);
+static bool8 sub_811C984(struct Sprite* sprite);
+static bool8 sub_811C9B8(struct Sprite* sprite);
+static bool8 sub_811C9E4(struct Sprite* sprite);
+static void CreatePhase1Task(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4);
+static bool8 sub_811D52C(void);
+static void Phase1_Task_RunFuncs(u8 taskID);
+static bool8 Phase1_TransitionAll_Func1(struct Task* task);
+static bool8 Phase1_TransitionAll_Func2(struct Task* task);
+static void sub_811D658(void);
+static void VBlankCB_BattleTransition(void);
+static void sub_811D6A8(u16** a0, u16** a1);
+static void sub_811D690(u16** a0);
+static void sub_811D6D4(void);
+static void sub_811D6E8(s16* array, s16 sinAdd, s16 index, s16 indexIncrementer, s16 amplitude, s16 arrSize);
+static void sub_811D764(u16* a0, s16 a1, s16 a2, s16 a3);
+static void sub_811D8FC(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6);
+static bool8 sub_811D978(s16* a0, bool8 a1, bool8 a2);
+static void sub_811CFD0(struct Sprite* sprite);
+static void sub_811B720(struct Sprite* sprite);
+static void sub_811C90C(struct Sprite* sprite);
+
+// const data
+
+static const u32 sBigPokeball_Tileset[] = INCBIN_U32("graphics/battle_transitions/big_pokeball.4bpp");
+static const u32 sPokeballTrail_Tileset[] = INCBIN_U32("graphics/battle_transitions/pokeball_trail.4bpp");
+static const u8 sSpriteImage_83FC148[] = INCBIN_U8("graphics/battle_transitions/pokeball.4bpp");
+static const u32 sUnknown_083FC348[] = INCBIN_U32("graphics/battle_transitions/elite_four_bg.4bpp");
+static const u8 sSpriteImage_83FC528[] = INCBIN_U8("graphics/battle_transitions/unused_brendan.4bpp");
+static const u8 sSpriteImage_83FCD28[] = INCBIN_U8("graphics/battle_transitions/unused_lass.4bpp");
+static const u32 sShrinkingBoxTileset[] = INCBIN_U32("graphics/battle_transitions/shrinking_box.4bpp");
+
+static struct TransitionData * const sTransitionStructPtr = &TRANSITION_STRUCT;
+
+static const TaskFunc sPhase1_Tasks[TRANSITIONS_NO] =
+{
+ [0 ... TRANSITIONS_NO - 1] = &Phase1Task_TransitionAll
+};
+
+static const TaskFunc sPhase2_Tasks[TRANSITIONS_NO] =
+{
+ Phase2Task_Transition_Blur, // 0
+ Phase2Task_Transition_Swirl, // 1
+ Phase2Task_Transition_Shuffle, // 2
+ Phase2Task_Transition_BigPokeball, // 3
+ Phase2Task_Transition_PokeballsTrail, // 4
+ Phase2Task_Transition_Clockwise_BlackFade, // 5
+ Phase2Task_Transition_Ripple, // 6
+ Phase2Task_Transition_Wave, // 7
+ Phase2Task_Transition_Slice, // 8
+ Phase2Task_Transition_WhiteFade, // 9
+ Phase2Task_Transition_GridSquares, // 10
+ Phase2Task_Transition_Shards, // 11
+ Phase2Task_Transition_Sydney, // 12
+ Phase2Task_Transition_Phoebe, // 13
+ Phase2Task_Transition_Glacia, // 14
+ Phase2Task_Transition_Drake, // 15
+ Phase2Task_Transition_Steven, // 16
+};
+
+static const TransitionState sMainTransitionPhases[] =
+{
+ &Transition_Phase1,
+ &Transition_WaitForPhase1,
+ &Transition_Phase2,
+ &Transition_WaitForPhase2
+};
+
+static const TransitionState sPhase2_Transition_Blur_Funcs[] =
+{
+ Phase2_Transition_Blur_Func1,
+ Phase2_Transition_Blur_Func2,
+ Phase2_Transition_Blur_Func3
+};
+
+static const TransitionState sPhase2_Transition_Swirl_Funcs[] =
+{
+ Phase2_Transition_Swirl_Func1,
+ Phase2_Transition_Swirl_Func2,
+};
+
+static const TransitionState sPhase2_Transition_Shuffle_Funcs[] =
+{
+ Phase2_Transition_Shuffle_Func1,
+ Phase2_Transition_Shuffle_Func2,
+};
+
+static const TransitionState sPhase2_Transition_BigPokeball_Funcs[] =
+{
+ Phase2_Transition_BigPokeball_Func1,
+ Phase2_Transition_BigPokeball_Func2,
+ Phase2_Transition_BigPokeball_Func3,
+ Phase2_Transition_BigPokeball_Func4,
+ Phase2_Transition_BigPokeball_Func5,
+ Phase2_Transition_BigPokeball_Func6
+};
+
+static const TransitionState sPhase2_Transition_PokeballsTrail_Funcs[] =
+{
+ Phase2_Transition_PokeballsTrail_Func1,
+ Phase2_Transition_PokeballsTrail_Func2,
+ Phase2_Transition_PokeballsTrail_Func3
+};
+
+static const s16 sUnknown_083FD7E4[2] = {-16, 256};
+static const s16 sUnknown_083FD7E8[5] = {0, 32, 64, 18, 48};
+static const s16 sUnknown_083FD7F2[2] = {8, -8};
+
+static const TransitionState sPhase2_Transition_Clockwise_BlackFade_Funcs[] =
+{
+ Phase2_Transition_Clockwise_BlackFade_Func1,
+ Phase2_Transition_Clockwise_BlackFade_Func2,
+ Phase2_Transition_Clockwise_BlackFade_Func3,
+ Phase2_Transition_Clockwise_BlackFade_Func4,
+ Phase2_Transition_Clockwise_BlackFade_Func5,
+ Phase2_Transition_Clockwise_BlackFade_Func6,
+ Phase2_Transition_Clockwise_BlackFade_Func7
+};
+
+static const TransitionState sPhase2_Transition_Ripple_Funcs[] =
+{
+ Phase2_Transition_Ripple_Func1,
+ Phase2_Transition_Ripple_Func2
+};
+
+static const TransitionState sPhase2_Transition_Wave_Funcs[] =
+{
+ Phase2_Transition_Wave_Func1,
+ Phase2_Transition_Wave_Func2,
+ Phase2_Transition_Wave_Func3
+};
+
+static const TransitionState sPhase2_Mugshot_Transition_Funcs[] =
+{
+ Phase2_Mugshot_Func1,
+ Phase2_Mugshot_Func2,
+ Phase2_Mugshot_Func3,
+ Phase2_Mugshot_Func4,
+ Phase2_Mugshot_Func5,
+ Phase2_Mugshot_Func6,
+ Phase2_Mugshot_Func7,
+ Phase2_Mugshot_Func8,
+ Phase2_Mugshot_Func9,
+ Phase2_Mugshot_Func10
+};
+
+static const u8 sMugshotsTrainerPicIDsTable[MUGSHOTS_NO] = {TRAINER_PIC_SIDNEY, TRAINER_PIC_PHOEBE, TRAINER_PIC_GLACIA, TRAINER_PIC_DRAKE, TRAINER_PIC_STEVEN};
+static const s16 sMugshotsOpponentRotationScales[MUGSHOTS_NO][2] =
+{
+ {0x200, 0x200},
+ {0x200, 0x200},
+ {0x1B0, 0x1B0},
+ {0x1A0, 0x1A0},
+ {0x188, 0x188},
+};
+static const s16 sMugshotsOpponentCoords[MUGSHOTS_NO][2] =
+{
+ {0, 0},
+ {0, 0},
+ {-4, 4},
+ {0, 5},
+ {0, 7},
+};
+
+static const TransitionSpriteCallback sUnknown_083FD880[] =
+{
+ sub_811C934,
+ sub_811C938,
+ sub_811C984,
+ sub_811C9B8,
+ sub_811C934,
+ sub_811C9E4,
+ sub_811C934
+};
+
+static const s16 sUnknown_083FD89C[2] = {12, -12};
+static const s16 sUnknown_083FD8A0[2] = {-1, 1};
+
+static const TransitionState sPhase2_Transition_Slice_Funcs[] =
+{
+ Phase2_Transition_Slice_Func1,
+ Phase2_Transition_Slice_Func2,
+ Phase2_Transition_Slice_Func3
+};
+
+static const TransitionState sPhase2_Transition_WhiteFade_Funcs[] =
+{
+ Phase2_Transition_WhiteFade_Func1,
+ Phase2_Transition_WhiteFade_Func2,
+ Phase2_Transition_WhiteFade_Func3,
+ Phase2_Transition_WhiteFade_Func4,
+ Phase2_Transition_WhiteFade_Func5
+};
+
+static const s16 sUnknown_083FD8C4[8] = {0, 20, 15, 40, 10, 25, 35, 5};
+
+static const TransitionState sPhase2_Transition_GridSquares_Funcs[] =
+{
+ Phase2_Transition_GridSquares_Func1,
+ Phase2_Transition_GridSquares_Func2,
+ Phase2_Transition_GridSquares_Func3
+};
+
+static const TransitionState sPhase2_Transition_Shards_Funcs[] =
+{
+ Phase2_Transition_Shards_Func1,
+ Phase2_Transition_Shards_Func2,
+ Phase2_Transition_Shards_Func3,
+ Phase2_Transition_Shards_Func4,
+ Phase2_Transition_Shards_Func5
+};
+
+static const s16 sUnknown_083FD8F4[][5] =
+{
+ {56, 0, 0, 160, 0},
+ {104, 160, 240, 88, 1},
+ {240, 72, 56, 0, 1},
+ {0, 32, 144, 160, 0},
+ {144, 160, 184, 0, 1},
+ {56, 0, 168, 160, 0},
+ {168, 160, 48, 0, 1},
+};
+
+static const s16 sUnknown_083FD93A[] = {8, 4, 2, 1, 1, 1, 0};
+
+static const TransitionState sPhase1_TransitionAll_Funcs[] =
+{
+ Phase1_TransitionAll_Func1,
+ Phase1_TransitionAll_Func2
+};
+
+static const struct SpriteFrameImage sSpriteImageTable_83FD950[] =
+{
+ sSpriteImage_83FC148, 0x200
+};
+
+static const union AnimCmd sSpriteAnim_83FD958[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_83FD960[] =
+{
+ sSpriteAnim_83FD958
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_83FD964[] =
+{
+ AFFINEANIMCMD_FRAME(0, 0, -4, 1),
+ AFFINEANIMCMD_JUMP(0)
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_83FD974[] =
+{
+ AFFINEANIMCMD_FRAME(0, 0, 4, 1),
+ AFFINEANIMCMD_JUMP(0)
+};
+
+static const union AffineAnimCmd *const sSpriteAffineAnimTable_83FD984[] =
+{
+ sSpriteAffineAnim_83FD964,
+ sSpriteAffineAnim_83FD974
+};
+
+static const struct SpriteTemplate sSpriteTemplate_83FD98C =
+{
+ .tileTag = 0xFFFF,
+ .paletteTag = 4105,
+ .oam = &gFieldOamData_32x32,
+ .anims = sSpriteAnimTable_83FD960,
+ .images = sSpriteImageTable_83FD950,
+ .affineAnims = sSpriteAffineAnimTable_83FD984,
+ .callback = sub_811B720
+};
+
+static const struct OamData gOamData_83FD9A4 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const struct SpriteFrameImage sSpriteImageTable_83FD9AC[] =
+{
+ sSpriteImage_83FC528, 0x800
+};
+
+static const struct SpriteFrameImage sSpriteImageTable_83FD9B4[] =
+{
+ sSpriteImage_83FCD28, 0x800
+};
+
+static const union AnimCmd sSpriteAnim_83FD9BC[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_83FD9C4[] =
+{
+ sSpriteAnim_83FD9BC
+};
+
+static const struct SpriteTemplate sSpriteTemplate_83FD9C8 =
+{
+ .tileTag = 0xFFFF,
+ .paletteTag = 4106,
+ .oam = &gOamData_83FD9A4,
+ .anims = sSpriteAnimTable_83FD9C4,
+ .images = sSpriteImageTable_83FD9AC,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_811C90C
+};
+
+static const struct SpriteTemplate sSpriteTemplate_83FD9E0 =
+{
+ .tileTag = 0xFFFF,
+ .paletteTag = 4106,
+ .oam = &gOamData_83FD9A4,
+ .anims = sSpriteAnimTable_83FD9C4,
+ .images = sSpriteImageTable_83FD9B4,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_811C90C
+};
+
+static const u16 gFieldEffectObjectPalette10[] = INCBIN_U16("graphics/field_effect_objects/palettes/10.gbapal");
+
+const struct SpritePalette gFieldEffectObjectPaletteInfo10 =
+{
+ gFieldEffectObjectPalette10, 0x1009
+};
+
+static const u16 sMugshotPal_Sydney[] = INCBIN_U16("graphics/battle_transitions/sidney_bg.gbapal");
+static const u16 sMugshotPal_Phoebe[] = INCBIN_U16("graphics/battle_transitions/phoebe_bg.gbapal");
+static const u16 sMugshotPal_Glacia[] = INCBIN_U16("graphics/battle_transitions/glacia_bg.gbapal");
+static const u16 sMugshotPal_Drake[] = INCBIN_U16("graphics/battle_transitions/drake_bg.gbapal");
+static const u16 sMugshotPal_Steven[] = INCBIN_U16("graphics/battle_transitions/steven_bg.gbapal");
+static const u16 sMugshotPal_Brendan[] = INCBIN_U16("graphics/battle_transitions/brendan_bg.gbapal");
+static const u16 sMugshotPal_May[] = INCBIN_U16("graphics/battle_transitions/may_bg.gbapal");
+
+static const u16 * const sOpponentMugshotsPals[MUGSHOTS_NO] =
+{
+ sMugshotPal_Sydney,
+ sMugshotPal_Phoebe,
+ sMugshotPal_Glacia,
+ sMugshotPal_Drake,
+ sMugshotPal_Steven
+};
+
+static const u16 * const sPlayerMugshotsPals[2] =
+{
+ sMugshotPal_Brendan,
+ sMugshotPal_May
+};
+
+static const u16 sUnusedTrainerPalette[] = INCBIN_U16("graphics/battle_transitions/unused_trainer.gbapal");
+static const struct SpritePalette sSpritePalette_UnusedTrainer =
+{
+ sUnusedTrainerPalette, 0x100A
+};
+
+static const u16 sBigPokeball_Tilemap[] = INCBIN_U16("graphics/battle_transitions/big_pokeball_map.bin");
+static const u16 sMugshotsTilemap[] = INCBIN_U16("graphics/battle_transitions/elite_four_bg_map.bin");
+
+// actual code starts here
+
+void BattleTransition_StartOnField(u8 transitionID)
+{
+ gMain.callback2 = CB2_OverworldBasic;
+ LaunchBattleTransitionTask(transitionID);
+}
+
+void BattleTransition_Start(u8 transitionID)
+{
+ LaunchBattleTransitionTask(transitionID);
+}
+
+#define tState data[0]
+#define tTransitionID data[1]
+#define tTransitionDone data[15]
+
+bool8 IsBattleTransitionDone(void)
+{
+ u8 taskID = FindTaskIdByFunc(Task_BattleTransitionMain);
+ if (gTasks[taskID].tTransitionDone)
+ {
+ DestroyTask(taskID);
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+static void LaunchBattleTransitionTask(u8 transitionID)
+{
+ u8 taskID = CreateTask(Task_BattleTransitionMain, 2);
+ gTasks[taskID].tTransitionID = transitionID;
+}
+
+static void Task_BattleTransitionMain(u8 taskID)
+{
+ while (sMainTransitionPhases[gTasks[taskID].tState](&gTasks[taskID]));
+}
+
+static bool8 Transition_Phase1(struct Task* task)
+{
+ sub_807DE10();
+ CpuCopy32(gPlttBufferFaded, gPlttBufferUnfaded, 0x400);
+ if (sPhase1_Tasks[task->tTransitionID] != NULL)
+ {
+ CreateTask(sPhase1_Tasks[task->tTransitionID], 4);
+ task->tState++;
+ return FALSE;
+ }
+ else
+ {
+ task->tState = 2;
+ return TRUE;
+ }
+}
+
+static bool8 Transition_WaitForPhase1(struct Task* task)
+{
+ if (FindTaskIdByFunc(sPhase1_Tasks[task->tTransitionID]) == 0xFF)
+ {
+ task->tState++;
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+static bool8 Transition_Phase2(struct Task* task)
+{
+ CreateTask(sPhase2_Tasks[task->tTransitionID], 0);
+ task->tState++;
+ return FALSE;
+}
+
+static bool8 Transition_WaitForPhase2(struct Task* task)
+{
+ task->tTransitionDone = 0;
+ if (FindTaskIdByFunc(sPhase2_Tasks[task->tTransitionID]) == 0xFF)
+ task->tTransitionDone = 1;
+ return FALSE;
+}
+
+static void Phase1Task_TransitionAll(u8 taskID)
+{
+ if (gTasks[taskID].tState == 0)
+ {
+ gTasks[taskID].tState++;
+ CreatePhase1Task(0, 0, 3, 2, 2);
+ }
+ else if (sub_811D52C())
+ DestroyTask(taskID);
+}
+
+static void Phase2Task_Transition_Blur(u8 taskID)
+{
+ while (sPhase2_Transition_Blur_Funcs[gTasks[taskID].tState](&gTasks[taskID]));
+}
+
+static bool8 Phase2_Transition_Blur_Func1(struct Task* task)
+{
+ REG_MOSAIC = 0;
+ REG_BG1CNT |= BGCNT_MOSAIC;
+ REG_BG2CNT |= BGCNT_MOSAIC;
+ REG_BG3CNT |= BGCNT_MOSAIC;
+ task->tState++;
+ return TRUE;
+}
+
+static bool8 Phase2_Transition_Blur_Func2(struct Task* task)
+{
+ if (task->data[1] != 0)
+ task->data[1]--;
+ else
+ {
+ task->data[1] = 4;
+ if (++task->data[2] == 10)
+ BeginNormalPaletteFade(-1, -1, 0, 0x10, 0);
+ REG_MOSAIC = (task->data[2] & 15) * 17;
+ if (task->data[2] > 14)
+ task->tState++;
+ }
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_Blur_Func3(struct Task* task)
+{
+ if (!gPaletteFade.active)
+ {
+ u8 taskID = FindTaskIdByFunc(Phase2Task_Transition_Blur);
+ DestroyTask(taskID);
+ }
+ return FALSE;
+}
+
+static void Phase2Task_Transition_Swirl(u8 taskID)
+{
+ while (sPhase2_Transition_Swirl_Funcs[gTasks[taskID].tState](&gTasks[taskID]));
+}
+
+static bool8 Phase2_Transition_Swirl_Func1(struct Task* task)
+{
+ u16 savedIME;
+
+ sub_811D658();
+ dp12_8087EA4();
+ BeginNormalPaletteFade(-1, 4, 0, 0x10, 0);
+ sub_811D6E8(gUnknown_03005560, TRANSITION_STRUCT.field_14, 0, 2, 0, 160);
+
+ SetVBlankCallback(VBlankCB_Phase2_Transition_Swirl);
+ SetHBlankCallback(HBlankCB_Phase2_Transition_Swirl);
+
+ savedIME = REG_IME;
+ REG_IME = 0;
+ REG_IE |= (INTR_FLAG_VBLANK | INTR_FLAG_HBLANK);
+ REG_IME = savedIME;
+ REG_DISPSTAT |= (DISPSTAT_VBLANK_INTR | DISPSTAT_HBLANK_INTR);
+
+ task->tState++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_Swirl_Func2(struct Task* task)
+{
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+ task->data[1] += 4;
+ task->data[2] += 8;
+
+ sub_811D6E8(gUnknown_03004DE0[0], TRANSITION_STRUCT.field_14, task->data[1], 2, task->data[2], 160);
+
+ if (!gPaletteFade.active)
+ {
+ u8 taskID = FindTaskIdByFunc(Phase2Task_Transition_Swirl);
+ DestroyTask(taskID);
+ }
+
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static void VBlankCB_Phase2_Transition_Swirl(void)
+{
+ VBlankCB_BattleTransition();
+ if (TRANSITION_STRUCT.VBlank_DMA)
+ DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+}
+
+static void HBlankCB_Phase2_Transition_Swirl(void)
+{
+ u16 var = gUnknown_03004DE0[1][REG_VCOUNT];
+ REG_BG1HOFS = var;
+ REG_BG2HOFS = var;
+ REG_BG3HOFS = var;
+}
+
+static void Phase2Task_Transition_Shuffle(u8 taskID)
+{
+ while (sPhase2_Transition_Shuffle_Funcs[gTasks[taskID].tState](&gTasks[taskID]));
+}
+
+static bool8 Phase2_Transition_Shuffle_Func1(struct Task* task)
+{
+ u16 savedIME;
+
+ sub_811D658();
+ dp12_8087EA4();
+
+ BeginNormalPaletteFade(-1, 4, 0, 0x10, 0);
+ memset(gUnknown_03005560, TRANSITION_STRUCT.field_16, 0x140);
+
+ SetVBlankCallback(VBlankCB_Phase2_Transition_Shuffle);
+ SetHBlankCallback(HBlankCB_Phase2_Transition_Shuffle);
+
+ savedIME = REG_IME;
+ REG_IME = 0;
+ REG_IE |= (INTR_FLAG_VBLANK | INTR_FLAG_HBLANK);
+ REG_IME = savedIME;
+ REG_DISPSTAT |= (DISPSTAT_VBLANK_INTR | DISPSTAT_HBLANK_INTR);
+
+ task->tState++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_Shuffle_Func2(struct Task* task)
+{
+ u8 i;
+ u16 r3, r4;
+
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+ r4 = task->data[1];
+ r3 = task->data[2] >> 8;
+ task->data[1] += 4224;
+ task->data[2] += 384;
+
+ for (i = 0; i < 160; i++, r4 += 4224)
+ {
+ u16 var = r4 / 256;
+ gUnknown_03004DE0[0][i] = TRANSITION_STRUCT.field_16 + Sin(var, r3);
+ }
+
+ if (!gPaletteFade.active)
+ DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Shuffle));
+
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static void VBlankCB_Phase2_Transition_Shuffle(void)
+{
+ VBlankCB_BattleTransition();
+ if (TRANSITION_STRUCT.VBlank_DMA)
+ DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+}
+
+static void HBlankCB_Phase2_Transition_Shuffle(void)
+{
+ u16 var = gUnknown_03004DE0[1][REG_VCOUNT];
+ REG_BG1VOFS = var;
+ REG_BG2VOFS = var;
+ REG_BG3VOFS = var;
+}
+
+static void Phase2Task_Transition_BigPokeball(u8 taskID)
+{
+ while (sPhase2_Transition_BigPokeball_Funcs[gTasks[taskID].tState](&gTasks[taskID]));
+}
+
+static bool8 Phase2_Transition_BigPokeball_Func1(struct Task* task)
+{
+ u16 i;
+ u16 *dst1, *dst2;
+
+ sub_811D658();
+ dp12_8087EA4();
+
+ task->data[1] = 16;
+ task->data[2] = 0;
+ task->data[4] = 0;
+ task->data[5] = 0x4000;
+ TRANSITION_STRUCT.WININ = 63;
+ TRANSITION_STRUCT.WINOUT = 0;
+ TRANSITION_STRUCT.field_6 = 240;
+ TRANSITION_STRUCT.WIN0V = 160;
+ TRANSITION_STRUCT.BLDCNT = 0x3F41;
+ TRANSITION_STRUCT.BLDALPHA = task->data[1] * 256; // 16 * 256 = 0x1000
+
+ for (i = 0; i < 160; i++)
+ {
+ gUnknown_03005560[i] = 240;
+ }
+
+ SetVBlankCallback(VBlankCB0_Phase2_Transition_BigPokeball);
+
+ sub_811D6A8(&dst1, & dst2);
+ CpuFill16(0, dst1, 0x800);
+ CpuSet(sBigPokeball_Tileset, dst2, 0x2C0);
+ LoadPalette(gFieldEffectObjectPalette10, 240, 32);
+
+ task->tState++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_BigPokeball_Func2(struct Task* task)
+{
+ s16 i, j;
+ u16 *dst1, *dst2;
+ const u16* BigPokeballMap;
+
+ BigPokeballMap = sBigPokeball_Tilemap;
+ sub_811D6A8(&dst1, &dst2);
+ for (i = 0; i < 20; i++)
+ {
+ for (j = 0; j < 30; j++, BigPokeballMap++)
+ {
+ dst1[i * 32 + j] = *BigPokeballMap | 0xF000;
+ }
+ }
+ sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5], 160);
+
+ task->tState++;
+ return TRUE;
+}
+
+static bool8 Phase2_Transition_BigPokeball_Func3(struct Task* task)
+{
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+ if (task->data[3] == 0 || --task->data[3] == 0)
+ {
+ task->data[2]++;
+ task->data[3] = 2;
+ }
+ TRANSITION_STRUCT.BLDALPHA = (task->data[1] << 8) | task->data[2];
+ if (task->data[2] > 15)
+ task->tState++;
+ task->data[4] += 8;
+ task->data[5] -= 256;
+
+ sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160);
+
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_BigPokeball_Func4(struct Task* task)
+{
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+ if (task->data[3] == 0 || --task->data[3] == 0)
+ {
+ task->data[1]--;
+ task->data[3] = 2;
+ }
+ TRANSITION_STRUCT.BLDALPHA = (task->data[1] << 8) | task->data[2];
+ if (task->data[1] == 0)
+ task->tState++;
+ task->data[4] += 8;
+ task->data[5] -= 256;
+
+ sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160);
+
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_BigPokeball_Func5(struct Task* task)
+{
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+ task->data[4] += 8;
+ task->data[5] -= 256;
+
+ sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160);
+
+ if (task->data[5] <= 0)
+ {
+ task->tState++;
+ task->data[1] = 160;
+ task->data[2] = 256;
+ task->data[3] = 0;
+ }
+
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_BigPokeball_Func6(struct Task* task)
+{
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+ if (task->data[2] < 1024)
+ task->data[2] += 128;
+ if (task->data[1] != 0)
+ {
+ task->data[1] -= (task->data[2] >> 8);
+ if (task->data[1] < 0)
+ task->data[1] = 0;
+ }
+ sub_811D764(gUnknown_03004DE0[0], 120, 80, task->data[1]);
+ if (task->data[1] == 0)
+ {
+ DmaStop(0);
+ sub_811D6D4();
+ DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_BigPokeball));
+ }
+ if (task->data[3] == 0)
+ {
+ task->data[3]++;
+ SetVBlankCallback(VBlankCB1_Phase2_Transition_BigPokeball);
+ }
+
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static void Transition_BigPokeball_Vblank(void)
+{
+ DmaStop(0);
+ VBlankCB_BattleTransition();
+ if (TRANSITION_STRUCT.VBlank_DMA)
+ DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+ REG_WININ = TRANSITION_STRUCT.WININ;
+ REG_WINOUT = TRANSITION_STRUCT.WINOUT;
+ REG_WIN0V = TRANSITION_STRUCT.WIN0V;
+ REG_BLDCNT = TRANSITION_STRUCT.BLDCNT;
+ REG_BLDALPHA = TRANSITION_STRUCT.BLDALPHA;
+}
+
+static void VBlankCB0_Phase2_Transition_BigPokeball(void)
+{
+ Transition_BigPokeball_Vblank();
+ DmaSet(0, gUnknown_03005560, &REG_BG0HOFS, 0xA2400001);
+}
+
+static void VBlankCB1_Phase2_Transition_BigPokeball(void)
+{
+ Transition_BigPokeball_Vblank();
+ DmaSet(0, gUnknown_03005560, &REG_WIN0H, 0xA2400001);
+}
+
+static void Phase2Task_Transition_PokeballsTrail(u8 taskID)
+{
+ while (sPhase2_Transition_PokeballsTrail_Funcs[gTasks[taskID].tState](&gTasks[taskID]));
+}
+
+static bool8 Phase2_Transition_PokeballsTrail_Func1(struct Task* task)
+{
+ u16 *dst1, *dst2;
+
+ sub_811D6A8(&dst1, &dst2);
+ CpuSet(sPokeballTrail_Tileset, dst2, 0x20);
+ CpuFill32(0, dst1, 0x800);
+ LoadPalette(gFieldEffectObjectPalette10, 0xF0, 0x20);
+
+ task->tState++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_PokeballsTrail_Func2(struct Task* task)
+{
+ s16 i;
+ s16 rand;
+ s16 arr0[2];
+ s16 arr1[5];
+
+ memcpy(arr0, sUnknown_083FD7E4, sizeof(sUnknown_083FD7E4));
+ memcpy(arr1, sUnknown_083FD7E8, sizeof(sUnknown_083FD7E8));
+ rand = Random() & 1;
+ for (i = 0; i <= 4; i++, rand ^= 1)
+ {
+ gFieldEffectArguments[0] = arr0[rand]; // x
+ gFieldEffectArguments[1] = (i * 32) + 16; // y
+ gFieldEffectArguments[2] = rand;
+ gFieldEffectArguments[3] = arr1[i];
+ FieldEffectStart(FLDEFF_POKEBALL);
+ }
+
+ task->tState++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_PokeballsTrail_Func3(struct Task* task)
+{
+ if (!FieldEffectActiveListContains(FLDEFF_POKEBALL))
+ {
+ sub_811D6D4();
+ DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_PokeballsTrail));
+ }
+ return FALSE;
+}
+
+bool8 FldEff_Pokeball(void)
+{
+ u8 spriteID = CreateSpriteAtEnd(&sSpriteTemplate_83FD98C, gFieldEffectArguments[0], gFieldEffectArguments[1], 0);
+ gSprites[spriteID].oam.priority = 0;
+ gSprites[spriteID].oam.affineMode = 1;
+ gSprites[spriteID].data0 = gFieldEffectArguments[2];
+ gSprites[spriteID].data1 = gFieldEffectArguments[3];
+ gSprites[spriteID].data2 = -1;
+ InitSpriteAffineAnim(&gSprites[spriteID]);
+ StartSpriteAffineAnim(&gSprites[spriteID], gFieldEffectArguments[2]);
+ return FALSE;
+}
+
+#define SOME_VRAM_STORE(ptr, posY, posX, toStore) \
+{ \
+ u32 index = (posY) * 32 + posX; \
+ ptr[index] = toStore; \
+}
+
+static void sub_811B720(struct Sprite* sprite)
+{
+ s16 arr0[2];
+
+ memcpy(arr0, sUnknown_083FD7F2, sizeof(sUnknown_083FD7F2));
+ if (sprite->data1 != 0)
+ sprite->data1--;
+ else
+ {
+ if (sprite->pos1.x >= 0 && sprite->pos1.x <= 240)
+ {
+ s16 posX = sprite->pos1.x >> 3;
+ s16 posY = sprite->pos1.y >> 3;
+
+ if (posX != sprite->data2)
+ {
+ u32 var;
+ u16 *ptr;
+
+ sprite->data2 = posX;
+ var = (((REG_BG0CNT >> 8) & 0x1F) << 11); // r2
+ ptr = (u16 *)(VRAM + var);
+
+ SOME_VRAM_STORE(ptr, posY - 2, posX, 0xF001);
+ SOME_VRAM_STORE(ptr, posY - 1, posX, 0xF001);
+ SOME_VRAM_STORE(ptr, posY - 0, posX, 0xF001);
+ SOME_VRAM_STORE(ptr, posY + 1, posX, 0xF001);
+ }
+ }
+ sprite->pos1.x += arr0[sprite->data0];
+ if (sprite->pos1.x < -15 || sprite->pos1.x > 255)
+ FieldEffectStop(sprite, FLDEFF_POKEBALL);
+ }
+}
+
+static void Phase2Task_Transition_Clockwise_BlackFade(u8 taskID)
+{
+ while (sPhase2_Transition_Clockwise_BlackFade_Funcs[gTasks[taskID].tState](&gTasks[taskID]));
+}
+
+static bool8 Phase2_Transition_Clockwise_BlackFade_Func1(struct Task* task)
+{
+ u16 i;
+
+ sub_811D658();
+ dp12_8087EA4();
+
+ TRANSITION_STRUCT.WININ = 0;
+ TRANSITION_STRUCT.WINOUT = 63;
+ TRANSITION_STRUCT.field_6 = -3855;
+ TRANSITION_STRUCT.WIN0V = 160;
+
+ for (i = 0; i < 160; i++)
+ {
+ gUnknown_03005560[i] = 0xF3F4;
+ }
+
+ SetVBlankCallback(VBlankCB_Phase2_Transition_Clockwise_BlackFade);
+ TRANSITION_STRUCT.data[4] = 120;
+
+ task->tState++;
+ return TRUE;
+}
+
+static bool8 Phase2_Transition_Clockwise_BlackFade_Func2(struct Task* task)
+{
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+
+ sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, TRANSITION_STRUCT.data[4], -1, 1, 1);
+ do
+ {
+ gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (TRANSITION_STRUCT.data[2] + 1) | 0x7800;
+ } while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1));
+
+ TRANSITION_STRUCT.data[4] += 16;
+ if (TRANSITION_STRUCT.data[4] >= 240)
+ {
+ TRANSITION_STRUCT.data[5] = 0;
+ task->tState++;
+ }
+
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_Clockwise_BlackFade_Func3(struct Task* task)
+{
+ s16 r1, r3;
+ vu8 var = 0;
+
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+
+ sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, 240, TRANSITION_STRUCT.data[5], 1, 1);
+
+ while (1)
+ {
+ r1 = 120, r3 = TRANSITION_STRUCT.data[2] + 1;
+ if (TRANSITION_STRUCT.data[5] >= 80)
+ r1 = TRANSITION_STRUCT.data[2], r3 = 240;
+ gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r3) | (r1 << 8);
+ if (var != 0)
+ break;
+ var = sub_811D978(TRANSITION_STRUCT.data, 1, 1);
+ }
+
+ TRANSITION_STRUCT.data[5] += 8;
+ if (TRANSITION_STRUCT.data[5] >= 160)
+ {
+ TRANSITION_STRUCT.data[4] = 240;
+ task->tState++;
+ }
+ else
+ {
+ while (TRANSITION_STRUCT.data[3] < TRANSITION_STRUCT.data[5])
+ {
+ gUnknown_03004DE0[0][++TRANSITION_STRUCT.data[3]] = (r3) | (r1 << 8);
+ }
+ }
+
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_Clockwise_BlackFade_Func4(struct Task* task)
+{
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+
+ sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, TRANSITION_STRUCT.data[4], 160, 1, 1);
+ do
+ {
+ gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (TRANSITION_STRUCT.data[2] << 8) | 0xF0;
+ } while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1));
+
+ TRANSITION_STRUCT.data[4] -= 16;
+ if (TRANSITION_STRUCT.data[4] <= 0)
+ {
+ TRANSITION_STRUCT.data[5] = 160;
+ task->tState++;
+ }
+
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_Clockwise_BlackFade_Func5(struct Task* task)
+{
+ s16 r1, r2, r3;
+ vu8 var = 0;
+
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+
+ sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, 0, TRANSITION_STRUCT.data[5], 1, 1);
+
+ while (1)
+ {
+ r1 = gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] & 0xFF, r2 = TRANSITION_STRUCT.data[2];
+ if (TRANSITION_STRUCT.data[5] <= 80)
+ r2 = 120, r1 = TRANSITION_STRUCT.data[2];
+ gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r1) | (r2 << 8);
+ r3 = 0;
+ if (var != 0)
+ break;
+ var = sub_811D978(TRANSITION_STRUCT.data, 1, 1);
+ }
+
+ TRANSITION_STRUCT.data[5] -= 8;
+ if (TRANSITION_STRUCT.data[5] <= 0)
+ {
+ TRANSITION_STRUCT.data[4] = r3;
+ task->tState++;
+ }
+ else
+ {
+ while (TRANSITION_STRUCT.data[3] > TRANSITION_STRUCT.data[5])
+ {
+ gUnknown_03004DE0[0][--TRANSITION_STRUCT.data[3]] = (r1) | (r2 << 8);
+ }
+ }
+
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_Clockwise_BlackFade_Func6(struct Task* task)
+{
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+
+ sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, TRANSITION_STRUCT.data[4], 0, 1, 1);
+ do
+ {
+ s16 r2, r3;
+
+ r2 = 120, r3 = TRANSITION_STRUCT.data[2];
+ if (TRANSITION_STRUCT.data[2] >= 120)
+ r2 = 0, r3 = 240;
+ gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r3) | (r2 << 8);
+
+ } while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1));
+
+ TRANSITION_STRUCT.data[4] += 16;
+ if (TRANSITION_STRUCT.data[2] > 120)
+ task->tState++;
+
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_Clockwise_BlackFade_Func7(struct Task* task)
+{
+ DmaStop(0);
+ sub_811D6D4();
+ DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Clockwise_BlackFade));
+ return FALSE;
+}
+
+static void VBlankCB_Phase2_Transition_Clockwise_BlackFade(void)
+{
+ DmaStop(0);
+ VBlankCB_BattleTransition();
+ if (TRANSITION_STRUCT.VBlank_DMA != 0)
+ DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+ REG_WININ = TRANSITION_STRUCT.WININ;
+ REG_WINOUT = TRANSITION_STRUCT.WINOUT;
+ REG_WIN0V = TRANSITION_STRUCT.WIN0V;
+ REG_WIN0H = gUnknown_03004DE0[1][0];
+ DmaSet(0, gUnknown_03004DE0[1], &REG_WIN0H, 0xA2400001);
+}
+
+static void Phase2Task_Transition_Ripple(u8 taskID)
+{
+ while (sPhase2_Transition_Ripple_Funcs[gTasks[taskID].tState](&gTasks[taskID]));
+}
+
+static bool8 Phase2_Transition_Ripple_Func1(struct Task* task)
+{
+ u8 i;
+
+ sub_811D658();
+ dp12_8087EA4();
+
+ for (i = 0; i < 160; i++)
+ {
+ gUnknown_03005560[i] = TRANSITION_STRUCT.field_16;
+ }
+
+ SetVBlankCallback(VBlankCB_Phase2_Transition_Ripple);
+ SetHBlankCallback(HBlankCB_Phase2_Transition_Ripple);
+
+ REG_IE |= INTR_FLAG_HBLANK;
+ REG_DISPSTAT |= DISPSTAT_HBLANK_INTR;
+
+ task->tState++;
+ return TRUE;
+}
+
+static bool8 Phase2_Transition_Ripple_Func2(struct Task* task)
+{
+ u8 i;
+ s16 r3;
+ u16 r4, r8;
+
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+
+ r3 = task->data[2] >> 8;
+ r4 = task->data[1];
+ r8 = 384;
+ task->data[1] += 0x400;
+ if (task->data[2] <= 0x1FFF)
+ task->data[2] += 0x180;
+
+ for (i = 0; i < 160; i++, r4 += r8)
+ {
+ // todo: fix the asm
+ s16 var = r4 >> 8;
+ asm("");
+ gUnknown_03004DE0[0][i] = TRANSITION_STRUCT.field_16 + Sin(var, r3);
+ asm("");
+ }
+
+ if (++task->data[3] == 81)
+ {
+ task->data[4]++;
+ BeginNormalPaletteFade(-1, -2, 0, 0x10, 0);
+ }
+
+ if (task->data[4] != 0 && !gPaletteFade.active)
+ DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Ripple));
+
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static void VBlankCB_Phase2_Transition_Ripple(void)
+{
+ VBlankCB_BattleTransition();
+ if (TRANSITION_STRUCT.VBlank_DMA)
+ DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+}
+
+static void HBlankCB_Phase2_Transition_Ripple(void)
+{
+ u16 var = gUnknown_03004DE0[1][REG_VCOUNT];
+ REG_BG1VOFS = var;
+ REG_BG2VOFS = var;
+ REG_BG3VOFS = var;
+}
+
+static void Phase2Task_Transition_Wave(u8 taskID)
+{
+ while (sPhase2_Transition_Wave_Funcs[gTasks[taskID].tState](&gTasks[taskID]));
+}
+
+static bool8 Phase2_Transition_Wave_Func1(struct Task* task)
+{
+ u8 i;
+
+ sub_811D658();
+ dp12_8087EA4();
+
+ TRANSITION_STRUCT.WININ = 63;
+ TRANSITION_STRUCT.WINOUT = 0;
+ TRANSITION_STRUCT.field_6 = 240;
+ TRANSITION_STRUCT.WIN0V = 160;
+
+ for (i = 0; i < 160; i++)
+ {
+ gUnknown_03004DE0[1][i] = 242;
+ }
+
+ SetVBlankCallback(VBlankCB_Phase2_Transition_Wave);
+
+ task->tState++;
+ return TRUE;
+}
+
+static bool8 Phase2_Transition_Wave_Func2(struct Task* task)
+{
+ u8 i, r5;
+ u16* toStore;
+ bool8 nextFunc;
+
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+ toStore = gUnknown_03004DE0[0];
+ r5 = task->data[2];
+ task->data[2] += 16;
+ task->data[1] += 8;
+
+ for (i = 0, nextFunc = TRUE; i < 160; i++, r5 += 4, toStore++)
+ {
+ s16 value = task->data[1] + Sin(r5, 40);
+ if (value < 0)
+ value = 0;
+ if (value > 240)
+ value = 240;
+ *toStore = (value << 8) | (0xF1);
+ if (value < 240)
+ nextFunc = FALSE;
+ }
+ if (nextFunc)
+ task->tState++;
+
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_Wave_Func3(struct Task* task)
+{
+ DmaStop(0);
+ sub_811D6D4();
+ DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Wave));
+ return FALSE;
+}
+
+static void VBlankCB_Phase2_Transition_Wave(void)
+{
+ DmaStop(0);
+ VBlankCB_BattleTransition();
+ if (TRANSITION_STRUCT.VBlank_DMA != 0)
+ DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+ REG_WININ = TRANSITION_STRUCT.WININ;
+ REG_WINOUT = TRANSITION_STRUCT.WINOUT;
+ REG_WIN0V = TRANSITION_STRUCT.WIN0V;
+ DmaSet(0, gUnknown_03004DE0[1], &REG_WIN0H, 0xA2400001);
+}
+
+#define tMugshotOpponentID data[13]
+#define tMugshotPlayerID data[14]
+#define tMugshotID data[15]
+
+static void Phase2Task_Transition_Sydney(u8 taskID)
+{
+ gTasks[taskID].tMugshotID = MUGSHOT_SYDNEY;
+ Phase2Task_MugShotTransition(taskID);
+}
+
+static void Phase2Task_Transition_Phoebe(u8 taskID)
+{
+ gTasks[taskID].tMugshotID = MUGSHOT_PHOEBE;
+ Phase2Task_MugShotTransition(taskID);
+}
+
+static void Phase2Task_Transition_Glacia(u8 taskID)
+{
+ gTasks[taskID].tMugshotID = MUGSHOT_GLACIA;
+ Phase2Task_MugShotTransition(taskID);
+}
+
+static void Phase2Task_Transition_Drake(u8 taskID)
+{
+ gTasks[taskID].tMugshotID = MUGSHOT_DRAKE;
+ Phase2Task_MugShotTransition(taskID);
+}
+
+static void Phase2Task_Transition_Steven(u8 taskID)
+{
+ gTasks[taskID].tMugshotID = MUGSHOT_STEVEN;
+ Phase2Task_MugShotTransition(taskID);
+}
+
+static void Phase2Task_MugShotTransition(u8 taskID)
+{
+ while (sPhase2_Mugshot_Transition_Funcs[gTasks[taskID].tState](&gTasks[taskID]));
+}
+
+static bool8 Phase2_Mugshot_Func1(struct Task* task)
+{
+ u8 i;
+
+ sub_811D658();
+ dp12_8087EA4();
+ Mugshots_CreateOpponentPlayerSprites(task);
+
+ task->data[1] = 0;
+ task->data[2] = 1;
+ task->data[3] = 239;
+ TRANSITION_STRUCT.WININ = 63;
+ TRANSITION_STRUCT.WINOUT = 62;
+ TRANSITION_STRUCT.WIN0V = 160;
+
+ for (i = 0; i < 160; i++)
+ {
+ gUnknown_03004DE0[1][i] = 0xF0F1;
+ }
+
+ SetVBlankCallback(VBlankCB0_Phase2_Mugshots);
+
+ task->tState++;
+ return FALSE;
+}
+
+static bool8 Phase2_Mugshot_Func2(struct Task* task)
+{
+ s16 i, j;
+ u16 *dst1, *dst2;
+ const u16* MugshotsMap;
+
+ MugshotsMap = sMugshotsTilemap;
+ sub_811D6A8(&dst1, &dst2);
+ CpuSet(sUnknown_083FC348, dst2, 0xF0);
+ LoadPalette(sOpponentMugshotsPals[task->tMugshotID], 0xF0, 0x20);
+ LoadPalette(sPlayerMugshotsPals[gSaveBlock2.playerGender], 0xFA, 0xC);
+
+ for (i = 0; i < 20; i++)
+ {
+ for (j = 0; j < 32; j++, MugshotsMap++)
+ {
+ dst1[i * 32 + j] = *MugshotsMap | 0xF000;
+ }
+ }
+
+ REG_IE |= INTR_FLAG_HBLANK;
+ REG_DISPSTAT |= DISPSTAT_HBLANK_INTR;
+ SetHBlankCallback(HBlankCB_Phase2_Mugshots);
+ task->tState++;
+ return FALSE;
+}
+
+static bool8 Phase2_Mugshot_Func3(struct Task* task)
+{
+ u8 i, r5;
+ u16* toStore;
+ s16 value;
+ s32 mergedValue;
+
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+
+ toStore = gUnknown_03004DE0[0];
+ r5 = task->data[1];
+ task->data[1] += 0x10;
+
+ for (i = 0; i < 80; i++, toStore++, r5 += 0x10)
+ {
+ value = task->data[2] + Sin(r5, 0x10);
+ if (value < 0)
+ value = 1;
+ if (value > 0xF0)
+ value = 0xF0;
+ *toStore = value;
+ }
+ for (; i < 160; i++, toStore++, r5 += 0x10)
+ {
+ value = task->data[3] - Sin(r5, 0x10);
+ if (value < 0)
+ value = 0;
+ if (value > 0xEF)
+ value = 0xEF;
+ *toStore = (value << 8) | (0xF0);
+ }
+
+ task->data[2] += 8;
+ task->data[3] -= 8;
+ if (task->data[2] > 0xF0)
+ task->data[2] = 0xF0;
+ if (task->data[3] < 0)
+ task->data[3] = 0;
+ mergedValue = *(s32*)(&task->data[2]);
+ if (mergedValue == 0xF0)
+ task->tState++;
+
+ TRANSITION_STRUCT.field_18 -= 8;
+ TRANSITION_STRUCT.field_1A += 8;
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static bool8 Phase2_Mugshot_Func4(struct Task* task)
+{
+ u8 i;
+ u16* toStore;
+
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+
+ for (i = 0, toStore = gUnknown_03004DE0[0]; i < 160; i++, toStore++)
+ {
+ *toStore = 0xF0;
+ }
+
+ task->tState++;
+ task->data[1] = 0;
+ task->data[2] = 0;
+ task->data[3] = 0;
+ TRANSITION_STRUCT.field_18 -= 8;
+ TRANSITION_STRUCT.field_1A += 8;
+
+ sub_811CA10(task->tMugshotOpponentID, 0);
+ sub_811CA10(task->tMugshotPlayerID, 1);
+ sub_811CA28(task->tMugshotOpponentID);
+
+ PlaySE(SE_BT_START);
+
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static bool8 Phase2_Mugshot_Func5(struct Task* task)
+{
+ TRANSITION_STRUCT.field_18 -= 8;
+ TRANSITION_STRUCT.field_1A += 8;
+ if (sub_811CA44(task->tMugshotOpponentID))
+ {
+ task->tState++;
+ sub_811CA28(task->tMugshotPlayerID);
+ }
+ return FALSE;
+}
+
+static bool8 Phase2_Mugshot_Func6(struct Task* task)
+{
+ TRANSITION_STRUCT.field_18 -= 8;
+ TRANSITION_STRUCT.field_1A += 8;
+ if (sub_811CA44(task->tMugshotPlayerID))
+ {
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+ SetVBlankCallback(NULL);
+ DmaStop(0);
+ memset(gUnknown_03004DE0[0], 0, 0x140);
+ memset(gUnknown_03004DE0[1], 0, 0x140);
+ REG_WIN0H = 0xF0;
+ REG_BLDY = 0;
+ task->tState++;
+ task->data[3] = 0;
+ task->data[4] = 0;
+ TRANSITION_STRUCT.BLDCNT = 0xBF;
+ SetVBlankCallback(VBlankCB1_Phase2_Mugshots);
+ }
+ return FALSE;
+}
+
+static bool8 Phase2_Mugshot_Func7(struct Task* task)
+{
+ bool32 r6;
+
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+ r6 = TRUE;
+ TRANSITION_STRUCT.field_18 -= 8;
+ TRANSITION_STRUCT.field_1A += 8;
+
+ if (task->data[4] < 0x50)
+ task->data[4] += 2;
+ if (task->data[4] > 0x50)
+ task->data[4] = 0x50;
+
+ if (++task->data[3] & 1)
+ {
+ s16 i;
+ for (i = 0, r6 = FALSE; i <= task->data[4]; i++)
+ {
+ s16 index1 = 0x50 - i;
+ s16 index2 = 0x50 + i;
+ if (gUnknown_03004DE0[0][index1] <= 15)
+ {
+ r6 = TRUE;
+ gUnknown_03004DE0[0][index1]++;
+ }
+ if (gUnknown_03004DE0[0][index2] <= 15)
+ {
+ r6 = TRUE;
+ gUnknown_03004DE0[0][index2]++;
+ }
+ }
+ }
+
+ if (task->data[4] == 0x50 && !r6)
+ task->tState++;
+
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static bool8 Phase2_Mugshot_Func8(struct Task* task)
+{
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+ BlendPalettes(-1, 0x10, 0x7FFF);
+ TRANSITION_STRUCT.BLDCNT = 0xFF;
+ task->data[3] = 0;
+
+ task->tState++;
+ return TRUE;
+}
+
+static bool8 Phase2_Mugshot_Func9(struct Task* task)
+{
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+
+ task->data[3]++;
+ memset(gUnknown_03004DE0[0], task->data[3], 0x140);
+ if (task->data[3] > 15)
+ task->tState++;
+
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static bool8 Phase2_Mugshot_Func10(struct Task* task)
+{
+ DmaStop(0);
+ sub_811D6D4();
+ DestroyTask(FindTaskIdByFunc(task->func));
+ return FALSE;
+}
+
+static void VBlankCB0_Phase2_Mugshots(void)
+{
+ DmaStop(0);
+ VBlankCB_BattleTransition();
+ if (TRANSITION_STRUCT.VBlank_DMA != 0)
+ DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+ REG_BG0VOFS = TRANSITION_STRUCT.field_1C;
+ REG_WININ = TRANSITION_STRUCT.WININ;
+ REG_WINOUT = TRANSITION_STRUCT.WINOUT;
+ REG_WIN0V = TRANSITION_STRUCT.WIN0V;
+ DmaSet(0, gUnknown_03004DE0[1], &REG_WIN0H, 0xA2400001);
+}
+
+static void VBlankCB1_Phase2_Mugshots(void)
+{
+ DmaStop(0);
+ VBlankCB_BattleTransition();
+ if (TRANSITION_STRUCT.VBlank_DMA != 0)
+ DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+ REG_BLDCNT = TRANSITION_STRUCT.BLDCNT;
+ DmaSet(0, gUnknown_03004DE0[1], &REG_BLDY, 0xA2400001);
+}
+
+static void HBlankCB_Phase2_Mugshots(void)
+{
+ if (REG_VCOUNT < 80)
+ REG_BG0HOFS = TRANSITION_STRUCT.field_18;
+ else
+ REG_BG0HOFS = TRANSITION_STRUCT.field_1A;
+}
+
+static void Mugshots_CreateOpponentPlayerSprites(struct Task* task)
+{
+ struct Sprite *opponentSprite, *playerSprite;
+
+ s16 mugshotID = task->tMugshotID;
+ task->tMugshotOpponentID = CreateTrainerSprite(sMugshotsTrainerPicIDsTable[mugshotID],
+ sMugshotsOpponentCoords[mugshotID][0] - 32,
+ sMugshotsOpponentCoords[mugshotID][1] + 42,
+ 0, &ewram[0xC03C]);
+ task->tMugshotPlayerID = CreateTrainerSprite(gSaveBlock2.playerGender, 272, 106, 0, &ewram[0xC03C]);
+
+ opponentSprite = &gSprites[task->tMugshotOpponentID];
+ playerSprite = &gSprites[task->tMugshotPlayerID];
+
+ opponentSprite->callback = sub_811C90C;
+ playerSprite->callback = sub_811C90C;
+
+ opponentSprite->oam.affineMode = 3;
+ playerSprite->oam.affineMode = 3;
+
+ opponentSprite->oam.matrixNum = AllocOamMatrix();
+ playerSprite->oam.matrixNum = AllocOamMatrix();
+
+ opponentSprite->oam.shape = 1;
+ playerSprite->oam.shape = 1;
+
+ opponentSprite->oam.size = 3;
+ playerSprite->oam.size = 3;
+
+ CalcCenterToCornerVec(opponentSprite, 1, 3, 3);
+ CalcCenterToCornerVec(playerSprite, 1, 3, 3);
+
+ SetOamMatrixRotationScaling(opponentSprite->oam.matrixNum, sMugshotsOpponentRotationScales[mugshotID][0], sMugshotsOpponentRotationScales[mugshotID][1], 0);
+ SetOamMatrixRotationScaling(playerSprite->oam.matrixNum, -512, 0x200, 0);
+}
+
+static void sub_811C90C(struct Sprite* sprite)
+{
+ while (sUnknown_083FD880[sprite->data0](sprite));
+}
+
+static bool8 sub_811C934(struct Sprite* sprite)
+{
+ return FALSE;
+}
+
+static bool8 sub_811C938(struct Sprite* sprite)
+{
+ s16 arr0[2];
+ s16 arr1[2];
+
+ memcpy(arr0, sUnknown_083FD89C, sizeof(sUnknown_083FD89C));
+ memcpy(arr1, sUnknown_083FD8A0, sizeof(sUnknown_083FD8A0));
+
+ sprite->data0++;
+ sprite->data1 = arr0[sprite->data7];
+ sprite->data2 = arr1[sprite->data7];
+ return TRUE;
+}
+
+static bool8 sub_811C984(struct Sprite* sprite)
+{
+ sprite->pos1.x += sprite->data1;
+ if (sprite->data7 && sprite->pos1.x < 133)
+ sprite->data0++;
+ else if (!sprite->data7 && sprite->pos1.x > 103)
+ sprite->data0++;
+ return FALSE;
+}
+
+static bool8 sub_811C9B8(struct Sprite* sprite)
+{
+ sprite->data1 += sprite->data2;
+ sprite->pos1.x += sprite->data1;
+ if (sprite->data1 == 0)
+ {
+ sprite->data0++;
+ sprite->data2 = -sprite->data2;
+ sprite->data6 = 1;
+ }
+ return FALSE;
+}
+
+static bool8 sub_811C9E4(struct Sprite* sprite)
+{
+ sprite->data1 += sprite->data2;
+ sprite->pos1.x += sprite->data1;
+ if (sprite->pos1.x < -31 || sprite->pos1.x > 271)
+ sprite->data0++;
+ return FALSE;
+}
+
+static void sub_811CA10(s16 spriteID, s16 value)
+{
+ gSprites[spriteID].data7 = value;
+}
+
+static void sub_811CA28(s16 spriteID)
+{
+ gSprites[spriteID].data0++;
+}
+
+static s16 sub_811CA44(s16 spriteID)
+{
+ return gSprites[spriteID].data6;
+}
+
+#undef tMugshotOpponentID
+#undef tMugshotPlayerID
+#undef tMugshotID
+
+static void Phase2Task_Transition_Slice(u8 taskID)
+{
+ while (sPhase2_Transition_Slice_Funcs[gTasks[taskID].tState](&gTasks[taskID]));
+}
+
+static bool8 Phase2_Transition_Slice_Func1(struct Task* task)
+{
+ u16 i;
+
+ sub_811D658();
+ dp12_8087EA4();
+
+ task->data[2] = 256;
+ task->data[3] = 1;
+ TRANSITION_STRUCT.WININ = 63;
+ TRANSITION_STRUCT.WINOUT = 0;
+ TRANSITION_STRUCT.WIN0V = 160;
+
+ for (i = 0; i < 160; i++)
+ {
+ gUnknown_03004DE0[1][i] = TRANSITION_STRUCT.field_14;
+ gUnknown_03004DE0[1][160 + i] = 0xF0;
+ }
+
+ REG_IE |= INTR_FLAG_HBLANK;
+ REG_DISPSTAT |= DISPSTAT_HBLANK_INTR;
+
+ SetVBlankCallback(VBlankCB_Phase2_Transition_Slice);
+ SetHBlankCallback(HBlankCB_Phase2_Transition_Slice);
+
+ task->tState++;
+ return TRUE;
+}
+
+static bool8 Phase2_Transition_Slice_Func2(struct Task* task)
+{
+ u16 i;
+
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+
+ task->data[1] += (task->data[2] >> 8);
+ if (task->data[1] > 0xF0)
+ task->data[1] = 0xF0;
+ if (task->data[2] <= 0xFFF)
+ task->data[2] += task->data[3];
+ if (task->data[3] < 128)
+ task->data[3] <<= 1; // multiplying by two
+
+ for (i = 0; i < 160; i++)
+ {
+ u16* storeLoc1 = &gUnknown_03004DE0[0][i];
+ u16* storeLoc2 = &gUnknown_03004DE0[0][i + 160];
+ if (1 & i)
+ {
+ *storeLoc1 = TRANSITION_STRUCT.field_14 + task->data[1];
+ *storeLoc2 = 0xF0 - task->data[1];
+ }
+ else
+ {
+ *storeLoc1 = TRANSITION_STRUCT.field_14 - task->data[1];
+ *storeLoc2 = (task->data[1] << 8) | (0xF1);
+ }
+ }
+
+ if (task->data[1] > 0xEF)
+ task->tState++;
+
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_Slice_Func3(struct Task* task)
+{
+ DmaStop(0);
+ sub_811D6D4();
+ DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Slice));
+ return FALSE;
+}
+
+static void VBlankCB_Phase2_Transition_Slice(void)
+{
+ DmaStop(0);
+ VBlankCB_BattleTransition();
+ REG_WININ = TRANSITION_STRUCT.WININ;
+ REG_WINOUT = TRANSITION_STRUCT.WINOUT;
+ REG_WIN0V = TRANSITION_STRUCT.WIN0V;
+ if (TRANSITION_STRUCT.VBlank_DMA)
+ DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 640);
+ DmaSet(0, &gUnknown_03004DE0[1][160], &REG_WIN0H, 0xA2400001);
+}
+
+static void HBlankCB_Phase2_Transition_Slice(void)
+{
+ u16 var = gUnknown_03004DE0[1][REG_VCOUNT];
+ REG_BG1HOFS = var;
+ REG_BG2HOFS = var;
+ REG_BG3HOFS = var;
+}
+
+static void Phase2Task_Transition_WhiteFade(u8 taskID)
+{
+ while (sPhase2_Transition_WhiteFade_Funcs[gTasks[taskID].tState](&gTasks[taskID]));
+}
+
+static bool8 Phase2_Transition_WhiteFade_Func1(struct Task* task)
+{
+ u16 i;
+
+ sub_811D658();
+ dp12_8087EA4();
+
+ TRANSITION_STRUCT.BLDCNT = 0xBF;
+ TRANSITION_STRUCT.BLDY = 0;
+ TRANSITION_STRUCT.WININ = 0x1E;
+ TRANSITION_STRUCT.WINOUT = 0x3F;
+ TRANSITION_STRUCT.WIN0V = 0xA0;
+
+ for (i = 0; i < 160; i++)
+ {
+ gUnknown_03004DE0[1][i] = 0;
+ gUnknown_03004DE0[1][i + 160] = 0xF0;
+ }
+
+ REG_IE |= INTR_FLAG_HBLANK;
+ REG_DISPSTAT |= DISPSTAT_HBLANK_INTR;
+
+ SetHBlankCallback(HBlankCB_Phase2_Transition_WhiteFade);
+ SetVBlankCallback(VBlankCB0_Phase2_Transition_WhiteFade);
+
+ task->tState++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_WhiteFade_Func2(struct Task* task)
+{
+ s16 i, posY;
+ s16 arr1[8];
+ struct Sprite* sprite;
+
+ memcpy(arr1, sUnknown_083FD8C4, sizeof(sUnknown_083FD8C4));
+ for (i = 0, posY = 0; i < 8; i++, posY += 0x14)
+ {
+ sprite = &gSprites[CreateInvisibleSprite(sub_811CFD0)];
+ sprite->pos1.x = 0xF0;
+ sprite->pos1.y = posY;
+ sprite->data5 = arr1[i];
+ }
+ sprite->data6++;
+
+ task->tState++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_WhiteFade_Func3(struct Task* task)
+{
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+ if (TRANSITION_STRUCT.field_20 > 7)
+ {
+ BlendPalettes(-1, 0x10, 0x7FFF);
+ task->tState++;
+ }
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_WhiteFade_Func4(struct Task* task)
+{
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+
+ DmaStop(0);
+ SetVBlankCallback(0);
+ SetHBlankCallback(0);
+
+ TRANSITION_STRUCT.field_6 = 0xF0;
+ TRANSITION_STRUCT.BLDY = 0;
+ TRANSITION_STRUCT.BLDCNT = 0xFF;
+ TRANSITION_STRUCT.WININ = 0x3F;
+
+ SetVBlankCallback(VBlankCB1_Phase2_Transition_WhiteFade);
+
+ task->tState++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_WhiteFade_Func5(struct Task* task)
+{
+ if (++TRANSITION_STRUCT.BLDY > 16)
+ {
+ sub_811D6D4();
+ DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_WhiteFade));
+ }
+ return FALSE;
+}
+
+static void VBlankCB0_Phase2_Transition_WhiteFade(void)
+{
+ DmaStop(0);
+ VBlankCB_BattleTransition();
+ REG_BLDCNT = TRANSITION_STRUCT.BLDCNT;
+ REG_WININ = TRANSITION_STRUCT.WININ;
+ REG_WINOUT = TRANSITION_STRUCT.WINOUT;
+ REG_WIN0V = TRANSITION_STRUCT.field_6;
+ if (TRANSITION_STRUCT.VBlank_DMA)
+ DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 640);
+ DmaSet(0, &gUnknown_03004DE0[1][160], &REG_WIN0H, 0xA2400001);
+}
+
+static void VBlankCB1_Phase2_Transition_WhiteFade(void)
+{
+ VBlankCB_BattleTransition();
+ REG_BLDY = TRANSITION_STRUCT.BLDY;
+ REG_BLDCNT = TRANSITION_STRUCT.BLDCNT;
+ REG_WININ = TRANSITION_STRUCT.WININ;
+ REG_WINOUT = TRANSITION_STRUCT.WINOUT;
+ REG_WIN0H = TRANSITION_STRUCT.field_6;
+ REG_WIN0V = TRANSITION_STRUCT.WIN0V;
+}
+
+static void HBlankCB_Phase2_Transition_WhiteFade(void)
+{
+ REG_BLDY = gUnknown_03004DE0[1][REG_VCOUNT];
+}
+
+static void sub_811CFD0(struct Sprite* sprite)
+{
+ if (sprite->data5)
+ {
+ sprite->data5--;
+ if (sprite->data6)
+ TRANSITION_STRUCT.VBlank_DMA = 1;
+ }
+ else
+ {
+ u16 i;
+ u16* ptr1 = &gUnknown_03004DE0[0][sprite->pos1.y];
+ u16* ptr2 = &gUnknown_03004DE0[0][sprite->pos1.y + 160];
+ for (i = 0; i < 20; i++)
+ {
+ ptr1[i] = sprite->data0 >> 8;
+ ptr2[i] = (u8)(sprite->pos1.x);
+ }
+ if (sprite->pos1.x == 0 && sprite->data0 == 0x1000)
+ sprite->data1 = 1;
+
+ sprite->pos1.x -= 16;
+ sprite->data0 += 0x80;
+
+ if (sprite->pos1.x < 0)
+ sprite->pos1.x = 0;
+ if (sprite->data0 > 0x1000)
+ sprite->data0 = 0x1000;
+
+ if (sprite->data6)
+ TRANSITION_STRUCT.VBlank_DMA = 1;
+
+ if (sprite->data1)
+ {
+ if (sprite->data6 == 0 || (TRANSITION_STRUCT.field_20 > 6 && sprite->data2++ > 7))
+ {
+ TRANSITION_STRUCT.field_20++;
+ DestroySprite(sprite);
+ }
+ }
+ }
+}
+
+static void Phase2Task_Transition_GridSquares(u8 taskID)
+{
+ while (sPhase2_Transition_GridSquares_Funcs[gTasks[taskID].tState](&gTasks[taskID]));
+}
+
+static bool8 Phase2_Transition_GridSquares_Func1(struct Task* task)
+{
+ u16 *dst1, *dst2;
+
+ sub_811D6A8(&dst1, &dst2);
+ CpuSet(sShrinkingBoxTileset, dst2, 0x10);
+ CpuFill16(0xF000, dst1, 0x800);
+ LoadPalette(gFieldEffectObjectPalette10, 0xF0, 0x20);
+
+ task->tState++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_GridSquares_Func2(struct Task* task)
+{
+ u16* dst1;
+
+ if (task->data[1] == 0)
+ {
+ sub_811D690(&dst1);
+ task->data[1] = 3;
+ task->data[2]++;
+ CpuSet(sShrinkingBoxTileset + (task->data[2] * 8), dst1, 0x10);
+ if (task->data[2] > 0xD)
+ {
+ task->tState++;
+ task->data[1] = 16;
+ }
+ }
+
+ task->data[1]--;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_GridSquares_Func3(struct Task* task)
+{
+ if (--task->data[1] == 0)
+ {
+ sub_811D6D4();
+ DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_GridSquares));
+ }
+ return FALSE;
+}
+
+static void Phase2Task_Transition_Shards(u8 taskID)
+{
+ while (sPhase2_Transition_Shards_Funcs[gTasks[taskID].tState](&gTasks[taskID]));
+}
+
+static bool8 Phase2_Transition_Shards_Func1(struct Task* task)
+{
+ u16 i;
+
+ sub_811D658();
+ dp12_8087EA4();
+
+ TRANSITION_STRUCT.WININ = 0x3F;
+ TRANSITION_STRUCT.WINOUT = 0;
+ TRANSITION_STRUCT.WIN0V = 0xA0;
+
+ for (i = 0; i < 160; i++)
+ {
+ gUnknown_03004DE0[0][i] = 0xF0;
+ }
+
+ CpuSet(gUnknown_03004DE0[0], gUnknown_03004DE0[1], 0xA0);
+ SetVBlankCallback(VBlankCB_Phase2_Transition_Shards);
+
+ task->tState++;
+ return TRUE;
+}
+
+static bool8 Phase2_Transition_Shards_Func2(struct Task* task)
+{
+ sub_811D8FC(TRANSITION_STRUCT.data,
+ sUnknown_083FD8F4[task->data[1]][0],
+ sUnknown_083FD8F4[task->data[1]][1],
+ sUnknown_083FD8F4[task->data[1]][2],
+ sUnknown_083FD8F4[task->data[1]][3],
+ 1, 1);
+ task->data[2] = sUnknown_083FD8F4[task->data[1]][4];
+ task->tState++;
+ return TRUE;
+}
+
+static bool8 Phase2_Transition_Shards_Func3(struct Task* task)
+{
+ s16 i;
+ bool8 nextFunc;
+
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+
+ for (i = 0, nextFunc = FALSE; i < 16; i++)
+ {
+ s16 r3 = gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] >> 8;
+ s16 r4 = gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] & 0xFF;
+ if (task->data[2] == 0)
+ {
+ if (r3 < TRANSITION_STRUCT.data[2])
+ r3 = TRANSITION_STRUCT.data[2];
+ if (r3 > r4)
+ r3 = r4;
+ }
+ else
+ {
+ if (r4 > TRANSITION_STRUCT.data[2])
+ r4 = TRANSITION_STRUCT.data[2];
+ if (r4 <= r3)
+ r4 = r3;
+ }
+ gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r4) | (r3 << 8);
+ if (nextFunc)
+ {
+ task->tState++;
+ break;
+ }
+ else
+ nextFunc = sub_811D978(TRANSITION_STRUCT.data, 1, 1);
+ }
+
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_Shards_Func4(struct Task* task)
+{
+ if (++task->data[1] < 7)
+ {
+ task->tState++;
+ task->data[3] = sUnknown_083FD93A[task->data[1] - 1];
+ return TRUE;
+ }
+ else
+ {
+ DmaStop(0);
+ sub_811D6D4();
+ DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Shards));
+ return FALSE;
+ }
+}
+
+static bool8 Phase2_Transition_Shards_Func5(struct Task* task)
+{
+ if (--task->data[3] == 0)
+ {
+ task->tState = 1;
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+static void VBlankCB_Phase2_Transition_Shards(void)
+{
+ DmaStop(0);
+ VBlankCB_BattleTransition();
+ if (TRANSITION_STRUCT.VBlank_DMA)
+ DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+ REG_WININ = TRANSITION_STRUCT.WININ;
+ REG_WINOUT = TRANSITION_STRUCT.WINOUT;
+ REG_WIN0V = TRANSITION_STRUCT.WIN0V;
+ REG_WIN0H = gUnknown_03004DE0[1][0];
+ DmaSet(0, gUnknown_03004DE0[1], &REG_WIN0H, 0xA2400001);
+}
+
+static void CreatePhase1Task(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4)
+{
+ u8 taskID = CreateTask(Phase1_Task_RunFuncs, 3);
+ gTasks[taskID].data[1] = a0;
+ gTasks[taskID].data[2] = a1;
+ gTasks[taskID].data[3] = a2;
+ gTasks[taskID].data[4] = a3;
+ gTasks[taskID].data[5] = a4;
+ gTasks[taskID].data[6] = a0;
+}
+
+static bool8 sub_811D52C(void)
+{
+ if (FindTaskIdByFunc(Phase1_Task_RunFuncs) == 0xFF)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static void Phase1_Task_RunFuncs(u8 taskID)
+{
+ while (sPhase1_TransitionAll_Funcs[gTasks[taskID].tState](&gTasks[taskID]));
+}
+
+static bool8 Phase1_TransitionAll_Func1(struct Task* task)
+{
+ if (task->data[6] == 0 || --task->data[6] == 0)
+ {
+ task->data[6] = task->data[1];
+ task->data[7] += task->data[4];
+ if (task->data[7] > 16)
+ task->data[7] = 16;
+ BlendPalettes(-1, task->data[7], 0x2D6B);
+ }
+ if (task->data[7] > 15)
+ {
+ task->tState++;
+ task->data[6] = task->data[2];
+ }
+ return FALSE;
+}
+
+static bool8 Phase1_TransitionAll_Func2(struct Task* task)
+{
+ if (task->data[6] == 0 || --task->data[6] == 0)
+ {
+ task->data[6] = task->data[2];
+ task->data[7] -= task->data[5];
+ if (task->data[7] < 0)
+ task->data[7] = 0;
+ BlendPalettes(-1, task->data[7], 0x2D6B);
+ }
+ if (task->data[7] == 0)
+ {
+ if (--task->data[3] == 0)
+ DestroyTask(FindTaskIdByFunc(Phase1_Task_RunFuncs));
+ else
+ {
+ task->data[6] = task->data[1];
+ task->tState = 0;
+ }
+ }
+ return FALSE;
+}
+
+static void sub_811D658(void)
+{
+ struct TransitionData* const* dummy = &sTransitionStructPtr;
+ memset(*dummy, 0, sizeof(struct TransitionData));
+ sub_8057B14(&TRANSITION_STRUCT.field_14, &TRANSITION_STRUCT.field_16);
+}
+
+static void VBlankCB_BattleTransition(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void sub_811D690(u16** a0)
+{
+ u16 reg, *vram;
+
+ reg = REG_BG0CNT >> 2;
+ reg <<= 0xE;
+ vram = (u16*)(VRAM + reg);
+
+ *a0 = vram;
+}
+
+static void sub_811D6A8(u16** a0, u16** a1)
+{
+ u16 reg0, reg1, *vram0, *vram1;
+
+ reg0 = REG_BG0CNT >> 8;
+ reg1 = REG_BG0CNT >> 2;
+
+ reg0 <<= 0xB;
+ reg1 <<= 0xE;
+
+ vram0 = (u16*)(VRAM + reg0);
+ *a0 = vram0;
+
+ vram1 = (u16*)(VRAM + reg1);
+ *a1 = vram1;
+}
+
+static void sub_811D6D4(void)
+{
+ BlendPalettes(-1, 0x10, 0);
+}
+
+static void sub_811D6E8(s16* array, s16 sinAdd, s16 index, s16 indexIncrementer, s16 amplitude, s16 arrSize)
+{
+ u8 i;
+ for (i = 0; arrSize > 0; arrSize--, i++, index += indexIncrementer)
+ {
+ array[i] = sinAdd + Sin(0xFF & index, amplitude);
+ }
+}
+
+static void sub_811D764(u16* array, s16 a1, s16 a2, s16 a3)
+{
+ s16 i;
+
+ memset(array, 0xA, 160 * sizeof(s16));
+ for (i = 0; i < 64; i++)
+ {
+ s16 sinResult, cosResult;
+ s16 toStoreOrr, r2, r3, toStore, r7, r8;
+
+ sinResult = Sin(i, a3);
+ cosResult = Cos(i, a3);
+
+ toStoreOrr = a1 - sinResult;
+ toStore = a1 + sinResult;
+ r7 = a2 - cosResult;
+ r8 = a2 + cosResult;
+
+ if (toStoreOrr < 0)
+ toStoreOrr = 0;
+ if (toStore > 0xF0)
+ toStore = 0xF0;
+ if (r7 < 0)
+ r7 = 0;
+ if (r8 > 0x9F)
+ r8 = 0x9F;
+
+ toStore |= (toStoreOrr << 8);
+ array[r7] = toStore;
+ array[r8] = toStore;
+
+ cosResult = Cos(i + 1, a3);
+ r3 = a2 - cosResult;
+ r2 = a2 + cosResult;
+
+ if (r3 < 0)
+ r3 = 0;
+ if (r2 > 0x9F)
+ r2 = 0x9F;
+
+ while (r7 > r3)
+ array[--r7] = toStore;
+ while (r7 < r3)
+ array[++r7] = toStore;
+
+ while (r8 > r2)
+ array[--r8] = toStore;
+ while (r8 < r2)
+ array[++r8] = toStore;
+ }
+}
+
+static void sub_811D8FC(s16* data, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6)
+{
+ data[0] = a1;
+ data[1] = a2;
+ data[2] = a1;
+ data[3] = a2;
+ data[4] = a3;
+ data[5] = a4;
+ data[6] = a5;
+ data[7] = a6;
+ data[8] = a3 - a1;
+ if (data[8] < 0)
+ {
+ data[8] = -data[8];
+ data[6] = -a5;
+ }
+ data[9] = a4 - a2;
+ if (data[9] < 0)
+ {
+ data[9] = -data[9];
+ data[7] = -a6;
+ }
+ data[10] = 0;
+}
+
+static bool8 sub_811D978(s16* data, bool8 a1, bool8 a2)
+{
+ u8 var;
+ if (data[8] > data[9])
+ {
+ data[2] += data[6];
+ data[10] += data[9];
+ if (data[10] > data[8])
+ {
+ data[3] += data[7];
+ data[10] -= data[8];
+ }
+ }
+ else
+ {
+ data[3] += data[7];
+ data[10] += data[8];
+ if (data[10] > data[9])
+ {
+ data[2] += data[6];
+ data[10] -= data[9];
+ }
+ }
+ var = 0;
+ if ((data[6] > 0 && data[2] >= data[4]) || (data[6] < 0 && data[2] <= data[4]))
+ {
+ var++;
+ if (a1)
+ data[2] = data[4];
+ }
+ if ((data[7] > 0 && data[3] >= data[5]) || (data[7] < 0 && data[3] <= data[5]))
+ {
+ var++;
+ if (a2)
+ data[3] = data[5];
+ }
+ if (var == 2)
+ return TRUE;
+ else
+ return FALSE;
+}
diff --git a/src/berry.c b/src/berry.c
index fa15672e7..d82eab2a6 100644
--- a/src/berry.c
+++ b/src/berry.c
@@ -974,7 +974,7 @@ const struct Berry gBerries[] =
const struct BerryTree gBlankBerryTree = {0};
-extern u8 BerryTreeScript;
+extern u8 S_BerryTree[];
extern u16 gScriptLastTalked;
extern u16 gSpecialVar_0x8004;
extern u16 gSpecialVar_0x8005;
@@ -1078,7 +1078,7 @@ bool32 FieldObjectInteractionWaterBerryTree(void)
bool8 IsPlayerFacingPlantedBerryTree(void)
{
- if (GetFieldObjectScriptPointerForComparison() == &BerryTreeScript
+ if (GetFieldObjectScriptPointerForComparison() == S_BerryTree
&& GetStageByBerryTreeId(FieldObjectGetBerryTreeId(gSelectedMapObject)) == 0)
return TRUE;
else
@@ -1087,7 +1087,7 @@ bool8 IsPlayerFacingPlantedBerryTree(void)
bool8 TryToWaterBerryTree(void)
{
- if (GetFieldObjectScriptPointerForComparison() != &BerryTreeScript)
+ if (GetFieldObjectScriptPointerForComparison() != S_BerryTree)
return FALSE;
else
return FieldObjectInteractionWaterBerryTree();
diff --git a/src/berry_blender.c b/src/berry_blender.c
new file mode 100644
index 000000000..455aabc45
--- /dev/null
+++ b/src/berry_blender.c
@@ -0,0 +1,3884 @@
+#include "global.h"
+#include "decompress.h"
+#include "palette.h"
+#include "event_data.h"
+#include "main.h"
+#include "text_window.h"
+#include "menu.h"
+#include "strings2.h"
+#include "sound.h"
+#include "songs.h"
+#include "berry.h"
+#include "string_util.h"
+#include "link.h"
+#include "task.h"
+#include "overworld.h"
+#include "item.h"
+#include "items.h"
+#include "rng.h"
+#include "save.h"
+#include "menu_cursor.h"
+#include "trig.h"
+#include "pokeblock.h"
+
+//needed to match Blender_ControlHitPitch
+struct MusicPlayerInfo
+{
+ struct SongHeader *songHeader;
+ u32 status;
+ u8 trackCount;
+ u8 priority;
+ u8 cmd;
+ u8 unk_B;
+ u32 clock;
+ u8 gap[8];
+ u8 *memAccArea;
+ u16 tempoD;
+ u16 tempoU;
+ u16 tempoI;
+ u16 tempoC;
+ u16 fadeOI;
+ u16 fadeOC;
+ u16 fadeOV;
+ struct MusicPlayerTrack *tracks;
+ struct ToneData *tone;
+ u32 ident;
+ u32 func;
+ u32 intp;
+};
+
+#define BLENDER_SCORE_BEST 0
+#define BLENDER_SCORE_GOOD 1
+#define BLENDER_SCORE_MISS 2
+
+#define BLENDER_MAX_PLAYERS 4
+#define BLENDER_SCORES_NO 3
+
+#define FLAVOUR_SPICY 0
+#define FLAVOUR_DRY 1
+#define FLAVOUR_SWEET 2
+#define FLAVOUR_BITTER 3
+#define FLAVOUR_SOUR 4
+
+struct BlenderBerry
+{
+ u16 itemID;
+ u8 name[7];
+ u8 flavours[5];
+ u8 smoothness;
+};
+
+struct BerryBlenderData
+{
+ u8 field_0;
+ u8 field_1;
+ struct Window field_4;
+ u8 field_35;
+ u8 field_36;
+ u8 field_37;
+ u8 field_38;
+ u8 field_39;
+ u8 field_3A;
+ u8 field_3B;
+ u8 field_3C;
+ u8 field_3D;
+ u8 field_3E;
+ u8 field_3F;
+ u8 field_40;
+ u8 field_41;
+ u8 field_42;
+ u8 field_43;
+ u8 field_44;
+ u8 field_45;
+ u8 field_46;
+ u8 field_47;
+ u8 field_48;
+ u8 field_49;
+ u8 field_4A;
+ u8 field_4B;
+ u8 field_4C;
+ u8 field_4D;
+ u16 field_4E;
+ u8 scoreIconIDs[3];
+ u16 arrowPos;
+ s16 field_56;
+ s16 field_58;
+ u16 max_RPM;
+ u8 SyncArrowSpriteID[BLENDER_MAX_PLAYERS];
+ u8 SyncArrowSprite2ID[BLENDER_MAX_PLAYERS];
+ u8 field_64;
+ u8 field_65;
+ u8 field_66;
+ u8 field_67;
+ u8 field_68;
+ u8 field_69;
+ u8 field_6A;
+ u8 field_6B;
+ u8 field_6C;
+ u8 field_6D;
+ u8 field_6E;
+ u8 field_6F;
+ u16 field_70[BLENDER_MAX_PLAYERS];
+ u16 field_78;
+ u16 field_7A;
+ u16 field_7C;
+ u8 field_7E;
+ u8 field_7F;
+ u16 chosenItemID[BLENDER_MAX_PLAYERS];
+ u8 playersNo;
+ u8 field_89;
+ u8 field_8A;
+ u8 field_8B;
+ u8 field_8C;
+ u8 field_8D;
+ u8 field_8E;
+ u8 field_8F;
+ u8 field_90;
+ u8 field_91;
+ u8 field_92;
+ u8 field_93;
+ u16 field_94;
+ u8 field_96;
+ u8 field_97;
+ u8 field_98;
+ u8 field_99;
+ u16 field_9A[BLENDER_MAX_PLAYERS];
+ u16 field_A2[BLENDER_MAX_PLAYERS];
+ u8 field_AA;
+ u8 stringVar[129];
+ u32 gameFrameTime;
+ s32 framesToWait;
+ u32 field_134;
+ u8 field_138;
+ u8 field_139;
+ u8 field_13A;
+ u8 field_13B;
+ u8 field_13C;
+ u8 field_13D;
+ u16 field_13E;
+ u16 field_140;
+ u16 field_142;
+ s16 field_144;
+ s16 field_146;
+ u8 field_148[3];
+ u8 field_14B;
+ u16 scores[BLENDER_MAX_PLAYERS][3];
+ u8 playerPlaces[BLENDER_MAX_PLAYERS];
+ struct BgAffineDstData field_168;
+ u16 field_178;
+ struct BlenderBerry blendedBerries[BLENDER_MAX_PLAYERS];
+ u32 field_1BC;
+ u16 field_1C0;
+ u16 field_1C2;
+ u32 field_1C4;
+};
+
+struct BlenderDebug
+{
+ s8 cursorPos;
+ s8 berries[4];
+ struct Pokeblock pokeblock;
+ u8 field_10;
+ u8 spicy;
+ u8 dry;
+ u8 sweet;
+ u8 bitter;
+ u8 sour;
+ u8 feel;
+ s8 field_17;
+ s8 field_18;
+ s8 field_19;
+ s16 BPM;
+};
+
+// other files functions
+void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s16 pitch);
+void m4aMPlayTempoControl(struct MusicPlayerInfo *mplayInfo, u16 tempo);
+void m4aMPlayStop(struct MusicPlayerInfo *mplayInfo);
+void sub_80A6978(void);
+u8 sub_80A7DEC(u8 berryId, u8 x, u8 y, bool8 animate);
+void sub_814A880(u8 a1, u8 a2);
+u8 sub_814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5);
+s8 sub_810CA00(void);
+bool8 sub_810CA34(struct Pokeblock *pokeblock);
+#ifdef GERMAN
+extern void de_sub_8073110();
+#endif
+
+extern struct MusicPlayerInfo gMPlay_SE2;
+extern struct MusicPlayerInfo gMPlay_BGM;
+extern u8 ewram[];
+extern u16 gScriptItemId;
+extern u8 gUnknown_020297ED;
+extern u8 byte_3002A68;
+
+extern const u8 gUnknown_08E6C100[];
+extern const u8 gUnknown_08E6C920[];
+extern const u8 gUnknown_08E6D354[];
+extern const struct WindowConfig gWindowConfig_81E6F68;
+extern const u8 *const gPokeblockNames[];
+extern const struct Berry gBerries[];
+
+extern const u8 gBerryBlenderArrowTiles[];
+extern const u8 gBerryBlenderMarubatsuTiles[];
+extern const u8 gBerryBlenderParticlesTiles[];
+extern const u8 gBerryBlenderCountdownNumbersTiles[];
+extern const u8 gBerryBlenderStartTiles[];
+extern const u16 gBerryBlenderMiscPalette[];
+extern const u16 gBerryBlenderArrowPalette[];
+
+// ewram
+static EWRAM_DATA u8 gUnknown_020297DC = 0;
+static EWRAM_DATA u32 gUnknown_020297E0 = 0;
+static EWRAM_DATA u32 gUnknown_020297E4 = 0;
+static EWRAM_DATA u8 gUnknown_020297E8 = 0;
+
+// iwram common
+u16 gUnknown_03004830;
+u8 gInGameOpponentsNo;
+u16 gUnknown_03004840[10];
+struct BerryBlenderData* gBerryBlenderData;
+
+// iwram bss
+IWRAM_DATA s16 gUnknown_03000510[8];
+IWRAM_DATA s16 gUnknown_03000520[6];
+IWRAM_DATA s16 gUnknown_0300052C;
+IWRAM_DATA s16 gUnknown_0300052E;
+IWRAM_DATA s32 gUnknown_03000530[6];
+IWRAM_DATA s32 gUnknown_03000548[5];
+IWRAM_DATA u32 gUnknown_0300055C;
+IWRAM_DATA struct BlenderDebug sBlenderDebug;
+
+// this file's functions
+void Blender_SetBankBerryData(u8 bank, u16 itemID);
+
+static void sub_80514A4(void);
+static void sub_80514F0(void);
+static void sub_804E56C(void);
+static void Blender_SetPlayerNamesLocal(u8 NoOfOpponents);
+static void sub_8051474(void);
+static void sub_804E9F8(void);
+static void sub_804F378(void);
+static void sub_8051414(struct BgAffineDstData *dest);
+static void sub_804F238(void);
+static void sub_80501FC(void);
+static bool8 sub_8051B8C(void);
+static void sub_804F2A8(void);
+static void sub_804F81C(void);
+static void sub_805156C(void);
+void sub_8051684(struct Sprite* sprite);
+static void sub_8051AC8(s16* a0, u16 a1);
+static void sub_805194C(u16 a0, u16 a1);
+static void sub_8051A3C(u16 a0);
+static void sub_8051B18(void);
+static void sub_805123C(void);
+static void sub_8050954(void);
+static bool8 Blender_PrintBlendingRanking(void);
+static bool8 Blender_PrintBlendingResults(void);
+static void sub_80510E8(void);
+static void sub_8050E30(void);
+static void sub_805197C(u16 a0, u16 a1);
+static void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst);
+static void sub_8052BD0(u8 taskID);
+static void sub_8052AF8(void);
+static void sub_804F8C8(u8 taskID);
+static void sub_804F9F4(u8 taskID);
+static void sub_804FB1C(u8 taskID);
+static void sub_8051C04(struct Sprite* sprite);
+static void sub_8051650(struct Sprite* sprite);
+static void sub_805181C(struct Sprite* sprite);
+static void sub_80518CC(struct Sprite* sprite);
+
+// const data
+static const u16 sBlenderCenterPal[] = INCBIN_U16("graphics/berry_blender/center.gbapal");
+static const u8 sBlenderCenterMap[] = INCBIN_U8("graphics/berry_blender/center_map.bin");
+static const u16 sBlenderOuterPal[] = INCBIN_U16("graphics/berry_blender/outer.gbapal");
+
+// unreferenced pals?
+static const u16 sUnknownPal_0[] = INCBIN_U16("graphics/unused/unknown/821604C.gbapal");
+static const u16 sUnknownArray_1[224] = {0};
+
+// unreferenced Japanese strings
+static const u8 sUnknownJpnString0[] = _("▶");
+static const u8 sUnknownJpnString1[] = _(" ");
+static const u8 sUnknownJpnString2[] = _("カッコイ"); // "cool" (missing an イ at the end)
+static const u8 sUnknownJpnString3[] = _("カワイイ"); // "cute"
+static const u8 sUnknownJpnString4[] = _("ウツクシ"); // "beautiful" (missing an イ at the end)
+static const u8 sUnknownJpnString5[] = _("カシコイ"); // "smart"
+static const u8 sUnknownJpnString6[] = _("タクマシ"); // "tough" (missing an イ at the end)
+
+static const u8 gUnknown_08216249[] = _("\p");
+
+// unreferenced; These appear to be the first names of four people who worked on the game.
+static const u8 sUnknownJpnString7[10] = _("てつじ"); // Tetsuji (Ohta)
+static const u8 sUnknownJpnString8[10] = _("あきと"); // Akito (Mori)
+static const u8 sUnknownJpnString9[10] = _("シゲル"); // Shigeru (Ohmori)
+static const u8 sUnknownJpnString10[10] = _("ヨシノリ"); // Yoshinori (Matsuda)
+
+static const u8 sUnknownText_2Pok[] = _("2Pok");
+static const u8 sUnknownText_3Pok[] = _("3Pok");
+static const u8 sUnknownText_4Pok[] = _("4Pok");
+static const u8* const gUnknown_08216284[] =
+{
+ sUnknownText_2Pok, sUnknownText_3Pok, sUnknownText_4Pok
+};
+
+// unreferenced player strings
+static const u8 sUnknown1PString[4] = _("1P");
+static const u8 sUnknown2PString[4] = _("2P");
+static const u8 sUnknown3PString[4] = _("3P");
+static const u8 sUnknown4PString[4] = _("4P");
+
+#ifdef ENGLISH
+static const u8 sBlenderOpponentName1[] = _("MISTER");
+static const u8 sBlenderOpponentName2[] = _("LADDIE");
+static const u8 sBlenderOpponentName3[] = _("LASSIE");
+#else // GERMAN
+static const u8 sBlenderOpponentName1[] = _("OPI");
+static const u8 sBlenderOpponentName2[] = _("KUMPEL");
+static const u8 sBlenderOpponentName3[] = _("TUSSI");
+#endif // ENGLISH
+static const u8* const sBlenderOpponentsNames[] =
+{
+ sBlenderOpponentName1, sBlenderOpponentName2, sBlenderOpponentName3
+};
+
+static const u8 sRedColorString[] = _("{COLOR RED}");
+static const u8 sNewLineString_0[] = _("\n");
+static const u8 sSpaceString_0[] = _(" ");
+
+static const s8 gUnknown_082162CC[][2] =
+{
+ {-1, -1}, {1, -1}, {-1, 1}, {1, 1}
+};
+
+static const u8 gUnknown_082162D4[][2] =
+{
+ {2, 6}, {23, 6}, {2, 12}, {23, 12}, {1, 6}, {22, 6}, {1, 12}, {22, 12}
+};
+
+static const u8 sBlenderSyncArrowsPos[][2] =
+{
+ {72, 32}, {168, 32}, {72, 128}, {168, 128}
+};
+
+static const u8 gUnknown_082162EC[3][4] =
+{
+ {-1, 0, 1, -1}, {-1, 0, 1, 2}, {0, 1, 2, 3}
+};
+
+static const u16 gUnknown_082162F8[] = {0, 0xC000, 0x4000, 0x8000};
+static const u8 gUnknown_08216300[] = {1, 1, 0};
+static const u8 gUnknown_08216303[] = {32, 224, 96, 160, 0};
+
+static const TaskFunc gUnknown_08216308[] =
+{
+ sub_804F8C8, sub_804F9F4, sub_804FB1C
+};
+
+static const struct OamData sOamData_8216314 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sSpriteAnim_821631C[] =
+{
+ ANIMCMD_FRAME(16, 5, 1, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_8216324[] =
+{
+ ANIMCMD_FRAME(16, 5, .vFlip = TRUE),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_821632C[] =
+{
+ ANIMCMD_FRAME(16, 5, .hFlip = TRUE),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_8216334[] =
+{
+ ANIMCMD_FRAME(16, 5, 0, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_821633C[] =
+{
+ ANIMCMD_FRAME(48, 2, 1, 1),
+ ANIMCMD_FRAME(32, 5, 1, 1),
+ ANIMCMD_FRAME(48, 3, 1, 1),
+ ANIMCMD_FRAME(16, 5, 1, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_8216350[] =
+{
+ ANIMCMD_FRAME(48, 2, .vFlip = TRUE),
+ ANIMCMD_FRAME(32, 5, .vFlip = TRUE),
+ ANIMCMD_FRAME(48, 3, .vFlip = TRUE),
+ ANIMCMD_FRAME(16, 5, .vFlip = TRUE),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_8216364[] =
+{
+ ANIMCMD_FRAME(48, 2, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 5, .hFlip = TRUE),
+ ANIMCMD_FRAME(48, 3, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 5, .hFlip = TRUE),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_8216378[] =
+{
+ ANIMCMD_FRAME(48, 2, 0, 0),
+ ANIMCMD_FRAME(32, 5, 0, 0),
+ ANIMCMD_FRAME(48, 3, 0, 0),
+ ANIMCMD_FRAME(16, 5, 0, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_821638C[] =
+{
+ ANIMCMD_FRAME(0, 5, 1, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_8216394[] =
+{
+ ANIMCMD_FRAME(0, 5, .vFlip = TRUE),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_821639C[] =
+{
+ ANIMCMD_FRAME(0, 5, .hFlip = TRUE),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82163A4[] =
+{
+ ANIMCMD_FRAME(0, 5, 0, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_82163AC[] =
+{
+ sSpriteAnim_821631C,
+ sSpriteAnim_8216324,
+ sSpriteAnim_821632C,
+ sSpriteAnim_8216334,
+ sSpriteAnim_821633C,
+ sSpriteAnim_8216350,
+ sSpriteAnim_8216364,
+ sSpriteAnim_8216378,
+ sSpriteAnim_821638C,
+ sSpriteAnim_8216394,
+ sSpriteAnim_821639C,
+ sSpriteAnim_82163A4
+};
+
+static const struct SpriteSheet gUnknown_082163DC =
+{
+ gBerryBlenderArrowTiles, 0x800, 46545
+};
+
+static const struct SpritePalette gUnknown_082163E4 =
+{
+ gBerryBlenderMiscPalette, 46546
+};
+
+static const struct SpritePalette gUnknown_082163EC =
+{
+ gBerryBlenderArrowPalette, 12312
+};
+
+static const struct SpriteTemplate sBlenderSyncArrow_SpriteTemplate =
+{
+ .tileTag = 46545,
+ .paletteTag = 12312,
+ .oam = &sOamData_8216314,
+ .anims = sSpriteAnimTable_82163AC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8051C04
+};
+
+static const struct OamData sOamData_821640C =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sSpriteAnim_8216414[] =
+{
+ ANIMCMD_FRAME(0, 20),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_821641C[] =
+{
+ ANIMCMD_FRAME(4, 20, 1, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_8216424[] =
+{
+ ANIMCMD_FRAME(8, 4),
+ ANIMCMD_FRAME(12, 4),
+ ANIMCMD_FRAME(8, 4),
+ ANIMCMD_FRAME(12, 4),
+ ANIMCMD_FRAME(8, 4),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_821643C[] =
+{
+ ANIMCMD_FRAME(8, 4),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_8216444[] =
+{
+ sSpriteAnim_8216414,
+ sSpriteAnim_821641C,
+ sSpriteAnim_8216424,
+ sSpriteAnim_821643C,
+};
+
+static const struct SpriteSheet gUnknown_08216454 =
+{
+ gBerryBlenderMarubatsuTiles, 0x200, 48888
+};
+
+static const struct SpriteTemplate sSpriteTemplate_821645C =
+{
+ .tileTag = 48888,
+ .paletteTag = 46546,
+ .oam = &sOamData_821640C,
+ .anims = sSpriteAnimTable_8216444,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8051650
+};
+
+static const struct OamData sOamData_8216474 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sSpriteAnim_821647C[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_FRAME(3, 5),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_8216494[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(2, 4),
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_FRAME(2, 4),
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82164AC[] =
+{
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_FRAME(1, 2),
+ ANIMCMD_FRAME(2, 2),
+ ANIMCMD_FRAME(4, 4),
+ ANIMCMD_FRAME(3, 3),
+ ANIMCMD_FRAME(2, 2),
+ ANIMCMD_FRAME(1, 2),
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82164D0[] =
+{
+ ANIMCMD_FRAME(5, 5, 1, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82164D8[] =
+{
+ ANIMCMD_FRAME(6, 5, 1, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_82164E0[] =
+{
+ sSpriteAnim_821647C,
+ sSpriteAnim_8216494,
+ sSpriteAnim_82164AC,
+ sSpriteAnim_82164D0,
+ sSpriteAnim_82164D8,
+};
+
+static const struct SpriteSheet gUnknown_082164F4 =
+{
+ gBerryBlenderParticlesTiles, 0xE0, 23456
+};
+
+static const struct SpriteTemplate sSpriteTemplate_82164FC =
+{
+ .tileTag = 23456,
+ .paletteTag = 46546,
+ .oam = &sOamData_8216474,
+ .anims = sSpriteAnimTable_82164E0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+};
+
+static const struct OamData sOamData_8216514 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sSpriteAnim_821651C[] =
+{
+ ANIMCMD_FRAME(32, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_8216524[] =
+{
+ ANIMCMD_FRAME(16, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_821652C[] =
+{
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_8216534[] =
+{
+ sSpriteAnim_821651C,
+ sSpriteAnim_8216524,
+ sSpriteAnim_821652C,
+};
+
+static const struct SpriteSheet gUnknown_08216540 =
+{
+ gBerryBlenderCountdownNumbersTiles, 0x600, 12345
+};
+
+static const struct SpriteTemplate sSpriteTemplate_8216548 =
+{
+ .tileTag = 12345,
+ .paletteTag = 46546,
+ .oam = &sOamData_8216514,
+ .anims = sSpriteAnimTable_8216534,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_805181C
+};
+
+static const struct OamData sOamData_8216560 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 1,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sSpriteAnim_8216568[] =
+{
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_8216570[] =
+{
+ sSpriteAnim_8216568,
+};
+
+static const struct SpriteSheet gUnknown_08216574 =
+{
+ gBerryBlenderStartTiles, 0x400, 12346
+};
+
+static const struct SpriteTemplate sSpriteTemplate_821657C =
+{
+ .tileTag = 12346,
+ .paletteTag = 46546,
+ .oam = &sOamData_8216560,
+ .anims = sSpriteAnimTable_8216570,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80518CC
+};
+
+static const s16 gUnknown_08216594[][5] =
+{
+ {-10, 20, 10, 2, 1},
+ {250, 20, 10, -2, 1},
+ {-10, 140, 10, 2, -1},
+ {250, 140, 10, -2, -1},
+};
+
+static const u8 gUnknown_082165BC[][3] =
+{
+ {4, 3, 2}, {0, 4, 3}, {1, 0, 4}, {2, 1, 0}, {3, 2, 1}, {0, 2, 3}, {1, 3, 4}, {2, 4, 0}, {3, 0, 1}, {4, 1, 2},
+};
+
+static const u8 gUnknown_082165DA[] = {1, 1, 2, 3, 4};
+static const u8 gUnknown_082165DF[] = {0x1C, 0x16, 0x13, 0x1A, 0x19, 0x0E, 0x0D, 0x0B, 0x07, 0x15};
+static const u8 gUnknown_082165E9[] = {6, 6, 6, 6, 5};
+static const u8 gUnknown_082165EE[] = {3, 3, 3, 2, 2};
+static const u8 gUnknown_082165F3[] = {3, 3, 3, 3, 2};
+
+static const u8 sText_Space[] = _(" ");
+static const u8 sText_BPM[] = _("BPM");
+static const u8 sText_Dash[] = _("-");
+static const u8 sNewLineString_1[] = _("\n");
+static const u8 sNewLineString_2[] = _("\n");
+
+static void Blender_ControlHitPitch(void)
+{
+ m4aMPlayPitchControl(&gMPlay_SE2, 0xFFFF, (gBerryBlenderData->field_56 - 128) * 2);
+}
+
+static void VBlankCB0_BerryBlender(void)
+{
+ sub_80514A4();
+ sub_80514F0();
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void VBlankCB1_BerryBlender(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static bool8 sub_804E2EC(void)
+{
+ switch (gBerryBlenderData->field_1)
+ {
+ case 0:
+ sub_800D238(gUnknown_08E6C100, &ewram[0x10000]);
+ gBerryBlenderData->field_1++;
+ break;
+ case 1:
+ {
+ const void* offsetRead = sBlenderCenterMap;
+ void* offsetWrite = (void*)(VRAM + 0x4000);
+
+ DmaCopy16(3, offsetRead, offsetWrite, 0x400);
+ LoadPalette(sBlenderCenterPal, 0, 0x100);
+ gBerryBlenderData->field_1++;
+ }
+ break;
+ case 2:
+ {
+ void* offsetRead = &ewram[0x10000];
+ void* offsetWrite = (void*)(VRAM);
+ u32 size = 0x2000;
+ while (TRUE)
+ {
+ DmaCopy16(3, offsetRead, offsetWrite, 0x1000);
+ offsetRead += 0x1000;
+ offsetWrite += 0x1000;
+ size -= 0x1000;
+ if (size <= 0x1000)
+ {
+ DmaCopy16(3, offsetRead, offsetWrite, size);
+ break;
+ }
+ }
+ gBerryBlenderData->field_1++;
+ }
+ break;
+ case 3:
+ sub_800D238(gUnknown_08E6C920, &ewram[0x10000]);
+ gBerryBlenderData->field_1++;
+ break;
+ case 4:
+ sub_800D238(gUnknown_08E6D354, &ewram[0x13000]);
+ gBerryBlenderData->field_1++;
+ break;
+ case 5:
+ {
+ void* offsetRead = &ewram[0x10000];
+ void* offsetWrite = (void*)(VRAM + 0xE000);
+
+ DmaCopy16(3, offsetRead, offsetWrite, 0x1000);
+ gBerryBlenderData->field_1++;
+ }
+ break;
+ case 6:
+ {
+ void* offsetRead = &ewram[0x11000];
+ void* offsetWrite = (void*)(VRAM + 0xF000);
+
+ DmaCopy16(3, offsetRead, offsetWrite, 0x1000);
+ gBerryBlenderData->field_1++;
+ }
+ break;
+ case 7:
+ {
+ u16 i;
+ u16* palStore = (u16*)(&ewram[0x13000]);
+ void* offsetRead;
+ void* offsetWrite;
+
+ for (i = 0; i < 640; i++)
+ {
+ *(palStore + i) |= 0x100;
+ }
+ offsetRead = &ewram[0x13000];
+ offsetWrite = (void*)(VRAM + 0x6000);
+ DmaCopy16(3, offsetRead, offsetWrite, 0x500);
+ LoadPalette(sBlenderOuterPal, 0x80, 0x20);
+ gBerryBlenderData->field_1++;
+ }
+ break;
+ case 8:
+ LoadSpriteSheet(&gUnknown_082163DC);
+ LoadSpriteSheet(&gUnknown_082164F4);
+ LoadSpriteSheet(&gUnknown_08216454);
+ gBerryBlenderData->field_1++;
+ break;
+ case 9:
+ LoadSpriteSheet(&gUnknown_08216540);
+ LoadSpriteSheet(&gUnknown_08216574);
+ LoadSpritePalette(&gUnknown_082163EC);
+ LoadSpritePalette(&gUnknown_082163E4);
+ gBerryBlenderData->field_1 = 0;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void sub_804E4FC(void)
+{
+ REG_DISPCNT = 0x1341;
+ REG_BG2CNT = 0x4880;
+ REG_BG1CNT = 0xC0D;
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+}
+
+void sub_804E538(void)
+{
+ u8* field6F; //this temp value is needed to match
+
+ gBerryBlenderData = (struct BerryBlenderData*)(&ewram[0x18000]);
+
+ field6F = &gBerryBlenderData->field_6F;
+ gBerryBlenderData->field_0 = 0;
+ *field6F = 0;
+
+ Blender_SetPlayerNamesLocal(gSpecialVar_0x8004);
+ SetMainCallback2(sub_804E56C);
+}
+
+static void sub_804E56C(void)
+{
+ s32 i;
+ switch (gBerryBlenderData->field_0)
+ {
+ case 0:
+ REG_DISPCNT = 0;
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ SetVBlankCallback(NULL);
+ SetUpWindowConfig(&gWindowConfig_81E6F68);
+ InitMenuWindow(&gWindowConfig_81E6F68);
+ gBerryBlenderData->field_0++;
+ gBerryBlenderData->field_140 = 0;
+ gBerryBlenderData->field_13E = 0;
+ gBerryBlenderData->field_142 = 0x50;
+ gBerryBlenderData->field_144 = 0;
+ gBerryBlenderData->field_146 = 0;
+ gBerryBlenderData->field_1 = 0;
+ sub_8051474();
+ break;
+ case 1:
+ if (sub_804E2EC())
+ {
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ gBerryBlenderData->SyncArrowSpriteID[i] = CreateSprite(&sBlenderSyncArrow_SpriteTemplate, sBlenderSyncArrowsPos[i][0], sBlenderSyncArrowsPos[i][1], 1);
+ StartSpriteAnim(&gSprites[gBerryBlenderData->SyncArrowSpriteID[i]], i + 8);
+ }
+ SetVBlankCallback(VBlankCB0_BerryBlender);
+ gBerryBlenderData->field_0++;
+ }
+ break;
+ case 2:
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ sub_8051474();
+ gBerryBlenderData->field_0++;
+ break;
+ case 3:
+ sub_804E4FC();
+ if (!gPaletteFade.active)
+ {
+ gBerryBlenderData->field_0++;
+ }
+ break;
+ case 4:
+ MenuDrawTextWindow(0, 14, 29, 19);
+ MenuPrintMessage(gOtherText_BlenderChooseBerry, 1, 15);
+ gBerryBlenderData->field_0++;
+ break;
+ case 5:
+ if (MenuUpdateWindowText())
+ {
+ gBerryBlenderData->field_0++;
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ }
+ break;
+ case 6:
+ if (!gPaletteFade.active)
+ {
+ sub_80A6978();
+ gBerryBlenderData->field_0 = 0;
+ }
+ break;
+ }
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+void sub_804E738(struct Sprite* sprite)
+{
+ sprite->data1 += sprite->data6;
+ sprite->data2 -= sprite->data4;
+ sprite->data2 += sprite->data7;
+ sprite->data0 += sprite->data7;
+ sprite->data4--;
+
+ if (sprite->data0 < sprite->data2)
+ {
+ sprite->data3 = sprite->data4 = sprite->data3 - 1;
+ if (++sprite->data5 > 3)
+ DestroySprite(sprite);
+ else
+ PlaySE(SE_TB_KARA);
+ }
+ sprite->pos1.x = sprite->data1;
+ sprite->pos1.y = sprite->data2;
+}
+
+void sub_804E794(struct Sprite* sprite, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6)
+{
+ sprite->data0 = a3;
+ sprite->data1 = a2;
+ sprite->data2 = a3;
+ sprite->data3 = a4;
+ sprite->data4 = 10;
+ sprite->data5 = 0;
+ sprite->data6 = a5;
+ sprite->data7 = a6;
+ sprite->callback = sub_804E738;
+}
+
+static void sub_804E7C0(u16 a0, u8 a1)
+{
+ u8 spriteID = sub_80A7DEC(a0 + 123, 0, 80, a1 & 1);
+ sub_804E794(&gSprites[spriteID], gUnknown_08216594[a1][0], gUnknown_08216594[a1][1], gUnknown_08216594[a1][2], gUnknown_08216594[a1][3], gUnknown_08216594[a1][4]);
+}
+
+static void Blender_CopyBerryData(struct BlenderBerry* berry, u16 itemID)
+{
+ const struct Berry *berryInfo = GetBerryInfo(itemID + 124);
+ berry->itemID = itemID;
+ StringCopy(berry->name, berryInfo->name);
+ berry->flavours[FLAVOUR_SPICY] = berryInfo->spicy;
+ berry->flavours[FLAVOUR_DRY] = berryInfo->dry;
+ berry->flavours[FLAVOUR_SWEET] = berryInfo->sweet;
+ berry->flavours[FLAVOUR_BITTER] = berryInfo->bitter;
+ berry->flavours[FLAVOUR_SOUR] = berryInfo->sour;
+ berry->smoothness = berryInfo->smoothness;
+}
+
+static void Blender_SetPlayerNamesLocal(u8 NoOfOpponents)
+{
+ int i;
+ if (NoOfOpponents)
+ {
+ for (i = 0; i < 4; i++)
+ gLinkPlayers[i].language = GAME_LANGUAGE;
+ }
+ switch (NoOfOpponents)
+ {
+ case 0:
+ gInGameOpponentsNo = 0;
+ break;
+ case 1:
+ gInGameOpponentsNo = 1;
+ gBerryBlenderData->playersNo = 2;
+ StringCopy(gLinkPlayers[0].name, gSaveBlock2.playerName);
+ StringCopy(gLinkPlayers[1].name, sBlenderOpponentsNames[0]);
+ break;
+ case 2:
+ gInGameOpponentsNo = 2;
+ gBerryBlenderData->playersNo = 3;
+ StringCopy(gLinkPlayers[0].name, gSaveBlock2.playerName);
+ StringCopy(gLinkPlayers[1].name, sBlenderOpponentsNames[0]);
+ StringCopy(gLinkPlayers[2].name, sBlenderOpponentsNames[1]);
+ break;
+ case 3:
+ gInGameOpponentsNo = 3;
+ gBerryBlenderData->playersNo = 4;
+ StringCopy(gLinkPlayers[0].name, gSaveBlock2.playerName);
+ StringCopy(gLinkPlayers[1].name, sBlenderOpponentsNames[0]);
+ StringCopy(gLinkPlayers[2].name, sBlenderOpponentsNames[1]);
+ StringCopy(gLinkPlayers[3].name, sBlenderOpponentsNames[2]);
+ break;
+ }
+}
+
+void sub_804E990(void)
+{
+ s32 i;
+
+ REG_DISPCNT = 0;
+ gBerryBlenderData = (struct BerryBlenderData*)(&ewram[0x18000]);
+ gBerryBlenderData->field_0 = 0;
+ gBerryBlenderData->field_134 = 0;
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ gBerryBlenderData->chosenItemID[i] = 0;
+ }
+ Blender_SetPlayerNamesLocal(gSpecialVar_0x8004);
+ if (gSpecialVar_0x8004 == 0)
+ SetMainCallback2(sub_804E9F8);
+ else
+ SetMainCallback2(sub_804F378);
+}
+
+static void sub_804E9F8(void)
+{
+ int i, j;
+ switch (gBerryBlenderData->field_0)
+ {
+ case 0:
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetTasks();
+ SetVBlankCallback(VBlankCB0_BerryBlender);
+ SetUpWindowConfig(&gWindowConfig_81E6F68);
+ InitMenuWindow(&gWindowConfig_81E6F68);
+ gLinkType = 0x4422;
+ gBerryBlenderData->field_0++;
+ gBerryBlenderData->field_4E = 0;
+ gBerryBlenderData->field_7E = 0;
+ gBerryBlenderData->field_144 = 0;
+ gBerryBlenderData->field_146 = 0;
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ gBerryBlenderData->field_70[i] = 0;
+ for (j = 0; j < 3; j++)
+ {
+ gBerryBlenderData->scores[i][j] = 0;
+ }
+ }
+ gBerryBlenderData->field_7C = 0;
+ gBerryBlenderData->field_56 = 0;
+ gBerryBlenderData->arrowPos = 0;
+ gBerryBlenderData->max_RPM = 0;
+ gBerryBlenderData->field_1 = 0;
+ break;
+ case 1:
+ if (sub_804E2EC())
+ {
+ gBerryBlenderData->field_0++;
+ sub_8051474();
+ }
+ break;
+ case 2:
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ gBerryBlenderData->SyncArrowSprite2ID[i] = CreateSprite(&sBlenderSyncArrow_SpriteTemplate, sBlenderSyncArrowsPos[i][0], sBlenderSyncArrowsPos[i][1], 1);
+ StartSpriteAnim(&gSprites[gBerryBlenderData->SyncArrowSprite2ID[i]], i + 8);
+ }
+ gBerryBlenderData->field_0++;
+ break;
+ case 3:
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ gBerryBlenderData->field_0++;
+ break;
+ case 4:
+ sub_804E4FC();
+ if (!gPaletteFade.active)
+ {
+ gBerryBlenderData->field_0++;
+ }
+ break;
+ case 5:
+ MenuDrawTextWindow(0, 13, 29, 19);
+ MenuPrint(gOtherText_LinkStandby3, 1, 14);
+ gBerryBlenderData->field_0 = 8;
+ gBerryBlenderData->framesToWait = 0;
+ break;
+ case 8:
+ gBerryBlenderData->field_0++;
+ gBerryBlenderData->field_13C = 0;
+ Blender_CopyBerryData(&gBerryBlenderData->blendedBerries[0], gScriptItemId);
+ memcpy(gBlockSendBuffer, &gBerryBlenderData->blendedBerries[0], sizeof(struct BlenderBerry));
+ sub_80084A4();
+ gBerryBlenderData->framesToWait = 0;
+ break;
+ case 9:
+ if (sub_8007ECC())
+ {
+ ResetBlockReceivedFlags();
+ if (GetMultiplayerId() == 0)
+ sub_8007E9C(4);
+ gBerryBlenderData->field_0++;
+ }
+ break;
+ case 10:
+ if (++gBerryBlenderData->framesToWait > 20)
+ {
+ MenuZeroFillScreen();
+ if (GetBlockReceivedStatus() == sub_8008198())
+ {
+ for (i = 0; i < GetLinkPlayerCount(); i++)
+ {
+ memcpy(&gBerryBlenderData->blendedBerries[i], &gBlockRecvBuffer[i][0], sizeof(struct BlenderBerry));
+ gBerryBlenderData->chosenItemID[i] = gBerryBlenderData->blendedBerries[i].itemID;
+ }
+ ResetBlockReceivedFlags();
+ gBerryBlenderData->field_0++;
+ }
+ }
+ break;
+ case 11:
+ gBerryBlenderData->playersNo = GetLinkPlayerCount();
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ if (gBerryBlenderData->field_13C == gUnknown_082162EC[gBerryBlenderData->playersNo - 2][i])
+ {
+ sub_804E7C0(gBerryBlenderData->chosenItemID[gBerryBlenderData->field_13C], i);
+ break;
+ }
+ }
+ gBerryBlenderData->framesToWait = 0;
+ gBerryBlenderData->field_0++;
+ gBerryBlenderData->field_13C++;
+ break;
+ case 12:
+ if (++gBerryBlenderData->framesToWait > 60)
+ {
+ if (gBerryBlenderData->field_13C >= gBerryBlenderData->playersNo)
+ {
+ gBerryBlenderData->field_0++;
+ gBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[gBerryBlenderData->playersNo - 2]] - 22528;
+ }
+ else
+ gBerryBlenderData->field_0--;
+ gBerryBlenderData->framesToWait = 0;
+ }
+ break;
+ case 13:
+ if (sub_8007ECC())
+ {
+ gBerryBlenderData->field_0++;
+ sub_8051414(&gBerryBlenderData->field_168);
+ }
+ break;
+ case 14:
+ REG_DISPCNT |= 0x400;
+ gBerryBlenderData->arrowPos += 0x200;
+ gBerryBlenderData->field_142 += 4;
+ if (gBerryBlenderData->field_142 > 255)
+ {
+ gBerryBlenderData->field_0++;
+ gBerryBlenderData->field_142 = 256;
+ gBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[gBerryBlenderData->playersNo - 2]];
+ REG_BG2CNT = 0x4882;
+ gBerryBlenderData->framesToWait = 0;
+ sub_804F238();
+ sub_804F2A8();
+ }
+ sub_8051414(&gBerryBlenderData->field_168);
+ break;
+ case 15:
+ if (sub_8051B8C())
+ {
+ gBerryBlenderData->framesToWait = 0;
+ gBerryBlenderData->field_0++;
+ }
+ sub_8051414(&gBerryBlenderData->field_168);
+ break;
+ case 16:
+ CreateSprite(&sSpriteTemplate_8216548, 120, -16, 3);
+ gBerryBlenderData->field_0++;
+ break;
+ case 18:
+ gBerryBlenderData->field_0++;
+ break;
+ case 19:
+ sub_80084A4();
+ gBerryBlenderData->field_0++;
+ break;
+ case 20:
+ if (sub_8007ECC())
+ {
+ sub_8007E24();
+ gBerryBlenderData->field_0++;
+ }
+ break;
+ case 21:
+ gBerryBlenderData->field_56 = 128;
+ gBerryBlenderData->gameFrameTime = 0;
+ SetMainCallback2(sub_80501FC);
+ if (GetCurrentMapMusic() != 403)
+ {
+ gBerryBlenderData->field_178 = GetCurrentMapMusic();
+ }
+ PlayBGM(BGM_CYCLING);
+ break;
+ case 100:
+ MenuDrawTextWindow(0, 13, 29, 19);
+ MenuPrintMessage(gOtherText_LinkNotFound, 1, 15);
+ gBerryBlenderData->field_0++;
+ break;
+ case 101:
+ if (MenuUpdateWindowText())
+ gBerryBlenderData->field_0++;
+ break;
+ case 102:
+ if (!gPaletteFade.active)
+ SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ break;
+ }
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void sub_804F0F4(void)
+{
+ REG_DISPCNT = 0;
+
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetTasks();
+
+ SetVBlankCallback(VBlankCB0_BerryBlender);
+
+ SetUpWindowConfig(&gWindowConfig_81E6F68);
+ InitMenuWindow(&gWindowConfig_81E6F68);
+
+ gLinkType = 0x4422;
+
+ gBerryBlenderData->field_4E = 0;
+ gBerryBlenderData->field_56 = 0;
+ gBerryBlenderData->arrowPos = 0;
+ gBerryBlenderData->max_RPM = 0;
+ gBerryBlenderData->field_144 = 0;
+ gBerryBlenderData->field_146 = 0;
+ gBerryBlenderData->field_0++;
+}
+
+static u8 sub_804F16C(u16 arrowPos, u8 a1)
+{
+ u32 var1 = (arrowPos / 256) + 24;
+ u8 arrID = gBerryBlenderData->field_A2[a1];
+ u32 var2 = gUnknown_08216303[arrID];
+
+ if (var1 >= var2 && var1 < var2 + 48)
+ {
+ if (var1 >= var2 + 20 && var1 < var2 + 28)
+ return 2;
+ else
+ return 1;
+ }
+ else
+ return 0;
+}
+
+static void sub_804F1BC(u16 itemID, u8 a1, struct BlenderBerry* berry)
+{
+ u16 r4 = 0;
+ u16 i;
+ if (itemID == ITEM_ENIGMA_BERRY)
+ {
+ for (i = 0; i < 5; i++)
+ {
+ if (berry->flavours[r4] > berry->flavours[i])
+ r4 = i;
+ }
+ r4 += 5;
+ }
+ else
+ {
+ r4 = itemID - 133;
+ if (r4 >= 5)
+ r4 = (r4 % 5) + 5;
+ }
+ for (i = 0; i < a1 - 1; i++)
+ {
+ Blender_SetBankBerryData(i + 1, gUnknown_082165BC[r4][i] + 133);
+ }
+}
+
+static void sub_804F238(void)
+{
+ s32 i, j;
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ gBerryBlenderData->field_A2[i] = 0xFF;
+ gBerryBlenderData->field_9A[i] = gUnknown_082162EC[gBerryBlenderData->playersNo - 2][i];
+ }
+ for (j = 0; j < BLENDER_MAX_PLAYERS; j++)
+ {
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ if (gBerryBlenderData->field_9A[i] == j)
+ gBerryBlenderData->field_A2[j] = i;
+ }
+ }
+}
+
+static void sub_804F2A8(void)
+{
+ int i;
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ if (gBerryBlenderData->field_9A[i] != 0xFF)
+ {
+ u8* stringPtr = gStringVar1;
+
+ gBerryBlenderData->SyncArrowSpriteID[gBerryBlenderData->field_9A[i]] = gBerryBlenderData->SyncArrowSprite2ID[i];
+ StartSpriteAnim(&gSprites[gBerryBlenderData->SyncArrowSpriteID[gBerryBlenderData->field_9A[i]]], i);
+ if (GetMultiplayerId() == gBerryBlenderData->field_9A[i])
+ stringPtr = StringCopy(stringPtr, sRedColorString);
+ StringCopy(stringPtr, gLinkPlayers[gBerryBlenderData->field_9A[i]].name);
+ MenuPrint_PixelCoords(gStringVar1, gUnknown_082162D4[i][0] * 8 + 1, gUnknown_082162D4[i][1] * 8, 1);
+ }
+ }
+}
+
+static void sub_804F378(void)
+{
+ s32 i, j;
+ switch (gBerryBlenderData->field_0)
+ {
+ case 0:
+ sub_804F0F4();
+ Blender_SetBankBerryData(0, gScriptItemId);
+ Blender_CopyBerryData(&gBerryBlenderData->blendedBerries[0], gScriptItemId);
+ sub_804F1BC(gScriptItemId, gBerryBlenderData->playersNo, &gBerryBlenderData->blendedBerries[0]);
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ gBerryBlenderData->field_70[i] = 0;
+ for (j = 0; j < 3; j++)
+ {
+ gBerryBlenderData->scores[i][j] = 0;
+ }
+ }
+ gBerryBlenderData->field_7C = 0;
+ gBerryBlenderData->field_1 = 0;
+ break;
+ case 1:
+ if (sub_804E2EC())
+ {
+ gBerryBlenderData->field_0++;
+ sub_8051474();
+ }
+ break;
+ case 2:
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ gBerryBlenderData->SyncArrowSprite2ID[i] = CreateSprite(&sBlenderSyncArrow_SpriteTemplate, sBlenderSyncArrowsPos[i][0], sBlenderSyncArrowsPos[i][1], 1);
+ StartSpriteAnim(&gSprites[gBerryBlenderData->SyncArrowSprite2ID[i]], i + 8);
+ }
+ gBerryBlenderData->field_0++;
+ break;
+ case 3:
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ gBerryBlenderData->field_0++;
+ gBerryBlenderData->framesToWait = 0;
+ break;
+ case 4:
+ if (++gBerryBlenderData->framesToWait == 2)
+ sub_804E4FC();
+ if (!gPaletteFade.active)
+ gBerryBlenderData->field_0 = 8;
+ break;
+ case 8:
+ gBerryBlenderData->field_0 = 11;
+ gBerryBlenderData->field_13C = 0;
+ break;
+ case 11:
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ u32 var = gUnknown_082162EC[gBerryBlenderData->playersNo - 2][i];
+ if (gBerryBlenderData->field_13C == var)
+ {
+ sub_804E7C0(gBerryBlenderData->chosenItemID[gBerryBlenderData->field_13C], i);
+ break;
+ }
+ }
+ gBerryBlenderData->framesToWait = 0;
+ gBerryBlenderData->field_0++;
+ gBerryBlenderData->field_13C++;
+ break;
+ case 12:
+ if (++gBerryBlenderData->framesToWait > 60)
+ {
+ if (gBerryBlenderData->field_13C >= gBerryBlenderData->playersNo)
+ {
+ gBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[gBerryBlenderData->playersNo - 2]] - 22528;
+ gBerryBlenderData->field_0++;
+ }
+ else
+ gBerryBlenderData->field_0--;
+ gBerryBlenderData->framesToWait = 0;
+ }
+ break;
+ case 13:
+ gBerryBlenderData->field_0++;
+ sub_804F238();
+ PlaySE(SE_RU_HYUU);
+ sub_8051414(&gBerryBlenderData->field_168);
+ break;
+ case 14:
+ REG_DISPCNT |= 0x400;
+ gBerryBlenderData->arrowPos += 0x200;
+ gBerryBlenderData->field_142 += 4;
+ if (gBerryBlenderData->field_142 > 255)
+ {
+ gBerryBlenderData->field_0++;
+ gBerryBlenderData->field_142 = 256;
+ gBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[gBerryBlenderData->playersNo - 2]];
+ REG_BG2CNT = 0x4882;
+ gBerryBlenderData->framesToWait = 0;
+ PlaySE(SE_TRACK_DOOR);;
+ sub_804F2A8();
+ }
+ sub_8051414(&gBerryBlenderData->field_168);
+ break;
+ case 15:
+ if (sub_8051B8C())
+ {
+ gBerryBlenderData->field_0++;
+ }
+ sub_8051414(&gBerryBlenderData->field_168);
+ break;
+ case 16:
+ CreateSprite(&sSpriteTemplate_8216548, 120, -16, 3);
+ gBerryBlenderData->field_0++;
+ break;
+ case 18:
+ gBerryBlenderData->field_0++;
+ break;
+ case 19:
+ gBerryBlenderData->field_0++;
+ break;
+ case 20:
+ gBerryBlenderData->field_0++;
+ break;
+ case 21:
+ sub_804F81C();
+ gBerryBlenderData->field_56 = 128;
+ gBerryBlenderData->gameFrameTime = 0;
+ gBerryBlenderData->field_14B = 0;
+ gBerryBlenderData->field_7E = 0;
+ SetMainCallback2(sub_80501FC);
+
+ for (i = 0; i < gSpecialVar_0x8004; i++)
+ {
+ gBerryBlenderData->field_148[i] = CreateTask(gUnknown_08216308[i], 10 + i);
+ }
+
+ if (GetCurrentMapMusic() != 403)
+ {
+ gBerryBlenderData->field_178 = GetCurrentMapMusic();
+ }
+ PlayBGM(BGM_CYCLING);
+ PlaySE(SE_MOTER);
+ Blender_ControlHitPitch();
+ break;
+ }
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void sub_804F81C(void)
+{
+ s32 i;
+ for (i = 0; i < 4; i++)
+ {
+ gSendCmd[0] = 0;
+ gSendCmd[2] = 0;
+ gRecvCmds[0][i] = 0;
+ gRecvCmds[2][i] = 0;
+ }
+}
+
+static void sub_804F844(u8 taskID)
+{
+ if(++gTasks[taskID].data[0] > gTasks[taskID].data[1])
+ {
+ gRecvCmds[2][gTasks[taskID].data[2]] = 0x2345;
+ DestroyTask(taskID);
+ }
+}
+
+static void sub_804F890(u8 a0, u8 a1)
+{
+ u8 taskID = CreateTask(sub_804F844, 80);
+ gTasks[taskID].data[1] = a1;
+ gTasks[taskID].data[2] = a0;
+}
+
+static void sub_804F8C8(u8 taskID)
+{
+ if (sub_804F16C(gBerryBlenderData->arrowPos, 1) == 2)
+ {
+ if (gTasks[taskID].data[0] == 0)
+ {
+ if (gBerryBlenderData->field_14B == 0)
+ {
+ u8 rand = Random() / 655;
+ if (gBerryBlenderData->field_56 < 500)
+ {
+ if (rand > 75)
+ gRecvCmds[2][1] = 0x4523;
+ else
+ gRecvCmds[2][1] = 0x5432;
+ gRecvCmds[2][1] = 0x5432; // ???
+ }
+ else if (gBerryBlenderData->field_56 < 1500)
+ {
+ if (rand > 80)
+ gRecvCmds[2][1] = 0x4523;
+ else
+ {
+ u8 value = rand - 21;
+ if (value < 60)
+ gRecvCmds[2][1] = 0x5432;
+ else if (rand < 10)
+ sub_804F890(1, 5);
+ }
+ }
+ else if (rand <= 90)
+ {
+ u8 value = rand - 71;
+ if (value < 20)
+ gRecvCmds[2][1] = 0x5432;
+ else if (rand < 30)
+ sub_804F890(1, 5);
+ }
+ else
+ gRecvCmds[2][1] = 0x4523;
+ }
+ else
+ gRecvCmds[2][1] = 0x4523;
+
+ gTasks[taskID].data[0] = 1;
+ }
+ }
+ else
+ gTasks[taskID].data[0] = 0;
+}
+
+static void sub_804F9F4(u8 taskID)
+{
+ u32 var1 = (gBerryBlenderData->arrowPos + 0x1800) & 0xFFFF;
+ u32 var2 = gBerryBlenderData->field_A2[2] & 0xFF;
+ if ((var1 >> 8) > gUnknown_08216303[var2] + 20 && (var1 >> 8) < gUnknown_08216303[var2] + 40)
+ {
+ if (gTasks[taskID].data[0] == 0)
+ {
+ if (gBerryBlenderData->field_14B == 0)
+ {
+ u8 rand = Random() / 655;
+ if (gBerryBlenderData->field_56 < 500)
+ {
+ if (rand > 66)
+ gRecvCmds[2][2] = 0x4523;
+ else
+ gRecvCmds[2][2] = 0x5432;
+ }
+ else
+ {
+ u8 value;
+ if (rand > 65)
+ gRecvCmds[2][2] = 0x4523;
+ value = rand - 41;
+ if (value < 25)
+ gRecvCmds[2][2] = 0x5432;
+ if (rand < 10)
+ sub_804F890(2, 5);
+ }
+
+ gTasks[taskID].data[0] = 1;
+ }
+ else
+ {
+ gRecvCmds[2][2] = 0x4523;
+ gTasks[taskID].data[0] = 1;
+ }
+ }
+ }
+ else
+ gTasks[taskID].data[0] = 0;
+}
+
+static void sub_804FB1C(u8 taskID)
+{
+ u32 var1, var2;
+
+ var1 = (gBerryBlenderData->arrowPos + 0x1800) & 0xFFFF;
+ var2 = gBerryBlenderData->field_A2[3] & 0xFF;
+ if ((var1 >> 8) > gUnknown_08216303[var2] + 20 && (var1 >> 8) < gUnknown_08216303[var2] + 40)
+ {
+ if (gTasks[taskID].data[0] == 0)
+ {
+ if (gBerryBlenderData->field_14B == 0)
+ {
+ u8 rand = (Random() / 655);
+ if (gBerryBlenderData->field_56 < 500)
+ {
+ if (rand > 88)
+ gRecvCmds[2][3] = 0x4523;
+ else
+ gRecvCmds[2][3] = 0x5432;
+ }
+ else
+ {
+ if (rand > 60)
+ gRecvCmds[2][3] = 0x4523;
+ else
+ {
+ s8 value = rand - 56; // makes me wonder what the original code was
+ u8 value2 = value;
+ if (value2 < 5)
+ gRecvCmds[2][3] = 0x5432;
+ }
+ if (rand < 5)
+ sub_804F890(3, 5);
+ }
+ gTasks[taskID].data[0] = 1;
+ }
+ else
+ {
+ gRecvCmds[2][3] = 0x4523;
+ gTasks[taskID].data[0] = 1;
+ }
+ }
+ }
+ else
+ gTasks[taskID].data[0] = 0;
+}
+
+static void sub_804FC48(u16 a0, u8 a1)
+{
+ u8 spriteID;
+
+ spriteID = CreateSprite(&sSpriteTemplate_821645C,
+ sBlenderSyncArrowsPos[a1][0] - (10 * gUnknown_082162CC[a1][0]),
+ sBlenderSyncArrowsPos[a1][1] - (10 * gUnknown_082162CC[a1][1]),
+ 1);
+ if (a0 == 0x4523)
+ {
+ StartSpriteAnim(&gSprites[spriteID], 2);
+ gSprites[spriteID].callback = sub_8051684;
+ PlaySE(SE_RU_GASHIN);
+ }
+ else if (a0 == 0x5432)
+ {
+ StartSpriteAnim(&gSprites[spriteID], 0);
+ PlaySE(SE_SEIKAI);
+ }
+ else if (a0 == 0x2345)
+ {
+ StartSpriteAnim(&gSprites[spriteID], 1);
+ PlaySE(SE_HAZURE);
+ }
+ sub_805156C();
+}
+
+static void sub_804FD30(u16 a0)
+{
+ Blender_ControlHitPitch();
+ switch (a0)
+ {
+ case 0x4523:
+ if (gBerryBlenderData->field_56 < 1500)
+ gBerryBlenderData->field_56 += (384 / gUnknown_082165DA[gBerryBlenderData->playersNo]);
+ else
+ {
+ gBerryBlenderData->field_56 += (128 / gUnknown_082165DA[gBerryBlenderData->playersNo]);
+ sub_8051AC8(&gBerryBlenderData->field_144, (gBerryBlenderData->field_56 / 100) - 10);
+ sub_8051AC8(&gBerryBlenderData->field_146, (gBerryBlenderData->field_56 / 100) - 10);
+ }
+ break;
+ case 0x5432:
+ if (gBerryBlenderData->field_56 < 1500)
+ gBerryBlenderData->field_56 += (256 / gUnknown_082165DA[gBerryBlenderData->playersNo]);
+ break;
+ case 0x2345:
+ gBerryBlenderData->field_56 -= (256 / gUnknown_082165DA[gBerryBlenderData->playersNo]);
+ if (gBerryBlenderData->field_56 < 128)
+ gBerryBlenderData->field_56 = 128;
+ break;
+ }
+}
+
+static void sub_804FE70(void)
+{
+ s32 i;
+
+ if (gSpecialVar_0x8004 != 0)
+ {
+ if (gSendCmd[2] != 0)
+ {
+ gRecvCmds[2][0] = gSendCmd[2];
+ gRecvCmds[0][0] = 0x4444;
+ gSendCmd[2] = 0;
+ }
+ for (i = 1; i < 4; i++)
+ {
+ if (gRecvCmds[2][i] != 0)
+ gRecvCmds[0][i] = 0x4444;
+ }
+ }
+ for (i = 0; i < gBerryBlenderData->playersNo; i++)
+ {
+ if (gRecvCmds[0][i] == 0x4444)
+ {
+ u32 var = gBerryBlenderData->field_A2[i];
+ if (gRecvCmds[2][i] == 0x4523)
+ {
+ sub_804FD30(0x4523);
+ gBerryBlenderData->field_13E += (gBerryBlenderData->field_56 / 55);
+ if (gBerryBlenderData->field_13E >= 1000)
+ gBerryBlenderData->field_13E = 1000;
+ sub_804FC48(0x4523, var);
+ gBerryBlenderData->scores[i][BLENDER_SCORE_BEST]++;
+ }
+ else if (gRecvCmds[2][i] == 0x5432)
+ {
+ sub_804FD30(0x5432);
+ gBerryBlenderData->field_13E += (gBerryBlenderData->field_56 / 70);
+ sub_804FC48(0x5432, var);
+ gBerryBlenderData->scores[i][BLENDER_SCORE_GOOD]++;
+ }
+ else if (gRecvCmds[2][i] == 0x2345)
+ {
+ sub_804FC48(0x2345, var);
+ sub_804FD30(0x2345);
+ if (gBerryBlenderData->field_4.win_field_F > 1000)
+ gBerryBlenderData->field_13E = 1000;
+ if (gBerryBlenderData->scores[i][BLENDER_SCORE_MISS] < 999)
+ gBerryBlenderData->scores[i][BLENDER_SCORE_MISS]++;
+ }
+ if (gRecvCmds[2][i] == 0x2345 || gRecvCmds[2][i] == 0x4523 || gRecvCmds[2][i] == 0x5432)
+ {
+ if (gBerryBlenderData->field_56 > 1500)
+ m4aMPlayTempoControl(&gMPlay_BGM, ((gBerryBlenderData->field_56 - 750) / 20) + 256);
+ else
+ m4aMPlayTempoControl(&gMPlay_BGM, 256);
+ }
+ }
+ }
+ if (gSpecialVar_0x8004 != 0)
+ {
+ for (i = 0; i < gBerryBlenderData->playersNo; i++)
+ {
+ gRecvCmds[0][i] = 0;
+ gRecvCmds[2][i] = 0;
+ }
+ }
+}
+
+static void sub_80500A8(void)
+{
+ bool8 A_pressed = 0;
+ u8 var2 = gBerryBlenderData->field_A2[GetMultiplayerId()];
+ if (gBerryBlenderData->field_6F == 0)
+ {
+ if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_L_EQUALS_A && gMain.newKeys & A_BUTTON)
+ A_pressed = ((gMain.heldKeysRaw & (A_BUTTON | L_BUTTON)) != (A_BUTTON | L_BUTTON));
+ else if (gMain.newKeys & A_BUTTON)
+ A_pressed = 1;
+ if (A_pressed)
+ {
+ u8 var3;
+ StartSpriteAnim(&gSprites[gBerryBlenderData->SyncArrowSpriteID[gBerryBlenderData->field_9A[var2]]], var2 + 4);
+ var3 = sub_804F16C(gBerryBlenderData->arrowPos, GetMultiplayerId());
+ if (var3 == 2)
+ gSendCmd[2] = 0x4523;
+ else if (var3 == 1)
+ gSendCmd[2] = 0x5432;
+ else
+ gSendCmd[2] = 0x2345;
+ }
+ }
+ if (++gBerryBlenderData->field_7E > 5)
+ {
+ if (gBerryBlenderData->field_56 > 128)
+ gBerryBlenderData->field_56--;
+ gBerryBlenderData->field_7E = 0;
+ }
+ if (gUnknown_020297ED && gMain.newKeys & L_BUTTON)
+ gBerryBlenderData->field_14B ^= 1;
+}
+
+static void sub_80501FC(void)
+{
+ sub_8051474();
+ if (gBerryBlenderData->gameFrameTime < (99 * 60 * 60) + (59 * 60)) // game time can't be longer than 99 minutes and 59 seconds, can't print 3 digits
+ gBerryBlenderData->gameFrameTime++;
+ sub_80500A8();
+ SetLinkDebugValues((u16)(gBerryBlenderData->field_56), gBerryBlenderData->field_13E);
+ sub_804FE70();
+ sub_805194C(gBerryBlenderData->field_13E, 1000);
+ sub_8051A3C(gBerryBlenderData->field_56);
+ sub_8051B18();
+ sub_805123C();
+ if (gBerryBlenderData->field_6F == 0 && gBerryBlenderData->field_140 >= 1000)
+ {
+ gBerryBlenderData->field_13E = 1000;
+ gBerryBlenderData->field_6F = 1;
+ SetMainCallback2(sub_8050954);
+ }
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static bool8 sub_80502A4(struct BlenderBerry* berries, u8 index1, u8 index2)
+{
+ if (berries[index1].itemID != berries[index2].itemID
+ || (StringCompare(berries[index1].name, berries[index2].name) == 0
+ && (berries[index1].flavours[0] == berries[index2].flavours[0]
+ && berries[index1].flavours[1] == berries[index2].flavours[1]
+ && berries[index1].flavours[2] == berries[index2].flavours[2]
+ && berries[index1].flavours[3] == berries[index2].flavours[3]
+ && berries[index1].flavours[4] == berries[index2].flavours[4]
+ && berries[index1].smoothness == berries[index2].smoothness)))
+ return TRUE;
+ else
+ return FALSE;
+}
+
+u32 Blender_GetPokeblockColor(struct BlenderBerry* berries, s16* a1, u8 playersNo, u8 a3)
+{
+ s16 vars[5];
+ s32 i;
+ s32 r6;
+ u8 r2;
+
+ for (i = 0; i <= 5; i++) // bug, writing one index too far
+ vars[i] = a1[i];
+ r6 = 0;
+ for (i = 0; i < 5; i++)
+ {
+ if (vars[i] == 0)
+ r6++;
+ }
+ if (r6 == 5 || a3 > 3)
+ return 12;
+ for (i = 0; i < playersNo; i++)
+ {
+ for (r6 = 0; r6 < playersNo; r6++)
+ {
+ if (berries[i].itemID == berries[r6].itemID && i != r6
+ && (berries[i].itemID != ITEM_ENIGMA_BERRY || sub_80502A4(berries, i, r6)))
+ return 12;
+ }
+ }
+ r2 = 0;
+ for (r2 = 0, i = 0; i < 5; i++)
+ {
+ if (vars[i] > 0)
+ r2++;
+ }
+ if (r2 > 3)
+ return 13;
+ if (r2 == 3)
+ return 11;
+ for (i = 0; i < 5; i++)
+ {
+ if (vars[i] > 50)
+ return 14;
+ }
+ if (r2 == 1 && vars[0] > 0)
+ return 1;
+ if (r2 == 1 && vars[1] > 0)
+ return 2;
+ if (r2 == 1 && vars[2] > 0)
+ return 3;
+ if (r2 == 1 && vars[3] > 0)
+ return 4;
+ if (r2 == 1 && vars[4] > 0)
+ return 5;
+ if (r2 == 2)
+ {
+ s32 var = 0;
+ for (i = 0; i < 5; i++)
+ {
+ if (vars[i] > 0)
+ gUnknown_03000520[var++] = i;
+ }
+ if (vars[gUnknown_03000520[0]] >= vars[gUnknown_03000520[1]])
+ {
+ if (gUnknown_03000520[0] == 0)
+ return (gUnknown_03000520[1] << 16) | 6;
+ if (gUnknown_03000520[0] == 1)
+ return (gUnknown_03000520[1] << 16) | 7;
+ if (gUnknown_03000520[0] == 2)
+ return (gUnknown_03000520[1] << 16) | 8;
+ if (gUnknown_03000520[0] == 3)
+ return (gUnknown_03000520[1] << 16) | 9;
+ if (gUnknown_03000520[0] == 4)
+ return (gUnknown_03000520[1] << 16) | 10;
+ }
+ else
+ {
+ if (gUnknown_03000520[1] == 0)
+ return (gUnknown_03000520[0] << 16) | 6;
+ if (gUnknown_03000520[1] == 1)
+ return (gUnknown_03000520[0] << 16) | 7;
+ if (gUnknown_03000520[1] == 2)
+ return (gUnknown_03000520[0] << 16) | 8;
+ if (gUnknown_03000520[1] == 3)
+ return (gUnknown_03000520[0] << 16) | 9;
+ if (gUnknown_03000520[1] == 4)
+ return (gUnknown_03000520[0] << 16) | 10;
+ }
+ }
+ return 0;
+}
+
+static void sub_80504F0(s16 value)
+{
+ gUnknown_0300052C = value;
+}
+
+s16 unref_sub_80504FC(void)
+{
+ return gUnknown_0300052C;
+}
+
+static void sub_8050508(s16 value)
+{
+ gUnknown_0300052E = value;
+}
+
+s16 unref_sub_8050514(void)
+{
+ return gUnknown_0300052E;
+}
+
+#ifdef NONMATCHING
+
+static void Blender_CalculatePokeblock(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 playersNo, u8* flavours, u16 maxRPM)
+{
+ s32 i;
+ s32 j;
+ s32 savedEntry;
+ s32 var3;
+ s32 var4;
+ u32 var6;
+ s32 var11;
+ u16 rand;
+
+ for (i = 0; i < 6; i++)
+ gUnknown_03000510[i] = 0;
+ for (i = 0; i < playersNo; i++)
+ {
+ for (j = 0; j < 5; j++)
+ gUnknown_03000510[j] += berries[i].flavours[j];
+ }
+
+ savedEntry = gUnknown_03000510[0];
+ gUnknown_03000510[0] -= gUnknown_03000510[1];
+ gUnknown_03000510[1] -= gUnknown_03000510[2];
+ gUnknown_03000510[2] -= gUnknown_03000510[3];
+ gUnknown_03000510[3] -= gUnknown_03000510[4];
+ gUnknown_03000510[4] -= savedEntry;
+
+ var6 = 0;
+ for (i = 0; i < 6; i++)
+ {
+ if (gUnknown_03000510[i] < 0)
+ {
+ gUnknown_03000510[i] = 0;
+ var6++;
+ }
+ }
+ for (i = 0; i < 5; i++)
+ {
+ if (gUnknown_03000510[i] > 0)
+ {
+ if (gUnknown_03000510[i] < var6)
+ gUnknown_03000510[i] = 0;
+ else
+ gUnknown_03000510[i] -= var6;
+ }
+ }
+ for (i = 0; i < 5; i++)
+ {
+ gUnknown_03000530[i] = gUnknown_03000510[i];
+ }
+
+ var11 = maxRPM / 333 + 100;
+ gUnknown_0300055C = ((var11));
+
+ for (i = 0; i < 5; i++)
+ {
+ var3 = gUnknown_03000510[i];
+ var3 = ((var11) * var3) / 10;
+ var4 = var3 % 10;
+ var3 /= 10;
+ if (var4 > 4)
+ var3++;
+ gUnknown_03000510[i] = var3;
+ }
+ for (i = 0; i < 5; i++)
+ {
+ gUnknown_03000548[i] = gUnknown_03000510[i];
+ }
+ pokeblock->color = Blender_GetPokeblockColor(berries, &gUnknown_03000510[0], playersNo, var6);
+ gUnknown_03000510[5] = (gUnknown_03000510[5] / playersNo) - playersNo;
+ if (gUnknown_03000510[5] < 0)
+ gUnknown_03000510[5] = 0;
+ if (pokeblock->color == 12)
+ {
+ rand = Random() % 10;
+ for (i = 0; i < 6; i++)
+ {
+ if ((gUnknown_082165DF[rand] >> i) & 1)
+ gUnknown_03000510[i] = 2;
+ else
+ gUnknown_03000510[i] = 0;
+ }
+ }
+ for (i = 0; i < 6; i++)
+ {
+ if (gUnknown_03000510[i] > 255)
+ gUnknown_03000510[i] = 255;
+ }
+ pokeblock->spicy = gUnknown_03000510[0];
+ pokeblock->dry = gUnknown_03000510[1];
+ pokeblock->sweet = gUnknown_03000510[2];
+ pokeblock->bitter = gUnknown_03000510[3];
+ pokeblock->sour = gUnknown_03000510[4];
+ pokeblock->feel = gUnknown_03000510[5];
+ for (i = 0; i < 6; i++)
+ {
+ flavours[i] = gUnknown_03000510[i];
+ }
+}
+
+#else
+__attribute__((naked))
+static void Blender_CalculatePokeblock(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 a2, u8* flavours, u16 a4)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x10\n\
+ str r0, [sp]\n\
+ mov r8, r1\n\
+ str r3, [sp, 0x4]\n\
+ ldr r0, [sp, 0x30]\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ mov r9, r2\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ str r0, [sp, 0x8]\n\
+ ldr r7, _080505DC @ =gUnknown_03000510\n\
+ adds r2, r7, 0\n\
+ movs r1, 0\n\
+ adds r0, r7, 0\n\
+ adds r0, 0xA\n\
+_0805054A:\n\
+ strh r1, [r0]\n\
+ subs r0, 0x2\n\
+ cmp r0, r2\n\
+ bge _0805054A\n\
+ movs r6, 0\n\
+ cmp r6, r9\n\
+ bge _08050580\n\
+ ldr r0, _080505DC @ =gUnknown_03000510\n\
+ mov r12, r0\n\
+ ldr r5, [sp]\n\
+ adds r5, 0x9\n\
+_08050560:\n\
+ movs r3, 0\n\
+ adds r4, r5, 0\n\
+ mov r2, r12\n\
+_08050566:\n\
+ adds r1, r4, r3\n\
+ ldrh r0, [r2]\n\
+ ldrb r1, [r1]\n\
+ adds r0, r1\n\
+ strh r0, [r2]\n\
+ adds r2, 0x2\n\
+ adds r3, 0x1\n\
+ cmp r3, 0x5\n\
+ ble _08050566\n\
+ adds r5, 0x10\n\
+ adds r6, 0x1\n\
+ cmp r6, r9\n\
+ blt _08050560\n\
+_08050580:\n\
+ movs r1, 0\n\
+ ldrsh r3, [r7, r1]\n\
+ ldrh r0, [r7]\n\
+ ldrh r1, [r7, 0x2]\n\
+ subs r0, r1\n\
+ strh r0, [r7]\n\
+ ldrh r0, [r7, 0x4]\n\
+ subs r1, r0\n\
+ strh r1, [r7, 0x2]\n\
+ ldrh r1, [r7, 0x6]\n\
+ subs r0, r1\n\
+ strh r0, [r7, 0x4]\n\
+ ldrh r0, [r7, 0x8]\n\
+ subs r1, r0\n\
+ strh r1, [r7, 0x6]\n\
+ subs r0, r3\n\
+ strh r0, [r7, 0x8]\n\
+ movs r3, 0\n\
+ movs r2, 0\n\
+ adds r1, r7, 0\n\
+ movs r6, 0x4\n\
+_080505AA:\n\
+ movs r4, 0\n\
+ ldrsh r0, [r1, r4]\n\
+ cmp r0, 0\n\
+ bge _080505B6\n\
+ strh r2, [r1]\n\
+ adds r3, 0x1\n\
+_080505B6:\n\
+ adds r1, 0x2\n\
+ subs r6, 0x1\n\
+ cmp r6, 0\n\
+ bge _080505AA\n\
+ lsls r0, r3, 24\n\
+ lsrs r0, 24\n\
+ mov r10, r0\n\
+ movs r4, 0\n\
+ ldr r1, _080505DC @ =gUnknown_03000510\n\
+ movs r6, 0x4\n\
+_080505CA:\n\
+ ldrh r2, [r1]\n\
+ movs r5, 0\n\
+ ldrsh r0, [r1, r5]\n\
+ cmp r0, 0\n\
+ ble _080505E4\n\
+ cmp r0, r3\n\
+ bge _080505E0\n\
+ strh r4, [r1]\n\
+ b _080505E4\n\
+ .align 2, 0\n\
+_080505DC: .4byte gUnknown_03000510\n\
+_080505E0:\n\
+ subs r0, r2, r3\n\
+ strh r0, [r1]\n\
+_080505E4:\n\
+ adds r1, 0x2\n\
+ subs r6, 0x1\n\
+ cmp r6, 0\n\
+ bge _080505CA\n\
+ ldr r1, _080506C4 @ =gUnknown_03000510\n\
+ ldr r2, _080506C8 @ =gUnknown_03000530\n\
+ movs r6, 0x4\n\
+_080505F2:\n\
+ movs r3, 0\n\
+ ldrsh r0, [r1, r3]\n\
+ stm r2!, {r0}\n\
+ adds r1, 0x2\n\
+ subs r6, 0x1\n\
+ cmp r6, 0\n\
+ bge _080505F2\n\
+ ldr r1, _080506CC @ =0x0000014d\n\
+ ldr r0, [sp, 0x8]\n\
+ bl __udivsi3\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ adds r3, r0, 0\n\
+ adds r3, 0x64\n\
+ ldr r4, _080506D0 @ =gUnknown_0300055C\n\
+ str r3, [r4]\n\
+ movs r6, 0x4\n\
+_08050616:\n\
+ movs r0, 0\n\
+ ldrsh r5, [r7, r0]\n\
+ adds r0, r5, 0\n\
+ muls r0, r3\n\
+ movs r1, 0xA\n\
+ str r3, [sp, 0xC]\n\
+ bl __divsi3\n\
+ adds r5, r0, 0\n\
+ movs r1, 0xA\n\
+ bl __modsi3\n\
+ adds r4, r0, 0\n\
+ adds r0, r5, 0\n\
+ movs r1, 0xA\n\
+ bl __divsi3\n\
+ adds r5, r0, 0\n\
+ ldr r3, [sp, 0xC]\n\
+ cmp r4, 0x4\n\
+ ble _08050642\n\
+ adds r5, 0x1\n\
+_08050642:\n\
+ strh r5, [r7]\n\
+ adds r7, 0x2\n\
+ subs r6, 0x1\n\
+ cmp r6, 0\n\
+ bge _08050616\n\
+ ldr r1, _080506C4 @ =gUnknown_03000510\n\
+ ldr r2, _080506D4 @ =gUnknown_03000548\n\
+ movs r6, 0x4\n\
+_08050652:\n\
+ movs r3, 0\n\
+ ldrsh r0, [r1, r3]\n\
+ stm r2!, {r0}\n\
+ adds r1, 0x2\n\
+ subs r6, 0x1\n\
+ cmp r6, 0\n\
+ bge _08050652\n\
+ ldr r4, _080506C4 @ =gUnknown_03000510\n\
+ ldr r0, [sp]\n\
+ adds r1, r4, 0\n\
+ mov r2, r9\n\
+ mov r3, r10\n\
+ bl Blender_GetPokeblockColor\n\
+ mov r5, r8\n\
+ strb r0, [r5]\n\
+ movs r1, 0xA\n\
+ ldrsh r0, [r4, r1]\n\
+ mov r1, r9\n\
+ bl __divsi3\n\
+ mov r3, r9\n\
+ subs r0, r3\n\
+ strh r0, [r4, 0xA]\n\
+ lsls r0, 16\n\
+ cmp r0, 0\n\
+ bge _0805068C\n\
+ movs r0, 0\n\
+ strh r0, [r4, 0xA]\n\
+_0805068C:\n\
+ mov r5, r8\n\
+ ldrb r0, [r5]\n\
+ cmp r0, 0xC\n\
+ bne _080506E6\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0xA\n\
+ bl __umodsi3\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ movs r6, 0\n\
+ ldr r0, _080506D8 @ =gUnknown_082165DF\n\
+ adds r0, r3, r0\n\
+ ldrb r0, [r0]\n\
+ adds r1, r4, 0\n\
+ movs r4, 0x1\n\
+ movs r3, 0x2\n\
+_080506B4:\n\
+ adds r2, r0, 0\n\
+ asrs r2, r6\n\
+ ands r2, r4\n\
+ cmp r2, 0\n\
+ beq _080506DC\n\
+ strh r3, [r1]\n\
+ b _080506DE\n\
+ .align 2, 0\n\
+_080506C4: .4byte gUnknown_03000510\n\
+_080506C8: .4byte gUnknown_03000530\n\
+_080506CC: .4byte 0x0000014d\n\
+_080506D0: .4byte gUnknown_0300055C\n\
+_080506D4: .4byte gUnknown_03000548\n\
+_080506D8: .4byte gUnknown_082165DF\n\
+_080506DC:\n\
+ strh r2, [r1]\n\
+_080506DE:\n\
+ adds r1, 0x2\n\
+ adds r6, 0x1\n\
+ cmp r6, 0x4\n\
+ ble _080506B4\n\
+_080506E6:\n\
+ ldr r7, _08050740 @ =gUnknown_03000510\n\
+ movs r2, 0xFF\n\
+ adds r1, r7, 0\n\
+ movs r6, 0x5\n\
+_080506EE:\n\
+ movs r3, 0\n\
+ ldrsh r0, [r1, r3]\n\
+ cmp r0, 0xFF\n\
+ ble _080506F8\n\
+ strh r2, [r1]\n\
+_080506F8:\n\
+ adds r1, 0x2\n\
+ subs r6, 0x1\n\
+ cmp r6, 0\n\
+ bge _080506EE\n\
+ ldrh r0, [r7]\n\
+ mov r4, r8\n\
+ strb r0, [r4, 0x1]\n\
+ ldrh r0, [r7, 0x2]\n\
+ strb r0, [r4, 0x2]\n\
+ ldrh r0, [r7, 0x4]\n\
+ strb r0, [r4, 0x3]\n\
+ ldrh r0, [r7, 0x6]\n\
+ strb r0, [r4, 0x4]\n\
+ ldrh r0, [r7, 0x8]\n\
+ strb r0, [r4, 0x5]\n\
+ ldrh r0, [r7, 0xA]\n\
+ strb r0, [r4, 0x6]\n\
+ movs r6, 0\n\
+ adds r2, r7, 0\n\
+_0805071E:\n\
+ ldr r5, [sp, 0x4]\n\
+ adds r1, r5, r6\n\
+ ldrh r0, [r2]\n\
+ strb r0, [r1]\n\
+ adds r2, 0x2\n\
+ adds r6, 0x1\n\
+ cmp r6, 0x5\n\
+ ble _0805071E\n\
+ add sp, 0x10\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_08050740: .4byte gUnknown_03000510\n\
+ .syntax divided");
+}
+
+#endif // NONMATCHING
+
+static void BlenderDebug_CalculatePokeblock(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 playersNo, u8* flavours, u16 a4)
+{
+ Blender_CalculatePokeblock(berries, pokeblock, playersNo, flavours, a4);
+}
+
+static void sub_8050760(void)
+{
+ u32 frames = (u16)(gBerryBlenderData->gameFrameTime);
+ u16 max_RPM = gBerryBlenderData->max_RPM;
+ s16 var = 0;
+
+ if (frames < 900)
+ var = 5;
+ else if ((u16)(frames - 900) < 600)
+ var = 4;
+ else if ((u16)(frames - 1500) < 600)
+ var = 3;
+ else if ((u16)(frames - 2100) < 900)
+ var = 2;
+ else if ((u16)(frames - 3300) < 300)
+ var = 1;
+ sub_8050508(var);
+
+ var = 0;
+ if (max_RPM <= 64)
+ {
+ if (max_RPM >= 50 && max_RPM < 100)
+ var = -1;
+ else if (max_RPM >= 100 && max_RPM < 150)
+ var = -2;
+ else if (max_RPM >= 150 && max_RPM < 200)
+ var = -3;
+ else if (max_RPM >= 200 && max_RPM < 250)
+ var = -4;
+ else if (max_RPM >= 250 && max_RPM < 300)
+ var = -5;
+ else if (max_RPM >= 350 && max_RPM < 400)
+ var = -6;
+ else if (max_RPM >= 400 && max_RPM < 450)
+ var = -7;
+ else if (max_RPM >= 500 && max_RPM < 550)
+ var = -8;
+ else if (max_RPM >= 550 && max_RPM < 600)
+ var = -9;
+ else if (max_RPM >= 600)
+ var = -10;
+ }
+ sub_80504F0(var);
+}
+
+static void sub_80508D4(u8 value)
+{
+ gBerryBlenderData->field_AA = value;
+ sub_814A880(192, (gBerryBlenderData->field_AA * 16) + 72);
+}
+
+static void sub_80508FC(void)
+{
+ gBerryBlenderData->field_AA = 0;
+ MenuDrawTextWindow(23, 8, 28, 13);
+ sub_814A5C0(0, -1, 12, 0x2D9F, 32);
+ MenuPrint(gOtherText_YesNoTerminating, 24, 9);
+ sub_80508D4(gBerryBlenderData->field_AA);
+}
+
+static void sub_8050954(void)
+{
+ u8 i;
+ u8 multiplayerID; // unused
+
+ sub_8051474();
+ multiplayerID = GetMultiplayerId();
+ switch (gBerryBlenderData->field_6F)
+ {
+ case 1:
+ ClearLinkCallback();
+ m4aMPlayTempoControl(&gMPlay_BGM, 256);
+ for (i = 0; i < gSpecialVar_0x8004; i++)
+ {
+ DestroyTask(gBerryBlenderData->field_148[i]);
+ }
+ gBerryBlenderData->field_6F++;
+ break;
+ case 2:
+ gBerryBlenderData->field_56 -= 32;
+ if (gBerryBlenderData->field_56 <= 0)
+ {
+ gBerryBlenderData->field_56 = 0;
+ if (gReceivedRemoteLinkPlayers != 0)
+ gBerryBlenderData->field_6F++;
+ else
+ gBerryBlenderData->field_6F = 5;
+ gBerryBlenderData->field_0 = 0;
+ m4aMPlayStop(&gMPlay_SE2);
+ }
+ Blender_ControlHitPitch();
+ break;
+ case 3:
+ if (/*multiplayerID != 0*/ GetMultiplayerId() != 0)
+ gBerryBlenderData->field_6F++;
+ else if (sub_8007ECC())
+ {
+ gBerryBlenderData->field_1BC = gBerryBlenderData->gameFrameTime;
+ gBerryBlenderData->field_1C0 = gBerryBlenderData->max_RPM;
+ SendBlock(0, &gBerryBlenderData->field_1BC, 40);
+ gBerryBlenderData->field_6F++;
+ }
+ break;
+ case 4:
+ if (GetBlockReceivedStatus())
+ {
+ u32* ptr = ((u32*)(&gBlockRecvBuffer[0][0]));
+ gBerryBlenderData->max_RPM = gBlockRecvBuffer[0][2];
+ gBerryBlenderData->gameFrameTime = *ptr;
+ gBerryBlenderData->field_6F++;
+ ResetBlockReceivedFlags();
+ }
+ break;
+ case 5:
+ if (Blender_PrintBlendingRanking())
+ gBerryBlenderData->field_6F++;
+ break;
+ case 6:
+ if (Blender_PrintBlendingResults())
+ {
+ if (gInGameOpponentsNo == 0)
+ IncrementGameStat(34);
+ else
+ IncrementGameStat(33);
+ gBerryBlenderData->field_6F++;
+ }
+ break;
+ case 7:
+ gBerryBlenderData->field_6F++;
+ MenuDrawTextWindow(0, 14, 29, 19);
+ MenuPrintMessage(gOtherText_BlendAnotherBerryPrompt, 1, 15);
+ break;
+ case 8:
+ if (MenuUpdateWindowText())
+ gBerryBlenderData->field_6F++;
+ break;
+ case 9:
+ gBerryBlenderData->field_AA = 0;
+ sub_80508FC();
+ gBerryBlenderData->field_6F++;
+ break;
+ case 10:
+ if (gMain.newKeys & DPAD_UP)
+ {
+ if (gBerryBlenderData->field_AA != 0)
+ PlaySE(SE_SELECT);
+ sub_80508D4(0);
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ if (gBerryBlenderData->field_AA != 1)
+ PlaySE(SE_SELECT);
+ sub_80508D4(1);
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ gBerryBlenderData->field_6F++;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ gBerryBlenderData->field_6F++;
+ sub_80508D4(1);
+ }
+ break;
+ case 11:
+ gSendCmd[0] = 0x2FFF;
+ if (gBerryBlenderData->field_AA == 0)
+ {
+ if (IsBagPocketNonEmpty(BAG_BERRIES) == FALSE) // is empty
+ {
+ gBerryBlenderData->field_7C = 2;
+ gSendCmd[1] = 0x9999;
+ }
+ else if (sub_810CA00() == -1)
+ {
+ gBerryBlenderData->field_7C = 3;
+ gSendCmd[1] = 0xAAAA;
+ }
+ else
+ {
+ gBerryBlenderData->field_7C = 0;
+ gSendCmd[1] = 0x7779;
+ }
+ gBerryBlenderData->field_6F++;
+ }
+ else
+ {
+ gBerryBlenderData->field_7C = 1;
+ gSendCmd[1] = 0x8888;
+ gBerryBlenderData->field_6F++;
+ }
+ break;
+ case 12:
+ if (gInGameOpponentsNo)
+ {
+ SetMainCallback2(sub_80510E8);
+ gBerryBlenderData->field_6F = 0;
+ gBerryBlenderData->field_0 = 0;
+ }
+ else
+ {
+ MenuPrintMessage(gOtherText_LinkStandby3, 1, 15);
+ gBerryBlenderData->field_6F++;
+ }
+ break;
+ case 13:
+ if (MenuUpdateWindowText())
+ {
+ SetMainCallback2(sub_8050E30);
+ gBerryBlenderData->field_6F = 0;
+ gBerryBlenderData->field_0 = 0;
+ }
+ break;
+ }
+ sub_8051B18();
+ sub_8051A3C(gBerryBlenderData->field_56);
+ sub_805123C();
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+bool8 sub_8050CE8(void)
+{
+ switch (gBerryBlenderData->field_1C4)
+ {
+ case 0:
+ sub_80084A4();
+ gBerryBlenderData->field_1C4 = 1;
+ gBerryBlenderData->framesToWait = 0;
+ break;
+ case 1:
+ if (sub_8007ECC())
+ {
+ gBerryBlenderData->field_1C4++;
+ gSoftResetDisabled = TRUE;
+ }
+ break;
+ case 2:
+ sub_8125E2C();
+ gBerryBlenderData->field_1C4++;
+ gBerryBlenderData->framesToWait = 0;
+ break;
+ case 3:
+ if (++gBerryBlenderData->framesToWait == 10)
+ {
+ sub_80084A4();
+ gBerryBlenderData->field_1C4++;
+ }
+ break;
+ case 4:
+ if (sub_8007ECC())
+ {
+ if (sub_8125E6C())
+ gBerryBlenderData->field_1C4 = 5;
+ else
+ {
+ gBerryBlenderData->framesToWait = 0;
+ gBerryBlenderData->field_1C4 = 3;
+ }
+ }
+ break;
+ case 5:
+ gBerryBlenderData->field_1C4++;
+ gBerryBlenderData->framesToWait = 0;
+ break;
+ case 6:
+ if (++gBerryBlenderData->framesToWait > 5)
+ {
+ gSoftResetDisabled = FALSE;
+ return TRUE;
+ }
+ break;
+ }
+ return FALSE;
+}
+
+static void sub_8050E30(void)
+{
+ switch (gBerryBlenderData->field_6F)
+ {
+ case 0:
+ if (gBerryBlenderData->field_70[0] == 0x2222)
+ gBerryBlenderData->field_6F = 5;
+ else if (gBerryBlenderData->field_70[0] == 0x1111)
+ {
+ if (gBerryBlenderData->field_78 == 0x9999)
+ gBerryBlenderData->field_6F = 2;
+ else if (gBerryBlenderData->field_78 == 0xAAAA)
+ gBerryBlenderData->field_6F = 1;
+ else
+ gBerryBlenderData->field_6F = 5;
+ }
+ break;
+ case 1:
+ gBerryBlenderData->field_6F = 3;
+ DestroyMenuCursor();
+ MenuZeroFillWindowRect(23, 8, 28, 13);
+#ifdef ENGLISH
+ StringCopy(gStringVar4, gLinkPlayers[gBerryBlenderData->field_7A].name);
+ StringAppend(gStringVar4, gOtherText_OtherCaseIsFull);
+#else
+ StringCopy(gStringVar4, gOtherText_OtherCaseIsFull);
+ de_sub_8073110(gStringVar4, gLinkPlayers[gBerryBlenderData->field_7A].name);
+#endif
+ MenuPrintMessage(gStringVar4, 1, 15);
+ break;
+ case 2:
+ gBerryBlenderData->field_6F++;
+ DestroyMenuCursor();
+ MenuZeroFillWindowRect(23, 8, 28, 13);
+#ifdef ENGLISH
+ StringCopy(gStringVar4, gLinkPlayers[gBerryBlenderData->field_7A].name);
+ StringAppend(gStringVar4, gOtherText_NoBerriesForBlend);
+#else
+ StringCopy(gStringVar4, gOtherText_NoBerriesForBlend);
+ de_sub_8073110(gStringVar4, gLinkPlayers[gBerryBlenderData->field_7A].name);
+#endif
+ MenuPrintMessage(gStringVar4, 1, 15);
+ break;
+ case 3:
+ if (MenuUpdateWindowText())
+ {
+ gBerryBlenderData->framesToWait = 0;
+ gBerryBlenderData->field_6F++;
+ }
+ break;
+ case 4:
+ if (++gBerryBlenderData->framesToWait > 60)
+ gBerryBlenderData->field_6F = 5;
+ break;
+ case 5:
+ MenuDrawTextWindow(0, 14, 29, 19);
+ MenuPrint(gMultiText_Saving, 2, 15);
+ sub_80084A4();
+ gBerryBlenderData->field_6F++;
+ break;
+ case 6:
+ if (sub_8007ECC())
+ {
+ gBerryBlenderData->framesToWait = 0;
+ gBerryBlenderData->field_6F++;
+ gBerryBlenderData->field_1C4 = 0;
+ }
+ break;
+ case 7:
+ if (sub_8050CE8())
+ {
+ PlaySE(SE_SAVE);
+ gBerryBlenderData->field_6F++;
+ }
+ break;
+ case 8:
+ gBerryBlenderData->field_6F++;
+ sub_80084A4();
+ break;
+ case 9:
+ if (sub_8007ECC())
+ {
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gBerryBlenderData->field_6F++;
+ }
+ break;
+ case 10:
+ if (!gPaletteFade.active)
+ {
+ if (gBerryBlenderData->field_70[0] == 0x2222)
+ SetMainCallback2(sub_804E538);
+ else
+ {
+ gBerryBlenderData->framesToWait = 0;
+ gBerryBlenderData->field_6F++;
+ }
+ }
+ break;
+ case 11:
+ if (++gBerryBlenderData->framesToWait > 30)
+ {
+ sub_800832C();
+ gBerryBlenderData->field_6F++;
+ }
+ break;
+ case 12:
+ if (gReceivedRemoteLinkPlayers == 0)
+ SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ break;
+ }
+
+ sub_805123C();
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void sub_80510E8(void)
+{
+ switch (gBerryBlenderData->field_6F)
+ {
+ case 0:
+ if (gBerryBlenderData->field_7C < 2)
+ gBerryBlenderData->field_6F = 9;
+ if (gBerryBlenderData->field_7C == 2)
+ gBerryBlenderData->field_6F = 2;
+ if (gBerryBlenderData->field_7C == 3)
+ gBerryBlenderData->field_6F =1;
+ break;
+ case 1:
+ gBerryBlenderData->field_6F = 3;
+ DestroyMenuCursor();
+ MenuZeroFillWindowRect(23, 8, 28, 13);
+ MenuPrintMessage(gOtherText_CaseIsFull, 1, 15);
+ break;
+ case 2:
+ gBerryBlenderData->field_6F++;
+ DestroyMenuCursor();
+ MenuZeroFillWindowRect(23, 8, 28, 13);
+ MenuPrintMessage(gOtherText_OutOfBerries, 1, 15);
+ break;
+ case 3:
+ if (MenuUpdateWindowText())
+ gBerryBlenderData->field_6F = 9;
+ break;
+ case 9:
+ BeginFastPaletteFade(3);
+ gBerryBlenderData->field_6F++;
+ break;
+ case 10:
+ if (!gPaletteFade.active)
+ {
+ if (gBerryBlenderData->field_7C == 0)
+ SetMainCallback2(sub_804E538);
+ else
+ SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ }
+ break;
+ }
+
+ sub_805123C();
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void sub_805123C(void)
+{
+ if (gReceivedRemoteLinkPlayers)
+ {
+ if (gRecvCmds[0][0] == 0x2FFF)
+ {
+ if (gRecvCmds[1][0] == 0x1111)
+ {
+ switch (gRecvCmds[2][0])
+ {
+ case 0x8888:
+ gBerryBlenderData->field_78 = 0x8888;
+ gBerryBlenderData->field_7A = gRecvCmds[3][0];
+ break;
+ case 0x9999:
+ gBerryBlenderData->field_78 = 0x9999;
+ gBerryBlenderData->field_7A = gRecvCmds[3][0];
+ break;
+ case 0xAAAA:
+ gBerryBlenderData->field_78 = 0xAAAA;
+ gBerryBlenderData->field_7A = gRecvCmds[3][0];
+ break;
+ }
+ gBerryBlenderData->field_70[0] = 0x1111;
+ }
+ else if (gRecvCmds[1][0] == 0x2222)
+ gBerryBlenderData->field_70[0] = 0x2222;
+ }
+ if (GetMultiplayerId() == 0 && gBerryBlenderData->field_70[0] != 0x1111 && gBerryBlenderData->field_70[0] != 0x2222)
+ {
+ u8 i;
+ for (i = 0; i < GetLinkPlayerCount(); i++)
+ {
+ if (gRecvCmds[0][i] == 0x2FFF)
+ {
+ switch (gRecvCmds[1][i])
+ {
+ case 0x8888:
+ gBerryBlenderData->field_70[i] = 0x8888;
+ break;
+ case 0x7779:
+ gBerryBlenderData->field_70[i] = 0x7779;
+ break;
+ case 0x9999:
+ gBerryBlenderData->field_70[i] = 0x9999;
+ break;
+ case 0xAAAA:
+ gBerryBlenderData->field_70[i] = 0xAAAA;
+ break;
+ }
+ }
+ }
+ for (i = 0; i < GetLinkPlayerCount(); i++)
+ {
+ if (gBerryBlenderData->field_70[i] == 0)
+ break;
+ }
+ if (i == GetLinkPlayerCount())
+ {
+ for (i = 0; i < GetLinkPlayerCount(); i++)
+ {
+ if (gBerryBlenderData->field_70[i] != 0x7779)
+ break;
+ }
+ gSendCmd[0] = 0x2FFF;
+ if (i == GetLinkPlayerCount())
+ gSendCmd[1] = 0x2222;
+ else
+ {
+ gSendCmd[1] = 0x1111;
+ gSendCmd[2] = gBerryBlenderData->field_70[i];
+ gSendCmd[3] = i;
+ }
+ }
+ }
+ }
+}
+
+static void sub_8051414(struct BgAffineDstData *dest)
+{
+ struct BgAffineSrcData affineSrc;
+ affineSrc.texX = 30720;
+ affineSrc.texY = 20480;
+ affineSrc.scrX = 120 - gBerryBlenderData->field_144;
+ affineSrc.scrY = 80 - gBerryBlenderData->field_146;
+ affineSrc.sx = gBerryBlenderData->field_142;
+ affineSrc.sy = gBerryBlenderData->field_142;
+ affineSrc.alpha = gBerryBlenderData->arrowPos;
+ BgAffineSet(&affineSrc, dest, 1);
+}
+
+static void sub_8051474(void)
+{
+ gBerryBlenderData->field_58 = gBerryBlenderData->arrowPos;
+ gBerryBlenderData->arrowPos += gBerryBlenderData->field_56;
+ sub_8051414(&gBerryBlenderData->field_168);
+}
+
+static void sub_80514A4(void)
+{
+ REG_BG2PA = gBerryBlenderData->field_168.pa;
+ REG_BG2PB = gBerryBlenderData->field_168.pb;
+ REG_BG2PC = gBerryBlenderData->field_168.pc;
+ REG_BG2PD = gBerryBlenderData->field_168.pd;
+ REG_BG2X = gBerryBlenderData->field_168.dx;
+ REG_BG2Y = gBerryBlenderData->field_168.dy;
+}
+
+static void sub_80514F0(void)
+{
+ REG_BG1HOFS = gBerryBlenderData->field_144;
+ REG_BG1VOFS = gBerryBlenderData->field_146;
+ REG_BG0HOFS = gBerryBlenderData->field_144;
+ REG_BG0VOFS = gBerryBlenderData->field_146;
+}
+
+void sub_8051524(struct Sprite* sprite)
+{
+ sprite->data2 += sprite->data0;
+ sprite->data3 += sprite->data1;
+ sprite->pos2.x = sprite->data2 / 8;
+ sprite->pos2.y = sprite->data3 / 8;
+ if (sprite->animEnded)
+ DestroySprite(sprite);
+}
+
+static void sub_805156C(void)
+{
+ s32 limit = (Random() % 2) + 1;
+ s32 i;
+
+ for (i = 0; i < limit; i++)
+ {
+ u16 rand;
+ s32 x, y;
+ u8 spriteID;
+
+ rand = gBerryBlenderData->arrowPos + (Random() % 20);
+
+ x = gSineTable[(rand & 0xFF) + 64] / 4;
+ y = gSineTable[(rand & 0xFF)] / 4;
+
+ spriteID = CreateSprite(&sSpriteTemplate_82164FC, x + 120, y + 80, 1);
+ gSprites[spriteID].data0 = 16 - (Random() % 32);
+ gSprites[spriteID].data1 = 16 - (Random() % 32);
+
+ gSprites[spriteID].callback = sub_8051524;
+ }
+}
+
+static void sub_8051650(struct Sprite* sprite)
+{
+ sprite->data0++;
+ sprite->pos2.y = -(sprite->data0 / 3);
+ if (sprite->animEnded)
+ DestroySprite(sprite);
+}
+
+void sub_8051684(struct Sprite* sprite)
+{
+ sprite->data0++;
+ sprite->pos2.y = -(sprite->data0 * 2);
+ if (sprite->pos2.y < -12)
+ sprite->pos2.y = -12;
+ if (sprite->animEnded)
+ DestroySprite(sprite);
+}
+
+void Blender_SetBankBerryData(u8 bank, u16 itemID)
+{
+ gBerryBlenderData->chosenItemID[bank] = itemID;
+ Blender_CopyBerryData(&gBerryBlenderData->blendedBerries[bank], itemID);
+}
+
+void unref_sub_80516F8(u8 taskID)
+{
+ struct Task* task = &gTasks[taskID];
+ if (gReceivedRemoteLinkPlayers)
+ {
+ s32 i;
+ if (GetMultiplayerId() == 0)
+ {
+ if (++task->data[0] > 120)
+ task->data[0] = 0;
+ if (task->data[0] == 100)
+ {
+ ZeroFillWindowRect(&gBerryBlenderData->field_4, 0, 0, 16, 20);
+ MenuDrawTextWindow(4, 4, 10, 12);
+ for (i = 0; i < 3; i++)
+ {
+ if (gLinkPlayers[i + 1].trainerId != 0)
+ MenuPrint(gUnknown_08216284[i], 5, (2 * i) + 5);
+ MenuDrawTextWindow(0, 13, 29, 19);
+ MenuPrint(gOtherText_PressAToStart, 1, 15);
+ }
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ sub_8007E4C();
+ DestroyTask(taskID);
+ }
+ }
+ else
+ {
+ if (task->data[0] == 10)
+ MenuPrint(gOtherText_PleaseWait, 3, 10);
+ if (++task->data[0] > 120)
+ task->data[0] = 0;
+ if (byte_3002A68 > 4 && gReceivedRemoteLinkPlayers == 1)
+ DestroyTask(taskID);
+ }
+ }
+}
+
+static void sub_805181C(struct Sprite* sprite)
+{
+ switch (sprite->data0)
+ {
+ case 0:
+ sprite->data1 += 8;
+ if (sprite->data1 > 88)
+ {
+ sprite->data1 = 88;
+ sprite->data0++;
+ PlaySE(SE_KON);
+ }
+ break;
+ case 1:
+ sprite->data2 += 1;
+ if (sprite->data2 > 20)
+ {
+ sprite->data0++;
+ sprite->data2 = 0;
+ }
+ break;
+ case 2:
+ sprite->data1 += 4;
+ if (sprite->data1 > 176)
+ {
+ if (++sprite->data3 == 3)
+ {
+ DestroySprite(sprite);
+ CreateSprite(&sSpriteTemplate_821657C, 120, -20, 2);
+ }
+ else
+ {
+ sprite->data0 = 0;
+ sprite->data1 = -16;
+ StartSpriteAnim(sprite, sprite->data3);
+ }
+ }
+ break;
+ }
+ sprite->pos2.y = sprite->data1;
+}
+
+static void sub_80518CC(struct Sprite* sprite)
+{
+ switch (sprite->data0)
+ {
+ case 0:
+ sprite->data1 += 8;
+ if (sprite->data1 > 92)
+ {
+ sprite->data1 = 92;
+ sprite->data0++;
+ PlaySE(SE_PIN);
+ }
+ break;
+ case 1:
+ sprite->data2 += 1;
+ if (sprite->data2 > 20)
+ sprite->data0++;
+ break;
+ case 2:
+ sprite->data1 += 4;
+ if (sprite->data1 > 176)
+ {
+ gBerryBlenderData->field_0++;
+ DestroySprite(sprite);
+ }
+ break;
+ }
+ sprite->pos2.y = sprite->data1;
+}
+
+static void sub_805194C(u16 a0, u16 a1)
+{
+ if (gBerryBlenderData->field_140 < a0)
+ {
+ gBerryBlenderData->field_140 += 2;
+ sub_805197C(gBerryBlenderData->field_140, a1);
+ }
+}
+
+static void sub_805197C(u16 a0, u16 a1)
+{
+ s32 var1, var2, var3, var4;
+ u16* vram;
+
+ vram = (u16*)(VRAM + 0x6000);
+ var1 = (a0 * 64) / a1;
+ var2 = var1 / 8;
+ for (var4 = 0; var4 < var2; var4++)
+ {
+ vram[11 + var4] = 0x81E9;
+ vram[43 + var4] = 0x81F9;
+ }
+ var3 = var1 % 8;
+ if (var3 != 0)
+ {
+ vram[11 + var4] = var3 - 32287;
+ vram[43 + var4] = var3 - 32271;
+ var4++;
+ }
+ for (; var4 < 8; var4++)
+ {
+ vram[11 + var4] = 33249;
+ vram[43 + var4] = 33249 + 16;
+ }
+}
+
+static u32 sub_8051A1C(u16 a0)
+{
+ return 360000 * a0 / 0x10000;
+}
+
+static void sub_8051A3C(u16 a0)
+{
+ u8 i;
+ u8 palAdders[5];
+
+ u32 var = sub_8051A1C(a0);
+ if (gBerryBlenderData->max_RPM < var)
+ gBerryBlenderData->max_RPM = var;
+ for (i = 0; i < 5; i++)
+ {
+ palAdders[i] = var % 10;
+ var /= 10;
+ }
+ *((u16*)(VRAM + 0x6458)) = palAdders[4] + 0x8172;
+ *((u16*)(VRAM + 0x645A)) = palAdders[3] + 0x8172;
+ *((u16*)(VRAM + 0x645C)) = palAdders[2] + 0x8172;
+ *((u16*)(VRAM + 0x6460)) = palAdders[1] + 0x8172;
+ *((u16*)(VRAM + 0x6462)) = palAdders[0] + 0x8172;
+}
+
+static void sub_8051AC8(s16* a0, u16 a1)
+{
+ if (*a0 == 0)
+ *a0 = (Random() % a1) - (a1 / 2);
+}
+
+static void sub_8051AF4(s16* a0)
+{
+ if (*a0 < 0 )
+ (*a0)++;
+ if (*a0 > 0 )
+ (*a0)--;
+}
+
+static void sub_8051B18(void)
+{
+ sub_8051AF4(&gBerryBlenderData->field_144);
+ sub_8051AF4(&gBerryBlenderData->field_146);
+}
+
+static void sub_8051B40(s16* a0, u16 a1)
+{
+ s32 var;
+ if (a1 < 10)
+ var = 16;
+ else
+ var = 8;
+ if (*a0 == 0)
+ *a0 = (Random() % var) - (var / 2);
+ else
+ {
+ if (*a0 < 0)
+ (*a0)++;
+ if (*a0 > 0)
+ (*a0)--;
+ }
+}
+
+static bool8 sub_8051B8C(void)
+{
+ if (gBerryBlenderData->framesToWait == 0)
+ {
+ gBerryBlenderData->field_144 = 0;
+ gBerryBlenderData->field_146 = 0;
+ }
+ gBerryBlenderData->framesToWait++;
+ sub_8051B40(&gBerryBlenderData->field_144, gBerryBlenderData->framesToWait);
+ sub_8051B40(&gBerryBlenderData->field_146, gBerryBlenderData->framesToWait);
+ if (gBerryBlenderData->framesToWait == 20)
+ {
+ gBerryBlenderData->field_144 = 0;
+ gBerryBlenderData->field_146 = 0;
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+static void sub_8051C04(struct Sprite* sprite)
+{
+ sprite->pos2.x = -(gBerryBlenderData->field_144);
+ sprite->pos2.y = -(gBerryBlenderData->field_146);
+}
+
+static void Blender_TrySettingRecord(void)
+{
+ if (gSaveBlock1.berryBlenderRecords[gBerryBlenderData->playersNo - 2] < gBerryBlenderData->max_RPM)
+ gSaveBlock1.berryBlenderRecords[gBerryBlenderData->playersNo - 2] = gBerryBlenderData->max_RPM;
+}
+
+static bool8 Blender_PrintBlendingResults(void)
+{
+ u16 i;
+
+ struct Pokeblock pokeblock;
+ u8 flavours[6];
+ u8 text[2][10];
+ u16 berryIDs[4]; // unused
+
+ switch (gBerryBlenderData->field_0)
+ {
+ case 0:
+ gBerryBlenderData->field_0++;
+ gBerryBlenderData->framesToWait = 17;
+ break;
+ case 1:
+ gBerryBlenderData->framesToWait -= 10;
+ if (gBerryBlenderData->framesToWait < 0)
+ {
+ gBerryBlenderData->framesToWait = 0;
+ gBerryBlenderData->field_0++;
+ }
+ break;
+ case 2:
+ if (++gBerryBlenderData->framesToWait > 20)
+ {
+ for (i = 0; i < 3; i++)
+ DestroySprite(&gSprites[gBerryBlenderData->scoreIconIDs[i]]);
+ gBerryBlenderData->framesToWait = 0;
+ gBerryBlenderData->field_0++;
+ }
+ break;
+ case 3:
+ {
+ u8* textPtr;
+ u16 secondsPassed, minutes, seconds;
+
+ MenuDrawTextWindow(4, 2, 25, 17);
+ sub_8072BD8(gOtherText_ResultsOfBlending, 5, 3, 160);
+ for (i = 0; i < gBerryBlenderData->playersNo; i++)
+ {
+ u8 place = gBerryBlenderData->playerPlaces[i];
+ textPtr = text[0];
+
+ StringCopy(textPtr, gBerryBlenderData->blendedBerries[place].name);
+ ConvertInternationalString(textPtr, gLinkPlayers[place].language);
+#ifdef ENGLISH
+ StringAppend(textPtr, gOtherText_Berry);
+#else
+ de_sub_8073174(textPtr, gOtherText_Berry);
+#endif
+ textPtr = gBerryBlenderData->stringVar;
+ textPtr = ConvertIntToDecimalString(textPtr, i + 1);
+ textPtr[0] = CHAR_SPACE;
+ textPtr[1] = CHAR_PERIOD;
+ textPtr[2] = CHAR_SPACE;
+ textPtr += 3;
+ textPtr = sub_8072C74(textPtr, gLinkPlayers[place].name, 88, 0);
+ sub_8072C74(textPtr, text[0], 157, 0);
+ MenuPrint(gBerryBlenderData->stringVar, 5, gUnknown_082165E9[gBerryBlenderData->playersNo] + (i * gUnknown_082165EE[gBerryBlenderData->playersNo]));
+ }
+ ConvertIntToDecimalStringN(text[0], gBerryBlenderData->max_RPM % 100, 2, 2);
+ textPtr = gBerryBlenderData->stringVar;
+ textPtr = StringCopy(textPtr, gOtherText_MaxSpeed);
+ textPtr = sub_8072C14(textPtr, gBerryBlenderData->max_RPM / 100, 121, 1);
+
+#ifdef ENGLISH
+ textPtr[0] = CHAR_SPACE;
+ textPtr[1] = CHAR_PERIOD;
+ textPtr[2] = CHAR_SPACE;
+ textPtr += 3;
+ textPtr = sub_8072C74(textPtr, text[0], 142, 1);
+#else
+ *textPtr++ = CHAR_COMMA;
+ textPtr = sub_8072C74(textPtr, text[0], 136, 1);
+#endif
+ StringCopy(textPtr, gOtherText_RPM);
+ MenuPrint(gBerryBlenderData->stringVar, 5, 13);
+
+ secondsPassed = gBerryBlenderData->gameFrameTime / 60;
+ seconds = secondsPassed % 60;
+ minutes = secondsPassed / 60;
+ ConvertIntToDecimalStringN(text[0], minutes, 2, 2);
+ ConvertIntToDecimalStringN(text[1], seconds, 2, 2);
+ textPtr = gBerryBlenderData->stringVar;
+ textPtr = StringCopy(textPtr, gOtherText_RequiredTime);
+
+#ifdef ENGLISH
+ textPtr = sub_8072C74(textPtr, text[0], 102, 1);
+#else
+ textPtr = sub_8072C74(textPtr, text[0], 99, 1);
+#endif
+ textPtr = StringAppend(textPtr, gOtherText_Min);
+
+ textPtr = sub_8072C74(textPtr, text[1], 136, 1);
+ StringCopy(textPtr, gOtherText_Sec);
+
+ MenuPrint(gBerryBlenderData->stringVar, 5, 15);
+
+ gBerryBlenderData->framesToWait = 0;
+ gBerryBlenderData->field_0++;
+ }
+ break;
+ case 4:
+ if (gMain.newKeys & A_BUTTON)
+ gBerryBlenderData->field_0++;
+ break;
+ case 5:
+ MenuZeroFillScreen();
+ MenuDrawTextWindow(0, 14, 29, 19);
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ if (gBerryBlenderData->chosenItemID[i] != 0)
+ berryIDs[i] = gBerryBlenderData->chosenItemID[i] - 133;
+ }
+ sub_8050760();
+ Blender_CalculatePokeblock(gBerryBlenderData->blendedBerries, &pokeblock, gBerryBlenderData->playersNo, flavours, gBerryBlenderData->max_RPM);
+ Blender_PrintMadePokeblockString(&pokeblock, gBerryBlenderData->stringVar);
+ CreateTask(sub_8052BD0, 6);
+ MenuPrintMessage(gBerryBlenderData->stringVar, 1, 15);
+ RemoveBagItem(gScriptItemId, 1);
+ sub_810CA34(&pokeblock);
+ gBerryBlenderData->field_0++;
+ break;
+ case 6:
+ if (MenuUpdateWindowText())
+ {
+ Blender_TrySettingRecord();
+ return TRUE;
+ }
+ break;
+ }
+ return FALSE;
+}
+
+static void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst)
+{
+ u8 text[12];
+ u8 flavourLvl, feel;
+
+ dst[0] = EOS;
+ StringCopy(dst, gPokeblockNames[pokeblock->color]);
+#ifdef ENGLISH
+ StringAppend(dst, gOtherText_PokeBlockMade);
+#else
+ de_sub_8073174(dst, gOtherText_PokeBlockMade);
+#endif
+ StringAppend(dst, sNewLineString_0);
+
+ flavourLvl = sub_810C9B0(pokeblock);
+ feel = sub_810C9E8(pokeblock);
+
+ StringAppend(dst, gOtherText_BlockLevelIs);
+ ConvertIntToDecimalStringN(text, flavourLvl, 0, 3);
+ StringAppend(dst, text);
+
+ StringAppend(dst, gOtherText_BlockFeelIs);
+ ConvertIntToDecimalStringN(text, feel, 0, 3);
+ StringAppend(dst, text);
+
+ StringAppend(dst, gOtherText_Period);
+ StringAppend(dst, gUnknown_08216249);
+}
+
+static void Blender_SortBasedOnPoints(u8* places, u8 playersNum, u32* scores)
+{
+ s32 i, j;
+ for (i = 0; i < playersNum; i++)
+ {
+ for (j = 0; j < playersNum; j++)
+ {
+ if (scores[places[i]] > scores[places[j]])
+ {
+ u8 temp = places[i];
+ places[i] = places[j];
+ places[j] = temp;
+ }
+ }
+ }
+}
+
+static void Blender_SortScores(void)
+{
+ u8 i;
+ u8 places[4];
+ u32 points[4];
+
+ for (i = 0; i < gBerryBlenderData->playersNo; i++)
+ places[i] = i;
+ for (i = 0; i < gBerryBlenderData->playersNo; i++)
+ {
+ points[i] = 1000000 * gBerryBlenderData->scores[i][BLENDER_SCORE_BEST];
+ points[i] += 1000 * gBerryBlenderData->scores[i][BLENDER_SCORE_GOOD];
+ points[i] += 1000 - gBerryBlenderData->scores[i][BLENDER_SCORE_MISS];
+ }
+ Blender_SortBasedOnPoints(places, gBerryBlenderData->playersNo, points);
+ for (i = 0; i < gBerryBlenderData->playersNo; i++)
+ gBerryBlenderData->playerPlaces[i] = places[i];
+}
+
+static bool8 Blender_PrintBlendingRanking(void)
+{
+ u16 i;
+ switch (gBerryBlenderData->field_0)
+ {
+ case 0:
+ gBerryBlenderData->field_0++;
+ gBerryBlenderData->framesToWait = 255;
+ break;
+ case 1:
+ gBerryBlenderData->framesToWait -= 10;
+ if (gBerryBlenderData->framesToWait < 0)
+ {
+ gBerryBlenderData->framesToWait = 0;
+ gBerryBlenderData->field_0++;
+ }
+ break;
+ case 2:
+ if (++gBerryBlenderData->framesToWait > 20)
+ {
+ gBerryBlenderData->framesToWait = 0;
+ gBerryBlenderData->field_0++;
+ }
+ break;
+ case 3:
+ MenuDrawTextWindow(4, 2, 25, 17);
+ sub_8072BD8(gOtherText_Ranking, 5, 3, 160);
+
+ gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_BEST] = CreateSprite(&sSpriteTemplate_821645C, 140, 52, 0);
+ gSprites[gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_BEST]].callback = SpriteCallbackDummy;
+ StartSpriteAnim(&gSprites[gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_BEST]], 3);
+
+ gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_GOOD] = CreateSprite(&sSpriteTemplate_821645C, 164, 52, 0);
+ gSprites[gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_GOOD]].callback = SpriteCallbackDummy;
+
+ gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_MISS] = CreateSprite(&sSpriteTemplate_821645C, 188, 52, 0);
+ gSprites[gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_MISS]].callback = SpriteCallbackDummy;
+ StartSpriteAnim(&gSprites[gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_MISS]], 1);
+
+ Blender_SortScores();
+
+ for (i = 0; i < gBerryBlenderData->playersNo; i++)
+ {
+ u8 place = gBerryBlenderData->playerPlaces[i];
+ u8* txtPtr = gBerryBlenderData->stringVar;
+
+ txtPtr[0] = EXT_CTRL_CODE_BEGIN;
+ txtPtr[1] = 0x13;
+ txtPtr[2] = 4;
+ txtPtr += 3;
+
+ txtPtr = ConvertIntToDecimalString(txtPtr, i + 1);
+
+ txtPtr[0] = CHAR_SPACE;
+ txtPtr[1] = CHAR_PERIOD;
+ txtPtr[2] = CHAR_SPACE;
+ txtPtr += 3;
+
+ txtPtr = StringCopy(txtPtr, gLinkPlayers[place].name);
+
+ txtPtr = sub_8072C14(txtPtr, gBerryBlenderData->scores[place][BLENDER_SCORE_BEST], 108, 1);
+ txtPtr = sub_8072C14(txtPtr, gBerryBlenderData->scores[place][BLENDER_SCORE_GOOD], 132, 1);
+ txtPtr = sub_8072C14(txtPtr, gBerryBlenderData->scores[place][BLENDER_SCORE_MISS], 156, 1);
+
+ MenuPrint(gBerryBlenderData->stringVar, 5, i * gUnknown_082165F3[gBerryBlenderData->playersNo] + 8);
+ }
+ gBerryBlenderData->framesToWait = 0;
+ gBerryBlenderData->field_0++;
+ break;
+ case 4:
+ if (++gBerryBlenderData->framesToWait > 20)
+ gBerryBlenderData->field_0++;
+ break;
+ case 5:
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ gBerryBlenderData->field_0++;
+ }
+ break;
+ case 6:
+ gBerryBlenderData->field_0 = 0;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+// debug menu goes here
+
+void unref_sub_80524BC(void)
+{
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetTasks();
+ SetVBlankCallback(VBlankCB1_BerryBlender);
+ SetUpWindowConfig(&gWindowConfig_81E6CE4);
+ InitMenuWindow(&gWindowConfig_81E6CE4);
+ SeedRng(gMain.vblankCounter1);
+ REG_DISPCNT = 0x1540;
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+ sBlenderDebug.BPM = 8000;
+ sBlenderDebug.field_10++;
+ SetMainCallback2(sub_8052AF8);
+}
+
+static void BlenderDebug_PrintBerryData(void)
+{
+ u8 text[128];
+ u8 i;
+
+ StringCopy(text, sText_BPM);
+ MenuPrint(text, 2, 0);
+
+ ConvertIntToDecimalStringN(text, sBlenderDebug.BPM / 100, 2, 3);
+ MenuPrint(text, 6, 0);
+
+ for (i = 0; i < 4; i++)
+ {
+ u8 var;
+
+ if (sBlenderDebug.cursorPos == i)
+ {
+ text[0] = 0xEF;
+ CopyItemName(sBlenderDebug.berries[i] + 133, &text[1]);
+ }
+ else
+ {
+ CopyItemName(sBlenderDebug.berries[i] + 133, &text[0]);
+ text[6] = CHAR_SPACE;
+ text[7] = EOS;
+ }
+ var = (i * 3) + 3;
+ MenuPrint(text, 2, var);
+
+ ConvertIntToDecimalStringN(&text[0], gBerries[sBlenderDebug.berries[i]].spicy, 2, 2);
+ StringAppend(text, sText_Space);
+
+ ConvertIntToDecimalStringN(&text[3], gBerries[sBlenderDebug.berries[i]].dry, 2, 2);
+ StringAppend(text, sText_Space);
+
+ ConvertIntToDecimalStringN(&text[6], gBerries[sBlenderDebug.berries[i]].sweet, 2, 2);
+ StringAppend(text, sText_Space);
+
+ ConvertIntToDecimalStringN(&text[9], gBerries[sBlenderDebug.berries[i]].bitter, 2, 2);
+ StringAppend(text, sText_Space);
+
+ ConvertIntToDecimalStringN(&text[12], gBerries[sBlenderDebug.berries[i]].sour, 2, 2);
+ StringAppend(text, sText_Space);
+
+ ConvertIntToDecimalStringN(&text[15], gBerries[sBlenderDebug.berries[i]].smoothness, 2, 2);
+
+ text[17] = EOS;
+ MenuPrint(text, 7, var);
+ }
+ if (sBlenderDebug.pokeblock.color != 0)
+ {
+ StringCopy(text, gPokeblockNames[sBlenderDebug.pokeblock.color]);
+ MenuPrint(text, 2, 15);
+
+ ConvertIntToHexStringN(&text[0], sBlenderDebug.spicy, 2, 2);
+ StringAppend(text, sText_Space);
+
+ ConvertIntToHexStringN(&text[3], sBlenderDebug.dry, 2, 2);
+ StringAppend(text, sText_Space);
+
+ ConvertIntToHexStringN(&text[6], sBlenderDebug.sweet, 2, 2);
+ StringAppend(text, sText_Space);
+
+ ConvertIntToHexStringN(&text[9], sBlenderDebug.bitter, 2, 2);
+ StringAppend(text, sText_Space);
+
+ ConvertIntToHexStringN(&text[12], sBlenderDebug.sour, 2, 2);
+ StringAppend(text, sText_Space);
+
+ ConvertIntToHexStringN(&text[15], sBlenderDebug.feel, 2, 2);
+
+ text[17] = EOS;
+ MenuPrint(text, 7, 17);
+ }
+}
+
+static void sub_80527BC(void)
+{
+ u8 text[70];
+ u8 buffer[10];
+ u16 i;
+
+ if (gUnknown_020297DC == 1)
+ {
+ u16 j;
+ for (j = 0; j < 10; j++)
+ gUnknown_03004840[j] = 0;
+ gUnknown_03004830 = Random();
+ gUnknown_020297E0 = 0;
+ gUnknown_020297DC = 2;
+ for (i = 0; i < 200; i++)
+ ewram[i] = 0;
+ gUnknown_020297E8 = 0;
+ }
+ for (i = 0; i < 100; i++)
+ {
+ if (((Random() >> 15) & 1) == gUnknown_020297E8)
+ gUnknown_020297E0++;
+ else
+ {
+ u16* ewramPtr = ((u16*)(ewram));
+ ewramPtr[gUnknown_020297E4] = gUnknown_020297E0;
+ gUnknown_020297E4++;
+ gUnknown_020297E0 = 0;
+ gUnknown_020297E8 ^= 1;
+ }
+ }
+ text[0] = EOS;
+
+ ConvertIntToHexStringN(buffer, gUnknown_03004830, 2, 8);
+ StringAppend(text, buffer);
+ StringAppend(text, sText_Space);
+
+ ConvertIntToHexStringN(buffer, gUnknown_020297E0, 2, 8);
+ StringAppend(text, buffer);
+ StringAppend(text, sNewLineString_1);
+
+ if (gUnknown_020297DC == 3)
+ {
+ ConvertIntToHexStringN(buffer, gUnknown_020297E4, 2, 16);
+ StringAppend(text, buffer);
+ gUnknown_020297DC = 0;
+ }
+
+ MenuPrint(text, 2, 15);
+}
+
+static void sub_8052918(void)
+{
+ if (gMain.newKeys & R_BUTTON)
+ {
+ sBlenderDebug.BPM += 1000;
+ if (sBlenderDebug.BPM > 30000)
+ sBlenderDebug.BPM = 1000;
+ sBlenderDebug.field_10++;
+ }
+ if (gMain.newKeys & L_BUTTON)
+ {
+ sBlenderDebug.BPM -= 1000;
+ if (sBlenderDebug.BPM < 0)
+ sBlenderDebug.BPM = 30000;
+ sBlenderDebug.field_10++;
+ }
+ if (gMain.newKeys & DPAD_UP)
+ {
+ sBlenderDebug.cursorPos -= 1;
+ if (sBlenderDebug.cursorPos < 0)
+ sBlenderDebug.cursorPos = 3;
+ sBlenderDebug.field_10++;
+ }
+ if (gMain.newKeys & DPAD_DOWN)
+ {
+ sBlenderDebug.cursorPos += 1;
+ if (sBlenderDebug.cursorPos > 3)
+ sBlenderDebug.cursorPos = 0;
+ sBlenderDebug.field_10++;
+ }
+ if (gMain.newKeys & DPAD_LEFT)
+ {
+ if (--sBlenderDebug.berries[sBlenderDebug.cursorPos] < 0)
+ sBlenderDebug.berries[sBlenderDebug.cursorPos] = 42;
+ sBlenderDebug.field_10++;
+ }
+ if (gMain.newKeys & DPAD_RIGHT)
+ {
+ if (++sBlenderDebug.berries[sBlenderDebug.cursorPos] > 42)
+ sBlenderDebug.berries[sBlenderDebug.cursorPos] = 0;
+ sBlenderDebug.field_10++;
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ u16 berryIDs[4];
+ struct BlenderBerry berries[4];
+
+ u16 i, notEnigma = 0;
+ for (i = 0; i < 4; i++)
+ {
+ if (sBlenderDebug.berries[i] != 42)
+ {
+ notEnigma++;
+ berryIDs[i] = sBlenderDebug.berries[i];
+ Blender_CopyBerryData(&berries[i], sBlenderDebug.berries[i] + 133);
+ }
+ else
+ break;
+ }
+ if (notEnigma > 1)
+ {
+ BlenderDebug_CalculatePokeblock(berries, &sBlenderDebug.pokeblock, notEnigma, &sBlenderDebug.spicy, sBlenderDebug.BPM);
+ sBlenderDebug.field_10++;
+ }
+ else
+ sBlenderDebug.pokeblock.color = 0xFF;
+ }
+ if (sBlenderDebug.field_10)
+ {
+ BlenderDebug_PrintBerryData();
+ sBlenderDebug.field_10 = 0;
+ }
+ if (gMain.newKeys & SELECT_BUTTON && gUnknown_020297DC == 0)
+ {
+ gUnknown_020297DC++;
+ gUnknown_020297E0 = 0;
+ SeedRng(gMain.vblankCounter1);
+ }
+ if (gUnknown_020297DC != 0)
+ sub_80527BC();
+}
+
+static void sub_8052AF8(void)
+{
+ sub_8052918();
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+// debug menu ends
+// blender record window begins
+
+void ShowBerryBlenderRecordWindow(void)
+{
+ u8 text[30];
+ s32 i;
+
+ MenuDrawTextWindow(6, 3, 23, 16);
+ MenuPrint(gMultiText_BerryBlenderMaxSpeedRecord, 8, 4);
+ MenuPrint(gMultiText_2P3P4P, 8, 9);
+
+ for (i = 0; i < 3; i++)
+ {
+ u32 record = gSaveBlock1.berryBlenderRecords[i];
+ u8* txtPtr = sub_8072C14(text, record / 100, 18, 1);
+
+#ifdef ENGLISH
+ txtPtr[0] = CHAR_SPACE;
+ txtPtr[1] = CHAR_PERIOD;
+ txtPtr[2] = CHAR_SPACE;
+ txtPtr += 3;
+#else
+ *txtPtr++ = CHAR_COMMA;
+#endif
+
+ txtPtr = ConvertIntToDecimalStringN(txtPtr, record % 100, 2, 2);
+ StringAppend(txtPtr, gOtherText_RPM);
+ MenuPrint(text, 15, i * 2 + 9);
+ }
+}
+
+static void sub_8052BD0(u8 taskID)
+{
+ if (gTasks[taskID].data[0] == 0)
+ {
+ PlayFanfare(BGM_FANFA1);
+ gTasks[taskID].data[0]++;
+ }
+ if (IsFanfareTaskInactive())
+ {
+ PlayBGM(gBerryBlenderData->field_178);
+ DestroyTask(taskID);
+ }
+}
diff --git a/src/berry_tag_screen.c b/src/berry_tag_screen.c
index ff430e7b2..1413a02ca 100644
--- a/src/berry_tag_screen.c
+++ b/src/berry_tag_screen.c
@@ -10,7 +10,7 @@
#include "menu.h"
#include "menu_helpers.h"
#include "palette.h"
-#include "rom4.h"
+#include "overworld.h"
#include "songs.h"
#include "sound.h"
#include "sprite.h"
@@ -61,9 +61,9 @@ static void sub_8146440(u8 taskId);
static void sub_8146480(u8 taskid);
static void sub_81464E4(void);
static void sub_8146600(u8 berry);
-// static void sub_81466A0(void);
+static void sub_81466A0(void);
static void sub_81466E8(u8 taskId, s8 direction);
-// static void sub_8146798(u8 berry);
+static void sub_8146798(u8 berry);
static void sub_8146810(s8 berry);
static void sub_81468BC(void);
@@ -347,7 +347,7 @@ static void sub_8146600(u8 berry)
gUnknown_0203932E[4] = sub_80A7E5C(208);
}
-void sub_81466A0(void)
+static void sub_81466A0(void)
{
u16 i;
@@ -361,105 +361,36 @@ void sub_81466A0(void)
}
}
-__attribute__((naked))
static void sub_81466E8(u8 taskId, s8 direction)
{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r8\n\
- push {r7}\n\
- lsls r0, 24\n\
- lsrs r7, r0, 24\n\
- lsls r1, 24\n\
- lsrs r2, r1, 24\n\
- lsls r0, r7, 2\n\
- adds r0, r7\n\
- lsls r0, 3\n\
- ldr r1, _08146748 @ =gTasks + 0x8\n\
- adds r6, r0, r1\n\
- ldr r4, _0814674C @ =gBagPocketScrollStates\n\
- movs r0, 0xC\n\
- adds r0, r4\n\
- mov r8, r0\n\
- ldrb r1, [r0, 0x1]\n\
- ldrb r0, [r4, 0xC]\n\
- adds r1, r0\n\
- cmp r1, 0\n\
- bne _08146718\n\
- lsls r0, r2, 24\n\
- cmp r0, 0\n\
- blt _0814678C\n\
-_08146718:\n\
- adds r0, r1, 0x1\n\
- lsls r5, r2, 24\n\
- mov r1, r8\n\
- ldrb r1, [r1, 0x2]\n\
- cmp r0, r1\n\
- bne _08146728\n\
- cmp r5, 0\n\
- bgt _0814678C\n\
-_08146728:\n\
- movs r0, 0x5\n\
- bl PlaySE\n\
- mov r2, r8\n\
- ldrb r3, [r2, 0x1]\n\
- ldrb r4, [r4, 0xC]\n\
- mov r12, r4\n\
- adds r0, r3, r4\n\
- asrs r2, r5, 24\n\
- adds r1, r0, r2\n\
- cmp r1, 0\n\
- bge _08146750\n\
- negs r0, r0\n\
- strh r0, [r6, 0x2]\n\
- b _08146766\n\
- .align 2, 0\n\
-_08146748: .4byte gTasks + 0x8\n\
-_0814674C: .4byte gBagPocketScrollStates\n\
-_08146750:\n\
- mov r4, r8\n\
- ldrb r0, [r4, 0x2]\n\
- cmp r1, r0\n\
- blt _08146764\n\
- subs r0, r3\n\
- mov r1, r12\n\
- subs r0, r1\n\
- subs r0, 0x1\n\
- strh r0, [r6, 0x2]\n\
- b _08146766\n\
-_08146764:\n\
- strh r2, [r6, 0x2]\n\
-_08146766:\n\
- ldr r0, _08146780 @ =gTasks\n\
- lsls r1, r7, 2\n\
- adds r1, r7\n\
- lsls r1, 3\n\
- adds r1, r0\n\
- ldr r0, _08146784 @ =sub_8146798\n\
- str r0, [r1]\n\
- cmp r5, 0\n\
- bge _08146788\n\
- movs r2, 0x10\n\
- negs r2, r2\n\
- adds r0, r2, 0\n\
- b _0814678A\n\
- .align 2, 0\n\
-_08146780: .4byte gTasks\n\
-_08146784: .4byte sub_8146798\n\
-_08146788:\n\
- movs r0, 0x10\n\
-_0814678A:\n\
- strh r0, [r6]\n\
-_0814678C:\n\
- pop {r3}\n\
- mov r8, r3\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .syntax divided\n");
+ u8 berryPocket = 3;
+ s16 *data = gTasks[taskId].data;
+
+ if (gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos == 0
+ && direction < 0)
+ return;
+ if (gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos + 1 == gBagPocketScrollStates[berryPocket].numSlots
+ && direction > 0)
+ return;
+
+ PlaySE(SE_SELECT);
+ if (gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos + direction < 0)
+ data[1] = -(gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos);
+ else if (gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos + direction >= gBagPocketScrollStates[berryPocket].numSlots)
+ data[1] = gBagPocketScrollStates[berryPocket].numSlots - gBagPocketScrollStates[berryPocket].scrollTop - gBagPocketScrollStates[berryPocket].cursorPos - 1;
+ else
+ data[1] = direction;
+
+ gTasks[taskId].func = sub_8146798;
+
+ if (direction < 0)
+ data[0] = -16;
+ else
+ data[0] = 16;
+
}
-void sub_8146798(u8 taskId)
+static void sub_8146798(u8 taskId)
{
s16 *taskData = gTasks[taskId].data;
@@ -478,94 +409,38 @@ void sub_8146798(u8 taskId)
}
}
-__attribute__((naked))
static void sub_8146810(s8 berry)
{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- lsls r0, 24\n\
- lsrs r3, r0, 24\n\
- adds r4, r3, 0\n\
- lsls r0, r3, 24\n\
- asrs r1, r0, 24\n\
- cmp r1, 0\n\
- ble _08146848\n\
- ldr r0, _08146840 @ =gBagPocketScrollStates\n\
- adds r4, r0, 0\n\
- adds r4, 0xC\n\
- ldrb r2, [r0, 0xC]\n\
- adds r1, r2, r1\n\
- adds r6, r0, 0\n\
- cmp r1, 0x7\n\
- ble _08146844\n\
- adds r0, r3, 0\n\
- adds r0, 0xF9\n\
- adds r0, r2, r0\n\
- ldrb r1, [r4, 0x1]\n\
- adds r0, r1\n\
- strb r0, [r4, 0x1]\n\
- movs r0, 0x7\n\
- b _0814686E\n\
- .align 2, 0\n\
-_08146840: .4byte gBagPocketScrollStates\n\
-_08146844:\n\
- adds r0, r2, r3\n\
- b _0814686E\n\
-_08146848:\n\
- ldr r0, _08146868 @ =gBagPocketScrollStates\n\
- adds r5, r0, 0\n\
- adds r5, 0xC\n\
- ldrb r2, [r0, 0xC]\n\
- adds r1, r2, r1\n\
- adds r6, r0, 0\n\
- cmp r1, 0\n\
- bge _0814686C\n\
- adds r0, r2, r3\n\
- ldrb r1, [r5, 0x1]\n\
- adds r0, r1\n\
- movs r1, 0\n\
- strb r0, [r5, 0x1]\n\
- strb r1, [r6, 0xC]\n\
- b _08146870\n\
- .align 2, 0\n\
-_08146868: .4byte gBagPocketScrollStates\n\
-_0814686C:\n\
- adds r0, r2, r4\n\
-_0814686E:\n\
- strb r0, [r6, 0xC]\n\
-_08146870:\n\
- ldr r2, _081468AC @ =gScriptItemId\n\
- movs r0, 0x3\n\
- lsls r0, 2\n\
- adds r0, r6\n\
- ldrb r1, [r0, 0x1]\n\
- ldrb r0, [r0]\n\
- adds r1, r0\n\
- ldr r0, _081468B0 @ =gCurrentBagPocketItemSlots\n\
- ldr r0, [r0]\n\
- lsls r1, 2\n\
- adds r1, r0\n\
- ldrh r0, [r1]\n\
- strh r0, [r2]\n\
- ldr r0, _081468B4 @ =gUnknown_0203932C\n\
- ldrb r1, [r0]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- ldr r1, _081468B8 @ =gSprites\n\
- adds r0, r1\n\
- bl DestroySprite\n\
- bl sub_81466A0\n\
- bl sub_80A7DD4\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_081468AC: .4byte gScriptItemId\n\
-_081468B0: .4byte gCurrentBagPocketItemSlots\n\
-_081468B4: .4byte gUnknown_0203932C\n\
-_081468B8: .4byte gSprites\n\
- .syntax divided\n");
+ u8 berryPocket = 3;
+
+ if (berry > 0)
+ {
+ if (gBagPocketScrollStates[berryPocket].cursorPos + berry > 7)
+ {
+ gBagPocketScrollStates[berryPocket].scrollTop += gBagPocketScrollStates[berryPocket].cursorPos - 7 + berry;
+ gBagPocketScrollStates[berryPocket].cursorPos = 7;
+ }
+ else
+ {
+ gBagPocketScrollStates[berryPocket].cursorPos += berry;
+ }
+ }
+ else
+ {
+ if (gBagPocketScrollStates[berryPocket].cursorPos + berry < 0)
+ {
+ gBagPocketScrollStates[berryPocket].scrollTop += gBagPocketScrollStates[berryPocket].cursorPos + berry;
+ gBagPocketScrollStates[berryPocket].cursorPos = 0;
+ }
+ else
+ {
+ gBagPocketScrollStates[berryPocket].cursorPos += berry;
+ }
+ }
+ gScriptItemId = gCurrentBagPocketItemSlots[gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos].itemId;
+ DestroySprite(&gSprites[gUnknown_0203932C]);
+ sub_81466A0();
+ sub_80A7DD4();
}
static void sub_81468BC(void)
diff --git a/src/bike.c b/src/bike.c
index 58a4f38f4..dae86bd88 100644
--- a/src/bike.c
+++ b/src/bike.c
@@ -6,12 +6,10 @@
#include "flags.h"
#include "global.fieldmap.h"
#include "metatile_behavior.h"
-#include "rom4.h"
+#include "overworld.h"
#include "songs.h"
#include "sound.h"
-extern u8 sub_80608A4(u8);
-
extern u8 gUnknown_02039250;
extern u8 gUnknown_02039251;
extern u8 gUnknown_0202E854;
@@ -944,7 +942,7 @@ void GetOnOffBike(u8 var)
{
SetPlayerAvatarTransitionFlags(var);
sav1_set_battle_music_maybe(BGM_CYCLING);
- sub_8053FB0(BGM_CYCLING);
+ Overworld_ChangeMusicTo(BGM_CYCLING);
}
}
diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c
index b8d7cd386..b11b1ff3a 100644
--- a/src/braille_puzzles.c
+++ b/src/braille_puzzles.c
@@ -6,6 +6,7 @@
#include "fieldmap.h"
#include "flags.h"
#include "main.h"
+#include "map_constants.h"
#include "map_obj_lock.h"
#include "menu.h"
#include "rom6.h"
@@ -19,11 +20,13 @@
extern u8 gPlayerPartyCount;
extern u8 gLastFieldPokeMenuOpened;
-extern u8 gIslandCave_EventScript_OpenRegiiceChamber[]; // regiice event script
+extern u8 S_OpenRegiceChamber[]; // regiice event script
bool8 ShouldDoBrailleDigEffect(void)
{
- if (!FlagGet(SYS_BRAILLE_DIG) && (gSaveBlock1.location.mapGroup == 0x18 && gSaveBlock1.location.mapNum == 0x47))
+ if (!FlagGet(SYS_BRAILLE_DIG)
+ && (gSaveBlock1.location.mapGroup == MAP_GROUP_SEALED_CHAMBER_OUTER_ROOM
+ && gSaveBlock1.location.mapNum == MAP_ID_SEALED_CHAMBER_OUTER_ROOM))
{
if (gSaveBlock1.pos.x == 10 && gSaveBlock1.pos.y == 3)
return TRUE;
@@ -52,10 +55,11 @@ void DoBrailleDigEffect(void)
bool8 CheckRelicanthWailord(void)
{
+ // First comes Relicanth.
if (GetMonData(&gPlayerParty, MON_DATA_SPECIES2, 0) == SPECIES_RELICANTH)
{
CalculatePlayerPartyCount();
-
+ // Last comes Wailord
if (GetMonData(&gPlayerParty[gPlayerPartyCount - 1], MON_DATA_SPECIES2, 0) == SPECIES_WAILORD)
return TRUE;
}
@@ -64,7 +68,7 @@ bool8 CheckRelicanthWailord(void)
bool8 ShouldDoBrailleStrengthEffect(void)
{
- if (!FlagGet(SYS_BRAILLE_STRENGTH) && (gSaveBlock1.location.mapGroup == 0x18 && gSaveBlock1.location.mapNum == 0x6))
+ if (!FlagGet(SYS_BRAILLE_STRENGTH) && (gSaveBlock1.location.mapGroup == MAP_GROUP_DESERT_RUINS && gSaveBlock1.location.mapNum == MAP_ID_DESERT_RUINS))
{
if (gSaveBlock1.pos.x == 10 && gSaveBlock1.pos.y == 23)
return TRUE;
@@ -94,7 +98,7 @@ void DoBrailleStrengthEffect(void)
bool8 ShouldDoBrailleFlyEffect(void)
{
- if (!FlagGet(SYS_BRAILLE_FLY) && (gSaveBlock1.location.mapGroup == 0x18 && gSaveBlock1.location.mapNum == 0x44))
+ if (!FlagGet(SYS_BRAILLE_FLY) && (gSaveBlock1.location.mapGroup == MAP_GROUP_ANCIENT_TOMB && gSaveBlock1.location.mapNum == MAP_ID_ANCIENT_TOMB))
{
if (gSaveBlock1.pos.x == 8 && gSaveBlock1.pos.y == 25)
return TRUE;
@@ -105,8 +109,8 @@ bool8 ShouldDoBrailleFlyEffect(void)
void DoBrailleFlyEffect(void)
{
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
- FieldEffectStart(0x3C);
+ gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
+ FieldEffectStart(FLDEFF_USE_FLY_ANCIENT_TOMB);
}
bool8 FldEff_UseFlyAncientTomb(void)
@@ -120,7 +124,7 @@ bool8 FldEff_UseFlyAncientTomb(void)
void UseFlyAncientTomb_Callback(void)
{
- FieldEffectActiveListRemove(0x3C);
+ FieldEffectActiveListRemove(FLDEFF_USE_FLY_ANCIENT_TOMB);
UseFlyAncientTomb_Finish();
}
@@ -158,7 +162,7 @@ void Task_BrailleWait(u8 taskId)
if (BrailleWait_CheckButtonPress() != FALSE)
{
MenuZeroFillScreen();
- PlaySE(5);
+ PlaySE(SE_SELECT);
data[0] = 2;
}
else
@@ -191,7 +195,7 @@ void Task_BrailleWait(u8 taskId)
break;
case 4:
sub_8064E2C();
- ScriptContext1_SetupScript(gIslandCave_EventScript_OpenRegiiceChamber);
+ ScriptContext1_SetupScript(S_OpenRegiceChamber);
DestroyTask(taskId);
break;
}
@@ -199,14 +203,14 @@ void Task_BrailleWait(u8 taskId)
bool32 BrailleWait_CheckButtonPress(void)
{
- u16 var = 0xFF;
+ u16 keyMask = A_BUTTON | B_BUTTON | START_BUTTON | SELECT_BUTTON | DPAD_ANY;
- if (gSaveBlock2.optionsButtonMode == 1)
- var |= 0x300;
- if (gSaveBlock2.optionsButtonMode == 2)
- var |= 0x200;
+ if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR)
+ keyMask |= L_BUTTON | R_BUTTON;
+ if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_L_EQUALS_A)
+ keyMask |= L_BUTTON;
- if ((var & gMain.newKeys) != FALSE)
+ if (gMain.newKeys & keyMask)
return TRUE;
else
return FALSE;
diff --git a/src/cable_club.c b/src/cable_club.c
index 20b087f4e..7a85f2b6c 100644
--- a/src/cable_club.c
+++ b/src/cable_club.c
@@ -1,229 +1,350 @@
#include "global.h"
+#include "battle.h"
+#include "battle_records.h"
#include "cable_club.h"
#include "field_message_box.h"
+#include "field_weather.h"
#include "link.h"
+#include "load_save.h"
+#include "m4a.h"
#include "main.h"
+#include "menu.h"
+#include "palette.h"
+#include "record_mixing.h"
+#include "overworld.h"
#include "script.h"
+#include "script_pokemon_80C4.h"
#include "songs.h"
#include "sound.h"
+#include "start_menu.h"
#include "string_util.h"
+#include "strings2.h"
#include "task.h"
#include "text.h"
#include "trainer_card.h"
extern u16 gScriptResult;
extern struct TrainerCard gTrainerCards[4];
-
extern u8 gUnknown_03004860;
extern u8 gFieldLinkPlayerCount;
-
-extern u8 gUnknown_081A4932[];
+extern u16 gSpecialVar_0x8004;
+extern u16 gSpecialVar_0x8005;
+extern u16 gSpecialVar_0x8006;
+extern u16 gBattleTypeFlags;
+extern const u8 gUnknown_081A4932[];
extern const u8 gUnknown_081A4975[];
-
+extern const u8 gUnknown_081A49B6[];
+extern const u8 gUnknown_081A490C[];
+extern const u8* const gTrainerCardColorNames[];
+extern struct
+{
+ u8 field0;
+ u8 field1;
+} gUnknown_020297D8;
+
+static void sub_8082F20(u8 taskId);
+static void sub_8082F68(u8 taskId);
+static void sub_8082FEC(u8 taskId);
+static void sub_808303C(u8 taskId);
static void sub_80830E4(u8 taskId);
+static void sub_8083188(u8 taskId);
static void sub_8083288(u8 taskId);
static void sub_8083314(u8 taskId);
+static void sub_80833C4(u8 taskId);
+static void sub_80833EC(u8 taskId);
+static void sub_8083418(u8 taskId);
+static bool8 sub_8083444(u8 taskId);
+static void sub_808353C(u8 taskId);
+static void sub_8083710(u8 taskId);
+static void sub_8083760(u8 taskId);
+static void sub_80837B4(u8 taskId);
+static void sub_80837EC(u8 taskId);
+static void sub_808382C(u8 taskId);
+static void sub_8083958(void);
+static void sub_80839DC(u8 taskId);
+static void sub_8083AAC(u8 taskId);
+static void sub_8083B44(u8 taskId);
+static void sub_8083B6C(void);
+static void sub_8083CA4(u8 taskId);
+
+extern void sub_80831F8(u8 taskId);
+extern void call_map_music_set_to_zero(void);
+extern void sub_810FEFC(void);
+extern void sub_8047CD8(void);
+extern void sub_805559C(void);
+extern void sub_8055574(void);
+extern s32 sub_80554F8(void);
+extern void sub_805465C(void);
+
+static void sub_8082CD4(u8 arg0, u8 arg1)
+{
+ if (FindTaskIdByFunc(sub_8082F20) == 0xFF)
+ {
+ u8 taskId = CreateTask(sub_8082F20, 80);
+
+ gTasks[taskId].data[1] = arg0;
+ gTasks[taskId].data[2] = arg1;
+ }
+}
+
+static void sub_8082D18(u32 value)
+{
+ ConvertIntToDecimalStringN(gStringVar1, value, STR_CONV_MODE_LEFT_ALIGN, 1);
+ MenuDrawTextWindow(18, 10, 28, 13);
+ sub_8072BD8(gOtherText_PLink, 19, 11, 72);
+}
+
+static void sub_8082D4C()
+{
+ MenuZeroFillWindowRect(18, 10, 28, 13);
+}
+
+static void sub_8082D60(u8 taskId, u8 arg1)
+{
+ s16 *data = &gTasks[taskId].data[3];
+
+ if (arg1 != *data)
+ {
+ if (arg1 <= 1)
+ sub_8082D4C();
+ else
+ sub_8082D18(arg1);
+ *data = arg1;
+ }
+}
+
+static u32 sub_8082D9C(u8 minPlayers, u8 maxPlayers)
+{
+ int playerCount;
+
+ switch (GetLinkPlayerDataExchangeStatusTimed())
+ {
+ case EXCHANGE_COMPLETE:
+ playerCount = GetLinkPlayerCount_2();
+ if (minPlayers <= playerCount && playerCount <= maxPlayers)
+ return 1;
+ ConvertIntToDecimalStringN(gStringVar1, playerCount, STR_CONV_MODE_LEFT_ALIGN, 1);
+ return 4;
+ case EXCHANGE_TIMED_OUT:
+ return 0;
+ case EXCHANGE_IN_PROGRESS:
+ return 3;
+ default:
+ return 0;
+ }
+}
+
+static bool32 sub_8082DF4(u8 taskId)
+{
+ if (HasLinkErrorOccurred() == TRUE)
+ {
+ gTasks[taskId].func = sub_8083418;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool32 sub_8082E28(u8 taskId)
+{
+ if ((gMain.newKeys & B_BUTTON)
+ && IsLinkConnectionEstablished() == FALSE)
+ {
+ gTasks[taskId].func = sub_80833EC;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool32 sub_8082E6C(u8 taskId)
+{
+ if (IsLinkConnectionEstablished())
+ SetSuppressLinkErrorMessage(TRUE);
+
+ if (gMain.newKeys & B_BUTTON)
+ {
+ gTasks[taskId].func = sub_80833EC;
+ return TRUE;
+ }
+ return FALSE;
+}
-void sub_808303C(u8 taskId) {
- s32 linkPlayerCount;
- s16 *taskData;
+static bool32 sub_8082EB8(u8 taskId)
+{
+ if (GetSioMultiSI() == 1)
+ {
+ gTasks[taskId].func = sub_8083418;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void unref_sub_8082EEC(u8 taskId)
+{
+ gTasks[taskId].data[0]++;
+ if (gTasks[taskId].data[0] == 10)
+ {
+ sub_8007E9C(2);
+ DestroyTask(taskId);
+ }
+}
+
+static void sub_8082F20(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ if (data[0] == 0)
+ {
+ OpenLinkTimed();
+ sub_80082EC();
+ ResetLinkPlayers();
+ }
+ else if (data[0] > 9)
+ {
+ gTasks[taskId].func = sub_8082F68;
+ }
+ data[0]++;
+}
- taskData = gTasks[taskId].data;
+static void sub_8082F68(u8 taskId)
+{
+ u32 playerCount = GetLinkPlayerCount_2();
- linkPlayerCount = GetLinkPlayerCount_2();
+ if (sub_8082E28(taskId) == TRUE
+ || sub_8082E6C(taskId) == TRUE
+ || playerCount < 2)
+ return;
- if (sub_8082E28(taskId) == 1 ||
- sub_8082EB8(taskId) == 1 ||
- sub_8082DF4(taskId) == 1)
+ SetSuppressLinkErrorMessage(TRUE);
+ gTasks[taskId].data[3] = 0;
+ if (IsLinkMaster() == TRUE)
{
+ PlaySE(SE_PIN);
+ ShowFieldAutoScrollMessage(gUnknown_081A4932);
+ gTasks[taskId].func = sub_8082FEC;
+ }
+ else
+ {
+ PlaySE(SE_BOO);
+ ShowFieldAutoScrollMessage(gUnknown_081A49B6);
+ gTasks[taskId].func = sub_80831F8;
+ }
+}
+
+static void sub_8082FEC(u8 taskId)
+{
+ if (sub_8082E28(taskId) == TRUE
+ || sub_8082EB8(taskId) == TRUE
+ || sub_8082DF4(taskId) == TRUE)
return;
+
+ if (GetFieldMessageBoxMode() == FIELD_MESSAGE_BOX_HIDDEN)
+ {
+ gTasks[taskId].data[3] = 0;
+ gTasks[taskId].func = sub_808303C;
}
+}
+
+static void sub_808303C(u8 taskId)
+{
+ s16 *taskData = gTasks[taskId].data;
+ s32 linkPlayerCount = GetLinkPlayerCount_2();
+
+ if (sub_8082E28(taskId) == TRUE
+ || sub_8082EB8(taskId) == TRUE
+ || sub_8082DF4(taskId) == TRUE)
+ return;
sub_8082D60(taskId, linkPlayerCount);
if (!(gMain.newKeys & A_BUTTON))
- {
return;
- }
#if ENGLISH
if (linkPlayerCount < taskData[1])
- {
return;
- }
sub_80081C8(linkPlayerCount);
sub_8082D4C();
- ConvertIntToDecimalStringN(gStringVar1, linkPlayerCount, STR_CONV_MODE_LEFT_ALIGN, 1); // r5
- ShowFieldAutoScrollMessage((u8 *) gUnknown_081A4975);
+ ConvertIntToDecimalStringN(gStringVar1, linkPlayerCount, STR_CONV_MODE_LEFT_ALIGN, 1);
+ ShowFieldAutoScrollMessage((u8 *)gUnknown_081A4975);
gTasks[taskId].func = sub_80830E4;
#elif GERMAN
- if ((gLinkType == 0x2255 && (u32) linkPlayerCount > 1) ||
- (gLinkType != 0x2255 && taskData[1] <= linkPlayerCount))
+ if ((gLinkType == 0x2255 && (u32)linkPlayerCount > 1)
+ || (gLinkType != 0x2255 && taskData[1] <= linkPlayerCount))
{
sub_80081C8(linkPlayerCount);
sub_8082D4C();
- ConvertIntToDecimalStringN(gStringVar1, linkPlayerCount, STR_CONV_MODE_LEFT_ALIGN, 1); // r5
- ShowFieldAutoScrollMessage((u8 *) gUnknown_081A4975);
+ ConvertIntToDecimalStringN(gStringVar1, linkPlayerCount, STR_CONV_MODE_LEFT_ALIGN, 1);
+ ShowFieldAutoScrollMessage((u8 *)gUnknown_081A4975);
gTasks[taskId].func = sub_80830E4;
}
#endif
}
-#ifdef NONMATCHING
-static void sub_80830E4(u8 taskId) {
- if (sub_8082E28(taskId) == 1 ||
- sub_8082EB8(taskId) == 1 ||
- sub_8082DF4(taskId) == 1 ||
- GetFieldMessageBoxMode())
- {
+static void sub_80830E4(u8 taskId)
+{
+ if (sub_8082E28(taskId) == TRUE
+ || sub_8082EB8(taskId) == TRUE
+ || sub_8082DF4(taskId) == TRUE)
return;
- }
- if (sub_800820C() == GetLinkPlayerCount_2() &&
- !(gMain.heldKeys & B_BUTTON))
+ if (GetFieldMessageBoxMode() == FIELD_MESSAGE_BOX_HIDDEN)
{
- ShowFieldAutoScrollMessage(gUnknown_081A4932);
- gTasks[taskId].func = sub_8082FEC;
- return;
+ if (sub_800820C() != GetLinkPlayerCount_2())
+ {
+ ShowFieldAutoScrollMessage(gUnknown_081A4932);
+ gTasks[taskId].func = sub_8082FEC;
+ }
+ else if (gMain.heldKeys & B_BUTTON)
+ {
+ ShowFieldAutoScrollMessage(gUnknown_081A4932);
+ gTasks[taskId].func = sub_8082FEC;
+ }
+ else if (gMain.heldKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sub_8007F4C();
+ gTasks[taskId].func = sub_8083188;
+ }
}
-
- if (gMain.heldKeys & A_BUTTON)
- {
- PlaySE(SE_SELECT);
- sub_8007F4C();
- gTasks[(u32) taskId].func = sub_8083188;
- }
-}
-#else
-__attribute__((naked))
-static void sub_80830E4(u8 taskId) {
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- adds r6, r5, 0\n\
- adds r0, r5, 0\n\
- bl sub_8082E28\n\
- cmp r0, 0x1\n\
- beq _08083178\n\
- adds r0, r5, 0\n\
- bl sub_8082EB8\n\
- cmp r0, 0x1\n\
- beq _08083178\n\
- adds r0, r5, 0\n\
- bl sub_8082DF4\n\
- cmp r0, 0x1\n\
- beq _08083178\n\
- bl GetFieldMessageBoxMode\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _08083178\n\
- bl sub_800820C\n\
- adds r4, r0, 0\n\
- bl GetLinkPlayerCount_2\n\
- lsls r4, 24\n\
- lsls r0, 24\n\
- cmp r4, r0\n\
- bne _08083132\n\
- ldr r0, _08083148 @ =gMain\n\
- ldrh r1, [r0, 0x2C]\n\
- movs r0, 0x2\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08083158\n\
-_08083132:\n\
- ldr r0, _0808314C @ =gUnknown_081A4932\n\
- bl ShowFieldAutoScrollMessage\n\
- ldr r1, _08083150 @ =gTasks\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r0, 3\n\
- adds r0, r1\n\
- ldr r1, _08083154 @ =sub_8082FEC\n\
- str r1, [r0]\n\
- b _08083178\n\
- .align 2, 0\n\
-_08083148: .4byte gMain\n\
-_0808314C: .4byte gUnknown_081A4932\n\
-_08083150: .4byte gTasks\n\
-_08083154: .4byte sub_8082FEC\n\
-_08083158:\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08083178\n\
- movs r0, 0x5\n\
- bl PlaySE\n\
- bl sub_8007F4C\n\
- ldr r0, _08083180 @ =gTasks\n\
- lsls r1, r6, 2\n\
- adds r1, r6\n\
- lsls r1, 3\n\
- adds r1, r0\n\
- ldr r0, _08083184 @ =sub_8083188\n\
- str r0, [r1]\n\
-_08083178:\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_08083180: .4byte gTasks\n\
-_08083184: .4byte sub_8083188\n\
- .syntax divided\n");
}
-#endif
-
-void sub_8083188(u8 taskId) {
- u8 local1, local2;
- u16 *result;
- local1 = gTasks[taskId].data[1];
- local2 = gTasks[taskId].data[2];
+static void sub_8083188(u8 taskId)
+{
+ u8 local1 = gTasks[taskId].data[1];
+ u8 local2 = gTasks[taskId].data[2];
-
- if (sub_8082DF4(taskId) == 1 ||
- sub_8083444(taskId) == 1)
- {
+ if (sub_8082DF4(taskId) == TRUE
+ || sub_8083444(taskId) == TRUE)
return;
- }
if (GetLinkPlayerCount_2() != sub_800820C())
{
gTasks[taskId].func = sub_8083418;
- return;
}
-
- result = &gScriptResult;
- *result = sub_8082D9C(local1, local2);
- if (*result)
+ else
{
- gTasks[taskId].func = sub_8083288;
+ gScriptResult = sub_8082D9C(local1, local2);
+ if (gScriptResult != 0)
+ gTasks[taskId].func = sub_8083288;
}
}
-void sub_80831F8(u8 taskId) {
+void sub_80831F8(u8 taskId)
+{
u8 local1, local2;
- u16 *result;
local1 = gTasks[taskId].data[1];
local2 = gTasks[taskId].data[2];
- if (sub_8082E28(taskId) == 1 ||
- sub_8082DF4(taskId) == 1)
- {
+ if (sub_8082E28(taskId) == TRUE
+ || sub_8082DF4(taskId) == TRUE)
return;
- }
- result = &gScriptResult;
- *result = sub_8082D9C(local1, local2);
- if (*result == 0)
- {
+ gScriptResult = sub_8082D9C(local1, local2);
+ if (gScriptResult == 0)
return;
- }
-
-
- if (*result == 3)
+ if (gScriptResult == 3)
{
sub_800832C();
HideFieldMessageBox();
@@ -234,16 +355,15 @@ void sub_80831F8(u8 taskId) {
gFieldLinkPlayerCount = GetLinkPlayerCount_2();
gUnknown_03004860 = GetMultiplayerId();
sub_80081C8(gFieldLinkPlayerCount);
- sub_8093390((struct TrainerCard *) gBlockSendBuffer);
+ sub_8093390((struct TrainerCard *)gBlockSendBuffer);
gTasks[taskId].func = sub_8083314;
}
}
-static void sub_8083288(u8 taskId) {
- if (sub_8082DF4(taskId) == 1)
- {
+static void sub_8083288(u8 taskId)
+{
+ if (sub_8082DF4(taskId) == TRUE)
return;
- }
if (gScriptResult == 3)
{
@@ -256,26 +376,22 @@ static void sub_8083288(u8 taskId) {
gFieldLinkPlayerCount = GetLinkPlayerCount_2();
gUnknown_03004860 = GetMultiplayerId();
sub_80081C8(gFieldLinkPlayerCount);
- sub_8093390((struct TrainerCard *) gBlockSendBuffer);
+ sub_8093390((struct TrainerCard *)gBlockSendBuffer);
gTasks[taskId].func = sub_8083314;
sub_8007E9C(2);
}
}
-static void sub_8083314(u8 taskId) {
+static void sub_8083314(u8 taskId)
+{
u8 index;
-
struct TrainerCard *trainerCards;
- if (sub_8082DF4(taskId) == 1)
- {
+ if (sub_8082DF4(taskId) == TRUE)
return;
- }
if (GetBlockReceivedStatus() != sub_8008198())
- {
return;
- }
index = 0;
trainerCards = gTrainerCards;
@@ -296,14 +412,12 @@ static void sub_8083314(u8 taskId) {
u16 linkType;
linkType = gLinkType;
// FIXME: sub_8082D4C doesn't take any arguments
- sub_8082D4C(0x00004411, linkType);
+ sub_8082D4C(0x4411, linkType);
#elif GERMAN
if (gLinkType != 0x4411)
{
if (gLinkType == 0x6601)
- {
deUnkValue2 = 1;
- }
}
sub_8082D4C();
#endif
@@ -315,3 +429,477 @@ static void sub_8083314(u8 taskId) {
sub_800832C();
gTasks[taskId].func = sub_80833C4;
}
+
+static void sub_80833C4(u8 taskId)
+{
+ if (gReceivedRemoteLinkPlayers == FALSE)
+ {
+ sub_8082D4C();
+ EnableBothScriptContexts();
+ DestroyTask(taskId);
+ }
+}
+
+static void sub_80833EC(u8 taskId)
+{
+ gScriptResult = 5;
+ sub_8082D4C();
+ HideFieldMessageBox();
+ EnableBothScriptContexts();
+ DestroyTask(taskId);
+}
+
+static void sub_8083418(u8 taskId)
+{
+ gScriptResult = 6;
+ sub_8082D4C();
+ HideFieldMessageBox();
+ EnableBothScriptContexts();
+ DestroyTask(taskId);
+}
+
+static bool8 sub_8083444(u8 taskId)
+{
+ gTasks[taskId].data[4]++;
+ if (gTasks[taskId].data[4] > 600)
+ {
+ gTasks[taskId].func = sub_8083418;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+void sub_808347C(u8 arg0)
+{
+ u32 r3 = 2;
+ u32 r2 = 2;
+
+ switch (gSpecialVar_0x8004)
+ {
+ case 1:
+ r3 = 2;
+ gLinkType = 0x2233;
+ break;
+ case 2:
+ r3 = 2;
+ gLinkType = 0x2244;
+ break;
+ case 5:
+ r3 = 4;
+ r2 = 4;
+ gLinkType = 0x2255;
+ break;
+ }
+
+ sub_8082CD4(r3, r2);
+}
+
+void sub_80834E4(void)
+{
+ gLinkType = 0x1133;
+ gBattleTypeFlags = 0;
+ sub_8082CD4(2, 2);
+}
+
+void sub_808350C(void)
+{
+ gScriptResult = 0;
+ gLinkType = 0x3311;
+ gBattleTypeFlags = 0;
+ sub_8082CD4(2, 4);
+}
+
+static void sub_808353C(u8 taskId)
+{
+ int playerCount;
+ int i;
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ if (gScriptResult == 1)
+ {
+ playerCount = GetLinkPlayerCount();
+ for (i = 0; i < playerCount; i++)
+ {
+ if (gLinkPlayers[i].language == LANGUAGE_JAPANESE)
+ {
+ gScriptResult = 7;
+ sub_8008480();
+ gTasks[taskId].data[0] = 1;
+ return;
+ }
+ }
+ }
+ EnableBothScriptContexts();
+ DestroyTask(taskId);
+ break;
+ case 1:
+ if (gReceivedRemoteLinkPlayers == FALSE)
+ {
+ EnableBothScriptContexts();
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+void sub_80835D8(void)
+{
+ int taskId = FindTaskIdByFunc(sub_808353C);
+
+ if (taskId == 0xFF)
+ {
+ taskId = CreateTask(sub_808353C, 80);
+ gTasks[taskId].data[0] = 0;
+ }
+}
+
+void sub_8083614(void)
+{
+ gLinkType = 0x4411;
+ gBattleTypeFlags = 0;
+ sub_8082CD4(2, 4);
+}
+
+void sub_808363C(void)
+{
+ gLinkType = 0x6601;
+ gBattleTypeFlags = 0;
+ sub_8082CD4(4, 4);
+}
+
+u8 sub_8083664(void)
+{
+ if (FuncIsActiveTask(sub_8083710) != FALSE)
+ return 0xFF;
+
+ switch (gSpecialVar_0x8004)
+ {
+ case 1:
+ gLinkType = 0x2233;
+ break;
+ case 2:
+ gLinkType = 0x2244;
+ break;
+ case 5:
+ gLinkType = 0x2255;
+ break;
+ case 3:
+ gLinkType = 0x1111;
+ break;
+ case 4:
+ gLinkType = 0x3322;
+ break;
+ }
+
+ return CreateTask(sub_8083710, 80);
+}
+
+static void sub_8083710(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ if (data[0] == 0)
+ {
+ OpenLink();
+ ResetLinkPlayers();
+ CreateTask(sub_8083C50, 80);
+ }
+ else if (data[0] >= 10)
+ {
+ gTasks[taskId].func = sub_8083760;
+ }
+ data[0]++;
+}
+
+static void sub_8083760(u8 taskId)
+{
+ if (GetLinkPlayerCount_2() >= 2)
+ {
+ if (IsLinkMaster() == TRUE)
+ gTasks[taskId].func = sub_80837B4;
+ else
+ gTasks[taskId].func = sub_80837EC;
+ }
+}
+
+static void sub_80837B4(u8 taskId)
+{
+ if (sub_800820C() == GetLinkPlayerCount_2())
+ {
+ sub_8007F4C();
+ gTasks[taskId].func = sub_80837EC;
+ }
+}
+
+static void sub_80837EC(u8 taskId)
+{
+ if (gReceivedRemoteLinkPlayers == TRUE
+ && IsLinkPlayerDataExchangeComplete() == TRUE)
+ {
+ sub_800826C();
+ sub_8007B14();
+ DestroyTask(taskId);
+ }
+}
+
+void sub_8083820(void)
+{
+ ScrSpecial_DoSaveDialog();
+}
+
+static void sub_808382C(u8 taskId)
+{
+ struct Task* task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ fade_screen(1, 0);
+ gLinkType = 0x2211;
+ ClearLinkCallback_2();
+ task->data[0]++;
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ task->data[0]++;
+ break;
+ case 2:
+ task->data[1]++;
+ if (task->data[1] > 20)
+ task->data[0]++;
+ break;
+ case 3:
+ sub_800832C();
+ task->data[0]++;
+ break;
+ case 4:
+ if (!gReceivedRemoteLinkPlayers)
+ task->data[0]++;
+ break;
+ case 5:
+ if (gLinkPlayers[0].trainerId & 1)
+ current_map_music_set__default_for_battle(BGM_BATTLE32);
+ else
+ current_map_music_set__default_for_battle(BGM_BATTLE20);
+
+ switch (gSpecialVar_0x8004)
+ {
+ case 1:
+ gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_LINK;
+ break;
+ case 2:
+ gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_LINK | BATTLE_TYPE_DOUBLE;
+ break;
+ case 5:
+ ReducePlayerPartyToThree();
+ gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_LINK | BATTLE_TYPE_DOUBLE | BATTLE_TYPE_MULTI;
+ break;
+ }
+
+ SetMainCallback2(sub_800E7C4);
+ gMain.savedCallback = sub_8083958;
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+static void sub_8083958(void)
+{
+ call_map_music_set_to_zero();
+ LoadPlayerParty();
+ SavePlayerBag();
+ sub_810FEFC();
+
+ if (gSpecialVar_0x8004 != 5)
+ UpdateLinkBattleRecords(gUnknown_03004860 ^ 1);
+
+ gMain.savedCallback = sub_805465C;
+ SetMainCallback2(sub_8071B28);
+}
+
+void sub_80839A4(void)
+{
+ if (gSpecialVar_0x8004 == 1 || gSpecialVar_0x8004 == 2 || gSpecialVar_0x8004 == 5)
+ {
+ LoadPlayerParty();
+ SavePlayerBag();
+ }
+ copy_saved_warp2_bank_and_enter_x_to_warp1(0x7F);
+}
+
+void sub_80839D0(void)
+{
+ sub_805559C();
+}
+
+static void sub_80839DC(u8 taskId)
+{
+ struct Task* task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ ShowFieldMessage(gUnknown_081A490C);
+ task->data[0] = 1;
+ break;
+ case 1:
+ if (IsFieldMessageBoxHidden())
+ {
+ sub_8055574();
+ sub_8007270(gSpecialVar_0x8005);
+ task->data[0] = 2;
+ }
+ break;
+ case 2:
+ switch (sub_80554F8())
+ {
+ case 0:
+ break;
+ case 1:
+ HideFieldMessageBox();
+ task->data[0] = 0;
+ SwitchTaskToFollowupFunc(taskId);
+ break;
+ case 2:
+ task->data[0] = 3;
+ break;
+ }
+ break;
+ case 3:
+ sub_8055588();
+ HideFieldMessageBox();
+ MenuZeroFillScreen();
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+ break;
+ }
+}
+
+void sub_8083A84(TaskFunc followupFunc)
+{
+ u8 taskId = CreateTask(sub_80839DC, 80);
+ SetTaskFuncWithFollowupFunc(taskId, sub_80839DC, followupFunc);
+ ScriptContext1_Stop();
+}
+
+static void sub_8083AAC(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ ScriptContext2_Enable();
+ fade_screen(1, 0);
+ ClearLinkCallback_2();
+ task->data[0]++;
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ task->data[0]++;
+ break;
+ case 2:
+ gUnknown_020297D8.field0 = 0;
+ gUnknown_020297D8.field1 = 0;
+ m4aMPlayAllStop();
+ sub_800832C();
+ task->data[0]++;
+ break;
+ case 3:
+ if (!gReceivedRemoteLinkPlayers)
+ {
+ SetMainCallback2(sub_8047CD8);
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+static void sub_8083B44(u8 taskId)
+{
+ sub_8083B6C();
+ DestroyTask(taskId);
+}
+
+void sub_8083B5C(void)
+{
+ sub_8083A84(sub_8083B44);
+}
+
+static void sub_8083B6C(void)
+{
+ CreateTask(sub_8083AAC, 80);
+}
+
+void sub_8083B80(void)
+{
+ sub_8083B6C();
+ ScriptContext1_Stop();
+}
+
+void sub_8083B90(void)
+{
+ gLinkType = 0x2211;
+ sub_8083A84(sub_808382C);
+}
+
+void unref_sub_8083BB0(void)
+{
+ u8 taskId = CreateTask(sub_80839DC, 80);
+ SetTaskFuncWithFollowupFunc(taskId, sub_80839DC, Task_RecordMixing_Main);
+ ScriptContext1_Stop();
+}
+
+void sub_8083BDC(void)
+{
+ sub_8093130(gSpecialVar_0x8006, c2_exit_to_overworld_1_continue_scripts_restart_music);
+}
+
+bool32 sub_8083BF4(u8 linkPlayerIndex)
+{
+ u32 trainerCardColorIndex;
+
+ gSpecialVar_0x8006 = linkPlayerIndex;
+ StringCopy(gStringVar1, gLinkPlayers[linkPlayerIndex].name);
+
+ trainerCardColorIndex = sub_80934C4(linkPlayerIndex);
+ if (trainerCardColorIndex == 0)
+ return FALSE;
+
+ StringCopy(gStringVar2, gTrainerCardColorNames[trainerCardColorIndex - 1]);
+ return TRUE;
+}
+
+void sub_8083C50(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ task->data[0]++;
+ if (task->data[0] > 300)
+ {
+ CloseLink();
+ SetMainCallback2(CB2_LinkError);
+ DestroyTask(taskId);
+ }
+
+ if (gReceivedRemoteLinkPlayers)
+ DestroyTask(taskId);
+}
+
+static void sub_8083CA4(u8 taskId)
+{
+ if (!gReceivedRemoteLinkPlayers)
+ {
+ EnableBothScriptContexts();
+ DestroyTask(taskId);
+ }
+}
+
+void unref_sub_8083CC8(u8 taskId)
+{
+ sub_800832C();
+ gTasks[taskId].func = sub_8083CA4;
+} \ No newline at end of file
diff --git a/src/calculate_base_damage.c b/src/calculate_base_damage.c
index 0f2605e5b..f5c679876 100644
--- a/src/calculate_base_damage.c
+++ b/src/calculate_base_damage.c
@@ -7,52 +7,37 @@
#include "hold_effects.h"
#include "item.h"
#include "items.h"
-#include "main.h"
#include "pokemon.h"
#include "species.h"
-#include "sprite.h"
-#include "string_util.h"
-#include "strings2.h"
-#include "text.h"
+#include "moves.h"
+#include "battle_move_effects.h"
-extern u8 gPlayerPartyCount;
-extern u8 gEnemyPartyCount;
-
-extern u16 unk_20160BC[];
-extern struct SecretBaseRecord gSecretBaseRecord;
extern u32 dword_2017100[];
extern u16 gBattleTypeFlags;
extern struct BattlePokemon gBattleMons[4];
extern u16 gCurrentMove;
-extern u8 gLastUsedAbility;
extern u8 gCritMultiplier;
extern u16 gBattleWeather;
extern struct BattleEnigmaBerry gEnigmaBerries[];
extern u16 gBattleMovePower;
-extern struct SpriteTemplate gUnknown_02024E8C;
extern u16 gTrainerBattleOpponent;
-extern struct PokemonStorage gPokemonStorage;
-extern u8 gBadEggNickname[];
-extern struct SpriteTemplate gSpriteTemplate_8208288[];
-extern u8 gTrainerClassToPicIndex[];
-extern u8 gTrainerClassToNameIndex[];
-extern u8 gUnknown_08208238[];
-extern u8 gUnknown_0820823C[];
-extern u8 gStatStageRatios[];
-extern u8 gHoldEffectToType[][2];
+extern const u8 gHoldEffectToType[][2];
+extern const u8 gStatStageRatios[][2];
+
+u8 GetBankSide(u8 bank);
-#define APPLY_STAT_MOD(var, mon, stat, statIndex) \
-{ \
- (var) = (stat) * (gStatStageRatios)[(mon)->statStages[(statIndex)] * 2]; \
- (var) /= (gStatStageRatios + 1)[(mon)->statStages[(statIndex)] * 2]; \
+#define APPLY_STAT_MOD(var, mon, stat, statIndex) \
+{ \
+ (var) = (stat) * (gStatStageRatios)[(mon)->statStages[(statIndex)]][0]; \
+ (var) /= (gStatStageRatios)[(mon)->statStages[(statIndex)]][1]; \
}
-#ifdef NONMATCHING
-s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 a4, u16 powerOverride, u8 typeOverride, u8 a7, u8 a8)
+s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 sideStatus, u16 powerOverride, u8 typeOverride, u8 bankAtk, u8 bankDef)
{
- s32 i;
+ u32 i;
s32 damage = 0;
+ s32 damageHelper;
u8 type;
u16 attack, defense;
u16 spAttack, spDefense;
@@ -60,7 +45,6 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
u8 defenderHoldEffectParam;
u8 attackerHoldEffect;
u8 attackerHoldEffectParam;
- s32 a, b;
if (!powerOverride)
gBattleMovePower = gBattleMoves[move].power;
@@ -79,8 +63,8 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
if (attacker->item == ITEM_ENIGMA_BERRY)
{
- attackerHoldEffect = gEnigmaBerries[a7].holdEffect;
- attackerHoldEffectParam = gEnigmaBerries[a7].holdEffectParam;
+ attackerHoldEffect = gEnigmaBerries[bankAtk].holdEffect;
+ attackerHoldEffectParam = gEnigmaBerries[bankAtk].holdEffectParam;
}
else
{
@@ -90,8 +74,8 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
if (defender->item == ITEM_ENIGMA_BERRY)
{
- defenderHoldEffect = gEnigmaBerries[a8].holdEffect;
- defenderHoldEffectParam = gEnigmaBerries[a8].holdEffectParam;
+ defenderHoldEffect = gEnigmaBerries[bankDef].holdEffect;
+ defenderHoldEffectParam = gEnigmaBerries[bankDef].holdEffectParam;
}
else
{
@@ -107,35 +91,32 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
&& gTrainerBattleOpponent != 1024
&& FlagGet(BADGE01_GET)
- && !GetBankSide(a7))
+ && !GetBankSide(bankAtk))
attack = (110 * attack) / 100;
-
- if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER)))
- {
- if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
- && gTrainerBattleOpponent != 1024
- && FlagGet(BADGE05_GET)
- && !GetBankSide(a8))
- defense = (110 * defense) / 100;
-
- if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER)))
- {
- if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
- && gTrainerBattleOpponent != 1024
- && FlagGet(BADGE07_GET)
- && !GetBankSide(a7))
- spAttack = (110 * spAttack) / 100;
-
- if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER)))
- {
- if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
- && gTrainerBattleOpponent != 1024
- && FlagGet(BADGE07_GET)
- && !GetBankSide(a8))
- spDefense = (110 * spDefense) / 100;
- }
- }
- }
+ }
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER)))
+ {
+ if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ && gTrainerBattleOpponent != 1024
+ && FlagGet(BADGE05_GET)
+ && !GetBankSide(bankDef))
+ defense = (110 * defense) / 100;
+ }
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER)))
+ {
+ if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ && gTrainerBattleOpponent != 1024
+ && FlagGet(BADGE07_GET)
+ && !GetBankSide(bankAtk))
+ spAttack = (110 * spAttack) / 100;
+ }
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER)))
+ {
+ if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ && gTrainerBattleOpponent != 1024
+ && FlagGet(BADGE07_GET)
+ && !GetBankSide(bankDef))
+ spDefense = (110 * spDefense) / 100;
}
for (i = 0; i < 17; i++)
@@ -171,17 +152,17 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
spAttack /= 2;
if (attacker->ability == ABILITY_HUSTLE)
attack = (150 * attack) / 100;
- if (attacker->ability == ABILITY_PLUS && AbilityBattleEffects(0xE, 0, ABILITY_MINUS, 0, 0))
+ if (attacker->ability == ABILITY_PLUS && AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_MINUS, 0, 0))
spAttack = (150 * spAttack) / 100;
- if (attacker->ability == ABILITY_MINUS && AbilityBattleEffects(0xE, 0, ABILITY_PLUS, 0, 0))
+ if (attacker->ability == ABILITY_MINUS && AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_PLUS, 0, 0))
spAttack = (150 * spAttack) / 100;
if (attacker->ability == ABILITY_GUTS && attacker->status1)
attack = (150 * attack) / 100;
if (defender->ability == ABILITY_MARVEL_SCALE && defender->status1)
defense = (150 * defense) / 100;
- if (type == TYPE_ELECTRIC && AbilityBattleEffects(0xE, 0, 0, 0xFD, 0))
+ if (type == TYPE_ELECTRIC && AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, 0, 0xFD, 0))
gBattleMovePower /= 2;
- if (type == TYPE_FIRE && AbilityBattleEffects(0xE, 0, 0, 0xFE, 0))
+ if (type == TYPE_FIRE && AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, 0, 0xFE, 0))
gBattleMovePower /= 2;
if (type == TYPE_GRASS && attacker->ability == ABILITY_OVERGROW && attacker->hp <= (attacker->maxHP / 3))
gBattleMovePower = (150 * gBattleMovePower) / 100;
@@ -191,39 +172,41 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
gBattleMovePower = (150 * gBattleMovePower) / 100;
if (type == TYPE_BUG && attacker->ability == ABILITY_SWARM && attacker->hp <= (attacker->maxHP / 3))
gBattleMovePower = (150 * gBattleMovePower) / 100;
- if (gBattleMoves[gCurrentMove].effect == 7)
+ if (gBattleMoves[gCurrentMove].effect == EFFECT_EXPLOSION)
defense /= 2;
- if (type < TYPE_MYSTERY) // is physical?
+ if (type < TYPE_MYSTERY) // is physical
{
if (gCritMultiplier == 2)
{
- if (attacker->statStages[1] > 6)
- APPLY_STAT_MOD(a, attacker, attack, 1)
+ if (attacker->statStages[STAT_STAGE_ATK] > 6)
+ APPLY_STAT_MOD(damage, attacker, attack, STAT_STAGE_ATK)
else
- a = attack;
+ damage = attack;
}
else
- APPLY_STAT_MOD(a, attacker, attack, 1)
+ APPLY_STAT_MOD(damage, attacker, attack, STAT_STAGE_ATK)
- a = a * gBattleMovePower * (2 * attacker->level / 5 + 2);
+ damage = damage * gBattleMovePower;
+ damage *= (2 * attacker->level / 5 + 2);
if (gCritMultiplier == 2)
{
- if (defender->statStages[2] < 6)
- APPLY_STAT_MOD(b, defender, defense, 2)
+ if (defender->statStages[STAT_STAGE_DEF] < 6)
+ APPLY_STAT_MOD(damageHelper, defender, defense, STAT_STAGE_DEF)
else
- b = defense;
+ damageHelper = defense;
}
else
- APPLY_STAT_MOD(b, defender, defense, 2)
+ APPLY_STAT_MOD(damageHelper, defender, defense, STAT_STAGE_DEF)
- damage = (a / b) / 50;
+ damage = damage / damageHelper;
+ damage /= 50;
- if ((attacker->status1 & 0x10) && attacker->ability != ABILITY_GUTS)
+ if ((attacker->status1 & STATUS_BURN) && attacker->ability != ABILITY_GUTS)
damage /= 2;
- if ((a4 & 1) && gCritMultiplier == 1)
+ if ((sideStatus & SIDE_STATUS_REFLECT) && gCritMultiplier == 1)
{
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && CountAliveMons(2) == 2)
damage = 2 * (damage / 3);
@@ -246,29 +229,31 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
{
if (gCritMultiplier == 2)
{
- if (attacker->statStages[4] > 6)
- APPLY_STAT_MOD(a, attacker, spAttack, 4)
+ if (attacker->statStages[STAT_STAGE_SPATK] > 6)
+ APPLY_STAT_MOD(damage, attacker, spAttack, STAT_STAGE_SPATK)
else
- a = spAttack;
+ damage = spAttack;
}
else
- APPLY_STAT_MOD(a, attacker, spAttack, 4)
+ APPLY_STAT_MOD(damage, attacker, spAttack, STAT_STAGE_SPATK)
- a = a * gBattleMovePower * (2 * attacker->level / 5 + 2);
+ damage = damage * gBattleMovePower;
+ damage *= (2 * attacker->level / 5 + 2);
if (gCritMultiplier == 2)
{
- if (defender->statStages[5] < 6)
- APPLY_STAT_MOD(b, defender, spDefense, 5)
+ if (defender->statStages[STAT_STAGE_SPDEF] < 6)
+ APPLY_STAT_MOD(damageHelper, defender, spDefense, STAT_STAGE_SPDEF)
else
- b = spDefense;
+ damageHelper = spDefense;
}
else
- APPLY_STAT_MOD(b, defender, spDefense, 5)
+ APPLY_STAT_MOD(damageHelper, defender, spDefense, STAT_STAGE_SPDEF)
- damage = (a / b) / 50;
+ damage = (damage / damageHelper);
+ damage /= 50;
- if ((a4 & 2) && gCritMultiplier == 1)
+ if ((sideStatus & SIDE_STATUS_LIGHTSCREEN) && gCritMultiplier == 1)
{
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && CountAliveMons(2) == 2)
damage = 2 * (damage / 3);
@@ -279,1196 +264,46 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gBattleMoves[move].target == 8 && CountAliveMons(2) == 2)
damage /= 2;
- // are effects of weather negated with cloud nine or air lock?
- if (!AbilityBattleEffects(0xE, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(0xE, 0, ABILITY_AIR_LOCK, 0, 0))
+ // are effects of weather negated with cloud nine or air lock
+ if (!AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_CLOUD_NINE, 0, 0)
+ && !AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_AIR_LOCK, 0, 0))
{
- // rain?
- if (gBattleWeather & 1)
+ if (gBattleWeather & WEATHER_RAIN_TEMPORARY)
{
- if (type == TYPE_FIRE)
+ switch (type)
+ {
+ case TYPE_FIRE:
damage /= 2;
- else if (type == TYPE_WATER)
+ break;
+ case TYPE_WATER:
damage = (15 * damage) / 10;
+ break;
+ }
}
- // does lack of sun half solar beam damage?
- if ((gBattleWeather & 0x9F) && gCurrentMove == 76)
+ // any weather except sun weakens solar beam
+ if ((gBattleWeather & (WEATHER_RAIN_ANY | WEATHER_SANDSTORM_ANY | WEATHER_HAIL)) && gCurrentMove == MOVE_SOLAR_BEAM)
damage /= 2;
- // sunny?
- if (gBattleWeather & 0x60)
+ // sunny
+ if (gBattleWeather & WEATHER_SUN_ANY)
{
- if (type == TYPE_FIRE)
+ switch (type)
+ {
+ case TYPE_FIRE:
damage = (15 * damage) / 10;
- else if (type == TYPE_WATER)
+ break;
+ case TYPE_WATER:
damage /= 2;
+ break;
+ }
}
}
- // flash fire triggered?
- if ((dword_2017100[a7] & 1) && type == TYPE_FIRE)
+ // flash fire triggered
+ if ((dword_2017100[bankAtk] & 1) && type == TYPE_FIRE)
damage = (15 * damage) / 10;
}
return damage + 2;
}
-#else
-__attribute__((naked))
-s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 a4, u16 powerOverride, u8 typeOverride, u8 a7, u8 a8)
-{
- 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, 0x2C\n\
- adds r7, r0, 0\n\
- str r1, [sp, 0x4]\n\
- str r2, [sp, 0x8]\n\
- ldr r0, [sp, 0x4C]\n\
- ldr r1, [sp, 0x50]\n\
- ldr r2, [sp, 0x54]\n\
- ldr r4, [sp, 0x58]\n\
- lsls r3, 16\n\
- lsrs r3, 16\n\
- str r3, [sp, 0xC]\n\
- lsls r0, 16\n\
- lsrs r3, r0, 16\n\
- lsls r1, 24\n\
- lsrs r6, r1, 24\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- str r2, [sp, 0x10]\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- movs r5, 0\n\
- cmp r3, 0\n\
- bne _0803BA80\n\
- ldr r2, _0803BA78 @ =gBattleMovePower\n\
- ldr r1, _0803BA7C @ =gBattleMoves\n\
- ldr r3, [sp, 0x8]\n\
- lsls r0, r3, 1\n\
- adds r0, r3\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r0, [r0, 0x1]\n\
- strh r0, [r2]\n\
- b _0803BA84\n\
- .align 2, 0\n\
-_0803BA78: .4byte gBattleMovePower\n\
-_0803BA7C: .4byte gBattleMoves\n\
-_0803BA80:\n\
- ldr r0, _0803BA9C @ =gBattleMovePower\n\
- strh r3, [r0]\n\
-_0803BA84:\n\
- cmp r6, 0\n\
- bne _0803BAA4\n\
- ldr r1, _0803BAA0 @ =gBattleMoves\n\
- ldr r6, [sp, 0x8]\n\
- lsls r0, r6, 1\n\
- adds r0, r6\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r0, [r0, 0x2]\n\
- mov r9, r0\n\
- b _0803BAAE\n\
- .align 2, 0\n\
-_0803BA9C: .4byte gBattleMovePower\n\
-_0803BAA0: .4byte gBattleMoves\n\
-_0803BAA4:\n\
- movs r0, 0x3F\n\
- mov r9, r0\n\
- mov r1, r9\n\
- ands r1, r6\n\
- mov r9, r1\n\
-_0803BAAE:\n\
- ldrh r6, [r7, 0x2]\n\
- ldr r2, [sp, 0x4]\n\
- ldrh r2, [r2, 0x4]\n\
- str r2, [sp, 0x14]\n\
- ldrh r3, [r7, 0x8]\n\
- mov r8, r3\n\
- ldr r0, [sp, 0x4]\n\
- ldrh r0, [r0, 0xA]\n\
- str r0, [sp, 0x18]\n\
- ldrh r0, [r7, 0x2E]\n\
- cmp r0, 0xAF\n\
- bne _0803BAE0\n\
- ldr r1, _0803BADC @ =gEnigmaBerries\n\
- ldr r2, [sp, 0x10]\n\
- lsls r0, r2, 3\n\
- subs r0, r2\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r3, [r0, 0x7]\n\
- mov r10, r3\n\
- ldrb r0, [r0, 0x1A]\n\
- b _0803BAF6\n\
- .align 2, 0\n\
-_0803BADC: .4byte gEnigmaBerries\n\
-_0803BAE0:\n\
- ldrh r0, [r7, 0x2E]\n\
- bl ItemId_GetHoldEffect\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r10, r0\n\
- ldrh r0, [r7, 0x2E]\n\
- bl ItemId_GetHoldEffectParam\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
-_0803BAF6:\n\
- str r0, [sp, 0x20]\n\
- ldr r1, [sp, 0x4]\n\
- ldrh r0, [r1, 0x2E]\n\
- cmp r0, 0xAF\n\
- bne _0803BB26\n\
- ldr r1, _0803BB10 @ =gEnigmaBerries\n\
- lsls r0, r4, 3\n\
- subs r0, r4\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r0, [r0, 0x7]\n\
- str r0, [sp, 0x1C]\n\
- b _0803BB3C\n\
- .align 2, 0\n\
-_0803BB10: .4byte gEnigmaBerries\n\
-_0803BB14:\n\
- ldr r0, [sp, 0x20]\n\
- adds r0, 0x64\n\
- muls r0, r6\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
- b _0803BCDC\n\
-_0803BB26:\n\
- ldr r2, [sp, 0x4]\n\
- ldrh r0, [r2, 0x2E]\n\
- bl ItemId_GetHoldEffect\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- str r0, [sp, 0x1C]\n\
- ldr r3, [sp, 0x4]\n\
- ldrh r0, [r3, 0x2E]\n\
- bl ItemId_GetHoldEffectParam\n\
-_0803BB3C:\n\
- adds r0, r7, 0\n\
- adds r0, 0x20\n\
- ldrb r1, [r0]\n\
- str r0, [sp, 0x24]\n\
- cmp r1, 0x25\n\
- beq _0803BB4C\n\
- cmp r1, 0x4A\n\
- bne _0803BB50\n\
-_0803BB4C:\n\
- lsls r0, r6, 17\n\
- lsrs r6, r0, 16\n\
-_0803BB50:\n\
- ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- ldr r0, _0803BCBC @ =0x00000902\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803BB5E\n\
- b _0803BC78\n\
-_0803BB5E:\n\
- movs r0, 0x8\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803BB98\n\
- ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\
- ldrh r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 3\n\
- cmp r1, r0\n\
- beq _0803BB98\n\
- ldr r0, _0803BCC4 @ =0x00000807\n\
- bl FlagGet\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BB98\n\
- ldr r0, [sp, 0x10]\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _0803BB98\n\
- movs r0, 0x6E\n\
- muls r0, r6\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
-_0803BB98:\n\
- ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- ldr r0, _0803BCBC @ =0x00000902\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0803BC78\n\
- movs r0, 0x8\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803BBE2\n\
- ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\
- ldrh r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 3\n\
- cmp r1, r0\n\
- beq _0803BBE2\n\
- ldr r0, _0803BCC8 @ =0x0000080b\n\
- bl FlagGet\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BBE2\n\
- adds r0, r4, 0\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _0803BBE2\n\
- movs r0, 0x6E\n\
- ldr r1, [sp, 0x14]\n\
- muls r0, r1\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x14]\n\
-_0803BBE2:\n\
- ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- ldr r0, _0803BCBC @ =0x00000902\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0803BC78\n\
- movs r0, 0x8\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803BC2E\n\
- ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\
- ldrh r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 3\n\
- cmp r1, r0\n\
- beq _0803BC2E\n\
- ldr r0, _0803BCCC @ =0x0000080d\n\
- bl FlagGet\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BC2E\n\
- ldr r0, [sp, 0x10]\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _0803BC2E\n\
- movs r0, 0x6E\n\
- mov r2, r8\n\
- muls r2, r0\n\
- adds r0, r2, 0\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
-_0803BC2E:\n\
- ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- ldr r0, _0803BCBC @ =0x00000902\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0803BC78\n\
- movs r0, 0x8\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803BC78\n\
- ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\
- ldrh r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 3\n\
- cmp r1, r0\n\
- beq _0803BC78\n\
- ldr r0, _0803BCCC @ =0x0000080d\n\
- bl FlagGet\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BC78\n\
- adds r0, r4, 0\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _0803BC78\n\
- movs r0, 0x6E\n\
- ldr r3, [sp, 0x18]\n\
- muls r0, r3\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x18]\n\
-_0803BC78:\n\
- movs r2, 0\n\
- ldr r4, _0803BCD0 @ =gHoldEffectToType\n\
- ldr r0, [sp, 0x4]\n\
- adds r0, 0x20\n\
- str r0, [sp, 0x28]\n\
- adds r3, r4, 0\n\
-_0803BC84:\n\
- lsls r1, r2, 1\n\
- ldrb r0, [r3]\n\
- cmp r10, r0\n\
- bne _0803BCD4\n\
- adds r0, r4, 0x1\n\
- adds r0, r1, r0\n\
- ldrb r0, [r0]\n\
- cmp r9, r0\n\
- bne _0803BCD4\n\
- mov r1, r9\n\
- cmp r1, 0x8\n\
- bhi _0803BC9E\n\
- b _0803BB14\n\
-_0803BC9E:\n\
- ldr r0, [sp, 0x20]\n\
- adds r0, 0x64\n\
- mov r2, r8\n\
- muls r2, r0\n\
- adds r0, r2, 0\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
- b _0803BCDC\n\
- .align 2, 0\n\
-_0803BCB8: .4byte gBattleTypeFlags\n\
-_0803BCBC: .4byte 0x00000902\n\
-_0803BCC0: .4byte gTrainerBattleOpponent\n\
-_0803BCC4: .4byte 0x00000807\n\
-_0803BCC8: .4byte 0x0000080b\n\
-_0803BCCC: .4byte 0x0000080d\n\
-_0803BCD0: .4byte gHoldEffectToType\n\
-_0803BCD4:\n\
- adds r3, 0x2\n\
- adds r2, 0x1\n\
- cmp r2, 0x10\n\
- bls _0803BC84\n\
-_0803BCDC:\n\
- mov r3, r10\n\
- cmp r3, 0x1D\n\
- bne _0803BCF0\n\
- movs r0, 0x96\n\
- muls r0, r6\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
-_0803BCF0:\n\
- mov r0, r10\n\
- cmp r0, 0x22\n\
- bne _0803BD28\n\
- ldr r0, _0803BFDC @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0803BD28\n\
- ldr r1, _0803BFE0 @ =0xfffffe69\n\
- adds r0, r1, 0\n\
- ldrh r2, [r7]\n\
- adds r0, r2\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0x1\n\
- bhi _0803BD28\n\
- movs r0, 0x96\n\
- mov r3, r8\n\
- muls r3, r0\n\
- adds r0, r3, 0\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
-_0803BD28:\n\
- ldr r0, [sp, 0x1C]\n\
- cmp r0, 0x22\n\
- bne _0803BD60\n\
- ldr r0, _0803BFDC @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0803BD60\n\
- ldr r1, _0803BFE0 @ =0xfffffe69\n\
- adds r0, r1, 0\n\
- ldr r2, [sp, 0x4]\n\
- ldrh r2, [r2]\n\
- adds r0, r2\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0x1\n\
- bhi _0803BD60\n\
- movs r0, 0x96\n\
- ldr r3, [sp, 0x18]\n\
- muls r0, r3\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x18]\n\
-_0803BD60:\n\
- mov r0, r10\n\
- cmp r0, 0x23\n\
- bne _0803BD76\n\
- ldrh r1, [r7]\n\
- ldr r0, _0803BFE4 @ =0x00000175\n\
- cmp r1, r0\n\
- bne _0803BD76\n\
- mov r1, r8\n\
- lsls r0, r1, 17\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
-_0803BD76:\n\
- ldr r2, [sp, 0x1C]\n\
- cmp r2, 0x24\n\
- bne _0803BD8E\n\
- ldr r3, [sp, 0x4]\n\
- ldrh r1, [r3]\n\
- ldr r0, _0803BFE4 @ =0x00000175\n\
- cmp r1, r0\n\
- bne _0803BD8E\n\
- ldr r1, [sp, 0x18]\n\
- lsls r0, r1, 17\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x18]\n\
-_0803BD8E:\n\
- mov r2, r10\n\
- cmp r2, 0x2D\n\
- bne _0803BDA2\n\
- ldrh r0, [r7]\n\
- cmp r0, 0x19\n\
- bne _0803BDA2\n\
- mov r3, r8\n\
- lsls r0, r3, 17\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
-_0803BDA2:\n\
- ldr r0, [sp, 0x1C]\n\
- cmp r0, 0x40\n\
- bne _0803BDB8\n\
- ldr r1, [sp, 0x4]\n\
- ldrh r0, [r1]\n\
- cmp r0, 0x84\n\
- bne _0803BDB8\n\
- ldr r2, [sp, 0x14]\n\
- lsls r0, r2, 17\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x14]\n\
-_0803BDB8:\n\
- mov r3, r10\n\
- cmp r3, 0x41\n\
- bne _0803BDCE\n\
- ldrh r0, [r7]\n\
- subs r0, 0x68\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0x1\n\
- bhi _0803BDCE\n\
- lsls r0, r6, 17\n\
- lsrs r6, r0, 16\n\
-_0803BDCE:\n\
- ldr r1, [sp, 0x28]\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x2F\n\
- bne _0803BDE6\n\
- mov r2, r9\n\
- cmp r2, 0xA\n\
- beq _0803BDE0\n\
- cmp r2, 0xF\n\
- bne _0803BDE6\n\
-_0803BDE0:\n\
- mov r3, r8\n\
- lsrs r3, 1\n\
- mov r8, r3\n\
-_0803BDE6:\n\
- ldr r0, [sp, 0x24]\n\
- ldrb r4, [r0]\n\
- cmp r4, 0x37\n\
- bne _0803BDFC\n\
- movs r0, 0x96\n\
- muls r0, r6\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
-_0803BDFC:\n\
- cmp r4, 0x39\n\
- bne _0803BE2A\n\
- movs r0, 0\n\
- str r0, [sp]\n\
- movs r0, 0xE\n\
- movs r1, 0\n\
- movs r2, 0x3A\n\
- movs r3, 0\n\
- bl AbilityBattleEffects\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BE2A\n\
- movs r0, 0x96\n\
- mov r1, r8\n\
- muls r1, r0\n\
- adds r0, r1, 0\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
-_0803BE2A:\n\
- ldr r2, [sp, 0x24]\n\
- ldrb r0, [r2]\n\
- cmp r0, 0x3A\n\
- bne _0803BE5C\n\
- movs r0, 0\n\
- str r0, [sp]\n\
- movs r0, 0xE\n\
- movs r1, 0\n\
- movs r2, 0x39\n\
- movs r3, 0\n\
- bl AbilityBattleEffects\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BE5C\n\
- movs r0, 0x96\n\
- mov r3, r8\n\
- muls r3, r0\n\
- adds r0, r3, 0\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
-_0803BE5C:\n\
- ldr r1, [sp, 0x24]\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x3E\n\
- bne _0803BE78\n\
- ldr r0, [r7, 0x4C]\n\
- cmp r0, 0\n\
- beq _0803BE78\n\
- movs r0, 0x96\n\
- muls r0, r6\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
-_0803BE78:\n\
- ldr r2, [sp, 0x28]\n\
- ldrb r0, [r2]\n\
- cmp r0, 0x3F\n\
- bne _0803BE9A\n\
- ldr r3, [sp, 0x4]\n\
- ldr r0, [r3, 0x4C]\n\
- cmp r0, 0\n\
- beq _0803BE9A\n\
- movs r0, 0x96\n\
- ldr r1, [sp, 0x14]\n\
- muls r0, r1\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x14]\n\
-_0803BE9A:\n\
- mov r2, r9\n\
- cmp r2, 0xD\n\
- bne _0803BEBE\n\
- movs r0, 0\n\
- str r0, [sp]\n\
- movs r0, 0xE\n\
- movs r1, 0\n\
- movs r2, 0\n\
- movs r3, 0xFD\n\
- bl AbilityBattleEffects\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BEBE\n\
- ldr r1, _0803BFE8 @ =gBattleMovePower\n\
- ldrh r0, [r1]\n\
- lsrs r0, 1\n\
- strh r0, [r1]\n\
-_0803BEBE:\n\
- mov r3, r9\n\
- cmp r3, 0xA\n\
- bne _0803BEE2\n\
- movs r0, 0\n\
- str r0, [sp]\n\
- movs r0, 0xE\n\
- movs r1, 0\n\
- movs r2, 0\n\
- movs r3, 0xFE\n\
- bl AbilityBattleEffects\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BEE2\n\
- ldr r1, _0803BFE8 @ =gBattleMovePower\n\
- ldrh r0, [r1]\n\
- lsrs r0, 1\n\
- strh r0, [r1]\n\
-_0803BEE2:\n\
- mov r0, r9\n\
- cmp r0, 0xC\n\
- bne _0803BF12\n\
- ldr r1, [sp, 0x24]\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x41\n\
- bne _0803BF12\n\
- ldrh r0, [r7, 0x2C]\n\
- movs r1, 0x3\n\
- bl __udivsi3\n\
- ldrh r1, [r7, 0x28]\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r1, r0\n\
- bhi _0803BF12\n\
- ldr r4, _0803BFE8 @ =gBattleMovePower\n\
- ldrh r1, [r4]\n\
- movs r0, 0x96\n\
- muls r0, r1\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- strh r0, [r4]\n\
-_0803BF12:\n\
- mov r2, r9\n\
- cmp r2, 0xA\n\
- bne _0803BF42\n\
- ldr r3, [sp, 0x24]\n\
- ldrb r0, [r3]\n\
- cmp r0, 0x42\n\
- bne _0803BF42\n\
- ldrh r0, [r7, 0x2C]\n\
- movs r1, 0x3\n\
- bl __udivsi3\n\
- ldrh r1, [r7, 0x28]\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r1, r0\n\
- bhi _0803BF42\n\
- ldr r4, _0803BFE8 @ =gBattleMovePower\n\
- ldrh r1, [r4]\n\
- movs r0, 0x96\n\
- muls r0, r1\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- strh r0, [r4]\n\
-_0803BF42:\n\
- mov r0, r9\n\
- cmp r0, 0xB\n\
- bne _0803BF72\n\
- ldr r1, [sp, 0x24]\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x43\n\
- bne _0803BF72\n\
- ldrh r0, [r7, 0x2C]\n\
- movs r1, 0x3\n\
- bl __udivsi3\n\
- ldrh r1, [r7, 0x28]\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r1, r0\n\
- bhi _0803BF72\n\
- ldr r4, _0803BFE8 @ =gBattleMovePower\n\
- ldrh r1, [r4]\n\
- movs r0, 0x96\n\
- muls r0, r1\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- strh r0, [r4]\n\
-_0803BF72:\n\
- mov r2, r9\n\
- cmp r2, 0x6\n\
- bne _0803BFA2\n\
- ldr r3, [sp, 0x24]\n\
- ldrb r0, [r3]\n\
- cmp r0, 0x44\n\
- bne _0803BFA2\n\
- ldrh r0, [r7, 0x2C]\n\
- movs r1, 0x3\n\
- bl __udivsi3\n\
- ldrh r1, [r7, 0x28]\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r1, r0\n\
- bhi _0803BFA2\n\
- ldr r4, _0803BFE8 @ =gBattleMovePower\n\
- ldrh r1, [r4]\n\
- movs r0, 0x96\n\
- muls r0, r1\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- strh r0, [r4]\n\
-_0803BFA2:\n\
- ldr r2, _0803BFEC @ =gBattleMoves\n\
- ldr r0, _0803BFF0 @ =gCurrentMove\n\
- ldrh r1, [r0]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r2\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x7\n\
- bne _0803BFBC\n\
- ldr r0, [sp, 0x14]\n\
- lsrs r0, 1\n\
- str r0, [sp, 0x14]\n\
-_0803BFBC:\n\
- mov r1, r9\n\
- cmp r1, 0x8\n\
- bls _0803BFC4\n\
- b _0803C122\n\
-_0803BFC4:\n\
- ldr r0, _0803BFF4 @ =gCritMultiplier\n\
- ldrb r1, [r0]\n\
- adds r4, r0, 0\n\
- cmp r1, 0x2\n\
- bne _0803C000\n\
- movs r0, 0x19\n\
- ldrsb r0, [r7, r0]\n\
- cmp r0, 0x6\n\
- ble _0803BFFC\n\
- ldr r2, _0803BFF8 @ =gStatStageRatios\n\
- b _0803C006\n\
- .align 2, 0\n\
-_0803BFDC: .4byte gBattleTypeFlags\n\
-_0803BFE0: .4byte 0xfffffe69\n\
-_0803BFE4: .4byte 0x00000175\n\
-_0803BFE8: .4byte gBattleMovePower\n\
-_0803BFEC: .4byte gBattleMoves\n\
-_0803BFF0: .4byte gCurrentMove\n\
-_0803BFF4: .4byte gCritMultiplier\n\
-_0803BFF8: .4byte gStatStageRatios\n\
-_0803BFFC:\n\
- adds r5, r6, 0\n\
- b _0803C01E\n\
-_0803C000:\n\
- ldr r2, _0803C050 @ =gStatStageRatios\n\
- movs r0, 0x19\n\
- ldrsb r0, [r7, r0]\n\
-_0803C006:\n\
- lsls r0, 1\n\
- adds r1, r0, r2\n\
- ldrb r1, [r1]\n\
- adds r5, r6, 0\n\
- muls r5, r1\n\
- adds r2, 0x1\n\
- adds r0, r2\n\
- ldrb r1, [r0]\n\
- adds r0, r5, 0\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
-_0803C01E:\n\
- ldr r0, _0803C054 @ =gBattleMovePower\n\
- ldrh r0, [r0]\n\
- muls r5, r0\n\
- adds r0, r7, 0\n\
- adds r0, 0x2A\n\
- ldrb r0, [r0]\n\
- lsls r0, 1\n\
- movs r1, 0x5\n\
- bl __divsi3\n\
- adds r0, 0x2\n\
- muls r5, r0\n\
- ldrb r0, [r4]\n\
- cmp r0, 0x2\n\
- bne _0803C05C\n\
- ldr r2, [sp, 0x4]\n\
- movs r0, 0x1A\n\
- ldrsb r0, [r2, r0]\n\
- cmp r0, 0x5\n\
- bgt _0803C058\n\
- ldr r2, _0803C050 @ =gStatStageRatios\n\
- ldr r3, [sp, 0x4]\n\
- movs r0, 0x1A\n\
- ldrsb r0, [r3, r0]\n\
- b _0803C064\n\
- .align 2, 0\n\
-_0803C050: .4byte gStatStageRatios\n\
-_0803C054: .4byte gBattleMovePower\n\
-_0803C058:\n\
- ldr r3, [sp, 0x14]\n\
- b _0803C07E\n\
-_0803C05C:\n\
- ldr r2, _0803C0DC @ =gStatStageRatios\n\
- ldr r1, [sp, 0x4]\n\
- movs r0, 0x1A\n\
- ldrsb r0, [r1, r0]\n\
-_0803C064:\n\
- lsls r0, 1\n\
- adds r1, r0, r2\n\
- ldrb r1, [r1]\n\
- ldr r6, [sp, 0x14]\n\
- adds r3, r6, 0\n\
- muls r3, r1\n\
- adds r2, 0x1\n\
- adds r0, r2\n\
- ldrb r1, [r0]\n\
- adds r0, r3, 0\n\
- bl __divsi3\n\
- adds r3, r0, 0\n\
-_0803C07E:\n\
- adds r0, r5, 0\n\
- adds r1, r3, 0\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
- movs r1, 0x32\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
- ldr r0, [r7, 0x4C]\n\
- movs r1, 0x10\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803C0A8\n\
- ldr r1, [sp, 0x24]\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x3E\n\
- beq _0803C0A8\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
-_0803C0A8:\n\
- movs r0, 0x1\n\
- ldr r2, [sp, 0xC]\n\
- ands r0, r2\n\
- cmp r0, 0\n\
- beq _0803C0EA\n\
- ldrb r1, [r4]\n\
- cmp r1, 0x1\n\
- bne _0803C0EA\n\
- ldr r0, _0803C0E0 @ =gBattleTypeFlags\n\
- ldrh r0, [r0]\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- beq _0803C0E4\n\
- movs r0, 0x2\n\
- bl CountAliveMons\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x2\n\
- bne _0803C0E4\n\
- adds r0, r5, 0\n\
- movs r1, 0x3\n\
- bl __divsi3\n\
- lsls r5, r0, 1\n\
- b _0803C0EA\n\
- .align 2, 0\n\
-_0803C0DC: .4byte gStatStageRatios\n\
-_0803C0E0: .4byte gBattleTypeFlags\n\
-_0803C0E4:\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
-_0803C0EA:\n\
- ldr r0, _0803C148 @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803C11C\n\
- ldr r0, _0803C14C @ =gBattleMoves\n\
- ldr r3, [sp, 0x8]\n\
- lsls r1, r3, 1\n\
- adds r1, r3\n\
- lsls r1, 2\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x6]\n\
- cmp r0, 0x8\n\
- bne _0803C11C\n\
- movs r0, 0x2\n\
- bl CountAliveMons\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x2\n\
- bne _0803C11C\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
-_0803C11C:\n\
- cmp r5, 0\n\
- bne _0803C122\n\
- movs r5, 0x1\n\
-_0803C122:\n\
- mov r6, r9\n\
- cmp r6, 0x9\n\
- bne _0803C12A\n\
- movs r5, 0\n\
-_0803C12A:\n\
- mov r0, r9\n\
- cmp r0, 0x9\n\
- bhi _0803C132\n\
- b _0803C330\n\
-_0803C132:\n\
- ldr r0, _0803C150 @ =gCritMultiplier\n\
- ldrb r1, [r0]\n\
- adds r4, r0, 0\n\
- cmp r1, 0x2\n\
- bne _0803C15C\n\
- movs r0, 0x1C\n\
- ldrsb r0, [r7, r0]\n\
- cmp r0, 0x6\n\
- ble _0803C158\n\
- ldr r2, _0803C154 @ =gStatStageRatios\n\
- b _0803C162\n\
- .align 2, 0\n\
-_0803C148: .4byte gBattleTypeFlags\n\
-_0803C14C: .4byte gBattleMoves\n\
-_0803C150: .4byte gCritMultiplier\n\
-_0803C154: .4byte gStatStageRatios\n\
-_0803C158:\n\
- mov r5, r8\n\
- b _0803C17A\n\
-_0803C15C:\n\
- ldr r2, _0803C1A8 @ =gStatStageRatios\n\
- movs r0, 0x1C\n\
- ldrsb r0, [r7, r0]\n\
-_0803C162:\n\
- lsls r0, 1\n\
- adds r1, r0, r2\n\
- ldrb r1, [r1]\n\
- mov r5, r8\n\
- muls r5, r1\n\
- adds r2, 0x1\n\
- adds r0, r2\n\
- ldrb r1, [r0]\n\
- adds r0, r5, 0\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
-_0803C17A:\n\
- ldr r0, _0803C1AC @ =gBattleMovePower\n\
- ldrh r0, [r0]\n\
- muls r5, r0\n\
- adds r0, r7, 0\n\
- adds r0, 0x2A\n\
- ldrb r0, [r0]\n\
- lsls r0, 1\n\
- movs r1, 0x5\n\
- bl __divsi3\n\
- adds r0, 0x2\n\
- muls r5, r0\n\
- ldrb r0, [r4]\n\
- cmp r0, 0x2\n\
- bne _0803C1B4\n\
- ldr r1, [sp, 0x4]\n\
- movs r0, 0x1D\n\
- ldrsb r0, [r1, r0]\n\
- cmp r0, 0x5\n\
- bgt _0803C1B0\n\
- ldr r2, _0803C1A8 @ =gStatStageRatios\n\
- b _0803C1BC\n\
- .align 2, 0\n\
-_0803C1A8: .4byte gStatStageRatios\n\
-_0803C1AC: .4byte gBattleMovePower\n\
-_0803C1B0:\n\
- ldr r3, [sp, 0x18]\n\
- b _0803C1D6\n\
-_0803C1B4:\n\
- ldr r2, _0803C21C @ =gStatStageRatios\n\
- ldr r1, [sp, 0x4]\n\
- movs r0, 0x1D\n\
- ldrsb r0, [r1, r0]\n\
-_0803C1BC:\n\
- lsls r0, 1\n\
- adds r1, r0, r2\n\
- ldrb r1, [r1]\n\
- ldr r6, [sp, 0x18]\n\
- adds r3, r6, 0\n\
- muls r3, r1\n\
- adds r2, 0x1\n\
- adds r0, r2\n\
- ldrb r1, [r0]\n\
- adds r0, r3, 0\n\
- bl __divsi3\n\
- adds r3, r0, 0\n\
-_0803C1D6:\n\
- adds r0, r5, 0\n\
- adds r1, r3, 0\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
- movs r1, 0x32\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
- movs r0, 0x2\n\
- ldr r1, [sp, 0xC]\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803C22A\n\
- ldrb r1, [r4]\n\
- cmp r1, 0x1\n\
- bne _0803C22A\n\
- ldr r0, _0803C220 @ =gBattleTypeFlags\n\
- ldrh r0, [r0]\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- beq _0803C224\n\
- movs r0, 0x2\n\
- bl CountAliveMons\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x2\n\
- bne _0803C224\n\
- adds r0, r5, 0\n\
- movs r1, 0x3\n\
- bl __divsi3\n\
- lsls r5, r0, 1\n\
- b _0803C22A\n\
- .align 2, 0\n\
-_0803C21C: .4byte gStatStageRatios\n\
-_0803C220: .4byte gBattleTypeFlags\n\
-_0803C224:\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
-_0803C22A:\n\
- ldr r0, _0803C2A4 @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803C25C\n\
- ldr r0, _0803C2A8 @ =gBattleMoves\n\
- ldr r2, [sp, 0x8]\n\
- lsls r1, r2, 1\n\
- adds r1, r2\n\
- lsls r1, 2\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x6]\n\
- cmp r0, 0x8\n\
- bne _0803C25C\n\
- movs r0, 0x2\n\
- bl CountAliveMons\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x2\n\
- bne _0803C25C\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
-_0803C25C:\n\
- movs r0, 0\n\
- str r0, [sp]\n\
- movs r0, 0xE\n\
- movs r1, 0\n\
- movs r2, 0xD\n\
- movs r3, 0\n\
- bl AbilityBattleEffects\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0\n\
- bne _0803C30C\n\
- str r0, [sp]\n\
- movs r0, 0xE\n\
- movs r1, 0\n\
- movs r2, 0x4D\n\
- movs r3, 0\n\
- bl AbilityBattleEffects\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _0803C30C\n\
- ldr r2, _0803C2AC @ =gBattleWeather\n\
- ldrh r1, [r2]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- adds r4, r2, 0\n\
- cmp r0, 0\n\
- beq _0803C2C4\n\
- mov r3, r9\n\
- cmp r3, 0xA\n\
- beq _0803C2B0\n\
- cmp r3, 0xB\n\
- beq _0803C2B8\n\
- b _0803C2C4\n\
- .align 2, 0\n\
-_0803C2A4: .4byte gBattleTypeFlags\n\
-_0803C2A8: .4byte gBattleMoves\n\
-_0803C2AC: .4byte gBattleWeather\n\
-_0803C2B0:\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
- b _0803C2C4\n\
-_0803C2B8:\n\
- lsls r0, r5, 4\n\
- subs r0, r5\n\
- movs r1, 0xA\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
-_0803C2C4:\n\
- ldrh r1, [r4]\n\
- movs r0, 0x9F\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803C2DC\n\
- ldr r0, _0803C2F4 @ =gCurrentMove\n\
- ldrh r0, [r0]\n\
- cmp r0, 0x4C\n\
- bne _0803C2DC\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
-_0803C2DC:\n\
- ldrh r1, [r4]\n\
- movs r0, 0x60\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803C30C\n\
- mov r6, r9\n\
- cmp r6, 0xA\n\
- beq _0803C2F8\n\
- cmp r6, 0xB\n\
- beq _0803C306\n\
- b _0803C30C\n\
- .align 2, 0\n\
-_0803C2F4: .4byte gCurrentMove\n\
-_0803C2F8:\n\
- lsls r0, r5, 4\n\
- subs r0, r5\n\
- movs r1, 0xA\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
- b _0803C30C\n\
-_0803C306:\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
-_0803C30C:\n\
- ldr r1, _0803C344 @ =0x02017100\n\
- ldr r2, [sp, 0x10]\n\
- lsls r0, r2, 2\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- movs r1, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803C330\n\
- mov r3, r9\n\
- cmp r3, 0xA\n\
- bne _0803C330\n\
- lsls r0, r5, 4\n\
- subs r0, r5\n\
- movs r1, 0xA\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
-_0803C330:\n\
- adds r0, r5, 0x2\n\
- add sp, 0x2C\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
-_0803C344: .4byte 0x02017100\n\
- .syntax divided");
-}
-#endif
diff --git a/src/choose_party.c b/src/choose_party.c
index d8df44028..9cdf63fc8 100644
--- a/src/choose_party.c
+++ b/src/choose_party.c
@@ -6,9 +6,10 @@
#include "name_string_util.h"
#include "palette.h"
#include "party_menu.h"
+#include "pokemon_menu.h"
#include "pokemon.h"
#include "pokemon_summary_screen.h"
-#include "rom4.h"
+#include "overworld.h"
#include "script.h"
#include "songs.h"
#include "sound.h"
@@ -50,10 +51,8 @@ extern void PartyMenuPrintMonsLevelOrStatus(void);
extern void PrintPartyMenuMonNicknames(void);
extern void sub_806BC3C(u8, u8);
extern u8 sub_806B58C(u8);
-extern void sub_806D538();
extern u16 sub_806BE38();
extern u8 sub_806CA38();
-extern void sub_808B5B4();
extern TaskFunc PartyMenuGetPopupMenuFunc(u8, const struct PartyPopupMenu *, const struct PartyMenuItem *, u8);
extern u8 sub_806B124();
extern void sub_806C994();
@@ -84,8 +83,6 @@ extern void PartyMenuDoPutNicknameTilemap(u16, u8, u8, u8, const u8 *);
extern void box_print(u8, int, const u8 *);
extern void sub_806BCE8(void);
extern void sub_806E750(u8, const struct PartyPopupMenu *, const struct PartyMenuItem *, int);
-extern u16 sub_806BD80();
-extern void sub_806BF74();
static void ClearPartySelection(void);
static bool8 IsMonAllowedInBattleTower(struct Pokemon *);
@@ -211,11 +208,10 @@ bool8 sub_8121E78(void)
return FALSE;
}
-#ifdef NONMATCHING
static bool8 IsMonAllowedInBattleTower(struct Pokemon *pkmn)
{
- u16 r3;
- s32 i;
+ u16 species;
+ s32 i = 0;
if (GetMonData(pkmn, MON_DATA_IS_EGG))
return FALSE;
@@ -232,97 +228,16 @@ static bool8 IsMonAllowedInBattleTower(struct Pokemon *pkmn)
&& GetMonData(pkmn, MON_DATA_LEVEL) > 50)
return FALSE;
- r3 = GetMonData(pkmn, MON_DATA_SPECIES);
- // Can't stop the compiler from optimizing out the first index
- for (i = 0; gBattleTowerBanlist[i] != 0xFFFF; i++)
+ // Check if the pkmn is in the ban list
+ species = GetMonData(pkmn, MON_DATA_SPECIES);
+ while (gBattleTowerBanlist[i] != 0xFFFF)
{
- if (gBattleTowerBanlist[i] == r3)
+ if (gBattleTowerBanlist[i] == species)
return FALSE;
+ i++;
}
return TRUE;
}
-#else
-__attribute__((naked))
-static bool8 IsMonAllowedInBattleTower(struct Pokemon *pkmn)
-{
- asm_unified(
- "push {r4,lr}\n\
- adds r4, r0, 0\n\
- movs r1, 0x2D\n\
- bl GetMonData\n\
- cmp r0, 0\n\
- bne _0812207C\n\
- ldr r0, _08122058 @ =0x0201b000\n\
- ldr r1, _0812205C @ =0x00000263\n\
- adds r0, r1\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- bne _08122060\n\
- adds r0, r4, 0\n\
- movs r1, 0x39\n\
- bl GetMonData\n\
- cmp r0, 0\n\
- beq _0812207C\n\
- b _081220B6\n\
- .align 2, 0\n\
-_08122058: .4byte 0x0201b000\n\
-_0812205C: .4byte 0x00000263\n\
-_08122060:\n\
- ldr r0, _08122080 @ =gSaveBlock2\n\
- ldr r1, _08122084 @ =0x00000554\n\
- adds r0, r1\n\
- ldrb r1, [r0]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08122088\n\
- adds r0, r4, 0\n\
- movs r1, 0x38\n\
- bl GetMonData\n\
- cmp r0, 0x32\n\
- bls _08122088\n\
-_0812207C:\n\
- movs r0, 0\n\
- b _081220B8\n\
- .align 2, 0\n\
-_08122080: .4byte gSaveBlock2\n\
-_08122084: .4byte 0x00000554\n\
-_08122088:\n\
- adds r0, r4, 0\n\
- movs r1, 0xB\n\
- bl GetMonData\n\
- lsls r0, 16\n\
- lsrs r3, r0, 16\n\
- ldr r1, _081220C0 @ =gBattleTowerBanlist\n\
- movs r0, 0\n\
- lsls r0, 1\n\
- adds r2, r0, r1\n\
- ldrh r0, [r2]\n\
- ldr r1, _081220C4 @ =0x0000ffff\n\
- cmp r0, r1\n\
- beq _081220B6\n\
- adds r4, r1, 0\n\
- adds r1, r2, 0\n\
-_081220A8:\n\
- ldrh r0, [r1]\n\
- cmp r0, r3\n\
- beq _0812207C\n\
- adds r1, 0x2\n\
- ldrh r0, [r1]\n\
- cmp r0, r4\n\
- bne _081220A8\n\
-_081220B6:\n\
- movs r0, 0x1\n\
-_081220B8:\n\
- pop {r4}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
-_081220C0: .4byte gBattleTowerBanlist\n\
-_081220C4: .4byte 0x0000ffff\n"
- );
-}
-#endif
static u8 sub_81220C8(void)
{
diff --git a/src/clock.c b/src/clock.c
index 1f2aac9fd..9635514d2 100644
--- a/src/clock.c
+++ b/src/clock.c
@@ -7,7 +7,7 @@
#include "field_weather.h"
#include "lottery_corner.h"
#include "main.h"
-#include "rom4.h"
+#include "overworld.h"
#include "rtc.h"
#include "time_events.h"
#include "tv.h"
diff --git a/src/cute_sketch.c b/src/cute_sketch.c
new file mode 100644
index 000000000..5317bc334
--- /dev/null
+++ b/src/cute_sketch.c
@@ -0,0 +1,164 @@
+#include "global.h"
+#include "cute_sketch.h"
+#include "contest_painting.h"
+
+extern u16 (*gUnknown_03005DEC)[][32];
+extern u8 gUnknown_03005E00;
+extern u8 gUnknown_03005DFC;
+extern u8 gUnknown_03005DF8;
+extern u8 gUnknown_03005DF0;
+extern u8 gUnknown_03005E04;
+extern u8 gUnknown_03005DF4;
+
+extern u8 gUnknown_03005DE8;
+
+// this file's functions
+void sub_80FCAA4(void);
+void sub_80FCB5C(void);
+void sub_80FCD54(void);
+void sub_80FCEA4(void);
+void sub_80FCCBC(void);
+void sub_80FD06C(void);
+void sub_80FD114(void);
+void sub_80FCF3C(void);
+void sub_80FCAC4(void);
+void sub_80FCC18(u8);
+void sub_80FC92C(u8);
+void sub_80FC9E4(u8);
+void sub_80FD1C8(u16);
+u16 sub_80FD39C(u16*);
+u16 sub_80FD68C(u16*, u16*, u16*);
+
+void sub_80FC7A0(struct Unk03005E20* info)
+{
+ gUnknown_03005DEC = info->var_4;
+ gUnknown_03005E00 = info->var_1F;
+ gUnknown_03005DE8 = info->var_19;
+ gUnknown_03005DFC = info->var_1A;
+ gUnknown_03005DF8 = info->var_1B;
+ gUnknown_03005DF0 = info->var_1C;
+ gUnknown_03005E04 = info->var_1D;
+ gUnknown_03005DF4 = info->var_1E;
+ switch (info->var_0)
+ {
+ case 2:
+ sub_80FCAA4();
+ break;
+ case 8:
+ sub_80FCB5C();
+ break;
+ case 9:
+ sub_80FCD54();
+ sub_80FCC18(gUnknown_03005E00);
+ break;
+ case 10:
+ sub_80FCD54();
+ sub_80FCEA4();
+ sub_80FCCBC();
+ case 31:
+ sub_80FCEA4();
+ break;
+ case 11:
+ sub_80FCD54();
+ sub_80FD06C();
+ sub_80FD06C();
+ sub_80FD114();
+ sub_80FCCBC();
+ break;
+ case 13:
+ sub_80FCF3C();
+ break;
+ case 30:
+ sub_80FCD54();
+ break;
+ case 32:
+ sub_80FD06C();
+ break;
+ case 33:
+ sub_80FD114();
+ break;
+ case 6:
+ sub_80FCAC4();
+ sub_80FC92C(3);
+ break;
+ case 36:
+ sub_80FCD54();
+ sub_80FD06C();
+ sub_80FD114();
+ sub_80FCCBC();
+ sub_80FCB5C();
+ sub_80FCB5C();
+ sub_80FC92C(2);
+ sub_80FC9E4(4);
+ break;
+ }
+}
+
+#define RGB2(r, g, b) (((b) << 10) | ((g) << 5) | (r))
+
+void sub_80FC92C(u8 a0) // it changes palette someway somehow... .__.
+{
+ u8 i, j;
+ for (i = 0; i < gUnknown_03005DF0; i++)
+ {
+ u16* var2 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04];
+ u16* pal = &var2[gUnknown_03005DE8];
+ for (j = 0; j < gUnknown_03005DF8; j++, pal++)
+ {
+ if (!(0x8000 & *pal))
+ {
+ u8 val = (31 & *pal);
+ val += a0;
+ if (val > 31)
+ val = 31;
+
+ *pal = RGB2(val, val, val);
+ }
+ }
+ }
+}
+
+void sub_80FC9E4(u8 a0)
+{
+ u8 i, j;
+ for (i = 0; i < gUnknown_03005DF0; i++)
+ {
+ u16* var2 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04];
+ u16* pal = &var2[gUnknown_03005DE8];
+ for (j = 0; j < gUnknown_03005DF8; j++, pal++)
+ {
+ if (!(0x8000 & *pal))
+ {
+ u8 val = (31 & *pal);
+ if (val > 31 - a0)
+ val = 31 - (a0 >> 1);
+
+ *pal = RGB2(val, val, val);
+ }
+ }
+ }
+}
+
+void sub_80FCAA4(void)
+{
+ u32 i;
+ for (i = 0; i < 3200; i++)
+ sub_80FD1C8(i);
+}
+
+void sub_80FCAC4(void)
+{
+ u8 i, j;
+ for (i = 0; i < gUnknown_03005DF0; i++)
+ {
+ u16* var2 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04];
+ u16* pal = &var2[gUnknown_03005DE8];
+ for (j = 0; j < gUnknown_03005DF8; j++, pal++)
+ {
+ if (!(0x8000 & *pal))
+ {
+ *pal = sub_80FD39C(pal);
+ }
+ }
+ }
+}
diff --git a/src/daycare.c b/src/daycare.c
index cded18207..591b5b188 100644
--- a/src/daycare.c
+++ b/src/daycare.c
@@ -1,11 +1,46 @@
#include "global.h"
#include "daycare.h"
#include "pokemon.h"
+#include "event_data.h"
#include "species.h"
#include "items.h"
+#include "text.h"
#include "string_util.h"
+#include "mail_data.h"
+#include "name_string_util.h"
+#include "pokemon_storage_system.h"
+#include "rng.h"
+#include "moves.h"
+#include "trade.h"
+#include "strings2.h"
+#include "data/pokemon/egg_moves.h"
+#include "party_menu.h"
+#include "field_effect.h"
+#include "main.h"
+#include "menu.h"
+#include "sound.h"
+#include "songs.h"
+#include "script.h"
+#include "overworld.h"
-extern u8 gLastFieldPokeMenuOpened;
+IWRAM_DATA u16 gUnknown_03000470[52];
+IWRAM_DATA u16 gUnknown_030004D8[4];
+IWRAM_DATA u16 gUnknown_030004E0[4];
+IWRAM_DATA u16 gUnknown_030004E8[12];
+IWRAM_DATA u16 gUnknown_03000500[4];
+
+static void sub_80417F4(struct DayCareMail *);
+static void sub_80420FC(struct Pokemon *, u16, struct DayCareData *);
+static u8 daycare_relationship_score(struct DayCareData *);
+
+const u8 *const gUnknown_08209AC4[] = {
+ DaycareText_GetAlongVeryWell,
+ DaycareText_GetAlong,
+ DaycareText_DontLikeOther,
+ DaycareText_PlayOther
+};
+
+const u8 gUnknown_08209AD4[] = _("タマゴ");
u8 *GetMonNick(struct Pokemon *mon, u8 *dest)
{
@@ -23,19 +58,19 @@ u8 *GetBoxMonNick(struct BoxPokemon *mon, u8 *dest)
return StringCopy10(dest, nickname);
}
-u8 Daycare_CountPokemon(struct BoxPokemon *daycare_data)
+u8 Daycare_CountPokemon(struct DayCareData *daycare_data)
{
u8 i, count;
count = 0;
for(i = 0;i <= 1;i++)
- if(GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) != 0)
+ if(GetBoxMonData(&daycare_data->mons[i], MON_DATA_SPECIES) != 0)
count++;
return count;
}
-void sub_8041324(struct BoxPokemon * box_pokemon, struct RecordMixing_UnknownStruct * void_pointer)
+void sub_8041324(struct BoxPokemon * box_pokemon, struct RecordMixingDayCareMail * daycareMailEtc)
{
u8 i;
u8 specCount;
@@ -47,20 +82,20 @@ void sub_8041324(struct BoxPokemon * box_pokemon, struct RecordMixing_UnknownStr
specCount ++;
if (GetBoxMonData(&box_pokemon[i], MON_DATA_HELD_ITEM) == ITEM_NONE)
{
- void_pointer->unk74[i] = 0;
+ daycareMailEtc->unk74[i] = 0;
} else
{
- void_pointer->unk74[i] = 1;
+ daycareMailEtc->unk74[i] = 1;
}
} else
{
- void_pointer->unk74[i] = 1;
+ daycareMailEtc->unk74[i] = 1;
}
}
- void_pointer->unk70 = specCount;
+ daycareMailEtc->unk70 = specCount;
}
-s8 Daycare_FindEmptySpot(struct BoxPokemon * daycare_data)
+static s8 Daycare_FindEmptySpot(struct BoxPokemon * daycare_data)
{
u8 i;
@@ -71,275 +106,108 @@ s8 Daycare_FindEmptySpot(struct BoxPokemon * daycare_data)
return -1;
}
-/*void Daycare_SendPokemon(struct Pokemon * mon, struct BoxPokemon * daycare_data){ // unfinished
+static void Daycare_SendPokemon(struct Pokemon * mon, struct DayCareData * daycare_data)
+{
s8 empty_slot;
+ u8 mail;
+ u8 *names;
- empty_slot = Daycare_FindEmptySpot(daycare_data);
- if(MonHasMail(mon) != 0){ // if the mon holds a mail?
- u8 empty_slot_times_56 = empty_slot * 56;
- u8 * something2 = ((u8 *) (daycare_data + 2)) + empty_slot_times_56 + 36;
- StringCopy(something2, gSaveBlock2.playerName);
- PadNameString(something2, 0xFC);
- something2 += 8;
- GetMonNick(mon, something2);
- u8 pokerus = GetMonData(mon, MON_DATA_64);
- something1 += (u8 * daycare_data)
-}*/
-
-__attribute__((naked))
-void Daycare_SendPokemon()
-{
- // strange stack usage - happens because THUMB ARM only allows R0-R7 to be pushed/popped:
- // all registers in reglist must be Lo registers, except that PUSH can include the LR, and POP can include the PC
- // the ldm/stm section probably copies some struct, but I'm not sure how the code would look
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r9\n\
- mov r6, r8\n\
- push {r6,r7}\n\
- adds r7, r0, 0\n\
- mov r8, r1\n\
- mov r0, r8\n\
- bl Daycare_FindEmptySpot\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- mov r9, r4\n\
- adds r0, r7, 0\n\
- bl MonHasMail\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0804144A\n\
- lsls r0, r4, 24\n\
- asrs r0, 24\n\
- lsls r4, r0, 3\n\
- subs r4, r0\n\
- lsls r4, 3\n\
- adds r5, r4, 0\n\
- adds r5, 0xA0\n\
- add r5, r8\n\
- adds r6, r5, 0\n\
- adds r6, 0x24\n\
- ldr r1, _08041490 @ =gSaveBlock2\n\
- adds r0, r6, 0\n\
- bl StringCopy\n\
- adds r0, r6, 0\n\
- movs r1, 0xFC\n\
- bl PadNameString\n\
- adds r6, 0x8\n\
- adds r0, r7, 0\n\
- adds r1, r6, 0\n\
- bl GetMonNick\n\
- adds r0, r7, 0\n\
- movs r1, 0x40\n\
- bl GetMonData\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- add r4, r8\n\
- ldr r2, _08041494 @ =gSaveBlock1\n\
- lsls r1, r0, 3\n\
- adds r1, r0\n\
- lsls r1, 2\n\
- adds r1, r2\n\
- adds r4, 0xA0\n\
- ldr r0, _08041498 @ =0x00002b4c\n\
- adds r1, r0\n\
- ldm r1!, {r0,r2,r3}\n\
- stm r4!, {r0,r2,r3}\n\
- ldm r1!, {r0,r2,r3}\n\
- stm r4!, {r0,r2,r3}\n\
- ldm r1!, {r0,r2,r3}\n\
- stm r4!, {r0,r2,r3}\n\
- adds r0, r7, 0\n\
- bl TakeMailFromMon\n\
-_0804144A:\n\
- mov r2, r9\n\
- lsls r4, r2, 24\n\
- asrs r4, 24\n\
- lsls r5, r4, 2\n\
- adds r4, r5, r4\n\
- lsls r4, 4\n\
- add r4, r8\n\
- adds r0, r4, 0\n\
- adds r1, r7, 0\n\
- movs r2, 0x50\n\
- bl memcpy\n\
- adds r0, r4, 0\n\
- bl BoxMonRestorePP\n\
- movs r0, 0x88\n\
- lsls r0, 1\n\
- add r0, r8\n\
- adds r0, r5\n\
- movs r1, 0\n\
- str r1, [r0]\n\
- adds r0, r7, 0\n\
- bl ZeroMonData\n\
- bl party_compaction\n\
- bl CalculatePlayerPartyCount\n\
- pop {r3,r4}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_08041490: .4byte gSaveBlock2\n\
-_08041494: .4byte gSaveBlock1\n\
-_08041498: .4byte 0x00002b4c\n\
- .syntax divided\n");
+ empty_slot = Daycare_FindEmptySpot(daycare_data->mons);
+ if(MonHasMail(mon)) {
+ StringCopy((names = daycare_data->misc.mail[empty_slot].names), gSaveBlock2.playerName);
+ PadNameString(names, 0xFC);
+ names += 8;
+ GetMonNick(mon, names);
+ mail = GetMonData(mon, MON_DATA_MAIL);
+ daycare_data->misc.mail[empty_slot].message = gSaveBlock1.mail[mail];
+ TakeMailFromMon(mon);
+ }
+ daycare_data->mons[empty_slot] = mon->box;
+ BoxMonRestorePP(&daycare_data->mons[empty_slot]);
+ daycare_data->misc.countersEtc.steps[empty_slot] = 0;
+ ZeroMonData(mon);
+ party_compaction();
+ CalculatePlayerPartyCount();
}
void Daycare_SendPokemon_Special()
{
- Daycare_SendPokemon(gPlayerParty + gLastFieldPokeMenuOpened, gSaveBlock1.daycareData);
+ Daycare_SendPokemon(gPlayerParty + gLastFieldPokeMenuOpened, &gSaveBlock1.daycareData);
}
-void sub_80417F4(u8 *);
-
-void sub_80414C0(struct BoxPokemon * daycare_data)
+static void sub_80414C0(struct DayCareData * daycare_data)
{
- u32 second_species;
- if((GetBoxMonData(&daycare_data[1], MON_DATA_SPECIES) != 0) && ((second_species = GetBoxMonData(&daycare_data[0], MON_DATA_SPECIES)) == 0)){
- daycare_data[0] = daycare_data[1];
- ZeroBoxMonData(&daycare_data[1]);
- memcpy(daycare_data + 2, (u8 *) (daycare_data + 1) + 0x88, 0x38);
- *((u32 *)(daycare_data) + 68) = *((u32 *)(daycare_data) + 69);
- *((u32 *)(daycare_data) + 69) = second_species;
- sub_80417F4((u8 *) (daycare_data + 1) + 0x88);
+ if((GetBoxMonData(&daycare_data->mons[1], MON_DATA_SPECIES) != 0) && GetBoxMonData(&daycare_data->mons[0], MON_DATA_SPECIES) == 0)
+ {
+ daycare_data->mons[0] = daycare_data->mons[1];
+ ZeroBoxMonData(&daycare_data->mons[1]);
+ daycare_data->misc.mail[0] = daycare_data->misc.mail[1];
+ daycare_data->misc.countersEtc.steps[0] = daycare_data->misc.countersEtc.steps[1];
+ daycare_data->misc.countersEtc.steps[1] = 0;
+ sub_80417F4(&daycare_data->misc.mail[1]);
}
}
u8 TryIncrementMonLevel(struct Pokemon *);
-extern u16 word_2024E82;
+extern u16 gMoveToLearn;
-void sub_804151C(struct Pokemon * mon)
+static void DayCare_LevelUpMoves(struct Pokemon * mon)
{
s32 i;
u8 r6;
u16 temp;
- for(i = 0; i < 100; i++){
- if(TryIncrementMonLevel(mon) == FALSE) goto end;
-
- r6 = 1;
- while((temp = sub_803B7C8(mon, r6)) != 0){
- r6 = 0;
- if(temp == 0xffff){
- DeleteFirstMoveAndGiveMoveToMon(mon, word_2024E82);
+ for (i = 0; i < MAX_LEVEL; i++)
+ {
+ if (TryIncrementMonLevel(mon))
+ {
+ r6 = 1;
+ while ((temp = MonTryLearningNewMove(mon, r6)) != 0)
+ {
+ r6 = 0;
+ if (temp == 0xffff)
+ DeleteFirstMoveAndGiveMoveToMon(mon, gMoveToLearn);
}
}
+ else
+ break;
}
- end:
-
CalculateMonStats(mon);
}
-__attribute__((naked))
-u16 sub_8041570(struct BoxPokemon * daycare_data, u8 a2){
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r9\n\
- mov r6, r8\n\
- push {r6,r7}\n\
- sub sp, 0x68\n\
- adds r5, r0, 0\n\
- lsls r1, 24\n\
- lsrs r4, r1, 24\n\
- lsls r7, r4, 2\n\
- adds r0, r7, r4\n\
- lsls r0, 4\n\
- adds r6, r5, r0\n\
- ldr r1, _08041640 @ =gStringVar1\n\
- adds r0, r6, 0\n\
- bl GetBoxMonNick\n\
- adds r0, r6, 0\n\
- movs r1, 0xB\n\
- bl GetBoxMonData\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r9, r0\n\
- adds r0, r6, 0\n\
- mov r1, sp\n\
- bl sub_803B4B4\n\
- mov r0, sp\n\
- movs r1, 0x38\n\
- bl GetMonData\n\
- cmp r0, 0x64\n\
- beq _080415D8\n\
- mov r0, sp\n\
- movs r1, 0x19\n\
- bl GetMonData\n\
- movs r2, 0x88\n\
- lsls r2, 1\n\
- adds r1, r5, r2\n\
- adds r1, r7\n\
- ldr r1, [r1]\n\
- adds r0, r1\n\
- str r0, [sp, 0x64]\n\
- add r2, sp, 0x64\n\
- mov r0, sp\n\
- movs r1, 0x19\n\
- bl SetMonData\n\
- mov r0, sp\n\
- bl sub_804151C\n\
-_080415D8:\n\
- ldr r0, _08041644 @ =gPlayerParty\n\
- movs r1, 0xFA\n\
- lsls r1, 1\n\
- adds r1, r0\n\
- mov r8, r1\n\
- mov r0, r8\n\
- mov r1, sp\n\
- movs r2, 0x64\n\
- bl memcpy\n\
- lsls r0, r4, 3\n\
- subs r0, r4\n\
- lsls r1, r0, 3\n\
- adds r0, r5, r1\n\
- adds r0, 0xC0\n\
- ldrh r0, [r0]\n\
- cmp r0, 0\n\
- beq _08041610\n\
- adds r4, r1, 0\n\
- adds r4, 0xA0\n\
- adds r4, r5, r4\n\
- mov r0, r8\n\
- adds r1, r4, 0\n\
- bl GiveMailToMon2\n\
- adds r0, r4, 0\n\
- bl sub_80417F4\n\
-_08041610:\n\
- bl party_compaction\n\
- adds r0, r6, 0\n\
- bl ZeroBoxMonData\n\
- movs r2, 0x88\n\
- lsls r2, 1\n\
- adds r0, r5, r2\n\
- adds r0, r7\n\
- movs r1, 0\n\
- str r1, [r0]\n\
- adds r0, r5, 0\n\
- bl sub_80414C0\n\
- bl CalculatePlayerPartyCount\n\
- mov r0, r9\n\
- add sp, 0x68\n\
- pop {r3,r4}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
-_08041640: .4byte gStringVar1\n\
-_08041644: .4byte gPlayerParty\n\
- .syntax divided");
-}
-
-extern u8 gSpecialVar_0x8004;
+static u16 sub_8041570(struct DayCareData * daycare_data, u8 slot)
+{
+ u16 species;
+ u32 experience;
+ struct Pokemon pokemon;
+
+ GetBoxMonNick(&daycare_data->mons[slot], gStringVar1);
+ species = GetBoxMonData(&daycare_data->mons[slot], MON_DATA_SPECIES);
+ sub_803B4B4(&daycare_data->mons[slot], &pokemon);
+ if (GetMonData(&pokemon, MON_DATA_LEVEL) != MAX_LEVEL)
+ {
+ experience = GetMonData(&pokemon, MON_DATA_EXP) + daycare_data->misc.countersEtc.steps[slot];
+ SetMonData(&pokemon, MON_DATA_EXP, (u8 *)&experience);
+ DayCare_LevelUpMoves(&pokemon);
+ }
+ gPlayerParty[PARTY_SIZE - 1] = pokemon;
+ if (daycare_data->misc.mail[slot].message.itemId)
+ {
+ GiveMailToMon2(&gPlayerParty[PARTY_SIZE - 1], &daycare_data->misc.mail[slot].message);
+ sub_80417F4(&daycare_data->misc.mail[slot]);
+ }
+ party_compaction();
+ ZeroBoxMonData(&daycare_data->mons[slot]);
+ daycare_data->misc.countersEtc.steps[slot] = 0;
+ sub_80414C0(daycare_data);
+ CalculatePlayerPartyCount();
+ return species;
+}
u16 sub_8041648()
{
- return sub_8041570(gSaveBlock1.daycareData, gSpecialVar_0x8004);
+ return sub_8041570(&gSaveBlock1.daycareData, gSpecialVar_0x8004);
}
u8 Daycare_GetLevelAfterSteps(struct BoxPokemon * mon, u32 steps){
@@ -348,3 +216,1475 @@ u8 Daycare_GetLevelAfterSteps(struct BoxPokemon * mon, u32 steps){
SetBoxMonData(&temp, MON_DATA_EXP, (u8 *) &new_exp);
return GetLevelFromBoxMonExp(&temp);
}
+
+static u8 sub_80416A0(struct DayCareData *daycareData, u8 slot)
+{
+ u8 levelBefore;
+ u8 levelAfter;
+
+ levelBefore = GetLevelFromBoxMonExp(&daycareData->mons[slot]);
+ levelAfter = Daycare_GetLevelAfterSteps(&daycareData->mons[slot], daycareData->misc.countersEtc.steps[slot]);
+ return levelAfter - levelBefore;
+}
+
+static u8 sub_80416E8(struct DayCareData *dayCareData, u8 slot)
+{
+ u8 levelDelta = sub_80416A0(dayCareData, slot);
+ GetBoxMonNick(&dayCareData->mons[slot], gStringVar1);
+ ConvertIntToDecimalStringN(gStringVar2, levelDelta, STR_CONV_MODE_LEFT_ALIGN, 2);
+ return levelDelta;
+}
+
+static u16 sub_8041728(struct DayCareData *dayCareData, u8 slot)
+{
+ u16 cost;
+
+ u8 levelDelta = sub_80416A0(dayCareData, slot);
+ GetBoxMonNick(&dayCareData->mons[slot], gStringVar1);
+ cost = 100 + 100 * levelDelta;
+ ConvertIntToDecimalStringN(gStringVar2, cost, STR_CONV_MODE_LEFT_ALIGN, 5);
+ return cost;
+}
+
+void sub_8041770(void)
+{
+ gSpecialVar_0x8005 = sub_8041728(&gSaveBlock1.daycareData, gSpecialVar_0x8004);
+}
+
+void sub_8041790(u16 i)
+{
+ gSaveBlock1.daycareData.misc.countersEtc.steps[0] += i;
+ gSaveBlock1.daycareData.misc.countersEtc.steps[1] += i;
+}
+
+u8 sub_80417B8(void)
+{
+ if (GetBoxMonData(&gSaveBlock1.daycareData.mons[gSpecialVar_0x8004], MON_DATA_SPECIES) != 0)
+ return sub_80416E8(&gSaveBlock1.daycareData, gSpecialVar_0x8004);
+ return 0;
+}
+
+static void sub_80417F4(struct DayCareMail *mail)
+{
+ u8 zero;
+ u8 *names;
+ u8 *names2;
+ int i;
+ zero = 0;
+ for (i = 7, names = mail->names + 7; i >= 0; i --)
+ *names-- = zero;
+ names2 = mail->names + 8;
+ zero = 0;
+ names = mail->names + 18;
+ do *names-- = zero; while ((int)names >= (int)names2);
+ ClearMailStruct(&mail->message);
+}
+
+void unref_sub_8041824(struct DayCareData *dayCareData)
+{
+ u8 slot;
+ for (slot = 0; slot < ARRAY_COUNT(dayCareData->mons); slot ++)
+ {
+ ZeroBoxMonData(&dayCareData->mons[slot]);
+ dayCareData->misc.countersEtc.steps[slot] = 0;
+ sub_80417F4(&dayCareData->misc.mail[slot]);
+ }
+ dayCareData->misc.countersEtc.personalityLo = 0;
+ dayCareData->misc.countersEtc.unk_11a = 0;
+}
+
+u16 sub_8041870(u16 species)
+{
+ int i, j, k;
+ bool8 found;
+ for (i = 0; i < 5; i ++)
+ {
+ found = FALSE;
+ for (j = 1; j < NUM_SPECIES; j ++)
+ {
+ for (k = 0; k < 5; k ++)
+ {
+ if (gEvolutionTable[j].evolutions[k].targetSpecies == species)
+ {
+ species = j;
+ found = TRUE;
+ break;
+ }
+ }
+ if (found)
+ break;
+ }
+ if (j == 412)
+ break;
+ }
+ return species;
+}
+
+static void sub_80418F0(struct DayCareData *dayCareData)
+{
+ dayCareData->misc.countersEtc.personalityLo = (Random() % 0xfffe) + 1;
+ FlagSet(0x86);
+}
+
+static void sub_804191C(struct DayCareData *dayCareData)
+{
+ dayCareData->misc.countersEtc.personalityLo = Random() | 0x8000;
+ FlagSet(0x86);
+}
+
+void sub_8041940(void)
+{
+ sub_80418F0(&gSaveBlock1.daycareData);
+}
+
+void sub_8041950(void)
+{
+ sub_804191C(&gSaveBlock1.daycareData);
+}
+
+static void sub_8041960(u8 *data, u8 idx)
+{
+ int i, j;
+ u8 temp[6];
+ data[idx] = 0xff;
+ for (i = 0; i < 6; i ++)
+ temp[i] = data[i];
+ j = 0;
+ for (i = 0; i < 6; i ++)
+ if (temp[i] != 0xff)
+ data[j++] = temp[i];
+}
+
+static void InheritIVs(struct Pokemon *egg, struct DayCareData *dayCareData)
+{
+ u8 i;
+ u8 selectedIvs[3];
+ u8 allIvs[6];
+ u8 whichParent[3];
+ u8 iv;
+ for (i = 0; i < 6; i ++)
+ allIvs[i] = i;
+ for (i = 0; i < 3; i ++)
+ {
+ selectedIvs[i] = allIvs[Random() % (6 - i)];
+ sub_8041960(allIvs, selectedIvs[i]);
+ }
+ for (i = 0; i < 3; i ++)
+ whichParent[i] = Random() % 2;
+ for (i = 0; i < 3; i ++)
+ {
+ switch (selectedIvs[i])
+ {
+ case 0:
+ iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_HP_IV);
+ SetMonData(egg, MON_DATA_HP_IV, &iv);
+ break;
+ case 1:
+ iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_ATK_IV);
+ SetMonData(egg, MON_DATA_ATK_IV, &iv);
+ break;
+ case 2:
+ iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_DEF_IV);
+ SetMonData(egg, MON_DATA_DEF_IV, &iv);
+ break;
+ case 3:
+ iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_SPD_IV);
+ SetMonData(egg, MON_DATA_SPD_IV, &iv);
+ break;
+ case 4:
+ iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_SPATK_IV);
+ SetMonData(egg, MON_DATA_SPATK_IV, &iv);
+ break;
+ case 5:
+ iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_SPDEF_IV);
+ SetMonData(egg, MON_DATA_SPDEF_IV, &iv);
+ break;
+ }
+ }
+}
+
+#ifdef NONMATCHING
+static
+#endif
+u8 pokemon_get_eggmoves(struct Pokemon *pokemon, u16 *eggMoves)
+{
+ u16 eggMoveIdx;
+ u16 numMovesFound;
+ u16 species;
+ u16 i;
+
+ numMovesFound = 0;
+ eggMoveIdx = 0;
+ species = GetMonData(pokemon, MON_DATA_SPECIES);
+ for (i = 0; i < ARRAY_COUNT(gEggMoves) - 1; i ++)
+ {
+ if (gEggMoves[i] == species + EGG_MOVES_SPECIES_OFFSET)
+ {
+ eggMoveIdx = i + 1;
+ break;
+ }
+ }
+ for (i = 0; i < 10; i ++)
+ {
+ if (gEggMoves[eggMoveIdx + i] > EGG_MOVES_SPECIES_OFFSET)
+ {
+ break;
+ }
+ eggMoves[i] = gEggMoves[eggMoveIdx + i];
+ numMovesFound++;
+ }
+ return numMovesFound;
+}
+
+#ifdef NONMATCHING
+
+void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, struct BoxPokemon *mom)
+{
+ u16 numSharedParentMoves;
+ u8 numLevelUpMoves;
+ u8 numEggMoves;
+ u16 i, j;
+
+ numSharedParentMoves = 0;
+ for (i = 0; i < 4; i ++)
+ {
+ gUnknown_03000500[i] = 0;
+ gUnknown_030004D8[i] = 0;
+ gUnknown_030004E0[i] = 0;
+ }
+ for (i = 0; i < 10; i ++)
+ gUnknown_030004E8[i] = 0;
+ for (i = 0; i < 50; i ++)
+ gUnknown_03000470[i] = 0;
+
+ numLevelUpMoves = GetLevelUpMovesBySpecies(GetMonData(egg, MON_DATA_SPECIES), gUnknown_03000470);
+ for (i = 0; i < 4; i ++)
+ {
+ gUnknown_030004D8[i] = GetBoxMonData(dad, MON_DATA_MOVE1 + i);
+ gUnknown_03000500[i] = GetBoxMonData(mom, MON_DATA_MOVE1 + i);
+ }
+ numEggMoves = pokemon_get_eggmoves(egg, gUnknown_030004E8);
+
+ for (i = 0; i < 4; i ++)
+ {
+ if (gUnknown_030004D8[i] != MOVE_NONE)
+ {
+ for (j = 0; j < numEggMoves; j ++)
+ {
+ if (gUnknown_030004D8[i] == gUnknown_030004E8[j])
+ {
+ if (GiveMoveToMon(egg, gUnknown_030004D8[i]) == 0xffff)
+ DeleteFirstMoveAndGiveMoveToMon(egg, gUnknown_030004D8[i]);
+ break;
+ }
+ }
+ }
+ else
+ break;
+ }
+ for (i = 0; i < 4; i ++)
+ {
+ if (gUnknown_030004D8[i] != MOVE_NONE)
+ {
+ for (j = 0; j < 50 + 8; j ++)
+ {
+ if (gUnknown_030004D8[i] == ItemIdToBattleMoveId(ITEM_TM01 + j) && CanMonLearnTMHM(egg, j))
+ {
+ if (GiveMoveToMon(egg, gUnknown_030004D8[i]) == 0xffff)
+ DeleteFirstMoveAndGiveMoveToMon(egg, gUnknown_030004D8[i]);
+ }
+ }
+ }
+ }
+ for (i = 0; i < 4; i ++)
+ {
+ if (gUnknown_030004D8[i] == MOVE_NONE)
+ break;
+ for (j = 0; j < 4; j ++)
+ {
+ if (gUnknown_030004D8[i] == gUnknown_03000500[j] && gUnknown_030004D8[i] != MOVE_NONE)
+ gUnknown_030004E0[numSharedParentMoves++] = gUnknown_030004D8[i];
+ }
+ }
+ for (i = 0; i < 4; i ++)
+ {
+ if (gUnknown_030004E0[i] == MOVE_NONE)
+ break;
+ for (j = 0; j < numLevelUpMoves; j ++)
+ {
+ if (gUnknown_03000470[j] != MOVE_NONE && gUnknown_030004E0[i] == gUnknown_03000470[j])
+ {
+ if (GiveMoveToMon(egg, gUnknown_030004E0[i]) == 0xffff)
+ DeleteFirstMoveAndGiveMoveToMon(egg, gUnknown_030004E0[i]);
+ break;
+ }
+ }
+ }
+}
+#else
+__attribute__((naked))
+void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, struct BoxPokemon *mom)
+{
+ 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, 0xC\n"
+ "\tadds r7, r0, 0\n"
+ "\tmov r10, r1\n"
+ "\tmov r9, r2\n"
+ "\tmovs r0, 0\n"
+ "\tstr r0, [sp]\n"
+ "\tmovs r6, 0\n"
+ "\tldr r5, _08041CC8 @ =gUnknown_03000500\n"
+ "\tmovs r2, 0\n"
+ "\tldr r4, _08041CCC @ =gUnknown_030004D8\n"
+ "\tldr r3, _08041CD0 @ =gUnknown_030004E0\n"
+ "_08041BE4:\n"
+ "\tlsls r1, r6, 1\n"
+ "\tadds r0, r1, r5\n"
+ "\tstrh r2, [r0]\n"
+ "\tadds r0, r1, r4\n"
+ "\tstrh r2, [r0]\n"
+ "\tadds r1, r3\n"
+ "\tstrh r2, [r1]\n"
+ "\tadds r0, r6, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r6, r0, 16\n"
+ "\tcmp r6, 0x3\n"
+ "\tbls _08041BE4\n"
+ "\tmovs r6, 0\n"
+ "\tldr r2, _08041CD4 @ =gUnknown_030004E8\n"
+ "\tmovs r1, 0\n"
+ "_08041C02:\n"
+ "\tlsls r0, r6, 1\n"
+ "\tadds r0, r2\n"
+ "\tstrh r1, [r0]\n"
+ "\tadds r0, r6, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r6, r0, 16\n"
+ "\tcmp r6, 0x9\n"
+ "\tbls _08041C02\n"
+ "\tmovs r6, 0\n"
+ "\tldr r2, _08041CD8 @ =gUnknown_03000470\n"
+ "\tmovs r1, 0\n"
+ "_08041C18:\n"
+ "\tlsls r0, r6, 1\n"
+ "\tadds r0, r2\n"
+ "\tstrh r1, [r0]\n"
+ "\tadds r0, r6, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r6, r0, 16\n"
+ "\tcmp r6, 0x31\n"
+ "\tbls _08041C18\n"
+ "\tadds r0, r7, 0\n"
+ "\tmovs r1, 0xB\n"
+ "\tbl GetMonData\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tldr r1, _08041CD8 @ =gUnknown_03000470\n"
+ "\tbl GetLevelUpMovesBySpecies\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tstr r0, [sp, 0x4]\n"
+ "\tmovs r6, 0\n"
+ "\tldr r1, _08041CCC @ =gUnknown_030004D8\n"
+ "\tmov r8, r1\n"
+ "_08041C46:\n"
+ "\tadds r5, r6, 0\n"
+ "\tadds r5, 0xD\n"
+ "\tmov r0, r10\n"
+ "\tadds r1, r5, 0\n"
+ "\tbl GetBoxMonData\n"
+ "\tlsls r4, r6, 1\n"
+ "\tmov r2, r8\n"
+ "\tadds r1, r4, r2\n"
+ "\tstrh r0, [r1]\n"
+ "\tmov r0, r9\n"
+ "\tadds r1, r5, 0\n"
+ "\tbl GetBoxMonData\n"
+ "\tldr r1, _08041CC8 @ =gUnknown_03000500\n"
+ "\tadds r4, r1\n"
+ "\tstrh r0, [r4]\n"
+ "\tadds r0, r6, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r6, r0, 16\n"
+ "\tcmp r6, 0x3\n"
+ "\tbls _08041C46\n"
+ "\tldr r1, _08041CD4 @ =gUnknown_030004E8\n"
+ "\tadds r0, r7, 0\n"
+ "\tbl pokemon_get_eggmoves\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tmov r8, r0\n"
+ "\tmovs r6, 0\n"
+ "_08041C82:\n"
+ "\tldr r0, _08041CCC @ =gUnknown_030004D8\n"
+ "\tlsls r1, r6, 1\n"
+ "\tadds r2, r1, r0\n"
+ "\tldrh r1, [r2]\n"
+ "\tmov r9, r0\n"
+ "\tcmp r1, 0\n"
+ "\tbeq _08041CF8\n"
+ "\tmovs r5, 0\n"
+ "\tcmp r5, r8\n"
+ "\tbcs _08041CEA\n"
+ "\tadds r4, r2, 0\n"
+ "\tldr r2, _08041CDC @ =0x0000ffff\n"
+ "_08041C9A:\n"
+ "\tldr r0, _08041CD4 @ =gUnknown_030004E8\n"
+ "\tlsls r1, r5, 1\n"
+ "\tadds r1, r0\n"
+ "\tldrh r0, [r4]\n"
+ "\tldrh r1, [r1]\n"
+ "\tcmp r0, r1\n"
+ "\tbne _08041CE0\n"
+ "\tadds r1, r0, 0\n"
+ "\tadds r0, r7, 0\n"
+ "\tstr r2, [sp, 0x8]\n"
+ "\tbl GiveMoveToMon\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tldr r2, [sp, 0x8]\n"
+ "\tcmp r0, r2\n"
+ "\tbne _08041CEA\n"
+ "\tldrh r1, [r4]\n"
+ "\tadds r0, r7, 0\n"
+ "\tbl DeleteFirstMoveAndGiveMoveToMon\n"
+ "\tb _08041CEA\n"
+ "\t.align 2, 0\n"
+ "_08041CC8: .4byte gUnknown_03000500\n"
+ "_08041CCC: .4byte gUnknown_030004D8\n"
+ "_08041CD0: .4byte gUnknown_030004E0\n"
+ "_08041CD4: .4byte gUnknown_030004E8\n"
+ "_08041CD8: .4byte gUnknown_03000470\n"
+ "_08041CDC: .4byte 0x0000ffff\n"
+ "_08041CE0:\n"
+ "\tadds r0, r5, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r5, r0, 16\n"
+ "\tcmp r5, r8\n"
+ "\tbcc _08041C9A\n"
+ "_08041CEA:\n"
+ "\tadds r0, r6, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r6, r0, 16\n"
+ "\tldr r3, _08041E14 @ =gUnknown_030004D8\n"
+ "\tmov r9, r3\n"
+ "\tcmp r6, 0x3\n"
+ "\tbls _08041C82\n"
+ "_08041CF8:\n"
+ "\tmovs r6, 0\n"
+ "_08041CFA:\n"
+ "\tlsls r0, r6, 1\n"
+ "\tmov r2, r9\n"
+ "\tadds r1, r0, r2\n"
+ "\tldrh r1, [r1]\n"
+ "\tadds r2, r0, 0\n"
+ "\tadds r6, 0x1\n"
+ "\tmov r8, r6\n"
+ "\tcmp r1, 0\n"
+ "\tbeq _08041D5C\n"
+ "\tmovs r5, 0\n"
+ "\tldr r0, _08041E14 @ =gUnknown_030004D8\n"
+ "\tadds r4, r2, r0\n"
+ "\tldr r6, _08041E18 @ =0x0000ffff\n"
+ "\tmov r9, r0\n"
+ "_08041D16:\n"
+ "\tldr r3, _08041E1C @ =0x00000121\n"
+ "\tadds r0, r5, r3\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tbl ItemIdToBattleMoveId\n"
+ "\tldrh r1, [r4]\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tcmp r1, r0\n"
+ "\tbne _08041D52\n"
+ "\tlsls r1, r5, 24\n"
+ "\tlsrs r1, 24\n"
+ "\tadds r0, r7, 0\n"
+ "\tbl CanMonLearnTMHM\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08041D52\n"
+ "\tldrh r1, [r4]\n"
+ "\tadds r0, r7, 0\n"
+ "\tbl GiveMoveToMon\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tcmp r0, r6\n"
+ "\tbne _08041D52\n"
+ "\tldrh r1, [r4]\n"
+ "\tadds r0, r7, 0\n"
+ "\tbl DeleteFirstMoveAndGiveMoveToMon\n"
+ "_08041D52:\n"
+ "\tadds r0, r5, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r5, r0, 16\n"
+ "\tcmp r5, 0x39\n"
+ "\tbls _08041D16\n"
+ "_08041D5C:\n"
+ "\tmov r1, r8\n"
+ "\tlsls r0, r1, 16\n"
+ "\tlsrs r6, r0, 16\n"
+ "\tcmp r6, 0x3\n"
+ "\tbls _08041CFA\n"
+ "\tmovs r6, 0\n"
+ "\tmov r2, r9\n"
+ "\tldrh r0, [r2]\n"
+ "\tldr r3, _08041E20 @ =gUnknown_030004E0\n"
+ "\tmov r10, r3\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08041DC6\n"
+ "\tmov r4, r9\n"
+ "\tldr r0, _08041E24 @ =gUnknown_03000500\n"
+ "\tmov r9, r0\n"
+ "\tmov r12, r10\n"
+ "_08041D7C:\n"
+ "\tmovs r5, 0\n"
+ "\tlsls r2, r6, 1\n"
+ "\tadds r6, 0x1\n"
+ "\tmov r8, r6\n"
+ "\tadds r3, r2, r4\n"
+ "_08041D86:\n"
+ "\tlsls r0, r5, 1\n"
+ "\tadd r0, r9\n"
+ "\tldrh r2, [r3]\n"
+ "\tadds r1, r2, 0\n"
+ "\tldrh r0, [r0]\n"
+ "\tcmp r1, r0\n"
+ "\tbne _08041DA8\n"
+ "\tcmp r1, 0\n"
+ "\tbeq _08041DA8\n"
+ "\tldr r1, [sp]\n"
+ "\tadds r0, r1, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tstr r0, [sp]\n"
+ "\tlsls r1, 1\n"
+ "\tadd r1, r12\n"
+ "\tstrh r2, [r1]\n"
+ "_08041DA8:\n"
+ "\tadds r0, r5, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r5, r0, 16\n"
+ "\tcmp r5, 0x3\n"
+ "\tbls _08041D86\n"
+ "\tmov r1, r8\n"
+ "\tlsls r0, r1, 16\n"
+ "\tlsrs r6, r0, 16\n"
+ "\tcmp r6, 0x3\n"
+ "\tbhi _08041DC6\n"
+ "\tlsls r0, r6, 1\n"
+ "\tadds r0, r4\n"
+ "\tldrh r0, [r0]\n"
+ "\tcmp r0, 0\n"
+ "\tbne _08041D7C\n"
+ "_08041DC6:\n"
+ "\tmovs r6, 0\n"
+ "\tmov r2, r10\n"
+ "\tldrh r0, [r2]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08041E50\n"
+ "_08041DD0:\n"
+ "\tmovs r5, 0\n"
+ "\tadds r3, r6, 0x1\n"
+ "\tmov r8, r3\n"
+ "\tldr r0, [sp, 0x4]\n"
+ "\tcmp r5, r0\n"
+ "\tbcs _08041E38\n"
+ "\tldr r2, _08041E18 @ =0x0000ffff\n"
+ "_08041DDE:\n"
+ "\tldr r1, _08041E28 @ =gUnknown_03000470\n"
+ "\tlsls r0, r5, 1\n"
+ "\tadds r0, r1\n"
+ "\tldrh r1, [r0]\n"
+ "\tcmp r1, 0\n"
+ "\tbeq _08041E2C\n"
+ "\tlsls r0, r6, 1\n"
+ "\tmov r3, r10\n"
+ "\tadds r4, r0, r3\n"
+ "\tldrh r0, [r4]\n"
+ "\tcmp r0, r1\n"
+ "\tbne _08041E2C\n"
+ "\tadds r1, r0, 0\n"
+ "\tadds r0, r7, 0\n"
+ "\tstr r2, [sp, 0x8]\n"
+ "\tbl GiveMoveToMon\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tldr r2, [sp, 0x8]\n"
+ "\tcmp r0, r2\n"
+ "\tbne _08041E38\n"
+ "\tldrh r1, [r4]\n"
+ "\tadds r0, r7, 0\n"
+ "\tbl DeleteFirstMoveAndGiveMoveToMon\n"
+ "\tb _08041E38\n"
+ "\t.align 2, 0\n"
+ "_08041E14: .4byte gUnknown_030004D8\n"
+ "_08041E18: .4byte 0x0000ffff\n"
+ "_08041E1C: .4byte 0x00000121\n"
+ "_08041E20: .4byte gUnknown_030004E0\n"
+ "_08041E24: .4byte gUnknown_03000500\n"
+ "_08041E28: .4byte gUnknown_03000470\n"
+ "_08041E2C:\n"
+ "\tadds r0, r5, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r5, r0, 16\n"
+ "\tldr r0, [sp, 0x4]\n"
+ "\tcmp r5, r0\n"
+ "\tbcc _08041DDE\n"
+ "_08041E38:\n"
+ "\tmov r1, r8\n"
+ "\tlsls r0, r1, 16\n"
+ "\tlsrs r6, r0, 16\n"
+ "\tcmp r6, 0x3\n"
+ "\tbhi _08041E50\n"
+ "\tldr r0, _08041E60 @ =gUnknown_030004E0\n"
+ "\tlsls r1, r6, 1\n"
+ "\tadds r1, r0\n"
+ "\tldrh r1, [r1]\n"
+ "\tmov r10, r0\n"
+ "\tcmp r1, 0\n"
+ "\tbne _08041DD0\n"
+ "_08041E50:\n"
+ "\tadd sp, 0xC\n"
+ "\tpop {r3-r5}\n"
+ "\tmov r8, r3\n"
+ "\tmov r9, r4\n"
+ "\tmov r10, r5\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.align 2, 0\n"
+ "_08041E60: .4byte gUnknown_030004E0");
+}
+#endif
+
+static void RemoveEggFromDayCare(struct DayCareData *dayCareData)
+{
+ dayCareData->misc.countersEtc.personalityLo = 0;
+ dayCareData->misc.countersEtc.unk_11a = 0;
+}
+
+void sub_8041E7C(void)
+{
+ RemoveEggFromDayCare(&gSaveBlock1.daycareData);
+}
+
+static void incense_effects(u16 *species, struct DayCareData *dayCareData)
+{
+ u16 momItem, dadItem;
+ if (*species == SPECIES_WYNAUT || *species == SPECIES_AZURILL)
+ {
+ momItem = GetBoxMonData(&dayCareData->mons[0], MON_DATA_HELD_ITEM);
+ dadItem = GetBoxMonData(&dayCareData->mons[1], MON_DATA_HELD_ITEM);
+ if (*species == SPECIES_WYNAUT && momItem != ITEM_LAX_INCENSE && dadItem != ITEM_LAX_INCENSE)
+ {
+ *species = SPECIES_WOBBUFFET;
+ }
+ if (*species == SPECIES_AZURILL && momItem != ITEM_SEA_INCENSE && dadItem != ITEM_SEA_INCENSE)
+ {
+ *species = SPECIES_MARILL;
+ }
+ }
+}
+
+static u16 sub_8041EEC(struct DayCareData *dayCareData, u8 *a1) // inherit_species_from_mom
+{
+ u16 i;
+ u16 species[2];
+ u16 eggSpecies;
+ u8 buffer;
+ for (i=0; i<2; i++)
+ {
+ species[i] = GetBoxMonData(&dayCareData->mons[i], MON_DATA_SPECIES);
+ if (species[i] == SPECIES_DITTO)
+ {
+ a1[0] = i ^ 1;
+ a1[1] = i;
+ }
+ else if (GetBoxMonGender(&dayCareData->mons[i]) == MON_FEMALE)
+ {
+ a1[0] = i;
+ a1[1] = i ^ 1;
+ }
+ }
+ eggSpecies = sub_8041870(species[a1[0]]);
+ if (eggSpecies == SPECIES_NIDORAN_F && dayCareData->misc.countersEtc.personalityLo & 0x8000)
+ {
+ eggSpecies = SPECIES_NIDORAN_M;
+ }
+ if (eggSpecies == SPECIES_ILLUMISE && dayCareData->misc.countersEtc.personalityLo & 0x8000)
+ {
+ eggSpecies = SPECIES_VOLBEAT;
+ }
+ if (species[a1[1]] == SPECIES_DITTO && GetBoxMonGender(&dayCareData->mons[a1[0]]) != MON_FEMALE)
+ {
+ buffer = a1[1];
+ a1[1] = a1[0];
+ a1[0] = buffer;
+ }
+ return eggSpecies;
+}
+
+static void sub_8041FC4(struct DayCareData *dayCareData) // give_egg
+{
+ struct Pokemon egg;
+ u16 species;
+ u8 parents[2];
+ u8 isEgg;
+ species = sub_8041EEC(dayCareData, parents);
+ incense_effects(&species, dayCareData);
+ sub_80420FC(&egg, species, dayCareData);
+ InheritIVs(&egg, dayCareData);
+ daycare_build_child_moveset(&egg, &dayCareData->mons[parents[1]], &dayCareData->mons[parents[0]]);
+ isEgg = TRUE;
+ SetMonData(&egg, MON_DATA_IS_EGG, &isEgg);
+ gPlayerParty[5] = egg;
+ party_compaction();
+ CalculatePlayerPartyCount();
+ RemoveEggFromDayCare(dayCareData);
+}
+
+
+void sub_8042044(struct Pokemon *mon, u16 species, u8 overwriteMetLocation) // scr_create_egg
+{
+ u8 metLevel;
+ u16 ball;
+ u8 language;
+ u8 metLocation;
+ u8 isEgg;
+ CreateMon(mon, species, 5, 0x20, FALSE, 0, FALSE, 0);
+ metLevel = 0;
+ ball = ITEM_POKE_BALL;
+ language = LANGUAGE_JAPANESE;
+ SetMonData(mon, MON_DATA_POKEBALL, (u8 *)&ball);
+ SetMonData(mon, MON_DATA_NICKNAME, gUnknown_08209AD4);
+ SetMonData(mon, MON_DATA_FRIENDSHIP, &gBaseStats[species].eggCycles);
+ SetMonData(mon, MON_DATA_MET_LEVEL, &metLevel);
+ SetMonData(mon, MON_DATA_LANGUAGE, &language);
+ if (overwriteMetLocation)
+ {
+ metLocation = 0xfd;
+ SetMonData(mon, MON_DATA_MET_LOCATION, &metLocation);
+ }
+ isEgg = TRUE;
+ SetMonData(mon, MON_DATA_IS_EGG, &isEgg);
+}
+
+static void sub_80420FC(struct Pokemon *mon, u16 species, struct DayCareData *dayCareData)
+{
+ u32 personality;
+ u16 ball;
+ u8 metLevel;
+ u8 language;
+ personality = dayCareData->misc.countersEtc.personalityLo | (Random() << 16);
+ CreateMon(mon, species, 5, 0x20, TRUE, personality, FALSE, 0);
+ metLevel = 0;
+ ball = ITEM_POKE_BALL;
+ language = LANGUAGE_JAPANESE;
+ SetMonData(mon, MON_DATA_POKEBALL, (u8 *)&ball);
+ SetMonData(mon, MON_DATA_NICKNAME, gUnknown_08209AD4);
+ SetMonData(mon, MON_DATA_FRIENDSHIP, &gBaseStats[species].eggCycles);
+ SetMonData(mon, MON_DATA_MET_LEVEL, &metLevel);
+ SetMonData(mon, MON_DATA_LANGUAGE, &language);
+}
+
+void sp0B8_daycare(void)
+{
+ sub_8041FC4(&gSaveBlock1.daycareData);
+}
+
+#ifdef NONMATCHING
+static bool8 sub_80421B0(struct DayCareData *dayCareData)
+{
+ struct BoxPokemon *parent;
+ u32 i;
+ int v0;
+ int steps;
+ v0 = 0;
+ for (i=0, parent=&dayCareData->mons[0]; i<2; parent++, i++)
+ {
+ if (GetBoxMonData(parent, MON_DATA_SANITY_BIT2, v0))
+ {
+ dayCareData->misc.countersEtc.steps[i]++;
+ v0++;
+ }
+ }
+ if (dayCareData->misc.countersEtc.personalityLo == 0 && v0 == 2 && dayCareData->misc.extra.misc[4] == 0xff && daycare_relationship_score(dayCareData) > (u32)((u32)(Random() * 100) / 0xffff))
+ {
+ sub_8041940();
+ }
+ if ((++dayCareData->misc.countersEtc.unk_11a) == 0xff)
+ {
+ for (i=0; i<gPlayerPartyCount; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
+ {
+ steps = GetMonData(&gPlayerParty[i], MON_DATA_FRIENDSHIP);
+ if (steps == 0)
+ {
+ gSpecialVar_0x8004 = i;
+ return TRUE;
+ }
+ steps--;
+ SetMonData(&gPlayerParty[i], MON_DATA_FRIENDSHIP, (u8 *)&steps);
+ }
+ }
+ }
+ return FALSE;
+}
+#else
+__attribute__((naked))
+static bool8 sub_80421B0(struct DayCareData *dayCareData)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tsub sp, 0x8\n"
+ "\tadds r7, r0, 0\n"
+ "\tmovs r2, 0\n"
+ "\tmovs r6, 0\n"
+ "\tadds r5, r7, 0\n"
+ "_080421BC:\n"
+ "\tlsls r4, r6, 2\n"
+ "\tadds r0, r5, 0\n"
+ "\tmovs r1, 0x5\n"
+ "\tstr r2, [sp, 0x4]\n"
+ "\tbl GetBoxMonData\n"
+ "\tldr r2, [sp, 0x4]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _080421DE\n"
+ "\tmovs r0, 0x88\n"
+ "\tlsls r0, 1\n"
+ "\tadds r1, r7, r0\n"
+ "\tadds r1, r4\n"
+ "\tldr r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstr r0, [r1]\n"
+ "\tadds r2, 0x1\n"
+ "_080421DE:\n"
+ "\tadds r5, 0x50\n"
+ "\tadds r6, 0x1\n"
+ "\tcmp r6, 0x1\n"
+ "\tbls _080421BC\n"
+ "\tmovs r1, 0x8C\n"
+ "\tlsls r1, 1\n"
+ "\tadds r0, r7, r1\n"
+ "\tldrh r0, [r0]\n"
+ "\tcmp r0, 0\n"
+ "\tbne _08042226\n"
+ "\tcmp r2, 0x2\n"
+ "\tbne _08042226\n"
+ "\tsubs r1, 0x4\n"
+ "\tadds r0, r7, r1\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r0, 0xFF\n"
+ "\tbne _08042226\n"
+ "\tadds r0, r7, 0\n"
+ "\tbl daycare_relationship_score\n"
+ "\tadds r4, r0, 0\n"
+ "\tlsls r4, 24\n"
+ "\tlsrs r4, 24\n"
+ "\tbl Random\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tmovs r1, 0x64\n"
+ "\tmuls r0, r1\n"
+ "\tldr r1, _08042240 @ =0x0000ffff\n"
+ "\tbl __udivsi3\n"
+ "\tcmp r4, r0\n"
+ "\tbls _08042226\n"
+ "\tbl sub_8041940\n"
+ "_08042226:\n"
+ "\tmovs r0, 0x8D\n"
+ "\tlsls r0, 1\n"
+ "\tadds r1, r7, r0\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r1]\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tcmp r0, 0xFF\n"
+ "\tbne _08042290\n"
+ "\tmovs r6, 0\n"
+ "\tb _08042288\n"
+ "\t.align 2, 0\n"
+ "_08042240: .4byte 0x0000ffff\n"
+ "_08042244:\n"
+ "\tmovs r0, 0x64\n"
+ "\tadds r1, r6, 0\n"
+ "\tmuls r1, r0\n"
+ "\tldr r0, _08042270 @ =gPlayerParty\n"
+ "\tadds r4, r1, r0\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0x2D\n"
+ "\tbl GetMonData\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08042286\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0x20\n"
+ "\tbl GetMonData\n"
+ "\tstr r0, [sp]\n"
+ "\tcmp r0, 0\n"
+ "\tbne _08042278\n"
+ "\tldr r0, _08042274 @ =gSpecialVar_0x8004\n"
+ "\tstrh r6, [r0]\n"
+ "\tmovs r0, 0x1\n"
+ "\tb _08042292\n"
+ "\t.align 2, 0\n"
+ "_08042270: .4byte gPlayerParty\n"
+ "_08042274: .4byte gSpecialVar_0x8004\n"
+ "_08042278:\n"
+ "\tsubs r0, 0x1\n"
+ "\tstr r0, [sp]\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0x20\n"
+ "\tmov r2, sp\n"
+ "\tbl SetMonData\n"
+ "_08042286:\n"
+ "\tadds r6, 0x1\n"
+ "_08042288:\n"
+ "\tldr r0, _0804229C @ =gPlayerPartyCount\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r6, r0\n"
+ "\tbcc _08042244\n"
+ "_08042290:\n"
+ "\tmovs r0, 0\n"
+ "_08042292:\n"
+ "\tadd sp, 0x8\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r1}\n"
+ "\tbx r1\n"
+ "\t.align 2, 0\n"
+ "_0804229C: .4byte gPlayerPartyCount");
+}
+#endif
+
+bool8 sub_80422A0(void)
+{
+ return sub_80421B0(&gSaveBlock1.daycareData);
+}
+
+static bool8 sub_80422B4(struct DayCareData *dayCareData)
+{
+ return (u32)((-dayCareData->misc.countersEtc.personalityLo) | dayCareData->misc.countersEtc.personalityLo) >> 31;
+}
+
+static void sub_80422C4(struct DayCareData *dayCareData)
+{
+ u8 language;
+ if (GetBoxMonData(&dayCareData->mons[0], MON_DATA_SPECIES) != 0)
+ {
+ GetBoxMonNick(&dayCareData->mons[0], gStringVar1);
+ language = GetBoxMonData(&dayCareData->mons[0], MON_DATA_LANGUAGE);
+ GetBoxMonData(&dayCareData->mons[0], MON_DATA_OT_NAME, gStringVar3);
+ ConvertInternationalString(gStringVar3, language);
+ }
+ if (GetBoxMonData(&dayCareData->mons[1], MON_DATA_SPECIES) != 0)
+ {
+ GetBoxMonNick(&dayCareData->mons[1], gStringVar2);
+ }
+}
+
+u16 sub_8042328(void)
+{
+ GetBoxMonNick(&gPlayerParty[gLastFieldPokeMenuOpened].box, gStringVar1);
+ return GetBoxMonData(&gPlayerParty[gLastFieldPokeMenuOpened].box, MON_DATA_SPECIES);
+}
+
+void sp0B5_daycare(void)
+{
+ sub_80422C4(&gSaveBlock1.daycareData);
+}
+
+u8 sp0B6_daycare(void)
+{
+ u8 monCount;
+ if (sub_80422B4(&gSaveBlock1.daycareData))
+ {
+ return 1;
+ }
+ monCount = Daycare_CountPokemon(&gSaveBlock1.daycareData);
+ if (monCount != 0)
+ {
+ return monCount + 1;
+ }
+ return 0;
+}
+
+#ifdef NONMATCHING
+static
+#endif
+bool8 sub_80423A8(u16 *a, u16 *b)
+{
+ int i, j;
+ u16 *v0, *v1, v2;
+ for (i=0, v0=a; i<2; v0++, i++)
+ {
+ for (j=0, v2=*v0, v1=b; j<2; v1++, j++)
+ {
+ if (v2 == *v1)
+ {
+ return TRUE;
+ }
+ }
+ }
+ return FALSE;
+}
+
+#ifdef NONMATCHING
+static u8 daycare_relationship_score(struct DayCareData *dayCareData)
+{
+ u16 species[2];
+ u32 otIds[2];
+ u32 genders[2];
+ u16 eggGroups[2][2];
+ int i;
+ u16 *spc;
+ u32 *ids;
+ u32 *gnd;
+ u16 *egg1;
+ u16 *egg2;
+ struct BoxPokemon *parent;
+ for (i=0, parent=&dayCareData->mons[0], spc=species, ids=otIds, gnd=genders, egg1=&eggGroups[0][0], egg2=&eggGroups[0][1]; i<2; spc++, egg1+=2, egg2+=2, parent++, i++)
+ {
+ *spc = GetBoxMonData(parent, MON_DATA_SPECIES);
+ *ids++ = GetBoxMonData(parent, MON_DATA_OT_ID);
+ *gnd++ = GetGenderFromSpeciesAndPersonality(*spc, GetBoxMonData(parent, MON_DATA_PERSONALITY));
+ *egg1 = gBaseStats[*spc].eggGroup1;
+ *egg2 = gBaseStats[*spc].eggGroup2;
+ }
+ if (eggGroups[0][0] == 0xf)
+ {
+ return 0;
+ }
+ if (eggGroups[1][0] == 0xf)
+ {
+ return 0;
+ }
+ if (eggGroups[0][0] == 0xd && eggGroups[1][0] == 0xd)
+ {
+ return 0;
+ }
+ else if (eggGroups[0][0] == 0xd || eggGroups[1][0] == 0xd)
+ {
+ if (otIds[0] == otIds[1])
+ {
+ return 20;
+ }
+ return 50;
+ }
+ if (genders[0] == genders[1] || genders[0] == MON_GENDERLESS || genders[1] == MON_GENDERLESS)
+ {
+ return 0;
+ }
+ if (!sub_80423A8(eggGroups[0], eggGroups[1]))
+ {
+ return 0;
+ }
+ if (species[0] == species[1])
+ {
+ if (otIds[0] == otIds[1])
+ {
+ return 50;
+ }
+ return 70;
+ }
+ else
+ {
+ if (otIds[0] != otIds[1])
+ {
+ return 50;
+ }
+ return 20;
+ }
+}
+#else
+__attribute__((naked))
+static u8 daycare_relationship_score(struct DayCareData *dayCareData)
+{
+ 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, 0x2C\n"
+ "\tmovs r1, 0\n"
+ "\tmov r8, r1\n"
+ "\tmov r2, sp\n"
+ "\tadds r2, 0x8\n"
+ "\tstr r2, [sp, 0x1C]\n"
+ "\tadd r1, sp, 0xC\n"
+ "\tmov r10, r1\n"
+ "\tadds r2, 0xC\n"
+ "\tstr r2, [sp, 0x20]\n"
+ "\tmov r1, sp\n"
+ "\tadds r1, 0x2\n"
+ "\tldr r2, _08042488 @ =gBaseStats\n"
+ "\tmov r9, r2\n"
+ "\tldr r5, [sp, 0x1C]\n"
+ "\tadds r7, r1, 0\n"
+ "\tmov r6, sp\n"
+ "\tldr r1, [sp, 0x20]\n"
+ "\tstr r1, [sp, 0x24]\n"
+ "\tmov r2, r10\n"
+ "\tstr r2, [sp, 0x28]\n"
+ "\tadds r4, r0, 0\n"
+ "_0804240E:\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0xB\n"
+ "\tbl GetBoxMonData\n"
+ "\tstrh r0, [r5]\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0x1\n"
+ "\tbl GetBoxMonData\n"
+ "\tldr r1, [sp, 0x28]\n"
+ "\tstm r1!, {r0}\n"
+ "\tstr r1, [sp, 0x28]\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0\n"
+ "\tbl GetBoxMonData\n"
+ "\tadds r1, r0, 0\n"
+ "\tldrh r0, [r5]\n"
+ "\tbl GetGenderFromSpeciesAndPersonality\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tldr r2, [sp, 0x24]\n"
+ "\tstm r2!, {r0}\n"
+ "\tstr r2, [sp, 0x24]\n"
+ "\tldrh r1, [r5]\n"
+ "\tlsls r0, r1, 3\n"
+ "\tsubs r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tadd r0, r9\n"
+ "\tldrb r0, [r0, 0x14]\n"
+ "\tstrh r0, [r6]\n"
+ "\tldrh r1, [r5]\n"
+ "\tlsls r0, r1, 3\n"
+ "\tsubs r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tadd r0, r9\n"
+ "\tldrb r0, [r0, 0x15]\n"
+ "\tstrh r0, [r7]\n"
+ "\tadds r5, 0x2\n"
+ "\tadds r7, 0x4\n"
+ "\tadds r6, 0x4\n"
+ "\tadds r4, 0x50\n"
+ "\tmovs r0, 0x1\n"
+ "\tadd r8, r0\n"
+ "\tmov r1, r8\n"
+ "\tcmp r1, 0x1\n"
+ "\tbls _0804240E\n"
+ "\tmov r0, sp\n"
+ "\tldrh r1, [r0]\n"
+ "\tcmp r1, 0xF\n"
+ "\tbeq _08042484\n"
+ "\tldrh r0, [r0, 0x4]\n"
+ "\tcmp r0, 0xF\n"
+ "\tbeq _08042484\n"
+ "\tcmp r1, 0xD\n"
+ "\tbne _0804248C\n"
+ "\tcmp r0, 0xD\n"
+ "\tbne _08042490\n"
+ "_08042484:\n"
+ "\tmovs r0, 0\n"
+ "\tb _080424E4\n"
+ "\t.align 2, 0\n"
+ "_08042488: .4byte gBaseStats\n"
+ "_0804248C:\n"
+ "\tcmp r0, 0xD\n"
+ "\tbne _0804249C\n"
+ "_08042490:\n"
+ "\tldr r1, [sp, 0xC]\n"
+ "\tmov r2, r10\n"
+ "\tldr r0, [r2, 0x4]\n"
+ "\tcmp r1, r0\n"
+ "\tbeq _080424DE\n"
+ "\tb _080424E2\n"
+ "_0804249C:\n"
+ "\tldr r0, [sp, 0x14]\n"
+ "\tldr r2, [sp, 0x20]\n"
+ "\tldr r1, [r2, 0x4]\n"
+ "\tcmp r0, r1\n"
+ "\tbeq _08042484\n"
+ "\tcmp r0, 0xFF\n"
+ "\tbeq _08042484\n"
+ "\tcmp r1, 0xFF\n"
+ "\tbeq _08042484\n"
+ "\tadd r1, sp, 0x4\n"
+ "\tmov r0, sp\n"
+ "\tbl sub_80423A8\n"
+ "\tlsls r0, 24\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08042484\n"
+ "\tldr r0, [sp, 0x1C]\n"
+ "\tldrh r1, [r0, 0x2]\n"
+ "\tldrh r0, [r0]\n"
+ "\tcmp r0, r1\n"
+ "\tbne _080424D4\n"
+ "\tldr r1, [sp, 0xC]\n"
+ "\tmov r2, r10\n"
+ "\tldr r0, [r2, 0x4]\n"
+ "\tcmp r1, r0\n"
+ "\tbeq _080424E2\n"
+ "\tmovs r0, 0x46\n"
+ "\tb _080424E4\n"
+ "_080424D4:\n"
+ "\tldr r1, [sp, 0xC]\n"
+ "\tmov r2, r10\n"
+ "\tldr r0, [r2, 0x4]\n"
+ "\tcmp r1, r0\n"
+ "\tbne _080424E2\n"
+ "_080424DE:\n"
+ "\tmovs r0, 0x14\n"
+ "\tb _080424E4\n"
+ "_080424E2:\n"
+ "\tmovs r0, 0x32\n"
+ "_080424E4:\n"
+ "\tadd sp, 0x2C\n"
+ "\tpop {r3-r5}\n"
+ "\tmov r8, r3\n"
+ "\tmov r9, r4\n"
+ "\tmov r10, r5\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r1}\n"
+ "\tbx r1");
+}
+#endif
+
+u8 daycare_relationship_score_from_savegame(void)
+{
+ return daycare_relationship_score(&gSaveBlock1.daycareData);
+}
+
+void sp0B9_daycare_relationship_comment(void)
+{
+ u8 whichString;
+ u8 relationshipScore;
+
+ relationshipScore = daycare_relationship_score_from_savegame();
+ whichString = 0;
+ if (relationshipScore == 0)
+ whichString = 3;
+ if (relationshipScore == 20)
+ whichString = 2;
+ if (relationshipScore == 50)
+ whichString = 1;
+ if (relationshipScore == 70)
+ whichString = 0;
+ StringCopy(gStringVar4, gUnknown_08209AC4[whichString]);
+}
+
+#ifdef NONMATCHING
+bool8 NameHasGenderSymbol(const u8 *name, u8 genderRatio)
+{
+ u8 i;
+ u8 flags[2];
+
+ // This portion is nonmatching
+ flags[1] = 0;
+ flags[0] = 0;
+ for (i = 0; name[i] != EOS; i ++)
+ // End nonmatching portion
+
+ {
+ if (name[i] == CHAR_MALE) flags[0] ++;
+ if (name[i] == CHAR_FEMALE) flags[1] ++;
+ }
+ if (genderRatio == MON_MALE && flags[0] && !flags[1]) return TRUE;
+ if (genderRatio == MON_FEMALE && flags[1] && !flags[0]) return TRUE;
+ return FALSE;
+}
+#else
+__attribute__((naked))
+bool8 NameHasGenderSymbol(const u8 *name, u8 genderRatio)
+{
+ asm_unified("\n"
+ "\tpush {r4,r5,lr}\n"
+ "\tsub sp, 0x4\n"
+ "\tadds r4, r0, 0\n"
+ "\tlsls r1, 24\n"
+ "\tlsrs r5, r1, 24\n"
+ "\tmov r2, sp\n"
+ "\tmov r1, sp\n"
+ "\tmovs r0, 0\n"
+ "\tstrb r0, [r1, 0x1]\n"
+ "\tstrb r0, [r2]\n"
+ "\tmovs r3, 0\n"
+ "\tldrb r0, [r4]\n"
+ "\tcmp r0, 0xFF\n"
+ "\tbeq _0804258C\n"
+ "_08042564:\n"
+ "\tadds r1, r4, r3\n"
+ "\tldrb r0, [r1]\n"
+ "\tcmp r0, 0xB5\n"
+ "\tbne _08042572\n"
+ "\tldrb r0, [r2]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r2]\n"
+ "_08042572:\n"
+ "\tldrb r0, [r1]\n"
+ "\tcmp r0, 0xB6\n"
+ "\tbne _0804257E\n"
+ "\tldrb r0, [r2, 0x1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r2, 0x1]\n"
+ "_0804257E:\n"
+ "\tadds r0, r3, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r3, r0, 24\n"
+ "\tadds r0, r4, r3\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r0, 0xFF\n"
+ "\tbne _08042564\n"
+ "_0804258C:\n"
+ "\tcmp r5, 0\n"
+ "\tbne _080425A0\n"
+ "\tmov r0, sp\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _080425A0\n"
+ "\tmov r0, sp\n"
+ "\tldrb r0, [r0, 0x1]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _080425B4\n"
+ "_080425A0:\n"
+ "\tcmp r5, 0xFE\n"
+ "\tbne _080425B8\n"
+ "\tmov r0, sp\n"
+ "\tldrb r0, [r0, 0x1]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _080425B8\n"
+ "\tmov r0, sp\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r0, 0\n"
+ "\tbne _080425B8\n"
+ "_080425B4:\n"
+ "\tmovs r0, 0x1\n"
+ "\tb _080425BA\n"
+ "_080425B8:\n"
+ "\tmovs r0, 0\n"
+ "_080425BA:\n"
+ "\tadd sp, 0x4\n"
+ "\tpop {r4,r5}\n"
+ "\tpop {r1}\n"
+ "\tbx r1");
+}
+#endif
+
+static u8 *AppendGenderSymbol(u8 *name, u8 gender)
+{
+ if (gender == MON_MALE)
+ {
+ if (!NameHasGenderSymbol(name, MON_MALE))
+ return StringAppend(name, gOtherText_MaleSymbol3);
+ }
+
+ else if (gender == MON_FEMALE)
+ {
+ if (!NameHasGenderSymbol(name, MON_FEMALE))
+ return StringAppend(name, gOtherText_FemaleSymbol3);
+ }
+ return StringAppend(name, gOtherText_GenderlessSymbol);
+}
+
+static u8 *MonAppendGenderSymbol(u8 *name, struct BoxPokemon *boxMon)
+{
+ return AppendGenderSymbol(name, GetBoxMonGender(boxMon));
+}
+
+static void DaycareLevelMenuGetText(struct DayCareData *dayCareData, u8 *dest)
+{
+ u8 buffers[2][20];
+ u8 i;
+ *dest = EOS;
+ for (i = 0; i < 2; i ++)
+ {
+ GetBoxMonNick(&dayCareData->mons[i], buffers[i]);
+ MonAppendGenderSymbol(buffers[i], &dayCareData->mons[i]);
+ }
+ StringCopy(dest, buffers[0]);
+ StringAppend(dest, gOtherText_NewLine2);
+ StringAppend(dest, buffers[1]);
+ StringAppend(dest, gOtherText_NewLine2);
+ StringAppend(dest, gOtherText_CancelAndLv);
+}
+
+static void DaycareLevelMenuGetLevelText(struct DayCareData *dayCareData, u8 *dest)
+{
+ u8 i;
+ u8 level;
+ *dest = EOS;
+ for (i = 0; i < 2; i ++)
+ {
+ level = Daycare_GetLevelAfterSteps(&dayCareData->mons[i], dayCareData->misc.countersEtc.steps[i]);
+ dest[0] = 0x34;
+ dest[1] = 0xFC;
+ dest[2] = 0x14;
+ dest[3] = 0x06;
+ dest = ConvertIntToDecimalStringN(dest + 4, level, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ dest[0] = 0xFC;
+ dest[1] = 0x14;
+ dest[2] = 0x00;
+ dest = StringCopy(dest + 3, gOtherText_NewLine2);
+ }
+ *dest = EOS;
+}
+
+static void DaycareLevelMenuProcessKeyInput(u8 taskId)
+{
+ if (gMain.newKeys & DPAD_UP)
+ {
+ if (gTasks[taskId].data[0] != 0)
+ {
+ gTasks[taskId].data[0] --;
+ MoveMenuCursor(-1);
+ PlaySE(SE_SELECT);
+ }
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ if (gTasks[taskId].data[0] != 2)
+ {
+ gTasks[taskId].data[0] ++;
+ MoveMenuCursor(+1);
+ PlaySE(SE_SELECT);
+ }
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ HandleDestroyMenuCursors();
+ PlaySE(SE_SELECT);
+ gLastFieldPokeMenuOpened = gScriptResult = gTasks[taskId].data[0];
+ DestroyTask(taskId);
+ MenuZeroFillWindowRect(15, 6, 29, 13);
+ EnableBothScriptContexts();
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ HandleDestroyMenuCursors();
+ gLastFieldPokeMenuOpened = gScriptResult = 2;
+ DestroyTask(taskId);
+ MenuZeroFillWindowRect(15, 6, 29, 13);
+ EnableBothScriptContexts();
+ }
+}
+
+void ShowDaycareLevelMenu(void)
+{
+ u8 buffer[100];
+ MenuDrawTextWindow(15, 6, 29, 13);
+ DaycareLevelMenuGetText(&gSaveBlock1.daycareData, buffer);
+ MenuPrint(buffer, 16, 7);
+ DaycareLevelMenuGetLevelText(&gSaveBlock1.daycareData, buffer);
+ MenuPrint_PixelCoords(buffer, 0xce, 0x38, TRUE);
+ InitMenu(0, 16, 7, 3, 0, 13);
+ CreateTask(DaycareLevelMenuProcessKeyInput, 3);
+}
+
+void ChooseSendDaycareMon(void)
+{
+ OpenPartyMenu(6, 0);
+ gMain.savedCallback = c2_exit_to_overworld_2_switch;
+}
diff --git a/src/de_rom_8040FE0.c b/src/de_rom_8040FE0.c
index c618ebdb2..eebcc1437 100644
--- a/src/de_rom_8040FE0.c
+++ b/src/de_rom_8040FE0.c
@@ -142,124 +142,124 @@ u8 *de_sub_8041024(s32 arg0, u32 arg1) {
__attribute__((naked))
void de_sub_8041024(void) {
asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- adds r2, r0, 0\n\
- adds r6, r1, 0\n\
- movs r0, 0x80\n\
- lsls r0, 3\n\
- cmp r2, r0\n\
- beq _0804104A\n\
- cmp r2, r0\n\
- bgt _08041040\n\
- movs r0, 0x80\n\
- lsls r0, 1\n\
- cmp r2, r0\n\
- beq _08041064\n\
- b _0804109C\n\
+ push {r4-r6,lr}\n\
+ adds r2, r0, 0\n\
+ adds r6, r1, 0\n\
+ movs r0, 0x80\n\
+ lsls r0, 3\n\
+ cmp r2, r0\n\
+ beq _0804104A\n\
+ cmp r2, r0\n\
+ bgt _08041040\n\
+ movs r0, 0x80\n\
+ lsls r0, 1\n\
+ cmp r2, r0\n\
+ beq _08041064\n\
+ b _0804109C\n\
_08041040:\n\
- movs r0, 0x80\n\
- lsls r0, 4\n\
- cmp r2, r0\n\
- beq _08041086\n\
- b _0804109C\n\
+ movs r0, 0x80\n\
+ lsls r0, 4\n\
+ cmp r2, r0\n\
+ beq _08041086\n\
+ b _0804109C\n\
_0804104A:\n\
- bl GetSecretBaseTrainerNameIndex\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- ldr r0, _08041060 @ =0x02017000\n\
- ldrb r0, [r0, 0x1]\n\
- lsls r0, 27\n\
- lsrs r2, r0, 31\n\
- cmp r5, 0x1A\n\
- beq _080410B8\n\
- b _080410F8\n\
- .align 2, 0\n\
+ bl GetSecretBaseTrainerNameIndex\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ ldr r0, _08041060 @ =0x02017000\n\
+ ldrb r0, [r0, 0x1]\n\
+ lsls r0, 27\n\
+ lsrs r2, r0, 31\n\
+ cmp r5, 0x1A\n\
+ beq _080410B8\n\
+ b _080410F8\n\
+ .align 2, 0\n\
_08041060: .4byte 0x02017000\n\
_08041064:\n\
- bl de_sub_81364AC\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- bl get_trainer_class_name_index\n\
+ bl de_sub_81364AC\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ bl get_trainer_class_name_index\n\
_08041070:\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- cmp r4, 0x1E\n\
- beq _08041094\n\
- adds r0, r4, 0\n\
- subs r0, 0x3D\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x2\n\
- bls _080410CC\n\
- b _080410F8\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ cmp r4, 0x1E\n\
+ beq _08041094\n\
+ adds r0, r4, 0\n\
+ subs r0, 0x3D\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x2\n\
+ bls _080410CC\n\
+ b _080410F8\n\
_08041086:\n\
- bl de_sub_81364F8\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- bl sub_8135FD8\n\
- b _08041070\n\
+ bl de_sub_81364F8\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ bl sub_8135FD8\n\
+ b _08041070\n\
_08041094:\n\
- movs r0, 0x1\n\
- bl de_sub_8040FE0\n\
- b _08041102\n\
+ movs r0, 0x1\n\
+ bl de_sub_8040FE0\n\
+ b _08041102\n\
_0804109C:\n\
- ldr r1, _080410C0 @ =gTrainers\n\
- lsls r4, r6, 2\n\
- adds r0, r4, r6\n\
- lsls r0, 3\n\
- adds r0, r1\n\
- ldrb r5, [r0, 0x1]\n\
- lsls r0, r6, 16\n\
- lsrs r0, 16\n\
- bl sub_803FC58\n\
- lsls r0, 24\n\
- lsrs r2, r0, 24\n\
- cmp r5, 0x1A\n\
- bne _080410C4\n\
+ ldr r1, _080410C0 @ =gTrainers\n\
+ lsls r4, r6, 2\n\
+ adds r0, r4, r6\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ ldrb r5, [r0, 0x1]\n\
+ lsls r0, r6, 16\n\
+ lsrs r0, 16\n\
+ bl sub_803FC58\n\
+ lsls r0, 24\n\
+ lsrs r2, r0, 24\n\
+ cmp r5, 0x1A\n\
+ bne _080410C4\n\
_080410B8:\n\
- adds r0, r2, 0\n\
- bl de_sub_8040FE0\n\
- b _08041102\n\
- .align 2, 0\n\
+ adds r0, r2, 0\n\
+ bl de_sub_8040FE0\n\
+ b _08041102\n\
+ .align 2, 0\n\
_080410C0: .4byte gTrainers\n\
_080410C4:\n\
- cmp r5, 0x2E\n\
- bne _080410D4\n\
- cmp r2, 0x1\n\
- bne _080410D4\n\
+ cmp r5, 0x2E\n\
+ bne _080410D4\n\
+ cmp r2, 0x1\n\
+ bne _080410D4\n\
_080410CC:\n\
- movs r0, 0x1\n\
- bl de_sub_8040FF4\n\
- b _08041102\n\
+ movs r0, 0x1\n\
+ bl de_sub_8040FF4\n\
+ b _08041102\n\
_080410D4:\n\
- cmp r5, 0x19\n\
- bne _080410F8\n\
- ldr r0, _080410F4 @ =gTrainers\n\
- adds r1, r4, r6\n\
- lsls r1, 3\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x18]\n\
- movs r2, 0\n\
- cmp r0, 0x1\n\
- bne _080410EA\n\
- movs r2, 0x1\n\
+ cmp r5, 0x19\n\
+ bne _080410F8\n\
+ ldr r0, _080410F4 @ =gTrainers\n\
+ adds r1, r4, r6\n\
+ lsls r1, 3\n\
+ adds r1, r0\n\
+ ldrb r0, [r1, 0x18]\n\
+ movs r2, 0\n\
+ cmp r0, 0x1\n\
+ bne _080410EA\n\
+ movs r2, 0x1\n\
_080410EA:\n\
- adds r0, r2, 0\n\
- bl de_sub_804100C\n\
- b _08041102\n\
- .align 2, 0\n\
+ adds r0, r2, 0\n\
+ bl de_sub_804100C\n\
+ b _08041102\n\
+ .align 2, 0\n\
_080410F4: .4byte gTrainers\n\
_080410F8:\n\
- movs r0, 0xD\n\
- adds r1, r5, 0\n\
- muls r1, r0\n\
- ldr r0, _08041108 @ =gTrainerClassNames\n\
- adds r0, r1, r0\n\
+ movs r0, 0xD\n\
+ adds r1, r5, 0\n\
+ muls r1, r0\n\
+ ldr r0, _08041108 @ =gTrainerClassNames\n\
+ adds r0, r1, r0\n\
_08041102:\n\
- pop {r4-r6}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
+ pop {r4-r6}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
_08041108: .4byte gTrainerClassNames\n\
.syntax divided\n");
}
diff --git a/src/decoration.c b/src/decoration.c
index da33b3ab7..1d48692c1 100644
--- a/src/decoration.c
+++ b/src/decoration.c
@@ -1,7 +1,7 @@
#include "global.h"
#include "main.h"
#include "map_object_constants.h"
-#include "rom4.h"
+#include "overworld.h"
#include "sound.h"
#include "songs.h"
#include "string_util.h"
@@ -2322,7 +2322,7 @@ void sub_80FF474(void)
{
if (FlagGet(i + 0xae) == 1)
{
- FlagReset(i + 0xae);
+ FlagClear(i + 0xae);
for (j=0; j<gMapHeader.events->mapObjectCount; j++)
{
if (gMapHeader.events->mapObjects[j].flagId == i + 0xae)
diff --git a/src/decoration_inventory.c b/src/decoration_inventory.c
index 35ba7e228..083cb260c 100644
--- a/src/decoration_inventory.c
+++ b/src/decoration_inventory.c
@@ -1,5 +1,5 @@
//
-// Created by Scott Norton on 6/5/17.
+
//
#include "global.h"
diff --git a/src/diploma.c b/src/diploma.c
index ba7de58aa..27601404c 100644
--- a/src/diploma.c
+++ b/src/diploma.c
@@ -4,7 +4,7 @@
#include "menu.h"
#include "palette.h"
#include "pokedex.h"
-#include "rom4.h"
+#include "overworld.h"
#include "sprite.h"
#include "string_util.h"
#include "strings2.h"
@@ -35,7 +35,7 @@ static void VBlankCB(void)
TransferPlttBuffer();
}
-void sub_8145D88(void)
+void CB2_ShowDiploma(void)
{
u32 savedIme;
diff --git a/src/easy_chat.c b/src/easy_chat.c
index cca8c1355..e71067454 100644
--- a/src/easy_chat.c
+++ b/src/easy_chat.c
@@ -19,8 +19,10 @@ extern const u8 gEasyChatGroupSizes[];
extern u16 gSpecialVar_0x8004;
+IWRAM_DATA u8 gUnknown_03000740;
-u8 *sub_80EB3FC(u8 *dst, u16 word)
+// returns the end of the destination buffer text
+u8 *EasyChat_GetWordText(u8 *dst, u16 word)
{
u16 group;
u16 wordIndex;
@@ -32,13 +34,13 @@ u8 *sub_80EB3FC(u8 *dst, u16 word)
if (word == 0xFFFF)
{
- dst[0] = EOS;
+ *dst = EOS;
return dst;
}
else
{
- group = word >> 9;
- wordIndex = word & 0x1FF;
+ group = EC_GROUP(word);
+ wordIndex = EC_INDEX(word);
switch (group)
{
case EC_GROUP_POKEMON: // 0
@@ -59,7 +61,7 @@ u8 *sub_80EB3FC(u8 *dst, u16 word)
dst = StringCopy(dst, src);
break;
}
- dst[0] = EOS;
+ *dst = EOS;
return dst;
}
}
@@ -77,7 +79,7 @@ u8 *ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16 arg2, u16 arg3)
for (n = 0; n < i1; n++)
{
- dst = sub_80EB3FC(dst, words[0]);
+ dst = EasyChat_GetWordText(dst, words[0]);
if (words[0] != 0xFFFF)
{
@@ -90,7 +92,7 @@ u8 *ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16 arg2, u16 arg3)
word = words[0];
words++;
- dst = sub_80EB3FC(dst, word);
+ dst = EasyChat_GetWordText(dst, word);
dst[0] = CHAR_NEWLINE;
dst++;
@@ -115,7 +117,7 @@ u8 *sub_80EB544(u8 *dst, u16 *words, u16 arg2, u16 arg3)
for (n = 0; n < i1; n++)
{
- dst = sub_80EB3FC(dst, words[0]);
+ dst = EasyChat_GetWordText(dst, words[0]);
if (words[0] != 0xFFFF)
{
@@ -128,7 +130,7 @@ u8 *sub_80EB544(u8 *dst, u16 *words, u16 arg2, u16 arg3)
word = words[0];
words++;
- dst = sub_80EB3FC(dst, word);
+ dst = EasyChat_GetWordText(dst, word);
// Only difference with ConvertEasyChatWordsToString
dst[0] = (i == 0) ? CHAR_NEWLINE : CHAR_PROMPT_SCROLL;
@@ -144,7 +146,7 @@ u8 *sub_80EB544(u8 *dst, u16 *words, u16 arg2, u16 arg3)
u16 unref_sub_80EB5E0(u16 arg0)
{
- u8 *chars;
+ const u8 *chars;
u16 i;
u16 length;
int group, word;
@@ -153,8 +155,8 @@ u16 unref_sub_80EB5E0(u16 arg0)
if (arg0 == 0xFFFF)
return 0;
- group = arg0 >> 9;
- word = arg0 & 0x1FF;
+ group = EC_GROUP(arg0);
+ word = EC_INDEX(arg0);
switch (group)
{
case EC_GROUP_POKEMON: // 0
@@ -321,7 +323,7 @@ void sub_80EB83C(void)
group = EC_GROUP_LIFESTYLE;
local2 = sub_80EB784(group);
- sub_80EB3FC(gStringVar2, local2);
+ EasyChat_GetWordText(gStringVar2, local2);
}
u8 sub_80EB868(u8 arg0)
diff --git a/src/egg_hatch.c b/src/egg_hatch.c
index 32fbe1547..90d1ee039 100644
--- a/src/egg_hatch.c
+++ b/src/egg_hatch.c
@@ -1,7 +1,226 @@
#include "global.h"
#include "pokemon.h"
+#include "items.h"
+#include "decompress.h"
+#include "data2.h"
+#include "task.h"
+#include "script.h"
+#include "palette.h"
+#include "overworld.h"
+#include "main.h"
+#include "event_data.h"
+#include "sound.h"
+#include "songs.h"
+#include "text.h"
+#include "text_window.h"
+#include "string_util.h"
+#include "strings2.h"
+#include "menu.h"
+#include "naming_screen.h"
+#include "trig.h"
+#include "rng.h"
-void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp) {
+extern u8 ewram[];
+extern struct SpriteTemplate gUnknown_02024E8C;
+
+struct EggHatchData
+{
+ u8 eggSpriteID;
+ u8 pokeSpriteID;
+ u8 CB2_state;
+ u8 CB2_PalCounter;
+ u8 eggPartyID;
+ struct Window window;
+ u8 tileDataStartOffset;
+ u8 unused_39;
+ u8 eggShardVelocityID;
+};
+
+struct EggHatchData* gEggHatchData;
+
+extern const u32 gUnknown_08D00000[];
+extern const u32 gUnknown_08D00524[];
+extern const u32 gUnknown_0820CA98[];
+extern const u32 gUnknown_0820F798[];
+extern const u16 gUnknown_08D004E0[]; //palette
+extern const u16 gUnknown_0820C9F8[]; //palette
+extern const struct SpriteSheet sUnknown_0820A3B0;
+extern const struct SpriteSheet sUnknown_0820A3B8;
+extern const struct SpritePalette sUnknown_0820A3C0;
+
+bool8 GetNationalPokedexFlag(u16 nationalNum, u8 caseID);
+u8* GetMonNick(struct Pokemon* mon, u8* dst);
+u8 sav1_map_get_name(void);
+const struct CompressedSpritePalette* sub_8040990(struct Pokemon* mon); //gets pokemon palette address
+void sub_8080990(void);
+
+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 EggHatchPrintMessage2(u8* src);
+static void EggHatchPrintMessage1(u8* src);
+static bool8 EggHatchUpdateWindowText(void);
+static void CreateRandomEggShardSprite(void);
+static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 spriteAnimIndex);
+
+// graphics
+
+static const u16 sEggPalette[] = INCBIN_U16("graphics/pokemon/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_820A378 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sSpriteAnim_820A380[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_820A388[] =
+{
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_820A390[] =
+{
+ ANIMCMD_FRAME(32, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_820A398[] =
+{
+ ANIMCMD_FRAME(48, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_820A3A0[] =
+{
+ sSpriteAnim_820A380,
+ sSpriteAnim_820A388,
+ sSpriteAnim_820A390,
+ sSpriteAnim_820A398,
+};
+
+static const struct SpriteSheet sUnknown_0820A3B0 =
+{
+ .data = sEggHatchTiles,
+ .size = 2048,
+ .tag = 12345,
+};
+
+static const struct SpriteSheet sUnknown_0820A3B8 =
+{
+ .data = sEggShardTiles,
+ .size = 128,
+ .tag = 23456,
+};
+
+static const struct SpritePalette sUnknown_0820A3C0 =
+{
+ .data = sEggPalette,
+ .tag = 54321
+};
+
+static const struct SpriteTemplate sSpriteTemplate_820A3C8 =
+{
+ .tileTag = 12345,
+ .paletteTag = 54321,
+ .oam = &sOamData_820A378,
+ .anims = sSpriteAnimTable_820A3A0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+};
+
+
+static const struct OamData sOamData_820A3E0 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sSpriteAnim_820A3E8[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_820A3F0[] =
+{
+ ANIMCMD_FRAME(1, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_820A3F8[] =
+{
+ ANIMCMD_FRAME(2, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_820A400[] =
+{
+ ANIMCMD_FRAME(3, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_820A408[] =
+{
+ sSpriteAnim_820A3E8,
+ sSpriteAnim_820A3F0,
+ sSpriteAnim_820A3F8,
+ sSpriteAnim_820A400,
+};
+
+static const struct SpriteTemplate sSpriteTemplate_820A418 =
+{
+ .tileTag = 23456,
+ .paletteTag = 54321,
+ .oam = &sOamData_820A3E0,
+ .anims = sSpriteAnimTable_820A408,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_EggShard
+};
+
+// actual code
+
+static void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp)
+{
u16 species;
u32 personality, pokerus;
u8 i, friendship, language, gameMet, markings;
@@ -50,3 +269,596 @@ void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp) {
*egg = *temp;
}
+
+static void AddHatchedMonToParty(u8 id)
+{
+ u8 isEgg;
+ u16 pokeNum;
+ u8 name[12];
+ u16 ball;
+ u16 caughtLvl;
+ u8 mapNameID;
+ struct Pokemon* mon = &gPlayerParty[id];
+
+ CreatedHatchedMon(mon, &gEnemyParty[0]);
+ isEgg = 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);
+ GetNationalPokedexFlag(pokeNum, 2);
+ GetNationalPokedexFlag(pokeNum, 3);
+
+ GetMonNick(mon, gStringVar1);
+
+ ball = ITEM_POKE_BALL;
+ SetMonData(mon, MON_DATA_POKEBALL, (const u8*) &ball);
+
+ caughtLvl = 0;
+ SetMonData(mon, MON_DATA_MET_LEVEL, (const u8*) &caughtLvl);
+
+ mapNameID = sav1_map_get_name();
+ SetMonData(mon, MON_DATA_MET_LOCATION, &mapNameID);
+
+ MonRestorePP(mon);
+ CalculateMonStats(mon);
+}
+
+void ScriptHatchMon(void)
+{
+ AddHatchedMonToParty(gSpecialVar_0x8004);
+}
+
+#ifdef NONMATCHING
+static bool8 sub_8042ABC(void* a, u8 b)
+{
+
+}
+
+#else
+__attribute__((naked))
+static bool8 sub_8042ABC(void* a, u8 b)
+{
+ asm(".syntax unified\n\
+ push {r4-r6,lr}\n\
+ sub sp, 0x20\n\
+ adds r5, r0, 0\n\
+ lsls r4, r1, 24\n\
+ lsrs r4, 24\n\
+ lsls r0, r4, 2\n\
+ adds r0, r4\n\
+ lsls r0, 4\n\
+ adds r0, r5, r0\n\
+ mov r1, sp\n\
+ bl GetBoxMonNick\n\
+ lsls r0, r4, 3\n\
+ subs r0, r4\n\
+ lsls r1, r0, 3\n\
+ adds r0, r5, r1\n\
+ adds r0, 0xC0\n\
+ ldrh r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _08042B40\n\
+ adds r0, r1, 0\n\
+ adds r0, 0xA0\n\
+ adds r5, r0\n\
+ adds r6, r5, 0\n\
+ adds r6, 0x2C\n\
+ mov r0, sp\n\
+ adds r1, r6, 0\n\
+ bl StringCompareWithoutExtCtrlCodes\n\
+ cmp r0, 0\n\
+ bne _08042B08\n\
+ ldr r0, _08042B30 @ =gSaveBlock2\n\
+ adds r1, r5, 0\n\
+ adds r1, 0x24\n\
+ bl StringCompareWithoutExtCtrlCodes\n\
+ cmp r0, 0\n\
+ beq _08042B40\n\
+_08042B08:\n\
+ ldr r0, _08042B34 @ =gStringVar1\n\
+ mov r1, sp\n\
+ bl StringCopy\n\
+ ldr r4, _08042B38 @ =gStringVar2\n\
+ adds r1, r5, 0\n\
+ adds r1, 0x24\n\
+ adds r0, r4, 0\n\
+ bl StringCopy\n\
+ ldr r0, _08042B3C @ =gStringVar3\n\
+ adds r1, r6, 0\n\
+ bl StringCopy\n\
+ adds r0, r4, 0\n\
+ bl SanitizeNameString\n\
+ movs r0, 0x1\n\
+ b _08042B42\n\
+ .align 2, 0\n\
+_08042B30: .4byte gSaveBlock2\n\
+_08042B34: .4byte gStringVar1\n\
+_08042B38: .4byte gStringVar2\n\
+_08042B3C: .4byte gStringVar3\n\
+_08042B40:\n\
+ movs r0, 0\n\
+_08042B42:\n\
+ add sp, 0x20\n\
+ pop {r4-r6}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .syntax divided");
+}
+
+#endif // NONMATCHING
+
+bool8 sub_8042B4C(void)
+{
+ return sub_8042ABC(&gSaveBlock1.daycareData, gSpecialVar_0x8004);
+}
+
+static u8 EggHatchCreateMonSprite(u8 a0, u8 switchID, u8 pokeID)
+{
+ u8 r5 = 0;
+ u8 spriteID = 0;
+ struct Pokemon* mon = NULL;
+
+ if (a0 == 0)
+ {
+ mon = &gPlayerParty[pokeID];
+ r5 = 1;
+ }
+ if (a0 == 1)
+ {
+ mon = &gPlayerParty[pokeID];
+ r5 = 3;
+ }
+ switch (switchID)
+ {
+ case 0:
+ {
+ u16 species = GetMonData(mon, MON_DATA_SPECIES);
+ u32 pid = GetMonData(mon, MON_DATA_PERSONALITY);
+ HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset,(u32)(&ewram[0]), gUnknown_081FAF4C[2 * a0 + 1], species, pid);
+ LoadCompressedObjectPalette(sub_8040990(mon));
+ }
+ break;
+ case 1:
+ GetMonSpriteTemplate_803C56C(sub_8040990(mon)->tag, r5);
+ spriteID = CreateSprite(&gUnknown_02024E8C, 120, 70, 6);
+ gSprites[spriteID].invisible = 1;
+ 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(-1, 0, 0, 0x10, 0);
+}
+
+static void Task_EggHatch(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(CB2_EggHatch_0);
+ gFieldCallback = sub_8080990;
+ DestroyTask(taskID);
+ }
+}
+
+static void CB2_EggHatch_0(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ REG_DISPCNT = 0;
+ gEggHatchData = (struct EggHatchData*)(&ewram[0x18000]);
+ gEggHatchData->eggPartyID = gSpecialVar_0x8004;
+ gEggHatchData->eggShardVelocityID = 0;
+ ResetTasks();
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ SetVBlankCallback(VBlankCB_EggHatch);
+ gMain.state++;
+ gSpecialVar_0x8005 = GetCurrentMapMusic();
+ break;
+ case 1:
+ SetUpWindowConfig(&gWindowConfig_81E6F84);
+ InitWindowFromConfig(&gEggHatchData->window, &gWindowConfig_81E6F84);
+ gEggHatchData->tileDataStartOffset = SetTextWindowBaseTileNum(20);
+ LoadTextWindowGraphics(&gEggHatchData->window);
+ gMain.state++;
+ break;
+ case 2:
+ LZDecompressVram(&gUnknown_08D00000, (void*)(VRAM));
+ CpuSet(&gUnknown_08D00524, &ewram[0], 0x800);
+ DmaCopy16(3, &ewram[0], (void*)(VRAM + 0x2800), 0x500);
+ LoadCompressedPalette(&gUnknown_08D004E0, 0, 0x20);
+ gMain.state++;
+ break;
+ case 3:
+ LoadSpriteSheet(&sUnknown_0820A3B0);
+ LoadSpriteSheet(&sUnknown_0820A3B8);
+ LoadSpritePalette(&sUnknown_0820A3C0);
+ gMain.state++;
+ break;
+ case 4:
+ gEggHatchData->eggSpriteID = CreateSprite(&sSpriteTemplate_820A3C8, 0x78, 0x4B, 5);
+ AddHatchedMonToParty(gEggHatchData->eggPartyID);
+ gMain.state++;
+ break;
+ case 5:
+ EggHatchCreateMonSprite(0, 0, gEggHatchData->eggPartyID);
+ gMain.state++;
+ break;
+ case 6:
+ gEggHatchData->pokeSpriteID = EggHatchCreateMonSprite(0, 1, gEggHatchData->eggPartyID);
+ gMain.state++;
+ break;
+ case 7:
+ {
+ u32 offsetRead, offsetWrite;
+ u32 offsetRead2, offsetWrite2;
+ u32 size;
+
+ REG_BG2CNT = 0x4C06;
+ LoadPalette(&gUnknown_0820C9F8, 0x10, 0xA0);
+
+ offsetRead = (u32)(&gUnknown_0820CA98);
+ offsetWrite = (VRAM + 0x4000);
+ size = 0x1300;
+ while (TRUE)
+ {
+ DmaCopy16(3, offsetRead, (void *) (offsetWrite), 0x1000);
+ offsetRead += 0x1000;
+ offsetWrite += 0x1000;
+ size -= 0x1000;
+ if (size <= 0x1000)
+ {
+ DmaCopy16(3, offsetRead, (void *) (offsetWrite), size);
+ break;
+ }
+ }
+
+ offsetRead2 = (u32)(&gUnknown_0820F798);
+ offsetWrite2 = (u32)(VRAM + 0x6000);
+ DmaCopy16(3, offsetRead2, (void*)(offsetWrite2), 0x1000);
+ gMain.state++;
+ }
+ break;
+ case 8:
+ REG_BG1CNT = 0x501;
+
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+
+ REG_BG2HOFS = 0;
+ REG_BG2VOFS = 0;
+
+ SetMainCallback2(CB2_EggHatch_1);
+ gEggHatchData->CB2_state = 0;
+ break;
+ }
+}
+
+static void EggHatchSetMonNickname(void)
+{
+ SetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar3);
+ SetMainCallback2(c2_exit_to_overworld_2_switch);
+}
+
+static void Task_EggHatchPlayBGM(u8 taskID)
+{
+ if (gTasks[taskID].data[0] == 0)
+ StopMapMusic();
+ if (gTasks[taskID].data[0] == 1)
+ PlayBGM(376);
+ if (gTasks[taskID].data[0] > 60)
+ {
+ PlayBGM(377);
+ DestroyTask(taskID);
+ //return; task is destroyed, yet you increment the value?
+ }
+ gTasks[taskID].data[0]++;
+}
+
+static void CB2_EggHatch_1(void)
+{
+ switch (gEggHatchData->CB2_state)
+ {
+ case 0:
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ REG_DISPCNT = 0x1740;
+ gEggHatchData->CB2_state++;
+ CreateTask(Task_EggHatchPlayBGM, 5);
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ {
+ gEggHatchData->CB2_PalCounter = 0;
+ gEggHatchData->CB2_state++;
+ }
+ break;
+ case 2:
+ if (++gEggHatchData->CB2_PalCounter > 30)
+ {
+ gEggHatchData->CB2_state++;
+ gSprites[gEggHatchData->eggSpriteID].callback = SpriteCB_Egg_0;
+ }
+ break;
+ case 3:
+ if (gSprites[gEggHatchData->eggSpriteID].callback == SpriteCallbackDummy)
+ gEggHatchData->CB2_state++;
+ break;
+ case 4:
+ GetMonNick(&gPlayerParty[gEggHatchData->eggPartyID], gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gOtherText_HatchedFromEgg);
+ EggHatchPrintMessage2(gStringVar4);
+ PlayFanfare(371);
+ gEggHatchData->CB2_state++;
+ break;
+ case 5:
+ if (IsFanfareTaskInactive())
+ gEggHatchData->CB2_state++;
+ break;
+ case 6:
+ if (IsFanfareTaskInactive())
+ gEggHatchData->CB2_state++;
+ break;
+ case 7:
+ GetMonNick(&gPlayerParty[gEggHatchData->eggPartyID], gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gOtherText_NickHatchPrompt);
+ EggHatchPrintMessage1(gStringVar4);
+ gEggHatchData->CB2_state++;
+ break;
+ case 8:
+ if (EggHatchUpdateWindowText())
+ {
+ MenuDrawTextWindow(22, 8, 27, 13);
+ InitYesNoMenu(22, 8, 4);
+ gEggHatchData->CB2_state++;
+ }
+ break;
+ case 9:
+ {
+ s8 menuInput;
+ if ((menuInput = ProcessMenuInputNoWrap_()) != -2)
+ {
+ if (menuInput != -1 && menuInput != 1)
+ {
+ u16 species;
+ u8 gender;
+ u32 personality;
+
+ GetMonNick(&gPlayerParty[gEggHatchData->eggPartyID], gStringVar3);
+ species = GetMonData(&gPlayerParty[gEggHatchData->eggPartyID], MON_DATA_SPECIES);
+ gender = GetMonGender(&gPlayerParty[gEggHatchData->eggPartyID]);
+ personality = GetMonData(&gPlayerParty[gEggHatchData->eggPartyID], MON_DATA_PERSONALITY, 0);
+ DoNamingScreen(3, gStringVar3, species, gender, personality, EggHatchSetMonNickname);
+ }
+ else
+ gEggHatchData->CB2_state++;
+ }
+ }
+ break;
+ case 10:
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gEggHatchData->CB2_state++;
+ break;
+ case 11:
+ if (!gPaletteFade.active)
+ SetMainCallback2(c2_exit_to_overworld_2_switch);
+ break;
+ }
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void SpriteCB_Egg_0(struct Sprite* sprite)
+{
+ if (++sprite->data0 > 20)
+ {
+ sprite->callback = SpriteCB_Egg_1;
+ sprite->data0 = 0;
+ }
+ else
+ {
+ sprite->data1 = (sprite->data1 + 20) & 0xFF;
+ sprite->pos2.x = Sin(sprite->data1, 1);
+ if (sprite->data0 == 15)
+ {
+ PlaySE(SE_BOWA);
+ StartSpriteAnim(sprite, 1);
+ CreateRandomEggShardSprite();
+ }
+ }
+}
+
+static void SpriteCB_Egg_1(struct Sprite* sprite)
+{
+ if (++sprite->data2 > 30)
+ {
+ if (++sprite->data0 > 20)
+ {
+ sprite->callback = SpriteCB_Egg_2;
+ sprite->data0 = 0;
+ sprite->data2 = 0;
+ }
+ else
+ {
+ sprite->data1 = (sprite->data1 + 20) & 0xFF;
+ sprite->pos2.x = Sin(sprite->data1, 2);
+ if (sprite->data0 == 15)
+ {
+ PlaySE(SE_BOWA);
+ StartSpriteAnim(sprite, 2);
+ }
+ }
+ }
+}
+
+static void SpriteCB_Egg_2(struct Sprite* sprite)
+{
+ if (++sprite->data2 > 30)
+ {
+ if (++sprite->data0 > 38)
+ {
+ u16 species;
+
+ sprite->callback = SpriteCB_Egg_3;
+ sprite->data0 = 0;
+ species = GetMonData(&gPlayerParty[gEggHatchData->eggPartyID], MON_DATA_SPECIES);
+ gSprites[gEggHatchData->pokeSpriteID].pos2.x = 0;
+ gSprites[gEggHatchData->pokeSpriteID].pos2.y = gMonFrontPicCoords[species].y_offset;
+ }
+ else
+ {
+ sprite->data1 = (sprite->data1 + 20) & 0xFF;
+ sprite->pos2.x = Sin(sprite->data1, 2);
+ if (sprite->data0 == 15)
+ {
+ PlaySE(SE_BOWA);
+ StartSpriteAnim(sprite, 2);
+ CreateRandomEggShardSprite();
+ CreateRandomEggShardSprite();
+ }
+ if (sprite->data0 == 30)
+ PlaySE(SE_BOWA);
+ }
+ }
+}
+
+static void SpriteCB_Egg_3(struct Sprite* sprite)
+{
+ if (++sprite->data0 > 50)
+ {
+ sprite->callback = SpriteCB_Egg_4;
+ sprite->data0 = 0;
+ }
+}
+
+static void SpriteCB_Egg_4(struct Sprite* sprite)
+{
+ s16 i;
+ if (sprite->data0 == 0)
+ BeginNormalPaletteFade(-1, -1, 0, 0x10, 0xFFFF);
+ if (sprite->data0 < 4u)
+ {
+ for (i = 0; i <= 3; i++)
+ CreateRandomEggShardSprite();
+ }
+ sprite->data0++;
+ if (!gPaletteFade.active)
+ {
+ PlaySE(SE_TAMAGO);
+ sprite->invisible = 1;
+ sprite->callback = SpriteCB_Egg_5;
+ sprite->data0 = 0;
+ }
+}
+
+static void SpriteCB_Egg_5(struct Sprite* sprite)
+{
+ if (sprite->data0 == 0)
+ {
+ gSprites[gEggHatchData->pokeSpriteID].invisible = 0;
+ StartSpriteAffineAnim(&gSprites[gEggHatchData->pokeSpriteID], 1);
+ }
+ if (sprite->data0 == 8)
+ BeginNormalPaletteFade(-1, -1, 0x10, 0, 0xFFFF);
+ if (sprite->data0 <= 9)
+ gSprites[gEggHatchData->pokeSpriteID].pos1.y -= 1;
+ if (sprite->data0 > 40)
+ sprite->callback = SpriteCallbackDummy;
+ sprite->data0++;
+}
+
+static void SpriteCB_EggShard(struct Sprite* sprite)
+{
+ sprite->data4 += sprite->data1;
+ sprite->data5 += sprite->data2;
+
+ sprite->pos2.x = sprite->data4 / 256;
+ sprite->pos2.y = sprite->data5 / 256;
+
+ sprite->data2 += sprite->data3;
+
+ if (sprite->pos1.y + sprite->pos2.y > sprite->pos1.y + 20 && sprite->data2 > 0)
+ DestroySprite(sprite);
+}
+
+// Converts a number to Q8.8 fixed-point format
+#define Q_8_8(n) ((s16)((n) * 256))
+
+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)},
+};
+
+static void CreateRandomEggShardSprite(void)
+{
+ u16 spriteAnimIndex;
+
+ s16 velocity1 = sEggShardVelocities[gEggHatchData->eggShardVelocityID][0];
+ s16 velocity2 = sEggShardVelocities[gEggHatchData->eggShardVelocityID][1];
+ gEggHatchData->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_820A418, x, y, 4);
+ gSprites[spriteID].data1 = data1;
+ gSprites[spriteID].data2 = data2;
+ gSprites[spriteID].data3 = data3;
+ StartSpriteAnim(&gSprites[spriteID], spriteAnimIndex);
+}
+
+static void EggHatchPrintMessage1(u8* src)
+{
+ sub_8002EB0(&gEggHatchData->window, src, gEggHatchData->tileDataStartOffset, 3, 15);
+}
+
+static void EggHatchPrintMessage2(u8* src)
+{
+ sub_8003460(&gEggHatchData->window, src, gEggHatchData->tileDataStartOffset, 3, 15);
+}
+
+static bool8 EggHatchUpdateWindowText(void)
+{
+ return sub_80035AC(&gEggHatchData->window);
+}
diff --git a/src/event_data.c b/src/event_data.c
index 0484bae02..ee475343f 100644
--- a/src/event_data.c
+++ b/src/event_data.c
@@ -36,10 +36,10 @@ void ClearTempFieldEventData(void)
{
memset(gSaveBlock1.flags, 0, TEMP_FLAGS_SIZE);
memset(gSaveBlock1.vars, 0, TEMP_VARS_SIZE);
- FlagReset(SYS_ENC_UP_ITEM);
- FlagReset(SYS_ENC_DOWN_ITEM);
- FlagReset(SYS_USE_STRENGTH);
- FlagReset(SYS_CTRL_OBJ_DELETE);
+ FlagClear(SYS_ENC_UP_ITEM);
+ FlagClear(SYS_ENC_DOWN_ITEM);
+ FlagClear(SYS_USE_STRENGTH);
+ FlagClear(SYS_CTRL_OBJ_DELETE);
}
// probably had different flag splits at one point.
@@ -53,7 +53,7 @@ void DisableNationalPokedex(void)
u16 *nationalDexVar = GetVarPointer(VAR_NATIONAL_DEX);
gSaveBlock2.pokedex.nationalMagic = 0;
*nationalDexVar = 0;
- FlagReset(SYS_NATIONAL_DEX);
+ FlagClear(SYS_NATIONAL_DEX);
}
void EnableNationalPokedex(void)
@@ -77,7 +77,7 @@ bool32 IsNationalPokedexEnabled(void)
void DisableMysteryGift(void)
{
- FlagReset(SYS_EXDATA_ENABLE);
+ FlagClear(SYS_EXDATA_ENABLE);
}
void EnableMysteryGift(void)
@@ -93,7 +93,7 @@ bool32 IsMysteryGiftEnabled(void)
void DisableResetRTC(void)
{
VarSet(VAR_RESET_RTC_ENABLE, 0);
- FlagReset(SYS_RESET_RTC_ENABLE);
+ FlagClear(SYS_RESET_RTC_ENABLE);
}
void EnableResetRTC(void)
@@ -162,7 +162,7 @@ u8 FlagSet(u16 id)
return 0;
}
-u8 FlagReset(u16 id)
+u8 FlagClear(u16 id)
{
u8 *ptr = GetFlagPointer(id);
if (ptr)
diff --git a/src/evolution_graphics.c b/src/evolution_graphics.c
new file mode 100644
index 000000000..1fd5bf8fa
--- /dev/null
+++ b/src/evolution_graphics.c
@@ -0,0 +1,614 @@
+#include "global.h"
+#include "evolution_graphics.h"
+#include "sprite.h"
+#include "trig.h"
+#include "rng.h"
+#include "decompress.h"
+#include "task.h"
+#include "sound.h"
+#include "songs.h"
+#include "palette.h"
+
+// this file's functions
+static void EvoSparkle_DummySpriteCb(struct Sprite* sprite);
+static void EvoTask_BeginPreSet1_FadeAndPlaySE(u8 taskID);
+static void EvoTask_CreatePreEvoSparkleSet1(u8 taskID);
+static void EvoTask_WaitForPre1SparklesToGoUp(u8 taskID);
+static void EvoTask_BeginPreSparklesSet2(u8 taskID);
+static void EvoTask_CreatePreEvoSparklesSet2(u8 taskID);
+static void EvoTask_DestroyPreSet2Task(u8 taskID);
+static void EvoTask_BeginPostSparklesSet1(u8 taskID);
+static void EvoTask_CreatePostEvoSparklesSet1(u8 taskID);
+static void EvoTask_DestroyPostSet1Task(u8 taskID);
+static void EvoTask_BeginPostSparklesSet2_AndFlash(u8 taskID);
+static void EvoTask_CreatePostEvoSparklesSet2_AndFlash(u8 taskID);
+static void EvoTask_BeginPostSparklesSet2_AndFlash_Trade(u8 taskID);
+static void EvoTask_CreatePostEvoSparklesSet2_AndFlash_Trade(u8 taskID);
+static void EvoTask_DestroyPostSet2AndFlashTask(u8 taskID);
+
+static void sub_8149FC8(u8 taskID);
+static void sub_8149FEC(u8 taskID);
+static void PreEvoVisible_PostEvoInvisible_KillTask(u8 taskID);
+static void PreEvoInVisible_PostEvoVisible_KillTask(u8 taskID);
+static void sub_814A03C(u8 taskID);
+
+// const data
+static const u16 sEvoSparklePalette[] = INCBIN_U16("graphics/misc/evo_sparkle.gbapal");
+static const u8 sEvoSparkleTiles[] = INCBIN_U8("graphics/misc/evo_sparkle.4bpp.lz");
+
+static const struct CompressedSpriteSheet sEvoSparkleSpriteSheets[] =
+{
+ {sEvoSparkleTiles, 0x20, 1001},
+ {NULL, 0, 0}
+};
+static const struct SpritePalette sEvoSparkleSpritePals[] =
+{
+ {sEvoSparklePalette, 1001},
+ {NULL, 0}
+};
+
+static const struct OamData sOamData_EvoSparkle =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sSpriteAnim_EvoSparkle[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_EvoSparkle[] =
+{
+ sSpriteAnim_EvoSparkle,
+};
+
+static const struct SpriteTemplate sEvoSparkleSpriteTemplate =
+{
+ .tileTag = 1001,
+ .paletteTag = 1001,
+ .oam = &sOamData_EvoSparkle,
+ .anims = sSpriteAnimTable_EvoSparkle,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = EvoSparkle_DummySpriteCb
+};
+
+static const s16 sEvoSparkleMatricies[] =
+{
+ 0x3C0, 0x380, 0x340, 0x300, 0x2C0, 0x280, 0x240, 0x200, 0x1C0,
+ 0x180, 0x140, 0x100, -4, 0x10, -3, 0x30, -2, 0x50,
+ -1, 0x70, 0x1, 0x70, 0x2, 0x50, 0x3, 0x30, 0x4, 0x10
+};
+
+// code
+
+static void EvoSparkle_DummySpriteCb(struct Sprite* sprite)
+{
+
+}
+
+static void SetEvoSparklesMatrices(void)
+{
+ u16 i;
+ for (i = 0; i < 12; i++)
+ {
+ SetOamMatrix(20 + i, sEvoSparkleMatricies[i], 0, 0, sEvoSparkleMatricies[i]);
+ }
+}
+
+static void SpriteCB_PreEvoSparkleSet1(struct Sprite* sprite)
+{
+ if (sprite->pos1.y > 8)
+ {
+ u8 matrixNum;
+
+ sprite->pos1.y = 88 - (sprite->data7 * sprite->data7) / 80;
+ sprite->pos2.y = Sin((u8)(sprite->data6), sprite->data5) / 4;
+ sprite->pos2.x = Cos((u8)(sprite->data6), sprite->data5);
+ sprite->data6 += 4;
+ if (sprite->data7 & 1)
+ sprite->data5--;
+ sprite->data7++;
+ if (sprite->pos2.y > 0)
+ sprite->subpriority = 1;
+ else
+ sprite->subpriority = 20;
+ matrixNum = sprite->data5 / 4 + 20;
+ if (matrixNum > 31)
+ matrixNum = 31;
+ sprite->oam.matrixNum = matrixNum;
+ }
+ else
+ DestroySprite(sprite);
+}
+
+static void CreatePreEvoSparkleSet1(u8 arg0)
+{
+ u8 spriteID = CreateSprite(&sEvoSparkleSpriteTemplate, 120, 88, 0);
+ if (spriteID != MAX_SPRITES)
+ {
+ gSprites[spriteID].data5 = 48;
+ gSprites[spriteID].data6 = arg0;
+ gSprites[spriteID].data7 = 0;
+ gSprites[spriteID].oam.affineMode = 1;
+ gSprites[spriteID].oam.matrixNum = 31;
+ gSprites[spriteID].callback = SpriteCB_PreEvoSparkleSet1;
+ }
+}
+
+static void SpriteCB_PreEvoSparkleSet2(struct Sprite* sprite)
+{
+ if (sprite->pos1.y < 88)
+ {
+ sprite->pos1.y = 8 + (sprite->data7 * sprite->data7) / 5;
+ sprite->pos2.y = Sin((u8)(sprite->data6), sprite->data5) / 4;
+ sprite->pos2.x = Cos((u8)(sprite->data6), sprite->data5);
+ sprite->data5 = 8 + Sin((u8)(sprite->data7 * 4), 40);
+ sprite->data7++;
+ }
+ else
+ DestroySprite(sprite);
+}
+
+static void CreatePreEvoSparkleSet2(u8 arg0)
+{
+ u8 spriteID = CreateSprite(&sEvoSparkleSpriteTemplate, 120, 8, 0);
+ if (spriteID != MAX_SPRITES)
+ {
+ gSprites[spriteID].data5 = 8;
+ gSprites[spriteID].data6 = arg0;
+ gSprites[spriteID].data7 = 0;
+ gSprites[spriteID].oam.affineMode = 1;
+ gSprites[spriteID].oam.matrixNum = 25;
+ gSprites[spriteID].subpriority = 1;
+ gSprites[spriteID].callback = SpriteCB_PreEvoSparkleSet2;
+ }
+}
+
+static void SpriteCB_PostEvoSparkleSet1(struct Sprite* sprite)
+{
+ if (sprite->data5 > 8)
+ {
+ sprite->pos2.y = Sin((u8)(sprite->data6), sprite->data5);
+ sprite->pos2.x = Cos((u8)(sprite->data6), sprite->data5);
+ sprite->data5 -= sprite->data3;
+ sprite->data6 += 4;
+ }
+ else
+ DestroySprite(sprite);
+}
+
+static void CreatePostEvoSparkleSet1(u8 arg0, u8 arg1)
+{
+ u8 spriteID = CreateSprite(&sEvoSparkleSpriteTemplate, 120, 56, 0);
+ if (spriteID != MAX_SPRITES)
+ {
+ gSprites[spriteID].data3 = arg1;
+ gSprites[spriteID].data5 = 120;
+ gSprites[spriteID].data6 = arg0;
+ gSprites[spriteID].data7 = 0;
+ gSprites[spriteID].oam.affineMode = 1;
+ gSprites[spriteID].oam.matrixNum = 31;
+ gSprites[spriteID].subpriority = 1;
+ gSprites[spriteID].callback = SpriteCB_PostEvoSparkleSet1;
+ }
+}
+
+static void SpriteCB_PostEvoSparkleSet2(struct Sprite* sprite)
+{
+ if (!(sprite->data7 & 3))
+ sprite->pos1.y++;
+ if (sprite->data6 < 128)
+ {
+ u8 matrixNum;
+
+ sprite->pos2.y = -Sin((u8)(sprite->data6), sprite->data5);
+ sprite->pos1.x = 120 + (sprite->data3 * sprite->data7) / 3;
+ sprite->data6++;
+ matrixNum = 31 - (sprite->data6 * 12 / 128);
+ if (sprite->data6 > 64)
+ sprite->subpriority = 1;
+ else
+ {
+ sprite->invisible = 0;
+ sprite->subpriority = 20;
+ if (sprite->data6 > 112 && sprite->data6 & 1)
+ sprite->invisible = 1;
+ }
+ if (matrixNum < 20)
+ matrixNum = 20;
+ sprite->oam.matrixNum = matrixNum;
+ sprite->data7++;
+ }
+ else
+ DestroySprite(sprite);
+}
+
+static void CreatePostEvoSparkleSet2(u8 arg0)
+{
+ u8 spriteID = CreateSprite(&sEvoSparkleSpriteTemplate, 120, 56, 0);
+ if (spriteID != MAX_SPRITES)
+ {
+ gSprites[spriteID].data3 = 3 - (Random() % 7);
+ gSprites[spriteID].data5 = 48 + (Random() & 0x3F);
+ gSprites[spriteID].data7 = 0;
+ gSprites[spriteID].oam.affineMode = 1;
+ gSprites[spriteID].oam.matrixNum = 31;
+ gSprites[spriteID].subpriority = 20;
+ gSprites[spriteID].callback = SpriteCB_PostEvoSparkleSet2;
+ }
+}
+
+void LoadEvoSparkleSpriteAndPal(void)
+{
+ LoadCompressedObjectPic(&sEvoSparkleSpriteSheets[0]);
+ LoadSpritePalettes(sEvoSparkleSpritePals);
+}
+
+#define tFrameCounter data[15]
+
+u8 LaunchTask_PreEvoSparklesSet1(u16 arg0)
+{
+ u8 taskID = CreateTask(EvoTask_BeginPreSet1_FadeAndPlaySE, 0);
+ gTasks[taskID].data[1] = arg0;
+ return taskID;
+}
+
+static void EvoTask_BeginPreSet1_FadeAndPlaySE(u8 taskID)
+{
+ SetEvoSparklesMatrices();
+ gTasks[taskID].tFrameCounter = 0;
+ BeginNormalPaletteFade(3 << gTasks[taskID].data[1], 0xA, 0, 0x10, 0x7FFF);
+ gTasks[taskID].func = EvoTask_CreatePreEvoSparkleSet1;
+ PlaySE(SE_W025);
+}
+
+static void EvoTask_CreatePreEvoSparkleSet1(u8 taskID)
+{
+ if (gTasks[taskID].tFrameCounter < 64)
+ {
+ if (!(gTasks[taskID].tFrameCounter & 7))
+ {
+ u8 i;
+ for (i = 0; i < 4; i++)
+ CreatePreEvoSparkleSet1((0x78 & gTasks[taskID].tFrameCounter) * 2 + i * 64);
+ }
+ gTasks[taskID].tFrameCounter++;
+ }
+ else
+ {
+ gTasks[taskID].tFrameCounter = 96;
+ gTasks[taskID].func = EvoTask_WaitForPre1SparklesToGoUp;
+ }
+}
+
+static void EvoTask_WaitForPre1SparklesToGoUp(u8 taskID)
+{
+ if (gTasks[taskID].tFrameCounter != 0)
+ gTasks[taskID].tFrameCounter--;
+ else
+ DestroyTask(taskID);
+}
+
+u8 LaunchTask_PreEvoSparklesSet2(void)
+{
+ return CreateTask(EvoTask_BeginPreSparklesSet2, 0);
+}
+
+static void EvoTask_BeginPreSparklesSet2(u8 taskID)
+{
+ SetEvoSparklesMatrices();
+ gTasks[taskID].tFrameCounter = 0;
+ gTasks[taskID].func = EvoTask_CreatePreEvoSparklesSet2;
+ PlaySE(SE_W062B);
+}
+
+static void EvoTask_CreatePreEvoSparklesSet2(u8 taskID)
+{
+ if (gTasks[taskID].tFrameCounter < 96)
+ {
+ if (gTasks[taskID].tFrameCounter < 6)
+ {
+ u8 i;
+ for (i = 0; i < 9; i++)
+ CreatePreEvoSparkleSet2(i * 16);
+ }
+ gTasks[taskID].tFrameCounter++;
+ }
+ else
+ gTasks[taskID].func = EvoTask_DestroyPreSet2Task;
+}
+
+static void EvoTask_DestroyPreSet2Task(u8 taskID)
+{
+ DestroyTask(taskID);
+}
+
+u8 LaunchTask_PostEvoSparklesSet1(void)
+{
+ return CreateTask(EvoTask_BeginPostSparklesSet1, 0);
+}
+
+static void EvoTask_BeginPostSparklesSet1(u8 taskID)
+{
+ SetEvoSparklesMatrices();
+ gTasks[taskID].tFrameCounter = 0;
+ gTasks[taskID].func = EvoTask_CreatePostEvoSparklesSet1;
+ PlaySE(SE_REAPOKE);
+}
+
+static void EvoTask_CreatePostEvoSparklesSet1(u8 taskID)
+{
+ if (gTasks[taskID].tFrameCounter < 48)
+ {
+ if (gTasks[taskID].tFrameCounter == 0)
+ {
+ u8 i;
+ for (i = 0; i < 16; i++)
+ CreatePostEvoSparkleSet1(i * 16, 4);
+ }
+ if (gTasks[taskID].tFrameCounter == 32)
+ {
+ u8 i;
+ for (i = 0; i < 16; i++)
+ CreatePostEvoSparkleSet1(i * 16, 8);
+ }
+ gTasks[taskID].tFrameCounter++;
+ }
+ else
+ gTasks[taskID].func = EvoTask_DestroyPostSet1Task;
+}
+
+static void EvoTask_DestroyPostSet1Task(u8 taskID)
+{
+ DestroyTask(taskID);
+}
+
+u8 LaunchTask_PostEvoSparklesSet2AndFlash(u16 species)
+{
+ u8 taskID = CreateTask(EvoTask_BeginPostSparklesSet2_AndFlash, 0);
+ gTasks[taskID].data[2] = species;
+ return taskID;
+}
+
+static void EvoTask_BeginPostSparklesSet2_AndFlash(u8 taskID)
+{
+ SetEvoSparklesMatrices();
+ gTasks[taskID].tFrameCounter = 0;
+ CpuSet(&gPlttBufferFaded[0x20], &gPlttBufferUnfaded[0x20], 0x30);
+ BeginNormalPaletteFade(0xFFF9001C, 0, 0, 0x10, 0x7FFF);
+ gTasks[taskID].func = EvoTask_CreatePostEvoSparklesSet2_AndFlash;
+ PlaySE(SE_W080);
+}
+
+static void EvoTask_CreatePostEvoSparklesSet2_AndFlash(u8 taskID)
+{
+ if (gTasks[taskID].tFrameCounter < 128)
+ {
+ u8 i;
+ switch (gTasks[taskID].tFrameCounter)
+ {
+ default:
+ if (gTasks[taskID].tFrameCounter < 50)
+ CreatePostEvoSparkleSet2(Random() & 7);
+ break;
+ case 0:
+ for (i = 0; i < 8; i++)
+ CreatePostEvoSparkleSet2(i);
+ break;
+ case 32:
+ BeginNormalPaletteFade(0xFFFF001C, 0x10, 0x10, 0, 0x7FFF);
+ break;
+ }
+ gTasks[taskID].tFrameCounter++;
+ }
+ else
+ gTasks[taskID].func = EvoTask_DestroyPostSet2AndFlashTask;
+}
+
+static void EvoTask_DestroyPostSet2AndFlashTask(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ DestroyTask(taskID);
+}
+
+u8 LaunchTask_PostEvoSparklesSet2AndFlash_Trade(u16 species)
+{
+ u8 taskID = CreateTask(EvoTask_BeginPostSparklesSet2_AndFlash_Trade, 0);
+ gTasks[taskID].data[2] = species;
+ return taskID;
+}
+
+static void EvoTask_BeginPostSparklesSet2_AndFlash_Trade(u8 taskID)
+{
+ SetEvoSparklesMatrices();
+ gTasks[taskID].tFrameCounter = 0;
+ CpuSet(&gPlttBufferFaded[0x20], &gPlttBufferUnfaded[0x20], 0x30);
+ BeginNormalPaletteFade(0xFFF90001, 0, 0, 0x10, 0x7FFF);
+ gTasks[taskID].func = EvoTask_CreatePostEvoSparklesSet2_AndFlash_Trade;
+ PlaySE(SE_W080);
+}
+
+static void EvoTask_CreatePostEvoSparklesSet2_AndFlash_Trade(u8 taskID)
+{
+ if (gTasks[taskID].tFrameCounter < 128)
+ {
+ u8 i;
+ switch (gTasks[taskID].tFrameCounter)
+ {
+ default:
+ if (gTasks[taskID].tFrameCounter < 50)
+ CreatePostEvoSparkleSet2(Random() & 7);
+ break;
+ case 0:
+ for (i = 0; i < 8; i++)
+ CreatePostEvoSparkleSet2(i);
+ break;
+ case 32:
+ BeginNormalPaletteFade(0xFFFF0001, 0x10, 0x10, 0, 0x7FFF);
+ break;
+ }
+ gTasks[taskID].tFrameCounter++;
+ }
+ else
+ gTasks[taskID].func = EvoTask_DestroyPostSet2AndFlashTask;
+}
+
+#undef tFrameCounter
+
+static void PokeEvoSprite_DummySpriteCB(struct Sprite* sprite)
+{
+
+}
+
+#define tPreEvoSpriteID data[1]
+#define tPostEvoSpriteID data[2]
+#define tEvoStopped data[8]
+
+u8 sub_8149E7C(u8 preEvoSpriteID, u8 postEvoSpriteID)
+{
+ u16 i;
+ u16 stack[16];
+ u8 taskID;
+ s32 toDiv;
+
+ for (i = 0; i < 16; i++)
+ stack[i] = 0x7FFF;
+
+ taskID = CreateTask(sub_8149FC8, 0);
+ gTasks[taskID].tPreEvoSpriteID = preEvoSpriteID;
+ gTasks[taskID].tPostEvoSpriteID = postEvoSpriteID;
+ gTasks[taskID].data[3] = 256;
+ gTasks[taskID].data[4] = 16;
+
+ toDiv = 65536;
+ SetOamMatrix(30, 256, 0, 0, 256);
+ SetOamMatrix(31, toDiv / gTasks[taskID].data[4], 0, 0, toDiv / gTasks[taskID].data[4]);
+
+ gSprites[preEvoSpriteID].callback = PokeEvoSprite_DummySpriteCB;
+ gSprites[preEvoSpriteID].oam.affineMode = 1;
+ gSprites[preEvoSpriteID].oam.matrixNum = 30;
+ gSprites[preEvoSpriteID].invisible = 0;
+ CpuSet(stack, &gPlttBufferFaded[0x100 + (gSprites[preEvoSpriteID].oam.paletteNum * 16)], 16);
+
+ gSprites[postEvoSpriteID].callback = PokeEvoSprite_DummySpriteCB;
+ gSprites[postEvoSpriteID].oam.affineMode = 1;
+ gSprites[postEvoSpriteID].oam.matrixNum = 31;
+ gSprites[postEvoSpriteID].invisible = 0;
+ CpuSet(stack, &gPlttBufferFaded[0x100 + (gSprites[postEvoSpriteID].oam.paletteNum * 16)], 16);
+
+ gTasks[taskID].tEvoStopped = FALSE;
+ return taskID;
+}
+
+static void sub_8149FC8(u8 taskID)
+{
+ gTasks[taskID].data[5] = 0;
+ gTasks[taskID].data[6] = 8;
+ gTasks[taskID].func = sub_8149FEC;
+}
+
+static void sub_8149FEC(u8 taskID)
+{
+ if (gTasks[taskID].tEvoStopped)
+ PreEvoVisible_PostEvoInvisible_KillTask(taskID);
+ else if (gTasks[taskID].data[6] == 128)
+ PreEvoInVisible_PostEvoVisible_KillTask(taskID);
+ else
+ {
+ gTasks[taskID].data[6] += 2;
+ gTasks[taskID].data[5] ^= 1;
+ gTasks[taskID].func = sub_814A03C;
+ }
+}
+
+static void sub_814A03C(u8 taskID)
+{
+ if (gTasks[taskID].tEvoStopped)
+ gTasks[taskID].func = PreEvoVisible_PostEvoInvisible_KillTask;
+ else
+ {
+ u16 oamMatrixArg;
+ u8 r6 = 0;
+ if (gTasks[taskID].data[5] == 0)
+ {
+ if (gTasks[taskID].data[3] < 256 - gTasks[taskID].data[6])
+ gTasks[taskID].data[3] += gTasks[taskID].data[6];
+ else
+ {
+ gTasks[taskID].data[3] = 256;
+ r6++;
+ }
+ if (gTasks[taskID].data[4] > 16 + gTasks[taskID].data[6])
+ gTasks[taskID].data[4] -= gTasks[taskID].data[6];
+ else
+ {
+ gTasks[taskID].data[4] = 16;
+ r6++;
+ }
+ }
+ else
+ {
+ if (gTasks[taskID].data[4] < 256 - gTasks[taskID].data[6])
+ gTasks[taskID].data[4] += gTasks[taskID].data[6];
+ else
+ {
+ gTasks[taskID].data[4] = 256;
+ r6++;
+ }
+ if (gTasks[taskID].data[3] > 16 + gTasks[taskID].data[6])
+ gTasks[taskID].data[3] -= gTasks[taskID].data[6];
+ else
+ {
+ gTasks[taskID].data[3] = 16;
+ r6++;
+ }
+ }
+ oamMatrixArg = 65536 / gTasks[taskID].data[3];
+ SetOamMatrix(30, oamMatrixArg, 0, 0, oamMatrixArg);
+
+ oamMatrixArg = 65536 / gTasks[taskID].data[4];
+ SetOamMatrix(31, oamMatrixArg, 0, 0, oamMatrixArg);
+ if (r6 == 2)
+ gTasks[taskID].func = sub_8149FEC;
+ }
+}
+
+static void PreEvoInVisible_PostEvoVisible_KillTask(u8 taskID)
+{
+ gSprites[gTasks[taskID].tPreEvoSpriteID].oam.affineMode = 0;
+ gSprites[gTasks[taskID].tPreEvoSpriteID].oam.matrixNum = 0;
+ gSprites[gTasks[taskID].tPreEvoSpriteID].invisible = 1;
+
+ gSprites[gTasks[taskID].tPostEvoSpriteID].oam.affineMode = 0;
+ gSprites[gTasks[taskID].tPostEvoSpriteID].oam.matrixNum = 0;
+ gSprites[gTasks[taskID].tPostEvoSpriteID].invisible = 0;
+
+ DestroyTask(taskID);
+}
+
+static void PreEvoVisible_PostEvoInvisible_KillTask(u8 taskID)
+{
+ gSprites[gTasks[taskID].tPreEvoSpriteID].oam.affineMode = 0;
+ gSprites[gTasks[taskID].tPreEvoSpriteID].oam.matrixNum = 0;
+ gSprites[gTasks[taskID].tPreEvoSpriteID].invisible = 0;
+
+ gSprites[gTasks[taskID].tPostEvoSpriteID].oam.affineMode = 0;
+ gSprites[gTasks[taskID].tPostEvoSpriteID].oam.matrixNum = 0;
+ gSprites[gTasks[taskID].tPostEvoSpriteID].invisible = 1;
+
+ DestroyTask(taskID);
+}
diff --git a/src/evolution_scene.c b/src/evolution_scene.c
new file mode 100644
index 000000000..e312b081f
--- /dev/null
+++ b/src/evolution_scene.c
@@ -0,0 +1,3966 @@
+#include "global.h"
+#include "task.h"
+#include "evolution_scene.h"
+#include "evolution_graphics.h"
+#include "palette.h"
+#include "main.h"
+#include "text.h"
+#include "text_window.h"
+#include "pokemon.h"
+#include "string_util.h"
+#include "battle.h"
+#include "unknown_task.h"
+#include "data2.h"
+#include "decompress.h"
+#include "m4a.h"
+#include "trade.h"
+#include "menu.h"
+#include "pokedex.h"
+#include "species.h"
+#include "sound.h"
+#include "songs.h"
+#include "overworld.h"
+#include "battle_message.h"
+#include "pokemon_summary_screen.h"
+#include "menu_cursor.h"
+#include "strings2.h"
+
+struct EvoInfo
+{
+ u8 preEvoSpriteID;
+ u8 postEvoSpriteID;
+ u8 evoTaskID;
+ u8 field_3;
+
+ u8 unk4[0x40];
+ u8 unk44[0x40];
+ u8 unk84[0x40];
+
+ u8 unkC4[0x40][0x20]; // 0x20148C4
+ u8 unk8C4[0x40][0x20]; // 0x20150C4
+ u8 unk10C4[0x40][0x20]; // 0x20158C4
+ u8 unk18C4[0x40][0x20]; // 0x20160C4
+ u8 unk20C4[0x40][0x20]; // 0x20168C4
+ u8 unk28C4[0x40][0x20]; // 0x20170C4
+ u8 unk30C4[0x40][0x20]; // 0x20178C4
+ u8 unk38C4[0x40][0x20]; // 0x20180C4
+
+ u8 *unk40C4[0x40][0x20]; // 0x20188C4
+
+ u16 unk60C4[0x40][0x20]; // 0x201A8C4
+ u16 unk70C4[0x40][0x20]; // 0x201B8C4
+ u16 unk80C4[0x40][0x20]; // 0x201C8C4
+ u16 unk90C4[0x40][0x20]; // 0x201D8C4
+
+ u8 unkA0C4; // 0x201E8C4
+};
+
+#define sEvoInfo ((*(struct EvoInfo*)(ewram + 0x14800)))
+
+void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies);
+void sub_8024CEC(void);
+void sub_8023A80(void);
+void sub_802BC6C(void);
+void sub_8023AD8(void);
+void nullsub_6(void);
+bool32 IsHMMove2(u16 move);
+
+extern struct Window gUnknown_03004210;
+extern u16 gUnknown_030042A4;
+extern u16 gUnknown_030042A0;
+extern u16 gUnknown_030042C0;
+extern u16 gUnknown_030041B4;
+extern u16 gUnknown_03004288;
+extern u16 gUnknown_03004280;
+extern u16 gUnknown_030041B0;
+extern u16 gUnknown_030041B8;
+extern u8 gBattleTerrain;
+extern u8 gReservedSpritePaletteCount;
+extern u16 gMoveToLearn;
+extern struct SpriteTemplate gUnknown_02024E8C;
+extern u8 gUnk_2009000[]; // won't match if I 'ewram' it
+extern bool8 gAffineAnimsDisabled;
+extern u8 gDisplayedStringBattle[];
+extern u8 gBattleTextBuff2[];
+
+extern u8 gBattleCommunication[];
+#define sEvoCursorPos gBattleCommunication[1] // when learning a new move
+#define sEvoGraphicsTaskID gBattleCommunication[2]
+
+extern const u8 gUnknown_08400C4A[];
+extern const u8 gUnknown_08400C60[];
+extern const u8 gUnknown_08400C8D[];
+extern void * const gUnknown_081FAF4C[];
+extern const u8* const gBattleStringsTable[];
+
+// this file's functions
+static void Task_EvolutionScene(u8 taskID);
+static void Task_TradeEvolutionScene(u8 taskID);
+static void CB2_EvolutionSceneUpdate(void);
+static void CB2_TradeEvolutionSceneUpdate(void);
+static void EvoDummyFunc(void);
+static void EvoDummyFunc2(void);
+static void VBlankCB_EvolutionScene(void);
+static void VBlankCB_TradeEvolutionScene(void);
+static void sub_81150D8(void);
+
+// iwram common
+MainCallback gCB2_AfterEvolution;
+
+// const data
+static const u8 sUnknownShedinjaJpnString[] = _("ヌケニン");
+static const u8 sUnusedString0[] = _("{COLOR DARK_GREY}{HIGHLIGHT WHITE2}{SHADOW LIGHT_GREY}");
+static const u8 sUnusedString1[] = _("▶\n ");
+static const u8 sUnusedString2[] = _(" \n▶");
+static const u8 sUnusedString3[] = _(" \n ");
+static const u8 sPadding[9] = {0};
+
+// code
+
+static void CB2_BeginEvolutionScene(void)
+{
+ UpdatePaletteFade();
+ RunTasks();
+}
+
+#define tState data[0]
+#define tMonPtrHI data[1]
+#define tMonPtrLO data[2]
+#define tPreEvoSpecies data[3]
+#define tPostEvoSpecies data[4]
+#define tCanStop data[5] // in first fast data[5] only checks that
+#define tBits data[5] // in the second task, it works as a bitfield
+#define tLearnsFirstMove data[6]
+#define tLearnMoveState data[8]
+#define tData9 data[9]
+#define tData10 data[10]
+#define tEvoWasStopped data[11]
+#define tPartyID data[12]
+
+#define TASK_BIT_CAN_STOP 0x1
+#define TASK_BIT_LEARN_MOVE 0x80
+
+static void Task_BeginEvolutionScene(u8 taskID)
+{
+ struct Pokemon* mon = NULL;
+ switch (gTasks[taskID].tState)
+ {
+ case 0:
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gTasks[taskID].tState++;
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ {
+ u16 speciesToEvolve;
+ bool8 canStopEvo;
+ u8 partyID;
+
+ mon = (struct Pokemon*)(gTasks[taskID].tMonPtrHI | (gTasks[taskID].tMonPtrLO << 0x10));
+ speciesToEvolve = gTasks[taskID].tPostEvoSpecies;
+ canStopEvo = gTasks[taskID].tCanStop;
+ partyID = gTasks[taskID].tPartyID;
+
+ DestroyTask(taskID);
+ EvolutionScene(mon, speciesToEvolve, canStopEvo, partyID);
+ }
+ break;
+ }
+}
+
+void BeginEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID)
+{
+ u8 taskID = CreateTask(Task_BeginEvolutionScene, 0);
+ gTasks[taskID].tState = 0;
+ gTasks[taskID].tMonPtrHI = (u32)(mon);
+ gTasks[taskID].tMonPtrLO = (u32)(mon) >> 0x10;
+ gTasks[taskID].tPostEvoSpecies = speciesToEvolve;
+ gTasks[taskID].tCanStop = canStopEvo;
+ gTasks[taskID].tPartyID = partyID;
+ SetMainCallback2(CB2_BeginEvolutionScene);
+}
+
+void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID)
+{
+ u8 name[20];
+ u16 currSpecies;
+ u32 TiD, PiD;
+ const struct CompressedSpritePalette** pokePal;
+ u8 ID;
+ SetHBlankCallback(NULL);
+ SetVBlankCallback(NULL);
+ CpuFill32(0, (void*)(VRAM), VRAM_SIZE);
+
+ REG_MOSAIC = 0;
+ REG_WIN0H = 0;
+ REG_WIN0V = 0;
+ REG_WIN1H = 0;
+ REG_WIN1V = 0;
+ REG_WININ = 0;
+ REG_WINOUT = 0;
+
+ SetUpWindowConfig(&gWindowConfig_81E6C58);
+ ResetPaletteFade();
+
+ gUnknown_030042A4 = 0;
+ gUnknown_030042A0 = 0;
+ gUnknown_030042C0 = 0;
+ gUnknown_030041B4 = 0;
+ gUnknown_03004288 = 0;
+ gUnknown_03004280 = 0;
+ gUnknown_030041B0 = 256;
+ gUnknown_030041B8 = 0;
+
+ InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58);
+ gBattleTerrain = BATTLE_TERRAIN_PLAIN;
+
+ sub_800D6D4();
+ sub_800DAB8();
+ ResetSpriteData();
+ remove_some_task();
+ ResetTasks();
+ FreeAllSpritePalettes();
+
+ gReservedSpritePaletteCount = 4;
+
+ GetMonData(mon, MON_DATA_NICKNAME, name);
+ StringCopy10(gStringVar1, name);
+ StringCopy(gStringVar2, gSpeciesNames[speciesToEvolve]);
+
+ // preEvo sprite
+ currSpecies = GetMonData(mon, MON_DATA_SPECIES);
+ TiD = GetMonData(mon, MON_DATA_OT_ID);
+ PiD = GetMonData(mon, MON_DATA_PERSONALITY);
+ DecompressPicFromTable_2(&gMonFrontPicTable[currSpecies],
+ gMonFrontPicCoords[currSpecies].coords,
+ gMonFrontPicCoords[currSpecies].y_offset,
+ (void*)(0x2000000),
+ gUnknown_081FAF4C[1], currSpecies);
+ pokePal = (void*) sub_80409C8(currSpecies, TiD, PiD);
+ LoadCompressedPalette(*pokePal, 0x110, 0x20);
+
+ GetMonSpriteTemplate_803C56C(currSpecies, 1);
+ gUnknown_02024E8C.affineAnims = gDummySpriteAffineAnimTable;
+ sEvoInfo.preEvoSpriteID = ID = CreateSprite(&gUnknown_02024E8C, 120, 64, 30);
+
+ gSprites[ID].callback = nullsub_37;
+ gSprites[ID].oam.paletteNum = 1;
+ gSprites[ID].invisible = 1;
+
+ // postEvo sprite
+ DecompressPicFromTable_2(&gMonFrontPicTable[speciesToEvolve],
+ gMonFrontPicCoords[speciesToEvolve].coords,
+ gMonFrontPicCoords[speciesToEvolve].y_offset,
+ (void*)(0x2000000),
+ gUnknown_081FAF4C[3], speciesToEvolve);
+ pokePal = (void*) sub_80409C8(speciesToEvolve, TiD, PiD);
+ LoadCompressedPalette(*pokePal, 0x120, 0x20);
+
+ GetMonSpriteTemplate_803C56C(speciesToEvolve, 3);
+ gUnknown_02024E8C.affineAnims = gDummySpriteAffineAnimTable;
+ sEvoInfo.postEvoSpriteID = ID = CreateSprite(&gUnknown_02024E8C, 120, 64, 30);
+ gSprites[ID].callback = nullsub_37;
+ gSprites[ID].oam.paletteNum = 2;
+ gSprites[ID].invisible = 1;
+
+ LoadEvoSparkleSpriteAndPal();
+
+ sEvoInfo.evoTaskID = ID = CreateTask(Task_EvolutionScene, 0);
+ gTasks[ID].tState = 0;
+ gTasks[ID].tPreEvoSpecies = currSpecies;
+ gTasks[ID].tPostEvoSpecies = speciesToEvolve;
+ gTasks[ID].tMonPtrHI = (u32)(mon);
+ gTasks[ID].tMonPtrLO = (u32)(mon) >> 0x10;
+ gTasks[ID].tCanStop = canStopEvo;
+ gTasks[ID].tLearnsFirstMove = TRUE;
+ gTasks[ID].tEvoWasStopped = FALSE;
+ gTasks[ID].tPartyID = partyID;
+
+ memcpy(gUnk_2009000, &gPlttBufferUnfaded[0x20], 0x60);
+
+ REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_1D_MAP;
+ SetHBlankCallback(EvoDummyFunc);
+ SetVBlankCallback(VBlankCB_EvolutionScene);
+ m4aMPlayAllStop();
+ SetMainCallback2(CB2_EvolutionSceneUpdate);
+}
+
+static void CB2_EvolutionSceneLoadGraphics(void)
+{
+ u8 ID;
+ const struct CompressedSpritePalette** pokePal;
+ u16 postEvoSpecies;
+ u32 TiD, PiD;
+ struct Pokemon* Mon = &gPlayerParty[gTasks[sEvoInfo.evoTaskID].tPartyID];
+
+ postEvoSpecies = gTasks[sEvoInfo.evoTaskID].tPostEvoSpecies;
+ TiD = GetMonData(Mon, MON_DATA_OT_ID);
+ PiD = GetMonData(Mon, MON_DATA_PERSONALITY);
+
+ SetHBlankCallback(NULL);
+ SetVBlankCallback(NULL);
+ CpuFill32(0, (void*)(VRAM), VRAM_SIZE);
+
+ REG_MOSAIC = 0;
+ REG_WIN0H = 0;
+ REG_WIN0V = 0;
+ REG_WIN1H = 0;
+ REG_WIN1V = 0;
+ REG_WININ = 0;
+ REG_WINOUT = 0;
+ SetUpWindowConfig(&gWindowConfig_81E6C58);
+ ResetPaletteFade();
+ gUnknown_030042A4 = 0;
+ gUnknown_030042A0 = 0;
+ gUnknown_030042C0 = 0;
+ gUnknown_030041B4 = 0;
+ gUnknown_03004288 = 0;
+ gUnknown_03004280 = 0;
+ gUnknown_030041B0 = 256;
+ gUnknown_030041B8 = 0;
+
+ InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58);
+ gBattleTerrain = BATTLE_TERRAIN_PLAIN;
+
+ sub_800D6D4();
+ sub_800DAB8();
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ gReservedSpritePaletteCount = 4;
+
+ DecompressPicFromTable_2(&gMonFrontPicTable[postEvoSpecies],
+ gMonFrontPicCoords[postEvoSpecies].coords,
+ gMonFrontPicCoords[postEvoSpecies].y_offset,
+ (void*)(0x2000000),
+ gUnknown_081FAF4C[3], postEvoSpecies);
+ pokePal = (void*) sub_80409C8(postEvoSpecies, TiD, PiD);
+ LoadCompressedPalette(*pokePal, 0x120, 0x20);
+
+ GetMonSpriteTemplate_803C56C(postEvoSpecies, 3);
+ gUnknown_02024E8C.affineAnims = gDummySpriteAffineAnimTable;
+ sEvoInfo.postEvoSpriteID = ID = CreateSprite(&gUnknown_02024E8C, 120, 64, 30);
+
+ gSprites[ID].callback = nullsub_37;
+ gSprites[ID].oam.paletteNum = 2;
+
+ REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_1D_MAP;
+ SetHBlankCallback(EvoDummyFunc);
+ SetVBlankCallback(VBlankCB_EvolutionScene);
+ SetMainCallback2(CB2_EvolutionSceneUpdate);
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+}
+
+static void CB2_TradeEvolutionSceneLoadGraphics(void)
+{
+ struct Pokemon* Mon = &gPlayerParty[gTasks[sEvoInfo.evoTaskID].tPartyID];
+ u16 postEvoSpecies = gTasks[sEvoInfo.evoTaskID].tPostEvoSpecies;
+
+ switch (gMain.state)
+ {
+ case 0:
+ REG_DISPCNT = 0;
+ SetHBlankCallback(NULL);
+ SetVBlankCallback(NULL);
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ gReservedSpritePaletteCount = 4;
+ gUnknown_030042A4 = 0;
+ gUnknown_030042A0 = 0;
+ gUnknown_030042C0 = 0;
+ gUnknown_030041B4 = 0;
+ gUnknown_03004288 = 0;
+ gUnknown_03004280 = 0;
+ gUnknown_030041B0 = 256;
+ gUnknown_030041B8 = 0;
+ gMain.state++;
+ break;
+ case 1:
+ SetUpWindowConfig(&gWindowConfig_81E6F84);
+ InitWindowFromConfig(&gUnknown_03004828->field_4, &gWindowConfig_81E6F84);
+ gMain.state++;
+ break;
+ case 2:
+ LoadTextWindowGraphics(&gUnknown_03004828->field_4);
+ gUnknown_03004828->field_34 = SetTextWindowBaseTileNum(2);
+ LoadTextWindowGraphics(&gUnknown_03004828->field_4);
+ MenuZeroFillScreen();
+ ResetPaletteFade();
+ gMain.state++;
+ SetHBlankCallback(EvoDummyFunc);
+ SetVBlankCallback(VBlankCB_TradeEvolutionScene);
+ break;
+ case 3:
+ sub_804E22C();
+ gMain.state++;
+ break;
+ case 4:
+ {
+ const struct CompressedSpritePalette** pokePal;
+ u32 TiD = GetMonData(Mon, MON_DATA_OT_ID);
+ u32 PiD = GetMonData(Mon, MON_DATA_PERSONALITY);
+ DecompressPicFromTable_2(&gMonFrontPicTable[postEvoSpecies],
+ gMonFrontPicCoords[postEvoSpecies].coords,
+ gMonFrontPicCoords[postEvoSpecies].y_offset,
+ (void*)(0x2000000),
+ gUnknown_081FAF4C[3], postEvoSpecies);
+ pokePal = (void*) sub_80409C8(postEvoSpecies, TiD, PiD);
+ LoadCompressedPalette(*pokePal, 0x120, 0x20);
+ gMain.state++;
+ }
+ break;
+ case 5:
+ {
+ u8 ID;
+
+ GetMonSpriteTemplate_803C56C(postEvoSpecies, 3);
+ gUnknown_02024E8C.affineAnims = gDummySpriteAffineAnimTable;
+ sEvoInfo.postEvoSpriteID = ID = CreateSprite(&gUnknown_02024E8C, 120, 64, 30);
+
+ gSprites[ID].callback = nullsub_37;
+ gSprites[ID].oam.paletteNum = 2;
+ gMain.state++;
+ }
+ break;
+ case 6:
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ SetMainCallback2(CB2_TradeEvolutionSceneUpdate);
+ REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_1D_MAP;
+ break;
+ }
+}
+
+void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpriteID, u8 partyID)
+{
+ u8 name[20];
+ u16 currSpecies;
+ u32 TiD, PiD;
+ const struct CompressedSpritePalette** pokePal;
+ u8 ID;
+
+ GetMonData(mon, MON_DATA_NICKNAME, name);
+ StringCopy10(gStringVar1, name);
+ StringCopy(gStringVar2, gSpeciesNames[speciesToEvolve]);
+
+ gAffineAnimsDisabled = TRUE;
+
+ // preEvo sprite
+ currSpecies = GetMonData(mon, MON_DATA_SPECIES);
+ PiD = GetMonData(mon, MON_DATA_PERSONALITY);
+ TiD = GetMonData(mon, MON_DATA_OT_ID);
+ sEvoInfo.preEvoSpriteID = preEvoSpriteID;
+ DecompressPicFromTable_2(&gMonFrontPicTable[speciesToEvolve],
+ gMonFrontPicCoords[speciesToEvolve].coords,
+ gMonFrontPicCoords[speciesToEvolve].y_offset,
+ (void*)(0x2000000),
+ gUnknown_081FAF4C[1], speciesToEvolve);
+ pokePal = (void*) sub_80409C8(speciesToEvolve, TiD, PiD);
+ LoadCompressedPalette(*pokePal, 0x120, 0x20);
+
+ GetMonSpriteTemplate_803C56C(speciesToEvolve, 1);
+ gUnknown_02024E8C.affineAnims = gDummySpriteAffineAnimTable;
+ sEvoInfo.postEvoSpriteID = ID = CreateSprite(&gUnknown_02024E8C, 120, 64, 30);
+
+ gSprites[ID].callback = nullsub_37;
+ gSprites[ID].oam.paletteNum = 2;
+ gSprites[ID].invisible = 1;
+
+ LoadEvoSparkleSpriteAndPal();
+
+ sEvoInfo.evoTaskID = ID = CreateTask(Task_TradeEvolutionScene, 0);
+ gTasks[ID].tState = 0;
+ gTasks[ID].tPreEvoSpecies = currSpecies;
+ gTasks[ID].tPostEvoSpecies = speciesToEvolve;
+ gTasks[ID].tMonPtrHI = (u32)(mon);
+ gTasks[ID].tMonPtrLO = (u32)(mon) >> 0x10;
+ gTasks[ID].tLearnsFirstMove = TRUE;
+ gTasks[ID].tEvoWasStopped = FALSE;
+ gTasks[ID].tPartyID = partyID;
+
+ SetMainCallback2(CB2_TradeEvolutionSceneUpdate);
+}
+
+static void CB2_EvolutionSceneUpdate(void)
+{
+ AnimateSprites();
+ BuildOamBuffer();
+ sub_800374C(&gUnknown_03004210);
+ UpdatePaletteFade();
+ RunTasks();
+}
+
+static void CB2_TradeEvolutionSceneUpdate(void)
+{
+ AnimateSprites();
+ BuildOamBuffer();
+ sub_80035AC(&gUnknown_03004828->field_4);
+ UpdatePaletteFade();
+ RunTasks();
+}
+
+static void CreateShedinja(u16 preEvoSpecies, struct Pokemon* mon)
+{
+ u32 data = 0;
+ if (gEvolutionTable[preEvoSpecies].evolutions[0].method == EVO_LEVEL_NINJASK && gPlayerPartyCount < 6)
+ {
+ s32 i;
+ struct Pokemon* Shedinja = &gPlayerParty[gPlayerPartyCount];
+ const struct EvolutionData* EvoTable;
+ const struct EvolutionData* Evos;
+
+ CopyMon(Shedinja, mon, sizeof(struct Pokemon));
+ SetMonData(Shedinja, MON_DATA_SPECIES, (void*)(&gEvolutionTable[preEvoSpecies].evolutions[1].targetSpecies));
+ SetMonData(Shedinja, MON_DATA_NICKNAME, (void*)(gSpeciesNames[gEvolutionTable[preEvoSpecies].evolutions[1].targetSpecies]));
+ SetMonData(Shedinja, MON_DATA_HELD_ITEM, (void*)(&data));
+ SetMonData(Shedinja, MON_DATA_MARKINGS, (void*)(&data));
+ SetMonData(Shedinja, MON_DATA_10, (void*)(&data));
+ for (i = MON_DATA_COOL_RIBBON; i < MON_DATA_COOL_RIBBON + 5; i++)
+ SetMonData(Shedinja, i, (void*)(&data));
+ for (i = MON_DATA_CHAMPION_RIBBON; i <= MON_DATA_FATEFUL_ENCOUNTER; i++)
+ SetMonData(Shedinja, i, (void*)(&data));
+ SetMonData(Shedinja, MON_DATA_STATUS, (void*)(&data));
+ data = 0xFF;
+ SetMonData(Shedinja, MON_DATA_MAIL, (void*)(&data));
+
+ CalculateMonStats(Shedinja);
+ CalculatePlayerPartyCount();
+
+ // can't match it otherwise, ehh
+ EvoTable = gEvolutionTable;
+ Evos = EvoTable + preEvoSpecies;
+ GetNationalPokedexFlag(SpeciesToNationalPokedexNum(Evos->evolutions[1].targetSpecies), 2);
+ GetNationalPokedexFlag(SpeciesToNationalPokedexNum(Evos->evolutions[1].targetSpecies), 3);
+
+ if (GetMonData(Shedinja, MON_DATA_SPECIES) == SPECIES_SHEDINJA
+ && GetMonData(Shedinja, MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE
+ && GetMonData(mon, MON_DATA_SPECIES) == SPECIES_NINJASK)
+ SetMonData(Shedinja, MON_DATA_NICKNAME, sUnknownShedinjaJpnString);
+ }
+}
+
+static void Task_EvolutionScene(u8 taskID)
+{
+ u32 var;
+ struct Pokemon* mon = (struct Pokemon*)(gTasks[taskID].tMonPtrHI | (gTasks[taskID].tMonPtrLO << 0x10));
+
+ // check if B Button was held, so the evolution gets stopped
+ if (gMain.heldKeys == B_BUTTON && gTasks[taskID].tState == 8 && gTasks[taskID].tBits & TASK_BIT_CAN_STOP)
+ {
+ gTasks[taskID].tState = 16;
+ if (gTasks[sEvoGraphicsTaskID].isActive)
+ gTasks[sEvoGraphicsTaskID].EvoGraphicsTaskEvoStop = TRUE;
+ }
+ switch (gTasks[taskID].tState)
+ {
+ case 0:
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ gSprites[sEvoInfo.preEvoSpriteID].invisible = 0;
+ gTasks[taskID].tState++;
+ break;
+ case 1: // print 'whoa, poke is evolving!!!' msg
+ if (!gPaletteFade.active)
+ {
+ StringExpandPlaceholders(gStringVar4, gUnknown_08400C4A);
+ sub_8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15);
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 2: // wait for string, play cry
+ if (gUnknown_03004210.state == 0)
+ {
+ PlayCry1(gTasks[taskID].tPreEvoSpecies, 0);
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 3: // wait for cry, play tu du SE
+ if (IsCryFinished())
+ {
+ PlaySE(BGM_ME_SHINKA);
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 4: // play evolution music and fade screen black
+ if (!IsSEPlaying())
+ {
+ PlayNewMapMusic(BGM_SHINKA);
+ gTasks[taskID].tState++;
+ BeginNormalPaletteFade(0x1C, 4, 0, 0x10, 0);
+ }
+ break;
+ case 5: // after screen fade, preapre evo sparkles
+ if (!gPaletteFade.active)
+ {
+ sEvoGraphicsTaskID = LaunchTask_PreEvoSparklesSet1(17);
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 6: // another set of evo sparkles
+ if (!gTasks[sEvoGraphicsTaskID].isActive)
+ {
+ gTasks[taskID].tState++;
+ sEvoInfo.field_3 = 1;
+ sEvoGraphicsTaskID = LaunchTask_PreEvoSparklesSet2();
+ }
+ break;
+ case 7: // launch task that flashes pre evo with post evo sprites
+ if (!gTasks[sEvoGraphicsTaskID].isActive)
+ {
+ sEvoGraphicsTaskID = sub_8149E7C(sEvoInfo.preEvoSpriteID, sEvoInfo.postEvoSpriteID);
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 8: // wait for the above task to finish
+ if (--sEvoInfo.field_3 == 0)
+ {
+ sEvoInfo.field_3 = 3;
+ if (!gTasks[sEvoGraphicsTaskID].isActive)
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 9: // post evo sparkles
+ sEvoGraphicsTaskID = LaunchTask_PostEvoSparklesSet1();
+ gTasks[taskID].tState++;
+ break;
+ case 10:
+ if (!gTasks[sEvoGraphicsTaskID].isActive)
+ {
+ sEvoGraphicsTaskID = LaunchTask_PostEvoSparklesSet2AndFlash(gTasks[taskID].tPostEvoSpecies);
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 11: // play tu du sound after evolution
+ if (!gTasks[sEvoGraphicsTaskID].isActive)
+ {
+ PlaySE(SE_EXP);
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 12: // play poke cry after evolution and return screed to pre-fade state
+ if (IsSEPlaying())
+ {
+ m4aMPlayAllStop();
+ PlayCry1(gTasks[taskID].tPostEvoSpecies, 0);
+ memcpy(&gPlttBufferUnfaded[0x20], gUnk_2009000, 0x60);
+ BeginNormalPaletteFade(0x1C, 0, 0x10, 0, 0);
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 13: // congratulations string and rename prompt
+ if (IsCryFinished() && !gPaletteFade.active)
+ {
+ StringExpandPlaceholders(gStringVar4, gUnknown_08400C60);
+ sub_8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15);
+ PlayBGM(BGM_FANFA5);
+ gTasks[taskID].tState++;
+ SetMonData(mon, MON_DATA_SPECIES, (void*)(&gTasks[taskID].tPostEvoSpecies));
+ CalculateMonStats(mon);
+ EvolutionRenameMon(mon, gTasks[taskID].tPreEvoSpecies, gTasks[taskID].tPostEvoSpecies);
+ GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 2);
+ GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 3);
+ IncrementGameStat(14);
+ }
+ break;
+ case 14: // check if it wants to learn a new move
+ if (gUnknown_03004210.state == 0)
+ {
+ var = MonTryLearningNewMove(mon, gTasks[taskID].tLearnsFirstMove);
+ if (var != 0 && !gTasks[taskID].tEvoWasStopped)
+ {
+ u8 text[20];
+
+ sub_8053E90();
+ gTasks[taskID].tBits |= TASK_BIT_LEARN_MOVE;
+ gTasks[taskID].tLearnsFirstMove = FALSE;
+ gTasks[taskID].tLearnMoveState = 0;
+ GetMonData(mon, MON_DATA_NICKNAME, text);
+ StringCopy10(gBattleTextBuff1, text);
+ if (var == 0xFFFF) // no place to learn it
+ gTasks[taskID].tState = 21;
+ else if (var == 0xFFFE) // it already knows that move
+ break;
+ else
+ gTasks[taskID].tState = 19; // has less than 4 moves, so it's been learned
+ }
+ else // no move to learn
+ {
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gTasks[taskID].tState++;
+ }
+ }
+ break;
+ case 15: // task has finished, return
+ if (!gPaletteFade.active)
+ {
+ if (!(gTasks[taskID].tBits & TASK_BIT_LEARN_MOVE))
+ sub_8053E90();
+ if (!gTasks[taskID].tEvoWasStopped)
+ CreateShedinja(gTasks[taskID].tPreEvoSpecies, mon);
+ DestroyTask(taskID);
+ SetMainCallback2(gCB2_AfterEvolution);
+ }
+ break;
+ case 16: // evolution has been canceled, stop music and re-fade palette
+ if (!gTasks[sEvoGraphicsTaskID].isActive)
+ {
+ m4aMPlayAllStop();
+ BeginNormalPaletteFade(0x6001C, 0, 0x10, 0, 0x7FFF);
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 17: // play cry of the pokemon trying to evolve again, evolution has been stopped
+ if (!gPaletteFade.active)
+ {
+ PlayCry1(gTasks[taskID].tPreEvoSpecies, 0);
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 18: // after the cry, print the string 'WHOA IT DID NOT EVOLVE!!!'
+ if (IsCryFinished())
+ {
+ StringExpandPlaceholders(gStringVar4, gUnknown_08400C8D);
+ sub_8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15);
+ gTasks[taskID].tEvoWasStopped = TRUE;
+ gTasks[taskID].tState = 14;
+ }
+ break;
+ case 19: // pokemon learned a new move, print string and play a fanfare
+ if (gUnknown_03004210.state == 0 && !IsSEPlaying())
+ {
+ sub_8024CEC();
+ PlayFanfare(BGM_FANFA1);
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[3]);
+ sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ gTasks[taskID].tLearnsFirstMove = 0x40; // re-used as a counter
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 20: // wait a bit and check if can learn another move
+ if (gUnknown_03004210.state == 0 && !IsSEPlaying() && --gTasks[taskID].tLearnsFirstMove == 0)
+ gTasks[taskID].tState = 14;
+ break;
+ case 21: // try to learn a new move
+ switch (gTasks[taskID].tLearnMoveState)
+ {
+ case 0:
+ if (gUnknown_03004210.state == 0 && !IsSEPlaying())
+ {
+ sub_8024CEC();
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[4]);
+ sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ gTasks[taskID].tLearnMoveState++;
+ }
+ break;
+ case 1:
+ if (gUnknown_03004210.state == 0 && !IsSEPlaying())
+ {
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[5]);
+ sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ gTasks[taskID].tLearnMoveState++;
+ }
+ break;
+ case 2:
+ if (gUnknown_03004210.state != 0)
+ break;
+ if (!IsSEPlaying())
+ {
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[6]);
+ sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ gTasks[taskID].tData9 = 5;
+ gTasks[taskID].tData10 = 9;
+ gTasks[taskID].tLearnMoveState++;
+ }
+ case 3:
+ if (gUnknown_03004210.state == 0 && !IsSEPlaying())
+ {
+ sub_8023A80();
+ gTasks[taskID].tLearnMoveState++;
+ sEvoCursorPos = 0;
+ sub_802BC6C();
+ }
+ break;
+ case 4:
+ if (gMain.newKeys & DPAD_UP && sEvoCursorPos != 0)
+ {
+ PlaySE(SE_SELECT);
+ nullsub_6();
+ sEvoCursorPos = 0;
+ sub_802BC6C();
+ }
+ if (gMain.newKeys & DPAD_DOWN && sEvoCursorPos == 0)
+ {
+ PlaySE(SE_SELECT);
+ nullsub_6();
+ sEvoCursorPos = 1;
+ sub_802BC6C();
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ sub_8023AD8();
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]);
+ sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ PlaySE(SE_SELECT);
+ if (sEvoCursorPos != 0)
+ gTasks[taskID].tLearnMoveState = gTasks[taskID].tData10;
+ else
+ {
+ gTasks[taskID].tLearnMoveState = gTasks[taskID].tData9;
+ if (gTasks[taskID].tLearnMoveState == 5)
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ }
+ }
+ if (gMain.newKeys & B_BUTTON)
+ {
+ sub_8023AD8();
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]);
+ sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ PlaySE(SE_SELECT);
+ gTasks[taskID].tLearnMoveState = gTasks[taskID].tData10;
+ }
+ break;
+ case 5:
+ if (!gPaletteFade.active)
+ {
+ sub_809D9F0(gPlayerParty, gTasks[taskID].tPartyID,
+ gPlayerPartyCount - 1, CB2_EvolutionSceneLoadGraphics,
+ gMoveToLearn);
+ gTasks[taskID].tLearnMoveState++;
+ }
+ break;
+ case 6:
+ if (!gPaletteFade.active && gMain.callback2 == CB2_EvolutionSceneUpdate)
+ {
+ var = sub_809FA30(); // moveID
+ if (var == 4)
+ gTasks[taskID].tLearnMoveState = 9;
+ else
+ {
+ u16 move = GetMonData(mon, var + MON_DATA_MOVE1);
+ if (IsHMMove2(move))
+ {
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[307]);
+ sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ gTasks[taskID].tLearnMoveState = 11;
+ }
+ else
+ {
+ gBattleTextBuff2[0] = 0xFD;
+ gBattleTextBuff2[1] = 2;
+ gBattleTextBuff2[2] = move;
+ gBattleTextBuff2[3] = (move & 0xFF00) >> 8;
+ gBattleTextBuff2[4] = EOS;
+ RemoveMonPPBonus(mon, var);
+ SetMonMoveSlot(mon, gMoveToLearn, var);
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[207]);
+ sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ gTasks[taskID].tLearnMoveState++;
+ }
+ }
+ }
+ break;
+ case 7:
+ if (gUnknown_03004210.state == 0 && !IsSEPlaying())
+ {
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[7]);
+ sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ gTasks[taskID].tLearnMoveState++;
+ }
+ break;
+ case 8:
+ if (gUnknown_03004210.state == 0 && !IsSEPlaying())
+ {
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[208]);
+ sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ gTasks[taskID].tState = 19;
+ }
+ break;
+ case 9:
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[8]);
+ sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ gTasks[taskID].tData9 = 10;
+ gTasks[taskID].tData10 = 0;
+ gTasks[taskID].tLearnMoveState = 3;
+ break;
+ case 10:
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[9]);
+ sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ gTasks[taskID].tState = 14;
+ break;
+ case 11:
+ if (gUnknown_03004210.state == 0 && !IsSEPlaying())
+ gTasks[taskID].tLearnMoveState = 5;
+ break;
+ }
+ break;
+ }
+}
+
+static void Task_TradeEvolutionScene(u8 taskID)
+{
+ u32 var;
+ struct Pokemon* mon = (struct Pokemon*)(gTasks[taskID].tMonPtrHI | (gTasks[taskID].tMonPtrLO << 0x10));
+
+ switch (gTasks[taskID].tState)
+ {
+ case 0:
+ StringExpandPlaceholders(gStringVar4, gUnknown_08400C4A);
+ sub_8002EB0(&gUnknown_03004828->field_4, gStringVar4, gUnknown_03004828->field_34, 2, 15);
+ gTasks[taskID].tState++;
+ break;
+ case 1:
+ if (gUnknown_03004828->field_4.state == 0)
+ {
+ PlayCry1(gTasks[taskID].tPreEvoSpecies, 0);
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 2:
+ if (IsCryFinished())
+ {
+ m4aSongNumStop(BGM_SHINKA);
+ PlaySE(BGM_ME_SHINKA);
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 3:
+ if (!IsSEPlaying())
+ {
+ PlayBGM(BGM_SHINKA);
+ gTasks[taskID].tState++;
+ BeginNormalPaletteFade(0x1C, 4, 0, 0x10, 0);
+ }
+ break;
+ case 4:
+ if (!gPaletteFade.active)
+ {
+ REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_1D_MAP;
+ sEvoGraphicsTaskID = LaunchTask_PreEvoSparklesSet1(17);
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 5:
+ if (!gTasks[sEvoGraphicsTaskID].isActive)
+ {
+ gTasks[taskID].tState++;
+ sEvoInfo.field_3 = 1;
+ sEvoGraphicsTaskID = LaunchTask_PreEvoSparklesSet2();
+ }
+ break;
+ case 6:
+ if (!gTasks[sEvoGraphicsTaskID].isActive)
+ {
+ sEvoGraphicsTaskID = sub_8149E7C(sEvoInfo.preEvoSpriteID, sEvoInfo.postEvoSpriteID);
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 7:
+ if (--sEvoInfo.field_3 == 0)
+ {
+ sEvoInfo.field_3 = 3;
+ if (!gTasks[sEvoGraphicsTaskID].isActive)
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 8:
+ sEvoGraphicsTaskID = LaunchTask_PostEvoSparklesSet1();
+ gTasks[taskID].tState++;
+ break;
+ case 9:
+ if (!gTasks[sEvoGraphicsTaskID].isActive)
+ {
+ sEvoGraphicsTaskID = LaunchTask_PostEvoSparklesSet2AndFlash_Trade(gTasks[taskID].tPostEvoSpecies);
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 10:
+ if (!gTasks[sEvoGraphicsTaskID].isActive)
+ {
+ PlaySE(SE_EXP);
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 11:
+ if (IsSEPlaying())
+ {
+ PlayCry1(gTasks[taskID].tPostEvoSpecies, 0);
+ memcpy(&gPlttBufferUnfaded[0x20], gUnk_2009000, 0x60);
+ BeginNormalPaletteFade(1, 0, 0x10, 0, 0);
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 12:
+ if (IsCryFinished() && !gPaletteFade.active)
+ {
+ StringExpandPlaceholders(gStringVar4, gUnknown_08400C60);
+ sub_8002EB0(&gUnknown_03004828->field_4, gStringVar4, gUnknown_03004828->field_34, 2, 15);
+ PlayFanfare(BGM_FANFA5);
+ gTasks[taskID].tState++;
+ SetMonData(mon, MON_DATA_SPECIES, (void*)(&gTasks[taskID].tPostEvoSpecies));
+ CalculateMonStats(mon);
+ EvolutionRenameMon(mon, gTasks[taskID].tPreEvoSpecies, gTasks[taskID].tPostEvoSpecies);
+ GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 2);
+ GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 3);
+ IncrementGameStat(14);
+ }
+ break;
+ case 13:
+ if (gUnknown_03004828->field_4.state == 0 && IsFanfareTaskInactive() == TRUE)
+ {
+ var = MonTryLearningNewMove(mon, gTasks[taskID].tLearnsFirstMove);
+ if (var != 0 && !gTasks[taskID].tEvoWasStopped)
+ {
+ u8 text[20];
+
+ gTasks[taskID].tBits |= TASK_BIT_LEARN_MOVE;
+ gTasks[taskID].tLearnsFirstMove = FALSE;
+ gTasks[taskID].tLearnMoveState = 0;
+ GetMonData(mon, MON_DATA_NICKNAME, text);
+ StringCopy10(gBattleTextBuff1, text);
+ if (var == 0xFFFF)
+ gTasks[taskID].tState = 17;
+ else if (var == 0xFFFE)
+ break;
+ else
+ gTasks[taskID].tState = 15;
+ }
+ else
+ {
+ PlayBGM(BGM_SHINKA);
+ sub_8002EB0(&gUnknown_03004828->field_4, gOtherText_LinkStandby2, gUnknown_03004828->field_34, 2, 15);
+ gTasks[taskID].tState++;
+ }
+ }
+ break;
+ case 14:
+ if (gUnknown_03004828->field_4.state == 0)
+ {
+ DestroyTask(taskID);
+ SetMainCallback2(gCB2_AfterEvolution);
+ }
+ break;
+ case 15:
+ if (gUnknown_03004828->field_4.state == 0 && !IsSEPlaying())
+ {
+ sub_8024CEC();
+ PlayFanfare(BGM_FANFA1);
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[3]);
+ sub_8002EB0(&gUnknown_03004828->field_4, gDisplayedStringBattle, gUnknown_03004828->field_34, 2, 15);
+ gTasks[taskID].tLearnsFirstMove = 0x40; // re-used as a counter
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 16:
+ if (gUnknown_03004828->field_4.state == 0 && IsFanfareTaskInactive() == TRUE && --gTasks[taskID].tLearnsFirstMove == 0)
+ gTasks[taskID].tState = 13;
+ break;
+ case 17:
+ switch (gTasks[taskID].tLearnMoveState)
+ {
+ case 0:
+ if (gUnknown_03004828->field_4.state == 0 && !IsSEPlaying())
+ {
+ sub_8024CEC();
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[4]);
+ sub_8002EB0(&gUnknown_03004828->field_4, gDisplayedStringBattle, gUnknown_03004828->field_34, 2, 15);
+ gTasks[taskID].tLearnMoveState++;
+ }
+ break;
+ case 1:
+ if (gUnknown_03004828->field_4.state == 0 && !IsSEPlaying())
+ {
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[5]);
+ sub_8002EB0(&gUnknown_03004828->field_4, gDisplayedStringBattle, gUnknown_03004828->field_34, 2, 15);
+ gTasks[taskID].tLearnMoveState++;
+ }
+ break;
+ case 2:
+ if (gUnknown_03004828->field_4.state != 0)
+ break;
+ if (!IsSEPlaying())
+ {
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[6]);
+ sub_8002EB0(&gUnknown_03004828->field_4, gDisplayedStringBattle, gUnknown_03004828->field_34, 2, 15);
+ gTasks[taskID].tData9 = 5;
+ gTasks[taskID].tData10 = 9;
+ gTasks[taskID].tLearnMoveState++;
+ }
+ case 3:
+ if (gUnknown_03004828->field_4.state == 0 && !IsSEPlaying())
+ {
+ DrawTextWindow(&gUnknown_03004828->field_4, 24, 8, 29, 13);
+ sEvoCursorPos = 0;
+ InitWindow(&gUnknown_03004828->field_4, gOtherText_YesNoAndPlayer, gUnknown_03004828->field_34 + 128, 25, 9);
+ sub_8002F44(&gUnknown_03004828->field_4);
+ sub_814A5C0(0, 0xFFFF, 0xC, 0x2D9F, 0x20);
+ sub_81150D8();
+ gTasks[taskID].tLearnMoveState++;
+ sEvoCursorPos = 0;
+ }
+ break;
+ case 4:
+ if (gMain.newKeys & DPAD_UP && sEvoCursorPos != 0)
+ {
+ PlaySE(SE_SELECT);
+ EvoDummyFunc2();
+ sEvoCursorPos = 0;
+ sub_81150D8();
+ }
+ if (gMain.newKeys & DPAD_DOWN && sEvoCursorPos == 0)
+ {
+ PlaySE(SE_SELECT);
+ EvoDummyFunc2();
+ sEvoCursorPos = 1;
+ sub_81150D8();
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ ZeroFillWindowRect(&gUnknown_03004828->field_4, 0x18, 8, 0x1D, 0xD);
+ DestroyMenuCursor();
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]);
+ sub_8002EB0(&gUnknown_03004828->field_4, gDisplayedStringBattle, gUnknown_03004828->field_34, 2, 15);
+ PlaySE(SE_SELECT);
+ if (sEvoCursorPos != 0)
+ gTasks[taskID].tLearnMoveState = gTasks[taskID].tData10;
+ else
+ {
+ gTasks[taskID].tLearnMoveState = gTasks[taskID].tData9;
+ if (gTasks[taskID].tLearnMoveState == 5)
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ }
+ }
+ if (gMain.newKeys & B_BUTTON)
+ {
+ ZeroFillWindowRect(&gUnknown_03004828->field_4, 0x18, 8, 0x1D, 0xD);
+ DestroyMenuCursor();
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]);
+ sub_8002EB0(&gUnknown_03004828->field_4, gDisplayedStringBattle, gUnknown_03004828->field_34, 2, 15);
+ PlaySE(SE_SELECT);
+ gTasks[taskID].tLearnMoveState = gTasks[taskID].tData10;
+ }
+ break;
+ case 5:
+ if (!gPaletteFade.active)
+ {
+ sub_809D9F0(gPlayerParty, gTasks[taskID].tPartyID,
+ gPlayerPartyCount - 1, CB2_TradeEvolutionSceneLoadGraphics,
+ gMoveToLearn);
+ gTasks[taskID].tLearnMoveState++;
+ }
+ break;
+ case 6:
+ if (!gPaletteFade.active && gMain.callback2 == CB2_TradeEvolutionSceneUpdate)
+ {
+ var = sub_809FA30(); // moveID
+ if (var == 4)
+ gTasks[taskID].tLearnMoveState = 9;
+ else
+ {
+ u16 move = GetMonData(mon, var + MON_DATA_MOVE1);
+ if (IsHMMove2(move))
+ {
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[307]);
+ sub_8002EB0(&gUnknown_03004828->field_4, gDisplayedStringBattle, gUnknown_03004828->field_34, 2, 15);
+ gTasks[taskID].tLearnMoveState = 11;
+ }
+ else
+ {
+ gBattleTextBuff2[0] = 0xFD;
+ gBattleTextBuff2[1] = 2;
+ gBattleTextBuff2[2] = move;
+ gBattleTextBuff2[3] = (move & 0xFF00) >> 8;
+ gBattleTextBuff2[4] = EOS;
+ RemoveMonPPBonus(mon, var);
+ SetMonMoveSlot(mon, gMoveToLearn, var);
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[207]);
+ sub_8002EB0(&gUnknown_03004828->field_4, gDisplayedStringBattle, gUnknown_03004828->field_34, 2, 15);
+ gTasks[taskID].tLearnMoveState++;
+ }
+ }
+ }
+ break;
+ case 7:
+ if (gUnknown_03004828->field_4.state == 0 && !IsSEPlaying())
+ {
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[7]);
+ sub_8002EB0(&gUnknown_03004828->field_4, gDisplayedStringBattle, gUnknown_03004828->field_34, 2, 15);
+ gTasks[taskID].tLearnMoveState++;
+ }
+ break;
+ case 8:
+ if (gUnknown_03004828->field_4.state == 0 && !IsSEPlaying())
+ {
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[208]);
+ sub_8002EB0(&gUnknown_03004828->field_4, gDisplayedStringBattle, gUnknown_03004828->field_34, 2, 15);
+ gTasks[taskID].tState = 15;
+ }
+ break;
+ case 9:
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[8]);
+ sub_8002EB0(&gUnknown_03004828->field_4, gDisplayedStringBattle, gUnknown_03004828->field_34, 2, 15);
+ gTasks[taskID].tData9 = 10;
+ gTasks[taskID].tData10 = 0;
+ gTasks[taskID].tLearnMoveState = 3;
+ break;
+ case 10:
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[9]);
+ sub_8002EB0(&gUnknown_03004828->field_4, gDisplayedStringBattle, gUnknown_03004828->field_34, 2, 15);
+ gTasks[taskID].tState = 13;
+ break;
+ case 11:
+ if (gUnknown_03004828->field_4.state == 0 && !IsSEPlaying())
+ gTasks[taskID].tLearnMoveState = 5;
+ break;
+ }
+ break;
+ }
+}
+
+/*
+DizzyEgg, 27.08.2017
+NOTE:
+ Functions below are all unused.
+ What's more, they do NOT exist in Emerald.
+ That's why I think there is no reason to decompile those,
+ as they probably were prototypes for the evolution
+ functions.
+*/
+
+/*
+void unref_sub_8113B50(u8 *a, u8 *b)
+{
+ //u8 *sp0 = a;
+ //u8 *sp4 = b;
+#define sp0 a
+#define sp4 b
+ s32 sp8;
+ s32 spC = 0;
+ u32 sp10 = 0;
+ s32 sp14;
+ s32 r6;
+ u32 r8;
+
+ for (sp8 = 0; sp8 < 64; sp8++)
+ {
+ sEvoInfo.unk84[sp8] = 0;
+ sEvoInfo.unk4[sp8] = 0;
+ sEvoInfo.unk44[sp8] = 0;
+ for (r6 = 0; r6 < 32; r6++)
+ {
+ sEvoInfo.unk10C4[sp8][r6] = 0;
+ sEvoInfo.unk18C4[sp8][r6] = 0;
+ sEvoInfo.unk20C4[sp8][r6] = 0;
+ sEvoInfo.unk28C4[sp8][r6] = 0;
+ sEvoInfo.unkC4[sp8][r6] = 0;
+ sEvoInfo.unk8C4[sp8][r6] = 0;
+ sEvoInfo.unk30C4[sp8][r6] = 0;
+ sEvoInfo.unk38C4[sp8][r6] = 0;
+
+ sEvoInfo.unk60C4[sp8][r6] = 0;
+ sEvoInfo.unk70C4[sp8][r6] = 0;
+ sEvoInfo.unk80C4[sp8][r6] = 0;
+ sEvoInfo.unk90C4[sp8][r6] = 0;
+ }
+ }
+
+ sEvoInfo.unkA0C4 = 64;
+ r8 = 0;
+ for (sp8 = 0; sp8 < 64; sp8++)
+ {
+ //_08113C32
+ u32 r3 = 0;
+ u8 *r2 = sp0 + r8;
+
+ for (r6 = 0; r6 < 64; r6++)
+ {
+ sEvoInfo.unk40C4[sp8][r6 >> 1] = r2;
+ switch (r3)
+ {
+ case 0:
+ switch (r6 & 1)
+ {
+ case 0:
+ if (*r2 & 0xF)
+ {
+ sEvoInfo.unk10C4[sp8][sEvoInfo.unk4[sp8]] = r6;
+ r3 = 1;
+ }
+ break;
+ case 1:
+ if (*r2 & 0xF0)
+ {
+ sEvoInfo.unk10C4[sp8][sEvoInfo.unk4[sp8]] = r6;
+ r3 = 1;
+ }
+ break;
+ }
+ break;
+ case 1:
+ switch (r6 & r3)
+ {
+ case 0:
+ if (*r2 & 0xF)
+ {
+ sEvoInfo.unk18C4[sp8][sEvoInfo.unk4[sp8]] = r6 - 1;
+ sEvoInfo.unk4[sp8]++;
+ r3 = 0;
+ }
+ break;
+ case 1:
+ if (*r2 & 0xF0)
+ {
+ sEvoInfo.unk18C4[sp8][sEvoInfo.unk4[sp8]] = r6 - 1;
+ sEvoInfo.unk4[sp8]++;
+ r3 = 0;
+ }
+ break;
+ }
+ }
+ //if (!((r6 + 1) & 7))
+ if ((r6 + 1) % 8 == 0)
+ r2 += 0x1D;
+ else if (r6 & 1)
+ r2 += 1;
+ }
+ if (r3)
+ {
+ sEvoInfo.unk18C4[sp8][sEvoInfo.unk4[sp8]] = r6;
+ sEvoInfo.unk4[sp8]++;
+ }
+ //_08113D26
+ if (!((sp8 + 1) & 7))
+ r8 += 0xE4;
+ else
+ r8 += 4;
+ }
+ //_08113D4A
+ r8 = 0;
+ for (sp8 = 0; sp8 < 64; sp8++)
+ {
+ //_08113D6A
+ u32 r3 = 0;
+ u8 *r2 = sp4 + r8;
+
+ for (r6 = 0; r6 < 64; r6++)
+ {
+ switch (r3)
+ {
+ case 0:
+ switch (r6 & 1)
+ {
+ case 0:
+ if (*r2 & 0xF)
+ {
+ sEvoInfo.unk20C4[sp8][sEvoInfo.unk44[sp8]] = r6;
+ r3 = 1;
+ }
+ break;
+ case 1:
+ if (*r2 & 0xF0)
+ {
+ sEvoInfo.unk20C4[sp8][sEvoInfo.unk44[sp8]] = r6;
+ r3 = 1;
+ }
+ break;
+ }
+ break;
+ case 1:
+ switch (r6 & r3)
+ {
+ case 0:
+ if (*r2 & 0xF)
+ {
+ sEvoInfo.unk28C4[sp8][sEvoInfo.unk44[sp8]] = r6 - 1;
+ sEvoInfo.unk44[sp8]++;
+ r3 = 0;
+ }
+ break;
+ case 1:
+ if (*r2 & 0xF0)
+ {
+ sEvoInfo.unk28C4[sp8][sEvoInfo.unk44[sp8]] = r6 - 1;
+ sEvoInfo.unk44[sp8]++;
+ r3 = 0;
+ }
+ break;
+ }
+ }
+ //_08113DE4
+ if (!((r6 + 1) & 7))
+ r2 += 0x1D;
+ else if (r6 & 1)
+ r2 += 1;
+
+ }
+ if (r3)
+ {
+ sEvoInfo.unk28C4[sp8][sEvoInfo.unk44[sp8]] = r6;
+ sEvoInfo.unk44[sp8]++;
+ }
+ //if (!((sp8 + 1) & 7))
+ if ((sp8 + 1) % 8 == 0)
+ r8 += 0xE4;
+ else
+ r8 += 4;
+ }
+
+ for (sp8 = 0; sp8 < 0x40; sp8++) //_08113E3A
+ {
+ if (sEvoInfo.unk4[sp8] < sEvoInfo.unk44[sp8])
+ {
+ for (spC = 0; spC < sEvoInfo.unk4[sp8]; spC++)
+ {
+ sp14 = 0x100;
+
+ for (r6 = 0; r6 < sEvoInfo.unk44[sp8]; r6++)
+ {
+ s32 r3;
+
+ //_08113EA4
+ if (sEvoInfo.unk10C4[sp8][spC] > sEvoInfo.unk20C4[sp8][r6])
+ r3 = sEvoInfo.unk10C4[sp8][spC] - sEvoInfo.unk20C4[sp8][r6];
+ else
+ r3 = sEvoInfo.unk20C4[sp8][r6] - sEvoInfo.unk10C4[sp8][spC];
+
+ if (sEvoInfo.unk18C4[sp8][spC] > sEvoInfo.unk28C4[sp8][spC])
+ r3 += sEvoInfo.unk18C4[sp8][spC] - sEvoInfo.unk28C4[sp8][spC];
+ else
+ r3 += sEvoInfo.unk28C4[sp8][spC] - sEvoInfo.unk18C4[sp8][spC];
+
+ if (sp14 >= r3 && sEvoInfo.unkC4[sp8][r6] == 0 && sEvoInfo.unk8C4[sp8][r6] == 0)
+ {
+ sp10 = r6;
+ sp14 = r3;
+ }
+ }
+ //_08113F3E
+ sub_81141F0(spC, sp10, sp8);
+ }
+ //_08113F54
+
+ for (r6 = 0; r6 < sEvoInfo.unk44[sp8]; r6++)
+ {
+ if (sEvoInfo.unkC4[sp8][r6] == 0 && sEvoInfo.unk8C4[sp8][r6] == 0)
+ sub_811430C(r6, sp8);
+ }
+ }
+ //_08113F9E
+ if (sEvoInfo.unk4[sp8] == sEvoInfo.unk44[sp8])
+ {
+ for (r6 = 0; r6 < sEvoInfo.unk4[sp8]; r6++)
+ sub_81141F0(r6, r6, sp8);
+ }
+ //_08113FCC
+ if (sEvoInfo.unk4[sp8] > sEvoInfo.unk44[sp8])
+ {
+ for (sp10 = 0; sp10 < sEvoInfo.unk44[sp8]; sp10++)
+ {
+ sp14 = 0x100;
+
+ for (r6 = 0; r6 < sEvoInfo.unk4[sp8]; r6++)
+ {
+ s32 r3;
+
+ if (sEvoInfo.unk10C4[sp8][r6] > sEvoInfo.unk20C4[sp8][sp10])
+ r3 = sEvoInfo.unk10C4[sp8][r6] - sEvoInfo.unk20C4[sp8][sp10];
+ else
+ r3 = sEvoInfo.unk20C4[sp8][sp10] - sEvoInfo.unk10C4[sp8][r6];
+
+ if (sEvoInfo.unk18C4[sp8][r6] > sEvoInfo.unk28C4[sp8][sp10])
+ r3 += sEvoInfo.unk18C4[sp8][r6] - sEvoInfo.unk28C4[sp8][sp10];
+ else
+ r3 += sEvoInfo.unk28C4[sp8][sp10] - sEvoInfo.unk18C4[sp8][r6];
+
+ //r3 = abs(sEvoInfo.unk10C4[sp8][r6] - sEvoInfo.unk20C4[sp8][sp10]);
+ //r3 += abs(sEvoInfo.unk18C4[sp8][r6] - sEvoInfo.unk28C4[sp8][sp10]);
+
+ if (sp14 > r3 && sEvoInfo.unkC4[sp8][r6] == 0)
+ {
+ spC = r6;
+ sp14 = r3;
+ }
+ }
+ //_081140C4
+ sEvoInfo.unk30C4[sp8][spC] = sEvoInfo.unk20C4[sp8][sp10];
+ sEvoInfo.unk38C4[sp8][spC] = sEvoInfo.unk28C4[sp8][sp10];
+ sEvoInfo.unkC4[sp8][spC] = 1;
+ }
+ //_08114104
+ for (r6 = 0; r6 < sEvoInfo.unk4[sp8]; r6++)
+ {
+ sEvoInfo.unk20C4[sp8][r6] = sEvoInfo.unk30C4[sp8][r6];
+ sEvoInfo.unk28C4[sp8][r6] = sEvoInfo.unk38C4[sp8][r6];
+ if (sEvoInfo.unkC4[sp8][r6] != 0)
+ {
+ sEvoInfo.unkC4[sp8][r6] = 0;
+ sub_81141F0(r6, r6, sp8);
+ }
+ else
+ {
+ // Ugh, can't get this part right
+ //u8 *ptr1 = &sEvoInfo.unk10C4[sp8][r6];
+ //u8 *ptr2 = &sEvoInfo.unk18C4[sp8][r6];
+ //s32 r2 = *ptr1 + (*ptr2 - *ptr1) / 2;
+
+ //u8 r0_ = sEvoInfo.unk10C4[sp8][r6];
+ //u8 r2_ = sEvoInfo.unk18C4[sp8][r6];
+ //s32 r2 = (r0_ - r2_) / 2;
+
+ s32 r2 = (sEvoInfo.unk18C4[sp8][r6] - sEvoInfo.unk10C4[sp8][r6]);
+ s32 r2_ = sEvoInfo.unk10C4[sp8][r6];
+
+ sEvoInfo.unk20C4[sp8][r6] = sEvoInfo.unk28C4[sp8][r6] = r2_ + r2 / 2;
+ sEvoInfo.unk28C4[sp8][r6]++;
+ sub_81141F0(r6, r6, sp8);
+ }
+ }
+ }
+ //_081141C4
+ }
+#undef sp0
+#undef sp4
+}
+*/
+__attribute__((naked))
+void unref_sub_8113B50()
+{
+ 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, 0x3C\n\
+ str r0, [sp]\n\
+ str r1, [sp, 0x4]\n\
+ movs r0, 0\n\
+ str r0, [sp, 0xC]\n\
+ movs r1, 0\n\
+ str r1, [sp, 0x10]\n\
+ movs r2, 0\n\
+ str r2, [sp, 0x8]\n\
+ ldr r3, _08113C60 @ =0x02014800\n\
+ mov r12, r3\n\
+ ldr r4, _08113C64 @ =0x000018c4\n\
+ add r4, r12\n\
+ mov r10, r4\n\
+ ldr r5, _08113C68 @ =0x000020c4\n\
+ add r5, r12\n\
+ mov r8, r5\n\
+_08113B7C:\n\
+ adds r0, r3, 0\n\
+ adds r0, 0x84\n\
+ ldr r1, [sp, 0x8]\n\
+ adds r0, r1, r0\n\
+ strb r2, [r0]\n\
+ adds r0, r3, 0x4\n\
+ adds r0, r1, r0\n\
+ strb r2, [r0]\n\
+ ldr r4, _08113C6C @ =0x02014844\n\
+ adds r0, r1, r4\n\
+ strb r2, [r0]\n\
+ movs r6, 0\n\
+ lsls r1, 5\n\
+ mov r9, r1\n\
+ ldr r5, [sp, 0x8]\n\
+ lsls r4, r5, 6\n\
+_08113B9C:\n\
+ mov r0, r9\n\
+ adds r1, r6, r0\n\
+ ldr r5, _08113C70 @ =0x020158c4\n\
+ adds r0, r1, r5\n\
+ strb r2, [r0]\n\
+ mov r5, r10\n\
+ adds r0, r1, r5\n\
+ strb r2, [r0]\n\
+ mov r5, r8\n\
+ adds r0, r1, r5\n\
+ strb r2, [r0]\n\
+ ldr r5, _08113C74 @ =0x020170c4\n\
+ adds r0, r1, r5\n\
+ strb r2, [r0]\n\
+ adds r7, r3, 0\n\
+ adds r7, 0xC4\n\
+ adds r0, r1, r7\n\
+ strb r2, [r0]\n\
+ ldr r5, _08113C78 @ =0x000008c4\n\
+ adds r0, r3, r5\n\
+ adds r0, r1, r0\n\
+ strb r2, [r0]\n\
+ ldr r5, _08113C7C @ =0x000030c4\n\
+ adds r0, r3, r5\n\
+ adds r0, r1, r0\n\
+ strb r2, [r0]\n\
+ ldr r5, _08113C80 @ =0x000038c4\n\
+ adds r0, r3, r5\n\
+ adds r1, r0\n\
+ strb r2, [r1]\n\
+ lsls r1, r6, 1\n\
+ adds r1, r4\n\
+ ldr r5, _08113C84 @ =0x000060c4\n\
+ adds r0, r3, r5\n\
+ adds r0, r1, r0\n\
+ strh r2, [r0]\n\
+ ldr r5, _08113C88 @ =0x000070c4\n\
+ adds r0, r3, r5\n\
+ adds r0, r1, r0\n\
+ strh r2, [r0]\n\
+ ldr r5, _08113C8C @ =0x000080c4\n\
+ adds r0, r3, r5\n\
+ adds r0, r1, r0\n\
+ strh r2, [r0]\n\
+ ldr r5, _08113C90 @ =0x000090c4\n\
+ adds r0, r3, r5\n\
+ adds r1, r0\n\
+ strh r2, [r1]\n\
+ adds r6, 0x1\n\
+ cmp r6, 0x1F\n\
+ ble _08113B9C\n\
+ ldr r0, [sp, 0x8]\n\
+ adds r0, 0x1\n\
+ str r0, [sp, 0x8]\n\
+ cmp r0, 0x3F\n\
+ ble _08113B7C\n\
+ ldr r1, _08113C94 @ =0x0000a0c4\n\
+ add r1, r12\n\
+ movs r0, 0x40\n\
+ strb r0, [r1]\n\
+ movs r1, 0\n\
+ mov r8, r1\n\
+ movs r2, 0\n\
+ str r2, [sp, 0x8]\n\
+ movs r3, 0x80\n\
+ lsls r3, 5\n\
+ adds r3, r7\n\
+ mov r12, r3\n\
+ movs r4, 0xC0\n\
+ lsls r4, 5\n\
+ adds r4, r7\n\
+ mov r9, r4\n\
+ movs r5, 0\n\
+ adds r4, r7, 0\n\
+ subs r4, 0xC0\n\
+_08113C32:\n\
+ movs r3, 0\n\
+ ldr r2, [sp]\n\
+ add r2, r8\n\
+ movs r6, 0\n\
+ ldr r0, [sp, 0x8]\n\
+ adds r0, 0x1\n\
+ str r0, [sp, 0x30]\n\
+ ldr r1, [sp, 0x8]\n\
+ lsls r1, 7\n\
+ mov r10, r1\n\
+ movs r7, 0x1\n\
+ negs r7, r7\n\
+_08113C4A:\n\
+ asrs r0, r6, 1\n\
+ lsls r0, 2\n\
+ add r0, r10\n\
+ ldr r1, _08113C98 @ =0x020188c4\n\
+ adds r0, r1\n\
+ str r2, [r0]\n\
+ cmp r3, 0\n\
+ beq _08113C9C\n\
+ cmp r3, 0x1\n\
+ beq _08113CC6\n\
+ b _08113CF4\n\
+ .align 2, 0\n\
+_08113C60: .4byte 0x02014800\n\
+_08113C64: .4byte 0x000018c4\n\
+_08113C68: .4byte 0x000020c4\n\
+_08113C6C: .4byte 0x02014844\n\
+_08113C70: .4byte 0x020158c4\n\
+_08113C74: .4byte 0x020170c4\n\
+_08113C78: .4byte 0x000008c4\n\
+_08113C7C: .4byte 0x000030c4\n\
+_08113C80: .4byte 0x000038c4\n\
+_08113C84: .4byte 0x000060c4\n\
+_08113C88: .4byte 0x000070c4\n\
+_08113C8C: .4byte 0x000080c4\n\
+_08113C90: .4byte 0x000090c4\n\
+_08113C94: .4byte 0x0000a0c4\n\
+_08113C98: .4byte 0x020188c4\n\
+_08113C9C:\n\
+ movs r0, 0x1\n\
+ ands r0, r6\n\
+ cmp r0, 0\n\
+ beq _08113CAA\n\
+ cmp r0, 0x1\n\
+ beq _08113CB0\n\
+ b _08113CF4\n\
+_08113CAA:\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0xF\n\
+ b _08113CB4\n\
+_08113CB0:\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0xF0\n\
+_08113CB4:\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08113CF4\n\
+ ldrb r0, [r4]\n\
+ adds r0, r5\n\
+ add r0, r12\n\
+ strb r6, [r0]\n\
+ movs r3, 0x1\n\
+ b _08113CF4\n\
+_08113CC6:\n\
+ adds r0, r6, 0\n\
+ ands r0, r3\n\
+ cmp r0, 0\n\
+ beq _08113CD4\n\
+ cmp r0, 0x1\n\
+ beq _08113CDA\n\
+ b _08113CF4\n\
+_08113CD4:\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0xF\n\
+ b _08113CDE\n\
+_08113CDA:\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0xF0\n\
+_08113CDE:\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08113CF4\n\
+ ldrb r0, [r4]\n\
+ adds r0, r5\n\
+ add r0, r9\n\
+ strb r7, [r0]\n\
+ ldrb r0, [r4]\n\
+ adds r0, 0x1\n\
+ strb r0, [r4]\n\
+ movs r3, 0\n\
+_08113CF4:\n\
+ adds r0, r6, 0x1\n\
+ movs r1, 0x7\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08113D02\n\
+ adds r2, 0x1D\n\
+ b _08113D0C\n\
+_08113D02:\n\
+ movs r0, 0x1\n\
+ ands r0, r6\n\
+ cmp r0, 0\n\
+ beq _08113D0C\n\
+ adds r2, 0x1\n\
+_08113D0C:\n\
+ adds r7, 0x1\n\
+ adds r6, 0x1\n\
+ cmp r6, 0x3F\n\
+ ble _08113C4A\n\
+ cmp r3, 0\n\
+ beq _08113D26\n\
+ ldrb r0, [r4]\n\
+ adds r0, r5\n\
+ add r0, r9\n\
+ strb r6, [r0]\n\
+ ldrb r0, [r4]\n\
+ adds r0, 0x1\n\
+ strb r0, [r4]\n\
+_08113D26:\n\
+ movs r0, 0x7\n\
+ ldr r2, [sp, 0x30]\n\
+ ands r2, r0\n\
+ cmp r2, 0\n\
+ bne _08113D36\n\
+ movs r3, 0xE4\n\
+ add r8, r3\n\
+ b _08113D3A\n\
+_08113D36:\n\
+ movs r0, 0x4\n\
+ add r8, r0\n\
+_08113D3A:\n\
+ adds r5, 0x20\n\
+ adds r4, 0x1\n\
+ ldr r1, [sp, 0x8]\n\
+ adds r1, 0x1\n\
+ str r1, [sp, 0x8]\n\
+ cmp r1, 0x3F\n\
+ bgt _08113D4A\n\
+ b _08113C32\n\
+_08113D4A:\n\
+ movs r2, 0\n\
+ mov r8, r2\n\
+ movs r3, 0\n\
+ str r3, [sp, 0x8]\n\
+ ldr r0, _08113D84 @ =0x02014844\n\
+ movs r4, 0x82\n\
+ lsls r4, 6\n\
+ adds r4, r0\n\
+ mov r10, r4\n\
+ movs r5, 0xA2\n\
+ lsls r5, 6\n\
+ adds r7, r0, r5\n\
+ movs r5, 0\n\
+ adds r4, r0, 0\n\
+ movs r0, 0x1\n\
+ mov r9, r0\n\
+_08113D6A:\n\
+ movs r3, 0\n\
+ ldr r2, [sp, 0x4]\n\
+ add r2, r8\n\
+ movs r6, 0\n\
+ ldr r1, [sp, 0x8]\n\
+ adds r1, 0x1\n\
+ str r1, [sp, 0x30]\n\
+_08113D78:\n\
+ cmp r3, 0\n\
+ beq _08113D88\n\
+ cmp r3, 0x1\n\
+ beq _08113DB4\n\
+ b _08113DE4\n\
+ .align 2, 0\n\
+_08113D84: .4byte 0x02014844\n\
+_08113D88:\n\
+ adds r0, r6, 0\n\
+ mov r1, r9\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08113D98\n\
+ cmp r0, 0x1\n\
+ beq _08113D9E\n\
+ b _08113DE4\n\
+_08113D98:\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0xF\n\
+ b _08113DA2\n\
+_08113D9E:\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0xF0\n\
+_08113DA2:\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08113DE4\n\
+ ldrb r0, [r4]\n\
+ adds r0, r5\n\
+ add r0, r10\n\
+ strb r6, [r0]\n\
+ movs r3, 0x1\n\
+ b _08113DE4\n\
+_08113DB4:\n\
+ adds r0, r6, 0\n\
+ ands r0, r3\n\
+ cmp r0, 0\n\
+ beq _08113DC2\n\
+ cmp r0, 0x1\n\
+ beq _08113DC8\n\
+ b _08113DE4\n\
+_08113DC2:\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0xF\n\
+ b _08113DCC\n\
+_08113DC8:\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0xF0\n\
+_08113DCC:\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08113DE4\n\
+ ldrb r0, [r4]\n\
+ adds r0, r5\n\
+ adds r0, r7\n\
+ subs r1, r6, 0x1\n\
+ strb r1, [r0]\n\
+ ldrb r0, [r4]\n\
+ adds r0, 0x1\n\
+ strb r0, [r4]\n\
+ movs r3, 0\n\
+_08113DE4:\n\
+ adds r1, r6, 0x1\n\
+ movs r0, 0x7\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08113DF2\n\
+ adds r2, 0x1D\n\
+ b _08113DFC\n\
+_08113DF2:\n\
+ mov r0, r9\n\
+ ands r6, r0\n\
+ cmp r6, 0\n\
+ beq _08113DFC\n\
+ adds r2, 0x1\n\
+_08113DFC:\n\
+ adds r6, r1, 0\n\
+ cmp r6, 0x3F\n\
+ ble _08113D78\n\
+ cmp r3, 0\n\
+ beq _08113E14\n\
+ ldrb r0, [r4]\n\
+ adds r0, r5\n\
+ adds r0, r7\n\
+ strb r6, [r0]\n\
+ ldrb r0, [r4]\n\
+ adds r0, 0x1\n\
+ strb r0, [r4]\n\
+_08113E14:\n\
+ movs r0, 0x7\n\
+ ldr r1, [sp, 0x30]\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ bne _08113E24\n\
+ movs r2, 0xE4\n\
+ add r8, r2\n\
+ b _08113E28\n\
+_08113E24:\n\
+ movs r3, 0x4\n\
+ add r8, r3\n\
+_08113E28:\n\
+ adds r5, 0x20\n\
+ adds r4, 0x1\n\
+ ldr r0, [sp, 0x8]\n\
+ adds r0, 0x1\n\
+ str r0, [sp, 0x8]\n\
+ cmp r0, 0x3F\n\
+ ble _08113D6A\n\
+ movs r1, 0\n\
+ str r1, [sp, 0x8]\n\
+_08113E3A:\n\
+ ldr r3, [sp, 0x8]\n\
+ ldr r4, _08113EBC @ =0x02014804\n\
+ adds r2, r3, r4\n\
+ ldr r5, _08113EC0 @ =0x02014844\n\
+ adds r1, r3, r5\n\
+ ldrb r0, [r2]\n\
+ adds r3, 0x1\n\
+ str r3, [sp, 0x30]\n\
+ ldrb r1, [r1]\n\
+ cmp r0, r1\n\
+ bcc _08113E52\n\
+ b _08113F9E\n\
+_08113E52:\n\
+ movs r0, 0\n\
+ str r0, [sp, 0xC]\n\
+ ldrb r2, [r2]\n\
+ cmp r0, r2\n\
+ bge _08113F54\n\
+ ldr r0, _08113EC4 @ =0x02014800\n\
+ adds r0, 0x4\n\
+ ldr r1, [sp, 0x8]\n\
+ adds r0, r1, r0\n\
+ str r0, [sp, 0x18]\n\
+_08113E66:\n\
+ movs r2, 0x80\n\
+ lsls r2, 1\n\
+ str r2, [sp, 0x14]\n\
+ movs r6, 0\n\
+ ldr r3, [sp, 0x8]\n\
+ ldr r4, _08113EC0 @ =0x02014844\n\
+ adds r0, r3, r4\n\
+ ldr r5, [sp, 0xC]\n\
+ adds r5, 0x1\n\
+ str r5, [sp, 0x34]\n\
+ ldrb r0, [r0]\n\
+ cmp r6, r0\n\
+ bge _08113F3E\n\
+ ldr r0, _08113EC4 @ =0x02014800\n\
+ mov r10, r0\n\
+ lsls r0, r3, 5\n\
+ ldr r2, [sp, 0xC]\n\
+ adds r1, r2, r0\n\
+ mov r9, r0\n\
+ ldr r0, _08113EC4 @ =0x02014800\n\
+ adds r0, 0xC4\n\
+ mov r3, r9\n\
+ adds r7, r3, r0\n\
+ mov r5, r9\n\
+ ldr r4, _08113EC4 @ =0x02014800\n\
+ ldr r2, _08113EC8 @ =0x000010c4\n\
+ adds r0, r4, r2\n\
+ adds r1, r0\n\
+ mov r8, r1\n\
+ ldrb r3, [r1]\n\
+ str r3, [sp, 0x1C]\n\
+_08113EA4:\n\
+ ldr r0, _08113ECC @ =0x000020c4\n\
+ add r0, r10\n\
+ adds r0, r5, r0\n\
+ ldr r4, [sp, 0x1C]\n\
+ ldrb r1, [r0]\n\
+ cmp r4, r1\n\
+ bls _08113ED0\n\
+ mov r2, r8\n\
+ ldrb r1, [r2]\n\
+ ldrb r0, [r0]\n\
+ b _08113ED6\n\
+ .align 2, 0\n\
+_08113EBC: .4byte 0x02014804\n\
+_08113EC0: .4byte 0x02014844\n\
+_08113EC4: .4byte 0x02014800\n\
+_08113EC8: .4byte 0x000010c4\n\
+_08113ECC: .4byte 0x000020c4\n\
+_08113ED0:\n\
+ ldrb r1, [r0]\n\
+ mov r3, r8\n\
+ ldrb r0, [r3]\n\
+_08113ED6:\n\
+ subs r3, r1, r0\n\
+ ldr r1, [sp, 0xC]\n\
+ add r1, r9\n\
+ ldr r0, _08113EFC @ =0x000018c4\n\
+ add r0, r10\n\
+ adds r4, r1, r0\n\
+ ldr r0, _08113F00 @ =0x000028c4\n\
+ add r0, r10\n\
+ adds r2, r5, r0\n\
+ ldrb r0, [r4]\n\
+ ldr r1, _08113F04 @ =0x02014800\n\
+ mov r12, r1\n\
+ ldrb r1, [r2]\n\
+ cmp r0, r1\n\
+ bls _08113F08\n\
+ adds r1, r0, 0\n\
+ ldrb r0, [r2]\n\
+ b _08113F0C\n\
+ .align 2, 0\n\
+_08113EFC: .4byte 0x000018c4\n\
+_08113F00: .4byte 0x000028c4\n\
+_08113F04: .4byte 0x02014800\n\
+_08113F08:\n\
+ ldrb r1, [r2]\n\
+ ldrb r0, [r4]\n\
+_08113F0C:\n\
+ subs r1, r0\n\
+ adds r3, r1\n\
+ ldr r2, [sp, 0x14]\n\
+ cmp r2, r3\n\
+ ble _08113F2C\n\
+ ldrb r0, [r7]\n\
+ cmp r0, 0\n\
+ bne _08113F2C\n\
+ ldr r0, _08114050 @ =0x000008c4\n\
+ add r0, r12\n\
+ adds r0, r5, r0\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _08113F2C\n\
+ str r6, [sp, 0x10]\n\
+ str r3, [sp, 0x14]\n\
+_08113F2C:\n\
+ adds r7, 0x1\n\
+ adds r5, 0x1\n\
+ adds r6, 0x1\n\
+ ldr r3, [sp, 0x8]\n\
+ ldr r4, _08114054 @ =0x02014844\n\
+ adds r0, r3, r4\n\
+ ldrb r0, [r0]\n\
+ cmp r6, r0\n\
+ blt _08113EA4\n\
+_08113F3E:\n\
+ ldr r0, [sp, 0xC]\n\
+ ldr r1, [sp, 0x10]\n\
+ ldr r2, [sp, 0x8]\n\
+ bl sub_81141F0\n\
+ ldr r5, [sp, 0x34]\n\
+ str r5, [sp, 0xC]\n\
+ ldr r0, [sp, 0x18]\n\
+ ldrb r0, [r0]\n\
+ cmp r5, r0\n\
+ blt _08113E66\n\
+_08113F54:\n\
+ movs r6, 0\n\
+ ldr r2, _08114058 @ =0x02014800\n\
+ ldr r1, [sp, 0x8]\n\
+ ldr r3, _08114054 @ =0x02014844\n\
+ adds r0, r1, r3\n\
+ adds r4, r2, 0\n\
+ mov r12, r4\n\
+ ldrb r0, [r0]\n\
+ cmp r6, r0\n\
+ bge _08113F9E\n\
+ mov r0, r12\n\
+ adds r0, 0x44\n\
+ adds r4, r1, r0\n\
+_08113F6E:\n\
+ ldr r5, [sp, 0x8]\n\
+ lsls r0, r5, 5\n\
+ adds r1, r6, r0\n\
+ adds r0, r2, 0\n\
+ adds r0, 0xC4\n\
+ adds r0, r1, r0\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _08113F94\n\
+ ldr r3, _08114050 @ =0x000008c4\n\
+ adds r0, r2, r3\n\
+ adds r0, r1, r0\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _08113F94\n\
+ adds r0, r6, 0\n\
+ adds r1, r5, 0\n\
+ bl sub_811430C\n\
+_08113F94:\n\
+ adds r6, 0x1\n\
+ ldr r2, _08114058 @ =0x02014800\n\
+ ldrb r5, [r4]\n\
+ cmp r6, r5\n\
+ blt _08113F6E\n\
+_08113F9E:\n\
+ ldr r0, [sp, 0x8]\n\
+ ldr r1, _0811405C @ =0x02014804\n\
+ adds r2, r0, r1\n\
+ ldr r3, _08114054 @ =0x02014844\n\
+ adds r1, r0, r3\n\
+ ldrb r0, [r2]\n\
+ ldrb r1, [r1]\n\
+ cmp r0, r1\n\
+ bne _08113FCC\n\
+ movs r6, 0\n\
+ ldrb r4, [r2]\n\
+ cmp r6, r4\n\
+ bge _08113FCC\n\
+ adds r4, r2, 0\n\
+_08113FBA:\n\
+ adds r0, r6, 0\n\
+ adds r1, r6, 0\n\
+ ldr r2, [sp, 0x8]\n\
+ bl sub_81141F0\n\
+ adds r6, 0x1\n\
+ ldrb r5, [r4]\n\
+ cmp r6, r5\n\
+ blt _08113FBA\n\
+_08113FCC:\n\
+ ldr r0, [sp, 0x8]\n\
+ ldr r1, _0811405C @ =0x02014804\n\
+ adds r2, r0, r1\n\
+ ldr r3, _08114054 @ =0x02014844\n\
+ adds r1, r0, r3\n\
+ ldrb r0, [r2]\n\
+ ldr r4, _08114058 @ =0x02014800\n\
+ ldrb r5, [r1]\n\
+ cmp r0, r5\n\
+ bhi _08113FE2\n\
+ b _081141C4\n\
+_08113FE2:\n\
+ movs r0, 0\n\
+ str r0, [sp, 0x10]\n\
+ ldrb r1, [r1]\n\
+ cmp r0, r1\n\
+ blt _08113FEE\n\
+ b _08114104\n\
+_08113FEE:\n\
+ str r2, [sp, 0x2C]\n\
+ ldr r1, [sp, 0x8]\n\
+ lsls r1, 5\n\
+ mov r9, r1\n\
+ adds r0, r4, 0\n\
+ adds r0, 0x44\n\
+ ldr r2, [sp, 0x8]\n\
+ adds r0, r2, r0\n\
+ str r0, [sp, 0x20]\n\
+ mov r3, r9\n\
+ str r3, [sp, 0x24]\n\
+_08114004:\n\
+ movs r4, 0x80\n\
+ lsls r4, 1\n\
+ str r4, [sp, 0x14]\n\
+ movs r6, 0\n\
+ ldr r5, [sp, 0x10]\n\
+ adds r5, 0x1\n\
+ str r5, [sp, 0x38]\n\
+ ldr r0, [sp, 0x2C]\n\
+ ldrb r0, [r0]\n\
+ cmp r6, r0\n\
+ bge _081140C4\n\
+ ldr r1, [sp, 0x10]\n\
+ ldr r2, [sp, 0x24]\n\
+ adds r1, r2\n\
+ mov r10, r1\n\
+ ldr r0, _08114058 @ =0x02014800\n\
+ adds r0, 0xC4\n\
+ adds r2, r0\n\
+ mov r8, r2\n\
+ ldr r7, [sp, 0x24]\n\
+ ldr r3, _08114058 @ =0x02014800\n\
+ ldr r4, _08114060 @ =0x000010c4\n\
+ adds r0, r3, r4\n\
+ adds r5, r7, r0\n\
+ ldr r0, _08114064 @ =0x020168c4\n\
+ add r0, r10\n\
+ mov r12, r0\n\
+ ldrb r1, [r0]\n\
+ str r1, [sp, 0x28]\n\
+_0811403E:\n\
+ ldrb r0, [r5]\n\
+ ldr r2, [sp, 0x28]\n\
+ cmp r0, r2\n\
+ bls _08114068\n\
+ adds r1, r0, 0\n\
+ mov r3, r12\n\
+ ldrb r0, [r3]\n\
+ b _0811406E\n\
+ .align 2, 0\n\
+_08114050: .4byte 0x000008c4\n\
+_08114054: .4byte 0x02014844\n\
+_08114058: .4byte 0x02014800\n\
+_0811405C: .4byte 0x02014804\n\
+_08114060: .4byte 0x000010c4\n\
+_08114064: .4byte 0x020168c4\n\
+_08114068:\n\
+ mov r4, r12\n\
+ ldrb r1, [r4]\n\
+ ldrb r0, [r5]\n\
+_0811406E:\n\
+ subs r3, r1, r0\n\
+ ldr r1, _0811408C @ =0x02014800\n\
+ ldr r2, _08114090 @ =0x000018c4\n\
+ adds r0, r1, r2\n\
+ adds r4, r7, r0\n\
+ ldr r2, _08114094 @ =0x020170c4\n\
+ add r2, r10\n\
+ ldrb r0, [r4]\n\
+ ldrb r1, [r2]\n\
+ cmp r0, r1\n\
+ bls _08114098\n\
+ adds r1, r0, 0\n\
+ ldrb r0, [r2]\n\
+ b _0811409C\n\
+ .align 2, 0\n\
+_0811408C: .4byte 0x02014800\n\
+_08114090: .4byte 0x000018c4\n\
+_08114094: .4byte 0x020170c4\n\
+_08114098:\n\
+ ldrb r1, [r2]\n\
+ ldrb r0, [r4]\n\
+_0811409C:\n\
+ subs r1, r0\n\
+ adds r3, r1\n\
+ ldr r2, [sp, 0x14]\n\
+ cmp r2, r3\n\
+ ble _081140B2\n\
+ mov r4, r8\n\
+ ldrb r0, [r4]\n\
+ cmp r0, 0\n\
+ bne _081140B2\n\
+ str r6, [sp, 0xC]\n\
+ str r3, [sp, 0x14]\n\
+_081140B2:\n\
+ movs r0, 0x1\n\
+ add r8, r0\n\
+ adds r7, 0x1\n\
+ adds r5, 0x1\n\
+ adds r6, 0x1\n\
+ ldr r1, [sp, 0x2C]\n\
+ ldrb r1, [r1]\n\
+ cmp r6, r1\n\
+ blt _0811403E\n\
+_081140C4:\n\
+ ldr r3, [sp, 0xC]\n\
+ add r3, r9\n\
+ ldr r2, _08114164 @ =0x02014800\n\
+ ldr r4, _08114168 @ =0x000030c4\n\
+ adds r1, r2, r4\n\
+ adds r1, r3, r1\n\
+ ldr r2, [sp, 0x10]\n\
+ add r2, r9\n\
+ ldr r5, _0811416C @ =0x020168c4\n\
+ adds r0, r2, r5\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r1]\n\
+ ldr r0, _08114164 @ =0x02014800\n\
+ ldr r4, _08114170 @ =0x000038c4\n\
+ adds r1, r0, r4\n\
+ adds r1, r3, r1\n\
+ ldr r5, _08114174 @ =0x020170c4\n\
+ adds r2, r5\n\
+ ldrb r0, [r2]\n\
+ strb r0, [r1]\n\
+ ldr r0, _08114164 @ =0x02014800\n\
+ adds r0, 0xC4\n\
+ adds r3, r0\n\
+ movs r0, 0x1\n\
+ strb r0, [r3]\n\
+ ldr r0, [sp, 0x38]\n\
+ str r0, [sp, 0x10]\n\
+ ldr r1, [sp, 0x20]\n\
+ ldrb r1, [r1]\n\
+ cmp r0, r1\n\
+ bge _08114104\n\
+ b _08114004\n\
+_08114104:\n\
+ movs r6, 0\n\
+ ldr r4, _08114164 @ =0x02014800\n\
+ ldr r2, [sp, 0x8]\n\
+ ldr r3, _08114178 @ =0x02014804\n\
+ adds r0, r2, r3\n\
+ ldrb r0, [r0]\n\
+ cmp r6, r0\n\
+ bge _081141C4\n\
+ adds r7, r4, 0\n\
+ mov r9, r6\n\
+ movs r5, 0xC4\n\
+ adds r5, r7\n\
+ mov r8, r5\n\
+_0811411E:\n\
+ ldr r1, [sp, 0x8]\n\
+ lsls r0, r1, 5\n\
+ adds r2, r6, r0\n\
+ ldr r3, _0811417C @ =0x000020c4\n\
+ adds r0, r7, r3\n\
+ adds r0, r2\n\
+ mov r10, r0\n\
+ ldr r5, _08114168 @ =0x000030c4\n\
+ adds r0, r7, r5\n\
+ adds r0, r2, r0\n\
+ ldrb r0, [r0]\n\
+ mov r1, r10\n\
+ strb r0, [r1]\n\
+ ldr r3, _08114180 @ =0x000028c4\n\
+ adds r0, r7, r3\n\
+ adds r3, r2, r0\n\
+ ldr r5, _08114170 @ =0x000038c4\n\
+ adds r0, r7, r5\n\
+ adds r0, r2, r0\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r3]\n\
+ mov r0, r8\n\
+ adds r1, r2, r0\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0\n\
+ beq _08114184\n\
+ mov r2, r9\n\
+ strb r2, [r1]\n\
+ adds r0, r6, 0\n\
+ adds r1, r6, 0\n\
+ ldr r2, [sp, 0x8]\n\
+ bl sub_81141F0\n\
+ b _081141B4\n\
+ .align 2, 0\n\
+_08114164: .4byte 0x02014800\n\
+_08114168: .4byte 0x000030c4\n\
+_0811416C: .4byte 0x020168c4\n\
+_08114170: .4byte 0x000038c4\n\
+_08114174: .4byte 0x020170c4\n\
+_08114178: .4byte 0x02014804\n\
+_0811417C: .4byte 0x000020c4\n\
+_08114180: .4byte 0x000028c4\n\
+_08114184:\n\
+ ldr r5, _081141E0 @ =0x000010c4\n\
+ adds r1, r4, r5\n\
+ adds r1, r2, r1\n\
+ ldr r5, _081141E4 @ =0x000018c4\n\
+ adds r0, r4, r5\n\
+ adds r0, r2, r0\n\
+ ldrb r0, [r0]\n\
+ ldrb r2, [r1]\n\
+ subs r0, r2\n\
+ lsrs r1, r0, 31\n\
+ adds r0, r1\n\
+ asrs r0, 1\n\
+ adds r2, r0\n\
+ strb r2, [r3]\n\
+ mov r0, r10\n\
+ strb r2, [r0]\n\
+ ldrb r0, [r3]\n\
+ subs r0, 0x1\n\
+ strb r0, [r3]\n\
+ adds r0, r6, 0\n\
+ adds r1, r6, 0\n\
+ ldr r2, [sp, 0x8]\n\
+ bl sub_81141F0\n\
+_081141B4:\n\
+ adds r6, 0x1\n\
+ ldr r4, _081141E8 @ =0x02014800\n\
+ ldr r1, [sp, 0x8]\n\
+ ldr r2, _081141EC @ =0x02014804\n\
+ adds r0, r1, r2\n\
+ ldrb r0, [r0]\n\
+ cmp r6, r0\n\
+ blt _0811411E\n\
+_081141C4:\n\
+ ldr r3, [sp, 0x30]\n\
+ str r3, [sp, 0x8]\n\
+ cmp r3, 0x3F\n\
+ bgt _081141CE\n\
+ b _08113E3A\n\
+_081141CE:\n\
+ add sp, 0x3C\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\
+_081141E0: .4byte 0x000010c4\n\
+_081141E4: .4byte 0x000018c4\n\
+_081141E8: .4byte 0x02014800\n\
+_081141EC: .4byte 0x02014804\n\
+ .syntax divided");
+}
+
+void sub_81141F0(s32 a, s32 b, s32 c)
+{
+ u32 r7;
+
+ sEvoInfo.unk30C4[c][b] = sEvoInfo.unk10C4[c][a];
+ sEvoInfo.unk38C4[c][b] = sEvoInfo.unk18C4[c][a];
+
+ r7 = 0;
+ if (sEvoInfo.unk10C4[c][a] < sEvoInfo.unk20C4[c][b])
+ {
+ sEvoInfo.unkC4[c][b] = 4;
+ r7 = sEvoInfo.unk20C4[c][b] - sEvoInfo.unk10C4[c][a];
+ }
+ else if (sEvoInfo.unk10C4[c][a] > sEvoInfo.unk20C4[c][b])
+ {
+ sEvoInfo.unkC4[c][b] = 1;
+ r7 = sEvoInfo.unk10C4[c][a] - sEvoInfo.unk20C4[c][b];
+ }
+ sEvoInfo.unk80C4[c][b] = r7 * 16;
+
+ r7 = 0;
+ if (sEvoInfo.unk18C4[c][a] < sEvoInfo.unk28C4[c][b])
+ {
+ sEvoInfo.unk8C4[c][b] = 3;
+ r7 = sEvoInfo.unk28C4[c][b] - sEvoInfo.unk18C4[c][a];
+ }
+ else if (sEvoInfo.unk18C4[c][a] > sEvoInfo.unk28C4[c][b])
+ {
+ sEvoInfo.unk8C4[c][b] = 2;
+ r7 = sEvoInfo.unk18C4[c][a] - sEvoInfo.unk28C4[c][b];
+ }
+ sEvoInfo.unk90C4[c][b] = r7 * 16;
+
+ sEvoInfo.unk84[c]++;
+}
+
+void sub_811430C(u32 a, u32 b)
+{
+ u8 r2 = sEvoInfo.unk28C4[b][a];
+ u8 r3 = sEvoInfo.unk20C4[b][a];
+ s32 r7 = r2 - r3;
+
+ sEvoInfo.unk30C4[b][a] = sEvoInfo.unk38C4[b][a] = r3 + r7 / 2;
+ sEvoInfo.unkC4[b][a] = 5;
+ sEvoInfo.unk8C4[b][a] = 7;
+ sEvoInfo.unk84[b]++;
+ r7 = sEvoInfo.unk30C4[b][a] - sEvoInfo.unk20C4[b][a];
+ sEvoInfo.unk80C4[b][a] = r7 * 16;
+ r7 = sEvoInfo.unk28C4[b][a] - sEvoInfo.unk38C4[b][a];
+ sEvoInfo.unk90C4[b][a] = r7 * 16;
+}
+
+__attribute__((naked))
+void unref_sub_81143CC()
+{
+ 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 r0, 0x1\n\
+ str r0, [sp, 0x4]\n\
+ ldr r0, _08114408 @ =0x02014800\n\
+ ldr r2, _0811440C @ =0x0000a0c4\n\
+ adds r1, r0, r2\n\
+ ldrb r3, [r1]\n\
+ adds r4, r0, 0\n\
+ cmp r3, 0\n\
+ beq _081143EE\n\
+ subs r0, r3, 0x1\n\
+ strb r0, [r1]\n\
+_081143EE:\n\
+ movs r5, 0\n\
+ str r5, [sp]\n\
+_081143F2:\n\
+ movs r3, 0\n\
+ adds r2, r4, 0\n\
+ adds r0, r4, 0\n\
+ adds r0, 0x84\n\
+ ldr r1, [sp]\n\
+ adds r0, r1, r0\n\
+ adds r1, 0x1\n\
+ str r1, [sp, 0x8]\n\
+ bl _08114D84\n\
+ .align 2, 0\n\
+_08114408: .4byte 0x02014800\n\
+_0811440C: .4byte 0x0000a0c4\n\
+_08114410:\n\
+ ldr r5, [sp]\n\
+ lsls r0, r5, 5\n\
+ adds r1, r3, r0\n\
+ adds r2, 0xC4\n\
+ adds r1, r2\n\
+ ldrb r2, [r1]\n\
+ mov r8, r0\n\
+ adds r0, r3, 0x1\n\
+ mov r10, r0\n\
+ cmp r2, 0xC\n\
+ bls _08114428\n\
+ b _081148D2\n\
+_08114428:\n\
+ lsls r0, r2, 2\n\
+ ldr r1, _08114434 @ =_08114438\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_08114434: .4byte _08114438\n\
+ .align 2, 0\n\
+_08114438:\n\
+ .4byte _081148D2\n\
+ .4byte _0811446C\n\
+ .4byte _081144F0\n\
+ .4byte _0811457C\n\
+ .4byte _08114600\n\
+ .4byte _0811468C\n\
+ .4byte _081146C8\n\
+ .4byte _08114704\n\
+ .4byte _08114740\n\
+ .4byte _0811477C\n\
+ .4byte _081147D0\n\
+ .4byte _08114810\n\
+ .4byte _08114858\n\
+_0811446C:\n\
+ movs r1, 0\n\
+ str r1, [sp, 0x4]\n\
+ lsls r0, r3, 1\n\
+ ldr r2, [sp]\n\
+ lsls r1, r2, 6\n\
+ adds r0, r1\n\
+ ldr r5, _081144E0 @ =0x000060c4\n\
+ adds r2, r4, r5\n\
+ adds r2, r0, r2\n\
+ ldr r5, _081144E4 @ =0x000080c4\n\
+ adds r1, r4, r5\n\
+ adds r0, r1\n\
+ ldrh r1, [r0]\n\
+ ldrh r0, [r2]\n\
+ adds r1, r0\n\
+ movs r0, 0xFF\n\
+ lsls r0, 8\n\
+ ands r0, r1\n\
+ lsrs r5, r0, 8\n\
+ movs r0, 0xFF\n\
+ ands r1, r0\n\
+ strh r1, [r2]\n\
+ movs r6, 0\n\
+ adds r1, r3, 0x1\n\
+ mov r10, r1\n\
+ ldr r2, [sp, 0x4]\n\
+ cmp r2, r5\n\
+ blt _081144A6\n\
+ b _081148D2\n\
+_081144A6:\n\
+ mov r9, r4\n\
+ mov r4, r8\n\
+ adds r7, r3, r4\n\
+ ldr r0, _081144E8 @ =0x000030c4\n\
+ add r0, r9\n\
+ adds r4, r7, r0\n\
+ ldr r0, _081144EC @ =0x000020c4\n\
+ add r0, r9\n\
+ adds r2, r7, r0\n\
+_081144B8:\n\
+ ldrb r0, [r4]\n\
+ subs r0, 0x1\n\
+ strb r0, [r4]\n\
+ ldrb r1, [r4]\n\
+ ldr r0, [sp]\n\
+ str r2, [sp, 0xC]\n\
+ str r3, [sp, 0x10]\n\
+ bl sub_8114DB4\n\
+ ldrb r0, [r4]\n\
+ ldr r2, [sp, 0xC]\n\
+ ldr r3, [sp, 0x10]\n\
+ ldrb r1, [r2]\n\
+ cmp r0, r1\n\
+ bne _081144D8\n\
+ b _081148A0\n\
+_081144D8:\n\
+ adds r6, 0x1\n\
+ cmp r6, r5\n\
+ blt _081144B8\n\
+ b _081148D2\n\
+ .align 2, 0\n\
+_081144E0: .4byte 0x000060c4\n\
+_081144E4: .4byte 0x000080c4\n\
+_081144E8: .4byte 0x000030c4\n\
+_081144EC: .4byte 0x000020c4\n\
+_081144F0:\n\
+ movs r2, 0\n\
+ str r2, [sp, 0x4]\n\
+ ldr r4, _08114568 @ =0x02014800\n\
+ lsls r0, r3, 1\n\
+ ldr r5, [sp]\n\
+ lsls r1, r5, 6\n\
+ adds r0, r1\n\
+ ldr r1, _0811456C @ =0x000060c4\n\
+ adds r2, r4, r1\n\
+ adds r2, r0, r2\n\
+ ldr r5, _08114570 @ =0x000080c4\n\
+ adds r1, r4, r5\n\
+ adds r0, r1\n\
+ ldrh r1, [r0]\n\
+ ldrh r0, [r2]\n\
+ adds r1, r0\n\
+ movs r0, 0xFF\n\
+ lsls r0, 8\n\
+ ands r0, r1\n\
+ lsrs r5, r0, 8\n\
+ movs r0, 0xFF\n\
+ ands r1, r0\n\
+ strh r1, [r2]\n\
+ movs r6, 0\n\
+ adds r1, r3, 0x1\n\
+ mov r10, r1\n\
+ ldr r2, [sp, 0x4]\n\
+ cmp r2, r5\n\
+ blt _0811452C\n\
+ b _081148D2\n\
+_0811452C:\n\
+ mov r9, r4\n\
+ mov r4, r8\n\
+ adds r7, r3, r4\n\
+ ldr r0, _08114574 @ =0x000030c4\n\
+ add r0, r9\n\
+ adds r4, r7, r0\n\
+ ldr r0, _08114578 @ =0x000020c4\n\
+ add r0, r9\n\
+ adds r2, r7, r0\n\
+_0811453E:\n\
+ ldrb r0, [r4]\n\
+ ldrb r1, [r2]\n\
+ cmp r0, r1\n\
+ bne _08114548\n\
+ b _081148B8\n\
+_08114548:\n\
+ adds r1, r0, 0\n\
+ ldr r0, [sp]\n\
+ str r2, [sp, 0xC]\n\
+ str r3, [sp, 0x10]\n\
+ bl sub_8114DF0\n\
+ ldrb r0, [r4]\n\
+ subs r0, 0x1\n\
+ strb r0, [r4]\n\
+ adds r6, 0x1\n\
+ ldr r2, [sp, 0xC]\n\
+ ldr r3, [sp, 0x10]\n\
+ cmp r6, r5\n\
+ blt _0811453E\n\
+ b _081148D2\n\
+ .align 2, 0\n\
+_08114568: .4byte 0x02014800\n\
+_0811456C: .4byte 0x000060c4\n\
+_08114570: .4byte 0x000080c4\n\
+_08114574: .4byte 0x000030c4\n\
+_08114578: .4byte 0x000020c4\n\
+_0811457C:\n\
+ movs r2, 0\n\
+ str r2, [sp, 0x4]\n\
+ lsls r0, r3, 1\n\
+ ldr r5, [sp]\n\
+ lsls r1, r5, 6\n\
+ adds r0, r1\n\
+ ldr r1, _081145F0 @ =0x000060c4\n\
+ adds r2, r4, r1\n\
+ adds r2, r0, r2\n\
+ ldr r5, _081145F4 @ =0x000080c4\n\
+ adds r1, r4, r5\n\
+ adds r0, r1\n\
+ ldrh r1, [r0]\n\
+ ldrh r0, [r2]\n\
+ adds r1, r0\n\
+ movs r0, 0xFF\n\
+ lsls r0, 8\n\
+ ands r0, r1\n\
+ lsrs r5, r0, 8\n\
+ movs r0, 0xFF\n\
+ ands r1, r0\n\
+ strh r1, [r2]\n\
+ movs r6, 0\n\
+ adds r1, r3, 0x1\n\
+ mov r10, r1\n\
+ ldr r2, [sp, 0x4]\n\
+ cmp r2, r5\n\
+ blt _081145B6\n\
+ b _081148D2\n\
+_081145B6:\n\
+ mov r9, r4\n\
+ mov r4, r8\n\
+ adds r7, r3, r4\n\
+ ldr r0, _081145F8 @ =0x000030c4\n\
+ add r0, r9\n\
+ adds r4, r7, r0\n\
+ ldr r0, _081145FC @ =0x000020c4\n\
+ add r0, r9\n\
+ adds r2, r7, r0\n\
+_081145C8:\n\
+ ldrb r0, [r4]\n\
+ adds r0, 0x1\n\
+ strb r0, [r4]\n\
+ ldrb r1, [r4]\n\
+ ldr r0, [sp]\n\
+ str r2, [sp, 0xC]\n\
+ str r3, [sp, 0x10]\n\
+ bl sub_8114DB4\n\
+ ldrb r0, [r4]\n\
+ ldr r2, [sp, 0xC]\n\
+ ldr r3, [sp, 0x10]\n\
+ ldrb r1, [r2]\n\
+ cmp r0, r1\n\
+ bne _081145E8\n\
+ b _081148AC\n\
+_081145E8:\n\
+ adds r6, 0x1\n\
+ cmp r6, r5\n\
+ blt _081145C8\n\
+ b _081148D2\n\
+ .align 2, 0\n\
+_081145F0: .4byte 0x000060c4\n\
+_081145F4: .4byte 0x000080c4\n\
+_081145F8: .4byte 0x000030c4\n\
+_081145FC: .4byte 0x000020c4\n\
+_08114600:\n\
+ movs r2, 0\n\
+ str r2, [sp, 0x4]\n\
+ ldr r4, _08114678 @ =0x02014800\n\
+ lsls r0, r3, 1\n\
+ ldr r5, [sp]\n\
+ lsls r1, r5, 6\n\
+ adds r0, r1\n\
+ ldr r1, _0811467C @ =0x000060c4\n\
+ adds r2, r4, r1\n\
+ adds r2, r0, r2\n\
+ ldr r5, _08114680 @ =0x000080c4\n\
+ adds r1, r4, r5\n\
+ adds r0, r1\n\
+ ldrh r1, [r0]\n\
+ ldrh r0, [r2]\n\
+ adds r1, r0\n\
+ movs r0, 0xFF\n\
+ lsls r0, 8\n\
+ ands r0, r1\n\
+ lsrs r5, r0, 8\n\
+ movs r0, 0xFF\n\
+ ands r1, r0\n\
+ strh r1, [r2]\n\
+ movs r6, 0\n\
+ adds r1, r3, 0x1\n\
+ mov r10, r1\n\
+ ldr r2, [sp, 0x4]\n\
+ cmp r2, r5\n\
+ blt _0811463C\n\
+ b _081148D2\n\
+_0811463C:\n\
+ mov r9, r4\n\
+ mov r4, r8\n\
+ adds r7, r3, r4\n\
+ ldr r0, _08114684 @ =0x000030c4\n\
+ add r0, r9\n\
+ adds r4, r7, r0\n\
+ ldr r0, _08114688 @ =0x000020c4\n\
+ add r0, r9\n\
+ adds r2, r7, r0\n\
+_0811464E:\n\
+ ldrb r0, [r4]\n\
+ ldrb r1, [r2]\n\
+ cmp r0, r1\n\
+ bne _08114658\n\
+ b _081148B8\n\
+_08114658:\n\
+ adds r1, r0, 0\n\
+ ldr r0, [sp]\n\
+ str r2, [sp, 0xC]\n\
+ str r3, [sp, 0x10]\n\
+ bl sub_8114DF0\n\
+ ldrb r0, [r4]\n\
+ adds r0, 0x1\n\
+ strb r0, [r4]\n\
+ adds r6, 0x1\n\
+ ldr r2, [sp, 0xC]\n\
+ ldr r3, [sp, 0x10]\n\
+ cmp r6, r5\n\
+ blt _0811464E\n\
+ b _081148D2\n\
+ .align 2, 0\n\
+_08114678: .4byte 0x02014800\n\
+_0811467C: .4byte 0x000060c4\n\
+_08114680: .4byte 0x000080c4\n\
+_08114684: .4byte 0x000030c4\n\
+_08114688: .4byte 0x000020c4\n\
+_0811468C:\n\
+ movs r2, 0\n\
+ str r2, [sp, 0x4]\n\
+ ldr r5, _081146C0 @ =0x02014800\n\
+ mov r0, r8\n\
+ adds r4, r3, r0\n\
+ ldr r1, _081146C4 @ =0x000030c4\n\
+ adds r0, r5, r1\n\
+ adds r0, r4, r0\n\
+ ldrb r1, [r0]\n\
+ ldr r0, [sp]\n\
+ str r3, [sp, 0x10]\n\
+ bl sub_8114E48\n\
+ lsls r0, 24\n\
+ ldr r3, [sp, 0x10]\n\
+ adds r2, r3, 0x1\n\
+ mov r10, r2\n\
+ cmp r0, 0\n\
+ bne _081146B4\n\
+ b _081148D2\n\
+_081146B4:\n\
+ adds r0, r5, 0\n\
+ adds r0, 0xC4\n\
+ adds r0, r4, r0\n\
+ movs r1, 0x9\n\
+ strb r1, [r0]\n\
+ b _081148D2\n\
+ .align 2, 0\n\
+_081146C0: .4byte 0x02014800\n\
+_081146C4: .4byte 0x000030c4\n\
+_081146C8:\n\
+ movs r4, 0\n\
+ str r4, [sp, 0x4]\n\
+ ldr r5, _081146FC @ =0x02014800\n\
+ mov r0, r8\n\
+ adds r4, r3, r0\n\
+ ldr r1, _08114700 @ =0x000030c4\n\
+ adds r0, r5, r1\n\
+ adds r0, r4, r0\n\
+ ldrb r1, [r0]\n\
+ ldr r0, [sp]\n\
+ str r3, [sp, 0x10]\n\
+ bl sub_8114E48\n\
+ lsls r0, 24\n\
+ ldr r3, [sp, 0x10]\n\
+ adds r2, r3, 0x1\n\
+ mov r10, r2\n\
+ cmp r0, 0\n\
+ bne _081146F0\n\
+ b _081148D2\n\
+_081146F0:\n\
+ adds r0, r5, 0\n\
+ adds r0, 0xC4\n\
+ adds r0, r4, r0\n\
+ movs r1, 0xA\n\
+ strb r1, [r0]\n\
+ b _081148D2\n\
+ .align 2, 0\n\
+_081146FC: .4byte 0x02014800\n\
+_08114700: .4byte 0x000030c4\n\
+_08114704:\n\
+ movs r4, 0\n\
+ str r4, [sp, 0x4]\n\
+ ldr r5, _08114738 @ =0x02014800\n\
+ mov r0, r8\n\
+ adds r4, r3, r0\n\
+ ldr r1, _0811473C @ =0x000030c4\n\
+ adds r0, r5, r1\n\
+ adds r0, r4, r0\n\
+ ldrb r1, [r0]\n\
+ ldr r0, [sp]\n\
+ str r3, [sp, 0x10]\n\
+ bl sub_8114E48\n\
+ lsls r0, 24\n\
+ ldr r3, [sp, 0x10]\n\
+ adds r2, r3, 0x1\n\
+ mov r10, r2\n\
+ cmp r0, 0\n\
+ bne _0811472C\n\
+ b _081148D2\n\
+_0811472C:\n\
+ adds r0, r5, 0\n\
+ adds r0, 0xC4\n\
+ adds r0, r4, r0\n\
+ movs r1, 0xB\n\
+ strb r1, [r0]\n\
+ b _081148D2\n\
+ .align 2, 0\n\
+_08114738: .4byte 0x02014800\n\
+_0811473C: .4byte 0x000030c4\n\
+_08114740:\n\
+ movs r4, 0\n\
+ str r4, [sp, 0x4]\n\
+ ldr r5, _08114774 @ =0x02014800\n\
+ mov r0, r8\n\
+ adds r4, r3, r0\n\
+ ldr r1, _08114778 @ =0x000030c4\n\
+ adds r0, r5, r1\n\
+ adds r0, r4, r0\n\
+ ldrb r1, [r0]\n\
+ ldr r0, [sp]\n\
+ str r3, [sp, 0x10]\n\
+ bl sub_8114E48\n\
+ lsls r0, 24\n\
+ ldr r3, [sp, 0x10]\n\
+ adds r2, r3, 0x1\n\
+ mov r10, r2\n\
+ cmp r0, 0\n\
+ bne _08114768\n\
+ b _081148D2\n\
+_08114768:\n\
+ adds r0, r5, 0\n\
+ adds r0, 0xC4\n\
+ adds r0, r4, r0\n\
+ movs r1, 0xC\n\
+ strb r1, [r0]\n\
+ b _081148D2\n\
+ .align 2, 0\n\
+_08114774: .4byte 0x02014800\n\
+_08114778: .4byte 0x000030c4\n\
+_0811477C:\n\
+ movs r4, 0\n\
+ str r4, [sp, 0x4]\n\
+ ldr r6, _081147B4 @ =0x02014800\n\
+ mov r0, r8\n\
+ adds r5, r3, r0\n\
+ ldr r1, _081147B8 @ =0x000030c4\n\
+ adds r4, r6, r1\n\
+ adds r4, r5, r4\n\
+ ldrb r1, [r4]\n\
+ ldr r0, [sp]\n\
+ str r3, [sp, 0x10]\n\
+ bl sub_8114DB4\n\
+ ldr r2, _081147BC @ =0x000020c4\n\
+ adds r0, r6, r2\n\
+ adds r0, r5, r0\n\
+ ldrb r1, [r4]\n\
+ ldr r3, [sp, 0x10]\n\
+ ldrb r0, [r0]\n\
+ cmp r1, r0\n\
+ bne _081147C0\n\
+ adds r0, r6, 0\n\
+ adds r0, 0xC4\n\
+ adds r0, r5, r0\n\
+ mov r4, sp\n\
+ ldrb r4, [r4, 0x4]\n\
+ strb r4, [r0]\n\
+ b _08114844\n\
+ .align 2, 0\n\
+_081147B4: .4byte 0x02014800\n\
+_081147B8: .4byte 0x000030c4\n\
+_081147BC: .4byte 0x000020c4\n\
+_081147C0:\n\
+ adds r0, r6, 0\n\
+ adds r0, 0xC4\n\
+ adds r0, r5, r0\n\
+ movs r1, 0x1\n\
+ strb r1, [r0]\n\
+ adds r0, r3, 0x1\n\
+ mov r10, r0\n\
+ b _081148D2\n\
+_081147D0:\n\
+ movs r1, 0\n\
+ str r1, [sp, 0x4]\n\
+ ldr r6, _08114804 @ =0x02014800\n\
+ mov r2, r8\n\
+ adds r5, r3, r2\n\
+ ldr r0, _08114808 @ =0x000030c4\n\
+ adds r4, r6, r0\n\
+ adds r4, r5, r4\n\
+ ldrb r1, [r4]\n\
+ ldr r0, [sp]\n\
+ str r3, [sp, 0x10]\n\
+ bl sub_8114DF0\n\
+ ldr r1, _0811480C @ =0x000020c4\n\
+ adds r0, r6, r1\n\
+ adds r0, r5, r0\n\
+ ldrb r1, [r4]\n\
+ ldr r3, [sp, 0x10]\n\
+ ldrb r0, [r0]\n\
+ cmp r1, r0\n\
+ beq _08114882\n\
+ adds r0, r6, 0\n\
+ adds r0, 0xC4\n\
+ adds r0, r5, r0\n\
+ movs r1, 0x2\n\
+ b _08114842\n\
+ .align 2, 0\n\
+_08114804: .4byte 0x02014800\n\
+_08114808: .4byte 0x000030c4\n\
+_0811480C: .4byte 0x000020c4\n\
+_08114810:\n\
+ movs r0, 0\n\
+ str r0, [sp, 0x4]\n\
+ ldr r6, _0811484C @ =0x02014800\n\
+ mov r1, r8\n\
+ adds r5, r3, r1\n\
+ ldr r2, _08114850 @ =0x000030c4\n\
+ adds r4, r6, r2\n\
+ adds r4, r5, r4\n\
+ ldrb r1, [r4]\n\
+ ldr r0, [sp]\n\
+ str r3, [sp, 0x10]\n\
+ bl sub_8114DB4\n\
+ ldr r1, _08114854 @ =0x000020c4\n\
+ adds r0, r6, r1\n\
+ adds r0, r5, r0\n\
+ ldrb r1, [r4]\n\
+ ldr r3, [sp, 0x10]\n\
+ ldrb r0, [r0]\n\
+ cmp r1, r0\n\
+ beq _08114882\n\
+ adds r0, r6, 0\n\
+ adds r0, 0xC4\n\
+ adds r0, r5, r0\n\
+ movs r1, 0x3\n\
+_08114842:\n\
+ strb r1, [r0]\n\
+_08114844:\n\
+ adds r5, r3, 0x1\n\
+ mov r10, r5\n\
+ b _081148D2\n\
+ .align 2, 0\n\
+_0811484C: .4byte 0x02014800\n\
+_08114850: .4byte 0x000030c4\n\
+_08114854: .4byte 0x000020c4\n\
+_08114858:\n\
+ movs r0, 0\n\
+ str r0, [sp, 0x4]\n\
+ ldr r6, _08114894 @ =0x02014800\n\
+ mov r1, r8\n\
+ adds r5, r3, r1\n\
+ ldr r2, _08114898 @ =0x000030c4\n\
+ adds r4, r6, r2\n\
+ adds r4, r5, r4\n\
+ ldrb r1, [r4]\n\
+ ldr r0, [sp]\n\
+ str r3, [sp, 0x10]\n\
+ bl sub_8114DF0\n\
+ ldr r1, _0811489C @ =0x000020c4\n\
+ adds r0, r6, r1\n\
+ adds r0, r5, r0\n\
+ ldrb r1, [r4]\n\
+ ldr r3, [sp, 0x10]\n\
+ ldrb r0, [r0]\n\
+ cmp r1, r0\n\
+ bne _081148C4\n\
+_08114882:\n\
+ adds r0, r6, 0\n\
+ adds r0, 0xC4\n\
+ adds r0, r5, r0\n\
+ mov r2, sp\n\
+ ldrb r2, [r2, 0x4]\n\
+ strb r2, [r0]\n\
+ adds r4, r3, 0x1\n\
+ mov r10, r4\n\
+ b _081148D2\n\
+ .align 2, 0\n\
+_08114894: .4byte 0x02014800\n\
+_08114898: .4byte 0x000030c4\n\
+_0811489C: .4byte 0x000020c4\n\
+_081148A0:\n\
+ mov r0, r9\n\
+ adds r0, 0xC4\n\
+ adds r0, r7, r0\n\
+ movs r5, 0\n\
+ strb r5, [r0]\n\
+ b _081148D2\n\
+_081148AC:\n\
+ mov r0, r9\n\
+ adds r0, 0xC4\n\
+ adds r0, r7, r0\n\
+ movs r1, 0\n\
+ strb r1, [r0]\n\
+ b _081148D2\n\
+_081148B8:\n\
+ mov r0, r9\n\
+ adds r0, 0xC4\n\
+ adds r0, r7, r0\n\
+ movs r1, 0\n\
+ strb r1, [r0]\n\
+ b _081148D2\n\
+_081148C4:\n\
+ adds r0, r6, 0\n\
+ adds r0, 0xC4\n\
+ adds r0, r5, r0\n\
+ movs r1, 0x4\n\
+ strb r1, [r0]\n\
+ adds r2, r3, 0x1\n\
+ mov r10, r2\n\
+_081148D2:\n\
+ ldr r0, _081148F4 @ =0x02014800\n\
+ mov r4, r8\n\
+ adds r1, r3, r4\n\
+ ldr r5, _081148F8 @ =0x000008c4\n\
+ adds r2, r0, r5\n\
+ adds r1, r2\n\
+ ldrb r1, [r1]\n\
+ adds r4, r0, 0\n\
+ cmp r1, 0xC\n\
+ bls _081148E8\n\
+ b _08114D76\n\
+_081148E8:\n\
+ lsls r0, r1, 2\n\
+ ldr r1, _081148FC @ =_08114900\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_081148F4: .4byte 0x02014800\n\
+_081148F8: .4byte 0x000008c4\n\
+_081148FC: .4byte _08114900\n\
+ .align 2, 0\n\
+_08114900:\n\
+ .4byte _08114D76\n\
+ .4byte _08114934\n\
+ .4byte _081149B8\n\
+ .4byte _08114A3C\n\
+ .4byte _08114AC0\n\
+ .4byte _08114B44\n\
+ .4byte _08114B7C\n\
+ .4byte _08114BB4\n\
+ .4byte _08114BEC\n\
+ .4byte _08114C24\n\
+ .4byte _08114C78\n\
+ .4byte _08114CB8\n\
+ .4byte _08114CF8\n\
+_08114934:\n\
+ movs r0, 0\n\
+ str r0, [sp, 0x4]\n\
+ lsls r0, r3, 1\n\
+ ldr r2, [sp]\n\
+ lsls r1, r2, 6\n\
+ adds r0, r1\n\
+ ldr r5, _081149A8 @ =0x000070c4\n\
+ adds r2, r4, r5\n\
+ adds r2, r0, r2\n\
+ ldr r5, _081149AC @ =0x000090c4\n\
+ adds r1, r4, r5\n\
+ adds r0, r1\n\
+ ldrh r1, [r0]\n\
+ ldrh r0, [r2]\n\
+ adds r1, r0\n\
+ movs r0, 0xFF\n\
+ lsls r0, 8\n\
+ ands r0, r1\n\
+ lsrs r5, r0, 8\n\
+ movs r0, 0xFF\n\
+ ands r1, r0\n\
+ strh r1, [r2]\n\
+ movs r6, 0\n\
+ ldr r1, [sp, 0x4]\n\
+ cmp r1, r5\n\
+ blt _0811496A\n\
+ b _08114D76\n\
+_0811496A:\n\
+ mov r9, r4\n\
+ mov r2, r8\n\
+ adds r7, r3, r2\n\
+ ldr r0, _081149B0 @ =0x000038c4\n\
+ add r0, r9\n\
+ adds r4, r7, r0\n\
+ movs r3, 0\n\
+ ldr r0, _081149B4 @ =0x000028c4\n\
+ add r0, r9\n\
+ adds r2, r7, r0\n\
+_0811497E:\n\
+ ldrb r0, [r4]\n\
+ subs r0, 0x1\n\
+ strb r0, [r4]\n\
+ ldrb r1, [r4]\n\
+ ldr r0, [sp]\n\
+ str r2, [sp, 0xC]\n\
+ str r3, [sp, 0x10]\n\
+ bl sub_8114DB4\n\
+ ldrb r0, [r4]\n\
+ ldr r2, [sp, 0xC]\n\
+ ldr r3, [sp, 0x10]\n\
+ ldrb r1, [r2]\n\
+ cmp r0, r1\n\
+ bne _0811499E\n\
+ b _08114D4C\n\
+_0811499E:\n\
+ adds r6, 0x1\n\
+ cmp r6, r5\n\
+ blt _0811497E\n\
+ b _08114D76\n\
+ .align 2, 0\n\
+_081149A8: .4byte 0x000070c4\n\
+_081149AC: .4byte 0x000090c4\n\
+_081149B0: .4byte 0x000038c4\n\
+_081149B4: .4byte 0x000028c4\n\
+_081149B8:\n\
+ movs r2, 0\n\
+ str r2, [sp, 0x4]\n\
+ ldr r4, _08114A28 @ =0x02014800\n\
+ lsls r0, r3, 1\n\
+ ldr r5, [sp]\n\
+ lsls r1, r5, 6\n\
+ adds r0, r1\n\
+ ldr r1, _08114A2C @ =0x000070c4\n\
+ adds r2, r4, r1\n\
+ adds r2, r0, r2\n\
+ ldr r5, _08114A30 @ =0x000090c4\n\
+ adds r1, r4, r5\n\
+ adds r0, r1\n\
+ ldrh r1, [r0]\n\
+ ldrh r0, [r2]\n\
+ adds r1, r0\n\
+ movs r0, 0xFF\n\
+ lsls r0, 8\n\
+ ands r0, r1\n\
+ lsrs r5, r0, 8\n\
+ movs r0, 0xFF\n\
+ ands r1, r0\n\
+ strh r1, [r2]\n\
+ movs r6, 0\n\
+ ldr r1, [sp, 0x4]\n\
+ cmp r1, r5\n\
+ blt _081149F0\n\
+ b _08114D76\n\
+_081149F0:\n\
+ mov r9, r4\n\
+ mov r2, r8\n\
+ adds r7, r3, r2\n\
+ ldr r0, _08114A34 @ =0x000038c4\n\
+ add r0, r9\n\
+ adds r4, r7, r0\n\
+ ldr r0, _08114A38 @ =0x000028c4\n\
+ add r0, r9\n\
+ adds r2, r7, r0\n\
+_08114A02:\n\
+ ldrb r0, [r4]\n\
+ ldrb r1, [r2]\n\
+ cmp r0, r1\n\
+ bne _08114A0C\n\
+ b _08114D3C\n\
+_08114A0C:\n\
+ adds r1, r0, 0\n\
+ ldr r0, [sp]\n\
+ str r2, [sp, 0xC]\n\
+ bl sub_8114DF0\n\
+ ldrb r0, [r4]\n\
+ subs r0, 0x1\n\
+ strb r0, [r4]\n\
+ adds r6, 0x1\n\
+ ldr r2, [sp, 0xC]\n\
+ cmp r6, r5\n\
+ blt _08114A02\n\
+ b _08114D76\n\
+ .align 2, 0\n\
+_08114A28: .4byte 0x02014800\n\
+_08114A2C: .4byte 0x000070c4\n\
+_08114A30: .4byte 0x000090c4\n\
+_08114A34: .4byte 0x000038c4\n\
+_08114A38: .4byte 0x000028c4\n\
+_08114A3C:\n\
+ movs r2, 0\n\
+ str r2, [sp, 0x4]\n\
+ lsls r0, r3, 1\n\
+ ldr r5, [sp]\n\
+ lsls r1, r5, 6\n\
+ adds r0, r1\n\
+ ldr r1, _08114AB0 @ =0x000070c4\n\
+ adds r2, r4, r1\n\
+ adds r2, r0, r2\n\
+ ldr r5, _08114AB4 @ =0x000090c4\n\
+ adds r1, r4, r5\n\
+ adds r0, r1\n\
+ ldrh r1, [r0]\n\
+ ldrh r0, [r2]\n\
+ adds r1, r0\n\
+ movs r0, 0xFF\n\
+ lsls r0, 8\n\
+ ands r0, r1\n\
+ lsrs r5, r0, 8\n\
+ movs r0, 0xFF\n\
+ ands r1, r0\n\
+ strh r1, [r2]\n\
+ movs r6, 0\n\
+ ldr r1, [sp, 0x4]\n\
+ cmp r1, r5\n\
+ blt _08114A72\n\
+ b _08114D76\n\
+_08114A72:\n\
+ mov r9, r4\n\
+ mov r2, r8\n\
+ adds r7, r3, r2\n\
+ ldr r0, _08114AB8 @ =0x000038c4\n\
+ add r0, r9\n\
+ adds r4, r7, r0\n\
+ movs r3, 0\n\
+ ldr r0, _08114ABC @ =0x000028c4\n\
+ add r0, r9\n\
+ adds r2, r7, r0\n\
+_08114A86:\n\
+ ldrb r0, [r4]\n\
+ adds r0, 0x1\n\
+ strb r0, [r4]\n\
+ ldrb r1, [r4]\n\
+ ldr r0, [sp]\n\
+ str r2, [sp, 0xC]\n\
+ str r3, [sp, 0x10]\n\
+ bl sub_8114DB4\n\
+ ldrb r0, [r4]\n\
+ ldr r2, [sp, 0xC]\n\
+ ldr r3, [sp, 0x10]\n\
+ ldrb r1, [r2]\n\
+ cmp r0, r1\n\
+ bne _08114AA6\n\
+ b _08114D4C\n\
+_08114AA6:\n\
+ adds r6, 0x1\n\
+ cmp r6, r5\n\
+ blt _08114A86\n\
+ b _08114D76\n\
+ .align 2, 0\n\
+_08114AB0: .4byte 0x000070c4\n\
+_08114AB4: .4byte 0x000090c4\n\
+_08114AB8: .4byte 0x000038c4\n\
+_08114ABC: .4byte 0x000028c4\n\
+_08114AC0:\n\
+ movs r2, 0\n\
+ str r2, [sp, 0x4]\n\
+ ldr r4, _08114B30 @ =0x02014800\n\
+ lsls r0, r3, 1\n\
+ ldr r5, [sp]\n\
+ lsls r1, r5, 6\n\
+ adds r0, r1\n\
+ ldr r1, _08114B34 @ =0x000070c4\n\
+ adds r2, r4, r1\n\
+ adds r2, r0, r2\n\
+ ldr r5, _08114B38 @ =0x000090c4\n\
+ adds r1, r4, r5\n\
+ adds r0, r1\n\
+ ldrh r1, [r0]\n\
+ ldrh r0, [r2]\n\
+ adds r1, r0\n\
+ movs r0, 0xFF\n\
+ lsls r0, 8\n\
+ ands r0, r1\n\
+ lsrs r5, r0, 8\n\
+ movs r0, 0xFF\n\
+ ands r1, r0\n\
+ strh r1, [r2]\n\
+ movs r6, 0\n\
+ ldr r1, [sp, 0x4]\n\
+ cmp r1, r5\n\
+ blt _08114AF8\n\
+ b _08114D76\n\
+_08114AF8:\n\
+ mov r9, r4\n\
+ mov r2, r8\n\
+ adds r7, r3, r2\n\
+ ldr r0, _08114B3C @ =0x000038c4\n\
+ add r0, r9\n\
+ adds r4, r7, r0\n\
+ ldr r0, _08114B40 @ =0x000028c4\n\
+ add r0, r9\n\
+ adds r2, r7, r0\n\
+_08114B0A:\n\
+ ldrb r0, [r4]\n\
+ ldrb r1, [r2]\n\
+ cmp r0, r1\n\
+ bne _08114B14\n\
+ b _08114D5C\n\
+_08114B14:\n\
+ adds r1, r0, 0\n\
+ ldr r0, [sp]\n\
+ str r2, [sp, 0xC]\n\
+ bl sub_8114DF0\n\
+ ldrb r0, [r4]\n\
+ adds r0, 0x1\n\
+ strb r0, [r4]\n\
+ adds r6, 0x1\n\
+ ldr r2, [sp, 0xC]\n\
+ cmp r6, r5\n\
+ blt _08114B0A\n\
+ b _08114D76\n\
+ .align 2, 0\n\
+_08114B30: .4byte 0x02014800\n\
+_08114B34: .4byte 0x000070c4\n\
+_08114B38: .4byte 0x000090c4\n\
+_08114B3C: .4byte 0x000038c4\n\
+_08114B40: .4byte 0x000028c4\n\
+_08114B44:\n\
+ movs r2, 0\n\
+ str r2, [sp, 0x4]\n\
+ ldr r5, _08114B70 @ =0x02014800\n\
+ mov r0, r8\n\
+ adds r4, r3, r0\n\
+ ldr r1, _08114B74 @ =0x000038c4\n\
+ adds r0, r5, r1\n\
+ adds r0, r4, r0\n\
+ ldrb r1, [r0]\n\
+ ldr r0, [sp]\n\
+ bl sub_8114E48\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _08114B64\n\
+ b _08114D76\n\
+_08114B64:\n\
+ ldr r2, _08114B78 @ =0x000008c4\n\
+ adds r0, r5, r2\n\
+ adds r0, r4, r0\n\
+ movs r1, 0x9\n\
+ b _08114D74\n\
+ .align 2, 0\n\
+_08114B70: .4byte 0x02014800\n\
+_08114B74: .4byte 0x000038c4\n\
+_08114B78: .4byte 0x000008c4\n\
+_08114B7C:\n\
+ movs r4, 0\n\
+ str r4, [sp, 0x4]\n\
+ ldr r5, _08114BA8 @ =0x02014800\n\
+ mov r0, r8\n\
+ adds r4, r3, r0\n\
+ ldr r1, _08114BAC @ =0x000038c4\n\
+ adds r0, r5, r1\n\
+ adds r0, r4, r0\n\
+ ldrb r1, [r0]\n\
+ ldr r0, [sp]\n\
+ bl sub_8114E48\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _08114B9C\n\
+ b _08114D76\n\
+_08114B9C:\n\
+ ldr r2, _08114BB0 @ =0x000008c4\n\
+ adds r0, r5, r2\n\
+ adds r0, r4, r0\n\
+ movs r1, 0xA\n\
+ b _08114D74\n\
+ .align 2, 0\n\
+_08114BA8: .4byte 0x02014800\n\
+_08114BAC: .4byte 0x000038c4\n\
+_08114BB0: .4byte 0x000008c4\n\
+_08114BB4:\n\
+ movs r4, 0\n\
+ str r4, [sp, 0x4]\n\
+ ldr r5, _08114BE0 @ =0x02014800\n\
+ mov r0, r8\n\
+ adds r4, r3, r0\n\
+ ldr r1, _08114BE4 @ =0x000038c4\n\
+ adds r0, r5, r1\n\
+ adds r0, r4, r0\n\
+ ldrb r1, [r0]\n\
+ ldr r0, [sp]\n\
+ bl sub_8114E48\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _08114BD4\n\
+ b _08114D76\n\
+_08114BD4:\n\
+ ldr r2, _08114BE8 @ =0x000008c4\n\
+ adds r0, r5, r2\n\
+ adds r0, r4, r0\n\
+ movs r1, 0xB\n\
+ b _08114D74\n\
+ .align 2, 0\n\
+_08114BE0: .4byte 0x02014800\n\
+_08114BE4: .4byte 0x000038c4\n\
+_08114BE8: .4byte 0x000008c4\n\
+_08114BEC:\n\
+ movs r4, 0\n\
+ str r4, [sp, 0x4]\n\
+ ldr r5, _08114C18 @ =0x02014800\n\
+ mov r0, r8\n\
+ adds r4, r3, r0\n\
+ ldr r1, _08114C1C @ =0x000038c4\n\
+ adds r0, r5, r1\n\
+ adds r0, r4, r0\n\
+ ldrb r1, [r0]\n\
+ ldr r0, [sp]\n\
+ bl sub_8114E48\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _08114C0C\n\
+ b _08114D76\n\
+_08114C0C:\n\
+ ldr r2, _08114C20 @ =0x000008c4\n\
+ adds r0, r5, r2\n\
+ adds r0, r4, r0\n\
+ movs r1, 0xC\n\
+ b _08114D74\n\
+ .align 2, 0\n\
+_08114C18: .4byte 0x02014800\n\
+_08114C1C: .4byte 0x000038c4\n\
+_08114C20: .4byte 0x000008c4\n\
+_08114C24:\n\
+ movs r4, 0\n\
+ str r4, [sp, 0x4]\n\
+ ldr r6, _08114C58 @ =0x02014800\n\
+ mov r0, r8\n\
+ adds r5, r3, r0\n\
+ ldr r1, _08114C5C @ =0x000038c4\n\
+ adds r4, r6, r1\n\
+ adds r4, r5, r4\n\
+ ldrb r1, [r4]\n\
+ ldr r0, [sp]\n\
+ bl sub_8114DB4\n\
+ ldr r2, _08114C60 @ =0x000028c4\n\
+ adds r0, r6, r2\n\
+ adds r0, r5, r0\n\
+ ldrb r1, [r4]\n\
+ ldrb r0, [r0]\n\
+ cmp r1, r0\n\
+ bne _08114C68\n\
+ ldr r4, _08114C64 @ =0x000008c4\n\
+ adds r0, r6, r4\n\
+ adds r0, r5, r0\n\
+ mov r5, sp\n\
+ ldrb r5, [r5, 0x4]\n\
+ strb r5, [r0]\n\
+ b _08114D76\n\
+ .align 2, 0\n\
+_08114C58: .4byte 0x02014800\n\
+_08114C5C: .4byte 0x000038c4\n\
+_08114C60: .4byte 0x000028c4\n\
+_08114C64: .4byte 0x000008c4\n\
+_08114C68:\n\
+ ldr r1, _08114C74 @ =0x000008c4\n\
+ adds r0, r6, r1\n\
+ adds r0, r5, r0\n\
+ movs r1, 0x1\n\
+ b _08114D74\n\
+ .align 2, 0\n\
+_08114C74: .4byte 0x000008c4\n\
+_08114C78:\n\
+ movs r2, 0\n\
+ str r2, [sp, 0x4]\n\
+ ldr r6, _08114CA8 @ =0x02014800\n\
+ mov r4, r8\n\
+ adds r5, r3, r4\n\
+ ldr r0, _08114CAC @ =0x000038c4\n\
+ adds r4, r6, r0\n\
+ adds r4, r5, r4\n\
+ ldrb r1, [r4]\n\
+ ldr r0, [sp]\n\
+ bl sub_8114DF0\n\
+ ldr r1, _08114CB0 @ =0x000028c4\n\
+ adds r0, r6, r1\n\
+ adds r0, r5, r0\n\
+ ldrb r1, [r4]\n\
+ ldrb r0, [r0]\n\
+ cmp r1, r0\n\
+ beq _08114D1E\n\
+ ldr r1, _08114CB4 @ =0x000008c4\n\
+ adds r0, r6, r1\n\
+ adds r0, r5, r0\n\
+ movs r1, 0x2\n\
+ b _08114D74\n\
+ .align 2, 0\n\
+_08114CA8: .4byte 0x02014800\n\
+_08114CAC: .4byte 0x000038c4\n\
+_08114CB0: .4byte 0x000028c4\n\
+_08114CB4: .4byte 0x000008c4\n\
+_08114CB8:\n\
+ movs r2, 0\n\
+ str r2, [sp, 0x4]\n\
+ ldr r6, _08114CE8 @ =0x02014800\n\
+ mov r4, r8\n\
+ adds r5, r3, r4\n\
+ ldr r0, _08114CEC @ =0x000038c4\n\
+ adds r4, r6, r0\n\
+ adds r4, r5, r4\n\
+ ldrb r1, [r4]\n\
+ ldr r0, [sp]\n\
+ bl sub_8114DB4\n\
+ ldr r1, _08114CF0 @ =0x000028c4\n\
+ adds r0, r6, r1\n\
+ adds r0, r5, r0\n\
+ ldrb r1, [r4]\n\
+ ldrb r0, [r0]\n\
+ cmp r1, r0\n\
+ beq _08114D1E\n\
+ ldr r1, _08114CF4 @ =0x000008c4\n\
+ adds r0, r6, r1\n\
+ adds r0, r5, r0\n\
+ movs r1, 0x3\n\
+ b _08114D74\n\
+ .align 2, 0\n\
+_08114CE8: .4byte 0x02014800\n\
+_08114CEC: .4byte 0x000038c4\n\
+_08114CF0: .4byte 0x000028c4\n\
+_08114CF4: .4byte 0x000008c4\n\
+_08114CF8:\n\
+ movs r2, 0\n\
+ str r2, [sp, 0x4]\n\
+ ldr r6, _08114D2C @ =0x02014800\n\
+ mov r4, r8\n\
+ adds r5, r3, r4\n\
+ ldr r0, _08114D30 @ =0x000038c4\n\
+ adds r4, r6, r0\n\
+ adds r4, r5, r4\n\
+ ldrb r1, [r4]\n\
+ ldr r0, [sp]\n\
+ bl sub_8114DF0\n\
+ ldr r1, _08114D34 @ =0x000028c4\n\
+ adds r0, r6, r1\n\
+ adds r0, r5, r0\n\
+ ldrb r1, [r4]\n\
+ ldrb r0, [r0]\n\
+ cmp r1, r0\n\
+ bne _08114D6C\n\
+_08114D1E:\n\
+ ldr r2, _08114D38 @ =0x000008c4\n\
+ adds r0, r6, r2\n\
+ adds r0, r5, r0\n\
+ mov r4, sp\n\
+ ldrb r4, [r4, 0x4]\n\
+ strb r4, [r0]\n\
+ b _08114D76\n\
+ .align 2, 0\n\
+_08114D2C: .4byte 0x02014800\n\
+_08114D30: .4byte 0x000038c4\n\
+_08114D34: .4byte 0x000028c4\n\
+_08114D38: .4byte 0x000008c4\n\
+_08114D3C:\n\
+ ldr r0, _08114D48 @ =0x000008c4\n\
+ add r0, r9\n\
+ adds r0, r7, r0\n\
+ movs r1, 0\n\
+ b _08114D74\n\
+ .align 2, 0\n\
+_08114D48: .4byte 0x000008c4\n\
+_08114D4C:\n\
+ ldr r0, _08114D58 @ =0x000008c4\n\
+ add r0, r9\n\
+ adds r0, r7, r0\n\
+ strb r3, [r0]\n\
+ b _08114D76\n\
+ .align 2, 0\n\
+_08114D58: .4byte 0x000008c4\n\
+_08114D5C:\n\
+ ldr r0, _08114D68 @ =0x000008c4\n\
+ add r0, r9\n\
+ adds r0, r7, r0\n\
+ movs r1, 0\n\
+ b _08114D74\n\
+ .align 2, 0\n\
+_08114D68: .4byte 0x000008c4\n\
+_08114D6C:\n\
+ ldr r1, _08114DAC @ =0x000008c4\n\
+ adds r0, r6, r1\n\
+ adds r0, r5, r0\n\
+ movs r1, 0x4\n\
+_08114D74:\n\
+ strb r1, [r0]\n\
+_08114D76:\n\
+ mov r3, r10\n\
+ ldr r2, _08114DB0 @ =0x02014800\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x84\n\
+ ldr r4, [sp]\n\
+ adds r0, r4, r0\n\
+ adds r4, r2, 0\n\
+_08114D84:\n\
+ ldrb r0, [r0]\n\
+ cmp r3, r0\n\
+ bge _08114D8E\n\
+ bl _08114410\n\
+_08114D8E:\n\
+ ldr r5, [sp, 0x8]\n\
+ str r5, [sp]\n\
+ cmp r5, 0x3F\n\
+ bgt _08114D9A\n\
+ bl _081143F2\n\
+_08114D9A:\n\
+ ldr r0, [sp, 0x4]\n\
+ add sp, 0x14\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
+_08114DAC: .4byte 0x000008c4\n\
+_08114DB0: .4byte 0x02014800\n\
+ .syntax divided");
+}
+
+void sub_8114DB4(u32 a, u8 b)
+{
+ u8 *r2 = sEvoInfo.unk40C4[a][b / 2];
+
+ if (b % 2 != 0)
+ *r2 |= 0xF0;
+ else
+ *r2 |= 0x0F;
+}
+
+void sub_8114DF0(u32 a, u8 b)
+{
+ u8 *r2 = sEvoInfo.unk40C4[a][b / 2];
+ u8 *r1 = r2 + 0x6000;
+
+ if (b % 2 != 0)
+ {
+ if (!(*r1 & 0xF0))
+ *r2 &= 0x0F;
+ }
+ else
+ {
+ if (!(*r1 & 0x0F))
+ *r2 &= 0xF0;
+ }
+}
+
+__attribute__((naked))
+void sub_8114E48()
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ adds r4, r0, 0\n\
+ lsls r1, 24\n\
+ lsrs r6, r1, 24\n\
+ ldr r1, _08114E6C @ =0x02014800\n\
+ ldr r2, _08114E70 @ =0x0000a0c4\n\
+ adds r0, r1, r2\n\
+ ldrb r0, [r0]\n\
+ adds r5, r1, 0\n\
+ cmp r0, 0\n\
+ bne _08114E60\n\
+ b _08114F5E\n\
+_08114E60:\n\
+ movs r1, 0\n\
+ movs r3, 0\n\
+ cmp r4, 0\n\
+ bne _08114E74\n\
+ movs r1, 0x1\n\
+ b _08114EA6\n\
+ .align 2, 0\n\
+_08114E6C: .4byte 0x02014800\n\
+_08114E70: .4byte 0x0000a0c4\n\
+_08114E74:\n\
+ subs r0, r4, 0x1\n\
+ lsls r0, 5\n\
+ adds r2, r3, r0\n\
+ adds r0, r5, 0\n\
+ adds r0, 0xC4\n\
+ adds r0, r2, r0\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _08114EA6\n\
+ ldr r7, _08114EC4 @ =0x000008c4\n\
+ adds r0, r5, r7\n\
+ adds r0, r2, r0\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _08114EA6\n\
+ adds r3, 0x1\n\
+ cmp r3, 0x1F\n\
+ bgt _08114EA6\n\
+ cmp r4, 0\n\
+ bne _08114E74\n\
+ lsls r0, r1, 24\n\
+ movs r1, 0x80\n\
+ lsls r1, 17\n\
+ adds r0, r1\n\
+ lsrs r1, r0, 24\n\
+_08114EA6:\n\
+ cmp r3, 0x20\n\
+ bne _08114EB4\n\
+ lsls r0, r1, 24\n\
+ movs r2, 0x80\n\
+ lsls r2, 17\n\
+ adds r0, r2\n\
+ lsrs r1, r0, 24\n\
+_08114EB4:\n\
+ movs r3, 0\n\
+ cmp r4, 0x3F\n\
+ bne _08114EC8\n\
+ lsls r0, r1, 24\n\
+ movs r7, 0x80\n\
+ lsls r7, 17\n\
+ adds r0, r7\n\
+ b _08114EF8\n\
+ .align 2, 0\n\
+_08114EC4: .4byte 0x000008c4\n\
+_08114EC8:\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 5\n\
+ adds r2, r3, r0\n\
+ adds r0, r5, 0\n\
+ adds r0, 0xC4\n\
+ adds r0, r2, r0\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _08114EFA\n\
+ ldr r7, _08114F64 @ =0x000008c4\n\
+ adds r0, r5, r7\n\
+ adds r0, r2, r0\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _08114EFA\n\
+ adds r3, 0x1\n\
+ cmp r3, 0x1F\n\
+ bgt _08114EFA\n\
+ cmp r4, 0x3F\n\
+ bne _08114EC8\n\
+ lsls r0, r1, 24\n\
+ movs r1, 0x80\n\
+ lsls r1, 17\n\
+ adds r0, r1\n\
+_08114EF8:\n\
+ lsrs r1, r0, 24\n\
+_08114EFA:\n\
+ cmp r3, 0x20\n\
+ bne _08114F08\n\
+ lsls r0, r1, 24\n\
+ movs r2, 0x80\n\
+ lsls r2, 17\n\
+ adds r0, r2\n\
+ lsrs r1, r0, 24\n\
+_08114F08:\n\
+ cmp r1, 0x2\n\
+ beq _08114F5E\n\
+ subs r0, r6, 0x2\n\
+ lsls r0, 24\n\
+ lsrs r1, r0, 24\n\
+ cmp r0, 0\n\
+ bge _08114F18\n\
+ movs r1, 0\n\
+_08114F18:\n\
+ adds r0, r6, 0x2\n\
+ lsls r0, 24\n\
+ lsrs r2, r0, 24\n\
+ asrs r0, 24\n\
+ cmp r0, 0x3F\n\
+ ble _08114F26\n\
+ movs r2, 0x3F\n\
+_08114F26:\n\
+ lsls r1, 24\n\
+ asrs r3, r1, 24\n\
+ lsls r0, r2, 24\n\
+ asrs r2, r0, 24\n\
+ adds r6, r1, 0\n\
+ adds r7, r0, 0\n\
+ cmp r3, r2\n\
+ bge _08114F7C\n\
+ cmp r4, 0\n\
+ beq _08114F7C\n\
+ subs r0, r4, 0x1\n\
+ lsls r5, r0, 7\n\
+ ldr r0, _08114F68 @ =0x020188c4\n\
+ mov r12, r0\n\
+_08114F42:\n\
+ asrs r0, r3, 1\n\
+ lsls r0, 2\n\
+ adds r0, r5\n\
+ add r0, r12\n\
+ ldr r1, [r0]\n\
+ movs r0, 0x1\n\
+ ands r0, r3\n\
+ cmp r0, 0\n\
+ beq _08114F6C\n\
+ ldrb r1, [r1]\n\
+ movs r0, 0xF0\n\
+_08114F58:\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08114F72\n\
+_08114F5E:\n\
+ movs r0, 0x1\n\
+ b _08114FCA\n\
+ .align 2, 0\n\
+_08114F64: .4byte 0x000008c4\n\
+_08114F68: .4byte 0x020188c4\n\
+_08114F6C:\n\
+ ldrb r1, [r1]\n\
+ movs r0, 0xF\n\
+ b _08114F58\n\
+_08114F72:\n\
+ adds r3, 0x1\n\
+ cmp r3, r2\n\
+ bge _08114F7C\n\
+ cmp r4, 0\n\
+ bne _08114F42\n\
+_08114F7C:\n\
+ asrs r3, r6, 24\n\
+ asrs r1, r7, 24\n\
+ cmp r3, r1\n\
+ bge _08114FC8\n\
+ cmp r4, 0x3F\n\
+ beq _08114FC8\n\
+ adds r0, r4, 0x1\n\
+ lsls r5, r0, 7\n\
+ ldr r6, _08114FB0 @ =0x020188c4\n\
+ adds r2, r1, 0\n\
+_08114F90:\n\
+ asrs r0, r3, 1\n\
+ lsls r0, 2\n\
+ adds r0, r5\n\
+ adds r0, r6\n\
+ ldr r1, [r0]\n\
+ movs r0, 0x1\n\
+ ands r0, r3\n\
+ cmp r0, 0\n\
+ beq _08114FB4\n\
+ ldrb r1, [r1]\n\
+ movs r0, 0xF0\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08114FBE\n\
+ b _08114F5E\n\
+ .align 2, 0\n\
+_08114FB0: .4byte 0x020188c4\n\
+_08114FB4:\n\
+ ldrb r1, [r1]\n\
+ movs r0, 0xF\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08114F5E\n\
+_08114FBE:\n\
+ adds r3, 0x1\n\
+ cmp r3, r2\n\
+ bge _08114FC8\n\
+ cmp r4, 0x3F\n\
+ bne _08114F90\n\
+_08114FC8:\n\
+ movs r0, 0\n\
+_08114FCA:\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .syntax divided");
+}
+
+// Functions below are vblank callbacks and are used
+
+static void EvoDummyFunc(void)
+{
+
+}
+
+static void VBlankCB_EvolutionScene(void)
+{
+ REG_BG0CNT = BGCNT_SCREENBASE(24) | BGCNT_16COLOR | BGCNT_TXT256x256 | BGCNT_AFF512x512 | BGCNT_PRIORITY(3); // 0x9803
+ REG_BG0HOFS = gUnknown_030042A4;
+ REG_BG0VOFS = gUnknown_030042A0;
+ REG_BG1HOFS = gUnknown_030042C0;
+ REG_BG1VOFS = gUnknown_030041B4;
+ REG_BG2HOFS = gUnknown_03004288;
+ REG_BG2VOFS = gUnknown_03004280;
+ REG_BG3HOFS = gUnknown_030041B0;
+ REG_BG3VOFS = gUnknown_030041B8;
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+ sub_8089668();
+}
+
+static void VBlankCB_TradeEvolutionScene(void)
+{
+ REG_BG0HOFS = gUnknown_030042A4;
+ REG_BG0VOFS = gUnknown_030042A0;
+ REG_BG1HOFS = gUnknown_030042C0;
+ REG_BG1VOFS = gUnknown_030041B4;
+ REG_BG2HOFS = gUnknown_03004288;
+ REG_BG2VOFS = gUnknown_03004280;
+ REG_BG3HOFS = gUnknown_030041B0;
+ REG_BG3VOFS = gUnknown_030041B8;
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+ sub_8089668();
+}
+
+static void sub_81150D8(void)
+{
+ sub_814A880(200, 72 + (sEvoCursorPos * 16));
+}
+
+static void EvoDummyFunc2(void)
+{
+
+}
diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c
index a8f6b6b9b..ff8e8504c 100644
--- a/src/field_control_avatar.c
+++ b/src/field_control_avatar.c
@@ -13,7 +13,7 @@
#include "flags.h"
#include "item_menu.h"
#include "metatile_behavior.h"
-#include "rom4.h"
+#include "overworld.h"
#include "safari_zone.h"
#include "script.h"
#include "secret_base.h"
@@ -57,7 +57,7 @@ extern u8 gUnknown_081A4363[];
extern u8 gUnknown_081C346A[];
extern u8 gUnknown_081616E1[];
extern u8 Event_WorldMap[];
-extern u8 Event_RunningShoesManual[];
+extern u8 S_RunningShoesManual[];
extern u8 PictureBookShelfScript[];
extern u8 BookshelfScript[];
extern u8 PokemonCenterBookshelfScript[];
@@ -70,13 +70,13 @@ extern u8 gUnknown_0815F43A[];
extern u8 gUnknown_0815F523[];
extern u8 gUnknown_0815F528[];
extern u8 UseSurfScript[];
-extern u8 UseWaterfallScript[];
-extern u8 CannotUseWaterfallScript[];
+extern u8 S_UseWaterfall[];
+extern u8 S_CannotUseWaterfall[];
extern u8 UseDiveScript[];
-extern u8 UnderwaterUseDiveScript[];
-extern u8 GraniteCave_B1F_EventScript_1C6BC5[];
+extern u8 S_UseDiveUnderwater[];
+extern u8 S_FallDownHole[];
extern u8 gUnknown_081A14B8[];
-extern u8 Event_EggHatch[];
+extern u8 S_EggHatch[];
extern u8 gUnknown_0815FD0D[];
extern u8 gUnknown_081C6BDE[];
@@ -391,7 +391,7 @@ static u8 *sub_8068500(struct MapPosition *position, u8 b, u8 c)
if (MetatileBehavior_IsRegionMap(b) == TRUE)
return Event_WorldMap;
if (sub_805791C(b) == TRUE)
- return Event_RunningShoesManual;
+ return S_RunningShoesManual;
if (MetatileBehavior_IsPictureBookShelf(b) == TRUE)
return PictureBookShelfScript;
if (MetatileBehavior_IsBookShelf(b) == TRUE)
@@ -428,9 +428,9 @@ static u8 *TryGetFieldMoveScript(struct MapPosition *unused1, u8 b, u8 unused2)
if (MetatileBehavior_IsWaterfall(b) == TRUE)
{
if (FlagGet(BADGE08_GET) == TRUE && IsPlayerSurfingNorth() == TRUE)
- return UseWaterfallScript;
+ return S_UseWaterfall;
else
- return CannotUseWaterfallScript;
+ return S_CannotUseWaterfall;
}
return NULL;
}
@@ -447,9 +447,9 @@ static bool32 sub_8068770(void)
static bool32 sub_80687A4(void)
{
- if (FlagGet(BADGE07_GET) && gMapHeader.mapType == 5 && sub_8068F18() == 1)
+ if (FlagGet(BADGE07_GET) && gMapHeader.mapType == MAP_TYPE_UNDERWATER && sub_8068F18() == 1)
{
- ScriptContext1_SetupScript(UnderwaterUseDiveScript);
+ ScriptContext1_SetupScript(S_UseDiveUnderwater);
return TRUE;
}
return FALSE;
@@ -485,7 +485,7 @@ bool8 sub_8068870(u16 a)
{
if (MetatileBehavior_IsCrackedFloorHole(a))
{
- ScriptContext1_SetupScript(GraniteCave_B1F_EventScript_1C6BC5);
+ ScriptContext1_SetupScript(S_FallDownHole);
return TRUE;
}
return FALSE;
@@ -503,7 +503,7 @@ bool8 sub_8068894(void)
if (sub_80422A0())
{
IncrementGameStat(13);
- ScriptContext1_SetupScript(Event_EggHatch);
+ ScriptContext1_SetupScript(S_EggHatch);
return TRUE;
}
if (SafariZoneTakeStep() == TRUE)
@@ -549,14 +549,14 @@ static bool8 overworld_poison_step(void)
{
u16 *ptr;
- if (gMapHeader.mapType != 9)
+ if (gMapHeader.mapType != MAP_TYPE_SECRET_BASE)
{
ptr = GetVarPointer(VAR_POISON_STEP_COUNTER);
(*ptr)++;
(*ptr) %= 4;
if (*ptr == 0)
{
- switch (overworld_poison())
+ switch (DoPoisonFieldEffect())
{
case 0:
return FALSE;
@@ -698,7 +698,7 @@ static void sub_8068C30(struct MapHeader *unused, s8 b, struct MapPosition *posi
warp1_set_2(warpEvent->unk7, warpEvent->mapNum, warpEvent->mapGroup);
sub_80535C4(position->x, position->y);
- mapHeader = get_mapheader_by_bank_and_number(warpEvent->unk7, warpEvent->mapNum);
+ mapHeader = Overworld_GetMapHeaderByGroupAndId(warpEvent->unk7, warpEvent->mapNum);
if (mapHeader->events->warps[warpEvent->mapGroup].mapNum == 0x7F)
saved_warp2_set(mapHeader->events->warps[b].mapGroup, gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, b);
}
@@ -730,7 +730,7 @@ static bool8 map_warp_consider_2_to_inside(struct MapPosition *position, u16 b,
return FALSE;
}
-static s8 map_warp_check(struct MapHeader *mapHeader, u16 b, u16 c, u8 d)
+static s8 map_warp_check(struct MapHeader *mapHeader, u16 x, u16 y, u8 warpId)
{
s32 i;
struct WarpEvent *warpEvent = mapHeader->events->warps;
@@ -738,9 +738,9 @@ static s8 map_warp_check(struct MapHeader *mapHeader, u16 b, u16 c, u8 d)
for (i = 0; i < warpCount; i++, warpEvent++)
{
- if ((u16)warpEvent->x == b && (u16)warpEvent->y == c)
+ if ((u16)warpEvent->x == x && (u16)warpEvent->y == y)
{
- if ((u8)warpEvent->warpId == d || (u8)warpEvent->warpId == 0)
+ if ((u8)warpEvent->warpId == warpId || (u8)warpEvent->warpId == 0)
return i;
}
}
@@ -767,7 +767,7 @@ static u8 *trigger_activate(struct CoordEvent *coordEvent)
return NULL;
}
-static u8 *mapheader_trigger_activate_at(struct MapHeader *mapHeader, u16 b, u16 c, u8 d)
+static u8 *mapheader_trigger_activate_at(struct MapHeader *mapHeader, u16 x, u16 y, u8 d)
{
s32 i;
struct CoordEvent *coordEvents = mapHeader->events->coordEvents;
@@ -776,7 +776,7 @@ static u8 *mapheader_trigger_activate_at(struct MapHeader *mapHeader, u16 b, u16
for (i = 0; i < coordEventCount; i++)
{
- if ((u16)coordEvents[i].x == b && (u16)coordEvents[i].y == c)
+ if ((u16)coordEvents[i].x == x && (u16)coordEvents[i].y == y)
{
if (coordEvents[i].unk4 == d || coordEvents[i].unk4 == 0)
{
@@ -813,7 +813,7 @@ static struct BgEvent *FindInvisibleMapObjectByPosition(struct MapHeader *mapHea
int dive_warp(struct MapPosition *position, u16 b)
{
- if (gMapHeader.mapType == 5 && sub_805750C(b) == 0)
+ if (gMapHeader.mapType == MAP_TYPE_UNDERWATER && sub_805750C(b) == 0)
{
if (sub_80538B0(position->x - 7, position->y - 7))
{
@@ -843,7 +843,7 @@ u8 sub_8068F18(void)
PlayerGetDestCoords(&x, &y);
r5 = MapGridGetMetatileBehaviorAt(x, y);
- if (gMapHeader.mapType == 5 && sub_805750C(r5) == 0)
+ if (gMapHeader.mapType == MAP_TYPE_UNDERWATER && sub_805750C(r5) == 0)
{
if (sub_80538B0(x - 7, y - 7) == TRUE)
return 1;
diff --git a/src/field_door.c b/src/field_door.c
index 791ed4c94..ab46f0696 100644
--- a/src/field_door.c
+++ b/src/field_door.c
@@ -3,6 +3,7 @@
#include "field_camera.h"
#include "fieldmap.h"
#include "metatile_behavior.h"
+#include "songs.h"
#include "task.h"
extern struct DoorAnimFrame gDoorOpenAnimFrames[];
@@ -212,10 +213,10 @@ bool8 FieldIsDoorAnimationRunning(void)
return FuncIsActiveTask(Task_AnimateDoor);
}
-u32 sub_8058790(u32 x, u32 y)
+u32 GetDoorSoundEffect(u32 x, u32 y)
{
if (cur_mapdata_get_door_x2_at(gDoorAnimGraphicsTable, x, y) == 0)
- return 8;
+ return SE_DOOR;
else
- return 18;
+ return SE_JIDO_DOA;
}
diff --git a/src/field_effect.c b/src/field_effect.c
index 3632d7053..72224f299 100644
--- a/src/field_effect.c
+++ b/src/field_effect.c
@@ -9,7 +9,7 @@
#include "menu.h"
#include "palette.h"
#include "text.h"
-#include "rom4.h"
+#include "overworld.h"
#include "task.h"
#include "sound.h"
#include "songs.h"
@@ -28,7 +28,7 @@
#define subsprite_table(ptr) {.subsprites = ptr, .subspriteCount = (sizeof ptr) / (sizeof(struct Subsprite))}
-EWRAM_DATA u32 gUnknown_0202FF84[8] = {0};
+EWRAM_DATA u32 gFieldEffectArguments[8] = {0};
const u32 gSpriteImage_839DC14[] = INCBIN_U32("graphics/birch_speech/birch.4bpp");
const u16 gBirchPalette[16] = INCBIN_U16("graphics/birch_speech/birch.gbapal");
@@ -618,13 +618,13 @@ bool8 FieldEffectActiveListContains(u8 id)
return FALSE;
}
-u8 CreateTrainerSprite_BirchSpeech(u8 gender, s16 x, s16 y, u8 subpriority, u8 *buffer)
+u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer)
{
struct SpriteTemplate spriteTemplate;
- LoadCompressedObjectPaletteOverrideBuffer(&gTrainerFrontPicPaletteTable[gender], buffer);
- LoadCompressedObjectPicOverrideBuffer(&gTrainerFrontPicTable[gender], buffer);
- spriteTemplate.tileTag = gTrainerFrontPicTable[gender].tag;
- spriteTemplate.paletteTag = gTrainerFrontPicPaletteTable[gender].tag;
+ LoadCompressedObjectPaletteOverrideBuffer(&gTrainerFrontPicPaletteTable[trainerSpriteID], buffer);
+ LoadCompressedObjectPicOverrideBuffer(&gTrainerFrontPicTable[trainerSpriteID], buffer);
+ spriteTemplate.tileTag = gTrainerFrontPicTable[trainerSpriteID].tag;
+ spriteTemplate.paletteTag = gTrainerFrontPicPaletteTable[trainerSpriteID].tag;
spriteTemplate.oam = &gOamData_839F0F4;
spriteTemplate.anims = gDummySpriteAnimTable;
spriteTemplate.images = NULL;
@@ -1203,10 +1203,10 @@ void task00_8084310(u8 taskId)
{
return;
}
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
- if ((int)gUnknown_0202FF84[0] > 5)
+ gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
+ if ((int)gFieldEffectArguments[0] > 5)
{
- gUnknown_0202FF84[0] = 0;
+ gFieldEffectArguments[0] = 0;
}
FieldEffectStart(FLDEFF_USE_FLY);
task->data[0]++;
@@ -1665,7 +1665,7 @@ bool8 FldEff_UseWaterfall(void)
{
u8 taskId;
taskId = CreateTask(sub_8086F64, 0xff);
- gTasks[taskId].data[1] = gUnknown_0202FF84[0];
+ gTasks[taskId].data[1] = gFieldEffectArguments[0];
sub_8086F64(taskId);
return FALSE;
}
@@ -1689,7 +1689,7 @@ bool8 waterfall_1_do_anim_probably(struct Task *task, struct MapObject *mapObjec
if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject))
{
FieldObjectClearAnimIfSpecialAnimFinished(mapObject);
- gUnknown_0202FF84[0] = task->data[1];
+ gFieldEffectArguments[0] = task->data[1];
FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
task->data[0]++;
}
@@ -1738,8 +1738,8 @@ bool8 FldEff_UseDive(void)
{
u8 taskId;
taskId = CreateTask(Task_Dive, 0xff);
- gTasks[taskId].data[15] = gUnknown_0202FF84[0];
- gTasks[taskId].data[14] = gUnknown_0202FF84[1];
+ gTasks[taskId].data[15] = gFieldEffectArguments[0];
+ gTasks[taskId].data[14] = gFieldEffectArguments[1];
Task_Dive(taskId);
return FALSE;
}
@@ -1759,7 +1759,7 @@ bool8 sub_8087124(struct Task *task)
bool8 dive_2_unknown(struct Task *task)
{
ScriptContext2_Enable();
- gUnknown_0202FF84[0] = task->data[15];
+ gFieldEffectArguments[0] = task->data[15];
FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
task->data[0]++;
return FALSE;
@@ -1820,10 +1820,10 @@ bool8 sub_8087298(struct Task *task, struct MapObject *mapObject, struct Sprite
{
sprite->pos2.y = 0;
task->data[3] = 1;
- gUnknown_0202FF84[0] = mapObject->coords2.x;
- gUnknown_0202FF84[1] = mapObject->coords2.y;
- gUnknown_0202FF84[2] = sprite->subpriority - 1;
- gUnknown_0202FF84[3] = sprite->oam.priority;
+ gFieldEffectArguments[0] = mapObject->coords2.x;
+ gFieldEffectArguments[1] = mapObject->coords2.y;
+ gFieldEffectArguments[2] = sprite->subpriority - 1;
+ gFieldEffectArguments[3] = sprite->oam.priority;
FieldEffectStart(FLDEFF_LAVARIDGE_GYM_WARP);
PlaySE(SE_W153);
task->data[0]++;
@@ -1894,7 +1894,6 @@ bool8 sub_80873F4(struct Task *task, struct MapObject *mapObject, struct Sprite
}
void sub_8087470(u8);
-extern u8 sub_80608A4(u8);
void mapldr_080851BC(void)
{
@@ -1924,10 +1923,10 @@ bool8 sub_80874FC(struct Task *task, struct MapObject *mapObject, struct Sprite
{
if (sub_807D770())
{
- gUnknown_0202FF84[0] = mapObject->coords2.x;
- gUnknown_0202FF84[1] = mapObject->coords2.y;
- gUnknown_0202FF84[2] = sprite->subpriority - 1;
- gUnknown_0202FF84[3] = sprite->oam.priority;
+ gFieldEffectArguments[0] = mapObject->coords2.x;
+ gFieldEffectArguments[1] = mapObject->coords2.y;
+ gFieldEffectArguments[2] = sprite->subpriority - 1;
+ gFieldEffectArguments[3] = sprite->oam.priority;
task->data[1] = FieldEffectStart(FLDEFF_POP_OUT_OF_ASH);
task->data[0]++;
}
@@ -1966,9 +1965,9 @@ extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[36]
u8 FldEff_LavaridgeGymWarp(void)
{
u8 spriteId;
- sub_8060470((s16 *)&gUnknown_0202FF84[0], (s16 *)&gUnknown_0202FF84[1], 8, 8);
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[33], gUnknown_0202FF84[0], gUnknown_0202FF84[1], gUnknown_0202FF84[2]);
- gSprites[spriteId].oam.priority = gUnknown_0202FF84[3];
+ sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[33], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ gSprites[spriteId].oam.priority = gFieldEffectArguments[3];
gSprites[spriteId].coordOffsetEnabled = 1;
return spriteId;
}
@@ -2009,10 +2008,10 @@ bool8 sub_80876F8(struct Task *task, struct MapObject *mapObject, struct Sprite
{
if (task->data[1] > 3)
{
- gUnknown_0202FF84[0] = mapObject->coords2.x;
- gUnknown_0202FF84[1] = mapObject->coords2.y;
- gUnknown_0202FF84[2] = sprite->subpriority - 1;
- gUnknown_0202FF84[3] = sprite->oam.priority;
+ gFieldEffectArguments[0] = mapObject->coords2.x;
+ gFieldEffectArguments[1] = mapObject->coords2.y;
+ gFieldEffectArguments[2] = sprite->subpriority - 1;
+ gFieldEffectArguments[3] = sprite->oam.priority;
task->data[1] = FieldEffectStart(FLDEFF_POP_OUT_OF_ASH);
task->data[0]++;
} else
@@ -2064,9 +2063,9 @@ bool8 sub_80877D4(struct Task *task, struct MapObject *mapObject, struct Sprite
u8 FldEff_PopOutOfAsh(void)
{
u8 spriteId;
- sub_8060470((s16 *)&gUnknown_0202FF84[0], (s16 *)&gUnknown_0202FF84[1], 8, 8);
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[32], gUnknown_0202FF84[0], gUnknown_0202FF84[1], gUnknown_0202FF84[2]);
- gSprites[spriteId].oam.priority = gUnknown_0202FF84[3];
+ sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[32], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ gSprites[spriteId].oam.priority = gFieldEffectArguments[3];
gSprites[spriteId].coordOffsetEnabled = 1;
return spriteId;
}
@@ -2385,26 +2384,26 @@ void sub_8088890(struct Sprite *);
bool8 FldEff_FieldMoveShowMon(void)
{
u8 taskId;
- if (is_light_level_1_2_3_5_or_6(sav1_map_get_light_level()) == TRUE)
+ if (is_map_type_1_2_3_5_or_6(Overworld_GetMapTypeOfSaveblockLocation()) == TRUE)
{
taskId = CreateTask(sub_8088120, 0xff);
} else
{
taskId = CreateTask(sub_808847C, 0xff);
}
- gTasks[taskId].data[15] = sub_8088830(gUnknown_0202FF84[0], gUnknown_0202FF84[1], gUnknown_0202FF84[2]);
+ gTasks[taskId].data[15] = sub_8088830(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
return FALSE;
}
bool8 FldEff_FieldMoveShowMonInit(void)
{
struct Pokemon *pokemon;
- u32 flag = gUnknown_0202FF84[0] & 0x80000000;
- pokemon = &gPlayerParty[(u8)gUnknown_0202FF84[0]];
- gUnknown_0202FF84[0] = GetMonData(pokemon, MON_DATA_SPECIES);
- gUnknown_0202FF84[1] = GetMonData(pokemon, MON_DATA_OT_ID);
- gUnknown_0202FF84[2] = GetMonData(pokemon, MON_DATA_PERSONALITY);
- gUnknown_0202FF84[0] |= flag;
+ u32 flag = gFieldEffectArguments[0] & 0x80000000;
+ pokemon = &gPlayerParty[(u8)gFieldEffectArguments[0]];
+ gFieldEffectArguments[0] = GetMonData(pokemon, MON_DATA_SPECIES);
+ gFieldEffectArguments[1] = GetMonData(pokemon, MON_DATA_OT_ID);
+ gFieldEffectArguments[2] = GetMonData(pokemon, MON_DATA_PERSONALITY);
+ gFieldEffectArguments[0] |= flag;
FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON);
FieldEffectActiveListRemove(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
return FALSE;
@@ -2879,9 +2878,9 @@ u8 FldEff_UseSurf(void)
{
u8 taskId;
taskId = CreateTask(sub_8088954, 0xff);
- gTasks[taskId].data[15] = gUnknown_0202FF84[0];
+ gTasks[taskId].data[15] = gFieldEffectArguments[0];
sav1_reset_battle_music_maybe();
- sub_8053FB0(0x016d);
+ Overworld_ChangeMusicTo(0x016d);
return FALSE;
}
@@ -2919,7 +2918,7 @@ void sub_8088A30(struct Task *task)
mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(mapObject))
{
- gUnknown_0202FF84[0] = task->data[15] | 0x80000000;
+ gFieldEffectArguments[0] = task->data[15] | 0x80000000;
FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
task->data[0]++;
}
@@ -2934,9 +2933,9 @@ void sub_8088A78(struct Task *task)
sub_805B980(mapObject, GetPlayerAvatarGraphicsIdByStateId(3));
FieldObjectClearAnimIfSpecialAnimFinished(mapObject);
FieldObjectSetSpecialAnim(mapObject, sub_80608D0(mapObject->placeholder18));
- gUnknown_0202FF84[0] = task->data[1];
- gUnknown_0202FF84[1] = task->data[2];
- gUnknown_0202FF84[2] = gPlayerAvatar.mapObjectId;
+ gFieldEffectArguments[0] = task->data[1];
+ gFieldEffectArguments[1] = task->data[2];
+ gFieldEffectArguments[2] = gPlayerAvatar.mapObjectId;
mapObject->mapobj_unk_1A = FieldEffectStart(FLDEFF_SURF_BLOB);
task->data[0]++;
}
@@ -2970,7 +2969,7 @@ u8 FldEff_NPCFlyOut(void)
sprite->oam.paletteNum = 0;
sprite->oam.priority = 1;
sprite->callback = sub_8088BC4;
- sprite->data1 = gUnknown_0202FF84[0];
+ sprite->data1 = gFieldEffectArguments[0];
PlaySE(SE_W019);
return spriteId;
}
@@ -3009,7 +3008,7 @@ u8 FldEff_UseFly(void)
{
u8 taskId;
taskId = CreateTask(sub_8088C70, 0xfe);
- gTasks[taskId].data[1] = gUnknown_0202FF84[0];
+ gTasks[taskId].data[1] = gFieldEffectArguments[0];
return 0;
}
@@ -3040,7 +3039,7 @@ void sub_8088CF8(struct Task *task)
if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
{
task->data[0]++;
- gUnknown_0202FF84[0] = task->data[1];
+ gFieldEffectArguments[0] = task->data[1];
FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
}
}
diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c
new file mode 100644
index 000000000..2ad8bdce3
--- /dev/null
+++ b/src/field_effect_helpers.c
@@ -0,0 +1,1632 @@
+#include "global.h"
+#include "sprite.h"
+#include "fieldmap.h"
+#include "metatile_behavior.h"
+#include "songs.h"
+#include "sound.h"
+#include "field_map_obj.h"
+#include "field_camera.h"
+#include "field_map_obj_helpers.h"
+#include "field_weather.h"
+#include "field_effect.h"
+#include "field_ground_effect.h"
+#include "field_effect_helpers.h"
+
+static void sub_81269E0(struct Sprite *);
+static void npc_pal_op(struct MapObject *mapObject, struct Sprite *sprite);
+static void npc_pal_op_A(struct MapObject *, u8);
+static void npc_pal_op_B(struct MapObject *, u8);
+static void sub_81275A0(struct Sprite *);
+static void sub_81275C4(struct Sprite *);
+static void sub_8127DA0(struct Sprite *);
+static void sub_8127DD0(struct Sprite *);
+static void sub_8127E30(struct Sprite *);
+static void sub_812882C(struct Sprite *, u8, u8);
+static void sub_81278D8(struct Sprite *);
+static void sub_8127FD4(struct MapObject *, struct Sprite *);
+static void sub_812800C(struct MapObject *, struct Sprite *);
+static void sub_81280A0(struct MapObject *, struct Sprite *, struct Sprite *);
+static void sub_8128174(struct Sprite *);
+static u32 ShowDisguiseFieldEffect(u8, u8, u8);
+
+const u8 UnusedEggString_8401E28[] = _("タマゴ");
+
+const u16 gUnknown_08401E2C[] = {
+ 0x0c,
+ 0x1c,
+ 0x2c
+};
+
+const u8 gUnknown_08401E32[] = {
+ 0,
+ 1,
+ 2,
+ 3
+};
+
+const u16 gUnknown_08401E36[] = {
+ 4,
+ 4,
+ 4,
+ 16
+};
+
+void (*const gUnknown_08401E40[])(struct Sprite *) = {
+ sub_81275A0,
+ sub_81275C4
+};
+
+void (*const gUnknown_08401E48[])(struct Sprite *) = {
+ sub_8127DA0,
+ sub_8127DD0,
+ sub_8127E30
+};
+
+const u8 gUnknown_08401E54[] = {
+ 0,
+ 0,
+ 1,
+ 2,
+ 3
+};
+
+const u16 gUnknown_08401E5A[] = {
+ 3,
+ 7
+};
+
+void SetUpReflection(struct MapObject *mapObject, struct Sprite *sprite, bool8 flag)
+{
+ struct Sprite *newSprite;
+
+ newSprite = &gSprites[obj_unfreeze(sprite, sprite->pos1.x, sprite->pos1.y, 0x98)];
+ newSprite->callback = sub_81269E0;
+ newSprite->oam.priority = 3;
+ newSprite->oam.paletteNum = gUnknown_0830FD14[newSprite->oam.paletteNum];
+ newSprite->usingSheet = TRUE;
+ newSprite->anims = gDummySpriteAnimTable;
+ StartSpriteAnim(newSprite, 0);
+ newSprite->affineAnims = gDummySpriteAffineAnimTable;
+ newSprite->affineAnimBeginning = TRUE;
+ newSprite->subspriteMode = 0;
+ newSprite->data0 = sprite->data0;
+ newSprite->data1 = mapObject->localId;
+ newSprite->data7 = flag;
+ npc_pal_op(mapObject, newSprite);
+ if (!flag)
+ {
+ newSprite->oam.affineMode = 1;
+ }
+}
+
+static s16 sub_81268D0(struct MapObject *mapObject)
+{
+ return GetFieldObjectGraphicsInfo(mapObject->graphicsId)->height - 2;
+}
+
+static void npc_pal_op(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 whichElement;
+ u16 unk_8041e2c[ARRAY_COUNT(gUnknown_08401E2C)];
+
+ memcpy(unk_8041e2c, gUnknown_08401E2C, sizeof gUnknown_08401E2C);
+ sprite->data2 = 0;
+ if (!GetFieldObjectGraphicsInfo(mapObject->graphicsId)->disableReflectionPaletteLoad && ((whichElement = sub_8057450(mapObject->mapobj_unk_1F)) || (whichElement = sub_8057450(mapObject->mapobj_unk_1E))))
+ {
+ sprite->data2 = unk_8041e2c[whichElement - 1];
+ npc_pal_op_A(mapObject, sprite->oam.paletteNum);
+ }
+ else
+ {
+ npc_pal_op_B(mapObject, sprite->oam.paletteNum);
+ }
+}
+
+static void npc_pal_op_B(struct MapObject *mapObject, u8 paletteNum)
+{
+ const struct MapObjectGraphicsInfo *graphicsInfo;
+
+ graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
+ if (graphicsInfo->paletteTag2 != 0x11ff)
+ {
+ if (graphicsInfo->paletteSlot == 0)
+ {
+ npc_load_two_palettes__no_record(graphicsInfo->paletteTag1, paletteNum);
+ }
+ else if (graphicsInfo->paletteSlot == 10)
+ {
+ npc_load_two_palettes__and_record(graphicsInfo->paletteTag1, paletteNum);
+ }
+ else
+ {
+ pal_patch_for_npc(npc_paltag_by_palslot(paletteNum), paletteNum);
+ }
+ sub_807D78C(paletteNum);
+ }
+}
+
+static void npc_pal_op_A(struct MapObject *mapObject, u8 paletteNum)
+{
+ const struct MapObjectGraphicsInfo *graphicsInfo;
+
+ graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
+ if (graphicsInfo->paletteTag2 != 0x11ff)
+ {
+ pal_patch_for_npc(graphicsInfo->paletteTag2, paletteNum);
+ sub_807D78C(paletteNum);
+ }
+}
+
+static void sub_81269E0(struct Sprite *sprite)
+{
+ struct MapObject *mapObject;
+ struct Sprite *oldSprite;
+
+ mapObject = &gMapObjects[sprite->data0];
+ oldSprite = &gSprites[mapObject->spriteId];
+ if (!mapObject->active || !mapObject->mapobj_bit_17 || mapObject->localId != sprite->data1)
+ {
+ sprite->inUse = FALSE;
+ }
+ else
+ {
+ sprite->oam.paletteNum = gUnknown_0830FD14[oldSprite->oam.paletteNum];
+ sprite->oam.shape = oldSprite->oam.shape;
+ sprite->oam.size = oldSprite->oam.size;
+ sprite->oam.matrixNum = oldSprite->oam.matrixNum | 0x10;
+ sprite->oam.tileNum = oldSprite->oam.tileNum;
+ sprite->subspriteTables = oldSprite->subspriteTables;
+ sprite->subspriteTableNum = oldSprite->subspriteTableNum;
+ sprite->invisible = oldSprite->invisible;
+ sprite->pos1.x = oldSprite->pos1.x;
+ sprite->pos1.y = oldSprite->pos1.y + sub_81268D0(mapObject) + sprite->data2;
+ sprite->centerToCornerVecX = oldSprite->centerToCornerVecX;
+ sprite->centerToCornerVecY = oldSprite->centerToCornerVecY;
+ sprite->pos2.x = oldSprite->pos2.x;
+ sprite->pos2.y = -oldSprite->pos2.y;
+ sprite->coordOffsetEnabled = oldSprite->coordOffsetEnabled;
+ if (sprite->data7 == FALSE)
+ {
+ sprite->oam.matrixNum = 0;
+ if (oldSprite->oam.matrixNum & 0x8)
+ {
+ sprite->oam.matrixNum = 1;
+ }
+ }
+ }
+}
+
+u8 sub_8126B54(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[8] /*gFieldEffectSpriteTemplate_Arrow*/, 0, 0, 0x52);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->oam.priority = 1;
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->invisible = TRUE;
+ }
+ return spriteId;
+}
+
+void objid_set_invisible(u8 spriteId)
+{
+ gSprites[spriteId].invisible = TRUE;
+}
+
+void sub_8126BC4(u8 spriteId, u8 animNum, s16 x, s16 y)
+{
+ s16 x2;
+ s16 y2;
+ struct Sprite *sprite;
+
+ sprite = &gSprites[spriteId];
+ if (sprite->invisible || sprite->data0 != x || sprite->data1 != y)
+ {
+ sub_80603CC(x, y, &x2, &y2);
+ sprite = &gSprites[spriteId];
+ sprite->pos1.x = x2 + 8;
+ sprite->pos1.y = y2 + 8;
+ sprite->invisible = FALSE;
+ sprite->data0 = x;
+ sprite->data1 = y;
+ StartSpriteAnim(sprite, animNum - 1);
+ }
+}
+
+u32 FldEff_Shadow(void)
+{
+ u8 mapObjectId;
+ const struct MapObjectGraphicsInfo *graphicsInfo;
+ u8 spriteId;
+
+ mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[gUnknown_08401E32[graphicsInfo->shadowSize]], 0, 0, 0x94);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].coordOffsetEnabled = TRUE;
+ gSprites[spriteId].data0 = gFieldEffectArguments[0];
+ gSprites[spriteId].data1 = gFieldEffectArguments[1];
+ gSprites[spriteId].data2 = gFieldEffectArguments[2];
+ gSprites[spriteId].data3 = (graphicsInfo->height >> 1) - gUnknown_08401E36[graphicsInfo->shadowSize];
+ }
+ return 0;
+}
+
+void oamc_shadow(struct Sprite *sprite)
+{
+ u8 mapObjectId;
+ struct MapObject *mapObject;
+ struct Sprite *linkedSprite;
+
+ if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId))
+ {
+ FieldEffectStop(sprite, FLDEFF_SHADOW);
+ }
+ else
+ {
+ mapObject = &gMapObjects[mapObjectId];
+ linkedSprite = &gSprites[mapObject->spriteId];
+ sprite->oam.priority = linkedSprite->oam.priority;
+ sprite->pos1.x = linkedSprite->pos1.x;
+ sprite->pos1.y = linkedSprite->pos1.y + sprite->data3;
+ if (!mapObject->active || !mapObject->mapobj_bit_22 || MetatileBehavior_IsPokeGrass(mapObject->mapobj_unk_1E) || MetatileBehavior_IsSurfableWaterOrUnderwater(mapObject->mapobj_unk_1E) || MetatileBehavior_IsSurfableWaterOrUnderwater(mapObject->mapobj_unk_1F) || MetatileBehavior_IsReflective(mapObject->mapobj_unk_1E) || MetatileBehavior_IsReflective(mapObject->mapobj_unk_1F))
+ {
+ FieldEffectStop(sprite, FLDEFF_SHADOW);
+ }
+ }
+}
+
+u32 FldEff_TallGrass(void)
+{
+ s16 x;
+ s16 y;
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ x = gFieldEffectArguments[0];
+ y = gFieldEffectArguments[1];
+ sub_8060470(&x, &y, 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[4], x, y, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectArguments[3];
+ sprite->data0 = gFieldEffectArguments[2];
+ sprite->data1 = gFieldEffectArguments[0];
+ sprite->data2 = gFieldEffectArguments[1];
+ sprite->data3 = gFieldEffectArguments[4];
+ sprite->data4 = gFieldEffectArguments[5];
+ sprite->data5 = gFieldEffectArguments[6];
+ if (gFieldEffectArguments[7])
+ {
+ SeekSpriteAnim(sprite, 4);
+ }
+ }
+ return 0;
+}
+
+void unc_grass_normal(struct Sprite *sprite)
+{
+ u8 mapNum;
+ u8 mapGroup;
+ u8 metatileBehavior;
+ u8 localId;
+ u8 mapObjectId;
+ struct MapObject *mapObject;
+
+ mapNum = sprite->data5 >> 8;
+ mapGroup = sprite->data5;
+ if (gCamera.field_0 && (gSaveBlock1.location.mapNum != mapNum || gSaveBlock1.location.mapGroup != mapGroup))
+ {
+ sprite->data1 -= gCamera.x;
+ sprite->data2 -= gCamera.y;
+ sprite->data5 = ((u8)gSaveBlock1.location.mapNum << 8) | (u8)gSaveBlock1.location.mapGroup;
+ }
+ localId = sprite->data3 >> 8;
+ mapNum = sprite->data3;
+ mapGroup = sprite->data4;
+ metatileBehavior = MapGridGetMetatileBehaviorAt(sprite->data1, sprite->data2);
+ if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId) || !MetatileBehavior_IsTallGrass(metatileBehavior) || (sprite->data7 && sprite->animEnded))
+ {
+ FieldEffectStop(sprite, FLDEFF_TALL_GRASS);
+ }
+ else
+ {
+ mapObject = &gMapObjects[mapObjectId];
+ if ((mapObject->coords2.x != sprite->data1 || mapObject->coords2.y != sprite->data2) && (mapObject->coords3.x != sprite->data1 || mapObject->coords3.y != sprite->data2))
+ {
+ sprite->data7 = TRUE;
+ }
+ metatileBehavior = 0;
+ if (sprite->animCmdIndex == 0)
+ {
+ metatileBehavior = 4;
+ }
+ sub_806487C(sprite, 0);
+ sub_812882C(sprite, sprite->data0, metatileBehavior);
+ }
+}
+
+u32 FldEff_JumpTallGrass(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 12);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[10], gFieldEffectArguments[0], gFieldEffectArguments[1], 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectArguments[3];
+ sprite->data0 = gFieldEffectArguments[2];
+ sprite->data1 = 12;
+ }
+ return 0;
+}
+
+u8 sub_8126FF0(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y)
+{
+ struct Sprite *sprite;
+ u8 i;
+
+ for (i = 0; i < MAX_SPRITES; i ++)
+ {
+ if (gSprites[i].inUse)
+ {
+ sprite = &gSprites[i];
+ if (sprite->callback == unc_grass_normal && (x == sprite->data1 && y == sprite->data2) && (localId == (u8)(sprite->data3 >> 8) && mapNum == (sprite->data3 & 0xFF) && mapGroup == sprite->data4))
+ {
+ return i;
+ }
+ }
+ }
+ return MAX_SPRITES;
+}
+
+u32 FldEff_LongGrass(void)
+{
+ s16 x;
+ s16 y;
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ x = gFieldEffectArguments[0];
+ y = gFieldEffectArguments[1];
+ sub_8060470(&x, &y, 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[15], x, y, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = ZCoordToPriority(gFieldEffectArguments[2]);
+ sprite->data0 = gFieldEffectArguments[2];
+ sprite->data1 = gFieldEffectArguments[0];
+ sprite->data2 = gFieldEffectArguments[1];
+ sprite->data3 = gFieldEffectArguments[4];
+ sprite->data4 = gFieldEffectArguments[5];
+ sprite->data5 = gFieldEffectArguments[6];
+ if (gFieldEffectArguments[7])
+ {
+ SeekSpriteAnim(sprite, 6);
+ }
+ }
+ return 0;
+}
+
+void unc_grass_tall(struct Sprite *sprite)
+{
+ u8 mapNum;
+ u8 mapGroup;
+ u8 metatileBehavior;
+ u8 localId;
+ u8 mapObjectId;
+ struct MapObject *mapObject;
+
+ mapNum = sprite->data5 >> 8;
+ mapGroup = sprite->data5;
+ if (gCamera.field_0 && (gSaveBlock1.location.mapNum != mapNum || gSaveBlock1.location.mapGroup != mapGroup))
+ {
+ sprite->data1 -= gCamera.x;
+ sprite->data2 -= gCamera.y;
+ sprite->data5 = ((u8)gSaveBlock1.location.mapNum << 8) | (u8)gSaveBlock1.location.mapGroup;
+ }
+ localId = sprite->data3 >> 8;
+ mapNum = sprite->data3;
+ mapGroup = sprite->data4;
+ metatileBehavior = MapGridGetMetatileBehaviorAt(sprite->data1, sprite->data2);
+ if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId) || !MetatileBehavior_IsLongGrass(metatileBehavior) || (sprite->data7 && sprite->animEnded))
+ {
+ FieldEffectStop(sprite, FLDEFF_LONG_GRASS);
+ }
+ else
+ {
+ mapObject = &gMapObjects[mapObjectId];
+ if ((mapObject->coords2.x != sprite->data1 || mapObject->coords2.y != sprite->data2) && (mapObject->coords3.x != sprite->data1 || mapObject->coords3.y != sprite->data2))
+ {
+ sprite->data7 = TRUE;
+ }
+ sub_806487C(sprite, 0);
+ sub_812882C(sprite, sprite->data0, 0);
+ }
+}
+
+u32 FldEff_JumpLongGrass(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[16], gFieldEffectArguments[0], gFieldEffectArguments[1], 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectArguments[3];
+ sprite->data0 = gFieldEffectArguments[2];
+ sprite->data1 = 18;
+ }
+ return 0;
+}
+
+u32 FldEff_ShortGrass(void)
+{
+ u8 mapObjectId;
+ struct MapObject *mapObject;
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ mapObject = &gMapObjects[mapObjectId];
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[30], 0, 0, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &(gSprites[spriteId]);
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority;
+ sprite->data0 = gFieldEffectArguments[0];
+ sprite->data1 = gFieldEffectArguments[1];
+ sprite->data2 = gFieldEffectArguments[2];
+ sprite->data3 = gSprites[mapObject->spriteId].pos1.x;
+ sprite->data4 = gSprites[mapObject->spriteId].pos1.y;
+ }
+ return 0;
+}
+
+void sub_8127334(struct Sprite *sprite)
+{
+ u8 mapObjectId;
+ s16 x;
+ s16 y;
+ const struct MapObjectGraphicsInfo *graphicsInfo;
+ struct Sprite *linkedSprite;
+
+ if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_18)
+ {
+ FieldEffectStop(sprite, FLDEFF_SHORT_GRASS);
+ }
+ else
+ {
+ graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId);
+ linkedSprite = &gSprites[gMapObjects[mapObjectId].spriteId];
+ y = linkedSprite->pos1.y;
+ x = linkedSprite->pos1.x;
+ if (x != sprite->data3 || y != sprite->data4)
+ {
+ sprite->data3 = x;
+ sprite->data4 = y;
+ if (sprite->animEnded)
+ {
+ StartSpriteAnim(sprite, 0);
+ }
+ }
+ sprite->pos1.x = x;
+ sprite->pos1.y = y;
+ sprite->pos2.y = (graphicsInfo->height >> 1) - 8;
+ sprite->subpriority = linkedSprite->subpriority - 1;
+ sprite->oam.priority = linkedSprite->oam.priority;
+ sub_806487C(sprite, linkedSprite->invisible);
+ }
+}
+
+u32 FldEff_SandFootprints(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[11], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectArguments[3];
+ sprite->data7 = FLDEFF_SAND_FOOTPRINTS;
+ StartSpriteAnim(sprite, gFieldEffectArguments[4]);
+ }
+ return 0;
+}
+
+u32 FldEff_DeepSandFootprints(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[23], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectArguments[3];
+ sprite->data7 = FLDEFF_DEEP_SAND_FOOTPRINTS;
+ StartSpriteAnim(sprite, gFieldEffectArguments[4]);
+ }
+ return spriteId;
+}
+
+u32 FldEff_BikeTireTracks(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[27], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectArguments[3];
+ sprite->data7 = FLDEFF_BIKE_TIRE_TRACKS;
+ StartSpriteAnim(sprite, gFieldEffectArguments[4]);
+ }
+ return spriteId;
+}
+
+void sub_8127584(struct Sprite *sprite)
+{
+ gUnknown_08401E40[sprite->data0](sprite);
+}
+
+static void sub_81275A0(struct Sprite *sprite)
+{
+ if (++sprite->data1 > 40)
+ {
+ sprite->data0 = 1;
+ }
+ sub_806487C(sprite, FALSE);
+}
+
+static void sub_81275C4(struct Sprite *sprite)
+{
+ sprite->invisible ^= 1;
+ sprite->data1 ++;
+ sub_806487C(sprite, sprite->invisible);
+ if (sprite->data1 > 56)
+ {
+ FieldEffectStop(sprite, sprite->data7);
+ }
+}
+
+u32 FldEff_Splash(void)
+{
+ u8 mapObjectId;
+ struct MapObject *mapObject;
+ u8 spriteId;
+ struct Sprite *sprite;
+ const struct MapObjectGraphicsInfo *graphicsInfo;
+ struct Sprite *linkedSprite;
+
+ mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ mapObject = &gMapObjects[mapObjectId];
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[13], 0, 0, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ linkedSprite = &gSprites[mapObject->spriteId];
+ sprite->oam.priority = linkedSprite->oam.priority;
+ sprite->data0 = gFieldEffectArguments[0];
+ sprite->data1 = gFieldEffectArguments[1];
+ sprite->data2 = gFieldEffectArguments[2];
+ sprite->pos2.y = (graphicsInfo->height >> 1) - 4;
+ PlaySE(SE_MIZU);
+ }
+ return 0;
+}
+
+void sub_81276B4(struct Sprite *sprite)
+{
+ u8 mapObjectId;
+
+ if (sprite->animEnded || TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId))
+ {
+ FieldEffectStop(sprite, FLDEFF_SPLASH);
+ }
+ else
+ {
+ sprite->pos1.x = gSprites[gMapObjects[mapObjectId].spriteId].pos1.x;
+ sprite->pos1.y = gSprites[gMapObjects[mapObjectId].spriteId].pos1.y;
+ sub_806487C(sprite, FALSE);
+ }
+}
+
+u32 FldEff_JumpSmallSplash(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 12);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[14], gFieldEffectArguments[0], gFieldEffectArguments[1], 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectArguments[3];
+ sprite->data0 = gFieldEffectArguments[2];
+ sprite->data1 = FLDEFF_JUMP_SMALL_SPLASH;
+ }
+ return 0;
+}
+
+u32 FldEff_JumpBigSplash(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[12], gFieldEffectArguments[0], gFieldEffectArguments[1], 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectArguments[3];
+ sprite->data0 = gFieldEffectArguments[2];
+ sprite->data1 = FLDEFF_JUMP_BIG_SPLASH;
+ }
+ return 0;
+}
+
+u32 FldEff_FeetInFlowingWater(void)
+{
+ u8 mapObjectId;
+ struct MapObject *mapObject;
+ u8 spriteId;
+ struct Sprite *sprite;
+ const struct MapObjectGraphicsInfo *graphicsInfo;
+
+ mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ mapObject = &gMapObjects[mapObjectId];
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[13], 0, 0, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
+ sprite = &gSprites[spriteId];
+ sprite->callback = sub_81278D8;
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority;
+ sprite->data0 = gFieldEffectArguments[0];
+ sprite->data1 = gFieldEffectArguments[1];
+ sprite->data2 = gFieldEffectArguments[2];
+ sprite->data3 = -1;
+ sprite->data4 = -1;
+ sprite->pos2.y = (graphicsInfo->height >> 1) - 4;
+ StartSpriteAnim(sprite, 1);
+ }
+ return 0;
+}
+
+static void sub_81278D8(struct Sprite *sprite)
+{
+ u8 mapObjectId;
+ struct Sprite *linkedSprite;
+ struct MapObject *mapObject;
+
+ if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_19)
+ {
+ FieldEffectStop(sprite, FLDEFF_FEET_IN_FLOWING_WATER);
+ }
+ else
+ {
+ mapObject = &gMapObjects[mapObjectId];
+ linkedSprite = &gSprites[mapObject->spriteId];
+ sprite->pos1.x = linkedSprite->pos1.x;
+ sprite->pos1.y = linkedSprite->pos1.y;
+ sprite->subpriority = linkedSprite->subpriority;
+ sub_806487C(sprite, FALSE);
+ if (mapObject->coords2.x != sprite->data3 || mapObject->coords2.y != sprite->data4)
+ {
+ sprite->data3 = mapObject->coords2.x;
+ sprite->data4 = mapObject->coords2.y;
+ if (!sprite->invisible)
+ {
+ PlaySE(SE_MIZU);
+ }
+ }
+ }
+}
+
+u32 FldEff_Ripple(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[5], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectArguments[3];
+ sprite->data0 = FLDEFF_RIPPLE;
+ }
+ return 0;
+}
+
+u32 FldEff_HotSpringsWater(void)
+{
+ u8 mapObjectId;
+ struct MapObject *mapObject;
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ mapObject = &gMapObjects[mapObjectId];
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[31], 0, 0, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority;
+ sprite->data0 = gFieldEffectArguments[0];
+ sprite->data1 = gFieldEffectArguments[1];
+ sprite->data2 = gFieldEffectArguments[2];
+ sprite->data3 = gSprites[mapObject->spriteId].pos1.x;
+ sprite->data4 = gSprites[mapObject->spriteId].pos1.y;
+ }
+ return 0;
+}
+
+void sub_8127A7C(struct Sprite *sprite)
+{
+ u8 mapObjectId;
+ const struct MapObjectGraphicsInfo *graphicsInfo;
+ struct Sprite *linkedSprite;
+
+ if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_21)
+ {
+ FieldEffectStop(sprite, FLDEFF_HOT_SPRINGS_WATER);
+ }
+ else
+ {
+ graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId);
+ linkedSprite = &gSprites[gMapObjects[mapObjectId].spriteId];
+ sprite->pos1.x = linkedSprite->pos1.x;
+ sprite->pos1.y = (graphicsInfo->height >> 1) + linkedSprite->pos1.y - 8;
+ sprite->subpriority = linkedSprite->subpriority - 1;
+ sub_806487C(sprite, FALSE);
+ }
+}
+
+u32 FldEff_Unknown19(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[17], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectArguments[3];
+ sprite->data0 = FLDEFF_UNKNOWN_19;
+ }
+ return 0;
+}
+
+u32 FldEff_Unknown20(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[18], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectArguments[3];
+ sprite->data0 = FLDEFF_UNKNOWN_20;
+ }
+ return 0;
+}
+
+u32 FldEff_Unknown21(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[19], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectArguments[3];
+ sprite->data0 = FLDEFF_UNKNOWN_21;
+ }
+ return 0;
+}
+
+u32 FldEff_Unknown22(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[20], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectArguments[3];
+ sprite->data0 = FLDEFF_UNKNOWN_22;
+ }
+ return 0;
+}
+
+void ash(s16 x, s16 y, u16 c, s16 d)
+{
+ gFieldEffectArguments[0] = x;
+ gFieldEffectArguments[1] = y;
+ gFieldEffectArguments[2] = 0x52;
+ gFieldEffectArguments[3] = 1;
+ gFieldEffectArguments[4] = c;
+ gFieldEffectArguments[5] = d;
+ FieldEffectStart(FLDEFF_ASH);
+}
+
+u32 FldEff_Ash(void)
+{
+ s16 x;
+ s16 y;
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ x = gFieldEffectArguments[0];
+ y = gFieldEffectArguments[1];
+ sub_8060470(&x, &y, 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[6], x, y, gFieldEffectArguments[2]);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectArguments[3];
+ sprite->data1 = gFieldEffectArguments[0];
+ sprite->data2 = gFieldEffectArguments[1];
+ sprite->data3 = gFieldEffectArguments[4];
+ sprite->data4 = gFieldEffectArguments[5];
+ }
+ return 0;
+}
+
+void sub_8127D84(struct Sprite *sprite)
+{
+ gUnknown_08401E48[sprite->data0](sprite);
+}
+
+static void sub_8127DA0(struct Sprite *sprite)
+{
+ sprite->invisible = TRUE;
+ sprite->animPaused = TRUE;
+ if (--sprite->data4 == 0)
+ {
+ sprite->data0 = 1;
+ }
+}
+
+static void sub_8127DD0(struct Sprite *sprite)
+{
+ sprite->invisible = FALSE;
+ sprite->animPaused = FALSE;
+ MapGridSetMetatileIdAt(sprite->data1, sprite->data2, sprite->data3);
+ CurrentMapDrawMetatileAt(sprite->data1, sprite->data2);
+ gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_2 = TRUE;
+ sprite->data0 = 2;
+}
+
+static void sub_8127E30(struct Sprite *sprite)
+{
+ sub_806487C(sprite, FALSE);
+ if (sprite->animEnded)
+ {
+ FieldEffectStop(sprite, FLDEFF_ASH);
+ }
+}
+
+u32 FldEff_SurfBlob(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[7], gFieldEffectArguments[0], gFieldEffectArguments[1], 0x96);
+ if (spriteId !=MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.paletteNum = 0;
+ sprite->data2 = gFieldEffectArguments[2];
+ sprite->data3 = -1;
+ sprite->data6 = -1;
+ sprite->data7 = -1;
+ }
+ FieldEffectActiveListRemove(FLDEFF_SURF_BLOB);
+ return spriteId;
+}
+
+void sub_8127ED0(u8 spriteId, u8 value)
+{
+ gSprites[spriteId].data0 = (gSprites[spriteId].data0 & ~0xF) | (value & 0xF);
+}
+
+void sub_8127EFC(u8 spriteId, u8 value)
+{
+ gSprites[spriteId].data0 = (gSprites[spriteId].data0 & ~0xF0) | ((value & 0xF) << 4);
+}
+
+void sub_8127F28(u8 spriteId, u8 value, s16 data1)
+{
+ gSprites[spriteId].data0 = (gSprites[spriteId].data0 & ~0xF00) | ((value & 0xF) << 8);
+ gSprites[spriteId].data1 = data1;
+}
+
+static u8 sub_8127F5C(struct Sprite *sprite)
+{
+ return sprite->data0 & 0xF;
+}
+
+static u8 sub_8127F64(struct Sprite *sprite)
+{
+ return (sprite->data0 & 0xF0) >> 4;
+}
+
+static u8 sub_8127F70(struct Sprite *sprite)
+{
+ return (sprite->data0 & 0xF00) >> 8;
+}
+
+void sub_8127F7C(struct Sprite *sprite)
+{
+ struct MapObject *mapObject;
+ struct Sprite *linkedSprite;
+
+ mapObject = &gMapObjects[sprite->data2];
+ linkedSprite = &gSprites[mapObject->spriteId];
+ sub_8127FD4(mapObject, sprite);
+ sub_812800C(mapObject, sprite);
+ sub_81280A0(mapObject, linkedSprite, sprite);
+ sprite->oam.priority = linkedSprite->oam.priority;
+}
+
+static void sub_8127FD4(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 unk_8041E54[ARRAY_COUNT(gUnknown_08401E54)];
+
+ memcpy(unk_8041E54, gUnknown_08401E54, sizeof gUnknown_08401E54);
+ if (sub_8127F64(sprite) == 0)
+ {
+ StartSpriteAnimIfDifferent(sprite, unk_8041E54[mapObject->placeholder18]);
+ }
+}
+
+#ifdef NONMATCHING
+static void sub_812800C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ s16 x;
+ s16 y;
+ u8 i;
+
+ x = mapObject->coords2.x;
+ y = mapObject->coords2.y;
+ if (sprite->pos2.y == 0 && (x != sprite->data6 || y != sprite->data7))
+ {
+ sprite->data5 = sprite->pos2.y;
+ for (sprite->data6 = x, sprite->data7 = y, i = DIR_SOUTH; i <= DIR_EAST; i ++, x = sprite->data6, y = sprite->data7)
+ {
+ MoveCoords(i, &x, &y);
+ if (MapGridGetZCoordAt(x, y) == 3)
+ {
+ sprite->data5 ++;
+ break;
+ }
+ }
+ }
+}
+#else
+__attribute__((naked)) static void sub_812800C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r8\n"
+ "\tpush {r7}\n"
+ "\tsub sp, 0x4\n"
+ "\tadds r4, r1, 0\n"
+ "\tldrh r2, [r0, 0x10]\n"
+ "\tmov r1, sp\n"
+ "\tstrh r2, [r1]\n"
+ "\tldrh r1, [r0, 0x12]\n"
+ "\tmov r0, sp\n"
+ "\tadds r0, 0x2\n"
+ "\tstrh r1, [r0]\n"
+ "\tmovs r2, 0x26\n"
+ "\tldrsh r3, [r4, r2]\n"
+ "\tmov r8, r0\n"
+ "\tcmp r3, 0\n"
+ "\tbne _08128094\n"
+ "\tmov r0, sp\n"
+ "\tmovs r5, 0\n"
+ "\tldrsh r2, [r0, r5]\n"
+ "\tmovs r5, 0x3A\n"
+ "\tldrsh r0, [r4, r5]\n"
+ "\tcmp r2, r0\n"
+ "\tbne _08128048\n"
+ "\tlsls r0, r1, 16\n"
+ "\tasrs r0, 16\n"
+ "\tmovs r5, 0x3C\n"
+ "\tldrsh r1, [r4, r5]\n"
+ "\tcmp r0, r1\n"
+ "\tbeq _08128094\n"
+ "_08128048:\n"
+ "\tstrh r3, [r4, 0x38]\n"
+ "\tstrh r2, [r4, 0x3A]\n"
+ "\tmov r1, r8\n"
+ "\tmovs r2, 0\n"
+ "\tldrsh r0, [r1, r2]\n"
+ "\tstrh r0, [r4, 0x3C]\n"
+ "\tmovs r5, 0x1\n"
+ "\tmov r7, r8\n"
+ "\tmov r6, sp\n"
+ "_0812805A:\n"
+ "\tadds r0, r5, 0\n"
+ "\tmov r1, sp\n"
+ "\tadds r2, r7, 0\n"
+ "\tbl MoveCoords\n"
+ "\tmovs r1, 0\n"
+ "\tldrsh r0, [r6, r1]\n"
+ "\tmovs r2, 0\n"
+ "\tldrsh r1, [r7, r2]\n"
+ "\tbl MapGridGetZCoordAt\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tcmp r0, 0x3\n"
+ "\tbne _08128080\n"
+ "\tldrh r0, [r4, 0x38]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrh r0, [r4, 0x38]\n"
+ "\tb _08128094\n"
+ "_08128080:\n"
+ "\tadds r0, r5, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r5, r0, 24\n"
+ "\tldrh r0, [r4, 0x3A]\n"
+ "\tstrh r0, [r6]\n"
+ "\tldrh r0, [r4, 0x3C]\n"
+ "\tmov r1, r8\n"
+ "\tstrh r0, [r1]\n"
+ "\tcmp r5, 0x4\n"
+ "\tbls _0812805A\n"
+ "_08128094:\n"
+ "\tadd sp, 0x4\n"
+ "\tpop {r3}\n"
+ "\tmov r8, r3\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0");
+}
+#endif
+
+static void sub_81280A0(struct MapObject *mapObject, struct Sprite *linkedSprite, struct Sprite *sprite)
+{
+ u16 unk_8401E5A[ARRAY_COUNT(gUnknown_08401E5A)];
+ u8 v0;
+
+ memcpy(unk_8401E5A, gUnknown_08401E5A, sizeof gUnknown_08401E5A);
+ v0 = sub_8127F5C(sprite);
+ if (v0 != 0)
+ {
+ if (((u16)(++ sprite->data4) & unk_8401E5A[sprite->data5]) == 0)
+ {
+ sprite->pos2.y += sprite->data3;
+ }
+ if ((sprite->data4 & 0x0F) == 0)
+ {
+ sprite->data3 = -sprite->data3;
+ }
+ if (v0 != 2)
+ {
+ if (sub_8127F70(sprite) == 0)
+ {
+ linkedSprite->pos2.y = sprite->pos2.y;
+ }
+ else
+ {
+ linkedSprite->pos2.y = sprite->data1 + sprite->pos2.y;
+ }
+ sprite->pos1.x = linkedSprite->pos1.x;
+ sprite->pos1.y = linkedSprite->pos1.y + 8;
+ }
+ }
+}
+
+u8 sub_8128124(u8 oldSpriteId)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ spriteId = CreateSpriteAtEnd(&gDummySpriteTemplate, 0, 0, -1);
+ sprite = &gSprites[spriteId];
+ sprite->callback = sub_8128174;
+ sprite->invisible = TRUE;
+ sprite->data0 = oldSpriteId;
+ sprite->data1 = 1;
+ return spriteId;
+}
+
+static void sub_8128174(struct Sprite *sprite)
+{
+ struct Sprite *oldSprite;
+
+ oldSprite = &gSprites[sprite->data0];
+ if (((sprite->data2++) & 0x03) == 0)
+ {
+ oldSprite->pos2.y += sprite->data1;
+ }
+ if ((sprite->data2 & 0x0F) == 0)
+ {
+ sprite->data1 = -sprite->data1;
+ }
+}
+
+u32 FldEff_Dust(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 12);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[9], gFieldEffectArguments[0], gFieldEffectArguments[1], 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectArguments[3];
+ sprite->data0 = gFieldEffectArguments[2];
+ sprite->data1 = 10;
+ }
+ return 0;
+}
+
+u32 FldEff_SandPile(void)
+{
+ u8 mapObjectId;
+ struct MapObject *mapObject;
+ u8 spriteId;
+ struct Sprite *sprite;
+ const struct MapObjectGraphicsInfo *graphicsInfo;
+
+ mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ mapObject = &gMapObjects[mapObjectId];
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[29], 0, 0, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority;
+ sprite->data0 = gFieldEffectArguments[0];
+ sprite->data1 = gFieldEffectArguments[1];
+ sprite->data2 = gFieldEffectArguments[2];
+ sprite->data3 = gSprites[mapObject->spriteId].pos1.x;
+ sprite->data4 = gSprites[mapObject->spriteId].pos1.y;
+ sprite->pos2.y = (graphicsInfo->height >> 1) - 2;
+ SeekSpriteAnim(sprite, 2);
+ }
+ return 0;
+}
+
+void sub_81282E0(struct Sprite *sprite)
+{
+ u8 mapObjectId;
+ s16 x;
+ s16 y;
+
+ if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_20)
+ {
+ FieldEffectStop(sprite, FLDEFF_SAND_PILE);
+ }
+ else
+ {
+ y = gSprites[gMapObjects[mapObjectId].spriteId].pos1.y;
+ x = gSprites[gMapObjects[mapObjectId].spriteId].pos1.x;
+ if (x != sprite->data3 || y != sprite->data4)
+ {
+ sprite->data3 = x;
+ sprite->data4 = y;
+ if (sprite->animEnded)
+ {
+ StartSpriteAnim(sprite, 0);
+ }
+ }
+ sprite->pos1.x = x;
+ sprite->pos1.y = y;
+ sprite->subpriority = gSprites[gMapObjects[mapObjectId].spriteId].subpriority;
+ sub_806487C(sprite, FALSE);
+ }
+}
+
+u32 FldEff_Bubbles(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 0);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[34], gFieldEffectArguments[0], gFieldEffectArguments[1], 0x52);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = 1;
+ }
+ return 0;
+}
+
+void sub_8128410(struct Sprite *sprite)
+{
+ sprite->data0 += 0x80;
+ sprite->data0 &= 0x100;
+ sprite->pos1.y -= sprite->data0 >> 8;
+ sub_806487C(sprite, FALSE);
+ if (sprite->invisible || sprite->animEnded)
+ {
+ FieldEffectStop(sprite, FLDEFF_BUBBLES);
+ }
+}
+
+u32 FldEff_BerryTreeGrowthSparkle(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 4);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[22], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectArguments[3];
+ sprite->oam.paletteNum = 5;
+ sprite->data0 = FLDEFF_BERRY_TREE_GROWTH_SPARKLE;
+ }
+ return 0;
+}
+
+u32 FldEff_TreeDisguise(void)
+{
+ return ShowDisguiseFieldEffect(FLDEFF_TREE_DISGUISE, 0x18, 0x04);
+}
+
+
+u32 FldEff_MountainDisguise(void)
+{
+ return ShowDisguiseFieldEffect(FLDEFF_MOUNTAIN_DISGUISE, 0x19, 0x03);
+}
+
+
+u32 FldEff_SandDisguise(void)
+{
+ return ShowDisguiseFieldEffect(FLDEFF_SAND_DISGUISE, 0x1C, 0x02);
+}
+
+static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 templateIdx, u8 paletteNum)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ if (TryGetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2], &spriteId))
+ {
+ FieldEffectActiveListRemove(fldEff);
+ return MAX_SPRITES;
+ }
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[templateIdx], 0, 0, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled ++;
+ sprite->oam.paletteNum = paletteNum;
+ sprite->data1 = fldEff;
+ sprite->data2 = gFieldEffectArguments[0];
+ sprite->data3 = gFieldEffectArguments[1];
+ sprite->data4 = gFieldEffectArguments[2];
+ }
+ return spriteId;
+}
+
+void sub_81285AC(struct Sprite *sprite)
+{
+ u8 mapObjectId;
+ const struct MapObjectGraphicsInfo *graphicsInfo;
+ struct Sprite *linkedSprite;
+
+ if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data2, sprite->data3, sprite->data4, &mapObjectId))
+ {
+ FieldEffectStop(sprite, sprite->data1);
+ }
+ // else {
+ graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId);
+ linkedSprite = &gSprites[gMapObjects[mapObjectId].spriteId];
+ sprite->invisible = linkedSprite->invisible;
+ sprite->pos1.x = linkedSprite->pos1.x;
+ sprite->pos1.y = (graphicsInfo->height >> 1) + linkedSprite->pos1.y - 16;
+ sprite->subpriority = linkedSprite->subpriority - 1;
+ if (sprite->data0 == 1)
+ {
+ sprite->data0 ++;
+ StartSpriteAnim(sprite, 1);
+ }
+ if (sprite->data0 == 2 && sprite->animEnded)
+ {
+ sprite->data7 = 1;
+ }
+ if (sprite->data0 == 3)
+ {
+ FieldEffectStop(sprite, sprite->data1);
+ }
+ // }
+}
+
+void sub_812869C(struct MapObject *mapObject)
+{
+ if (mapObject->mapobj_unk_21 == 1)
+ {
+ gSprites[mapObject->mapobj_unk_1A].data0 ++;
+ }
+}
+
+bool8 sub_81286C4(struct MapObject *mapObject)
+{
+ struct Sprite *sprite;
+
+ if (mapObject->mapobj_unk_21 == 2)
+ {
+ return TRUE;
+ }
+ if (mapObject->mapobj_unk_21 == 0)
+ {
+ return TRUE;
+ }
+ sprite = &gSprites[mapObject->mapobj_unk_1A];
+ if (sprite->data7)
+ {
+ mapObject->mapobj_unk_21 = 2;
+ sprite->data0 ++;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+u32 FldEff_Sparkle(void)
+{
+ u8 spriteId;
+
+ gFieldEffectArguments[0] += 7;
+ gFieldEffectArguments[1] += 7;
+ sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[35], gFieldEffectArguments[0], gFieldEffectArguments[1], 0x52);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].oam.priority = gFieldEffectArguments[2];
+ gSprites[spriteId].coordOffsetEnabled = TRUE;
+ }
+ return 0;
+}
+
+void sub_8128774(struct Sprite *sprite)
+{
+ if (sprite->data0 == 0)
+ {
+ if (sprite->animEnded)
+ {
+ sprite->invisible = TRUE;
+ sprite->data0 ++;
+ }
+ if (sprite->data0 == 0)
+ {
+ return;
+ }
+ }
+ if (++ sprite->data1 >= 35)
+ {
+ FieldEffectStop(sprite, FLDEFF_SPARKLE);
+ }
+}
+
+void sub_81287C4(struct Sprite *sprite)
+{
+ if (sprite->animEnded)
+ {
+ FieldEffectStop(sprite, sprite->data1);
+ }
+ else
+ {
+ sub_806487C(sprite, FALSE);
+ SetObjectSubpriorityByZCoord(sprite->data0, sprite, 0);
+ }
+}
+
+void sub_8128800(struct Sprite *sprite)
+{
+ if (sprite->animEnded)
+ {
+ FieldEffectStop(sprite, sprite->data0);
+ }
+ else
+ {
+ sub_806487C(sprite, FALSE);
+ }
+}
+
+#ifdef NONMATCHING
+static void sub_812882C(struct Sprite *sprite /*r6*/, u8 z, u8 offset)
+{
+ u8 i;
+ s16 xlo;
+ s16 xhi;
+ s16 lx;
+ s16 lyhi;
+ s16 ly;
+ s16 ylo;
+ s16 yhi;
+ struct MapObject *mapObject; // r4
+ const struct MapObjectGraphicsInfo *graphicsInfo; // destroyed
+ struct Sprite *linkedSprite; // r5
+
+ SetObjectSubpriorityByZCoord(z, sprite, offset);
+ for (i = 0; i < 16; i ++)
+ {
+ mapObject = &gMapObjects[i];
+ if (mapObject->active)
+ {
+ graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
+ linkedSprite = &gSprites[mapObject->spriteId];
+ xhi = sprite->pos1.x + sprite->centerToCornerVecX;
+ xlo = sprite->pos1.x - sprite->centerToCornerVecX;
+ lx = linkedSprite->pos1.x;
+ if (xhi < lx && xlo > lx)
+ {
+ lyhi = linkedSprite->pos1.y + linkedSprite->centerToCornerVecY;
+ ly = linkedSprite->pos1.y;
+ ylo = sprite->pos1.y - sprite->centerToCornerVecY;
+ yhi = ylo + linkedSprite->centerToCornerVecY;
+ if ((lyhi < yhi || lyhi < ylo) && ly > yhi)
+ {
+ if (sprite->subpriority <= linkedSprite->subpriority)
+ {
+ sprite->subpriority = linkedSprite->subpriority + 2;
+ break;
+ }
+ }
+ }
+ }
+ }
+}
+#else
+__attribute__((naked)) static void sub_812882C(struct Sprite *sprite /*r6*/, u8 z, u8 offset)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tadds r6, r0, 0\n"
+ "\tadds r0, r1, 0\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tlsls r2, 24\n"
+ "\tlsrs r2, 24\n"
+ "\tadds r1, r6, 0\n"
+ "\tbl SetObjectSubpriorityByZCoord\n"
+ "\tmovs r7, 0\n"
+ "_08128842:\n"
+ "\tlsls r0, r7, 3\n"
+ "\tadds r0, r7\n"
+ "\tlsls r0, 2\n"
+ "\tldr r1, _081288DC @ =gMapObjects\n"
+ "\tadds r4, r0, r1\n"
+ "\tldrb r0, [r4]\n"
+ "\tlsls r0, 31\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _081288E4\n"
+ "\tldrb r0, [r4, 0x5]\n"
+ "\tbl GetFieldObjectGraphicsInfo\n"
+ "\tldrb r1, [r4, 0x4]\n"
+ "\tlsls r0, r1, 4\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tldr r1, _081288E0 @ =gSprites\n"
+ "\tadds r5, r0, r1\n"
+ "\tadds r0, r6, 0\n"
+ "\tadds r0, 0x28\n"
+ "\tmovs r2, 0\n"
+ "\tldrsb r2, [r0, r2]\n"
+ "\tldrh r0, [r6, 0x20]\n"
+ "\tadds r1, r0, r2\n"
+ "\tsubs r0, r2\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r4, r0, 16\n"
+ "\tlsls r1, 16\n"
+ "\tasrs r1, 16\n"
+ "\tmovs r0, 0x20\n"
+ "\tldrsh r2, [r5, r0]\n"
+ "\tcmp r1, r2\n"
+ "\tbge _081288E4\n"
+ "\tlsls r0, r4, 16\n"
+ "\tasrs r0, 16\n"
+ "\tcmp r0, r2\n"
+ "\tble _081288E4\n"
+ "\tadds r0, r5, 0\n"
+ "\tadds r0, 0x29\n"
+ "\tmovs r3, 0\n"
+ "\tldrsb r3, [r0, r3]\n"
+ "\tldrh r2, [r5, 0x22]\n"
+ "\tadds r2, r3\n"
+ "\tldrh r4, [r5, 0x22]\n"
+ "\tadds r0, r6, 0\n"
+ "\tadds r0, 0x29\n"
+ "\tmovs r1, 0\n"
+ "\tldrsb r1, [r0, r1]\n"
+ "\tldrh r0, [r6, 0x22]\n"
+ "\tsubs r0, r1\n"
+ "\tlsls r0, 16\n"
+ "\tasrs r0, 16\n"
+ "\tadds r3, r0, r3\n"
+ "\tlsls r2, 16\n"
+ "\tasrs r2, 16\n"
+ "\tlsls r3, 16\n"
+ "\tasrs r3, 16\n"
+ "\tcmp r2, r3\n"
+ "\tblt _081288BC\n"
+ "\tcmp r2, r0\n"
+ "\tbge _081288E4\n"
+ "_081288BC:\n"
+ "\tlsls r0, r4, 16\n"
+ "\tasrs r0, 16\n"
+ "\tcmp r0, r3\n"
+ "\tble _081288E4\n"
+ "\tadds r2, r6, 0\n"
+ "\tadds r2, 0x43\n"
+ "\tadds r0, r5, 0\n"
+ "\tadds r0, 0x43\n"
+ "\tldrb r1, [r0]\n"
+ "\tldrb r0, [r2]\n"
+ "\tcmp r0, r1\n"
+ "\tbhi _081288E4\n"
+ "\tadds r0, r1, 0x2\n"
+ "\tstrb r0, [r2]\n"
+ "\tb _081288EE\n"
+ "\t.align 2, 0\n"
+ "_081288DC: .4byte gMapObjects\n"
+ "_081288E0: .4byte gSprites\n"
+ "_081288E4:\n"
+ "\tadds r0, r7, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r7, r0, 24\n"
+ "\tcmp r7, 0xF\n"
+ "\tbls _08128842\n"
+ "_081288EE:\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0");
+}
+#endif
diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c
index e614d899a..d95177821 100644
--- a/src/field_fadetransition.c
+++ b/src/field_fadetransition.c
@@ -15,7 +15,7 @@
#include "map_obj_lock.h"
#include "metatile_behavior.h"
#include "palette.h"
-#include "rom4.h"
+#include "overworld.h"
#include "script.h"
#include "songs.h"
#include "sound.h"
@@ -40,8 +40,8 @@ void palette_bg_fill_black(void)
void pal_fill_for_map_transition(void)
{
- u8 map_light = get_map_light_from_warp0();
- switch (fade_type_for_given_maplight_pair(map_light, sav1_map_get_light_level()))
+ u8 map_light = get_map_type_from_warp0();
+ switch (fade_type_for_given_maplight_pair(map_light, Overworld_GetMapTypeOfSaveblockLocation()))
{
case 0:
fade_screen(0, 0);
@@ -61,7 +61,7 @@ void pal_fill_black(void)
void fade_8080918(void)
{
- u8 light_level = sav1_map_get_light_level();
+ u8 light_level = Overworld_GetMapTypeOfSaveblockLocation();
switch (sub_810CDB8(light_level, warp1_get_mapheader()->mapType))
{
case 0:
@@ -547,7 +547,7 @@ void sub_808115C(u8 taskId)
case 0:
FreezeMapObjects();
PlayerGetDestCoords(x, y);
- PlaySE(sub_8058790(*x, *y - 1));
+ PlaySE(GetDoorSoundEffect(*x, *y - 1));
task->data[1] = FieldAnimateDoorOpen(*x, *y - 1);
task->data[0] = 1;
break;
diff --git a/src/field_ground_effect.c b/src/field_ground_effect.c
index 42862d0ff..5af8ea3e3 100644
--- a/src/field_ground_effect.c
+++ b/src/field_ground_effect.c
@@ -1,11 +1,38 @@
#include "global.h"
#include "field_ground_effect.h"
+#include "field_effect.h"
+#include "field_effect_helpers.h"
+#include "field_map_obj_helpers.h"
#include "fieldmap.h"
#include "metatile_behavior.h"
-extern u32 gUnknown_08376008[];
+static void nullsub(struct MapObject *mapObj, struct Sprite *sprite, u8);
+static void DoTracksGroundEffect_Footprints(struct MapObject *mapObj, struct Sprite *sprite, u8);
+static void DoTracksGroundEffect_BikeTireTracks(
+ struct MapObject *mapObj, struct Sprite *sprite, u8);
+void GroundEffect_SpawnOnTallGrass(struct MapObject *mapObj, struct Sprite *sprite);
+void sub_8063E94(struct MapObject *mapObj, struct Sprite *sprite);
+void sub_8063EE0(struct MapObject *mapObj, struct Sprite *sprite);
+void sub_8063F2C(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_WaterReflection(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_IceReflection(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_FlowingWater(struct MapObject *mapObj, struct Sprite *sprite);
+void sub_8063FA0(struct MapObject *mapObj, struct Sprite *sprite);
+void sub_8063FCC(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_Ripple(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_StepOnPuddle(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_SandPile(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_JumpOnTallGrass(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_JumpOnLongGrass(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_JumpOnShallowWater(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_JumpOnWater(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_JumpLandingDust(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_ShortGrass(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_HotSprings(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_Seaweed(struct MapObject *mapObj, struct Sprite *sprite);
+u8 GetReflectionTypeByMetatileBehavior(u32 behavior);
-void GetAllGroundEffectFlags_OnSpawn(struct MapObject *mapObj, u32 *flags)
+static void GetAllGroundEffectFlags_OnSpawn(struct MapObject *mapObj, u32 *flags)
{
FieldObjectUpdateMetatileBehaviors(mapObj);
GetGroundEffectFlags_Reflection(mapObj, flags);
@@ -17,7 +44,7 @@ void GetAllGroundEffectFlags_OnSpawn(struct MapObject *mapObj, u32 *flags)
GetGroundEffectFlags_HotSprings(mapObj, flags);
}
-void GetAllGroundEffectFlags_OnBeginStep(struct MapObject *mapObj, u32 *flags)
+static void GetAllGroundEffectFlags_OnBeginStep(struct MapObject *mapObj, u32 *flags)
{
FieldObjectUpdateMetatileBehaviors(mapObj);
GetGroundEffectFlags_Reflection(mapObj, flags);
@@ -31,7 +58,7 @@ void GetAllGroundEffectFlags_OnBeginStep(struct MapObject *mapObj, u32 *flags)
GetGroundEffectFlags_HotSprings(mapObj, flags);
}
-void GetAllGroundEffectFlags_OnFinishStep(struct MapObject *mapObj, u32 *flags)
+static void GetAllGroundEffectFlags_OnFinishStep(struct MapObject *mapObj, u32 *flags)
{
FieldObjectUpdateMetatileBehaviors(mapObj);
GetGroundEffectFlags_ShallowFlowingWater(mapObj, flags);
@@ -101,7 +128,7 @@ void GetGroundEffectFlags_Tracks(struct MapObject *mapObj, u32 *flags)
*flags |= 0x100;
}
else if (MetatileBehavior_IsSandOrDeepSand(mapObj->mapobj_unk_1F)
- || MetatileBehavior_IsUnusedFootprintMetatile(mapObj->mapobj_unk_1F))
+ || MetatileBehavior_IsUnusedFootprintMetatile(mapObj->mapobj_unk_1F))
{
*flags |= 0x80;
}
@@ -110,7 +137,7 @@ void GetGroundEffectFlags_Tracks(struct MapObject *mapObj, u32 *flags)
void GetGroundEffectFlags_SandPile(struct MapObject *mapObj, u32 *flags)
{
if (MetatileBehavior_IsDeepSand(mapObj->mapobj_unk_1E)
- && MetatileBehavior_IsDeepSand(mapObj->mapobj_unk_1F))
+ && MetatileBehavior_IsDeepSand(mapObj->mapobj_unk_1F))
{
if (!mapObj->mapobj_bit_20)
{
@@ -127,8 +154,10 @@ void GetGroundEffectFlags_SandPile(struct MapObject *mapObj, u32 *flags)
void GetGroundEffectFlags_ShallowFlowingWater(struct MapObject *mapObj, u32 *flags)
{
- if ((MetatileBehavior_IsShallowFlowingWater(mapObj->mapobj_unk_1E) && MetatileBehavior_IsShallowFlowingWater(mapObj->mapobj_unk_1F))
- || (MetatileBehavior_IsPacifidlogLog(mapObj->mapobj_unk_1E) && MetatileBehavior_IsPacifidlogLog(mapObj->mapobj_unk_1F)))
+ if ((MetatileBehavior_IsShallowFlowingWater(mapObj->mapobj_unk_1E)
+ && MetatileBehavior_IsShallowFlowingWater(mapObj->mapobj_unk_1F))
+ || (MetatileBehavior_IsPacifidlogLog(mapObj->mapobj_unk_1E)
+ && MetatileBehavior_IsPacifidlogLog(mapObj->mapobj_unk_1F)))
{
if (!mapObj->mapobj_bit_19)
{
@@ -146,7 +175,7 @@ void GetGroundEffectFlags_ShallowFlowingWater(struct MapObject *mapObj, u32 *fla
void GetGroundEffectFlags_Puddle(struct MapObject *mapObj, u32 *flags)
{
if (MetatileBehavior_IsPuddle(mapObj->mapobj_unk_1E)
- && MetatileBehavior_IsPuddle(mapObj->mapobj_unk_1F))
+ && MetatileBehavior_IsPuddle(mapObj->mapobj_unk_1F))
{
*flags |= 0x400;
}
@@ -161,7 +190,7 @@ void GetGroundEffectFlags_Ripple(struct MapObject *mapObj, u32 *flags)
void GetGroundEffectFlags_ShortGrass(struct MapObject *mapObj, u32 *flags)
{
if (MetatileBehavior_IsShortGrass(mapObj->mapobj_unk_1E)
- && MetatileBehavior_IsShortGrass(mapObj->mapobj_unk_1F))
+ && MetatileBehavior_IsShortGrass(mapObj->mapobj_unk_1F))
{
if (!mapObj->mapobj_bit_18)
{
@@ -179,7 +208,7 @@ void GetGroundEffectFlags_ShortGrass(struct MapObject *mapObj, u32 *flags)
void GetGroundEffectFlags_HotSprings(struct MapObject *mapObj, u32 *flags)
{
if (MetatileBehavior_IsHotSprings(mapObj->mapobj_unk_1E)
- && MetatileBehavior_IsHotSprings(mapObj->mapobj_unk_1F))
+ && MetatileBehavior_IsHotSprings(mapObj->mapobj_unk_1F))
{
if (!mapObj->mapobj_bit_21)
{
@@ -204,8 +233,7 @@ void GetGroundEffectFlags_JumpLanding(struct MapObject *mapObj, u32 *flags)
{
typedef bool8 (*MetatileFunc)(u8);
- static const MetatileFunc metatileFuncs[] =
- {
+ static const MetatileFunc metatileFuncs[] = {
MetatileBehavior_IsTallGrass,
MetatileBehavior_IsLongGrass,
MetatileBehavior_IsPuddle,
@@ -214,14 +242,13 @@ void GetGroundEffectFlags_JumpLanding(struct MapObject *mapObj, u32 *flags)
MetatileBehavior_IsATile,
};
- static const u32 jumpLandingFlags[] =
- {
- 0x00001000, // Landing in tall grass
- 0x00002000, // Landing in long grass
- 0x00004000, // Landing on puddle
- 0x00008000, // Landing on surfable water or underwater
- 0x00004000, // Landing on shallow flowing water
- 0x00010000, // Landing on any other type of ground
+ static const u32 jumpLandingFlags[] = {
+ 0x00001000, // Landing in tall grass
+ 0x00002000, // Landing in long grass
+ 0x00004000, // Landing on puddle
+ 0x00008000, // Landing on surfable water or underwater
+ 0x00004000, // Landing on shallow flowing water
+ 0x00010000, // Landing on any other type of ground
};
if (mapObj->mapobj_bit_5 && !mapObj->mapobj_bit_25)
@@ -238,3 +265,532 @@ void GetGroundEffectFlags_JumpLanding(struct MapObject *mapObj, u32 *flags)
}
}
}
+
+u8 FieldObjectCheckForReflectiveSurface(struct MapObject *mapObj)
+{
+ const struct MapObjectGraphicsInfo *info = GetFieldObjectGraphicsInfo(mapObj->graphicsId);
+
+ // ceil div by tile width?
+ s16 width = (info->width + 8) >> 4;
+ s16 height = (info->height + 8) >> 4;
+ s16 i;
+ s16 j;
+ u8 result;
+ u8 b;
+ s16 one;
+
+#define RETURN_REFLECTION_TYPE_AT(x, y) \
+ b = MapGridGetMetatileBehaviorAt(x, y); \
+ result = GetReflectionTypeByMetatileBehavior(b); \
+ if (result != 0) \
+ return result;
+
+ for (i = 0, one = 1; i < height; i++)
+ {
+ RETURN_REFLECTION_TYPE_AT(mapObj->coords2.x, mapObj->coords2.y + one + i)
+ RETURN_REFLECTION_TYPE_AT(mapObj->coords3.x, mapObj->coords3.y + one + i)
+ for (j = 1; j < width; j++)
+ {
+ RETURN_REFLECTION_TYPE_AT(mapObj->coords2.x + j, mapObj->coords2.y + one + i)
+ RETURN_REFLECTION_TYPE_AT(mapObj->coords2.x - j, mapObj->coords2.y + one + i)
+ RETURN_REFLECTION_TYPE_AT(mapObj->coords3.x + j, mapObj->coords3.y + one + i)
+ RETURN_REFLECTION_TYPE_AT(mapObj->coords3.x - j, mapObj->coords3.y + one + i)
+ }
+ }
+ return 0;
+
+#undef RETURN_REFLECTION_TYPE_AT
+}
+
+u8 GetReflectionTypeByMetatileBehavior(u32 behavior)
+{
+ if (MetatileBehavior_IsIce(behavior))
+ return 1;
+ else if (MetatileBehavior_IsReflective(behavior))
+ return 2;
+ else
+ return 0;
+}
+
+u8 GetLedgeJumpDirection(s16 x, s16 y, u8 z)
+{
+ static bool8 (*const unknown_08376040[])(u8) = {
+ MetatileBehavior_IsJumpSouth,
+ MetatileBehavior_IsJumpNorth,
+ MetatileBehavior_IsJumpWest,
+ MetatileBehavior_IsJumpEast,
+ };
+
+ u8 b;
+ u8 index = z;
+
+ if (index == 0)
+ return 0;
+ else if (index > 4)
+ index -= 4;
+
+ index--;
+ b = MapGridGetMetatileBehaviorAt(x, y);
+
+ if (unknown_08376040[index](b) == 1)
+ return index + 1;
+
+ return 0;
+}
+
+void FieldObjectSetSpriteOamTableForLongGrass(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ if (mapObj->mapobj_bit_4)
+ return;
+
+ if (!MetatileBehavior_IsLongGrass(mapObj->mapobj_unk_1E))
+ return;
+
+ if (!MetatileBehavior_IsLongGrass(mapObj->mapobj_unk_1F))
+ return;
+
+ sprite->subspriteTableNum = 4;
+
+ if (ZCoordToPriority(mapObj->elevation) == 1)
+ sprite->subspriteTableNum = 5;
+}
+
+bool8 IsZCoordMismatchAt(u8 z, s16 x, s16 y)
+{
+ u8 mapZ;
+
+ if (z == 0)
+ return FALSE;
+
+ mapZ = MapGridGetZCoordAt(x, y);
+
+ if (mapZ == 0 || mapZ == 0xF)
+ return FALSE;
+
+ if (mapZ != z)
+ return TRUE;
+
+ return FALSE;
+}
+
+static const u8 sUnknown_08376050[] = {
+ 0x73, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x00, 0x00, 0x73
+};
+
+// Each byte corresponds to a sprite priority for a field object.
+// This is directly the inverse of gFieldObjectPriorities_08376070.
+static const u8 sFieldObjectPriorities_08376060[] = {
+ 2, 2, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 0, 0, 2
+};
+
+// Each byte corresponds to a sprite priority for a field object.
+// This is the inverse of gFieldObjectPriorities_08376060.
+// 1 = Above player sprite
+// 2 = Below player sprite
+static const u8 sFieldObjectPriorities_08376070[] = {
+ 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 1,
+};
+
+void FieldObjectUpdateZCoordAndPriority(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ if (mapObj->mapobj_bit_26)
+ return;
+
+ FieldObjectUpdateZCoord(mapObj);
+
+ sprite->subspriteTableNum = sFieldObjectPriorities_08376070[mapObj->elevation];
+ sprite->oam.priority = sFieldObjectPriorities_08376060[mapObj->elevation];
+}
+
+void InitObjectPriorityByZCoord(struct Sprite *sprite, u8 z)
+{
+ sprite->subspriteTableNum = sFieldObjectPriorities_08376070[z];
+ sprite->oam.priority = sFieldObjectPriorities_08376060[z];
+}
+
+u8 ZCoordToPriority(u8 z)
+{
+ return sFieldObjectPriorities_08376060[z];
+}
+
+void FieldObjectUpdateZCoord(struct MapObject *mapObj)
+{
+ u8 z = MapGridGetZCoordAt(mapObj->coords2.x, mapObj->coords2.y);
+ u8 z2 = MapGridGetZCoordAt(mapObj->coords3.x, mapObj->coords3.y);
+
+ if (z == 0xF || z2 == 0xF)
+ return;
+
+ mapObj->mapobj_unk_0B_0 = z;
+
+ if (z != 0 && z != 0xF)
+ mapObj->elevation = z;
+}
+
+void SetObjectSubpriorityByZCoord(u8 a, struct Sprite *sprite, u8 b)
+{
+ s32 tmp = sprite->centerToCornerVecY;
+ u32 tmpa = *(u16 *)&sprite->pos1.y;
+ u32 tmpb = *(u16 *)&gSpriteCoordOffsetY;
+ s32 tmp2 = (tmpa - tmp) + tmpb;
+ u16 tmp3 = (0x10 - ((((u32)tmp2 + 8) & 0xFF) >> 4)) * 2;
+ sprite->subpriority = tmp3 + sUnknown_08376050[a] + b;
+}
+
+void FieldObjectUpdateSubpriority(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ if (mapObj->mapobj_bit_26)
+ return;
+
+ SetObjectSubpriorityByZCoord(mapObj->elevation, sprite, 1);
+}
+
+bool8 AreZCoordsCompatible(u8 a, u8 b)
+{
+ if (a == 0 || b == 0)
+ return TRUE;
+
+ if (a != b)
+ return FALSE;
+
+ return TRUE;
+}
+
+void GroundEffect_SpawnOnTallGrass(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ u8 *ptr;
+
+ gFieldEffectArguments[0] = mapObj->coords2.x;
+ gFieldEffectArguments[1] = mapObj->coords2.y;
+ gFieldEffectArguments[2] = mapObj->elevation;
+ gFieldEffectArguments[3] = 2;
+ gFieldEffectArguments[4] = (mapObj->localId << 8) | mapObj->mapNum;
+ gFieldEffectArguments[5] = mapObj->mapGroup;
+
+ ptr = (u8 *)&gSaveBlock1;
+ gFieldEffectArguments[6] = ((u8)gSaveBlock1.location.mapNum << 8)
+ | (u8)gSaveBlock1.location.mapGroup;
+
+ gFieldEffectArguments[7] = 1;
+ FieldEffectStart(FLDEFF_TALL_GRASS);
+}
+
+void sub_8063E94(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ u8 *ptr;
+
+ gFieldEffectArguments[0] = mapObj->coords2.x;
+ gFieldEffectArguments[1] = mapObj->coords2.y;
+ gFieldEffectArguments[2] = mapObj->elevation;
+ gFieldEffectArguments[3] = 2;
+ gFieldEffectArguments[4] = (mapObj->localId << 8) | mapObj->mapNum;
+ gFieldEffectArguments[5] = mapObj->mapGroup;
+
+ ptr = (u8 *)&gSaveBlock1;
+ gFieldEffectArguments[6] = ((u8)gSaveBlock1.location.mapNum << 8)
+ | (u8)gSaveBlock1.location.mapGroup;
+
+ gFieldEffectArguments[7] = 0;
+ FieldEffectStart(FLDEFF_TALL_GRASS);
+}
+
+void sub_8063EE0(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ u8 *ptr;
+
+ gFieldEffectArguments[0] = mapObj->coords2.x;
+ gFieldEffectArguments[1] = mapObj->coords2.y;
+ gFieldEffectArguments[2] = mapObj->elevation;
+ gFieldEffectArguments[3] = 2;
+ gFieldEffectArguments[4] = (mapObj->localId << 8) | mapObj->mapNum;
+ gFieldEffectArguments[5] = mapObj->mapGroup;
+
+ ptr = (u8 *)&gSaveBlock1;
+ gFieldEffectArguments[6] = ((u8)gSaveBlock1.location.mapNum << 8)
+ | (u8)gSaveBlock1.location.mapGroup;
+
+ gFieldEffectArguments[7] = 1;
+ FieldEffectStart(FLDEFF_LONG_GRASS);
+}
+
+void sub_8063F2C(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ u8 *ptr;
+
+ gFieldEffectArguments[0] = mapObj->coords2.x;
+ gFieldEffectArguments[1] = mapObj->coords2.y;
+ gFieldEffectArguments[2] = mapObj->elevation;
+ gFieldEffectArguments[3] = 2;
+ gFieldEffectArguments[4] = (mapObj->localId << 8) | mapObj->mapNum;
+ gFieldEffectArguments[5] = mapObj->mapGroup;
+
+ ptr = (u8 *)&gSaveBlock1;
+ gFieldEffectArguments[6] = ((u8)gSaveBlock1.location.mapNum << 8)
+ | (u8)gSaveBlock1.location.mapGroup;
+
+ gFieldEffectArguments[7] = 0;
+ FieldEffectStart(FLDEFF_LONG_GRASS);
+}
+
+void GroundEffect_WaterReflection(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ SetUpReflection(mapObj, sprite, 0);
+}
+
+void GroundEffect_IceReflection(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ SetUpReflection(mapObj, sprite, 1);
+}
+
+void GroundEffect_FlowingWater(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ oe_exec_and_other_stuff(FLDEFF_FEET_IN_FLOWING_WATER, mapObj);
+}
+
+static void (*const gUnknown_08376080[])(struct MapObject *mapObj, struct Sprite *sprite, u8 a) = {
+ nullsub, DoTracksGroundEffect_Footprints, DoTracksGroundEffect_BikeTireTracks,
+};
+
+void sub_8063FA0(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ const struct MapObjectGraphicsInfo *info = GetFieldObjectGraphicsInfo(mapObj->graphicsId);
+ gUnknown_08376080[info->tracks](mapObj, sprite, 0);
+}
+
+void sub_8063FCC(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ const struct MapObjectGraphicsInfo *info = GetFieldObjectGraphicsInfo(mapObj->graphicsId);
+ gUnknown_08376080[info->tracks](mapObj, sprite, 1);
+}
+
+static void nullsub(struct MapObject *mapObj, struct Sprite *sprite, u8 a)
+{
+}
+
+static void DoTracksGroundEffect_Footprints(struct MapObject *mapObj, struct Sprite *sprite, u8 a)
+{
+ // First half-word is a Field Effect script id. (gFieldEffectScriptPointers)
+ u16 sandFootprints_FieldEffectData[2] = {
+ FLDEFF_SAND_FOOTPRINTS,
+ FLDEFF_DEEP_SAND_FOOTPRINTS
+ };
+
+ gFieldEffectArguments[0] = mapObj->coords3.x;
+ gFieldEffectArguments[1] = mapObj->coords3.y;
+ gFieldEffectArguments[2] = 149;
+ gFieldEffectArguments[3] = 2;
+ gFieldEffectArguments[4] = mapObj->mapobj_unk_18;
+ FieldEffectStart(sandFootprints_FieldEffectData[a]);
+}
+
+static void DoTracksGroundEffect_BikeTireTracks(
+ struct MapObject *mapObj, struct Sprite *sprite, u8 a)
+{
+ // Specifies which bike track shape to show next.
+ // For example, when the bike turns from up to right, it will show
+ // a track that curves to the right.
+ // Each 4-byte row corresponds to the initial direction of the bike, and
+ // each byte in that row is for the next direction of the bike in the order
+ // of down, up, left, right.
+ static const u8 bikeTireTracks_Transitions[4][4] = {
+ 1, 2, 7, 8,
+ 1, 2, 6, 5,
+ 5, 8, 3, 4,
+ 6, 7, 3, 4,
+ };
+
+ if (mapObj->coords2.x != mapObj->coords3.x || mapObj->coords2.y != mapObj->coords3.y)
+ {
+ gFieldEffectArguments[0] = mapObj->coords3.x;
+ gFieldEffectArguments[1] = mapObj->coords3.y;
+ gFieldEffectArguments[2] = 149;
+ gFieldEffectArguments[3] = 2;
+ gFieldEffectArguments[4] =
+ bikeTireTracks_Transitions[mapObj->mapobj_unk_20][mapObj->mapobj_unk_18 - 5];
+ FieldEffectStart(FLDEFF_BIKE_TIRE_TRACKS);
+ }
+}
+
+void GroundEffect_Ripple(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ DoRippleFieldEffect(mapObj, sprite);
+}
+
+void GroundEffect_StepOnPuddle(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ oe_exec_and_other_stuff(FLDEFF_SPLASH, mapObj);
+}
+
+void GroundEffect_SandPile(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ oe_exec_and_other_stuff(FLDEFF_SAND_PILE, mapObj);
+}
+
+void GroundEffect_JumpOnTallGrass(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ u8 spriteId;
+
+ gFieldEffectArguments[0] = mapObj->coords2.x;
+ gFieldEffectArguments[1] = mapObj->coords2.y;
+ gFieldEffectArguments[2] = mapObj->elevation;
+ gFieldEffectArguments[3] = 2;
+ FieldEffectStart(FLDEFF_JUMP_TALL_GRASS);
+
+ spriteId = sub_8126FF0(
+ mapObj->localId, mapObj->mapNum, mapObj->mapGroup, mapObj->coords2.x, mapObj->coords2.y);
+
+ if (spriteId == MAX_SPRITES)
+ GroundEffect_SpawnOnTallGrass(mapObj, sprite);
+}
+
+void GroundEffect_JumpOnLongGrass(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ gFieldEffectArguments[0] = mapObj->coords2.x;
+ gFieldEffectArguments[1] = mapObj->coords2.y;
+ gFieldEffectArguments[2] = mapObj->elevation;
+ gFieldEffectArguments[3] = 2;
+ FieldEffectStart(FLDEFF_JUMP_LONG_GRASS);
+}
+
+void GroundEffect_JumpOnShallowWater(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ gFieldEffectArguments[0] = mapObj->coords2.x;
+ gFieldEffectArguments[1] = mapObj->coords2.y;
+ gFieldEffectArguments[2] = mapObj->elevation;
+ gFieldEffectArguments[3] = sprite->oam.priority;
+ FieldEffectStart(FLDEFF_JUMP_SMALL_SPLASH);
+}
+
+void GroundEffect_JumpOnWater(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ gFieldEffectArguments[0] = mapObj->coords2.x;
+ gFieldEffectArguments[1] = mapObj->coords2.y;
+ gFieldEffectArguments[2] = mapObj->elevation;
+ gFieldEffectArguments[3] = sprite->oam.priority;
+ FieldEffectStart(FLDEFF_JUMP_BIG_SPLASH);
+}
+
+void GroundEffect_JumpLandingDust(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ gFieldEffectArguments[0] = mapObj->coords2.x;
+ gFieldEffectArguments[1] = mapObj->coords2.y;
+ gFieldEffectArguments[2] = mapObj->elevation;
+ gFieldEffectArguments[3] = sprite->oam.priority;
+ FieldEffectStart(FLDEFF_DUST);
+}
+
+void GroundEffect_ShortGrass(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ oe_exec_and_other_stuff(FLDEFF_SHORT_GRASS, mapObj);
+}
+
+void GroundEffect_HotSprings(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ oe_exec_and_other_stuff(FLDEFF_HOT_SPRINGS_WATER, mapObj);
+}
+
+void GroundEffect_Seaweed(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ gFieldEffectArguments[0] = mapObj->coords2.x;
+ gFieldEffectArguments[1] = mapObj->coords2.y;
+ FieldEffectStart(FLDEFF_BUBBLES);
+}
+
+static void (*const gUnknown_083760A0[])(struct MapObject *mapObj, struct Sprite *sprite) = {
+ GroundEffect_SpawnOnTallGrass,
+ sub_8063E94,
+ sub_8063EE0,
+ sub_8063F2C,
+ GroundEffect_WaterReflection,
+ GroundEffect_IceReflection,
+ GroundEffect_FlowingWater,
+ sub_8063FA0,
+ sub_8063FCC,
+ GroundEffect_Ripple,
+ GroundEffect_StepOnPuddle,
+ GroundEffect_SandPile,
+ GroundEffect_JumpOnTallGrass,
+ GroundEffect_JumpOnLongGrass,
+ GroundEffect_JumpOnShallowWater,
+ GroundEffect_JumpOnWater,
+ GroundEffect_JumpLandingDust,
+ GroundEffect_ShortGrass,
+ GroundEffect_HotSprings,
+ GroundEffect_Seaweed
+};
+
+void sub_8064218(struct MapObject *mapObj, struct Sprite *sprite, u32 flags)
+{
+ u8 i;
+ for (i = 0; i < ARRAY_COUNT(gUnknown_083760A0); i++, flags >>= 1)
+ if (flags & 1)
+ gUnknown_083760A0[i](mapObj, sprite);
+}
+
+void filters_out_some_ground_effects(struct MapObject *mapObj, u32 *flags)
+{
+ if (mapObj->mapobj_bit_4)
+ {
+ mapObj->mapobj_bit_18 = 0;
+ mapObj->mapobj_bit_20 = 0;
+ mapObj->mapobj_bit_19 = 0;
+ mapObj->mapobj_bit_21 = 0;
+ *flags &= 0xFFF9F7BD;
+ }
+}
+
+void FilterOutStepOnPuddleGroundEffectIfJumping(struct MapObject *mapObj, u32 *flags)
+{
+ if (mapObj->mapobj_bit_5)
+ *flags &= 0xFFFFFBFF;
+}
+
+void DoGroundEffects_OnSpawn(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ u32 flags;
+
+ if (mapObj->mapobj_bit_2)
+ {
+ flags = 0;
+ FieldObjectUpdateZCoordAndPriority(mapObj, sprite);
+ GetAllGroundEffectFlags_OnSpawn(mapObj, &flags);
+ FieldObjectSetSpriteOamTableForLongGrass(mapObj, sprite);
+ sub_8064218(mapObj, sprite, flags);
+ mapObj->mapobj_bit_2 = 0;
+ mapObj->mapobj_bit_4 = 0;
+ }
+}
+
+void DoGroundEffects_OnBeginStep(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ u32 flags;
+
+ if (mapObj->mapobj_bit_2)
+ {
+ flags = 0;
+ FieldObjectUpdateZCoordAndPriority(mapObj, sprite);
+ GetAllGroundEffectFlags_OnBeginStep(mapObj, &flags);
+ FieldObjectSetSpriteOamTableForLongGrass(mapObj, sprite);
+ filters_out_some_ground_effects(mapObj, &flags);
+ sub_8064218(mapObj, sprite, flags);
+ mapObj->mapobj_bit_2 = 0;
+ mapObj->mapobj_bit_4 = 0;
+ }
+}
+
+void DoGroundEffects_OnFinishStep(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ u32 flags;
+
+ if (mapObj->mapobj_bit_3)
+ {
+ flags = 0;
+ FieldObjectUpdateZCoordAndPriority(mapObj, sprite);
+ GetAllGroundEffectFlags_OnFinishStep(mapObj, &flags);
+ FieldObjectSetSpriteOamTableForLongGrass(mapObj, sprite);
+ FilterOutStepOnPuddleGroundEffectIfJumping(mapObj, &flags);
+ sub_8064218(mapObj, sprite, flags);
+ mapObj->mapobj_bit_3 = 0;
+ mapObj->mapobj_bit_5 = 0;
+ }
+}
diff --git a/src/field_map_obj.c b/src/field_map_obj.c
index f60b1b233..59319a16e 100644
--- a/src/field_map_obj.c
+++ b/src/field_map_obj.c
@@ -11,7 +11,7 @@
#include "fieldmap.h"
#include "palette.h"
#include "rng.h"
-#include "rom4.h"
+#include "overworld.h"
#include "sprite.h"
#include "metatile_behavior.h"
#include "map_constants.h"
@@ -1901,7 +1901,7 @@ extern void CameraObjectReset1(void);
extern struct LinkPlayerMapObject gLinkPlayerMapObjects[];
extern u8 gReservedSpritePaletteCount;
-extern struct Camera gUnknown_0202E844;
+extern struct Camera gCamera;
static u8 gUnknown_030005A4;
static u16 gUnknown_030005A6;
@@ -2986,24 +2986,21 @@ void UpdateFieldObjectCoordsForCameraUpdate(void)
s16 deltaX;
s16 deltaY;
-#ifndef NONMATCHING
- asm(""::"r"(i)); //makes the compiler store i in r3
-#endif
-
- if (gUnknown_0202E844.field_0)
+ if (gCamera.field_0)
{
- for (i = 0, deltaX = gUnknown_0202E844.x, deltaY = gUnknown_0202E844.y; i < 16; i++)
+ deltaX = gCamera.x;
+ deltaY = gCamera.y;
+ for (i = 0; i < 16; i++)
{
- struct MapObject *mapObject = &gMapObjects[i];
- if (mapObject->active)
+ if (gMapObjects[i].active)
{
- mapObject->coords1.x -= deltaX;
- mapObject->coords1.y -= deltaY;
- mapObject->coords2.x -= deltaX;
- mapObject->coords2.y -= deltaY;
- mapObject->coords3.x -= deltaX;
- mapObject->coords3.y -= deltaY;
+ gMapObjects[i].coords1.x -= deltaX;
+ gMapObjects[i].coords1.y -= deltaY;
+ gMapObjects[i].coords2.x -= deltaX;
+ gMapObjects[i].coords2.y -= deltaY;
+ gMapObjects[i].coords3.x -= deltaX;
+ gMapObjects[i].coords3.y -= deltaY;
}
}
}
@@ -3244,7 +3241,7 @@ struct MapObjectTemplate *GetFieldObjectTemplateByLocalIdAndMap(u8 localId, u8 m
return FindFieldObjectTemplateInArrayByLocalId(localId, gSaveBlock1.mapObjectTemplates, gMapHeader.events->mapObjectCount);
else
{
- struct MapHeader *mapHeader = get_mapheader_by_bank_and_number(mapGroup, mapNum);
+ struct MapHeader *mapHeader = Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum);
return FindFieldObjectTemplateInArrayByLocalId(localId, mapHeader->events->mapObjects, mapHeader->events->mapObjectCount);
}
@@ -3895,11 +3892,11 @@ u8 do_berry_tree_growth_sparkle_1(struct MapObject *mapObject, struct Sprite *sp
{
if (!(sprite->data7 & 4) && sprite->animNum == 4)
{
- gUnknown_0202FF84[0] = mapObject->coords2.x;
- gUnknown_0202FF84[1] = mapObject->coords2.y;
- gUnknown_0202FF84[2] = sprite->subpriority - 1;
- gUnknown_0202FF84[3] = sprite->oam.priority;
- FieldEffectStart(0x17);
+ gFieldEffectArguments[0] = mapObject->coords2.x;
+ gFieldEffectArguments[1] = mapObject->coords2.y;
+ gFieldEffectArguments[2] = sprite->subpriority - 1;
+ gFieldEffectArguments[3] = sprite->oam.priority;
+ FieldEffectStart(FLDEFF_BERRY_TREE_GROWTH_SPARKLE);
sprite->animNum = 0;
}
return 0;
@@ -3934,11 +3931,11 @@ u8 do_berry_tree_growth_sparkle_2(struct MapObject *mapObject, struct Sprite *sp
sprite->data1 = 3;
sprite->data2 = 0;
sprite->data7 |= 2;
- gUnknown_0202FF84[0] = mapObject->coords2.x;
- gUnknown_0202FF84[1] = mapObject->coords2.y;
- gUnknown_0202FF84[2] = sprite->subpriority - 1;
- gUnknown_0202FF84[3] = sprite->oam.priority;
- FieldEffectStart(0x17);
+ gFieldEffectArguments[0] = mapObject->coords2.x;
+ gFieldEffectArguments[1] = mapObject->coords2.y;
+ gFieldEffectArguments[2] = sprite->subpriority - 1;
+ gFieldEffectArguments[3] = sprite->oam.priority;
+ FieldEffectStart(FLDEFF_BERRY_TREE_GROWTH_SPARKLE);
return 1;
}
@@ -5030,32 +5027,30 @@ u8 sub_805F3C4(struct MapObject *mapObject, struct Sprite *sprite)
return 0;
}
-#ifdef NONMATCHING
-
-u8 sub_805F3EC(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, u8 *a3(u8))
+bool8 sub_805F3EC(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, bool8 a3(u8))
{
return 0;
}
-u8 sub_805F3F0(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, u8 *a3(u8))
+bool8 sub_805F3F0(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, bool8 a3(u8))
{
- int direction;
- direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, a2);
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction));
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, a2)));
mapObject->mapobj_bit_1 = 1;
sprite->data1 = 2;
return 1;
}
-u8 sub_805F438(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, u8 *a3(u8))
+bool8 sub_805F438(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, bool8 a3(u8))
{
+ u32 direction;
s16 x;
s16 y;
- int direction;
- direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, a2);
+
+ direction = a2;
+ direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction);
FieldObjectMoveDestCoords(mapObject, direction, &x, &y);
FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed0AnimId(direction));
- if (!npc_block_way(mapObject, x, y, direction) || (a3 != NULL && !a3(MapGridGetMetatileBehaviorAt(x, y))))
+ if (npc_block_way(mapObject, x, y, direction) || (a3 != NULL && !a3(MapGridGetMetatileBehaviorAt(x, y))))
{
FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction));
}
@@ -5063,9 +5058,115 @@ u8 sub_805F438(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, u8 *a3
sprite->data1 = 2;
return 1;
}
-#endif
-asm(".section .text_fmocb2_c\n");
+bool8 sub_805F4F0(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8))
+{
+ u32 direction;
+ s16 x;
+ s16 y;
+
+ direction = playerDirection;
+ direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction);
+ FieldObjectMoveDestCoords(mapObject, direction, &x, &y);
+ FieldObjectSetRegularAnim(mapObject, sprite, sub_8060744(direction));
+ if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y))))
+ {
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction));
+ }
+ mapObject->mapobj_bit_1 = TRUE;
+ sprite->data1 = 2;
+ return TRUE;
+}
+
+bool8 sub_805F5A8(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8))
+{
+ u32 direction;
+ s16 x;
+ s16 y;
+
+ direction = playerDirection;
+ direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction);
+ FieldObjectMoveDestCoords(mapObject, direction, &x, &y);
+ FieldObjectSetRegularAnim(mapObject, sprite, sub_806079C(direction));
+ if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y))))
+ {
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction));
+ }
+ mapObject->mapobj_bit_1 = TRUE;
+ sprite->data1 = 2;
+ return TRUE;
+}
+
+bool8 sub_805F660(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8))
+{
+ u32 direction;
+ s16 x;
+ s16 y;
+
+ direction = playerDirection;
+ direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction);
+ FieldObjectMoveDestCoords(mapObject, direction, &x, &y);
+ FieldObjectSetRegularAnim(mapObject, sprite, sub_80607C8(direction));
+ if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y))))
+ {
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction));
+ }
+ mapObject->mapobj_bit_1 = TRUE;
+ sprite->data1 = 2;
+ return TRUE;
+}
+
+bool8 cph_IM_DIFFERENT(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8))
+{
+ u32 direction;
+
+ direction = playerDirection;
+ direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction);
+ FieldObjectSetRegularAnim(mapObject, sprite, sub_806084C(direction));
+ mapObject->mapobj_bit_1 = TRUE;
+ sprite->data1 = 2;
+ return TRUE;
+}
+
+bool8 sub_805F760(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8))
+{
+ u32 direction;
+ s16 x;
+ s16 y;
+
+ direction = playerDirection;
+ direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction);
+ FieldObjectMoveDestCoords(mapObject, direction, &x, &y);
+ FieldObjectSetRegularAnim(mapObject, sprite, sub_80608A4(direction));
+ if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y))))
+ {
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction));
+ }
+ mapObject->mapobj_bit_1 = TRUE;
+ sprite->data1 = 2;
+ return TRUE;
+}
+
+bool8 oac_hopping(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8))
+{
+ u32 direction;
+ s16 x;
+ s16 y;
+
+ direction = playerDirection;
+ direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction);
+ x = mapObject->coords2.x;
+ y = mapObject->coords2.y;
+ sub_8060320(direction, &x, &y, 2, 2);
+ FieldObjectSetRegularAnim(mapObject, sprite, GetJumpLedgeAnimId(direction));
+ if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y))))
+ {
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction));
+ }
+ mapObject->mapobj_bit_1 = TRUE;
+ sprite->data1 = 2;
+ return TRUE;
+}
fieldmap_object_cb(sub_805F8E0, sub_805F904, gUnknown_083755C0);
@@ -5086,8 +5187,8 @@ void FieldObjectCB_TreeDisguise(struct Sprite *sprite)
mapObject = &gMapObjects[sprite->data0];
if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && sprite->data7 == 0))
{
- FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]);
- mapObject->mapobj_unk_1A = FieldEffectStart(0x1c);
+ FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]);
+ mapObject->mapobj_unk_1A = FieldEffectStart(FLDEFF_TREE_DISGUISE);
mapObject->mapobj_unk_21 = 1;
sprite->data7 ++;
}
@@ -5106,8 +5207,8 @@ void FieldObjectCB_MountainDisguise(struct Sprite *sprite)
mapObject = &gMapObjects[sprite->data0];
if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && sprite->data7 == 0))
{
- FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]);
- mapObject->mapobj_unk_1A = FieldEffectStart(0x1d);
+ FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]);
+ mapObject->mapobj_unk_1A = FieldEffectStart(FLDEFF_MOUNTAIN_DISGUISE);
mapObject->mapobj_unk_21 = 1;
sprite->data7 ++;
}
@@ -5364,53 +5465,38 @@ u8 sub_805FF20(struct MapObject *mapObject, u8 direction)
}
bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject2 *mapObject, s16 x, s16 y);
-bool8 CheckForCollisionBetweenFieldObjects(struct MapObject *mapObject, s16 x, s16 y);
+static bool8 DoesObjectCollideWithObjectAt(struct MapObject *mapObject, s16 x, s16 y);
bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 y, u8 direction);
-u8 npc_block_way(struct MapObject *mapObject, s16 x, s16 y, u8 direction)
+u8 npc_block_way(struct MapObject *mapObject, s16 x, s16 y, u32 dirn)
{
+ u8 direction;
+ direction = dirn;
if (IsCoordOutsideFieldObjectMovementRect((struct MapObject2 *)mapObject, x, y))
- {
return 1;
- }
- if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(mapObject, x, y, direction))
- {
+ else if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(mapObject, x, y, direction))
return 2;
- } else if (mapObject->mapobj_bit_15 && !CanCameraMoveInDirection(direction))
- {
+ else if (mapObject->mapobj_bit_15 && !CanCameraMoveInDirection(direction))
return 2;
- }
- if (IsZCoordMismatchAt(mapObject->mapobj_unk_0B_0, x, y))
- {
+ else if (IsZCoordMismatchAt(mapObject->mapobj_unk_0B_0, x, y))
return 3;
- }
- if (CheckForCollisionBetweenFieldObjects(mapObject, x, y))
- {
+ else if (DoesObjectCollideWithObjectAt(mapObject, x, y))
return 4;
- }
return 0;
}
u8 sub_8060024(struct MapObject *mapObject, s16 x, s16 y, u8 direction)
{
- u8 flags;
- flags = 0;
+ u8 flags = 0;
+
if (IsCoordOutsideFieldObjectMovementRect((struct MapObject2 *)mapObject, x, y))
- {
flags |= 1;
- }
if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(mapObject, x, y, direction) || (mapObject->mapobj_bit_15 && !CanCameraMoveInDirection(direction)))
- {
flags |= 2;
- }
if (IsZCoordMismatchAt(mapObject->mapobj_unk_0B_0, x, y))
- {
flags |= 4;
- }
- if (CheckForCollisionBetweenFieldObjects(mapObject, x, y))
- {
+ if (DoesObjectCollideWithObjectAt(mapObject, x, y))
flags |= 8;
- }
return flags;
}
@@ -5418,25 +5504,22 @@ bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject2 *mapObject, s16 x,
{
s16 minv;
s16 maxv;
+
if (mapObject->mapobj_unk_19 != 0)
{
minv = mapObject->coords1.x - (mapObject->mapobj_unk_19);
maxv = mapObject->coords1.x + (mapObject->mapobj_unk_19);
if (minv > x || maxv < x)
- {
- return 1;
- }
+ return TRUE;
}
if (mapObject->mapobj_unk_19b != 0)
{
minv = mapObject->coords1.y - (mapObject->mapobj_unk_19b);
maxv = mapObject->coords1.y + (mapObject->mapobj_unk_19b);
if (minv > y || maxv < y)
- {
- return 1;
- }
+ return TRUE;
}
- return 0;
+ return FALSE;
}
bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 y, u8 direction)
@@ -5448,23 +5531,19 @@ bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16
return 0;
}
-bool8 CheckForCollisionBetweenFieldObjects(struct MapObject *mapObject, s16 x, s16 y)
+static bool8 DoesObjectCollideWithObjectAt(struct MapObject *mapObject, s16 x, s16 y)
{
- struct MapObject *mapObject2;
u8 i;
- for (i=0; i<16; i++)
+
+ for (i = 0; i < 16; i++)
{
- mapObject2 = &gMapObjects[i];
+ struct MapObject *mapObject2 = &gMapObjects[i];
+
if (mapObject2->active && mapObject2 != mapObject)
{
- if ((mapObject2->coords2.x != x || mapObject2->coords2.y != y) && (mapObject2->coords3.x != x || mapObject2->coords3.y != y))
- {
- continue;
- }
- if (AreZCoordsCompatible(mapObject->mapobj_unk_0B_0, mapObject2->mapobj_unk_0B_0))
- {
- return 1;
- }
+ if (((mapObject2->coords2.x == x && mapObject2->coords2.y == y) || (mapObject2->coords3.x == x && mapObject2->coords3.y == y))
+ && AreZCoordsCompatible(mapObject->mapobj_unk_0B_0, mapObject2->mapobj_unk_0B_0))
+ return TRUE;
}
}
return 0;
@@ -5504,23 +5583,26 @@ void unref_sub_80602F8(u8 direction, s16 *x, s16 *y)
*y += gDirectionToVector[direction].y << 4;
}
-void sub_8060320(u8 direction, s16 *x, s16 *y, s16 deltaX, s16 deltaY)
+void sub_8060320(u32 dirn, s16 *x, s16 *y, s16 deltaX, s16 deltaY)
{
+ u8 direction = dirn;
+ s16 dx2 = deltaX;
+ s16 dy2 = deltaY;
if (gDirectionToVector[direction].x > 0)
{
- *x += deltaX;
+ *x += dx2;
}
if (gDirectionToVector[direction].x < 0)
{
- *x -= deltaX;
+ *x -= dx2;
}
if (gDirectionToVector[direction].y > 0)
{
- *y += deltaY;
+ *y += dy2;
}
if (gDirectionToVector[direction].y < 0)
{
- *y -= deltaY;
+ *y -= dy2;
}
}
@@ -5587,11 +5669,12 @@ void GetFieldObjectMovingCameraOffset(s16 *x, s16 *y)
}
}
-void FieldObjectMoveDestCoords(struct MapObject *mapObject, u8 direction, s16 *x, s16 *y)
+void FieldObjectMoveDestCoords(struct MapObject *mapObject, u32 direction, s16 *x, s16 *y)
{
+ u8 newDirn = direction;
*x = mapObject->coords2.x;
*y = mapObject->coords2.y;
- MoveCoords(direction, x, y);
+ MoveCoords(newDirn, x, y);
}
bool8 FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(struct MapObject *mapObject)
@@ -5705,193 +5788,34 @@ void meta_step(struct MapObject *mapObject, struct Sprite *sprite, u8 (*callback
FieldObjectUpdateSubpriority(mapObject, sprite);
}
-
-u8 GetFaceDirectionAnimId(u8 index)
-{
- u8 directions[5];
- memcpy(directions, gUnknown_083756C8, 5);
- if (index >= 5)
- {
- index = 0;
- }
- return directions[index];
-}
-
-u8 GetSimpleGoAnimId(u8 index)
-{
- u8 directions[5];
- memcpy(directions, gUnknown_083756CD, 5);
- if (index >= 5)
- {
- index = 0;
- }
- return directions[index];
-}
-
-u8 GetGoSpeed0AnimId(u8 index)
-{
- u8 directions[5];
- memcpy(directions, gUnknown_083756D2, 5);
- if (index >= 5)
- {
- index = 0;
- }
- return directions[index];
-}
-
-u8 sub_8060744(u8 index)
-{
- u8 directions[5];
- memcpy(directions, gUnknown_083756D7, 5);
- if (index >= 5)
- {
- index = 0;
- }
- return directions[index];
-}
-
-u8 d2s_08064034(u8 index)
-{
- u8 directions[5];
- memcpy(directions, gUnknown_083756DC, 5);
- if (index >= 5)
- {
- index = 0;
- }
- return directions[index];
-}
-
-u8 sub_806079C(u8 index)
-{
- u8 directions[5];
- memcpy(directions, gUnknown_083756E1, 5);
- if (index >= 5)
- {
- index = 0;
- }
- return directions[index];
-}
-
-u8 sub_80607C8(u8 index)
-{
- u8 directions[5];
- memcpy(directions, gUnknown_083756E6, 5);
- if (index >= 5)
- {
- index = 0;
- }
- return directions[index];
-}
-
-u8 sub_80607F4(u8 index)
-{
- u8 directions[5];
- memcpy(directions, gUnknown_083756EB, 5);
- if (index >= 5)
- {
- index = 0;
- }
- return directions[index];
-}
-
-u8 GetJumpLedgeAnimId(u8 index)
-{
- u8 directions[5];
- memcpy(directions, gUnknown_083756F0, 5);
- if (index >= 5)
- {
- index = 0;
- }
- return directions[index];
-}
-
-u8 sub_806084C(u8 index)
-{
- u8 directions[5];
- memcpy(directions, gUnknown_083756F5, 5);
- if (index >= 5)
- {
- index = 0;
- }
- return directions[index];
-}
-
-u8 sub_8060878(u8 index)
-{
- u8 directions[5];
- memcpy(directions, gUnknown_083756FA, 5);
- if (index >= 5)
- {
- index = 0;
- }
- return directions[index];
-}
-
-u8 sub_80608A4(u8 index)
-{
- u8 directions[5];
- memcpy(directions, gUnknown_083756FF, 5);
- if (index >= 5)
- {
- index = 0;
- }
- return directions[index];
-}
-
-u8 sub_80608D0(u8 index)
-{
- u8 directions[5];
- memcpy(directions, gUnknown_08375704, 5);
- if (index >= 5)
- {
- index = 0;
- }
- return directions[index];
-}
-
-u8 GetStepInPlaceDelay32AnimId(u8 index)
-{
- u8 directions[5];
- memcpy(directions, gUnknown_08375709, 5);
- if (index >= 5)
- {
- index = 0;
- }
- return directions[index];
-}
-
-u8 GetStepInPlaceDelay16AnimId(u8 index)
-{
- u8 directions[5];
- memcpy(directions, gUnknown_0837570E, 5);
- if (index >= 5)
- {
- index = 0;
- }
- return directions[index];
-}
-
-u8 GetStepInPlaceDelay8AnimId(u8 index)
-{
- u8 directions[5];
- memcpy(directions, gUnknown_08375713, 5);
- if (index >= 5)
- {
- index = 0;
- }
- return directions[index];
-}
-
-u8 GetStepInPlaceDelay4AnimId(u8 index)
-{
- u8 directions[5];
- memcpy(directions, gUnknown_08375718, 5);
- if (index >= 5)
- {
- index = 0;
- }
- return directions[index];
-}
+#define dirn_to_anim(name, table)\
+u8 name(u32 idx)\
+{\
+ u8 direction;\
+ u8 animIds[sizeof(table)];\
+ direction = idx;\
+ memcpy(animIds, (table), sizeof(table));\
+ if (direction > DIR_EAST) direction = 0;\
+ return animIds[direction];\
+}
+
+dirn_to_anim(GetFaceDirectionAnimId, gUnknown_083756C8)
+dirn_to_anim(GetSimpleGoAnimId, gUnknown_083756CD)
+dirn_to_anim(GetGoSpeed0AnimId, gUnknown_083756D2)
+dirn_to_anim(sub_8060744, gUnknown_083756D7)
+dirn_to_anim(d2s_08064034, gUnknown_083756DC)
+dirn_to_anim(sub_806079C, gUnknown_083756E1)
+dirn_to_anim(sub_80607C8, gUnknown_083756E6)
+dirn_to_anim(sub_80607F4, gUnknown_083756EB)
+dirn_to_anim(GetJumpLedgeAnimId, gUnknown_083756F0)
+dirn_to_anim(sub_806084C, gUnknown_083756F5)
+dirn_to_anim(sub_8060878, gUnknown_083756FA)
+dirn_to_anim(sub_80608A4, gUnknown_083756FF)
+dirn_to_anim(sub_80608D0, gUnknown_08375704)
+dirn_to_anim(GetStepInPlaceDelay32AnimId, gUnknown_08375709)
+dirn_to_anim(GetStepInPlaceDelay16AnimId, gUnknown_0837570E)
+dirn_to_anim(GetStepInPlaceDelay8AnimId, gUnknown_08375713)
+dirn_to_anim(GetStepInPlaceDelay4AnimId, gUnknown_08375718)
u8 FieldObjectFaceOppositeDirection(struct MapObject *mapObject, u8 direction)
{
@@ -6019,65 +5943,23 @@ u8 GetOppositeDirection(u8 direction)
return directions[direction - 1];
}
-int zffu_offset_calc(u8 a0, u8 a1)
+u32 zffu_offset_calc(u8 a0, u8 a1)
{
return gUnknown_08375757[a0 - 1][a1 - 1];
}
-#ifdef NONMATCHING
-int state_to_direction(u8 a0, u8 a1, u8 a2)
+u32 state_to_direction(u8 a0, u32 a1, u32 a2)
{
- int zffuOffset;
- asm_comment("For some reason, r2 is being backed up to r3 and restored ahead of the zffu call.");
- if (a1 == 0 || a2 == 0 || a1 > 4 || a2 > 4)
+ u32 zffuOffset;
+ u8 a1_2 = a1;
+ u8 a2_2 = a2;
+ if (a1_2 == 0 || a2_2 == 0 || a1_2 > DIR_EAST || a2_2 > DIR_EAST)
{
return 0;
}
- zffuOffset = zffu_offset_calc(a1, a2);
+ zffuOffset = zffu_offset_calc(a1_2, a2);
return gUnknown_08375767[a0 - 1][zffuOffset - 1];
}
-#else
-__attribute__((naked))
-int state_to_direction(u8 a0, u8 a1, u8 a2)
-{
- asm(".syntax unified\n\
- push {r4,lr}\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- adds r0, r1, 0\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- cmp r1, 0\n\
- beq _08060BFC\n\
- cmp r2, 0\n\
- beq _08060BFC\n\
- cmp r1, 0x4\n\
- bhi _08060BFC\n\
- cmp r2, 0x4\n\
- bls _08060C00\n\
-_08060BFC:\n\
- movs r0, 0\n\
- b _08060C12\n\
-_08060C00:\n\
- adds r1, r2, 0\n\
- bl zffu_offset_calc\n\
- ldr r2, _08060C18 @ =gUnknown_08375767\n\
- lsls r1, r4, 2\n\
- subs r1, 0x5\n\
- adds r0, r1\n\
- adds r0, r2\n\
- ldrb r0, [r0]\n\
-_08060C12:\n\
- pop {r4}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
-_08060C18: .4byte gUnknown_08375767\n\
-.syntax divided\n");
-}
-#endif
void FieldObjectExecSpecialAnim(struct MapObject *mapObject, struct Sprite *sprite)
{
@@ -7490,24 +7372,24 @@ bool8 sub_8062644(struct MapObject *mapObject, struct Sprite *sprite)
bool8 do_exclamation_mark_bubble_1(struct MapObject *mapObject, struct Sprite *sprite)
{
- FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]);
- FieldEffectStart(0x0);
+ FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]);
+ FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON_1);
sprite->data2 = 1;
return TRUE;
}
bool8 do_exclamation_mark_bubble_2(struct MapObject *mapObject, struct Sprite *sprite)
{
- FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]);
- FieldEffectStart(0x21);
+ FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]);
+ FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON_2);
sprite->data2 = 1;
return TRUE;
}
bool8 do_heart_bubble(struct MapObject *mapObject, struct Sprite *sprite)
{
- FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]);
- FieldEffectStart(0x2e);
+ FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]);
+ FieldEffectStart(FLDEFF_HEART_ICON);
sprite->data2 = 1;
return TRUE;
}
@@ -8303,12 +8185,12 @@ void sub_80634A0(struct MapObject *mapObject, struct Sprite *sprite)
}
void sub_80634E8(struct MapObject *, struct Sprite *);
-void npc_update_obj_anim_flag(struct MapObject *, struct Sprite *);
+static void UpdateMapObjSpriteVisibility(struct MapObject *, struct Sprite *);
void sub_80634D0(struct MapObject *mapObject, struct Sprite *sprite)
{
sub_80634E8(mapObject, sprite);
- npc_update_obj_anim_flag(mapObject, sprite);
+ UpdateMapObjSpriteVisibility(mapObject, sprite);
}
#ifdef NONMATCHING
@@ -8464,7 +8346,7 @@ _080635C0:\n\
}
#endif
-void npc_update_obj_anim_flag(struct MapObject *mapObject, struct Sprite *sprite)
+void UpdateMapObjSpriteVisibility(struct MapObject *mapObject, struct Sprite *sprite)
{
sprite->invisible = 0;
if (mapObject->mapobj_bit_13 || mapObject->mapobj_bit_14)
diff --git a/src/field_map_obj_helpers.c b/src/field_map_obj_helpers.c
index 87be8e011..b453d3794 100644
--- a/src/field_map_obj_helpers.c
+++ b/src/field_map_obj_helpers.c
@@ -294,7 +294,7 @@ void sub_8064990(u8 a1, u8 dir)
u32 oe_exec_and_other_stuff(u8 fieldEffectId, struct MapObject *mapObject)
{
- FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]);
+ FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]);
return FieldEffectStart(fieldEffectId);
}
@@ -303,16 +303,16 @@ void DoShadowFieldEffect(struct MapObject *mapObject)
if (!mapObject->mapobj_bit_22)
{
mapObject->mapobj_bit_22 = 1;
- oe_exec_and_other_stuff(3, mapObject);
+ oe_exec_and_other_stuff(FLDEFF_SHADOW, mapObject);
}
}
void DoRippleFieldEffect(struct MapObject *mapObject, struct Sprite *sprite)
{
const struct MapObjectGraphicsInfo *gfxInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
- gUnknown_0202FF84[0] = sprite->pos1.x;
- gUnknown_0202FF84[1] = sprite->pos1.y + (gfxInfo->height >> 1) - 2;
- gUnknown_0202FF84[2] = 151;
- gUnknown_0202FF84[3] = 3;
- FieldEffectStart(5);
+ gFieldEffectArguments[0] = sprite->pos1.x;
+ gFieldEffectArguments[1] = sprite->pos1.y + (gfxInfo->height >> 1) - 2;
+ gFieldEffectArguments[2] = 151;
+ gFieldEffectArguments[3] = 3;
+ FieldEffectStart(FLDEFF_RIPPLE);
}
diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c
index 2a7b2f3e0..e7947b704 100644
--- a/src/field_player_avatar.c
+++ b/src/field_player_avatar.c
@@ -14,7 +14,7 @@
#include "metatile_behavior.h"
#include "party_menu.h"
#include "rng.h"
-#include "rom4.h"
+#include "overworld.h"
#include "rotating_gate.h"
#include "script.h"
#include "songs.h"
@@ -666,10 +666,10 @@ void PlayerAvatarTransition_Surfing(struct MapObject *a)
sub_805B980(a, GetPlayerAvatarGraphicsIdByStateId(3));
FieldObjectTurn(a, a->placeholder18);
SetPlayerAvatarStateMask(8);
- gUnknown_0202FF84[0] = a->coords2.x;
- gUnknown_0202FF84[1] = a->coords2.y;
- gUnknown_0202FF84[2] = gPlayerAvatar.mapObjectId;
- unk = FieldEffectStart(8);
+ gFieldEffectArguments[0] = a->coords2.x;
+ gFieldEffectArguments[1] = a->coords2.y;
+ gFieldEffectArguments[2] = gPlayerAvatar.mapObjectId;
+ unk = FieldEffectStart(FLDEFF_SURF_BLOB);
a->mapobj_unk_1A = unk;
sub_8127ED0(unk, 1);
}
@@ -1224,13 +1224,13 @@ u8 sub_8059EA4(struct Task *task, struct MapObject *b, struct MapObject *c)
{
FieldObjectClearAnimIfSpecialAnimFinished(b);
FieldObjectClearAnimIfSpecialAnimFinished(c);
- FieldObjectSetSpecialAnim(b, GetStepInPlaceDelay16AnimId(task->data[2]));
- FieldObjectSetSpecialAnim(c, GetSimpleGoAnimId(task->data[2]));
- gUnknown_0202FF84[0] = c->coords2.x;
- gUnknown_0202FF84[1] = c->coords2.y;
- gUnknown_0202FF84[2] = c->elevation;
- gUnknown_0202FF84[3] = gSprites[c->spriteId].oam.priority;
- FieldEffectStart(10);
+ FieldObjectSetSpecialAnim(b, GetStepInPlaceDelay16AnimId((u8)task->data[2]));
+ FieldObjectSetSpecialAnim(c, GetSimpleGoAnimId((u8)task->data[2]));
+ gFieldEffectArguments[0] = c->coords2.x;
+ gFieldEffectArguments[1] = c->coords2.y;
+ gFieldEffectArguments[2] = c->elevation;
+ gFieldEffectArguments[3] = gSprites[c->spriteId].oam.priority;
+ FieldEffectStart(FLDEFF_DUST);
PlaySE(SE_W070);
task->data[0]++;
}
@@ -1385,7 +1385,7 @@ static void taskFF_0805D1D4(u8 taskId)
return;
}
sub_8127ED0(playerMapObj->mapobj_unk_1A, 2);
- FieldObjectSetSpecialAnim(playerMapObj, sub_80608D0(gTasks[taskId].data[0]));
+ FieldObjectSetSpecialAnim(playerMapObj, sub_80608D0((u8)gTasks[taskId].data[0]));
gTasks[taskId].func = sub_805A2D0;
}
@@ -1406,7 +1406,7 @@ static void sub_805A2D0(u8 taskId)
/* Fishing */
-static u8 (*const gUnknown_0830FCB4[])(struct Task *) =
+static u8 (*const sFishingStateFuncs[])(struct Task *) =
{
Fishing1,
Fishing2,
@@ -1429,17 +1429,33 @@ static u8 (*const gUnknown_0830FCB4[])(struct Task *) =
static void Task_Fishing(u8 taskId);
static void sub_805A954(void);
-void StartFishing(u8 a)
+#define tStep data[0]
+#define tFrameCounter data[1]
+#define tNumDots data[2]
+#define tDotsRequired data[3]
+#define tRoundsPlayed data[12]
+#define tMinRoundsRequired data[13]
+#define tPlayerGfxId data[14]
+#define tFishingRod data[15]
+
+#define FISHING_START_ROUND 3
+#define FISHING_GOT_BITE 6
+#define FISHING_ON_HOOK 9
+#define FISHING_NO_BITE 11
+#define FISHING_GOT_AWAY 12
+#define FISHING_SHOW_RESULT 13
+
+void StartFishing(u8 rod)
{
u8 taskId = CreateTask(Task_Fishing, 0xFF);
- gTasks[taskId].data[15] = a;
+ gTasks[taskId].tFishingRod = rod;
Task_Fishing(taskId);
}
static void Task_Fishing(u8 taskId)
{
- while (gUnknown_0830FCB4[gTasks[taskId].data[0]](&gTasks[taskId]))
+ while (sFishingStateFuncs[gTasks[taskId].tStep](&gTasks[taskId]))
;
}
@@ -1447,7 +1463,7 @@ u8 Fishing1(struct Task *task)
{
ScriptContext2_Enable();
gPlayerAvatar.unk6 = 1;
- task->data[0]++;
+ task->tStep++;
return 0;
}
@@ -1457,23 +1473,25 @@ u8 Fishing2(struct Task *task)
const s16 arr1[] = {1, 1, 1};
const s16 arr2[] = {1, 3, 6};
- task->data[12] = 0;
- task->data[13] = arr1[task->data[15]] + (Random() % arr2[task->data[15]]);
- task->data[14] = gMapObjects[gPlayerAvatar.mapObjectId].graphicsId;
+ task->tRoundsPlayed = 0;
+ task->tMinRoundsRequired = arr1[task->tFishingRod] + (Random() % arr2[task->tFishingRod]);
+ task->tPlayerGfxId = gMapObjects[gPlayerAvatar.mapObjectId].graphicsId;
playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
FieldObjectClearAnimIfSpecialAnimActive(playerMapObj);
playerMapObj->mapobj_bit_11 = 1;
sub_8059C3C(playerMapObj->mapobj_unk_18);
- task->data[0]++;
+ task->tStep++;
return 0;
}
u8 Fishing3(struct Task *task)
{
sub_805A954();
- task->data[1]++;
- if (task->data[1] > 0x3B)
- task->data[0]++;
+
+ // Wait one second before starting dot game
+ task->tFrameCounter++;
+ if (task->tFrameCounter >= 60)
+ task->tStep++;
return 0;
}
@@ -1482,87 +1500,92 @@ u8 Fishing4(struct Task *task)
u32 randVal;
MenuDisplayMessageBox();
- task->data[0]++;
- task->data[1] = 0;
- task->data[2] = 0;
+ task->tStep++;
+ task->tFrameCounter = 0;
+ task->tNumDots = 0;
randVal = Random();
randVal %= 10;
- task->data[3] = randVal + 1;
- if (task->data[12] == 0)
- task->data[3] = randVal + 4;
- if (task->data[3] > 9)
- task->data[3] = 10;
+ task->tDotsRequired = randVal + 1;
+ if (task->tRoundsPlayed == 0)
+ task->tDotsRequired = randVal + 4;
+ if (task->tDotsRequired >= 10)
+ task->tDotsRequired = 10;
return 1;
}
+// Play a round of the dot game
u8 Fishing5(struct Task *task)
{
const u8 dot[] = _("·");
sub_805A954();
- task->data[1]++;
+ task->tFrameCounter++;
if (gMain.newKeys & A_BUTTON)
{
- task->data[0] = 11;
- if (task->data[12] != 0)
- task->data[0] = 12;
+ task->tStep = FISHING_NO_BITE;
+ if (task->tRoundsPlayed != 0)
+ task->tStep = FISHING_GOT_AWAY;
return 1;
}
else
{
- if (task->data[1] > 0x13)
+ if (task->tFrameCounter >= 20)
{
- task->data[1] = 0;
- if (task->data[2] >= task->data[3])
+ task->tFrameCounter = 0;
+ if (task->tNumDots >= task->tDotsRequired)
{
- task->data[0]++;
- if (task->data[12] != 0)
- task->data[0]++;
- task->data[12]++;
+ task->tStep++;
+ if (task->tRoundsPlayed != 0)
+ task->tStep++;
+ task->tRoundsPlayed++;
}
else
{
- MenuPrint(dot, task->data[2] + 4, 15);
- task->data[2]++;
+ MenuPrint(dot, task->tNumDots + 4, 15);
+ task->tNumDots++;
}
}
return 0;
}
}
+// Determine if fish bites
u8 Fishing6(struct Task *task)
{
sub_805A954();
- task->data[0]++;
- if (!GetFishingWildMonListHeader() || (Random() & 1))
- task->data[0] = 11;
+ task->tStep++;
+ if (!DoesCurrentMapHaveFishingMons() || (Random() & 1))
+ task->tStep = FISHING_NO_BITE;
else
StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], sub_805FE08(player_get_direction_lower_nybble()));
return 1;
}
+// Oh! A Bite!
u8 Fishing7(struct Task *task)
{
sub_805A954();
MenuPrint(gOtherText_OhABite, 4, 17);
- task->data[0]++;
- task->data[1] = 0;
+ task->tStep++;
+ task->tFrameCounter = 0;
return 0;
}
+// We have a bite. Now, wait for the player to press A, or the timer to expire.
u8 Fishing8(struct Task *task)
{
- const s16 arr[3] = {36, 33, 30};
+ const s16 reelTimeouts[3] = {36, 33, 30};
sub_805A954();
- task->data[1]++;
- if (task->data[1] >= arr[task->data[15]])
- task->data[0] = 12;
+ task->tFrameCounter++;
+ if (task->tFrameCounter >= reelTimeouts[task->tFishingRod])
+ task->tStep = FISHING_GOT_AWAY;
else if (gMain.newKeys & A_BUTTON)
- task->data[0]++;
+ task->tStep++;
return 0;
}
+// Determine if we're going to play the dot game again
u8 Fishing9(struct Task *task)
{
const s16 arr[][2] =
@@ -1573,17 +1596,18 @@ u8 Fishing9(struct Task *task)
};
sub_805A954();
- task->data[0]++;
- if (task->data[12] < task->data[13])
+ task->tStep++;
+ if (task->tRoundsPlayed < task->tMinRoundsRequired)
{
- task->data[0] = 3;
+ task->tStep = FISHING_START_ROUND;
}
- else if (task->data[12] < 2)
+ else if (task->tRoundsPlayed < 2)
{
- s16 randVal = Random() % 100;
+ // probability of having to play another round
+ s16 probability = Random() % 100;
- if (arr[task->data[15]][task->data[12]] > randVal)
- task->data[0] = 3;
+ if (arr[task->tFishingRod][task->tRoundsPlayed] > probability)
+ task->tStep = FISHING_START_ROUND;
}
return 0;
}
@@ -1591,72 +1615,73 @@ u8 Fishing9(struct Task *task)
u8 Fishing10(struct Task *task)
{
sub_805A954();
- sub_8072044(gOtherText_PokeOnHook);
+ MenuPrintMessageDefaultCoords(gOtherText_PokeOnHook);
MenuDisplayMessageBox();
- task->data[0]++;
- task->data[1] = 0;
+ task->tStep++;
+ task->tFrameCounter = 0;
return 0;
}
u8 Fishing11(struct Task *task)
{
- if (task->data[1] == 0)
- {
+ if (task->tFrameCounter == 0)
sub_805A954();
- if (task->data[1] == 0)
+
+ if (task->tFrameCounter == 0)
+ {
+ if (MenuUpdateWindowText())
{
- if (MenuUpdateWindowText())
- {
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
-
- sub_805B980(playerMapObj, task->data[14]);
- FieldObjectTurn(playerMapObj, playerMapObj->placeholder18);
- if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
- sub_8127F28(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1A, 0, 0);
- gSprites[gPlayerAvatar.spriteId].pos2.x = 0;
- gSprites[gPlayerAvatar.spriteId].pos2.y = 0;
- MenuZeroFillScreen();
- task->data[1]++;
- return 0;
- }
- else
- {
- if (task->data[1] == 0)
- return 0;
- }
+ struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+
+ sub_805B980(playerMapObj, task->tPlayerGfxId);
+ FieldObjectTurn(playerMapObj, playerMapObj->placeholder18);
+ if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
+ sub_8127F28(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1A, 0, 0);
+ gSprites[gPlayerAvatar.spriteId].pos2.x = 0;
+ gSprites[gPlayerAvatar.spriteId].pos2.y = 0;
+ MenuZeroFillScreen();
+ task->tFrameCounter++;
+ return 0;
}
}
- gPlayerAvatar.unk6 = 0;
- ScriptContext2_Disable();
- FishingWildEncounter(task->data[15]);
- sub_80BE97C(1);
- DestroyTask(FindTaskIdByFunc(Task_Fishing));
+
+ if (task->tFrameCounter != 0)
+ {
+ gPlayerAvatar.unk6 = 0;
+ ScriptContext2_Disable();
+ FishingWildEncounter(task->tFishingRod);
+ sub_80BE97C(1);
+ DestroyTask(FindTaskIdByFunc(Task_Fishing));
+ }
return 0;
}
+// Not even a nibble
u8 Fishing12(struct Task *task)
{
sub_805A954();
StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], sub_805FDF8(player_get_direction_lower_nybble()));
- sub_8072044(gOtherText_NotEvenANibble);
- task->data[0] = 13;
+ MenuPrintMessageDefaultCoords(gOtherText_NotEvenANibble);
+ task->tStep = FISHING_SHOW_RESULT;
return 1;
}
+// It got away
u8 Fishing13(struct Task *task)
{
sub_805A954();
StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], sub_805FDF8(player_get_direction_lower_nybble()));
- sub_8072044(gOtherText_ItGotAway);
- task->data[0]++;
+ MenuPrintMessageDefaultCoords(gOtherText_ItGotAway);
+ task->tStep++;
return 1;
}
+// Display the message
u8 Fishing14(struct Task *task)
{
sub_805A954();
MenuDisplayMessageBox();
- task->data[0]++;
+ task->tStep++;
return 0;
}
@@ -1667,13 +1692,13 @@ u8 Fishing15(struct Task *task)
{
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
- sub_805B980(playerMapObj, task->data[14]);
+ sub_805B980(playerMapObj, task->tPlayerGfxId);
FieldObjectTurn(playerMapObj, playerMapObj->placeholder18);
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
sub_8127F28(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1A, 0, 0);
gSprites[gPlayerAvatar.spriteId].pos2.x = 0;
gSprites[gPlayerAvatar.spriteId].pos2.y = 0;
- task->data[0]++;
+ task->tStep++;
}
return 0;
}
@@ -1692,6 +1717,10 @@ u8 Fishing16(struct Task *task)
return 0;
}
+#undef tStep
+#undef tFrameCounter
+#undef tFishingRod
+
static void sub_805A954(void)
{
struct Sprite *playerSprite = &gSprites[gPlayerAvatar.spriteId];
diff --git a/src/field_poison.c b/src/field_poison.c
index 8c9e029e1..1244b9c62 100644
--- a/src/field_poison.c
+++ b/src/field_poison.c
@@ -108,7 +108,7 @@ void ExecuteWhiteOut(void)
ScriptContext1_Stop();
}
-s32 overworld_poison(void)
+s32 DoPoisonFieldEffect(void)
{
struct Pokemon *pkmn = &gPlayerParty[0];
u32 numPoisoned = 0;
diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c
index 79913e1c5..1464a99b1 100644
--- a/src/field_screen_effect.c
+++ b/src/field_screen_effect.c
@@ -3,7 +3,7 @@
#include "field_camera.h"
#include "menu.h"
#include "palette.h"
-#include "rom4.h"
+#include "overworld.h"
#include "script.h"
#include "task.h"
#include "text.h"
@@ -21,11 +21,11 @@ extern u16 gUnknown_03004DE0[][0x3C0];
const static u16 gUnknown_0839ACDC[] = { 0xC8, 0x48, 0x38, 0x28, 0x18, 0x0 };
-const s32 gUnknown_0839ACE8 = 4;
+const s32 gMaxFlashLevel = 4;
-const static u32 gUnknown_0839ACEC[3] =
+const static struct UnknownTaskStruct gUnknown_0839ACEC =
{
- REG_ADDR_WIN0H,
+ (void *)REG_ADDR_WIN0H,
((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1,
1
};
@@ -137,11 +137,11 @@ static u8 sub_8081534(s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, u8 a6)
void sub_8081594(u8 a1)
{
- u8 index = sav1_get_flash_used_on_map();
+ u8 flashLevel = Overworld_GetFlashLevel();
u8 value = 0;
if (!a1)
value = 1;
- sub_8081534(120, 80, gUnknown_0839ACDC[index], gUnknown_0839ACDC[a1], value, 1);
+ sub_8081534(120, 80, gUnknown_0839ACDC[flashLevel], gUnknown_0839ACDC[a1], value, 1);
sub_8081510();
ScriptContext2_Enable();
}
@@ -220,7 +220,8 @@ static void sub_80816A8(u8 taskId)
REG_WINOUT = 30;
sub_8081398(&gUnknown_03004DE0[0][0], data[2], data[3], 1);
CpuFastSet(&gUnknown_03004DE0[0], &gUnknown_03004DE0[1], 480);
- sub_80895F8(gUnknown_0839ACEC[0], gUnknown_0839ACEC[1], gUnknown_0839ACEC[2]);
+ //sub_80895F8(gUnknown_0839ACEC[0], gUnknown_0839ACEC[1], gUnknown_0839ACEC[2]);
+ sub_80895F8(gUnknown_0839ACEC);
data[0] = 1;
break;
case 1:
diff --git a/src/field_special_scene.c b/src/field_special_scene.c
index 82a7a13e3..38c076c51 100644
--- a/src/field_special_scene.c
+++ b/src/field_special_scene.c
@@ -8,7 +8,7 @@
#include "fieldmap.h"
#include "main.h"
#include "palette.h"
-#include "rom4.h"
+#include "overworld.h"
#include "script.h"
#include "script_movement.h"
#include "songs.h"
@@ -273,7 +273,7 @@ void Task_HandlePorthole(u8 taskId)
case IDLE_CHECK: // idle and move.
if (gMain.newKeys & A_BUTTON)
data[1] = 1;
- if (!sub_80A212C(0xFF, location->mapNum, location->mapGroup))
+ if (!ScriptMovement_IsObjectMovementFinished(0xFF, location->mapNum, location->mapGroup))
return;
if (CountSSTidalStep(1) == TRUE)
{
@@ -294,18 +294,18 @@ void Task_HandlePorthole(u8 taskId)
// run this once.
if (*var == 2) // which direction?
{
- exec_movement(0xFF, location->mapNum, location->mapGroup, gUnknown_083D295F);
+ ScriptMovement_StartObjectMovementScript(0xFF, location->mapNum, location->mapGroup, gUnknown_083D295F);
data[0] = IDLE_CHECK; // run case 1.
}
else
{
- exec_movement(0xFF, location->mapNum, location->mapGroup, gUnknown_083D2961);
+ ScriptMovement_StartObjectMovementScript(0xFF, location->mapNum, location->mapGroup, gUnknown_083D2961);
data[0] = IDLE_CHECK; // run case 1.
}
break;
case EXIT_PORTHOLE: // exit porthole.
- FlagReset(0x4001);
- FlagReset(0x4000);
+ FlagClear(0x4001);
+ FlagClear(0x4000);
copy_saved_warp2_bank_and_enter_x_to_warp1(0);
sp13E_warp_to_last_warp();
DestroyTask(taskId);
diff --git a/src/field_specials.c b/src/field_specials.c
index 454bd8d96..c23ea2ddc 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -12,7 +12,7 @@
#include "field_player_avatar.h"
#include "main.h"
#include "map_constants.h"
-#include "rom4.h"
+#include "overworld.h"
#include "script.h"
#include "songs.h"
#include "string_util.h"
@@ -61,44 +61,44 @@ static void RecordCyclingRoadResults(u32, u8);
static struct ElevatorMenu gUnknown_03000760[20];
-void sub_810D6A4(void) {
- SetMainCallback2(sub_8145D88);
+void ScrSpecial_ShowDiploma(void)
+{
+ SetMainCallback2(CB2_ShowDiploma);
ScriptContext2_Enable();
}
-void sub_810D6B8(void) {
+void ScrSpecial_ViewWallClock(void)
+{
gMain.savedCallback = c2_exit_to_overworld_2_switch;
SetMainCallback2(CB2_ViewWallClock);
ScriptContext2_Enable();
}
-void ResetCyclingRoadChallengeData(void) {
+void ResetCyclingRoadChallengeData(void)
+{
gUnknown_02039250 = 0;
gUnknown_02039251 = 0;
gUnknown_02039254 = 0;
}
-void BeginCyclingRoadChallenge(void) {
+void ScrSpecial_BeginCyclingRoadChallenge(void)
+{
gUnknown_02039250 = 1;
gUnknown_02039251 = 0;
gUnknown_02039254 = gMain.vblankCounter1;
}
-u16 GetPlayerAvatarBike(void) {
+u16 GetPlayerAvatarBike(void)
+{
if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_ACRO_BIKE))
- {
return 1;
- }
-
if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_MACH_BIKE))
- {
return 2;
- }
-
return 0;
}
-void DetermineCyclingRoadResults(u32 arg0, u8 arg1) {
+static void DetermineCyclingRoadResults(u32 arg0, u8 arg1)
+{
u8 result;
if (arg1 <= 99)
@@ -225,7 +225,7 @@ void SetSSTidalFlag(void)
void ResetSSTidalFlag(void)
{
- FlagReset(SYS_CRUISE_MODE);
+ FlagClear(SYS_CRUISE_MODE);
}
bool32 CountSSTidalStep(u16 delta)
@@ -1453,7 +1453,7 @@ void ResetTrickHouseEndRoomFlag(void)
u16 *specVar = &gSpecialVar_0x8004;
u16 flag = 0x259;
*specVar = flag;
- FlagReset(flag);
+ FlagClear(flag);
}
bool8 CheckLeadMonCool(void)
@@ -1868,7 +1868,7 @@ void GivLeadMonEffortRibbon(void)
SetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_EFFORT_RIBBON, &ribbonSet);
}
-bool8 GetLeadMonEVCount(void)
+bool8 ScrSpecial_AreLeadMonEVsMaxedOut(void)
{
if (GetMonEVCount(&gPlayerParty[GetLeadMonIndex()]) >= 510)
{
@@ -1919,7 +1919,7 @@ bool8 IsStarterInParty(void)
u8 i;
u16 starter = GetStarterPokemon(VarGet(VAR_FIRST_POKE));
u8 partyCount = CalculatePlayerPartyCount();
- for (i=0; i<partyCount; i++)
+ for (i = 0; i < partyCount; i++)
{
if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) == starter)
{
@@ -2005,7 +2005,7 @@ bool8 sub_810F828(void)
void SetRoute119Weather(void)
{
- if (is_light_level_1_2_3_5_or_6(get_map_light_from_warp0()) != TRUE)
+ if (is_map_type_1_2_3_5_or_6(get_map_type_from_warp0()) != TRUE)
{
SetSav1Weather(0x14);
}
@@ -2013,7 +2013,7 @@ void SetRoute119Weather(void)
void SetRoute123Weather(void)
{
- if (is_light_level_1_2_3_5_or_6(get_map_light_from_warp0()) != TRUE)
+ if (is_map_type_1_2_3_5_or_6(get_map_type_from_warp0()) != TRUE)
{
SetSav1Weather(0x15);
}
@@ -2140,10 +2140,10 @@ void sub_810FAA0(void)
sub_810FF48();
sub_810FD80();
gSaveBlock1.vars[0x42] = gSaveBlock2.playTimeHours;
- FlagReset(0x315);
- FlagReset(0x316);
- FlagReset(0x317);
- FlagReset(0x318);
+ FlagClear(0x315);
+ FlagClear(0x316);
+ FlagClear(0x317);
+ FlagClear(0x318);
VarSet(VAR_0x4095, 1);
}
}
diff --git a/src/field_tasks.c b/src/field_tasks.c
index caf2ce6b9..da6f162c2 100644
--- a/src/field_tasks.c
+++ b/src/field_tasks.c
@@ -1,5 +1,5 @@
//
-// Created by scott on 6/22/2017.
+
//
#include "global.h"
@@ -10,7 +10,7 @@
#include "item.h"
#include "items.h"
#include "event_data.h"
-#include "rom4.h"
+#include "overworld.h"
#include "clock.h"
#include "script.h"
#include "field_special_scene.h"
@@ -48,21 +48,25 @@ void Task_RunPerStepCallback(u8 taskId)
gUnknown_08376364[idx](taskId);
}
-static void RunTimeBasedEvents(s16 *taskData)
+#define tState data[0]
+#define tAmbientCryState data[1]
+#define tAmbientCryDelay data[2]
+
+static void RunTimeBasedEvents(s16 *data)
{
- switch (*taskData)
+ switch (tState)
{
case 0:
if (gMain.vblankCounter1 & 0x1000)
{
DoTimeBasedEvents();
- (*taskData)++;
+ tState++;
}
break;
case 1:
if (!(gMain.vblankCounter1 & 0x1000))
{
- (*taskData)--;
+ tState--;
}
break;
}
@@ -70,14 +74,19 @@ static void RunTimeBasedEvents(s16 *taskData)
void Task_RunTimeBasedEvents(u8 taskId)
{
- s16 *taskData = gTasks[taskId].data;
+ s16 *data = gTasks[taskId].data;
+
if (!ScriptContext2_IsEnabled())
{
- RunTimeBasedEvents(taskData);
- sub_80540D0(taskData + 1, taskData + 2);
+ RunTimeBasedEvents(data);
+ UpdateAmbientCry(&tAmbientCryState, &tAmbientCryDelay);
}
}
+#undef tState
+#undef tAmbientCryState
+#undef tAmbientCryDelay
+
void Task_MuddySlope(u8);
void SetUpFieldTasks(void)
@@ -836,11 +845,11 @@ void Task_MuddySlope(u8 taskId)
}
break;
}
- if (gUnknown_0202E844.field_0 && mapIndices != data[0])
+ if (gCamera.field_0 && mapIndices != data[0])
{
data[0] = mapIndices;
- x2 = gUnknown_0202E844.x;
- y2 = gUnknown_0202E844.y;
+ x2 = gCamera.x;
+ y2 = gCamera.y;
}
else
{
diff --git a/src/field_weather.c b/src/field_weather.c
index 5ff2eddf9..443a38357 100644
--- a/src/field_weather.c
+++ b/src/field_weather.c
@@ -55,7 +55,7 @@ extern struct Weather gWeather;
extern u8 *gUnknown_083970E8;
extern u8 (*gUnknown_08396FC8[][4])(void);
extern u8 (*gUnknown_083970B8[])(void);
-extern u8 *gUnknown_030006DC;
+IWRAM_DATA u8 *gUnknown_030006DC;
extern u8 gUnknown_083970C8;
extern u8 (*gUnknown_0202FC48)[32];
extern u8 gUnknown_0202F9E8[32];
diff --git a/src/fieldmap.c b/src/fieldmap.c
index 0e0ec246c..7a31ae720 100644
--- a/src/fieldmap.c
+++ b/src/fieldmap.c
@@ -1,7 +1,7 @@
#include "global.h"
#include "fieldmap.h"
#include "palette.h"
-#include "rom4.h"
+#include "overworld.h"
#include "script.h"
#include "secret_base.h"
#include "tv.h"
@@ -22,7 +22,7 @@ struct Coords32
EWRAM_DATA static u16 gUnknown_02029828[0x2800] = {0};
EWRAM_DATA struct MapHeader gMapHeader = {0};
-EWRAM_DATA struct Camera gUnknown_0202E844 = {0};
+EWRAM_DATA struct Camera gCamera = {0};
EWRAM_DATA static struct ConnectionFlags gUnknown_0202E850 = {0};
struct BackupMapData gUnknown_03004870;
@@ -31,7 +31,7 @@ static const struct ConnectionFlags sDummyConnectionFlags = {0};
struct MapHeader *mapconnection_get_mapheader(struct MapConnection *connection)
{
- return get_mapheader_by_bank_and_number(connection->mapGroup, connection->mapNum);
+ return Overworld_GetMapHeaderByGroupAndId(connection->mapGroup, connection->mapNum);
}
void not_trainer_hill_battle_pyramid(void)
@@ -713,7 +713,7 @@ bool8 CameraMove(int x, int y)
unsigned int direction;
struct MapConnection *connection;
int old_x, old_y;
- gUnknown_0202E844.field_0 = FALSE;
+ gCamera.field_0 = FALSE;
direction = GetPostCameraMoveMapBorderId(x, y);
if (direction + 1 <= 1)
{
@@ -728,14 +728,14 @@ bool8 CameraMove(int x, int y)
connection = sub_8056A64(direction, gSaveBlock1.pos.x, gSaveBlock1.pos.y);
sub_8056918(connection, direction, x, y);
sub_80538F0(connection->mapGroup, connection->mapNum);
- gUnknown_0202E844.field_0 = TRUE;
- gUnknown_0202E844.x = old_x - gSaveBlock1.pos.x;
- gUnknown_0202E844.y = old_y - gSaveBlock1.pos.y;
+ gCamera.field_0 = TRUE;
+ gCamera.x = old_x - gSaveBlock1.pos.x;
+ gCamera.y = old_y - gSaveBlock1.pos.y;
gSaveBlock1.pos.x += x;
gSaveBlock1.pos.y += y;
sub_80566F0(direction);
}
- return gUnknown_0202E844.field_0;
+ return gCamera.field_0;
}
struct MapConnection *sub_8056A64(u8 direction, int x, int y)
diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c
index b394d1e4c..00643a979 100644
--- a/src/fldeff_cut.c
+++ b/src/fldeff_cut.c
@@ -8,7 +8,7 @@
#include "metatile_behavior.h"
#include "metatile_behaviors.h"
#include "pokemon_menu.h"
-#include "rom4.h"
+#include "overworld.h"
#include "rom6.h"
#include "script.h"
#include "songs.h"
@@ -28,7 +28,7 @@ extern struct MapPosition gUnknown_0203923C;
extern u8 gLastFieldPokeMenuOpened;
-extern u8 UseCutScript;
+extern u8 S_UseCut[];
bool8 SetUpFieldMove_Cut(void)
{
@@ -38,7 +38,7 @@ bool8 SetUpFieldMove_Cut(void)
if(npc_before_player_of_type(0x52) == TRUE) // is in front of tree?
{
- gFieldCallback = sub_808AB90;
+ gFieldCallback = FieldCallback_Teleport;
gUnknown_03005CE4 = sub_80A2634;
return TRUE;
}
@@ -57,7 +57,7 @@ bool8 SetUpFieldMove_Cut(void)
if(MetatileBehavior_IsPokeGrass(tileBehavior) == TRUE
|| MetatileBehavior_IsAshGrass(tileBehavior) == TRUE)
{
- gFieldCallback = sub_808AB90;
+ gFieldCallback = FieldCallback_Teleport;
gUnknown_03005CE4 = sub_80A25E8;
return TRUE;
}
@@ -70,8 +70,8 @@ bool8 SetUpFieldMove_Cut(void)
void sub_80A25E8(void)
{
- FieldEffectStart(1);
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
+ FieldEffectStart(FLDEFF_USE_CUT_ON_GRASS);
+ gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
}
bool8 FldEff_UseCutOnGrass(void)
@@ -86,8 +86,8 @@ bool8 FldEff_UseCutOnGrass(void)
void sub_80A2634(void)
{
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
- ScriptContext1_SetupScript(&UseCutScript);
+ gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
+ ScriptContext1_SetupScript(S_UseCut);
}
bool8 FldEff_UseCutOnTree(void)
@@ -102,8 +102,8 @@ bool8 FldEff_UseCutOnTree(void)
void sub_80A2684(void)
{
- FieldEffectActiveListRemove(1);
- FieldEffectStart(0x3A);
+ FieldEffectActiveListRemove(FLDEFF_USE_CUT_ON_GRASS);
+ FieldEffectStart(FLDEFF_CUT_GRASS);
}
bool8 FldEff_CutGrass(void)
@@ -272,19 +272,16 @@ void sub_80A2AB8(void)
{
u8 i;
- for(i = 1; i < 8; i++)
- {
+ for (i = 1; i < 8; i++)
DestroySprite(&gSprites[gCutGrassSpriteArray[i]]);
- }
-
- FieldEffectStop(&gSprites[gCutGrassSpriteArray[0]], 0x3A);
+ FieldEffectStop(&gSprites[gCutGrassSpriteArray[0]], FLDEFF_CUT_GRASS);
sub_8064E2C();
ScriptContext2_Disable();
}
void sub_80A2B00(void)
{
- PlaySE(0x80);
- FieldEffectActiveListRemove(2);
+ PlaySE(SE_W015);
+ FieldEffectActiveListRemove(FLDEFF_USE_CUT_ON_TREE);
EnableBothScriptContexts();
}
diff --git a/src/fldeff_flash.c b/src/fldeff_flash.c
index 6c2633567..1ee8a8f05 100644
--- a/src/fldeff_flash.c
+++ b/src/fldeff_flash.c
@@ -4,7 +4,7 @@
#include "main.h"
#include "palette.h"
#include "pokemon_menu.h"
-#include "rom4.h"
+#include "overworld.h"
#include "rom6.h"
#include "script.h"
#include "songs.h"
@@ -51,7 +51,7 @@ bool8 SetUpFieldMove_Flash(void)
{
if (gMapHeader.cave == TRUE && !FlagGet(SYS_USE_FLASH))
{
- gFieldCallback = sub_808AB90;
+ gFieldCallback = FieldCallback_Teleport;
gUnknown_03005CE4 = sub_810CBFC;
return TRUE;
}
@@ -62,7 +62,7 @@ bool8 SetUpFieldMove_Flash(void)
void sub_810CBFC(void)
{
u8 taskId = oei_task_add();
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
+ gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
gTasks[taskId].data[8] = (uintptr_t)sub_810CC34 >> 16;
gTasks[taskId].data[9] = (uintptr_t)sub_810CC34;
}
@@ -123,8 +123,8 @@ void sub_810CC80(void)
bool8 sub_810CD5C(void)
{
u8 i;
- u8 v0 = get_map_light_from_warp0();
- u8 v1 = sav1_map_get_light_level();
+ u8 v0 = get_map_type_from_warp0();
+ u8 v1 = Overworld_GetMapTypeOfSaveblockLocation();
for (i = 0; gUnknown_083F7FC4[i].unk0; i++)
{
diff --git a/src/fldeff_strength.c b/src/fldeff_strength.c
index 81f4f63c6..d9603d094 100644
--- a/src/fldeff_strength.c
+++ b/src/fldeff_strength.c
@@ -18,14 +18,14 @@ extern u16 gScriptResult;
extern void (*gFieldCallback)(void);
extern void (*gUnknown_03005CE4)(void);
-extern u8 UseStrengthScript[];
+extern u8 S_UseStrength[];
bool8 SetUpFieldMove_Strength(void)
{
if (ShouldDoBrailleStrengthEffect())
{
gScriptResult = gLastFieldPokeMenuOpened;
- gFieldCallback = sub_808AB90;
+ gFieldCallback = FieldCallback_Teleport;
gUnknown_03005CE4 = sub_811AA38;
}
else
@@ -33,7 +33,7 @@ bool8 SetUpFieldMove_Strength(void)
if (npc_before_player_of_type(87) != TRUE)
return 0;
gScriptResult = gLastFieldPokeMenuOpened;
- gFieldCallback = sub_808AB90;
+ gFieldCallback = FieldCallback_Teleport;
gUnknown_03005CE4 = sub_811AA18;
}
@@ -42,14 +42,14 @@ bool8 SetUpFieldMove_Strength(void)
static void sub_811AA18(void)
{
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
- ScriptContext1_SetupScript(UseStrengthScript);
+ gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
+ ScriptContext1_SetupScript(S_UseStrength);
}
static void sub_811AA38(void)
{
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
- FieldEffectStart(40);
+ gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
+ FieldEffectStart(FLDEFF_USE_STRENGTH);
}
bool8 FldEff_UseStrength(void)
@@ -58,7 +58,7 @@ bool8 FldEff_UseStrength(void)
gTasks[taskId].data[8] = (u32)sub_811AA9C >> 16;
gTasks[taskId].data[9] = (u32)sub_811AA9C;
- GetMonNickname(&gPlayerParty[gUnknown_0202FF84[0]], gStringVar1);
+ GetMonNickname(&gPlayerParty[gFieldEffectArguments[0]], gStringVar1);
return FALSE;
}
diff --git a/src/fldeff_sweetscent.c b/src/fldeff_sweetscent.c
index 4c3e6bf4a..b9dbf619d 100644
--- a/src/fldeff_sweetscent.c
+++ b/src/fldeff_sweetscent.c
@@ -23,15 +23,15 @@ extern u8 SweetScentNothingHereScript[];
bool8 SetUpFieldMove_SweetScent(void)
{
- gFieldCallback = sub_808AB90;
+ gFieldCallback = FieldCallback_Teleport;
gUnknown_03005CE4 = sub_812BFD4;
return TRUE;
}
static void sub_812BFD4(void)
{
- FieldEffectStart(51);
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
+ FieldEffectStart(FLDEFF_SWEET_SCENT);
+ gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
}
bool8 FldEff_SweetScent()
@@ -51,7 +51,7 @@ static void sub_812C01C(void)
BeginNormalPaletteFade(~(1 << (gSprites[GetPlayerAvatarObjectId()].oam.paletteNum + 16)), 4, 0, 8, 0x1F);
taskId = CreateTask(sub_812C084, 0);
gTasks[taskId].data[0] = 0;
- FieldEffectActiveListRemove(51);
+ FieldEffectActiveListRemove(FLDEFF_SWEET_SCENT);
}
static void sub_812C084(u8 taskId)
diff --git a/src/fldeff_teleport.c b/src/fldeff_teleport.c
index 74e68df06..af48fb414 100644
--- a/src/fldeff_teleport.c
+++ b/src/fldeff_teleport.c
@@ -3,7 +3,7 @@
#include "field_effect.h"
#include "field_player_avatar.h"
#include "pokemon_menu.h"
-#include "rom4.h"
+#include "overworld.h"
#include "rom6.h"
#include "task.h"
@@ -13,9 +13,9 @@ extern void (*gUnknown_03005CE4)(void);
bool8 SetUpFieldMove_Teleport(void)
{
- if (is_light_level_1_2_3_or_6(gMapHeader.mapType) == TRUE)
+ if (Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType) == TRUE)
{
- gFieldCallback = sub_808AB90;
+ gFieldCallback = FieldCallback_Teleport;
gUnknown_03005CE4 = hm_teleport_run_dp02scr;
return TRUE;
}
@@ -25,9 +25,9 @@ bool8 SetUpFieldMove_Teleport(void)
void hm_teleport_run_dp02scr(void)
{
- new_game();
- FieldEffectStart(63);
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
+ Overworld_ResetStateAfterTeleport();
+ FieldEffectStart(FLDEFF_USE_TELEPORT);
+ gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
}
bool8 FldEff_UseTeleport(void)
@@ -41,6 +41,6 @@ bool8 FldEff_UseTeleport(void)
void sub_814A404(void)
{
- FieldEffectActiveListRemove(63);
+ FieldEffectActiveListRemove(FLDEFF_USE_TELEPORT);
sub_8087BA8();
}
diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c
new file mode 100644
index 000000000..10c999ef3
--- /dev/null
+++ b/src/hall_of_fame.c
@@ -0,0 +1,1413 @@
+#include "global.h"
+#include "main.h"
+#include "task.h"
+#include "palette.h"
+#include "sound.h"
+#include "songs.h"
+#include "pokemon.h"
+#include "text.h"
+#include "strings.h"
+#include "string_util.h"
+#include "menu.h"
+#include "save.h"
+#include "species.h"
+#include "overworld.h"
+#include "m4a.h"
+#include "data2.h"
+#include "decompress.h"
+#include "rng.h"
+#include "trig.h"
+
+static EWRAM_DATA u32 sUnknown_0203931C = 0;
+
+extern u8 ewram[];
+extern bool8 gUnknown_02039324; // has hall of fame records
+extern void (*gGameContinueCallback)(void);
+extern struct MusicPlayerInfo gMPlay_BGM;
+extern u8 gReservedSpritePaletteCount;
+extern struct SpriteTemplate gUnknown_02024E8C;
+
+extern const u8 gContestConfetti_Gfx[];
+extern const u8 gContestConfetti_Pal[];
+extern const u8 gHallOfFame_Gfx[];
+extern const u16 gHallOfFame_Pal[];
+
+struct HallofFameMon
+{
+ u32 tid;
+ u32 personality;
+ u16 species : 9;
+ u16 lvl : 7;
+ u8 nick[10];
+};
+
+struct HallofFameMons
+{
+ struct HallofFameMon mons[6];
+};
+
+#define HALL_OF_FAME_MAX_TEAMS 50
+
+static void sub_8141FF8(u8 taskID);
+static void sub_81422E8(u8 taskID);
+static void sub_814217C(u8 taskID);
+static void sub_8142274(u8 taskID);
+static void sub_81422B8(u8 taskID);
+static void sub_8142320(u8 taskID);
+static void sub_8142404(u8 taskID);
+static void sub_8142484(u8 taskID);
+static void sub_8142570(u8 taskID);
+static void sub_8142618(u8 taskID);
+static void sub_81426F8(u8 taskID);
+static void sub_8142738(u8 taskID);
+static void sub_8142794(u8 taskID);
+static void sub_8142818(u8 taskID);
+static void sub_8142850(u8 taskID);
+static void sub_81428A0(u8 taskID);
+static void sub_8142A28(u8 taskID);
+static void sub_8142FEC(u8 taskID);
+static void sub_8142B04(u8 taskID);
+static void sub_8142CC8(u8 taskID);
+static void sub_8142DF4(u8 taskID);
+static void sub_8142F78(u8 taskID);
+static void sub_8142FCC(u8 taskID);
+static void sub_814302C(u8 taskID);
+
+static void sub_81435DC(struct Sprite* sprite);
+static void sub_814386C(struct Sprite* sprite);
+static void SpriteCB_HallOfFame_Dummy(struct Sprite* sprite);
+
+static void sub_8143068(u8 a0, u8 a1);
+static void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 a1, u8 a2);
+static void HallOfFame_PrintPlayerInfo(u8 a0, u8 a1);
+static void sub_81433E0(void);
+static void sub_8143570(void);
+static void sub_81435B8(void);
+static u32 HallOfFame_LoadPokemonPic(u16 species, s16 posX, s16 posY, u16 pokeID, u32 tid, u32 pid);
+static u32 HallOfFame_LoadTrainerPic(u16 trainerPicID, s16 posX, s16 posY, u16 a3);
+static bool8 sub_81438C4(void);
+
+// functions from different files
+void sub_81439D0(void);
+void sub_80C5CD4(void*); // ?
+void sub_80C5E38(void*); // ?
+bool8 sub_80C5DCC(void);
+bool8 sub_80C5F98(void);
+void ReturnFromHallOfFamePC(void);
+u16 SpeciesToPokedexNum(u16 species);
+void remove_some_task(void);
+
+// data and gfx
+
+static const struct CompressedSpriteSheet sHallOfFame_ConfettiSpriteSheet =
+{
+ gContestConfetti_Gfx, 0x220, 1001
+};
+
+static const u8 sUnused0[8] = {};
+
+static const struct CompressedSpritePalette sHallOfFame_ConfettiSpritePalette =
+{
+ gContestConfetti_Pal, 1001
+};
+
+static const u8 sUnused1[8] = {};
+
+static const s16 sHallOfFame_MonsFullTeamPositions[6][4] =
+{
+ {120, 210, 120, 40},
+ {326, 220, 56, 40},
+ {-86, 220, 184, 40},
+ {120, -62, 120, 88},
+ {-25, -62, 200, 88},
+ {265, -62, 40, 88}
+};
+
+static const s16 sHallOfFame_MonsHalfTeamPositions[3][4] =
+{
+ {120, 214, 120, 64},
+ {281, 214, 56, 64},
+ {-41, 214, 184, 64}
+};
+
+static const struct HallofFameMon sDummyFameMon =
+{
+ 0x3EA03EA, 0, 0, 0, {0}
+};
+
+static const u8 sUnused2[6] = {2, 1, 3, 6, 4, 5};
+
+static const struct OamData sOamData_840B598 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+void* const gUnknown_0840B5A0[] =
+{
+ &ewram[0x08000],
+ &ewram[0x0A000],
+ &ewram[0x0C000],
+ &ewram[0x0E000],
+ &ewram[0x10000],
+ &ewram[0x14000],
+ &ewram[0x18000]
+};
+
+static const struct SpriteFrameImage sSpriteImageTable_840B5BC[] =
+{
+ {&ewram[0x8000], 0x800},
+ {&ewram[0x8800], 0x800},
+ {&ewram[0x9000], 0x800},
+ {&ewram[0x9800], 0x800}
+};
+
+static const struct SpriteFrameImage sSpriteImageTable_840B5DC[] =
+{
+ {&ewram[0xA000], 0x800},
+ {&ewram[0xA800], 0x800},
+ {&ewram[0xB000], 0x800},
+ {&ewram[0xB800], 0x800}
+};
+
+static const struct SpriteFrameImage sSpriteImageTable_840B5FC[] =
+{
+ {&ewram[0xC000], 0x800},
+ {&ewram[0xC800], 0x800},
+ {&ewram[0xD000], 0x800},
+ {&ewram[0xD800], 0x800}
+};
+
+static const struct SpriteFrameImage sSpriteImageTable_840B61C[] =
+{
+ {&ewram[0xE000], 0x800},
+ {&ewram[0xE800], 0x800},
+ {&ewram[0xF000], 0x800},
+ {&ewram[0xF800], 0x800}
+};
+
+static const struct SpriteFrameImage sSpriteImageTable_840B63C[] =
+{
+ {&ewram[0x10000], 0x800},
+ {&ewram[0x10800], 0x800},
+ {&ewram[0x11000], 0x800},
+ {&ewram[0x11800], 0x800}
+};
+
+static const struct SpriteFrameImage sSpriteImageTable_840B65C[] =
+{
+ {&ewram[0x14000], 0x800},
+ {&ewram[0x14800], 0x800},
+ {&ewram[0x15000], 0x800},
+ {&ewram[0x15800], 0x800}
+};
+
+static const struct SpriteFrameImage sSpriteImageTable_840B67C[] =
+{
+ {&ewram[0x18000], 0x800},
+ {&ewram[0x18800], 0x800},
+ {&ewram[0x19000], 0x800},
+ {&ewram[0x19800], 0x800}
+};
+
+static const struct SpriteFrameImage* const sUnknown_0840B69C[7] =
+{
+ sSpriteImageTable_840B5BC,
+ sSpriteImageTable_840B5DC,
+ sSpriteImageTable_840B5FC,
+ sSpriteImageTable_840B61C,
+ sSpriteImageTable_840B63C,
+ sSpriteImageTable_840B65C,
+ sSpriteImageTable_840B67C
+};
+
+static const struct SpriteTemplate sUnknown_0840B6B8 =
+{
+ .tileTag = -1,
+ .paletteTag = -1,
+ .oam = &sOamData_840B598,
+ .anims = NULL,
+ .images = sSpriteImageTable_840B5BC,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_HallOfFame_Dummy
+};
+
+static const struct OamData sOamData_840B6D0 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sSpriteAnim_840B6D8[] =
+{
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_840B6E0[] =
+{
+ ANIMCMD_FRAME(1, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_840B6E8[] =
+{
+ ANIMCMD_FRAME(2, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_840B6F0[] =
+{
+ ANIMCMD_FRAME(3, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_840B6F8[] =
+{
+ ANIMCMD_FRAME(4, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_840B700[] =
+{
+ ANIMCMD_FRAME(5, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_840B708[] =
+{
+ ANIMCMD_FRAME(6, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_840B710[] =
+{
+ ANIMCMD_FRAME(7, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_840B718[] =
+{
+ ANIMCMD_FRAME(8, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_840B720[] =
+{
+ ANIMCMD_FRAME(9, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_840B728[] =
+{
+ ANIMCMD_FRAME(10, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_840B730[] =
+{
+ ANIMCMD_FRAME(11, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_840B738[] =
+{
+ ANIMCMD_FRAME(12, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_840B740[] =
+{
+ ANIMCMD_FRAME(13, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_840B748[] =
+{
+ ANIMCMD_FRAME(14, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_840B750[] =
+{
+ ANIMCMD_FRAME(15, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_840B758[] =
+{
+ ANIMCMD_FRAME(16, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd* const sSpriteAnimTable_840B760[] =
+{
+ sSpriteAnim_840B6D8,
+ sSpriteAnim_840B6E0,
+ sSpriteAnim_840B6E8,
+ sSpriteAnim_840B6F0,
+ sSpriteAnim_840B6F8,
+ sSpriteAnim_840B700,
+ sSpriteAnim_840B708,
+ sSpriteAnim_840B710,
+ sSpriteAnim_840B718,
+ sSpriteAnim_840B720,
+ sSpriteAnim_840B728,
+ sSpriteAnim_840B730,
+ sSpriteAnim_840B738,
+ sSpriteAnim_840B740,
+ sSpriteAnim_840B748,
+ sSpriteAnim_840B750,
+ sSpriteAnim_840B758
+};
+
+static const struct SpriteTemplate sSpriteTemplate_840B7A4 =
+{
+ .tileTag = 1001,
+ .paletteTag = 1001,
+ .oam = &sOamData_840B6D0,
+ .anims = sSpriteAnimTable_840B760,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_814386C
+};
+
+// code
+
+#define tDisplayedPoke data[1]
+#define tPokesNumber data[2]
+#define tFrameCount data[3]
+#define tPlayerSpriteID data[4]
+#define tMonSpriteID(i) data[i + 5]
+
+static void VBlankCB_HallOfFame(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void CB2_HallOfFame(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static bool8 sub_8141E64(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ default:
+ SetVBlankCallback(NULL);
+ sub_81433E0();
+ gMain.state = 1;
+ break;
+ case 1:
+ sub_8143570();
+ gMain.state++;
+ break;
+ case 2:
+ {
+ u16 saved_IME;
+
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ SetVBlankCallback(VBlankCB_HallOfFame);
+ saved_IME = REG_IME;
+ REG_IME = 0;
+ REG_IE |= 1;
+ REG_IME = saved_IME;
+ REG_DISPSTAT |= 8;
+ gMain.state++;
+ }
+ break;
+ case 3:
+ REG_BLDCNT = 0x3F42;
+ REG_BLDALPHA = 0x710;
+ REG_BLDY = 0;
+ sub_81435B8();
+ gMain.state++;
+ break;
+ case 4:
+ UpdatePaletteFade();
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(CB2_HallOfFame);
+ PlayBGM(BGM_DENDOU);
+ return 0;
+ }
+ break;
+ }
+ return 1;
+}
+
+void sub_8141F90(void)
+{
+ if (sub_8141E64() == 0)
+ {
+ u8 taskID = CreateTask(sub_8141FF8, 0);
+ gTasks[taskID].data[0] = 0;
+ }
+}
+
+static void sub_8141FC4(void)
+{
+ if (sub_8141E64() == 0)
+ {
+ u8 taskID = CreateTask(sub_8141FF8, 0);
+ gTasks[taskID].data[0] = 1;
+ }
+}
+
+static void sub_8141FF8(u8 taskID)
+{
+ u16 i, j;
+ struct HallofFameMons* fameMons = (struct HallofFameMons*)(&ewram[0x1C000]);
+
+ gTasks[taskID].tPokesNumber = 0; // valid pokes
+ for (i = 0; i < 6; i++)
+ {
+ u8 nick[12];
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES))
+ {
+ fameMons->mons[i].species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
+ fameMons->mons[i].tid = GetMonData(&gPlayerParty[i], MON_DATA_OT_ID);
+ fameMons->mons[i].personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY);
+ fameMons->mons[i].lvl = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL);
+ GetMonData(&gPlayerParty[i], MON_DATA_NICKNAME, nick);
+ for (j = 0; j < 10; j++)
+ {
+ fameMons->mons[i].nick[j] = nick[j];
+ }
+ gTasks[taskID].tPokesNumber++;
+ }
+ else
+ {
+ fameMons->mons[i].species = 0;
+ fameMons->mons[i].tid = 0;
+ fameMons->mons[i].personality = 0;
+ fameMons->mons[i].lvl = 0;
+ fameMons->mons[i].nick[0] = EOS;
+ }
+ }
+ sUnknown_0203931C = 0;
+ gTasks[taskID].tDisplayedPoke = 0;
+ gTasks[taskID].data[4] = 0xFF;
+ for (i = 0; i < 6; i++)
+ {
+ gTasks[taskID].tMonSpriteID(i) = 0xFF;
+ }
+ if (gTasks[taskID].data[0])
+ gTasks[taskID].func = sub_81422E8;
+ else
+ gTasks[taskID].func = sub_814217C;
+}
+
+static void sub_814217C(u8 taskID)
+{
+ u16 i;
+ struct HallofFameMons* fameMons = (struct HallofFameMons*)(&ewram[0x1C000]);
+ struct HallofFameMons* lastSavedTeam = (struct HallofFameMons*)(&ewram[0x1E000]);
+
+ if (gUnknown_02039324 == FALSE)
+ {
+ for (i = 0; i < 0x2000; i++)
+ ewram[i + 0x1E000] = 0;
+ }
+ else
+ sub_8125EC8(3);
+
+ for (i = 0; i < HALL_OF_FAME_MAX_TEAMS; i++, lastSavedTeam++)
+ {
+ if (lastSavedTeam->mons[0].species == 0)
+ break;
+ }
+ if (i >= HALL_OF_FAME_MAX_TEAMS)
+ {
+ struct HallofFameMons* r5 = (struct HallofFameMons*)(&ewram[0x1E000]);
+ struct HallofFameMons* r6 = (struct HallofFameMons*)(&ewram[0x1E000]);
+ r5++;
+ for (i = 0; i < HALL_OF_FAME_MAX_TEAMS - 1; i++, r6++, r5++)
+ {
+ *r6 = *r5;
+ }
+ lastSavedTeam--;
+ }
+ *lastSavedTeam = *fameMons;
+ MenuDrawTextWindow(2, 14, 27, 19);
+ MenuPrint(gMenuText_HOFSaving, 3, 15);
+ gTasks[taskID].func = sub_8142274;
+}
+
+static void sub_8142274(u8 taskID)
+{
+ gGameContinueCallback = sub_8141FC4;
+ TrySavingData(3);
+ PlaySE(SE_SAVE);
+ gTasks[taskID].func = sub_81422B8;
+ gTasks[taskID].tFrameCount = 32;
+}
+
+static void sub_81422B8(u8 taskID)
+{
+ if (gTasks[taskID].tFrameCount)
+ gTasks[taskID].tFrameCount--;
+ else
+ gTasks[taskID].func = sub_81422E8;
+}
+
+static void sub_81422E8(u8 taskID)
+{
+ SetUpWindowConfig(&gWindowConfig_81E7198);
+ InitMenuWindow(&gWindowConfig_81E7198);
+ gTasks[taskID].func = sub_8142320;
+}
+
+static void sub_8142320(u8 taskID)
+{
+ u8 spriteID;
+ s16 xPos, yPos, field4, field6;
+
+ struct HallofFameMons* fameMons = (struct HallofFameMons*)(&ewram[0x1C000]);
+ u16 currPokeID = gTasks[taskID].tDisplayedPoke;
+ struct HallofFameMon* currMon = &fameMons->mons[currPokeID];
+
+ if (gTasks[taskID].tPokesNumber > 3)
+ {
+ xPos = sHallOfFame_MonsFullTeamPositions[currPokeID][0];
+ yPos = sHallOfFame_MonsFullTeamPositions[currPokeID][1];
+ field4 = sHallOfFame_MonsFullTeamPositions[currPokeID][2];
+ field6 = sHallOfFame_MonsFullTeamPositions[currPokeID][3];
+ }
+ else
+ {
+ xPos = sHallOfFame_MonsHalfTeamPositions[currPokeID][0];
+ yPos = sHallOfFame_MonsHalfTeamPositions[currPokeID][1];
+ field4 = sHallOfFame_MonsHalfTeamPositions[currPokeID][2];
+ field6 = sHallOfFame_MonsHalfTeamPositions[currPokeID][3];
+ }
+
+ spriteID = HallOfFame_LoadPokemonPic(currMon->species, xPos, yPos, currPokeID, currMon->tid, currMon->personality);
+ gSprites[spriteID].data1 = field4;
+ gSprites[spriteID].data2 = field6;
+ gSprites[spriteID].data0 = 0;
+ gSprites[spriteID].callback = sub_81435DC;
+ gTasks[taskID].tMonSpriteID(currPokeID) = spriteID;
+ MenuZeroFillWindowRect(0, 14, 29, 19);
+ gTasks[taskID].func = sub_8142404;
+}
+
+static void sub_8142404(u8 taskID)
+{
+ struct HallofFameMons* fameMons = (struct HallofFameMons*)(&ewram[0x1C000]);
+ u16 currPokeID = gTasks[taskID].tDisplayedPoke;
+ struct HallofFameMon* currMon = &fameMons->mons[currPokeID];
+
+ if (gSprites[gTasks[taskID].tMonSpriteID(currPokeID)].data0 != 0)
+ {
+ if (currMon->species != SPECIES_EGG)
+ PlayCry1(currMon->species, 0);
+ HallOfFame_PrintMonInfo(currMon, 0, 14);
+ gTasks[taskID].tFrameCount = 120;
+ gTasks[taskID].func = sub_8142484;
+ }
+}
+
+static void sub_8142484(u8 taskID)
+{
+ struct HallofFameMons* fameMons = (struct HallofFameMons*)(&ewram[0x1C000]);
+ u16 currPokeID = gTasks[taskID].tDisplayedPoke;
+ struct HallofFameMon* currMon = &fameMons->mons[currPokeID];
+
+ if (gTasks[taskID].tFrameCount != 0)
+ gTasks[taskID].tFrameCount--;
+ else
+ {
+ sUnknown_0203931C |= (0x10000 << gSprites[gTasks[taskID].tMonSpriteID(currPokeID)].oam.paletteNum);
+ if (gTasks[taskID].tDisplayedPoke <= 4 && currMon[1].species != 0) // there is another pokemon to display
+ {
+ gTasks[taskID].tDisplayedPoke++;
+ BeginNormalPaletteFade(sUnknown_0203931C, 0, 12, 12, 0x735F);
+ gSprites[gTasks[taskID].tMonSpriteID(currPokeID)].oam.priority = 1;
+ gTasks[taskID].func = sub_8142320;
+ }
+ else
+ gTasks[taskID].func = sub_8142570;
+ }
+}
+
+static void sub_8142570(u8 taskID)
+{
+ u16 i;
+
+ BeginNormalPaletteFade(0xFFFF0000, 0, 0, 0, 0);
+ for (i = 0; i < 6; i++)
+ {
+ if (gTasks[taskID].tMonSpriteID(i) != 0xFF)
+ gSprites[gTasks[taskID].tMonSpriteID(i)].oam.priority = 0;
+ }
+ MenuZeroFillWindowRect(0, 14, 29, 19);
+ sub_8143068(0, 15);
+ PlaySE(SE_DENDOU);
+ gTasks[taskID].tFrameCount = 400;
+ gTasks[taskID].func = sub_8142618;
+}
+
+static void sub_8142618(u8 taskID)
+{
+ if (gTasks[taskID].tFrameCount != 0)
+ {
+ gTasks[taskID].tFrameCount--;
+ if ((gTasks[taskID].tFrameCount & 3) == 0 && gTasks[taskID].tFrameCount > 110)
+ sub_81438C4();
+ }
+ else
+ {
+ u16 i;
+ for (i = 0; i < 6; i++)
+ {
+ if (gTasks[taskID].tMonSpriteID(i) != 0xFF)
+ gSprites[gTasks[taskID].tMonSpriteID(i)].oam.priority = 1;
+ }
+ BeginNormalPaletteFade(sUnknown_0203931C, 0, 12, 12, 0x735F);
+ MenuZeroFillWindowRect(0, 14, 29, 19);
+ gTasks[taskID].tFrameCount = 7;
+ gTasks[taskID].func = sub_81426F8;
+ }
+}
+
+static void sub_81426F8(u8 taskID)
+{
+ if (gTasks[taskID].tFrameCount >= 16)
+ gTasks[taskID].func = sub_8142738;
+ else
+ {
+ gTasks[taskID].tFrameCount++;
+ REG_BLDALPHA = gTasks[taskID].tFrameCount * 256;
+ }
+}
+
+static void sub_8142738(u8 taskID)
+{
+ REG_DISPCNT = 0x1940;
+ SetUpWindowConfig(&gWindowConfig_81E71B4);
+ InitMenuWindow(&gWindowConfig_81E71B4);
+
+ gTasks[taskID].tPlayerSpriteID = HallOfFame_LoadTrainerPic(gSaveBlock2.playerGender, 120, 72, 6);
+ gTasks[taskID].tFrameCount = 120;
+ gTasks[taskID].func = sub_8142794;
+}
+
+static void sub_8142794(u8 taskID)
+{
+ if (gTasks[taskID].tFrameCount != 0)
+ gTasks[taskID].tFrameCount--;
+ else
+ {
+ if (gSprites[gTasks[taskID].tPlayerSpriteID].pos1.x != 160)
+ gSprites[gTasks[taskID].tPlayerSpriteID].pos1.x++;
+ else
+ {
+ MenuDrawTextWindow(1, 2, 15, 9);
+ HallOfFame_PrintPlayerInfo(1, 2);
+ MenuDrawTextWindow(2, 14, 27, 19);
+ MenuPrint(gMenuText_HOFCongratulations, 4, 15);
+ gTasks[taskID].func = sub_8142818;
+ }
+ }
+}
+
+static void sub_8142818(u8 taskID)
+{
+ if (gMain.newKeys & A_BUTTON)
+ {
+ FadeOutBGM(4);
+ gTasks[taskID].func = sub_8142850;
+ }
+}
+
+static void sub_8142850(u8 taskID)
+{
+ CpuSet(gPlttBufferFaded, gPlttBufferUnfaded, 0x200);
+ BeginNormalPaletteFade(-1, 8, 0, 0x10, 0);
+ gTasks[taskID].func = sub_81428A0;
+}
+
+static void sub_81428A0(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ {
+ DestroyTask(taskID);
+ SetMainCallback2(sub_81439D0);
+ }
+}
+
+#undef tDisplayedPoke
+#undef tPokesNumber
+#undef tFrameCount
+#undef tPlayerSpriteID
+#undef tMonSpriteID
+
+void sub_81428CC(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ default:
+ SetVBlankCallback(NULL);
+ sub_81433E0();
+ gMain.state = 1;
+ break;
+ case 1:
+ sub_8143570();
+ gMain.state++;
+ break;
+ case 2:
+ {
+ u16 savedIme;
+
+ SetVBlankCallback(VBlankCB_HallOfFame);
+ savedIme = REG_IME;
+ REG_IME = 0;
+ REG_IE |= 1;
+ REG_IME = savedIme;
+ REG_DISPSTAT |= 8;
+ gMain.state++;
+ }
+ break;
+ case 3:
+ {
+ struct HallofFameMons* fameMons;
+
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ REG_BLDY = 0;
+ sub_81435B8();
+
+ fameMons = (struct HallofFameMons*)(&ewram[0x1C000]);
+ fameMons->mons[0] = sDummyFameMon;
+
+ sub_80C5CD4(fameMons);
+ gMain.state++;
+ }
+ break;
+ case 4:
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+ if (sub_80C5DCC())
+ gMain.state++;
+ break;
+ case 5:
+ REG_BLDCNT = 0x3F42;
+ REG_BLDALPHA = 0x710;
+ REG_BLDY = 0;
+ CreateTask(sub_8142A28, 0);
+ SetMainCallback2(CB2_HallOfFame);
+ break;
+ }
+}
+
+#define tCurrTeamNo data[0]
+#define tCurrPageNo data[1]
+#define tCurrPokeID data[2]
+#define tPokesNo data[4]
+#define tMonSpriteID(i) data[i + 5]
+
+static void sub_8142A28(u8 taskID)
+{
+ if (sub_8125EC8(3) != 1)
+ gTasks[taskID].func = sub_8142FEC;
+ else
+ {
+ u16 *vram1, *vram2;
+
+ u16 i;
+ struct HallofFameMons* savedTeams = (struct HallofFameMons*)(&ewram[0x1E000]);
+ for (i = 0; i < HALL_OF_FAME_MAX_TEAMS; i++, savedTeams++)
+ {
+ if (savedTeams->mons[0].species == 0)
+ break;
+ }
+ if (i < HALL_OF_FAME_MAX_TEAMS)
+ gTasks[taskID].tCurrTeamNo = i - 1;
+ else
+ gTasks[taskID].tCurrTeamNo = HALL_OF_FAME_MAX_TEAMS - 1;
+ gTasks[taskID].tCurrPageNo = GetGameStat(10);
+
+ for (i = 0, vram1 = (u16*)(VRAM + 0x381A), vram2 = (u16*)(VRAM + 0x385A); i <= 16; i++)
+ {
+ *(vram1 + i) = i + 3;
+ *(vram2 + i) = i + 20;
+ }
+ SetUpWindowConfig(&gWindowConfig_81E7198);
+ InitMenuWindow(&gWindowConfig_81E7198);
+ gTasks[taskID].func = sub_8142B04;
+ }
+}
+
+static void sub_8142B04(u8 taskID)
+{
+ struct HallofFameMons* savedTeams = (struct HallofFameMons*)(&ewram[0x1E000]);
+ struct HallofFameMon* currMon;
+ u16 i;
+ u8* stringPtr;
+
+ for (i = 0; i < gTasks[taskID].tCurrTeamNo; i++)
+ savedTeams++;
+
+ currMon = &savedTeams->mons[0];
+ sUnknown_0203931C = 0;
+ gTasks[taskID].tCurrPokeID = 0;
+ gTasks[taskID].tPokesNo = 0;
+
+ for (i = 0; i < 6; i++, currMon++)
+ {
+ if (currMon->species != 0)
+ gTasks[taskID].tPokesNo++;
+ }
+
+ currMon = &savedTeams->mons[0];
+
+ for (i = 0; i < 6; i++, currMon++)
+ {
+ if (currMon->species != 0)
+ {
+ u16 spriteID;
+ s16 posX, posY;
+ if (gTasks[taskID].tPokesNo > 3)
+ {
+ posX = sHallOfFame_MonsFullTeamPositions[i][2];
+ posY = sHallOfFame_MonsFullTeamPositions[i][3];
+ }
+ else
+ {
+ posX = sHallOfFame_MonsHalfTeamPositions[i][2];
+ posY = sHallOfFame_MonsHalfTeamPositions[i][3];
+ }
+ spriteID = HallOfFame_LoadPokemonPic(currMon->species, posX, posY, i, currMon->tid, currMon->personality);
+ gSprites[spriteID].oam.priority = 1;
+ gTasks[taskID].tMonSpriteID(i) = spriteID;
+ }
+ else
+ gTasks[taskID].tMonSpriteID(i) = 0xFF;
+ }
+
+ BlendPalettes(0xFFFF0000, 0xC, 0x735F);
+
+ stringPtr = gStringVar1;
+ stringPtr = StringCopy(stringPtr, gMenuText_HOFNumber);
+ stringPtr[0] = 0xFC;
+ stringPtr[1] = 0x14;
+ stringPtr[2] = 0x6;
+ stringPtr += 3;
+ stringPtr = ConvertIntToDecimalString(stringPtr, gTasks[taskID].tCurrPageNo);
+ stringPtr[0] = 0xFC;
+ stringPtr[1] = 0x13;
+ stringPtr[2] = 0xF0;
+ stringPtr[3] = EOS;
+ MenuPrint(gStringVar1, 0, 0);
+
+ gTasks[taskID].func = sub_8142CC8;
+}
+
+static void sub_8142CC8(u8 taskID)
+{
+ struct HallofFameMons* savedTeams = (struct HallofFameMons*)(&ewram[0x1E000]);
+ struct HallofFameMon* currMon;
+ u16 i;
+ u16 currMonID;
+
+ for (i = 0; i < gTasks[taskID].tCurrTeamNo; i++)
+ savedTeams++;
+
+ for (i = 0; i < 6; i++)
+ {
+ u16 spriteID = gTasks[taskID].tMonSpriteID(i);
+ if (spriteID != 0xFF)
+ gSprites[spriteID].oam.priority = 1;
+ }
+
+ currMonID = gTasks[taskID].tMonSpriteID(gTasks[taskID].tCurrPokeID);
+ gSprites[currMonID].oam.priority = 0;
+ sUnknown_0203931C = (0x10000 << gSprites[currMonID].oam.paletteNum) ^ 0xFFFF0000;
+ BlendPalettesUnfaded(sUnknown_0203931C, 0xC, 0x735F);
+
+ currMon = &savedTeams->mons[gTasks[taskID].tCurrPokeID];
+ if (currMon->species != SPECIES_EGG)
+ {
+ StopCryAndClearCrySongs();
+ PlayCry1(currMon->species, 0);
+ }
+ HallOfFame_PrintMonInfo(currMon, 0, 14);
+
+ gTasks[taskID].func = sub_8142DF4;
+}
+
+static void sub_8142DF4(u8 taskID)
+{
+ u16 i;
+ if (gMain.newKeys & A_BUTTON)
+ {
+ if (gTasks[taskID].tCurrTeamNo != 0) // prepare another team to view
+ {
+ gTasks[taskID].tCurrTeamNo--;
+ for (i = 0; i < 6; i++)
+ {
+ u8 spriteID = gTasks[taskID].tMonSpriteID(i);
+ if (spriteID != 0xFF)
+ {
+ FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[spriteID].oam.paletteNum));
+ DestroySprite(&gSprites[spriteID]);
+ }
+ }
+ if (gTasks[taskID].tCurrPageNo != 0)
+ gTasks[taskID].tCurrPageNo--;
+ gTasks[taskID].func = sub_8142B04;
+ }
+ else // no more teams to view, turn off hall of fame PC
+ {
+ if (IsCryPlayingOrClearCrySongs())
+ {
+ StopCryAndClearCrySongs();
+ m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100);
+ }
+ gTasks[taskID].func = sub_8142F78;
+ }
+ }
+ else if (gMain.newKeys & B_BUTTON) // turn off hall of fame PC
+ {
+ if (IsCryPlayingOrClearCrySongs())
+ {
+ StopCryAndClearCrySongs();
+ m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100);
+ }
+ gTasks[taskID].func = sub_8142F78;
+ }
+ else if (gMain.newKeys & DPAD_UP && gTasks[taskID].tCurrPokeID != 0) // change poke -1
+ {
+ gTasks[taskID].tCurrPokeID--;
+ gTasks[taskID].func = sub_8142CC8;
+ }
+ else if (gMain.newKeys & DPAD_DOWN && gTasks[taskID].tCurrPokeID < gTasks[taskID].tPokesNo - 1) // change poke +1
+ {
+ gTasks[taskID].tCurrPokeID++;
+ gTasks[taskID].func = sub_8142CC8;
+ }
+}
+
+static void sub_8142F78(u8 taskID)
+{
+ struct HallofFameMons* fameMons;
+
+ CpuSet(gPlttBufferFaded, gPlttBufferUnfaded, 0x200);
+ fameMons = (struct HallofFameMons*)(&ewram[0x1C000]);
+ fameMons->mons[0] = sDummyFameMon;
+ sub_80C5E38(fameMons);
+ gTasks[taskID].func = sub_8142FCC;
+}
+
+static void sub_8142FCC(u8 taskID)
+{
+ if (sub_80C5F98())
+ {
+ DestroyTask(taskID);
+ ReturnFromHallOfFamePC();
+ }
+}
+
+static void sub_8142FEC(u8 taskID)
+{
+ MenuDrawTextWindow(2, 14, 27, 19);
+ MenuPrintMessage(gMenuText_HOFCorrupt, 3, 15);
+ gTasks[taskID].func = sub_814302C;
+}
+
+static void sub_814302C(u8 taskID)
+{
+ if (MenuUpdateWindowText() && gMain.newKeys & A_BUTTON)
+ gTasks[taskID].func = sub_8142F78;
+}
+
+#undef tCurrTeamNo
+#undef tCurrPageNo
+#undef tCurrPokeID
+#undef tPokesNo
+#undef tMonSpriteID
+
+static void sub_8143068(u8 a0, u8 a1)
+{
+ sub_8072BD8(gMenuText_WelcomeToHOFAndDexRating, 0, a1 + 1, 0xF0);
+}
+
+static void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 a1, u8 a2)
+{
+ u8* stringPtr;
+ u16 monData;
+ u16 i;
+
+ stringPtr = gStringVar1;
+ stringPtr[0] = EXT_CTRL_CODE_BEGIN;
+ stringPtr[1] = 0x13;
+ stringPtr[2] = 0x28;
+ stringPtr[3] = EOS;
+
+ if (currMon->species != SPECIES_EGG)
+ {
+ monData = SpeciesToPokedexNum(currMon->species);
+ if (monData != 0xFFFF)
+ {
+ stringPtr = StringCopy(stringPtr, gOtherText_Number2);
+ ConvertIntToDecimalStringN(stringPtr, monData, 2, 3);
+ }
+ }
+
+ MenuPrint(gStringVar1, a1 + 4, a2 + 1);
+ stringPtr = gStringVar1;
+
+ for (i = 0; i < 10 && currMon->nick[i] != EOS; stringPtr[i] = currMon->nick[i], i++) {}
+ stringPtr += i;
+ stringPtr[0] = EOS;
+
+ if (currMon->species == SPECIES_EGG)
+ {
+ stringPtr[0] = EXT_CTRL_CODE_BEGIN;
+ stringPtr[1] = 0x13;
+ stringPtr[2] = 0xA0;
+ stringPtr[3] = EOS;
+ MenuPrint(gStringVar1, a1 + 9, a2 + 1);
+ MenuZeroFillWindowRect(0, a2 + 3, 29, a2 + 4);
+ }
+ else
+ {
+
+ stringPtr[0] = EXT_CTRL_CODE_BEGIN;
+ stringPtr[1] = 0x13;
+ stringPtr[2] = 0x3E;
+ stringPtr += 3;
+
+ stringPtr[0] = CHAR_SLASH;
+ stringPtr++;
+
+ for (i = 0; i < 10 && gSpeciesNames[currMon->species][i] != EOS; stringPtr[i] = gSpeciesNames[currMon->species][i], i++) {}
+
+ stringPtr += i;
+ stringPtr[0] = CHAR_SPACE;
+ stringPtr++;
+
+ if (currMon->species != SPECIES_NIDORAN_M && currMon->species != SPECIES_NIDORAN_F)
+ {
+ switch (GetGenderFromSpeciesAndPersonality(currMon->species, currMon->personality))
+ {
+ case MON_MALE:
+ stringPtr[0] = CHAR_MALE;
+ stringPtr++;
+ break;
+ case MON_FEMALE:
+ stringPtr[0] = CHAR_FEMALE;
+ stringPtr++;
+ break;
+ }
+ }
+
+ stringPtr[0] = EXT_CTRL_CODE_BEGIN;
+ stringPtr[1] = 0x13;
+ stringPtr[2] = 0xA0;
+ stringPtr[3] = EOS;
+
+ MenuPrint(gStringVar1, a1 + 9, a2 + 1);
+
+ monData = currMon->lvl;
+
+ stringPtr = StringCopy(gStringVar1, gOtherText_Level3);
+
+ stringPtr[0] = EXT_CTRL_CODE_BEGIN;
+ stringPtr[1] = 0x14;
+ stringPtr[2] = 6;
+ stringPtr += 3;
+
+ stringPtr = ConvertIntToDecimalStringN(stringPtr, monData, 0, 3);
+
+ stringPtr[0] = EXT_CTRL_CODE_BEGIN;
+ stringPtr[1] = 0x13;
+ stringPtr[2] = 0x30;
+ stringPtr[3] = EOS;
+
+ MenuPrint(gStringVar1, a1 + 7, a2 + 3);
+
+ monData = currMon->tid;
+
+ stringPtr = StringCopy(gStringVar1, gOtherText_IDNumber);
+ ConvertIntToDecimalStringN(stringPtr, monData, 2, 5);
+
+ MenuPrint(gStringVar1, a1 + 13, a2 + 3);
+ }
+}
+
+#define ByteRead16(ptr) ((ptr)[0] | ((ptr)[1] << 8))
+
+static void HallOfFame_PrintPlayerInfo(u8 a0, u8 a1)
+{
+ u8* stringPtr;
+ u16 visibleTid;
+
+ MenuPrint(gOtherText_Name, a0 + 1, a1 + 1);
+ MenuPrint_RightAligned(gSaveBlock2.playerName, a0 + 14, a1 + 1);
+
+ MenuPrint(gOtherText_IDNumber2, a0 + 1, a1 + 3);
+ visibleTid = ByteRead16(gSaveBlock2.playerTrainerId);
+ ConvertIntToDecimalStringN(gStringVar1, visibleTid, 2, 5);
+
+ MenuPrint_RightAligned(gStringVar1, a0 + 14, a1 + 3);
+ MenuPrint(gMainMenuString_Time, a0 + 1, a1 + 5);
+
+ stringPtr = ConvertIntToDecimalString(gStringVar1, gSaveBlock2.playTimeHours);
+ stringPtr[0] = CHAR_SPACE;
+ stringPtr[1] = CHAR_COLON;
+ stringPtr[2] = CHAR_SPACE;
+ stringPtr += 3;
+
+ stringPtr = ConvertIntToDecimalStringN(stringPtr, gSaveBlock2.playTimeMinutes, 2, 2);
+ stringPtr[0] = EOS;
+
+ MenuPrint_RightAligned(gStringVar1, a0 + 14, a1 + 5);
+}
+
+static void sub_81433E0(void)
+{
+ u32 offsetWrite, offsetWrite2, offsetWrite3, offsetWrite4;
+ u32 size, size2, size3, size4;
+ u16 i;
+
+ REG_DISPCNT = 0;
+
+ REG_BG0CNT = 0;
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+
+ REG_BG1CNT = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+
+ REG_BG2CNT = 0;
+ REG_BG2HOFS = 0;
+ REG_BG2VOFS = 0;
+
+ REG_BG3CNT = 0;
+ REG_BG3HOFS = 0;
+ REG_BG3VOFS = 0;
+
+ offsetWrite = (VRAM);
+ size = 0x18000;
+ while (TRUE)
+ {
+ DmaFill16(3, 0, offsetWrite, 0x1000);
+ offsetWrite += 0x1000;
+ size -= 0x1000;
+ if (size <= 0x1000)
+ {
+ DmaFill16(3, 0, offsetWrite, size);
+ break;
+ }
+ }
+
+ offsetWrite2 = OAM;
+ size2 = OAM_SIZE;
+ DmaFill32(3, 0, offsetWrite2, size2);
+
+ offsetWrite3 = PLTT;
+ size3 = PLTT_SIZE;
+ DmaFill16(3, 0, offsetWrite3, size3);
+
+ LZ77UnCompVram(gHallOfFame_Gfx, (void*)(VRAM));
+
+ for (i = 0; i < 64; i++)
+ {
+ *((u16*)(VRAM + 0x3800) + i) = 1;
+ }
+ for (i = 0; i < 192; i++)
+ {
+ *((u16*)(VRAM + 0x3B80) + i) = 1;
+ }
+ for (i = 0; i < 1024; i++)
+ {
+ *((u16*)(VRAM + 0x3000) + i) = 2;
+ }
+
+ offsetWrite4 = (u32)(&ewram[0]);
+ size4 = 0x4000;
+ while (TRUE)
+ {
+ DmaFill16(3, 0, offsetWrite4, 0x1000);
+ offsetWrite4 += 0x1000;
+ size4 -= 0x1000;
+ if (size4 <= 0x1000)
+ {
+ DmaFill16(3, 0, offsetWrite4, size4);
+ break;
+ }
+ }
+
+ ResetPaletteFade();
+ LoadPalette(gHallOfFame_Pal, 0, 0x20);
+}
+
+static void sub_8143570(void)
+{
+ remove_some_task();
+ ResetTasks();
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ gReservedSpritePaletteCount = 8;
+ LoadCompressedObjectPic(&sHallOfFame_ConfettiSpriteSheet);
+ LoadCompressedObjectPalette(&sHallOfFame_ConfettiSpritePalette);
+ SetUpWindowConfig(&gWindowConfig_81E71B4);
+ InitMenuWindow(&gWindowConfig_81E71B4);
+}
+
+static void sub_81435B8(void)
+{
+ REG_BG1CNT = 0x700;
+ REG_BG3CNT = 0x603;
+ REG_DISPCNT = 0x1B40;
+}
+
+static void sub_81435DC(struct Sprite* sprite)
+{
+ u32 spritePos = *(u32*)(&sprite->pos1);
+ u32 dataPos = *(u32*)(&sprite->data1);
+ if (spritePos != dataPos)
+ {
+ if (sprite->pos1.x < sprite->data1)
+ sprite->pos1.x += 15;
+ if (sprite->pos1.x > sprite->data1)
+ sprite->pos1.x -= 15;
+
+ if (sprite->pos1.y < sprite->data2)
+ sprite->pos1.y += 10;
+ if (sprite->pos1.y > sprite->data2)
+ sprite->pos1.y -= 10;
+ }
+ else
+ {
+ sprite->data0 = 1;
+ sprite->callback = SpriteCB_HallOfFame_Dummy;
+ }
+}
+
+static void SpriteCB_HallOfFame_Dummy(struct Sprite* sprite)
+{
+
+}
+
+void sub_8143648(u16 paletteTag, u8 animID)
+{
+ gUnknown_02024E8C = sUnknown_0840B6B8;
+ gUnknown_02024E8C.paletteTag = paletteTag;
+ gUnknown_02024E8C.images = sUnknown_0840B69C[animID];
+ gUnknown_02024E8C.anims = gSpriteAnimTable_81E7C64;
+}
+
+void sub_8143680(u16 paletteTag, u8 animID)
+{
+ gUnknown_02024E8C = sUnknown_0840B6B8;
+ gUnknown_02024E8C.paletteTag = paletteTag;
+ gUnknown_02024E8C.images = sUnknown_0840B69C[animID];
+ gUnknown_02024E8C.anims = gUnknown_081EC2A4[0];
+}
+
+static u32 HallOfFame_LoadPokemonPic(u16 species, s16 posX, s16 posY, u16 pokeID, u32 tid, u32 pid)
+{
+ u8 spriteID;
+ const u8* pokePal;
+
+ LoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, 0x2000000, gUnknown_0840B5A0[pokeID], species, pid, 1);
+
+ pokePal = species_and_otid_get_pal(species, tid, pid);
+ LoadCompressedPalette(pokePal, 16 * pokeID + 256, 0x20);
+
+ sub_8143648(pokeID, pokeID);
+ spriteID = CreateSprite(&gUnknown_02024E8C, posX, posY, 10 - pokeID);
+ gSprites[spriteID].oam.paletteNum = pokeID;
+ return spriteID;
+}
+
+static u32 HallOfFame_LoadTrainerPic(u16 trainerPicID, s16 posX, s16 posY, u16 a3)
+{
+ u8 spriteID;
+
+ DecompressPicFromTable_2(&gTrainerFrontPicTable[trainerPicID], gTrainerFrontPicCoords[trainerPicID].coords, gTrainerFrontPicCoords[trainerPicID].y_offset, (void*) 0x2000000, gUnknown_0840B5A0[a3], trainerPicID);
+
+ LoadCompressedPalette(gTrainerFrontPicPaletteTable[trainerPicID].data, 16 * a3 + 256, 0x20);
+ sub_8143680(a3, a3);
+
+ spriteID = CreateSprite(&gUnknown_02024E8C, posX, posY, 1);
+ gSprites[spriteID].oam.paletteNum = a3;
+
+ return spriteID;
+}
+
+static void sub_814386C(struct Sprite* sprite)
+{
+ if (sprite->pos2.y > 120)
+ DestroySprite(sprite);
+ else
+ {
+ u16 rand;
+ u8 tableID;
+
+ sprite->pos2.y++;
+ sprite->pos2.y += sprite->data1;
+
+ tableID = sprite->data0;
+ rand = (Random() % 4) + 8;
+ sprite->pos2.x = rand * gSineTable[tableID] / 256;
+
+ sprite->data0 += 4;
+ }
+}
+
+static bool8 sub_81438C4(void)
+{
+ u8 spriteID;
+ struct Sprite* sprite;
+
+ s16 posX = Random() % 240;
+ s16 posY = -(Random() % 8);
+
+ spriteID = CreateSprite(&sSpriteTemplate_840B7A4, posX, posY, 0);
+ sprite = &gSprites[spriteID];
+
+ StartSpriteAnim(sprite, Random() % 17);
+
+ if (Random() & 3)
+ sprite->data1 = 0;
+ else
+ sprite->data1 = 1;
+
+ return 0;
+}
diff --git a/src/hof_pc.c b/src/hof_pc.c
index 4646d171c..aeeb7fe17 100644
--- a/src/hof_pc.c
+++ b/src/hof_pc.c
@@ -2,7 +2,7 @@
#include "hall_of_fame.h"
#include "main.h"
#include "palette.h"
-#include "rom4.h"
+#include "overworld.h"
#include "script.h"
#include "script_menu.h"
#include "task.h"
@@ -30,8 +30,8 @@ static void ReshowPCMenuAfterHallOfFamePC(void)
ScriptContext2_Enable();
sub_8053E90();
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
- TryCreatePCMenu();
- sub_80B5838();
+ ScrSpecial_CreatePCMenu();
+ ScriptMenu_DisplayPCStartupPrompt();
CreateTask(Task_WaitForPaletteFade, 10);
}
diff --git a/src/intro_credits_graphics.c b/src/intro_credits_graphics.c
new file mode 100755
index 000000000..cd0589af8
--- /dev/null
+++ b/src/intro_credits_graphics.c
@@ -0,0 +1,532 @@
+#include "global.h"
+#include "gba/m4a_internal.h"
+#include "intro.h"
+#include "data2.h"
+#include "decompress.h"
+#include "hall_of_fame.h"
+#include "intro_credits_graphics.h"
+#include "libgncmultiboot.h"
+#include "link.h"
+#include "m4a.h"
+#include "main.h"
+#include "new_game.h"
+#include "palette.h"
+#include "rng.h"
+#include "save.h"
+#include "songs.h"
+#include "sound.h"
+#include "species.h"
+#include "task.h"
+#include "title_screen.h"
+#include "trig.h"
+#include "unknown_task.h"
+
+// define register constants for the inline asm
+asm(".include \"constants/gba_constants.inc\"\n");
+
+struct UnknownStruct1
+{
+ u8 var0_0:4;
+ u8 var0_4:2;
+ u8 var0_6:2;
+ u8 var1;
+ u8 var2;
+ u8 var3;
+ u16 var4;
+};
+
+extern u8 gUnknown_0841225C;
+extern u8 gUnknown_084126DC;
+extern u8 gUnknown_084121FC;
+extern u8 gUnknown_084128D8;
+extern u8 gUnknown_08412EB4;
+extern u8 gUnknown_08412818;
+extern u8 gUnknown_08413184;
+extern u8 gUnknown_08413340;
+extern u8 gUnknown_084139C8;
+extern u8 gUnknown_08413300;
+extern u8 gUnknown_08413CCC;
+
+extern const struct SpriteTemplate gSpriteTemplate_8416B3C;
+const extern struct CompressedSpriteSheet gUnknown_08416B54;
+const extern struct CompressedSpriteSheet gUnknown_08416BDC;
+
+extern u16 gUnknown_02039358;
+extern s16 gUnknown_0203935A;
+extern s16 gUnknown_0203935C;
+extern u8 gReservedSpritePaletteCount;
+
+void sub_8149248();
+void sub_8149264();
+
+void load_intro_part2_graphics(u8 a)
+{
+ LZ77UnCompVram(&gUnknown_0841225C, (void *)(VRAM + 0x4000));
+ LZ77UnCompVram(&gUnknown_084126DC, (void *)(VRAM + 0x7800));
+ LoadPalette(&gUnknown_084121FC, 240, 32);
+ switch (a)
+ {
+ case 0:
+ default:
+ LZ77UnCompVram(&gUnknown_084128D8, (void *)(VRAM));
+ LZ77UnCompVram(&gUnknown_08412EB4, (void *)(VRAM + 0x3000));
+ LoadPalette(&gUnknown_08412818, 0, 96);
+ LoadCompressedObjectPic(&gUnknown_08416B54);
+ LoadPalette(&gUnknown_08413184, 256, 32);
+ sub_8149248();
+ break;
+ case 1:
+ LZ77UnCompVram(&gUnknown_08413340, (void *)(VRAM));
+ LZ77UnCompVram(&gUnknown_084139C8, (void *)(VRAM + 0x3000));
+ LoadPalette(&gUnknown_08413300, 0, 32);
+ LoadCompressedObjectPic(&gUnknown_08416BDC);
+ LoadPalette(&gUnknown_08413CCC, 256, 32);
+ sub_8149264();
+ break;
+ }
+ gUnknown_0203935C = 0;
+ gReservedSpritePaletteCount = 8;
+}
+
+void sub_8148C78(u8 a)
+{
+ if (a == 1)
+ {
+ REG_BG3CNT = 0x603;
+ REG_BG2CNT = 0x702;
+ REG_BG1CNT = 0xF05;
+ REG_DISPCNT = 0x1E40;
+ }
+ else
+ {
+ REG_BG3CNT = 0x603;
+ REG_BG2CNT = 0x702;
+ REG_BG1CNT = 0xF05;
+ REG_DISPCNT = 0x1E40;
+ }
+}
+
+extern u8 gUnknown_084131C4;
+extern u8 gUnknown_084131A4;
+extern u8 gUnknown_0841221C;
+extern u8 gUnknown_08412878;
+extern u8 gUnknown_08413320;
+extern u8 gUnknown_0841223C;
+extern u8 gUnknown_08413E78;
+extern u8 gUnknown_08414084;
+extern u8 gUnknown_08413E38;
+const extern struct CompressedSpriteSheet gUnknown_08416C70;
+extern u8 gUnknown_08414064;
+extern struct UnknownStruct1 gUnknown_08416B94;
+extern struct UnknownStruct1 gUnknown_08416C10;
+extern struct UnknownStruct1 gUnknown_08416C8C;
+const extern union AnimCmd *const gSpriteAnimTable_8416B84;
+const extern union AnimCmd *const gSpriteAnimTable_8416C04;
+const extern union AnimCmd *const gSpriteAnimTable_8416C88;
+const extern struct SpriteTemplate gSpriteTemplate_8416CDC;
+const extern struct SpriteTemplate gSpriteTemplate_Brendan;
+const extern struct SpriteTemplate gSpriteTemplate_8416CF4;
+const extern struct SpriteTemplate gSpriteTemplate_May;
+const extern struct SpriteTemplate gSpriteTemplate_8416D7C;
+const extern struct SpriteTemplate gSpriteTemplate_8416D94;
+
+void sub_8149280();
+
+void sub_8148CB0(u8 a)
+{
+ LZ77UnCompVram(&gUnknown_0841225C, (void *)(VRAM + 0x4000));
+ LZ77UnCompVram(&gUnknown_084126DC, (void *)(VRAM + 0x7800));
+ switch (a)
+ {
+ case 0:
+ default:
+ LoadPalette(&gUnknown_084121FC, 240, 32);
+ LZ77UnCompVram(&gUnknown_084128D8, (void *)(VRAM));
+ LZ77UnCompVram(&gUnknown_08412EB4, (void *)(VRAM + 0x3000));
+ LoadPalette(&gUnknown_08412818, 0, 96);
+ LoadCompressedObjectPic(&gUnknown_08416B54);
+ LZ77UnCompVram(&gUnknown_084131C4, (void *)(VRAM + 0x10000));
+ LoadPalette(&gUnknown_08413184, 256, 32);
+ sub_8149248();
+ break;
+ case 1:
+ LoadPalette(&gUnknown_0841221C, 240, 32);
+ LZ77UnCompVram(&gUnknown_084128D8, (void *)(VRAM));
+ LZ77UnCompVram(&gUnknown_08412EB4, (void *)(VRAM + 0x3000));
+ LoadPalette(&gUnknown_08412878, 0, 96);
+ LoadCompressedObjectPic(&gUnknown_08416B54);
+ LZ77UnCompVram(&gUnknown_084131C4, (void *)(VRAM + 0x10000));
+ LoadPalette(&gUnknown_084131A4, 256, 32);
+ sub_8149248();
+ break;
+ case 2:
+ case 3:
+ LoadPalette(&gUnknown_0841221C, 240, 32);
+ LZ77UnCompVram(&gUnknown_08413340, (void *)(VRAM));
+ LZ77UnCompVram(&gUnknown_084139C8, (void *)(VRAM + 0x3000));
+ LoadPalette(&gUnknown_08413320, 0, 32);
+ LoadCompressedObjectPic(&gUnknown_08416BDC);
+ LoadPalette(&gUnknown_08413320, 256, 32);
+ sub_8149264();
+ break;
+ case 4:
+ LoadPalette(&gUnknown_0841223C, 240, 32);
+ LZ77UnCompVram(&gUnknown_08413E78, (void *)(VRAM));
+ LZ77UnCompVram(&gUnknown_08414084, (void *)(VRAM + 0x3000));
+ LoadPalette(&gUnknown_08413E38, 0, 64);
+ LoadCompressedObjectPic(&gUnknown_08416C70);
+ LoadPalette(&gUnknown_08414064, 256, 32);
+ sub_8149280();
+ break;
+ }
+ gReservedSpritePaletteCount = 8;
+ gUnknown_0203935C = 0;
+}
+
+void sub_8148E90(u8 a)
+{
+ REG_BG3CNT = 0x603;
+ REG_BG2CNT = 0x702;
+ REG_BG1CNT = 0xF05;
+ REG_DISPCNT = 0x1F40;
+}
+
+u8 sub_8148EC0(u8 a, u16 b, u16 c, u16 d)
+{
+ u8 taskId = CreateTask(&sub_8148F3C, 0);
+
+ gTasks[taskId].data[0] = a;
+ gTasks[taskId].data[1] = b;
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[3] = 0;
+ gTasks[taskId].data[4] = c;
+ gTasks[taskId].data[5] = 0;
+ gTasks[taskId].data[6] = 0;
+ gTasks[taskId].data[7] = d;
+ gTasks[taskId].data[8] = 8;
+ gTasks[taskId].data[9] = 0;
+ sub_8148F3C(taskId);
+ return taskId;
+}
+
+#ifdef NONMATCHING
+void sub_8148F3C(u8 taskId)
+{
+ register u32 r4 asm("r4");
+ s32 r2;
+
+ r4 = (u16)gTasks[taskId].data[1] << 16;
+ if (r4 != 0)
+ {
+ r2 = (gTasks[taskId].data[2] << 16) + (u16)gTasks[taskId].data[3] - (r4 >> 12);
+ gTasks[taskId].data[2] = r2 >> 16;
+ gTasks[taskId].data[3] = r2;
+ REG_BG1HOFS = gTasks[taskId].data[2];
+ REG_BG1VOFS = gUnknown_0203935A + gUnknown_02039358;
+ }
+
+ r4 = (u16)gTasks[taskId].data[4] << 16;
+ if (r4 != 0)
+ {
+ r2 = (gTasks[taskId].data[5] << 16) + (u16)gTasks[taskId].data[6] - (r4 >> 12);
+ gTasks[taskId].data[5] = r2 >> 16;
+ gTasks[taskId].data[3] = r2;
+ REG_BG2HOFS = gTasks[taskId].data[5];
+ if (gTasks[taskId].data[0] != 0)
+ REG_BG2VOFS = gUnknown_0203935A + gUnknown_02039358;
+ else
+ REG_BG2VOFS = gUnknown_02039358;
+ }
+
+ r4 = (u16)gTasks[taskId].data[7] << 16;
+ if (r4 != 0)
+ {
+ r2 = (gTasks[taskId].data[8] << 16) + (u16)gTasks[taskId].data[9] - (r4 >> 12);;
+ gTasks[taskId].data[8] = r2 >> 16;
+ gTasks[taskId].data[9] = r2;
+ REG_BG3HOFS = gTasks[taskId].data[8];
+ REG_BG3VOFS = gUnknown_02039358;
+ }
+}
+#else
+__attribute__((naked))
+void sub_8148F3C(u8 taskId)
+{
+ asm(".syntax unified\n\
+ push {r4-r6,lr}\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ ldr r1, _08148FB4 @ =gTasks\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r3, r0, r1\n\
+ ldrh r0, [r3, 0xA]\n\
+ lsls r4, r0, 16\n\
+ adds r6, r1, 0\n\
+ cmp r4, 0\n\
+ beq _08148F7C\n\
+ movs r1, 0xC\n\
+ ldrsh r0, [r3, r1]\n\
+ lsls r0, 16\n\
+ ldrh r1, [r3, 0xE]\n\
+ adds r2, r0, r1\n\
+ lsrs r0, r4, 12\n\
+ subs r2, r0\n\
+ asrs r1, r2, 16\n\
+ strh r1, [r3, 0xC]\n\
+ strh r2, [r3, 0xE]\n\
+ ldr r0, _08148FB8 @ =REG_BG1HOFS\n\
+ strh r1, [r0]\n\
+ ldr r2, _08148FBC @ =REG_BG1VOFS\n\
+ ldr r1, _08148FC0 @ =gUnknown_02039358\n\
+ ldr r0, _08148FC4 @ =gUnknown_0203935A\n\
+ ldrh r0, [r0]\n\
+ ldrh r1, [r1]\n\
+ adds r0, r1\n\
+ strh r0, [r2]\n\
+_08148F7C:\n\
+ ldrh r0, [r3, 0x10]\n\
+ lsls r4, r0, 16\n\
+ cmp r4, 0\n\
+ beq _08148FD8\n\
+ movs r1, 0x12\n\
+ ldrsh r0, [r3, r1]\n\
+ lsls r0, 16\n\
+ ldrh r1, [r3, 0x14]\n\
+ adds r2, r0, r1\n\
+ lsrs r0, r4, 12\n\
+ subs r2, r0\n\
+ asrs r1, r2, 16\n\
+ strh r1, [r3, 0x12]\n\
+ strh r2, [r3, 0x14]\n\
+ ldr r0, _08148FC8 @ =REG_BG2HOFS\n\
+ strh r1, [r0]\n\
+ movs r1, 0x8\n\
+ ldrsh r0, [r3, r1]\n\
+ cmp r0, 0\n\
+ beq _08148FD0\n\
+ ldr r2, _08148FCC @ =REG_BG2VOFS\n\
+ ldr r1, _08148FC0 @ =gUnknown_02039358\n\
+ ldr r0, _08148FC4 @ =gUnknown_0203935A\n\
+ ldrh r0, [r0]\n\
+ ldrh r1, [r1]\n\
+ adds r0, r1\n\
+ strh r0, [r2]\n\
+ b _08148FD8\n\
+ .align 2, 0\n\
+_08148FB4: .4byte gTasks\n\
+_08148FB8: .4byte REG_BG1HOFS\n\
+_08148FBC: .4byte REG_BG1VOFS\n\
+_08148FC0: .4byte gUnknown_02039358\n\
+_08148FC4: .4byte gUnknown_0203935A\n\
+_08148FC8: .4byte REG_BG2HOFS\n\
+_08148FCC: .4byte REG_BG2VOFS\n\
+_08148FD0:\n\
+ ldr r0, _08149010 @ =REG_BG2VOFS\n\
+ ldr r1, _08149014 @ =gUnknown_02039358\n\
+ ldrh r1, [r1]\n\
+ strh r1, [r0]\n\
+_08148FD8:\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r3, r0, r6\n\
+ ldrh r0, [r3, 0x16]\n\
+ lsls r4, r0, 16\n\
+ cmp r4, 0\n\
+ beq _08149008\n\
+ movs r1, 0x18\n\
+ ldrsh r0, [r3, r1]\n\
+ lsls r0, 16\n\
+ ldrh r1, [r3, 0x1A]\n\
+ adds r2, r0, r1\n\
+ lsrs r0, r4, 12\n\
+ subs r2, r0\n\
+ asrs r1, r2, 16\n\
+ strh r1, [r3, 0x18]\n\
+ strh r2, [r3, 0x1A]\n\
+ ldr r0, _08149018 @ =REG_BG3HOFS\n\
+ strh r1, [r0]\n\
+ ldr r1, _0814901C @ =REG_BG3VOFS\n\
+ ldr r0, _08149014 @ =gUnknown_02039358\n\
+ ldrh r0, [r0]\n\
+ strh r0, [r1]\n\
+_08149008:\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_08149010: .4byte REG_BG2VOFS\n\
+_08149014: .4byte gUnknown_02039358\n\
+_08149018: .4byte REG_BG3HOFS\n\
+_0814901C: .4byte REG_BG3VOFS\n\
+ .syntax divided\n");
+}
+#endif
+
+void sub_8149020(u8 mode)
+{
+ u16 var1;
+ u16 var2;
+ switch (mode)
+ {
+ case 0:
+ default:
+ /* stuff */
+ if (gMain.vblankCounter1 & 3 || gPaletteFade.active)
+ break;
+ if (gMain.vblankCounter1 & 4)
+ {
+ var1 = gPlttBufferUnfaded[9];
+ var2 = gPlttBufferUnfaded[10];
+ }
+ else
+ {
+ var1 = gPlttBufferUnfaded[10];
+ var2 = gPlttBufferUnfaded[9];
+ }
+ LoadPalette(&var1, 9, 2);
+ LoadPalette(&var2, 10, 2);
+ break;
+ case 2:
+ if (gMain.vblankCounter1 & 3 || gPaletteFade.active)
+ break;
+ if (gMain.vblankCounter1 & 4)
+ {
+ var1 = 0x3D27;
+ var2 = 0x295;
+ }
+ else
+ {
+ var1 = 0x31C;
+ var2 = 0x3D27;
+ }
+ LoadPalette(&var1, 12, 2);
+ LoadPalette(&var2, 13, 2);
+ break;
+ case 1:
+ break;
+ }
+}
+
+void sub_814910C(struct Sprite *sprite)
+{
+ if (gUnknown_0203935C)
+ {
+ DestroySprite(sprite);
+ }
+ else
+ {
+ s32 var = ((sprite->pos1.x << 16) | (u16)sprite->data2) + (u16)sprite->data1;
+ sprite->pos1.x = var >> 16;
+ sprite->data2 = var;
+ if (sprite->pos1.x > 255) sprite->pos1.x = 0xFFE0;
+ if (sprite->data0)
+ {
+ sprite->pos2.y = -(gUnknown_02039358 + gUnknown_0203935A);
+ }
+ else
+ {
+ sprite->pos2.y = -gUnknown_02039358;
+ }
+ }
+}
+
+void sub_8149174(u8 a, struct UnknownStruct1 *b, const union AnimCmd *const *c, u8 d)
+{
+ u8 i;
+
+ for(i = 0; i < d; i++)
+ {
+ u8 sprite = CreateSprite(&gSpriteTemplate_8416B3C, b[i].var1, b[i].var2, b[i].var3);
+ CalcCenterToCornerVec(&gSprites[sprite], b[i].var0_4, b[i].var0_6, 0);
+ gSprites[sprite].oam.priority = 3;
+ gSprites[sprite].oam.shape = b[i].var0_4;
+ gSprites[sprite].oam.size = b[i].var0_6;
+ gSprites[sprite].oam.paletteNum = 0;
+ gSprites[sprite].anims = c;
+ StartSpriteAnim(&gSprites[sprite], b[i].var0_0);
+ gSprites[sprite].data0 = a;
+ gSprites[sprite].data1 = b[i].var4;
+ gSprites[sprite].data2 = 0;
+ }
+}
+
+void sub_8149248()
+{
+ sub_8149174(0, &gUnknown_08416B94, &gSpriteAnimTable_8416B84, 9);
+}
+
+void sub_8149264()
+{
+ sub_8149174(1, &gUnknown_08416C10, &gSpriteAnimTable_8416C04, 12);
+}
+
+void sub_8149280()
+{
+ sub_8149174(1, &gUnknown_08416C8C, &gSpriteAnimTable_8416C88, 6);
+}
+
+void nullsub_82()
+{
+}
+
+void sub_81492A0(struct Sprite* sprite)
+{
+ sprite->invisible = gSprites[sprite->data0].invisible;
+ sprite->pos1.x = gSprites[sprite->data0].pos1.x;
+ sprite->pos1.y = gSprites[sprite->data0].pos1.y + 8;
+ sprite->pos2.x = gSprites[sprite->data0].pos2.x;
+ sprite->pos2.y = gSprites[sprite->data0].pos2.y;
+}
+
+
+
+u8 intro_create_brendan_sprite(s16 a, s16 b)
+{
+ u8 sprite = CreateSprite(&gSpriteTemplate_8416CDC, a, b, 0);
+ u8 brendan = CreateSprite(&gSpriteTemplate_Brendan, a, b + 8, 1);
+ gSprites[brendan].data0 = sprite;
+ return sprite;
+}
+
+u8 intro_create_may_sprite(s16 a, s16 b)
+{
+ u8 sprite = CreateSprite(&gSpriteTemplate_8416CF4, a, b, 0);
+ u8 may = CreateSprite(&gSpriteTemplate_May, a, b + 8, 1);
+ gSprites[may].data0 = sprite;
+ return sprite;
+}
+
+void nullsub_83()
+{
+}
+
+void sub_81493C4(struct Sprite* sprite)
+{
+ sprite->invisible = gSprites[sprite->data0].invisible;
+ sprite->pos1.y = gSprites[sprite->data0].pos1.y;
+ sprite->pos2.x = gSprites[sprite->data0].pos2.x;
+ sprite->pos2.y = gSprites[sprite->data0].pos2.y;
+}
+
+u8 intro_create_latios_sprite(s16 a, s16 b)
+{
+ u8 sprite = CreateSprite(&gSpriteTemplate_8416D7C, a - 32, b, 2);
+ u8 latios = CreateSprite(&gSpriteTemplate_8416D7C, a + 32, b, 2);
+ gSprites[latios].data0 = sprite;
+ StartSpriteAnim(&gSprites[latios], 1);
+ gSprites[latios].callback = &sub_81493C4;
+ return sprite;
+}
+
+u8 intro_create_latias_sprite(s16 a, s16 b)
+{
+ u8 sprite = CreateSprite(&gSpriteTemplate_8416D94, a - 32, b, 2);
+ u8 latios = CreateSprite(&gSpriteTemplate_8416D94, a + 32, b, 2);
+ gSprites[latios].data0 = sprite;
+ StartSpriteAnim(&gSprites[latios], 1);
+ gSprites[latios].callback = &sub_81493C4;
+ return sprite;
+}
diff --git a/src/item_menu.c b/src/item_menu.c
index 350ba3db4..891eb135f 100644
--- a/src/item_menu.c
+++ b/src/item_menu.c
@@ -23,7 +23,7 @@
#include "party_menu.h"
#include "player_pc.h"
#include "pokemon_menu.h"
-#include "rom4.h"
+#include "overworld.h"
#include "script.h"
#include "songs.h"
#include "sound.h"
@@ -56,14 +56,6 @@ extern void sub_804E990(u8);
extern void sub_802E424(u8);
extern void sub_8064E2C(void);
-struct PocketScrollState
-{
- u8 cursorPos;
- u8 scrollTop;
- u8 numSlots;
- u8 cursorMax;
-};
-
struct UnknownStruct2
{
u8 unk0;
@@ -2321,164 +2313,164 @@ __attribute__((naked))
static void sub_80A5600(u8 taskId)
{
asm(".syntax unified\n\
- push {r4,r5,lr}\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- movs r5, 0\n\
- ldr r2, _080A563C @ =gMain\n\
- ldrh r0, [r2, 0x30]\n\
- movs r1, 0xF0\n\
- ands r1, r0\n\
- cmp r1, 0x40\n\
- bne _080A5648\n\
- ldr r4, _080A5640 @ =sPopupMenuSelection\n\
- ldrb r0, [r4]\n\
- cmp r0, 0\n\
- bne _080A561E\n\
- b _080A5736\n\
+ push {r4,r5,lr}\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ movs r5, 0\n\
+ ldr r2, _080A563C @ =gMain\n\
+ ldrh r0, [r2, 0x30]\n\
+ movs r1, 0xF0\n\
+ ands r1, r0\n\
+ cmp r1, 0x40\n\
+ bne _080A5648\n\
+ ldr r4, _080A5640 @ =sPopupMenuSelection\n\
+ ldrb r0, [r4]\n\
+ cmp r0, 0\n\
+ bne _080A561E\n\
+ b _080A5736\n\
_080A561E:\n\
- adds r1, r0, 0\n\
- ldr r0, _080A5644 @ =sPopupMenuActionList\n\
- ldr r0, [r0]\n\
- adds r1, r0\n\
- subs r1, 0x1\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x8\n\
- bne _080A5630\n\
- b _080A5736\n\
+ adds r1, r0, 0\n\
+ ldr r0, _080A5644 @ =sPopupMenuActionList\n\
+ ldr r0, [r0]\n\
+ adds r1, r0\n\
+ subs r1, 0x1\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0x8\n\
+ bne _080A5630\n\
+ b _080A5736\n\
_080A5630:\n\
- movs r0, 0x5\n\
- bl PlaySE\n\
- movs r0, 0x1\n\
- negs r0, r0\n\
- b _080A56D2\n\
- .align 2, 0\n\
+ movs r0, 0x5\n\
+ bl PlaySE\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ b _080A56D2\n\
+ .align 2, 0\n\
_080A563C: .4byte gMain\n\
_080A5640: .4byte sPopupMenuSelection\n\
_080A5644: .4byte sPopupMenuActionList\n\
_080A5648:\n\
- cmp r1, 0x80\n\
- bne _080A5680\n\
- ldr r4, _080A5674 @ =sPopupMenuSelection\n\
- ldrb r1, [r4]\n\
- ldr r0, _080A5678 @ =gUnknown_02038564\n\
- ldrb r0, [r0]\n\
- subs r0, 0x1\n\
- cmp r1, r0\n\
- beq _080A5736\n\
- cmp r1, 0x2\n\
- beq _080A5736\n\
- ldr r0, _080A567C @ =sPopupMenuActionList\n\
- ldr r0, [r0]\n\
- adds r0, r1, r0\n\
- ldrb r0, [r0, 0x1]\n\
- cmp r0, 0x8\n\
- beq _080A5736\n\
- movs r0, 0x5\n\
- bl PlaySE\n\
- movs r0, 0x1\n\
- b _080A56D2\n\
- .align 2, 0\n\
+ cmp r1, 0x80\n\
+ bne _080A5680\n\
+ ldr r4, _080A5674 @ =sPopupMenuSelection\n\
+ ldrb r1, [r4]\n\
+ ldr r0, _080A5678 @ =gUnknown_02038564\n\
+ ldrb r0, [r0]\n\
+ subs r0, 0x1\n\
+ cmp r1, r0\n\
+ beq _080A5736\n\
+ cmp r1, 0x2\n\
+ beq _080A5736\n\
+ ldr r0, _080A567C @ =sPopupMenuActionList\n\
+ ldr r0, [r0]\n\
+ adds r0, r1, r0\n\
+ ldrb r0, [r0, 0x1]\n\
+ cmp r0, 0x8\n\
+ beq _080A5736\n\
+ movs r0, 0x5\n\
+ bl PlaySE\n\
+ movs r0, 0x1\n\
+ b _080A56D2\n\
+ .align 2, 0\n\
_080A5674: .4byte sPopupMenuSelection\n\
_080A5678: .4byte gUnknown_02038564\n\
_080A567C: .4byte sPopupMenuActionList\n\
_080A5680:\n\
- cmp r1, 0x20\n\
- bne _080A56B0\n\
- ldr r4, _080A56A8 @ =sPopupMenuSelection\n\
- ldrb r0, [r4]\n\
- cmp r0, 0x2\n\
- bls _080A5736\n\
- adds r1, r0, 0\n\
- ldr r0, _080A56AC @ =sPopupMenuActionList\n\
- ldr r0, [r0]\n\
- adds r1, r0\n\
- subs r1, 0x3\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x8\n\
- beq _080A5736\n\
- movs r0, 0x5\n\
- bl PlaySE\n\
- movs r0, 0x3\n\
- negs r0, r0\n\
- b _080A56D2\n\
- .align 2, 0\n\
+ cmp r1, 0x20\n\
+ bne _080A56B0\n\
+ ldr r4, _080A56A8 @ =sPopupMenuSelection\n\
+ ldrb r0, [r4]\n\
+ cmp r0, 0x2\n\
+ bls _080A5736\n\
+ adds r1, r0, 0\n\
+ ldr r0, _080A56AC @ =sPopupMenuActionList\n\
+ ldr r0, [r0]\n\
+ adds r1, r0\n\
+ subs r1, 0x3\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0x8\n\
+ beq _080A5736\n\
+ movs r0, 0x5\n\
+ bl PlaySE\n\
+ movs r0, 0x3\n\
+ negs r0, r0\n\
+ b _080A56D2\n\
+ .align 2, 0\n\
_080A56A8: .4byte sPopupMenuSelection\n\
_080A56AC: .4byte sPopupMenuActionList\n\
_080A56B0:\n\
- cmp r1, 0x10\n\
- bne _080A56E4\n\
- ldr r4, _080A56DC @ =sPopupMenuSelection\n\
- ldrb r0, [r4]\n\
- cmp r0, 0x2\n\
- bhi _080A5736\n\
- adds r1, r0, 0\n\
- ldr r0, _080A56E0 @ =sPopupMenuActionList\n\
- ldr r0, [r0]\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x3]\n\
- cmp r0, 0x8\n\
- beq _080A5736\n\
- movs r0, 0x5\n\
- bl PlaySE\n\
- movs r0, 0x3\n\
+ cmp r1, 0x10\n\
+ bne _080A56E4\n\
+ ldr r4, _080A56DC @ =sPopupMenuSelection\n\
+ ldrb r0, [r4]\n\
+ cmp r0, 0x2\n\
+ bhi _080A5736\n\
+ adds r1, r0, 0\n\
+ ldr r0, _080A56E0 @ =sPopupMenuActionList\n\
+ ldr r0, [r0]\n\
+ adds r1, r0\n\
+ ldrb r0, [r1, 0x3]\n\
+ cmp r0, 0x8\n\
+ beq _080A5736\n\
+ movs r0, 0x5\n\
+ bl PlaySE\n\
+ movs r0, 0x3\n\
_080A56D2:\n\
- bl MoveMenuCursor3\n\
- strb r0, [r4]\n\
- b _080A5736\n\
- .align 2, 0\n\
+ bl MoveMenuCursor3\n\
+ strb r0, [r4]\n\
+ b _080A5736\n\
+ .align 2, 0\n\
_080A56DC: .4byte sPopupMenuSelection\n\
_080A56E0: .4byte sPopupMenuActionList\n\
_080A56E4:\n\
- ldrh r1, [r2, 0x2E]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _080A5768\n\
- movs r0, 0x2\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080A5736\n\
- ldr r1, _080A574C @ =gTasks\n\
- lsls r0, r4, 2\n\
- adds r0, r4\n\
- lsls r0, 3\n\
- adds r0, r1\n\
- strh r5, [r0, 0x1C]\n\
- ldr r1, _080A5750 @ =gBagPocketScrollStates\n\
- ldr r0, _080A5754 @ =sCurrentBagPocket\n\
- ldrb r0, [r0]\n\
- lsls r0, 24\n\
- asrs r0, 24\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r2, [r0]\n\
- adds r0, r4, 0\n\
- adds r1, r2, 0\n\
- bl sub_80A48E8\n\
- ldr r0, _080A5758 @ =gBGTilemapBuffers + 0x800\n\
- bl sub_80A4DA4\n\
- ldr r1, _080A575C @ =sItemPopupMenuActions\n\
- ldr r0, _080A5760 @ =sPopupMenuActionList\n\
- ldr r0, [r0]\n\
- ldrb r0, [r0, 0x5]\n\
- lsls r0, 3\n\
- adds r1, 0x4\n\
- adds r0, r1\n\
- ldr r5, [r0]\n\
- adds r0, r4, 0\n\
- bl _call_via_r5\n\
+ ldrh r1, [r2, 0x2E]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _080A5768\n\
+ movs r0, 0x2\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080A5736\n\
+ ldr r1, _080A574C @ =gTasks\n\
+ lsls r0, r4, 2\n\
+ adds r0, r4\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ strh r5, [r0, 0x1C]\n\
+ ldr r1, _080A5750 @ =gBagPocketScrollStates\n\
+ ldr r0, _080A5754 @ =sCurrentBagPocket\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 24\n\
+ asrs r0, 24\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r2, [r0]\n\
+ adds r0, r4, 0\n\
+ adds r1, r2, 0\n\
+ bl sub_80A48E8\n\
+ ldr r0, _080A5758 @ =gBGTilemapBuffers + 0x800\n\
+ bl sub_80A4DA4\n\
+ ldr r1, _080A575C @ =sItemPopupMenuActions\n\
+ ldr r0, _080A5760 @ =sPopupMenuActionList\n\
+ ldr r0, [r0]\n\
+ ldrb r0, [r0, 0x5]\n\
+ lsls r0, 3\n\
+ adds r1, 0x4\n\
+ adds r0, r1\n\
+ ldr r5, [r0]\n\
+ adds r0, r4, 0\n\
+ bl _call_via_r5\n\
_080A5736:\n\
- cmp r5, 0\n\
- bne _080A57BE\n\
- ldr r0, _080A5764 @ =sPopupMenuSelection\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- bne _080A57AC\n\
- movs r0, 0xC\n\
- bl sub_8072DDC\n\
- b _080A57BE\n\
- .align 2, 0\n\
+ cmp r5, 0\n\
+ bne _080A57BE\n\
+ ldr r0, _080A5764 @ =sPopupMenuSelection\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _080A57AC\n\
+ movs r0, 0xC\n\
+ bl sub_8072DDC\n\
+ b _080A57BE\n\
+ .align 2, 0\n\
_080A574C: .4byte gTasks\n\
_080A5750: .4byte gBagPocketScrollStates\n\
_080A5754: .4byte sCurrentBagPocket\n\
@@ -2487,47 +2479,47 @@ _080A575C: .4byte sItemPopupMenuActions\n\
_080A5760: .4byte sPopupMenuActionList\n\
_080A5764: .4byte sPopupMenuSelection\n\
_080A5768:\n\
- ldr r1, _080A5798 @ =gTasks\n\
- lsls r0, r4, 2\n\
- adds r0, r4\n\
- lsls r0, 3\n\
- adds r0, r1\n\
- strh r5, [r0, 0x1C]\n\
- ldr r0, _080A579C @ =gBGTilemapBuffers + 0x800\n\
- bl sub_80A4DA4\n\
- ldr r1, _080A57A0 @ =sItemPopupMenuActions\n\
- ldr r0, _080A57A4 @ =sPopupMenuSelection\n\
- ldrb r2, [r0]\n\
- ldr r0, _080A57A8 @ =sPopupMenuActionList\n\
- ldr r0, [r0]\n\
- adds r0, r2\n\
- ldrb r0, [r0]\n\
- lsls r0, 3\n\
- adds r1, 0x4\n\
- adds r0, r1\n\
- ldr r5, [r0]\n\
- adds r0, r4, 0\n\
- bl _call_via_r5\n\
- b _080A5736\n\
- .align 2, 0\n\
+ ldr r1, _080A5798 @ =gTasks\n\
+ lsls r0, r4, 2\n\
+ adds r0, r4\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ strh r5, [r0, 0x1C]\n\
+ ldr r0, _080A579C @ =gBGTilemapBuffers + 0x800\n\
+ bl sub_80A4DA4\n\
+ ldr r1, _080A57A0 @ =sItemPopupMenuActions\n\
+ ldr r0, _080A57A4 @ =sPopupMenuSelection\n\
+ ldrb r2, [r0]\n\
+ ldr r0, _080A57A8 @ =sPopupMenuActionList\n\
+ ldr r0, [r0]\n\
+ adds r0, r2\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 3\n\
+ adds r1, 0x4\n\
+ adds r0, r1\n\
+ ldr r5, [r0]\n\
+ adds r0, r4, 0\n\
+ bl _call_via_r5\n\
+ b _080A5736\n\
+ .align 2, 0\n\
_080A5798: .4byte gTasks\n\
_080A579C: .4byte gBGTilemapBuffers + 0x800\n\
_080A57A0: .4byte sItemPopupMenuActions\n\
_080A57A4: .4byte sPopupMenuSelection\n\
_080A57A8: .4byte sPopupMenuActionList\n\
_080A57AC:\n\
- cmp r0, 0x2\n\
- bhi _080A57B8\n\
- movs r0, 0x2F\n\
- bl sub_8072DCC\n\
- b _080A57BE\n\
+ cmp r0, 0x2\n\
+ bhi _080A57B8\n\
+ movs r0, 0x2F\n\
+ bl sub_8072DCC\n\
+ b _080A57BE\n\
_080A57B8:\n\
- movs r0, 0x30\n\
- bl sub_8072DCC\n\
+ movs r0, 0x30\n\
+ bl sub_8072DCC\n\
_080A57BE:\n\
- pop {r4,r5}\n\
- pop {r0}\n\
- bx r0\n\
+ pop {r4,r5}\n\
+ pop {r0}\n\
+ bx r0\n\
.syntax divided\n");
}
@@ -3123,7 +3115,7 @@ static void sub_80A6760(u8 taskId)
static void BuyMenuPrintItemQuantityAndPrice(u8 taskId)
{
sub_80A36B8(gBGTilemapBuffers[1], 0, 0, 31, 31);
- RemoveMoneyLabelObject(0, 0);
+ CloseMoneyWindow(0, 0);
MenuZeroFillWindowRect(0, 4, 13, 13);
MenuZeroFillWindowRect(0, 14, 29, 19);
gTasks[taskId].func = sub_80A6760;
@@ -3131,20 +3123,20 @@ static void BuyMenuPrintItemQuantityAndPrice(u8 taskId)
static void BuyMenuDisplayMessage(u16 itemId, u16 quantity)
{
- sub_80B7A94(ItemId_GetPrice(itemId) / 2 * quantity, 6, 6, 11);
+ PrintMoneyAmount(ItemId_GetPrice(itemId) / 2 * quantity, 6, 6, 11);
ConvertIntToDecimalStringN(gStringVar1, ItemId_GetPrice(itemId) / 2 * quantity, STR_CONV_MODE_LEFT_ALIGN, 6);
}
static void sub_80A683C(void)
{
- sub_80B7C14(gSaveBlock1.money, 0, 0);
+ OpenMoneyWindow(gSaveBlock1.money, 0, 0);
sub_80A4008(gBGTilemapBuffers[1], 1, 1, 12, 2);
}
static void sub_80A6870(u16 itemId, u8 quantity)
{
- sub_80B79B8(&gSaveBlock1.money, ItemId_GetPrice(itemId) / 2 * quantity);
- sub_80B7BEC(gSaveBlock1.money, 0, 0);
+ AddMoney(&gSaveBlock1.money, ItemId_GetPrice(itemId) / 2 * quantity);
+ UpdateMoneyWindow(gSaveBlock1.money, 0, 0);
}
static void sub_80A68A4(void)
diff --git a/src/item_use.c b/src/item_use.c
index 1750c1584..8bc83bdc6 100644
--- a/src/item_use.c
+++ b/src/item_use.c
@@ -26,7 +26,7 @@
#include "pokeblock.h"
#include "pokemon_item_effect.h"
#include "pokemon_menu.h"
-#include "rom4.h"
+#include "overworld.h"
#include "rom_8094928.h"
#include "script.h"
#include "songs.h"
@@ -36,10 +36,10 @@
#include "task.h"
#include "vars.h"
-extern void (* gUnknown_03005D00)(u8);
-extern void (* gFieldCallback)(void);
-extern void (* gUnknown_0300485C)(void);
-extern void (* gUnknown_03004AE4)(u8, u16, TaskFunc);
+extern void (*gUnknown_03005D00)(u8);
+extern void (*gFieldCallback)(void);
+extern void (*gUnknown_0300485C)(void);
+extern void (*gUnknown_03004AE4)(u8, u16, TaskFunc);
extern u8 gUnknown_02038561;
extern u8 gLastFieldPokeMenuOpened;
@@ -185,7 +185,7 @@ void ItemUseOutOfBattle_Bike(u8 taskId)
}
else
{
- if (IsBikingAllowedByMap() == TRUE && IsBikingDisallowedByPlayer() == FALSE)
+ if (Overworld_IsBikeAllowedOnCurrentMap() == TRUE && IsBikingDisallowedByPlayer() == FALSE)
{
gUnknown_03005D00 = (void *)ItemUseOnFieldCB_Bike;
SetUpItemUseOnFieldCallback(taskId);
@@ -342,7 +342,7 @@ bool8 ItemfinderCheckForHiddenItems(struct MapEvents *events, u8 taskId)
sub_80C9720(taskId);
// hidden item detected?
- if(gTasks[taskId].data[2] == TRUE)
+ if (gTasks[taskId].data[2] == TRUE)
return TRUE;
else
return FALSE;
@@ -354,11 +354,11 @@ bool8 HiddenItemAtPos(struct MapEvents *events, s16 x, s16 y)
struct BgEvent *bgEvent = events->bgEvents;
int i;
- for(i = 0; i < bgEventCount; i++)
+ for (i = 0; i < bgEventCount; i++)
{
- if(bgEvent[i].kind == 7 && x == (u16)bgEvent[i].x && y == (u16)bgEvent[i].y) // hidden item and coordinates matches x and y passed?
+ if (bgEvent[i].kind == 7 && x == (u16)bgEvent[i].x && y == (u16)bgEvent[i].y) // hidden item and coordinates matches x and y passed?
{
- if(!FlagGet(bgEvent[i].bgUnion.hiddenItem.hiddenItemId + 600))
+ if (!FlagGet(bgEvent[i].bgUnion.hiddenItem.hiddenItemId + 600))
return TRUE;
else
return FALSE;
@@ -376,7 +376,7 @@ bool8 sub_80C9688(struct MapConnection *connection, int x, int y)
mapHeader = mapconnection_get_mapheader(connection);
- switch(connection->direction)
+ switch (connection->direction)
{
// same weird temp variable behavior seen in HiddenItemAtPos
case 2:
@@ -592,7 +592,7 @@ void sub_80C9838(u8 taskId, s16 x, s16 y)
s16 *data = gTasks[taskId].data;
s16 var1, var2, var3, var4;
- if(data[2] == FALSE)
+ if (data[2] == FALSE)
{
data[0] = x;
data[1] = y;
@@ -602,34 +602,34 @@ void sub_80C9838(u8 taskId, s16 x, s16 y)
{
// data[0] and data[1] contain the player's coordinates.
// x and y contain the item's coordinates.
- if(data[0] < 0)
+ if (data[0] < 0)
var1 = data[0] * -1; // item is to the left
else
var1 = data[0]; // item is to the right
- if(data[1] < 0)
+ if (data[1] < 0)
var2 = data[1] * -1; // item is to the north
else
var2 = data[1]; // item is to the south
- if(x < 0)
+ if (x < 0)
var3 = x * -1;
else
var3 = x;
- if(y < 0)
+ if (y < 0)
var4 = y * -1;
else
var4 = y;
- if(var1 + var2 > var3 + var4)
+ if (var1 + var2 > var3 + var4)
{
data[0] = x;
data[1] = y;
}
else
{
- if(var1 + var2 == var3 + var4 && (var2 > var4 || (var2 == var4 && data[1] < y)))
+ if (var1 + var2 == var3 + var4 && (var2 > var4 || (var2 == var4 && data[1] < y)))
{
data[0] = x;
data[1] = y;
@@ -642,40 +642,40 @@ u8 GetPlayerDirectionTowardsHiddenItem(s16 itemX, s16 itemY)
{
s16 abX, abY;
- if(itemX == 0 && itemY == 0)
+ if (itemX == 0 && itemY == 0)
return DIR_NONE; // player is standing on the item.
// get absolute X distance.
- if(itemX < 0)
+ if (itemX < 0)
abX = itemX * -1;
else
abX = itemX;
// get absolute Y distance.
- if(itemY < 0)
+ if (itemY < 0)
abY = itemY * -1;
else
abY = itemY;
- if(abX > abY)
+ if (abX > abY)
{
- if(itemX < 0)
+ if (itemX < 0)
return DIR_EAST;
else
return DIR_NORTH;
}
else
{
- if(abX < abY)
+ if (abX < abY)
{
- if(itemY < 0)
+ if (itemY < 0)
return DIR_SOUTH;
else
return DIR_WEST;
}
- if(abX == abY)
+ if (abX == abY)
{
- if(itemY < 0)
+ if (itemY < 0)
return DIR_SOUTH;
else
return DIR_WEST;
@@ -694,7 +694,7 @@ void SetPlayerDirectionTowardsItem(u8 direction)
void DisplayItemRespondingMessageAndExitItemfinder(u8 taskId)
{
- if(FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]) == TRUE)
+ if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]) == TRUE)
DisplayItemMessageOnField(taskId, gOtherText_ItemfinderResponding, ExitItemfinder, 0);
}
@@ -702,7 +702,7 @@ void RotatePlayerAndExitItemfinder(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- if(FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]) == TRUE
+ if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]) == TRUE
|| data[2] == FALSE)
{
SetPlayerDirectionTowardsItem(gItemFinderDirections[data[5]]);
@@ -710,18 +710,18 @@ void RotatePlayerAndExitItemfinder(u8 taskId)
data[5] = (data[5] + 1) & 3;
data[3]++;
- if(data[3] == 4)
+ if (data[3] == 4)
DisplayItemMessageOnField(taskId, gOtherText_ItemfinderItemUnderfoot, ExitItemfinder, 0);
}
}
void ItemUseOutOfBattle_PokeblockCase(u8 taskId)
{
- if(sub_80F9344() == TRUE)
+ if (sub_80F9344() == TRUE)
{
DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[2]);
}
- else if(gTasks[taskId].data[2] != TRUE)
+ else if (gTasks[taskId].data[2] != TRUE)
{
sub_810BA7C(0);
ItemMenu_ConfirmNormalFade(taskId);
@@ -739,7 +739,7 @@ void ItemUseOutOfBattle_CoinCase(u8 taskId)
ConvertIntToDecimalStringN(gStringVar1, GetCoins(), 0, 4);
StringExpandPlaceholders(gStringVar4, gOtherText_Coins3);
- if(!gTasks[taskId].data[2])
+ if (!gTasks[taskId].data[2])
{
MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14);
DisplayItemMessageOnField(taskId, gStringVar4, CleanUpItemMenuMessage, 1);
@@ -752,20 +752,20 @@ void ItemUseOutOfBattle_CoinCase(u8 taskId)
void sub_80C9BB8(u8 var)
{
- if(gMain.newKeys & A_BUTTON)
+ if (gMain.newKeys & A_BUTTON)
CleanUpItemMenuMessage(var);
}
void sub_80C9BD8(u8 var)
{
- if(gMain.newKeys & A_BUTTON)
+ if (gMain.newKeys & A_BUTTON)
CleanUpOverworldMessage(var);
}
// unused
void ItemUseOutOfBattle_SSTicket(u8 taskId)
{
- if(gTasks[taskId].data[2] == 0)
+ if (gTasks[taskId].data[2] == 0)
{
MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14);
DisplayItemMessageOnField(taskId, gUnknown_083D61DC[ItemId_GetSecondaryId(gScriptItemId)], sub_80C9BB8, 1);
@@ -778,7 +778,7 @@ void ItemUseOutOfBattle_SSTicket(u8 taskId)
void sub_80C9C7C(u8 taskId)
{
- if(IsPlayerFacingPlantedBerryTree() == TRUE)
+ if (IsPlayerFacingPlantedBerryTree() == TRUE)
{
gUnknown_03005D00 = sub_80C9D00;
gFieldCallback = ExecuteItemUseFromBlackPalette;
@@ -803,7 +803,7 @@ void sub_80C9D00(u8 taskId)
void ItemUseOutOfBattle_WailmerPail(u8 taskId)
{
- if(TryToWaterBerryTree() == TRUE)
+ if (TryToWaterBerryTree() == TRUE)
{
gUnknown_03005D00 = sub_80C9D74;
SetUpItemUseOnFieldCallback(taskId);
@@ -839,9 +839,9 @@ void ItemUseOutOfBattle_SacredAsh(u8 taskId)
gLastFieldPokeMenuOpened = 0;
- for(i = 0; i < 6; i++)
+ for (i = 0; i < 6; i++)
{
- if(GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != 0 && GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0)
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != 0 && GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0)
{
gLastFieldPokeMenuOpened = i;
break;
@@ -874,7 +874,7 @@ void ItemUseOutOfBattle_TMHM(u8 taskId)
{
MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14);
- if(gScriptItemId >= ITEM_HM01)
+ if (gScriptItemId >= ITEM_HM01)
DisplayItemMessageOnField(taskId, gOtherText_BootedHM, sub_80C9EE4, 1); // HM
else
DisplayItemMessageOnField(taskId, gOtherText_BootedTM, sub_80C9EE4, 1); // TM
@@ -882,13 +882,13 @@ void ItemUseOutOfBattle_TMHM(u8 taskId)
void sub_80C9EE4(u8 taskId)
{
- PlaySE(2);
+ PlaySE(SE_PC_LOGON);
gTasks[taskId].func = sub_80C9F10;
}
void sub_80C9F10(u8 taskId)
{
- if(gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)
+ if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)
{
StringCopy(gStringVar1, gMoveNames[ItemIdToBattleMoveId(gScriptItemId)]);
StringExpandPlaceholders(gStringVar4, gOtherText_ContainsMove);
@@ -919,7 +919,7 @@ void sub_80C9FDC(void)
void ItemUseOutOfBattle_Repel(u8 var)
{
- if(VarGet(VAR_REPEL_STEP_COUNT) == FALSE)
+ if (VarGet(VAR_REPEL_STEP_COUNT) == FALSE)
{
VarSet(VAR_REPEL_STEP_COUNT, ItemId_GetHoldEffectParam(gScriptItemId));
sub_80C9FDC();
@@ -941,26 +941,26 @@ void sub_80CA098(u8 taskId)
{
if(++gTasks[taskId].data[15] > 7)
{
- PlaySE(0x75);
+ PlaySE(SE_BIDORO);
DisplayItemMessageOnField(taskId, gStringVar4, CleanUpItemMenuMessage, 1);
}
}
void ItemUseOutOfBattle_BlackWhiteFlute(u8 taskId)
{
- if(gScriptItemId == 43)
+ if (gScriptItemId == ITEM_WHITE_FLUTE)
{
FlagSet(SYS_ENC_UP_ITEM);
- FlagReset(SYS_ENC_DOWN_ITEM);
+ FlagClear(SYS_ENC_DOWN_ITEM);
sub_80CA07C();
StringExpandPlaceholders(gStringVar4, gOtherText_UsedFlute);
gTasks[taskId].func = sub_80CA098;
gTasks[taskId].data[15] = 0;
}
- else if(gScriptItemId == 42)
+ else if (gScriptItemId == ITEM_BLACK_FLUTE)
{
FlagSet(SYS_ENC_DOWN_ITEM);
- FlagReset(SYS_ENC_UP_ITEM);
+ FlagClear(SYS_ENC_UP_ITEM);
sub_80CA07C();
StringExpandPlaceholders(gStringVar4, gOtherText_UsedRepel);
gTasks[taskId].func = sub_80CA098;
@@ -983,9 +983,9 @@ void sub_80CA18C(u8 taskId)
DisplayItemMessageOnField(taskId, gStringVar4, task08_080A1C44, 0);
}
-bool8 sub_80CA1C8(void)
+bool8 CanUseEscapeRopeOnCurrMap(void)
{
- if(gMapHeader.mapType == MAP_TYPE_UNDERGROUND)
+ if (gMapHeader.mapType == MAP_TYPE_UNDERGROUND)
return TRUE;
else
return FALSE;
@@ -993,7 +993,7 @@ bool8 sub_80CA1C8(void)
void ItemUseOutOfBattle_EscapeRope(u8 taskId)
{
- if(sub_80CA1C8() == TRUE) // is map type an area you can use escape rope?
+ if (CanUseEscapeRopeOnCurrMap() == TRUE)
{
gUnknown_03005D00 = sub_80CA18C;
SetUpItemUseOnFieldCallback(taskId);
@@ -1012,7 +1012,7 @@ void ItemUseOutOfBattle_EvolutionStone(u8 var)
void ItemUseInBattle_PokeBall(u8 var)
{
- if(PlayerPartyAndPokemonStorageFull() == FALSE) // have room for mon?
+ if (PlayerPartyAndPokemonStorageFull() == FALSE) // have room for mon?
{
RemoveBagItem(gScriptItemId, 1);
sub_80A7094(var);
@@ -1026,7 +1026,7 @@ void ItemUseInBattle_PokeBall(u8 var)
void sub_80CA294(u8 var)
{
- if(gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)
+ if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)
sub_80A7094(var);
}
@@ -1034,7 +1034,7 @@ void sub_80CA2BC(u8 taskId)
{
if(++gTasks[taskId].data[15] > 7)
{
- PlaySE(1);
+ PlaySE(SE_KAIFUKU);
RemoveBagItem(gScriptItemId, 1);
DisplayItemMessageOnField(taskId, sub_803F378(gScriptItemId), sub_80CA294, 1);
}
@@ -1046,7 +1046,7 @@ void ItemUseInBattle_StatIncrease(u8 taskId)
MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14);
- if(ExecuteTableBasedItemEffect_(&gPlayerParty[partyId], gScriptItemId, partyId, 0) != FALSE)
+ if (ExecuteTableBasedItemEffect_(&gPlayerParty[partyId], gScriptItemId, partyId, 0) != FALSE)
{
DisplayItemMessageOnField(taskId, gOtherText_WontHaveAnyEffect, CleanUpItemMenuMessage, 1);
}
@@ -1059,7 +1059,7 @@ void ItemUseInBattle_StatIncrease(u8 taskId)
void sub_80CA394(u8 taskId)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
sub_8094E4C();
gpu_pal_allocator_reset__manage_upper_four();
@@ -1095,7 +1095,7 @@ void unref_sub_80CA448(u8 var)
{
MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14);
- if(ExecuteTableBasedItemEffect__(0, gScriptItemId, 0) == FALSE)
+ if (ExecuteTableBasedItemEffect__(0, gScriptItemId, 0) == FALSE)
{
RemoveBagItem(gScriptItemId, 1);
GetMonNickname(&gPlayerParty[0], gStringVar1);
@@ -1125,7 +1125,7 @@ void ItemUseInBattle_Escape(u8 taskId)
void ItemUseOutOfBattle_EnigmaBerry(u8 taskId)
{
- switch(GetItemEffectType(gScriptItemId) - 1)
+ switch (GetItemEffectType(gScriptItemId) - 1)
{
case 1:
case 2:
@@ -1168,7 +1168,7 @@ void ItemUseOutOfBattle_EnigmaBerry(u8 taskId)
void ItemUseInBattle_EnigmaBerry(u8 taskId)
{
- switch(GetItemEffectType(gScriptItemId))
+ switch (GetItemEffectType(gScriptItemId))
{
case 0:
ItemUseInBattle_StatIncrease(taskId);
diff --git a/src/learn_move.c b/src/learn_move.c
new file mode 100644
index 000000000..33252c66b
--- /dev/null
+++ b/src/learn_move.c
@@ -0,0 +1,1081 @@
+#include "global.h"
+#include "data2.h"
+#include "field_fadetransition.h"
+#include "main.h"
+#include "menu.h"
+#include "menu_cursor.h"
+#include "palette.h"
+#include "pokemon.h"
+#include "overworld.h"
+#include "script.h"
+#include "songs.h"
+#include "sound.h"
+#include "sprite.h"
+#include "string_util.h"
+#include "strings.h"
+#include "strings2.h"
+#include "task.h"
+#include "trig.h"
+
+extern u8 ewram[];
+extern u16 gSpecialVar_0x8004;
+extern u16 gSpecialVar_0x8005;
+extern u8 gTileBuffer[];
+
+struct ContestMove
+{
+ u8 effect;
+ u8 contestCategory:3;
+ u8 comboStarterId;
+ u8 comboMoves[4];
+};
+
+struct ContestEffect
+{
+ u8 effectType;
+ u8 appeal;
+ u8 jam;
+};
+
+extern const struct ContestMove gContestMoves[];
+extern const struct ContestEffect gContestEffects[];
+extern const struct WindowConfig gWindowConfig_81E6CE4;
+extern const struct WindowConfig gWindowConfig_81E7240;
+extern const u8 *const gUnknown_083CADD4[];
+extern const u8 *const gMoveDescriptions[];
+extern const u8 gTypeNames[][7];
+extern const u8 *const gUnknown_083CAF70[];
+
+#ifdef GERMAN
+extern const u8 deuOtherText_ForgotAndLearned[];
+#endif
+
+extern void sub_809D9F0(struct Pokemon *, u8, u8, void *, u32);
+
+struct LearnMoveStruct
+{
+ u8 state;
+ u8 filler1;
+ u8 unk2;
+ u8 spriteIDs[20];
+ u8 filler17[1];
+ u8 unk18;
+ u8 unk19;
+ u8 numMenuChoices;
+ u8 menuSelection;
+ u8 unk1C;
+ bool8 unk1D;
+ u8 unk1E;
+ u8 filler1F;
+ /*0x020*/ u16 movesToLearn[20];
+ u8 filler48[0x52-0x48];
+ u8 moveNames[6][0x19];
+ u8 fillerE8[0x2C3-0xE8];
+ bool8 unk2C3;
+ bool8 showContestInfo;
+ /*0x2C5*/ u8 partyMon;
+ u8 unk2C6;
+};
+
+static struct LearnMoveStruct *sLearnMoveStruct;
+
+const u16 gDexArrows_Pal[] = INCBIN_U16("graphics/pokedex/arrows.gbapal");
+
+const u8 gDexArrows_Gfx[] = INCBIN_U8("graphics/pokedex/arrows.4bpp");
+
+const u8 gUnknown_08402CF8[][4] =
+{
+ { 0, 0, 9, 13},
+ {10, 0, 29, 7},
+ { 2, 14, 27, 19},
+ {10, 8, 29, 13},
+};
+
+struct UnknownStruct1
+{
+ const u8 *unk0;
+ u8 unk4;
+ u8 unk5;
+ u8 unk6;
+};
+
+const struct UnknownStruct1 gUnknown_08402D08[][4] =
+{
+ {
+ {OtherText_Battle, 1, 1, 0},
+ {OtherText_Power, 1, 4, 1},
+ {OtherText_Accuracy, 1, 9, 2},
+ {NULL, 0, 0, 0},
+ },
+ {
+ {OtherText_Contest, 1, 1, 0},
+ {OtherText_Appeal, 1, 4, 1},
+ {OtherText_Jam, 1, 9, 2},
+ {NULL, 0, 0, 0},
+ },
+};
+
+// XXX: What are these for?
+const u32 unkDataFF00FFEF = 0xFF00FFEF;
+const u8 *const gTileBuffer_ = gTileBuffer;
+
+const struct OamData gOamData_8402D50 = {.shape = 0};
+const struct OamData gOamData_8402D58 = {.shape = 2};
+const struct OamData gOamData_8402D60 = {.shape = 1};
+
+const union AnimCmd gSpriteAnim_8402D68[] =
+{
+ ANIMCMD_FRAME(2, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_8402D70[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_8402D78[] =
+{
+ gSpriteAnim_8402D68,
+ gSpriteAnim_8402D70,
+};
+
+const struct SpriteSheet gUnknown_08402D80 = {gDexArrows_Gfx, sizeof(gDexArrows_Gfx), 5525};
+const struct SpritePalette gUnknown_08402D88 = {gDexArrows_Pal, 5526};
+
+void sub_8133300(struct Sprite *);
+const struct SpriteTemplate gSpriteTemplate_8402D90 =
+{
+ .tileTag = 5525,
+ .paletteTag = 5526,
+ .oam = &gOamData_8402D58,
+ .anims = gSpriteAnimTable_8402D78,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8133300,
+};
+
+const union AnimCmd gSpriteAnim_8402DA8[] =
+{
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_8402DB0[] =
+{
+ ANIMCMD_FRAME(6, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_8402DB8[] =
+{
+ gSpriteAnim_8402DA8,
+ gSpriteAnim_8402DB0,
+};
+
+const struct SpriteTemplate gSpriteTemplate_8402DC0 =
+{
+ .tileTag = 5525,
+ .paletteTag = 5526,
+ .oam = &gOamData_8402D60,
+ .anims = gSpriteAnimTable_8402DB8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8133300,
+};
+
+const union AnimCmd gSpriteAnim_8402DD8[] =
+{
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_8402DE0[] =
+{
+ ANIMCMD_FRAME(9, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_8402DE8[] =
+{
+ ANIMCMD_FRAME(10, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_8402DF0[] =
+{
+ ANIMCMD_FRAME(11, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_8402DF8[] =
+{
+ gSpriteAnim_8402DD8,
+ gSpriteAnim_8402DE0,
+ gSpriteAnim_8402DE8,
+ gSpriteAnim_8402DF0,
+};
+
+const struct SpriteTemplate gSpriteTemplate_8402E08 =
+{
+ .tileTag = 5525,
+ .paletteTag = 5526,
+ .oam = &gOamData_8402D50,
+ .anims = gSpriteAnimTable_8402DF8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8133300,
+};
+
+const u8 gString_AkitoMori[] = _("あきと"); // programmer Akito Mori?
+
+void sub_813269C(u8);
+void CB2_InitLearnMove(void);
+void CB2_LearnMove(void);
+void LearnMoveMain(void);
+void DrawLearnMoveMenuWindow(void);
+void sub_8133030(bool8);
+u8 sub_81330E8(void);
+void sub_8133140(u8);
+u8 sub_8133248(void);
+void ClearLearnMoveVars(void);
+void sub_8133358(void);
+void sub_8133558(void);
+void sub_813362C(void);
+void sub_8133800(void);
+void sub_8133AEC(bool8, int);
+void sub_8133CA4(void);
+
+void VBlankCB_LearnMove(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+void sub_8132670(void)
+{
+ ScriptContext2_Enable();
+ CreateTask(sub_813269C, 10);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+}
+
+void sub_813269C(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(CB2_InitLearnMove);
+ gFieldCallback = sub_8080990;
+ DestroyTask(taskId);
+ }
+}
+
+void CB2_InitLearnMove(void)
+{
+ REG_DISPCNT = 0;
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetTasks();
+ sLearnMoveStruct = (struct LearnMoveStruct *)(ewram + 0x17000);
+ ClearLearnMoveVars();
+ sLearnMoveStruct->partyMon = gSpecialVar_0x8004;
+ sub_8133558();
+ SetVBlankCallback(VBlankCB_LearnMove);
+
+ SetUpWindowConfig(&gWindowConfig_81E7240);
+ InitMenuWindow(&gWindowConfig_81E7240);
+ MenuZeroFillScreen();
+
+ SetUpWindowConfig(&gWindowConfig_81E6CE4);
+ InitMenuWindow(&gWindowConfig_81E6CE4);
+ MenuZeroFillScreen();
+
+ REG_BG0VOFS = 0;
+ REG_BG0VOFS = 0; // huh?
+ REG_BG1HOFS = 0;
+ REG_BG1HOFS = 0; // huh?
+
+ LoadSpriteSheet(&gUnknown_08402D80);
+ LoadSpritePalette(&gUnknown_08402D88);
+ sub_8133358();
+ FillPalette(0, 0, 2);
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+ SetMainCallback2(CB2_LearnMove);
+}
+
+void sub_81327A4(void)
+{
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetTasks();
+ sLearnMoveStruct = (struct LearnMoveStruct *)(ewram + 0x17000);
+ sub_8133558();
+ sLearnMoveStruct->unk2C6 = gSpecialVar_0x8005;
+ SetVBlankCallback(VBlankCB_LearnMove);
+
+ SetUpWindowConfig(&gWindowConfig_81E7240);
+ InitMenuWindow(&gWindowConfig_81E7240);
+ MenuZeroFillScreen();
+
+ SetUpWindowConfig(&gWindowConfig_81E6CE4);
+ InitMenuWindow(&gWindowConfig_81E6CE4);
+ MenuZeroFillScreen();
+
+ REG_DISPCNT = 0x1340;
+ REG_BG0VOFS = 0;
+ REG_BG0HOFS = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1HOFS = 0; // huh?
+
+ LoadSpriteSheet(&gUnknown_08402D80);
+ LoadSpritePalette(&gUnknown_08402D88);
+ sub_8133358();
+ FillPalette(0, 0, 2);
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+ SetMainCallback2(CB2_LearnMove);
+}
+
+void CB2_LearnMove(void)
+{
+ LearnMoveMain();
+ if (sLearnMoveStruct->unk1D)
+ {
+ sLearnMoveStruct->unk1D = FALSE;
+ sub_814AD7C(0x58, (sLearnMoveStruct->unk18 * 2 + 1) * 8);
+ }
+ if (sLearnMoveStruct->unk1E != 0)
+ {
+ sLearnMoveStruct->unk1E = 0;
+ sub_8133800();
+ }
+ if (sLearnMoveStruct->unk2C3)
+ {
+ sub_8133AEC(sLearnMoveStruct->showContestInfo, 1);
+ sLearnMoveStruct->unk2C3 = FALSE;
+ }
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+void sub_81328E8(const u8 *a)
+{
+ StringExpandPlaceholders(gStringVar4, a);
+ MenuPrintMessage(gStringVar4, 3, 15);
+}
+
+void LearnMoveMain(void)
+{
+ switch (sLearnMoveStruct->state)
+ {
+ case 0:
+ sLearnMoveStruct->state++;
+ DrawLearnMoveMenuWindow();
+ sub_8133030(FALSE);
+ sub_8133800();
+ gSprites[1].pos1.x = 0x48;
+ sLearnMoveStruct->unk2C3 = TRUE;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ REG_DISPCNT = 0x1340;
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ sLearnMoveStruct->state = 4;
+ break;
+ case 2:
+ sLearnMoveStruct->state++;
+ break;
+ case 3:
+ sub_8133030(FALSE);
+ sub_8133800();
+ sLearnMoveStruct->unk2C3 = TRUE;
+ sLearnMoveStruct->state++;
+ gSprites[1].pos1.x = 0x48;
+ break;
+ case 4:
+ if (sub_81330E8() == 0)
+ sub_813362C();
+ return;
+ case 5:
+ sub_8133140(0);
+ sub_8133800();
+ sLearnMoveStruct->unk2C3 = TRUE;
+ gSprites[1].pos1.x = 0x48;
+ sLearnMoveStruct->state++;
+ break;
+ case 6:
+ if (sub_8133248() == 0)
+ sub_813362C();
+ break;
+ case 8:
+ if (MenuUpdateWindowText())
+ {
+ DisplayYesNoMenu(21, 7, 1);
+ sLearnMoveStruct->state++;
+ }
+ break;
+ case 9:
+ {
+ s8 selection = ProcessMenuInputNoWrap_();
+
+ if (selection == 0)
+ {
+ sub_8133CA4();
+ if (GiveMoveToMon(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection]) != 0xFFFF)
+ {
+ sub_81328E8(gOtherText_PokeLearnedMove);
+ gSpecialVar_0x8004 = 1;
+ sLearnMoveStruct->state = 31;
+ }
+ else
+ {
+ sLearnMoveStruct->state = 16;
+ }
+ }
+ else if (selection == -1 || selection == 1)
+ {
+ sub_8133CA4();
+ if (sLearnMoveStruct->showContestInfo == FALSE)
+ sLearnMoveStruct->state = 3;
+ if (sLearnMoveStruct->showContestInfo == TRUE)
+ sLearnMoveStruct->state = 5;
+ }
+ }
+ break;
+ case 12:
+ if (MenuUpdateWindowText())
+ {
+ DisplayYesNoMenu(21, 7, 1);
+ sLearnMoveStruct->state++;
+ }
+ break;
+ case 13:
+ {
+ s8 selection = ProcessMenuInputNoWrap_();
+
+ if (selection == 0)
+ {
+ sub_8133CA4();
+ gSpecialVar_0x8004 = selection;
+ sLearnMoveStruct->state = 14;
+ }
+ else if (selection == -1 || selection == 1)
+ {
+ sub_8133CA4();
+ if (sLearnMoveStruct->showContestInfo == FALSE)
+ sLearnMoveStruct->state = 3;
+ if (sLearnMoveStruct->showContestInfo == TRUE)
+ sLearnMoveStruct->state = 5;
+ }
+ }
+ break;
+ case 16:
+ sub_81328E8(gOtherText_DeleteOlderMove);
+ sLearnMoveStruct->state++;
+ break;
+ case 17:
+ if (MenuUpdateWindowText())
+ {
+ DisplayYesNoMenu(21, 7, 1);
+ sLearnMoveStruct->state = 18;
+ }
+ break;
+ case 18:
+ {
+ s8 var = ProcessMenuInputNoWrap_();
+
+ if (var == 0)
+ {
+ sub_8133CA4();
+ sub_81328E8(gOtherText_WhichMoveToForget);
+ sLearnMoveStruct->state = 19;
+ }
+ else if (var == -1 || var == 1)
+ {
+ sub_8133CA4();
+ sLearnMoveStruct->state = 24;
+ }
+ }
+ break;
+ case 24:
+ sub_81328E8(gOtherText_StopLearningMove);
+ sLearnMoveStruct->state++;
+ break;
+ case 25:
+ if (MenuUpdateWindowText())
+ {
+ sLearnMoveStruct->state = 26;
+ DisplayYesNoMenu(21, 7, 1);
+ }
+ break;
+ case 26:
+ {
+ s8 var = ProcessMenuInputNoWrap_();
+
+ if (var == 0)
+ {
+ sub_8133CA4();
+ sLearnMoveStruct->state = 27;
+ }
+ else if (var == -1 || var == 1)
+ {
+ sub_8133CA4();
+
+ // What's the point? It gets set to 16, anyway.
+ if (sLearnMoveStruct->showContestInfo == FALSE)
+ sLearnMoveStruct->state = 3;
+ if (sLearnMoveStruct->showContestInfo == TRUE)
+ sLearnMoveStruct->state = 5;
+ sLearnMoveStruct->state = 16;
+ }
+ }
+ break;
+ case 27:
+ if (MenuUpdateWindowText())
+ {
+ if (sLearnMoveStruct->showContestInfo == FALSE)
+ sLearnMoveStruct->state = 3;
+ if (sLearnMoveStruct->showContestInfo == TRUE)
+ sLearnMoveStruct->state = 5;
+ }
+ break;
+ case 19:
+ if (MenuUpdateWindowText())
+ {
+ sLearnMoveStruct->state = 20;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ }
+ break;
+ case 20:
+ if (!gPaletteFade.active)
+ {
+ sub_809D9F0(gPlayerParty, sLearnMoveStruct->partyMon, gPlayerPartyCount - 1, sub_81327A4, sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection]);
+ sLearnMoveStruct->state = 28;
+ }
+ break;
+ case 21:
+ if (MenuUpdateWindowText())
+ sLearnMoveStruct->state = 14;
+ break;
+ case 22:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ break;
+ case 14:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ sLearnMoveStruct->state++;
+ break;
+ case 15:
+ if (!gPaletteFade.active)
+ SetMainCallback2(c2_exit_to_overworld_2_switch);
+ break;
+ case 28:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ sLearnMoveStruct->state++;
+ DrawLearnMoveMenuWindow();
+ sub_8133800();
+ if (sLearnMoveStruct->showContestInfo == FALSE)
+ sub_8133030(TRUE);
+ if (sLearnMoveStruct->showContestInfo == TRUE)
+ {
+ gSprites[1].pos1.x = 0x48;
+ sub_8133140(1);
+ }
+ sub_8133AEC(sLearnMoveStruct->showContestInfo, 1);
+ break;
+ case 29:
+ if (!gPaletteFade.active)
+ {
+ if (sLearnMoveStruct->unk2C6 == 4)
+ {
+ sLearnMoveStruct->state = 24;
+ }
+ else
+ {
+ u16 moveId = GetMonData(&gPlayerParty[sLearnMoveStruct->partyMon], MON_DATA_MOVE1 + sLearnMoveStruct->unk2C6);
+
+ StringCopy(gStringVar3, gMoveNames[moveId]);
+ RemoveMonPPBonus(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->unk2C6);
+ SetMonMoveSlot(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection], sLearnMoveStruct->unk2C6);
+ StringCopy(gStringVar2, gMoveNames[sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection]]);
+ sub_81328E8(gOtherText_ForgotMove123);
+ sLearnMoveStruct->state = 30;
+ gSpecialVar_0x8004 = 1;
+ }
+ }
+ break;
+ case 30:
+ if (MenuUpdateWindowText())
+ {
+#ifdef ENGLISH
+ sub_81328E8(gOtherText_ForgotOrDidNotLearnMove);
+#else
+ sub_81328E8(deuOtherText_ForgotAndLearned);
+#endif
+ sLearnMoveStruct->state = 31;
+ PlayFanfare(BGM_FANFA1);
+ }
+ break;
+ case 31:
+ if (MenuUpdateWindowText())
+ {
+ PlayFanfare(BGM_FANFA1);
+ sLearnMoveStruct->state = 32;
+ }
+ break;
+ case 32:
+ if (IsFanfareTaskInactive())
+ sLearnMoveStruct->state = 33;
+ break;
+ case 33:
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sLearnMoveStruct->state = 14;
+ }
+ break;
+ }
+}
+
+void DrawLearnMoveMenuWindow(void)
+{
+ u32 i;
+
+ BasicInitMenuWindow(&gWindowConfig_81E7240);
+ for (i = 0; i < 4; i++)
+ {
+ MenuDrawTextWindow(
+ gUnknown_08402CF8[i][0],
+ gUnknown_08402CF8[i][1],
+ gUnknown_08402CF8[i][2],
+ gUnknown_08402CF8[i][3]);
+ }
+ BasicInitMenuWindow(&gWindowConfig_81E6CE4);
+}
+
+void sub_8133030(bool8 a)
+{
+ s32 i;
+
+ gSprites[sLearnMoveStruct->spriteIDs[0]].invisible = FALSE;
+ gSprites[sLearnMoveStruct->spriteIDs[1]].invisible = FALSE;
+
+ for (i = 0; i < 16; i++)
+ gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = TRUE;
+
+ for (i = 0; gUnknown_08402D08[0][i].unk0 != NULL; i++)
+ {
+ sub_8072C74(gTileBuffer, gUnknown_08402D08[0][i].unk0, 64, 2);
+ MenuPrint(gTileBuffer, gUnknown_08402D08[0][i].unk4, gUnknown_08402D08[0][i].unk5);
+ }
+
+ if (!a)
+ sub_8072AB0(gOtherText_TeachWhichMove, 24, 120, 192, 32, 1);
+}
+
+u8 sub_81330E8(void)
+{
+ u32 result = (gMain.newKeys & DPAD_LEFT) || (gMain.newKeys & DPAD_RIGHT);
+
+ if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR
+ && ((gMain.newKeys & L_BUTTON) || (gMain.newKeys & R_BUTTON)))
+ result++;
+
+ if (result != 0)
+ {
+ PlaySE(SE_SELECT);
+ sLearnMoveStruct->state = 5;
+ sLearnMoveStruct->showContestInfo = TRUE;
+ }
+
+ return result;
+}
+
+void sub_8133140(bool8 a)
+{
+ s32 i;
+
+ gSprites[sLearnMoveStruct->spriteIDs[0]].invisible = FALSE;
+ gSprites[sLearnMoveStruct->spriteIDs[1]].invisible = FALSE;
+
+ for (i = 0; i < 16; i++)
+ gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = FALSE;
+
+ for (i = 0; gUnknown_08402D08[0][i].unk0 != NULL; i++)
+ {
+ sub_8072C74(gTileBuffer, gUnknown_08402D08[1][i].unk0, 64, 2);
+ MenuPrint(gTileBuffer, gUnknown_08402D08[1][i].unk4, gUnknown_08402D08[1][i].unk5);
+ if (i != 0)
+ {
+ MenuZeroFillWindowRect(
+ gUnknown_08402D08[1][i].unk4,
+ gUnknown_08402D08[1][i].unk5 + 2,
+ gUnknown_08402D08[1][i].unk4 + 7,
+ gUnknown_08402D08[1][i].unk5 + 3);
+ }
+ }
+
+ if (!a)
+ sub_8072AB0(gOtherText_TeachWhichMove, 24, 120, 192, 32, 1);
+}
+
+u8 sub_8133248(void)
+{
+ u32 result = (gMain.newKeys & DPAD_LEFT) || (gMain.newKeys & DPAD_RIGHT);
+
+ if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR
+ && ((gMain.newKeys & L_BUTTON) || (gMain.newKeys & R_BUTTON)))
+ result++;
+
+ if (result != 0)
+ {
+ PlaySE(SE_SELECT);
+ sLearnMoveStruct->state = 3;
+ sLearnMoveStruct->showContestInfo = FALSE;
+ }
+
+ return result;
+}
+
+void ClearLearnMoveVars(void)
+{
+ s32 i;
+
+ sLearnMoveStruct->state = 0;
+ sLearnMoveStruct->unk2 = 0;
+ sLearnMoveStruct->unk19 = 0;
+ sLearnMoveStruct->unk18 = 0;
+ sLearnMoveStruct->unk1C = 0;
+ sLearnMoveStruct->numMenuChoices = 0;
+ sLearnMoveStruct->menuSelection = 0;
+ sLearnMoveStruct->unk1D = FALSE;
+ sLearnMoveStruct->unk1E = 0;
+ sLearnMoveStruct->unk2C3 = FALSE;
+ sLearnMoveStruct->showContestInfo = FALSE;
+ for (i = 0; i < 20; i++)
+ sLearnMoveStruct->movesToLearn[i] = 0;
+}
+
+void sub_8133300(struct Sprite *sprite)
+{
+ s16 var = (sprite->data1 * 10) & 0xFF;
+
+ switch (sprite->data0)
+ {
+ case 0:
+ break;
+ case 1:
+ sprite->pos2.x = Sin(var, 3) * sprite->data2;
+ break;
+ case 2:
+ sprite->pos2.y = Sin(var, 1) * sprite->data2;
+ break;
+ }
+ sprite->data1++;
+}
+
+void sub_8133358(void)
+{
+ s32 i;
+
+ sLearnMoveStruct->spriteIDs[0] = CreateSprite(&gSpriteTemplate_8402D90, 8, 16, 0);
+ gSprites[sLearnMoveStruct->spriteIDs[0]].data0 = 1;
+ gSprites[sLearnMoveStruct->spriteIDs[0]].data2 = -1;
+
+ sLearnMoveStruct->spriteIDs[1] = CreateSprite(&gSpriteTemplate_8402D90, 72, 16, 0);
+ StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[1]], 1);
+ gSprites[sLearnMoveStruct->spriteIDs[1]].data0 = 1;
+ gSprites[sLearnMoveStruct->spriteIDs[1]].data2 = 1;
+
+ sLearnMoveStruct->spriteIDs[2] = CreateSprite(&gSpriteTemplate_8402DC0, 160, 4, 0);
+ StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[2]], 1);
+ gSprites[sLearnMoveStruct->spriteIDs[2]].data0 = 2;
+ gSprites[sLearnMoveStruct->spriteIDs[2]].data2 = -1;
+
+ sLearnMoveStruct->spriteIDs[3] = CreateSprite(&gSpriteTemplate_8402DC0, 160, 60, 0);
+ gSprites[sLearnMoveStruct->spriteIDs[3]].data0 = 2;
+ gSprites[sLearnMoveStruct->spriteIDs[3]].data2 = 1;
+
+ for (i = 0; i < 8; i++)
+ {
+ sLearnMoveStruct->spriteIDs[i + 4] = CreateSprite(&gSpriteTemplate_8402E08, (i - (i / 4) * 4) * 8 + 0x1C, (i / 4) * 8 + 0x34, 0);
+ StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 4]], 2);
+ }
+
+ for (i = 0; i < 8; i++)
+ {
+ sLearnMoveStruct->spriteIDs[i + 12] = CreateSprite(&gSpriteTemplate_8402E08, (i - (i / 4) * 4) * 8 + 0x1C, (i / 4) * 8 + 0x5C, 0);
+ StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 12]], 2);
+ }
+
+ for (i = 0; i < 20; i++)
+ gSprites[sLearnMoveStruct->spriteIDs[i]].invisible = TRUE;
+
+ CreateBlendedOutlineCursor(16, 0xFFFF, 12, 0x2D9F, 18);
+}
+
+void sub_8133558(void)
+{
+ s32 i;
+ u8 nickname[POKEMON_NAME_LENGTH + 1];
+
+ sLearnMoveStruct->numMenuChoices = GetMoveRelearnerMoves(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->movesToLearn);
+ for (i = 0; i < sLearnMoveStruct->numMenuChoices; i++)
+ StringCopy(sLearnMoveStruct->moveNames[i], gMoveNames[sLearnMoveStruct->movesToLearn[i]]);
+ GetMonData(&gPlayerParty[sLearnMoveStruct->partyMon], MON_DATA_NICKNAME, nickname);
+ StringCopy10(gStringVar1, nickname);
+ StringCopy(sLearnMoveStruct->moveNames[sLearnMoveStruct->numMenuChoices], gUnknownText_Exit);
+ sLearnMoveStruct->numMenuChoices++;
+}
+
+void sub_813360C(s8 delta)
+{
+ sLearnMoveStruct->unk1C = sLearnMoveStruct->unk18;
+ sLearnMoveStruct->unk18 += delta;
+ sLearnMoveStruct->unk1D = TRUE;
+}
+
+void sub_813362C(void)
+{
+ if (gMain.newAndRepeatedKeys & DPAD_UP)
+ {
+ if (sLearnMoveStruct->menuSelection != 0)
+ {
+ PlaySE(SE_SELECT);
+ sLearnMoveStruct->menuSelection--;
+ sLearnMoveStruct->unk2C3 = TRUE;
+ if (sLearnMoveStruct->unk18 != 0)
+ {
+ sub_813360C(-1);
+ }
+ else if (sLearnMoveStruct->unk19 != 0)
+ {
+ sLearnMoveStruct->unk19--;
+ sLearnMoveStruct->unk1E++;
+ }
+ }
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ {
+ if (sLearnMoveStruct->menuSelection < sLearnMoveStruct->numMenuChoices - 1)
+ {
+ PlaySE(SE_SELECT);
+ sLearnMoveStruct->menuSelection++;
+ sLearnMoveStruct->unk2C3 = TRUE;
+ if (sLearnMoveStruct->unk18 != 2)
+ {
+ sub_813360C(1);
+ }
+ else if (sLearnMoveStruct->unk19 != sLearnMoveStruct->numMenuChoices - 3)
+ {
+ sLearnMoveStruct->unk19++;
+ sLearnMoveStruct->unk1E++;
+ }
+ }
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ if (sLearnMoveStruct->menuSelection != sLearnMoveStruct->numMenuChoices - 1)
+ {
+ sLearnMoveStruct->state = 8;
+ StringCopy(gStringVar2, sLearnMoveStruct->moveNames[sLearnMoveStruct->menuSelection]);
+ StringExpandPlaceholders(gStringVar4, gOtherText_TeachSpecificMove);
+ MenuPrintMessage(gStringVar4, 3, 15);
+ }
+ else
+ {
+ StringExpandPlaceholders(gStringVar4, gOtherText_GiveUpTeachingMove);
+ MenuPrintMessage(gStringVar4, 3, 15);
+ sLearnMoveStruct->state = 12;
+ }
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sLearnMoveStruct->state = 12;
+ StringExpandPlaceholders(gStringVar4, gOtherText_GiveUpTeachingMove);
+ MenuPrintMessage(gStringVar4, 3, 15);
+ }
+ if (sLearnMoveStruct->numMenuChoices > 3)
+ {
+ gSprites[2].invisible = FALSE;
+ gSprites[3].invisible = FALSE;
+ if (sLearnMoveStruct->unk19 == 0)
+ gSprites[2].invisible = TRUE;
+ else if (sLearnMoveStruct->unk19 == sLearnMoveStruct->numMenuChoices - 3)
+ gSprites[3].invisible = TRUE;
+ }
+}
+
+void sub_8133800(void)
+{
+ u8 r6 = sLearnMoveStruct->unk19;
+ u8 *str = gTileBuffer;
+ s32 i;
+
+ for (i = 0; i < 3; i++)
+ {
+ if (r6 >= sLearnMoveStruct->numMenuChoices)
+ {
+ str = sub_8072C74(str, gEmptyString_81E72B0, 0x90, 0);
+ }
+ else if (r6 == sLearnMoveStruct->numMenuChoices - 1)
+ {
+ str = sub_8072C74(str, gUnknownText_Exit, 0x90, 0);
+ }
+ else
+ {
+ u16 moveId = sLearnMoveStruct->movesToLearn[r6];
+
+ if (sLearnMoveStruct->showContestInfo)
+ str = sub_8072C74(str, gUnknown_083CAF70[gContestMoves[moveId].contestCategory], 0x27, 0);
+ else
+ str = sub_8072C74(str, gTypeNames[gBattleMoves[moveId].type], 0x27, 0);
+
+ str = sub_8072C74(str, sLearnMoveStruct->moveNames[r6], 0x72, 0);
+
+ str[0] = CHAR_P;
+ str[1] = CHAR_P;
+ str[2] = CHAR_SLASH;
+ str += 3;
+
+ str = sub_8072C14(str, gBattleMoves[moveId].pp, 0x90, 0);
+ }
+ *str++ = CHAR_NEWLINE;
+ r6++;
+ }
+ *str = EOS;
+ MenuPrint(gTileBuffer, 11, 1);
+ sub_813360C(0);
+}
+
+const u8 gUnknown_08402E24[7][3] =
+{
+ {11, 1, 1},
+ { 3, 6, 2},
+ {24, 1, 3},
+ { 3, 11, 4},
+ { 5, 4, 5},
+ { 3, 6, 6},
+ { 3, 11, 7},
+};
+
+const u8 gUnknown_08402E39[] = {0, 1, 2, 3};
+const u8 gUnknown_08402E3D[] = {4, 5, 6};
+
+void PrintMoveInfo(u16 moveId, const u8 *b)
+{
+ u8 str[0x34];
+ u8 numHearts;
+ u8 i;
+
+ StringCopy(str, gExpandedPlaceholder_Empty);
+ switch (b[2])
+ {
+ case 1:
+ break;
+ case 2:
+ if (gBattleMoves[moveId].power < 2)
+ sub_8072C74(str, gOtherText_ThreeDashes2, 32, 2);
+ else
+ sub_8072C14(str, gBattleMoves[moveId].power, 32, 2);
+ MenuPrint(str, b[0], b[1]);
+ break;
+ case 4:
+ if (gBattleMoves[moveId].accuracy == 0)
+ sub_8072C74(str, gOtherText_ThreeDashes2, 32, 2);
+ else
+ sub_8072C14(str, gBattleMoves[moveId].accuracy, 32, 2);
+ MenuPrint(str, b[0], b[1]);
+ break;
+ case 6:
+ MenuZeroFillWindowRect(b[0], b[1], b[0], b[1] + 1);
+ numHearts = gContestEffects[gContestMoves[moveId].effect].appeal / 10;
+ if (numHearts == 255)
+ numHearts = 0;
+ for (i = 0; i < 8; i++)
+ {
+ if (i < numHearts)
+ StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 4]], 1);
+ else
+ StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 4]], 0);
+ }
+ break;
+ case 7:
+ MenuZeroFillWindowRect(b[0], b[1], b[0], b[1] + 1);
+ numHearts = gContestEffects[gContestMoves[moveId].effect].jam / 10;
+ if (numHearts == 255)
+ numHearts = 0;
+ for (i = 0; i < 8; i++)
+ {
+ if (i < numHearts)
+ StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 12]], 3);
+ else
+ StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 12]], 2);
+ }
+ break;
+ }
+}
+
+void sub_8133AEC(bool8 contestInfo, int unused)
+{
+ u16 i;
+
+ if (sLearnMoveStruct->menuSelection != sLearnMoveStruct->numMenuChoices - 1)
+ {
+ u16 moveId = sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection];
+
+ if (contestInfo)
+ {
+ for (i = 0; i < 16; i++)
+ gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = FALSE;
+ for (i = 0; i < 3; i++)
+ PrintMoveInfo(moveId, gUnknown_08402E24[gUnknown_08402E3D[i]]);
+ sub_8072AB0(gUnknown_083CADD4[gContestMoves[moveId].effect], 0x58, 0x48, 0x90, 32, 1);
+ }
+ else
+ {
+ u8 var;
+
+ for (i = 0; i < 4; i++)
+ PrintMoveInfo(moveId, gUnknown_08402E24[gUnknown_08402E39[i]]);
+ var = sub_8072A18(gMoveDescriptions[moveId - 1], 0x58, 0x48, 0x90, 1);
+ if (var < 2)
+ {
+ u8 r1 = var * 2 + 9;
+
+ MenuFillWindowRectWithBlankTile(11, r1, 28, 12);
+ }
+ }
+ }
+ else
+ {
+ if (contestInfo)
+ {
+ MenuZeroFillWindowRect(gUnknown_08402E24[5][0], gUnknown_08402E24[5][1], gUnknown_08402E24[5][0], gUnknown_08402E24[5][1] + 1);
+ MenuZeroFillWindowRect(gUnknown_08402E24[6][0], gUnknown_08402E24[6][1], gUnknown_08402E24[6][0], gUnknown_08402E24[6][1] + 1);
+ for (i = 0; i < 16; i++)
+ gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = TRUE;
+ }
+ else
+ {
+ MenuZeroFillWindowRect(gUnknown_08402E24[1][0], gUnknown_08402E24[1][1], gUnknown_08402E24[1][0] + 3, gUnknown_08402E24[1][1] + 1);
+ MenuZeroFillWindowRect(gUnknown_08402E24[3][0], gUnknown_08402E24[3][1], gUnknown_08402E24[3][0] + 3, gUnknown_08402E24[3][1] + 1);
+ }
+ MenuZeroFillWindowRect(11, 9, 28, 12);
+ }
+}
+
+void sub_8133CA4(void)
+{
+ MenuZeroFillWindowRect(21, 7, 27, 12);
+ sub_8133AEC(sLearnMoveStruct->showContestInfo, 0);
+}
diff --git a/src/link.c b/src/link.c
index 5858ad8bf..850201ccb 100644
--- a/src/link.c
+++ b/src/link.c
@@ -2,7 +2,6 @@
#include "link.h"
#include "battle.h"
#include "berry.h"
-#include "berry_blender.h"
#include "hall_of_fame.h"
#include "item_use.h"
#include "main.h"
@@ -42,6 +41,8 @@ extern u16 gBattleTypeFlags;
extern u16 word_3004858;
+extern void Blender_SetBankBerryData(u8 bank, u16 itemID);
+
static void InitLinkTestBG(u8, u8, u8, u8);
void InitLinkTestBG_Unused(u8, u8, u8, u8);
void LinkTestScreen();
@@ -556,7 +557,7 @@ static void ProcessRecvCmds(u8 unusedParam)
sub_8007E24();
break;
case 0xAAAB:
- sub_80516C4(i, gRecvCmds[1][i]);
+ Blender_SetBankBerryData(i, gRecvCmds[1][i]);
break;
case 0xCCCC:
#if defined(ENGLISH)
diff --git a/src/load_save.c b/src/load_save.c
index 730aea2b8..8424b1121 100644
--- a/src/load_save.c
+++ b/src/load_save.c
@@ -3,7 +3,7 @@
#include "load_save.h"
#include "main.h"
#include "pokemon.h"
-#include "rom4.h"
+#include "overworld.h"
extern u8 gPlayerPartyCount;
diff --git a/src/m4a_4.c b/src/m4a_4.c
index 99195ec00..2e1d140b4 100644
--- a/src/m4a_4.c
+++ b/src/m4a_4.c
@@ -45,7 +45,7 @@ void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16
mplayInfo->ident = ID_NUMBER;
}
-void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 pitch)
+void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s16 pitch)
{
s32 i;
u32 bit;
diff --git a/src/mail.c b/src/mail.c
index 658d37976..c5dd119e3 100644
--- a/src/mail.c
+++ b/src/mail.c
@@ -8,7 +8,7 @@
#include "name_string_util.h"
#include "palette.h"
#include "pokemon_icon.h"
-#include "rom4.h"
+#include "overworld.h"
#include "sprite.h"
#include "string_util.h"
#include "strings2.h"
@@ -92,7 +92,7 @@ void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2)
ewram0.varFF = GAME_LANGUAGE;
ewram0.var100 = 1;
- ewram0.var104 = (MainCallback)sub_80EB3FC;
+ ewram0.var104 = (MainCallback)EasyChat_GetWordText;
ewram0.var108 = (MainCallback)ConvertEasyChatWordsToString;
mailDesign = arg0->itemId - ITEM_ORANGE_MAIL;
diff --git a/src/main.c b/src/main.c
index afaa0e77a..d7c11b6c8 100644
--- a/src/main.c
+++ b/src/main.c
@@ -9,7 +9,7 @@
#include "play_time.h"
#include "rng.h"
#include "rom3.h"
-#include "rom4.h"
+#include "overworld.h"
#include "rtc.h"
#include "siirtc.h"
#include "sound.h"
diff --git a/src/main_menu.c b/src/main_menu.c
index 09fd06d9e..e0af86f3d 100644
--- a/src/main_menu.c
+++ b/src/main_menu.c
@@ -10,7 +10,7 @@
#include "option_menu.h"
#include "palette.h"
#include "pokeball.h"
-#include "rom4.h"
+#include "overworld.h"
#include "rtc.h"
#include "save_menu_util.h"
#include "songs.h"
@@ -56,32 +56,14 @@ extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E79AC[];
extern u8 unk_2000000[];
-//Task data
-enum {
- TD_MENULAYOUT,
- TD_SELECTEDMENUITEM,
-};
-
//Menu layouts
-enum {
+enum
+{
HAS_NO_SAVED_GAME, //NEW GAME, OPTION
HAS_SAVED_GAME, //CONTINUE, NEW GAME, OPTION
HAS_MYSTERY_GIFT, //CONTINUE, NEW GAME, MYSTERY EVENTS, OPTION
};
-//Task data
-enum {
- TD_TRAINER_SPRITE_ID = 2, //Trainer sprite being displayed during gender menu
- TD_BGHOFS = 4, //Used to set REG_BG1HOFS and slide the platform around
- TD_SUBTASK_DONE, //Set to true if the spawned task has finished
- TD_GENDER_SELECTION,
- TD_COUNTER,
- TD_BIRCH_SPRITE_ID,
- TD_AZURILL_SPRITE_ID,
- TD_BRENDAN_SPRITE_ID,
- TD_MAY_SPRITE_ID
-};
-
static void CB2_MainMenu(void);
static void VBlankCB_MainMenu(void);
static void CB2_InitMainMenuFromOptions(void);
@@ -180,6 +162,9 @@ static void CB2_InitMainMenuFromOptions(void)
InitMainMenu(TRUE);
}
+#define tMenuLayout data[0]
+#define tMenuSelection data[1]
+
u32 InitMainMenu(u8 a1)
{
u16 savedIme;
@@ -239,7 +224,7 @@ u32 InitMainMenu(u8 a1)
| DISPCNT_WIN0_ON;
taskId = CreateTask(Task_MainMenuCheckSave, 0);
- gTasks[taskId].data[TD_SELECTEDMENUITEM] = 0;
+ gTasks[taskId].tMenuSelection = 0;
return 0;
}
@@ -261,9 +246,9 @@ void Task_MainMenuCheckSave(u8 taskId)
{
case 1:
if (IsMysteryGiftEnabled() == TRUE)
- gTasks[taskId].data[TD_MENULAYOUT] = HAS_MYSTERY_GIFT;
+ gTasks[taskId].tMenuLayout = HAS_MYSTERY_GIFT;
else
- gTasks[taskId].data[TD_MENULAYOUT] = HAS_SAVED_GAME;
+ gTasks[taskId].tMenuLayout = HAS_SAVED_GAME;
gTasks[taskId].func = Task_MainMenuCheckRtc;
break;
@@ -272,7 +257,7 @@ void Task_MainMenuCheckSave(u8 taskId)
MenuPrintMessage(gSaveFileDeletedMessage, 3, 15);
REG_WIN0H = WIN_RANGE(17, 223);
REG_WIN0V = WIN_RANGE(113, 159);
- gTasks[taskId].data[TD_MENULAYOUT] = HAS_NO_SAVED_GAME;
+ gTasks[taskId].tMenuLayout = HAS_NO_SAVED_GAME;
gTasks[taskId].func = Task_MainMenuWaitForSaveErrorAck;
break;
case 255:
@@ -280,17 +265,17 @@ void Task_MainMenuCheckSave(u8 taskId)
MenuPrintMessage(gSaveFileCorruptMessage, 3, 15);
REG_WIN0H = WIN_RANGE(17, 223);
REG_WIN0V = WIN_RANGE(113, 159);
- gTasks[taskId].data[TD_MENULAYOUT] = HAS_SAVED_GAME;
+ gTasks[taskId].tMenuLayout = HAS_SAVED_GAME;
gTasks[taskId].func = Task_MainMenuWaitForSaveErrorAck;
if (IsMysteryGiftEnabled() == TRUE)
- gTasks[taskId].data[TD_MENULAYOUT] = HAS_MYSTERY_GIFT;
+ gTasks[taskId].tMenuLayout = HAS_MYSTERY_GIFT;
else
- gTasks[taskId].data[TD_MENULAYOUT] = HAS_SAVED_GAME;
+ gTasks[taskId].tMenuLayout = HAS_SAVED_GAME;
break;
case 0:
default:
- gTasks[taskId].data[TD_MENULAYOUT] = HAS_NO_SAVED_GAME;
+ gTasks[taskId].tMenuLayout = HAS_NO_SAVED_GAME;
gTasks[taskId].func = Task_MainMenuCheckRtc;
break;
case 4:
@@ -298,7 +283,7 @@ void Task_MainMenuCheckSave(u8 taskId)
MenuPrintMessage(gBoardNotInstalledMessage, 3, 15);
REG_WIN0H = WIN_RANGE(17, 223);
REG_WIN0V = WIN_RANGE(113, 159);
- gTasks[taskId].data[TD_MENULAYOUT] = HAS_NO_SAVED_GAME;
+ gTasks[taskId].tMenuLayout = HAS_NO_SAVED_GAME;
gTasks[taskId].func = Task_MainMenuWaitForSaveErrorAck;
return;
}
@@ -383,7 +368,7 @@ void Task_MainMenuDraw(u8 taskId)
LoadPalette(&palette, 241, 2);
}
- switch (gTasks[taskId].data[TD_MENULAYOUT])
+ switch (gTasks[taskId].tMenuLayout)
{
case HAS_NO_SAVED_GAME:
default:
@@ -420,7 +405,7 @@ void Task_MainMenuDraw(u8 taskId)
void Task_MainMenuHighlight(u8 taskId)
{
- HighlightCurrentMenuItem(gTasks[taskId].data[TD_MENULAYOUT], gTasks[taskId].data[TD_SELECTEDMENUITEM]);
+ HighlightCurrentMenuItem(gTasks[taskId].tMenuLayout, gTasks[taskId].tMenuSelection);
gTasks[taskId].func = Task_MainMenuProcessKeyInput;
}
@@ -444,7 +429,7 @@ bool8 MainMenuProcessKeyInput(u8 taskId)
{
s32 menuItemCount;
- switch (gTasks[taskId].data[TD_MENULAYOUT])
+ switch (gTasks[taskId].tMenuLayout)
{
case HAS_NO_SAVED_GAME:
default:
@@ -460,17 +445,17 @@ bool8 MainMenuProcessKeyInput(u8 taskId)
if (gMain.newKeys & DPAD_UP)
{
- if (gTasks[taskId].data[TD_SELECTEDMENUITEM] > 0)
+ if (gTasks[taskId].tMenuSelection > 0)
{
- gTasks[taskId].data[TD_SELECTEDMENUITEM]--;
+ gTasks[taskId].tMenuSelection--;
return TRUE;
}
}
if (gMain.newKeys & DPAD_DOWN)
{
- if (gTasks[taskId].data[TD_SELECTEDMENUITEM] < menuItemCount - 1)
+ if (gTasks[taskId].tMenuSelection < menuItemCount - 1)
{
- gTasks[taskId].data[TD_SELECTEDMENUITEM]++;
+ gTasks[taskId].tMenuSelection++;
return TRUE;
}
}
@@ -499,11 +484,11 @@ void Task_MainMenuPressedA(u8 taskId)
if (gPaletteFade.active)
return;
- switch (gTasks[taskId].data[TD_MENULAYOUT])
+ switch (gTasks[taskId].tMenuLayout)
{
case HAS_NO_SAVED_GAME:
default:
- switch (gTasks[taskId].data[TD_SELECTEDMENUITEM])
+ switch (gTasks[taskId].tMenuSelection)
{
case 0:
default:
@@ -515,7 +500,7 @@ void Task_MainMenuPressedA(u8 taskId)
}
break;
case HAS_SAVED_GAME:
- switch (gTasks[taskId].data[TD_SELECTEDMENUITEM])
+ switch (gTasks[taskId].tMenuSelection)
{
case 0:
default:
@@ -530,7 +515,7 @@ void Task_MainMenuPressedA(u8 taskId)
}
break;
case HAS_MYSTERY_GIFT:
- switch (gTasks[taskId].data[TD_SELECTEDMENUITEM])
+ switch (gTasks[taskId].tMenuSelection)
{
case 0:
default:
@@ -584,6 +569,9 @@ void Task_MainMenuPressedB(u8 taskId)
}
}
+#undef tMenuLayout
+#undef tMenuSelection
+
void HighlightCurrentMenuItem(u8 layout, u8 menuItem)
{
REG_WIN0H = WIN_RANGE(9, 231);
@@ -710,6 +698,16 @@ void PrintBadgeCount(void)
MenuPrint_PixelCoords(buffer, 205, 40, 1);
}
+#define tTrainerSpriteId data[2]
+#define tBGhofs data[4]
+#define tSubtaskIsDone data[5]
+#define tGenderSelection data[6]
+#define tFrameCounter data[7]
+#define tBirchSpriteId data[8]
+#define tAzurillSpriteId data[9]
+#define tBrendanSpriteId data[10]
+#define tMaySpriteId data[11]
+
static void Task_NewGameSpeech1(u8 taskId)
{
SetUpWindowConfig(&gWindowConfig_81E6C3C);
@@ -732,25 +730,25 @@ static void Task_NewGameSpeech1(u8 taskId)
BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
REG_BG1CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(7) | BGCNT_16COLOR | BGCNT_TXT256x256;
REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP;
- gTasks[taskId].data[TD_BGHOFS] = 0;
+ gTasks[taskId].tBGhofs = 0;
gTasks[taskId].func = Task_NewGameSpeech2;
- gTasks[taskId].data[TD_TRAINER_SPRITE_ID] = 0xFF;
+ gTasks[taskId].tTrainerSpriteId = 0xFF;
gTasks[taskId].data[3] = 0xFF;
- gTasks[taskId].data[TD_COUNTER] = 216; //Wait 3.6 seconds (216 frames) before starting speech
+ gTasks[taskId].tFrameCounter = 216; //Wait 3.6 seconds (216 frames) before starting speech
PlayBGM(BGM_DOORO_X4);
}
static void Task_NewGameSpeech2(u8 taskId)
{
- if (gTasks[taskId].data[TD_COUNTER] != 0)
+ if (gTasks[taskId].tFrameCounter != 0)
{
- gTasks[taskId].data[TD_COUNTER]--;
+ gTasks[taskId].tFrameCounter--;
}
else
{
//Initialize Birch sprite
- u8 spriteId = gTasks[taskId].data[TD_BIRCH_SPRITE_ID];
+ u8 spriteId = gTasks[taskId].tBirchSpriteId;
gSprites[spriteId].pos1.x = 136;
gSprites[spriteId].pos1.y = 60;
@@ -758,19 +756,19 @@ static void Task_NewGameSpeech2(u8 taskId)
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
StartSpriteFadeIn(taskId, 10);
StartBackgroundFadeIn(taskId, 20);
- gTasks[taskId].data[TD_COUNTER] = 80;
+ gTasks[taskId].tFrameCounter = 80;
gTasks[taskId].func = Task_NewGameSpeech3;
}
}
static void Task_NewGameSpeech3(u8 taskId)
{
- if (gTasks[taskId].data[TD_SUBTASK_DONE] != FALSE)
+ if (gTasks[taskId].tSubtaskIsDone)
{
- gSprites[gTasks[taskId].data[TD_BIRCH_SPRITE_ID]].oam.objMode = ST_OAM_OBJ_NORMAL;
- if (gTasks[taskId].data[TD_COUNTER])
+ gSprites[gTasks[taskId].tBirchSpriteId].oam.objMode = ST_OAM_OBJ_NORMAL;
+ if (gTasks[taskId].tFrameCounter)
{
- gTasks[taskId].data[TD_COUNTER]--;
+ gTasks[taskId].tFrameCounter--;
}
else
{
@@ -801,7 +799,7 @@ static void Task_NewGameSpeech5(u8 taskId)
static void Task_NewGameSpeech6(u8 taskId)
{
- u8 spriteId = gTasks[taskId].data[TD_AZURILL_SPRITE_ID];
+ u8 spriteId = gTasks[taskId].tAzurillSpriteId;
gSprites[spriteId].pos1.x = 104;
gSprites[spriteId].pos1.y = 72;
@@ -809,7 +807,7 @@ static void Task_NewGameSpeech6(u8 taskId)
gSprites[spriteId].data0 = 0;
CreatePokeballSprite(spriteId, gSprites[spriteId].oam.paletteNum, 0x70, 0x3A, 0, 0, 0x20, 0x0000FFFF);
gTasks[taskId].func = Task_NewGameSpeech7;
- gTasks[taskId].data[TD_COUNTER] = 0;
+ gTasks[taskId].tFrameCounter = 0;
}
static void Task_NewGameSpeech7(u8 taskId)
@@ -817,18 +815,18 @@ static void Task_NewGameSpeech7(u8 taskId)
if (IsCryFinished())
{
//Go on to next sentence after frame 95
- if (gTasks[taskId].data[TD_COUNTER] > 95)
+ if (gTasks[taskId].tFrameCounter > 95)
{
MenuSetText(gSystemText_NewPara);
gTasks[taskId].func = Task_NewGameSpeech8;
}
}
- if (gTasks[taskId].data[TD_COUNTER] < 16384)
+ if (gTasks[taskId].tFrameCounter < 16384)
{
- gTasks[taskId].data[TD_COUNTER]++;
+ gTasks[taskId].tFrameCounter++;
//Play Azurill cry at frame 32
- if (gTasks[taskId].data[TD_COUNTER] == 32)
+ if (gTasks[taskId].tFrameCounter == 32)
PlayCry1(SPECIES_AZURILL, 0);
}
}
@@ -859,11 +857,11 @@ static void Task_NewGameSpeech10(u8 taskId)
{
if (BirchSpeechUpdateWindowText())
{
- gSprites[gTasks[taskId].data[TD_BIRCH_SPRITE_ID]].oam.objMode = ST_OAM_OBJ_BLEND;
- gSprites[gTasks[taskId].data[TD_AZURILL_SPRITE_ID]].oam.objMode = ST_OAM_OBJ_BLEND;
+ gSprites[gTasks[taskId].tBirchSpriteId].oam.objMode = ST_OAM_OBJ_BLEND;
+ gSprites[gTasks[taskId].tAzurillSpriteId].oam.objMode = ST_OAM_OBJ_BLEND;
StartSpriteFadeOut(taskId, 2);
StartBackgroundFadeOut(taskId, 1);
- gTasks[taskId].data[TD_COUNTER] = 64;
+ gTasks[taskId].tFrameCounter = 64;
gTasks[taskId].func = Task_NewGameSpeech11;
}
}
@@ -871,41 +869,41 @@ static void Task_NewGameSpeech10(u8 taskId)
//Slide platform away to the right
static void Task_NewGameSpeech11(u8 taskId)
{
- if (gTasks[taskId].data[TD_BGHOFS] != -60)
+ if (gTasks[taskId].tBGhofs != -60)
{
- gTasks[taskId].data[TD_BGHOFS] -= 2;
- REG_BG1HOFS = gTasks[taskId].data[TD_BGHOFS];
+ gTasks[taskId].tBGhofs -= 2;
+ REG_BG1HOFS = gTasks[taskId].tBGhofs;
}
else
{
- gTasks[taskId].data[TD_BGHOFS] = -60;
+ gTasks[taskId].tBGhofs = -60;
gTasks[taskId].func = Task_NewGameSpeech12;
}
}
static void Task_NewGameSpeech12(u8 taskId)
{
- if (gTasks[taskId].data[TD_SUBTASK_DONE])
+ if (gTasks[taskId].tSubtaskIsDone)
{
//Hide Birch and Azurill
- gSprites[gTasks[taskId].data[TD_BIRCH_SPRITE_ID]].invisible = TRUE;
- gSprites[gTasks[taskId].data[TD_AZURILL_SPRITE_ID]].invisible = TRUE;
+ gSprites[gTasks[taskId].tBirchSpriteId].invisible = TRUE;
+ gSprites[gTasks[taskId].tAzurillSpriteId].invisible = TRUE;
- if (gTasks[taskId].data[TD_COUNTER])
+ if (gTasks[taskId].tFrameCounter)
{
- gTasks[taskId].data[TD_COUNTER]--;
+ gTasks[taskId].tFrameCounter--;
}
else
{
//Initialize Brendan sprite
- u8 spriteId = gTasks[taskId].data[TD_BRENDAN_SPRITE_ID];
+ u8 spriteId = gTasks[taskId].tBrendanSpriteId;
gSprites[spriteId].pos1.x = 180;
gSprites[spriteId].pos1.y = 60;
gSprites[spriteId].invisible = FALSE;
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
- gTasks[taskId].data[TD_TRAINER_SPRITE_ID] = spriteId;
- gTasks[taskId].data[TD_GENDER_SELECTION] = 0;
+ gTasks[taskId].tTrainerSpriteId = spriteId;
+ gTasks[taskId].tGenderSelection = 0;
StartSpriteFadeIn(taskId, 2);
StartBackgroundFadeIn(taskId, 1);
gTasks[taskId].func = Task_NewGameSpeech13;
@@ -915,9 +913,9 @@ static void Task_NewGameSpeech12(u8 taskId)
static void Task_NewGameSpeech13(u8 taskId)
{
- if (gTasks[taskId].data[TD_SUBTASK_DONE])
+ if (gTasks[taskId].tSubtaskIsDone)
{
- gSprites[gTasks[taskId].data[TD_TRAINER_SPRITE_ID]].oam.objMode = ST_OAM_OBJ_NORMAL;
+ gSprites[gTasks[taskId].tTrainerSpriteId].oam.objMode = ST_OAM_OBJ_NORMAL;
gTasks[taskId].func = Task_NewGameSpeech14;
}
}
@@ -964,11 +962,11 @@ static void Task_NewGameSpeech16(u8 taskId)
cursorPos = GetMenuCursorPos();
- if (cursorPos != gTasks[taskId].data[TD_GENDER_SELECTION])
+ if (cursorPos != gTasks[taskId].tGenderSelection)
{
//Menu selection changed. Slide Brendan or May out and slide the other in
- gTasks[taskId].data[TD_GENDER_SELECTION] = cursorPos;
- gSprites[gTasks[taskId].data[TD_TRAINER_SPRITE_ID]].oam.objMode = ST_OAM_OBJ_BLEND;
+ gTasks[taskId].tGenderSelection = cursorPos;
+ gSprites[gTasks[taskId].tTrainerSpriteId].oam.objMode = ST_OAM_OBJ_BLEND;
StartSpriteFadeOut(taskId, 0);
gTasks[taskId].func = Task_NewGameSpeech17;
}
@@ -977,9 +975,9 @@ static void Task_NewGameSpeech16(u8 taskId)
//Slide old trainer sprite off right of screen
static void Task_NewGameSpeech17(u8 taskId)
{
- u8 spriteId = gTasks[taskId].data[TD_TRAINER_SPRITE_ID];
+ u8 spriteId = gTasks[taskId].tTrainerSpriteId;
- if (gTasks[taskId].data[TD_SUBTASK_DONE] == FALSE)
+ if (gTasks[taskId].tSubtaskIsDone == FALSE)
{
gSprites[spriteId].pos1.x += 4; //Move sprite right
}
@@ -988,14 +986,14 @@ static void Task_NewGameSpeech17(u8 taskId)
gSprites[spriteId].invisible = TRUE;
//Set up new trainer sprite
- if (gTasks[taskId].data[TD_GENDER_SELECTION])
- spriteId = gTasks[taskId].data[TD_MAY_SPRITE_ID];
+ if (gTasks[taskId].tGenderSelection)
+ spriteId = gTasks[taskId].tMaySpriteId;
else
- spriteId = gTasks[taskId].data[TD_BRENDAN_SPRITE_ID];
+ spriteId = gTasks[taskId].tBrendanSpriteId;
gSprites[spriteId].pos1.x = 240;
gSprites[spriteId].pos1.y = 60;
gSprites[spriteId].invisible = FALSE;
- gTasks[taskId].data[TD_TRAINER_SPRITE_ID] = spriteId;
+ gTasks[taskId].tTrainerSpriteId = spriteId;
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
StartSpriteFadeIn(taskId, 0);
gTasks[taskId].func = Task_NewGameSpeech18;
@@ -1005,7 +1003,7 @@ static void Task_NewGameSpeech17(u8 taskId)
//Slide new trainer sprite from right of screen
static void Task_NewGameSpeech18(u8 taskId)
{
- u8 spriteId = gTasks[taskId].data[TD_TRAINER_SPRITE_ID];
+ u8 spriteId = gTasks[taskId].tTrainerSpriteId;
if (gSprites[spriteId].pos1.x > 180)
{
@@ -1014,7 +1012,7 @@ static void Task_NewGameSpeech18(u8 taskId)
else
{
gSprites[spriteId].pos1.x = 180;
- if (gTasks[taskId].data[TD_SUBTASK_DONE])
+ if (gTasks[taskId].tSubtaskIsDone)
{
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_NORMAL;
gTasks[taskId].func = Task_NewGameSpeech16; //Go back to gender menu
@@ -1106,7 +1104,7 @@ static void Task_NewGameSpeech25(u8 taskId)
case 0: //YES
PlaySE(SE_SELECT);
MenuZeroFillWindowRect(2, 1, 8, 7);
- gSprites[gTasks[taskId].data[TD_TRAINER_SPRITE_ID]].oam.objMode = ST_OAM_OBJ_BLEND;
+ gSprites[gTasks[taskId].tTrainerSpriteId].oam.objMode = ST_OAM_OBJ_BLEND;
StartSpriteFadeOut(taskId, 2);
StartBackgroundFadeOut(taskId, 1);
gTasks[taskId].func = Task_NewGameSpeech26; //Continue
@@ -1122,10 +1120,10 @@ static void Task_NewGameSpeech25(u8 taskId)
static void Task_NewGameSpeech26(u8 taskId)
{
- if (gTasks[taskId].data[TD_BGHOFS])
+ if (gTasks[taskId].tBGhofs)
{
- gTasks[taskId].data[TD_BGHOFS] += 2;
- REG_BG1HOFS = gTasks[taskId].data[TD_BGHOFS];
+ gTasks[taskId].tBGhofs += 2;
+ REG_BG1HOFS = gTasks[taskId].tBGhofs;
}
else
{
@@ -1135,23 +1133,23 @@ static void Task_NewGameSpeech26(u8 taskId)
static void Task_NewGameSpeech27(u8 taskId)
{
- if (gTasks[taskId].data[TD_SUBTASK_DONE])
+ if (gTasks[taskId].tSubtaskIsDone)
{
s16 spriteId;
//Hide Brendan and May sprites
- spriteId = gTasks[taskId].data[TD_BRENDAN_SPRITE_ID];
+ spriteId = gTasks[taskId].tBrendanSpriteId;
gSprites[spriteId].invisible = TRUE;
- spriteId = gTasks[taskId].data[TD_MAY_SPRITE_ID];
+ spriteId = gTasks[taskId].tMaySpriteId;
gSprites[spriteId].invisible = TRUE;
//Fade in Birch and Azurill
- spriteId = (u8)gTasks[taskId].data[TD_BIRCH_SPRITE_ID];
+ spriteId = (u8)gTasks[taskId].tBirchSpriteId;
gSprites[spriteId].pos1.x = 136;
gSprites[spriteId].pos1.y = 64;
gSprites[spriteId].invisible = FALSE;
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
- spriteId = (u8)gTasks[taskId].data[TD_AZURILL_SPRITE_ID];
+ spriteId = (u8)gTasks[taskId].tAzurillSpriteId;
gSprites[spriteId].pos1.x = 104;
gSprites[spriteId].pos1.y = 72;
gSprites[spriteId].invisible = FALSE;
@@ -1170,27 +1168,27 @@ static void Task_NewGameSpeech27(u8 taskId)
static void Task_NewGameSpeech28(u8 taskId)
{
- if (gTasks[taskId].data[TD_SUBTASK_DONE])
+ if (gTasks[taskId].tSubtaskIsDone)
{
s16 spriteId;
- spriteId = gTasks[taskId].data[TD_BIRCH_SPRITE_ID];
+ spriteId = gTasks[taskId].tBirchSpriteId;
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_NORMAL;
- spriteId = gTasks[taskId].data[TD_AZURILL_SPRITE_ID];
+ spriteId = gTasks[taskId].tAzurillSpriteId;
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_NORMAL;
if (BirchSpeechUpdateWindowText())
{
//Fade out Birch and Azurill
- spriteId = gTasks[taskId].data[TD_BIRCH_SPRITE_ID];
+ spriteId = gTasks[taskId].tBirchSpriteId;
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
- spriteId = gTasks[taskId].data[TD_AZURILL_SPRITE_ID];
+ spriteId = gTasks[taskId].tAzurillSpriteId;
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
StartSpriteFadeOut(taskId, 2);
StartBackgroundFadeOut(taskId, 1);
- gTasks[taskId].data[TD_COUNTER] = 64;
+ gTasks[taskId].tFrameCounter = 64;
gTasks[taskId].func = Task_NewGameSpeech29;
}
}
@@ -1198,19 +1196,19 @@ static void Task_NewGameSpeech28(u8 taskId)
static void Task_NewGameSpeech29(u8 taskId)
{
- if (gTasks[taskId].data[TD_SUBTASK_DONE])
+ if (gTasks[taskId].tSubtaskIsDone)
{
s16 spriteId;
//Hide Birch and Azurill
- spriteId = gTasks[taskId].data[TD_BIRCH_SPRITE_ID];
+ spriteId = gTasks[taskId].tBirchSpriteId;
gSprites[spriteId].invisible = TRUE;
- spriteId = gTasks[taskId].data[TD_AZURILL_SPRITE_ID];
+ spriteId = gTasks[taskId].tAzurillSpriteId;
gSprites[spriteId].invisible = TRUE;
- if (gTasks[taskId].data[TD_COUNTER])
+ if (gTasks[taskId].tFrameCounter)
{
- gTasks[taskId].data[TD_COUNTER]--;
+ gTasks[taskId].tFrameCounter--;
}
else
{
@@ -1218,14 +1216,14 @@ static void Task_NewGameSpeech29(u8 taskId)
//Fade in trainer and background
if (gSaveBlock2.playerGender)
- spriteId = (u8)gTasks[taskId].data[TD_MAY_SPRITE_ID];
+ spriteId = (u8)gTasks[taskId].tMaySpriteId;
else
- spriteId = (u8)gTasks[taskId].data[TD_BRENDAN_SPRITE_ID];
+ spriteId = (u8)gTasks[taskId].tBrendanSpriteId;
gSprites[spriteId].pos1.x = 120;
gSprites[spriteId].pos1.y = 60;
gSprites[spriteId].invisible = FALSE;
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
- gTasks[taskId].data[TD_TRAINER_SPRITE_ID] = spriteId;
+ gTasks[taskId].tTrainerSpriteId = spriteId;
StartSpriteFadeIn(taskId, 2);
StartBackgroundFadeIn(taskId, 1);
@@ -1238,18 +1236,18 @@ static void Task_NewGameSpeech29(u8 taskId)
static void Task_NewGameSpeech30(u8 taskId)
{
- if (gTasks[taskId].data[TD_SUBTASK_DONE])
+ if (gTasks[taskId].tSubtaskIsDone)
{
s16 spriteId;
- spriteId = gTasks[taskId].data[TD_TRAINER_SPRITE_ID];
+ spriteId = gTasks[taskId].tTrainerSpriteId;
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_NORMAL;
if (BirchSpeechUpdateWindowText())
{
u8 spriteId;
- spriteId = gTasks[taskId].data[TD_TRAINER_SPRITE_ID];
+ spriteId = gTasks[taskId].tTrainerSpriteId;
gSprites[spriteId].oam.affineMode = 1;
gSprites[spriteId].affineAnims = gSpriteAffineAnimTable_81E79AC;
InitSpriteAffineAnim(&gSprites[spriteId]);
@@ -1264,7 +1262,7 @@ static void Task_NewGameSpeech30(u8 taskId)
static void Task_NewGameSpeech31(u8 taskId)
{
- u8 spriteId = gTasks[taskId].data[TD_TRAINER_SPRITE_ID];
+ u8 spriteId = gTasks[taskId].tTrainerSpriteId;
if (gSprites[spriteId].affineAnimEnded)
gTasks[taskId].func = Task_NewGameSpeech32;
@@ -1274,7 +1272,7 @@ static void Task_NewGameSpeech32(u8 taskId)
{
if (!gPaletteFade.active)
{
- u8 spriteId = gTasks[taskId].data[TD_TRAINER_SPRITE_ID];
+ u8 spriteId = gTasks[taskId].tTrainerSpriteId;
gSprites[spriteId].callback = nullsub_34;
REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON;
BeginNormalPaletteFade(0xFFFF0000, 0, 0, 0x10, 0xFFFF);
@@ -1328,7 +1326,7 @@ void CB_ContinueNewGameSpeechPart2()
taskId = CreateTask(Task_NewGameSpeech23, 0);
- gTasks[taskId].data[TD_BGHOFS] = -60;
+ gTasks[taskId].tBGhofs = -60;
remove_some_task();
ResetSpriteData();
@@ -1340,20 +1338,20 @@ void CB_ContinueNewGameSpeechPart2()
if (gSaveBlock2.playerGender != MALE)
{
- gTasks[taskId].data[TD_GENDER_SELECTION] = FEMALE;
- spriteId = gTasks[taskId].data[TD_MAY_SPRITE_ID];
+ gTasks[taskId].tGenderSelection = FEMALE;
+ spriteId = gTasks[taskId].tMaySpriteId;
}
else
{
- gTasks[taskId].data[TD_GENDER_SELECTION] = MALE;
- spriteId = gTasks[taskId].data[TD_BRENDAN_SPRITE_ID];
+ gTasks[taskId].tGenderSelection = MALE;
+ spriteId = gTasks[taskId].tBrendanSpriteId;
}
gSprites[spriteId].pos1.x = 180;
gSprites[spriteId].pos1.y = 60;
gSprites[spriteId].invisible = FALSE;
- gTasks[taskId].data[TD_TRAINER_SPRITE_ID] = spriteId;
+ gTasks[taskId].tTrainerSpriteId = spriteId;
REG_BG1HOFS = -60;
@@ -1412,56 +1410,67 @@ void AddBirchSpeechObjects(u8 taskId)
gSprites[spriteId].callback = nullsub_34;
gSprites[spriteId].oam.priority = 0;
gSprites[spriteId].invisible = 1;
- gTasks[taskId].data[TD_BIRCH_SPRITE_ID] = spriteId;
+ gTasks[taskId].tBirchSpriteId = spriteId;
spriteId = CreateAzurillSprite(0x68, 0x48);
gSprites[spriteId].callback = nullsub_34;
gSprites[spriteId].oam.priority = 0;
gSprites[spriteId].invisible = 1;
- gTasks[taskId].data[TD_AZURILL_SPRITE_ID] = spriteId;
+ gTasks[taskId].tAzurillSpriteId = spriteId;
//Create Brendan sprite
- spriteId = CreateTrainerSprite_BirchSpeech(0, 120, 60, 0, unk_2000000);
+ spriteId = CreateTrainerSprite(0, 120, 60, 0, unk_2000000);
gSprites[spriteId].callback = nullsub_34;
gSprites[spriteId].invisible = 1;
gSprites[spriteId].oam.priority = 0;
- gTasks[taskId].data[TD_BRENDAN_SPRITE_ID] = spriteId;
+ gTasks[taskId].tBrendanSpriteId = spriteId;
//Create May sprite
- spriteId = CreateTrainerSprite_BirchSpeech(1, 120, 60, 0, unk_2000000 + 0x800);
+ spriteId = CreateTrainerSprite(1, 120, 60, 0, unk_2000000 + 0x800);
gSprites[spriteId].callback = nullsub_34;
gSprites[spriteId].invisible = 1;
gSprites[spriteId].oam.priority = 0;
- gTasks[taskId].data[TD_MAY_SPRITE_ID] = spriteId;
+ gTasks[taskId].tMaySpriteId = spriteId;
}
-enum {
- TD_PARENT_TASK_ID,
- TD_EVA, //EVA coefficient of REG_BLDALPHA
- TD_EVB, //EVB coefficient of REG_BLDALPHA
- TD_INTERVAL,
- TD_FRAMECOUNTER
-};
+#undef tTrainerSpriteId
+#undef tBGhofs
+//#undef tSubtaskIsDone
+#undef tGenderSelection
+#undef tFrameCounter
+#undef tBirchSpriteId
+#undef tAzurillSpriteId
+#undef tBrendanSpriteId
+#undef tMaySpriteId
+
+
+// Sprite Fade task
+
+#define tMainTaskId data[0]
+#define tBlendEVA data[1]
+#define tBlendEVB data[2]
+#define tUpdateInterval data[3]
+#define tFrameCounter data[4]
static void Task_SpriteFadeOut(u8 taskId)
{
- if (gTasks[taskId].data[TD_EVA] == 0)
+ if (gTasks[taskId].tBlendEVA == 0)
{
- gTasks[gTasks[taskId].data[TD_PARENT_TASK_ID]].data[TD_SUBTASK_DONE] = TRUE;
+ gTasks[gTasks[taskId].tMainTaskId].tSubtaskIsDone = TRUE;
DestroyTask(taskId);
}
else
{
- if (gTasks[taskId].data[TD_FRAMECOUNTER])
+ if (gTasks[taskId].tFrameCounter)
{
- gTasks[taskId].data[TD_FRAMECOUNTER]--;
+ gTasks[taskId].tFrameCounter--;
}
else
{
- gTasks[taskId].data[TD_FRAMECOUNTER] = gTasks[taskId].data[TD_INTERVAL];
- gTasks[taskId].data[TD_EVA]--;
- gTasks[taskId].data[TD_EVB]++;
- REG_BLDALPHA = gTasks[taskId].data[TD_EVA] + (gTasks[taskId].data[TD_EVB] * 256);
+ gTasks[taskId].tFrameCounter = gTasks[taskId].tUpdateInterval;
+ gTasks[taskId].tBlendEVA--;
+ gTasks[taskId].tBlendEVB++;
+ REG_BLDALPHA = gTasks[taskId].tBlendEVA + (gTasks[taskId].tBlendEVB * 256);
}
}
}
@@ -1474,33 +1483,33 @@ static void StartSpriteFadeOut(u8 taskId, u8 interval)
REG_BLDCNT = 592;
REG_BLDALPHA = 16;
REG_BLDY = 0;
- gTasks[taskId].data[TD_SUBTASK_DONE] = FALSE;
+ gTasks[taskId].tSubtaskIsDone = FALSE;
newTaskId = CreateTask(Task_SpriteFadeOut, 0);
- gTasks[newTaskId].data[TD_PARENT_TASK_ID] = taskId;
- gTasks[newTaskId].data[TD_EVA] = 16;
- gTasks[newTaskId].data[TD_EVB] = 0;
- gTasks[newTaskId].data[TD_INTERVAL] = interval;
- gTasks[newTaskId].data[TD_FRAMECOUNTER] = interval;
+ gTasks[newTaskId].tMainTaskId = taskId;
+ gTasks[newTaskId].tBlendEVA = 16;
+ gTasks[newTaskId].tBlendEVB = 0;
+ gTasks[newTaskId].tUpdateInterval = interval;
+ gTasks[newTaskId].tFrameCounter = interval;
}
static void Task_SpriteFadeIn(u8 taskId)
{
- if (gTasks[taskId].data[TD_EVA] == 16)
+ if (gTasks[taskId].tBlendEVA == 16)
{
- gTasks[gTasks[taskId].data[TD_PARENT_TASK_ID]].data[TD_SUBTASK_DONE] = TRUE;
+ gTasks[gTasks[taskId].tMainTaskId].tSubtaskIsDone = TRUE;
DestroyTask(taskId);
}
- else if (gTasks[taskId].data[TD_FRAMECOUNTER])
+ else if (gTasks[taskId].tFrameCounter)
{
- gTasks[taskId].data[TD_FRAMECOUNTER]--;
+ gTasks[taskId].tFrameCounter--;
}
else
{
- gTasks[taskId].data[TD_FRAMECOUNTER] = gTasks[taskId].data[TD_INTERVAL];
- gTasks[taskId].data[TD_EVA]++;
- gTasks[taskId].data[TD_EVB]--;
- REG_BLDALPHA = gTasks[taskId].data[TD_EVA] + (gTasks[taskId].data[TD_EVB] * 256);
+ gTasks[taskId].tFrameCounter = gTasks[taskId].tUpdateInterval;
+ gTasks[taskId].tBlendEVA++;
+ gTasks[taskId].tBlendEVB--;
+ REG_BLDALPHA = gTasks[taskId].tBlendEVA + (gTasks[taskId].tBlendEVB * 256);
}
}
@@ -1512,36 +1521,49 @@ static void StartSpriteFadeIn(u8 taskId, u8 interval)
REG_BLDCNT = 592;
REG_BLDALPHA = 4096;
REG_BLDY = 0;
- gTasks[taskId].data[TD_SUBTASK_DONE] = FALSE;
+ gTasks[taskId].tSubtaskIsDone = FALSE;
newTaskId = CreateTask(Task_SpriteFadeIn, 0);
- gTasks[newTaskId].data[TD_PARENT_TASK_ID] = taskId;
- gTasks[newTaskId].data[TD_EVA] = 0;
- gTasks[newTaskId].data[TD_EVB] = 16;
- gTasks[newTaskId].data[TD_INTERVAL] = interval;
- gTasks[newTaskId].data[TD_FRAMECOUNTER] = interval;
+ gTasks[newTaskId].tMainTaskId = taskId;
+ gTasks[newTaskId].tBlendEVA = 0;
+ gTasks[newTaskId].tBlendEVB = 16;
+ gTasks[newTaskId].tUpdateInterval = interval;
+ gTasks[newTaskId].tFrameCounter = interval;
}
-enum {
- TD_FADELEVEL = 1,
- TD_DELAY,
-};
+#undef tMainTaskId
+#undef tBlendEVA
+#undef tBlendEVB
+#undef tUpdateInterval
+#undef tFrameCounter
+
+
+// Background fade task
+
+#define tMainTaskId data[0]
+#define tFadeLevel data[1]
+#define tDelay data[2]
+#define tUpdateInterval data[3]
+#define tFrameCounter data[4]
static void HandleFloorShadowFadeOut(u8 taskId)
{
- if (gTasks[taskId].data[TD_DELAY])
- gTasks[taskId].data[TD_DELAY]--;
+ if (gTasks[taskId].tDelay)
+ gTasks[taskId].tDelay--;
else
{
- if (gTasks[taskId].data[TD_FADELEVEL] == 8)
+ if (gTasks[taskId].tFadeLevel == 8)
DestroyTask(taskId);
- else if (gTasks[taskId].data[TD_FRAMECOUNTER])
- gTasks[taskId].data[TD_FRAMECOUNTER]--;
else
{
- gTasks[taskId].data[TD_FRAMECOUNTER] = gTasks[taskId].data[TD_INTERVAL];
- gTasks[taskId].data[TD_FADELEVEL]++;
- LoadPalette(&gUnknown_081E795C[gTasks[taskId].data[TD_FADELEVEL]], 1, 0x10);
+ if (gTasks[taskId].tFrameCounter)
+ gTasks[taskId].tFrameCounter--;
+ else
+ {
+ gTasks[taskId].tFrameCounter = gTasks[taskId].tUpdateInterval;
+ gTasks[taskId].tFadeLevel++;
+ LoadPalette(&gUnknown_081E795C[gTasks[taskId].tFadeLevel], 1, 0x10);
+ }
}
}
}
@@ -1550,30 +1572,30 @@ static void HandleFloorShadowFadeOut(u8 taskId)
static void StartBackgroundFadeOut(u8 taskId, u8 interval)
{
u8 newTaskId = CreateTask(HandleFloorShadowFadeOut, 0);
- gTasks[newTaskId].data[TD_PARENT_TASK_ID] = taskId;
- gTasks[newTaskId].data[TD_FADELEVEL] = 0;
- gTasks[newTaskId].data[TD_DELAY] = 8;
- gTasks[newTaskId].data[TD_INTERVAL] = interval;
- gTasks[newTaskId].data[TD_FRAMECOUNTER] = interval;
+ gTasks[newTaskId].tMainTaskId = taskId;
+ gTasks[newTaskId].tFadeLevel = 0;
+ gTasks[newTaskId].tDelay = 8;
+ gTasks[newTaskId].tUpdateInterval = interval;
+ gTasks[newTaskId].tFrameCounter = interval;
}
static void HandleFloorShadowFadeIn(u8 taskId)
{
- if (gTasks[taskId].data[TD_DELAY])
- gTasks[taskId].data[TD_DELAY]--;
+ if (gTasks[taskId].tDelay)
+ gTasks[taskId].tDelay--;
else
{
- if (gTasks[taskId].data[TD_FADELEVEL] == 0)
+ if (gTasks[taskId].tFadeLevel == 0)
DestroyTask(taskId);
else
{
- if (gTasks[taskId].data[TD_FRAMECOUNTER])
- gTasks[taskId].data[TD_FRAMECOUNTER]--;
+ if (gTasks[taskId].tFrameCounter)
+ gTasks[taskId].tFrameCounter--;
else
{
- gTasks[taskId].data[TD_FRAMECOUNTER] = gTasks[taskId].data[TD_INTERVAL];
- gTasks[taskId].data[TD_FADELEVEL]--;
- LoadPalette(&gUnknown_081E795C[gTasks[taskId].data[TD_FADELEVEL]], 1, 0x10);
+ gTasks[taskId].tFrameCounter = gTasks[taskId].tUpdateInterval;
+ gTasks[taskId].tFadeLevel--;
+ LoadPalette(&gUnknown_081E795C[gTasks[taskId].tFadeLevel], 1, 0x10);
}
}
}
@@ -1583,12 +1605,18 @@ static void HandleFloorShadowFadeIn(u8 taskId)
static void StartBackgroundFadeIn(u8 taskId, u8 interval)
{
u8 newTaskId = CreateTask(HandleFloorShadowFadeIn, 0);
- gTasks[newTaskId].data[TD_PARENT_TASK_ID] = taskId;
- gTasks[newTaskId].data[TD_FADELEVEL] = 8;
- gTasks[newTaskId].data[TD_DELAY] = 8;
- gTasks[newTaskId].data[TD_INTERVAL] = interval;
- gTasks[newTaskId].data[TD_FRAMECOUNTER] = interval;
-}
+ gTasks[newTaskId].tMainTaskId = taskId;
+ gTasks[newTaskId].tFadeLevel = 8;
+ gTasks[newTaskId].tDelay = 8;
+ gTasks[newTaskId].tUpdateInterval = interval;
+ gTasks[newTaskId].tFrameCounter = interval;
+}
+
+#undef tMainTaskId
+#undef tFadeLevel
+#undef tDelay
+#undef tUpdateInterval
+#undef tFrameCounter
static void CreateGenderMenu(u8 left, u8 top)
{
diff --git a/src/map_obj_lock.c b/src/map_obj_lock.c
index bd40bcacc..2856320b8 100644
--- a/src/map_obj_lock.c
+++ b/src/map_obj_lock.c
@@ -75,7 +75,7 @@ bool8 sub_8064DB4(void)
}
}
-void sub_8064DD8(void)
+void LockSelectedMapObject(void)
{
u8 taskId;
FreezeMapObjectsExceptOne(gSelectedMapObject);
diff --git a/src/matsuda_debug_menu.c b/src/matsuda_debug_menu.c
index 3665cabd8..c7d81f502 100644
--- a/src/matsuda_debug_menu.c
+++ b/src/matsuda_debug_menu.c
@@ -8,7 +8,7 @@
#include "main.h"
#include "menu.h"
#include "palette.h"
-#include "rom4.h"
+#include "overworld.h"
#include "sprite.h"
#include "start_menu.h"
#include "string_util.h"
diff --git a/src/mauville_man.c b/src/mauville_man.c
new file mode 100644
index 000000000..33bc39648
--- /dev/null
+++ b/src/mauville_man.c
@@ -0,0 +1,1311 @@
+#include "global.h"
+#include "bard_music.h"
+#include "mauville_man.h"
+#include "easy_chat.h"
+#include "event_data.h"
+#include "field_message_box.h"
+#include "m4a.h"
+#include "menu.h"
+#include "overworld.h"
+#include "rng.h"
+#include "script.h"
+#include "songs.h"
+#include "sound.h"
+#include "string_util.h"
+#include "strings.h"
+#include "task.h"
+#include "trader.h"
+
+#define MACRO1(a) (((a) % 4) + (((a) / 8) & 1))
+
+extern struct MusicPlayerInfo gMPlay_SE2;
+
+extern u16 gScriptResult;
+extern u16 gSpecialVar_0x8004;
+
+extern const u8 gTextStoryteller_Story1Title[];
+extern const u8 gTextStoryteller_Story1Action[];
+extern const u8 gTextStoryteller_Story1Text[];
+extern const u8 gTextStoryteller_Story2Title[];
+extern const u8 gTextStoryteller_Story2Action[];
+extern const u8 gTextStoryteller_Story2Text[];
+extern const u8 gTextStoryteller_Story3Title[];
+extern const u8 gTextStoryteller_Story3Action[];
+extern const u8 gTextStoryteller_Story3Text[];
+extern const u8 gTextStoryteller_Story4Title[];
+extern const u8 gTextStoryteller_Story4Action[];
+extern const u8 gTextStoryteller_Story4Text[];
+extern const u8 gTextStoryteller_Story5Title[];
+extern const u8 gTextStoryteller_Story5Action[];
+extern const u8 gTextStoryteller_Story5Text[];
+extern const u8 gTextStoryteller_Story6Title[];
+extern const u8 gTextStoryteller_Story6Action[];
+extern const u8 gTextStoryteller_Story6Text[];
+extern const u8 gTextStoryteller_Story7Title[];
+extern const u8 gTextStoryteller_Story7Action[];
+extern const u8 gTextStoryteller_Story7Text[];
+extern const u8 gTextStoryteller_Story8Title[];
+extern const u8 gTextStoryteller_Story8Action[];
+extern const u8 gTextStoryteller_Story8Text[];
+extern const u8 gTextStoryteller_Story9Title[];
+extern const u8 gTextStoryteller_Story9Action[];
+extern const u8 gTextStoryteller_Story9Text[];
+extern const u8 gTextStoryteller_Story10Title[];
+extern const u8 gTextStoryteller_Story10Action[];
+extern const u8 gTextStoryteller_Story10Text[];
+extern const u8 gTextStoryteller_Story11Title[];
+extern const u8 gTextStoryteller_Story11Action[];
+extern const u8 gTextStoryteller_Story11Text[];
+extern const u8 gTextStoryteller_Story12Title[];
+extern const u8 gTextStoryteller_Story12Action[];
+extern const u8 gTextStoryteller_Story12Text[];
+extern const u8 gTextStoryteller_Story13Title[];
+extern const u8 gTextStoryteller_Story13Action[];
+extern const u8 gTextStoryteller_Story13Text[];
+extern const u8 gTextStoryteller_Story14Title[];
+extern const u8 gTextStoryteller_Story14Action[];
+extern const u8 gTextStoryteller_Story14Text[];
+extern const u8 gTextStoryteller_Story15Title[];
+extern const u8 gTextStoryteller_Story15Action[];
+extern const u8 gTextStoryteller_Story15Text[];
+extern const u8 gTextStoryteller_Story16Title[];
+extern const u8 gTextStoryteller_Story16Action[];
+extern const u8 gTextStoryteller_Story16Text[];
+extern const u8 gTextStoryteller_Story17Title[];
+extern const u8 gTextStoryteller_Story17Action[];
+extern const u8 gTextStoryteller_Story17Text[];
+extern const u8 gTextStoryteller_Story18Title[];
+extern const u8 gTextStoryteller_Story18Action[];
+extern const u8 gTextStoryteller_Story18Text[];
+extern const u8 gTextStoryteller_Story19Title[];
+extern const u8 gTextStoryteller_Story19Action[];
+extern const u8 gTextStoryteller_Story19Text[];
+extern const u8 gTextStoryteller_Story20Title[];
+extern const u8 gTextStoryteller_Story20Action[];
+extern const u8 gTextStoryteller_Story20Text[];
+extern const u8 gTextStoryteller_Story21Title[];
+extern const u8 gTextStoryteller_Story21Action[];
+extern const u8 gTextStoryteller_Story21Text[];
+extern const u8 gTextStoryteller_Story22Title[];
+extern const u8 gTextStoryteller_Story22Action[];
+extern const u8 gTextStoryteller_Story22Text[];
+extern const u8 gTextStoryteller_Story23Title[];
+extern const u8 gTextStoryteller_Story23Action[];
+extern const u8 gTextStoryteller_Story23Text[];
+extern const u8 gTextStoryteller_Story24Title[];
+extern const u8 gTextStoryteller_Story24Action[];
+extern const u8 gTextStoryteller_Story24Text[];
+extern const u8 gTextStoryteller_Story25Title[];
+extern const u8 gTextStoryteller_Story25Action[];
+extern const u8 gTextStoryteller_Story25Text[];
+extern const u8 gTextStoryteller_Story26Title[];
+extern const u8 gTextStoryteller_Story26Action[];
+extern const u8 gTextStoryteller_Story26Text[];
+extern const u8 gTextStoryteller_Story27Title[];
+extern const u8 gTextStoryteller_Story27Action[];
+extern const u8 gTextStoryteller_Story27Text[];
+extern const u8 gTextStoryteller_Story28Title[];
+extern const u8 gTextStoryteller_Story28Action[];
+extern const u8 gTextStoryteller_Story28Text[];
+extern const u8 gTextStoryteller_Story29Title[];
+extern const u8 gTextStoryteller_Story29Action[];
+extern const u8 gTextStoryteller_Story29Text[];
+extern const u8 gTextStoryteller_Story30Title[];
+extern const u8 gTextStoryteller_Story30Action[];
+extern const u8 gTextStoryteller_Story30Text[];
+extern const u8 gTextStoryteller_Story31Title[];
+extern const u8 gTextStoryteller_Story31Action[];
+extern const u8 gTextStoryteller_Story31Text[];
+extern const u8 gTextStoryteller_Story32Title[];
+extern const u8 gTextStoryteller_Story32Action[];
+extern const u8 gTextStoryteller_Story32Text[];
+extern const u8 gTextStoryteller_Story33Title[];
+extern const u8 gTextStoryteller_Story33Action[];
+extern const u8 gTextStoryteller_Story33Text[];
+extern const u8 gTextStoryteller_Story34Title[];
+extern const u8 gTextStoryteller_Story34Action[];
+extern const u8 gTextStoryteller_Story34Text[];
+extern const u8 gTextStoryteller_Story35Title[];
+extern const u8 gTextStoryteller_Story35Action[];
+extern const u8 gTextStoryteller_Story35Text[];
+extern const u8 gTextStoryteller_Story36Title[];
+extern const u8 gTextStoryteller_Story36Action[];
+extern const u8 gTextStoryteller_Story36Text[];
+
+extern struct BardSong gUnknown_03005DA0;
+
+EWRAM_DATA static u16 gUnknown_020388BC = 0; // set but not used?
+
+static const u16 sDefaultBardSongLyrics[] =
+{
+#ifdef ENGLISH
+ EC_WORD_SISTER,
+ EC_WORD_EATS,
+ EC_WORD_SWEETS,
+ EC_WORD_VORACIOUS,
+ EC_WORD_AND,
+ EC_WORD_DROOLING,
+#else
+ EC_WORD_SISTER,
+ EC_WORD_MUST_BE,
+ EC_WORD_SWEETS,
+ EC_WORD_VORACIOUS,
+ EC_WORD_DROOLING,
+ EC_WORD_THICK,
+#endif
+};
+
+static const u8 *const sGiddyAdjectives[] =
+{
+ OtherText_SoPretty,
+ OtherText_SoDarling,
+ OtherText_SoRelaxed,
+ OtherText_SoSunny,
+ OtherText_SoDesirable,
+ OtherText_SoExciting,
+ OtherText_SoAmusing,
+ OtherText_SoMagical,
+};
+
+static const u8 *const sGiddyQuestions[] =
+{
+ OtherText_WantVacationNicePlace,
+ OtherText_BoughtCrayonsIsNice,
+ OtherText_IfWeCouldFloat,
+ OtherText_SandWashesAwayMakeSad,
+ OtherText_WhatsBottomSeaLike,
+ OtherText_SeeSettingSun,
+ OtherText_LyingInGreenGrass,
+ OtherText_SecretBasesWonderful,
+};
+
+static void sub_80F7DC0(void);
+static void Task_BardSong(u8);
+static void StartBardSong(u8);
+static void StorytellerSetup(void);
+static void sub_80F8428(void);
+
+static void SetupBard(void)
+{
+ u16 i;
+ struct MauvilleManBard *bard = &gSaveBlock1.mauvilleMan.bard;
+
+ bard->id = MAUVILLE_MAN_BARD;
+ bard->hasChangedSong = FALSE;
+ for (i = 0; i < 6; i++)
+ bard->songLyrics[i] = sDefaultBardSongLyrics[i];
+}
+
+static void SetupHipster(void)
+{
+ struct MauvilleManHipster *hipster = &gSaveBlock1.mauvilleMan.hipster;
+
+ hipster->id = MAUVILLE_MAN_HIPSTER;
+ hipster->alreadySpoken = FALSE;
+}
+
+static void SetupStoryteller(void)
+{
+ StorytellerSetup();
+}
+
+static void SetupGiddy(void)
+{
+ struct MauvilleManGiddy *giddy = &gSaveBlock1.mauvilleMan.giddy;
+
+ giddy->id = MAUVILLE_MAN_GIDDY;
+ giddy->taleCounter = 0;
+}
+
+static void SetupTrader(void)
+{
+ TraderSetup();
+}
+
+void SetupMauvilleOldMan(void)
+{
+ u16 trainerId = (gSaveBlock2.playerTrainerId[1] << 8) | gSaveBlock2.playerTrainerId[0];
+
+ // Determine man based on the last digit of the player's trainer ID.
+ switch ((trainerId % 10) / 2)
+ {
+ case MAUVILLE_MAN_BARD:
+ SetupBard();
+ break;
+ case MAUVILLE_MAN_HIPSTER:
+ SetupHipster();
+ break;
+ case MAUVILLE_MAN_TRADER:
+ SetupTrader();
+ break;
+ case MAUVILLE_MAN_STORYTELLER:
+ SetupStoryteller();
+ break;
+ case MAUVILLE_MAN_GIDDY:
+ SetupGiddy();
+ break;
+ }
+ sub_80F83D0();
+}
+
+static u8 GetCurrentMauvilleOldMan(void)
+{
+ struct MauvilleManCommon *common = &gSaveBlock1.mauvilleMan.common;
+
+ return common->id;
+}
+
+void ScrSpecial_GetCurrentMauvilleMan(void)
+{
+ gScriptResult = GetCurrentMauvilleOldMan();
+}
+
+void ScrSpecial_HasBardSongBeenChanged(void)
+{
+ u16 *scriptResult = &gScriptResult; // why??
+ struct MauvilleManBard *bard = &gSaveBlock1.mauvilleMan.bard;
+
+ *scriptResult = bard->hasChangedSong;
+}
+
+void ScrSpecial_SaveBardSongLyrics(void)
+{
+ u16 i;
+ struct MauvilleManBard *bard = &gSaveBlock1.mauvilleMan.bard;
+
+ StringCopy(bard->playerName, gSaveBlock2.playerName);
+
+ for (i = 0; i < 4; i++)
+ bard->playerTrainerId[i] = gSaveBlock2.playerTrainerId[i];
+
+ for (i = 0; i < 6; i++)
+ bard->songLyrics[i] = bard->temporaryLyrics[i];
+
+ bard->hasChangedSong = TRUE;
+}
+
+// Copies lyrics into gStringVar4
+void PrepareSongText(void)
+{
+ struct MauvilleManBard *bard = &gSaveBlock1.mauvilleMan.bard;
+ u16 specialVar = gSpecialVar_0x8004; // It's a bit odd to use this temp variable, but it seems needed to match.
+ u16 *lyrics;
+ u16 lineNum;
+ u8 *wordEnd;
+ u8 *str;
+
+ lyrics = bard->temporaryLyrics;
+ if (specialVar == 0)
+ lyrics = bard->songLyrics;
+ wordEnd = gStringVar4;
+ str = wordEnd;
+ // Put three words on each line
+ for (lineNum = 0; lineNum < 2; lineNum++)
+ {
+ wordEnd = EasyChat_GetWordText(wordEnd, *(lyrics++));
+ while (wordEnd != str)
+ {
+ if (*str == CHAR_SPACE)
+ *str = CHAR_SONG_WORD_SEPARATOR;
+ str++;
+ }
+
+ str++;
+ *(wordEnd++) = CHAR_SPACE;
+
+ wordEnd = EasyChat_GetWordText(wordEnd, *(lyrics++));
+ while (wordEnd != str)
+ {
+ if (*str == CHAR_SPACE)
+ *str = CHAR_SONG_WORD_SEPARATOR;
+ str++;
+ }
+
+ str++;
+ *(wordEnd++) = CHAR_NEWLINE;
+
+ wordEnd = EasyChat_GetWordText(wordEnd, *(lyrics++));
+ while (wordEnd != str)
+ {
+ if (*str == CHAR_SPACE)
+ *str = CHAR_SONG_WORD_SEPARATOR;
+ str++;
+ }
+
+ if (lineNum == 0)
+ {
+ *(wordEnd++) = EXT_CTRL_CODE_BEGIN;
+ *(wordEnd++) = 15;
+ }
+ }
+}
+
+void ScrSpecial_PlayBardSong(void)
+{
+ StartBardSong(gSpecialVar_0x8004);
+ MenuDisplayMessageBox();
+ ScriptContext1_Stop();
+}
+
+void ScrSpecial_GetHipsterSpokenFlag(void)
+{
+ u16 *scriptResult = &gScriptResult; // again??
+ struct MauvilleManHipster *hipster = &gSaveBlock1.mauvilleMan.hipster;
+
+ *scriptResult = hipster->alreadySpoken;
+}
+
+void ScrSpecial_SetHipsterSpokenFlag(void)
+{
+ struct MauvilleManHipster *hipster = &gSaveBlock1.mauvilleMan.hipster;
+
+ hipster->alreadySpoken = TRUE;
+}
+
+void ScrSpecial_HipsterTeachWord(void)
+{
+ u16 var = sub_80EB8EC();
+
+ if (var == 0xFFFF)
+ {
+ gScriptResult = FALSE;
+ }
+ else
+ {
+ EasyChat_GetWordText(gStringVar1, var);
+ gScriptResult = TRUE;
+ }
+}
+
+void ScrSpecial_GiddyShouldTellAnotherTale(void)
+{
+ struct MauvilleManGiddy *giddy = &gSaveBlock1.mauvilleMan.giddy;
+
+ if (giddy->taleCounter == 10)
+ {
+ gScriptResult = FALSE;
+ giddy->taleCounter = 0;
+ }
+ else
+ {
+ gScriptResult = TRUE;
+ }
+}
+
+void ScrSpecial_GenerateGiddyLine(void)
+{
+ struct MauvilleManGiddy *giddy = &gSaveBlock1.mauvilleMan.giddy;
+
+ if (giddy->taleCounter == 0)
+ sub_80F7DC0();
+
+ if (giddy->randomWords[giddy->taleCounter] != 0xFFFF) // is not the last element of the array?
+ {
+ u8 *stringPtr;
+ u32 adjective = Random();
+
+ adjective %= 8;
+ stringPtr = EasyChat_GetWordText(gStringVar4, giddy->randomWords[giddy->taleCounter]);
+ stringPtr = StringCopy(stringPtr, gOtherText_Is);
+ stringPtr = StringCopy(stringPtr, sGiddyAdjectives[adjective]);
+ StringCopy(stringPtr, gOtherText_DontYouAgree);
+ }
+ else
+ {
+ StringCopy(gStringVar4, sGiddyQuestions[giddy->questionList[giddy->questionNum++]]);
+ }
+
+ if (!(Random() % 10))
+ giddy->taleCounter = 10;
+ else
+ giddy->taleCounter++;
+
+ gScriptResult = TRUE;
+}
+
+#ifdef NONMATCHING
+static void sub_80F7DC0(void)
+{
+ u16 arr[][2] =
+ {
+ { 0x0, 0},
+ { 0xC, 0},
+ { 0xD, 0},
+ {0x12, 0},
+ {0x13, 0},
+ {0x15, 0},
+ };
+ u16 i;
+ u16 r10;
+ u16 r7;
+
+ for (i = 0; i < 8; i++)
+ {
+ struct MauvilleManGiddy *giddy = &gSaveBlock1.mauvilleMan.giddy;
+
+ //gSaveBlock1.mauvilleMan.giddy.questionList[i] = i;
+ giddy->questionList[i] = i;
+ }
+
+ // Scramble questions
+ for (i = 0; i < 8; i++)
+ {
+ struct MauvilleManGiddy *giddy = &gSaveBlock1.mauvilleMan.giddy;
+
+ /*
+ u16 r1 = Random() % (i + 1);
+ u8 r7 = gSaveBlock1.mauvilleMan.giddy.questionList[i];
+ gSaveBlock1.mauvilleMan.giddy.questionList[i] = gSaveBlock1.mauvilleMan.giddy.questionList[r1];
+ gSaveBlock1.mauvilleMan.giddy.questionList[r1] = r7;
+ */
+ u16 r1 = Random() % (i + 1);
+ u8 r7 = giddy->questionList[i];
+ giddy->questionList[i] = giddy->questionList[r1];
+ giddy->questionList[r1] = r7;
+ }
+
+ r10 = 0;
+ for (i = 0; i < 6; i++)
+ {
+ arr[i][1] = sub_80EAE88(arr[i][0]);
+ r10 += arr[i][1];
+ }
+
+ {
+ struct MauvilleManGiddy *giddy = &gSaveBlock1.mauvilleMan.giddy;
+ giddy->questionNum = 0;
+ }
+ //gSaveBlock1.mauvilleMan.giddy.questionNum = 0;
+
+ r7 = 0;
+ for (i = 0; i < 10; i++)
+ {
+ struct MauvilleManGiddy *giddy = &gSaveBlock1.mauvilleMan.giddy;
+
+ u16 var = Random() % 10;
+ if (var < 3 && r7 < 8)
+ {
+ //gSaveBlock1.mauvilleMan.giddy.randomWords[i] = 0xFFFF;
+ giddy->randomWords[i] = 0xFFFF;
+ r7++;
+ }
+ //_080F7E90
+ else
+ {
+ s16 r2 = Random() % r10;
+
+ u16 r1 = 0;
+
+ while (i < 6) // comparing the wrong variable
+ {
+ r2 = arr[r1][1] - r2;
+ if (r2 <= 0)
+ break;
+ r1++;
+ }
+
+ if (r1 == 6)
+ r1 = 0;
+ //gSaveBlock1.mauvilleMan.giddy.randomWords[i] = sub_80EB784(arr[r1][0]);
+ giddy->randomWords[i] = sub_80EB784(arr[r1][0]);
+ }
+ }
+}
+#else
+
+static const u16 gUnknown_083E53C8[][2] =
+{
+ { 0x0, 0},
+ { 0xC, 0},
+ { 0xD, 0},
+ {0x12, 0},
+ {0x13, 0},
+ {0x15, 0},
+};
+
+__attribute__((naked))
+static void sub_80F7DC0(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x18\n\
+ ldr r1, _080F7E84 @ =gUnknown_083E53C8\n\
+ mov r0, sp\n\
+ movs r2, 0x18\n\
+ bl memcpy\n\
+ movs r5, 0\n\
+ movs r0, 0x2\n\
+ add r0, sp\n\
+ mov r8, r0\n\
+ ldr r1, _080F7E88 @ =gSaveBlock1 + 0x2D94\n\
+ adds r1, 0x18\n\
+ adds r3, r1, 0\n\
+_080F7DE4:\n\
+ adds r0, r3, r5\n\
+ strb r5, [r0]\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ cmp r5, 0x7\n\
+ bls _080F7DE4\n\
+ movs r5, 0\n\
+ ldr r2, _080F7E88 @ =gSaveBlock1 + 0x2D94\n\
+ adds r2, 0x4\n\
+ mov r9, r2\n\
+ adds r6, r1, 0\n\
+_080F7DFC:\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ adds r4, r5, 0x1\n\
+ adds r1, r4, 0\n\
+ bl __modsi3\n\
+ lsls r0, 16\n\
+ lsrs r1, r0, 16\n\
+ adds r2, r6, r5\n\
+ ldrb r7, [r2]\n\
+ adds r1, r6, r1\n\
+ ldrb r0, [r1]\n\
+ strb r0, [r2]\n\
+ strb r7, [r1]\n\
+ lsls r4, 16\n\
+ lsrs r5, r4, 16\n\
+ cmp r5, 0x7\n\
+ bls _080F7DFC\n\
+ movs r3, 0\n\
+ mov r10, r3\n\
+ movs r5, 0\n\
+_080F7E2A:\n\
+ lsls r4, r5, 2\n\
+ mov r1, sp\n\
+ adds r0, r1, r4\n\
+ ldrb r0, [r0]\n\
+ bl sub_80EAE88\n\
+ add r4, r8\n\
+ strh r0, [r4]\n\
+ add r0, r10\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r10, r0\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ cmp r5, 0x5\n\
+ bls _080F7E2A\n\
+ movs r0, 0\n\
+ ldr r2, _080F7E88 @ =gSaveBlock1 + 0x2D94\n\
+ strb r0, [r2, 0x2]\n\
+ movs r7, 0\n\
+ movs r5, 0\n\
+_080F7E56:\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0xA\n\
+ bl __umodsi3\n\
+ lsls r0, 16\n\
+ lsrs r1, r0, 16\n\
+ cmp r1, 0x2\n\
+ bhi _080F7E90\n\
+ cmp r7, 0x7\n\
+ bhi _080F7E90\n\
+ lsls r0, r5, 1\n\
+ add r0, r9\n\
+ ldr r1, _080F7E8C @ =0x0000ffff\n\
+ strh r1, [r0]\n\
+ adds r0, r7, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r7, r0, 16\n\
+ adds r4, r5, 0x1\n\
+ b _080F7EE2\n\
+ .align 2, 0\n\
+_080F7E84: .4byte gUnknown_083E53C8\n\
+_080F7E88: .4byte gSaveBlock1 + 0x2D94\n\
+_080F7E8C: .4byte 0x0000ffff\n\
+_080F7E90:\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r1, r10\n\
+ bl __umodsi3\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ movs r1, 0\n\
+ adds r4, r5, 0x1\n\
+ lsls r6, r5, 1\n\
+ cmp r5, 0x5\n\
+ bhi _080F7ECC\n\
+ mov r3, r8\n\
+ ldrh r0, [r3]\n\
+ b _080F7EC2\n\
+_080F7EB2:\n\
+ adds r0, r1, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r1, r0, 16\n\
+ cmp r5, 0x5\n\
+ bhi _080F7ECC\n\
+ lsls r0, r1, 2\n\
+ adds r0, r3, r0\n\
+ ldrh r0, [r0]\n\
+_080F7EC2:\n\
+ subs r0, r2, r0\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ cmp r0, 0\n\
+ bgt _080F7EB2\n\
+_080F7ECC:\n\
+ cmp r1, 0x6\n\
+ bne _080F7ED2\n\
+ movs r1, 0\n\
+_080F7ED2:\n\
+ lsls r0, r1, 2\n\
+ add r0, sp\n\
+ ldrh r0, [r0]\n\
+ bl sub_80EB784\n\
+ mov r2, r9\n\
+ adds r1, r2, r6\n\
+ strh r0, [r1]\n\
+_080F7EE2:\n\
+ lsls r0, r4, 16\n\
+ lsrs r5, r0, 16\n\
+ cmp r5, 0x9\n\
+ bls _080F7E56\n\
+ add sp, 0x18\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided\n");
+}
+#endif
+
+static void sub_80F7EFC(void)
+{
+ struct MauvilleManBard *bard = &gSaveBlock1.mauvilleMan.bard;
+
+ bard->hasChangedSong = FALSE;
+}
+
+static void sub_80F7F0C(void)
+{
+ struct MauvilleManHipster *hipster = &gSaveBlock1.mauvilleMan.hipster;
+
+ hipster->alreadySpoken = FALSE;
+}
+
+static void sub_80F7F18(void)
+{
+ sub_8109A20();
+}
+
+static void sub_80F7F24(void)
+{
+ sub_80F8428();
+}
+
+void sub_80F7F30(void)
+{
+ switch (GetCurrentMauvilleOldMan())
+ {
+ case MAUVILLE_MAN_BARD:
+ sub_80F7EFC();
+ break;
+ case MAUVILLE_MAN_HIPSTER:
+ sub_80F7F0C();
+ break;
+ case MAUVILLE_MAN_STORYTELLER:
+ sub_80F7F24();
+ break;
+ case MAUVILLE_MAN_TRADER:
+ sub_80F7F18();
+ break;
+ case MAUVILLE_MAN_GIDDY:
+ break;
+ }
+ sub_80F83D0();
+}
+
+#define tState data[0]
+#define tCharIndex data[3]
+#define tCurrWord data[4]
+#define tUseTemporaryLyrics data[5]
+
+static void StartBardSong(bool8 useTemporaryLyrics)
+{
+ u8 taskId = CreateTask(Task_BardSong, 0x50);
+
+ gTasks[taskId].tUseTemporaryLyrics = useTemporaryLyrics;
+}
+
+static void BardSing(struct Task *task, struct BardSong *song)
+{
+ switch (task->tState)
+ {
+ case 0: // Initialize song
+ {
+ struct MauvilleManBard *bard = &gSaveBlock1.mauvilleMan.bard;
+ u16 *lyrics;
+ s32 i;
+
+ // Copy lyrics
+ if (gSpecialVar_0x8004 == 0)
+ lyrics = bard->songLyrics;
+ else
+ lyrics = bard->temporaryLyrics;
+ for (i = 0; i < 6; i++)
+ song->lyrics[i] = lyrics[i];
+
+ // Clear phonemes
+ for (i = 0; i < 6; i++)
+ {
+ song->phonemes[i].sound = 0xFFFF;
+ song->phonemes[i].length = 0;
+ song->phonemes[i].pitch = 0;
+ song->phonemes[i].volume = 0;
+ }
+ song->currWord = 0;
+ song->currPhoneme = 0;
+ song->var04 = 0;
+ }
+ break;
+ case 1: // Wait for BGM to end
+ break;
+ case 2: // Initialize word
+ {
+ u16 word = song->lyrics[song->currWord];
+ const struct BardSound *sounds = GetWordSounds(EC_GROUP(word), EC_INDEX(word));
+
+ song->var04 = 0;
+ GetWordPhonemes(song, sounds, MACRO1(word));
+ }
+ break;
+ case 3:
+ case 4:
+ {
+ struct BardPhoneme *phoneme = &song->phonemes[song->currPhoneme];
+
+ switch (song->state)
+ {
+ case 0:
+ if (song->phonemeTimer == 0) // Timer has expired. Move to next phoneme
+ {
+ if (song->currPhoneme == 6 || phoneme->sound == 0xFF)
+ {
+ song->state = 0xFE;
+ break;
+ }
+ song->phonemeTimer = phoneme->length;
+ if (phoneme->sound <= 50)
+ {
+ u16 num = phoneme->sound / 3;
+
+ m4aSongNumStart(249 + num * 3);
+ }
+ song->state = 1;
+ }
+ else
+ {
+ if (song->voiceInflection > 10)
+ song->volume -= 2;
+ if (song->voiceInflection & 1)
+ song->pitch += 64;
+ else
+ song->pitch -= 64;
+ m4aMPlayVolumeControl(&gMPlay_SE2, 0xFFFF, song->volume);
+ m4aMPlayPitchControl(&gMPlay_SE2, 0xFFFF, song->pitch);
+ song->voiceInflection++;
+ }
+ song->phonemeTimer--;
+ break;
+ case 1:
+ song->currPhoneme++;
+ song->state = 0;
+ if (phoneme->sound <= 50)
+ {
+ song->volume = 0x100 + phoneme->volume * 16;
+ m4aMPlayVolumeControl(&gMPlay_SE2, 0xFFFF, song->volume);
+ song->pitch = 0x200 + phoneme->pitch;
+ m4aMPlayPitchControl(&gMPlay_SE2, 0xFFFF, song->pitch);
+ }
+ break;
+ case 0xFE:
+ m4aMPlayStop(&gMPlay_SE2);
+ song->state = 0xFF;
+ break;
+ }
+ }
+ break;
+ case 5:
+ break;
+ }
+}
+
+static void Task_BardSong(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId]; // r5
+
+ BardSing(task, &gUnknown_03005DA0);
+ switch (task->tState)
+ {
+ case 0: // Initialize song
+ PrepareSongText();
+ InitWindowFromConfig(gMenuWindowPtr, &gWindowConfig_81E6CE4);
+ sub_8002EB0(gMenuWindowPtr, gStringVar4, 2, 4, 15);
+ task->data[1] = 0;
+ task->data[2] = 0;
+ task->tCharIndex = 0;
+ task->tCurrWord = 0;
+ FadeOutBGMTemporarily(4);
+ task->tState = 1;
+ break;
+ case 1: // Wait for BGM to end
+ if (IsBGMPausedOrStopped())
+ task->tState = 2;
+ break;
+ case 2: // Initialize word
+ {
+ struct MauvilleManBard *bard = &gSaveBlock1.mauvilleMan.bard;
+ u8 *str = gStringVar4 + task->tCharIndex;
+ u16 wordLen = 0;
+ // Can't get it to match without hacking
+ u32 temp;
+ register s16 zero asm("r1");
+
+ while (*str != CHAR_SPACE
+ && *str != CHAR_NEWLINE
+ && *str != EXT_CTRL_CODE_BEGIN
+ && *str != EOS)
+ {
+ str++;
+ wordLen++;
+ }
+ if (!task->tUseTemporaryLyrics)
+ gUnknown_020388BC = MACRO1(bard->songLyrics[task->tCurrWord]);
+ else
+ gUnknown_020388BC = MACRO1(bard->temporaryLyrics[task->tCurrWord]);
+ temp = gUnknown_03005DA0.var04 / wordLen;
+ zero = 0;
+ gUnknown_03005DA0.var04 = temp;
+ if (gUnknown_03005DA0.var04 <= 0)
+ gUnknown_03005DA0.var04 = 1;
+ task->tCurrWord++;
+ if (task->data[2] == 0)
+ task->tState = 3;
+ else
+ task->tState = 5;
+ task->data[1] = zero;
+ }
+ break;
+ case 5:
+ if (task->data[2] == 0)
+ task->tState = 3;
+ else
+ task->data[2]--;
+ break;
+ case 3:
+ if (gStringVar4[task->tCharIndex] == EOS)
+ {
+ FadeInNewBGM(BGM_POKECEN, 6);
+ m4aMPlayFadeOutTemporarily(&gMPlay_SE2, 2);
+ EnableBothScriptContexts();
+ DestroyTask(taskId);
+ }
+ else if (gStringVar4[task->tCharIndex] == CHAR_SPACE)
+ {
+ sub_8003418(gMenuWindowPtr);
+ task->tCharIndex++;
+ task->tState = 2;
+ task->data[2] = 0;
+ }
+ else if (gStringVar4[task->tCharIndex] == CHAR_NEWLINE)
+ {
+ task->tCharIndex++;
+ task->tState = 2;
+ task->data[2] = 0;
+ }
+ else if (gStringVar4[task->tCharIndex] == EXT_CTRL_CODE_BEGIN)
+ {
+ task->tCharIndex += 2; // skip over control codes
+ task->tState = 2;
+ task->data[2] = 8;
+ }
+ else if (gStringVar4[task->tCharIndex] == CHAR_SONG_WORD_SEPARATOR)
+ {
+ gStringVar4[task->tCharIndex] = CHAR_SPACE; // restore it back to a space
+ sub_8003418(gMenuWindowPtr);
+ task->tCharIndex++;
+ task->data[2] = 0;
+ }
+ else
+ {
+ switch (task->data[1])
+ {
+ case 0:
+ sub_8003418(gMenuWindowPtr);
+ task->data[1]++;
+ break;
+ case 1:
+ task->data[1]++;
+ break;
+ case 2:
+ task->tCharIndex++;
+ task->data[1] = 0;
+ task->data[2] = gUnknown_03005DA0.var04;
+ task->tState = 4;
+ break;
+ }
+ }
+ break;
+ case 4:
+ task->data[2]--;
+ if (task->data[2] == 0)
+ task->tState = 3;
+ break;
+ }
+}
+
+void sub_80F83D0(void)
+{
+ VarSet(0x4010, 0x45 + GetCurrentMauvilleOldMan());
+}
+
+struct Story
+{
+ u8 stat;
+ u8 minVal;
+ const u8 *title;
+ const u8 *action;
+ const u8 *fullText;
+};
+
+static const struct Story sStorytellerStories[] =
+{
+ {0x32, 1, gTextStoryteller_Story1Title, gTextStoryteller_Story1Action, gTextStoryteller_Story1Text},
+ {0x02, 1, gTextStoryteller_Story2Title, gTextStoryteller_Story2Action, gTextStoryteller_Story2Text},
+ {0x03, 1, gTextStoryteller_Story3Title, gTextStoryteller_Story3Action, gTextStoryteller_Story3Text},
+ {0x04, 1, gTextStoryteller_Story4Title, gTextStoryteller_Story4Action, gTextStoryteller_Story4Text},
+ {0x06, 1, gTextStoryteller_Story5Title, gTextStoryteller_Story5Action, gTextStoryteller_Story5Text},
+ {0x09, 1, gTextStoryteller_Story6Title, gTextStoryteller_Story6Action, gTextStoryteller_Story6Text},
+ {0x0B, 1, gTextStoryteller_Story7Title, gTextStoryteller_Story7Action, gTextStoryteller_Story7Text},
+ {0x0C, 1, gTextStoryteller_Story8Title, gTextStoryteller_Story8Action, gTextStoryteller_Story8Text},
+ {0x0D, 1, gTextStoryteller_Story9Title, gTextStoryteller_Story9Action, gTextStoryteller_Story9Text},
+ {0x0E, 1, gTextStoryteller_Story10Title, gTextStoryteller_Story10Action, gTextStoryteller_Story10Text},
+ {0x0F, 1, gTextStoryteller_Story11Title, gTextStoryteller_Story11Action, gTextStoryteller_Story11Text},
+ {0x10, 1, gTextStoryteller_Story12Title, gTextStoryteller_Story12Action, gTextStoryteller_Story12Text},
+ {0x11, 1, gTextStoryteller_Story13Title, gTextStoryteller_Story13Action, gTextStoryteller_Story13Text},
+ {0x12, 1, gTextStoryteller_Story14Title, gTextStoryteller_Story14Action, gTextStoryteller_Story14Text},
+ {0x13, 1, gTextStoryteller_Story15Title, gTextStoryteller_Story15Action, gTextStoryteller_Story15Text},
+ {0x14, 1, gTextStoryteller_Story16Title, gTextStoryteller_Story16Action, gTextStoryteller_Story16Text},
+ {0x1A, 1, gTextStoryteller_Story17Title, gTextStoryteller_Story17Action, gTextStoryteller_Story17Text},
+ {0x1B, 1, gTextStoryteller_Story18Title, gTextStoryteller_Story18Action, gTextStoryteller_Story18Text},
+ {0x1C, 1, gTextStoryteller_Story19Title, gTextStoryteller_Story19Action, gTextStoryteller_Story19Text},
+ {0x1D, 2, gTextStoryteller_Story20Title, gTextStoryteller_Story20Action, gTextStoryteller_Story20Text},
+ {0x1E, 1, gTextStoryteller_Story21Title, gTextStoryteller_Story21Action, gTextStoryteller_Story21Text},
+ {0x21, 1, gTextStoryteller_Story22Title, gTextStoryteller_Story22Action, gTextStoryteller_Story22Text},
+ {0x24, 1, gTextStoryteller_Story23Title, gTextStoryteller_Story23Action, gTextStoryteller_Story23Text},
+ {0x25, 1, gTextStoryteller_Story24Title, gTextStoryteller_Story24Action, gTextStoryteller_Story24Text},
+ {0x26, 1, gTextStoryteller_Story25Title, gTextStoryteller_Story25Action, gTextStoryteller_Story25Text},
+ {0x27, 1, gTextStoryteller_Story26Title, gTextStoryteller_Story26Action, gTextStoryteller_Story26Text},
+ {0x28, 1, gTextStoryteller_Story27Title, gTextStoryteller_Story27Action, gTextStoryteller_Story27Text},
+ {0x29, 1, gTextStoryteller_Story28Title, gTextStoryteller_Story28Action, gTextStoryteller_Story28Text},
+ {0x2A, 1, gTextStoryteller_Story29Title, gTextStoryteller_Story29Action, gTextStoryteller_Story29Text},
+ {0x2B, 1, gTextStoryteller_Story30Title, gTextStoryteller_Story30Action, gTextStoryteller_Story30Text},
+ {0x2C, 1, gTextStoryteller_Story31Title, gTextStoryteller_Story31Action, gTextStoryteller_Story31Text},
+ {0x2D, 1, gTextStoryteller_Story32Title, gTextStoryteller_Story32Action, gTextStoryteller_Story32Text},
+ {0x2E, 1, gTextStoryteller_Story33Title, gTextStoryteller_Story33Action, gTextStoryteller_Story33Text},
+ {0x2F, 1, gTextStoryteller_Story34Title, gTextStoryteller_Story34Action, gTextStoryteller_Story34Text},
+ {0x30, 1, gTextStoryteller_Story35Title, gTextStoryteller_Story35Action, gTextStoryteller_Story35Text},
+ {0x31, 1, gTextStoryteller_Story36Title, gTextStoryteller_Story36Action, gTextStoryteller_Story36Text},
+};
+
+static void StorytellerSetup(void)
+{
+ struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller;
+ s32 i;
+
+ storyteller->id = MAUVILLE_MAN_STORYTELLER;
+ storyteller->alreadyRecorded = FALSE;
+ for (i = 0; i < 4; i++)
+ {
+ storyteller->gameStatIDs[i] = 0;
+ storyteller->trainerNames[0][i] = EOS; // Maybe they meant storyteller->trainerNames[i][0] instead?
+ }
+}
+
+static void sub_80F8428(void)
+{
+ struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller;
+
+ storyteller->id = MAUVILLE_MAN_STORYTELLER;
+ storyteller->alreadyRecorded = FALSE;
+}
+
+static u32 StorytellerGetGameStat(u8 stat)
+{
+ if (stat == NUM_GAME_STATS)
+ stat = 0;
+ return GetGameStat(stat);
+}
+
+static const struct Story *GetStoryByStat(u32 stat)
+{
+ s32 i;
+
+ for (i = 0; i < 36; i++)
+ {
+ if (sStorytellerStories[i].stat == stat)
+ return &sStorytellerStories[i];
+ }
+ return &sStorytellerStories[35];
+}
+
+static const u8 *GetStoryTitleByStat(u32 stat)
+{
+ return GetStoryByStat(stat)->title;
+}
+
+static const u8 *GetStoryTextByStat(u32 stat)
+{
+ return GetStoryByStat(stat)->fullText;
+}
+
+static const u8 *GetStoryActionByStat(u32 stat)
+{
+ return GetStoryByStat(stat)->action;
+}
+
+static u8 GetFreeStorySlot(void)
+{
+ u8 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller;
+
+ if (storyteller->gameStatIDs[i] == 0)
+ break;
+ }
+ return i;
+}
+
+static u32 StorytellerGetRecordedTrainerStat(u32 trainer)
+{
+ u8 *ptr = gSaveBlock1.mauvilleMan.storyteller.statValues[trainer];
+
+ return ptr[0] | (ptr[1] << 8) | (ptr[2] << 16) | (ptr[3] << 24);
+}
+
+static void StorytellerSetRecordedTrainerStat(u32 trainer, u32 val)
+{
+ u8 *ptr = gSaveBlock1.mauvilleMan.storyteller.statValues[trainer];
+
+ ptr[0] = val;
+ ptr[1] = val >> 8;
+ ptr[2] = val >> 16;
+ ptr[3] = val >> 24;
+}
+
+static bool32 HasTrainerStatIncreased(u32 trainer)
+{
+ struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller;
+
+ if (StorytellerGetGameStat(storyteller->gameStatIDs[trainer]) > StorytellerGetRecordedTrainerStat(trainer))
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static void GetStoryByStattellerPlayerName(u32 player, void *dst)
+{
+ u8 *name = gSaveBlock1.mauvilleMan.storyteller.trainerNames[player];
+
+ memset(dst, EOS, 8);
+ memcpy(dst, name, 7);
+}
+
+static void StorytellerSetPlayerName(u32 player, const u8 *src)
+{
+ u8 *name = gSaveBlock1.mauvilleMan.storyteller.trainerNames[player];
+ u8 len = StringLength(src);
+
+ memset(name, EOS, 7);
+ StringCopyN(name, src, len);
+}
+
+static void StorytellerRecordNewStat(u32 player, u32 stat)
+{
+ struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller;
+
+ storyteller->gameStatIDs[player] = stat;
+ StorytellerSetPlayerName(player, gSaveBlock2.playerName);
+ StorytellerSetRecordedTrainerStat(player, StorytellerGetGameStat(stat));
+ ConvertIntToDecimalStringN(gStringVar1, StorytellerGetGameStat(stat), 0, 10);
+ StringCopy(gStringVar2, GetStoryActionByStat(stat));
+}
+
+static void ScrambleStatList(u8 *arr, s32 count)
+{
+ s32 i;
+
+ for (i = 0; i < count; i++)
+ arr[i] = i;
+ for (i = 0; i < count; i++)
+ {
+ u32 a = Random() % count;
+ u32 b = Random() % count;
+ u8 temp = arr[a];
+ arr[a] = arr[b];
+ arr[b] = temp;
+ }
+}
+
+// What purpose does this struct even serve? Only the length field is used.
+static const struct {u32 length; struct MauvilleManStoryteller *unused1; u32 unused2;} sStorytellerStuff =
+{
+ 36,
+ &gSaveBlock1.mauvilleMan.storyteller, // unused
+ 12, // unused
+};
+
+static bool8 StorytellerInitializeRandomStat(void)
+{
+ u8 arr[sStorytellerStuff.length];
+ s32 i;
+ s32 j;
+
+ ScrambleStatList(arr, 36);
+ for (i = 0; i < 36; i++)
+ {
+ u8 stat = sStorytellerStories[arr[i]].stat;
+ u8 minVal = sStorytellerStories[arr[i]].minVal;
+ struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller;
+
+ for (j = 0; j < 4; j++)
+ {
+ if (gSaveBlock1.mauvilleMan.storyteller.gameStatIDs[j] == stat)
+ break;
+ }
+ if (j == 4 && StorytellerGetGameStat(stat) >= minVal)
+ {
+ storyteller->alreadyRecorded = TRUE;
+ StorytellerRecordNewStat(GetFreeStorySlot(), stat);
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+static void StorytellerDisplayStory(u32 player)
+{
+ struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller;
+ u8 stat = storyteller->gameStatIDs[player];
+
+ ConvertIntToDecimalStringN(gStringVar1, StorytellerGetRecordedTrainerStat(player), 0, 10);
+ StringCopy(gStringVar2, GetStoryActionByStat(stat));
+ GetStoryByStattellerPlayerName(player, gStringVar3);
+ ShowFieldMessage(GetStoryTextByStat(stat));
+}
+
+static void PrintStoryList(void)
+{
+ s32 i;
+
+ MenuDrawTextWindow(0, 0, 25, 4 + GetFreeStorySlot() * 2);
+ for (i = 0; i < 4; i++)
+ {
+ struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller;
+ u8 stat = storyteller->gameStatIDs[i];
+
+ if (stat == 0)
+ break;
+ MenuPrint(GetStoryTitleByStat(stat), 1, 2 + i * 2);
+ }
+ MenuPrint(gPCText_Cancel, 1, 2 + i * 2);
+}
+
+static u8 gUnknown_03000748;
+
+static void Task_StoryListMenu(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ s32 selection;
+
+ switch (task->data[0])
+ {
+ case 0:
+ PrintStoryList();
+ InitMenu(0, 1, 2, GetFreeStorySlot() + 1, 0, 24);
+ task->data[0]++;
+ break;
+ case 1:
+ selection = ProcessMenuInput();
+ if (selection == -2)
+ break;
+ if (selection == -1 || selection == GetFreeStorySlot())
+ {
+ gScriptResult = 0;
+ }
+ else
+ {
+ gScriptResult = 1;
+ gUnknown_03000748 = selection;
+ }
+ HandleDestroyMenuCursors();
+ MenuZeroFillWindowRect(0, 0, 25, 12);
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+ break;
+ }
+}
+
+// Sets gScriptResult to TRUE if player selected a story
+void ScrSpecial_StorytellerStoryListMenu(void)
+{
+ CreateTask(Task_StoryListMenu, 0x50);
+}
+
+void ScrSpecial_StorytellerDisplayStory(void)
+{
+ StorytellerDisplayStory(gUnknown_03000748);
+}
+
+u8 ScrSpecial_StorytellerGetFreeStorySlot(void)
+{
+ return GetFreeStorySlot();
+}
+
+// Returns TRUE if stat has increased
+bool8 ScrSpecial_StorytellerUpdateStat(void)
+{
+ struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller;
+ u8 r4 = storyteller->gameStatIDs[gUnknown_03000748];
+
+ if (HasTrainerStatIncreased(gUnknown_03000748) == TRUE)
+ {
+ StorytellerRecordNewStat(gUnknown_03000748, r4);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 ScrSpecial_HasStorytellerAlreadyRecorded(void)
+{
+ struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller;
+
+ if (storyteller->alreadyRecorded == FALSE)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+bool8 ScrSpecial_StorytellerInitializeRandomStat(void)
+{
+ return StorytellerInitializeRandomStat();
+}
diff --git a/src/mauville_old_man.c b/src/mauville_old_man.c
deleted file mode 100644
index 93684fc60..000000000
--- a/src/mauville_old_man.c
+++ /dev/null
@@ -1,247 +0,0 @@
-#include "global.h"
-#include "mauville_old_man.h"
-#include "easy_chat.h"
-#include "menu.h"
-#include "rng.h"
-#include "script.h"
-#include "string_util.h"
-#include "strings.h"
-#include "trader.h"
-
-extern u16 gScriptResult;
-extern u16 gSpecialVar_0x8004;
-
-extern u32 gUnknown_083E5388[];
-extern u32 gUnknown_083E53A8[];
-
-extern u16 gUnknown_083E537C[];
-
-void sub_80F7A34(void)
-{
- u16 i;
- OldMan *oldMan = &gSaveBlock1.oldMan;
-
- oldMan->oldMan1.unk_2D94 = 0;
- oldMan->oldMan1.unk_2DBD = 0;
-
- for(i = 0; i < 6; i++)
- oldMan->oldMan1.mauvilleOldMan_ecArray[i] = gUnknown_083E537C[i];
-}
-
-void sub_80F7A6C(void)
-{
- struct UnkMauvilleOldManStruct *bard = &gSaveBlock1.oldMan.oldMan1;
-
- bard->unk_2D94 = 1;
- bard->unk_2D95 = 0;
-}
-
-void sub_80F7A7C(void)
-{
- sub_80F83F8();
-}
-
-void sub_80F7A88(void)
-{
- OldMan *oldMan = &gSaveBlock1.oldMan;
-
- oldMan->oldMan1.unk_2D94 = 4;
- oldMan->oldMan1.unk_2D95 = 0;
-}
-
-void sub_80F7A98(void)
-{
- sub_81099CC();
-}
-
-void SetMauvilleOldMan(void)
-{
- u32 var = ((u16)((gSaveBlock2.playerTrainerId[1] << 8 | gSaveBlock2.playerTrainerId[0])) % 10) / 2;
-
- switch(var)
- {
- case 0:
- sub_80F7A34();
- break;
- case 1:
- sub_80F7A6C();
- break;
- case 2:
- sub_80F7A98();
- break;
- case 3:
- sub_80F7A7C();
- break;
- case 4:
- sub_80F7A88();
- break;
- }
- sub_80F83D0();
-}
-
-u8 GetCurrentMauvilleOldMan(void)
-{
- OldMan *oldMan = &gSaveBlock1.oldMan;
-
- return oldMan->oldMan1.unk_2D94;
-}
-
-void sub_80F7B14(void)
-{
- gScriptResult = GetCurrentMauvilleOldMan();
-}
-
-void sub_80F7B2C(void)
-{
- u16 *scriptPtr = &gScriptResult; // why??
- OldMan *oldMan = &gSaveBlock1.oldMan;
-
- *scriptPtr = oldMan->oldMan1.unk_2DBD;
-}
-
-void sub_80F7B40(void)
-{
- u16 i;
- OldMan *oldMan = &gSaveBlock1.oldMan;
- //struct UnkMauvilleOldManStruct *oldManStruct = &gSaveBlock1.oldManStruct;
-
- StringCopy(oldMan->oldMan1.playerName, gSaveBlock2.playerName);
-
- for(i = 0; i < 4; i++)
- oldMan->oldMan1.playerTrainerId[i] = gSaveBlock2.playerTrainerId[i];
-
- for(i = 0; i < 6; i++)
- oldMan->oldMan1.mauvilleOldMan_ecArray[i] = oldMan->oldMan1.mauvilleOldMan_ecArray2[i];
-
- oldMan->oldMan1.unk_2DBD = 1;
-}
-
-void sub_80F7BA0(void)
-{
- struct UnkMauvilleOldManStruct *oldMan = &gSaveBlock1.oldMan.oldMan1;
- u16 specialVar = gSpecialVar_0x8004; // It's a bit odd to use this temp variable, but it seems needed to match.
- u16 *r5;
- u16 i;
- u8 *ptr;
- u8 *r4;
-
- r5 = oldMan->mauvilleOldMan_ecArray2;
- if (specialVar == 0)
- r5 = oldMan->mauvilleOldMan_ecArray;
- ptr = gStringVar4;
- r4 = ptr;
- for (i = 0; i < 2; i++)
- {
- ptr = sub_80EB3FC(ptr, *(r5++));
- while (ptr != r4)
- {
- if (*r4 == 0)
- *r4 = 0x37;
- r4++;
- }
- r4++;
- *(ptr++) = 0;
- ptr = sub_80EB3FC(ptr, *(r5++));
- while (ptr != r4)
- {
- if (*r4 == 0)
- *r4 = 0x37;
- r4++;
- }
- r4++;
- *(ptr++) = 0xFE;
- ptr = sub_80EB3FC(ptr, *(r5++));
- while (ptr != r4)
- {
- if (*r4 == 0)
- *r4 = 0x37;
- r4++;
- }
- //_080F7C2A
- if (i == 0)
- {
- *(ptr++) = EXT_CTRL_CODE_BEGIN;
- *(ptr++) = 0xF;
- }
- }
-}
-
-void sub_80F7C54(void)
-{
- sub_80F7F80(gSpecialVar_0x8004);
- MenuDisplayMessageBox();
- ScriptContext1_Stop();
-}
-
-void sub_80F7C70(void)
-{
- u16 *scriptPtr = &gScriptResult; // again??
- OldMan *oldMan = &gSaveBlock1.oldMan;
-
- *scriptPtr = oldMan->oldMan1.unk_2D95;
-}
-
-void sub_80F7C84(void)
-{
- OldMan *oldMan = &gSaveBlock1.oldMan;
-
- oldMan->oldMan1.unk_2D95 = 1;
-}
-
-void sub_80F7C90(void)
-{
- u16 var = sub_80EB8EC();
-
- if(var == 0xFFFF)
- {
- gScriptResult = FALSE;
- }
- else
- {
- sub_80EB3FC(gStringVar1, var);
- gScriptResult = TRUE;
- }
-}
-
-void sub_80F7CC8(void)
-{
- OldMan *oldMan = &gSaveBlock1.oldMan;
-
- if(oldMan->oldMan1.unk_2D95 == 10)
- {
- gScriptResult = FALSE;
- oldMan->oldMan1.unk_2D95 = 0;
- }
- else
- gScriptResult = TRUE;
-}
-
-void sub_80F7CF4(void)
-{
- struct UnkMauvilleOldManStruct2 *oldMan = &gSaveBlock1.oldMan.oldMan2;
-
- if(oldMan->unk1 == 0)
- sub_80F7DC0();
-
- if(oldMan->mauvilleOldMan_ecArray[oldMan->unk1] != 0xFFFF) // is not the last element of the array?
- {
- u8 *stringPtr;
- u32 random = Random();
-
- random %= 8;
- stringPtr = sub_80EB3FC(gStringVar4, oldMan->mauvilleOldMan_ecArray[oldMan->unk1]);
- stringPtr = StringCopy(stringPtr, gOtherText_Is);
- stringPtr = StringCopy(stringPtr, (u8 *)gUnknown_083E5388[random]);
- StringCopy(stringPtr, gOtherText_DontYouAgree);
- }
- else
- {
- StringCopy(gStringVar4, (u8 *)gUnknown_083E53A8[oldMan->mauvilleOldMan_ecArray2[oldMan->unk2++]]);
- }
- if(!(Random() % 10))
- oldMan->unk1 = 10;
- else
- oldMan->unk1++;
-
- gScriptResult = TRUE;
-}
diff --git a/src/menu.c b/src/menu.c
index ef458124b..a9c4aaa43 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -154,9 +154,9 @@ void MenuPrint(const u8 *str, u8 left, u8 top)
sub_8003460(gMenuWindowPtr, str, gMenuTextTileOffset, left, top);
}
-void MenuZeroFillWindowRect(u8 a1, u8 a2, u8 a3, u8 a4)
+void MenuZeroFillWindowRect(u8 left, u8 top, u8 right, u8 bottom)
{
- ZeroFillWindowRect(gMenuWindowPtr, a1, a2, a3, a4);
+ ZeroFillWindowRect(gMenuWindowPtr, left, top, right, bottom);
}
void MenuFillWindowRectWithBlankTile(u8 left, u8 top, u8 right, u8 bottom)
@@ -205,7 +205,7 @@ void MenuPrintMessage(const u8 *str, u8 left, u8 top)
sub_8002EB0(gMenuWindowPtr, str, gMenuTextTileOffset, left, top);
}
-void sub_8072044(const u8 *str)
+void MenuPrintMessageDefaultCoords(const u8 *str)
{
sub_8002EB0(gMenuWindowPtr, str, gMenuTextTileOffset, 2, 15);
}
@@ -571,7 +571,7 @@ void PrintMenuItems(u8 left, u8 top, u8 menuItemCount, const struct MenuAction m
MenuPrint(menuItems[i].text, left, top + 2 * i);
}
-void PrintMenuItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct MenuAction menuItems[], const u8 *order)
+void PrintMenuItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct MenuAction2 menuItems[], const u8 *order)
{
u8 i;
@@ -630,82 +630,82 @@ __attribute__((naked))
int sub_8072AB0(const u8 *str, u8 left, u16 top, u8 width, u8 height, u32 a6)
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- sub sp, 0x10\n\
- mov r12, r0\n\
- ldr r0, [sp, 0x24]\n\
- ldr r4, [sp, 0x28]\n\
- str r4, [sp, 0xC]\n\
- lsls r1, 24\n\
- lsrs r5, r1, 24\n\
- lsls r2, 16\n\
- lsrs r4, r2, 16\n\
- lsls r3, 24\n\
- lsrs r6, r3, 24\n\
- lsls r0, 24\n\
- lsrs r7, r0, 24\n\
- ldr r0, _08072AF8 @ =gMenuWindowPtr\n\
- ldr r0, [r0]\n\
- ldr r1, _08072AFC @ =gMenuTextTileOffset\n\
- ldrh r3, [r1]\n\
- str r5, [sp]\n\
- str r4, [sp, 0x4]\n\
- str r6, [sp, 0x8]\n\
- movs r1, 0\n\
- mov r2, r12\n\
- bl sub_8004FD0\n\
- adds r1, r0, 0\n\
- lsls r1, 24\n\
- lsrs r2, r1, 24\n\
- movs r3, 0x7\n\
- ands r3, r5\n\
- cmp r3, 0\n\
- bne _08072B00\n\
- adds r1, r6, 0x7\n\
- asrs r1, 3\n\
- subs r1, 0x1\n\
- b _08072B0C\n\
- .align 2, 0\n\
+ push {r4-r7,lr}\n\
+ sub sp, 0x10\n\
+ mov r12, r0\n\
+ ldr r0, [sp, 0x24]\n\
+ ldr r4, [sp, 0x28]\n\
+ str r4, [sp, 0xC]\n\
+ lsls r1, 24\n\
+ lsrs r5, r1, 24\n\
+ lsls r2, 16\n\
+ lsrs r4, r2, 16\n\
+ lsls r3, 24\n\
+ lsrs r6, r3, 24\n\
+ lsls r0, 24\n\
+ lsrs r7, r0, 24\n\
+ ldr r0, _08072AF8 @ =gMenuWindowPtr\n\
+ ldr r0, [r0]\n\
+ ldr r1, _08072AFC @ =gMenuTextTileOffset\n\
+ ldrh r3, [r1]\n\
+ str r5, [sp]\n\
+ str r4, [sp, 0x4]\n\
+ str r6, [sp, 0x8]\n\
+ movs r1, 0\n\
+ mov r2, r12\n\
+ bl sub_8004FD0\n\
+ adds r1, r0, 0\n\
+ lsls r1, 24\n\
+ lsrs r2, r1, 24\n\
+ movs r3, 0x7\n\
+ ands r3, r5\n\
+ cmp r3, 0\n\
+ bne _08072B00\n\
+ adds r1, r6, 0x7\n\
+ asrs r1, 3\n\
+ subs r1, 0x1\n\
+ b _08072B0C\n\
+ .align 2, 0\n\
_08072AF8: .4byte gMenuWindowPtr\n\
_08072AFC: .4byte gMenuTextTileOffset\n\
_08072B00:\n\
- adds r3, r6, r3\n\
- subs r1, r3, 0x1\n\
- cmp r1, 0\n\
- bge _08072B0A\n\
- adds r1, r3, 0x6\n\
+ adds r3, r6, r3\n\
+ subs r1, r3, 0x1\n\
+ cmp r1, 0\n\
+ bge _08072B0A\n\
+ adds r1, r3, 0x6\n\
_08072B0A:\n\
- asrs r1, 3\n\
+ asrs r1, 3\n\
_08072B0C:\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- adds r6, r1, 0\n\
- lsrs r5, 3\n\
- adds r1, r7, 0x7\n\
- asrs r1, 3\n\
- lsls r1, 24\n\
- lsrs r7, r1, 24\n\
- lsrs r4, 3\n\
- cmp r2, r7\n\
- bcs _08072B3E\n\
- lsls r1, r2, 1\n\
- adds r1, r4, r1\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- adds r2, r5, r6\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- adds r3, r7, r4\n\
- subs r3, 0x1\n\
- lsls r3, 24\n\
- lsrs r3, 24\n\
- adds r0, r5, 0\n\
- bl MenuFillWindowRectWithBlankTile\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ adds r6, r1, 0\n\
+ lsrs r5, 3\n\
+ adds r1, r7, 0x7\n\
+ asrs r1, 3\n\
+ lsls r1, 24\n\
+ lsrs r7, r1, 24\n\
+ lsrs r4, 3\n\
+ cmp r2, r7\n\
+ bcs _08072B3E\n\
+ lsls r1, r2, 1\n\
+ adds r1, r4, r1\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ adds r2, r5, r6\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ adds r3, r7, r4\n\
+ subs r3, 0x1\n\
+ lsls r3, 24\n\
+ lsrs r3, 24\n\
+ adds r0, r5, 0\n\
+ bl MenuFillWindowRectWithBlankTile\n\
_08072B3E:\n\
- add sp, 0x10\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
+ add sp, 0x10\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
.syntax divided\n");
}
#endif
diff --git a/src/menu_cursor.c b/src/menu_cursor.c
index 64ab36573..d43be2a2f 100644
--- a/src/menu_cursor.c
+++ b/src/menu_cursor.c
@@ -186,73 +186,67 @@ void sub_814A904(void)
return;
}
+#if ENGLISH
#ifdef NONMATCHING
// Fix pls
-void sub_814A958(u8 a1)
+void sub_814A958(u8 a)
{
- struct Subsprite *cursub;
- u8 v2; // r7@1
- s16 v3; // r2@1
- s32 v5; // r0@1
- s32 v6; // r3@1
- s32 v7; // r5@3
- int v8; // r7@9
- s16 negone;
-
- cursub = &gMenuCursorSubsprites[0];
- negone = -1;
- cursub = (struct Subsprite){0,2};
- cursub->x = negone;
- cursub++;
-
- v2 = 1;
- v3 = 1;
- v5 = (a1 - 1) << 0x10;
- v6 = v5 >> 0x10;
- if ((v5 >> 0x10) > 7)
+ u8 r7;
+ struct Subsprite *r4 = &gMenuCursorSubsprites[0];
+ s16 r2 = -1;
+ s32 _a = a;
+ s16 r5;
+ s16 i;
+
+ *r4 = (struct Subsprite){.x = 0, .y = 0, .shape = 2, .size = 0, .tileOffset = 0, .priority = 0};
+ r4->x = r2;
+ r4++;
+ r7 = 1;
+ r2 = 1;
+ r5 = a;
+ i = r5;
+ while ((i -= r2) >= 8)
{
- do
+ if (i > 0x1F)
{
- if (v6 > 0x1F)
+ *r4 = gUnknown_0842F780;
+ r4->x = r2;
+ r2 += 32;
+ r5 = a;
+ }
+ //_0814A9D4
+ else
+ {
+ r5 = a;
+ if (_a > 0x27 && i > 8)
{
- *cursub = gUnknown_0842F780;
- cursub->x = v3;
- v3 = ((v3 << 16) + 0x200000) >> 16;
- v7 = a1 << 16;
+ *r4 = gUnknown_0842F780;
+ r4->x = (r2 - 32) + (i & ~7);
+ r2 += i & 0x18;
}
+ //_0814AA0A
else
{
- v7 = a1 << 16;
- if (a1 <= 0x27 || v6 <= 0x8)
- {
- *cursub = gUnknown_0842F788;
- cursub->x = v3;
- v3 = ((v3 << 16) + 0x80000) >> 16;
- }
- else
- {
- *cursub = gUnknown_0842F780;
- cursub->x = v3 - 0x20 + (v6 & 0xFFF8);
- v3 = (v3 + (v6 & 0x18)) & negone;
- }
+ *r4 = gUnknown_0842F788;
+ r4->x = r2;
+ r2 += 8;
}
-
- cursub++;
- v2 = v2 + 1;
- v6 = ((v7 >> 16) - v3) & 0xFFFF;
}
- while (v7 - v3 > 7);
+ //_0814AA20
+ r4++;
+ r7++;
+ i = r5;
}
- *cursub = gUnknown_0842F790;
- cursub->x = v6 + v3 - 7;
- v8 = v2 + 1;
- if (gUnknown_0203A3D0 != 0x40)
- SetSubspriteTables(&gSprites[gUnknown_0203A3D0], &gSubspriteTables_842F5C0[v8]);
- if (gUnknown_0203A3D1 != 0x40)
- SetSubspriteTables(&gSprites[gUnknown_0203A3D1], &gSubspriteTables_842F5C0[v8]);
- return;
+ //_0814AA3A
+ *r4 = gUnknown_0842F790;
+ r4->x = r2 - 7 + i;
+ r7++;
+ if (gUnknown_0203A3D0 != 64)
+ SetSubspriteTables(&gSprites[gUnknown_0203A3D0], gSubspriteTables_842F5C0 + r7);
+ if (gUnknown_0203A3D1 != 64)
+ SetSubspriteTables(&gSprites[gUnknown_0203A3D1], gSubspriteTables_842F5C0 + r7);
}
-#elif ENGLISH
+#else
__attribute__((naked))
void sub_814A958(u8 a1)
{
@@ -434,6 +428,7 @@ _0814AAB4: .4byte gSubspriteTables_842F5C0\n\
_0814AAB8: .4byte gUnknown_0203A3D1\n\
.syntax divided\n");
}
+#endif
#elif GERMAN
__attribute__((naked))
void sub_814A958(u8 a1)
diff --git a/src/menu_helpers.c b/src/menu_helpers.c
index 9915d67ac..14e823355 100644
--- a/src/menu_helpers.c
+++ b/src/menu_helpers.c
@@ -7,7 +7,7 @@
#include "map_constants.h"
#include "menu.h"
#include "menu_helpers.h"
-#include "rom4.h"
+#include "overworld.h"
#include "songs.h"
#include "sound.h"
#include "sprite.h"
@@ -140,7 +140,7 @@ static void PrintMessage(const u8 *str, u16 tile)
{
sub_80A3FA0(&gBGTilemapBuffers[1][0], 2, 15, 26, 4, tile);
}
- sub_8072044(str);
+ MenuPrintMessageDefaultCoords(str);
}
static void sub_80F9090(u8 taskId)
diff --git a/src/money.c b/src/money.c
index 5d9d0b689..5d0f0ae8d 100644
--- a/src/money.c
+++ b/src/money.c
@@ -25,7 +25,7 @@ bool8 IsEnoughMoney(u32 budget, u32 cost)
return FALSE;
}
-void sub_80B79B8(u32 *arg0, u32 arg1)
+void AddMoney(u32 *arg0, u32 arg1)
{
if (*arg0 > *arg0 + arg1)
{
@@ -40,7 +40,7 @@ void sub_80B79B8(u32 *arg0, u32 arg1)
}
}
-void sub_80B79E0(u32 *arg0, u32 arg1)
+void RemoveMoney(u32 *arg0, u32 arg1)
{
if (*arg0 < arg1)
{
@@ -52,39 +52,25 @@ void sub_80B79E0(u32 *arg0, u32 arg1)
}
}
-void sub_80B79F8(u8 *buffer, u32 arg1, u8 arg2)
+void GetMoneyAmountText(u8 *buffer, u32 amount, u8 arg2)
{
u8 width;
u8 i;
- if (arg1 > 999999)
- {
+ if (amount > 999999)
width = 7;
- }
- else if (arg1 > 99999)
- {
+ else if (amount > 99999)
width = 6;
- }
- else if (arg1 > 10000)
- {
+ else if (amount > 10000)
width = 5;
- }
- else if (arg1 > 999)
- {
+ else if (amount > 999)
width = 4;
- }
- else if (arg1 > 99)
- {
+ else if (amount > 99)
width = 3;
- }
- else if (arg1 > 9)
- {
+ else if (amount > 9)
width = 2;
- }
else
- {
width = 1;
- }
buffer[0] = EXT_CTRL_CODE_BEGIN;
buffer[1] = 0x14;
@@ -100,7 +86,7 @@ void sub_80B79F8(u8 *buffer, u32 arg1, u8 arg2)
buffer[0] = CHAR_CURRENCY;
buffer += 1;
- buffer = ConvertIntToDecimalString(buffer, arg1);
+ buffer = ConvertIntToDecimalString(buffer, amount);
buffer[0] = EXT_CTRL_CODE_BEGIN;
buffer[1] = 0x14;
@@ -108,16 +94,18 @@ void sub_80B79F8(u8 *buffer, u32 arg1, u8 arg2)
buffer[3] = EOS;
}
-void sub_80B7A94(u32 arg0, u8 size, u8 x, u8 y)
+void PrintMoneyAmount(u32 amount, u8 size, u8 x, u8 y)
{
u8 buffer[16];
u8 stringWidth;
- sub_80B79F8(buffer, arg0, size);
+ GetMoneyAmountText(buffer, amount, size);
stringWidth = sub_8072CA4(buffer);
if (stringWidth >= (size + 1) * 8)
+ {
MenuPrint(buffer, x, y);
+ }
else
{
int xPlusOne = x + 1;
@@ -148,7 +136,7 @@ void sub_80B7AEC(u32 arg0, u8 left, u8 top)
}
__attribute__((naked))
-void sub_80B7B34(void)
+void sub_80B7B34(u8 var1, u8 var2, int var3)
{
asm(".syntax unified\n\
push {r4-r7,lr}\n\
@@ -241,15 +229,15 @@ _080B7BE8: .4byte 0x0600f840\n\
.syntax divided\n");
}
-void sub_80B7BEC(u32 arg0, u8 x, u8 y)
+void UpdateMoneyWindow(u32 amount, u8 x, u8 y)
{
- sub_80B7A94(arg0, 6, x + 6, y + 1);
+ PrintMoneyAmount(amount, 6, x + 6, y + 1);
}
-void sub_80B7C14(u32 arg0, u8 x, u8 y)
+void OpenMoneyWindow(u32 amount, u8 x, u8 y)
{
MenuDrawTextWindow(x, y, x + 13, y + 3);
- sub_80B7BEC(arg0, x, y);
+ UpdateMoneyWindow(amount, x, y);
LoadCompressedObjectPic(&gUnknown_083CF584);
LoadCompressedObjectPalette(&gUnknown_083CF58C);
@@ -257,7 +245,7 @@ void sub_80B7C14(u32 arg0, u8 x, u8 y)
gUnknown_02038734 = CreateSprite(&gSpriteTemplate_83CF56C, x * 8 + 19, y * 8 + 11, 0);
}
-void RemoveMoneyLabelObject(u8 x, u8 y)
+void CloseMoneyWindow(u8 x, u8 y)
{
DestroySpriteAndFreeResources(&gSprites[gUnknown_02038734]);
FreeSpritePaletteByTag(SPRITE_TAG_MONEY);
@@ -271,5 +259,5 @@ bool8 sub_80B7CE8(void)
void sub_80B7D0C(void)
{
- sub_80B79E0(&gSaveBlock1.money, gSpecialVar_0x8005);
+ RemoveMoney(&gSaveBlock1.money, gSpecialVar_0x8005);
}
diff --git a/src/mori_debug_menu.c b/src/mori_debug_menu.c
index 273191192..1595ecd2e 100644
--- a/src/mori_debug_menu.c
+++ b/src/mori_debug_menu.c
@@ -52,7 +52,7 @@ u8 MoriDebugMenu_SearchChild(u8 a1, u8 a2, u8 *ptr)
u16 monData;
u16 var;
- monData = GetMonData(gPlayerParty, 11, ptr);
+ monData = GetMonData(gPlayerParty, MON_DATA_SPECIES, ptr);
var = sub_8041870(monData);
StringCopy(localPtr, gSpeciesNames[monData]);
StringAppend(localPtr, gUnknown_0839B24D);
@@ -67,7 +67,7 @@ u8 MoriDebugMenu_SearchChild(u8 a1, u8 a2, u8 *ptr)
s8 MoriDebugMenu_Egg(void)
{
- if ( Daycare_CountPokemon(gSaveBlock1.daycareData) == 2 && daycare_relationship_score_from_savegame() )
+ if ( Daycare_CountPokemon(&gSaveBlock1.daycareData) == 2 && daycare_relationship_score_from_savegame() )
sub_8041940();
CloseMenu();
@@ -76,7 +76,7 @@ s8 MoriDebugMenu_Egg(void)
s8 MoriDebugMenu_MaleEgg(void)
{
- if ( Daycare_CountPokemon(gSaveBlock1.daycareData) == 2 && daycare_relationship_score_from_savegame() )
+ if ( Daycare_CountPokemon(&gSaveBlock1.daycareData) == 2 && daycare_relationship_score_from_savegame() )
sub_8041950();
CloseMenu();
@@ -117,7 +117,7 @@ s8 MoriDebugMenu_BreedEgg(void)
SetMonData(&gPlayerParty[loopCounter], MON_DATA_FRIENDSHIP, &friendship);
}
}
- gSaveBlock1.filler_30B6 = -3;
+ gSaveBlock1.daycareData.misc.countersEtc.unk_11a = -3;
CloseMenu();
return 1;
}
@@ -134,7 +134,7 @@ s8 MoriDebugMenu_PokeblockCase(void)
s32 loopCounter;
for (loopCounter = 0; loopCounter <= 39; loopCounter++)
- sub_810CA6C(loopCounter);
+ PokeblockClearIfExists(loopCounter);
CloseMenu();
return 1;
diff --git a/src/mystery_event_menu.c b/src/mystery_event_menu.c
index 46b76fd88..0e48dc177 100644
--- a/src/mystery_event_menu.c
+++ b/src/mystery_event_menu.c
@@ -94,7 +94,7 @@ static void CB2_MysteryEventMenu(void)
case 1:
if (gPaletteFade.active)
break;
- sub_8072044(gSystemText_LinkStandby);
+ MenuPrintMessageDefaultCoords(gSystemText_LinkStandby);
gMain.state++;
break;
case 2:
@@ -109,7 +109,7 @@ static void CB2_MysteryEventMenu(void)
if ((gLinkStatus & 0x20) && (gLinkStatus & 0x1C) > 4)
{
PlaySE(SE_PIN);
- sub_8072044(gSystemText_LoadEventPressA);
+ MenuPrintMessageDefaultCoords(gSystemText_LoadEventPressA);
gMain.state++;
}
if (gMain.newKeys & B_BUTTON)
@@ -128,7 +128,7 @@ static void CB2_MysteryEventMenu(void)
if (GetLinkPlayerCount_2() != 2)
{
GetEventLoadMessage(gStringVar4, 1);
- sub_8072044(gStringVar4);
+ MenuPrintMessageDefaultCoords(gStringVar4);
gMain.state = 13;
break;
}
@@ -158,13 +158,13 @@ static void CB2_MysteryEventMenu(void)
sub_800832C();
MenuZeroFillWindowRect(6, 5, 23, 8);
GetEventLoadMessage(gStringVar4, 1);
- sub_8072044(gStringVar4);
+ MenuPrintMessageDefaultCoords(gStringVar4);
gMain.state = 13;
break;
}
else if (CheckLanguageMatch())
{
- sub_8072044(gSystemText_DontCutLink);
+ MenuPrintMessageDefaultCoords(gSystemText_DontCutLink);
gMain.state++;
break;
}
@@ -173,7 +173,7 @@ static void CB2_MysteryEventMenu(void)
CloseLink();
MenuZeroFillWindowRect(6, 5, 23, 8);
GetEventLoadMessage(gStringVar4, 1);
- sub_8072044(gStringVar4);
+ MenuPrintMessageDefaultCoords(gStringVar4);
gMain.state = 13;
break;
}
@@ -222,7 +222,7 @@ static void CB2_MysteryEventMenu(void)
sub_800832C();
MenuZeroFillWindowRect(6, 5, 23, 8);
GetEventLoadMessage(gStringVar4, 1);
- sub_8072044(gStringVar4);
+ MenuPrintMessageDefaultCoords(gStringVar4);
ptr = (u8 *)&gMain;
offset1 = offsetof(struct Main, state);
asm("" ::: "r1");
@@ -234,7 +234,7 @@ static void CB2_MysteryEventMenu(void)
register u8 *ptr2 asm("r1");
register int offset3 asm("r0");
register int dummy asm("r2");
- sub_8072044(gSystemText_DontCutLink);
+ MenuPrintMessageDefaultCoords(gSystemText_DontCutLink);
ptr2 = (u8 *)&gMain;
offset3 = offsetof(struct Main, state);
if (dummy)
@@ -249,7 +249,7 @@ static void CB2_MysteryEventMenu(void)
MenuZeroFillWindowRect(6, 5, 23, 8);
label:
GetEventLoadMessage(gStringVar4, 1);
- sub_8072044(gStringVar4);
+ MenuPrintMessageDefaultCoords(gStringVar4);
ptr = (u8 *)&gMain;
offset2 = offsetof(struct Main, state);
ptr += offset2;
@@ -294,7 +294,7 @@ static void CB2_MysteryEventMenu(void)
gMain.state++;
break;
case 12:
- sub_8072044(gStringVar4);
+ MenuPrintMessageDefaultCoords(gStringVar4);
gMain.state++;
break;
case 13:
@@ -329,7 +329,7 @@ static void CB2_MysteryEventMenu(void)
CloseLink();
MenuZeroFillWindowRect(6, 5, 23, 8);
GetEventLoadMessage(gStringVar4, 1);
- sub_8072044(gStringVar4);
+ MenuPrintMessageDefaultCoords(gStringVar4);
gMain.state = 13;
}
}
diff --git a/src/naming_screen.c b/src/naming_screen.c
index 6c107f022..3f8417e6d 100644
--- a/src/naming_screen.c
+++ b/src/naming_screen.c
@@ -1618,7 +1618,7 @@ static void DisplaySentToPCMessage(void)
StringExpandPlaceholders(gStringVar4, gOtherText_SentToPC);
BasicInitMenuWindow(&gWindowConfig_81E6E88);
MenuDisplayMessageBox();
- sub_8072044(gStringVar4);
+ MenuPrintMessageDefaultCoords(gStringVar4);
}
static void sub_80B753C(void)
diff --git a/src/new_game.c b/src/new_game.c
index 226ac9bb7..3f9e9f5a1 100644
--- a/src/new_game.c
+++ b/src/new_game.c
@@ -11,7 +11,7 @@
#include "item_menu.h"
#include "lottery_corner.h"
#include "mail_data.h"
-#include "mauville_old_man.h"
+#include "mauville_man.h"
#include "play_time.h"
#include "player_pc.h"
#include "pokeblock.h"
@@ -20,7 +20,7 @@
#include "pokemon_storage_system.h"
#include "rng.h"
#include "roamer.h"
-#include "rom4.h"
+#include "overworld.h"
#include "rtc.h"
#include "script.h"
#include "secret_base.h"
@@ -157,7 +157,7 @@ void NewGameInitData(void)
ClearPokeblocks();
ClearDecorationInventories();
InitEasyChatPhrases();
- SetMauvilleOldMan();
+ SetupMauvilleOldMan();
InitDewfordTrend();
ResetFanClub();
ResetLotteryCorner();
diff --git a/src/option_menu.c b/src/option_menu.c
index 7f8d76528..dfc49b035 100644
--- a/src/option_menu.c
+++ b/src/option_menu.c
@@ -486,61 +486,61 @@ __attribute__((naked))
static void FrameType_DrawChoices(u8 selection)
{
asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- sub sp, 0x10\n\
- lsls r0, 24\n\
- movs r1, 0x80\n\
- lsls r1, 17\n\
- adds r0, r1\n\
- lsrs r5, r0, 24\n\
- ldr r1, _0808C368 @ =gSystemText_Type\n\
- mov r0, sp\n\
- bl StringCopy\n\
- ldr r1, _0808C36C @ =gSystemText_Terminator\n\
- mov r0, sp\n\
- bl StringAppend\n\
- adds r4, r0, 0\n\
- adds r0, r5, 0\n\
- movs r1, 0xA\n\
- bl __udivsi3\n\
- adds r1, r0, 0\n\
- lsls r0, r1, 24\n\
- lsrs r6, r0, 24\n\
- cmp r6, 0\n\
- beq _0808C370\n\
- adds r0, r1, 0\n\
- adds r0, 0xA1\n\
- strb r0, [r4]\n\
- adds r4, 0x1\n\
- adds r0, r5, 0\n\
- movs r1, 0xA\n\
- bl __umodsi3\n\
- adds r0, 0xA1\n\
- strb r0, [r4]\n\
- b _0808C380\n\
- .align 2, 0\n\
+ push {r4-r6,lr}\n\
+ sub sp, 0x10\n\
+ lsls r0, 24\n\
+ movs r1, 0x80\n\
+ lsls r1, 17\n\
+ adds r0, r1\n\
+ lsrs r5, r0, 24\n\
+ ldr r1, _0808C368 @ =gSystemText_Type\n\
+ mov r0, sp\n\
+ bl StringCopy\n\
+ ldr r1, _0808C36C @ =gSystemText_Terminator\n\
+ mov r0, sp\n\
+ bl StringAppend\n\
+ adds r4, r0, 0\n\
+ adds r0, r5, 0\n\
+ movs r1, 0xA\n\
+ bl __udivsi3\n\
+ adds r1, r0, 0\n\
+ lsls r0, r1, 24\n\
+ lsrs r6, r0, 24\n\
+ cmp r6, 0\n\
+ beq _0808C370\n\
+ adds r0, r1, 0\n\
+ adds r0, 0xA1\n\
+ strb r0, [r4]\n\
+ adds r4, 0x1\n\
+ adds r0, r5, 0\n\
+ movs r1, 0xA\n\
+ bl __umodsi3\n\
+ adds r0, 0xA1\n\
+ strb r0, [r4]\n\
+ b _0808C380\n\
+ .align 2, 0\n\
_0808C368: .4byte gSystemText_Type\n\
_0808C36C: .4byte gSystemText_Terminator\n\
_0808C370:\n\
- adds r0, r5, 0\n\
- movs r1, 0xA\n\
- bl __umodsi3\n\
- adds r0, 0xA1\n\
- strb r0, [r4]\n\
- adds r4, 0x1\n\
- strb r6, [r4]\n\
+ adds r0, r5, 0\n\
+ movs r1, 0xA\n\
+ bl __umodsi3\n\
+ adds r0, 0xA1\n\
+ strb r0, [r4]\n\
+ adds r4, 0x1\n\
+ strb r6, [r4]\n\
_0808C380:\n\
- adds r4, 0x1\n\
- movs r0, 0xFF\n\
- strb r0, [r4]\n\
- mov r0, sp\n\
- movs r1, 0xF\n\
- movs r2, 0xF\n\
- bl MenuPrint\n\
- add sp, 0x10\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
+ adds r4, 0x1\n\
+ movs r0, 0xFF\n\
+ strb r0, [r4]\n\
+ mov r0, sp\n\
+ movs r1, 0xF\n\
+ movs r2, 0xF\n\
+ bl MenuPrint\n\
+ add sp, 0x10\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
.syntax divided\n");
}
#endif
diff --git a/src/rom4.c b/src/overworld.c
index f9006efba..9b41a262d 100644
--- a/src/rom4.c
+++ b/src/overworld.c
@@ -1,5 +1,5 @@
#include "global.h"
-#include "rom4.h"
+#include "overworld.h"
#include "battle_setup.h"
#include "berry.h"
#include "cable_club.h"
@@ -25,6 +25,7 @@
#include "link.h"
#include "load_save.h"
#include "main.h"
+#include "map_constants.h"
#include "map_name_popup.h"
#include "menu.h"
#include "metatile_behavior.h"
@@ -40,6 +41,7 @@
#include "secret_base.h"
#include "songs.h"
#include "sound.h"
+#include "species.h"
#include "start_menu.h"
#include "task.h"
#include "tileset_anim.h"
@@ -60,28 +62,10 @@ struct UnkTVStruct
u32 tv_field_4;
};
-EWRAM_DATA struct WarpData gUnknown_020297F0 = {0};
-EWRAM_DATA struct WarpData gUnknown_020297F8 = {0};
-EWRAM_DATA struct WarpData gUnknown_02029800 = {0};
-EWRAM_DATA struct WarpData gUnknown_02029808 = {0};
-EWRAM_DATA struct UnkPlayerStruct gUnknown_02029810 = {0};
-EWRAM_DATA u16 gUnknown_02029814 = 0;
-EWRAM_DATA bool8 gUnknown_02029816 = FALSE;
-EWRAM_DATA struct LinkPlayerMapObject gLinkPlayerMapObjects[4] = {0};
-
-static u8 gUnknown_03000580[4];
-static u16 (*gUnknown_03000584)(u32);
-static u8 gUnknown_03000588;
-
-u16 word_3004858;
-void (*gFieldCallback)(void);
-u8 gUnknown_03004860;
-u8 gFieldLinkPlayerCount;
-
extern u16 gUnknown_03004898;
extern u16 gUnknown_0300489C;
-extern u8 EventScript_LeagueWhiteOut[];
+extern u8 S_WhiteOut[];
extern u8 gUnknown_0819FC9F[];
extern u8 SingleBattleColosseum_EventScript_1A436F[];
extern u8 SingleBattleColosseum_EventScript_1A4379[];
@@ -102,21 +86,115 @@ extern u8 TradeRoom_PromptToCancelLink[];
extern u8 TradeRoom_TerminateLink[];
extern u8 gUnknown_081A4508[];
-extern u8 (*gUnknown_082166A0[])(struct LinkPlayerMapObject *, struct MapObject *, u8);
-extern u8 (*gUnknown_082166AC[])(struct LinkPlayerMapObject *, struct MapObject *, u8);
-extern void (*gUnknown_082166D8[])(struct LinkPlayerMapObject *, struct MapObject *);
-
extern struct MapData * const gMapAttributes[];
extern struct MapHeader * const * const gMapGroups[];
-extern const struct WarpData gDummyWarpData;
-extern s32 gUnknown_0839ACE8;
-extern u32 gUnknown_08216694[];
+extern s32 gMaxFlashLevel;
+
+EWRAM_DATA struct WarpData gUnknown_020297F0 = {0};
+EWRAM_DATA struct WarpData gUnknown_020297F8 = {0};
+EWRAM_DATA struct WarpData gUnknown_02029800 = {0};
+EWRAM_DATA struct WarpData gUnknown_02029808 = {0};
+EWRAM_DATA struct UnkPlayerStruct gUnknown_02029810 = {0};
+EWRAM_DATA static u16 sAmbientCrySpecies = 0;
+EWRAM_DATA static bool8 sIsAmbientCryWaterMon = FALSE;
+EWRAM_DATA struct LinkPlayerMapObject gLinkPlayerMapObjects[4] = {0};
+
+static u8 gUnknown_03000580[4];
+static u16 (*gUnknown_03000584)(u32);
+static u8 gUnknown_03000588;
+
+u16 word_3004858;
+void (*gFieldCallback)(void);
+u8 gUnknown_03004860;
+u8 gFieldLinkPlayerCount;
+
+static const struct WarpData sDummyWarpData =
+{
+ .mapGroup = -1,
+ .mapNum = -1,
+ .warpId = -1,
+ .x = -1,
+ .y = -1,
+};
+
+static const u8 sUnusedData[] =
+{
+ 0xB0, 0x04, 0x00, 0x00,
+ 0x10, 0x0E, 0x00, 0x00,
+ 0xB0, 0x04, 0x00, 0x00,
+ 0x60, 0x09, 0x00, 0x00,
+ 0x32, 0x00, 0x00, 0x00,
+ 0x50, 0x00, 0x00, 0x00,
+ 0xD4, 0xFF, 0xFF, 0xFF,
+ 0x2C, 0x00, 0x00, 0x00,
+};
+
+const struct UCoords32 gUnknown_0821664C[] =
+{
+ { 0, 0},
+ { 0, 1},
+ { 0, -1},
+ {-1, 0},
+ { 1, 0},
+ {-1, 1},
+ { 1, 1},
+ {-1, -1},
+ { 1, -1},
+};
+
+const struct UnknownTaskStruct gUnknown_08216694 =
+{
+ (void *)REG_ADDR_WIN0H,
+ ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1,
+ 1,
+ 0,
+};
+
+static u8 sub_8055C68(struct LinkPlayerMapObject *, struct MapObject *, u8);
+static u8 sub_8055C88(struct LinkPlayerMapObject *, struct MapObject *, u8);
+static u8 sub_8055C8C(struct LinkPlayerMapObject *, struct MapObject *, u8);
+
+static u8 (*const gUnknown_082166A0[])(struct LinkPlayerMapObject *, struct MapObject *, u8) =
+{
+ sub_8055C68,
+ sub_8055C88,
+ sub_8055C8C,
+};
+
+static u8 sub_8055CAC(struct LinkPlayerMapObject *, struct MapObject *, u8);
+static u8 sub_8055CB0(struct LinkPlayerMapObject *, struct MapObject *, u8);
+static u8 sub_8055D18(struct LinkPlayerMapObject *, struct MapObject *, u8);
+
+static u8 (*const gUnknown_082166AC[])(struct LinkPlayerMapObject *, struct MapObject *, u8) =
+{
+ sub_8055CAC,
+ sub_8055CB0,
+ sub_8055CB0,
+ sub_8055CB0,
+ sub_8055CB0,
+ sub_8055CAC,
+ sub_8055CAC,
+ sub_8055D18,
+ sub_8055D18,
+ sub_8055D18,
+ sub_8055D18,
+};
-void DoWhiteOut(void)
+static void sub_8055D30(struct LinkPlayerMapObject *, struct MapObject *);
+static void sub_8055D38(struct LinkPlayerMapObject *, struct MapObject *);
+
+static void (*const gUnknown_082166D8[])(struct LinkPlayerMapObject *, struct MapObject *) =
+{
+ sub_8055D30,
+ sub_8055D38,
+};
+
+
+static void DoWhiteOut(void)
{
- ScriptContext2_RunNewScript(EventScript_LeagueWhiteOut);
+ ScriptContext2_RunNewScript(S_WhiteOut);
gSaveBlock1.money /= 2;
- HealPlayerParty();
+ ScrSpecial_HealPlayerParty();
sub_8053050();
sub_8053570();
warp_in();
@@ -125,48 +203,48 @@ void DoWhiteOut(void)
void flag_var_implications_of_teleport_(void)
{
player_avatar_init_params_reset();
- FlagReset(SYS_CYCLING_ROAD);
- FlagReset(SYS_CRUISE_MODE);
- FlagReset(SYS_SAFARI_MODE);
- FlagReset(SYS_USE_STRENGTH);
- FlagReset(SYS_USE_FLASH);
+ FlagClear(SYS_CYCLING_ROAD);
+ FlagClear(SYS_CRUISE_MODE);
+ FlagClear(SYS_SAFARI_MODE);
+ FlagClear(SYS_USE_STRENGTH);
+ FlagClear(SYS_USE_FLASH);
}
-void new_game(void)
+void Overworld_ResetStateAfterTeleport(void)
{
player_avatar_init_params_reset();
- FlagReset(SYS_CYCLING_ROAD);
- FlagReset(SYS_CRUISE_MODE);
- FlagReset(SYS_SAFARI_MODE);
- FlagReset(SYS_USE_STRENGTH);
- FlagReset(SYS_USE_FLASH);
+ FlagClear(SYS_CYCLING_ROAD);
+ FlagClear(SYS_CRUISE_MODE);
+ FlagClear(SYS_SAFARI_MODE);
+ FlagClear(SYS_USE_STRENGTH);
+ FlagClear(SYS_USE_FLASH);
ScriptContext2_RunNewScript(gUnknown_0819FC9F);
}
void sub_8053014(void)
{
player_avatar_init_params_reset();
- FlagReset(SYS_CYCLING_ROAD);
- FlagReset(SYS_CRUISE_MODE);
- FlagReset(SYS_SAFARI_MODE);
- FlagReset(SYS_USE_STRENGTH);
- FlagReset(SYS_USE_FLASH);
+ FlagClear(SYS_CYCLING_ROAD);
+ FlagClear(SYS_CRUISE_MODE);
+ FlagClear(SYS_SAFARI_MODE);
+ FlagClear(SYS_USE_STRENGTH);
+ FlagClear(SYS_USE_FLASH);
}
void sub_8053050(void)
{
player_avatar_init_params_reset();
- FlagReset(SYS_CYCLING_ROAD);
- FlagReset(SYS_CRUISE_MODE);
- FlagReset(SYS_SAFARI_MODE);
- FlagReset(SYS_USE_STRENGTH);
- FlagReset(SYS_USE_FLASH);
+ FlagClear(SYS_CYCLING_ROAD);
+ FlagClear(SYS_CRUISE_MODE);
+ FlagClear(SYS_SAFARI_MODE);
+ FlagClear(SYS_USE_STRENGTH);
+ FlagClear(SYS_USE_FLASH);
}
void sub_805308C(void)
{
- FlagReset(SYS_SAFARI_MODE);
- sub_8054164();
+ FlagClear(SYS_SAFARI_MODE);
+ ChooseAmbientCrySpecies();
ResetCyclingRoadChallengeData();
UpdateLocationHistoryForRoamer();
RoamerMoveToOtherLocationSet();
@@ -213,15 +291,16 @@ void sub_8053154(void)
gMapHeader.events->mapObjectCount * sizeof(struct MapObjectTemplate));
}
-void sub_8053198(void)
+static void LoadSaveblockMapObjScripts(void)
{
struct MapObjectTemplate *mapObjectTemplates = gSaveBlock1.mapObjectTemplates;
s32 i;
+
for (i = 0; i < 64; i++)
mapObjectTemplates[i].script = gMapHeader.events->mapObjects[i].script;
}
-void update_saveblock1_field_object_coords(u8 localId, s16 x, s16 y)
+void Overworld_SaveMapObjCoords(u8 localId, s16 x, s16 y)
{
s32 i;
for (i = 0; i < 64; i++)
@@ -231,28 +310,26 @@ void update_saveblock1_field_object_coords(u8 localId, s16 x, s16 y)
{
mapObjectTemplate->x = x;
mapObjectTemplate->y = y;
- break;
+ return;
}
}
}
-void update_saveblock1_field_object_movement_behavior(u8 localId, u8 movementType)
+void Overworld_SaveMapObjMovementType(u8 localId, u8 movementType)
{
- s32 i = 0;
- struct MapObjectTemplate *mapObjectTemplate = gSaveBlock1.mapObjectTemplates;
- do
+ s32 i;
+ for (i = 0; i < 64; i++)
{
+ struct MapObjectTemplate *mapObjectTemplate = &gSaveBlock1.mapObjectTemplates[i];
if (mapObjectTemplate->localId == localId)
{
mapObjectTemplate->movementType = movementType;
- break;
+ return;
}
- mapObjectTemplate++;
- i++;
- } while (i < 64);
+ }
}
-void mapdata_load_assets_to_gpu_and_full_redraw(void)
+static void mapdata_load_assets_to_gpu_and_full_redraw(void)
{
move_tilemap_camera_to_upper_left_corner();
copy_map_tileset1_tileset2_to_vram(gMapHeader.mapData);
@@ -261,7 +338,7 @@ void mapdata_load_assets_to_gpu_and_full_redraw(void)
cur_mapheader_run_tileset_funcs_after_some_cpuset();
}
-struct MapData *get_mapdata_header(void)
+static struct MapData *get_mapdata_header(void)
{
u16 mapDataId = gSaveBlock1.mapDataId;
if (mapDataId)
@@ -269,15 +346,15 @@ struct MapData *get_mapdata_header(void)
return NULL;
}
-void warp_shift(void)
+static void warp_shift(void)
{
gUnknown_020297F0 = gSaveBlock1.location;
gSaveBlock1.location = gUnknown_020297F8;
- gUnknown_02029800 = gDummyWarpData;
- gUnknown_02029808 = gDummyWarpData;
+ gUnknown_02029800 = sDummyWarpData;
+ gUnknown_02029808 = sDummyWarpData;
}
-void warp_set(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
+static void warp_set(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y)
{
warp->mapGroup = mapGroup;
warp->mapNum = mapNum;
@@ -286,7 +363,7 @@ void warp_set(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8
warp->y = y;
}
-bool32 warp_data_is_not_neg_1(struct WarpData *warp)
+static bool32 warp_data_is_not_neg_1(struct WarpData *warp)
{
if (warp->mapGroup != -1)
return FALSE;
@@ -301,31 +378,27 @@ bool32 warp_data_is_not_neg_1(struct WarpData *warp)
return TRUE;
}
-struct MapHeader * const get_mapheader_by_bank_and_number(u16 mapGroup, u16 mapNum)
+struct MapHeader *const Overworld_GetMapHeaderByGroupAndId(u16 mapGroup, u16 mapNum)
{
return gMapGroups[mapGroup][mapNum];
}
-struct MapHeader * const warp1_get_mapheader(void)
+struct MapHeader *const warp1_get_mapheader(void)
{
- return get_mapheader_by_bank_and_number(gUnknown_020297F8.mapGroup, gUnknown_020297F8.mapNum);
+ return Overworld_GetMapHeaderByGroupAndId(gUnknown_020297F8.mapGroup, gUnknown_020297F8.mapNum);
}
-void set_current_map_header_from_sav1_save_old_name(void)
+static void set_current_map_header_from_sav1_save_old_name(void)
{
- struct MapHeader *dest = &gMapHeader;
- struct MapHeader *src = get_mapheader_by_bank_and_number(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum);
- *dest = *src;
- gSaveBlock1.mapDataId = dest->mapDataId;
- dest->mapData = get_mapdata_header();
+ gMapHeader = *Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum);
+ gSaveBlock1.mapDataId = gMapHeader.mapDataId;
+ gMapHeader.mapData = get_mapdata_header();
}
-void sub_805338C(void)
+static void LoadSaveblockMapHeader(void)
{
- struct MapHeader *dest = &gMapHeader;
- struct MapHeader *src = get_mapheader_by_bank_and_number(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum);
- *dest = *src;
- dest->mapData = get_mapdata_header();
+ gMapHeader = *Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum);
+ gMapHeader.mapData = get_mapdata_header();
}
void sub_80533CC(void)
@@ -382,6 +455,7 @@ void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused)
void sub_8053538(u8 a1)
{
const struct HealLocation *warp = GetHealLocation(a1);
+
if (warp)
warp1_set(warp->group, warp->map, -1, warp->x, warp->y);
}
@@ -400,9 +474,9 @@ void sub_8053588(u8 a1)
void sub_80535C4(s16 a1, s16 a2)
{
- u8 v4 = sav1_map_get_light_level();
- u8 v5 = get_map_light_level_by_bank_and_number(gUnknown_020297F8.mapGroup, gUnknown_020297F8.mapNum);
- if (is_light_level_1_2_3_5_or_6(v4) && is_light_level_1_2_3_5_or_6(v5) != TRUE)
+ u8 v4 = Overworld_GetMapTypeOfSaveblockLocation();
+ u8 v5 = GetMapTypeByGroupAndId(gUnknown_020297F8.mapGroup, gUnknown_020297F8.mapNum);
+ if (is_map_type_1_2_3_5_or_6(v4) && is_map_type_1_2_3_5_or_6(v5) != TRUE)
sub_805363C(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1, a1 - 7, a2 - 6);
}
@@ -484,7 +558,7 @@ struct MapConnection *sub_8053818(u8 dir)
bool8 sub_8053850(u8 dir, u16 x, u16 y)
{
struct MapConnection *connection = sub_8053818(dir);
- if (connection)
+ if (connection != NULL)
{
warp1_set(connection->mapGroup, connection->mapNum, -1, x, y);
}
@@ -523,8 +597,8 @@ void sub_80538F0(u8 mapGroup, u8 mapNum)
sub_8082BD0(mapGroup, mapNum);
DoTimeBasedEvents();
sub_80806E4();
- sub_8054164();
- sub_8053C98();
+ ChooseAmbientCrySpecies();
+ SetDefaultFlashLevel();
sav1_reset_battle_music_maybe();
mapheader_run_script_with_tag_x3();
not_trainer_hill_battle_pyramid();
@@ -550,8 +624,8 @@ void sub_8053994(u32 a1)
set_current_map_header_from_sav1_save_old_name();
sub_8053154();
- v2 = is_light_level_1_2_3_5_or_6(gMapHeader.mapType);
- v3 = is_light_level_8_or_9(gMapHeader.mapType);
+ v2 = is_map_type_1_2_3_5_or_6(gMapHeader.mapType);
+ v3 = Overworld_MapTypeIsIndoors(gMapHeader.mapType);
ClearTempFieldEventData();
ResetCyclingRoadChallengeData();
prev_quest_postbuffer_cursor_backup_reset();
@@ -559,10 +633,10 @@ void sub_8053994(u32 a1)
if (a1 != 1)
DoTimeBasedEvents();
sub_80806E4();
- sub_8054164();
+ ChooseAmbientCrySpecies();
if (v2)
- FlagReset(SYS_USE_FLASH);
- sub_8053C98();
+ FlagClear(SYS_USE_FLASH);
+ SetDefaultFlashLevel();
sav1_reset_battle_music_maybe();
mapheader_run_script_with_tag_x3();
UpdateLocationHistoryForRoamer();
@@ -600,11 +674,11 @@ void walkrun_find_lowest_active_bit_in_bitfield(void)
struct UnkPlayerStruct *sub_8053AA8(void)
{
struct UnkPlayerStruct playerStruct;
- u8 light = sav1_map_get_light_level();
+ u8 mapType = Overworld_GetMapTypeOfSaveblockLocation();
u16 v2 = cur_mapdata_block_role_at_screen_center_acc_to_sav1();
- u8 v4 = sub_8053B00(&gUnknown_02029810, v2, light);
+ u8 v4 = sub_8053B00(&gUnknown_02029810, v2, mapType);
playerStruct.player_field_0 = v4;
- playerStruct.player_field_1 = sub_8053B60(&gUnknown_02029810, v4, v2, light);
+ playerStruct.player_field_1 = sub_8053B60(&gUnknown_02029810, v4, v2, mapType);
gUnknown_02029810 = playerStruct;
return &gUnknown_02029810;
}
@@ -617,7 +691,7 @@ u8 sub_8053B00(struct UnkPlayerStruct *playerStruct, u16 a2, u8 a3)
return 16;
if (MetatileBehavior_IsSurfableWaterOrUnderwater(a2) == 1)
return 8;
- if (IsBikingAllowedByMap() != TRUE)
+ if (Overworld_IsBikeAllowedOnCurrentMap() != TRUE)
return 1;
if (playerStruct->player_field_0 == 2)
return 2;
@@ -655,10 +729,12 @@ u16 cur_mapdata_block_role_at_screen_center_acc_to_sav1(void)
return MapGridGetMetatileBehaviorAt(gSaveBlock1.pos.x + 7, gSaveBlock1.pos.y + 7);
}
-bool32 IsBikingAllowedByMap(void)
+bool32 Overworld_IsBikeAllowedOnCurrentMap(void)
{
// is player in cycling road entrance?
- if (gSaveBlock1.location.mapGroup == 29 && (gSaveBlock1.location.mapNum == 11 || gSaveBlock1.location.mapNum == 12))
+ if (gSaveBlock1.location.mapGroup == MAP_GROUP_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE
+ && (gSaveBlock1.location.mapNum == MAP_ID_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE
+ || gSaveBlock1.location.mapNum == MAP_ID_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE))
return TRUE;
// is player indoor, in a secret base, or underwater?
@@ -669,37 +745,37 @@ bool32 IsBikingAllowedByMap(void)
if (gMapHeader.mapType == MAP_TYPE_UNDERWATER)
return FALSE;
- // is player in SeafloorCavern_Room9?
- if (gSaveBlock1.location.mapGroup == 24 && gSaveBlock1.location.mapNum == 36)
+ // Thou shalt not bike on the sacred resting grounds of Kyogre/Groudon.
+ if (gSaveBlock1.location.mapGroup == MAP_GROUP_SEAFLOOR_CAVERN_ROOM9
+ && gSaveBlock1.location.mapNum == MAP_ID_SEAFLOOR_CAVERN_ROOM9)
return FALSE;
-
- // is player in CaveOfOrigin_B4F?
- if (gSaveBlock1.location.mapGroup == 24 && gSaveBlock1.location.mapNum == 42)
+ if (gSaveBlock1.location.mapGroup == MAP_GROUP_CAVE_OF_ORIGIN_B4F
+ && gSaveBlock1.location.mapNum == MAP_ID_CAVE_OF_ORIGIN_B4F)
return FALSE;
return TRUE;
}
-void sub_8053C98(void)
+void SetDefaultFlashLevel(void)
{
if (!gMapHeader.cave)
- gSaveBlock1.flashUsed = 0;
+ gSaveBlock1.flashLevel = 0;
else if (FlagGet(SYS_USE_FLASH))
- gSaveBlock1.flashUsed = 1;
+ gSaveBlock1.flashLevel = 1;
else
- gSaveBlock1.flashUsed = gUnknown_0839ACE8;
+ gSaveBlock1.flashLevel = gMaxFlashLevel;
}
-void sub_8053CE4(s32 a1)
+void Overworld_SetFlashLevel(s32 flashLevel)
{
- if (a1 < 0 || a1 > gUnknown_0839ACE8)
- a1 = 0;
- gSaveBlock1.flashUsed = a1;
+ if (flashLevel < 0 || flashLevel > gMaxFlashLevel)
+ flashLevel = 0;
+ gSaveBlock1.flashLevel = flashLevel;
}
-u8 sav1_get_flash_used_on_map(void)
+u8 Overworld_GetFlashLevel(void)
{
- return gSaveBlock1.flashUsed;
+ return gSaveBlock1.flashLevel;
}
void sub_8053D14(u16 mapDataId)
@@ -708,60 +784,62 @@ void sub_8053D14(u16 mapDataId)
gMapHeader.mapData = get_mapdata_header();
}
-bool16 sub_8053D30(struct WarpData *warp)
+static bool16 ShouldLegendaryMusicPlayAtLocation(struct WarpData *warp)
{
if (!FlagGet(SYS_WEATHER_CTRL))
return FALSE;
- if (warp->mapGroup != 0)
- return FALSE;
- switch (warp->mapNum)
+ if (warp->mapGroup == 0)
{
- case 5:
- case 6:
- case 7:
- case 8:
- return TRUE;
- case 39:
- case 40:
- case 41:
- case 42:
- case 43:
- return TRUE;
+ switch (warp->mapNum)
+ {
+ case MAP_ID_LILYCOVE_CITY:
+ case MAP_ID_MOSSDEEP_CITY:
+ case MAP_ID_SOOTOPOLIS_CITY:
+ case MAP_ID_EVER_GRANDE_CITY:
+ return TRUE;
+ case MAP_ID_ROUTE124:
+ case MAP_ID_ROUTE125:
+ case MAP_ID_ROUTE126:
+ case MAP_ID_ROUTE127:
+ case MAP_ID_ROUTE128:
+ return TRUE;
+ }
}
return FALSE;
}
-bool16 sub_8053D6C(struct WarpData *warp)
+static bool16 IsInfiltratedWeatherInstitute(struct WarpData *warp)
{
- if (VarGet(0x40B3))
+ if (VarGet(VAR_WEATHER_INSTITUTE_CLEARED))
return FALSE;
- if (warp->mapGroup != 32)
+ if (warp->mapGroup != MAP_GROUP_ROUTE119_WEATHER_INSTITUTE_1F)
return FALSE;
- if (warp->mapNum == 0 || warp->mapNum == 1)
+ if (warp->mapNum == MAP_ID_ROUTE119_WEATHER_INSTITUTE_1F
+ || warp->mapNum == MAP_ID_ROUTE119_WEATHER_INSTITUTE_2F)
return TRUE;
return FALSE;
}
-u16 sub_8053D9C(struct WarpData *warp)
+static u16 GetLocationMusic(struct WarpData *warp)
{
- if (sub_8053D30(warp) == TRUE)
+ if (ShouldLegendaryMusicPlayAtLocation(warp) == TRUE)
return LEGENDARY_MUSIC;
- else if (sub_8053D6C(warp) == TRUE)
+ else if (IsInfiltratedWeatherInstitute(warp) == TRUE)
return BGM_TOZAN;
else
- return get_mapheader_by_bank_and_number(warp->mapGroup, warp->mapNum)->music;
+ return Overworld_GetMapHeaderByGroupAndId(warp->mapGroup, warp->mapNum)->music;
}
u16 sav1_map_get_music(void)
{
u16 music;
- if (gSaveBlock1.location.mapGroup == 0
- && gSaveBlock1.location.mapNum == 26
+ if (gSaveBlock1.location.mapGroup == MAP_GROUP_ROUTE111
+ && gSaveBlock1.location.mapNum == MAP_ID_ROUTE111
&& GetSav1Weather() == 8)
return BGM_ASHROAD;
- music = sub_8053D9C(&gSaveBlock1.location);
+ music = GetLocationMusic(&gSaveBlock1.location);
if (music != 0x7FFF)
{
return music;
@@ -777,14 +855,15 @@ u16 sav1_map_get_music(void)
u16 warp1_target_get_music(void)
{
- u16 music = sub_8053D9C(&gUnknown_020297F8);
+ u16 music = GetLocationMusic(&gUnknown_020297F8);
if (music != 0x7FFF)
{
return music;
}
else
{
- if (gSaveBlock1.location.mapGroup == 0 && gSaveBlock1.location.mapNum == 2)
+ if (gSaveBlock1.location.mapGroup == MAP_GROUP_MAUVILLE_CITY
+ && gSaveBlock1.location.mapNum == MAP_ID_MAUVILLE_CITY)
return BGM_DOORO_X1;
else
return BGM_GRANROAD;
@@ -804,7 +883,7 @@ void sub_8053E90(void)
{
if (gSaveBlock1.battleMusic)
music = gSaveBlock1.battleMusic;
- else if (sav1_map_get_light_level() == 5)
+ else if (Overworld_GetMapTypeOfSaveblockLocation() == MAP_TYPE_UNDERWATER)
music = BGM_DEEPDEEP;
else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
music = BGM_NAMINORI;
@@ -854,17 +933,17 @@ void sub_8053F84(void)
FadeOutAndPlayNewMapMusic(sav1_map_get_music(), 8);
}
-void sub_8053FB0(u16 music)
+void Overworld_ChangeMusicTo(u16 newMusic)
{
u16 currentMusic = GetCurrentMapMusic();
- if (currentMusic != music && currentMusic != LEGENDARY_MUSIC)
- FadeOutAndPlayNewMapMusic(music, 8);
+ if (currentMusic != newMusic && currentMusic != LEGENDARY_MUSIC)
+ FadeOutAndPlayNewMapMusic(newMusic, 8);
}
-u8 is_warp1_light_level_8_or_9(void)
+u8 GetMapMusicFadeoutSpeed(void)
{
struct MapHeader *mapHeader = warp1_get_mapheader();
- if (is_light_level_8_or_9(mapHeader->mapType) == TRUE)
+ if (Overworld_MapTypeIsIndoors(mapHeader->mapType) == TRUE)
return 2;
else
return 4;
@@ -875,7 +954,7 @@ void sub_8053FF8(void)
u16 music = warp1_target_get_music();
if (FlagGet(SPECIAL_FLAG_1) != TRUE && music != GetCurrentMapMusic())
{
- u8 speed = is_warp1_light_level_8_or_9();
+ u8 speed = GetMapMusicFadeoutSpeed();
FadeOutMapMusic(speed);
}
}
@@ -890,43 +969,43 @@ void sub_8054044(void)
FadeOutMapMusic(4);
}
-void sub_8054050(void)
+static void PlayAmbientCry(void)
{
s16 x, y;
- PlayerGetDestCoords((u16 *)&x, (u16 *)&y);
- if (gUnknown_02029816 != TRUE
+ PlayerGetDestCoords(&x, &y);
+ if (sIsAmbientCryWaterMon != TRUE
|| MetatileBehavior_IsSurfableWaterOrUnderwater(MapGridGetMetatileBehaviorAt(x, y)))
{
s8 pan = (Random() % 88) + 212;
s8 volume = (Random() % 30) + 50;
- PlayCry2(gUnknown_02029814, pan, volume, 1);
+ PlayCry2(sAmbientCrySpecies, pan, volume, 1);
}
}
-void sub_80540D0(s16 *a1, u16 *a2)
+void UpdateAmbientCry(s16 *state, u16 *delayCounter)
{
- switch (*a1)
+ switch (*state)
{
case 0:
- if (!gUnknown_02029814)
- *a1 = 4;
+ if (sAmbientCrySpecies == SPECIES_NONE)
+ *state = 4;
else
- *a1 = 1;
+ *state = 1;
break;
case 1:
- *a2 = (Random() % 2400) + 1200;
- *a1 = 3;
+ *delayCounter = (Random() % 2400) + 1200;
+ *state = 3;
break;
case 2:
- *a2 = (Random() % 1200) + 1200;
- *a1 = 3;
+ *delayCounter = (Random() % 1200) + 1200;
+ *state = 3;
break;
case 3:
- (*a2)--;
- if (*a2 == 0)
+ (*delayCounter)--;
+ if (*delayCounter == 0)
{
- sub_8054050();
- *a1 = 2;
+ PlayAmbientCry();
+ *state = 2;
}
break;
case 4:
@@ -934,58 +1013,70 @@ void sub_80540D0(s16 *a1, u16 *a2)
}
}
-void sub_8054164(void)
+void ChooseAmbientCrySpecies(void)
{
- if ((gSaveBlock1.location.mapGroup == 0 && gSaveBlock1.location.mapNum == 45) && !IsMirageIslandPresent())
+ if ((gSaveBlock1.location.mapGroup == MAP_GROUP_ROUTE130
+ && gSaveBlock1.location.mapNum == MAP_ID_ROUTE130)
+ && !IsMirageIslandPresent())
{
- gUnknown_02029816 = TRUE;
- gUnknown_02029814 = GetMirageIslandMon();
+ // Only play water pokemon cries on this route
+ // when Mirage Island is not present
+ sIsAmbientCryWaterMon = TRUE;
+ sAmbientCrySpecies = GetLocalWaterMon();
}
else
{
- gUnknown_02029814 = GetLocalWildMon(&gUnknown_02029816);
+ sAmbientCrySpecies = GetLocalWildMon(&sIsAmbientCryWaterMon);
}
}
-u8 get_map_light_level_by_bank_and_number(s8 mapGroup, s8 mapNum)
+u8 GetMapTypeByGroupAndId(s8 mapGroup, s8 mapNum)
{
- return get_mapheader_by_bank_and_number(mapGroup, mapNum)->mapType;
+ return Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum)->mapType;
}
-u8 get_map_light_level_from_warp(struct WarpData *warp)
+u8 GetMapTypeByWarpData(struct WarpData *warp)
{
- return get_map_light_level_by_bank_and_number(warp->mapGroup, warp->mapNum);
+ return GetMapTypeByGroupAndId(warp->mapGroup, warp->mapNum);
}
-u8 sav1_map_get_light_level(void)
+u8 Overworld_GetMapTypeOfSaveblockLocation(void)
{
- return get_map_light_level_from_warp(&gSaveBlock1.location);
+ return GetMapTypeByWarpData(&gSaveBlock1.location);
}
-u8 get_map_light_from_warp0(void)
+u8 get_map_type_from_warp0(void)
{
- return get_map_light_level_from_warp(&gUnknown_020297F0);
+ return GetMapTypeByWarpData(&gUnknown_020297F0);
}
-bool8 is_light_level_1_2_3_5_or_6(u8 a1)
+bool8 is_map_type_1_2_3_5_or_6(u8 mapType)
{
- if (a1 == 3 || a1 == 1 || a1 == 5 || a1 == 2 || a1 == 6)
+ if (mapType == MAP_TYPE_ROUTE
+ || mapType == MAP_TYPE_TOWN
+ || mapType == MAP_TYPE_UNDERWATER
+ || mapType == MAP_TYPE_CITY
+ || mapType == MAP_TYPE_6)
return TRUE;
else
return FALSE;
}
-bool8 is_light_level_1_2_3_or_6(u8 a1)
+bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 mapType)
{
- if (a1 == 3 || a1 == 1 || a1 == 6 || a1 == 2)
+ if (mapType == MAP_TYPE_ROUTE
+ || mapType == MAP_TYPE_TOWN
+ || mapType == MAP_TYPE_6
+ || mapType == MAP_TYPE_CITY)
return TRUE;
else
return FALSE;
}
-bool8 is_light_level_8_or_9(u8 a1)
+bool8 Overworld_MapTypeIsIndoors(u8 mapType)
{
- if (a1 == 8 || a1 == 9)
+ if (mapType == MAP_TYPE_INDOOR
+ || mapType == MAP_TYPE_SECRET_BASE)
return TRUE;
else
return FALSE;
@@ -993,17 +1084,17 @@ bool8 is_light_level_8_or_9(u8 a1)
u8 unref_sub_8054260(void)
{
- return get_mapheader_by_bank_and_number(gSaveBlock1.warp2.mapGroup, gSaveBlock1.warp2.mapNum)->regionMapSectionId;
+ return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.warp2.mapGroup, gSaveBlock1.warp2.mapNum)->regionMapSectionId;
}
u8 sav1_map_get_name(void)
{
- return get_mapheader_by_bank_and_number(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)->regionMapSectionId;
+ return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)->regionMapSectionId;
}
u8 sav1_map_get_battletype(void)
{
- return get_mapheader_by_bank_and_number(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)->battleType;
+ return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)->battleType;
}
void ResetSafariZoneFlag_(void)
@@ -1046,7 +1137,7 @@ void c1_overworld(void)
c1_overworld_normal(gMain.newKeys, gMain.heldKeys);
}
-void c2_overworld_basic(void)
+void OverworldBasic(void)
{
ScriptContext2_RunScript();
RunTasks();
@@ -1058,9 +1149,9 @@ void c2_overworld_basic(void)
sub_8072EDC();
}
-void sub_8054398(void)
+void CB2_OverworldBasic(void)
{
- c2_overworld_basic();
+ OverworldBasic();
}
void c2_overworld(void)
@@ -1068,7 +1159,7 @@ void c2_overworld(void)
int fading = (gPaletteFade.active != 0);
if (fading)
SetVBlankCallback(NULL);
- c2_overworld_basic();
+ OverworldBasic();
if (fading)
SetFieldVBlankCallback();
}
@@ -1265,8 +1356,8 @@ void CB2_ContinueSavedGame(void)
FieldClearVBlankHBlankCallbacks();
StopMapMusic();
ResetSafariZoneFlag_();
- sub_805338C();
- sub_8053198();
+ LoadSaveblockMapHeader();
+ LoadSaveblockMapObjScripts();
UnfreezeMapObjects();
DoTimeBasedEvents();
sub_805308C();
@@ -1317,11 +1408,11 @@ void VBlankCB_Field(void)
void sub_8054814(void)
{
- u8 val = sav1_get_flash_used_on_map();
+ u8 val = Overworld_GetFlashLevel();
if (val)
{
sub_80815E0(val);
- sub_80895F8(gUnknown_08216694[0], gUnknown_08216694[1], gUnknown_08216694[2]);
+ sub_80895F8(gUnknown_08216694);
}
}
@@ -2434,27 +2525,27 @@ void sub_8055BFC(u8 linkPlayerId, u8 a2)
}
}
-u8 sub_8055C68(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
+static u8 sub_8055C68(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
{
return gUnknown_082166AC[a3](linkPlayerMapObj, mapObj, a3);
}
-u8 sub_8055C88(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
+static u8 sub_8055C88(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
{
return 1;
}
-u8 sub_8055C8C(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
+static u8 sub_8055C8C(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
{
return gUnknown_082166AC[a3](linkPlayerMapObj, mapObj, a3);
}
-u8 sub_8055CAC(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
+static u8 sub_8055CAC(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
{
return 0;
}
-u8 sub_8055CB0(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
+static u8 sub_8055CB0(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
{
s16 x, y;
@@ -2474,18 +2565,18 @@ u8 sub_8055CB0(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *m
}
}
-u8 sub_8055D18(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
+static u8 sub_8055D18(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
{
mapObj->mapobj_unk_19 = npc_something3(a3, mapObj->mapobj_unk_19);
return 0;
}
-void sub_8055D30(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj)
+static void sub_8055D30(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj)
{
linkPlayerMapObj->mode = 0;
}
-void sub_8055D38(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj)
+static void sub_8055D38(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj)
{
mapObj->mapobj_unk_21--;
linkPlayerMapObj->mode = 1;
diff --git a/src/party_menu.c b/src/party_menu.c
index 1fcd2cdda..39477e293 100644
--- a/src/party_menu.c
+++ b/src/party_menu.c
@@ -33,15 +33,6 @@
#include "species.h"
#include "party_menu.h"
-#define DATA_COUNT (6)
-
-struct Unk2001000
-{
- u8 unk0;
- u8 unk1;
- u8 unk2;
-};
-
struct Unk201C000
{
/*0x00*/ struct Pokemon *pokemon;
@@ -68,8 +59,6 @@ struct UnknownStruct5
u16 *unk4;
};
-extern u8 ewram[];
-#define ewram01000 (*(struct Unk2001000 *)(ewram + 0x01000))
#define ewram1C000 (*(struct Unk201C000 *)(ewram + 0x1C000))
#define ewram1F000 (*(struct Unk201F000 *)(ewram + 0x1F000))
diff --git a/src/player_pc.c b/src/player_pc.c
index 6d52c560a..83e6dd221 100644
--- a/src/player_pc.c
+++ b/src/player_pc.c
@@ -18,7 +18,7 @@
#include "songs.h"
#include "name_string_util.h"
#include "mail.h"
-#include "rom4.h"
+#include "overworld.h"
#include "player_pc.h"
extern void DisplayItemMessageOnField(u8, const u8*, TaskFunc, u16);
@@ -106,7 +106,7 @@ static const u8 *const gPCText_OptionDescList[] =
gMenuText_GoBackToPrev
};
-static const struct MenuAction2 gPCText_PlayerPCOptionsText[] =
+static const struct MenuAction2 sPlayerPCMenuActions[] =
{
{ SecretBaseText_ItemStorage, PlayerPC_ItemStorage },
{ gPCText_Mailbox, PlayerPC_Mailbox },
@@ -226,7 +226,7 @@ void PlayerPC(void)
static void InitPlayerPCMenu(u8 taskId)
{
MenuDrawTextWindow(0, 0, 10, gPcItemMenuOptionsNum * 2 + 1);
- PrintMenuItemsReordered(1, 1, gPcItemMenuOptionsNum, (struct MenuAction *)gPCText_PlayerPCOptionsText, gPcItemMenuOptionOrder);
+ PrintMenuItemsReordered(1, 1, gPcItemMenuOptionsNum, sPlayerPCMenuActions, gPcItemMenuOptionOrder);
InitMenu(0, 1, 1, gPcItemMenuOptionsNum, 0, 9);
TASK.FUNC = PlayerPCProcessMenuInput;
}
@@ -247,13 +247,13 @@ static void PlayerPCProcessMenuInput(u8 taskId)
{
HandleDestroyMenuCursors();
PlaySE(SE_SELECT);
- gPCText_PlayerPCOptionsText[gPcItemMenuOptionOrder[GetMenuCursorPos()]].func(taskId);
+ sPlayerPCMenuActions[gPcItemMenuOptionOrder[GetMenuCursorPos()]].func(taskId);
}
else if (gMain.newKeys & B_BUTTON)
{
HandleDestroyMenuCursors();
PlaySE(SE_SELECT);
- gPCText_PlayerPCOptionsText[gPcItemMenuOptionsNum[gPcItemMenuOptionOrder - 1]].func(taskId); // run EXIT.
+ sPlayerPCMenuActions[gPcItemMenuOptionsNum[gPcItemMenuOptionOrder - 1]].func(taskId); // run EXIT.
}
}
diff --git a/src/pokeblock.c b/src/pokeblock.c
index 775280f6e..593d7344b 100644
--- a/src/pokeblock.c
+++ b/src/pokeblock.c
@@ -1,9 +1,9 @@
//
-// Created by scott on 6/27/2017.
+
//
#include "global.h"
-#include "rom4.h"
+#include "overworld.h"
#include "sprite.h"
#include "script.h"
#include "strings.h"
@@ -25,7 +25,6 @@
#include "sound.h"
#include "songs.h"
#include "safari_zone.h"
-#include "use_pokeblock.h"
#include "event_data.h"
#include "pokeblock.h"
@@ -582,7 +581,7 @@ static void sub_810BDAC(bool8 flag)
v0 = ((i % 3) << 6) + 0x1a1 + (i / 3) * 6;
if (gUnknown_02039248.unk0 + gUnknown_02039248.unk1 != gUnknown_02039248.unk2)
{
- if (sub_810CA9C(&gSaveBlock1.pokeblocks[gUnknown_02039248.unk0 + gUnknown_02039248.unk1], i + 1) > 0)
+ if (GetPokeblockData(&gSaveBlock1.pokeblocks[gUnknown_02039248.unk0 + gUnknown_02039248.unk1], i + 1) > 0)
{
gBGTilemapBuffers[2][v0] = (i << 12) + 23;
gBGTilemapBuffers[2][v0 + 32] = (i << 12) + 24;
@@ -817,7 +816,7 @@ static void sub_810C368(u8 taskId)
sub_80F98A4(1);
BasicInitMenuWindow(&gWindowConfig_81E6E50);
MenuDrawTextWindow(7, v0 + 4, 13, 11);
- PrintMenuItemsReordered(8, v0 + 5, gUnknown_0203924C, (const struct MenuAction *)gUnknown_083F7EF4, gUnknown_03000758);
+ PrintMenuItemsReordered(8, v0 + 5, gUnknown_0203924C, gUnknown_083F7EF4, gUnknown_03000758);
InitMenu(0, 8, v0 + 5, gUnknown_0203924C, 0, 5);
gScriptItemId = gUnknown_02039248.unk0 + gUnknown_02039248.unk1;
gTasks[taskId].func = sub_810C40C;
@@ -894,7 +893,7 @@ static void sub_810C5EC(u8 taskId)
static void sub_810C610(u8 taskId)
{
MenuZeroFillWindowRect(7, 6, 13, 11);
- sub_810CA6C((gUnknown_02039248.unk0 + gUnknown_02039248.unk1));
+ PokeblockClearIfExists((gUnknown_02039248.unk0 + gUnknown_02039248.unk1));
StringExpandPlaceholders(gStringVar4, gContestStatsText_WasThrownAway);
DisplayItemMessageOnField(taskId, gStringVar4, sub_810C704, 0);
sub_810BC98();
@@ -942,9 +941,9 @@ static void sub_810C748(u8 taskId)
static void sub_810C788(u8 taskId)
{
- s16 v0 = sub_810CAE4(GetNature(&gEnemyParty[0]), &gSaveBlock1.pokeblocks[gScriptItemId]);
+ s16 v0 = PokeblockGetGain(GetNature(&gEnemyParty[0]), &gSaveBlock1.pokeblocks[gScriptItemId]);
StringCopy(gBattleTextBuff1, gPokeblockNames[gSaveBlock1.pokeblocks[gScriptItemId].color]);
- sub_810CA6C(gScriptItemId);
+ PokeblockClearIfExists(gScriptItemId);
gScriptItemId = gSaveBlock1.pokeblocks[gScriptItemId].color << 8;
if (v0 == 0)
{
@@ -967,7 +966,7 @@ static void sub_810C854(u8 taskId)
SafariZoneActivatePokeblockFeeder(gScriptItemId);
StringCopy(gStringVar1, gPokeblockNames[gSaveBlock1.pokeblocks[gScriptItemId].color]);
gScriptResult = gScriptItemId;
- sub_810CA6C(gScriptItemId);
+ PokeblockClearIfExists(gScriptItemId);
BeginNormalPaletteFade(-1, 0, 0, 16, 0);
gTasks[taskId].func = sub_810C2C8;
}
@@ -1024,10 +1023,10 @@ u8 sub_810C9B0(struct Pokeblock *pokeblock)
{
u8 contestStat;
u8 maxRating;
- u8 rating = sub_810CA9C(pokeblock, 1);
+ u8 rating = GetPokeblockData(pokeblock, 1);
for (contestStat=1; contestStat<5; contestStat++)
{
- maxRating = sub_810CA9C(pokeblock, contestStat + 1);
+ maxRating = GetPokeblockData(pokeblock, contestStat + 1);
if (rating < maxRating)
{
rating = maxRating;
@@ -1038,7 +1037,7 @@ u8 sub_810C9B0(struct Pokeblock *pokeblock)
u8 sub_810C9E8(struct Pokeblock *pokeblock)
{
- u8 feel = sub_810CA9C(pokeblock, 6);
+ u8 feel = GetPokeblockData(pokeblock, 6);
if (feel > 99)
feel = 99;
return feel;
@@ -1068,7 +1067,7 @@ bool8 sub_810CA34(struct Pokeblock *pokeblock)
return TRUE;
}
-bool8 sub_810CA6C(u8 pokeblockIdx)
+bool8 PokeblockClearIfExists(u8 pokeblockIdx)
{
if (gSaveBlock1.pokeblocks[pokeblockIdx].color == 0)
{
@@ -1078,33 +1077,33 @@ bool8 sub_810CA6C(u8 pokeblockIdx)
return TRUE;
}
-s16 sub_810CA9C(const struct Pokeblock *pokeblock, u8 field)
+s16 GetPokeblockData(const struct Pokeblock *pokeblock, u8 field)
{
- if (field == 0)
+ if (field == PBLOCK_COLOR)
return pokeblock->color;
- if (field == 1)
+ if (field == PBLOCK_SPICY)
return pokeblock->spicy;
- if (field == 2)
+ if (field == PBLOCK_DRY)
return pokeblock->dry;
- if (field == 3)
+ if (field == PBLOCK_SWEET)
return pokeblock->sweet;
- if (field == 4)
+ if (field == PBLOCK_BITTER)
return pokeblock->bitter;
- if (field == 5)
+ if (field == PBLOCK_SOUR)
return pokeblock->sour;
- if (field == 6)
+ if (field == PBLOCK_FEEL)
return pokeblock->feel;
return 0;
}
-s16 sub_810CAE4(u8 nature, const struct Pokeblock *pokeblock)
+s16 PokeblockGetGain(u8 nature, const struct Pokeblock *pokeblock)
{
u8 flavor;
s16 curGain;
s16 totalGain = 0;
for (flavor=0; flavor<5; flavor++)
{
- curGain = sub_810CA9C(pokeblock, flavor + 1);
+ curGain = GetPokeblockData(pokeblock, flavor + 1);
if (curGain > 0)
{
totalGain += curGain * gPokeblockFlavorCompatibilityTable[5 * nature + flavor];
@@ -1113,9 +1112,9 @@ s16 sub_810CAE4(u8 nature, const struct Pokeblock *pokeblock)
return totalGain;
}
-void sub_810CB44(struct Pokeblock *pokeblock, u8 *dest)
+void PokeblockCopyName(struct Pokeblock *pokeblock, u8 *dest)
{
- u8 color = sub_810CA9C(pokeblock, 0);
+ u8 color = GetPokeblockData(pokeblock, PBLOCK_COLOR);
StringCopy(dest, gPokeblockNames[color]);
}
@@ -1124,7 +1123,7 @@ bool8 sub_810CB68(u8 nature, u8 *dest)
u8 flavor;
for (flavor=0; flavor<5; flavor++)
{
- if (sub_810CAE4(nature, &gUnknown_083F7F9C[flavor]) > 0)
+ if (PokeblockGetGain(nature, &gUnknown_083F7F9C[flavor]) > 0)
{
StringCopy(dest, gPokeblockNames[flavor + 1]);
return TRUE;
diff --git a/src/pokeblock_feed.c b/src/pokeblock_feed.c
new file mode 100644
index 000000000..ccbb391af
--- /dev/null
+++ b/src/pokeblock_feed.c
@@ -0,0 +1,1015 @@
+#include "global.h"
+#include "task.h"
+#include "palette.h"
+#include "main.h"
+#include "menu_helpers.h"
+#include "text.h"
+#include "text_window.h"
+#include "menu.h"
+#include "overworld.h"
+#include "decompress.h"
+#include "data2.h"
+#include "sprite.h"
+#include "item_use.h"
+#include "pokeblock.h"
+#include "party_menu.h"
+#include "strings.h"
+#include "string_util.h"
+#include "m4a.h"
+#include "field_effect.h"
+#include "sound.h"
+#include "trig.h"
+
+extern u8 ewram[];
+extern struct MusicPlayerInfo gMPlay_BGM;
+extern u8 gPokeblockMonID;
+extern s16 gPokeblockGain;
+
+extern const u8 gPokeblockRed_Pal[];
+extern const u8 gPokeblockBlue_Pal[];
+extern const u8 gPokeblockPink_Pal[];
+extern const u8 gPokeblockGreen_Pal[];
+extern const u8 gPokeblockYellow_Pal[];
+extern const u8 gPokeblockPurple_Pal[];
+extern const u8 gPokeblockIndigo_Pal[];
+extern const u8 gPokeblockBrown_Pal[];
+extern const u8 gPokeblockLiteBlue_Pal[];
+extern const u8 gPokeblockOlive_Pal[];
+extern const u8 gPokeblockGray_Pal[];
+extern const u8 gPokeblockBlack_Pal[];
+extern const u8 gPokeblockWhite_Pal[];
+extern const u8 gPokeblockGold_Pal[];
+extern const u8 gPokeblock_Gfx[];
+extern const u8 gBattleTerrainTiles_Building[];
+extern const u8 gUnknown_08E782FC[];
+extern const u8 gBattleTerrainPalette_BattleTower[];
+extern const struct CompressedSpriteSheet gUnknown_083F7F74;
+extern const struct CompressedSpritePalette gUnknown_083F7F7C;
+
+bool8 sub_8040A3C(u16 species);
+
+// this file's functions
+static void sub_8147B04(void);
+static void sub_81481DC(void);
+static void sub_814825C(void);
+static u8 sub_81480B4(void);
+static u8 CreatePokeblockSprite(void);
+static u8 PokeblockFeed_CreatePokeSprite(struct Pokemon* mon);
+static bool8 sub_8147B20(struct Pokemon* mon);
+static void LaunchPokeblockFeedTask(u8);
+static void sub_8148044(u8);
+static void sub_8148078(struct Sprite* sprite);
+static void Task_PrintAtePokeblockText(u8 taskID);
+static void Task_PaletteFadeToReturn(u8 taskID);
+static void SetPokeblockFeedSpritePal(u8);
+static void sub_8148108(u8, bool8);
+static bool8 sub_8148540(void);
+static bool8 sub_81485CC(void);
+static bool8 FreePokeSpriteMatrix(void);
+void sub_8148710(void);
+static void SpriteCB_ThrownPokeblock(struct Sprite* sprite);
+static void sub_814862C(void);
+
+// EWRAM
+EWRAM_DATA static struct CompressedSpritePalette sPokeblockFeedSpritePal = {0};
+
+// IWRAM common
+struct Sprite* gPokeblockFeedPokeSprite;
+u16 gPokeblockFeedMonSpecies;
+bool8 gPokeblockMonNotFlipped;
+u8 gPokeblockFeedMonSpriteID;
+u8 gPokeblockFeedMonNature;
+u16 gUnknown_03005F34;
+u8 gPokeblockFeedUnused0;
+u8 gUnknown_03005F3C;
+u8 gUnknown_03005F40;
+struct Sprite gPokeblockFeedPokeSpriteCopy;
+u16 gUnknown_03005F94;
+s16 gUnknown_03005FA0[24];
+
+// rodata
+
+static const u8 sNatureToMonPokeblockAnim[][2] =
+{
+ { 0, 0 }, // HARDY
+ { 3, 0 }, // LONELY
+ { 4, 1 }, // BRAVE
+ { 5, 0 }, // ADAMANT
+ { 10, 0 }, // NAUGHTY
+ { 13, 0 }, // BOLD
+ { 15, 0 }, // DOCILE
+ { 16, 2 }, // RELAXED
+ { 18, 0 }, // IMPISH
+ { 19, 0 }, // LAX
+ { 20, 0 }, // TIMID
+ { 25, 0 }, // HASTY
+ { 27, 3 }, // SERIOUS
+ { 28, 0 }, // JOLLY
+ { 29, 0 }, // NAIVE
+ { 33, 4 }, // MODEST
+ { 36, 0 }, // MILD
+ { 37, 0 }, // QUIET
+ { 39, 0 }, // BASHFUL
+ { 42, 0 }, // RASH
+ { 45, 0 }, // CALM
+ { 46, 5 }, // GENTLE
+ { 47, 6 }, // SASSY
+ { 48, 0 }, // CAREFUL
+ { 53, 0 }, // QUIRKY
+};
+
+static const s16 sMonPokeblockAnims[][10] =
+{
+ // HARDY
+ { 0, 4, 0, 8, 24, 0, 0, 0, 12, 0},
+ { 0, 4, 0, 16, 24, 0, 0, 0, 12, 0},
+ { 0, 4, 0, 32, 32, 0, 0, 0, 16, 1},
+
+ // LONELY
+ { 0, 3, 6, 0, 48, 0, 0, 0, 24, 1},
+
+ // BRAVE
+ { 64, 16, -24, 0, 32, 0, 0, 0, 0, 1},
+
+ // ADAMANT
+ { 0, 4, 8, 0, 16, 0, -8, 0, 0, 0},
+ { 0, 0, 0, 0, 16, 0, 0, 0, 0, 0},
+ { 0, 4, 8, 0, 16, 0, -8, 0, 0, 0},
+ { 0, 0, 0, 0, 16, 0, 0, 0, 0, 0},
+ { 0, 4, -16, 0, 4, 0, 16, 0, 0, 1},
+
+ // NAUGHTY
+ { 0, 3, 6, 0, 12, 0, 0, 0, 6, 0},
+ { 0, 3, -6, 0, 12, 0, 0, 0, 6, 0},
+ { 0, 16, 16, 0, 45, 1, 0, 0, 0, 1},
+
+ // BOLD
+ { 0, 16, 0, 24, 32, 0, 0, 0, 16, 0},
+ { 0, 16, 0, 23, 32, 0, 0, 0, 16, 1},
+
+ // DOCILE
+ { 0, 0, 0, 0, 80, 0, 0, 0, 0, 1},
+
+ // RELAXED
+ { 0, 2, 8, 0, 32, 0, 0, 0, 0, 0},
+ { 0, 2, -8, 0, 32, 0, 0, 0, 0, 1},
+
+ // IMPISH
+ { 0, 32, 2, 1, 48, 1, 0, 0, 24, 1},
+
+ // LAX
+ { 0, 2, 16, 16, 128, 0, 0, 0, 0, 1},
+
+ // TIMID
+ { 0, 2, -8, 0, 48, 0, -24, 0, 0, 0},
+ { 0, 0, 0, 0, 8, 0, 0, 0, 0, 0},
+ { 64, 32, 2, 0, 36, 0, 0, 0, 0, 0},
+ { 0, 0, 0, 0, 8, 0, 0, 0, 0, 0},
+ { 0, 2, 8, 0, 48, 0, 24, 0, 0, 1},
+
+ // HASTY
+ { 64, 24, 16, 0, 32, 0, 0, 0, 0, 0},
+ { 0, 28, 2, 1, 32, 1, 0, 0, 16, 1},
+
+ // SERIOUS
+ { 0, 0, 0, 0, 32, 0, 0, 0, 0, 1},
+
+ // JOLLY
+ { 64, 16, -16, 2, 48, 0, 0, 0, 32, 1},
+
+ // NAIVE
+ { 0, 12, -8, 4, 24, 0, 8, 0, 12, 0},
+ { 0, 12, 8, 8, 24, 0, -16, 0, 12, 0},
+ { 0, 12, -8, 16, 24, 0, 16, 0, 12, 0},
+ { 0, 12, 8, 28, 24, 0, -8, 0, 12, 1},
+
+ // MODEST
+ { 0, 0, 0, 0, 8, 0, 0, 0, 0, 0},
+ { 64, 16, -4, 0, 32, 0, 0, 0, 0, 0},
+ { 0, 0, 0, 0, 8, 0, 0, 0, 0, 1},
+
+ // MILD
+ { 128, 4, 0, 8, 64, 0, 0, 0, 0, 1},
+
+ // QUIET
+ { 0, 2, 16, 0, 48, 0, 0, 0, 0, 0},
+ { 128, 2, 16, 0, 48, 0, 0, 0, 0, 1},
+
+ // BASHFUL
+ { 0, 2, -4, 0, 48, 0, -48, 0, 0, 0},
+ { 0, 0, 0, 0, 80, 0, 0, 0, 0, 0},
+ { 0, 2, 8, 0, 24, 0, 48, 0, 0, 1},
+
+ // RASH
+ { 64, 4, 64, 58, 52, 0, -88, 0, 0, 0},
+ { 0, 0, 0, 0, 80, 0, 0, 0, 0, 0},
+ { 0, 24, 80, 0, 32, 0, 88, 0, 0, 1},
+
+ // CALM
+ { 0, 2, 16, 4, 64, 0, 0, 0, 0, 1},
+
+ // GENTLE
+ { 0, 0, 0, 0, 32, 0, 0, 0, 0, 1},
+
+ // SASSY
+ { 0, 0, 0, 0, 42, 0, 0, 0, 0, 1},
+
+ // CAREFUL
+ { 0, 4, 0, 8, 24, 0, 0, 0, 12, 0},
+ { 0, 0, 0, 0, 12, 0, 0, 0, 0, 0},
+ { 0, 4, 0, 12, 24, 0, 0, 0, 12, 0},
+ { 0, 0, 0, 0, 12, 0, 0, 0, 0, 0},
+ { 0, 4, 0, 4, 24, 0, 0, 0, 12, 1},
+
+ // QUIRKY
+ { 0, 4, 16, 12, 64, 0, 0, 0, 0, 0},
+ { 0, -4, 16, 12, 64, 0, 0, 0, 0, 1},
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_8411E90[] =
+{
+ AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_8411EA0[] =
+{
+ AFFINEANIMCMD_FRAME(0, 0, 12, 1),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 30),
+ AFFINEANIMCMD_FRAME(0, 0, -12, 1),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_8411EC0[] =
+{
+ AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0, 0, 12, 1),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 28),
+ AFFINEANIMCMD_FRAME(0, 0, -4, 3),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_8411EE8[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 16),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 32),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 16),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_8411F08[] =
+{
+ AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 16),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 32),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 16),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_8411F30[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 8),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 16),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 8),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_8411F50[] =
+{
+ AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 8),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 16),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 8),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_8411F78[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 8),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 32),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 8),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_8411F98[] =
+{
+ AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 8),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 32),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 8),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_8411FC0[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 4),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 24),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 4),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_8411FE0[] =
+{
+ AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 4),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 24),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 4),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_8412008[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 24),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 16),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -12, 2),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_8412028[] =
+{
+ AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 24),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 16),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -12, 2),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd *const sSpriteAffineAnimTable_8412050[] =
+{
+ sSpriteAffineAnim_8411E90,
+ sSpriteAffineAnim_8411EA0,
+ sSpriteAffineAnim_8411EE8,
+ sSpriteAffineAnim_8411F30,
+ sSpriteAffineAnim_8411F78,
+ sSpriteAffineAnim_8411FC0,
+ sSpriteAffineAnim_8412008,
+ sSpriteAffineAnim_8411E90,
+ sSpriteAffineAnim_8411E90,
+ sSpriteAffineAnim_8411E90,
+ sSpriteAffineAnim_8411E90,
+ sSpriteAffineAnim_8411EC0,
+ sSpriteAffineAnim_8411F08,
+ sSpriteAffineAnim_8411F50,
+ sSpriteAffineAnim_8411F98,
+ sSpriteAffineAnim_8411FE0,
+ sSpriteAffineAnim_8412028,
+ sSpriteAffineAnim_8411E90,
+ sSpriteAffineAnim_8411E90,
+ sSpriteAffineAnim_8411E90,
+ sSpriteAffineAnim_8411E90,
+};
+
+static const u8* const sPokeblocksPals[] =
+{
+ gPokeblockRed_Pal,
+ gPokeblockBlue_Pal,
+ gPokeblockPink_Pal,
+ gPokeblockGreen_Pal,
+ gPokeblockYellow_Pal,
+ gPokeblockPurple_Pal,
+ gPokeblockIndigo_Pal,
+ gPokeblockBrown_Pal,
+ gPokeblockLiteBlue_Pal,
+ gPokeblockOlive_Pal,
+ gPokeblockGray_Pal,
+ gPokeblockBlack_Pal,
+ gPokeblockWhite_Pal,
+ gPokeblockGold_Pal
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_84120DC[] =
+{
+ AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd *const sSpriteAffineAnimTable_84120EC[] =
+{
+ sSpriteAffineAnim_84120DC
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_84120F0[] =
+{
+ AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 1),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 1),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 1),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 1),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 16, 1),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 16, 1),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 16, 1),
+ AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_8412148[] =
+{
+ AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 1),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 1),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 1),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 1),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -16, 1),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -16, 1),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -16, 1),
+ AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd *const sSpriteAffineAnimTable_84121A0[] =
+{
+ sSpriteAffineAnim_84120DC
+};
+
+static const union AffineAnimCmd *const sSpriteAffineAnimTable_84121A4[] =
+{
+ sSpriteAffineAnim_84120F0
+};
+
+static const union AffineAnimCmd *const sSpriteAffineAnimTable_84121A8[] =
+{
+ sSpriteAffineAnim_8412148
+};
+
+static const struct OamData sThrownPokeblockOamData =
+{
+ .y = 0,
+ .affineMode = 3,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sThrownPokeblockSpriteAnim[] =
+{
+ ANIMCMD_FRAME(0, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sThrownPokeblockAnimTable[] =
+{
+ sThrownPokeblockSpriteAnim,
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_84121C0[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(-8, -8, 0, 1),
+ AFFINEANIMCMD_JUMP(1)
+};
+
+static const union AffineAnimCmd *const sThrownPokeblockAffineAnimTable[] =
+{
+ sSpriteAffineAnim_84121C0
+};
+
+static const struct CompressedSpriteSheet sUnknown_084121DC =
+{
+ gPokeblock_Gfx, 0x20, 14818
+};
+
+static const struct SpriteTemplate sThrownPokeblockSpriteTemplate =
+{
+ .tileTag = 14818,
+ .paletteTag = 14818,
+ .oam = &sThrownPokeblockOamData,
+ .anims = sThrownPokeblockAnimTable,
+ .images = NULL,
+ .affineAnims = sThrownPokeblockAffineAnimTable,
+ .callback = SpriteCB_ThrownPokeblock
+};
+
+// code
+
+static void CB2_PokeblockFeed(void)
+{
+ AnimateSprites();
+ BuildOamBuffer();
+ RunTasks();
+ UpdatePaletteFade();
+}
+
+static void VBlankCB_PokeblockFeed(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static bool8 TransitionToPokeblockFeedScene(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ sub_80F9438();
+ sub_80F9368();
+ sub_8147B04();
+ gMain.state++;
+ break;
+ case 1:
+ ResetPaletteFade();
+ gPaletteFade.bufferTransferDisabled = 1;
+ gMain.state++;
+ break;
+ case 2:
+ ResetSpriteData();
+ gMain.state++;
+ break;
+ case 3:
+ FreeAllSpritePalettes();
+ gMain.state++;
+ break;
+ case 4:
+ SetUpWindowConfig(&gWindowConfig_81E6E50);
+ gMain.state++;
+ break;
+ case 5:
+ MultistepInitMenuWindowBegin(&gWindowConfig_81E6E50);
+ gMain.state++;
+ break;
+ case 6:
+ if (MultistepInitMenuWindowContinue())
+ {
+ ewram[0x1FFFF] = 0;
+ gMain.state++;
+ }
+ break;
+ case 7:
+ if (sub_8147B20(&gPlayerParty[gPokeblockMonID]))
+ {
+ gMain.state++;
+ }
+ break;
+ case 8:
+ ewram[0x1FFFD] = sub_81480B4();
+ gMain.state++;
+ break;
+ case 9:
+ ewram[0x1FFFE] = PokeblockFeed_CreatePokeSprite(&gPlayerParty[gPokeblockMonID]);
+ gMain.state++;
+ break;
+ case 10:
+ MenuDrawTextWindow(0, 14, 29, 19);
+ gMain.state++;
+ break;
+ case 11:
+ if (sub_8055870() != 1)
+ {
+ gMain.state++;
+ }
+ break;
+ case 12:
+ {
+ u16 savedIME = REG_IME;
+ REG_IME = 0;
+ REG_IE |= 1;
+ REG_IME = savedIME;
+ REG_DISPSTAT |= 8;
+ SetVBlankCallback(VBlankCB_PokeblockFeed);
+ gMain.state++;
+ }
+ case 13:
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ gPaletteFade.bufferTransferDisabled = 0;
+ SetMainCallback2(CB2_PokeblockFeed);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void CB2_PreparePokeblockFeedScene(void)
+{
+ while (1)
+ {
+ if (TransitionToPokeblockFeedScene() == 1)
+ {
+ LaunchPokeblockFeedTask(1);
+ break;
+ }
+ if (sub_80F9344() == 1)
+ break;
+ }
+}
+
+static void sub_8147B04(void)
+{
+ REG_BG1CNT = 0x1D02l;
+ REG_DISPCNT = 0x1340;
+}
+
+static bool8 sub_8147B20(struct Pokemon* mon)
+{
+ u16 species;
+ u32 PiD, TiD;
+ switch (ewram[0x1FFFF])
+ {
+ case 0:
+ species = GetMonData(mon, MON_DATA_SPECIES2);
+ PiD = GetMonData(mon, MON_DATA_PERSONALITY);
+ HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, 0x2000000, gUnknown_081FAF4C[1], species, PiD);
+ ewram[0x1FFFF]++;
+ break;
+ case 1:
+ {
+ const struct CompressedSpritePalette* palette;
+
+ species = GetMonData(mon, MON_DATA_SPECIES2);
+ PiD = GetMonData(mon, MON_DATA_PERSONALITY);
+ TiD = GetMonData(mon, MON_DATA_OT_ID);
+ palette = sub_80409C8(species, TiD, PiD);
+ LoadCompressedObjectPalette(palette);
+ GetMonSpriteTemplate_803C56C(palette->tag, 1);
+ ewram[0x1FFFF]++;
+ }
+ break;
+ case 2:
+ LoadCompressedObjectPic(&gUnknown_083F7F74);
+ ewram[0x1FFFF]++;
+ break;
+ case 3:
+ LoadCompressedObjectPalette(&gUnknown_083F7F7C);
+ ewram[0x1FFFF]++;
+ break;
+ case 4:
+ LoadCompressedObjectPic(&sUnknown_084121DC);
+ ewram[0x1FFFF]++;
+ break;
+ case 5:
+ SetPokeblockFeedSpritePal(gScriptItemId);
+ LoadCompressedObjectPalette(&sPokeblockFeedSpritePal);
+ ewram[0x1FFFF]++;
+ break;
+ case 6:
+ LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM));
+ ewram[0x1FFFF]++;
+ break;
+ case 7:
+ LZDecompressVram(gUnknown_08E782FC, (void*)(VRAM + 0xE800));
+ ewram[0x1FFFF]++;
+ break;
+ case 8:
+ LoadCompressedPalette(gBattleTerrainPalette_BattleTower, 0x20, 0x60);
+ ewram[0x1FFFF] = 0;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void SetPokeblockFeedSpritePal(u8 pkbID)
+{
+ u8 color = GetPokeblockData(&gSaveBlock1.pokeblocks[pkbID], PBLOCK_COLOR);
+ sPokeblockFeedSpritePal.data = sPokeblocksPals[color - 1];
+ sPokeblockFeedSpritePal.tag = 0x39E2;
+}
+
+static void sub_8147CC8(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ {
+ switch (gTasks[taskID].data[0])
+ {
+ case 0:
+ gUnknown_03005F3C = 0;
+ gUnknown_03005F94 = 0;
+ sub_81481DC();
+ break;
+ case 255:
+ sub_8148108(ewram[0x1FFFD], gTasks[taskID].data[1]);
+ break;
+ case 269:
+ ewram[0x1FFFC] = CreatePokeblockSprite();
+ break;
+ case 281:
+ sub_8148044(ewram[0x1FFFE]);
+ break;
+ case 297:
+ gTasks[taskID].func = Task_PrintAtePokeblockText;
+ return;
+ }
+ if (gUnknown_03005F94 < gUnknown_03005F34)
+ sub_814825C();
+ else if (gUnknown_03005F94 == gUnknown_03005F34)
+ gTasks[taskID].data[0] = 254;
+
+ gUnknown_03005F94++;
+ gTasks[taskID].data[0]++;
+ }
+}
+
+static void LaunchPokeblockFeedTask(u8 a0)
+{
+ u8 taskID = CreateTask(sub_8147CC8, 0);
+ gTasks[taskID].data[0] = 0;
+ gTasks[taskID].data[1] = a0;
+}
+
+static void Task_WaitForAtePokeblockText(u8 taskID)
+{
+ if (MenuUpdateWindowText() == 1)
+ gTasks[taskID].func = Task_PaletteFadeToReturn;
+}
+
+static void Task_PrintAtePokeblockText(u8 taskID)
+{
+ struct Pokemon* mon = &gPlayerParty[gPokeblockMonID];
+ struct Pokeblock* pokeblock = &gSaveBlock1.pokeblocks[gScriptItemId];
+
+ gPokeblockGain = PokeblockGetGain(GetNature(mon), pokeblock);
+ GetMonNickname(mon, gStringVar1);
+ PokeblockCopyName(pokeblock, gStringVar2);
+
+ if (gPokeblockGain == 0)
+ StringExpandPlaceholders(gStringVar4, gContestStatsText_NormallyAte);
+ else if (gPokeblockGain > 0)
+ StringExpandPlaceholders(gStringVar4, gContestStatsText_HappilyAte);
+ else
+ StringExpandPlaceholders(gStringVar4, gContestStatsText_DisdainfullyAte);
+
+ MenuPrintMessage(gStringVar4, 1, 15);
+ gTasks[taskID].func = Task_WaitForAtePokeblockText;
+}
+
+static void Task_ReturnAfterPaletteFade(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ {
+ m4aMPlayVolumeControl(&gMPlay_BGM, -1, 256);
+ SetMainCallback2(gMain.savedCallback);
+ DestroyTask(taskID);
+ }
+}
+
+static void Task_PaletteFadeToReturn(u8 taskID)
+{
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gTasks[taskID].func = Task_ReturnAfterPaletteFade;
+}
+
+static u8 PokeblockFeed_CreatePokeSprite(struct Pokemon* mon)
+{
+ u16 species = GetMonData(mon, MON_DATA_SPECIES2);
+ u8 spriteID = CreateSprite(&gUnknown_02024E8C, 48, 80, 2);
+
+ gPokeblockFeedMonSpecies = species;
+ gPokeblockFeedMonSpriteID = spriteID;
+ gPokeblockFeedMonNature = GetNature(mon);
+ gSprites[spriteID].data2 = species;
+ gSprites[spriteID].callback = SpriteCallbackDummy;
+ gPokeblockMonNotFlipped = 1;
+ if (!sub_8040A3C(species))
+ {
+ gSprites[spriteID].affineAnims = sSpriteAffineAnimTable_84120EC;
+ gSprites[spriteID].oam.affineMode = 3;
+ CalcCenterToCornerVec(&gSprites[spriteID], gSprites[spriteID].oam.shape, gSprites[spriteID].oam.size, gSprites[spriteID].oam.affineMode);
+ gPokeblockMonNotFlipped = 0;
+ }
+ return spriteID;
+}
+
+static void sub_8148044(u8 spriteID)
+{
+ gSprites[spriteID].pos1.x = 48;
+ gSprites[spriteID].pos1.y = 80;
+ gSprites[spriteID].data0 = -8;
+ gSprites[spriteID].data1 = 1;
+ gSprites[spriteID].callback = sub_8148078;
+}
+
+static void sub_8148078(struct Sprite* sprite)
+{
+ sprite->pos1.x += 4;
+ sprite->pos1.y += sprite->data0;
+ sprite->data0 += sprite->data1;
+ if (sprite->data0 == 0)
+ PlayCry1(sprite->data2, 0);
+ if (sprite->data0 == 9)
+ sprite->callback = SpriteCallbackDummy;
+}
+
+static u8 sub_81480B4(void)
+{
+ u8 spriteID = sub_810BA50(188, 100, 2);
+ gSprites[spriteID].oam.affineMode = 1;
+ gSprites[spriteID].affineAnims = sSpriteAffineAnimTable_84121A0;
+ gSprites[spriteID].callback = SpriteCallbackDummy;
+ InitSpriteAffineAnim(&gSprites[spriteID]);
+ return spriteID;
+}
+
+static void sub_8148108(u8 spriteID, bool8 a1)
+{
+ FreeOamMatrix(gSprites[spriteID].oam.matrixNum);
+ gSprites[spriteID].oam.affineMode = 3;
+ if (!a1)
+ gSprites[spriteID].affineAnims = sSpriteAffineAnimTable_84121A4;
+ else
+ gSprites[spriteID].affineAnims = sSpriteAffineAnimTable_84121A8;
+ InitSpriteAffineAnim(&gSprites[spriteID]);
+}
+
+static u8 CreatePokeblockSprite(void)
+{
+ u8 spriteID = CreateSprite(&sThrownPokeblockSpriteTemplate, 174, 84, 1);
+ gSprites[spriteID].data0 = -12;
+ gSprites[spriteID].data1 = 1;
+ return spriteID;
+}
+
+static void SpriteCB_ThrownPokeblock(struct Sprite* sprite)
+{
+ sprite->pos1.x -= 4;
+ sprite->pos1.y += sprite->data0;
+ sprite->data0 += sprite->data1;
+ if (sprite->data0 == 10)
+ DestroySprite(sprite);
+}
+
+static void sub_81481DC(void)
+{
+ u8 animID, i;
+
+ gUnknown_03005F34 = 1;
+ animID = sNatureToMonPokeblockAnim[gPokeblockFeedMonNature][0];
+ for (i = 0; i < 8; i++, animID++)
+ {
+ gUnknown_03005F34 += sMonPokeblockAnims[animID][4];
+ if (sMonPokeblockAnims[animID][9] == 1)
+ break;
+ }
+}
+
+static void sub_814825C(void)
+{
+ switch (gUnknown_03005F3C)
+ {
+ case 0:
+ gUnknown_03005F40 = sNatureToMonPokeblockAnim[gPokeblockFeedMonNature][0];
+ gPokeblockFeedPokeSprite = &gSprites[gPokeblockFeedMonSpriteID];
+ gPokeblockFeedPokeSpriteCopy = *gPokeblockFeedPokeSprite;
+ gUnknown_03005F3C = 10;
+ break;
+ case 1 ... 9:
+ break;
+ case 10:
+ sub_8148540();
+ if (sNatureToMonPokeblockAnim[gPokeblockFeedMonNature][1] != 0)
+ {
+ gPokeblockFeedPokeSprite->oam.affineMode = 3;
+ gPokeblockFeedPokeSprite->oam.matrixNum = 0;
+ gPokeblockFeedPokeSprite->affineAnims = sSpriteAffineAnimTable_8412050;
+ InitSpriteAffineAnim(gPokeblockFeedPokeSprite);
+ }
+ gUnknown_03005F3C = 50;
+ case 50:
+ if (sNatureToMonPokeblockAnim[gPokeblockFeedMonNature][1] != 0)
+ {
+ if (gPokeblockMonNotFlipped == 0)
+ StartSpriteAffineAnim(gPokeblockFeedPokeSprite, sNatureToMonPokeblockAnim[gPokeblockFeedMonNature][1] + 10);
+ else
+ StartSpriteAffineAnim(gPokeblockFeedPokeSprite, sNatureToMonPokeblockAnim[gPokeblockFeedMonNature][1]);
+ }
+ gUnknown_03005F3C = 60;
+ break;
+ case 60:
+ if (sub_81485CC() == 1)
+ {
+ if (gUnknown_03005FA0[9] == 0)
+ {
+ gUnknown_03005F40++;
+ sub_8148540();
+ gUnknown_03005F3C = 60;
+ }
+ else
+ {
+ FreeOamMatrix(gPokeblockFeedPokeSprite->oam.matrixNum);
+ gUnknown_03005F3C = 70;
+ }
+ }
+ break;
+ case 70:
+ FreePokeSpriteMatrix();
+ gUnknown_03005F40 = 0;
+ gUnknown_03005F3C = 0;
+ break;
+ case 71 ... 90:
+ break;
+ }
+}
+
+static bool8 sub_8148540(void)
+{
+ u8 i;
+ for (i = 0; i < 10; i++)
+ gUnknown_03005FA0[i] = sMonPokeblockAnims[gUnknown_03005F40][i];
+ if (gUnknown_03005FA0[4] == 0)
+ return TRUE;
+ else
+ {
+ gUnknown_03005FA0[10] = Sin(gUnknown_03005FA0[0], gUnknown_03005FA0[2]);
+ gUnknown_03005FA0[11] = Cos(gUnknown_03005FA0[0], gUnknown_03005FA0[3]);
+ gUnknown_03005FA0[12] = gUnknown_03005FA0[4];
+ gUnknown_03005FA0[13] = gPokeblockFeedPokeSprite->pos2.x;
+ gUnknown_03005FA0[14] = gPokeblockFeedPokeSprite->pos2.y;
+ sub_8148710();
+ gUnknown_03005FA0[4] = gUnknown_03005FA0[12];
+ sub_814862C();
+ gUnknown_03005FA0[4] = gUnknown_03005FA0[12];
+ return FALSE;
+ }
+}
+
+#define ewram1D000 ((u16 *)(ewram + 0x1D000))
+#define ewram1D400 ((u16 *)(ewram + 0x1D400))
+
+static bool8 sub_81485CC(void)
+{
+ u16 var = gUnknown_03005FA0[12] - gUnknown_03005FA0[4];
+
+ gPokeblockFeedPokeSprite->pos2.x = ewram1D000[var];
+ gPokeblockFeedPokeSprite->pos2.y = ewram1D400[var];
+
+ if (--gUnknown_03005FA0[4] == 0)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static bool8 FreePokeSpriteMatrix(void)
+{
+ FreeSpriteOamMatrix(gPokeblockFeedPokeSprite);
+ return FALSE;
+}
+
+static void sub_814862C(void)
+{
+ u16 i;
+ u16 r8 = gUnknown_03005FA0[8];
+ u16 r7 = gUnknown_03005FA0[12] - r8;
+ s16 var3 = gUnknown_03005FA0[13] + gUnknown_03005FA0[6];
+ s16 r9 = gUnknown_03005FA0[14] + gUnknown_03005FA0[7];
+
+ for (i = 0; i < r7 - 1; i++)
+ {
+ s16* r3 = &ewram1D000[r8 + i];
+ s16 r1 = *r3 - (var3);
+
+ s16* r5 = &ewram1D400[r8 + i];
+ s16 r4 = *r5 - r9;
+
+ *r3 -= r1 * (i + 1) / r7;
+ *r5 -= r4 * (i + 1) / r7;
+ }
+
+ ewram1D000[(r8 + r7) - 1] = var3;
+ ewram1D400[(r8 + r7) - 1] = r9;
+}
+
+void sub_8148710(void)
+{
+ bool8 var_24 = FALSE;
+ s16 r8 = gUnknown_03005FA0[13] - gUnknown_03005FA0[10];
+ s16 r7 = gUnknown_03005FA0[14] - gUnknown_03005FA0[11];
+ while (1)
+ {
+ u16 r5;
+ u16 r4;
+ u16 var;
+
+ var = abs(gUnknown_03005FA0[5]);
+ r5 = var + gUnknown_03005FA0[3];
+ gUnknown_03005FA0[3] = r5;
+
+ if (gUnknown_03005FA0[2] < 0)
+ var_24 = TRUE;
+
+ r4 = gUnknown_03005FA0[12] - gUnknown_03005FA0[4];
+
+ if (gUnknown_03005FA0[4] == 0)
+ break;
+
+ if (!var_24)
+ {
+ ewram1D000[r4] = Sin(gUnknown_03005FA0[0], gUnknown_03005FA0[2] + r5 / 256) + r8;
+ ewram1D400[r4] = Cos(gUnknown_03005FA0[0], gUnknown_03005FA0[3] + r5 / 256) + r7;
+ }
+ else
+ {
+ ewram1D000[r4] = Sin(gUnknown_03005FA0[0], gUnknown_03005FA0[2] - r5 / 256) + r8;
+ ewram1D400[r4] = Cos(gUnknown_03005FA0[0], gUnknown_03005FA0[3] - r5 / 256) + r7;
+ }
+
+ gUnknown_03005FA0[0] += gUnknown_03005FA0[1];
+ gUnknown_03005FA0[0] &= 0xFF;
+ gUnknown_03005FA0[4]--;
+ }
+}
diff --git a/src/pokedex.c b/src/pokedex.c
index c132635cb..603b5ae48 100644
--- a/src/pokedex.c
+++ b/src/pokedex.c
@@ -16,7 +16,7 @@
#include "pokedex_cry_screen.h"
#include "pokemon.h"
#include "rng.h"
-#include "rom4.h"
+#include "overworld.h"
#include "songs.h"
#include "sound.h"
#include "species.h"
diff --git a/src/pokemon_1.c b/src/pokemon_1.c
index c65bfa185..1d597cb17 100644
--- a/src/pokemon_1.c
+++ b/src/pokemon_1.c
@@ -4,7 +4,7 @@
#include "main.h"
#include "pokemon.h"
#include "rng.h"
-#include "rom4.h"
+#include "overworld.h"
#include "species.h"
#include "sprite.h"
#include "string_util.h"
@@ -17,9 +17,9 @@
#define LOHALF(n) ((n) & 0xFFFF)
extern u8 unk_2000000[];
-extern u16 word_2024E82;
+extern u16 gMoveToLearn;
-static EWRAM_DATA u8 byte_2024E88 = 0;
+static EWRAM_DATA u8 sLearningMoveTableID = 0;
u8 gPlayerPartyCount;
struct Pokemon gPlayerParty[6];
@@ -69,6 +69,7 @@ void ZeroEnemyPartyMons(void)
void CreateMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId)
{
u32 arg;
+
ZeroMonData(mon);
CreateBoxMon(&mon->box, species, level, fixedIV, hasFixedPersonality, fixedPersonality, otIdType, fixedOtId);
SetMonData(mon, MON_DATA_LEVEL, &level);
@@ -467,10 +468,10 @@ void CalculateMonStats(struct Pokemon *mon)
SetMonData(mon, MON_DATA_HP, (u8 *)&currentHP);
}
-void sub_803B4B4(struct Pokemon *src, struct Pokemon *dest)
+void sub_803B4B4(const struct BoxPokemon *src, struct Pokemon *dest)
{
u32 value = 0;
- memcpy(&dest->box, &src->box, sizeof(struct BoxPokemon));
+ dest->box = *src;
SetMonData(dest, MON_DATA_STATUS, (u8 *)&value);
SetMonData(dest, MON_DATA_HP, (u8 *)&value);
SetMonData(dest, MON_DATA_MAX_HP, (u8 *)&value);
@@ -583,29 +584,33 @@ void GiveBoxMonInitialMoveset(struct BoxPokemon *boxMon)
}
}
-u16 sub_803B7C8(struct Pokemon *mon, u8 a2)
+u16 MonTryLearningNewMove(struct Pokemon *mon, bool8 firstMove)
{
u32 retVal = 0;
u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL);
u8 level = GetMonData(mon, MON_DATA_LEVEL, NULL);
- if (a2)
+ // since you can learn more than one move per level
+ // the game needs to know whether you decided to
+ // learn it or keep the old set to avoid asking
+ // you to learn the same move over and over again
+ if (firstMove)
{
- byte_2024E88 = retVal;
+ sLearningMoveTableID = 0;
- while ((gLevelUpLearnsets[species][byte_2024E88] & 0xFE00) != (level << 9))
+ while ((gLevelUpLearnsets[species][sLearningMoveTableID] & 0xFE00) != (level << 9))
{
- byte_2024E88++;
- if (gLevelUpLearnsets[species][byte_2024E88] == (u16)-1)
+ sLearningMoveTableID++;
+ if (gLevelUpLearnsets[species][sLearningMoveTableID] == 0xFFFF)
return 0;
}
}
- if ((gLevelUpLearnsets[species][byte_2024E88] & 0xFE00) == (level << 9))
+ if ((gLevelUpLearnsets[species][sLearningMoveTableID] & 0xFE00) == (level << 9))
{
- word_2024E82 = (gLevelUpLearnsets[species][byte_2024E88] & 0x1FF);
- byte_2024E88++;
- retVal = GiveMoveToMon(mon, word_2024E82);
+ gMoveToLearn = (gLevelUpLearnsets[species][sLearningMoveTableID] & 0x1FF);
+ sLearningMoveTableID++;
+ retVal = GiveMoveToMon(mon, gMoveToLearn);
}
return retVal;
diff --git a/src/pokemon_2.c b/src/pokemon_2.c
index a77edbdb2..f02ce6170 100644
--- a/src/pokemon_2.c
+++ b/src/pokemon_2.c
@@ -80,125 +80,31 @@ u8 CountAliveMons(u8 a1)
return retVal;
}
-#ifdef NONMATCHING
u8 sub_803C434(u8 a1)
{
- u32 status0 = GetBankIdentity(a1);
- register u8 status_ asm("r4");
- u8 status;
- register u32 mask1 asm("r1") = 1;
- register u32 mask2 asm("r6") = 1;
-
- status_ = mask2;
- status_ &= status0;
- status = status_ ^ mask1;
-
- {
- register u16 val_ asm("r1") = gBattleTypeFlags;
- u32 val = mask2;
- val &= val_;
- if (!val)
- {
- return GetBankByPlayerAI(status);
- }
- }
+ u8 status = GetBankIdentity(a1) & 1;
+ status ^= 1;
+ if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ return GetBankByPlayerAI(status);
if (CountAliveMons(0) > 1)
{
- u16 r = Random();
- register u32 val asm("r1") = mask2;
- val &= r;
- if (!val)
- {
- u32 status2 = 2;
- status2 ^= status;
- return GetBankByPlayerAI(status2);
- }
+ u8 val;
+
+ if ((Random() & 1) == 0)
+ val = status ^ 2;
else
- {
- return GetBankByPlayerAI(status);
- }
+ val = status;
+ return GetBankByPlayerAI(val);
}
else
{
- if (gAbsentBankFlags & gBitTable[status])
+ if ((gAbsentBankFlags & gBitTable[status]))
return GetBankByPlayerAI(status ^ 2);
else
return GetBankByPlayerAI(status);
}
}
-#else
-__attribute__((naked))
-u8 sub_803C434(u8 a1)
-{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- bl GetBankIdentity\n\
- movs r1, 0x1\n\
- movs r6, 0x1\n\
- adds r4, r6, 0\n\
- ands r4, r0\n\
- eors r4, r1\n\
- adds r5, r4, 0\n\
- ldr r0, _0803C45C\n\
- ldrh r1, [r0]\n\
- adds r0, r6, 0\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0803C460\n\
- adds r0, r4, 0\n\
- b _0803C4AA\n\
- .align 2, 0\n\
-_0803C45C: .4byte gBattleTypeFlags\n\
-_0803C460:\n\
- movs r0, 0\n\
- bl CountAliveMons\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x1\n\
- bls _0803C484\n\
- bl Random\n\
- adds r1, r6, 0\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- bne _0803C480\n\
- movs r0, 0x2\n\
- eors r0, r4\n\
- b _0803C4AA\n\
-_0803C480:\n\
- adds r0, r4, 0\n\
- b _0803C4AA\n\
-_0803C484:\n\
- ldr r0, _0803C49C\n\
- ldrb r1, [r0]\n\
- ldr r2, _0803C4A0\n\
- lsls r0, r4, 2\n\
- adds r0, r2\n\
- ldr r0, [r0]\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- bne _0803C4A4\n\
- adds r0, r4, 0\n\
- b _0803C4AA\n\
- .align 2, 0\n\
-_0803C49C: .4byte gAbsentBankFlags\n\
-_0803C4A0: .4byte gBitTable\n\
-_0803C4A4:\n\
- movs r0, 0x2\n\
- eors r5, r0\n\
- adds r0, r5, 0\n\
-_0803C4AA:\n\
- bl GetBankByPlayerAI\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- pop {r4-r6}\n\
- pop {r1}\n\
- bx r1\n\
- .syntax divided\n");
-}
-#endif
u8 GetMonGender(struct Pokemon *mon)
{
diff --git a/src/pokemon_3.c b/src/pokemon_3.c
index e449af0a1..e51d3187b 100644
--- a/src/pokemon_3.c
+++ b/src/pokemon_3.c
@@ -11,7 +11,7 @@
#include "main.h"
#include "pokemon.h"
#include "rng.h"
-#include "rom4.h"
+#include "overworld.h"
#include "rom_8077ABC.h"
#include "rom_8094928.h"
#include "rtc.h"
@@ -457,7 +457,7 @@ u16 HoennToNationalOrder(u16 hoennNum)
return gHoennToNationalOrder[hoennNum - 1];
}
-u32 SpeciesToCryId(u16 species)
+u16 SpeciesToCryId(u16 species)
{
if (species <= 250)
return species;
@@ -1197,7 +1197,7 @@ const struct CompressedSpritePalette *sub_80409C8(u16 species, u32 otId , u32 pe
return &gMonPaletteTable[species];
}
-bool8 IsHMMove2(u16 move)
+bool32 IsHMMove2(u16 move)
{
int i = 0;
while (gHMMoves[i] != 0xFFFF)
diff --git a/src/pokemon_icon.c b/src/pokemon_icon.c
index 8994ea49e..9bb3386e1 100644
--- a/src/pokemon_icon.c
+++ b/src/pokemon_icon.c
@@ -1024,17 +1024,17 @@ void sub_809D7E8(struct Sprite *);
u8 unref_sub_809D26C(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority)
{
u8 spriteId;
- struct MonIconSpriteTemplate iconTemplate;
- struct MonIconSpriteTemplate *iconTemplatePtr = &iconTemplate; // needed to match
-
- iconTemplatePtr->oam = &sMonIconOamData;
- iconTemplatePtr->image = gMonIconTable[species];
- iconTemplatePtr->anims = sMonIconAnims;
- iconTemplatePtr->affineAnims = sMonIconAffineAnims;
- iconTemplatePtr->callback = callback;
- iconTemplatePtr->paletteTag = POKE_ICON_BASE_PAL_TAG + gMonIconPaletteIndices[species];
+ struct MonIconSpriteTemplate iconTemplate =
+ {
+ .oam = &sMonIconOamData,
+ .image = gMonIconTable[species],
+ .anims = sMonIconAnims,
+ .affineAnims = sMonIconAffineAnims,
+ .callback = callback,
+ .paletteTag = POKE_ICON_BASE_PAL_TAG + gMonIconPaletteIndices[species],
+ };
- spriteId = CreateMonIconSprite(iconTemplatePtr, x, y, subpriority);
+ spriteId = CreateMonIconSprite(&iconTemplate, x, y, subpriority);
UpdateMonIconFrame(&gSprites[spriteId]);
@@ -1067,17 +1067,17 @@ u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u
u8 sub_809D3A4(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority)
{
u8 spriteId;
- struct MonIconSpriteTemplate iconTemplate;
- struct MonIconSpriteTemplate *iconTemplatePtr = &iconTemplate; // needed to match
-
- iconTemplatePtr->oam = &sMonIconOamData;
- iconTemplatePtr->image = gMonIconTable[species];
- iconTemplatePtr->anims = sMonIconAnims;
- iconTemplatePtr->affineAnims = sMonIconAffineAnims;
- iconTemplatePtr->callback = callback;
- iconTemplatePtr->paletteTag = POKE_ICON_BASE_PAL_TAG + gMonIconPaletteIndices[species];
+ struct MonIconSpriteTemplate iconTemplate =
+ {
+ .oam = &sMonIconOamData,
+ .image = gMonIconTable[species],
+ .anims = sMonIconAnims,
+ .affineAnims = sMonIconAffineAnims,
+ .callback = callback,
+ .paletteTag = POKE_ICON_BASE_PAL_TAG + gMonIconPaletteIndices[species],
+ };
- spriteId = CreateMonIconSprite(iconTemplatePtr, x, y, subpriority);
+ spriteId = CreateMonIconSprite(&iconTemplate, x, y, subpriority);
UpdateMonIconFrame(&gSprites[spriteId]);
@@ -1197,7 +1197,7 @@ void sub_809D62C(struct Sprite *sprite)
UpdateMonIconFrame(sprite);
}
-// TODO: try to find a way to avoid using goto and asm statement
+// TODO: try to find a way to avoid using asm statement
u8 UpdateMonIconFrame(struct Sprite *sprite)
{
u8 result = 0;
@@ -1206,34 +1206,31 @@ u8 UpdateMonIconFrame(struct Sprite *sprite)
{
s16 frame = sprite->anims[sprite->animNum][sprite->animCmdIndex].frame.imageValue;
- if (frame != -2)
- {
- if (frame != -1)
- goto copy;
- goto end;
- }
-
- sprite->animCmdIndex = 0;
- goto end;
-
- copy:
- RequestSpriteCopy(
- (u8 *)sprite->images + sSpriteImageSizes[sprite->oam.shape][sprite->oam.size] * frame,
- (u8 *)OBJ_VRAM0 + sprite->oam.tileNum * TILE_SIZE_4BPP,
- sSpriteImageSizes[sprite->oam.shape][sprite->oam.size]);
+ switch (frame)
{
- register u8 duration asm("r0") = sprite->anims[sprite->animNum][sprite->animCmdIndex].frame.duration;
- sprite->animDelayCounter = duration;
+ case -1:
+ break;
+ case -2:
+ sprite->animCmdIndex = 0;
+ break;
+ default:
+ RequestSpriteCopy(
+ (u8 *)sprite->images + sSpriteImageSizes[sprite->oam.shape][sprite->oam.size] * frame,
+ (u8 *)OBJ_VRAM0 + sprite->oam.tileNum * TILE_SIZE_4BPP,
+ sSpriteImageSizes[sprite->oam.shape][sprite->oam.size]);
+ {
+ register u8 duration asm("r0") = sprite->anims[sprite->animNum][sprite->animCmdIndex].frame.duration;
+ sprite->animDelayCounter = duration;
+ }
+ sprite->animCmdIndex++;
+ result = sprite->animCmdIndex;
+ break;
}
- sprite->animCmdIndex++;
- result = sprite->animCmdIndex;
}
else
{
sprite->animDelayCounter--;
}
-
-end:
return result;
}
diff --git a/src/pokemon_menu.c b/src/pokemon_menu.c
new file mode 100644
index 000000000..bc5150a16
--- /dev/null
+++ b/src/pokemon_menu.c
@@ -0,0 +1,1200 @@
+#include "global.h"
+#include "pokemon.h"
+#include "pokemon_menu.h"
+#include "party_menu.h"
+#include "palette.h"
+#include "menu.h"
+#include "mail_data.h"
+#include "songs.h"
+#include "sound.h"
+#include "main.h"
+#include "overworld.h"
+#include "menu_helpers.h"
+#include "pokemon_summary_screen.h"
+#include "moves.h"
+#include "data2.h"
+#include "strings.h"
+#include "item_use.h"
+#include "item.h"
+#include "event_data.h"
+#include "mail.h"
+#include "field_player_avatar.h"
+#include "fldeff_softboiled.h"
+#include "braille_puzzles.h"
+#include "field_fadetransition.h"
+#include "field_weather.h"
+#include "field_effect.h"
+#include "field_control_avatar.h"
+#include "metatile_behavior.h"
+#include "fieldmap.h"
+#include "item_menu.h"
+#include "player_pc.h"
+
+/*
+Pokemon menu:
+ The menu that appears when you
+ click on a pokemon in
+ overworld 'pokemon' menu
+*/
+
+struct PokeMenuFieldMoveFunc
+{
+ bool8 (*func)(void);
+ u8 field_1;
+};
+
+extern u8 gUnknown_020384F0;
+extern u8 gUnknown_0202E8F4;
+extern u8 gUnknown_0202E8F5;
+extern u8 gUnknown_0202E8F6;
+extern u8 gUnknown_02038561;
+extern u16 gUnknown_0202E8F8;
+extern u8 ewram[];
+extern void (*gUnknown_03004AE4)(u8 taskID, u16 itemID, TaskFunc func);
+extern TaskFunc gUnknown_03005CF0;
+
+void sub_80E62A0(u8 arg0, struct MailStruct* arg1, void* arg2, u8 arg3);
+void sub_808A520(void);
+void sub_80A61D0(void);
+void CB2_InitFlyRegionMap(void);
+u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem);
+bool8 SetUpFieldMove_Cut(void);
+bool8 SetUpFieldMove_Flash(void);
+bool8 SetUpFieldMove_RockSmash(void);
+bool8 SetUpFieldMove_Strength(void);
+bool8 SetUpFieldMove_Teleport(void);
+bool8 SetUpFieldMove_Dig(void);
+bool8 SetUpFieldMove_SecretPower(void);
+bool8 SetUpFieldMove_SoftBoiled(void);
+bool8 SetUpFieldMove_SoftBoiled(void);
+bool8 SetUpFieldMove_SweetScent(void);
+
+#define sFieldMovesTerminator 0xFF // note: should be changed to 0xFFFF, because currently it makes it impossible to add a field move with 0xFF index
+
+// this file's functions
+static void sub_808A8A8(void);
+static void sub_808B3EC(void);
+static void sub_8089D94(u8 taskID);
+static void sub_8089E4C(u8 taskID);
+static void sub_808A5BC(u8 taskID);
+static void sub_808A8D4(u8 taskID);
+static void sub_808A73C(u8 taskID);
+static void sub_808A848(u8 taskID);
+static void sub_808AAF0(u8 taskID);
+static void sub_808ABF4(u8 taskID);
+static void sub_808AB34(u8 taskID);
+static void sub_808ABA8(u8 taskID);
+static void sub_808B224(u8 taskID);
+static void sub_808B2EC(u8 taskID);
+static void sub_808B2B4(u8 taskID);
+static void sub_808B25C(u8 taskID);
+static void sub_808B1EC(u8 taskID);
+static void sub_808B338(u8 taskID);
+static void sub_808B4A4(u8 taskID);
+static void sub_808B4EC(u8 taskID);
+static void sub_808B5E4(u8 taskID);
+static void PokemonMenu_Summary(u8 taskID);
+static void PokemonMenu_Switch(u8 taskID);
+static void PokemonMenu_Item(u8 taskID);
+static void PokemonMenu_Cancel(u8 taskID);
+static void PokemonMenu_GiveItem(u8 taskID);
+static void PokemonMenu_TakeItem(u8 taskID);
+static void PokemonMenu_TakeMail(u8 taskID);
+static void PokemonMenu_Mail(u8 taskID);
+static void PokemonMenu_ReadMail(u8 taskID);
+static void PokemonMenu_CancelSubmenu(u8 taskID);
+static void PokemonMenu_FieldMove(u8 taskID);
+static bool8 SetUpFieldMove_Waterfall(void);
+static bool8 SetUpFieldMove_Surf(void);
+static bool8 SetUpFieldMove_Fly(void);
+static bool8 SetUpFieldMove_Dive(void);
+
+// ewram data
+
+EWRAM_DATA static u8 sPokeMenuCursorPos = 0;
+EWRAM_DATA static u8 sPokeMenuOptionsNo = 0;
+EWRAM_DATA static u8 sPokeMenuOptionsOrder[8] = {0}; // 4 possible field moves and 4 default options
+
+// iwram common
+u8 gLastFieldPokeMenuOpened;
+void (*gUnknown_03005CE4)(void);
+
+// const data
+
+static const struct MenuAction2 sPokemonMenuActions[] =
+{
+ {OtherText_Summary, PokemonMenu_Summary},
+ {OtherText_Switch2, PokemonMenu_Switch},
+ {OtherText_Item, PokemonMenu_Item},
+ {gOtherText_CancelNoTerminator, PokemonMenu_Cancel},
+ {OtherText_Give2, PokemonMenu_GiveItem},
+ {OtherText_Take2, PokemonMenu_TakeItem},
+ {OtherText_Take, PokemonMenu_TakeMail},
+ {OtherText_Mail, PokemonMenu_Mail},
+ {OtherText_Read2, PokemonMenu_ReadMail},
+ {gOtherText_CancelNoTerminator, PokemonMenu_CancelSubmenu},
+ {gMoveNames[MOVE_CUT], PokemonMenu_FieldMove},
+ {gMoveNames[MOVE_FLASH], PokemonMenu_FieldMove},
+ {gMoveNames[MOVE_ROCK_SMASH], PokemonMenu_FieldMove},
+ {gMoveNames[MOVE_STRENGTH], PokemonMenu_FieldMove},
+ {gMoveNames[MOVE_SURF], PokemonMenu_FieldMove},
+ {gMoveNames[MOVE_FLY], PokemonMenu_FieldMove},
+ {gMoveNames[MOVE_DIVE], PokemonMenu_FieldMove},
+ {gMoveNames[MOVE_WATERFALL], PokemonMenu_FieldMove},
+ {gMoveNames[MOVE_TELEPORT], PokemonMenu_FieldMove},
+ {gMoveNames[MOVE_DIG], PokemonMenu_FieldMove},
+ {gMoveNames[MOVE_SECRET_POWER], PokemonMenu_FieldMove},
+ {gMoveNames[MOVE_MILK_DRINK], PokemonMenu_FieldMove},
+ {gMoveNames[MOVE_SOFT_BOILED], PokemonMenu_FieldMove},
+ {gMoveNames[MOVE_SWEET_SCENT], PokemonMenu_FieldMove},
+};
+
+static const u16 sPokeMenuFieldMoves[] =
+{
+ MOVE_CUT, MOVE_FLASH, MOVE_ROCK_SMASH, MOVE_STRENGTH,
+ MOVE_SURF, MOVE_FLY, MOVE_DIVE, MOVE_WATERFALL,
+ MOVE_TELEPORT, MOVE_DIG, MOVE_SECRET_POWER, MOVE_MILK_DRINK,
+ MOVE_SOFT_BOILED, MOVE_SWEET_SCENT, sFieldMovesTerminator,
+};
+
+static const u8 sUnknown_39F572[] = {4, 5, 9, 0};
+static const struct PartyPopupMenu sUnknown_0839F578 = {3, 6, sUnknown_39F572};
+
+static const u8 sUnknown_39F580[] = {8, 6, 9, 0};
+static const struct PartyPopupMenu sUnknown_0839F584 = {3, 9, sUnknown_39F580};
+
+static const struct PokeMenuFieldMoveFunc sFieldMoveFuncs[] =
+{
+ {SetUpFieldMove_Cut, 0x6},
+ {SetUpFieldMove_Flash, 0x9},
+ {SetUpFieldMove_RockSmash, 0x9},
+ {SetUpFieldMove_Strength, 0x9},
+ {SetUpFieldMove_Surf, 0x7},
+ {SetUpFieldMove_Fly, 0x9},
+ {SetUpFieldMove_Dive, 0x9},
+ {SetUpFieldMove_Waterfall, 0x9},
+ {SetUpFieldMove_Teleport, 0x9},
+ {SetUpFieldMove_Dig, 0x9},
+ {SetUpFieldMove_SecretPower, 0x9},
+ {SetUpFieldMove_SoftBoiled, 0x10},
+ {SetUpFieldMove_SoftBoiled, 0x10},
+ {SetUpFieldMove_SweetScent, 0x9},
+};
+
+void sub_8089A70(void)
+{
+ gPaletteFade.bufferTransferDisabled = 1;
+ OpenPartyMenu(0, 0);
+}
+
+static void sub_8089A8C(void)
+{
+ sPokeMenuOptionsNo = 0;
+ // if checking pokemon is an egg, we can't give it an item and it doesn't know any move
+ if (GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_IS_EGG))
+ {
+ AppendToList(sPokeMenuOptionsOrder, &sPokeMenuOptionsNo, POKEMENU_SUMMARY);
+ AppendToList(sPokeMenuOptionsOrder, &sPokeMenuOptionsNo, POKEMENU_SWITCH);
+ AppendToList(sPokeMenuOptionsOrder, &sPokeMenuOptionsNo, POKEMENU_CANCEL);
+ }
+ else
+ {
+ u16 moveID, tableID;
+ for (moveID = 0; moveID < 4; moveID++) // 4, max number of possible field moves
+ {
+ for (tableID = 0; sPokeMenuFieldMoves[tableID] != sFieldMovesTerminator; tableID++)
+ {
+ if (GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_MOVE1 + moveID) == sPokeMenuFieldMoves[tableID])
+ {
+ u8 fieldID = tableID + POKEMENU_FIRST_FIELD_MOVE_ID;
+ AppendToList(sPokeMenuOptionsOrder, &sPokeMenuOptionsNo, fieldID);
+ break;
+ }
+ }
+ }
+ AppendToList(sPokeMenuOptionsOrder, &sPokeMenuOptionsNo, POKEMENU_SUMMARY);
+
+ // can't switch a pokemon if it's the only one in the party
+ if (GetMonData(&gPlayerParty[1], MON_DATA_SPECIES) != 0)
+ AppendToList(sPokeMenuOptionsOrder, &sPokeMenuOptionsNo, POKEMENU_SWITCH);
+
+ if (ItemIsMail(GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_HELD_ITEM)))
+ AppendToList(sPokeMenuOptionsOrder, &sPokeMenuOptionsNo, POKEMENU_MAIL);
+ else
+ AppendToList(sPokeMenuOptionsOrder, &sPokeMenuOptionsNo, POKEMENU_ITEM);
+
+ AppendToList(sPokeMenuOptionsOrder, &sPokeMenuOptionsNo, POKEMENU_CANCEL);
+ }
+}
+
+static void sub_8089BDC(u8 arg0, u8 arg1, u8 arg2, u8 noOfOptions, const struct MenuAction2 *menuActions, const u8 *order, u8 arg6)
+{
+ sub_806D538(5, arg6);
+ MenuDrawTextWindow(arg0, arg1, arg0 + arg2, (noOfOptions * 2) + arg1 + 1);
+ PrintMenuItemsReordered(arg0 + 1, arg1 + 1, noOfOptions, menuActions, order);
+}
+
+void sub_8089C50(u8 arg0, u8 arg1, u8 arg2, u8 noOfOptions, const struct MenuAction2 *menuActions, const u8 *order)
+{
+ sub_8089BDC(arg0, arg1, arg2, noOfOptions, menuActions, order, 1);
+}
+
+static void sub_8089C7C(u8 arg0)
+{
+ u32 r4 = (u8)(18 - (sPokeMenuOptionsNo << 1));
+
+ sub_8089BDC(19, r4, 10, sPokeMenuOptionsNo, sPokemonMenuActions, sPokeMenuOptionsOrder, 3);
+ r4 |= 1;
+ InitMenu(0, 20, r4, sPokeMenuOptionsNo, arg0, 9);
+}
+
+void sub_8089CD4(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ {
+ switch (sub_806BD80(taskID))
+ {
+ case 1:
+ PlaySE(SE_SELECT);
+ gLastFieldPokeMenuOpened = sub_806CA38(taskID);
+ GetMonNickname(&gPlayerParty[gLastFieldPokeMenuOpened], gStringVar1);
+ sub_8089A8C();
+ sPokeMenuCursorPos = 0;
+ sub_8089C7C(0);
+ gTasks[taskID].func = sub_8089D94;
+ sub_808B5B4(taskID);
+ break;
+ case 2:
+ PlaySE(SE_SELECT);
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gTasks[taskID].func = sub_8089E4C;
+ break;
+ }
+ }
+}
+
+static void sub_8089D94(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ {
+ if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ sPokeMenuCursorPos = MoveMenuCursor(-1);
+ sub_808B5B4(taskID);
+ }
+ else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ sPokeMenuCursorPos = MoveMenuCursor(1);
+ sub_808B5B4(taskID);
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sPokemonMenuActions[sPokeMenuOptionsOrder[sPokeMenuCursorPos]].func(taskID);
+ sub_808B5B4(taskID);
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PokemonMenu_Cancel(taskID);
+ sub_808B5B4(taskID);
+ }
+ }
+}
+
+static void sub_8089E4C(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ {
+ gLastFieldPokeMenuOpened = 0;
+ SetMainCallback2(sub_805469C);
+ DestroyTask(taskID);
+ }
+}
+
+static void sub_8089E84(void)
+{
+ GetMonNickname(&gPlayerParty[gLastFieldPokeMenuOpened], gStringVar1);
+ sub_8089A8C();
+ sPokeMenuCursorPos = 0;
+ sub_8089C7C(0);
+}
+
+static void sub_8089EBC(void)
+{
+ do
+ {
+ if (sub_806B124() == TRUE)
+ {
+ sub_806C994(EWRAM_1B000.unk260, gUnknown_020384F0);
+ sub_806BF74(EWRAM_1B000.unk260, 0);
+ gLastFieldPokeMenuOpened = gUnknown_020384F0;
+ sub_8089E84();
+ SetMainCallback2(sub_806AEDC);
+ break;
+ }
+ } while (sub_80F9344() != TRUE);
+}
+
+static void sub_8089F14(void)
+{
+ gPaletteFade.bufferTransferDisabled = 1;
+ sub_806AF4C(0, 0xFF, sub_8089D94, 5);
+ SetMainCallback2(sub_8089EBC);
+}
+
+static void sub_8089F44(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ {
+ u8 spriteID = gSprites[gTasks[taskID].data[3] >> 8].data0;
+ DestroyTask(taskID);
+ ewram1B000_alt.unk262 = 1;
+ ShowPokemonSummaryScreen(gPlayerParty, spriteID, gPlayerPartyCount - 1, sub_8089F14, 0);
+ }
+}
+
+static void PokemonMenu_Summary(u8 taskID)
+{
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gTasks[taskID].func = sub_8089F44;
+}
+
+void sub_808A004(u8 taskID)
+{
+ SetTaskFuncWithFollowupFunc(taskID, sub_806CA60, sub_8089CD4);
+ MenuZeroFillWindowRect(19, 0, 29, 19);
+}
+
+static void PokemonMenu_Switch(u8 taskID)
+{
+ HandleDestroyMenuCursors();
+ ewram01000.unkC = sub_806CD5C;
+ ewram01000.array[53553] = 1;
+ sub_808A004(taskID);
+}
+
+static void sub_808A060(u8 taskID)
+{
+ if (gMain.newKeys == DPAD_UP && sPokeMenuCursorPos != 0)
+ {
+ sPokeMenuCursorPos = MoveMenuCursor(-1);
+ PlaySE(SE_SELECT);
+ }
+ if (gMain.newKeys == DPAD_DOWN && sPokeMenuCursorPos != 2)
+ {
+ sPokeMenuCursorPos = MoveMenuCursor(1);
+ PlaySE(SE_SELECT);
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ PartyMenuGetPopupMenuFunc(0, &sUnknown_0839F578, (void *)sPokemonMenuActions, sPokeMenuCursorPos)(taskID);
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ sub_806E7D0(0, &sUnknown_0839F578);
+ PokemonMenu_CancelSubmenu(taskID);
+ }
+}
+
+static void sub_808A100(u8 taskID)
+{
+ sub_806E750(0, &sUnknown_0839F578, (void*)(sPokemonMenuActions), 0);
+ sub_806D538(0xD, 2);
+ gTasks[taskID].func = sub_808A060;
+}
+
+static void PokemonMenu_Item(u8 taskID)
+{
+ HandleDestroyMenuCursors();
+ sPokeMenuCursorPos = 0;
+ MenuZeroFillWindowRect(19, 0, 29, 19);
+ gTasks[taskID].func = sub_808A100;
+}
+
+static void sub_808A180(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ {
+ u8 mailID = GetMonData(&gPlayerParty[sub_806CA38(taskID)], MON_DATA_MAIL);
+ DestroyTask(taskID);
+ sub_80E62A0(4, &gSaveBlock1.mail[mailID], sub_808A520, 3);
+ }
+}
+
+static void sub_808A1E0(u8 taskID)
+{
+ if (gUnknown_0202E8F6 != 1)
+ {
+ SetHeldItemIconVisibility(taskID, sub_806CA38(taskID));
+ sub_806D538(0, 0);
+ gTasks[taskID].func = sub_8089CD4;
+ }
+}
+
+static void sub_808A228(u8 taskID)
+{
+ if (ItemIsMail(gScriptItemId) && gUnknown_0202E8F4 != 0)
+ {
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gTasks[taskID].func = sub_808A180;
+ }
+ else
+ {
+ MenuZeroFillWindowRect(0, 0, 29, 19);
+ sub_806D538(0, 0);
+ gTasks[taskID].func = sub_8089CD4;
+ }
+}
+
+static void sub_808A2AC(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ PartyMenuTryGiveMonHeldItem(taskID, gScriptItemId, sub_808A228);
+}
+
+static void sub_808A2DC(u8 taskID)
+{
+ u8 mailID = GetMonData(&gPlayerParty[sub_806CA38(taskID)], MON_DATA_MAIL);
+ DestroyTask(taskID);
+ sub_80E62A0(4, &gSaveBlock1.mail[mailID], sub_808A520, 3);
+}
+
+static void sub_808A330(u8 taskID)
+{
+ PartyMenuTryGiveMonHeldItem(taskID, gScriptItemId, sub_808A2DC);
+}
+
+static void sub_808A34C(void)
+{
+ RunTasks();
+}
+
+static void sub_808A358(void)
+{
+ while (1)
+ {
+ if (sub_806B124() == TRUE)
+ {
+ sub_806C994(EWRAM_1B000.unk260, gLastFieldPokeMenuOpened);
+ sub_806BF74(EWRAM_1B000.unk260, 0);
+ SetMainCallback2(sub_806AEDC);
+ break;
+ }
+ if (sub_80F9344() == TRUE)
+ break;
+ }
+}
+
+static void sub_808A3A4(void)
+{
+ while (1)
+ {
+ if (sub_806B124() == TRUE)
+ {
+ sub_806C994(EWRAM_1B000.unk260, gLastFieldPokeMenuOpened);
+ sub_806BF74(EWRAM_1B000.unk260, 0);
+ EWRAM_1B000.unk262 = 3;
+ sub_8089E84();
+ SetMainCallback2(sub_806AEDC);
+ break;
+ }
+ if (sub_80F9344() == TRUE)
+ break;
+ }
+}
+
+void sub_808A3F8(void)
+{
+ if (ItemIsMail(gScriptItemId))
+ {
+ u8 taskID = CreateTask(sub_808A330, 0);
+ gPaletteFade.bufferTransferDisabled = 1;
+ sub_806BD58(taskID, 0);
+ sub_806C994(taskID, gLastFieldPokeMenuOpened);
+ sub_806BF74(taskID, 0);
+ if (!(bool8)(GetMonData(&gPlayerParty[sub_806CA38(taskID)], MON_DATA_HELD_ITEM)))
+ {
+ SetMainCallback2(sub_808A34C);
+ return;
+ }
+ else
+ DestroyTask(taskID);
+ }
+ gPaletteFade.bufferTransferDisabled = 1;
+ if (gScriptItemId)
+ {
+ sub_806AF4C(0, 0xFF, sub_808A2AC, 0xFF);
+ SetMainCallback2(sub_808A358);
+ }
+ else
+ {
+ sub_806AF4C(0, 0xFF, sub_8089D94, 5);
+ SetMainCallback2(sub_808A3A4);
+ }
+}
+
+static void sub_808A4D4(void)
+{
+ while (1)
+ {
+ if (sub_806B124() == TRUE)
+ {
+ sub_806C994(EWRAM_1B000.unk260, gLastFieldPokeMenuOpened);
+ sub_806BF74(EWRAM_1B000.unk260, 0);
+ SetMainCallback2(sub_806AEDC);
+ break;
+ }
+ if (sub_80F9344() == TRUE)
+ break;
+ }
+}
+
+void sub_808A520(void)
+{
+ gPaletteFade.bufferTransferDisabled = 1;
+ if (gScriptResult == 0)
+ {
+ if (gUnknown_0202E8F8)
+ RemoveBagItem(gUnknown_0202E8F8, 1);
+ AddBagItem(GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_HELD_ITEM), 1);
+ TakeMailFromMon(&gPlayerParty[gLastFieldPokeMenuOpened]);
+ SetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_HELD_ITEM, (void*) &gUnknown_0202E8F8);
+ sub_806AF4C(0, 0xFF, sub_8089CD4, 0);
+ }
+ else
+ sub_806AF4C(0, 0xFF, sub_808A5BC, 0xFF);
+ SetMainCallback2(sub_808A4D4);
+}
+
+static void sub_808A5BC(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ {
+ DisplayGiveHeldItemMessage(gLastFieldPokeMenuOpened, gScriptItemId, 0);
+ gTasks[taskID].func = sub_808A1E0;
+ }
+}
+
+static void sub_808A604(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(sub_80A61D0);
+ DestroyTask(taskID);
+ }
+}
+
+static void PokemonMenu_GiveItem(u8 taskID)
+{
+ gUnknown_0202E8F5 = sub_806CA38(taskID);
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gTasks[taskID].func = sub_808A604;
+}
+
+static void sub_808A678(u8 taskID)
+{
+ sub_808A8D4(taskID);
+}
+
+static void PokemonMenu_TakeItem(u8 taskID)
+{
+ HandleDestroyMenuCursors();
+ MenuZeroFillWindowRect(19, 0, 29, 19);
+ sub_806D5A4();
+ PartyMenuTryGiveMonHeldItem_806ECE8(taskID, sub_808A678);
+}
+
+static void PokemonMenu_TakeMail(u8 taskID)
+{
+ HandleDestroyMenuCursors();
+ MenuZeroFillWindowRect(19, 0, 29, 19);
+ sub_806D5A4();
+ DoTakeMail(taskID, sub_808A678);
+}
+
+static void PokemonMenu_Mail(u8 taskID)
+{
+ HandleDestroyMenuCursors();
+ sPokeMenuCursorPos = 0;
+ MenuZeroFillWindowRect(19, 0, 29, 19);
+ sub_806E750(0, &sUnknown_0839F584, (void*) sPokemonMenuActions, 0);
+ gTasks[taskID].func = sub_808A73C;
+}
+
+static void sub_808A73C(u8 taskID)
+{
+ if (gMain.newAndRepeatedKeys == DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ if (sPokeMenuCursorPos == 0)
+ sPokeMenuCursorPos = MoveMenuCursor(sUnknown_0839F584.unk0 - 1);
+ else
+ sPokeMenuCursorPos = MoveMenuCursor(-1);
+ }
+ if (gMain.newAndRepeatedKeys == DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ if (sPokeMenuCursorPos == sUnknown_0839F584.unk0 - 1)
+ sPokeMenuCursorPos = MoveMenuCursor(1 - sUnknown_0839F584.unk0);
+ else
+ sPokeMenuCursorPos = MoveMenuCursor(1);
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ PartyMenuGetPopupMenuFunc(0, &sUnknown_0839F584, (void*) sPokemonMenuActions, sPokeMenuCursorPos)(taskID);
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ sub_806E7D0(0, &sUnknown_0839F584);
+ PokemonMenu_Cancel(taskID);
+ }
+}
+
+static void PokemonMenu_ReadMail(u8 taskID)
+{
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gTasks[taskID].func = sub_808A848;
+}
+
+static void sub_808A848(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ {
+ u8 mailID = GetMonData(&gPlayerParty[sub_806CA38(taskID)], MON_DATA_MAIL);
+ DestroyTask(taskID);
+ HandleReadMail(&gSaveBlock1.mail[mailID], sub_808A8A8, 1);
+ }
+}
+
+static void sub_808A8A8(void)
+{
+ gUnknown_020384F0 = gLastFieldPokeMenuOpened;
+ ewram1B000.unk262 = 4;
+ sub_8089F14();
+}
+
+static void sub_808A8D4(u8 taskID)
+{
+ sPokeMenuCursorPos = 0;
+ MenuZeroFillWindowRect(19, 0, 29, 19);
+ sub_806D538(0, 0);
+ gTasks[taskID].func = sub_8089CD4;
+}
+
+static void PokemonMenu_Cancel(u8 taskID)
+{
+ HandleDestroyMenuCursors();
+ PlaySE(SE_SELECT);
+ sub_808A8D4(taskID);
+}
+
+static void PokemonMenu_CancelSubmenu(u8 taskID)
+{
+ HandleDestroyMenuCursors();
+ PlaySE(SE_SELECT);
+ MenuZeroFillWindowRect(19, 0, 29, 19);
+ sub_806D5A4();
+ sub_8089C7C(sPokeMenuCursorPos);
+ gTasks[taskID].func = sub_8089D94;
+}
+
+#define IS_SOFTBOILED_MILKDRINK(ID)((ID == (POKEMENU_MILK_DRINK - POKEMENU_FIRST_FIELD_MOVE_ID) || ID == (POKEMENU_SOFT_BOILED - POKEMENU_FIRST_FIELD_MOVE_ID)))
+#define IS_SURF(ID)((ID == (POKEMENU_SURF - POKEMENU_FIRST_FIELD_MOVE_ID)))
+#define IS_FLY(ID)((ID == (POKEMENU_FLY - POKEMENU_FIRST_FIELD_MOVE_ID)))
+
+#define tFieldMoveId data[11]
+
+static void PokemonMenu_FieldMove(u8 taskID)
+{
+ s16* data = gTasks[taskID].data;
+
+ HandleDestroyMenuCursors();
+ tFieldMoveId = sPokeMenuOptionsOrder[sPokeMenuCursorPos] - POKEMENU_FIRST_FIELD_MOVE_ID;
+ if (sub_80F9344() == TRUE)
+ {
+ MenuZeroFillWindowRect(19, 0, 29, 19);
+ if (IS_SOFTBOILED_MILKDRINK(tFieldMoveId))
+ sub_806D538(9, 0);
+ else
+ sub_806D538(sFieldMoveFuncs[tFieldMoveId].field_1, 0);
+ gTasks[taskID].func = sub_808ABF4;
+ }
+ else if (tFieldMoveId <= 7 && FlagGet(BADGE01_GET + tFieldMoveId) != TRUE)
+ {
+ // can't use a field HM move without a proper badge
+ MenuZeroFillWindowRect(19, 0, 29, 19);
+ sub_806D5A4();
+ sub_806E834(gOtherText_CantBeUsedBadge, 1);
+ gTasks[taskID].func = sub_808AAF0;
+ }
+ else
+ {
+ if (sFieldMoveFuncs[tFieldMoveId].func() == TRUE)
+ {
+ sPokeMenuCursorPos = 0;
+ if (!IS_SOFTBOILED_MILKDRINK(tFieldMoveId))
+ {
+ gTasks[taskID].func = sub_808AB34;
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ }
+ else
+ sub_8133D28(taskID);
+ }
+ else
+ {
+ MenuZeroFillWindowRect(19, 0, 29, 19);
+ if (IS_SURF(tFieldMoveId) && TestPlayerAvatarFlags(8))
+ sub_806D538(8, 0);
+ else
+ sub_806D538(sFieldMoveFuncs[tFieldMoveId].field_1, 0);
+ gTasks[taskID].func = sub_808ABF4;
+ }
+ }
+}
+
+static void sub_808AAF0(u8 taskID)
+{
+ if (gUnknown_0202E8F6 != 1 && (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON))
+ {
+ MenuZeroFillWindowRect(0, 14, 29, 19);
+ PokemonMenu_Cancel(taskID);
+ }
+}
+
+static void sub_808AB34(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ {
+ if (!IS_FLY(gTasks[taskID].tFieldMoveId) || ShouldDoBrailleFlyEffect())
+ SetMainCallback2(c2_exit_to_overworld_2_switch);
+ else
+ SetMainCallback2(CB2_InitFlyRegionMap);
+ DestroyTask(taskID);
+ }
+}
+
+#undef tFieldMoveId
+
+void FieldCallback_Teleport(void)
+{
+ pal_fill_black();
+ CreateTask(sub_808ABA8, 8);
+}
+
+static void sub_808ABA8(u8 taskID)
+{
+ if (sub_807D770() == TRUE)
+ {
+ gFieldEffectArguments[0] = GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_SPECIES);
+ gUnknown_03005CE4();
+ DestroyTask(taskID);
+ }
+}
+
+static void sub_808ABF4(u8 taskID)
+{
+ if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)
+ {
+ MenuZeroFillWindowRect(1, 17, 28, 18);
+ PokemonMenu_Cancel(taskID);
+ }
+}
+
+static void sub_808AC2C(void)
+{
+ gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
+ FieldEffectStart(FLDEFF_USE_SURF);
+}
+
+static bool8 SetUpFieldMove_Surf(void)
+{
+ if (PartyHasMonWithSurf() == TRUE && IsPlayerFacingSurfableFishableWater() == TRUE)
+ {
+ gFieldCallback = FieldCallback_Teleport;
+ gUnknown_03005CE4 = sub_808AC2C;
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+static void sub_808AC8C(void)
+{
+ gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
+ FieldEffectStart(FLDEFF_USE_FLY);
+}
+
+static bool8 SetUpFieldMove_Fly(void)
+{
+ if (ShouldDoBrailleFlyEffect())
+ {
+ gFieldCallback = FieldCallback_Teleport;
+ gUnknown_03005CE4 = DoBrailleFlyEffect;
+ return TRUE;
+ }
+ if (Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType) == TRUE)
+ {
+ gFieldCallback = FieldCallback_Teleport;
+ gUnknown_03005CE4 = sub_808AC8C;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void sub_808AD0C(void)
+{
+ while (1)
+ {
+ if (sub_806B124() == TRUE)
+ {
+ sub_806C994(EWRAM_1B000.unk260, gLastFieldPokeMenuOpened);
+ sub_806BF74(EWRAM_1B000.unk260, 0);
+ SetMainCallback2(sub_806AEDC);
+ break;
+ }
+ if (sub_80F9344() == TRUE)
+ break;
+ }
+}
+
+void sub_808AD58(void)
+{
+ gPaletteFade.bufferTransferDisabled = 1;
+ sub_806AF4C(0, 0xFF, sub_8089CD4, 0);
+ SetMainCallback2(sub_808AD0C);
+}
+
+u16 unref_sub_808AD88(void)
+{
+ return GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_SPECIES);
+}
+
+static void sub_808ADAC(void)
+{
+ gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
+ FieldEffectStart(FLDEFF_USE_DIVE);
+}
+
+static bool8 SetUpFieldMove_Dive(void)
+{
+ gFieldEffectArguments[1] = sub_8068F18();
+ if (gFieldEffectArguments[1])
+ {
+ gFieldCallback = FieldCallback_Teleport;
+ gUnknown_03005CE4 = sub_808ADAC;
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+static void sub_808AE08(void)
+{
+ gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
+ FieldEffectStart(FLDEFF_USE_WATERFALL);
+}
+
+static bool8 SetUpFieldMove_Waterfall(void)
+{
+ s16 x, y;
+ GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
+ if (MetatileBehavior_IsWaterfall(MapGridGetMetatileBehaviorAt(x, y)) == TRUE
+ && IsPlayerSurfingNorth() == TRUE)
+ {
+ gFieldCallback = FieldCallback_Teleport;
+ gUnknown_03005CE4 = sub_808AE08;
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+static void sub_808AE8C(void)
+{
+ u8 i;
+ u8 arg = gScriptItemId - 33;
+ for (i = 0; i < 6; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES))
+ {
+ sub_806D668(i);
+ if (GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) || !CanMonLearnTMHM(&gPlayerParty[i], arg))
+ sub_806BC3C(i, 0x9A);
+ else if (pokemon_has_move(&gPlayerParty[i], ItemIdToBattleMoveId(gScriptItemId)))
+ sub_806BC3C(i, 0xA8);
+ else
+ sub_806BC3C(i, 0x8C);
+ }
+ }
+}
+
+static void sub_808AF20(void)
+{
+ u8 i;
+ for (i = 0; i < 6; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES))
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) || !GetEvolutionTargetSpecies(&gPlayerParty[i], 3, gScriptItemId))
+ {
+ sub_806D668(i);
+ sub_806BC3C(i, 0);
+ }
+ }
+ }
+}
+
+static void sub_808AF80(void)
+{
+ while (1)
+ {
+ if (sub_806B124() == TRUE)
+ {
+ if (gUnknown_02038561 == 0)
+ {
+ switch (CheckIfItemIsTMHMOrEvolutionStone(gScriptItemId))
+ {
+ case 1:
+ sub_808AE8C();
+ break;
+ case 2:
+ sub_808AF20();
+ break;
+ }
+ }
+ if (gLastFieldPokeMenuOpened > 5 || !GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_SPECIES))
+ gLastFieldPokeMenuOpened = 0;
+ sub_806C994(ewram1B000.unk260, gLastFieldPokeMenuOpened);
+ sub_806BF74(ewram1B000.unk260, 0);
+ SetMainCallback2(sub_806AEDC);
+ break;
+ }
+ if (sub_80F9344() == TRUE)
+ break;
+ }
+}
+
+void sub_808B020(void)
+{
+ gPaletteFade.bufferTransferDisabled = 1;
+ switch (gUnknown_02038561)
+ {
+ case 0:
+ if (CheckIfItemIsTMHMOrEvolutionStone(gScriptItemId) == 1)
+ sub_806AF4C(0, 0, sub_808B0C0, 20);
+ else
+ sub_806AF4C(0, 0, sub_808B0C0, 3);
+ break;
+ case 4:
+ sub_806AF4C(0, 0, sub_808B1EC, 0xFF);
+ break;
+ case 1:
+ case 3:
+ sub_806AF4C(0, 0, sub_808B0C0, 4);
+ break;
+ }
+ SetMainCallback2(sub_808AF80);
+}
+
+void sub_808B0C0(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ {
+ switch (sub_806BD80(taskID))
+ {
+ case 1:
+ gLastFieldPokeMenuOpened = sub_806CA38(taskID);
+ if (GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_IS_EGG))
+ PlaySE(SE_HAZURE);
+ else
+ {
+ sub_806D5A4();
+ if (gUnknown_02038561 == 0)
+ gUnknown_03004AE4(taskID, gScriptItemId, sub_808B224);
+ if (gUnknown_02038561 == 1)
+ {
+ PlaySE(SE_SELECT);
+ PartyMenuTryGiveMonHeldItem(taskID, gScriptItemId, sub_808B2EC);
+ }
+ if (gUnknown_02038561 == 3)
+ {
+ PlaySE(SE_SELECT);
+ PartyMenuTryGiveMonMail(taskID, sub_808B2B4);
+ }
+ }
+ break;
+ case 2:
+ gLastFieldPokeMenuOpened = sub_806CA38(taskID);
+ PlaySE(SE_SELECT);
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ if (gUnknown_02038561 == 0 || gUnknown_02038561 == 1)
+ gTasks[taskID].func = sub_808B25C;
+ if (gUnknown_02038561 == 3)
+ gTasks[taskID].func = sub_808B2B4;
+ break;
+ }
+ }
+}
+
+static void sub_808B1EC(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ gUnknown_03004AE4(taskID, gScriptItemId, sub_808B224);
+}
+
+static void sub_808B224(u8 taskID)
+{
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gTasks[taskID].func = sub_808B25C;
+}
+
+static void sub_808B25C(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(sub_80A5B40);
+ DestroyTask(taskID);
+ }
+}
+
+static void sub_808B288(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(Mailbox_ReturnToMailListAfterDeposit);
+ DestroyTask(taskID);
+ }
+}
+
+static void sub_808B2B4(u8 taskID)
+{
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gTasks[taskID].func = sub_808B288;
+}
+
+static void sub_808B2EC(u8 taskID)
+{
+ if (gUnknown_0202E8F4 == 2)
+ {
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gTasks[taskID].func = sub_808B338;
+ }
+ else
+ sub_808B224(taskID);
+}
+
+static void sub_808B338(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ {
+ u8 mailID;
+
+ gLastFieldPokeMenuOpened = sub_806CA38(taskID);
+ mailID = GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_MAIL);
+ DestroyTask(taskID);
+ sub_80E62A0(4, &gSaveBlock1.mail[mailID], sub_808B3EC, 3);
+ }
+}
+
+static void sub_808B3A0(void)
+{
+ while (1)
+ {
+ if (sub_806B124() == TRUE)
+ {
+ sub_806C994(EWRAM_1B000.unk260, gLastFieldPokeMenuOpened);
+ sub_806BF74(EWRAM_1B000.unk260, 0);
+ SetMainCallback2(sub_806AEDC);
+ break;
+ }
+ if (sub_80F9344() == TRUE)
+ break;
+ }
+}
+
+static void sub_808B3EC(void)
+{
+ IntrCallback callback;
+
+ gPaletteFade.bufferTransferDisabled = 1;
+ if (gScriptResult == 0)
+ {
+ if (gUnknown_0202E8F8)
+ RemoveBagItem(gUnknown_0202E8F8, 1);
+ AddBagItem(GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_HELD_ITEM), 1);
+ TakeMailFromMon(&gPlayerParty[gLastFieldPokeMenuOpened]);
+ SetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_HELD_ITEM, (void*) &gUnknown_0202E8F8);
+ CreateTask(sub_808B25C, 5);
+ gPaletteFade.bufferTransferDisabled = 0;
+ callback = sub_806AEDC;
+ }
+ else
+ {
+ sub_806AF4C(0, 0, sub_808B4A4, 0xFF);
+ callback = sub_808B3A0;
+ }
+ SetMainCallback2(callback);
+}
+
+static void sub_808B4A4(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ {
+ DisplayGiveHeldItemMessage(gLastFieldPokeMenuOpened, gScriptItemId, 1);
+ gTasks[taskID].func = sub_808B4EC;
+ }
+}
+
+static void sub_808B4EC(u8 taskID)
+{
+ if (gUnknown_0202E8F6 != 1)
+ sub_808B224(taskID);
+}
+
+void sub_808B508(u8 taskID)
+{
+ sub_808B224(taskID);
+}
+
+static void sub_808B518(void)
+{
+ while (1)
+ {
+ if (sub_806B124() == TRUE)
+ {
+ sub_806C994(EWRAM_1B000.unk260, gUnknown_020384F0);
+ sub_806BF74(EWRAM_1B000.unk260, 0);
+ SetMainCallback2(sub_806AEDC);
+ break;
+ }
+ if (sub_80F9344() == TRUE)
+ break;
+ }
+}
+
+void sub_808B564(void)
+{
+ gPaletteFade.bufferTransferDisabled = 1;
+ if (sub_809FA30() != 4)
+ sub_806AF4C(0, 0, TaughtMove, 0xFF);
+ else
+ sub_806AF4C(0, 0, StopTryingToTeachMove_806F588, 0xFF);
+ SetMainCallback2(sub_808B518);
+}
+
+void sub_808B5B4(u32 taskID)
+{
+ gUnknown_03005CF0 = gTasks[taskID].func;
+ gTasks[taskID].func = sub_808B5E4;
+ sub_808B5E4(taskID);
+}
+
+static void sub_808B5E4(u8 taskID)
+{
+ if (sub_8055870() != TRUE)
+ gTasks[taskID].func = gUnknown_03005CF0;
+}
diff --git a/src/pokenav.c b/src/pokenav.c
index 84ed7b14b..21d7bb4e3 100644
--- a/src/pokenav.c
+++ b/src/pokenav.c
@@ -38,3 +38,5 @@ void sub_80F700C(u8 *arg0, u16 arg1) {
ptr[2] = 0x80;
ptr[3] = 0xFF;
}
+
+IWRAM_DATA MainCallback gUnknown_03000744;
diff --git a/src/post_battle_event_funcs.c b/src/post_battle_event_funcs.c
index 8d85705c8..27d7022fe 100644
--- a/src/post_battle_event_funcs.c
+++ b/src/post_battle_event_funcs.c
@@ -4,7 +4,7 @@
#include "load_save.h"
#include "main.h"
#include "pokemon.h"
-#include "rom4.h"
+#include "overworld.h"
#include "script_pokemon_80C4.h"
extern u8 gUnknown_02039324;
@@ -14,7 +14,7 @@ int GameClear(void)
int i;
bool32 ribbonGet;
- HealPlayerParty();
+ ScrSpecial_HealPlayerParty();
if (FlagGet(SYS_GAME_CLEAR) == TRUE)
{
diff --git a/src/record_mixing.c b/src/record_mixing.c
index d1083910c..8dff432c1 100644
--- a/src/record_mixing.c
+++ b/src/record_mixing.c
@@ -10,11 +10,11 @@
#include "items.h"
#include "load_save.h"
#include "link.h"
-#include "mauville_old_man.h"
+#include "mauville_man.h"
#include "menu.h"
#include "mystery_event_script.h"
#include "rng.h"
-#include "rom4.h"
+#include "overworld.h"
#include "save.h"
#include "script.h"
#include "secret_base.h"
@@ -29,7 +29,7 @@ extern u8 ewram[];
#define unk_2018000 (*(struct PlayerRecords *)(ewram + 0x18000))
#define unk_2008000 (*(struct PlayerRecords *)(ewram + 0x08000))
-extern struct RecordMixing_UnknownStruct gUnknown_02038738;
+extern struct RecordMixingDayCareMail gUnknown_02038738;
extern u16 gSpecialVar_0x8005;
u32 gUnknown_03005D2C;
@@ -40,9 +40,9 @@ static u8 gUnknown_0300071C[4];
void *recordMixingSecretBases = &gSaveBlock1.secretBases;
void *recordMixingTvShows = &gSaveBlock1.tvShows;
void *gUnknown_083D0274 = &gSaveBlock1.unknown_2ABC;
-void *gUnknown_083D0278 = &gSaveBlock1.oldMan;
+void *gUnknown_083D0278 = &gSaveBlock1.mauvilleMan;
void *recordMixingEasyChatPairs = &gSaveBlock1.easyChatPairs;
-struct RecordMixing_UnknownStruct *gUnknown_083D0280 = &gUnknown_02038738;
+struct RecordMixingDayCareMail *gUnknown_083D0280 = &gUnknown_02038738;
void *gUnknown_083D0284 = &gSaveBlock2.filler_A8;
#define BUFFER_CHUNK_SIZE 200
@@ -59,7 +59,7 @@ struct PlayerRecords
u8 filler1004[0x40];
u8 filler1044[0x40];
struct EasyChatPair easyChatPairs[5];
- struct RecordMixing_UnknownStruct filler10AC;
+ struct RecordMixingDayCareMail filler10AC;
u8 filler1124[0xA4];
u16 filler11C8[0x34];
};
@@ -74,10 +74,10 @@ void RecordMixing_PrepareExchangePacket(void)
memcpy(unk_2018000.filler1004, gUnknown_083D0274, sizeof(unk_2008000.filler1004));
memcpy(unk_2018000.filler1044, gUnknown_083D0278, sizeof(unk_2008000.filler1044));
memcpy(unk_2018000.easyChatPairs, recordMixingEasyChatPairs, sizeof(unk_2018000.easyChatPairs));
- gUnknown_02038738.data[0] = gSaveBlock1.filler_303C.data[0];
- gUnknown_02038738.data[1] = gSaveBlock1.filler_303C.data[1];
- sub_8041324(gSaveBlock1.daycareData, &gUnknown_02038738);
- memcpy(&unk_2018000.filler10AC, gUnknown_083D0280, sizeof(struct RecordMixing_UnknownStruct));
+ gUnknown_02038738.mail[0] = gSaveBlock1.daycareData.misc.mail[0];
+ gUnknown_02038738.mail[1] = gSaveBlock1.daycareData.misc.mail[1];
+ sub_8041324(gSaveBlock1.daycareData.mons, &gUnknown_02038738);
+ memcpy(&unk_2018000.filler10AC, gUnknown_083D0280, sizeof(struct RecordMixingDayCareMail));
memcpy(unk_2018000.filler1124, gUnknown_083D0284, sizeof(unk_2018000.filler1124));
if (GetMultiplayerId() == 0)
@@ -461,10 +461,10 @@ u8 sub_80B9BBC(u16 *a)
void sub_80B9BC4(u8 *a, size_t b, u8 c[][2], u8 d, u8 e)
{
- struct RecordMixing_UnknownStructSub *r6 = (struct RecordMixing_UnknownStructSub *)(a + b * c[d][0]);
- struct RecordMixing_UnknownStructSub *src = r6 + c[d][1];
- struct RecordMixing_UnknownStructSub sp0 = *src;
- struct RecordMixing_UnknownStructSub *r8 = (struct RecordMixing_UnknownStructSub *)(a + b * c[e][0]);
+ struct DayCareMail *r6 = (struct DayCareMail *)(a + b * c[d][0]);
+ struct DayCareMail *src = r6 + c[d][1];
+ struct DayCareMail sp0 = *src;
+ struct DayCareMail *r8 = (struct DayCareMail *)(a + b * c[e][0]);
r6 += c[d][1];
*r6 = *(r8 + c[e][1]);
@@ -511,7 +511,7 @@ void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d)
u16 i; // r3
u16 r7;
u8 r1;
- struct RecordMixing_UnknownStruct *r6;
+ struct DayCareMisc *r6;
//asm("":::"r8");
SeedRng(gLinkPlayers[0].trainerId);
@@ -526,7 +526,7 @@ void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d)
sp3C = 0;
for (i = 0; i < r8; i++)
{
- r6 = (struct RecordMixing_UnknownStruct *)(a + b * i);
+ r6 = (struct DayCareMisc *)(a + b * i);
if (r6->unk70 != 0)
{
for (r7 = 0; r7 < r6->unk70; r7++)
@@ -540,7 +540,7 @@ void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d)
//_080B9D46
for (r7 = 0, i = 0; i < r8; i++)
{
- r6 = (struct RecordMixing_UnknownStruct *)(a + b * i);
+ r6 = (struct DayCareMisc *)(a + b * i);
if (sp1C[i][0] == 1 || sp1C[i][1] == 1)
sp3C++;
if (sp1C[i][0] == 1 && sp1C[i][1] == 0)
@@ -596,7 +596,7 @@ void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d)
//_080B9E3E
for (i = 0; i < 4; i++)
{
- r6 = (struct RecordMixing_UnknownStruct *)a + b * c;
+ r6 = (struct DayCareMisc *)a + b * c;
spC[i] = r6;
}
r1 = sub_80B9C4C(d) % 3;
@@ -630,7 +630,7 @@ void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d)
//_080B9EF0
//memcpy(&gSaveBlock1.filler_303C.data[0], a + b * c, 0x38);
//memcpy(&gSaveBlock1.filler_303C.data[1], a + b * c + 0x38, 0x38);
- r6 = (struct RecordMixing_UnknownStruct *)(a + b * c);
+ r6 = (struct DayCareMisc *)(a + b * c);
gSaveBlock1.filler_303C.data[0] = r6->data[0];
gSaveBlock1.filler_303C.data[1] = r6->data[1];
//memcpy(&gSaveBlock1.filler_303C.data[0], &r6->data[0], 0x38);
diff --git a/src/region_map.c b/src/region_map.c
index 076dfecec..900c9ad71 100644
--- a/src/region_map.c
+++ b/src/region_map.c
@@ -9,7 +9,7 @@
#include "palette.h"
#include "pokemon_menu.h"
#include "region_map.h"
-#include "rom4.h"
+#include "overworld.h"
#include "secret_base.h"
#include "songs.h"
#include "sprite.h"
@@ -714,7 +714,7 @@ static void InitializeCursorPosition(void)
return;
}
- switch (get_map_light_level_by_bank_and_number(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum) - 1)
+ switch (GetMapTypeByGroupAndId(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum) - 1)
{
default:
case 0:
@@ -733,7 +733,7 @@ static void InitializeCursorPosition(void)
break;
case 3:
case 6:
- mapHeader = get_mapheader_by_bank_and_number(gSaveBlock1.warp4.mapGroup, gSaveBlock1.warp4.mapNum);
+ mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.warp4.mapGroup, gSaveBlock1.warp4.mapNum);
gRegionMap->mapSecId = mapHeader->regionMapSectionId;
gRegionMap->playerIsInCave = TRUE;
mapWidth = mapHeader->mapData->width;
@@ -742,7 +742,7 @@ static void InitializeCursorPosition(void)
y = gSaveBlock1.warp4.y;
break;
case 8:
- mapHeader = get_mapheader_by_bank_and_number(gSaveBlock1.warp2.mapGroup, gSaveBlock1.warp2.mapNum);
+ mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.warp2.mapGroup, gSaveBlock1.warp2.mapNum);
gRegionMap->mapSecId = mapHeader->regionMapSectionId;
gRegionMap->playerIsInCave = TRUE;
mapWidth = mapHeader->mapData->width;
@@ -758,12 +758,12 @@ static void InitializeCursorPosition(void)
if (gRegionMap->mapSecId != MAPSEC_UNK_0x57)
{
r4 = &gSaveBlock1.warp4;
- mapHeader = get_mapheader_by_bank_and_number(r4->mapGroup, r4->mapNum);
+ mapHeader = Overworld_GetMapHeaderByGroupAndId(r4->mapGroup, r4->mapNum);
}
else
{
r4 = &gSaveBlock1.warp2;
- mapHeader = get_mapheader_by_bank_and_number(r4->mapGroup, r4->mapNum);
+ mapHeader = Overworld_GetMapHeaderByGroupAndId(r4->mapGroup, r4->mapNum);
gRegionMap->mapSecId = mapHeader->regionMapSectionId;
}
gRegionMap->playerIsInCave = FALSE;
@@ -850,7 +850,7 @@ static void sub_80FB600(void)
default:
case 0:
{
- struct MapHeader *mapHeader = get_mapheader_by_bank_and_number(mapGroup, mapNum);
+ struct MapHeader *mapHeader = Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum);
u16 r1;
gRegionMap->mapSecId = mapHeader->regionMapSectionId;
diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c
new file mode 100644
index 000000000..343c8f183
--- /dev/null
+++ b/src/reshow_battle_screen.c
@@ -0,0 +1,332 @@
+#include "global.h"
+#include "battle.h"
+#include "battle_anim.h"
+#include "palette.h"
+#include "main.h"
+#include "unknown_task.h"
+#include "text.h"
+#include "rom_8077ABC.h"
+#include "data2.h"
+
+extern struct SpriteTemplate gUnknown_02024E8C;
+extern struct Window gUnknown_03004210;
+extern u16 gUnknown_03004280;
+extern u16 gUnknown_03004288;
+extern u16 gUnknown_030042A4;
+extern u16 gUnknown_030042C0;
+extern u16 gUnknown_030041B0;
+extern u16 gUnknown_030041B4;
+extern u16 gUnknown_030041B8;
+extern u16 gUnknown_030042A0;
+extern u8 gReservedSpritePaletteCount;
+extern u8 gActionSelectionCursor[4];
+extern u8 gBankInMenu;
+extern u16 gBattlePartyID[4];
+extern u8 gNoOfAllBanks;
+extern u16 gBattleTypeFlags;
+extern u8 gObjectBankIDs[4];
+extern u8 gBattleMonForms[4];
+extern u8 gHealthboxIDs[4];
+
+bool8 sub_800E414(u8 a0);
+bool8 sub_8031C30(u8 a0);
+void sub_8031EE8(void);
+void sub_80327CC(void);
+void sub_8032984(u8 a, u16 b);
+void sub_800FCD4(void);
+void BattleLoadOpponentMonSprite(struct Pokemon *, u8 bank);
+void BattleLoadPlayerMonSprite(struct Pokemon *, u8 bank);
+void BattleLoadSubstituteSprite(u8 bank, u8 b);
+void LoadPlayerTrainerBankSprite(u16 a0, u8 bank);
+u8 sub_8077F7C(u8 bank);
+u8 sub_8077F68(u8 bank);
+void nullsub_11(u8 healthboxID, u8 a1);
+void sub_8043DB0(u8 bank);
+u8 battle_make_oam_normal_battle(u8 bank);
+u8 battle_make_oam_safari_battle(void);
+void sub_8045A5C(u8 healthboxID, struct Pokemon*, u8);
+void sub_8043F44(u8 bank);
+void sub_8043DFC(u8 healthboxID);
+
+// this file's functions
+static void CB2_ReshowBattleScreenAfterMenu(void);
+static bool8 LoadAppropiateBankSprite(u8 bank);
+static void sub_807B184(u8 bank);
+static void sub_807B508(u8 bank);
+static void sub_807B06C(void);
+
+#define gReshowState ewram[0x1FFFF]
+#define gHelperState ewram[0x1FFFE]
+
+void nullsub_14(void)
+{
+
+}
+
+void ReshowBattleScreenAfterMenu(void)
+{
+ gPaletteFade.bufferTransferDisabled = 1;
+ SetHBlankCallback(0);
+ SetVBlankCallback(0);
+ REG_MOSAIC = 0;
+ gReshowState = 0;
+ gHelperState = 0;
+ SetMainCallback2(CB2_ReshowBattleScreenAfterMenu);
+}
+
+static void CB2_ReshowBattleScreenAfterMenu(void)
+{
+ switch (gReshowState)
+ {
+ case 0:
+ dp12_8087EA4();
+ SetUpWindowConfig(&gWindowConfig_81E6C58);
+ ResetPaletteFade();
+ InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58);
+ gUnknown_030042A4 = 0;
+ gUnknown_030042A0 = 0;
+ gUnknown_030042C0 = 0;
+ gUnknown_030041B4 = 0;
+ gUnknown_03004288 = 0;
+ gUnknown_03004280 = 0;
+ gUnknown_030041B0 = 0;
+ gUnknown_030041B8 = 0;
+ break;
+ case 1:
+ {
+ const u32 zero = 0;
+ CpuFastSet(&zero, (void*) VRAM, 0x1006000);
+ }
+ break;
+ case 2:
+ if (!sub_800E414(gHelperState))
+ {
+ gHelperState++;
+ gReshowState--;
+ }
+ else
+ gHelperState = 0;
+ break;
+ case 3:
+ ResetSpriteData();
+ break;
+ case 4:
+ FreeAllSpritePalettes();
+ gReservedSpritePaletteCount = 4;
+ break;
+ case 5:
+ sub_8031EE8();
+ break;
+ case 6:
+ if (sub_8031C30(gHelperState))
+ gHelperState = 0;
+ else
+ {
+ gHelperState++;
+ gReshowState--;
+ }
+ break;
+ case 7:
+ if (!LoadAppropiateBankSprite(0))
+ gReshowState--;
+ break;
+ case 8:
+ if (!LoadAppropiateBankSprite(1))
+ gReshowState--;
+ break;
+ case 9:
+ if (!LoadAppropiateBankSprite(2))
+ gReshowState--;
+ break;
+ case 10:
+ if (!LoadAppropiateBankSprite(3))
+ gReshowState--;
+ break;
+ case 11:
+ sub_807B184(0);
+ break;
+ case 12:
+ sub_807B184(1);
+ break;
+ case 13:
+ sub_807B184(2);
+ break;
+ case 14:
+ sub_807B184(3);
+ break;
+ case 15:
+ sub_807B508(0);
+ break;
+ case 16:
+ sub_807B508(1);
+ break;
+ case 17:
+ sub_807B508(2);
+ break;
+ case 18:
+ sub_807B508(3);
+ break;
+ case 19:
+ {
+ u8 opponentBank;
+ u16 species;
+
+ sub_80327CC();
+
+ opponentBank = GetBankByPlayerAI(1);
+ species = GetMonData(&gEnemyParty[gBattlePartyID[opponentBank]], MON_DATA_SPECIES);
+ sub_8032984(opponentBank, species);
+
+ if (IsDoubleBattle())
+ {
+ opponentBank = GetBankByPlayerAI(3);
+ species = GetMonData(&gEnemyParty[gBattlePartyID[opponentBank]], MON_DATA_SPECIES);
+ sub_8032984(opponentBank, species);
+ }
+ sub_802E3E4(gActionSelectionCursor[gBankInMenu], 0);
+ }
+ break;
+ default:
+ SetHBlankCallback(sub_800FCD4);
+ SetVBlankCallback(sub_800FCFC);
+ sub_807B06C();
+ BeginHardwarePaletteFade(0xFF, 0, 0x10, 0, 1);
+ gPaletteFade.bufferTransferDisabled = 0;
+ SetMainCallback2(sub_800F808);
+ break;
+ }
+ gReshowState++;
+}
+
+static void sub_807B06C(void)
+{
+ struct BGCntrlBitfield *regBgcnt1, *regBgcnt2;
+
+ sub_800D6D4();
+
+ regBgcnt1 = (void*)(&REG_BG1CNT);
+ regBgcnt1->charBaseBlock = 0;
+
+ regBgcnt2 = (void*)(&REG_BG2CNT);
+ regBgcnt2->charBaseBlock = 0;
+}
+
+static bool8 LoadAppropiateBankSprite(u8 bank)
+{
+ if (bank < gNoOfAllBanks)
+ {
+ if (GetBankSide(bank))
+ {
+ if (!ewram17800[bank].substituteSprite)
+ BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[bank]], bank);
+ else
+ BattleLoadSubstituteSprite(bank, 0);
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0)
+ LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, 0);
+ else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0)
+ LoadPlayerTrainerBankSprite(2, 0);
+ else if (!ewram17800[bank].substituteSprite)
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[bank]], bank);
+ else
+ BattleLoadSubstituteSprite(bank, 0);
+
+ gHelperState = 0;
+ }
+ return 1;
+}
+
+static void sub_807B184(u8 bank)
+{
+ if (bank < gNoOfAllBanks)
+ {
+ u8 posY;
+
+ if (ewram17800[bank].substituteSprite)
+ posY = sub_8077F7C(bank);
+ else
+ posY = sub_8077F68(bank);
+ if (GetBankSide(bank))
+ {
+ if (GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_HP) == 0)
+ return;
+ GetMonSpriteTemplate_803C56C(GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES), GetBankIdentity(bank));
+ gObjectBankIDs[bank] = CreateSprite(&gUnknown_02024E8C, sub_8077ABC(bank, 2), posY, sub_8079E90(bank));
+ gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank;
+ gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy;
+ gSprites[gObjectBankIDs[bank]].data0 = bank;
+ gSprites[gObjectBankIDs[bank]].data2 = GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
+ StartSpriteAnim(&gSprites[gObjectBankIDs[bank]], gBattleMonForms[bank]);
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0)
+ {
+ GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(0));
+ gObjectBankIDs[bank] = CreateSprite(&gUnknown_02024E8C, 0x50,
+ (8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80,
+ sub_8079E90(0));
+ gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank;
+ gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy;
+ gSprites[gObjectBankIDs[bank]].data0 = bank;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0)
+ {
+ GetMonSpriteTemplate_803C5A0(2, GetBankIdentity(0));
+ gObjectBankIDs[bank] = CreateSprite(&gUnknown_02024E8C, 0x50,
+ (8 - gTrainerBackPicCoords[2].coords) * 4 + 80,
+ sub_8079E90(0));
+ gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank;
+ gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy;
+ gSprites[gObjectBankIDs[bank]].data0 = bank;
+ }
+ else
+ {
+ if (GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_HP) == 0)
+ return;
+ GetMonSpriteTemplate_803C56C(GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES), GetBankIdentity(bank));
+ gObjectBankIDs[bank] = CreateSprite(&gUnknown_02024E8C, sub_8077ABC(bank, 2), posY, sub_8079E90(bank));
+ gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank;
+ gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy;
+ gSprites[gObjectBankIDs[bank]].data0 = bank;
+ gSprites[gObjectBankIDs[bank]].data2 = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
+ StartSpriteAnim(&gSprites[gObjectBankIDs[bank]], gBattleMonForms[bank]);
+ }
+ gSprites[gObjectBankIDs[bank]].invisible = ewram17800[bank].invisible;
+ }
+}
+
+static void sub_807B508(u8 bank)
+{
+ if (bank < gNoOfAllBanks)
+ {
+ u8 healthboxID;
+ if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0)
+ healthboxID = battle_make_oam_safari_battle();
+ else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0)
+ return;
+ else
+ healthboxID = battle_make_oam_normal_battle(bank);
+ gHealthboxIDs[bank] = healthboxID;
+ sub_8043F44(bank);
+ sub_8043DFC(healthboxID);
+ if (GetBankSide(bank))
+ sub_8045A5C(gHealthboxIDs[bank], &gEnemyParty[gBattlePartyID[bank]], 0);
+ else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
+ sub_8045A5C(gHealthboxIDs[bank], &gPlayerParty[gBattlePartyID[bank]], 10);
+ else
+ sub_8045A5C(gHealthboxIDs[bank], &gPlayerParty[gBattlePartyID[bank]], 0);
+ if (GetBankIdentity(bank) == 3 || GetBankIdentity(bank) == 2)
+ nullsub_11(gHealthboxIDs[bank], 1);
+ else
+ nullsub_11(gHealthboxIDs[bank], 0);
+ if (GetBankSide(bank))
+ {
+ if (GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_HP) == 0)
+ sub_8043DB0(healthboxID);
+ }
+ else if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI))
+ {
+ if (GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_HP) == 0)
+ sub_8043DB0(healthboxID);
+ }
+ }
+}
diff --git a/src/rom3.c b/src/rom3.c
index 803bbf943..3f4860ecc 100644
--- a/src/rom3.c
+++ b/src/rom3.c
@@ -14,6 +14,8 @@
#include "species.h"
#include "task.h"
#include "util.h"
+#include "battle_message.h"
+#include "data2.h"
extern u8 unk_2000000[];
@@ -343,30 +345,30 @@ void sub_800BD54(void)
}
}
-void dp01_prepare_buffer(u8 a, u8 *b, u16 c)
+void PrepareBufferDataTransfer(u8 a, u8 *data, u16 size)
{
int i;
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
- dp01_prepare_buffer_wireless_probably(a, c, b);
+ PrepareBufferDataTransferLink(a, size, data);
}
else
{
switch (a)
{
case 0:
- for (i = 0; i < c; i++)
+ for (i = 0; i < size; i++)
{
- gBattleBufferA[gActiveBank][i] = *b;
- b++;
+ gBattleBufferA[gActiveBank][i] = *data;
+ data++;
}
break;
case 1:
- for (i = 0; i < c; i++)
+ for (i = 0; i < size; i++)
{
- gBattleBufferB[gActiveBank][i] = *b;
- b++;
+ gBattleBufferB[gActiveBank][i] = *data;
+ data++;
}
break;
}
@@ -390,12 +392,12 @@ void sub_800BF28(void)
CpuFill16(0, EWRAM_14000, 0x2000);
}
-void dp01_prepare_buffer_wireless_probably(u8 a, u16 b, u8 *c)
+void PrepareBufferDataTransferLink(u8 a, u16 size, u8 *data)
{
s32 r9;
int i;
- r9 = b - b % 4 + 4;
+ r9 = size - size % 4 + 4;
if (gTasks[gUnknown_020238C4].data[14] + r9 + 9 > 0x1000)
{
gTasks[gUnknown_020238C4].data[12] = gTasks[gUnknown_020238C4].data[14];
@@ -409,8 +411,8 @@ void dp01_prepare_buffer_wireless_probably(u8 a, u16 b, u8 *c)
unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14005] = (r9 & 0x0000FF00) >> 8;
unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14006] = gAbsentBankFlags;
unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14007] = gEffectBank;
- for (i = 0; i < b; i++)
- unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14008 + i] = c[i];
+ for (i = 0; i < size; i++)
+ unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14008 + i] = data[i];
gTasks[gUnknown_020238C4].data[14] = gTasks[gUnknown_020238C4].data[14] + r9 + 8;
}
@@ -570,16 +572,16 @@ void EmitGetAttributes(u8 a, u8 b, u8 c)
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = c;
gBattleBuffersTransferData[3] = 0;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x01_a_b_0(u8 a, u8 b, u8 c)
+void Emitcmd1(u8 a, u8 b, u8 c)
{
gBattleBuffersTransferData[0] = 1;
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = c;
gBattleBuffersTransferData[3] = 0;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
void EmitSetAttributes(u8 a, u8 b, u8 c, u8 d, void *e)
@@ -591,10 +593,10 @@ void EmitSetAttributes(u8 a, u8 b, u8 c, u8 d, void *e)
gBattleBuffersTransferData[2] = c;
for (i = 0; i < d; i++)
gBattleBuffersTransferData[3 + i] = *(u8*)(e++);
- dp01_prepare_buffer(a, gBattleBuffersTransferData, d + 3);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, d + 3);
}
-void unref_sub_800C6A4(u8 a, u8 b, u8 c, u8 *d)
+void Emitcmd3(u8 a, u8 b, u8 c, u8 *d)
{
int i;
@@ -603,41 +605,41 @@ void unref_sub_800C6A4(u8 a, u8 b, u8 c, u8 *d)
gBattleBuffersTransferData[2] = c;
for (i = 0; i < c; i++)
gBattleBuffersTransferData[3 + i] = *(d++);
- dp01_prepare_buffer(a, gBattleBuffersTransferData, c + 3);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, c + 3);
}
-void dp01_build_cmdbuf_x04_4_4_4(u8 a)
+void EmitLoadPokeSprite(u8 a)
{
gBattleBuffersTransferData[0] = 4;
gBattleBuffersTransferData[1] = 4;
gBattleBuffersTransferData[2] = 4;
gBattleBuffersTransferData[3] = 4;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void EmitSwitchInAnim(u8 a, u8 b, u8 c)
+void EmitSendOutPoke(u8 a, u8 b, u8 c)
{
gBattleBuffersTransferData[0] = 5;
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = c;
gBattleBuffersTransferData[3] = 5;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
void EmitReturnPokeToBall(u8 a, u8 b)
{
gBattleBuffersTransferData[0] = 6;
gBattleBuffersTransferData[1] = b;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 2);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2);
}
-void dp01_build_cmdbuf_x07_7_7_7(u8 a)
+void EmitTrainerThrow(u8 a)
{
gBattleBuffersTransferData[0] = 7;
gBattleBuffersTransferData[1] = 7;
gBattleBuffersTransferData[2] = 7;
gBattleBuffersTransferData[3] = 7;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
void EmitTrainerSlide(u8 a)
@@ -646,53 +648,53 @@ void EmitTrainerSlide(u8 a)
gBattleBuffersTransferData[1] = 8;
gBattleBuffersTransferData[2] = 8;
gBattleBuffersTransferData[3] = 8;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x09_9_9_9(u8 a)
+void EmitTrainerSlideBack(u8 a)
{
gBattleBuffersTransferData[0] = 9;
gBattleBuffersTransferData[1] = 9;
gBattleBuffersTransferData[2] = 9;
gBattleBuffersTransferData[3] = 9;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void EmitFaintAnimation(u8 a)
+void Emitcmd10(u8 a)
{
gBattleBuffersTransferData[0] = 10;
gBattleBuffersTransferData[1] = 10;
gBattleBuffersTransferData[2] = 10;
gBattleBuffersTransferData[3] = 10;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x0B_B_B_B(u8 a)
+void Emitcmd11(u8 a)
{
gBattleBuffersTransferData[0] = 11;
gBattleBuffersTransferData[1] = 11;
gBattleBuffersTransferData[2] = 11;
gBattleBuffersTransferData[3] = 11;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x0C_C_C_C(u8 a)
+void Emitcmd12(u8 a)
{
gBattleBuffersTransferData[0] = 12;
gBattleBuffersTransferData[1] = 12;
gBattleBuffersTransferData[2] = 12;
gBattleBuffersTransferData[3] = 12;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void EmitBallThrowAnim(u8 a, u8 b)
+void EmitBallThrow(u8 a, u8 b)
{
gBattleBuffersTransferData[0] = 13;
gBattleBuffersTransferData[1] = b;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 2);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2);
}
-void unref_sub_800C828(u8 a, u8 b, u8 *c)
+void EmitPuase(u8 a, u8 b, u8 *c)
{
int i;
@@ -700,7 +702,7 @@ void unref_sub_800C828(u8 a, u8 b, u8 *c)
gBattleBuffersTransferData[1] = b;
for (i = 0; i < b * 3; i++)
gBattleBuffersTransferData[2 + i] = *(c++);
- dp01_prepare_buffer(a, gBattleBuffersTransferData, b * 3 + 2);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, b * 3 + 2);
}
void EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, struct DisableStruct *g)
@@ -730,314 +732,87 @@ void EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, struct DisableStru
gBattleBuffersTransferData[14] = 0;
gBattleBuffersTransferData[15] = 0;
memcpy(&gBattleBuffersTransferData[16], g, sizeof(*g));
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 0x2C);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 0x2C);
}
-#ifdef NONMATCHING
-void EmitPrintString(u8 a, u16 b)
+void EmitPrintString(u8 a, u16 stringID)
{
- int i;
- //u16 *r12;
+ s32 i;
+ struct StringInfoBattle* stringInfo;
gBattleBuffersTransferData[0] = 16;
gBattleBuffersTransferData[1] = gBattleOutcome;
- gBattleBuffersTransferData[2] = b;
- gBattleBuffersTransferData[3] = (b & 0xFF00) >> 8;
+ gBattleBuffersTransferData[2] = stringID;
+ gBattleBuffersTransferData[3] = (stringID & 0xFF00) >> 8;
+
+ stringInfo = (struct StringInfoBattle*)(&gBattleBuffersTransferData[4]);
+ stringInfo->currentMove = gCurrentMove;
+ stringInfo->lastMove = gUnknown_02024BE8;
+ stringInfo->lastItem = gLastUsedItem;
+ stringInfo->lastAbility = gLastUsedAbility;
+ stringInfo->scrActive = BATTLE_STRUCT->scriptingActive;
+ stringInfo->unk1605E = BATTLE_STRUCT->unk1605E;
+ stringInfo->hpScale = BATTLE_STRUCT->hpScale;
+ stringInfo->StringBank = gStringBank;
+ stringInfo->moveType = gBattleMoves[gCurrentMove].type;
- *((u16 *)&gBattleBuffersTransferData[4]) = gCurrentMove;
- *((u16 *)&gBattleBuffersTransferData[6]) = gUnknown_02024BE8;
- *((u16 *)&gBattleBuffersTransferData[8]) = gLastUsedItem;
-
- gBattleBuffersTransferData[10] = gLastUsedAbility;
- gBattleBuffersTransferData[11] = unk_2000000[0x16000 + 3];
- gBattleBuffersTransferData[12] = unk_2000000[0x16000 + 0x5E];
- gBattleBuffersTransferData[13] = unk_2000000[0x16000 + 0xC1];
- gBattleBuffersTransferData[14] = gStringBank;
- gBattleBuffersTransferData[15] = gBattleMoves[gCurrentMove].type;
for (i = 0; i < 4; i++)
+ stringInfo->abilities[i] = gBattleMons[i].ability;
+ for (i = 0; i < 0x10; i++)
{
- gBattleBuffersTransferData[16 + i] = gBattleMons[i].ability;
- }
- for (i = 0; i < 16; i++)
- {
- gBattleBuffersTransferData[20 + i] = gBattleTextBuff1[i];
- gBattleBuffersTransferData[36 + i] = gBattleTextBuff2[i];
- gBattleBuffersTransferData[52 + i] = gBattleTextBuff3[i];
+ stringInfo->textBuffs[0][i] = gBattleTextBuff1[i];
+ stringInfo->textBuffs[1][i] = gBattleTextBuff2[i];
+ stringInfo->textBuffs[2][i] = gBattleTextBuff3[i];
}
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 0x44);
-}
-#else
-__attribute__((naked))
-void EmitPrintString(u8 a, u16 b)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r10, r0\n\
- lsls r1, 16\n\
- lsrs r1, 16\n\
- ldr r2, _0800CA2C @ =gBattleBuffersTransferData\n\
- movs r0, 0x10\n\
- strb r0, [r2]\n\
- ldr r0, _0800CA30 @ =gBattleOutcome\n\
- ldrb r0, [r0]\n\
- strb r0, [r2, 0x1]\n\
- strb r1, [r2, 0x2]\n\
- lsrs r1, 8\n\
- strb r1, [r2, 0x3]\n\
- adds r0, r2, 0x4\n\
- mov r12, r0\n\
- ldr r4, _0800CA34 @ =gCurrentMove\n\
- ldrh r0, [r4]\n\
- strh r0, [r2, 0x4]\n\
- ldr r0, _0800CA38 @ =gUnknown_02024BE8\n\
- ldrh r0, [r0]\n\
- mov r1, r12\n\
- strh r0, [r1, 0x2]\n\
- ldr r0, _0800CA3C @ =gLastUsedItem\n\
- ldrh r0, [r0]\n\
- strh r0, [r1, 0x4]\n\
- ldr r0, _0800CA40 @ =gLastUsedAbility\n\
- ldrb r0, [r0]\n\
- strb r0, [r1, 0x6]\n\
- ldr r1, _0800CA44 @ =0x02000000\n\
- ldr r3, _0800CA48 @ =0x00016003\n\
- adds r0, r1, r3\n\
- ldrb r0, [r0]\n\
- mov r7, r12\n\
- strb r0, [r7, 0x7]\n\
- adds r3, 0x5B\n\
- adds r0, r1, r3\n\
- ldrb r0, [r0]\n\
- strb r0, [r7, 0x8]\n\
- ldr r7, _0800CA4C @ =0x000160c1\n\
- adds r1, r7\n\
- ldrb r0, [r1]\n\
- mov r1, r12\n\
- strb r0, [r1, 0x9]\n\
- ldr r0, _0800CA50 @ =gStringBank\n\
- ldrb r0, [r0]\n\
- strb r0, [r1, 0xA]\n\
- ldr r3, _0800CA54 @ =gBattleMoves\n\
- ldrh r1, [r4]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r3\n\
- ldrb r0, [r0, 0x2]\n\
- mov r3, r12\n\
- strb r0, [r3, 0xB]\n\
- movs r3, 0\n\
- mov r9, r2\n\
- ldr r7, _0800CA58 @ =gBattleTextBuff3\n\
- mov r8, r7\n\
- adds r2, 0x10\n\
- ldr r0, _0800CA5C @ =gBattleMons\n\
- adds r4, r0, 0\n\
- adds r4, 0x20\n\
-_0800C9D2:\n\
- adds r1, r2, r3\n\
- ldrb r0, [r4]\n\
- strb r0, [r1]\n\
- adds r4, 0x58\n\
- adds r3, 0x1\n\
- cmp r3, 0x3\n\
- ble _0800C9D2\n\
- movs r3, 0\n\
- mov r5, r12\n\
- adds r5, 0x10\n\
- mov r4, r12\n\
- adds r4, 0x20\n\
- ldr r6, _0800CA60 @ =gBattleTextBuff2\n\
- mov r2, r12\n\
- adds r2, 0x30\n\
-_0800C9F0:\n\
- adds r1, r5, r3\n\
- ldr r7, _0800CA64 @ =gBattleTextBuff1\n\
- adds r0, r3, r7\n\
- ldrb r0, [r0]\n\
- strb r0, [r1]\n\
- adds r1, r4, r3\n\
- adds r0, r3, r6\n\
- ldrb r0, [r0]\n\
- strb r0, [r1]\n\
- adds r1, r2, r3\n\
- mov r7, r8\n\
- adds r0, r3, r7\n\
- ldrb r0, [r0]\n\
- strb r0, [r1]\n\
- adds r3, 0x1\n\
- cmp r3, 0xF\n\
- ble _0800C9F0\n\
- mov r0, r10\n\
- mov r1, r9\n\
- movs r2, 0x44\n\
- bl dp01_prepare_buffer\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\
-_0800CA2C: .4byte gBattleBuffersTransferData\n\
-_0800CA30: .4byte gBattleOutcome\n\
-_0800CA34: .4byte gCurrentMove\n\
-_0800CA38: .4byte gUnknown_02024BE8\n\
-_0800CA3C: .4byte gLastUsedItem\n\
-_0800CA40: .4byte gLastUsedAbility\n\
-_0800CA44: .4byte 0x02000000\n\
-_0800CA48: .4byte 0x00016003\n\
-_0800CA4C: .4byte 0x000160c1\n\
-_0800CA50: .4byte gStringBank\n\
-_0800CA54: .4byte gBattleMoves\n\
-_0800CA58: .4byte gBattleTextBuff3\n\
-_0800CA5C: .4byte gBattleMons\n\
-_0800CA60: .4byte gBattleTextBuff2\n\
-_0800CA64: .4byte gBattleTextBuff1\n\
- .syntax divided\n");
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, sizeof(struct StringInfoBattle) + 4);
}
-#endif
-__attribute__((naked))
void EmitPrintStringPlayerOnly(u8 a, u16 stringID)
{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r10, r0\n\
- lsls r1, 16\n\
- lsrs r1, 16\n\
- ldr r2, _0800CB28 @ =gBattleBuffersTransferData\n\
- movs r0, 0x11\n\
- strb r0, [r2]\n\
- strb r0, [r2, 0x1]\n\
- strb r1, [r2, 0x2]\n\
- lsrs r1, 8\n\
- strb r1, [r2, 0x3]\n\
- adds r0, r2, 0x4\n\
- mov r12, r0\n\
- ldr r0, _0800CB2C @ =gCurrentMove\n\
- ldrh r0, [r0]\n\
- strh r0, [r2, 0x4]\n\
- ldr r0, _0800CB30 @ =gUnknown_02024BE8\n\
- ldrh r0, [r0]\n\
- mov r1, r12\n\
- strh r0, [r1, 0x2]\n\
- ldr r0, _0800CB34 @ =gLastUsedItem\n\
- ldrh r0, [r0]\n\
- strh r0, [r1, 0x4]\n\
- ldr r0, _0800CB38 @ =gLastUsedAbility\n\
- ldrb r0, [r0]\n\
- strb r0, [r1, 0x6]\n\
- ldr r0, _0800CB3C @ =0x02000000\n\
- ldr r3, _0800CB40 @ =0x00016003\n\
- adds r1, r0, r3\n\
- ldrb r1, [r1]\n\
- mov r7, r12\n\
- strb r1, [r7, 0x7]\n\
- ldr r1, _0800CB44 @ =0x0001605e\n\
- adds r0, r1\n\
- ldrb r0, [r0]\n\
- strb r0, [r7, 0x8]\n\
- movs r3, 0\n\
- mov r9, r2\n\
- ldr r7, _0800CB48 @ =gBattleTextBuff3\n\
- mov r8, r7\n\
- mov r4, r9\n\
- adds r4, 0x10\n\
- ldr r0, _0800CB4C @ =gBattleMons\n\
- adds r2, r0, 0\n\
- adds r2, 0x20\n\
-_0800CACE:\n\
- adds r1, r4, r3\n\
- ldrb r0, [r2]\n\
- strb r0, [r1]\n\
- adds r2, 0x58\n\
- adds r3, 0x1\n\
- cmp r3, 0x3\n\
- ble _0800CACE\n\
- movs r3, 0\n\
- mov r5, r12\n\
- adds r5, 0x10\n\
- mov r4, r12\n\
- adds r4, 0x20\n\
- ldr r6, _0800CB50 @ =gBattleTextBuff2\n\
- mov r2, r12\n\
- adds r2, 0x30\n\
-_0800CAEC:\n\
- adds r1, r5, r3\n\
- ldr r7, _0800CB54 @ =gBattleTextBuff1\n\
- adds r0, r3, r7\n\
- ldrb r0, [r0]\n\
- strb r0, [r1]\n\
- adds r1, r4, r3\n\
- adds r0, r3, r6\n\
- ldrb r0, [r0]\n\
- strb r0, [r1]\n\
- adds r1, r2, r3\n\
- mov r7, r8\n\
- adds r0, r3, r7\n\
- ldrb r0, [r0]\n\
- strb r0, [r1]\n\
- adds r3, 0x1\n\
- cmp r3, 0xF\n\
- ble _0800CAEC\n\
- mov r0, r10\n\
- mov r1, r9\n\
- movs r2, 0x44\n\
- bl dp01_prepare_buffer\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\
-_0800CB28: .4byte gBattleBuffersTransferData\n\
-_0800CB2C: .4byte gCurrentMove\n\
-_0800CB30: .4byte gUnknown_02024BE8\n\
-_0800CB34: .4byte gLastUsedItem\n\
-_0800CB38: .4byte gLastUsedAbility\n\
-_0800CB3C: .4byte 0x02000000\n\
-_0800CB40: .4byte 0x00016003\n\
-_0800CB44: .4byte 0x0001605e\n\
-_0800CB48: .4byte gBattleTextBuff3\n\
-_0800CB4C: .4byte gBattleMons\n\
-_0800CB50: .4byte gBattleTextBuff2\n\
-_0800CB54: .4byte gBattleTextBuff1\n\
- .syntax divided\n");
-}
-
-void dp01_build_cmdbuf_x12_a_bb(u8 a, u8 b, u16 c)
+ s32 i;
+ struct StringInfoBattle* stringInfo;
+
+ gBattleBuffersTransferData[0] = 17;
+ gBattleBuffersTransferData[1] = 17;
+ gBattleBuffersTransferData[2] = stringID;
+ gBattleBuffersTransferData[3] = (stringID & 0xFF00) >> 8;
+
+ stringInfo = (struct StringInfoBattle*)(&gBattleBuffersTransferData[4]);
+ stringInfo->currentMove = gCurrentMove;
+ stringInfo->lastMove = gUnknown_02024BE8;
+ stringInfo->lastItem = gLastUsedItem;
+ stringInfo->lastAbility = gLastUsedAbility;
+ stringInfo->scrActive = BATTLE_STRUCT->scriptingActive;
+ stringInfo->unk1605E = BATTLE_STRUCT->unk1605E;
+
+ for (i = 0; i < 4; i++)
+ stringInfo->abilities[i] = gBattleMons[i].ability;
+ for (i = 0; i < 0x10; i++)
+ {
+ stringInfo->textBuffs[0][i] = gBattleTextBuff1[i];
+ stringInfo->textBuffs[1][i] = gBattleTextBuff2[i];
+ stringInfo->textBuffs[2][i] = gBattleTextBuff3[i];
+ }
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, sizeof(struct StringInfoBattle) + 4);
+}
+
+void Emitcmd18(u8 a, u8 b, u16 c)
{
gBattleBuffersTransferData[0] = 18;
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = c;
gBattleBuffersTransferData[3] = (c & 0xFF00) >> 8;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void unref_sub_800CB84(u8 a, u8 b)
+void Emitcmd19(u8 a, u8 b)
{
gBattleBuffersTransferData[0] = 19;
gBattleBuffersTransferData[1] = b;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 2);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2);
}
-void sub_800CBA4(u8 a, u8 b, u8 c, u8 *d)
+void Emitcmd20(u8 a, u8 b, u8 c, u8 *d)
{
u32 i;
@@ -1047,17 +822,17 @@ void sub_800CBA4(u8 a, u8 b, u8 c, u8 *d)
gBattleBuffersTransferData[3] = 0;
for (i = 0; i < 20; i++)
gBattleBuffersTransferData[4 + i] = d[i];
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 24);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 24);
}
-void sub_800CBE0(u8 a, u8 *b)
+void EmitOpenBag(u8 a, u8 *b)
{
int i;
gBattleBuffersTransferData[0] = 21;
for (i = 0; i < 3; i++)
gBattleBuffersTransferData[1 + i] = b[i];
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
void EmitChoosePokemon(u8 a, u8 b, u8 c, u8 d, u8 *e)
@@ -1070,16 +845,16 @@ void EmitChoosePokemon(u8 a, u8 b, u8 c, u8 d, u8 *e)
gBattleBuffersTransferData[3] = d;
for (i = 0; i < 3; i++)
gBattleBuffersTransferData[4 + i] = e[i];
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 8); //but only 7 bytes were written
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 8); //but only 7 bytes were written
}
-void dp01_build_cmdbuf_x17_17_17_17(u8 a)
+void Emitcmd23(u8 a)
{
gBattleBuffersTransferData[0] = 23;
gBattleBuffersTransferData[1] = 23;
gBattleBuffersTransferData[2] = 23;
gBattleBuffersTransferData[3] = 23;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
// FIXME: I think this function is supposed to take s16 as its second argument,
@@ -1090,7 +865,7 @@ void EmitHealthBarUpdate(u8 a, u16 b)
gBattleBuffersTransferData[1] = 0;
gBattleBuffersTransferData[2] = (s16)b;
gBattleBuffersTransferData[3] = ((s16)b & 0xFF00) >> 8;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
// FIXME: I think this function is supposed to take s16 as its third argument,
@@ -1101,7 +876,7 @@ void EmitExpBarUpdate(u8 a, u8 b, u16 c)
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = (s16)c;
gBattleBuffersTransferData[3] = ((s16)c & 0xFF00) >> 8;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
void EmitStatusIconUpdate(u8 a, u32 b, u32 c)
@@ -1115,7 +890,7 @@ void EmitStatusIconUpdate(u8 a, u32 b, u32 c)
gBattleBuffersTransferData[6] = (c & 0x0000FF00) >> 8;
gBattleBuffersTransferData[7] = (c & 0x00FF0000) >> 16;
gBattleBuffersTransferData[8] = (c & 0xFF000000) >> 24;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 9);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 9);
}
void EmitStatusAnimation(u8 a, u8 b, u32 c)
@@ -1126,17 +901,17 @@ void EmitStatusAnimation(u8 a, u8 b, u32 c)
gBattleBuffersTransferData[3] = (c & 0x0000FF00) >> 8;
gBattleBuffersTransferData[4] = (c & 0x00FF0000) >> 16;
gBattleBuffersTransferData[5] = (c & 0xFF000000) >> 24;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 6);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 6);
}
void EmitStatusXor(u8 a, u8 b)
{
gBattleBuffersTransferData[0] = 28;
gBattleBuffersTransferData[1] = b;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 2);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2);
}
-void dp01_build_cmdbuf_x1D_1D_numargs_varargs(u8 a, u16 b, u8 *c)
+void Emitcmd29(u8 a, u16 b, u8 *c)
{
int i;
@@ -1146,10 +921,10 @@ void dp01_build_cmdbuf_x1D_1D_numargs_varargs(u8 a, u16 b, u8 *c)
gBattleBuffersTransferData[3] = (b & 0xFF00) >> 8;
for (i = 0; i < b; i++)
gBattleBuffersTransferData[4 + i] = *(c++);
- dp01_prepare_buffer(a, gBattleBuffersTransferData, b + 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, b + 4);
}
-void unref_sub_800CDD4(u8 a, u32 b, u16 c, u8 *d)
+void EmitDMATransfer(u8 a, u32 b, u16 c, u8 *d)
{
int i;
@@ -1162,10 +937,10 @@ void unref_sub_800CDD4(u8 a, u32 b, u16 c, u8 *d)
gBattleBuffersTransferData[6] = (c & 0xFF00) >> 8;
for (i = 0; i < c; i++)
gBattleBuffersTransferData[7 + i] = *(d++);
- dp01_prepare_buffer(a, gBattleBuffersTransferData, c + 7);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, c + 7);
}
-void unref_sub_800CE3C(u8 a, u16 b, u8 *c)
+void Emitcmd31(u8 a, u16 b, u8 *c)
{
int i;
@@ -1174,10 +949,10 @@ void unref_sub_800CE3C(u8 a, u16 b, u8 *c)
gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8;
for (i = 0; i < b; i++)
gBattleBuffersTransferData[3 + i] = *(c++);
- dp01_prepare_buffer(a, gBattleBuffersTransferData, b + 3);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, b + 3);
}
-void unref_sub_800CE84(u8 a, u16 b, u8 *c)
+void Emitcmd32(u8 a, u16 b, u8 *c)
{
int i;
@@ -1186,19 +961,19 @@ void unref_sub_800CE84(u8 a, u16 b, u8 *c)
gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8;
for (i = 0; i < b; i++)
gBattleBuffersTransferData[3 + i] = *(c++);
- dp01_prepare_buffer(a, gBattleBuffersTransferData, b + 3);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, b + 3);
}
-void dp01_build_cmdbuf_x21_a_bb(u8 a, u8 b, u16 c)
+void Emitcmd33(u8 a, u8 b, u16 c)
{
gBattleBuffersTransferData[0] = 33;
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = c;
gBattleBuffersTransferData[3] = (c & 0xFF00) >> 8;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x22_a_three_bytes(u8 a, u8 b, u8 *c)
+void Emitcmd34(u8 a, u8 b, u8 *c)
{
int i;
@@ -1206,59 +981,59 @@ void dp01_build_cmdbuf_x22_a_three_bytes(u8 a, u8 b, u8 *c)
gBattleBuffersTransferData[1] = b;
for (i = 0; i < 3; i++)
gBattleBuffersTransferData[2 + i] = c[i];
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 5);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 5);
}
-void dp01_build_cmdbuf_x23_aa_0(u8 a, u16 b)
+void Emitcmd35(u8 a, u16 b)
{
gBattleBuffersTransferData[0] = 35;
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8;
gBattleBuffersTransferData[3] = 0;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x24_aa_0(u8 a, u16 b)
+void Emitcmd36(u8 a, u16 b)
{
gBattleBuffersTransferData[0] = 36;
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8;
gBattleBuffersTransferData[3] = 0;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x25_25_25_25(u8 a)
+void Emitcmd37(u8 a)
{
gBattleBuffersTransferData[0] = 37;
gBattleBuffersTransferData[1] = 37;
gBattleBuffersTransferData[2] = 37;
gBattleBuffersTransferData[3] = 37;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x26_a(u8 a, u8 b)
+void Emitcmd38(u8 a, u8 b)
{
gBattleBuffersTransferData[0] = 38;
gBattleBuffersTransferData[1] = b;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 2);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2);
}
-void dp01_build_cmdbuf_x27_27_27_27(u8 a)
+void Emitcmd39(u8 a)
{
gBattleBuffersTransferData[0] = 39;
gBattleBuffersTransferData[1] = 39;
gBattleBuffersTransferData[2] = 39;
gBattleBuffersTransferData[3] = 39;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x28_28_28_28(u8 a)
+void Emitcmd40(u8 a)
{
gBattleBuffersTransferData[0] = 40;
gBattleBuffersTransferData[1] = 40;
gBattleBuffersTransferData[2] = 40;
gBattleBuffersTransferData[3] = 40;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
void EmitHitAnimation(u8 a)
@@ -1267,16 +1042,16 @@ void EmitHitAnimation(u8 a)
gBattleBuffersTransferData[1] = 41;
gBattleBuffersTransferData[2] = 41;
gBattleBuffersTransferData[3] = 41;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x2A_2A_2A_2A(u8 a)
+void Emitcmd42(u8 a)
{
gBattleBuffersTransferData[0] = 42;
gBattleBuffersTransferData[1] = 42;
gBattleBuffersTransferData[2] = 42;
gBattleBuffersTransferData[3] = 42;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
void EmitEffectivenessSound(u8 a, u16 b)
@@ -1285,16 +1060,16 @@ void EmitEffectivenessSound(u8 a, u16 b)
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8;
gBattleBuffersTransferData[3] = 0;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void EmitPlaySound(u8 a, u16 b)
+void Emitcmd44(u8 a, u16 b)
{
gBattleBuffersTransferData[0] = 44;
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8;
gBattleBuffersTransferData[3] = 0;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
void EmitFaintingCry(u8 a)
@@ -1303,26 +1078,26 @@ void EmitFaintingCry(u8 a)
gBattleBuffersTransferData[1] = 45;
gBattleBuffersTransferData[2] = 45;
gBattleBuffersTransferData[3] = 45;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void EmitBattleIntroSlide(u8 a, u8 b)
+void EmitIntroSlide(u8 a, u8 battleTerrain)
{
gBattleBuffersTransferData[0] = 46;
- gBattleBuffersTransferData[1] = b;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 2);
+ gBattleBuffersTransferData[1] = battleTerrain;
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2);
}
-void dp01_build_cmdbuf_x2F_2F_2F_2F(u8 a)
+void EmitTrainerBallThrow(u8 a)
{
gBattleBuffersTransferData[0] = 47;
gBattleBuffersTransferData[1] = 47;
gBattleBuffersTransferData[2] = 47;
gBattleBuffersTransferData[3] = 47;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x30_TODO(u8 a, u8 *b, u8 c)
+void Emitcmd48(u8 a, u8 *b, u8 c)
{
int i;
@@ -1332,25 +1107,25 @@ void dp01_build_cmdbuf_x30_TODO(u8 a, u8 *b, u8 c)
gBattleBuffersTransferData[3] = 48;
for (i = 0; i < 48; i++)
gBattleBuffersTransferData[4 + i] = b[i];
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 52);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 52);
}
-void dp01_build_cmdbuf_x31_31_31_31(u8 a)
+void Emitcmd49(u8 a)
{
gBattleBuffersTransferData[0] = 49;
gBattleBuffersTransferData[1] = 49;
gBattleBuffersTransferData[2] = 49;
gBattleBuffersTransferData[3] = 49;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x32_32_32_32(u8 a)
+void Emitcmd50(u8 a)
{
gBattleBuffersTransferData[0] = 50;
gBattleBuffersTransferData[1] = 50;
gBattleBuffersTransferData[2] = 50;
gBattleBuffersTransferData[3] = 50;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
void EmitSpriteInvisibility(u8 a, u8 b)
@@ -1359,7 +1134,7 @@ void EmitSpriteInvisibility(u8 a, u8 b)
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = 51;
gBattleBuffersTransferData[3] = 51;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
void EmitBattleAnimation(u8 a, u8 b, u16 c)
@@ -1368,26 +1143,26 @@ void EmitBattleAnimation(u8 a, u8 b, u16 c)
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = c;
gBattleBuffersTransferData[3] = (c & 0xFF00) >> 8;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
void EmitLinkStandbyMsg(u8 a, u8 b)
{
gBattleBuffersTransferData[0] = 53;
gBattleBuffersTransferData[1] = b;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 2);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2);
}
void EmitResetActionMoveSelection(u8 a, u8 b)
{
gBattleBuffersTransferData[0] = 54;
gBattleBuffersTransferData[1] = b;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 2);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2);
}
-void dp01_build_cmdbuf_x37_a(u8 a, u8 b)
+void Emitcmd55(u8 a, u8 b)
{
gBattleBuffersTransferData[0] = 55;
gBattleBuffersTransferData[1] = b;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 2);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2);
}
diff --git a/src/rom6.c b/src/rom6.c
index ff032b6c2..3a5071034 100644
--- a/src/rom6.c
+++ b/src/rom6.c
@@ -6,7 +6,7 @@
#include "field_player_avatar.h"
#include "item_use.h"
#include "pokemon_menu.h"
-#include "rom4.h"
+#include "overworld.h"
#include "script.h"
#include "songs.h"
#include "sound.h"
@@ -17,7 +17,7 @@ extern u16 gScriptLastTalked;
extern void (*gFieldCallback)(void);
extern u8 gLastFieldPokeMenuOpened;
extern void (*gUnknown_03005CE4)(void);
-extern u8 UseRockSmashScript[];
+extern u8 S_UseRockSmash[];
EWRAM_DATA struct MapPosition gUnknown_0203923C = {0};
@@ -64,9 +64,9 @@ static void task08_080C9820(u8 taskId)
if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(&gMapObjects[mapObjId])
|| FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[mapObjId]))
{
- if (gMapHeader.mapType == 5)
+ if (gMapHeader.mapType == MAP_TYPE_UNDERWATER)
{
- FieldEffectStart(0x3B);
+ FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
gTasks[taskId].func = sub_810B428;
}
else
@@ -82,7 +82,7 @@ static void sub_810B3DC(u8 taskId)
{
if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[gPlayerAvatar.mapObjectId]) == TRUE)
{
- FieldEffectStart(0x3B);
+ FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
gTasks[taskId].func = sub_810B428;
}
}
@@ -91,17 +91,17 @@ static void sub_810B428(u8 taskId)
{
if (!FieldEffectActiveListContains(6))
{
- gUnknown_0202FF84[1] = player_get_direction_lower_nybble();
- if (gUnknown_0202FF84[1] == 1)
- gUnknown_0202FF84[2] = 0;
- if (gUnknown_0202FF84[1] == 2)
- gUnknown_0202FF84[2] = 1;
- if (gUnknown_0202FF84[1] == 3)
- gUnknown_0202FF84[2] = 2;
- if (gUnknown_0202FF84[1] == 4)
- gUnknown_0202FF84[2] = 3;
+ gFieldEffectArguments[1] = player_get_direction_lower_nybble();
+ 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;
sub_805B980(&gMapObjects[gPlayerAvatar.mapObjectId], GetPlayerAvatarGraphicsIdByCurrentState());
- StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], gUnknown_0202FF84[2]);
+ StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], gFieldEffectArguments[2]);
FieldEffectActiveListRemove(6);
gTasks[taskId].func = sub_810B4CC;
}
@@ -120,7 +120,7 @@ bool8 SetUpFieldMove_RockSmash(void)
{
if (npc_before_player_of_type(0x56) == TRUE)
{
- gFieldCallback = sub_808AB90;
+ gFieldCallback = FieldCallback_Teleport;
gUnknown_03005CE4 = sub_810B53C;
return TRUE;
}
@@ -132,8 +132,8 @@ bool8 SetUpFieldMove_RockSmash(void)
static void sub_810B53C(void)
{
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
- ScriptContext1_SetupScript(UseRockSmashScript);
+ gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
+ ScriptContext1_SetupScript(S_UseRockSmash);
}
int FldEff_RockSmash(void)
@@ -149,15 +149,15 @@ int FldEff_RockSmash(void)
static void sub_810B58C(void)
{
PlaySE(SE_W088);
- FieldEffectActiveListRemove(0x25);
+ FieldEffectActiveListRemove(FLDEFF_USE_ROCK_SMASH);
EnableBothScriptContexts();
}
int SetUpFieldMove_Dig(void)
{
- if (sub_80CA1C8() == TRUE)
+ if (CanUseEscapeRopeOnCurrMap() == TRUE)
{
- gFieldCallback = sub_808AB90;
+ gFieldCallback = FieldCallback_Teleport;
gUnknown_03005CE4 = sub_810B5D8;
return TRUE;
}
@@ -170,8 +170,8 @@ int SetUpFieldMove_Dig(void)
static void sub_810B5D8(void)
{
sub_8053014();
- FieldEffectStart(0x26);
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
+ FieldEffectStart(FLDEFF_USE_DIG);
+ gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
}
int FldEff_UseDig(void)
@@ -189,7 +189,7 @@ static void sub_810B634(void)
{
u8 taskId;
- FieldEffectActiveListRemove(0x26);
+ FieldEffectActiveListRemove(FLDEFF_USE_DIG);
if (ShouldDoBrailleDigEffect())
{
DoBrailleDigEffect();
diff --git a/src/rotating_gate.c b/src/rotating_gate.c
index bb3c31dfc..e8ab7e1bf 100644
--- a/src/rotating_gate.c
+++ b/src/rotating_gate.c
@@ -12,11 +12,11 @@
#define ROTATING_GATE_PUZZLE_MAX 14
#define GATE_ARM_MAX_LENGTH 2
-#define GATE_ROTATION(rotationDirection, arm, longArm) \
+#define GATE_ROT(rotationDirection, arm, longArm) \
((rotationDirection & 15) << 4) | ((arm & 7) << 1) | (longArm & 1)
-#define GATE_ROTATION_CLOCKWISE(arm, longArm) GATE_ROTATION(ROTATE_CLOCKWISE, arm, longArm)
-#define GATE_ROTATION_ANTICLOCKWISE(arm, longArm) GATE_ROTATION(ROTATE_ANTICLOCKWISE, arm, longArm)
-#define GATE_ROTATION_NONE 255
+#define GATE_ROT_CW(arm, longArm) GATE_ROT(ROTATE_CLOCKWISE, arm, longArm)
+#define GATE_ROT_ACW(arm, longArm) GATE_ROT(ROTATE_ANTICLOCKWISE, arm, longArm)
+#define GATE_ROT_NONE 255
static void SpriteCallback_RotatingGate(struct Sprite *sprite);
static u8 RotatingGate_CreateGate(u8 gateId, s16 deltaX, s16 deltaY);
@@ -181,7 +181,8 @@ enum
struct RotatingGatePuzzle
{
- struct Coords16 pos;
+ s16 x;
+ s16 y;
u8 shape;
u8 orientation;
};
@@ -193,32 +194,34 @@ struct Coords8
};
// Fortree
-static const struct RotatingGatePuzzle sRotatingGate_FortreePuzzleConfig[] = {
- { { 12, 5 }, GATE_SHAPE_L4, GATE_ORIENTATION_0 },
- { { 14, 7 }, GATE_SHAPE_L4, GATE_ORIENTATION_270 },
- { { 16, 4 }, GATE_SHAPE_T2, GATE_ORIENTATION_90 },
- { { 15, 14 }, GATE_SHAPE_L2, GATE_ORIENTATION_0 },
- { { 18, 13 }, GATE_SHAPE_T1, GATE_ORIENTATION_180 },
- { { 8, 20 }, GATE_SHAPE_T1, GATE_ORIENTATION_180 },
- { { 16, 20 }, GATE_SHAPE_T4, GATE_ORIENTATION_90 },
+static const struct RotatingGatePuzzle sRotatingGate_FortreePuzzleConfig[] =
+{
+ {12, 5, GATE_SHAPE_L4, GATE_ORIENTATION_0},
+ {14, 7, GATE_SHAPE_L4, GATE_ORIENTATION_270},
+ {16, 4, GATE_SHAPE_T2, GATE_ORIENTATION_90},
+ {15, 14, GATE_SHAPE_L2, GATE_ORIENTATION_0},
+ {18, 13, GATE_SHAPE_T1, GATE_ORIENTATION_180},
+ { 8, 20, GATE_SHAPE_T1, GATE_ORIENTATION_180},
+ {16, 20, GATE_SHAPE_T4, GATE_ORIENTATION_90},
};
// Trickhouse
-static const struct RotatingGatePuzzle sRotatingGate_TrickHousePuzzleConfig[] = {
- { { 13, 3 }, GATE_SHAPE_T1, GATE_ORIENTATION_270 },
- { { 12, 6 }, GATE_SHAPE_T1, GATE_ORIENTATION_180 },
- { { 3, 6 }, GATE_SHAPE_T1, GATE_ORIENTATION_180 },
- { { 3, 9 }, GATE_SHAPE_T2, GATE_ORIENTATION_270 },
- { { 8, 8 }, GATE_SHAPE_L1, GATE_ORIENTATION_90 },
- { { 2, 12 }, GATE_SHAPE_T3, GATE_ORIENTATION_180 },
- { { 9, 13 }, GATE_SHAPE_L2, GATE_ORIENTATION_0 },
- { { 3, 14 }, GATE_SHAPE_L3, GATE_ORIENTATION_90 },
- { { 9, 15 }, GATE_SHAPE_L4, GATE_ORIENTATION_180 },
- { { 3, 18 }, GATE_SHAPE_T2, GATE_ORIENTATION_180 },
- { { 2, 19 }, GATE_SHAPE_T1, GATE_ORIENTATION_0 },
- { { 5, 21 }, GATE_SHAPE_L1, GATE_ORIENTATION_0 },
- { { 9, 19 }, GATE_SHAPE_L4, GATE_ORIENTATION_270 },
- { { 12, 20 }, GATE_SHAPE_T1, GATE_ORIENTATION_90 },
+static const struct RotatingGatePuzzle sRotatingGate_TrickHousePuzzleConfig[] =
+{
+ {13, 3, GATE_SHAPE_T1, GATE_ORIENTATION_270},
+ {12, 6, GATE_SHAPE_T1, GATE_ORIENTATION_180},
+ { 3, 6, GATE_SHAPE_T1, GATE_ORIENTATION_180},
+ { 3, 9, GATE_SHAPE_T2, GATE_ORIENTATION_270},
+ { 8, 8, GATE_SHAPE_L1, GATE_ORIENTATION_90},
+ { 2, 12, GATE_SHAPE_T3, GATE_ORIENTATION_180},
+ { 9, 13, GATE_SHAPE_L2, GATE_ORIENTATION_0},
+ { 3, 14, GATE_SHAPE_L3, GATE_ORIENTATION_90},
+ { 9, 15, GATE_SHAPE_L4, GATE_ORIENTATION_180},
+ { 3, 18, GATE_SHAPE_T2, GATE_ORIENTATION_180},
+ { 2, 19, GATE_SHAPE_T1, GATE_ORIENTATION_0},
+ { 5, 21, GATE_SHAPE_L1, GATE_ORIENTATION_0},
+ { 9, 19, GATE_SHAPE_L4, GATE_ORIENTATION_270},
+ {12, 20, GATE_SHAPE_T1, GATE_ORIENTATION_90},
};
static const u8 sRotatingGateTiles_1[] = INCBIN_U8("graphics/rotating_gates/1.4bpp");
@@ -230,7 +233,8 @@ static const u8 sRotatingGateTiles_7[] = INCBIN_U8("graphics/rotating_gates/7.4b
static const u8 sRotatingGateTiles_0[] = INCBIN_U8("graphics/rotating_gates/0.4bpp");
static const u8 sRotatingGateTiles_4[] = INCBIN_U8("graphics/rotating_gates/4.4bpp");
-static const struct OamData sOamData_RotatingGateLarge = {
+static const struct OamData sOamData_RotatingGateLarge =
+{
.y = 0,
.affineMode = ST_OAM_AFFINE_NORMAL,
.objMode = 0,
@@ -246,7 +250,8 @@ static const struct OamData sOamData_RotatingGateLarge = {
.affineParam = 0,
};
-static const struct OamData sOamData_RotatingGateRegular = {
+static const struct OamData sOamData_RotatingGateRegular =
+{
.y = 0,
.affineMode = ST_OAM_AFFINE_NORMAL,
.objMode = 0,
@@ -262,145 +267,178 @@ static const struct OamData sOamData_RotatingGateRegular = {
.affineParam = 0,
};
-static const struct SpriteSheet sRotatingGatesGraphicsTable[] = {
- { sRotatingGateTiles_0, 0x200, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L1 },
- { sRotatingGateTiles_1, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L2 },
- { sRotatingGateTiles_2, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L3 },
- { sRotatingGateTiles_3, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L4 },
- { sRotatingGateTiles_4, 0x200, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T1 },
- { sRotatingGateTiles_5, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T2 },
- { sRotatingGateTiles_6, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T3 },
- { sRotatingGateTiles_7, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T4 },
- { NULL },
+static const struct SpriteSheet sRotatingGatesGraphicsTable[] =
+{
+ {sRotatingGateTiles_0, 0x200, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L1},
+ {sRotatingGateTiles_1, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L2},
+ {sRotatingGateTiles_2, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L3},
+ {sRotatingGateTiles_3, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L4},
+ {sRotatingGateTiles_4, 0x200, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T1},
+ {sRotatingGateTiles_5, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T2},
+ {sRotatingGateTiles_6, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T3},
+ {sRotatingGateTiles_7, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T4},
+ {NULL},
};
-static const union AnimCmd sSpriteAnim_RotatingGateLarge[] = {
- ANIMCMD_FRAME(0, 0), ANIMCMD_END,
+static const union AnimCmd sSpriteAnim_RotatingGateLarge[] =
+{
+ ANIMCMD_FRAME(0, 0),
+ ANIMCMD_END,
};
-static const union AnimCmd sSpriteAnim_RotatingGateRegular[] = {
+static const union AnimCmd sSpriteAnim_RotatingGateRegular[] =
+{
ANIMCMD_FRAME(0, 0), ANIMCMD_END,
};
-static const union AnimCmd *const sSpriteAnimTable_RotatingGateLarge[] = {
+static const union AnimCmd *const sSpriteAnimTable_RotatingGateLarge[] =
+{
sSpriteAnim_RotatingGateLarge,
};
-static const union AnimCmd *const sSpriteAnimTable_RotatingGateRegular[] = {
+static const union AnimCmd *const sSpriteAnimTable_RotatingGateRegular[] =
+{
sSpriteAnim_RotatingGateRegular,
};
-static const union AffineAnimCmd sSpriteAffineAnim_Rotated0[] = {
- AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_JUMP(0),
+static const union AffineAnimCmd sSpriteAffineAnim_Rotated0[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_JUMP(0),
};
-static const union AffineAnimCmd sSpriteAffineAnim_Rotated90[] = {
- AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0), AFFINEANIMCMD_JUMP(0),
+static const union AffineAnimCmd sSpriteAffineAnim_Rotated90[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0),
+ AFFINEANIMCMD_JUMP(0),
};
-static const union AffineAnimCmd sSpriteAffineAnim_Rotated180[] = {
- AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0), AFFINEANIMCMD_JUMP(0),
+static const union AffineAnimCmd sSpriteAffineAnim_Rotated180[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0),
+ AFFINEANIMCMD_JUMP(0),
};
-static const union AffineAnimCmd sSpriteAffineAnim_Rotated270[] = {
- AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0), AFFINEANIMCMD_JUMP(0),
+static const union AffineAnimCmd sSpriteAffineAnim_Rotated270[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0),
+ AFFINEANIMCMD_JUMP(0),
};
-static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise0to90[] = {
+static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise0to90[] =
+{
AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, -4, 16),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise90to180[] = {
+static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise90to180[] =
+{
AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, -4, 16),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise180to270[] = {
+static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise180to270[] =
+{
AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, -4, 16),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise270to360[] = {
+static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise270to360[] =
+{
AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, -4, 16),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise360to270[] = {
+static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise360to270[] =
+{
AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, 4, 16),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise270to180[] = {
+static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise270to180[] =
+{
AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, 4, 16),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise180to90[] = {
+static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise180to90[] =
+{
AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, 4, 16),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise90to0[] = {
+static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise90to0[] =
+{
AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, 4, 16),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise0to90Faster[] = {
+static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise0to90Faster[] =
+{
AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 8),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise90to180Faster[] = {
+static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise90to180Faster[] =
+{
AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 8),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise180to270Faster[] = {
+static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise180to270Faster[] =
+{
AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 8),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise270to360Faster[] = {
+static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise270to360Faster[] =
+{
AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 8),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise360to270Faster[] = {
- AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 8), AFFINEANIMCMD_END,
+static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise360to270Faster[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 8),
+ AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise270to180Faster[] = {
+static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise270to180Faster[] =
+{
AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 8),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise180to90Faster[] = {
+static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise180to90Faster[] =
+{
AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 8),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise90to0Faster[] = {
+static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise90to0Faster[] =
+{
AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 8),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd *const sSpriteAffineAnimTable_RotatingGate[] = {
+static const union AffineAnimCmd *const sSpriteAffineAnimTable_RotatingGate[] =
+{
sSpriteAffineAnim_Rotated0,
sSpriteAffineAnim_Rotated90,
sSpriteAffineAnim_Rotated180,
@@ -423,7 +461,8 @@ static const union AffineAnimCmd *const sSpriteAffineAnimTable_RotatingGate[] =
sSpriteAffineAnim_RotatingClockwise270to360Faster,
};
-static const struct SpriteTemplate sSpriteTemplate_RotatingGateLarge = {
+static const struct SpriteTemplate sSpriteTemplate_RotatingGateLarge =
+{
.tileTag = ROTATING_GATE_TILE_TAG,
.paletteTag = 0xFFFF,
.oam = &sOamData_RotatingGateLarge,
@@ -433,7 +472,8 @@ static const struct SpriteTemplate sSpriteTemplate_RotatingGateLarge = {
.callback = SpriteCallback_RotatingGate,
};
-static const struct SpriteTemplate sSpriteTemplate_RotatingGateRegular = {
+static const struct SpriteTemplate sSpriteTemplate_RotatingGateRegular =
+{
.tileTag = ROTATING_GATE_TILE_TAG,
.paletteTag = 0xFFFF,
.oam = &sOamData_RotatingGateRegular,
@@ -449,62 +489,36 @@ static const struct SpriteTemplate sSpriteTemplate_RotatingGateRegular = {
// given direction. This information is compared against the gate
// "arm" layout to see if there is an arm at the position in order to
// produce the final rotation.
-static const u8 sRotatingGate_RotationInfoNorth[4][4] = {
- { GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE },
- { GATE_ROTATION_CLOCKWISE(GATE_ARM_WEST, 1),
- GATE_ROTATION_CLOCKWISE(GATE_ARM_WEST, 0),
- GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_EAST, 0),
- GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_EAST, 1) },
- { GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE },
- { GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE },
+static const u8 sRotatingGate_RotationInfoNorth[4 * 4] =
+{
+ GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE,
+ GATE_ROT_CW(GATE_ARM_WEST, 1), GATE_ROT_CW(GATE_ARM_WEST, 0), GATE_ROT_ACW(GATE_ARM_EAST, 0), GATE_ROT_ACW(GATE_ARM_EAST, 1),
+ GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE,
+ GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE,
};
-static const u8 sRotatingGate_RotationInfoSouth[4][4] = {
- { GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE },
- { GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE },
- { GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_WEST, 1),
- GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_WEST, 0),
- GATE_ROTATION_CLOCKWISE(GATE_ARM_EAST, 0),
- GATE_ROTATION_CLOCKWISE(GATE_ARM_EAST, 1) },
- { GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE },
+static const u8 sRotatingGate_RotationInfoSouth[4 * 4] =
+{
+ GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE,
+ GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE,
+ GATE_ROT_ACW(GATE_ARM_WEST, 1), GATE_ROT_ACW(GATE_ARM_WEST, 0), GATE_ROT_CW(GATE_ARM_EAST, 0), GATE_ROT_CW(GATE_ARM_EAST, 1),
+ GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE,
};
-static const u8 sRotatingGate_RotationInfoWest[4][4] = {
- { GATE_ROTATION_NONE,
- GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_NORTH, 1),
- GATE_ROTATION_NONE,
- GATE_ROTATION_NONE },
- { GATE_ROTATION_NONE,
- GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_NORTH, 0),
- GATE_ROTATION_NONE,
- GATE_ROTATION_NONE },
- { GATE_ROTATION_NONE,
- GATE_ROTATION_CLOCKWISE(GATE_ARM_SOUTH, 0),
- GATE_ROTATION_NONE,
- GATE_ROTATION_NONE },
- { GATE_ROTATION_NONE,
- GATE_ROTATION_CLOCKWISE(GATE_ARM_SOUTH, 1),
- GATE_ROTATION_NONE,
- GATE_ROTATION_NONE },
+static const u8 sRotatingGate_RotationInfoWest[4 * 4] =
+{
+ GATE_ROT_NONE, GATE_ROT_ACW(GATE_ARM_NORTH, 1), GATE_ROT_NONE, GATE_ROT_NONE,
+ GATE_ROT_NONE, GATE_ROT_ACW(GATE_ARM_NORTH, 0), GATE_ROT_NONE, GATE_ROT_NONE,
+ GATE_ROT_NONE, GATE_ROT_CW(GATE_ARM_SOUTH, 0), GATE_ROT_NONE, GATE_ROT_NONE,
+ GATE_ROT_NONE, GATE_ROT_CW(GATE_ARM_SOUTH, 1), GATE_ROT_NONE, GATE_ROT_NONE,
};
-static const u8 sRotatingGate_RotationInfoEast[4][4] = {
- { GATE_ROTATION_NONE,
- GATE_ROTATION_NONE,
- GATE_ROTATION_CLOCKWISE(GATE_ARM_NORTH, 1),
- GATE_ROTATION_NONE },
- { GATE_ROTATION_NONE,
- GATE_ROTATION_NONE,
- GATE_ROTATION_CLOCKWISE(GATE_ARM_NORTH, 0),
- GATE_ROTATION_NONE },
- { GATE_ROTATION_NONE,
- GATE_ROTATION_NONE,
- GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_SOUTH, 0),
- GATE_ROTATION_NONE },
- { GATE_ROTATION_NONE,
- GATE_ROTATION_NONE,
- GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_SOUTH, 1),
- GATE_ROTATION_NONE },
+static const u8 sRotatingGate_RotationInfoEast[4 * 4] =
+{
+ GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_CW(GATE_ARM_NORTH, 1), GATE_ROT_NONE,
+ GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_CW(GATE_ARM_NORTH, 0), GATE_ROT_NONE,
+ GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_ACW(GATE_ARM_SOUTH, 0), GATE_ROT_NONE,
+ GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_ACW(GATE_ARM_SOUTH, 1), GATE_ROT_NONE,
};
// These tables describe the relative coordinate positions the arms
@@ -519,49 +533,86 @@ static const struct Coords8 sRotatingGate_ArmPositionsAntiClockwiseRotation[] =
// Describes where the gates "arms" are in the order north, east, south, west.
// These are adjusted using the current orientation to perform collision checking
-static const u8 sRotatingGate_ArmLayout[][GATE_ARM_WEST + 1][GATE_ARM_MAX_LENGTH] = {
+static const u8 sRotatingGate_ArmLayout[][4 * 2] =
+{
// L-shape gates
{
- { 1, 0 }, { 1, 0 }, { 0, 0 }, { 0, 0 },
+ 1, 0,
+ 1, 0,
+ 0, 0,
+ 0, 0,
},
{
- { 1, 1 }, { 1, 0 }, { 0, 0 }, { 0, 0 },
+ 1, 1,
+ 1, 0,
+ 0, 0,
+ 0, 0,
},
{
- { 1, 0 }, { 1, 1 }, { 0, 0 }, { 0, 0 },
+ 1, 0,
+ 1, 1,
+ 0, 0,
+ 0, 0,
},
{
- { 1, 1 }, { 1, 1 }, { 0, 0 }, { 0, 0 },
+ 1, 1,
+ 1, 1,
+ 0, 0,
+ 0, 0,
},
// T-shape gates
{
- { 1, 0 }, { 1, 0 }, { 1, 0 }, { 0, 0 },
+ 1, 0,
+ 1, 0,
+ 1, 0,
+ 0, 0,
},
{
- { 1, 1 }, { 1, 0 }, { 1, 0 }, { 0, 0 },
+ 1, 1,
+ 1, 0,
+ 1, 0,
+ 0, 0,
},
{
- { 1, 0 }, { 1, 1 }, { 1, 0 }, { 0, 0 },
+ 1, 0,
+ 1, 1,
+ 1, 0,
+ 0, 0,
},
{
- { 1, 0 }, { 1, 0 }, { 1, 1 }, { 0, 0 },
+ 1, 0,
+ 1, 0,
+ 1, 1,
+ 0, 0,
},
// Unused T-shape gates
// These have 2-3 long arms and cannot actually be used anywhere
// since configuration for them is missing from the other tables.
{
- { 1, 1 }, { 1, 1 }, { 1, 0 }, { 0, 0 },
+ 1, 1,
+ 1, 1,
+ 1, 0,
+ 0, 0,
},
{
- { 1, 1 }, { 1, 0 }, { 1, 1 }, { 0, 0 },
+ 1, 1,
+ 1, 0,
+ 1, 1,
+ 0, 0,
},
{
- { 1, 0 }, { 1, 1 }, { 1, 1 }, { 0, 0 },
+ 1, 0,
+ 1, 1,
+ 1, 1,
+ 0, 0,
},
{
- { 1, 1 }, { 1, 1 }, { 1, 1 }, { 0, 0 },
+ 1, 1,
+ 1, 1,
+ 1, 1,
+ 0, 0,
},
};
@@ -675,8 +726,8 @@ static void RotatingGate_CreateGatesWithinViewport(s16 deltaX, s16 deltaY)
for (i = 0; i < gRotatingGate_PuzzleCount; i++)
{
- x3 = gRotatingGate_PuzzleConfig[i].pos.x + 7;
- y3 = gRotatingGate_PuzzleConfig[i].pos.y + 7;
+ x3 = gRotatingGate_PuzzleConfig[i].x + 7;
+ y3 = gRotatingGate_PuzzleConfig[i].y + 7;
if (y <= y3 && y2 >= y3 && x <= x3 && x2 >= x3 &&
gRotatingGate_GateSpriteIds[i] == MAX_SPRITES)
@@ -697,24 +748,18 @@ static u8 RotatingGate_CreateGate(u8 gateId, s16 deltaX, s16 deltaY)
gate = &gRotatingGate_PuzzleConfig[gateId];
if (gate->shape == GATE_SHAPE_L1 || gate->shape == GATE_SHAPE_T1)
- {
template = sSpriteTemplate_RotatingGateRegular;
- }
else
- {
template = sSpriteTemplate_RotatingGateLarge;
- }
template.tileTag = gate->shape + ROTATING_GATE_TILE_TAG;
spriteId = CreateSprite(&template, 0, 0, 0x94);
if (spriteId == MAX_SPRITES)
- {
return MAX_SPRITES;
- }
- x = gate->pos.x + 7;
- y = gate->pos.y + 7;
+ x = gate->x + 7;
+ y = gate->y + 7;
sprite = &gSprites[spriteId];
sprite->data0 = gateId;
@@ -769,7 +814,7 @@ static void RotatingGate_HideGatesOutsideViewport(struct Sprite *sprite)
u16 y;
s16 y2;
- sprite->invisible = 0;
+ sprite->invisible = FALSE;
x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX;
y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY;
@@ -778,12 +823,12 @@ static void RotatingGate_HideGatesOutsideViewport(struct Sprite *sprite)
if ((s16)x > DISPLAY_WIDTH + 0x10 - 1 || x2 < -0x10)
{
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
}
if ((s16)y > DISPLAY_HEIGHT + 0x10 - 1 || y2 < -0x10)
{
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
}
}
@@ -811,8 +856,8 @@ static void RotatingGate_DestroyGatesOutsideViewport(void)
for (i = 0; i < gRotatingGate_PuzzleCount; i++)
{
- xGate = gRotatingGate_PuzzleConfig[i].pos.x + 7;
- yGate = gRotatingGate_PuzzleConfig[i].pos.y + 7;
+ xGate = gRotatingGate_PuzzleConfig[i].x + 7;
+ yGate = gRotatingGate_PuzzleConfig[i].y + 7;
if (gRotatingGate_GateSpriteIds[i] == MAX_SPRITES)
continue;
@@ -851,8 +896,8 @@ static int RotatingGate_CanRotate(u8 gateId, int rotationDirection)
orientation = RotatingGate_GetGateOrientation(gateId);
shape = gRotatingGate_PuzzleConfig[gateId].shape;
- x = gRotatingGate_PuzzleConfig[gateId].pos.x + 7;
- y = gRotatingGate_PuzzleConfig[gateId].pos.y + 7;
+ x = gRotatingGate_PuzzleConfig[gateId].x + 7;
+ y = gRotatingGate_PuzzleConfig[gateId].y + 7;
// Loop through the gate's "arms" clockwise (north, south, east, west)
for (i = GATE_ARM_NORTH; i <= GATE_ARM_WEST; i++)
@@ -878,118 +923,119 @@ static int RotatingGate_CanRotate(u8 gateId, int rotationDirection)
return 1;
}
#else
-__attribute__((naked)) static int RotatingGate_CanRotate(u8 a, int puzzleType)
+__attribute__((naked))
+static int RotatingGate_CanRotate(u8 a, int puzzleType)
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0xC\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- cmp r1, 0x1\n\
- bne _080C7EAC\n\
- ldr r0, _080C7EA8 @ =sRotatingGate_ArmPositionsAntiClockwiseRotation\n\
- mov r10, r0\n\
- b _080C7EB8\n\
- .align 2, 0\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0xC\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ cmp r1, 0x1\n\
+ bne _080C7EAC\n\
+ ldr r0, _080C7EA8 @ =sRotatingGate_ArmPositionsAntiClockwiseRotation\n\
+ mov r10, r0\n\
+ b _080C7EB8\n\
+ .align 2, 0\n\
_080C7EA8: .4byte sRotatingGate_ArmPositionsAntiClockwiseRotation\n\
_080C7EAC:\n\
- cmp r1, 0x2\n\
- beq _080C7EB4\n\
+ cmp r1, 0x2\n\
+ beq _080C7EB4\n\
_080C7EB0:\n\
- movs r0, 0\n\
- b _080C7F48\n\
+ movs r0, 0\n\
+ b _080C7F48\n\
_080C7EB4:\n\
- ldr r1, _080C7F58 @ =sRotatingGate_ArmPositionsClockwiseRotation\n\
- mov r10, r1\n\
+ ldr r1, _080C7F58 @ =sRotatingGate_ArmPositionsClockwiseRotation\n\
+ mov r10, r1\n\
_080C7EB8:\n\
- adds r0, r4, 0\n\
- bl RotatingGate_GetGateOrientation\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- str r0, [sp]\n\
- ldr r0, _080C7F5C @ =gRotatingGate_PuzzleConfig\n\
- ldr r1, [r0]\n\
- lsls r0, r4, 3\n\
- adds r0, r1\n\
- ldrb r2, [r0, 0x4]\n\
- ldrh r1, [r0]\n\
- adds r1, 0x7\n\
- ldrh r0, [r0, 0x2]\n\
- adds r0, 0x7\n\
- movs r3, 0\n\
- lsls r2, 3\n\
- str r2, [sp, 0x4]\n\
- lsls r1, 16\n\
- asrs r1, 16\n\
- mov r9, r1\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- mov r8, r0\n\
+ adds r0, r4, 0\n\
+ bl RotatingGate_GetGateOrientation\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ str r0, [sp]\n\
+ ldr r0, _080C7F5C @ =gRotatingGate_PuzzleConfig\n\
+ ldr r1, [r0]\n\
+ lsls r0, r4, 3\n\
+ adds r0, r1\n\
+ ldrb r2, [r0, 0x4]\n\
+ ldrh r1, [r0]\n\
+ adds r1, 0x7\n\
+ ldrh r0, [r0, 0x2]\n\
+ adds r0, 0x7\n\
+ movs r3, 0\n\
+ lsls r2, 3\n\
+ str r2, [sp, 0x4]\n\
+ lsls r1, 16\n\
+ asrs r1, 16\n\
+ mov r9, r1\n\
+ lsls r0, 16\n\
+ asrs r0, 16\n\
+ mov r8, r0\n\
_080C7EE8:\n\
- movs r6, 0\n\
- ldr r2, [sp]\n\
- adds r7, r2, r3\n\
- lsls r0, r3, 1\n\
- adds r5, r7, 0\n\
- ldr r1, [sp, 0x4]\n\
- adds r0, r1\n\
- ldr r2, _080C7F60 @ =sRotatingGate_ArmLayout\n\
- adds r4, r0, r2\n\
+ movs r6, 0\n\
+ ldr r2, [sp]\n\
+ adds r7, r2, r3\n\
+ lsls r0, r3, 1\n\
+ adds r5, r7, 0\n\
+ ldr r1, [sp, 0x4]\n\
+ adds r0, r1\n\
+ ldr r2, _080C7F60 @ =sRotatingGate_ArmLayout\n\
+ adds r4, r0, r2\n\
_080C7EFA:\n\
- adds r0, r5, 0\n\
- cmp r5, 0\n\
- bge _080C7F02\n\
- adds r0, r7, 0x3\n\
+ adds r0, r5, 0\n\
+ cmp r5, 0\n\
+ bge _080C7F02\n\
+ adds r0, r7, 0x3\n\
_080C7F02:\n\
- asrs r0, 2\n\
- lsls r0, 2\n\
- subs r0, r5, r0\n\
- lsls r0, 1\n\
- adds r0, r6\n\
- lsls r0, 24\n\
- lsrs r1, r0, 24\n\
- ldrb r0, [r4]\n\
- cmp r0, 0\n\
- beq _080C7F38\n\
- lsls r1, 2\n\
- add r1, r10\n\
- movs r0, 0\n\
- ldrsb r0, [r1, r0]\n\
- add r0, r9\n\
- ldrb r1, [r1, 0x1]\n\
- lsls r1, 24\n\
- asrs r1, 24\n\
- add r1, r8\n\
- str r3, [sp, 0x8]\n\
- bl MapGridIsImpassableAt\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- ldr r3, [sp, 0x8]\n\
- cmp r0, 0x1\n\
- beq _080C7EB0\n\
+ asrs r0, 2\n\
+ lsls r0, 2\n\
+ subs r0, r5, r0\n\
+ lsls r0, 1\n\
+ adds r0, r6\n\
+ lsls r0, 24\n\
+ lsrs r1, r0, 24\n\
+ ldrb r0, [r4]\n\
+ cmp r0, 0\n\
+ beq _080C7F38\n\
+ lsls r1, 2\n\
+ add r1, r10\n\
+ movs r0, 0\n\
+ ldrsb r0, [r1, r0]\n\
+ add r0, r9\n\
+ ldrb r1, [r1, 0x1]\n\
+ lsls r1, 24\n\
+ asrs r1, 24\n\
+ add r1, r8\n\
+ str r3, [sp, 0x8]\n\
+ bl MapGridIsImpassableAt\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ ldr r3, [sp, 0x8]\n\
+ cmp r0, 0x1\n\
+ beq _080C7EB0\n\
_080C7F38:\n\
- adds r4, 0x1\n\
- adds r6, 0x1\n\
- cmp r6, 0x1\n\
- ble _080C7EFA\n\
- adds r3, 0x1\n\
- cmp r3, 0x3\n\
- ble _080C7EE8\n\
- movs r0, 0x1\n\
+ adds r4, 0x1\n\
+ adds r6, 0x1\n\
+ cmp r6, 0x1\n\
+ ble _080C7EFA\n\
+ adds r3, 0x1\n\
+ cmp r3, 0x3\n\
+ ble _080C7EE8\n\
+ movs r0, 0x1\n\
_080C7F48:\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 {r1}\n\
- bx r1\n\
- .align 2, 0\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 {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
_080C7F58: .4byte sRotatingGate_ArmPositionsClockwiseRotation\n\
_080C7F5C: .4byte gRotatingGate_PuzzleConfig\n\
_080C7F60: .4byte sRotatingGate_ArmLayout\n\
@@ -997,7 +1043,6 @@ _080C7F60: .4byte sRotatingGate_ArmLayout\n\
}
#endif
-#ifdef NONMATCHING
static int RotatingGate_HasArm(u8 gateId, u8 armInfo)
{
int isLongArm;
@@ -1010,56 +1055,8 @@ static int RotatingGate_HasArm(u8 gateId, u8 armInfo)
armOrientation = (arm - RotatingGate_GetGateOrientation(gateId) + 4) % 4;
shape = gRotatingGate_PuzzleConfig[gateId].shape;
- return sRotatingGate_ArmLayout[shape][armOrientation][isLongArm];
+ return sRotatingGate_ArmLayout[shape][armOrientation * 2 + isLongArm];
}
-#else
-__attribute__((naked)) static int RotatingGate_HasArm(u8 a, u8 b)
-{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- adds r4, r1, 0\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- adds r6, r0, 0\n\
- lsls r4, 24\n\
- lsrs r5, r4, 24\n\
- lsrs r4, 25\n\
- movs r0, 0x1\n\
- ands r5, r0\n\
- adds r0, r6, 0\n\
- bl RotatingGate_GetGateOrientation\n\
- subs r4, r0\n\
- adds r1, r4, 0x4\n\
- adds r0, r1, 0\n\
- cmp r1, 0\n\
- bge _080C7F8A\n\
- adds r0, r4, 0x7\n\
-_080C7F8A:\n\
- asrs r0, 2\n\
- lsls r0, 2\n\
- subs r0, r1, r0\n\
- ldr r1, _080C7FB0 @ =gRotatingGate_PuzzleConfig\n\
- ldr r2, [r1]\n\
- lsls r1, r6, 3\n\
- adds r1, r2\n\
- ldrb r1, [r1, 0x4]\n\
- ldr r2, _080C7FB4 @ =sRotatingGate_ArmLayout\n\
- lsls r0, 24\n\
- asrs r0, 23\n\
- adds r0, r5\n\
- lsls r1, 3\n\
- adds r0, r1\n\
- adds r0, r2\n\
- ldrb r0, [r0]\n\
- pop {r4-r6}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
-_080C7FB0: .4byte gRotatingGate_PuzzleConfig\n\
-_080C7FB4: .4byte sRotatingGate_ArmLayout\n\
-.syntax divided\n");
-}
-#endif
static void RotatingGate_TriggerRotationAnimation(u8 gateId, int rotationDirection)
{
@@ -1073,79 +1070,23 @@ static void RotatingGate_TriggerRotationAnimation(u8 gateId, int rotationDirecti
}
}
-#ifdef NONMATCHING
static u8 RotatingGate_GetRotationInfo(u8 direction, s16 x, s16 y)
{
- register const u8(*ptr)[][4] asm("r3");
+ register const u8 *ptr;
if (direction == DIR_NORTH)
- ptr = &sRotatingGate_RotationInfoNorth;
+ ptr = sRotatingGate_RotationInfoNorth;
else if (direction == DIR_SOUTH)
- ptr = &sRotatingGate_RotationInfoSouth;
+ ptr = sRotatingGate_RotationInfoSouth;
else if (direction == DIR_WEST)
- ptr = &sRotatingGate_RotationInfoWest;
+ ptr = sRotatingGate_RotationInfoWest;
else if (direction == DIR_EAST)
- ptr = &sRotatingGate_RotationInfoEast;
+ ptr = sRotatingGate_RotationInfoEast;
else
- return GATE_ROTATION_NONE;
+ return GATE_ROT_NONE;
- return (*ptr)[y][x];
-}
-#else
-__attribute__((naked)) static u8 RotatingGate_GetRotationInfo(u8 a, s16 b, s16 c)
-{
- asm(".syntax unified\n\
- push {lr}\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- adds r3, r0, 0\n\
- lsls r1, 16\n\
- lsrs r1, 16\n\
- lsls r2, 16\n\
- lsrs r2, 16\n\
- cmp r0, 0x2\n\
- bne _080C8008\n\
- ldr r3, _080C8004 @ =sRotatingGate_RotationInfoNorth\n\
- b _080C802A\n\
- .align 2, 0\n\
-_080C8004: .4byte sRotatingGate_RotationInfoNorth\n\
-_080C8008:\n\
- cmp r0, 0x1\n\
- bne _080C8014\n\
- ldr r3, _080C8010 @ =sRotatingGate_RotationInfoSouth\n\
- b _080C802A\n\
- .align 2, 0\n\
-_080C8010: .4byte sRotatingGate_RotationInfoSouth\n\
-_080C8014:\n\
- cmp r0, 0x3\n\
- bne _080C8020\n\
- ldr r3, _080C801C @ =sRotatingGate_RotationInfoWest\n\
- b _080C802A\n\
- .align 2, 0\n\
-_080C801C: .4byte sRotatingGate_RotationInfoWest\n\
-_080C8020:\n\
- cmp r3, 0x4\n\
- beq _080C8028\n\
- movs r0, 0xFF\n\
- b _080C8038\n\
-_080C8028:\n\
- ldr r3, _080C803C @ =sRotatingGate_RotationInfoEast\n\
-_080C802A:\n\
- lsls r0, r2, 16\n\
- lsls r1, 16\n\
- asrs r1, 16\n\
- asrs r0, 14\n\
- adds r0, r1\n\
- adds r0, r3, r0\n\
- ldrb r0, [r0]\n\
-_080C8038:\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
-_080C803C: .4byte sRotatingGate_RotationInfoEast\n\
-.syntax divided\n");
+ return ptr[y * 4 + x];
}
-#endif
void RotatingGate_InitPuzzle(void)
{
@@ -1178,36 +1119,24 @@ void RotatingGate_InitPuzzleAndGraphics(void)
bool8 CheckForRotatingGatePuzzleCollision(u8 direction, s16 x, s16 y)
{
int i;
- s16 gateX;
- s16 gateY;
- register u32 rotationInfo asm("r0");
- int rotationDirection;
- int armInfo;
- s16 centerX;
- s16 centerY;
if (!GetCurrentMapRotatingGatePuzzleType())
- {
- return 0;
- }
-
+ return FALSE;
for (i = 0; i < gRotatingGate_PuzzleCount; i++)
{
- gateX = gRotatingGate_PuzzleConfig[i].pos.x + 7;
- gateY = gRotatingGate_PuzzleConfig[i].pos.y + 7;
+ s16 gateX = gRotatingGate_PuzzleConfig[i].x + 7;
+ s16 gateY = gRotatingGate_PuzzleConfig[i].y + 7;
if (gateX - 2 <= x && x <= gateX + 1 && gateY - 2 <= y && y <= gateY + 1)
{
- centerX = x - gateX + 2;
- centerY = y - gateY + 2;
- rotationInfo = RotatingGate_GetRotationInfo(direction, centerX, centerY);
+ s16 centerX = x - gateX + 2;
+ s16 centerY = y - gateY + 2;
+ u8 rotationInfo = RotatingGate_GetRotationInfo(direction, centerX, centerY);
- if (rotationInfo != GATE_ROTATION_NONE)
+ if (rotationInfo != GATE_ROT_NONE)
{
- rotationDirection = rotationInfo >> 4;
- armInfo = rotationInfo & 0xF;
-
- asm("" ::"r"(armInfo));
+ u8 rotationDirection = ((rotationInfo & 0xF0) >> 4);
+ u8 armInfo = rotationInfo & 0xF;
if (RotatingGate_HasArm(i, armInfo))
{
@@ -1215,14 +1144,12 @@ bool8 CheckForRotatingGatePuzzleCollision(u8 direction, s16 x, s16 y)
{
RotatingGate_TriggerRotationAnimation(i, rotationDirection);
RotatingGate_RotateInDirection(i, rotationDirection);
- return 0;
+ return FALSE;
}
-
- return 1;
+ return TRUE;
}
}
}
}
-
- return 0;
+ return FALSE;
}
diff --git a/src/safari_zone.c b/src/safari_zone.c
index a47c8e951..14fd1ddc4 100644
--- a/src/safari_zone.c
+++ b/src/safari_zone.c
@@ -4,7 +4,7 @@
#include "field_fadetransition.h"
#include "field_player_avatar.h"
#include "main.h"
-#include "rom4.h"
+#include "overworld.h"
#include "script.h"
#include "string_util.h"
#include "text.h"
@@ -51,7 +51,7 @@ void SetSafariZoneFlag(void)
void ResetSafariZoneFlag(void)
{
- FlagReset(SYS_SAFARI_MODE);
+ FlagClear(SYS_SAFARI_MODE);
}
void EnterSafariMode(void)
diff --git a/src/save.c b/src/save.c
index adf39268e..eae3f4470 100644
--- a/src/save.c
+++ b/src/save.c
@@ -3,7 +3,7 @@
#include "gba/flash_internal.h"
#include "save.h"
#include "load_save.h"
-#include "rom4.h"
+#include "overworld.h"
#include "save_failed_screen.h"
#define GETVALIDSTATUSBITFIELD ((1 << ARRAY_COUNT(gSaveSectionLocations)) - 1)
diff --git a/src/scrcmd.c b/src/scrcmd.c
index 66578f350..31a90158a 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -31,7 +31,7 @@
#include "party_menu.h"
#include "pokemon.h"
#include "rng.h"
-#include "rom4.h"
+#include "overworld.h"
#include "rtc.h"
#include "script.h"
#include "script_menu.h"
@@ -50,11 +50,11 @@ typedef void (*NativeFunc)(void);
extern u32 gUnknown_0202E8AC;
static EWRAM_DATA u32 gUnknown_0202E8B0 = 0;
-static EWRAM_DATA u16 gUnknown_0202E8B4 = 0;
-static EWRAM_DATA u16 gUnknown_0202E8B6 = 0;
-static EWRAM_DATA u16 gUnknown_0202E8B8 = 0;
-static EWRAM_DATA u16 gUnknown_0202E8BA = 0;
-static EWRAM_DATA u16 gUnknown_0202E8BC = 0;
+static EWRAM_DATA u16 sPauseCounter = 0;
+static EWRAM_DATA u16 sMovingNpcId = 0;
+static EWRAM_DATA u16 sMovingNpcMapBank = 0;
+static EWRAM_DATA u16 sMovingNpcMapId = 0;
+static EWRAM_DATA u16 sFieldEffectScriptId = 0;
extern u16 gSpecialVar_0x8000;
extern u16 gSpecialVar_0x8001;
@@ -109,8 +109,8 @@ bool8 ScrCmd_end(struct ScriptContext *ctx)
bool8 ScrCmd_jumpasm(struct ScriptContext *ctx)
{
- u32 addr = ScriptReadWord(ctx);
- SetupNativeScript(ctx, (void *)addr);
+ bool8 (*addr)(void) = (bool8 (*)(void))ScriptReadWord(ctx);
+ SetupNativeScript(ctx, addr);
return TRUE;
}
@@ -542,7 +542,7 @@ bool8 ScrCmd_setflag(struct ScriptContext *ctx)
bool8 ScrCmd_clearflag(struct ScriptContext *ctx)
{
- FlagReset(ScriptReadHalfword(ctx));
+ FlagClear(ScriptReadHalfword(ctx));
return FALSE;
}
@@ -567,8 +567,8 @@ bool8 ScrCmd_lighten(struct ScriptContext *ctx)
bool8 ScrCmd_darken(struct ScriptContext *ctx)
{
- u16 value = VarGet(ScriptReadHalfword(ctx));
- sub_8053CE4(value);
+ u16 flashLevel = VarGet(ScriptReadHalfword(ctx));
+ Overworld_SetFlashLevel(flashLevel);
return FALSE;
}
@@ -598,9 +598,9 @@ bool8 ScrCmd_fadescreendelay(struct ScriptContext *ctx)
bool8 s28_pause_asm()
{
- gUnknown_0202E8B4--;
+ sPauseCounter--;
- if (gUnknown_0202E8B4 == 0)
+ if (sPauseCounter == 0)
return TRUE;
else
return FALSE;
@@ -608,7 +608,7 @@ bool8 s28_pause_asm()
bool8 ScrCmd_pause(struct ScriptContext *ctx)
{
- gUnknown_0202E8B4 = ScriptReadHalfword(ctx);
+ sPauseCounter = ScriptReadHalfword(ctx);
SetupNativeScript(ctx, s28_pause_asm);
return TRUE;
}
@@ -815,7 +815,7 @@ bool8 ScrCmd_playsfx(struct ScriptContext *ctx)
return FALSE;
}
-bool8 s30_music_check_asm()
+static bool8 WaitForSoundEffectFinish()
{
if (!IsSEPlaying())
return TRUE;
@@ -825,7 +825,7 @@ bool8 s30_music_check_asm()
bool8 ScrCmd_checksound(struct ScriptContext *ctx)
{
- SetupNativeScript(ctx, s30_music_check_asm);
+ SetupNativeScript(ctx, WaitForSoundEffectFinish);
return TRUE;
}
@@ -835,14 +835,14 @@ bool8 ScrCmd_fanfare(struct ScriptContext *ctx)
return FALSE;
}
-bool8 s32_fanfare_wait_asm()
+static bool8 WaitForFanfareFinish()
{
return IsFanfareTaskInactive();
}
bool8 ScrCmd_waitfanfare(struct ScriptContext *ctx)
{
- SetupNativeScript(ctx, s32_fanfare_wait_asm);
+ SetupNativeScript(ctx, WaitForFanfareFinish);
return TRUE;
}
@@ -870,15 +870,15 @@ bool8 ScrCmd_fadedefault(struct ScriptContext *ctx)
bool8 ScrCmd_fademusic(struct ScriptContext *ctx)
{
- sub_8053FB0(ScriptReadHalfword(ctx));
+ Overworld_ChangeMusicTo(ScriptReadHalfword(ctx));
return FALSE;
}
bool8 ScrCmd_fadeout(struct ScriptContext *ctx)
{
- u8 val = ScriptReadByte(ctx);
- if (val)
- FadeOutBGMTemporarily(4 * val);
+ u8 speed = ScriptReadByte(ctx);
+ if (speed != 0)
+ FadeOutBGMTemporarily(4 * speed);
else
FadeOutBGMTemporarily(4);
SetupNativeScript(ctx, IsBGMPausedOrStopped);
@@ -887,9 +887,9 @@ bool8 ScrCmd_fadeout(struct ScriptContext *ctx)
bool8 ScrCmd_fadein(struct ScriptContext *ctx)
{
- u8 val = ScriptReadByte(ctx);
- if (val)
- FadeInBGM(4 * val);
+ u8 speed = ScriptReadByte(ctx);
+ if (speed != 0)
+ FadeInBGM(4 * speed);
else
FadeInBGM(4);
return FALSE;
@@ -897,54 +897,56 @@ bool8 ScrCmd_fadein(struct ScriptContext *ctx)
bool8 ScrCmd_move(struct ScriptContext *ctx)
{
- u16 v1 = VarGet(ScriptReadHalfword(ctx));
- void *v2 = (void *)ScriptReadWord(ctx);
- exec_movement(v1, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, v2);
- gUnknown_0202E8B6 = v1;
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+ void *movementScript = (void *)ScriptReadWord(ctx);
+
+ ScriptMovement_StartObjectMovementScript(localId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, movementScript);
+ sMovingNpcId = localId;
return FALSE;
}
bool8 ScrCmd_movecoords(struct ScriptContext *ctx)
{
- u16 v1 = VarGet(ScriptReadHalfword(ctx));
- void *v2 = (void *)ScriptReadWord(ctx);
- u8 v3 = ScriptReadByte(ctx);
- u8 v4 = ScriptReadByte(ctx);
- exec_movement(v1, v4, v3, v2);
- gUnknown_0202E8B6 = v1;
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+ void *movementScript = (void *)ScriptReadWord(ctx);
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+
+ ScriptMovement_StartObjectMovementScript(localId, mapNum, mapGroup, movementScript);
+ sMovingNpcId = localId;
return FALSE;
}
-bool8 s51a_0806B288(void)
+static bool8 WaitForMovementFinish(void)
{
- return sub_80A212C(gUnknown_0202E8B6, gUnknown_0202E8BA, gUnknown_0202E8B8);
+ return ScriptMovement_IsObjectMovementFinished(sMovingNpcId, sMovingNpcMapId, sMovingNpcMapBank);
}
bool8 ScrCmd_waitmove(struct ScriptContext *ctx)
{
- u16 v1 = VarGet(ScriptReadHalfword(ctx));
- if (v1)
- gUnknown_0202E8B6 = v1;
- gUnknown_0202E8B8 = gSaveBlock1.location.mapGroup;
- gUnknown_0202E8BA = gSaveBlock1.location.mapNum;
- SetupNativeScript(ctx, s51a_0806B288);
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+
+ if (localId != 0)
+ sMovingNpcId = localId;
+ sMovingNpcMapBank = gSaveBlock1.location.mapGroup;
+ sMovingNpcMapId = gSaveBlock1.location.mapNum;
+ SetupNativeScript(ctx, WaitForMovementFinish);
return TRUE;
}
bool8 ScrCmd_waitmovexy(struct ScriptContext *ctx)
{
- u16 v1 = VarGet(ScriptReadHalfword(ctx));
- u8 v2;
- u8 v3;
-
- if (v1)
- gUnknown_0202E8B6 = v1;
-
- v2 = ScriptReadByte(ctx);
- v3 = ScriptReadByte(ctx);
- gUnknown_0202E8B8 = v2;
- gUnknown_0202E8BA = v3;
- SetupNativeScript(ctx, s51a_0806B288);
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+ u8 mapBank;
+ u8 mapId;
+
+ if (localId != 0)
+ sMovingNpcId = localId;
+ mapBank = ScriptReadByte(ctx);
+ mapId = ScriptReadByte(ctx);
+ sMovingNpcMapBank = mapBank;
+ sMovingNpcMapId = mapId;
+ SetupNativeScript(ctx, WaitForMovementFinish);
return TRUE;
}
@@ -994,7 +996,7 @@ bool8 ScrCmd_movespriteperm(struct ScriptContext *ctx)
u16 v1 = VarGet(ScriptReadHalfword(ctx));
u16 v2 = VarGet(ScriptReadHalfword(ctx));
u32 v3 = VarGet(ScriptReadHalfword(ctx));
- update_saveblock1_field_object_coords(v1, v2, v3);
+ Overworld_SaveMapObjCoords(v1, v2, v3);
return FALSE;
}
@@ -1054,9 +1056,9 @@ bool8 ScrCmd_faceplayer(struct ScriptContext *ctx)
bool8 ScrCmd_spriteface(struct ScriptContext *ctx)
{
- u16 v1 = VarGet(ScriptReadHalfword(ctx));
- u8 v2 = ScriptReadByte(ctx);
- FieldObjectTurnByLocalIdAndMap(v1, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, v2);
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+ u8 direction = ScriptReadByte(ctx);
+ FieldObjectTurnByLocalIdAndMap(localId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, direction);
return FALSE;
}
@@ -1064,7 +1066,7 @@ bool8 ScrCmd_spritebehave(struct ScriptContext *ctx)
{
u16 v1 = VarGet(ScriptReadHalfword(ctx));
u8 v2 = ScriptReadByte(ctx);
- update_saveblock1_field_object_movement_behavior(v1, v2);
+ Overworld_SaveMapObjMovementType(v1, v2);
return FALSE;
}
@@ -1112,7 +1114,7 @@ bool8 ScrCmd_lock(struct ScriptContext *ctx)
{
if (gMapObjects[gSelectedMapObject].active)
{
- sub_8064DD8();
+ LockSelectedMapObject();
SetupNativeScript(ctx, sub_8064DB4);
}
else
@@ -1198,9 +1200,9 @@ bool8 ScrCmd_waitbutton(struct ScriptContext *ctx)
bool8 ScrCmd_yesnobox(struct ScriptContext *ctx)
{
- u8 v1 = ScriptReadByte(ctx);
- u8 v2 = ScriptReadByte(ctx);
- if (yes_no_box(v1, v2) == 1)
+ u8 left = ScriptReadByte(ctx);
+ u8 top = ScriptReadByte(ctx);
+ if (ScriptMenu_YesNo(left, top) == TRUE)
{
ScriptContext1_Stop();
return TRUE;
@@ -1213,11 +1215,11 @@ bool8 ScrCmd_yesnobox(struct ScriptContext *ctx)
bool8 ScrCmd_multichoice(struct ScriptContext *ctx)
{
- u8 v1 = ScriptReadByte(ctx);
- u8 v2 = ScriptReadByte(ctx);
- u8 v3 = ScriptReadByte(ctx);
- u8 v4 = ScriptReadByte(ctx);
- if (sub_80B5054(v1, v2, v3, v4) == 1)
+ u8 left = ScriptReadByte(ctx);
+ u8 top = ScriptReadByte(ctx);
+ u8 multichoiceId = ScriptReadByte(ctx);
+ u8 ignoreBPress = ScriptReadByte(ctx);
+ if (ScriptMenu_Multichoice(left, top, multichoiceId, ignoreBPress) == TRUE)
{
ScriptContext1_Stop();
return TRUE;
@@ -1230,12 +1232,12 @@ bool8 ScrCmd_multichoice(struct ScriptContext *ctx)
bool8 ScrCmd_multichoicedef(struct ScriptContext *ctx)
{
- u8 v1 = ScriptReadByte(ctx);
- u8 v2 = ScriptReadByte(ctx);
- u8 v3 = ScriptReadByte(ctx);
- u8 v4 = ScriptReadByte(ctx);
- u8 v5 = ScriptReadByte(ctx);
- if (sub_80B50B0(v1, v2, v3, v5, v4) == 1)
+ u8 left = ScriptReadByte(ctx);
+ u8 top = ScriptReadByte(ctx);
+ u8 multichoiceId = ScriptReadByte(ctx);
+ u8 defaultChoice = ScriptReadByte(ctx);
+ u8 ignoreBPress = ScriptReadByte(ctx);
+ if (ScriptMenu_MultichoiceWithDefault(left, top, multichoiceId, ignoreBPress, defaultChoice) == TRUE)
{
ScriptContext1_Stop();
return TRUE;
@@ -1248,22 +1250,22 @@ bool8 ScrCmd_multichoicedef(struct ScriptContext *ctx)
bool8 ScrCmd_showbox(struct ScriptContext *ctx)
{
- u8 v1 = ScriptReadByte(ctx);
- u8 v2 = ScriptReadByte(ctx);
- u8 v3 = ScriptReadByte(ctx);
- u8 v4 = ScriptReadByte(ctx);
- MenuDrawTextWindow(v1, v2, v3, v4);
+ u8 left = ScriptReadByte(ctx);
+ u8 top = ScriptReadByte(ctx);
+ u8 right = ScriptReadByte(ctx);
+ u8 bottom = ScriptReadByte(ctx);
+ MenuDrawTextWindow(left, top, right, bottom);
return FALSE;
}
bool8 ScrCmd_multichoicerow(struct ScriptContext *ctx)
{
- u8 v1 = ScriptReadByte(ctx);
- u8 v2 = ScriptReadByte(ctx);
- u8 v3 = ScriptReadByte(ctx);
- u8 v4 = ScriptReadByte(ctx);
- u8 v5 = ScriptReadByte(ctx);
- if (sub_80B5578(v1, v2, v3, v5, v4) == 1)
+ u8 left = ScriptReadByte(ctx);
+ u8 top = ScriptReadByte(ctx);
+ u8 multichoiceId = ScriptReadByte(ctx);
+ u8 numColumns = ScriptReadByte(ctx);
+ u8 ignoreBPress = ScriptReadByte(ctx);
+ if (ScriptMenu_MultichoiceGrid(left, top, multichoiceId, ignoreBPress, numColumns) == TRUE)
{
ScriptContext1_Stop();
return TRUE;
@@ -1276,21 +1278,22 @@ bool8 ScrCmd_multichoicerow(struct ScriptContext *ctx)
bool8 ScrCmd_hidebox(struct ScriptContext *ctx)
{
- u8 v1 = ScriptReadByte(ctx);
- u8 v2 = ScriptReadByte(ctx);
- u8 v3 = ScriptReadByte(ctx);
- u8 v4 = ScriptReadByte(ctx);
- MenuZeroFillWindowRect(v1, v2, v3, v4);
+ u8 left = ScriptReadByte(ctx);
+ u8 top = ScriptReadByte(ctx);
+ u8 right = ScriptReadByte(ctx);
+ u8 bottom = ScriptReadByte(ctx);
+ MenuZeroFillWindowRect(left, top, right, bottom);
return FALSE;
}
+// unused
bool8 ScrCmd_clearbox(struct ScriptContext *ctx)
{
- u8 v1 = ScriptReadByte(ctx);
- u8 v2 = ScriptReadByte(ctx);
- u8 v3 = ScriptReadByte(ctx);
- u8 v4 = ScriptReadByte(ctx);
- if (Multichoice(v1, v2, v3, v4) == 1)
+ u8 left = ScriptReadByte(ctx);
+ u8 top = ScriptReadByte(ctx);
+ u8 multichoiceId = ScriptReadByte(ctx);
+ u8 ignoreBPress = ScriptReadByte(ctx);
+ if (Multichoice(left, top, multichoiceId, ignoreBPress) == TRUE)
{
ScriptContext1_Stop();
return TRUE;
@@ -1303,19 +1306,19 @@ bool8 ScrCmd_clearbox(struct ScriptContext *ctx)
bool8 ScrCmd_showpokepic(struct ScriptContext *ctx)
{
- u16 v1 = VarGet(ScriptReadHalfword(ctx));
- u8 v2 = ScriptReadByte(ctx);
- u8 v3 = ScriptReadByte(ctx);
- sub_80B58C4(v1, v2, v3);
+ u16 species = VarGet(ScriptReadHalfword(ctx));
+ u8 x = ScriptReadByte(ctx);
+ u8 y = ScriptReadByte(ctx);
+ ScriptMenu_ShowPokemonPic(species, x, y);
return FALSE;
}
bool8 ScrCmd_hidepokepic(struct ScriptContext *ctx)
{
- void *func = picbox_close();
- if (!func)
- return FALSE;
+ bool8 (*func)(void) = ScriptMenu_GetPicboxWaitFunc();
+ if (func == NULL)
+ return FALSE;
SetupNativeScript(ctx, func);
return TRUE;
}
@@ -1447,29 +1450,29 @@ bool8 ScrCmd_vbuffer(struct ScriptContext *ctx)
bool8 ScrCmd_givepokemon(struct ScriptContext *ctx)
{
- u16 v3 = VarGet(ScriptReadHalfword(ctx));
- u8 v5 = ScriptReadByte(ctx);
- u16 v7 = VarGet(ScriptReadHalfword(ctx));
- u32 v8 = ScriptReadWord(ctx);
- u32 v9 = ScriptReadWord(ctx);
- u8 v10 = ScriptReadByte(ctx);
- gScriptResult = ScriptGiveMon(v3, v5, v7, v8, v9, v10);
+ u16 species = VarGet(ScriptReadHalfword(ctx));
+ u8 level = ScriptReadByte(ctx);
+ u16 item = VarGet(ScriptReadHalfword(ctx));
+ u32 unkParam1 = ScriptReadWord(ctx);
+ u32 unkParam2 = ScriptReadWord(ctx);
+ u8 unkParam3 = ScriptReadByte(ctx);
+ gScriptResult = ScriptGiveMon(species, level, item, unkParam1, unkParam2, unkParam3);
return FALSE;
}
bool8 ScrCmd_giveegg(struct ScriptContext *ctx)
{
- u16 value = VarGet(ScriptReadHalfword(ctx));
- gScriptResult = ScriptGiveEgg(value);
+ u16 species = VarGet(ScriptReadHalfword(ctx));
+ gScriptResult = ScriptGiveEgg(species);
return FALSE;
}
bool8 ScrCmd_setpokemove(struct ScriptContext *ctx)
{
- u8 v2 = ScriptReadByte(ctx);
- u8 v3 = ScriptReadByte(ctx);
- u16 v4 = ScriptReadHalfword(ctx);
- ScriptSetMonMoveSlot(v2, v4, v3);
+ u8 partyIndex = ScriptReadByte(ctx);
+ u8 slot = ScriptReadByte(ctx);
+ u16 move = ScriptReadHalfword(ctx);
+ ScriptSetMonMoveSlot(partyIndex, move, slot);
return FALSE;
}
@@ -1499,7 +1502,7 @@ bool8 ScrCmd_givemoney(struct ScriptContext *ctx)
u32 amount = ScriptReadWord(ctx);
u8 ignore = ScriptReadByte(ctx);
if (!ignore)
- sub_80B79B8(&gSaveBlock1.money, amount);
+ AddMoney(&gSaveBlock1.money, amount);
return FALSE;
}
@@ -1508,7 +1511,7 @@ bool8 ScrCmd_paymoney(struct ScriptContext *ctx)
u32 amount = ScriptReadWord(ctx);
u8 ignore = ScriptReadByte(ctx);
if (!ignore)
- sub_80B79E0(&gSaveBlock1.money, amount);
+ RemoveMoney(&gSaveBlock1.money, amount);
return FALSE;
}
@@ -1523,19 +1526,19 @@ bool8 ScrCmd_checkmoney(struct ScriptContext *ctx)
bool8 ScrCmd_showmoney(struct ScriptContext *ctx)
{
- u8 v2 = ScriptReadByte(ctx);
- u8 v3 = ScriptReadByte(ctx);
+ u8 x = ScriptReadByte(ctx);
+ u8 y = ScriptReadByte(ctx);
u8 ignore = ScriptReadByte(ctx);
if (!ignore)
- sub_80B7C14(gSaveBlock1.money, v2, v3);
+ OpenMoneyWindow(gSaveBlock1.money, x, y);
return FALSE;
}
bool8 ScrCmd_hidemoney(struct ScriptContext *ctx)
{
- u8 v2 = ScriptReadByte(ctx);
- u8 v3 = ScriptReadByte(ctx);
- RemoveMoneyLabelObject(v2, v3);
+ u8 x = ScriptReadByte(ctx);
+ u8 y = ScriptReadByte(ctx);
+ CloseMoneyWindow(x, y);
return FALSE;
}
@@ -1545,7 +1548,7 @@ bool8 ScrCmd_updatemoney(struct ScriptContext *ctx)
u8 v3 = ScriptReadByte(ctx);
u8 ignore = ScriptReadByte(ctx);
if (!ignore)
- sub_80B7BEC(gSaveBlock1.money, v2, v3);
+ UpdateMoneyWindow(gSaveBlock1.money, v2, v3);
return FALSE;
}
@@ -1575,32 +1578,32 @@ bool8 ScrCmd_updatecoins(struct ScriptContext *ctx)
bool8 ScrCmd_trainerbattle(struct ScriptContext *ctx)
{
- ctx->scriptPtr = TrainerBattleConfigure(ctx->scriptPtr);
+ ctx->scriptPtr = BattleSetup_ConfigureTrainerBattle(ctx->scriptPtr);
return FALSE;
}
bool8 ScrCmd_reptrainerbattle(struct ScriptContext *ctx)
{
- sub_80825E4();
+ BattleSetup_StartTrainerBattle();
return TRUE;
}
bool8 ScrCmd_endtrainerbattle(struct ScriptContext *ctx)
{
- ctx->scriptPtr = sub_80826E8();
+ ctx->scriptPtr = BattleSetup_GetScriptAddrAfterBattle();
return FALSE;
}
bool8 ScrCmd_endtrainerbattle2(struct ScriptContext *ctx)
{
- ctx->scriptPtr = sub_8082700();
+ ctx->scriptPtr = BattleSetup_GetTrainerPostBattleScript();
return FALSE;
}
bool8 ScrCmd_checktrainerflag(struct ScriptContext *ctx)
{
u16 index = VarGet(ScriptReadHalfword(ctx));
- ctx->comparisonResult = trainer_flag_check(index);
+ ctx->comparisonResult = HasTrainerAlreadyBeenFought(index);
return FALSE;
}
@@ -1620,16 +1623,16 @@ bool8 ScrCmd_settrainerflag(struct ScriptContext *ctx)
bool8 ScrCmd_setwildbattle(struct ScriptContext *ctx)
{
- u16 v2 = ScriptReadHalfword(ctx);
- u8 v4 = ScriptReadByte(ctx);
- u16 v5 = ScriptReadHalfword(ctx);
- ScriptWildBattle(v2, v4, v5);
+ u16 species = ScriptReadHalfword(ctx);
+ u8 level = ScriptReadByte(ctx);
+ u16 item = ScriptReadHalfword(ctx);
+ CreateScriptedWildMon(species, level, item);
return FALSE;
}
bool8 ScrCmd_dowildbattle(struct ScriptContext *ctx)
{
- StartBattle_ScriptedWild();
+ BattleSetup_StartScriptedWildBattle();
ScriptContext1_Stop();
return TRUE;
}
@@ -1668,13 +1671,13 @@ bool8 ScrCmd_pokecasino(struct ScriptContext *ctx)
bool8 ScrCmd_event_8a(struct ScriptContext *ctx)
{
- u8 v2 = ScriptReadByte(ctx);
- u8 v3 = ScriptReadByte(ctx);
- u8 v4 = ScriptReadByte(ctx);
- if (!v3)
- PlantBerryTree(v2, 0, v4, FALSE);
+ u8 treeId = ScriptReadByte(ctx);
+ u8 berry = ScriptReadByte(ctx);
+ u8 growthStage = ScriptReadByte(ctx);
+ if (berry == 0)
+ PlantBerryTree(treeId, 0, growthStage, FALSE);
else
- PlantBerryTree(v2, v3, v4, FALSE);
+ PlantBerryTree(treeId, berry, growthStage, FALSE);
return FALSE;
}
@@ -1716,21 +1719,21 @@ bool8 ScrCmd_contestlinktransfer(struct ScriptContext *ctx)
bool8 ScrCmd_doanimation(struct ScriptContext *ctx)
{
u16 effectId = VarGet(ScriptReadHalfword(ctx));
- gUnknown_0202E8BC = effectId;
- FieldEffectStart(gUnknown_0202E8BC);
+ sFieldEffectScriptId = effectId;
+ FieldEffectStart(sFieldEffectScriptId);
return FALSE;
}
bool8 ScrCmd_setanimation(struct ScriptContext *ctx)
{
- u8 v2 = ScriptReadByte(ctx);
- gUnknown_0202FF84[v2] = (s16)VarGet(ScriptReadHalfword(ctx));
+ u8 argNum = ScriptReadByte(ctx);
+ gFieldEffectArguments[argNum] = (s16)VarGet(ScriptReadHalfword(ctx));
return FALSE;
}
static bool8 sub_8067B48()
{
- if (!FieldEffectActiveListContains(gUnknown_0202E8BC))
+ if (!FieldEffectActiveListContains(sFieldEffectScriptId))
return TRUE;
else
return FALSE;
@@ -1738,7 +1741,7 @@ static bool8 sub_8067B48()
bool8 ScrCmd_checkanimation(struct ScriptContext *ctx)
{
- gUnknown_0202E8BC = VarGet(ScriptReadHalfword(ctx));
+ sFieldEffectScriptId = VarGet(ScriptReadHalfword(ctx));
SetupNativeScript(ctx, sub_8067B48);
return TRUE;
}
@@ -1758,9 +1761,9 @@ bool8 ScrCmd_checkgender(struct ScriptContext *ctx)
bool8 ScrCmd_pokecry(struct ScriptContext *ctx)
{
- u16 v3 = VarGet(ScriptReadHalfword(ctx));
- u16 v5 = VarGet(ScriptReadHalfword(ctx));
- PlayCry5(v3, v5);
+ u16 species = VarGet(ScriptReadHalfword(ctx));
+ u16 mode = VarGet(ScriptReadHalfword(ctx));
+ PlayCry5(species, mode);
return FALSE;
}
@@ -1772,16 +1775,16 @@ bool8 ScrCmd_waitpokecry(struct ScriptContext *ctx)
bool8 ScrCmd_setmaptile(struct ScriptContext *ctx)
{
- u16 v3 = VarGet(ScriptReadHalfword(ctx));
- u16 v5 = VarGet(ScriptReadHalfword(ctx));
- u16 v7 = VarGet(ScriptReadHalfword(ctx));
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+ u16 tileId = VarGet(ScriptReadHalfword(ctx));
u16 v8 = VarGet(ScriptReadHalfword(ctx));
- v3 += 7;
- v5 += 7;
+ x += 7;
+ y += 7;
if (!v8)
- MapGridSetMetatileIdAt(v3, v5, v7);
+ MapGridSetMetatileIdAt(x, y, tileId);
else
- MapGridSetMetatileIdAt(v3, v5, v7 | 0xC00);
+ MapGridSetMetatileIdAt(x, y, tileId | 0xC00);
return FALSE;
}
@@ -1791,7 +1794,7 @@ bool8 ScrCmd_setdooropened(struct ScriptContext *ctx)
u16 y = VarGet(ScriptReadHalfword(ctx));
x += 7;
y += 7;
- PlaySE(sub_8058790(x, y));
+ PlaySE(GetDoorSoundEffect(x, y));
FieldAnimateDoorOpen(x, y);
return FALSE;
}
diff --git a/src/script.c b/src/script.c
index 8f12da437..f049b96fc 100644
--- a/src/script.c
+++ b/src/script.c
@@ -40,7 +40,7 @@ u8 SetupBytecodeScript(struct ScriptContext *ctx, const u8 *ptr)
return 1;
}
-void SetupNativeScript(struct ScriptContext *ctx, void *ptr)
+void SetupNativeScript(struct ScriptContext *ctx, bool8 (*ptr)(void))
{
ctx->mode = 2;
ctx->nativePtr = ptr;
@@ -64,7 +64,7 @@ u8 RunScriptCommand(struct ScriptContext *ctx)
case 2:
if (ctx->nativePtr)
{
- if (ctx->nativePtr() == 1)
+ if (ctx->nativePtr() == TRUE)
ctx->mode = 1;
return 1;
}
@@ -228,16 +228,16 @@ void ScriptContext2_RunNewScript(const u8 *ptr)
;
}
-u8 *mapheader_get_tagged_pointer(u8 tag)
+static u8 *mapheader_get_tagged_pointer(u8 tag)
{
u8 *mapScripts = gMapHeader.mapScripts;
- if (!mapScripts)
+ if (mapScripts == NULL)
return NULL;
while (1)
{
- if (!*mapScripts)
+ if (*mapScripts == 0)
return NULL;
if (*mapScripts == tag)
{
@@ -248,14 +248,14 @@ u8 *mapheader_get_tagged_pointer(u8 tag)
}
}
-void mapheader_run_script_by_tag(u8 tag)
+static void mapheader_run_script_by_tag(u8 tag)
{
u8 *ptr = mapheader_get_tagged_pointer(tag);
if (ptr)
ScriptContext2_RunNewScript(ptr);
}
-u8 *mapheader_get_first_match_from_tagged_ptr_list(u8 tag)
+static u8 *mapheader_get_first_match_from_tagged_ptr_list(u8 tag)
{
u8 *ptr = mapheader_get_tagged_pointer(tag);
@@ -316,7 +316,7 @@ void mapheader_run_first_tag4_script_list_match(void)
ScriptContext2_RunNewScript(ptr);
}
-u32 CalculateRamScriptChecksum(void)
+static u32 CalculateRamScriptChecksum(void)
{
u32 i;
u32 sum = 0;
diff --git a/src/script_menu.c b/src/script_menu.c
index f4ac55fb9..e25e74d8c 100644
--- a/src/script_menu.c
+++ b/src/script_menu.c
@@ -1,10 +1,12 @@
#include "global.h"
+#include "script.h"
#include "script_menu.h"
#include "event_data.h"
#include "field_effect.h"
#include "menu.h"
#include "palette.h"
#include "script.h"
+#include "songs.h"
#include "sound.h"
#include "sprite.h"
#include "strings.h"
@@ -13,538 +15,544 @@
// multichoice lists
const struct MenuAction MultichoiceList_00[] =
{
- {(u8 *)OtherText_Petalburg, 0},
- {(u8 *)OtherText_Slateport, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_Petalburg, NULL},
+ {OtherText_Slateport, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_02[] =
{
- {(u8 *)OtherText_Enter, 0},
- {(u8 *)OtherText_Info3, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_Enter, NULL},
+ {OtherText_Info3, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_03[] =
{
- {(u8 *)OtherText_WhatsAContest, 0},
- {(u8 *)OtherText_TypesOfContest, 0},
- {(u8 *)OtherText_Ranks, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_WhatsAContest, NULL},
+ {OtherText_TypesOfContest, NULL},
+ {OtherText_Ranks, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_04[] =
{
- {(u8 *)OtherText_CoolContest, 0},
- {(u8 *)OtherText_BeautyContest, 0},
- {(u8 *)OtherText_CuteContest, 0},
- {(u8 *)OtherText_SmartContest, 0},
- {(u8 *)OtherText_ToughContest, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_CoolContest, NULL},
+ {OtherText_BeautyContest, NULL},
+ {OtherText_CuteContest, NULL},
+ {OtherText_SmartContest, NULL},
+ {OtherText_ToughContest, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_06[] =
{
- {(u8 *)OtherText_Decoration, 0},
- {(u8 *)OtherText_PackUp, 0},
- {(u8 *)OtherText_Registry, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_Decoration, NULL},
+ {OtherText_PackUp, NULL},
+ {OtherText_Registry, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_05[] =
{
- {(u8 *)OtherText_Decoration, 0},
- {(u8 *)OtherText_PackUp, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_Decoration, NULL},
+ {OtherText_PackUp, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_07[] =
{
- {(u8 *)OtherText_Register, 0},
- {(u8 *)OtherText_Registry, 0},
- {(u8 *)OtherText_Information, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_Register, NULL},
+ {OtherText_Registry, NULL},
+ {OtherText_Information, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_12[] =
{
- {(u8 *)OtherText_Mach, 0},
- {(u8 *)OtherText_Acro, 0},
+ {OtherText_Mach, NULL},
+ {OtherText_Acro, NULL},
};
const struct MenuAction MultichoiceList_13[] =
{
- {(u8 *)OtherText_Poison, 0},
- {(u8 *)OtherText_Paralysis, 0},
- {(u8 *)OtherText_Sleep, 0},
- {(u8 *)OtherText_Burn, 0},
- {(u8 *)OtherText_Frozen, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_Poison, NULL},
+ {OtherText_Paralysis, NULL},
+ {OtherText_Sleep, NULL},
+ {OtherText_Burn, NULL},
+ {OtherText_Frozen, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_14[] =
{
- {(u8 *)OtherText_Dewford, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_Dewford, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_16[] =
{
- {(u8 *)OtherText_SawIt, 0},
- {(u8 *)OtherText_NotYet, 0},
+ {OtherText_SawIt, NULL},
+ {OtherText_NotYet, NULL},
};
const struct MenuAction MultichoiceList_17[] =
{
- {(u8 *)OtherText_Yes, 0},
- {(u8 *)OtherText_No, 0},
- {(u8 *)OtherText_Info3, 0},
+ {OtherText_Yes, NULL},
+ {OtherText_No, NULL},
+ {OtherText_Info3, NULL},
};
const struct MenuAction MultichoiceList_18[] =
{
- {(u8 *)OtherText_SingleBattle, 0},
- {(u8 *)OtherText_DoubleBattle, 0},
- {(u8 *)OtherText_MultiBattle, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_SingleBattle, NULL},
+ {OtherText_DoubleBattle, NULL},
+ {OtherText_MultiBattle, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_19[] =
{
- {(u8 *)OtherText_Littleroot, 0},
- {(u8 *)OtherText_Slateport, 0},
- {(u8 *)OtherText_Lilycove, 0},
+ {OtherText_Littleroot, NULL},
+ {OtherText_Slateport, NULL},
+ {OtherText_Lilycove, NULL},
};
const struct MenuAction MultichoiceList_20[] =
{
- {(u8 *)OtherText_Yes, 0},
- {(u8 *)OtherText_No, 0},
- {(u8 *)OtherText_Info3, 0},
+ {OtherText_Yes, NULL},
+ {OtherText_No, NULL},
+ {OtherText_Info3, NULL},
};
const struct MenuAction MultichoiceList_23[] =
{
- {(u8 *)OtherText_MakeAChallenge, 0},
- {(u8 *)OtherText_ObtainInformation, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_MakeAChallenge, NULL},
+ {OtherText_ObtainInformation, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_24[] =
{
- {(u8 *)OtherText_Lv50_2, 0},
- {(u8 *)OtherText_Lv100_2, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_Lv50_2, NULL},
+ {OtherText_Lv100_2, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_25[] =
{
- {(u8 *)OtherText_Zigzagoon, 0},
- {(u8 *)OtherText_Nincada, 0},
- {(u8 *)OtherText_Poochyena, 0},
+ {OtherText_Zigzagoon, NULL},
+ {OtherText_Nincada, NULL},
+ {OtherText_Poochyena, NULL},
};
const struct MenuAction MultichoiceList_26[] =
{
- {(u8 *)OtherText_Nincada2, 0},
- {(u8 *)OtherText_Lotad, 0},
- {(u8 *)OtherText_Roselia, 0},
+ {OtherText_Nincada2, NULL},
+ {OtherText_Lotad, NULL},
+ {OtherText_Roselia, NULL},
};
const struct MenuAction MultichoiceList_27[] =
{
- {(u8 *)OtherText_Shroomish, 0},
- {(u8 *)OtherText_Nincada3, 0},
- {(u8 *)OtherText_Surskit, 0},
+ {OtherText_Shroomish, NULL},
+ {OtherText_Nincada3, NULL},
+ {OtherText_Surskit, NULL},
};
const struct MenuAction MultichoiceList_28[] =
{
- {(u8 *)OtherText_Treecko, 0},
- {(u8 *)OtherText_Torchic, 0},
- {(u8 *)OtherText_Mudkip, 0},
+ {OtherText_Treecko, NULL},
+ {OtherText_Torchic, NULL},
+ {OtherText_Mudkip, NULL},
};
const struct MenuAction MultichoiceList_29[] =
{
- {(u8 *)OtherText_Seedot, 0},
- {(u8 *)OtherText_Shroomish2, 0},
- {(u8 *)OtherText_Spinda, 0},
+ {OtherText_Seedot, NULL},
+ {OtherText_Shroomish2, NULL},
+ {OtherText_Spinda, NULL},
};
const struct MenuAction MultichoiceList_30[] =
{
- {(u8 *)OtherText_Shroomish3, 0},
- {(u8 *)OtherText_Zigzagoon2, 0},
- {(u8 *)OtherText_Wurmple, 0},
+ {OtherText_Shroomish3, NULL},
+ {OtherText_Zigzagoon2, NULL},
+ {OtherText_Wurmple, NULL},
};
const struct MenuAction MultichoiceList_31[] =
{
- {(u8 *)OtherText_PokeBall, 0},
- {(u8 *)OtherText_SuperPotion, 0},
- {(u8 *)OtherText_SamePrice, 0},
+ {OtherText_PokeBall, NULL},
+ {OtherText_SuperPotion, NULL},
+ {OtherText_SamePrice, NULL},
};
const struct MenuAction MultichoiceList_32[] =
{
- {(u8 *)OtherText_Yen135, 0},
- {(u8 *)OtherText_Yen155, 0},
- {(u8 *)OtherText_Yen175, 0},
+ {OtherText_Yen135, NULL},
+ {OtherText_Yen155, NULL},
+ {OtherText_Yen175, NULL},
};
const struct MenuAction MultichoiceList_33[] =
{
- {(u8 *)OtherText_CostMore, 0},
- {(u8 *)OtherText_CostLess, 0},
- {(u8 *)OtherText_SamePrice2, 0},
+ {OtherText_CostMore, NULL},
+ {OtherText_CostLess, NULL},
+ {OtherText_SamePrice2, NULL},
};
const struct MenuAction MultichoiceList_34[] =
{
- {(u8 *)OtherText_MaleSymbol, 0},
- {(u8 *)OtherText_FemaleSymbol, 0},
- {(u8 *)OtherText_Neither, 0},
+ {OtherText_MaleSymbol, NULL},
+ {OtherText_FemaleSymbol, NULL},
+ {OtherText_Neither, NULL},
};
const struct MenuAction MultichoiceList_35[] =
{
- {(u8 *)OtherText_Males, 0},
- {(u8 *)OtherText_Females, 0},
- {(u8 *)OtherText_SameNumber, 0},
+ {OtherText_Males, NULL},
+ {OtherText_Females, NULL},
+ {OtherText_SameNumber, NULL},
};
const struct MenuAction MultichoiceList_36[] =
{
- {(u8 *)OtherText_Male, 0},
- {(u8 *)OtherText_Female, 0},
- {(u8 *)OtherText_ItDepends, 0},
+ {OtherText_Male, NULL},
+ {OtherText_Female, NULL},
+ {OtherText_ItDepends, NULL},
};
const struct MenuAction MultichoiceList_37[] =
{
- {(u8 *)OtherText_Six2, 0},
- {(u8 *)OtherText_Eight2, 0},
- {(u8 *)OtherText_Ten, 0},
+ {OtherText_Six2, NULL},
+ {OtherText_Eight2, NULL},
+ {OtherText_Ten, NULL},
};
const struct MenuAction MultichoiceList_38[] =
{
- {(u8 *)OtherText_One, 0},
- {(u8 *)OtherText_Two, 0},
- {(u8 *)OtherText_Three, 0},
+ {OtherText_One, NULL},
+ {OtherText_Two, NULL},
+ {OtherText_Three, NULL},
};
const struct MenuAction MultichoiceList_39[] =
{
- {(u8 *)OtherText_Six, 0},
- {(u8 *)OtherText_Seven, 0},
- {(u8 *)OtherText_Eight, 0},
+ {OtherText_Six, NULL},
+ {OtherText_Seven, NULL},
+ {OtherText_Eight, NULL},
};
const struct MenuAction MultichoiceList_42[] =
{
- {(u8 *)OtherText_FreshWater, 0},
- {(u8 *)OtherText_SodaPop, 0},
- {(u8 *)OtherText_Lemonade, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_FreshWater, NULL},
+ {OtherText_SodaPop, NULL},
+ {OtherText_Lemonade, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_43[] =
{
- {(u8 *)OtherText_HowToRide, 0},
- {(u8 *)OtherText_HowToTurn, 0},
- {(u8 *)OtherText_SandySlopes, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_HowToRide, NULL},
+ {OtherText_HowToTurn, NULL},
+ {OtherText_SandySlopes, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_44[] =
{
- {(u8 *)OtherText_Wheelies, 0},
- {(u8 *)OtherText_BunnyHops, 0},
- {(u8 *)OtherText_Jumping, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_Wheelies, NULL},
+ {OtherText_BunnyHops, NULL},
+ {OtherText_Jumping, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_45[] =
{
- {(u8 *)OtherText_Satisfied, 0},
- {(u8 *)OtherText_Dissatisfied, 0},
+ {OtherText_Satisfied, NULL},
+ {OtherText_Dissatisfied, NULL},
};
const struct MenuAction MultichoiceList_46[] =
{
- {(u8 *)OtherText_Deepseatooth, 0},
- {(u8 *)OtherText_Deepseascale, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_Deepseatooth, NULL},
+ {OtherText_Deepseascale, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_47[] =
{
- {(u8 *)OtherText_BlueFlute2, 0},
- {(u8 *)OtherText_YellowFlute2, 0},
- {(u8 *)OtherText_RedFlute2, 0},
- {(u8 *)OtherText_WhiteFlute2, 0},
- {(u8 *)OtherText_BlackFlute2, 0},
- {(u8 *)OtherText_GlassChair, 0},
- {(u8 *)OtherText_GlassDesk, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_BlueFlute2, NULL},
+ {OtherText_YellowFlute2, NULL},
+ {OtherText_RedFlute2, NULL},
+ {OtherText_WhiteFlute2, NULL},
+ {OtherText_BlackFlute2, NULL},
+ {OtherText_GlassChair, NULL},
+ {OtherText_GlassDesk, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_48[] =
{
- {(u8 *)OtherText_TreeckoDoll, 0},
- {(u8 *)OtherText_TorchicDoll, 0},
- {(u8 *)OtherText_MudkipDoll, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_TreeckoDoll, NULL},
+ {OtherText_TorchicDoll, NULL},
+ {OtherText_MudkipDoll, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_55[] =
{
- {(u8 *)OtherText_TM32, 0},
- {(u8 *)OtherText_TM29, 0},
- {(u8 *)OtherText_TM35, 0},
- {(u8 *)OtherText_TM24, 0},
- {(u8 *)OtherText_TM13, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_TM32, NULL},
+ {OtherText_TM29, NULL},
+ {OtherText_TM35, NULL},
+ {OtherText_TM24, NULL},
+ {OtherText_TM13, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_49[] =
{
- {(u8 *)OtherText_50Coins, 0},
- {(u8 *)OtherText_500Coins, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_50Coins, NULL},
+ {OtherText_500Coins, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_50[] =
{
- {(u8 *)OtherText_Excellent, 0},
- {(u8 *)OtherText_NotSoHot, 0},
+ {OtherText_Excellent, NULL},
+ {OtherText_NotSoHot, NULL},
};
const struct MenuAction MultichoiceList_52[] =
{
- {(u8 *)OtherText_Lilycove, 0},
- {(u8 *)OtherText_BattleTower, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_Lilycove, NULL},
+ {OtherText_BattleTower, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_53[] =
{
- {(u8 *)OtherText_Slateport, 0},
- {(u8 *)OtherText_Lilycove, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_Slateport, NULL},
+ {OtherText_Lilycove, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_54[] =
{
- {(u8 *)OtherText_Right, 0},
- {(u8 *)OtherText_Left, 0},
+ {OtherText_Right, NULL},
+ {OtherText_Left, NULL},
};
const struct MenuAction MultichoiceList_56[] =
{
- {(u8 *)OtherText_Slateport, 0},
- {(u8 *)OtherText_BattleTower, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_Slateport, NULL},
+ {OtherText_BattleTower, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_57[] =
{
- {(u8 *)OtherText_1F_2, 0},
- {(u8 *)OtherText_2F_2, 0},
- {(u8 *)OtherText_3F_2, 0},
- {(u8 *)OtherText_4F_2, 0},
- {(u8 *)OtherText_5F_2, 0},
+ {OtherText_1F_2, NULL},
+ {OtherText_2F_2, NULL},
+ {OtherText_3F_2, NULL},
+ {OtherText_4F_2, NULL},
+ {OtherText_5F_2, NULL},
};
const struct MenuAction MultichoiceList_58[] =
{
- {(u8 *)OtherText_RedShard, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_RedShard, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_59[] =
{
- {(u8 *)OtherText_YellowShard, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_YellowShard, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_60[] =
{
- {(u8 *)OtherText_RedShard, 0},
- {(u8 *)OtherText_YellowShard, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_RedShard, NULL},
+ {OtherText_YellowShard, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_61[] =
{
- {(u8 *)OtherText_BlueShard, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_BlueShard, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_62[] =
{
- {(u8 *)OtherText_RedShard, 0},
- {(u8 *)OtherText_BlueShard, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_RedShard, NULL},
+ {OtherText_BlueShard, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_63[] =
{
- {(u8 *)OtherText_YellowShard, 0},
- {(u8 *)OtherText_BlueShard, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_YellowShard, NULL},
+ {OtherText_BlueShard, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_64[] =
{
- {(u8 *)OtherText_RedShard, 0},
- {(u8 *)OtherText_YellowShard, 0},
- {(u8 *)OtherText_BlueShard, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_RedShard, NULL},
+ {OtherText_YellowShard, NULL},
+ {OtherText_BlueShard, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_65[] =
{
- {(u8 *)OtherText_GreenShard, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_GreenShard, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_66[] =
{
- {(u8 *)OtherText_RedShard, 0},
- {(u8 *)OtherText_GreenShard, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_RedShard, NULL},
+ {OtherText_GreenShard, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_67[] =
{
- {(u8 *)OtherText_YellowShard, 0},
- {(u8 *)OtherText_GreenShard, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_YellowShard, NULL},
+ {OtherText_GreenShard, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_68[] =
{
- {(u8 *)OtherText_RedShard, 0},
- {(u8 *)OtherText_YellowShard, 0},
- {(u8 *)OtherText_GreenShard, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_RedShard, NULL},
+ {OtherText_YellowShard, NULL},
+ {OtherText_GreenShard, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_69[] =
{
- {(u8 *)OtherText_BlueShard, 0},
- {(u8 *)OtherText_GreenShard, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_BlueShard, NULL},
+ {OtherText_GreenShard, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_70[] =
{
- {(u8 *)OtherText_RedShard, 0},
- {(u8 *)OtherText_BlueShard, 0},
- {(u8 *)OtherText_GreenShard, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_RedShard, NULL},
+ {OtherText_BlueShard, NULL},
+ {OtherText_GreenShard, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_71[] =
{
- {(u8 *)OtherText_YellowShard, 0},
- {(u8 *)OtherText_BlueShard, 0},
- {(u8 *)OtherText_GreenShard, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_YellowShard, NULL},
+ {OtherText_BlueShard, NULL},
+ {OtherText_GreenShard, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_72[] =
{
- {(u8 *)OtherText_RedShard, 0},
- {(u8 *)OtherText_YellowShard, 0},
- {(u8 *)OtherText_BlueShard, 0},
- {(u8 *)OtherText_GreenShard, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {OtherText_RedShard, NULL},
+ {OtherText_YellowShard, NULL},
+ {OtherText_BlueShard, NULL},
+ {OtherText_GreenShard, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
};
const struct MenuAction MultichoiceList_01[] =
{
- {(u8 *)gOtherText_CancelNoTerminator, 0},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+struct MultichoiceListStruct
+{
+ const struct MenuAction *list;
+ u8 count;
};
const struct MultichoiceListStruct gMultichoiceLists[] =
{
- {(struct MenuAction *)MultichoiceList_00, 3},
- {(struct MenuAction *)MultichoiceList_01, 1},
- {(struct MenuAction *)MultichoiceList_02, 3},
- {(struct MenuAction *)MultichoiceList_03, 4},
- {(struct MenuAction *)MultichoiceList_04, 6},
- {(struct MenuAction *)MultichoiceList_05, 3},
- {(struct MenuAction *)MultichoiceList_06, 4},
- {(struct MenuAction *)MultichoiceList_07, 4},
- {(struct MenuAction *)MultichoiceList_01, 1},
- {(struct MenuAction *)MultichoiceList_01, 1},
- {(struct MenuAction *)MultichoiceList_01, 1},
- {(struct MenuAction *)MultichoiceList_01, 1},
- {(struct MenuAction *)MultichoiceList_12, 2},
- {(struct MenuAction *)MultichoiceList_13, 6},
- {(struct MenuAction *)MultichoiceList_14, 2},
- {(struct MenuAction *)MultichoiceList_01, 1},
- {(struct MenuAction *)MultichoiceList_16, 2},
- {(struct MenuAction *)MultichoiceList_17, 3},
- {(struct MenuAction *)MultichoiceList_18, 4},
- {(struct MenuAction *)MultichoiceList_19, 3},
- {(struct MenuAction *)MultichoiceList_20, 3},
- {(struct MenuAction *)MultichoiceList_01, 1},
- {(struct MenuAction *)MultichoiceList_01, 1},
- {(struct MenuAction *)MultichoiceList_23, 3},
- {(struct MenuAction *)MultichoiceList_24, 3},
- {(struct MenuAction *)MultichoiceList_25, 3},
- {(struct MenuAction *)MultichoiceList_26, 3},
- {(struct MenuAction *)MultichoiceList_27, 3},
- {(struct MenuAction *)MultichoiceList_28, 3},
- {(struct MenuAction *)MultichoiceList_29, 3},
- {(struct MenuAction *)MultichoiceList_30, 3},
- {(struct MenuAction *)MultichoiceList_31, 3},
- {(struct MenuAction *)MultichoiceList_32, 3},
- {(struct MenuAction *)MultichoiceList_33, 3},
- {(struct MenuAction *)MultichoiceList_34, 3},
- {(struct MenuAction *)MultichoiceList_35, 3},
- {(struct MenuAction *)MultichoiceList_36, 3},
- {(struct MenuAction *)MultichoiceList_37, 3},
- {(struct MenuAction *)MultichoiceList_38, 3},
- {(struct MenuAction *)MultichoiceList_39, 3},
- {(struct MenuAction *)MultichoiceList_01, 1},
- {(struct MenuAction *)MultichoiceList_01, 1},
- {(struct MenuAction *)MultichoiceList_42, 4},
- {(struct MenuAction *)MultichoiceList_43, 4},
- {(struct MenuAction *)MultichoiceList_44, 4},
- {(struct MenuAction *)MultichoiceList_45, 2},
- {(struct MenuAction *)MultichoiceList_46, 3},
- {(struct MenuAction *)MultichoiceList_47, 8},
- {(struct MenuAction *)MultichoiceList_48, 4},
- {(struct MenuAction *)MultichoiceList_49, 3},
- {(struct MenuAction *)MultichoiceList_50, 2},
- {(struct MenuAction *)MultichoiceList_01, 1},
- {(struct MenuAction *)MultichoiceList_52, 3},
- {(struct MenuAction *)MultichoiceList_53, 3},
- {(struct MenuAction *)MultichoiceList_54, 2},
- {(struct MenuAction *)MultichoiceList_55, 6},
- {(struct MenuAction *)MultichoiceList_56, 3},
- {(struct MenuAction *)MultichoiceList_57, 5},
- {(struct MenuAction *)MultichoiceList_58, 2},
- {(struct MenuAction *)MultichoiceList_59, 2},
- {(struct MenuAction *)MultichoiceList_60, 3},
- {(struct MenuAction *)MultichoiceList_61, 2},
- {(struct MenuAction *)MultichoiceList_62, 3},
- {(struct MenuAction *)MultichoiceList_63, 3},
- {(struct MenuAction *)MultichoiceList_64, 4},
- {(struct MenuAction *)MultichoiceList_65, 2},
- {(struct MenuAction *)MultichoiceList_66, 3},
- {(struct MenuAction *)MultichoiceList_67, 3},
- {(struct MenuAction *)MultichoiceList_68, 4},
- {(struct MenuAction *)MultichoiceList_69, 3},
- {(struct MenuAction *)MultichoiceList_70, 4},
- {(struct MenuAction *)MultichoiceList_71, 4},
- {(struct MenuAction *)MultichoiceList_72, 5}
+ {MultichoiceList_00, ARRAY_COUNT(MultichoiceList_00)},
+ {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)},
+ {MultichoiceList_02, ARRAY_COUNT(MultichoiceList_02)},
+ {MultichoiceList_03, ARRAY_COUNT(MultichoiceList_03)},
+ {MultichoiceList_04, ARRAY_COUNT(MultichoiceList_04)},
+ {MultichoiceList_05, ARRAY_COUNT(MultichoiceList_05)},
+ {MultichoiceList_06, ARRAY_COUNT(MultichoiceList_06)},
+ {MultichoiceList_07, ARRAY_COUNT(MultichoiceList_07)},
+ {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)},
+ {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)},
+ {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)},
+ {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)},
+ {MultichoiceList_12, ARRAY_COUNT(MultichoiceList_12)},
+ {MultichoiceList_13, ARRAY_COUNT(MultichoiceList_13)},
+ {MultichoiceList_14, ARRAY_COUNT(MultichoiceList_14)},
+ {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)},
+ {MultichoiceList_16, ARRAY_COUNT(MultichoiceList_16)},
+ {MultichoiceList_17, ARRAY_COUNT(MultichoiceList_17)},
+ {MultichoiceList_18, ARRAY_COUNT(MultichoiceList_18)},
+ {MultichoiceList_19, ARRAY_COUNT(MultichoiceList_19)},
+ {MultichoiceList_20, ARRAY_COUNT(MultichoiceList_20)},
+ {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)},
+ {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)},
+ {MultichoiceList_23, ARRAY_COUNT(MultichoiceList_23)},
+ {MultichoiceList_24, ARRAY_COUNT(MultichoiceList_24)},
+ {MultichoiceList_25, ARRAY_COUNT(MultichoiceList_25)},
+ {MultichoiceList_26, ARRAY_COUNT(MultichoiceList_26)},
+ {MultichoiceList_27, ARRAY_COUNT(MultichoiceList_27)},
+ {MultichoiceList_28, ARRAY_COUNT(MultichoiceList_28)},
+ {MultichoiceList_29, ARRAY_COUNT(MultichoiceList_29)},
+ {MultichoiceList_30, ARRAY_COUNT(MultichoiceList_30)},
+ {MultichoiceList_31, ARRAY_COUNT(MultichoiceList_31)},
+ {MultichoiceList_32, ARRAY_COUNT(MultichoiceList_32)},
+ {MultichoiceList_33, ARRAY_COUNT(MultichoiceList_33)},
+ {MultichoiceList_34, ARRAY_COUNT(MultichoiceList_34)},
+ {MultichoiceList_35, ARRAY_COUNT(MultichoiceList_35)},
+ {MultichoiceList_36, ARRAY_COUNT(MultichoiceList_36)},
+ {MultichoiceList_37, ARRAY_COUNT(MultichoiceList_37)},
+ {MultichoiceList_38, ARRAY_COUNT(MultichoiceList_38)},
+ {MultichoiceList_39, ARRAY_COUNT(MultichoiceList_39)},
+ {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)},
+ {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)},
+ {MultichoiceList_42, ARRAY_COUNT(MultichoiceList_42)},
+ {MultichoiceList_43, ARRAY_COUNT(MultichoiceList_43)},
+ {MultichoiceList_44, ARRAY_COUNT(MultichoiceList_44)},
+ {MultichoiceList_45, ARRAY_COUNT(MultichoiceList_45)},
+ {MultichoiceList_46, ARRAY_COUNT(MultichoiceList_46)},
+ {MultichoiceList_47, ARRAY_COUNT(MultichoiceList_47)},
+ {MultichoiceList_48, ARRAY_COUNT(MultichoiceList_48)},
+ {MultichoiceList_49, ARRAY_COUNT(MultichoiceList_49)},
+ {MultichoiceList_50, ARRAY_COUNT(MultichoiceList_50)},
+ {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)},
+ {MultichoiceList_52, ARRAY_COUNT(MultichoiceList_52)},
+ {MultichoiceList_53, ARRAY_COUNT(MultichoiceList_53)},
+ {MultichoiceList_54, ARRAY_COUNT(MultichoiceList_54)},
+ {MultichoiceList_55, ARRAY_COUNT(MultichoiceList_55)},
+ {MultichoiceList_56, ARRAY_COUNT(MultichoiceList_56)},
+ {MultichoiceList_57, ARRAY_COUNT(MultichoiceList_57)},
+ {MultichoiceList_58, ARRAY_COUNT(MultichoiceList_58)},
+ {MultichoiceList_59, ARRAY_COUNT(MultichoiceList_59)},
+ {MultichoiceList_60, ARRAY_COUNT(MultichoiceList_60)},
+ {MultichoiceList_61, ARRAY_COUNT(MultichoiceList_61)},
+ {MultichoiceList_62, ARRAY_COUNT(MultichoiceList_62)},
+ {MultichoiceList_63, ARRAY_COUNT(MultichoiceList_63)},
+ {MultichoiceList_64, ARRAY_COUNT(MultichoiceList_64)},
+ {MultichoiceList_65, ARRAY_COUNT(MultichoiceList_65)},
+ {MultichoiceList_66, ARRAY_COUNT(MultichoiceList_66)},
+ {MultichoiceList_67, ARRAY_COUNT(MultichoiceList_67)},
+ {MultichoiceList_68, ARRAY_COUNT(MultichoiceList_68)},
+ {MultichoiceList_69, ARRAY_COUNT(MultichoiceList_69)},
+ {MultichoiceList_70, ARRAY_COUNT(MultichoiceList_70)},
+ {MultichoiceList_71, ARRAY_COUNT(MultichoiceList_71)},
+ {MultichoiceList_72, ARRAY_COUNT(MultichoiceList_72)},
};
const u8 *const gUnknown_083CE048[] =
@@ -574,37 +582,50 @@ extern u8 gPCText_WhichPCShouldBeAccessed[];
extern u16 gScriptResult;
-bool8 sub_80B5054(u8 left, u8 top, u8 var3, u8 var4)
+static void Task_HandleMultichoiceInput(u8);
+static void Task_HandleYesNoInput(u8);
+static void Task_HandleMultichoiceGridInput(u8);
+static u16 GetStringWidthInTilesForScriptMenu(const u8 *str);
+static void DrawMultichoiceMenu(u8, u8, u8, const struct MenuAction *list, u8, u8);
+static void StartScriptMenuTask(u8, u8, u8, u8, u8, u8);
+static void sub_80B53B4(u8, u8, u8, const struct MenuAction *list, u8);
+static bool8 IsPicboxClosed(void);
+
+bool8 ScriptMenu_Multichoice(u8 left, u8 top, u8 multichoiceId, u8 ignoreBPress)
{
- if (FuncIsActiveTask(sub_80B52B4) == 1)
+ if (FuncIsActiveTask(Task_HandleMultichoiceInput) == TRUE)
+ {
return FALSE;
+ }
else
{
gScriptResult = 0xFF;
- DrawMultichoiceMenu(left, top, gMultichoiceLists[var3].count, gMultichoiceLists[var3].list, var4, 0);
+ DrawMultichoiceMenu(left, top, gMultichoiceLists[multichoiceId].count, gMultichoiceLists[multichoiceId].list, ignoreBPress, 0);
return TRUE;
}
}
-bool8 sub_80B50B0(u8 left, u8 top, u8 var3, u8 var4, u8 var5)
+bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 multichoiceId, u8 ignoreBPress, u8 defaultChoice)
{
- if (FuncIsActiveTask(sub_80B52B4) == 1)
+ if (FuncIsActiveTask(Task_HandleMultichoiceInput) == TRUE)
+ {
return FALSE;
+ }
else
{
gScriptResult = 0xFF;
- DrawMultichoiceMenu(left, top, gMultichoiceLists[var3].count, gMultichoiceLists[var3].list, var4, var5);
+ DrawMultichoiceMenu(left, top, gMultichoiceLists[multichoiceId].count, gMultichoiceLists[multichoiceId].list, ignoreBPress, defaultChoice);
return TRUE;
}
}
-u16 GetStringWidthInTilesForScriptMenu(const u8 *str)
+static u16 GetStringWidthInTilesForScriptMenu(const u8 *str)
{
// each tile on screen is 8x8, so it needs the number of tiles and not pixels, hence the division by 8.
return (GetStringWidthGivenWindowConfig((struct WindowConfig *)&gWindowConfig_81E6CE4, str) + 7) / 8;
}
-void DrawMultichoiceMenu(u8 left, u8 top, u8 count, struct MenuAction *list, u8 var4, u8 cursorPos)
+static void DrawMultichoiceMenu(u8 left, u8 top, u8 count, const struct MenuAction *list, u8 ignoreBPress, u8 cursorPos)
{
u16 width = GetStringWidthInTilesForScriptMenu(list[0].text);
u16 newWidth;
@@ -633,75 +654,79 @@ void DrawMultichoiceMenu(u8 left, u8 top, u8 count, struct MenuAction *list, u8
MenuDrawTextWindow(left, top, right, bottom);
PrintMenuItems(left + 1, top + 1, count, list);
InitMenu(0, left + 1, top + 1, count, cursorPos, right - left - 1);
- sub_80B5230(left, top, right, bottom, var4, count);
+ StartScriptMenuTask(left, top, right, bottom, ignoreBPress, count);
}
-void sub_80B5230(u8 left, u8 top, u8 right, u8 bottom, u8 unkVar, u8 count)
+#define tLeft data[0]
+#define tTop data[1]
+#define tRight data[2]
+#define tBottom data[3]
+#define tIgnoreBPress data[4]
+#define tDoWrap data[5]
+
+static void StartScriptMenuTask(u8 left, u8 top, u8 right, u8 bottom, u8 ignoreBPress, u8 count)
{
- u8 taskId = CreateTask(sub_80B52B4, 80);
+ u8 taskId = CreateTask(Task_HandleMultichoiceInput, 80);
- gTasks[taskId].data[0] = left;
- gTasks[taskId].data[1] = top;
- gTasks[taskId].data[2] = right;
- gTasks[taskId].data[3] = bottom;
- gTasks[taskId].data[4] = unkVar;
+ gTasks[taskId].tLeft = left;
+ gTasks[taskId].tTop = top;
+ gTasks[taskId].tRight = right;
+ gTasks[taskId].tBottom = bottom;
+ gTasks[taskId].tIgnoreBPress = ignoreBPress;
if (count > 3)
- gTasks[taskId].data[5] = TRUE;
+ gTasks[taskId].tDoWrap = TRUE;
else
- gTasks[taskId].data[5] = FALSE;
+ gTasks[taskId].tDoWrap = FALSE;
}
-void sub_80B52B4(u8 taskId)
+static void Task_HandleMultichoiceInput(u8 taskId)
{
- s8 var;
+ s8 selection;
if (!gPaletteFade.active)
{
- if (!gTasks[taskId].data[5])
- var = ProcessMenuInputNoWrap();
+ if (!gTasks[taskId].tDoWrap)
+ selection = ProcessMenuInputNoWrap();
else
- var = ProcessMenuInput();
+ selection = ProcessMenuInput();
- if (var != -2)
+ if (selection != -2)
{
- if (var == -1)
+ if (selection == -1)
{
- if (!gTasks[taskId].data[4])
- {
- PlaySE(5);
- gScriptResult = 127;
- }
- else
- {
+ if (gTasks[taskId].tIgnoreBPress)
return;
- }
+ PlaySE(SE_SELECT);
+ gScriptResult = 127;
}
else
{
- gScriptResult = var;
+ gScriptResult = selection;
}
HandleDestroyMenuCursors();
- MenuZeroFillWindowRect(gTasks[taskId].data[0], gTasks[taskId].data[1], gTasks[taskId].data[2], gTasks[taskId].data[3]);
+ MenuZeroFillWindowRect(gTasks[taskId].tLeft, gTasks[taskId].tTop, gTasks[taskId].tRight, gTasks[taskId].tBottom);
DestroyTask(taskId);
EnableBothScriptContexts();
}
}
}
-bool8 Multichoice(u8 var1, u8 var2, u8 var3, u8 var4)
+bool8 Multichoice(u8 left, u8 top, u8 multichoiceId, u8 ignoreBPress)
{
- if (FuncIsActiveTask(sub_80B52B4) == 1)
+ if (FuncIsActiveTask(Task_HandleMultichoiceInput) == TRUE)
+ {
return FALSE;
+ }
else
{
gScriptResult = 0xFF;
- sub_80B53B4(var1, var2, gMultichoiceLists[var3].count, gMultichoiceLists[var3].list, var4);
+ sub_80B53B4(left, top, gMultichoiceLists[multichoiceId].count, gMultichoiceLists[multichoiceId].list, ignoreBPress);
return TRUE;
}
}
-void sub_80B53B4(u8 left, u8 top, u8 count, struct MenuAction *list, u8 var4)
+static void sub_80B53B4(u8 left, u8 top, u8 count, const struct MenuAction *list, u8 ignoreBPress)
{
u16 width = GetStringWidthInTilesForScriptMenu(list[0].text);
u16 newWidth;
@@ -722,22 +747,24 @@ void sub_80B53B4(u8 left, u8 top, u8 count, struct MenuAction *list, u8 var4)
PrintMenuItems(left, top, count, list);
InitMenu(0, left, top, count, 0, right - left - 1);
- sub_80B5230(left, top, right, bottom, var4, count);
+ StartScriptMenuTask(left, top, right, bottom, ignoreBPress, count);
}
-bool8 yes_no_box(u8 var1, u8 var2)
+bool8 ScriptMenu_YesNo(u8 left, u8 top)
{
u8 taskId;
- if (FuncIsActiveTask(task_yes_no_maybe) == 1)
+ if (FuncIsActiveTask(Task_HandleYesNoInput) == TRUE)
+ {
return FALSE;
+ }
else
{
gScriptResult = 0xFF;
- DisplayYesNoMenu(var1, var2, 1);
- taskId = CreateTask(task_yes_no_maybe, 0x50);
- gTasks[taskId].data[0] = var1;
- gTasks[taskId].data[1] = var2;
+ DisplayYesNoMenu(left, top, 1);
+ taskId = CreateTask(Task_HandleYesNoInput, 0x50);
+ gTasks[taskId].tLeft = left;
+ gTasks[taskId].tTop = top;
return TRUE;
}
}
@@ -751,13 +778,13 @@ bool8 IsScriptActive(void)
return TRUE;
}
-void task_yes_no_maybe(u8 taskId)
+static void Task_HandleYesNoInput(u8 taskId)
{
u8 left, top;
- if (gTasks[taskId].data[2] < 5)
+ if (gTasks[taskId].tRight < 5)
{
- gTasks[taskId].data[2]++;
+ gTasks[taskId].tRight++;
return;
}
@@ -767,7 +794,7 @@ void task_yes_no_maybe(u8 taskId)
return;
case -1:
case 1:
- PlaySE(5);
+ PlaySE(SE_SELECT);
gScriptResult = 0;
break;
case 0:
@@ -775,19 +802,19 @@ void task_yes_no_maybe(u8 taskId)
break;
}
- left = gTasks[taskId].data[0];
- top = gTasks[taskId].data[1];
+ left = gTasks[taskId].tLeft;
+ top = gTasks[taskId].tTop;
MenuZeroFillWindowRect(left, top, left + 6, top + 5);
DestroyTask(taskId);
EnableBothScriptContexts();
}
-bool8 sub_80B5578(u8 left, u8 top, u8 multichoiceId, u8 a4, u8 columnCount)
+bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, u8 ignoreBPress, u8 columnCount)
{
u8 bottom = 0;
- if (FuncIsActiveTask(sub_80B5684) == TRUE)
+ if (FuncIsActiveTask(Task_HandleMultichoiceGridInput) == TRUE)
{
return FALSE;
}
@@ -800,7 +827,7 @@ bool8 sub_80B5578(u8 left, u8 top, u8 multichoiceId, u8 a4, u8 columnCount)
sub_807274C(left, top, gMultichoiceLists[multichoiceId].count, 0, gMultichoiceLists[multichoiceId].list, columnCount, 0);
- taskId = CreateTask(sub_80B5684, 80);
+ taskId = CreateTask(Task_HandleMultichoiceGridInput, 80);
if (!((gMultichoiceLists[multichoiceId].count >> 1) < columnCount || (gMultichoiceLists[multichoiceId].count & 1))
|| columnCount == 1 || gMultichoiceLists[multichoiceId].count == columnCount)
@@ -813,58 +840,62 @@ bool8 sub_80B5578(u8 left, u8 top, u8 multichoiceId, u8 a4, u8 columnCount)
}
width = sub_807288C(columnCount);
- gTasks[taskId].data[0] = left;
- gTasks[taskId].data[1] = top;
- gTasks[taskId].data[2] = width + left + 2;
- gTasks[taskId].data[3] = bottom;
- gTasks[taskId].data[4] = a4;
+ gTasks[taskId].tLeft = left;
+ gTasks[taskId].tTop = top;
+ gTasks[taskId].tRight = width + left + 2;
+ gTasks[taskId].tBottom = bottom;
+ gTasks[taskId].tIgnoreBPress = ignoreBPress;
return TRUE;
}
}
-void sub_80B5684(u8 taskId)
+static void Task_HandleMultichoiceGridInput(u8 taskId)
{
- s8 var = sub_80727CC();
+ s8 selection = sub_80727CC();
- if (var != -2)
+ if (selection != -2)
{
- if (var == -1)
+ if (selection == -1)
{
- if (!gTasks[taskId].data[4])
- {
- PlaySE(5);
- gScriptResult = 127;
- }
- else
- {
+ if (gTasks[taskId].tIgnoreBPress)
return;
- }
+ PlaySE(SE_SELECT);
+ gScriptResult = 127;
}
else
{
- gScriptResult = var;
+ gScriptResult = selection;
}
HandleDestroyMenuCursors();
- MenuZeroFillWindowRect(gTasks[taskId].data[0], gTasks[taskId].data[1], gTasks[taskId].data[2], gTasks[taskId].data[3]);
+ MenuZeroFillWindowRect(gTasks[taskId].tLeft, gTasks[taskId].tTop, gTasks[taskId].tRight, gTasks[taskId].tBottom);
DestroyTask(taskId);
EnableBothScriptContexts();
}
}
-bool8 TryCreatePCMenu(void)
+#undef tLeft
+#undef tTop
+#undef tRight
+#undef tBottom
+#undef tIgnoreBPress
+#undef tDoWrap
+
+bool8 ScrSpecial_CreatePCMenu(void)
{
- if (FuncIsActiveTask(sub_80B52B4) == 1)
+ if (FuncIsActiveTask(Task_HandleMultichoiceInput) == TRUE)
+ {
return FALSE;
+ }
else
{
gScriptResult = 0xFF;
- CreatePCMenu();
+ ScriptMenu_CreatePCMenu();
return TRUE;
}
}
#if ENGLISH
-void CreatePCMenu(void)
+void ScriptMenu_CreatePCMenu(void)
{
u16 playersPCWidth = GetStringWidthInTilesForScriptMenu(gPCText_PlayersPC);
u8 width;
@@ -896,239 +927,252 @@ void CreatePCMenu(void)
MenuPrint(gPCText_PlayersPC, 1, 3);
InitMenu(0, 1, 1, numChoices, 0, width + 1);
- sub_80B5230(0, 0, width + 2, 2 * numChoices + 1, 0, numChoices);
+ StartScriptMenuTask(0, 0, width + 2, 2 * numChoices + 1, 0, numChoices);
}
#elif GERMAN
__attribute__((naked))
-void CreatePCMenu(void) {
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- sub sp, 0x18\n\
- ldr r0, _080B5748 @ =0x0000084b\n\
- bl FlagGet\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _080B5750\n\
- ldr r0, _080B574C @ =gPCText_LanettesPC\n\
- b _080B5752\n\
- .align 2, 0\n\
+void ScriptMenu_CreatePCMenu(void) {
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ sub sp, 0x18\n\
+ ldr r0, _080B5748 @ =0x0000084b\n\
+ bl FlagGet\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _080B5750\n\
+ ldr r0, _080B574C @ =gPCText_LanettesPC\n\
+ b _080B5752\n\
+ .align 2, 0\n\
_080B5748: .4byte 0x0000084b\n\
_080B574C: .4byte gPCText_LanettesPC\n\
_080B5750:\n\
- ldr r0, _080B57E8 @ =gPCText_SomeonesPC\n\
+ ldr r0, _080B57E8 @ =gPCText_SomeonesPC\n\
_080B5752:\n\
- bl GetStringWidthInTilesForScriptMenu\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x8]\n\
- movs r4, 0x1\n\
- ldr r0, _080B57EC @ =gPCText_PlayersPC\n\
- bl GetStringWidthInTilesForScriptMenu\n\
- lsls r1, r4, 2\n\
- add r1, sp\n\
- adds r1, 0x8\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [r1]\n\
- ldr r0, _080B57F0 @ =gPCText_LogOff\n\
- bl GetStringWidthInTilesForScriptMenu\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x10]\n\
- movs r4, 0x3\n\
- ldr r0, _080B57F4 @ =0x00000804\n\
- bl FlagGet\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _080B5798\n\
- ldr r0, _080B57F8 @ =gPCText_HallOfFame\n\
- bl GetStringWidthInTilesForScriptMenu\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x14]\n\
- movs r4, 0x4\n\
+ bl GetStringWidthInTilesForScriptMenu\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ str r0, [sp, 0x8]\n\
+ movs r4, 0x1\n\
+ ldr r0, _080B57EC @ =gPCText_PlayersPC\n\
+ bl GetStringWidthInTilesForScriptMenu\n\
+ lsls r1, r4, 2\n\
+ add r1, sp\n\
+ adds r1, 0x8\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ str r0, [r1]\n\
+ ldr r0, _080B57F0 @ =gPCText_LogOff\n\
+ bl GetStringWidthInTilesForScriptMenu\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ str r0, [sp, 0x10]\n\
+ movs r4, 0x3\n\
+ ldr r0, _080B57F4 @ =0x00000804\n\
+ bl FlagGet\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _080B5798\n\
+ ldr r0, _080B57F8 @ =gPCText_HallOfFame\n\
+ bl GetStringWidthInTilesForScriptMenu\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ str r0, [sp, 0x14]\n\
+ movs r4, 0x4\n\
_080B5798:\n\
- movs r5, 0\n\
- cmp r5, r4\n\
- bge _080B57B4\n\
- add r2, sp, 0x8\n\
- adds r1, r4, 0\n\
+ movs r5, 0\n\
+ cmp r5, r4\n\
+ bge _080B57B4\n\
+ add r2, sp, 0x8\n\
+ adds r1, r4, 0\n\
_080B57A2:\n\
- ldr r0, [r2]\n\
- cmp r5, r0\n\
- bge _080B57AC\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
+ ldr r0, [r2]\n\
+ cmp r5, r0\n\
+ bge _080B57AC\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
_080B57AC:\n\
- adds r2, 0x4\n\
- subs r1, 0x1\n\
- cmp r1, 0\n\
- bne _080B57A2\n\
+ adds r2, 0x4\n\
+ subs r1, 0x1\n\
+ cmp r1, 0\n\
+ bne _080B57A2\n\
_080B57B4:\n\
- ldr r0, _080B57F4 @ =0x00000804\n\
- bl FlagGet\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _080B57FC\n\
- movs r7, 0x4\n\
- adds r4, r5, 0x2\n\
- lsls r2, r4, 24\n\
- lsrs r2, 24\n\
- movs r0, 0\n\
- movs r1, 0\n\
- movs r3, 0x9\n\
- bl MenuDrawTextWindow\n\
- ldr r0, _080B57F8 @ =gPCText_HallOfFame\n\
- movs r1, 0x1\n\
- movs r2, 0x5\n\
- bl MenuPrint\n\
- ldr r0, _080B57F0 @ =gPCText_LogOff\n\
- movs r1, 0x1\n\
- movs r2, 0x7\n\
- bl MenuPrint\n\
- b _080B5818\n\
- .align 2, 0\n\
+ ldr r0, _080B57F4 @ =0x00000804\n\
+ bl FlagGet\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _080B57FC\n\
+ movs r7, 0x4\n\
+ adds r4, r5, 0x2\n\
+ lsls r2, r4, 24\n\
+ lsrs r2, 24\n\
+ movs r0, 0\n\
+ movs r1, 0\n\
+ movs r3, 0x9\n\
+ bl MenuDrawTextWindow\n\
+ ldr r0, _080B57F8 @ =gPCText_HallOfFame\n\
+ movs r1, 0x1\n\
+ movs r2, 0x5\n\
+ bl MenuPrint\n\
+ ldr r0, _080B57F0 @ =gPCText_LogOff\n\
+ movs r1, 0x1\n\
+ movs r2, 0x7\n\
+ bl MenuPrint\n\
+ b _080B5818\n\
+ .align 2, 0\n\
_080B57E8: .4byte gPCText_SomeonesPC\n\
_080B57EC: .4byte gPCText_PlayersPC\n\
_080B57F0: .4byte gPCText_LogOff\n\
_080B57F4: .4byte 0x00000804\n\
_080B57F8: .4byte gPCText_HallOfFame\n\
_080B57FC:\n\
- movs r7, 0x3\n\
- adds r4, r5, 0x2\n\
- lsls r2, r4, 24\n\
- lsrs r2, 24\n\
- movs r0, 0\n\
- movs r1, 0\n\
- movs r3, 0x7\n\
- bl MenuDrawTextWindow\n\
- ldr r0, _080B5834 @ =gPCText_LogOff\n\
- movs r1, 0x1\n\
- movs r2, 0x5\n\
- bl MenuPrint\n\
+ movs r7, 0x3\n\
+ adds r4, r5, 0x2\n\
+ lsls r2, r4, 24\n\
+ lsrs r2, 24\n\
+ movs r0, 0\n\
+ movs r1, 0\n\
+ movs r3, 0x7\n\
+ bl MenuDrawTextWindow\n\
+ ldr r0, _080B5834 @ =gPCText_LogOff\n\
+ movs r1, 0x1\n\
+ movs r2, 0x5\n\
+ bl MenuPrint\n\
_080B5818:\n\
- adds r6, r4, 0\n\
- ldr r0, _080B5838 @ =0x0000084b\n\
- bl FlagGet\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _080B5840\n\
- ldr r0, _080B583C @ =gPCText_LanettesPC\n\
- movs r1, 0x1\n\
- movs r2, 0x1\n\
- bl MenuPrint\n\
- b _080B584A\n\
- .align 2, 0\n\
+ adds r6, r4, 0\n\
+ ldr r0, _080B5838 @ =0x0000084b\n\
+ bl FlagGet\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _080B5840\n\
+ ldr r0, _080B583C @ =gPCText_LanettesPC\n\
+ movs r1, 0x1\n\
+ movs r2, 0x1\n\
+ bl MenuPrint\n\
+ b _080B584A\n\
+ .align 2, 0\n\
_080B5834: .4byte gPCText_LogOff\n\
_080B5838: .4byte 0x0000084b\n\
_080B583C: .4byte gPCText_LanettesPC\n\
_080B5840:\n\
- ldr r0, _080B5888 @ =gPCText_SomeonesPC\n\
- movs r1, 0x1\n\
- movs r2, 0x1\n\
- bl MenuPrint\n\
+ ldr r0, _080B5888 @ =gPCText_SomeonesPC\n\
+ movs r1, 0x1\n\
+ movs r2, 0x1\n\
+ bl MenuPrint\n\
_080B584A:\n\
- ldr r0, _080B588C @ =gPCText_PlayersPC\n\
- movs r1, 0x1\n\
- movs r2, 0x3\n\
- bl MenuPrint\n\
- movs r4, 0\n\
- str r4, [sp]\n\
- adds r0, r5, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- str r0, [sp, 0x4]\n\
- movs r0, 0\n\
- movs r1, 0x1\n\
- movs r2, 0x1\n\
- adds r3, r7, 0\n\
- bl InitMenu\n\
- lsls r2, r6, 24\n\
- lsrs r2, 24\n\
- lsls r3, r7, 1\n\
- adds r3, 0x1\n\
- str r4, [sp]\n\
- str r7, [sp, 0x4]\n\
- movs r0, 0\n\
- movs r1, 0\n\
- bl sub_80B5230\n\
- add sp, 0x18\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
+ ldr r0, _080B588C @ =gPCText_PlayersPC\n\
+ movs r1, 0x1\n\
+ movs r2, 0x3\n\
+ bl MenuPrint\n\
+ movs r4, 0\n\
+ str r4, [sp]\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ str r0, [sp, 0x4]\n\
+ movs r0, 0\n\
+ movs r1, 0x1\n\
+ movs r2, 0x1\n\
+ adds r3, r7, 0\n\
+ bl InitMenu\n\
+ lsls r2, r6, 24\n\
+ lsrs r2, 24\n\
+ lsls r3, r7, 1\n\
+ adds r3, 0x1\n\
+ str r4, [sp]\n\
+ str r7, [sp, 0x4]\n\
+ movs r0, 0\n\
+ movs r1, 0\n\
+ bl StartScriptMenuTask\n\
+ add sp, 0x18\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
_080B5888: .4byte gPCText_SomeonesPC\n\
_080B588C: .4byte gPCText_PlayersPC\n\
.syntax divided\n");
}
#endif
-void sub_80B5838(void)
+void ScriptMenu_DisplayPCStartupPrompt(void)
{
MenuDisplayMessageBox();
MenuPrint(gPCText_WhichPCShouldBeAccessed, 2, 15);
}
-void task_picbox(u8 taskId)
+#define tState data[0]
+#define tMonSpecies data[1]
+#define tMonSpriteId data[2]
+#define tWindowX data[3]
+#define tWindowY data[4]
+
+static void Task_PokemonPicWindow(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- switch (task->data[0])
+ switch (task->tState)
{
case 0:
- task->data[0]++;
+ task->tState++;
break;
case 1:
break;
case 2:
- FreeResourcesAndDestroySprite(&gSprites[task->data[2]]);
- task->data[0]++;
+ FreeResourcesAndDestroySprite(&gSprites[task->tMonSpriteId]);
+ task->tState++;
break;
case 3:
- MenuZeroFillWindowRect(task->data[3], task->data[4], task->data[3] + 9, task->data[4] + 10);
+ MenuZeroFillWindowRect(task->tWindowX, task->tWindowY, task->tWindowX + 9, task->tWindowY + 10);
DestroyTask(taskId);
break;
}
}
-bool8 sub_80B58C4(u16 var1, u8 var2, u8 var3)
+bool8 ScriptMenu_ShowPokemonPic(u16 species, u8 x, u8 y)
{
u8 taskId;
- u8 var;
+ u8 spriteId;
- if (FindTaskIdByFunc(task_picbox) != 0xFF)
+ if (FindTaskIdByFunc(Task_PokemonPicWindow) != 0xFF)
+ {
return FALSE;
+ }
else
{
- MenuDrawTextWindow(var2, var3, var2 + 9, var3 + 10);
- taskId = CreateTask(task_picbox, 0x50);
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[1] = var1;
- var = CreateMonSprite_PicBox(var1, var2 * 8 + 40, var3 * 8 + 40, 0);
- gTasks[taskId].data[2] = var;
- gTasks[taskId].data[3] = var2;
- gTasks[taskId].data[4] = var3;
- gSprites[var].callback = SpriteCallbackDummy;
- gSprites[var].oam.priority = 0;
+ MenuDrawTextWindow(x, y, x + 9, y + 10);
+ taskId = CreateTask(Task_PokemonPicWindow, 0x50);
+ gTasks[taskId].tState = 0;
+ gTasks[taskId].tMonSpecies = species;
+ spriteId = CreateMonSprite_PicBox(species, x * 8 + 40, y * 8 + 40, 0);
+ gTasks[taskId].tMonSpriteId = spriteId;
+ gTasks[taskId].tWindowX = x;
+ gTasks[taskId].tWindowY = y;
+ gSprites[spriteId].callback = SpriteCallbackDummy;
+ gSprites[spriteId].oam.priority = 0;
return TRUE;
}
-}
+}
-void *picbox_close(void)
+bool8 (*ScriptMenu_GetPicboxWaitFunc(void))(void)
{
- u8 taskId = FindTaskIdByFunc(task_picbox);
+ u8 taskId = FindTaskIdByFunc(Task_PokemonPicWindow);
if (taskId == 0xFF)
return NULL;
-
- gTasks[taskId].data[0]++;
- return (void *)sub_80B59AC;
+ gTasks[taskId].tState++;
+ return IsPicboxClosed;
}
-bool8 sub_80B59AC(void)
+static bool8 IsPicboxClosed(void)
{
- if (FindTaskIdByFunc(task_picbox) == 0xFF)
+ if (FindTaskIdByFunc(Task_PokemonPicWindow) == 0xFF)
return TRUE;
else
return FALSE;
}
+
+#undef tState
+#undef tMonSpecies
+#undef tMonSpriteId
+#undef tWindowX
+#undef tWindowY
diff --git a/src/script_movement.c b/src/script_movement.c
index e25b60a3c..30e10b451 100644
--- a/src/script_movement.c
+++ b/src/script_movement.c
@@ -13,33 +13,33 @@ static bool8 sub_80A21F4(u8, u8, u8 *);
static u8 sub_80A2260(u8, u8);
static bool8 sub_80A2370(u8, u8);
static void sub_80A23C8(u8, u8, u8, u8 *);
-static void sub_80A2408(u8);
+static void UnfreezeObjects(u8);
static void Task_80A244C(u8);
static void sub_80A2490(u8, u8, u8, u8 *);
-bool8 exec_movement(u8 a, u8 b, u8 c, u8 *d)
+bool8 ScriptMovement_StartObjectMovementScript(u8 localId, u8 mapNum, u8 mapGroup, u8 *movementScript)
{
u8 mapObjId;
- if (TryGetFieldObjectIdByLocalIdAndMap(a, b, c, &mapObjId))
+ if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjId))
return TRUE;
if (!FuncIsActiveTask(Task_80A244C))
sub_80A2198(50);
- return sub_80A21F4(sub_80A21E0(), mapObjId, d);
+ return sub_80A21F4(sub_80A21E0(), mapObjId, movementScript);
}
-bool8 sub_80A212C(u8 a, u8 b, u8 c)
+bool8 ScriptMovement_IsObjectMovementFinished(u8 localId, u8 mapNum, u8 mapBank)
{
u8 mapObjId;
u8 r4;
u8 r1;
- if (TryGetFieldObjectIdByLocalIdAndMap(a, b, c, &mapObjId))
- return 1;
+ if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapBank, &mapObjId))
+ return TRUE;
r4 = sub_80A21E0();
r1 = sub_80A2260(r4, mapObjId);
if (r1 == 16)
- return 1;
+ return TRUE;
return sub_80A2370(r4, r1);
}
@@ -50,7 +50,7 @@ void sub_80A2178(void)
taskId = sub_80A21E0();
if (taskId != 0xFF)
{
- sub_80A2408(taskId);
+ UnfreezeObjects(taskId);
DestroyTask(taskId);
}
}
@@ -70,27 +70,31 @@ static u8 sub_80A21E0(void)
return FindTaskIdByFunc(Task_80A244C);
}
-static bool8 sub_80A21F4(u8 taskId, u8 b, u8 *c)
+static bool8 sub_80A21F4(u8 taskId, u8 mapObjId, u8 *movementScript)
{
u8 r4;
- r4 = sub_80A2260(taskId, b);
+ r4 = sub_80A2260(taskId, mapObjId);
if (r4 != 16)
{
if (sub_80A2370(taskId, r4) == 0)
+ {
return TRUE;
+ }
else
{
- sub_80A23C8(taskId, r4, b, c);
+ sub_80A23C8(taskId, r4, mapObjId, movementScript);
return FALSE;
}
}
r4 = sub_80A2260(taskId, 0xFF);
if (r4 == 16)
+ {
return TRUE;
+ }
else
{
- sub_80A23C8(taskId, r4, b, c);
+ sub_80A23C8(taskId, r4, mapObjId, movementScript);
return FALSE;
}
}
@@ -156,9 +160,9 @@ static bool8 sub_80A2370(u8 taskId, u8 b)
return FALSE;
}
-static void npc_obj_offscreen_culling_and_flag_update(u8 a, u8 *b)
+static void npc_obj_offscreen_culling_and_flag_update(u8 a, u8 *movementScript)
{
- gUnknown_020384F8[a] = b;
+ gUnknown_020384F8[a] = movementScript;
}
static u8 *sub_80A23B8(u8 a)
@@ -166,23 +170,23 @@ static u8 *sub_80A23B8(u8 a)
return gUnknown_020384F8[a];
}
-static void sub_80A23C8(u8 taskId, u8 b, u8 c, u8 *d)
+static void sub_80A23C8(u8 taskId, u8 b, u8 mapObjId, u8 *movementScript)
{
sub_80A2318(taskId, b);
- npc_obj_offscreen_culling_and_flag_update(b, d);
- sub_80A22D0(taskId, b, c);
+ npc_obj_offscreen_culling_and_flag_update(b, movementScript);
+ sub_80A22D0(taskId, b, mapObjId);
}
-static void sub_80A2408(u8 a)
+static void UnfreezeObjects(u8 taskId)
{
- u8 *ptr;
+ u8 *pMapObjId;
u8 i;
- ptr = (u8 *)&gTasks[a].data[1];
- for (i = 0; i < 16; i++, ptr++)
+ pMapObjId = (u8 *)&gTasks[taskId].data[1];
+ for (i = 0; i < 16; i++, pMapObjId++)
{
- if (*ptr != 0xFF)
- UnfreezeMapObject(&gMapObjects[*ptr]);
+ if (*pMapObjId != 0xFF)
+ UnfreezeMapObject(&gMapObjects[*pMapObjId]);
}
}
@@ -199,23 +203,23 @@ static void Task_80A244C(u8 taskId)
}
}
-static void sub_80A2490(u8 taskId, u8 b, u8 c, u8 *d)
+static void sub_80A2490(u8 taskId, u8 b, u8 mapObjId, u8 *d)
{
u8 var;
- if (FieldObjectIsSpecialAnimActive(&gMapObjects[c])
- && !FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[c]))
+ if (FieldObjectIsSpecialAnimActive(&gMapObjects[mapObjId])
+ && !FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[mapObjId]))
return;
var = *d;
if (var == 0xFE)
{
sub_80A2348(taskId, b);
- FreezeMapObject(&gMapObjects[c]);
+ FreezeMapObject(&gMapObjects[mapObjId]);
}
else
{
- if (!FieldObjectSetSpecialAnim(&gMapObjects[c], var))
+ if (!FieldObjectSetSpecialAnim(&gMapObjects[mapObjId], var))
{
d++;
npc_obj_offscreen_culling_and_flag_update(b, d);
diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c
index cbca07011..323df991a 100644
--- a/src/script_pokemon_util_80C4BF0.c
+++ b/src/script_pokemon_util_80C4BF0.c
@@ -18,7 +18,7 @@
#include "pokedex.h"
#include "pokemon.h"
#include "rng.h"
-#include "rom4.h"
+#include "overworld.h"
#include "script_pokemon_80C4.h"
#include "species.h"
#include "task.h"
@@ -511,7 +511,7 @@ void ScriptRandom(void)
*scriptPtr = random % *scriptPtr;
}
-void HealPlayerParty(void)
+void ScrSpecial_HealPlayerParty(void)
{
u8 i, j;
u8 ppBonuses;
@@ -542,41 +542,39 @@ void HealPlayerParty(void)
}
}
-u8 ScriptGiveMon(u16 species, u8 var, u16 item, u32 var3, u32 var4, u8 var5)
+u8 ScriptGiveMon(u16 species, u8 level, u16 item, u32 unused1, u32 unused2, u8 unused3)
{
- u16 nationalSpecies;
+ u16 nationalDexNum;
int sentToPc;
- u8 array[2];
+ u8 heldItem[2];
struct Pokemon mon;
- CreateMon(&mon, species, var, 32, 0, 0, 0, 0);
- array[0] = item;
- array[1] = item >> 8;
- SetMonData(&mon, MON_DATA_HELD_ITEM, array);
+ CreateMon(&mon, species, level, 32, 0, 0, 0, 0);
+ heldItem[0] = item;
+ heldItem[1] = item >> 8;
+ SetMonData(&mon, MON_DATA_HELD_ITEM, heldItem);
sentToPc = GiveMonToPlayer(&mon);
- nationalSpecies = SpeciesToNationalPokedexNum(species);
+ nationalDexNum = SpeciesToNationalPokedexNum(species);
- // nested if check to fool compiler
switch(sentToPc)
{
- case 0:
- case 1:
- GetNationalPokedexFlag(nationalSpecies, 2);
- GetNationalPokedexFlag(nationalSpecies, 3);
- return sentToPc;
- default:
- return sentToPc;
+ case 0:
+ case 1:
+ GetNationalPokedexFlag(nationalDexNum, 2);
+ GetNationalPokedexFlag(nationalDexNum, 3);
+ break;
}
+ return sentToPc;
}
-u8 ScriptGiveEgg(u16 value)
+u8 ScriptGiveEgg(u16 species)
{
struct Pokemon mon;
- u8 data;
+ u8 isEgg;
- sub_8042044(&mon, value, 1);
- data = 1;
- SetMonData(&mon, MON_DATA_IS_EGG, &data);
+ sub_8042044(&mon, species, 1);
+ isEgg = TRUE;
+ SetMonData(&mon, MON_DATA_IS_EGG, &isEgg);
return GiveMonToPlayer(&mon);
}
@@ -622,18 +620,18 @@ bool8 GetNameOfEnigmaBerryInPlayerParty(void)
return hasItem;
}
-void ScriptWildBattle(u16 species, u8 level, u16 item)
+void CreateScriptedWildMon(u16 species, u8 level, u16 item)
{
- u8 data[2];
+ u8 heldItem[2];
ZeroEnemyPartyMons();
CreateMon(&gEnemyParty[0], species, level, 0x20, 0, 0, 0, 0);
if(item)
{
- data[0] = item;
- data[1] = item >> 8;
- SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, data);
+ heldItem[0] = item;
+ heldItem[1] = item >> 8;
+ SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, heldItem);
}
}
diff --git a/src/script_pokemon_util_80F99CC.c b/src/script_pokemon_util_80F99CC.c
index 2b48cc0d8..f930df8e2 100644
--- a/src/script_pokemon_util_80F99CC.c
+++ b/src/script_pokemon_util_80F99CC.c
@@ -9,16 +9,15 @@
#include "party_menu.h"
#include "pokemon.h"
#include "pokemon_summary_screen.h"
-#include "rom4.h"
+#include "overworld.h"
#include "script.h"
#include "script_pokemon_80F9.h"
+#include "songs.h"
#include "sound.h"
#include "string_util.h"
#include "task.h"
#include "text.h"
-
-
extern u8 gPlayerPartyCount;
extern u16 gSpecialVar_0x8004;
extern u16 gSpecialVar_0x8005;
@@ -59,7 +58,7 @@ void sub_80F9A4C(void)
void sub_80F9A8C(u8 taskId)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
gPaletteFade.bufferTransferDisabled = 1;
OpenPartyMenu((u8) gTasks[taskId].data[0], 0);
@@ -69,10 +68,10 @@ void sub_80F9A8C(u8 taskId)
bool8 sub_80F9ACC(void)
{
- switch(EWRAM_1B000.unk264)
+ switch (EWRAM_1B000.unk264)
{
case 0:
- if(EWRAM_1B000.unk266 < gPlayerPartyCount)
+ if (EWRAM_1B000.unk266 < gPlayerPartyCount)
{
TryCreatePartyMenuMonIcon(EWRAM_1B000.unk260, EWRAM_1B000.unk266, &gPlayerParty[EWRAM_1B000.unk266]);
EWRAM_1B000.unk266++;
@@ -92,7 +91,7 @@ bool8 sub_80F9ACC(void)
EWRAM_1B000.unk264++;
break;
case 3:
- if(sub_806BD58(EWRAM_1B000.unk260, EWRAM_1B000.unk266) != 1)
+ if (sub_806BD58(EWRAM_1B000.unk260, EWRAM_1B000.unk266) != 1)
{
EWRAM_1B000.unk266++;
break;
@@ -116,7 +115,7 @@ bool8 sub_80F9ACC(void)
EWRAM_1B000.unk264++;
break;
case 7: // the only case that can return true.
- if(sub_806B58C(EWRAM_1B000.unk266) != 1)
+ if (sub_806B58C(EWRAM_1B000.unk266) != 1)
{
EWRAM_1B000.unk266++;
break;
@@ -135,9 +134,9 @@ void sub_80F9C00(void)
{
u8 i;
- for(i = 0; i < gPlayerPartyCount; i++)
+ for (i = 0; i < gPlayerPartyCount; i++)
{
- switch(sub_80AE47C(&gPlayerParty[i]))
+ switch (sub_80AE47C(&gPlayerParty[i]))
{
case 0:
case 3:
@@ -154,18 +153,18 @@ void sub_80F9C00(void)
void sub_80F9C6C(u8 var)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
- switch(sub_806BD80(var))
+ switch (sub_806BD80(var))
{
case 1:
- PlaySE(5);
+ PlaySE(SE_SELECT);
gUnknown_02038694 = sub_806CA38(var);
gSpecialVar_0x8004 = gUnknown_02038694;
sub_8123138(var);
break;
case 2:
- PlaySE(5);
+ PlaySE(SE_SELECT);
gUnknown_02038694 = 0xFF;
gSpecialVar_0x8004 = 0xFF;
sub_8123138(var);
@@ -176,10 +175,10 @@ void sub_80F9C6C(u8 var)
bool8 sub_80F9CE8(void) // this is the same function as sub_80F9ACC except case 6 calls a different function. why
{
- switch(EWRAM_1B000.unk264)
+ switch (EWRAM_1B000.unk264)
{
case 0:
- if(EWRAM_1B000.unk266 < gPlayerPartyCount)
+ if (EWRAM_1B000.unk266 < gPlayerPartyCount)
{
TryCreatePartyMenuMonIcon(EWRAM_1B000.unk260, EWRAM_1B000.unk266, &gPlayerParty[EWRAM_1B000.unk266]);
EWRAM_1B000.unk266++;
@@ -199,7 +198,7 @@ bool8 sub_80F9CE8(void) // this is the same function as sub_80F9ACC except case
EWRAM_1B000.unk264++;
break;
case 3:
- if(sub_806BD58(EWRAM_1B000.unk260, EWRAM_1B000.unk266) != 1)
+ if (sub_806BD58(EWRAM_1B000.unk260, EWRAM_1B000.unk266) != 1)
{
EWRAM_1B000.unk266++;
break;
@@ -223,7 +222,7 @@ bool8 sub_80F9CE8(void) // this is the same function as sub_80F9ACC except case
EWRAM_1B000.unk264++;
break;
case 7: // the only case that can return true.
- if(sub_806B58C(EWRAM_1B000.unk266) != 1)
+ if (sub_806B58C(EWRAM_1B000.unk266) != 1)
{
EWRAM_1B000.unk266++;
break;
@@ -242,9 +241,9 @@ void sub_80F9E1C(void)
{
u8 i;
- for(i = 0; i < gPlayerPartyCount; i++)
+ for (i = 0; i < gPlayerPartyCount; i++)
{
- if(!sub_8040574(&gPlayerParty[i]))
+ if (!sub_8040574(&gPlayerParty[i]))
sub_806BC3C(i, 0x9A);
else
sub_806BC3C(i, 0x8C);
@@ -253,18 +252,18 @@ void sub_80F9E1C(void)
void sub_80F9E64(u8 var)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
- switch(sub_806BD80(var))
+ switch (sub_806BD80(var))
{
case 1:
- PlaySE(5);
+ PlaySE(SE_SELECT);
gSpecialVar_0x8004 = sub_806CA38(var);
gSpecialVar_0x8005 = sub_8040574(&gPlayerParty[gSpecialVar_0x8004]);
sub_8123138(var);
break;
case 2:
- PlaySE(5);
+ PlaySE(SE_SELECT);
gSpecialVar_0x8004 = 0xFF;
sub_8123138(var);
}
@@ -278,23 +277,23 @@ void sub_80F9EEC(void)
gFieldCallback = sub_8080990;
}
-void sub_80F9F3C(void) // count pokemon moves
+void ScrSpecial_CountPokemonMoves(void) // count pokemon moves
{
u8 i;
gScriptResult = 0;
- for(i = 0; i < 4; i++) // checks MOVE1-MOVE4
- if(GetMonData(&gPlayerParty[gSpecialVar_0x8004], i + 13))
+ for (i = 0; i < 4; i++) // checks MOVE1-MOVE4
+ if (GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_MOVE1 + i))
gScriptResult++;
}
-void sub_80F9F84(void)
+void ScrSpecial_GetPokemonNicknameAndMoveName(void)
{
- struct Pokemon *party = &gPlayerParty[gSpecialVar_0x8004];
- u16 data = GetMonData(party, gSpecialVar_0x8005 + 13);
+ struct Pokemon *pkmn = &gPlayerParty[gSpecialVar_0x8004];
+ u16 data = GetMonData(pkmn, MON_DATA_MOVE1 + gSpecialVar_0x8005);
- GetMonNickname(party, gStringVar1);
+ GetMonNickname(pkmn, gStringVar1);
StringCopy(gStringVar2, gMoveNames[data]);
}
@@ -431,7 +430,7 @@ void sub_80FA0DC(void)
SetMonMoveSlot(&gPlayerParty[gSpecialVar_0x8004], 0, gSpecialVar_0x8005);
RemoveMonPPBonus(&gPlayerParty[gSpecialVar_0x8004], gSpecialVar_0x8005);
- for(i = gSpecialVar_0x8005; i < 3; i++)
+ for (i = gSpecialVar_0x8005; i < 3; i++)
sub_80F9FDC(&gPlayerParty[gSpecialVar_0x8004], i, i + 1);
}
@@ -440,6 +439,6 @@ void sub_80FA148(void)
struct Pokemon *party = &gPlayerParty[gSpecialVar_0x8004];
gScriptResult = 0;
- if(GetMonData(party, MON_DATA_IS_EGG))
+ if (GetMonData(party, MON_DATA_IS_EGG))
gScriptResult = 1;
}
diff --git a/src/secret_base.c b/src/secret_base.c
index 4e8331f5c..b2cd1f094 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -14,7 +14,7 @@
#include "metatile_behavior.h"
#include "palette.h"
#include "pokemon.h"
-#include "rom4.h"
+#include "overworld.h"
#include "script.h"
#include "string_util.h"
#include "strings.h"
@@ -270,7 +270,7 @@ void sub_80BBAF0(void)
bool8 sub_80BBB24(void)
{
- if (gMapHeader.mapType == 9 && VarGet(VAR_0x4097) == 0)
+ if (gMapHeader.mapType == MAP_TYPE_SECRET_BASE && VarGet(VAR_0x4097) == 0)
return FALSE;
return TRUE;
}
@@ -380,7 +380,7 @@ void sub_80BBDD0(void)
gScriptResult = gMapHeader.events->mapObjects[objid].graphicsId + 0x3f20;
VarSet(gScriptResult, gDecorations[roomdecor[decidx]].tiles[0]);
gScriptResult = gMapHeader.events->mapObjects[objid].localId;
- FlagReset(gSpecialVar_0x8004 + 0xAE);
+ FlagClear(gSpecialVar_0x8004 + 0xAE);
show_sprite(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
sub_805C0F8(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007);
sub_805C78C(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
@@ -690,7 +690,7 @@ _080BBEDA:\n\
adds r0, 0xAE\n\
lsls r0, 16\n\
lsrs r0, 16\n\
- bl FlagReset\n\
+ bl FlagClear\n\
ldr r3, _080BBF9C @ =gScriptResult\n\
ldrb r0, [r3]\n\
mov r4, r10\n\
diff --git a/src/shop.c b/src/shop.c
index d53646a88..22250b1c4 100644
--- a/src/shop.c
+++ b/src/shop.c
@@ -16,68 +16,106 @@
#include "task.h"
#include "tv.h"
#include "unknown_task.h"
+#include "field_map_obj.h"
+#include "field_player_avatar.h"
+#include "fieldmap.h"
+#include "item.h"
+#include "decoration.h"
+#include "items.h"
+#include "songs.h"
+#include "overworld.h"
+#include "decoration_inventory.h"
+#include "field_camera.h"
-struct UnknownShopStruct
-{
- /* 0x0 */ void (* callback) (void);
- /* 0x4 */ u16 *itemList;
- /* 0x8 */ u8 itemCount;
- /* 0x9 */ u8 unk9;
- /* 0xA */ u8 unkA;
- /* 0xB */ u8 unkB;
- /* 0xC */ bool8 unkC;
- // unknown size
-};
+#define ewram18000 ((u16 *)(ewram + 0x18000))
+#define ewram18300 ((u16 *)(ewram + 0x18300))
-extern struct UnknownShopStruct gUnknown_03000708;
-extern struct MenuAction gUnknown_083CC6D0[];
+extern bool8 sub_80A52C4(u8, u8);
-extern u8 gUnknown_083CC6E8[];
-extern u8 gUnknown_083CC6EB[];
+extern u8 ewram[];
extern u8 gBuyMenuFrame_Gfx[];
-
extern u16 gBuyMenuFrame_Tilemap[];
extern u16 gMenuMoneyPal[16];
-extern u16 gUnknown_083CC710[2];
-u8 CreateShopMenu(bool8 var)
+void sub_80B39D0(int var1, int var2, bool32 hasControlCode);
+void sub_80B3A70(void);
+void sub_80B4378(u8);
+void sub_80B43F0(u8);
+void Task_ExitBuyMenu(u8);
+void sub_80B4470(u8);
+void sub_80B2EFC(u8 taskId);
+void sub_80B2F30(u8 taskId);
+void HandleShopMenuQuit(u8 taskId);
+void sub_80B3BF4(u8 taskId);
+void sub_80B3D7C(u8 taskId);
+
+// iwram
+static struct MartInfo gMartInfo;
+
+// ewram
+EWRAM_DATA u32 gMartTotalCost = 0;
+EWRAM_DATA s16 gUnknown_020386A4[16][4] = {0}; // game freak barely uses 2d arrays wtf?
+EWRAM_DATA struct ItemSlot gUnknown_02038724[3] = {0}; // tv.c uses this, so it cant be static
+EWRAM_DATA u8 gUnknown_02038730 = 0;
+EWRAM_DATA u8 gUnknown_02038731 = 0;
+
+// rodata
+static const struct MenuAction2 sBuySellQuitMenuActions[] =
+{
+ { MartText_Buy, sub_80B2EFC },
+ { MartText_Sell, sub_80B2F30 },
+ { MartText_Quit2, HandleShopMenuQuit },
+};
+
+static const u8 gUnknown_083CC6E8[] = {0, 1, 2}; // BUY SELL EXIT
+static const u8 gUnknown_083CC6EB[] = {0, 2}; // BUY EXIT
+
+static const u16 gUnusedMartArray[] = {0x2, 0x3, 0x4, 0xD, 0x121, 0xE, 0xE, 0xE, 0xE, 0xE, 0xE, 0x0, 0x0};
+
+static const struct YesNoFuncTable gUnknown_083CC708[] =
+{
+ sub_80B3BF4,
+ sub_80B3D7C
+};
+
+u8 CreateShopMenu(u8 martType)
{
ScriptContext2_Enable();
- gUnknown_03000708.unkC = var;
- gUnknown_03000708.unk9 = 0;
+ gMartInfo.martType = martType;
+ gMartInfo.cursor = 0;
- if(var == FALSE)
+ if (martType == MART_TYPE_0)
{
- gUnknown_03000708.unkA = 2;
+ gMartInfo.numChoices = 2;
MenuDrawTextWindow(0, 0, 10, 7);
- PrintMenuItemsReordered(1, 1, 3, gUnknown_083CC6D0, (u8 *)gUnknown_083CC6E8);
+ PrintMenuItemsReordered(1, 1, 3, sBuySellQuitMenuActions, gUnknown_083CC6E8);
}
else
{
- gUnknown_03000708.unkA = 1;
+ gMartInfo.numChoices = 1;
MenuDrawTextWindow(0, 0, 10, 5);
- PrintMenuItemsReordered(1, 1, 2, gUnknown_083CC6D0, (u8 *)gUnknown_083CC6EB);
+ PrintMenuItemsReordered(1, 1, 2, sBuySellQuitMenuActions, gUnknown_083CC6EB);
}
- InitMenu(0, 1, 1, gUnknown_03000708.unkA + 1, 0, 9);
+ InitMenu(0, 1, 1, gMartInfo.numChoices + 1, 0, 9); // add 1 for cancel
return CreateTask(sub_80B2E38, 8);
}
void SetShopMenuCallback(void *callbackPtr)
{
- gUnknown_03000708.callback = callbackPtr;
+ gMartInfo.callback = callbackPtr;
}
void SetShopItemsForSale(u16 *items)
{
u16 i = 0;
- gUnknown_03000708.itemList = items;
- gUnknown_03000708.itemCount = 0;
+ gMartInfo.itemList = items;
+ gMartInfo.itemCount = 0;
- while (gUnknown_03000708.itemList[i])
+ while (gMartInfo.itemList[i])
{
- gUnknown_03000708.itemCount++;
+ gMartInfo.itemCount++;
i++;
}
}
@@ -86,37 +124,37 @@ void sub_80B2E38(u8 var)
{
const u8 local = var;
- if(gMain.newAndRepeatedKeys & 0x40)
+ if (gMain.newAndRepeatedKeys & DPAD_UP)
{
- if(gUnknown_03000708.unk9)
+ if (gMartInfo.cursor) // can move cursor up?
{
- PlaySE(0x5);
- gUnknown_03000708.unk9 = MoveMenuCursor(-1);
+ PlaySE(SE_SELECT);
+ gMartInfo.cursor = MoveMenuCursor(-1);
}
}
- else if(gMain.newAndRepeatedKeys & 0x80)
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
{
- if(gUnknown_03000708.unk9 != gUnknown_03000708.unkA)
+ if (gMartInfo.cursor != gMartInfo.numChoices) // can move cursor down?
{
- PlaySE(0x5);
- gUnknown_03000708.unk9 = MoveMenuCursor(1);
+ PlaySE(SE_SELECT);
+ gMartInfo.cursor = MoveMenuCursor(1);
}
}
- else if (gMain.newKeys & 1)
+ else if (gMain.newKeys & A_BUTTON)
{
- PlaySE(0x5);
- if(!gUnknown_03000708.unkC)
+ PlaySE(SE_SELECT);
+ if (gMartInfo.martType == MART_TYPE_0)
{
- gUnknown_083CC6D0[gUnknown_083CC6E8[gUnknown_03000708.unk9]].func(local);
+ sBuySellQuitMenuActions[gUnknown_083CC6E8[gMartInfo.cursor]].func(local);
}
else
{
- gUnknown_083CC6D0[gUnknown_083CC6EB[gUnknown_03000708.unk9]].func(local);
+ sBuySellQuitMenuActions[gUnknown_083CC6EB[gMartInfo.cursor]].func(local);
}
}
- else if(gMain.newKeys & 2)
+ else if (gMain.newKeys & B_BUTTON)
{
- PlaySE(0x5);
+ PlaySE(SE_SELECT);
HandleShopMenuQuit(local);
}
}
@@ -141,17 +179,17 @@ void HandleShopMenuQuit(u8 taskId)
{
HandleDestroyMenuCursors();
MenuZeroFillWindowRect(0, 0, 11, 8);
- sub_80BE3BC(); // in tv.s?
+ sub_80BE3BC();
ScriptContext2_Disable();
DestroyTask(taskId);
- if(gUnknown_03000708.callback)
- gUnknown_03000708.callback(); // run the callback if it exists.
+ if (gMartInfo.callback)
+ gMartInfo.callback(); // run the callback if it exists.
}
void sub_80B2FA0(u8 taskId)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
SetMainCallback2((void *)((u16)gTasks[taskId].data[8] << 16 | (u16)gTasks[taskId].data[9]));
DestroyTask(taskId);
@@ -160,15 +198,15 @@ void sub_80B2FA0(u8 taskId)
void ReturnToShopMenuAfterExitingSellMenu(u8 taskId)
{
- CreateShopMenu(gUnknown_03000708.unkC);
+ CreateShopMenu(gMartInfo.martType);
DestroyTask(taskId);
}
void Task_ExitSellMenu(u8 taskId)
{
- if(sub_807D770() == 1)
+ if (sub_807D770() == 1)
{
- if(gUnknown_03000708.unkC == 2)
+ if (gMartInfo.martType == MART_TYPE_2)
DisplayItemMessageOnField(taskId, gOtherText_CanIHelpYou, ReturnToShopMenuAfterExitingSellMenu, 0);
else
DisplayItemMessageOnField(taskId, gOtherText_AnythingElse, ReturnToShopMenuAfterExitingSellMenu, 0);
@@ -253,10 +291,10 @@ void BuyMenuDrawGraphics(void)
SetUpWindowConfig(&gWindowConfig_81E6DFC);
InitMenuWindow(&gWindowConfig_81E6DFC);
BuyMenuDrawMapGraphics();
- gUnknown_03000708.unk9 = zero;
- gUnknown_03000708.unkB = zero2;
+ gMartInfo.cursor = zero;
+ gMartInfo.choicesAbove = zero2;
MenuZeroFillWindowRect(0, 0, 0x20, 0x20);
- sub_80B7C14(gSaveBlock1.money, 0, 0);
+ OpenMoneyWindow(gSaveBlock1.money, 0, 0);
sub_80B3764(0, 7);
sub_80B37EC();
sub_80B3270();
@@ -272,9 +310,8 @@ void BuyMenuDrawGraphics(void)
void sub_80B3240(void)
{
- u16 tempArr[2];
+ u16 tempArr[2] = {0x41EE, 0x7FFF};
- memcpy(tempArr, gUnknown_083CC710, sizeof(tempArr));
LoadPalette(&tempArr[1], 0xD1, 2);
LoadPalette(&tempArr[0], 0xD8, 2);
}
@@ -283,7 +320,7 @@ void sub_80B3270(void)
{
sub_80F944C();
- if(gUnknown_03000708.itemCount > 7)
+ if (gMartInfo.itemCount > 7)
{
CreateVerticalScrollIndicators(0, 172, 12);
CreateVerticalScrollIndicators(1, 172, 148);
@@ -293,12 +330,12 @@ void sub_80B3270(void)
void sub_80B32A4(void)
{
- if(gUnknown_03000708.unkB == 0)
+ if (gMartInfo.choicesAbove == 0)
sub_80F979C(0, 1);
else
sub_80F979C(0, 0);
- if(gUnknown_03000708.unkB + 7 >= gUnknown_03000708.itemCount)
+ if (gMartInfo.choicesAbove + 7 >= gMartInfo.itemCount)
sub_80F979C(1, 1);
else
sub_80F979C(1, 0);
@@ -318,13 +355,13 @@ void BuyMenuDrawMapMetatileLayer(u16 *array, s16 offset1, s16 offset2, u16 *arra
array[offset1 + offset2 + 33] = array2[3];
}
-void BuyMenuDrawMapMetatile(int var1, int var2, u16 *var3, s8 var4)
+void BuyMenuDrawMapMetatile(int var1, int var2, u16 *var3, s32 var4)
{
u8 tempVar4 = var4;
s16 offset1 = var1 * 2;
s16 offset2 = (var2 * 0x40) + 0x40;
- switch(tempVar4)
+ switch (tempVar4)
{
case 0: // _080B335C
BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3);
@@ -340,3 +377,975 @@ void BuyMenuDrawMapMetatile(int var1, int var2, u16 *var3, s8 var4)
break;
}
}
+
+void sub_80B33D0(s16 var1, int var2, u16 *var3)
+{
+ s16 offset1 = var1 * 2;
+ s16 offset2 = (var2 * 0x40) + 0x40;
+
+ BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[3], offset1, offset2, var3);
+ BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3 + 4);
+}
+
+void sub_80B3420(void)
+{
+ s16 facingX;
+ s16 facingY;
+ s16 x;
+ s16 y;
+
+ GetXYCoordsOneStepInFrontOfPlayer(&facingX, &facingY);
+ facingX -= 3;
+ facingY -= 3;
+
+ for (y = 0; y < 6; y++)
+ {
+ for (x = 0; x < 7; x++)
+ {
+ u16 metatileId = MapGridGetMetatileIdAt(facingX + x, facingY + y);
+
+ if (y != 5 && x != 6)
+ {
+ s32 r3 = MapGridGetMetatileLayerTypeAt(facingX + x, facingY + y);
+
+ if (metatileId < 512)
+ BuyMenuDrawMapMetatile(x, y, (u16 *)gMapHeader.mapData->primaryTileset->metatiles + metatileId * 8, r3);
+ else
+ BuyMenuDrawMapMetatile(x, y, (u16 *)gMapHeader.mapData->secondaryTileset->metatiles + (metatileId - 512) * 8, r3);
+ }
+ else
+ {
+ if (metatileId < 512)
+ sub_80B33D0(x, y, (u16 *)gMapHeader.mapData->primaryTileset->metatiles + metatileId * 8);
+ else
+ sub_80B33D0(x, y, (u16 *)gMapHeader.mapData->secondaryTileset->metatiles + (metatileId - 512) * 8);
+ }
+
+ if (y == 0 && x != 0 && x != 6)
+ sub_80B32EC(gBGTilemapBuffers[1], x * 2, 64);
+ }
+ }
+}
+
+void BuyMenuDrawMapGraphics(void)
+{
+ sub_80F9020();
+ sub_80B356C();
+ sub_80B368C();
+ sub_80B3420();
+}
+
+void sub_80B356C(void)
+{
+ s16 facingX;
+ s16 facingY;
+ u8 playerHeight;
+ u8 y;
+ u8 x;
+ u8 r8 = 0;
+
+ GetXYCoordsOneStepInFrontOfPlayer(&facingX, &facingY);
+ playerHeight = PlayerGetZCoord();
+ for (y = 0; y < 16; y++)
+ gUnknown_020386A4[y][MAP_OBJ_ID] = 16;
+ for (y = 0; y < 5; y++)
+ {
+ for (x = 0; x < 7; x++)
+ {
+ u8 mapObjId = GetFieldObjectIdByXYZ(facingX - 3 + x, facingY - 2 + y, playerHeight);
+
+ if (mapObjId != 16)
+ {
+ gUnknown_020386A4[r8][MAP_OBJ_ID] = mapObjId;
+ gUnknown_020386A4[r8][X_COORD] = x;
+ gUnknown_020386A4[r8][Y_COORD] = y;
+ if (gMapObjects[mapObjId].mapobj_unk_18 == 1)
+ gUnknown_020386A4[r8][ANIM_NUM] = 0;
+ if (gMapObjects[mapObjId].mapobj_unk_18 == 2)
+ gUnknown_020386A4[r8][ANIM_NUM] = 1;
+ if (gMapObjects[mapObjId].mapobj_unk_18 == 3)
+ gUnknown_020386A4[r8][ANIM_NUM] = 2;
+ if (gMapObjects[mapObjId].mapobj_unk_18 == 4)
+ gUnknown_020386A4[r8][ANIM_NUM] = 3;
+ r8++;
+ }
+ }
+ }
+}
+
+void sub_80B368C(void)
+{
+ u8 i;
+
+ for (i = 0; i < 16; i++) // max objects?
+ {
+ if (gUnknown_020386A4[i][MAP_OBJ_ID] == 16)
+ continue;
+
+ StartSpriteAnim(&gSprites[AddPseudoFieldObject(
+ gMapObjects[gUnknown_020386A4[i][MAP_OBJ_ID]].graphicsId,
+ SpriteCallbackDummy,
+ (u16)gUnknown_020386A4[i][X_COORD] * 16 + 8,
+ (u16)gUnknown_020386A4[i][Y_COORD] * 16 + 32,
+ 2)],
+ gUnknown_020386A4[i][ANIM_NUM]);
+ }
+}
+
+void sub_80B3720(void)
+{
+ s16 i;
+
+ for (i = 0; i < 0x400; i++)
+ {
+ if (ewram18000[i] != 0)
+ gBGTilemapBuffers[1][i] = ewram18000[i] + 0xC3E0;
+ }
+}
+
+void sub_80B3764(int var1, int var2)
+{
+ sub_80B3720();
+ sub_80B39D0(var1, var2, 0);
+ InitMenu(0, 0xE, 0x2, 0x8, gMartInfo.cursor, 0xF);
+}
+
+void sub_80B379C(void)
+{
+ u16 i, j;
+
+ for (i = 0; i < 8; i++)
+ for (j = 0; j < 14; j++)
+ gBGTilemapBuffers[1][32 * (i + 12) + j] = ewram18300[32 * i + j] + 0xC3E0;
+}
+
+void sub_80B37EC(void)
+{
+ sub_80B3A70();
+}
+
+void sub_80B37F8(u8 taskId)
+{
+ u16 itemListIndex = gMartInfo.choicesAbove + gMartInfo.cursor;
+ u16 itemId = gMartInfo.itemList[itemListIndex];
+ u32 price = (ItemId_GetPrice(itemId) >> GetPriceReduction(1));
+
+ PrintMoneyAmount(gTasks[taskId].data[1] * price, 6, 6, 11);
+ gStringVar1[0] = EXT_CTRL_CODE_BEGIN;
+ gStringVar1[1] = 0x14;
+ gStringVar1[2] = 0x6;
+ ConvertIntToDecimalStringN(&gStringVar1[3], gTasks[taskId].data[1], 1, 2);
+ MenuPrint(gOtherText_xString1, 1, 11);
+ sub_80A3FA0(gBGTilemapBuffers[1], 1, 11, 12, 2, 0xC3E1);
+}
+
+void sub_80B389C(u16 itemId, u8 var2, bool32 hasControlCode)
+{
+ u8 *stringPtr = gStringVar1;
+
+ if (hasControlCode != FALSE)
+ {
+ stringPtr[0] = EXT_CTRL_CODE_BEGIN;
+ stringPtr[1] = 0x1;
+ stringPtr[2] = 0x2;
+ stringPtr += 3;
+ }
+
+ CopyItemName(itemId, stringPtr);
+
+ sub_8072A18(&gStringVar1[0], 0x70, var2 << 3, 0x58, 0x1);
+ stringPtr = gStringVar1;
+
+ if (hasControlCode != FALSE)
+ stringPtr = &gStringVar1[3];
+
+ GetMoneyAmountText(stringPtr, (ItemId_GetPrice(itemId) >> GetPriceReduction(1)), 0x4);
+ MenuPrint_PixelCoords(&gStringVar1[0], 0xCA, var2 << 3, 1);
+}
+
+void sub_80B3930(u16 itemId, u8 var2, bool32 hasControlCode)
+{
+ u8 *stringPtr = gStringVar1;
+
+ if (hasControlCode != FALSE)
+ {
+ stringPtr[0] = EXT_CTRL_CODE_BEGIN;
+ stringPtr[1] = 0x1;
+ stringPtr[2] = 0x2;
+ stringPtr += 3;
+ }
+
+ StringCopy(stringPtr, gDecorations[itemId].name);
+ sub_8072A18(&gStringVar1[0], 0x70, var2 << 3, 0x58, 0x1);
+ stringPtr = gStringVar1;
+
+ if (hasControlCode != FALSE)
+ stringPtr = &gStringVar1[3];
+
+ if (gDecorations[itemId].price == 10000)
+ {
+ sub_80B7B34(0x19, var2, hasControlCode); // huh???
+ }
+ else
+ {
+ GetMoneyAmountText(stringPtr, gDecorations[itemId].price, 0x4);
+ MenuPrint_PixelCoords(&gStringVar1[0], 0xCA, var2 << 3, 0x1);
+ }
+}
+
+void sub_80B39D0(int var1, int var2, bool32 hasControlCode)
+{
+ u8 i;
+
+ for (i = var1; i <= var2 && gMartInfo.choicesAbove + i < gMartInfo.itemCount; i++)
+ {
+ if (gMartInfo.martType == MART_TYPE_0)
+ sub_80B389C(gMartInfo.itemList[gMartInfo.choicesAbove + i], (i << 1) + 2, hasControlCode);
+ else
+ sub_80B3930(gMartInfo.itemList[gMartInfo.choicesAbove + i], (i << 1) + 2, hasControlCode);
+ }
+
+ if (i != 8 && gMartInfo.choicesAbove + i == gMartInfo.itemCount)
+ {
+ MenuFillWindowRectWithBlankTile(0xE, (i << 1) + 2, 0x1C, (i << 1) + 3);
+ MenuPrint(gOtherText_CancelNoTerminator, 0xE, (i << 1) + 2);
+ }
+}
+
+void sub_80B3A70(void)
+{
+ if (gMartInfo.choicesAbove + gMartInfo.cursor != gMartInfo.itemCount)
+ {
+ if (gMartInfo.martType == MART_TYPE_0)
+ {
+ sub_8072AB0(ItemId_GetDescription(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]),
+ 0x4, 0x68, 0x68, 0x30, 0);
+ }
+ else
+ sub_8072AB0(gDecorations[gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]].description,
+ 0x4, 0x68, 0x68, 0x30, 0);
+ }
+ else
+ {
+ sub_8072AB0(gOtherText_QuitShopping, 0x4, 0x68, 0x68, 0x30, 0);
+ }
+}
+
+void sub_80B3AEC(u8 taskId)
+{
+ if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)
+ {
+ sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 0); // huh???
+ PlaySE(SE_SELECT);
+
+ if (gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor] == ITEM_POKE_BALL && gTasks[taskId].data[1] >= 10 && AddBagItem(ITEM_PREMIER_BALL, 1) == TRUE)
+ DisplayItemMessageOnField(taskId, gOtherText_FreePremierBall, sub_80B4378, 0xC3E1);
+ else
+ sub_80B4378(taskId);
+ }
+}
+
+void sub_80B3B80(u8 taskId)
+{
+ IncrementGameStat(0x26);
+ RemoveMoney(&gSaveBlock1.money, gMartTotalCost);
+ PlaySE(SE_REGI);
+ UpdateMoneyWindow(gSaveBlock1.money, 0, 0);
+ gTasks[taskId].func = sub_80B3AEC;
+}
+
+void sub_80B3BD0(u8 taskId)
+{
+ sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 0); // same thing as above?
+ sub_80B4378(taskId);
+}
+
+void sub_80B3BF4(u8 taskId)
+{
+ MenuZeroFillWindowRect(0x7, 0x8, 0xD, 0xD);
+ sub_80A3FA0(gBGTilemapBuffers[1], 8, 9, 4, 4, 0);
+ sub_80B379C();
+ sub_80B3420();
+
+ if (IsEnoughMoney(gSaveBlock1.money, gMartTotalCost))
+ {
+ if (gMartInfo.martType == MART_TYPE_0)
+ {
+ if (AddBagItem(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor], gTasks[taskId].data[1]))
+ {
+ DisplayItemMessageOnField(taskId, gOtherText_HereYouGo, sub_80B3B80, 0xC3E1);
+ sub_80B4470(taskId);
+ }
+ else
+ DisplayItemMessageOnField(taskId, gOtherText_NoRoomFor, sub_80B3BD0, 0xC3E1);
+ }
+ else // a normal mart is only type 0, so types 1 and 2 are decoration marts.
+ {
+ if (IsThereStorageSpaceForDecoration(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]))
+ {
+ if (gMartInfo.martType == MART_TYPE_1)
+ DisplayItemMessageOnField(taskId, gOtherText_HereYouGo2, sub_80B3B80, 0xC3E1);
+ else
+ DisplayItemMessageOnField(taskId, gOtherText_HereYouGo3, sub_80B3B80, 0xC3E1);
+ }
+ else
+ {
+ StringExpandPlaceholders(gStringVar4, gOtherText_SpaceForIsFull);
+ DisplayItemMessageOnField(taskId, gStringVar4, sub_80B3BD0, 0xC3E1);
+ }
+ }
+ }
+ else
+ DisplayItemMessageOnField(taskId, gOtherText_NotEnoughMoney, sub_80B3BD0, 0xC3E1);
+}
+
+void sub_80B3D38(u8 taskId)
+{
+ DisplayYesNoMenu(7, 8, 1);
+ sub_80A3FA0(gBGTilemapBuffers[1], 8, 9, 4, 4, 0xC3E1);
+ DoYesNoFuncWithChoice(taskId, gUnknown_083CC708);
+}
+
+void sub_80B3D7C(u8 taskId)
+{
+ sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 0);
+ MenuZeroFillWindowRect(0x7, 0x8, 0xD, 0xD);
+ sub_80A3FA0(gBGTilemapBuffers[1], 0x8, 0x9, 0x4, 0x4, 0);
+ sub_80B4378(taskId);
+}
+
+void sub_80B3DC8(u8 taskId)
+{
+ if (sub_80A52C4(taskId, gMartInfo.curItemCount) == TRUE)
+ sub_80B37F8(taskId);
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ gMartTotalCost = (ItemId_GetPrice(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]) >> GetPriceReduction(1)) * gTasks[taskId].data[1]; // set total cost of your purchase.
+ MenuZeroFillWindowRect(0, 0xA, 0xD, 0xD);
+ sub_80A3FA0(gBGTilemapBuffers[1], 0x1, 0xB, 0xC, 0x2, 0);
+ sub_80B379C();
+ sub_80B3420();
+ CopyItemName(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor], gStringVar1);
+ ConvertIntToDecimalStringN(gStringVar2, gTasks[taskId].data[1], 0, 0x2);
+ ConvertIntToDecimalStringN(gStringVar3, gMartTotalCost, 0, 0x8);
+ StringExpandPlaceholders(gStringVar4, gOtherText_ThatWillBe);
+ DisplayItemMessageOnField(taskId, gStringVar4, sub_80B3D38, 0xC3E1);
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 0);
+ sub_80B4378(taskId);
+ }
+}
+
+void sub_80B3EFC(u8 taskId)
+{
+ u16 var;
+
+ gTasks[taskId].data[1] = 1;
+ MenuDrawTextWindow(0, 0xA, 0xD, 0xD);
+ sub_80B37F8(taskId);
+
+ var = gSaveBlock1.money / (ItemId_GetPrice(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]) >> GetPriceReduction(1));
+ if (var > 99)
+ gMartInfo.curItemCount = 99;
+ else
+ gMartInfo.curItemCount = var;
+
+ gTasks[taskId].func = sub_80B3DC8;
+}
+
+#ifdef NONMATCHING
+void sub_80B3F88(void)
+{
+ u16 *r1;
+ u16 *r2;
+ register u8 *r10 asm("r10");
+ s32 i;
+ s32 j;
+ struct Window *r8 = &gMenuWindow;
+
+ r1 = r8->tilemap;
+ r1 += 0x1EF;
+ r2 = r1;
+ r2 += 64;
+ r10 = r8->tileData;
+
+ for (i = 0; i < 14; i++)
+ {
+ for (j = 0; j < 15; j++)
+ {
+ if ((r1[j] & 0x3FF) <= r8->tileDataStartOffset + 1)
+ r2[j] = r8->tileDataStartOffset + 1;
+ else
+ r2[j] = r1[j] + 0x3C;
+ }
+
+ r1 -= 32;
+ r2 -= 32;
+ }
+
+ {
+ u8 *r1 = r10 + 0x3A20;
+ u8 *r2 = r1 + 0x780;
+ for (i = 0; i < 14; i++)
+ {
+ DmaCopy16(3, r1, r2, 0x1E0);
+ r2 -= 0x3C0;
+ r1 -= 0x3C0;
+ }
+ }
+}
+#else
+__attribute__((naked))
+void sub_80B3F88(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x4\n\
+ ldr r0, _080B4020 @ =gMenuWindow\n\
+ mov r8, r0\n\
+ ldr r1, [r0, 0x28]\n\
+ ldr r3, _080B4024 @ =0x000003de\n\
+ adds r1, r3\n\
+ adds r2, r1, 0\n\
+ adds r2, 0x80\n\
+ ldr r7, [r0, 0x24]\n\
+ mov r10, r7\n\
+ ldr r0, _080B4028 @ =0x000003ff\n\
+ mov r9, r0\n\
+ movs r6, 0xD\n\
+_080B3FAC:\n\
+ adds r3, r2, 0\n\
+ subs r3, 0x40\n\
+ str r3, [sp]\n\
+ movs r7, 0x40\n\
+ negs r7, r7\n\
+ adds r7, r1\n\
+ mov r12, r7\n\
+ adds r3, r2, 0\n\
+ adds r4, r1, 0\n\
+ movs r5, 0xE\n\
+_080B3FC0:\n\
+ ldrh r2, [r4]\n\
+ mov r1, r9\n\
+ ands r1, r2\n\
+ mov r7, r8\n\
+ ldrh r0, [r7, 0x1A]\n\
+ adds r0, 0x1\n\
+ cmp r1, r0\n\
+ ble _080B3FD4\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x3C\n\
+_080B3FD4:\n\
+ strh r0, [r3]\n\
+ adds r3, 0x2\n\
+ adds r4, 0x2\n\
+ subs r5, 0x1\n\
+ cmp r5, 0\n\
+ bge _080B3FC0\n\
+ ldr r2, [sp]\n\
+ mov r1, r12\n\
+ subs r6, 0x1\n\
+ cmp r6, 0\n\
+ bge _080B3FAC\n\
+ ldr r1, _080B402C @ =0x00003a20\n\
+ add r1, r10\n\
+ movs r0, 0xF0\n\
+ lsls r0, 3\n\
+ adds r2, r1, r0\n\
+ ldr r3, _080B4030 @ =0x040000d4\n\
+ ldr r5, _080B4034 @ =0x800000f0\n\
+ ldr r4, _080B4038 @ =0xfffffc40\n\
+ movs r6, 0xD\n\
+_080B3FFC:\n\
+ str r1, [r3]\n\
+ str r2, [r3, 0x4]\n\
+ str r5, [r3, 0x8]\n\
+ ldr r0, [r3, 0x8]\n\
+ adds r2, r4\n\
+ adds r1, r4\n\
+ subs r6, 0x1\n\
+ cmp r6, 0\n\
+ bge _080B3FFC\n\
+ add sp, 0x4\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080B4020: .4byte gMenuWindow\n\
+_080B4024: .4byte 0x000003de\n\
+_080B4028: .4byte 0x000003ff\n\
+_080B402C: .4byte 0x00003a20\n\
+_080B4030: .4byte 0x040000d4\n\
+_080B4034: .4byte 0x800000f0\n\
+_080B4038: .4byte 0xfffffc40\n\
+ .syntax divided");
+}
+#endif
+
+#ifdef NONMATCHING
+void sub_80B403C(void)
+{
+ u16 *r1;
+ u16 *r2;
+ u8 *r10;
+ s32 i;
+ s32 j;
+ struct Window *r8 = &gMenuWindow;
+
+ r1 = r8->tilemap;
+ r1 += 0x4F;
+ r2 = r1;
+ r2 += 64;
+ r10 = r8->tileData;
+
+ for (i = 0; i < 14; i++)
+ {
+ for (j = 0; j < 15; j++)
+ {
+ if ((r1[j] & 0x3FF) <= r8->tileDataStartOffset + 1)
+ r2[j] = r8->tileDataStartOffset + 1;
+ else
+ r2[j] = r1[j] + 0x3C;
+ }
+
+ r1 += 32;
+ r2 += 32;
+ }
+
+ {
+ register u8 *r1 asm("r1") = r10 + 0x960;
+ register u8 *r2 asm("r2") = r1;
+
+ r1 += 0x780;
+ for (i = 0; i < 14; i++)
+ {
+ DmaCopy16(3, r1, r2, 0x1E0);
+ r1 += 0x3C0;
+ r2 += 0x3C0;
+ }
+ }
+}
+#else
+__attribute__((naked))
+void sub_80B403C(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x4\n\
+ ldr r0, _080B40D8 @ =gMenuWindow\n\
+ mov r8, r0\n\
+ ldr r2, [r0, 0x28]\n\
+ adds r1, r2, 0\n\
+ adds r1, 0x9E\n\
+ adds r2, r1, 0\n\
+ adds r1, 0x80\n\
+ ldr r3, [r0, 0x24]\n\
+ mov r10, r3\n\
+ ldr r7, _080B40DC @ =0x000003ff\n\
+ mov r9, r7\n\
+ movs r6, 0xD\n\
+_080B4060:\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x40\n\
+ str r0, [sp]\n\
+ movs r3, 0x40\n\
+ adds r3, r1\n\
+ mov r12, r3\n\
+ adds r3, r2, 0\n\
+ adds r4, r1, 0\n\
+ movs r5, 0xE\n\
+_080B4072:\n\
+ ldrh r2, [r4]\n\
+ mov r1, r9\n\
+ ands r1, r2\n\
+ mov r7, r8\n\
+ ldrh r0, [r7, 0x1A]\n\
+ adds r0, 0x1\n\
+ cmp r1, r0\n\
+ ble _080B4086\n\
+ adds r0, r2, 0\n\
+ subs r0, 0x3C\n\
+_080B4086:\n\
+ strh r0, [r3]\n\
+ adds r3, 0x2\n\
+ adds r4, 0x2\n\
+ subs r5, 0x1\n\
+ cmp r5, 0\n\
+ bge _080B4072\n\
+ ldr r2, [sp]\n\
+ mov r1, r12\n\
+ subs r6, 0x1\n\
+ cmp r6, 0\n\
+ bge _080B4060\n\
+ movs r1, 0x96\n\
+ lsls r1, 4\n\
+ add r1, r10\n\
+ adds r2, r1, 0\n\
+ movs r0, 0xF0\n\
+ lsls r0, 3\n\
+ adds r1, r0\n\
+ ldr r3, _080B40E0 @ =0x040000d4\n\
+ ldr r5, _080B40E4 @ =0x800000f0\n\
+ movs r4, 0xF0\n\
+ lsls r4, 2\n\
+ movs r6, 0xD\n\
+_080B40B4:\n\
+ str r1, [r3]\n\
+ str r2, [r3, 0x4]\n\
+ str r5, [r3, 0x8]\n\
+ ldr r0, [r3, 0x8]\n\
+ adds r2, r4\n\
+ adds r1, r4\n\
+ subs r6, 0x1\n\
+ cmp r6, 0\n\
+ bge _080B40B4\n\
+ add sp, 0x4\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080B40D8: .4byte gMenuWindow\n\
+_080B40DC: .4byte 0x000003ff\n\
+_080B40E0: .4byte 0x040000d4\n\
+_080B40E4: .4byte 0x800000f0\n\
+ .syntax divided");
+}
+#endif
+
+void sub_80B40E8(u8 taskId) // Mart_DoCursorAction
+{
+ if (!gPaletteFade.active)
+ {
+ if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP) // only up can be pressed
+ {
+ if (gMartInfo.cursor == 0)
+ {
+ if (gMartInfo.choicesAbove == 0) // if there are no choices above, dont bother
+ return;
+
+ PlaySE(SE_SELECT);
+ gMartInfo.choicesAbove--; // since cursor is at the top and there are choices above the top, scroll the menu up by updating choicesAbove.
+ sub_80B3F88();
+ sub_80B39D0(0, 0, 0);
+ sub_80B3A70();
+ sub_80B32A4();
+ }
+ else // if the cursor is not 0, choicesAbove cannot be updated yet since the cursor is at the top of the menu, so update cursor.
+ {
+ PlaySE(SE_SELECT);
+ gMartInfo.cursor = MoveMenuCursor(-1); // move cursor up
+ sub_80B3A70();
+ }
+ }
+ else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN) // only down can be pressed
+ {
+ if (gMartInfo.cursor == 7) // are you at the bottom of the menu?
+ {
+ if (gMartInfo.choicesAbove + gMartInfo.cursor == gMartInfo.itemCount) // are you at cancel?
+ return;
+
+ PlaySE(SE_SELECT);
+ gMartInfo.choicesAbove++;
+ sub_80B403C();
+ sub_80B39D0(7, 7, 0);
+ sub_80B3A70();
+ sub_80B32A4();
+ }
+ else if (gMartInfo.cursor != gMartInfo.itemCount)
+ {
+ PlaySE(SE_SELECT);
+ gMartInfo.cursor = MoveMenuCursor(1);
+ sub_80B3A70();
+ }
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+
+ if (gMartInfo.choicesAbove + gMartInfo.cursor != gMartInfo.itemCount) // did you not hit CANCEL?
+ {
+ PauseVerticalScrollIndicator(0);
+ PauseVerticalScrollIndicator(1);
+ sub_80F979C(1, 1);
+ sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 1);
+ HandleDestroyMenuCursors();
+ MenuZeroFillWindowRect(0, 0xC, 0xD, 0x13);
+
+ if (gMartInfo.martType == MART_TYPE_0)
+ {
+ gMartTotalCost = (ItemId_GetPrice(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]) >> GetPriceReduction(1)); // set 1x price
+ if (!IsEnoughMoney(gSaveBlock1.money, gMartTotalCost))
+ {
+ DisplayItemMessageOnField(taskId, gOtherText_NotEnoughMoney, sub_80B3BD0, 0xC3E1); // tail merge
+ }
+ else // _080B42BA
+ {
+ CopyItemName(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor], gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gOtherText_HowManyYouWant);
+ DisplayItemMessageOnField(taskId, gStringVar4, sub_80B3EFC, 0xC3E1);
+ }
+ }
+ else // _080B428C
+ {
+ gMartTotalCost = gDecorations[gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]].price;
+
+ if (!IsEnoughMoney(gSaveBlock1.money, gMartTotalCost))
+ {
+ DisplayItemMessageOnField(taskId, gOtherText_NotEnoughMoney, sub_80B3BD0, 0xC3E1); // tail merge
+ }
+ else
+ {
+ StringCopy(gStringVar1, gDecorations[gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]].name);
+ ConvertIntToDecimalStringN(gStringVar2, gMartTotalCost, 0, 0x8);
+
+ if (gMartInfo.martType == MART_TYPE_1)
+ {
+ StringExpandPlaceholders(gStringVar4, gOtherText_ThatWillBe2);
+ }
+ else
+ {
+ StringExpandPlaceholders(gStringVar4, gOtherText_ThatWillBe3);
+ }
+ DisplayItemMessageOnField(taskId, gStringVar4, sub_80B3D38, 0xC3E1);
+ }
+ }
+ }
+ else
+ sub_80B43F0(taskId);
+ }
+ else if (gMain.newKeys & B_BUTTON) // go back to buy/sell/exit menu
+ {
+ PlaySE(SE_SELECT);
+ sub_80B43F0(taskId);
+ }
+ }
+}
+
+void sub_80B4378(u8 taskId)
+{
+ MenuZeroFillWindowRect(0, 0xE, 0x1D, 0x13);
+ MenuZeroFillWindowRect(0, 0xA, 0xD, 0xD);
+ sub_80A3FA0(gBGTilemapBuffers[1], 0x1, 0xB, 0xC, 0x2, 0);
+ sub_80B3420();
+ sub_80B3764(6, 7);
+ sub_80B37EC();
+ StartVerticalScrollIndicators(0);
+ StartVerticalScrollIndicators(1);
+ sub_80B32A4();
+ gTasks[taskId].func = sub_80B40E8;
+}
+
+void sub_80B43F0(u8 taskId)
+{
+ gFieldCallback = sub_80B3050;
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gTasks[taskId].func = Task_ExitBuyMenu;
+}
+
+void Task_ExitBuyMenu(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ CloseMoneyWindow(0, 0);
+ BuyMenuFreeMemory();
+ SetMainCallback2(c2_exit_to_overworld_2_switch);
+ DestroyTask(taskId);
+ }
+}
+
+void sub_80B4470(u8 taskId)
+{
+ u16 i;
+
+ for (i = 0; i < 3; i++)
+ {
+ if (gUnknown_02038724[i].itemId == gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]
+ && gUnknown_02038724[i].quantity != 0)
+ {
+ if (gUnknown_02038724[i].quantity + gTasks[taskId].data[1] > 255)
+ gUnknown_02038724[i].quantity = 255;
+ else
+ gUnknown_02038724[i].quantity += gTasks[taskId].data[1];
+ return;
+ }
+ }
+
+ if (gUnknown_02038730 < 3)
+ {
+ gUnknown_02038724[gUnknown_02038730].itemId = gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor];
+ gUnknown_02038724[gUnknown_02038730].quantity = gTasks[taskId].data[1];
+ gUnknown_02038730++;
+ }
+}
+
+void ClearItemPurchases(void)
+{
+ gUnknown_02038730 = 0;
+ ClearItemSlots(gUnknown_02038724, 3);
+}
+
+void CreatePokemartMenu(u16 *itemList)
+{
+ CreateShopMenu(MART_TYPE_0);
+ SetShopItemsForSale(itemList);
+ ClearItemPurchases();
+ SetShopMenuCallback(EnableBothScriptContexts);
+}
+
+void CreateDecorationShop1Menu(u16 *itemList)
+{
+ CreateShopMenu(MART_TYPE_1);
+ SetShopItemsForSale(itemList);
+ SetShopMenuCallback(EnableBothScriptContexts);
+}
+
+void CreateDecorationShop2Menu(u16 *itemList)
+{
+ CreateShopMenu(MART_TYPE_2);
+ SetShopItemsForSale(itemList);
+ SetShopMenuCallback(EnableBothScriptContexts);
+}
+
+void sub_80B45B4(u8 taskId, const s16 *list, u16 c)
+{
+ s16 r5 = gTasks[taskId].data[4] - 1;
+ s16 r3 = gTasks[taskId].data[5] - 1;
+ s16 r4 = gTasks[taskId].data[1];
+ s16 y;
+ s16 x;
+
+ if (gTasks[taskId].data[2] == 0)
+ {
+ for (y = 0; y < 3; y++)
+ {
+ for (x = 0; x < 3; x++)
+ {
+ s16 metatileId = MapGridGetMetatileIdAt(r5 + x, r3 + y);
+
+ if (list[r4] == metatileId)
+ {
+ if (r4 != 2)
+ MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[r4 + 1]);
+ else
+ MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[0]);
+ }
+ }
+ }
+ }
+ else
+ {
+ for (y = 0; y < 3; y++)
+ {
+ for (x = 0; x < 3; x++)
+ {
+ s16 metatileId = MapGridGetMetatileIdAt(r5 + x, r3 + y);
+
+ if (list[2 - r4] == metatileId)
+ {
+ if (r4 != 2)
+ MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[1 - r4]);
+ else
+ MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[2]);
+ }
+ }
+ }
+ }
+}
+
+static const u16 gUnknown_083CC714[] = {0x284, 0x282, 0x280};
+static const u16 gUnknown_083CC71A[] = {0x285, 0x283, 0x281};
+static const u16 gUnknown_083CC720[] = {0x28C, 0x28A, 0x288};
+static const u16 gUnknown_083CC726[] = {0x28D, 0x28B, 0x289};
+static const u16 gUnknown_083CC72C[] = {0x2A0, 0x2A2, 0x2A4};
+static const u16 gUnknown_083CC732[] = {0x2A1, 0x2A3, 0x2A5};
+static const u16 gUnknown_083CC738[] = {0x2A8, 0x2AA, 0x2AC};
+
+void sub_80B4710(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ data[3] = 1;
+
+ switch (data[0])
+ {
+ case 0:
+ sub_80B45B4(taskId, gUnknown_083CC714, 0);
+ break;
+ case 1:
+ sub_80B45B4(taskId, gUnknown_083CC71A, 0);
+ break;
+ case 2:
+ sub_80B45B4(taskId, gUnknown_083CC720, 0xC00);
+ break;
+ case 3:
+ sub_80B45B4(taskId, gUnknown_083CC726, 0);
+ break;
+ case 4:
+ sub_80B45B4(taskId, gUnknown_083CC72C, 0xC00);
+ break;
+ case 5:
+ sub_80B45B4(taskId, gUnknown_083CC732, 0);
+ break;
+ case 6:
+ sub_80B45B4(taskId, gUnknown_083CC738, 0);
+ break;
+ }
+
+ data[0] = (data[0] + 1) & 7;
+ if (!data[0])
+ {
+ DrawWholeMapView();
+ data[1] = (data[1] + 1) % 3;
+ data[3] = 0;
+ }
+}
+
+u8 sub_80B47D8(u16 var)
+{
+ u8 taskId = CreateTask(sub_80B4710, 0);
+ s16 *data = gTasks[taskId].data;
+
+ PlayerGetDestCoords(&data[4], &data[5]);
+ data[0] = 0;
+ data[1] = 0;
+ data[2] = var;
+ sub_80B4710(taskId);
+ return taskId;
+}
+
+void sub_80B4824(u8 var)
+{
+ gUnknown_02038731 = sub_80B47D8(var);
+}
+
+void sub_80B483C(void)
+{
+ DestroyTask(gUnknown_02038731);
+}
+
+bool8 sub_80B4850(void)
+{
+ if (gTasks[gUnknown_02038731].data[3] == 0 && gTasks[gUnknown_02038731].data[1] == 2)
+ return FALSE;
+ else
+ return TRUE;
+}
diff --git a/src/sound.c b/src/sound.c
index 8d23b7d7a..91f5e06a3 100644
--- a/src/sound.c
+++ b/src/sound.c
@@ -4,6 +4,7 @@
#include "battle.h"
#include "m4a.h"
#include "main.h"
+#include "pokemon.h"
#include "songs.h"
#include "task.h"
@@ -13,9 +14,6 @@ struct Fanfare
u16 duration;
};
-// FIXME: different prototype than definition
-u32 SpeciesToCryId(u32);
-
extern u16 gBattleTypeFlags;
static EWRAM_DATA struct MusicPlayerInfo *gMPlay_PokemonCry = NULL;
@@ -355,21 +353,9 @@ void PlayCry5(u16 species, u8 mode)
RestoreBGMVolumeAfterPokemonCry();
}
-#define GET_CRY_PTR(a, b)\
-{\
- struct ToneData *tone;\
- if (v0)\
- tone = &a[index];\
- else\
- tone = &b[index];\
- gMPlay_PokemonCry = SetPokemonCryTone(tone);\
- break;\
-}
-
static void PlayCryInternal(u16 species, s8 pan, s8 volume, u8 priority, u8 mode)
{
- u32 cryId;
- u32 v0;
+ bool32 v0;
u32 release;
u32 length;
u32 pitch;
@@ -378,10 +364,7 @@ static void PlayCryInternal(u16 species, s8 pan, s8 volume, u8 priority, u8 mode
u8 table;
species--;
-
- cryId = species;
-
- v0 = 0;
+ v0 = FALSE;
release = 0;
length = 140;
pitch = 15360;
@@ -427,26 +410,28 @@ static void PlayCryInternal(u16 species, s8 pan, s8 volume, u8 priority, u8 mode
SetPokemonCryChorus(chorus);
SetPokemonCryPriority(priority);
- asm("");
- asm("");
- asm("");
- asm("");
- asm("");
- asm("");
- asm("");
-
- cryId = SpeciesToCryId(cryId);
- index = 0x7F;
- asm("" ::: "r0");
- index &= cryId;
- table = cryId >> 7;
+ species = SpeciesToCryId(species);
+ index = species & 0x7F;
+ table = species >> 7;
switch (table)
{
- case 0: GET_CRY_PTR(voicegroup_84537C0, voicegroup_8452590);
- case 1: GET_CRY_PTR(voicegroup_8453DC0, voicegroup_8452B90);
- case 2: GET_CRY_PTR(voicegroup_84543C0, voicegroup_8453190);
- case 3: GET_CRY_PTR(voicegroup_84549C0, voicegroup_8453790);
+ case 0:
+ gMPlay_PokemonCry = SetPokemonCryTone(
+ v0 ? &voicegroup_84537C0[index] : &voicegroup_8452590[index]);
+ break;
+ case 1:
+ gMPlay_PokemonCry = SetPokemonCryTone(
+ v0 ? &voicegroup_8453DC0[index] : &voicegroup_8452B90[index]);
+ break;
+ case 2:
+ gMPlay_PokemonCry = SetPokemonCryTone(
+ v0 ? &voicegroup_84543C0[index] : &voicegroup_8453190[index]);
+ break;
+ case 3:
+ gMPlay_PokemonCry = SetPokemonCryTone(
+ v0 ? &voicegroup_84549C0[index] : &voicegroup_8453790[index]);
+ break;
}
}
diff --git a/src/start_menu.c b/src/start_menu.c
index 411690aff..6e44090df 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -15,7 +15,7 @@
#include "pokedex.h"
#include "pokemon_menu.h"
#include "pokenav.h"
-#include "rom4.h"
+#include "overworld.h"
#include "safari_zone.h"
#include "save.h"
#include "save_menu_util.h"
@@ -505,7 +505,7 @@ static u8 RunSaveDialogCallback(void)
return saveDialogCallback();
}
-void InitSaveDialog(void)
+void ScrSpecial_DoSaveDialog(void)
{
sub_807160C();
CreateTask(Task_SaveDialog, 0x50);
@@ -515,7 +515,7 @@ static void DisplaySaveMessageWithCallback(const u8 *ptr, u8 (*func)(void))
{
StringExpandPlaceholders(gStringVar4, ptr);
MenuDisplayMessageBox();
- sub_8072044(gStringVar4);
+ MenuPrintMessageDefaultCoords(gStringVar4);
savingComplete = TRUE;
saveDialogCallback = func;
}
diff --git a/src/strings.c b/src/strings.c
index 219c5bec1..6c8dce9d6 100644
--- a/src/strings.c
+++ b/src/strings.c
@@ -861,7 +861,7 @@ const u8 gOtherText_AtBattleStart[] = _("At the battle’s start.");
const u8 gOtherText_UponWinningBattle[] = _("Upon winning a battle.");
const u8 gOtherText_UponLosingBattle[] = _("Upon losing a battle.");
-// mauville_old_man?
+// mauville_man?
const u8 gOtherText_TheBardsSong[] = _("The BARD’s Song");
const u8 gOtherText_WhatsHipHappening[] = _("What’s hip and happening?");
const u8 gOtherText_Interview[] = _("Interview");
@@ -1781,7 +1781,7 @@ const u8 gOtherText_AtBattleStart[] = _("Zum Kampfbeginn");
const u8 gOtherText_UponWinningBattle[] = _("Über den Sieg");
const u8 gOtherText_UponLosingBattle[] = _("Über die Niederlage");
-// mauville_old_man?
+// mauville_man?
const u8 gOtherText_TheBardsSong[] = _("Das BARDEN-Lied");
const u8 gOtherText_WhatsHipHappening[] = _("Was ist hip? Was ist top?");
const u8 gOtherText_Interview[] = _("Interview");
diff --git a/src/time_events.c b/src/time_events.c
index e1b9a2e9e..accb03db8 100644
--- a/src/time_events.c
+++ b/src/time_events.c
@@ -4,7 +4,7 @@
#include "field_weather.h"
#include "pokemon.h"
#include "rng.h"
-#include "rom4.h"
+#include "overworld.h"
#include "rtc.h"
#include "script.h"
#include "task.h"
@@ -81,13 +81,13 @@ void UpdateShoalTideFlag(void)
1,
};
- if (is_light_level_1_2_3_5_or_6(get_map_light_from_warp0()))
+ if (is_map_type_1_2_3_5_or_6(get_map_type_from_warp0()))
{
RtcCalcLocalTime();
if (tide[gLocalTime.hours])
FlagSet(SYS_SHOAL_TIDE);
else
- FlagReset(SYS_SHOAL_TIDE);
+ FlagClear(SYS_SHOAL_TIDE);
}
}
diff --git a/src/title_screen.c b/src/title_screen.c
index ab0f1d505..2503b0654 100644
--- a/src/title_screen.c
+++ b/src/title_screen.c
@@ -437,99 +437,99 @@ __attribute__((naked))
static void CreatePressStartBanner(s16 x, s16 y)
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- lsls r0, 16\n\
- ldr r2, _0807C3AC @ =0xffe00000\n\
- adds r0, r2\n\
- lsrs r0, 16\n\
- movs r6, 0\n\
- lsls r1, 16\n\
- mov r10, r1\n\
- mov r8, r10\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ lsls r0, 16\n\
+ ldr r2, _0807C3AC @ =0xffe00000\n\
+ adds r0, r2\n\
+ lsrs r0, 16\n\
+ movs r6, 0\n\
+ lsls r1, 16\n\
+ mov r10, r1\n\
+ mov r8, r10\n\
_0807C302:\n\
- lsls r5, r0, 16\n\
- asrs r5, 16\n\
- ldr r0, _0807C3B0 @ =sStartCopyrightBannerSpriteTemplate\n\
- adds r1, r5, 0\n\
- mov r3, r8\n\
- asrs r2, r3, 16\n\
- movs r3, 0\n\
- bl CreateSprite\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- lsls r4, r0, 4\n\
- adds r4, r0\n\
- lsls r4, 2\n\
- ldr r0, _0807C3B4 @ =gSprites\n\
- mov r9, r0\n\
- add r4, r9\n\
- adds r0, r4, 0\n\
- adds r1, r6, 0\n\
- bl StartSpriteAnim\n\
- movs r7, 0x1\n\
- strh r7, [r4, 0x2E]\n\
- adds r0, r6, 0x1\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- adds r5, 0x20\n\
- lsls r5, 16\n\
- lsrs r0, r5, 16\n\
- cmp r6, 0x2\n\
- bls _0807C302\n\
- ldr r1, _0807C3B0 @ =sStartCopyrightBannerSpriteTemplate\n\
- mov r8, r1\n\
- lsls r5, r0, 16\n\
- asrs r5, 16\n\
- mov r2, r10\n\
- asrs r6, r2, 16\n\
- mov r0, r8\n\
- adds r1, r5, 0\n\
- adds r2, r6, 0\n\
- movs r3, 0\n\
- bl CreateSprite\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- lsls r4, r0, 4\n\
- adds r4, r0\n\
- lsls r4, 2\n\
- add r4, r9\n\
- adds r0, r4, 0\n\
- movs r1, 0x8\n\
- bl StartSpriteAnim\n\
- strh r7, [r4, 0x2E]\n\
- subs r5, 0x60\n\
- lsls r5, 16\n\
- asrs r5, 16\n\
- subs r6, 0x8\n\
- lsls r6, 16\n\
- asrs r6, 16\n\
- mov r0, r8\n\
- adds r1, r5, 0\n\
- adds r2, r6, 0\n\
- movs r3, 0\n\
- bl CreateSprite\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- lsls r4, r0, 4\n\
- adds r4, r0\n\
- lsls r4, 2\n\
- add r4, r9\n\
- adds r0, r4, 0\n\
- movs r1, 0x9\n\
- bl StartSpriteAnim\n\
- strh r7, [r4, 0x2E]\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\
+ lsls r5, r0, 16\n\
+ asrs r5, 16\n\
+ ldr r0, _0807C3B0 @ =sStartCopyrightBannerSpriteTemplate\n\
+ adds r1, r5, 0\n\
+ mov r3, r8\n\
+ asrs r2, r3, 16\n\
+ movs r3, 0\n\
+ bl CreateSprite\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ lsls r4, r0, 4\n\
+ adds r4, r0\n\
+ lsls r4, 2\n\
+ ldr r0, _0807C3B4 @ =gSprites\n\
+ mov r9, r0\n\
+ add r4, r9\n\
+ adds r0, r4, 0\n\
+ adds r1, r6, 0\n\
+ bl StartSpriteAnim\n\
+ movs r7, 0x1\n\
+ strh r7, [r4, 0x2E]\n\
+ adds r0, r6, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r6, r0, 24\n\
+ adds r5, 0x20\n\
+ lsls r5, 16\n\
+ lsrs r0, r5, 16\n\
+ cmp r6, 0x2\n\
+ bls _0807C302\n\
+ ldr r1, _0807C3B0 @ =sStartCopyrightBannerSpriteTemplate\n\
+ mov r8, r1\n\
+ lsls r5, r0, 16\n\
+ asrs r5, 16\n\
+ mov r2, r10\n\
+ asrs r6, r2, 16\n\
+ mov r0, r8\n\
+ adds r1, r5, 0\n\
+ adds r2, r6, 0\n\
+ movs r3, 0\n\
+ bl CreateSprite\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ lsls r4, r0, 4\n\
+ adds r4, r0\n\
+ lsls r4, 2\n\
+ add r4, r9\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x8\n\
+ bl StartSpriteAnim\n\
+ strh r7, [r4, 0x2E]\n\
+ subs r5, 0x60\n\
+ lsls r5, 16\n\
+ asrs r5, 16\n\
+ subs r6, 0x8\n\
+ lsls r6, 16\n\
+ asrs r6, 16\n\
+ mov r0, r8\n\
+ adds r1, r5, 0\n\
+ adds r2, r6, 0\n\
+ movs r3, 0\n\
+ bl CreateSprite\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ lsls r4, r0, 4\n\
+ adds r4, r0\n\
+ lsls r4, 2\n\
+ add r4, r9\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x9\n\
+ bl StartSpriteAnim\n\
+ strh r7, [r4, 0x2E]\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\
_0807C3AC: .4byte 0xffe00000\n\
_0807C3B0: .4byte sStartCopyrightBannerSpriteTemplate\n\
_0807C3B4: .4byte gSprites\n\
diff --git a/src/trade.c b/src/trade.c
index cb190d194..0816fe555 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -37,6 +37,7 @@ struct UnkStructD {
extern const struct InGameTrade gIngameTrades[];
extern const u16 gIngameTradeMail[][10];
+IWRAM_DATA u8 gUnknown_03000508[8];
void sub_804A96C(struct UnkStructD *arg0, u8 left, u8 top, u16 *tilemap, u8 width, u8 height, u16 sp8) {
int y, x;
diff --git a/src/trader.c b/src/trader.c
index ea06058e9..61f48fad8 100644
--- a/src/trader.c
+++ b/src/trader.c
@@ -3,6 +3,7 @@
#include "decoration_inventory.h"
#include "event_data.h"
#include "main.h"
+#include "mauville_man.h"
#include "menu.h"
#include "menu_helpers.h"
#include "script.h"
@@ -36,7 +37,7 @@ void sub_810993C(void)
{
u8 i, j;
u8 buffer[12];
- struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader;
+ struct MauvilleManTrader *trader = &gSaveBlock1.mauvilleMan.trader;
for (i = 0; i < 3; i++)
{
@@ -55,13 +56,13 @@ void sub_810993C(void)
}
}
-void sub_81099CC(void)
+void TraderSetup(void)
{
u8 i;
- struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader;
+ struct MauvilleManTrader *trader = &gSaveBlock1.mauvilleMan.trader;
- trader->unk0 = 2;
- trader->unk31 = 0;
+ trader->id = MAUVILLE_MAN_TRADER;
+ trader->alreadyTraded = FALSE;
for (i = 0; i < 4; i++)
{
@@ -74,8 +75,8 @@ void sub_81099CC(void)
void sub_8109A20(void)
{
- struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader;
- trader->unk31 = 0;
+ struct MauvilleManTrader *trader = &gSaveBlock1.mauvilleMan.trader;
+ trader->alreadyTraded = FALSE;
}
void sub_8109A30(u8 value)
@@ -83,12 +84,12 @@ void sub_8109A30(u8 value)
VarSet(VAR_RECYCLE_GOODS, value);
}
-void sub_8109A48(u8 taskId)
+void CreateAvailableDecorationsMenu(u8 taskId)
{
u8 i;
u8 numChoices = 1;
u8 numDecorations = 0;
- struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader;
+ struct MauvilleManTrader *trader = &gSaveBlock1.mauvilleMan.trader;
for (i = 0; i < 4; i++)
{
@@ -139,9 +140,9 @@ void sub_8109B34(u8 taskId, u8 decorationId)
EnableBothScriptContexts();
}
-void sub_8109B7C(u8 taskId)
+void Task_HandleGetDecorationMenuInput(u8 taskId)
{
- struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader;
+ struct MauvilleManTrader *trader = &gSaveBlock1.mauvilleMan.trader;
if (gMain.newKeys & DPAD_UP)
{
@@ -174,13 +175,13 @@ void sub_8109B7C(u8 taskId)
}
}
-void sub_8109C44(void)
+void ScrSpecial_GetTraderTradedFlag(void)
{
- struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader;
- gScriptResult = trader->unk31;
+ struct MauvilleManTrader *trader = &gSaveBlock1.mauvilleMan.trader;
+ gScriptResult = trader->alreadyTraded;
}
-void sub_8109C58(void)
+void ScrSpecial_DoesPlayerHaveNoDecorations(void)
{
u8 i;
@@ -195,7 +196,7 @@ void sub_8109C58(void)
gScriptResult = TRUE;
}
-void sub_8109C90(void)
+void ScrSpecial_IsDecorationFull(void)
{
gScriptResult = FALSE;
if (gDecorations[gSpecialVar_0x8004].category != gDecorations[gSpecialVar_0x8006].category
@@ -206,7 +207,7 @@ void sub_8109C90(void)
}
}
-void sub_8109CF0(void)
+void ScrSpecial_TraderMenuGiveDecoration(void)
{
CreateTask(sub_80FE7A8, 0);
}
@@ -242,20 +243,20 @@ void sub_8109DAC(u8 taskId)
EnableBothScriptContexts();
}
-void sub_8109DE0(void)
+void ScrSpecial_TraderDoDecorationTrade(void)
{
- struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader;
+ struct MauvilleManTrader *trader = &gSaveBlock1.mauvilleMan.trader;
sub_81340A8(gSpecialVar_0x8006);
IsThereStorageSpaceForDecoration(gSpecialVar_0x8004);
StringCopy(trader->unk5[gSpecialVar_0x8005], gSaveBlock2.playerName);
trader->unk1[gSpecialVar_0x8005] = gSpecialVar_0x8006;
sub_810993C();
- trader->unk31 = 1;
+ trader->alreadyTraded = TRUE;
}
-void sub_8109E34(void)
+void ScrSpecial_TraderMenuGetDecoration(void)
{
- u8 taskId = CreateTask(sub_8109B7C, 0);
- sub_8109A48(taskId);
+ u8 taskId = CreateTask(Task_HandleGetDecorationMenuInput, 0);
+ CreateAvailableDecorationsMenu(taskId);
}
diff --git a/src/trainer_card.c b/src/trainer_card.c
index 626c5a7bf..bcb62ede6 100644
--- a/src/trainer_card.c
+++ b/src/trainer_card.c
@@ -10,7 +10,7 @@
#include "money.h"
#include "palette.h"
#include "pokedex.h"
-#include "rom4.h"
+#include "overworld.h"
#include "script_pokemon_80C4.h"
#include "songs.h"
#include "sound.h"
@@ -509,7 +509,7 @@ static void sub_8093688(void)
ewram0.var_5 = 0;
ewram0.var_6 = 0;
for (i = 0; i < 4; i++)
- sub_80EB3FC(ewram0.var_20[i], ewram0.var_64.var_28[i]);
+ EasyChat_GetWordText(ewram0.var_20[i], ewram0.var_64.var_28[i]);
sub_80936D4();
}
diff --git a/src/trainer_see.c b/src/trainer_see.c
index feb35c67c..5a8ebbafc 100644
--- a/src/trainer_see.c
+++ b/src/trainer_see.c
@@ -9,113 +9,132 @@
#include "task.h"
#include "util.h"
-extern bool8 (*gIsTrainerInRange[])(struct MapObject *, u16, s16, s16);
-extern bool8 (*gTrainerSeeFuncList[])(u8, struct Task *, struct MapObject *);
-extern bool8 (*gTrainerSeeFuncList2[])(u8, struct Task *, struct MapObject *);
+const u8 gSpriteImage_839B308[] = INCBIN_U8("graphics/unknown_sprites/839B4E0/0.4bpp");
+const u8 gSpriteImage_839B388[] = INCBIN_U8("graphics/unknown_sprites/839B4E0/1.4bpp");
+const u8 gSpriteImage_839B408[] = INCBIN_U8("graphics/unknown_sprites/839B408.4bpp");
+
+u8 GetTrainerApproachDistanceSouth(struct MapObject *trainerObj, s16 range, s16 x, s16 y);
+u8 GetTrainerApproachDistanceNorth(struct MapObject *trainerObj, s16 range, s16 x, s16 y);
+u8 GetTrainerApproachDistanceWest(struct MapObject *trainerObj, s16 range, s16 x, s16 y);
+u8 GetTrainerApproachDistanceEast(struct MapObject *trainerObj, s16 range, s16 x, s16 y);
+
+static u8 (*const sDirectionalApproachDistanceFuncs[])(struct MapObject *, s16, s16, s16) =
+{
+ GetTrainerApproachDistanceSouth,
+ GetTrainerApproachDistanceNorth,
+ GetTrainerApproachDistanceWest,
+ GetTrainerApproachDistanceEast,
+};
extern struct SpriteTemplate gSpriteTemplate_839B510;
extern struct SpriteTemplate gSpriteTemplate_839B528;
bool8 CheckTrainers(void)
{
- u8 i;
+ u8 mapObjId;
- for (i = 0; i < 16; i++)
+ for (mapObjId = 0; mapObjId < 16; mapObjId++)
{
- if ( gMapObjects[i].active )
- if ( gMapObjects[i].trainerType == 1 || gMapObjects[i].trainerType == 3 )
- if ( CheckTrainer(i) )
- return TRUE;
+ if (gMapObjects[mapObjId].active
+ && (gMapObjects[mapObjId].trainerType == 1 || gMapObjects[mapObjId].trainerType == 3)
+ && CheckTrainer(mapObjId))
+ return TRUE;
}
return FALSE;
}
-bool8 CheckTrainer(u8 trainer)
+bool8 CheckTrainer(u8 mapObjId)
{
- u8 *scriptPtr = GetFieldObjectScriptPointerByFieldObjectId(trainer);
+ u8 *scriptPtr = GetFieldObjectScriptPointerByFieldObjectId(mapObjId);
- if (GetTrainerFlagFromScriptPointer(scriptPtr))
- return FALSE;
- else
- {
- struct MapObject *trainerObj = &gMapObjects[trainer];
- u8 canApproach = TrainerCanApproachPlayer(trainerObj);
+ if (GetTrainerFlagFromScriptPointer(scriptPtr))
+ {
+ return FALSE;
+ }
+ else
+ {
+ struct MapObject *trainerObj = &gMapObjects[mapObjId];
+ bool8 canApproach = TrainerCanApproachPlayer(trainerObj);
- if (canApproach != 0)
+ if (canApproach)
{
- TrainerWantsBattle(trainer, scriptPtr);
- sub_80842C8(trainerObj, (canApproach - 1));
- return TRUE;
+ TrainerWantsBattle(mapObjId, scriptPtr);
+ sub_80842C8(trainerObj, (canApproach - 1));
+ return TRUE;
}
- else
- {
- return FALSE;
- }
- }
+ else
+ {
+ return FALSE;
+ }
+ }
}
bool8 TrainerCanApproachPlayer(struct MapObject *trainerObj)
{
s16 x, y;
u8 i;
- u8 playerCoord;
+ u8 approachDistance;
PlayerGetDestCoords(&x, &y);
- if ( trainerObj->trainerType == 1 ) // trainers that don't spin
+ if (trainerObj->trainerType == 1) // can only see in one direction
{
- playerCoord = gIsTrainerInRange[trainerObj->mapobj_unk_18 - 1](trainerObj, trainerObj->trainerRange_berryTreeId, x, y);
- return CheckPathBetweenTrainerAndPlayer((struct MapObject2 *)trainerObj, playerCoord, trainerObj->mapobj_unk_18);
+ approachDistance = sDirectionalApproachDistanceFuncs[trainerObj->mapobj_unk_18 - 1](trainerObj, trainerObj->trainerRange_berryTreeId, x, y);
+ return CheckPathBetweenTrainerAndPlayer((struct MapObject2 *)trainerObj, approachDistance, trainerObj->mapobj_unk_18);
}
- else // spinners
+ else // can see in all directions
{
for (i = 0; i < 4; i++)
{
- playerCoord = gIsTrainerInRange[i](trainerObj, trainerObj->trainerRange_berryTreeId, x, y);
- if ( CheckPathBetweenTrainerAndPlayer((struct MapObject2 *)trainerObj, playerCoord, i + 1) ) // directions are 1-4 instead of 0-3. south north west east
- return playerCoord;
+ approachDistance = sDirectionalApproachDistanceFuncs[i](trainerObj, trainerObj->trainerRange_berryTreeId, x, y);
+ if (CheckPathBetweenTrainerAndPlayer((struct MapObject2 *)trainerObj, approachDistance, i + 1)) // directions are 1-4 instead of 0-3. south north west east
+ return approachDistance;
}
- return FALSE;
}
+ return FALSE;
}
-bool8 IsTrainerInRangeSouth(struct MapObject *trainerObj, s16 vision, s16 x, s16 y)
+// Returns how far south the player is from trainer. 0 if out of trainer's sight.
+u8 GetTrainerApproachDistanceSouth(struct MapObject *trainerObj, s16 range, s16 x, s16 y)
{
- if ( trainerObj->coords2.x == x
- && y > trainerObj->coords2.y
- && y <= trainerObj->coords2.y + vision )
+ if (trainerObj->coords2.x == x
+ && y > trainerObj->coords2.y
+ && y <= trainerObj->coords2.y + range)
return (y - trainerObj->coords2.y);
else
- return FALSE;
+ return 0;
}
-bool8 IsTrainerInRangeNorth(struct MapObject *trainerObj, s16 vision, s16 x, s16 y)
+// Returns how far north the player is from trainer. 0 if out of trainer's sight.
+u8 GetTrainerApproachDistanceNorth(struct MapObject *trainerObj, s16 range, s16 x, s16 y)
{
- if ( trainerObj->coords2.x == x
- && y < trainerObj->coords2.y
- && y >= trainerObj->coords2.y - vision )
+ if (trainerObj->coords2.x == x
+ && y < trainerObj->coords2.y
+ && y >= trainerObj->coords2.y - range)
return (trainerObj->coords2.y - y);
else
- return FALSE;
+ return 0;
}
-bool8 IsTrainerInRangeWest(struct MapObject *trainerObj, s16 vision, s16 x, s16 y)
+// Returns how far west the player is from trainer. 0 if out of trainer's sight.
+u8 GetTrainerApproachDistanceWest(struct MapObject *trainerObj, s16 range, s16 x, s16 y)
{
- if ( trainerObj->coords2.y == y
- && x < trainerObj->coords2.x
- && x >= trainerObj->coords2.x - vision )
+ if (trainerObj->coords2.y == y
+ && x < trainerObj->coords2.x
+ && x >= trainerObj->coords2.x - range)
return (trainerObj->coords2.x - x);
else
- return FALSE;
+ return 0;
}
-bool8 IsTrainerInRangeEast(struct MapObject *trainerObj, s16 vision, s16 x, s16 y)
+// Returns how far east the player is from trainer. 0 if out of trainer's sight.
+u8 GetTrainerApproachDistanceEast(struct MapObject *trainerObj, s16 range, s16 x, s16 y)
{
- if ( trainerObj->coords2.y == y
- && x > trainerObj->coords2.x
- && x <= trainerObj->coords2.x + vision )
+ if (trainerObj->coords2.y == y
+ && x > trainerObj->coords2.x
+ && x <= trainerObj->coords2.x + range)
return (x - trainerObj->coords2.x);
else
- return FALSE;
+ return 0;
}
#ifdef BUGFIX_TRAINERAPPROACH
@@ -124,25 +143,24 @@ bool8 IsTrainerInRangeEast(struct MapObject *trainerObj, s16 vision, s16 x, s16
#define COLLISION_MASK 1
#endif
-bool8 CheckPathBetweenTrainerAndPlayer(struct MapObject2 *trainerObj, u8 playerCoord, u8 direction)
+bool8 CheckPathBetweenTrainerAndPlayer(struct MapObject2 *trainerObj, u8 approachDistance, u8 direction)
{
s16 x, y;
u8 unk19_temp;
u8 unk19b_temp;
u8 i;
- u8 var;
+ u8 collision;
- if (!playerCoord)
+ if (approachDistance == 0)
return FALSE;
x = trainerObj->coords2.x;
y = trainerObj->coords2.y;
- for (i = 0; i <= playerCoord - 1; i++, MoveCoords(direction, &x, &y))
+ for (i = 0; i <= approachDistance - 1; i++, MoveCoords(direction, &x, &y))
{
- var = sub_8060024((struct MapObject *)trainerObj, x, y, direction);
-
- if (var && (var & COLLISION_MASK))
+ collision = sub_8060024((struct MapObject *)trainerObj, x, y, direction);
+ if (collision != 0 && (collision & COLLISION_MASK))
return FALSE;
}
@@ -152,176 +170,212 @@ bool8 CheckPathBetweenTrainerAndPlayer(struct MapObject2 *trainerObj, u8 playerC
trainerObj->mapobj_unk_19 = 0;
trainerObj->mapobj_unk_19b = 0;
- var = npc_block_way((struct MapObject *)trainerObj, x, y, direction);
+ collision = npc_block_way((struct MapObject *)trainerObj, x, y, direction);
trainerObj->mapobj_unk_19 = unk19_temp;
trainerObj->mapobj_unk_19b = unk19b_temp;
- if (var == 4)
- return playerCoord;
+ if (collision == 4)
+ return approachDistance;
return FALSE;
}
-void sub_80842C8(struct MapObject *trainerObj, u8 taskId)
+#define tTrainerObjHi data[1]
+#define tTrainerObjLo data[2]
+
+void sub_80842C8(struct MapObject *trainerObj, u8 b)
{
- struct Task *task = &gTasks[CreateTask(RunTrainerSeeFuncList, 0x50)];
+ u8 taskId = CreateTask(RunTrainerSeeFuncList, 0x50);
+ struct Task *task = &gTasks[taskId];
- task->data[1] = (u32)(trainerObj) >> 16;
- task->data[2] = (u32)(trainerObj);
- task->data[3] = taskId;
+ task->tTrainerObjHi = (u32)(trainerObj) >> 16;
+ task->tTrainerObjLo = (u32)(trainerObj);
+ task->data[3] = b;
}
-void sub_80842FC(TaskFunc func)
+void sub_80842FC(TaskFunc followupFunc)
{
- TaskFunc func2 = RunTrainerSeeFuncList;
- u8 taskId = FindTaskIdByFunc(func2);
+ TaskFunc taskFunc = RunTrainerSeeFuncList;
+ u8 taskId = FindTaskIdByFunc(taskFunc);
- SetTaskFuncWithFollowupFunc(taskId, RunTrainerSeeFuncList, func);
+ SetTaskFuncWithFollowupFunc(taskId, taskFunc, followupFunc);
gTasks[taskId].data[0] = 1;
- func2(taskId);
-}
+ taskFunc(taskId);
+}
+
+static bool8 sub_8084394(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+static bool8 sub_8084398(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+static bool8 sub_80843DC(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+static bool8 sub_808441C(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+static bool8 sub_8084478(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+static bool8 sub_8084534(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+static bool8 sub_8084578(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+static bool8 sub_80845AC(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+static bool8 sub_80845C8(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+static bool8 sub_80845FC(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+static bool8 sub_8084654(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+static bool8 sub_80846C8(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+
+static bool8 (*const gTrainerSeeFuncList[])(u8 taskId, struct Task *task, struct MapObject *trainerObj) =
+{
+ sub_8084394,
+ sub_8084398,
+ sub_80843DC,
+ sub_808441C,
+ sub_8084478,
+ sub_8084534,
+ sub_8084578,
+ sub_80845AC,
+ sub_80845C8,
+ sub_80845FC,
+ sub_8084654,
+ sub_80846C8,
+};
void RunTrainerSeeFuncList(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- struct MapObject *trainerObj = (struct MapObject *)((task->data[1] << 16) | (task->data[2]));
+ struct MapObject *trainerObj = (struct MapObject *)((task->tTrainerObjHi << 16) | (task->tTrainerObjLo));
if (!trainerObj->active)
+ {
SwitchTaskToFollowupFunc(taskId);
+ }
else
- while (gTrainerSeeFuncList[task->data[0]](taskId, task, trainerObj));
+ {
+ while (gTrainerSeeFuncList[task->data[0]](taskId, task, trainerObj))
+ ;
+ }
}
-u8 sub_8084394() // cant be void because it is called with RunTrainerSeeFuncList with arguments.
+static bool8 sub_8084394(u8 taskId, struct Task *task, struct MapObject *trainerObj) // cant be void because it is called with RunTrainerSeeFuncList with arguments.
{
- return 0;
+ return FALSE;
}
-s8 sub_8084398(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+static bool8 sub_8084398(u8 taskId, struct Task *task, struct MapObject *trainerObj)
{
u8 direction;
- FieldObjectGetLocalIdAndMap(trainerObj, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]);
- FieldEffectStart(0);
-
+ FieldObjectGetLocalIdAndMap(trainerObj, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]);
+ FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON_1);
direction = GetFaceDirectionAnimId(trainerObj->mapobj_unk_18);
-
FieldObjectSetSpecialAnim(trainerObj, direction);
task->data[0]++;
- return 1;
+ return TRUE;
}
-s8 sub_80843DC(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+static bool8 sub_80843DC(u8 taskId, struct Task *task, struct MapObject *trainerObj)
{
if (FieldEffectActiveListContains(0))
- return 0;
+ {
+ return FALSE;
+ }
else
{
task->data[0]++;
- if ((u8)(trainerObj->animPattern - 57) <= 1)
+ if (trainerObj->animPattern == 57 || trainerObj->animPattern == 58)
task->data[0] = 6;
if (trainerObj->animPattern == 63)
task->data[0] = 8;
- return 1;
+ return TRUE;
}
}
-s8 sub_808441C(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+static bool8 sub_808441C(u8 taskId, struct Task *task, struct MapObject *trainerObj)
{
if (!(FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj)) || FieldObjectClearAnimIfSpecialAnimFinished(trainerObj))
{
- if (task->data[3])
- {
- FieldObjectSetSpecialAnim(trainerObj, GetGoSpeed0AnimId(trainerObj->mapobj_unk_18));
- task->data[3]--;
- }
- else
- {
- FieldObjectSetSpecialAnim(trainerObj, 0x3E);
- task->data[0]++;
- }
+ if (task->data[3])
+ {
+ FieldObjectSetSpecialAnim(trainerObj, GetGoSpeed0AnimId(trainerObj->mapobj_unk_18));
+ task->data[3]--;
+ }
+ else
+ {
+ FieldObjectSetSpecialAnim(trainerObj, 0x3E);
+ task->data[0]++;
+ }
}
- return 0;
+ return FALSE;
}
-s8 sub_8084478(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+static bool8 sub_8084478(u8 taskId, struct Task *task, struct MapObject *trainerObj)
{
struct MapObject *playerObj;
if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj) && !FieldObjectClearAnimIfSpecialAnimFinished(trainerObj))
- return 0;
+ return FALSE;
npc_set_running_behaviour_etc(trainerObj, npc_running_behaviour_by_direction(trainerObj->mapobj_unk_18));
sub_805C774(trainerObj, npc_running_behaviour_by_direction(trainerObj->mapobj_unk_18));
sub_805C754(trainerObj);
playerObj = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(playerObj)
- && !FieldObjectClearAnimIfSpecialAnimFinished(playerObj))
- return 0;
+ if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(playerObj) && !FieldObjectClearAnimIfSpecialAnimFinished(playerObj))
+ return FALSE;
sub_80597E8();
FieldObjectSetSpecialAnim(&gMapObjects[gPlayerAvatar.mapObjectId], GetFaceDirectionAnimId(GetOppositeDirection(trainerObj->mapobj_unk_18)));
task->data[0]++;
- return 0;
+ return FALSE;
}
-s8 sub_8084534(u8 taskId, struct Task *task, struct MapObject *trainerObj) // technically only 1 parameter, but needs all 3 for TrainerSeeFuncList call.
+static bool8 sub_8084534(u8 taskId, struct Task *task, struct MapObject *trainerObj) // technically only 1 parameter, but needs all 3 for TrainerSeeFuncList call.
{
struct MapObject *playerObj = &gMapObjects[gPlayerAvatar.mapObjectId];
- if ( !FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(playerObj)
- || FieldObjectClearAnimIfSpecialAnimFinished(playerObj) )
- SwitchTaskToFollowupFunc(taskId);
-
- return 0;
+ if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(playerObj)
+ || FieldObjectClearAnimIfSpecialAnimFinished(playerObj))
+ SwitchTaskToFollowupFunc(taskId);
+ return FALSE;
}
-s8 sub_8084578(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+static bool8 sub_8084578(u8 taskId, struct Task *task, struct MapObject *trainerObj)
{
if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj)
- || FieldObjectClearAnimIfSpecialAnimFinished(trainerObj))
+ || FieldObjectClearAnimIfSpecialAnimFinished(trainerObj))
{
FieldObjectSetSpecialAnim(trainerObj, 0x59);
task->data[0]++;
}
- return 0;
+ return FALSE;
}
-s8 sub_80845AC(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+static bool8 sub_80845AC(u8 taskId, struct Task *task, struct MapObject *trainerObj)
{
- if ( FieldObjectClearAnimIfSpecialAnimFinished(trainerObj) )
+ if (FieldObjectClearAnimIfSpecialAnimFinished(trainerObj))
task->data[0] = 3;
- return 0;
+ return FALSE;
}
-s8 sub_80845C8(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+static bool8 sub_80845C8(u8 taskId, struct Task *task, struct MapObject *trainerObj)
{
if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj)
- || FieldObjectClearAnimIfSpecialAnimFinished(trainerObj))
+ || FieldObjectClearAnimIfSpecialAnimFinished(trainerObj))
{
FieldObjectSetSpecialAnim(trainerObj, 0x3E);
task->data[0]++;
}
- return 0;
+ return FALSE;
}
-s8 sub_80845FC(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+static bool8 sub_80845FC(u8 taskId, struct Task *task, struct MapObject *trainerObj)
{
if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(trainerObj))
{
- gUnknown_0202FF84[0] = trainerObj->coords2.x;
- gUnknown_0202FF84[1] = trainerObj->coords2.y;
- gUnknown_0202FF84[2] = gSprites[trainerObj->spriteId].subpriority - 1;
- gUnknown_0202FF84[3] = 2;
- task->data[4] = FieldEffectStart(49);
+ gFieldEffectArguments[0] = trainerObj->coords2.x;
+ gFieldEffectArguments[1] = trainerObj->coords2.y;
+ gFieldEffectArguments[2] = gSprites[trainerObj->spriteId].subpriority - 1;
+ gFieldEffectArguments[3] = 2;
+ task->data[4] = FieldEffectStart(FLDEFF_POP_OUT_OF_ASH);
task->data[0]++;
}
- return 0;
+ return FALSE;
}
-s8 sub_8084654(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+static bool8 sub_8084654(u8 taskId, struct Task *task, struct MapObject *trainerObj)
{
struct Sprite *sprite;
@@ -336,17 +390,25 @@ s8 sub_8084654(u8 taskId, struct Task *task, struct MapObject *trainerObj)
FieldObjectSetSpecialAnim(trainerObj, sub_806084C(trainerObj->mapobj_unk_18));
task->data[0]++;
}
- return 0;
+ return FALSE;
}
-s8 sub_80846C8(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+static bool8 sub_80846C8(u8 taskId, struct Task *task, struct MapObject *trainerObj)
{
if (!FieldEffectActiveListContains(49))
task->data[0] = 3;
- return 0;
+ return FALSE;
}
+static bool8 (*const gTrainerSeeFuncList2[])(u8, struct Task *, struct MapObject *) =
+{
+ sub_80845C8,
+ sub_80845FC,
+ sub_8084654,
+ sub_80846C8,
+};
+
void sub_80846E4(u8 taskId)
{
struct Task *task = &gTasks[taskId];
@@ -375,12 +437,14 @@ void sub_8084794(struct MapObject *var)
StoreWordInTwoHalfwords(&gTasks[CreateTask(sub_80846E4, 0)].data[1], (u32)var);
}
-void sub_80847C8(void)
+static void Task_DestroyTrainerApproachTask(u8);
+
+void ScrSpecial_EndTrainerApproach(void)
{
- sub_80842FC(sub_80847D8);
+ sub_80842FC(Task_DestroyTrainerApproachTask);
}
-void sub_80847D8(u8 taskId)
+static void Task_DestroyTrainerApproachTask(u8 taskId)
{
DestroyTask(taskId);
EnableBothScriptContexts();
@@ -421,9 +485,9 @@ void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3)
sprite->oam.priority = 1;
sprite->coordOffsetEnabled = 1;
- sprite->data0 = gUnknown_0202FF84[0];
- sprite->data1 = gUnknown_0202FF84[1];
- sprite->data2 = gUnknown_0202FF84[2];
+ sprite->data0 = gFieldEffectArguments[0];
+ sprite->data1 = gFieldEffectArguments[1];
+ sprite->data2 = gFieldEffectArguments[2];
sprite->data3 = -5;
sprite->data7 = a2;
diff --git a/src/tv.c b/src/tv.c
index a254bcd5f..734cbad6f 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -15,7 +15,7 @@
#include "species.h"
#include "pokedex.h"
#include "naming_screen.h"
-#include "rom4.h"
+#include "overworld.h"
#include "map_constants.h"
#include "strings.h"
#include "battle.h"
@@ -31,7 +31,7 @@
#include "pokedex.h"
#include "region_map.h"
#include "rng.h"
-#include "rom4.h"
+#include "overworld.h"
#include "rtc.h"
#include "script_menu.h"
#include "species.h"
@@ -235,7 +235,7 @@ void UpdateTVScreensOnMap(int width, int height)
}
else if (FlagGet(SYS_TV_START) && (sub_80BD8B8() != 0xff || sub_80BECA0() != 0xff || IsTVShowInSearchOfTrainersAiring()))
{
- FlagReset(SYS_TV_WATCH);
+ FlagClear(SYS_TV_WATCH);
SetTVMetatilesOnMap(width, height, 0x3);
}
break;
@@ -388,7 +388,7 @@ bool8 GabbyAndTyGetLastQuote(void)
if (gSaveBlock1.gabbyAndTyData.quote == 0xffff)
return FALSE;
- sub_80EB3FC(gStringVar1, gSaveBlock1.gabbyAndTyData.quote);
+ EasyChat_GetWordText(gStringVar1, gSaveBlock1.gabbyAndTyData.quote);
gSaveBlock1.gabbyAndTyData.quote |= 0xffff;
return TRUE;
}
@@ -942,7 +942,6 @@ void sub_80BE97C(bool8 flag)
void sub_80BE9D4(void)
{
- //TVShow *show;
gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows);
if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_FISHING_ADVICE) != 1)
{
@@ -1624,7 +1623,7 @@ void sub_80BF79C(TVShow *arg0)
break;
i++;
}
- sub_80EB3FC(gStringVar3, arg0->recentHappenings.var04[i]);
+ EasyChat_GetWordText(gStringVar3, arg0->recentHappenings.var04[i]);
}
u8 sub_80BF7E8(struct TVShowNameRaterShow *arg0)
@@ -2575,20 +2574,20 @@ void DoTVShowBravoTrainerPokemonProfile(void)
break;
case 3:
TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language);
- sub_80EB3FC(gStringVar2, bravoTrainer->var04[0]);
+ EasyChat_GetWordText(gStringVar2, bravoTrainer->var04[0]);
sub_80BF088(2, bravoTrainer->contestResult + 1);
gUnknown_020387E8 = 5;
break;
case 4:
TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language);
- sub_80EB3FC(gStringVar2, bravoTrainer->var04[0]);
+ EasyChat_GetWordText(gStringVar2, bravoTrainer->var04[0]);
sub_80BF088(2, bravoTrainer->contestResult + 1);
gUnknown_020387E8 = 5;
break;
case 5:
TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language);
CopyContestCategoryToStringVar(1, bravoTrainer->contestCategory);
- sub_80EB3FC(gStringVar3, bravoTrainer->var04[1]);
+ EasyChat_GetWordText(gStringVar3, bravoTrainer->var04[1]);
if (bravoTrainer->var14)
gUnknown_020387E8 = 6;
else
@@ -2597,7 +2596,7 @@ void DoTVShowBravoTrainerPokemonProfile(void)
case 6:
StringCopy(gStringVar1, gSpeciesNames[bravoTrainer->species]);
StringCopy(gStringVar2, gMoveNames[bravoTrainer->var14]);
- sub_80EB3FC(gStringVar3, bravoTrainer->var04[1]);
+ EasyChat_GetWordText(gStringVar3, bravoTrainer->var04[1]);
gUnknown_020387E8 = 7;
break;
case 7:
@@ -2680,7 +2679,7 @@ void DoTVShowBravoTrainerBattleTowerProfile(void)
gUnknown_020387E8 = 11;
break;
case 11:
- sub_80EB3FC(gStringVar1, bravoTrainerTower->var18[0]);
+ EasyChat_GetWordText(gStringVar1, bravoTrainerTower->var18[0]);
if (bravoTrainerTower->var1b == 0)
gUnknown_020387E8 = 12;
else
@@ -2688,7 +2687,7 @@ void DoTVShowBravoTrainerBattleTowerProfile(void)
break;
case 12:
case 13:
- sub_80EB3FC(gStringVar1, bravoTrainerTower->var18[0]);
+ EasyChat_GetWordText(gStringVar1, bravoTrainerTower->var18[0]);
TVShowConvertInternationalString(gStringVar2, bravoTrainerTower->trainerName, bravoTrainerTower->language);
TVShowConvertInternationalString(gStringVar3, bravoTrainerTower->pokemonName, bravoTrainerTower->language);
gUnknown_020387E8 = 14;
@@ -3106,12 +3105,12 @@ void DoTVShowPokemonFanClubOpinions(void)
case 3:
TVShowConvertInternationalString(gStringVar1, fanclubOpinions->playerName, fanclubOpinions->language);
StringCopy(gStringVar2, gSpeciesNames[fanclubOpinions->var02]);
- sub_80EB3FC(gStringVar3, fanclubOpinions->var1C[0]);
+ EasyChat_GetWordText(gStringVar3, fanclubOpinions->var1C[0]);
gUnknown_020387E8 = 4;
break;
case 4:
TVShowConvertInternationalString(gStringVar1, fanclubOpinions->playerName, fanclubOpinions->language);
- sub_80EB3FC(gStringVar3, fanclubOpinions->var1C[1]);
+ EasyChat_GetWordText(gStringVar3, fanclubOpinions->var1C[1]);
TVShowDone();
break;
}
@@ -3176,7 +3175,7 @@ void DoTVShowInSearchOfTrainers(void)
gUnknown_020387E8 = 8;
break;
case 8:
- sub_80EB3FC(gStringVar1, gSaveBlock1.gabbyAndTyData.quote);
+ EasyChat_GetWordText(gStringVar1, gSaveBlock1.gabbyAndTyData.quote);
StringCopy(gStringVar2, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]);
StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]);
gScriptResult = 1;
diff --git a/src/unknown_task.c b/src/unknown_task.c
index 81b89ef92..5ec7fa6bc 100644
--- a/src/unknown_task.c
+++ b/src/unknown_task.c
@@ -2,11 +2,12 @@
#include "data2.h"
#include "task.h"
#include "trig.h"
+#include "unknown_task.h"
struct UnknownStruct1
{
void *src[2];
- void *dest;
+ volatile void *dest;
u32 unkC;
void (*unk10)(void);
u8 srcBank;
@@ -17,14 +18,6 @@ struct UnknownStruct1
u8 filler19[0x7];
};
-struct UnknownStruct2
-{
- void *dest;
- u32 control;
- u8 unk8;
- u8 unk9;
-};
-
static void sub_80896F4(void);
static void sub_8089714(void);
@@ -68,7 +61,7 @@ void dp12_8087EA4(void)
gUnknown_03004DC0.taskId = 0xFF;
}
-void sub_80895F8(struct UnknownStruct2 unk)
+void sub_80895F8(struct UnknownTaskStruct unk)
{
if (unk.control == (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1))
{
@@ -214,7 +207,7 @@ u8 sub_8089944(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7)
{
int i;
int offset;
- struct UnknownStruct2 unk;
+ struct UnknownTaskStruct unk;
u8 taskId;
dp12_8087EA4();
diff --git a/src/use_pokeblock.c b/src/use_pokeblock.c
index 3aa2f1fa5..e946a9cfc 100644
--- a/src/use_pokeblock.c
+++ b/src/use_pokeblock.c
@@ -1,10 +1,11 @@
//
-// Created by Scott Norton on 5/31/17.
+
+// Modified by Dizzy Egg on 8/15/17.
//
#include "global.h"
#include "main.h"
-#include "rom4.h"
+#include "overworld.h"
#include "string_util.h"
#include "strings.h"
#include "sprite.h"
@@ -16,8 +17,6 @@
#include "sound.h"
#include "songs.h"
#include "pokeblock.h"
-#include "pokeblock_feed.h"
-#include "use_pokeblock.h"
#define GFX_TAG_CONDITIONUPDOWN 0
@@ -29,7 +28,7 @@ const u16 ConditionUpDownPalette[] = INCBIN_U16("graphics/misc/condition_up_down
const u32 ConditionUpDownTiles[] = INCBIN_U32("graphics/misc/condition_up_down.4bpp");
#endif
-const u32 gUnknown_08406118[] = {
+static const u32 sContestStatsMonData[] = {
MON_DATA_COOL,
MON_DATA_TOUGH,
MON_DATA_SMART,
@@ -37,11 +36,11 @@ const u32 gUnknown_08406118[] = {
MON_DATA_BEAUTY
};
-const u8 gUnknown_0840612C[] = {
+static const u8 gUnknown_0840612C[] = {
0, 4, 3, 2, 1
};
-const u8 *const gUnknown_08406134[] = {
+static const u8 *const sContextStatNames[] = {
OtherText_Coolness,
OtherText_Toughness,
OtherText_Smartness,
@@ -49,18 +48,18 @@ const u8 *const gUnknown_08406134[] = {
OtherText_Beauty
};
-const struct SpriteSheet gSpriteSheet_ConditionUpDown = {
+static const struct SpriteSheet gSpriteSheet_ConditionUpDown = {
(u8 *)ConditionUpDownTiles,
sizeof ConditionUpDownTiles,
GFX_TAG_CONDITIONUPDOWN
};
-const struct SpritePalette gSpritePalette_ConditionUpDown = {
+static const struct SpritePalette gSpritePalette_ConditionUpDown = {
ConditionUpDownPalette,
GFX_TAG_CONDITIONUPDOWN
};
-const s16 gUnknown_08406158[][2] = {
+static const s16 gUnknown_08406158[][2] = {
{0x9c, 0x1e},
{0x75, 0x35},
{0x75, 0x70},
@@ -68,28 +67,28 @@ const s16 gUnknown_08406158[][2] = {
{0xc5, 0x35}
};
-const struct OamData gOamData_840616C = {
+static const struct OamData gOamData_840616C = {
.shape = 1,
.size = 2,
.priority = 1
};
-const union AnimCmd gSpriteAnim_8406174[] = {
+static const union AnimCmd gSpriteAnim_8406174[] = {
ANIMCMD_FRAME(0, 5),
ANIMCMD_END
};
-const union AnimCmd gSpriteAnim_840617C[] = {
+static const union AnimCmd gSpriteAnim_840617C[] = {
ANIMCMD_FRAME(8, 5),
ANIMCMD_END
};
-const union AnimCmd *const gSpriteAnimTable_8406184[] = {
+static const union AnimCmd *const gSpriteAnimTable_8406184[] = {
gSpriteAnim_8406174,
gSpriteAnim_840617C
};
-const struct SpriteTemplate gSpriteTemplate_840618C = {
+static const struct SpriteTemplate gSpriteTemplate_840618C = {
GFX_TAG_CONDITIONUPDOWN,
GFX_TAG_CONDITIONUPDOWN,
&gOamData_840616C,
@@ -99,47 +98,44 @@ const struct SpriteTemplate gSpriteTemplate_840618C = {
SpriteCallbackDummy
};
-asm(".text\n"
- ".include \"constants/gba_constants.inc\"");
-
static EWRAM_DATA struct UnkPokenavStruct_Sub1 *gUnknown_02039304 = NULL;
static EWRAM_DATA MainCallback gUnknown_02039308 = NULL;
static EWRAM_DATA struct Pokeblock *gUnknown_0203930C = NULL;
-EWRAM_DATA u8 gUnknown_02039310 = 0;
-EWRAM_DATA s16 gUnknown_02039312 = 0;
+EWRAM_DATA u8 gPokeblockMonID = 0;
+EWRAM_DATA s16 gPokeblockGain = 0;
extern u16 gKeyRepeatStartDelay;
extern u16 gScriptItemId; // FIXME: remove after merge of #349 Pokeblock
-void launch_c3_walk_stairs_and_run_once(void (*const)(void));
-void sub_81361E4(void);
-void sub_813622C(void);
-void sub_8136244(void);
-void sub_8136264(void);
-void sub_8136294(void);
-void sub_81365A0(void);
-void sub_81365C8(void);
-void sub_8136638(void);
-void sub_81368A4(void);
+static void launch_c3_walk_stairs_and_run_once(void (*const)(void));
+static void sub_81361E4(void);
+static void sub_813622C(void);
+static void sub_8136244(void);
+static void sub_8136264(void);
+static void sub_8136294(void);
+static void sub_81365A0(void);
+static void sub_81365C8(void);
+static void sub_8136638(void);
+static void sub_81368A4(void);
void sub_8089668(void);
-void sub_8136B44(void);
-u8 sub_81370E4(u8);
-void sub_8136BB8(void);
-s8 sub_8136C40(void);
-bool8 sub_8137058(void);
-void sub_8136D60(void);
-void sub_8136808(void);
-void sub_8136D8C(void);
-u8 sub_81370A4(u8);
-void sub_81369CC(void);
-void sub_8136EF0(void);
-void sub_8137138(void);
-void sub_8136C6C(void);
-bool8 sub_8136D00(void);
-void sub_8136DC0(u8 *, u8, s16);
-void sub_8136DA0(const u8 *);
-void sub_8136F74(struct Pokeblock *, struct Pokemon *);
-void sub_81371DC(struct Sprite *);
+static void sub_8136B44(void);
+static u8 sub_81370E4(u8);
+static void sub_8136BB8(void);
+static s8 sub_8136C40(void);
+static bool8 sub_8137058(void);
+static void sub_8136D60(void);
+static void sub_8136808(void);
+static void sub_8136D8C(void);
+static u8 sub_81370A4(u8);
+static void sub_81369CC(void);
+static void sub_8136EF0(void);
+static void sub_8137138(void);
+static void sub_8136C6C(void);
+static bool8 sub_8136D00(void);
+static void Pokeblock_BufferEnhancedStatText(u8 *, u8, s16);
+static void Pokeblock_MenuWindowTextPrint(const u8 *);
+static void sub_8136F74(struct Pokeblock *, struct Pokemon *);
+static void sub_81371DC(struct Sprite *);
void sub_8136130(struct Pokeblock *pokeblock, MainCallback callback)
{
@@ -151,18 +147,18 @@ void sub_8136130(struct Pokeblock *pokeblock, MainCallback callback)
SetMainCallback2(sub_8136244);
}
-void sub_8136174(void)
+static void sub_8136174(void)
{
gUnknown_02039304->pokeblock = gUnknown_0203930C;
gUnknown_02039304->callback = gUnknown_02039308;
- gUnknown_02039310 = sub_81370E4(gUnknown_02039310);
- gUnknown_02039304->unk56 = gUnknown_02039310 < 4 ? 0 : 1;
+ gPokeblockMonID = sub_81370E4(gPokeblockMonID);
+ gUnknown_02039304->unk56 = gPokeblockMonID < 4 ? 0 : 1;
gUnknown_083DFEC4->unkD162[0] = 2;
launch_c3_walk_stairs_and_run_once(sub_8136294);
SetMainCallback2(sub_81361E4);
}
-void sub_81361E4(void)
+static void sub_81361E4(void)
{
gUnknown_02039304->unk0();
AnimateSprites();
@@ -176,7 +172,7 @@ void sub_81361E4(void)
}
}
-void sub_813622C(void)
+static void sub_813622C(void)
{
sub_81368A4();
AnimateSprites();
@@ -184,7 +180,7 @@ void sub_813622C(void)
UpdatePaletteFade();
}
-void sub_8136244(void)
+static void sub_8136244(void)
{
gUnknown_02039304->unk0();
AnimateSprites();
@@ -192,7 +188,7 @@ void sub_8136244(void)
UpdatePaletteFade();
}
-void sub_8136264(void)
+static void sub_8136264(void)
{
LoadOam();
ProcessSpriteCopyRequests();
@@ -201,13 +197,13 @@ void sub_8136264(void)
sub_8089668();
}
-void launch_c3_walk_stairs_and_run_once(void (*const func)(void))
+static void launch_c3_walk_stairs_and_run_once(void (*const func)(void))
{
gUnknown_02039304->unk0 = func;
gUnknown_02039304->unk50 = 0;
}
-void sub_8136294(void)
+static void sub_8136294(void)
{
bool32 c1LinkRelatedActive;
switch (gUnknown_02039304->unk50)
@@ -346,7 +342,7 @@ void sub_8136294(void)
}
}
-void sub_81365A0(void)
+static void sub_81365A0(void)
{
while (!gUnknown_02039304->unk55)
{
@@ -354,7 +350,7 @@ void sub_81365A0(void)
}
}
-void sub_81365C8(void)
+static void sub_81365C8(void)
{
switch (gUnknown_02039304->unk50)
{
@@ -374,7 +370,7 @@ void sub_81365C8(void)
}
}
-void sub_8136638(void)
+static void sub_8136638(void)
{
switch (gUnknown_02039304->unk50)
{
@@ -464,12 +460,12 @@ void sub_8136638(void)
}
}
-void sub_8136808(void)
+static void sub_8136808(void)
{
switch (gUnknown_02039304->unk50)
{
case 0:
- gUnknown_02039310 = sub_81370A4(gUnknown_083DFEC4->unk87DC);
+ gPokeblockMonID = sub_81370A4(gUnknown_083DFEC4->unk87DC);
gUnknown_02039308 = gUnknown_02039304->callback;
gUnknown_0203930C = gUnknown_02039304->pokeblock;
BeginNormalPaletteFade(-1, 0, 0, 16, 0);
@@ -479,18 +475,18 @@ void sub_8136808(void)
if (!gPaletteFade.active)
{
gMain.savedCallback = sub_8136174;
- SetMainCallback2(sub_8147ADC);
+ SetMainCallback2(CB2_PreparePokeblockFeedScene);
}
break;
}
}
-void sub_81368A4(void)
+static void sub_81368A4(void)
{
switch (gUnknown_02039304->unk50)
{
case 0:
- if (gUnknown_083DFEC4->unk87DC != gUnknown_02039310)
+ if (gUnknown_083DFEC4->unk87DC != gPokeblockMonID)
{
sub_80F5060(gUnknown_02039304->unk56);
gUnknown_02039304->unk50++;
@@ -538,7 +534,7 @@ void sub_81368A4(void)
}
}
-void sub_81369CC(void)
+static void sub_81369CC(void)
{
switch (gUnknown_02039304->unk50)
{
@@ -578,14 +574,14 @@ void sub_81369CC(void)
case 5:
if (gMain.newKeys & (A_BUTTON | B_BUTTON) && !sub_8136D00())
{
- sub_810CA6C((u8)gScriptItemId);
+ PokeblockClearIfExists((u8)gScriptItemId);
launch_c3_walk_stairs_and_run_once(sub_8136B44);
}
break;
}
}
-void sub_8136B44(void)
+static void sub_8136B44(void)
{
switch (gUnknown_02039304->unk50)
{
@@ -609,7 +605,7 @@ void sub_8136B44(void)
}
}
-void sub_8136BB8(void)
+static void sub_8136BB8(void)
{
GetMonData(&gPlayerParty[sub_81370A4(gUnknown_083DFEC4->unk87DC)], MON_DATA_NICKNAME, gUnknown_02039304->stringBuffer);
StringGetEnd10(gUnknown_02039304->stringBuffer);
@@ -621,7 +617,7 @@ void sub_8136BB8(void)
MoveMenuCursor(0);
}
-s8 sub_8136C40(void)
+static s8 sub_8136C40(void)
{
s8 retval = ProcessMenuInputNoWrap();
if ((u8)(retval + 1) < 3)
@@ -632,124 +628,68 @@ s8 sub_8136C40(void)
return retval;
}
-void sub_8136C6C(void)
+static void sub_8136C6C(void)
{
BasicInitMenuWindow(&gWindowConfig_81E709C);
MenuDrawTextWindow(0, 16, 29, 19);
for (gUnknown_02039304->unk53 = 0; gUnknown_02039304->unk53 < 5 && gUnknown_02039304->unk61[gUnknown_02039304->unk53] == 0; gUnknown_02039304->unk53++);
if (gUnknown_02039304->unk53 < 5)
{
- sub_8136DC0(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, gUnknown_02039304->unk61[gUnknown_02039304->unk53]);
+ Pokeblock_BufferEnhancedStatText(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, gUnknown_02039304->unk61[gUnknown_02039304->unk53]);
}
else
{
- sub_8136DC0(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, 0);
+ Pokeblock_BufferEnhancedStatText(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, 0);
}
- sub_8136DA0(gUnknown_02039304->stringBuffer);
+ Pokeblock_MenuWindowTextPrint(gUnknown_02039304->stringBuffer);
}
-#ifdef NONMATCHING
-bool8 sub_8136D00(void)
+static bool8 sub_8136D00(void)
{
while (1)
{
- if (++gUnknown_02039304->unk53 >= 5)
+ gUnknown_02039304->unk53++;
+ if (gUnknown_02039304->unk53 < 5)
{
- break;
+ if (gUnknown_02039304->unk61[gUnknown_02039304->unk53] != 0)
+ break;
}
- if (gUnknown_02039304->unk61[gUnknown_02039304->unk53] != 0)
+ else
{
- sub_8136DC0(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, gUnknown_02039304->unk61[gUnknown_02039304->unk53]);
- sub_8136DA0(gUnknown_02039304->stringBuffer);
- return TRUE;
+ gUnknown_02039304->unk53 = 5;
+ return FALSE;
}
}
- gUnknown_02039304->unk53 = 5;
- return FALSE;
-}
-#else
-__attribute__((naked))
-bool8 sub_8136D00(void)
-{
- asm_unified("\tpush {r4,r5,lr}\n"
- "\tldr r4, _08136D30 @ =gUnknown_02039304\n"
- "\tadds r3, r4, 0\n"
- "\tmovs r5, 0x5\n"
- "_08136D08:\n"
- "\tldr r0, [r3]\n"
- "\tadds r0, 0x53\n"
- "\tldrb r1, [r0]\n"
- "\tadds r1, 0x1\n"
- "\tstrb r1, [r0]\n"
- "\tldr r2, [r3]\n"
- "\tadds r1, r2, 0\n"
- "\tadds r1, 0x53\n"
- "\tldrb r0, [r1]\n"
- "\tcmp r0, 0x4\n"
- "\tbhi _08136D34\n"
- "\tadds r0, r2, 0\n"
- "\tadds r0, 0x61\n"
- "\tldrb r1, [r1]\n"
- "\tadds r0, r1\n"
- "\tldrb r0, [r0]\n"
- "\tcmp r0, 0\n"
- "\tbne _08136D3A\n"
- "\tb _08136D08\n"
- "\t.align 2, 0\n"
- "_08136D30: .4byte gUnknown_02039304\n"
- "_08136D34:\n"
- "\tstrb r5, [r1]\n"
- "\tmovs r0, 0\n"
- "\tb _08136D5A\n"
- "_08136D3A:\n"
- "\tldr r2, [r4]\n"
- "\tadds r0, r2, 0\n"
- "\tadds r0, 0x10\n"
- "\tadds r1, r2, 0\n"
- "\tadds r1, 0x53\n"
- "\tldrb r1, [r1]\n"
- "\tadds r2, 0x61\n"
- "\tadds r2, r1\n"
- "\tldrb r2, [r2]\n"
- "\tbl sub_8136DC0\n"
- "\tldr r0, [r4]\n"
- "\tadds r0, 0x10\n"
- "\tbl sub_8136DA0\n"
- "\tmovs r0, 0x1\n"
- "_08136D5A:\n"
- "\tpop {r4,r5}\n"
- "\tpop {r1}\n"
- "\tbx r1");
+ Pokeblock_BufferEnhancedStatText(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, gUnknown_02039304->unk61[gUnknown_02039304->unk53]);
+ Pokeblock_MenuWindowTextPrint(gUnknown_02039304->stringBuffer);
+ return TRUE;
}
-#endif
-void sub_8136D60(void)
+static void sub_8136D60(void)
{
BasicInitMenuWindow(&gWindowConfig_81E709C);
MenuDrawTextWindow(0, 16, 29, 19);
MenuPrint(gOtherText_WontEat, 1, 17);
}
-void sub_8136D8C(void)
+static void sub_8136D8C(void)
{
MenuZeroFillScreen();
BasicInitMenuWindow(&gWindowConfig_81E7080);
}
-void sub_8136DA0(const u8 *message)
+static void Pokeblock_MenuWindowTextPrint(const u8 *message)
{
MenuDrawTextWindow(0, 16, 29, 19);
MenuPrint(message, 1, 17);
}
#ifdef NONMATCHING
-void sub_8136DC0(u8 *dest, u8 a1, s16 a2)
+static void Pokeblock_BufferEnhancedStatText(u8 *dest, u8 statID, s16 a2)
{
- u16 v0 = a2;
if (a2 != 0)
{
- if ((v0 = max(a2, 0)) == 0);
- StringCopy(dest, gUnknown_08406134[a1]);
+ StringCopy(dest, sContextStatNames[statID]);
StringAppend(dest, gOtherText_WasEnhanced);
}
else
@@ -759,7 +699,7 @@ void sub_8136DC0(u8 *dest, u8 a1, s16 a2)
}
#else
__attribute__((naked))
-void sub_8136DC0(u8 *dest, u8 a1, s16 a2)
+static void Pokeblock_BufferEnhancedStatText(u8 *dest, u8 a1, s16 a2)
{
asm_unified("\tpush {r4,lr}\n"
"\tadds r4, r0, 0\n"
@@ -775,7 +715,7 @@ void sub_8136DC0(u8 *dest, u8 a1, s16 a2)
"\tmovs r0, 0\n"
"_08136DD8:\n"
"\tlsls r0, 16\n"
- "\tldr r1, _08136DF4 @ =gUnknown_08406134\n"
+ "\tldr r1, _08136DF4 @ =sContextStatNames\n"
"\tlsls r0, r3, 2\n"
"\tadds r0, r1\n"
"\tldr r1, [r0]\n"
@@ -786,7 +726,7 @@ void sub_8136DC0(u8 *dest, u8 a1, s16 a2)
"\tbl StringAppend\n"
"\tb _08136E04\n"
"\t.align 2, 0\n"
- "_08136DF4: .4byte gUnknown_08406134\n"
+ "_08136DF4: .4byte sContextStatNames\n"
"_08136DF8: .4byte gOtherText_WasEnhanced\n"
"_08136DFC:\n"
"\tldr r1, _08136E0C @ =gOtherText_NothingChanged\n"
@@ -801,16 +741,16 @@ void sub_8136DC0(u8 *dest, u8 a1, s16 a2)
}
#endif
-void sub_8136E10(struct Pokemon *pokemon, u8 *data)
+static void Pokeblock_GetMonContestStats(struct Pokemon *pokemon, u8 *data)
{
u16 i;
for (i=0; i<5; i++)
{
- data[i] = GetMonData(pokemon, gUnknown_08406118[i]);
+ data[i] = GetMonData(pokemon, sContestStatsMonData[i]);
}
}
-void sub_8136E40(struct Pokeblock *pokeblock, struct Pokemon *pokemon)
+static void sub_8136E40(struct Pokeblock *pokeblock, struct Pokemon *pokemon)
{
u16 i;
s16 cstat;
@@ -820,14 +760,14 @@ void sub_8136E40(struct Pokeblock *pokeblock, struct Pokemon *pokemon)
sub_8136F74(pokeblock, pokemon);
for (i=0; i<5; i++)
{
- data = GetMonData(pokemon, gUnknown_08406118[i]);
+ data = GetMonData(pokemon, sContestStatsMonData[i]);
cstat = data + gUnknown_02039304->unk66[i];
if (cstat < 0)
cstat = 0;
if (cstat > 255)
cstat = 255;
data = cstat;
- SetMonData(pokemon, gUnknown_08406118[i], &data);
+ SetMonData(pokemon, sContestStatsMonData[i], &data);
}
cstat = (u8)GetMonData(pokemon, MON_DATA_SHEEN);
cstat = cstat + pokeblock->feel;
@@ -838,21 +778,21 @@ void sub_8136E40(struct Pokeblock *pokeblock, struct Pokemon *pokemon)
}
}
-void sub_8136EF0(void)
+static void sub_8136EF0(void)
{
u16 i;
struct Pokemon *pokemon = gPlayerParty;
pokemon += gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].partyIdx;
- sub_8136E10(pokemon, gUnknown_02039304->unk57);
+ Pokeblock_GetMonContestStats(pokemon, gUnknown_02039304->unk57);
sub_8136E40(gUnknown_02039304->pokeblock, pokemon);
- sub_8136E10(pokemon, gUnknown_02039304->unk5c);
+ Pokeblock_GetMonContestStats(pokemon, gUnknown_02039304->unk5c);
for (i=0; i<5; i++)
{
gUnknown_02039304->unk61[i] = gUnknown_02039304->unk5c[i] - gUnknown_02039304->unk57[i];
}
}
-void sub_8136F74(struct Pokeblock *pokeblock, struct Pokemon *pokemon)
+static void sub_8136F74(struct Pokeblock *pokeblock, struct Pokemon *pokemon)
{
s8 direction;
s8 i;
@@ -864,9 +804,9 @@ void sub_8136F74(struct Pokeblock *pokeblock, struct Pokemon *pokemon)
gUnknown_02039304->unk66[2] = pokeblock->bitter;
gUnknown_02039304->unk66[3] = pokeblock->sweet;
gUnknown_02039304->unk66[4] = pokeblock->dry;
- if (gUnknown_02039312 > 0)
+ if (gPokeblockGain > 0)
direction = 1;
- else if (gUnknown_02039312 < 0)
+ else if (gPokeblockGain < 0)
direction = -1;
else
return;
@@ -884,7 +824,7 @@ void sub_8136F74(struct Pokeblock *pokeblock, struct Pokemon *pokemon)
}
}
-bool8 sub_8137058(void)
+static bool8 sub_8137058(void)
{
struct Pokemon *pokemon = gPlayerParty;
pokemon += gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].partyIdx;
@@ -893,7 +833,7 @@ bool8 sub_8137058(void)
return FALSE;
}
-u8 sub_81370A4(u8 a0)
+static u8 sub_81370A4(u8 a0)
{
u8 i;
for (i=0; i<PARTY_SIZE; i++)
@@ -908,7 +848,7 @@ u8 sub_81370A4(u8 a0)
return 0;
}
-u8 sub_81370E4(u8 a0)
+static u8 sub_81370E4(u8 a0)
{
u8 ct;
u8 i;
@@ -927,7 +867,7 @@ u8 sub_8137124(u8 a0)
return sub_81370A4(a0);
}
-void sub_8137138(void)
+static void sub_8137138(void)
{
u16 flavor;
u8 spriteidx;
@@ -951,7 +891,7 @@ void sub_8137138(void)
}
}
-void sub_81371DC(struct Sprite *sprite)
+static void sub_81371DC(struct Sprite *sprite)
{
if (sprite->data0 <= 5)
sprite->pos2.y -= 2;
diff --git a/src/wild_encounter.c b/src/wild_encounter.c
index 96f47c067..390898917 100644
--- a/src/wild_encounter.c
+++ b/src/wild_encounter.c
@@ -5,11 +5,12 @@
#include "event_data.h"
#include "field_player_avatar.h"
#include "fieldmap.h"
+#include "map_constants.h"
#include "metatile_behavior.h"
#include "pokeblock.h"
#include "rng.h"
#include "roamer.h"
-#include "rom4.h"
+#include "overworld.h"
#include "safari_zone.h"
#include "script.h"
#include "species.h"
@@ -2901,7 +2902,7 @@ const struct WildPokemonInfo Underwater2_WaterMonsInfo = {4, Underwater2_WaterMo
extern u16 gRoute119WaterTileData[];
extern u16 gScriptResult;
extern struct WildPokemon gWildFeebasRoute119Data;
-extern u8 Event_RepelWoreOff[];
+extern u8 S_RepelWoreOff[];
EWRAM_DATA static u8 sWildEncountersDisabled = 0;
EWRAM_DATA static u32 sFeebasRngValue = 0;
@@ -2911,7 +2912,7 @@ EWRAM_DATA static u32 sFeebasRngValue = 0;
static u16 FeebasRandom(void);
static void FeebasSeedRng(u16 seed);
-static bool8 RepelCheck(u8 level);
+static bool8 IsWildLevelAllowedByRepel(u8 level);
static void ApplyFluteEncounterRateMod(u32 *encRate);
static void ApplyCleanseTagEncounterRateMod(u32 *encRate);
@@ -2952,7 +2953,8 @@ static bool8 CheckFeebas(void)
u8 route119section = 0;
u16 waterTileNum;
- if (gSaveBlock1.location.mapGroup == 0 && gSaveBlock1.location.mapNum == 0x22)
+ if (gSaveBlock1.location.mapGroup == MAP_GROUP_ROUTE119
+ && gSaveBlock1.location.mapNum == MAP_ID_ROUTE119)
{
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
x -= 7;
@@ -3161,7 +3163,7 @@ static u8 PickWildMonNature(void)
}
for (i = 0; i < 25; i++)
{
- if (sub_810CAE4(natures[i], safariPokeblock) > 0)
+ if (PokeblockGetGain(natures[i], safariPokeblock) > 0)
return natures[i];
}
}
@@ -3193,7 +3195,7 @@ static bool8 GenerateWildMon(struct WildPokemonInfo *wildMonInfo, u8 area, bool8
break;
}
level = ChooseWildMonLevel(&wildMonInfo->wildPokemon[wildMonIndex]);
- if (checkRepel == TRUE && RepelCheck(level) == FALSE)
+ if (checkRepel == TRUE && IsWildLevelAllowedByRepel(level) == FALSE)
return FALSE;
else
{
@@ -3215,7 +3217,7 @@ static bool8 SetUpMassOutbreakEncounter(bool8 checkRepel)
{
u16 i;
- if (checkRepel == TRUE && RepelCheck(gSaveBlock1.outbreakPokemonLevel) == 0)
+ if (checkRepel == TRUE && IsWildLevelAllowedByRepel(gSaveBlock1.outbreakPokemonLevel) == FALSE)
return FALSE;
else
{
@@ -3302,9 +3304,9 @@ bool8 StandardWildEncounter(u16 a, u16 b)
if (TryStartRoamerEncounter() == TRUE)
{
roamer = &gSaveBlock1.roamer;
- if (RepelCheck(roamer->level))
+ if (IsWildLevelAllowedByRepel(roamer->level))
{
- StartBattle_Roamer();
+ BattleSetup_StartRoamerBattle();
return 1;
}
}
@@ -3312,7 +3314,7 @@ bool8 StandardWildEncounter(u16 a, u16 b)
{
if (DoMassOutbreakEncounterTest() == TRUE && SetUpMassOutbreakEncounter(1) == TRUE)
{
- CheckForSafariZoneAndProceed();
+ BattleSetup_StartWildBattle();
return 1;
}
if (GenerateWildMon(gWildMonHeaders[headerNum].landMonsInfo, 0, TRUE) == TRUE)
@@ -3336,9 +3338,9 @@ bool8 StandardWildEncounter(u16 a, u16 b)
if (TryStartRoamerEncounter() == TRUE)
{
roamer = &gSaveBlock1.roamer;
- if (RepelCheck(roamer->level))
+ if (IsWildLevelAllowedByRepel(roamer->level))
{
- StartBattle_Roamer();
+ BattleSetup_StartRoamerBattle();
return 1;
}
}
@@ -3349,7 +3351,7 @@ bool8 StandardWildEncounter(u16 a, u16 b)
{
label:
//_0808527A
- CheckForSafariZoneAndProceed();
+ BattleSetup_StartWildBattle();
return 1;
}
}
@@ -3361,7 +3363,7 @@ bool8 StandardWildEncounter(u16 a, u16 b)
return 0;
}
-void RockSmashWildEncounter(void)
+void ScrSpecial_RockSmashWildEncounter(void)
{
u16 headerNum = GetCurrentMapWildMonHeader();
@@ -3377,7 +3379,7 @@ void RockSmashWildEncounter(void)
else if (DoWildEncounterTest(wildPokemonInfo->encounterRate, 1) == TRUE
&& GenerateWildMon(wildPokemonInfo, 2, TRUE) == TRUE)
{
- CheckForSafariZoneAndProceed();
+ BattleSetup_StartWildBattle();
gScriptResult = 1;
return;
}
@@ -3403,14 +3405,14 @@ bool8 SweetScentWildEncounter(void)
return FALSE;
if (TryStartRoamerEncounter() == TRUE)
{
- StartBattle_Roamer();
+ BattleSetup_StartRoamerBattle();
return TRUE;
}
if (DoMassOutbreakEncounterTest() == TRUE)
- SetUpMassOutbreakEncounter(0);
+ SetUpMassOutbreakEncounter(FALSE);
else
GenerateWildMon(wildPokemonInfo, 0, FALSE);
- CheckForSafariZoneAndProceed();
+ BattleSetup_StartWildBattle();
return TRUE;
}
else if (MetatileBehavior_IsWaterWildEncounter(MapGridGetMetatileBehaviorAt(x, y)) == 1)
@@ -3420,18 +3422,18 @@ bool8 SweetScentWildEncounter(void)
return FALSE;
if (TryStartRoamerEncounter() == TRUE)
{
- StartBattle_Roamer();
+ BattleSetup_StartRoamerBattle();
return TRUE;
}
GenerateWildMon(wildPokemonInfo, 1, FALSE);
- CheckForSafariZoneAndProceed();
+ BattleSetup_StartWildBattle();
return TRUE;
}
}
return FALSE;
}
-bool8 GetFishingWildMonListHeader(void)
+bool8 DoesCurrentMapHaveFishingMons(void)
{
u16 headerNum = GetCurrentMapWildMonHeader();
@@ -3460,7 +3462,7 @@ void FishingWildEncounter(u8 rod)
}
IncrementGameStat(12);
sub_80BEA50(species);
- CheckForSafariZoneAndProceed();
+ BattleSetup_StartWildBattle();
}
u16 GetLocalWildMon(bool8 *isWaterMon)
@@ -3497,7 +3499,7 @@ u16 GetLocalWildMon(bool8 *isWaterMon)
}
}
-u16 GetMirageIslandMon(void)
+u16 GetLocalWaterMon(void)
{
u16 headerNum = GetCurrentMapWildMonHeader();
@@ -3521,20 +3523,21 @@ bool8 UpdateRepelCounter(void)
VarSet(VAR_REPEL_STEP_COUNT, steps);
if (steps == 0)
{
- ScriptContext1_SetupScript(Event_RepelWoreOff);
+ ScriptContext1_SetupScript(S_RepelWoreOff);
return TRUE;
}
}
return FALSE;
}
-//Returns FALSE if Repel prevents wild Pokemon at the specified level from appearing
-static bool8 RepelCheck(u8 level)
+static bool8 IsWildLevelAllowedByRepel(u8 wildLevel)
{
u8 i;
if (!VarGet(VAR_REPEL_STEP_COUNT))
+ {
return TRUE;
+ }
else
{
for (i = 0; i < 6; i++)
@@ -3542,7 +3545,9 @@ static bool8 RepelCheck(u8 level)
// UB: Too few arguments for function 'GetMonData'
if (GetMonData(&gPlayerParty[i], MON_DATA_HP) && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
{
- if (level < (u8)GetMonData(&gPlayerParty[i], MON_DATA_LEVEL))
+ u8 ourLevel = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL);
+
+ if (wildLevel < ourLevel)
return FALSE;
else
return TRUE;
diff --git a/sym_bss.txt b/sym_bss.txt
index a6eaeefe1..aa16612ed 100644
--- a/sym_bss.txt
+++ b/sym_bss.txt
@@ -4,63 +4,11 @@
.include "src/string_util.o"
.include "src/link.o"
.include "src/rtc.o"
-
-@ daycare
-
- .align 2
-gUnknown_03000470: @ 3000470
- .space 0x68
-
-gUnknown_030004D8: @ 30004D8
- .space 0x8
-
-gUnknown_030004E0: @ 30004E0
- .space 0x8
-
-gUnknown_030004E8: @ 30004E8
- .space 0x18
-
-gUnknown_03000500: @ 3000500
- .space 0x8
-
-@ trade
-
-gUnknown_03000508: @ 3000508
- .space 0x8
-
-@ berry_blender
-
-gUnknown_03000510: @ 3000510
- .space 0x10
-
-gUnknown_03000520: @ 3000520
- .space 0xC
-
-gUnknown_0300052C: @ 300052C
- .space 0x2
-
-gUnknown_0300052E: @ 300052E
- .space 0x2
-
-gUnknown_03000530: @ 3000530
- .space 0x18
-
-gUnknown_03000548: @ 3000548
- .space 0x14
-
-gUnknown_0300055C: @ 300055C
- .space 0x4
-
-gUnknown_03000560: @ 3000560
- .space 0x1C
-
+ .include "src/daycare.o"
+ .include "src/trade.o"
+ .include "src/berry_blender.o"
.include "src/play_time.o"
- .include "src/rom4.o"
-
- @ unused variable?
- .align 2
- .space 0x4
-
+ .include "src/overworld.o"
.include "src/field_camera.o"
.include "src/field_map_obj.o"
.include "src/field_message_box.o"
@@ -70,66 +18,21 @@ gUnknown_03000560: @ 3000560
.include "src/menu.o"
.include "src/tileset_anim.o"
.include "src/sound.o"
-
-@ field_weather
-
-gUnknown_030006DC: @ 30006DC
- .space 0x4
-
+ .include "src/field_weather.o"
.include "src/field_effect.o"
.include "src/item_menu.o"
-
-@ shop
-
-gUnknown_03000708: @ 3000708
- .space 0x10
-
+ .include "src/shop.o"
.include "src/record_mixing.o"
.include "src/tv.o"
-
- @ unused variable?
- .align 2
- .space 0x4
-
-@ battle_anim_80CA710
-
-gUnknown_03000728: @ 3000728
- .space 0x8
-
-gUnknown_03000730: @ 3000730
- .space 0x10
-
-@ easy_chat
-
-gUnknown_03000740: @ 3000740
- .space 0x4
-
-@ pokenav
-
-gUnknown_03000744: @ 3000744
- .space 0x4
-
-@ mauville_old_man
-
-gUnknown_03000748: @ 3000748
- .space 0x4
-
+ .include "src/battle_anim_80CA710.o"
+ .include "src/easy_chat.o"
+ .include "src/pokenav.o"
+ .include "src/mauville_man.o"
.include "src/menu_helpers.o"
.include "src/contest_painting.o"
.include "src/pokeblock.o"
-
- @ unused variable?
- .align 2
- .space 0x4
-
.include "src/field_specials.o"
-
-@ learn_move
-
- .align 2
-gUnknown_030007B0: @ 30007B0
- .space 0x4
-
+ .include "src/learn_move.o"
.include "src/player_pc.o"
.include "asm/m4a_1.o"
.include "src/agb_flash.o"
diff --git a/sym_common.txt b/sym_common.txt
index fc729a587..d9da3ec3b 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -106,13 +106,7 @@ gUnknown_0300434C: @ 300434C
.include "pokemon_1.o"
.include "rng.o"
-
-@ egg_hatch
-
- .align 2
-gUnknown_0300481C: @ 300481C
- .space 0x4
-
+ .include "egg_hatch.o"
.include "load_save.o"
@ trade
@@ -123,21 +117,8 @@ gUnknown_03004824: @ 3004824
gUnknown_03004828: @ 3004828
.space 0x8
-@ berry_blender
-
-gUnknown_03004830: @ 3004830
- .space 0x4
-
-gUnknown_03004834: @ 3004834
- .space 0xC
-
-gUnknown_03004840: @ 3004840
- .space 0x14
-
-gUnknown_03004854: @ 3004854
- .space 0x4
-
- .include "rom4.o"
+ .include "berry_blender.o"
+ .include "overworld.o"
.include "fieldmap.o"
.include "field_camera.o"
.include "field_map_obj.o"
@@ -179,14 +160,7 @@ gUnknown_03005560: @ 3005560
gUnknown_030056A0: @ 30056A0
.space 0x640
-@ pokemon_menu
-
-gLastFieldPokeMenuOpened: @ 3005CE0
- .space 0x4
-
-gUnknown_03005CE4: @ 3005CE4
- .space 0x4
-
+ .include "pokemon_menu.o"
.include "pokedex.o"
@ pokemon_summary_screen
@@ -263,12 +237,7 @@ gUnknown_03005E0C: @ 3005E0C
.space 0x4
.include "contest_painting.o"
-
-@ evolution_scene
-
- .align 2
-gUnknown_03005E94: @ 3005E94
- .space 0x4
+ .include "evolution_scene.o"
@ pokedex_cry_screen
@@ -293,40 +262,7 @@ gUnknown_03005F10: @ 3005F10
gUnknown_03005F14: @ 3005F14
.space 0xC
-@ pokeblock_feed
-
-gUnknown_03005F20: @ 3005F20
- .space 0x4
-
-gUnknown_03005F24: @ 3005F24
- .space 0x4
-
-gUnknown_03005F28: @ 3005F28
- .space 0x4
-
-gUnknown_03005F2C: @ 3005F2C
- .space 0x4
-
-gUnknown_03005F30: @ 3005F30
- .space 0x4
-
-gUnknown_03005F34: @ 3005F34
- .space 0x8
-
-gUnknown_03005F3C: @ 3005F3C
- .space 0x4
-
-gUnknown_03005F40: @ 3005F40
- .space 0x10
-
-gUnknown_03005F50: @ 3005F50
- .space 0x44
-
-gUnknown_03005F94: @ 3005F94
- .space 0xC
-
-gUnknown_03005FA0: @ 3005FA0
- .space 0x30
+ .include "pokeblock_feed.o"
.include "m4a_2.o"
.include "agb_flash.o"
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 0e8b25e28..040173cfd 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -287,7 +287,7 @@ gPID_perBank: @ 2024E70
gBattleMovePower: @ 2024E80
.space 0x2
-word_2024E82: @ 2024E82
+gMoveToLearn: @ 2024E82
.space 0x2
gBattleMonForms: @ 2024E84
@@ -308,22 +308,9 @@ gUnknown_02029700: @ 2029700
gUnknown_020297D8: @ 20297D8
.space 0x4
-@ berry_blender
-
-gUnknown_020297DC: @ 20297DC
- .space 0x4
-
-gUnknown_020297E0: @ 20297E0
- .space 0x4
-
-gUnknown_020297E4: @ 20297E4
- .space 0x4
-
-gUnknown_020297E8: @ 20297E8
- .space 0x4
-
+ .include "src/berry_blender.o"
.include "src/new_game.o"
- .include "src/rom4.o"
+ .include "src/overworld.o"
.include "src/fieldmap.o"
.include "src/field_camera.o"
.include "src/field_player_avatar.o"
@@ -387,17 +374,8 @@ gUnknown_0202FF58: @ 202FF58
gUnknown_0202FFA4: @ 202FFA4
.space 0x4
-@ pokemon_menu
-
-gUnknown_0202FFA8: @ 202FFA8
- .space 0x1
-
-gUnknown_0202FFA9: @ 202FFA9
- .space 0x1
-
-gUnknown_0202FFAA: @ 202FFAA
- .space 0xA
+ .include "src/pokemon_menu.o"
.include "src/pokedex.o"
.include "src/trainer_card.o"
.include "src/pokemon_storage_system.o"
@@ -523,29 +501,7 @@ gScriptContestCategory: @ 203869C
gScriptContestRank: @ 203869E
.space 0x2
-@ shop
-
-gUnknown_020386A0: @ 20386A0
- .space 0x4
-
-gUnknown_020386A4: @ 20386A4
- .space 0x4
-
-gUnknown_020386A8: @ 20386A8
- .space 0x2
-
-gUnknown_020386AA: @ 20386AA
- .space 0x7A
-
-gUnknown_02038724: @ 2038724
- .space 0xC
-
-gUnknown_02038730: @ 2038730
- .space 0x1
-
-gUnknown_02038731: @ 2038731
- .space 0x3
-
+ .include "src/shop.o"
.include "src/money.o"
@ record_mixing
@@ -589,13 +545,7 @@ gUnknown_020388B4: @ 20388B4
.space 0x4
.include "src/mon_markings.o"
-
-@ mauville_old_man
-
- .align 2
-gUnknown_020388BC: @ 20388BC
- .space 0x4
-
+ .include "src/mauville_man.o"
.include "src/menu_helpers.o"
.include "src/region_map.o"
.include "src/decoration.o"
@@ -662,24 +612,13 @@ gUnknown_0203927D: @ 203927D
.include "src/use_pokeblock.o"
.include "src/player_pc.o"
.include "src/intro.o"
-
-@ hall_of_fame
-
- .align 2
-gUnknown_0203931C: @ 203931C
- .space 0x4
-
+ .include "src/hall_of_fame.o"
.include "src/credits.o"
.include "src/lottery_corner.o"
.include "src/berry_tag_screen.o"
.include "src/mystery_event_menu.o"
.include "src/save_failed_screen.o"
-
-@ pokeblock_feed
-
- .align 2
-gUnknown_02039350: @ 2039350
- .space 0x8
+ .include "src/pokeblock_feed.o"
@ intro_credits_graphics