summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--asm/battle_anim_80A5C6C.s74
-rw-r--r--asm/battle_anim_80A9C70.s4
-rw-r--r--asm/battle_anim_80FE840.s720
-rwxr-xr-xasm/battle_anim_815A0D4.s118
-rw-r--r--asm/battle_anim_8170478.s78
-rwxr-xr-xasm/battle_frontier_1.s22
-rwxr-xr-xasm/battle_frontier_2.s70
-rw-r--r--asm/battle_records.s12
-rw-r--r--asm/battle_setup.s3550
-rwxr-xr-xasm/battle_tower.s6
-rw-r--r--asm/battle_transition.s12
-rw-r--r--asm/berry_blender.s8788
-rw-r--r--asm/bike.s2
-rw-r--r--asm/cable_club.s52
-rw-r--r--asm/clock.s175
-rw-r--r--asm/coins.s74
-rw-r--r--asm/contest.s54
-rw-r--r--asm/contest_link_80FC4F4.s8
-rw-r--r--asm/crt0.s4
-rw-r--r--asm/dewford_trend.s6
-rw-r--r--asm/easy_chat.s16
-rw-r--r--asm/field_control_avatar.s10
-rw-r--r--asm/field_effect.s26
-rw-r--r--asm/field_player_avatar.s2
-rw-r--r--asm/field_poison.s323
-rw-r--r--asm/field_screen.s38
-rw-r--r--asm/fldeff_80F9BCC.s22
-rwxr-xr-xasm/international_string_util.s6
-rwxr-xr-xasm/item_menu.s8
-rw-r--r--asm/item_use.s2
-rwxr-xr-xasm/learn_move.s8
-rw-r--r--asm/link.s308
-rw-r--r--asm/load_save.s669
-rw-r--r--asm/macros/battle_script.inc1401
-rw-r--r--asm/macros/event.inc6
-rw-r--r--asm/macros/pokemon_data.inc2
-rwxr-xr-xasm/mail_data.s589
-rw-r--r--asm/main_menu.s4
-rw-r--r--asm/map_obj_8097404.s8
-rw-r--r--asm/map_obj_lock.s4
-rwxr-xr-xasm/menu.s8
-rw-r--r--asm/menu_helpers.s4
-rw-r--r--asm/mystery_event_menu.s2
-rw-r--r--asm/mystery_event_script.s2
-rw-r--r--asm/naming_screen.s2
-rwxr-xr-xasm/new_menu_helpers.s12
-rw-r--r--asm/overworld.s (renamed from asm/rom4.s)38
-rwxr-xr-xasm/party_menu.s50
-rw-r--r--asm/player_pc.s4
-rwxr-xr-xasm/pokeball.s2861
-rw-r--r--asm/pokeblock_feed.s2
-rwxr-xr-xasm/pokemon_icon.s10
-rwxr-xr-xasm/pokemon_storage_system.s32
-rwxr-xr-xasm/pokemon_summary_screen.s20
-rwxr-xr-xasm/pokenav.s32
-rw-r--r--asm/record_mixing.s4
-rw-r--r--asm/rom6.s76
-rw-r--r--asm/script_menu.s2
-rw-r--r--asm/script_pokemon_util_80F87D8.s6
-rw-r--r--asm/shop.s2
-rw-r--r--asm/slot_machine.s2
-rw-r--r--asm/start_menu.s8
-rw-r--r--asm/trade.s30
-rwxr-xr-xasm/trainer_rematch.s4
-rw-r--r--asm/trainer_see.s159
-rw-r--r--asm/unk_81BAD84.s57
-rwxr-xr-xasm/unk_text_util.s99
-rwxr-xr-xasm/use_pokeblock.s4
-rw-r--r--asm/wallclock.s1515
-rwxr-xr-x[-rw-r--r--]asmdiff.sh0
-rw-r--r--constants/ability_constants.inc78
-rw-r--r--constants/battle_constants.inc170
-rw-r--r--constants/battle_script_constants.inc169
-rw-r--r--constants/battle_text.inc375
-rw-r--r--constants/constants.inc8
-rw-r--r--constants/easy_chat_constants.inc1067
-rw-r--r--constants/field_object_constants.inc251
-rw-r--r--constants/flags.inc1574
-rw-r--r--constants/item_constants.inc310
-rw-r--r--constants/map_constants.inc1
-rw-r--r--constants/map_object_constants.inc258
-rw-r--r--constants/move_constants.inc355
-rw-r--r--constants/songs.inc461
-rw-r--r--constants/variables.inc278
-rw-r--r--data/battle_frontier/battle_frontier_mons.inc2
-rw-r--r--data/battle_frontier/battle_frontier_trainers.inc11250
-rw-r--r--data/battle_frontier/fallarbor_battle_tent_trainers.inc1050
-rw-r--r--data/battle_frontier/slateport_battle_tent_trainers.inc1026
-rw-r--r--data/battle_frontier/verdanturf_battle_tent_trainers.inc1020
-rw-r--r--data/battle_frontier_2.s2
-rw-r--r--data/battle_scripts_1.s5167
-rw-r--r--data/battle_scripts_2.s261
-rw-r--r--data/battle_setup.s190
-rw-r--r--data/battle_tower.s4
-rw-r--r--data/cable_car.s1
-rw-r--r--data/data2b.s3
-rw-r--r--data/data2c.s4
-rw-r--r--data/data4c.s33
-rw-r--r--data/easy_chat.s3
-rw-r--r--data/event_scripts.s96
-rw-r--r--data/field_map_obj.s1
-rw-r--r--data/graphics.s104
-rw-r--r--data/graphics/field_objects/berry_tree_graphics_tables.inc20
-rw-r--r--data/graphics/pokemon/animation_delay_table.inc2
-rw-r--r--data/graphics/pokemon/front_anim_ids_table.inc2
-rw-r--r--data/item_menu_icons.s1
-rw-r--r--data/link.s21
-rw-r--r--data/map_events.s6
-rw-r--r--data/maps.s1
-rw-r--r--data/overworld.s (renamed from data/rom4.s)0
-rw-r--r--data/player_pc.s1
-rw-r--r--data/pokeball.s14
-rw-r--r--data/script_cmd_table.inc4
-rw-r--r--data/scripts/cable_club.inc4
-rw-r--r--data/scripts/maps/AbandonedShip_Rooms2_1F.inc4
-rw-r--r--data/scripts/maps/AbandonedShip_Rooms_1F.inc2
-rw-r--r--data/scripts/maps/AncientTomb.inc2
-rw-r--r--data/scripts/maps/BattleFrontier_Lounge2.inc24
-rw-r--r--data/scripts/maps/BattleFrontier_Lounge3.inc20
-rw-r--r--data/scripts/maps/BirthIsland_Exterior.inc2
-rw-r--r--data/scripts/maps/DesertRuins.inc2
-rw-r--r--data/scripts/maps/DewfordTown_Gym.inc2
-rw-r--r--data/scripts/maps/FarawayIsland_Interior.inc2
-rw-r--r--data/scripts/maps/FortreeCity_Gym.inc2
-rw-r--r--data/scripts/maps/IslandCave.inc2
-rw-r--r--data/scripts/maps/JaggedPass.inc4
-rw-r--r--data/scripts/maps/LavaridgeTown_Gym_1F.inc6
-rw-r--r--data/scripts/maps/LittlerootTown_ProfessorBirchsLab.inc2
-rw-r--r--data/scripts/maps/MarineCave_End.inc2
-rw-r--r--data/scripts/maps/MauvilleCity_Gym.inc2
-rw-r--r--data/scripts/maps/MeteorFalls_1F_2R.inc6
-rw-r--r--data/scripts/maps/MossdeepCity_Gym.inc2
-rw-r--r--data/scripts/maps/MtChimney.inc4
-rw-r--r--data/scripts/maps/MtPyre_3F.inc2
-rw-r--r--data/scripts/maps/MtPyre_6F.inc2
-rw-r--r--data/scripts/maps/NavelRock_Bottom.inc2
-rw-r--r--data/scripts/maps/NavelRock_Top.inc2
-rw-r--r--data/scripts/maps/PetalburgCity.inc2
-rw-r--r--data/scripts/maps/PetalburgCity_Gym.inc2
-rw-r--r--data/scripts/maps/PetalburgWoods.inc6
-rw-r--r--data/scripts/maps/Route101.inc2
-rw-r--r--data/scripts/maps/Route102.inc6
-rw-r--r--data/scripts/maps/Route103.inc6
-rw-r--r--data/scripts/maps/Route104.inc18
-rw-r--r--data/scripts/maps/Route105.inc2
-rw-r--r--data/scripts/maps/Route106.inc2
-rw-r--r--data/scripts/maps/Route107.inc2
-rw-r--r--data/scripts/maps/Route108.inc2
-rw-r--r--data/scripts/maps/Route109.inc4
-rw-r--r--data/scripts/maps/Route110.inc8
-rw-r--r--data/scripts/maps/Route111.inc6
-rw-r--r--data/scripts/maps/Route112.inc2
-rw-r--r--data/scripts/maps/Route113.inc4
-rw-r--r--data/scripts/maps/Route114.inc4
-rw-r--r--data/scripts/maps/Route115.inc6
-rw-r--r--data/scripts/maps/Route116.inc12
-rw-r--r--data/scripts/maps/Route117.inc12
-rw-r--r--data/scripts/maps/Route118.inc4
-rw-r--r--data/scripts/maps/Route119.inc4
-rw-r--r--data/scripts/maps/Route120.inc4
-rw-r--r--data/scripts/maps/Route121.inc6
-rw-r--r--data/scripts/maps/Route123.inc6
-rw-r--r--data/scripts/maps/Route124.inc6
-rw-r--r--data/scripts/maps/Route125.inc2
-rw-r--r--data/scripts/maps/Route126.inc2
-rw-r--r--data/scripts/maps/Route127.inc2
-rw-r--r--data/scripts/maps/Route128.inc4
-rw-r--r--data/scripts/maps/RustboroCity.inc2
-rw-r--r--data/scripts/maps/RustboroCity_Gym.inc2
-rw-r--r--data/scripts/maps/SkyPillar_Top.inc2
-rw-r--r--data/scripts/maps/SootopolisCity_Gym_1F.inc2
-rw-r--r--data/scripts/maps/SouthernIsland_Interior.inc2
-rw-r--r--data/scripts/maps/TerraCave_End.inc2
-rw-r--r--data/scripts/maps/VictoryRoad_1F.inc2
-rw-r--r--data/scripts/players_house.inc4
-rw-r--r--data/scripts/pokeblocks.inc16
-rw-r--r--data/specials.inc36
-rw-r--r--data/starter_choose.s3
-rw-r--r--data/text/contest_strings.inc228
-rw-r--r--data/text/easy_chat/easy_chat_group_pokemon2.s2
-rw-r--r--data/text/easy_chat/easy_chat_words_by_letter.inc4850
-rw-r--r--data/trade.s3
-rw-r--r--data/unk_81BAD84.s7
-rw-r--r--data/wild_encounter.s1
-rw-r--r--data/wild_mons.inc3950
-rw-r--r--graphics/interface/ball/dive.pngbin0 -> 326 bytes
-rw-r--r--graphics/interface/ball/great.pngbin0 -> 257 bytes
-rw-r--r--graphics/interface/ball/luxury.pngbin0 -> 350 bytes
-rw-r--r--graphics/interface/ball/master.pngbin0 -> 260 bytes
-rw-r--r--graphics/interface/ball/nest.pngbin0 -> 266 bytes
-rw-r--r--graphics/interface/ball/net.pngbin0 -> 246 bytes
-rw-r--r--graphics/interface/ball/poke.pngbin0 -> 249 bytes
-rw-r--r--graphics/interface/ball/premier.pngbin0 -> 289 bytes
-rw-r--r--graphics/interface/ball/repeat.pngbin0 -> 257 bytes
-rw-r--r--graphics/interface/ball/safari.pngbin0 -> 259 bytes
-rw-r--r--graphics/interface/ball/timer.pngbin0 -> 296 bytes
-rw-r--r--graphics/wallclock/graphics_85b1f58.pngbin0 -> 204 bytes
-rw-r--r--graphics/wallclock/palette_85b21d4.pal7
-rw-r--r--include/abilities.h81
-rw-r--r--include/battle.h62
-rw-r--r--include/battle_anim.h18
-rw-r--r--include/battle_controllers.h4
-rw-r--r--include/battle_frontier_2.h1
-rw-r--r--include/battle_message.h12
-rw-r--r--include/battle_move_effects.h222
-rw-r--r--include/battle_script_commands.h6
-rw-r--r--include/battle_scripts.h290
-rw-r--r--include/battle_setup.h87
-rw-r--r--include/battle_transition.h50
-rw-r--r--include/battle_util.h6
-rw-r--r--include/berry.h10
-rw-r--r--include/berry_blender.h8
-rw-r--r--include/constants/abilities.h83
-rw-r--r--include/constants/battle_move_effects.h219
-rw-r--r--include/constants/decorations.h126
-rw-r--r--include/constants/easy_chat.h1079
-rw-r--r--include/constants/flags.h1578
-rw-r--r--include/constants/game_stat.h (renamed from include/game_stat.h)9
-rw-r--r--include/constants/hold_effects.h (renamed from include/hold_effects.h)0
-rw-r--r--include/constants/items.h393
-rw-r--r--include/constants/map_objects.h263
-rw-r--r--include/constants/maps.h595
-rw-r--r--include/constants/mauville_man.h10
-rw-r--r--include/constants/moves.h362
-rw-r--r--include/constants/songs.h465
-rw-r--r--include/constants/species.h450
-rw-r--r--include/constants/trainers.h1129
-rw-r--r--include/constants/vars.h288
-rw-r--r--include/data/bard_music/pokemon.h2
-rw-r--r--include/decompress.h2
-rw-r--r--include/decoration.h124
-rw-r--r--include/dewford_trend.h1
-rw-r--r--include/event_data.h4
-rwxr-xr-xinclude/event_scripts.h8
-rwxr-xr-xinclude/field_map_obj.h2
-rw-r--r--include/field_poison.h19
-rw-r--r--include/field_screen.h1
-rw-r--r--include/flags.h118
-rw-r--r--include/fldeff_80F9BCC.h1
-rw-r--r--include/gba/m4a_internal.h2
-rw-r--r--include/gba/macro.h75
-rw-r--r--include/global.h37
-rw-r--r--include/graphics.h49
-rw-r--r--include/international_string_util.h2
-rw-r--r--include/item_menu_icons.h6
-rw-r--r--include/items.h392
-rw-r--r--include/link.h3
-rw-r--r--include/mail.h16
-rw-r--r--include/mail_data.h12
-rw-r--r--include/map_constants.h1342
-rw-r--r--include/map_object_constants.h239
-rw-r--r--include/menu.h5
-rw-r--r--include/moves.h366
-rw-r--r--include/new_menu_helpers.h1
-rw-r--r--include/overworld.h3
-rw-r--r--include/party_menu.h10
-rw-r--r--include/pokeball.h26
-rw-r--r--include/pokeblock.h22
-rw-r--r--include/pokemon.h5
-rw-r--r--include/pokemon_3.h2
-rw-r--r--include/pokemon_icon.h1
-rw-r--r--include/pokenav.h6
-rw-r--r--include/random.h (renamed from include/rng.h)6
-rw-r--r--include/rom6.h6
-rw-r--r--include/safari_zone.h2
-rw-r--r--include/secret_base.h1
-rw-r--r--include/songs.h42
-rw-r--r--include/species.h454
-rw-r--r--include/sprite.h9
-rw-r--r--include/strings.h6
-rw-r--r--include/text.h3
-rw-r--r--include/trainer_classes.h74
-rw-r--r--include/trainer_front_sprites.h101
-rw-r--r--include/trainer_ids.h7
-rw-r--r--include/trainer_see.h15
-rw-r--r--include/tv.h2
-rw-r--r--include/unk_text_util.h9
-rw-r--r--include/vars.h75
-rw-r--r--include/wallclock.h6
-rw-r--r--ld_script.txt33
-rw-r--r--src/battle_2.c386
-rw-r--r--src/battle_ai_script_commands.c23
-rw-r--r--src/battle_ai_switch_items.c42
-rw-r--r--src/battle_anim.c2
-rw-r--r--src/battle_controller_link_opponent.c66
-rw-r--r--src/battle_controller_link_partner.c68
-rw-r--r--src/battle_controller_opponent.c74
-rw-r--r--src/battle_controller_player.c78
-rw-r--r--src/battle_controller_player_partner.c70
-rw-r--r--src/battle_controller_recorded_opponent.c64
-rw-r--r--src/battle_controller_recorded_player.c74
-rw-r--r--src/battle_controller_safari.c16
-rw-r--r--src/battle_controller_wally.c62
-rw-r--r--src/battle_controllers.c16
-rw-r--r--src/battle_dome_cards.c2
-rw-r--r--src/battle_gfx_sfx_util.c22
-rw-r--r--src/battle_interface.c148
-rw-r--r--src/battle_message.c305
-rw-r--r--src/battle_script_commands.c1004
-rw-r--r--src/battle_setup.c1884
-rw-r--r--src/battle_util.c724
-rw-r--r--src/battle_util2.c12
-rw-r--r--src/berry.c26
-rw-r--r--src/berry_blender.c3182
-rw-r--r--src/berry_fix_program.c3
-rwxr-xr-xsrc/braille_puzzles.c6
-rw-r--r--src/calculate_base_damage.c12
-rwxr-xr-xsrc/clear_save_data_screen.c6
-rw-r--r--src/clock.c93
-rw-r--r--src/coins.c28
-rw-r--r--src/daycare.c8
-rw-r--r--src/decompress.c7
-rw-r--r--src/decoration.c74
-rw-r--r--src/decoration_inventory.c1
-rw-r--r--src/egg_hatch.c93
-rw-r--r--src/event_data.c2
-rw-r--r--src/evolution_graphics.c84
-rw-r--r--src/evolution_scene.c52
-rwxr-xr-xsrc/field_map_obj.c470
-rw-r--r--src/field_poison.c148
-rwxr-xr-xsrc/field_special_scene.c4
-rw-r--r--src/hall_of_fame.c28
-rw-r--r--src/heal_location.c4
-rw-r--r--src/international_string_util.c2
-rw-r--r--src/item.c12
-rw-r--r--src/lilycove_lady.c4
-rw-r--r--src/load_save.c339
-rw-r--r--src/lottery_corner.c6
-rw-r--r--src/m4a_4.c4
-rw-r--r--src/mail.c309
-rw-r--r--src/mail_data.c203
-rw-r--r--src/main.c2
-rw-r--r--src/new_game.c2
-rw-r--r--src/overworld.c (renamed from src/rom4.c)0
-rw-r--r--src/pokeball.c1282
-rw-r--r--src/pokemon_1.c4
-rw-r--r--src/pokemon_2.c6
-rw-r--r--src/pokemon_3.c103
-rw-r--r--src/pokemon_size_record.c2
-rw-r--r--src/pokemon_storage_system.c2
-rwxr-xr-xsrc/pokemon_summary_screen.c73
-rw-r--r--src/random.c (renamed from src/rng.c)2
-rw-r--r--src/recorded_battle.c4
-rw-r--r--src/region_map.c156
-rw-r--r--src/reshow_battle_screen.c20
-rw-r--r--src/roamer.c4
-rw-r--r--src/safari_zone.c4
-rw-r--r--src/save.c2
-rwxr-xr-xsrc/save_failed_screen.c2
-rwxr-xr-xsrc/save_location.c83
-rw-r--r--src/scrcmd.c34
-rw-r--r--src/secret_base.c59
-rw-r--r--src/sound.c2
-rw-r--r--src/sprite.c17
-rw-r--r--src/starter_choose.c28
-rw-r--r--src/text.c8
-rw-r--r--src/trainer_see.c68
-rw-r--r--src/tv.c37
-rw-r--r--src/unk_81BAD84.c47
-rw-r--r--src/unk_text_util.c56
-rw-r--r--src/wallclock.c1057
-rw-r--r--src/wild_encounter.c25
-rw-r--r--sym_bss.txt56
-rw-r--r--sym_common.txt10
-rw-r--r--sym_ewram.txt99
366 files changed, 38799 insertions, 43917 deletions
diff --git a/Makefile b/Makefile
index 4bff6887a..0d06d5687 100644
--- a/Makefile
+++ b/Makefile
@@ -130,7 +130,7 @@ $(DATA_ASM_BUILDDIR)/%.o: data_dep :=
endif
$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s $$(data_dep)
- $(PREPROC) $< charmap.txt | $(AS) $(ASFLAGS) -o $@
+ $(PREPROC) $< charmap.txt | $(CPP) -I include | $(AS) $(ASFLAGS) -o $@
$(OBJ_DIR)/sym_bss.ld: sym_bss.txt
$(RAMSCRGEN) .bss $< ENGLISH > $@
diff --git a/asm/battle_anim_80A5C6C.s b/asm/battle_anim_80A5C6C.s
index 158da2a02..08baa4595 100644
--- a/asm/battle_anim_80A5C6C.s
+++ b/asm/battle_anim_80A5C6C.s
@@ -5,8 +5,8 @@
.text
- thumb_func_start sub_80A5C6C
-sub_80A5C6C: @ 80A5C6C
+ thumb_func_start GetBankPosition
+GetBankPosition: @ 80A5C6C
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
@@ -154,7 +154,7 @@ _080A5DB0:
pop {r4,r5}
pop {r1}
bx r1
- thumb_func_end sub_80A5C6C
+ thumb_func_end GetBankPosition
thumb_func_start sub_80A5DB8
sub_80A5DB8: @ 80A5DB8
@@ -577,7 +577,7 @@ _080A611C:
_080A6126:
adds r0, r4, 0
adds r1, r5, 0
- bl sub_80A5C6C
+ bl GetBankPosition
_080A612E:
lsls r0, 24
lsrs r0, 24
@@ -592,7 +592,7 @@ GetBankSpriteDefault_Y: @ 80A6138
lsls r0, 24
lsrs r0, 24
movs r1, 0x4
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
pop {r1}
@@ -611,7 +611,7 @@ GetSubstituteSpriteDefault_Y: @ 80A614C
beq _080A6170
adds r0, r4, 0
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 8
movs r1, 0x80
@@ -620,7 +620,7 @@ GetSubstituteSpriteDefault_Y: @ 80A614C
_080A6170:
adds r0, r4, 0
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 8
movs r1, 0x88
@@ -642,7 +642,7 @@ sub_80A6190: @ 80A6190
lsrs r5, r0, 24
adds r0, r5, 0
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r6, r0, 24
bl IsContest
@@ -1245,13 +1245,13 @@ sub_80A65EC: @ 80A65EC
ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
ldrb r0, [r5]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x36]
@@ -1442,13 +1442,13 @@ sub_80A6760: @ 80A6760
ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
ldrb r0, [r5]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x36]
@@ -1550,13 +1550,13 @@ sub_80A6838: @ 80A6838
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -1578,13 +1578,13 @@ sub_80A6864: @ 80A6864
ldr r7, =gAnimBankAttacker
ldrb r0, [r7]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r6, r0, 24
ldr r0, =gAnimBankTarget
ldrb r0, [r0]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
cmp r6, r0
@@ -1646,8 +1646,8 @@ sub_80A68D4: @ 80A68D4
bx r0
thumb_func_end sub_80A68D4
- thumb_func_start sub_80A6900
-sub_80A6900: @ 80A6900
+ thumb_func_start AnimateBallThrow
+AnimateBallThrow: @ 80A6900
push {r4,lr}
adds r4, r0, 0
bl sub_80A6F3C
@@ -1674,7 +1674,7 @@ _080A692E:
pop {r4}
pop {r1}
bx r1
- thumb_func_end sub_80A6900
+ thumb_func_end AnimateBallThrow
thumb_func_start sub_80A6934
sub_80A6934: @ 80A6934
@@ -3685,7 +3685,7 @@ _080A785C:
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r1, [r6, 0x4]
@@ -3693,7 +3693,7 @@ _080A785C:
strh r0, [r5, 0x32]
ldrb r0, [r4]
adds r1, r7, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r6, [r6, 0x6]
@@ -3733,7 +3733,7 @@ _080A78CC:
ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x4]
@@ -3741,7 +3741,7 @@ _080A78CC:
strh r0, [r6, 0x32]
ldrb r0, [r5]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x6]
@@ -3763,7 +3763,7 @@ _080A78CC:
sub_80A791C: @ 80A791C
push {r4,lr}
adds r4, r0, 0
- bl sub_80A6900
+ bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
beq _080A7930
@@ -3828,7 +3828,7 @@ _080A798E:
strh r0, [r5, 0x2E]
adds r0, r6, 0
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r2, [r4, 0x4]
@@ -3836,7 +3836,7 @@ _080A798E:
strh r0, [r5, 0x32]
adds r0, r6, 0
adds r1, r7, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r4, [r4, 0x6]
@@ -5713,7 +5713,7 @@ _080A88A6:
_080A88AE:
mov r0, r8
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrb r1, [r4]
@@ -5722,7 +5722,7 @@ _080A88AE:
_080A88C0:
mov r0, r8
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrb r1, [r4]
@@ -5731,7 +5731,7 @@ _080A88C0:
_080A88D2:
mov r0, r8
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrb r2, [r4]
@@ -5744,7 +5744,7 @@ _080A88E4:
_080A88EA:
mov r0, r8
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrb r2, [r4]
@@ -5757,7 +5757,7 @@ _080A88FC:
_080A8902:
mov r0, r8
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
adds r0, 0x1F
@@ -5798,13 +5798,13 @@ _080A8942:
_080A8946:
adds r0, r4, 0
adds r1, r5, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
mov r8, r0
adds r0, r4, 0
adds r1, r6, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r7, r0, 24
bl IsDoubleBattle
@@ -5819,12 +5819,12 @@ _080A8946:
eors r4, r0
adds r0, r4, 0
adds r1, r5, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r5, r0, 24
adds r0, r4, 0
adds r1, r6, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r3, r0, 24
mov r0, r8
@@ -6392,13 +6392,13 @@ sub_80A8E30: @ 80A8E30
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
diff --git a/asm/battle_anim_80A9C70.s b/asm/battle_anim_80A9C70.s
index d27852961..bdb1a51ec 100644
--- a/asm/battle_anim_80A9C70.s
+++ b/asm/battle_anim_80A9C70.s
@@ -334,7 +334,7 @@ sub_80A9EF4: @ 80A9EF4
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 8
ldr r1, =0xffe00000
@@ -342,7 +342,7 @@ sub_80A9EF4: @ 80A9EF4
lsrs r5, r0, 16
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 8
ldr r1, =0xffdc0000
diff --git a/asm/battle_anim_80FE840.s b/asm/battle_anim_80FE840.s
index 315f884cf..75879519e 100644
--- a/asm/battle_anim_80FE840.s
+++ b/asm/battle_anim_80FE840.s
@@ -99,13 +99,13 @@ sub_80FE8E0: @ 80FE8E0
ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
ldrb r0, [r5]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x36]
@@ -135,13 +135,13 @@ sub_80FE930: @ 80FE930
ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
ldrb r0, [r5]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x36]
@@ -170,7 +170,7 @@ sub_80FE988: @ 80FE988
ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
@@ -178,7 +178,7 @@ sub_80FE988: @ 80FE988
strh r0, [r4, 0x34]
ldrb r0, [r5]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x36]
@@ -324,13 +324,13 @@ sub_80FEAD8: @ 80FEAD8
ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
ldrb r0, [r5]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x36]
@@ -350,7 +350,7 @@ sub_80FEAD8: @ 80FEAD8
sub_80FEB28: @ 80FEB28
push {r4,lr}
adds r4, r0, 0
- bl sub_80A6900
+ bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
beq _080FEB3C
@@ -377,13 +377,13 @@ sub_80FEB44: @ 80FEB44
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -413,7 +413,7 @@ _080FEB94:
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
@@ -421,7 +421,7 @@ _080FEB94:
strh r0, [r5, 0x34]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
@@ -511,7 +511,7 @@ _080FEC68:
ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x4]
@@ -519,7 +519,7 @@ _080FEC68:
strh r0, [r6, 0x32]
ldrb r0, [r5]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x6]
@@ -541,7 +541,7 @@ _080FEC68:
sub_80FECB8: @ 80FECB8
push {r4,lr}
adds r4, r0, 0
- bl sub_80A6900
+ bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
beq _080FECE2
@@ -774,7 +774,7 @@ sub_80FEE78: @ 80FEE78
ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r5, [r5, 0x4]
@@ -871,7 +871,7 @@ sub_80FEF44: @ 80FEF44
ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r5, [r5, 0x4]
@@ -953,13 +953,13 @@ sub_80FEFFC: @ 80FEFFC
ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x20]
ldrb r0, [r5]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
@@ -1101,7 +1101,7 @@ _080FF114:
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r1, [r6, 0x4]
@@ -1109,7 +1109,7 @@ _080FF114:
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r6, [r6, 0x6]
@@ -1175,7 +1175,7 @@ sub_80FF1C0: @ 80FF1C0
movs r0, 0x1
strh r0, [r6, 0x2E]
adds r0, r6, 0
- bl sub_80A6900
+ bl AnimateBallThrow
ldrh r0, [r6, 0x3C]
strh r5, [r6, 0x2E]
lsls r4, 16
@@ -1799,7 +1799,7 @@ _080FF6AA:
_080FF6C2:
ldrb r0, [r6]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
ldr r4, =gBattleAnimArgs
lsrs r0, 24
@@ -1808,7 +1808,7 @@ _080FF6C2:
strh r0, [r5, 0x20]
ldrb r0, [r6]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r4, [r4, 0x2]
@@ -1848,13 +1848,13 @@ _080FF704:
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
@@ -1881,13 +1881,13 @@ sub_80FF768: @ 80FF768
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -1944,13 +1944,13 @@ sub_80FF7EC: @ 80FF7EC
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
mov r8, r0
mov r0, r8
lsls r0, 24
@@ -1959,13 +1959,13 @@ sub_80FF7EC: @ 80FF7EC
ldr r6, =gAnimBankTarget
ldrb r0, [r6]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldrb r0, [r6]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
adds r2, r0, 0
lsls r2, 24
subs r4, r5
@@ -2098,7 +2098,7 @@ sub_80FF934: @ 80FF934
ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
ldr r4, =gBattleAnimArgs
lsrs r0, 24
@@ -2107,7 +2107,7 @@ sub_80FF934: @ 80FF934
strh r0, [r6, 0x20]
ldrb r0, [r5]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x2]
@@ -2352,12 +2352,12 @@ sub_80FFB18: @ 80FFB18
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r6, r0, 24
ldrb r0, [r4]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r2, r0, 24
ldr r0, =gAnimBankAttacker
@@ -2456,7 +2456,7 @@ sub_80FFBF4: @ 80FFBF4
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r6, r0, 24
ldrb r0, [r4]
@@ -2554,12 +2554,12 @@ sub_80FFCB4: @ 80FFCB4
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r6, r0, 24
ldrb r0, [r4]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r2, r0, 24
ldr r0, =gAnimBankTarget
@@ -2963,13 +2963,13 @@ sub_80FFFC0: @ 80FFFC0
strh r0, [r5, 0x10]
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x14]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x16]
@@ -3161,7 +3161,7 @@ _08100180:
adds r1, r2, 0
bl sub_8100524
adds r0, r4, 0
- bl sub_80A6900
+ bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
bne _08100196
@@ -3190,7 +3190,7 @@ _081001B4:
adds r1, r2, 0
bl sub_8100524
adds r0, r4, 0
- bl sub_80A6900
+ bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
bne _081001CA
@@ -3219,7 +3219,7 @@ _081001E6:
adds r1, r2, 0
bl sub_8100524
adds r0, r4, 0
- bl sub_80A6900
+ bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
bne _081001FC
@@ -3272,7 +3272,7 @@ _08100254:
adds r1, r2, 0
bl sub_8100524
adds r0, r4, 0
- bl sub_80A6900
+ bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
bne _0810026A
@@ -3403,7 +3403,7 @@ _08100362:
adds r1, r2, 0
bl sub_8100524
adds r0, r4, 0
- bl sub_80A6900
+ bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
bne _08100378
@@ -3514,7 +3514,7 @@ _08100448:
adds r1, r2, 0
bl sub_8100524
adds r0, r4, 0
- bl sub_80A6900
+ bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
beq _081004FC
@@ -3566,7 +3566,7 @@ _081004B6:
adds r1, r2, 0
bl sub_8100524
adds r0, r4, 0
- bl sub_80A6900
+ bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
beq _081004FC
@@ -3837,7 +3837,7 @@ _081006CE:
_081006D4:
adds r0, r6, 0
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r5, [r5]
@@ -3860,7 +3860,7 @@ _08100700:
ldr r0, =gAnimBankTarget
ldrb r0, [r0]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r7, [r7]
@@ -4082,12 +4082,12 @@ _081008C4:
_081008C6:
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r5, r0, 24
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r2, r0, 24
ldr r0, =gBattleAnimArgs
@@ -4346,13 +4346,13 @@ sub_8100AE0: @ 8100AE0
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -4444,7 +4444,7 @@ _08100BA8:
movs r4, 0x2
eors r0, r4
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r7, r0, 24
ldrb r0, [r5]
@@ -4456,12 +4456,12 @@ _08100BC8:
ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r7, r0, 24
ldrb r0, [r5]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r4, r0, 24
ldrb r0, [r5]
@@ -4477,7 +4477,7 @@ _08100BC8:
mov r2, r8
eors r0, r2
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
adds r0, r7
@@ -4486,7 +4486,7 @@ _08100BC8:
mov r1, r8
eors r0, r1
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
adds r0, r4
@@ -4497,13 +4497,13 @@ _08100C24:
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r7, r0, 24
ldrb r0, [r4]
_08100C34:
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r4, r0, 24
_08100C3E:
@@ -5093,14 +5093,14 @@ sub_81010CC: @ 81010CC
ldr r6, =gAnimBankTarget
ldrb r0, [r6]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
movs r5, 0
strh r0, [r4, 0x20]
ldrb r0, [r6]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldr r1, =0x0000ffe8
@@ -5470,7 +5470,7 @@ _081013C4:
bne _081013E8
adds r0, r6, 0
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
@@ -5481,14 +5481,14 @@ _081013C4:
_081013E8:
adds r0, r6, 0
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
adds r0, r6, 0
movs r1, 0x3
_081013FA:
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r4, [r4, 0x2]
@@ -5888,14 +5888,14 @@ _08101718:
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
adds r0, r7
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
adds r0, r6
@@ -6930,7 +6930,7 @@ _08101F5C:
_08101F5E:
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r1, [r6, 0x2]
@@ -6938,7 +6938,7 @@ _08101F5E:
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r6, [r6, 0x4]
@@ -6965,7 +6965,7 @@ sub_8101FA8: @ 8101FA8
ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldr r1, =0x0000ffd0
@@ -6973,7 +6973,7 @@ sub_8101FA8: @ 8101FA8
strh r0, [r4, 0x20]
ldrb r0, [r5]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
@@ -6995,7 +6995,7 @@ sub_8101FF0: @ 8101FF0
ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldr r1, =gBattleAnimArgs
@@ -7007,7 +7007,7 @@ sub_8101FF0: @ 8101FF0
strh r0, [r4, 0x20]
ldrb r0, [r5]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
@@ -7123,7 +7123,7 @@ _081020F4:
_081020F6:
ldrb r0, [r4]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r1, [r6, 0x2]
@@ -7131,7 +7131,7 @@ _081020F6:
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r6, [r6, 0x4]
@@ -7194,14 +7194,14 @@ sub_810217C: @ 810217C
ldr r6, =gAnimBankAttacker
ldrb r0, [r6]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
movs r5, 0
strh r0, [r4, 0x20]
ldrb r0, [r6]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
subs r0, 0xC
@@ -7319,7 +7319,7 @@ sub_8102268: @ 8102268
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
ldr r5, =gBattleAnimArgs
lsrs r0, 24
@@ -7328,7 +7328,7 @@ sub_8102268: @ 8102268
strh r0, [r6, 0x20]
ldrb r0, [r4]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r5, [r5, 0x2]
@@ -7468,13 +7468,13 @@ _08102390:
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
@@ -7676,7 +7676,7 @@ sub_8102540: @ 8102540
ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
ldr r2, =gBattleAnimArgs
lsrs r0, 24
@@ -8071,7 +8071,7 @@ _08102862:
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r1, [r6]
@@ -8079,7 +8079,7 @@ _08102862:
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r6, [r6, 0x2]
@@ -8660,12 +8660,12 @@ _08102D34:
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r6, r0, 24
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r3, r0, 24
_08102D4E:
@@ -8870,7 +8870,7 @@ sub_8102EB0: @ 8102EB0
_08102ECE:
ldrb r0, [r7]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
ldr r4, =gBattleAnimArgs
lsrs r0, 24
@@ -8880,7 +8880,7 @@ _08102ECE:
strh r0, [r6, 0x20]
ldrb r0, [r7]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r2, [r4, 0x4]
@@ -9005,14 +9005,14 @@ _08102FDE:
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
adds r0, r6
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
adds r0, 0x8
@@ -9167,7 +9167,7 @@ _08103136:
strh r0, [r6, 0x20]
adds r0, r5, 0
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
adds r4, r0, 0
adds r0, r5, 0
movs r1, 0
@@ -9334,7 +9334,7 @@ _081032A2:
ldrb r5, [r0]
adds r0, r5, 0
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
movs r6, 0
@@ -9719,13 +9719,13 @@ sub_810358C: @ 810358C
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -10140,7 +10140,7 @@ _0810390E:
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
ldr r6, =gBattleAnimArgs
lsrs r0, 24
@@ -10151,7 +10151,7 @@ _0810390E:
mov r8, r0
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r2, [r6, 0x6]
@@ -10719,7 +10719,7 @@ _08103DB6:
ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
ldr r1, =gTasks
mov r3, r8
adds r4, r3, r7
@@ -10731,7 +10731,7 @@ _08103DB6:
adds r6, r0, 0
ldrb r0, [r5]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x1C]
@@ -10762,13 +10762,13 @@ _08103E20:
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5]
ldrb r0, [r4]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
mov r1, r10
@@ -11053,12 +11053,12 @@ sub_8104088: @ 8104088
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r6, r0, 24
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
ldr r4, =gBattleAnimArgs
lsrs r0, 24
@@ -11203,13 +11203,13 @@ sub_81041C4: @ 81041C4
ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
ldrb r0, [r5]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x36]
@@ -11426,14 +11426,14 @@ _08104390:
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
add r0, r8
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
adds r0, r6
@@ -11513,7 +11513,7 @@ _08104448:
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
add r0, r9
@@ -11522,7 +11522,7 @@ _08104448:
strh r0, [r5, 0x34]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
adds r0, r6
@@ -12356,7 +12356,7 @@ sub_8104B1C: @ 8104B1C
bl StartSpriteAnim
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
adds r0, 0x20
@@ -12370,7 +12370,7 @@ _08104B50:
bl StartSpriteAnim
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
subs r0, 0x20
@@ -12381,7 +12381,7 @@ _08104B6A:
ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
movs r1, 0
@@ -12432,7 +12432,7 @@ _08104BCA:
_08104BE4:
adds r0, r5, 0
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
ldr r4, =gBattleAnimArgs
lsrs r0, 24
@@ -12441,7 +12441,7 @@ _08104BE4:
strh r0, [r6, 0x20]
adds r0, r5, 0
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r4, [r4, 0x4]
@@ -12962,7 +12962,7 @@ sub_810501C: @ 810501C
ldr r6, =gAnimBankTarget
ldrb r0, [r6]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
subs r0, 0x10
@@ -13231,7 +13231,7 @@ _08105230:
adds r0, r5, 0
movs r1, 0x2
_08105234:
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r4, r0, 24
adds r0, r5, 0
@@ -13341,7 +13341,7 @@ _08105310:
beq _0810536C
adds r0, r7, 0
mov r1, r10
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
ldr r1, =gBattleAnimArgs
lsrs r0, 24
@@ -13372,7 +13372,7 @@ _0810535C:
_0810536C:
adds r0, r7, 0
mov r1, r10
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldr r1, =gBattleAnimArgs
@@ -13442,7 +13442,7 @@ _081053FA:
strb r0, [r1]
adds r0, r7, 0
ldr r1, [sp, 0x4]
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
ldr r4, =gBattleAnimArgs
lsrs r0, 24
@@ -13473,13 +13473,13 @@ _0810544C:
mov r4, sp
mov r0, r8
mov r1, r10
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4]
mov r0, r8
ldr r1, [sp, 0x4]
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
mov r2, sp
@@ -14295,13 +14295,13 @@ sub_8105AAC: @ 8105AAC
ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x24]
ldrb r0, [r5]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
@@ -14700,7 +14700,7 @@ _08105E08:
strh r0, [r5, 0x2E]
ldrb r0, [r6]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x4]
@@ -14708,7 +14708,7 @@ _08105E08:
strh r0, [r5, 0x32]
ldrb r0, [r6]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x6]
@@ -15075,7 +15075,7 @@ sub_8106140: @ 8106140
ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
@@ -15083,7 +15083,7 @@ sub_8106140: @ 8106140
strh r0, [r4, 0x34]
ldrb r0, [r5]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x36]
@@ -15776,13 +15776,13 @@ sub_810673C: @ 810673C
ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x20]
ldrb r0, [r5]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
@@ -15927,13 +15927,13 @@ sub_8106878: @ 8106878
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -16032,13 +16032,13 @@ sub_8106944: @ 8106944
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -16513,13 +16513,13 @@ _08106CFC:
_08106CFE:
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -16666,7 +16666,7 @@ _08106E1E:
_08106E38:
adds r0, r6, 0
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
ldr r7, =gBattleAnimArgs
lsrs r0, 24
@@ -16676,7 +16676,7 @@ _08106E38:
strh r0, [r5, 0x20]
adds r0, r6, 0
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r1, [r7, 0x4]
@@ -17019,13 +17019,13 @@ _081070F8:
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
adds r0, 0x28
@@ -17204,7 +17204,7 @@ sub_8107260: @ 8107260
beq _08107290
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldr r4, =gBattleAnimArgs
@@ -17215,7 +17215,7 @@ sub_8107260: @ 8107260
_08107290:
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
ldr r4, =gBattleAnimArgs
lsrs r0, 24
@@ -17225,7 +17225,7 @@ _081072A2:
strh r0, [r6, 0x20]
ldrb r0, [r5]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r4, [r4, 0x2]
@@ -17256,7 +17256,7 @@ _081072D8:
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x32]
@@ -17264,7 +17264,7 @@ _081072D8:
strh r0, [r6, 0x34]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x36]
@@ -17448,7 +17448,7 @@ _08107482:
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
adds r0, r6
@@ -17457,7 +17457,7 @@ _08107482:
strh r0, [r5, 0x34]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r7, [r7, 0x6]
@@ -17624,7 +17624,7 @@ sub_81075EC: @ 81075EC
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
@@ -17632,7 +17632,7 @@ sub_81075EC: @ 81075EC
strh r0, [r5, 0x34]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
@@ -17776,13 +17776,13 @@ sub_8107730: @ 8107730
ldr r7, =gAnimBankAttacker
ldrb r0, [r7]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x20]
ldrb r0, [r7]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
@@ -17913,7 +17913,7 @@ _08107842:
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r1, [r5, 0x4]
@@ -17921,7 +17921,7 @@ _08107842:
strh r0, [r6, 0x32]
ldrb r0, [r4]
adds r1, r7, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r5, [r5, 0x6]
@@ -19353,13 +19353,13 @@ sub_8108408: @ 8108408
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
mov r8, r0
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r6, r0, 24
movs r5, 0xAC
@@ -19959,14 +19959,14 @@ sub_81088E4: @ 81088E4
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
movs r6, 0
strh r0, [r5, 0xE]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x10]
@@ -20234,7 +20234,7 @@ _08108B1A:
sub_8108B2C: @ 8108B2C
push {r4-r6,lr}
adds r6, r0, 0
- bl sub_80A6900
+ bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
beq _08108B86
@@ -20283,7 +20283,7 @@ _08108B86:
sub_8108B94: @ 8108B94
push {r4-r6,lr}
adds r5, r0, 0
- bl sub_80A6900
+ bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
beq _08108BD0
@@ -20421,13 +20421,13 @@ sub_8108C94: @ 8108C94
ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x30]
ldrb r0, [r5]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
@@ -21131,7 +21131,7 @@ sub_8109244: @ 8109244
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
@@ -21139,7 +21139,7 @@ sub_8109244: @ 8109244
strh r0, [r5, 0x34]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
@@ -21167,13 +21167,13 @@ sub_810929C: @ 810929C
ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x20]
ldrb r0, [r5]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x22]
@@ -22359,7 +22359,7 @@ _08109BCE:
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
@@ -22367,7 +22367,7 @@ _08109BCE:
strh r0, [r5, 0x34]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
@@ -23181,13 +23181,13 @@ sub_810A274: @ 810A274
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -23307,7 +23307,7 @@ _0810A384:
bne _0810A3AC
adds r0, r4, 0
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
@@ -23318,14 +23318,14 @@ _0810A384:
_0810A3AC:
adds r0, r4, 0
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
adds r0, r4, 0
movs r1, 0x3
_0810A3BE:
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -23420,7 +23420,7 @@ sub_810A46C: @ 810A46C
ldr r6, =gAnimBankTarget
ldrb r0, [r6]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
@@ -23428,7 +23428,7 @@ sub_810A46C: @ 810A46C
strh r0, [r4, 0x34]
ldrb r0, [r6]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x36]
@@ -23591,7 +23591,7 @@ _0810A5E0:
ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
ldr r4, =gBattleAnimArgs
lsrs r0, 24
@@ -23600,7 +23600,7 @@ _0810A5E0:
strh r0, [r6, 0x20]
ldrb r0, [r5]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x4]
@@ -23657,7 +23657,7 @@ _0810A666:
_0810A66E:
adds r0, r6, 0
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
ldr r4, =gBattleAnimArgs
lsrs r0, 24
@@ -23666,7 +23666,7 @@ _0810A66E:
strh r0, [r5, 0x20]
adds r0, r6, 0
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x2]
@@ -23830,7 +23830,7 @@ sub_810A7DC: @ 810A7DC
ldr r6, =gAnimBankTarget
ldrb r0, [r6]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
ldr r1, =gTasks
lsls r4, r5, 2
adds r4, r5
@@ -23844,7 +23844,7 @@ sub_810A7DC: @ 810A7DC
strh r0, [r4, 0x8]
ldrb r0, [r6]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r1, [r5, 0x2]
@@ -24228,13 +24228,13 @@ _0810AB28:
_0810AB2A:
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x24]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x26]
@@ -24448,13 +24448,13 @@ _0810ACF4:
_0810ACF6:
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -24486,13 +24486,13 @@ _0810AD4C:
_0810AD4E:
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -24521,13 +24521,13 @@ sub_810AD98: @ 810AD98
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -24649,7 +24649,7 @@ _0810AE90:
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x24]
@@ -24855,13 +24855,13 @@ _0810B012:
_0810B048:
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0xE]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x12]
@@ -24881,13 +24881,13 @@ _0810B070:
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x12]
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
movs r2, 0xA
@@ -25127,13 +25127,13 @@ _0810B24E:
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -25194,13 +25194,13 @@ _0810B2DC:
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x14]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x16]
@@ -25209,7 +25209,7 @@ _0810B2DC:
ldr r0, =gAnimBankTarget
ldrb r0, [r0]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x1C]
@@ -25542,7 +25542,7 @@ _0810B58A:
ldr r0, =gAnimBankTarget
ldrb r0, [r0]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
adds r0, 0x20
@@ -25564,7 +25564,7 @@ _0810B5B4:
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -25724,26 +25724,26 @@ sub_810B6C4: @ 810B6C4
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
mov r9, r0
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
mov r8, r0
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r3, r0, 24
ldrb r0, [r4]
movs r1, 0x3
str r3, [sp]
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r6, r0, 24
ldr r1, =gBattleAnimArgs
@@ -25979,7 +25979,7 @@ sub_810B8EC: @ 810B8EC
ldr r0, =gAnimBankTarget
ldrb r0, [r0]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
@@ -26006,7 +26006,7 @@ _0810B936:
ldr r0, =gAnimBankTarget
ldrb r0, [r0]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
ldr r1, =gBattleAnimArgs
lsrs r0, 24
@@ -26133,13 +26133,13 @@ sub_810BA24: @ 810BA24
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r6, [r6, 0x6]
@@ -26434,13 +26434,13 @@ sub_810BC94: @ 810BC94
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
@@ -27182,13 +27182,13 @@ sub_810C2F0: @ 810C2F0
ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x20]
ldrb r0, [r5]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
@@ -27460,12 +27460,12 @@ sub_810C560: @ 810C560
mov r8, r0
ldrb r0, [r0]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
adds r4, r0, 0
ldr r7, =gAnimBankTarget
ldrb r0, [r7]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r4, 24
lsls r0, 24
cmp r4, r0
@@ -27526,13 +27526,13 @@ _0810C5F4:
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -27548,7 +27548,7 @@ _0810C5F4:
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r1, [r6, 0x6]
@@ -27570,7 +27570,7 @@ _0810C65C:
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r1, [r6, 0x6]
@@ -27583,7 +27583,7 @@ _0810C65C:
ldrb r0, [r4]
movs r1, 0x1
_0810C684:
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r6, [r6, 0x8]
@@ -27679,7 +27679,7 @@ _0810C736:
ldr r6, =gAnimBankTarget
ldrb r0, [r6]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x20]
@@ -28062,12 +28062,12 @@ sub_810C9E4: @ 810C9E4
str r0, [sp, 0x4]
adds r0, r5, 0
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r7, r0, 24
adds r0, r5, 0
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r6, r0, 24
mov r1, r8
@@ -28384,7 +28384,7 @@ _0810CCCE:
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r1, [r6, 0x4]
@@ -28392,7 +28392,7 @@ _0810CCCE:
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r1, [r6, 0x6]
@@ -28414,7 +28414,7 @@ _0810CCCE:
sub_810CD1C: @ 810CD1C
push {r4,lr}
adds r4, r0, 0
- bl sub_80A6900
+ bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
beq _0810CD3E
@@ -28705,13 +28705,13 @@ _0810CF74:
bl StartSpriteAnim
mov r0, r8
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
mov r0, r8
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -29149,13 +29149,13 @@ sub_810D308: @ 810D308
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
@@ -29275,13 +29275,13 @@ _0810D428:
_0810D42A:
ldrb r0, [r4]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -29389,7 +29389,7 @@ sub_810D4F4: @ 810D4F4
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r2, [r6, 0x4]
@@ -29400,7 +29400,7 @@ _0810D520:
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r1, [r6, 0x4]
@@ -29409,7 +29409,7 @@ _0810D532:
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r6, [r6, 0x6]
@@ -29523,13 +29523,13 @@ sub_810D608: @ 810D608
ldr r4, =gBankAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -29601,7 +29601,7 @@ sub_810D6A8: @ 810D6A8
lsls r0, 24
lsrs r0, 24
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
@@ -29611,7 +29611,7 @@ sub_810D6A8: @ 810D6A8
lsls r0, 24
lsrs r0, 24
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x36]
@@ -29715,13 +29715,13 @@ _0810D7C2:
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
adds r6, r0, 0
lsls r6, 24
lsrs r6, 24
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
@@ -29729,14 +29729,14 @@ _0810D7C2:
mov r8, r2
ldrb r0, [r2]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
mov r1, r8
ldrb r0, [r1]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
subs r4, r6
strh r4, [r7, 0x2E]
@@ -29811,13 +29811,13 @@ sub_810D874: @ 810D874
ldr r4, =gBankAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -29879,7 +29879,7 @@ _0810D918:
strh r0, [r5, 0x30]
adds r0, r4, 0
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
@@ -29887,7 +29887,7 @@ _0810D918:
strh r0, [r5, 0x34]
adds r0, r4, 0
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
@@ -29932,13 +29932,13 @@ sub_810D984: @ 810D984
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -30208,13 +30208,13 @@ _0810DBC2:
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
@@ -30234,7 +30234,7 @@ _0810DBC2:
sub_810DC10: @ 810DC10
push {r4,lr}
adds r4, r0, 0
- bl sub_80A6900
+ bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
beq _0810DC24
@@ -30309,7 +30309,7 @@ _0810DC72:
sub_810DCB4: @ 810DCB4
push {r4,lr}
adds r4, r0, 0
- bl sub_80A6900
+ bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
beq _0810DCC8
@@ -30699,7 +30699,7 @@ _0810DFC8:
ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x4]
@@ -30709,7 +30709,7 @@ _0810DFC8:
strh r0, [r6, 0x34]
ldrb r0, [r5]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r4, [r4, 0x6]
@@ -30782,13 +30782,13 @@ _0810E070:
_0810E088:
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
ldr r2, =gBattleAnimArgs
ldrh r1, [r2]
@@ -30808,13 +30808,13 @@ _0810E088:
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
@@ -30958,7 +30958,7 @@ _0810E1FE:
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
@@ -30966,7 +30966,7 @@ _0810E1FE:
strh r0, [r5, 0x34]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
@@ -31118,7 +31118,7 @@ _0810E33E:
_0810E354:
adds r0, r6, 0
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
ldr r4, =gBattleAnimArgs
lsrs r0, 24
@@ -31127,7 +31127,7 @@ _0810E354:
strh r0, [r7, 0x20]
adds r0, r6, 0
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
ldrh r1, [r4, 0x2]
lsrs r0, 24
@@ -32064,13 +32064,13 @@ sub_810EA4C: @ 810EA4C
ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x20]
ldrb r0, [r5]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
@@ -32240,13 +32240,13 @@ sub_810EB88: @ 810EB88
ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldrb r0, [r5]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
adds r2, r0, 0
lsls r2, 24
lsrs r2, 24
@@ -32344,7 +32344,7 @@ _0810ECB0:
ldr r0, =gAnimBankTarget
ldrb r0, [r0]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
@@ -32553,13 +32553,13 @@ _0810EE40:
_0810EE42:
ldrb r0, [r4]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -32708,13 +32708,13 @@ _0810EF74:
_0810EF76:
ldrb r0, [r4]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
adds r0, 0x20
@@ -32864,14 +32864,14 @@ sub_810F084: @ 810F084
ldr r6, =gAnimBankAttacker
ldrb r0, [r6]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
mov r1, r8
strh r0, [r1, 0x20]
ldrb r0, [r6]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
adds r6, r0, 0
lsls r6, 24
lsrs r6, 24
@@ -33139,7 +33139,7 @@ _0810F2B8:
_0810F2CE:
ldrb r0, [r6]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
ldr r4, =gBattleAnimArgs
lsrs r0, 24
@@ -33148,7 +33148,7 @@ _0810F2CE:
strh r0, [r5, 0x20]
ldrb r0, [r6]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r4, [r4, 0x2]
@@ -33571,13 +33571,13 @@ sub_810F634: @ 810F634
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -33656,14 +33656,14 @@ sub_810F6B0: @ 810F6B0
_0810F6F6:
ldrb r0, [r6]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
adds r0, r4
strh r0, [r5, 0x20]
ldrb r0, [r6]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
adds r0, r7
@@ -33955,13 +33955,13 @@ sub_810F940: @ 810F940
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x24]
@@ -34263,13 +34263,13 @@ sub_810FBA8: @ 810FBA8
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -34508,7 +34508,7 @@ _0810FDE8:
sub_810FDF0: @ 810FDF0
push {r4,lr}
adds r4, r0, 0
- bl sub_80A6900
+ bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
beq _0810FE0E
@@ -35065,13 +35065,13 @@ _08110260:
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -35254,7 +35254,7 @@ _081103C4:
strh r0, [r6, 0x2E]
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x4]
@@ -35262,7 +35262,7 @@ _081103C4:
strh r0, [r6, 0x32]
ldrb r0, [r5]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r4, [r4, 0x6]
@@ -35333,13 +35333,13 @@ _08110478:
strh r0, [r6, 0x2E]
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x32]
ldrb r0, [r5]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x36]
@@ -35387,13 +35387,13 @@ _08110500:
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
@@ -35715,7 +35715,7 @@ _081107B2:
ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
adds r4, r0, 0
lsls r4, 24
ldr r6, =gBattleAnimArgs
@@ -35726,7 +35726,7 @@ _081107B2:
lsrs r4, 16
ldrb r0, [r5]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -35797,7 +35797,7 @@ _08110870:
ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x4]
@@ -35805,7 +35805,7 @@ _08110870:
strh r0, [r6, 0x32]
ldrb r0, [r5]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x6]
@@ -35844,7 +35844,7 @@ sub_81108CC: @ 81108CC
ands r1, r0
strb r1, [r2]
adds r0, r4, 0
- bl sub_80A6900
+ bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
beq _081108F8
@@ -35879,7 +35879,7 @@ _0811090E:
lsls r0, 16
lsrs r6, r0, 16
adds r0, r4, 0
- bl sub_80A6900
+ bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
bne _08110988
@@ -35949,13 +35949,13 @@ _081109B0:
_081109B2:
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
adds r0, 0x12
@@ -36623,13 +36623,13 @@ sub_8110F74: @ 8110F74
ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
mov r9, r0
ldrb r0, [r5]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 8
movs r1, 0xC0
@@ -36639,13 +36639,13 @@ sub_8110F74: @ 8110F74
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
mov r10, r0
ldrb r0, [r4]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 8
movs r2, 0xC0
@@ -37059,7 +37059,7 @@ _08111304:
sub_811131C: @ 811131C
push {r4,lr}
adds r4, r0, 0
- bl sub_80A6900
+ bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
beq _0811134E
@@ -37219,13 +37219,13 @@ sub_8111444: @ 8111444
ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x20]
ldrb r0, [r5]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldr r2, =gBattleAnimArgs
@@ -37446,7 +37446,7 @@ sub_811160C: @ 811160C
ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
@@ -37454,7 +37454,7 @@ sub_811160C: @ 811160C
strh r0, [r4, 0x34]
ldrb r0, [r5]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x36]
@@ -37929,7 +37929,7 @@ sub_81119E0: @ 81119E0
mov r8, r0
ldrb r0, [r0]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
movs r1, 0
@@ -37938,7 +37938,7 @@ sub_81119E0: @ 81119E0
mov r1, r8
ldrb r0, [r1]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
@@ -38045,13 +38045,13 @@ _08111AD2:
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x30]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
@@ -38107,13 +38107,13 @@ _08111B3C:
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -38982,12 +38982,12 @@ sub_8112264: @ 8112264
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r6, r0, 24
ldrb r0, [r4]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 8
movs r2, 0xE0
@@ -39001,12 +39001,12 @@ _081122AC:
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r6, r0, 24
ldrb r0, [r4]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 8
movs r2, 0xE0
@@ -39017,13 +39017,13 @@ _081122AC:
_081122D0:
ldrb r0, [r4]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
mov r10, r0
ldrb r0, [r4]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 8
movs r1, 0xE0
@@ -39169,7 +39169,7 @@ sub_81123C4: @ 81123C4
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
str r0, [sp, 0x4]
@@ -39221,7 +39221,7 @@ _08112436:
beq _08112502
adds r0, r4, 0
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
mov r10, r0
@@ -40198,7 +40198,7 @@ sub_8112C6C: @ 8112C6C
ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x1A]
@@ -40682,13 +40682,13 @@ sub_8113064: @ 8113064
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -40755,13 +40755,13 @@ sub_8113100: @ 8113100
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
@@ -40842,13 +40842,13 @@ _081131D0:
_081131D2:
ldrb r0, [r4]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -40901,14 +40901,14 @@ sub_8113250: @ 8113250
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
movs r5, 0
strh r0, [r6, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x22]
@@ -41358,14 +41358,14 @@ sub_81135EC: @ 81135EC
mov r8, r1
ldrb r0, [r1]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x20]
mov r2, r8
ldrb r0, [r2]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r3, [r5, 0x8]
@@ -41693,26 +41693,26 @@ sub_81138D4: @ 81138D4
ldr r6, =gAnimBankTarget
ldrb r0, [r6]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x30]
ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
ldrb r0, [r6]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x34]
ldrb r0, [r5]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x36]
@@ -42031,7 +42031,7 @@ _08113B60:
sub_8113B90: @ 8113B90
push {r4,lr}
adds r4, r0, 0
- bl sub_80A6900
+ bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
beq _08113BA4
@@ -42057,7 +42057,7 @@ sub_8113BAC: @ 8113BAC
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
adds r0, 0x1F
@@ -42076,7 +42076,7 @@ sub_8113BAC: @ 8113BAC
strh r1, [r5, 0x22]
ldrb r0, [r4]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
adds r1, r0, 0
@@ -42475,7 +42475,7 @@ _08113F84:
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
adds r0, 0x1F
@@ -42492,7 +42492,7 @@ _08113F84:
strh r1, [r5, 0x22]
ldrb r0, [r4]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
subs r1, r0, 0x4
@@ -43658,13 +43658,13 @@ sub_8114994: @ 8114994
ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x20]
ldrb r0, [r5]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
@@ -43673,13 +43673,13 @@ sub_8114994: @ 8114994
ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
ldrb r0, [r5]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x36]
@@ -43699,7 +43699,7 @@ sub_8114994: @ 8114994
sub_81149FC: @ 81149FC
push {r4,r5,lr}
adds r5, r0, 0
- bl sub_80A6900
+ bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
beq _08114A50
@@ -43719,13 +43719,13 @@ sub_81149FC: @ 81149FC
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
@@ -43746,7 +43746,7 @@ _08114A50:
sub_8114A60: @ 8114A60
push {r4,lr}
adds r4, r0, 0
- bl sub_80A6900
+ bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
beq _08114A74
@@ -43781,7 +43781,7 @@ _08114A9C:
ldr r5, =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x4]
@@ -43789,7 +43789,7 @@ _08114A9C:
strh r0, [r6, 0x32]
ldrb r0, [r5]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r4, [r4, 0x6]
@@ -43893,7 +43893,7 @@ sub_8114B80: @ 8114B80
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r2, [r6, 0x2]
@@ -43901,7 +43901,7 @@ sub_8114B80: @ 8114B80
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r3, [r6, 0x4]
@@ -44657,7 +44657,7 @@ _081151BE:
_081151DA:
adds r0, r4, 0
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
adds r0, r6
@@ -44693,7 +44693,7 @@ _081151DA:
sub_8115228: @ 8115228
push {r4,lr}
adds r4, r0, 0
- bl sub_80A6900
+ bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
beq _0811523C
@@ -44723,7 +44723,7 @@ _08115262:
ldrb r5, [r0]
adds r0, r5, 0
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldr r2, =0x0000fff0
@@ -45244,7 +45244,7 @@ _0811565A:
adds r4, r0
adds r0, r5, 0
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
movs r1, 0x20
@@ -45255,7 +45255,7 @@ _0811565A:
strh r1, [r4, 0xA]
adds r0, r5, 0
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
movs r1, 0x40
diff --git a/asm/battle_anim_815A0D4.s b/asm/battle_anim_815A0D4.s
index d2a401f59..611e4b067 100755
--- a/asm/battle_anim_815A0D4.s
+++ b/asm/battle_anim_815A0D4.s
@@ -90,7 +90,7 @@ sub_815A160: @ 815A160
ldr r6, =gAnimBankTarget
ldrb r0, [r6]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
adds r4, r0, 0
lsls r4, 24
lsrs r4, 8
@@ -100,7 +100,7 @@ sub_815A160: @ 815A160
asrs r4, 16
ldrb r0, [r6]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
adds r1, r0, 0
lsls r1, 24
lsrs r1, 8
@@ -210,13 +210,13 @@ sub_815A254: @ 815A254
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
adds r7, r0, 0
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
adds r6, r0, 0
@@ -816,7 +816,7 @@ _0815A6F8:
sub_815A73C: @ 815A73C
push {r4,lr}
adds r4, r0, 0
- bl sub_80A6900
+ bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
beq _0815A75E
@@ -1254,13 +1254,13 @@ sub_815AAA4: @ 815AAA4
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -1510,7 +1510,7 @@ _0815ACEC:
_0815ACEE:
ldrb r0, [r4]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r6, [r6, 0x2]
@@ -1518,7 +1518,7 @@ _0815ACEE:
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -1906,13 +1906,13 @@ sub_815AFF0: @ 815AFF0
ldr r6, =gAnimBankAttacker
ldrb r0, [r6]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0xC]
ldrb r0, [r6]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0xE]
@@ -2281,13 +2281,13 @@ _0815B2D8:
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x32]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
@@ -2373,13 +2373,13 @@ _0815B3BE:
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -2817,7 +2817,7 @@ _0815B71E:
ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
@@ -3624,14 +3624,14 @@ _0815BE2E:
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
adds r0, r5
strh r0, [r7, 0x20]
ldrb r0, [r4]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
adds r0, 0x20
@@ -4994,13 +4994,13 @@ sub_815C95C: @ 815C95C
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -5531,13 +5531,13 @@ sub_815CDB4: @ 815CDB4
ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x20]
ldrb r0, [r5]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
@@ -5842,13 +5842,13 @@ _0815D05A:
ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldrb r0, [r5]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
mov r2, r10
lsls r1, r2, 16
@@ -6840,7 +6840,7 @@ _0815D896:
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r1, [r6, 0x2]
@@ -6848,7 +6848,7 @@ _0815D896:
strh r0, [r5, 0x20]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r6, [r6, 0x4]
@@ -7382,13 +7382,13 @@ _0815DCEA:
ldrb r4, [r0]
adds r0, r4, 0
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x10]
adds r0, r4, 0
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x12]
@@ -7789,7 +7789,7 @@ sub_815E01C: @ 815E01C
_0815E038:
ldrb r0, [r6]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
ldr r4, =gBattleAnimArgs
lsrs r0, 24
@@ -7798,7 +7798,7 @@ _0815E038:
strh r0, [r5, 0x20]
ldrb r0, [r6]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r1, [r4, 0x2]
@@ -7931,7 +7931,7 @@ _0815E14E:
bne _0815E188
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
adds r4, r0, 0
ldrb r0, [r5]
movs r1, 0
@@ -7951,7 +7951,7 @@ _0815E17C:
_0815E188:
ldrb r0, [r5]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
adds r4, r0, 0
ldrb r0, [r5]
movs r1, 0
@@ -7971,7 +7971,7 @@ _0815E1AC:
ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
adds r4, r0, 0
ldrb r0, [r5]
movs r1, 0
@@ -7990,13 +7990,13 @@ _0815E1D0:
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x22]
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x24]
@@ -8349,14 +8349,14 @@ sub_815E47C: @ 815E47C
mov r10, r0
ldrb r0, [r0]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r7, 0x1E]
mov r1, r10
ldrb r0, [r1]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r7, 0x20]
@@ -8364,14 +8364,14 @@ sub_815E47C: @ 815E47C
mov r8, r0
ldrb r0, [r0]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r7, 0x22]
mov r1, r8
ldrb r0, [r1]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
adds r4, r0, 0
mov r1, r8
ldrb r0, [r1]
@@ -8524,7 +8524,7 @@ _0815E5FE:
lsls r0, 2
ldr r1, =gSprites
adds r0, r1
- bl sub_80A6900
+ bl AnimateBallThrow
ldrh r0, [r4, 0xC]
adds r0, 0x1
strh r0, [r4, 0xC]
@@ -8542,7 +8542,7 @@ _0815E634:
lsls r0, 2
ldr r1, =gSprites
adds r0, r1
- bl sub_80A6900
+ bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
beq _0815E6D2
@@ -8659,7 +8659,7 @@ _0815E724:
strh r1, [r4, 0x3C]
adds r0, r5, 0
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
@@ -8950,7 +8950,7 @@ _0815E970:
_0815E972:
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
@@ -9342,7 +9342,7 @@ sub_815EC48: @ 815EC48
ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -9350,7 +9350,7 @@ sub_815EC48: @ 815EC48
movs r0, 0x2
eors r0, r1
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
cmp r4, r0
@@ -9771,14 +9771,14 @@ _0815EFEC:
lsls r0, 24
lsrs r0, 24
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r5, r0, 24
ldrh r0, [r4, 0x3C]
lsls r0, 24
lsrs r0, 24
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r1, r0, 24
_0815F00C:
@@ -9994,10 +9994,10 @@ sub_815F18C: @ 815F18C
ldr r4, =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
ldrb r0, [r4]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
ldrb r0, [r4]
bl GetBankSide
lsls r0, 24
@@ -10387,7 +10387,7 @@ _0815F4C8:
ldr r0, =gAnimBankTarget
ldrb r0, [r0]
movs r1, 0x3
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -11180,7 +11180,7 @@ _0815FB50:
ldr r0, =gAnimBankTarget
ldrb r0, [r0]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
lsls r3, r5, 16
@@ -11318,7 +11318,7 @@ _0815FC56:
ldr r0, =gAnimBankTarget
ldrb r0, [r0]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
cmp r4, r0
@@ -11331,7 +11331,7 @@ _0815FCB4:
ldr r0, =gAnimBankTarget
ldrb r0, [r0]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
cmp r4, r0
@@ -11469,7 +11469,7 @@ _0815FD8C:
mov r1, r10
ldrb r0, [r1]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
adds r3, r5, 0
@@ -11499,7 +11499,7 @@ _0815FE0C:
mov r2, r10
ldrb r0, [r2]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
adds r3, r5, 0
@@ -11566,7 +11566,7 @@ _0815FE92:
ldr r0, =gAnimBankTarget
ldrb r0, [r0]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
adds r0, 0x10
@@ -11724,14 +11724,14 @@ _08160008:
ldr r0, =gAnimBankAttacker
ldrb r0, [r0]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
adds r5, r0, 0
ldr r0, =gAnimBankTarget
ldrb r0, [r0]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
adds r2, r0, 0
@@ -12169,7 +12169,7 @@ sub_81603A8: @ 81603A8
ldr r4, =gAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x20]
diff --git a/asm/battle_anim_8170478.s b/asm/battle_anim_8170478.s
index a5e3b5f88..635c02e03 100644
--- a/asm/battle_anim_8170478.s
+++ b/asm/battle_anim_8170478.s
@@ -886,7 +886,7 @@ _08170C08:
bl GetMonData
lsls r0, 16
lsrs r0, 16
- bl ball_number_to_ball_processing_index
+ bl ItemIdToBallId
lsls r0, 24
lsrs r0, 24
mov r8, r0
@@ -907,13 +907,13 @@ _08170C44:
ldr r5, =gAnimBankAttacker
ldrb r0, [r5]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
ldrb r0, [r5]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
adds r1, r0, 0
lsls r1, 24
ldr r2, =gSprites
@@ -934,7 +934,7 @@ _08170C44:
mov r0, r8
str r0, [sp]
adds r0, r4, 0
- bl sub_8171D98
+ bl LaunchBallStarsTask
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x1C]
@@ -950,7 +950,7 @@ _08170C44:
ldrb r1, [r5]
movs r0, 0
mov r3, r8
- bl sub_81729E8
+ bl LaunchBallFadeMonTask
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x1E]
@@ -998,10 +998,10 @@ sub_8170CFC: @ 8170CFC
lsrs r4, 24
ldr r0, =gLastUsedItem
ldrh r0, [r0]
- bl ball_number_to_ball_processing_index
+ bl ItemIdToBallId
lsls r0, 24
lsrs r0, 24
- bl sub_8076A78
+ bl LoadBallGfx
adds r0, r4, 0
bl DestroyAnimVisualTask
pop {r4}
@@ -1018,10 +1018,10 @@ sub_8170D24: @ 8170D24
lsrs r4, 24
ldr r0, =gLastUsedItem
ldrh r0, [r0]
- bl ball_number_to_ball_processing_index
+ bl ItemIdToBallId
lsls r0, 24
lsrs r0, 24
- bl sub_8076AE8
+ bl FreeBallGfx
adds r0, r4, 0
bl DestroyAnimVisualTask
pop {r4}
@@ -1057,8 +1057,8 @@ _08170D74:
.pool
thumb_func_end sub_8170D4C
- thumb_func_start ball_number_to_ball_processing_index
-ball_number_to_ball_processing_index: @ 8170D84
+ thumb_func_start ItemIdToBallId
+ItemIdToBallId: @ 8170D84
push {lr}
lsls r0, 16
lsrs r0, 16
@@ -1123,7 +1123,7 @@ _08170DFC:
_08170DFE:
pop {r1}
bx r1
- thumb_func_end ball_number_to_ball_processing_index
+ thumb_func_end ItemIdToBallId
thumb_func_start sub_8170E04
sub_8170E04: @ 8170E04
@@ -1138,14 +1138,14 @@ sub_8170E04: @ 8170E04
mov r10, r0
ldr r0, =gLastUsedItem
ldrh r0, [r0]
- bl ball_number_to_ball_processing_index
+ bl ItemIdToBallId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
lsls r0, r1, 1
adds r0, r1
lsls r0, 3
- ldr r1, =gUnknown_0832C588
+ ldr r1, =gBallSpriteTemplates
adds r0, r1
movs r1, 0x20
movs r2, 0x50
@@ -1166,14 +1166,14 @@ sub_8170E04: @ 8170E04
mov r8, r2
ldrb r0, [r2]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x30]
mov r1, r8
ldrb r0, [r1]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
subs r0, 0x10
@@ -1278,7 +1278,7 @@ _08170F50:
_08170F54:
ldr r0, =gLastUsedItem
ldrh r0, [r0]
- bl ball_number_to_ball_processing_index
+ bl ItemIdToBallId
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -1294,7 +1294,7 @@ _08170F54:
lsls r0, r4, 1
adds r0, r4
lsls r0, 3
- ldr r1, =gUnknown_0832C588
+ ldr r1, =gBallSpriteTemplates
adds r0, r1
adds r1, r6, 0
adds r1, 0x20
@@ -1317,14 +1317,14 @@ _08170F54:
mov r8, r1
ldrb r0, [r1]
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x30]
mov r1, r8
ldrb r0, [r1]
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
subs r0, 0x10
@@ -1487,7 +1487,7 @@ sub_8171134: @ 8171134
push {r4,r5,lr}
sub sp, 0x4
adds r4, r0, 0
- bl sub_80A6900
+ bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
beq _081711D2
@@ -1532,7 +1532,7 @@ _08171188:
str r0, [r4, 0x1C]
ldr r0, =gLastUsedItem
ldrh r0, [r0]
- bl ball_number_to_ball_processing_index
+ bl ItemIdToBallId
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0xB
@@ -1549,13 +1549,13 @@ _08171188:
str r5, [sp]
movs r2, 0x1
movs r3, 0x1C
- bl sub_8171D98
+ bl LaunchBallStarsTask
ldr r0, =gAnimBankTarget
ldrb r1, [r0]
movs r0, 0
movs r2, 0xE
adds r3, r5, 0
- bl sub_81729E8
+ bl LaunchBallFadeMonTask
_081711D2:
add sp, 0x4
pop {r4,r5}
@@ -2671,7 +2671,7 @@ sub_8171AAC: @ 8171AAC
orrs r0, r1
strb r0, [r3]
adds r0, r4, 0
- bl sub_80A6900
+ bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
beq _08171ADC
@@ -2697,7 +2697,7 @@ sub_8171AE4: @ 8171AE4
str r0, [r4, 0x1C]
ldr r0, =gLastUsedItem
ldrh r0, [r0]
- bl ball_number_to_ball_processing_index
+ bl ItemIdToBallId
lsls r0, 24
lsrs r5, r0, 24
cmp r5, 0xB
@@ -2714,13 +2714,13 @@ sub_8171AE4: @ 8171AE4
str r5, [sp]
movs r2, 0x1
movs r3, 0x1C
- bl sub_8171D98
+ bl LaunchBallStarsTask
ldr r0, =gAnimBankTarget
ldrb r1, [r0]
movs r0, 0x1
movs r2, 0xE
adds r3, r5, 0
- bl sub_81729E8
+ bl LaunchBallFadeMonTask
_08171B36:
ldr r6, =gSprites
ldr r5, =gBankSpriteIds
@@ -3007,8 +3007,8 @@ _08171D86:
.pool
thumb_func_end sub_8171D60
- thumb_func_start sub_8171D98
-sub_8171D98: @ 8171D98
+ thumb_func_start LaunchBallStarsTask
+LaunchBallStarsTask: @ 8171D98
push {r4-r6,lr}
mov r6, r10
mov r5, r9
@@ -3070,7 +3070,7 @@ sub_8171D98: @ 8171D98
pop {r1}
bx r1
.pool
- thumb_func_end sub_8171D98
+ thumb_func_end LaunchBallStarsTask
thumb_func_start sub_8171E20
sub_8171E20: @ 8171E20
@@ -4476,8 +4476,8 @@ _081729E2:
bx r0
thumb_func_end sub_8172944
- thumb_func_start sub_81729E8
-sub_81729E8: @ 81729E8
+ thumb_func_start LaunchBallFadeMonTask
+LaunchBallFadeMonTask: @ 81729E8
push {r4-r7,lr}
mov r7, r9
mov r6, r8
@@ -4563,7 +4563,7 @@ _08172A7E:
pop {r1}
bx r1
.pool
- thumb_func_end sub_81729E8
+ thumb_func_end LaunchBallFadeMonTask
thumb_func_start sub_8172AB0
sub_8172AB0: @ 8172AB0
@@ -5234,12 +5234,12 @@ _0817303A:
ldrb r0, [r4, 0x8]
mov r8, r0
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r5, r0, 24
mov r0, r8
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r2, r0, 24
movs r1, 0x1E
@@ -5579,7 +5579,7 @@ sub_817330C: @ 817330C
lsls r0, 24
lsrs r0, 24
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
ldr r5, =gBattleAnimArgs
lsrs r0, 24
@@ -5591,7 +5591,7 @@ sub_817330C: @ 817330C
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
ldrh r5, [r5, 0x6]
@@ -5652,7 +5652,7 @@ _081733C0:
sub_81733D4: @ 81733D4
push {r4,lr}
adds r4, r0, 0
- bl sub_80A6900
+ bl AnimateBallThrow
lsls r0, 24
cmp r0, 0
beq _081733F6
diff --git a/asm/battle_frontier_1.s b/asm/battle_frontier_1.s
index 4d693da3d..f5d4013f6 100755
--- a/asm/battle_frontier_1.s
+++ b/asm/battle_frontier_1.s
@@ -13791,7 +13791,7 @@ sub_8195FF8: @ 8195FF8
push {r4-r6,lr}
adds r5, r0, 0
movs r4, 0
- ldr r6, =gUnknown_085500A4
+ ldr r6, =gRematchTable
_08196000:
movs r1, 0xAE
lsls r1, 1
@@ -13887,7 +13887,7 @@ task_prev_quest: @ 81960A8
cmp r0, 0
bne _081960C2
bl ScriptContext2_Enable
- bl player_bitmagic
+ bl FreezeMapObjects
bl sub_808B864
bl sub_808BCF4
_081960C2:
@@ -14531,7 +14531,7 @@ sub_81965D8: @ 81965D8
negs r0, r0
ands r0, r1
strb r0, [r2]
- bl sav2_get_text_speed
+ bl GetPlayerTextSpeed
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -14659,7 +14659,7 @@ sub_8196710: @ 8196710
thumb_func_start sub_819672C
sub_819672C: @ 819672C
push {lr}
- ldr r1, =gUnknown_085500A4
+ ldr r1, =gRematchTable
lsls r0, 4
adds r0, r1
ldrh r2, [r0, 0xA]
@@ -14677,10 +14677,10 @@ sub_8196748: @ 8196748
push {r4-r6,lr}
movs r5, 0
movs r6, 0
- ldr r4, =gUnknown_085500A4
+ ldr r4, =gRematchTable
_08196750:
ldrh r0, [r4]
- bl HasTrainerAlreadyBeenFought
+ bl HasTrainerBeenFought
lsls r0, 24
cmp r0, 0
beq _0819675E
@@ -14703,10 +14703,10 @@ sub_8196774: @ 8196774
adds r7, r0, 0
movs r4, 0
movs r6, 0
- ldr r5, =gUnknown_085500A4
+ ldr r5, =gRematchTable
_0819677E:
ldrh r0, [r5]
- bl HasTrainerAlreadyBeenFought
+ bl HasTrainerBeenFought
lsls r0, 24
cmp r0, 0
beq _0819679A
@@ -14766,7 +14766,7 @@ _081967EC:
adds r4, r0, 0
movs r7, 0x1
adds r0, r5, 0
- bl sub_80B1E94
+ bl UpdateRematchIfDefeated
b _08196832
_0819680A:
bl Random
@@ -15270,7 +15270,7 @@ sub_8196B98: @ 8196B98
adds r7, r0, 0
cmp r1, 0xFF
beq _08196C5C
- ldr r1, =gUnknown_085500A4
+ ldr r1, =gRematchTable
lsls r0, r2, 4
adds r2, r0, r1
ldrh r4, [r2, 0xA]
@@ -15373,7 +15373,7 @@ sub_8196C70: @ 8196C70
lsls r1, 2
adds r1, r2
ldrh r0, [r1]
- bl sub_80B2250
+ bl GetLastBeatenRematchTrainerId
lsls r0, 16
lsrs r0, 16
ldr r5, =gTrainers
diff --git a/asm/battle_frontier_2.s b/asm/battle_frontier_2.s
index 43ad02708..ead4750e1 100755
--- a/asm/battle_frontier_2.s
+++ b/asm/battle_frontier_2.s
@@ -12380,7 +12380,7 @@ _081A0C8E:
sub_81A0C9C: @ 81A0C9C
push {lr}
bl ScriptContext2_Enable
- bl player_bitmagic
+ bl FreezeMapObjects
bl sub_808B864
bl sub_808BCF4
movs r0, 0
@@ -14280,7 +14280,7 @@ sub_81A1C4C: @ 81A1C4C
adds r3, r0, 0
lsls r0, r5, 3
adds r5, r0, 0x1
- ldr r0, =gUnknown_0203AB74
+ ldr r0, =gResultsWindowId
ldrb r0, [r0]
lsls r3, 24
lsrs r3, 24
@@ -14306,7 +14306,7 @@ sub_81A1C90: @ 81A1C90
push {r4,lr}
sub sp, 0x34
adds r2, r0, 0
- ldr r3, =gUnknown_0203AB74
+ ldr r3, =gResultsWindowId
movs r1, 0xAE
mov r0, sp
adds r0, 0x2F
@@ -14361,7 +14361,7 @@ sub_81A1CD8: @ 81A1CD8
lsls r0, 24
lsrs r0, 24
adds r7, r0, 0
- ldr r0, =gUnknown_0203AB74
+ ldr r0, =gResultsWindowId
mov r10, r0
ldrb r0, [r0]
str r7, [sp]
@@ -14580,7 +14580,7 @@ sub_81A1EA8: @ 81A1EA8
sub sp, 0xC
lsls r0, 24
lsrs r7, r0, 24
- ldr r4, =gUnknown_0203AB74
+ ldr r4, =gResultsWindowId
ldr r0, =gUnknown_08611C74
bl AddWindow
strb r0, [r4]
@@ -14621,7 +14621,7 @@ _081A1F28:
ldr r0, =gStringVar4
movs r1, 0x2
bl sub_81A1C4C
- ldr r6, =gUnknown_0203AB74
+ ldr r6, =gResultsWindowId
ldrb r0, [r6]
ldr r2, =gText_Lv502
movs r1, 0x31
@@ -14734,7 +14734,7 @@ sub_81A2008: @ 81A2008
lsrs r6, 24
lsls r5, 24
lsrs r5, 24
- ldr r0, =gUnknown_0203AB74
+ ldr r0, =gResultsWindowId
mov r10, r0
ldrb r0, [r0]
str r5, [sp]
@@ -14868,7 +14868,7 @@ sub_81A2134: @ 81A2134
sub sp, 0xC
lsls r0, 24
lsrs r7, r0, 24
- ldr r4, =gUnknown_0203AB74
+ ldr r4, =gResultsWindowId
ldr r0, =gUnknown_08611C74
bl AddWindow
strb r0, [r4]
@@ -14893,7 +14893,7 @@ _081A2184:
ldr r0, =gStringVar4
movs r1, 0
bl sub_81A1C4C
- ldr r1, =gUnknown_0203AB74
+ ldr r1, =gResultsWindowId
ldrb r0, [r1]
ldr r2, =gText_Lv502
movs r6, 0x21
@@ -14905,7 +14905,7 @@ _081A2184:
movs r1, 0x1
movs r3, 0x8
bl PrintTextOnWindow
- ldr r1, =gUnknown_0203AB74
+ ldr r1, =gResultsWindowId
ldrb r0, [r1]
ldr r2, =gText_OpenLv
movs r1, 0x61
@@ -14988,10 +14988,10 @@ _081A2184:
mov r1, r8
movs r3, 0x40
bl sub_81A2008
- ldr r1, =gUnknown_0203AB74
+ ldr r1, =gResultsWindowId
ldrb r0, [r1]
bl PutWindowTilemap
- ldr r1, =gUnknown_0203AB74
+ ldr r1, =gResultsWindowId
ldrb r0, [r1]
movs r1, 0x3
bl CopyWindowToVram
@@ -15027,7 +15027,7 @@ sub_81A22B8: @ 81A22B8
lsls r0, 24
lsrs r0, 24
adds r7, r0, 0
- ldr r0, =gUnknown_0203AB74
+ ldr r0, =gResultsWindowId
mov r10, r0
ldrb r0, [r0]
str r7, [sp]
@@ -15221,7 +15221,7 @@ sub_81A2460: @ 81A2460
sub sp, 0xC
lsls r0, 24
lsrs r7, r0, 24
- ldr r4, =gUnknown_0203AB74
+ ldr r4, =gResultsWindowId
ldr r0, =gUnknown_08611C74
bl AddWindow
strb r0, [r4]
@@ -15246,7 +15246,7 @@ _081A24B0:
ldr r0, =gStringVar4
movs r1, 0x2
bl sub_81A1C4C
- ldr r6, =gUnknown_0203AB74
+ ldr r6, =gResultsWindowId
ldrb r0, [r6]
ldr r2, =gText_Lv502
movs r1, 0x31
@@ -15356,7 +15356,7 @@ sub_81A258C: @ 81A258C
lsrs r6, 24
lsls r5, 24
lsrs r5, 24
- ldr r0, =gUnknown_0203AB74
+ ldr r0, =gResultsWindowId
mov r10, r0
ldrb r0, [r0]
str r5, [sp]
@@ -15469,7 +15469,7 @@ sub_81A2698: @ 81A2698
mov r5, r8
push {r5-r7}
sub sp, 0xC
- ldr r6, =gUnknown_0203AB74
+ ldr r6, =gResultsWindowId
ldr r0, =gUnknown_08611C74
bl AddWindow
strb r0, [r6]
@@ -15608,7 +15608,7 @@ sub_81A27E8: @ 81A27E8
lsls r0, 24
lsrs r0, 24
adds r7, r0, 0
- ldr r0, =gUnknown_0203AB74
+ ldr r0, =gResultsWindowId
mov r10, r0
ldrb r0, [r0]
str r7, [sp]
@@ -15772,7 +15772,7 @@ _081A2956:
sub_81A2968: @ 81A2968
push {r4-r6,lr}
sub sp, 0xC
- ldr r5, =gUnknown_0203AB74
+ ldr r5, =gResultsWindowId
ldr r0, =gUnknown_08611C74
bl AddWindow
strb r0, [r5]
@@ -15871,7 +15871,7 @@ sub_81A2A28: @ 81A2A28
lsls r0, 24
lsrs r0, 24
adds r6, r0, 0
- ldr r0, =gUnknown_0203AB74
+ ldr r0, =gResultsWindowId
mov r10, r0
ldrb r0, [r0]
str r6, [sp]
@@ -16147,7 +16147,7 @@ sub_81A2C94: @ 81A2C94
sub sp, 0xC
lsls r0, 24
lsrs r7, r0, 24
- ldr r4, =gUnknown_0203AB74
+ ldr r4, =gResultsWindowId
ldr r0, =gUnknown_08611C74
bl AddWindow
strb r0, [r4]
@@ -16172,7 +16172,7 @@ _081A2CE0:
ldr r0, =gStringVar4
movs r1, 0
bl sub_81A1C4C
- ldr r0, =gUnknown_0203AB74
+ ldr r0, =gResultsWindowId
mov r8, r0
ldrb r0, [r0]
ldr r2, =gText_Lv502
@@ -16276,7 +16276,7 @@ sub_81A2DB4: @ 81A2DB4
lsls r0, 24
lsrs r0, 24
adds r7, r0, 0
- ldr r0, =gUnknown_0203AB74
+ ldr r0, =gResultsWindowId
mov r10, r0
ldrb r0, [r0]
str r7, [sp]
@@ -16442,7 +16442,7 @@ _081A2F26:
sub_81A2F38: @ 81A2F38
push {r4-r6,lr}
sub sp, 0xC
- ldr r5, =gUnknown_0203AB74
+ ldr r5, =gResultsWindowId
ldr r0, =gUnknown_08611C74
bl AddWindow
strb r0, [r5]
@@ -16520,7 +16520,7 @@ sub_81A2FF8: @ 81A2FF8
mov r6, r8
push {r6,r7}
sub sp, 0xC
- ldr r4, =gUnknown_0203AB74
+ ldr r4, =gResultsWindowId
ldr r0, =gUnknown_08611C7C
bl AddWindow
strb r0, [r4]
@@ -16686,7 +16686,7 @@ _081A315C:
movs r2, 0x1
movs r3, 0x4
bl ConvertIntToDecimalStringN
- ldr r6, =gUnknown_0203AB74
+ ldr r6, =gResultsWindowId
ldrb r0, [r6]
movs r1, 0x26
adds r3, r5, 0
@@ -18962,7 +18962,7 @@ sub_81A4594: @ 81A4594
sub sp, 0x2C
mov r8, r1
adds r6, r3, 0
- ldr r1, =gUnknown_0203AB74
+ ldr r1, =gResultsWindowId
ldrb r5, [r1]
lsls r4, r0, 1
adds r4, r0
@@ -18998,7 +18998,7 @@ sub_81A4594: @ 81A4594
ldrb r2, [r6, 0xE]
add r0, sp, 0xC
bl TVShowConvertInternationalString
- ldr r1, =gUnknown_0203AB74
+ ldr r1, =gResultsWindowId
ldrb r0, [r1]
mov r3, r8
adds r3, 0x2
@@ -19038,7 +19038,7 @@ _081A4618:
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
- ldr r1, =gUnknown_0203AB74
+ ldr r1, =gResultsWindowId
ldrb r0, [r1]
str r7, [sp]
mov r1, r10
@@ -19072,7 +19072,7 @@ sub_81A4684: @ 81A4684
adds r7, r1, 0
mov r10, r2
adds r5, r3, 0
- ldr r1, =gUnknown_0203AB74
+ ldr r1, =gResultsWindowId
ldrb r0, [r1]
lsls r2, r6, 1
adds r2, r6
@@ -19112,7 +19112,7 @@ sub_81A4684: @ 81A4684
ldrb r2, [r5, 0x1A]
add r0, sp, 0xC
bl TVShowConvertInternationalString
- ldr r1, =gUnknown_0203AB74
+ ldr r1, =gResultsWindowId
ldrb r0, [r1]
adds r3, r7, 0x2
lsls r3, 27
@@ -19147,7 +19147,7 @@ _081A4734:
adds r1, r4, 0
bl StringCopy
_081A473C:
- ldr r2, =gUnknown_0203AB74
+ ldr r2, =gResultsWindowId
mov r9, r2
ldrb r0, [r2]
adds r3, r7, 0x4
@@ -19468,7 +19468,7 @@ sub_81A4998: @ 81A4998
ldr r1, [r5]
adds r0, r6, 0
bl StringExpandPlaceholders
- ldr r0, =gUnknown_0203AB74
+ ldr r0, =gResultsWindowId
mov r8, r0
ldrb r0, [r0]
movs r1, 0x1
@@ -19567,7 +19567,7 @@ _081A4A90:
thumb_func_start sub_81A4AA0
sub_81A4AA0: @ 81A4AA0
push {r4,lr}
- ldr r4, =gUnknown_0203AB74
+ ldr r4, =gResultsWindowId
ldr r0, =gUnknown_08611C84
bl AddWindow
strb r0, [r4]
@@ -19595,7 +19595,7 @@ sub_81A4AA0: @ 81A4AA0
thumb_func_start sub_81A4AE8
sub_81A4AE8: @ 81A4AE8
push {r4,lr}
- ldr r4, =gUnknown_0203AB74
+ ldr r4, =gResultsWindowId
ldrb r0, [r4]
movs r1, 0x11
bl FillWindowPixelBuffer
diff --git a/asm/battle_records.s b/asm/battle_records.s
index c961aefe3..c441adc74 100644
--- a/asm/battle_records.s
+++ b/asm/battle_records.s
@@ -496,7 +496,7 @@ sub_813C2F4: @ 813C2F4
movs r2, 0xD0
bl GetStringCenterAlignXOffset
adds r3, r0, 0
- ldr r0, =gUnknown_0203AB74
+ ldr r0, =gResultsWindowId
ldrb r0, [r0]
lsls r3, 24
lsrs r3, 24
@@ -531,7 +531,7 @@ sub_813C384: @ 813C384
ldr r7, [r6, 0xC]
cmp r7, 0
bne _0813C40C
- ldr r0, =gUnknown_0203AB74
+ ldr r0, =gResultsWindowId
mov r8, r0
ldrb r0, [r0]
ldr r2, =gUnknown_085B3D84
@@ -587,7 +587,7 @@ _0813C40C:
lsrs r1, 24
ldr r0, =gStringVar1
bl ConvertInternationalString
- ldr r0, =gUnknown_0203AB74
+ ldr r0, =gResultsWindowId
mov r8, r0
ldrb r0, [r0]
lsls r4, 3
@@ -661,7 +661,7 @@ sub_813C4BC: @ 813C4BC
mov r6, r8
push {r6,r7}
sub sp, 0xC
- ldr r6, =gUnknown_0203AB74
+ ldr r6, =gResultsWindowId
ldr r0, =gUnknown_085B3D7C
bl AddWindow
strb r0, [r6]
@@ -729,7 +729,7 @@ _0813C540:
adds r4, 0x1
cmp r4, 0x4
ble _0813C540
- ldr r4, =gUnknown_0203AB74
+ ldr r4, =gResultsWindowId
ldrb r0, [r4]
bl PutWindowTilemap
ldrb r0, [r4]
@@ -748,7 +748,7 @@ _0813C540:
thumb_func_start sub_813C5A0
sub_813C5A0: @ 813C5A0
push {r4,lr}
- ldr r4, =gUnknown_0203AB74
+ ldr r4, =gResultsWindowId
ldrb r0, [r4]
movs r1, 0
bl sub_819746C
diff --git a/asm/battle_setup.s b/asm/battle_setup.s
deleted file mode 100644
index f77e7a5d0..000000000
--- a/asm/battle_setup.s
+++ /dev/null
@@ -1,3550 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start task01_battle_start
-task01_battle_start: @ 80B05F0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080B0614
- cmp r0, 0x1
- beq _080B062E
- b _080B0652
- .pool
-_080B0614:
- bl c3_80A0DD8_is_running
- cmp r0, 0
- bne _080B0652
- ldrb r0, [r4, 0x2]
- bl sub_8145EF4
- bl sub_81BE72C
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _080B0652
-_080B062E:
- bl IsBattleTransitionDone
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B0652
- bl overworld_free_bg_tilemaps
- ldr r0, =CB2_InitBattle
- bl SetMainCallback2
- bl prev_quest_postbuffer_cursor_backup_reset
- bl overworld_poison_timer_set
- adds r0, r5, 0
- bl DestroyTask
-_080B0652:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end task01_battle_start
-
- thumb_func_start task_add_01_battle_start
-task_add_01_battle_start: @ 80B065C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 16
- lsrs r5, 16
- ldr r0, =task01_battle_start
- movs r1, 0x1
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0xA]
- adds r0, r5, 0
- bl PlayMapChosenOrBattleBGM
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end task_add_01_battle_start
-
- thumb_func_start BattleSetup_StartWildBattle
-BattleSetup_StartWildBattle: @ 80B0698
- push {lr}
- bl GetSafariZoneFlag
- cmp r0, 0
- beq _080B06A8
- bl sub_80B077C
- b _080B06AC
-_080B06A8:
- bl sub_80B06BC
-_080B06AC:
- pop {r0}
- bx r0
- thumb_func_end BattleSetup_StartWildBattle
-
- thumb_func_start BattleSetup_StartBattlePikeWildBattle
-BattleSetup_StartBattlePikeWildBattle: @ 80B06B0
- push {lr}
- bl sub_80B07B4
- pop {r0}
- bx r0
- thumb_func_end BattleSetup_StartBattlePikeWildBattle
-
- thumb_func_start sub_80B06BC
-sub_80B06BC: @ 80B06BC
- push {r4,lr}
- bl ScriptContext2_Enable
- bl player_bitmagic
- bl sub_808BCF4
- ldr r1, =gMain
- ldr r0, =sub_80B0AF8
- str r0, [r1, 0x8]
- ldr r4, =gBattleTypeFlags
- movs r0, 0
- str r0, [r4]
- bl InBattlePyramid
- lsls r0, 24
- cmp r0, 0
- beq _080B06F2
- ldr r0, =0x0000400e
- movs r1, 0
- bl VarSet
- ldr r0, [r4]
- movs r1, 0x80
- lsls r1, 14
- orrs r0, r1
- str r0, [r4]
-_080B06F2:
- bl sub_80B0EC8
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl task_add_01_battle_start
- movs r0, 0x7
- bl IncrementGameStat
- movs r0, 0x8
- bl IncrementGameStat
- bl sub_80EECC8
- bl sub_80B1218
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B06BC
-
- thumb_func_start BattleSetup_StartRoamerBattle
-BattleSetup_StartRoamerBattle: @ 80B072C
- push {lr}
- bl ScriptContext2_Enable
- bl player_bitmagic
- bl sub_808BCF4
- ldr r1, =gMain
- ldr r0, =sub_80B0AF8
- str r0, [r1, 0x8]
- ldr r1, =gBattleTypeFlags
- movs r0, 0x80
- lsls r0, 3
- str r0, [r1]
- bl sub_80B0EC8
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl task_add_01_battle_start
- movs r0, 0x7
- bl IncrementGameStat
- movs r0, 0x8
- bl IncrementGameStat
- bl sub_80EECC8
- bl sub_80B1218
- pop {r0}
- bx r0
- .pool
- thumb_func_end BattleSetup_StartRoamerBattle
-
- thumb_func_start sub_80B077C
-sub_80B077C: @ 80B077C
- push {lr}
- bl ScriptContext2_Enable
- bl player_bitmagic
- bl sub_808BCF4
- ldr r1, =gMain
- ldr r0, =sub_80FC190
- str r0, [r1, 0x8]
- ldr r1, =gBattleTypeFlags
- movs r0, 0x80
- str r0, [r1]
- bl sub_80B0EC8
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl task_add_01_battle_start
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B077C
-
- thumb_func_start sub_80B07B4
-sub_80B07B4: @ 80B07B4
- push {lr}
- bl ScriptContext2_Enable
- bl player_bitmagic
- bl sub_808BCF4
- ldr r1, =gMain
- ldr r0, =sub_80B0AF8
- str r0, [r1, 0x8]
- ldr r1, =gBattleTypeFlags
- movs r0, 0x80
- lsls r0, 13
- str r0, [r1]
- bl sub_80B0EC8
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl task_add_01_battle_start
- movs r0, 0x7
- bl IncrementGameStat
- movs r0, 0x8
- bl IncrementGameStat
- bl sub_80EECC8
- bl sub_80B1218
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B07B4
-
- thumb_func_start task_add_01_battle_start_with_music_and_stats
-task_add_01_battle_start_with_music_and_stats: @ 80B0804
- push {lr}
- bl reads_trainer_data_byte1_byte0x18
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl task_add_01_battle_start
- movs r0, 0x7
- bl IncrementGameStat
- movs r0, 0x9
- bl IncrementGameStat
- bl sub_80B1234
- pop {r0}
- bx r0
- thumb_func_end task_add_01_battle_start_with_music_and_stats
-
- thumb_func_start sub_80B0828
-sub_80B0828: @ 80B0828
- push {lr}
- bl InBattlePyramid
- lsls r0, 24
- cmp r0, 0
- beq _080B0846
- movs r0, 0xA
- bl sub_80B100C
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl task_add_01_battle_start
- b _080B0856
-_080B0846:
- movs r0, 0xB
- bl sub_80B100C
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl task_add_01_battle_start
-_080B0856:
- movs r0, 0x7
- bl IncrementGameStat
- movs r0, 0x9
- bl IncrementGameStat
- bl sub_80B1234
- pop {r0}
- bx r0
- thumb_func_end sub_80B0828
-
- thumb_func_start sub_80B086C
-sub_80B086C: @ 80B086C
- push {lr}
- ldr r0, =gEnemyParty
- movs r1, 0xC4
- lsls r1, 1
- movs r2, 0x5
- bl CreateMaleMon
- bl ScriptContext2_Enable
- ldr r1, =gMain
- ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
- str r0, [r1, 0x8]
- ldr r1, =gBattleTypeFlags
- movs r0, 0x80
- lsls r0, 2
- str r0, [r1]
- movs r0, 0x8
- movs r1, 0
- bl task_add_01_battle_start
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B086C
-
- thumb_func_start BattleSetup_StartScriptedWildBattle
-BattleSetup_StartScriptedWildBattle: @ 80B08A8
- push {lr}
- bl ScriptContext2_Enable
- ldr r1, =gMain
- ldr r0, =sub_80B0B6C
- str r0, [r1, 0x8]
- ldr r1, =gBattleTypeFlags
- movs r0, 0
- str r0, [r1]
- bl sub_80B0EC8
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl task_add_01_battle_start
- movs r0, 0x7
- bl IncrementGameStat
- movs r0, 0x8
- bl IncrementGameStat
- bl sub_80EECC8
- bl sub_80B1218
- pop {r0}
- bx r0
- .pool
- thumb_func_end BattleSetup_StartScriptedWildBattle
-
- thumb_func_start sub_80B08EC
-sub_80B08EC: @ 80B08EC
- push {lr}
- bl ScriptContext2_Enable
- ldr r1, =gMain
- ldr r0, =sub_80B0B6C
- str r0, [r1, 0x8]
- ldr r1, =gBattleTypeFlags
- movs r0, 0x80
- lsls r0, 6
- str r0, [r1]
- bl sub_80B0EC8
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl task_add_01_battle_start
- movs r0, 0x7
- bl IncrementGameStat
- movs r0, 0x8
- bl IncrementGameStat
- bl sub_80EECC8
- bl sub_80B1218
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B08EC
-
- thumb_func_start sub_80B0934
-sub_80B0934: @ 80B0934
- push {r4,lr}
- bl ScriptContext2_Enable
- ldr r1, =gMain
- ldr r0, =sub_80B0B6C
- str r0, [r1, 0x8]
- ldr r4, =gBattleTypeFlags
- movs r0, 0x80
- lsls r0, 6
- str r0, [r4]
- ldr r0, =gEnemyParty
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- adds r1, r0, 0
- movs r0, 0xCA
- lsls r0, 1
- cmp r1, r0
- beq _080B09B8
- cmp r1, r0
- bhi _080B0988
- cmp r1, 0x97
- beq _080B09F4
- cmp r1, 0x97
- bcc _080B099A
- cmp r1, 0xFA
- bhi _080B099A
- cmp r1, 0xF9
- bcc _080B099A
- ldr r1, =0x00000229
- b _080B09E6
- .pool
-_080B0988:
- movs r0, 0xCB
- lsls r0, 1
- cmp r1, r0
- beq _080B09CE
- cmp r1, r0
- bcc _080B099A
- adds r0, 0x4
- cmp r1, r0
- beq _080B09E4
-_080B099A:
- ldr r2, =gBattleTypeFlags
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 21
- orrs r0, r1
- str r0, [r2]
- movs r1, 0xF0
- lsls r1, 1
- movs r0, 0x17
- bl task_add_01_battle_start
- b _080B09FE
- .pool
-_080B09B8:
- ldr r0, [r4]
- movs r1, 0x80
- lsls r1, 22
- orrs r0, r1
- str r0, [r4]
- movs r1, 0xF0
- lsls r1, 1
- movs r0, 0x16
- bl task_add_01_battle_start
- b _080B09FE
-_080B09CE:
- ldr r0, [r4]
- movs r1, 0x80
- lsls r1, 23
- orrs r0, r1
- str r0, [r4]
- movs r1, 0xEB
- lsls r1, 1
- movs r0, 0x18
- bl task_add_01_battle_start
- b _080B09FE
-_080B09E4:
- ldr r1, =0x00000227
-_080B09E6:
- movs r0, 0
- bl task_add_01_battle_start
- b _080B09FE
- .pool
-_080B09F4:
- movs r1, 0xEC
- lsls r1, 1
- movs r0, 0xA
- bl task_add_01_battle_start
-_080B09FE:
- movs r0, 0x7
- bl IncrementGameStat
- movs r0, 0x8
- bl IncrementGameStat
- bl sub_80EECC8
- bl sub_80B1218
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80B0934
-
- thumb_func_start sub_80B0A18
-sub_80B0A18: @ 80B0A18
- push {lr}
- bl ScriptContext2_Enable
- ldr r1, =gMain
- ldr r0, =sub_80B0B6C
- str r0, [r1, 0x8]
- ldr r1, =gBattleTypeFlags
- movs r0, 0xC0
- lsls r0, 6
- str r0, [r1]
- ldr r0, =gGameVersion
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _080B0A50
- movs r1, 0xF0
- lsls r1, 1
- movs r0, 0xB
- bl task_add_01_battle_start
- b _080B0A5A
- .pool
-_080B0A50:
- movs r1, 0xF0
- lsls r1, 1
- movs r0, 0x6
- bl task_add_01_battle_start
-_080B0A5A:
- movs r0, 0x7
- bl IncrementGameStat
- movs r0, 0x8
- bl IncrementGameStat
- bl sub_80EECC8
- bl sub_80B1218
- pop {r0}
- bx r0
- thumb_func_end sub_80B0A18
-
- thumb_func_start sub_80B0A74
-sub_80B0A74: @ 80B0A74
- push {lr}
- bl ScriptContext2_Enable
- ldr r1, =gMain
- ldr r0, =sub_80B0B6C
- str r0, [r1, 0x8]
- ldr r1, =gBattleTypeFlags
- movs r0, 0xC0
- lsls r0, 7
- str r0, [r1]
- ldr r0, =gEnemyParty
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- adds r2, r1, 0
- movs r0, 0xC9
- lsls r0, 1
- cmp r1, r0
- beq _080B0ACC
- cmp r1, r0
- bgt _080B0ABC
- subs r0, 0x1
- cmp r1, r0
- beq _080B0AC8
- b _080B0AD4
- .pool
-_080B0ABC:
- ldr r0, =0x00000193
- cmp r2, r0
- beq _080B0AD0
- b _080B0AD4
- .pool
-_080B0AC8:
- movs r0, 0x15
- b _080B0AD6
-_080B0ACC:
- movs r0, 0x13
- b _080B0AD6
-_080B0AD0:
- movs r0, 0x14
- b _080B0AD6
-_080B0AD4:
- movs r0, 0xA
-_080B0AD6:
- ldr r1, =0x000001df
- bl task_add_01_battle_start
- movs r0, 0x7
- bl IncrementGameStat
- movs r0, 0x8
- bl IncrementGameStat
- bl sub_80EECC8
- bl sub_80B1218
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B0A74
-
- thumb_func_start sub_80B0AF8
-sub_80B0AF8: @ 80B0AF8
- push {lr}
- sub sp, 0x4
- mov r1, sp
- movs r0, 0
- strh r0, [r1]
- movs r1, 0xA0
- lsls r1, 19
- ldr r2, =0x01000100
- mov r0, sp
- bl CpuSet
- movs r0, 0
- movs r1, 0x80
- bl ResetOamRange
- ldr r0, =gBattleOutcome
- ldrb r0, [r0]
- bl battle_exit_is_player_defeat
- cmp r0, 0x1
- bne _080B0B4C
- bl InBattlePyramid
- lsls r0, 24
- cmp r0, 0
- bne _080B0B4C
- bl InBattlePike
- lsls r0, 24
- cmp r0, 0
- bne _080B0B4C
- ldr r0, =c2_whiteout
- bl SetMainCallback2
- b _080B0B58
- .pool
-_080B0B4C:
- ldr r0, =c2_exit_to_overworld_2_switch
- bl SetMainCallback2
- ldr r1, =gFieldCallback
- ldr r0, =sub_80AF6F0
- str r0, [r1]
-_080B0B58:
- add sp, 0x4
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B0AF8
-
- thumb_func_start sub_80B0B6C
-sub_80B0B6C: @ 80B0B6C
- push {lr}
- sub sp, 0x4
- mov r1, sp
- movs r0, 0
- strh r0, [r1]
- movs r1, 0xA0
- lsls r1, 19
- ldr r2, =0x01000100
- mov r0, sp
- bl CpuSet
- movs r0, 0
- movs r1, 0x80
- bl ResetOamRange
- ldr r0, =gBattleOutcome
- ldrb r0, [r0]
- bl battle_exit_is_player_defeat
- cmp r0, 0x1
- bne _080B0BC0
- bl InBattlePyramid
- lsls r0, 24
- cmp r0, 0
- beq _080B0BB4
- ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
- b _080B0BC6
- .pool
-_080B0BB4:
- ldr r0, =c2_whiteout
- bl SetMainCallback2
- b _080B0BC6
- .pool
-_080B0BC0:
- ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
-_080B0BC6:
- add sp, 0x4
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B0B6C
-
- thumb_func_start BattleSetup_GetTerrainId
-BattleSetup_GetTerrainId: @ 80B0BD0
- push {r4,r5,lr}
- sub sp, 0x4
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl PlayerGetDestCoords
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r4, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r0, r5, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl MetatileBehavior_IsTallGrass
- lsls r0, 24
- cmp r0, 0
- beq _080B0C06
- movs r0, 0
- b _080B0D1A
-_080B0C06:
- adds r0, r4, 0
- bl MetatileBehavior_IsLongGrass
- lsls r0, 24
- cmp r0, 0
- beq _080B0C16
- movs r0, 0x1
- b _080B0D1A
-_080B0C16:
- adds r0, r4, 0
- bl MetatileBehavior_IsSandOrDeepSand
- lsls r0, 24
- cmp r0, 0
- bne _080B0D18
- ldr r0, =gMapHeader
- ldrb r0, [r0, 0x17]
- subs r0, 0x1
- cmp r0, 0x8
- bhi _080B0C9C
- lsls r0, 2
- ldr r1, =_080B0C40
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080B0C40:
- .4byte _080B0C9C
- .4byte _080B0C9C
- .4byte _080B0C9C
- .4byte _080B0C64
- .4byte _080B0C88
- .4byte _080B0C8C
- .4byte _080B0C9C
- .4byte _080B0C74
- .4byte _080B0C74
-_080B0C64:
- lsls r0, r5, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl MetatileBehavior_IsMB_0B
- lsls r0, 24
- cmp r0, 0
- beq _080B0C78
-_080B0C74:
- movs r0, 0x8
- b _080B0D1A
-_080B0C78:
- adds r0, r4, 0
- bl MetatileBehavior_IsSurfableWaterOrUnderwater
- lsls r0, 24
- cmp r0, 0
- bne _080B0CE0
- movs r0, 0x7
- b _080B0D1A
-_080B0C88:
- movs r0, 0x3
- b _080B0D1A
-_080B0C8C:
- lsls r0, r5, 24
- lsrs r0, 24
- bl MetatileBehavior_IsSurfableWaterOrUnderwater
- lsls r0, 24
- cmp r0, 0
- bne _080B0CF2
- b _080B0D10
-_080B0C9C:
- lsls r0, r5, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl MetatileBehavior_IsDeepOrOceanWater
- lsls r0, 24
- cmp r0, 0
- bne _080B0CF2
- adds r0, r4, 0
- bl MetatileBehavior_IsSurfableWaterOrUnderwater
- lsls r0, 24
- cmp r0, 0
- bne _080B0CE0
- adds r0, r4, 0
- bl MetatileBehavior_IsMountain
- lsls r0, 24
- cmp r0, 0
- beq _080B0CC8
- movs r0, 0x6
- b _080B0D1A
-_080B0CC8:
- movs r0, 0x8
- bl TestPlayerAvatarFlags
- lsls r0, 24
- cmp r0, 0
- beq _080B0CF6
- adds r0, r4, 0
- bl MetatileBehavior_GetBridgeSth
- lsls r0, 24
- cmp r0, 0
- beq _080B0CE4
-_080B0CE0:
- movs r0, 0x5
- b _080B0D1A
-_080B0CE4:
- adds r0, r4, 0
- bl MetatileBehavior_IsBridge
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B0CF6
-_080B0CF2:
- movs r0, 0x4
- b _080B0D1A
-_080B0CF6:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrh r1, [r0, 0x4]
- movs r0, 0xE0
- lsls r0, 5
- cmp r1, r0
- beq _080B0D18
- bl sav1_get_weather_probably
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x8
- beq _080B0D18
-_080B0D10:
- movs r0, 0x9
- b _080B0D1A
- .pool
-_080B0D18:
- movs r0, 0x2
-_080B0D1A:
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end BattleSetup_GetTerrainId
-
- thumb_func_start sub_80B0D24
-sub_80B0D24: @ 80B0D24
- push {r4,lr}
- sub sp, 0x4
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl PlayerGetDestCoords
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r4, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 16
- lsrs r4, r0, 16
- bl sav1_get_flash_used_on_map
- lsls r0, 24
- cmp r0, 0
- beq _080B0D54
- movs r0, 0x2
- b _080B0D7E
-_080B0D54:
- lsls r0, r4, 24
- lsrs r0, 24
- bl MetatileBehavior_IsSurfableWaterOrUnderwater
- lsls r0, 24
- cmp r0, 0
- bne _080B0D7C
- ldr r0, =gMapHeader
- ldrb r0, [r0, 0x17]
- cmp r0, 0x4
- beq _080B0D78
- cmp r0, 0x5
- beq _080B0D7C
- movs r0, 0
- b _080B0D7E
- .pool
-_080B0D78:
- movs r0, 0x1
- b _080B0D7E
-_080B0D7C:
- movs r0, 0x3
-_080B0D7E:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80B0D24
-
- thumb_func_start sub_80B0D88
-sub_80B0D88: @ 80B0D88
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r7, 0
- movs r6, 0
-_080B0D92:
- movs r0, 0x64
- adds r1, r6, 0
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- adds r1, r0, 0
- movs r0, 0xCE
- lsls r0, 1
- cmp r1, r0
- beq _080B0DD6
- cmp r1, 0
- beq _080B0DD6
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _080B0DD6
- adds r0, r4, 0
- movs r1, 0x38
- bl GetMonData
- adds r0, r7, r0
- lsls r0, 24
- lsrs r7, r0, 24
- subs r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- beq _080B0DDC
-_080B0DD6:
- adds r6, 0x1
- cmp r6, 0x5
- ble _080B0D92
-_080B0DDC:
- adds r0, r7, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B0D88
-
- thumb_func_start reads_trainer_data_byte0
-reads_trainer_data_byte0: @ 80B0DE8
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 24
- lsrs r4, r1, 24
- ldr r5, =gTrainers
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r2, r1, r5
- adds r0, r2, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, r4
- bcs _080B0E08
- adds r4, r0, 0
-_080B0E08:
- movs r3, 0
- ldrb r0, [r2]
- cmp r0, 0x1
- beq _080B0E50
- cmp r0, 0x1
- bgt _080B0E20
- cmp r0, 0
- beq _080B0E2A
- b _080B0EC0
- .pool
-_080B0E20:
- cmp r0, 0x2
- beq _080B0E76
- cmp r0, 0x3
- beq _080B0E9C
- b _080B0EC0
-_080B0E2A:
- adds r0, r5, 0
- adds r0, 0x24
- adds r0, r1, r0
- ldr r1, [r0]
- movs r2, 0
- cmp r3, r4
- bcs _080B0EC0
-_080B0E38:
- lsls r0, r2, 3
- adds r0, r1
- ldrb r0, [r0, 0x2]
- adds r0, r3, r0
- lsls r0, 24
- lsrs r3, r0, 24
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, r4
- bcc _080B0E38
- b _080B0EC0
-_080B0E50:
- adds r0, r5, 0
- adds r0, 0x24
- adds r0, r1, r0
- ldr r1, [r0]
- movs r2, 0
- cmp r3, r4
- bcs _080B0EC0
-_080B0E5E:
- lsls r0, r2, 4
- adds r0, r1
- ldrb r0, [r0, 0x2]
- adds r0, r3, r0
- lsls r0, 24
- lsrs r3, r0, 24
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, r4
- bcc _080B0E5E
- b _080B0EC0
-_080B0E76:
- adds r0, r5, 0
- adds r0, 0x24
- adds r0, r1, r0
- ldr r1, [r0]
- movs r2, 0
- cmp r3, r4
- bcs _080B0EC0
-_080B0E84:
- lsls r0, r2, 3
- adds r0, r1
- ldrb r0, [r0, 0x2]
- adds r0, r3, r0
- lsls r0, 24
- lsrs r3, r0, 24
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, r4
- bcc _080B0E84
- b _080B0EC0
-_080B0E9C:
- adds r0, r5, 0
- adds r0, 0x24
- adds r0, r1, r0
- ldr r1, [r0]
- movs r2, 0
- cmp r3, r4
- bcs _080B0EC0
-_080B0EAA:
- lsls r0, r2, 4
- adds r0, r1
- ldrb r0, [r0, 0x2]
- adds r0, r3, r0
- lsls r0, 24
- lsrs r3, r0, 24
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, r4
- bcc _080B0EAA
-_080B0EC0:
- adds r0, r3, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end reads_trainer_data_byte0
-
- thumb_func_start sub_80B0EC8
-sub_80B0EC8: @ 80B0EC8
- push {r4-r6,lr}
- bl sub_80B0D24
- lsls r0, 24
- lsrs r5, r0, 24
- adds r6, r5, 0
- ldr r0, =gEnemyParty
- movs r1, 0x38
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- bl sub_80B0D88
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bcs _080B0F10
- bl InBattlePyramid
- lsls r0, 24
- cmp r0, 0
- beq _080B0F04
- movs r0, 0
- b _080B0F2E
- .pool
-_080B0F04:
- ldr r0, =gUnknown_0854FE88
- lsls r1, r5, 1
- b _080B0F20
- .pool
-_080B0F10:
- bl InBattlePyramid
- lsls r0, 24
- cmp r0, 0
- bne _080B0F2C
- ldr r0, =gUnknown_0854FE88
- lsls r1, r6, 1
- adds r0, 0x1
-_080B0F20:
- adds r1, r0
- ldrb r0, [r1]
- b _080B0F2E
- .pool
-_080B0F2C:
- movs r0, 0xA
-_080B0F2E:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80B0EC8
-
- thumb_func_start reads_trainer_data_byte1_byte0x18
-reads_trainer_data_byte1_byte0x18: @ 80B0F34
- push {r4-r6,lr}
- ldr r4, =gTrainerBattleOpponent_A
- ldrh r1, [r4]
- movs r0, 0x80
- lsls r0, 3
- cmp r1, r0
- beq _080B0F98
- ldr r1, =gTrainers
- ldrh r2, [r4]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- ldrb r1, [r0, 0x1]
- cmp r1, 0x1F
- bne _080B0F94
- adds r1, r2, 0
- ldr r0, =0x00000105
- cmp r1, r0
- bne _080B0F6C
- movs r0, 0xC
- b _080B1000
- .pool
-_080B0F6C:
- movs r0, 0x83
- lsls r0, 1
- cmp r1, r0
- bne _080B0F78
- movs r0, 0xD
- b _080B1000
-_080B0F78:
- ldr r0, =0x00000107
- cmp r1, r0
- bne _080B0F88
- movs r0, 0xE
- b _080B1000
- .pool
-_080B0F88:
- movs r0, 0x84
- lsls r0, 1
- cmp r1, r0
- bne _080B0F98
- movs r0, 0xF
- b _080B1000
-_080B0F94:
- cmp r1, 0x26
- bne _080B0F9C
-_080B0F98:
- movs r0, 0x10
- b _080B1000
-_080B0F9C:
- cmp r1, 0x9
- beq _080B0FA8
- cmp r1, 0x35
- beq _080B0FA8
- cmp r1, 0x31
- bne _080B0FAC
-_080B0FA8:
- movs r0, 0x12
- b _080B1000
-_080B0FAC:
- cmp r1, 0x3
- beq _080B0FB8
- cmp r1, 0xD
- beq _080B0FB8
- cmp r1, 0xB
- bne _080B0FBC
-_080B0FB8:
- movs r0, 0x11
- b _080B1000
-_080B0FBC:
- ldrb r0, [r0, 0x18]
- movs r5, 0x1
- cmp r0, 0x1
- bne _080B0FC6
- movs r5, 0x2
-_080B0FC6:
- bl sub_80B0D24
- lsls r0, 24
- lsrs r6, r0, 24
- ldrh r0, [r4]
- adds r1, r5, 0
- bl reads_trainer_data_byte0
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- bl sub_80B0D88
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bcc _080B0FF8
- ldr r0, =gUnknown_0854FE90
- lsls r1, r6, 1
- adds r0, 0x1
- b _080B0FFC
- .pool
-_080B0FF8:
- ldr r0, =gUnknown_0854FE90
- lsls r1, r6, 1
-_080B0FFC:
- adds r1, r0
- ldrb r0, [r1]
-_080B1000:
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end reads_trainer_data_byte1_byte0x18
-
- thumb_func_start sub_80B100C
-sub_80B100C: @ 80B100C
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, =gEnemyParty
- movs r1, 0x38
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- bl sub_80B0D88
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bcs _080B1090
- cmp r5, 0xA
- beq _080B1048
- cmp r5, 0xA
- bgt _080B1040
- cmp r5, 0x3
- beq _080B105C
- b _080B106C
- .pool
-_080B1040:
- cmp r5, 0xD
- bgt _080B106C
- movs r0, 0x4
- b _080B1120
-_080B1048:
- ldr r4, =gUnknown_0854FEA4
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- b _080B1114
- .pool
-_080B105C:
- ldr r4, =gUnknown_0854FEA7
- bl Random
- ands r5, r0
- lsls r0, r5, 16
- b _080B111A
- .pool
-_080B106C:
- ldr r0, =0x000040ce
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x3
- beq _080B10EC
- ldr r4, =gUnknown_0854FE98
- bl Random
- lsls r0, 16
- lsrs r0, 16
- b _080B1112
- .pool
-_080B1090:
- cmp r5, 0xA
- beq _080B10A6
- cmp r5, 0xA
- bgt _080B109E
- cmp r5, 0x3
- beq _080B10B8
- b _080B10C8
-_080B109E:
- cmp r5, 0xD
- bgt _080B10C8
- movs r0, 0x3
- b _080B1120
-_080B10A6:
- ldr r4, =gUnknown_0854FEA4
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- b _080B1114
- .pool
-_080B10B8:
- ldr r4, =gUnknown_0854FEA7
- bl Random
- ands r5, r0
- lsls r0, r5, 16
- b _080B111A
- .pool
-_080B10C8:
- ldr r0, =0x000040ce
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x3
- beq _080B10EC
- ldr r4, =gUnknown_0854FE98
- bl Random
- lsls r0, 16
- lsrs r0, 16
- b _080B1112
- .pool
-_080B10EC:
- ldr r0, =gSaveBlock2Ptr
- ldr r1, [r0]
- ldr r2, =0x00000cb2
- adds r0, r1, r2
- ldrh r0, [r0]
- lsls r2, r0, 2
- ldr r3, =0x00000cb4
- adds r1, r3
- adds r2, r1, r2
- lsls r0, 1
- adds r0, 0x1
- lsls r0, 1
- adds r1, r0
- ldrh r0, [r1]
- ldrh r2, [r2]
- adds r0, r2
- lsls r0, 16
- lsrs r0, 16
- ldr r4, =gUnknown_0854FE98
-_080B1112:
- movs r1, 0xC
-_080B1114:
- bl __umodsi3
- lsls r0, 16
-_080B111A:
- lsrs r0, 16
- adds r0, r4
- ldrb r0, [r0]
-_080B1120:
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B100C
-
- thumb_func_start sub_80B1138
-sub_80B1138: @ 80B1138
- push {lr}
- ldr r0, =CB2_ChooseStarter
- bl SetMainCallback2
- ldr r1, =gMain
- ldr r0, =sub_80B1158
- str r0, [r1, 0x8]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B1138
-
- thumb_func_start sub_80B1158
-sub_80B1158: @ 80B1158
- push {lr}
- sub sp, 0x8
- ldr r0, =0x00004023
- bl GetVarPointer
- ldr r2, =gSpecialVar_Result
- ldrh r1, [r2]
- strh r1, [r0]
- ldrh r0, [r2]
- bl GetStarterPokemon
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0
- str r1, [sp]
- str r1, [sp, 0x4]
- movs r1, 0x5
- movs r2, 0
- movs r3, 0
- bl ScriptGiveMon
- bl ResetTasks
- bl PlayBattleBGM
- ldr r0, =sub_80B11A8
- bl SetMainCallback2
- movs r0, 0
- bl sub_8145F10
- add sp, 0x8
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B1158
-
- thumb_func_start sub_80B11A8
-sub_80B11A8: @ 80B11A8
- push {lr}
- bl UpdatePaletteFade
- bl RunTasks
- bl IsBattleTransitionDone
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B11F0
- ldr r1, =gBattleTypeFlags
- movs r0, 0x10
- str r0, [r1]
- ldr r1, =gMain
- ldr r0, =sub_80B1204
- str r0, [r1, 0x8]
- bl FreeAllWindowBuffers
- ldr r0, =CB2_InitBattle
- bl SetMainCallback2
- bl prev_quest_postbuffer_cursor_backup_reset
- bl overworld_poison_timer_set
- movs r0, 0x7
- bl IncrementGameStat
- movs r0, 0x8
- bl IncrementGameStat
- bl sub_80EECC8
- bl sub_80B1218
-_080B11F0:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B11A8
-
- thumb_func_start sub_80B1204
-sub_80B1204: @ 80B1204
- push {lr}
- bl sav1_reset_battle_music_maybe
- ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B1204
-
- thumb_func_start sub_80B1218
-sub_80B1218: @ 80B1218
- push {lr}
- movs r0, 0x8
- bl GetGameStat
- movs r1, 0x3C
- bl __umodsi3
- cmp r0, 0
- bne _080B122E
- bl sub_81DA57C
-_080B122E:
- pop {r0}
- bx r0
- thumb_func_end sub_80B1218
-
- thumb_func_start sub_80B1234
-sub_80B1234: @ 80B1234
- push {lr}
- movs r0, 0x9
- bl GetGameStat
- movs r1, 0x14
- bl __umodsi3
- cmp r0, 0
- bne _080B124A
- bl sub_81DA57C
-_080B124A:
- pop {r0}
- bx r0
- thumb_func_end sub_80B1234
-
- thumb_func_start TrainerBattleLoadArg32
-@ u32 TrainerBattleLoadArg32(u8 *arg)
-TrainerBattleLoadArg32: @ 80B1250
- adds r2, r0, 0
- ldrb r0, [r2]
- ldrb r1, [r2, 0x1]
- lsls r1, 8
- orrs r0, r1
- ldrb r1, [r2, 0x2]
- lsls r1, 16
- orrs r0, r1
- ldrb r1, [r2, 0x3]
- lsls r1, 24
- orrs r0, r1
- bx lr
- thumb_func_end TrainerBattleLoadArg32
-
- thumb_func_start TrainerBattleLoadArg16
-@ u16 TrainerBattleLoadArg16(u8 *arg)
-TrainerBattleLoadArg16: @ 80B1268
- adds r1, r0, 0
- ldrb r0, [r1]
- ldrb r1, [r1, 0x1]
- lsls r1, 8
- orrs r0, r1
- bx lr
- thumb_func_end TrainerBattleLoadArg16
-
- thumb_func_start TrainerBattleLoadArg8
-@ u8 TrainerBattleLoadArg8(u8 *arg)
-TrainerBattleLoadArg8: @ 80B1274
- ldrb r0, [r0]
- bx lr
- thumb_func_end TrainerBattleLoadArg8
-
- thumb_func_start trainerflag_opponent
-trainerflag_opponent: @ 80B1278
- ldr r1, =gTrainerBattleOpponent_A
- movs r2, 0xA0
- lsls r2, 3
- adds r0, r2, 0
- ldrh r1, [r1]
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- bx lr
- .pool
- thumb_func_end trainerflag_opponent
-
- thumb_func_start sub_80B1290
-sub_80B1290: @ 80B1290
- ldr r1, =gTrainerBattleOpponent_B
- movs r2, 0xA0
- lsls r2, 3
- adds r0, r2, 0
- ldrh r1, [r1]
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- bx lr
- .pool
- thumb_func_end sub_80B1290
-
- thumb_func_start battle_exit_is_player_defeat
-battle_exit_is_player_defeat: @ 80B12A8
- push {lr}
- subs r0, 0x1
- cmp r0, 0x6
- bhi _080B12E0
- lsls r0, 2
- ldr r1, =_080B12C0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080B12C0:
- .4byte _080B12E0
- .4byte _080B12DC
- .4byte _080B12DC
- .4byte _080B12E0
- .4byte _080B12E0
- .4byte _080B12E0
- .4byte _080B12E0
-_080B12DC:
- movs r0, 0x1
- b _080B12E2
-_080B12E0:
- movs r0, 0
-_080B12E2:
- pop {r1}
- bx r1
- thumb_func_end battle_exit_is_player_defeat
-
- thumb_func_start ResetTrainerOpponentIds
-ResetTrainerOpponentIds: @ 80B12E8
- ldr r0, =gTrainerBattleOpponent_A
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gTrainerBattleOpponent_B
- strh r1, [r0]
- bx lr
- .pool
- thumb_func_end ResetTrainerOpponentIds
-
- thumb_func_start InitTrainerBattleVariables
-@ void InitTrainerBattleVariables()
-InitTrainerBattleVariables: @ 80B12FC
- push {lr}
- ldr r0, =gUnknown_02038BC8
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gUnknown_02038BFC
- ldrb r1, [r0]
- cmp r1, 0
- bne _080B132C
- ldr r0, =gUnknown_02038BD4
- str r1, [r0]
- ldr r0, =gUnknown_02038BDC
- str r1, [r0]
- ldr r0, =gUnknown_02038BF0
- b _080B1338
- .pool
-_080B132C:
- ldr r0, =gUnknown_02038BD8
- movs r1, 0
- str r1, [r0]
- ldr r0, =gUnknown_02038BE0
- str r1, [r0]
- ldr r0, =gUnknown_02038BF4
-_080B1338:
- str r1, [r0]
- ldr r1, =gUnknown_02038BD0
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_02038BE4
- movs r1, 0
- str r1, [r0]
- ldr r0, =gUnknown_02038BE8
- str r1, [r0]
- ldr r0, =gUnknown_02038BEC
- str r1, [r0]
- pop {r0}
- bx r0
- .pool
- thumb_func_end InitTrainerBattleVariables
-
- thumb_func_start TrainerBattleLoadArgs
-@ void TrainerBattleLoadArgs(struct TrainerBattleArgSpec *argSpecs, u8 *args)
-TrainerBattleLoadArgs: @ 80B1370
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
-_080B1376:
- ldrb r0, [r4, 0x4]
- cmp r0, 0x6
- bhi _080B13E8
- lsls r0, 2
- ldr r1, =_080B138C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080B138C:
- .4byte _080B13A8
- .4byte _080B13B6
- .4byte _080B13C4
- .4byte _080B13D2
- .4byte _080B13DA
- .4byte _080B13E2
- .4byte _080B13EC
-_080B13A8:
- adds r0, r5, 0
- bl TrainerBattleLoadArg8
- ldr r1, [r4]
- strb r0, [r1]
- adds r5, 0x1
- b _080B13E8
-_080B13B6:
- adds r0, r5, 0
- bl TrainerBattleLoadArg16
- ldr r1, [r4]
- strh r0, [r1]
- adds r5, 0x2
- b _080B13E8
-_080B13C4:
- adds r0, r5, 0
- bl TrainerBattleLoadArg32
- ldr r1, [r4]
- str r0, [r1]
- adds r5, 0x4
- b _080B13E8
-_080B13D2:
- ldr r1, [r4]
- movs r0, 0
- strb r0, [r1]
- b _080B13E8
-_080B13DA:
- ldr r1, [r4]
- movs r0, 0
- strh r0, [r1]
- b _080B13E8
-_080B13E2:
- ldr r1, [r4]
- movs r0, 0
- str r0, [r1]
-_080B13E8:
- adds r4, 0x8
- b _080B1376
-_080B13EC:
- ldr r0, [r4]
- str r5, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end TrainerBattleLoadArgs
-
- thumb_func_start battle_80801F0
-battle_80801F0: @ 80B13F8
- push {lr}
- ldr r0, =gUnknown_02038BD0
- ldrh r1, [r0]
- cmp r1, 0
- beq _080B141A
- ldr r0, =gSpecialVar_LastTalked
- strh r1, [r0]
- lsls r0, r1, 24
- lsrs r0, 24
- ldr r1, =gSaveBlock1Ptr
- ldr r2, [r1]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- bl GetFieldObjectIdByLocalIdAndMap
- ldr r1, =gSelectedMapObject
- strb r0, [r1]
-_080B141A:
- pop {r0}
- bx r0
- .pool
- thumb_func_end battle_80801F0
-
- thumb_func_start BattleSetup_ConfigureTrainerBattle
-@ u8 *BattleSetup_ConfigureTrainerBattle(u8 *args)
-BattleSetup_ConfigureTrainerBattle: @ 80B1430
- push {r4,r5,lr}
- adds r5, r0, 0
- bl InitTrainerBattleVariables
- ldr r4, =gUnknown_02038BC8
- adds r0, r5, 0
- bl TrainerBattleLoadArg8
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- ldrh r0, [r4]
- subs r0, 0x1
- cmp r0, 0xB
- bls _080B1450
- b _080B15F4
-_080B1450:
- lsls r0, 2
- ldr r1, =_080B1464
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080B1464:
- .4byte _080B14CC
- .4byte _080B14B0
- .4byte _080B1494
- .4byte _080B14A8
- .4byte _080B1514
- .4byte _080B14D4
- .4byte _080B14EC
- .4byte _080B14D4
- .4byte _080B153C
- .4byte _080B1590
- .4byte _080B1598
- .4byte _080B15A8
-_080B1494:
- ldr r0, =gUnknown_0854FF84
- adds r1, r5, 0
- bl TrainerBattleLoadArgs
- ldr r0, =EventScript_2713C2
- b _080B161E
- .pool
-_080B14A8:
- ldr r0, =gUnknown_0854FF3C
- b _080B14D6
- .pool
-_080B14B0:
- ldr r0, =gUnknown_02038BFC
- ldrb r0, [r0]
- cmp r0, 0
- bne _080B14C4
- ldr r0, =gUnknown_0854FEF4
- b _080B15FE
- .pool
-_080B14C4:
- ldr r0, =gUnknown_0855005C
- b _080B1616
- .pool
-_080B14CC:
- ldr r0, =gUnknown_0854FEF4
- b _080B15FE
- .pool
-_080B14D4:
- ldr r0, =gUnknown_0854FFCC
-_080B14D6:
- adds r1, r5, 0
- bl TrainerBattleLoadArgs
- bl battle_80801F0
- ldr r0, =EventScript_27138A
- b _080B161E
- .pool
-_080B14EC:
- ldr r0, =gUnknown_0854FF3C
- adds r1, r5, 0
- bl TrainerBattleLoadArgs
- bl battle_80801F0
- ldr r4, =gTrainerBattleOpponent_A
- ldrh r0, [r4]
- bl sub_80B2234
- strh r0, [r4]
- ldr r0, =EventScript_2713F8
- b _080B161E
- .pool
-_080B1514:
- ldr r0, =gUnknown_0854FEAC
- adds r1, r5, 0
- bl TrainerBattleLoadArgs
- bl battle_80801F0
- ldr r4, =gTrainerBattleOpponent_A
- ldrh r0, [r4]
- bl sub_80B2234
- strh r0, [r4]
- ldr r0, =EventScript_2713D1
- b _080B161E
- .pool
-_080B153C:
- ldr r0, =gUnknown_02038BFC
- ldrb r0, [r0]
- cmp r0, 0
- bne _080B156C
- ldr r0, =gUnknown_0854FEAC
- adds r1, r5, 0
- bl TrainerBattleLoadArgs
- bl battle_80801F0
- ldr r0, =gSpecialVar_LastTalked
- ldrb r0, [r0]
- bl sub_81A9AA8
- ldr r1, =gTrainerBattleOpponent_A
- b _080B157E
- .pool
-_080B156C:
- ldr r0, =gUnknown_08550014
- adds r1, r5, 0
- bl TrainerBattleLoadArgs
- ldr r0, =gSpecialVar_LastTalked
- ldrb r0, [r0]
- bl sub_81A9AA8
-_080B157C:
- ldr r1, =gTrainerBattleOpponent_B
-_080B157E:
- strh r0, [r1]
- b _080B161C
- .pool
-_080B1590:
- ldr r0, =gUnknown_0854FEAC
- b _080B159A
- .pool
-_080B1598:
- ldr r0, =gUnknown_08550014
-_080B159A:
- adds r1, r5, 0
- bl TrainerBattleLoadArgs
- movs r0, 0
- b _080B161E
- .pool
-_080B15A8:
- ldr r0, =gUnknown_02038BFC
- ldrb r0, [r0]
- cmp r0, 0
- bne _080B15D8
- ldr r0, =gUnknown_0854FEAC
- adds r1, r5, 0
- bl TrainerBattleLoadArgs
- bl battle_80801F0
- ldr r0, =gSpecialVar_LastTalked
- ldrb r0, [r0]
- bl battle_init
- ldr r1, =gTrainerBattleOpponent_A
- b _080B157E
- .pool
-_080B15D8:
- ldr r0, =gUnknown_08550014
- adds r1, r5, 0
- bl TrainerBattleLoadArgs
- ldr r0, =gSpecialVar_LastTalked
- ldrb r0, [r0]
- bl battle_init
- b _080B157C
- .pool
-_080B15F4:
- ldr r0, =gUnknown_02038BFC
- ldrb r0, [r0]
- cmp r0, 0
- bne _080B1614
- ldr r0, =gUnknown_0854FEAC
-_080B15FE:
- adds r1, r5, 0
- bl TrainerBattleLoadArgs
- bl battle_80801F0
- b _080B161C
- .pool
-_080B1614:
- ldr r0, =gUnknown_08550014
-_080B1616:
- adds r1, r5, 0
- bl TrainerBattleLoadArgs
-_080B161C:
- ldr r0, =EventScript_271362
-_080B161E:
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end BattleSetup_ConfigureTrainerBattle
-
- thumb_func_start SingleTrainerWantsBattle
-@ void SingleTrainerWantsBattle(u8 trainerFieldObjectId, u8 *trainerScript)
-SingleTrainerWantsBattle: @ 80B162C
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gSelectedMapObject
- strb r0, [r2]
- ldr r4, =gSpecialVar_LastTalked
- ldr r3, =gMapObjects
- lsls r2, r0, 3
- adds r2, r0
- lsls r2, 2
- adds r2, r3
- ldrb r0, [r2, 0x8]
- strh r0, [r4]
- adds r1, 0x1
- adds r0, r1, 0
- bl BattleSetup_ConfigureTrainerBattle
- ldr r0, =EventScript_271354
- bl ScriptContext1_SetupScript
- bl ScriptContext2_Enable
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end SingleTrainerWantsBattle
-
- thumb_func_start TwoTrainersWantBattle
-@ void TwoTrainersWantBattle(u8 trainerFieldObjectId, u8 *trainerScript)
-TwoTrainersWantBattle: @ 80B1670
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gSelectedMapObject
- strb r0, [r2]
- ldr r4, =gSpecialVar_LastTalked
- ldr r3, =gMapObjects
- lsls r2, r0, 3
- adds r2, r0
- lsls r2, 2
- adds r2, r3
- ldrb r0, [r2, 0x8]
- strh r0, [r4]
- adds r1, 0x1
- adds r0, r1, 0
- bl BattleSetup_ConfigureTrainerBattle
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end TwoTrainersWantBattle
-
- thumb_func_start TwoTrainersWantBattleExecuteScript
-@ void TwoTrainersWantBattleExecuteScript()
-TwoTrainersWantBattleExecuteScript: @ 80B16A4
- push {lr}
- ldr r0, =EventScript_271354
- bl ScriptContext1_SetupScript
- bl ScriptContext2_Enable
- pop {r0}
- bx r0
- .pool
- thumb_func_end TwoTrainersWantBattleExecuteScript
-
- thumb_func_start GetTrainerFlagFromScriptPointer
-@ u8 GetTrainerFlagFromScriptPointer(u8 *scriptPointer)
-GetTrainerFlagFromScriptPointer: @ 80B16B8
- push {lr}
- adds r0, 0x2
- bl TrainerBattleLoadArg16
- lsls r0, 16
- movs r1, 0xA0
- lsls r1, 19
- adds r0, r1
- lsrs r0, 16
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end GetTrainerFlagFromScriptPointer
-
- thumb_func_start sub_80B16D8
-sub_80B16D8: @ 80B16D8
- push {r4,lr}
- ldr r0, =gSelectedMapObject
- ldrb r0, [r0]
- lsls r4, r0, 3
- adds r4, r0
- lsls r4, 2
- ldr r0, =gMapObjects
- adds r4, r0
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl npc_running_behaviour_by_direction
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl npc_set_running_behaviour_etc
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B16D8
-
- thumb_func_start sub_80B170C
-sub_80B170C: @ 80B170C
- ldr r0, =gUnknown_02038BC8
- ldrb r0, [r0]
- bx lr
- .pool
- thumb_func_end sub_80B170C
-
- thumb_func_start check_trainer_flag
-@ pokescrcmd
-check_trainer_flag: @ 80B1718
- push {lr}
- bl InBattlePyramid
- lsls r0, 24
- cmp r0, 0
- beq _080B1734
- ldr r0, =gSelectedMapObject
- ldrb r0, [r0]
- bl GetBattlePyramidTrainerFlag
- b _080B1752
- .pool
-_080B1734:
- bl InTrainerHill
- cmp r0, 0
- bne _080B174A
- bl trainerflag_opponent
- lsls r0, 16
- lsrs r0, 16
- bl FlagGet
- b _080B1752
-_080B174A:
- ldr r0, =gSelectedMapObject
- ldrb r0, [r0]
- bl GetTrainerHillTrainerFlag
-_080B1752:
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end check_trainer_flag
-
- thumb_func_start rom_npc_set_flag_for_script_id
-rom_npc_set_flag_for_script_id: @ 80B1760
- push {lr}
- ldr r0, =gTrainerBattleOpponent_B
- ldrh r0, [r0]
- cmp r0, 0
- beq _080B1776
- bl sub_80B1290
- lsls r0, 16
- lsrs r0, 16
- bl FlagSet
-_080B1776:
- bl trainerflag_opponent
- lsls r0, 16
- lsrs r0, 16
- bl FlagSet
- pop {r0}
- bx r0
- .pool
- thumb_func_end rom_npc_set_flag_for_script_id
-
- thumb_func_start sub_80B178C
-sub_80B178C: @ 80B178C
- push {lr}
- bl trainerflag_opponent
- lsls r0, 16
- lsrs r0, 16
- bl FlagSet
- pop {r0}
- bx r0
- thumb_func_end sub_80B178C
-
- thumb_func_start HasTrainerAlreadyBeenFought
-HasTrainerAlreadyBeenFought: @ 80B17A0
- push {lr}
- lsls r0, 16
- movs r1, 0xA0
- lsls r1, 19
- adds r0, r1
- lsrs r0, 16
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end HasTrainerAlreadyBeenFought
-
- thumb_func_start trainer_flag_set
-trainer_flag_set: @ 80B17B8
- push {lr}
- lsls r0, 16
- movs r1, 0xA0
- lsls r1, 19
- adds r0, r1
- lsrs r0, 16
- bl FlagSet
- pop {r0}
- bx r0
- thumb_func_end trainer_flag_set
-
- thumb_func_start trainer_flag_clear
-trainer_flag_clear: @ 80B17CC
- push {lr}
- lsls r0, 16
- movs r1, 0xA0
- lsls r1, 19
- adds r0, r1
- lsrs r0, 16
- bl FlagClear
- pop {r0}
- bx r0
- thumb_func_end trainer_flag_clear
-
- thumb_func_start BattleSetup_StartTrainerBattle
-BattleSetup_StartTrainerBattle: @ 80B17E0
- push {r4,lr}
- ldr r0, =gUnknown_030060A8
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _080B17FC
- ldr r1, =gBattleTypeFlags
- ldr r0, =0x00008009
- b _080B1800
- .pool
-_080B17FC:
- ldr r1, =gBattleTypeFlags
- movs r0, 0x8
-_080B1800:
- str r0, [r1]
- bl InBattlePyramid
- lsls r0, 24
- cmp r0, 0
- beq _080B1884
- ldr r0, =0x0000400e
- movs r1, 0
- bl VarSet
- ldr r2, =gBattleTypeFlags
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 14
- orrs r0, r1
- str r0, [r2]
- ldr r0, =gUnknown_030060A8
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _080B1864
- movs r0, 0x1
- bl sub_816306C
- ldr r4, =gEnemyParty + 100
- adds r0, r4, 0
- bl ZeroMonData
- adds r0, r4, 0
- adds r0, 0x64
- bl ZeroMonData
- movs r1, 0x96
- lsls r1, 1
- adds r0, r4, r1
- bl ZeroMonData
- movs r1, 0xC8
- lsls r1, 1
- adds r0, r4, r1
- bl ZeroMonData
- b _080B187A
- .pool
-_080B1864:
- movs r0, 0x1
- bl sub_8163048
- ldr r4, =gEnemyParty + 100
- adds r0, r4, 0
- bl ZeroMonData
- adds r4, 0x64
- adds r0, r4, 0
- bl ZeroMonData
-_080B187A:
- bl sub_81A9B04
- b _080B18B8
- .pool
-_080B1884:
- bl sub_81D5C18
- lsls r0, 24
- cmp r0, 0
- beq _080B18B8
- ldr r2, =gBattleTypeFlags
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 19
- orrs r0, r1
- str r0, [r2]
- ldr r0, =gUnknown_030060A8
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _080B18B0
- bl sub_81D639C
- b _080B18B4
- .pool
-_080B18B0:
- bl sub_81D6384
-_080B18B4:
- bl sub_81D61E8
-_080B18B8:
- ldr r1, =gUnknown_02038BF9
- ldr r2, =gUnknown_030060A8
- ldrb r0, [r2]
- strb r0, [r1]
- movs r1, 0
- strb r1, [r2]
- ldr r0, =gUnknown_02038BF8
- strb r1, [r0]
- ldr r1, =gUnknown_03006080
- movs r0, 0
- strh r0, [r1]
- ldr r1, =gMain
- ldr r0, =sub_80B1918
- str r0, [r1, 0x8]
- bl InBattlePyramid
- lsls r0, 24
- cmp r0, 0
- bne _080B18E8
- bl sub_81D5C18
- lsls r0, 24
- cmp r0, 0
- beq _080B1908
-_080B18E8:
- bl sub_80B0828
- b _080B190C
- .pool
-_080B1908:
- bl task_add_01_battle_start_with_music_and_stats
-_080B190C:
- bl ScriptContext1_Stop
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end BattleSetup_StartTrainerBattle
-
- thumb_func_start sub_80B1918
-sub_80B1918: @ 80B1918
- push {lr}
- ldr r0, =gTrainerBattleOpponent_A
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 3
- cmp r1, r0
- beq _080B1946
- ldr r0, =gBattleOutcome
- ldrb r0, [r0]
- bl battle_exit_is_player_defeat
- cmp r0, 0x1
- bne _080B1968
- bl InBattlePyramid
- lsls r0, 24
- cmp r0, 0
- bne _080B1946
- bl sub_81D5C18
- lsls r0, 24
- cmp r0, 0
- beq _080B195C
-_080B1946:
- ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
- b _080B198A
- .pool
-_080B195C:
- ldr r0, =c2_whiteout
- bl SetMainCallback2
- b _080B198A
- .pool
-_080B1968:
- ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
- bl InBattlePyramid
- lsls r0, 24
- cmp r0, 0
- bne _080B198A
- bl sub_81D5C18
- lsls r0, 24
- cmp r0, 0
- bne _080B198A
- bl sub_80B20BC
- bl rom_npc_set_flag_for_script_id
-_080B198A:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B1918
-
- thumb_func_start sub_80B1994
-sub_80B1994: @ 80B1994
- push {lr}
- ldr r0, =gTrainerBattleOpponent_A
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 3
- cmp r1, r0
- bne _080B19B4
- ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
- b _080B19E2
- .pool
-_080B19B4:
- ldr r0, =gBattleOutcome
- ldrb r0, [r0]
- bl battle_exit_is_player_defeat
- cmp r0, 0x1
- bne _080B19D0
- ldr r0, =c2_whiteout
- bl SetMainCallback2
- b _080B19E2
- .pool
-_080B19D0:
- ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
- bl sub_80B20BC
- bl rom_npc_set_flag_for_script_id
- bl sub_80B22BC
-_080B19E2:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B1994
-
- thumb_func_start sub_80B19EC
-sub_80B19EC: @ 80B19EC
- push {lr}
- ldr r1, =gBattleTypeFlags
- movs r0, 0x8
- str r0, [r1]
- ldr r1, =gMain
- ldr r0, =sub_80B1994
- str r0, [r1, 0x8]
- bl task_add_01_battle_start_with_music_and_stats
- bl ScriptContext1_Stop
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B19EC
-
- thumb_func_start sub_80B1A14
-sub_80B1A14: @ 80B1A14
- push {lr}
- bl InBattlePyramid
- lsls r0, 24
- cmp r0, 0
- beq _080B1A7C
- ldr r0, =gUnknown_030060A8
- ldrb r0, [r0]
- cmp r0, 0x1
- bhi _080B1A44
- ldr r0, =gSpecialVar_LastTalked
- ldrb r0, [r0]
- bl sub_81A9AA8
- lsls r0, 16
- lsrs r0, 16
- bl sub_81A9EDC
- b _080B1AD8
- .pool
-_080B1A44:
- ldr r3, =gMapObjects
- ldr r2, =gUnknown_03006090
- ldr r0, =gUnknown_02038BFC
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r0, [r0, 0x8]
- bl sub_81A9AA8
- lsls r0, 16
- lsrs r0, 16
- bl sub_81A9EDC
- b _080B1AD8
- .pool
-_080B1A7C:
- bl sub_81D5C18
- lsls r0, 24
- cmp r0, 0
- beq _080B1AEC
- ldr r0, =gUnknown_030060A8
- ldrb r0, [r0]
- cmp r0, 0x1
- bhi _080B1AAC
- ldr r0, =gSpecialVar_LastTalked
- ldrb r0, [r0]
- bl battle_init
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x2
- bl sub_81D572C
- b _080B1AD8
- .pool
-_080B1AAC:
- ldr r3, =gMapObjects
- ldr r2, =gUnknown_03006090
- ldr r0, =gUnknown_02038BFC
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r0, [r0, 0x8]
- bl battle_init
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x2
- bl sub_81D572C
-_080B1AD8:
- bl sub_80982B8
- b _080B1AF4
- .pool
-_080B1AEC:
- bl sub_80B1C7C
- bl ShowFieldMessage
-_080B1AF4:
- pop {r0}
- bx r0
- thumb_func_end sub_80B1A14
-
- thumb_func_start BattleSetup_GetScriptAddrAfterBattle
-BattleSetup_GetScriptAddrAfterBattle: @ 80B1AF8
- push {lr}
- ldr r0, =gUnknown_02038BEC
- ldr r0, [r0]
- cmp r0, 0
- bne _080B1B04
- ldr r0, =EventScript_2C8436
-_080B1B04:
- pop {r1}
- bx r1
- .pool
- thumb_func_end BattleSetup_GetScriptAddrAfterBattle
-
- thumb_func_start BattleSetup_GetTrainerPostBattleScript
-BattleSetup_GetTrainerPostBattleScript: @ 80B1B10
- push {lr}
- ldr r1, =gUnknown_02038BF8
- ldrb r2, [r1]
- cmp r2, 0
- beq _080B1B3C
- movs r0, 0
- strb r0, [r1]
- ldr r0, =gUnknown_02038BF4
- ldr r2, [r0]
- cmp r2, 0
- beq _080B1B54
- ldr r1, =gUnknown_03006080
- movs r0, 0x1
- strh r0, [r1]
- adds r0, r2, 0
- b _080B1B56
- .pool
-_080B1B3C:
- ldr r0, =gUnknown_02038BF0
- ldr r1, [r0]
- cmp r1, 0
- beq _080B1B54
- ldr r0, =gUnknown_03006080
- strh r2, [r0]
- adds r0, r1, 0
- b _080B1B56
- .pool
-_080B1B54:
- ldr r0, =LavaridgeTown_Gym_1F_EventScript_2742E6
-_080B1B56:
- pop {r1}
- bx r1
- .pool
- thumb_func_end BattleSetup_GetTrainerPostBattleScript
-
- thumb_func_start special_trainer_unable_to_battle
-special_trainer_unable_to_battle: @ 80B1B60
- push {lr}
- bl sub_80B1D18
- bl ShowFieldMessage
- pop {r0}
- bx r0
- thumb_func_end special_trainer_unable_to_battle
-
- thumb_func_start SetUpTrainerEncounterMusic
-@ void SetUpTrainerEncounterMusic()
-SetUpTrainerEncounterMusic: @ 80B1B70
- push {lr}
- ldr r0, =gUnknown_02038BFC
- ldrb r0, [r0]
- cmp r0, 0
- bne _080B1B88
- ldr r0, =gTrainerBattleOpponent_A
- b _080B1B8A
- .pool
-_080B1B88:
- ldr r0, =gTrainerBattleOpponent_B
-_080B1B8A:
- ldrh r1, [r0]
- ldr r0, =gUnknown_02038BC8
- ldrh r0, [r0]
- cmp r0, 0x1
- beq _080B1C62
- cmp r0, 0x8
- beq _080B1C62
- adds r0, r1, 0
- bl GetTrainerEncounterMusicId
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xD
- bhi _080B1C5C
- lsls r0, 2
- ldr r1, =_080B1BBC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080B1BBC:
- .4byte _080B1BF4
- .4byte _080B1BFA
- .4byte _080B1C04
- .4byte _080B1C5C
- .4byte _080B1C0C
- .4byte _080B1C12
- .4byte _080B1C1C
- .4byte _080B1C24
- .4byte _080B1C2C
- .4byte _080B1C34
- .4byte _080B1C3C
- .4byte _080B1C42
- .4byte _080B1C4C
- .4byte _080B1C54
-_080B1BF4:
- movs r0, 0xBE
- lsls r0, 1
- b _080B1C5E
-_080B1BFA:
- ldr r0, =0x00000197
- b _080B1C5E
- .pool
-_080B1C04:
- ldr r0, =0x0000017b
- b _080B1C5E
- .pool
-_080B1C0C:
- movs r0, 0xD0
- lsls r0, 1
- b _080B1C5E
-_080B1C12:
- ldr r0, =0x000001a1
- b _080B1C5E
- .pool
-_080B1C1C:
- ldr r0, =0x000001a3
- b _080B1C5E
- .pool
-_080B1C24:
- ldr r0, =0x000001b9
- b _080B1C5E
- .pool
-_080B1C2C:
- ldr r0, =0x00000181
- b _080B1C5E
- .pool
-_080B1C34:
- ldr r0, =0x000001c1
- b _080B1C5E
- .pool
-_080B1C3C:
- movs r0, 0xE1
- lsls r0, 1
- b _080B1C5E
-_080B1C42:
- ldr r0, =0x000001c3
- b _080B1C5E
- .pool
-_080B1C4C:
- ldr r0, =0x000001c5
- b _080B1C5E
- .pool
-_080B1C54:
- ldr r0, =0x0000018d
- b _080B1C5E
- .pool
-_080B1C5C:
- ldr r0, =0x000001a7
-_080B1C5E:
- bl PlayNewMapMusic
-_080B1C62:
- pop {r0}
- bx r0
- .pool
- thumb_func_end SetUpTrainerEncounterMusic
-
- thumb_func_start ReturnEmptyStringIfNull
-@ u8 *ReturnEmptyStringIfNull(u8 *str)
-ReturnEmptyStringIfNull: @ 80B1C6C
- push {lr}
- cmp r0, 0
- bne _080B1C74
- ldr r0, =gText_EmptyString2
-_080B1C74:
- pop {r1}
- bx r1
- .pool
- thumb_func_end ReturnEmptyStringIfNull
-
- thumb_func_start sub_80B1C7C
-sub_80B1C7C: @ 80B1C7C
- push {lr}
- ldr r0, =gUnknown_02038BFC
- ldrb r0, [r0]
- cmp r0, 0
- beq _080B1C94
- ldr r0, =gUnknown_02038BD8
- b _080B1C96
- .pool
-_080B1C94:
- ldr r0, =gUnknown_02038BD4
-_080B1C96:
- ldr r0, [r0]
- bl ReturnEmptyStringIfNull
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B1C7C
-
- thumb_func_start GetTrainer1LoseText
-GetTrainer1LoseText: @ 80B1CA4
- push {r4,lr}
- ldr r0, =gTrainerBattleOpponent_A
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 3
- cmp r1, r0
- bne _080B1CBC
- bl sub_80EA250
- b _080B1CC0
- .pool
-_080B1CBC:
- ldr r0, =gUnknown_02038BDC
- ldr r0, [r0]
-_080B1CC0:
- ldr r4, =gStringVar4
- bl ReturnEmptyStringIfNull
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end GetTrainer1LoseText
-
- thumb_func_start GetTrainer2LoseText
-GetTrainer2LoseText: @ 80B1CE0
- push {r4,lr}
- ldr r4, =gStringVar4
- ldr r0, =gUnknown_02038BE0
- ldr r0, [r0]
- bl ReturnEmptyStringIfNull
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end GetTrainer2LoseText
-
- thumb_func_start sub_80B1D04
-sub_80B1D04: @ 80B1D04
- push {lr}
- ldr r0, =gUnknown_02038BE4
- ldr r0, [r0]
- bl ReturnEmptyStringIfNull
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B1D04
-
- thumb_func_start sub_80B1D18
-sub_80B1D18: @ 80B1D18
- push {lr}
- ldr r0, =gUnknown_02038BE8
- ldr r0, [r0]
- bl ReturnEmptyStringIfNull
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B1D18
-
- thumb_func_start sub_80B1D2C
-sub_80B1D2C: @ 80B1D2C
- push {lr}
- lsls r1, 16
- lsrs r1, 16
- movs r3, 0
- adds r2, r0, 0
-_080B1D36:
- ldrh r0, [r2]
- cmp r0, r1
- bne _080B1D40
- adds r0, r3, 0
- b _080B1D4C
-_080B1D40:
- adds r2, 0x10
- adds r3, 0x1
- cmp r3, 0x4D
- ble _080B1D36
- movs r0, 0x1
- negs r0, r0
-_080B1D4C:
- pop {r1}
- bx r1
- thumb_func_end sub_80B1D2C
-
- thumb_func_start sub_80B1D50
-sub_80B1D50: @ 80B1D50
- push {r4,r5,lr}
- lsls r1, 16
- lsrs r5, r1, 16
- movs r4, 0
- adds r2, r0, 0
-_080B1D5A:
- movs r1, 0
- ldrh r0, [r2]
- cmp r0, 0
- beq _080B1D80
- movs r3, 0
-_080B1D64:
- adds r0, r2, r3
- ldrh r0, [r0]
- cmp r0, r5
- bne _080B1D70
- adds r0, r4, 0
- b _080B1D8C
-_080B1D70:
- adds r3, 0x2
- adds r1, 0x1
- cmp r1, 0x4
- bgt _080B1D80
- adds r0, r2, r3
- ldrh r0, [r0]
- cmp r0, 0
- bne _080B1D64
-_080B1D80:
- adds r2, 0x10
- adds r4, 0x1
- cmp r4, 0x4D
- ble _080B1D5A
- movs r0, 0x1
- negs r0, r0
-_080B1D8C:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80B1D50
-
- thumb_func_start sub_80B1D94
-sub_80B1D94: @ 80B1D94
- push {lr}
- cmp r0, 0x48
- ble _080B1D9E
- movs r0, 0x1
- b _080B1DB8
-_080B1D9E:
- cmp r0, 0x40
- bne _080B1DB6
- movs r0, 0x7E
- bl FlagGet
- movs r1, 0
- lsls r0, 24
- cmp r0, 0
- bne _080B1DB2
- movs r1, 0x1
-_080B1DB2:
- adds r0, r1, 0
- b _080B1DB8
-_080B1DB6:
- movs r0, 0
-_080B1DB8:
- pop {r1}
- bx r1
- thumb_func_end sub_80B1D94
-
- thumb_func_start sub_80B1DBC
-sub_80B1DBC: @ 80B1DBC
- push {r4-r6,lr}
- adds r6, r1, 0
- movs r5, 0x1
- lsls r1, r6, 4
- adds r1, r0
- adds r4, r1, 0x2
- b _080B1DCE
-_080B1DCA:
- adds r4, 0x2
- adds r5, 0x1
-_080B1DCE:
- cmp r5, 0x4
- bgt _080B1DE2
- ldrh r0, [r4]
- cmp r0, 0
- beq _080B1DE2
- bl HasTrainerAlreadyBeenFought
- lsls r0, 24
- cmp r0, 0
- bne _080B1DCA
-_080B1DE2:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x000009ca
- adds r0, r1
- adds r0, r6
- strb r5, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B1DBC
-
- thumb_func_start sub_80B1DFC
-sub_80B1DFC: @ 80B1DFC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r6, r0, 0
- lsls r1, 16
- lsrs r1, 16
- mov r9, r1
- lsls r2, 16
- lsrs r2, 16
- mov r8, r2
- movs r7, 0
- movs r5, 0
- adds r4, r6, 0
- adds r4, 0xA
-_080B1E1A:
- ldrh r0, [r4]
- cmp r0, r9
- bne _080B1E74
- ldrh r0, [r4, 0x2]
- cmp r0, r8
- bne _080B1E74
- adds r0, r5, 0
- bl sub_80B1D94
- cmp r0, 0
- bne _080B1E74
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x000009ca
- adds r0, r1
- adds r0, r5
- ldrb r0, [r0]
- cmp r0, 0
- bne _080B1E72
- movs r1, 0xAE
- lsls r1, 1
- adds r0, r5, r1
- lsls r0, 16
- lsrs r0, 16
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _080B1E74
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1E
- bhi _080B1E74
- adds r0, r6, 0
- adds r1, r5, 0
- bl sub_80B1DBC
-_080B1E72:
- movs r7, 0x1
-_080B1E74:
- adds r4, 0x10
- adds r5, 0x1
- cmp r5, 0x40
- ble _080B1E1A
- adds r0, r7, 0
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B1DFC
-
- thumb_func_start sub_80B1E94
-sub_80B1E94: @ 80B1E94
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, =gUnknown_085500A4
- lsls r0, r4, 4
- adds r0, r5
- ldrh r0, [r0]
- bl HasTrainerAlreadyBeenFought
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B1EB4
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_80B1DBC
-_080B1EB4:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B1E94
-
- thumb_func_start sub_80B1EC0
-sub_80B1EC0: @ 80B1EC0
- push {r4-r6,lr}
- lsls r1, 16
- lsrs r4, r1, 16
- lsls r2, 16
- lsrs r2, 16
- movs r1, 0
- adds r3, r0, 0
- adds r3, 0xA
- ldr r5, =gSaveBlock1Ptr
-_080B1ED2:
- ldrh r0, [r3]
- cmp r0, r4
- bne _080B1EF8
- ldrh r0, [r3, 0x2]
- cmp r0, r2
- bne _080B1EF8
- ldr r0, [r5]
- ldr r6, =0x000009ca
- adds r0, r6
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _080B1EF8
- movs r0, 0x1
- b _080B1F02
- .pool
-_080B1EF8:
- adds r3, 0x10
- adds r1, 0x1
- cmp r1, 0x4D
- ble _080B1ED2
- movs r0, 0
-_080B1F02:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80B1EC0
-
- thumb_func_start sub_80B1F08
-sub_80B1F08: @ 80B1F08
- push {r4,lr}
- lsls r1, 16
- lsrs r4, r1, 16
- lsls r2, 16
- lsrs r2, 16
- movs r1, 0
- adds r3, r0, 0
- adds r3, 0xA
-_080B1F18:
- ldrh r0, [r3]
- cmp r0, r4
- bne _080B1F28
- ldrh r0, [r3, 0x2]
- cmp r0, r2
- bne _080B1F28
- movs r0, 0x1
- b _080B1F32
-_080B1F28:
- adds r3, 0x10
- adds r1, 0x1
- cmp r1, 0x4D
- ble _080B1F18
- movs r0, 0
-_080B1F32:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80B1F08
-
- thumb_func_start sub_80B1F38
-sub_80B1F38: @ 80B1F38
- push {lr}
- lsls r1, 16
- lsrs r1, 16
- bl sub_80B1D2C
- adds r1, r0, 0
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _080B1F6C
- cmp r1, 0x63
- bgt _080B1F6C
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r2, =0x000009ca
- adds r0, r2
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _080B1F6C
- movs r0, 0x1
- b _080B1F6E
- .pool
-_080B1F6C:
- movs r0, 0
-_080B1F6E:
- pop {r1}
- bx r1
- thumb_func_end sub_80B1F38
-
- thumb_func_start sub_80B1F74
-sub_80B1F74: @ 80B1F74
- push {lr}
- lsls r1, 16
- lsrs r1, 16
- bl sub_80B1D50
- adds r1, r0, 0
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _080B1FA8
- cmp r1, 0x63
- bgt _080B1FA8
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r2, =0x000009ca
- adds r0, r2
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _080B1FA8
- movs r0, 0x1
- b _080B1FAA
- .pool
-_080B1FA8:
- movs r0, 0
-_080B1FAA:
- pop {r1}
- bx r1
- thumb_func_end sub_80B1F74
-
- thumb_func_start sub_80B1FB0
-sub_80B1FB0: @ 80B1FB0
- push {r4-r7,lr}
- adds r4, r0, 0
- lsls r1, 16
- lsrs r1, 16
- bl sub_80B1D2C
- adds r1, r0, 0
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- bne _080B1FD8
- movs r0, 0
- b _080B1FFE
-_080B1FCA:
- subs r0, r6, 0x1
- lsls r0, 1
- adds r0, r7, r0
- ldrh r0, [r0]
- b _080B1FFE
-_080B1FD4:
- ldrh r0, [r5]
- b _080B1FFE
-_080B1FD8:
- lsls r0, r1, 4
- adds r7, r4, r0
- movs r6, 0x1
- adds r5, r7, 0x2
- adds r4, r5, 0
-_080B1FE2:
- ldrh r0, [r4]
- cmp r0, 0
- beq _080B1FCA
- bl HasTrainerAlreadyBeenFought
- lsls r0, 24
- cmp r0, 0
- beq _080B1FD4
- adds r4, 0x2
- adds r5, 0x2
- adds r6, 0x1
- cmp r6, 0x4
- ble _080B1FE2
- ldrh r0, [r7, 0x8]
-_080B1FFE:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80B1FB0
-
- thumb_func_start sub_80B2004
-sub_80B2004: @ 80B2004
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r1, 16
- lsrs r1, 16
- bl sub_80B1D2C
- adds r1, r0, 0
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- bne _080B2032
- movs r0, 0
- b _080B2054
-_080B201E:
- subs r0, r5, 0x1
- lsls r0, 1
- adds r0, r6, r0
- ldrh r0, [r0]
- b _080B2054
-_080B2028:
- subs r0, r5, 0x1
- lsls r0, 1
- adds r0, r6, r0
- ldrh r0, [r0]
- b _080B2054
-_080B2032:
- lsls r0, r1, 4
- adds r6, r4, r0
- movs r5, 0x1
- adds r4, r6, 0x2
-_080B203A:
- ldrh r0, [r4]
- cmp r0, 0
- beq _080B201E
- bl HasTrainerAlreadyBeenFought
- lsls r0, 24
- cmp r0, 0
- beq _080B2028
- adds r4, 0x2
- adds r5, 0x1
- cmp r5, 0x4
- ble _080B203A
- ldrh r0, [r6, 0x8]
-_080B2054:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80B2004
-
- thumb_func_start sub_80B205C
-sub_80B205C: @ 80B205C
- push {lr}
- lsls r1, 16
- lsrs r1, 16
- bl sub_80B1D50
- adds r1, r0, 0
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _080B207E
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r2, =0x000009ca
- adds r0, r2
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
-_080B207E:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B205C
-
- thumb_func_start sub_80B208C
-sub_80B208C: @ 80B208C
- push {r4,lr}
- adds r3, r0, 0
- movs r1, 0
- movs r4, 0xAE
- lsls r4, 1
- ldr r2, =gUnknown_085500A4
-_080B2098:
- ldrh r0, [r2]
- cmp r0, r3
- bne _080B20A8
- adds r0, r1, r4
- b _080B20B2
- .pool
-_080B20A8:
- adds r2, 0x10
- adds r1, 0x1
- cmp r1, 0x4D
- ble _080B2098
- ldr r0, =0x0000ffff
-_080B20B2:
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B208C
-
- thumb_func_start sub_80B20BC
-sub_80B20BC: @ 80B20BC
- push {lr}
- ldr r0, =0x0000012f
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _080B20E2
- ldr r0, =gTrainerBattleOpponent_A
- ldrh r0, [r0]
- bl sub_80B208C
- adds r1, r0, 0
- ldr r0, =0x0000ffff
- cmp r1, r0
- beq _080B20E2
- lsls r0, r1, 16
- lsrs r0, 16
- bl FlagSet
-_080B20E2:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B20BC
-
- thumb_func_start sub_80B20F4
-sub_80B20F4: @ 80B20F4
- push {r4,lr}
- adds r4, r0, 0
- lsls r1, 16
- lsrs r1, 16
- bl sub_80B1D2C
- adds r1, r0, 0
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _080B211E
- lsls r0, r1, 4
- adds r0, r4
- ldrh r0, [r0, 0x2]
- bl HasTrainerAlreadyBeenFought
- lsls r0, 24
- cmp r0, 0
- beq _080B211E
- movs r0, 0x1
- b _080B2120
-_080B211E:
- movs r0, 0
-_080B2120:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80B20F4
-
- thumb_func_start sub_80B2128
-sub_80B2128: @ 80B2128
- push {r4-r6,lr}
- movs r6, 0
- movs r5, 0
- ldr r4, =gUnknown_08550584
-_080B2130:
- ldrh r0, [r4]
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B214C
- adds r6, 0x1
- cmp r6, 0x4
- ble _080B214C
- movs r0, 0x1
- b _080B2156
- .pool
-_080B214C:
- adds r4, 0x2
- adds r5, 0x1
- cmp r5, 0x7
- bls _080B2130
- movs r0, 0
-_080B2156:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80B2128
-
- thumb_func_start sub_80B215C
-sub_80B215C: @ 80B215C
- push {lr}
- bl sub_80B2128
- cmp r0, 0
- beq _080B2184
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r2, =0x000009c8
- adds r1, r0, r2
- ldrh r0, [r1]
- cmp r0, 0xFE
- bls _080B2180
- movs r0, 0xFF
- b _080B2182
- .pool
-_080B2180:
- adds r0, 0x1
-_080B2182:
- strh r0, [r1]
-_080B2184:
- pop {r0}
- bx r0
- thumb_func_end sub_80B215C
-
- thumb_func_start sub_80B2188
-sub_80B2188: @ 80B2188
- push {lr}
- bl sub_80B2128
- cmp r0, 0
- beq _080B21AC
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x000009c8
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0xFE
- bls _080B21AC
- movs r0, 0x1
- b _080B21AE
- .pool
-_080B21AC:
- movs r0, 0
-_080B21AE:
- pop {r1}
- bx r1
- thumb_func_end sub_80B2188
-
- thumb_func_start sub_80B21B4
-sub_80B21B4: @ 80B21B4
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r1, 16
- lsrs r4, r1, 16
- bl sub_80B2188
- cmp r0, 0
- beq _080B21E0
- ldr r0, =gUnknown_085500A4
- adds r1, r5, 0
- adds r2, r4, 0
- bl sub_80B1DFC
- cmp r0, 0x1
- bne _080B21E0
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x000009c8
- adds r0, r1
- movs r1, 0
- strh r1, [r0]
-_080B21E0:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B21B4
-
- thumb_func_start sub_80B21F4
-sub_80B21F4: @ 80B21F4
- push {lr}
- adds r3, r0, 0
- adds r2, r1, 0
- lsls r3, 16
- lsrs r3, 16
- lsls r2, 16
- lsrs r2, 16
- ldr r0, =gUnknown_085500A4
- adds r1, r3, 0
- bl sub_80B1EC0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B21F4
-
- thumb_func_start sub_80B2214
-sub_80B2214: @ 80B2214
- push {lr}
- adds r3, r0, 0
- adds r2, r1, 0
- lsls r3, 16
- lsrs r3, 16
- lsls r2, 16
- lsrs r2, 16
- ldr r0, =gUnknown_085500A4
- adds r1, r3, 0
- bl sub_80B1F08
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B2214
-
- thumb_func_start sub_80B2234
-sub_80B2234: @ 80B2234
- push {lr}
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldr r0, =gUnknown_085500A4
- bl sub_80B1FB0
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B2234
-
- thumb_func_start sub_80B2250
-sub_80B2250: @ 80B2250
- push {lr}
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldr r0, =gUnknown_085500A4
- bl sub_80B2004
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B2250
-
- thumb_func_start sub_80B226C
-sub_80B226C: @ 80B226C
- push {r4,r5,lr}
- ldr r5, =gUnknown_085500A4
- ldr r4, =gTrainerBattleOpponent_A
- ldrh r1, [r4]
- adds r0, r5, 0
- bl sub_80B1F38
- lsls r0, 24
- cmp r0, 0
- bne _080B2298
- ldrh r1, [r4]
- adds r0, r5, 0
- bl sub_80B20F4
- lsls r0, 24
- lsrs r0, 24
- b _080B229A
- .pool
-_080B2298:
- movs r0, 0x1
-_080B229A:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80B226C
-
- thumb_func_start sub_80B22A0
-sub_80B22A0: @ 80B22A0
- push {lr}
- ldr r0, =gUnknown_085500A4
- ldr r1, =gTrainerBattleOpponent_A
- ldrh r1, [r1]
- bl sub_80B1F74
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B22A0
-
- thumb_func_start sub_80B22BC
-sub_80B22BC: @ 80B22BC
- push {lr}
- ldr r0, =gUnknown_085500A4
- ldr r1, =gTrainerBattleOpponent_A
- ldrh r1, [r1]
- bl sub_80B205C
- bl rom_npc_set_flag_for_script_id
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B22BC
-
- thumb_func_start CheckIfMultipleTrainersWantBattle
-CheckIfMultipleTrainersWantBattle: @ 80B22D8
- push {lr}
- ldr r1, =gUnknown_02038BF9
- ldrb r0, [r1]
- cmp r0, 0x1
- bls _080B2300
- movs r0, 0
- strb r0, [r1]
- ldr r1, =gUnknown_02038BF8
- movs r0, 0x1
- strb r0, [r1]
- ldr r1, =gSpecialVar_Result
- movs r0, 0x1
- b _080B230A
- .pool
-_080B2300:
- ldr r1, =gUnknown_02038BF8
- movs r0, 0
- strb r0, [r1]
- ldr r1, =gSpecialVar_Result
- movs r0, 0
-_080B230A:
- strh r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end CheckIfMultipleTrainersWantBattle
-
- thumb_func_start sub_80B2318
-sub_80B2318: @ 80B2318
- push {r4-r7,lr}
- lsls r0, 16
- ldr r7, =gUnknown_085500A4
- lsrs r4, r0, 12
- adds r6, r4, r7
- ldrh r0, [r6]
- bl HasTrainerAlreadyBeenFought
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080B2338
- movs r0, 0
- b _080B2364
- .pool
-_080B2338:
- movs r5, 0x1
- adds r0, r4, 0x2
- adds r0, r7
- ldrh r0, [r0]
- cmp r0, 0
- beq _080B2360
- adds r4, r6, 0x2
-_080B2346:
- ldrh r0, [r4]
- bl HasTrainerAlreadyBeenFought
- lsls r0, 24
- cmp r0, 0
- beq _080B2360
- adds r4, 0x2
- adds r5, 0x1
- cmp r5, 0x4
- bgt _080B2360
- ldrh r0, [r4]
- cmp r0, 0
- bne _080B2346
-_080B2360:
- lsls r0, r5, 16
- lsrs r0, 16
-_080B2364:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80B2318
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_tower.s b/asm/battle_tower.s
index 42dcb431a..96769dcbf 100755
--- a/asm/battle_tower.s
+++ b/asm/battle_tower.s
@@ -3534,7 +3534,7 @@ _08163E10:
bl sub_80B100C
lsls r0, 24
lsrs r0, 24
- bl sub_8145EF4
+ bl BattleTransition_StartOnField
b _08163E68
.pool
_08163E2C:
@@ -3544,7 +3544,7 @@ _08163E2C:
ldr r5, =0x00000c03
adds r0, r5, 0
bl sub_8165404
- ldr r4, =gUnknown_02038BFC
+ ldr r4, =gApproachingTrainerId
movs r0, 0
strb r0, [r4]
ldr r0, =MossdeepCity_SpaceCenter_2F_EventScript_224157 + 1
@@ -3561,7 +3561,7 @@ _08163E2C:
movs r0, 0
bl PlayMapChosenOrBattleBGM
movs r0, 0x12
- bl sub_8145EF4
+ bl BattleTransition_StartOnField
_08163E68:
add sp, 0x4
pop {r4-r6}
diff --git a/asm/battle_transition.s b/asm/battle_transition.s
index 6ffa17320..b7f2746ec 100644
--- a/asm/battle_transition.s
+++ b/asm/battle_transition.s
@@ -57,8 +57,8 @@ TestBattleTransition: @ 8145EDC
.pool
thumb_func_end TestBattleTransition
- thumb_func_start sub_8145EF4
-sub_8145EF4: @ 8145EF4
+ thumb_func_start BattleTransition_StartOnField
+BattleTransition_StartOnField: @ 8145EF4
push {lr}
lsls r0, 24
lsrs r0, 24
@@ -69,17 +69,17 @@ sub_8145EF4: @ 8145EF4
pop {r0}
bx r0
.pool
- thumb_func_end sub_8145EF4
+ thumb_func_end BattleTransition_StartOnField
- thumb_func_start sub_8145F10
-sub_8145F10: @ 8145F10
+ thumb_func_start BattleTransition_Start
+BattleTransition_Start: @ 8145F10
push {lr}
lsls r0, 24
lsrs r0, 24
bl LaunchBattleTransitionTask
pop {r0}
bx r0
- thumb_func_end sub_8145F10
+ thumb_func_end BattleTransition_Start
thumb_func_start IsBattleTransitionDone
IsBattleTransitionDone: @ 8145F20
diff --git a/asm/berry_blender.s b/asm/berry_blender.s
deleted file mode 100644
index f0d1b48d7..000000000
--- a/asm/berry_blender.s
+++ /dev/null
@@ -1,8788 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_807F738
-sub_807F738: @ 807F738
- push {lr}
- ldr r0, =gMPlay_SE2
- ldr r1, =0x0000ffff
- ldr r2, =gUnknown_020322A4
- ldr r2, [r2]
- adds r2, 0x4C
- movs r3, 0
- ldrsh r2, [r2, r3]
- subs r2, 0x80
- lsls r2, 17
- asrs r2, 16
- bl m4aMPlayPitchControl
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_807F738
-
- thumb_func_start sub_807F764
-sub_807F764: @ 807F764
- push {r4,lr}
- sub sp, 0x10
- bl sub_8082DF4
- ldr r0, =gUnknown_020322A4
- ldr r0, [r0]
- mov r12, r0
- movs r0, 0xA0
- lsls r0, 1
- add r0, r12
- ldr r1, [r0]
- movs r0, 0xA2
- lsls r0, 1
- add r0, r12
- ldr r2, [r0]
- movs r0, 0xA4
- lsls r0, 1
- add r0, r12
- movs r4, 0
- ldrsh r3, [r0, r4]
- movs r0, 0xA5
- lsls r0, 1
- add r0, r12
- movs r4, 0
- ldrsh r0, [r0, r4]
- str r0, [sp]
- movs r0, 0xA6
- lsls r0, 1
- add r0, r12
- movs r4, 0
- ldrsh r0, [r0, r4]
- str r0, [sp, 0x4]
- movs r0, 0xA7
- lsls r0, 1
- add r0, r12
- movs r4, 0
- ldrsh r0, [r0, r4]
- str r0, [sp, 0x8]
- movs r0, 0xA8
- lsls r0, 1
- add r0, r12
- ldrh r0, [r0]
- str r0, [sp, 0xC]
- movs r0, 0x2
- bl SetBgAffine
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- add sp, 0x10
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_807F764
-
- thumb_func_start sub_807F7D8
-sub_807F7D8: @ 807F7D8
- push {r4,r5,lr}
- ldr r1, =gUnknown_020322A4
- ldr r0, [r1]
- ldrb r0, [r0, 0x1]
- adds r5, r1, 0
- cmp r0, 0x9
- bls _0807F7E8
- b _0807F9C8
-_0807F7E8:
- lsls r0, 2
- ldr r1, =_0807F7FC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0807F7FC:
- .4byte _0807F824
- .4byte _0807F854
- .4byte _0807F880
- .4byte _0807F8AC
- .4byte _0807F8C8
- .4byte _0807F8F4
- .4byte _0807F910
- .4byte _0807F940
- .4byte _0807F950
- .4byte _0807F980
-_0807F824:
- ldr r5, =gUnknown_08D91598
- adds r0, r5, 0
- bl sub_8034974
- adds r0, 0x64
- bl AllocZeroed
- adds r1, r0, 0
- ldr r4, =gUnknown_020322A4
- ldr r0, [r4]
- ldr r2, =0x000011bc
- adds r0, r2
- str r1, [r0]
- adds r0, r5, 0
- bl LZDecompressWram
- ldr r1, [r4]
- b _0807F966
- .pool
-_0807F854:
- ldr r1, =sBlenderCenterMap
- movs r2, 0x80
- lsls r2, 3
- movs r0, 0x2
- movs r3, 0
- bl CopyToBgTilemapBuffer
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- ldr r0, =sBlenderCenterPal
- movs r2, 0x80
- lsls r2, 1
- movs r1, 0
- bl LoadPalette
- b _0807F962
- .pool
-_0807F880:
- ldr r0, [r5]
- ldr r1, =0x000011bc
- adds r0, r1
- ldr r4, [r0]
- ldr r0, =gUnknown_08D91598
- bl sub_8034974
- adds r2, r0, 0
- lsls r2, 16
- lsrs r2, 16
- movs r0, 0x2
- adds r1, r4, 0
- movs r3, 0
- bl LoadBgTiles
- ldr r1, [r5]
- b _0807F966
- .pool
-_0807F8AC:
- ldr r0, =gUnknown_08D91DB8
- ldr r1, [r5]
- ldr r2, =0x000011bc
- adds r1, r2
- ldr r1, [r1]
- bl LZDecompressWram
- ldr r1, [r5]
- b _0807F966
- .pool
-_0807F8C8:
- ldr r0, [r5]
- ldr r1, =0x000011bc
- adds r0, r1
- ldr r4, [r0]
- ldr r0, =gUnknown_08D91DB8
- bl sub_8034974
- adds r2, r0, 0
- lsls r2, 16
- lsrs r2, 16
- movs r0, 0x1
- adds r1, r4, 0
- movs r3, 0
- bl LoadBgTiles
- ldr r1, [r5]
- b _0807F966
- .pool
-_0807F8F4:
- ldr r0, =gUnknown_08D927EC
- ldr r1, [r5]
- ldr r2, =0x000011bc
- adds r1, r2
- ldr r1, [r1]
- bl LZDecompressWram
- ldr r1, [r5]
- b _0807F966
- .pool
-_0807F910:
- ldr r0, [r5]
- ldr r1, =0x000011bc
- adds r0, r1
- ldr r4, [r0]
- ldr r0, =gUnknown_08D927EC
- bl sub_8034974
- adds r2, r0, 0
- lsls r2, 16
- lsrs r2, 16
- movs r0, 0x1
- adds r1, r4, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- ldr r1, [r5]
- b _0807F966
- .pool
-_0807F940:
- ldr r0, =sBlenderOuterPal
- movs r1, 0x80
- movs r2, 0x20
- bl LoadPalette
- b _0807F962
- .pool
-_0807F950:
- ldr r0, =sSpriteSheet_BlenderArrow
- bl LoadSpriteSheet
- ldr r0, =gUnknown_08339BD8
- bl LoadSpriteSheet
- ldr r0, =gUnknown_08339B38
- bl LoadSpriteSheet
-_0807F962:
- ldr r0, =gUnknown_020322A4
- ldr r1, [r0]
-_0807F966:
- ldrb r0, [r1, 0x1]
- adds r0, 0x1
- strb r0, [r1, 0x1]
- b _0807F9C8
- .pool
-_0807F980:
- ldr r0, =gUnknown_08339C24
- bl LoadSpriteSheet
- ldr r0, =gUnknown_08339C58
- bl LoadSpriteSheet
- ldr r0, =sSpritePal_BlenderArrow
- bl LoadSpritePalette
- ldr r0, =sSpritePal_BlenderMisc
- bl LoadSpritePalette
- ldr r4, =gUnknown_020322A4
- ldr r0, [r4]
- ldr r2, =0x000011bc
- adds r0, r2
- ldr r0, [r0]
- bl Free
- ldr r1, [r4]
- movs r0, 0
- strb r0, [r1, 0x1]
- movs r0, 0x1
- b _0807F9CA
- .pool
-_0807F9C8:
- movs r0, 0
-_0807F9CA:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_807F7D8
-
- thumb_func_start sub_807F9D0
-sub_807F9D0: @ 807F9D0
- push {lr}
- sub sp, 0x8
- movs r0, 0x1E
- str r0, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r1, 0x82
- lsls r1, 5
- movs r0, 0
- bl SetGpuRegBits
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- add sp, 0x8
- pop {r0}
- bx r0
- thumb_func_end sub_807F9D0
-
- thumb_func_start sub_807FA34
-sub_807FA34: @ 807FA34
- push {r4,lr}
- sub sp, 0x8
- ldr r0, =gUnknown_08339980
- bl InitWindows
- lsls r0, 16
- cmp r0, 0
- beq _0807FA74
- bl DeactivateAllTextPrinters
- movs r4, 0
-_0807FA4A:
- lsls r0, r4, 24
- lsrs r0, 24
- movs r1, 0
- bl FillWindowPixelBuffer
- adds r4, 0x1
- cmp r4, 0x4
- ble _0807FA4A
- movs r0, 0x1E
- str r0, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- movs r0, 0xE0
- bl sub_81978B0
-_0807FA74:
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_807FA34
-
- thumb_func_start sub_807FA80
-sub_807FA80: @ 807FA80
- push {r4,lr}
- ldr r4, =gUnknown_020322A4
- ldr r0, [r4]
- cmp r0, 0
- bne _0807FA94
- movs r0, 0x8F
- lsls r0, 5
- bl AllocZeroed
- str r0, [r4]
-_0807FA94:
- ldr r0, [r4]
- adds r0, 0x63
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r4]
- strb r1, [r0]
- ldr r0, [r4]
- adds r0, 0x63
- strb r1, [r0]
- ldr r0, =gSpecialVar_0x8004
- ldrb r0, [r0]
- bl sub_807FE54
- ldr r0, =sub_807FAC8
- bl SetMainCallback2
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_807FA80
-
- thumb_func_start sub_807FAC8
-sub_807FAC8: @ 807FAC8
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r1, =gUnknown_020322A4
- ldr r0, [r1]
- ldrb r0, [r0]
- adds r6, r1, 0
- cmp r0, 0x6
- bls _0807FADA
- b _0807FCE2
-_0807FADA:
- lsls r0, 2
- ldr r1, =_0807FAEC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0807FAEC:
- .4byte _0807FB08
- .4byte _0807FBAC
- .4byte _0807FC38
- .4byte _0807FC4E
- .4byte _0807FC64
- .4byte _0807FC90
- .4byte _0807FCB0
-_0807FB08:
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, =gUnknown_08339974
- movs r0, 0x1
- movs r2, 0x3
- bl InitBgsFromTemplates
- ldr r4, =gUnknown_020322A4
- ldr r1, [r4]
- movs r0, 0xDC
- lsls r0, 1
- adds r1, r0
- movs r0, 0x1
- bl SetBgTilemapBuffer
- ldr r1, [r4]
- ldr r0, =0x000009b8
- adds r1, r0
- movs r0, 0x2
- bl SetBgTilemapBuffer
- movs r0, 0
- movs r1, 0x1
- movs r2, 0xD0
- bl sub_809882C
- movs r0, 0
- movs r1, 0x14
- movs r2, 0xF0
- bl copy_textbox_border_tile_patterns_to_vram
- bl sub_807FA34
- ldr r1, [r4]
- ldrb r0, [r1]
- adds r0, 0x1
- movs r2, 0
- strb r0, [r1]
- ldr r3, [r4]
- movs r1, 0x8C
- lsls r1, 1
- adds r0, r3, r1
- movs r1, 0
- strh r2, [r0]
- movs r4, 0x8B
- lsls r4, 1
- adds r0, r3, r4
- strh r2, [r0]
- movs r0, 0x8D
- lsls r0, 1
- adds r4, r3, r0
- movs r0, 0x50
- strh r0, [r4]
- movs r4, 0x8E
- lsls r4, 1
- adds r0, r3, r4
- strh r2, [r0]
- adds r4, 0x2
- adds r0, r3, r4
- strh r2, [r0]
- strb r1, [r3, 0x1]
- bl sub_8082D28
- b _0807FCE2
- .pool
-_0807FBAC:
- bl sub_807F7D8
- lsls r0, 24
- cmp r0, 0
- bne _0807FBB8
- b _0807FCE2
-_0807FBB8:
- movs r4, 0
- ldr r5, =sBlenderSyncArrowsPos
- ldr r6, =gUnknown_020322A4
-_0807FBBE:
- ldrb r1, [r5]
- ldrb r2, [r5, 0x1]
- ldr r0, =sBlenderSyncArrow_SpriteTemplate
- movs r3, 0x1
- bl CreateSprite
- ldr r1, [r6]
- adds r1, 0x50
- adds r1, r4
- strb r0, [r1]
- ldr r0, [r6]
- adds r0, 0x50
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =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 _0807FBBE
- ldr r0, =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _0807FC14
- ldr r0, =gLinkVSyncDisabled
- ldrb r0, [r0]
- cmp r0, 0
- beq _0807FC14
- bl sub_800E0E8
- movs r0, 0
- movs r1, 0
- bl sub_800DFB4
-_0807FC14:
- ldr r0, =sub_807F764
- bl SetVBlankCallback
- b _0807FCA0
- .pool
-_0807FC38:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- bl sub_8082D28
- b _0807FCA0
-_0807FC4E:
- bl sub_807F9D0
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0807FCE2
- b _0807FCA0
- .pool
-_0807FC64:
- ldr r4, [r6]
- ldr r0, =0x000011b8
- adds r4, r0
- ldr r5, =gText_BerryBlenderStart
- bl sav2_get_text_speed
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_808417C
- cmp r0, 0
- beq _0807FCE2
- ldr r1, [r6]
- b _0807FCA4
- .pool
-_0807FC90:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
-_0807FCA0:
- ldr r0, =gUnknown_020322A4
- ldr r1, [r0]
-_0807FCA4:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0807FCE2
- .pool
-_0807FCB0:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _0807FCE2
- bl FreeAllWindowBuffers
- movs r0, 0x2
- bl UnsetBgTilemapBuffer
- movs r0, 0x1
- bl UnsetBgTilemapBuffer
- movs r0, 0
- bl SetVBlankCallback
- ldr r0, =sub_807FFA4
- bl sub_81AABF0
- ldr r0, =gUnknown_020322A4
- ldr r0, [r0]
- strb r4, [r0]
-_0807FCE2:
- bl AnimateSprites
- bl BuildOamBuffer
- bl RunTextPrinters
- bl UpdatePaletteFade
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_807FAC8
-
- thumb_func_start sub_807FD08
-sub_807FD08: @ 807FD08
- 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 _0807FD56
- 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 _0807FD50
- adds r0, r4, 0
- bl DestroySprite
- b _0807FD56
-_0807FD50:
- movs r0, 0x74
- bl PlaySE
-_0807FD56:
- 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_807FD08
-
- thumb_func_start sub_807FD64
-sub_807FD64: @ 807FD64
- 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, =sub_807FD08
- str r1, [r0, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_807FD64
-
- thumb_func_start sub_807FD90
-sub_807FD90: @ 807FD90
- 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_80D511C
- 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, =gSprites
- add r8, r0
- ldr r5, =gUnknown_08339C78
- 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_807FD64
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_807FD90
-
- thumb_func_start sub_807FE14
-sub_807FE14: @ 807FE14
- 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_807FE14
-
- thumb_func_start sub_807FE54
-sub_807FE54: @ 807FE54
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x1
- beq _0807FE7C
- cmp r5, 0x1
- bgt _0807FE68
- cmp r5, 0
- beq _0807FE72
- b _0807FF88
-_0807FE68:
- cmp r5, 0x2
- beq _0807FEE8
- cmp r5, 0x3
- beq _0807FF3C
- b _0807FF88
-_0807FE72:
- ldr r0, =gUnknown_03005D98
- strb r5, [r0]
- b _0807FF88
- .pool
-_0807FE7C:
- ldr r0, =gUnknown_03005D98
- strb r5, [r0]
- ldr r0, =gUnknown_020322A4
- ldr r0, [r0]
- adds r0, 0x7C
- movs r1, 0x2
- strb r1, [r0]
- ldr r4, =gLinkPlayers + 8
- ldr r0, =gSaveBlock2Ptr
- ldr r1, [r0]
- adds r0, r4, 0
- bl StringCopy
- movs r0, 0xD0
- lsls r0, 2
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- bne _0807FEC8
- adds r0, r4, 0
- adds r0, 0x1C
- ldr r1, =sBlenderOpponentsNames
- ldr r1, [r1, 0xC]
- bl StringCopy
- b _0807FED4
- .pool
-_0807FEC8:
- adds r0, r4, 0
- adds r0, 0x1C
- ldr r1, =sBlenderOpponentsNames
- ldr r1, [r1]
- bl StringCopy
-_0807FED4:
- ldr r1, =gLinkPlayers
- movs r0, 0x2
- strh r0, [r1, 0x1A]
- strh r0, [r1, 0x36]
- b _0807FF88
- .pool
-_0807FEE8:
- ldr r0, =gUnknown_03005D98
- strb r5, [r0]
- ldr r0, =gUnknown_020322A4
- ldr r0, [r0]
- adds r0, 0x7C
- movs r1, 0x3
- strb r1, [r0]
- ldr r6, =gLinkPlayers + 8
- ldr r0, =gSaveBlock2Ptr
- ldr r1, [r0]
- adds r0, r6, 0
- bl StringCopy
- adds r0, r6, 0
- adds r0, 0x1C
- ldr r4, =sBlenderOpponentsNames
- ldr r1, [r4, 0x10]
- bl StringCopy
- adds r0, r6, 0
- adds r0, 0x38
- ldr r1, [r4, 0x8]
- bl StringCopy
- adds r0, r6, 0
- subs r0, 0x8
- strh r5, [r0, 0x1A]
- strh r5, [r0, 0x36]
- adds r0, 0x52
- strh r5, [r0]
- b _0807FF88
- .pool
-_0807FF3C:
- ldr r0, =gUnknown_03005D98
- strb r5, [r0]
- ldr r0, =gUnknown_020322A4
- ldr r0, [r0]
- adds r0, 0x7C
- movs r1, 0x4
- strb r1, [r0]
- ldr r5, =gLinkPlayers + 8
- ldr r0, =gSaveBlock2Ptr
- ldr r1, [r0]
- adds r0, r5, 0
- bl StringCopy
- adds r0, r5, 0
- adds r0, 0x1C
- ldr r4, =sBlenderOpponentsNames
- ldr r1, [r4, 0x14]
- bl StringCopy
- adds r0, r5, 0
- adds r0, 0x38
- ldr r1, [r4, 0x4]
- bl StringCopy
- adds r0, r5, 0
- adds r0, 0x54
- ldr r1, [r4, 0x8]
- bl StringCopy
- adds r0, r5, 0
- subs r0, 0x8
- movs r1, 0x2
- strh r1, [r0, 0x1A]
- strh r1, [r0, 0x36]
- adds r0, 0x52
- strh r1, [r0]
- adds r0, 0x1C
- strh r1, [r0]
-_0807FF88:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_807FE54
-
- thumb_func_start sub_807FFA4
-sub_807FFA4: @ 807FFA4
- push {r4,r5,lr}
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- ldr r4, =gUnknown_020322A4
- ldr r0, [r4]
- cmp r0, 0
- bne _0807FFC0
- movs r0, 0x8F
- lsls r0, 5
- bl AllocZeroed
- str r0, [r4]
-_0807FFC0:
- ldr r0, [r4]
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r4]
- movs r2, 0x86
- lsls r2, 1
- adds r0, r2
- str r1, [r0]
- movs r2, 0
- ldr r5, =gSpecialVar_0x8004
- movs r3, 0
-_0807FFD6:
- ldr r0, [r4]
- lsls r1, r2, 1
- adds r0, 0x74
- adds r0, r1
- strh r3, [r0]
- adds r2, 0x1
- cmp r2, 0x3
- ble _0807FFD6
- ldrb r0, [r5]
- bl sub_807FE54
- ldrh r0, [r5]
- cmp r0, 0
- bne _08080008
- ldr r0, =sub_8080018
- bl SetMainCallback2
- b _0808000E
- .pool
-_08080008:
- ldr r0, =sub_80808D4
- bl SetMainCallback2
-_0808000E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_807FFA4
-
- thumb_func_start sub_8080018
-sub_8080018: @ 8080018
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r1, =gUnknown_020322A4
- ldr r0, [r1]
- ldrb r0, [r0]
- adds r2, r1, 0
- cmp r0, 0x15
- bls _0808002A
- b _08080546
-_0808002A:
- lsls r0, 2
- ldr r1, =_0808003C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0808003C:
- .4byte _08080094
- .4byte _08080100
- .4byte _08080120
- .4byte _0808019C
- .4byte _080801AE
- .4byte _080801C8
- .4byte _08080546
- .4byte _08080546
- .4byte _080801F8
- .4byte _08080248
- .4byte _0808026C
- .4byte _08080302
- .4byte _0808035C
- .4byte _080803D4
- .4byte _08080408
- .4byte _0808049C
- .4byte _080804D0
- .4byte _08080546
- .4byte _080804F8
- .4byte _080804E4
- .4byte _080804EA
- .4byte _08080508
-_08080094:
- bl sub_8080588
- ldr r1, =gUnknown_020229C6
- ldr r2, =0x00004422
- adds r0, r2, 0
- strh r0, [r1]
- ldr r2, =gUnknown_020322A4
- ldr r0, [r2]
- adds r0, 0x72
- movs r1, 0
- strb r1, [r0]
- movs r5, 0
- movs r6, 0
- movs r7, 0x92
- lsls r7, 1
-_080800B2:
- ldr r0, [r2]
- lsls r1, r5, 1
- adds r0, 0x64
- adds r0, r1
- strh r6, [r0]
- adds r4, r5, 0x1
- adds r1, r5
- lsls r1, 1
- movs r3, 0x2
-_080800C4:
- ldr r0, [r2]
- adds r0, r7
- adds r0, r1
- strh r6, [r0]
- adds r1, 0x2
- subs r3, 0x1
- cmp r3, 0
- bge _080800C4
- adds r5, r4, 0
- cmp r5, 0x3
- ble _080800B2
- ldr r3, =gUnknown_020322A4
- ldr r4, [r3]
- adds r1, r4, 0
- adds r1, 0x70
- movs r2, 0
- movs r0, 0
- strh r0, [r1]
- subs r1, 0x22
- strh r0, [r1]
- strb r2, [r4, 0x1]
- ldr r1, [r3]
- b _080804FC
- .pool
-_08080100:
- bl sub_807F7D8
- lsls r0, 24
- cmp r0, 0
- bne _0808010C
- b _08080546
-_0808010C:
- ldr r0, =gUnknown_020322A4
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl sub_8082D28
- b _08080546
- .pool
-_08080120:
- movs r5, 0
- ldr r4, =sBlenderSyncArrowsPos
- ldr r6, =gUnknown_020322A4
-_08080126:
- ldrb r1, [r4]
- ldrb r2, [r4, 0x1]
- ldr r0, =sBlenderSyncArrow_SpriteTemplate
- movs r3, 0x1
- bl CreateSprite
- ldr r1, [r6]
- adds r1, 0x54
- adds r1, r5
- strb r0, [r1]
- ldr r0, [r6]
- adds r0, 0x54
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =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 _08080126
- ldr r0, =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _0808016A
- b _080804F8
-_0808016A:
- ldr r0, =gLinkVSyncDisabled
- ldrb r0, [r0]
- cmp r0, 0
- bne _08080174
- b _080804F8
-_08080174:
- bl sub_800E0E8
- movs r0, 0
- movs r1, 0
- bl sub_800DFB4
- b _080804F8
- .pool
-_0808019C:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- b _080804F8
-_080801AE:
- bl sub_807F9D0
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080801C0
- b _08080546
-_080801C0:
- b _080804F8
- .pool
-_080801C8:
- ldr r4, =gUnknown_020322A4
- ldr r0, [r4]
- ldr r3, =0x000011b8
- adds r0, r3
- ldr r1, =sText_CommunicationStandby
- movs r2, 0
- bl sub_808417C
- ldr r1, [r4]
- movs r2, 0
- movs r0, 0x8
- strb r0, [r1]
- ldr r0, [r4]
- movs r1, 0x84
- lsls r1, 1
- adds r0, r1
- str r2, [r0]
- b _08080546
- .pool
-_080801F8:
- ldr r4, =gUnknown_020322A4
- ldr r1, [r4]
- ldrb r0, [r1]
- adds r0, 0x1
- movs r6, 0
- strb r0, [r1]
- ldr r0, [r4]
- movs r2, 0x8A
- lsls r2, 1
- adds r0, r2
- strb r6, [r0]
- ldr r0, [r4]
- movs r5, 0xAC
- lsls r5, 1
- adds r0, r5
- ldr r1, =gSpecialVar_ItemId
- ldrh r1, [r1]
- bl sub_807FE14
- ldr r0, =gUnknown_020228C4
- ldr r1, [r4]
- adds r1, r5
- movs r2, 0x10
- bl memcpy
- bl sub_800ADF8
- ldr r0, [r4]
- movs r3, 0x84
- lsls r3, 1
- adds r0, r3
- str r6, [r0]
- b _08080546
- .pool
-_08080248:
- bl sub_800A520
- lsls r0, 24
- cmp r0, 0
- bne _08080254
- b _08080546
-_08080254:
- bl ResetBlockReceivedFlags
- bl GetMultiplayerId
- lsls r0, 24
- cmp r0, 0
- beq _08080264
- b _080804F8
-_08080264:
- movs r0, 0x4
- bl sub_800A4D8
- b _080804F8
-_0808026C:
- ldr r6, =gUnknown_020322A4
- ldr r1, [r6]
- movs r0, 0x84
- lsls r0, 1
- adds r1, r0
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x14
- bgt _08080282
- b _08080546
-_08080282:
- movs r0, 0x4
- movs r1, 0x1
- bl sub_8197DF8
- bl GetBlockReceivedStatus
- adds r4, r0, 0
- bl sub_800A9D8
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- beq _0808029E
- b _08080546
-_0808029E:
- movs r5, 0
- adds r7, r6, 0
- movs r6, 0xAC
- lsls r6, 1
- b _080802D4
- .pool
-_080802AC:
- ldr r0, [r7]
- lsls r4, r5, 4
- adds r0, r4, r0
- adds r0, r6
- lsls r1, r5, 8
- ldr r2, =gBlockRecvBuffer
- adds r1, r2
- movs r2, 0x10
- bl memcpy
- ldr r0, [r7]
- lsls r2, r5, 1
- adds r1, r0, 0
- adds r1, 0x74
- adds r1, r2
- adds r0, r4
- adds r0, r6
- ldrh r0, [r0]
- strh r0, [r1]
- adds r5, 0x1
-_080802D4:
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r5, r0
- blt _080802AC
- bl ResetBlockReceivedFlags
- b _080804F8
- .pool
-_080802EC:
- ldrb r1, [r4]
- lsls r1, 1
- adds r0, r2, 0
- adds r0, 0x74
- adds r0, r1
- ldrh r0, [r0]
- lsls r1, r5, 24
- lsrs r1, 24
- bl sub_807FD90
- b _08080336
-_08080302:
- bl GetLinkPlayerCount
- ldr r2, =gUnknown_020322A4
- ldr r1, [r2]
- adds r1, 0x7C
- strb r0, [r1]
- movs r5, 0
- ldr r2, [r2]
- movs r1, 0x8A
- lsls r1, 1
- adds r4, r2, r1
- ldr r1, =gUnknown_083399D0
- adds r0, r2, 0
- adds r0, 0x7C
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 2
- ldrb r3, [r4]
- adds r0, r1
-_08080328:
- ldrb r1, [r0]
- cmp r3, r1
- beq _080802EC
- adds r0, 0x1
- adds r5, 0x1
- cmp r5, 0x3
- ble _08080328
-_08080336:
- ldr r3, =gUnknown_020322A4
- ldr r1, [r3]
- movs r0, 0x84
- lsls r0, 1
- adds r2, r1, r0
- movs r0, 0
- str r0, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r1, [r3]
- movs r2, 0x8A
- lsls r2, 1
- adds r1, r2
- b _080804FC
- .pool
-_0808035C:
- ldr r3, [r2]
- movs r0, 0x84
- lsls r0, 1
- adds r1, r3, r0
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x3C
- bgt _08080370
- b _08080546
-_08080370:
- movs r1, 0x8A
- lsls r1, 1
- adds r0, r3, r1
- adds r1, r3, 0
- adds r1, 0x7C
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- bcc _080803B8
- ldrb r0, [r3]
- adds r0, 0x1
- strb r0, [r3]
- ldr r2, [r2]
- ldr r3, =gUnknown_083399DC
- ldr r1, =gUnknown_083399E4
- adds r0, r2, 0
- adds r0, 0x7C
- ldrb r0, [r0]
- subs r0, 0x2
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r3
- ldr r3, =0xffffa800
- adds r1, r3, 0
- ldrh r0, [r0]
- adds r1, r0
- adds r2, 0x4A
- strh r1, [r2]
- b _080803BE
- .pool
-_080803B8:
- ldrb r0, [r3]
- subs r0, 0x1
- strb r0, [r3]
-_080803BE:
- ldr r0, =gUnknown_020322A4
- ldr r0, [r0]
- movs r1, 0x84
- lsls r1, 1
- adds r0, r1
- movs r1, 0
- str r1, [r0]
- b _08080546
- .pool
-_080803D4:
- bl sub_800A520
- lsls r0, 24
- cmp r0, 0
- bne _080803E0
- b _08080546
-_080803E0:
- ldr r2, =gUnknown_020322A4
- ldr r1, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r2]
- movs r2, 0xA0
- lsls r2, 1
- adds r0, r2
- bl sub_8082CB4
- movs r0, 0x2B
- bl PlaySE
- movs r0, 0x2
- bl ShowBg
- b _08080546
- .pool
-_08080408:
- movs r1, 0x80
- lsls r1, 3
- movs r0, 0
- bl SetGpuRegBits
- ldr r4, =gUnknown_020322A4
- ldr r2, [r4]
- adds r1, r2, 0
- adds r1, 0x4A
- movs r3, 0x80
- lsls r3, 2
- adds r0, r3, 0
- ldrh r3, [r1]
- adds r0, r3
- strh r0, [r1]
- movs r0, 0x8D
- 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 _0808048C
- movs r0, 0xC
- movs r1, 0x2
- bl SetGpuRegBits
- ldr r1, [r4]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r3, [r4]
- movs r2, 0x8D
- lsls r2, 1
- adds r1, r3, r2
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r1]
- ldr r2, =gUnknown_083399DC
- ldr r1, =gUnknown_083399E4
- adds r0, r3, 0
- adds r0, 0x7C
- ldrb r0, [r0]
- subs r0, 0x2
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- adds r1, r3, 0
- adds r1, 0x4A
- strh r0, [r1]
- movs r0, 0x84
- lsls r0, 1
- adds r1, r3, r0
- movs r0, 0
- str r0, [r1]
- movs r0, 0x34
- bl PlaySE
- bl sub_808074C
- bl sub_80807BC
-_0808048C:
- ldr r0, [r4]
- b _080804BE
- .pool
-_0808049C:
- bl sub_8083380
- lsls r0, 24
- cmp r0, 0
- beq _080804BA
- ldr r0, =gUnknown_020322A4
- ldr r1, [r0]
- movs r3, 0x84
- lsls r3, 1
- adds r2, r1, r3
- movs r0, 0
- str r0, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_080804BA:
- ldr r0, =gUnknown_020322A4
- ldr r0, [r0]
-_080804BE:
- movs r1, 0xA0
- lsls r1, 1
- adds r0, r1
- bl sub_8082CB4
- b _08080546
- .pool
-_080804D0:
- ldr r0, =gUnknown_08339C2C
- movs r2, 0x10
- negs r2, r2
- movs r1, 0x78
- movs r3, 0x3
- bl CreateSprite
- b _080804F8
- .pool
-_080804E4:
- bl sub_800ADF8
- b _080804F8
-_080804EA:
- bl sub_800A520
- lsls r0, 24
- cmp r0, 0
- beq _08080546
- bl sub_800A418
-_080804F8:
- ldr r0, =gUnknown_020322A4
- ldr r1, [r0]
-_080804FC:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08080546
- .pool
-_08080508:
- ldr r5, =gUnknown_020322A4
- ldr r3, [r5]
- adds r1, r3, 0
- adds r1, 0x4C
- movs r2, 0
- movs r0, 0x80
- strh r0, [r1]
- movs r1, 0x82
- lsls r1, 1
- adds r0, r3, r1
- str r2, [r0]
- ldr r0, =sub_8081898
- bl SetMainCallback2
- bl GetCurrentMapMusic
- lsls r0, 16
- lsrs r0, 16
- ldr r4, =0x00000193
- cmp r0, r4
- beq _08080540
- bl GetCurrentMapMusic
- ldr r1, [r5]
- movs r2, 0xAA
- lsls r2, 1
- adds r1, r2
- strh r0, [r1]
-_08080540:
- adds r0, r4, 0
- bl PlayBGM
-_08080546:
- ldr r0, =gUnknown_020322A4
- ldr r1, [r0]
- movs r3, 0x8E
- lsls r3, 1
- adds r0, r1, r3
- movs r2, 0
- ldrsh r0, [r0, r2]
- adds r3, 0x2
- adds r1, r3
- movs r2, 0
- ldrsh r1, [r1, r2]
- bl nullsub_31
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl RunTextPrinters
- bl UpdatePaletteFade
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8080018
-
- thumb_func_start sub_8080588
-sub_8080588: @ 8080588
- push {r4,lr}
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl ResetTasks
- ldr r0, =sub_807F764
- bl SetVBlankCallback
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, =gUnknown_08339974
- movs r0, 0x1
- movs r2, 0x3
- bl InitBgsFromTemplates
- ldr r4, =gUnknown_020322A4
- ldr r1, [r4]
- movs r0, 0xDC
- lsls r0, 1
- adds r1, r0
- movs r0, 0x1
- bl SetBgTilemapBuffer
- ldr r1, [r4]
- ldr r3, =0x000009b8
- adds r1, r3
- movs r0, 0x2
- bl SetBgTilemapBuffer
- movs r0, 0
- movs r1, 0x1
- movs r2, 0xD0
- bl sub_809882C
- movs r0, 0
- movs r1, 0x14
- movs r2, 0xF0
- bl copy_textbox_border_tile_patterns_to_vram
- bl sub_807FA34
- ldr r2, [r4]
- adds r0, r2, 0
- adds r0, 0x44
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x8
- strh r1, [r0]
- subs r0, 0x2
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- movs r3, 0x8E
- lsls r3, 1
- adds r0, r2, r3
- strh r1, [r0]
- adds r3, 0x2
- adds r0, r2, r3
- strh r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8080588
-
- thumb_func_start task_tutorial_oak_boy_girl
-task_tutorial_oak_boy_girl: @ 8080624
- push {lr}
- lsls r0, 16
- lsls r1, 24
- lsrs r0, 24
- adds r2, r0, 0
- adds r2, 0x18
- ldr r0, =gUnknown_020322A4
- ldr r0, [r0]
- lsrs r1, 23
- adds r0, 0x96
- adds r0, r1
- ldrb r0, [r0]
- ldr r1, =gUnknown_083399E7
- adds r0, r1
- ldrb r1, [r0]
- cmp r2, r1
- bcc _0808066C
- adds r0, r1, 0
- adds r0, 0x30
- cmp r2, r0
- bcs _0808066C
- subs r0, 0x1C
- cmp r2, r0
- bcc _08080668
- adds r0, 0x8
- cmp r2, r0
- bcs _08080668
- movs r0, 0x2
- b _0808066E
- .pool
-_08080668:
- movs r0, 0x1
- b _0808066E
-_0808066C:
- movs r0, 0
-_0808066E:
- pop {r1}
- bx r1
- thumb_func_end task_tutorial_oak_boy_girl
-
- thumb_func_start sub_8080674
-sub_8080674: @ 8080674
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r1, 24
- lsrs r1, 24
- movs r6, 0
- cmp r5, 0xAF
- bne _080806AC
- movs r4, 0
- subs r7, r1, 0x1
- adds r2, 0x9
-_08080690:
- adds r0, r2, r6
- adds r1, r2, r4
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- bls _0808069E
- adds r6, r4, 0
-_0808069E:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x4
- bls _08080690
- adds r0, r6, 0x5
- b _080806C4
-_080806AC:
- adds r0, r5, 0
- subs r0, 0x85
- lsls r0, 16
- lsrs r6, r0, 16
- subs r7, r1, 0x1
- cmp r6, 0x4
- bls _080806C8
- adds r0, r6, 0
- movs r1, 0x5
- bl __umodsi3
- adds r0, 0x5
-_080806C4:
- lsls r0, 16
- lsrs r6, r0, 16
-_080806C8:
- movs r4, 0
- cmp r4, r7
- bge _08080734
- ldr r0, =gUnknown_08339CA0
- mov r9, r0
- adds r0, r5, 0
- subs r0, 0xA3
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
-_080806DC:
- lsls r0, r6, 1
- adds r0, r6
- adds r0, r4, r0
- add r0, r9
- ldrb r5, [r0]
- movs r0, 0xD0
- lsls r0, 2
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- bne _0808071A
- ldr r0, =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0x1
- bne _0808071A
- adds r0, r6, 0
- movs r1, 0x5
- bl __umodsi3
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r0, =gUnknown_08339CBE
- adds r0, r6, r0
- ldrb r5, [r0]
- mov r0, r8
- cmp r0, 0x4
- bhi _0808071A
- subs r0, r5, 0x5
- lsls r0, 16
- lsrs r5, r0, 16
-_0808071A:
- adds r4, 0x1
- lsls r0, r4, 24
- lsrs r0, 24
- adds r1, r5, 0
- adds r1, 0x85
- lsls r1, 16
- lsrs r1, 16
- bl sub_8082FDC
- lsls r4, 16
- lsrs r4, 16
- cmp r4, r7
- blt _080806DC
-_08080734:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8080674
-
- thumb_func_start sub_808074C
-sub_808074C: @ 808074C
- push {r4-r7,lr}
- movs r4, 0
- ldr r7, =gUnknown_020322A4
- movs r6, 0xFF
- ldr r5, =gUnknown_083399D0
-_08080756:
- ldr r3, [r7]
- lsls r2, r4, 1
- adds r0, r3, 0
- adds r0, 0x96
- adds r0, r2
- strh r6, [r0]
- adds r1, r3, 0
- adds r1, 0x8E
- adds r1, r2
- adds r0, r3, 0
- adds r0, 0x7C
- 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 _08080756
- movs r3, 0
- ldr r7, =gUnknown_020322A4
-_08080784:
- movs r4, 0
- adds r6, r3, 0x1
- lsls r5, r3, 1
-_0808078A:
- ldr r2, [r7]
- lsls r0, r4, 1
- adds r1, r2, 0
- adds r1, 0x8E
- adds r1, r0
- ldrh r0, [r1]
- cmp r0, r3
- bne _080807A2
- adds r0, r2, 0
- adds r0, 0x96
- adds r0, r5
- strh r4, [r0]
-_080807A2:
- adds r4, 0x1
- cmp r4, 0x3
- ble _0808078A
- adds r3, r6, 0
- cmp r3, 0x3
- ble _08080784
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_808074C
-
- thumb_func_start sub_80807BC
-sub_80807BC: @ 80807BC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- movs r0, 0
- mov r10, r0
- ldr r0, =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _080807DE
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
-_080807DE:
- movs r6, 0
- ldr r7, =gUnknown_020322A4
- mov r8, r6
-_080807E4:
- ldr r2, [r7]
- lsls r5, r6, 1
- adds r0, r2, 0
- adds r0, 0x8E
- adds r3, r0, r5
- ldrh r0, [r3]
- cmp r0, 0xFF
- beq _080808B6
- adds r1, r2, 0
- adds r1, 0x50
- ldrh r3, [r3]
- adds r1, r3
- adds r0, r2, 0
- adds r0, 0x54
- adds r0, r6
- ldrb r0, [r0]
- movs r2, 0
- mov r9, r2
- strb r0, [r1]
- ldr r0, [r7]
- adds r1, r0, 0
- adds r1, 0x8E
- adds r1, r5
- adds r0, 0x50
- ldrh r1, [r1]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- mov r1, r8
- lsrs r4, r1, 24
- adds r1, r4, 0
- bl StartSpriteAnim
- add r1, sp, 0x8
- movs r0, 0xFF
- strb r0, [r1]
- ldr r0, [r7]
- adds r0, 0x8E
- adds r0, r5
- ldrh r0, [r0]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- ldr r0, =gLinkPlayers + 8
- adds r1, r0
- add r0, sp, 0x8
- bl StringCopy
- movs r0, 0x1
- add r1, sp, 0x8
- movs r2, 0x38
- bl GetStringCenterAlignXOffset
- adds r2, r0, 0
- ldr r0, [r7]
- adds r0, 0x8E
- adds r0, r5
- mov r5, r8
- ldrh r0, [r0]
- cmp r10, r0
- bne _08080890
- lsls r2, 24
- lsrs r2, 24
- mov r0, r9
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- adds r0, r4, 0
- add r1, sp, 0x8
- movs r3, 0x1
- bl sub_80840D4
- b _080808A6
- .pool
-_08080890:
- lsls r2, 24
- lsrs r2, 24
- mov r1, r9
- str r1, [sp]
- movs r0, 0x1
- str r0, [sp, 0x4]
- adds r0, r4, 0
- add r1, sp, 0x8
- movs r3, 0x1
- bl sub_80840D4
-_080808A6:
- lsrs r4, r5, 24
- adds r0, r4, 0
- bl PutWindowTilemap
- adds r0, r4, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_080808B6:
- movs r2, 0x80
- lsls r2, 17
- add r8, r2
- adds r6, 0x1
- cmp r6, 0x3
- ble _080807E4
- add sp, 0x1C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80807BC
-
- thumb_func_start sub_80808D4
-sub_80808D4: @ 80808D4
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r1, =gUnknown_020322A4
- ldr r0, [r1]
- ldrb r0, [r0]
- adds r2, r1, 0
- cmp r0, 0x15
- bls _080808E6
- b _08080DAE
-_080808E6:
- lsls r0, 2
- ldr r1, =_080808F8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080808F8:
- .4byte _08080950
- .4byte _080809E4
- .4byte _08080A04
- .4byte _08080A58
- .4byte _08080A84
- .4byte _08080DAE
- .4byte _08080DAE
- .4byte _08080DAE
- .4byte _08080ABC
- .4byte _08080DAE
- .4byte _08080DAE
- .4byte _08080AEC
- .4byte _08080B3C
- .4byte _08080BB0
- .4byte _08080BDC
- .4byte _08080C78
- .4byte _08080CA0
- .4byte _08080DAE
- .4byte _08080CAE
- .4byte _08080CAE
- .4byte _08080CAE
- .4byte _08080CC4
-_08080950:
- bl sub_800B4C0
- bl sub_8080588
- ldr r4, =gSpecialVar_ItemId
- ldrh r1, [r4]
- movs r0, 0
- bl sub_8082FDC
- ldr r5, =gUnknown_020322A4
- ldr r0, [r5]
- movs r6, 0xAC
- lsls r6, 1
- adds r0, r6
- ldrh r1, [r4]
- bl sub_807FE14
- ldrh r0, [r4]
- ldr r2, [r5]
- adds r1, r2, 0
- adds r1, 0x7C
- ldrb r1, [r1]
- adds r2, r6
- bl sub_8080674
- movs r4, 0
- movs r6, 0
- ldr r0, =gUnknown_020229C6
- mov r12, r0
- movs r7, 0x92
- lsls r7, 1
-_0808098E:
- ldr r0, [r5]
- lsls r1, r4, 1
- adds r0, 0x64
- adds r0, r1
- strh r6, [r0]
- adds r3, r4, 0x1
- adds r1, r4
- lsls r1, 1
- movs r2, 0x2
-_080809A0:
- ldr r0, [r5]
- adds r0, r7
- adds r0, r1
- strh r6, [r0]
- adds r1, 0x2
- subs r2, 0x1
- cmp r2, 0
- bge _080809A0
- adds r4, r3, 0
- cmp r4, 0x3
- ble _0808098E
- ldr r4, =gUnknown_020322A4
- ldr r3, [r4]
- adds r1, r3, 0
- adds r1, 0x70
- movs r2, 0
- movs r0, 0
- strh r0, [r1]
- strb r2, [r3, 0x1]
- ldr r1, =0x00004422
- adds r0, r1, 0
- mov r2, r12
- strh r0, [r2]
- ldr r1, [r4]
- b _08080CB2
- .pool
-_080809E4:
- bl sub_807F7D8
- lsls r0, 24
- cmp r0, 0
- bne _080809F0
- b _08080DAE
-_080809F0:
- ldr r0, =gUnknown_020322A4
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl sub_8082D28
- b _08080DAE
- .pool
-_08080A04:
- movs r4, 0
- ldr r5, =sBlenderSyncArrowsPos
- ldr r6, =gUnknown_020322A4
-_08080A0A:
- ldrb r1, [r5]
- ldrb r2, [r5, 0x1]
- ldr r0, =sBlenderSyncArrow_SpriteTemplate
- movs r3, 0x1
- bl CreateSprite
- ldr r1, [r6]
- adds r1, 0x54
- adds r1, r4
- strb r0, [r1]
- ldr r0, [r6]
- adds r0, 0x54
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =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 _08080A0A
- b _08080CAE
- .pool
-_08080A58:
- 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, =gUnknown_020322A4
- ldr r1, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r2]
- movs r3, 0x84
- lsls r3, 1
- adds r0, r3
- str r4, [r0]
- b _08080DAE
- .pool
-_08080A84:
- ldr r4, =gUnknown_020322A4
- ldr r1, [r4]
- movs r5, 0x84
- lsls r5, 1
- adds r1, r5
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x2
- bne _08080A9C
- bl sub_807F9D0
-_08080A9C:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08080AAA
- b _08080DAE
-_08080AAA:
- ldr r1, [r4]
- movs r0, 0x8
- strb r0, [r1]
- b _08080DAE
- .pool
-_08080ABC:
- ldr r2, =gUnknown_020322A4
- ldr r1, [r2]
- movs r3, 0
- movs r0, 0xB
- strb r0, [r1]
- ldr r0, [r2]
- movs r1, 0x8A
- lsls r1, 1
- adds r0, r1
- strb r3, [r0]
- b _08080DAE
- .pool
-_08080AD8:
- lsls r1, 1
- adds r0, r3, 0
- adds r0, 0x74
- adds r0, r1
- ldrh r0, [r0]
- lsls r1, r4, 24
- lsrs r1, 24
- bl sub_807FD90
- b _08080B16
-_08080AEC:
- movs r4, 0
- ldr r2, =gUnknown_083399D0
- ldr r0, =gUnknown_020322A4
- ldr r3, [r0]
- adds r0, r3, 0
- adds r0, 0x7C
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 2
- movs r5, 0x8A
- lsls r5, 1
- adds r1, r3, r5
- ldrb r1, [r1]
- adds r0, r2
-_08080B08:
- ldrb r2, [r0]
- cmp r1, r2
- beq _08080AD8
- adds r0, 0x1
- adds r4, 0x1
- cmp r4, 0x3
- ble _08080B08
-_08080B16:
- ldr r3, =gUnknown_020322A4
- ldr r1, [r3]
- movs r5, 0x84
- 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, 0x8A
- lsls r0, 1
- adds r1, r0
- b _08080CB2
- .pool
-_08080B3C:
- ldr r3, [r2]
- movs r2, 0x84
- lsls r2, 1
- adds r1, r3, r2
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x3C
- bgt _08080B50
- b _08080DAE
-_08080B50:
- movs r5, 0x8A
- lsls r5, 1
- adds r0, r3, r5
- adds r4, r3, 0
- adds r4, 0x7C
- ldrb r0, [r0]
- ldrb r1, [r4]
- cmp r0, r1
- bcc _08080B94
- ldr r2, =gUnknown_083399DC
- ldr r1, =gUnknown_083399E4
- ldrb r0, [r4]
- subs r0, 0x2
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r2
- ldr r2, =0xffffa800
- adds r1, r2, 0
- ldrh r0, [r0]
- adds r1, r0
- adds r0, r3, 0
- adds r0, 0x4A
- strh r1, [r0]
- ldrb r0, [r3]
- adds r0, 0x1
- b _08080B98
- .pool
-_08080B94:
- ldrb r0, [r3]
- subs r0, 0x1
-_08080B98:
- strb r0, [r3]
- ldr r0, =gUnknown_020322A4
- ldr r0, [r0]
- movs r3, 0x84
- lsls r3, 1
- adds r0, r3
- movs r1, 0
- str r1, [r0]
- b _08080DAE
- .pool
-_08080BB0:
- ldr r4, =gUnknown_020322A4
- ldr r1, [r4]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl sub_808074C
- movs r0, 0x2B
- bl PlaySE
- ldr r0, [r4]
- movs r5, 0xA0
- lsls r5, 1
- adds r0, r5
- bl sub_8082CB4
- movs r0, 0x2
- bl ShowBg
- b _08080DAE
- .pool
-_08080BDC:
- movs r1, 0x80
- lsls r1, 3
- movs r0, 0
- bl SetGpuRegBits
- ldr r4, =gUnknown_020322A4
- ldr r2, [r4]
- adds r1, r2, 0
- adds r1, 0x4A
- movs r3, 0x80
- lsls r3, 2
- adds r0, r3, 0
- ldrh r5, [r1]
- adds r0, r5
- strh r0, [r1]
- movs r0, 0x8D
- 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 _08080C5C
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- ldr r3, [r4]
- movs r2, 0x8D
- lsls r2, 1
- adds r1, r3, r2
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r1]
- ldr r2, =gUnknown_083399DC
- ldr r1, =gUnknown_083399E4
- adds r0, r3, 0
- adds r0, 0x7C
- 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, 0x4A
- strh r1, [r0]
- movs r0, 0xC
- movs r1, 0x2
- bl SetGpuRegBits
- ldr r0, [r4]
- movs r3, 0x84
- lsls r3, 1
- adds r0, r3
- movs r1, 0
- str r1, [r0]
- movs r0, 0x34
- bl PlaySE
- bl sub_80807BC
-_08080C5C:
- ldr r0, [r4]
- movs r5, 0xA0
- lsls r5, 1
- adds r0, r5
- bl sub_8082CB4
- b _08080DAE
- .pool
-_08080C78:
- bl sub_8083380
- lsls r0, 24
- cmp r0, 0
- beq _08080C8C
- ldr r0, =gUnknown_020322A4
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_08080C8C:
- ldr r0, =gUnknown_020322A4
- ldr r0, [r0]
- movs r1, 0xA0
- lsls r1, 1
- adds r0, r1
- bl sub_8082CB4
- b _08080DAE
- .pool
-_08080CA0:
- ldr r0, =gUnknown_08339C2C
- movs r2, 0x10
- negs r2, r2
- movs r1, 0x78
- movs r3, 0x3
- bl CreateSprite
-_08080CAE:
- ldr r0, =gUnknown_020322A4
- ldr r1, [r0]
-_08080CB2:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08080DAE
- .pool
-_08080CC4:
- bl sub_8080DF8
- ldr r5, =gUnknown_020322A4
- ldr r4, [r5]
- adds r1, r4, 0
- adds r1, 0x4C
- movs r3, 0
- movs r2, 0
- movs r0, 0x80
- strh r0, [r1]
- movs r1, 0x82
- lsls r1, 1
- adds r0, r4, r1
- str r2, [r0]
- ldr r2, =0x00000123
- adds r0, r4, r2
- strb r3, [r0]
- ldr r0, [r5]
- adds r0, 0x72
- strb r3, [r0]
- ldr r0, =sub_8081898
- bl SetMainCallback2
- ldr r0, =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0x1
- bne _08080D44
- movs r0, 0xD0
- lsls r0, 2
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- bne _08080D30
- ldr r0, =sub_8081224
- movs r1, 0xA
- bl CreateTask
- ldr r1, [r5]
- movs r3, 0x90
- lsls r3, 1
- adds r1, r3
- b _08080D42
- .pool
-_08080D30:
- ldr r0, =gUnknown_083399EC
- ldr r0, [r0]
- movs r1, 0xA
- bl CreateTask
- ldr r1, [r5]
- movs r5, 0x90
- lsls r5, 1
- adds r1, r5
-_08080D42:
- strb r0, [r1]
-_08080D44:
- ldr r1, =gSpecialVar_0x8004
- ldrh r0, [r1]
- cmp r0, 0x1
- bls _08080D80
- movs r4, 0
- ldrh r1, [r1]
- cmp r4, r1
- bge _08080D80
- movs r5, 0xA0
- lsls r5, 20
- ldr r6, =gUnknown_083399EC
-_08080D5A:
- ldm r6!, {r0}
- lsrs r1, r5, 24
- bl CreateTask
- ldr r1, =gUnknown_020322A4
- ldr r1, [r1]
- movs r2, 0x90
- 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, =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r4, r0
- blt _08080D5A
-_08080D80:
- bl GetCurrentMapMusic
- lsls r0, 16
- lsrs r0, 16
- ldr r4, =0x00000193
- cmp r0, r4
- beq _08080D9E
- bl GetCurrentMapMusic
- ldr r1, =gUnknown_020322A4
- ldr r1, [r1]
- movs r5, 0xAA
- lsls r5, 1
- adds r1, r5
- strh r0, [r1]
-_08080D9E:
- adds r0, r4, 0
- bl PlayBGM
- movs r0, 0x35
- bl PlaySE
- bl sub_807F738
-_08080DAE:
- ldr r0, =gUnknown_020322A4
- ldr r1, [r0]
- movs r2, 0x8E
- lsls r2, 1
- adds r0, r1, r2
- movs r3, 0
- ldrsh r0, [r0, r3]
- movs r5, 0x8F
- lsls r5, 1
- adds r1, r5
- movs r2, 0
- ldrsh r1, [r1, r2]
- bl nullsub_31
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl RunTextPrinters
- bl UpdatePaletteFade
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80808D4
-
- thumb_func_start sub_8080DF8
-sub_8080DF8: @ 8080DF8
- push {lr}
- ldr r3, =gUnknown_03003110
- movs r0, 0
- ldr r1, =gUnknown_03003090
- movs r2, 0x3
-_08080E02:
- strh r0, [r3]
- strh r0, [r3, 0x4]
- strh r0, [r1]
- strh r0, [r1, 0x4]
- adds r1, 0x10
- subs r2, 0x1
- cmp r2, 0
- bge _08080E02
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8080DF8
-
- thumb_func_start sub_8080E20
-sub_8080E20: @ 8080E20
- push {r4,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r1, =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 _08080E58
- ldr r0, =gUnknown_03003090
- movs r4, 0xC
- ldrsh r1, [r2, r4]
- lsls r1, 4
- adds r0, 0x4
- adds r1, r0
- ldr r0, =0x00002345
- strh r0, [r1]
- adds r0, r3, 0
- bl DestroyTask
-_08080E58:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8080E20
-
- thumb_func_start sub_8080E6C
-sub_8080E6C: @ 8080E6C
- 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, =sub_8080E20
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0xA]
- strh r5, [r1, 0xC]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8080E6C
-
- thumb_func_start sub_8080EA4
-sub_8080EA4: @ 8080EA4
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, =gUnknown_020322A4
- ldr r0, [r4]
- adds r0, 0x4A
- ldrh r0, [r0]
- movs r1, 0x1
- bl task_tutorial_oak_boy_girl
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- beq _08080EC2
- b _08080FB8
-_08080EC2:
- ldr r2, =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 _08080ED8
- b _08080FC6
-_08080ED8:
- ldr r0, [r4]
- ldr r1, =0x00000123
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _08080F9A
- bl Random
- lsls r0, 16
- lsrs r0, 16
- ldr r1, =0x0000028f
- bl __udivsi3
- lsls r0, 24
- lsrs r1, r0, 24
- adds r3, r1, 0
- ldr r0, [r4]
- adds r0, 0x4C
- movs r4, 0
- ldrsh r2, [r0, r4]
- ldr r0, =0x000001f3
- cmp r2, r0
- bgt _08080F40
- cmp r1, 0x4B
- bls _08080F2C
- ldr r1, =gUnknown_03003090
- ldr r0, =0x00004523
- b _08080F30
- .pool
-_08080F2C:
- ldr r1, =gUnknown_03003090
- ldr r0, =0x00005432
-_08080F30:
- strh r0, [r1, 0x14]
- ldr r0, =0x00005432
- b _08080F9E
- .pool
-_08080F40:
- ldr r0, =0x000005db
- cmp r2, r0
- bgt _08080F6E
- cmp r1, 0x50
- bhi _08080F9A
- adds r0, r1, 0
- subs r0, 0x15
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3B
- bhi _08080F68
- ldr r1, =gUnknown_03003090
- ldr r0, =0x00005432
- b _08080F9E
- .pool
-_08080F68:
- cmp r1, 0x9
- bhi _08080FA0
- b _08080F90
-_08080F6E:
- cmp r1, 0x5A
- bhi _08080F9A
- adds r0, r1, 0
- subs r0, 0x47
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x13
- bhi _08080F8C
- ldr r1, =gUnknown_03003090
- ldr r0, =0x00005432
- b _08080F9E
- .pool
-_08080F8C:
- cmp r3, 0x1D
- bhi _08080FA0
-_08080F90:
- movs r0, 0x1
- movs r1, 0x5
- bl sub_8080E6C
- b _08080FA0
-_08080F9A:
- ldr r1, =gUnknown_03003090
- ldr r0, =0x00004523
-_08080F9E:
- strh r0, [r1, 0x14]
-_08080FA0:
- ldr r0, =gTasks
- adds r1, r6, r5
- lsls r1, 3
- adds r1, r0
- movs r0, 0x1
- b _08080FC4
- .pool
-_08080FB8:
- ldr r0, =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- movs r0, 0
-_08080FC4:
- strh r0, [r1, 0x8]
-_08080FC6:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8080EA4
-
- thumb_func_start sub_8080FD0
-sub_8080FD0: @ 8080FD0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r6, =gUnknown_020322A4
- ldr r3, [r6]
- adds r0, r3, 0
- adds r0, 0x4A
- ldrh r0, [r0]
- movs r1, 0xC0
- lsls r1, 5
- adds r0, r1
- ldr r1, =0x0000ffff
- ands r0, r1
- adds r1, r3, 0
- adds r1, 0x9A
- ldrb r1, [r1]
- lsrs r2, r0, 8
- ldr r0, =gUnknown_083399E7
- adds r1, r0
- ldrb r1, [r1]
- adds r0, r1, 0
- adds r0, 0x14
- cmp r2, r0
- bls _080810E0
- adds r0, 0x14
- cmp r2, r0
- bcs _080810E0
- ldr r2, =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 _080810EE
- ldr r1, =0x00000123
- adds r0, r3, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080810CC
- bl Random
- lsls r0, 16
- lsrs r0, 16
- ldr r1, =0x0000028f
- bl __udivsi3
- lsls r0, 24
- lsrs r2, r0, 24
- adds r3, r2, 0
- ldr r0, [r6]
- adds r0, 0x4C
- movs r6, 0
- ldrsh r1, [r0, r6]
- ldr r0, =0x000001f3
- cmp r1, r0
- bgt _08081088
- cmp r2, 0x42
- bls _08081078
- ldr r1, =gUnknown_03003090
- ldr r0, =0x00004523
- strh r0, [r1, 0x24]
- b _080810B0
- .pool
-_08081078:
- ldr r1, =gUnknown_03003090
- ldr r0, =0x00005432
- strh r0, [r1, 0x24]
- b _080810B0
- .pool
-_08081088:
- cmp r2, 0x41
- bls _08081092
- ldr r1, =gUnknown_03003090
- ldr r0, =0x00004523
- strh r0, [r1, 0x24]
-_08081092:
- adds r0, r2, 0
- subs r0, 0x29
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x18
- bhi _080810A4
- ldr r1, =gUnknown_03003090
- ldr r0, =0x00005432
- strh r0, [r1, 0x24]
-_080810A4:
- cmp r3, 0x9
- bhi _080810B0
- movs r0, 0x2
- movs r1, 0x5
- bl sub_8080E6C
-_080810B0:
- ldr r0, =gTasks
- adds r1, r5, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0x1
- b _080810EC
- .pool
-_080810CC:
- ldr r0, =gUnknown_03003090
- ldr r1, =0x00004523
- strh r1, [r0, 0x24]
- movs r0, 0x1
- strh r0, [r2, 0x8]
- b _080810EE
- .pool
-_080810E0:
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0
-_080810EC:
- strh r0, [r1, 0x8]
-_080810EE:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8080FD0
-
- thumb_func_start sub_80810F8
-sub_80810F8: @ 80810F8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r5, =gUnknown_020322A4
- ldr r3, [r5]
- adds r0, r3, 0
- adds r0, 0x4A
- ldrh r0, [r0]
- movs r1, 0xC0
- lsls r1, 5
- adds r0, r1
- ldr r1, =0x0000ffff
- ands r0, r1
- adds r1, r3, 0
- adds r1, 0x9C
- ldrb r1, [r1]
- lsrs r2, r0, 8
- ldr r0, =gUnknown_083399E7
- adds r1, r0
- ldrb r1, [r1]
- adds r0, r1, 0
- adds r0, 0x14
- cmp r2, r0
- bls _0808120C
- adds r0, 0x14
- cmp r2, r0
- bcs _0808120C
- ldr r2, =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 _0808121A
- ldr r1, =0x00000123
- adds r0, r3, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080811F8
- bl Random
- lsls r0, 16
- lsrs r0, 16
- ldr r1, =0x0000028f
- bl __udivsi3
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, [r5]
- adds r0, 0x4C
- movs r3, 0
- ldrsh r1, [r0, r3]
- ldr r0, =0x000001f3
- cmp r1, r0
- bgt _080811AC
- cmp r2, 0x58
- bls _0808119C
- ldr r1, =gUnknown_03003090
- ldr r0, =0x00004523
- strh r0, [r1, 0x34]
- b _080811DE
- .pool
-_0808119C:
- ldr r1, =gUnknown_03003090
- ldr r0, =0x00005432
- strh r0, [r1, 0x34]
- b _080811DE
- .pool
-_080811AC:
- cmp r2, 0x3C
- bls _080811C0
- ldr r1, =gUnknown_03003090
- ldr r0, =0x00004523
- b _080811D0
- .pool
-_080811C0:
- adds r0, r2, 0
- subs r0, 0x38
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080811D2
- ldr r1, =gUnknown_03003090
- ldr r0, =0x00005432
-_080811D0:
- strh r0, [r1, 0x34]
-_080811D2:
- cmp r2, 0x4
- bhi _080811DE
- movs r0, 0x3
- movs r1, 0x5
- bl sub_8080E6C
-_080811DE:
- ldr r0, =gTasks
- adds r1, r6, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0x1
- b _08081218
- .pool
-_080811F8:
- ldr r0, =gUnknown_03003090
- ldr r1, =0x00004523
- strh r1, [r0, 0x34]
- movs r0, 0x1
- strh r0, [r2, 0x8]
- b _0808121A
- .pool
-_0808120C:
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0
-_08081218:
- strh r0, [r1, 0x8]
-_0808121A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80810F8
-
- thumb_func_start sub_8081224
-sub_8081224: @ 8081224
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gUnknown_020322A4
- ldr r0, [r0]
- adds r0, 0x4A
- ldrh r0, [r0]
- movs r1, 0x1
- bl task_tutorial_oak_boy_girl
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _08081270
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r2, r1, r0
- movs r1, 0x8
- ldrsh r0, [r2, r1]
- cmp r0, 0
- bne _0808127E
- ldr r0, =gUnknown_03003090
- ldr r1, =0x00004523
- strh r1, [r0, 0x14]
- movs r0, 0x1
- strh r0, [r2, 0x8]
- b _0808127E
- .pool
-_08081270:
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0
- strh r0, [r1, 0x8]
-_0808127E:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8081224
-
- thumb_func_start sub_8081288
-sub_8081288: @ 8081288
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 16
- lsrs r7, r0, 16
- mov r8, r7
- lsls r1, 24
- ldr r0, =gUnknown_08339B40
- ldr r4, =sBlenderSyncArrowsPos
- lsrs r1, 23
- adds r2, r1, r4
- ldrb r6, [r2]
- ldr r5, =gUnknown_083399C0
- 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, =0x00004523
- cmp r7, r0
- bne _08081314
- lsls r4, r1, 4
- adds r4, r1
- lsls r4, 2
- ldr r5, =gSprites
- adds r0, r4, r5
- movs r1, 0x2
- bl StartSpriteAnim
- adds r5, 0x1C
- adds r4, r5
- ldr r0, =sub_8082F9C
- str r0, [r4]
- movs r0, 0x28
- bl PlaySE
- b _08081358
- .pool
-_08081314:
- ldr r0, =0x00005432
- cmp r7, r0
- bne _0808133C
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- movs r1, 0
- bl StartSpriteAnim
- movs r0, 0x1F
- bl PlaySE
- b _08081358
- .pool
-_0808133C:
- ldr r0, =0x00002345
- cmp r8, r0
- bne _08081358
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- movs r1, 0x1
- bl StartSpriteAnim
- movs r0, 0x20
- bl PlaySE
-_08081358:
- bl sub_8082E84
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8081288
-
- thumb_func_start sub_8081370
-sub_8081370: @ 8081370
- push {r4-r7,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- adds r5, r4, 0
- bl sub_807F738
- ldr r0, =0x00004523
- cmp r4, r0
- beq _080813A4
- cmp r4, r0
- bgt _08081398
- ldr r0, =0x00002345
- cmp r4, r0
- beq _08081474
- b _080814A0
- .pool
-_08081398:
- ldr r0, =0x00005432
- cmp r5, r0
- beq _0808143C
- b _080814A0
- .pool
-_080813A4:
- ldr r7, =gUnknown_020322A4
- ldr r4, [r7]
- adds r5, r4, 0
- adds r5, 0x4C
- ldrh r6, [r5]
- movs r0, 0
- ldrsh r1, [r5, r0]
- ldr r0, =0x000005db
- cmp r1, r0
- bgt _080813E0
- ldr r1, =gUnknown_08339CC3
- adds r0, r4, 0
- adds r0, 0x7C
- 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 _080814A0
- .pool
-_080813E0:
- ldr r1, =gUnknown_08339CC3
- adds r0, r4, 0
- adds r0, 0x7C
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x80
- bl __divsi3
- adds r0, r6, r0
- strh r0, [r5]
- movs r1, 0x8E
- 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_80832BC
- ldr r0, [r7]
- movs r1, 0x8F
- lsls r1, 1
- adds r4, r0, r1
- adds r0, 0x4C
- 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_80832BC
- b _080814A0
- .pool
-_0808143C:
- ldr r0, =gUnknown_020322A4
- ldr r2, [r0]
- adds r4, r2, 0
- adds r4, 0x4C
- ldrh r5, [r4]
- movs r0, 0
- ldrsh r1, [r4, r0]
- ldr r0, =0x000005db
- cmp r1, r0
- bgt _080814A0
- ldr r1, =gUnknown_08339CC3
- adds r0, r2, 0
- adds r0, 0x7C
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x80
- lsls r0, 1
- bl __divsi3
- adds r0, r5, r0
- b _0808149E
- .pool
-_08081474:
- ldr r0, =gUnknown_020322A4
- ldr r0, [r0]
- adds r4, r0, 0
- adds r4, 0x4C
- ldr r1, =gUnknown_08339CC3
- adds r0, 0x7C
- 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 _080814A0
- movs r0, 0x80
-_0808149E:
- strh r0, [r4]
-_080814A0:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8081370
-
- thumb_func_start sub_80814B0
-sub_80814B0: @ 80814B0
- push {lr}
- lsls r0, 16
- lsrs r3, r0, 16
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 16
- lsrs r2, 16
- ldr r0, =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _080814E4
- ldr r0, =gLinkVSyncDisabled
- ldrb r0, [r0]
- cmp r0, 0
- beq _080814E4
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r3
- cmp r0, r2
- bne _080814EC
- movs r0, 0x1
- b _080814EE
- .pool
-_080814E4:
- cmp r3, r1
- bne _080814EC
- movs r0, 0x1
- b _080814EE
-_080814EC:
- movs r0, 0
-_080814EE:
- pop {r1}
- bx r1
- thumb_func_end sub_80814B0
-
- thumb_func_start sub_80814F4
-sub_80814F4: @ 80814F4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- ldr r0, =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0
- beq _0808153C
- ldr r3, =gUnknown_03003110
- ldrh r0, [r3, 0x4]
- ldr r2, =gUnknown_03003090
- cmp r0, 0
- beq _0808151C
- movs r1, 0
- strh r0, [r2, 0x4]
- ldr r0, =0x00004444
- strh r0, [r2]
- strh r1, [r3, 0x4]
-_0808151C:
- ldr r0, =gUnknown_03003090
- ldr r3, =0x00004444
- adds r1, r2, 0
- adds r1, 0x10
- adds r2, r0, 0
- adds r2, 0x14
- movs r7, 0x2
-_0808152A:
- ldrh r0, [r2]
- cmp r0, 0
- beq _08081532
- strh r3, [r1]
-_08081532:
- adds r1, 0x10
- adds r2, 0x10
- subs r7, 0x1
- cmp r7, 0
- bge _0808152A
-_0808153C:
- movs r7, 0
- ldr r1, =gUnknown_020322A4
- ldr r0, [r1]
- adds r0, 0x7C
- ldrb r0, [r0]
- cmp r7, r0
- blt _0808154C
- b _080816F6
-_0808154C:
- ldr r0, =gUnknown_03003090
- adds r2, r0, 0
- adds r2, 0x20
- str r2, [sp]
- movs r1, 0
- mov r9, r1
- movs r2, 0
- str r2, [sp, 0x4]
- mov r8, r0
- ldr r0, =0x00005432
- mov r10, r0
-_08081562:
- mov r1, r8
- ldrh r0, [r1]
- ldr r1, =0x00004444
- movs r2, 0x88
- lsls r2, 7
- bl sub_80814B0
- cmp r0, 0
- bne _08081576
- b _080816D2
-_08081576:
- ldr r6, =gUnknown_020322A4
- ldr r0, [r6]
- adds r0, 0x96
- ldr r2, [sp, 0x4]
- adds r0, r2
- ldrh r5, [r0]
- mov r0, r8
- ldrh r4, [r0, 0x4]
- ldr r1, =0x00004523
- cmp r4, r1
- bne _080815F4
- adds r0, r1, 0
- bl sub_8081370
- ldr r0, [r6]
- movs r2, 0x8B
- lsls r2, 1
- adds r4, r0, r2
- adds r0, 0x4C
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r1, 0x37
- bl __divsi3
- ldrh r1, [r4]
- adds r1, r0
- strh r1, [r4]
- lsls r1, 16
- ldr r0, =0x03e70000
- cmp r1, r0
- bls _080815BA
- movs r0, 0xFA
- lsls r0, 2
- strh r0, [r4]
-_080815BA:
- lsls r1, r5, 24
- lsrs r1, 24
- ldr r0, =0x00004523
- bl sub_8081288
- ldr r1, [r6]
- movs r2, 0x92
- lsls r2, 1
- adds r1, r2
- add r1, r9
- ldrh r0, [r1]
- adds r0, 0x1
- b _0808165E
- .pool
-_080815F4:
- cmp r4, r10
- bne _08081632
- mov r0, r10
- bl sub_8081370
- ldr r0, [r6]
- movs r1, 0x8B
- lsls r1, 1
- adds r4, r0, r1
- adds r0, 0x4C
- 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_8081288
- ldr r1, [r6]
- movs r0, 0x93
- lsls r0, 1
- adds r1, r0
- add r1, r9
- ldrh r0, [r1]
- adds r0, 0x1
- b _0808165E
-_08081632:
- ldr r0, =0x00002345
- cmp r4, r0
- bne _0808166A
- lsls r1, r5, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_8081288
- adds r0, r4, 0
- bl sub_8081370
- ldr r0, [r6]
- movs r1, 0x94
- lsls r1, 1
- adds r0, r1
- mov r2, r9
- adds r1, r0, r2
- ldrh r2, [r1]
- ldr r0, =0x000003e6
- cmp r2, r0
- bhi _08081660
- adds r0, r2, 0x1
-_0808165E:
- strh r0, [r1]
-_08081660:
- mov r0, r8
- ldrh r1, [r0, 0x4]
- ldr r0, =0x00002345
- cmp r1, r0
- beq _08081678
-_0808166A:
- ldr r1, [sp]
- ldrh r0, [r1]
- ldr r2, =0x00004523
- cmp r0, r2
- beq _08081678
- cmp r0, r10
- bne _080816D2
-_08081678:
- ldr r0, =gUnknown_020322A4
- ldr r0, [r0]
- adds r2, r0, 0
- adds r2, 0x4C
- movs r0, 0
- ldrsh r1, [r2, r0]
- ldr r0, =0x000005dc
- cmp r1, r0
- ble _080816C8
- adds r0, r1, 0
- ldr r2, =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, =gMPlay_BGM
- bl m4aMPlayTempoControl
- b _080816D2
- .pool
-_080816C8:
- ldr r0, =gMPlay_BGM
- movs r1, 0x80
- lsls r1, 1
- bl m4aMPlayTempoControl
-_080816D2:
- ldr r1, [sp]
- adds r1, 0x2
- str r1, [sp]
- movs r2, 0x6
- add r9, r2
- ldr r0, [sp, 0x4]
- adds r0, 0x2
- str r0, [sp, 0x4]
- movs r1, 0x10
- add r8, r1
- adds r7, 0x1
- ldr r0, =gUnknown_020322A4
- ldr r0, [r0]
- adds r0, 0x7C
- ldrb r0, [r0]
- cmp r7, r0
- bge _080816F6
- b _08081562
-_080816F6:
- ldr r0, =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0
- beq _08081722
- movs r7, 0
- ldr r3, =gUnknown_020322A4
- ldr r0, [r3]
- adds r0, 0x7C
- ldrb r0, [r0]
- cmp r7, r0
- bge _08081722
- movs r2, 0
- ldr r1, =gUnknown_03003090
-_08081710:
- strh r2, [r1]
- strh r2, [r1, 0x4]
- adds r1, 0x10
- adds r7, 0x1
- ldr r0, [r3]
- adds r0, 0x7C
- ldrb r0, [r0]
- cmp r7, r0
- blt _08081710
-_08081722:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80814F4
-
- thumb_func_start sub_8081744
-sub_8081744: @ 8081744
- push {r4-r6,lr}
- movs r4, 0
- movs r6, 0
- ldr r0, =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _0808175A
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r6, r0, 24
-_0808175A:
- ldr r3, =gUnknown_020322A4
- ldr r1, [r3]
- lsls r2, r6, 1
- adds r0, r1, 0
- adds r0, 0x96
- adds r0, r2
- ldrb r5, [r0]
- adds r1, 0x63
- ldrb r0, [r1]
- cmp r0, 0
- bne _0808182C
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x13]
- cmp r0, 0x2
- bne _080817A8
- ldr r2, =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080817B6
- ldrh r2, [r2, 0x28]
- ldr r1, =0x00000201
- adds r0, r1, 0
- ands r0, r2
- cmp r0, r1
- beq _080817B6
- b _080817BA
- .pool
-_080817A8:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080817B6
- movs r4, 0x1
-_080817B6:
- cmp r4, 0
- beq _0808182C
-_080817BA:
- ldr r4, =gUnknown_020322A4
- ldr r1, [r4]
- lsls r2, r5, 1
- adds r0, r1, 0
- adds r0, 0x8E
- adds r0, r2
- adds r1, 0x50
- ldrh r0, [r0]
- adds r1, r0
- ldrb r1, [r1]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- adds r1, r5, 0x4
- lsls r1, 24
- lsrs r1, 24
- bl StartSpriteAnim
- ldr r0, [r4]
- adds r0, 0x4A
- ldrh r0, [r0]
- adds r1, r6, 0
- bl task_tutorial_oak_boy_girl
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _08081810
- ldr r1, =gUnknown_03003110
- ldr r0, =0x00004523
- b _08081828
- .pool
-_08081810:
- cmp r0, 0x1
- bne _08081824
- ldr r1, =gUnknown_03003110
- ldr r0, =0x00005432
- b _08081828
- .pool
-_08081824:
- ldr r1, =gUnknown_03003110
- ldr r0, =0x00002345
-_08081828:
- strh r0, [r1, 0x4]
- adds r3, r4, 0
-_0808182C:
- ldr r1, [r3]
- adds r1, 0x72
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- bls _0808185A
- ldr r0, [r3]
- adds r1, r0, 0
- adds r1, 0x4C
- ldrh r2, [r1]
- movs r4, 0
- ldrsh r0, [r1, r4]
- cmp r0, 0x80
- ble _08081852
- subs r0, r2, 0x1
- strh r0, [r1]
-_08081852:
- ldr r0, [r3]
- adds r0, 0x72
- movs r1, 0
- strb r1, [r0]
-_0808185A:
- ldr r0, =gUnknown_020322D5
- ldrb r0, [r0]
- cmp r0, 0
- beq _0808187E
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- lsls r0, 2
- ands r0, r1
- cmp r0, 0
- beq _0808187E
- ldr r0, [r3]
- ldr r1, =0x00000123
- adds r2, r0, r1
- ldrb r0, [r2]
- movs r1, 0x1
- eors r0, r1
- strb r0, [r2]
-_0808187E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8081744
-
- thumb_func_start sub_8081898
-sub_8081898: @ 8081898
- push {r4-r6,lr}
- bl sub_8082D28
- ldr r4, =gUnknown_020322A4
- ldr r0, [r4]
- movs r1, 0x82
- lsls r1, 1
- adds r2, r0, r1
- ldr r1, [r2]
- ldr r0, =0x00057e03
- cmp r1, r0
- bhi _080818B4
- adds r0, r1, 0x1
- str r0, [r2]
-_080818B4:
- bl sub_8081744
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x4C
- ldrh r0, [r0]
- movs r5, 0x8B
- lsls r5, 1
- adds r1, r5
- ldrh r1, [r1]
- bl sub_800A994
- bl sub_80814F4
- ldr r0, [r4]
- adds r0, r5
- ldrh r0, [r0]
- movs r6, 0xFA
- lsls r6, 2
- adds r1, r6, 0
- bl sub_8083140
- ldr r0, [r4]
- adds r0, 0x4C
- ldrh r0, [r0]
- bl sub_8083230
- bl sub_808330C
- bl sub_8082AD4
- ldr r2, [r4]
- adds r3, r2, 0
- adds r3, 0x63
- ldrb r0, [r3]
- cmp r0, 0
- bne _0808191A
- movs r1, 0x8C
- lsls r1, 1
- adds r0, r2, r1
- ldrh r1, [r0]
- ldr r0, =0x000003e7
- cmp r1, r0
- bls _0808191A
- adds r0, r2, r5
- strh r6, [r0]
- movs r0, 0x1
- strb r0, [r3]
- ldr r0, =sub_8081FC8
- bl SetMainCallback2
-_0808191A:
- ldr r0, =gUnknown_020322A4
- ldr r1, [r0]
- movs r2, 0x8E
- lsls r2, 1
- adds r0, r1, r2
- movs r2, 0
- ldrsh r0, [r0, r2]
- movs r2, 0x8F
- lsls r2, 1
- adds r1, r2
- movs r2, 0
- ldrsh r1, [r1, r2]
- bl nullsub_31
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl RunTextPrinters
- bl UpdatePaletteFade
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8081898
-
- thumb_func_start nullsub_31
-nullsub_31: @ 8081960
- bx lr
- thumb_func_end nullsub_31
-
- thumb_func_start help_system_is_not_first_time
-help_system_is_not_first_time: @ 8081964
- 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 _080819A2
- adds r0, r4, 0x2
- adds r1, r5, 0x2
- bl StringCompare
- cmp r0, 0
- bne _080819B0
- ldr r0, [r4, 0x8]
- ldr r2, =0xffffff00
- ands r0, r2
- ldr r1, [r5, 0x8]
- ands r1, r2
- cmp r0, r1
- bne _080819B0
- ldr r0, [r4, 0xC]
- ldr r2, =0x00ffffff
- ands r0, r2
- ldr r1, [r5, 0xC]
- ands r1, r2
- cmp r0, r1
- bne _080819B0
-_080819A2:
- movs r0, 0x1
- b _080819B2
- .pool
-_080819B0:
- movs r0, 0
-_080819B2:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end help_system_is_not_first_time
-
- thumb_func_start sub_80819B8
-sub_80819B8: @ 80819B8
- 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
-_080819D4:
- ldrh r0, [r1]
- strh r0, [r2]
- adds r1, 0x2
- adds r2, 0x2
- subs r4, 0x1
- cmp r4, 0
- bge _080819D4
- movs r6, 0
- mov r1, sp
- movs r4, 0x4
-_080819E8:
- movs r2, 0
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _080819F2
- adds r6, 0x1
-_080819F2:
- adds r1, 0x2
- subs r4, 0x1
- cmp r4, 0
- bge _080819E8
- cmp r6, 0x5
- beq _08081A46
- cmp r3, 0x3
- bhi _08081A46
- movs r4, 0
- ldr r3, [sp, 0x10]
- cmp r4, r3
- bge _08081A5E
- mov r3, r10
-_08081A0C:
- movs r6, 0
- ldr r7, [sp, 0x10]
- cmp r6, r7
- bge _08081A54
- mov r9, r3
- mov r5, r10
- lsls r0, r4, 24
- mov r8, r0
-_08081A1C:
- mov r1, r9
- ldrh r0, [r1]
- ldrh r2, [r5]
- cmp r0, r2
- bne _08081A4A
- cmp r4, r6
- beq _08081A4A
- cmp r0, 0xAF
- bne _08081A46
- 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 _08081A4A
-_08081A46:
- movs r0, 0xC
- b _08081B9E
-_08081A4A:
- adds r5, 0x10
- adds r6, 0x1
- ldr r0, [sp, 0x10]
- cmp r6, r0
- blt _08081A1C
-_08081A54:
- adds r3, 0x10
- adds r4, 0x1
- ldr r1, [sp, 0x10]
- cmp r4, r1
- blt _08081A0C
-_08081A5E:
- movs r2, 0
- mov r1, sp
- movs r4, 0x4
-_08081A64:
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0
- ble _08081A72
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
-_08081A72:
- adds r1, 0x2
- subs r4, 0x1
- cmp r4, 0
- bge _08081A64
- cmp r2, 0x3
- bls _08081A82
- movs r0, 0xD
- b _08081B9E
-_08081A82:
- cmp r2, 0x3
- bne _08081A8A
- movs r0, 0xB
- b _08081B9E
-_08081A8A:
- movs r4, 0
- mov r1, sp
-_08081A8E:
- movs r7, 0
- ldrsh r0, [r1, r7]
- cmp r0, 0x32
- ble _08081A98
- b _08081B98
-_08081A98:
- adds r1, 0x2
- adds r4, 0x1
- cmp r4, 0x4
- ble _08081A8E
- cmp r2, 0x1
- bne _08081AEA
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- ble _08081AB2
- movs r0, 0x1
- b _08081B9E
-_08081AB2:
- mov r0, sp
- ldrh r0, [r0, 0x2]
- lsls r0, 16
- cmp r0, 0
- ble _08081AC0
- movs r0, 0x2
- b _08081B9E
-_08081AC0:
- mov r0, sp
- movs r3, 0x4
- ldrsh r0, [r0, r3]
- cmp r0, 0
- ble _08081ACE
- movs r0, 0x3
- b _08081B9E
-_08081ACE:
- mov r0, sp
- movs r4, 0x6
- ldrsh r0, [r0, r4]
- cmp r0, 0
- ble _08081ADC
- movs r0, 0x4
- b _08081B9E
-_08081ADC:
- mov r0, sp
- movs r7, 0x8
- ldrsh r0, [r0, r7]
- cmp r0, 0
- ble _08081AEA
- movs r0, 0x5
- b _08081B9E
-_08081AEA:
- cmp r2, 0x2
- bne _08081B9C
- movs r4, 0
- ldr r5, =gUnknown_03000DF8
- mov r1, sp
- adds r2, r5, 0
-_08081AF6:
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0
- ble _08081B02
- strh r4, [r2]
- adds r2, 0x2
-_08081B02:
- adds r1, 0x2
- adds r4, 0x1
- cmp r4, 0x4
- ble _08081AF6
- 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 _08081B58
- adds r0, r3, 0
- cmp r0, 0
- bne _08081B38
- lsls r0, r2, 16
- b _08081B62
- .pool
-_08081B38:
- cmp r0, 0x1
- bne _08081B40
- lsls r0, r2, 16
- b _08081B6E
-_08081B40:
- cmp r0, 0x2
- bne _08081B48
- lsls r0, r2, 16
- b _08081B7A
-_08081B48:
- cmp r0, 0x3
- bne _08081B50
- lsls r0, r2, 16
- b _08081B86
-_08081B50:
- cmp r0, 0x4
- bne _08081B9C
- lsls r0, r2, 16
- b _08081B92
-_08081B58:
- movs r2, 0x2
- ldrsh r0, [r5, r2]
- cmp r0, 0
- bne _08081B68
- lsls r0, r3, 16
-_08081B62:
- movs r1, 0x6
- orrs r0, r1
- b _08081B9E
-_08081B68:
- cmp r0, 0x1
- bne _08081B74
- lsls r0, r3, 16
-_08081B6E:
- movs r1, 0x7
- orrs r0, r1
- b _08081B9E
-_08081B74:
- cmp r0, 0x2
- bne _08081B80
- lsls r0, r3, 16
-_08081B7A:
- movs r1, 0x8
- orrs r0, r1
- b _08081B9E
-_08081B80:
- cmp r0, 0x3
- bne _08081B8C
- lsls r0, r3, 16
-_08081B86:
- movs r1, 0x9
- orrs r0, r1
- b _08081B9E
-_08081B8C:
- cmp r0, 0x4
- bne _08081B9C
- lsls r0, r3, 16
-_08081B92:
- movs r1, 0xA
- orrs r0, r1
- b _08081B9E
-_08081B98:
- movs r0, 0xE
- b _08081B9E
-_08081B9C:
- movs r0, 0
-_08081B9E:
- 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_80819B8
-
- thumb_func_start sub_8081BB0
-sub_8081BB0: @ 8081BB0
- ldr r1, =gUnknown_03000E04
- strh r0, [r1]
- bx lr
- .pool
- thumb_func_end sub_8081BB0
-
- thumb_func_start sub_8081BBC
-sub_8081BBC: @ 8081BBC
- ldr r0, =gUnknown_03000E04
- movs r1, 0
- ldrsh r0, [r0, r1]
- bx lr
- .pool
- thumb_func_end sub_8081BBC
-
- thumb_func_start sub_8081BC8
-sub_8081BC8: @ 8081BC8
- ldr r1, =gUnknown_03000E06
- strh r0, [r1]
- bx lr
- .pool
- thumb_func_end sub_8081BC8
-
- thumb_func_start sub_8081BD4
-sub_8081BD4: @ 8081BD4
- ldr r0, =gUnknown_03000E06
- movs r1, 0
- ldrsh r0, [r0, r1]
- bx lr
- .pool
- thumb_func_end sub_8081BD4
-
- thumb_func_start sub_8081BE0
-sub_8081BE0: @ 8081BE0
- 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, =gUnknown_03000DE8
- adds r2, r7, 0
- movs r1, 0
- adds r0, r7, 0
- adds r0, 0xA
-_08081C0A:
- strh r1, [r0]
- subs r0, 0x2
- cmp r0, r2
- bge _08081C0A
- movs r6, 0
- cmp r6, r9
- bge _08081C40
- ldr r0, =gUnknown_03000DE8
- mov r12, r0
- ldr r5, [sp]
- adds r5, 0x9
-_08081C20:
- movs r3, 0
- adds r4, r5, 0
- mov r2, r12
-_08081C26:
- 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 _08081C26
- adds r5, 0x10
- adds r6, 0x1
- cmp r6, r9
- blt _08081C20
-_08081C40:
- 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
-_08081C6A:
- movs r4, 0
- ldrsh r0, [r1, r4]
- cmp r0, 0
- bge _08081C76
- strh r2, [r1]
- adds r3, 0x1
-_08081C76:
- adds r1, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _08081C6A
- lsls r0, r3, 24
- lsrs r0, 24
- mov r10, r0
- movs r4, 0
- ldr r1, =gUnknown_03000DE8
- movs r6, 0x4
-_08081C8A:
- ldrh r2, [r1]
- movs r5, 0
- ldrsh r0, [r1, r5]
- cmp r0, 0
- ble _08081CA4
- cmp r0, r3
- bge _08081CA0
- strh r4, [r1]
- b _08081CA4
- .pool
-_08081CA0:
- subs r0, r2, r3
- strh r0, [r1]
-_08081CA4:
- adds r1, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _08081C8A
- ldr r1, =gUnknown_03000DE8
- ldr r2, =gUnknown_020322A8
- movs r6, 0x4
-_08081CB2:
- movs r3, 0
- ldrsh r0, [r1, r3]
- stm r2!, {r0}
- adds r1, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _08081CB2
- ldr r1, =0x0000014d
- ldr r0, [sp, 0x8]
- bl __udivsi3
- lsls r0, 16
- lsrs r0, 16
- adds r3, r0, 0
- adds r3, 0x64
- ldr r4, =gUnknown_020322D0
- str r3, [r4]
- movs r6, 0x4
-_08081CD6:
- 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 _08081D02
- adds r5, 0x1
-_08081D02:
- strh r5, [r7]
- adds r7, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _08081CD6
- ldr r1, =gUnknown_03000DE8
- ldr r2, =gUnknown_020322BC
- movs r6, 0x4
-_08081D12:
- movs r3, 0
- ldrsh r0, [r1, r3]
- stm r2!, {r0}
- adds r1, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _08081D12
- ldr r4, =gUnknown_03000DE8
- ldr r0, [sp]
- adds r1, r4, 0
- mov r2, r9
- mov r3, r10
- bl sub_80819B8
- 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 _08081D4C
- movs r0, 0
- strh r0, [r4, 0xA]
-_08081D4C:
- mov r5, r8
- ldrb r0, [r5]
- cmp r0, 0xC
- bne _08081DA6
- 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, =gUnknown_08339CC8
- adds r0, r3, r0
- ldrb r0, [r0]
- adds r1, r4, 0
- movs r4, 0x1
- movs r3, 0x2
-_08081D74:
- adds r2, r0, 0
- asrs r2, r6
- ands r2, r4
- cmp r2, 0
- beq _08081D9C
- strh r3, [r1]
- b _08081D9E
- .pool
-_08081D9C:
- strh r2, [r1]
-_08081D9E:
- adds r1, 0x2
- adds r6, 0x1
- cmp r6, 0x4
- ble _08081D74
-_08081DA6:
- ldr r7, =gUnknown_03000DE8
- movs r2, 0xFF
- adds r1, r7, 0
- movs r6, 0x5
-_08081DAE:
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0xFF
- ble _08081DB8
- strh r2, [r1]
-_08081DB8:
- adds r1, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _08081DAE
- 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
-_08081DDE:
- ldr r5, [sp, 0x4]
- adds r1, r5, r6
- ldrh r0, [r2]
- strb r0, [r1]
- adds r2, 0x2
- adds r6, 0x1
- cmp r6, 0x5
- ble _08081DDE
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8081BE0
-
- thumb_func_start sub_8081E04
-sub_8081E04: @ 8081E04
- 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_8081BE0
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8081E04
-
- thumb_func_start sub_8081E20
-sub_8081E20: @ 8081E20
- push {r4-r6,lr}
- ldr r0, =gUnknown_020322A4
- ldr r0, [r0]
- movs r2, 0x82
- lsls r2, 1
- adds r1, r0, r2
- ldrh r1, [r1]
- adds r0, 0x4E
- ldrh r4, [r0]
- movs r2, 0
- ldr r5, =0x00000383
- cmp r1, r5
- bhi _08081E48
- movs r2, 0x5
- b _08081E9A
- .pool
-_08081E48:
- ldr r3, =0xfffffc7c
- adds r0, r1, r3
- lsls r0, 16
- lsrs r0, 16
- ldr r3, =0x00000257
- cmp r0, r3
- bhi _08081E64
- movs r2, 0x4
- b _08081E9A
- .pool
-_08081E64:
- ldr r6, =0xfffffa24
- adds r0, r1, r6
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r3
- bhi _08081E78
- movs r2, 0x3
- b _08081E9A
- .pool
-_08081E78:
- ldr r3, =0xfffff7cc
- adds r0, r1, r3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r5
- bhi _08081E8C
- movs r2, 0x2
- b _08081E9A
- .pool
-_08081E8C:
- ldr r6, =0xfffff31c
- adds r0, r1, r6
- lsls r0, 16
- ldr r1, =0x012b0000
- cmp r0, r1
- bhi _08081E9A
- movs r2, 0x1
-_08081E9A:
- lsls r0, r2, 16
- asrs r0, 16
- bl sub_8081BC8
- movs r2, 0
- cmp r4, 0x40
- bhi _08081F7C
- adds r0, r4, 0
- subs r0, 0x32
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _08081EC4
- ldr r2, =0x0000ffff
- b _08081F7C
- .pool
-_08081EC4:
- adds r0, r4, 0
- subs r0, 0x64
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _08081ED8
- ldr r2, =0x0000fffe
- b _08081F7C
- .pool
-_08081ED8:
- adds r0, r4, 0
- subs r0, 0x96
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _08081EEC
- ldr r2, =0x0000fffd
- b _08081F7C
- .pool
-_08081EEC:
- adds r0, r4, 0
- subs r0, 0xC8
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _08081F00
- ldr r2, =0x0000fffc
- b _08081F7C
- .pool
-_08081F00:
- adds r0, r4, 0
- subs r0, 0xFA
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _08081F14
- ldr r2, =0x0000fffb
- b _08081F7C
- .pool
-_08081F14:
- ldr r1, =0xfffffea2
- adds r0, r4, r1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _08081F2C
- ldr r2, =0x0000fffa
- b _08081F7C
- .pool
-_08081F2C:
- ldr r3, =0xfffffe70
- adds r0, r4, r3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _08081F44
- ldr r2, =0x0000fff9
- b _08081F7C
- .pool
-_08081F44:
- ldr r6, =0xfffffe0c
- adds r0, r4, r6
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _08081F5C
- ldr r2, =0x0000fff8
- b _08081F7C
- .pool
-_08081F5C:
- ldr r1, =0xfffffdda
- adds r0, r4, r1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _08081F74
- ldr r2, =0x0000fff7
- b _08081F7C
- .pool
-_08081F74:
- ldr r0, =0x00000257
- cmp r4, r0
- bls _08081F7C
- ldr r2, =0x0000fff6
-_08081F7C:
- lsls r0, r2, 16
- asrs r0, 16
- bl sub_8081BB0
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8081E20
-
- thumb_func_start sub_8081F94
-sub_8081F94: @ 8081F94
- push {lr}
- adds r1, r0, 0
- ldr r0, =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _08081FB8
- ldr r0, =gLinkVSyncDisabled
- ldrb r0, [r0]
- cmp r0, 0
- beq _08081FB8
- movs r2, 0xBC
- lsls r2, 6
- b _08081FBA
- .pool
-_08081FB8:
- ldr r2, =0x00002fff
-_08081FBA:
- adds r0, r2, 0
- strh r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8081F94
-
- thumb_func_start sub_8081FC8
-sub_8081FC8: @ 8081FC8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r4, =gUnknown_020322A4
- ldr r0, [r4]
- adds r0, 0x63
- ldrb r0, [r0]
- cmp r0, 0x2
- bhi _08081FDE
- bl sub_8082D28
-_08081FDE:
- bl GetMultiplayerId
- ldr r0, [r4]
- adds r0, 0x63
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r0, 0xC
- bls _08081FF0
- b _0808249E
-_08081FF0:
- lsls r0, 2
- ldr r1, =_08082004
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08082004:
- .4byte _08082038
- .4byte _08082078
- .4byte _080820D4
- .4byte _080821C8
- .4byte _08082278
- .4byte _08082286
- .4byte _080822B0
- .4byte _08082458
- .4byte _080822E4
- .4byte _08082308
- .4byte _080823B0
- .4byte _08082430
- .4byte _0808246C
-_08082038:
- ldr r0, =gMPlay_BGM
- movs r1, 0x80
- lsls r1, 1
- bl m4aMPlayTempoControl
- movs r4, 0
- b _08082064
- .pool
-_0808204C:
- ldr r0, =gUnknown_020322A4
- ldr r0, [r0]
- movs r1, 0x90
- 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
-_08082064:
- ldr r0, =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r4, r0
- bcc _0808204C
- b _08082458
- .pool
-_08082078:
- ldr r4, =gUnknown_020322A4
- ldr r1, [r4]
- adds r1, 0x4C
- ldrh r0, [r1]
- subs r0, 0x20
- strh r0, [r1]
- lsls r0, 16
- cmp r0, 0
- bgt _080820C6
- bl sub_8009F8C
- ldr r2, [r4]
- adds r1, r2, 0
- adds r1, 0x4C
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _080820B0
- adds r1, 0x17
- ldrb r0, [r1]
- adds r0, 0x1
- b _080820B6
- .pool
-_080820B0:
- adds r1, r2, 0
- adds r1, 0x63
- movs r0, 0x5
-_080820B6:
- strb r0, [r1]
- ldr r0, =gUnknown_020322A4
- ldr r1, [r0]
- movs r0, 0
- strb r0, [r1]
- ldr r0, =gMPlay_SE2
- bl m4aMPlayStop
-_080820C6:
- bl sub_807F738
- b _0808249E
- .pool
-_080820D4:
- bl GetMultiplayerId
- lsls r0, 24
- cmp r0, 0
- beq _080820E0
- b _08082458
-_080820E0:
- bl sub_800A520
- lsls r0, 24
- cmp r0, 0
- bne _080820EC
- b _0808249E
-_080820EC:
- ldr r0, =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _0808218C
- ldr r0, =gLinkVSyncDisabled
- ldrb r0, [r0]
- cmp r0, 0
- beq _0808218C
- ldr r3, =gUnknown_020322A4
- ldr r1, [r3]
- movs r4, 0x8E
- lsls r4, 5
- adds r2, r1, r4
- movs r5, 0x82
- lsls r5, 1
- adds r0, r1, r5
- ldr r0, [r0]
- str r0, [r2]
- adds r0, r1, 0
- adds r0, 0x4E
- ldrh r0, [r0]
- ldr r2, =0x000011c4
- adds r1, r2
- strh r0, [r1]
- movs r4, 0
- mov r8, r3
- mov r12, r8
- ldr r7, =0x000011c8
- movs r6, 0x92
- lsls r6, 1
-_08082128:
- movs r3, 0
- adds r5, r4, 0x1
- lsls r0, r4, 1
- adds r0, r4
- lsls r4, r0, 1
-_08082132:
- mov r1, r12
- ldr r0, [r1]
- lsls r1, r3, 1
- adds r1, r4
- adds r2, r0, r7
- adds r2, r1
- adds r0, r6
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r2]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x2
- bls _08082132
- lsls r0, r5, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _08082128
- mov r2, r8
- ldr r1, [r2]
- movs r4, 0x8E
- lsls r4, 5
- adds r1, r4
- movs r0, 0
- movs r2, 0x20
- bl SendBlock
- lsls r0, 24
- cmp r0, 0
- bne _08082172
- b _0808249E
-_08082172:
- mov r5, r8
- ldr r1, [r5]
- b _0808245C
- .pool
-_0808218C:
- ldr r4, =gUnknown_020322A4
- ldr r3, [r4]
- movs r0, 0xCC
- lsls r0, 1
- adds r1, r3, r0
- movs r2, 0x82
- lsls r2, 1
- adds r0, r3, r2
- ldr r0, [r0]
- str r0, [r1]
- adds r0, r3, 0
- adds r0, 0x4E
- ldrh r2, [r0]
- movs r5, 0xCE
- lsls r5, 1
- adds r0, r3, r5
- strh r2, [r0]
- movs r0, 0
- movs r2, 0x28
- bl SendBlock
- lsls r0, 24
- cmp r0, 0
- bne _080821BE
- b _0808249E
-_080821BE:
- ldr r1, [r4]
- b _0808245C
- .pool
-_080821C8:
- bl GetBlockReceivedStatus
- lsls r0, 24
- cmp r0, 0
- bne _080821D4
- b _0808249E
-_080821D4:
- bl ResetBlockReceivedFlags
- ldr r5, =gUnknown_020322A4
- ldr r1, [r5]
- adds r1, 0x63
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _08082254
- ldr r0, =gLinkVSyncDisabled
- ldrb r0, [r0]
- cmp r0, 0
- beq _08082254
- ldr r2, =gBlockRecvBuffer
- ldr r3, [r5]
- ldrh r0, [r2, 0x4]
- adds r1, r3, 0
- adds r1, 0x4E
- strh r0, [r1]
- movs r0, 0x82
- lsls r0, 1
- adds r1, r3, r0
- ldr r0, [r2]
- str r0, [r1]
- movs r4, 0
- adds r7, r2, 0
- adds r7, 0x8
- adds r6, r5, 0
- movs r2, 0x92
- lsls r2, 1
-_08082216:
- movs r3, 0
- adds r5, r4, 0x1
- lsls r0, r4, 1
- adds r0, r4
- lsls r4, r0, 1
-_08082220:
- ldr r1, [r6]
- lsls r0, r3, 1
- adds r0, r4
- adds r1, r2
- adds r1, r0
- adds r0, r7, r0
- ldrh r0, [r0]
- strh r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x2
- bls _08082220
- lsls r0, r5, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _08082216
- b _0808249E
- .pool
-_08082254:
- ldr r2, =gBlockRecvBuffer
- ldr r0, =gUnknown_020322A4
- ldr r3, [r0]
- ldrh r0, [r2, 0x4]
- adds r1, r3, 0
- adds r1, 0x4E
- strh r0, [r1]
- movs r4, 0x82
- lsls r4, 1
- adds r1, r3, r4
- ldr r0, [r2]
- str r0, [r1]
- b _0808249E
- .pool
-_08082278:
- bl sub_8083B08
- lsls r0, 24
- cmp r0, 0
- bne _08082284
- b _0808249E
-_08082284:
- b _08082458
-_08082286:
- bl berry_blender_related
- lsls r0, 24
- cmp r0, 0
- bne _08082292
- b _0808249E
-_08082292:
- ldr r0, =gUnknown_03005D98
- ldrb r0, [r0]
- cmp r0, 0
- bne _080822A8
- movs r0, 0x22
- bl IncrementGameStat
- b _08082458
- .pool
-_080822A8:
- movs r0, 0x21
- bl IncrementGameStat
- b _08082458
-_080822B0:
- ldr r6, =gUnknown_020322A4
- ldr r4, [r6]
- ldr r5, =0x000011b8
- adds r4, r5
- ldr r5, =sText_WouldLikeToBlendAnotherBerry
- bl sav2_get_text_speed
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_808417C
- cmp r0, 0
- bne _080822D2
- b _0808249E
-_080822D2:
- ldr r1, [r6]
- b _0808245C
- .pool
-_080822E4:
- ldr r4, =gUnknown_020322A4
- ldr r0, [r4]
- adds r0, 0x9E
- movs r1, 0
- strb r1, [r0]
- ldr r0, =gUnknown_083399B8
- movs r1, 0x1
- movs r2, 0xD
- movs r3, 0
- bl CreateYesNoMenu
- ldr r1, [r4]
- b _0808245C
- .pool
-_08082308:
- bl sub_8198C58
- lsls r0, 24
- asrs r2, r0, 24
- cmp r2, 0
- beq _0808236C
- cmp r2, 0
- bgt _08082322
- movs r0, 0x1
- negs r0, r0
- cmp r2, r0
- beq _08082328
- b _0808249E
-_08082322:
- cmp r2, 0x1
- beq _08082328
- b _0808249E
-_08082328:
- ldr r2, =gUnknown_020322A4
- ldr r0, [r2]
- adds r0, 0x9E
- movs r1, 0x1
- strb r1, [r0]
- ldr r1, [r2]
- adds r1, 0x63
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r4, 0
-_0808233E:
- ldr r0, =gUnknown_020322A4
- ldr r0, [r0]
- lsls r1, r4, 1
- adds r0, 0x8E
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0xFF
- beq _0808235C
- adds r0, r4, 0
- bl PutWindowTilemap
- adds r0, r4, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_0808235C:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _0808233E
- b _0808249E
- .pool
-_0808236C:
- ldr r1, =gUnknown_020322A4
- ldr r0, [r1]
- adds r0, 0x9E
- strb r2, [r0]
- ldr r1, [r1]
- adds r1, 0x63
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r4, 0
-_08082380:
- ldr r0, =gUnknown_020322A4
- ldr r0, [r0]
- lsls r1, r4, 1
- adds r0, 0x8E
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0xFF
- beq _0808239E
- adds r0, r4, 0
- bl PutWindowTilemap
- adds r0, r4, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_0808239E:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _08082380
- b _0808249E
- .pool
-_080823B0:
- ldr r6, =gUnknown_03003110
- adds r0, r6, 0
- bl sub_8081F94
- ldr r4, =gUnknown_020322A4
- ldr r2, [r4]
- adds r0, r2, 0
- adds r0, 0x9E
- ldrb r5, [r0]
- cmp r5, 0
- bne _0808241C
- movs r0, 0x4
- bl IsBagPocketNonEmpty
- lsls r0, 24
- cmp r0, 0
- bne _080823EC
- ldr r0, [r4]
- adds r0, 0x70
- movs r1, 0x2
- strh r1, [r0]
- ldr r0, =0x00009999
- b _08082414
- .pool
-_080823EC:
- bl sub_8136EF4
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _0808240C
- ldr r0, [r4]
- adds r0, 0x70
- movs r1, 0x3
- strh r1, [r0]
- ldr r0, =0x0000aaaa
- b _08082414
- .pool
-_0808240C:
- ldr r0, [r4]
- adds r0, 0x70
- strh r5, [r0]
- ldr r0, =0x00007779
-_08082414:
- strh r0, [r6, 0x2]
- b _08082458
- .pool
-_0808241C:
- adds r1, r2, 0
- adds r1, 0x70
- movs r0, 0x1
- strh r0, [r1]
- ldr r0, =0x00008888
- strh r0, [r6, 0x2]
- subs r1, 0xD
- b _0808245E
- .pool
-_08082430:
- ldr r0, =gUnknown_03005D98
- ldrb r0, [r0]
- cmp r0, 0
- beq _08082458
- ldr r0, =sub_8082924
- bl SetMainCallback2
- ldr r2, =gUnknown_020322A4
- ldr r0, [r2]
- adds r0, 0x63
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r2]
- b _0808249C
- .pool
-_08082458:
- ldr r0, =gUnknown_020322A4
- ldr r1, [r0]
-_0808245C:
- adds r1, 0x63
-_0808245E:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0808249E
- .pool
-_0808246C:
- ldr r6, =gUnknown_020322A4
- ldr r4, [r6]
- ldr r0, =0x000011b8
- adds r4, r0
- ldr r5, =sText_CommunicationStandby
- bl sav2_get_text_speed
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_808417C
- cmp r0, 0
- beq _0808249E
- ldr r0, =sub_8082644
- bl SetMainCallback2
- ldr r0, [r6]
- adds r0, 0x63
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r6]
-_0808249C:
- strb r1, [r0]
-_0808249E:
- bl sub_808330C
- ldr r4, =gUnknown_020322A4
- ldr r0, [r4]
- adds r0, 0x4C
- ldrh r0, [r0]
- bl sub_8083230
- bl sub_8082AD4
- ldr r1, [r4]
- movs r2, 0x8E
- lsls r2, 1
- adds r0, r1, r2
- movs r4, 0
- ldrsh r0, [r0, r4]
- movs r5, 0x8F
- lsls r5, 1
- adds r1, r5
- movs r2, 0
- ldrsh r1, [r1, r2]
- bl nullsub_31
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl RunTextPrinters
- bl UpdatePaletteFade
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8081FC8
-
- thumb_func_start sub_80824FC
-sub_80824FC: @ 80824FC
- push {r4,lr}
- ldr r1, =gUnknown_020322A4
- ldr r0, [r1]
- movs r2, 0xD0
- lsls r2, 1
- adds r0, r2
- ldr r0, [r0]
- adds r4, r1, 0
- cmp r0, 0x6
- bls _08082512
- b _0808263C
-_08082512:
- lsls r0, 2
- ldr r1, =_08082524
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08082524:
- .4byte _08082540
- .4byte _08082558
- .4byte _08082584
- .4byte _08082594
- .4byte _080825BA
- .4byte _08082600
- .4byte _0808261A
-_08082540:
- bl sub_800ADF8
- ldr r0, =gUnknown_020322A4
- ldr r2, [r0]
- movs r3, 0xD0
- lsls r3, 1
- adds r1, r2, r3
- movs r0, 0x1
- b _0808260C
- .pool
-_08082558:
- bl sub_800A520
- lsls r0, 24
- cmp r0, 0
- beq _0808263C
- ldr r0, =gUnknown_020322A4
- ldr r1, [r0]
- movs r2, 0xD0
- lsls r2, 1
- adds r1, r2
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- ldr r1, =gSoftResetDisabled
- movs r0, 0x1
- strb r0, [r1]
- b _0808263C
- .pool
-_08082584:
- bl sub_8153430
- ldr r0, =gUnknown_020322A4
- ldr r2, [r0]
- b _08082602
- .pool
-_08082594:
- ldr r1, [r4]
- movs r2, 0x84
- lsls r2, 1
- adds r1, r2
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0xA
- bne _0808263C
- bl sub_800ADF8
- ldr r1, [r4]
- movs r3, 0xD0
- lsls r3, 1
- adds r1, r3
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- b _0808263C
-_080825BA:
- bl sub_800A520
- lsls r0, 24
- cmp r0, 0
- beq _0808263C
- bl sub_8153474
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _080825E4
- ldr r0, =gUnknown_020322A4
- ldr r0, [r0]
- movs r1, 0xD0
- lsls r1, 1
- adds r0, r1
- movs r1, 0x5
- str r1, [r0]
- b _0808263C
- .pool
-_080825E4:
- ldr r0, =gUnknown_020322A4
- ldr r1, [r0]
- movs r3, 0x84
- lsls r3, 1
- adds r0, r1, r3
- str r2, [r0]
- movs r0, 0xD0
- lsls r0, 1
- adds r1, r0
- movs r0, 0x3
- str r0, [r1]
- b _0808263C
- .pool
-_08082600:
- ldr r2, [r4]
-_08082602:
- movs r3, 0xD0
- lsls r3, 1
- adds r1, r2, r3
- ldr r0, [r1]
- adds r0, 0x1
-_0808260C:
- str r0, [r1]
- movs r0, 0x84
- lsls r0, 1
- adds r1, r2, r0
- movs r0, 0
- str r0, [r1]
- b _0808263C
-_0808261A:
- ldr r1, [r4]
- movs r2, 0x84
- lsls r2, 1
- adds r1, r2
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x5
- ble _0808263C
- ldr r1, =gSoftResetDisabled
- movs r0, 0
- strb r0, [r1]
- movs r0, 0x1
- b _0808263E
- .pool
-_0808263C:
- movs r0, 0
-_0808263E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80824FC
-
- thumb_func_start sub_8082644
-sub_8082644: @ 8082644
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r1, =gUnknown_020322A4
- ldr r0, [r1]
- adds r0, 0x63
- ldrb r0, [r0]
- adds r6, r1, 0
- cmp r0, 0xC
- bls _08082658
- b _080828DC
-_08082658:
- lsls r0, 2
- ldr r1, =_0808266C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0808266C:
- .4byte _080826A0
- .4byte _080826EC
- .4byte _0808271C
- .4byte _08082754
- .4byte _0808278C
- .4byte _080827AA
- .4byte _080827C8
- .4byte _080827FC
- .4byte _08082818
- .4byte _08082828
- .4byte _0808284C
- .4byte _080828A4
- .4byte _080828C6
-_080826A0:
- ldr r1, [r6]
- adds r0, r1, 0
- adds r0, 0x64
- ldrh r2, [r0]
- ldr r0, =0x00002222
- cmp r2, r0
- bne _080826B0
- b _080827A2
-_080826B0:
- ldr r0, =0x00001111
- cmp r2, r0
- beq _080826B8
- b _080828DC
-_080826B8:
- adds r0, r1, 0
- adds r0, 0x6C
- ldrh r2, [r0]
- ldr r0, =0x00009999
- cmp r2, r0
- bne _080826D8
- adds r1, 0x63
- movs r0, 0x2
- strb r0, [r1]
- b _080828DC
- .pool
-_080826D8:
- ldr r0, =0x0000aaaa
- cmp r2, r0
- bne _080827A2
- adds r1, 0x63
- movs r0, 0x1
- strb r0, [r1]
- b _080828DC
- .pool
-_080826EC:
- ldr r0, [r6]
- adds r0, 0x63
- movs r1, 0x3
- strb r1, [r0]
- ldr r4, =gStringVar4
- ldr r0, [r6]
- adds r0, 0x6E
- ldrh r0, [r0]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- ldr r0, =gLinkPlayers + 8
- adds r1, r0
- adds r0, r4, 0
- bl StringCopy
- ldr r1, =sText_ApostropheSPokeblockCaseIsFull
- b _08082740
- .pool
-_0808271C:
- ldr r1, [r6]
- adds r1, 0x63
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r4, =gStringVar4
- ldr r0, [r6]
- adds r0, 0x6E
- ldrh r0, [r0]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- ldr r0, =gLinkPlayers + 8
- adds r1, r0
- adds r0, r4, 0
- bl StringCopy
- ldr r1, =sText_HasNoBerriesToPut
-_08082740:
- adds r0, r4, 0
- bl StringAppend
- b _080828DC
- .pool
-_08082754:
- ldr r4, [r6]
- ldr r0, =0x000011b8
- adds r4, r0
- ldr r5, =gStringVar4
- bl sav2_get_text_speed
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_808417C
- cmp r0, 0
- bne _08082774
- b _080828DC
-_08082774:
- ldr r1, [r6]
- movs r0, 0x84
- lsls r0, 1
- adds r2, r1, r0
- movs r0, 0
- str r0, [r2]
- b _080828BC
- .pool
-_0808278C:
- ldr r4, [r6]
- movs r2, 0x84
- lsls r2, 1
- adds r1, r4, r2
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x3C
- bgt _080827A0
- b _080828DC
-_080827A0:
- adds r1, r4, 0
-_080827A2:
- adds r1, 0x63
- movs r0, 0x5
- strb r0, [r1]
- b _080828DC
-_080827AA:
- ldr r0, [r6]
- ldr r1, =0x000011b8
- adds r0, r1
- ldr r1, =gText_SavingDontTurnOff2
- movs r2, 0
- bl sub_808417C
- bl sub_800ADF8
- b _080828BA
- .pool
-_080827C8:
- bl sub_800A520
- lsls r0, 24
- cmp r0, 0
- bne _080827D4
- b _080828DC
-_080827D4:
- ldr r3, =gUnknown_020322A4
- ldr r1, [r3]
- movs r2, 0x84
- lsls r2, 1
- adds r0, r1, r2
- movs r2, 0
- str r2, [r0]
- adds r1, 0x63
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r3]
- movs r1, 0xD0
- lsls r1, 1
- adds r0, r1
- str r2, [r0]
- b _080828DC
- .pool
-_080827FC:
- bl sub_80824FC
- lsls r0, 24
- cmp r0, 0
- beq _080828DC
- movs r0, 0x37
- bl PlaySE
- ldr r0, =gUnknown_020322A4
- ldr r1, [r0]
- b _080828BC
- .pool
-_08082818:
- ldr r1, [r6]
- adds r1, 0x63
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl sub_800ADF8
- b _080828DC
-_08082828:
- bl sub_800A520
- lsls r0, 24
- cmp r0, 0
- beq _080828DC
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, =gUnknown_020322A4
- ldr r1, [r0]
- b _080828BC
- .pool
-_0808284C:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _080828DC
- ldr r2, [r6]
- adds r0, r2, 0
- adds r0, 0x64
- ldrh r1, [r0]
- ldr r0, =0x00002222
- cmp r1, r0
- bne _08082898
- bl FreeAllWindowBuffers
- movs r0, 0x2
- bl UnsetBgTilemapBuffer
- movs r0, 0x1
- bl UnsetBgTilemapBuffer
- ldr r0, [r6]
- bl Free
- str r4, [r6]
- ldr r0, =sub_807FA80
- bl SetMainCallback2
- b _080828DC
- .pool
-_08082898:
- movs r1, 0x84
- lsls r1, 1
- adds r0, r2, r1
- str r4, [r0]
- adds r1, r2, 0
- b _080828BC
-_080828A4:
- ldr r1, [r6]
- movs r2, 0x84
- lsls r2, 1
- adds r1, r2
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x1E
- ble _080828DC
- bl sub_800AC34
-_080828BA:
- ldr r1, [r6]
-_080828BC:
- adds r1, 0x63
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080828DC
-_080828C6:
- ldr r0, =gReceivedRemoteLinkPlayers
- ldrb r4, [r0]
- cmp r4, 0
- bne _080828DC
- ldr r0, [r6]
- bl Free
- str r4, [r6]
- ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
-_080828DC:
- bl sub_8082AD4
- ldr r0, =gUnknown_020322A4
- ldr r1, [r0]
- movs r2, 0x8E
- lsls r2, 1
- adds r0, r1, r2
- movs r2, 0
- ldrsh r0, [r0, r2]
- movs r2, 0x8F
- lsls r2, 1
- adds r1, r2
- movs r2, 0
- ldrsh r1, [r1, r2]
- bl nullsub_31
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl RunTextPrinters
- bl UpdatePaletteFade
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8082644
-
- thumb_func_start sub_8082924
-sub_8082924: @ 8082924
- push {r4-r6,lr}
- ldr r1, =gUnknown_020322A4
- ldr r0, [r1]
- adds r0, 0x63
- ldrb r0, [r0]
- adds r6, r1, 0
- cmp r0, 0xA
- bls _08082936
- b _08082A92
-_08082936:
- lsls r0, 2
- ldr r1, =_08082948
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08082948:
- .4byte _08082974
- .4byte _080829AA
- .4byte _080829D4
- .4byte _08082A00
- .4byte _08082A92
- .4byte _08082A92
- .4byte _08082A92
- .4byte _08082A92
- .4byte _08082A92
- .4byte _08082A30
- .4byte _08082A48
-_08082974:
- ldr r1, [r6]
- adds r0, r1, 0
- adds r0, 0x70
- ldrh r0, [r0]
- cmp r0, 0x1
- bhi _08082986
- adds r1, 0x63
- movs r0, 0x9
- strb r0, [r1]
-_08082986:
- ldr r2, [r6]
- adds r0, r2, 0
- adds r0, 0x70
- ldrh r1, [r0]
- cmp r1, 0x2
- bne _08082996
- subs r0, 0xD
- strb r1, [r0]
-_08082996:
- ldr r1, [r6]
- adds r0, r1, 0
- adds r0, 0x70
- ldrh r0, [r0]
- cmp r0, 0x3
- bne _08082A92
- adds r1, 0x63
- movs r0, 0x1
- strb r0, [r1]
- b _08082A92
-_080829AA:
- ldr r0, [r6]
- adds r0, 0x63
- movs r2, 0
- movs r1, 0x3
- strb r1, [r0]
- ldr r0, [r6]
- ldr r1, =0x000011b8
- adds r0, r1
- strh r2, [r0]
- ldr r0, =gStringVar4
- ldr r1, =sText_YourPokeblockCaseIsFull
- bl StringCopy
- b _08082A92
- .pool
-_080829D4:
- ldr r1, [r6]
- adds r1, 0x63
- ldrb r0, [r1]
- adds r0, 0x1
- movs r2, 0
- strb r0, [r1]
- ldr r0, [r6]
- ldr r1, =0x000011b8
- adds r0, r1
- strh r2, [r0]
- ldr r0, =gStringVar4
- ldr r1, =sText_RunOutOfBerriesForBlending
- bl StringCopy
- b _08082A92
- .pool
-_08082A00:
- ldr r4, [r6]
- ldr r2, =0x000011b8
- adds r4, r2
- ldr r5, =gStringVar4
- bl sav2_get_text_speed
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_808417C
- cmp r0, 0
- beq _08082A92
- ldr r0, [r6]
- adds r0, 0x63
- movs r1, 0x9
- strb r1, [r0]
- b _08082A92
- .pool
-_08082A30:
- movs r0, 0x3
- bl BeginFastPaletteFade
- ldr r0, =gUnknown_020322A4
- ldr r1, [r0]
- adds r1, 0x63
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08082A92
- .pool
-_08082A48:
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08082A92
- ldr r0, [r6]
- adds r0, 0x70
- ldrh r0, [r0]
- cmp r0, 0
- bne _08082A70
- ldr r0, =sub_807FA80
- bl SetMainCallback2
- b _08082A76
- .pool
-_08082A70:
- ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
-_08082A76:
- bl FreeAllWindowBuffers
- movs r0, 0x2
- bl UnsetBgTilemapBuffer
- movs r0, 0x1
- bl UnsetBgTilemapBuffer
- ldr r4, =gUnknown_020322A4
- ldr r0, [r4]
- bl Free
- movs r0, 0
- str r0, [r4]
-_08082A92:
- bl sub_8082AD4
- ldr r0, =gUnknown_020322A4
- ldr r1, [r0]
- movs r2, 0x8E
- lsls r2, 1
- adds r0, r1, r2
- movs r2, 0
- ldrsh r0, [r0, r2]
- movs r2, 0x8F
- lsls r2, 1
- adds r1, r2
- movs r2, 0
- ldrsh r1, [r1, r2]
- bl nullsub_31
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl RunTextPrinters
- bl UpdatePaletteFade
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8082924
-
- thumb_func_start sub_8082AD4
-sub_8082AD4: @ 8082AD4
- push {r4-r7,lr}
- ldr r0, =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _08082AE0
- b _08082CA4
-_08082AE0:
- ldr r4, =gUnknown_03003090
- ldrh r0, [r4]
- ldr r1, =0x00002fff
- movs r2, 0xBC
- lsls r2, 6
- bl sub_80814B0
- cmp r0, 0
- beq _08082B66
- ldrh r1, [r4, 0x2]
- ldr r0, =0x00001111
- cmp r1, r0
- bne _08082B58
- ldrh r3, [r4, 0x4]
- ldr r0, =0x00009999
- cmp r3, r0
- beq _08082B38
- cmp r3, r0
- bgt _08082B24
- ldr r0, =0x00008888
- b _08082B26
- .pool
-_08082B24:
- ldr r0, =0x0000aaaa
-_08082B26:
- cmp r3, r0
- beq _08082B38
- ldr r2, =gUnknown_020322A4
- b _08082B48
- .pool
-_08082B38:
- ldr r2, =gUnknown_020322A4
- ldr r0, [r2]
- adds r1, r0, 0
- adds r1, 0x6C
- strh r3, [r1]
- ldrh r1, [r4, 0x6]
- adds r0, 0x6E
- strh r1, [r0]
-_08082B48:
- ldr r0, [r2]
- adds r0, 0x64
- ldr r1, =0x00001111
- b _08082B64
- .pool
-_08082B58:
- ldr r0, =0x00002222
- cmp r1, r0
- bne _08082B66
- ldr r0, =gUnknown_020322A4
- ldr r0, [r0]
- adds r0, 0x64
-_08082B64:
- strh r1, [r0]
-_08082B66:
- bl GetMultiplayerId
- lsls r0, 24
- cmp r0, 0
- beq _08082B72
- b _08082CA4
-_08082B72:
- ldr r2, =gUnknown_020322A4
- ldr r0, [r2]
- adds r0, 0x64
- ldrh r1, [r0]
- ldr r0, =0x00001111
- cmp r1, r0
- bne _08082B82
- b _08082CA4
-_08082B82:
- ldr r0, =0x00002222
- cmp r1, r0
- bne _08082B8A
- b _08082CA4
-_08082B8A:
- movs r5, 0
- adds r7, r2, 0
- b _08082BF4
- .pool
-_08082B9C:
- ldr r6, =gUnknown_03003090
- lsls r4, r5, 4
- adds r0, r4, r6
- ldrh r0, [r0]
- ldr r1, =0x00002fff
- movs r2, 0xBC
- lsls r2, 6
- bl sub_80814B0
- cmp r0, 0
- beq _08082BEE
- adds r0, r6, 0x2
- adds r0, r4, r0
- ldrh r2, [r0]
- ldr r0, =0x00008888
- cmp r2, r0
- beq _08082BE4
- cmp r2, r0
- bgt _08082BD8
- ldr r0, =0x00007779
- b _08082BE0
- .pool
-_08082BD8:
- ldr r0, =0x00009999
- cmp r2, r0
- beq _08082BE4
- ldr r0, =0x0000aaaa
-_08082BE0:
- cmp r2, r0
- bne _08082BEE
-_08082BE4:
- ldr r0, [r7]
- lsls r1, r5, 1
- adds r0, 0x64
- adds r0, r1
- strh r2, [r0]
-_08082BEE:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
-_08082BF4:
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r5, r0
- bcc _08082B9C
- movs r5, 0
- b _08082C12
- .pool
-_08082C0C:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
-_08082C12:
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r5, r0
- bcs _08082C2E
- ldr r0, =gUnknown_020322A4
- ldr r0, [r0]
- lsls r1, r5, 1
- adds r0, 0x64
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0
- bne _08082C0C
-_08082C2E:
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r5, r0
- bne _08082CA4
- movs r5, 0
- ldr r4, =0x00007779
- b _08082C4E
- .pool
-_08082C48:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
-_08082C4E:
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r5, r0
- bcs _08082C6A
- ldr r0, =gUnknown_020322A4
- ldr r0, [r0]
- lsls r1, r5, 1
- adds r0, 0x64
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, r4
- beq _08082C48
-_08082C6A:
- ldr r4, =gUnknown_03003110
- adds r0, r4, 0
- bl sub_8081F94
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r5, r0
- bne _08082C90
- ldr r0, =0x00002222
- strh r0, [r4, 0x2]
- b _08082CA4
- .pool
-_08082C90:
- ldr r0, =0x00001111
- strh r0, [r4, 0x2]
- ldr r0, =gUnknown_020322A4
- ldr r0, [r0]
- lsls r1, r5, 1
- adds r0, 0x64
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r4, 0x4]
- strh r5, [r4, 0x6]
-_08082CA4:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8082AD4
-
- thumb_func_start sub_8082CB4
-sub_8082CB4: @ 8082CB4
- push {r4,lr}
- sub sp, 0x14
- movs r1, 0xF0
- lsls r1, 7
- str r1, [sp]
- movs r1, 0xA0
- lsls r1, 7
- str r1, [sp, 0x4]
- mov r3, sp
- ldr r1, =gUnknown_020322A4
- ldr r1, [r1]
- mov r12, r1
- movs r1, 0x8E
- lsls r1, 1
- add r1, r12
- ldrh r2, [r1]
- movs r1, 0x78
- subs r1, r2
- strh r1, [r3, 0x8]
- movs r1, 0x8F
- lsls r1, 1
- add r1, r12
- ldrh r2, [r1]
- movs r1, 0x50
- subs r1, r2
- strh r1, [r3, 0xA]
- mov r2, sp
- movs r3, 0x8D
- lsls r3, 1
- add r3, r12
- ldrh r1, [r3]
- strh r1, [r2, 0xC]
- ldrh r1, [r3]
- strh r1, [r2, 0xE]
- mov r1, r12
- adds r1, 0x4A
- ldrh r1, [r1]
- strh r1, [r2, 0x10]
- mov r1, sp
- ldm r1!, {r2-r4}
- stm r0!, {r2-r4}
- ldm r1!, {r2,r3}
- stm r0!, {r2,r3}
- add sp, 0x14
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8082CB4
-
- thumb_func_start sub_8082D18
-sub_8082D18: @ 8082D18
- ldr r0, =gUnknown_020322A4
- ldr r0, [r0]
- adds r0, 0x4A
- ldrh r0, [r0]
- bx lr
- .pool
- thumb_func_end sub_8082D18
-
- thumb_func_start sub_8082D28
-sub_8082D28: @ 8082D28
- push {r4,lr}
- movs r1, 0
- ldr r4, =gReceivedRemoteLinkPlayers
- ldrb r0, [r4]
- cmp r0, 0
- beq _08082D3C
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r1, r0, 24
-_08082D3C:
- ldr r0, =gLinkVSyncDisabled
- ldrb r0, [r0]
- cmp r0, 0
- beq _08082DCC
- ldrb r0, [r4]
- cmp r0, 0
- beq _08082DCC
- cmp r1, 0
- bne _08082D90
- ldr r0, =gUnknown_020322A4
- ldr r3, [r0]
- adds r2, r3, 0
- adds r2, 0x4A
- adds r0, r3, 0
- adds r0, 0x4C
- ldrh r0, [r0]
- ldrh r1, [r2]
- adds r0, r1
- strh r0, [r2]
- ldr r1, =gUnknown_03003110
- movs r4, 0x8B
- lsls r4, 1
- adds r0, r3, r4
- ldrh r0, [r0]
- strh r0, [r1, 0xA]
- ldrh r0, [r2]
- strh r0, [r1, 0xC]
- movs r1, 0xA0
- lsls r1, 1
- adds r0, r3, r1
- bl sub_8082CB4
- b _08082DEA
- .pool
-_08082D90:
- ldr r3, =gUnknown_03003090
- ldrh r0, [r3]
- movs r1, 0xFF
- lsls r1, 8
- ands r1, r0
- movs r0, 0x88
- lsls r0, 7
- cmp r1, r0
- bne _08082DEA
- ldr r0, =gUnknown_020322A4
- ldr r2, [r0]
- ldrh r0, [r3, 0xA]
- movs r4, 0x8B
- lsls r4, 1
- adds r1, r2, r4
- strh r0, [r1]
- ldrh r0, [r3, 0xC]
- adds r1, r2, 0
- adds r1, 0x4A
- strh r0, [r1]
- movs r1, 0xA0
- lsls r1, 1
- adds r0, r2, r1
- bl sub_8082CB4
- b _08082DEA
- .pool
-_08082DCC:
- ldr r0, =gUnknown_020322A4
- ldr r1, [r0]
- adds r2, r1, 0
- adds r2, 0x4A
- adds r0, r1, 0
- adds r0, 0x4C
- ldrh r0, [r0]
- ldrh r3, [r2]
- adds r0, r3
- strh r0, [r2]
- movs r4, 0xA0
- lsls r4, 1
- adds r0, r1, r4
- bl sub_8082CB4
-_08082DEA:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8082D28
-
- thumb_func_start sub_8082DF4
-sub_8082DF4: @ 8082DF4
- push {r4-r6,lr}
- ldr r4, =gUnknown_020322A4
- ldr r0, [r4]
- movs r6, 0x8E
- lsls r6, 1
- adds r0, r6
- ldrh r1, [r0]
- movs r0, 0x14
- bl SetGpuReg
- ldr r0, [r4]
- movs r5, 0x8F
- lsls r5, 1
- adds r0, r5
- ldrh r1, [r0]
- movs r0, 0x16
- bl SetGpuReg
- ldr r0, [r4]
- adds r0, r6
- ldrh r1, [r0]
- movs r0, 0x10
- bl SetGpuReg
- ldr r0, [r4]
- adds r0, r5
- ldrh r1, [r0]
- movs r0, 0x12
- bl SetGpuReg
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8082DF4
-
- thumb_func_start sub_8082E3C
-sub_8082E3C: @ 8082E3C
- 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 _08082E5A
- adds r0, 0x7
-_08082E5A:
- asrs r0, 3
- strh r0, [r2, 0x24]
- movs r1, 0x34
- ldrsh r0, [r2, r1]
- cmp r0, 0
- bge _08082E68
- adds r0, 0x7
-_08082E68:
- 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 _08082E80
- adds r0, r2, 0
- bl DestroySprite
-_08082E80:
- pop {r0}
- bx r0
- thumb_func_end sub_8082E3C
-
- thumb_func_start sub_8082E84
-sub_8082E84: @ 8082E84
- 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 _08082F40
- ldr r0, =gSineTable
- mov r9, r0
- ldr r2, =gSprites
- mov r10, r2
- adds r6, r1, 0x1
- movs r3, 0x1F
- mov r8, r3
- movs r7, 0x10
-_08082EB0:
- bl Random
- ldr r1, =gUnknown_020322A4
- ldr r4, [r1]
- adds r4, 0x4A
- 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 _08082EE4
- adds r1, 0x3
-_08082EE4:
- asrs r1, 2
- lsls r0, r2, 1
- add r0, r9
- movs r2, 0
- ldrsh r0, [r0, r2]
- cmp r0, 0
- bge _08082EF4
- adds r0, 0x3
-_08082EF4:
- asrs r2, r0, 2
- adds r1, 0x78
- adds r2, 0x50
- ldr r0, =gUnknown_08339BE0
- 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, =gSprites + 0x1C
- adds r5, r3
- ldr r0, =sub_8082E3C
- str r0, [r5]
- subs r6, 0x1
- cmp r6, 0
- bne _08082EB0
-_08082F40:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8082E84
-
- thumb_func_start sub_8082F68
-sub_8082F68: @ 8082F68
- 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 _08082F94
- adds r0, r4, 0
- bl DestroySprite
-_08082F94:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8082F68
-
- thumb_func_start sub_8082F9C
-sub_8082F9C: @ 8082F9C
- 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 _08082FC0
- ldr r0, =0x0000fff4
- strh r0, [r2, 0x26]
-_08082FC0:
- adds r0, r2, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08082FD4
- adds r0, r2, 0
- bl DestroySprite
-_08082FD4:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8082F9C
-
- thumb_func_start sub_8082FDC
-sub_8082FDC: @ 8082FDC
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsrs r1, 16
- ldr r2, =gUnknown_020322A4
- ldr r3, [r2]
- lsls r4, r0, 1
- adds r2, r3, 0
- adds r2, 0x74
- adds r2, r4
- strh r1, [r2]
- lsls r0, 4
- movs r2, 0xAC
- lsls r2, 1
- adds r0, r2
- adds r3, r0
- adds r0, r3, 0
- bl sub_807FE14
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8082FDC
-
- thumb_func_start sub_8083010
-sub_8083010: @ 8083010
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _0808304C
- cmp r0, 0x1
- bgt _08083026
- cmp r0, 0
- beq _0808302C
- b _080830B2
-_08083026:
- cmp r0, 0x2
- beq _08083066
- b _080830B2
-_0808302C:
- ldrh r0, [r4, 0x30]
- adds r0, 0x8
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x58
- ble _080830B2
- movs r0, 0x58
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- movs r0, 0x38
- bl PlaySE
- b _080830B2
-_0808304C:
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- ble _080830B2
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- movs r0, 0
- strh r0, [r4, 0x32]
- b _080830B2
-_08083066:
- ldrh r0, [r4, 0x30]
- adds r0, 0x4
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xB0
- ble _080830B2
- 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 _080830A0
- adds r0, r4, 0
- bl DestroySprite
- ldr r0, =gUnknown_08339C60
- movs r2, 0x14
- negs r2, r2
- movs r1, 0x78
- movs r3, 0x2
- bl CreateSprite
- b _080830B2
- .pool
-_080830A0:
- movs r0, 0
- strh r0, [r4, 0x2E]
- ldr r0, =0x0000fff0
- strh r0, [r4, 0x30]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
-_080830B2:
- ldrh r0, [r4, 0x30]
- strh r0, [r4, 0x26]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8083010
-
- thumb_func_start sub_80830C0
-sub_80830C0: @ 80830C0
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080830FC
- cmp r0, 0x1
- bgt _080830D6
- cmp r0, 0
- beq _080830DC
- b _08083130
-_080830D6:
- cmp r0, 0x2
- beq _08083112
- b _08083130
-_080830DC:
- ldrh r0, [r4, 0x30]
- adds r0, 0x8
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5C
- ble _08083130
- movs r0, 0x5C
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- movs r0, 0x15
- bl PlaySE
- b _08083130
-_080830FC:
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- ble _08083130
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _08083130
-_08083112:
- ldrh r0, [r4, 0x30]
- adds r0, 0x4
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xB0
- ble _08083130
- ldr r0, =gUnknown_020322A4
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- adds r0, r4, 0
- bl DestroySprite
-_08083130:
- ldrh r0, [r4, 0x30]
- strh r0, [r4, 0x26]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80830C0
-
- thumb_func_start sub_8083140
-sub_8083140: @ 8083140
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 16
- lsrs r3, r1, 16
- ldr r1, =gUnknown_020322A4
- ldr r1, [r1]
- movs r2, 0x8C
- lsls r2, 1
- adds r1, r2
- ldrh r2, [r1]
- cmp r2, r0
- bcs _08083166
- adds r0, r2, 0x2
- strh r0, [r1]
- ldrh r0, [r1]
- adds r1, r3, 0
- bl sub_8083170
-_08083166:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8083140
-
- thumb_func_start sub_8083170
-sub_8083170: @ 8083170
- push {r4-r7,lr}
- lsls r0, 16
- lsls r1, 16
- lsrs r1, 16
- ldr r7, =0x06006000
- lsrs r0, 10
- bl __divsi3
- adds r1, r0, 0
- cmp r1, 0
- bge _08083188
- adds r0, r1, 0x7
-_08083188:
- asrs r4, r0, 3
- movs r3, 0
- cmp r3, r4
- bge _080831B0
- ldr r0, =0x000080e9
- 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
-_080831A0:
- strh r6, [r0, 0x16]
- strh r5, [r2]
- adds r2, 0x2
- adds r0, 0x2
- subs r3, 0x1
- cmp r3, 0
- bne _080831A0
- adds r3, r4, 0
-_080831B0:
- adds r0, r1, 0
- cmp r1, 0
- bge _080831B8
- adds r0, r1, 0x7
-_080831B8:
- asrs r2, r0, 3
- lsls r0, r2, 3
- subs r2, r1, r0
- cmp r2, 0
- beq _080831D6
- lsls r0, r3, 1
- adds r0, r7
- ldr r4, =0xffff80e1
- adds r1, r2, r4
- strh r1, [r0, 0x16]
- adds r0, 0x56
- adds r4, 0x10
- adds r1, r2, r4
- strh r1, [r0]
- adds r3, 0x1
-_080831D6:
- cmp r3, 0x7
- bgt _080831FA
- ldr r0, =0x000080e1
- 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
-_080831EC:
- strh r4, [r1, 0x16]
- strh r2, [r0]
- adds r0, 0x2
- adds r1, 0x2
- adds r3, 0x1
- cmp r3, 0x7
- ble _080831EC
-_080831FA:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8083170
-
- thumb_func_start sub_8083210
-sub_8083210: @ 8083210
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- ldr r1, =0x00057e40
- muls r0, r1
- cmp r0, 0
- bge _08083222
- ldr r1, =0x0000ffff
- adds r0, r1
-_08083222:
- asrs r0, 16
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8083210
-
- thumb_func_start sub_8083230
-sub_8083230: @ 8083230
- push {r4-r6,lr}
- sub sp, 0x8
- lsls r0, 16
- lsrs r0, 16
- bl sub_8083210
- adds r5, r0, 0
- ldr r0, =gUnknown_020322A4
- ldr r0, [r0]
- adds r1, r0, 0
- adds r1, 0x4E
- ldrh r0, [r1]
- cmp r0, r5
- bcs _0808324E
- strh r5, [r1]
-_0808324E:
- movs r6, 0
-_08083250:
- 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 _08083250
- ldr r2, =0x06006458
- mov r0, sp
- ldr r3, =0x00008072
- 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
- .pool
- thumb_func_end sub_8083230
-
- thumb_func_start sub_80832BC
-sub_80832BC: @ 80832BC
- 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 _080832E0
- bl Random
- lsls r0, 16
- lsrs r0, 16
- adds r1, r5, 0
- bl __umodsi3
- lsrs r1, r4, 17
- subs r0, r1
- strh r0, [r6]
-_080832E0:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80832BC
-
- thumb_func_start sub_80832E8
-sub_80832E8: @ 80832E8
- push {lr}
- adds r1, r0, 0
- ldrh r2, [r1]
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0
- bge _080832FA
- adds r0, r2, 0x1
- strh r0, [r1]
-_080832FA:
- ldrh r2, [r1]
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0
- ble _08083308
- subs r0, r2, 0x1
- strh r0, [r1]
-_08083308:
- pop {r0}
- bx r0
- thumb_func_end sub_80832E8
-
- thumb_func_start sub_808330C
-sub_808330C: @ 808330C
- push {r4,lr}
- ldr r4, =gUnknown_020322A4
- ldr r0, [r4]
- movs r1, 0x8E
- lsls r1, 1
- adds r0, r1
- bl sub_80832E8
- ldr r0, [r4]
- movs r1, 0x8F
- lsls r1, 1
- adds r0, r1
- bl sub_80832E8
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_808330C
-
- thumb_func_start sub_8083334
-sub_8083334: @ 8083334
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r1, 16
- lsrs r1, 16
- movs r5, 0x8
- cmp r1, 0x9
- bhi _08083344
- movs r5, 0x10
-_08083344:
- ldrh r0, [r4]
- movs r2, 0
- ldrsh r1, [r4, r2]
- cmp r1, 0
- bne _08083362
- bl Random
- lsls r0, 16
- lsrs r0, 16
- adds r1, r5, 0
- bl __modsi3
- lsrs r1, r5, 1
- subs r0, r1
- b _08083376
-_08083362:
- cmp r1, 0
- bge _0808336A
- adds r0, 0x1
- strh r0, [r4]
-_0808336A:
- ldrh r1, [r4]
- movs r2, 0
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _08083378
- subs r0, r1, 0x1
-_08083376:
- strh r0, [r4]
-_08083378:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8083334
-
- thumb_func_start sub_8083380
-sub_8083380: @ 8083380
- push {r4,r5,lr}
- ldr r5, =gUnknown_020322A4
- ldr r2, [r5]
- movs r4, 0x84
- lsls r4, 1
- adds r0, r2, r4
- ldr r1, [r0]
- cmp r1, 0
- bne _080833A0
- movs r3, 0x8E
- lsls r3, 1
- adds r0, r2, r3
- strh r1, [r0]
- adds r3, 0x2
- adds r0, r2, r3
- strh r1, [r0]
-_080833A0:
- ldr r0, [r5]
- adds r2, r0, r4
- ldr r1, [r2]
- adds r1, 0x1
- str r1, [r2]
- movs r2, 0x8E
- lsls r2, 1
- adds r0, r2
- lsls r1, 16
- lsrs r1, 16
- bl sub_8083334
- ldr r1, [r5]
- movs r3, 0x8F
- lsls r3, 1
- adds r0, r1, r3
- adds r1, r4
- ldrh r1, [r1]
- bl sub_8083334
- ldr r2, [r5]
- adds r0, r2, r4
- ldr r0, [r0]
- cmp r0, 0x14
- beq _080833DC
- movs r0, 0
- b _080833F0
- .pool
-_080833DC:
- movs r1, 0x8E
- lsls r1, 1
- adds r0, r2, r1
- movs r1, 0
- strh r1, [r0]
- movs r3, 0x8F
- lsls r3, 1
- adds r0, r2, r3
- strh r1, [r0]
- movs r0, 0x1
-_080833F0:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8083380
-
- thumb_func_start sub_80833F8
-sub_80833F8: @ 80833F8
- ldr r1, =gUnknown_020322A4
- ldr r2, [r1]
- movs r3, 0x8E
- 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
- .pool
- thumb_func_end sub_80833F8
-
- thumb_func_start UpdateBerryBlenderRecord
-@ void UpdateBerryBlenderRecord()
-UpdateBerryBlenderRecord: @ 8083418
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r2, [r0]
- ldr r0, =gUnknown_020322A4
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x7C
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 1
- ldr r3, =0x000009bc
- adds r2, r3
- adds r2, r0
- adds r1, 0x4E
- ldrh r1, [r1]
- ldrh r0, [r2]
- cmp r0, r1
- bcs _0808343E
- strh r1, [r2]
-_0808343E:
- pop {r0}
- bx r0
- .pool
- thumb_func_end UpdateBerryBlenderRecord
-
- thumb_func_start berry_blender_related
-berry_blender_related: @ 8083450
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4C
- ldr r1, =gUnknown_020322A4
- ldr r0, [r1]
- ldrb r0, [r0]
- adds r4, r1, 0
- cmp r0, 0x6
- bls _0808346A
- b _08083898
-_0808346A:
- lsls r0, 2
- ldr r1, =_0808347C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0808347C:
- .4byte _08083498
- .4byte _080834AE
- .4byte _080834C8
- .4byte _08083518
- .4byte _08083790
- .4byte _080837A8
- .4byte _0808386C
-_08083498:
- ldr r1, [r4]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r4]
- movs r1, 0x84
- lsls r1, 1
- adds r0, r1
- movs r1, 0x11
- str r1, [r0]
- b _08083898
-_080834AE:
- ldr r1, [r4]
- movs r3, 0x84
- lsls r3, 1
- adds r2, r1, r3
- ldr r0, [r2]
- subs r0, 0xA
- str r0, [r2]
- cmp r0, 0
- blt _080834C2
- b _08083898
-_080834C2:
- movs r0, 0
- str r0, [r2]
- b _08083854
-_080834C8:
- ldr r1, [r4]
- movs r0, 0x84
- lsls r0, 1
- adds r1, r0
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x14
- bgt _080834DC
- b _08083898
-_080834DC:
- movs r6, 0
-_080834DE:
- ldr r4, =gUnknown_020322A4
- ldr r0, [r4]
- adds r0, 0x46
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- bl DestroySprite
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x2
- bls _080834DE
- ldr r1, [r4]
- movs r3, 0x84
- lsls r3, 1
- adds r2, r1, r3
- movs r0, 0
- str r0, [r2]
- b _08083854
- .pool
-_08083518:
- ldr r4, =sText_BlendingResults
- movs r0, 0x1
- adds r1, r4, 0
- movs r2, 0xA8
- bl GetStringCenterAlignXOffset
- lsls r2, r0, 24
- lsrs r2, 24
- movs r0, 0xFF
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- movs r0, 0x5
- adds r1, r4, 0
- movs r3, 0x1
- bl sub_80840D4
- ldr r1, =gUnknown_020322A4
- ldr r0, [r1]
- adds r2, r0, 0
- adds r2, 0x7C
- ldrb r0, [r2]
- movs r3, 0x15
- mov r9, r3
- cmp r0, 0x4
- bne _08083550
- movs r0, 0x11
- mov r9, r0
-_08083550:
- movs r6, 0
- mov r3, sp
- adds r3, 0x10
- str r3, [sp, 0x48]
- ldrb r2, [r2]
- cmp r6, r2
- bcs _0808361A
- adds r7, r1, 0
- movs r0, 0x3
- mov r10, r0
-_08083564:
- ldr r0, [r7]
- movs r2, 0x9E
- lsls r2, 1
- adds r1, r0, r2
- adds r1, r6
- ldrb r5, [r1]
- adds r0, 0x9F
- adds r6, 0x1
- mov r8, r6
- mov r1, r8
- movs r2, 0
- movs r3, 0x1
- bl ConvertIntToDecimalStringN
- ldr r0, [r7]
- adds r0, 0x9F
- ldr r1, =sText_Dot
- bl StringAppend
- ldr r0, [r7]
- adds r0, 0x9F
- ldr r1, =gText_Space
- bl StringAppend
- ldr r0, [r7]
- adds r0, 0x9F
- lsls r4, r5, 3
- subs r4, r5
- lsls r4, 2
- ldr r3, =gLinkPlayers + 8
- adds r1, r4, r3
- bl StringAppend
- ldr r1, [r7]
- adds r1, 0x9F
- mov r0, r9
- lsls r6, r0, 24
- lsrs r6, 24
- movs r2, 0xFF
- str r2, [sp]
- mov r3, r10
- str r3, [sp, 0x4]
- movs r0, 0x5
- movs r2, 0x8
- adds r3, r6, 0
- bl sub_80840D4
- ldr r1, [r7]
- adds r0, r1, 0
- adds r0, 0x9F
- lsls r5, 4
- adds r5, r1
- movs r1, 0xAD
- lsls r1, 1
- adds r5, r1
- adds r1, r5, 0
- bl StringCopy
- ldr r0, [r7]
- adds r0, 0x9F
- ldr r2, =gLinkPlayers
- adds r4, r2
- ldrb r1, [r4, 0x1A]
- bl ConvertInternationalString
- ldr r0, [r7]
- adds r0, 0x9F
- ldr r1, =sText_SpaceBerry
- bl StringAppend
- ldr r1, [r7]
- adds r1, 0x9F
- movs r3, 0xFF
- str r3, [sp]
- mov r0, r10
- str r0, [sp, 0x4]
- movs r0, 0x5
- movs r2, 0x54
- adds r3, r6, 0
- bl sub_80840D4
- movs r1, 0x10
- add r9, r1
- mov r2, r8
- lsls r2, 16
- lsrs r6, r2, 16
- ldr r0, [r7]
- adds r0, 0x7C
- ldrb r0, [r0]
- cmp r6, r0
- bcc _08083564
-_0808361A:
- ldr r1, =sText_MaximumSpeed
- movs r3, 0xFF
- mov r10, r3
- str r3, [sp]
- movs r0, 0x3
- mov r9, r0
- str r0, [sp, 0x4]
- movs r0, 0x5
- movs r2, 0
- movs r3, 0x51
- bl sub_80840D4
- ldr r6, =gUnknown_020322A4
- ldr r0, [r6]
- adds r4, r0, 0
- adds r4, 0x9F
- adds r0, 0x4E
- ldrh r0, [r0]
- movs r1, 0x64
- bl __udivsi3
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r0, [r6]
- adds r0, 0x9F
- ldr r1, =sText_Dot
- bl StringAppend
- ldr r0, [r6]
- adds r0, 0x4E
- ldrh r0, [r0]
- movs r1, 0x64
- bl __umodsi3
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldr r0, [sp, 0x48]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r0, [r6]
- adds r0, 0x9F
- ldr r1, [sp, 0x48]
- bl StringAppend
- ldr r0, [r6]
- adds r0, 0x9F
- ldr r1, =sText_RPM
- bl StringAppend
- ldr r1, [r6]
- adds r1, 0x9F
- movs r0, 0x1
- movs r2, 0xA8
- bl GetStringRightAlignXOffset
- ldr r1, [r6]
- adds r1, 0x9F
- lsls r2, r0, 24
- lsrs r2, 24
- mov r3, r10
- str r3, [sp]
- mov r0, r9
- str r0, [sp, 0x4]
- movs r0, 0x5
- movs r3, 0x51
- bl sub_80840D4
- ldr r1, =sText_Time
- mov r2, r10
- str r2, [sp]
- mov r3, r9
- str r3, [sp, 0x4]
- movs r0, 0x5
- movs r2, 0
- movs r3, 0x61
- bl sub_80840D4
- ldr r5, [r6]
- movs r1, 0x82
- lsls r1, 1
- adds r0, r5, r1
- ldr r0, [r0]
- mov r8, r0
- movs r1, 0x3C
- bl __udivsi3
- movs r1, 0x3C
- bl __umodsi3
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- movs r1, 0xE1
- lsls r1, 4
- mov r0, r8
- bl __udivsi3
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r5, 0x9F
- adds r0, r5, 0
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r0, [r6]
- adds r0, 0x9F
- ldr r1, =sText_Min
- bl StringAppend
- adds r1, r4, 0
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r0, [r6]
- adds r0, 0x9F
- ldr r1, =sText_Sec
- bl StringAppend
- ldr r1, [r6]
- adds r1, 0x9F
- movs r0, 0x1
- movs r2, 0xA8
- bl GetStringRightAlignXOffset
- ldr r1, [r6]
- adds r1, 0x9F
- lsls r2, r0, 24
- lsrs r2, 24
- mov r3, r10
- str r3, [sp]
- mov r0, r9
- str r0, [sp, 0x4]
- movs r0, 0x5
- movs r3, 0x61
- bl sub_80840D4
- ldr r1, [r6]
- movs r3, 0x84
- lsls r3, 1
- adds r2, r1, r3
- movs r0, 0
- str r0, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0x5
- movs r1, 0x2
- bl CopyWindowToVram
- b _08083898
- .pool
-_08083790:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0808379E
- b _08083898
-_0808379E:
- ldr r1, [r4]
- b _08083854
- .pool
-_080837A8:
- movs r0, 0x5
- movs r1, 0x1
- bl sub_8198070
- movs r6, 0
- add r7, sp, 0x40
- ldr r5, =gUnknown_020322A4
-_080837B6:
- ldr r0, [r5]
- lsls r2, r6, 1
- adds r0, 0x74
- adds r0, r2
- ldrh r1, [r0]
- cmp r1, 0
- beq _080837CC
- add r0, sp, 0x38
- adds r0, r2
- subs r1, 0x85
- strh r1, [r0]
-_080837CC:
- ldr r0, [r5]
- adds r0, 0x8E
- adds r0, r2
- ldrh r0, [r0]
- cmp r0, 0xFF
- beq _080837EA
- lsls r4, r6, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl PutWindowTilemap
- adds r0, r4, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_080837EA:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x3
- bls _080837B6
- bl sub_8081E20
- ldr r4, =gUnknown_020322A4
- ldr r3, [r4]
- movs r1, 0xAC
- lsls r1, 1
- adds r0, r3, r1
- adds r1, r3, 0
- adds r1, 0x7C
- ldrb r2, [r1]
- subs r1, 0x2E
- ldrh r1, [r1]
- str r1, [sp]
- adds r1, r7, 0
- add r3, sp, 0x8
- bl sub_8081BE0
- ldr r1, [r4]
- adds r1, 0x9F
- adds r0, r7, 0
- bl sub_80838AC
- ldr r1, [r4]
- movs r2, 0xD4
- lsls r2, 1
- adds r1, r2
- adds r0, r7, 0
- bl sub_8083F94
- ldr r0, =sub_8083F3C
- movs r1, 0x6
- bl CreateTask
- bl sub_80EECEC
- ldr r0, =gSpecialVar_ItemId
- ldrh r0, [r0]
- movs r1, 0x1
- bl RemoveBagItem
- adds r0, r7, 0
- bl sub_8136F2C
- ldr r1, [r4]
- ldr r3, =0x000011b8
- adds r2, r1, r3
- movs r0, 0
- strh r0, [r2]
-_08083854:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08083898
- .pool
-_0808386C:
- ldr r4, [r4]
- ldr r0, =0x000011b8
- adds r5, r4, r0
- adds r4, 0x9F
- bl sav2_get_text_speed
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_808417C
- cmp r0, 0
- beq _08083898
- bl UpdateBerryBlenderRecord
- movs r0, 0x1
- b _0808389A
- .pool
-_08083898:
- movs r0, 0
-_0808389A:
- add sp, 0x4C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end berry_blender_related
-
- thumb_func_start sub_80838AC
-sub_80838AC: @ 80838AC
- push {r4-r6,lr}
- sub sp, 0xC
- adds r5, r0, 0
- adds r6, r1, 0
- movs r0, 0xFF
- strb r0, [r6]
- ldr r1, =gPokeblockNames
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- adds r0, r6, 0
- bl StringCopy
- ldr r1, =gText_WasMade
- adds r0, r6, 0
- bl StringAppend
- ldr r1, =sText_NewLine
- adds r0, r6, 0
- bl StringAppend
- adds r0, r5, 0
- bl sub_8136EA4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- bl sub_8136EDC
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r1, =sText_TheLevelIs
- 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, =sText_TheFeelIs
- 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, =sText_Dot2
- adds r0, r6, 0
- bl StringAppend
- ldr r1, =gText_NewParagraph
- adds r0, r6, 0
- bl StringAppend
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80838AC
-
- thumb_func_start sub_808395C
-sub_808395C: @ 808395C
- 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 _080839A8
-_08083972:
- movs r5, 0
- adds r1, r0, 0x1
- mov r8, r1
- cmp r5, r7
- bge _080839A2
- mov r1, r9
- adds r6, r1, r0
-_08083980:
- 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 _0808399C
- strb r3, [r6]
- strb r4, [r2]
-_0808399C:
- adds r5, 0x1
- cmp r5, r7
- blt _08083980
-_080839A2:
- mov r0, r8
- cmp r0, r7
- blt _08083972
-_080839A8:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_808395C
-
- thumb_func_start sub_80839B4
-sub_80839B4: @ 80839B4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- movs r5, 0
- ldr r2, =gUnknown_020322A4
- ldr r0, [r2]
- adds r0, 0x7C
- adds r1, r2, 0
- add r3, sp, 0x4
- mov r10, r3
- b _080839E4
- .pool
-_080839D4:
- mov r4, sp
- adds r0, r4, r5
- strb r5, [r0]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, [r2]
- adds r0, 0x7C
-_080839E4:
- ldrb r0, [r0]
- cmp r5, r0
- bcc _080839D4
- movs r5, 0
- ldr r0, [r1]
- adds r1, r0, 0
- adds r1, 0x7C
- ldrb r2, [r1]
- cmp r5, r2
- bcs _08083A5E
- mov r9, r10
- movs r3, 0x92
- lsls r3, 1
- adds r3, r0
- mov r8, r3
- mov r12, r1
- movs r4, 0x93
- lsls r4, 1
- adds r7, r0, r4
- movs r1, 0x94
- lsls r1, 1
- adds r6, r0, r1
-_08083A10:
- 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 _08083A10
-_08083A5E:
- ldr r4, =gUnknown_020322A4
- ldr r0, [r4]
- adds r0, 0x7C
- ldrb r1, [r0]
- mov r0, sp
- mov r2, r10
- bl sub_808395C
- movs r5, 0
- ldr r0, [r4]
- adds r0, 0x7C
- ldrb r0, [r0]
- cmp r5, r0
- bcs _08083A9E
- adds r2, r4, 0
- movs r3, 0x9E
- lsls r3, 1
-_08083A80:
- 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, 0x7C
- ldrb r0, [r0]
- cmp r5, r0
- bcc _08083A80
-_08083A9E:
- ldr r0, =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _08083AB4
- movs r3, 0
- b _08083ABC
- .pool
-_08083AB4:
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r3, r0, 24
-_08083ABC:
- movs r5, 0
- ldr r1, =gUnknown_020322A4
- ldr r0, [r1]
- adds r0, 0x7C
- ldrb r0, [r0]
- cmp r5, r0
- bcs _08083AF2
- movs r6, 0x9E
- lsls r6, 1
- movs r4, 0xD2
- lsls r4, 1
-_08083AD2:
- ldr r2, [r1]
- adds r0, r2, r6
- adds r0, r5
- ldrb r0, [r0]
- cmp r0, r3
- bne _08083AE2
- adds r0, r2, r4
- strb r5, [r0]
-_08083AE2:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, [r1]
- adds r0, 0x7C
- ldrb r0, [r0]
- cmp r5, r0
- bcc _08083AD2
-_08083AF2:
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80839B4
-
- thumb_func_start sub_8083B08
-sub_8083B08: @ 8083B08
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- ldr r1, =gUnknown_020322A4
- ldr r0, [r1]
- ldrb r0, [r0]
- adds r2, r1, 0
- cmp r0, 0x6
- bls _08083B22
- b _08083E12
-_08083B22:
- lsls r0, 2
- ldr r1, =_08083B34
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08083B34:
- .4byte _08083B50
- .4byte _08083B66
- .4byte _08083B80
- .4byte _08083B9A
- .4byte _08083DC8
- .4byte _08083DE2
- .4byte _08083E08
-_08083B50:
- ldr r1, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r2]
- movs r1, 0x84
- lsls r1, 1
- adds r0, r1
- movs r1, 0xFF
- str r1, [r0]
- b _08083E12
-_08083B66:
- ldr r1, [r2]
- movs r3, 0x84
- lsls r3, 1
- adds r2, r1, r3
- ldr r0, [r2]
- subs r0, 0xA
- str r0, [r2]
- cmp r0, 0
- blt _08083B7A
- b _08083E12
-_08083B7A:
- movs r0, 0
- str r0, [r2]
- b _08083DF8
-_08083B80:
- ldr r1, [r2]
- movs r0, 0x84
- lsls r0, 1
- adds r2, r1, r0
- ldr r0, [r2]
- adds r0, 0x1
- str r0, [r2]
- cmp r0, 0x14
- bgt _08083B94
- b _08083E12
-_08083B94:
- movs r0, 0
- str r0, [r2]
- b _08083DF8
-_08083B9A:
- movs r0, 0x5
- movs r1, 0
- movs r2, 0x1
- movs r3, 0xD
- bl SetWindowBorderStyle
- ldr r4, =sText_Ranking
- movs r0, 0x1
- adds r1, r4, 0
- movs r2, 0xA8
- bl GetStringCenterAlignXOffset
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- movs r0, 0xFF
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- movs r0, 0x5
- adds r1, r4, 0
- movs r3, 0x1
- bl sub_80840D4
- ldr r1, =gUnknown_08339B40
- mov r8, r1
- mov r0, r8
- movs r1, 0x80
- movs r2, 0x34
- movs r3, 0
- bl CreateSprite
- ldr r7, =gUnknown_020322A4
- ldr r1, [r7]
- adds r1, 0x46
- strb r0, [r1]
- ldr r0, [r7]
- adds r0, 0x46
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r6, =gSprites
- adds r0, r6
- movs r1, 0x3
- bl StartSpriteAnim
- ldr r0, [r7]
- adds r0, 0x46
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r5, r6, 0
- adds r5, 0x1C
- adds r0, r5
- ldr r4, =SpriteCallbackDummy
- str r4, [r0]
- mov r0, r8
- movs r1, 0xA0
- movs r2, 0x34
- movs r3, 0
- bl CreateSprite
- ldr r1, [r7]
- adds r1, 0x47
- strb r0, [r1]
- ldr r0, [r7]
- adds r0, 0x47
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- str r4, [r0]
- mov r0, r8
- movs r1, 0xC0
- movs r2, 0x34
- movs r3, 0
- bl CreateSprite
- ldr r1, [r7]
- adds r1, 0x48
- strb r0, [r1]
- ldr r0, [r7]
- adds r0, 0x48
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x1
- bl StartSpriteAnim
- ldr r0, [r7]
- adds r0, 0x48
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- str r4, [r0]
- bl sub_80839B4
- movs r2, 0x29
- str r2, [sp, 0x8]
- movs r2, 0
- ldr r0, [r7]
- adds r0, 0x7C
- ldrb r0, [r0]
- cmp r2, r0
- bcc _08083C7C
- b _08083D8A
-_08083C7C:
- movs r3, 0xFF
- mov r10, r3
- movs r0, 0x3
- mov r9, r0
-_08083C84:
- ldr r0, [r7]
- movs r3, 0x9E
- lsls r3, 1
- adds r1, r0, r3
- adds r1, r2
- ldrb r5, [r1]
- adds r0, 0x9F
- adds r2, 0x1
- mov r8, r2
- mov r1, r8
- movs r2, 0
- movs r3, 0x1
- bl ConvertIntToDecimalStringN
- ldr r0, [r7]
- adds r0, 0x9F
- ldr r1, =sText_Dot
- bl StringAppend
- ldr r0, [r7]
- adds r0, 0x9F
- ldr r1, =gText_Space
- bl StringAppend
- ldr r0, [r7]
- adds r0, 0x9F
- lsls r1, r5, 3
- subs r1, r5
- lsls r1, 2
- ldr r2, =gLinkPlayers + 8
- adds r1, r2
- bl StringAppend
- ldr r1, [r7]
- adds r1, 0x9F
- ldr r0, [sp, 0x8]
- lsls r6, r0, 24
- lsrs r6, 24
- mov r2, r10
- str r2, [sp]
- mov r3, r9
- str r3, [sp, 0x4]
- movs r0, 0x5
- movs r2, 0
- adds r3, r6, 0
- bl sub_80840D4
- ldr r1, [r7]
- adds r0, r1, 0
- adds r0, 0x9F
- lsls r4, r5, 1
- adds r4, r5
- lsls r4, 1
- movs r2, 0x92
- lsls r2, 1
- adds r1, r2
- adds r1, r4
- ldrh r1, [r1]
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r1, [r7]
- adds r1, 0x9F
- mov r3, r10
- str r3, [sp]
- mov r0, r9
- str r0, [sp, 0x4]
- movs r0, 0x5
- movs r2, 0x4E
- adds r3, r6, 0
- bl sub_80840D4
- ldr r1, [r7]
- adds r0, r1, 0
- adds r0, 0x9F
- movs r2, 0x93
- lsls r2, 1
- adds r1, r2
- adds r1, r4
- ldrh r1, [r1]
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r1, [r7]
- adds r1, 0x9F
- mov r3, r10
- str r3, [sp]
- mov r0, r9
- str r0, [sp, 0x4]
- movs r0, 0x5
- movs r2, 0x6E
- adds r3, r6, 0
- bl sub_80840D4
- ldr r1, [r7]
- adds r0, r1, 0
- adds r0, 0x9F
- movs r2, 0x94
- lsls r2, 1
- adds r1, r2
- adds r1, r4
- ldrh r1, [r1]
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- ldr r1, [r7]
- adds r1, 0x9F
- mov r3, r10
- str r3, [sp]
- mov r0, r9
- str r0, [sp, 0x4]
- movs r0, 0x5
- movs r2, 0x8E
- adds r3, r6, 0
- bl sub_80840D4
- ldr r1, [sp, 0x8]
- adds r1, 0x10
- str r1, [sp, 0x8]
- mov r2, r8
- lsls r2, 16
- lsrs r2, 16
- ldr r0, [r7]
- adds r0, 0x7C
- ldrb r0, [r0]
- cmp r2, r0
- bcs _08083D8A
- b _08083C84
-_08083D8A:
- movs r0, 0x5
- bl PutWindowTilemap
- movs r0, 0x5
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r0, =gUnknown_020322A4
- ldr r1, [r0]
- movs r3, 0x84
- lsls r3, 1
- adds r2, r1, r3
- movs r0, 0
- str r0, [r2]
- b _08083DF8
- .pool
-_08083DC8:
- ldr r2, [r2]
- movs r0, 0x84
- lsls r0, 1
- adds r1, r2, r0
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x14
- ble _08083E12
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- b _08083E12
-_08083DE2:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08083E12
- movs r0, 0x5
- bl PlaySE
- ldr r0, =gUnknown_020322A4
- ldr r1, [r0]
-_08083DF8:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08083E12
- .pool
-_08083E08:
- ldr r1, [r2]
- movs r0, 0
- strb r0, [r1]
- movs r0, 0x1
- b _08083E14
-_08083E12:
- movs r0, 0
-_08083E14:
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8083B08
-
- thumb_func_start ShowBerryBlenderRecordWindow
-ShowBerryBlenderRecordWindow: @ 8083E24
- push {r4-r7,lr}
- sub sp, 0x34
- ldr r0, =gUnknown_08339D14
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp, 0x2C]
- str r1, [sp, 0x30]
- ldr r5, =gUnknown_0203AB74
- add r0, sp, 0x2C
- bl AddWindow
- strb r0, [r5]
- ldrb r0, [r5]
- movs r1, 0
- bl sub_81973FC
- ldrb r0, [r5]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r6, =gText_BlenderMaxSpeedRecord
- movs r0, 0x1
- adds r1, r6, 0
- movs r2, 0x90
- bl GetStringCenterAlignXOffset
- adds r3, r0, 0
- ldrb r0, [r5]
- lsls r3, 24
- lsrs r3, 24
- movs r1, 0x1
- str r1, [sp]
- movs r4, 0
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r2, r6, 0
- bl PrintTextOnWindow
- ldrb r0, [r5]
- ldr r2, =gText_234Players
- movs r1, 0x29
- str r1, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0x4
- bl PrintTextOnWindow
- movs r6, 0
- movs r7, 0xA4
- lsls r7, 22
-_08083E8A:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- lsls r1, r6, 1
- ldr r2, =0x000009bc
- adds r0, r2
- adds r0, r1
- ldrh r4, [r0]
- adds r0, r4, 0
- movs r1, 0x64
- bl __udivsi3
- adds r1, r0, 0
- add r0, sp, 0xC
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r5, r0, 0
- ldr r1, =sText_Dot
- bl StringAppend
- adds r5, r0, 0
- 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, =sText_RPM
- bl StringAppend
- movs r0, 0x1
- add r1, sp, 0xC
- movs r2, 0x8C
- bl GetStringRightAlignXOffset
- adds r3, r0, 0
- ldr r4, =gUnknown_0203AB74
- ldrb r0, [r4]
- lsls r3, 24
- lsrs r3, 24
- lsrs r1, r7, 24
- str r1, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r1, 0x1
- add r2, sp, 0xC
- bl PrintTextOnWindow
- movs r0, 0x80
- lsls r0, 21
- adds r7, r0
- adds r6, 0x1
- cmp r6, 0x2
- ble _08083E8A
- ldrb r0, [r4]
- bl PutWindowTilemap
- ldrb r0, [r4]
- movs r1, 0x3
- bl CopyWindowToVram
- add sp, 0x34
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ShowBerryBlenderRecordWindow
-
- thumb_func_start sub_8083F3C
-sub_8083F3C: @ 8083F3C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r1, =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 _08083F62
- ldr r0, =0x0000016f
- bl PlayFanfare
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_08083F62:
- bl IsFanfareTaskInactive
- lsls r0, 24
- cmp r0, 0
- beq _08083F82
- ldr r0, =gUnknown_020322A4
- ldr r0, [r0]
- movs r1, 0xAA
- lsls r1, 1
- adds r0, r1
- ldrh r0, [r0]
- bl PlayBGM
- adds r0, r5, 0
- bl DestroyTask
-_08083F82:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8083F3C
-
- thumb_func_start sub_8083F94
-sub_8083F94: @ 8083F94
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- adds r6, r0, 0
- adds r7, r1, 0
- bl sub_8136EA4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r6, 0
- bl sub_8136EDC
- adds r1, r0, 0
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 1
- lsls r1, 24
- lsrs r1, 24
- bl __divsi3
- lsls r0, 16
- lsrs r3, r0, 16
- strb r3, [r7, 0xD]
- ldrb r0, [r6]
- strb r0, [r7, 0xC]
- movs r0, 0xFF
- strb r0, [r7]
- ldr r0, =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _080840C4
- ldr r0, =gUnknown_020322A4
- ldr r2, [r0]
- movs r4, 0xD2
- lsls r4, 1
- adds r1, r2, r4
- ldrb r1, [r1]
- mov r8, r0
- cmp r1, 0
- bne _08084058
- cmp r3, 0x14
- bls _08084058
- adds r0, r2, 0
- adds r0, 0x7C
- ldrb r1, [r0]
- subs r1, 0x1
- movs r0, 0x9E
- lsls r0, 1
- mov r9, r0
- adds r0, r2, r0
- adds r0, r1
- ldrb r0, [r0]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- ldr r5, =gLinkPlayers + 8
- adds r1, r5
- adds r0, r7, 0
- bl StringCopy
- adds r0, r6, 0
- bl sub_81370B4
- strb r0, [r7, 0xB]
- ldrb r1, [r7, 0xB]
- ldrb r2, [r7, 0xC]
- ldrb r3, [r7, 0xD]
- mov r6, r8
- ldr r4, [r6]
- adds r0, r4, 0
- adds r0, 0x7C
- ldrb r0, [r0]
- subs r0, 0x1
- add r4, r9
- adds r4, r0
- ldrb r4, [r4]
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- adds r5, r0
- ldrb r0, [r5, 0x12]
- str r0, [sp]
- adds r0, r7, 0
- bl Put3CheersForPokeblocksOnTheAir
- lsls r0, 24
- cmp r0, 0
- bne _080840BA
- b _080840C4
- .pool
-_08084058:
- mov r0, r8
- ldr r2, [r0]
- movs r1, 0xD2
- lsls r1, 1
- adds r0, r2, r1
- ldrb r1, [r0]
- adds r0, r2, 0
- adds r0, 0x7C
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r1, r0
- bne _080840C4
- cmp r3, 0x14
- bhi _080840C4
- movs r4, 0x9E
- lsls r4, 1
- adds r0, r2, r4
- ldrb r0, [r0]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- ldr r5, =gLinkPlayers + 8
- adds r1, r5
- adds r0, r7, 0
- bl StringCopy
- adds r0, r6, 0
- bl sub_81370B4
- strb r0, [r7, 0xB]
- ldrb r1, [r7, 0xB]
- ldrb r2, [r7, 0xC]
- ldrb r3, [r7, 0xD]
- mov r6, r8
- ldr r0, [r6]
- adds r0, r4
- ldrb r4, [r0]
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- adds r5, r0
- ldrb r0, [r5, 0x12]
- str r0, [sp]
- adds r0, r7, 0
- bl Put3CheersForPokeblocksOnTheAir
- lsls r0, 24
- cmp r0, 0
- beq _080840C4
-_080840BA:
- movs r0, 0x1
- b _080840C6
- .pool
-_080840C4:
- movs r0, 0
-_080840C6:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8083F94
-
- thumb_func_start sub_80840D4
-sub_80840D4: @ 80840D4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x18
- mov r9, r1
- ldr r4, [sp, 0x38]
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- lsls r3, 24
- lsrs r7, r3, 24
- movs r5, 0
- cmp r4, 0x1
- beq _08084116
- cmp r4, 0x1
- bgt _08084100
- cmp r4, 0
- beq _08084108
- b _08084132
-_08084100:
- cmp r4, 0x2
- beq _08084124
- cmp r4, 0x3
- bne _08084136
-_08084108:
- add r1, sp, 0x14
- movs r0, 0x1
- strb r0, [r1]
- movs r0, 0x2
- strb r0, [r1, 0x1]
- movs r0, 0x3
- b _08084130
-_08084116:
- add r0, sp, 0x14
- strb r5, [r0]
- adds r1, r0, 0
- movs r0, 0x2
- strb r0, [r1, 0x1]
- movs r0, 0x3
- b _08084130
-_08084124:
- add r0, sp, 0x14
- strb r5, [r0]
- adds r1, r0, 0
- movs r0, 0x4
- strb r0, [r1, 0x1]
- movs r0, 0x5
-_08084130:
- strb r0, [r1, 0x2]
-_08084132:
- cmp r4, 0x3
- beq _08084148
-_08084136:
- add r0, sp, 0x14
- ldrb r0, [r0]
- lsls r1, r0, 4
- orrs r1, r0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r6, 0
- bl FillWindowPixelBuffer
-_08084148:
- movs r0, 0
- str r0, [sp]
- movs r0, 0x1
- str r0, [sp, 0x4]
- add r0, sp, 0x14
- str r0, [sp, 0x8]
- ldr r0, [sp, 0x34]
- lsls r0, 24
- asrs r0, 24
- str r0, [sp, 0xC]
- mov r0, r9
- str r0, [sp, 0x10]
- adds r0, r6, 0
- movs r1, 0x1
- mov r2, r8
- adds r3, r7, 0
- bl AddTextPrinterParametrized2
- add sp, 0x18
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80840D4
-
- thumb_func_start sub_808417C
-sub_808417C: @ 808417C
- push {r4-r7,lr}
- sub sp, 0x8
- adds r5, r0, 0
- adds r7, r1, 0
- adds r6, r2, 0
- movs r0, 0
- ldrsh r4, [r5, r0]
- cmp r4, 0
- beq _08084194
- cmp r4, 0x1
- beq _080841C6
- b _080841DA
-_08084194:
- movs r0, 0x4
- movs r1, 0
- movs r2, 0x14
- movs r3, 0xF
- bl sub_8197B1C
- str r6, [sp]
- str r4, [sp, 0x4]
- movs r0, 0x4
- adds r1, r7, 0
- movs r2, 0
- movs r3, 0x1
- bl sub_80840D4
- movs r0, 0x4
- bl PutWindowTilemap
- movs r0, 0x4
- movs r1, 0x3
- bl CopyWindowToVram
- ldrh r0, [r5]
- adds r0, 0x1
- strh r0, [r5]
- b _080841DA
-_080841C6:
- movs r0, 0x4
- bl IsTextPrinterActive
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- bne _080841DA
- strh r0, [r5]
- movs r0, 0x1
- b _080841DC
-_080841DA:
- movs r0, 0
-_080841DC:
- add sp, 0x8
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_808417C
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/bike.s b/asm/bike.s
index b5d40a312..89791b987 100644
--- a/asm/bike.s
+++ b/asm/bike.s
@@ -2004,7 +2004,7 @@ GetOnOffBike: @ 811A080
beq _0811A0B0
movs r0, 0x1
bl SetPlayerAvatarTransitionFlags
- bl sav1_reset_battle_music_maybe
+ bl Overworld_ClearSavedMusic
bl sub_8085784
b _0811A0C4
.pool
diff --git a/asm/cable_club.s b/asm/cable_club.s
index 2ce8bb0b1..611b87eef 100644
--- a/asm/cable_club.s
+++ b/asm/cable_club.s
@@ -244,7 +244,7 @@ sub_80B252C: @ 80B252C
lsrs r1, r0, 24
cmp r1, 0
bne _080B2570
- ldr r0, =gUnknown_020229C6
+ ldr r0, =gLinkType
strh r1, [r0]
ldr r1, =gTasks
lsls r0, r4, 2
@@ -286,7 +286,7 @@ _080B258E:
b _080B25BA
.pool
_080B25A4:
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
movs r0, 0
strh r0, [r1]
ldr r1, =gTasks
@@ -743,7 +743,7 @@ _080B2994:
strb r0, [r1]
ldrb r0, [r4]
bl sub_800AA04
- ldr r4, =gUnknown_020228C4
+ ldr r4, =gBlockSendBuffer
adds r0, r4, 0
bl sub_80C30A4
ldr r0, =gUnknown_0203CEF8
@@ -833,7 +833,7 @@ _080B2A6C:
strb r0, [r1]
ldrb r0, [r4]
bl sub_800AA04
- ldr r4, =gUnknown_020228C4
+ ldr r4, =gBlockSendBuffer
adds r0, r4, 0
bl sub_80C30A4
ldr r0, =gUnknown_0203CEF8
@@ -964,7 +964,7 @@ task_map_chg_seq_0807EC34: @ 80B2B94
ldrh r0, [r5]
cmp r0, 0x1
bne _080B2C10
- ldr r0, =gUnknown_020229C6
+ ldr r0, =gLinkType
ldrh r2, [r0]
ldr r0, =0x00002266
cmp r2, r0
@@ -1215,20 +1215,20 @@ _080B2DC0:
b _080B2E34
_080B2DCA:
movs r3, 0x2
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r4, =0x00002233
b _080B2E30
.pool
_080B2DDC:
movs r3, 0x2
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r4, =0x00002244
b _080B2E30
.pool
_080B2DEC:
movs r3, 0x4
movs r2, 0x4
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r4, =0x00002255
b _080B2E30
.pool
@@ -1243,12 +1243,12 @@ _080B2E00:
ands r0, r1
cmp r0, 0
bne _080B2E2C
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r4, =0x00002266
b _080B2E30
.pool
_080B2E2C:
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r4, =0x00002277
_080B2E30:
adds r0, r4, 0
@@ -1266,7 +1266,7 @@ _080B2E34:
thumb_func_start sub_80B2E4C
sub_80B2E4C: @ 80B2E4C
push {lr}
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00001133
adds r0, r2, 0
strh r0, [r1]
@@ -1287,7 +1287,7 @@ sub_80B2E74: @ 80B2E74
ldr r1, =gSpecialVar_Result
movs r0, 0
strh r0, [r1]
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00003311
adds r0, r2, 0
strh r0, [r1]
@@ -1454,7 +1454,7 @@ _080B2FC6:
thumb_func_start sub_80B2FD8
sub_80B2FD8: @ 80B2FD8
push {lr}
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00004411
adds r0, r2, 0
strh r0, [r1]
@@ -1472,7 +1472,7 @@ sub_80B2FD8: @ 80B2FD8
thumb_func_start sub_80B3000
sub_80B3000: @ 80B3000
push {lr}
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00006601
adds r0, r2, 0
strh r0, [r1]
@@ -1490,7 +1490,7 @@ sub_80B3000: @ 80B3000
thumb_func_start sub_80B3028
sub_80B3028: @ 80B3028
push {lr}
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00006602
adds r0, r2, 0
strh r0, [r1]
@@ -1540,17 +1540,17 @@ _080B3084:
.4byte _080B3128
.4byte _080B30D8
_080B30A8:
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00002233
b _080B3124
.pool
_080B30B8:
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00002244
b _080B3124
.pool
_080B30C8:
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00002255
b _080B3124
.pool
@@ -1564,22 +1564,22 @@ _080B30D8:
ands r0, r1
cmp r0, 0
bne _080B3100
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00002266
b _080B3124
.pool
_080B3100:
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00002277
b _080B3124
.pool
_080B3110:
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00001111
b _080B3124
.pool
_080B3120:
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00003322
_080B3124:
adds r0, r2, 0
@@ -1809,7 +1809,7 @@ _080B32F8:
movs r0, 0x1
movs r1, 0
bl fade_screen
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00002211
adds r0, r2, 0
strh r0, [r1]
@@ -1922,7 +1922,7 @@ _080B3408:
movs r0, 0x1
movs r1, 0
bl fade_screen
- ldr r0, =gUnknown_020229C6
+ ldr r0, =gLinkType
ldr r2, =0x00002211
adds r1, r2, 0
strh r1, [r0]
@@ -2548,7 +2548,7 @@ nullsub_37: @ 80B3964
thumb_func_start sub_80B3968
sub_80B3968: @ 80B3968
push {lr}
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00002211
adds r0, r2, 0
strh r0, [r1]
@@ -2829,7 +2829,7 @@ sub_80B3BC4: @ 80B3BC4
ldrb r0, [r0]
cmp r0, 0
bne _080B3BD6
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00002288
adds r0, r2, 0
strh r0, [r1]
diff --git a/asm/clock.s b/asm/clock.s
deleted file mode 100644
index 5d771a8b6..000000000
--- a/asm/clock.s
+++ /dev/null
@@ -1,175 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_809E778
-sub_809E778: @ 809E778
- push {lr}
- ldr r0, =0x00000895
- bl FlagSet
- bl RtcCalcLocalTime
- ldr r0, =gSaveBlock2Ptr
- ldr r2, [r0]
- adds r2, 0xA0
- ldr r3, =gLocalTime
- ldr r0, [r3]
- ldr r1, [r3, 0x4]
- str r0, [r2]
- str r1, [r2, 0x4]
- ldr r0, =0x00004040
- ldrh r1, [r3]
- bl VarSet
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_809E778
-
- thumb_func_start DoTimeBasedEvents
-DoTimeBasedEvents: @ 809E7B0
- push {r4,lr}
- ldr r0, =0x00000895
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _0809E7DA
- bl sub_813B9C0
- lsls r0, 24
- cmp r0, 0
- bne _0809E7DA
- bl RtcCalcLocalTime
- ldr r4, =gLocalTime
- adds r0, r4, 0
- bl sub_809E7E8
- adds r0, r4, 0
- bl sub_809E858
-_0809E7DA:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTimeBasedEvents
-
- thumb_func_start sub_809E7E8
-sub_809E7E8: @ 809E7E8
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r0, =0x00004040
- bl GetVarPointer
- adds r6, r0, 0
- ldrh r0, [r6]
- movs r2, 0
- ldrsh r1, [r5, r2]
- cmp r0, r1
- beq _0809E84E
- cmp r0, r1
- bgt _0809E84E
- ldrh r4, [r5]
- subs r4, r0
- lsls r4, 16
- lsrs r4, 16
- bl ClearUpperFlags
- adds r0, r4, 0
- bl sub_8122580
- adds r0, r4, 0
- bl sub_80ED888
- adds r0, r4, 0
- bl sub_80AEFBC
- adds r0, r4, 0
- bl UpdatePartyPokerusTime
- adds r0, r4, 0
- bl sub_8137904
- adds r0, r4, 0
- bl sub_8137A20
- adds r0, r4, 0
- bl sub_8139EF4
- adds r0, r4, 0
- bl sub_813A7F4
- adds r0, r4, 0
- bl sub_813945C
- adds r0, r4, 0
- bl SetRandomLotteryNumber
- ldrh r0, [r5]
- strh r0, [r6]
-_0809E84E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_809E7E8
-
- thumb_func_start sub_809E858
-sub_809E858: @ 809E858
- push {r4-r6,lr}
- sub sp, 0x8
- adds r5, r0, 0
- mov r4, sp
- ldr r6, =gSaveBlock2Ptr
- ldr r1, [r6]
- adds r1, 0xA0
- mov r0, sp
- adds r2, r5, 0
- bl CalcTimeDifference
- mov r0, sp
- movs r2, 0
- ldrsh r1, [r0, r2]
- lsls r0, r1, 1
- adds r0, r1
- lsls r1, r0, 4
- subs r1, r0
- lsls r1, 5
- movs r2, 0x2
- ldrsb r2, [r4, r2]
- lsls r0, r2, 4
- subs r0, r2
- lsls r0, 2
- adds r1, r0
- movs r0, 0x3
- ldrsb r0, [r4, r0]
- adds r0, r1, r0
- cmp r0, 0
- beq _0809E8A8
- cmp r0, 0
- blt _0809E8A8
- bl BerryTreeTimeUpdate
- ldr r2, [r6]
- adds r2, 0xA0
- ldr r0, [r5]
- ldr r1, [r5, 0x4]
- str r0, [r2]
- str r1, [r2, 0x4]
-_0809E8A8:
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_809E858
-
- thumb_func_start sub_809E8B4
-sub_809E8B4: @ 809E8B4
- push {lr}
- bl sub_809E778
- ldr r0, =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_809E8B4
-
- thumb_func_start Special_StartWallClock
-Special_StartWallClock: @ 809E8C8
- push {lr}
- ldr r0, =Cb2_StartWallClock
- bl SetMainCallback2
- ldr r1, =gMain
- ldr r0, =sub_809E8B4
- str r0, [r1, 0x8]
- pop {r0}
- bx r0
- .pool
- thumb_func_end Special_StartWallClock
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/coins.s b/asm/coins.s
deleted file mode 100644
index d2b6cbb47..000000000
--- a/asm/coins.s
+++ /dev/null
@@ -1,74 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start GiveCoins
-@ bool8 GiveCoins(u16 toAdd)
-GiveCoins: @ 8145C80
- push {r4,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- bl GetCoins
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r0, =0x0000270e
- cmp r1, r0
- bls _08145C9C
- movs r0, 0
- b _08145CC0
- .pool
-_08145C9C:
- adds r0, r1, r4
- cmp r1, r0
- ble _08145CAC
- ldr r0, =0x0000270f
- b _08145CBA
- .pool
-_08145CAC:
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r0, =0x0000270f
- cmp r1, r0
- bls _08145CB8
- adds r1, r0, 0
-_08145CB8:
- adds r0, r1, 0
-_08145CBA:
- bl SetCoins
- movs r0, 0x1
-_08145CC0:
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end GiveCoins
-
- thumb_func_start TakeCoins
-@ bool8 TakeCoins(u16 toSub)
-TakeCoins: @ 8145CCC
- push {r4,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- bl GetCoins
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r4
- bcs _08145CE2
- movs r0, 0
- b _08145CEE
-_08145CE2:
- subs r0, r4
- lsls r0, 16
- lsrs r0, 16
- bl SetCoins
- movs r0, 0x1
-_08145CEE:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end TakeCoins
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/contest.s b/asm/contest.s
index 50398c518..e3e4ccf86 100644
--- a/asm/contest.s
+++ b/asm/contest.s
@@ -1416,13 +1416,13 @@ sub_80D833C: @ 80D833C
cmp r0, 0
bne _080D83CC
ldr r0, =gDisplayedStringBattle
- ldr r1, =gUnknown_0827D507
+ ldr r1, =gText_0827D507
bl StringCopy
b _080D83D4
.pool
_080D83CC:
ldr r0, =gDisplayedStringBattle
- ldr r1, =gUnknown_0827D531
+ ldr r1, =gText_0827D531
bl StringCopy
_080D83D4:
bl sub_80DB89C
@@ -1753,13 +1753,13 @@ _080D868E:
cmp r0, 0
bne _080D86DC
ldr r0, =gDisplayedStringBattle
- ldr r1, =gUnknown_0827D507
+ ldr r1, =gText_0827D507
bl StringCopy
b _080D86E4
.pool
_080D86DC:
ldr r0, =gDisplayedStringBattle
- ldr r1, =gUnknown_0827D531
+ ldr r1, =gText_0827D531
bl StringCopy
_080D86E4:
bl sub_80DB89C
@@ -2655,7 +2655,7 @@ _080D8F38:
bl StringCopy
_080D8F48:
ldr r4, =gStringVar4
- ldr r1, =gUnknown_0827D55A
+ ldr r1, =gText_0827D55A
adds r0, r4, 0
bl StringExpandPlaceholders
adds r0, r4, 0
@@ -3566,7 +3566,7 @@ _080D96D4:
adds r1, r2
bl StringCopy
ldr r4, =gStringVar4
- ldr r1, =gUnknown_0827E793
+ ldr r1, =gText_0827E793
adds r0, r4, 0
bl StringExpandPlaceholders
adds r0, r4, 0
@@ -3638,20 +3638,20 @@ _080D9774:
asrs r0, r4, 24
cmp r0, 0x1
bne _080D97A0
- ldr r0, =gUnknown_0827E32E
+ ldr r0, =gText_0827E32E
b _080D97A6
.pool
_080D97A0:
cmp r0, 0x2
bne _080D97B4
- ldr r0, =gUnknown_0827E35B
+ ldr r0, =gText_0827E35B
_080D97A6:
movs r1, 0x1
bl sub_80DEC30
b _080D97BC
.pool
_080D97B4:
- ldr r0, =gUnknown_0827E38D
+ ldr r0, =gText_0827E38D
movs r1, 0x1
bl sub_80DEC30
_080D97BC:
@@ -3675,7 +3675,7 @@ _080D97DC:
adds r1, r2
bl StringCopy
ldr r4, =gStringVar4
- ldr r1, =gUnknown_0827E2FE
+ ldr r1, =gText_0827E2FE
adds r0, r4, 0
bl StringExpandPlaceholders
adds r0, r4, 0
@@ -3813,7 +3813,7 @@ _080D9904:
adds r1, r2
bl StringCopy
ldr r4, =gStringVar4
- ldr r1, =gUnknown_0827E6E3
+ ldr r1, =gText_0827E6E3
adds r0, r4, 0
bl StringExpandPlaceholders
adds r0, r4, 0
@@ -4043,7 +4043,7 @@ _080D9B30:
cmp r3, 0
bge _080D9B48
ldr r0, =gStringVar4
- ldr r1, =gUnknown_0827E73C
+ ldr r1, =gText_0827E73C
bl StringExpandPlaceholders
b _080D9B74
.pool
@@ -4058,13 +4058,13 @@ _080D9B48:
cmp r0, 0x4
bgt _080D9B6C
ldr r0, =gStringVar4
- ldr r1, =gUnknown_0827E717
+ ldr r1, =gText_0827E717
bl StringExpandPlaceholders
b _080D9B74
.pool
_080D9B6C:
ldr r0, =gStringVar4
- ldr r1, =gUnknown_0827E76A
+ ldr r1, =gText_0827E76A
bl StringExpandPlaceholders
_080D9B74:
ldr r0, =gStringVar4
@@ -4402,7 +4402,7 @@ _080D9DD4:
adds r1, r2
bl StringCopy
ldr r4, =gStringVar4
- ldr r1, =gUnknown_0827E7EA
+ ldr r1, =gText_0827E7EA
adds r0, r4, 0
bl StringExpandPlaceholders
adds r0, r4, 0
@@ -4426,7 +4426,7 @@ _080D9E60:
_080D9E6A:
bl sub_80DB89C
ldr r4, =gStringVar4
- ldr r1, =gUnknown_0827E817
+ ldr r1, =gText_0827E817
adds r0, r4, 0
bl StringExpandPlaceholders
adds r0, r4, 0
@@ -4491,7 +4491,7 @@ _080D9EDC:
adds r1, r2
bl StringCopy
ldr r4, =gStringVar4
- ldr r1, =gUnknown_0827E58A
+ ldr r1, =gText_0827E58A
adds r0, r4, 0
bl StringExpandPlaceholders
adds r0, r4, 0
@@ -4630,7 +4630,7 @@ _080DA038:
adds r1, r2
bl StringCopy
ldr r4, =gStringVar4
- ldr r1, =gUnknown_0827D56F
+ ldr r1, =gText_0827D56F
adds r0, r4, 0
bl StringExpandPlaceholders
adds r0, r4, 0
@@ -5373,7 +5373,7 @@ _080DA668:
ldr r0, [r0]
str r0, [r1]
ldr r4, =gStringVar4
- ldr r1, =gUnknown_0827D597
+ ldr r1, =gText_0827D597
adds r0, r4, 0
bl StringExpandPlaceholders
adds r0, r4, 0
@@ -11207,7 +11207,7 @@ sub_80DD45C: @ 80DD45C
cmp r1, 0
bne _080DD4DC
ldr r0, =gStringVar3
- ldr r1, =gUnknown_0827E837
+ ldr r1, =gText_0827E837
bl StringCopy
b _080DD52C
.pool
@@ -11216,7 +11216,7 @@ _080DD4DC:
cmp r0, 0x1
bne _080DD4F4
ldr r0, =gStringVar3
- ldr r1, =gUnknown_0827E83F
+ ldr r1, =gText_0827E83F
bl StringCopy
b _080DD52C
.pool
@@ -11225,7 +11225,7 @@ _080DD4F4:
cmp r0, 0x2
bne _080DD50C
ldr r0, =gStringVar3
- ldr r1, =gUnknown_0827E847
+ ldr r1, =gText_0827E847
bl StringCopy
b _080DD52C
.pool
@@ -11234,13 +11234,13 @@ _080DD50C:
cmp r0, 0x3
bne _080DD524
ldr r0, =gStringVar3
- ldr r1, =gUnknown_0827E850
+ ldr r1, =gText_0827E850
bl StringCopy
b _080DD52C
.pool
_080DD524:
ldr r0, =gStringVar3
- ldr r1, =gUnknown_0827E85A
+ ldr r1, =gText_0827E85A
bl StringCopy
_080DD52C:
ldr r4, =gStringVar4
@@ -13829,13 +13829,13 @@ sub_80DEA5C: @ 80DEA5C
strh r0, [r4, 0x26]
movs r0, 0x3
movs r1, 0
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x20]
movs r0, 0x3
movs r1, 0x1
- bl sub_80A5C6C
+ bl GetBankPosition
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
@@ -14067,7 +14067,7 @@ _080DEC80:
b _080DEC9C
.pool
_080DEC94:
- bl sav2_get_text_speed
+ bl GetPlayerTextSpeed
lsls r0, 24
lsrs r1, r0, 24
_080DEC9C:
diff --git a/asm/contest_link_80FC4F4.s b/asm/contest_link_80FC4F4.s
index f1e2019da..ba96bf4ea 100644
--- a/asm/contest_link_80FC4F4.s
+++ b/asm/contest_link_80FC4F4.s
@@ -284,7 +284,7 @@ _080FC6FE:
lsls r0, 24
cmp r0, 0
beq _080FC7F4
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
ldr r1, =gUnknown_02039F25
ldrb r1, [r1]
lsls r1, 6
@@ -297,7 +297,7 @@ _080FC6FE:
b _080FC7F4
.pool
_080FC738:
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
ldr r1, =gUnknown_02039F25
ldrb r1, [r1]
lsls r1, 6
@@ -487,7 +487,7 @@ _080FC8D8:
beq _080FC954
b _080FC96E
_080FC8DE:
- ldr r1, =gUnknown_020228C4
+ ldr r1, =gBlockSendBuffer
ldrh r0, [r4, 0x1A]
strb r0, [r1]
bl GetMultiplayerId
@@ -1142,7 +1142,7 @@ _080FCE8C:
beq _080FCEFC
b _080FCF16
_080FCE92:
- ldr r1, =gUnknown_020228C4
+ ldr r1, =gBlockSendBuffer
movs r0, 0x6E
strb r0, [r1]
bl GetMultiplayerId
diff --git a/asm/crt0.s b/asm/crt0.s
index 0b14a1469..9ed678968 100644
--- a/asm/crt0.s
+++ b/asm/crt0.s
@@ -68,8 +68,8 @@ GPIOPortReadEnable: @ 80000C8
.4byte gAbilityDescriptionPointers
.4byte gItems
.4byte gBattleMoves
- .4byte gUnknown_0832C400
- .4byte gUnknown_0832C460
+ .4byte gBallSpriteSheets
+ .4byte gBallSpritePalettes
.4byte 0x000000a8, 0x00000864, 0x0000089b
diff --git a/asm/dewford_trend.s b/asm/dewford_trend.s
index 89f89c4e0..7d9d67902 100644
--- a/asm/dewford_trend.s
+++ b/asm/dewford_trend.s
@@ -79,8 +79,8 @@ _08122522:
.pool
thumb_func_end InitDewfordTrend
- thumb_func_start sub_8122580
-sub_8122580: @ 8122580
+ thumb_func_start UpdateDewfordTrendPerDay
+UpdateDewfordTrendPerDay: @ 8122580
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -253,7 +253,7 @@ _081226BE:
pop {r0}
bx r0
.pool
- thumb_func_end sub_8122580
+ thumb_func_end UpdateDewfordTrendPerDay
thumb_func_start sub_81226D8
sub_81226D8: @ 81226D8
diff --git a/asm/easy_chat.s b/asm/easy_chat.s
index eb20e68fa..3a359c9fa 100644
--- a/asm/easy_chat.s
+++ b/asm/easy_chat.s
@@ -1635,7 +1635,7 @@ _0811AF86:
thumb_func_start sub_811AF8C
sub_811AF8C: @ 811AF8C
push {lr}
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -1684,7 +1684,7 @@ _0811AFE6:
thumb_func_start sub_811AFEC
sub_811AFEC: @ 811AFEC
push {r4,lr}
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -1727,7 +1727,7 @@ _0811B03A:
thumb_func_start sub_811B040
sub_811B040: @ 811B040
push {lr}
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -1832,7 +1832,7 @@ sub_811B0E8: @ 811B0E8
thumb_func_start sub_811B0F8
sub_811B0F8: @ 811B0F8
push {r4,lr}
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -3691,7 +3691,7 @@ sub_811BDF0: @ 811BDF0
adds r6, r0, 0
ldr r0, =gSaveBlock1Ptr
ldr r4, [r0]
- bl sub_81AFBF0
+ bl UnkTextUtil_Reset
ldr r0, =0x00003b70
adds r5, r4, r0
adds r0, r5, 0
@@ -3707,17 +3707,17 @@ sub_811BDF0: @ 811BDF0
bl TVShowConvertInternationalString
movs r0, 0
mov r1, sp
- bl sub_81AFC0C
+ bl UnkTextUtil_SetPtrI
b _0811BE3C
.pool
_0811BE34:
ldr r1, =gText_Lady
movs r0, 0
- bl sub_81AFC0C
+ bl UnkTextUtil_SetPtrI
_0811BE3C:
ldr r1, =gText_F700sQuiz
adds r0, r6, 0
- bl sub_81AFC28
+ bl UnkTextUtil_StringExpandPlaceholders
add sp, 0x20
pop {r4-r6}
pop {r0}
diff --git a/asm/field_control_avatar.s b/asm/field_control_avatar.s
index 29164ed7b..9252b79d2 100644
--- a/asm/field_control_avatar.s
+++ b/asm/field_control_avatar.s
@@ -721,7 +721,7 @@ TryGetInvisibleMapObjectScript: @ 809C458
ldr r2, [r0, 0x8]
cmp r2, 0
bne _0809C490
- ldr r0, =EventScript_2C8436
+ ldr r0, =EventScript_TestSignpostMsg
b _0809C532
.pool
_0809C490:
@@ -1365,7 +1365,7 @@ per_step_scripts: @ 809C9F4
bne _0809CA04
b _0809CB24
_0809CA04:
- bl sub_80B215C
+ bl IncrementRematchStepCounter
bl AdjustFriendship_step
bl sub_81D4998
ldr r0, =gPlayerAvatar
@@ -1531,8 +1531,8 @@ _0809CB72:
.pool
thumb_func_end AdjustFriendship_step
- thumb_func_start overworld_poison_timer_set
-overworld_poison_timer_set: @ 809CB80
+ thumb_func_start ResetPoisonStepCounter
+ResetPoisonStepCounter: @ 809CB80
push {lr}
ldr r0, =0x0000402b
movs r1, 0
@@ -1540,7 +1540,7 @@ overworld_poison_timer_set: @ 809CB80
pop {r0}
bx r0
.pool
- thumb_func_end overworld_poison_timer_set
+ thumb_func_end ResetPoisonStepCounter
thumb_func_start overworld_poison_step
overworld_poison_step: @ 809CB94
diff --git a/asm/field_effect.s b/asm/field_effect.s
index bfa563af1..170aa6a63 100644
--- a/asm/field_effect.s
+++ b/asm/field_effect.s
@@ -1961,7 +1961,7 @@ mapldr_080842E8: @ 80B69FC
movs r1, 0
bl CreateTask
bl ScriptContext2_Enable
- bl player_bitmagic
+ bl FreezeMapObjects
ldr r1, =gFieldCallback
movs r0, 0
str r0, [r1]
@@ -2057,7 +2057,7 @@ mapldr_08084390: @ 80B6AA4
bl FieldObjectTurn
_080B6AE6:
bl ScriptContext2_Enable
- bl player_bitmagic
+ bl FreezeMapObjects
ldr r1, =gFieldCallback
movs r0, 0
str r0, [r1]
@@ -2116,7 +2116,7 @@ sub_80B6B68: @ 80B6B68
bl sub_8085784
bl pal_fill_for_maplights
bl ScriptContext2_Enable
- bl player_bitmagic
+ bl FreezeMapObjects
ldr r0, =sub_80B6B94
movs r1, 0
bl CreateTask
@@ -2534,7 +2534,7 @@ _080B6E9A:
sub_80B6EC0: @ 80B6EC0
push {r4,lr}
adds r4, r0, 0
- bl player_bitmagic
+ bl FreezeMapObjects
bl CameraObjectReset2
ldrb r0, [r4, 0xA]
bl sub_80E1558
@@ -3476,7 +3476,7 @@ sub_80B764C: @ 80B764C
push {r4,r5,lr}
adds r4, r0, 0
adds r5, r1, 0
- bl player_bitmagic
+ bl FreezeMapObjects
bl CameraObjectReset2
movs r0, 0
bl SetCameraPanningCallback
@@ -3807,7 +3807,7 @@ sub_80B78EC: @ 80B78EC
adds r5, r0, 0
adds r4, r1, 0
bl CameraObjectReset2
- bl player_bitmagic
+ bl FreezeMapObjects
ldr r1, =gPlayerAvatar
movs r0, 0x1
strb r0, [r1, 0x6]
@@ -4055,7 +4055,7 @@ sub_80B7AE8: @ 80B7AE8
push {r4,r5,lr}
adds r5, r0, 0
adds r4, r1, 0
- bl player_bitmagic
+ bl FreezeMapObjects
bl CameraObjectReset2
ldr r1, =gPlayerAvatar
movs r0, 0x1
@@ -4287,7 +4287,7 @@ _080B7CC4:
sub_80B7CC8: @ 80B7CC8
push {lr}
bl ScriptContext2_Enable
- bl player_bitmagic
+ bl FreezeMapObjects
ldr r0, =sub_80B7CE4
movs r1, 0x50
bl CreateTask
@@ -4461,7 +4461,7 @@ mapldr_080859D4: @ 80B7E48
bl sub_8085784
bl pal_fill_for_maplights
bl ScriptContext2_Enable
- bl player_bitmagic
+ bl FreezeMapObjects
ldr r1, =gFieldCallback
movs r0, 0
str r0, [r1]
@@ -4672,7 +4672,7 @@ sub_80B800C: @ 80B800C
push {r4,lr}
adds r4, r0, 0
bl ScriptContext2_Enable
- bl player_bitmagic
+ bl FreezeMapObjects
bl CameraObjectReset2
bl player_get_direction_lower_nybble
lsls r0, 24
@@ -4906,7 +4906,7 @@ mapldr_08085D88: @ 80B8200
bl sub_8085784
bl pal_fill_for_maplights
bl ScriptContext2_Enable
- bl player_bitmagic
+ bl FreezeMapObjects
ldr r1, =gFieldCallback
movs r0, 0
str r0, [r1]
@@ -6295,7 +6295,7 @@ sub_80B8D44: @ 80B8D44
ldr r0, =gFieldEffectArguments
ldr r0, [r0]
strh r0, [r1, 0x26]
- bl sav1_reset_battle_music_maybe
+ bl Overworld_ClearSavedMusic
ldr r0, =0x0000016d
bl Overworld_ChangeMusicTo
movs r0, 0
@@ -6334,7 +6334,7 @@ sub_80B8DB4: @ 80B8DB4
push {r6}
adds r4, r0, 0
bl ScriptContext2_Enable
- bl player_bitmagic
+ bl FreezeMapObjects
ldr r5, =gPlayerAvatar
movs r0, 0x1
strb r0, [r5, 0x6]
diff --git a/asm/field_player_avatar.s b/asm/field_player_avatar.s
index ae405f127..62681e7fb 100644
--- a/asm/field_player_avatar.s
+++ b/asm/field_player_avatar.s
@@ -3896,7 +3896,7 @@ sub_808C750: @ 808C750
lsls r4, 24
lsrs r4, 24
bl ScriptContext2_Enable
- bl sav1_reset_battle_music_maybe
+ bl Overworld_ClearSavedMusic
bl Overworld_ChangeMusicToDefault
ldr r2, =gPlayerAvatar
ldrb r1, [r2]
diff --git a/asm/field_poison.s b/asm/field_poison.s
deleted file mode 100644
index 83262a1a5..000000000
--- a/asm/field_poison.s
+++ /dev/null
@@ -1,323 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80F9568
-sub_80F9568: @ 80F9568
- push {lr}
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- beq _080F9580
- movs r0, 0xCE
- lsls r0, 1
- cmp r1, r0
- bne _080F9584
-_080F9580:
- movs r0, 0
- b _080F9586
-_080F9584:
- movs r0, 0x1
-_080F9586:
- pop {r1}
- bx r1
- thumb_func_end sub_80F9568
-
- thumb_func_start sub_80F958C
-sub_80F958C: @ 80F958C
- push {r4,r5,lr}
- ldr r4, =gPlayerParty
- movs r5, 0
-_080F9592:
- adds r0, r4, 0
- bl sub_80F9568
- cmp r0, 0
- beq _080F95B0
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _080F95B0
- movs r0, 0
- b _080F95BA
- .pool
-_080F95B0:
- adds r5, 0x1
- adds r4, 0x64
- cmp r5, 0x5
- ble _080F9592
- movs r0, 0x1
-_080F95BA:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80F958C
-
- thumb_func_start sub_80F95C0
-sub_80F95C0: @ 80F95C0
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- adds r4, r0, 0
- muls r4, r1
- ldr r0, =gPlayerParty
- adds r4, r0
- movs r0, 0
- str r0, [sp]
- adds r0, r4, 0
- movs r1, 0x7
- bl AdjustFriendship
- adds r0, r4, 0
- movs r1, 0x37
- mov r2, sp
- bl SetMonData
- ldr r5, =gStringVar1
- adds r0, r4, 0
- movs r1, 0x2
- adds r2, r5, 0
- bl GetMonData
- adds r0, r5, 0
- bl StringGetEnd10
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F95C0
-
- thumb_func_start sub_80F960C
-sub_80F960C: @ 80F960C
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- bl sub_80F9568
- cmp r0, 0
- beq _080F964C
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _080F964C
- adds r0, r4, 0
- movs r1, 0x37
- bl GetMonData
- bl pokemon_ailments_get_primary
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080F964C
- movs r0, 0x1
- b _080F964E
- .pool
-_080F964C:
- movs r0, 0
-_080F964E:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80F960C
-
- thumb_func_start sub_80F9654
-sub_80F9654: @ 80F9654
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, =gTasks + 0x8
- adds r4, r0, r1
- movs r0, 0
- ldrsh r5, [r4, r0]
- cmp r5, 0x1
- beq _080F96AE
- cmp r5, 0x1
- bgt _080F967C
- cmp r5, 0
- beq _080F9682
- b _080F9722
- .pool
-_080F967C:
- cmp r5, 0x2
- beq _080F96C0
- b _080F9722
-_080F9682:
- ldrh r1, [r4, 0x2]
- movs r2, 0x2
- ldrsh r0, [r4, r2]
- cmp r0, 0x5
- bgt _080F96A8
-_080F968C:
- lsls r0, r1, 24
- lsrs r0, 24
- bl sub_80F960C
- cmp r0, 0
- bne _080F96FC
- ldrh r0, [r4, 0x2]
- adds r0, 0x1
- strh r0, [r4, 0x2]
- adds r1, r0, 0
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- ble _080F968C
-_080F96A8:
- movs r0, 0x2
- strh r0, [r4]
- b _080F9722
-_080F96AE:
- bl IsFieldMessageBoxHidden
- lsls r0, 24
- cmp r0, 0
- beq _080F9722
- ldrh r0, [r4]
- subs r0, 0x1
- strh r0, [r4]
- b _080F9722
-_080F96C0:
- bl sub_80F958C
- adds r1, r0, 0
- cmp r1, 0
- beq _080F9714
- bl InBattlePyramid
- adds r4, r0, 0
- bl InBattlePike
- orrs r4, r0
- lsls r4, 24
- cmp r4, 0
- bne _080F96E6
- bl sub_81D5C18
- lsls r0, 24
- cmp r0, 0
- beq _080F96F0
-_080F96E6:
- ldr r0, =gSpecialVar_Result
- strh r5, [r0]
- b _080F9718
- .pool
-_080F96F0:
- ldr r1, =gSpecialVar_Result
- movs r0, 0x1
- strh r0, [r1]
- b _080F9718
- .pool
-_080F96FC:
- ldrb r0, [r4, 0x2]
- bl sub_80F95C0
- ldr r0, =gText_PkmnFainted3
- bl ShowFieldMessage
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _080F9722
- .pool
-_080F9714:
- ldr r0, =gSpecialVar_Result
- strh r1, [r0]
-_080F9718:
- bl EnableBothScriptContexts
- adds r0, r6, 0
- bl DestroyTask
-_080F9722:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F9654
-
- thumb_func_start sub_80F972C
-sub_80F972C: @ 80F972C
- push {lr}
- ldr r0, =sub_80F9654
- movs r1, 0x50
- bl CreateTask
- bl ScriptContext1_Stop
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F972C
-
- thumb_func_start overworld_poison
-overworld_poison: @ 80F9744
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r4, =gPlayerParty
- movs r7, 0
- movs r6, 0
- movs r5, 0x5
-_080F9750:
- adds r0, r4, 0
- movs r1, 0x5
- bl GetMonData
- cmp r0, 0
- beq _080F9794
- adds r0, r4, 0
- movs r1, 0x37
- bl GetMonData
- bl pokemon_ailments_get_primary
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080F9794
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- str r0, [sp]
- cmp r0, 0
- beq _080F9786
- subs r0, 0x1
- str r0, [sp]
- cmp r0, 0
- bne _080F9788
-_080F9786:
- adds r6, 0x1
-_080F9788:
- adds r0, r4, 0
- movs r1, 0x39
- mov r2, sp
- bl SetMonData
- adds r7, 0x1
-_080F9794:
- adds r4, 0x64
- subs r5, 0x1
- cmp r5, 0
- bge _080F9750
- cmp r6, 0
- bne _080F97A4
- cmp r7, 0
- beq _080F97A8
-_080F97A4:
- bl overworld_posion_effect
-_080F97A8:
- cmp r6, 0
- beq _080F97B4
- movs r0, 0x2
- b _080F97BE
- .pool
-_080F97B4:
- cmp r7, 0
- bne _080F97BC
- movs r0, 0
- b _080F97BE
-_080F97BC:
- movs r0, 0x1
-_080F97BE:
- add sp, 0x4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end overworld_poison
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/field_screen.s b/asm/field_screen.s
index 497346f8a..408f131c7 100644
--- a/asm/field_screen.s
+++ b/asm/field_screen.s
@@ -7527,15 +7527,15 @@ SetSav1Weather: @ 80AED7C
.pool
thumb_func_end SetSav1Weather
- thumb_func_start sav1_get_weather_probably
-sav1_get_weather_probably: @ 80AEDAC
+ thumb_func_start GetSav1Weather
+GetSav1Weather: @ 80AEDAC
ldr r0, =gSaveBlock1Ptr
ldr r0, [r0]
adds r0, 0x2E
ldrb r0, [r0]
bx lr
.pool
- thumb_func_end sav1_get_weather_probably
+ thumb_func_end GetSav1Weather
thumb_func_start sub_80AEDBC
sub_80AEDBC: @ 80AEDBC
@@ -7565,7 +7565,7 @@ sub_80AEDBC: @ 80AEDBC
sub_80AEDF0: @ 80AEDF0
push {lr}
bl SetSav1Weather
- bl sav1_get_weather_probably
+ bl GetSav1Weather
lsls r0, 24
lsrs r0, 24
bl weather_set
@@ -7577,7 +7577,7 @@ sub_80AEDF0: @ 80AEDF0
sub_80AEE08: @ 80AEE08
push {lr}
bl SetSav1Weather
- bl sav1_get_weather_probably
+ bl GetSav1Weather
lsls r0, 24
lsrs r0, 24
bl sub_80AB104
@@ -7588,7 +7588,7 @@ sub_80AEE08: @ 80AEE08
thumb_func_start DoCurrentWeather
DoCurrentWeather: @ 80AEE20
push {r4,r5,lr}
- bl sav1_get_weather_probably
+ bl GetSav1Weather
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0xF
@@ -7632,7 +7632,7 @@ _080AEE6E:
thumb_func_start sub_80AEE84
sub_80AEE84: @ 80AEE84
push {r4,r5,lr}
- bl sav1_get_weather_probably
+ bl GetSav1Weather
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0xF
@@ -7777,8 +7777,8 @@ _080AEFB6:
bx r1
thumb_func_end sub_80AEEE8
- thumb_func_start sub_80AEFBC
-sub_80AEFBC: @ 80AEFBC
+ thumb_func_start UpdateWeatherPerDay
+UpdateWeatherPerDay: @ 80AEFBC
lsls r0, 16
ldr r1, =gSaveBlock1Ptr
ldr r2, [r1]
@@ -7794,7 +7794,7 @@ sub_80AEFBC: @ 80AEFBC
strb r1, [r2]
bx lr
.pool
- thumb_func_end sub_80AEFBC
+ thumb_func_end UpdateWeatherPerDay
thumb_func_start sub_80AEFDC
sub_80AEFDC: @ 80AEFDC
@@ -8382,7 +8382,7 @@ _080AF46C:
_080AF480:
movs r0, 0
bl sub_80AF0F4
- bl player_bitmagic
+ bl FreezeMapObjects
adds r0, r6, 0
adds r1, r7, 0
bl PlayerGetDestCoords
@@ -8508,7 +8508,7 @@ _080AF580:
_080AF58A:
movs r0, 0
bl sub_80AF0F4
- bl player_bitmagic
+ bl FreezeMapObjects
adds r0, r6, 0
adds r1, r7, 0
bl PlayerGetDestCoords
@@ -8583,7 +8583,7 @@ task_map_chg_seq_0807E2CC: @ 80AF610
b _080AF65A
.pool
_080AF634:
- bl player_bitmagic
+ bl FreezeMapObjects
bl ScriptContext2_Enable
ldrh r0, [r4, 0x8]
adds r0, 0x1
@@ -9062,7 +9062,7 @@ _080AFA34:
beq _080AFA6C
b _080AFA7C
_080AFA3A:
- bl player_bitmagic
+ bl FreezeMapObjects
bl ScriptContext2_Enable
b _080AFA64
_080AFA44:
@@ -9133,7 +9133,7 @@ _080AFAC0:
.4byte _080AFBB8
.4byte _080AFBD4
_080AFAD4:
- bl player_bitmagic
+ bl FreezeMapObjects
adds r0, r4, 0
adds r1, r6, 0
bl PlayerGetDestCoords
@@ -9290,7 +9290,7 @@ _080AFC1C:
beq _080AFC46
b _080AFC56
_080AFC22:
- bl player_bitmagic
+ bl FreezeMapObjects
bl ScriptContext2_Enable
b _080AFC3E
_080AFC2C:
@@ -9877,7 +9877,7 @@ sub_80B009C: @ 80B009C
lsls r0, 24
lsrs r0, 24
adds r4, r0, 0
- bl sav1_get_flash_used_on_map
+ bl Overworld_GetFlashLevel
lsls r0, 24
lsrs r0, 24
movs r5, 0
@@ -9982,7 +9982,7 @@ task0A_mpl_807E31C: @ 80B0160
b _080B01B6
.pool
_080B0184:
- bl player_bitmagic
+ bl FreezeMapObjects
bl ScriptContext2_Enable
bl sub_808D194
ldrh r0, [r4, 0x8]
@@ -10033,7 +10033,7 @@ _080B01E4:
beq _080B022A
b _080B023A
_080B01EE:
- bl player_bitmagic
+ bl FreezeMapObjects
bl ScriptContext2_Enable
movs r0, 0x2D
bl PlaySE
diff --git a/asm/fldeff_80F9BCC.s b/asm/fldeff_80F9BCC.s
index efdc114a2..a1e4f4ff6 100644
--- a/asm/fldeff_80F9BCC.s
+++ b/asm/fldeff_80F9BCC.s
@@ -2200,8 +2200,8 @@ _080FAE2A:
.pool
thumb_func_end sub_80FADE4
- thumb_func_start task50_overworld_posion_effect
-task50_overworld_posion_effect: @ 80FAE38
+ thumb_func_start task50_overworld_poison_effect
+task50_overworld_poison_effect: @ 80FAE38
push {lr}
lsls r0, 24
lsrs r2, r0, 24
@@ -2260,32 +2260,32 @@ _080FAE92:
_080FAEA2:
pop {r0}
bx r0
- thumb_func_end task50_overworld_posion_effect
+ thumb_func_end task50_overworld_poison_effect
- thumb_func_start overworld_posion_effect
-overworld_posion_effect: @ 80FAEA8
+ thumb_func_start overworld_poison_effect
+overworld_poison_effect: @ 80FAEA8
push {lr}
movs r0, 0x4F
bl PlaySE
- ldr r0, =task50_overworld_posion_effect
+ ldr r0, =task50_overworld_poison_effect
movs r1, 0x50
bl CreateTask
pop {r0}
bx r0
.pool
- thumb_func_end overworld_posion_effect
+ thumb_func_end overworld_poison_effect
- thumb_func_start c3_80A0DD8_is_running
-c3_80A0DD8_is_running: @ 80FAEC0
+ thumb_func_start FieldPoisonEffectIsRunning
+FieldPoisonEffectIsRunning: @ 80FAEC0
push {lr}
- ldr r0, =task50_overworld_posion_effect
+ ldr r0, =task50_overworld_poison_effect
bl FuncIsActiveTask
lsls r0, 24
lsrs r0, 24
pop {r1}
bx r1
.pool
- thumb_func_end c3_80A0DD8_is_running
+ thumb_func_end FieldPoisonEffectIsRunning
thumb_func_start sub_80FAED4
sub_80FAED4: @ 80FAED4
diff --git a/asm/international_string_util.s b/asm/international_string_util.s
index 08e435249..469d88787 100755
--- a/asm/international_string_util.s
+++ b/asm/international_string_util.s
@@ -113,8 +113,8 @@ _081DB4D4:
bx r1
thumb_func_end sub_81DB494
- thumb_func_start sub_81DB4DC
-sub_81DB4DC: @ 81DB4DC
+ thumb_func_start PadNameString
+PadNameString: @ 81DB4DC
push {r4,r5,lr}
adds r4, r0, 0
lsls r1, 24
@@ -156,7 +156,7 @@ _081DB51E:
pop {r4,r5}
pop {r0}
bx r0
- thumb_func_end sub_81DB4DC
+ thumb_func_end PadNameString
thumb_func_start sub_81DB52C
sub_81DB52C: @ 81DB52C
diff --git a/asm/item_menu.s b/asm/item_menu.s
index a868b2672..1be72593a 100755
--- a/asm/item_menu.s
+++ b/asm/item_menu.s
@@ -1863,7 +1863,7 @@ DisplayItemMessage: @ 81ABB4C
strh r0, [r4, 0x14]
movs r1, 0x11
bl FillWindowPixelBuffer
- bl sav2_get_text_speed
+ bl GetPlayerTextSpeed
lsls r0, 24
lsrs r0, 24
ldrb r1, [r4, 0x14]
@@ -3360,7 +3360,7 @@ _081AC8D4:
bl memcpy
ldr r0, =gSpecialVar_ItemId
ldrh r0, [r0]
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -4664,7 +4664,7 @@ item_menu_type_b: @ 81AD4B4
lsrs r4, r0, 24
ldr r5, =gSpecialVar_ItemId
ldrh r0, [r5]
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -4748,7 +4748,7 @@ _081AD550:
cmp r6, 0x1
bne _081AD5C4
bl ScriptContext2_Enable
- bl player_bitmagic
+ bl FreezeMapObjects
bl sub_808B864
bl sub_808BCF4
ldr r2, =gSpecialVar_ItemId
diff --git a/asm/item_use.s b/asm/item_use.s
index 172080b16..f732c34e9 100644
--- a/asm/item_use.s
+++ b/asm/item_use.s
@@ -266,7 +266,7 @@ sub_80FD254: @ 80FD254
ldr r1, =bag_menu_mail_related
mov r0, sp
movs r2, 0
- bl sub_8121478
+ bl ReadMail
add sp, 0x24
pop {r0}
bx r0
diff --git a/asm/learn_move.s b/asm/learn_move.s
index 159b16f7e..acd9f4f98 100755
--- a/asm/learn_move.s
+++ b/asm/learn_move.s
@@ -353,7 +353,7 @@ _08160994:
b _08160E88
.pool
_081609A8:
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -433,7 +433,7 @@ _08160A50:
b _08160E88
.pool
_08160A64:
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -493,7 +493,7 @@ _08160ADC:
b _08160E88
.pool
_08160AEC:
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -551,7 +551,7 @@ _08160B6C:
b _08160E88
.pool
_08160B80:
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
diff --git a/asm/link.s b/asm/link.s
index d2dc05630..953e1ac25 100644
--- a/asm/link.s
+++ b/asm/link.s
@@ -206,7 +206,7 @@ sub_8009570: @ 8009570
ldr r0, =sub_80096BC
bl SetVBlankCallback
bl sub_800A2E0
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00001111
adds r0, r2, 0
strh r0, [r1]
@@ -291,7 +291,7 @@ sub_8009638: @ 8009638
ldr r0, [r4]
ldrb r0, [r0, 0x8]
strb r0, [r5, 0x13]
- ldr r0, =gUnknown_020229C6
+ ldr r0, =gLinkType
ldrh r0, [r0]
str r0, [r5, 0x14]
ldr r0, =gGameLanguage
@@ -339,7 +339,7 @@ sub_80096BC: @ 80096BC
sub_80096D0: @ 80096D0
push {lr}
ldr r3, =gUnknown_020229C4
- ldr r1, =gUnknown_03003110
+ ldr r1, =gSendCmd
ldr r2, =0x0000efff
adds r0, r1, 0
adds r0, 0xE
@@ -646,7 +646,7 @@ _08009976:
orrs r1, r0
_08009990:
adds r0, r2, 0
- bl sub_800A994
+ bl SetLinkDebugValues
_08009996:
add sp, 0x4
pop {r4,r5}
@@ -685,7 +685,7 @@ sub_80099E0: @ 80099E0
_080099F4:
movs r1, 0
ldr r5, =gUnknown_03003084
- ldr r3, =gUnknown_03003110
+ ldr r3, =gSendCmd
movs r2, 0
_080099FC:
lsls r0, r1, 1
@@ -781,7 +781,7 @@ _08009AAE:
movs r0, 0
strh r0, [r3]
lsls r4, r6, 4
- ldr r5, =gUnknown_03003090
+ ldr r5, =gRecvCmds
adds r2, r4, r5
ldrh r0, [r2]
mov r12, r1
@@ -901,12 +901,12 @@ _08009BC4:
adds r1, r0
movs r2, 0
strh r2, [r1]
- ldr r0, =gUnknown_03003090
+ ldr r0, =gRecvCmds
adds r0, 0x2
adds r0, r4, r0
ldrh r0, [r0]
strh r0, [r1, 0x2]
- ldr r0, =gUnknown_03003090
+ ldr r0, =gRecvCmds
adds r0, 0x4
adds r0, r4, r0
ldrh r0, [r0]
@@ -930,7 +930,7 @@ _08009BF0:
mov r8, r0
movs r2, 0
adds r5, r3, 0
- ldr r7, =gUnknown_03003090
+ ldr r7, =gRecvCmds
adds r3, r4, 0
_08009C14:
ldrh r1, [r5]
@@ -955,7 +955,7 @@ _08009C40:
ldr r1, =gBlockRecvBuffer
mov r9, r1
adds r7, r3, 0
- ldr r3, =gUnknown_03003090
+ ldr r3, =gRecvCmds
mov r8, r3
lsls r5, r6, 8
adds r3, r4, 0
@@ -1069,7 +1069,7 @@ _08009D38:
b _08009D6E
_08009D3E:
ldr r3, =gUnknown_082ED1A8
- ldr r0, =gUnknown_03003090
+ ldr r0, =gRecvCmds
adds r0, 0x2
adds r0, r4, r0
ldrh r2, [r0]
@@ -1084,7 +1084,7 @@ _08009D3E:
b _08009D6E
.pool
_08009D64:
- ldr r0, =gUnknown_03003090
+ ldr r0, =gRecvCmds
adds r0, 0x2
adds r0, r4, r0
ldrh r0, [r0]
@@ -1183,26 +1183,26 @@ _08009E2C:
b _08009F06
.pool
_08009E38:
- ldr r0, =gUnknown_03003110
+ ldr r0, =gSendCmd
strh r2, [r0]
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldrh r1, [r1]
b _08009F04
.pool
_08009E4C:
- ldr r0, =gUnknown_03003110
+ ldr r0, =gSendCmd
strh r2, [r0]
ldr r1, =gMain
ldrh r1, [r1, 0x2C]
b _08009F04
.pool
_08009E60:
- ldr r0, =gUnknown_03003110
+ ldr r0, =gSendCmd
movs r1, 0
b _08009F02
.pool
_08009E6C:
- ldr r0, =gUnknown_03003110
+ ldr r0, =gSendCmd
strh r2, [r0]
movs r1, 0
adds r3, r0, 0
@@ -1219,7 +1219,7 @@ _08009E76:
b _08009F06
.pool
_08009E8C:
- ldr r1, =gUnknown_03003110
+ ldr r1, =gSendCmd
strh r2, [r1]
ldr r2, =gUnknown_03000D10
ldrh r0, [r2, 0x2]
@@ -1230,28 +1230,28 @@ _08009E8C:
b _08009F06
.pool
_08009EA8:
- ldr r0, =gUnknown_03003110
+ ldr r0, =gSendCmd
strh r2, [r0]
ldr r1, =gSpecialVar_ItemId
ldrh r1, [r1]
b _08009F04
.pool
_08009EBC:
- ldr r0, =gUnknown_03003110
+ ldr r0, =gSendCmd
strh r2, [r0]
ldr r1, =gUnknown_03003150
ldrb r1, [r1]
b _08009F04
.pool
_08009ED0:
- ldr r0, =gUnknown_03003110
+ ldr r0, =gSendCmd
strh r2, [r0]
ldr r1, =gUnknown_030030F4
ldrh r1, [r1]
b _08009F04
.pool
_08009EE4:
- ldr r0, =gUnknown_03003110
+ ldr r0, =gSendCmd
strh r2, [r0]
b _08009F06
.pool
@@ -1264,7 +1264,7 @@ _08009EF0:
ldrb r0, [r0]
cmp r0, 0
bne _08009F06
- ldr r0, =gUnknown_03003110
+ ldr r0, =gSendCmd
_08009F02:
strh r2, [r0]
_08009F04:
@@ -1814,7 +1814,7 @@ _0800A30C:
str r7, [r4, 0x4]
b _0800A336
_0800A324:
- ldr r5, =gUnknown_020228C4
+ ldr r5, =gBlockSendBuffer
cmp r7, r5
beq _0800A334
adds r0, r5, 0
@@ -1863,7 +1863,7 @@ sub_800A388: @ 800A388
push {r4-r6,lr}
ldr r0, =gUnknown_03000D10
ldr r5, [r0, 0x4]
- ldr r2, =gUnknown_03003110
+ ldr r2, =gSendCmd
ldr r1, =0x00008888
strh r1, [r2]
movs r3, 0
@@ -2644,15 +2644,15 @@ _0800A94E:
.pool
thumb_func_end task00_link_test
- thumb_func_start sub_800A994
-sub_800A994: @ 800A994
+ thumb_func_start SetLinkDebugValues
+SetLinkDebugValues: @ 800A994
ldr r2, =gUnknown_0300302C
str r0, [r2]
ldr r0, =gUnknown_03003070
str r1, [r0]
bx lr
.pool
- thumb_func_end sub_800A994
+ thumb_func_end SetLinkDebugValues
thumb_func_start sub_800A9A8
sub_800A9A8: @ 800A9A8
@@ -2772,7 +2772,7 @@ sub_800AA60: @ 800AA60
ldr r0, =gUnknown_02022A74
ldr r2, =0x00002288
mov r8, r2
- ldr r7, =gUnknown_020229C6
+ ldr r7, =gLinkType
mov r6, r12
adds r6, 0x14
adds r5, r0, 0x4
@@ -3798,7 +3798,7 @@ sub_800B348: @ 800B348
strh r2, [r0]
ldrb r2, [r3, 0x2]
strb r2, [r0, 0x2]
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
movs r2, 0x3C
bl memcpy
pop {r4-r6}
@@ -3861,8 +3861,8 @@ HandleLinkConnection: @ 800B40C
cmp r0, 0
bne _0800B45C
ldr r0, =gUnknown_03003144
- ldr r1, =gUnknown_03003110
- ldr r2, =gUnknown_03003090
+ ldr r1, =gSendCmd
+ ldr r2, =gRecvCmds
bl sub_800B638
ldr r4, =gUnknown_030030E0
str r0, [r4]
@@ -10247,13 +10247,13 @@ _0800E64A:
adds r0, r4, 0
bl sub_800D724
strh r5, [r7]
- ldr r1, =gUnknown_03003110
+ ldr r1, =gSendCmd
ldr r2, =0x01000008
adds r0, r7, 0
bl CpuSet
mov r0, r8
strh r5, [r0]
- ldr r1, =gUnknown_03003090
+ ldr r1, =gRecvCmds
ldr r2, =0x01000028
bl CpuSet
mov r0, r9
@@ -10306,7 +10306,7 @@ sub_800E700: @ 800E700
lsrs r1, r0, 16
cmp r1, 0
bne _0800E732
- ldr r0, =gUnknown_020229C6
+ ldr r0, =gLinkType
strh r1, [r0]
bl sub_800AAF4
movs r0, 0
@@ -11278,7 +11278,7 @@ sub_800EFB0: @ 800EFB0
push {r4-r7,lr}
sub sp, 0x4
movs r2, 0
- ldr r7, =gUnknown_03003090
+ ldr r7, =gRecvCmds
ldr r0, =gUnknown_03005000
adds r6, r7, 0
ldr r1, =0x00000c87
@@ -11323,8 +11323,8 @@ _0800EFD0:
thumb_func_start sub_800F014
sub_800F014: @ 800F014
push {lr}
- ldr r3, =gUnknown_03003110
- ldr r2, =gUnknown_03003090
+ ldr r3, =gSendCmd
+ ldr r2, =gRecvCmds
movs r1, 0x6
_0800F01C:
ldrh r0, [r3]
@@ -11334,7 +11334,7 @@ _0800F01C:
subs r1, 0x1
cmp r1, 0
bge _0800F01C
- ldr r1, =gUnknown_03003110
+ ldr r1, =gSendCmd
movs r2, 0
adds r0, r1, 0
adds r0, 0xC
@@ -11413,7 +11413,7 @@ _0800F0C4:
.pool
_0800F0CC:
movs r3, 0
- ldr r4, =gUnknown_03003090
+ ldr r4, =gRecvCmds
_0800F0D0:
movs r2, 0
lsls r0, r3, 4
@@ -11681,7 +11681,7 @@ _0800F2E0:
str r2, [sp, 0x4]
adds r5, 0x1
str r5, [sp]
- ldr r1, =gUnknown_03003090
+ ldr r1, =gRecvCmds
mov r9, r1
adds r5, r3, 0
adds r7, r4, 0
@@ -11908,7 +11908,7 @@ sub_800F4F0: @ 800F4F0
mov r1, sp
bl sub_800D934
movs r1, 0
- ldr r0, =gUnknown_03003090
+ ldr r0, =gRecvCmds
mov r12, r0
_0800F506:
movs r4, 0
@@ -12012,7 +12012,7 @@ _0800F5C0:
ldrb r1, [r2]
strb r0, [r2]
bl sub_8010528
- ldr r5, =gUnknown_03003110
+ ldr r5, =gSendCmd
add r4, sp, 0x48
adds r0, r5, 0
adds r1, r4, 0
@@ -12305,8 +12305,8 @@ sub_800F820: @ 800F820
lsls r0, 24
cmp r0, 0
bne _0800F83C
- bl sub_8082D18
- ldr r1, =gUnknown_03003110
+ bl GetBlenderArrowPosition
+ ldr r1, =gSendCmd
strh r0, [r1, 0xC]
_0800F83C:
ldr r1, =gUnknown_020223C0
@@ -12345,7 +12345,7 @@ sub_800F86C: @ 800F86C
_0800F87A:
mov r1, r8
lsls r0, r1, 4
- ldr r2, =gUnknown_03003090
+ ldr r2, =gRecvCmds
adds r1, r0, r2
ldrh r7, [r1]
movs r3, 0xFF
@@ -12555,7 +12555,7 @@ _0800FA0E:
adds r2, r4, 0x1
lsls r0, r2, 1
adds r0, r3
- ldr r4, =gUnknown_03003090
+ ldr r4, =gRecvCmds
adds r0, r4
ldrh r0, [r0]
strh r0, [r1]
@@ -12686,7 +12686,7 @@ _0800FB10:
adds r0, r7, r2
strb r1, [r0]
_0800FB48:
- ldr r0, =gUnknown_03003090
+ ldr r0, =gRecvCmds
adds r0, 0x6
adds r0, r5, r0
ldrh r0, [r0]
@@ -12699,7 +12699,7 @@ _0800FB78:
movs r0, 0xEE
lsls r0, 8
bl sub_800FD14
- ldr r1, =gUnknown_03003110
+ ldr r1, =gSendCmd
ldr r3, =gUnknown_03003092
adds r0, r5, r3
ldrh r0, [r0]
@@ -12708,7 +12708,7 @@ _0800FB78:
adds r0, r5, r4
ldrh r0, [r0]
strh r0, [r1, 0x4]
- ldr r0, =gUnknown_03003090
+ ldr r0, =gRecvCmds
adds r0, 0x6
adds r0, r5, r0
ldrh r0, [r0]
@@ -12910,7 +12910,7 @@ sub_800FD14: @ 800FD14
push {r4,r5,lr}
lsls r0, 16
lsrs r1, r0, 16
- ldr r5, =gUnknown_03003110
+ ldr r5, =gSendCmd
strh r1, [r5]
movs r0, 0xF0
lsls r0, 7
@@ -13063,7 +13063,7 @@ _0800FE46:
sub_800FE50: @ 800FE50
push {r4,lr}
adds r4, r0, 0
- ldr r0, =gUnknown_03003110
+ ldr r0, =gSendCmd
ldrh r0, [r0]
cmp r0, 0
bne _0800FE76
@@ -13097,7 +13097,7 @@ sub_800FE84: @ 800FE84
ldr r0, [r5]
cmp r0, 0
bne _0800FEB8
- ldr r0, =gUnknown_03003110
+ ldr r0, =gSendCmd
ldrh r0, [r0]
cmp r0, 0
bne _0800FEB8
@@ -13149,7 +13149,7 @@ _0800FEC8:
str r7, [r5, 0x70]
b _0800FF1C
_0800FF0A:
- ldr r4, =gUnknown_020228C4
+ ldr r4, =gBlockSendBuffer
cmp r7, r4
beq _0800FF1A
adds r0, r4, 0
@@ -13182,7 +13182,7 @@ _0800FF32:
thumb_func_start rfufunc_80F9F44
rfufunc_80F9F44: @ 800FF4C
push {r4,r5,lr}
- ldr r0, =gUnknown_03003110
+ ldr r0, =gSendCmd
ldrh r0, [r0]
cmp r0, 0
bne _0800FFA0
@@ -13207,7 +13207,7 @@ rfufunc_80F9F44: @ 800FF4C
.pool
_0800FF84:
bl GetMultiplayerId
- ldr r1, =gUnknown_03003090
+ ldr r1, =gRecvCmds
lsls r0, 24
lsrs r0, 20
adds r0, r1
@@ -13233,7 +13233,7 @@ sub_800FFB0: @ 800FFB0
ldr r0, =gUnknown_03005000
mov r12, r0
ldr r5, [r0, 0x70]
- ldr r3, =gUnknown_03003110
+ ldr r3, =gSendCmd
mov r2, r12
adds r2, 0x6C
ldrh r1, [r2]
@@ -13302,7 +13302,7 @@ rfufunc_80FA020: @ 8010028
ldrb r0, [r5, 0xC]
cmp r0, 0
bne _080100F0
- ldr r3, =gUnknown_03003110
+ ldr r3, =gSendCmd
adds r2, r5, 0
adds r2, 0x6E
ldrh r0, [r2]
@@ -13313,7 +13313,7 @@ rfufunc_80FA020: @ 8010028
strh r0, [r3]
movs r4, 0
mov r9, r5
- ldr r0, =gUnknown_03003090
+ ldr r0, =gRecvCmds
mov r12, r0
lsls r5, r6, 4
adds r7, r2, 0
@@ -13539,7 +13539,7 @@ _08010220:
thumb_func_start sub_801022C
sub_801022C: @ 801022C
push {r4,lr}
- ldr r0, =gUnknown_03003110
+ ldr r0, =gSendCmd
ldrh r0, [r0]
cmp r0, 0
bne _0801024E
@@ -13694,7 +13694,7 @@ sub_8010358: @ 8010358
ldrb r0, [r0]
cmp r0, 0
bne _0801037A
- ldr r0, =gUnknown_03003110
+ ldr r0, =gSendCmd
ldrh r0, [r0]
cmp r0, 0
bne _0801037A
@@ -13723,7 +13723,7 @@ sub_8010390: @ 8010390
ldrb r0, [r0]
cmp r0, 0
bne _0801041E
- ldr r0, =gUnknown_03003110
+ ldr r0, =gSendCmd
ldrh r0, [r0]
cmp r0, 0
bne _0801041E
@@ -13766,7 +13766,7 @@ _080103FA:
ldrb r0, [r0]
cmp r0, 0
bne _0801041E
- ldr r0, =gUnknown_03003110
+ ldr r0, =gSendCmd
ldrh r0, [r0]
cmp r0, 0
bne _0801041E
@@ -14404,7 +14404,7 @@ _080108F0:
b _080109D2
.pool
_08010904:
- ldr r0, =gUnknown_03003110
+ ldr r0, =gSendCmd
ldrh r0, [r0]
cmp r0, 0
bne _080109D2
@@ -14676,7 +14676,7 @@ _08010B28:
.4byte _08010C0A
.4byte _08010C94
_08010B40:
- ldr r0, =gUnknown_03003110
+ ldr r0, =gSendCmd
ldrh r0, [r0]
cmp r0, 0
beq _08010B4A
@@ -14690,7 +14690,7 @@ _08010B4A:
b _08010C4A
.pool
_08010B60:
- ldr r0, =gUnknown_03003110
+ ldr r0, =gSendCmd
ldrh r0, [r0]
cmp r0, 0
beq _08010B6A
@@ -14734,7 +14734,7 @@ _08010B8C:
b _08010C4A
.pool
_08010BC0:
- ldr r5, =gUnknown_020228C4
+ ldr r5, =gBlockSendBuffer
adds r1, r5, 0
ldr r0, =gUnknown_082ED7EC
ldm r0!, {r2-r4}
@@ -14772,7 +14772,7 @@ _08010BE2:
adds r0, 0x1
strh r0, [r1, 0x8]
_08010C0A:
- ldr r5, =gUnknown_020228C4
+ ldr r5, =gBlockSendBuffer
ldr r1, =gUnknown_03005000
ldrb r0, [r1, 0xD]
strb r0, [r5, 0xF]
@@ -14796,7 +14796,7 @@ _08010C20:
mov r1, r12
movs r2, 0x8C
bl memcpy
- ldr r1, =gUnknown_020228C4
+ ldr r1, =gBlockSendBuffer
movs r0, 0
movs r2, 0xA0
bl SendBlock
@@ -14921,7 +14921,7 @@ _08010D56:
cmp r0, 0
beq _08010DA6
bl sub_800B348
- ldr r1, =gUnknown_020228C4
+ ldr r1, =gBlockSendBuffer
movs r0, 0
movs r2, 0x3C
bl SendBlock
@@ -16575,7 +16575,7 @@ sub_8011AC8: @ 8011AC8
sub sp, 0x4
movs r0, 0
str r0, [sp]
- ldr r1, =gUnknown_03003090
+ ldr r1, =gRecvCmds
ldr r2, =0x05000014
mov r0, sp
bl CpuSet
@@ -16608,7 +16608,7 @@ sub_8011AFC: @ 8011AFC
lsls r0, 24
cmp r0, 0
beq _08011B70
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00001111
adds r0, r2, 0
strh r0, [r1]
@@ -16968,7 +16968,7 @@ sub_8011E2C: @ 8011E2C
push {r4-r6,lr}
lsls r0, 24
lsrs r4, r0, 24
- ldr r6, =gUnknown_03003110
+ ldr r6, =gSendCmd
ldrh r0, [r6]
cmp r0, 0
bne _08011E7A
@@ -20832,7 +20832,7 @@ _08013FFC:
b _0801405A
.pool
_08014038:
- ldr r4, =gUnknown_020228C4
+ ldr r4, =gBlockSendBuffer
ldr r0, =gSaveBlock1Ptr
ldr r1, [r0]
ldr r0, =0x00002be0
@@ -21403,7 +21403,7 @@ _080145D8:
.pool
_080145F4:
bl overworld_free_bg_tilemaps
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
movs r1, 0x1
bl sub_80143E4
bl sp000_heal_pokemon
@@ -21422,7 +21422,7 @@ _08014620:
bl sp000_heal_pokemon
bl copy_player_party_to_sav1
bl copy_bags_and_unk_data_from_save_blocks
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
movs r1, 0x1
bl sub_80143E4
movs r0, 0x2
@@ -21438,7 +21438,7 @@ _0801464C:
bl sp000_heal_pokemon
bl copy_player_party_to_sav1
bl copy_bags_and_unk_data_from_save_blocks
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
movs r1, 0x1
bl sub_80143E4
movs r0, 0x5
@@ -21450,7 +21450,7 @@ _0801464C:
b _080146B0
.pool
_08014678:
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
movs r1, 0x1
bl sub_80143E4
bl overworld_free_bg_tilemaps
@@ -21463,7 +21463,7 @@ _08014678:
b _080146B0
.pool
_08014698:
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
movs r1, 0x1
bl sub_80143E4
bl overworld_free_bg_tilemaps
@@ -21503,7 +21503,7 @@ _080146F6:
bl sub_801DD98
b _08014764
_080146FC:
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
movs r1, 0
bl sub_80143E4
ldr r0, =sub_80141A4
@@ -21573,7 +21573,7 @@ sub_8014790: @ 8014790
lsls r0, 3
ldr r1, =gTasks + 0x8
adds r7, r0, r1
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
mov r9, r0
movs r1, 0
ldrsh r0, [r7, r1]
@@ -23720,7 +23720,7 @@ _08015BBE:
bne _08015BCA
bl _08016878
_08015BCA:
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
movs r1, 0x1
bl sub_80143E4
ldr r0, =sub_80140E0
@@ -24247,7 +24247,7 @@ _080160DA:
bne _080160E4
b _08016878
_080160E4:
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
movs r1, 0x1
bl sub_80143E4
ldr r0, =sub_80140E0
@@ -25082,7 +25082,7 @@ _08016894:
sub_801689C: @ 801689C
push {r4,r5,lr}
adds r2, r0, 0
- ldr r3, =gUnknown_03003090
+ ldr r3, =gRecvCmds
ldrh r5, [r3, 0x12]
adds r4, r5, 0
cmp r4, 0
@@ -26142,7 +26142,7 @@ _080170E0:
negs r0, r0
b _08017110
_080170F2:
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
movs r2, 0x80
@@ -28007,14 +28007,14 @@ _08017F8A:
lsls r0, r4, 24
lsrs r0, 24
adds r1, r5, 0
- bl sub_81AFC0C
+ bl UnkTextUtil_SetPtrI
adds r5, 0x10
adds r4, 0x1
cmp r4, 0x3
ble _08017F8A
ldr r1, =gUnknown_082EE47C
adds r0, r7, 0
- bl sub_81AFC28
+ bl UnkTextUtil_StringExpandPlaceholders
b _08017FB4
.pool
_08017FAC:
@@ -28045,7 +28045,7 @@ _08017FC6:
sub_8017FD8: @ 8017FD8
push {lr}
adds r2, r0, 0
- ldr r0, =gUnknown_03003090
+ ldr r0, =gRecvCmds
ldrh r1, [r0, 0x2]
cmp r1, 0
beq _08017FFC
@@ -28379,7 +28379,7 @@ sub_8018220: @ 8018220
ldr r0, =gUnknown_02039B58
adds r1, r0
mov r8, r1
- bl sub_81AFBF0
+ bl UnkTextUtil_Reset
mov r6, r9
adds r6, 0xC0
bl sub_8068BB0
@@ -28393,11 +28393,11 @@ sub_8018220: @ 8018220
bl StringCopy
movs r0, 0
adds r1, r6, 0
- bl sub_81AFC0C
+ bl UnkTextUtil_SetPtrI
mov r1, r8
adds r1, 0x30
movs r0, 0x1
- bl sub_81AFC0C
+ bl UnkTextUtil_SetPtrI
movs r4, 0xBA
lsls r4, 1
add r4, r9
@@ -28411,7 +28411,7 @@ sub_8018220: @ 8018220
bl StringCopy
movs r0, 0x2
adds r1, r4, 0
- bl sub_81AFC0C
+ bl UnkTextUtil_SetPtrI
mov r5, r9
adds r5, 0xDE
mov r0, r8
@@ -28422,7 +28422,7 @@ sub_8018220: @ 8018220
bl ConvertIntToDecimalStringN
movs r0, 0x3
adds r1, r5, 0
- bl sub_81AFC0C
+ bl UnkTextUtil_SetPtrI
movs r2, 0xED
add r2, r9
mov r10, r2
@@ -28442,16 +28442,16 @@ sub_8018220: @ 8018220
bl ConvertIntToDecimalStringN
movs r0, 0x4
mov r1, r10
- bl sub_81AFC0C
+ bl UnkTextUtil_SetPtrI
movs r0, 0x5
adds r1, r4, 0
- bl sub_81AFC0C
+ bl UnkTextUtil_SetPtrI
movs r4, 0xD2
lsls r4, 1
add r4, r9
ldr r1, =gUnknown_082EFF64
adds r0, r4, 0
- bl sub_81AFC28
+ bl UnkTextUtil_StringExpandPlaceholders
ldr r0, =gStringVar4
adds r1, r4, 0
bl StringCopy
@@ -28468,7 +28468,7 @@ _0801830C:
bl ConvertIntToDecimalStringN
movs r0, 0
adds r1, r6, 0
- bl sub_81AFC0C
+ bl UnkTextUtil_SetPtrI
mov r2, r8
ldrh r1, [r2, 0x16]
cmp r1, r4
@@ -28483,7 +28483,7 @@ _08018328:
bl ConvertIntToDecimalStringN
movs r0, 0x2
adds r1, r4, 0
- bl sub_81AFC0C
+ bl UnkTextUtil_SetPtrI
mov r0, r8
ldrh r1, [r0, 0x20]
adds r0, r5, 0
@@ -28492,7 +28492,7 @@ _08018328:
bl ConvertIntToDecimalStringN
movs r0, 0x3
adds r1, r5, 0
- bl sub_81AFC0C
+ bl UnkTextUtil_SetPtrI
movs r7, 0
movs r6, 0x80
lsls r6, 19
@@ -28505,7 +28505,7 @@ _08018360:
bl CopyEasyChatWord
lsrs r0, r6, 24
adds r1, r4, 0
- bl sub_81AFC0C
+ bl UnkTextUtil_SetPtrI
movs r2, 0x80
lsls r2, 17
adds r6, r2
@@ -28519,7 +28519,7 @@ _08018360:
add r4, r9
ldr r1, =gUnknown_082EFFA4
adds r0, r4, 0
- bl sub_81AFC28
+ bl UnkTextUtil_StringExpandPlaceholders
ldr r5, =gStringVar4
adds r0, r5, 0
adds r1, r4, 0
@@ -28529,7 +28529,7 @@ _08018360:
bne _080183D0
ldr r1, =gUnknown_082F0020
adds r0, r4, 0
- bl sub_81AFC28
+ bl UnkTextUtil_StringExpandPlaceholders
adds r0, r5, 0
adds r1, r4, 0
bl StringAppend
@@ -28546,7 +28546,7 @@ _080183D0:
adds r1, r0
ldr r1, [r1]
adds r0, r4, 0
- bl sub_81AFC28
+ bl UnkTextUtil_StringExpandPlaceholders
adds r0, r5, 0
adds r1, r4, 0
bl StringAppend
@@ -29500,7 +29500,7 @@ _08018BD6:
b _08018C3E
.pool
_08018BE4:
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r6, r0, 24
movs r1, 0x80
@@ -32659,7 +32659,7 @@ sub_801A43C: @ 801A43C
bl LoadPalette
movs r0, 0xF0
bl sub_81978B0
- bl sub_81AFBF0
+ bl UnkTextUtil_Reset
movs r0, 0x20
str r0, [sp]
str r0, [sp, 0x4]
@@ -33721,7 +33721,7 @@ _0801AE48:
beq _0801AE54
b _0801AFAE
_0801AE54:
- ldr r4, =gUnknown_020228C4
+ ldr r4, =gBlockSendBuffer
adds r0, r4, 0
movs r1, 0
movs r2, 0x20
@@ -33738,7 +33738,7 @@ _0801AE78:
movs r0, 0x51
_0801AE7A:
strb r0, [r4]
- ldr r1, =gUnknown_020228C4
+ ldr r1, =gBlockSendBuffer
movs r0, 0
movs r2, 0x20
bl SendBlock
@@ -41936,10 +41936,10 @@ _0801F020:
ldrb r1, [r4, 0x8]
cmp r0, r1
beq _0801F0A8
- bl sub_81AFBF0
+ bl UnkTextUtil_Reset
movs r0, 0
adds r1, r4, 0
- bl sub_81AFC0C
+ bl UnkTextUtil_SetPtrI
ldr r1, =gText_F700JoinedChat
b _0801F094
.pool
@@ -41976,14 +41976,14 @@ _0801F07A:
ldrb r5, [r5]
cmp r0, r5
beq _0801F0A8
- bl sub_81AFBF0
+ bl UnkTextUtil_Reset
movs r0, 0
adds r1, r4, 0
- bl sub_81AFC0C
+ bl UnkTextUtil_SetPtrI
ldr r1, =gText_F700LeftChat
_0801F094:
adds r0, r6, 0
- bl sub_81AFC28
+ bl UnkTextUtil_StringExpandPlaceholders
movs r0, 0x1
b _0801F0AA
.pool
@@ -43456,11 +43456,11 @@ sub_801FBF8: @ 801FBF8
beq _0801FC38
b _0801FC42
_0801FC08:
- bl sub_81AFBF0
+ bl UnkTextUtil_Reset
bl sub_801F1D0
adds r1, r0, 0
movs r0, 0
- bl sub_81AFC0C
+ bl UnkTextUtil_SetPtrI
movs r0, 0x5
movs r1, 0
bl sub_801FF18
@@ -43617,11 +43617,11 @@ sub_801FD30: @ 801FD30
beq _0801FD74
b _0801FD7E
_0801FD40:
- bl sub_81AFBF0
+ bl UnkTextUtil_Reset
ldr r0, =gSaveBlock2Ptr
ldr r1, [r0]
movs r0, 0
- bl sub_81AFC0C
+ bl UnkTextUtil_SetPtrI
movs r0, 0x9
movs r1, 0
bl sub_801FF18
@@ -43925,7 +43925,7 @@ _0801FF98:
adds r0, r1, 0
adds r0, 0x22
ldr r1, [r4]
- bl sub_81AFC28
+ bl UnkTextUtil_StringExpandPlaceholders
ldr r0, [r5]
adds r6, r0, 0
adds r6, 0x22
@@ -47204,7 +47204,7 @@ _08021A92:
lsls r4, 2
str r4, [sp, 0x24]
_08021A98:
- bl sub_81AFBF0
+ bl UnkTextUtil_Reset
ldr r0, [sp, 0x10]
cmp r0, 0x1
beq _08021B48
@@ -47463,10 +47463,10 @@ _08021CC8:
ldr r0, [sp, 0xC]
adds r1, r0, r1
movs r0, 0
- bl sub_81AFC0C
+ bl UnkTextUtil_SetPtrI
ldr r0, =gStringVar4
adds r1, r4, 0
- bl sub_81AFC28
+ bl UnkTextUtil_StringExpandPlaceholders
ldr r1, [sp, 0xC]
movs r2, 0xDD
lsls r2, 1
@@ -50249,7 +50249,7 @@ sub_802339C: @ 802339C
mov r10, r3
_080233C0:
lsls r0, r7, 4
- ldr r1, =gUnknown_03003090
+ ldr r1, =gRecvCmds
adds r2, r0, r1
ldrh r1, [r2]
movs r0, 0xFF
@@ -50858,7 +50858,7 @@ sub_802385C: @ 802385C
push {r4,r5,lr}
adds r5, r0, 0
movs r4, 0
- ldr r3, =gUnknown_03003090
+ ldr r3, =gRecvCmds
ldrb r0, [r5, 0x9]
cmp r4, r0
bcs _08023880
@@ -52112,7 +52112,7 @@ _0802426A:
bl sub_8197930
b _080242D0
_08024270:
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r4, r0, 24
movs r0, 0x2
@@ -52672,8 +52672,8 @@ SetBerryPowder: @ 802467C
.pool
thumb_func_end SetBerryPowder
- thumb_func_start ApplyNewEncyprtionKeyToBerryPowder
-ApplyNewEncyprtionKeyToBerryPowder: @ 8024690
+ thumb_func_start ApplyNewEncryptionKeyToBerryPowder
+ApplyNewEncryptionKeyToBerryPowder: @ 8024690
push {lr}
adds r1, r0, 0
ldr r0, =gSaveBlock2Ptr
@@ -52681,11 +52681,11 @@ ApplyNewEncyprtionKeyToBerryPowder: @ 8024690
movs r2, 0xFA
lsls r2, 1
adds r0, r2
- bl ApplyNewEncyprtionKeyToWord
+ bl ApplyNewEncryptionKeyToWord
pop {r0}
bx r0
.pool
- thumb_func_end ApplyNewEncyprtionKeyToBerryPowder
+ thumb_func_end ApplyNewEncryptionKeyToBerryPowder
thumb_func_start sub_80246AC
sub_80246AC: @ 80246AC
@@ -59626,7 +59626,7 @@ sub_8027DD0: @ 8027DD0
sub_8027DFC: @ 8027DFC
push {lr}
adds r2, r0, 0
- ldr r3, =gUnknown_03003090
+ ldr r3, =gRecvCmds
ldrh r0, [r3]
movs r1, 0xFF
lsls r1, 8
@@ -60082,7 +60082,7 @@ sub_8028164: @ 8028164
mov r9, r0
adds r2, r7, 0
adds r2, 0x14
- ldr r4, =gUnknown_03003090
+ ldr r4, =gRecvCmds
ldrh r0, [r4]
movs r1, 0xFF
lsls r1, 8
@@ -60295,7 +60295,7 @@ sub_8028318: @ 8028318
push {r4,lr}
adds r2, r0, 0
adds r4, r1, 0
- ldr r3, =gUnknown_03003090
+ ldr r3, =gRecvCmds
ldrh r0, [r3]
movs r1, 0xFF
lsls r1, 8
@@ -60347,7 +60347,7 @@ sub_8028350: @ 8028350
sub_8028374: @ 8028374
push {lr}
adds r2, r0, 0
- ldr r3, =gUnknown_03003090
+ ldr r3, =gRecvCmds
ldrh r0, [r3]
movs r1, 0xFF
lsls r1, 8
@@ -63514,7 +63514,7 @@ _08029DA0:
movs r1, 0x1
adds r2, r5, 0
bl PrintTextOnWindow
- bl sub_81AFBF0
+ bl UnkTextUtil_Reset
bl sub_802762C
lsls r0, 16
lsrs r0, 16
@@ -63523,11 +63523,11 @@ _08029DA0:
bl CopyItemName
movs r0, 0
adds r1, r5, 0
- bl sub_81AFC0C
+ bl UnkTextUtil_SetPtrI
ldr r7, =gStringVar4
ldr r1, =gText_FirstPlacePrize
adds r0, r7, 0
- bl sub_81AFC28
+ bl UnkTextUtil_StringExpandPlaceholders
ldr r0, [r4]
add r0, r10
ldrb r0, [r0]
@@ -63548,7 +63548,7 @@ _08029DA0:
beq _08029EC8
cmp r4, 0x3
beq _08029EC8
- bl sub_81AFBF0
+ bl UnkTextUtil_Reset
bl sub_802762C
lsls r0, 16
lsrs r0, 16
@@ -63556,12 +63556,12 @@ _08029DA0:
bl CopyItemName
movs r0, 0
adds r1, r5, 0
- bl sub_81AFC0C
+ bl UnkTextUtil_SetPtrI
cmp r4, 0x2
bne _08029E9C
ldr r1, =gText_CantHoldAnyMore
adds r0, r7, 0
- bl sub_81AFC28
+ bl UnkTextUtil_StringExpandPlaceholders
b _08029EA8
.pool
_08029E9C:
@@ -63569,7 +63569,7 @@ _08029E9C:
bne _08029EA8
ldr r1, =gText_FilledStorageSpace
adds r0, r7, 0
- bl sub_81AFC28
+ bl UnkTextUtil_StringExpandPlaceholders
_08029EA8:
ldr r0, =gUnknown_02022CF8
ldr r0, [r0]
@@ -70729,19 +70729,19 @@ sub_802D7E8: @ 802D7E8
movs r2, 0
movs r3, 0x1
bl ConvertIntToDecimalStringN
- bl sub_81AFBF0
+ bl UnkTextUtil_Reset
ldr r1, [r5]
adds r1, 0x26
movs r0, 0
- bl sub_81AFC0C
+ bl UnkTextUtil_SetPtrI
ldr r1, [r5]
adds r1, 0x66
movs r0, 0x1
- bl sub_81AFC0C
+ bl UnkTextUtil_SetPtrI
ldr r0, [r5]
adds r0, 0xA6
ldr r1, =gText_AwesomeWonF701F700
- bl sub_81AFC28
+ bl UnkTextUtil_StringExpandPlaceholders
movs r0, 0x4
movs r1, 0x8
movs r2, 0x16
@@ -70786,15 +70786,15 @@ sub_802D884: @ 802D884
ldr r1, [r4]
adds r1, 0x26
bl CopyItemName
- bl sub_81AFBF0
+ bl UnkTextUtil_Reset
ldr r1, [r4]
adds r1, 0x26
movs r0, 0
- bl sub_81AFC0C
+ bl UnkTextUtil_SetPtrI
ldr r0, [r4]
adds r0, 0xA6
ldr r1, =gText_FilledStorageSpace2
- bl sub_81AFC28
+ bl UnkTextUtil_StringExpandPlaceholders
movs r0, 0x4
movs r1, 0x8
movs r2, 0x16
@@ -70839,15 +70839,15 @@ sub_802D8FC: @ 802D8FC
ldr r1, [r4]
adds r1, 0x26
bl CopyItemName
- bl sub_81AFBF0
+ bl UnkTextUtil_Reset
ldr r1, [r4]
adds r1, 0x26
movs r0, 0
- bl sub_81AFC0C
+ bl UnkTextUtil_SetPtrI
ldr r0, [r4]
adds r0, 0xA6
ldr r1, =gText_CantHoldMore
- bl sub_81AFC28
+ bl UnkTextUtil_StringExpandPlaceholders
movs r0, 0x4
movs r1, 0x9
movs r2, 0x16
@@ -71033,7 +71033,7 @@ _0802DA84:
thumb_func_start sub_802DA8C
sub_802DA8C: @ 802DA8C
push {lr}
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r0, 24
pop {r1}
@@ -71819,7 +71819,7 @@ sub_802E0D0: @ 802E0D0
push {r4,lr}
sub sp, 0xC
adds r4, r1, 0
- ldr r3, =gUnknown_03003090
+ ldr r3, =gRecvCmds
lsls r2, r0, 4
adds r0, r2, r3
ldrh r1, [r0]
@@ -71946,7 +71946,7 @@ sub_802E1BC: @ 802E1BC
sub sp, 0xC
adds r5, r0, 0
adds r4, r1, 0
- ldr r2, =gUnknown_03003090
+ ldr r2, =gRecvCmds
ldrh r0, [r2]
movs r1, 0xFF
lsls r1, 8
@@ -72036,7 +72036,7 @@ sub_802E264: @ 802E264
adds r4, r0, 0
adds r5, r2, 0
adds r6, r3, 0
- ldr r3, =gUnknown_03003090
+ ldr r3, =gRecvCmds
lsls r2, r1, 4
adds r0, r2, r3
ldrh r1, [r0]
@@ -72091,7 +72091,7 @@ sub_802E2D0: @ 802E2D0
push {r4,lr}
sub sp, 0xC
adds r4, r0, 0
- ldr r3, =gUnknown_03003090
+ ldr r3, =gRecvCmds
lsls r2, r1, 4
adds r0, r2, r3
ldrh r1, [r0]
@@ -73085,7 +73085,7 @@ sub_802EAB0: @ 802EAB0
ldrb r0, [r0]
cmp r0, 0
beq _0802EB14
- ldr r1, =gUnknown_03003090
+ ldr r1, =gRecvCmds
ldrh r0, [r1, 0x2]
ldr r5, =0x00007fff
cmp r0, r5
diff --git a/asm/load_save.s b/asm/load_save.s
deleted file mode 100644
index 2b4be8e67..000000000
--- a/asm/load_save.s
+++ /dev/null
@@ -1,669 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
-
- thumb_func_start MoveSaveBlocks_ResetHeap
-MoveSaveBlocks_ResetHeap: @ 8076C2C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- ldr r5, =gMain
- ldr r0, [r5, 0xC]
- str r0, [sp]
- ldr r1, [r5, 0x10]
- str r1, [sp, 0x4]
- movs r0, 0
- str r0, [r5, 0xC]
- str r0, [r5, 0x10]
- ldr r1, =gUnknown_0203CF5C
- str r0, [r1]
- ldr r4, =0x02000000
- ldr r0, =gSaveBlock2Ptr
- ldr r1, [r0]
- ldr r6, =0x00000f2c
- adds r0, r4, 0
- adds r2, r6, 0
- bl memcpy
- ldr r1, =gSaveBlock1Ptr
- mov r10, r1
- ldr r1, [r1]
- ldr r7, =0x00003d88
- ldr r0, =0x02000f2c
- adds r2, r7, 0
- bl memcpy
- ldr r0, =gPokemonStoragePtr
- mov r8, r0
- ldr r1, [r0]
- ldr r0, =0x000083d0
- mov r9, r0
- ldr r0, =0x02004cb4
- mov r2, r9
- bl memcpy
- ldrb r1, [r4, 0xA]
- ldrb r0, [r4, 0xB]
- adds r1, r0
- ldrb r0, [r4, 0xC]
- adds r1, r0
- ldrb r0, [r4, 0xD]
- adds r0, r1
- bl SetSaveBlocksPointers
- ldr r1, =gSaveBlock2Ptr
- ldr r0, [r1]
- adds r1, r4, 0
- adds r2, r6, 0
- bl memcpy
- mov r1, r10
- ldr r0, [r1]
- ldr r1, =0x02000f2c
- adds r2, r7, 0
- bl memcpy
- mov r1, r8
- ldr r0, [r1]
- ldr r1, =0x02004cb4
- mov r2, r9
- bl memcpy
- movs r1, 0xE0
- lsls r1, 9
- adds r0, r4, 0
- bl InitHeap
- ldr r0, [sp, 0x4]
- str r0, [r5, 0x10]
- ldr r1, [sp]
- str r1, [r5, 0xC]
- bl Random
- adds r4, r0, 0
- bl Random
- lsls r4, 16
- lsls r0, 16
- lsrs r0, 16
- adds r4, r0
- adds r0, r4, 0
- bl ApplyNewEncyprtionKeyToAllEncryptedData
- ldr r1, =gSaveBlock2Ptr
- ldr r0, [r1]
- adds r0, 0xAC
- str r4, [r0]
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end MoveSaveBlocks_ResetHeap
-
- thumb_func_start sav2_x1_query_bit1
-sav2_x1_query_bit1: @ 8076D24
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r1, [r0, 0x9]
- movs r0, 0x1
- ands r0, r1
- bx lr
- .pool
- thumb_func_end sav2_x1_query_bit1
-
- thumb_func_start sav2_x9_clear_bit1
-sav2_x9_clear_bit1: @ 8076D34
- ldr r0, =gSaveBlock2Ptr
- ldr r2, [r0]
- ldrb r1, [r2, 0x9]
- movs r0, 0xFE
- ands r0, r1
- strb r0, [r2, 0x9]
- bx lr
- .pool
- thumb_func_end sav2_x9_clear_bit1
-
- thumb_func_start sub_8076D48
-sub_8076D48: @ 8076D48
- ldr r0, =gSaveBlock2Ptr
- ldr r2, [r0]
- ldrb r1, [r2, 0x9]
- movs r0, 0x1
- orrs r0, r1
- strb r0, [r2, 0x9]
- bx lr
- .pool
- thumb_func_end sub_8076D48
-
- thumb_func_start sub_8076D5C
-sub_8076D5C: @ 8076D5C
- push {lr}
- movs r0, 0
- bl sub_8084FAC
- ldr r0, =gSaveBlock2Ptr
- ldr r2, [r0]
- ldrb r1, [r2, 0x9]
- movs r0, 0x1
- orrs r0, r1
- strb r0, [r2, 0x9]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8076D5C
-
- thumb_func_start sav2_gender2_inplace_and_xFE
-sav2_gender2_inplace_and_xFE: @ 8076D78
- ldr r0, =gSaveBlock2Ptr
- ldr r2, [r0]
- ldrb r1, [r2, 0x9]
- movs r0, 0xFE
- ands r0, r1
- strb r0, [r2, 0x9]
- bx lr
- .pool
- thumb_func_end sav2_gender2_inplace_and_xFE
-
- thumb_func_start copy_player_party_to_sav1
-@ void copy_player_party_to_sav1()
-copy_player_party_to_sav1: @ 8076D8C
- push {r4,lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =gPlayerPartyCount
- ldrb r1, [r1]
- movs r2, 0x8D
- lsls r2, 2
- adds r0, r2
- strb r1, [r0]
- movs r4, 0
-_08076DA0:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- movs r1, 0x64
- muls r1, r4
- adds r0, r1
- movs r2, 0x8E
- lsls r2, 2
- adds r0, r2
- ldr r2, =gPlayerParty
- adds r1, r2
- movs r2, 0x64
- bl memcpy
- adds r4, 0x1
- cmp r4, 0x5
- ble _08076DA0
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end copy_player_party_to_sav1
-
- thumb_func_start copy_player_party_from_sav1
-copy_player_party_from_sav1: @ 8076DD4
- push {r4,r5,lr}
- ldr r1, =gPlayerPartyCount
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- movs r2, 0x8D
- lsls r2, 2
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- movs r4, 0
- ldr r5, =gPlayerParty
-_08076DEA:
- movs r0, 0x64
- adds r2, r4, 0
- muls r2, r0
- adds r0, r2, r5
- ldr r1, =gSaveBlock1Ptr
- ldr r1, [r1]
- adds r1, r2
- movs r2, 0x8E
- lsls r2, 2
- adds r1, r2
- movs r2, 0x64
- bl memcpy
- adds r4, 0x1
- cmp r4, 0x5
- ble _08076DEA
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end copy_player_party_from_sav1
-
- thumb_func_start save_serialize_npcs
-save_serialize_npcs: @ 8076E1C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r0, =gSaveBlock1Ptr
- mov r12, r0
- movs r5, 0xA3
- lsls r5, 4
- mov r8, r5
- ldr r4, =gMapObjects
- movs r3, 0
- movs r2, 0xF
-_08076E32:
- mov r6, r12
- ldr r1, [r6]
- adds r1, r3
- add r1, r8
- adds r0, r4, 0
- ldm r0!, {r5-r7}
- stm r1!, {r5-r7}
- ldm r0!, {r5-r7}
- stm r1!, {r5-r7}
- ldm r0!, {r5-r7}
- stm r1!, {r5-r7}
- adds r4, 0x24
- adds r3, 0x24
- subs r2, 0x1
- cmp r2, 0
- bge _08076E32
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end save_serialize_npcs
-
- thumb_func_start save_deserialize_npcs
-save_deserialize_npcs: @ 8076E64
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r0, =gSaveBlock1Ptr
- mov r12, r0
- movs r5, 0xA3
- lsls r5, 4
- mov r8, r5
- ldr r4, =gMapObjects
- movs r3, 0
- movs r2, 0xF
-_08076E7A:
- mov r6, r12
- ldr r1, [r6]
- adds r1, r3
- adds r0, r4, 0
- add r1, r8
- ldm r1!, {r5-r7}
- stm r0!, {r5-r7}
- ldm r1!, {r5-r7}
- stm r0!, {r5-r7}
- ldm r1!, {r5-r7}
- stm r0!, {r5-r7}
- adds r4, 0x24
- adds r3, 0x24
- subs r2, 0x1
- cmp r2, 0
- bge _08076E7A
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end save_deserialize_npcs
-
- thumb_func_start SaveSerializedGame
-SaveSerializedGame: @ 8076EAC
- push {lr}
- bl copy_player_party_to_sav1
- bl save_serialize_npcs
- pop {r0}
- bx r0
- thumb_func_end SaveSerializedGame
-
- thumb_func_start LoadSerializedGame
-LoadSerializedGame: @ 8076EBC
- push {lr}
- bl copy_player_party_from_sav1
- bl save_deserialize_npcs
- pop {r0}
- bx r0
- thumb_func_end LoadSerializedGame
-
- thumb_func_start copy_bags_and_unk_data_from_save_blocks
-copy_bags_and_unk_data_from_save_blocks: @ 8076ECC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- movs r2, 0
- ldr r0, =gUnknown_02032180
- mov r12, r0
- ldr r1, =gSaveBlock2Ptr
- mov r10, r1
- ldr r5, =gSaveBlock1Ptr
- movs r3, 0xAC
- lsls r3, 3
- ldr r4, =gUnknown_02031C58
-_08076EE8:
- lsls r0, r2, 2
- ldr r1, [r5]
- adds r1, r3
- adds r1, r0
- ldr r0, [r1]
- stm r4!, {r0}
- adds r2, 0x1
- cmp r2, 0x1D
- ble _08076EE8
- movs r2, 0
- ldr r0, =gUnknown_02031C58
- ldr r5, =gSaveBlock1Ptr
- movs r3, 0xBB
- lsls r3, 3
- adds r4, r0, 0
- adds r4, 0x78
-_08076F08:
- lsls r0, r2, 2
- ldr r1, [r5]
- adds r1, r3
- adds r1, r0
- ldr r0, [r1]
- stm r4!, {r0}
- adds r2, 0x1
- cmp r2, 0x1D
- ble _08076F08
- movs r2, 0
- ldr r0, =gUnknown_02031C58
- ldr r5, =gSaveBlock1Ptr
- movs r3, 0xCA
- lsls r3, 3
- adds r4, r0, 0
- adds r4, 0xF0
-_08076F28:
- lsls r0, r2, 2
- ldr r1, [r5]
- adds r1, r3
- adds r1, r0
- ldr r0, [r1]
- stm r4!, {r0}
- adds r2, 0x1
- cmp r2, 0xF
- ble _08076F28
- movs r2, 0
- ldr r0, =gUnknown_02031C58
- ldr r5, =gSaveBlock1Ptr
- movs r6, 0x98
- lsls r6, 1
- adds r4, r0, r6
- movs r3, 0xD2
- lsls r3, 3
-_08076F4A:
- lsls r0, r2, 2
- ldr r1, [r5]
- adds r1, r3
- adds r1, r0
- ldr r0, [r1]
- stm r4!, {r0}
- adds r2, 0x1
- cmp r2, 0x3F
- ble _08076F4A
- movs r2, 0
- ldr r0, =gUnknown_02031C58
- ldr r5, =gSaveBlock1Ptr
- movs r7, 0x8C
- lsls r7, 2
- adds r4, r0, r7
- movs r3, 0xF2
- lsls r3, 3
-_08076F6C:
- lsls r0, r2, 2
- ldr r1, [r5]
- adds r1, r3
- adds r1, r0
- ldr r0, [r1]
- stm r4!, {r0}
- adds r2, 0x1
- cmp r2, 0x2D
- ble _08076F6C
- ldr r0, =gUnknown_02031C58
- ldr r1, =gSaveBlock1Ptr
- mov r8, r1
- movs r5, 0xBA
- lsls r5, 2
- adds r4, r0, r5
- movs r3, 0
- ldr r6, =0x00002be0
- mov r9, r6
- movs r2, 0xF
-_08076F92:
- mov r7, r8
- ldr r1, [r7]
- adds r1, r3
- adds r0, r4, 0
- add r1, r9
- ldm r1!, {r5-r7}
- stm r0!, {r5-r7}
- ldm r1!, {r5-r7}
- stm r0!, {r5-r7}
- ldm r1!, {r5-r7}
- stm r0!, {r5-r7}
- adds r4, 0x24
- adds r3, 0x24
- subs r2, 0x1
- cmp r2, 0
- bge _08076F92
- mov r1, r10
- ldr r0, [r1]
- adds r0, 0xAC
- ldr r0, [r0]
- mov r5, r12
- str r0, [r5]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end copy_bags_and_unk_data_from_save_blocks
-
- thumb_func_start copy_bags_and_unk_data_to_save_blocks
-copy_bags_and_unk_data_to_save_blocks: @ 8076FE0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- movs r2, 0
- ldr r0, =gSaveBlock2Ptr
- mov r8, r0
- ldr r1, =gUnknown_02032180
- mov r12, r1
- ldr r5, =gSaveBlock1Ptr
- movs r3, 0xAC
- lsls r3, 3
- ldr r4, =gUnknown_02031C58
-_08076FFC:
- ldr r0, [r5]
- lsls r1, r2, 2
- adds r0, r3
- adds r0, r1
- ldm r4!, {r1}
- str r1, [r0]
- adds r2, 0x1
- cmp r2, 0x1D
- ble _08076FFC
- movs r2, 0
- ldr r5, =gSaveBlock1Ptr
- movs r4, 0xBB
- lsls r4, 3
- ldr r0, =gUnknown_02031C58
- adds r3, r0, 0
- adds r3, 0x78
-_0807701C:
- ldr r0, [r5]
- lsls r1, r2, 2
- adds r0, r4
- adds r0, r1
- ldm r3!, {r1}
- str r1, [r0]
- adds r2, 0x1
- cmp r2, 0x1D
- ble _0807701C
- movs r2, 0
- ldr r5, =gSaveBlock1Ptr
- movs r4, 0xCA
- lsls r4, 3
- ldr r0, =gUnknown_02031C58
- adds r3, r0, 0
- adds r3, 0xF0
-_0807703C:
- ldr r0, [r5]
- lsls r1, r2, 2
- adds r0, r4
- adds r0, r1
- ldm r3!, {r1}
- str r1, [r0]
- adds r2, 0x1
- cmp r2, 0xF
- ble _0807703C
- movs r2, 0
- ldr r5, =gSaveBlock1Ptr
- movs r4, 0xD2
- lsls r4, 3
- ldr r0, =gUnknown_02031C58
- movs r6, 0x98
- lsls r6, 1
- adds r3, r0, r6
-_0807705E:
- ldr r0, [r5]
- lsls r1, r2, 2
- adds r0, r4
- adds r0, r1
- ldm r3!, {r1}
- str r1, [r0]
- adds r2, 0x1
- cmp r2, 0x3F
- ble _0807705E
- movs r2, 0
- ldr r5, =gSaveBlock1Ptr
- movs r4, 0xF2
- lsls r4, 3
- ldr r0, =gUnknown_02031C58
- movs r7, 0x8C
- lsls r7, 2
- adds r3, r0, r7
-_08077080:
- ldr r0, [r5]
- lsls r1, r2, 2
- adds r0, r4
- adds r0, r1
- ldm r3!, {r1}
- str r1, [r0]
- adds r2, 0x1
- cmp r2, 0x2D
- ble _08077080
- ldr r0, =gSaveBlock1Ptr
- mov r9, r0
- ldr r1, =0x00002be0
- mov r10, r1
- ldr r4, =gUnknown_02031C58
- movs r3, 0
- movs r2, 0xF
-_080770A0:
- mov r5, r9
- ldr r1, [r5]
- adds r1, r3
- add r1, r10
- movs r6, 0xBA
- lsls r6, 2
- adds r0, r4, r6
- ldm r0!, {r5-r7}
- stm r1!, {r5-r7}
- ldm r0!, {r5-r7}
- stm r1!, {r5-r7}
- ldm r0!, {r5-r7}
- stm r1!, {r5-r7}
- adds r4, 0x24
- adds r3, 0x24
- subs r2, 0x1
- cmp r2, 0
- bge _080770A0
- mov r7, r8
- ldr r0, [r7]
- adds r0, 0xAC
- ldr r4, [r0]
- mov r2, r12
- ldr r1, [r2]
- str r1, [r0]
- adds r0, r4, 0
- bl ApplyNewEncyprtionKeyToBagItems
- ldr r0, [r7]
- adds r0, 0xAC
- str r4, [r0]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end copy_bags_and_unk_data_to_save_blocks
-
- thumb_func_start ApplyNewEncyprtionKeyToHword
-ApplyNewEncyprtionKeyToHword: @ 8077100
- ldr r2, =gSaveBlock2Ptr
- ldr r2, [r2]
- adds r2, 0xAC
- ldr r2, [r2]
- ldrh r3, [r0]
- eors r2, r3
- eors r2, r1
- strh r2, [r0]
- bx lr
- .pool
- thumb_func_end ApplyNewEncyprtionKeyToHword
-
- thumb_func_start ApplyNewEncyprtionKeyToWord
-ApplyNewEncyprtionKeyToWord: @ 8077118
- ldr r2, =gSaveBlock2Ptr
- ldr r3, [r2]
- adds r3, 0xAC
- ldr r2, [r0]
- ldr r3, [r3]
- eors r2, r3
- eors r2, r1
- str r2, [r0]
- bx lr
- .pool
- thumb_func_end ApplyNewEncyprtionKeyToWord
-
- thumb_func_start ApplyNewEncyprtionKeyToAllEncryptedData
-ApplyNewEncyprtionKeyToAllEncryptedData: @ 8077130
- push {r4,r5,lr}
- adds r4, r0, 0
- bl ApplyNewEncyprtionKeyToGameStats
- adds r0, r4, 0
- bl ApplyNewEncyprtionKeyToBagItems_
- adds r0, r4, 0
- bl ApplyNewEncyprtionKeyToBerryPowder
- ldr r5, =gSaveBlock1Ptr
- ldr r0, [r5]
- movs r1, 0x92
- lsls r1, 3
- adds r0, r1
- adds r1, r4, 0
- bl ApplyNewEncyprtionKeyToWord
- ldr r0, [r5]
- ldr r1, =0x00000494
- adds r0, r1
- adds r1, r4, 0
- bl ApplyNewEncyprtionKeyToHword
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ApplyNewEncyprtionKeyToAllEncryptedData
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc
new file mode 100644
index 000000000..a16b59366
--- /dev/null
+++ b/asm/macros/battle_script.inc
@@ -0,0 +1,1401 @@
+@ commands
+ .macro attackcanceler
+ .byte 0x0
+ .endm
+
+ .macro accuracycheck param0, param1
+ .byte 0x1
+ .4byte \param0
+ .2byte \param1
+ .endm
+
+ .macro attackstring
+ .byte 0x2
+ .endm
+
+ .macro ppreduce
+ .byte 0x3
+ .endm
+
+ .macro critcalc
+ .byte 0x4
+ .endm
+
+ .macro damagecalc
+ .byte 0x5
+ .endm
+
+ .macro typecalc
+ .byte 0x6
+ .endm
+
+ .macro adjustnormaldamage
+ .byte 0x7
+ .endm
+
+ .macro adjustnormaldamage2
+ .byte 0x8
+ .endm
+
+ .macro attackanimation
+ .byte 0x9
+ .endm
+
+ .macro waitanimation
+ .byte 0xa
+ .endm
+
+ .macro healthbarupdate bank
+ .byte 0xb
+ .byte \bank
+ .endm
+
+ .macro datahpupdate bank
+ .byte 0xc
+ .byte \bank
+ .endm
+
+ .macro critmessage
+ .byte 0xd
+ .endm
+
+ .macro effectivenesssound
+ .byte 0xe
+ .endm
+
+ .macro resultmessage
+ .byte 0xf
+ .endm
+
+ .macro printstring param0
+ .byte 0x10
+ .2byte \param0
+ .endm
+
+ .macro printselectionstring param0
+ .byte 0x11
+ .2byte \param0
+ .endm
+
+ .macro waitmessage param0
+ .byte 0x12
+ .2byte \param0
+ .endm
+
+ .macro printfromtable param0
+ .byte 0x13
+ .4byte \param0
+ .endm
+
+ .macro printselectionstringfromtable param0
+ .byte 0x14
+ .4byte \param0
+ .endm
+
+ .macro seteffectwithchance
+ .byte 0x15
+ .endm
+
+ .macro seteffectprimary
+ .byte 0x16
+ .endm
+
+ .macro seteffectsecondary
+ .byte 0x17
+ .endm
+
+ .macro clearstatusfromeffect bank
+ .byte 0x18
+ .byte \bank
+ .endm
+
+ .macro tryfaintmon bank, param1, param2
+ .byte 0x19
+ .byte \bank
+ .byte \param1
+ .4byte \param2
+ .endm
+
+ .macro dofaintanimation bank
+ .byte 0x1a
+ .byte \bank
+ .endm
+
+ .macro cleareffectsonfaint bank
+ .byte 0x1b
+ .byte \bank
+ .endm
+
+ .macro jumpifstatus bank, status1, param2
+ .byte 0x1c
+ .byte \bank
+ .4byte \status1
+ .4byte \param2
+ .endm
+
+ .macro jumpifstatus2 bank, status2, param2
+ .byte 0x1d
+ .byte \bank
+ .4byte \status2
+ .4byte \param2
+ .endm
+
+ .macro jumpifability param0, ability, param2
+ .byte 0x1e
+ .byte \param0
+ .byte \ability
+ .4byte \param2
+ .endm
+
+ .macro jumpifsideaffecting bank, sidestatus, param2
+ .byte 0x1f
+ .byte \bank
+ .2byte \sidestatus
+ .4byte \param2
+ .endm
+
+ .macro jumpifstat bank, ifflag, stat, param3, param4
+ .byte 0x20
+ .byte \bank
+ .byte \ifflag
+ .byte \stat
+ .byte \param3
+ .4byte \param4
+ .endm
+
+ .macro jumpifstatus3condition bank, status3, param2, param3
+ .byte 0x21
+ .byte \bank
+ .4byte \status3
+ .byte \param2
+ .4byte \param3
+ .endm
+
+ .macro jumpiftype bank, type, param2
+ .byte 0x22
+ .byte \bank
+ .byte \type
+ .4byte \param2
+ .endm
+
+ .macro getexp bank
+ .byte 0x23
+ .byte \bank
+ .endm
+
+ .macro atk24 param0
+ .byte 0x24
+ .4byte \param0
+ .endm
+
+ .macro movevaluescleanup
+ .byte 0x25
+ .endm
+
+ .macro setmultihit param0
+ .byte 0x26
+ .byte \param0
+ .endm
+
+ .macro decrementmultihit param0
+ .byte 0x27
+ .4byte \param0
+ .endm
+
+ .macro goto param0
+ .byte 0x28
+ .4byte \param0
+ .endm
+
+ .macro jumpifbyte ifflag, param1, param2, param3
+ .byte 0x29
+ .byte \ifflag
+ .4byte \param1
+ .byte \param2
+ .4byte \param3
+ .endm
+
+ .macro jumpifhalfword ifflag, param1, param2, param3
+ .byte 0x2a
+ .byte \ifflag
+ .4byte \param1
+ .2byte \param2
+ .4byte \param3
+ .endm
+
+ .macro jumpifword ifflag, param1, param2, param3
+ .byte 0x2b
+ .byte \ifflag
+ .4byte \param1
+ .4byte \param2
+ .4byte \param3
+ .endm
+
+ .macro jumpifarrayequal param0, param1, param2, param3
+ .byte 0x2c
+ .4byte \param0
+ .4byte \param1
+ .byte \param2
+ .4byte \param3
+ .endm
+
+ .macro jumpifarraynotequal param0, param1, param2, param3
+ .byte 0x2d
+ .4byte \param0
+ .4byte \param1
+ .byte \param2
+ .4byte \param3
+ .endm
+
+ .macro setbyte param0, param1
+ .byte 0x2e
+ .4byte \param0
+ .byte \param1
+ .endm
+
+ .macro addbyte param0, param1
+ .byte 0x2f
+ .4byte \param0
+ .byte \param1
+ .endm
+
+ .macro subbyte param0, param1
+ .byte 0x30
+ .4byte \param0
+ .byte \param1
+ .endm
+
+ .macro copyarray param0, param1, param2
+ .byte 0x31
+ .4byte \param0
+ .4byte \param1
+ .byte \param2
+ .endm
+
+ .macro copyarraywithindex param0, param1, param2, param3
+ .byte 0x32
+ .4byte \param0
+ .4byte \param1
+ .4byte \param2
+ .byte \param3
+ .endm
+
+ .macro orbyte param0, param1
+ .byte 0x33
+ .4byte \param0
+ .byte \param1
+ .endm
+
+ .macro orhalfword param0, param1
+ .byte 0x34
+ .4byte \param0
+ .2byte \param1
+ .endm
+
+ .macro orword param0, param1
+ .byte 0x35
+ .4byte \param0
+ .4byte \param1
+ .endm
+
+ .macro bicbyte param0, param1
+ .byte 0x36
+ .4byte \param0
+ .byte \param1
+ .endm
+
+ .macro bichalfword param0, param1
+ .byte 0x37
+ .4byte \param0
+ .2byte \param1
+ .endm
+
+ .macro bicword param0, param1
+ .byte 0x38
+ .4byte \param0
+ .4byte \param1
+ .endm
+
+ .macro pause param0
+ .byte 0x39
+ .2byte \param0
+ .endm
+
+ .macro waitstate
+ .byte 0x3a
+ .endm
+
+ .macro healthbar_update bank
+ .byte 0x3b
+ .byte \bank
+ .endm
+
+ .macro return
+ .byte 0x3c
+ .endm
+
+ .macro end
+ .byte 0x3d
+ .endm
+
+ .macro end2
+ .byte 0x3e
+ .endm
+
+ .macro end3
+ .byte 0x3f
+ .endm
+
+ .macro jumpifaffectedbyprotect param0
+ .byte 0x40
+ .4byte \param0
+ .endm
+
+ .macro call param0
+ .byte 0x41
+ .4byte \param0
+ .endm
+
+ .macro jumpiftype2 bank, type, param2
+ .byte 0x42
+ .byte \bank
+ .byte \type
+ .4byte \param2
+ .endm
+
+ .macro jumpifabilitypresent ability, param1
+ .byte 0x43
+ .byte \ability
+ .4byte \param1
+ .endm
+
+ .macro endselectionscript
+ .byte 0x44
+ .endm
+
+ .macro playanimation bank, param1, param2
+ .byte 0x45
+ .byte \bank
+ .byte \param1
+ .4byte \param2
+ .endm
+
+ .macro playanimation2 bank, param1, param2
+ .byte 0x46
+ .byte \bank
+ .4byte \param1
+ .4byte \param2
+ .endm
+
+ .macro setgraphicalstatchangevalues
+ .byte 0x47
+ .endm
+
+ .macro playstatchangeanimation bank, param1, param2
+ .byte 0x48
+ .byte \bank
+ .byte \param1
+ .byte \param2
+ .endm
+
+ .macro moveend param0, param1
+ .byte 0x49
+ .byte \param0
+ .byte \param1
+ .endm
+
+ .macro typecalc2
+ .byte 0x4a
+ .endm
+
+ .macro returnatktoball
+ .byte 0x4b
+ .endm
+
+ .macro getswitchedmondata bank
+ .byte 0x4c
+ .byte \bank
+ .endm
+
+ .macro switchindataupdate bank
+ .byte 0x4d
+ .byte \bank
+ .endm
+
+ .macro switchinanim bank, dontclearsubstitutebit
+ .byte 0x4e
+ .byte \bank
+ .byte \dontclearsubstitutebit
+ .endm
+
+ .macro jumpifcantswitch bank, param1
+ .byte 0x4f
+ .byte \bank
+ .4byte \param1
+ .endm
+
+ .macro openpartyscreen param0, param1
+ .byte 0x50
+ .byte \param0
+ .4byte \param1
+ .endm
+
+ .macro switchhandleorder bank, param1
+ .byte 0x51
+ .byte \bank
+ .byte \param1
+ .endm
+
+ .macro switchineffects bank
+ .byte 0x52
+ .byte \bank
+ .endm
+
+ .macro trainerslidein bank
+ .byte 0x53
+ .byte \bank
+ .endm
+
+ .macro playse param0
+ .byte 0x54
+ .2byte \param0
+ .endm
+
+ .macro fanfare param0
+ .byte 0x55
+ .2byte \param0
+ .endm
+
+ .macro playfaintcry bank
+ .byte 0x56
+ .byte \bank
+ .endm
+
+ .macro atk57
+ .byte 0x57
+ .endm
+
+ .macro returntoball bank
+ .byte 0x58
+ .byte \bank
+ .endm
+
+ .macro handlelearnnewmove param0, param1, param2
+ .byte 0x59
+ .4byte \param0
+ .4byte \param1
+ .byte \param2
+ .endm
+
+ .macro yesnoboxlearnmove param0
+ .byte 0x5a
+ .4byte \param0
+ .endm
+
+ .macro yesnoboxstoplearningmove param0
+ .byte 0x5b
+ .4byte \param0
+ .endm
+
+ .macro hitanimation bank
+ .byte 0x5c
+ .byte \bank
+ .endm
+
+ .macro getmoneyreward
+ .byte 0x5d
+ .endm
+
+ .macro atk5E bank
+ .byte 0x5e
+ .byte \bank
+ .endm
+
+ .macro atk5F
+ .byte 0x5f
+ .endm
+
+ .macro incrementgamestat param0
+ .byte 0x60
+ .byte \param0
+ .endm
+
+ .macro drawpartystatussummary bank
+ .byte 0x61
+ .byte \bank
+ .endm
+
+ .macro atk62 bank
+ .byte 0x62
+ .byte \bank
+ .endm
+
+ .macro jumptorandomattack param0
+ .byte 0x63
+ .byte \param0
+ .endm
+
+ .macro statusanimation bank
+ .byte 0x64
+ .byte \bank
+ .endm
+
+ .macro status2animation bank, status2
+ .byte 0x65
+ .byte \bank
+ .4byte \status2
+ .endm
+
+ .macro chosenstatusanimation bank, param1, param2
+ .byte 0x66
+ .byte \bank
+ .byte \param1
+ .4byte \param2
+ .endm
+
+ .macro yesnobox
+ .byte 0x67
+ .endm
+
+ .macro cancelallactions
+ .byte 0x68
+ .endm
+
+ .macro adjustsetdamage
+ .byte 0x69
+ .endm
+
+ .macro removeitem bank
+ .byte 0x6a
+ .byte \bank
+ .endm
+
+ .macro atknameinbuff1
+ .byte 0x6b
+ .endm
+
+ .macro drawlvlupbox
+ .byte 0x6c
+ .endm
+
+ .macro resetsentmonsvalue
+ .byte 0x6d
+ .endm
+
+ .macro setatktoplayer0
+ .byte 0x6e
+ .endm
+
+ .macro makevisible bank
+ .byte 0x6f
+ .byte \bank
+ .endm
+
+ .macro recordlastability bank
+ .byte 0x70
+ .byte \bank
+ .endm
+
+ .macro buffermovetolearn
+ .byte 0x71
+ .endm
+
+ .macro jumpifplayerran param0
+ .byte 0x72
+ .4byte \param0
+ .endm
+
+ .macro hpthresholds bank
+ .byte 0x73
+ .byte \bank
+ .endm
+
+ .macro hpthresholds2 bank
+ .byte 0x74
+ .byte \bank
+ .endm
+
+ .macro useitemonopponent
+ .byte 0x75
+ .endm
+
+ .macro various bank, param1
+ .byte 0x76
+ .byte \bank
+ .byte \param1
+ .endm
+
+ .macro setprotectlike
+ .byte 0x77
+ .endm
+
+ .macro faintifabilitynotdamp
+ .byte 0x78
+ .endm
+
+ .macro setatkhptozero
+ .byte 0x79
+ .endm
+
+ .macro jumpifnexttargetvalid param0
+ .byte 0x7a
+ .4byte \param0
+ .endm
+
+ .macro tryhealhalfhealth param0, bank
+ .byte 0x7b
+ .4byte \param0
+ .byte \bank
+ .endm
+
+ .macro trymirrormove
+ .byte 0x7c
+ .endm
+
+ .macro setrain
+ .byte 0x7d
+ .endm
+
+ .macro setreflect
+ .byte 0x7e
+ .endm
+
+ .macro setseeded
+ .byte 0x7f
+ .endm
+
+ .macro manipulatedamage param0
+ .byte 0x80
+ .byte \param0
+ .endm
+
+ .macro trysetrest param0
+ .byte 0x81
+ .4byte \param0
+ .endm
+
+ .macro jumpifnotfirstturn param0
+ .byte 0x82
+ .4byte \param0
+ .endm
+
+ .macro nop
+ .byte 0x83
+ .endm
+
+ .macro jumpifcantmakeasleep param0
+ .byte 0x84
+ .4byte \param0
+ .endm
+
+ .macro stockpile
+ .byte 0x85
+ .endm
+
+ .macro stockpiletobasedamage param0
+ .byte 0x86
+ .4byte \param0
+ .endm
+
+ .macro stockpiletohpheal param0
+ .byte 0x87
+ .4byte \param0
+ .endm
+
+ .macro negativedamage
+ .byte 0x88
+ .endm
+
+ .macro statbuffchange param0, param1
+ .byte 0x89
+ .byte \param0
+ .4byte \param1
+ .endm
+
+ .macro normalisebuffs
+ .byte 0x8a
+ .endm
+
+ .macro setbide
+ .byte 0x8b
+ .endm
+
+ .macro confuseifrepeatingattackends
+ .byte 0x8c
+ .endm
+
+ .macro setmultihitcounter param0
+ .byte 0x8d
+ .byte \param0
+ .endm
+
+ .macro initmultihitstring
+ .byte 0x8e
+ .endm
+
+ .macro forcerandomswitch param0
+ .byte 0x8f
+ .4byte \param0
+ .endm
+
+ .macro tryconversiontypechange param0
+ .byte 0x90
+ .4byte \param0
+ .endm
+
+ .macro givepaydaymoney
+ .byte 0x91
+ .endm
+
+ .macro setlightscreen
+ .byte 0x92
+ .endm
+
+ .macro tryKO param0
+ .byte 0x93
+ .4byte \param0
+ .endm
+
+ .macro damagetohalftargethp
+ .byte 0x94
+ .endm
+
+ .macro setsandstorm
+ .byte 0x95
+ .endm
+
+ .macro weatherdamage
+ .byte 0x96
+ .endm
+
+ .macro tryinfatuating param0
+ .byte 0x97
+ .4byte \param0
+ .endm
+
+ .macro updatestatusicon bank
+ .byte 0x98
+ .byte \bank
+ .endm
+
+ .macro setmist
+ .byte 0x99
+ .endm
+
+ .macro setfocusenergy
+ .byte 0x9a
+ .endm
+
+ .macro transformdataexecution
+ .byte 0x9b
+ .endm
+
+ .macro setsubstitute
+ .byte 0x9c
+ .endm
+
+ .macro mimicattackcopy param0
+ .byte 0x9d
+ .4byte \param0
+ .endm
+
+ .macro metronome
+ .byte 0x9e
+ .endm
+
+ .macro dmgtolevel
+ .byte 0x9f
+ .endm
+
+ .macro psywavedamageeffect
+ .byte 0xa0
+ .endm
+
+ .macro counterdamagecalculator param0
+ .byte 0xa1
+ .4byte \param0
+ .endm
+
+ .macro mirrorcoatdamagecalculator param0
+ .byte 0xa2
+ .4byte \param0
+ .endm
+
+ .macro disablelastusedattack param0
+ .byte 0xa3
+ .4byte \param0
+ .endm
+
+ .macro trysetencore param0
+ .byte 0xa4
+ .4byte \param0
+ .endm
+
+ .macro painsplitdmgcalc param0
+ .byte 0xa5
+ .4byte \param0
+ .endm
+
+ .macro settypetorandomresistance param0
+ .byte 0xa6
+ .4byte \param0
+ .endm
+
+ .macro setalwayshitflag
+ .byte 0xa7
+ .endm
+
+ .macro copymovepermanently param0
+ .byte 0xa8
+ .4byte \param0
+ .endm
+
+ .macro trychoosesleeptalkmove param0
+ .byte 0xa9
+ .4byte \param0
+ .endm
+
+ .macro setdestinybond
+ .byte 0xaa
+ .endm
+
+ .macro trysetdestinybondtohappen
+ .byte 0xab
+ .endm
+
+ .macro remaininghptopower
+ .byte 0xac
+ .endm
+
+ .macro tryspiteppreduce param0
+ .byte 0xad
+ .4byte \param0
+ .endm
+
+ .macro healpartystatus
+ .byte 0xae
+ .endm
+
+ .macro cursetarget param0
+ .byte 0xaf
+ .4byte \param0
+ .endm
+
+ .macro trysetspikes param0
+ .byte 0xb0
+ .4byte \param0
+ .endm
+
+ .macro setforesight
+ .byte 0xb1
+ .endm
+
+ .macro trysetperishsong param0
+ .byte 0xb2
+ .4byte \param0
+ .endm
+
+ .macro rolloutdamagecalculation
+ .byte 0xb3
+ .endm
+
+ .macro jumpifconfusedandstatmaxed stat, param1
+ .byte 0xb4
+ .byte \stat
+ .4byte \param1
+ .endm
+
+ .macro furycuttercalc
+ .byte 0xb5
+ .endm
+
+ .macro happinesstodamagecalculation
+ .byte 0xb6
+ .endm
+
+ .macro presentdamagecalculation
+ .byte 0xb7
+ .endm
+
+ .macro setsafeguard
+ .byte 0xb8
+ .endm
+
+ .macro magnitudedamagecalculation
+ .byte 0xb9
+ .endm
+
+ .macro jumpifnopursuitswitchdmg param0
+ .byte 0xba
+ .4byte \param0
+ .endm
+
+ .macro setsunny
+ .byte 0xbb
+ .endm
+
+ .macro maxattackhalvehp param0
+ .byte 0xbc
+ .4byte \param0
+ .endm
+
+ .macro copyfoestats param0
+ .byte 0xbd
+ .4byte \param0
+ .endm
+
+ .macro rapidspinfree
+ .byte 0xbe
+ .endm
+
+ .macro setdefensecurlbit
+ .byte 0xbf
+ .endm
+
+ .macro recoverbasedonsunlight param0
+ .byte 0xc0
+ .4byte \param0
+ .endm
+
+ .macro hiddenpowercalc
+ .byte 0xc1
+ .endm
+
+ .macro selectfirstvalidtarget
+ .byte 0xc2
+ .endm
+
+ .macro trysetfutureattack param0
+ .byte 0xc3
+ .4byte \param0
+ .endm
+
+ .macro trydobeatup param0, param1
+ .byte 0xc4
+ .4byte \param0
+ .4byte \param1
+ .endm
+
+ .macro setsemiinvulnerablebit
+ .byte 0xc5
+ .endm
+
+ .macro clearsemiinvulnerablebit
+ .byte 0xc6
+ .endm
+
+ .macro setminimize
+ .byte 0xc7
+ .endm
+
+ .macro sethail
+ .byte 0xc8
+ .endm
+
+ .macro jumpifattackandspecialattackcannotfall param0
+ .byte 0xc9
+ .4byte \param0
+ .endm
+
+ .macro setforcedtarget
+ .byte 0xca
+ .endm
+
+ .macro setcharge
+ .byte 0xcb
+ .endm
+
+ .macro callterrainattack
+ .byte 0xcc
+ .endm
+
+ .macro cureifburnedparalysedorpoisoned param0
+ .byte 0xcd
+ .4byte \param0
+ .endm
+
+ .macro settorment param0
+ .byte 0xce
+ .4byte \param0
+ .endm
+
+ .macro jumpifnodamage param0
+ .byte 0xcf
+ .4byte \param0
+ .endm
+
+ .macro settaunt param0
+ .byte 0xd0
+ .4byte \param0
+ .endm
+
+ .macro trysethelpinghand param0
+ .byte 0xd1
+ .4byte \param0
+ .endm
+
+ .macro tryswapitems param0
+ .byte 0xd2
+ .4byte \param0
+ .endm
+
+ .macro trycopyability param0
+ .byte 0xd3
+ .4byte \param0
+ .endm
+
+ .macro trywish param0, param1
+ .byte 0xd4
+ .byte \param0
+ .4byte \param1
+ .endm
+
+ .macro trysetroots param0
+ .byte 0xd5
+ .4byte \param0
+ .endm
+
+ .macro doubledamagedealtifdamaged
+ .byte 0xd6
+ .endm
+
+ .macro setyawn param0
+ .byte 0xd7
+ .4byte \param0
+ .endm
+
+ .macro setdamagetohealthdifference param0
+ .byte 0xd8
+ .4byte \param0
+ .endm
+
+ .macro scaledamagebyhealthratio
+ .byte 0xd9
+ .endm
+
+ .macro tryswapabilities param0
+ .byte 0xda
+ .4byte \param0
+ .endm
+
+ .macro tryimprision param0
+ .byte 0xdb
+ .4byte \param0
+ .endm
+
+ .macro trysetgrudge param0
+ .byte 0xdc
+ .4byte \param0
+ .endm
+
+ .macro weightdamagecalculation
+ .byte 0xdd
+ .endm
+
+ .macro asistattackselect param0
+ .byte 0xde
+ .4byte \param0
+ .endm
+
+ .macro trysetmagiccoat param0
+ .byte 0xdf
+ .4byte \param0
+ .endm
+
+ .macro trysetsnatch param0
+ .byte 0xe0
+ .4byte \param0
+ .endm
+
+ .macro trygetintimidatetarget param0
+ .byte 0xe1
+ .4byte \param0
+ .endm
+
+ .macro switchoutabilities bank
+ .byte 0xe2
+ .byte \bank
+ .endm
+
+ .macro jumpifhasnohp bank, param1
+ .byte 0xe3
+ .byte \bank
+ .4byte \param1
+ .endm
+
+ .macro getsecretpowereffect
+ .byte 0xe4
+ .endm
+
+ .macro pickup
+ .byte 0xe5
+ .endm
+
+ .macro docastformchangeanimation
+ .byte 0xe6
+ .endm
+
+ .macro trycastformdatachange
+ .byte 0xe7
+ .endm
+
+ .macro settypebasedhalvers param0
+ .byte 0xe8
+ .4byte \param0
+ .endm
+
+ .macro setweatherballtype
+ .byte 0xe9
+ .endm
+
+ .macro tryrecycleitem param0
+ .byte 0xea
+ .4byte \param0
+ .endm
+
+ .macro settypetoterrain param0
+ .byte 0xeb
+ .4byte \param0
+ .endm
+
+ .macro pursuitrelated param0
+ .byte 0xec
+ .4byte \param0
+ .endm
+
+ .macro snatchsetbanks
+ .byte 0xed
+ .endm
+
+ .macro removelightscreenreflect
+ .byte 0xee
+ .endm
+
+ .macro handleballthrow
+ .byte 0xef
+ .endm
+
+ .macro givecaughtmon
+ .byte 0xf0
+ .endm
+
+ .macro trysetcaughtmondexflags param0
+ .byte 0xf1
+ .4byte \param0
+ .endm
+
+ .macro displaydexinfo
+ .byte 0xf2
+ .endm
+
+ .macro trygivecaughtmonnick param0
+ .byte 0xf3
+ .4byte \param0
+ .endm
+
+ .macro subattackerhpbydmg
+ .byte 0xf4
+ .endm
+
+ .macro removeattackerstatus1
+ .byte 0xf5
+ .endm
+
+ .macro finishaction
+ .byte 0xf6
+ .endm
+
+ .macro finishturn
+ .byte 0xf7
+ .endm
+
+ .macro trainerslideout param0
+ .byte 0xf8
+ .byte \param0
+ .endm
+
+@ various command changed to more readable macros
+ .macro cancelmultiturnmoves bank
+ various \bank, VARIOUS_CANCEL_MULTI_TURN_MOVES
+ .endm
+
+ .macro setmagiccoattarget bank
+ various \bank, VARIOUS_SET_MAGIC_COAT_TARGET
+ .endm
+
+ .macro getifcantrunfrombattle bank
+ various \bank, VARIOUS_IS_RUNNING_IMPOSSIBLE
+ .endm
+
+ .macro getmovetarget bank
+ various \bank, VARIOUS_GET_MOVE_TARGET
+ .endm
+
+ .macro various4 bank
+ various \bank, 4
+ .endm
+
+ .macro resetintrimidatetracebits bank
+ various \bank, VARIOUS_RESET_INTIMIDATE_TRACE_BITS
+ .endm
+
+ .macro updatechoicemoveonlvlup bank
+ various \bank, VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP
+ .endm
+
+ .macro various7 bank
+ various \bank, 7
+ .endm
+
+ .macro various8 bank
+ various \bank, 8
+ .endm
+
+ .macro various9 bank
+ various \bank, 9
+ .endm
+
+ .macro various10 bank
+ various \bank, 10
+ .endm
+
+ .macro various11 bank
+ various \bank, 11
+ .endm
+
+ .macro various12 bank
+ various \bank, 12
+ .endm
+
+ .macro forfeityesnobox bank
+ various \bank, VARIOUS_EMIT_YESNOBOX
+ .endm
+
+ .macro various14 bank
+ various \bank, 14
+ .endm
+
+ .macro various15 bank
+ various \bank, 15
+ .endm
+
+ .macro various16 bank
+ various \bank, 16
+ .endm
+
+ .macro various17 bank
+ various \bank, 17
+ .endm
+
+ .macro waitcry bank
+ various \bank, VARIOUS_WAIT_CRY
+ .endm
+
+ .macro returnopponentmon1toball bank
+ various \bank, VARIOUS_RETURN_OPPONENT_MON1
+ .endm
+
+ .macro returnopponentmon2toball bank
+ various \bank, VARIOUS_RETURN_OPPONENT_MON2
+ .endm
+
+ .macro various21 bank
+ various \bank, 21
+ .endm
+
+ .macro various22 bank
+ various \bank, 22
+ .endm
+
+ .macro various23 bank
+ various \bank, 23
+ .endm
+
+ .macro various24 bank
+ various \bank, 24
+ .endm
+
+ .macro setoutcomeonteleport bank
+ various \bank, VARIOUS_SET_TELEPORT_OUTCOME
+ .endm
+
+ .macro playtrainerdefeatbgm bank
+ various \bank, VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC
+ .endm
+
+@ helpful macros
+ .macro setstatchanger stat, stages, down
+ setbyte sSTATCHANGER \stat | \stages << 4 | \down << 7
+ .endm
+
+ .macro setmoveeffect effect
+ setbyte cEFFECT_CHOOSER \effect
+ .endm
+
+ .macro chosenstatus1animation bank, status
+ chosenstatusanimation \bank 0x0 \status
+ .endm
+
+ .macro chosenstatus2animation bank, status
+ chosenstatusanimation \bank 0x1 \status
+ .endm
+
+ .macro sethword dst, value
+ setbyte \dst, \value & 0xFF
+ setbyte \dst + 1, (\value >> 8) & 0xFF
+ .endm
+
+ .macro setword dst, value
+ setbyte \dst, \value & 0xFF
+ setbyte \dst + 1, (\value >> 8) & 0xFF
+ setbyte \dst + 2, (\value >> 16) & 0xFF
+ setbyte \dst + 3, (\value >> 24) & 0xFF
+ .endm
+
+ .macro copybyte dst, src
+ copyarray \dst, \src, 0x1
+ .endm
+
+ .macro copyhword dst, src
+ copyarray \dst, \src, 0x2
+ .endm
+
+ .macro copyword dst, src
+ copyarray \dst, \src, 0x4
+ .endm
+
+ .macro jumpifbytenotequal byte1, byte2, jumpptr
+ jumpifarraynotequal \byte1, \byte2, 0x1, \jumpptr
+ .endm
+
+ .macro jumpifbyteequal byte1, byte2, jumpptr
+ jumpifarrayequal \byte1, \byte2, 0x1, \jumpptr
+ .endm
+
+ .macro jumpifmove move, jumpptr
+ jumpifhalfword EQUAL, gCurrentMove, \move, \jumpptr
+ .endm
+
+ .macro jumpifnotmove move, jumpptr
+ jumpifhalfword NOT_EQUAL, gCurrentMove, \move, \jumpptr
+ .endm
+
+ .macro jumpifstatus3 bank, status, jumpptr
+ jumpifstatus3condition \bank, \status, 0x0, \jumpptr
+ .endm
+
+ .macro jumpifnostatus3 bank, status, jumpptr
+ jumpifstatus3condition \bank, \status, 0x1, \jumpptr
+ .endm
+
+ .macro jumpifmovehadnoeffect jumpptr
+ jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED, \jumpptr
+ .endm
+
+ .macro jumpifbattletype flags, jumpptr
+ jumpifword COMMON_BITS, gBattleTypeFlags, \flags, \jumpptr
+ .endm
+
+ .macro jumpifnotbattletype flags, jumpptr
+ jumpifword NO_COMMON_BITS, gBattleTypeFlags, \flags, \jumpptr
+ .endm
diff --git a/asm/macros/event.inc b/asm/macros/event.inc
index 69cdb38e5..a88db5f1f 100644
--- a/asm/macros/event.inc
+++ b/asm/macros/event.inc
@@ -663,11 +663,13 @@
.byte 0x5d
.endm
- .macro ontrainerbattleend
+ @ Goes to address after the trainerbattle command (called by the battle functions, see battle_setup.c)
+ .macro gotopostbattlescript
.byte 0x5e
.endm
- .macro ontrainerbattleendgoto
+ @ Goes to address specified in the trainerbattle command (called by the battle functions, see battle_setup.c)
+ .macro gotobeatenscript
.byte 0x5f
.endm
diff --git a/asm/macros/pokemon_data.inc b/asm/macros/pokemon_data.inc
index 31c015334..ce8ef98ac 100644
--- a/asm/macros/pokemon_data.inc
+++ b/asm/macros/pokemon_data.inc
@@ -52,5 +52,5 @@
.byte \max_level
.endif
- .2byte SPECIES_\species
+ .2byte \species
.endm
diff --git a/asm/mail_data.s b/asm/mail_data.s
deleted file mode 100755
index 70fc856d1..000000000
--- a/asm/mail_data.s
+++ /dev/null
@@ -1,589 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start ClearMailData
-ClearMailData: @ 80D436C
- push {r4,r5,lr}
- movs r4, 0
- ldr r5, =gSaveBlock1Ptr
-_080D4372:
- lsls r1, r4, 3
- adds r1, r4
- lsls r1, 2
- ldr r0, =0x00002be0
- adds r1, r0
- ldr r0, [r5]
- adds r0, r1
- bl ClearMailStruct
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xF
- bls _080D4372
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ClearMailData
-
- thumb_func_start ClearMailStruct
-ClearMailStruct: @ 80D439C
- push {r4-r6,lr}
- adds r3, r0, 0
- ldr r0, =0x0000ffff
- adds r4, r0, 0
- adds r1, r3, 0
- movs r2, 0x8
-_080D43A8:
- ldrh r0, [r1]
- orrs r0, r4
- strh r0, [r1]
- adds r1, 0x2
- subs r2, 0x1
- cmp r2, 0
- bge _080D43A8
- movs r2, 0
- adds r6, r3, 0
- adds r6, 0x1A
- adds r4, r3, 0
- adds r4, 0x12
- movs r5, 0xFF
-_080D43C2:
- adds r1, r4, r2
- ldrb r0, [r1]
- orrs r0, r5
- strb r0, [r1]
- adds r2, 0x1
- cmp r2, 0x7
- ble _080D43C2
- adds r1, r6, 0
- movs r2, 0
- adds r0, r1, 0x3
-_080D43D6:
- strb r2, [r0]
- subs r0, 0x1
- cmp r0, r1
- bge _080D43D6
- movs r1, 0
- movs r0, 0x1
- strh r0, [r3, 0x1E]
- strh r1, [r3, 0x20]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ClearMailStruct
-
- thumb_func_start MonHasMail
-MonHasMail: @ 80D43F0
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- bl itemid_is_mail
- lsls r0, 24
- cmp r0, 0
- beq _080D4418
- adds r0, r4, 0
- movs r1, 0x40
- bl GetMonData
- cmp r0, 0xFF
- beq _080D4418
- movs r0, 0x1
- b _080D441A
-_080D4418:
- movs r0, 0
-_080D441A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end MonHasMail
-
- thumb_func_start sub_80D4420
-sub_80D4420: @ 80D4420
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- mov r8, r0
- lsls r1, 16
- lsrs r0, r1, 16
- str r0, [sp, 0x8]
- mov r0, sp
- movs r2, 0
- ldrb r3, [r0, 0x8]
- strb r3, [r0]
- lsrs r1, 24
- strb r1, [r0, 0x1]
- add r3, sp, 0x4
- strb r2, [r3]
- ldr r4, =gSaveBlock1Ptr
- mov r10, r4
- mov r9, r3
- adds r4, r3, 0
-_080D444C:
- mov r1, r10
- ldr r0, [r1]
- ldrb r2, [r4]
- lsls r1, r2, 3
- adds r1, r2
- lsls r1, 2
- adds r0, r1
- movs r1, 0xB0
- lsls r1, 6
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0
- beq _080D4468
- b _080D45A8
-_080D4468:
- movs r4, 0
- ldr r2, =gSaveBlock2Ptr
- mov r12, r2
- ldr r7, =gSaveBlock1Ptr
- add r5, sp, 0x4
- ldr r3, =0x0000ffff
- adds r6, r3, 0
-_080D4476:
- ldr r2, [r7]
- lsls r3, r4, 1
- ldrb r1, [r5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r3, r0
- ldr r0, =0x00002be0
- adds r2, r0
- adds r2, r3
- ldrh r0, [r2]
- orrs r0, r6
- strh r0, [r2]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x8
- bls _080D4476
- movs r4, 0
- ldr r5, =gSaveBlock1Ptr
- add r3, sp, 0x4
-_080D44A0:
- ldr r2, [r5]
- ldrb r1, [r3]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r4, r0
- ldr r1, =0x00002bf2
- adds r2, r1
- adds r2, r0
- mov r1, r12
- ldr r0, [r1]
- adds r0, r4
- ldrb r0, [r0]
- strb r0, [r2]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x6
- bls _080D44A0
- mov r3, r10
- ldr r2, [r3]
- mov r0, r9
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r4, r0
- ldr r1, =0x00002bf2
- adds r2, r1
- adds r2, r0
- movs r0, 0xFF
- strb r0, [r2]
- mov r2, r9
- ldrb r1, [r2]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, [r3]
- adds r0, r1
- ldr r3, =0x00002bf2
- adds r0, r3
- movs r1, 0
- bl sub_81DB4DC
- movs r4, 0
- ldr r6, =gSaveBlock1Ptr
- add r3, sp, 0x4
- ldr r5, =gSaveBlock2Ptr
-_080D4500:
- ldr r2, [r6]
- ldrb r1, [r3]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r4, r0
- ldr r1, =0x00002bfa
- adds r2, r1
- adds r2, r0
- ldr r0, [r5]
- adds r0, 0xA
- adds r0, r4
- ldrb r0, [r0]
- strb r0, [r2]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _080D4500
- mov r0, r8
- movs r1, 0xB
- bl GetBoxMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- mov r0, r8
- movs r1, 0
- bl GetBoxMonData
- adds r1, r0, 0
- adds r0, r4, 0
- bl sub_80D45C8
- mov r2, r10
- ldr r3, [r2]
- mov r4, r9
- ldrb r2, [r4]
- lsls r1, r2, 3
- adds r1, r2
- lsls r1, 2
- adds r1, r3, r1
- ldr r2, =0x00002bfe
- adds r1, r2
- strh r0, [r1]
- ldrb r1, [r4]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r3, r0
- movs r4, 0xB0
- lsls r4, 6
- adds r3, r4
- mov r0, sp
- ldrh r0, [r0, 0x8]
- strh r0, [r3]
- mov r0, r8
- movs r1, 0x40
- mov r2, r9
- bl SetMonData
- mov r0, r8
- movs r1, 0xC
- mov r2, sp
- bl SetMonData
- mov r1, r9
- ldrb r0, [r1]
- b _080D45B6
- .pool
-_080D45A8:
- adds r0, r2, 0x1
- strb r0, [r3]
- ldrb r0, [r4]
- cmp r0, 0x5
- bhi _080D45B4
- b _080D444C
-_080D45B4:
- movs r0, 0xFF
-_080D45B6:
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80D4420
-
- thumb_func_start sub_80D45C8
-sub_80D45C8: @ 80D45C8
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xC9
- bne _080D45E0
- adds r0, r1, 0
- bl mon_icon_personality_to_unown_id
- lsls r0, 16
- ldr r1, =0x75300000
- adds r0, r1
- lsrs r0, 16
-_080D45E0:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80D45C8
-
- thumb_func_start sub_80D45E8
-sub_80D45E8: @ 80D45E8
- push {lr}
- lsls r0, 16
- lsrs r3, r0, 16
- ldr r0, =0xffff8ad0
- adds r2, r3, r0
- lsls r0, r2, 16
- lsrs r0, 16
- cmp r0, 0x1B
- bhi _080D4604
- movs r0, 0xC9
- strh r2, [r1]
- b _080D4606
- .pool
-_080D4604:
- adds r0, r3, 0
-_080D4606:
- pop {r1}
- bx r1
- thumb_func_end sub_80D45E8
-
- thumb_func_start GiveMailToMon2
-GiveMailToMon2: @ 80D460C
- push {r4-r7,lr}
- sub sp, 0x8
- adds r6, r0, 0
- adds r7, r1, 0
- ldrh r5, [r7, 0x20]
- adds r1, r5, 0
- bl sub_80D4420
- add r4, sp, 0x4
- strb r0, [r4]
- ldrb r2, [r4]
- cmp r2, 0xFF
- beq _080D4670
- ldr r0, =gSaveBlock1Ptr
- ldr r1, [r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- adds r1, r0
- ldr r0, =0x00002be0
- adds r1, r0
- adds r0, r7, 0
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- adds r0, r6, 0
- movs r1, 0x40
- adds r2, r4, 0
- bl SetMonData
- mov r0, sp
- strb r5, [r0]
- mov r1, sp
- lsrs r0, r5, 8
- strb r0, [r1, 0x1]
- adds r0, r6, 0
- movs r1, 0xC
- mov r2, sp
- bl SetMonData
- ldrb r0, [r4]
- b _080D4672
- .pool
-_080D4670:
- movs r0, 0xFF
-_080D4672:
- add sp, 0x8
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end GiveMailToMon2
-
- thumb_func_start sub_80D467C
-sub_80D467C: @ 80D467C
- movs r0, 0
- bx lr
- thumb_func_end sub_80D467C
-
- thumb_func_start TakeMailFromMon
-TakeMailFromMon: @ 80D4680
- push {r4,lr}
- sub sp, 0x8
- adds r4, r0, 0
- bl MonHasMail
- lsls r0, 24
- cmp r0, 0
- beq _080D46D2
- adds r0, r4, 0
- movs r1, 0x40
- bl GetMonData
- add r2, sp, 0x4
- strb r0, [r2]
- ldr r0, =gSaveBlock1Ptr
- ldr r3, [r0]
- ldrb r1, [r2]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r3, r0
- movs r0, 0xB0
- lsls r0, 6
- adds r3, r0
- movs r1, 0
- movs r0, 0
- strh r0, [r3]
- movs r0, 0xFF
- strb r0, [r2]
- mov r0, sp
- strb r1, [r0]
- strb r1, [r0, 0x1]
- adds r0, r4, 0
- movs r1, 0x40
- bl SetMonData
- adds r0, r4, 0
- movs r1, 0xC
- mov r2, sp
- bl SetMonData
-_080D46D2:
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end TakeMailFromMon
-
- thumb_func_start sub_80D46E0
-sub_80D46E0: @ 80D46E0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gSaveBlock1Ptr
- ldr r2, [r1]
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- adds r2, r1
- movs r0, 0xB0
- lsls r0, 6
- adds r2, r0
- movs r0, 0
- strh r0, [r2]
- bx lr
- .pool
- thumb_func_end sub_80D46E0
-
- thumb_func_start sub_80D4700
-sub_80D4700: @ 80D4700
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0xC
- adds r5, r0, 0
- mov r0, sp
- movs r1, 0
- strb r1, [r0]
- strb r1, [r0, 0x1]
- add r1, sp, 0x4
- movs r0, 0xFF
- strb r0, [r1]
- movs r7, 0x6
- mov r9, r1
- ldr r0, =gSaveBlock1Ptr
- mov r8, r0
- ldr r3, =0x00002be0
-_080D4724:
- mov r1, r8
- ldr r0, [r1]
- lsls r1, r7, 3
- adds r1, r7
- lsls r1, 2
- adds r4, r0, r1
- movs r2, 0xB0
- lsls r2, 6
- adds r0, r4, r2
- ldrh r6, [r0]
- cmp r6, 0
- bne _080D47A0
- adds r4, r3
- adds r0, r5, 0
- movs r1, 0x40
- str r3, [sp, 0x8]
- bl GetMonData
- mov r1, r8
- ldr r2, [r1]
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldr r3, [sp, 0x8]
- adds r1, r3
- ldm r1!, {r0,r2,r3}
- stm r4!, {r0,r2,r3}
- ldm r1!, {r0,r2,r3}
- stm r4!, {r0,r2,r3}
- ldm r1!, {r0,r2,r3}
- stm r4!, {r0,r2,r3}
- adds r0, r5, 0
- movs r1, 0x40
- bl GetMonData
- mov r1, r8
- ldr r2, [r1]
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- adds r2, r1
- movs r3, 0xB0
- lsls r3, 6
- adds r2, r3
- strh r6, [r2]
- adds r0, r5, 0
- movs r1, 0x40
- mov r2, r9
- bl SetMonData
- adds r0, r5, 0
- movs r1, 0xC
- mov r2, sp
- bl SetMonData
- adds r0, r7, 0
- b _080D47AC
- .pool
-_080D47A0:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0xF
- bls _080D4724
- movs r0, 0xFF
-_080D47AC:
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80D4700
-
- thumb_func_start itemid_is_mail
-itemid_is_mail: @ 80D47BC
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x84
- bgt _080D47CE
- cmp r0, 0x79
- blt _080D47CE
- movs r0, 0x1
- b _080D47D0
-_080D47CE:
- movs r0, 0
-_080D47D0:
- pop {r1}
- bx r1
- thumb_func_end itemid_is_mail
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/main_menu.s b/asm/main_menu.s
index 6194f0487..52afc783e 100644
--- a/asm/main_menu.s
+++ b/asm/main_menu.s
@@ -2215,7 +2215,7 @@ sub_8030A70: @ 8030A70
str r2, [sp, 0x10]
movs r2, 0x70
movs r3, 0x3A
- bl sub_8076438
+ bl CreatePokeballSpriteToReleaseMon
lsls r0, r4, 2
adds r0, r4
lsls r0, 3
@@ -3025,7 +3025,7 @@ task_new_game_prof_birch_speech_part2_4: @ 8031188
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
diff --git a/asm/map_obj_8097404.s b/asm/map_obj_8097404.s
index 96ffc2254..4a6ae9945 100644
--- a/asm/map_obj_8097404.s
+++ b/asm/map_obj_8097404.s
@@ -82,9 +82,9 @@ _0809748E:
bx r1
thumb_func_end sub_8097404
- thumb_func_start player_bitmagic
-@ void player_bitmagic()
-player_bitmagic: @ 8097494
+ thumb_func_start FreezeMapObjects
+@ void FreezeMapObjects()
+FreezeMapObjects: @ 8097494
push {r4,r5,lr}
movs r4, 0
ldr r5, =gMapObjects
@@ -113,7 +113,7 @@ _080974B8:
pop {r0}
bx r0
.pool
- thumb_func_end player_bitmagic
+ thumb_func_end FreezeMapObjects
thumb_func_start sub_80974D0
sub_80974D0: @ 80974D0
diff --git a/asm/map_obj_lock.s b/asm/map_obj_lock.s
index 2270051c2..f7a33e508 100644
--- a/asm/map_obj_lock.s
+++ b/asm/map_obj_lock.s
@@ -62,7 +62,7 @@ _080983E2:
thumb_func_start ScriptFreezeMapObjects
ScriptFreezeMapObjects: @ 80983E8
push {lr}
- bl player_bitmagic
+ bl FreezeMapObjects
ldr r0, =sub_80983A4
movs r1, 0x50
bl CreateTask
@@ -348,7 +348,7 @@ sub_8098630: @ 8098630
bl sub_80B47E0
lsls r0, 24
lsrs r4, r0, 24
- ldr r0, =gUnknown_030060A8
+ ldr r0, =gNoOfApproachingTrainers
ldrb r0, [r0]
cmp r0, 0x2
bne _080986E0
diff --git a/asm/menu.s b/asm/menu.s
index 71ff9218c..64644504e 100755
--- a/asm/menu.s
+++ b/asm/menu.s
@@ -22,7 +22,7 @@ AddTextPrinterWithCallbackForMessage: @ 8197A9C
ands r1, r2
orrs r1, r0
strb r1, [r3]
- bl sav2_get_text_speed
+ bl GetPlayerTextSpeed
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
@@ -2266,8 +2266,8 @@ sub_8198C34: @ 8198C34
bx r0
thumb_func_end sub_8198C34
- thumb_func_start sub_8198C58
-sub_8198C58: @ 8198C58
+ thumb_func_start ProcessMenuInputNoWrap_
+ProcessMenuInputNoWrap_: @ 8198C58
push {r4,lr}
bl ProcessMenuInputNoWrapAround
lsls r0, 24
@@ -2282,7 +2282,7 @@ _08198C6E:
pop {r4}
pop {r1}
bx r1
- thumb_func_end sub_8198C58
+ thumb_func_end ProcessMenuInputNoWrap_
thumb_func_start sub_8198C78
sub_8198C78: @ 8198C78
diff --git a/asm/menu_helpers.s b/asm/menu_helpers.s
index 423f653d9..7419bd56f 100644
--- a/asm/menu_helpers.s
+++ b/asm/menu_helpers.s
@@ -277,7 +277,7 @@ Task_CallYesOrNoCallback: @ 8121FDC
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -512,7 +512,7 @@ itemid_80BF6D8_mail_related: @ 812217C
bne _081221A4
_08122192:
adds r0, r4, 0
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
diff --git a/asm/mystery_event_menu.s b/asm/mystery_event_menu.s
index df8e443a1..f15346b81 100644
--- a/asm/mystery_event_menu.s
+++ b/asm/mystery_event_menu.s
@@ -232,7 +232,7 @@ _08178B56:
ldrb r0, [r1]
adds r0, 0x1
strb r0, [r1]
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00005501
adds r0, r2, 0
strh r0, [r1]
diff --git a/asm/mystery_event_script.s b/asm/mystery_event_script.s
index 62177f1ea..a7cee8846 100644
--- a/asm/mystery_event_script.s
+++ b/asm/mystery_event_script.s
@@ -721,7 +721,7 @@ _08153D86:
bl GetMonData
lsls r0, 16
lsrs r0, 16
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
cmp r0, 0
beq _08153DA4
diff --git a/asm/naming_screen.s b/asm/naming_screen.s
index 22d7b260e..cded48783 100644
--- a/asm/naming_screen.s
+++ b/asm/naming_screen.s
@@ -904,7 +904,7 @@ _080E3586:
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
- bl sav2_get_text_speed
+ bl GetPlayerTextSpeed
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
diff --git a/asm/new_menu_helpers.s b/asm/new_menu_helpers.s
index d79f7df32..25f7fe605 100755
--- a/asm/new_menu_helpers.s
+++ b/asm/new_menu_helpers.s
@@ -185,7 +185,7 @@ AddTextPrinterForMessage: @ 81972C4
ands r1, r2
orrs r1, r0
strb r1, [r3]
- bl sav2_get_text_speed
+ bl GetPlayerTextSpeed
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
@@ -222,7 +222,7 @@ AddTextPrinterForMessage_2: @ 8197310
ands r1, r2
orrs r1, r0
strb r1, [r3]
- bl sav2_get_text_speed
+ bl GetPlayerTextSpeed
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
@@ -945,7 +945,7 @@ DisplayItemMessageOnField: @ 81978EC
lsls r4, 24
lsrs r4, 24
bl sub_81973A4
- bl sav2_get_text_speed
+ bl GetPlayerTextSpeed
lsls r0, 24
lsrs r0, 24
movs r2, 0x80
@@ -1021,8 +1021,8 @@ _0819798A:
bx r1
thumb_func_end sub_8197964
- thumb_func_start sav2_get_text_speed
-sav2_get_text_speed: @ 8197990
+ thumb_func_start GetPlayerTextSpeed
+GetPlayerTextSpeed: @ 8197990
push {lr}
ldr r0, =gSaveBlock2Ptr
ldr r2, [r0]
@@ -1045,7 +1045,7 @@ _081979AC:
pop {r1}
bx r1
.pool
- thumb_func_end sav2_get_text_speed
+ thumb_func_end GetPlayerTextSpeed
thumb_func_start sub_81979C4
sub_81979C4: @ 81979C4
diff --git a/asm/rom4.s b/asm/overworld.s
index 8b7dec1ae..7e91b8054 100644
--- a/asm/rom4.s
+++ b/asm/overworld.s
@@ -238,8 +238,8 @@ _08084854:
.pool
thumb_func_end sav12_xor_set
- thumb_func_start ApplyNewEncyprtionKeyToGameStats
-ApplyNewEncyprtionKeyToGameStats: @ 8084864
+ thumb_func_start ApplyNewEncryptionKeyToGameStats
+ApplyNewEncryptionKeyToGameStats: @ 8084864
push {r4-r6,lr}
adds r5, r0, 0
movs r4, 0
@@ -251,7 +251,7 @@ _0808486C:
ldr r0, [r6]
adds r0, r1
adds r1, r5, 0
- bl ApplyNewEncyprtionKeyToWord
+ bl ApplyNewEncryptionKeyToWord
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
@@ -261,7 +261,7 @@ _0808486C:
pop {r0}
bx r0
.pool
- thumb_func_end ApplyNewEncyprtionKeyToGameStats
+ thumb_func_end ApplyNewEncryptionKeyToGameStats
thumb_func_start CopyFieldObjectTemplatesToSav1
@ void CopyFieldObjectTemplatesToSav1()
@@ -1381,12 +1381,12 @@ _080850C8:
bl prev_quest_postbuffer_cursor_backup_reset
adds r0, r6, 0
adds r1, r5, 0
- bl sub_80B21B4
+ bl TryUpdateRandomTrainerRematches
bl DoTimeBasedEvents
bl sub_80AEDBC
bl sub_8085B2C
bl update_sav1_flash_used_on_map
- bl sav1_reset_battle_music_maybe
+ bl Overworld_ClearSavedMusic
bl mapheader_run_script_with_tag_x3
bl not_trainer_hill_battle_pyramid
ldr r0, [r4]
@@ -1478,7 +1478,7 @@ _080851A2:
asrs r1, 24
lsls r1, 16
lsrs r1, 16
- bl sub_80B21B4
+ bl TryUpdateRandomTrainerRematches
cmp r7, 0x1
beq _080851EE
bl DoTimeBasedEvents
@@ -1491,7 +1491,7 @@ _080851EE:
bl FlagClear
_08085200:
bl update_sav1_flash_used_on_map
- bl sav1_reset_battle_music_maybe
+ bl Overworld_ClearSavedMusic
bl mapheader_run_script_with_tag_x3
bl UpdateLocationHistoryForRoamer
bl RoamerMoveToOtherLocationSet
@@ -1880,15 +1880,15 @@ _080854FE:
.pool
thumb_func_end Overworld_SetFlashLevel
- thumb_func_start sav1_get_flash_used_on_map
-sav1_get_flash_used_on_map: @ 8085514
+ thumb_func_start Overworld_GetFlashLevel
+Overworld_GetFlashLevel: @ 8085514
ldr r0, =gSaveBlock1Ptr
ldr r0, [r0]
adds r0, 0x30
ldrb r0, [r0]
bx lr
.pool
- thumb_func_end sav1_get_flash_used_on_map
+ thumb_func_end Overworld_GetFlashLevel
thumb_func_start sub_8085524
sub_8085524: @ 8085524
@@ -2133,7 +2133,7 @@ sav1_map_get_music: @ 80856D4
lsls r0, 5
cmp r1, r0
bne _080856FC
- bl sav1_get_weather_probably
+ bl GetSav1Weather
lsls r0, 24
lsrs r0, 24
cmp r0, 0x8
@@ -2272,15 +2272,15 @@ Overworld_SetSavedMusic: @ 80857F4
.pool
thumb_func_end Overworld_SetSavedMusic
- thumb_func_start sav1_reset_battle_music_maybe
-sav1_reset_battle_music_maybe: @ 8085800
+ thumb_func_start Overworld_ClearSavedMusic
+Overworld_ClearSavedMusic: @ 8085800
ldr r0, =gSaveBlock1Ptr
ldr r1, [r0]
movs r0, 0
strh r0, [r1, 0x2C]
bx lr
.pool
- thumb_func_end sav1_reset_battle_music_maybe
+ thumb_func_end Overworld_ClearSavedMusic
thumb_func_start sub_8085810
sub_8085810: @ 8085810
@@ -3192,8 +3192,8 @@ CB2_NewGame: @ 8085EF8
.pool
thumb_func_end CB2_NewGame
- thumb_func_start c2_whiteout
-c2_whiteout: @ 8085F58
+ thumb_func_start CB2_WhiteOut
+CB2_WhiteOut: @ 8085F58
push {lr}
sub sp, 0x4
ldr r1, =gMain
@@ -3232,7 +3232,7 @@ _08085FB0:
pop {r0}
bx r0
.pool
- thumb_func_end c2_whiteout
+ thumb_func_end CB2_WhiteOut
thumb_func_start c2_load_new_map
c2_load_new_map: @ 8085FCC
@@ -3661,7 +3661,7 @@ sub_80863B0: @ 80863B0
b _080863F0
.pool
_080863D4:
- bl sav1_get_flash_used_on_map
+ bl Overworld_GetFlashLevel
lsls r0, 24
lsrs r0, 24
cmp r0, 0
diff --git a/asm/party_menu.s b/asm/party_menu.s
index 018ee7b84..0ee74ea95 100755
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -2554,7 +2554,7 @@ sub_81B1708: @ 81B1708
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -3402,14 +3402,14 @@ sub_81B1DB8: @ 81B1DB8
lsrs r4, r5, 16
adds r7, r4, 0
adds r0, r4, 0
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
bne _081B1DE2
adds r0, r6, 0
adds r1, r4, 0
- bl sub_80D4420
+ bl GiveMailToMon
lsls r0, 24
lsrs r0, 24
cmp r0, 0xFF
@@ -4010,7 +4010,7 @@ sub_81B227C: @ 81B227C
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -5992,7 +5992,7 @@ sub_81B3300: @ 81B3300
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
- bl sav2_get_text_speed
+ bl GetPlayerTextSpeed
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
@@ -6216,7 +6216,7 @@ _081B34D2:
bl GetMonData
lsls r0, 16
lsrs r0, 16
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
cmp r0, 0
beq _081B3508
@@ -7791,7 +7791,7 @@ _081B425A:
.pool
_081B4278:
ldrh r0, [r6]
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
cmp r0, 0
beq _081B42A4
@@ -7952,7 +7952,7 @@ sub_81B43DC: @ 81B43DC
push {r4-r6,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -7999,7 +7999,7 @@ _081B4402:
.pool
_081B4458:
ldrh r0, [r5]
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
cmp r0, 0
beq _081B4498
@@ -8485,7 +8485,7 @@ sub_81B48DC: @ 81B48DC
muls r1, r0
ldr r0, =gPlayerParty
adds r4, r1, r0
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -8681,7 +8681,7 @@ sub_81B4A98: @ 81B4A98
adds r0, r1
ldr r1, =sub_81B4AE0
movs r2, 0x1
- bl sub_8121478
+ bl ReadMail
pop {r0}
bx r0
.pool
@@ -8777,7 +8777,7 @@ sub_81B4BA0: @ 81B4BA0
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -8801,7 +8801,7 @@ _081B4BC6:
muls r0, r1
ldr r1, =gPlayerParty
adds r0, r1
- bl sub_80D4700
+ bl TakeMailFromMon2
lsls r0, 24
lsrs r0, 24
cmp r0, 0xFF
@@ -8883,7 +8883,7 @@ sub_81B4C94: @ 81B4C94
push {r7}
lsls r0, 24
lsrs r5, r0, 24
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -9691,7 +9691,7 @@ sub_81B5430: @ 81B5430
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -9985,7 +9985,7 @@ sub_81B56D8: @ 81B56D8
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -10735,7 +10735,7 @@ sub_81B5CB0: @ 81B5CB0
b _081B5D24
.pool
_081B5CD8:
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
cmp r0, 0
beq _081B5CFC
@@ -10821,7 +10821,7 @@ _081B5D68:
adds r0, r7, r5
ldrb r4, [r0]
adds r0, r1, 0
- bl itemid_is_mail
+ bl ItemIsMail
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -10853,7 +10853,7 @@ _081B5DAC:
adds r0, r5, r7
ldrb r4, [r0, 0x6]
adds r0, r1, 0
- bl itemid_is_mail
+ bl ItemIsMail
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -12970,7 +12970,7 @@ sub_81B7028: @ 81B7028
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -13272,7 +13272,7 @@ sub_81B72C8: @ 81B72C8
muls r1, r0
ldr r0, =gPlayerParty
adds r4, r1, r0
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r5, r0, 24
cmp r5, 0
@@ -14728,7 +14728,7 @@ sub_81B7FAC: @ 81B7FAC
.pool
_081B7FF8:
ldrh r0, [r5]
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
cmp r0, 0
beq _081B800C
@@ -14770,7 +14770,7 @@ sub_81B8044: @ 81B8044
lsrs r4, r0, 24
ldr r5, =gUnknown_0203CEC8
ldrh r0, [r5, 0xC]
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
cmp r0, 0
beq _081B807C
@@ -15054,7 +15054,7 @@ sub_81B82D4: @ 81B82D4
push {r4-r7,lr}
lsls r0, 24
lsrs r5, r0, 24
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -15093,7 +15093,7 @@ _081B82FA:
.pool
_081B8338:
adds r0, r4, 0
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
cmp r0, 0
beq _081B835C
diff --git a/asm/player_pc.s b/asm/player_pc.s
index 2287d4123..47cea14f5 100644
--- a/asm/player_pc.s
+++ b/asm/player_pc.s
@@ -1263,7 +1263,7 @@ sub_816B8A4: @ 816B8A4
adds r0, r1
ldr r1, =sub_816B900
movs r2, 0x1
- bl sub_8121478
+ bl ReadMail
adds r0, r4, 0
bl DestroyTask
_0816B8E6:
@@ -1378,7 +1378,7 @@ sub_816B9D8: @ 816B9D8
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r0, 24
movs r1, 0x1
diff --git a/asm/pokeball.s b/asm/pokeball.s
deleted file mode 100755
index b4fc36d97..000000000
--- a/asm/pokeball.s
+++ /dev/null
@@ -1,2861 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80753E8
-sub_80753E8: @ 80753E8
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 24
- lsrs r5, 24
- ldr r1, =gDoingBattleAnim
- movs r0, 0x1
- strb r0, [r1]
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r6, =gActiveBank
- ldrb r1, [r6]
- ldr r2, [r0, 0x4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- movs r2, 0x8
- orrs r1, r2
- strb r1, [r0]
- ldr r0, =sub_8075450
- movs r1, 0x5
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0xA]
- strh r5, [r1, 0xC]
- ldrb r0, [r6]
- strh r0, [r1, 0xE]
- movs r0, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80753E8
-
- thumb_func_start sub_8075450
-sub_8075450: @ 8075450
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- movs r0, 0
- str r0, [sp]
- ldr r1, =gTasks
- mov r2, r10
- lsls r0, r2, 2
- add r0, r10
- lsls r0, 3
- adds r1, r0, r1
- ldrh r2, [r1, 0x8]
- movs r3, 0x8
- ldrsh r0, [r1, r3]
- cmp r0, 0
- bne _08075488
- adds r0, r2, 0x1
- strh r0, [r1, 0x8]
- b _08075602
- .pool
-_08075488:
- ldrh r0, [r1, 0xC]
- mov r8, r0
- ldrb r5, [r1, 0xE]
- adds r0, r5, 0
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080754B4
- ldr r1, =gBattlePartyID
- lsls r0, r5, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gEnemyParty
- b _080754C2
- .pool
-_080754B4:
- ldr r1, =gBattlePartyID
- lsls r0, r5, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
-_080754C2:
- adds r0, r1
- movs r1, 0x26
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- bl ball_number_to_ball_processing_index
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl sub_8076A78
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 3
- ldr r1, =gUnknown_0832C588
- adds r0, r1
- movs r1, 0x20
- movs r2, 0x50
- movs r3, 0x1D
- bl CreateSprite
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r2, =gSprites
- mov r9, r2
- lsls r0, r7, 4
- adds r0, r7
- lsls r6, r0, 2
- adds r4, r6, r2
- movs r0, 0x80
- strh r0, [r4, 0x2E]
- movs r3, 0
- strh r3, [r4, 0x30]
- mov r0, r8
- strh r0, [r4, 0x3C]
- mov r2, r8
- cmp r2, 0xFE
- beq _08075548
- cmp r2, 0xFF
- bne _08075584
- ldr r0, =gBankTarget
- strb r5, [r0]
- movs r0, 0x18
- strh r0, [r4, 0x20]
- movs r0, 0x44
- strh r0, [r4, 0x22]
- mov r0, r9
- adds r0, 0x1C
- adds r0, r6, r0
- ldr r1, =sub_80761B4
- str r1, [r0]
- b _08075592
- .pool
-_08075548:
- adds r0, r5, 0
- movs r1, 0
- bl sub_80A5C6C
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x20]
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_80A5C6C
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x18
- strh r0, [r4, 0x22]
- ldr r0, =gBankTarget
- strb r5, [r0]
- movs r3, 0
- strh r3, [r4, 0x2E]
- mov r0, r9
- adds r0, 0x1C
- adds r0, r6, r0
- ldr r1, =sub_8076398
- str r1, [r0]
- b _08075592
- .pool
-_08075584:
- movs r0, 0x1
- bl GetBankByIdentity
- ldr r1, =gBankTarget
- strb r0, [r1]
- movs r0, 0x1
- str r0, [sp]
-_08075592:
- ldr r0, =gSprites
- lsls r1, r7, 4
- adds r1, r7
- lsls r1, 2
- adds r4, r1, r0
- ldr r5, =gBankTarget
- ldrb r0, [r5]
- strh r0, [r4, 0x3A]
- ldr r2, [sp]
- cmp r2, 0
- bne _080755B8
- mov r0, r10
- bl DestroyTask
- b _08075602
- .pool
-_080755B8:
- movs r0, 0x22
- strh r0, [r4, 0x2E]
- ldrb r0, [r5]
- movs r1, 0
- bl sub_80A5C6C
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x32]
- ldrb r0, [r5]
- movs r1, 0x1
- bl sub_80A5C6C
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x10
- strh r0, [r4, 0x36]
- ldr r0, =0x0000ffd8
- strh r0, [r4, 0x38]
- adds r0, r4, 0
- bl sub_80A68D4
- mov r3, r10
- strh r3, [r4, 0x6]
- ldr r1, =gTasks
- mov r2, r10
- lsls r0, r2, 2
- add r0, r10
- lsls r0, 3
- adds r0, r1
- ldrb r1, [r5]
- strh r1, [r0, 0x10]
- ldr r1, =TaskDummy
- str r1, [r0]
- movs r0, 0x3D
- bl PlaySE
-_08075602:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8075450
-
- thumb_func_start objc_0804ABD4
-objc_0804ABD4: @ 8075620
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r7, r0, 0
- bl sub_80A6900
- lsls r0, 24
- cmp r0, 0
- beq _080756C0
- ldrb r6, [r7, 0x6]
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- ldrb r5, [r0, 0x10]
- ldrb r0, [r0, 0xC]
- mov r8, r0
- adds r0, r7, 0
- movs r1, 0x1
- bl StartSpriteAnim
- adds r2, r7, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- ldrh r0, [r7, 0x24]
- ldrh r1, [r7, 0x20]
- adds r0, r1
- movs r1, 0
- strh r0, [r7, 0x20]
- ldrh r0, [r7, 0x26]
- ldrh r2, [r7, 0x22]
- adds r0, r2
- strh r0, [r7, 0x22]
- strh r1, [r7, 0x24]
- strh r1, [r7, 0x26]
- strh r1, [r7, 0x38]
- adds r0, r5, 0
- bl sub_8076B14
- lsls r0, 16
- lsrs r0, 16
- bl ball_number_to_ball_processing_index
- adds r4, r0, 0
- ldrh r0, [r7, 0x20]
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r7, 0x22]
- subs r1, 0x5
- lsls r1, 24
- lsrs r1, 24
- lsls r4, 24
- lsrs r4, 24
- str r4, [sp]
- movs r2, 0x1
- movs r3, 0x1C
- bl sub_8171D98
- movs r0, 0
- adds r1, r5, 0
- movs r2, 0xE
- adds r3, r4, 0
- bl sub_81729E8
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r7, 0x2E]
- strh r5, [r7, 0x3A]
- mov r0, r8
- strh r0, [r7, 0x3C]
- adds r0, r6, 0
- bl DestroyTask
- ldr r0, =sub_80756D4
- str r0, [r7, 0x1C]
-_080756C0:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end objc_0804ABD4
-
- thumb_func_start sub_80756D4
-sub_80756D4: @ 80756D4
- ldr r1, =sub_80756E0
- str r1, [r0, 0x1C]
- bx lr
- .pool
- thumb_func_end sub_80756D4
-
- thumb_func_start sub_80756E0
-sub_80756E0: @ 80756E0
- push {r4-r7,lr}
- adds r6, r0, 0
- ldrh r0, [r6, 0x38]
- adds r0, 0x1
- movs r7, 0
- strh r0, [r6, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA
- bne _0807573A
- strh r7, [r6, 0x38]
- ldr r0, =sub_807574C
- str r0, [r6, 0x1C]
- ldr r5, =gBankSpriteIds
- movs r1, 0x3A
- ldrsh r0, [r6, r1]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, =gSprites
- adds r0, r4
- movs r1, 0x2
- bl StartSpriteAffineAnim
- movs r1, 0x3A
- ldrsh r0, [r6, r1]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl AnimateSprite
- movs r1, 0x3A
- ldrsh r0, [r6, r1]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- strh r7, [r0, 0x30]
-_0807573A:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80756E0
-
- thumb_func_start sub_807574C
-sub_807574C: @ 807574C
- push {r4-r6,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xB
- bne _08075764
- movs r0, 0x3C
- bl PlaySE
-_08075764:
- ldr r6, =gSprites
- ldr r5, =gBankSpriteIds
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r6
- adds r0, r1, 0
- adds r0, 0x3F
- ldrb r0, [r0]
- lsls r0, 26
- cmp r0, 0
- bge _080757BC
- adds r0, r4, 0
- movs r1, 0x2
- bl StartSpriteAnim
- movs r2, 0x3A
- ldrsh r0, [r4, r2]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- movs r0, 0
- strh r0, [r4, 0x38]
- ldr r0, =sub_80757E4
- str r0, [r4, 0x1C]
- b _080757DC
- .pool
-_080757BC:
- ldrh r0, [r1, 0x30]
- adds r0, 0x60
- strh r0, [r1, 0x30]
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- adds r0, r5
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- movs r2, 0x30
- ldrsh r0, [r1, r2]
- negs r0, r0
- asrs r0, 8
- strh r0, [r1, 0x26]
-_080757DC:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_807574C
-
- thumb_func_start sub_80757E4
-sub_80757E4: @ 80757E4
- push {r4,lr}
- adds r4, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0807582C
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bne _0807582C
- strh r1, [r4, 0x34]
- movs r0, 0x20
- strh r0, [r4, 0x36]
- strh r1, [r4, 0x38]
- movs r0, 0
- movs r1, 0x20
- bl Cos
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- movs r0, 0x36
- ldrsh r1, [r4, r0]
- movs r0, 0
- bl Cos
- negs r0, r0
- strh r0, [r4, 0x26]
- ldr r0, =sub_8075838
- str r0, [r4, 0x1C]
-_0807582C:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80757E4
-
- thumb_func_start sub_8075838
-sub_8075838: @ 8075838
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r5, 0
- ldrh r0, [r4, 0x34]
- movs r1, 0xFF
- ands r1, r0
- cmp r1, 0
- beq _0807584E
- cmp r1, 0x1
- beq _080758C2
- b _080758EE
-_0807584E:
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- bl Cos
- negs r0, r0
- strh r0, [r4, 0x26]
- ldrh r1, [r4, 0x38]
- adds r1, 0x4
- ldrh r2, [r4, 0x34]
- lsls r0, r2, 16
- asrs r0, 24
- adds r1, r0
- strh r1, [r4, 0x38]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x3F
- ble _080758EE
- ldrh r0, [r4, 0x36]
- subs r0, 0xA
- strh r0, [r4, 0x36]
- ldr r1, =0x00000101
- adds r0, r2, r1
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 24
- cmp r0, 0x4
- bne _0807588A
- movs r5, 0x1
-_0807588A:
- cmp r0, 0x2
- beq _080758AA
- cmp r0, 0x2
- bgt _0807589C
- cmp r0, 0x1
- beq _080758A2
- b _080758BA
- .pool
-_0807589C:
- cmp r0, 0x3
- beq _080758B2
- b _080758BA
-_080758A2:
- movs r0, 0x38
- bl PlaySE
- b _080758EE
-_080758AA:
- movs r0, 0x39
- bl PlaySE
- b _080758EE
-_080758B2:
- movs r0, 0x3A
- bl PlaySE
- b _080758EE
-_080758BA:
- movs r0, 0x3B
- bl PlaySE
- b _080758EE
-_080758C2:
- movs r2, 0x38
- ldrsh r0, [r4, r2]
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- bl Cos
- negs r0, r0
- strh r0, [r4, 0x26]
- ldrh r1, [r4, 0x38]
- subs r1, 0x4
- ldrh r2, [r4, 0x34]
- lsls r0, r2, 16
- asrs r0, 24
- subs r1, r0
- strh r1, [r4, 0x38]
- lsls r1, 16
- cmp r1, 0
- bgt _080758EE
- strh r5, [r4, 0x38]
- ldr r0, =0xffffff00
- ands r0, r2
- strh r0, [r4, 0x34]
-_080758EE:
- cmp r5, 0
- beq _08075926
- movs r5, 0
- strh r5, [r4, 0x34]
- movs r0, 0x40
- movs r1, 0x20
- bl Cos
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- strh r5, [r4, 0x26]
- movs r2, 0x3C
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _0807591C
- ldr r0, =sub_8075D14
- str r0, [r4, 0x1C]
- b _08075926
- .pool
-_0807591C:
- ldr r0, =sub_8075930
- str r0, [r4, 0x1C]
- movs r0, 0x1
- strh r0, [r4, 0x36]
- strh r5, [r4, 0x38]
-_08075926:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8075838
-
- thumb_func_start sub_8075930
-sub_8075930: @ 8075930
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1F
- bne _08075964
- movs r0, 0
- strh r0, [r4, 0x34]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- ldr r0, =sub_8075970
- str r0, [r4, 0x1C]
- movs r0, 0x17
- bl PlaySE
-_08075964:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8075930
-
- thumb_func_start sub_8075970
-sub_8075970: @ 8075970
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x34]
- movs r1, 0xFF
- ands r1, r0
- cmp r1, 0x4
- bhi _08075A70
- lsls r0, r1, 2
- ldr r1, =_0807598C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0807598C:
- .4byte _080759A0
- .4byte _080759D2
- .4byte _080759A0
- .4byte _08075A26
- .4byte _08075A70
-_080759A0:
- ldrh r0, [r4, 0x36]
- ldrh r2, [r4, 0x24]
- adds r1, r0, r2
- strh r1, [r4, 0x24]
- ldrh r1, [r4, 0x38]
- adds r0, r1
- strh r0, [r4, 0x38]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
- ldrh r0, [r4, 0x38]
- adds r0, 0x3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x6
- bls _08075AB6
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
- movs r0, 0
- strh r0, [r4, 0x38]
- b _08075AB6
-_080759D2:
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bne _08075A18
- movs r0, 0
- strh r0, [r4, 0x38]
- ldrh r0, [r4, 0x36]
- negs r0, r0
- strh r0, [r4, 0x36]
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
- movs r2, 0x36
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bge _08075A0E
- adds r0, r4, 0
- movs r1, 0x2
- bl ChangeSpriteAffineAnim
- b _08075AB6
-_08075A0E:
- adds r0, r4, 0
- movs r1, 0x1
- bl ChangeSpriteAffineAnim
- b _08075AB6
-_08075A18:
- adds r0, r4, 0
- adds r0, 0x2C
- ldrb r1, [r0]
- movs r2, 0x80
- orrs r1, r2
- strb r1, [r0]
- b _08075AB6
-_08075A26:
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1, 0
- ldrh r2, [r4, 0x34]
- adds r0, r2
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 24
- movs r2, 0x3C
- ldrsh r1, [r4, r2]
- cmp r0, r1
- bne _08075A48
- ldr r0, =sub_8075D14
- str r0, [r4, 0x1C]
- b _08075AB6
- .pool
-_08075A48:
- cmp r1, 0x4
- bne _08075A5C
- cmp r0, 0x3
- bne _08075A5C
- ldr r0, =sub_8075FB4
- str r0, [r4, 0x1C]
- b _08075A62
- .pool
-_08075A5C:
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- strh r0, [r4, 0x34]
-_08075A62:
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- b _08075AB6
-_08075A70:
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1F
- bne _08075AB6
- movs r0, 0
- strh r0, [r4, 0x38]
- ldrh r1, [r4, 0x34]
- ldr r0, =0xffffff00
- ands r0, r1
- strh r0, [r4, 0x34]
- adds r0, r4, 0
- movs r1, 0x3
- bl StartSpriteAffineAnim
- movs r1, 0x36
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bge _08075AA8
- adds r0, r4, 0
- movs r1, 0x2
- bl StartSpriteAffineAnim
- b _08075AB0
- .pool
-_08075AA8:
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
-_08075AB0:
- movs r0, 0x17
- bl PlaySE
-_08075AB6:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8075970
-
- thumb_func_start c3_0804B070
-c3_0804B070: @ 8075ABC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r2, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r2
- ldrb r1, [r0, 0xC]
- mov r12, r1
- ldrb r5, [r0, 0xA]
- ldrh r6, [r0, 0x8]
- ldrb r3, [r0, 0xE]
- mov r8, r3
- ldrb r7, [r0, 0x10]
- movs r3, 0x12
- ldrsh r1, [r0, r3]
- lsls r3, r1, 16
- ldrh r1, [r0, 0x14]
- orrs r3, r1
- movs r1, 0x26
- ldrsh r0, [r0, r1]
- cmp r0, 0x20
- bhi _08075B88
- lsls r0, 2
- ldr r1, =_08075B04
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08075B04:
- .4byte _08075B88
- .4byte _08075BB4
- .4byte _08075BDA
- .4byte _08075C54
- .4byte _08075B88
- .4byte _08075B88
- .4byte _08075B88
- .4byte _08075B88
- .4byte _08075B88
- .4byte _08075B88
- .4byte _08075B88
- .4byte _08075B88
- .4byte _08075B88
- .4byte _08075B88
- .4byte _08075B88
- .4byte _08075B88
- .4byte _08075B88
- .4byte _08075B88
- .4byte _08075B88
- .4byte _08075B88
- .4byte _08075BF8
- .4byte _08075B88
- .4byte _08075B88
- .4byte _08075B88
- .4byte _08075B88
- .4byte _08075B88
- .4byte _08075B88
- .4byte _08075B88
- .4byte _08075B88
- .4byte _08075B88
- .4byte _08075C66
- .4byte _08075C7E
- .4byte _08075CA8
-_08075B88:
- ldr r0, =gSprites
- lsls r1, r7, 4
- adds r1, r7
- lsls r1, 2
- adds r1, r0
- adds r1, 0x3F
- ldrb r0, [r1]
- lsls r0, 26
- cmp r0, 0
- blt _08075B9E
- b _08075D04
-_08075B9E:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r2
- mov r1, r12
- adds r1, 0x1
- strh r1, [r0, 0x26]
- b _08075D04
- .pool
-_08075BB4:
- adds r0, r3, 0
- bl ShouldPlayNormalPokeCry
- cmp r0, 0x1
- bne _08075BCC
- lsls r1, r5, 24
- asrs r1, 24
- adds r0, r6, 0
- movs r2, 0
- bl PlayCry3
- b _08075C2E
-_08075BCC:
- lsls r1, r5, 24
- asrs r1, 24
- adds r0, r6, 0
- movs r2, 0xB
- bl PlayCry3
- b _08075C2E
-_08075BDA:
- bl StopCryAndClearCrySongs
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0x3
- strh r1, [r0, 0x1C]
- movs r1, 0x14
- strh r1, [r0, 0x26]
- b _08075D04
- .pool
-_08075BF8:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r1, r0, r2
- ldrh r2, [r1, 0x1C]
- movs r7, 0x1C
- ldrsh r0, [r1, r7]
- cmp r0, 0
- bne _08075CBA
- adds r0, r3, 0
- bl ShouldPlayNormalPokeCry
- cmp r0, 0x1
- bne _08075C22
- lsls r1, r5, 24
- asrs r1, 24
- adds r0, r6, 0
- movs r2, 0x1
- bl PlayCry4
- b _08075C2E
-_08075C22:
- lsls r1, r5, 24
- asrs r1, 24
- adds r0, r6, 0
- movs r2, 0xC
- bl PlayCry4
-_08075C2E:
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0, 0x4]
- mov r2, r8
- lsls r1, r2, 1
- add r1, r8
- lsls r1, 2
- adds r1, r0
- ldrb r2, [r1, 0x1]
- movs r0, 0x41
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x1]
- adds r0, r4, 0
- bl DestroyTask
- b _08075D04
- .pool
-_08075C54:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r2
- movs r1, 0x6
- strh r1, [r0, 0x1C]
- movs r1, 0x1E
- strh r1, [r0, 0x26]
- b _08075D04
-_08075C66:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r1, r0, r2
- ldrh r2, [r1, 0x1C]
- movs r3, 0x1C
- ldrsh r0, [r1, r3]
- cmp r0, 0
- bne _08075CBA
- ldrh r0, [r1, 0x26]
- adds r0, 0x1
- strh r0, [r1, 0x26]
-_08075C7E:
- bl IsCryPlayingOrClearCrySongs
- lsls r0, 24
- cmp r0, 0
- bne _08075D04
- bl StopCryAndClearCrySongs
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0x3
- strh r0, [r1, 0x1C]
- ldrh r0, [r1, 0x26]
- adds r0, 0x1
- strh r0, [r1, 0x26]
- b _08075D04
- .pool
-_08075CA8:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r1, r0, r2
- ldrh r2, [r1, 0x1C]
- movs r7, 0x1C
- ldrsh r0, [r1, r7]
- cmp r0, 0
- beq _08075CC0
-_08075CBA:
- subs r0, r2, 0x1
- strh r0, [r1, 0x1C]
- b _08075D04
-_08075CC0:
- adds r0, r3, 0
- bl ShouldPlayNormalPokeCry
- cmp r0, 0x1
- bne _08075CD8
- lsls r1, r5, 24
- asrs r1, 24
- adds r0, r6, 0
- movs r2, 0
- bl PlayCry4
- b _08075CE4
-_08075CD8:
- lsls r1, r5, 24
- asrs r1, 24
- adds r0, r6, 0
- movs r2, 0xB
- bl PlayCry4
-_08075CE4:
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0, 0x4]
- mov r2, r8
- lsls r1, r2, 1
- add r1, r8
- lsls r1, 2
- adds r1, r0
- ldrb r2, [r1, 0x1]
- movs r0, 0x41
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x1]
- adds r0, r4, 0
- bl DestroyTask
-_08075D04:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end c3_0804B070
-
- thumb_func_start sub_8075D14
-sub_8075D14: @ 8075D14
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- adds r6, r0, 0
- ldrh r0, [r6, 0x3A]
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r6, 0
- movs r1, 0x1
- bl StartSpriteAnim
- adds r0, r5, 0
- bl sub_8076B14
- lsls r0, 16
- lsrs r0, 16
- bl ball_number_to_ball_processing_index
- adds r4, r0, 0
- ldrh r0, [r6, 0x20]
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r6, 0x22]
- subs r1, 0x5
- lsls r1, 24
- lsrs r1, 24
- lsls r4, 24
- lsrs r4, 24
- str r4, [sp]
- movs r2, 0x1
- movs r3, 0x1C
- bl sub_8171D98
- ldrh r1, [r6, 0x3A]
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x1
- movs r2, 0xE
- adds r3, r4, 0
- bl sub_81729E8
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x2E]
- ldr r0, =sub_8075FD4
- str r0, [r6, 0x1C]
- ldr r0, =gMain
- ldr r1, =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08075D88
- b _08075EF4
-_08075D88:
- adds r0, r5, 0
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _08075DC0
- ldr r0, =gBattlePartyID
- lsls r2, r5, 1
- adds r0, r2, r0
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, =gEnemyParty
- adds r7, r1, r0
- movs r4, 0x19
- mov r10, r4
- b _08075DD4
- .pool
-_08075DC0:
- ldr r0, =gBattlePartyID
- lsls r2, r5, 1
- adds r0, r2, r0
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r7, r1, r0
- movs r0, 0xE7
- mov r10, r0
-_08075DD4:
- mov r8, r2
- adds r0, r7, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- movs r0, 0
- bl GetBankByIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r5, r0
- beq _08075E00
- movs r0, 0x1
- bl GetBankByIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r5, r0
- bne _08075E56
-_08075E00:
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _08075E56
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0, 0x8]
- ldrb r1, [r0, 0x9]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08075E56
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x42
- ands r0, r1
- cmp r0, 0x42
- bne _08075E4C
- bl IsBGMPlaying
- lsls r0, 24
- cmp r0, 0
- beq _08075E56
- ldr r0, =gMPlay_BGM
- bl m4aMPlayStop
- b _08075E56
- .pool
-_08075E4C:
- ldr r0, =gMPlay_BGM
- ldr r1, =0x0000ffff
- movs r2, 0x80
- bl m4aMPlayVolumeControl
-_08075E56:
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _08075E70
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0, 0x8]
- ldrb r1, [r0, 0x9]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _08075E80
-_08075E70:
- movs r4, 0
- b _08075EA2
- .pool
-_08075E80:
- movs r0, 0
- bl GetBankByIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r5, r0
- beq _08075E9C
- movs r0, 0x1
- bl GetBankByIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r5, r0
- bne _08075EA0
-_08075E9C:
- movs r4, 0x1
- b _08075EA2
-_08075EA0:
- movs r4, 0x2
-_08075EA2:
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0, 0x4]
- mov r2, r8
- adds r1, r2, r5
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- movs r2, 0x40
- orrs r0, r2
- strb r0, [r1, 0x1]
- ldr r0, =c3_0804B070
- movs r1, 0x3
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r3, 0
- mov r0, r9
- strh r0, [r1, 0x8]
- mov r2, r10
- lsls r0, r2, 24
- asrs r0, 24
- strh r0, [r1, 0xA]
- strh r4, [r1, 0xC]
- strh r5, [r1, 0xE]
- ldr r2, =gBankSpriteIds
- movs r4, 0x3A
- ldrsh r0, [r6, r4]
- adds r0, r2
- ldrb r0, [r0]
- strh r0, [r1, 0x10]
- lsrs r0, r7, 16
- strh r0, [r1, 0x12]
- strh r7, [r1, 0x14]
- strh r3, [r1, 0x26]
-_08075EF4:
- ldr r4, =gBankSpriteIds
- movs r1, 0x3A
- ldrsh r0, [r6, r1]
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r5, =gSprites
- adds r0, r5
- movs r1, 0x1
- bl StartSpriteAffineAnim
- ldrh r0, [r6, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08075F50
- movs r2, 0x3A
- ldrsh r0, [r6, r2]
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r5, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, =sub_8039B58
- b _08075F66
- .pool
-_08075F50:
- movs r1, 0x3A
- ldrsh r0, [r6, r1]
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r5, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, =sub_8039E44
-_08075F66:
- str r1, [r0]
- ldr r5, =gBankSpriteIds
- movs r2, 0x3A
- ldrsh r0, [r6, r2]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, =gSprites
- adds r0, r4
- bl AnimateSprite
- movs r1, 0x3A
- ldrsh r0, [r6, r1]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x80
- lsls r1, 5
- strh r1, [r0, 0x30]
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8075D14
-
- thumb_func_start sub_8075FB4
-sub_8075FB4: @ 8075FB4
- adds r3, r0, 0
- adds r3, 0x2C
- ldrb r1, [r3]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r3]
- ldr r1, =sub_80760F8
- str r1, [r0, 0x1C]
- movs r1, 0
- strh r1, [r0, 0x34]
- strh r1, [r0, 0x36]
- strh r1, [r0, 0x38]
- bx lr
- .pool
- thumb_func_end sub_8075FB4
-
- thumb_func_start sub_8075FD4
-sub_8075FD4: @ 8075FD4
- push {r4-r7,lr}
- adds r5, r0, 0
- movs r7, 0
- ldrh r0, [r5, 0x3A]
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r4, =gSprites
- ldr r0, =gBankSpriteIds
- adds r3, r6, r0
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- adds r0, r5, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08076016
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
-_08076016:
- ldrb r0, [r3]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- adds r0, r1, 0
- adds r0, 0x3F
- ldrb r0, [r0]
- lsls r0, 26
- cmp r0, 0
- bge _08076040
- adds r0, r1, 0
- movs r1, 0
- bl StartSpriteAffineAnim
- movs r7, 0x1
- b _0807605C
- .pool
-_08076040:
- ldr r2, =0xfffffee0
- adds r0, r2, 0
- ldrh r2, [r1, 0x30]
- adds r0, r2
- strh r0, [r1, 0x30]
- ldrb r0, [r3]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrh r0, [r1, 0x30]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r1, 0x26]
-_0807605C:
- adds r0, r5, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080760DE
- cmp r7, 0
- beq _080760DE
- ldr r2, =gSprites
- ldr r0, =gBankSpriteIds
- adds r0, r6, r0
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r2, 0
- movs r1, 0
- strh r1, [r0, 0x26]
- ldr r0, =gDoingBattleAnim
- strb r2, [r0]
- ldr r4, =gBattleSpritesDataPtr
- ldr r0, [r4]
- ldr r0, [r0, 0x4]
- lsls r1, r6, 1
- adds r1, r6
- lsls r1, 2
- adds r1, r0
- ldrb r2, [r1]
- movs r0, 0x9
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- adds r0, r5, 0
- bl FreeSpriteOamMatrix
- adds r0, r5, 0
- bl DestroySprite
- movs r3, 0
- ldr r0, [r4]
- ldr r2, [r0, 0x4]
- movs r5, 0x8
- movs r4, 0x3
-_080760B6:
- ldrb r1, [r2]
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- bne _080760C2
- adds r3, 0x1
-_080760C2:
- adds r2, 0xC
- subs r4, 0x1
- cmp r4, 0
- bge _080760B6
- cmp r3, 0x4
- bne _080760DE
- movs r4, 0
-_080760D0:
- lsls r0, r4, 24
- lsrs r0, 24
- bl sub_8076AE8
- adds r4, 0x1
- cmp r4, 0xB
- ble _080760D0
-_080760DE:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8075FD4
-
- thumb_func_start sub_80760F8
-sub_80760F8: @ 80760F8
- push {r4-r7,lr}
- adds r6, r0, 0
- ldrh r0, [r6, 0x3A]
- lsls r0, 24
- lsrs r7, r0, 24
- ldrh r0, [r6, 0x36]
- adds r0, 0x1
- strh r0, [r6, 0x36]
- lsls r0, 16
- asrs r1, r0, 16
- cmp r1, 0x28
- beq _08076196
- cmp r1, 0x5F
- bne _08076130
- ldr r0, =gDoingBattleAnim
- movs r1, 0
- strb r1, [r0]
- bl m4aMPlayAllStop
- ldr r0, =0x00000173
- bl PlaySE
- b _08076196
- .pool
-_08076130:
- ldr r0, =0x0000013b
- cmp r1, r0
- bne _08076196
- ldr r5, =gSprites
- ldr r4, =gBankSpriteIds
- movs r1, 0x3A
- ldrsh r0, [r6, r1]
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r0, [r0, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- movs r1, 0x3A
- ldrsh r0, [r6, r1]
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- bl DestroySprite
- adds r0, r6, 0
- bl DestroySpriteAndFreeResources
- ldr r0, =gMain
- ldr r1, =0x00000439
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08076196
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0, 0x4]
- lsls r1, r7, 1
- adds r1, r7
- lsls r1, 2
- adds r1, r0
- ldrb r2, [r1]
- movs r0, 0x9
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
-_08076196:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80760F8
-
- thumb_func_start sub_80761B4
-sub_80761B4: @ 80761B4
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x19
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x2
- bl sub_80A5C6C
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x3
- bl sub_80A5C6C
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x18
- strh r0, [r4, 0x36]
- ldr r0, =0x0000ffe2
- strh r0, [r4, 0x38]
- ldrh r0, [r4, 0x3A]
- strh r0, [r4, 0x6]
- adds r0, r4, 0
- bl sub_80A68D4
- ldr r0, =sub_8076204
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80761B4
-
- thumb_func_start sub_8076204
-sub_8076204: @ 8076204
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r5, r0, 0
- ldrh r0, [r5, 0x3C]
- movs r1, 0xFF
- mov r8, r1
- lsrs r0, 8
- subs r0, 0x23
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x2C
- bhi _080762F8
- ldrh r1, [r5, 0x6]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- bne _08076266
- ldrh r0, [r5, 0x30]
- movs r1, 0x1
- adds r6, r1, 0
- ands r6, r0
- ldrh r0, [r5, 0x32]
- adds r7, r1, 0
- ands r7, r0
- movs r2, 0x30
- ldrsh r0, [r5, r2]
- movs r1, 0x3
- bl __divsi3
- movs r1, 0x2
- negs r1, r1
- adds r4, r1, 0
- ands r0, r4
- orrs r6, r0
- strh r6, [r5, 0x30]
- movs r2, 0x32
- ldrsh r0, [r5, r2]
- movs r1, 0x3
- bl __divsi3
- ands r0, r4
- orrs r7, r0
- strh r7, [r5, 0x32]
- adds r0, r5, 0
- movs r1, 0x4
- bl StartSpriteAffineAnim
-_08076266:
- ldrh r4, [r5, 0x2E]
- adds r0, r5, 0
- bl sub_80A6F3C
- movs r1, 0x3A
- ldrsh r0, [r5, r1]
- movs r1, 0x3
- bl __divsi3
- adds r1, r0, 0
- ldrh r0, [r5, 0x3C]
- adds r0, r1
- strh r0, [r5, 0x3C]
- lsls r0, 16
- asrs r0, 24
- mov r2, r8
- ands r0, r2
- movs r2, 0x38
- ldrsh r1, [r5, r2]
- bl Sin
- ldrh r1, [r5, 0x26]
- adds r0, r1
- strh r0, [r5, 0x26]
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- ldrh r1, [r5, 0x6]
- adds r0, r1
- strh r0, [r5, 0x6]
- lsls r0, 16
- lsrs r0, 24
- movs r1, 0x3
- bl __umodsi3
- lsls r0, 16
- cmp r0, 0
- beq _080762B6
- strh r4, [r5, 0x2E]
- b _080762BE
-_080762B6:
- lsls r0, r4, 16
- asrs r0, 16
- subs r0, 0x1
- strh r0, [r5, 0x2E]
-_080762BE:
- ldrh r0, [r5, 0x3C]
- lsrs r0, 8
- cmp r0, 0x4F
- ble _08076364
- ldrh r0, [r5, 0x30]
- movs r1, 0x1
- adds r6, r1, 0
- ands r6, r0
- ldrh r0, [r5, 0x32]
- adds r7, r1, 0
- ands r7, r0
- movs r2, 0x30
- ldrsh r1, [r5, r2]
- lsls r0, r1, 1
- adds r0, r1
- movs r1, 0x2
- negs r1, r1
- adds r2, r1, 0
- ands r0, r2
- orrs r0, r6
- strh r0, [r5, 0x30]
- movs r0, 0x32
- ldrsh r1, [r5, r0]
- lsls r0, r1, 1
- adds r0, r1
- ands r0, r2
- orrs r0, r7
- strh r0, [r5, 0x32]
- b _08076364
-_080762F8:
- adds r0, r5, 0
- bl sub_80A6900
- lsls r0, 24
- cmp r0, 0
- beq _08076364
- ldrh r0, [r5, 0x24]
- ldrh r1, [r5, 0x20]
- adds r0, r1
- movs r1, 0
- strh r0, [r5, 0x20]
- ldrh r0, [r5, 0x26]
- ldrh r2, [r5, 0x22]
- adds r0, r2
- strh r0, [r5, 0x22]
- strh r1, [r5, 0x26]
- strh r1, [r5, 0x24]
- ldrb r0, [r5, 0x6]
- strh r0, [r5, 0x3A]
- strh r1, [r5, 0x2E]
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _08076358
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0, 0x8]
- ldrb r1, [r0, 0x9]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08076358
- movs r0, 0x3A
- ldrsh r4, [r5, r0]
- movs r0, 0x2
- bl GetBankByIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bne _08076358
- ldr r0, =sub_8076374
- b _0807635A
- .pool
-_08076358:
- ldr r0, =sub_8075D14
-_0807635A:
- str r0, [r5, 0x1C]
- adds r0, r5, 0
- movs r1, 0
- bl StartSpriteAffineAnim
-_08076364:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8076204
-
- thumb_func_start sub_8076374
-sub_8076374: @ 8076374
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x2E]
- adds r1, r0, 0x1
- strh r1, [r2, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x18
- ble _0807638E
- movs r0, 0
- strh r0, [r2, 0x2E]
- ldr r0, =sub_8075D14
- str r0, [r2, 0x1C]
-_0807638E:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8076374
-
- thumb_func_start sub_8076398
-sub_8076398: @ 8076398
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xF
- ble _080763EC
- movs r0, 0
- strh r0, [r5, 0x2E]
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _080763E8
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0, 0x8]
- ldrb r1, [r0, 0x9]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080763E8
- movs r0, 0x3A
- ldrsh r4, [r5, r0]
- movs r0, 0x3
- bl GetBankByIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bne _080763E8
- ldr r0, =sub_8076374
- b _080763EA
- .pool
-_080763E8:
- ldr r0, =sub_8075D14
-_080763EA:
- str r0, [r5, 0x1C]
-_080763EC:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8076398
-
- thumb_func_start sub_80763F8
-sub_80763F8: @ 80763F8
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r3, 24
- movs r4, 0
- str r4, [sp]
- bl sub_8171D98
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80763F8
-
- thumb_func_start sub_8076420
-sub_8076420: @ 8076420
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- movs r3, 0
- bl sub_81729E8
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_8076420
-
- thumb_func_start sub_8076438
-sub_8076438: @ 8076438
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- adds r5, r0, 0
- mov r9, r2
- mov r10, r3
- ldr r6, [sp, 0x28]
- ldr r4, [sp, 0x2C]
- ldr r0, [sp, 0x30]
- ldr r2, [sp, 0x38]
- lsls r5, 24
- lsrs r5, 24
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp]
- mov r1, r9
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- lsls r3, 24
- lsrs r3, 24
- mov r10, r3
- lsls r6, 24
- lsrs r6, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- lsls r0, r2, 16
- lsrs r7, r0, 16
- ldr r0, =gUnknown_0832C400
- bl LoadCompressedObjectPicUsingHeap
- ldr r0, =gUnknown_0832C460
- bl LoadCompressedObjectPaletteUsingHeap
- ldr r0, =gUnknown_0832C588
- mov r1, r9
- mov r2, r10
- adds r3, r4, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gSprites
- mov r8, r1
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- adds r2, r4, r1
- strh r5, [r2, 0x2E]
- lsls r1, r5, 4
- adds r1, r5
- lsls r1, 2
- add r1, r8
- ldrh r0, [r1, 0x20]
- strh r0, [r2, 0x38]
- ldrh r0, [r1, 0x22]
- strh r0, [r2, 0x3A]
- mov r3, r9
- strh r3, [r1, 0x20]
- mov r0, r10
- strh r0, [r1, 0x22]
- strh r7, [r1, 0x3C]
- mov r3, sp
- ldrh r3, [r3, 0x4]
- strh r3, [r2, 0x30]
- mov r0, sp
- ldrh r0, [r0]
- strh r0, [r2, 0x32]
- mov r3, sp
- ldrh r3, [r3, 0x34]
- strh r3, [r2, 0x34]
- ldr r3, [sp, 0x34]
- lsrs r0, r3, 16
- strh r0, [r2, 0x36]
- movs r0, 0x3
- ands r6, r0
- lsls r6, 2
- ldrb r3, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r6
- strb r0, [r2, 0x5]
- movs r0, 0x1C
- add r8, r0
- add r4, r8
- ldr r0, =sub_8076524
- str r0, [r4]
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1]
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8076438
-
- thumb_func_start sub_8076524
-sub_8076524: @ 8076524
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- ldrh r1, [r6, 0x30]
- movs r2, 0x30
- ldrsh r0, [r6, r2]
- cmp r0, 0
- bne _080765D0
- ldrh r0, [r6, 0x2E]
- lsls r0, 24
- lsrs r7, r0, 24
- ldrh r0, [r6, 0x32]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldrh r4, [r6, 0x34]
- ldrh r0, [r6, 0x36]
- lsls r0, 16
- orrs r4, r0
- adds r0, r6, 0
- adds r0, 0x43
- ldrb r0, [r0]
- cmp r0, 0
- beq _0807655E
- subs r0, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- b _08076560
-_0807655E:
- movs r5, 0
-_08076560:
- adds r0, r6, 0
- movs r1, 0x1
- bl StartSpriteAnim
- ldrh r0, [r6, 0x20]
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r6, 0x22]
- subs r1, 0x5
- lsls r1, 24
- lsrs r1, 24
- ldrb r2, [r6, 0x5]
- lsls r2, 28
- lsrs r2, 30
- adds r3, r5, 0
- bl sub_80763F8
- movs r0, 0x1
- mov r1, r8
- adds r2, r4, 0
- bl sub_8076420
- lsls r0, 24
- lsrs r0, 24
- movs r5, 0
- strh r0, [r6, 0x30]
- ldr r0, =sub_80765E0
- str r0, [r6, 0x1C]
- ldr r0, =gSprites
- lsls r4, r7, 4
- adds r4, r7
- lsls r4, 2
- adds r4, r0
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- adds r0, r4, 0
- bl AnimateSprite
- movs r0, 0x80
- lsls r0, 5
- strh r0, [r4, 0x30]
- strh r5, [r6, 0x3C]
- b _080765D4
- .pool
-_080765D0:
- subs r0, r1, 0x1
- strh r0, [r6, 0x30]
-_080765D4:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8076524
-
- thumb_func_start sub_80765E0
-sub_80765E0: @ 80765E0
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r4, r0, 0
- movs r0, 0
- mov r12, r0
- movs r7, 0
- ldrh r0, [r4, 0x2E]
- lsls r0, 24
- lsrs r6, r0, 24
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08076610
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
-_08076610:
- ldr r1, =gSprites
- lsls r2, r6, 4
- adds r0, r2, r6
- lsls r0, 2
- adds r5, r0, r1
- adds r0, r5, 0
- adds r0, 0x3F
- ldrb r0, [r0]
- lsls r0, 26
- mov r8, r2
- cmp r0, 0
- bge _08076634
- adds r0, r5, 0
- movs r1, 0
- bl StartSpriteAffineAnim
- movs r1, 0x1
- mov r12, r1
-_08076634:
- movs r2, 0x38
- ldrsh r0, [r4, r2]
- movs r3, 0x20
- ldrsh r1, [r4, r3]
- subs r0, r1
- movs r1, 0x3C
- ldrsh r2, [r4, r1]
- muls r0, r2
- cmp r0, 0
- bge _0807664A
- adds r0, 0x7F
-_0807664A:
- asrs r0, 7
- ldrh r3, [r4, 0x20]
- adds r0, r3
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- movs r1, 0x3A
- ldrsh r0, [r4, r1]
- movs r3, 0x22
- ldrsh r1, [r4, r3]
- subs r0, r1
- muls r0, r2
- cmp r0, 0
- bge _08076668
- adds r0, 0x7F
-_08076668:
- asrs r0, 7
- ldrh r1, [r4, 0x22]
- adds r0, r1
- mov r2, r9
- strh r2, [r5, 0x20]
- strh r0, [r5, 0x22]
- ldrh r2, [r4, 0x3C]
- movs r3, 0x3C
- ldrsh r0, [r4, r3]
- cmp r0, 0x7F
- bgt _080766AC
- ldr r1, =gSineTable
- lsls r0, r2, 24
- lsrs r0, 23
- adds r0, r1
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bge _08076690
- adds r0, 0x7
-_08076690:
- asrs r0, 3
- negs r0, r0
- lsls r0, 16
- lsrs r0, 16
- adds r1, r2, 0x4
- strh r1, [r4, 0x3C]
- strh r0, [r5, 0x24]
- strh r0, [r5, 0x26]
- b _080766BA
- .pool
-_080766AC:
- ldrh r0, [r4, 0x38]
- strh r0, [r5, 0x20]
- ldrh r0, [r4, 0x3A]
- strh r0, [r5, 0x22]
- strh r7, [r5, 0x24]
- strh r7, [r5, 0x26]
- movs r7, 0x1
-_080766BA:
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0807670E
- mov r2, r12
- cmp r2, 0
- beq _0807670E
- cmp r7, 0
- beq _0807670E
- ldr r1, =gSprites
- mov r3, r8
- adds r0, r3, r6
- lsls r0, 2
- adds r2, r0, r1
- movs r0, 0x3C
- ldrsh r1, [r2, r0]
- movs r0, 0xCE
- lsls r0, 1
- cmp r1, r0
- bne _080766FC
- ldrh r1, [r2, 0x3C]
- adds r0, r2, 0
- movs r2, 0x1
- movs r3, 0
- bl DoMonFrontSpriteAnimation
- b _08076708
- .pool
-_080766FC:
- ldrh r1, [r2, 0x3C]
- adds r0, r2, 0
- movs r2, 0
- movs r3, 0
- bl DoMonFrontSpriteAnimation
-_08076708:
- adds r0, r4, 0
- bl DestroySpriteAndFreeResources
-_0807670E:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80765E0
-
- thumb_func_start sub_807671C
-sub_807671C: @ 807671C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- mov r10, r0
- adds r6, r2, 0
- mov r8, r3
- ldr r5, [sp, 0x20]
- ldr r4, [sp, 0x24]
- ldr r0, [sp, 0x28]
- mov r9, r0
- mov r0, r10
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- lsls r1, 24
- lsrs r7, r1, 24
- lsls r6, 24
- lsrs r6, 24
- mov r1, r8
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- lsls r5, 24
- lsrs r5, 24
- lsls r4, 24
- lsrs r4, 24
- mov r0, r9
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r0, =gUnknown_0832C400
- bl LoadCompressedObjectPicUsingHeap
- ldr r0, =gUnknown_0832C460
- bl LoadCompressedObjectPaletteUsingHeap
- ldr r0, =gUnknown_0832C588
- adds r1, r6, 0
- mov r2, r8
- adds r3, r4, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r6, =gSprites
- lsls r3, r0, 4
- adds r3, r0
- lsls r3, 2
- adds r2, r3, r6
- mov r1, r10
- strh r1, [r2, 0x2E]
- mov r4, r9
- strh r4, [r2, 0x30]
- strh r7, [r2, 0x32]
- mov r1, sp
- ldrh r1, [r1, 0x2C]
- strh r1, [r2, 0x34]
- ldr r4, [sp, 0x2C]
- lsrs r1, r4, 16
- strh r1, [r2, 0x36]
- movs r1, 0x3
- ands r5, r1
- lsls r5, 2
- ldrb r4, [r2, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r4
- orrs r1, r5
- strb r1, [r2, 0x5]
- adds r6, 0x1C
- adds r3, r6
- ldr r1, =sub_80767D4
- str r1, [r3]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_807671C
-
- thumb_func_start sub_80767D4
-sub_80767D4: @ 80767D4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r4, r0, 0
- ldrh r1, [r4, 0x30]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _0807686C
- ldrh r0, [r4, 0x2E]
- lsls r0, 24
- lsrs r7, r0, 24
- ldrh r0, [r4, 0x32]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldrh r5, [r4, 0x34]
- ldrh r0, [r4, 0x36]
- lsls r0, 16
- orrs r5, r0
- adds r0, r4, 0
- adds r0, 0x43
- ldrb r0, [r0]
- cmp r0, 0
- beq _0807680E
- subs r0, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- b _08076810
-_0807680E:
- movs r6, 0
-_08076810:
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAnim
- ldrh r0, [r4, 0x20]
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x22]
- subs r1, 0x5
- lsls r1, 24
- lsrs r1, 24
- ldrb r2, [r4, 0x5]
- lsls r2, 28
- lsrs r2, 30
- adds r3, r6, 0
- bl sub_80763F8
- movs r0, 0x1
- mov r1, r8
- adds r2, r5, 0
- bl sub_8076420
- lsls r0, 24
- lsrs r0, 24
- movs r5, 0
- strh r0, [r4, 0x30]
- ldr r0, =sub_807687C
- str r0, [r4, 0x1C]
- lsls r4, r7, 4
- adds r4, r7
- lsls r4, 2
- ldr r0, =gSprites
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x2
- bl StartSpriteAffineAnim
- adds r0, r4, 0
- bl AnimateSprite
- strh r5, [r4, 0x30]
- b _08076870
- .pool
-_0807686C:
- subs r0, r1, 0x1
- strh r0, [r4, 0x30]
-_08076870:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80767D4
-
- thumb_func_start sub_807687C
-sub_807687C: @ 807687C
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrh r0, [r5, 0x38]
- adds r0, 0x1
- strh r0, [r5, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xB
- bne _08076894
- movs r0, 0x3C
- bl PlaySE
-_08076894:
- ldrh r1, [r5, 0x2E]
- lsls r1, 24
- lsrs r1, 24
- ldr r2, =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r4, r0, r2
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r0, [r0]
- lsls r0, 26
- cmp r0, 0
- bge _080768D8
- adds r0, r5, 0
- movs r1, 0x2
- bl StartSpriteAnim
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0
- strh r0, [r5, 0x38]
- ldr r0, =sub_80768F0
- str r0, [r5, 0x1C]
- b _080768E8
- .pool
-_080768D8:
- ldrh r0, [r4, 0x30]
- adds r0, 0x60
- strh r0, [r4, 0x30]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- negs r0, r0
- asrs r0, 8
- strh r0, [r4, 0x26]
-_080768E8:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_807687C
-
- thumb_func_start sub_80768F0
-sub_80768F0: @ 80768F0
- push {lr}
- adds r2, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08076904
- ldr r0, =SpriteCallbackDummy
- str r0, [r2, 0x1C]
-_08076904:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80768F0
-
- thumb_func_start obj_delete_and_free_associated_resources_
-obj_delete_and_free_associated_resources_: @ 807690C
- push {lr}
- bl DestroySpriteAndFreeResources
- pop {r0}
- bx r0
- thumb_func_end obj_delete_and_free_associated_resources_
-
- thumb_func_start sub_8076918
-sub_8076918: @ 8076918
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r0, =gHealthBoxesIds
- adds r0, r5, r0
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r6, =gSprites
- adds r4, r0, r6
- movs r1, 0
- movs r0, 0x5
- strh r0, [r4, 0x2E]
- strh r1, [r4, 0x30]
- movs r0, 0x73
- strh r0, [r4, 0x24]
- strh r1, [r4, 0x26]
- ldr r0, =sub_80769CC
- str r0, [r4, 0x1C]
- adds r0, r5, 0
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _08076966
- ldrh r0, [r4, 0x2E]
- negs r0, r0
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x30]
- negs r0, r0
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x24]
- negs r0, r0
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x26]
- negs r0, r0
- strh r0, [r4, 0x26]
-_08076966:
- movs r0, 0x38
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r6, 0
- adds r1, 0x1C
- adds r1, r0, r1
- adds r0, r6
- ldr r1, [r1]
- bl _call_via_r1
- adds r0, r5, 0
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _08076990
- ldr r0, =sub_80769A8
- str r0, [r4, 0x1C]
-_08076990:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8076918
-
- thumb_func_start sub_80769A8
-sub_80769A8: @ 80769A8
- 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, 0x14
- bne _080769C2
- movs r0, 0
- strh r0, [r1, 0x30]
- ldr r0, =sub_80769CC
- str r0, [r1, 0x1C]
-_080769C2:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80769A8
-
- thumb_func_start sub_80769CC
-sub_80769CC: @ 80769CC
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x24]
- ldrh r1, [r2, 0x2E]
- subs r0, r1
- strh r0, [r2, 0x24]
- ldrh r0, [r2, 0x26]
- ldrh r1, [r2, 0x30]
- subs r0, r1
- strh r0, [r2, 0x26]
- ldr r0, [r2, 0x24]
- cmp r0, 0
- bne _080769EA
- ldr r0, =SpriteCallbackDummy
- str r0, [r2, 0x1C]
-_080769EA:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80769CC
-
- thumb_func_start DoHitAnimHealthboxEffect
-DoHitAnimHealthboxEffect: @ 80769F4
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r5, =oamc_804BEB4
- adds r0, r5, 0
- bl CreateInvisibleSpriteWithCallback
- lsls r0, 24
- lsrs r0, 24
- ldr r2, =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r3, r1, r2
- movs r0, 0x1
- strh r0, [r3, 0x2E]
- ldr r0, =gHealthBoxesIds
- adds r4, r0
- ldrb r0, [r4]
- strh r0, [r3, 0x30]
- adds r2, 0x1C
- adds r1, r2
- str r5, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoHitAnimHealthboxEffect
-
- thumb_func_start oamc_804BEB4
-oamc_804BEB4: @ 8076A38
- push {lr}
- adds r3, r0, 0
- ldrh r1, [r3, 0x30]
- lsls r1, 24
- lsrs r1, 24
- ldr r2, =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r2
- ldrh r0, [r3, 0x2E]
- movs r2, 0
- strh r0, [r1, 0x26]
- ldrh r0, [r3, 0x2E]
- negs r0, r0
- strh r0, [r3, 0x2E]
- ldrh r0, [r3, 0x32]
- adds r0, 0x1
- strh r0, [r3, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x15
- bne _08076A70
- strh r2, [r1, 0x24]
- strh r2, [r1, 0x26]
- adds r0, r3, 0
- bl DestroySprite
-_08076A70:
- pop {r0}
- bx r0
- .pool
- thumb_func_end oamc_804BEB4
-
- thumb_func_start sub_8076A78
-sub_8076A78: @ 8076A78
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gUnknown_0832C400
- lsls r6, r4, 3
- adds r5, r6, r0
- ldrh r0, [r5, 0x6]
- bl GetSpriteTileStartByTag
- lsls r0, 16
- ldr r1, =0xffff0000
- cmp r0, r1
- bne _08076AA0
- adds r0, r5, 0
- bl LoadCompressedObjectPicUsingHeap
- ldr r0, =gUnknown_0832C460
- adds r0, r6, r0
- bl LoadCompressedObjectPaletteUsingHeap
-_08076AA0:
- cmp r4, 0x6
- beq _08076ACC
- cmp r4, 0x6
- blt _08076AB0
- cmp r4, 0xB
- bgt _08076AB0
- cmp r4, 0xA
- bge _08076ACC
-_08076AB0:
- ldr r1, =gUnknown_0832C400
- lsls r0, r4, 3
- adds r0, r1
- ldrh r0, [r0, 0x6]
- bl GetSpriteTileStartByTag
- adds r1, r0, 0
- lsls r1, 16
- ldr r0, =gUnknown_08C02300
- lsrs r1, 11
- ldr r2, =0x06010100
- adds r1, r2
- bl LZDecompressVram
-_08076ACC:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8076A78
-
- thumb_func_start sub_8076AE8
-sub_8076AE8: @ 8076AE8
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- ldr r0, =gUnknown_0832C400
- lsrs r4, 21
- adds r0, r4, r0
- ldrh r0, [r0, 0x6]
- bl FreeSpriteTilesByTag
- ldr r0, =gUnknown_0832C460
- adds r4, r0
- ldrh r0, [r4, 0x4]
- bl FreeSpritePaletteByTag
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8076AE8
-
- thumb_func_start sub_8076B14
-sub_8076B14: @ 8076B14
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _08076B40
- ldr r1, =gBattlePartyID
- lsls r0, r4, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gEnemyParty
- b _08076B4E
- .pool
-_08076B40:
- ldr r1, =gBattlePartyID
- lsls r0, r4, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
-_08076B4E:
- adds r0, r1
- movs r1, 0x26
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8076B14
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/pokeblock_feed.s b/asm/pokeblock_feed.s
index 9cbee2fb9..aef726c16 100644
--- a/asm/pokeblock_feed.s
+++ b/asm/pokeblock_feed.s
@@ -740,7 +740,7 @@ _0817A268:
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
- bl sav2_get_text_speed
+ bl GetPlayerTextSpeed
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
diff --git a/asm/pokemon_icon.s b/asm/pokemon_icon.s
index 6009bd3f3..79838f6f9 100755
--- a/asm/pokemon_icon.s
+++ b/asm/pokemon_icon.s
@@ -156,7 +156,7 @@ mon_icon_convert_unown_species_id: @ 80D2E08
cmp r2, 0xC9
bne _080D2E32
adds r0, r1, 0
- bl mon_icon_personality_to_unown_id
+ bl GetUnownLetterByPersonality
lsls r0, 16
lsrs r0, 16
cmp r0, 0
@@ -186,8 +186,8 @@ _080D2E40:
bx r1
thumb_func_end mon_icon_convert_unown_species_id
- thumb_func_start mon_icon_personality_to_unown_id
-mon_icon_personality_to_unown_id: @ 80D2E48
+ thumb_func_start GetUnownLetterByPersonality
+GetUnownLetterByPersonality: @ 80D2E48
push {lr}
adds r2, r0, 0
cmp r2, 0
@@ -219,7 +219,7 @@ _080D2E7E:
_080D2E80:
pop {r1}
bx r1
- thumb_func_end mon_icon_personality_to_unown_id
+ thumb_func_end GetUnownLetterByPersonality
thumb_func_start sub_80D2E84
sub_80D2E84: @ 80D2E84
@@ -229,7 +229,7 @@ sub_80D2E84: @ 80D2E84
lsrs r4, r0, 16
adds r0, r4, 0
mov r1, sp
- bl sub_80D45E8
+ bl MailSpeciesToSpecies
lsls r0, 16
lsrs r0, 16
cmp r0, 0xC9
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index 94245f93b..1b93496a7 100755
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -2201,7 +2201,7 @@ _080C83CC:
ldr r1, =0x00000ce6
adds r0, r1
ldrh r0, [r0]
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
cmp r0, 0
beq _080C83F4
@@ -2304,7 +2304,7 @@ _080C84C8:
ldr r1, =0x00000ce6
adds r0, r1
ldrh r0, [r0]
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
cmp r0, 0
beq _080C84F8
@@ -2874,7 +2874,7 @@ _080C8A0C:
ldr r2, =0x00000ce6
adds r0, r2
ldrh r0, [r0]
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
cmp r0, 0
bne _080C8A8C
@@ -2913,7 +2913,7 @@ _080C8A7C:
ldr r2, =0x00000ce6
adds r0, r1, r2
ldrh r0, [r0]
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
cmp r0, 0
beq _080C8A98
@@ -3409,7 +3409,7 @@ _080C8F0C:
adds r0, 0x1
strb r0, [r1]
_080C8F22:
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -3661,7 +3661,7 @@ _080C914E:
ldr r1, =0x00000ce6
adds r0, r1
ldrh r0, [r0]
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
cmp r0, 0
bne _080C9168
@@ -3943,7 +3943,7 @@ _080C93E4:
ldr r1, =0x00000ce6
adds r0, r1
ldrh r0, [r0]
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
cmp r0, 0
bne _080C9404
@@ -4133,7 +4133,7 @@ _080C9584:
b _080C9664
.pool
_080C95A4:
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -4927,7 +4927,7 @@ _080C9C78:
b _080C9CAA
.pool
_080C9C8C:
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -5058,7 +5058,7 @@ _080C9DAC:
b _080C9DE0
.pool
_080C9DC0:
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -6737,7 +6737,7 @@ sub_80CAC58: @ 80CAC58
sub sp, 0xC
lsls r0, 24
lsrs r6, r0, 24
- bl sub_81AFBF0
+ bl UnkTextUtil_Reset
ldr r1, =gUnknown_0857276C
lsls r0, r6, 3
adds r0, r1
@@ -6774,7 +6774,7 @@ _080CACB8:
adds r1, r2
_080CACC0:
movs r0, 0
- bl sub_81AFC0C
+ bl UnkTextUtil_SetPtrI
b _080CAD30
.pool
_080CACD0:
@@ -6817,7 +6817,7 @@ _080CAD16:
ldr r0, =0x000021eb
adds r1, r0
movs r0, 0
- bl sub_81AFC0C
+ bl UnkTextUtil_SetPtrI
_080CAD30:
ldr r5, =gUnknown_02039D08
ldr r0, [r5]
@@ -6827,7 +6827,7 @@ _080CAD30:
lsls r1, r6, 3
adds r1, r2
ldr r1, [r1]
- bl sub_81AFC28
+ bl UnkTextUtil_StringExpandPlaceholders
movs r0, 0x1
movs r1, 0x11
bl FillWindowPixelBuffer
@@ -16168,7 +16168,7 @@ sub_80CFB44: @ 80CFB44
.pool
_080CFB8C:
ldrh r0, [r1]
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
cmp r0, 0
bne _080CFBA4
@@ -16197,7 +16197,7 @@ _080CFBAC:
.pool
_080CFBCC:
ldrh r0, [r1]
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s
index d30c6b4ee..91fd35c1f 100755
--- a/asm/pokemon_summary_screen.s
+++ b/asm/pokemon_summary_screen.s
@@ -212,17 +212,17 @@ _081C3FEC:
movs r2, 0x1
movs r3, 0x2
bl ConvertIntToDecimalStringN
- bl sub_81AFBF0
+ bl UnkTextUtil_Reset
movs r0, 0
adds r1, r4, 0
- bl sub_81AFC0C
+ bl UnkTextUtil_SetPtrI
movs r0, 0x1
adds r1, r4, 0
- bl sub_81AFC0C
+ bl UnkTextUtil_SetPtrI
ldr r4, =gStringVar4
ldr r1, =gUnknown_0861CE97
adds r0, r4, 0
- bl sub_81AFC28
+ bl UnkTextUtil_StringExpandPlaceholders
movs r0, 0x1
adds r1, r4, 0
movs r2, 0x2C
@@ -1424,16 +1424,16 @@ sub_81C4A08: @ 81C4A08
bl GetMonData
lsls r0, 16
lsrs r0, 16
- bl ball_number_to_ball_processing_index
+ bl ItemIdToBallId
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
adds r0, r4, 0
- bl sub_8076A78
+ bl LoadBallGfx
lsls r0, r4, 1
adds r0, r4
lsls r0, 3
- ldr r1, =gUnknown_0832C588
+ ldr r1, =gBallSpriteTemplates
adds r0, r1
movs r1, 0x10
movs r2, 0x88
@@ -4207,7 +4207,7 @@ sub_81C61E0: @ 81C61E0
cmp r0, 0x3
beq _081C620C
ldrh r0, [r4]
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -4673,7 +4673,7 @@ sub_81C6648: @ 81C6648
bl sub_81C61A8
ldr r5, =gSpecialVar_ItemId
ldrh r0, [r5]
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -5547,7 +5547,7 @@ DisplayItemMessageInBattlePyramid: @ 81C6DD8
movs r0, 0x2
movs r1, 0x11
bl FillWindowPixelBuffer
- bl sav2_get_text_speed
+ bl GetPlayerTextSpeed
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
diff --git a/asm/pokenav.s b/asm/pokenav.s
index 6da267d78..8b38def62 100755
--- a/asm/pokenav.s
+++ b/asm/pokenav.s
@@ -8089,7 +8089,7 @@ _081CB0C0:
thumb_func_start sub_81CB0C8
sub_81CB0C8: @ 81CB0C8
push {lr}
- ldr r1, =gUnknown_085500A4
+ ldr r1, =gRematchTable
lsls r0, 4
adds r0, r1
ldrh r2, [r0, 0xA]
@@ -10207,7 +10207,7 @@ sub_81CC158: @ 81CC158
adds r1, 0xF
bl sub_81CAF78
adds r5, r0, 0
- bl sav2_get_text_speed
+ bl GetPlayerTextSpeed
lsls r0, 24
lsrs r0, 24
ldrb r2, [r4, 0x14]
@@ -16941,17 +16941,17 @@ sub_81CF7F4: @ 81CF7F4
mov r8, r0
bl sub_81CF0F0
adds r7, r0, 0
- bl sub_81AFBF0
+ bl UnkTextUtil_Reset
ldr r4, =gStringVar1
movs r0, 0
adds r1, r4, 0
- bl sub_81AFC0C
+ bl UnkTextUtil_SetPtrI
movs r0, 0xFF
strb r0, [r4]
ldr r5, =gStringVar2
ldr r1, =gText_NumberF700
adds r0, r5, 0
- bl sub_81AFC28
+ bl UnkTextUtil_StringExpandPlaceholders
mov r1, r8
ldrb r0, [r1, 0x8]
movs r1, 0x1
@@ -19854,14 +19854,14 @@ sub_81D0E84: @ 81D0E84
movs r2, 0
movs r3, 0x2
bl ConvertIntToDecimalStringN
- bl sub_81AFBF0
+ bl UnkTextUtil_Reset
movs r0, 0
adds r1, r4, 0
- bl sub_81AFC0C
+ bl UnkTextUtil_SetPtrI
ldr r4, =gStringVar4
ldr r1, =gText_RibbonsF700
adds r0, r4, 0
- bl sub_81AFC28
+ bl UnkTextUtil_StringExpandPlaceholders
ldrb r0, [r5, 0xA]
movs r1, 0x44
bl FillWindowPixelBuffer
@@ -20738,7 +20738,7 @@ _081D15B6:
thumb_func_start sub_81D15BC
sub_81D15BC: @ 81D15BC
- ldr r1, =gUnknown_085500A4
+ ldr r1, =gRematchTable
lsls r0, 4
adds r0, r1
ldrh r0, [r0]
@@ -20751,7 +20751,7 @@ sub_81D15CC: @ 81D15CC
push {lr}
adds r3, r0, 0
movs r1, 0
- ldr r2, =gUnknown_085500A4
+ ldr r2, =gRematchTable
_081D15D4:
ldrh r0, [r2]
cmp r0, r3
@@ -21440,7 +21440,7 @@ _081D1A24:
cmp r0, 0
bne _081D1A1C
adds r0, r7, 0
- bl sub_80B2318
+ bl CountBattledRematchTeams
lsls r0, 16
lsrs r0, 16
cmp r0, 0x1
@@ -23751,7 +23751,7 @@ sub_81D2BF4: @ 81D2BF4
movs r1, 0x1
orrs r0, r1
strb r0, [r2]
- bl sav2_get_text_speed
+ bl GetPlayerTextSpeed
adds r3, r0, 0
lsls r3, 24
lsrs r3, 24
@@ -28068,7 +28068,7 @@ sub_81D4E30: @ 81D4E30
lsls r2, 6
movs r1, 0
bl memset
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00005503
adds r0, r2, 0
strh r0, [r1]
@@ -30343,8 +30343,8 @@ _081D6176:
.pool
thumb_func_end sub_81D6134
- thumb_func_start battle_init
-battle_init: @ 81D6180
+ thumb_func_start sub_81D6180
+sub_81D6180: @ 81D6180
lsls r0, 24
ldr r1, =gSaveBlock2Ptr
ldr r1, [r1]
@@ -30355,7 +30355,7 @@ battle_init: @ 81D6180
ldrh r0, [r1]
bx lr
.pool
- thumb_func_end battle_init
+ thumb_func_end sub_81D6180
thumb_func_start GetTrainerHillTrainerFlag
@ u8 GetTrainerHillTrainerFlag(u8 fieldObjectId)
diff --git a/asm/record_mixing.s b/asm/record_mixing.s
index 35e0557ee..f4271556c 100644
--- a/asm/record_mixing.s
+++ b/asm/record_mixing.s
@@ -993,7 +993,7 @@ _080E75AC:
movs r0, 0xC8
muls r0, r2
adds r1, r0
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
movs r2, 0xC8
bl memcpy
b _080E75FC
@@ -3650,7 +3650,7 @@ _080E8A78:
beq _080E8A90
mov r0, r8
movs r1, 0xFC
- bl sub_81DB4DC
+ bl PadNameString
_080E8A90:
ldrb r1, [r7]
lsrs r1, 4
diff --git a/asm/rom6.s b/asm/rom6.s
index ebff777ea..f2fabec35 100644
--- a/asm/rom6.s
+++ b/asm/rom6.s
@@ -1223,7 +1223,7 @@ sub_8135F04: @ 8135F04
adds r4, 0x1
ldr r6, =gStringVar1
adds r0, r5, 0
- bl sub_8136EA4
+ bl GetHighestPokeblocksFlavorLevel
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -1364,7 +1364,7 @@ _08136032:
bls _08136002
ldr r4, =gStringVar1
mov r0, r8
- bl sub_8136EDC
+ bl GetPokeblocksFeel
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -2601,7 +2601,7 @@ sub_8136AB4: @ 8136AB4
ldr r1, =gText_ThrowAwayVar1
adds r0, r5, 0
bl StringExpandPlaceholders
- bl sav2_get_text_speed
+ bl GetPlayerTextSpeed
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
@@ -2657,7 +2657,7 @@ sub_8136B78: @ 8136B78
ldr r1, =gText_Var1ThrownAway
adds r0, r5, 0
bl StringExpandPlaceholders
- bl sav2_get_text_speed
+ bl GetPlayerTextSpeed
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
@@ -2995,8 +2995,8 @@ _08136E8C:
bx r0
thumb_func_end ClearPokeblocks
- thumb_func_start sub_8136EA4
-sub_8136EA4: @ 8136EA4
+ thumb_func_start GetHighestPokeblocksFlavorLevel
+GetHighestPokeblocksFlavorLevel: @ 8136EA4
push {r4-r6,lr}
adds r6, r0, 0
movs r1, 0x1
@@ -3024,10 +3024,10 @@ _08136ECC:
pop {r4-r6}
pop {r1}
bx r1
- thumb_func_end sub_8136EA4
+ thumb_func_end GetHighestPokeblocksFlavorLevel
- thumb_func_start sub_8136EDC
-sub_8136EDC: @ 8136EDC
+ thumb_func_start GetPokeblocksFeel
+GetPokeblocksFeel: @ 8136EDC
push {lr}
movs r1, 0x6
bl sub_8136F9C
@@ -3039,10 +3039,10 @@ sub_8136EDC: @ 8136EDC
_08136EEE:
pop {r1}
bx r1
- thumb_func_end sub_8136EDC
+ thumb_func_end GetPokeblocksFeel
- thumb_func_start sub_8136EF4
-sub_8136EF4: @ 8136EF4
+ thumb_func_start GetFirstFreePokeblockSlot
+GetFirstFreePokeblockSlot: @ 8136EF4
push {lr}
movs r1, 0
ldr r0, =gSaveBlock1Ptr
@@ -3070,13 +3070,13 @@ _08136F18:
_08136F26:
pop {r1}
bx r1
- thumb_func_end sub_8136EF4
+ thumb_func_end GetFirstFreePokeblockSlot
- thumb_func_start sub_8136F2C
-sub_8136F2C: @ 8136F2C
+ thumb_func_start AddPokeblock
+AddPokeblock: @ 8136F2C
push {r4,lr}
adds r4, r0, 0
- bl sub_8136EF4
+ bl GetFirstFreePokeblockSlot
lsls r0, 24
asrs r1, r0, 24
movs r0, 0x1
@@ -3102,7 +3102,7 @@ _08136F62:
pop {r4}
pop {r1}
bx r1
- thumb_func_end sub_8136F2C
+ thumb_func_end AddPokeblock
thumb_func_start sub_8136F68
sub_8136F68: @ 8136F68
@@ -3287,8 +3287,8 @@ _081370AC:
bx r1
thumb_func_end sub_8137068
- thumb_func_start sub_81370B4
-sub_81370B4: @ 81370B4
+ thumb_func_start GetPokeblocksFlavor
+GetPokeblocksFlavor: @ 81370B4
push {r4-r7,lr}
adds r5, r0, 0
movs r7, 0
@@ -3324,7 +3324,7 @@ _081370E2:
pop {r4-r7}
pop {r1}
bx r1
- thumb_func_end sub_81370B4
+ thumb_func_end GetPokeblocksFlavor
thumb_func_start sub_81370FC
sub_81370FC: @ 81370FC
@@ -4180,7 +4180,7 @@ _0813785A:
thumb_func_start sp0C8_whiteout_maybe
sp0C8_whiteout_maybe: @ 813787C
push {lr}
- ldr r0, =c2_whiteout
+ ldr r0, =CB2_WhiteOut
bl SetMainCallback2
movs r0, 0
pop {r1}
@@ -4188,6 +4188,8 @@ sp0C8_whiteout_maybe: @ 813787C
.pool
thumb_func_end sp0C8_whiteout_maybe
+@ time_events.o
+
thumb_func_start sub_8137890
sub_8137890: @ 8137890
push {r4,lr}
@@ -4244,8 +4246,8 @@ sub_81378E4: @ 81378E4
bx r0
thumb_func_end sub_81378E4
- thumb_func_start sub_8137904
-sub_8137904: @ 8137904
+ thumb_func_start UpdateMirageRnd
+UpdateMirageRnd: @ 8137904
push {r4,lr}
lsls r0, 16
lsrs r4, r0, 16
@@ -4271,7 +4273,7 @@ _08137928:
pop {r0}
bx r0
.pool
- thumb_func_end sub_8137904
+ thumb_func_end UpdateMirageRnd
thumb_func_start sub_813793C
sub_813793C: @ 813793C
@@ -4385,8 +4387,8 @@ sub_8137A0C: @ 8137A0C
.pool
thumb_func_end sub_8137A0C
- thumb_func_start sub_8137A20
-sub_8137A20: @ 8137A20
+ thumb_func_start UpdateBirchState
+UpdateBirchState: @ 8137A20
push {r4,r5,lr}
adds r4, r0, 0
lsls r4, 16
@@ -4405,7 +4407,9 @@ sub_8137A20: @ 8137A20
pop {r0}
bx r0
.pool
- thumb_func_end sub_8137A20
+ thumb_func_end UpdateBirchState
+
+@ birch_pc.o
thumb_func_start sub_8137A4C
sub_8137A4C: @ 8137A4C
@@ -7605,15 +7609,15 @@ _08139456:
bx r1
thumb_func_end sub_81393FC
- thumb_func_start sub_813945C
-sub_813945C: @ 813945C
+ thumb_func_start SetShoalItemFlag
+SetShoalItemFlag: @ 813945C
push {lr}
ldr r0, =0x000008bf
bl FlagSet
pop {r0}
bx r0
.pool
- thumb_func_end sub_813945C
+ thumb_func_end SetShoalItemFlag
thumb_func_start sub_813946C
sub_813946C: @ 813946C
@@ -8934,8 +8938,8 @@ _08139EEE:
bx r1
thumb_func_end sub_8139ED0
- thumb_func_start sub_8139EF4
-sub_8139EF4: @ 8139EF4
+ thumb_func_start UpdateFrontierManiac
+UpdateFrontierManiac: @ 8139EF4
push {r4,r5,lr}
adds r4, r0, 0
lsls r4, 16
@@ -8954,7 +8958,7 @@ sub_8139EF4: @ 8139EF4
pop {r0}
bx r0
.pool
- thumb_func_end sub_8139EF4
+ thumb_func_end UpdateFrontierManiac
thumb_func_start sub_8139F20
sub_8139F20: @ 8139F20
@@ -10002,8 +10006,8 @@ _0813A7C6:
.pool
thumb_func_end sub_813A7B8
- thumb_func_start sub_813A7F4
-sub_813A7F4: @ 813A7F4
+ thumb_func_start UpdateFrontierGambler
+UpdateFrontierGambler: @ 813A7F4
push {r4,r5,lr}
adds r4, r0, 0
lsls r4, 16
@@ -10022,7 +10026,7 @@ sub_813A7F4: @ 813A7F4
pop {r0}
bx r0
.pool
- thumb_func_end sub_813A7F4
+ thumb_func_end UpdateFrontierGambler
thumb_func_start sub_813A820
sub_813A820: @ 813A820
diff --git a/asm/script_menu.s b/asm/script_menu.s
index be7cbfbc7..233a5e14c 100644
--- a/asm/script_menu.s
+++ b/asm/script_menu.s
@@ -444,7 +444,7 @@ task_yes_no_maybe: @ 80E215C
b _080E21C4
.pool
_080E2180:
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
movs r0, 0x1
diff --git a/asm/script_pokemon_util_80F87D8.s b/asm/script_pokemon_util_80F87D8.s
index 3a3cf4269..e093ea149 100644
--- a/asm/script_pokemon_util_80F87D8.s
+++ b/asm/script_pokemon_util_80F87D8.s
@@ -1359,8 +1359,8 @@ ScriptGiveEgg: @ 80F92C8
bx r1
thumb_func_end ScriptGiveEgg
- thumb_func_start sub_80F92F8
-sub_80F92F8: @ 80F92F8
+ thumb_func_start HasEnoughMonsForDoubleBattle
+HasEnoughMonsForDoubleBattle: @ 80F92F8
push {lr}
bl GetMonsStateToDoubles
lsls r0, 24
@@ -1382,7 +1382,7 @@ _080F9318:
pop {r0}
bx r0
.pool
- thumb_func_end sub_80F92F8
+ thumb_func_end HasEnoughMonsForDoubleBattle
thumb_func_start sub_80F9320
sub_80F9320: @ 80F9320
diff --git a/asm/shop.s b/asm/shop.s
index 94756624c..2d6791a62 100644
--- a/asm/shop.s
+++ b/asm/shop.s
@@ -1219,7 +1219,7 @@ BuyMenuDisplayMessage: @ 80E04E8
adds r6, r2, 0
lsls r4, 24
lsrs r4, 24
- bl sav2_get_text_speed
+ bl GetPlayerTextSpeed
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
diff --git a/asm/slot_machine.s b/asm/slot_machine.s
index 6390ae992..24e755648 100644
--- a/asm/slot_machine.s
+++ b/asm/slot_machine.s
@@ -1581,7 +1581,7 @@ sub_812B158: @ 812B158
thumb_func_start sub_812B1B0
sub_812B1B0: @ 812B1B0
push {lr}
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
diff --git a/asm/start_menu.s b/asm/start_menu.s
index 634425f80..6182c3c27 100644
--- a/asm/start_menu.s
+++ b/asm/start_menu.s
@@ -356,7 +356,7 @@ sub_809FA9C: @ 809FA9C
bl is_c1_link_related_active
cmp r0, 0
bne _0809FAB2
- bl player_bitmagic
+ bl FreezeMapObjects
bl sub_808B864
bl sub_808BCF4
_0809FAB2:
@@ -1121,7 +1121,7 @@ sub_80A00EC: @ 80A00EC
thumb_func_start sub_80A0108
sub_80A0108: @ 80A0108
push {lr}
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -1226,7 +1226,7 @@ sub_80A01D0: @ 80A01D0
thumb_func_start sub_80A01EC
sub_80A01EC: @ 80A01EC
push {lr}
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -1441,7 +1441,7 @@ sub_80A0388: @ 80A0388
thumb_func_start sub_80A03A4
sub_80A03A4: @ 80A03A4
push {lr}
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
diff --git a/asm/trade.s b/asm/trade.s
index cbf980b74..10daff6b9 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -1,5 +1,7 @@
.include "asm/macros.inc"
- .include "constants/constants.inc"
+ .include "constants/gba_constants.inc"
+ .include "constants/misc_constants.inc"
+ .include "constants/species_constants.inc"
.syntax unified
@@ -401,7 +403,7 @@ _080774B2:
ldrb r2, [r0]
cmp r2, 0
bne _0807754C
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r5, =0x00001122
adds r0, r5, 0
strh r0, [r1]
@@ -2142,7 +2144,7 @@ _08078484:
.4byte _080786F0
.4byte _08078720
_080784DC:
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
ldr r1, =gPlayerParty
movs r2, 0xC8
bl sub_8078438
@@ -2208,7 +2210,7 @@ _08078552:
b _080787A2
.pool
_0807857C:
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
ldr r1, =gPlayerParty + 200
movs r2, 0xC8
bl sub_8078438
@@ -2247,7 +2249,7 @@ _080785B6:
b _080787A2
.pool
_080785E0:
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
ldr r1, =gPlayerParty + 400
movs r2, 0xC8
bl sub_8078438
@@ -2286,7 +2288,7 @@ _0807861A:
b _080787A2
.pool
_08078644:
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
ldr r1, =gSaveBlock1Ptr
ldr r1, [r1]
ldr r2, =0x00002be0
@@ -2328,7 +2330,7 @@ _0807868A:
b _080787A2
.pool
_080786B4:
- ldr r0, =gUnknown_020228C4
+ ldr r0, =gBlockSendBuffer
ldr r1, =gSaveBlock1Ptr
ldr r1, [r1]
ldr r2, =0x000031a8
@@ -3694,7 +3696,7 @@ _0807920E:
thumb_func_start sub_8079218
sub_8079218: @ 8079218
push {lr}
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -3796,7 +3798,7 @@ _080792D8:
thumb_func_start sub_80792E4
sub_80792E4: @ 80792E4
push {lr}
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
asrs r1, r0, 24
cmp r1, 0
@@ -7258,7 +7260,7 @@ _0807AEAC:
ldrb r0, [r0]
cmp r0, 0
bne _0807AEC0
- ldr r1, =gUnknown_020229C6
+ ldr r1, =gLinkType
ldr r2, =0x00001144
adds r0, r2, 0
strh r0, [r1]
@@ -10445,7 +10447,7 @@ _0807CD1C:
str r2, [sp, 0x10]
movs r2, 0x78
movs r3, 0x54
- bl sub_8076438
+ bl CreatePokeballSpriteToReleaseMon
ldr r0, [r7]
adds r0, 0xD3
ldrb r1, [r0]
@@ -12550,7 +12552,7 @@ _0807E168:
str r2, [sp, 0x10]
movs r2, 0x78
movs r3, 0x54
- bl sub_8076438
+ bl CreatePokeballSpriteToReleaseMon
ldr r0, [r7]
adds r0, 0xD3
ldrb r1, [r0]
@@ -13367,7 +13369,7 @@ sub_807E7E8: @ 807E7E8
ldrh r0, [r5, 0x28]
cmp r0, 0
beq _0807E960
- bl itemid_is_mail
+ bl ItemIsMail
lsls r0, 24
cmp r0, 0
beq _0807E954
@@ -13440,7 +13442,7 @@ _0807E98E:
bl StringCopy
adds r0, r4, 0
movs r1, 0
- bl sub_81DB4DC
+ bl PadNameString
ldr r1, [r6, 0x18]
lsrs r0, r1, 24
strb r0, [r5, 0x1A]
diff --git a/asm/trainer_rematch.s b/asm/trainer_rematch.s
index b814934a3..1c874f28f 100755
--- a/asm/trainer_rematch.s
+++ b/asm/trainer_rematch.s
@@ -178,14 +178,14 @@ sub_81DA6CC: @ 81DA6CC
push {r4-r6,lr}
adds r5, r0, 0
movs r4, 0
- ldr r6, =gUnknown_085500A4
+ ldr r6, =gRematchTable
_081DA6D4:
lsls r0, r4, 1
lsls r1, r5, 4
adds r0, r1
adds r0, r6
ldrh r0, [r0]
- bl HasTrainerAlreadyBeenFought
+ bl HasTrainerBeenFought
lsls r0, 24
cmp r0, 0
bne _081DA6F0
diff --git a/asm/trainer_see.s b/asm/trainer_see.s
index ad6cc370e..16398f9a4 100644
--- a/asm/trainer_see.s
+++ b/asm/trainer_see.s
@@ -5,133 +5,6 @@
.text
- thumb_func_start CheckForTrainersWantingBattle
-@ bool8 CheckForTrainersWantingBattle()
-CheckForTrainersWantingBattle: @ 80B3BE8
- push {r4-r7,lr}
- ldr r0, =gUnknown_030060A8
- movs r1, 0
- strb r1, [r0]
- ldr r0, =gUnknown_02038BFC
- strb r1, [r0]
- movs r4, 0
- ldr r6, =gMapObjects
-_080B3BF8:
- lsls r0, r4, 3
- adds r0, r4
- lsls r0, 2
- adds r1, r0, r6
- ldrb r0, [r1]
- lsls r0, 31
- cmp r0, 0
- beq _080B3C38
- ldrb r0, [r1, 0x7]
- cmp r0, 0x1
- beq _080B3C12
- cmp r0, 0x3
- bne _080B3C38
-_080B3C12:
- adds r0, r4, 0
- bl CheckIfTrainerWantsBattle
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- beq _080B3C42
- cmp r0, 0
- beq _080B3C38
- ldr r0, =gUnknown_030060A8
- ldrb r1, [r0]
- adds r5, r0, 0
- cmp r1, 0x1
- bhi _080B3C88
- bl GetMonsStateToDoubles_2
- lsls r0, 24
- cmp r0, 0
- bne _080B3C42
-_080B3C38:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xF
- bls _080B3BF8
-_080B3C42:
- ldr r0, =gUnknown_030060A8
- ldrb r4, [r0]
- adds r5, r0, 0
- cmp r4, 0x1
- bne _080B3C88
- bl ResetTrainerOpponentIds
- ldr r2, =gUnknown_03006090
- ldrb r0, [r5]
- subs r0, 0x1
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r2, 0x4
- adds r1, r2
- ldr r1, [r1]
- bl SingleTrainerWantsBattle
- ldr r0, =gUnknown_030060AC
- strb r4, [r0]
- movs r0, 0x1
- b _080B3CF4
- .pool
-_080B3C88:
- ldrb r0, [r5]
- cmp r0, 0x2
- bne _080B3CEC
- bl ResetTrainerOpponentIds
- movs r4, 0
- ldrb r5, [r5]
- cmp r4, r5
- bcs _080B3CC6
- ldr r6, =gUnknown_03006090
- adds r7, r6, 0x4
- ldr r5, =gUnknown_02038BFC
-_080B3CA0:
- lsls r1, r4, 1
- adds r1, r4
- lsls r1, 2
- adds r0, r1, r6
- ldrb r0, [r0]
- adds r1, r7
- ldr r1, [r1]
- bl TwoTrainersWantBattle
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- ldr r0, =gUnknown_030060A8
- ldrb r0, [r0]
- cmp r4, r0
- bcc _080B3CA0
-_080B3CC6:
- bl TwoTrainersWantBattleExecuteScript
- ldr r1, =gUnknown_02038BFC
- movs r0, 0
- strb r0, [r1]
- ldr r1, =gUnknown_030060AC
- movs r0, 0x1
- strb r0, [r1]
- movs r0, 0x1
- b _080B3CF4
- .pool
-_080B3CEC:
- ldr r1, =gUnknown_030060AC
- movs r0, 0
- strb r0, [r1]
- movs r0, 0
-_080B3CF4:
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end CheckForTrainersWantingBattle
-
thumb_func_start CheckIfTrainerWantsBattle
@ u8 CheckIfTrainerWantsBattle(u8 trainerFieldObjectId)
CheckIfTrainerWantsBattle: @ 80B3D00
@@ -203,8 +76,8 @@ _080B3D7C:
movs r1, 0x2
mov r9, r1
_080B3D8A:
- ldr r2, =gUnknown_03006090
- ldr r4, =gUnknown_030060A8
+ ldr r2, =gApproachingTrainers
+ ldr r4, =gNoOfApproachingTrainers
ldrb r1, [r4]
lsls r0, r1, 1
adds r0, r1
@@ -608,8 +481,8 @@ TrainerApproachPlayer: @ 80B406C
ldr r0, =c3_8081EDC
movs r1, 0x50
bl CreateTask
- ldr r4, =gUnknown_03006090
- ldr r3, =gUnknown_030060A8
+ ldr r4, =gApproachingTrainers
+ ldr r3, =gNoOfApproachingTrainers
ldrb r2, [r3]
lsls r1, r2, 1
adds r1, r2
@@ -645,16 +518,16 @@ TrainerApproachPlayer: @ 80B406C
sub_80B40C8: @ 80B40C8
push {r4,r5,lr}
adds r2, r0, 0
- ldr r0, =gUnknown_02038BFC
+ ldr r0, =gApproachingTrainerId
ldrb r0, [r0]
cmp r0, 0
bne _080B40E4
- ldr r0, =gUnknown_03006090
+ ldr r0, =gApproachingTrainers
ldrb r5, [r0, 0x8]
b _080B40E8
.pool
_080B40E4:
- ldr r0, =gUnknown_03006090
+ ldr r0, =gApproachingTrainers
ldrb r5, [r0, 0x14]
_080B40E8:
ldr r4, =c3_8081EDC
@@ -1290,11 +1163,11 @@ sub_80B45BC: @ 80B45BC
thumb_func_start sub_80B45D0
sub_80B45D0: @ 80B45D0
push {lr}
- ldr r0, =gUnknown_030060A8
+ ldr r0, =gNoOfApproachingTrainers
ldrb r0, [r0]
cmp r0, 0x2
bne _080B4610
- ldr r1, =gUnknown_02038BFC
+ ldr r1, =gApproachingTrainerId
ldrb r0, [r1]
cmp r0, 0
bne _080B460C
@@ -1304,7 +1177,7 @@ sub_80B45D0: @ 80B45D0
movs r0, 0x1
strh r0, [r1]
bl UnfreezeMapObjects
- ldr r0, =gUnknown_03006090
+ ldr r0, =gApproachingTrainers
ldrb r0, [r0, 0xC]
bl sub_80974D0
b _080B4616
@@ -1531,16 +1404,16 @@ _080B47B2:
thumb_func_start sub_80B47BC
sub_80B47BC: @ 80B47BC
push {lr}
- ldr r0, =gUnknown_02038BFC
+ ldr r0, =gApproachingTrainerId
ldrb r0, [r0]
cmp r0, 0
beq _080B47D4
- ldr r0, =gUnknown_03006090
+ ldr r0, =gApproachingTrainers
ldrb r0, [r0, 0xC]
b _080B47D8
.pool
_080B47D4:
- ldr r0, =gUnknown_03006090
+ ldr r0, =gApproachingTrainers
ldrb r0, [r0]
_080B47D8:
pop {r1}
@@ -1560,12 +1433,12 @@ sub_80B47E0: @ 80B47E0
_080B47EE:
cmp r0, 0
beq _080B47FC
- ldr r0, =gUnknown_03006090
+ ldr r0, =gApproachingTrainers
ldrb r0, [r0, 0xC]
b _080B4800
.pool
_080B47FC:
- ldr r0, =gUnknown_03006090
+ ldr r0, =gApproachingTrainers
ldrb r0, [r0]
_080B4800:
pop {r1}
@@ -1580,7 +1453,7 @@ sub_80B4808: @ 80B4808
ldrb r0, [r0]
cmp r0, 0x1
bne _080B4870
- ldr r2, =gUnknown_03006090
+ ldr r2, =gApproachingTrainers
ldr r0, =gUnknown_03006080
ldrh r1, [r0]
lsls r0, r1, 1
diff --git a/asm/unk_81BAD84.s b/asm/unk_81BAD84.s
deleted file mode 100644
index 2a95feed4..000000000
--- a/asm/unk_81BAD84.s
+++ /dev/null
@@ -1,57 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_81BAD84
-sub_81BAD84: @ 81BAD84
- push {r4-r6,lr}
- movs r6, 0x80
- lsls r6, 19
- movs r2, 0
- strh r2, [r6]
- ldr r1, =0x04000010
- strh r2, [r1]
- adds r1, 0x2
- strh r2, [r1]
- adds r1, 0x3E
- strh r2, [r1]
- ldr r5, =gUnknown_08617128
- lsls r4, r0, 1
- adds r4, r0
- lsls r4, 2
- adds r0, r4, r5
- ldr r0, [r0]
- movs r1, 0xC0
- lsls r1, 19
- bl LZ77UnCompVram
- adds r0, r5, 0x4
- adds r0, r4, r0
- ldr r0, [r0]
- ldr r1, =0x0600f800
- bl LZ77UnCompVram
- adds r5, 0x8
- adds r4, r5
- ldr r0, [r4]
- movs r1, 0xA0
- lsls r1, 19
- movs r4, 0x80
- lsls r4, 1
- adds r2, r4, 0
- bl CpuSet
- ldr r1, =0x04000008
- movs r2, 0xF8
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- strh r4, [r6]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81BAD84
-
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/unk_text_util.s b/asm/unk_text_util.s
deleted file mode 100755
index f8dabb5b7..000000000
--- a/asm/unk_text_util.s
+++ /dev/null
@@ -1,99 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_81AFBF0
-sub_81AFBF0: @ 81AFBF0
- push {lr}
- ldr r1, =gUnknown_0203CE9C
- movs r2, 0
- adds r0, r1, 0
- adds r0, 0x1C
-_081AFBFA:
- str r2, [r0]
- subs r0, 0x4
- cmp r0, r1
- bge _081AFBFA
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81AFBF0
-
- thumb_func_start sub_81AFC0C
-sub_81AFC0C: @ 81AFC0C
- push {lr}
- adds r2, r1, 0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x7
- bhi _081AFC20
- ldr r1, =gUnknown_0203CE9C
- lsls r0, 2
- adds r0, r1
- str r2, [r0]
-_081AFC20:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81AFC0C
-
- thumb_func_start sub_81AFC28
-sub_81AFC28: @ 81AFC28
- push {r4,r5,lr}
- adds r2, r0, 0
- adds r4, r1, 0
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- beq _081AFC68
- ldr r5, =gUnknown_0203CE9C
-_081AFC38:
- cmp r1, 0xF7
- beq _081AFC48
- strb r1, [r2]
- adds r4, 0x1
- adds r2, 0x1
- b _081AFC60
- .pool
-_081AFC48:
- adds r4, 0x1
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- cmp r1, 0
- beq _081AFC5E
- adds r0, r2, 0
- bl StringCopy
- adds r2, r0, 0
-_081AFC5E:
- adds r4, 0x1
-_081AFC60:
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _081AFC38
-_081AFC68:
- movs r0, 0xFF
- strb r0, [r2]
- adds r0, r2, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81AFC28
-
- thumb_func_start sub_81AFC74
-sub_81AFC74: @ 81AFC74
- lsls r0, 24
- ldr r1, =gUnknown_0203CE9C
- lsrs r0, 22
- adds r0, r1
- ldr r0, [r0]
- bx lr
- .pool
- thumb_func_end sub_81AFC74
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/use_pokeblock.s b/asm/use_pokeblock.s
index 3a8b76ab1..f22fd9061 100755
--- a/asm/use_pokeblock.s
+++ b/asm/use_pokeblock.s
@@ -1240,7 +1240,7 @@ sub_8166D44: @ 8166D44
thumb_func_start sub_8166DE4
sub_8166DE4: @ 8166DE4
push {r4,lr}
- bl sub_8198C58
+ bl ProcessMenuInputNoWrap_
lsls r0, 24
lsrs r4, r0, 24
asrs r1, r0, 24
@@ -1769,7 +1769,7 @@ _0816721C:
adds r0, r6, r0
ldrb r1, [r0]
mov r0, r10
- bl GetMonFlavourRelation
+ bl GetMonFlavorRelation
lsls r0, 24
asrs r2, r0, 24
cmp r0, r9
diff --git a/asm/wallclock.s b/asm/wallclock.s
deleted file mode 100644
index 5c818212c..000000000
--- a/asm/wallclock.s
+++ /dev/null
@@ -1,1515 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_81347B4
-sub_81347B4: @ 81347B4
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_81347B4
-
- thumb_func_start LoadWallClockGraphics
-LoadWallClockGraphics: @ 81347C8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- movs r0, 0xE
- movs r1, 0
- bl SetGpuReg
- movs r0, 0xC
- movs r1, 0
- bl SetGpuReg
- movs r0, 0xA
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x8
- movs r1, 0
- bl SetGpuReg
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r3, 0xC0
- lsls r3, 19
- movs r4, 0xC0
- lsls r4, 9
- add r0, sp, 0x4
- mov r8, r0
- mov r2, sp
- movs r6, 0
- ldr r1, =0x040000d4
- movs r5, 0x80
- lsls r5, 5
- ldr r7, =0x81000800
- movs r0, 0x81
- lsls r0, 24
- mov r12, r0
-_0813486C:
- 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 _0813486C
- 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, =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]
- ldr r0, =gUnknown_08DCC05C
- movs r1, 0xC0
- lsls r1, 19
- bl LZ77UnCompVram
- ldr r0, =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0
- bne _081348FC
- ldr r0, =gUnknown_08DCC01C
- movs r1, 0
- movs r2, 0x20
- bl LoadPalette
- b _08134906
- .pool
-_081348FC:
- ldr r0, =gUnknown_08DCC03C
- movs r1, 0
- movs r2, 0x20
- bl LoadPalette
-_08134906:
- bl GetOverworldTextboxPalettePtr
- movs r1, 0xE0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, =gUnknown_085B21D4
- movs r1, 0xC0
- movs r2, 0x8
- bl LoadPalette
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, =gUnknown_085B21FC
- movs r0, 0
- movs r2, 0x3
- bl InitBgsFromTemplates
- ldr r0, =gUnknown_085B21DC
- bl InitWindows
- bl DeactivateAllTextPrinters
- movs r1, 0x94
- lsls r1, 2
- movs r0, 0
- movs r2, 0xD0
- bl sub_809882C
- bl clear_scheduled_bg_copies_to_vram
- bl remove_some_task
- bl ResetTasks
- bl ResetSpriteData
- bl ResetPaletteFade
- bl FreeAllSpritePalettes
- ldr r0, =gUnknown_085B2208
- bl LoadCompressedObjectPic
- ldr r0, =gUnknown_085B2218
- bl LoadSpritePalettes
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end LoadWallClockGraphics
-
- thumb_func_start sub_813498C
-sub_813498C: @ 813498C
- push {lr}
- sub sp, 0x4
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- movs r0, 0x1
- bl EnableInterrupts
- ldr r0, =sub_81347B4
- bl SetVBlankCallback
- ldr r0, =sub_8134C9C
- bl SetMainCallback2
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- movs r1, 0x82
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- movs r0, 0
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
- add sp, 0x4
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_813498C
-
- thumb_func_start Cb2_StartWallClock
-Cb2_StartWallClock: @ 81349F4
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- sub sp, 0xC
- bl LoadWallClockGraphics
- ldr r0, =gUnknown_08DCC648
- ldr r1, =0x06003800
- bl LZ77UnCompVram
- ldr r0, =sub_8134CB8
- movs r1, 0
- bl CreateTask
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- mov r8, r1
- movs r1, 0xA
- strh r1, [r0, 0xC]
- mov r2, r8
- strh r2, [r0, 0xE]
- strh r2, [r0, 0x10]
- strh r2, [r0, 0x12]
- strh r2, [r0, 0x14]
- strh r2, [r0, 0x8]
- movs r1, 0x96
- lsls r1, 1
- strh r1, [r0, 0xA]
- ldr r0, =gUnknown_085B2250
- movs r1, 0x78
- movs r2, 0x50
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gSprites
- mov r9, r1
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r9
- strh r6, [r1, 0x2E]
- ldrb r2, [r1, 0x1]
- movs r5, 0x4
- negs r5, r5
- adds r0, r5, 0
- ands r0, r2
- movs r2, 0x1
- mov r10, r2
- mov r2, r10
- orrs r0, r2
- strb r0, [r1, 0x1]
- ldrb r2, [r1, 0x3]
- movs r4, 0x3F
- negs r4, r4
- adds r0, r4, 0
- ands r0, r2
- strb r0, [r1, 0x3]
- ldr r0, =gUnknown_085B2268
- movs r1, 0x78
- movs r2, 0x50
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r9
- strh r6, [r1, 0x2E]
- ldrb r0, [r1, 0x1]
- ands r5, r0
- mov r0, r10
- orrs r5, r0
- strb r5, [r1, 0x1]
- ldrb r0, [r1, 0x3]
- ands r4, r0
- movs r0, 0x2
- orrs r4, r0
- strb r4, [r1, 0x3]
- ldr r0, =gUnknown_085B22A0
- movs r1, 0x78
- movs r2, 0x50
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r9
- strh r6, [r1, 0x2E]
- movs r0, 0x2D
- strh r0, [r1, 0x30]
- ldr r0, =gUnknown_085B22B8
- movs r1, 0x78
- movs r2, 0x50
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r9
- strh r6, [r1, 0x2E]
- movs r0, 0x5A
- strh r0, [r1, 0x30]
- bl sub_813498C
- ldr r2, =gText_Confirm3
- movs r0, 0x1
- str r0, [sp]
- mov r1, r8
- str r1, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0
- bl PrintTextOnWindow
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end Cb2_StartWallClock
-
- thumb_func_start Cb2_ViewWallClock
-Cb2_ViewWallClock: @ 8134B44
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- bl LoadWallClockGraphics
- ldr r0, =gUnknown_08DCC908
- ldr r1, =0x06003800
- bl LZ77UnCompVram
- ldr r0, =sub_8134F10
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r7, r0, 24
- adds r0, r7, 0
- bl sub_8135130
- ldr r1, =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- movs r1, 0x12
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _08134B9C
- movs r2, 0x2D
- mov r10, r2
- movs r0, 0x5A
- str r0, [sp, 0xC]
- b _08134BA4
- .pool
-_08134B9C:
- movs r1, 0x5A
- mov r10, r1
- movs r2, 0x87
- str r2, [sp, 0xC]
-_08134BA4:
- ldr r0, =gUnknown_085B2250
- movs r1, 0x78
- movs r2, 0x50
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r6, =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- movs r0, 0
- mov r9, r0
- strh r7, [r1, 0x2E]
- ldrb r2, [r1, 0x1]
- movs r5, 0x4
- negs r5, r5
- adds r0, r5, 0
- ands r0, r2
- movs r2, 0x1
- mov r8, r2
- mov r2, r8
- orrs r0, r2
- strb r0, [r1, 0x1]
- ldrb r2, [r1, 0x3]
- movs r4, 0x3F
- negs r4, r4
- adds r0, r4, 0
- ands r0, r2
- strb r0, [r1, 0x3]
- ldr r0, =gUnknown_085B2268
- movs r1, 0x78
- movs r2, 0x50
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- strh r7, [r1, 0x2E]
- ldrb r0, [r1, 0x1]
- ands r5, r0
- mov r0, r8
- orrs r5, r0
- strb r5, [r1, 0x1]
- ldrb r0, [r1, 0x3]
- ands r4, r0
- movs r0, 0x2
- orrs r4, r0
- strb r4, [r1, 0x3]
- ldr r0, =gUnknown_085B22A0
- movs r1, 0x78
- movs r2, 0x50
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- strh r7, [r1, 0x2E]
- mov r2, r10
- strh r2, [r1, 0x30]
- ldr r0, =gUnknown_085B22B8
- movs r1, 0x78
- movs r2, 0x50
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- strh r7, [r1, 0x2E]
- mov r0, sp
- ldrh r0, [r0, 0xC]
- strh r0, [r1, 0x30]
- bl sub_813498C
- ldr r2, =gText_Cancel4
- movs r0, 0x1
- str r0, [sp]
- mov r1, r9
- str r1, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0
- bl PrintTextOnWindow
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0x2
- bl schedule_bg_copy_tilemap_to_vram
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end Cb2_ViewWallClock
-
- thumb_func_start sub_8134C9C
-sub_8134C9C: @ 8134C9C
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl do_scheduled_bg_tilemap_copies_to_vram
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_8134C9C
-
- thumb_func_start sub_8134CB8
-sub_8134CB8: @ 8134CB8
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08134CD8
- ldr r0, =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_8134CE8
- str r0, [r1]
-_08134CD8:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8134CB8
-
- thumb_func_start sub_8134CE8
-sub_8134CE8: @ 8134CE8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r5, r0, r1
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- movs r1, 0x6
- bl __modsi3
- lsls r0, 16
- cmp r0, 0
- beq _08134D1C
- ldrh r0, [r5, 0x8]
- ldrb r1, [r5, 0x10]
- ldrb r2, [r5, 0x14]
- bl sub_8134FFC
- strh r0, [r5, 0x8]
- b _08134DBE
- .pool
-_08134D1C:
- movs r2, 0xE
- ldrsh r1, [r5, r2]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 1
- strh r0, [r5, 0x8]
- movs r3, 0xC
- ldrsh r0, [r5, r3]
- movs r1, 0xC
- bl __modsi3
- lsls r0, 16
- asrs r0, 16
- lsls r4, r0, 4
- subs r4, r0
- lsls r4, 1
- movs r1, 0xE
- ldrsh r0, [r5, r1]
- movs r1, 0xA
- bl __divsi3
- lsls r0, 16
- asrs r0, 16
- lsls r1, r0, 2
- adds r1, r0
- adds r4, r1
- strh r4, [r5, 0xA]
- ldr r2, =gMain
- ldrh r0, [r2, 0x2E]
- movs r3, 0x1
- adds r1, r3, 0
- ands r1, r0
- cmp r1, 0
- beq _08134D70
- ldr r0, =sub_8134DC4
- str r0, [r5]
- b _08134DBE
- .pool
-_08134D70:
- strh r1, [r5, 0x10]
- ldrh r1, [r2, 0x2C]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _08134D7E
- strh r3, [r5, 0x10]
-_08134D7E:
- ldrh r1, [r2, 0x2C]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08134D8C
- movs r0, 0x2
- strh r0, [r5, 0x10]
-_08134D8C:
- ldrh r1, [r5, 0x10]
- movs r2, 0x10
- ldrsh r0, [r5, r2]
- cmp r0, 0
- beq _08134DBC
- ldrh r2, [r5, 0x14]
- movs r3, 0x14
- ldrsh r0, [r5, r3]
- cmp r0, 0xFE
- bgt _08134DA4
- adds r0, r2, 0x1
- strh r0, [r5, 0x14]
-_08134DA4:
- ldrh r0, [r5, 0x8]
- lsls r1, 24
- lsrs r1, 24
- ldrb r2, [r5, 0x14]
- bl sub_8134FFC
- strh r0, [r5, 0x8]
- ldrb r1, [r5, 0x10]
- adds r0, r6, 0
- bl sub_813504C
- b _08134DBE
-_08134DBC:
- strh r0, [r5, 0x14]
-_08134DBE:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8134CE8
-
- thumb_func_start sub_8134DC4
-sub_8134DC4: @ 8134DC4
- push {r4,r5,lr}
- sub sp, 0xC
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r5, 0x94
- lsls r5, 2
- movs r0, 0
- movs r1, 0
- adds r2, r5, 0
- movs r3, 0xD
- bl SetWindowBorderStyle
- ldr r2, =gText_IsThisTheCorrectTime
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0
- bl PrintTextOnWindow
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0
- bl schedule_bg_copy_tilemap_to_vram
- ldr r0, =gUnknown_085B21F4
- adds r1, r5, 0
- movs r2, 0xD
- movs r3, 0x1
- bl CreateYesNoMenu
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =c3_80BF560
- str r1, [r0]
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8134DC4
-
- thumb_func_start c3_80BF560
-c3_80BF560: @ 8134E30
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_8198C58
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _08134E56
- cmp r1, 0
- bgt _08134E50
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _08134E74
- b _08134E96
-_08134E50:
- cmp r1, 0x1
- beq _08134E74
- b _08134E96
-_08134E56:
- movs r0, 0x5
- bl PlaySE
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_8134EA4
- b _08134E94
- .pool
-_08134E74:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- movs r1, 0
- bl sub_8198070
- movs r0, 0
- bl ClearWindowTilemap
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_8134CE8
-_08134E94:
- str r0, [r1]
-_08134E96:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end c3_80BF560
-
- thumb_func_start sub_8134EA4
-sub_8134EA4: @ 8134EA4
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- movs r2, 0xE
- ldrsh r1, [r4, r2]
- bl RtcInitLocalTimeOffset
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, =c2_080111BC
- str r0, [r4]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8134EA4
-
- thumb_func_start c2_080111BC
-c2_080111BC: @ 8134EE8
- push {lr}
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08134F02
- bl FreeAllWindowBuffers
- ldr r0, =gMain
- ldr r0, [r0, 0x8]
- bl SetMainCallback2
-_08134F02:
- pop {r0}
- bx r0
- .pool
- thumb_func_end c2_080111BC
-
- thumb_func_start sub_8134F10
-sub_8134F10: @ 8134F10
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08134F30
- ldr r0, =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_8134F40
- str r0, [r1]
-_08134F30:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8134F10
-
- thumb_func_start sub_8134F40
-sub_8134F40: @ 8134F40
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl sub_8135130
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _08134F66
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_8134F78
- str r0, [r1]
-_08134F66:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8134F40
-
- thumb_func_start sub_8134F78
-sub_8134F78: @ 8134F78
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, =sub_8134FB0
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8134F78
-
- thumb_func_start sub_8134FB0
-sub_8134FB0: @ 8134FB0
- push {lr}
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08134FC6
- ldr r0, =gMain
- ldr r0, [r0, 0x8]
- bl SetMainCallback2
-_08134FC6:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8134FB0
-
- thumb_func_start sub_8134FD4
-sub_8134FD4: @ 8134FD4
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- adds r1, r0, 0
- cmp r0, 0x3C
- bls _08134FE4
- movs r0, 0x6
- b _08134FF6
-_08134FE4:
- cmp r0, 0x1E
- bls _08134FEC
- movs r0, 0x3
- b _08134FF6
-_08134FEC:
- cmp r1, 0xA
- bhi _08134FF4
- movs r0, 0x1
- b _08134FF6
-_08134FF4:
- movs r0, 0x2
-_08134FF6:
- pop {r1}
- bx r1
- thumb_func_end sub_8134FD4
-
- thumb_func_start sub_8134FFC
-sub_8134FFC: @ 8134FFC
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- lsls r1, 24
- lsrs r5, r1, 24
- lsls r2, 24
- lsrs r2, 24
- adds r0, r2, 0
- bl sub_8134FD4
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r5, 0x1
- beq _0813501E
- cmp r5, 0x2
- beq _08135030
- b _08135044
-_0813501E:
- cmp r4, 0
- beq _08135026
- subs r0, r4, r1
- b _0813503C
-_08135026:
- movs r2, 0xB4
- lsls r2, 1
- adds r0, r2, 0
- subs r0, r1
- b _0813503C
-_08135030:
- movs r0, 0xB4
- lsls r0, 1
- subs r0, r1
- cmp r4, r0
- bge _08135042
- adds r0, r4, r1
-_0813503C:
- lsls r0, 16
- lsrs r4, r0, 16
- b _08135044
-_08135042:
- movs r4, 0
-_08135044:
- adds r0, r4, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8134FFC
-
- thumb_func_start sub_813504C
-sub_813504C: @ 813504C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r1, 24
- lsrs r4, r1, 24
- cmp r4, 0x1
- beq _08135060
- cmp r4, 0x2
- beq _081350A0
- b _081350DE
-_08135060:
- ldr r0, =gTasks
- lsls r1, r3, 2
- adds r1, r3
- lsls r1, 3
- adds r1, r0
- ldrh r2, [r1, 0xE]
- movs r5, 0xE
- ldrsh r0, [r1, r5]
- cmp r0, 0
- ble _08135080
- subs r0, r2, 0x1
- strh r0, [r1, 0xE]
- b _081350DE
- .pool
-_08135080:
- movs r0, 0x3B
- strh r0, [r1, 0xE]
- ldrh r2, [r1, 0xC]
- movs r6, 0xC
- ldrsh r0, [r1, r6]
- cmp r0, 0
- ble _08135092
- subs r0, r2, 0x1
- b _08135094
-_08135092:
- movs r0, 0x17
-_08135094:
- strh r0, [r1, 0xC]
- adds r0, r3, 0
- adds r1, r4, 0
- bl sub_81350E8
- b _081350DE
-_081350A0:
- ldr r0, =gTasks
- lsls r1, r3, 2
- adds r1, r3
- lsls r1, 3
- adds r1, r0
- ldrh r2, [r1, 0xE]
- movs r5, 0xE
- ldrsh r0, [r1, r5]
- cmp r0, 0x3A
- bgt _081350C0
- adds r0, r2, 0x1
- strh r0, [r1, 0xE]
- b _081350DE
- .pool
-_081350C0:
- movs r5, 0
- strh r5, [r1, 0xE]
- ldrh r2, [r1, 0xC]
- movs r6, 0xC
- ldrsh r0, [r1, r6]
- cmp r0, 0x16
- bgt _081350D4
- adds r0, r2, 0x1
- strh r0, [r1, 0xC]
- b _081350D6
-_081350D4:
- strh r5, [r1, 0xC]
-_081350D6:
- adds r0, r3, 0
- adds r1, r4, 0
- bl sub_81350E8
-_081350DE:
- movs r0, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_813504C
-
- thumb_func_start sub_81350E8
-sub_81350E8: @ 81350E8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r3, r1, 24
- ldr r2, =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrb r0, [r1, 0xC]
- cmp r3, 0x1
- beq _0813510C
- cmp r3, 0x2
- beq _0813511E
- b _0813512A
- .pool
-_0813510C:
- cmp r0, 0xB
- beq _08135116
- cmp r0, 0x17
- beq _0813511A
- b _0813512A
-_08135116:
- movs r0, 0
- b _08135128
-_0813511A:
- strh r3, [r1, 0x12]
- b _0813512A
-_0813511E:
- cmp r0, 0
- beq _08135128
- cmp r0, 0xC
- bne _0813512A
- movs r0, 0x1
-_08135128:
- strh r0, [r1, 0x12]
-_0813512A:
- pop {r0}
- bx r0
- thumb_func_end sub_81350E8
-
- thumb_func_start sub_8135130
-sub_8135130: @ 8135130
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl RtcCalcLocalTime
- ldr r1, =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r6, r0, r1
- ldr r5, =gLocalTime
- movs r0, 0x2
- ldrsb r0, [r5, r0]
- strh r0, [r6, 0xC]
- movs r0, 0x3
- ldrsb r0, [r5, r0]
- strh r0, [r6, 0xE]
- movs r0, 0xE
- ldrsh r1, [r6, r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 1
- strh r0, [r6, 0x8]
- movs r1, 0xC
- ldrsh r0, [r6, r1]
- movs r1, 0xC
- bl __modsi3
- lsls r0, 16
- asrs r0, 16
- lsls r4, r0, 4
- subs r4, r0
- lsls r4, 1
- movs r1, 0xE
- ldrsh r0, [r6, r1]
- movs r1, 0xA
- bl __divsi3
- lsls r0, 16
- asrs r0, 16
- lsls r1, r0, 2
- adds r1, r0
- adds r4, r1
- strh r4, [r6, 0xA]
- movs r0, 0x2
- ldrsb r0, [r5, r0]
- cmp r0, 0xB
- bgt _081351A0
- movs r0, 0
- b _081351A2
- .pool
-_081351A0:
- movs r0, 0x1
-_081351A2:
- strh r0, [r6, 0x12]
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8135130
-
- thumb_func_start sub_81351AC
-sub_81351AC: @ 81351AC
- push {r4-r7,lr}
- sub sp, 0x4
- adds r6, r0, 0
- ldr r2, =gTasks
- movs r0, 0x2E
- ldrsh r1, [r6, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrh r4, [r0, 0x8]
- adds r7, r4, 0
- adds r0, r4, 0
- bl Sin2
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _081351D4
- adds r0, 0xF
-_081351D4:
- lsls r0, 12
- lsrs r5, r0, 16
- adds r0, r4, 0
- bl Cos2
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _081351E8
- adds r0, 0xF
-_081351E8:
- lsls r1, r0, 12
- lsrs r1, 16
- lsls r3, r5, 16
- lsrs r2, r3, 16
- negs r3, r3
- lsrs r3, 16
- str r1, [sp]
- movs r0, 0
- bl SetOamMatrix
- ldr r1, =gUnknown_085B22D0
- lsls r2, r7, 1
- adds r0, r2, r1
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 16
- lsrs r3, r0, 16
- adds r1, 0x1
- adds r2, r1
- movs r0, 0
- ldrsb r0, [r2, r0]
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r3, 0x80
- bls _08135224
- movs r1, 0xFF
- lsls r1, 8
- adds r0, r1, 0
- orrs r3, r0
-_08135224:
- cmp r2, 0x80
- bls _08135230
- movs r1, 0xFF
- lsls r1, 8
- adds r0, r1, 0
- orrs r2, r0
-_08135230:
- strh r3, [r6, 0x24]
- strh r2, [r6, 0x26]
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81351AC
-
- thumb_func_start sub_8135244
-sub_8135244: @ 8135244
- push {r4-r7,lr}
- sub sp, 0x4
- adds r6, r0, 0
- ldr r2, =gTasks
- movs r0, 0x2E
- ldrsh r1, [r6, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrh r4, [r0, 0xA]
- adds r7, r4, 0
- adds r0, r4, 0
- bl Sin2
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _0813526C
- adds r0, 0xF
-_0813526C:
- lsls r0, 12
- lsrs r5, r0, 16
- adds r0, r4, 0
- bl Cos2
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _08135280
- adds r0, 0xF
-_08135280:
- lsls r1, r0, 12
- lsrs r1, 16
- lsls r3, r5, 16
- lsrs r2, r3, 16
- negs r3, r3
- lsrs r3, 16
- str r1, [sp]
- movs r0, 0x1
- bl SetOamMatrix
- ldr r1, =gUnknown_085B22D0
- lsls r2, r7, 1
- adds r0, r2, r1
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 16
- lsrs r3, r0, 16
- adds r1, 0x1
- adds r2, r1
- movs r0, 0
- ldrsb r0, [r2, r0]
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r3, 0x80
- bls _081352BC
- movs r1, 0xFF
- lsls r1, 8
- adds r0, r1, 0
- orrs r3, r0
-_081352BC:
- cmp r2, 0x80
- bls _081352C8
- movs r1, 0xFF
- lsls r1, 8
- adds r0, r1, 0
- orrs r2, r0
-_081352C8:
- strh r3, [r6, 0x24]
- strh r2, [r6, 0x26]
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8135244
-
- thumb_func_start sub_81352DC
-sub_81352DC: @ 81352DC
- push {r4,lr}
- adds r4, r0, 0
- ldr r2, =gTasks
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- movs r1, 0x12
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _0813531C
- ldrh r1, [r4, 0x30]
- adds r0, r1, 0
- subs r0, 0x3C
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1D
- bhi _08135308
- adds r0, r1, 0x5
- strh r0, [r4, 0x30]
-_08135308:
- ldrh r1, [r4, 0x30]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- cmp r0, 0x3B
- bgt _0813533C
- adds r0, r1, 0x1
- b _0813533A
- .pool
-_0813531C:
- ldrh r1, [r4, 0x30]
- adds r0, r1, 0
- subs r0, 0x2E
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1D
- bhi _0813532E
- subs r0, r1, 0x5
- strh r0, [r4, 0x30]
-_0813532E:
- ldrh r1, [r4, 0x30]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- cmp r0, 0x4B
- ble _0813533C
- subs r0, r1, 0x1
-_0813533A:
- strh r0, [r4, 0x30]
-_0813533C:
- ldrh r0, [r4, 0x30]
- bl Cos2
- lsls r0, 16
- asrs r0, 16
- lsls r1, r0, 4
- subs r1, r0
- lsls r0, r1, 1
- cmp r0, 0
- bge _08135354
- ldr r1, =0x00000fff
- adds r0, r1
-_08135354:
- asrs r0, 12
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x30]
- bl Sin2
- lsls r0, 16
- asrs r0, 16
- lsls r1, r0, 4
- subs r1, r0
- lsls r0, r1, 1
- cmp r0, 0
- bge _08135370
- ldr r2, =0x00000fff
- adds r0, r2
-_08135370:
- asrs r0, 12
- strh r0, [r4, 0x26]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_81352DC
-
- thumb_func_start sub_8135380
-sub_8135380: @ 8135380
- push {r4,lr}
- adds r4, r0, 0
- ldr r2, =gTasks
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- movs r1, 0x12
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _081353C0
- ldrh r1, [r4, 0x30]
- adds r0, r1, 0
- subs r0, 0x69
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1D
- bhi _081353AC
- adds r0, r1, 0x5
- strh r0, [r4, 0x30]
-_081353AC:
- ldrh r1, [r4, 0x30]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- cmp r0, 0x68
- bgt _081353E0
- adds r0, r1, 0x1
- b _081353DE
- .pool
-_081353C0:
- ldrh r1, [r4, 0x30]
- adds r0, r1, 0
- subs r0, 0x5B
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1D
- bhi _081353D2
- subs r0, r1, 0x5
- strh r0, [r4, 0x30]
-_081353D2:
- ldrh r1, [r4, 0x30]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- cmp r0, 0x78
- ble _081353E0
- subs r0, r1, 0x1
-_081353DE:
- strh r0, [r4, 0x30]
-_081353E0:
- ldrh r0, [r4, 0x30]
- bl Cos2
- lsls r0, 16
- asrs r0, 16
- lsls r1, r0, 4
- subs r1, r0
- lsls r0, r1, 1
- cmp r0, 0
- bge _081353F8
- ldr r1, =0x00000fff
- adds r0, r1
-_081353F8:
- asrs r0, 12
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x30]
- bl Sin2
- lsls r0, 16
- asrs r0, 16
- lsls r1, r0, 4
- subs r1, r0
- lsls r0, r1, 1
- cmp r0, 0
- bge _08135414
- ldr r2, =0x00000fff
- adds r0, r2
-_08135414:
- asrs r0, 12
- strh r0, [r4, 0x26]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8135380
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asmdiff.sh b/asmdiff.sh
index 1d2141c32..1d2141c32 100644..100755
--- a/asmdiff.sh
+++ b/asmdiff.sh
diff --git a/constants/ability_constants.inc b/constants/ability_constants.inc
deleted file mode 100644
index 8ccc872f7..000000000
--- a/constants/ability_constants.inc
+++ /dev/null
@@ -1,78 +0,0 @@
- .set ABILITY_NONE, 0x00
- .set ABILITY_STENCH, 0x01
- .set ABILITY_DRIZZLE, 0x02
- .set ABILITY_SPEED_BOOST, 0x03
- .set ABILITY_BATTLE_ARMOR, 0x04
- .set ABILITY_STURDY, 0x05
- .set ABILITY_DAMP, 0x06
- .set ABILITY_LIMBER, 0x07
- .set ABILITY_SAND_VEIL, 0x08
- .set ABILITY_STATIC, 0x09
- .set ABILITY_VOLT_ABSORB, 0x0a
- .set ABILITY_WATER_ABSORB, 0x0b
- .set ABILITY_OBLIVIOUS, 0x0c
- .set ABILITY_CLOUD_NINE, 0x0d
- .set ABILITY_COMPOUND_EYES, 0x0e
- .set ABILITY_INSOMNIA, 0x0f
- .set ABILITY_COLOR_CHANGE, 0x10
- .set ABILITY_IMMUNITY, 0x11
- .set ABILITY_FLASH_FIRE, 0x12
- .set ABILITY_SHIELD_DUST, 0x13
- .set ABILITY_OWN_TEMPO, 0x14
- .set ABILITY_SUCTION_CUPS, 0x15
- .set ABILITY_INTIMIDATE, 0x16
- .set ABILITY_SHADOW_TAG, 0x17
- .set ABILITY_ROUGH_SKIN, 0x18
- .set ABILITY_WONDER_GUARD, 0x19
- .set ABILITY_LEVITATE, 0x1a
- .set ABILITY_EFFECT_SPORE, 0x1b
- .set ABILITY_SYNCHRONIZE, 0x1c
- .set ABILITY_CLEAR_BODY, 0x1d
- .set ABILITY_NATURAL_CURE, 0x1e
- .set ABILITY_LIGHTNING_ROD, 0x1f
- .set ABILITY_SERENE_GRACE, 0x20
- .set ABILITY_SWIFT_SWIM, 0x21
- .set ABILITY_CHLOROPHYLL, 0x22
- .set ABILITY_ILLUMINATE, 0x23
- .set ABILITY_TRACE, 0x24
- .set ABILITY_HUGE_POWER, 0x25
- .set ABILITY_POISON_POINT, 0x26
- .set ABILITY_INNER_FOCUS, 0x27
- .set ABILITY_MAGMA_ARMOR, 0x28
- .set ABILITY_WATER_VEIL, 0x29
- .set ABILITY_MAGNET_PULL, 0x2a
- .set ABILITY_SOUNDPROOF, 0x2b
- .set ABILITY_RAIN_DISH, 0x2c
- .set ABILITY_SAND_STREAM, 0x2d
- .set ABILITY_PRESSURE, 0x2e
- .set ABILITY_THICK_FAT, 0x2f
- .set ABILITY_EARLY_BIRD, 0x30
- .set ABILITY_FLAME_BODY, 0x31
- .set ABILITY_RUN_AWAY, 0x32
- .set ABILITY_KEEN_EYE, 0x33
- .set ABILITY_HYPER_CUTTER, 0x34
- .set ABILITY_PICKUP, 0x35
- .set ABILITY_TRUANT, 0x36
- .set ABILITY_HUSTLE, 0x37
- .set ABILITY_CUTE_CHARM, 0x38
- .set ABILITY_PLUS, 0x39
- .set ABILITY_MINUS, 0x3a
- .set ABILITY_FORECAST, 0x3b
- .set ABILITY_STICKY_HOLD, 0x3c
- .set ABILITY_SHED_SKIN, 0x3d
- .set ABILITY_GUTS, 0x3e
- .set ABILITY_MARVEL_SCALE, 0x3f
- .set ABILITY_LIQUID_OOZE, 0x40
- .set ABILITY_OVERGROW, 0x41
- .set ABILITY_BLAZE, 0x42
- .set ABILITY_TORRENT, 0x43
- .set ABILITY_SWARM, 0x44
- .set ABILITY_ROCK_HEAD, 0x45
- .set ABILITY_DROUGHT, 0x46
- .set ABILITY_ARENA_TRAP, 0x47
- .set ABILITY_VITAL_SPIRIT, 0x48
- .set ABILITY_WHITE_SMOKE, 0x49
- .set ABILITY_PURE_POWER, 0x4a
- .set ABILITY_SHELL_ARMOR, 0x4b
- .set ABILITY_CACOPHONY, 0x4c
- .set ABILITY_AIR_LOCK, 0x4d
diff --git a/constants/battle_constants.inc b/constants/battle_constants.inc
new file mode 100644
index 000000000..7309d68cd
--- /dev/null
+++ b/constants/battle_constants.inc
@@ -0,0 +1,170 @@
+@ battle types
+ .set BATTLE_TYPE_DOUBLE , 0x0001
+ .set BATTLE_TYPE_LINK, 0x0002
+ .set BATTLE_TYPE_WILD, 0x0004
+ .set BATTLE_TYPE_TRAINER, 0x0008
+ .set BATTLE_TYPE_FIRST_BATTLE, 0x0010
+ .set BATTLE_TYPE_20, 0x0020
+ .set BATTLE_TYPE_MULTI, 0x0040
+ .set BATTLE_TYPE_SAFARI, 0x0080
+ .set BATTLE_TYPE_BATTLE_TOWER, 0x0100
+ .set BATTLE_TYPE_WALLY_TUTORIAL, 0x0200
+ .set BATTLE_TYPE_ROAMER, 0x0400
+ .set BATTLE_TYPE_EREADER_TRAINER, 0x0800
+ .set BATTLE_TYPE_KYOGRE_GROUDON, 0x1000
+ .set BATTLE_TYPE_LEGENDARY, 0x2000
+ .set BATTLE_TYPE_REGI, 0x4000
+ .set BATTLE_TYPE_TWO_OPPONENTS, 0x8000
+ .set BATTLE_TYPE_DOME, 0x10000
+ .set BATTLE_TYPE_PALACE, 0x20000
+ .set BATTLE_TYPE_ARENA, 0x40000
+ .set BATTLE_TYPE_FACTORY, 0x80000
+ .set BATTLE_TYPE_PIKE, 0x100000
+ .set BATTLE_TYPE_PYRAMID, 0x200000
+ .set BATTLE_TYPE_INGAME_PARTNER, 0x400000
+ .set BATTLE_TYPE_x800000, 0x800000
+ .set BATTLE_TYPE_RECORDED, 0x1000000
+ .set BATTLE_TYPE_x2000000, 0x2000000
+ .set BATTLE_TYPE_x4000000, 0x4000000
+ .set BATTLE_TYPE_SECRET_BASE, 0x8000000
+ .set BATTLE_TYPE_GROUDON, 0x10000000
+ .set BATTLE_TYPE_KYOGRE, 0x20000000
+ .set BATTLE_TYPE_RAYQUAZA, 0x40000000
+ .set BATTLE_TYPE_x80000000, 0x80000000
+
+@ battle outcomes
+ .set WON, 0x1
+ .set LOST, 0x2
+ .set DREW, 0x3
+ .set RAN, 0x4
+ .set PLAYER_TELEPORTED, 0x5
+ .set MON_FLED, 0x6
+ .set CAUGHT, 0x7
+ .set OUT_OF_BALLS, 0x8
+ .set FORFEITED, 0x9
+ .set OPPONENT_TELEPORTED, 0xA
+
+@ identities
+ .set IDENTITY_PLAYER_MON1, 0
+ .set IDENTITY_OPPONENT_MON1, 1
+ .set IDENTITY_PLAYER_MON2, 2
+ .set IDENTITY_OPPONENT_MON2, 3
+
+@ status 1
+ .set STATUS_SLEEP, 0x7
+ .set STATUS_POISON, 0x8
+ .set STATUS_BURN, 0x10
+ .set STATUS_FREEZE, 0x20
+ .set STATUS_PARALYSIS, 0x40
+ .set STATUS_TOXIC_POISON, 0x80
+ .set STATUS_TOXIC_COUNTER, 0xF00
+
+ .set STATUS_ANY, STATUS_SLEEP | STATUS_POISON | STATUS_BURN | STATUS_FREEZE | STATUS_PARALYSIS | STATUS_TOXIC_POISON
+
+@ status 2
+ .set STATUS2_CONFUSION, 0x00000007
+ .set STATUS2_FLINCHED, 0x00000008
+ .set STATUS2_UPROAR, 0x00000070
+ .set STATUS2_BIDE, 0x00000300
+ .set STATUS2_LOCK_CONFUSE, 0x00000C00
+ .set STATUS2_MULTIPLETURNS, 0x00001000
+ .set STATUS2_WRAPPED, 0x0000E000
+ .set STATUS2_INFATUATION, 0x000F0000
+ .set STATUS2_FOCUS_ENERGY, 0x00100000
+ .set STATUS2_TRANSFORMED, 0x00200000
+ .set STATUS2_RECHARGE, 0x00400000
+ .set STATUS2_RAGE, 0x00800000
+ .set STATUS2_SUBSTITUTE, 0x01000000
+ .set STATUS2_DESTINY_BOND, 0x02000000
+ .set STATUS2_ESCAPE_PREVENTION, 0x04000000
+ .set STATUS2_NIGHTMARE, 0x08000000
+ .set STATUS2_CURSED, 0x10000000
+ .set STATUS2_FORESIGHT, 0x20000000
+ .set STATUS2_DEFENSE_CURL, 0x40000000
+ .set STATUS2_TORMENT, 0x80000000
+
+@ status 3
+ .set STATUS3_LEECHSEED_BANK, 0x3
+ .set STATUS3_LEECHSEED, 0x4
+ .set STATUS3_ALWAYS_HITS, 0x18
+ .set STATUS3_PERISH_SONG, 0x20
+ .set STATUS3_ON_AIR, 0x40
+ .set STATUS3_UNDERGROUND, 0x80
+ .set STATUS3_MINIMIZED, 0x100
+ .set STATUS3_ROOTED, 0x400
+ .set STATUS3_CHARGED_UP, 0x200
+ .set STATUS3_YAWN, 0x1800
+ .set STATUS3_IMPRISONED_OTHERS, 0x2000
+ .set STATUS3_GRUDGE, 0x4000
+ .set STATUS3_CANT_SCORE_A_CRIT, 0x8000
+ .set STATUS3_MUDSPORT, 0x10000
+ .set STATUS3_WATERSPORT, 0x20000
+ .set STATUS3_UNDERWATER, 0x40000
+ .set STATUS3_INTIMIDATE_POKES, 0x80000
+ .set STATUS3_TRACE, 0x100000
+
+@ side status
+ .set SIDE_STATUS_REFLECT, 0x1
+ .set SIDE_STATUS_LIGHTSCREEN, 0x2
+ .set SIDE_STATUS_X4, 0x4
+ .set SIDE_STATUS_SPIKES, 0x10
+ .set SIDE_STATUS_SAFEGUARD, 0x20
+ .set SIDE_STATUS_FUTUREATTACK, 0x40
+ .set SIDE_STATUS_MIST, 0x100
+ .set SIDE_STATUS_SPIKES_DAMAGED, 0x200
+
+@ stats
+ .set HP, 0x0
+ .set ATK, 0x1
+ .set DEF, 0x2
+ .set SPEED, 0x3
+ .set SPATK, 0x4
+ .set SPDEF, 0x5
+ .set ACC, 0x6
+ .set EVASION, 0x7
+
+@ weather flags
+ .set WEATHER_RAIN_TEMPORARY, 0x01
+ .set WEATHER_RAIN_DOWNPOUR, 0x02
+ .set WEATHER_RAIN_PERMANENT, 0x04
+ .set WEATHER_SANDSTORM_TEMPORARY, 0x08
+ .set WEATHER_SANDSTORM_PERMANENT, 0x10
+ .set WEATHER_SUN_TEMPORARY, 0x20
+ .set WEATHER_SUN_PERMANENT, 0x40
+ .set WEATHER_HAIL, 0x80
+
+@ hitmarker
+ .set HITMARKER_x10, 0x00000010
+ .set HITMARKER_x20, 0x00000020
+ .set HITMARKER_DESTINYBOND, 0x00000040
+ .set HITMARKER_NO_ANIMATIONS, 0x00000080
+ .set HITMARKER_IGNORE_SUBSTITUTE, 0x00000100
+ .set HITMARKER_NO_ATTACKSTRING, 0x00000200
+ .set HITMARKER_ATTACKSTRING_PRINTED, 0x00000400
+ .set HITMARKER_NO_PPDEDUCT, 0x00000800
+ .set HITMARKER_PURSUIT_TRAP, 0x00001000
+ .set HITMARKER_IGNORE_SAFEGUARD, 0x00002000
+ .set HITMARKER_SYNCHRONISE_EFFECT, 0x00004000
+ .set HITMARKER_RUN, 0x00008000
+ .set HITMARKER_IGNORE_ON_AIR, 0x00010000
+ .set HITMARKER_IGNORE_UNDERGROUND, 0x00020000
+ .set HITMARKER_IGNORE_UNDERWATER, 0x00040000
+ .set HITMARKER_UNABLE_TO_USE_MOVE, 0x00080000
+ .set HITMARKER_x100000, 0x00100000
+ .set HITMARKER_x200000, 0x00200000
+ .set HITMARKER_x400000, 0x00400000
+ .set HITMARKER_x800000, 0x00800000
+ .set HITMARKER_GRUDGE, 0x01000000
+ .set HITMARKER_OBEYS, 0x02000000
+ .set HITMARKER_x4000000, 0x04000000
+ .set HITMARKER_x8000000, 0x08000000
+
+@ move flags
+ .set MOVESTATUS_MISSED, 0x1
+ .set MOVESTATUS_SUPEREFFECTIVE, 0x2
+ .set MOVESTATUS_NOTVERYEFFECTIVE, 0x4
+ .set MOVESTATUS_NOTAFFECTED, 0x8
+ .set MOVESTATUS_ONEHITKO, 0x10
+ .set MOVESTATUS_FAILED, 0x20
+ .set MOVESTATUS_ENDURED, 0x40
+ .set MOVESTATUS_HUNGON, 0x80
diff --git a/constants/battle_script_constants.inc b/constants/battle_script_constants.inc
new file mode 100644
index 000000000..fe0e7dddc
--- /dev/null
+++ b/constants/battle_script_constants.inc
@@ -0,0 +1,169 @@
+@ animation ids
+ .set ANIM_CASTFORM_CHANGE, 0x0
+ .set ANIM_STATS_CHANGE, 0x1
+ .set ANIM_SUBSTITUTE_FADE, 0x2
+ .set ANIM_SUBSTITUTE_APPEAR, 0x3
+ .set ANIM_x4, 0x4
+ .set ANIM_ITEM_KNOCKOFF, 0x5
+ .set ANIM_TURN_TRAP, 0x6
+ .set ANIM_ITEM_EFFECT, 0x7
+ .set ANIM_SMOKEBALL_ESCAPE, 0x8
+ .set ANIM_HANGED_ON, 0x9
+ .set ANIM_RAIN_CONTINUES, 0xA
+ .set ANIM_SUN_CONTINUES, 0xB
+ .set ANIM_SANDSTORM_CONTINUES, 0xC
+ .set ANIM_HAIL_CONTINUES, 0xD
+ .set ANIM_LEECH_SEED_DRAIN, 0xE
+ .set ANIM_MON_HIT, 0xF
+ .set ANIM_ITEM_STEAL, 0x10
+ .set ANIM_SNATCH_MOVE, 0x11
+ .set ANIM_FUTURE_SIGHT_HIT, 0x12
+ .set ANIM_DOOM_DESIRE_HIT, 0x13
+ .set ANIM_x14, 0x14
+ .set ANIM_INGRAIN_HEAL, 0x15
+ .set ANIM_WISH_HEAL, 0x16
+
+@ atk 80
+ .set ATK80_DMG_CHANGE_SIGN, 0x0
+ .set ATK80_DMG_HALF_BY_TWO_NOT_MORE_THAN_HALF_MAX_HP, 0x1
+ .set ATK80_DMG_DOUBLED, 0x2
+
+@ compare operands
+ .set EQUAL, 0x0
+ .set NOT_EQUAL, 0x1
+ .set GREATER_THAN, 0x2
+ .set LESS_THAN, 0x3
+ .set COMMON_BITS, 0x4
+ .set NO_COMMON_BITS, 0x5
+
+@ move effects
+ .set EFFECT_SLEEP, 0x1
+ .set EFFECT_POISON, 0x2
+ .set EFFECT_BURN, 0x3
+ .set EFFECT_FREEZE, 0x4
+ .set EFFECT_PARALYSIS, 0x5
+ .set EFFECT_TOXIC, 0x6
+ .set EFFECT_CONFUSION, 0x7
+ .set EFFECT_FLINCH, 0x8
+ .set EFFECT_TRI_ATTACK, 0x9
+ .set EFFECT_UPROAR, 0xA
+ .set EFFECT_PAYDAY, 0xB
+ .set EFFECT_CHARGING, 0xC
+ .set EFFECT_WRAP, 0xD
+ .set EFFECT_RECOIL_25, 0xE
+ .set EFFECT_ATK_PLUS_1, 0xF
+ .set EFFECT_DEF_PLUS_1, 0x10
+ .set EFFECT_SPD_PLUS_1, 0x11
+ .set EFFECT_SP_ATK_PLUS_1, 0x12
+ .set EFFECT_SP_DEF_PLUS_1, 0x13
+ .set EFFECT_ACC_PLUS_1, 0x14
+ .set EFFECT_EVS_PLUS_1, 0x15
+ .set EFFECT_ATK_MINUS_1, 0x16
+ .set EFFECT_DEF_MINUS_1, 0x17
+ .set EFFECT_SPD_MINUS_1, 0x18
+ .set EFFECT_SP_ATK_MINUS_1, 0x19
+ .set EFFECT_SP_DEF_MINUS_1, 0x1A
+ .set EFFECT_ACC_MINUS_1, 0x1B
+ .set EFFECT_EVS_MINUS_1, 0x1C
+ .set EFFECT_RECHARGE, 0x1D
+ .set EFFECT_RAGE, 0x1E
+ .set EFFECT_STEAL_ITEM, 0x1F
+ .set EFFECT_PREVENT_ESCAPE, 0x20
+ .set EFFECT_NIGHTMARE, 0x21
+ .set EFFECT_ALL_STATS_UP, 0x22
+ .set EFFECT_RAPIDSPIN, 0x23
+ .set EFFECT_REMOVE_PARALYSIS, 0x24
+ .set EFFECT_ATK_DEF_DOWN, 0x25
+ .set EFFECT_RECOIL_33_PARALYSIS, 0x26
+ .set EFFECT_ATK_PLUS_2, 0x27
+ .set EFFECT_DEF_PLUS_2, 0x28
+ .set EFFECT_SPD_PLUS_2, 0x29
+ .set EFFECT_SP_ATK_PLUS_2, 0x2A
+ .set EFFECT_SP_DEF_PLUS_2, 0x2B
+ .set EFFECT_ACC_PLUS_2, 0x2C
+ .set EFFECT_EVS_PLUS_2, 0x2D
+ .set EFFECT_ATK_MINUS_2, 0x2E
+ .set EFFECT_DEF_MINUS_2, 0x2F
+ .set EFFECT_SPD_MINUS_2, 0x30
+ .set EFFECT_SP_ATK_MINUS_2, 0x31
+ .set EFFECT_SP_DEF_MINUS_2, 0x32
+ .set EFFECT_ACC_MINUS_2, 0x33
+ .set EFFECT_EVS_MINUS_2, 0x34
+ .set EFFECT_THRASH, 0x35
+ .set EFFECT_KNOCK_OFF, 0x36
+ .set EFFECT_NOTHING_37, 0x37
+ .set EFFECT_NOTHING_38, 0x38
+ .set EFFECT_NOTHING_39, 0x39
+ .set EFFECT_NOTHING_3A, 0x3A
+ .set EFFECT_SP_ATK_TWO_DOWN, 0x3B
+ .set EFFECT_NOTHING_3C, 0x3C
+ .set EFFECT_NOTHING_3D, 0x3D
+ .set EFFECT_NOTHING_3E, 0x3E
+ .set EFFECT_NOTHING_3F, 0x3F
+
+ .set AFFECTS_USER, 0x40
+ .set CERTAIN, 0x80
+
+@ accuracy calc
+ .set NO_ACC_CALC, 0xFFFE
+ .set NO_ACC_CALC_CHECK_LOCK_ON, 0xFFFF
+ .set ACC_CURR_MOVE, 0x0
+
+@ bank values
+ .set TARGET, 0x0
+ .set ATTACKER, 0x1
+ .set EFFECT_BANK, 0x2
+ .set GBANK_1, 0x3
+ .set ATTACKER_WITH_PARTNER, 0x4 @ only for cmd98
+ .set BANK0, 0x7
+ .set SCRIPTING_BANK, 0xA
+ .set OPPONENT1, 0xC
+
+@ various
+ .set VARIOUS_CANCEL_MULTI_TURN_MOVES, 0
+ .set VARIOUS_SET_MAGIC_COAT_TARGET, 1
+ .set VARIOUS_IS_RUNNING_IMPOSSIBLE, 2
+ .set VARIOUS_GET_MOVE_TARGET, 3
+ .set VARIOUS_RESET_INTIMIDATE_TRACE_BITS, 5
+ .set VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP, 6
+ .set VARIOUS_EMIT_YESNOBOX, 13
+ .set VARIOUS_WAIT_CRY, 18
+ .set VARIOUS_RETURN_OPPONENT_MON1, 19
+ .set VARIOUS_RETURN_OPPONENT_MON2, 20
+ .set VARIOUS_SET_TELEPORT_OUTCOME, 25
+ .set VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC, 26
+
+@ jumpifcant switch flag argument
+ .set ATK4F_DONT_CHECK_STATUSES, 0x80
+
+@ battle scripting struct
+ .equiv sPAINSPLIT_HP, gBattleScripting
+ .equiv sBIDE_DMG, gBattleScripting + 4
+ .equiv sMULTIHIT_STRING, gBattleScripting + 8
+ .equiv sDMG_MULTIPLIER, gBattleScripting + 0xE
+ .equiv sTWOTURN_STRINGID, gBattleScripting + 0xF
+ .equiv sANIM_ARG1, gBattleScripting + 0x10
+ .equiv sANIM_ARG2, gBattleScripting + 0x11
+ .equiv sTRIPLE_KICK_POWER, gBattleScripting + 0x12
+ .equiv sMOVEEND_STATE, gBattleScripting + 0x14
+ .equiv sBANK_WITH_ABILITY, gBattleScripting + 0x15
+ .equiv sMULTIHIT_EFFECT, gBattleScripting + 0x16
+ .equiv sBANK, gBattleScripting + 0x17
+ .equiv sANIM_TURN, gBattleScripting + 0x18
+ .equiv sANIM_TARGETS_HIT, gBattleScripting + 0x19
+ .equiv sSTATCHANGER, gBattleScripting + 0x1A
+ .equiv sFIELD_1B, gBattleScripting + 0x1B
+ .equiv sGIVEEXP_STATE, gBattleScripting + 0x1C
+ .equiv sBATTLE_STYLE, gBattleScripting + 0x1D
+ .equiv sLVLBOX_STATE, gBattleScripting + 0x1E
+ .equiv sLEARNMOVE_STATE, gBattleScripting + 0x1F
+ .equiv sFIELD_20, gBattleScripting + 0x20
+ .equiv sRESHOW_MAIN_STATE, gBattleScripting + 0x21
+ .equiv sRESHOW_HELPER_STATE, gBattleScripting + 0x22
+ .equiv sFIELD_23, gBattleScripting + 0x23
+ .equiv sFIELD_24, gBattleScripting + 0x24
+ .equiv sMULTIPLAYER_ID, gBattleScripting + 0x25
+
+@ battle communication struct
+ .equiv cEFFECT_CHOOSER, gBattleCommunication + 3
+ .equiv cMULTISTRING_CHOOSER, gBattleCommunication + 5
diff --git a/constants/battle_text.inc b/constants/battle_text.inc
new file mode 100644
index 000000000..1d3a5f346
--- /dev/null
+++ b/constants/battle_text.inc
@@ -0,0 +1,375 @@
+ .set STRINGID_INTROMSG, 0
+ .set STRINGID_INTROSENDOUT, 1
+ .set STRINGID_RETURNMON, 2
+ .set STRINGID_SWITCHINMON, 3
+ .set STRINGID_USEDMOVE, 4
+ .set STRINGID_BATTLEEND, 5
+ .set STRINGID_TRAINER1LOSETEXT, 12
+ .set STRINGID_PKMNGAINEDEXP, 13
+ .set STRINGID_PKMNGREWTOLV, 14
+ .set STRINGID_PKMNLEARNEDMOVE, 15
+ .set STRINGID_TRYTOLEARNMOVE1, 16
+ .set STRINGID_TRYTOLEARNMOVE2, 17
+ .set STRINGID_TRYTOLEARNMOVE3, 18
+ .set STRINGID_PKMNFORGOTMOVE, 19
+ .set STRINGID_STOPLEARNINGMOVE, 20
+ .set STRINGID_DIDNOTLEARNMOVE, 21
+ .set STRINGID_PKMNLEARNEDMOVE2, 22
+ .set STRINGID_ATTACKMISSED, 23
+ .set STRINGID_PKMNPROTECTEDITSELF, 24
+ .set STRINGID_STATSWONTINCREASE2, 25
+ .set STRINGID_AVOIDEDDAMAGE, 26
+ .set STRINGID_ITDOESNTAFFECT, 27
+ .set STRINGID_ATTACKERFAINTED, 28
+ .set STRINGID_TARGETFAINTED, 29
+ .set STRINGID_PLAYERGOTMONEY, 30
+ .set STRINGID_PLAYERWHITEOUT, 31
+ .set STRINGID_PLAYERWHITEOUT2, 32
+ .set STRINGID_PREVENTSESCAPE, 33
+ .set STRINGID_HITXTIMES, 34
+ .set STRINGID_PKMNFELLASLEEP, 35
+ .set STRINGID_PKMNMADESLEEP, 36
+ .set STRINGID_PKMNALREADYASLEEP, 37
+ .set STRINGID_PKMNALREADYASLEEP2, 38
+ .set STRINGID_PKMNWASNTAFFECTED, 39
+ .set STRINGID_PKMNWASPOISONED, 40
+ .set STRINGID_PKMNPOISONEDBY, 41
+ .set STRINGID_PKMNHURTBYPOISON, 42
+ .set STRINGID_PKMNALREADYPOISONED, 43
+ .set STRINGID_PKMNBADLYPOISONED, 44
+ .set STRINGID_PKMNENERGYDRAINED, 45
+ .set STRINGID_PKMNWASBURNED, 46
+ .set STRINGID_PKMNBURNEDBY, 47
+ .set STRINGID_PKMNHURTBYBURN, 48
+ .set STRINGID_PKMNWASFROZEN, 49
+ .set STRINGID_PKMNFROZENBY, 50
+ .set STRINGID_PKMNISFROZEN, 51
+ .set STRINGID_PKMNWASDEFROSTED, 52
+ .set STRINGID_PKMNWASDEFROSTED2, 53
+ .set STRINGID_PKMNWASDEFROSTEDBY, 54
+ .set STRINGID_PKMNWASPARALYZED, 55
+ .set STRINGID_PKMNWASPARALYZEDBY, 56
+ .set STRINGID_PKMNISPARALYZED, 57
+ .set STRINGID_PKMNISALREADYPARALYZED, 58
+ .set STRINGID_PKMNHEALEDPARALYSIS, 59
+ .set STRINGID_PKMNDREAMEATEN, 60
+ .set STRINGID_STATSWONTINCREASE, 61
+ .set STRINGID_STATSWONTDECREASE, 62
+ .set STRINGID_TEAMSTOPPEDWORKING, 63
+ .set STRINGID_FOESTOPPEDWORKING, 64
+ .set STRINGID_PKMNISCONFUSED, 65
+ .set STRINGID_PKMNHEALEDCONFUSION, 66
+ .set STRINGID_PKMNWASCONFUSED, 67
+ .set STRINGID_PKMNALREADYCONFUSED, 68
+ .set STRINGID_PKMNFELLINLOVE, 69
+ .set STRINGID_PKMNINLOVE, 70
+ .set STRINGID_PKMNIMMOBILIZEDBYLOVE, 71
+ .set STRINGID_PKMNBLOWNAWAY, 72
+ .set STRINGID_PKMNCHANGEDTYPE, 73
+ .set STRINGID_PKMNFLINCHED, 74
+ .set STRINGID_PKMNREGAINEDHEALTH, 75
+ .set STRINGID_PKMNHPFULL, 76
+ .set STRINGID_PKMNRAISEDSPDEF, 77
+ .set STRINGID_PKMNRAISEDDEF, 78
+ .set STRINGID_PKMNCOVEREDBYVEIL, 79
+ .set STRINGID_PKMNUSEDSAFEGUARD, 80
+ .set STRINGID_PKMNSAFEGUARDEXPIRED, 81
+ .set STRINGID_PKMNWENTTOSLEEP, 82
+ .set STRINGID_PKMNSLEPTHEALTHY, 83
+ .set STRINGID_PKMNWHIPPEDWHIRLWIND, 84
+ .set STRINGID_PKMNTOOKSUNLIGHT, 85
+ .set STRINGID_PKMNLOWEREDHEAD, 86
+ .set STRINGID_PKMNISGLOWING, 87
+ .set STRINGID_PKMNFLEWHIGH, 88
+ .set STRINGID_PKMNDUGHOLE, 89
+ .set STRINGID_PKMNSQUEEZEDBYBIND, 90
+ .set STRINGID_PKMNTRAPPEDINVORTEX, 91
+ .set STRINGID_PKMNWRAPPEDBY, 92
+ .set STRINGID_PKMNCLAMPED, 93
+ .set STRINGID_PKMNHURTBY, 94
+ .set STRINGID_PKMNFREEDFROM, 95
+ .set STRINGID_PKMNCRASHED, 96
+ .set STRINGID_PKMNSHROUDEDINMIST, 97
+ .set STRINGID_PKMNPROTECTEDBYMIST, 98
+ .set STRINGID_PKMNGETTINGPUMPED, 99
+ .set STRINGID_PKMNHITWITHRECOIL, 100
+ .set STRINGID_PKMNPROTECTEDITSELF2, 101
+ .set STRINGID_PKMNBUFFETEDBYSANDSTORM, 102
+ .set STRINGID_PKMNPELTEDBYHAIL, 103
+ .set STRINGID_PKMNSEEDED, 104
+ .set STRINGID_PKMNEVADEDATTACK, 105
+ .set STRINGID_PKMNSAPPEDBYLEECHSEED, 106
+ .set STRINGID_PKMNFASTASLEEP, 107
+ .set STRINGID_PKMNWOKEUP, 108
+ .set STRINGID_PKMNUPROARKEPTAWAKE, 109
+ .set STRINGID_PKMNWOKEUPINUPROAR, 110
+ .set STRINGID_PKMNCAUSEDUPROAR, 111
+ .set STRINGID_PKMNMAKINGUPROAR, 112
+ .set STRINGID_PKMNCALMEDDOWN, 113
+ .set STRINGID_PKMNCANTSLEEPINUPROAR, 114
+ .set STRINGID_PKMNSTOCKPILED, 115
+ .set STRINGID_PKMNCANTSTOCKPILE, 116
+ .set STRINGID_PKMNCANTSLEEPINUPROAR2, 117
+ .set STRINGID_UPROARKEPTPKMNAWAKE, 118
+ .set STRINGID_PKMNSTAYEDAWAKEUSING, 119
+ .set STRINGID_PKMNSTORINGENERGY, 120
+ .set STRINGID_PKMNUNLEASHEDENERGY, 121
+ .set STRINGID_PKMNFATIGUECONFUSION, 122
+ .set STRINGID_PKMNPICKEDUPITEM, 123
+ .set STRINGID_PKMNUNAFFECTED, 124
+ .set STRINGID_PKMNTRANSFORMEDINTO, 125
+ .set STRINGID_PKMNMADESUBSTITUTE, 126
+ .set STRINGID_PKMNHASSUBSTITUTE, 127
+ .set STRINGID_SUBSTITUTEDAMAGED, 128
+ .set STRINGID_PKMNSUBSTITUTEFADED, 129
+ .set STRINGID_PKMNMUSTRECHARGE, 130
+ .set STRINGID_PKMNRAGEBUILDING, 131
+ .set STRINGID_PKMNMOVEWASDISABLED, 132
+ .set STRINGID_PKMNMOVEISDISABLED, 133
+ .set STRINGID_PKMNMOVEDISABLEDNOMORE, 134
+ .set STRINGID_PKMNGOTENCORE, 135
+ .set STRINGID_PKMNENCOREENDED, 136
+ .set STRINGID_PKMNTOOKAIM, 137
+ .set STRINGID_PKMNSKETCHEDMOVE, 138
+ .set STRINGID_PKMNTRYINGTOTAKEFOE, 139
+ .set STRINGID_PKMNTOOKFOE, 140
+ .set STRINGID_PKMNREDUCEDPP, 141
+ .set STRINGID_PKMNSTOLEITEM, 142
+ .set STRINGID_TARGETCANTESCAPENOW, 143
+ .set STRINGID_PKMNFELLINTONIGHTMARE, 144
+ .set STRINGID_PKMNLOCKEDINNIGHTMARE, 145
+ .set STRINGID_PKMNLAIDCURSE, 146
+ .set STRINGID_PKMNAFFLICTEDBYCURSE, 147
+ .set STRINGID_SPIKESSCATTERED, 148
+ .set STRINGID_PKMNHURTBYSPIKES, 149
+ .set STRINGID_PKMNIDENTIFIED, 150
+ .set STRINGID_PKMNPERISHCOUNTFELL, 151
+ .set STRINGID_PKMNBRACEDITSELF, 152
+ .set STRINGID_PKMNENDUREDHIT, 153
+ .set STRINGID_MAGNITUDESTRENGTH, 154
+ .set STRINGID_PKMNCUTHPMAXEDATTACK, 155
+ .set STRINGID_PKMNCOPIEDSTATCHANGES, 156
+ .set STRINGID_PKMNGOTFREE, 157
+ .set STRINGID_PKMNSHEDLEECHSEED, 158
+ .set STRINGID_PKMNBLEWAWAYSPIKES, 159
+ .set STRINGID_PKMNFLEDFROMBATTLE, 160
+ .set STRINGID_PKMNFORESAWATTACK, 161
+ .set STRINGID_PKMNTOOKATTACK, 162
+ .set STRINGID_PKMNATTACK, 163
+ .set STRINGID_PKMNCENTERATTENTION, 164
+ .set STRINGID_PKMNCHARGINGPOWER, 165
+ .set STRINGID_NATUREPOWERTURNEDINTO, 166
+ .set STRINGID_PKMNSTATUSNORMAL, 167
+ .set STRINGID_PKMNHASNOMOVESLEFT, 168
+ .set STRINGID_PKMNSUBJECTEDTOTORMENT, 169
+ .set STRINGID_PKMNCANTUSEMOVETORMENT, 170
+ .set STRINGID_PKMNTIGHTENINGFOCUS, 171
+ .set STRINGID_PKMNFELLFORTAUNT, 172
+ .set STRINGID_PKMNCANTUSEMOVETAUNT, 173
+ .set STRINGID_PKMNREADYTOHELP, 174
+ .set STRINGID_PKMNSWITCHEDITEMS, 175
+ .set STRINGID_PKMNCOPIEDFOE, 176
+ .set STRINGID_PKMNMADEWISH, 177
+ .set STRINGID_PKMNWISHCAMETRUE, 178
+ .set STRINGID_PKMNPLANTEDROOTS, 179
+ .set STRINGID_PKMNABSORBEDNUTRIENTS, 180
+ .set STRINGID_PKMNANCHOREDITSELF, 181
+ .set STRINGID_PKMNWASMADEDROWSY, 182
+ .set STRINGID_PKMNKNOCKEDOFF, 183
+ .set STRINGID_PKMNSWAPPEDABILITIES, 184
+ .set STRINGID_PKMNSEALEDOPPONENTMOVE, 185
+ .set STRINGID_PKMNCANTUSEMOVESEALED, 186
+ .set STRINGID_PKMNWANTSGRUDGE, 187
+ .set STRINGID_PKMNLOSTPPGRUDGE, 188
+ .set STRINGID_PKMNSHROUDEDITSELF, 189
+ .set STRINGID_PKMNMOVEBOUNCED, 190
+ .set STRINGID_PKMNWAITSFORTARGET, 191
+ .set STRINGID_PKMNSNATCHEDMOVE, 192
+ .set STRINGID_PKMNMADEITRAIN, 193
+ .set STRINGID_PKMNRAISEDSPEED, 194
+ .set STRINGID_PKMNPROTECTEDBY, 195
+ .set STRINGID_PKMNPREVENTSUSAGE, 196
+ .set STRINGID_PKMNRESTOREDHPUSING, 197
+ .set STRINGID_PKMNCHANGEDTYPEWITH, 198
+ .set STRINGID_PKMNPREVENTSPARALYSISWITH, 199
+ .set STRINGID_PKMNPREVENTSROMANCEWITH, 200
+ .set STRINGID_PKMNPREVENTSPOISONINGWITH, 201
+ .set STRINGID_PKMNPREVENTSCONFUSIONWITH, 202
+ .set STRINGID_PKMNRAISEDFIREPOWERWITH, 203
+ .set STRINGID_PKMNANCHORSITSELFWITH, 204
+ .set STRINGID_PKMNCUTSATTACKWITH, 205
+ .set STRINGID_PKMNPREVENTSSTATLOSSWITH, 206
+ .set STRINGID_PKMNHURTSWITH, 207
+ .set STRINGID_PKMNTRACED, 208
+ .set STRINGID_STATSHARPLY, 209
+ .set STRINGID_STATROSE, 210
+ .set STRINGID_STATHARSHLY, 211
+ .set STRINGID_STATFELL, 212
+ .set STRINGID_PKMNSSTATCHANGED, 213
+ .set STRINGID_PKMNSSTATCHANGED2, 214
+ .set STRINGID_PKMNSSTATCHANGED3, 215
+ .set STRINGID_PKMNSSTATCHANGED4, 216
+ .set STRINGID_CRITICALHIT, 217
+ .set STRINGID_ONEHITKO, 218
+ .set STRINGID_123POOF, 219
+ .set STRINGID_ANDELLIPSIS, 220
+ .set STRINGID_NOTVERYEFFECTIVE, 221
+ .set STRINGID_SUPEREFFECTIVE, 222
+ .set STRINGID_GOTAWAYSAFELY, 223
+ .set STRINGID_WILDPKMNFLED, 224
+ .set STRINGID_NORUNNINGFROMTRAINERS, 225
+ .set STRINGID_CANTESCAPE, 226
+ .set STRINGID_DONTLEAVEBIRCH, 227
+ .set STRINGID_BUTNOTHINGHAPPENED, 228
+ .set STRINGID_BUTITFAILED, 229
+ .set STRINGID_ITHURTCONFUSION, 230
+ .set STRINGID_MIRRORMOVEFAILED, 231
+ .set STRINGID_STARTEDTORAIN, 232
+ .set STRINGID_DOWNPOURSTARTED, 233
+ .set STRINGID_RAINCONTINUES, 234
+ .set STRINGID_DOWNPOURCONTINUES, 235
+ .set STRINGID_RAINSTOPPED, 236
+ .set STRINGID_SANDSTORMBREWED, 237
+ .set STRINGID_SANDSTORMRAGES, 238
+ .set STRINGID_SANDSTORMSUBSIDED, 239
+ .set STRINGID_SUNLIGHTGOTBRIGHT, 240
+ .set STRINGID_SUNLIGHTSTRONG, 241
+ .set STRINGID_SUNLIGHTFADED, 242
+ .set STRINGID_STARTEDHAIL, 243
+ .set STRINGID_HAILCONTINUES, 244
+ .set STRINGID_HAILSTOPPED, 245
+ .set STRINGID_FAILEDTOSPITUP, 246
+ .set STRINGID_FAILEDTOSWALLOW, 247
+ .set STRINGID_WINDBECAMEHEATWAVE, 248
+ .set STRINGID_STATCHANGESGONE, 249
+ .set STRINGID_COINSSCATTERED, 250
+ .set STRINGID_TOOWEAKFORSUBSTITUTE, 251
+ .set STRINGID_SHAREDPAIN, 252
+ .set STRINGID_BELLCHIMED, 253
+ .set STRINGID_FAINTINTHREE, 254
+ .set STRINGID_NOPPLEFT, 255
+ .set STRINGID_BUTNOPPLEFT, 256
+ .set STRINGID_PLAYERUSEDITEM, 257
+ .set STRINGID_WALLYUSEDITEM, 258
+ .set STRINGID_TRAINERBLOCKEDBALL, 259
+ .set STRINGID_DONTBEATHIEF, 260
+ .set STRINGID_ITDODGEDBALL, 261
+ .set STRINGID_YOUMISSEDPKMN, 262
+ .set STRINGID_PKMNBROKEFREE, 263
+ .set STRINGID_ITAPPEAREDCAUGHT, 264
+ .set STRINGID_AARGHALMOSTHADIT, 265
+ .set STRINGID_SHOOTSOCLOSE, 266
+ .set STRINGID_GOTCHAPKMNCAUGHT, 267
+ .set STRINGID_GOTCHAPKMNCAUGHT2, 268
+ .set STRINGID_GIVENICKNAMECAPTURED, 269
+ .set STRINGID_PKMNSENTTOPC, 270
+ .set STRINGID_PKMNDATAADDEDTODEX, 271
+ .set STRINGID_ITISRAINING, 272
+ .set STRINGID_SANDSTORMISRAGING, 273
+ .set STRINGID_CANTESCAPE2, 274
+ .set STRINGID_PKMNIGNORESASLEEP, 275
+ .set STRINGID_PKMNIGNOREDORDERS, 276
+ .set STRINGID_PKMNBEGANTONAP, 277
+ .set STRINGID_PKMNLOAFING, 278
+ .set STRINGID_PKMNWONTOBEY, 279
+ .set STRINGID_PKMNTURNEDAWAY, 280
+ .set STRINGID_PKMNPRETENDNOTNOTICE, 281
+ .set STRINGID_ENEMYABOUTTOSWITCHPKMN, 282
+ .set STRINGID_CREPTCLOSER, 283
+ .set STRINGID_CANTGETCLOSER, 284
+ .set STRINGID_PKMNWATCHINGCAREFULLY, 285
+ .set STRINGID_PKMNCURIOUSABOUTX, 286
+ .set STRINGID_PKMNENTHRALLEDBYX, 287
+ .set STRINGID_PKMNIGNOREDX, 288
+ .set STRINGID_THREWPOKEBLOCKATPKMN, 289
+ .set STRINGID_OUTOFSAFARIBALLS, 290
+ .set STRINGID_PKMNSITEMCUREDPARALYSIS, 291
+ .set STRINGID_PKMNSITEMCUREDPOISON, 292
+ .set STRINGID_PKMNSITEMHEALEDBURN, 293
+ .set STRINGID_PKMNSITEMDEFROSTEDIT, 294
+ .set STRINGID_PKMNSITEMWOKEIT, 295
+ .set STRINGID_PKMNSITEMSNAPPEDOUT, 296
+ .set STRINGID_PKMNSITEMCUREDPROBLEM, 297
+ .set STRINGID_PKMNSITEMRESTOREDHEALTH, 298
+ .set STRINGID_PKMNSITEMRESTOREDPP, 299
+ .set STRINGID_PKMNSITEMRESTOREDSTATUS, 300
+ .set STRINGID_PKMNSITEMRESTOREDHPALITTLE, 301
+ .set STRINGID_ITEMALLOWSONLYYMOVE, 302
+ .set STRINGID_PKMNHUNGONWITHX, 303
+ .set STRINGID_EMPTYSTRING3, 304
+ .set STRINGID_PKMNSXPREVENTSBURNS, 305
+ .set STRINGID_PKMNSXBLOCKSY, 306
+ .set STRINGID_PKMNSXRESTOREDHPALITTLE2, 307
+ .set STRINGID_PKMNSXWHIPPEDUPSANDSTORM, 308
+ .set STRINGID_PKMNSXPREVENTSYLOSS, 309
+ .set STRINGID_PKMNSXINFATUATEDY, 310
+ .set STRINGID_PKMNSXMADEYINEFFECTIVE, 311
+ .set STRINGID_PKMNSXCUREDYPROBLEM, 312
+ .set STRINGID_ITSUCKEDLIQUIDOOZE, 313
+ .set STRINGID_PKMNTRANSFORMED, 314
+ .set STRINGID_ELECTRICITYWEAKENED, 315
+ .set STRINGID_FIREWEAKENED, 316
+ .set STRINGID_PKMNHIDUNDERWATER, 317
+ .set STRINGID_PKMNSPRANGUP, 318
+ .set STRINGID_HMMOVESCANTBEFORGOTTEN, 319
+ .set STRINGID_XFOUNDONEY, 320
+ .set STRINGID_PLAYERDEFEATEDTRAINER1, 321
+ .set STRINGID_SOOTHINGAROMA, 322
+ .set STRINGID_ITEMSCANTBEUSEDNOW, 323
+ .set STRINGID_FORXCOMMAYZ, 324
+ .set STRINGID_USINGXTHEYOFZN, 325
+ .set STRINGID_PKMNUSEDXTOGETPUMPED, 326
+ .set STRINGID_PKMNSXMADEYUSELESS, 327
+ .set STRINGID_PKMNTRAPPEDBYSANDTOMB, 328
+ .set STRINGID_EMPTYSTRING4, 329
+ .set STRINGID_ABOOSTED, 330
+ .set STRINGID_PKMNSXINTENSIFIEDSUN, 331
+ .set STRINGID_PKMNMAKESGROUNDMISS, 332
+ .set STRINGID_YOUTHROWABALLNOWRIGHT, 333
+ .set STRINGID_PKMNSXTOOKATTACK, 334
+ .set STRINGID_PKMNCHOSEXASDESTINY, 335
+ .set STRINGID_PKMNLOSTFOCUS, 336
+ .set STRINGID_USENEXTPKMN, 337
+ .set STRINGID_PKMNFLEDUSINGITS, 338
+ .set STRINGID_PKMNFLEDUSING, 339
+ .set STRINGID_PKMNWASDRAGGEDOUT, 340
+ .set STRINGID_PREVENTEDFROMWORKING, 341
+ .set STRINGID_PKMNSITEMNORMALIZEDSTATUS, 342
+ .set STRINGID_TRAINER1USEDITEM, 343
+ .set STRINGID_BOXISFULL, 344
+ .set STRINGID_PKMNAVOIDEDATTACK, 345
+ .set STRINGID_PKMNSXMADEITINEFFECTIVE, 346
+ .set STRINGID_PKMNSXPREVENTSFLINCHING, 347
+ .set STRINGID_PKMNALREADYHASBURN, 348
+ .set STRINGID_STATSWONTDECREASE2, 349
+ .set STRINGID_PKMNSXBLOCKSY2, 350
+ .set STRINGID_PKMNSXWOREOFF, 351
+ .set STRINGID_PKMNRAISEDDEFALITTLE, 352
+ .set STRINGID_PKMNRAISEDSPDEFALITTLE, 353
+ .set STRINGID_THEWALLSHATTERED, 354
+ .set STRINGID_PKMNSXPREVENTSYSZ, 355
+ .set STRINGID_PKMNSXCUREDITSYPROBLEM, 356
+ .set STRINGID_ATTACKERCANTESCAPE, 357
+ .set STRINGID_PKMNOBTAINEDX, 358
+ .set STRINGID_PKMNOBTAINEDX2, 359
+ .set STRINGID_PKMNOBTAINEDXYOBTAINEDZ, 360
+ .set STRINGID_BUTNOEFFECT, 361
+ .set STRINGID_PKMNSXHADNOEFFECTONY, 362
+ .set STRINGID_TWOENEMIESDEFEATED, 363
+ .set STRINGID_TRAINER2LOSETEXT, 364
+ .set STRINGID_PKMNINCAPABLEOFPOWER, 365
+ .set STRINGID_GLINTAPPEARSINEYE, 366
+ .set STRINGID_PKMNGETTINGINTOPOSITION, 367
+ .set STRINGID_PKMNBEGANGROWLINGDEEPLY, 368
+ .set STRINGID_PKMNEAGERFORMORE, 369
+ .set STRINGID_DEFEATEDOPPONENTBYREFEREE, 370
+ .set STRINGID_LOSTTOOPPONENTBYREFEREE, 371
+ .set STRINGID_TIEDOPPONENTBYREFEREE, 372
+ .set STRINGID_QUESTIONFORFEITMATCH, 373
+ .set STRINGID_FORFEITEDMATCH, 374
+ .set STRINGID_PKMNTRANSFERREDSOMEONESPC, 375
+ .set STRINGID_PKMNTRANSFERREDLANETTESPC, 376
+ .set STRINGID_PKMNBOXSOMEONESPCFULL, 377
+ .set STRINGID_PKMNBOXLANETTESPCFULL, 378
+ .set STRINGID_TRAINER1WINTEXT, 379
+ .set STRINGID_TRAINER2WINTEXT, 380
diff --git a/constants/constants.inc b/constants/constants.inc
index fbd4e8af0..99c3d3c73 100644
--- a/constants/constants.inc
+++ b/constants/constants.inc
@@ -1,20 +1,12 @@
.include "constants/gba_constants.inc"
.include "constants/misc_constants.inc"
- .include "constants/species_constants.inc"
- .include "constants/ability_constants.inc"
- .include "constants/move_constants.inc"
- .include "constants/item_constants.inc"
.include "constants/type_constants.inc"
.include "constants/contest_constants.inc"
.include "constants/pokemon_data_constants.inc"
.include "constants/item_data_constants.inc"
.include "constants/battle_move_constants.inc"
- .include "constants/easy_chat_constants.inc"
.include "constants/trainer_constants.inc"
.include "constants/battle_frontier_constants.inc"
.include "constants/map_constants.inc"
- .include "constants/map_object_constants.inc"
.include "constants/berry_constants.inc"
- .include "constants/field_object_constants.inc"
.include "constants/contest_move_effects.inc"
- .include "constants/songs.inc"
diff --git a/constants/easy_chat_constants.inc b/constants/easy_chat_constants.inc
deleted file mode 100644
index 4d9aecec5..000000000
--- a/constants/easy_chat_constants.inc
+++ /dev/null
@@ -1,1067 +0,0 @@
- .set EC_GROUP_POKEMON, 0x0
- .set EC_GROUP_TRAINER, 0x1
- .set EC_GROUP_STATUS, 0x2
- .set EC_GROUP_BATTLE, 0x3
- .set EC_GROUP_GREETINGS, 0x4
- .set EC_GROUP_PEOPLE, 0x5
- .set EC_GROUP_VOICES, 0x6
- .set EC_GROUP_SPEECH, 0x7
- .set EC_GROUP_ENDINGS, 0x8
- .set EC_GROUP_FEELINGS, 0x9
- .set EC_GROUP_CONDITIONS, 0xa
- .set EC_GROUP_ACTIONS, 0xb
- .set EC_GROUP_LIFESTYLE, 0xc
- .set EC_GROUP_HOBBIES, 0xd
- .set EC_GROUP_TIME, 0xe
- .set EC_GROUP_MISC, 0xf
- .set EC_GROUP_ADJECTIVES, 0x10
- .set EC_GROUP_EVENTS, 0x11
- .set EC_GROUP_MOVE_1, 0x12
- .set EC_GROUP_MOVE_2, 0x13
- .set EC_GROUP_TRENDY_SAYING, 0x14
- .set EC_GROUP_POKEMON2, 0x15
-
-@ Trainer
- .set EC_WORD_I_CHOOSE_YOU, (EC_GROUP_TRAINER << 9) | 0x0
- .set EC_WORD_GOTCHA, (EC_GROUP_TRAINER << 9) | 0x1
- .set EC_WORD_TRADE, (EC_GROUP_TRAINER << 9) | 0x2
- .set EC_WORD_SAPPHIRE, (EC_GROUP_TRAINER << 9) | 0x3
- .set EC_WORD_EVOLVE, (EC_GROUP_TRAINER << 9) | 0x4
- .set EC_WORD_ENCYCLOPEDIA, (EC_GROUP_TRAINER << 9) | 0x5
- .set EC_WORD_NATURE, (EC_GROUP_TRAINER << 9) | 0x6
- .set EC_WORD_CENTER, (EC_GROUP_TRAINER << 9) | 0x7
- .set EC_WORD_EGG, (EC_GROUP_TRAINER << 9) | 0x8
- .set EC_WORD_LINK, (EC_GROUP_TRAINER << 9) | 0x9
- .set EC_WORD_SP_ABILITY, (EC_GROUP_TRAINER << 9) | 0xa
- .set EC_WORD_TRAINER, (EC_GROUP_TRAINER << 9) | 0xb
- .set EC_WORD_VERSION, (EC_GROUP_TRAINER << 9) | 0xc
- .set EC_WORD_POKENAV, (EC_GROUP_TRAINER << 9) | 0xd
- .set EC_WORD_POKEMON, (EC_GROUP_TRAINER << 9) | 0xe
- .set EC_WORD_GET, (EC_GROUP_TRAINER << 9) | 0xf
- .set EC_WORD_POKEDEX, (EC_GROUP_TRAINER << 9) | 0x10
- .set EC_WORD_RUBY, (EC_GROUP_TRAINER << 9) | 0x11
- .set EC_WORD_LEVEL, (EC_GROUP_TRAINER << 9) | 0x12
- .set EC_WORD_RED, (EC_GROUP_TRAINER << 9) | 0x13
- .set EC_WORD_GREEN, (EC_GROUP_TRAINER << 9) | 0x14
- .set EC_WORD_BAG, (EC_GROUP_TRAINER << 9) | 0x15
- .set EC_WORD_FLAME, (EC_GROUP_TRAINER << 9) | 0x16
- .set EC_WORD_GOLD, (EC_GROUP_TRAINER << 9) | 0x17
- .set EC_WORD_LEAF, (EC_GROUP_TRAINER << 9) | 0x18
- .set EC_WORD_SILVER, (EC_GROUP_TRAINER << 9) | 0x19
- .set EC_WORD_EMERALD, (EC_GROUP_TRAINER << 9) | 0x1a
-
-@ Status
- .set EC_WORD_DARK, (EC_GROUP_STATUS << 9) | 0x0
- .set EC_WORD_STENCH, (EC_GROUP_STATUS << 9) | 0x1
- .set EC_WORD_THICK_FAT, (EC_GROUP_STATUS << 9) | 0x2
- .set EC_WORD_RAIN_DISH, (EC_GROUP_STATUS << 9) | 0x3
- .set EC_WORD_DRIZZLE, (EC_GROUP_STATUS << 9) | 0x4
- .set EC_WORD_ARENA_TRAP, (EC_GROUP_STATUS << 9) | 0x5
- .set EC_WORD_INTIMIDATE, (EC_GROUP_STATUS << 9) | 0x6
- .set EC_WORD_ROCK_HEAD, (EC_GROUP_STATUS << 9) | 0x7
- .set EC_WORD_COLOR, (EC_GROUP_STATUS << 9) | 0x8
- .set EC_WORD_ALT_COLOR, (EC_GROUP_STATUS << 9) | 0x9
- .set EC_WORD_ROCK, (EC_GROUP_STATUS << 9) | 0xa
- .set EC_WORD_BEAUTIFUL, (EC_GROUP_STATUS << 9) | 0xb
- .set EC_WORD_BEAUTY, (EC_GROUP_STATUS << 9) | 0xc
- .set EC_WORD_AIR_LOCK, (EC_GROUP_STATUS << 9) | 0xd
- .set EC_WORD_PSYCHIC, (EC_GROUP_STATUS << 9) | 0xe
- .set EC_WORD_HYPER_CUTTER, (EC_GROUP_STATUS << 9) | 0xf
- .set EC_WORD_FIGHTING, (EC_GROUP_STATUS << 9) | 0x10
- .set EC_WORD_SHADOW_TAG, (EC_GROUP_STATUS << 9) | 0x11
- .set EC_WORD_SMART, (EC_GROUP_STATUS << 9) | 0x12
- .set EC_WORD_SMARTNESS, (EC_GROUP_STATUS << 9) | 0x13
- .set EC_WORD_SPEED_BOOST, (EC_GROUP_STATUS << 9) | 0x14
- .set EC_WORD_COOL, (EC_GROUP_STATUS << 9) | 0x15
- .set EC_WORD_COOLNESS, (EC_GROUP_STATUS << 9) | 0x16
- .set EC_WORD_BATTLE_ARMOR, (EC_GROUP_STATUS << 9) | 0x17
- .set EC_WORD_CUTE, (EC_GROUP_STATUS << 9) | 0x18
- .set EC_WORD_CUTENESS, (EC_GROUP_STATUS << 9) | 0x19
- .set EC_WORD_STURDY, (EC_GROUP_STATUS << 9) | 0x1a
- .set EC_WORD_SUCTION_CUPS, (EC_GROUP_STATUS << 9) | 0x1b
- .set EC_WORD_GRASS, (EC_GROUP_STATUS << 9) | 0x1c
- .set EC_WORD_CLEAR_BODY, (EC_GROUP_STATUS << 9) | 0x1d
- .set EC_WORD_TORRENT, (EC_GROUP_STATUS << 9) | 0x1e
- .set EC_WORD_GHOST, (EC_GROUP_STATUS << 9) | 0x1f
- .set EC_WORD_ICE, (EC_GROUP_STATUS << 9) | 0x20
- .set EC_WORD_GUTS, (EC_GROUP_STATUS << 9) | 0x21
- .set EC_WORD_ROUGH_SKIN, (EC_GROUP_STATUS << 9) | 0x22
- .set EC_WORD_SHELL_ARMOR, (EC_GROUP_STATUS << 9) | 0x23
- .set EC_WORD_NATURAL_CURE, (EC_GROUP_STATUS << 9) | 0x24
- .set EC_WORD_DAMP, (EC_GROUP_STATUS << 9) | 0x25
- .set EC_WORD_GROUND, (EC_GROUP_STATUS << 9) | 0x26
- .set EC_WORD_LIMBER, (EC_GROUP_STATUS << 9) | 0x27
- .set EC_WORD_MAGNET_PULL, (EC_GROUP_STATUS << 9) | 0x28
- .set EC_WORD_WHITE_SMOKE, (EC_GROUP_STATUS << 9) | 0x29
- .set EC_WORD_SYNCHRONIZE, (EC_GROUP_STATUS << 9) | 0x2a
- .set EC_WORD_OVERGROW, (EC_GROUP_STATUS << 9) | 0x2b
- .set EC_WORD_SWIFT_SWIM, (EC_GROUP_STATUS << 9) | 0x2c
- .set EC_WORD_SAND_STREAM, (EC_GROUP_STATUS << 9) | 0x2d
- .set EC_WORD_SAND_VEIL, (EC_GROUP_STATUS << 9) | 0x2e
- .set EC_WORD_KEEN_EYE, (EC_GROUP_STATUS << 9) | 0x2f
- .set EC_WORD_INNER_FOCUS, (EC_GROUP_STATUS << 9) | 0x30
- .set EC_WORD_STATIC, (EC_GROUP_STATUS << 9) | 0x31
- .set EC_WORD_TYPE, (EC_GROUP_STATUS << 9) | 0x32
- .set EC_WORD_TOUGH, (EC_GROUP_STATUS << 9) | 0x33
- .set EC_WORD_TOUGHNESS, (EC_GROUP_STATUS << 9) | 0x34
- .set EC_WORD_SHED_SKIN, (EC_GROUP_STATUS << 9) | 0x35
- .set EC_WORD_HUGE_POWER, (EC_GROUP_STATUS << 9) | 0x36
- .set EC_WORD_VOLT_ABSORB, (EC_GROUP_STATUS << 9) | 0x37
- .set EC_WORD_WATER_ABSORB, (EC_GROUP_STATUS << 9) | 0x38
- .set EC_WORD_ELECTRIC, (EC_GROUP_STATUS << 9) | 0x39
- .set EC_WORD_FORECAST, (EC_GROUP_STATUS << 9) | 0x3a
- .set EC_WORD_SERENE_GRACE, (EC_GROUP_STATUS << 9) | 0x3b
- .set EC_WORD_POISON, (EC_GROUP_STATUS << 9) | 0x3c
- .set EC_WORD_POISON_POINT, (EC_GROUP_STATUS << 9) | 0x3d
- .set EC_WORD_DRAGON, (EC_GROUP_STATUS << 9) | 0x3e
- .set EC_WORD_TRACE, (EC_GROUP_STATUS << 9) | 0x3f
- .set EC_WORD_OBLIVIOUS, (EC_GROUP_STATUS << 9) | 0x40
- .set EC_WORD_TRUANT, (EC_GROUP_STATUS << 9) | 0x41
- .set EC_WORD_RUN_AWAY, (EC_GROUP_STATUS << 9) | 0x42
- .set EC_WORD_STICKY_HOLD, (EC_GROUP_STATUS << 9) | 0x43
- .set EC_WORD_CLOUD_NINE, (EC_GROUP_STATUS << 9) | 0x44
- .set EC_WORD_NORMAL, (EC_GROUP_STATUS << 9) | 0x45
- .set EC_WORD_STEEL, (EC_GROUP_STATUS << 9) | 0x46
- .set EC_WORD_ILLUMINATE, (EC_GROUP_STATUS << 9) | 0x47
- .set EC_WORD_EARLY_BIRD, (EC_GROUP_STATUS << 9) | 0x48
- .set EC_WORD_HUSTLE, (EC_GROUP_STATUS << 9) | 0x49
- .set EC_WORD_SHINE, (EC_GROUP_STATUS << 9) | 0x4a
- .set EC_WORD_FLYING, (EC_GROUP_STATUS << 9) | 0x4b
- .set EC_WORD_DROUGHT, (EC_GROUP_STATUS << 9) | 0x4c
- .set EC_WORD_LIGHTNINGROD, (EC_GROUP_STATUS << 9) | 0x4d
- .set EC_WORD_COMPOUNDEYES, (EC_GROUP_STATUS << 9) | 0x4e
- .set EC_WORD_MARVEL_SCALE, (EC_GROUP_STATUS << 9) | 0x4f
- .set EC_WORD_WONDER_GUARD, (EC_GROUP_STATUS << 9) | 0x50
- .set EC_WORD_INSOMNIA, (EC_GROUP_STATUS << 9) | 0x51
- .set EC_WORD_LEVITATE, (EC_GROUP_STATUS << 9) | 0x52
- .set EC_WORD_PLUS, (EC_GROUP_STATUS << 9) | 0x53
- .set EC_WORD_PRESSURE, (EC_GROUP_STATUS << 9) | 0x54
- .set EC_WORD_LIQUID_OOZE, (EC_GROUP_STATUS << 9) | 0x55
- .set EC_WORD_COLOR_CHANGE, (EC_GROUP_STATUS << 9) | 0x56
- .set EC_WORD_SOUNDPROOF, (EC_GROUP_STATUS << 9) | 0x57
- .set EC_WORD_EFFECT_SPORE, (EC_GROUP_STATUS << 9) | 0x58
- .set EC_WORD_PKRS, (EC_GROUP_STATUS << 9) | 0x59
- .set EC_WORD_FIRE, (EC_GROUP_STATUS << 9) | 0x5a
- .set EC_WORD_FLAME_BODY, (EC_GROUP_STATUS << 9) | 0x5b
- .set EC_WORD_MINUS, (EC_GROUP_STATUS << 9) | 0x5c
- .set EC_WORD_OWN_TEMPO, (EC_GROUP_STATUS << 9) | 0x5d
- .set EC_WORD_MAGMA_ARMOR, (EC_GROUP_STATUS << 9) | 0x5e
- .set EC_WORD_WATER, (EC_GROUP_STATUS << 9) | 0x5f
- .set EC_WORD_WATER_VEIL, (EC_GROUP_STATUS << 9) | 0x60
- .set EC_WORD_BUG, (EC_GROUP_STATUS << 9) | 0x61
- .set EC_WORD_SWARM, (EC_GROUP_STATUS << 9) | 0x62
- .set EC_WORD_CUTE_CHARM, (EC_GROUP_STATUS << 9) | 0x63
- .set EC_WORD_IMMUNITY, (EC_GROUP_STATUS << 9) | 0x64
- .set EC_WORD_BLAZE, (EC_GROUP_STATUS << 9) | 0x65
- .set EC_WORD_PICKUP, (EC_GROUP_STATUS << 9) | 0x66
- .set EC_WORD_PATTERN, (EC_GROUP_STATUS << 9) | 0x67
- .set EC_WORD_FLASH_FIRE, (EC_GROUP_STATUS << 9) | 0x68
- .set EC_WORD_VITAL_SPIRIT, (EC_GROUP_STATUS << 9) | 0x69
- .set EC_WORD_CHLOROPHYLL, (EC_GROUP_STATUS << 9) | 0x6a
- .set EC_WORD_PURE_POWER, (EC_GROUP_STATUS << 9) | 0x6b
- .set EC_WORD_SHIELD_DUST, (EC_GROUP_STATUS << 9) | 0x6c
-
-@ Battle
- .set EC_WORD_MATCH_UP, (EC_GROUP_BATTLE << 9) | 0x0
- .set EC_WORD_GO, (EC_GROUP_BATTLE << 9) | 0x1
- .set EC_WORD_NO_1, (EC_GROUP_BATTLE << 9) | 0x2
- .set EC_WORD_DECIDE, (EC_GROUP_BATTLE << 9) | 0x3
- .set EC_WORD_LET_ME_WIN, (EC_GROUP_BATTLE << 9) | 0x4
- .set EC_WORD_WINS, (EC_GROUP_BATTLE << 9) | 0x5
- .set EC_WORD_WIN, (EC_GROUP_BATTLE << 9) | 0x6
- .set EC_WORD_WON, (EC_GROUP_BATTLE << 9) | 0x7
- .set EC_WORD_IF_I_WIN, (EC_GROUP_BATTLE << 9) | 0x8
- .set EC_WORD_WHEN_I_WIN, (EC_GROUP_BATTLE << 9) | 0x9
- .set EC_WORD_CAN_T_WIN, (EC_GROUP_BATTLE << 9) | 0xa
- .set EC_WORD_CAN_WIN, (EC_GROUP_BATTLE << 9) | 0xb
- .set EC_WORD_NO_MATCH, (EC_GROUP_BATTLE << 9) | 0xc
- .set EC_WORD_SPIRIT, (EC_GROUP_BATTLE << 9) | 0xd
- .set EC_WORD_DECIDED, (EC_GROUP_BATTLE << 9) | 0xe
- .set EC_WORD_TRUMP_CARD, (EC_GROUP_BATTLE << 9) | 0xf
- .set EC_WORD_TAKE_THAT, (EC_GROUP_BATTLE << 9) | 0x10
- .set EC_WORD_COME_ON, (EC_GROUP_BATTLE << 9) | 0x11
- .set EC_WORD_ATTACK, (EC_GROUP_BATTLE << 9) | 0x12
- .set EC_WORD_SURRENDER, (EC_GROUP_BATTLE << 9) | 0x13
- .set EC_WORD_GUTSY, (EC_GROUP_BATTLE << 9) | 0x14
- .set EC_WORD_TALENT, (EC_GROUP_BATTLE << 9) | 0x15
- .set EC_WORD_STRATEGY, (EC_GROUP_BATTLE << 9) | 0x16
- .set EC_WORD_SMITE, (EC_GROUP_BATTLE << 9) | 0x17
- .set EC_WORD_MATCH, (EC_GROUP_BATTLE << 9) | 0x18
- .set EC_WORD_VICTORY, (EC_GROUP_BATTLE << 9) | 0x19
- .set EC_WORD_OFFENSIVE, (EC_GROUP_BATTLE << 9) | 0x1a
- .set EC_WORD_SENSE, (EC_GROUP_BATTLE << 9) | 0x1b
- .set EC_WORD_VERSUS, (EC_GROUP_BATTLE << 9) | 0x1c
- .set EC_WORD_FIGHTS, (EC_GROUP_BATTLE << 9) | 0x1d
- .set EC_WORD_POWER, (EC_GROUP_BATTLE << 9) | 0x1e
- .set EC_WORD_CHALLENGE, (EC_GROUP_BATTLE << 9) | 0x1f
- .set EC_WORD_STRONG, (EC_GROUP_BATTLE << 9) | 0x20
- .set EC_WORD_TOO_STRONG, (EC_GROUP_BATTLE << 9) | 0x21
- .set EC_WORD_GO_EASY, (EC_GROUP_BATTLE << 9) | 0x22
- .set EC_WORD_FOE, (EC_GROUP_BATTLE << 9) | 0x23
- .set EC_WORD_GENIUS, (EC_GROUP_BATTLE << 9) | 0x24
- .set EC_WORD_LEGEND, (EC_GROUP_BATTLE << 9) | 0x25
- .set EC_WORD_ESCAPE, (EC_GROUP_BATTLE << 9) | 0x26
- .set EC_WORD_AIM, (EC_GROUP_BATTLE << 9) | 0x27
- .set EC_WORD_BATTLE, (EC_GROUP_BATTLE << 9) | 0x28
- .set EC_WORD_FIGHT, (EC_GROUP_BATTLE << 9) | 0x29
- .set EC_WORD_RESUSCITATE, (EC_GROUP_BATTLE << 9) | 0x2a
- .set EC_WORD_POINTS, (EC_GROUP_BATTLE << 9) | 0x2b
- .set EC_WORD_SERIOUS, (EC_GROUP_BATTLE << 9) | 0x2c
- .set EC_WORD_GIVE_UP, (EC_GROUP_BATTLE << 9) | 0x2d
- .set EC_WORD_LOSS, (EC_GROUP_BATTLE << 9) | 0x2e
- .set EC_WORD_IF_I_LOSE, (EC_GROUP_BATTLE << 9) | 0x2f
- .set EC_WORD_LOST, (EC_GROUP_BATTLE << 9) | 0x30
- .set EC_WORD_LOSE, (EC_GROUP_BATTLE << 9) | 0x31
- .set EC_WORD_GUARD, (EC_GROUP_BATTLE << 9) | 0x32
- .set EC_WORD_PARTNER, (EC_GROUP_BATTLE << 9) | 0x33
- .set EC_WORD_REJECT, (EC_GROUP_BATTLE << 9) | 0x34
- .set EC_WORD_ACCEPT, (EC_GROUP_BATTLE << 9) | 0x35
- .set EC_WORD_INVINCIBLE, (EC_GROUP_BATTLE << 9) | 0x36
- .set EC_WORD_RECEIVED, (EC_GROUP_BATTLE << 9) | 0x37
- .set EC_WORD_EASY, (EC_GROUP_BATTLE << 9) | 0x38
- .set EC_WORD_WEAK, (EC_GROUP_BATTLE << 9) | 0x39
- .set EC_WORD_TOO_WEAK, (EC_GROUP_BATTLE << 9) | 0x3a
- .set EC_WORD_PUSHOVER, (EC_GROUP_BATTLE << 9) | 0x3b
- .set EC_WORD_LEADER, (EC_GROUP_BATTLE << 9) | 0x3c
- .set EC_WORD_RULE, (EC_GROUP_BATTLE << 9) | 0x3d
- .set EC_WORD_MOVE, (EC_GROUP_BATTLE << 9) | 0x3e
-
-@ Greetings
- .set EC_WORD_THANKS, (EC_GROUP_GREETINGS << 9) | 0x0
- .set EC_WORD_YES, (EC_GROUP_GREETINGS << 9) | 0x1
- .set EC_WORD_HERE_GOES, (EC_GROUP_GREETINGS << 9) | 0x2
- .set EC_WORD_HERE_I_COME, (EC_GROUP_GREETINGS << 9) | 0x3
- .set EC_WORD_HERE_IT_IS, (EC_GROUP_GREETINGS << 9) | 0x4
- .set EC_WORD_YEAH, (EC_GROUP_GREETINGS << 9) | 0x5
- .set EC_WORD_WELCOME, (EC_GROUP_GREETINGS << 9) | 0x6
- .set EC_WORD_OI, (EC_GROUP_GREETINGS << 9) | 0x7
- .set EC_WORD_HOW_DO, (EC_GROUP_GREETINGS << 9) | 0x8
- .set EC_WORD_CONGRATS, (EC_GROUP_GREETINGS << 9) | 0x9
- .set EC_WORD_GIVE_ME, (EC_GROUP_GREETINGS << 9) | 0xa
- .set EC_WORD_SORRY, (EC_GROUP_GREETINGS << 9) | 0xb
- .set EC_WORD_APOLOGIZE, (EC_GROUP_GREETINGS << 9) | 0xc
- .set EC_WORD_FORGIVE, (EC_GROUP_GREETINGS << 9) | 0xd
- .set EC_WORD_HEY_THERE, (EC_GROUP_GREETINGS << 9) | 0xe
- .set EC_WORD_HELLO, (EC_GROUP_GREETINGS << 9) | 0xf
- .set EC_WORD_GOOD_BYE, (EC_GROUP_GREETINGS << 9) | 0x10
- .set EC_WORD_THANK_YOU, (EC_GROUP_GREETINGS << 9) | 0x11
- .set EC_WORD_I_VE_ARRIVED, (EC_GROUP_GREETINGS << 9) | 0x12
- .set EC_WORD_PARDON, (EC_GROUP_GREETINGS << 9) | 0x13
- .set EC_WORD_EXCUSE, (EC_GROUP_GREETINGS << 9) | 0x14
- .set EC_WORD_SEE_YA, (EC_GROUP_GREETINGS << 9) | 0x15
- .set EC_WORD_EXCUSE_ME, (EC_GROUP_GREETINGS << 9) | 0x16
- .set EC_WORD_WELL_THEN, (EC_GROUP_GREETINGS << 9) | 0x17
- .set EC_WORD_GO_AHEAD, (EC_GROUP_GREETINGS << 9) | 0x18
- .set EC_WORD_APPRECIATE, (EC_GROUP_GREETINGS << 9) | 0x19
- .set EC_WORD_HEY_QUES, (EC_GROUP_GREETINGS << 9) | 0x1a
- .set EC_WORD_WHAT_S_UP_QUES, (EC_GROUP_GREETINGS << 9) | 0x1b
- .set EC_WORD_HUH_QUES, (EC_GROUP_GREETINGS << 9) | 0x1c
- .set EC_WORD_NO, (EC_GROUP_GREETINGS << 9) | 0x1d
- .set EC_WORD_HI, (EC_GROUP_GREETINGS << 9) | 0x1e
- .set EC_WORD_YEAH_YEAH, (EC_GROUP_GREETINGS << 9) | 0x1f
- .set EC_WORD_BYE_BYE, (EC_GROUP_GREETINGS << 9) | 0x20
- .set EC_WORD_MEET_YOU, (EC_GROUP_GREETINGS << 9) | 0x21
- .set EC_WORD_HEY, (EC_GROUP_GREETINGS << 9) | 0x22
- .set EC_WORD_SMELL, (EC_GROUP_GREETINGS << 9) | 0x23
- .set EC_WORD_LISTENING, (EC_GROUP_GREETINGS << 9) | 0x24
- .set EC_WORD_HOO_HAH, (EC_GROUP_GREETINGS << 9) | 0x25
- .set EC_WORD_YAHOO, (EC_GROUP_GREETINGS << 9) | 0x26
- .set EC_WORD_YO, (EC_GROUP_GREETINGS << 9) | 0x27
- .set EC_WORD_COME_OVER, (EC_GROUP_GREETINGS << 9) | 0x28
- .set EC_WORD_COUNT_ON, (EC_GROUP_GREETINGS << 9) | 0x29
-
-@ People
- .set EC_WORD_OPPONENT, (EC_GROUP_PEOPLE << 9) | 0x0
- .set EC_WORD_I, (EC_GROUP_PEOPLE << 9) | 0x1
- .set EC_WORD_YOU, (EC_GROUP_PEOPLE << 9) | 0x2
- .set EC_WORD_YOURS, (EC_GROUP_PEOPLE << 9) | 0x3
- .set EC_WORD_SON, (EC_GROUP_PEOPLE << 9) | 0x4
- .set EC_WORD_YOUR, (EC_GROUP_PEOPLE << 9) | 0x5
- .set EC_WORD_YOU_RE, (EC_GROUP_PEOPLE << 9) | 0x6
- .set EC_WORD_YOU_VE, (EC_GROUP_PEOPLE << 9) | 0x7
- .set EC_WORD_MOTHER, (EC_GROUP_PEOPLE << 9) | 0x8
- .set EC_WORD_GRANDFATHER, (EC_GROUP_PEOPLE << 9) | 0x9
- .set EC_WORD_UNCLE, (EC_GROUP_PEOPLE << 9) | 0xa
- .set EC_WORD_FATHER, (EC_GROUP_PEOPLE << 9) | 0xb
- .set EC_WORD_BOY, (EC_GROUP_PEOPLE << 9) | 0xc
- .set EC_WORD_ADULT, (EC_GROUP_PEOPLE << 9) | 0xd
- .set EC_WORD_BROTHER, (EC_GROUP_PEOPLE << 9) | 0xe
- .set EC_WORD_SISTER, (EC_GROUP_PEOPLE << 9) | 0xf
- .set EC_WORD_GRANDMOTHER, (EC_GROUP_PEOPLE << 9) | 0x10
- .set EC_WORD_AUNT, (EC_GROUP_PEOPLE << 9) | 0x11
- .set EC_WORD_PARENT, (EC_GROUP_PEOPLE << 9) | 0x12
- .set EC_WORD_MAN, (EC_GROUP_PEOPLE << 9) | 0x13
- .set EC_WORD_ME, (EC_GROUP_PEOPLE << 9) | 0x14
- .set EC_WORD_GIRL, (EC_GROUP_PEOPLE << 9) | 0x15
- .set EC_WORD_BABE, (EC_GROUP_PEOPLE << 9) | 0x16
- .set EC_WORD_FAMILY, (EC_GROUP_PEOPLE << 9) | 0x17
- .set EC_WORD_HER, (EC_GROUP_PEOPLE << 9) | 0x18
- .set EC_WORD_HIM, (EC_GROUP_PEOPLE << 9) | 0x19
- .set EC_WORD_HE, (EC_GROUP_PEOPLE << 9) | 0x1a
- .set EC_WORD_PLACE, (EC_GROUP_PEOPLE << 9) | 0x1b
- .set EC_WORD_DAUGHTER, (EC_GROUP_PEOPLE << 9) | 0x1c
- .set EC_WORD_HIS, (EC_GROUP_PEOPLE << 9) | 0x1d
- .set EC_WORD_HE_S, (EC_GROUP_PEOPLE << 9) | 0x1e
- .set EC_WORD_AREN_T, (EC_GROUP_PEOPLE << 9) | 0x1f
- .set EC_WORD_SIBLINGS, (EC_GROUP_PEOPLE << 9) | 0x20
- .set EC_WORD_KID, (EC_GROUP_PEOPLE << 9) | 0x21
- .set EC_WORD_CHILDREN, (EC_GROUP_PEOPLE << 9) | 0x22
- .set EC_WORD_MR, (EC_GROUP_PEOPLE << 9) | 0x23
- .set EC_WORD_MRS, (EC_GROUP_PEOPLE << 9) | 0x24
- .set EC_WORD_MYSELF, (EC_GROUP_PEOPLE << 9) | 0x25
- .set EC_WORD_I_WAS, (EC_GROUP_PEOPLE << 9) | 0x26
- .set EC_WORD_TO_ME, (EC_GROUP_PEOPLE << 9) | 0x27
- .set EC_WORD_MY, (EC_GROUP_PEOPLE << 9) | 0x28
- .set EC_WORD_I_AM, (EC_GROUP_PEOPLE << 9) | 0x29
- .set EC_WORD_I_VE, (EC_GROUP_PEOPLE << 9) | 0x2a
- .set EC_WORD_WHO, (EC_GROUP_PEOPLE << 9) | 0x2b
- .set EC_WORD_SOMEONE, (EC_GROUP_PEOPLE << 9) | 0x2c
- .set EC_WORD_WHO_WAS, (EC_GROUP_PEOPLE << 9) | 0x2d
- .set EC_WORD_TO_WHOM, (EC_GROUP_PEOPLE << 9) | 0x2e
- .set EC_WORD_WHOSE, (EC_GROUP_PEOPLE << 9) | 0x2f
- .set EC_WORD_WHO_IS, (EC_GROUP_PEOPLE << 9) | 0x30
- .set EC_WORD_IT_S, (EC_GROUP_PEOPLE << 9) | 0x31
- .set EC_WORD_LADY, (EC_GROUP_PEOPLE << 9) | 0x32
- .set EC_WORD_FRIEND, (EC_GROUP_PEOPLE << 9) | 0x33
- .set EC_WORD_ALLY, (EC_GROUP_PEOPLE << 9) | 0x34
- .set EC_WORD_PERSON, (EC_GROUP_PEOPLE << 9) | 0x35
- .set EC_WORD_DUDE, (EC_GROUP_PEOPLE << 9) | 0x36
- .set EC_WORD_THEY, (EC_GROUP_PEOPLE << 9) | 0x37
- .set EC_WORD_THEY_WERE, (EC_GROUP_PEOPLE << 9) | 0x38
- .set EC_WORD_TO_THEM, (EC_GROUP_PEOPLE << 9) | 0x39
- .set EC_WORD_THEIR, (EC_GROUP_PEOPLE << 9) | 0x3a
- .set EC_WORD_THEY_RE, (EC_GROUP_PEOPLE << 9) | 0x3b
- .set EC_WORD_THEY_VE, (EC_GROUP_PEOPLE << 9) | 0x3c
- .set EC_WORD_WE, (EC_GROUP_PEOPLE << 9) | 0x3d
- .set EC_WORD_BEEN, (EC_GROUP_PEOPLE << 9) | 0x3e
- .set EC_WORD_TO_US, (EC_GROUP_PEOPLE << 9) | 0x3f
- .set EC_WORD_OUR, (EC_GROUP_PEOPLE << 9) | 0x40
- .set EC_WORD_WE_RE, (EC_GROUP_PEOPLE << 9) | 0x41
- .set EC_WORD_RIVAL, (EC_GROUP_PEOPLE << 9) | 0x42
- .set EC_WORD_WE_VE, (EC_GROUP_PEOPLE << 9) | 0x43
- .set EC_WORD_WOMAN, (EC_GROUP_PEOPLE << 9) | 0x44
- .set EC_WORD_SHE, (EC_GROUP_PEOPLE << 9) | 0x45
- .set EC_WORD_SHE_WAS, (EC_GROUP_PEOPLE << 9) | 0x46
- .set EC_WORD_TO_HER, (EC_GROUP_PEOPLE << 9) | 0x47
- .set EC_WORD_HERS, (EC_GROUP_PEOPLE << 9) | 0x48
- .set EC_WORD_SHE_IS, (EC_GROUP_PEOPLE << 9) | 0x49
- .set EC_WORD_SOME, (EC_GROUP_PEOPLE << 9) | 0x4a
-
-@ Voices
- .set EC_WORD_EXCL, (EC_GROUP_VOICES << 9) | 0x0
- .set EC_WORD_EXCL_EXCL, (EC_GROUP_VOICES << 9) | 0x1
- .set EC_WORD_QUES_EXCL, (EC_GROUP_VOICES << 9) | 0x2
- .set EC_WORD_QUES, (EC_GROUP_VOICES << 9) | 0x3
- .set EC_WORD_ELLIPSIS, (EC_GROUP_VOICES << 9) | 0x4
- .set EC_WORD_ELLIPSIS_EXCL, (EC_GROUP_VOICES << 9) | 0x5
- .set EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, (EC_GROUP_VOICES << 9) | 0x6
- .set EC_WORD_DASH, (EC_GROUP_VOICES << 9) | 0x7
- .set EC_WORD_DASH_DASH_DASH, (EC_GROUP_VOICES << 9) | 0x8
- .set EC_WORD_UH_OH, (EC_GROUP_VOICES << 9) | 0x9
- .set EC_WORD_WAAAH, (EC_GROUP_VOICES << 9) | 0xa
- .set EC_WORD_AHAHA, (EC_GROUP_VOICES << 9) | 0xb
- .set EC_WORD_OH_QUES, (EC_GROUP_VOICES << 9) | 0xc
- .set EC_WORD_NOPE, (EC_GROUP_VOICES << 9) | 0xd
- .set EC_WORD_URGH, (EC_GROUP_VOICES << 9) | 0xe
- .set EC_WORD_HMM, (EC_GROUP_VOICES << 9) | 0xf
- .set EC_WORD_WHOAH, (EC_GROUP_VOICES << 9) | 0x10
- .set EC_WORD_WROOOAAR_EXCL, (EC_GROUP_VOICES << 9) | 0x11
- .set EC_WORD_WOW, (EC_GROUP_VOICES << 9) | 0x12
- .set EC_WORD_GIGGLE, (EC_GROUP_VOICES << 9) | 0x13
- .set EC_WORD_SIGH, (EC_GROUP_VOICES << 9) | 0x14
- .set EC_WORD_UNBELIEVABLE, (EC_GROUP_VOICES << 9) | 0x15
- .set EC_WORD_CRIES, (EC_GROUP_VOICES << 9) | 0x16
- .set EC_WORD_AGREE, (EC_GROUP_VOICES << 9) | 0x17
- .set EC_WORD_EH_QUES, (EC_GROUP_VOICES << 9) | 0x18
- .set EC_WORD_CRY, (EC_GROUP_VOICES << 9) | 0x19
- .set EC_WORD_EHEHE, (EC_GROUP_VOICES << 9) | 0x1a
- .set EC_WORD_OI_OI_OI, (EC_GROUP_VOICES << 9) | 0x1b
- .set EC_WORD_OH_YEAH, (EC_GROUP_VOICES << 9) | 0x1c
- .set EC_WORD_OH, (EC_GROUP_VOICES << 9) | 0x1d
- .set EC_WORD_OOPS, (EC_GROUP_VOICES << 9) | 0x1e
- .set EC_WORD_SHOCKED, (EC_GROUP_VOICES << 9) | 0x1f
- .set EC_WORD_EEK, (EC_GROUP_VOICES << 9) | 0x20
- .set EC_WORD_GRAAAH, (EC_GROUP_VOICES << 9) | 0x21
- .set EC_WORD_GWAHAHAHA, (EC_GROUP_VOICES << 9) | 0x22
- .set EC_WORD_WAY, (EC_GROUP_VOICES << 9) | 0x23
- .set EC_WORD_TCH, (EC_GROUP_VOICES << 9) | 0x24
- .set EC_WORD_HEHE, (EC_GROUP_VOICES << 9) | 0x25
- .set EC_WORD_HAH, (EC_GROUP_VOICES << 9) | 0x26
- .set EC_WORD_YUP, (EC_GROUP_VOICES << 9) | 0x27
- .set EC_WORD_HAHAHA, (EC_GROUP_VOICES << 9) | 0x28
- .set EC_WORD_AIYEEH, (EC_GROUP_VOICES << 9) | 0x29
- .set EC_WORD_HIYAH, (EC_GROUP_VOICES << 9) | 0x2a
- .set EC_WORD_FUFUFU, (EC_GROUP_VOICES << 9) | 0x2b
- .set EC_WORD_LOL, (EC_GROUP_VOICES << 9) | 0x2c
- .set EC_WORD_SNORT, (EC_GROUP_VOICES << 9) | 0x2d
- .set EC_WORD_HUMPH, (EC_GROUP_VOICES << 9) | 0x2e
- .set EC_WORD_HEHEHE, (EC_GROUP_VOICES << 9) | 0x2f
- .set EC_WORD_HEH, (EC_GROUP_VOICES << 9) | 0x30
- .set EC_WORD_HOHOHO, (EC_GROUP_VOICES << 9) | 0x31
- .set EC_WORD_UH_HUH, (EC_GROUP_VOICES << 9) | 0x32
- .set EC_WORD_OH_DEAR, (EC_GROUP_VOICES << 9) | 0x33
- .set EC_WORD_ARRGH, (EC_GROUP_VOICES << 9) | 0x34
- .set EC_WORD_MUFUFU, (EC_GROUP_VOICES << 9) | 0x35
- .set EC_WORD_MMM, (EC_GROUP_VOICES << 9) | 0x36
- .set EC_WORD_OH_KAY, (EC_GROUP_VOICES << 9) | 0x37
- .set EC_WORD_OKAY, (EC_GROUP_VOICES << 9) | 0x38
- .set EC_WORD_LALALA, (EC_GROUP_VOICES << 9) | 0x39
- .set EC_WORD_YAY, (EC_GROUP_VOICES << 9) | 0x3a
- .set EC_WORD_AWW, (EC_GROUP_VOICES << 9) | 0x3b
- .set EC_WORD_WOWEE, (EC_GROUP_VOICES << 9) | 0x3c
- .set EC_WORD_GWAH, (EC_GROUP_VOICES << 9) | 0x3d
- .set EC_WORD_WAHAHAHA, (EC_GROUP_VOICES << 9) | 0x3e
-
-@ Speech
- .set EC_WORD_LISTEN, (EC_GROUP_SPEECH << 9) | 0x0
- .set EC_WORD_NOT_VERY, (EC_GROUP_SPEECH << 9) | 0x1
- .set EC_WORD_MEAN, (EC_GROUP_SPEECH << 9) | 0x2
- .set EC_WORD_LIE, (EC_GROUP_SPEECH << 9) | 0x3
- .set EC_WORD_LAY, (EC_GROUP_SPEECH << 9) | 0x4
- .set EC_WORD_RECOMMEND, (EC_GROUP_SPEECH << 9) | 0x5
- .set EC_WORD_NITWIT, (EC_GROUP_SPEECH << 9) | 0x6
- .set EC_WORD_QUITE, (EC_GROUP_SPEECH << 9) | 0x7
- .set EC_WORD_FROM, (EC_GROUP_SPEECH << 9) | 0x8
- .set EC_WORD_FEELING, (EC_GROUP_SPEECH << 9) | 0x9
- .set EC_WORD_BUT, (EC_GROUP_SPEECH << 9) | 0xa
- .set EC_WORD_HOWEVER, (EC_GROUP_SPEECH << 9) | 0xb
- .set EC_WORD_CASE, (EC_GROUP_SPEECH << 9) | 0xc
- .set EC_WORD_THE, (EC_GROUP_SPEECH << 9) | 0xd
- .set EC_WORD_MISS, (EC_GROUP_SPEECH << 9) | 0xe
- .set EC_WORD_HOW, (EC_GROUP_SPEECH << 9) | 0xf
- .set EC_WORD_HIT, (EC_GROUP_SPEECH << 9) | 0x10
- .set EC_WORD_ENOUGH, (EC_GROUP_SPEECH << 9) | 0x11
- .set EC_WORD_A_LOT, (EC_GROUP_SPEECH << 9) | 0x12
- .set EC_WORD_A_LITTLE, (EC_GROUP_SPEECH << 9) | 0x13
- .set EC_WORD_ABSOLUTELY, (EC_GROUP_SPEECH << 9) | 0x14
- .set EC_WORD_AND, (EC_GROUP_SPEECH << 9) | 0x15
- .set EC_WORD_ONLY, (EC_GROUP_SPEECH << 9) | 0x16
- .set EC_WORD_AROUND, (EC_GROUP_SPEECH << 9) | 0x17
- .set EC_WORD_PROBABLY, (EC_GROUP_SPEECH << 9) | 0x18
- .set EC_WORD_IF, (EC_GROUP_SPEECH << 9) | 0x19
- .set EC_WORD_VERY, (EC_GROUP_SPEECH << 9) | 0x1a
- .set EC_WORD_A_TINY_BIT, (EC_GROUP_SPEECH << 9) | 0x1b
- .set EC_WORD_WILD, (EC_GROUP_SPEECH << 9) | 0x1c
- .set EC_WORD_THAT_S, (EC_GROUP_SPEECH << 9) | 0x1d
- .set EC_WORD_JUST, (EC_GROUP_SPEECH << 9) | 0x1e
- .set EC_WORD_EVEN_SO, (EC_GROUP_SPEECH << 9) | 0x1f
- .set EC_WORD_MUST_BE, (EC_GROUP_SPEECH << 9) | 0x20
- .set EC_WORD_NATURALLY, (EC_GROUP_SPEECH << 9) | 0x21
- .set EC_WORD_FOR_NOW, (EC_GROUP_SPEECH << 9) | 0x22
- .set EC_WORD_UNDERSTOOD, (EC_GROUP_SPEECH << 9) | 0x23
- .set EC_WORD_JOKING, (EC_GROUP_SPEECH << 9) | 0x24
- .set EC_WORD_READY, (EC_GROUP_SPEECH << 9) | 0x25
- .set EC_WORD_SOMETHING, (EC_GROUP_SPEECH << 9) | 0x26
- .set EC_WORD_SOMEHOW, (EC_GROUP_SPEECH << 9) | 0x27
- .set EC_WORD_ALTHOUGH, (EC_GROUP_SPEECH << 9) | 0x28
- .set EC_WORD_ALSO, (EC_GROUP_SPEECH << 9) | 0x29
- .set EC_WORD_PERFECT, (EC_GROUP_SPEECH << 9) | 0x2a
- .set EC_WORD_AS_MUCH_AS, (EC_GROUP_SPEECH << 9) | 0x2b
- .set EC_WORD_REALLY, (EC_GROUP_SPEECH << 9) | 0x2c
- .set EC_WORD_TRULY, (EC_GROUP_SPEECH << 9) | 0x2d
- .set EC_WORD_SERIOUSLY, (EC_GROUP_SPEECH << 9) | 0x2e
- .set EC_WORD_TOTALLY, (EC_GROUP_SPEECH << 9) | 0x2f
- .set EC_WORD_UNTIL, (EC_GROUP_SPEECH << 9) | 0x30
- .set EC_WORD_AS_IF, (EC_GROUP_SPEECH << 9) | 0x31
- .set EC_WORD_MOOD, (EC_GROUP_SPEECH << 9) | 0x32
- .set EC_WORD_RATHER, (EC_GROUP_SPEECH << 9) | 0x33
- .set EC_WORD_AWFULLY, (EC_GROUP_SPEECH << 9) | 0x34
- .set EC_WORD_MODE, (EC_GROUP_SPEECH << 9) | 0x35
- .set EC_WORD_MORE, (EC_GROUP_SPEECH << 9) | 0x36
- .set EC_WORD_TOO_LATE, (EC_GROUP_SPEECH << 9) | 0x37
- .set EC_WORD_FINALLY, (EC_GROUP_SPEECH << 9) | 0x38
- .set EC_WORD_ANY, (EC_GROUP_SPEECH << 9) | 0x39
- .set EC_WORD_INSTEAD, (EC_GROUP_SPEECH << 9) | 0x3a
- .set EC_WORD_FANTASTIC, (EC_GROUP_SPEECH << 9) | 0x3b
-
-@ Endings
- .set EC_WORD_WILL, (EC_GROUP_ENDINGS << 9) | 0x0
- .set EC_WORD_WILL_BE_HERE, (EC_GROUP_ENDINGS << 9) | 0x1
- .set EC_WORD_OR, (EC_GROUP_ENDINGS << 9) | 0x2
- .set EC_WORD_TIMES, (EC_GROUP_ENDINGS << 9) | 0x3
- .set EC_WORD_WONDER, (EC_GROUP_ENDINGS << 9) | 0x4
- .set EC_WORD_IS_IT_QUES, (EC_GROUP_ENDINGS << 9) | 0x5
- .set EC_WORD_BE, (EC_GROUP_ENDINGS << 9) | 0x6
- .set EC_WORD_GIMME, (EC_GROUP_ENDINGS << 9) | 0x7
- .set EC_WORD_COULD, (EC_GROUP_ENDINGS << 9) | 0x8
- .set EC_WORD_LIKELY_TO, (EC_GROUP_ENDINGS << 9) | 0x9
- .set EC_WORD_WOULD, (EC_GROUP_ENDINGS << 9) | 0xa
- .set EC_WORD_IS, (EC_GROUP_ENDINGS << 9) | 0xb
- .set EC_WORD_ISN_T_IT_QUES, (EC_GROUP_ENDINGS << 9) | 0xc
- .set EC_WORD_LET_S, (EC_GROUP_ENDINGS << 9) | 0xd
- .set EC_WORD_OTHER, (EC_GROUP_ENDINGS << 9) | 0xe
- .set EC_WORD_ARE, (EC_GROUP_ENDINGS << 9) | 0xf
- .set EC_WORD_WAS, (EC_GROUP_ENDINGS << 9) | 0x10
- .set EC_WORD_WERE, (EC_GROUP_ENDINGS << 9) | 0x11
- .set EC_WORD_THOSE, (EC_GROUP_ENDINGS << 9) | 0x12
- .set EC_WORD_ISN_T, (EC_GROUP_ENDINGS << 9) | 0x13
- .set EC_WORD_WON_T, (EC_GROUP_ENDINGS << 9) | 0x14
- .set EC_WORD_CAN_T, (EC_GROUP_ENDINGS << 9) | 0x15
- .set EC_WORD_CAN, (EC_GROUP_ENDINGS << 9) | 0x16
- .set EC_WORD_DON_T, (EC_GROUP_ENDINGS << 9) | 0x17
- .set EC_WORD_DO, (EC_GROUP_ENDINGS << 9) | 0x18
- .set EC_WORD_DOES, (EC_GROUP_ENDINGS << 9) | 0x19
- .set EC_WORD_WHOM, (EC_GROUP_ENDINGS << 9) | 0x1a
- .set EC_WORD_WHICH, (EC_GROUP_ENDINGS << 9) | 0x1b
- .set EC_WORD_WASN_T, (EC_GROUP_ENDINGS << 9) | 0x1c
- .set EC_WORD_WEREN_T, (EC_GROUP_ENDINGS << 9) | 0x1d
- .set EC_WORD_HAVE, (EC_GROUP_ENDINGS << 9) | 0x1e
- .set EC_WORD_HAVEN_T, (EC_GROUP_ENDINGS << 9) | 0x1f
- .set EC_WORD_A, (EC_GROUP_ENDINGS << 9) | 0x20
- .set EC_WORD_AN, (EC_GROUP_ENDINGS << 9) | 0x21
- .set EC_WORD_NOT, (EC_GROUP_ENDINGS << 9) | 0x22
- .set EC_WORD_THERE, (EC_GROUP_ENDINGS << 9) | 0x23
- .set EC_WORD_OK_QUES, (EC_GROUP_ENDINGS << 9) | 0x24
- .set EC_WORD_SO, (EC_GROUP_ENDINGS << 9) | 0x25
- .set EC_WORD_MAYBE, (EC_GROUP_ENDINGS << 9) | 0x26
- .set EC_WORD_ABOUT, (EC_GROUP_ENDINGS << 9) | 0x27
- .set EC_WORD_OVER, (EC_GROUP_ENDINGS << 9) | 0x28
- .set EC_WORD_IT, (EC_GROUP_ENDINGS << 9) | 0x29
- .set EC_WORD_ALL, (EC_GROUP_ENDINGS << 9) | 0x2a
- .set EC_WORD_FOR, (EC_GROUP_ENDINGS << 9) | 0x2b
- .set EC_WORD_ON, (EC_GROUP_ENDINGS << 9) | 0x2c
- .set EC_WORD_OFF, (EC_GROUP_ENDINGS << 9) | 0x2d
- .set EC_WORD_AS, (EC_GROUP_ENDINGS << 9) | 0x2e
- .set EC_WORD_TO, (EC_GROUP_ENDINGS << 9) | 0x2f
- .set EC_WORD_WITH, (EC_GROUP_ENDINGS << 9) | 0x30
- .set EC_WORD_BETTER, (EC_GROUP_ENDINGS << 9) | 0x31
- .set EC_WORD_EVER, (EC_GROUP_ENDINGS << 9) | 0x32
- .set EC_WORD_SINCE, (EC_GROUP_ENDINGS << 9) | 0x33
- .set EC_WORD_OF, (EC_GROUP_ENDINGS << 9) | 0x34
- .set EC_WORD_BELONGS_TO, (EC_GROUP_ENDINGS << 9) | 0x35
- .set EC_WORD_AT, (EC_GROUP_ENDINGS << 9) | 0x36
- .set EC_WORD_IN, (EC_GROUP_ENDINGS << 9) | 0x37
- .set EC_WORD_OUT, (EC_GROUP_ENDINGS << 9) | 0x38
- .set EC_WORD_TOO, (EC_GROUP_ENDINGS << 9) | 0x39
- .set EC_WORD_LIKE, (EC_GROUP_ENDINGS << 9) | 0x3a
- .set EC_WORD_DID, (EC_GROUP_ENDINGS << 9) | 0x3b
- .set EC_WORD_DIDN_T, (EC_GROUP_ENDINGS << 9) | 0x3c
- .set EC_WORD_DOESN_T, (EC_GROUP_ENDINGS << 9) | 0x3d
- .set EC_WORD_WITHOUT, (EC_GROUP_ENDINGS << 9) | 0x3e
- .set EC_WORD_AFTER, (EC_GROUP_ENDINGS << 9) | 0x3f
- .set EC_WORD_BEFORE, (EC_GROUP_ENDINGS << 9) | 0x40
- .set EC_WORD_WHILE, (EC_GROUP_ENDINGS << 9) | 0x41
- .set EC_WORD_THAN, (EC_GROUP_ENDINGS << 9) | 0x42
- .set EC_WORD_ONCE, (EC_GROUP_ENDINGS << 9) | 0x43
- .set EC_WORD_ANYWHERE, (EC_GROUP_ENDINGS << 9) | 0x44
-
-@ Feelings
- .set EC_WORD_MEET, (EC_GROUP_FEELINGS << 9) | 0x0
- .set EC_WORD_PLAY, (EC_GROUP_FEELINGS << 9) | 0x1
- .set EC_WORD_HURRIED, (EC_GROUP_FEELINGS << 9) | 0x2
- .set EC_WORD_GOES, (EC_GROUP_FEELINGS << 9) | 0x3
- .set EC_WORD_GIDDY, (EC_GROUP_FEELINGS << 9) | 0x4
- .set EC_WORD_HAPPY, (EC_GROUP_FEELINGS << 9) | 0x5
- .set EC_WORD_HAPPINESS, (EC_GROUP_FEELINGS << 9) | 0x6
- .set EC_WORD_EXCITE, (EC_GROUP_FEELINGS << 9) | 0x7
- .set EC_WORD_IMPORTANT, (EC_GROUP_FEELINGS << 9) | 0x8
- .set EC_WORD_FUNNY, (EC_GROUP_FEELINGS << 9) | 0x9
- .set EC_WORD_GOT, (EC_GROUP_FEELINGS << 9) | 0xa
- .set EC_WORD_GO_HOME, (EC_GROUP_FEELINGS << 9) | 0xb
- .set EC_WORD_DISAPPOINTED, (EC_GROUP_FEELINGS << 9) | 0xc
- .set EC_WORD_DISAPPOINTS, (EC_GROUP_FEELINGS << 9) | 0xd
- .set EC_WORD_SAD, (EC_GROUP_FEELINGS << 9) | 0xe
- .set EC_WORD_TRY, (EC_GROUP_FEELINGS << 9) | 0xf
- .set EC_WORD_TRIES, (EC_GROUP_FEELINGS << 9) | 0x10
- .set EC_WORD_HEARS, (EC_GROUP_FEELINGS << 9) | 0x11
- .set EC_WORD_THINK, (EC_GROUP_FEELINGS << 9) | 0x12
- .set EC_WORD_HEAR, (EC_GROUP_FEELINGS << 9) | 0x13
- .set EC_WORD_WANTS, (EC_GROUP_FEELINGS << 9) | 0x14
- .set EC_WORD_MISHEARD, (EC_GROUP_FEELINGS << 9) | 0x15
- .set EC_WORD_DISLIKE, (EC_GROUP_FEELINGS << 9) | 0x16
- .set EC_WORD_ANGRY, (EC_GROUP_FEELINGS << 9) | 0x17
- .set EC_WORD_ANGER, (EC_GROUP_FEELINGS << 9) | 0x18
- .set EC_WORD_SCARY, (EC_GROUP_FEELINGS << 9) | 0x19
- .set EC_WORD_LONESOME, (EC_GROUP_FEELINGS << 9) | 0x1a
- .set EC_WORD_DISAPPOINT, (EC_GROUP_FEELINGS << 9) | 0x1b
- .set EC_WORD_JOY, (EC_GROUP_FEELINGS << 9) | 0x1c
- .set EC_WORD_GETS, (EC_GROUP_FEELINGS << 9) | 0x1d
- .set EC_WORD_NEVER, (EC_GROUP_FEELINGS << 9) | 0x1e
- .set EC_WORD_DARN, (EC_GROUP_FEELINGS << 9) | 0x1f
- .set EC_WORD_DOWNCAST, (EC_GROUP_FEELINGS << 9) | 0x20
- .set EC_WORD_INCREDIBLE, (EC_GROUP_FEELINGS << 9) | 0x21
- .set EC_WORD_LIKES, (EC_GROUP_FEELINGS << 9) | 0x22
- .set EC_WORD_DISLIKES, (EC_GROUP_FEELINGS << 9) | 0x23
- .set EC_WORD_BORING, (EC_GROUP_FEELINGS << 9) | 0x24
- .set EC_WORD_CARE, (EC_GROUP_FEELINGS << 9) | 0x25
- .set EC_WORD_CARES, (EC_GROUP_FEELINGS << 9) | 0x26
- .set EC_WORD_ALL_RIGHT, (EC_GROUP_FEELINGS << 9) | 0x27
- .set EC_WORD_ADORE, (EC_GROUP_FEELINGS << 9) | 0x28
- .set EC_WORD_DISASTER, (EC_GROUP_FEELINGS << 9) | 0x29
- .set EC_WORD_ENJOY, (EC_GROUP_FEELINGS << 9) | 0x2a
- .set EC_WORD_ENJOYS, (EC_GROUP_FEELINGS << 9) | 0x2b
- .set EC_WORD_EAT, (EC_GROUP_FEELINGS << 9) | 0x2c
- .set EC_WORD_LACKING, (EC_GROUP_FEELINGS << 9) | 0x2d
- .set EC_WORD_BAD, (EC_GROUP_FEELINGS << 9) | 0x2e
- .set EC_WORD_HARD, (EC_GROUP_FEELINGS << 9) | 0x2f
- .set EC_WORD_TERRIBLE, (EC_GROUP_FEELINGS << 9) | 0x30
- .set EC_WORD_SHOULD, (EC_GROUP_FEELINGS << 9) | 0x31
- .set EC_WORD_NICE, (EC_GROUP_FEELINGS << 9) | 0x32
- .set EC_WORD_DRINK, (EC_GROUP_FEELINGS << 9) | 0x33
- .set EC_WORD_SURPRISE, (EC_GROUP_FEELINGS << 9) | 0x34
- .set EC_WORD_FEAR, (EC_GROUP_FEELINGS << 9) | 0x35
- .set EC_WORD_WANT, (EC_GROUP_FEELINGS << 9) | 0x36
- .set EC_WORD_WAIT, (EC_GROUP_FEELINGS << 9) | 0x37
- .set EC_WORD_SATISFIED, (EC_GROUP_FEELINGS << 9) | 0x38
- .set EC_WORD_SEE, (EC_GROUP_FEELINGS << 9) | 0x39
- .set EC_WORD_RARE, (EC_GROUP_FEELINGS << 9) | 0x3a
- .set EC_WORD_NEGATIVE, (EC_GROUP_FEELINGS << 9) | 0x3b
- .set EC_WORD_DONE, (EC_GROUP_FEELINGS << 9) | 0x3c
- .set EC_WORD_DANGER, (EC_GROUP_FEELINGS << 9) | 0x3d
- .set EC_WORD_DEFEATED, (EC_GROUP_FEELINGS << 9) | 0x3e
- .set EC_WORD_BEAT, (EC_GROUP_FEELINGS << 9) | 0x3f
- .set EC_WORD_GREAT, (EC_GROUP_FEELINGS << 9) | 0x40
- .set EC_WORD_ROMANTIC, (EC_GROUP_FEELINGS << 9) | 0x41
- .set EC_WORD_QUESTION, (EC_GROUP_FEELINGS << 9) | 0x42
- .set EC_WORD_UNDERSTAND, (EC_GROUP_FEELINGS << 9) | 0x43
- .set EC_WORD_UNDERSTANDS, (EC_GROUP_FEELINGS << 9) | 0x44
-
-@ Conditions
- .set EC_WORD_HOT, (EC_GROUP_CONDITIONS << 9) | 0x0
- .set EC_WORD_EXISTS, (EC_GROUP_CONDITIONS << 9) | 0x1
- .set EC_WORD_EXCESS, (EC_GROUP_CONDITIONS << 9) | 0x2
- .set EC_WORD_APPROVED, (EC_GROUP_CONDITIONS << 9) | 0x3
- .set EC_WORD_HAS, (EC_GROUP_CONDITIONS << 9) | 0x4
- .set EC_WORD_GOOD, (EC_GROUP_CONDITIONS << 9) | 0x5
- .set EC_WORD_LESS, (EC_GROUP_CONDITIONS << 9) | 0x6
- .set EC_WORD_MOMENTUM, (EC_GROUP_CONDITIONS << 9) | 0x7
- .set EC_WORD_GOING, (EC_GROUP_CONDITIONS << 9) | 0x8
- .set EC_WORD_WEIRD, (EC_GROUP_CONDITIONS << 9) | 0x9
- .set EC_WORD_BUSY, (EC_GROUP_CONDITIONS << 9) | 0xa
- .set EC_WORD_TOGETHER, (EC_GROUP_CONDITIONS << 9) | 0xb
- .set EC_WORD_FULL, (EC_GROUP_CONDITIONS << 9) | 0xc
- .set EC_WORD_ABSENT, (EC_GROUP_CONDITIONS << 9) | 0xd
- .set EC_WORD_BEING, (EC_GROUP_CONDITIONS << 9) | 0xe
- .set EC_WORD_NEED, (EC_GROUP_CONDITIONS << 9) | 0xf
- .set EC_WORD_TASTY, (EC_GROUP_CONDITIONS << 9) | 0x10
- .set EC_WORD_SKILLED, (EC_GROUP_CONDITIONS << 9) | 0x11
- .set EC_WORD_NOISY, (EC_GROUP_CONDITIONS << 9) | 0x12
- .set EC_WORD_BIG, (EC_GROUP_CONDITIONS << 9) | 0x13
- .set EC_WORD_LATE, (EC_GROUP_CONDITIONS << 9) | 0x14
- .set EC_WORD_CLOSE, (EC_GROUP_CONDITIONS << 9) | 0x15
- .set EC_WORD_DOCILE, (EC_GROUP_CONDITIONS << 9) | 0x16
- .set EC_WORD_AMUSING, (EC_GROUP_CONDITIONS << 9) | 0x17
- .set EC_WORD_ENTERTAINING, (EC_GROUP_CONDITIONS << 9) | 0x18
- .set EC_WORD_PERFECTION, (EC_GROUP_CONDITIONS << 9) | 0x19
- .set EC_WORD_PRETTY, (EC_GROUP_CONDITIONS << 9) | 0x1a
- .set EC_WORD_HEALTHY, (EC_GROUP_CONDITIONS << 9) | 0x1b
- .set EC_WORD_EXCELLENT, (EC_GROUP_CONDITIONS << 9) | 0x1c
- .set EC_WORD_UPSIDE_DOWN, (EC_GROUP_CONDITIONS << 9) | 0x1d
- .set EC_WORD_COLD, (EC_GROUP_CONDITIONS << 9) | 0x1e
- .set EC_WORD_REFRESHING, (EC_GROUP_CONDITIONS << 9) | 0x1f
- .set EC_WORD_UNAVOIDABLE, (EC_GROUP_CONDITIONS << 9) | 0x20
- .set EC_WORD_MUCH, (EC_GROUP_CONDITIONS << 9) | 0x21
- .set EC_WORD_OVERWHELMING, (EC_GROUP_CONDITIONS << 9) | 0x22
- .set EC_WORD_FABULOUS, (EC_GROUP_CONDITIONS << 9) | 0x23
- .set EC_WORD_ELSE, (EC_GROUP_CONDITIONS << 9) | 0x24
- .set EC_WORD_EXPENSIVE, (EC_GROUP_CONDITIONS << 9) | 0x25
- .set EC_WORD_CORRECT, (EC_GROUP_CONDITIONS << 9) | 0x26
- .set EC_WORD_IMPOSSIBLE, (EC_GROUP_CONDITIONS << 9) | 0x27
- .set EC_WORD_SMALL, (EC_GROUP_CONDITIONS << 9) | 0x28
- .set EC_WORD_DIFFERENT, (EC_GROUP_CONDITIONS << 9) | 0x29
- .set EC_WORD_TIRED, (EC_GROUP_CONDITIONS << 9) | 0x2a
- .set EC_WORD_SKILL, (EC_GROUP_CONDITIONS << 9) | 0x2b
- .set EC_WORD_TOP, (EC_GROUP_CONDITIONS << 9) | 0x2c
- .set EC_WORD_NON_STOP, (EC_GROUP_CONDITIONS << 9) | 0x2d
- .set EC_WORD_PREPOSTEROUS, (EC_GROUP_CONDITIONS << 9) | 0x2e
- .set EC_WORD_NONE, (EC_GROUP_CONDITIONS << 9) | 0x2f
- .set EC_WORD_NOTHING, (EC_GROUP_CONDITIONS << 9) | 0x30
- .set EC_WORD_NATURAL, (EC_GROUP_CONDITIONS << 9) | 0x31
- .set EC_WORD_BECOMES, (EC_GROUP_CONDITIONS << 9) | 0x32
- .set EC_WORD_LUKEWARM, (EC_GROUP_CONDITIONS << 9) | 0x33
- .set EC_WORD_FAST, (EC_GROUP_CONDITIONS << 9) | 0x34
- .set EC_WORD_LOW, (EC_GROUP_CONDITIONS << 9) | 0x35
- .set EC_WORD_AWFUL, (EC_GROUP_CONDITIONS << 9) | 0x36
- .set EC_WORD_ALONE, (EC_GROUP_CONDITIONS << 9) | 0x37
- .set EC_WORD_BORED, (EC_GROUP_CONDITIONS << 9) | 0x38
- .set EC_WORD_SECRET, (EC_GROUP_CONDITIONS << 9) | 0x39
- .set EC_WORD_MYSTERY, (EC_GROUP_CONDITIONS << 9) | 0x3a
- .set EC_WORD_LACKS, (EC_GROUP_CONDITIONS << 9) | 0x3b
- .set EC_WORD_BEST, (EC_GROUP_CONDITIONS << 9) | 0x3c
- .set EC_WORD_LOUSY, (EC_GROUP_CONDITIONS << 9) | 0x3d
- .set EC_WORD_MISTAKE, (EC_GROUP_CONDITIONS << 9) | 0x3e
- .set EC_WORD_KIND, (EC_GROUP_CONDITIONS << 9) | 0x3f
- .set EC_WORD_WELL, (EC_GROUP_CONDITIONS << 9) | 0x40
- .set EC_WORD_WEAKENED, (EC_GROUP_CONDITIONS << 9) | 0x41
- .set EC_WORD_SIMPLE, (EC_GROUP_CONDITIONS << 9) | 0x42
- .set EC_WORD_SEEMS, (EC_GROUP_CONDITIONS << 9) | 0x43
- .set EC_WORD_BADLY, (EC_GROUP_CONDITIONS << 9) | 0x44
-
-@ Actions
- .set EC_WORD_MEETS, (EC_GROUP_ACTIONS << 9) | 0x0
- .set EC_WORD_CONCEDE, (EC_GROUP_ACTIONS << 9) | 0x1
- .set EC_WORD_GIVE, (EC_GROUP_ACTIONS << 9) | 0x2
- .set EC_WORD_GIVES, (EC_GROUP_ACTIONS << 9) | 0x3
- .set EC_WORD_PLAYED, (EC_GROUP_ACTIONS << 9) | 0x4
- .set EC_WORD_PLAYS, (EC_GROUP_ACTIONS << 9) | 0x5
- .set EC_WORD_COLLECT, (EC_GROUP_ACTIONS << 9) | 0x6
- .set EC_WORD_WALKING, (EC_GROUP_ACTIONS << 9) | 0x7
- .set EC_WORD_WALKS, (EC_GROUP_ACTIONS << 9) | 0x8
- .set EC_WORD_SAYS, (EC_GROUP_ACTIONS << 9) | 0x9
- .set EC_WORD_WENT, (EC_GROUP_ACTIONS << 9) | 0xa
- .set EC_WORD_SAID, (EC_GROUP_ACTIONS << 9) | 0xb
- .set EC_WORD_WAKE_UP, (EC_GROUP_ACTIONS << 9) | 0xc
- .set EC_WORD_WAKES_UP, (EC_GROUP_ACTIONS << 9) | 0xd
- .set EC_WORD_ANGERS, (EC_GROUP_ACTIONS << 9) | 0xe
- .set EC_WORD_TEACH, (EC_GROUP_ACTIONS << 9) | 0xf
- .set EC_WORD_TEACHES, (EC_GROUP_ACTIONS << 9) | 0x10
- .set EC_WORD_PLEASE, (EC_GROUP_ACTIONS << 9) | 0x11
- .set EC_WORD_LEARN, (EC_GROUP_ACTIONS << 9) | 0x12
- .set EC_WORD_CHANGE, (EC_GROUP_ACTIONS << 9) | 0x13
- .set EC_WORD_STORY, (EC_GROUP_ACTIONS << 9) | 0x14
- .set EC_WORD_TRUST, (EC_GROUP_ACTIONS << 9) | 0x15
- .set EC_WORD_LAVISH, (EC_GROUP_ACTIONS << 9) | 0x16
- .set EC_WORD_LISTENS, (EC_GROUP_ACTIONS << 9) | 0x17
- .set EC_WORD_HEARING, (EC_GROUP_ACTIONS << 9) | 0x18
- .set EC_WORD_TRAINS, (EC_GROUP_ACTIONS << 9) | 0x19
- .set EC_WORD_CHOOSE, (EC_GROUP_ACTIONS << 9) | 0x1a
- .set EC_WORD_COME, (EC_GROUP_ACTIONS << 9) | 0x1b
- .set EC_WORD_CAME, (EC_GROUP_ACTIONS << 9) | 0x1c
- .set EC_WORD_SEARCH, (EC_GROUP_ACTIONS << 9) | 0x1d
- .set EC_WORD_MAKE, (EC_GROUP_ACTIONS << 9) | 0x1e
- .set EC_WORD_CAUSE, (EC_GROUP_ACTIONS << 9) | 0x1f
- .set EC_WORD_KNOW, (EC_GROUP_ACTIONS << 9) | 0x20
- .set EC_WORD_KNOWS, (EC_GROUP_ACTIONS << 9) | 0x21
- .set EC_WORD_REFUSE, (EC_GROUP_ACTIONS << 9) | 0x22
- .set EC_WORD_STORES, (EC_GROUP_ACTIONS << 9) | 0x23
- .set EC_WORD_BRAG, (EC_GROUP_ACTIONS << 9) | 0x24
- .set EC_WORD_IGNORANT, (EC_GROUP_ACTIONS << 9) | 0x25
- .set EC_WORD_THINKS, (EC_GROUP_ACTIONS << 9) | 0x26
- .set EC_WORD_BELIEVE, (EC_GROUP_ACTIONS << 9) | 0x27
- .set EC_WORD_SLIDE, (EC_GROUP_ACTIONS << 9) | 0x28
- .set EC_WORD_EATS, (EC_GROUP_ACTIONS << 9) | 0x29
- .set EC_WORD_USE, (EC_GROUP_ACTIONS << 9) | 0x2a
- .set EC_WORD_USES, (EC_GROUP_ACTIONS << 9) | 0x2b
- .set EC_WORD_USING, (EC_GROUP_ACTIONS << 9) | 0x2c
- .set EC_WORD_COULDN_T, (EC_GROUP_ACTIONS << 9) | 0x2d
- .set EC_WORD_CAPABLE, (EC_GROUP_ACTIONS << 9) | 0x2e
- .set EC_WORD_DISAPPEAR, (EC_GROUP_ACTIONS << 9) | 0x2f
- .set EC_WORD_APPEAR, (EC_GROUP_ACTIONS << 9) | 0x30
- .set EC_WORD_THROW, (EC_GROUP_ACTIONS << 9) | 0x31
- .set EC_WORD_WORRY, (EC_GROUP_ACTIONS << 9) | 0x32
- .set EC_WORD_SLEPT, (EC_GROUP_ACTIONS << 9) | 0x33
- .set EC_WORD_SLEEP, (EC_GROUP_ACTIONS << 9) | 0x34
- .set EC_WORD_RELEASE, (EC_GROUP_ACTIONS << 9) | 0x35
- .set EC_WORD_DRINKS, (EC_GROUP_ACTIONS << 9) | 0x36
- .set EC_WORD_RUNS, (EC_GROUP_ACTIONS << 9) | 0x37
- .set EC_WORD_RUN, (EC_GROUP_ACTIONS << 9) | 0x38
- .set EC_WORD_WORKS, (EC_GROUP_ACTIONS << 9) | 0x39
- .set EC_WORD_WORKING, (EC_GROUP_ACTIONS << 9) | 0x3a
- .set EC_WORD_TALKING, (EC_GROUP_ACTIONS << 9) | 0x3b
- .set EC_WORD_TALK, (EC_GROUP_ACTIONS << 9) | 0x3c
- .set EC_WORD_SINK, (EC_GROUP_ACTIONS << 9) | 0x3d
- .set EC_WORD_SMACK, (EC_GROUP_ACTIONS << 9) | 0x3e
- .set EC_WORD_PRETEND, (EC_GROUP_ACTIONS << 9) | 0x3f
- .set EC_WORD_PRAISE, (EC_GROUP_ACTIONS << 9) | 0x40
- .set EC_WORD_OVERDO, (EC_GROUP_ACTIONS << 9) | 0x41
- .set EC_WORD_SHOW, (EC_GROUP_ACTIONS << 9) | 0x42
- .set EC_WORD_LOOKS, (EC_GROUP_ACTIONS << 9) | 0x43
- .set EC_WORD_SEES, (EC_GROUP_ACTIONS << 9) | 0x44
- .set EC_WORD_SEEK, (EC_GROUP_ACTIONS << 9) | 0x45
- .set EC_WORD_OWN, (EC_GROUP_ACTIONS << 9) | 0x46
- .set EC_WORD_TAKE, (EC_GROUP_ACTIONS << 9) | 0x47
- .set EC_WORD_ALLOW, (EC_GROUP_ACTIONS << 9) | 0x48
- .set EC_WORD_FORGET, (EC_GROUP_ACTIONS << 9) | 0x49
- .set EC_WORD_FORGETS, (EC_GROUP_ACTIONS << 9) | 0x4a
- .set EC_WORD_APPEARS, (EC_GROUP_ACTIONS << 9) | 0x4b
- .set EC_WORD_FAINT, (EC_GROUP_ACTIONS << 9) | 0x4c
- .set EC_WORD_FAINTED, (EC_GROUP_ACTIONS << 9) | 0x4d
-
-@ Lifestyle
- .set EC_WORD_CHORES, (EC_GROUP_LIFESTYLE << 9) | 0x0
- .set EC_WORD_HOME, (EC_GROUP_LIFESTYLE << 9) | 0x1
- .set EC_WORD_MONEY, (EC_GROUP_LIFESTYLE << 9) | 0x2
- .set EC_WORD_ALLOWANCE, (EC_GROUP_LIFESTYLE << 9) | 0x3
- .set EC_WORD_BATH, (EC_GROUP_LIFESTYLE << 9) | 0x4
- .set EC_WORD_CONVERSATION, (EC_GROUP_LIFESTYLE << 9) | 0x5
- .set EC_WORD_SCHOOL, (EC_GROUP_LIFESTYLE << 9) | 0x6
- .set EC_WORD_COMMEMORATE, (EC_GROUP_LIFESTYLE << 9) | 0x7
- .set EC_WORD_HABIT, (EC_GROUP_LIFESTYLE << 9) | 0x8
- .set EC_WORD_GROUP, (EC_GROUP_LIFESTYLE << 9) | 0x9
- .set EC_WORD_WORD, (EC_GROUP_LIFESTYLE << 9) | 0xa
- .set EC_WORD_STORE, (EC_GROUP_LIFESTYLE << 9) | 0xb
- .set EC_WORD_SERVICE, (EC_GROUP_LIFESTYLE << 9) | 0xc
- .set EC_WORD_WORK, (EC_GROUP_LIFESTYLE << 9) | 0xd
- .set EC_WORD_SYSTEM, (EC_GROUP_LIFESTYLE << 9) | 0xe
- .set EC_WORD_TRAIN, (EC_GROUP_LIFESTYLE << 9) | 0xf
- .set EC_WORD_CLASS, (EC_GROUP_LIFESTYLE << 9) | 0x10
- .set EC_WORD_LESSONS, (EC_GROUP_LIFESTYLE << 9) | 0x11
- .set EC_WORD_INFORMATION, (EC_GROUP_LIFESTYLE << 9) | 0x12
- .set EC_WORD_LIVING, (EC_GROUP_LIFESTYLE << 9) | 0x13
- .set EC_WORD_TEACHER, (EC_GROUP_LIFESTYLE << 9) | 0x14
- .set EC_WORD_TOURNAMENT, (EC_GROUP_LIFESTYLE << 9) | 0x15
- .set EC_WORD_LETTER, (EC_GROUP_LIFESTYLE << 9) | 0x16
- .set EC_WORD_EVENT, (EC_GROUP_LIFESTYLE << 9) | 0x17
- .set EC_WORD_DIGITAL, (EC_GROUP_LIFESTYLE << 9) | 0x18
- .set EC_WORD_TEST, (EC_GROUP_LIFESTYLE << 9) | 0x19
- .set EC_WORD_DEPT_STORE, (EC_GROUP_LIFESTYLE << 9) | 0x1a
- .set EC_WORD_TELEVISION, (EC_GROUP_LIFESTYLE << 9) | 0x1b
- .set EC_WORD_PHONE, (EC_GROUP_LIFESTYLE << 9) | 0x1c
- .set EC_WORD_ITEM, (EC_GROUP_LIFESTYLE << 9) | 0x1d
- .set EC_WORD_NAME, (EC_GROUP_LIFESTYLE << 9) | 0x1e
- .set EC_WORD_NEWS, (EC_GROUP_LIFESTYLE << 9) | 0x1f
- .set EC_WORD_POPULAR, (EC_GROUP_LIFESTYLE << 9) | 0x20
- .set EC_WORD_PARTY, (EC_GROUP_LIFESTYLE << 9) | 0x21
- .set EC_WORD_STUDY, (EC_GROUP_LIFESTYLE << 9) | 0x22
- .set EC_WORD_MACHINE, (EC_GROUP_LIFESTYLE << 9) | 0x23
- .set EC_WORD_MAIL, (EC_GROUP_LIFESTYLE << 9) | 0x24
- .set EC_WORD_MESSAGE, (EC_GROUP_LIFESTYLE << 9) | 0x25
- .set EC_WORD_PROMISE, (EC_GROUP_LIFESTYLE << 9) | 0x26
- .set EC_WORD_DREAM, (EC_GROUP_LIFESTYLE << 9) | 0x27
- .set EC_WORD_KINDERGARTEN, (EC_GROUP_LIFESTYLE << 9) | 0x28
- .set EC_WORD_LIFE, (EC_GROUP_LIFESTYLE << 9) | 0x29
- .set EC_WORD_RADIO, (EC_GROUP_LIFESTYLE << 9) | 0x2a
- .set EC_WORD_RENTAL, (EC_GROUP_LIFESTYLE << 9) | 0x2b
- .set EC_WORD_WORLD, (EC_GROUP_LIFESTYLE << 9) | 0x2c
-
-@ Hobbies
- .set EC_WORD_IDOL, (EC_GROUP_HOBBIES << 9) | 0x0
- .set EC_WORD_ANIME, (EC_GROUP_HOBBIES << 9) | 0x1
- .set EC_WORD_SONG, (EC_GROUP_HOBBIES << 9) | 0x2
- .set EC_WORD_MOVIE, (EC_GROUP_HOBBIES << 9) | 0x3
- .set EC_WORD_SWEETS, (EC_GROUP_HOBBIES << 9) | 0x4
- .set EC_WORD_CHAT, (EC_GROUP_HOBBIES << 9) | 0x5
- .set EC_WORD_CHILD_S_PLAY, (EC_GROUP_HOBBIES << 9) | 0x6
- .set EC_WORD_TOYS, (EC_GROUP_HOBBIES << 9) | 0x7
- .set EC_WORD_MUSIC, (EC_GROUP_HOBBIES << 9) | 0x8
- .set EC_WORD_CARDS, (EC_GROUP_HOBBIES << 9) | 0x9
- .set EC_WORD_SHOPPING, (EC_GROUP_HOBBIES << 9) | 0xa
- .set EC_WORD_CAMERA, (EC_GROUP_HOBBIES << 9) | 0xb
- .set EC_WORD_VIEWING, (EC_GROUP_HOBBIES << 9) | 0xc
- .set EC_WORD_SPECTATOR, (EC_GROUP_HOBBIES << 9) | 0xd
- .set EC_WORD_GOURMET, (EC_GROUP_HOBBIES << 9) | 0xe
- .set EC_WORD_GAME, (EC_GROUP_HOBBIES << 9) | 0xf
- .set EC_WORD_RPG, (EC_GROUP_HOBBIES << 9) | 0x10
- .set EC_WORD_COLLECTION, (EC_GROUP_HOBBIES << 9) | 0x11
- .set EC_WORD_COMPLETE, (EC_GROUP_HOBBIES << 9) | 0x12
- .set EC_WORD_MAGAZINE, (EC_GROUP_HOBBIES << 9) | 0x13
- .set EC_WORD_WALK, (EC_GROUP_HOBBIES << 9) | 0x14
- .set EC_WORD_BIKE, (EC_GROUP_HOBBIES << 9) | 0x15
- .set EC_WORD_HOBBY, (EC_GROUP_HOBBIES << 9) | 0x16
- .set EC_WORD_SPORTS, (EC_GROUP_HOBBIES << 9) | 0x17
- .set EC_WORD_SOFTWARE, (EC_GROUP_HOBBIES << 9) | 0x18
- .set EC_WORD_SONGS, (EC_GROUP_HOBBIES << 9) | 0x19
- .set EC_WORD_DIET, (EC_GROUP_HOBBIES << 9) | 0x1a
- .set EC_WORD_TREASURE, (EC_GROUP_HOBBIES << 9) | 0x1b
- .set EC_WORD_TRAVEL, (EC_GROUP_HOBBIES << 9) | 0x1c
- .set EC_WORD_DANCE, (EC_GROUP_HOBBIES << 9) | 0x1d
- .set EC_WORD_CHANNEL, (EC_GROUP_HOBBIES << 9) | 0x1e
- .set EC_WORD_MAKING, (EC_GROUP_HOBBIES << 9) | 0x1f
- .set EC_WORD_FISHING, (EC_GROUP_HOBBIES << 9) | 0x20
- .set EC_WORD_DATE, (EC_GROUP_HOBBIES << 9) | 0x21
- .set EC_WORD_DESIGN, (EC_GROUP_HOBBIES << 9) | 0x22
- .set EC_WORD_LOCOMOTIVE, (EC_GROUP_HOBBIES << 9) | 0x23
- .set EC_WORD_PLUSH_DOLL, (EC_GROUP_HOBBIES << 9) | 0x24
- .set EC_WORD_PC, (EC_GROUP_HOBBIES << 9) | 0x25
- .set EC_WORD_FLOWERS, (EC_GROUP_HOBBIES << 9) | 0x26
- .set EC_WORD_HERO, (EC_GROUP_HOBBIES << 9) | 0x27
- .set EC_WORD_NAP, (EC_GROUP_HOBBIES << 9) | 0x28
- .set EC_WORD_HEROINE, (EC_GROUP_HOBBIES << 9) | 0x29
- .set EC_WORD_FASHION, (EC_GROUP_HOBBIES << 9) | 0x2a
- .set EC_WORD_ADVENTURE, (EC_GROUP_HOBBIES << 9) | 0x2b
- .set EC_WORD_BOARD, (EC_GROUP_HOBBIES << 9) | 0x2c
- .set EC_WORD_BALL, (EC_GROUP_HOBBIES << 9) | 0x2d
- .set EC_WORD_BOOK, (EC_GROUP_HOBBIES << 9) | 0x2e
- .set EC_WORD_FESTIVAL, (EC_GROUP_HOBBIES << 9) | 0x2f
- .set EC_WORD_COMICS, (EC_GROUP_HOBBIES << 9) | 0x30
- .set EC_WORD_HOLIDAY, (EC_GROUP_HOBBIES << 9) | 0x31
- .set EC_WORD_PLANS, (EC_GROUP_HOBBIES << 9) | 0x32
- .set EC_WORD_TRENDY, (EC_GROUP_HOBBIES << 9) | 0x33
- .set EC_WORD_VACATION, (EC_GROUP_HOBBIES << 9) | 0x34
- .set EC_WORD_LOOK, (EC_GROUP_HOBBIES << 9) | 0x35
-
-@ Time
- .set EC_WORD_FALL, (EC_GROUP_TIME << 9) | 0x0
- .set EC_WORD_MORNING, (EC_GROUP_TIME << 9) | 0x1
- .set EC_WORD_TOMORROW, (EC_GROUP_TIME << 9) | 0x2
- .set EC_WORD_LAST, (EC_GROUP_TIME << 9) | 0x3
- .set EC_WORD_DAY, (EC_GROUP_TIME << 9) | 0x4
- .set EC_WORD_SOMETIME, (EC_GROUP_TIME << 9) | 0x5
- .set EC_WORD_ALWAYS, (EC_GROUP_TIME << 9) | 0x6
- .set EC_WORD_CURRENT, (EC_GROUP_TIME << 9) | 0x7
- .set EC_WORD_FOREVER, (EC_GROUP_TIME << 9) | 0x8
- .set EC_WORD_DAYS, (EC_GROUP_TIME << 9) | 0x9
- .set EC_WORD_END, (EC_GROUP_TIME << 9) | 0xa
- .set EC_WORD_TUESDAY, (EC_GROUP_TIME << 9) | 0xb
- .set EC_WORD_YESTERDAY, (EC_GROUP_TIME << 9) | 0xc
- .set EC_WORD_TODAY, (EC_GROUP_TIME << 9) | 0xd
- .set EC_WORD_FRIDAY, (EC_GROUP_TIME << 9) | 0xe
- .set EC_WORD_MONDAY, (EC_GROUP_TIME << 9) | 0xf
- .set EC_WORD_LATER, (EC_GROUP_TIME << 9) | 0x10
- .set EC_WORD_EARLIER, (EC_GROUP_TIME << 9) | 0x11
- .set EC_WORD_ANOTHER, (EC_GROUP_TIME << 9) | 0x12
- .set EC_WORD_TIME, (EC_GROUP_TIME << 9) | 0x13
- .set EC_WORD_FINISH, (EC_GROUP_TIME << 9) | 0x14
- .set EC_WORD_WEDNESDAY, (EC_GROUP_TIME << 9) | 0x15
- .set EC_WORD_SOON, (EC_GROUP_TIME << 9) | 0x16
- .set EC_WORD_START, (EC_GROUP_TIME << 9) | 0x17
- .set EC_WORD_MONTH, (EC_GROUP_TIME << 9) | 0x18
- .set EC_WORD_STOP, (EC_GROUP_TIME << 9) | 0x19
- .set EC_WORD_NOW, (EC_GROUP_TIME << 9) | 0x1a
- .set EC_WORD_FINAL, (EC_GROUP_TIME << 9) | 0x1b
- .set EC_WORD_NEXT, (EC_GROUP_TIME << 9) | 0x1c
- .set EC_WORD_AGE, (EC_GROUP_TIME << 9) | 0x1d
- .set EC_WORD_SATURDAY, (EC_GROUP_TIME << 9) | 0x1e
- .set EC_WORD_SUMMER, (EC_GROUP_TIME << 9) | 0x1f
- .set EC_WORD_SUNDAY, (EC_GROUP_TIME << 9) | 0x20
- .set EC_WORD_BEGINNING, (EC_GROUP_TIME << 9) | 0x21
- .set EC_WORD_SPRING, (EC_GROUP_TIME << 9) | 0x22
- .set EC_WORD_DAYTIME, (EC_GROUP_TIME << 9) | 0x23
- .set EC_WORD_WINTER, (EC_GROUP_TIME << 9) | 0x24
- .set EC_WORD_DAILY, (EC_GROUP_TIME << 9) | 0x25
- .set EC_WORD_OLDEN, (EC_GROUP_TIME << 9) | 0x26
- .set EC_WORD_ALMOST, (EC_GROUP_TIME << 9) | 0x27
- .set EC_WORD_NEARLY, (EC_GROUP_TIME << 9) | 0x28
- .set EC_WORD_THURSDAY, (EC_GROUP_TIME << 9) | 0x29
- .set EC_WORD_NIGHTTIME, (EC_GROUP_TIME << 9) | 0x2a
- .set EC_WORD_NIGHT, (EC_GROUP_TIME << 9) | 0x2b
- .set EC_WORD_WEEK, (EC_GROUP_TIME << 9) | 0x2c
-
-@ Misc.
- .set EC_WORD_HIGHS, (EC_GROUP_MISC << 9) | 0x0
- .set EC_WORD_LOWS, (EC_GROUP_MISC << 9) | 0x1
- .set EC_WORD_UM, (EC_GROUP_MISC << 9) | 0x2
- .set EC_WORD_REAR, (EC_GROUP_MISC << 9) | 0x3
- .set EC_WORD_THINGS, (EC_GROUP_MISC << 9) | 0x4
- .set EC_WORD_THING, (EC_GROUP_MISC << 9) | 0x5
- .set EC_WORD_BELOW, (EC_GROUP_MISC << 9) | 0x6
- .set EC_WORD_ABOVE, (EC_GROUP_MISC << 9) | 0x7
- .set EC_WORD_BACK, (EC_GROUP_MISC << 9) | 0x8
- .set EC_WORD_HIGH, (EC_GROUP_MISC << 9) | 0x9
- .set EC_WORD_HERE, (EC_GROUP_MISC << 9) | 0xa
- .set EC_WORD_INSIDE, (EC_GROUP_MISC << 9) | 0xb
- .set EC_WORD_OUTSIDE, (EC_GROUP_MISC << 9) | 0xc
- .set EC_WORD_BESIDE, (EC_GROUP_MISC << 9) | 0xd
- .set EC_WORD_THIS_IS_IT_EXCL, (EC_GROUP_MISC << 9) | 0xe
- .set EC_WORD_THIS, (EC_GROUP_MISC << 9) | 0xf
- .set EC_WORD_EVERY, (EC_GROUP_MISC << 9) | 0x10
- .set EC_WORD_THESE, (EC_GROUP_MISC << 9) | 0x11
- .set EC_WORD_THESE_WERE, (EC_GROUP_MISC << 9) | 0x12
- .set EC_WORD_DOWN, (EC_GROUP_MISC << 9) | 0x13
- .set EC_WORD_THAT, (EC_GROUP_MISC << 9) | 0x14
- .set EC_WORD_THOSE_ARE, (EC_GROUP_MISC << 9) | 0x15
- .set EC_WORD_THOSE_WERE, (EC_GROUP_MISC << 9) | 0x16
- .set EC_WORD_THAT_S_IT_EXCL, (EC_GROUP_MISC << 9) | 0x17
- .set EC_WORD_AM, (EC_GROUP_MISC << 9) | 0x18
- .set EC_WORD_THAT_WAS, (EC_GROUP_MISC << 9) | 0x19
- .set EC_WORD_FRONT, (EC_GROUP_MISC << 9) | 0x1a
- .set EC_WORD_UP, (EC_GROUP_MISC << 9) | 0x1b
- .set EC_WORD_CHOICE, (EC_GROUP_MISC << 9) | 0x1c
- .set EC_WORD_FAR, (EC_GROUP_MISC << 9) | 0x1d
- .set EC_WORD_AWAY, (EC_GROUP_MISC << 9) | 0x1e
- .set EC_WORD_NEAR, (EC_GROUP_MISC << 9) | 0x1f
- .set EC_WORD_WHERE, (EC_GROUP_MISC << 9) | 0x20
- .set EC_WORD_WHEN, (EC_GROUP_MISC << 9) | 0x21
- .set EC_WORD_WHAT, (EC_GROUP_MISC << 9) | 0x22
- .set EC_WORD_DEEP, (EC_GROUP_MISC << 9) | 0x23
- .set EC_WORD_SHALLOW, (EC_GROUP_MISC << 9) | 0x24
- .set EC_WORD_WHY, (EC_GROUP_MISC << 9) | 0x25
- .set EC_WORD_CONFUSED, (EC_GROUP_MISC << 9) | 0x26
- .set EC_WORD_OPPOSITE, (EC_GROUP_MISC << 9) | 0x27
- .set EC_WORD_LEFT, (EC_GROUP_MISC << 9) | 0x28
- .set EC_WORD_RIGHT, (EC_GROUP_MISC << 9) | 0x29
-
-@ Adjectives
- .set EC_WORD_WANDERING, (EC_GROUP_ADJECTIVES << 9) | 0x0
- .set EC_WORD_RICKETY, (EC_GROUP_ADJECTIVES << 9) | 0x1
- .set EC_WORD_ROCK_SOLID, (EC_GROUP_ADJECTIVES << 9) | 0x2
- .set EC_WORD_HUNGRY, (EC_GROUP_ADJECTIVES << 9) | 0x3
- .set EC_WORD_TIGHT, (EC_GROUP_ADJECTIVES << 9) | 0x4
- .set EC_WORD_TICKLISH, (EC_GROUP_ADJECTIVES << 9) | 0x5
- .set EC_WORD_TWIRLING, (EC_GROUP_ADJECTIVES << 9) | 0x6
- .set EC_WORD_SPIRALING, (EC_GROUP_ADJECTIVES << 9) | 0x7
- .set EC_WORD_THIRSTY, (EC_GROUP_ADJECTIVES << 9) | 0x8
- .set EC_WORD_LOLLING, (EC_GROUP_ADJECTIVES << 9) | 0x9
- .set EC_WORD_SILKY, (EC_GROUP_ADJECTIVES << 9) | 0xa
- .set EC_WORD_SADLY, (EC_GROUP_ADJECTIVES << 9) | 0xb
- .set EC_WORD_HOPELESS, (EC_GROUP_ADJECTIVES << 9) | 0xc
- .set EC_WORD_USELESS, (EC_GROUP_ADJECTIVES << 9) | 0xd
- .set EC_WORD_DROOLING, (EC_GROUP_ADJECTIVES << 9) | 0xe
- .set EC_WORD_EXCITING, (EC_GROUP_ADJECTIVES << 9) | 0xf
- .set EC_WORD_THICK, (EC_GROUP_ADJECTIVES << 9) | 0x10
- .set EC_WORD_SMOOTH, (EC_GROUP_ADJECTIVES << 9) | 0x11
- .set EC_WORD_SLIMY, (EC_GROUP_ADJECTIVES << 9) | 0x12
- .set EC_WORD_THIN, (EC_GROUP_ADJECTIVES << 9) | 0x13
- .set EC_WORD_BREAK, (EC_GROUP_ADJECTIVES << 9) | 0x14
- .set EC_WORD_VORACIOUS, (EC_GROUP_ADJECTIVES << 9) | 0x15
- .set EC_WORD_SCATTER, (EC_GROUP_ADJECTIVES << 9) | 0x16
- .set EC_WORD_AWESOME, (EC_GROUP_ADJECTIVES << 9) | 0x17
- .set EC_WORD_WIMPY, (EC_GROUP_ADJECTIVES << 9) | 0x18
- .set EC_WORD_WOBBLY, (EC_GROUP_ADJECTIVES << 9) | 0x19
- .set EC_WORD_SHAKY, (EC_GROUP_ADJECTIVES << 9) | 0x1a
- .set EC_WORD_RIPPED, (EC_GROUP_ADJECTIVES << 9) | 0x1b
- .set EC_WORD_SHREDDED, (EC_GROUP_ADJECTIVES << 9) | 0x1c
- .set EC_WORD_INCREASING, (EC_GROUP_ADJECTIVES << 9) | 0x1d
- .set EC_WORD_YET, (EC_GROUP_ADJECTIVES << 9) | 0x1e
- .set EC_WORD_DESTROYED, (EC_GROUP_ADJECTIVES << 9) | 0x1f
- .set EC_WORD_FIERY, (EC_GROUP_ADJECTIVES << 9) | 0x20
- .set EC_WORD_LOVEY_DOVEY, (EC_GROUP_ADJECTIVES << 9) | 0x21
- .set EC_WORD_HAPPILY, (EC_GROUP_ADJECTIVES << 9) | 0x22
- .set EC_WORD_ANTICIPATION, (EC_GROUP_ADJECTIVES << 9) | 0x23
-
-@ Events
- .set EC_WORD_APPEAL, (EC_GROUP_EVENTS << 9) | 0x0
- .set EC_WORD_EVENTS, (EC_GROUP_EVENTS << 9) | 0x1
- .set EC_WORD_STAY_AT_HOME, (EC_GROUP_EVENTS << 9) | 0x2
- .set EC_WORD_BERRY, (EC_GROUP_EVENTS << 9) | 0x3
- .set EC_WORD_CONTEST, (EC_GROUP_EVENTS << 9) | 0x4
- .set EC_WORD_MC, (EC_GROUP_EVENTS << 9) | 0x5
- .set EC_WORD_JUDGE, (EC_GROUP_EVENTS << 9) | 0x6
- .set EC_WORD_SUPER, (EC_GROUP_EVENTS << 9) | 0x7
- .set EC_WORD_STAGE, (EC_GROUP_EVENTS << 9) | 0x8
- .set EC_WORD_HALL_OF_FAME, (EC_GROUP_EVENTS << 9) | 0x9
- .set EC_WORD_EVOLUTION, (EC_GROUP_EVENTS << 9) | 0xa
- .set EC_WORD_HYPER, (EC_GROUP_EVENTS << 9) | 0xb
- .set EC_WORD_BATTLE_TOWER, (EC_GROUP_EVENTS << 9) | 0xc
- .set EC_WORD_LEADERS, (EC_GROUP_EVENTS << 9) | 0xd
- .set EC_WORD_BATTLE_ROOM, (EC_GROUP_EVENTS << 9) | 0xe
- .set EC_WORD_HIDDEN, (EC_GROUP_EVENTS << 9) | 0xf
- .set EC_WORD_SECRET_BASE, (EC_GROUP_EVENTS << 9) | 0x10
- .set EC_WORD_BLEND, (EC_GROUP_EVENTS << 9) | 0x11
- .set EC_WORD_POKEBLOCK, (EC_GROUP_EVENTS << 9) | 0x12
- .set EC_WORD_MASTER, (EC_GROUP_EVENTS << 9) | 0x13
- .set EC_WORD_RANK, (EC_GROUP_EVENTS << 9) | 0x14
- .set EC_WORD_RIBBON, (EC_GROUP_EVENTS << 9) | 0x15
- .set EC_WORD_CRUSH, (EC_GROUP_EVENTS << 9) | 0x16
- .set EC_WORD_DIRECT, (EC_GROUP_EVENTS << 9) | 0x17
- .set EC_WORD_TOWER, (EC_GROUP_EVENTS << 9) | 0x18
- .set EC_WORD_UNION, (EC_GROUP_EVENTS << 9) | 0x19
- .set EC_WORD_ROOM, (EC_GROUP_EVENTS << 9) | 0x1a
- .set EC_WORD_WIRELESS, (EC_GROUP_EVENTS << 9) | 0x1b
- .set EC_WORD_FRONTIER, (EC_GROUP_EVENTS << 9) | 0x1c
-
-@ Trendy Saying
- .set EC_WORD_KTHX_BYE, (EC_GROUP_TRENDY_SAYING << 9) | 0x0
- .set EC_WORD_YES_SIR_EXCL, (EC_GROUP_TRENDY_SAYING << 9) | 0x1
- .set EC_WORD_AVANT_GARDE, (EC_GROUP_TRENDY_SAYING << 9) | 0x2
- .set EC_WORD_COUPLE, (EC_GROUP_TRENDY_SAYING << 9) | 0x3
- .set EC_WORD_MUCH_OBLIGED, (EC_GROUP_TRENDY_SAYING << 9) | 0x4
- .set EC_WORD_YEEHAW_EXCL, (EC_GROUP_TRENDY_SAYING << 9) | 0x5
- .set EC_WORD_MEGA, (EC_GROUP_TRENDY_SAYING << 9) | 0x6
- .set EC_WORD_1_HIT_KO_EXCL, (EC_GROUP_TRENDY_SAYING << 9) | 0x7
- .set EC_WORD_DESTINY, (EC_GROUP_TRENDY_SAYING << 9) | 0x8
- .set EC_WORD_CANCEL, (EC_GROUP_TRENDY_SAYING << 9) | 0x9
- .set EC_WORD_NEW, (EC_GROUP_TRENDY_SAYING << 9) | 0xa
- .set EC_WORD_FLATTEN, (EC_GROUP_TRENDY_SAYING << 9) | 0xb
- .set EC_WORD_KIDDING, (EC_GROUP_TRENDY_SAYING << 9) | 0xc
- .set EC_WORD_LOSER, (EC_GROUP_TRENDY_SAYING << 9) | 0xd
- .set EC_WORD_LOSING, (EC_GROUP_TRENDY_SAYING << 9) | 0xe
- .set EC_WORD_HAPPENING, (EC_GROUP_TRENDY_SAYING << 9) | 0xf
- .set EC_WORD_HIP_AND, (EC_GROUP_TRENDY_SAYING << 9) | 0x10
- .set EC_WORD_SHAKE, (EC_GROUP_TRENDY_SAYING << 9) | 0x11
- .set EC_WORD_SHADY, (EC_GROUP_TRENDY_SAYING << 9) | 0x12
- .set EC_WORD_UPBEAT, (EC_GROUP_TRENDY_SAYING << 9) | 0x13
- .set EC_WORD_MODERN, (EC_GROUP_TRENDY_SAYING << 9) | 0x14
- .set EC_WORD_SMELL_YA, (EC_GROUP_TRENDY_SAYING << 9) | 0x15
- .set EC_WORD_BANG, (EC_GROUP_TRENDY_SAYING << 9) | 0x16
- .set EC_WORD_KNOCKOUT, (EC_GROUP_TRENDY_SAYING << 9) | 0x17
- .set EC_WORD_HASSLE, (EC_GROUP_TRENDY_SAYING << 9) | 0x18
- .set EC_WORD_WINNER, (EC_GROUP_TRENDY_SAYING << 9) | 0x19
- .set EC_WORD_FEVER, (EC_GROUP_TRENDY_SAYING << 9) | 0x1a
- .set EC_WORD_WANNABE, (EC_GROUP_TRENDY_SAYING << 9) | 0x1b
- .set EC_WORD_BABY, (EC_GROUP_TRENDY_SAYING << 9) | 0x1c
- .set EC_WORD_HEART, (EC_GROUP_TRENDY_SAYING << 9) | 0x1d
- .set EC_WORD_OLD, (EC_GROUP_TRENDY_SAYING << 9) | 0x1e
- .set EC_WORD_YOUNG, (EC_GROUP_TRENDY_SAYING << 9) | 0x1f
- .set EC_WORD_UGLY, (EC_GROUP_TRENDY_SAYING << 9) | 0x20
-
diff --git a/constants/field_object_constants.inc b/constants/field_object_constants.inc
deleted file mode 100644
index 50cdbd848..000000000
--- a/constants/field_object_constants.inc
+++ /dev/null
@@ -1,251 +0,0 @@
- .set FIELD_OBJ_GFX_BRENDAN_NORMAL, 0
- .set FIELD_OBJ_GFX_BRENDAN_MACH_BIKE, 1
- .set FIELD_OBJ_GFX_BRENDAN_SURFING, 2
- .set FIELD_OBJ_GFX_BRENDAN_FIELD_MOVE, 3
- .set FIELD_OBJ_GFX_QUINTY_PLUMP, 4
- .set FIELD_OBJ_GFX_LITTLE_BOY_1, 5
- .set FIELD_OBJ_GFX_LITTLE_GIRL_1, 6
- .set FIELD_OBJ_GFX_BOY_1, 7
- .set FIELD_OBJ_GFX_GIRL_1, 8
- .set FIELD_OBJ_GFX_BOY_2, 9
- .set FIELD_OBJ_GFX_GIRL_2, 10
- .set FIELD_OBJ_GFX_LITTLE_BOY_2, 11
- .set FIELD_OBJ_GFX_LITTLE_GIRL_2, 12
- .set FIELD_OBJ_GFX_BOY_3, 13
- .set FIELD_OBJ_GFX_GIRL_3, 14
- .set FIELD_OBJ_GFX_BOY_4, 15
- .set FIELD_OBJ_GFX_WOMAN_1, 16
- .set FIELD_OBJ_GFX_FAT_MAN, 17
- .set FIELD_OBJ_GFX_WOMAN_2, 18
- .set FIELD_OBJ_GFX_MAN_1, 19
- .set FIELD_OBJ_GFX_WOMAN_3, 20
- .set FIELD_OBJ_GFX_OLD_MAN_1, 21
- .set FIELD_OBJ_GFX_OLD_WOMAN_1, 22
- .set FIELD_OBJ_GFX_MAN_2, 23
- .set FIELD_OBJ_GFX_WOMAN_4, 24
- .set FIELD_OBJ_GFX_MAN_3, 25
- .set FIELD_OBJ_GFX_WOMAN_5, 26
- .set FIELD_OBJ_GFX_COOK, 27
- .set FIELD_OBJ_GFX_WOMAN_6, 28
- .set FIELD_OBJ_GFX_OLD_MAN_2, 29
- .set FIELD_OBJ_GFX_OLD_WOMAN_2, 30
- .set FIELD_OBJ_GFX_CAMPER, 31
- .set FIELD_OBJ_GFX_PICNICKER, 32
- .set FIELD_OBJ_GFX_MAN_4, 33
- .set FIELD_OBJ_GFX_WOMAN_7, 34
- .set FIELD_OBJ_GFX_YOUNGSTER, 35
- .set FIELD_OBJ_GFX_BUG_CATCHER, 36
- .set FIELD_OBJ_GFX_PSYCHIC_M, 37
- .set FIELD_OBJ_GFX_SCHOOL_KID_M, 38
- .set FIELD_OBJ_GFX_MANIAC, 39
- .set FIELD_OBJ_GFX_HEX_MANIAC, 40
- .set FIELD_OBJ_GFX_RAYQUAZA_1, 41
- .set FIELD_OBJ_GFX_SWIMMER_M, 42
- .set FIELD_OBJ_GFX_SWIMMER_F, 43
- .set FIELD_OBJ_GFX_BLACK_BELT, 44
- .set FIELD_OBJ_GFX_BEAUTY, 45
- .set FIELD_OBJ_GFX_SCIENTIST_1, 46
- .set FIELD_OBJ_GFX_LASS, 47
- .set FIELD_OBJ_GFX_GENTLEMAN, 48
- .set FIELD_OBJ_GFX_SAILOR, 49
- .set FIELD_OBJ_GFX_FISHERMAN, 50
- .set FIELD_OBJ_GFX_RUNNING_TRIATHLETE_M, 51
- .set FIELD_OBJ_GFX_RUNNING_TRIATHLETE_F, 52
- .set FIELD_OBJ_GFX_TUBER_F, 53
- .set FIELD_OBJ_GFX_TUBER_M, 54
- .set FIELD_OBJ_GFX_HIKER, 55
- .set FIELD_OBJ_GFX_CYCLING_TRIATHLETE_M, 56
- .set FIELD_OBJ_GFX_CYCLING_TRIATHLETE_F, 57
- .set FIELD_OBJ_GFX_NURSE, 58
- .set FIELD_OBJ_GFX_ITEM_BALL, 59
- .set FIELD_OBJ_GFX_BERRY_TREE, 60
- .set FIELD_OBJ_GFX_BERRY_TREE_EARLY_STAGES, 61
- .set FIELD_OBJ_GFX_BERRY_TREE_LATE_STAGES, 62
- .set FIELD_OBJ_GFX_BRENDAN_ACRO_BIKE, 63
- .set FIELD_OBJ_GFX_PROF_BIRCH, 64
- .set FIELD_OBJ_GFX_MAN_5, 65
- .set FIELD_OBJ_GFX_MAN_6, 66
- .set FIELD_OBJ_GFX_REPORTER_M, 67
- .set FIELD_OBJ_GFX_REPORTER_F, 68
- .set FIELD_OBJ_GFX_MAUVILLE_OLD_MAN, 69
- .set FIELD_OBJ_GFX_ANABEL, 70
- .set FIELD_OBJ_GFX_TUCKER, 71
- .set FIELD_OBJ_GFX_GRETA, 72
- .set FIELD_OBJ_GFX_SPENSER, 73
- .set FIELD_OBJ_GFX_NOLAND, 74
- .set FIELD_OBJ_GFX_LUCY, 75
- .set FIELD_OBJ_GFX_UNUSED_NATU_DOLL, 76
- .set FIELD_OBJ_GFX_UNUSED_MAGNEMITE_DOLL, 77
- .set FIELD_OBJ_GFX_UNUSED_SQUIRTLE_DOLL, 78
- .set FIELD_OBJ_GFX_UNUSED_WOOPER_DOLL, 79
- .set FIELD_OBJ_GFX_UNUSED_PIKACHU_DOLL, 80
- .set FIELD_OBJ_GFX_UNUSED_PORYGON2_DOLL, 81
- .set FIELD_OBJ_GFX_CUTTABLE_TREE, 82
- .set FIELD_OBJ_GFX_MART_EMPLOYEE, 83
- .set FIELD_OBJ_GFX_ROOFTOP_SALE_WOMAN, 84
- .set FIELD_OBJ_GFX_TEALA, 85
- .set FIELD_OBJ_GFX_BREAKABLE_ROCK, 86
- .set FIELD_OBJ_GFX_PUSHABLE_BOULDER, 87
- .set FIELD_OBJ_GFX_MR_BRINEYS_BOAT, 88
- .set FIELD_OBJ_GFX_MAY_NORMAL, 89
- .set FIELD_OBJ_GFX_MAY_MACH_BIKE, 90
- .set FIELD_OBJ_GFX_MAY_ACRO_BIKE, 91
- .set FIELD_OBJ_GFX_MAY_SURFING, 92
- .set FIELD_OBJ_GFX_MAY_FIELD_MOVE, 93
- .set FIELD_OBJ_GFX_TRUCK, 94
- .set FIELD_OBJ_GFX_VIGOROTH_CARRYING_BOX, 95
- .set FIELD_OBJ_GFX_VIGOROTH_FACING_AWAY, 96
- .set FIELD_OBJ_GFX_BIRCHS_BAG, 97
- .set FIELD_OBJ_GFX_ENEMY_ZIGZAGOON, 98
- .set FIELD_OBJ_GFX_ARTIST, 99
- .set FIELD_OBJ_GFX_RIVAL_BRENDAN_NORMAL, 100
- .set FIELD_OBJ_GFX_RIVAL_BRENDAN_MACH_BIKE, 101
- .set FIELD_OBJ_GFX_RIVAL_BRENDAN_ACRO_BIKE, 102
- .set FIELD_OBJ_GFX_RIVAL_BRENDAN_SURFING, 103
- .set FIELD_OBJ_GFX_RIVAL_BRENDAN_FIELD_MOVE, 104
- .set FIELD_OBJ_GFX_RIVAL_MAY_NORMAL, 105
- .set FIELD_OBJ_GFX_RIVAL_MAY_MACH_BIKE, 106
- .set FIELD_OBJ_GFX_RIVAL_MAY_ACRO_BIKE, 107
- .set FIELD_OBJ_GFX_RIVAL_MAY_SURFING, 108
- .set FIELD_OBJ_GFX_RIVAL_MAY_FIELD_MOVE, 109
- .set FIELD_OBJ_GFX_CAMERAMAN, 110
- .set FIELD_OBJ_GFX_BRENDAN_UNDERWATER, 111
- .set FIELD_OBJ_GFX_MAY_UNDERWATER, 112
- .set FIELD_OBJ_GFX_MOVING_BOX, 113
- .set FIELD_OBJ_GFX_CABLE_CAR, 114
- .set FIELD_OBJ_GFX_SCIENTIST_2, 115
- .set FIELD_OBJ_GFX_MAN_7, 116
- .set FIELD_OBJ_GFX_AQUA_MEMBER_M, 117
- .set FIELD_OBJ_GFX_AQUA_MEMBER_F, 118
- .set FIELD_OBJ_GFX_MAGMA_MEMBER_M, 119
- .set FIELD_OBJ_GFX_MAGMA_MEMBER_F, 120
- .set FIELD_OBJ_GFX_SIDNEY, 121
- .set FIELD_OBJ_GFX_PHOEBE, 122
- .set FIELD_OBJ_GFX_GLACIA, 123
- .set FIELD_OBJ_GFX_DRAKE, 124
- .set FIELD_OBJ_GFX_ROXANNE, 125
- .set FIELD_OBJ_GFX_BRAWLY, 126
- .set FIELD_OBJ_GFX_WATTSON, 127
- .set FIELD_OBJ_GFX_FLANNERY, 128
- .set FIELD_OBJ_GFX_NORMAN, 129
- .set FIELD_OBJ_GFX_WINONA, 130
- .set FIELD_OBJ_GFX_LIZA, 131
- .set FIELD_OBJ_GFX_TATE, 132
- .set FIELD_OBJ_GFX_WALLACE, 133
- .set FIELD_OBJ_GFX_STEVEN, 134
- .set FIELD_OBJ_GFX_WALLY, 135
- .set FIELD_OBJ_GFX_RUBY_SAPPHIRE_LITTLE_BOY, 136
- .set FIELD_OBJ_GFX_BRENDAN_FISHING, 137
- .set FIELD_OBJ_GFX_MAY_FISHING, 138
- .set FIELD_OBJ_GFX_HOT_SPRINGS_OLD_WOMAN, 139
- .set FIELD_OBJ_GFX_SS_TIDAL, 140
- .set FIELD_OBJ_GFX_SUBMARINE_SHADOW, 141
- .set FIELD_OBJ_GFX_PICHU_DOLL, 142
- .set FIELD_OBJ_GFX_PIKACHU_DOLL, 143
- .set FIELD_OBJ_GFX_MARILL_DOLL, 144
- .set FIELD_OBJ_GFX_TOGEPI_DOLL, 145
- .set FIELD_OBJ_GFX_CYNDAQUIL_DOLL, 146
- .set FIELD_OBJ_GFX_CHIKORITA_DOLL, 147
- .set FIELD_OBJ_GFX_TOTODILE_DOLL, 148
- .set FIELD_OBJ_GFX_JIGGLYPUFF_DOLL, 149
- .set FIELD_OBJ_GFX_MEOWTH_DOLL, 150
- .set FIELD_OBJ_GFX_CLEFAIRY_DOLL, 151
- .set FIELD_OBJ_GFX_DITTO_DOLL, 152
- .set FIELD_OBJ_GFX_SMOOCHUM_DOLL, 153
- .set FIELD_OBJ_GFX_TREECKO_DOLL, 154
- .set FIELD_OBJ_GFX_TORCHIC_DOLL, 155
- .set FIELD_OBJ_GFX_MUDKIP_DOLL, 156
- .set FIELD_OBJ_GFX_DUSKULL_DOLL, 157
- .set FIELD_OBJ_GFX_WYNAUT_DOLL, 158
- .set FIELD_OBJ_GFX_BALTOY_DOLL, 159
- .set FIELD_OBJ_GFX_KECLEON_DOLL, 160
- .set FIELD_OBJ_GFX_AZURILL_DOLL, 161
- .set FIELD_OBJ_GFX_SKITTY_DOLL, 162
- .set FIELD_OBJ_GFX_SWABLU_DOLL, 163
- .set FIELD_OBJ_GFX_GULPIN_DOLL, 164
- .set FIELD_OBJ_GFX_LOTAD_DOLL, 165
- .set FIELD_OBJ_GFX_SEEDOT_DOLL, 166
- .set FIELD_OBJ_GFX_PIKA_CUSHION, 167
- .set FIELD_OBJ_GFX_ROUND_CUSHION, 168
- .set FIELD_OBJ_GFX_KISS_CUSHION, 169
- .set FIELD_OBJ_GFX_ZIGZAG_CUSHION, 170
- .set FIELD_OBJ_GFX_SPIN_CUSHION, 171
- .set FIELD_OBJ_GFX_DIAMOND_CUSHION, 172
- .set FIELD_OBJ_GFX_BALL_CUSHION, 173
- .set FIELD_OBJ_GFX_GRASS_CUSHION, 174
- .set FIELD_OBJ_GFX_FIRE_CUSHION, 175
- .set FIELD_OBJ_GFX_WATER_CUSHION, 176
- .set FIELD_OBJ_GFX_BIG_SNORLAX_DOLL, 177
- .set FIELD_OBJ_GFX_BIG_RHYDON_DOLL, 178
- .set FIELD_OBJ_GFX_BIG_LAPRAS_DOLL, 179
- .set FIELD_OBJ_GFX_BIG_VENUSAUR_DOLL, 180
- .set FIELD_OBJ_GFX_BIG_CHARIZARD_DOLL, 181
- .set FIELD_OBJ_GFX_BIG_BLASTOISE_DOLL, 182
- .set FIELD_OBJ_GFX_BIG_WAILMER_DOLL, 183
- .set FIELD_OBJ_GFX_BIG_REGIROCK_DOLL, 184
- .set FIELD_OBJ_GFX_BIG_REGICE_DOLL, 185
- .set FIELD_OBJ_GFX_BIG_REGISTEEL_DOLL, 186
- .set FIELD_OBJ_GFX_LATIAS, 187
- .set FIELD_OBJ_GFX_LATIOS, 188
- .set FIELD_OBJ_GFX_BOY_5, 189
- .set FIELD_OBJ_GFX_CONTEST_OLD_MAN, 190
- .set FIELD_OBJ_GFX_BRENDAN_WATERING, 191
- .set FIELD_OBJ_GFX_MAY_WATERING, 192
- .set FIELD_OBJ_GFX_BRENDAN_UNKNOWN, 193
- .set FIELD_OBJ_GFX_MAY_UNKNOWN, 194
- .set FIELD_OBJ_GFX_ARCHIE, 195
- .set FIELD_OBJ_GFX_MAXIE, 196
- .set FIELD_OBJ_GFX_KYOGRE_1, 197
- .set FIELD_OBJ_GFX_GROUDON_1, 198
- .set FIELD_OBJ_GFX_FOSSIL, 199
- .set FIELD_OBJ_GFX_REGIROCK, 200
- .set FIELD_OBJ_GFX_REGICE, 201
- .set FIELD_OBJ_GFX_REGISTEEL, 202
- .set FIELD_OBJ_GFX_SKITTY, 203
- .set FIELD_OBJ_GFX_KECLEON_1, 204
- .set FIELD_OBJ_GFX_KYOGRE_2, 205
- .set FIELD_OBJ_GFX_GROUDON_2, 206
- .set FIELD_OBJ_GFX_RAYQUAZA_2, 207
- .set FIELD_OBJ_GFX_ZIGZAGOON, 208
- .set FIELD_OBJ_GFX_PIKACHU, 209
- .set FIELD_OBJ_GFX_AZUMARILL, 210
- .set FIELD_OBJ_GFX_WINGULL, 211
- .set FIELD_OBJ_GFX_KECLEON_2, 212
- .set FIELD_OBJ_GFX_TUBER_M_SWIMMING, 213
- .set FIELD_OBJ_GFX_AZURILL, 214
- .set FIELD_OBJ_GFX_MOM, 215
- .set FIELD_OBJ_GFX_LINK_BRENDAN, 216
- .set FIELD_OBJ_GFX_LINK_MAY, 217
- .set FIELD_OBJ_GFX_JUAN, 218
- .set FIELD_OBJ_GFX_SCOTT, 219
- .set FIELD_OBJ_GFX_POOCHYENA, 220
- .set FIELD_OBJ_GFX_KYOGRE_3, 221
- .set FIELD_OBJ_GFX_GROUDON_3, 222
- .set FIELD_OBJ_GFX_MYSTERY_EVENT_DELIVERYMAN, 223
- .set FIELD_OBJ_GFX_STATUE, 224
- .set FIELD_OBJ_GFX_KIRLIA, 225
- .set FIELD_OBJ_GFX_DUSCLOPS, 226
- .set FIELD_OBJ_GFX_UNION_ROOM_ATTENDANT, 227
- .set FIELD_OBJ_GFX_SUDOWOODO, 228
- .set FIELD_OBJ_GFX_MEW, 229
- .set FIELD_OBJ_GFX_RED, 230
- .set FIELD_OBJ_GFX_LEAF, 231
- .set FIELD_OBJ_GFX_DEOXYS, 232
- .set FIELD_OBJ_GFX_BIRTH_ISLAND_STONE, 233
- .set FIELD_OBJ_GFX_BRANDON, 234
- .set FIELD_OBJ_GFX_RUBY_SAPPHIRE_BRENDAN, 235
- .set FIELD_OBJ_GFX_RUBY_SAPPHIRE_MAY, 236
- .set FIELD_OBJ_GFX_LUGIA, 237
- .set FIELD_OBJ_GFX_HO_OH, 238
-
- .set SHADOW_SIZE_S, 0
- .set SHADOW_SIZE_M, 1
- .set SHADOW_SIZE_L, 2
- .set SHADOW_SIZE_XL, 3
-
- .set F_INANIMATE, 1 << 6
- .set F_DISABLE_REFLECTION_PALETTE_LOAD, 1 << 7
-
- .set TRACKS_NONE, 0
- .set TRACKS_FOOT, 1
- .set TRACKS_BIKE_TIRE, 2
diff --git a/constants/flags.inc b/constants/flags.inc
deleted file mode 100644
index 66663cb65..000000000
--- a/constants/flags.inc
+++ /dev/null
@@ -1,1574 +0,0 @@
- .equiv FLAG_0x001, 0x1
- .equiv FLAG_0x002, 0x2
- .equiv FLAG_0x003, 0x3
- .equiv FLAG_0x004, 0x4
- .equiv FLAG_0x005, 0x5
- .equiv FLAG_0x006, 0x6
- .equiv FLAG_0x007, 0x7
- .equiv FLAG_0x008, 0x8
- .equiv FLAG_0x009, 0x9
- .equiv FLAG_0x00A, 0xA
- .equiv FLAG_0x00B, 0xB
- .equiv FLAG_0x00C, 0xC
- .equiv FLAG_0x00D, 0xD
- .equiv FLAG_0x00E, 0xE
- .equiv FLAG_0x00F, 0xF
- .equiv FLAG_0x010, 0x10
- .equiv FLAG_0x011, 0x11
- .equiv FLAG_0x012, 0x12
- .equiv FLAG_0x013, 0x13
- .equiv FLAG_0x014, 0x14
- .equiv FLAG_0x015, 0x15
- .equiv FLAG_0x016, 0x16
- .equiv FLAG_0x017, 0x17
- .equiv FLAG_0x018, 0x18
- .equiv FLAG_0x019, 0x19
- .equiv FLAG_0x01A, 0x1A
- .equiv FLAG_0x01B, 0x1B
- .equiv FLAG_0x01C, 0x1C
- .equiv FLAG_0x01D, 0x1D
- .equiv FLAG_0x01E, 0x1E
- .equiv FLAG_0x01F, 0x1F
- .equiv FLAG_0x020, 0x20
- .equiv FLAG_0x021, 0x21
- .equiv FLAG_0x022, 0x22
- .equiv FLAG_0x023, 0x23
- .equiv FLAG_0x024, 0x24
- .equiv FLAG_0x025, 0x25
- .equiv FLAG_0x026, 0x26
- .equiv FLAG_0x027, 0x27
- .equiv FLAG_0x028, 0x28
- .equiv FLAG_0x029, 0x29
- .equiv FLAG_0x02A, 0x2A
- .equiv FLAG_0x02B, 0x2B
- .equiv FLAG_0x02C, 0x2C
- .equiv FLAG_0x02D, 0x2D
- .equiv FLAG_0x02E, 0x2E
- .equiv FLAG_0x02F, 0x2F
- .equiv FLAG_0x030, 0x30
- .equiv FLAG_0x031, 0x31
- .equiv FLAG_0x032, 0x32
- .equiv FLAG_0x033, 0x33
- .equiv FLAG_0x034, 0x34
- .equiv FLAG_0x035, 0x35
- .equiv FLAG_0x036, 0x36
- .equiv FLAG_0x037, 0x37
- .equiv FLAG_0x038, 0x38
- .equiv FLAG_0x039, 0x39
- .equiv FLAG_0x03A, 0x3A
- .equiv FLAG_0x03B, 0x3B
- .equiv FLAG_0x03C, 0x3C
- .equiv FLAG_0x03D, 0x3D
- .equiv FLAG_0x03E, 0x3E
- .equiv FLAG_0x03F, 0x3F
- .equiv FLAG_0x040, 0x40
- .equiv FLAG_0x041, 0x41
- .equiv FLAG_0x042, 0x42
- .equiv FLAG_0x043, 0x43
- .equiv FLAG_0x044, 0x44
- .equiv FLAG_0x045, 0x45
- .equiv FLAG_0x046, 0x46
- .equiv FLAG_0x047, 0x47
- .equiv FLAG_0x048, 0x48
- .equiv FLAG_0x049, 0x49
- .equiv FLAG_0x04A, 0x4A
- .equiv FLAG_0x04B, 0x4B
- .equiv FLAG_0x04C, 0x4C
- .equiv FLAG_0x04D, 0x4D
- .equiv FLAG_0x04E, 0x4E
- .equiv FLAG_0x04F, 0x4F
- .equiv FLAG_0x050, 0x50
- .equiv FLAG_0x051, 0x51
- .equiv FLAG_0x052, 0x52
- .equiv FLAG_LEGENDARIES_IN_SOOTOPOLIS, 0x53
- .equiv FLAG_0x054, 0x54
- .equiv FLAG_0x055, 0x55
- .equiv FLAG_0x056, 0x56
- .equiv FLAG_0x057, 0x57
- .equiv FLAG_0x058, 0x58
- .equiv FLAG_0x059, 0x59
- .equiv FLAG_0x05A, 0x5A
- .equiv FLAG_0x05B, 0x5B
- .equiv FLAG_0x05C, 0x5C
- .equiv FLAG_0x05D, 0x5D
- .equiv FLAG_0x05E, 0x5E
- .equiv FLAG_0x05F, 0x5F
- .equiv FLAG_0x060, 0x60
- .equiv FLAG_0x061, 0x61
- .equiv FLAG_0x062, 0x62
- .equiv FLAG_0x063, 0x63
- .equiv FLAG_0x064, 0x64
- .equiv FLAG_0x065, 0x65
- .equiv FLAG_0x066, 0x66
- .equiv FLAG_0x067, 0x67
- .equiv FLAG_0x068, 0x68
- .equiv FLAG_0x069, 0x69
- .equiv FLAG_0x06A, 0x6A
- .equiv FLAG_0x06B, 0x6B
- .equiv FLAG_0x06C, 0x6C
- .equiv FLAG_0x06D, 0x6D
- .equiv FLAG_0x06E, 0x6E
- .equiv FLAG_0x06F, 0x6F
- .equiv FLAG_0x070, 0x70
- .equiv FLAG_0x071, 0x71
- .equiv FLAG_0x072, 0x72
- .equiv FLAG_0x073, 0x73
- .equiv FLAG_0x074, 0x74
- .equiv FLAG_0x075, 0x75
- .equiv FLAG_0x076, 0x76
- .equiv FLAG_0x077, 0x77
- .equiv FLAG_0x078, 0x78
- .equiv FLAG_0x079, 0x79
- .equiv FLAG_0x07A, 0x7A
- .equiv FLAG_0x07B, 0x7B
- .equiv FLAG_0x07C, 0x7C
- .equiv FLAG_0x07D, 0x7D
- .equiv FLAG_0x07E, 0x7E
- .equiv FLAG_0x07F, 0x7F
- .equiv FLAG_0x080, 0x80
- .equiv FLAG_0x081, 0x81
- .equiv FLAG_0x082, 0x82
- .equiv FLAG_0x083, 0x83
- .equiv FLAG_0x084, 0x84
- .equiv FLAG_0x085, 0x85
- .equiv FLAG_PENDING_DAYCARE_EGG, 0x86
- .equiv FLAG_0x087, 0x87
- .equiv FLAG_0x088, 0x88
- .equiv FLAG_0x089, 0x89
- .equiv FLAG_0x08A, 0x8A
- .equiv FLAG_0x08B, 0x8B
- .equiv FLAG_0x08C, 0x8C
- .equiv FLAG_0x08D, 0x8D
- .equiv FLAG_0x08E, 0x8E
- .equiv FLAG_0x08F, 0x8F
- .equiv FLAG_0x090, 0x90
- .equiv FLAG_0x091, 0x91
- .equiv FLAG_0x092, 0x92
- .equiv FLAG_0x093, 0x93
- .equiv FLAG_0x094, 0x94
- .equiv FLAG_0x095, 0x95
- .equiv FLAG_0x096, 0x96
- .equiv FLAG_0x097, 0x97
- .equiv FLAG_0x098, 0x98
- .equiv FLAG_0x099, 0x99
- .equiv FLAG_0x09A, 0x9A
- .equiv FLAG_0x09B, 0x9B
- .equiv FLAG_0x09C, 0x9C
- .equiv FLAG_0x09D, 0x9D
- .equiv FLAG_0x09E, 0x9E
- .equiv FLAG_0x09F, 0x9F
- .equiv FLAG_0x0A0, 0xA0
- .equiv FLAG_0x0A1, 0xA1
- .equiv FLAG_0x0A2, 0xA2
- .equiv FLAG_0x0A3, 0xA3
- .equiv FLAG_0x0A4, 0xA4
- .equiv FLAG_0x0A5, 0xA5
- .equiv FLAG_0x0A6, 0xA6
- .equiv FLAG_0x0A7, 0xA7
- .equiv FLAG_0x0A8, 0xA8
- .equiv FLAG_0x0A9, 0xA9
- .equiv FLAG_0x0AA, 0xAA
- .equiv FLAG_0x0AB, 0xAB
- .equiv FLAG_0x0AC, 0xAC
- .equiv FLAG_0x0AD, 0xAD
- .equiv FLAG_0x0AE, 0xAE
- .equiv FLAG_0x0AF, 0xAF
- .equiv FLAG_0x0B0, 0xB0
- .equiv FLAG_0x0B1, 0xB1
- .equiv FLAG_0x0B2, 0xB2
- .equiv FLAG_0x0B3, 0xB3
- .equiv FLAG_0x0B4, 0xB4
- .equiv FLAG_0x0B5, 0xB5
- .equiv FLAG_0x0B6, 0xB6
- .equiv FLAG_0x0B7, 0xB7
- .equiv FLAG_0x0B8, 0xB8
- .equiv FLAG_0x0B9, 0xB9
- .equiv FLAG_0x0BA, 0xBA
- .equiv FLAG_0x0BB, 0xBB
- .equiv FLAG_0x0BC, 0xBC
- .equiv FLAG_0x0BD, 0xBD
- .equiv FLAG_0x0BE, 0xBE
- .equiv FLAG_0x0BF, 0xBF
- .equiv FLAG_0x0C0, 0xC0
- .equiv FLAG_0x0C1, 0xC1
- .equiv FLAG_0x0C2, 0xC2
- .equiv FLAG_0x0C3, 0xC3
- .equiv FLAG_0x0C4, 0xC4
- .equiv FLAG_0x0C5, 0xC5
- .equiv FLAG_0x0C6, 0xC6
- .equiv FLAG_0x0C7, 0xC7
- .equiv FLAG_0x0C8, 0xC8
- .equiv FLAG_0x0C9, 0xC9
- .equiv FLAG_0x0CA, 0xCA
- .equiv FLAG_0x0CB, 0xCB
- .equiv FLAG_0x0CC, 0xCC
- .equiv FLAG_0x0CD, 0xCD
- .equiv FLAG_0x0CE, 0xCE
- .equiv FLAG_0x0CF, 0xCF
- .equiv FLAG_0x0D0, 0xD0
- .equiv FLAG_0x0D1, 0xD1
- .equiv FLAG_0x0D2, 0xD2
- .equiv FLAG_0x0D3, 0xD3
- .equiv FLAG_0x0D4, 0xD4
- .equiv FLAG_0x0D5, 0xD5
- .equiv FLAG_0x0D6, 0xD6
- .equiv FLAG_0x0D7, 0xD7
- .equiv FLAG_0x0D8, 0xD8
- .equiv FLAG_0x0D9, 0xD9
- .equiv FLAG_0x0DA, 0xDA
- .equiv FLAG_0x0DB, 0xDB
- .equiv FLAG_0x0DC, 0xDC
- .equiv FLAG_0x0DD, 0xDD
- .equiv FLAG_0x0DE, 0xDE
- .equiv FLAG_0x0DF, 0xDF
- .equiv FLAG_0x0E0, 0xE0
- .equiv FLAG_0x0E1, 0xE1
- .equiv FLAG_0x0E2, 0xE2
- .equiv FLAG_0x0E3, 0xE3
- .equiv FLAG_0x0E4, 0xE4
- .equiv FLAG_0x0E5, 0xE5
- .equiv FLAG_0x0E6, 0xE6
- .equiv FLAG_0x0E7, 0xE7
- .equiv FLAG_0x0E8, 0xE8
- .equiv FLAG_0x0E9, 0xE9
- .equiv FLAG_0x0EA, 0xEA
- .equiv FLAG_0x0EB, 0xEB
- .equiv FLAG_0x0EC, 0xEC
- .equiv FLAG_0x0ED, 0xED
- .equiv FLAG_0x0EE, 0xEE
- .equiv FLAG_0x0EF, 0xEF
- .equiv FLAG_0x0F0, 0xF0
- .equiv FLAG_0x0F1, 0xF1
- .equiv FLAG_0x0F2, 0xF2
- .equiv FLAG_0x0F3, 0xF3
- .equiv FLAG_0x0F4, 0xF4
- .equiv FLAG_0x0F5, 0xF5
- .equiv FLAG_0x0F6, 0xF6
- .equiv FLAG_0x0F7, 0xF7
- .equiv FLAG_0x0F8, 0xF8
- .equiv FLAG_0x0F9, 0xF9
- .equiv FLAG_0x0FA, 0xFA
- .equiv FLAG_0x0FB, 0xFB
- .equiv FLAG_0x0FC, 0xFC
- .equiv FLAG_0x0FD, 0xFD
- .equiv FLAG_0x0FE, 0xFE
- .equiv FLAG_0x0FF, 0xFF
- .equiv FLAG_0x100, 0x100
- .equiv FLAG_0x101, 0x101
- .equiv FLAG_0x102, 0x102
- .equiv FLAG_0x103, 0x103
- .equiv FLAG_0x104, 0x104
- .equiv FLAG_0x105, 0x105
- .equiv FLAG_0x106, 0x106
- .equiv FLAG_0x107, 0x107
- .equiv FLAG_0x108, 0x108
- .equiv FLAG_0x109, 0x109
- .equiv FLAG_0x10A, 0x10A
- .equiv FLAG_0x10B, 0x10B
- .equiv FLAG_0x10C, 0x10C
- .equiv FLAG_0x10D, 0x10D
- .equiv FLAG_0x10E, 0x10E
- .equiv FLAG_0x10F, 0x10F
- .equiv FLAG_0x110, 0x110
- .equiv FLAG_0x111, 0x111
- .equiv FLAG_0x112, 0x112
- .equiv FLAG_0x113, 0x113
- .equiv FLAG_0x114, 0x114
- .equiv FLAG_0x115, 0x115
- .equiv FLAG_0x116, 0x116
- .equiv FLAG_0x117, 0x117
- .equiv FLAG_0x118, 0x118
- .equiv FLAG_0x119, 0x119
- .equiv FLAG_0x11A, 0x11A
- .equiv FLAG_0x11B, 0x11B
- .equiv FLAG_0x11C, 0x11C
- .equiv FLAG_0x11D, 0x11D
- .equiv FLAG_0x11E, 0x11E
- .equiv FLAG_0x11F, 0x11F
- .equiv FLAG_0x120, 0x120
- .equiv FLAG_0x121, 0x121
- .equiv FLAG_0x122, 0x122
- .equiv FLAG_0x123, 0x123
- .equiv FLAG_0x124, 0x124
- .equiv FLAG_0x125, 0x125
- .equiv FLAG_0x126, 0x126
- .equiv FLAG_0x127, 0x127
- .equiv FLAG_0x128, 0x128
- .equiv FLAG_0x129, 0x129
- .equiv FLAG_0x12A, 0x12A
- .equiv FLAG_0x12B, 0x12B
- .equiv FLAG_0x12C, 0x12C
- .equiv FLAG_0x12D, 0x12D
- .equiv FLAG_0x12E, 0x12E
- .equiv FLAG_0x12F, 0x12F
- .equiv FLAG_0x130, 0x130
- .equiv FLAG_0x131, 0x131
- .equiv FLAG_0x132, 0x132
- .equiv FLAG_0x133, 0x133
- .equiv FLAG_0x134, 0x134
- .equiv FLAG_0x135, 0x135
- .equiv FLAG_0x136, 0x136
- .equiv FLAG_0x137, 0x137
- .equiv FLAG_0x138, 0x138
- .equiv FLAG_0x139, 0x139
- .equiv FLAG_0x13A, 0x13A
- .equiv FLAG_0x13B, 0x13B
- .equiv FLAG_0x13C, 0x13C
- .equiv FLAG_0x13D, 0x13D
- .equiv FLAG_0x13E, 0x13E
- .equiv FLAG_0x13F, 0x13F
- .equiv FLAG_0x140, 0x140
- .equiv FLAG_0x141, 0x141
- .equiv FLAG_0x142, 0x142
- .equiv FLAG_0x143, 0x143
- .equiv FLAG_0x144, 0x144
- .equiv FLAG_0x145, 0x145
- .equiv FLAG_0x146, 0x146
- .equiv FLAG_0x147, 0x147
- .equiv FLAG_0x148, 0x148
- .equiv FLAG_0x149, 0x149
- .equiv FLAG_0x14A, 0x14A
- .equiv FLAG_0x14B, 0x14B
- .equiv FLAG_0x14C, 0x14C
- .equiv FLAG_0x14D, 0x14D
- .equiv FLAG_0x14E, 0x14E
- .equiv FLAG_0x14F, 0x14F
- .equiv FLAG_0x150, 0x150
- .equiv FLAG_0x151, 0x151
- .equiv FLAG_0x152, 0x152
- .equiv FLAG_0x153, 0x153
- .equiv FLAG_0x154, 0x154
- .equiv FLAG_0x155, 0x155
- .equiv FLAG_0x156, 0x156
- .equiv FLAG_0x157, 0x157
- .equiv FLAG_0x158, 0x158
- .equiv FLAG_0x159, 0x159
- .equiv FLAG_0x15A, 0x15A
- .equiv FLAG_0x15B, 0x15B
- .equiv FLAG_0x15C, 0x15C
- .equiv FLAG_0x15D, 0x15D
- .equiv FLAG_0x15E, 0x15E
- .equiv FLAG_0x15F, 0x15F
- .equiv FLAG_0x160, 0x160
- .equiv FLAG_0x161, 0x161
- .equiv FLAG_0x162, 0x162
- .equiv FLAG_0x163, 0x163
- .equiv FLAG_0x164, 0x164
- .equiv FLAG_0x165, 0x165
- .equiv FLAG_0x166, 0x166
- .equiv FLAG_0x167, 0x167
- .equiv FLAG_0x168, 0x168
- .equiv FLAG_0x169, 0x169
- .equiv FLAG_0x16A, 0x16A
- .equiv FLAG_0x16B, 0x16B
- .equiv FLAG_0x16C, 0x16C
- .equiv FLAG_0x16D, 0x16D
- .equiv FLAG_0x16E, 0x16E
- .equiv FLAG_0x16F, 0x16F
- .equiv FLAG_0x170, 0x170
- .equiv FLAG_0x171, 0x171
- .equiv FLAG_0x172, 0x172
- .equiv FLAG_0x173, 0x173
- .equiv FLAG_0x174, 0x174
- .equiv FLAG_0x175, 0x175
- .equiv FLAG_0x176, 0x176
- .equiv FLAG_0x177, 0x177
- .equiv FLAG_0x178, 0x178
- .equiv FLAG_0x179, 0x179
- .equiv FLAG_0x17A, 0x17A
- .equiv FLAG_0x17B, 0x17B
- .equiv FLAG_0x17C, 0x17C
- .equiv FLAG_0x17D, 0x17D
- .equiv FLAG_0x17E, 0x17E
- .equiv FLAG_0x17F, 0x17F
- .equiv FLAG_0x180, 0x180
- .equiv FLAG_0x181, 0x181
- .equiv FLAG_0x182, 0x182
- .equiv FLAG_0x183, 0x183
- .equiv FLAG_0x184, 0x184
- .equiv FLAG_0x185, 0x185
- .equiv FLAG_0x186, 0x186
- .equiv FLAG_0x187, 0x187
- .equiv FLAG_0x188, 0x188
- .equiv FLAG_0x189, 0x189
- .equiv FLAG_0x18A, 0x18A
- .equiv FLAG_0x18B, 0x18B
- .equiv FLAG_0x18C, 0x18C
- .equiv FLAG_0x18D, 0x18D
- .equiv FLAG_0x18E, 0x18E
- .equiv FLAG_0x18F, 0x18F
- .equiv FLAG_0x190, 0x190
- .equiv FLAG_0x191, 0x191
- .equiv FLAG_0x192, 0x192
- .equiv FLAG_0x193, 0x193
- .equiv FLAG_0x194, 0x194
- .equiv FLAG_0x195, 0x195
- .equiv FLAG_0x196, 0x196
- .equiv FLAG_0x197, 0x197
- .equiv FLAG_0x198, 0x198
- .equiv FLAG_0x199, 0x199
- .equiv FLAG_0x19A, 0x19A
- .equiv FLAG_0x19B, 0x19B
- .equiv FLAG_0x19C, 0x19C
- .equiv FLAG_0x19D, 0x19D
- .equiv FLAG_0x19E, 0x19E
- .equiv FLAG_0x19F, 0x19F
- .equiv FLAG_0x1A0, 0x1A0
- .equiv FLAG_0x1A1, 0x1A1
- .equiv FLAG_0x1A2, 0x1A2
- .equiv FLAG_0x1A3, 0x1A3
- .equiv FLAG_0x1A4, 0x1A4
- .equiv FLAG_0x1A5, 0x1A5
- .equiv FLAG_0x1A6, 0x1A6
- .equiv FLAG_0x1A7, 0x1A7
- .equiv FLAG_0x1A8, 0x1A8
- .equiv FLAG_0x1A9, 0x1A9
- .equiv FLAG_0x1AA, 0x1AA
- .equiv FLAG_0x1AB, 0x1AB
- .equiv FLAG_0x1AC, 0x1AC
- .equiv FLAG_0x1AD, 0x1AD
- .equiv FLAG_0x1AE, 0x1AE
- .equiv FLAG_0x1AF, 0x1AF
- .equiv FLAG_0x1B0, 0x1B0
- .equiv FLAG_0x1B1, 0x1B1
- .equiv FLAG_0x1B2, 0x1B2
- .equiv FLAG_0x1B3, 0x1B3
- .equiv FLAG_0x1B4, 0x1B4
- .equiv FLAG_0x1B5, 0x1B5
- .equiv FLAG_0x1B6, 0x1B6
- .equiv FLAG_0x1B7, 0x1B7
- .equiv FLAG_0x1B8, 0x1B8
- .equiv FLAG_0x1B9, 0x1B9
- .equiv FLAG_0x1BA, 0x1BA
- .equiv FLAG_0x1BB, 0x1BB
- .equiv FLAG_0x1BC, 0x1BC
- .equiv FLAG_0x1BD, 0x1BD
- .equiv FLAG_0x1BE, 0x1BE
- .equiv FLAG_0x1BF, 0x1BF
- .equiv FLAG_0x1C0, 0x1C0
- .equiv FLAG_0x1C1, 0x1C1
- .equiv FLAG_0x1C2, 0x1C2
- .equiv FLAG_0x1C3, 0x1C3
- .equiv FLAG_0x1C4, 0x1C4
- .equiv FLAG_0x1C5, 0x1C5
- .equiv FLAG_0x1C6, 0x1C6
- .equiv FLAG_0x1C7, 0x1C7
- .equiv FLAG_0x1C8, 0x1C8
- .equiv FLAG_0x1C9, 0x1C9
- .equiv FLAG_0x1CA, 0x1CA
- .equiv FLAG_0x1CB, 0x1CB
- .equiv FLAG_0x1CC, 0x1CC
- .equiv FLAG_0x1CD, 0x1CD
- .equiv FLAG_0x1CE, 0x1CE
- .equiv FLAG_0x1CF, 0x1CF
- .equiv FLAG_0x1D0, 0x1D0
- .equiv FLAG_0x1D1, 0x1D1
- .equiv FLAG_0x1D2, 0x1D2
- .equiv FLAG_0x1D3, 0x1D3
- .equiv FLAG_0x1D4, 0x1D4
- .equiv FLAG_0x1D5, 0x1D5
- .equiv FLAG_0x1D6, 0x1D6
- .equiv FLAG_0x1D7, 0x1D7
- .equiv FLAG_0x1D8, 0x1D8
- .equiv FLAG_0x1D9, 0x1D9
- .equiv FLAG_0x1DA, 0x1DA
- .equiv FLAG_0x1DB, 0x1DB
- .equiv FLAG_0x1DC, 0x1DC
- .equiv FLAG_0x1DD, 0x1DD
- .equiv FLAG_0x1DE, 0x1DE
- .equiv FLAG_0x1DF, 0x1DF
- .equiv FLAG_0x1E0, 0x1E0
- .equiv FLAG_0x1E1, 0x1E1
- .equiv FLAG_0x1E2, 0x1E2
- .equiv FLAG_0x1E3, 0x1E3
- .equiv FLAG_0x1E4, 0x1E4
- .equiv FLAG_0x1E5, 0x1E5
- .equiv FLAG_0x1E6, 0x1E6
- .equiv FLAG_0x1E7, 0x1E7
- .equiv FLAG_0x1E8, 0x1E8
- .equiv FLAG_0x1E9, 0x1E9
- .equiv FLAG_0x1EA, 0x1EA
- .equiv FLAG_0x1EB, 0x1EB
- .equiv FLAG_0x1EC, 0x1EC
- .equiv FLAG_0x1ED, 0x1ED
- .equiv FLAG_0x1EE, 0x1EE
- .equiv FLAG_0x1EF, 0x1EF
- .equiv FLAG_0x1F0, 0x1F0
- .equiv FLAG_0x1F1, 0x1F1
- .equiv FLAG_0x1F2, 0x1F2
- .equiv FLAG_0x1F3, 0x1F3
- .equiv FLAG_0x1F4, 0x1F4
- .equiv FLAG_0x1F5, 0x1F5
- .equiv FLAG_0x1F6, 0x1F6
- .equiv FLAG_0x1F7, 0x1F7
- .equiv FLAG_0x1F8, 0x1F8
- .equiv FLAG_0x1F9, 0x1F9
- .equiv FLAG_0x1FA, 0x1FA
- .equiv FLAG_0x1FB, 0x1FB
- .equiv FLAG_0x1FC, 0x1FC
- .equiv FLAG_0x1FD, 0x1FD
- .equiv FLAG_0x1FE, 0x1FE
- .equiv FLAG_0x1FF, 0x1FF
- .equiv FLAG_0x200, 0x200
- .equiv FLAG_0x201, 0x201
- .equiv FLAG_0x202, 0x202
- .equiv FLAG_0x203, 0x203
- .equiv FLAG_0x204, 0x204
- .equiv FLAG_0x205, 0x205
- .equiv FLAG_0x206, 0x206
- .equiv FLAG_0x207, 0x207
- .equiv FLAG_0x208, 0x208
- .equiv FLAG_0x209, 0x209
- .equiv FLAG_0x20A, 0x20A
- .equiv FLAG_0x20B, 0x20B
- .equiv FLAG_0x20C, 0x20C
- .equiv FLAG_0x20D, 0x20D
- .equiv FLAG_0x20E, 0x20E
- .equiv FLAG_0x20F, 0x20F
- .equiv FLAG_0x210, 0x210
- .equiv FLAG_0x211, 0x211
- .equiv FLAG_0x212, 0x212
- .equiv FLAG_0x213, 0x213
- .equiv FLAG_0x214, 0x214
- .equiv FLAG_0x215, 0x215
- .equiv FLAG_0x216, 0x216
- .equiv FLAG_0x217, 0x217
- .equiv FLAG_0x218, 0x218
- .equiv FLAG_0x219, 0x219
- .equiv FLAG_0x21A, 0x21A
- .equiv FLAG_0x21B, 0x21B
- .equiv FLAG_0x21C, 0x21C
- .equiv FLAG_0x21D, 0x21D
- .equiv FLAG_0x21E, 0x21E
- .equiv FLAG_0x21F, 0x21F
- .equiv FLAG_0x220, 0x220
- .equiv FLAG_0x221, 0x221
- .equiv FLAG_0x222, 0x222
- .equiv FLAG_0x223, 0x223
- .equiv FLAG_0x224, 0x224
- .equiv FLAG_0x225, 0x225
- .equiv FLAG_0x226, 0x226
- .equiv FLAG_0x227, 0x227
- .equiv FLAG_0x228, 0x228
- .equiv FLAG_0x229, 0x229
- .equiv FLAG_0x22A, 0x22A
- .equiv FLAG_0x22B, 0x22B
- .equiv FLAG_0x22C, 0x22C
- .equiv FLAG_0x22D, 0x22D
- .equiv FLAG_0x22E, 0x22E
- .equiv FLAG_0x22F, 0x22F
- .equiv FLAG_0x230, 0x230
- .equiv FLAG_0x231, 0x231
- .equiv FLAG_0x232, 0x232
- .equiv FLAG_0x233, 0x233
- .equiv FLAG_0x234, 0x234
- .equiv FLAG_0x235, 0x235
- .equiv FLAG_0x236, 0x236
- .equiv FLAG_0x237, 0x237
- .equiv FLAG_0x238, 0x238
- .equiv FLAG_0x239, 0x239
- .equiv FLAG_0x23A, 0x23A
- .equiv FLAG_0x23B, 0x23B
- .equiv FLAG_0x23C, 0x23C
- .equiv FLAG_0x23D, 0x23D
- .equiv FLAG_0x23E, 0x23E
- .equiv FLAG_0x23F, 0x23F
- .equiv FLAG_0x240, 0x240
- .equiv FLAG_0x241, 0x241
- .equiv FLAG_0x242, 0x242
- .equiv FLAG_0x243, 0x243
- .equiv FLAG_0x244, 0x244
- .equiv FLAG_0x245, 0x245
- .equiv FLAG_0x246, 0x246
- .equiv FLAG_0x247, 0x247
- .equiv FLAG_0x248, 0x248
- .equiv FLAG_0x249, 0x249
- .equiv FLAG_0x24A, 0x24A
- .equiv FLAG_0x24B, 0x24B
- .equiv FLAG_0x24C, 0x24C
- .equiv FLAG_0x24D, 0x24D
- .equiv FLAG_0x24E, 0x24E
- .equiv FLAG_0x24F, 0x24F
- .equiv FLAG_0x250, 0x250
- .equiv FLAG_0x251, 0x251
- .equiv FLAG_0x252, 0x252
- .equiv FLAG_0x253, 0x253
- .equiv FLAG_0x254, 0x254
- .equiv FLAG_0x255, 0x255
- .equiv FLAG_0x256, 0x256
- .equiv FLAG_0x257, 0x257
- .equiv FLAG_0x258, 0x258
- .equiv FLAG_0x259, 0x259
- .equiv FLAG_0x25A, 0x25A
- .equiv FLAG_0x25B, 0x25B
- .equiv FLAG_0x25C, 0x25C
- .equiv FLAG_0x25D, 0x25D
- .equiv FLAG_0x25E, 0x25E
- .equiv FLAG_0x25F, 0x25F
- .equiv FLAG_0x260, 0x260
- .equiv FLAG_0x261, 0x261
- .equiv FLAG_0x262, 0x262
- .equiv FLAG_0x263, 0x263
- .equiv FLAG_0x264, 0x264
- .equiv FLAG_0x265, 0x265
- .equiv FLAG_0x266, 0x266
- .equiv FLAG_0x267, 0x267
- .equiv FLAG_0x268, 0x268
- .equiv FLAG_0x269, 0x269
- .equiv FLAG_0x26A, 0x26A
- .equiv FLAG_0x26B, 0x26B
- .equiv FLAG_0x26C, 0x26C
- .equiv FLAG_0x26D, 0x26D
- .equiv FLAG_0x26E, 0x26E
- .equiv FLAG_0x26F, 0x26F
- .equiv FLAG_0x270, 0x270
- .equiv FLAG_0x271, 0x271
- .equiv FLAG_0x272, 0x272
- .equiv FLAG_0x273, 0x273
- .equiv FLAG_0x274, 0x274
- .equiv FLAG_0x275, 0x275
- .equiv FLAG_0x276, 0x276
- .equiv FLAG_0x277, 0x277
- .equiv FLAG_0x278, 0x278
- .equiv FLAG_0x279, 0x279
- .equiv FLAG_0x27A, 0x27A
- .equiv FLAG_0x27B, 0x27B
- .equiv FLAG_0x27C, 0x27C
- .equiv FLAG_0x27D, 0x27D
- .equiv FLAG_0x27E, 0x27E
- .equiv FLAG_0x27F, 0x27F
- .equiv FLAG_0x280, 0x280
- .equiv FLAG_0x281, 0x281
- .equiv FLAG_0x282, 0x282
- .equiv FLAG_0x283, 0x283
- .equiv FLAG_0x284, 0x284
- .equiv FLAG_0x285, 0x285
- .equiv FLAG_0x286, 0x286
- .equiv FLAG_0x287, 0x287
- .equiv FLAG_0x288, 0x288
- .equiv FLAG_0x289, 0x289
- .equiv FLAG_0x28A, 0x28A
- .equiv FLAG_0x28B, 0x28B
- .equiv FLAG_0x28C, 0x28C
- .equiv FLAG_0x28D, 0x28D
- .equiv FLAG_0x28E, 0x28E
- .equiv FLAG_0x28F, 0x28F
- .equiv FLAG_0x290, 0x290
- .equiv FLAG_0x291, 0x291
- .equiv FLAG_0x292, 0x292
- .equiv FLAG_0x293, 0x293
- .equiv FLAG_0x294, 0x294
- .equiv FLAG_0x295, 0x295
- .equiv FLAG_0x296, 0x296
- .equiv FLAG_0x297, 0x297
- .equiv FLAG_0x298, 0x298
- .equiv FLAG_0x299, 0x299
- .equiv FLAG_0x29A, 0x29A
- .equiv FLAG_0x29B, 0x29B
- .equiv FLAG_0x29C, 0x29C
- .equiv FLAG_0x29D, 0x29D
- .equiv FLAG_0x29E, 0x29E
- .equiv FLAG_0x29F, 0x29F
- .equiv FLAG_0x2A0, 0x2A0
- .equiv FLAG_0x2A1, 0x2A1
- .equiv FLAG_0x2A2, 0x2A2
- .equiv FLAG_0x2A3, 0x2A3
- .equiv FLAG_0x2A4, 0x2A4
- .equiv FLAG_0x2A5, 0x2A5
- .equiv FLAG_0x2A6, 0x2A6
- .equiv FLAG_0x2A7, 0x2A7
- .equiv FLAG_0x2A8, 0x2A8
- .equiv FLAG_0x2A9, 0x2A9
- .equiv FLAG_0x2AA, 0x2AA
- .equiv FLAG_0x2AB, 0x2AB
- .equiv FLAG_0x2AC, 0x2AC
- .equiv FLAG_0x2AD, 0x2AD
- .equiv FLAG_0x2AE, 0x2AE
- .equiv FLAG_0x2AF, 0x2AF
- .equiv FLAG_0x2B0, 0x2B0
- .equiv FLAG_0x2B1, 0x2B1
- .equiv FLAG_0x2B2, 0x2B2
- .equiv FLAG_0x2B3, 0x2B3
- .equiv FLAG_0x2B4, 0x2B4
- .equiv FLAG_0x2B5, 0x2B5
- .equiv FLAG_0x2B6, 0x2B6
- .equiv FLAG_0x2B7, 0x2B7
- .equiv FLAG_0x2B8, 0x2B8
- .equiv FLAG_0x2B9, 0x2B9
- .equiv FLAG_0x2BA, 0x2BA
- .equiv FLAG_0x2BB, 0x2BB
- .equiv FLAG_0x2BC, 0x2BC
- .equiv FLAG_0x2BD, 0x2BD
- .equiv FLAG_0x2BE, 0x2BE
- .equiv FLAG_0x2BF, 0x2BF
- .equiv FLAG_0x2C0, 0x2C0
- .equiv FLAG_0x2C1, 0x2C1
- .equiv FLAG_0x2C2, 0x2C2
- .equiv FLAG_0x2C3, 0x2C3
- .equiv FLAG_0x2C4, 0x2C4
- .equiv FLAG_0x2C5, 0x2C5
- .equiv FLAG_0x2C6, 0x2C6
- .equiv FLAG_0x2C7, 0x2C7
- .equiv FLAG_0x2C8, 0x2C8
- .equiv FLAG_0x2C9, 0x2C9
- .equiv FLAG_0x2CA, 0x2CA
- .equiv FLAG_0x2CB, 0x2CB
- .equiv FLAG_0x2CC, 0x2CC
- .equiv FLAG_0x2CD, 0x2CD
- .equiv FLAG_0x2CE, 0x2CE
- .equiv FLAG_0x2CF, 0x2CF
- .equiv FLAG_0x2D0, 0x2D0
- .equiv FLAG_0x2D1, 0x2D1
- .equiv FLAG_0x2D2, 0x2D2
- .equiv FLAG_0x2D3, 0x2D3
- .equiv FLAG_0x2D4, 0x2D4
- .equiv FLAG_0x2D5, 0x2D5
- .equiv FLAG_0x2D6, 0x2D6
- .equiv FLAG_0x2D7, 0x2D7
- .equiv FLAG_0x2D8, 0x2D8
- .equiv FLAG_0x2D9, 0x2D9
- .equiv FLAG_0x2DA, 0x2DA
- .equiv FLAG_0x2DB, 0x2DB
- .equiv FLAG_0x2DC, 0x2DC
- .equiv FLAG_0x2DD, 0x2DD
- .equiv FLAG_0x2DE, 0x2DE
- .equiv FLAG_0x2DF, 0x2DF
- .equiv FLAG_0x2E0, 0x2E0
- .equiv FLAG_0x2E1, 0x2E1
- .equiv FLAG_0x2E2, 0x2E2
- .equiv FLAG_0x2E3, 0x2E3
- .equiv FLAG_0x2E4, 0x2E4
- .equiv FLAG_0x2E5, 0x2E5
- .equiv FLAG_0x2E6, 0x2E6
- .equiv FLAG_0x2E7, 0x2E7
- .equiv FLAG_0x2E8, 0x2E8
- .equiv FLAG_0x2E9, 0x2E9
- .equiv FLAG_0x2EA, 0x2EA
- .equiv FLAG_0x2EB, 0x2EB
- .equiv FLAG_0x2EC, 0x2EC
- .equiv FLAG_0x2ED, 0x2ED
- .equiv FLAG_0x2EE, 0x2EE
- .equiv FLAG_0x2EF, 0x2EF
- .equiv FLAG_0x2F0, 0x2F0
- .equiv FLAG_0x2F1, 0x2F1
- .equiv FLAG_0x2F2, 0x2F2
- .equiv FLAG_0x2F3, 0x2F3
- .equiv FLAG_0x2F4, 0x2F4
- .equiv FLAG_0x2F5, 0x2F5
- .equiv FLAG_0x2F6, 0x2F6
- .equiv FLAG_0x2F7, 0x2F7
- .equiv FLAG_0x2F8, 0x2F8
- .equiv FLAG_0x2F9, 0x2F9
- .equiv FLAG_0x2FA, 0x2FA
- .equiv FLAG_0x2FB, 0x2FB
- .equiv FLAG_0x2FC, 0x2FC
- .equiv FLAG_0x2FD, 0x2FD
- .equiv FLAG_0x2FE, 0x2FE
- .equiv FLAG_0x2FF, 0x2FF
- .equiv FLAG_0x300, 0x300
- .equiv FLAG_0x301, 0x301
- .equiv FLAG_0x302, 0x302
- .equiv FLAG_0x303, 0x303
- .equiv FLAG_0x304, 0x304
- .equiv FLAG_0x305, 0x305
- .equiv FLAG_0x306, 0x306
- .equiv FLAG_0x307, 0x307
- .equiv FLAG_0x308, 0x308
- .equiv FLAG_0x309, 0x309
- .equiv FLAG_0x30A, 0x30A
- .equiv FLAG_0x30B, 0x30B
- .equiv FLAG_0x30C, 0x30C
- .equiv FLAG_0x30D, 0x30D
- .equiv FLAG_0x30E, 0x30E
- .equiv FLAG_0x30F, 0x30F
- .equiv FLAG_0x310, 0x310
- .equiv FLAG_0x311, 0x311
- .equiv FLAG_0x312, 0x312
- .equiv FLAG_0x313, 0x313
- .equiv FLAG_0x314, 0x314
- .equiv FLAG_0x315, 0x315
- .equiv FLAG_0x316, 0x316
- .equiv FLAG_0x317, 0x317
- .equiv FLAG_0x318, 0x318
- .equiv FLAG_0x319, 0x319
- .equiv FLAG_0x31A, 0x31A
- .equiv FLAG_0x31B, 0x31B
- .equiv FLAG_0x31C, 0x31C
- .equiv FLAG_0x31D, 0x31D
- .equiv FLAG_0x31E, 0x31E
- .equiv FLAG_0x31F, 0x31F
- .equiv FLAG_0x320, 0x320
- .equiv FLAG_0x321, 0x321
- .equiv FLAG_0x322, 0x322
- .equiv FLAG_0x323, 0x323
- .equiv FLAG_0x324, 0x324
- .equiv FLAG_0x325, 0x325
- .equiv FLAG_0x326, 0x326
- .equiv FLAG_0x327, 0x327
- .equiv FLAG_0x328, 0x328
- .equiv FLAG_0x329, 0x329
- .equiv FLAG_0x32A, 0x32A
- .equiv FLAG_0x32B, 0x32B
- .equiv FLAG_0x32C, 0x32C
- .equiv FLAG_0x32D, 0x32D
- .equiv FLAG_0x32E, 0x32E
- .equiv FLAG_0x32F, 0x32F
- .equiv FLAG_0x330, 0x330
- .equiv FLAG_0x331, 0x331
- .equiv FLAG_0x332, 0x332
- .equiv FLAG_0x333, 0x333
- .equiv FLAG_0x334, 0x334
- .equiv FLAG_0x335, 0x335
- .equiv FLAG_0x336, 0x336
- .equiv FLAG_0x337, 0x337
- .equiv FLAG_0x338, 0x338
- .equiv FLAG_0x339, 0x339
- .equiv FLAG_0x33A, 0x33A
- .equiv FLAG_0x33B, 0x33B
- .equiv FLAG_0x33C, 0x33C
- .equiv FLAG_0x33D, 0x33D
- .equiv FLAG_0x33E, 0x33E
- .equiv FLAG_0x33F, 0x33F
- .equiv FLAG_0x340, 0x340
- .equiv FLAG_0x341, 0x341
- .equiv FLAG_0x342, 0x342
- .equiv FLAG_0x343, 0x343
- .equiv FLAG_0x344, 0x344
- .equiv FLAG_0x345, 0x345
- .equiv FLAG_0x346, 0x346
- .equiv FLAG_0x347, 0x347
- .equiv FLAG_0x348, 0x348
- .equiv FLAG_0x349, 0x349
- .equiv FLAG_0x34A, 0x34A
- .equiv FLAG_0x34B, 0x34B
- .equiv FLAG_0x34C, 0x34C
- .equiv FLAG_0x34D, 0x34D
- .equiv FLAG_0x34E, 0x34E
- .equiv FLAG_0x34F, 0x34F
- .equiv FLAG_0x350, 0x350
- .equiv FLAG_0x351, 0x351
- .equiv FLAG_0x352, 0x352
- .equiv FLAG_0x353, 0x353
- .equiv FLAG_0x354, 0x354
- .equiv FLAG_0x355, 0x355
- .equiv FLAG_0x356, 0x356
- .equiv FLAG_0x357, 0x357
- .equiv FLAG_0x358, 0x358
- .equiv FLAG_0x359, 0x359
- .equiv FLAG_0x35A, 0x35A
- .equiv FLAG_0x35B, 0x35B
- .equiv FLAG_0x35C, 0x35C
- .equiv FLAG_0x35D, 0x35D
- .equiv FLAG_0x35E, 0x35E
- .equiv FLAG_0x35F, 0x35F
- .equiv FLAG_0x360, 0x360
- .equiv FLAG_0x361, 0x361
- .equiv FLAG_0x362, 0x362
- .equiv FLAG_0x363, 0x363
- .equiv FLAG_0x364, 0x364
- .equiv FLAG_0x365, 0x365
- .equiv FLAG_0x366, 0x366
- .equiv FLAG_0x367, 0x367
- .equiv FLAG_0x368, 0x368
- .equiv FLAG_0x369, 0x369
- .equiv FLAG_0x36A, 0x36A
- .equiv FLAG_0x36B, 0x36B
- .equiv FLAG_0x36C, 0x36C
- .equiv FLAG_0x36D, 0x36D
- .equiv FLAG_0x36E, 0x36E
- .equiv FLAG_0x36F, 0x36F
- .equiv FLAG_0x370, 0x370
- .equiv FLAG_0x371, 0x371
- .equiv FLAG_0x372, 0x372
- .equiv FLAG_0x373, 0x373
- .equiv FLAG_0x374, 0x374
- .equiv FLAG_0x375, 0x375
- .equiv FLAG_0x376, 0x376
- .equiv FLAG_0x377, 0x377
- .equiv FLAG_0x378, 0x378
- .equiv FLAG_0x379, 0x379
- .equiv FLAG_0x37A, 0x37A
- .equiv FLAG_0x37B, 0x37B
- .equiv FLAG_0x37C, 0x37C
- .equiv FLAG_0x37D, 0x37D
- .equiv FLAG_0x37E, 0x37E
- .equiv FLAG_0x37F, 0x37F
- .equiv FLAG_0x380, 0x380
- .equiv FLAG_0x381, 0x381
- .equiv FLAG_0x382, 0x382
- .equiv FLAG_0x383, 0x383
- .equiv FLAG_0x384, 0x384
- .equiv FLAG_0x385, 0x385
- .equiv FLAG_0x386, 0x386
- .equiv FLAG_0x387, 0x387
- .equiv FLAG_0x388, 0x388
- .equiv FLAG_0x389, 0x389
- .equiv FLAG_0x38A, 0x38A
- .equiv FLAG_0x38B, 0x38B
- .equiv FLAG_0x38C, 0x38C
- .equiv FLAG_0x38D, 0x38D
- .equiv FLAG_0x38E, 0x38E
- .equiv FLAG_0x38F, 0x38F
- .equiv FLAG_0x390, 0x390
- .equiv FLAG_0x391, 0x391
- .equiv FLAG_0x392, 0x392
- .equiv FLAG_0x393, 0x393
- .equiv FLAG_0x394, 0x394
- .equiv FLAG_0x395, 0x395
- .equiv FLAG_0x396, 0x396
- .equiv FLAG_0x397, 0x397
- .equiv FLAG_0x398, 0x398
- .equiv FLAG_0x399, 0x399
- .equiv FLAG_0x39A, 0x39A
- .equiv FLAG_0x39B, 0x39B
- .equiv FLAG_0x39C, 0x39C
- .equiv FLAG_0x39D, 0x39D
- .equiv FLAG_0x39E, 0x39E
- .equiv FLAG_0x39F, 0x39F
- .equiv FLAG_0x3A0, 0x3A0
- .equiv FLAG_0x3A1, 0x3A1
- .equiv FLAG_0x3A2, 0x3A2
- .equiv FLAG_0x3A3, 0x3A3
- .equiv FLAG_0x3A4, 0x3A4
- .equiv FLAG_0x3A5, 0x3A5
- .equiv FLAG_0x3A6, 0x3A6
- .equiv FLAG_0x3A7, 0x3A7
- .equiv FLAG_0x3A8, 0x3A8
- .equiv FLAG_0x3A9, 0x3A9
- .equiv FLAG_0x3AA, 0x3AA
- .equiv FLAG_0x3AB, 0x3AB
- .equiv FLAG_0x3AC, 0x3AC
- .equiv FLAG_0x3AD, 0x3AD
- .equiv FLAG_0x3AE, 0x3AE
- .equiv FLAG_0x3AF, 0x3AF
- .equiv FLAG_0x3B0, 0x3B0
- .equiv FLAG_0x3B1, 0x3B1
- .equiv FLAG_0x3B2, 0x3B2
- .equiv FLAG_0x3B3, 0x3B3
- .equiv FLAG_0x3B4, 0x3B4
- .equiv FLAG_0x3B5, 0x3B5
- .equiv FLAG_0x3B6, 0x3B6
- .equiv FLAG_0x3B7, 0x3B7
- .equiv FLAG_0x3B8, 0x3B8
- .equiv FLAG_0x3B9, 0x3B9
- .equiv FLAG_0x3BA, 0x3BA
- .equiv FLAG_0x3BB, 0x3BB
- .equiv FLAG_0x3BC, 0x3BC
- .equiv FLAG_0x3BD, 0x3BD
- .equiv FLAG_0x3BE, 0x3BE
- .equiv FLAG_0x3BF, 0x3BF
- .equiv FLAG_0x3C0, 0x3C0
- .equiv FLAG_0x3C1, 0x3C1
- .equiv FLAG_0x3C2, 0x3C2
- .equiv FLAG_0x3C3, 0x3C3
- .equiv FLAG_0x3C4, 0x3C4
- .equiv FLAG_0x3C5, 0x3C5
- .equiv FLAG_0x3C6, 0x3C6
- .equiv FLAG_0x3C7, 0x3C7
- .equiv FLAG_0x3C8, 0x3C8
- .equiv FLAG_0x3C9, 0x3C9
- .equiv FLAG_0x3CA, 0x3CA
- .equiv FLAG_0x3CB, 0x3CB
- .equiv FLAG_0x3CC, 0x3CC
- .equiv FLAG_0x3CD, 0x3CD
- .equiv FLAG_0x3CE, 0x3CE
- .equiv FLAG_0x3CF, 0x3CF
- .equiv FLAG_0x3D0, 0x3D0
- .equiv FLAG_0x3D1, 0x3D1
- .equiv FLAG_0x3D2, 0x3D2
- .equiv FLAG_0x3D3, 0x3D3
- .equiv FLAG_0x3D4, 0x3D4
- .equiv FLAG_0x3D5, 0x3D5
- .equiv FLAG_0x3D6, 0x3D6
- .equiv FLAG_0x3D7, 0x3D7
- .equiv FLAG_0x3D8, 0x3D8
- .equiv FLAG_0x3D9, 0x3D9
- .equiv FLAG_0x3DA, 0x3DA
- .equiv FLAG_0x3DB, 0x3DB
- .equiv FLAG_0x3DC, 0x3DC
- .equiv FLAG_0x3DD, 0x3DD
- .equiv FLAG_0x3DE, 0x3DE
- .equiv FLAG_0x3DF, 0x3DF
- .equiv FLAG_0x3E0, 0x3E0
- .equiv FLAG_0x3E1, 0x3E1
- .equiv FLAG_0x3E2, 0x3E2
- .equiv FLAG_0x3E3, 0x3E3
- .equiv FLAG_0x3E4, 0x3E4
- .equiv FLAG_0x3E5, 0x3E5
- .equiv FLAG_0x3E6, 0x3E6
- .equiv FLAG_0x3E7, 0x3E7
- .equiv FLAG_0x3E8, 0x3E8
- .equiv FLAG_0x3E9, 0x3E9
- .equiv FLAG_0x3EA, 0x3EA
- .equiv FLAG_0x3EB, 0x3EB
- .equiv FLAG_0x3EC, 0x3EC
- .equiv FLAG_0x3ED, 0x3ED
- .equiv FLAG_0x3EE, 0x3EE
- .equiv FLAG_0x3EF, 0x3EF
- .equiv FLAG_0x3F0, 0x3F0
- .equiv FLAG_0x3F1, 0x3F1
- .equiv FLAG_0x3F2, 0x3F2
- .equiv FLAG_0x3F3, 0x3F3
- .equiv FLAG_0x3F4, 0x3F4
- .equiv FLAG_0x3F5, 0x3F5
- .equiv FLAG_0x3F6, 0x3F6
- .equiv FLAG_0x3F7, 0x3F7
- .equiv FLAG_0x3F8, 0x3F8
- .equiv FLAG_0x3F9, 0x3F9
- .equiv FLAG_0x3FA, 0x3FA
- .equiv FLAG_0x3FB, 0x3FB
- .equiv FLAG_0x3FC, 0x3FC
- .equiv FLAG_0x3FD, 0x3FD
- .equiv FLAG_0x3FE, 0x3FE
- .equiv FLAG_0x3FF, 0x3FF
- .equiv FLAG_0x400, 0x400
- .equiv FLAG_0x401, 0x401
- .equiv FLAG_0x402, 0x402
- .equiv FLAG_0x403, 0x403
- .equiv FLAG_0x404, 0x404
- .equiv FLAG_0x405, 0x405
- .equiv FLAG_0x406, 0x406
- .equiv FLAG_0x407, 0x407
- .equiv FLAG_0x408, 0x408
- .equiv FLAG_0x409, 0x409
- .equiv FLAG_0x40A, 0x40A
- .equiv FLAG_0x40B, 0x40B
- .equiv FLAG_0x40C, 0x40C
- .equiv FLAG_0x40D, 0x40D
- .equiv FLAG_0x40E, 0x40E
- .equiv FLAG_0x40F, 0x40F
- .equiv FLAG_0x410, 0x410
- .equiv FLAG_0x411, 0x411
- .equiv FLAG_0x412, 0x412
- .equiv FLAG_0x413, 0x413
- .equiv FLAG_0x414, 0x414
- .equiv FLAG_0x415, 0x415
- .equiv FLAG_0x416, 0x416
- .equiv FLAG_0x417, 0x417
- .equiv FLAG_0x418, 0x418
- .equiv FLAG_0x419, 0x419
- .equiv FLAG_0x41A, 0x41A
- .equiv FLAG_0x41B, 0x41B
- .equiv FLAG_0x41C, 0x41C
- .equiv FLAG_0x41D, 0x41D
- .equiv FLAG_0x41E, 0x41E
- .equiv FLAG_0x41F, 0x41F
- .equiv FLAG_0x420, 0x420
- .equiv FLAG_0x421, 0x421
- .equiv FLAG_0x422, 0x422
- .equiv FLAG_0x423, 0x423
- .equiv FLAG_0x424, 0x424
- .equiv FLAG_0x425, 0x425
- .equiv FLAG_0x426, 0x426
- .equiv FLAG_0x427, 0x427
- .equiv FLAG_0x428, 0x428
- .equiv FLAG_0x429, 0x429
- .equiv FLAG_0x42A, 0x42A
- .equiv FLAG_0x42B, 0x42B
- .equiv FLAG_0x42C, 0x42C
- .equiv FLAG_0x42D, 0x42D
- .equiv FLAG_0x42E, 0x42E
- .equiv FLAG_0x42F, 0x42F
- .equiv FLAG_0x430, 0x430
- .equiv FLAG_0x431, 0x431
- .equiv FLAG_0x432, 0x432
- .equiv FLAG_0x433, 0x433
- .equiv FLAG_0x434, 0x434
- .equiv FLAG_0x435, 0x435
- .equiv FLAG_0x436, 0x436
- .equiv FLAG_0x437, 0x437
- .equiv FLAG_0x438, 0x438
- .equiv FLAG_0x439, 0x439
- .equiv FLAG_0x43A, 0x43A
- .equiv FLAG_0x43B, 0x43B
- .equiv FLAG_0x43C, 0x43C
- .equiv FLAG_0x43D, 0x43D
- .equiv FLAG_0x43E, 0x43E
- .equiv FLAG_0x43F, 0x43F
- .equiv FLAG_0x440, 0x440
- .equiv FLAG_0x441, 0x441
- .equiv FLAG_0x442, 0x442
- .equiv FLAG_0x443, 0x443
- .equiv FLAG_0x444, 0x444
- .equiv FLAG_0x445, 0x445
- .equiv FLAG_0x446, 0x446
- .equiv FLAG_0x447, 0x447
- .equiv FLAG_0x448, 0x448
- .equiv FLAG_0x449, 0x449
- .equiv FLAG_0x44A, 0x44A
- .equiv FLAG_0x44B, 0x44B
- .equiv FLAG_0x44C, 0x44C
- .equiv FLAG_0x44D, 0x44D
- .equiv FLAG_0x44E, 0x44E
- .equiv FLAG_0x44F, 0x44F
- .equiv FLAG_0x450, 0x450
- .equiv FLAG_0x451, 0x451
- .equiv FLAG_0x452, 0x452
- .equiv FLAG_0x453, 0x453
- .equiv FLAG_0x454, 0x454
- .equiv FLAG_0x455, 0x455
- .equiv FLAG_0x456, 0x456
- .equiv FLAG_0x457, 0x457
- .equiv FLAG_0x458, 0x458
- .equiv FLAG_0x459, 0x459
- .equiv FLAG_0x45A, 0x45A
- .equiv FLAG_0x45B, 0x45B
- .equiv FLAG_0x45C, 0x45C
- .equiv FLAG_0x45D, 0x45D
- .equiv FLAG_0x45E, 0x45E
- .equiv FLAG_0x45F, 0x45F
- .equiv FLAG_0x460, 0x460
- .equiv FLAG_0x461, 0x461
- .equiv FLAG_0x462, 0x462
- .equiv FLAG_0x463, 0x463
- .equiv FLAG_0x464, 0x464
- .equiv FLAG_0x465, 0x465
- .equiv FLAG_0x466, 0x466
- .equiv FLAG_0x467, 0x467
- .equiv FLAG_0x468, 0x468
- .equiv FLAG_0x469, 0x469
- .equiv FLAG_0x46A, 0x46A
- .equiv FLAG_0x46B, 0x46B
- .equiv FLAG_0x46C, 0x46C
- .equiv FLAG_0x46D, 0x46D
- .equiv FLAG_0x46E, 0x46E
- .equiv FLAG_0x46F, 0x46F
- .equiv FLAG_0x470, 0x470
- .equiv FLAG_0x471, 0x471
- .equiv FLAG_0x472, 0x472
- .equiv FLAG_0x473, 0x473
- .equiv FLAG_0x474, 0x474
- .equiv FLAG_0x475, 0x475
- .equiv FLAG_0x476, 0x476
- .equiv FLAG_0x477, 0x477
- .equiv FLAG_0x478, 0x478
- .equiv FLAG_0x479, 0x479
- .equiv FLAG_0x47A, 0x47A
- .equiv FLAG_0x47B, 0x47B
- .equiv FLAG_0x47C, 0x47C
- .equiv FLAG_0x47D, 0x47D
- .equiv FLAG_0x47E, 0x47E
- .equiv FLAG_0x47F, 0x47F
- .equiv FLAG_0x480, 0x480
- .equiv FLAG_0x481, 0x481
- .equiv FLAG_0x482, 0x482
- .equiv FLAG_0x483, 0x483
- .equiv FLAG_0x484, 0x484
- .equiv FLAG_0x485, 0x485
- .equiv FLAG_0x486, 0x486
- .equiv FLAG_0x487, 0x487
- .equiv FLAG_0x488, 0x488
- .equiv FLAG_0x489, 0x489
- .equiv FLAG_0x48A, 0x48A
- .equiv FLAG_0x48B, 0x48B
- .equiv FLAG_0x48C, 0x48C
- .equiv FLAG_0x48D, 0x48D
- .equiv FLAG_0x48E, 0x48E
- .equiv FLAG_0x48F, 0x48F
- .equiv FLAG_0x490, 0x490
- .equiv FLAG_0x491, 0x491
- .equiv FLAG_0x492, 0x492
- .equiv FLAG_0x493, 0x493
- .equiv FLAG_0x494, 0x494
- .equiv FLAG_0x495, 0x495
- .equiv FLAG_0x496, 0x496
- .equiv FLAG_0x497, 0x497
- .equiv FLAG_0x498, 0x498
- .equiv FLAG_0x499, 0x499
- .equiv FLAG_0x49A, 0x49A
- .equiv FLAG_0x49B, 0x49B
- .equiv FLAG_0x49C, 0x49C
- .equiv FLAG_0x49D, 0x49D
- .equiv FLAG_0x49E, 0x49E
- .equiv FLAG_0x49F, 0x49F
- .equiv FLAG_0x4A0, 0x4A0
- .equiv FLAG_0x4A1, 0x4A1
- .equiv FLAG_0x4A2, 0x4A2
- .equiv FLAG_0x4A3, 0x4A3
- .equiv FLAG_0x4A4, 0x4A4
- .equiv FLAG_0x4A5, 0x4A5
- .equiv FLAG_0x4A6, 0x4A6
- .equiv FLAG_0x4A7, 0x4A7
- .equiv FLAG_0x4A8, 0x4A8
- .equiv FLAG_0x4A9, 0x4A9
- .equiv FLAG_0x4AA, 0x4AA
- .equiv FLAG_0x4AB, 0x4AB
- .equiv FLAG_0x4AC, 0x4AC
- .equiv FLAG_0x4AD, 0x4AD
- .equiv FLAG_0x4AE, 0x4AE
- .equiv FLAG_0x4AF, 0x4AF
- .equiv FLAG_0x4B0, 0x4B0
- .equiv FLAG_0x4B1, 0x4B1
- .equiv FLAG_0x4B2, 0x4B2
- .equiv FLAG_0x4B3, 0x4B3
- .equiv FLAG_0x4B4, 0x4B4
- .equiv FLAG_0x4B5, 0x4B5
- .equiv FLAG_0x4B6, 0x4B6
- .equiv FLAG_0x4B7, 0x4B7
- .equiv FLAG_0x4B8, 0x4B8
- .equiv FLAG_0x4B9, 0x4B9
- .equiv FLAG_0x4BA, 0x4BA
- .equiv FLAG_0x4BB, 0x4BB
- .equiv FLAG_0x4BC, 0x4BC
- .equiv FLAG_0x4BD, 0x4BD
- .equiv FLAG_0x4BE, 0x4BE
- .equiv FLAG_0x4BF, 0x4BF
- .equiv FLAG_0x4C0, 0x4C0
- .equiv FLAG_0x4C1, 0x4C1
- .equiv FLAG_0x4C2, 0x4C2
- .equiv FLAG_0x4C3, 0x4C3
- .equiv FLAG_0x4C4, 0x4C4
- .equiv FLAG_0x4C5, 0x4C5
- .equiv FLAG_0x4C6, 0x4C6
- .equiv FLAG_0x4C7, 0x4C7
- .equiv FLAG_0x4C8, 0x4C8
- .equiv FLAG_0x4C9, 0x4C9
- .equiv FLAG_0x4CA, 0x4CA
- .equiv FLAG_0x4CB, 0x4CB
- .equiv FLAG_0x4CC, 0x4CC
- .equiv FLAG_0x4CD, 0x4CD
- .equiv FLAG_0x4CE, 0x4CE
- .equiv FLAG_0x4CF, 0x4CF
- .equiv FLAG_0x4D0, 0x4D0
- .equiv FLAG_0x4D1, 0x4D1
- .equiv FLAG_0x4D2, 0x4D2
- .equiv FLAG_0x4D3, 0x4D3
- .equiv FLAG_0x4D4, 0x4D4
- .equiv FLAG_0x4D5, 0x4D5
- .equiv FLAG_0x4D6, 0x4D6
- .equiv FLAG_0x4D7, 0x4D7
- .equiv FLAG_0x4D8, 0x4D8
- .equiv FLAG_0x4D9, 0x4D9
- .equiv FLAG_0x4DA, 0x4DA
- .equiv FLAG_0x4DB, 0x4DB
- .equiv FLAG_0x4DC, 0x4DC
- .equiv FLAG_0x4DD, 0x4DD
- .equiv FLAG_0x4DE, 0x4DE
- .equiv FLAG_0x4DF, 0x4DF
- .equiv FLAG_0x4E0, 0x4E0
- .equiv FLAG_0x4E1, 0x4E1
- .equiv FLAG_0x4E2, 0x4E2
- .equiv FLAG_0x4E3, 0x4E3
- .equiv FLAG_0x4E4, 0x4E4
- .equiv FLAG_0x4E5, 0x4E5
- .equiv FLAG_0x4E6, 0x4E6
- .equiv FLAG_0x4E7, 0x4E7
- .equiv FLAG_0x4E8, 0x4E8
- .equiv FLAG_0x4E9, 0x4E9
- .equiv FLAG_0x4EA, 0x4EA
- .equiv FLAG_0x4EB, 0x4EB
- .equiv FLAG_0x4EC, 0x4EC
- .equiv FLAG_0x4ED, 0x4ED
- .equiv FLAG_0x4EE, 0x4EE
- .equiv FLAG_0x4EF, 0x4EF
- .equiv FLAG_0x4F0, 0x4F0
- .equiv FLAG_0x4F1, 0x4F1
- .equiv FLAG_0x4F2, 0x4F2
- .equiv FLAG_0x4F3, 0x4F3
- .equiv FLAG_0x4F4, 0x4F4
- .equiv FLAG_0x4F5, 0x4F5
- .equiv FLAG_0x4F6, 0x4F6
- .equiv FLAG_0x4F7, 0x4F7
- .equiv FLAG_0x4F8, 0x4F8
- .equiv FLAG_0x4F9, 0x4F9
- .equiv FLAG_0x4FA, 0x4FA
- .equiv FLAG_0x4FB, 0x4FB
- .equiv FLAG_0x4FC, 0x4FC
- .equiv FLAG_0x4FD, 0x4FD
- .equiv FLAG_0x4FE, 0x4FE
- .equiv FLAG_0x4FF, 0x4FF
- .equiv FLAG_TRAINER_FLAG_START, 0x500
-
- .equiv TRAINERS_FLAG_NO, 0x356
- .equiv CODE_FLAGS, (FLAG_TRAINER_FLAG_START + TRAINERS_FLAG_NO + 0xA) @ 0x860
-
-@ SYSTEM FLAGS
-
- .equiv FLAG_SYS_POKEMON_GET, CODE_FLAGS + 0x0
- .equiv FLAG_SYS_POKEDEX_GET, CODE_FLAGS + 0x1
- .equiv FLAG_SYS_POKENAV_GET, CODE_FLAGS + 0x2
- .equiv FLAG_0x863, CODE_FLAGS + 0x3
- .equiv FLAG_SYS_GAME_CLEAR, CODE_FLAGS + 0x4
- .equiv FLAG_SYS_CHAT_USED, CODE_FLAGS + 0x5
- .equiv FLAG_SYS_HIPSTER_MEET, CODE_FLAGS + 0x6
-
-@ badges
- .equiv FLAG_BADGE01_GET, CODE_FLAGS + 0x7
- .equiv FLAG_BADGE02_GET, CODE_FLAGS + 0x8
- .equiv FLAG_BADGE03_GET, CODE_FLAGS + 0x9
- .equiv FLAG_BADGE04_GET, CODE_FLAGS + 0xA
- .equiv FLAG_BADGE05_GET, CODE_FLAGS + 0xB
- .equiv FLAG_BADGE06_GET, CODE_FLAGS + 0xC
- .equiv FLAG_BADGE07_GET, CODE_FLAGS + 0xD
- .equiv FLAG_BADGE08_GET, CODE_FLAGS + 0xE
-
-@ cities and towns
- .equiv FLAG_VISITED_LITTLEROOT_TOWN, CODE_FLAGS + 0xF
- .equiv FLAG_VISITED_OLDALE_TOWN, CODE_FLAGS + 0x10
- .equiv FLAG_VISITED_DEWFORD_TOWN, CODE_FLAGS + 0x11
- .equiv FLAG_VISITED_LAVARIDGE_TOWN, CODE_FLAGS + 0x12
- .equiv FLAG_VISITED_FALLARBOR_TOWN, CODE_FLAGS + 0x13
- .equiv FLAG_VISITED_VERDANTURF_TOWN, CODE_FLAGS + 0x14
- .equiv FLAG_VISITED_PACIFIDLOG_TOWN, CODE_FLAGS + 0x15
- .equiv FLAG_VISITED_PETALBURG_CITY, CODE_FLAGS + 0x16
- .equiv FLAG_VISITED_SLATEPORT_CITY, CODE_FLAGS + 0x17
- .equiv FLAG_VISITED_MAUVILLE_CITY, CODE_FLAGS + 0x18
- .equiv FLAG_VISITED_RUSTBORO_CITY, CODE_FLAGS + 0x19
- .equiv FLAG_VISITED_FORTREE_CITY, CODE_FLAGS + 0x1A
- .equiv FLAG_VISITED_LILYCOVE_CITY, CODE_FLAGS + 0x1B
- .equiv FLAG_VISITED_MOSSDEEP_CITY, CODE_FLAGS + 0x1C
- .equiv FLAG_VISITED_SOOTOPOLIS_CITY, CODE_FLAGS + 0x1D
- .equiv FLAG_VISITED_EVER_GRANDE_CITY, CODE_FLAGS + 0x1E
-
- .equiv FLAG_0x87F, CODE_FLAGS + 0x1F
- .equiv FLAG_0x880, CODE_FLAGS + 0x20
- .equiv FLAG_0x881, CODE_FLAGS + 0x21
- .equiv FLAG_0x882, CODE_FLAGS + 0x22
- .equiv FLAG_0x883, CODE_FLAGS + 0x23
- .equiv FLAG_0x884, CODE_FLAGS + 0x24
- .equiv FLAG_0x885, CODE_FLAGS + 0x25
- .equiv FLAG_0x886, CODE_FLAGS + 0x26
- .equiv FLAG_0x887, CODE_FLAGS + 0x27
-
- .equiv FLAG_SYS_USE_FLASH, CODE_FLAGS + 0x28
- .equiv FLAG_SYS_USE_STRENGTH, CODE_FLAGS + 0x29
- .equiv FLAG_SYS_WEATHER_CTRL, CODE_FLAGS + 0x2A
- .equiv FLAG_SYS_CYCLING_ROAD, CODE_FLAGS + 0x2B
- .equiv FLAG_SYS_SAFARI_MODE, CODE_FLAGS + 0x2C
- .equiv FLAG_SYS_CRUISE_MODE, CODE_FLAGS + 0x2D
-
- .equiv FLAG_0x88E, CODE_FLAGS + 0x2E
- .equiv FLAG_0x88F, CODE_FLAGS + 0x2F
-
- .equiv FLAG_SYS_TV_HOME, CODE_FLAGS + 0x30
- .equiv FLAG_SYS_TV_WATCH, CODE_FLAGS + 0x31
- .equiv FLAG_SYS_TV_START, CODE_FLAGS + 0x32
- .equiv FLAG_SYS_POPWORD_INPUT, CODE_FLAGS + 0x33
- .equiv FLAG_SYS_MIX_RECORD, CODE_FLAGS + 0x34
- .equiv FLAG_SYS_CLOCK_SET, CODE_FLAGS + 0x35
- .equiv FLAG_SYS_NATIONAL_DEX, CODE_FLAGS + 0x36
- .equiv FLAG_SYS_CAVE_SHIP, CODE_FLAGS + 0x37
- .equiv FLAG_SYS_CAVE_WONDER, CODE_FLAGS + 0x38
- .equiv FLAG_SYS_CAVE_BATTLE, CODE_FLAGS + 0x39
- .equiv FLAG_SYS_SHOAL_TIDE, CODE_FLAGS + 0x3A
- .equiv FLAG_SYS_RIBBON_GET, CODE_FLAGS + 0x3B
-
- .equiv FLAG_0x89C, CODE_FLAGS + 0x3C
- .equiv FLAG_0x89D, CODE_FLAGS + 0x3D
- .equiv FLAG_0x89E, CODE_FLAGS + 0x3E
- .equiv FLAG_0x89F, CODE_FLAGS + 0x3F
- .equiv FLAG_0x8A0, CODE_FLAGS + 0x40
- .equiv FLAG_0x8A1, CODE_FLAGS + 0x41
- .equiv FLAG_0x8A2, CODE_FLAGS + 0x42
- .equiv FLAG_0x8A3, CODE_FLAGS + 0x43
- .equiv FLAG_0x8A4, CODE_FLAGS + 0x44
- .equiv FLAG_0x8A5, CODE_FLAGS + 0x45
- .equiv FLAG_0x8A6, CODE_FLAGS + 0x46
- .equiv FLAG_0x8A7, CODE_FLAGS + 0x47
- .equiv FLAG_UNLOCK_BATTLE_FRONTIER, CODE_FLAGS + 0x48
- .equiv FLAG_UNLOCK_SOUTHERN_ISLAND, CODE_FLAGS + 0x49
- .equiv FLAG_0x8AA, CODE_FLAGS + 0x4A
-
- .equiv FLAG_SYS_PC_LANETTE, CODE_FLAGS + 0x4B
- .equiv FLAG_SYS_MYSTERY_EVENT_ENABLE, CODE_FLAGS + 0x4C
- .equiv FLAG_SYS_ENC_UP_ITEM, CODE_FLAGS + 0x4D
- .equiv FLAG_SYS_ENC_DOWN_ITEM, CODE_FLAGS + 0x4E
-
- .equiv FLAG_SYS_BRAILLE_DIG, CODE_FLAGS + 0x4F
- .equiv FLAG_SYS_BRAILLE_STRENGTH, CODE_FLAGS + 0x50
- .equiv FLAG_SYS_BRAILLE_WAIT, CODE_FLAGS + 0x51
- .equiv FLAG_SYS_BRAILLE_FLY, CODE_FLAGS + 0x52
-
- .equiv FLAG_SYS_HAS_EON_TICKET, CODE_FLAGS + 0x53
-
- .equiv FLAG_SYS_POKEMON_LEAGUE_FLY, CODE_FLAGS + 0x54
-
- .equiv FLAG_0x8B5, CODE_FLAGS + 0x55
- .equiv FLAG_0x8B6, CODE_FLAGS + 0x56
- .equiv FLAG_0x8B7, CODE_FLAGS + 0x57
- .equiv FLAG_0x8B8, CODE_FLAGS + 0x58
- .equiv FLAG_0x8B9, CODE_FLAGS + 0x59
- .equiv FLAG_0x8BA, CODE_FLAGS + 0x5A
- .equiv FLAG_0x8BB, CODE_FLAGS + 0x5B
- .equiv FLAG_0x8BC, CODE_FLAGS + 0x5C
-
- .equiv FLAG_SYS_TV_LATI, CODE_FLAGS + 0x5D
-
- .equiv FLAG_0x8BE, CODE_FLAGS + 0x5E
-
- .equiv FLAG_SYS_SHOAL_ITEM, CODE_FLAGS + 0x5F
- .equiv FLAG_SYS_B_DASH, CODE_FLAGS + 0x60 @ got Running Shoes
- .equiv FLAG_SYS_CTRL_OBJ_DELETE, CODE_FLAGS + 0x61
- .equiv FLAG_SYS_RESET_RTC_ENABLE, CODE_FLAGS + 0x62
-
- .equiv FLAG_0x8C3, CODE_FLAGS + 0x63
-
- .equiv FLAG_SYS_TOWER_SILVER, CODE_FLAGS + 0x64
- .equiv FLAG_SYS_TOWER_GOLD, CODE_FLAGS + 0x65
- .equiv FLAG_SYS_DOME_SILVER, CODE_FLAGS + 0x66
- .equiv FLAG_SYS_DOME_GOLD, CODE_FLAGS + 0x67
- .equiv FLAG_SYS_PALACE_SILVER, CODE_FLAGS + 0x68
- .equiv FLAG_SYS_PALACE_GOLD, CODE_FLAGS + 0x69
- .equiv FLAG_SYS_ARENA_SILVER, CODE_FLAGS + 0x6A
- .equiv FLAG_SYS_ARENA_GOLD, CODE_FLAGS + 0x6B
- .equiv FLAG_SYS_FACTORY_SILVER, CODE_FLAGS + 0x6C
- .equiv FLAG_SYS_FACTORY_GOLD, CODE_FLAGS + 0x6D
- .equiv FLAG_SYS_PIKE_SILVER, CODE_FLAGS + 0x6E
- .equiv FLAG_SYS_PIKE_GOLD, CODE_FLAGS + 0x6F
- .equiv FLAG_SYS_PYRAMID_SILVER, CODE_FLAGS + 0x70
- .equiv FLAG_SYS_PYRAMID_GOLD, CODE_FLAGS + 0x71
- .equiv FLAG_SYS_FRONTIER_PASS, CODE_FLAGS + 0x72
-
- .equiv FLAG_0x8D3, CODE_FLAGS + 0x73
- .equiv FLAG_0x8D4, CODE_FLAGS + 0x74
- .equiv FLAG_0x8D5, CODE_FLAGS + 0x75
- .equiv FLAG_0x8D6, CODE_FLAGS + 0x76
-
- .equiv FLAG_SYS_STORAGE_UNKNOWN_FLAG, CODE_FLAGS + 0x77
-
- .equiv FLAG_0x8D8, CODE_FLAGS + 0x78
- .equiv FLAG_0x8D9, CODE_FLAGS + 0x79
- .equiv FLAG_0x8DA, CODE_FLAGS + 0x7A
-
- .equiv FLAG_SYS_MYSTERY_GIFT_ENABLE, CODE_FLAGS + 0x7B
-
- .equiv FLAG_0x8DC, CODE_FLAGS + 0x7C
- .equiv FLAG_0x8DD, CODE_FLAGS + 0x7D
- .equiv FLAG_0x8DE, CODE_FLAGS + 0x7E
- .equiv FLAG_0x8DF, CODE_FLAGS + 0x7F
- .equiv FLAG_0x8E0, CODE_FLAGS + 0x80
- .equiv FLAG_0x8E1, CODE_FLAGS + 0x81
- .equiv FLAG_0x8E2, CODE_FLAGS + 0x82
- .equiv FLAG_0x8E3, CODE_FLAGS + 0x83
- .equiv FLAG_0x8E4, CODE_FLAGS + 0x84
- .equiv FLAG_0x8E5, CODE_FLAGS + 0x85
- .equiv FLAG_0x8E6, CODE_FLAGS + 0x86
- .equiv FLAG_0x8E7, CODE_FLAGS + 0x87
- .equiv FLAG_0x8E8, CODE_FLAGS + 0x88
- .equiv FLAG_0x8E9, CODE_FLAGS + 0x89
- .equiv FLAG_0x8EA, CODE_FLAGS + 0x8A
- .equiv FLAG_0x8EB, CODE_FLAGS + 0x8B
- .equiv FLAG_0x8EC, CODE_FLAGS + 0x8C
- .equiv FLAG_0x8ED, CODE_FLAGS + 0x8D
- .equiv FLAG_0x8EE, CODE_FLAGS + 0x8E
- .equiv FLAG_0x8EF, CODE_FLAGS + 0x8F
- .equiv FLAG_0x8F0, CODE_FLAGS + 0x90
- .equiv FLAG_0x8F1, CODE_FLAGS + 0x91
- .equiv FLAG_0x8F2, CODE_FLAGS + 0x92
- .equiv FLAG_0x8F3, CODE_FLAGS + 0x93
- .equiv FLAG_0x8F4, CODE_FLAGS + 0x94
- .equiv FLAG_0x8F5, CODE_FLAGS + 0x95
- .equiv FLAG_0x8F6, CODE_FLAGS + 0x96
- .equiv FLAG_0x8F7, CODE_FLAGS + 0x97
- .equiv FLAG_0x8F8, CODE_FLAGS + 0x98
- .equiv FLAG_0x8F9, CODE_FLAGS + 0x99
- .equiv FLAG_0x8FA, CODE_FLAGS + 0x9A
- .equiv FLAG_0x8FB, CODE_FLAGS + 0x9B
- .equiv FLAG_0x8FC, CODE_FLAGS + 0x9C
- .equiv FLAG_0x8FD, CODE_FLAGS + 0x9D
- .equiv FLAG_0x8FE, CODE_FLAGS + 0x9E
- .equiv FLAG_0x8FF, CODE_FLAGS + 0x9F
- .equiv FLAG_0x900, CODE_FLAGS + 0xA0
- .equiv FLAG_0x901, CODE_FLAGS + 0xA1
- .equiv FLAG_0x902, CODE_FLAGS + 0xA2
- .equiv FLAG_0x903, CODE_FLAGS + 0xA3
- .equiv FLAG_0x904, CODE_FLAGS + 0xA4
- .equiv FLAG_0x905, CODE_FLAGS + 0xA5
- .equiv FLAG_0x906, CODE_FLAGS + 0xA6
- .equiv FLAG_0x907, CODE_FLAGS + 0xA7
- .equiv FLAG_0x908, CODE_FLAGS + 0xA8
- .equiv FLAG_0x909, CODE_FLAGS + 0xA9
- .equiv FLAG_0x90A, CODE_FLAGS + 0xAA
- .equiv FLAG_0x90B, CODE_FLAGS + 0xAB
- .equiv FLAG_0x90C, CODE_FLAGS + 0xAC
- .equiv FLAG_0x90D, CODE_FLAGS + 0xAD
- .equiv FLAG_0x90E, CODE_FLAGS + 0xAE
- .equiv FLAG_0x90F, CODE_FLAGS + 0xAF
- .equiv FLAG_0x910, CODE_FLAGS + 0xB0
- .equiv FLAG_0x911, CODE_FLAGS + 0xB1
- .equiv FLAG_0x912, CODE_FLAGS + 0xB2
- .equiv FLAG_0x913, CODE_FLAGS + 0xB3
- .equiv FLAG_0x914, CODE_FLAGS + 0xB4
- .equiv FLAG_0x915, CODE_FLAGS + 0xB5
- .equiv FLAG_0x916, CODE_FLAGS + 0xB6
- .equiv FLAG_0x917, CODE_FLAGS + 0xB7
- .equiv FLAG_0x918, CODE_FLAGS + 0xB8
- .equiv FLAG_0x919, CODE_FLAGS + 0xB9
- .equiv FLAG_0x91A, CODE_FLAGS + 0xBA
- .equiv FLAG_0x91B, CODE_FLAGS + 0xBB
- .equiv FLAG_0x91C, CODE_FLAGS + 0xBC
- .equiv FLAG_0x91D, CODE_FLAGS + 0xBD
- .equiv FLAG_0x91E, CODE_FLAGS + 0xBE
- .equiv FLAG_0x91F, CODE_FLAGS + 0xBF
- .equiv FLAG_0x920, CODE_FLAGS + 0xC0
- .equiv FLAG_0x921, CODE_FLAGS + 0xC1
- .equiv FLAG_0x922, CODE_FLAGS + 0xC2
- .equiv FLAG_0x923, CODE_FLAGS + 0xC3
- .equiv FLAG_0x924, CODE_FLAGS + 0xC4
- .equiv FLAG_0x925, CODE_FLAGS + 0xC5
- .equiv FLAG_0x926, CODE_FLAGS + 0xC6
- .equiv FLAG_0x927, CODE_FLAGS + 0xC7
- .equiv FLAG_0x928, CODE_FLAGS + 0xC8
- .equiv FLAG_0x929, CODE_FLAGS + 0xC9
- .equiv FLAG_0x92A, CODE_FLAGS + 0xCA
- .equiv FLAG_0x92B, CODE_FLAGS + 0xCB
- .equiv FLAG_0x92C, CODE_FLAGS + 0xCC
- .equiv FLAG_0x92D, CODE_FLAGS + 0xCD
- .equiv FLAG_0x92E, CODE_FLAGS + 0xCE
- .equiv FLAG_0x92F, CODE_FLAGS + 0xCF
- .equiv FLAG_0x930, CODE_FLAGS + 0xD0
- .equiv FLAG_0x931, CODE_FLAGS + 0xD1
- .equiv FLAG_0x932, CODE_FLAGS + 0xD2
- .equiv FLAG_0x933, CODE_FLAGS + 0xD3
- .equiv FLAG_0x934, CODE_FLAGS + 0xD4
- .equiv FLAG_0x935, CODE_FLAGS + 0xD5
- .equiv FLAG_0x936, CODE_FLAGS + 0xD6
- .equiv FLAG_0x937, CODE_FLAGS + 0xD7
- .equiv FLAG_0x938, CODE_FLAGS + 0xD8
- .equiv FLAG_0x939, CODE_FLAGS + 0xD9
- .equiv FLAG_0x93A, CODE_FLAGS + 0xDA
- .equiv FLAG_0x93B, CODE_FLAGS + 0xDB
- .equiv FLAG_0x93C, CODE_FLAGS + 0xDC
- .equiv FLAG_0x93D, CODE_FLAGS + 0xDD
- .equiv FLAG_0x93E, CODE_FLAGS + 0xDE
- .equiv FLAG_0x93F, CODE_FLAGS + 0xDF
- .equiv FLAG_0x940, CODE_FLAGS + 0xE0
- .equiv FLAG_0x941, CODE_FLAGS + 0xE1
- .equiv FLAG_0x942, CODE_FLAGS + 0xE2
- .equiv FLAG_0x943, CODE_FLAGS + 0xE3
- .equiv FLAG_0x944, CODE_FLAGS + 0xE4
- .equiv FLAG_0x945, CODE_FLAGS + 0xE5
- .equiv FLAG_0x946, CODE_FLAGS + 0xE6
- .equiv FLAG_0x947, CODE_FLAGS + 0xE7
- .equiv FLAG_0x948, CODE_FLAGS + 0xE8
- .equiv FLAG_0x949, CODE_FLAGS + 0xE9
- .equiv FLAG_0x94A, CODE_FLAGS + 0xEA
- .equiv FLAG_0x94B, CODE_FLAGS + 0xEB
- .equiv FLAG_0x94C, CODE_FLAGS + 0xEC
- .equiv FLAG_0x94D, CODE_FLAGS + 0xED
- .equiv FLAG_0x94E, CODE_FLAGS + 0xEE
- .equiv FLAG_0x94F, CODE_FLAGS + 0xEF
- .equiv FLAG_0x950, CODE_FLAGS + 0xF0
- .equiv FLAG_0x951, CODE_FLAGS + 0xF1
- .equiv FLAG_0x952, CODE_FLAGS + 0xF2
- .equiv FLAG_0x953, CODE_FLAGS + 0xF3
- .equiv FLAG_0x954, CODE_FLAGS + 0xF4
- .equiv FLAG_0x955, CODE_FLAGS + 0xF5
- .equiv FLAG_0x956, CODE_FLAGS + 0xF6
- .equiv FLAG_0x957, CODE_FLAGS + 0xF7
- .equiv FLAG_0x958, CODE_FLAGS + 0xF8
- .equiv FLAG_0x959, CODE_FLAGS + 0xF9
- .equiv FLAG_0x95A, CODE_FLAGS + 0xFA
- .equiv FLAG_0x95B, CODE_FLAGS + 0xFB
- .equiv FLAG_0x95C, CODE_FLAGS + 0xFC
- .equiv FLAG_0x95D, CODE_FLAGS + 0xFD
- .equiv FLAG_0x95E, CODE_FLAGS + 0xFE
- .equiv FLAG_0x95F, CODE_FLAGS + 0xFF
-
-@ SPECIAL FLAGS (unknown purpose)
-
- .equiv FLAG_SPECIAL_FLAG_0x4000, 0x4000
- .equiv FLAG_SPECIAL_FLAG_0x4001, 0x4001
- .equiv FLAG_SPECIAL_FLAG_0x4002, 0x4002
- .equiv FLAG_SPECIAL_FLAG_0x4003, 0x4003
- .equiv FLAG_SPECIAL_FLAG_0x4004, 0x4004
diff --git a/constants/item_constants.inc b/constants/item_constants.inc
deleted file mode 100644
index 934ebd798..000000000
--- a/constants/item_constants.inc
+++ /dev/null
@@ -1,310 +0,0 @@
- .set ITEM_NONE, 0x000
- .set ITEM_MASTER_BALL, 0x001
- .set ITEM_ULTRA_BALL, 0x002
- .set ITEM_GREAT_BALL, 0x003
- .set ITEM_POKE_BALL, 0x004
- .set ITEM_SAFARI_BALL, 0x005
- .set ITEM_NET_BALL, 0x006
- .set ITEM_DIVE_BALL, 0x007
- .set ITEM_NEST_BALL, 0x008
- .set ITEM_REPEAT_BALL, 0x009
- .set ITEM_TIMER_BALL, 0x00a
- .set ITEM_LUXURY_BALL, 0x00b
- .set ITEM_PREMIER_BALL, 0x00c
- .set ITEM_POTION, 0x00d
- .set ITEM_ANTIDOTE, 0x00e
- .set ITEM_BURN_HEAL, 0x00f
- .set ITEM_ICE_HEAL, 0x010
- .set ITEM_AWAKENING, 0x011
- .set ITEM_PARALYZE_HEAL, 0x012
- .set ITEM_FULL_RESTORE, 0x013
- .set ITEM_MAX_POTION, 0x014
- .set ITEM_HYPER_POTION, 0x015
- .set ITEM_SUPER_POTION, 0x016
- .set ITEM_FULL_HEAL, 0x017
- .set ITEM_REVIVE, 0x018
- .set ITEM_MAX_REVIVE, 0x019
- .set ITEM_FRESH_WATER, 0x01a
- .set ITEM_SODA_POP, 0x01b
- .set ITEM_LEMONADE, 0x01c
- .set ITEM_MOOMOO_MILK, 0x01d
- .set ITEM_ENERGY_POWDER, 0x01e
- .set ITEM_ENERGY_ROOT, 0x01f
- .set ITEM_HEAL_POWDER, 0x020
- .set ITEM_REVIVAL_HERB, 0x021
- .set ITEM_ETHER, 0x022
- .set ITEM_MAX_ETHER, 0x023
- .set ITEM_ELIXIR, 0x024
- .set ITEM_MAX_ELIXIR, 0x025
- .set ITEM_LAVA_COOKIE, 0x026
- .set ITEM_BLUE_FLUTE, 0x027
- .set ITEM_YELLOW_FLUTE, 0x028
- .set ITEM_RED_FLUTE, 0x029
- .set ITEM_BLACK_FLUTE, 0x02a
- .set ITEM_WHITE_FLUTE, 0x02b
- .set ITEM_BERRY_JUICE, 0x02c
- .set ITEM_SACRED_ASH, 0x02d
- .set ITEM_SHOAL_SALT, 0x02e
- .set ITEM_SHOAL_SHELL, 0x02f
- .set ITEM_RED_SHARD, 0x030
- .set ITEM_BLUE_SHARD, 0x031
- .set ITEM_YELLOW_SHARD, 0x032
- .set ITEM_GREEN_SHARD, 0x033
- .set ITEM_HP_UP, 0x03f
- .set ITEM_PROTEIN, 0x040
- .set ITEM_IRON, 0x041
- .set ITEM_CARBOS, 0x042
- .set ITEM_CALCIUM, 0x043
- .set ITEM_RARE_CANDY, 0x044
- .set ITEM_PP_UP, 0x045
- .set ITEM_ZINC, 0x046
- .set ITEM_PP_MAX, 0x047
- .set ITEM_GUARD_SPEC, 0x049
- .set ITEM_DIRE_HIT, 0x04a
- .set ITEM_X_ATTACK, 0x04b
- .set ITEM_X_DEFEND, 0x04c
- .set ITEM_X_SPEED, 0x04d
- .set ITEM_X_ACCURACY, 0x04e
- .set ITEM_X_SPECIAL, 0x04f
- .set ITEM_POKE_DOLL, 0x050
- .set ITEM_FLUFFY_TAIL, 0x051
- .set ITEM_SUPER_REPEL, 0x053
- .set ITEM_MAX_REPEL, 0x054
- .set ITEM_ESCAPE_ROPE, 0x055
- .set ITEM_REPEL, 0x056
- .set ITEM_SUN_STONE, 0x05d
- .set ITEM_MOON_STONE, 0x05e
- .set ITEM_FIRE_STONE, 0x05f
- .set ITEM_THUNDER_STONE, 0x060
- .set ITEM_WATER_STONE, 0x061
- .set ITEM_LEAF_STONE, 0x062
- .set ITEM_TINY_MUSHROOM, 0x067
- .set ITEM_BIG_MUSHROOM, 0x068
- .set ITEM_PEARL, 0x06a
- .set ITEM_BIG_PEARL, 0x06b
- .set ITEM_STARDUST, 0x06c
- .set ITEM_STAR_PIECE, 0x06d
- .set ITEM_NUGGET, 0x06e
- .set ITEM_HEART_SCALE, 0x06f
- .set ITEM_ORANGE_MAIL, 0x079
- .set ITEM_HARBOR_MAIL, 0x07a
- .set ITEM_GLITTER_MAIL, 0x07b
- .set ITEM_MECH_MAIL, 0x07c
- .set ITEM_WOOD_MAIL, 0x07d
- .set ITEM_WAVE_MAIL, 0x07e
- .set ITEM_BEAD_MAIL, 0x07f
- .set ITEM_SHADOW_MAIL, 0x080
- .set ITEM_TROPIC_MAIL, 0x081
- .set ITEM_DREAM_MAIL, 0x082
- .set ITEM_FAB_MAIL, 0x083
- .set ITEM_RETRO_MAIL, 0x084
- .set ITEM_CHERI_BERRY, 0x085
- .set ITEM_CHESTO_BERRY, 0x086
- .set ITEM_PECHA_BERRY, 0x087
- .set ITEM_RAWST_BERRY, 0x088
- .set ITEM_ASPEAR_BERRY, 0x089
- .set ITEM_LEPPA_BERRY, 0x08a
- .set ITEM_ORAN_BERRY, 0x08b
- .set ITEM_PERSIM_BERRY, 0x08c
- .set ITEM_LUM_BERRY, 0x08d
- .set ITEM_SITRUS_BERRY, 0x08e
- .set ITEM_FIGY_BERRY, 0x08f
- .set ITEM_WIKI_BERRY, 0x090
- .set ITEM_MAGO_BERRY, 0x091
- .set ITEM_AGUAV_BERRY, 0x092
- .set ITEM_IAPAPA_BERRY, 0x093
- .set ITEM_RAZZ_BERRY, 0x094
- .set ITEM_BLUK_BERRY, 0x095
- .set ITEM_NANAB_BERRY, 0x096
- .set ITEM_WEPEAR_BERRY, 0x097
- .set ITEM_PINAP_BERRY, 0x098
- .set ITEM_POMEG_BERRY, 0x099
- .set ITEM_KELPSY_BERRY, 0x09a
- .set ITEM_QUALOT_BERRY, 0x09b
- .set ITEM_HONDEW_BERRY, 0x09c
- .set ITEM_GREPA_BERRY, 0x09d
- .set ITEM_TAMATO_BERRY, 0x09e
- .set ITEM_CORNN_BERRY, 0x09f
- .set ITEM_MAGOST_BERRY, 0x0a0
- .set ITEM_RABUTA_BERRY, 0x0a1
- .set ITEM_NOMEL_BERRY, 0x0a2
- .set ITEM_SPELON_BERRY, 0x0a3
- .set ITEM_PAMTRE_BERRY, 0x0a4
- .set ITEM_WATMEL_BERRY, 0x0a5
- .set ITEM_DURIN_BERRY, 0x0a6
- .set ITEM_BELUE_BERRY, 0x0a7
- .set ITEM_LIECHI_BERRY, 0x0a8
- .set ITEM_GANLON_BERRY, 0x0a9
- .set ITEM_SALAC_BERRY, 0x0aa
- .set ITEM_PETAYA_BERRY, 0x0ab
- .set ITEM_APICOT_BERRY, 0x0ac
- .set ITEM_LANSAT_BERRY, 0x0ad
- .set ITEM_STARF_BERRY, 0x0ae
- .set ITEM_ENIGMA_BERRY, 0x0af
- .set ITEM_BRIGHT_POWDER, 0x0b3
- .set ITEM_WHITE_HERB, 0x0b4
- .set ITEM_MACHO_BRACE, 0x0b5
- .set ITEM_EXP_SHARE, 0x0b6
- .set ITEM_QUICK_CLAW, 0x0b7
- .set ITEM_SOOTHE_BELL, 0x0b8
- .set ITEM_MENTAL_HERB, 0x0b9
- .set ITEM_CHOICE_BAND, 0x0ba
- .set ITEM_KINGS_ROCK, 0x0bb
- .set ITEM_SILVER_POWDER, 0x0bc
- .set ITEM_AMULET_COIN, 0x0bd
- .set ITEM_CLEANSE_TAG, 0x0be
- .set ITEM_SOUL_DEW, 0x0bf
- .set ITEM_DEEP_SEA_TOOTH, 0x0c0
- .set ITEM_DEEP_SEA_SCALE, 0x0c1
- .set ITEM_SMOKE_BALL, 0x0c2
- .set ITEM_EVERSTONE, 0x0c3
- .set ITEM_FOCUS_BAND, 0x0c4
- .set ITEM_LUCKY_EGG, 0x0c5
- .set ITEM_SCOPE_LENS, 0x0c6
- .set ITEM_METAL_COAT, 0x0c7
- .set ITEM_LEFTOVERS, 0x0c8
- .set ITEM_DRAGON_SCALE, 0x0c9
- .set ITEM_LIGHT_BALL, 0x0ca
- .set ITEM_SOFT_SAND, 0x0cb
- .set ITEM_HARD_STONE, 0x0cc
- .set ITEM_MIRACLE_SEED, 0x0cd
- .set ITEM_BLACK_GLASSES, 0x0ce
- .set ITEM_BLACK_BELT, 0x0cf
- .set ITEM_MAGNET, 0x0d0
- .set ITEM_MYSTIC_WATER, 0x0d1
- .set ITEM_SHARP_BEAK, 0x0d2
- .set ITEM_POISON_BARB, 0x0d3
- .set ITEM_NEVER_MELT_ICE, 0x0d4
- .set ITEM_SPELL_TAG, 0x0d5
- .set ITEM_TWISTED_SPOON, 0x0d6
- .set ITEM_CHARCOAL, 0x0d7
- .set ITEM_DRAGON_FANG, 0x0d8
- .set ITEM_SILK_SCARF, 0x0d9
- .set ITEM_UP_GRADE, 0x0da
- .set ITEM_SHELL_BELL, 0x0db
- .set ITEM_SEA_INCENSE, 0x0dc
- .set ITEM_LAX_INCENSE, 0x0dd
- .set ITEM_LUCKY_PUNCH, 0x0de
- .set ITEM_METAL_POWDER, 0x0df
- .set ITEM_THICK_CLUB, 0x0e0
- .set ITEM_STICK, 0x0e1
- .set ITEM_RED_SCARF, 0x0fe
- .set ITEM_BLUE_SCARF, 0x0ff
- .set ITEM_PINK_SCARF, 0x100
- .set ITEM_GREEN_SCARF, 0x101
- .set ITEM_YELLOW_SCARF, 0x102
- .set ITEM_MACH_BIKE, 0x103
- .set ITEM_COIN_CASE, 0x104
- .set ITEM_ITEMFINDER, 0x105
- .set ITEM_OLD_ROD, 0x106
- .set ITEM_GOOD_ROD, 0x107
- .set ITEM_SUPER_ROD, 0x108
- .set ITEM_SS_TICKET, 0x109
- .set ITEM_CONTEST_PASS, 0x10a
- .set ITEM_WAILMER_PAIL, 0x10c
- .set ITEM_DEVON_GOODS, 0x10d
- .set ITEM_SOOT_SACK, 0x10e
- .set ITEM_BASEMENT_KEY, 0x10f
- .set ITEM_ACRO_BIKE, 0x110
- .set ITEM_POKEBLOCK_CASE, 0x111
- .set ITEM_LETTER, 0x112
- .set ITEM_EON_TICKET, 0x113
- .set ITEM_RED_ORB, 0x114
- .set ITEM_BLUE_ORB, 0x115
- .set ITEM_SCANNER, 0x116
- .set ITEM_GO_GOGGLES, 0x117
- .set ITEM_METEORITE, 0x118
- .set ITEM_ROOM_1_KEY, 0x119
- .set ITEM_ROOM_2_KEY, 0x11a
- .set ITEM_ROOM_4_KEY, 0x11b
- .set ITEM_ROOM_6_KEY, 0x11c
- .set ITEM_STORAGE_KEY, 0x11d
- .set ITEM_ROOT_FOSSIL, 0x11e
- .set ITEM_CLAW_FOSSIL, 0x11f
- .set ITEM_DEVON_SCOPE, 0x120
- .set ITEM_TM01, 0x121
- .set ITEM_TM02, 0x122
- .set ITEM_TM03, 0x123
- .set ITEM_TM04, 0x124
- .set ITEM_TM05, 0x125
- .set ITEM_TM06, 0x126
- .set ITEM_TM07, 0x127
- .set ITEM_TM08, 0x128
- .set ITEM_TM09, 0x129
- .set ITEM_TM10, 0x12a
- .set ITEM_TM11, 0x12b
- .set ITEM_TM12, 0x12c
- .set ITEM_TM13, 0x12d
- .set ITEM_TM14, 0x12e
- .set ITEM_TM15, 0x12f
- .set ITEM_TM16, 0x130
- .set ITEM_TM17, 0x131
- .set ITEM_TM18, 0x132
- .set ITEM_TM19, 0x133
- .set ITEM_TM20, 0x134
- .set ITEM_TM21, 0x135
- .set ITEM_TM22, 0x136
- .set ITEM_TM23, 0x137
- .set ITEM_TM24, 0x138
- .set ITEM_TM25, 0x139
- .set ITEM_TM26, 0x13a
- .set ITEM_TM27, 0x13b
- .set ITEM_TM28, 0x13c
- .set ITEM_TM29, 0x13d
- .set ITEM_TM30, 0x13e
- .set ITEM_TM31, 0x13f
- .set ITEM_TM32, 0x140
- .set ITEM_TM33, 0x141
- .set ITEM_TM34, 0x142
- .set ITEM_TM35, 0x143
- .set ITEM_TM36, 0x144
- .set ITEM_TM37, 0x145
- .set ITEM_TM38, 0x146
- .set ITEM_TM39, 0x147
- .set ITEM_TM40, 0x148
- .set ITEM_TM41, 0x149
- .set ITEM_TM42, 0x14a
- .set ITEM_TM43, 0x14b
- .set ITEM_TM44, 0x14c
- .set ITEM_TM45, 0x14d
- .set ITEM_TM46, 0x14e
- .set ITEM_TM47, 0x14f
- .set ITEM_TM48, 0x150
- .set ITEM_TM49, 0x151
- .set ITEM_TM50, 0x152
- .set ITEM_HM01, 0x153
- .set ITEM_HM02, 0x154
- .set ITEM_HM03, 0x155
- .set ITEM_HM04, 0x156
- .set ITEM_HM05, 0x157
- .set ITEM_HM06, 0x158
- .set ITEM_HM07, 0x159
- .set ITEM_HM08, 0x15a
- .set ITEM_OAKS_PARCEL, 0x15d
- .set ITEM_POKE_FLUTE, 0x15e
- .set ITEM_SECRET_KEY, 0x15f
- .set ITEM_BIKE_VOUCHER, 0x160
- .set ITEM_GOLD_TEETH, 0x161
- .set ITEM_OLD_AMBER, 0x162
- .set ITEM_CARD_KEY, 0x163
- .set ITEM_LIFT_KEY, 0x164
- .set ITEM_HELIX_FOSSIL, 0x165
- .set ITEM_DOME_FOSSIL, 0x166
- .set ITEM_SILPH_SCOPE, 0x167
- .set ITEM_BICYCLE, 0x168
- .set ITEM_TOWN_MAP, 0x169
- .set ITEM_VS_SEEKER, 0x16a
- .set ITEM_FAME_CHECKER, 0x16b
- .set ITEM_TM_CASE, 0x16c
- .set ITEM_BERRY_POUCH, 0x16d
- .set ITEM_TEACHY_TV, 0x16e
- .set ITEM_TRI_PASS, 0x16f
- .set ITEM_RAINBOW_PASS, 0x170
- .set ITEM_TEA, 0x171
- .set ITEM_MYSTIC_TICKET, 0x172
- .set ITEM_AURORA_TICKET, 0x173
- .set ITEM_POWDER_JAR, 0x174
- .set ITEM_RUBY, 0x175
- .set ITEM_SAPPHIRE, 0x176
- .set ITEM_MAGMA_EMBLEM, 0x177
- .set ITEM_OLD_SEA_MAP, 0x178
diff --git a/constants/map_constants.inc b/constants/map_constants.inc
index eabfe6e69..a061d2501 100644
--- a/constants/map_constants.inc
+++ b/constants/map_constants.inc
@@ -1,3 +1,4 @@
+@ TODO: these need to match the names in include/constants/maps.h
.set cur_map_group, -1
new_map_group
diff --git a/constants/map_object_constants.inc b/constants/map_object_constants.inc
deleted file mode 100644
index 50b171d9c..000000000
--- a/constants/map_object_constants.inc
+++ /dev/null
@@ -1,258 +0,0 @@
- .set MAP_OBJ_GFX_BRENDAN_NORMAL, 0
- .set MAP_OBJ_GFX_BRENDAN_MACH_BIKE, 1
- .set MAP_OBJ_GFX_BRENDAN_SURFING, 2
- .set MAP_OBJ_GFX_BRENDAN_FIELD_MOVE, 3
- .set MAP_OBJ_GFX_QUINTY_PLUMP, 4
- .set MAP_OBJ_GFX_LITTLE_BOY_1, 5
- .set MAP_OBJ_GFX_LITTLE_GIRL_1, 6
- .set MAP_OBJ_GFX_BOY_1, 7
- .set MAP_OBJ_GFX_GIRL_1, 8
- .set MAP_OBJ_GFX_BOY_2, 9
- .set MAP_OBJ_GFX_GIRL_2, 10
- .set MAP_OBJ_GFX_LITTLE_BOY_2, 11
- .set MAP_OBJ_GFX_LITTLE_GIRL_2, 12
- .set MAP_OBJ_GFX_BOY_3, 13
- .set MAP_OBJ_GFX_GIRL_3, 14
- .set MAP_OBJ_GFX_BOY_4, 15
- .set MAP_OBJ_GFX_WOMAN_1, 16
- .set MAP_OBJ_GFX_FAT_MAN, 17
- .set MAP_OBJ_GFX_WOMAN_2, 18
- .set MAP_OBJ_GFX_MAN_1, 19
- .set MAP_OBJ_GFX_WOMAN_3, 20
- .set MAP_OBJ_GFX_OLD_MAN_1, 21
- .set MAP_OBJ_GFX_OLD_WOMAN_1, 22
- .set MAP_OBJ_GFX_MAN_2, 23
- .set MAP_OBJ_GFX_WOMAN_4, 24
- .set MAP_OBJ_GFX_MAN_3, 25
- .set MAP_OBJ_GFX_WOMAN_5, 26
- .set MAP_OBJ_GFX_COOK, 27
- .set MAP_OBJ_GFX_WOMAN_6, 28
- .set MAP_OBJ_GFX_OLD_MAN_2, 29
- .set MAP_OBJ_GFX_OLD_WOMAN_2, 30
- .set MAP_OBJ_GFX_CAMPER, 31
- .set MAP_OBJ_GFX_PICNICKER, 32
- .set MAP_OBJ_GFX_MAN_4, 33
- .set MAP_OBJ_GFX_WOMAN_7, 34
- .set MAP_OBJ_GFX_YOUNGSTER, 35
- .set MAP_OBJ_GFX_BUG_CATCHER, 36
- .set MAP_OBJ_GFX_PSYCHIC_M, 37
- .set MAP_OBJ_GFX_SCHOOL_KID_M, 38
- .set MAP_OBJ_GFX_MANIAC, 39
- .set MAP_OBJ_GFX_HEX_MANIAC, 40
- .set MAP_OBJ_GFX_RAYQUAZA_1, 41
- .set MAP_OBJ_GFX_SWIMMER_M, 42
- .set MAP_OBJ_GFX_SWIMMER_F, 43
- .set MAP_OBJ_GFX_BLACK_BELT, 44
- .set MAP_OBJ_GFX_BEAUTY, 45
- .set MAP_OBJ_GFX_SCIENTIST_1, 46
- .set MAP_OBJ_GFX_LASS, 47
- .set MAP_OBJ_GFX_GENTLEMAN, 48
- .set MAP_OBJ_GFX_SAILOR, 49
- .set MAP_OBJ_GFX_FISHERMAN, 50
- .set MAP_OBJ_GFX_RUNNING_TRIATHLETE_M, 51
- .set MAP_OBJ_GFX_RUNNING_TRIATHLETE_F, 52
- .set MAP_OBJ_GFX_TUBER_F, 53
- .set MAP_OBJ_GFX_TUBER_M, 54
- .set MAP_OBJ_GFX_HIKER, 55
- .set MAP_OBJ_GFX_CYCLING_TRIATHLETE_M, 56
- .set MAP_OBJ_GFX_CYCLING_TRIATHLETE_F, 57
- .set MAP_OBJ_GFX_NURSE, 58
- .set MAP_OBJ_GFX_ITEM_BALL, 59
- .set MAP_OBJ_GFX_BERRY_TREE, 60
- .set MAP_OBJ_GFX_BERRY_TREE_EARLY_STAGES, 61
- .set MAP_OBJ_GFX_BERRY_TREE_LATE_STAGES, 62
- .set MAP_OBJ_GFX_BRENDAN_ACRO_BIKE, 63
- .set MAP_OBJ_GFX_PROF_BIRCH, 64
- .set MAP_OBJ_GFX_MAN_5, 65
- .set MAP_OBJ_GFX_MAN_6, 66
- .set MAP_OBJ_GFX_REPORTER_M, 67
- .set MAP_OBJ_GFX_REPORTER_F, 68
- .set MAP_OBJ_GFX_BARD, 69
- .set MAP_OBJ_GFX_ANABEL, 70
- .set MAP_OBJ_GFX_TUCKER, 71
- .set MAP_OBJ_GFX_GRETA, 72
- .set MAP_OBJ_GFX_SPENSER, 73
- .set MAP_OBJ_GFX_NOLAND, 74
- .set MAP_OBJ_GFX_LUCY, 75
- .set MAP_OBJ_GFX_UNUSED_NATU_DOLL, 76
- .set MAP_OBJ_GFX_UNUSED_MAGNEMITE_DOLL, 77
- .set MAP_OBJ_GFX_UNUSED_SQUIRTLE_DOLL, 78
- .set MAP_OBJ_GFX_UNUSED_WOOPER_DOLL, 79
- .set MAP_OBJ_GFX_UNUSED_PIKACHU_DOLL, 80
- .set MAP_OBJ_GFX_UNUSED_PORYGON2_DOLL, 81
- .set MAP_OBJ_GFX_CUTTABLE_TREE, 82
- .set MAP_OBJ_GFX_MART_EMPLOYEE, 83
- .set MAP_OBJ_GFX_ROOFTOP_SALE_WOMAN, 84
- .set MAP_OBJ_GFX_TEALA, 85
- .set MAP_OBJ_GFX_BREAKABLE_ROCK, 86
- .set MAP_OBJ_GFX_PUSHABLE_BOULDER, 87
- .set MAP_OBJ_GFX_MR_BRINEYS_BOAT, 88
- .set MAP_OBJ_GFX_MAY_NORMAL, 89
- .set MAP_OBJ_GFX_MAY_MACH_BIKE, 90
- .set MAP_OBJ_GFX_MAY_ACRO_BIKE, 91
- .set MAP_OBJ_GFX_MAY_SURFING, 92
- .set MAP_OBJ_GFX_MAY_FIELD_MOVE, 93
- .set MAP_OBJ_GFX_TRUCK, 94
- .set MAP_OBJ_GFX_VIGAROTH_CARRYING_BOX, 95
- .set MAP_OBJ_GFX_VIGAROTH_FACING_AWAY, 96
- .set MAP_OBJ_GFX_BIRCHS_BAG, 97
- .set MAP_OBJ_GFX_ZIGZAGOON_1, 98
- .set MAP_OBJ_GFX_ARTIST, 99
- .set MAP_OBJ_GFX_RIVAL_BRENDAN_NORMAL, 100
- .set MAP_OBJ_GFX_RIVAL_BRENDAN_MACH_BIKE, 101
- .set MAP_OBJ_GFX_RIVAL_BRENDAN_ACRO_BIKE, 102
- .set MAP_OBJ_GFX_RIVAL_BRENDAN_SURFING, 103
- .set MAP_OBJ_GFX_RIVAL_BRENDAN_FIELD_MOVE, 104
- .set MAP_OBJ_GFX_RIVAL_MAY_NORMAL, 105
- .set MAP_OBJ_GFX_RIVAL_MAY_MACH_BIKE, 106
- .set MAP_OBJ_GFX_RIVAL_MAY_ACRO_BIKE, 107
- .set MAP_OBJ_GFX_RIVAL_MAY_SURFING, 108
- .set MAP_OBJ_GFX_RIVAL_MAY_FIELD_MOVE, 109
- .set MAP_OBJ_GFX_CAMERAMAN, 110
- .set MAP_OBJ_GFX_BRENDAN_UNDERWATER, 111
- .set MAP_OBJ_GFX_MAY_UNDERWATER, 112
- .set MAP_OBJ_GFX_MOVING_BOX, 113
- .set MAP_OBJ_GFX_CABLE_CAR, 114
- .set MAP_OBJ_GFX_SCIENTIST_2, 115
- .set MAP_OBJ_GFX_MAN_7, 116
- .set MAP_OBJ_GFX_AQUA_MEMBER_M, 117
- .set MAP_OBJ_GFX_AQUA_MEMBER_F, 118
- .set MAP_OBJ_GFX_MAGMA_MEMBER_M, 119
- .set MAP_OBJ_GFX_MAGMA_MEMBER_F, 120
- .set MAP_OBJ_GFX_SIDNEY, 121
- .set MAP_OBJ_GFX_PHOEBE, 122
- .set MAP_OBJ_GFX_GLACIA, 123
- .set MAP_OBJ_GFX_DRAKE, 124
- .set MAP_OBJ_GFX_ROXANNE, 125
- .set MAP_OBJ_GFX_BRAWLY, 126
- .set MAP_OBJ_GFX_WATTSON, 127
- .set MAP_OBJ_GFX_FLANNERY, 128
- .set MAP_OBJ_GFX_NORMAN, 129
- .set MAP_OBJ_GFX_WINONA, 130
- .set MAP_OBJ_GFX_LIZA, 131
- .set MAP_OBJ_GFX_TATE, 132
- .set MAP_OBJ_GFX_WALLACE, 133
- .set MAP_OBJ_GFX_STEVEN, 134
- .set MAP_OBJ_GFX_WALLY, 135
- .set MAP_OBJ_GFX_LITTLE_BOY_3, 136
- .set MAP_OBJ_GFX_BRENDAN_FISHING, 137
- .set MAP_OBJ_GFX_MAY_FISHING, 138
- .set MAP_OBJ_GFX_HOT_SPRINGS_OLD_WOMAN, 139
- .set MAP_OBJ_GFX_SS_TIDAL, 140
- .set MAP_OBJ_GFX_SUBMARINE_SHADOW, 141
- .set MAP_OBJ_GFX_PICHU_DOLL, 142
- .set MAP_OBJ_GFX_PIKACHU_DOLL, 143
- .set MAP_OBJ_GFX_MARILL_DOLL, 144
- .set MAP_OBJ_GFX_TOGEPI_DOLL, 145
- .set MAP_OBJ_GFX_CYNDAQUIL_DOLL, 146
- .set MAP_OBJ_GFX_CHIKORITA_DOLL, 147
- .set MAP_OBJ_GFX_TOTODILE_DOLL, 148
- .set MAP_OBJ_GFX_JIGGLYPUFF_DOLL, 149
- .set MAP_OBJ_GFX_MEOWTH_DOLL, 150
- .set MAP_OBJ_GFX_CLEFAIRY_DOLL, 151
- .set MAP_OBJ_GFX_DITTO_DOLL, 152
- .set MAP_OBJ_GFX_SMOOCHUM_DOLL, 153
- .set MAP_OBJ_GFX_TREECKO_DOLL, 154
- .set MAP_OBJ_GFX_TORCHIC_DOLL, 155
- .set MAP_OBJ_GFX_MUDKIP_DOLL, 156
- .set MAP_OBJ_GFX_DUSKULL_DOLL, 157
- .set MAP_OBJ_GFX_WYNAUT_DOLL, 158
- .set MAP_OBJ_GFX_BALTOY_DOLL, 159
- .set MAP_OBJ_GFX_KECLEON_DOLL, 160
- .set MAP_OBJ_GFX_AZURILL_DOLL, 161
- .set MAP_OBJ_GFX_SKITTY_DOLL, 162
- .set MAP_OBJ_GFX_SWABLU_DOLL, 163
- .set MAP_OBJ_GFX_GULPIN_DOLL, 164
- .set MAP_OBJ_GFX_LOTAD_DOLL, 165
- .set MAP_OBJ_GFX_SEEDOT_DOLL, 166
- .set MAP_OBJ_GFX_PIKA_CUSHION, 167
- .set MAP_OBJ_GFX_ROUND_CUSHION, 168
- .set MAP_OBJ_GFX_KISS_CUSHION, 169
- .set MAP_OBJ_GFX_ZIGZAG_CUSHION, 170
- .set MAP_OBJ_GFX_SPIN_CUSHION, 171
- .set MAP_OBJ_GFX_DIAMOND_CUSHION, 172
- .set MAP_OBJ_GFX_BALL_CUSHION, 173
- .set MAP_OBJ_GFX_GRASS_CUSHION, 174
- .set MAP_OBJ_GFX_FIRE_CUSHION, 175
- .set MAP_OBJ_GFX_WATER_CUSHION, 176
- .set MAP_OBJ_GFX_BIG_SNORLAX_DOLL, 177
- .set MAP_OBJ_GFX_BIG_RHYDON_DOLL, 178
- .set MAP_OBJ_GFX_BIG_LAPRAS_DOLL, 179
- .set MAP_OBJ_GFX_BIG_VENUSAUR_DOLL, 180
- .set MAP_OBJ_GFX_BIG_CHARIZARD_DOLL, 181
- .set MAP_OBJ_GFX_BIG_BLASTOISE_DOLL, 182
- .set MAP_OBJ_GFX_BIG_WAILMER_DOLL, 183
- .set MAP_OBJ_GFX_BIG_REGIROCK_DOLL, 184
- .set MAP_OBJ_GFX_BIG_REGICE_DOLL, 185
- .set MAP_OBJ_GFX_BIG_REGISTEEL_DOLL, 186
- .set MAP_OBJ_GFX_LATIAS, 187
- .set MAP_OBJ_GFX_LATIOS, 188
- .set MAP_OBJ_GFX_BOY_5, 189
- .set MAP_OBJ_GFX_CONTEST_JUDGE, 190
- .set MAP_OBJ_GFX_BRENDAN_WATERING, 191
- .set MAP_OBJ_GFX_MAY_WATERING, 192
- .set MAP_OBJ_GFX_BRENDAN_DECORATING, 193
- .set MAP_OBJ_GFX_MAY_DECORATING, 194
- .set MAP_OBJ_GFX_ARCHIE, 195
- .set MAP_OBJ_GFX_MAXIE, 196
- .set MAP_OBJ_GFX_KYOGRE_1, 197
- .set MAP_OBJ_GFX_GROUDON_1, 198
- .set MAP_OBJ_GFX_FOSSIL, 199
- .set MAP_OBJ_GFX_REGIROCK, 200
- .set MAP_OBJ_GFX_REGICE, 201
- .set MAP_OBJ_GFX_REGISTEEL, 202
- .set MAP_OBJ_GFX_SKITTY, 203
- .set MAP_OBJ_GFX_KECLEON_1, 204
- .set MAP_OBJ_GFX_KYOGRE_2, 205
- .set MAP_OBJ_GFX_GROUDON_2, 206
- .set MAP_OBJ_GFX_RAYQUAZA_2, 207
- .set MAP_OBJ_GFX_ZIGZAGOON_2, 208
- .set MAP_OBJ_GFX_PIKACHU, 209
- .set MAP_OBJ_GFX_AZUMARILL, 210
- .set MAP_OBJ_GFX_WINGULL, 211
- .set MAP_OBJ_GFX_KECLEON_2, 212
- .set MAP_OBJ_GFX_TUBER_M_SWIMMING, 213
- .set MAP_OBJ_GFX_AZURILL, 214
- .set MAP_OBJ_GFX_MOM, 215
- .set MAP_OBJ_GFX_LINK_BRENDAN, 216
- .set MAP_OBJ_GFX_LINK_MAY, 217
- .set MAP_OBJ_GFX_JUAN, 218
- .set MAP_OBJ_GFX_SCOTT, 219
- .set MAP_OBJ_GFX_POOCHYENA, 220
- .set MAP_OBJ_GFX_KYOGRE_3, 221
- .set MAP_OBJ_GFX_GROUDON_3, 222
- .set MAP_OBJ_GFX_MYSTERY_GIFT_MAN, 223
- .set MAP_OBJ_GFX_TRICK_HOUSE_STATUE, 224
- .set MAP_OBJ_GFX_KIRLIA, 225
- .set MAP_OBJ_GFX_DUSCLOPS, 226
- .set MAP_OBJ_GFX_UNION_ROOM_NURSE, 227
- .set MAP_OBJ_GFX_SUDOWOODO, 228
- .set MAP_OBJ_GFX_MEW, 229
- .set MAP_OBJ_GFX_RED, 230
- .set MAP_OBJ_GFX_LEAF, 231
- .set MAP_OBJ_GFX_DEOXYS, 232
- .set MAP_OBJ_GFX_DEOXYS_TRIANGLE, 233
- .set MAP_OBJ_GFX_BRANDON, 234
- .set MAP_OBJ_GFX_LINK_RS_BRENDAN, 235
- .set MAP_OBJ_GFX_LINK_RS_MAY, 236
- .set MAP_OBJ_GFX_LUGIA, 237
- .set MAP_OBJ_GFX_HOOH, 238
- .set MAP_OBJ_GFX_BARD_2, 239
- .set MAP_OBJ_GFX_HIPSTER, 240
- .set MAP_OBJ_GFX_TRADER, 241
- .set MAP_OBJ_GFX_STORYTELLER, 242
- .set MAP_OBJ_GFX_GIDDY, 243
- .set MAP_OBJ_GFX_PLACEHOLDER_1, 244
- .set MAP_OBJ_GFX_PLACEHOLDER_2, 245
-
- .set SHADOW_SIZE_S, 0
- .set SHADOW_SIZE_M, 1
- .set SHADOW_SIZE_L, 2
- .set SHADOW_SIZE_XL, 3
-
- .set F_INANIMATE, 1 << 6
- .set F_DISABLE_REFLECTION_PALETTE_LOAD, 1 << 7
-
- .set TRACKS_NONE, 0
- .set TRACKS_FOOT, 1
- .set TRACKS_BIKE_TIRE, 2
diff --git a/constants/move_constants.inc b/constants/move_constants.inc
deleted file mode 100644
index b6c8edf98..000000000
--- a/constants/move_constants.inc
+++ /dev/null
@@ -1,355 +0,0 @@
- .set MOVE_NONE, 0x000
- .set MOVE_POUND, 0x001
- .set MOVE_KARATE_CHOP, 0x002
- .set MOVE_DOUBLE_SLAP, 0x003
- .set MOVE_COMET_PUNCH, 0x004
- .set MOVE_MEGA_PUNCH, 0x005
- .set MOVE_PAY_DAY, 0x006
- .set MOVE_FIRE_PUNCH, 0x007
- .set MOVE_ICE_PUNCH, 0x008
- .set MOVE_THUNDER_PUNCH, 0x009
- .set MOVE_SCRATCH, 0x00a
- .set MOVE_VICE_GRIP, 0x00b
- .set MOVE_GUILLOTINE, 0x00c
- .set MOVE_RAZOR_WIND, 0x00d
- .set MOVE_SWORDS_DANCE, 0x00e
- .set MOVE_CUT, 0x00f
- .set MOVE_GUST, 0x010
- .set MOVE_WING_ATTACK, 0x011
- .set MOVE_WHIRLWIND, 0x012
- .set MOVE_FLY, 0x013
- .set MOVE_BIND, 0x014
- .set MOVE_SLAM, 0x015
- .set MOVE_VINE_WHIP, 0x016
- .set MOVE_STOMP, 0x017
- .set MOVE_DOUBLE_KICK, 0x018
- .set MOVE_MEGA_KICK, 0x019
- .set MOVE_JUMP_KICK, 0x01a
- .set MOVE_ROLLING_KICK, 0x01b
- .set MOVE_SAND_ATTACK, 0x01c
- .set MOVE_HEADBUTT, 0x01d
- .set MOVE_HORN_ATTACK, 0x01e
- .set MOVE_FURY_ATTACK, 0x01f
- .set MOVE_HORN_DRILL, 0x020
- .set MOVE_TACKLE, 0x021
- .set MOVE_BODY_SLAM, 0x022
- .set MOVE_WRAP, 0x023
- .set MOVE_TAKE_DOWN, 0x024
- .set MOVE_THRASH, 0x025
- .set MOVE_DOUBLE_EDGE, 0x026
- .set MOVE_TAIL_WHIP, 0x027
- .set MOVE_POISON_STING, 0x028
- .set MOVE_TWINEEDLE, 0x029
- .set MOVE_PIN_MISSILE, 0x02a
- .set MOVE_LEER, 0x02b
- .set MOVE_BITE, 0x02c
- .set MOVE_GROWL, 0x02d
- .set MOVE_ROAR, 0x02e
- .set MOVE_SING, 0x02f
- .set MOVE_SUPERSONIC, 0x030
- .set MOVE_SONIC_BOOM, 0x031
- .set MOVE_DISABLE, 0x032
- .set MOVE_ACID, 0x033
- .set MOVE_EMBER, 0x034
- .set MOVE_FLAMETHROWER, 0x035
- .set MOVE_MIST, 0x036
- .set MOVE_WATER_GUN, 0x037
- .set MOVE_HYDRO_PUMP, 0x038
- .set MOVE_SURF, 0x039
- .set MOVE_ICE_BEAM, 0x03a
- .set MOVE_BLIZZARD, 0x03b
- .set MOVE_PSYBEAM, 0x03c
- .set MOVE_BUBBLE_BEAM, 0x03d
- .set MOVE_AURORA_BEAM, 0x03e
- .set MOVE_HYPER_BEAM, 0x03f
- .set MOVE_PECK, 0x040
- .set MOVE_DRILL_PECK, 0x041
- .set MOVE_SUBMISSION, 0x042
- .set MOVE_LOW_KICK, 0x043
- .set MOVE_COUNTER, 0x044
- .set MOVE_SEISMIC_TOSS, 0x045
- .set MOVE_STRENGTH, 0x046
- .set MOVE_ABSORB, 0x047
- .set MOVE_MEGA_DRAIN, 0x048
- .set MOVE_LEECH_SEED, 0x049
- .set MOVE_GROWTH, 0x04a
- .set MOVE_RAZOR_LEAF, 0x04b
- .set MOVE_SOLAR_BEAM, 0x04c
- .set MOVE_POISON_POWDER, 0x04d
- .set MOVE_STUN_SPORE, 0x04e
- .set MOVE_SLEEP_POWDER, 0x04f
- .set MOVE_PETAL_DANCE, 0x050
- .set MOVE_STRING_SHOT, 0x051
- .set MOVE_DRAGON_RAGE, 0x052
- .set MOVE_FIRE_SPIN, 0x053
- .set MOVE_THUNDER_SHOCK, 0x054
- .set MOVE_THUNDERBOLT, 0x055
- .set MOVE_THUNDER_WAVE, 0x056
- .set MOVE_THUNDER, 0x057
- .set MOVE_ROCK_THROW, 0x058
- .set MOVE_EARTHQUAKE, 0x059
- .set MOVE_FISSURE, 0x05a
- .set MOVE_DIG, 0x05b
- .set MOVE_TOXIC, 0x05c
- .set MOVE_CONFUSION, 0x05d
- .set MOVE_PSYCHIC, 0x05e
- .set MOVE_HYPNOSIS, 0x05f
- .set MOVE_MEDITATE, 0x060
- .set MOVE_AGILITY, 0x061
- .set MOVE_QUICK_ATTACK, 0x062
- .set MOVE_RAGE, 0x063
- .set MOVE_TELEPORT, 0x064
- .set MOVE_NIGHT_SHADE, 0x065
- .set MOVE_MIMIC, 0x066
- .set MOVE_SCREECH, 0x067
- .set MOVE_DOUBLE_TEAM, 0x068
- .set MOVE_RECOVER, 0x069
- .set MOVE_HARDEN, 0x06a
- .set MOVE_MINIMIZE, 0x06b
- .set MOVE_SMOKESCREEN, 0x06c
- .set MOVE_CONFUSE_RAY, 0x06d
- .set MOVE_WITHDRAW, 0x06e
- .set MOVE_DEFENSE_CURL, 0x06f
- .set MOVE_BARRIER, 0x070
- .set MOVE_LIGHT_SCREEN, 0x071
- .set MOVE_HAZE, 0x072
- .set MOVE_REFLECT, 0x073
- .set MOVE_FOCUS_ENERGY, 0x074
- .set MOVE_BIDE, 0x075
- .set MOVE_METRONOME, 0x076
- .set MOVE_MIRROR_MOVE, 0x077
- .set MOVE_SELF_DESTRUCT, 0x078
- .set MOVE_EGG_BOMB, 0x079
- .set MOVE_LICK, 0x07a
- .set MOVE_SMOG, 0x07b
- .set MOVE_SLUDGE, 0x07c
- .set MOVE_BONE_CLUB, 0x07d
- .set MOVE_FIRE_BLAST, 0x07e
- .set MOVE_WATERFALL, 0x07f
- .set MOVE_CLAMP, 0x080
- .set MOVE_SWIFT, 0x081
- .set MOVE_SKULL_BASH, 0x082
- .set MOVE_SPIKE_CANNON, 0x083
- .set MOVE_CONSTRICT, 0x084
- .set MOVE_AMNESIA, 0x085
- .set MOVE_KINESIS, 0x086
- .set MOVE_SOFT_BOILED, 0x087
- .set MOVE_HI_JUMP_KICK, 0x088
- .set MOVE_GLARE, 0x089
- .set MOVE_DREAM_EATER, 0x08a
- .set MOVE_POISON_GAS, 0x08b
- .set MOVE_BARRAGE, 0x08c
- .set MOVE_LEECH_LIFE, 0x08d
- .set MOVE_LOVELY_KISS, 0x08e
- .set MOVE_SKY_ATTACK, 0x08f
- .set MOVE_TRANSFORM, 0x090
- .set MOVE_BUBBLE, 0x091
- .set MOVE_DIZZY_PUNCH, 0x092
- .set MOVE_SPORE, 0x093
- .set MOVE_FLASH, 0x094
- .set MOVE_PSYWAVE, 0x095
- .set MOVE_SPLASH, 0x096
- .set MOVE_ACID_ARMOR, 0x097
- .set MOVE_CRABHAMMER, 0x098
- .set MOVE_EXPLOSION, 0x099
- .set MOVE_FURY_SWIPES, 0x09a
- .set MOVE_BONEMERANG, 0x09b
- .set MOVE_REST, 0x09c
- .set MOVE_ROCK_SLIDE, 0x09d
- .set MOVE_HYPER_FANG, 0x09e
- .set MOVE_SHARPEN, 0x09f
- .set MOVE_CONVERSION, 0x0a0
- .set MOVE_TRI_ATTACK, 0x0a1
- .set MOVE_SUPER_FANG, 0x0a2
- .set MOVE_SLASH, 0x0a3
- .set MOVE_SUBSTITUTE, 0x0a4
- .set MOVE_STRUGGLE, 0x0a5
- .set MOVE_SKETCH, 0x0a6
- .set MOVE_TRIPLE_KICK, 0x0a7
- .set MOVE_THIEF, 0x0a8
- .set MOVE_SPIDER_WEB, 0x0a9
- .set MOVE_MIND_READER, 0x0aa
- .set MOVE_NIGHTMARE, 0x0ab
- .set MOVE_FLAME_WHEEL, 0x0ac
- .set MOVE_SNORE, 0x0ad
- .set MOVE_CURSE, 0x0ae
- .set MOVE_FLAIL, 0x0af
- .set MOVE_CONVERSION_2, 0x0b0
- .set MOVE_AEROBLAST, 0x0b1
- .set MOVE_COTTON_SPORE, 0x0b2
- .set MOVE_REVERSAL, 0x0b3
- .set MOVE_SPITE, 0x0b4
- .set MOVE_POWDER_SNOW, 0x0b5
- .set MOVE_PROTECT, 0x0b6
- .set MOVE_MACH_PUNCH, 0x0b7
- .set MOVE_SCARY_FACE, 0x0b8
- .set MOVE_FAINT_ATTACK, 0x0b9
- .set MOVE_SWEET_KISS, 0x0ba
- .set MOVE_BELLY_DRUM, 0x0bb
- .set MOVE_SLUDGE_BOMB, 0x0bc
- .set MOVE_MUD_SLAP, 0x0bd
- .set MOVE_OCTAZOOKA, 0x0be
- .set MOVE_SPIKES, 0x0bf
- .set MOVE_ZAP_CANNON, 0x0c0
- .set MOVE_FORESIGHT, 0x0c1
- .set MOVE_DESTINY_BOND, 0x0c2
- .set MOVE_PERISH_SONG, 0x0c3
- .set MOVE_ICY_WIND, 0x0c4
- .set MOVE_DETECT, 0x0c5
- .set MOVE_BONE_RUSH, 0x0c6
- .set MOVE_LOCK_ON, 0x0c7
- .set MOVE_OUTRAGE, 0x0c8
- .set MOVE_SANDSTORM, 0x0c9
- .set MOVE_GIGA_DRAIN, 0x0ca
- .set MOVE_ENDURE, 0x0cb
- .set MOVE_CHARM, 0x0cc
- .set MOVE_ROLLOUT, 0x0cd
- .set MOVE_FALSE_SWIPE, 0x0ce
- .set MOVE_SWAGGER, 0x0cf
- .set MOVE_MILK_DRINK, 0x0d0
- .set MOVE_SPARK, 0x0d1
- .set MOVE_FURY_CUTTER, 0x0d2
- .set MOVE_STEEL_WING, 0x0d3
- .set MOVE_MEAN_LOOK, 0x0d4
- .set MOVE_ATTRACT, 0x0d5
- .set MOVE_SLEEP_TALK, 0x0d6
- .set MOVE_HEAL_BELL, 0x0d7
- .set MOVE_RETURN, 0x0d8
- .set MOVE_PRESENT, 0x0d9
- .set MOVE_FRUSTRATION, 0x0da
- .set MOVE_SAFEGUARD, 0x0db
- .set MOVE_PAIN_SPLIT, 0x0dc
- .set MOVE_SACRED_FIRE, 0x0dd
- .set MOVE_MAGNITUDE, 0x0de
- .set MOVE_DYNAMIC_PUNCH, 0x0df
- .set MOVE_MEGAHORN, 0x0e0
- .set MOVE_DRAGON_BREATH, 0x0e1
- .set MOVE_BATON_PASS, 0x0e2
- .set MOVE_ENCORE, 0x0e3
- .set MOVE_PURSUIT, 0x0e4
- .set MOVE_RAPID_SPIN, 0x0e5
- .set MOVE_SWEET_SCENT, 0x0e6
- .set MOVE_IRON_TAIL, 0x0e7
- .set MOVE_METAL_CLAW, 0x0e8
- .set MOVE_VITAL_THROW, 0x0e9
- .set MOVE_MORNING_SUN, 0x0ea
- .set MOVE_SYNTHESIS, 0x0eb
- .set MOVE_MOONLIGHT, 0x0ec
- .set MOVE_HIDDEN_POWER, 0x0ed
- .set MOVE_CROSS_CHOP, 0x0ee
- .set MOVE_TWISTER, 0x0ef
- .set MOVE_RAIN_DANCE, 0x0f0
- .set MOVE_SUNNY_DAY, 0x0f1
- .set MOVE_CRUNCH, 0x0f2
- .set MOVE_MIRROR_COAT, 0x0f3
- .set MOVE_PSYCH_UP, 0x0f4
- .set MOVE_EXTREME_SPEED, 0x0f5
- .set MOVE_ANCIENT_POWER, 0x0f6
- .set MOVE_SHADOW_BALL, 0x0f7
- .set MOVE_FUTURE_SIGHT, 0x0f8
- .set MOVE_ROCK_SMASH, 0x0f9
- .set MOVE_WHIRLPOOL, 0x0fa
- .set MOVE_BEAT_UP, 0x0fb
- .set MOVE_FAKE_OUT, 0x0fc
- .set MOVE_UPROAR, 0x0fd
- .set MOVE_STOCKPILE, 0x0fe
- .set MOVE_SPIT_UP, 0x0ff
- .set MOVE_SWALLOW, 0x100
- .set MOVE_HEAT_WAVE, 0x101
- .set MOVE_HAIL, 0x102
- .set MOVE_TORMENT, 0x103
- .set MOVE_FLATTER, 0x104
- .set MOVE_WILL_O_WISP, 0x105
- .set MOVE_MEMENTO, 0x106
- .set MOVE_FACADE, 0x107
- .set MOVE_FOCUS_PUNCH, 0x108
- .set MOVE_SMELLING_SALT, 0x109
- .set MOVE_FOLLOW_ME, 0x10a
- .set MOVE_NATURE_POWER, 0x10b
- .set MOVE_CHARGE, 0x10c
- .set MOVE_TAUNT, 0x10d
- .set MOVE_HELPING_HAND, 0x10e
- .set MOVE_TRICK, 0x10f
- .set MOVE_ROLE_PLAY, 0x110
- .set MOVE_WISH, 0x111
- .set MOVE_ASSIST, 0x112
- .set MOVE_INGRAIN, 0x113
- .set MOVE_SUPERPOWER, 0x114
- .set MOVE_MAGIC_COAT, 0x115
- .set MOVE_RECYCLE, 0x116
- .set MOVE_REVENGE, 0x117
- .set MOVE_BRICK_BREAK, 0x118
- .set MOVE_YAWN, 0x119
- .set MOVE_KNOCK_OFF, 0x11a
- .set MOVE_ENDEAVOR, 0x11b
- .set MOVE_ERUPTION, 0x11c
- .set MOVE_SKILL_SWAP, 0x11d
- .set MOVE_IMPRISON, 0x11e
- .set MOVE_REFRESH, 0x11f
- .set MOVE_GRUDGE, 0x120
- .set MOVE_SNATCH, 0x121
- .set MOVE_SECRET_POWER, 0x122
- .set MOVE_DIVE, 0x123
- .set MOVE_ARM_THRUST, 0x124
- .set MOVE_CAMOUFLAGE, 0x125
- .set MOVE_TAIL_GLOW, 0x126
- .set MOVE_LUSTER_PURGE, 0x127
- .set MOVE_MIST_BALL, 0x128
- .set MOVE_FEATHER_DANCE, 0x129
- .set MOVE_TEETER_DANCE, 0x12a
- .set MOVE_BLAZE_KICK, 0x12b
- .set MOVE_MUD_SPORT, 0x12c
- .set MOVE_ICE_BALL, 0x12d
- .set MOVE_NEEDLE_ARM, 0x12e
- .set MOVE_SLACK_OFF, 0x12f
- .set MOVE_HYPER_VOICE, 0x130
- .set MOVE_POISON_FANG, 0x131
- .set MOVE_CRUSH_CLAW, 0x132
- .set MOVE_BLAST_BURN, 0x133
- .set MOVE_HYDRO_CANNON, 0x134
- .set MOVE_METEOR_MASH, 0x135
- .set MOVE_ASTONISH, 0x136
- .set MOVE_WEATHER_BALL, 0x137
- .set MOVE_AROMATHERAPY, 0x138
- .set MOVE_FAKE_TEARS, 0x139
- .set MOVE_AIR_CUTTER, 0x13a
- .set MOVE_OVERHEAT, 0x13b
- .set MOVE_ODOR_SLEUTH, 0x13c
- .set MOVE_ROCK_TOMB, 0x13d
- .set MOVE_SILVER_WIND, 0x13e
- .set MOVE_METAL_SOUND, 0x13f
- .set MOVE_GRASS_WHISTLE, 0x140
- .set MOVE_TICKLE, 0x141
- .set MOVE_COSMIC_POWER, 0x142
- .set MOVE_WATER_SPOUT, 0x143
- .set MOVE_SIGNAL_BEAM, 0x144
- .set MOVE_SHADOW_PUNCH, 0x145
- .set MOVE_EXTRASENSORY, 0x146
- .set MOVE_SKY_UPPERCUT, 0x147
- .set MOVE_SAND_TOMB, 0x148
- .set MOVE_SHEER_COLD, 0x149
- .set MOVE_MUDDY_WATER, 0x14a
- .set MOVE_BULLET_SEED, 0x14b
- .set MOVE_AERIAL_ACE, 0x14c
- .set MOVE_ICICLE_SPEAR, 0x14d
- .set MOVE_IRON_DEFENSE, 0x14e
- .set MOVE_BLOCK, 0x14f
- .set MOVE_HOWL, 0x150
- .set MOVE_DRAGON_CLAW, 0x151
- .set MOVE_FRENZY_PLANT, 0x152
- .set MOVE_BULK_UP, 0x153
- .set MOVE_BOUNCE, 0x154
- .set MOVE_MUD_SHOT, 0x155
- .set MOVE_POISON_TAIL, 0x156
- .set MOVE_COVET, 0x157
- .set MOVE_VOLT_TACKLE, 0x158
- .set MOVE_MAGICAL_LEAF, 0x159
- .set MOVE_WATER_SPORT, 0x15a
- .set MOVE_CALM_MIND, 0x15b
- .set MOVE_LEAF_BLADE, 0x15c
- .set MOVE_DRAGON_DANCE, 0x15d
- .set MOVE_ROCK_BLAST, 0x15e
- .set MOVE_SHOCK_WAVE, 0x15f
- .set MOVE_WATER_PULSE, 0x160
- .set MOVE_DOOM_DESIRE, 0x161
- .set MOVE_PSYCHO_BOOST, 0x162
diff --git a/constants/songs.inc b/constants/songs.inc
deleted file mode 100644
index 61362f058..000000000
--- a/constants/songs.inc
+++ /dev/null
@@ -1,461 +0,0 @@
- .equiv SE_STOP, 0
- .equiv SE_KAIFUKU, 1
- .equiv SE_PC_LOGON, 2
- .equiv SE_PC_OFF, 3
- .equiv SE_PC_ON, 4
- .equiv SE_SELECT, 5
- .equiv SE_WIN_OPEN, 6
- .equiv SE_WALL_HIT, 7
- .equiv SE_DOOR, 8
- .equiv SE_KAIDAN, 9
- .equiv SE_DANSA, 10
- .equiv SE_JITENSYA, 11
- .equiv SE_KOUKA_L, 12
- .equiv SE_KOUKA_M, 13
- .equiv SE_KOUKA_H, 14
- .equiv SE_BOWA2, 15
- .equiv SE_POKE_DEAD, 16
- .equiv SE_NIGERU, 17
- .equiv SE_JIDO_DOA, 18
- .equiv SE_NAMINORI, 19
- .equiv SE_BAN, 20
- .equiv SE_PIN, 21
- .equiv SE_BOO, 22
- .equiv SE_BOWA, 23
- .equiv SE_JYUNI, 24
- .equiv SE_A, 25
- .equiv SE_I, 26
- .equiv SE_U, 27
- .equiv SE_E, 28
- .equiv SE_O, 29
- .equiv SE_N, 30
- .equiv SE_SEIKAI, 31
- .equiv SE_HAZURE, 32
- .equiv SE_EXP, 33
- .equiv SE_JITE_PYOKO, 34
- .equiv SE_MU_PACHI, 35
- .equiv SE_TK_KASYA, 36
- .equiv SE_FU_ZAKU, 37
- .equiv SE_FU_ZAKU2, 38
- .equiv SE_FU_ZUZUZU, 39
- .equiv SE_RU_GASHIN, 40
- .equiv SE_RU_GASYAN, 41
- .equiv SE_RU_BARI, 42
- .equiv SE_RU_HYUU, 43
- .equiv SE_KI_GASYAN, 44
- .equiv SE_TK_WARPIN, 45
- .equiv SE_TK_WARPOUT, 46
- .equiv SE_TU_SAA, 47
- .equiv SE_HI_TURUN, 48
- .equiv SE_TRACK_MOVE, 49
- .equiv SE_TRACK_STOP, 50
- .equiv SE_TRACK_HAIK, 51
- .equiv SE_TRACK_DOOR, 52
- .equiv SE_MOTER, 53
- .equiv SE_CARD, 54
- .equiv SE_SAVE, 55
- .equiv SE_KON, 56
- .equiv SE_KON2, 57
- .equiv SE_KON3, 58
- .equiv SE_KON4, 59
- .equiv SE_SUIKOMU, 60
- .equiv SE_NAGERU, 61
- .equiv SE_TOY_C, 62
- .equiv SE_TOY_D, 63
- .equiv SE_TOY_E, 64
- .equiv SE_TOY_F, 65
- .equiv SE_TOY_G, 66
- .equiv SE_TOY_A, 67
- .equiv SE_TOY_B, 68
- .equiv SE_TOY_C1, 69
- .equiv SE_MIZU, 70
- .equiv SE_HASHI, 71
- .equiv SE_DAUGI, 72
- .equiv SE_PINPON, 73
- .equiv SE_FUUSEN1, 74
- .equiv SE_FUUSEN2, 75
- .equiv SE_FUUSEN3, 76
- .equiv SE_TOY_KABE, 77
- .equiv SE_TOY_DANGO, 78
- .equiv SE_DOKU, 79
- .equiv SE_ESUKA, 80
- .equiv SE_T_AME, 81
- .equiv SE_T_AME_E, 82
- .equiv SE_T_OOAME, 83
- .equiv SE_T_OOAME_E, 84
- .equiv SE_T_KOAME, 85
- .equiv SE_T_KOAME_E, 86
- .equiv SE_T_KAMI, 87
- .equiv SE_T_KAMI2, 88
- .equiv SE_ELEBETA, 89
- .equiv SE_HINSI, 90
- .equiv SE_EXPMAX, 91
- .equiv SE_TAMAKORO, 92
- .equiv SE_TAMAKORO_E, 93
- .equiv SE_BASABASA, 94
- .equiv SE_REGI, 95
- .equiv SE_C_GAJI, 96
- .equiv SE_C_MAKU_U, 97
- .equiv SE_C_MAKU_D, 98
- .equiv SE_C_PASI, 99
- .equiv SE_C_SYU, 100
- .equiv SE_C_PIKON, 101
- .equiv SE_REAPOKE, 102
- .equiv SE_OP_BASYU, 103
- .equiv SE_BT_START, 104
- .equiv SE_DENDOU, 105
- .equiv SE_JIHANKI, 106
- .equiv SE_TAMA, 107
- .equiv SE_Z_SCROLL, 108
- .equiv SE_Z_PAGE, 109
- .equiv SE_PN_ON, 110
- .equiv SE_PN_OFF, 111
- .equiv SE_Z_SEARCH, 112
- .equiv SE_TAMAGO, 113
- .equiv SE_TB_START, 114
- .equiv SE_TB_KON, 115
- .equiv SE_TB_KARA, 116
- .equiv SE_BIDORO, 117
- .equiv SE_W085, 118
- .equiv SE_W085B, 119
- .equiv SE_W231, 120
- .equiv SE_W171, 121
- .equiv SE_W233, 122
- .equiv SE_W233B, 123
- .equiv SE_W145, 124
- .equiv SE_W145B, 125
- .equiv SE_W145C, 126
- .equiv SE_W240, 127
- .equiv SE_W015, 128
- .equiv SE_W081, 129
- .equiv SE_W081B, 130
- .equiv SE_W088, 131
- .equiv SE_W016, 132
- .equiv SE_W016B, 133
- .equiv SE_W003, 134
- .equiv SE_W104, 135
- .equiv SE_W013, 136
- .equiv SE_W196, 137
- .equiv SE_W086, 138
- .equiv SE_W004, 139
- .equiv SE_W025, 140
- .equiv SE_W025B, 141
- .equiv SE_W152, 142
- .equiv SE_W026, 143
- .equiv SE_W172, 144
- .equiv SE_W172B, 145
- .equiv SE_W053, 146
- .equiv SE_W007, 147
- .equiv SE_W092, 148
- .equiv SE_W221, 149
- .equiv SE_W221B, 150
- .equiv SE_W052, 151
- .equiv SE_W036, 152
- .equiv SE_W059, 153
- .equiv SE_W059B, 154
- .equiv SE_W010, 155
- .equiv SE_W011, 156
- .equiv SE_W017, 157
- .equiv SE_W019, 158
- .equiv SE_W028, 159
- .equiv SE_W013B, 160
- .equiv SE_W044, 161
- .equiv SE_W029, 162
- .equiv SE_W057, 163
- .equiv SE_W056, 164
- .equiv SE_W250, 165
- .equiv SE_W030, 166
- .equiv SE_W039, 167
- .equiv SE_W054, 168
- .equiv SE_W077, 169
- .equiv SE_W020, 170
- .equiv SE_W082, 171
- .equiv SE_W047, 172
- .equiv SE_W195, 173
- .equiv SE_W006, 174
- .equiv SE_W091, 175
- .equiv SE_W146, 176
- .equiv SE_W120, 177
- .equiv SE_W153, 178
- .equiv SE_W071B, 179
- .equiv SE_W071, 180
- .equiv SE_W103, 181
- .equiv SE_W062, 182
- .equiv SE_W062B, 183
- .equiv SE_W048, 184
- .equiv SE_W187, 185
- .equiv SE_W118, 186
- .equiv SE_W155, 187
- .equiv SE_W122, 188
- .equiv SE_W060, 189
- .equiv SE_W185, 190
- .equiv SE_W014, 191
- .equiv SE_W043, 192
- .equiv SE_W207, 193
- .equiv SE_W207B, 194
- .equiv SE_W215, 195
- .equiv SE_W109, 196
- .equiv SE_W173, 197
- .equiv SE_W280, 198
- .equiv SE_W202, 199
- .equiv SE_W060B, 200
- .equiv SE_W076, 201
- .equiv SE_W080, 202
- .equiv SE_W100, 203
- .equiv SE_W107, 204
- .equiv SE_W166, 205
- .equiv SE_W129, 206
- .equiv SE_W115, 207
- .equiv SE_W112, 208
- .equiv SE_W197, 209
- .equiv SE_W199, 210
- .equiv SE_W236, 211
- .equiv SE_W204, 212
- .equiv SE_W268, 213
- .equiv SE_W070, 214
- .equiv SE_W063, 215
- .equiv SE_W127, 216
- .equiv SE_W179, 217
- .equiv SE_W151, 218
- .equiv SE_W201, 219
- .equiv SE_W161, 220
- .equiv SE_W161B, 221
- .equiv SE_W227, 222
- .equiv SE_W227B, 223
- .equiv SE_W226, 224
- .equiv SE_W208, 225
- .equiv SE_W213, 226
- .equiv SE_W213B, 227
- .equiv SE_W234, 228
- .equiv SE_W260, 229
- .equiv SE_W328, 230
- .equiv SE_W320, 231
- .equiv SE_W255, 232
- .equiv SE_W291, 233
- .equiv SE_W089, 234
- .equiv SE_W239, 235
- .equiv SE_W230, 236
- .equiv SE_W281, 237
- .equiv SE_W327, 238
- .equiv SE_W287, 239
- .equiv SE_W257, 240
- .equiv SE_W253, 241
- .equiv SE_W258, 242
- .equiv SE_W322, 243
- .equiv SE_W298, 244
- .equiv SE_W287B, 245
- .equiv SE_W114, 246
- .equiv SE_W063B, 247
-
- .equiv BGM_STOP, 349
- .equiv BGM_TETSUJI, 350
- .equiv BGM_FIELD13, 351
- .equiv BGM_KACHI22, 352
- .equiv BGM_KACHI2, 353
- .equiv BGM_KACHI3, 354
- .equiv BGM_KACHI5, 355
- .equiv BGM_PCC, 356
- .equiv BGM_NIBI, 357
- .equiv BGM_SUIKUN, 358
- .equiv BGM_DOORO1, 359
- .equiv BGM_DOORO_X1, 360
- .equiv BGM_DOORO_X3, 361
- .equiv BGM_MACHI_S2, 362
- .equiv BGM_MACHI_S4, 363
- .equiv BGM_GIM, 364
- .equiv BGM_NAMINORI, 365
- .equiv BGM_DAN01, 366
- .equiv BGM_FANFA1, 367
- .equiv BGM_ME_ASA, 368
- .equiv BGM_ME_BACHI, 369
- .equiv BGM_FANFA4, 370
- .equiv BGM_FANFA5, 371
- .equiv BGM_ME_WAZA, 372
- .equiv BGM_BIJYUTU, 373
- .equiv BGM_DOORO_X4, 374
- .equiv BGM_FUNE_KAN, 375
- .equiv BGM_ME_SHINKA, 376
- .equiv BGM_SHINKA, 377
- .equiv BGM_ME_WASURE, 378
- .equiv BGM_SYOUJOEYE, 379
- .equiv BGM_BOYEYE, 380
- .equiv BGM_DAN02, 381
- .equiv BGM_MACHI_S3, 382
- .equiv BGM_ODAMAKI, 383
- .equiv BGM_B_TOWER, 384
- .equiv BGM_SWIMEYE, 385
- .equiv BGM_DAN03, 386
- .equiv BGM_ME_KINOMI, 387
- .equiv BGM_ME_TAMA, 388
- .equiv BGM_ME_B_BIG, 389
- .equiv BGM_ME_B_SMALL, 390
- .equiv BGM_ME_ZANNEN, 391
- .equiv BGM_BD_TIME, 392
- .equiv BGM_TEST1, 393
- .equiv BGM_TEST2, 394
- .equiv BGM_TEST3, 395
- .equiv BGM_TEST4, 396
- .equiv BGM_TEST, 397
- .equiv BGM_GOMACHI0, 398
- .equiv BGM_GOTOWN, 399
- .equiv BGM_POKECEN, 400
- .equiv BGM_NEXTROAD, 401
- .equiv BGM_GRANROAD, 402
- .equiv BGM_CYCLING, 403
- .equiv BGM_FRIENDLY, 404
- .equiv BGM_MISHIRO, 405
- .equiv BGM_TOZAN, 406
- .equiv BGM_GIRLEYE, 407
- .equiv BGM_MINAMO, 408
- .equiv BGM_ASHROAD, 409
- .equiv BGM_EVENT0, 410
- .equiv BGM_DEEPDEEP, 411
- .equiv BGM_KACHI1, 412
- .equiv BGM_TITLE3, 413
- .equiv BGM_DEMO1, 414
- .equiv BGM_GIRL_SUP, 415
- .equiv BGM_HAGESHII, 416
- .equiv BGM_KAKKOII, 417
- .equiv BGM_KAZANBAI, 418
- .equiv BGM_AQA_0, 419
- .equiv BGM_TSURETEK, 420
- .equiv BGM_BOY_SUP, 421
- .equiv BGM_RAINBOW, 422
- .equiv BGM_AYASII, 423
- .equiv BGM_KACHI4, 424
- .equiv BGM_ROPEWAY, 425
- .equiv BGM_CASINO, 426
- .equiv BGM_HIGHTOWN, 427
- .equiv BGM_SAFARI, 428
- .equiv BGM_C_ROAD, 429
- .equiv BGM_AJITO, 430
- .equiv BGM_M_BOAT, 431
- .equiv BGM_M_DUNGON, 432
- .equiv BGM_FINECITY, 433
- .equiv BGM_MACHUPI, 434
- .equiv BGM_P_SCHOOL, 435
- .equiv BGM_DENDOU, 436
- .equiv BGM_TONEKUSA, 437
- .equiv BGM_MABOROSI, 438
- .equiv BGM_CON_FAN, 439
- .equiv BGM_CONTEST0, 440
- .equiv BGM_MGM0, 441
- .equiv BGM_T_BATTLE, 442
- .equiv BGM_OOAME, 443
- .equiv BGM_HIDERI, 444
- .equiv BGM_RUNECITY, 445
- .equiv BGM_CON_K, 446
- .equiv BGM_EIKOU_R, 447
- .equiv BGM_KARAKURI, 448
- .equiv BGM_HUTAGO, 449
- .equiv BGM_SITENNOU, 450
- .equiv BGM_YAMA_EYE, 451
- .equiv BGM_CONLOBBY, 452
- .equiv BGM_INTER_V, 453
- .equiv BGM_DAIGO, 454
- .equiv BGM_THANKFOR, 455
- .equiv BGM_END, 456
- .equiv BGM_BATTLE_FRONTIER, 457
- .equiv BGM_BATTLE_ARENA, 458
- .equiv BGM_ME_BATTLE_POINTS, 459
- .equiv BGM_ME_MATCH_CALL, 460
- .equiv BGM_BATTLE_PYRAMID, 461
- .equiv BGM_BATTLE_PYRAMID_SUMMIT, 462
- .equiv BGM_BATTLE_PALACE, 463
- .equiv BGM_FANFA_RAYQUAZA, 464
- .equiv BGM_BATTLE_TOWER, 465
- .equiv BGM_ME_BATTLE_SYMBOL, 466
- .equiv BGM_BATTLE_DOME_TOURNAMENT, 467
- .equiv BGM_BATTLE_PIKE, 468
- .equiv BGM_BATTLE_FACTORY, 469
- .equiv BGM_BATTLE_LEGENDARY, 470
- .equiv BGM_BATTLE_FRONTIER_BRAIN, 471
- .equiv BGM_BATTLE_MEW, 472
- .equiv BGM_BATTLE_DOME, 473
- .equiv BGM_BATTLE27, 474
- .equiv BGM_BATTLE31, 475
- .equiv BGM_BATTLE20, 476
- .equiv BGM_BATTLE32, 477
- .equiv BGM_BATTLE33, 478
- .equiv BGM_BATTLE36, 479
- .equiv BGM_BATTLE34, 480
- .equiv BGM_BATTLE35, 481
- .equiv BGM_BATTLE38, 482
- .equiv BGM_BATTLE30, 483
- .equiv BGM_FRLG_FOLLOW_ME, 484
- .equiv BGM_FRLG_GAMECORNER, 485
- .equiv BGM_FRLG_ROCKET_HIDEOUT, 486
- .equiv BGM_FRLG_GYM, 487
- .equiv BGM_FRLG_JIGGLYPUFF, 488
- .equiv BGM_FRLG_OPENING, 489
- .equiv BGM_FRLG_TITLE, 490
- .equiv BGM_FRLG_CINNABAR_ISLAND, 491
- .equiv BGM_FRLG_LAVENDER_TOWN, 492
- .equiv BGM_FRLG_HEALING_TEST, 493
- .equiv BGM_FRLG_BICYCLE, 494
- .equiv BGM_FRLG_SUSPICIOUS_EYE, 495
- .equiv BGM_FRLG_GIRL_EYE, 496
- .equiv BGM_FRLG_BOY_EYE, 497
- .equiv BGM_FRLG_CONGRATULATIONS_HALL_OF_FAME, 498
- .equiv BGM_FRLG_VIRIDIAN_FOREST, 499
- .equiv BGM_FRLG_MT_MOON, 500
- .equiv BGM_FRLG_POKEMON_MANSION, 501
- .equiv BGM_FRLG_CREDITS, 502
- .equiv BGM_FRLG_ROUTE_1, 503
- .equiv BGM_FRLG_ROUTE_24, 504
- .equiv BGM_FRLG_ROUTE_3, 505
- .equiv BGM_FRLG_ROUTE_11, 506
- .equiv BGM_FRLG_INDIGO_PLATEAU, 507
- .equiv BGM_FRLG_BATTLE_LEADER, 508
- .equiv BGM_FRLG_BATTLE_TRAINER, 509
- .equiv BGM_FRLG_BATTLE_WILD_POKEMON, 510
- .equiv BGM_FRLG_BATTLE_CHAMPION, 511
- .equiv BGM_FRLG_PALLET_TOWN, 512
- .equiv BGM_FRLG_OAK_LAB, 513
- .equiv BGM_FRLG_PROF_OAK, 514
- .equiv BGM_FRLG_POKEMON_CENTER, 515
- .equiv BGM_FRLG_SS_ANNE, 516
- .equiv BGM_FRLG_SURF, 517
- .equiv BGM_FRLG_POKEMON_TOWER, 518
- .equiv BGM_FRLG_SILPH, 519
- .equiv BGM_FRLG_CERULEAN_CITY, 520
- .equiv BGM_FRLG_CELADON_CITY, 521
- .equiv BGM_FRLG_KACHI_TRAINER, 522
- .equiv BGM_FRLG_KACHI_WILD_POKEMON, 523
- .equiv BGM_FRLG_KACHI_LEADER, 524
- .equiv BGM_FRLG_VERMILION_CITY, 525
- .equiv BGM_FRLG_VIRIDIAN_CITY, 526
- .equiv BGM_FRLG_RIVAL, 527
- .equiv BGM_FRLG_RIVAL_POSTBATTLE, 528
- .equiv BGM_FRLG_ME_POKEDEX_EVAL, 529
- .equiv BGM_FRLG_ME_KEYITEM, 530
- .equiv BGM_FRLG_FANFA_POKEMON_CAUGHT, 531
- .equiv BGM_FRLG_FANFA_TRAINERCARD_PHOTO, 532
- .equiv BGM_FRLG_GAMEFREAK_LOGO, 533
- .equiv BGM_FRLG_CAUGHT_POKEMON, 534
- .equiv BGM_FRLG_GAME_EXPLANATION_START, 535
- .equiv BGM_FRLG_GAME_EXPLANATION_MIDDLE, 536
- .equiv BGM_FRLG_GAME_EXPLANATION_END, 537
- .equiv BGM_FRLG_POKEMON_JUMP, 538
- .equiv BGM_FRLG_UNION_ROOM, 539
- .equiv BGM_FRLG_POKEMON_NETWORK_CENTER, 540
- .equiv BGM_FRLG_MYSTERY_GIFT, 541
- .equiv BGM_FRLG_DODRIO_BERRY_PICK, 542
- .equiv BGM_FRLG_MT_EMBER, 543
- .equiv BGM_FRLG_TEACHY_TV_EPISODE, 544
- .equiv BGM_FRLG_SEVII_ISLANDS, 545
- .equiv BGM_FRLG_TANOBY_RUINS, 546
- .equiv BGM_FRLG_ISLAND_ONE, 547
- .equiv BGM_FRLG_ISLAND_FOUR, 548
- .equiv BGM_FRLG_ISLAND_SIX, 549
- .equiv BGM_FRLG_FLUTE, 550
- .equiv BGM_FRLG_BATTLE_DEOXYS, 551
- .equiv BGM_FRLG_BATTLE_MEWTWO, 552
- .equiv BGM_FRLG_BATTLE_LEGENDARY, 553
- .equiv BGM_FRLG_LEADER_EYE, 554
- .equiv BGM_FRLG_DEOXYS_EYE, 555
- .equiv BGM_FRLG_TRAINER_TOWER, 556
- .equiv BGM_FRLG_HALL_OF_FAME_PALLET_TOWN, 557
- .equiv BGM_FRLG_TEACHY_TV, 558
-
- .equiv BGM_ROUTE_118, 0x7fff
diff --git a/constants/variables.inc b/constants/variables.inc
deleted file mode 100644
index 47748891b..000000000
--- a/constants/variables.inc
+++ /dev/null
@@ -1,278 +0,0 @@
- .equiv VAR_0x4000, 0x4000
- .equiv VAR_0x4001, 0x4001
- .equiv VAR_0x4002, 0x4002
- .equiv VAR_0x4003, 0x4003
- .equiv VAR_0x4004, 0x4004
- .equiv VAR_0x4005, 0x4005
- .equiv VAR_0x4006, 0x4006
- .equiv VAR_0x4007, 0x4007
- .equiv VAR_0x4008, 0x4008
- .equiv VAR_0x4009, 0x4009
- .equiv VAR_0x400A, 0x400A
- .equiv VAR_0x400B, 0x400B
- .equiv VAR_0x400C, 0x400C
- .equiv VAR_0x400D, 0x400D
- .equiv VAR_0x400E, 0x400E
- .equiv VAR_0x400F, 0x400F
- .equiv VAR_0x4010, 0x4010
- .equiv VAR_0x4011, 0x4011
- .equiv VAR_0x4012, 0x4012
- .equiv VAR_0x4013, 0x4013
- .equiv VAR_0x4014, 0x4014
- .equiv VAR_0x4015, 0x4015
- .equiv VAR_0x4016, 0x4016
- .equiv VAR_0x4017, 0x4017
- .equiv VAR_0x4018, 0x4018
- .equiv VAR_0x4019, 0x4019
- .equiv VAR_0x401A, 0x401A
- .equiv VAR_0x401B, 0x401B
- .equiv VAR_0x401C, 0x401C
- .equiv VAR_0x401D, 0x401D
- .equiv VAR_0x401E, 0x401E
- .equiv VAR_0x401F, 0x401F
- .equiv VAR_RECYCLE_GOODS, 0x4020
- .equiv VAR_REPEL_STEP_COUNT, 0x4021
- .equiv VAR_ICE_STEP_COUNT, 0x4022
- .equiv VAR_FIRST_POKE, 0x4023
- .equiv VAR_MIRAGE_RND_H, 0x4024
- .equiv VAR_MIRAGE_RND_L, 0x4025
- .equiv VAR_SECRET_BASE_MAP, 0x4026
- .equiv VAR_0x4027, 0x4027
- .equiv VAR_0x4028, 0x4028
- .equiv VAR_0x4029, 0x4029
- .equiv VAR_HAPPINESS_STEP_COUNTER, 0x402A
- .equiv VAR_POISON_STEP_COUNTER, 0x402B
- .equiv VAR_RESET_RTC_ENABLE, 0x402C
- .equiv VAR_0x402D, 0x402D
- .equiv VAR_0x402E, 0x402E
- .equiv VAR_0x402F, 0x402F
- .equiv VAR_0x4030, 0x4030
- .equiv VAR_0x4031, 0x4031
- .equiv VAR_0x4032, 0x4032
- .equiv VAR_0x4033, 0x4033
- .equiv VAR_0x4034, 0x4034
- .equiv VAR_0x4035, 0x4035
- .equiv VAR_STORAGE_UNKNOWN, 0x4036
- .equiv VAR_0x4037, 0x4037
- .equiv VAR_0x4038, 0x4038
- .equiv VAR_0x4039, 0x4039
- .equiv VAR_0x403A, 0x403A
- .equiv VAR_0x403B, 0x403B
- .equiv VAR_0x403C, 0x403C
- .equiv VAR_0x403D, 0x403D
- .equiv VAR_ALTERING_CAVE_WILD_SET, 0x403E
- .equiv VAR_0x403F, 0x403F
- .equiv VAR_DAYS, 0x4040
- .equiv VAR_0x4041, 0x4041
- .equiv VAR_0x4042, 0x4042
- .equiv VAR_DEPT_STORE_FLOOR, 0x4043
- .equiv VAR_0x4044, 0x4044
- .equiv VAR_POKELOT_PRIZE, 0x4045
- .equiv VAR_NATIONAL_DEX, 0x4046
- .equiv VAR_SEEDOT_SIZE_RECORD, 0x4047
- .equiv VAR_ASH_GATHER_COUNT, 0x4048
- .equiv VAR_BIRCH_STATE, 0x4049
- .equiv VAR_CRUISE_STEP_COUNT, 0x404A
- .equiv VAR_POKELOT_RND1, 0x404B
- .equiv VAR_POKELOT_RND2, 0x404C
- .equiv VAR_0x404D, 0x404D
- .equiv VAR_0x404E, 0x404E
- .equiv VAR_LOTAD_SIZE_RECORD, 0x404F
- .equiv VAR_0x4050, 0x4050
- .equiv VAR_0x4051, 0x4051
- .equiv VAR_0x4052, 0x4052
- .equiv VAR_0x4053, 0x4053
- .equiv VAR_0x4054, 0x4054
- .equiv VAR_0x4055, 0x4055
- .equiv VAR_0x4056, 0x4056
- .equiv VAR_0x4057, 0x4057
- .equiv VAR_0x4058, 0x4058
- .equiv VAR_0x4059, 0x4059
- .equiv VAR_0x405A, 0x405A
- .equiv VAR_0x405B, 0x405B
- .equiv VAR_0x405C, 0x405C
- .equiv VAR_0x405D, 0x405D
- .equiv VAR_0x405E, 0x405E
- .equiv VAR_0x405F, 0x405F
- .equiv VAR_0x4060, 0x4060
- .equiv VAR_0x4061, 0x4061
- .equiv VAR_0x4062, 0x4062
- .equiv VAR_0x4063, 0x4063
- .equiv VAR_0x4064, 0x4064
- .equiv VAR_0x4065, 0x4065
- .equiv VAR_0x4066, 0x4066
- .equiv VAR_0x4067, 0x4067
- .equiv VAR_0x4068, 0x4068
- .equiv VAR_0x4069, 0x4069
- .equiv VAR_0x406A, 0x406A
- .equiv VAR_0x406B, 0x406B
- .equiv VAR_0x406C, 0x406C
- .equiv VAR_0x406D, 0x406D
- .equiv VAR_0x406E, 0x406E
- .equiv VAR_0x406F, 0x406F
- .equiv VAR_0x4070, 0x4070
- .equiv VAR_0x4071, 0x4071
- .equiv VAR_0x4072, 0x4072
- .equiv VAR_0x4073, 0x4073
- .equiv VAR_0x4074, 0x4074
- .equiv VAR_0x4075, 0x4075
- .equiv VAR_0x4076, 0x4076
- .equiv VAR_0x4077, 0x4077
- .equiv VAR_0x4078, 0x4078
- .equiv VAR_0x4079, 0x4079
- .equiv VAR_0x407A, 0x407A
- .equiv VAR_0x407B, 0x407B
- .equiv VAR_0x407C, 0x407C
- .equiv VAR_0x407D, 0x407D
- .equiv VAR_0x407E, 0x407E
- .equiv VAR_0x407F, 0x407F
- .equiv VAR_0x4080, 0x4080
- .equiv VAR_0x4081, 0x4081
- .equiv VAR_0x4082, 0x4082
- .equiv VAR_0x4083, 0x4083
- .equiv VAR_0x4084, 0x4084
- .equiv VAR_0x4085, 0x4085
- .equiv VAR_0x4086, 0x4086
- .equiv VAR_0x4087, 0x4087
- .equiv VAR_0x4088, 0x4088
- .equiv VAR_0x4089, 0x4089
- .equiv VAR_0x408A, 0x408A
- .equiv VAR_0x408B, 0x408B
- .equiv VAR_0x408C, 0x408C
- .equiv VAR_0x408D, 0x408D
- .equiv VAR_0x408E, 0x408E
- .equiv VAR_0x408F, 0x408F
- .equiv VAR_0x4090, 0x4090
- .equiv VAR_0x4091, 0x4091
- .equiv VAR_0x4092, 0x4092
- .equiv VAR_0x4093, 0x4093
- .equiv VAR_0x4094, 0x4094
- .equiv VAR_0x4095, 0x4095
- .equiv VAR_0x4096, 0x4096
- .equiv VAR_0x4097, 0x4097
- .equiv VAR_0x4098, 0x4098
- .equiv VAR_0x4099, 0x4099
- .equiv VAR_0x409A, 0x409A
- .equiv VAR_0x409B, 0x409B
- .equiv VAR_0x409C, 0x409C
- .equiv VAR_0x409D, 0x409D
- .equiv VAR_0x409E, 0x409E
- .equiv VAR_0x409F, 0x409F
- .equiv VAR_0x40A0, 0x40A0
- .equiv VAR_0x40A1, 0x40A1
- .equiv VAR_0x40A2, 0x40A2
- .equiv VAR_0x40A3, 0x40A3
- .equiv VAR_0x40A4, 0x40A4
- .equiv VAR_0x40A5, 0x40A5
- .equiv VAR_0x40A6, 0x40A6
- .equiv VAR_0x40A7, 0x40A7
- .equiv VAR_0x40A8, 0x40A8
- .equiv VAR_0x40A9, 0x40A9
- .equiv VAR_0x40AA, 0x40AA
- .equiv VAR_0x40AB, 0x40AB
- .equiv VAR_0x40AC, 0x40AC
- .equiv VAR_0x40AD, 0x40AD
- .equiv VAR_0x40AE, 0x40AE
- .equiv VAR_0x40AF, 0x40AF
- .equiv VAR_0x40B0, 0x40B0
- .equiv VAR_0x40B1, 0x40B1
- .equiv VAR_0x40B2, 0x40B2
- .equiv VAR_0x40B3, 0x40B3
- .equiv VAR_PORTHOLE, 0x40B4
- .equiv VAR_0x40B5, 0x40B5
- .equiv VAR_0x40B6, 0x40B6
- .equiv VAR_0x40B7, 0x40B7
- .equiv VAR_0x40B8, 0x40B8
- .equiv VAR_0x40B9, 0x40B9
- .equiv VAR_0x40BA, 0x40BA
- .equiv VAR_0x40BB, 0x40BB
- .equiv VAR_0x40BC, 0x40BC
- .equiv VAR_0x40BD, 0x40BD
- .equiv VAR_0x40BE, 0x40BE
- .equiv VAR_0x40BF, 0x40BF
- .equiv VAR_0x40C0, 0x40C0
- .equiv VAR_0x40C1, 0x40C1
- .equiv VAR_0x40C2, 0x40C2
- .equiv VAR_0x40C3, 0x40C3
- .equiv VAR_0x40C4, 0x40C4
- .equiv VAR_0x40C5, 0x40C5
- .equiv VAR_0x40C6, 0x40C6
- .equiv VAR_0x40C7, 0x40C7
- .equiv VAR_0x40C8, 0x40C8
- .equiv VAR_0x40C9, 0x40C9
- .equiv VAR_0x40CA, 0x40CA
- .equiv VAR_0x40CB, 0x40CB
- .equiv VAR_0x40CC, 0x40CC
- .equiv VAR_0x40CD, 0x40CD
- .equiv VAR_0x40CE, 0x40CE
- .equiv VAR_FRONTIER_FACILITY, 0x40CF
- .equiv VAR_0x40D0, 0x40D0
- .equiv VAR_0x40D1, 0x40D1
- .equiv VAR_0x40D2, 0x40D2
- .equiv VAR_0x40D3, 0x40D3
- .equiv VAR_0x40D4, 0x40D4
- .equiv VAR_0x40D5, 0x40D5
- .equiv VAR_0x40D6, 0x40D6
- .equiv VAR_0x40D7, 0x40D7
- .equiv VAR_0x40D8, 0x40D8
- .equiv VAR_0x40D9, 0x40D9
- .equiv VAR_0x40DA, 0x40DA
- .equiv VAR_0x40DB, 0x40DB
- .equiv VAR_0x40DC, 0x40DC
- .equiv VAR_0x40DD, 0x40DD
- .equiv VAR_0x40DE, 0x40DE
- .equiv VAR_0x40DF, 0x40DF
- .equiv VAR_0x40E0, 0x40E0
- .equiv VAR_0x40E1, 0x40E1
- .equiv VAR_0x40E2, 0x40E2
- .equiv VAR_0x40E3, 0x40E3
- .equiv VAR_0x40E4, 0x40E4
- .equiv VAR_0x40E5, 0x40E5
- .equiv VAR_DAILY_SLOTS, 0x40E6
- .equiv VAR_DAILY_WILDS, 0x40E7
- .equiv VAR_DAILY_BLENDER, 0x40E8
- .equiv VAR_DAILY_PLANTED_BERRIES, 0x40E9
- .equiv VAR_DAILY_PICKED_BERRIES, 0x40EA
- .equiv VAR_DAILY_ROULETTE, 0x40EB
- .equiv VAR_0x40EC, 0x40EC
- .equiv VAR_0x40ED, 0x40ED
- .equiv VAR_0x40EE, 0x40EE
- .equiv VAR_0x40EF, 0x40EF
- .equiv VAR_0x40F0, 0x40F0
- .equiv VAR_DAILY_BP, 0x40F1
- .equiv VAR_0x40F2, 0x40F2
- .equiv VAR_0x40F3, 0x40F3
- .equiv VAR_0x40F4, 0x40F4
- .equiv VAR_0x40F5, 0x40F5
- .equiv VAR_0x40F6, 0x40F6
- .equiv VAR_0x40F7, 0x40F7
- .equiv VAR_0x40F8, 0x40F8
- .equiv VAR_0x40F9, 0x40F9
- .equiv VAR_0x40FA, 0x40FA
- .equiv VAR_0x40FB, 0x40FB
- .equiv VAR_0x40FC, 0x40FC
- .equiv VAR_0x40FD, 0x40FD
- .equiv VAR_0x40FE, 0x40FE
- .equiv VAR_0x40FF, 0x40FF
-
- .equiv VAR_0x8000, 0x8000
- .equiv VAR_0x8001, 0x8001
- .equiv VAR_0x8002, 0x8002
- .equiv VAR_0x8003, 0x8003
- .equiv VAR_0x8004, 0x8004
- .equiv VAR_0x8005, 0x8005
- .equiv VAR_0x8006, 0x8006
- .equiv VAR_0x8007, 0x8007
- .equiv VAR_0x8008, 0x8008
- .equiv VAR_0x8009, 0x8009
- .equiv VAR_0x800A, 0x800A
- .equiv VAR_0x800B, 0x800B
- .equiv VAR_FACING, 0x800C
- .equiv VAR_RESULT, 0x800D
- .equiv VAR_ITEM_ID, 0x800E
- .equiv VAR_LAST_TALKED, 0x800F
- .equiv VAR_CONTEST_RANK, 0x8010
- .equiv VAR_CONTEST_CATEGORY, 0x8011
- .equiv VAR_MON_BOX_ID, 0x8012
- .equiv VAR_MON_BOX_POS, 0x8013
- .equiv VAR_0x8014, 0x8014
diff --git a/data/battle_frontier/battle_frontier_mons.inc b/data/battle_frontier/battle_frontier_mons.inc
index 47ba6b4ef..6b77c8378 100644
--- a/data/battle_frontier/battle_frontier_mons.inc
+++ b/data/battle_frontier/battle_frontier_mons.inc
@@ -960,7 +960,7 @@ gBattleFrontierMons:: @ 85D97BC
.4byte NATURE_DOCILE
@ 137
- .2byte SPECIES_FARFETCH_D
+ .2byte SPECIES_FARFETCHD
.2byte MOVE_SLASH, MOVE_KNOCK_OFF, MOVE_SWORDS_DANCE, MOVE_AGILITY
.byte BATTLE_FRONTIER_ITEM_STICK
.byte F_EV_SPREAD_SP_DEFENSE | F_EV_SPREAD_DEFENSE | F_EV_SPREAD_HP
diff --git a/data/battle_frontier/battle_frontier_trainers.inc b/data/battle_frontier/battle_frontier_trainers.inc
index fc8f29261..fc97ffe89 100644
--- a/data/battle_frontier/battle_frontier_trainers.inc
+++ b/data/battle_frontier/battle_frontier_trainers.inc
@@ -4,389 +4,389 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_YOUNGSTER
.string "BRADY$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word NEVER
- ec_word GOING
- ec_word TO
- ec_word LOSE
- ec_word EXCL
-@ win speech
- ec_word I_AM
- ec_word STRONG
- ec_word AREN_T
- ec_word I
- ec_word QUES
- .2byte -1
-@ loss speech
- ec_word WHAT
- ec_word QUES
- .2byte -1
- ec_word BUT
- ec_word HOW
- ec_word QUES
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_NEVER
+ .2byte EC_WORD_GOING
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_LOSE
+ .2byte EC_WORD_EXCL
+@ win speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_STRONG
+ .2byte EC_WORD_AREN_T
+ .2byte EC_WORD_I
+ .2byte EC_WORD_QUES
+ .2byte -1
+@ loss speech
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_QUES
+ .2byte -1
+ .2byte EC_WORD_BUT
+ .2byte EC_WORD_HOW
+ .2byte EC_WORD_QUES
.4byte gBattleFrontierTrainerMons_Brady
@ 1
.4byte TRAINER_CLASS_YOUNGSTER
.string "CONNER$", 8
@ pre-battle speech
- ec_word LOSING
- ec_word DOESN_T
- ec_word BUG
- ec_word ME
+ .2byte EC_WORD_LOSING
+ .2byte EC_WORD_DOESN_T
+ .2byte EC_WORD_BUG
+ .2byte EC_WORD_ME
.2byte -1
.2byte -1
@ win speech
- ec_word A
- ec_word WIN
- ec_word IS
- ec_word JUST
- ec_word AWESOME
+ .2byte EC_WORD_A
+ .2byte EC_WORD_WIN
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_JUST
+ .2byte EC_WORD_AWESOME
.2byte -1
@ loss speech
- ec_word DARN
- ec_word ELLIPSIS
- ec_word LOSING
- ec_word DOES
- ec_word BUG
- ec_word ME
+ .2byte EC_WORD_DARN
+ .2byte EC_WORD_ELLIPSIS
+ .2byte EC_WORD_LOSING
+ .2byte EC_WORD_DOES
+ .2byte EC_WORD_BUG
+ .2byte EC_WORD_ME
.4byte gBattleFrontierTrainerMons_Conner
@ 2
.4byte TRAINER_CLASS_YOUNGSTER
.string "BRADLEY$", 8
@ pre-battle speech
- ec_word HEY_THERE
- ec_word EXCL
- ec_word YOU_RE
- ec_word MY
- ec_word OPPONENT
- ec_word TODAY
-@ win speech
- ec_word HAHAHA
- ec_word EXCL
- .2byte -1
- ec_word SEE_YA
- ec_word LATER
- ec_word EXCL
-@ loss speech
- ec_word TOMORROW
- ec_word IS
- ec_word WHEN
- ec_word WE
- ec_word REALLY
- ec_word BATTLE
+ .2byte EC_WORD_HEY_THERE
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_OPPONENT
+ .2byte EC_WORD_TODAY
+@ win speech
+ .2byte EC_WORD_HAHAHA
+ .2byte EC_WORD_EXCL
+ .2byte -1
+ .2byte EC_WORD_SEE_YA
+ .2byte EC_WORD_LATER
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_TOMORROW
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_WHEN
+ .2byte EC_WORD_WE
+ .2byte EC_WORD_REALLY
+ .2byte EC_WORD_BATTLE
.4byte gBattleFrontierTrainerMons_Bradley
@ 3
.4byte TRAINER_CLASS_LASS
.string "CYBIL$", 8
@ pre-battle speech
- ec_word YOU_RE
- ec_word REALLY
- ec_word NOT_VERY
- ec_word SCARY
- ec_word AT
- ec_word ALL
-@ win speech
- ec_word IT_S
- ec_word SAD
- ec_word TO
- ec_word SEE
- ec_word YOU
- ec_move2 STRUGGLE
-@ loss speech
- ec_word THIS
- ec_word CAN_T
- ec_word BE
- ec_word HAPPENING
- ec_word TO_ME
- ec_word EXCL
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_REALLY
+ .2byte EC_WORD_NOT_VERY
+ .2byte EC_WORD_SCARY
+ .2byte EC_WORD_AT
+ .2byte EC_WORD_ALL
+@ win speech
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_SAD
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_SEE
+ .2byte EC_WORD_YOU
+ .2byte EC_MOVE2(STRUGGLE)
+@ loss speech
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_CAN_T
+ .2byte EC_WORD_BE
+ .2byte EC_WORD_HAPPENING
+ .2byte EC_WORD_TO_ME
+ .2byte EC_WORD_EXCL
.4byte gBattleFrontierTrainerMons_Cybil
@ 4
.4byte TRAINER_CLASS_LASS
.string "RODETTE$", 8
@ pre-battle speech
- ec_word OH
- ec_word THIS
- ec_word IS
- ec_word SO
- ec_word EXCITING
- ec_word EXCL
-@ win speech
- ec_word IT_S
- ec_word INCREDIBLE
- ec_word HOW
- ec_word STRONG
- ec_word I_AM
- ec_word EXCL
-@ loss speech
- ec_word OH_DEAR
- ec_word ELLIPSIS
- ec_word I_AM
- ec_word JUST
- ec_word NO
- ec_word GOOD
+ .2byte EC_WORD_OH
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_EXCITING
+ .2byte EC_WORD_EXCL
+@ win speech
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_INCREDIBLE
+ .2byte EC_WORD_HOW
+ .2byte EC_WORD_STRONG
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_OH_DEAR
+ .2byte EC_WORD_ELLIPSIS
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_JUST
+ .2byte EC_WORD_NO
+ .2byte EC_WORD_GOOD
.4byte gBattleFrontierTrainerMons_Rodette
@ 5
.4byte TRAINER_CLASS_LASS
.string "PEGGY$", 8
@ pre-battle speech
- ec_word GET
- ec_word READY
- ec_word TO
- ec_word BE
- ec_word DESTROYED
- ec_word EXCL
-@ win speech
- ec_word HAHAHA
- ec_word EXCL_EXCL
- .2byte -1
- ec_word I_AM
- ec_word LOLLING
- ec_word EXCL
-@ loss speech
- ec_word I_AM
- ec_word FEELING
- ec_word SAD
- ec_word THANKS
- ec_word TO
- ec_word YOU
+ .2byte EC_WORD_GET
+ .2byte EC_WORD_READY
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_BE
+ .2byte EC_WORD_DESTROYED
+ .2byte EC_WORD_EXCL
+@ win speech
+ .2byte EC_WORD_HAHAHA
+ .2byte EC_WORD_EXCL_EXCL
+ .2byte -1
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_LOLLING
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_FEELING
+ .2byte EC_WORD_SAD
+ .2byte EC_WORD_THANKS
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_YOU
.4byte gBattleFrontierTrainerMons_Peggy
@ 6
.4byte TRAINER_CLASS_SCHOOL_KID_1
.string "KEITH$", 8
@ pre-battle speech
- ec_word I
- ec_word DON_T
- ec_word JUST
- ec_word STUDY
- ec_word YOU
- ec_word KNOW
-@ win speech
- ec_word YOU
- ec_word DON_T
- ec_word STUDY
- ec_word ENOUGH
- ec_word ELLIPSIS
- .2byte -1
-@ loss speech
- ec_word I
- ec_word NEED
- ec_word TO
- ec_word STUDY
- ec_word MORE
- ec_word ELLIPSIS
+ .2byte EC_WORD_I
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_JUST
+ .2byte EC_WORD_STUDY
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_KNOW
+@ win speech
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_STUDY
+ .2byte EC_WORD_ENOUGH
+ .2byte EC_WORD_ELLIPSIS
+ .2byte -1
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_NEED
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_STUDY
+ .2byte EC_WORD_MORE
+ .2byte EC_WORD_ELLIPSIS
.4byte gBattleFrontierTrainerMons_Keith
@ 7
.4byte TRAINER_CLASS_SCHOOL_KID_1
.string "GRAYSON$", 8
@ pre-battle speech
- ec_word A
- ec_word POKEMON
- ec_word BATTLE
- ec_word ISN_T
- ec_word CHILD_S_PLAY
- ec_word EXCL
-@ win speech
- ec_word YOU_RE
- ec_word DONE
- ec_word AREN_T
- ec_word YOU
- ec_word QUES
- .2byte -1
-@ loss speech
- ec_word WE
- ec_word WERE
- ec_word LIKE
- ec_word TOYS
- ec_word TO
- ec_word YOU
+ .2byte EC_WORD_A
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_BATTLE
+ .2byte EC_WORD_ISN_T
+ .2byte EC_WORD_CHILD_S_PLAY
+ .2byte EC_WORD_EXCL
+@ win speech
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_DONE
+ .2byte EC_WORD_AREN_T
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_QUES
+ .2byte -1
+@ loss speech
+ .2byte EC_WORD_WE
+ .2byte EC_WORD_WERE
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_TOYS
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_YOU
.4byte gBattleFrontierTrainerMons_Grayson
@ 8
.4byte TRAINER_CLASS_SCHOOL_KID_1
.string "GLENN$", 8
@ pre-battle speech
- ec_word I
- ec_word WOULD
- ec_word BE
- ec_word COOL
- ec_word IF_I_WIN
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WOULD
+ .2byte EC_WORD_BE
+ .2byte EC_WORD_COOL
+ .2byte EC_WORD_IF_I_WIN
.2byte -1
@ win speech
- ec_word COOL
- ec_word EXCL
+ .2byte EC_WORD_COOL
+ .2byte EC_WORD_EXCL
.2byte -1
- ec_word THAT_S
- ec_word WHAT
- ec_word I_AM
+ .2byte EC_WORD_THAT_S
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_I_AM
@ loss speech
- ec_word I_AM
- ec_word NOT
- ec_word GOING
- ec_word TO
- ec_word BE
- ec_word COOL
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_GOING
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_BE
+ .2byte EC_WORD_COOL
.4byte gBattleFrontierTrainerMons_Glenn
@ 9
.4byte TRAINER_CLASS_SCHOOL_KID_2
.string "LILIANA$", 8
@ pre-battle speech
- ec_word I
- ec_word WON_T
- ec_word GIVE_UP
- ec_word UNTIL
- ec_word I
- ec_word WIN
-@ win speech
- ec_word THERE
- ec_word IS
- ec_word NO
- ec_word SURRENDER
- ec_word IN
- ec_word ME
-@ loss speech
- ec_word THAT_S
- ec_word IT
- ec_word ELLIPSIS
- ec_word I
- ec_word GIVE_UP
- ec_word ELLIPSIS
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WON_T
+ .2byte EC_WORD_GIVE_UP
+ .2byte EC_WORD_UNTIL
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WIN
+@ win speech
+ .2byte EC_WORD_THERE
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_NO
+ .2byte EC_WORD_SURRENDER
+ .2byte EC_WORD_IN
+ .2byte EC_WORD_ME
+@ loss speech
+ .2byte EC_WORD_THAT_S
+ .2byte EC_WORD_IT
+ .2byte EC_WORD_ELLIPSIS
+ .2byte EC_WORD_I
+ .2byte EC_WORD_GIVE_UP
+ .2byte EC_WORD_ELLIPSIS
.4byte gBattleFrontierTrainerMons_Liliana
@ 10
.4byte TRAINER_CLASS_SCHOOL_KID_2
.string "ELISE$", 8
@ pre-battle speech
- ec_word MY
- ec_word STRATEGY
- ec_word IS
- ec_word FROM
- ec_word MY
- ec_word FATHER
-@ win speech
- ec_word I
- ec_word WIN
- ec_word EXCL
- ec_word FATHER
- ec_word I_VE
- ec_word WON
-@ loss speech
- ec_word FORGIVE
- ec_word ME
- ec_word FATHER
- ec_word FOR
- ec_word I_VE
- ec_word LOST
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_STRATEGY
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_FROM
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_FATHER
+@ win speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WIN
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_FATHER
+ .2byte EC_WORD_I_VE
+ .2byte EC_WORD_WON
+@ loss speech
+ .2byte EC_WORD_FORGIVE
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_FATHER
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_I_VE
+ .2byte EC_WORD_LOST
.4byte gBattleFrontierTrainerMons_Elise
@ 11
.4byte TRAINER_CLASS_SCHOOL_KID_2
.string "ZOEY$", 8
@ pre-battle speech
- ec_word PLEASE
- ec_word BATTLE
- ec_word LIKE
- ec_word YOU
- ec_word MEAN
- ec_word IT
-@ win speech
- ec_word THANK_YOU
- ec_word EXCL_EXCL
- .2byte -1
- ec_word THANK_YOU
- ec_word SO
- ec_word MUCH
-@ loss speech
- ec_word WERE
- ec_word YOU
- ec_word REALLY
- ec_word BEING
- ec_word SERIOUS
- ec_word QUES
+ .2byte EC_WORD_PLEASE
+ .2byte EC_WORD_BATTLE
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_MEAN
+ .2byte EC_WORD_IT
+@ win speech
+ .2byte EC_WORD_THANK_YOU
+ .2byte EC_WORD_EXCL_EXCL
+ .2byte -1
+ .2byte EC_WORD_THANK_YOU
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_MUCH
+@ loss speech
+ .2byte EC_WORD_WERE
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_REALLY
+ .2byte EC_WORD_BEING
+ .2byte EC_WORD_SERIOUS
+ .2byte EC_WORD_QUES
.4byte gBattleFrontierTrainerMons_Zoey
@ 12
.4byte TRAINER_CLASS_RICH_BOY
.string "MANUEL$", 8
@ pre-battle speech
- ec_word ME
- ec_word LOSE
- ec_word QUES
- ec_word THAT_S
- ec_word PREPOSTEROUS
- ec_word EXCL
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_LOSE
+ .2byte EC_WORD_QUES
+ .2byte EC_WORD_THAT_S
+ .2byte EC_WORD_PREPOSTEROUS
+ .2byte EC_WORD_EXCL
@ win speech
- ec_word NATURALLY
- ec_word I
- ec_word WIN
+ .2byte EC_WORD_NATURALLY
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WIN
.2byte -1
.2byte -1
.2byte -1
@ loss speech
- ec_word WAAAH
- ec_word EXCL
+ .2byte EC_WORD_WAAAH
+ .2byte EC_WORD_EXCL
.2byte -1
- ec_word I
- ec_word LOST
- ec_word MOTHER
+ .2byte EC_WORD_I
+ .2byte EC_WORD_LOST
+ .2byte EC_WORD_MOTHER
.4byte gBattleFrontierTrainerMons_Manuel
@ 13
.4byte TRAINER_CLASS_RICH_BOY
.string "RUSS$", 8
@ pre-battle speech
- ec_word THEY
- ec_word ALL
- ec_word WANT
- ec_word MY
- ec_word FABULOUS
- ec_word POKEMON
-@ win speech
- ec_word I
- ec_word WILL
- ec_word HAVE
- ec_word A
- ec_word POKEMON
- ec_word PARTY
-@ loss speech
- ec_word HOW
- ec_word COULD
- ec_word YOU
- ec_word DO
- ec_word THAT
- ec_word QUES
+ .2byte EC_WORD_THEY
+ .2byte EC_WORD_ALL
+ .2byte EC_WORD_WANT
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_FABULOUS
+ .2byte EC_WORD_POKEMON
+@ win speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_A
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_PARTY
+@ loss speech
+ .2byte EC_WORD_HOW
+ .2byte EC_WORD_COULD
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_DO
+ .2byte EC_WORD_THAT
+ .2byte EC_WORD_QUES
.4byte gBattleFrontierTrainerMons_Russ
@ 14
.4byte TRAINER_CLASS_RICH_BOY
.string "DUSTIN$", 8
@ pre-battle speech
- ec_word I
- ec_word REALLY
- ec_word LIKE
- ec_word COOL
- ec_word POKEMON
+ .2byte EC_WORD_I
+ .2byte EC_WORD_REALLY
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_COOL
+ .2byte EC_WORD_POKEMON
.2byte -1
@ win speech
- ec_word I
- ec_word LIKE
- ec_word MYSELF
- ec_word WHEN_I_WIN
- ec_word EXCL
+ .2byte EC_WORD_I
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_MYSELF
+ .2byte EC_WORD_WHEN_I_WIN
+ .2byte EC_WORD_EXCL
.2byte -1
@ loss speech
- ec_word I
- ec_word LIKE
- ec_word MYSELF
- ec_word IF_I_LOSE
- ec_word TOO
+ .2byte EC_WORD_I
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_MYSELF
+ .2byte EC_WORD_IF_I_LOSE
+ .2byte EC_WORD_TOO
.2byte -1
.4byte gBattleFrontierTrainerMons_Dustin
@@ -394,50 +394,50 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_LADY
.string "TINA$", 8
@ pre-battle speech
- ec_word IF_I_WIN
- ec_word YOU
- ec_word CAN
- ec_word HAVE
- ec_word A
- ec_move2 SWEET_KISS
-@ win speech
- ec_word HERE_IT_IS
- ec_word YOUR
- ec_move2 SWEET_KISS
- ec_word FROM
- ec_word MY
- ec_pokemon2 JYNX
-@ loss speech
- ec_word YOU
- ec_word WANT
- ec_word A
- ec_move1 SWIFT
- ec_move2 MEGA_KICK
- ec_word INSTEAD
+ .2byte EC_WORD_IF_I_WIN
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_CAN
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_A
+ .2byte EC_MOVE2(SWEET_KISS)
+@ win speech
+ .2byte EC_WORD_HERE_IT_IS
+ .2byte EC_WORD_YOUR
+ .2byte EC_MOVE2(SWEET_KISS)
+ .2byte EC_WORD_FROM
+ .2byte EC_WORD_MY
+ .2byte EC_POKEMON2(JYNX)
+@ loss speech
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_WANT
+ .2byte EC_WORD_A
+ .2byte EC_MOVE(SWIFT)
+ .2byte EC_MOVE2(MEGA_KICK)
+ .2byte EC_WORD_INSTEAD
.4byte gBattleFrontierTrainerMons_Tina
@ 16
.4byte TRAINER_CLASS_LADY
.string "GILLIAN$", 8
@ pre-battle speech
- ec_word THE
- ec_word GOURMET
- ec_word THING
- ec_word IS
- ec_word SO
- ec_word YESTERDAY
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_GOURMET
+ .2byte EC_WORD_THING
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_YESTERDAY
@ win speech
- ec_word POKEMON
- ec_word NEVER
- ec_word GO
- ec_word OUT
- ec_word OF
- ec_word FASHION
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_NEVER
+ .2byte EC_WORD_GO
+ .2byte EC_WORD_OUT
+ .2byte EC_WORD_OF
+ .2byte EC_WORD_FASHION
@ loss speech
- ec_word LOSING
- ec_word DOESN_T
- ec_word DISAPPOINT
- ec_word ME
+ .2byte EC_WORD_LOSING
+ .2byte EC_WORD_DOESN_T
+ .2byte EC_WORD_DISAPPOINT
+ .2byte EC_WORD_ME
.2byte -1
.2byte -1
.4byte gBattleFrontierTrainerMons_Gillian
@@ -446,103 +446,103 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_LADY
.string "ZOE$", 8
@ pre-battle speech
- ec_word I
- ec_word HAVEN_T
- ec_word A
- ec_word WORRY
- ec_word AT
- ec_word ALL
-@ win speech
- ec_word LIFE
- ec_word IS
- ec_word ALWAYS
- ec_word GOOD
- ec_word TO_ME
- .2byte -1
-@ loss speech
- ec_word I
- ec_word WORRY
- ec_word ABOUT
- ec_word MY
- ec_word POKEMON
- ec_word SKILL
+ .2byte EC_WORD_I
+ .2byte EC_WORD_HAVEN_T
+ .2byte EC_WORD_A
+ .2byte EC_WORD_WORRY
+ .2byte EC_WORD_AT
+ .2byte EC_WORD_ALL
+@ win speech
+ .2byte EC_WORD_LIFE
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_ALWAYS
+ .2byte EC_WORD_GOOD
+ .2byte EC_WORD_TO_ME
+ .2byte -1
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WORRY
+ .2byte EC_WORD_ABOUT
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_SKILL
.4byte gBattleFrontierTrainerMons_Zoe
@ 18
.4byte TRAINER_CLASS_CAMPER
.string "CHEN$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word TOTALLY
- ec_word READY
- ec_word TO
- ec_word ROCK
- ec_word TODAY
-@ win speech
- ec_word I_AM
- ec_word READY
- ec_word TO
- ec_word GO
- ec_word ON
- ec_word EXCL
-@ loss speech
- ec_word I_VE
- ec_word LOST
- ec_word MY
- ec_move1 FOCUS_ENERGY
- ec_word AND
- ec_word TOUGHNESS
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_TOTALLY
+ .2byte EC_WORD_READY
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_ROCK
+ .2byte EC_WORD_TODAY
+@ win speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_READY
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_GO
+ .2byte EC_WORD_ON
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_I_VE
+ .2byte EC_WORD_LOST
+ .2byte EC_WORD_MY
+ .2byte EC_MOVE(FOCUS_ENERGY)
+ .2byte EC_WORD_AND
+ .2byte EC_WORD_TOUGHNESS
.4byte gBattleFrontierTrainerMons_Chen
@ 19
.4byte TRAINER_CLASS_CAMPER
.string "AL$", 8
@ pre-battle speech
- ec_word YOUR
- ec_word LOOK
- ec_word SAYS
- ec_word YOU_RE
- ec_word REALLY
- ec_word TOUGH
-@ win speech
- ec_word IT_S
- ec_word ME
- ec_word WHO_IS
- ec_word REALLY
- ec_word TOUGH
- .2byte -1
-@ loss speech
- ec_word I_AM
- ec_word RIGHT
- ec_word EXCL
- ec_word YOU_RE
- ec_word REALLY
- ec_word TOUGH
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_LOOK
+ .2byte EC_WORD_SAYS
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_REALLY
+ .2byte EC_WORD_TOUGH
+@ win speech
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_WHO_IS
+ .2byte EC_WORD_REALLY
+ .2byte EC_WORD_TOUGH
+ .2byte -1
+@ loss speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_RIGHT
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_REALLY
+ .2byte EC_WORD_TOUGH
.4byte gBattleFrontierTrainerMons_Al
@ 20
.4byte TRAINER_CLASS_CAMPER
.string "MITCH$", 8
@ pre-battle speech
- ec_word MOTHER
- ec_word NATURE
- ec_word IS
- ec_word MY
- ec_word ALLY
- ec_word EXCL
-@ win speech
- ec_word WAS
- ec_word THAT
- ec_word ENOUGH
- ec_word FOR
- ec_word YOU
- ec_word QUES
-@ loss speech
- ec_word MOTHER
- ec_word NATURE
- ec_word DIDN_T
- ec_word LET_ME_WIN
- ec_word QUES
+ .2byte EC_WORD_MOTHER
+ .2byte EC_WORD_NATURE
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_ALLY
+ .2byte EC_WORD_EXCL
+@ win speech
+ .2byte EC_WORD_WAS
+ .2byte EC_WORD_THAT
+ .2byte EC_WORD_ENOUGH
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_QUES
+@ loss speech
+ .2byte EC_WORD_MOTHER
+ .2byte EC_WORD_NATURE
+ .2byte EC_WORD_DIDN_T
+ .2byte EC_WORD_LET_ME_WIN
+ .2byte EC_WORD_QUES
.2byte -1
.4byte gBattleFrontierTrainerMons_Mitch
@@ -550,25 +550,25 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_PICNICKER
.string "ANNE$", 8
@ pre-battle speech
- ec_word I
- ec_word CAN_T
- ec_word WAIT
- ec_word LET_S
- ec_word BATTLE
- ec_word NOW
+ .2byte EC_WORD_I
+ .2byte EC_WORD_CAN_T
+ .2byte EC_WORD_WAIT
+ .2byte EC_WORD_LET_S
+ .2byte EC_WORD_BATTLE
+ .2byte EC_WORD_NOW
@ win speech
- ec_word MY
- ec_word HAPPINESS
- ec_word IS
- ec_word OVERWHELMING
- ec_word EXCL
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_HAPPINESS
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_OVERWHELMING
+ .2byte EC_WORD_EXCL
.2byte -1
@ loss speech
- ec_word YOU_VE
- ec_word DESTROYED
- ec_word MY
- ec_word HAPPINESS
- ec_word ELLIPSIS
+ .2byte EC_WORD_YOU_VE
+ .2byte EC_WORD_DESTROYED
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_HAPPINESS
+ .2byte EC_WORD_ELLIPSIS
.2byte -1
.4byte gBattleFrontierTrainerMons_Anne
@@ -576,207 +576,207 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_PICNICKER
.string "ALIZE$", 8
@ pre-battle speech
- ec_word CUTE
- ec_word AND
- ec_word AWFULLY
- ec_word STRONG
- ec_word THAT_S
- ec_word ME
-@ win speech
- ec_word YUP
- ec_word I_AM
- ec_word CUTE
- ec_word AND
- ec_word AWFULLY
- ec_word STRONG
-@ loss speech
- ec_word I_AM
- ec_word WEAK
- ec_word ELLIPSIS
- ec_word BUT
- ec_word I_AM
- ec_word CUTE
+ .2byte EC_WORD_CUTE
+ .2byte EC_WORD_AND
+ .2byte EC_WORD_AWFULLY
+ .2byte EC_WORD_STRONG
+ .2byte EC_WORD_THAT_S
+ .2byte EC_WORD_ME
+@ win speech
+ .2byte EC_WORD_YUP
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_CUTE
+ .2byte EC_WORD_AND
+ .2byte EC_WORD_AWFULLY
+ .2byte EC_WORD_STRONG
+@ loss speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_WEAK
+ .2byte EC_WORD_ELLIPSIS
+ .2byte EC_WORD_BUT
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_CUTE
.4byte gBattleFrontierTrainerMons_Alize
@ 23
.4byte TRAINER_CLASS_PICNICKER
.string "LAUREN$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word OLD
- ec_word BUT
- ec_word I_AM
- ec_word ALSO
- ec_word GOOD
-@ win speech
- ec_word I
- ec_word SAID
- ec_word I_WAS
- ec_word OLD
- ec_word BUT
- ec_word GOOD
-@ loss speech
- ec_word WHAT
- ec_word A
- ec_word WEIRD
- ec_word DREAM
- ec_word THAT_WAS
- ec_word EXCL
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_OLD
+ .2byte EC_WORD_BUT
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_ALSO
+ .2byte EC_WORD_GOOD
+@ win speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_SAID
+ .2byte EC_WORD_I_WAS
+ .2byte EC_WORD_OLD
+ .2byte EC_WORD_BUT
+ .2byte EC_WORD_GOOD
+@ loss speech
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_A
+ .2byte EC_WORD_WEIRD
+ .2byte EC_WORD_DREAM
+ .2byte EC_WORD_THAT_WAS
+ .2byte EC_WORD_EXCL
.4byte gBattleFrontierTrainerMons_Lauren
@ 24
.4byte TRAINER_CLASS_TUBER_2
.string "KIPP$", 8
@ pre-battle speech
- ec_word IF_I_WIN
- ec_word I_AM
- ec_word GOING
- ec_word TO
- ec_word GO
- ec_move2 SURF
-@ win speech
- ec_word YEAH
- ec_word EXCL
- ec_word I_AM
- ec_word OFF
- ec_word TO
- ec_move2 SURF
-@ loss speech
- ec_word OH
- ec_word NO
- ec_word EXCL
- ec_word A
- ec_move1 WHIRLPOOL
- ec_word EXCL
+ .2byte EC_WORD_IF_I_WIN
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_GOING
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_GO
+ .2byte EC_MOVE2(SURF)
+@ win speech
+ .2byte EC_WORD_YEAH
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_OFF
+ .2byte EC_WORD_TO
+ .2byte EC_MOVE2(SURF)
+@ loss speech
+ .2byte EC_WORD_OH
+ .2byte EC_WORD_NO
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_A
+ .2byte EC_MOVE(WHIRLPOOL)
+ .2byte EC_WORD_EXCL
.4byte gBattleFrontierTrainerMons_Kipp
@ 25
.4byte TRAINER_CLASS_TUBER_2
.string "JASON$", 8
@ pre-battle speech
- ec_word TEACH
- ec_word ME
- ec_word A
- ec_word GOOD
- ec_word STRATEGY
+ .2byte EC_WORD_TEACH
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_A
+ .2byte EC_WORD_GOOD
+ .2byte EC_WORD_STRATEGY
.2byte -1
@ win speech
- ec_word THAT_WAS
- ec_word YOUR
- ec_word GOOD
- ec_word STRATEGY
- ec_word QUES_EXCL
+ .2byte EC_WORD_THAT_WAS
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_GOOD
+ .2byte EC_WORD_STRATEGY
+ .2byte EC_WORD_QUES_EXCL
.2byte -1
@ loss speech
- ec_word WOW
- ec_word THAT
- ec_word IS
- ec_word AN
- ec_word AWESOME
- ec_word STRATEGY
+ .2byte EC_WORD_WOW
+ .2byte EC_WORD_THAT
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_AN
+ .2byte EC_WORD_AWESOME
+ .2byte EC_WORD_STRATEGY
.4byte gBattleFrontierTrainerMons_Jason
@ 26
.4byte TRAINER_CLASS_TUBER_2
.string "JOHN$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word A
- ec_word PRETTY
- ec_word NEW
- ec_word TRAINER
- .2byte -1
-@ win speech
- ec_word I_AM
- ec_word NEW
- ec_word BUT
- ec_word I
- ec_word WON
- ec_word EXCL
-@ loss speech
- ec_word I_AM
- ec_word NEW
- ec_word SO
- ec_word WHAT
- ec_word IF_I_LOSE
- ec_word QUES
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_A
+ .2byte EC_WORD_PRETTY
+ .2byte EC_WORD_NEW
+ .2byte EC_WORD_TRAINER
+ .2byte -1
+@ win speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_NEW
+ .2byte EC_WORD_BUT
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WON
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_NEW
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_IF_I_LOSE
+ .2byte EC_WORD_QUES
.4byte gBattleFrontierTrainerMons_John
@ 27
.4byte TRAINER_CLASS_TUBER_1
.string "ANN$", 8
@ pre-battle speech
- ec_word IT_S
- ec_word SO
- ec_word EXCITING
- ec_word IT
- ec_word REALLY
- ec_word IS
-@ win speech
- ec_word I_AM
- ec_word SO
- ec_word HAPPY
- ec_word I
- ec_word CAN
- ec_word CRY
-@ loss speech
- ec_word I_AM
- ec_word SO
- ec_word SAD
- ec_word I
- ec_word WILL
- ec_word CRY
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_EXCITING
+ .2byte EC_WORD_IT
+ .2byte EC_WORD_REALLY
+ .2byte EC_WORD_IS
+@ win speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_HAPPY
+ .2byte EC_WORD_I
+ .2byte EC_WORD_CAN
+ .2byte EC_WORD_CRY
+@ loss speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_SAD
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_CRY
.4byte gBattleFrontierTrainerMons_Ann
@ 28
.4byte TRAINER_CLASS_TUBER_1
.string "EILEEN$", 8
@ pre-battle speech
- ec_word LET_S
- ec_word PRETEND
- ec_word I_AM
- ec_word AN
- ec_word ADULT
- ec_word OK_QUES
-@ win speech
- ec_word SO
- ec_word THIS
- ec_word IS
- ec_word AN
- ec_word ADULT
- ec_word FEELING
-@ loss speech
- ec_word AN
- ec_word ADULT
- ec_word CAN_T
- ec_word BEAT
- ec_word YOU
- ec_word QUES
+ .2byte EC_WORD_LET_S
+ .2byte EC_WORD_PRETEND
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_AN
+ .2byte EC_WORD_ADULT
+ .2byte EC_WORD_OK_QUES
+@ win speech
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_AN
+ .2byte EC_WORD_ADULT
+ .2byte EC_WORD_FEELING
+@ loss speech
+ .2byte EC_WORD_AN
+ .2byte EC_WORD_ADULT
+ .2byte EC_WORD_CAN_T
+ .2byte EC_WORD_BEAT
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_QUES
.4byte gBattleFrontierTrainerMons_Eileen
@ 29
.4byte TRAINER_CLASS_TUBER_1
.string "CARLIE$", 8
@ pre-battle speech
- ec_word MY
- ec_word SUMMER
- ec_word VACATION
- ec_word IS
- ec_word FOR
- ec_word POKEMON
-@ win speech
- ec_word MY
- ec_word SUMMER
- ec_word VACATION
- ec_word WILL
- ec_word BE
- ec_word AWESOME
-@ loss speech
- ec_word I
- ec_word CAN_T_WIN
- ec_word LIKE
- ec_word THIS
- ec_word ELLIPSIS
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_SUMMER
+ .2byte EC_WORD_VACATION
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_POKEMON
+@ win speech
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_SUMMER
+ .2byte EC_WORD_VACATION
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_BE
+ .2byte EC_WORD_AWESOME
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_CAN_T_WIN
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_ELLIPSIS
.2byte -1
.4byte gBattleFrontierTrainerMons_Carlie
@@ -784,389 +784,389 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_SWIMMER_M
.string "GORDON$", 8
@ pre-battle speech
- ec_word VICTORY
- ec_word WILL
- ec_word COME
- ec_word TO_ME
- ec_word EXCL
+ .2byte EC_WORD_VICTORY
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_COME
+ .2byte EC_WORD_TO_ME
+ .2byte EC_WORD_EXCL
.2byte -1
@ win speech
- ec_word OH_YEAH
- ec_word EXCL
+ .2byte EC_WORD_OH_YEAH
+ .2byte EC_WORD_EXCL
.2byte -1
- ec_word I
- ec_word REALLY
- ec_word WON
+ .2byte EC_WORD_I
+ .2byte EC_WORD_REALLY
+ .2byte EC_WORD_WON
@ loss speech
- ec_word NOTHING
- ec_word IS
- ec_word WORKING
- ec_word OUT
- ec_word FOR
- ec_word ME
+ .2byte EC_WORD_NOTHING
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_WORKING
+ .2byte EC_WORD_OUT
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_ME
.4byte gBattleFrontierTrainerMons_Gordon
@ 31
.4byte TRAINER_CLASS_SWIMMER_M
.string "AYDEN$", 8
@ pre-battle speech
- ec_word COME_ON
- ec_word I
- ec_word NEED
- ec_word A
- ec_word HOT
- ec_word BATTLE
-@ win speech
- ec_word I
- ec_word NEED
- ec_word WATER
- ec_word TO
- ec_word COOL
- ec_word DOWN
-@ loss speech
- ec_word YOU
- ec_word HAVE
- ec_word ME
- ec_word FEELING
- ec_word ICE
- ec_word COLD
+ .2byte EC_WORD_COME_ON
+ .2byte EC_WORD_I
+ .2byte EC_WORD_NEED
+ .2byte EC_WORD_A
+ .2byte EC_WORD_HOT
+ .2byte EC_WORD_BATTLE
+@ win speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_NEED
+ .2byte EC_WORD_WATER
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_COOL
+ .2byte EC_WORD_DOWN
+@ loss speech
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_FEELING
+ .2byte EC_WORD_ICE
+ .2byte EC_WORD_COLD
.4byte gBattleFrontierTrainerMons_Ayden
@ 32
.4byte TRAINER_CLASS_SWIMMER_M
.string "MARCO$", 8
@ pre-battle speech
- ec_word I
- ec_move2 SURF
- ec_word IN
- ec_word THE
- ec_word WINTER
- ec_word TOO
-@ win speech
- ec_word I
- ec_word WILL
- ec_word GO
- ec_move2 SURF
- ec_word RIGHT
- ec_word NOW
-@ loss speech
- ec_word I
- ec_word WILL
- ec_move2 BEAT_UP
- ec_word MY
- ec_move2 SURF
- ec_word BOARD
+ .2byte EC_WORD_I
+ .2byte EC_MOVE2(SURF)
+ .2byte EC_WORD_IN
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_WINTER
+ .2byte EC_WORD_TOO
+@ win speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_GO
+ .2byte EC_MOVE2(SURF)
+ .2byte EC_WORD_RIGHT
+ .2byte EC_WORD_NOW
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WILL
+ .2byte EC_MOVE2(BEAT_UP)
+ .2byte EC_WORD_MY
+ .2byte EC_MOVE2(SURF)
+ .2byte EC_WORD_BOARD
.4byte gBattleFrontierTrainerMons_Marco
@ 33
.4byte TRAINER_CLASS_SWIMMER_F
.string "CIERRA$", 8
@ pre-battle speech
- ec_word I
- ec_word LIKE
- ec_word TO
- ec_word SYNCHRONIZE
- ec_word MY
- ec_word SWIFT_SWIM
-@ win speech
- ec_word MY
- ec_word POKEMON
- ec_word SYNCHRONIZE
- ec_word WITH
- ec_word ME
- .2byte -1
-@ loss speech
- ec_word I
- ec_word NEED
- ec_word TO
- ec_word SYNCHRONIZE
- ec_word BETTER
- ec_word ELLIPSIS
+ .2byte EC_WORD_I
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_SYNCHRONIZE
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_SWIFT_SWIM
+@ win speech
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_SYNCHRONIZE
+ .2byte EC_WORD_WITH
+ .2byte EC_WORD_ME
+ .2byte -1
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_NEED
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_SYNCHRONIZE
+ .2byte EC_WORD_BETTER
+ .2byte EC_WORD_ELLIPSIS
.4byte gBattleFrontierTrainerMons_Cierra
@ 34
.4byte TRAINER_CLASS_SWIMMER_F
.string "MARCY$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word A
- ec_word KNOCKOUT
- ec_word YOU
- ec_word CAN_T_WIN
- ec_word EXCL
-@ win speech
- ec_word AFTER
- ec_word ALL
- ec_word I_AM
- ec_word A
- ec_word KNOCKOUT
- ec_word EXCL
-@ loss speech
- ec_word THAT_S
- ec_word NOT
- ec_word THE
- ec_word KNOCKOUT
- ec_word I
- ec_word MEAN
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_A
+ .2byte EC_WORD_KNOCKOUT
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_CAN_T_WIN
+ .2byte EC_WORD_EXCL
+@ win speech
+ .2byte EC_WORD_AFTER
+ .2byte EC_WORD_ALL
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_A
+ .2byte EC_WORD_KNOCKOUT
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_THAT_S
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_KNOCKOUT
+ .2byte EC_WORD_I
+ .2byte EC_WORD_MEAN
.4byte gBattleFrontierTrainerMons_Marcy
@ 35
.4byte TRAINER_CLASS_SWIMMER_F
.string "KATHY$", 8
@ pre-battle speech
- ec_word I_VE
- ec_word WON
- ec_word EVERY
- ec_word MATCH
- ec_word TODAY
- ec_word EXCL
-@ win speech
- ec_word IT_S
- ec_word SO
- ec_word GREAT
- ec_word TO
- ec_word WIN
- ec_word EXCL
-@ loss speech
- ec_word HUH_QUES
- ec_word I
- ec_word SHOULD
- ec_word NOT
- ec_word HAVE
- ec_word LOST
+ .2byte EC_WORD_I_VE
+ .2byte EC_WORD_WON
+ .2byte EC_WORD_EVERY
+ .2byte EC_WORD_MATCH
+ .2byte EC_WORD_TODAY
+ .2byte EC_WORD_EXCL
+@ win speech
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_GREAT
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_WIN
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_HUH_QUES
+ .2byte EC_WORD_I
+ .2byte EC_WORD_SHOULD
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_LOST
.4byte gBattleFrontierTrainerMons_Kathy
@ 36
.4byte TRAINER_CLASS_POKEFAN_1
.string "PEYTON$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word NEVER
- ec_word DISAPPOINTED
- ec_word WITH
- ec_word MY
- ec_word POKEMON
-@ win speech
- ec_word I_AM
- ec_word HAPPY
- ec_word IF
- ec_word WE
- ec_word WIN
- ec_word TOGETHER
-@ loss speech
- ec_word I
- ec_word ADORE
- ec_word MY
- ec_word POKEMON
- ec_word MORE
- ec_word IF_I_LOSE
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_NEVER
+ .2byte EC_WORD_DISAPPOINTED
+ .2byte EC_WORD_WITH
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_POKEMON
+@ win speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_HAPPY
+ .2byte EC_WORD_IF
+ .2byte EC_WORD_WE
+ .2byte EC_WORD_WIN
+ .2byte EC_WORD_TOGETHER
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_ADORE
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_MORE
+ .2byte EC_WORD_IF_I_LOSE
.4byte gBattleFrontierTrainerMons_Peyton
@ 37
.4byte TRAINER_CLASS_POKEFAN_1
.string "JULIAN$", 8
@ pre-battle speech
- ec_word YOU
- ec_word ADORE
- ec_word YOUR
- ec_word POKEMON
- ec_word RIGHT
- ec_word QUES
-@ win speech
- ec_word YOU_RE
- ec_word TOTALLY
- ec_word OUT
- ec_word OF
- ec_word THE
- ec_word QUESTION
-@ loss speech
- ec_word YOU
- ec_word DO
- ec_word ADORE
- ec_word YOUR
- ec_word POKEMON
- ec_word EXCL
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_ADORE
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_RIGHT
+ .2byte EC_WORD_QUES
+@ win speech
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_TOTALLY
+ .2byte EC_WORD_OUT
+ .2byte EC_WORD_OF
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_QUESTION
+@ loss speech
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_DO
+ .2byte EC_WORD_ADORE
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_EXCL
.4byte gBattleFrontierTrainerMons_Julian
@ 38
.4byte TRAINER_CLASS_POKEFAN_1
.string "QUINN$", 8
@ pre-battle speech
- ec_word MY
- ec_word POKEMON
- ec_word ARE
- ec_word BUT
- ec_word A
- ec_word DREAM
-@ win speech
- ec_word THIS
- ec_word IS
- ec_word A
- ec_word BEAUTIFUL
- ec_word DREAM
- ec_word EXCL
-@ loss speech
- ec_word THIS
- ec_word IS
- ec_word AN
- ec_word AWFUL
- ec_move1 NIGHTMARE
- ec_word EXCL
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_ARE
+ .2byte EC_WORD_BUT
+ .2byte EC_WORD_A
+ .2byte EC_WORD_DREAM
+@ win speech
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_A
+ .2byte EC_WORD_BEAUTIFUL
+ .2byte EC_WORD_DREAM
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_AN
+ .2byte EC_WORD_AWFUL
+ .2byte EC_MOVE(NIGHTMARE)
+ .2byte EC_WORD_EXCL
.4byte gBattleFrontierTrainerMons_Quinn
@ 39
.4byte TRAINER_CLASS_POKEFAN_2
.string "HAYLEE$", 8
@ pre-battle speech
- ec_word I
- ec_word DON_T
- ec_word KNOW
- ec_word HOW
- ec_word I_AM
- ec_word FEELING
-@ win speech
- ec_word I_AM
- ec_word FEELING
- ec_word OVERWHELMING
- ec_word JOY
- ec_word OVER
- ec_word THIS
-@ loss speech
- ec_word DESTROYED
- ec_word IS
- ec_word THE
- ec_word WAY
- ec_word I_AM
- ec_word FEELING
+ .2byte EC_WORD_I
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_KNOW
+ .2byte EC_WORD_HOW
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_FEELING
+@ win speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_FEELING
+ .2byte EC_WORD_OVERWHELMING
+ .2byte EC_WORD_JOY
+ .2byte EC_WORD_OVER
+ .2byte EC_WORD_THIS
+@ loss speech
+ .2byte EC_WORD_DESTROYED
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_WAY
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_FEELING
.4byte gBattleFrontierTrainerMons_Haylee
@ 40
.4byte TRAINER_CLASS_POKEFAN_2
.string "AMANDA$", 8
@ pre-battle speech
- ec_word I
- ec_word COME
- ec_word FROM
- ec_word A
- ec_word TRAINER
- ec_word FAMILY
-@ win speech
- ec_word I
- ec_word WILL
- ec_word TREASURE
- ec_word THIS
- ec_word WIN
- .2byte -1
-@ loss speech
- ec_word I
- ec_word WANT
- ec_word TO
- ec_word GO_HOME
- ec_word RIGHT
- ec_word NOW
+ .2byte EC_WORD_I
+ .2byte EC_WORD_COME
+ .2byte EC_WORD_FROM
+ .2byte EC_WORD_A
+ .2byte EC_WORD_TRAINER
+ .2byte EC_WORD_FAMILY
+@ win speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_TREASURE
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_WIN
+ .2byte -1
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WANT
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_GO_HOME
+ .2byte EC_WORD_RIGHT
+ .2byte EC_WORD_NOW
.4byte gBattleFrontierTrainerMons_Amanda
@ 41
.4byte TRAINER_CLASS_POKEFAN_2
.string "STACY$", 8
@ pre-battle speech
- ec_word ALL
- ec_word POKEMON
- ec_word HAVE
- ec_word THEIR
- ec_word OWN
- ec_word CUTE_CHARM
-@ win speech
- ec_word YOU
- ec_word SEE
- ec_word WHAT
- ec_word I
- ec_word MEAN
- ec_word QUES
-@ loss speech
- ec_word SHOULD
- ec_word I
- ec_word NOT
- ec_word ADORE
- ec_word POKEMON
- ec_word QUES
+ .2byte EC_WORD_ALL
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_THEIR
+ .2byte EC_WORD_OWN
+ .2byte EC_WORD_CUTE_CHARM
+@ win speech
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_SEE
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_I
+ .2byte EC_WORD_MEAN
+ .2byte EC_WORD_QUES
+@ loss speech
+ .2byte EC_WORD_SHOULD
+ .2byte EC_WORD_I
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_ADORE
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_QUES
.4byte gBattleFrontierTrainerMons_Stacy
@ 42
.4byte TRAINER_CLASS_PKMN_BREEDER_2
.string "RAFAEL$", 8
@ pre-battle speech
- ec_word COME_ON
- ec_word EXCL
- ec_word LET_S
- ec_word SEE
- ec_word SOME
- ec_word SPIRIT
-@ win speech
- ec_word THAT_S_IT_EXCL
- ec_word THAT_S
- ec_word THE
- ec_word SPIRIT
- ec_word EXCL
- .2byte -1
-@ loss speech
- ec_word WELL
- ec_word SO
- ec_word MUCH
- ec_word FOR
- ec_word OUR
- ec_word SPIRIT
+ .2byte EC_WORD_COME_ON
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_LET_S
+ .2byte EC_WORD_SEE
+ .2byte EC_WORD_SOME
+ .2byte EC_WORD_SPIRIT
+@ win speech
+ .2byte EC_WORD_THAT_S_IT_EXCL
+ .2byte EC_WORD_THAT_S
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_SPIRIT
+ .2byte EC_WORD_EXCL
+ .2byte -1
+@ loss speech
+ .2byte EC_WORD_WELL
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_MUCH
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_OUR
+ .2byte EC_WORD_SPIRIT
.4byte gBattleFrontierTrainerMons_Rafael
@ 43
.4byte TRAINER_CLASS_PKMN_BREEDER_2
.string "OLIVER$", 8
@ pre-battle speech
- ec_word A
- ec_word GENIUS
- ec_word THAT_S
- ec_word WHAT
- ec_word I_AM
- ec_word EXCL
-@ win speech
- ec_word THAT_S
- ec_word HOW
- ec_word A
- ec_word GENIUS
- ec_word WORKS
- ec_word EXCL
-@ loss speech
- ec_word YOU_RE
- ec_word MORE
- ec_word A
- ec_word GENIUS
- ec_word THAN
- ec_word I_AM
+ .2byte EC_WORD_A
+ .2byte EC_WORD_GENIUS
+ .2byte EC_WORD_THAT_S
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_EXCL
+@ win speech
+ .2byte EC_WORD_THAT_S
+ .2byte EC_WORD_HOW
+ .2byte EC_WORD_A
+ .2byte EC_WORD_GENIUS
+ .2byte EC_WORD_WORKS
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_MORE
+ .2byte EC_WORD_A
+ .2byte EC_WORD_GENIUS
+ .2byte EC_WORD_THAN
+ .2byte EC_WORD_I_AM
.4byte gBattleFrontierTrainerMons_Oliver
@ 44
.4byte TRAINER_CLASS_PKMN_BREEDER_2
.string "PAYTON$", 8
@ pre-battle speech
- ec_word I
- ec_word TRAIN
- ec_word FROM
- ec_word THE
- ec_word EGG
- ec_word UP
+ .2byte EC_WORD_I
+ .2byte EC_WORD_TRAIN
+ .2byte EC_WORD_FROM
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_EGG
+ .2byte EC_WORD_UP
@ win speech
- ec_word WELL
- ec_word DONE
- ec_word EXCL
+ .2byte EC_WORD_WELL
+ .2byte EC_WORD_DONE
+ .2byte EC_WORD_EXCL
.2byte -1
.2byte -1
.2byte -1
@ loss speech
- ec_word THAT_WAS
- ec_word A
- ec_move2 SOFT_BOILED
- ec_word LOSS
- ec_word ELLIPSIS
+ .2byte EC_WORD_THAT_WAS
+ .2byte EC_WORD_A
+ .2byte EC_MOVE2(SOFT_BOILED)
+ .2byte EC_WORD_LOSS
+ .2byte EC_WORD_ELLIPSIS
.2byte -1
.4byte gBattleFrontierTrainerMons_Payton
@@ -1174,129 +1174,129 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_PKMN_BREEDER_1
.string "PAMELA$", 8
@ pre-battle speech
- ec_word ALL
- ec_word POKEMON
- ec_word ADORE
- ec_word A
- ec_word KIND
- ec_word TRAINER
-@ win speech
- ec_word IT_S
- ec_word TOO
- ec_word BAD
- ec_word YOU
- ec_word LOST
- .2byte -1
-@ loss speech
- ec_word YOU_RE
- ec_word KIND
- ec_word AND
- ec_word YOU_RE
- ec_word ALSO
- ec_word STRONG
+ .2byte EC_WORD_ALL
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_ADORE
+ .2byte EC_WORD_A
+ .2byte EC_WORD_KIND
+ .2byte EC_WORD_TRAINER
+@ win speech
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_TOO
+ .2byte EC_WORD_BAD
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_LOST
+ .2byte -1
+@ loss speech
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_KIND
+ .2byte EC_WORD_AND
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_ALSO
+ .2byte EC_WORD_STRONG
.4byte gBattleFrontierTrainerMons_Pamela
@ 46
.4byte TRAINER_CLASS_PKMN_BREEDER_1
.string "ELIZA$", 8
@ pre-battle speech
- ec_word I
- ec_word ADORE
- ec_word POKEMON
- ec_word LIKE
- ec_word MY
- ec_word CHILDREN
-@ win speech
- ec_word I_AM
- ec_word SO
- ec_word HAPPY
- ec_word FOR
- ec_word MY
- ec_word POKEMON
-@ loss speech
- ec_word OH_DEAR
- ec_word I_AM
- ec_word SO
- ec_word SORRY
- ec_word ABOUT
- ec_word THIS
+ .2byte EC_WORD_I
+ .2byte EC_WORD_ADORE
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_CHILDREN
+@ win speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_HAPPY
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_POKEMON
+@ loss speech
+ .2byte EC_WORD_OH_DEAR
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_SORRY
+ .2byte EC_WORD_ABOUT
+ .2byte EC_WORD_THIS
.4byte gBattleFrontierTrainerMons_Eliza
@ 47
.4byte TRAINER_CLASS_PKMN_BREEDER_1
.string "MARISA$", 8
@ pre-battle speech
- ec_word I
- ec_word PROMISE
- ec_word TO
- ec_word BATTLE
- ec_word SERIOUSLY
- .2byte -1
-@ win speech
- ec_word PROMISE
- ec_word ME
- ec_word YOU
- ec_word WILL
- ec_word DO
- ec_word BETTER
-@ loss speech
- ec_word PROMISE
- ec_word ME
- ec_word ANOTHER
- ec_word BATTLE
- ec_word PLEASE
- ec_word EXCL
+ .2byte EC_WORD_I
+ .2byte EC_WORD_PROMISE
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_BATTLE
+ .2byte EC_WORD_SERIOUSLY
+ .2byte -1
+@ win speech
+ .2byte EC_WORD_PROMISE
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_DO
+ .2byte EC_WORD_BETTER
+@ loss speech
+ .2byte EC_WORD_PROMISE
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_ANOTHER
+ .2byte EC_WORD_BATTLE
+ .2byte EC_WORD_PLEASE
+ .2byte EC_WORD_EXCL
.4byte gBattleFrontierTrainerMons_Marisa
@ 48
.4byte TRAINER_CLASS_BUG_CATCHER
.string "LEWIS$", 8
@ pre-battle speech
- ec_word A_LITTLE
- ec_word BUG
- ec_word IS
- ec_word SCARY
- ec_word QUES
- ec_word HAHAHA
-@ win speech
- ec_word LOOK
- ec_word LOOK
- ec_word EXCL
- ec_word A
- ec_word SCARY
- ec_word BUG
-@ loss speech
- ec_word OH
- ec_word A
- ec_word BUG
- ec_word ISN_T
- ec_word SCARY
- ec_word ELLIPSIS
+ .2byte EC_WORD_A_LITTLE
+ .2byte EC_WORD_BUG
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_SCARY
+ .2byte EC_WORD_QUES
+ .2byte EC_WORD_HAHAHA
+@ win speech
+ .2byte EC_WORD_LOOK
+ .2byte EC_WORD_LOOK
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_A
+ .2byte EC_WORD_SCARY
+ .2byte EC_WORD_BUG
+@ loss speech
+ .2byte EC_WORD_OH
+ .2byte EC_WORD_A
+ .2byte EC_WORD_BUG
+ .2byte EC_WORD_ISN_T
+ .2byte EC_WORD_SCARY
+ .2byte EC_WORD_ELLIPSIS
.4byte gBattleFrontierTrainerMons_Lewis
@ 49
.4byte TRAINER_CLASS_BUG_CATCHER
.string "YOSHI$", 8
@ pre-battle speech
- ec_word BUG
- ec_word POKEMON
- ec_word MAKE
- ec_word ME
- ec_word FEELING
- ec_word LOVEY_DOVEY
-@ win speech
- ec_word BUG
- ec_word POKEMON
- ec_word ARE
- ec_word THE
- ec_word BEST
- ec_word EXCL
-@ loss speech
- ec_word YOU_RE
- ec_word IGNORANT
- ec_word ABOUT
- ec_word BUG
- ec_word POKEMON
+ .2byte EC_WORD_BUG
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_MAKE
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_FEELING
+ .2byte EC_WORD_LOVEY_DOVEY
+@ win speech
+ .2byte EC_WORD_BUG
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_ARE
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_BEST
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_IGNORANT
+ .2byte EC_WORD_ABOUT
+ .2byte EC_WORD_BUG
+ .2byte EC_WORD_POKEMON
.2byte -1
.4byte gBattleFrontierTrainerMons_Yoshi
@@ -1304,25 +1304,25 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_BUG_CATCHER
.string "DESTIN$", 8
@ pre-battle speech
- ec_word IT_S
- ec_word WAY
- ec_word TOO
- ec_word HOT
- ec_word HERE
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_WAY
+ .2byte EC_WORD_TOO
+ .2byte EC_WORD_HOT
+ .2byte EC_WORD_HERE
.2byte -1
@ win speech
- ec_word I_AM
- ec_word ABOUT
- ec_word TO
- ec_move1 OVERHEAT
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_ABOUT
+ .2byte EC_WORD_TO
+ .2byte EC_MOVE(OVERHEAT)
.2byte -1
.2byte -1
@ loss speech
- ec_word PLEASE
- ec_word I
- ec_word NEED
- ec_word SOME
- ec_word WATER
+ .2byte EC_WORD_PLEASE
+ .2byte EC_WORD_I
+ .2byte EC_WORD_NEED
+ .2byte EC_WORD_SOME
+ .2byte EC_WORD_WATER
.2byte -1
.4byte gBattleFrontierTrainerMons_Destin
@@ -1330,23 +1330,23 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_NINJA_BOY
.string "KEON$", 8
@ pre-battle speech
- ec_word FORGIVE
- ec_word ME
- ec_word BUT
- ec_word HERE_I_COME
- ec_word EXCL
+ .2byte EC_WORD_FORGIVE
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_BUT
+ .2byte EC_WORD_HERE_I_COME
+ .2byte EC_WORD_EXCL
.2byte -1
@ win speech
- ec_word FORGIVE
- ec_word ME
- ec_word FOR
- ec_word MY
- ec_word OVERWHELMING
- ec_word POWER
+ .2byte EC_WORD_FORGIVE
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_OVERWHELMING
+ .2byte EC_WORD_POWER
@ loss speech
- ec_word I_AM
- ec_word SORRY
- ec_word ELLIPSIS
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_SORRY
+ .2byte EC_WORD_ELLIPSIS
.2byte -1
.2byte -1
.2byte -1
@@ -1356,51 +1356,51 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_NINJA_BOY
.string "STUART$", 8
@ pre-battle speech
- ec_word I
- ec_word PROMISE
- ec_word YOU
- ec_word A
- ec_word HOT
- ec_word BATTLE
-@ win speech
- ec_word THE
- ec_word MASTER
- ec_word OF
- ec_word COOL
- ec_word THAT_S
- ec_word ME
-@ loss speech
- ec_word I
- ec_word SEE
- ec_word I_AM
- ec_word NOT
- ec_word SO
- ec_word COOL
+ .2byte EC_WORD_I
+ .2byte EC_WORD_PROMISE
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_A
+ .2byte EC_WORD_HOT
+ .2byte EC_WORD_BATTLE
+@ win speech
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_MASTER
+ .2byte EC_WORD_OF
+ .2byte EC_WORD_COOL
+ .2byte EC_WORD_THAT_S
+ .2byte EC_WORD_ME
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_SEE
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_COOL
.4byte gBattleFrontierTrainerMons_Stuart
@ 53
.4byte TRAINER_CLASS_NINJA_BOY
.string "NESTOR$", 8
@ pre-battle speech
- ec_word SHOW
- ec_word ME
- ec_word A
- ec_word REALLY
- ec_word SMOOTH
- ec_word MOVE
-@ win speech
- ec_word THERE
- ec_word WAS
- ec_word NOTHING
- ec_word SMOOTH
- ec_word ABOUT
- ec_word THAT
-@ loss speech
- ec_word YOU
- ec_word REALLY
- ec_word ARE
- ec_word SMOOTH
- ec_word EXCL
+ .2byte EC_WORD_SHOW
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_A
+ .2byte EC_WORD_REALLY
+ .2byte EC_WORD_SMOOTH
+ .2byte EC_WORD_MOVE
+@ win speech
+ .2byte EC_WORD_THERE
+ .2byte EC_WORD_WAS
+ .2byte EC_WORD_NOTHING
+ .2byte EC_WORD_SMOOTH
+ .2byte EC_WORD_ABOUT
+ .2byte EC_WORD_THAT
+@ loss speech
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_REALLY
+ .2byte EC_WORD_ARE
+ .2byte EC_WORD_SMOOTH
+ .2byte EC_WORD_EXCL
.2byte -1
.4byte gBattleFrontierTrainerMons_Nestor
@@ -1408,50 +1408,50 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_BUG_MANIAC
.string "DERRICK$", 8
@ pre-battle speech
- ec_word LET_S
- ec_word SEE
- ec_word YOU
- ec_move2 MEDITATE
- ec_word LIKE
- ec_word ME
-@ win speech
- ec_word HOW
- ec_word I
- ec_move2 MEDITATE
- ec_word IS
- ec_word JUST
- ec_word BEAUTIFUL
-@ loss speech
- ec_word I
- ec_word WILL
- ec_move2 MEDITATE
- ec_word FOR
- ec_word A
- ec_move2 CALM_MIND
+ .2byte EC_WORD_LET_S
+ .2byte EC_WORD_SEE
+ .2byte EC_WORD_YOU
+ .2byte EC_MOVE2(MEDITATE)
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_ME
+@ win speech
+ .2byte EC_WORD_HOW
+ .2byte EC_WORD_I
+ .2byte EC_MOVE2(MEDITATE)
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_JUST
+ .2byte EC_WORD_BEAUTIFUL
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WILL
+ .2byte EC_MOVE2(MEDITATE)
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_A
+ .2byte EC_MOVE2(CALM_MIND)
.4byte gBattleFrontierTrainerMons_Derrick
@ 55
.4byte TRAINER_CLASS_BUG_MANIAC
.string "BRYSON$", 8
@ pre-battle speech
- ec_move2 POISON_POWDER
- ec_word IS
- ec_word IN
- ec_word OUR
- ec_move2 COTTON_SPORE
- ec_word MOVE
+ .2byte EC_MOVE2(POISON_POWDER)
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_IN
+ .2byte EC_WORD_OUR
+ .2byte EC_MOVE2(COTTON_SPORE)
+ .2byte EC_WORD_MOVE
@ win speech
- ec_word HOW_DO
- ec_word YOU
- ec_word LIKE
- ec_word OUR
- ec_move2 POISON_POWDER
- ec_word QUES
+ .2byte EC_WORD_HOW_DO
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_OUR
+ .2byte EC_MOVE2(POISON_POWDER)
+ .2byte EC_WORD_QUES
@ loss speech
- ec_word MY
- ec_move2 COTTON_SPORE
- ec_word WAS
- ec_word USELESS
+ .2byte EC_WORD_MY
+ .2byte EC_MOVE2(COTTON_SPORE)
+ .2byte EC_WORD_WAS
+ .2byte EC_WORD_USELESS
.2byte -1
.2byte -1
.4byte gBattleFrontierTrainerMons_Bryson
@@ -1460,103 +1460,103 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_BUG_MANIAC
.string "CLAYTON$", 8
@ pre-battle speech
- ec_word HUH_QUES
+ .2byte EC_WORD_HUH_QUES
.2byte -1
.2byte -1
- ec_word WHERE
- ec_word IS_IT_QUES
+ .2byte EC_WORD_WHERE
+ .2byte EC_WORD_IS_IT_QUES
.2byte -1
@ win speech
- ec_word WHERE
- ec_word IS_IT_QUES
- ec_word I_VE
- ec_word LOST
- ec_word MY
- ec_word POKENAV
+ .2byte EC_WORD_WHERE
+ .2byte EC_WORD_IS_IT_QUES
+ .2byte EC_WORD_I_VE
+ .2byte EC_WORD_LOST
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_POKENAV
@ loss speech
- ec_word WHERE
- ec_word IS_IT_QUES
- ec_word I_VE
- ec_word LOST
- ec_word MY
- ec_word SENSE
+ .2byte EC_WORD_WHERE
+ .2byte EC_WORD_IS_IT_QUES
+ .2byte EC_WORD_I_VE
+ .2byte EC_WORD_LOST
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_SENSE
.4byte gBattleFrontierTrainerMons_Clayton
@ 57
.4byte TRAINER_CLASS_FISHERMAN
.string "TRENTON$", 8
@ pre-battle speech
- ec_word COME_OVER
- ec_word FOR
- ec_word SOME
- ec_word TASTY
- ec_word WATER
- .2byte -1
-@ win speech
- ec_word MMM
- ec_word DO
- ec_word YOU
- ec_word WANT
- ec_word SOME
- ec_word QUES
-@ loss speech
- ec_word I
- ec_word GOT
- ec_word THIS
- ec_word TASTY
- ec_word WATER
- ec_word SHOPPING
+ .2byte EC_WORD_COME_OVER
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_SOME
+ .2byte EC_WORD_TASTY
+ .2byte EC_WORD_WATER
+ .2byte -1
+@ win speech
+ .2byte EC_WORD_MMM
+ .2byte EC_WORD_DO
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_WANT
+ .2byte EC_WORD_SOME
+ .2byte EC_WORD_QUES
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_GOT
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_TASTY
+ .2byte EC_WORD_WATER
+ .2byte EC_WORD_SHOPPING
.4byte gBattleFrontierTrainerMons_Trenton
@ 58
.4byte TRAINER_CLASS_FISHERMAN
.string "JENSON$", 8
@ pre-battle speech
- ec_word MY
- ec_word POKEMON
- ec_word WILL
- ec_word MAKE
- ec_word YOU
- ec_word DOWNCAST
-@ win speech
- ec_word YOUR
- ec_word POKEMON
- ec_word DON_T
- ec_word MAKE
- ec_word THE
- ec_move1 CUT
-@ loss speech
- ec_word I_AM
- ec_word THE
- ec_word TRAINER
- ec_word WHO_IS
- ec_word FEELING
- ec_word DOWNCAST
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_MAKE
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_DOWNCAST
+@ win speech
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_MAKE
+ .2byte EC_WORD_THE
+ .2byte EC_MOVE(CUT)
+@ loss speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_TRAINER
+ .2byte EC_WORD_WHO_IS
+ .2byte EC_WORD_FEELING
+ .2byte EC_WORD_DOWNCAST
.4byte gBattleFrontierTrainerMons_Jenson
@ 59
.4byte TRAINER_CLASS_FISHERMAN
.string "WESLEY$", 8
@ pre-battle speech
- ec_pokemon2 MEW
- ec_pokemon2 MEW
- ec_word IS
- ec_word HOW
- ec_word I
- ec_word CRY
-@ win speech
- ec_word YES
- ec_word I
- ec_word KNOW
- ec_word I_AM
- ec_word CUTE
- ec_word EXCL
-@ loss speech
- ec_pokemon2 MEW
- ec_pokemon2 MEW
- ec_word EXCL
- ec_pokemon2 MEW
- ec_word EXCL_EXCL
+ .2byte EC_POKEMON2(MEW)
+ .2byte EC_POKEMON2(MEW)
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_HOW
+ .2byte EC_WORD_I
+ .2byte EC_WORD_CRY
+@ win speech
+ .2byte EC_WORD_YES
+ .2byte EC_WORD_I
+ .2byte EC_WORD_KNOW
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_CUTE
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_POKEMON2(MEW)
+ .2byte EC_POKEMON2(MEW)
+ .2byte EC_WORD_EXCL
+ .2byte EC_POKEMON2(MEW)
+ .2byte EC_WORD_EXCL_EXCL
.2byte -1
.4byte gBattleFrontierTrainerMons_Wesley
@@ -1564,129 +1564,129 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_RUIN_MANIAC
.string "ANTON$", 8
@ pre-battle speech
- ec_word GET
- ec_word READY
- ec_word FOR
- ec_word ME
- ec_word TO
- ec_move1 THRASH
-@ win speech
- ec_word WAHAHAHA
- ec_word EXCL
- ec_word SORRY
- ec_word ABOUT
- ec_word THAT
- ec_word EXCL
-@ loss speech
- ec_word IT_S
- ec_word A
- ec_word TOUGH
- ec_word LOSS
- ec_word TO
- ec_move2 SWALLOW
+ .2byte EC_WORD_GET
+ .2byte EC_WORD_READY
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_TO
+ .2byte EC_MOVE(THRASH)
+@ win speech
+ .2byte EC_WORD_WAHAHAHA
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_SORRY
+ .2byte EC_WORD_ABOUT
+ .2byte EC_WORD_THAT
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_A
+ .2byte EC_WORD_TOUGH
+ .2byte EC_WORD_LOSS
+ .2byte EC_WORD_TO
+ .2byte EC_MOVE2(SWALLOW)
.4byte gBattleFrontierTrainerMons_Anton
@ 61
.4byte TRAINER_CLASS_RUIN_MANIAC
.string "LAWSON$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word YOUNG
- ec_word AT
- ec_word HEART
- ec_word EXCL
- .2byte -1
-@ win speech
- ec_word NOT
- ec_word COOL
- ec_word EXCL
- ec_word NOT
- ec_word AT
- ec_word ALL
-@ loss speech
- ec_word I_AM
- ec_word OLD
- ec_word AND
- ec_word FEELING
- ec_word SHAKY
- ec_word ELLIPSIS
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_YOUNG
+ .2byte EC_WORD_AT
+ .2byte EC_WORD_HEART
+ .2byte EC_WORD_EXCL
+ .2byte -1
+@ win speech
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_COOL
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_AT
+ .2byte EC_WORD_ALL
+@ loss speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_OLD
+ .2byte EC_WORD_AND
+ .2byte EC_WORD_FEELING
+ .2byte EC_WORD_SHAKY
+ .2byte EC_WORD_ELLIPSIS
.4byte gBattleFrontierTrainerMons_Lawson
@ 62
.4byte TRAINER_CLASS_RUIN_MANIAC
.string "SAMMY$", 8
@ pre-battle speech
- ec_word MY
- ec_word PARTY
- ec_word IS
- ec_word READY
- ec_word TO
- ec_word ROCK
-@ win speech
- ec_word MY
- ec_word PARTY
- ec_word IS
- ec_word JUST
- ec_word INCREDIBLE
- ec_word EXCL
-@ loss speech
- ec_word I
- ec_word CRY
- ec_word FOR
- ec_word MY
- ec_word PARTY
- ec_word ELLIPSIS
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_PARTY
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_READY
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_ROCK
+@ win speech
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_PARTY
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_JUST
+ .2byte EC_WORD_INCREDIBLE
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_CRY
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_PARTY
+ .2byte EC_WORD_ELLIPSIS
.4byte gBattleFrontierTrainerMons_Sammy
@ 63
.4byte TRAINER_CLASS_COLLECTOR
.string "ARNIE$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word NO_1
- ec_word I
- ec_word HAVE
- ec_word NO
- ec_word RIVAL
-@ win speech
- ec_word YOU
- ec_word SEE
- ec_word QUES
- ec_word I
- ec_word CAN_T
- ec_word LOSE
-@ loss speech
- ec_word NO
- ec_word EXCL
- ec_word I
- ec_word WON_T
- ec_word ACCEPT
- ec_word THIS
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_NO_1
+ .2byte EC_WORD_I
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_NO
+ .2byte EC_WORD_RIVAL
+@ win speech
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_SEE
+ .2byte EC_WORD_QUES
+ .2byte EC_WORD_I
+ .2byte EC_WORD_CAN_T
+ .2byte EC_WORD_LOSE
+@ loss speech
+ .2byte EC_WORD_NO
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WON_T
+ .2byte EC_WORD_ACCEPT
+ .2byte EC_WORD_THIS
.4byte gBattleFrontierTrainerMons_Arnie
@ 64
.4byte TRAINER_CLASS_COLLECTOR
.string "ADRIAN$", 8
@ pre-battle speech
- ec_word YAHOO
- ec_word EXCL
+ .2byte EC_WORD_YAHOO
+ .2byte EC_WORD_EXCL
.2byte -1
- ec_word YAHOO
- ec_word EXCL_EXCL
+ .2byte EC_WORD_YAHOO
+ .2byte EC_WORD_EXCL_EXCL
.2byte -1
@ win speech
- ec_word THANK_YOU
- ec_word EXCL
+ .2byte EC_WORD_THANK_YOU
+ .2byte EC_WORD_EXCL
.2byte -1
- ec_word THANK_YOU
- ec_word EXCL_EXCL
+ .2byte EC_WORD_THANK_YOU
+ .2byte EC_WORD_EXCL_EXCL
.2byte -1
@ loss speech
- ec_word GOOD_BYE
- ec_word EXCL
+ .2byte EC_WORD_GOOD_BYE
+ .2byte EC_WORD_EXCL
.2byte -1
- ec_word GOOD_BYE
- ec_word EXCL_EXCL
+ .2byte EC_WORD_GOOD_BYE
+ .2byte EC_WORD_EXCL_EXCL
.2byte -1
.4byte gBattleFrontierTrainerMons_Adrian
@@ -1694,103 +1694,103 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_COLLECTOR
.string "TRISTAN$", 8
@ pre-battle speech
- ec_word CONFUSED
- ec_word QUES
+ .2byte EC_WORD_CONFUSED
+ .2byte EC_WORD_QUES
.2byte -1
- ec_word I_AM
- ec_word A
- ec_word GENIUS
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_A
+ .2byte EC_WORD_GENIUS
@ win speech
- ec_word SEE
- ec_word QUES
+ .2byte EC_WORD_SEE
+ .2byte EC_WORD_QUES
.2byte -1
- ec_word I_AM
- ec_word A
- ec_word GENIUS
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_A
+ .2byte EC_WORD_GENIUS
@ loss speech
- ec_word I_AM
- ec_word NOT
- ec_word A
- ec_word GENIUS
- ec_word IN
- ec_word BATTLE
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_A
+ .2byte EC_WORD_GENIUS
+ .2byte EC_WORD_IN
+ .2byte EC_WORD_BATTLE
.4byte gBattleFrontierTrainerMons_Tristan
@ 66
.4byte TRAINER_CLASS_PARASOL_LADY
.string "JULIANA$", 8
@ pre-battle speech
- ec_word I
- ec_word THINK
- ec_word I_AM
- ec_word SHOPPING
- ec_word TOO
- ec_word MUCH
-@ win speech
- ec_word BUT
- ec_word I
- ec_word WANT
- ec_word A
- ec_word POKEMON
- ec_word PLUSH_DOLL
-@ loss speech
- ec_word I
- ec_word SO
- ec_word WANT
- ec_word ANOTHER
- ec_word POKEMON
- ec_word PLUSH_DOLL
+ .2byte EC_WORD_I
+ .2byte EC_WORD_THINK
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_SHOPPING
+ .2byte EC_WORD_TOO
+ .2byte EC_WORD_MUCH
+@ win speech
+ .2byte EC_WORD_BUT
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WANT
+ .2byte EC_WORD_A
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_PLUSH_DOLL
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_WANT
+ .2byte EC_WORD_ANOTHER
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_PLUSH_DOLL
.4byte gBattleFrontierTrainerMons_Juliana
@ 67
.4byte TRAINER_CLASS_PARASOL_LADY
.string "RYLEE$", 8
@ pre-battle speech
- ec_word SHOW
- ec_word ME
- ec_word THAT
- ec_word YOU
- ec_word HAVE
- ec_word GUTS
-@ win speech
- ec_word BYE_BYE
- ec_word EXCL
- ec_word YOU
- ec_word HAVE
- ec_word NO
- ec_word GUTS
-@ loss speech
- ec_word THAT_WAS
- ec_word GUTSY
- ec_word ELLIPSIS
- ec_word YOU_RE
- ec_word QUITE
- ec_word SUPER
+ .2byte EC_WORD_SHOW
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_THAT
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_GUTS
+@ win speech
+ .2byte EC_WORD_BYE_BYE
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_NO
+ .2byte EC_WORD_GUTS
+@ loss speech
+ .2byte EC_WORD_THAT_WAS
+ .2byte EC_WORD_GUTSY
+ .2byte EC_WORD_ELLIPSIS
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_QUITE
+ .2byte EC_WORD_SUPER
.4byte gBattleFrontierTrainerMons_Rylee
@ 68
.4byte TRAINER_CLASS_PARASOL_LADY
.string "CHELSEA$", 8
@ pre-battle speech
- ec_word I
- ec_word SERIOUSLY
- ec_word MEAN
- ec_word TO
- ec_word WIN
- ec_word EXCL
+ .2byte EC_WORD_I
+ .2byte EC_WORD_SERIOUSLY
+ .2byte EC_WORD_MEAN
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_WIN
+ .2byte EC_WORD_EXCL
@ win speech
- ec_word THAT_WAS
- ec_word MY
- ec_word WILL
- ec_word TO
- ec_word WIN
+ .2byte EC_WORD_THAT_WAS
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_WIN
.2byte -1
@ loss speech
- ec_word YOU_RE
- ec_word FAR
- ec_word TOO_STRONG
- ec_word FOR
- ec_word ME
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_FAR
+ .2byte EC_WORD_TOO_STRONG
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_ME
.2byte -1
.4byte gBattleFrontierTrainerMons_Chelsea
@@ -1798,233 +1798,233 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_BEAUTY
.string "DANELA$", 8
@ pre-battle speech
- ec_word YOU
- ec_word MUST_BE
- ec_word MY
- ec_word OPPONENT
- ec_word NOW
- ec_word EXCL
-@ win speech
- ec_word OH_DEAR
- ec_word TOO_WEAK
- ec_word EXCL
- ec_word DON_T
- ec_word GIVE_UP
- ec_word EXCL
-@ loss speech
- ec_word THAT_WAS
- ec_word GOOD
- ec_word AND
- ec_word THIS
- ec_word IS
- ec_word GOOD_BYE
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_MUST_BE
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_OPPONENT
+ .2byte EC_WORD_NOW
+ .2byte EC_WORD_EXCL
+@ win speech
+ .2byte EC_WORD_OH_DEAR
+ .2byte EC_WORD_TOO_WEAK
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_GIVE_UP
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_THAT_WAS
+ .2byte EC_WORD_GOOD
+ .2byte EC_WORD_AND
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_GOOD_BYE
.4byte gBattleFrontierTrainerMons_Danela
@ 70
.4byte TRAINER_CLASS_BEAUTY
.string "LIZBETH$", 8
@ pre-battle speech
- ec_word IF_I_LOSE
- ec_word YOU
- ec_word CAN
- ec_word HAVE
- ec_word A
- ec_move2 PRESENT
-@ win speech
- ec_word HERE_IT_IS
- ec_word A_LITTLE
- ec_word PRAISE
- ec_word AS
- ec_word YOUR
- ec_move2 PRESENT
-@ loss speech
- ec_word YOUR
- ec_move2 PRESENT
- ec_word QUES_EXCL
- ec_word HERE_IT_IS
- ec_word A
- ec_move1 DOUBLE_SLAP
+ .2byte EC_WORD_IF_I_LOSE
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_CAN
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_A
+ .2byte EC_MOVE2(PRESENT)
+@ win speech
+ .2byte EC_WORD_HERE_IT_IS
+ .2byte EC_WORD_A_LITTLE
+ .2byte EC_WORD_PRAISE
+ .2byte EC_WORD_AS
+ .2byte EC_WORD_YOUR
+ .2byte EC_MOVE2(PRESENT)
+@ loss speech
+ .2byte EC_WORD_YOUR
+ .2byte EC_MOVE2(PRESENT)
+ .2byte EC_WORD_QUES_EXCL
+ .2byte EC_WORD_HERE_IT_IS
+ .2byte EC_WORD_A
+ .2byte EC_MOVE(DOUBLE_SLAP)
.4byte gBattleFrontierTrainerMons_Lizbeth
@ 71
.4byte TRAINER_CLASS_BEAUTY
.string "AMELIA$", 8
@ pre-battle speech
- ec_word I
- ec_word BELIEVE
- ec_word IN
- ec_word CUTE
- ec_word FASHION
- ec_word APPEAL
-@ win speech
- ec_word YOUR
- ec_word FASHION
- ec_word SENSE
- ec_word IS
- ec_word A
- ec_word DISASTER
-@ loss speech
- ec_word THAT_WAS
- ec_word AWFUL
- ec_word EXCL
- ec_word I_AM
- ec_word GOING
- ec_word HOME
+ .2byte EC_WORD_I
+ .2byte EC_WORD_BELIEVE
+ .2byte EC_WORD_IN
+ .2byte EC_WORD_CUTE
+ .2byte EC_WORD_FASHION
+ .2byte EC_WORD_APPEAL
+@ win speech
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_FASHION
+ .2byte EC_WORD_SENSE
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_A
+ .2byte EC_WORD_DISASTER
+@ loss speech
+ .2byte EC_WORD_THAT_WAS
+ .2byte EC_WORD_AWFUL
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_GOING
+ .2byte EC_WORD_HOME
.4byte gBattleFrontierTrainerMons_Amelia
@ 72
.4byte TRAINER_CLASS_AROMA_LADY
.string "JILLIAN$", 8
@ pre-battle speech
- ec_word WHAT
- ec_word IS
- ec_word THAT
- ec_word I
- ec_word SMELL
- ec_word QUES
-@ win speech
- ec_word IT_S
- ec_word THE
- ec_move1 SWEET_SCENT
- ec_word OF
- ec_word TASTY
- ec_word WATER
-@ loss speech
- ec_word IT_S
- ec_word YOUR
- ec_word OFFENSIVE
- ec_word STENCH
- ec_word THAT_S
- ec_word WHAT
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_THAT
+ .2byte EC_WORD_I
+ .2byte EC_WORD_SMELL
+ .2byte EC_WORD_QUES
+@ win speech
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_THE
+ .2byte EC_MOVE(SWEET_SCENT)
+ .2byte EC_WORD_OF
+ .2byte EC_WORD_TASTY
+ .2byte EC_WORD_WATER
+@ loss speech
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_OFFENSIVE
+ .2byte EC_WORD_STENCH
+ .2byte EC_WORD_THAT_S
+ .2byte EC_WORD_WHAT
.4byte gBattleFrontierTrainerMons_Jillian
@ 73
.4byte TRAINER_CLASS_AROMA_LADY
.string "ABBIE$", 8
@ pre-battle speech
- ec_word YOU
- ec_word TRY
- ec_word MY
- ec_word SECRET
- ec_move1 AROMATHERAPY
- ec_word OK_QUES
-@ win speech
- ec_word MY
- ec_move1 AROMATHERAPY
- ec_word IS
- ec_word TERRIBLE
- ec_word FOR
- ec_word YOU
-@ loss speech
- ec_word DIDN_T
- ec_word YOU
- ec_word SMELL
- ec_word A
- ec_word THING
- ec_word QUES_EXCL
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_TRY
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_SECRET
+ .2byte EC_MOVE(AROMATHERAPY)
+ .2byte EC_WORD_OK_QUES
+@ win speech
+ .2byte EC_WORD_MY
+ .2byte EC_MOVE(AROMATHERAPY)
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_TERRIBLE
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_YOU
+@ loss speech
+ .2byte EC_WORD_DIDN_T
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_SMELL
+ .2byte EC_WORD_A
+ .2byte EC_WORD_THING
+ .2byte EC_WORD_QUES_EXCL
.4byte gBattleFrontierTrainerMons_Abbie
@ 74
.4byte TRAINER_CLASS_AROMA_LADY
.string "BRIANA$", 8
@ pre-battle speech
- ec_word MY
- ec_word BOY
- ec_word FRIEND
- ec_word WORKS
- ec_word TOO
- ec_word MUCH
-@ win speech
- ec_word I
- ec_word ONLY
- ec_word MISS
- ec_word HIM
- ec_word MORE
- ec_word ELLIPSIS
-@ loss speech
- ec_word I_AM
- ec_word SO
- ec_word LONESOME
- ec_word WITHOUT
- ec_word HIM
- ec_word ELLIPSIS
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_BOY
+ .2byte EC_WORD_FRIEND
+ .2byte EC_WORD_WORKS
+ .2byte EC_WORD_TOO
+ .2byte EC_WORD_MUCH
+@ win speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_ONLY
+ .2byte EC_WORD_MISS
+ .2byte EC_WORD_HIM
+ .2byte EC_WORD_MORE
+ .2byte EC_WORD_ELLIPSIS
+@ loss speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_LONESOME
+ .2byte EC_WORD_WITHOUT
+ .2byte EC_WORD_HIM
+ .2byte EC_WORD_ELLIPSIS
.4byte gBattleFrontierTrainerMons_Briana
@ 75
.4byte TRAINER_CLASS_GUITARIST
.string "ANTONIO$", 8
@ pre-battle speech
- ec_word I
- ec_word KNOW
- ec_word HOW
- ec_word TO
- ec_word GO
- ec_word GO
-@ win speech
- ec_word BUT
- ec_word I
- ec_word DON_T
- ec_word LIKE
- ec_word TO
- ec_word DANCE
-@ loss speech
- ec_word GO
- ec_word GO
- ec_word ELLIPSIS
- ec_word JUST
- ec_move1 FLAIL
- ec_word ABOUT
+ .2byte EC_WORD_I
+ .2byte EC_WORD_KNOW
+ .2byte EC_WORD_HOW
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_GO
+ .2byte EC_WORD_GO
+@ win speech
+ .2byte EC_WORD_BUT
+ .2byte EC_WORD_I
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_DANCE
+@ loss speech
+ .2byte EC_WORD_GO
+ .2byte EC_WORD_GO
+ .2byte EC_WORD_ELLIPSIS
+ .2byte EC_WORD_JUST
+ .2byte EC_MOVE(FLAIL)
+ .2byte EC_WORD_ABOUT
.4byte gBattleFrontierTrainerMons_Antonio
@ 76
.4byte TRAINER_CLASS_GUITARIST
.string "JADEN$", 8
@ pre-battle speech
- ec_word HELLO
- ec_word I
- ec_word THINK
- ec_word I
- ec_word ADORE
- ec_word YOU
+ .2byte EC_WORD_HELLO
+ .2byte EC_WORD_I
+ .2byte EC_WORD_THINK
+ .2byte EC_WORD_I
+ .2byte EC_WORD_ADORE
+ .2byte EC_WORD_YOU
@ win speech
- ec_word YOU
- ec_word MAKE
- ec_word ME
- ec_move1 THRASH
- ec_word IN
- ec_move2 FRUSTRATION
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_MAKE
+ .2byte EC_WORD_ME
+ .2byte EC_MOVE(THRASH)
+ .2byte EC_WORD_IN
+ .2byte EC_MOVE2(FRUSTRATION)
@ loss speech
- ec_word THIS_IS_IT_EXCL
+ .2byte EC_WORD_THIS_IS_IT_EXCL
.2byte -1
.2byte -1
- ec_word GOOD_BYE
- ec_word FOREVER
- ec_word EXCL
+ .2byte EC_WORD_GOOD_BYE
+ .2byte EC_WORD_FOREVER
+ .2byte EC_WORD_EXCL
.4byte gBattleFrontierTrainerMons_Jaden
@ 77
.4byte TRAINER_CLASS_GUITARIST
.string "DAKOTA$", 8
@ pre-battle speech
- ec_word YOU
- ec_word HAVE
- ec_word TO
- ec_word DANCE
- ec_word WITH
- ec_word POWER
-@ win speech
- ec_word GOT
- ec_word IT
- ec_word QUES
- ec_word DANCE
- ec_word WITH
- ec_word POWER
-@ loss speech
- ec_word OKAY
- ec_word YOU
- ec_word UNDERSTAND
- ec_word ALL_RIGHT
- ec_word EXCL
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_DANCE
+ .2byte EC_WORD_WITH
+ .2byte EC_WORD_POWER
+@ win speech
+ .2byte EC_WORD_GOT
+ .2byte EC_WORD_IT
+ .2byte EC_WORD_QUES
+ .2byte EC_WORD_DANCE
+ .2byte EC_WORD_WITH
+ .2byte EC_WORD_POWER
+@ loss speech
+ .2byte EC_WORD_OKAY
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_UNDERSTAND
+ .2byte EC_WORD_ALL_RIGHT
+ .2byte EC_WORD_EXCL
.2byte -1
.4byte gBattleFrontierTrainerMons_Dakota
@@ -2032,74 +2032,74 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_BIRD_KEEPER
.string "BRAYDEN$", 8
@ pre-battle speech
- ec_word COLOR_CHANGE
- ec_word VERSION
- ec_word TOYS
- ec_word ARE
- ec_word USELESS
- ec_word EXCL
-@ win speech
- ec_word I
- ec_word ONLY
- ec_word COLLECT
- ec_word NORMAL
- ec_word VERSION
- ec_word TOYS
-@ loss speech
- ec_word I
- ec_move2 ATTRACT
- ec_word COLOR_CHANGE
- ec_word VERSION
- ec_word TOYS
- ec_word ELLIPSIS
+ .2byte EC_WORD_COLOR_CHANGE
+ .2byte EC_WORD_VERSION
+ .2byte EC_WORD_TOYS
+ .2byte EC_WORD_ARE
+ .2byte EC_WORD_USELESS
+ .2byte EC_WORD_EXCL
+@ win speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_ONLY
+ .2byte EC_WORD_COLLECT
+ .2byte EC_WORD_NORMAL
+ .2byte EC_WORD_VERSION
+ .2byte EC_WORD_TOYS
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_MOVE2(ATTRACT)
+ .2byte EC_WORD_COLOR_CHANGE
+ .2byte EC_WORD_VERSION
+ .2byte EC_WORD_TOYS
+ .2byte EC_WORD_ELLIPSIS
.4byte gBattleFrontierTrainerMons_Brayden
@ 79
.4byte TRAINER_CLASS_BIRD_KEEPER
.string "CORSON$", 8
@ pre-battle speech
- ec_word I
- ec_word GET
- ec_word TO
- ec_move2 BEAT_UP
- ec_word ON
- ec_word YOU
-@ win speech
- ec_word TOO
- ec_word EASY
- ec_word EXCL
- ec_word I_AM
- ec_word SO
- ec_word COOL
-@ loss speech
- ec_word WHY
- ec_word QUES_EXCL
- .2byte -1
- ec_word I
- ec_move2 CURSE
- ec_word YOU
+ .2byte EC_WORD_I
+ .2byte EC_WORD_GET
+ .2byte EC_WORD_TO
+ .2byte EC_MOVE2(BEAT_UP)
+ .2byte EC_WORD_ON
+ .2byte EC_WORD_YOU
+@ win speech
+ .2byte EC_WORD_TOO
+ .2byte EC_WORD_EASY
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_COOL
+@ loss speech
+ .2byte EC_WORD_WHY
+ .2byte EC_WORD_QUES_EXCL
+ .2byte -1
+ .2byte EC_WORD_I
+ .2byte EC_MOVE2(CURSE)
+ .2byte EC_WORD_YOU
.4byte gBattleFrontierTrainerMons_Corson
@ 80
.4byte TRAINER_CLASS_BIRD_KEEPER
.string "TREVIN$", 8
@ pre-battle speech
- ec_word THERE
- ec_word IS
- ec_word NONE
- ec_word BETTER
- ec_word THAN
- ec_word ME
+ .2byte EC_WORD_THERE
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_NONE
+ .2byte EC_WORD_BETTER
+ .2byte EC_WORD_THAN
+ .2byte EC_WORD_ME
@ win speech
- ec_word YES_SIR_EXCL
+ .2byte EC_WORD_YES_SIR_EXCL
.2byte -1
.2byte -1
- ec_word I_AM
- ec_word THE
- ec_word BEST
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_BEST
@ loss speech
- ec_word SERIOUS
- ec_word QUES_EXCL
+ .2byte EC_WORD_SERIOUS
+ .2byte EC_WORD_QUES_EXCL
.2byte -1
.2byte -1
.2byte -1
@@ -2110,77 +2110,77 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_SAILOR
.string "PATRICK$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word PERFECT
- ec_word EXCL
- ec_word GIVE_UP
- ec_word NOW
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_PERFECT
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_GIVE_UP
+ .2byte EC_WORD_NOW
.2byte -1
@ win speech
- ec_word DON_T
- ec_word BE
- ec_word DISAPPOINTED
- ec_word I_AM
- ec_word PERFECT
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_BE
+ .2byte EC_WORD_DISAPPOINTED
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_PERFECT
.2byte -1
@ loss speech
- ec_word BUT
- ec_word HOW
- ec_word QUES
- ec_word I_AM
- ec_word PERFECT
- ec_word ELLIPSIS
+ .2byte EC_WORD_BUT
+ .2byte EC_WORD_HOW
+ .2byte EC_WORD_QUES
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_PERFECT
+ .2byte EC_WORD_ELLIPSIS
.4byte gBattleFrontierTrainerMons_Patrick
@ 82
.4byte TRAINER_CLASS_SAILOR
.string "KADEN$", 8
@ pre-battle speech
- ec_word WHAT
- ec_word ARE
- ec_word YOU
- ec_word UP
- ec_word TO
- ec_word QUES
-@ win speech
- ec_word YOU
- ec_word WERE
- ec_word A
- ec_word SURPRISE
- ec_word TO_ME
- ec_word EXCL
-@ loss speech
- ec_word I
- ec_word DON_T
- ec_word KNOW
- ec_word WHO
- ec_word I_AM
- ec_word ELLIPSIS
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_ARE
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_UP
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_QUES
+@ win speech
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_WERE
+ .2byte EC_WORD_A
+ .2byte EC_WORD_SURPRISE
+ .2byte EC_WORD_TO_ME
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_KNOW
+ .2byte EC_WORD_WHO
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_ELLIPSIS
.4byte gBattleFrontierTrainerMons_Kaden
@ 83
.4byte TRAINER_CLASS_SAILOR
.string "MAXWELL$", 8
@ pre-battle speech
- ec_word HEY_THERE
- ec_word WHO_IS
- ec_word YOUR
- ec_word RIVAL
- ec_word QUES
+ .2byte EC_WORD_HEY_THERE
+ .2byte EC_WORD_WHO_IS
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_RIVAL
+ .2byte EC_WORD_QUES
.2byte -1
@ win speech
- ec_word MY
- ec_word RIVAL
- ec_word IS
- ec_word MY
- ec_word GIRL
- ec_word FRIEND
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_RIVAL
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_GIRL
+ .2byte EC_WORD_FRIEND
@ loss speech
- ec_word I_AM
- ec_word MAKING
- ec_word YOU
- ec_word MY
- ec_word RIVAL
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_MAKING
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_RIVAL
.2byte -1
.4byte gBattleFrontierTrainerMons_Maxwell
@@ -2188,49 +2188,49 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_HIKER
.string "DARYL$", 8
@ pre-battle speech
- ec_word I
- ec_word ONLY
- ec_word KNOW
- ec_word HOW
- ec_word TO
- ec_move1 CHARGE
-@ win speech
- ec_word AM
- ec_word I
- ec_word OVERWHELMING
- ec_word OR
- ec_word WHAT
- ec_word QUES
-@ loss speech
- ec_word YOU_RE
- ec_word GOING
- ec_word TO
- ec_word A
- ec_word LEGEND
- ec_word EXCL
+ .2byte EC_WORD_I
+ .2byte EC_WORD_ONLY
+ .2byte EC_WORD_KNOW
+ .2byte EC_WORD_HOW
+ .2byte EC_WORD_TO
+ .2byte EC_MOVE(CHARGE)
+@ win speech
+ .2byte EC_WORD_AM
+ .2byte EC_WORD_I
+ .2byte EC_WORD_OVERWHELMING
+ .2byte EC_WORD_OR
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_QUES
+@ loss speech
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_GOING
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_A
+ .2byte EC_WORD_LEGEND
+ .2byte EC_WORD_EXCL
.4byte gBattleFrontierTrainerMons_Daryl
@ 85
.4byte TRAINER_CLASS_HIKER
.string "KENNETH$", 8
@ pre-battle speech
- ec_word YOU
- ec_word BETTER
- ec_word NOT
- ec_move2 SLACK_OFF
- ec_word WITH
- ec_word ME
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_BETTER
+ .2byte EC_WORD_NOT
+ .2byte EC_MOVE2(SLACK_OFF)
+ .2byte EC_WORD_WITH
+ .2byte EC_WORD_ME
@ win speech
- ec_word DID
- ec_word MY
- ec_move2 TAUNT
- ec_word INTIMIDATE
- ec_word YOU
- ec_word QUES
+ .2byte EC_WORD_DID
+ .2byte EC_WORD_MY
+ .2byte EC_MOVE2(TAUNT)
+ .2byte EC_WORD_INTIMIDATE
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_QUES
@ loss speech
- ec_word I_AM
- ec_word SORRY
- ec_word ELLIPSIS
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_SORRY
+ .2byte EC_WORD_ELLIPSIS
.2byte -1
.2byte -1
.2byte -1
@@ -2240,25 +2240,25 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_HIKER
.string "RICH$", 8
@ pre-battle speech
- ec_word YOUR
- ec_move1 FACADE
- ec_word DOESN_T
- ec_move2 TRICK
- ec_word ME
+ .2byte EC_WORD_YOUR
+ .2byte EC_MOVE(FACADE)
+ .2byte EC_WORD_DOESN_T
+ .2byte EC_MOVE2(TRICK)
+ .2byte EC_WORD_ME
.2byte -1
@ win speech
- ec_word SERIOUSLY
- ec_word ARE
- ec_word YOU
- ec_word REALLY
- ec_word OK_QUES
+ .2byte EC_WORD_SERIOUSLY
+ .2byte EC_WORD_ARE
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_REALLY
+ .2byte EC_WORD_OK_QUES
.2byte -1
@ loss speech
- ec_word THAT_WAS
- ec_word REALLY
- ec_word TOUGH
- ec_word ON
- ec_word ME
+ .2byte EC_WORD_THAT_WAS
+ .2byte EC_WORD_REALLY
+ .2byte EC_WORD_TOUGH
+ .2byte EC_WORD_ON
+ .2byte EC_WORD_ME
.2byte -1
.4byte gBattleFrontierTrainerMons_Rich
@@ -2266,181 +2266,181 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_KINDLER
.string "CADEN$", 8
@ pre-battle speech
- ec_word I
- ec_word CAN_T
- ec_word BE
- ec_word DEFEATED
- ec_word EXCL
+ .2byte EC_WORD_I
+ .2byte EC_WORD_CAN_T
+ .2byte EC_WORD_BE
+ .2byte EC_WORD_DEFEATED
+ .2byte EC_WORD_EXCL
.2byte -1
@ win speech
- ec_word FIRE
- ec_word EXCL
+ .2byte EC_WORD_FIRE
+ .2byte EC_WORD_EXCL
.2byte -1
- ec_word FIRE
- ec_word EXCL_EXCL
+ .2byte EC_WORD_FIRE
+ .2byte EC_WORD_EXCL_EXCL
.2byte -1
@ loss speech
- ec_word I_AM
- ec_word TIRED
- ec_word ELLIPSIS
- ec_word IT_S
- ec_word SO
- ec_word HOT
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_TIRED
+ .2byte EC_WORD_ELLIPSIS
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_HOT
.4byte gBattleFrontierTrainerMons_Caden
@ 88
.4byte TRAINER_CLASS_KINDLER
.string "MARLON$", 8
@ pre-battle speech
- ec_word A
- ec_word POKEDEX
- ec_word IS
- ec_word A_LITTLE
- ec_word RADIO
- ec_word QUES
-@ win speech
- ec_word A_LITTLE
- ec_word RADIO
- ec_word HUH_QUES
- ec_word THAT_S
- ec_word TOTALLY
- ec_word COOL
-@ loss speech
- ec_word IT_S
- ec_word NOT
- ec_word QUES
- ec_word IS
- ec_word POKENAV
- ec_word QUES
+ .2byte EC_WORD_A
+ .2byte EC_WORD_POKEDEX
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_A_LITTLE
+ .2byte EC_WORD_RADIO
+ .2byte EC_WORD_QUES
+@ win speech
+ .2byte EC_WORD_A_LITTLE
+ .2byte EC_WORD_RADIO
+ .2byte EC_WORD_HUH_QUES
+ .2byte EC_WORD_THAT_S
+ .2byte EC_WORD_TOTALLY
+ .2byte EC_WORD_COOL
+@ loss speech
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_QUES
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_POKENAV
+ .2byte EC_WORD_QUES
.4byte gBattleFrontierTrainerMons_Marlon
@ 89
.4byte TRAINER_CLASS_KINDLER
.string "NASH$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word ON
- ec_word FIRE
- ec_word BABY
- ec_word EXCL
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_ON
+ .2byte EC_WORD_FIRE
+ .2byte EC_WORD_BABY
+ .2byte EC_WORD_EXCL
.2byte -1
@ win speech
- ec_word I
- ec_word LEFT
- ec_word YOU
- ec_word JUST
- ec_word AN
- ec_move2 EMBER
+ .2byte EC_WORD_I
+ .2byte EC_WORD_LEFT
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_JUST
+ .2byte EC_WORD_AN
+ .2byte EC_MOVE2(EMBER)
@ loss speech
- ec_word AIYEEH
- ec_word EXCL_EXCL
+ .2byte EC_WORD_AIYEEH
+ .2byte EC_WORD_EXCL_EXCL
.2byte -1
- ec_word NO
- ec_word WATER
- ec_word PLEASE
+ .2byte EC_WORD_NO
+ .2byte EC_WORD_WATER
+ .2byte EC_WORD_PLEASE
.4byte gBattleFrontierTrainerMons_Nash
@ 90
.4byte TRAINER_CLASS_TRIATHLETE_3
.string "ROBBY$", 8
@ pre-battle speech
- ec_word HAHAHA
- ec_word EXCL
- ec_word HAPPY
- ec_word TO
- ec_word MEET_YOU
- ec_word EXCL
-@ win speech
- ec_word I_AM
- ec_word THE
- ec_word LEADER
- ec_word WITH
- ec_word REFRESHING
- ec_word SERENE_GRACE
-@ loss speech
- ec_word I
- ec_word WILL
- ec_move1 THRASH
- ec_word MY
- ec_word TOYS
- ec_word EXCL
+ .2byte EC_WORD_HAHAHA
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_HAPPY
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_MEET_YOU
+ .2byte EC_WORD_EXCL
+@ win speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_LEADER
+ .2byte EC_WORD_WITH
+ .2byte EC_WORD_REFRESHING
+ .2byte EC_WORD_SERENE_GRACE
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WILL
+ .2byte EC_MOVE(THRASH)
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_TOYS
+ .2byte EC_WORD_EXCL
.4byte gBattleFrontierTrainerMons_Robby
@ 91
.4byte TRAINER_CLASS_TRIATHLETE_3
.string "REECE$", 8
@ pre-battle speech
- ec_word MY
- ec_move2 QUICK_ATTACK
- ec_word CAN
- ec_word BEAT
- ec_word A
- ec_move2 TELEPORT
-@ win speech
- ec_word LIKE
- ec_word I
- ec_word SAID
- ec_word I_AM
- ec_word DARN
- ec_word FAST
-@ loss speech
- ec_word I_WAS
- ec_word KIDDING
- ec_word ABOUT
- ec_word THAT
- ec_move2 TELEPORT
- ec_word THING
+ .2byte EC_WORD_MY
+ .2byte EC_MOVE2(QUICK_ATTACK)
+ .2byte EC_WORD_CAN
+ .2byte EC_WORD_BEAT
+ .2byte EC_WORD_A
+ .2byte EC_MOVE2(TELEPORT)
+@ win speech
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_I
+ .2byte EC_WORD_SAID
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_DARN
+ .2byte EC_WORD_FAST
+@ loss speech
+ .2byte EC_WORD_I_WAS
+ .2byte EC_WORD_KIDDING
+ .2byte EC_WORD_ABOUT
+ .2byte EC_WORD_THAT
+ .2byte EC_MOVE2(TELEPORT)
+ .2byte EC_WORD_THING
.4byte gBattleFrontierTrainerMons_Reece
@ 92
.4byte TRAINER_CLASS_TRIATHLETE_4
.string "KATHRYN$", 8
@ pre-battle speech
- ec_word I
- ec_word DON_T
- ec_word TRAIN
- ec_word GOOD
- ec_word ENOUGH
- ec_word QUES
-@ win speech
- ec_word DON_T
- ec_move2 TAUNT
- ec_word ME
- ec_word LIKE
- ec_word THAT
- ec_word OK_QUES
-@ loss speech
- ec_word WHY
- ec_word COULDN_T
- ec_word I
- ec_word WIN
- ec_word THIS
- ec_word QUES
+ .2byte EC_WORD_I
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_TRAIN
+ .2byte EC_WORD_GOOD
+ .2byte EC_WORD_ENOUGH
+ .2byte EC_WORD_QUES
+@ win speech
+ .2byte EC_WORD_DON_T
+ .2byte EC_MOVE2(TAUNT)
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_THAT
+ .2byte EC_WORD_OK_QUES
+@ loss speech
+ .2byte EC_WORD_WHY
+ .2byte EC_WORD_COULDN_T
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WIN
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_QUES
.4byte gBattleFrontierTrainerMons_Kathryn
@ 93
.4byte TRAINER_CLASS_TRIATHLETE_4
.string "ELLEN$", 8
@ pre-battle speech
- ec_word CRUSH
- ec_word YOU
- ec_word LIKE
- ec_word AN
- ec_word EGG
- ec_word EXCL
-@ win speech
- ec_word THAT_WAS
- ec_word A
- ec_word TASTY
- ec_word VICTORY
- ec_word FOR
- ec_word ME
-@ loss speech
- ec_word TOO
- ec_word TOUGH
- ec_word TO
- ec_word CRUSH
- ec_word EXCL
+ .2byte EC_WORD_CRUSH
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_AN
+ .2byte EC_WORD_EGG
+ .2byte EC_WORD_EXCL
+@ win speech
+ .2byte EC_WORD_THAT_WAS
+ .2byte EC_WORD_A
+ .2byte EC_WORD_TASTY
+ .2byte EC_WORD_VICTORY
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_ME
+@ loss speech
+ .2byte EC_WORD_TOO
+ .2byte EC_WORD_TOUGH
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_CRUSH
+ .2byte EC_WORD_EXCL
.2byte -1
.4byte gBattleFrontierTrainerMons_Ellen
@@ -2448,51 +2448,51 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_TRIATHLETE_5
.string "RAMON$", 8
@ pre-battle speech
- ec_word OKAY
- ec_word EXCL
- .2byte -1
- ec_word THIS
- ec_word IS
- ec_word PERFECTION
-@ win speech
- ec_word I_AM
- ec_word HAPPY
- ec_word THAT
- ec_word I
- ec_word WON
- ec_word EXCL
-@ loss speech
- ec_word IT_S
- ec_word A
- ec_word SECRET
- ec_word WHY
- ec_word I_AM
- ec_word HAPPY
+ .2byte EC_WORD_OKAY
+ .2byte EC_WORD_EXCL
+ .2byte -1
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_PERFECTION
+@ win speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_HAPPY
+ .2byte EC_WORD_THAT
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WON
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_A
+ .2byte EC_WORD_SECRET
+ .2byte EC_WORD_WHY
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_HAPPY
.4byte gBattleFrontierTrainerMons_Ramon
@ 95
.4byte TRAINER_CLASS_TRIATHLETE_5
.string "ARTHUR$", 8
@ pre-battle speech
- ec_word HERE_I_COME
- ec_word FEELING
- ec_word READY
- ec_word FOR
- ec_word IT
- ec_word ALL
+ .2byte EC_WORD_HERE_I_COME
+ .2byte EC_WORD_FEELING
+ .2byte EC_WORD_READY
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_IT
+ .2byte EC_WORD_ALL
@ win speech
- ec_word THAT_S_IT_EXCL
+ .2byte EC_WORD_THAT_S_IT_EXCL
.2byte -1
.2byte -1
- ec_word THAT_WAS
- ec_word FABULOUS
- ec_word EXCL
+ .2byte EC_WORD_THAT_WAS
+ .2byte EC_WORD_FABULOUS
+ .2byte EC_WORD_EXCL
@ loss speech
- ec_word THAT_WAS
- ec_word NOT
- ec_word WHAT
- ec_word I
- ec_word NEED
+ .2byte EC_WORD_THAT_WAS
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_I
+ .2byte EC_WORD_NEED
.2byte -1
.4byte gBattleFrontierTrainerMons_Arthur
@@ -2500,51 +2500,51 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_TRIATHLETE_6
.string "ALONDRA$", 8
@ pre-battle speech
- ec_word EVERY
- ec_word DAY
- ec_word IS
- ec_word A
- ec_word GREAT
- ec_word DAY
-@ win speech
- ec_word MY
- ec_move2 DIVE
- ec_word WILL
- ec_word BE
- ec_word A
- ec_word LEGEND
-@ loss speech
- ec_word MY
- ec_move2 DIVE
- ec_word LEFT
- ec_word ME
- ec_word COLD
- ec_word ELLIPSIS
+ .2byte EC_WORD_EVERY
+ .2byte EC_WORD_DAY
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_A
+ .2byte EC_WORD_GREAT
+ .2byte EC_WORD_DAY
+@ win speech
+ .2byte EC_WORD_MY
+ .2byte EC_MOVE2(DIVE)
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_BE
+ .2byte EC_WORD_A
+ .2byte EC_WORD_LEGEND
+@ loss speech
+ .2byte EC_WORD_MY
+ .2byte EC_MOVE2(DIVE)
+ .2byte EC_WORD_LEFT
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_COLD
+ .2byte EC_WORD_ELLIPSIS
.4byte gBattleFrontierTrainerMons_Alondra
@ 97
.4byte TRAINER_CLASS_TRIATHLETE_6
.string "ADRIANA$", 8
@ pre-battle speech
- ec_word COME
- ec_word SEE
- ec_word AN
- ec_word INCREDIBLE
- ec_word SWIFT_SWIM
- ec_word EXCL
-@ win speech
- ec_word I
- ec_word MAKE
- ec_word IT
- ec_word LOOK
- ec_word SO
- ec_word EASY
-@ loss speech
- ec_word I_AM
- ec_word FEELING
- ec_move2 BEAT_UP
- ec_word AND
- ec_word TIRED
+ .2byte EC_WORD_COME
+ .2byte EC_WORD_SEE
+ .2byte EC_WORD_AN
+ .2byte EC_WORD_INCREDIBLE
+ .2byte EC_WORD_SWIFT_SWIM
+ .2byte EC_WORD_EXCL
+@ win speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_MAKE
+ .2byte EC_WORD_IT
+ .2byte EC_WORD_LOOK
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_EASY
+@ loss speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_FEELING
+ .2byte EC_MOVE2(BEAT_UP)
+ .2byte EC_WORD_AND
+ .2byte EC_WORD_TIRED
.2byte -1
.4byte gBattleFrontierTrainerMons_Adriana
@@ -2552,207 +2552,207 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_TRIATHLETE_1
.string "MALIK$", 8
@ pre-battle speech
- ec_word OH
- ec_word NOT
- ec_word ANOTHER
- ec_word BATTLE
- ec_word PLEASE
- ec_word ELLIPSIS
-@ win speech
- ec_word I
- ec_word FINALLY
- ec_word WON
- ec_word ELLIPSIS
- ec_word I_AM
- ec_word TIRED
-@ loss speech
- ec_word I
- ec_word FINALLY
- ec_word LOST
- ec_word ELLIPSIS
- ec_word I_AM
- ec_word TIRED
+ .2byte EC_WORD_OH
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_ANOTHER
+ .2byte EC_WORD_BATTLE
+ .2byte EC_WORD_PLEASE
+ .2byte EC_WORD_ELLIPSIS
+@ win speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_FINALLY
+ .2byte EC_WORD_WON
+ .2byte EC_WORD_ELLIPSIS
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_TIRED
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_FINALLY
+ .2byte EC_WORD_LOST
+ .2byte EC_WORD_ELLIPSIS
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_TIRED
.4byte gBattleFrontierTrainerMons_Malik
@ 99
.4byte TRAINER_CLASS_TRIATHLETE_2
.string "JILL$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word THE
- ec_move2 QUICK_ATTACK
- ec_word TRAINER
- ec_word EXCL
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_THE
+ .2byte EC_MOVE2(QUICK_ATTACK)
+ .2byte EC_WORD_TRAINER
+ .2byte EC_WORD_EXCL
.2byte -1
@ win speech
- ec_word THE
- ec_move2 QUICK_ATTACK
- ec_word TRAINER
- ec_word WINS
- ec_word EXCL
+ .2byte EC_WORD_THE
+ .2byte EC_MOVE2(QUICK_ATTACK)
+ .2byte EC_WORD_TRAINER
+ .2byte EC_WORD_WINS
+ .2byte EC_WORD_EXCL
.2byte -1
@ loss speech
- ec_word THE
- ec_move2 QUICK_ATTACK
- ec_word TRAINER
- ec_word GIVES
- ec_word UP
- ec_word EXCL
+ .2byte EC_WORD_THE
+ .2byte EC_MOVE2(QUICK_ATTACK)
+ .2byte EC_WORD_TRAINER
+ .2byte EC_WORD_GIVES
+ .2byte EC_WORD_UP
+ .2byte EC_WORD_EXCL
.4byte gBattleFrontierTrainerMons_Jill
@ 100
.4byte TRAINER_CLASS_TRIATHLETE_3
.string "ERIK$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word THE
- ec_word SPEED_BOOST
- ec_word HERO
- ec_word EXCL
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_SPEED_BOOST
+ .2byte EC_WORD_HERO
+ .2byte EC_WORD_EXCL
.2byte -1
@ win speech
- ec_word THANK_YOU
- ec_word FROM
- ec_word THE
- ec_word SPEED_BOOST
- ec_word HERO
- ec_word EXCL
+ .2byte EC_WORD_THANK_YOU
+ .2byte EC_WORD_FROM
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_SPEED_BOOST
+ .2byte EC_WORD_HERO
+ .2byte EC_WORD_EXCL
@ loss speech
- ec_word WAAAH
- ec_word EXCL_EXCL
+ .2byte EC_WORD_WAAAH
+ .2byte EC_WORD_EXCL_EXCL
.2byte -1
- ec_word NO
- ec_word NO
- ec_word EXCL_EXCL
+ .2byte EC_WORD_NO
+ .2byte EC_WORD_NO
+ .2byte EC_WORD_EXCL_EXCL
.4byte gBattleFrontierTrainerMons_Erik
@ 101
.4byte TRAINER_CLASS_TRIATHLETE_4
.string "YAZMIN$", 8
@ pre-battle speech
- ec_word I
- ec_word WOULD
- ec_word RATHER
- ec_word RUN
- ec_word THAN
- ec_word BIKE
-@ win speech
- ec_word YES
- ec_word I
- ec_word WOULD
- ec_word MUCH
- ec_word RATHER
- ec_word RUN
-@ loss speech
- ec_word BYE_BYE
- ec_word EXCL
- ec_word I_AM
- ec_word GOING
- ec_word TO
- ec_word RUN_AWAY
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WOULD
+ .2byte EC_WORD_RATHER
+ .2byte EC_WORD_RUN
+ .2byte EC_WORD_THAN
+ .2byte EC_WORD_BIKE
+@ win speech
+ .2byte EC_WORD_YES
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WOULD
+ .2byte EC_WORD_MUCH
+ .2byte EC_WORD_RATHER
+ .2byte EC_WORD_RUN
+@ loss speech
+ .2byte EC_WORD_BYE_BYE
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_GOING
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_RUN_AWAY
.4byte gBattleFrontierTrainerMons_Yazmin
@ 102
.4byte TRAINER_CLASS_TRIATHLETE_5
.string "JAMAL$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word GOING
- ec_word TO
- ec_word BE
- ec_word A
- ec_word FATHER
-@ win speech
- ec_word I
- ec_word CAN_T
- ec_word WAIT
- ec_word FOR
- ec_word MY
- ec_word BABY
-@ loss speech
- ec_word MY
- ec_word BABY
- ec_word WILL
- ec_word BE
- ec_word TOTALLY
- ec_word AWESOME
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_GOING
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_BE
+ .2byte EC_WORD_A
+ .2byte EC_WORD_FATHER
+@ win speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_CAN_T
+ .2byte EC_WORD_WAIT
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_BABY
+@ loss speech
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_BABY
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_BE
+ .2byte EC_WORD_TOTALLY
+ .2byte EC_WORD_AWESOME
.4byte gBattleFrontierTrainerMons_Jamal
@ 103
.4byte TRAINER_CLASS_TRIATHLETE_6
.string "LESLIE$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word GOING
- ec_word TO
- ec_word BE
- ec_word A
- ec_word MOTHER
-@ win speech
- ec_word A
- ec_word BABY
- ec_word WILL
- ec_word BE
- ec_word A_LITTLE
- ec_word CHALLENGE
-@ loss speech
- ec_word I_AM
- ec_word TOO
- ec_word HAPPY
- ec_word TO
- ec_word BE
- ec_word ANGRY
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_GOING
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_BE
+ .2byte EC_WORD_A
+ .2byte EC_WORD_MOTHER
+@ win speech
+ .2byte EC_WORD_A
+ .2byte EC_WORD_BABY
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_BE
+ .2byte EC_WORD_A_LITTLE
+ .2byte EC_WORD_CHALLENGE
+@ loss speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_TOO
+ .2byte EC_WORD_HAPPY
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_BE
+ .2byte EC_WORD_ANGRY
.4byte gBattleFrontierTrainerMons_Leslie
@ 104
.4byte TRAINER_CLASS_TRIATHLETE_1
.string "DAVE$", 8
@ pre-battle speech
- ec_word WHAT
- ec_word SHOULD
- ec_word I
- ec_word DO
- ec_word TODAY
- ec_word QUES
-@ win speech
- ec_word I
- ec_word SHOULD
- ec_word ENJOY
- ec_word SOME
- ec_word SPORTS
- ec_word EXCL
-@ loss speech
- ec_word I
- ec_word WILL
- ec_word GO
- ec_word PLAY
- ec_word A
- ec_word GAME
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_SHOULD
+ .2byte EC_WORD_I
+ .2byte EC_WORD_DO
+ .2byte EC_WORD_TODAY
+ .2byte EC_WORD_QUES
+@ win speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_SHOULD
+ .2byte EC_WORD_ENJOY
+ .2byte EC_WORD_SOME
+ .2byte EC_WORD_SPORTS
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_GO
+ .2byte EC_WORD_PLAY
+ .2byte EC_WORD_A
+ .2byte EC_WORD_GAME
.4byte gBattleFrontierTrainerMons_Dave
@ 105
.4byte TRAINER_CLASS_TRIATHLETE_1
.string "CARLO$", 8
@ pre-battle speech
- ec_word HAH
- ec_word EXCL_EXCL
+ .2byte EC_WORD_HAH
+ .2byte EC_WORD_EXCL_EXCL
.2byte -1
- ec_word YEAH
- ec_word EXCL_EXCL
+ .2byte EC_WORD_YEAH
+ .2byte EC_WORD_EXCL_EXCL
.2byte -1
@ win speech
- ec_word I
- ec_word DO
- ec_word THINGS
- ec_word AT
- ec_move1 EXTREME_SPEED
- ec_word EXCL
+ .2byte EC_WORD_I
+ .2byte EC_WORD_DO
+ .2byte EC_WORD_THINGS
+ .2byte EC_WORD_AT
+ .2byte EC_MOVE(EXTREME_SPEED)
+ .2byte EC_WORD_EXCL
@ loss speech
- ec_word I
- ec_word LOST
- ec_word AT
- ec_move1 EXTREME_SPEED
- ec_word ELLIPSIS
+ .2byte EC_WORD_I
+ .2byte EC_WORD_LOST
+ .2byte EC_WORD_AT
+ .2byte EC_MOVE(EXTREME_SPEED)
+ .2byte EC_WORD_ELLIPSIS
.2byte -1
.4byte gBattleFrontierTrainerMons_Carlo
@@ -2760,103 +2760,103 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_TRIATHLETE_2
.string "EMILIA$", 8
@ pre-battle speech
- ec_word ME
- ec_word WORRY
- ec_word QUES
- ec_word I
- ec_word HAVE
- ec_word NONE
-@ win speech
- ec_word AHAHA
- ec_word SEE
- ec_word QUES
- ec_word THAT_WAS
- ec_word FANTASTIC
- ec_word EXCL
-@ loss speech
- ec_word AHAHA
- ec_word SEE
- ec_word QUES
- ec_word THAT_WAS
- ec_word ENTERTAINING
- ec_word EXCL
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_WORRY
+ .2byte EC_WORD_QUES
+ .2byte EC_WORD_I
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_NONE
+@ win speech
+ .2byte EC_WORD_AHAHA
+ .2byte EC_WORD_SEE
+ .2byte EC_WORD_QUES
+ .2byte EC_WORD_THAT_WAS
+ .2byte EC_WORD_FANTASTIC
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_AHAHA
+ .2byte EC_WORD_SEE
+ .2byte EC_WORD_QUES
+ .2byte EC_WORD_THAT_WAS
+ .2byte EC_WORD_ENTERTAINING
+ .2byte EC_WORD_EXCL
.4byte gBattleFrontierTrainerMons_Emilia
@ 107
.4byte TRAINER_CLASS_TRIATHLETE_2
.string "DALIA$", 8
@ pre-battle speech
- ec_word MY
- ec_word BIKE
- ec_word IS
- ec_word VERY
- ec_word EXPENSIVE
- .2byte -1
-@ win speech
- ec_word DON_T
- ec_word COME
- ec_word NEAR
- ec_word MY
- ec_word BIKE
- ec_word EXCL
-@ loss speech
- ec_word MY
- ec_word BIKE
- ec_word IS
- ec_word MY
- ec_word BEST
- ec_word FRIEND
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_BIKE
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_VERY
+ .2byte EC_WORD_EXPENSIVE
+ .2byte -1
+@ win speech
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_COME
+ .2byte EC_WORD_NEAR
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_BIKE
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_BIKE
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_BEST
+ .2byte EC_WORD_FRIEND
.4byte gBattleFrontierTrainerMons_Dalia
@ 108
.4byte TRAINER_CLASS_BLACK_BELT
.string "HITOMI$", 8
@ pre-battle speech
- ec_word YEAH
- ec_word EXCL_EXCL
+ .2byte EC_WORD_YEAH
+ .2byte EC_WORD_EXCL_EXCL
.2byte -1
- ec_word HAH
- ec_word EXCL_EXCL
+ .2byte EC_WORD_HAH
+ .2byte EC_WORD_EXCL_EXCL
.2byte -1
@ win speech
- ec_word WHAT
- ec_word QUES_EXCL
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_QUES_EXCL
.2byte -1
- ec_word I
- ec_word WON
- ec_word QUES_EXCL
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WON
+ .2byte EC_WORD_QUES_EXCL
@ loss speech
- ec_word AIYEEH
- ec_word EXCL_EXCL
+ .2byte EC_WORD_AIYEEH
+ .2byte EC_WORD_EXCL_EXCL
.2byte -1
- ec_word I_AM
- ec_word SORRY
- ec_word EXCL_EXCL
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_SORRY
+ .2byte EC_WORD_EXCL_EXCL
.4byte gBattleFrontierTrainerMons_Hitomi
@ 109
.4byte TRAINER_CLASS_BLACK_BELT
.string "RICARDO$", 8
@ pre-battle speech
- ec_word COME_ON
- ec_word EXCL
- ec_word PLAY
- ec_word TIME
- ec_word IS
- ec_word OVER
+ .2byte EC_WORD_COME_ON
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_PLAY
+ .2byte EC_WORD_TIME
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_OVER
@ win speech
- ec_word YOU_RE
- ec_word OUT
- ec_word OF
- ec_word HERE
- ec_word EXCL
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_OUT
+ .2byte EC_WORD_OF
+ .2byte EC_WORD_HERE
+ .2byte EC_WORD_EXCL
.2byte -1
@ loss speech
- ec_word PLEASE
- ec_word DON_T
- ec_word HIT
- ec_word ME
- ec_word EXCL
+ .2byte EC_WORD_PLEASE
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_HIT
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_EXCL
.2byte -1
.4byte gBattleFrontierTrainerMons_Ricardo
@@ -2864,178 +2864,178 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_BLACK_BELT
.string "SHIZUKA$", 8
@ pre-battle speech
- ec_word SHOW
- ec_word ME
- ec_word THAT
- ec_word YOU_RE
- ec_word SERIOUS
- ec_word EXCL
-@ win speech
- ec_word I
- ec_word WON_T
- ec_word FORGET
- ec_word ABOUT
- ec_word YOU
- .2byte -1
-@ loss speech
- ec_word YOU_RE
- ec_word PERFECT
- ec_word IN
- ec_word EVERY
- ec_word WAY
- ec_word EXCL
+ .2byte EC_WORD_SHOW
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_THAT
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_SERIOUS
+ .2byte EC_WORD_EXCL
+@ win speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WON_T
+ .2byte EC_WORD_FORGET
+ .2byte EC_WORD_ABOUT
+ .2byte EC_WORD_YOU
+ .2byte -1
+@ loss speech
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_PERFECT
+ .2byte EC_WORD_IN
+ .2byte EC_WORD_EVERY
+ .2byte EC_WORD_WAY
+ .2byte EC_WORD_EXCL
.4byte gBattleFrontierTrainerMons_Shizuka
@ 111
.4byte TRAINER_CLASS_BATTLE_GIRL
.string "JOANA$", 8
@ pre-battle speech
- ec_word YOU_RE
- ec_word GOING
- ec_word TO
- ec_word LOSE
- ec_word RIGHT
- ec_word AWAY
-@ win speech
- ec_word I_AM
- ec_word THE
- ec_word WINNER
- ec_word HEAR
- ec_word ME
- ec_move2 ROAR
-@ loss speech
- ec_word I
- ec_word REFUSE
- ec_word TO
- ec_word ACCEPT
- ec_word THAT
- ec_move1 OUTRAGE
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_GOING
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_LOSE
+ .2byte EC_WORD_RIGHT
+ .2byte EC_WORD_AWAY
+@ win speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_WINNER
+ .2byte EC_WORD_HEAR
+ .2byte EC_WORD_ME
+ .2byte EC_MOVE2(ROAR)
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_REFUSE
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_ACCEPT
+ .2byte EC_WORD_THAT
+ .2byte EC_MOVE(OUTRAGE)
.4byte gBattleFrontierTrainerMons_Joana
@ 112
.4byte TRAINER_CLASS_BATTLE_GIRL
.string "KELLY$", 8
@ pre-battle speech
- ec_word MY
- ec_word NIGHT
- ec_word SCHOOL
- ec_word IS
- ec_word REALLY
- ec_word SCARY
-@ win speech
- ec_word A
- ec_word LADY
- ec_word GHOST
- ec_word APPEARS
- ec_word THERE
- .2byte -1
-@ loss speech
- ec_word THE
- ec_word HOME
- ec_word WORK
- ec_word IS
- ec_word AWFULLY
- ec_word SCARY
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_NIGHT
+ .2byte EC_WORD_SCHOOL
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_REALLY
+ .2byte EC_WORD_SCARY
+@ win speech
+ .2byte EC_WORD_A
+ .2byte EC_WORD_LADY
+ .2byte EC_WORD_GHOST
+ .2byte EC_WORD_APPEARS
+ .2byte EC_WORD_THERE
+ .2byte -1
+@ loss speech
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_HOME
+ .2byte EC_WORD_WORK
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_AWFULLY
+ .2byte EC_WORD_SCARY
.4byte gBattleFrontierTrainerMons_Kelly
@ 113
.4byte TRAINER_CLASS_BATTLE_GIRL
.string "RAYNA$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word NO_1
- ec_word WHEN
- ec_word IT_S
- ec_word ABOUT
- ec_word POWER
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_NO_1
+ .2byte EC_WORD_WHEN
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_ABOUT
+ .2byte EC_WORD_POWER
@ win speech
- ec_word UNDERSTAND
- ec_word MY
- ec_word POWER
- ec_word NOW
- ec_word QUES
+ .2byte EC_WORD_UNDERSTAND
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_POWER
+ .2byte EC_WORD_NOW
+ .2byte EC_WORD_QUES
.2byte -1
@ loss speech
- ec_word TERRIBLE
- ec_word ELLIPSIS
+ .2byte EC_WORD_TERRIBLE
+ .2byte EC_WORD_ELLIPSIS
.2byte -1
- ec_word I_AM
- ec_word TERRIBLE
- ec_word ELLIPSIS
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_TERRIBLE
+ .2byte EC_WORD_ELLIPSIS
.4byte gBattleFrontierTrainerMons_Rayna
@ 114
.4byte TRAINER_CLASS_EXPERT_1
.string "EVAN$", 8
@ pre-battle speech
- ec_word EVERY
- ec_word BATTLE
- ec_word HAS
- ec_word A
- ec_word SMELL
- .2byte -1
-@ win speech
- ec_word OH
- ec_word EXCL
- ec_word THE
- ec_move1 SWEET_SCENT
- ec_word OF
- ec_word VICTORY
-@ loss speech
- ec_word THE
- ec_word AWFUL
- ec_word STENCH
- ec_word OF
- ec_word A
- ec_word LOSS
+ .2byte EC_WORD_EVERY
+ .2byte EC_WORD_BATTLE
+ .2byte EC_WORD_HAS
+ .2byte EC_WORD_A
+ .2byte EC_WORD_SMELL
+ .2byte -1
+@ win speech
+ .2byte EC_WORD_OH
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_THE
+ .2byte EC_MOVE(SWEET_SCENT)
+ .2byte EC_WORD_OF
+ .2byte EC_WORD_VICTORY
+@ loss speech
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_AWFUL
+ .2byte EC_WORD_STENCH
+ .2byte EC_WORD_OF
+ .2byte EC_WORD_A
+ .2byte EC_WORD_LOSS
.4byte gBattleFrontierTrainerMons_Evan
@ 115
.4byte TRAINER_CLASS_EXPERT_1
.string "JORDAN$", 8
@ pre-battle speech
- ec_word GOOD
- ec_word EXCL
+ .2byte EC_WORD_GOOD
+ .2byte EC_WORD_EXCL
.2byte -1
- ec_word COME_ON
- ec_word EXCL_EXCL
+ .2byte EC_WORD_COME_ON
+ .2byte EC_WORD_EXCL_EXCL
.2byte -1
@ win speech
- ec_word YOU
- ec_word CAN_T
- ec_word BEAT
- ec_word ME
- ec_word EXCL
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_CAN_T
+ .2byte EC_WORD_BEAT
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_EXCL
.2byte -1
@ loss speech
- ec_word WHAT
- ec_word QUES_EXCL
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_QUES_EXCL
.2byte -1
- ec_word BUT
- ec_word HOW
- ec_word QUES
+ .2byte EC_WORD_BUT
+ .2byte EC_WORD_HOW
+ .2byte EC_WORD_QUES
.4byte gBattleFrontierTrainerMons_Jordan
@ 116
.4byte TRAINER_CLASS_EXPERT_1
.string "JOEL$", 8
@ pre-battle speech
- ec_word FUFUFU
- ec_word ELLIPSIS
+ .2byte EC_WORD_FUFUFU
+ .2byte EC_WORD_ELLIPSIS
.2byte -1
.2byte -1
.2byte -1
.2byte -1
@ win speech
- ec_word GIGGLE
- ec_word ELLIPSIS
+ .2byte EC_WORD_GIGGLE
+ .2byte EC_WORD_ELLIPSIS
.2byte -1
.2byte -1
.2byte -1
.2byte -1
@ loss speech
- ec_word HAHAHA
- ec_word ELLIPSIS
+ .2byte EC_WORD_HAHAHA
+ .2byte EC_WORD_ELLIPSIS
.2byte -1
.2byte -1
.2byte -1
@@ -3046,129 +3046,129 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_EXPERT_2
.string "KRISTEN$", 8
@ pre-battle speech
- ec_word HAHAHA
- ec_word ELLIPSIS
- .2byte -1
- ec_word A
- ec_word KID
- ec_word ELLIPSIS
-@ win speech
- ec_word JUST
- ec_word A_LITTLE
- ec_word KID
- ec_word AFTER
- ec_word ALL
- ec_word EXCL
-@ loss speech
- ec_word A
- ec_word TOUGH
- ec_word KID
- ec_word HUH_QUES
- ec_word HUMPH
- ec_word EXCL
+ .2byte EC_WORD_HAHAHA
+ .2byte EC_WORD_ELLIPSIS
+ .2byte -1
+ .2byte EC_WORD_A
+ .2byte EC_WORD_KID
+ .2byte EC_WORD_ELLIPSIS
+@ win speech
+ .2byte EC_WORD_JUST
+ .2byte EC_WORD_A_LITTLE
+ .2byte EC_WORD_KID
+ .2byte EC_WORD_AFTER
+ .2byte EC_WORD_ALL
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_A
+ .2byte EC_WORD_TOUGH
+ .2byte EC_WORD_KID
+ .2byte EC_WORD_HUH_QUES
+ .2byte EC_WORD_HUMPH
+ .2byte EC_WORD_EXCL
.4byte gBattleFrontierTrainerMons_Kristen
@ 118
.4byte TRAINER_CLASS_EXPERT_2
.string "SELPHY$", 8
@ pre-battle speech
- ec_word HUH_QUES
- ec_word WHAT
- ec_word IS_IT_QUES
+ .2byte EC_WORD_HUH_QUES
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_IS_IT_QUES
.2byte -1
.2byte -1
.2byte -1
@ win speech
- ec_word OH
- ec_word YES
- ec_word EXCL
- ec_word WHY
- ec_word NOT
- ec_word QUES
+ .2byte EC_WORD_OH
+ .2byte EC_WORD_YES
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_WHY
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_QUES
@ loss speech
- ec_word OH
- ec_word NO
- ec_word EXCL
- ec_word WHY
- ec_word NOT
- ec_word QUES
+ .2byte EC_WORD_OH
+ .2byte EC_WORD_NO
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_WHY
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_QUES
.4byte gBattleFrontierTrainerMons_Selphy
@ 119
.4byte TRAINER_CLASS_EXPERT_2
.string "CHLOE$", 8
@ pre-battle speech
- ec_word COME
- ec_word WE
- ec_word WILL
- ec_word DO
- ec_word BATTLE
- ec_word NOW
+ .2byte EC_WORD_COME
+ .2byte EC_WORD_WE
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_DO
+ .2byte EC_WORD_BATTLE
+ .2byte EC_WORD_NOW
@ win speech
- ec_word MORE
- ec_word EXCL
+ .2byte EC_WORD_MORE
+ .2byte EC_WORD_EXCL
.2byte -1
- ec_word ANOTHER
- ec_word BATTLE
- ec_word EXCL
+ .2byte EC_WORD_ANOTHER
+ .2byte EC_WORD_BATTLE
+ .2byte EC_WORD_EXCL
@ loss speech
- ec_word OH
- ec_word EXCL
+ .2byte EC_WORD_OH
+ .2byte EC_WORD_EXCL
.2byte -1
- ec_word STRONG
- ec_word YOU
- ec_word ARE
+ .2byte EC_WORD_STRONG
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_ARE
.4byte gBattleFrontierTrainerMons_Chloe
@ 120
.4byte TRAINER_CLASS_PSYCHIC_1
.string "NORTON$", 8
@ pre-battle speech
- ec_word I
- ec_word KNOW
- ec_word ONLY
- ec_word YOU
+ .2byte EC_WORD_I
+ .2byte EC_WORD_KNOW
+ .2byte EC_WORD_ONLY
+ .2byte EC_WORD_YOU
.2byte -1
.2byte -1
@ win speech
- ec_word EXCUSE_ME
- ec_word BUT
- ec_word YOU_RE
- ec_word A
- ec_word PUSHOVER
- ec_word EXCL
+ .2byte EC_WORD_EXCUSE_ME
+ .2byte EC_WORD_BUT
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_A
+ .2byte EC_WORD_PUSHOVER
+ .2byte EC_WORD_EXCL
@ loss speech
- ec_word YOU_RE
- ec_word SOME
- ec_word KIND
- ec_word OF
- ec_word AWESOME
- ec_word EXCL
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_SOME
+ .2byte EC_WORD_KIND
+ .2byte EC_WORD_OF
+ .2byte EC_WORD_AWESOME
+ .2byte EC_WORD_EXCL
.4byte gBattleFrontierTrainerMons_Norton
@ 121
.4byte TRAINER_CLASS_PSYCHIC_1
.string "LUKAS$", 8
@ pre-battle speech
- ec_word MY
- ec_word JOKING
- ec_word IS
- ec_word PRETTY
- ec_word TERRIBLE
- ec_word ELLIPSIS
-@ win speech
- ec_word YOUR
- ec_word ROCK_HEAD
- ec_word EXISTS
- ec_word TO
- ec_word SHINE
- ec_word EXCL
-@ loss speech
- ec_word YOUR
- ec_word ROCK_HEAD
- ec_word COME
- ec_word TO
- ec_word SHINE
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_JOKING
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_PRETTY
+ .2byte EC_WORD_TERRIBLE
+ .2byte EC_WORD_ELLIPSIS
+@ win speech
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_ROCK_HEAD
+ .2byte EC_WORD_EXISTS
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_SHINE
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_ROCK_HEAD
+ .2byte EC_WORD_COME
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_SHINE
.2byte -1
.4byte gBattleFrontierTrainerMons_Lukas
@@ -3176,77 +3176,77 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_PSYCHIC_1
.string "ZACH$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word AN
- ec_word EXCELLENT
- ec_move2 MIMIC
- ec_word OF
- ec_word POKEMON
-@ win speech
- ec_word I_AM
- ec_word HAPPY
- ec_word LIKE
- ec_word A_LITTLE
- ec_pokemon2 TOGEPI
- ec_word EXCL
-@ loss speech
- ec_word I_AM
- ec_word ANGRY
- ec_word LIKE
- ec_word A
- ec_pokemon2 MANKEY
- ec_word EXCL
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_AN
+ .2byte EC_WORD_EXCELLENT
+ .2byte EC_MOVE2(MIMIC)
+ .2byte EC_WORD_OF
+ .2byte EC_WORD_POKEMON
+@ win speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_HAPPY
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_A_LITTLE
+ .2byte EC_POKEMON2(TOGEPI)
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_ANGRY
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_A
+ .2byte EC_POKEMON2(MANKEY)
+ .2byte EC_WORD_EXCL
.4byte gBattleFrontierTrainerMons_Zach
@ 123
.4byte TRAINER_CLASS_PSYCHIC_2
.string "KAITLYN$", 8
@ pre-battle speech
- ec_word I
- ec_word CRUSH
- ec_word THINGS
- ec_word WITH
- ec_word PSYCHIC
- ec_word POWER
-@ win speech
- ec_word MY
- ec_word VICTORY
- ec_word WILL
- ec_word MAKE
- ec_word THE
- ec_word NEWS
-@ loss speech
- ec_word NO
- ec_word NO
- ec_word ELLIPSIS
- ec_word THIS
- ec_word WON_T
- ec_word DO
+ .2byte EC_WORD_I
+ .2byte EC_WORD_CRUSH
+ .2byte EC_WORD_THINGS
+ .2byte EC_WORD_WITH
+ .2byte EC_WORD_PSYCHIC
+ .2byte EC_WORD_POWER
+@ win speech
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_VICTORY
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_MAKE
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_NEWS
+@ loss speech
+ .2byte EC_WORD_NO
+ .2byte EC_WORD_NO
+ .2byte EC_WORD_ELLIPSIS
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_WON_T
+ .2byte EC_WORD_DO
.4byte gBattleFrontierTrainerMons_Kaitlyn
@ 124
.4byte TRAINER_CLASS_PSYCHIC_2
.string "BREANNA$", 8
@ pre-battle speech
- ec_word MY
- ec_word POKEMON
- ec_word WILL
- ec_word CRUSH
- ec_word YOU
- ec_word EXCL
-@ win speech
- ec_word HAVE
- ec_word SOME
- ec_word MORE
- ec_word OF
- ec_word THIS
- ec_word EXCL
-@ loss speech
- ec_word YOU
- ec_word HAVE
- ec_word GUTS
- ec_word AND
- ec_word SKILL
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_CRUSH
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_EXCL
+@ win speech
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_SOME
+ .2byte EC_WORD_MORE
+ .2byte EC_WORD_OF
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_GUTS
+ .2byte EC_WORD_AND
+ .2byte EC_WORD_SKILL
.2byte -1
.4byte gBattleFrontierTrainerMons_Breanna
@@ -3254,25 +3254,25 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_PSYCHIC_2
.string "KENDRA$", 8
@ pre-battle speech
- ec_word IF
- ec_word YOU_RE
- ec_word SMART
- ec_word STOP
- ec_word RIGHT
- ec_word NOW
-@ win speech
- ec_word I
- ec_word SAID
- ec_word THAT
- ec_word YOU
- ec_word SHOULD
- ec_word STOP
-@ loss speech
- ec_word WHY
- ec_word DIDN_T
- ec_word YOU
- ec_word STOP
- ec_word QUES
+ .2byte EC_WORD_IF
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_SMART
+ .2byte EC_WORD_STOP
+ .2byte EC_WORD_RIGHT
+ .2byte EC_WORD_NOW
+@ win speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_SAID
+ .2byte EC_WORD_THAT
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_SHOULD
+ .2byte EC_WORD_STOP
+@ loss speech
+ .2byte EC_WORD_WHY
+ .2byte EC_WORD_DIDN_T
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_STOP
+ .2byte EC_WORD_QUES
.2byte -1
.4byte gBattleFrontierTrainerMons_Kendra
@@ -3280,25 +3280,25 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_HEX_MANIAC
.string "MOLLY$", 8
@ pre-battle speech
- ec_word WILL
- ec_word MY
- ec_word CUTE_CHARM
- ec_move2 ATTRACT
- ec_word YOU
- ec_word QUES
-@ win speech
- ec_word YOUR
- ec_word POKEMON
- ec_word ARE
- ec_word MY
- ec_word TOYS
- ec_word NOW
-@ loss speech
- ec_word OH
- ec_word HOW
- ec_word COULD
- ec_word YOU
- ec_word QUES
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_CUTE_CHARM
+ .2byte EC_MOVE2(ATTRACT)
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_QUES
+@ win speech
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_ARE
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_TOYS
+ .2byte EC_WORD_NOW
+@ loss speech
+ .2byte EC_WORD_OH
+ .2byte EC_WORD_HOW
+ .2byte EC_WORD_COULD
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_QUES
.2byte -1
.4byte gBattleFrontierTrainerMons_Molly
@@ -3306,205 +3306,205 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_HEX_MANIAC
.string "JAZMIN$", 8
@ pre-battle speech
- ec_word I
- ec_word FORECAST
- ec_word TERRIBLE
- ec_word THINGS
- ec_word FOR
- ec_word YOU
-@ win speech
- ec_word THERE
- ec_word WASN_T
- ec_word MY
- ec_word FORECAST
- ec_word RIGHT
- ec_word QUES
-@ loss speech
- ec_word MY
- ec_move2 FORESIGHT
- ec_word DIDN_T
- ec_word SHOW
- ec_word ME
- ec_word THIS
+ .2byte EC_WORD_I
+ .2byte EC_WORD_FORECAST
+ .2byte EC_WORD_TERRIBLE
+ .2byte EC_WORD_THINGS
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_YOU
+@ win speech
+ .2byte EC_WORD_THERE
+ .2byte EC_WORD_WASN_T
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_FORECAST
+ .2byte EC_WORD_RIGHT
+ .2byte EC_WORD_QUES
+@ loss speech
+ .2byte EC_WORD_MY
+ .2byte EC_MOVE2(FORESIGHT)
+ .2byte EC_WORD_DIDN_T
+ .2byte EC_WORD_SHOW
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_THIS
.4byte gBattleFrontierTrainerMons_Jazmin
@ 128
.4byte TRAINER_CLASS_HEX_MANIAC
.string "KELSEY$", 8
@ pre-battle speech
- ec_word I
- ec_word HAVEN_T
- ec_word SLEPT
- ec_word IN
- ec_word DAYS
- ec_word ELLIPSIS
-@ win speech
- ec_word MY
- ec_word SLEEP
- ec_word WILL
- ec_word BE
- ec_word EXCELLENT
- ec_word NOW
-@ loss speech
- ec_word YOU
- ec_word HAVE
- ec_word DESTROYED
- ec_word MY
- ec_word SLEEP
- ec_word ELLIPSIS
+ .2byte EC_WORD_I
+ .2byte EC_WORD_HAVEN_T
+ .2byte EC_WORD_SLEPT
+ .2byte EC_WORD_IN
+ .2byte EC_WORD_DAYS
+ .2byte EC_WORD_ELLIPSIS
+@ win speech
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_SLEEP
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_BE
+ .2byte EC_WORD_EXCELLENT
+ .2byte EC_WORD_NOW
+@ loss speech
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_DESTROYED
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_SLEEP
+ .2byte EC_WORD_ELLIPSIS
.4byte gBattleFrontierTrainerMons_Kelsey
@ 129
.4byte TRAINER_CLASS_POKEMANIAC
.string "JALEN$", 8
@ pre-battle speech
- ec_word I
- ec_word DON_T
- ec_word ALLOW
- ec_word POKEMON
- ec_word TO
- ec_move1 THRASH
-@ win speech
- ec_word HAHAHA
- ec_word EXCL
- ec_word ARE
- ec_word YOU
- ec_word ANGRY
- ec_word QUES
-@ loss speech
- ec_word WHY
- ec_word IS
- ec_word THIS
- ec_word SO
- ec_word HARD
- ec_word QUES
+ .2byte EC_WORD_I
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_ALLOW
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_TO
+ .2byte EC_MOVE(THRASH)
+@ win speech
+ .2byte EC_WORD_HAHAHA
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_ARE
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_ANGRY
+ .2byte EC_WORD_QUES
+@ loss speech
+ .2byte EC_WORD_WHY
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_HARD
+ .2byte EC_WORD_QUES
.4byte gBattleFrontierTrainerMons_Jalen
@ 130
.4byte TRAINER_CLASS_POKEMANIAC
.string "GRIFFEN$", 8
@ pre-battle speech
- ec_word I
- ec_move2 SWALLOW
- ec_move2 SLUDGE
- ec_word TO
- ec_move2 TRANSFORM
- ec_word MYSELF
-@ win speech
- ec_word I
- ec_word HAVE
- ec_word A
- ec_move1 GROWTH
- ec_word OF
- ec_move2 ACID_ARMOR
-@ loss speech
- ec_word I
- ec_word HAVE
- ec_word A
- ec_move1 GROWTH
- ec_word OF
- ec_word SUCTION_CUPS
+ .2byte EC_WORD_I
+ .2byte EC_MOVE2(SWALLOW)
+ .2byte EC_MOVE2(SLUDGE)
+ .2byte EC_WORD_TO
+ .2byte EC_MOVE2(TRANSFORM)
+ .2byte EC_WORD_MYSELF
+@ win speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_A
+ .2byte EC_MOVE(GROWTH)
+ .2byte EC_WORD_OF
+ .2byte EC_MOVE2(ACID_ARMOR)
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_A
+ .2byte EC_MOVE(GROWTH)
+ .2byte EC_WORD_OF
+ .2byte EC_WORD_SUCTION_CUPS
.4byte gBattleFrontierTrainerMons_Griffen
@ 131
.4byte TRAINER_CLASS_POKEMANIAC
.string "XANDER$", 8
@ pre-battle speech
- ec_word I
- ec_word GOT
- ec_word MY
- ec_word POKEMON
- ec_word ON
- ec_word RENTAL
-@ win speech
- ec_word IT_S
- ec_word INCREDIBLE
- ec_word MY
- ec_word RENTAL
- ec_word POKEMON
- ec_word WON
-@ loss speech
- ec_word RENTAL
- ec_word POKEMON
- ec_word AREN_T
- ec_word UP
- ec_word TO
- ec_move2 SCRATCH
+ .2byte EC_WORD_I
+ .2byte EC_WORD_GOT
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_ON
+ .2byte EC_WORD_RENTAL
+@ win speech
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_INCREDIBLE
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_RENTAL
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_WON
+@ loss speech
+ .2byte EC_WORD_RENTAL
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_AREN_T
+ .2byte EC_WORD_UP
+ .2byte EC_WORD_TO
+ .2byte EC_MOVE2(SCRATCH)
.4byte gBattleFrontierTrainerMons_Xander
@ 132
.4byte TRAINER_CLASS_GENTLEMAN
.string "MARVIN$", 8
@ pre-battle speech
- ec_word YOU_RE
- ec_word UP
- ec_word TO
- ec_word THE
- ec_word CHALLENGE
- ec_word QUES
-@ win speech
- ec_word I
- ec_word DIDN_T
- ec_word THINK
- ec_word YOU_RE
- ec_word GOOD
- ec_word ENOUGH
-@ loss speech
- ec_word I_AM
- ec_word FEELING
- ec_word PERFECT
- ec_word THANK_YOU
- ec_word SO
- ec_word MUCH
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_UP
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_CHALLENGE
+ .2byte EC_WORD_QUES
+@ win speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_DIDN_T
+ .2byte EC_WORD_THINK
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_GOOD
+ .2byte EC_WORD_ENOUGH
+@ loss speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_FEELING
+ .2byte EC_WORD_PERFECT
+ .2byte EC_WORD_THANK_YOU
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_MUCH
.4byte gBattleFrontierTrainerMons_Marvin
@ 133
.4byte TRAINER_CLASS_GENTLEMAN
.string "BRENNAN$", 8
@ pre-battle speech
- ec_word I
- ec_move2 WISH
- ec_word TO
- ec_word SEE
- ec_word THE
- ec_word NEWS
-@ win speech
- ec_word COMICS
- ec_word GET
- ec_word DAMP
- ec_word FROM
- ec_word DRIZZLE
- ec_word QUES
-@ loss speech
- ec_word THE
- ec_word TIGHT
- ec_word MONEY
- ec_word LIVING
- ec_word CHANNEL
- ec_word QUES_EXCL
+ .2byte EC_WORD_I
+ .2byte EC_MOVE2(WISH)
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_SEE
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_NEWS
+@ win speech
+ .2byte EC_WORD_COMICS
+ .2byte EC_WORD_GET
+ .2byte EC_WORD_DAMP
+ .2byte EC_WORD_FROM
+ .2byte EC_WORD_DRIZZLE
+ .2byte EC_WORD_QUES
+@ loss speech
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_TIGHT
+ .2byte EC_WORD_MONEY
+ .2byte EC_WORD_LIVING
+ .2byte EC_WORD_CHANNEL
+ .2byte EC_WORD_QUES_EXCL
.4byte gBattleFrontierTrainerMons_Brennan
@ 134
.4byte TRAINER_CLASS_BUG_MANIAC
.string "BALEY$", 8
@ pre-battle speech
- ec_move1 SCREECH
- ec_word IS
- ec_word LIKE
- ec_word MUSIC
- ec_word TO_ME
- ec_word EXCL
+ .2byte EC_MOVE(SCREECH)
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_MUSIC
+ .2byte EC_WORD_TO_ME
+ .2byte EC_WORD_EXCL
@ win speech
- ec_word MY
- ec_move1 SCREECH
- ec_word STRATEGY
- ec_word IS
- ec_word THE
- ec_word BEST
+ .2byte EC_WORD_MY
+ .2byte EC_MOVE(SCREECH)
+ .2byte EC_WORD_STRATEGY
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_BEST
@ loss speech
- ec_word YOU_RE
- ec_word SOUNDPROOF
- ec_word QUES
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_SOUNDPROOF
+ .2byte EC_WORD_QUES
.2byte -1
.2byte -1
.2byte -1
@@ -3514,51 +3514,51 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_RUIN_MANIAC
.string "ZACKARY$", 8
@ pre-battle speech
- ec_word CAN
- ec_word YOU
- ec_move1 DIG
- ec_word IT
- ec_word YO
- ec_word QUES
-@ win speech
- ec_move2 TAKE_DOWN
- ec_word TAKE
- ec_word A
- ec_move2 DIVE
- ec_word YO
- ec_word YO
-@ loss speech
- ec_word BREAK
- ec_word DOWN
- ec_move2 DIVE
- ec_word TIME
- ec_word FOR
- ec_word ME
+ .2byte EC_WORD_CAN
+ .2byte EC_WORD_YOU
+ .2byte EC_MOVE(DIG)
+ .2byte EC_WORD_IT
+ .2byte EC_WORD_YO
+ .2byte EC_WORD_QUES
+@ win speech
+ .2byte EC_MOVE2(TAKE_DOWN)
+ .2byte EC_WORD_TAKE
+ .2byte EC_WORD_A
+ .2byte EC_MOVE2(DIVE)
+ .2byte EC_WORD_YO
+ .2byte EC_WORD_YO
+@ loss speech
+ .2byte EC_WORD_BREAK
+ .2byte EC_WORD_DOWN
+ .2byte EC_MOVE2(DIVE)
+ .2byte EC_WORD_TIME
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_ME
.4byte gBattleFrontierTrainerMons_Zackary
@ 136
.4byte TRAINER_CLASS_COLLECTOR
.string "GABRIEL$", 8
@ pre-battle speech
- ec_move2 POUND
- ec_word THE
- ec_word THICK_FAT
- ec_word ON
- ec_word MY
- ec_move2 BELLY_DRUM
-@ win speech
- ec_move2 POUND
- ec_word MY
- ec_move2 BELLY_DRUM
- ec_move2 POUND
- ec_word MY
- ec_move2 BELLY_DRUM
-@ loss speech
- ec_word MY
- ec_move2 BELLY_DRUM
- ec_word WAS
- ec_word TOO_WEAK
- ec_word ELLIPSIS
+ .2byte EC_MOVE2(POUND)
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_THICK_FAT
+ .2byte EC_WORD_ON
+ .2byte EC_WORD_MY
+ .2byte EC_MOVE2(BELLY_DRUM)
+@ win speech
+ .2byte EC_MOVE2(POUND)
+ .2byte EC_WORD_MY
+ .2byte EC_MOVE2(BELLY_DRUM)
+ .2byte EC_MOVE2(POUND)
+ .2byte EC_WORD_MY
+ .2byte EC_MOVE2(BELLY_DRUM)
+@ loss speech
+ .2byte EC_WORD_MY
+ .2byte EC_MOVE2(BELLY_DRUM)
+ .2byte EC_WORD_WAS
+ .2byte EC_WORD_TOO_WEAK
+ .2byte EC_WORD_ELLIPSIS
.2byte -1
.4byte gBattleFrontierTrainerMons_Gabriel
@@ -3566,77 +3566,77 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_PARASOL_LADY
.string "EMILY$", 8
@ pre-battle speech
- ec_word HOW
- ec_word ABOUT
- ec_word A_TINY_BIT
- ec_word OF
- ec_move1 HYPNOSIS
- ec_word QUES
-@ win speech
- ec_word MY
- ec_move1 HYPNOSIS
- ec_word STRATEGY
- ec_word WORKS
- ec_word TO
- ec_word PERFECTION
-@ loss speech
- ec_word MY
- ec_move1 HYPNOSIS
- ec_word STRATEGY
- ec_word WENT
- ec_word BADLY
- ec_word ELLIPSIS
+ .2byte EC_WORD_HOW
+ .2byte EC_WORD_ABOUT
+ .2byte EC_WORD_A_TINY_BIT
+ .2byte EC_WORD_OF
+ .2byte EC_MOVE(HYPNOSIS)
+ .2byte EC_WORD_QUES
+@ win speech
+ .2byte EC_WORD_MY
+ .2byte EC_MOVE(HYPNOSIS)
+ .2byte EC_WORD_STRATEGY
+ .2byte EC_WORD_WORKS
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_PERFECTION
+@ loss speech
+ .2byte EC_WORD_MY
+ .2byte EC_MOVE(HYPNOSIS)
+ .2byte EC_WORD_STRATEGY
+ .2byte EC_WORD_WENT
+ .2byte EC_WORD_BADLY
+ .2byte EC_WORD_ELLIPSIS
.4byte gBattleFrontierTrainerMons_Emily
@ 138
.4byte TRAINER_CLASS_BEAUTY
.string "JORDYN$", 8
@ pre-battle speech
- ec_word YOU
- ec_word DON_T
- ec_word KNOW
- ec_word MY
- ec_word SECRET
- ec_word ELLIPSIS
-@ win speech
- ec_word I_AM
- ec_word NOT
- ec_word AS
- ec_word I
- ec_word APPEAR
- ec_word ELLIPSIS
-@ loss speech
- ec_word BUT
- ec_word HOW
- ec_word DID
- ec_word YOU
- ec_word KNOW
- ec_word QUES
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_KNOW
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_SECRET
+ .2byte EC_WORD_ELLIPSIS
+@ win speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_AS
+ .2byte EC_WORD_I
+ .2byte EC_WORD_APPEAR
+ .2byte EC_WORD_ELLIPSIS
+@ loss speech
+ .2byte EC_WORD_BUT
+ .2byte EC_WORD_HOW
+ .2byte EC_WORD_DID
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_KNOW
+ .2byte EC_WORD_QUES
.4byte gBattleFrontierTrainerMons_Jordyn
@ 139
.4byte TRAINER_CLASS_AROMA_LADY
.string "SOFIA$", 8
@ pre-battle speech
- ec_pokemon1 LOUDRED
- ec_word PROBABLY
- ec_word HAS
- ec_word A
- ec_move1 SWEET_SCENT
+ .2byte EC_POKEMON(LOUDRED)
+ .2byte EC_WORD_PROBABLY
+ .2byte EC_WORD_HAS
+ .2byte EC_WORD_A
+ .2byte EC_MOVE(SWEET_SCENT)
.2byte -1
@ win speech
- ec_word THAT_S
- ec_word THE
- ec_word FEELING
- ec_word THAT
- ec_word I
- ec_word GET
+ .2byte EC_WORD_THAT_S
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_FEELING
+ .2byte EC_WORD_THAT
+ .2byte EC_WORD_I
+ .2byte EC_WORD_GET
@ loss speech
- ec_word I
- ec_word WORK
- ec_word AT
- ec_word THE
- ec_word DEPT_STORE
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WORK
+ .2byte EC_WORD_AT
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_DEPT_STORE
.2byte -1
.4byte gBattleFrontierTrainerMons_Sofia
@@ -3644,51 +3644,51 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_COOLTRAINER_1
.string "BRADEN$", 8
@ pre-battle speech
- ec_word I_CHOOSE_YOU
- ec_word EXCL
+ .2byte EC_WORD_I_CHOOSE_YOU
+ .2byte EC_WORD_EXCL
.2byte -1
- ec_word THIS_IS_IT_EXCL
+ .2byte EC_WORD_THIS_IS_IT_EXCL
.2byte -1
.2byte -1
@ win speech
- ec_word I_AM
- ec_word FEELING
- ec_word PRETTY
- ec_word AWESOME
- ec_word ABOUT
- ec_word MYSELF
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_FEELING
+ .2byte EC_WORD_PRETTY
+ .2byte EC_WORD_AWESOME
+ .2byte EC_WORD_ABOUT
+ .2byte EC_WORD_MYSELF
@ loss speech
- ec_word ALL_RIGHT
- ec_word EXCL
+ .2byte EC_WORD_ALL_RIGHT
+ .2byte EC_WORD_EXCL
.2byte -1
- ec_word I
- ec_word SURRENDER
- ec_word EXCL
+ .2byte EC_WORD_I
+ .2byte EC_WORD_SURRENDER
+ .2byte EC_WORD_EXCL
.4byte gBattleFrontierTrainerMons_Braden
@ 141
.4byte TRAINER_CLASS_COOLTRAINER_1
.string "KAYDEN$", 8
@ pre-battle speech
- ec_word THEY
- ec_word OVERDO
- ec_word THAT
- ec_word GOURMET
- ec_word THING
- ec_word ELLIPSIS
-@ win speech
- ec_word THAT
- ec_word GOURMET
- ec_word THING
- ec_word ISN_T
- ec_word FOR
- ec_word ME
-@ loss speech
- ec_word HEY
- ec_word THIS
- ec_word IS
- ec_word PRETTY
- ec_word TASTY
+ .2byte EC_WORD_THEY
+ .2byte EC_WORD_OVERDO
+ .2byte EC_WORD_THAT
+ .2byte EC_WORD_GOURMET
+ .2byte EC_WORD_THING
+ .2byte EC_WORD_ELLIPSIS
+@ win speech
+ .2byte EC_WORD_THAT
+ .2byte EC_WORD_GOURMET
+ .2byte EC_WORD_THING
+ .2byte EC_WORD_ISN_T
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_ME
+@ loss speech
+ .2byte EC_WORD_HEY
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_PRETTY
+ .2byte EC_WORD_TASTY
.2byte -1
.4byte gBattleFrontierTrainerMons_Kayden
@@ -3696,259 +3696,259 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_COOLTRAINER_1
.string "COOPER$", 8
@ pre-battle speech
- ec_word THIS
- ec_word SHOULD
- ec_word ABSOLUTELY
- ec_word BE
- ec_word A
- ec_word PUSHOVER
-@ win speech
- ec_word THAT_WAS
- ec_word TOO
- ec_word EXCITING
- ec_word FOR
- ec_word ME
- ec_word ELLIPSIS
-@ loss speech
- ec_word PLEASE
- ec_word EXCL
- .2byte -1
- ec_word SORRY
- ec_word I_AM
- ec_word SORRY
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_SHOULD
+ .2byte EC_WORD_ABSOLUTELY
+ .2byte EC_WORD_BE
+ .2byte EC_WORD_A
+ .2byte EC_WORD_PUSHOVER
+@ win speech
+ .2byte EC_WORD_THAT_WAS
+ .2byte EC_WORD_TOO
+ .2byte EC_WORD_EXCITING
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_ELLIPSIS
+@ loss speech
+ .2byte EC_WORD_PLEASE
+ .2byte EC_WORD_EXCL
+ .2byte -1
+ .2byte EC_WORD_SORRY
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_SORRY
.4byte gBattleFrontierTrainerMons_Cooper
@ 143
.4byte TRAINER_CLASS_COOLTRAINER_2
.string "JULIA$", 8
@ pre-battle speech
- ec_word SPIRIT
- ec_word ALONE
- ec_word WON_T
- ec_word MAKE
- ec_word YOU
- ec_word WIN
-@ win speech
- ec_word YOU
- ec_word SHOULD
- ec_word ACCEPT
- ec_word THIS
- ec_word WITH
- ec_word SERENE_GRACE
-@ loss speech
- ec_word FOR_NOW
- ec_word GOOD_BYE
- ec_word BUT
- ec_word IT_S
- ec_word NOT
- ec_word OVER
+ .2byte EC_WORD_SPIRIT
+ .2byte EC_WORD_ALONE
+ .2byte EC_WORD_WON_T
+ .2byte EC_WORD_MAKE
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_WIN
+@ win speech
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_SHOULD
+ .2byte EC_WORD_ACCEPT
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_WITH
+ .2byte EC_WORD_SERENE_GRACE
+@ loss speech
+ .2byte EC_WORD_FOR_NOW
+ .2byte EC_WORD_GOOD_BYE
+ .2byte EC_WORD_BUT
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_OVER
.4byte gBattleFrontierTrainerMons_Julia
@ 144
.4byte TRAINER_CLASS_COOLTRAINER_2
.string "AMARA$", 8
@ pre-battle speech
- ec_word WROOOAAR_EXCL
- ec_word EXCL_EXCL
- ec_word I_AM
- ec_word SO
- ec_word READY
- ec_word EXCL_EXCL
-@ win speech
- ec_word I
- ec_word LOSE
- ec_word MYSELF
- ec_word IF
- ec_word IT_S
- ec_word EXCITING
-@ loss speech
- ec_word THAT_S
- ec_word TOO
- ec_word MUCH
- ec_word TO
- ec_move2 TACKLE
- ec_word EXCL
+ .2byte EC_WORD_WROOOAAR_EXCL
+ .2byte EC_WORD_EXCL_EXCL
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_READY
+ .2byte EC_WORD_EXCL_EXCL
+@ win speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_LOSE
+ .2byte EC_WORD_MYSELF
+ .2byte EC_WORD_IF
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_EXCITING
+@ loss speech
+ .2byte EC_WORD_THAT_S
+ .2byte EC_WORD_TOO
+ .2byte EC_WORD_MUCH
+ .2byte EC_WORD_TO
+ .2byte EC_MOVE2(TACKLE)
+ .2byte EC_WORD_EXCL
.4byte gBattleFrontierTrainerMons_Amara
@ 145
.4byte TRAINER_CLASS_COOLTRAINER_2
.string "LYNN$", 8
@ pre-battle speech
- ec_word YOUR
- ec_word SECRET
- ec_word CAN_T
- ec_word BE
- ec_word HIDDEN
- ec_word FOREVER
-@ win speech
- ec_word I
- ec_word KNOW
- ec_word YOUR
- ec_word SECRET
- ec_word NOW
- ec_word EXCL
-@ loss speech
- ec_word YOU
- ec_word CAN_T
- ec_move1 SAFEGUARD
- ec_word YOUR
- ec_word OWN
- ec_word SECRET
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_SECRET
+ .2byte EC_WORD_CAN_T
+ .2byte EC_WORD_BE
+ .2byte EC_WORD_HIDDEN
+ .2byte EC_WORD_FOREVER
+@ win speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_KNOW
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_SECRET
+ .2byte EC_WORD_NOW
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_CAN_T
+ .2byte EC_MOVE(SAFEGUARD)
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_OWN
+ .2byte EC_WORD_SECRET
.4byte gBattleFrontierTrainerMons_Lynn
@ 146
.4byte TRAINER_CLASS_PKMN_RANGER_1
.string "JOVAN$", 8
@ pre-battle speech
- ec_word YOUR
- ec_word BATTLE
- ec_word SENSE
- ec_word IS
- ec_word SADLY
- ec_word LACKING
-@ win speech
- ec_word MY
- ec_word BATTLE
- ec_word SENSE
- ec_word IS
- ec_word COOL
- ec_word ISN_T_IT_QUES
-@ loss speech
- ec_word I_WAS
- ec_word MINUS
- ec_word MY
- ec_word NORMAL
- ec_word POWER
- ec_word TODAY
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_BATTLE
+ .2byte EC_WORD_SENSE
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_SADLY
+ .2byte EC_WORD_LACKING
+@ win speech
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_BATTLE
+ .2byte EC_WORD_SENSE
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_COOL
+ .2byte EC_WORD_ISN_T_IT_QUES
+@ loss speech
+ .2byte EC_WORD_I_WAS
+ .2byte EC_WORD_MINUS
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_NORMAL
+ .2byte EC_WORD_POWER
+ .2byte EC_WORD_TODAY
.4byte gBattleFrontierTrainerMons_Jovan
@ 147
.4byte TRAINER_CLASS_PKMN_RANGER_1
.string "DOMINIC$", 8
@ pre-battle speech
- ec_word I
- ec_word HAVE
- ec_word THIS
- ec_word EXCELLENT
- ec_word CAMERA
+ .2byte EC_WORD_I
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_EXCELLENT
+ .2byte EC_WORD_CAMERA
.2byte -1
@ win speech
- ec_word MY
- ec_word CAMERA
- ec_word WAS
- ec_word AWFULLY
- ec_word EXPENSIVE
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_CAMERA
+ .2byte EC_WORD_WAS
+ .2byte EC_WORD_AWFULLY
+ .2byte EC_WORD_EXPENSIVE
.2byte -1
@ loss speech
- ec_word MY
- ec_word CAMERA
- ec_word DOESN_T
- ec_word MISS
- ec_word A
- ec_word THING
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_CAMERA
+ .2byte EC_WORD_DOESN_T
+ .2byte EC_WORD_MISS
+ .2byte EC_WORD_A
+ .2byte EC_WORD_THING
.4byte gBattleFrontierTrainerMons_Dominic
@ 148
.4byte TRAINER_CLASS_PKMN_RANGER_1
.string "NIKOLAS$", 8
@ pre-battle speech
- ec_word I
- ec_move2 MIMIC
- ec_word POKEMON
- ec_word AFTER
- ec_word EVERY
- ec_word BATTLE
-@ win speech
- ec_word IF_I_WIN
- ec_word I
- ec_word PRETEND
- ec_word I_AM
- ec_word A
- ec_pokemon2 TAUROS
-@ loss speech
- ec_word IF_I_LOSE
- ec_word I
- ec_word PRETEND
- ec_word I_AM
- ec_word A
- ec_pokemon2 MILTANK
+ .2byte EC_WORD_I
+ .2byte EC_MOVE2(MIMIC)
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_AFTER
+ .2byte EC_WORD_EVERY
+ .2byte EC_WORD_BATTLE
+@ win speech
+ .2byte EC_WORD_IF_I_WIN
+ .2byte EC_WORD_I
+ .2byte EC_WORD_PRETEND
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_A
+ .2byte EC_POKEMON2(TAUROS)
+@ loss speech
+ .2byte EC_WORD_IF_I_LOSE
+ .2byte EC_WORD_I
+ .2byte EC_WORD_PRETEND
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_A
+ .2byte EC_POKEMON2(MILTANK)
.4byte gBattleFrontierTrainerMons_Nikolas
@ 149
.4byte TRAINER_CLASS_PKMN_RANGER_2
.string "VALERIA$", 8
@ pre-battle speech
- ec_word I
- ec_move2 WISH
- ec_word YOU
- ec_word WOULD
- ec_word NOT
- ec_move2 GLARE
-@ win speech
- ec_word YOU_RE
- ec_word MEAN
- ec_word EXCL
- ec_word I
- ec_word MEAN
- ec_word REALLY
-@ loss speech
- ec_word YOU
- ec_word HAVE
- ec_word A
- ec_word REALLY
- ec_move1 SCARY_FACE
- ec_word EXCL
+ .2byte EC_WORD_I
+ .2byte EC_MOVE2(WISH)
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_WOULD
+ .2byte EC_WORD_NOT
+ .2byte EC_MOVE2(GLARE)
+@ win speech
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_MEAN
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_I
+ .2byte EC_WORD_MEAN
+ .2byte EC_WORD_REALLY
+@ loss speech
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_A
+ .2byte EC_WORD_REALLY
+ .2byte EC_MOVE(SCARY_FACE)
+ .2byte EC_WORD_EXCL
.4byte gBattleFrontierTrainerMons_Valeria
@ 150
.4byte TRAINER_CLASS_PKMN_RANGER_2
.string "DELANEY$", 8
@ pre-battle speech
- ec_word SCHOOL
- ec_word IS
- ec_word OVER
- ec_word TIME
- ec_word TO
- ec_word PLAY
-@ win speech
- ec_word MY
- ec_word BOY
- ec_word FRIEND
- ec_word IS
- ec_word FROM
- ec_word SCHOOL
-@ loss speech
- ec_word I
- ec_word HAVE
- ec_word TO
- ec_word WORK
- ec_word NEXT
- ec_word WEEK
+ .2byte EC_WORD_SCHOOL
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_OVER
+ .2byte EC_WORD_TIME
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_PLAY
+@ win speech
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_BOY
+ .2byte EC_WORD_FRIEND
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_FROM
+ .2byte EC_WORD_SCHOOL
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_WORK
+ .2byte EC_WORD_NEXT
+ .2byte EC_WORD_WEEK
.4byte gBattleFrontierTrainerMons_Delaney
@ 151
.4byte TRAINER_CLASS_PKMN_RANGER_2
.string "MEGHAN$", 8
@ pre-battle speech
- ec_word SCHOOL
- ec_word IS
- ec_word OUT
- ec_word TIME
- ec_word TO
- ec_word PLAY
+ .2byte EC_WORD_SCHOOL
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_OUT
+ .2byte EC_WORD_TIME
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_PLAY
@ win speech
- ec_word MY
- ec_word BOY
- ec_word FRIEND
- ec_word LIKES
- ec_word COMICS
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_BOY
+ .2byte EC_WORD_FRIEND
+ .2byte EC_WORD_LIKES
+ .2byte EC_WORD_COMICS
.2byte -1
@ loss speech
- ec_word IT_S
- ec_word BACK
- ec_word TO
- ec_word SCHOOL
- ec_word SOON
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_BACK
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_SCHOOL
+ .2byte EC_WORD_SOON
.2byte -1
.4byte gBattleFrontierTrainerMons_Meghan
@@ -3956,25 +3956,25 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_DRAGON_TAMER
.string "ROBERTO$", 8
@ pre-battle speech
- ec_word DRAGON
- ec_word POKEMON
- ec_word ARE
- ec_word INVINCIBLE
- ec_word EXCL
+ .2byte EC_WORD_DRAGON
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_ARE
+ .2byte EC_WORD_INVINCIBLE
+ .2byte EC_WORD_EXCL
.2byte -1
@ win speech
- ec_word YOU
- ec_word WEREN_T
- ec_word BAD
- ec_word I_WAS
- ec_word JUST
- ec_word BETTER
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_WEREN_T
+ .2byte EC_WORD_BAD
+ .2byte EC_WORD_I_WAS
+ .2byte EC_WORD_JUST
+ .2byte EC_WORD_BETTER
@ loss speech
- ec_word AREN_T
- ec_word YOU
- ec_word SATISFIED
- ec_word YET
- ec_word QUES
+ .2byte EC_WORD_AREN_T
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_SATISFIED
+ .2byte EC_WORD_YET
+ .2byte EC_WORD_QUES
.2byte -1
.4byte gBattleFrontierTrainerMons_Roberto
@@ -3982,25 +3982,25 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_DRAGON_TAMER
.string "DAMIAN$", 8
@ pre-battle speech
- ec_word MY
- ec_word PURE_POWER
- ec_word IS
- ec_word MACHINE
- ec_word LIKE
- ec_word EXCL
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_PURE_POWER
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_MACHINE
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_EXCL
@ win speech
- ec_word MY
- ec_move2 MACH_PUNCH
- ec_word WILL
- ec_word MAKE
- ec_word A
- ec_move1 BRICK_BREAK
+ .2byte EC_WORD_MY
+ .2byte EC_MOVE2(MACH_PUNCH)
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_MAKE
+ .2byte EC_WORD_A
+ .2byte EC_MOVE(BRICK_BREAK)
@ loss speech
- ec_word ARRGH
- ec_word EXCL
+ .2byte EC_WORD_ARRGH
+ .2byte EC_WORD_EXCL
.2byte -1
- ec_word NO
- ec_word EXCL_EXCL
+ .2byte EC_WORD_NO
+ .2byte EC_WORD_EXCL_EXCL
.2byte -1
.4byte gBattleFrontierTrainerMons_Damian
@@ -4008,103 +4008,103 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_DRAGON_TAMER
.string "BRODY$", 8
@ pre-battle speech
- ec_word MY
- ec_word FASHION
- ec_word SENSE
- ec_word SEEMS
- ec_pokemon1 ODDISH
- ec_word QUES
-@ win speech
- ec_word IT_S
- ec_word MY
- ec_word FAMILY
- ec_word STAY_AT_HOME
- ec_word LOOK
- ec_word EXCL
-@ loss speech
- ec_word I
- ec_word QUESTION
- ec_word YOUR
- ec_word FASHION
- ec_word SENSE
- ec_word SERIOUSLY
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_FASHION
+ .2byte EC_WORD_SENSE
+ .2byte EC_WORD_SEEMS
+ .2byte EC_POKEMON(ODDISH)
+ .2byte EC_WORD_QUES
+@ win speech
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_FAMILY
+ .2byte EC_WORD_STAY_AT_HOME
+ .2byte EC_WORD_LOOK
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_QUESTION
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_FASHION
+ .2byte EC_WORD_SENSE
+ .2byte EC_WORD_SERIOUSLY
.4byte gBattleFrontierTrainerMons_Brody
@ 155
.4byte TRAINER_CLASS_DRAGON_TAMER
.string "GRAHAM$", 8
@ pre-battle speech
- ec_word YEAH
- ec_word EXCL
+ .2byte EC_WORD_YEAH
+ .2byte EC_WORD_EXCL
.2byte -1
- ec_word YEAH_YEAH
- ec_word EXCL_EXCL
+ .2byte EC_WORD_YEAH_YEAH
+ .2byte EC_WORD_EXCL_EXCL
.2byte -1
@ win speech
- ec_word WAHAHAHA
- ec_word WAHAHAHA
- ec_word EXCL
- ec_word WAHAHAHA
- ec_word WAHAHAHA
- ec_word EXCL_EXCL
+ .2byte EC_WORD_WAHAHAHA
+ .2byte EC_WORD_WAHAHAHA
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_WAHAHAHA
+ .2byte EC_WORD_WAHAHAHA
+ .2byte EC_WORD_EXCL_EXCL
@ loss speech
- ec_word I_AM
- ec_word SORRY
- ec_word ELLIPSIS
- ec_word IT_S
- ec_word MY
- ec_word BAD
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_SORRY
+ .2byte EC_WORD_ELLIPSIS
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_BAD
.4byte gBattleFrontierTrainerMons_Graham
@ 156
.4byte TRAINER_CLASS_POKEFAN_1
.string "TYLOR$", 8
@ pre-battle speech
- ec_word ARE
- ec_word YOU
- ec_word FEELING
- ec_word MY
- ec_move2 HEAT_WAVE
- ec_word QUES
-@ win speech
- ec_word YES
- ec_word I_AM
- ec_word ON
- ec_word FIRE
- ec_word EXCL
- .2byte -1
-@ loss speech
- ec_word BUT
- ec_word I_WAS
- ec_word ON
- ec_word FIRE
- ec_word FOR
- ec_word YOU
+ .2byte EC_WORD_ARE
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_FEELING
+ .2byte EC_WORD_MY
+ .2byte EC_MOVE2(HEAT_WAVE)
+ .2byte EC_WORD_QUES
+@ win speech
+ .2byte EC_WORD_YES
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_ON
+ .2byte EC_WORD_FIRE
+ .2byte EC_WORD_EXCL
+ .2byte -1
+@ loss speech
+ .2byte EC_WORD_BUT
+ .2byte EC_WORD_I_WAS
+ .2byte EC_WORD_ON
+ .2byte EC_WORD_FIRE
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_YOU
.4byte gBattleFrontierTrainerMons_Tylor
@ 157
.4byte TRAINER_CLASS_POKEFAN_2
.string "JAREN$", 8
@ pre-battle speech
- ec_word FIGHTING
- ec_word SPIRIT
- ec_word QUES
- ec_word ME
- ec_word QUES
+ .2byte EC_WORD_FIGHTING
+ .2byte EC_WORD_SPIRIT
+ .2byte EC_WORD_QUES
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_QUES
.2byte -1
@ win speech
- ec_word I
- ec_word WANT
- ec_word MORE
- ec_word CUTE
- ec_word POKEMON
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WANT
+ .2byte EC_WORD_MORE
+ .2byte EC_WORD_CUTE
+ .2byte EC_WORD_POKEMON
.2byte -1
@ loss speech
- ec_word YOUR
- ec_word POKEMON
- ec_word LOOK
- ec_word QUITE
- ec_word CUTE
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_LOOK
+ .2byte EC_WORD_QUITE
+ .2byte EC_WORD_CUTE
.2byte -1
.4byte gBattleFrontierTrainerMons_Jaren
@@ -4112,389 +4112,389 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_PKMN_BREEDER_2
.string "CORDELL$", 8
@ pre-battle speech
- ec_word A
- ec_word BATTLE
- ec_word IS
- ec_word DECIDED
- ec_word ON
- ec_word SPIRIT
-@ win speech
- ec_word CAN_T
- ec_word YOU
- ec_word ACCEPT
- ec_word THAT
- ec_word QUES
- .2byte -1
-@ loss speech
- ec_word I
- ec_word WILL
- ec_word BE
- ec_word ON
- ec_word MY
- ec_word WAY
+ .2byte EC_WORD_A
+ .2byte EC_WORD_BATTLE
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_DECIDED
+ .2byte EC_WORD_ON
+ .2byte EC_WORD_SPIRIT
+@ win speech
+ .2byte EC_WORD_CAN_T
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_ACCEPT
+ .2byte EC_WORD_THAT
+ .2byte EC_WORD_QUES
+ .2byte -1
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_BE
+ .2byte EC_WORD_ON
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_WAY
.4byte gBattleFrontierTrainerMons_Cordell
@ 159
.4byte TRAINER_CLASS_PKMN_BREEDER_1
.string "JAZLYN$", 8
@ pre-battle speech
- ec_word IS
- ec_word YOUR
- ec_word POKEDEX
- ec_word REALLY
- ec_word AWESOME
- ec_word QUES
-@ win speech
- ec_word OH_YEAH
- ec_word WOW
- ec_word YOUR
- ec_word POKEDEX
- ec_word IS
- ec_word SUPER
-@ loss speech
- ec_word AN
- ec_word AVANT_GARDE
- ec_word POKEDEX
- ec_word WOULD
- ec_word BE
- ec_word AWESOME
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_POKEDEX
+ .2byte EC_WORD_REALLY
+ .2byte EC_WORD_AWESOME
+ .2byte EC_WORD_QUES
+@ win speech
+ .2byte EC_WORD_OH_YEAH
+ .2byte EC_WORD_WOW
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_POKEDEX
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_SUPER
+@ loss speech
+ .2byte EC_WORD_AN
+ .2byte EC_WORD_AVANT_GARDE
+ .2byte EC_WORD_POKEDEX
+ .2byte EC_WORD_WOULD
+ .2byte EC_WORD_BE
+ .2byte EC_WORD_AWESOME
.4byte gBattleFrontierTrainerMons_Jazlyn
@ 160
.4byte TRAINER_CLASS_YOUNGSTER
.string "ZACHERY$", 8
@ pre-battle speech
- ec_word I
- ec_word HAVE
- ec_word MY
- ec_word OWN
- ec_word PLACE
- ec_word YEEHAW_EXCL
-@ win speech
- ec_word IT_S
- ec_word AN
- ec_word EXCITING
- ec_word TIME
- ec_word FOR
- ec_word ME
-@ loss speech
- ec_word YOU
- ec_word CAN_T
- ec_word FLATTEN
- ec_word MY
- ec_word HAPPINESS
- ec_word EXCL
+ .2byte EC_WORD_I
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_OWN
+ .2byte EC_WORD_PLACE
+ .2byte EC_WORD_YEEHAW_EXCL
+@ win speech
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_AN
+ .2byte EC_WORD_EXCITING
+ .2byte EC_WORD_TIME
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_ME
+@ loss speech
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_CAN_T
+ .2byte EC_WORD_FLATTEN
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_HAPPINESS
+ .2byte EC_WORD_EXCL
.4byte gBattleFrontierTrainerMons_Zachery
@ 161
.4byte TRAINER_CLASS_YOUNGSTER
.string "JOHAN$", 8
@ pre-battle speech
- ec_word WINTER
- ec_word WILL
- ec_word SOON
- ec_word BE
- ec_word HERE
- .2byte -1
-@ win speech
- ec_word MY
- ec_word ALLOWANCE
- ec_word COULD
- ec_word USE
- ec_word A
- ec_move2 HELPING_HAND
-@ loss speech
- ec_word I
- ec_word ALWAYS
- ec_word USE
- ec_word MY
- ec_word ALLOWANCE
- ec_word UP
+ .2byte EC_WORD_WINTER
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_SOON
+ .2byte EC_WORD_BE
+ .2byte EC_WORD_HERE
+ .2byte -1
+@ win speech
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_ALLOWANCE
+ .2byte EC_WORD_COULD
+ .2byte EC_WORD_USE
+ .2byte EC_WORD_A
+ .2byte EC_MOVE2(HELPING_HAND)
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_ALWAYS
+ .2byte EC_WORD_USE
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_ALLOWANCE
+ .2byte EC_WORD_UP
.4byte gBattleFrontierTrainerMons_Johan
@ 162
.4byte TRAINER_CLASS_LASS
.string "SHEA$", 8
@ pre-battle speech
- ec_word DO
- ec_word YOU
- ec_word BATTLE
- ec_word WITH
- ec_word BEAUTY
- ec_word QUES
-@ win speech
- ec_word YOU
- ec_word BATTLE
- ec_word IN
- ec_word AN
- ec_word UGLY
- ec_word WAY
-@ loss speech
- ec_word WHAT
- ec_word IS
- ec_word BEAUTY
- ec_word TO
- ec_word YOU
- ec_word QUES
+ .2byte EC_WORD_DO
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_BATTLE
+ .2byte EC_WORD_WITH
+ .2byte EC_WORD_BEAUTY
+ .2byte EC_WORD_QUES
+@ win speech
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_BATTLE
+ .2byte EC_WORD_IN
+ .2byte EC_WORD_AN
+ .2byte EC_WORD_UGLY
+ .2byte EC_WORD_WAY
+@ loss speech
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_BEAUTY
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_QUES
.4byte gBattleFrontierTrainerMons_Shea
@ 163
.4byte TRAINER_CLASS_LASS
.string "KAILA$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word FEELING
- ec_word THIRSTY
- ec_word RIGHT
- ec_word NOW
- ec_word ELLIPSIS
-@ win speech
- ec_word I
- ec_word COULD
- ec_word USE
- ec_word A
- ec_word COLD
- ec_word DRINK
-@ loss speech
- ec_word THAT
- ec_word LOSS
- ec_word IS
- ec_word HARD
- ec_word TO
- ec_move2 SWALLOW
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_FEELING
+ .2byte EC_WORD_THIRSTY
+ .2byte EC_WORD_RIGHT
+ .2byte EC_WORD_NOW
+ .2byte EC_WORD_ELLIPSIS
+@ win speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_COULD
+ .2byte EC_WORD_USE
+ .2byte EC_WORD_A
+ .2byte EC_WORD_COLD
+ .2byte EC_WORD_DRINK
+@ loss speech
+ .2byte EC_WORD_THAT
+ .2byte EC_WORD_LOSS
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_HARD
+ .2byte EC_WORD_TO
+ .2byte EC_MOVE2(SWALLOW)
.4byte gBattleFrontierTrainerMons_Kaila
@ 164
.4byte TRAINER_CLASS_SCHOOL_KID_1
.string "ISIAH$", 8
@ pre-battle speech
- ec_word I
- ec_word PRETEND
- ec_word TO
- ec_word STUDY
- ec_word A_LOT
- .2byte -1
-@ win speech
- ec_word I
- ec_move2 TRICK
- ec_word MOTHER
- ec_word FOR
- ec_word MY
- ec_word ALLOWANCE
-@ loss speech
- ec_word I
- ec_word DON_T
- ec_word WANT
- ec_word TO
- ec_word STUDY
- ec_word MORE
+ .2byte EC_WORD_I
+ .2byte EC_WORD_PRETEND
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_STUDY
+ .2byte EC_WORD_A_LOT
+ .2byte -1
+@ win speech
+ .2byte EC_WORD_I
+ .2byte EC_MOVE2(TRICK)
+ .2byte EC_WORD_MOTHER
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_ALLOWANCE
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_WANT
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_STUDY
+ .2byte EC_WORD_MORE
.4byte gBattleFrontierTrainerMons_Isiah
@ 165
.4byte TRAINER_CLASS_SCHOOL_KID_1
.string "GARRETT$", 8
@ pre-battle speech
- ec_word I
- ec_word ENJOY
- ec_word COMICS
- ec_word AND
- ec_word THIS
- ec_word GAME
-@ win speech
- ec_word I
- ec_word LIKE
- ec_word THIS
- ec_word MUSIC
- ec_word IDOL
- ec_word TOO
-@ loss speech
- ec_word BUT
- ec_word I
- ec_word HAVE
- ec_word TO
- ec_word STUDY
- ec_word MORE
+ .2byte EC_WORD_I
+ .2byte EC_WORD_ENJOY
+ .2byte EC_WORD_COMICS
+ .2byte EC_WORD_AND
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_GAME
+@ win speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_MUSIC
+ .2byte EC_WORD_IDOL
+ .2byte EC_WORD_TOO
+@ loss speech
+ .2byte EC_WORD_BUT
+ .2byte EC_WORD_I
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_STUDY
+ .2byte EC_WORD_MORE
.4byte gBattleFrontierTrainerMons_Garrett
@ 166
.4byte TRAINER_CLASS_SCHOOL_KID_2
.string "HAYLIE$", 8
@ pre-battle speech
- ec_word I
- ec_word WORRY
- ec_word TOO
- ec_word MUCH
- ec_word TO
- ec_word SLEEP
-@ win speech
- ec_word A
- ec_word WIN
- ec_word GIVES
- ec_word ME
- ec_word A
- ec_move2 CALM_MIND
-@ loss speech
- ec_word MY
- ec_word INSOMNIA
- ec_word WILL
- ec_word GET
- ec_word BAD
- ec_word ELLIPSIS
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WORRY
+ .2byte EC_WORD_TOO
+ .2byte EC_WORD_MUCH
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_SLEEP
+@ win speech
+ .2byte EC_WORD_A
+ .2byte EC_WORD_WIN
+ .2byte EC_WORD_GIVES
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_A
+ .2byte EC_MOVE2(CALM_MIND)
+@ loss speech
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_INSOMNIA
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_GET
+ .2byte EC_WORD_BAD
+ .2byte EC_WORD_ELLIPSIS
.4byte gBattleFrontierTrainerMons_Haylie
@ 167
.4byte TRAINER_CLASS_SCHOOL_KID_2
.string "MEGAN$", 8
@ pre-battle speech
- ec_word I
- ec_word BELIEVE
- ec_word IN
- ec_word AN
- ec_move1 AROMATHERAPY
- ec_word BATH
-@ win speech
- ec_word I
- ec_word WANT
- ec_word A
- ec_word HEALTHY
- ec_word CLEAR_BODY
- .2byte -1
-@ loss speech
- ec_word IF
- ec_word ONLY
- ec_move1 AROMATHERAPY
- ec_word WERE
- ec_word LESS
- ec_word EXPENSIVE
+ .2byte EC_WORD_I
+ .2byte EC_WORD_BELIEVE
+ .2byte EC_WORD_IN
+ .2byte EC_WORD_AN
+ .2byte EC_MOVE(AROMATHERAPY)
+ .2byte EC_WORD_BATH
+@ win speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WANT
+ .2byte EC_WORD_A
+ .2byte EC_WORD_HEALTHY
+ .2byte EC_WORD_CLEAR_BODY
+ .2byte -1
+@ loss speech
+ .2byte EC_WORD_IF
+ .2byte EC_WORD_ONLY
+ .2byte EC_MOVE(AROMATHERAPY)
+ .2byte EC_WORD_WERE
+ .2byte EC_WORD_LESS
+ .2byte EC_WORD_EXPENSIVE
.4byte gBattleFrontierTrainerMons_Megan
@ 168
.4byte TRAINER_CLASS_RICH_BOY
.string "ISSAC$", 8
@ pre-battle speech
- ec_word MY
- ec_word HOBBY
- ec_word QUES
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_HOBBY
+ .2byte EC_WORD_QUES
.2byte -1
.2byte -1
.2byte -1
@ win speech
- ec_word I
- ec_word LIKE
- ec_word ANY
- ec_word KIND
- ec_word OF
- ec_move2 WATER_SPORT
+ .2byte EC_WORD_I
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_ANY
+ .2byte EC_WORD_KIND
+ .2byte EC_WORD_OF
+ .2byte EC_MOVE2(WATER_SPORT)
@ loss speech
- ec_word I
- ec_word DISLIKE
- ec_word ANY
- ec_word KIND
- ec_word OF
- ec_move2 MUD_SPORT
+ .2byte EC_WORD_I
+ .2byte EC_WORD_DISLIKE
+ .2byte EC_WORD_ANY
+ .2byte EC_WORD_KIND
+ .2byte EC_WORD_OF
+ .2byte EC_MOVE2(MUD_SPORT)
.4byte gBattleFrontierTrainerMons_Issac
@ 169
.4byte TRAINER_CLASS_RICH_BOY
.string "QUINTON$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word SAD
- ec_word CAUSE
- ec_word I_AM
- ec_word TOO_WEAK
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_SAD
+ .2byte EC_WORD_CAUSE
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_TOO_WEAK
.2byte -1
@ win speech
- ec_word YOU
- ec_word AREN_T
- ec_word TOO_STRONG
- ec_word FOR
- ec_word ME
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_AREN_T
+ .2byte EC_WORD_TOO_STRONG
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_ME
.2byte -1
@ loss speech
- ec_word HEY
- ec_word WHAT
- ec_word DID
- ec_word I
- ec_word DO
- ec_word QUES
+ .2byte EC_WORD_HEY
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_DID
+ .2byte EC_WORD_I
+ .2byte EC_WORD_DO
+ .2byte EC_WORD_QUES
.4byte gBattleFrontierTrainerMons_Quinton
@ 170
.4byte TRAINER_CLASS_LADY
.string "SALMA$", 8
@ pre-battle speech
- ec_word YOU_VE
- ec_word GOT
- ec_word YOUR
- ec_word HUSTLE
- ec_word ON
- ec_word EXCL
-@ win speech
- ec_word I
- ec_word WIN
- ec_word YOU
- ec_word HUSTLE
- ec_word ON
- ec_word OUT
-@ loss speech
- ec_word I
- ec_word DON_T
- ec_word GET
- ec_word HOW
- ec_word I
- ec_word LOST
+ .2byte EC_WORD_YOU_VE
+ .2byte EC_WORD_GOT
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_HUSTLE
+ .2byte EC_WORD_ON
+ .2byte EC_WORD_EXCL
+@ win speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WIN
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_HUSTLE
+ .2byte EC_WORD_ON
+ .2byte EC_WORD_OUT
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_GET
+ .2byte EC_WORD_HOW
+ .2byte EC_WORD_I
+ .2byte EC_WORD_LOST
.4byte gBattleFrontierTrainerMons_Salma
@ 171
.4byte TRAINER_CLASS_LADY
.string "ANSLEY$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word BORED
- ec_word ELLIPSIS
- ec_word DANCE
- ec_word FOR
- ec_word ME
-@ win speech
- ec_word YOU_VE
- ec_word BORED
- ec_word ME
- ec_word SOME
- ec_word MORE
- .2byte -1
-@ loss speech
- ec_word TAKE
- ec_word YOUR
- ec_move2 FRUSTRATION
- ec_word SOME
- ec_word OTHER
- ec_word PLACE
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_BORED
+ .2byte EC_WORD_ELLIPSIS
+ .2byte EC_WORD_DANCE
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_ME
+@ win speech
+ .2byte EC_WORD_YOU_VE
+ .2byte EC_WORD_BORED
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_SOME
+ .2byte EC_WORD_MORE
+ .2byte -1
+@ loss speech
+ .2byte EC_WORD_TAKE
+ .2byte EC_WORD_YOUR
+ .2byte EC_MOVE2(FRUSTRATION)
+ .2byte EC_WORD_SOME
+ .2byte EC_WORD_OTHER
+ .2byte EC_WORD_PLACE
.4byte gBattleFrontierTrainerMons_Ansley
@ 172
.4byte TRAINER_CLASS_BUG_CATCHER
.string "HOLDEN$", 8
@ pre-battle speech
- ec_word LET_S
- ec_word COMMEMORATE
- ec_word MY
- ec_word COOLNESS
- ec_word IN
- ec_word BATTLE
+ .2byte EC_WORD_LET_S
+ .2byte EC_WORD_COMMEMORATE
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_COOLNESS
+ .2byte EC_WORD_IN
+ .2byte EC_WORD_BATTLE
@ win speech
- ec_word YOU_RE
- ec_word TOO_WEAK
- ec_word FOR
- ec_word ANY
- ec_word PRAISE
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_TOO_WEAK
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_ANY
+ .2byte EC_WORD_PRAISE
.2byte -1
@ loss speech
- ec_word YOUR
- ec_word BATTLE
- ec_word SENSE
- ec_word IS
- ec_word AMUSING
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_BATTLE
+ .2byte EC_WORD_SENSE
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_AMUSING
.2byte -1
.4byte gBattleFrontierTrainerMons_Holden
@@ -4502,103 +4502,103 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_BUG_CATCHER
.string "LUCA$", 8
@ pre-battle speech
- ec_word WE
- ec_word WILL
- ec_word HAVE
- ec_word A
- ec_word COOL
- ec_word BATTLE
-@ win speech
- ec_word I
- ec_word WON
- ec_word IN
- ec_word A
- ec_word COOL
- ec_word WAY
-@ loss speech
- ec_word HELLO
- ec_word QUES
- ec_word I_AM
- ec_word JUST
- ec_word A
- ec_word KID
+ .2byte EC_WORD_WE
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_A
+ .2byte EC_WORD_COOL
+ .2byte EC_WORD_BATTLE
+@ win speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WON
+ .2byte EC_WORD_IN
+ .2byte EC_WORD_A
+ .2byte EC_WORD_COOL
+ .2byte EC_WORD_WAY
+@ loss speech
+ .2byte EC_WORD_HELLO
+ .2byte EC_WORD_QUES
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_JUST
+ .2byte EC_WORD_A
+ .2byte EC_WORD_KID
.4byte gBattleFrontierTrainerMons_Luca
@ 174
.4byte TRAINER_CLASS_NINJA_BOY
.string "JAMISON$", 8
@ pre-battle speech
- ec_word MY
- ec_move2 SECRET_POWER
- ec_word IS
- ec_word OVERWHELMING
- ec_word TO
- ec_word POKEMON
-@ win speech
- ec_word DID
- ec_word YOU
- ec_word SEE
- ec_word THAT
- ec_word QUES
- .2byte -1
-@ loss speech
- ec_word I
- ec_word WILL
- ec_word USE
- ec_move1 SMOKESCREEN
- ec_word TO
- ec_word ESCAPE
+ .2byte EC_WORD_MY
+ .2byte EC_MOVE2(SECRET_POWER)
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_OVERWHELMING
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_POKEMON
+@ win speech
+ .2byte EC_WORD_DID
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_SEE
+ .2byte EC_WORD_THAT
+ .2byte EC_WORD_QUES
+ .2byte -1
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_USE
+ .2byte EC_MOVE(SMOKESCREEN)
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_ESCAPE
.4byte gBattleFrontierTrainerMons_Jamison
@ 175
.4byte TRAINER_CLASS_NINJA_BOY
.string "GUNNAR$", 8
@ pre-battle speech
- ec_word I
- ec_move1 CUT
- ec_word DOWN
- ec_word EVERY
- ec_word OPPONENT
- .2byte -1
-@ win speech
- ec_word DON_T
- ec_move1 GRUDGE
- ec_word ME
- ec_word FOR
- ec_word YOUR
- ec_word LOSS
-@ loss speech
- ec_word PLEASE
- ec_word LOSE
- ec_word THAT
- ec_move1 SCARY_FACE
- ec_word OF
- ec_word YOURS
+ .2byte EC_WORD_I
+ .2byte EC_MOVE(CUT)
+ .2byte EC_WORD_DOWN
+ .2byte EC_WORD_EVERY
+ .2byte EC_WORD_OPPONENT
+ .2byte -1
+@ win speech
+ .2byte EC_WORD_DON_T
+ .2byte EC_MOVE(GRUDGE)
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_LOSS
+@ loss speech
+ .2byte EC_WORD_PLEASE
+ .2byte EC_WORD_LOSE
+ .2byte EC_WORD_THAT
+ .2byte EC_MOVE(SCARY_FACE)
+ .2byte EC_WORD_OF
+ .2byte EC_WORD_YOURS
.4byte gBattleFrontierTrainerMons_Gunnar
@ 176
.4byte TRAINER_CLASS_TUBER_2
.string "CRAIG$", 8
@ pre-battle speech
- ec_word I
- ec_word CAN_T
- ec_word WAIT
- ec_word FOR
- ec_word MY
- ec_word TRAIN
-@ win speech
- ec_word MY
- ec_word TRAIN
- ec_word ISN_T
- ec_word HERE
- ec_word YET
- ec_word ELLIPSIS
-@ loss speech
- ec_word HERE_IT_IS
- ec_word MY
- ec_word TRAIN
- ec_word SEE_YA
- ec_word EXCL
+ .2byte EC_WORD_I
+ .2byte EC_WORD_CAN_T
+ .2byte EC_WORD_WAIT
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_TRAIN
+@ win speech
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_TRAIN
+ .2byte EC_WORD_ISN_T
+ .2byte EC_WORD_HERE
+ .2byte EC_WORD_YET
+ .2byte EC_WORD_ELLIPSIS
+@ loss speech
+ .2byte EC_WORD_HERE_IT_IS
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_TRAIN
+ .2byte EC_WORD_SEE_YA
+ .2byte EC_WORD_EXCL
.2byte -1
.4byte gBattleFrontierTrainerMons_Craig
@@ -4606,25 +4606,25 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_TUBER_2
.string "PIERCE$", 8
@ pre-battle speech
- ec_word THERE
- ec_word WAS
- ec_word A
- ec_move2 HEAT_WAVE
- ec_word LAST
- ec_word WEEK
+ .2byte EC_WORD_THERE
+ .2byte EC_WORD_WAS
+ .2byte EC_WORD_A
+ .2byte EC_MOVE2(HEAT_WAVE)
+ .2byte EC_WORD_LAST
+ .2byte EC_WORD_WEEK
@ win speech
- ec_word I
- ec_word CAN_T
- ec_word TAKE
- ec_word A
- ec_move2 HEAT_WAVE
+ .2byte EC_WORD_I
+ .2byte EC_WORD_CAN_T
+ .2byte EC_WORD_TAKE
+ .2byte EC_WORD_A
+ .2byte EC_MOVE2(HEAT_WAVE)
.2byte -1
@ loss speech
- ec_word DIDN_T
- ec_word IT
- ec_move1 HAIL
- ec_word TOO
- ec_word QUES
+ .2byte EC_WORD_DIDN_T
+ .2byte EC_WORD_IT
+ .2byte EC_MOVE(HAIL)
+ .2byte EC_WORD_TOO
+ .2byte EC_WORD_QUES
.2byte -1
.4byte gBattleFrontierTrainerMons_Pierce
@@ -4632,155 +4632,155 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_TUBER_1
.string "REGINA$", 8
@ pre-battle speech
- ec_word I
- ec_word LIKE
- ec_word TO
- ec_word PLAY
- ec_word IN
- ec_word WATER
-@ win speech
- ec_word I
- ec_word REFUSE
- ec_word TO
- ec_word COME
- ec_word OUT
- .2byte -1
-@ loss speech
- ec_word YOU_RE
- ec_word NOT
- ec_word MUCH
- ec_word GOOD
- ec_word IN
- ec_word WATER
+ .2byte EC_WORD_I
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_PLAY
+ .2byte EC_WORD_IN
+ .2byte EC_WORD_WATER
+@ win speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_REFUSE
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_COME
+ .2byte EC_WORD_OUT
+ .2byte -1
+@ loss speech
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_MUCH
+ .2byte EC_WORD_GOOD
+ .2byte EC_WORD_IN
+ .2byte EC_WORD_WATER
.4byte gBattleFrontierTrainerMons_Regina
@ 179
.4byte TRAINER_CLASS_TUBER_1
.string "ALISON$", 8
@ pre-battle speech
- ec_word THIS
- ec_word KINDERGARTEN
- ec_word MAGAZINE
- ec_word IS
- ec_word TOO
- ec_word MUCH
-@ win speech
- ec_word HOW
- ec_word TO
- ec_word BUG
- ec_word YOUR
- ec_word TEACHER
- ec_word QUES
-@ loss speech
- ec_word ENJOY
- ec_word A
- ec_word TASTY
- ec_word SCHOOL
- ec_word DIET
- ec_word QUES
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_KINDERGARTEN
+ .2byte EC_WORD_MAGAZINE
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_TOO
+ .2byte EC_WORD_MUCH
+@ win speech
+ .2byte EC_WORD_HOW
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_BUG
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_TEACHER
+ .2byte EC_WORD_QUES
+@ loss speech
+ .2byte EC_WORD_ENJOY
+ .2byte EC_WORD_A
+ .2byte EC_WORD_TASTY
+ .2byte EC_WORD_SCHOOL
+ .2byte EC_WORD_DIET
+ .2byte EC_WORD_QUES
.4byte gBattleFrontierTrainerMons_Alison
@ 180
.4byte TRAINER_CLASS_BUG_MANIAC
.string "HANK$", 8
@ pre-battle speech
- ec_word THERE
- ec_word IS
- ec_word A
- ec_word BUG
- ec_word EVENT
- ec_word SOON
-@ win speech
- ec_word IT_S
- ec_word A
- ec_word BUG
- ec_word FASHION
- ec_word SHOW
- ec_word EXCL
-@ loss speech
- ec_word DON_T
- ec_word YOU
- ec_word LIKE
- ec_word BUG
- ec_word POKEMON
- ec_word QUES
+ .2byte EC_WORD_THERE
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_A
+ .2byte EC_WORD_BUG
+ .2byte EC_WORD_EVENT
+ .2byte EC_WORD_SOON
+@ win speech
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_A
+ .2byte EC_WORD_BUG
+ .2byte EC_WORD_FASHION
+ .2byte EC_WORD_SHOW
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_BUG
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_QUES
.4byte gBattleFrontierTrainerMons_Hank
@ 181
.4byte TRAINER_CLASS_BUG_MANIAC
.string "EARL$", 8
@ pre-battle speech
- ec_word THE
- ec_word INVINCIBLE
- ec_word BUG
- ec_word TRAINER
- ec_word IS
- ec_word HERE
-@ win speech
- ec_word THE
- ec_word INVINCIBLE
- ec_word BUG
- ec_word TRAINER
- ec_word AM
- ec_word I
-@ loss speech
- ec_word SEE
- ec_word HOW
- ec_word FAST
- ec_word I
- ec_word RUN_AWAY
- ec_word EXCL
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_INVINCIBLE
+ .2byte EC_WORD_BUG
+ .2byte EC_WORD_TRAINER
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_HERE
+@ win speech
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_INVINCIBLE
+ .2byte EC_WORD_BUG
+ .2byte EC_WORD_TRAINER
+ .2byte EC_WORD_AM
+ .2byte EC_WORD_I
+@ loss speech
+ .2byte EC_WORD_SEE
+ .2byte EC_WORD_HOW
+ .2byte EC_WORD_FAST
+ .2byte EC_WORD_I
+ .2byte EC_WORD_RUN_AWAY
+ .2byte EC_WORD_EXCL
.4byte gBattleFrontierTrainerMons_Earl
@ 182
.4byte TRAINER_CLASS_FISHERMAN
.string "RAMIRO$", 8
@ pre-battle speech
- ec_word I
- ec_word WENT
- ec_word TO
- ec_word A
- ec_word FISHING
- ec_word SCHOOL
-@ win speech
- ec_word SERIOUSLY
- ec_word I_AM
- ec_word IN
- ec_word THE
- ec_word FISHING
- ec_word HALL_OF_FAME
-@ loss speech
- ec_word I
- ec_word WANT
- ec_word TO
- ec_word GO
- ec_word BACK
- ec_word ELLIPSIS
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WENT
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_A
+ .2byte EC_WORD_FISHING
+ .2byte EC_WORD_SCHOOL
+@ win speech
+ .2byte EC_WORD_SERIOUSLY
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_IN
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_FISHING
+ .2byte EC_WORD_HALL_OF_FAME
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WANT
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_GO
+ .2byte EC_WORD_BACK
+ .2byte EC_WORD_ELLIPSIS
.4byte gBattleFrontierTrainerMons_Ramiro
@ 183
.4byte TRAINER_CLASS_FISHERMAN
.string "HUNTER$", 8
@ pre-battle speech
- ec_word SHOW
- ec_word ME
- ec_word A
- ec_word TOTALLY
- ec_word COOL
- ec_move1 CROSS_CHOP
-@ win speech
- ec_word YOU_RE
- ec_word TOO_WEAK
- ec_word TO
- ec_word DO
- ec_word A
- ec_move1 CROSS_CHOP
-@ loss speech
- ec_word WAS
- ec_word IT
- ec_word A
- ec_word MISTAKE
- ec_word QUES
+ .2byte EC_WORD_SHOW
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_A
+ .2byte EC_WORD_TOTALLY
+ .2byte EC_WORD_COOL
+ .2byte EC_MOVE(CROSS_CHOP)
+@ win speech
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_TOO_WEAK
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_DO
+ .2byte EC_WORD_A
+ .2byte EC_MOVE(CROSS_CHOP)
+@ loss speech
+ .2byte EC_WORD_WAS
+ .2byte EC_WORD_IT
+ .2byte EC_WORD_A
+ .2byte EC_WORD_MISTAKE
+ .2byte EC_WORD_QUES
.2byte -1
.4byte gBattleFrontierTrainerMons_Hunter
@@ -4788,103 +4788,103 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_RUIN_MANIAC
.string "AIDEN$", 8
@ pre-battle speech
- ec_word MY
- ec_word WORK
- ec_word IS
- ec_word MAKING
- ec_word ME
- ec_word HEALTHY
-@ win speech
- ec_word YOU
- ec_word SEE
- ec_word QUES
- ec_word I_AM
- ec_word HEALTHY
- ec_word EXCL
-@ loss speech
- ec_word YOU_RE
- ec_word MORE
- ec_word HEALTHY
- ec_word THAN
- ec_word I_AM
- ec_word ELLIPSIS
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_WORK
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_MAKING
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_HEALTHY
+@ win speech
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_SEE
+ .2byte EC_WORD_QUES
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_HEALTHY
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_MORE
+ .2byte EC_WORD_HEALTHY
+ .2byte EC_WORD_THAN
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_ELLIPSIS
.4byte gBattleFrontierTrainerMons_Aiden
@ 185
.4byte TRAINER_CLASS_RUIN_MANIAC
.string "XAVIER$", 8
@ pre-battle speech
- ec_word HEY_THERE
- ec_word EXCL
+ .2byte EC_WORD_HEY_THERE
+ .2byte EC_WORD_EXCL
.2byte -1
- ec_word LOOK
- ec_word LOOK
- ec_word EXCL_EXCL
+ .2byte EC_WORD_LOOK
+ .2byte EC_WORD_LOOK
+ .2byte EC_WORD_EXCL_EXCL
@ win speech
- ec_word GOOD_BYE
- ec_word AND
- ec_word THANK_YOU
- ec_word THAT_WAS
- ec_word FUNNY
+ .2byte EC_WORD_GOOD_BYE
+ .2byte EC_WORD_AND
+ .2byte EC_WORD_THANK_YOU
+ .2byte EC_WORD_THAT_WAS
+ .2byte EC_WORD_FUNNY
.2byte -1
@ loss speech
- ec_word WOWEE
- ec_word EXCL
+ .2byte EC_WORD_WOWEE
+ .2byte EC_WORD_EXCL
.2byte -1
- ec_word NO
- ec_word NO
- ec_word EXCL_EXCL
+ .2byte EC_WORD_NO
+ .2byte EC_WORD_NO
+ .2byte EC_WORD_EXCL_EXCL
.4byte gBattleFrontierTrainerMons_Xavier
@ 186
.4byte TRAINER_CLASS_COLLECTOR
.string "CLINTON$", 8
@ pre-battle speech
- ec_word WANT
- ec_word TO
- ec_word SEE
- ec_word MY
- ec_move1 HYPNOSIS
- ec_word QUES
-@ win speech
- ec_word YOUR
- ec_move2 FURY_SWIPES
- ec_word YOUR
- ec_move1 STRENGTH
- ec_word YOUNG
- ec_word TRAINER
-@ loss speech
- ec_word TCH
- ec_word ELLIPSIS
- .2byte -1
- ec_word I_AM
- ec_word TOO_WEAK
- ec_word ELLIPSIS
+ .2byte EC_WORD_WANT
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_SEE
+ .2byte EC_WORD_MY
+ .2byte EC_MOVE(HYPNOSIS)
+ .2byte EC_WORD_QUES
+@ win speech
+ .2byte EC_WORD_YOUR
+ .2byte EC_MOVE2(FURY_SWIPES)
+ .2byte EC_WORD_YOUR
+ .2byte EC_MOVE(STRENGTH)
+ .2byte EC_WORD_YOUNG
+ .2byte EC_WORD_TRAINER
+@ loss speech
+ .2byte EC_WORD_TCH
+ .2byte EC_WORD_ELLIPSIS
+ .2byte -1
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_TOO_WEAK
+ .2byte EC_WORD_ELLIPSIS
.4byte gBattleFrontierTrainerMons_Clinton
@ 187
.4byte TRAINER_CLASS_COLLECTOR
.string "JESSE$", 8
@ pre-battle speech
- ec_word THIS
- ec_word BATTLE
- ec_word IS
- ec_word FOR
- ec_word MY
- ec_word MOTHER
-@ win speech
- ec_word MOTHER
- ec_word WILL
- ec_word BE
- ec_word HAPPY
- ec_word FOR
- ec_word ME
-@ loss speech
- ec_word I
- ec_word WANT
- ec_word MY
- ec_word MOTHER
- ec_word EXCL
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_BATTLE
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_MOTHER
+@ win speech
+ .2byte EC_WORD_MOTHER
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_BE
+ .2byte EC_WORD_HAPPY
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_ME
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WANT
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_MOTHER
+ .2byte EC_WORD_EXCL
.2byte -1
.4byte gBattleFrontierTrainerMons_Jesse
@@ -4892,77 +4892,77 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_GUITARIST
.string "EDUARDO$", 8
@ pre-battle speech
- ec_word OUR
- ec_word MUSIC
- ec_word WILL
- ec_word PLAY
- ec_word ALL
- ec_word NIGHT
-@ win speech
- ec_word NIGHTTIME
- ec_word IS
- ec_word WHEN
- ec_word I
- ec_word PLAY
- ec_word BEST
-@ loss speech
- ec_word LET_S
- ec_word PARTY
- ec_word UNTIL
- ec_word THE
- ec_move1 MORNING_SUN
- ec_word EXCL
+ .2byte EC_WORD_OUR
+ .2byte EC_WORD_MUSIC
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_PLAY
+ .2byte EC_WORD_ALL
+ .2byte EC_WORD_NIGHT
+@ win speech
+ .2byte EC_WORD_NIGHTTIME
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_WHEN
+ .2byte EC_WORD_I
+ .2byte EC_WORD_PLAY
+ .2byte EC_WORD_BEST
+@ loss speech
+ .2byte EC_WORD_LET_S
+ .2byte EC_WORD_PARTY
+ .2byte EC_WORD_UNTIL
+ .2byte EC_WORD_THE
+ .2byte EC_MOVE(MORNING_SUN)
+ .2byte EC_WORD_EXCL
.4byte gBattleFrontierTrainerMons_Eduardo
@ 189
.4byte TRAINER_CLASS_GUITARIST
.string "HAL$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word TRENDY
- ec_word AREN_T
- ec_word I
- ec_word QUES
- .2byte -1
-@ win speech
- ec_word I_AM
- ec_word FEELING
- ec_word HIP_AND
- ec_word HAPPENING
- ec_word OH_YEAH
- ec_word EXCL
-@ loss speech
- ec_word I_AM
- ec_word ALWAYS
- ec_word TRENDY
- ec_word THANK_YOU
- ec_word VERY
- ec_word MUCH
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_TRENDY
+ .2byte EC_WORD_AREN_T
+ .2byte EC_WORD_I
+ .2byte EC_WORD_QUES
+ .2byte -1
+@ win speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_FEELING
+ .2byte EC_WORD_HIP_AND
+ .2byte EC_WORD_HAPPENING
+ .2byte EC_WORD_OH_YEAH
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_ALWAYS
+ .2byte EC_WORD_TRENDY
+ .2byte EC_WORD_THANK_YOU
+ .2byte EC_WORD_VERY
+ .2byte EC_WORD_MUCH
.4byte gBattleFrontierTrainerMons_Hal
@ 190
.4byte TRAINER_CLASS_BIRD_KEEPER
.string "GAGE$", 8
@ pre-battle speech
- ec_word HERE_IT_IS
- ec_word A
- ec_word FLYING
- ec_word TYPE
- ec_word HIDDEN
- ec_word MOVE
-@ win speech
- ec_word IT_S
- ec_word A
- ec_word FLYING
- ec_word TYPE
- ec_word VICTORY
- ec_word EXCL
-@ loss speech
- ec_word IF_I_LOSE
- ec_word I
- ec_word JUST
- ec_move1 FLY
- ec_word AWAY
+ .2byte EC_WORD_HERE_IT_IS
+ .2byte EC_WORD_A
+ .2byte EC_WORD_FLYING
+ .2byte EC_WORD_TYPE
+ .2byte EC_WORD_HIDDEN
+ .2byte EC_WORD_MOVE
+@ win speech
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_A
+ .2byte EC_WORD_FLYING
+ .2byte EC_WORD_TYPE
+ .2byte EC_WORD_VICTORY
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_IF_I_LOSE
+ .2byte EC_WORD_I
+ .2byte EC_WORD_JUST
+ .2byte EC_MOVE(FLY)
+ .2byte EC_WORD_AWAY
.2byte -1
.4byte gBattleFrontierTrainerMons_Gage
@@ -4970,181 +4970,181 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_BIRD_KEEPER
.string "ARNOLD$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word FEELING
- ec_word WEIRD
- ec_word FROM
- ec_word A
- ec_word DREAM
-@ win speech
- ec_word YOUR
- ec_move1 SCARY_FACE
- ec_word WAS
- ec_word IN
- ec_word MY
- ec_word DREAM
-@ loss speech
- ec_word MY
- ec_word INCREDIBLE
- ec_word DREAM
- ec_word WAS
- ec_word SO
- ec_word WEIRD
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_FEELING
+ .2byte EC_WORD_WEIRD
+ .2byte EC_WORD_FROM
+ .2byte EC_WORD_A
+ .2byte EC_WORD_DREAM
+@ win speech
+ .2byte EC_WORD_YOUR
+ .2byte EC_MOVE(SCARY_FACE)
+ .2byte EC_WORD_WAS
+ .2byte EC_WORD_IN
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_DREAM
+@ loss speech
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_INCREDIBLE
+ .2byte EC_WORD_DREAM
+ .2byte EC_WORD_WAS
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_WEIRD
.4byte gBattleFrontierTrainerMons_Arnold
@ 192
.4byte TRAINER_CLASS_SAILOR
.string "JARRETT$", 8
@ pre-battle speech
- ec_word COME_ON
- ec_word LET_S
- ec_word DANCE
- ec_word LIKE
- ec_word IT_S
- ec_word YESTERDAY
-@ win speech
- ec_word YOU
- ec_word LIKE
- ec_word HOW
- ec_word I
- ec_word DANCE
- ec_word QUES
-@ loss speech
- ec_word YOU
- ec_word DON_T
- ec_word APPRECIATE
- ec_word HOW
- ec_word I
- ec_word DANCE
+ .2byte EC_WORD_COME_ON
+ .2byte EC_WORD_LET_S
+ .2byte EC_WORD_DANCE
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_YESTERDAY
+@ win speech
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_HOW
+ .2byte EC_WORD_I
+ .2byte EC_WORD_DANCE
+ .2byte EC_WORD_QUES
+@ loss speech
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_APPRECIATE
+ .2byte EC_WORD_HOW
+ .2byte EC_WORD_I
+ .2byte EC_WORD_DANCE
.4byte gBattleFrontierTrainerMons_Jarrett
@ 193
.4byte TRAINER_CLASS_SAILOR
.string "GARETT$", 8
@ pre-battle speech
- ec_word MY
- ec_word GIRL
- ec_word GIVES
- ec_word ME
- ec_word A_LITTLE
- ec_move2 SWEET_KISS
-@ win speech
- ec_word MY
- ec_word GIRL
- ec_word FRIEND
- ec_word IS
- ec_word MY
- ec_word TREASURE
-@ loss speech
- ec_word A
- ec_word TREASURE
- ec_word ISN_T
- ec_word ALWAYS
- ec_word ABOUT
- ec_word MONEY
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_GIRL
+ .2byte EC_WORD_GIVES
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_A_LITTLE
+ .2byte EC_MOVE2(SWEET_KISS)
+@ win speech
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_GIRL
+ .2byte EC_WORD_FRIEND
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_TREASURE
+@ loss speech
+ .2byte EC_WORD_A
+ .2byte EC_WORD_TREASURE
+ .2byte EC_WORD_ISN_T
+ .2byte EC_WORD_ALWAYS
+ .2byte EC_WORD_ABOUT
+ .2byte EC_WORD_MONEY
.4byte gBattleFrontierTrainerMons_Garett
@ 194
.4byte TRAINER_CLASS_HIKER
.string "EMANUEL$", 8
@ pre-battle speech
- ec_word SMARTNESS
- ec_word ALONE
- ec_word WON_T
- ec_word MAKE
- ec_word YOU
- ec_word WIN
-@ win speech
- ec_word I_AM
- ec_word NOT_VERY
- ec_word SMART
- ec_word BUT
- ec_word I
- ec_word WON
-@ loss speech
- ec_word HOW
- ec_word DID
- ec_word YOU
- ec_move2 FAKE_OUT
- ec_word ME
- ec_word QUES
+ .2byte EC_WORD_SMARTNESS
+ .2byte EC_WORD_ALONE
+ .2byte EC_WORD_WON_T
+ .2byte EC_WORD_MAKE
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_WIN
+@ win speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_NOT_VERY
+ .2byte EC_WORD_SMART
+ .2byte EC_WORD_BUT
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WON
+@ loss speech
+ .2byte EC_WORD_HOW
+ .2byte EC_WORD_DID
+ .2byte EC_WORD_YOU
+ .2byte EC_MOVE2(FAKE_OUT)
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_QUES
.4byte gBattleFrontierTrainerMons_Emanuel
@ 195
.4byte TRAINER_CLASS_HIKER
.string "GUSTAVO$", 8
@ pre-battle speech
- ec_move1 CHARGE
- ec_word EXCL
+ .2byte EC_MOVE(CHARGE)
+ .2byte EC_WORD_EXCL
.2byte -1
- ec_move1 CHARGE
- ec_word EXCL_EXCL
+ .2byte EC_MOVE(CHARGE)
+ .2byte EC_WORD_EXCL_EXCL
.2byte -1
@ win speech
- ec_word SURRENDER
- ec_word QUES
+ .2byte EC_WORD_SURRENDER
+ .2byte EC_WORD_QUES
.2byte -1
- ec_word SO
- ec_word SOON
- ec_word QUES
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_SOON
+ .2byte EC_WORD_QUES
@ loss speech
- ec_word YOU
- ec_word CAN_T
- ec_word MAKE
- ec_word ME
- ec_word SURRENDER
- ec_word YET
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_CAN_T
+ .2byte EC_WORD_MAKE
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_SURRENDER
+ .2byte EC_WORD_YET
.4byte gBattleFrontierTrainerMons_Gustavo
@ 196
.4byte TRAINER_CLASS_KINDLER
.string "KAMERON$", 8
@ pre-battle speech
- ec_word TAKE_THAT
- ec_word EXCL
- ec_word IT_S
- ec_word MY
- ec_word FIERY
- ec_move2 TRICK
-@ win speech
- ec_word DID
- ec_word MY
- ec_word FIERY
- ec_move2 TRICK
- ec_move1 ASTONISH
- ec_word QUES
-@ loss speech
- ec_word YOU
- ec_word DIDN_T
- ec_word FALL
- ec_word FOR
- ec_word MY
- ec_move2 TRICK
+ .2byte EC_WORD_TAKE_THAT
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_FIERY
+ .2byte EC_MOVE2(TRICK)
+@ win speech
+ .2byte EC_WORD_DID
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_FIERY
+ .2byte EC_MOVE2(TRICK)
+ .2byte EC_MOVE(ASTONISH)
+ .2byte EC_WORD_QUES
+@ loss speech
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_DIDN_T
+ .2byte EC_WORD_FALL
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_MY
+ .2byte EC_MOVE2(TRICK)
.4byte gBattleFrontierTrainerMons_Kameron
@ 197
.4byte TRAINER_CLASS_KINDLER
.string "ALFREDO$", 8
@ pre-battle speech
- ec_word A
- ec_word FIERY
- ec_word GOURMET
- ec_word AM
- ec_word I
- ec_word EXCL
-@ win speech
- ec_word IT_S
- ec_word A
- ec_word TASTY
- ec_word GOURMET
- ec_word VICTORY
- ec_word EXCL
-@ loss speech
- ec_word WHAT
- ec_word A
- ec_word DISASTER
- ec_word THAT_WAS
- ec_word EXCL
+ .2byte EC_WORD_A
+ .2byte EC_WORD_FIERY
+ .2byte EC_WORD_GOURMET
+ .2byte EC_WORD_AM
+ .2byte EC_WORD_I
+ .2byte EC_WORD_EXCL
+@ win speech
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_A
+ .2byte EC_WORD_TASTY
+ .2byte EC_WORD_GOURMET
+ .2byte EC_WORD_VICTORY
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_A
+ .2byte EC_WORD_DISASTER
+ .2byte EC_WORD_THAT_WAS
+ .2byte EC_WORD_EXCL
.2byte -1
.4byte gBattleFrontierTrainerMons_Alfredo
@@ -5152,25 +5152,25 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_GENTLEMAN
.string "RUBEN$", 8
@ pre-battle speech
- ec_word I
- ec_word CAN_T
- ec_word WAIT
- ec_word TO
- ec_word GET
- ec_word GOING
-@ win speech
- ec_word GET
- ec_word GOING
- ec_word EXCL
- ec_word THIS
- ec_word IS
- ec_word GOOD_BYE
-@ loss speech
- ec_word I_VE
- ec_word GOT
- ec_word TO
- ec_word GET
- ec_word GOING
+ .2byte EC_WORD_I
+ .2byte EC_WORD_CAN_T
+ .2byte EC_WORD_WAIT
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_GET
+ .2byte EC_WORD_GOING
+@ win speech
+ .2byte EC_WORD_GET
+ .2byte EC_WORD_GOING
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_GOOD_BYE
+@ loss speech
+ .2byte EC_WORD_I_VE
+ .2byte EC_WORD_GOT
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_GET
+ .2byte EC_WORD_GOING
.2byte -1
.4byte gBattleFrontierTrainerMons_Ruben
@@ -5178,25 +5178,25 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_GENTLEMAN
.string "LAMAR$", 8
@ pre-battle speech
- ec_word A
- ec_move2 PRESENT
- ec_word FOR
- ec_word ME
- ec_word QUES
+ .2byte EC_WORD_A
+ .2byte EC_MOVE2(PRESENT)
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_QUES
.2byte -1
@ win speech
- ec_word MMM
- ec_word THIS
- ec_word IS
- ec_word QUITE
- ec_word TASTY
- ec_word ELLIPSIS
+ .2byte EC_WORD_MMM
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_QUITE
+ .2byte EC_WORD_TASTY
+ .2byte EC_WORD_ELLIPSIS
@ loss speech
- ec_word OH
- ec_word IT_S
- ec_word A
- ec_word GAME
- ec_word IS_IT_QUES
+ .2byte EC_WORD_OH
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_A
+ .2byte EC_WORD_GAME
+ .2byte EC_WORD_IS_IT_QUES
.2byte -1
.4byte gBattleFrontierTrainerMons_Lamar
@@ -5204,155 +5204,155 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_YOUNGSTER
.string "JAXON$", 8
@ pre-battle speech
- ec_word A
- ec_word SHELL_ARMOR
- ec_word IS
- ec_word WHAT
- ec_word I
- ec_word WANT
-@ win speech
- ec_word MY
- ec_word FATHER
- ec_word AND
- ec_word MOTHER
- ec_word WON_T
- ec_word ACCEPT
-@ loss speech
- ec_word PLEASE
- ec_word I
- ec_word NEED
- ec_word A
- ec_word SHELL_ARMOR
- ec_word EXCL
+ .2byte EC_WORD_A
+ .2byte EC_WORD_SHELL_ARMOR
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WANT
+@ win speech
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_FATHER
+ .2byte EC_WORD_AND
+ .2byte EC_WORD_MOTHER
+ .2byte EC_WORD_WON_T
+ .2byte EC_WORD_ACCEPT
+@ loss speech
+ .2byte EC_WORD_PLEASE
+ .2byte EC_WORD_I
+ .2byte EC_WORD_NEED
+ .2byte EC_WORD_A
+ .2byte EC_WORD_SHELL_ARMOR
+ .2byte EC_WORD_EXCL
.4byte gBattleFrontierTrainerMons_Jaxon
@ 201
.4byte TRAINER_CLASS_YOUNGSTER
.string "LOGAN$", 8
@ pre-battle speech
- ec_word IF_I_LOSE
- ec_word I
- ec_word WILL
- ec_word STUDY
- ec_word FOR
- ec_word SCHOOL
-@ win speech
- ec_word ME
- ec_word STUDY
- ec_word QUES
- ec_word NOT_VERY
- ec_word LIKELY_TO
- ec_word SEE
-@ loss speech
- ec_word NO
- ec_word THANKS
- ec_word I_AM
- ec_word GOING
- ec_word TO
- ec_word SLEEP
+ .2byte EC_WORD_IF_I_LOSE
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_STUDY
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_SCHOOL
+@ win speech
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_STUDY
+ .2byte EC_WORD_QUES
+ .2byte EC_WORD_NOT_VERY
+ .2byte EC_WORD_LIKELY_TO
+ .2byte EC_WORD_SEE
+@ loss speech
+ .2byte EC_WORD_NO
+ .2byte EC_WORD_THANKS
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_GOING
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_SLEEP
.4byte gBattleFrontierTrainerMons_Logan
@ 202
.4byte TRAINER_CLASS_LASS
.string "EMILEE$", 8
@ pre-battle speech
- ec_word IS
- ec_word THIS
- ec_word KIND
- ec_word OF
- ec_word BATTLE
- ec_word OK_QUES
-@ win speech
- ec_word LET_S
- ec_word GO
- ec_word FOR
- ec_word AN
- ec_move1 ICY_WIND
- ec_move2 SURF
-@ loss speech
- ec_word HOW
- ec_word ABOUT
- ec_word A
- ec_move1 ROCK_SLIDE
- ec_word SHOW
- ec_word QUES
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_KIND
+ .2byte EC_WORD_OF
+ .2byte EC_WORD_BATTLE
+ .2byte EC_WORD_OK_QUES
+@ win speech
+ .2byte EC_WORD_LET_S
+ .2byte EC_WORD_GO
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_AN
+ .2byte EC_MOVE(ICY_WIND)
+ .2byte EC_MOVE2(SURF)
+@ loss speech
+ .2byte EC_WORD_HOW
+ .2byte EC_WORD_ABOUT
+ .2byte EC_WORD_A
+ .2byte EC_MOVE(ROCK_SLIDE)
+ .2byte EC_WORD_SHOW
+ .2byte EC_WORD_QUES
.4byte gBattleFrontierTrainerMons_Emilee
@ 203
.4byte TRAINER_CLASS_LASS
.string "JOSIE$", 8
@ pre-battle speech
- ec_word A
- ec_word POKEMON
- ec_word FASHION
- ec_word CONTEST
- ec_word IS
- ec_word PRETTY
-@ win speech
- ec_word I
- ec_word REALLY
- ec_word LIKE
- ec_word MODE
- ec_word FASHION
- ec_word THINGS
-@ loss speech
- ec_word YOU_RE
- ec_word TOTALLY
- ec_word LACKING
- ec_word IN
- ec_word FASHION
- ec_word SENSE
+ .2byte EC_WORD_A
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_FASHION
+ .2byte EC_WORD_CONTEST
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_PRETTY
+@ win speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_REALLY
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_MODE
+ .2byte EC_WORD_FASHION
+ .2byte EC_WORD_THINGS
+@ loss speech
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_TOTALLY
+ .2byte EC_WORD_LACKING
+ .2byte EC_WORD_IN
+ .2byte EC_WORD_FASHION
+ .2byte EC_WORD_SENSE
.4byte gBattleFrontierTrainerMons_Josie
@ 204
.4byte TRAINER_CLASS_CAMPER
.string "ARMANDO$", 8
@ pre-battle speech
- ec_word I
- ec_word NEED
- ec_word MORE
- ec_word GRASS
- ec_word TYPE
- ec_word POKEMON
-@ win speech
- ec_word TRADE
- ec_word ME
- ec_word A
- ec_word GRASS
- ec_word POKEMON
- ec_word PLEASE
-@ loss speech
- ec_word THERE
- ec_word AREN_T
- ec_word ENOUGH
- ec_word GRASS
- ec_word TYPE
- ec_word POKEMON
+ .2byte EC_WORD_I
+ .2byte EC_WORD_NEED
+ .2byte EC_WORD_MORE
+ .2byte EC_WORD_GRASS
+ .2byte EC_WORD_TYPE
+ .2byte EC_WORD_POKEMON
+@ win speech
+ .2byte EC_WORD_TRADE
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_A
+ .2byte EC_WORD_GRASS
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_PLEASE
+@ loss speech
+ .2byte EC_WORD_THERE
+ .2byte EC_WORD_AREN_T
+ .2byte EC_WORD_ENOUGH
+ .2byte EC_WORD_GRASS
+ .2byte EC_WORD_TYPE
+ .2byte EC_WORD_POKEMON
.4byte gBattleFrontierTrainerMons_Armando
@ 205
.4byte TRAINER_CLASS_CAMPER
.string "SKYLER$", 8
@ pre-battle speech
- ec_move2 INGRAIN
- ec_word IS
- ec_word MY
- ec_word CHOICE
- ec_word BATTLE
- ec_word MOVE
-@ win speech
- ec_word YOU
- ec_word CAN_T
- ec_word MOVE
- ec_word ME
- ec_word NOW
- ec_word EXCL
-@ loss speech
- ec_word YOU
- ec_move1 CUT
- ec_word ME
- ec_word DOWN
- ec_word ELLIPSIS
+ .2byte EC_MOVE2(INGRAIN)
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_CHOICE
+ .2byte EC_WORD_BATTLE
+ .2byte EC_WORD_MOVE
+@ win speech
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_CAN_T
+ .2byte EC_WORD_MOVE
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_NOW
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_YOU
+ .2byte EC_MOVE(CUT)
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_DOWN
+ .2byte EC_WORD_ELLIPSIS
.2byte -1
.4byte gBattleFrontierTrainerMons_Skyler
@@ -5360,154 +5360,154 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_PICNICKER
.string "RUTH$", 8
@ pre-battle speech
- ec_word I
- ec_word WANT
- ec_word TO
- ec_word ENJOY
- ec_word THIS
- ec_word BATTLE
-@ win speech
- ec_word THAT_WAS
- ec_word MUCH
- ec_word TOO
- ec_word EASY
- ec_word EXCL
- .2byte -1
-@ loss speech
- ec_word PLEASE
- ec_word STOP
- ec_word I
- ec_word DON_T
- ec_word ENJOY
- ec_word THIS
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WANT
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_ENJOY
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_BATTLE
+@ win speech
+ .2byte EC_WORD_THAT_WAS
+ .2byte EC_WORD_MUCH
+ .2byte EC_WORD_TOO
+ .2byte EC_WORD_EASY
+ .2byte EC_WORD_EXCL
+ .2byte -1
+@ loss speech
+ .2byte EC_WORD_PLEASE
+ .2byte EC_WORD_STOP
+ .2byte EC_WORD_I
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_ENJOY
+ .2byte EC_WORD_THIS
.4byte gBattleFrontierTrainerMons_Ruth
@ 207
.4byte TRAINER_CLASS_PICNICKER
.string "MELODY$", 8
@ pre-battle speech
- ec_word I
- ec_move2 WISH
- ec_word SUNDAY
- ec_word IS
- ec_word A
- ec_move2 SUNNY_DAY
-@ win speech
- ec_word SUNDAY
- ec_word SEEMS
- ec_word FOREVER
- ec_word TO
- ec_word COME
- ec_word ELLIPSIS
-@ loss speech
- ec_word THE
- ec_word FORECAST
- ec_word SAYS
- ec_word IT
- ec_word WILL
- ec_move1 HAIL
+ .2byte EC_WORD_I
+ .2byte EC_MOVE2(WISH)
+ .2byte EC_WORD_SUNDAY
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_A
+ .2byte EC_MOVE2(SUNNY_DAY)
+@ win speech
+ .2byte EC_WORD_SUNDAY
+ .2byte EC_WORD_SEEMS
+ .2byte EC_WORD_FOREVER
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_COME
+ .2byte EC_WORD_ELLIPSIS
+@ loss speech
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_FORECAST
+ .2byte EC_WORD_SAYS
+ .2byte EC_WORD_IT
+ .2byte EC_WORD_WILL
+ .2byte EC_MOVE(HAIL)
.4byte gBattleFrontierTrainerMons_Melody
@ 208
.4byte TRAINER_CLASS_SWIMMER_M
.string "PEDRO$", 8
@ pre-battle speech
- ec_word A
- ec_word SWIFT_SWIM
- ec_word WILL
- ec_word DO
- ec_word YOU
- ec_word GOOD
-@ win speech
- ec_word THAT_S
- ec_word HOW
- ec_word I
- ec_word SINK
- ec_word AN
- ec_word OPPONENT
-@ loss speech
- ec_word UH_OH
- ec_word EXCL
- .2byte -1
- ec_word A
- ec_move1 WHIRLPOOL
- ec_word EXCL
+ .2byte EC_WORD_A
+ .2byte EC_WORD_SWIFT_SWIM
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_DO
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_GOOD
+@ win speech
+ .2byte EC_WORD_THAT_S
+ .2byte EC_WORD_HOW
+ .2byte EC_WORD_I
+ .2byte EC_WORD_SINK
+ .2byte EC_WORD_AN
+ .2byte EC_WORD_OPPONENT
+@ loss speech
+ .2byte EC_WORD_UH_OH
+ .2byte EC_WORD_EXCL
+ .2byte -1
+ .2byte EC_WORD_A
+ .2byte EC_MOVE(WHIRLPOOL)
+ .2byte EC_WORD_EXCL
.4byte gBattleFrontierTrainerMons_Pedro
@ 209
.4byte TRAINER_CLASS_SWIMMER_M
.string "ERICK$", 8
@ pre-battle speech
- ec_word I
- ec_word WILL
- ec_move2 TACKLE
- ec_word YOU
- ec_word DOWN
- ec_word EXCL
-@ win speech
- ec_word DON_T
- ec_word YOU
- ec_word RUN_AWAY
- ec_word YOU
- ec_word LOSER
- ec_word EXCL
-@ loss speech
- ec_word I
- ec_word DIDN_T
- ec_word THINK
- ec_word YOU
- ec_word WOULD
- ec_move1 COUNTER
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WILL
+ .2byte EC_MOVE2(TACKLE)
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_DOWN
+ .2byte EC_WORD_EXCL
+@ win speech
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_RUN_AWAY
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_LOSER
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_DIDN_T
+ .2byte EC_WORD_THINK
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_WOULD
+ .2byte EC_MOVE(COUNTER)
.4byte gBattleFrontierTrainerMons_Erick
@ 210
.4byte TRAINER_CLASS_SWIMMER_F
.string "ELAINE$", 8
@ pre-battle speech
- ec_word MY
- ec_word HEROINE
- ec_word ADVENTURE
- ec_word ISN_T
- ec_word GOING
- ec_word WELL
-@ win speech
- ec_word THANK_YOU
- ec_word EXCL
- ec_word THAT_S
- ec_word WHAT
- ec_word I
- ec_word NEED
-@ loss speech
- ec_word I
- ec_word KNOW
- ec_word I_AM
- ec_word NOT
- ec_word A
- ec_word HEROINE
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_HEROINE
+ .2byte EC_WORD_ADVENTURE
+ .2byte EC_WORD_ISN_T
+ .2byte EC_WORD_GOING
+ .2byte EC_WORD_WELL
+@ win speech
+ .2byte EC_WORD_THANK_YOU
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_THAT_S
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_I
+ .2byte EC_WORD_NEED
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_KNOW
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_A
+ .2byte EC_WORD_HEROINE
.4byte gBattleFrontierTrainerMons_Elaine
@ 211
.4byte TRAINER_CLASS_SWIMMER_F
.string "JOYCE$", 8
@ pre-battle speech
- ec_word YOU
- ec_word MAKE
- ec_word ME
- ec_word GO
- ec_word AHAHA
- ec_word EXCL
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_MAKE
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_GO
+ .2byte EC_WORD_AHAHA
+ .2byte EC_WORD_EXCL
@ win speech
- ec_word LALALA
- ec_word NO
- ec_word LOSING
- ec_word FOR
- ec_word ME
- ec_word EXCL
+ .2byte EC_WORD_LALALA
+ .2byte EC_WORD_NO
+ .2byte EC_WORD_LOSING
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_EXCL
@ loss speech
- ec_word LALALA
- ec_word ELLIPSIS
+ .2byte EC_WORD_LALALA
+ .2byte EC_WORD_ELLIPSIS
.2byte -1
- ec_word HUH_QUES
+ .2byte EC_WORD_HUH_QUES
.2byte -1
.2byte -1
.4byte gBattleFrontierTrainerMons_Joyce
@@ -5516,129 +5516,129 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_POKEFAN_1
.string "TODD$", 8
@ pre-battle speech
- ec_word YOU_RE
- ec_word A
- ec_word LIGHTNINGROD
- ec_word FOR
- ec_word MY
- ec_word POWER
-@ win speech
- ec_word THAT_S
- ec_word ALL
- ec_word YOU
- ec_word COULD
- ec_move1 ABSORB
- ec_word QUES
-@ loss speech
- ec_word YOU
- ec_move2 REFLECT
- ec_word MY
- ec_word POWER
- ec_word BACK
- ec_word QUES
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_A
+ .2byte EC_WORD_LIGHTNINGROD
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_POWER
+@ win speech
+ .2byte EC_WORD_THAT_S
+ .2byte EC_WORD_ALL
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_COULD
+ .2byte EC_MOVE(ABSORB)
+ .2byte EC_WORD_QUES
+@ loss speech
+ .2byte EC_WORD_YOU
+ .2byte EC_MOVE2(REFLECT)
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_POWER
+ .2byte EC_WORD_BACK
+ .2byte EC_WORD_QUES
.4byte gBattleFrontierTrainerMons_Todd
@ 213
.4byte TRAINER_CLASS_POKEFAN_1
.string "GAVIN$", 8
@ pre-battle speech
- ec_word I
- ec_word WILL
- ec_move1 BIDE
- ec_word MY
- ec_word TIME
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WILL
+ .2byte EC_MOVE(BIDE)
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_TIME
.2byte -1
@ win speech
- ec_word IT_S
- ec_word OVER
- ec_word SO
- ec_word SOON
- ec_word QUES
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_OVER
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_SOON
+ .2byte EC_WORD_QUES
.2byte -1
@ loss speech
- ec_word MY
- ec_word MISTAKE
- ec_word WAS
- ec_word TOO
- ec_word EXPENSIVE
- ec_word ELLIPSIS
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_MISTAKE
+ .2byte EC_WORD_WAS
+ .2byte EC_WORD_TOO
+ .2byte EC_WORD_EXPENSIVE
+ .2byte EC_WORD_ELLIPSIS
.4byte gBattleFrontierTrainerMons_Gavin
@ 214
.4byte TRAINER_CLASS_POKEFAN_2
.string "MALORY$", 8
@ pre-battle speech
- ec_word PROMISE
- ec_word TO
- ec_word SHOW
- ec_word ME
- ec_word CUTE
- ec_word POKEMON
-@ win speech
- ec_word GIGGLE
- ec_word ELLIPSIS
- .2byte -1
- ec_word THANK_YOU
- ec_word SO
- ec_word MUCH
-@ loss speech
- ec_word TCH
- ec_word YOUR
- ec_word POKEMON
- ec_word AREN_T
- ec_word VERY
- ec_word NICE
+ .2byte EC_WORD_PROMISE
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_SHOW
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_CUTE
+ .2byte EC_WORD_POKEMON
+@ win speech
+ .2byte EC_WORD_GIGGLE
+ .2byte EC_WORD_ELLIPSIS
+ .2byte -1
+ .2byte EC_WORD_THANK_YOU
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_MUCH
+@ loss speech
+ .2byte EC_WORD_TCH
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_AREN_T
+ .2byte EC_WORD_VERY
+ .2byte EC_WORD_NICE
.4byte gBattleFrontierTrainerMons_Malory
@ 215
.4byte TRAINER_CLASS_POKEFAN_2
.string "ESTHER$", 8
@ pre-battle speech
- ec_word I
- ec_word WANT
- ec_word A
- ec_word NICE
- ec_move2 PRESENT
- ec_word ELLIPSIS
-@ win speech
- ec_word PLEASE
- ec_word GET
- ec_word ME
- ec_word A
- ec_word POKEMON
- ec_word GAME
-@ loss speech
- ec_word MESSAGE
- ec_word CARDS
- ec_word MAKE
- ec_word A
- ec_word WEAK
- ec_move2 PRESENT
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WANT
+ .2byte EC_WORD_A
+ .2byte EC_WORD_NICE
+ .2byte EC_MOVE2(PRESENT)
+ .2byte EC_WORD_ELLIPSIS
+@ win speech
+ .2byte EC_WORD_PLEASE
+ .2byte EC_WORD_GET
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_A
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_GAME
+@ loss speech
+ .2byte EC_WORD_MESSAGE
+ .2byte EC_WORD_CARDS
+ .2byte EC_WORD_MAKE
+ .2byte EC_WORD_A
+ .2byte EC_WORD_WEAK
+ .2byte EC_MOVE2(PRESENT)
.4byte gBattleFrontierTrainerMons_Esther
@ 216
.4byte TRAINER_CLASS_PKMN_BREEDER_2
.string "OSCAR$", 8
@ pre-battle speech
- ec_word LET_S
- ec_word SEE
- ec_word YOUR
- ec_word POWER
- ec_word IN
- ec_word FULL
-@ win speech
- ec_word THAT_WAS
- ec_word NOT
- ec_word YOUR
- ec_word FULL
- ec_word POWER
- ec_word EXCL
-@ loss speech
- ec_word NOT
- ec_word FUNNY
- ec_word ELLIPSIS
- ec_word YOU_RE
- ec_word TOO_STRONG
+ .2byte EC_WORD_LET_S
+ .2byte EC_WORD_SEE
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_POWER
+ .2byte EC_WORD_IN
+ .2byte EC_WORD_FULL
+@ win speech
+ .2byte EC_WORD_THAT_WAS
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_FULL
+ .2byte EC_WORD_POWER
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_FUNNY
+ .2byte EC_WORD_ELLIPSIS
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_TOO_STRONG
.2byte -1
.4byte gBattleFrontierTrainerMons_Oscar
@@ -5646,129 +5646,129 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_PKMN_BREEDER_2
.string "WILSON$", 8
@ pre-battle speech
- ec_word WORK
- ec_word IS
- ec_word MAKING
- ec_word ME
- ec_word AN
- ec_word EARLY_BIRD
-@ win speech
- ec_word ALL
- ec_word WORK
- ec_word AND
- ec_word NO
- ec_word PLAY
- ec_word ELLIPSIS
-@ loss speech
- ec_move1 ENDURE
- ec_word IS
- ec_word ALL
- ec_word I
- ec_word CAN
- ec_word DO
+ .2byte EC_WORD_WORK
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_MAKING
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_AN
+ .2byte EC_WORD_EARLY_BIRD
+@ win speech
+ .2byte EC_WORD_ALL
+ .2byte EC_WORD_WORK
+ .2byte EC_WORD_AND
+ .2byte EC_WORD_NO
+ .2byte EC_WORD_PLAY
+ .2byte EC_WORD_ELLIPSIS
+@ loss speech
+ .2byte EC_MOVE(ENDURE)
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_ALL
+ .2byte EC_WORD_I
+ .2byte EC_WORD_CAN
+ .2byte EC_WORD_DO
.4byte gBattleFrontierTrainerMons_Wilson
@ 218
.4byte TRAINER_CLASS_PKMN_BREEDER_1
.string "CLARE$", 8
@ pre-battle speech
- ec_word YAY
- ec_word EXCL
- ec_word A
- ec_word TOUGH
- ec_word TRAINER
- ec_word EXCL
-@ win speech
- ec_word AWW
- ec_word EXCL
- ec_word A
- ec_word WIMPY
- ec_word TRAINER
- ec_word EXCL
-@ loss speech
- ec_word COOL
- ec_word EXCL
- ec_word A
- ec_word GENIUS
- ec_word TRAINER
- ec_word EXCL
+ .2byte EC_WORD_YAY
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_A
+ .2byte EC_WORD_TOUGH
+ .2byte EC_WORD_TRAINER
+ .2byte EC_WORD_EXCL
+@ win speech
+ .2byte EC_WORD_AWW
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_A
+ .2byte EC_WORD_WIMPY
+ .2byte EC_WORD_TRAINER
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_COOL
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_A
+ .2byte EC_WORD_GENIUS
+ .2byte EC_WORD_TRAINER
+ .2byte EC_WORD_EXCL
.4byte gBattleFrontierTrainerMons_Clare
@ 219
.4byte TRAINER_CLASS_PKMN_BREEDER_1
.string "TESS$", 8
@ pre-battle speech
- ec_word WANT
- ec_word SOME
- ec_pokemon1 GULPIN
- ec_word DESIGN
- ec_word SWEETS
- ec_word QUES
-@ win speech
- ec_word THEY_RE
- ec_word A
- ec_word SECRET
- ec_word POKEMON
- ec_word GOURMET
- ec_word ITEM
-@ loss speech
- ec_word THEY_RE
- ec_word TASTY
- ec_word EXCL
- ec_word REFRESHING
- ec_word TOO
- ec_word EXCL
+ .2byte EC_WORD_WANT
+ .2byte EC_WORD_SOME
+ .2byte EC_POKEMON(GULPIN)
+ .2byte EC_WORD_DESIGN
+ .2byte EC_WORD_SWEETS
+ .2byte EC_WORD_QUES
+@ win speech
+ .2byte EC_WORD_THEY_RE
+ .2byte EC_WORD_A
+ .2byte EC_WORD_SECRET
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_GOURMET
+ .2byte EC_WORD_ITEM
+@ loss speech
+ .2byte EC_WORD_THEY_RE
+ .2byte EC_WORD_TASTY
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_REFRESHING
+ .2byte EC_WORD_TOO
+ .2byte EC_WORD_EXCL
.4byte gBattleFrontierTrainerMons_Tess
@ 220
.4byte TRAINER_CLASS_COOLTRAINER_1
.string "LEON$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word BETTER
- ec_word THAN
- ec_word ANY
- ec_word OTHER
- ec_word TRAINER
-@ win speech
- ec_word I
- ec_word DID
- ec_word IT
- ec_move2 JUMP_KICK
- ec_word FOR
- ec_word JOY
-@ loss speech
- ec_word BACK
- ec_word HOME
- ec_word I
- ec_word WILL
- ec_word GO
- ec_word ELLIPSIS
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_BETTER
+ .2byte EC_WORD_THAN
+ .2byte EC_WORD_ANY
+ .2byte EC_WORD_OTHER
+ .2byte EC_WORD_TRAINER
+@ win speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_DID
+ .2byte EC_WORD_IT
+ .2byte EC_MOVE2(JUMP_KICK)
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_JOY
+@ loss speech
+ .2byte EC_WORD_BACK
+ .2byte EC_WORD_HOME
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_GO
+ .2byte EC_WORD_ELLIPSIS
.4byte gBattleFrontierTrainerMons_Leon
@ 221
.4byte TRAINER_CLASS_COOLTRAINER_1
.string "ALONZO$", 8
@ pre-battle speech
- ec_word I_VE
- ec_word NOT
- ec_word LOST
- ec_word ONCE
- ec_word YET
- ec_word EXCL
+ .2byte EC_WORD_I_VE
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_LOST
+ .2byte EC_WORD_ONCE
+ .2byte EC_WORD_YET
+ .2byte EC_WORD_EXCL
@ win speech
- ec_word YOUR
- ec_word SAD
- ec_word LOOK
- ec_word BECOMES
- ec_word YOU
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_SAD
+ .2byte EC_WORD_LOOK
+ .2byte EC_WORD_BECOMES
+ .2byte EC_WORD_YOU
.2byte -1
@ loss speech
- ec_word I
- ec_word DON_T
- ec_word BELIEVE
- ec_word THIS
- ec_word ELLIPSIS
+ .2byte EC_WORD_I
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_BELIEVE
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_ELLIPSIS
.2byte -1
.4byte gBattleFrontierTrainerMons_Alonzo
@@ -5776,363 +5776,363 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_COOLTRAINER_1
.string "VINCE$", 8
@ pre-battle speech
- ec_word THE
- ec_word TOP
- ec_word TRAINER
- ec_word THAT_S
- ec_word ME
- ec_word EXCL
-@ win speech
- ec_word THE
- ec_word TOP
- ec_word RANK
- ec_word BELONGS_TO
- ec_word ME
- ec_word EXCL
-@ loss speech
- ec_word I
- ec_word WILL
- ec_word APPEAL
- ec_word THIS
- ec_move1 OUTRAGE
- ec_word EXCL
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_TOP
+ .2byte EC_WORD_TRAINER
+ .2byte EC_WORD_THAT_S
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_EXCL
+@ win speech
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_TOP
+ .2byte EC_WORD_RANK
+ .2byte EC_WORD_BELONGS_TO
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_APPEAL
+ .2byte EC_WORD_THIS
+ .2byte EC_MOVE(OUTRAGE)
+ .2byte EC_WORD_EXCL
.4byte gBattleFrontierTrainerMons_Vince
@ 223
.4byte TRAINER_CLASS_COOLTRAINER_1
.string "BRYON$", 8
@ pre-battle speech
- ec_word MY
- ec_move2 BARRAGE
- ec_word WILL
- ec_move2 SLAM
- ec_word YOU
- ec_word EXCL
-@ win speech
- ec_word YOU
- ec_word DIDN_T
- ec_word COUNT_ON
- ec_word ANY
- ec_word LESS
- ec_word QUES
-@ loss speech
- ec_word I
- ec_word JUST
- ec_word DON_T
- ec_word GET
- ec_word IT
- ec_word ELLIPSIS
+ .2byte EC_WORD_MY
+ .2byte EC_MOVE2(BARRAGE)
+ .2byte EC_WORD_WILL
+ .2byte EC_MOVE2(SLAM)
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_EXCL
+@ win speech
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_DIDN_T
+ .2byte EC_WORD_COUNT_ON
+ .2byte EC_WORD_ANY
+ .2byte EC_WORD_LESS
+ .2byte EC_WORD_QUES
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_JUST
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_GET
+ .2byte EC_WORD_IT
+ .2byte EC_WORD_ELLIPSIS
.4byte gBattleFrontierTrainerMons_Bryon
@ 224
.4byte TRAINER_CLASS_COOLTRAINER_2
.string "AVA$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word A
- ec_word TREASURE
- ec_word OF
- ec_word THIS
- ec_word WORLD
-@ win speech
- ec_word MY
- ec_word WORLD
- ec_word IS
- ec_word FULL
- ec_word OF
- ec_word WONDER
-@ loss speech
- ec_word WHY
- ec_word ARE
- ec_word YOU
- ec_word SO
- ec_word TERRIBLE
- ec_word QUES
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_A
+ .2byte EC_WORD_TREASURE
+ .2byte EC_WORD_OF
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_WORLD
+@ win speech
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_WORLD
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_FULL
+ .2byte EC_WORD_OF
+ .2byte EC_WORD_WONDER
+@ loss speech
+ .2byte EC_WORD_WHY
+ .2byte EC_WORD_ARE
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_TERRIBLE
+ .2byte EC_WORD_QUES
.4byte gBattleFrontierTrainerMons_Ava
@ 225
.4byte TRAINER_CLASS_COOLTRAINER_2
.string "MIRIAM$", 8
@ pre-battle speech
- ec_word OH
- ec_word A
- ec_word TRAINER
- ec_word WITH
- ec_word A
- ec_move1 SCARY_FACE
-@ win speech
- ec_word AHAHA
- ec_word YOU
- ec_word ONLY
- ec_word LOOK
- ec_word SCARY
- ec_word EXCL
-@ loss speech
- ec_word AIYEEH
- ec_word EXCL
- ec_word YOU
- ec_word REALLY
- ec_word ARE
- ec_word SCARY
+ .2byte EC_WORD_OH
+ .2byte EC_WORD_A
+ .2byte EC_WORD_TRAINER
+ .2byte EC_WORD_WITH
+ .2byte EC_WORD_A
+ .2byte EC_MOVE(SCARY_FACE)
+@ win speech
+ .2byte EC_WORD_AHAHA
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_ONLY
+ .2byte EC_WORD_LOOK
+ .2byte EC_WORD_SCARY
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_AIYEEH
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_REALLY
+ .2byte EC_WORD_ARE
+ .2byte EC_WORD_SCARY
.4byte gBattleFrontierTrainerMons_Miriam
@ 226
.4byte TRAINER_CLASS_COOLTRAINER_2
.string "CARRIE$", 8
@ pre-battle speech
- ec_word I
- ec_word WILL
- ec_word SHOW
- ec_word YOU
- ec_word GUTSY
- ec_word EXCL
-@ win speech
- ec_word IT_S
- ec_word ALL
- ec_word ABOUT
- ec_word GUTS
- ec_word EXCL
- .2byte -1
-@ loss speech
- ec_word OH
- ec_word NO
- ec_word ELLIPSIS
- ec_move1 SELF_DESTRUCT
- ec_word MODE
- ec_word EXCL
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_SHOW
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_GUTSY
+ .2byte EC_WORD_EXCL
+@ win speech
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_ALL
+ .2byte EC_WORD_ABOUT
+ .2byte EC_WORD_GUTS
+ .2byte EC_WORD_EXCL
+ .2byte -1
+@ loss speech
+ .2byte EC_WORD_OH
+ .2byte EC_WORD_NO
+ .2byte EC_WORD_ELLIPSIS
+ .2byte EC_MOVE(SELF_DESTRUCT)
+ .2byte EC_WORD_MODE
+ .2byte EC_WORD_EXCL
.4byte gBattleFrontierTrainerMons_Carrie
@ 227
.4byte TRAINER_CLASS_COOLTRAINER_2
.string "GILLIAN$", 8
@ pre-battle speech
- ec_word I
- ec_word SEEK
- ec_word A
- ec_word TRULY
- ec_word GREAT
- ec_word BATTLE
-@ win speech
- ec_word I
- ec_word NEED
- ec_word A_LOT
- ec_word BETTER
- ec_word BATTLE
- ec_word ELLIPSIS
-@ loss speech
- ec_word THAT_WAS
- ec_word A_LITTLE
- ec_word TOO
- ec_word MUCH
- ec_word TO
- ec_word TAKE
+ .2byte EC_WORD_I
+ .2byte EC_WORD_SEEK
+ .2byte EC_WORD_A
+ .2byte EC_WORD_TRULY
+ .2byte EC_WORD_GREAT
+ .2byte EC_WORD_BATTLE
+@ win speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_NEED
+ .2byte EC_WORD_A_LOT
+ .2byte EC_WORD_BETTER
+ .2byte EC_WORD_BATTLE
+ .2byte EC_WORD_ELLIPSIS
+@ loss speech
+ .2byte EC_WORD_THAT_WAS
+ .2byte EC_WORD_A_LITTLE
+ .2byte EC_WORD_TOO
+ .2byte EC_WORD_MUCH
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_TAKE
.4byte gBattleFrontierTrainerMons_Gillian2
@ 228
.4byte TRAINER_CLASS_PKMN_RANGER_1
.string "TYLER$", 8
@ pre-battle speech
- ec_word YO
- ec_word EXCL
+ .2byte EC_WORD_YO
+ .2byte EC_WORD_EXCL
.2byte -1
- ec_word LET_S
- ec_word GO
- ec_word EXCL_EXCL
+ .2byte EC_WORD_LET_S
+ .2byte EC_WORD_GO
+ .2byte EC_WORD_EXCL_EXCL
@ win speech
- ec_word YO
- ec_word EXCL
+ .2byte EC_WORD_YO
+ .2byte EC_WORD_EXCL
.2byte -1
- ec_word I
- ec_word WON
- ec_word YO
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WON
+ .2byte EC_WORD_YO
@ loss speech
- ec_word YO
- ec_word EXCL
+ .2byte EC_WORD_YO
+ .2byte EC_WORD_EXCL
.2byte -1
- ec_word I
- ec_word LOST
- ec_word YO
+ .2byte EC_WORD_I
+ .2byte EC_WORD_LOST
+ .2byte EC_WORD_YO
.4byte gBattleFrontierTrainerMons_Tyler
@ 229
.4byte TRAINER_CLASS_PKMN_RANGER_1
.string "CHAZ$", 8
@ pre-battle speech
- ec_word MY
- ec_word POKEMON
- ec_word HAVE
- ec_word TOO
- ec_word MUCH
- ec_word POWER
-@ win speech
- ec_word THEY
- ec_word HAVE
- ec_word MORE
- ec_word POWER
- ec_word NOW
- ec_word EXCL
-@ loss speech
- ec_word YEAH
- ec_move2 TAKE_DOWN
- ec_word THEIR
- ec_word POWER
- ec_word A_TINY_BIT
- ec_word PLEASE
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_TOO
+ .2byte EC_WORD_MUCH
+ .2byte EC_WORD_POWER
+@ win speech
+ .2byte EC_WORD_THEY
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_MORE
+ .2byte EC_WORD_POWER
+ .2byte EC_WORD_NOW
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_YEAH
+ .2byte EC_MOVE2(TAKE_DOWN)
+ .2byte EC_WORD_THEIR
+ .2byte EC_WORD_POWER
+ .2byte EC_WORD_A_TINY_BIT
+ .2byte EC_WORD_PLEASE
.4byte gBattleFrontierTrainerMons_Chaz
@ 230
.4byte TRAINER_CLASS_PKMN_RANGER_1
.string "NELSON$", 8
@ pre-battle speech
- ec_word WELL_THEN
- ec_word WILL
- ec_word THIS
- ec_word POKEMON
- ec_word WORK
- ec_word QUES
-@ win speech
- ec_word I
- ec_word SEE
- ec_word THAT
- ec_word IT
- ec_word WAS
- ec_word TOO_STRONG
-@ loss speech
- ec_word IT
- ec_word DIDN_T
- ec_word MATCH_UP
- ec_word WELL
- ec_word I
- ec_word THINK
+ .2byte EC_WORD_WELL_THEN
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_WORK
+ .2byte EC_WORD_QUES
+@ win speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_SEE
+ .2byte EC_WORD_THAT
+ .2byte EC_WORD_IT
+ .2byte EC_WORD_WAS
+ .2byte EC_WORD_TOO_STRONG
+@ loss speech
+ .2byte EC_WORD_IT
+ .2byte EC_WORD_DIDN_T
+ .2byte EC_WORD_MATCH_UP
+ .2byte EC_WORD_WELL
+ .2byte EC_WORD_I
+ .2byte EC_WORD_THINK
.4byte gBattleFrontierTrainerMons_Nelson
@ 231
.4byte TRAINER_CLASS_PKMN_RANGER_2
.string "SHANIA$", 8
@ pre-battle speech
- ec_word ALL
- ec_word MY
- ec_word POKEMON
- ec_word ABSOLUTELY
- ec_word ADORE
- ec_word ME
-@ win speech
- ec_word HAPPINESS
- ec_word IS
- ec_word A
- ec_word POKEMON
- ec_word WITH
- ec_word CUTE_CHARM
-@ loss speech
- ec_word YOU_RE
- ec_word SO
- ec_word MEAN
- ec_word TO
- ec_word CUTE
- ec_word POKEMON
+ .2byte EC_WORD_ALL
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_ABSOLUTELY
+ .2byte EC_WORD_ADORE
+ .2byte EC_WORD_ME
+@ win speech
+ .2byte EC_WORD_HAPPINESS
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_A
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_WITH
+ .2byte EC_WORD_CUTE_CHARM
+@ loss speech
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_MEAN
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_CUTE
+ .2byte EC_WORD_POKEMON
.4byte gBattleFrontierTrainerMons_Shania
@ 232
.4byte TRAINER_CLASS_PKMN_RANGER_2
.string "STELLA$", 8
@ pre-battle speech
- ec_word I
- ec_word WANT
- ec_word TO
- ec_word SEE
- ec_word YOUR
- ec_word POKEMON
-@ win speech
- ec_word WELL
- ec_word AREN_T
- ec_word THEY
- ec_word BORING
- ec_word QUES
- ec_word AHAHA
-@ loss speech
- ec_word YOUR
- ec_word POKEMON
- ec_word ARE
- ec_word SOMETHING
- ec_word ELSE
- ec_word ALL_RIGHT
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WANT
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_SEE
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_POKEMON
+@ win speech
+ .2byte EC_WORD_WELL
+ .2byte EC_WORD_AREN_T
+ .2byte EC_WORD_THEY
+ .2byte EC_WORD_BORING
+ .2byte EC_WORD_QUES
+ .2byte EC_WORD_AHAHA
+@ loss speech
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_ARE
+ .2byte EC_WORD_SOMETHING
+ .2byte EC_WORD_ELSE
+ .2byte EC_WORD_ALL_RIGHT
.4byte gBattleFrontierTrainerMons_Stella
@ 233
.4byte TRAINER_CLASS_PKMN_RANGER_2
.string "DORINE$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word YOUNG
- ec_word AND
- ec_word STRONG
- ec_word EXCL
- .2byte -1
-@ win speech
- ec_word SEE
- ec_word QUES
- ec_word AREN_T
- ec_word I
- ec_word GOOD
- ec_word QUES
-@ loss speech
- ec_word THIS
- ec_word ISN_T
- ec_word WORKING
- ec_word OUT
- ec_word AT
- ec_word ALL
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_YOUNG
+ .2byte EC_WORD_AND
+ .2byte EC_WORD_STRONG
+ .2byte EC_WORD_EXCL
+ .2byte -1
+@ win speech
+ .2byte EC_WORD_SEE
+ .2byte EC_WORD_QUES
+ .2byte EC_WORD_AREN_T
+ .2byte EC_WORD_I
+ .2byte EC_WORD_GOOD
+ .2byte EC_WORD_QUES
+@ loss speech
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_ISN_T
+ .2byte EC_WORD_WORKING
+ .2byte EC_WORD_OUT
+ .2byte EC_WORD_AT
+ .2byte EC_WORD_ALL
.4byte gBattleFrontierTrainerMons_Dorine
@ 234
.4byte TRAINER_CLASS_DRAGON_TAMER
.string "MADDOX$", 8
@ pre-battle speech
- ec_word DRAGON
- ec_word POKEMON
- ec_word ARE
- ec_word MY
- ec_word NO_1
- ec_word CHOICE
-@ win speech
- ec_word IT_S
- ec_word NO
- ec_word SECRET
- ec_word DRAGON
- ec_word POKEMON
- ec_word WIN
-@ loss speech
- ec_word DRAGON
- ec_word POKEMON
- ec_word SHOULD
- ec_word NOT
- ec_word LOSE
- ec_word EXCL
+ .2byte EC_WORD_DRAGON
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_ARE
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_NO_1
+ .2byte EC_WORD_CHOICE
+@ win speech
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_NO
+ .2byte EC_WORD_SECRET
+ .2byte EC_WORD_DRAGON
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_WIN
+@ loss speech
+ .2byte EC_WORD_DRAGON
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_SHOULD
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_LOSE
+ .2byte EC_WORD_EXCL
.4byte gBattleFrontierTrainerMons_Maddox
@ 235
.4byte TRAINER_CLASS_DRAGON_TAMER
.string "DAVIN$", 8
@ pre-battle speech
- ec_word LET_S
- ec_word HEAR
- ec_word YOU
- ec_move2 ROAR
- ec_word EXCL
+ .2byte EC_WORD_LET_S
+ .2byte EC_WORD_HEAR
+ .2byte EC_WORD_YOU
+ .2byte EC_MOVE2(ROAR)
+ .2byte EC_WORD_EXCL
.2byte -1
@ win speech
- ec_word WROOOAAR_EXCL
+ .2byte EC_WORD_WROOOAAR_EXCL
.2byte -1
.2byte -1
- ec_word VICTORY
- ec_word EXCL_EXCL
+ .2byte EC_WORD_VICTORY
+ .2byte EC_WORD_EXCL_EXCL
.2byte -1
@ loss speech
- ec_word WROOOAAR_EXCL
+ .2byte EC_WORD_WROOOAAR_EXCL
.2byte -1
.2byte -1
- ec_word WHY
- ec_word QUES_EXCL
+ .2byte EC_WORD_WHY
+ .2byte EC_WORD_QUES_EXCL
.2byte -1
.4byte gBattleFrontierTrainerMons_Davin
@@ -6140,285 +6140,285 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_DRAGON_TAMER
.string "TREVON$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word LIVING
- ec_word ONLY
- ec_word WITH
- ec_word DRAGON
- ec_word POKEMON
-@ win speech
- ec_word THE
- ec_word WAY
- ec_word I_AM
- ec_word LIVING
- ec_word IS
- ec_word PERFECT
-@ loss speech
- ec_word YOU_VE
- ec_word DESTROYED
- ec_word THE
- ec_word WAY
- ec_word I_AM
- ec_word LIVING
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_LIVING
+ .2byte EC_WORD_ONLY
+ .2byte EC_WORD_WITH
+ .2byte EC_WORD_DRAGON
+ .2byte EC_WORD_POKEMON
+@ win speech
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_WAY
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_LIVING
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_PERFECT
+@ loss speech
+ .2byte EC_WORD_YOU_VE
+ .2byte EC_WORD_DESTROYED
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_WAY
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_LIVING
.4byte gBattleFrontierTrainerMons_Trevon
@ 237
.4byte TRAINER_CLASS_BLACK_BELT
.string "MATEO$", 8
@ pre-battle speech
- ec_word THIS
- ec_word SHOULD
- ec_word BE
- ec_word OVER
- ec_word SOON
- ec_word ENOUGH
-@ win speech
- ec_word WELL
- ec_word THAT
- ec_word DIDN_T
- ec_word TAKE
- ec_word VERY
- ec_word MUCH
-@ loss speech
- ec_word I
- ec_word CAN_T
- ec_word LOSE
- ec_word SO
- ec_word SOON
- ec_word EXCL
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_SHOULD
+ .2byte EC_WORD_BE
+ .2byte EC_WORD_OVER
+ .2byte EC_WORD_SOON
+ .2byte EC_WORD_ENOUGH
+@ win speech
+ .2byte EC_WORD_WELL
+ .2byte EC_WORD_THAT
+ .2byte EC_WORD_DIDN_T
+ .2byte EC_WORD_TAKE
+ .2byte EC_WORD_VERY
+ .2byte EC_WORD_MUCH
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_CAN_T
+ .2byte EC_WORD_LOSE
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_SOON
+ .2byte EC_WORD_EXCL
.4byte gBattleFrontierTrainerMons_Mateo
@ 238
.4byte TRAINER_CLASS_BLACK_BELT
.string "BRET$", 8
@ pre-battle speech
- ec_word I
- ec_word LIKE
- ec_word ROCK_SOLID
- ec_word POKEMON
- ec_word THE
- ec_word BEST
-@ win speech
- ec_word TOUGHNESS
- ec_word IS
- ec_word THE
- ec_word WAY
- ec_word TO
- ec_word GO
-@ loss speech
- ec_word I
- ec_word ALSO
- ec_word HAVE
- ec_word A
- ec_word PLUSH_DOLL
- ec_word COLLECTION
+ .2byte EC_WORD_I
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_ROCK_SOLID
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_BEST
+@ win speech
+ .2byte EC_WORD_TOUGHNESS
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_WAY
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_GO
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_ALSO
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_A
+ .2byte EC_WORD_PLUSH_DOLL
+ .2byte EC_WORD_COLLECTION
.4byte gBattleFrontierTrainerMons_Bret
@ 239
.4byte TRAINER_CLASS_BLACK_BELT
.string "RAUL$", 8
@ pre-battle speech
- ec_word I
- ec_word REJECT
- ec_word EVERY
- ec_word WEAK
- ec_word TRAINER
- .2byte -1
-@ win speech
- ec_word HUMPH
- ec_word EXCL
- ec_word ANOTHER
- ec_word WEAK
- ec_word TRAINER
- ec_word ELLIPSIS
-@ loss speech
- ec_word THERE
- ec_word IS
- ec_word NOTHING
- ec_word WEAK
- ec_word ABOUT
- ec_word YOU
+ .2byte EC_WORD_I
+ .2byte EC_WORD_REJECT
+ .2byte EC_WORD_EVERY
+ .2byte EC_WORD_WEAK
+ .2byte EC_WORD_TRAINER
+ .2byte -1
+@ win speech
+ .2byte EC_WORD_HUMPH
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_ANOTHER
+ .2byte EC_WORD_WEAK
+ .2byte EC_WORD_TRAINER
+ .2byte EC_WORD_ELLIPSIS
+@ loss speech
+ .2byte EC_WORD_THERE
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_NOTHING
+ .2byte EC_WORD_WEAK
+ .2byte EC_WORD_ABOUT
+ .2byte EC_WORD_YOU
.4byte gBattleFrontierTrainerMons_Raul
@ 240
.4byte TRAINER_CLASS_BATTLE_GIRL
.string "KAY$", 8
@ pre-battle speech
- ec_word AND
- ec_word YET
- ec_word ANOTHER
- ec_word BATTLE
- ec_word QUES
- .2byte -1
-@ win speech
- ec_word I
- ec_word WON
- ec_word BUT
- ec_word I_AM
- ec_word TIRED
- ec_word ELLIPSIS
-@ loss speech
- ec_word GOOD
- ec_word IT_S
- ec_word OVER
- ec_word AT
- ec_word LAST
- ec_word ELLIPSIS
+ .2byte EC_WORD_AND
+ .2byte EC_WORD_YET
+ .2byte EC_WORD_ANOTHER
+ .2byte EC_WORD_BATTLE
+ .2byte EC_WORD_QUES
+ .2byte -1
+@ win speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WON
+ .2byte EC_WORD_BUT
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_TIRED
+ .2byte EC_WORD_ELLIPSIS
+@ loss speech
+ .2byte EC_WORD_GOOD
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_OVER
+ .2byte EC_WORD_AT
+ .2byte EC_WORD_LAST
+ .2byte EC_WORD_ELLIPSIS
.4byte gBattleFrontierTrainerMons_Kay
@ 241
.4byte TRAINER_CLASS_BATTLE_GIRL
.string "ELENA$", 8
@ pre-battle speech
- ec_word A
- ec_word BATTLE
- ec_word GIRL
- ec_word THAT_S
- ec_word ME
- ec_word EXCL
-@ win speech
- ec_word ISN_T
- ec_word A
- ec_word BATTLE
- ec_word GIRL
- ec_word AWESOME
- ec_word QUES
-@ loss speech
- ec_word YOU
- ec_word DISLIKE
- ec_word A
- ec_word BATTLE
- ec_word GIRL
- ec_word QUES
+ .2byte EC_WORD_A
+ .2byte EC_WORD_BATTLE
+ .2byte EC_WORD_GIRL
+ .2byte EC_WORD_THAT_S
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_EXCL
+@ win speech
+ .2byte EC_WORD_ISN_T
+ .2byte EC_WORD_A
+ .2byte EC_WORD_BATTLE
+ .2byte EC_WORD_GIRL
+ .2byte EC_WORD_AWESOME
+ .2byte EC_WORD_QUES
+@ loss speech
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_DISLIKE
+ .2byte EC_WORD_A
+ .2byte EC_WORD_BATTLE
+ .2byte EC_WORD_GIRL
+ .2byte EC_WORD_QUES
.4byte gBattleFrontierTrainerMons_Elena
@ 242
.4byte TRAINER_CLASS_BATTLE_GIRL
.string "ALANA$", 8
@ pre-battle speech
- ec_word EAT
- ec_word MY
- ec_word INVINCIBLE
- ec_word ATTACK
- ec_word YOU
- ec_word EXCL
-@ win speech
- ec_word YOU
- ec_word HAVE
- ec_word MUCH
- ec_word TO
- ec_word LEARN
- .2byte -1
-@ loss speech
- ec_word SO
- ec_word MUCH
- ec_word FOR
- ec_word MY
- ec_word INVINCIBLE
- ec_word ATTACK
+ .2byte EC_WORD_EAT
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_INVINCIBLE
+ .2byte EC_WORD_ATTACK
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_EXCL
+@ win speech
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_MUCH
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_LEARN
+ .2byte -1
+@ loss speech
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_MUCH
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_INVINCIBLE
+ .2byte EC_WORD_ATTACK
.4byte gBattleFrontierTrainerMons_Alana
@ 243
.4byte TRAINER_CLASS_EXPERT_1
.string "ALEXAS$", 8
@ pre-battle speech
- ec_word GOOD
- ec_word TO
- ec_word MEET_YOU
- ec_word YOUNG
- ec_word TRAINER
- ec_word EXCL
-@ win speech
- ec_word WAHAHAHA
- ec_word EXCL
- .2byte -1
- ec_word GIVE
- ec_word IT
- ec_word UP
-@ loss speech
- ec_word YOU
- ec_word ARE
- ec_word A
- ec_word STRONG
- ec_word TRAINER
- ec_word KID
+ .2byte EC_WORD_GOOD
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_MEET_YOU
+ .2byte EC_WORD_YOUNG
+ .2byte EC_WORD_TRAINER
+ .2byte EC_WORD_EXCL
+@ win speech
+ .2byte EC_WORD_WAHAHAHA
+ .2byte EC_WORD_EXCL
+ .2byte -1
+ .2byte EC_WORD_GIVE
+ .2byte EC_WORD_IT
+ .2byte EC_WORD_UP
+@ loss speech
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_ARE
+ .2byte EC_WORD_A
+ .2byte EC_WORD_STRONG
+ .2byte EC_WORD_TRAINER
+ .2byte EC_WORD_KID
.4byte gBattleFrontierTrainerMons_Alexas
@ 244
.4byte TRAINER_CLASS_EXPERT_1
.string "WESTON$", 8
@ pre-battle speech
- ec_word I
- ec_word DON_T
- ec_word PLAY
- ec_word DOWN
- ec_word ALL_RIGHT
- ec_word QUES
-@ win speech
- ec_word YOU_RE
- ec_word FAR
- ec_word TOO
- ec_word EASY
- ec_word TO
- ec_word ATTACK
-@ loss speech
- ec_word WELL
- ec_word WELL
- ec_word ELLIPSIS
- ec_word I
- ec_word SURRENDER
- ec_word ELLIPSIS
+ .2byte EC_WORD_I
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_PLAY
+ .2byte EC_WORD_DOWN
+ .2byte EC_WORD_ALL_RIGHT
+ .2byte EC_WORD_QUES
+@ win speech
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_FAR
+ .2byte EC_WORD_TOO
+ .2byte EC_WORD_EASY
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_ATTACK
+@ loss speech
+ .2byte EC_WORD_WELL
+ .2byte EC_WORD_WELL
+ .2byte EC_WORD_ELLIPSIS
+ .2byte EC_WORD_I
+ .2byte EC_WORD_SURRENDER
+ .2byte EC_WORD_ELLIPSIS
.4byte gBattleFrontierTrainerMons_Weston
@ 245
.4byte TRAINER_CLASS_EXPERT_1
.string "JASPER$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word NOT
- ec_word OLD
- ec_word I_AM
- ec_word SKILLED
- ec_word EXCL
-@ win speech
- ec_word SKILLED
- ec_word THAT_S
- ec_word WHAT
- ec_word I_AM
- ec_word EXCL
- .2byte -1
-@ loss speech
- ec_word I_AM
- ec_word SHOCKED
- ec_word EXCL
- ec_word DOWN
- ec_word I
- ec_word GO
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_OLD
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_SKILLED
+ .2byte EC_WORD_EXCL
+@ win speech
+ .2byte EC_WORD_SKILLED
+ .2byte EC_WORD_THAT_S
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_EXCL
+ .2byte -1
+@ loss speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_SHOCKED
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_DOWN
+ .2byte EC_WORD_I
+ .2byte EC_WORD_GO
.4byte gBattleFrontierTrainerMons_Jasper
@ 246
.4byte TRAINER_CLASS_EXPERT_2
.string "NADIA$", 8
@ pre-battle speech
- ec_word YOU
- ec_word CAN_T
- ec_word BEAT
- ec_word ME
- ec_word DOWN
- ec_word EXCL
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_CAN_T
+ .2byte EC_WORD_BEAT
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_DOWN
+ .2byte EC_WORD_EXCL
@ win speech
- ec_word HAH
- ec_word EXCL
+ .2byte EC_WORD_HAH
+ .2byte EC_WORD_EXCL
.2byte -1
- ec_word I
- ec_word BEAT
- ec_word YOU
+ .2byte EC_WORD_I
+ .2byte EC_WORD_BEAT
+ .2byte EC_WORD_YOU
@ loss speech
- ec_word I_AM
- ec_move2 BEAT_UP
- ec_word AND
- ec_word DOWNCAST
- ec_word ELLIPSIS
+ .2byte EC_WORD_I_AM
+ .2byte EC_MOVE2(BEAT_UP)
+ .2byte EC_WORD_AND
+ .2byte EC_WORD_DOWNCAST
+ .2byte EC_WORD_ELLIPSIS
.2byte -1
.4byte gBattleFrontierTrainerMons_Nadia
@@ -6426,103 +6426,103 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_EXPERT_2
.string "MIRANDA$", 8
@ pre-battle speech
- ec_word WELL
- ec_word WELL
+ .2byte EC_WORD_WELL
+ .2byte EC_WORD_WELL
.2byte -1
- ec_word LET_S
- ec_word START
+ .2byte EC_WORD_LET_S
+ .2byte EC_WORD_START
.2byte -1
@ win speech
- ec_word WHAT
- ec_word QUES
- ec_word DONE
- ec_word SO
- ec_word SOON
- ec_word QUES
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_QUES
+ .2byte EC_WORD_DONE
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_SOON
+ .2byte EC_WORD_QUES
@ loss speech
- ec_word WELL
- ec_word I
- ec_word SEE
- ec_word THAT
- ec_word I_AM
- ec_word TOO_WEAK
+ .2byte EC_WORD_WELL
+ .2byte EC_WORD_I
+ .2byte EC_WORD_SEE
+ .2byte EC_WORD_THAT
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_TOO_WEAK
.4byte gBattleFrontierTrainerMons_Miranda
@ 248
.4byte TRAINER_CLASS_EXPERT_2
.string "EMMA$", 8
@ pre-battle speech
- ec_word I_VE
- ec_word BEEN
- ec_word HEARING
- ec_word ABOUT
- ec_word YOU
+ .2byte EC_WORD_I_VE
+ .2byte EC_WORD_BEEN
+ .2byte EC_WORD_HEARING
+ .2byte EC_WORD_ABOUT
+ .2byte EC_WORD_YOU
.2byte -1
@ win speech
- ec_word I
- ec_word THINK
- ec_word I_VE
- ec_word MISHEARD
- ec_word THINGS
+ .2byte EC_WORD_I
+ .2byte EC_WORD_THINK
+ .2byte EC_WORD_I_VE
+ .2byte EC_WORD_MISHEARD
+ .2byte EC_WORD_THINGS
.2byte -1
@ loss speech
- ec_word WHAT
- ec_word I_VE
- ec_word BEEN
- ec_word HEARING
- ec_word IS
- ec_word RIGHT
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_I_VE
+ .2byte EC_WORD_BEEN
+ .2byte EC_WORD_HEARING
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_RIGHT
.4byte gBattleFrontierTrainerMons_Emma
@ 249
.4byte TRAINER_CLASS_PSYCHIC_1
.string "ROLANDO$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word A
- ec_word SUPER
- ec_word POKEMON
- ec_word HERO
- ec_word EXCL
-@ win speech
- ec_word WAS
- ec_word THAT
- ec_word ENOUGH
- ec_word FOR
- ec_word YOU
- ec_word QUES
-@ loss speech
- ec_word YOU
- ec_word SHOULD
- ec_word NOT
- ec_word BEAT
- ec_word A
- ec_word HERO
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_A
+ .2byte EC_WORD_SUPER
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_HERO
+ .2byte EC_WORD_EXCL
+@ win speech
+ .2byte EC_WORD_WAS
+ .2byte EC_WORD_THAT
+ .2byte EC_WORD_ENOUGH
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_QUES
+@ loss speech
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_SHOULD
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_BEAT
+ .2byte EC_WORD_A
+ .2byte EC_WORD_HERO
.4byte gBattleFrontierTrainerMons_Rolando
@ 250
.4byte TRAINER_CLASS_PSYCHIC_1
.string "STANLY$", 8
@ pre-battle speech
- ec_word THIS
- ec_word SHOULD
- ec_word BE
- ec_word AN
- ec_word EASY
- ec_word MATCH
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_SHOULD
+ .2byte EC_WORD_BE
+ .2byte EC_WORD_AN
+ .2byte EC_WORD_EASY
+ .2byte EC_WORD_MATCH
@ win speech
- ec_word IT
- ec_word REALLY
- ec_word WAS
- ec_word EASY
+ .2byte EC_WORD_IT
+ .2byte EC_WORD_REALLY
+ .2byte EC_WORD_WAS
+ .2byte EC_WORD_EASY
.2byte -1
.2byte -1
@ loss speech
- ec_word ARE
- ec_word YOU
- ec_word HAPPY
- ec_word NOW
- ec_word QUES
+ .2byte EC_WORD_ARE
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_HAPPY
+ .2byte EC_WORD_NOW
+ .2byte EC_WORD_QUES
.2byte -1
.4byte gBattleFrontierTrainerMons_Stanly
@@ -6530,207 +6530,207 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_PSYCHIC_1
.string "DARIO$", 8
@ pre-battle speech
- ec_word MY
- ec_move2 FORESIGHT
- ec_word SAYS
- ec_word I
- ec_word WILL
- ec_word WIN
-@ win speech
- ec_word MY
- ec_move2 FORESIGHT
- ec_word HAS
- ec_word BEEN
- ec_word PERFECT
- .2byte -1
-@ loss speech
- ec_word I
- ec_word DIDN_T
- ec_word SEE
- ec_word THIS
- ec_move1 REVERSAL
- ec_word ELLIPSIS
+ .2byte EC_WORD_MY
+ .2byte EC_MOVE2(FORESIGHT)
+ .2byte EC_WORD_SAYS
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_WIN
+@ win speech
+ .2byte EC_WORD_MY
+ .2byte EC_MOVE2(FORESIGHT)
+ .2byte EC_WORD_HAS
+ .2byte EC_WORD_BEEN
+ .2byte EC_WORD_PERFECT
+ .2byte -1
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_DIDN_T
+ .2byte EC_WORD_SEE
+ .2byte EC_WORD_THIS
+ .2byte EC_MOVE(REVERSAL)
+ .2byte EC_WORD_ELLIPSIS
.4byte gBattleFrontierTrainerMons_Dario
@ 252
.4byte TRAINER_CLASS_PSYCHIC_2
.string "KARLEE$", 8
@ pre-battle speech
- ec_word SOMETHING
- ec_word GOOD
- ec_word WILL
- ec_word COME
- ec_word OF
- ec_word THIS
-@ win speech
- ec_word YOU
- ec_word SEE
- ec_word QUES
- ec_word FANTASTIC
- ec_word EXCL
- .2byte -1
-@ loss speech
- ec_word THAT
- ec_word SOMETHING
- ec_word GOOD
- ec_word WENT
- ec_word TO
- ec_word YOU
+ .2byte EC_WORD_SOMETHING
+ .2byte EC_WORD_GOOD
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_COME
+ .2byte EC_WORD_OF
+ .2byte EC_WORD_THIS
+@ win speech
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_SEE
+ .2byte EC_WORD_QUES
+ .2byte EC_WORD_FANTASTIC
+ .2byte EC_WORD_EXCL
+ .2byte -1
+@ loss speech
+ .2byte EC_WORD_THAT
+ .2byte EC_WORD_SOMETHING
+ .2byte EC_WORD_GOOD
+ .2byte EC_WORD_WENT
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_YOU
.4byte gBattleFrontierTrainerMons_Karlee
@ 253
.4byte TRAINER_CLASS_PSYCHIC_2
.string "JAYLIN$", 8
@ pre-battle speech
- ec_word EVERY
- ec_word TRAINER
- ec_word HAS
- ec_word BEEN
- ec_word TOO_WEAK
- ec_word ELLIPSIS
-@ win speech
- ec_word IT_S
- ec_word MAKING
- ec_word ME
- ec_move1 YAWN
- ec_word THAT
- ec_word BATTLE
-@ loss speech
- ec_word I
- ec_word SLEPT
- ec_word AND
- ec_word SO
- ec_word I
- ec_word LOST
+ .2byte EC_WORD_EVERY
+ .2byte EC_WORD_TRAINER
+ .2byte EC_WORD_HAS
+ .2byte EC_WORD_BEEN
+ .2byte EC_WORD_TOO_WEAK
+ .2byte EC_WORD_ELLIPSIS
+@ win speech
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_MAKING
+ .2byte EC_WORD_ME
+ .2byte EC_MOVE(YAWN)
+ .2byte EC_WORD_THAT
+ .2byte EC_WORD_BATTLE
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_SLEPT
+ .2byte EC_WORD_AND
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_I
+ .2byte EC_WORD_LOST
.4byte gBattleFrontierTrainerMons_Jaylin
@ 254
.4byte TRAINER_CLASS_PSYCHIC_2
.string "INGRID$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word NOT
- ec_word A
- ec_word VERY
- ec_word MEAN
- ec_word TRAINER
-@ win speech
- ec_word WASN_T
- ec_word THAT
- ec_word A
- ec_word GOOD
- ec_word MATCH
- ec_word QUES
-@ loss speech
- ec_word I
- ec_word LOST
- ec_word CAUSE
- ec_word YOU_RE
- ec_word MEAN
- ec_word ELLIPSIS
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_A
+ .2byte EC_WORD_VERY
+ .2byte EC_WORD_MEAN
+ .2byte EC_WORD_TRAINER
+@ win speech
+ .2byte EC_WORD_WASN_T
+ .2byte EC_WORD_THAT
+ .2byte EC_WORD_A
+ .2byte EC_WORD_GOOD
+ .2byte EC_WORD_MATCH
+ .2byte EC_WORD_QUES
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_LOST
+ .2byte EC_WORD_CAUSE
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_MEAN
+ .2byte EC_WORD_ELLIPSIS
.4byte gBattleFrontierTrainerMons_Ingrid
@ 255
.4byte TRAINER_CLASS_HEX_MANIAC
.string "DELILAH$", 8
@ pre-battle speech
- ec_word DON_T
- ec_move1 GRUDGE
- ec_word ME
- ec_word IF_I_WIN
- ec_word OK_QUES
- .2byte -1
-@ win speech
- ec_word I_AM
- ec_word SORRY
- ec_word TO
- ec_word SEE
- ec_word YOU
- ec_word ANGRY
-@ loss speech
- ec_word I
- ec_word HAVE
- ec_word A
- ec_move1 GRUDGE
- ec_word WITH
- ec_word YOU
+ .2byte EC_WORD_DON_T
+ .2byte EC_MOVE(GRUDGE)
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_IF_I_WIN
+ .2byte EC_WORD_OK_QUES
+ .2byte -1
+@ win speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_SORRY
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_SEE
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_ANGRY
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_A
+ .2byte EC_MOVE(GRUDGE)
+ .2byte EC_WORD_WITH
+ .2byte EC_WORD_YOU
.4byte gBattleFrontierTrainerMons_Delilah
@ 256
.4byte TRAINER_CLASS_HEX_MANIAC
.string "CARLY$", 8
@ pre-battle speech
- ec_word I
- ec_word WILL
- ec_word SCATTER
- ec_word SOME
- ec_move2 POISON_POWDER
- ec_word ABOUT
-@ win speech
- ec_word IT_S
- ec_word SCARY
- ec_word HOW
- ec_word MY
- ec_word STRATEGY
- ec_word WORKS
-@ loss speech
- ec_word I
- ec_word DISLIKE
- ec_word YOU
- ec_word AND
- ec_word YOUR
- ec_word POKEMON
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_SCATTER
+ .2byte EC_WORD_SOME
+ .2byte EC_MOVE2(POISON_POWDER)
+ .2byte EC_WORD_ABOUT
+@ win speech
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_SCARY
+ .2byte EC_WORD_HOW
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_STRATEGY
+ .2byte EC_WORD_WORKS
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_DISLIKE
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_AND
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_POKEMON
.4byte gBattleFrontierTrainerMons_Carly
@ 257
.4byte TRAINER_CLASS_HEX_MANIAC
.string "LEXIE$", 8
@ pre-battle speech
- ec_word WANT
- ec_word TO
- ec_word SEE
- ec_word SCARY
- ec_word POKEMON
- ec_word QUES
+ .2byte EC_WORD_WANT
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_SEE
+ .2byte EC_WORD_SCARY
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_QUES
@ win speech
- ec_word WASN_T
- ec_word THAT
- ec_word SCARY
- ec_word EH_QUES
+ .2byte EC_WORD_WASN_T
+ .2byte EC_WORD_THAT
+ .2byte EC_WORD_SCARY
+ .2byte EC_WORD_EH_QUES
.2byte -1
.2byte -1
@ loss speech
- ec_word YOU_RE
- ec_word MORE
- ec_word SCARY
- ec_word THAN
- ec_word MY
- ec_word POKEMON
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_MORE
+ .2byte EC_WORD_SCARY
+ .2byte EC_WORD_THAN
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_POKEMON
.4byte gBattleFrontierTrainerMons_Lexie
@ 258
.4byte TRAINER_CLASS_POKEMANIAC
.string "MILLER$", 8
@ pre-battle speech
- ec_word HELLO
- ec_word QUES
+ .2byte EC_WORD_HELLO
+ .2byte EC_WORD_QUES
.2byte -1
- ec_word HELLO
- ec_word QUES_EXCL
+ .2byte EC_WORD_HELLO
+ .2byte EC_WORD_QUES_EXCL
.2byte -1
@ win speech
- ec_word HELLO
- ec_word MOTHER
- ec_word EXCL
- ec_word I
- ec_word WON
- ec_word EXCL
+ .2byte EC_WORD_HELLO
+ .2byte EC_WORD_MOTHER
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WON
+ .2byte EC_WORD_EXCL
@ loss speech
- ec_word MY
- ec_word PHONE
- ec_word ISN_T
- ec_word WORKING
- ec_word ELLIPSIS
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_PHONE
+ .2byte EC_WORD_ISN_T
+ .2byte EC_WORD_WORKING
+ .2byte EC_WORD_ELLIPSIS
.2byte -1
.4byte gBattleFrontierTrainerMons_Miller
@@ -6738,153 +6738,153 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_POKEMANIAC
.string "MARV$", 8
@ pre-battle speech
- ec_word YOU
- ec_word CAN
- ec_word LOSE
- ec_word YOUR
- ec_move1 SWAGGER
- ec_word NOW
-@ win speech
- ec_word THERE
- ec_word IS
- ec_word NO
- ec_move1 SWAGGER
- ec_word LEFT
- ec_word EH_QUES
-@ loss speech
- ec_word GO
- ec_word ON
- ec_move1 SWAGGER
- ec_word ALL
- ec_word YOU
- ec_word WANT
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_CAN
+ .2byte EC_WORD_LOSE
+ .2byte EC_WORD_YOUR
+ .2byte EC_MOVE(SWAGGER)
+ .2byte EC_WORD_NOW
+@ win speech
+ .2byte EC_WORD_THERE
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_NO
+ .2byte EC_MOVE(SWAGGER)
+ .2byte EC_WORD_LEFT
+ .2byte EC_WORD_EH_QUES
+@ loss speech
+ .2byte EC_WORD_GO
+ .2byte EC_WORD_ON
+ .2byte EC_MOVE(SWAGGER)
+ .2byte EC_WORD_ALL
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_WANT
.4byte gBattleFrontierTrainerMons_Marv
@ 260
.4byte TRAINER_CLASS_POKEMANIAC
.string "LAYTON$", 8
@ pre-battle speech
- ec_word I
- ec_word KNOW
- ec_word I_AM
- ec_word TOTALLY
- ec_word COOL
- ec_word EXCL
-@ win speech
- ec_word YOU
- ec_word CAN
- ec_word LOOK
- ec_word UP
- ec_word TO
- ec_word ME
-@ loss speech
- ec_word YOU_RE
- ec_word COOL
- ec_word EXCL
- ec_word NO
- ec_word REALLY
- ec_word EXCL
+ .2byte EC_WORD_I
+ .2byte EC_WORD_KNOW
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_TOTALLY
+ .2byte EC_WORD_COOL
+ .2byte EC_WORD_EXCL
+@ win speech
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_CAN
+ .2byte EC_WORD_LOOK
+ .2byte EC_WORD_UP
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_ME
+@ loss speech
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_COOL
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_NO
+ .2byte EC_WORD_REALLY
+ .2byte EC_WORD_EXCL
.4byte gBattleFrontierTrainerMons_Layton
@ 261
.4byte TRAINER_CLASS_GENTLEMAN
.string "BROOKS$", 8
@ pre-battle speech
- ec_word THIS
- ec_word IS
- ec_word A
- ec_word HIGH
- ec_word LEVEL
- ec_word BATTLE
-@ win speech
- ec_word THAT_WAS
- ec_word HIGH
- ec_word LEVEL
- ec_word AND
- ec_word EXCITING
- ec_word TOO
-@ loss speech
- ec_word YOU_RE
- ec_word TOO
- ec_word HIGH
- ec_word IN
- ec_word LEVEL
- ec_word ELLIPSIS
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_A
+ .2byte EC_WORD_HIGH
+ .2byte EC_WORD_LEVEL
+ .2byte EC_WORD_BATTLE
+@ win speech
+ .2byte EC_WORD_THAT_WAS
+ .2byte EC_WORD_HIGH
+ .2byte EC_WORD_LEVEL
+ .2byte EC_WORD_AND
+ .2byte EC_WORD_EXCITING
+ .2byte EC_WORD_TOO
+@ loss speech
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_TOO
+ .2byte EC_WORD_HIGH
+ .2byte EC_WORD_IN
+ .2byte EC_WORD_LEVEL
+ .2byte EC_WORD_ELLIPSIS
.4byte gBattleFrontierTrainerMons_Brooks
@ 262
.4byte TRAINER_CLASS_GENTLEMAN
.string "GREGORY$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word NOT
- ec_word THAT
- ec_word OLD
- ec_word YET
- .2byte -1
-@ win speech
- ec_word WHO
- ec_word SAYS
- ec_word I_AM
- ec_word TOO
- ec_word OLD
- ec_word QUES
-@ loss speech
- ec_word PLEASE
- ec_word I_AM
- ec_word REALLY
- ec_word NOT
- ec_word THAT
- ec_word OLD
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_THAT
+ .2byte EC_WORD_OLD
+ .2byte EC_WORD_YET
+ .2byte -1
+@ win speech
+ .2byte EC_WORD_WHO
+ .2byte EC_WORD_SAYS
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_TOO
+ .2byte EC_WORD_OLD
+ .2byte EC_WORD_QUES
+@ loss speech
+ .2byte EC_WORD_PLEASE
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_REALLY
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_THAT
+ .2byte EC_WORD_OLD
.4byte gBattleFrontierTrainerMons_Gregory
@ 263
.4byte TRAINER_CLASS_GENTLEMAN
.string "REESE$", 8
@ pre-battle speech
- ec_word I_VE
- ec_word A
- ec_word COUPLE
- ec_word THINGS
+ .2byte EC_WORD_I_VE
+ .2byte EC_WORD_A
+ .2byte EC_WORD_COUPLE
+ .2byte EC_WORD_THINGS
.2byte -1
.2byte -1
@ win speech
- ec_word DON_T
- ec_word DIET
- ec_word PLAY
- ec_word SPORTS
- ec_word INSTEAD
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_DIET
+ .2byte EC_WORD_PLAY
+ .2byte EC_WORD_SPORTS
+ .2byte EC_WORD_INSTEAD
.2byte -1
@ loss speech
- ec_word INSTEAD
- ec_word OF
- ec_word TELEVISION
- ec_word GET
- ec_word A
- ec_word BOOK
+ .2byte EC_WORD_INSTEAD
+ .2byte EC_WORD_OF
+ .2byte EC_WORD_TELEVISION
+ .2byte EC_WORD_GET
+ .2byte EC_WORD_A
+ .2byte EC_WORD_BOOK
.4byte gBattleFrontierTrainerMons_Reese
@ 264
.4byte TRAINER_CLASS_TRIATHLETE_3
.string "MASON$", 8
@ pre-battle speech
- ec_word PLEASE
- ec_word DON_T
- ec_word MAKE
- ec_word THIS
- ec_word SCARY
+ .2byte EC_WORD_PLEASE
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_MAKE
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_SCARY
.2byte -1
@ win speech
- ec_word THANK_YOU
- ec_word ELLIPSIS
+ .2byte EC_WORD_THANK_YOU
+ .2byte EC_WORD_ELLIPSIS
.2byte -1
- ec_word I_AM
- ec_word HAPPY
- ec_word NOW
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_HAPPY
+ .2byte EC_WORD_NOW
@ loss speech
- ec_word I_AM
- ec_word DISAPPOINTED
- ec_word ELLIPSIS
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_DISAPPOINTED
+ .2byte EC_WORD_ELLIPSIS
.2byte -1
.2byte -1
.2byte -1
@@ -6894,75 +6894,75 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_TRIATHLETE_3
.string "TOBY$", 8
@ pre-battle speech
- ec_word LISTEN
- ec_word UP
- .2byte -1
- ec_word I
- ec_word ALWAYS
- ec_word WIN
-@ win speech
- ec_word I_AM
- ec_word A
- ec_word GENIUS
- ec_word OR
- ec_word WHAT
- ec_word QUES
-@ loss speech
- ec_word I
- ec_word CAN
- ec_word BEAT
- ec_word YOU
- ec_word AT
- ec_word SMARTNESS
+ .2byte EC_WORD_LISTEN
+ .2byte EC_WORD_UP
+ .2byte -1
+ .2byte EC_WORD_I
+ .2byte EC_WORD_ALWAYS
+ .2byte EC_WORD_WIN
+@ win speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_A
+ .2byte EC_WORD_GENIUS
+ .2byte EC_WORD_OR
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_QUES
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_CAN
+ .2byte EC_WORD_BEAT
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_AT
+ .2byte EC_WORD_SMARTNESS
.4byte gBattleFrontierTrainerMons_Toby
@ 266
.4byte TRAINER_CLASS_TRIATHLETE_4
.string "DOROTHY$", 8
@ pre-battle speech
- ec_word THE
- ec_word SPORTS
- ec_word WORLD
- ec_word SHOULD
- ec_word ACCEPT
- ec_word POKEMON
-@ win speech
- ec_word THANK_YOU
- ec_word EXCL
- ec_word THAT
- ec_word WIN
- ec_word WAS
- ec_word REFRESHING
-@ loss speech
- ec_word THANK_YOU
- ec_word EXCL
- ec_word THAT
- ec_word LOSS
- ec_word WAS
- ec_word REFRESHING
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_SPORTS
+ .2byte EC_WORD_WORLD
+ .2byte EC_WORD_SHOULD
+ .2byte EC_WORD_ACCEPT
+ .2byte EC_WORD_POKEMON
+@ win speech
+ .2byte EC_WORD_THANK_YOU
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_THAT
+ .2byte EC_WORD_WIN
+ .2byte EC_WORD_WAS
+ .2byte EC_WORD_REFRESHING
+@ loss speech
+ .2byte EC_WORD_THANK_YOU
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_THAT
+ .2byte EC_WORD_LOSS
+ .2byte EC_WORD_WAS
+ .2byte EC_WORD_REFRESHING
.4byte gBattleFrontierTrainerMons_Dorothy
@ 267
.4byte TRAINER_CLASS_TRIATHLETE_4
.string "PIPER$", 8
@ pre-battle speech
- ec_word COME_ON
- ec_word YOU
- ec_word NEED
- ec_word A
- ec_word SPEED_BOOST
- ec_word QUES
+ .2byte EC_WORD_COME_ON
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_NEED
+ .2byte EC_WORD_A
+ .2byte EC_WORD_SPEED_BOOST
+ .2byte EC_WORD_QUES
@ win speech
- ec_word YOU
- ec_word NEED
- ec_word TO
- ec_word SHOW
- ec_word MORE
- ec_word GUTS
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_NEED
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_SHOW
+ .2byte EC_WORD_MORE
+ .2byte EC_WORD_GUTS
@ loss speech
- ec_word OH
- ec_word YOU
- ec_word EXCL
+ .2byte EC_WORD_OH
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_EXCL
.2byte -1
.2byte -1
.2byte -1
@@ -6972,51 +6972,51 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_TRIATHLETE_5
.string "FINN$", 8
@ pre-battle speech
- ec_word NOT
- ec_word ANOTHER
- ec_word TRAINER
- ec_word BATTLE
- ec_word ELLIPSIS
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_ANOTHER
+ .2byte EC_WORD_TRAINER
+ .2byte EC_WORD_BATTLE
+ .2byte EC_WORD_ELLIPSIS
.2byte -1
@ win speech
- ec_word WON_T
- ec_word THIS
- ec_word EVER
- ec_word END
- ec_word QUES
+ .2byte EC_WORD_WON_T
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_EVER
+ .2byte EC_WORD_END
+ .2byte EC_WORD_QUES
.2byte -1
@ loss speech
- ec_word I
- ec_word FINALLY
- ec_word GET
- ec_word TO
- ec_move2 REST
- ec_word A_LITTLE
+ .2byte EC_WORD_I
+ .2byte EC_WORD_FINALLY
+ .2byte EC_WORD_GET
+ .2byte EC_WORD_TO
+ .2byte EC_MOVE2(REST)
+ .2byte EC_WORD_A_LITTLE
.4byte gBattleFrontierTrainerMons_Finn
@ 269
.4byte TRAINER_CLASS_TRIATHLETE_5
.string "SAMIR$", 8
@ pre-battle speech
- ec_word I
- ec_move2 DIVE
- ec_word BELOW
- ec_word THE
- ec_move2 SURF
- ec_word EXCL
-@ win speech
- ec_word YAHOO
- ec_word TAKE
- ec_word A
- ec_move2 DIVE
- ec_word YOU
- ec_word EXCL
-@ loss speech
- ec_word I_AM
- ec_word GOING
- ec_word TO
- ec_word SINK
- ec_word ELLIPSIS
+ .2byte EC_WORD_I
+ .2byte EC_MOVE2(DIVE)
+ .2byte EC_WORD_BELOW
+ .2byte EC_WORD_THE
+ .2byte EC_MOVE2(SURF)
+ .2byte EC_WORD_EXCL
+@ win speech
+ .2byte EC_WORD_YAHOO
+ .2byte EC_WORD_TAKE
+ .2byte EC_WORD_A
+ .2byte EC_MOVE2(DIVE)
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_GOING
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_SINK
+ .2byte EC_WORD_ELLIPSIS
.2byte -1
.4byte gBattleFrontierTrainerMons_Samir
@@ -7024,700 +7024,700 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_TRIATHLETE_6
.string "FIONA$", 8
@ pre-battle speech
- ec_word DID
- ec_word YOU
- ec_word LIMBER
- ec_word UP
- ec_word BEFORE
- ec_word QUES
-@ win speech
- ec_word YOU
- ec_word NEED
- ec_word TO
- ec_word BE
- ec_word MORE
- ec_word READY
-@ loss speech
- ec_word BEING
- ec_word LIMBER
- ec_word DIDN_T
- ec_word WORK
- ec_word FOR
- ec_word ME
+ .2byte EC_WORD_DID
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_LIMBER
+ .2byte EC_WORD_UP
+ .2byte EC_WORD_BEFORE
+ .2byte EC_WORD_QUES
+@ win speech
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_NEED
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_BE
+ .2byte EC_WORD_MORE
+ .2byte EC_WORD_READY
+@ loss speech
+ .2byte EC_WORD_BEING
+ .2byte EC_WORD_LIMBER
+ .2byte EC_WORD_DIDN_T
+ .2byte EC_WORD_WORK
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_ME
.4byte gBattleFrontierTrainerMons_Fiona
@ 271
.4byte TRAINER_CLASS_TRIATHLETE_6
.string "GLORIA$", 8
@ pre-battle speech
- ec_word I
- ec_word LIKE
- ec_word TO
- ec_word ATTACK
- ec_word WITH
- ec_word SUCTION_CUPS
-@ win speech
- ec_word GIGGLE
- ec_word ELLIPSIS
- ec_word IT_S
- ec_word OVER
- ec_word FOR
- ec_word YOU
-@ loss speech
- ec_word I
- ec_word DON_T
- ec_word GET
- ec_word HOW
- ec_word SUCTION_CUPS
- ec_word WORK
+ .2byte EC_WORD_I
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_ATTACK
+ .2byte EC_WORD_WITH
+ .2byte EC_WORD_SUCTION_CUPS
+@ win speech
+ .2byte EC_WORD_GIGGLE
+ .2byte EC_WORD_ELLIPSIS
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_OVER
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_YOU
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_GET
+ .2byte EC_WORD_HOW
+ .2byte EC_WORD_SUCTION_CUPS
+ .2byte EC_WORD_WORK
.4byte gBattleFrontierTrainerMons_Gloria
@ 272
.4byte TRAINER_CLASS_TRIATHLETE_1
.string "NICO$", 8
@ pre-battle speech
- ec_word LIKE
- ec_word A
- ec_move1 SONIC_BOOM
- ec_word I_VE_ARRIVED
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_A
+ .2byte EC_MOVE(SONIC_BOOM)
+ .2byte EC_WORD_I_VE_ARRIVED
.2byte -1
.2byte -1
@ win speech
- ec_word SORRY
- ec_word TO
- ec_word MAKE
- ec_word YOU
- ec_word SO
- ec_word DOWNCAST
+ .2byte EC_WORD_SORRY
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_MAKE
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_DOWNCAST
@ loss speech
- ec_word I_AM
- ec_word GOING
- ec_word WITH
- ec_word A
- ec_move2 SUPERSONIC
- ec_word SPEED_BOOST
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_GOING
+ .2byte EC_WORD_WITH
+ .2byte EC_WORD_A
+ .2byte EC_MOVE2(SUPERSONIC)
+ .2byte EC_WORD_SPEED_BOOST
.4byte gBattleFrontierTrainerMons_Nico
@ 273
.4byte TRAINER_CLASS_TRIATHLETE_1
.string "JEREMY$", 8
@ pre-battle speech
- ec_word A
- ec_word POKEMON
- ec_word MASTER
- ec_word THAT_S
- ec_word MY
- ec_word DREAM
-@ win speech
- ec_word MY
- ec_word DREAM
- ec_word ISN_T
- ec_word FAR
- ec_word OFF
- ec_word EXCL
-@ loss speech
- ec_word WHAT
- ec_word I
- ec_word DREAM
- ec_word ISN_T
- ec_word HAPPENING
- ec_word ELLIPSIS
+ .2byte EC_WORD_A
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_MASTER
+ .2byte EC_WORD_THAT_S
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_DREAM
+@ win speech
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_DREAM
+ .2byte EC_WORD_ISN_T
+ .2byte EC_WORD_FAR
+ .2byte EC_WORD_OFF
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_I
+ .2byte EC_WORD_DREAM
+ .2byte EC_WORD_ISN_T
+ .2byte EC_WORD_HAPPENING
+ .2byte EC_WORD_ELLIPSIS
.4byte gBattleFrontierTrainerMons_Jeremy
@ 274
.4byte TRAINER_CLASS_TRIATHLETE_2
.string "CAITLIN$", 8
@ pre-battle speech
- ec_word DON_T
- ec_word YOU
- ec_word THINK
- ec_word I_AM
- ec_word CUTE
- ec_word QUES
-@ win speech
- ec_word THERE
- ec_word IS
- ec_word MORE
- ec_word TO_ME
- ec_word THAN
- ec_word CUTENESS
-@ loss speech
- ec_word MY
- ec_word CUTE_CHARM
- ec_word DOESN_T
- ec_move2 ATTRACT
- ec_word YOU
- ec_word QUES
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_THINK
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_CUTE
+ .2byte EC_WORD_QUES
+@ win speech
+ .2byte EC_WORD_THERE
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_MORE
+ .2byte EC_WORD_TO_ME
+ .2byte EC_WORD_THAN
+ .2byte EC_WORD_CUTENESS
+@ loss speech
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_CUTE_CHARM
+ .2byte EC_WORD_DOESN_T
+ .2byte EC_MOVE2(ATTRACT)
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_QUES
.4byte gBattleFrontierTrainerMons_Caitlin
@ 275
.4byte TRAINER_CLASS_TRIATHLETE_2
.string "REENA$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word ALWAYS
- ec_word HAPPY
- ec_word HAPPY
- ec_word HAPPY
- ec_word EXCL
-@ win speech
- ec_word OH
- ec_word YAY
- ec_word EXCL
- ec_word YAHOO
- ec_word FOR
- ec_word ME
-@ loss speech
- ec_word YAHOO
- ec_word EXCL
- ec_word I_AM
- ec_word HAPPY
- ec_word FOR
- ec_word YOU
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_ALWAYS
+ .2byte EC_WORD_HAPPY
+ .2byte EC_WORD_HAPPY
+ .2byte EC_WORD_HAPPY
+ .2byte EC_WORD_EXCL
+@ win speech
+ .2byte EC_WORD_OH
+ .2byte EC_WORD_YAY
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_YAHOO
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_ME
+@ loss speech
+ .2byte EC_WORD_YAHOO
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_HAPPY
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_YOU
.4byte gBattleFrontierTrainerMons_Reena
@ 276
.4byte TRAINER_CLASS_BUG_MANIAC
.string "AVERY$", 8
@ pre-battle speech
- ec_word I_VE
- ec_word GOT
- ec_word A_LOT
- ec_word OF
- ec_word BUG
- ec_word POKEMON
-@ win speech
- ec_word MY
- ec_word BUG
- ec_word POKEMON
- ec_word ARE
- ec_word ALL
- ec_word UNBELIEVABLE
-@ loss speech
- ec_word MY
- ec_word BUG
- ec_word POKEMON
- ec_word ARE
- ec_word ALL
- ec_word UPSIDE_DOWN
+ .2byte EC_WORD_I_VE
+ .2byte EC_WORD_GOT
+ .2byte EC_WORD_A_LOT
+ .2byte EC_WORD_OF
+ .2byte EC_WORD_BUG
+ .2byte EC_WORD_POKEMON
+@ win speech
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_BUG
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_ARE
+ .2byte EC_WORD_ALL
+ .2byte EC_WORD_UNBELIEVABLE
+@ loss speech
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_BUG
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_ARE
+ .2byte EC_WORD_ALL
+ .2byte EC_WORD_UPSIDE_DOWN
.4byte gBattleFrontierTrainerMons_Avery
@ 277
.4byte TRAINER_CLASS_BUG_MANIAC
.string "LIAM$", 8
@ pre-battle speech
- ec_word WE
- ec_word REALLY
- ec_word DISLIKE
- ec_word FIRE
- ec_word AND
- ec_word FLYING
-@ win speech
- ec_word BUG
- ec_word POKEMON
- ec_word AREN_T
- ec_word BAD
- ec_word HEY_QUES
- .2byte -1
-@ loss speech
- ec_word YOU
- ec_word KNOW
- ec_word WHAT
- ec_word WE
- ec_word DISLIKE
- ec_word HEY_QUES
+ .2byte EC_WORD_WE
+ .2byte EC_WORD_REALLY
+ .2byte EC_WORD_DISLIKE
+ .2byte EC_WORD_FIRE
+ .2byte EC_WORD_AND
+ .2byte EC_WORD_FLYING
+@ win speech
+ .2byte EC_WORD_BUG
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_AREN_T
+ .2byte EC_WORD_BAD
+ .2byte EC_WORD_HEY_QUES
+ .2byte -1
+@ loss speech
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_KNOW
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_WE
+ .2byte EC_WORD_DISLIKE
+ .2byte EC_WORD_HEY_QUES
.4byte gBattleFrontierTrainerMons_Liam
@ 278
.4byte TRAINER_CLASS_FISHERMAN
.string "THEO$", 8
@ pre-battle speech
- ec_word FISHING
- ec_word IS
- ec_word MY
- ec_word CHOICE
- ec_word IN
- ec_word LIFE
-@ win speech
- ec_word WATER
- ec_word POKEMON
- ec_move2 ATTRACT
- ec_word ME
- ec_word WITHOUT
- ec_word END
-@ loss speech
- ec_word DON_T
- ec_word COUNT_ON
- ec_word THAT
- ec_word HAPPENING
- ec_word ANOTHER
- ec_word TIME
+ .2byte EC_WORD_FISHING
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_CHOICE
+ .2byte EC_WORD_IN
+ .2byte EC_WORD_LIFE
+@ win speech
+ .2byte EC_WORD_WATER
+ .2byte EC_WORD_POKEMON
+ .2byte EC_MOVE2(ATTRACT)
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_WITHOUT
+ .2byte EC_WORD_END
+@ loss speech
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_COUNT_ON
+ .2byte EC_WORD_THAT
+ .2byte EC_WORD_HAPPENING
+ .2byte EC_WORD_ANOTHER
+ .2byte EC_WORD_TIME
.4byte gBattleFrontierTrainerMons_Theo
@ 279
.4byte TRAINER_CLASS_FISHERMAN
.string "BAILEY$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word AN
- ec_word ADULT
- ec_word I
- ec_word BATTLE
- ec_word EASY
-@ win speech
- ec_word I_AM
- ec_word AN
- ec_word ADULT
- ec_word I
- ec_move2 SWALLOW
- ec_word JOY
-@ loss speech
- ec_word I_AM
- ec_word AN
- ec_word ADULT
- ec_word I
- ec_move2 SWALLOW
- ec_move2 FRUSTRATION
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_AN
+ .2byte EC_WORD_ADULT
+ .2byte EC_WORD_I
+ .2byte EC_WORD_BATTLE
+ .2byte EC_WORD_EASY
+@ win speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_AN
+ .2byte EC_WORD_ADULT
+ .2byte EC_WORD_I
+ .2byte EC_MOVE2(SWALLOW)
+ .2byte EC_WORD_JOY
+@ loss speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_AN
+ .2byte EC_WORD_ADULT
+ .2byte EC_WORD_I
+ .2byte EC_MOVE2(SWALLOW)
+ .2byte EC_MOVE2(FRUSTRATION)
.4byte gBattleFrontierTrainerMons_Bailey
@ 280
.4byte TRAINER_CLASS_RUIN_MANIAC
.string "HUGO$", 8
@ pre-battle speech
- ec_word I
- ec_word TRY
- ec_word THE
- ec_word BEST
- ec_word I
- ec_word CAN
-@ win speech
- ec_word I
- ec_word CAN_WIN
- ec_word IF
- ec_word I
- ec_word TRY
- ec_word ENOUGH
-@ loss speech
- ec_word I
- ec_word DID
- ec_word TRY
- ec_word DIDN_T
- ec_word I
- ec_word QUES
+ .2byte EC_WORD_I
+ .2byte EC_WORD_TRY
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_BEST
+ .2byte EC_WORD_I
+ .2byte EC_WORD_CAN
+@ win speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_CAN_WIN
+ .2byte EC_WORD_IF
+ .2byte EC_WORD_I
+ .2byte EC_WORD_TRY
+ .2byte EC_WORD_ENOUGH
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_DID
+ .2byte EC_WORD_TRY
+ .2byte EC_WORD_DIDN_T
+ .2byte EC_WORD_I
+ .2byte EC_WORD_QUES
.4byte gBattleFrontierTrainerMons_Hugo
@ 281
.4byte TRAINER_CLASS_RUIN_MANIAC
.string "BRYCE$", 8
@ pre-battle speech
- ec_word I_WAS
- ec_word ON
- ec_word VACATION
- ec_word UNTIL
- ec_word ONLY
- ec_word YESTERDAY
-@ win speech
- ec_word I
- ec_word HAVEN_T
- ec_word LOST
- ec_word MY
- ec_word SKILL
- ec_word YET
-@ loss speech
- ec_word THAT_S
- ec_word IT
- ec_word ELLIPSIS
- ec_word I
- ec_word NEED
- ec_word SLEEP
+ .2byte EC_WORD_I_WAS
+ .2byte EC_WORD_ON
+ .2byte EC_WORD_VACATION
+ .2byte EC_WORD_UNTIL
+ .2byte EC_WORD_ONLY
+ .2byte EC_WORD_YESTERDAY
+@ win speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_HAVEN_T
+ .2byte EC_WORD_LOST
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_SKILL
+ .2byte EC_WORD_YET
+@ loss speech
+ .2byte EC_WORD_THAT_S
+ .2byte EC_WORD_IT
+ .2byte EC_WORD_ELLIPSIS
+ .2byte EC_WORD_I
+ .2byte EC_WORD_NEED
+ .2byte EC_WORD_SLEEP
.4byte gBattleFrontierTrainerMons_Bryce
@ 282
.4byte TRAINER_CLASS_COLLECTOR
.string "GIDEON$", 8
@ pre-battle speech
- ec_word WHAT_S_UP_QUES
- ec_word YOU
- ec_word THINK
- ec_word I_AM
- ec_word SCARY
- ec_word QUES
-@ win speech
- ec_word I_AM
- ec_word COOL
- ec_word BUT
- ec_word NOT
- ec_word SCARY
- ec_word EXCL
-@ loss speech
- ec_word LOOK
- ec_word AT
- ec_word MY
- ec_word FABULOUS
- ec_word FASHION
- ec_word SENSE
+ .2byte EC_WORD_WHAT_S_UP_QUES
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_THINK
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_SCARY
+ .2byte EC_WORD_QUES
+@ win speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_COOL
+ .2byte EC_WORD_BUT
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_SCARY
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_LOOK
+ .2byte EC_WORD_AT
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_FABULOUS
+ .2byte EC_WORD_FASHION
+ .2byte EC_WORD_SENSE
.4byte gBattleFrontierTrainerMons_Gideon
@ 283
.4byte TRAINER_CLASS_COLLECTOR
.string "TRISTON$", 8
@ pre-battle speech
- ec_word I
- ec_word WOULD
- ec_word RATHER
- ec_word LOOK
- ec_word AT
- ec_word POKEMON
-@ win speech
- ec_word HUH_QUES
- ec_word YOU
- ec_word MEAN
- ec_word I
- ec_word WON
- ec_word QUES_EXCL
-@ loss speech
- ec_word SEE
- ec_word QUES
- .2byte -1
- ec_word I
- ec_word ALWAYS
- ec_word LOSE
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WOULD
+ .2byte EC_WORD_RATHER
+ .2byte EC_WORD_LOOK
+ .2byte EC_WORD_AT
+ .2byte EC_WORD_POKEMON
+@ win speech
+ .2byte EC_WORD_HUH_QUES
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_MEAN
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WON
+ .2byte EC_WORD_QUES_EXCL
+@ loss speech
+ .2byte EC_WORD_SEE
+ .2byte EC_WORD_QUES
+ .2byte -1
+ .2byte EC_WORD_I
+ .2byte EC_WORD_ALWAYS
+ .2byte EC_WORD_LOSE
.4byte gBattleFrontierTrainerMons_Triston
@ 284
.4byte TRAINER_CLASS_GUITARIST
.string "CHARLES$", 8
@ pre-battle speech
- ec_word IT_S
- ec_word HOPELESS
- ec_word TO
- ec_move2 STRUGGLE
- ec_word WITH
- ec_word ME
-@ win speech
- ec_move1 SUBMISSION
- ec_word WAS
- ec_word YOUR
- ec_word ONLY
- ec_word CHOICE
- .2byte -1
-@ loss speech
- ec_word I_AM
- ec_word GOING
- ec_word DOWN
- ec_word DOWN
- ec_word DOWN
- ec_word EXCL
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_HOPELESS
+ .2byte EC_WORD_TO
+ .2byte EC_MOVE2(STRUGGLE)
+ .2byte EC_WORD_WITH
+ .2byte EC_WORD_ME
+@ win speech
+ .2byte EC_MOVE(SUBMISSION)
+ .2byte EC_WORD_WAS
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_ONLY
+ .2byte EC_WORD_CHOICE
+ .2byte -1
+@ loss speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_GOING
+ .2byte EC_WORD_DOWN
+ .2byte EC_WORD_DOWN
+ .2byte EC_WORD_DOWN
+ .2byte EC_WORD_EXCL
.4byte gBattleFrontierTrainerMons_Charles
@ 285
.4byte TRAINER_CLASS_GUITARIST
.string "RAYMOND$", 8
@ pre-battle speech
- ec_word WANT
- ec_word TO
- ec_word HEAR
- ec_word MY
- ec_word SONG
- ec_word QUES
-@ win speech
- ec_word SATISFIED
- ec_word THAT_S
- ec_word WHAT
- ec_word I_AM
- ec_word EXCL
- .2byte -1
-@ loss speech
- ec_word SATISFIED
- ec_word IS
- ec_word WHAT
- ec_word I
- ec_word CAN_T
- ec_word BE
+ .2byte EC_WORD_WANT
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_HEAR
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_SONG
+ .2byte EC_WORD_QUES
+@ win speech
+ .2byte EC_WORD_SATISFIED
+ .2byte EC_WORD_THAT_S
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_EXCL
+ .2byte -1
+@ loss speech
+ .2byte EC_WORD_SATISFIED
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_I
+ .2byte EC_WORD_CAN_T
+ .2byte EC_WORD_BE
.4byte gBattleFrontierTrainerMons_Raymond
@ 286
.4byte TRAINER_CLASS_BIRD_KEEPER
.string "DIRK$", 8
@ pre-battle speech
- ec_word FLYING
- ec_word POKEMON
- ec_word ARE
- ec_word ABOVE
- ec_word THE
- ec_move2 REST
-@ win speech
- ec_word YOU
- ec_word CAN_T_WIN
- ec_word EXCL
- ec_word FLYING
- ec_word POKEMON
- ec_word RULE
-@ loss speech
- ec_word AREN_T
- ec_word THERE
- ec_word MORE
- ec_word FLYING
- ec_word POKEMON
- ec_word QUES
+ .2byte EC_WORD_FLYING
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_ARE
+ .2byte EC_WORD_ABOVE
+ .2byte EC_WORD_THE
+ .2byte EC_MOVE2(REST)
+@ win speech
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_CAN_T_WIN
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_FLYING
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_RULE
+@ loss speech
+ .2byte EC_WORD_AREN_T
+ .2byte EC_WORD_THERE
+ .2byte EC_WORD_MORE
+ .2byte EC_WORD_FLYING
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_QUES
.4byte gBattleFrontierTrainerMons_Dirk
@ 287
.4byte TRAINER_CLASS_BIRD_KEEPER
.string "HAROLD$", 8
@ pre-battle speech
- ec_word MY
- ec_word POKEMON
- ec_word APPEAL
- ec_word TO
- ec_word YOU
- ec_word QUES
-@ win speech
- ec_word YOU
- ec_word DO
- ec_word LIKE
- ec_word MY
- ec_word POKEMON
- ec_word QUES
-@ loss speech
- ec_word SO
- ec_word YOU
- ec_word DISLIKE
- ec_word MY
- ec_word POKEMON
- ec_word QUES
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_APPEAL
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_QUES
+@ win speech
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_DO
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_QUES
+@ loss speech
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_DISLIKE
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_QUES
.4byte gBattleFrontierTrainerMons_Harold
@ 288
.4byte TRAINER_CLASS_SAILOR
.string "OMAR$", 8
@ pre-battle speech
- ec_word LET_ME_WIN
- ec_word IN
- ec_move1 RETURN
- ec_word FOR
- ec_word A
- ec_move2 PRESENT
-@ win speech
- ec_word HERE
- ec_word YOU
- ec_word ARE
- ec_word SOME
- ec_move2 TOXIC
- ec_word SWEETS
-@ loss speech
- ec_word YOUR
- ec_move2 PRESENT
- ec_word QUES
- ec_word WHAT
- ec_word FOR
- ec_word QUES_EXCL
+ .2byte EC_WORD_LET_ME_WIN
+ .2byte EC_WORD_IN
+ .2byte EC_MOVE(RETURN)
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_A
+ .2byte EC_MOVE2(PRESENT)
+@ win speech
+ .2byte EC_WORD_HERE
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_ARE
+ .2byte EC_WORD_SOME
+ .2byte EC_MOVE2(TOXIC)
+ .2byte EC_WORD_SWEETS
+@ loss speech
+ .2byte EC_WORD_YOUR
+ .2byte EC_MOVE2(PRESENT)
+ .2byte EC_WORD_QUES
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_QUES_EXCL
.4byte gBattleFrontierTrainerMons_Omar
@ 289
.4byte TRAINER_CLASS_SAILOR
.string "PETER$", 8
@ pre-battle speech
- ec_word I
- ec_word BRAG
- ec_word ABOUT
- ec_word MY
- ec_word HAPPINESS
- ec_word OK_QUES
-@ win speech
- ec_word YOU
- ec_word HAVE
- ec_word TO
- ec_word LISTEN
- ec_word TO_ME
- ec_word BRAG
-@ loss speech
- ec_word I_AM
- ec_word DISAPPOINTED
- ec_word YOU
- ec_word WON_T
- ec_word LISTEN
- ec_word TO_ME
+ .2byte EC_WORD_I
+ .2byte EC_WORD_BRAG
+ .2byte EC_WORD_ABOUT
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_HAPPINESS
+ .2byte EC_WORD_OK_QUES
+@ win speech
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_LISTEN
+ .2byte EC_WORD_TO_ME
+ .2byte EC_WORD_BRAG
+@ loss speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_DISAPPOINTED
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_WON_T
+ .2byte EC_WORD_LISTEN
+ .2byte EC_WORD_TO_ME
.4byte gBattleFrontierTrainerMons_Peter
@ 290
.4byte TRAINER_CLASS_HIKER
.string "DEV$", 8
@ pre-battle speech
- ec_word COME_ON
- ec_word LET_S
- ec_word GET
- ec_word A
- ec_word MOVE
- ec_word ON
-@ win speech
- ec_word I
- ec_word GET
- ec_word TO
- ec_word NAP
- ec_word AFTER
- ec_word THAT
-@ loss speech
- ec_word I
- ec_word NEED
- ec_word TO
- ec_word NAP
- ec_word AFTER
- ec_word THAT
+ .2byte EC_WORD_COME_ON
+ .2byte EC_WORD_LET_S
+ .2byte EC_WORD_GET
+ .2byte EC_WORD_A
+ .2byte EC_WORD_MOVE
+ .2byte EC_WORD_ON
+@ win speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_GET
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_NAP
+ .2byte EC_WORD_AFTER
+ .2byte EC_WORD_THAT
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_NEED
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_NAP
+ .2byte EC_WORD_AFTER
+ .2byte EC_WORD_THAT
.4byte gBattleFrontierTrainerMons_Dev
@ 291
.4byte TRAINER_CLASS_HIKER
.string "COREY$", 8
@ pre-battle speech
- ec_word LET_S
- ec_word TEACH
- ec_word YOU
- ec_word HOW
- ec_word TOUGH
- ec_word I_AM
-@ win speech
- ec_word LOOK
- ec_word AT
- ec_word ME
- ec_word MAKE
- ec_word A
- ec_move1 BRICK_BREAK
-@ loss speech
- ec_word MY
- ec_move2 FRUSTRATION
- ec_word IS
- ec_word CLOSE
- ec_word TO
- ec_move2 ERUPTION
+ .2byte EC_WORD_LET_S
+ .2byte EC_WORD_TEACH
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_HOW
+ .2byte EC_WORD_TOUGH
+ .2byte EC_WORD_I_AM
+@ win speech
+ .2byte EC_WORD_LOOK
+ .2byte EC_WORD_AT
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_MAKE
+ .2byte EC_WORD_A
+ .2byte EC_MOVE(BRICK_BREAK)
+@ loss speech
+ .2byte EC_WORD_MY
+ .2byte EC_MOVE2(FRUSTRATION)
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_CLOSE
+ .2byte EC_WORD_TO
+ .2byte EC_MOVE2(ERUPTION)
.4byte gBattleFrontierTrainerMons_Corey
@ 292
.4byte TRAINER_CLASS_KINDLER
.string "ANDRE$", 8
@ pre-battle speech
- ec_word NOW
- ec_word THIS
- ec_word IS
- ec_word A
- ec_word PERFECT
- ec_word FLAME_BODY
-@ win speech
- ec_word LOOK
- ec_word AT
- ec_word MY
- ec_word FIERY
- ec_word DANCE
- ec_word EXCL
-@ loss speech
- ec_word YOU
- ec_word WANT
- ec_word AN
- ec_move2 EXPLOSION
- ec_word HERE
- ec_word QUES
+ .2byte EC_WORD_NOW
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_A
+ .2byte EC_WORD_PERFECT
+ .2byte EC_WORD_FLAME_BODY
+@ win speech
+ .2byte EC_WORD_LOOK
+ .2byte EC_WORD_AT
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_FIERY
+ .2byte EC_WORD_DANCE
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_WANT
+ .2byte EC_WORD_AN
+ .2byte EC_MOVE2(EXPLOSION)
+ .2byte EC_WORD_HERE
+ .2byte EC_WORD_QUES
.4byte gBattleFrontierTrainerMons_Andre
@ 293
.4byte TRAINER_CLASS_KINDLER
.string "FERRIS$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word NO_1
- ec_word IN
- ec_word THE
- ec_word OLD
- ec_word CLASS
-@ win speech
- ec_word NO_1
- ec_word THAT_S
- ec_word WHAT
- ec_word I_AM
- ec_word EXCL
- .2byte -1
-@ loss speech
- ec_word I_AM
- ec_word NOT
- ec_word NO_1
- ec_word ANY
- ec_word MORE
- ec_word ELLIPSIS
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_NO_1
+ .2byte EC_WORD_IN
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_OLD
+ .2byte EC_WORD_CLASS
+@ win speech
+ .2byte EC_WORD_NO_1
+ .2byte EC_WORD_THAT_S
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_EXCL
+ .2byte -1
+@ loss speech
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_NO_1
+ .2byte EC_WORD_ANY
+ .2byte EC_WORD_MORE
+ .2byte EC_WORD_ELLIPSIS
.4byte gBattleFrontierTrainerMons_Ferris
@ 294
.4byte TRAINER_CLASS_PARASOL_LADY
.string "ALIVIA$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word FEELING
- ec_word GIDDY
- ec_word SO
- ec_word SHOULD
- ec_word YOU
-@ win speech
- ec_word IT
- ec_word WAS
- ec_word ALL
- ec_word TOGETHER
- ec_word TOO
- ec_word EASY
-@ loss speech
- ec_word I
- ec_word WILL
- ec_word GIDDY
- ec_word UP
- ec_word AND
- ec_word AWAY
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_FEELING
+ .2byte EC_WORD_GIDDY
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_SHOULD
+ .2byte EC_WORD_YOU
+@ win speech
+ .2byte EC_WORD_IT
+ .2byte EC_WORD_WAS
+ .2byte EC_WORD_ALL
+ .2byte EC_WORD_TOGETHER
+ .2byte EC_WORD_TOO
+ .2byte EC_WORD_EASY
+@ loss speech
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_GIDDY
+ .2byte EC_WORD_UP
+ .2byte EC_WORD_AND
+ .2byte EC_WORD_AWAY
.4byte gBattleFrontierTrainerMons_Alivia
@ 295
.4byte TRAINER_CLASS_PARASOL_LADY
.string "PAIGE$", 8
@ pre-battle speech
- ec_word LET_S
- ec_word ENJOY
- ec_word OUR
- ec_word BATTLE
- ec_word TOGETHER
+ .2byte EC_WORD_LET_S
+ .2byte EC_WORD_ENJOY
+ .2byte EC_WORD_OUR
+ .2byte EC_WORD_BATTLE
+ .2byte EC_WORD_TOGETHER
.2byte -1
@ win speech
- ec_word THAT_S_IT_EXCL
+ .2byte EC_WORD_THAT_S_IT_EXCL
.2byte -1
.2byte -1
- ec_word THANK_YOU
- ec_word VERY
- ec_word MUCH
+ .2byte EC_WORD_THANK_YOU
+ .2byte EC_WORD_VERY
+ .2byte EC_WORD_MUCH
@ loss speech
- ec_word THAT_S_IT_EXCL
+ .2byte EC_WORD_THAT_S_IT_EXCL
.2byte -1
.2byte -1
- ec_word DO
- ec_word GO
- ec_word ON
+ .2byte EC_WORD_DO
+ .2byte EC_WORD_GO
+ .2byte EC_WORD_ON
.4byte gBattleFrontierTrainerMons_Paige
@ 296
.4byte TRAINER_CLASS_BEAUTY
.string "ANYA$", 8
@ pre-battle speech
- ec_word I
- ec_word DISLIKE
- ec_word OH
- ec_word SO
- ec_word PRETTY
- ec_word FASHION
+ .2byte EC_WORD_I
+ .2byte EC_WORD_DISLIKE
+ .2byte EC_WORD_OH
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_PRETTY
+ .2byte EC_WORD_FASHION
@ win speech
- ec_word FASHION
- ec_word SHOULD
- ec_word MATCH
- ec_word THE
- ec_word PERSON
+ .2byte EC_WORD_FASHION
+ .2byte EC_WORD_SHOULD
+ .2byte EC_WORD_MATCH
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_PERSON
.2byte -1
@ loss speech
- ec_word PRETTY
- ec_word COULD
- ec_word BE
- ec_word GOOD
+ .2byte EC_WORD_PRETTY
+ .2byte EC_WORD_COULD
+ .2byte EC_WORD_BE
+ .2byte EC_WORD_GOOD
.2byte -1
.2byte -1
.4byte gBattleFrontierTrainerMons_Anya
@@ -7726,51 +7726,51 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_BEAUTY
.string "DAWN$", 8
@ pre-battle speech
- ec_word I
- ec_word GO
- ec_word ALL
- ec_word OUT
- ec_word EXCL
+ .2byte EC_WORD_I
+ .2byte EC_WORD_GO
+ .2byte EC_WORD_ALL
+ .2byte EC_WORD_OUT
+ .2byte EC_WORD_EXCL
.2byte -1
@ win speech
- ec_word DON_T
- ec_word BE
- ec_word A
- ec_word BABY
- ec_word EXCL
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_BE
+ .2byte EC_WORD_A
+ .2byte EC_WORD_BABY
+ .2byte EC_WORD_EXCL
.2byte -1
@ loss speech
- ec_word YOU
- ec_word WON
- ec_word EXCL
- ec_word MOVE
- ec_word ON
- ec_word EXCL
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_WON
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_MOVE
+ .2byte EC_WORD_ON
+ .2byte EC_WORD_EXCL
.4byte gBattleFrontierTrainerMons_Dawn
@ 298
.4byte TRAINER_CLASS_AROMA_LADY
.string "ABBY$", 8
@ pre-battle speech
- ec_word I
- ec_word LIKE
- ec_word A
- ec_word TRAINER
- ec_word THAT_S
- ec_word REFRESHING
+ .2byte EC_WORD_I
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_A
+ .2byte EC_WORD_TRAINER
+ .2byte EC_WORD_THAT_S
+ .2byte EC_WORD_REFRESHING
@ win speech
- ec_word VICTORY
- ec_word HAS
- ec_word A
- ec_move1 SWEET_SCENT
- ec_word EXCL
+ .2byte EC_WORD_VICTORY
+ .2byte EC_WORD_HAS
+ .2byte EC_WORD_A
+ .2byte EC_MOVE(SWEET_SCENT)
+ .2byte EC_WORD_EXCL
.2byte -1
@ loss speech
- ec_word WHAT
- ec_word AN
- ec_word AWFUL
- ec_word STENCH
- ec_word EXCL
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_AN
+ .2byte EC_WORD_AWFUL
+ .2byte EC_WORD_STENCH
+ .2byte EC_WORD_EXCL
.2byte -1
.4byte gBattleFrontierTrainerMons_Abby
@@ -7778,24 +7778,24 @@ gBattleFrontierTrainers:: @ 85D5ACC
.4byte TRAINER_CLASS_AROMA_LADY
.string "GRETEL$", 8
@ pre-battle speech
- ec_word I
- ec_word CAUSE
- ec_move1 OUTRAGE
- ec_word AS
- ec_word A
- ec_word TRAINER
-@ win speech
- ec_word IT_S
- ec_word ONLY
- ec_word NATURAL
- ec_word SEE_YA
- ec_word BYE_BYE
- ec_word EXCL
-@ loss speech
- ec_word IT_S
- ec_word HARD
- ec_word TO
- ec_word BELIEVE
- ec_word BUT
- ec_word CONGRATS
+ .2byte EC_WORD_I
+ .2byte EC_WORD_CAUSE
+ .2byte EC_MOVE(OUTRAGE)
+ .2byte EC_WORD_AS
+ .2byte EC_WORD_A
+ .2byte EC_WORD_TRAINER
+@ win speech
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_ONLY
+ .2byte EC_WORD_NATURAL
+ .2byte EC_WORD_SEE_YA
+ .2byte EC_WORD_BYE_BYE
+ .2byte EC_WORD_EXCL
+@ loss speech
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_HARD
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_BELIEVE
+ .2byte EC_WORD_BUT
+ .2byte EC_WORD_CONGRATS
.4byte gBattleFrontierTrainerMons_Gretel
diff --git a/data/battle_frontier/fallarbor_battle_tent_trainers.inc b/data/battle_frontier/fallarbor_battle_tent_trainers.inc
index 049cca1ad..2574b7d86 100644
--- a/data/battle_frontier/fallarbor_battle_tent_trainers.inc
+++ b/data/battle_frontier/fallarbor_battle_tent_trainers.inc
@@ -4,103 +4,103 @@ gFallarborBattleTentTrainers:: @ 85DF084
.4byte TRAINER_CLASS_AROMA_LADY
.string "AMBER$", 8
@ pre-battle speech
- ec_word I
- ec_word HAVE
- ec_word TO
- ec_word DIET
- ec_word EVERY
- ec_word DAY
+ .2byte EC_WORD_I
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_DIET
+ .2byte EC_WORD_EVERY
+ .2byte EC_WORD_DAY
@ win speech
- ec_word A
- ec_move1 NIGHTMARE
- ec_word OF
- ec_word SWEETS
- ec_word SHOCKED
- ec_word ME
+ .2byte EC_WORD_A
+ .2byte EC_MOVE(NIGHTMARE)
+ .2byte EC_WORD_OF
+ .2byte EC_WORD_SWEETS
+ .2byte EC_WORD_SHOCKED
+ .2byte EC_WORD_ME
@ loss speech
- ec_word IF
- ec_word YOU
- ec_word GIVE_UP
- ec_word YOU
- ec_word WILL
- ec_word LOSE
+ .2byte EC_WORD_IF
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_GIVE_UP
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_LOSE
.4byte gFallarborBattleTentTrainerMons_Amber
@ 1
.4byte TRAINER_CLASS_RUIN_MANIAC
.string "JAVIER$", 8
@ pre-battle speech
- ec_word I
- ec_word NEVER
- ec_word EVER
- ec_word HAVE
- ec_word ENOUGH
- ec_word MONEY
+ .2byte EC_WORD_I
+ .2byte EC_WORD_NEVER
+ .2byte EC_WORD_EVER
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_ENOUGH
+ .2byte EC_WORD_MONEY
@ win speech
- ec_word I
- ec_word WON
- ec_word BUT
- ec_word I
- ec_word NEED
- ec_word MONEY
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WON
+ .2byte EC_WORD_BUT
+ .2byte EC_WORD_I
+ .2byte EC_WORD_NEED
+ .2byte EC_WORD_MONEY
@ loss speech
- ec_word I
- ec_word NEED
- ec_word MONEY
- ec_word FOR
- ec_word A
- ec_word BIKE
+ .2byte EC_WORD_I
+ .2byte EC_WORD_NEED
+ .2byte EC_WORD_MONEY
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_A
+ .2byte EC_WORD_BIKE
.4byte gFallarborBattleTentTrainerMons_Javier
@ 2
.4byte TRAINER_CLASS_TUBER_1
.string "NATALIE$", 8
@ pre-battle speech
- ec_word THE
- ec_word WAY
- ec_word I
- ec_word BATTLE
- ec_word IS
- ec_word WEIRD
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_WAY
+ .2byte EC_WORD_I
+ .2byte EC_WORD_BATTLE
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_WEIRD
@ win speech
- ec_word YOU_RE
- ec_word MUCH
- ec_word TOO_WEAK
- ec_word FOR
- ec_word THIS
- ec_word PLACE
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_MUCH
+ .2byte EC_WORD_TOO_WEAK
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_PLACE
@ loss speech
- ec_word GIVE_ME
- ec_word AN
- ec_word EASY
- ec_word MATCH
- ec_word NEXT
- ec_word TIME
+ .2byte EC_WORD_GIVE_ME
+ .2byte EC_WORD_AN
+ .2byte EC_WORD_EASY
+ .2byte EC_WORD_MATCH
+ .2byte EC_WORD_NEXT
+ .2byte EC_WORD_TIME
.4byte gFallarborBattleTentTrainerMons_Natalie
@ 3
.4byte TRAINER_CLASS_TUBER_2
.string "TREVE$", 8
@ pre-battle speech
- ec_word LOOK
- ec_word AT
- ec_word MY
- ec_move2 METRONOME
- ec_word AND
- ec_word SLEEP
+ .2byte EC_WORD_LOOK
+ .2byte EC_WORD_AT
+ .2byte EC_WORD_MY
+ .2byte EC_MOVE2(METRONOME)
+ .2byte EC_WORD_AND
+ .2byte EC_WORD_SLEEP
@ win speech
- ec_word YEAH
- ec_word EXCL
- ec_move1 HYPNOSIS
- ec_word IS
- ec_word TOTALLY
- ec_word GREAT
+ .2byte EC_WORD_YEAH
+ .2byte EC_WORD_EXCL
+ .2byte EC_MOVE(HYPNOSIS)
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_TOTALLY
+ .2byte EC_WORD_GREAT
@ loss speech
- ec_word MY
- ec_move1 HYPNOSIS
- ec_word DIDN_T
- ec_word WORK
- ec_word ELLIPSIS
+ .2byte EC_WORD_MY
+ .2byte EC_MOVE(HYPNOSIS)
+ .2byte EC_WORD_DIDN_T
+ .2byte EC_WORD_WORK
+ .2byte EC_WORD_ELLIPSIS
.2byte -1
.4byte gFallarborBattleTentTrainerMons_Treve
@@ -108,77 +108,77 @@ gFallarborBattleTentTrainers:: @ 85DF084
.4byte TRAINER_CLASS_LADY
.string "ARIANNA$", 8
@ pre-battle speech
- ec_word IF_I_WIN
- ec_word GIVE_ME
- ec_word POKEMON
- ec_word FOR
- ec_word MY
- ec_word COLLECTION
+ .2byte EC_WORD_IF_I_WIN
+ .2byte EC_WORD_GIVE_ME
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_COLLECTION
@ win speech
- ec_word YOUR
- ec_word POKEMON
- ec_word ARE
- ec_word TOO_WEAK
- ec_word TO
- ec_word COLLECT
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_ARE
+ .2byte EC_WORD_TOO_WEAK
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_COLLECT
@ loss speech
- ec_word YOUR
- ec_word POKEMON
- ec_word ARE
- ec_word SOMETHING
- ec_word ELSE
- ec_word ELLIPSIS
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_ARE
+ .2byte EC_WORD_SOMETHING
+ .2byte EC_WORD_ELSE
+ .2byte EC_WORD_ELLIPSIS
.4byte gFallarborBattleTentTrainerMons_Arianna
@ 5
.4byte TRAINER_CLASS_BEAUTY
.string "JADYN$", 8
@ pre-battle speech
- ec_word MY
- ec_word NAME
- ec_word IS
- ec_word REALLY
- ec_word A
- ec_word MYSTERY
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_NAME
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_REALLY
+ .2byte EC_WORD_A
+ .2byte EC_WORD_MYSTERY
@ win speech
- ec_word MY
- ec_word NAME
- ec_word GOES
- ec_word ON
- ec_word A
- ec_word MYSTERY
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_NAME
+ .2byte EC_WORD_GOES
+ .2byte EC_WORD_ON
+ .2byte EC_WORD_A
+ .2byte EC_WORD_MYSTERY
@ loss speech
- ec_word MY
- ec_word NAME
- ec_word QUES
- ec_word I_AM
- ec_word YOUR
- ec_word MOTHER
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_NAME
+ .2byte EC_WORD_QUES
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_MOTHER
.4byte gFallarborBattleTentTrainerMons_Jadyn
@ 6
.4byte TRAINER_CLASS_RICH_BOY
.string "GERARDO$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word THE
- ec_word BEST
- ec_word HERO
- ec_word EVER
- ec_word EXCL
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_BEST
+ .2byte EC_WORD_HERO
+ .2byte EC_WORD_EVER
+ .2byte EC_WORD_EXCL
@ win speech
- ec_word SEE
- ec_word WHAT
- ec_word I
- ec_word MEAN
- ec_word QUES
+ .2byte EC_WORD_SEE
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_I
+ .2byte EC_WORD_MEAN
+ .2byte EC_WORD_QUES
.2byte -1
@ loss speech
- ec_word HUH_QUES
- ec_word YOU
- ec_word WERE
- ec_word RIGHT
- ec_word QUES
+ .2byte EC_WORD_HUH_QUES
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_WERE
+ .2byte EC_WORD_RIGHT
+ .2byte EC_WORD_QUES
.2byte -1
.4byte gFallarborBattleTentTrainerMons_Gerardo
@@ -186,285 +186,285 @@ gFallarborBattleTentTrainers:: @ 85DF084
.4byte TRAINER_CLASS_POKEMANIAC
.string "JONN$", 8
@ pre-battle speech
- ec_word THE
- ec_word WORLD
- ec_move2 SUPERPOWER
- ec_move2 STOMP
- ec_word CONTEST
- ec_word EXCL_EXCL
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_WORLD
+ .2byte EC_MOVE2(SUPERPOWER)
+ .2byte EC_MOVE2(STOMP)
+ .2byte EC_WORD_CONTEST
+ .2byte EC_WORD_EXCL_EXCL
@ win speech
- ec_word I_AM
- ec_word NO_1
- ec_word EXCL_EXCL
- ec_word HEAR
- ec_word ME
- ec_move2 ROAR
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_NO_1
+ .2byte EC_WORD_EXCL_EXCL
+ .2byte EC_WORD_HEAR
+ .2byte EC_WORD_ME
+ .2byte EC_MOVE2(ROAR)
@ loss speech
- ec_word I
- ec_word GIVE_UP
- ec_word EXCL
- ec_word YOU_RE
- ec_word NO_1
- ec_word EXCL
+ .2byte EC_WORD_I
+ .2byte EC_WORD_GIVE_UP
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_NO_1
+ .2byte EC_WORD_EXCL
.4byte gFallarborBattleTentTrainerMons_Jonn
@ 8
.4byte TRAINER_CLASS_SWIMMER_M
.string "ESTEBAN$", 8
@ pre-battle speech
- ec_word YOU_RE
- ec_word A
- ec_word GOOD
- ec_word TRAINER
- ec_word QUES
- ec_word UNBELIEVABLE
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_A
+ .2byte EC_WORD_GOOD
+ .2byte EC_WORD_TRAINER
+ .2byte EC_WORD_QUES
+ .2byte EC_WORD_UNBELIEVABLE
@ win speech
- ec_word YOU_RE
- ec_word SOME
- ec_word PUSHOVER
- ec_word OF
- ec_word A
- ec_word TRAINER
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_SOME
+ .2byte EC_WORD_PUSHOVER
+ .2byte EC_WORD_OF
+ .2byte EC_WORD_A
+ .2byte EC_WORD_TRAINER
@ loss speech
- ec_word YOU_RE
- ec_word MUCH
- ec_word TOO
- ec_word MUCH
- ec_word FOR
- ec_word ME
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_MUCH
+ .2byte EC_WORD_TOO
+ .2byte EC_WORD_MUCH
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_ME
.4byte gFallarborBattleTentTrainerMons_Esteban
@ 9
.4byte TRAINER_CLASS_CAMPER
.string "JAMESON$", 8
@ pre-battle speech
- ec_word MY
- ec_word POKEMON
- ec_word ARE
- ec_word SILKY
- ec_word SMOOTH
- ec_word EXCL
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_ARE
+ .2byte EC_WORD_SILKY
+ .2byte EC_WORD_SMOOTH
+ .2byte EC_WORD_EXCL
@ win speech
- ec_word MY
- ec_word SILKY
- ec_word SMOOTH
- ec_word POKEMON
- ec_word RULE
- ec_word EXCL
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_SILKY
+ .2byte EC_WORD_SMOOTH
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_RULE
+ .2byte EC_WORD_EXCL
@ loss speech
- ec_word MY
- ec_word POKEMON
- ec_move2 STRUGGLE
- ec_word IN
- ec_word YOUR
- ec_word STICKY_HOLD
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_POKEMON
+ .2byte EC_MOVE2(STRUGGLE)
+ .2byte EC_WORD_IN
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_STICKY_HOLD
.4byte gFallarborBattleTentTrainerMons_Jameson
@ 10
.4byte TRAINER_CLASS_BUG_MANIAC
.string "ALANZO$", 8
@ pre-battle speech
- ec_move2 FORESIGHT
- ec_word IS
- ec_word A
- ec_word POWER
- ec_word I
- ec_word HAVE
+ .2byte EC_MOVE2(FORESIGHT)
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_A
+ .2byte EC_WORD_POWER
+ .2byte EC_WORD_I
+ .2byte EC_WORD_HAVE
@ win speech
- ec_word YOU_RE
- ec_word OBLIVIOUS
- ec_word ABOUT
- ec_move2 FORESIGHT
- ec_word EXCL
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_OBLIVIOUS
+ .2byte EC_WORD_ABOUT
+ .2byte EC_MOVE2(FORESIGHT)
+ .2byte EC_WORD_EXCL
.2byte -1
@ loss speech
- ec_word MY
- ec_move2 FORESIGHT
- ec_word IS
- ec_word ALWAYS
- ec_word RIGHT
- ec_word EXCL
+ .2byte EC_WORD_MY
+ .2byte EC_MOVE2(FORESIGHT)
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_ALWAYS
+ .2byte EC_WORD_RIGHT
+ .2byte EC_WORD_EXCL
.4byte gFallarborBattleTentTrainerMons_Alanzo
@ 11
.4byte TRAINER_CLASS_GENTLEMAN
.string "HOWARD$", 8
@ pre-battle speech
- ec_word YOUR
- ec_word POKEMON
- ec_word CAN_T
- ec_word BEAT
- ec_word ME
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_CAN_T
+ .2byte EC_WORD_BEAT
+ .2byte EC_WORD_ME
.2byte -1
@ win speech
- ec_word YOU
- ec_word COULDN_T
- ec_word WIN
- ec_word COULD
- ec_word YOU
- ec_word QUES
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_COULDN_T
+ .2byte EC_WORD_WIN
+ .2byte EC_WORD_COULD
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_QUES
@ loss speech
- ec_word YOU
- ec_word WOULD
- ec_word GO
- ec_word ALL
- ec_word OUT
- ec_word ELLIPSIS
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_WOULD
+ .2byte EC_WORD_GO
+ .2byte EC_WORD_ALL
+ .2byte EC_WORD_OUT
+ .2byte EC_WORD_ELLIPSIS
.4byte gFallarborBattleTentTrainerMons_Howard
@ 12
.4byte TRAINER_CLASS_GUITARIST
.string "CONRAD$", 8
@ pre-battle speech
- ec_word YOUR
- ec_word POKEMON
- ec_word ARE
- ec_word PRETTY
- ec_word WILD
- ec_word EXCL
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_ARE
+ .2byte EC_WORD_PRETTY
+ .2byte EC_WORD_WILD
+ .2byte EC_WORD_EXCL
@ win speech
- ec_word WHOAH
- ec_word EXCL_EXCL
+ .2byte EC_WORD_WHOAH
+ .2byte EC_WORD_EXCL_EXCL
.2byte -1
- ec_word LET_S
- ec_word DANCE
- ec_word EXCL
+ .2byte EC_WORD_LET_S
+ .2byte EC_WORD_DANCE
+ .2byte EC_WORD_EXCL
@ loss speech
- ec_word MY
- ec_word MUSIC
- ec_word WILL
- ec_word PLAY
- ec_word ON
- ec_word ELLIPSIS
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_MUSIC
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_PLAY
+ .2byte EC_WORD_ON
+ .2byte EC_WORD_ELLIPSIS
.4byte gFallarborBattleTentTrainerMons_Conrad
@ 13
.4byte TRAINER_CLASS_SCHOOL_KID_2
.string "MAKENNA$", 8
@ pre-battle speech
- ec_word SHOW
- ec_word ME
- ec_word THAT
- ec_word YOU
- ec_word MEAN
- ec_word IT
+ .2byte EC_WORD_SHOW
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_THAT
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_MEAN
+ .2byte EC_WORD_IT
@ win speech
- ec_word THAT_S
- ec_word WHY
- ec_word I
- ec_word STUDY
- ec_word EVERY
- ec_word DAY
+ .2byte EC_WORD_THAT_S
+ .2byte EC_WORD_WHY
+ .2byte EC_WORD_I
+ .2byte EC_WORD_STUDY
+ .2byte EC_WORD_EVERY
+ .2byte EC_WORD_DAY
@ loss speech
- ec_word AWW
- ec_word I
- ec_word STUDY
- ec_word EVERY
- ec_word DAY
- ec_word TOO
+ .2byte EC_WORD_AWW
+ .2byte EC_WORD_I
+ .2byte EC_WORD_STUDY
+ .2byte EC_WORD_EVERY
+ .2byte EC_WORD_DAY
+ .2byte EC_WORD_TOO
.4byte gFallarborBattleTentTrainerMons_Makenna
@ 14
.4byte TRAINER_CLASS_COOLTRAINER_1
.string "BRAYAN$", 8
@ pre-battle speech
- ec_word CAN
- ec_word YOU
- ec_word SEE
- ec_word MY
- ec_word POWER
- ec_word QUES
+ .2byte EC_WORD_CAN
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_SEE
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_POWER
+ .2byte EC_WORD_QUES
@ win speech
- ec_word HOW
- ec_word BORING
- ec_word ELLIPSIS
- ec_word THIS
- ec_word IS
- ec_word GOOD_BYE
+ .2byte EC_WORD_HOW
+ .2byte EC_WORD_BORING
+ .2byte EC_WORD_ELLIPSIS
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_GOOD_BYE
@ loss speech
- ec_word AM
- ec_word I
- ec_word THE
- ec_word WEAK
- ec_word TRAINER
- ec_word QUES
+ .2byte EC_WORD_AM
+ .2byte EC_WORD_I
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_WEAK
+ .2byte EC_WORD_TRAINER
+ .2byte EC_WORD_QUES
.4byte gFallarborBattleTentTrainerMons_Brayan
@ 15
.4byte TRAINER_CLASS_COOLTRAINER_2
.string "MARIANA$", 8
@ pre-battle speech
- ec_word A
- ec_word LIE
- ec_word CAN
- ec_word BE
- ec_word KIND
- ec_word ELLIPSIS
+ .2byte EC_WORD_A
+ .2byte EC_WORD_LIE
+ .2byte EC_WORD_CAN
+ .2byte EC_WORD_BE
+ .2byte EC_WORD_KIND
+ .2byte EC_WORD_ELLIPSIS
@ win speech
- ec_word THIS
- ec_word IS
- ec_word LIKE
- ec_word THE
- ec_word SUNDAY
- ec_word COMICS
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_SUNDAY
+ .2byte EC_WORD_COMICS
@ loss speech
- ec_word THIS
- ec_word IS
- ec_word LIKE
- ec_word FROM
- ec_word A
- ec_word MOVIE
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_FROM
+ .2byte EC_WORD_A
+ .2byte EC_WORD_MOVIE
.4byte gFallarborBattleTentTrainerMons_Mariana
@ 16
.4byte TRAINER_CLASS_POKEFAN_1
.string "SHELDON$", 8
@ pre-battle speech
- ec_word A
- ec_word POKEMON
- ec_word TEACHER
- ec_word GETS
- ec_word NO
- ec_move2 REST
+ .2byte EC_WORD_A
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_TEACHER
+ .2byte EC_WORD_GETS
+ .2byte EC_WORD_NO
+ .2byte EC_MOVE2(REST)
@ win speech
- ec_word MY
- ec_word SMARTNESS
- ec_word GETS
- ec_word ME
- ec_word EASY
- ec_word WINS
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_SMARTNESS
+ .2byte EC_WORD_GETS
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_EASY
+ .2byte EC_WORD_WINS
@ loss speech
- ec_word I
- ec_word HAVE
- ec_word TO
- ec_word GO
- ec_word WORK
- ec_word BYE_BYE
+ .2byte EC_WORD_I
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_GO
+ .2byte EC_WORD_WORK
+ .2byte EC_WORD_BYE_BYE
.4byte gFallarborBattleTentTrainerMons_Sheldon
@ 17
.4byte TRAINER_CLASS_POKEFAN_2
.string "GIANNA$", 8
@ pre-battle speech
- ec_word AHAHA
- ec_word YES
- ec_word EXCL
- ec_word LOVEY_DOVEY
- ec_word POKEMON
- ec_word WORLD
+ .2byte EC_WORD_AHAHA
+ .2byte EC_WORD_YES
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_LOVEY_DOVEY
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_WORLD
@ win speech
- ec_word MY
- ec_word SHINE
- ec_word IS
- ec_word MAKING
- ec_word THINGS
- ec_word BETTER
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_SHINE
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_MAKING
+ .2byte EC_WORD_THINGS
+ .2byte EC_WORD_BETTER
@ loss speech
- ec_word DO
- ec_word YOU
- ec_word DISLIKE
- ec_word POKEMON
- ec_word QUES
+ .2byte EC_WORD_DO
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_DISLIKE
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_QUES
.2byte -1
.4byte gFallarborBattleTentTrainerMons_Gianna
@@ -472,257 +472,257 @@ gFallarborBattleTentTrainers:: @ 85DF084
.4byte TRAINER_CLASS_EXPERT_1
.string "YAHIR$", 8
@ pre-battle speech
- ec_word YOU
- ec_word ELLIPSIS_ELLIPSIS_ELLIPSIS
- ec_word ELLIPSIS_ELLIPSIS_ELLIPSIS
- ec_word ELLIPSIS_ELLIPSIS_ELLIPSIS
- ec_word COME_ON
- ec_word EXCL
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
+ .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
+ .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
+ .2byte EC_WORD_COME_ON
+ .2byte EC_WORD_EXCL
@ win speech
- ec_word YOU
- ec_word NEED
- ec_word TO
- ec_word TRAIN
- ec_word A_LOT
- ec_word MORE
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_NEED
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_TRAIN
+ .2byte EC_WORD_A_LOT
+ .2byte EC_WORD_MORE
@ loss speech
- ec_word NOT
- ec_word ENOUGH
- ec_word ELLIPSIS
- ec_word JUST
- ec_word NOT
- ec_word ENOUGH
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_ENOUGH
+ .2byte EC_WORD_ELLIPSIS
+ .2byte EC_WORD_JUST
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_ENOUGH
.4byte gFallarborBattleTentTrainerMons_Yahir
@ 19
.4byte TRAINER_CLASS_EXPERT_2
.string "BRITNEY$", 8
@ pre-battle speech
- ec_word IT
- ec_word SEEMS
- ec_word THAT
- ec_word YOU_RE
- ec_word QUITE
- ec_word GOOD
+ .2byte EC_WORD_IT
+ .2byte EC_WORD_SEEMS
+ .2byte EC_WORD_THAT
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_QUITE
+ .2byte EC_WORD_GOOD
@ win speech
- ec_word YOU_RE
- ec_word A
- ec_word LUKEWARM
- ec_word TALENT
- ec_word AT
- ec_word BEST
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_A
+ .2byte EC_WORD_LUKEWARM
+ .2byte EC_WORD_TALENT
+ .2byte EC_WORD_AT
+ .2byte EC_WORD_BEST
@ loss speech
- ec_word YOU_RE
- ec_word A
- ec_word COOL
- ec_word HERO
- ec_word AT
- ec_word THIS
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_A
+ .2byte EC_WORD_COOL
+ .2byte EC_WORD_HERO
+ .2byte EC_WORD_AT
+ .2byte EC_WORD_THIS
.4byte gFallarborBattleTentTrainerMons_Britney
@ 20
.4byte TRAINER_CLASS_YOUNGSTER
.string "HECTER$", 8
@ pre-battle speech
- ec_word MY
- ec_move2 HIDDEN_POWER
- ec_word IS
- ec_word EXCITING
- ec_word ME
- ec_word EXCL
+ .2byte EC_WORD_MY
+ .2byte EC_MOVE2(HIDDEN_POWER)
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_EXCITING
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_EXCL
@ win speech
- ec_word YEEHAW_EXCL
- ec_word LET_S
- ec_word HAVE
- ec_word A
- ec_move2 HIDDEN_POWER
- ec_word PARTY
+ .2byte EC_WORD_YEEHAW_EXCL
+ .2byte EC_WORD_LET_S
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_A
+ .2byte EC_MOVE2(HIDDEN_POWER)
+ .2byte EC_WORD_PARTY
@ loss speech
- ec_word WAAAH
- ec_word EXCL
- ec_word DON_T
- ec_word YOU
- ec_move2 MIMIC
- ec_word ME
+ .2byte EC_WORD_WAAAH
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_YOU
+ .2byte EC_MOVE2(MIMIC)
+ .2byte EC_WORD_ME
.4byte gFallarborBattleTentTrainerMons_Hecter
@ 21
.4byte TRAINER_CLASS_FISHERMAN
.string "TANNOR$", 8
@ pre-battle speech
- ec_word YOU
- ec_word HAVE
- ec_word GOT
- ec_word TO
- ec_word BE
- ec_word JOKING
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_GOT
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_BE
+ .2byte EC_WORD_JOKING
@ win speech
- ec_word YOU_RE
- ec_word THE
- ec_word BEST
- ec_word AT
- ec_word BEING
- ec_word FUNNY
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_BEST
+ .2byte EC_WORD_AT
+ .2byte EC_WORD_BEING
+ .2byte EC_WORD_FUNNY
@ loss speech
- ec_word YOU
- ec_word WEREN_T
- ec_word BEING
- ec_word FUNNY
- ec_word AT
- ec_word ALL
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_WEREN_T
+ .2byte EC_WORD_BEING
+ .2byte EC_WORD_FUNNY
+ .2byte EC_WORD_AT
+ .2byte EC_WORD_ALL
.4byte gFallarborBattleTentTrainerMons_Tannor
@ 22
.4byte TRAINER_CLASS_BIRD_KEEPER
.string "BENJI$", 8
@ pre-battle speech
- ec_word YOU
- ec_word DON_T
- ec_word THINK
- ec_word VERY
- ec_word FAST
- ec_word HUH_QUES
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_THINK
+ .2byte EC_WORD_VERY
+ .2byte EC_WORD_FAST
+ .2byte EC_WORD_HUH_QUES
@ win speech
- ec_word SORRY
- ec_word EXCL
- ec_word I
- ec_word DIDN_T
- ec_word MEAN
- ec_word YOU
+ .2byte EC_WORD_SORRY
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_I
+ .2byte EC_WORD_DIDN_T
+ .2byte EC_WORD_MEAN
+ .2byte EC_WORD_YOU
@ loss speech
- ec_word YOU
- ec_word LEFT
- ec_word ME
- ec_word FEELING
- ec_word SAD
- ec_word ELLIPSIS
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_LEFT
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_FEELING
+ .2byte EC_WORD_SAD
+ .2byte EC_WORD_ELLIPSIS
.4byte gFallarborBattleTentTrainerMons_Benji
@ 23
.4byte TRAINER_CLASS_NINJA_BOY
.string "RORY$", 8
@ pre-battle speech
- ec_word DON_T
- ec_word CAUSE
- ec_word AN
- ec_move1 UPROAR
- ec_word YOU
- ec_word EXCL
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_CAUSE
+ .2byte EC_WORD_AN
+ .2byte EC_MOVE(UPROAR)
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_EXCL
@ win speech
- ec_word I
- ec_word DON_T
- ec_word NEED
- ec_word AN
- ec_move1 UPROAR
- ec_word EXCL
+ .2byte EC_WORD_I
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_NEED
+ .2byte EC_WORD_AN
+ .2byte EC_MOVE(UPROAR)
+ .2byte EC_WORD_EXCL
@ loss speech
- ec_word I_AM
- ec_word GOING
- ec_word TO
- ec_word CAUSE
- ec_word AN
- ec_move1 UPROAR
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_GOING
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_CAUSE
+ .2byte EC_WORD_AN
+ .2byte EC_MOVE(UPROAR)
.4byte gFallarborBattleTentTrainerMons_Rory
@ 24
.4byte TRAINER_CLASS_PARASOL_LADY
.string "ELEANOR$", 8
@ pre-battle speech
- ec_word I
- ec_word REALLY
- ec_word WANT
- ec_word TO
- ec_word PARTY
+ .2byte EC_WORD_I
+ .2byte EC_WORD_REALLY
+ .2byte EC_WORD_WANT
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_PARTY
.2byte -1
@ win speech
- ec_word A
- ec_word TRENDY
- ec_word PARTY
- ec_word WOULD
- ec_word BE
- ec_word REFRESHING
+ .2byte EC_WORD_A
+ .2byte EC_WORD_TRENDY
+ .2byte EC_WORD_PARTY
+ .2byte EC_WORD_WOULD
+ .2byte EC_WORD_BE
+ .2byte EC_WORD_REFRESHING
@ loss speech
- ec_word DON_T
- ec_word YOU
- ec_word LIKE
- ec_word TO
- ec_word PARTY
- ec_word QUES
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_PARTY
+ .2byte EC_WORD_QUES
.4byte gFallarborBattleTentTrainerMons_Eleanor
@ 25
.4byte TRAINER_CLASS_SWIMMER_F
.string "EVELYN$", 8
@ pre-battle speech
- ec_word MY
- ec_word PC
- ec_word IS
- ec_word MY
- ec_word SECRET_BASE
- ec_word EXCL
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_PC
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_SECRET_BASE
+ .2byte EC_WORD_EXCL
@ win speech
- ec_word IT_S
- ec_word ALL
- ec_word SECRET
- ec_word ON
- ec_word MY
- ec_word PC
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_ALL
+ .2byte EC_WORD_SECRET
+ .2byte EC_WORD_ON
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_PC
@ loss speech
- ec_word NO
- ec_word EXCL
+ .2byte EC_WORD_NO
+ .2byte EC_WORD_EXCL
.2byte -1
- ec_word I
- ec_word REJECT
- ec_word THIS
+ .2byte EC_WORD_I
+ .2byte EC_WORD_REJECT
+ .2byte EC_WORD_THIS
.4byte gFallarborBattleTentTrainerMons_Evelyn
@ 26
.4byte TRAINER_CLASS_PICNICKER
.string "ARIELLE$", 8
@ pre-battle speech
- ec_word IT_S
- ec_word NOT_VERY
- ec_word PRETTY
- ec_word BUT
- ec_word I
- ec_word TRY
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_NOT_VERY
+ .2byte EC_WORD_PRETTY
+ .2byte EC_WORD_BUT
+ .2byte EC_WORD_I
+ .2byte EC_WORD_TRY
@ win speech
- ec_word WE_RE
- ec_word NOT_VERY
- ec_word PRETTY
- ec_word BUT
- ec_word WE_RE
- ec_word GREAT
+ .2byte EC_WORD_WE_RE
+ .2byte EC_WORD_NOT_VERY
+ .2byte EC_WORD_PRETTY
+ .2byte EC_WORD_BUT
+ .2byte EC_WORD_WE_RE
+ .2byte EC_WORD_GREAT
@ loss speech
- ec_word THAT_WAS
- ec_word PRETTY
- ec_word MEAN
- ec_word OF
- ec_word YOU
- ec_word EXCL
+ .2byte EC_WORD_THAT_WAS
+ .2byte EC_WORD_PRETTY
+ .2byte EC_WORD_MEAN
+ .2byte EC_WORD_OF
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_EXCL
.4byte gFallarborBattleTentTrainerMons_Arielle
@ 27
.4byte TRAINER_CLASS_SAILOR
.string "CONNAR$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word NOT
- ec_word STRONG
- ec_word ENOUGH
- ec_word FOR
- ec_word THIS
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_STRONG
+ .2byte EC_WORD_ENOUGH
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_THIS
@ win speech
- ec_word DO
- ec_word YOU
- ec_word THINK
- ec_word YOU_RE
- ec_word OK_QUES
+ .2byte EC_WORD_DO
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_THINK
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_OK_QUES
.2byte -1
@ loss speech
- ec_word GOOD_BYE
- ec_word AND
- ec_word THANK_YOU
+ .2byte EC_WORD_GOOD_BYE
+ .2byte EC_WORD_AND
+ .2byte EC_WORD_THANK_YOU
.2byte -1
.2byte -1
.2byte -1
@@ -732,50 +732,50 @@ gFallarborBattleTentTrainers:: @ 85DF084
.4byte TRAINER_CLASS_COLLECTOR
.string "MAURICE$", 8
@ pre-battle speech
- ec_word THERE
- ec_word IS
- ec_word NO
- ec_word RADIO
- ec_word OR
- ec_word TELEVISION
+ .2byte EC_WORD_THERE
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_NO
+ .2byte EC_WORD_RADIO
+ .2byte EC_WORD_OR
+ .2byte EC_WORD_TELEVISION
@ win speech
- ec_word BUT
- ec_word THERE
- ec_word IS
- ec_word A_LOT
- ec_word OF
- ec_word POKEMON
+ .2byte EC_WORD_BUT
+ .2byte EC_WORD_THERE
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_A_LOT
+ .2byte EC_WORD_OF
+ .2byte EC_WORD_POKEMON
@ loss speech
- ec_word I
- ec_word CAN_T
- ec_word ENJOY
- ec_word MYSELF
- ec_word WITHOUT
- ec_word MONEY
+ .2byte EC_WORD_I
+ .2byte EC_WORD_CAN_T
+ .2byte EC_WORD_ENJOY
+ .2byte EC_WORD_MYSELF
+ .2byte EC_WORD_WITHOUT
+ .2byte EC_WORD_MONEY
.4byte gFallarborBattleTentTrainerMons_Maurice
@ 29
.4byte TRAINER_CLASS_LASS
.string "KIANNA$", 8
@ pre-battle speech
- ec_word I
- ec_word WANT
- ec_word TO
- ec_word GO
- ec_word DEPT_STORE
- ec_word SHOPPING
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WANT
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_GO
+ .2byte EC_WORD_DEPT_STORE
+ .2byte EC_WORD_SHOPPING
@ win speech
- ec_word I
- ec_word DISLIKE
- ec_word SHOPPING
- ec_word ALONE
+ .2byte EC_WORD_I
+ .2byte EC_WORD_DISLIKE
+ .2byte EC_WORD_SHOPPING
+ .2byte EC_WORD_ALONE
.2byte -1
.2byte -1
@ loss speech
- ec_word WANT
- ec_word TO
- ec_word GO
- ec_word SHOPPING
- ec_word TOGETHER
- ec_word QUES
+ .2byte EC_WORD_WANT
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_GO
+ .2byte EC_WORD_SHOPPING
+ .2byte EC_WORD_TOGETHER
+ .2byte EC_WORD_QUES
.4byte gFallarborBattleTentTrainerMons_Kianna
diff --git a/data/battle_frontier/slateport_battle_tent_trainers.inc b/data/battle_frontier/slateport_battle_tent_trainers.inc
index 00b874c07..9d6900149 100644
--- a/data/battle_frontier/slateport_battle_tent_trainers.inc
+++ b/data/battle_frontier/slateport_battle_tent_trainers.inc
@@ -4,205 +4,205 @@ gSlateportBattleTentTrainers:: @ 85DDA14
.4byte TRAINER_CLASS_AROMA_LADY
.string "JOLIE$", 8
@ pre-battle speech
- ec_word WHAT
- ec_word WILL
- ec_word I
- ec_word BE
- ec_word TOMORROW
- ec_word QUES
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_I
+ .2byte EC_WORD_BE
+ .2byte EC_WORD_TOMORROW
+ .2byte EC_WORD_QUES
@ win speech
- ec_word I_AM
- ec_word FEELING
- ec_word LIKE
- ec_word IT_S
- ec_word FRIDAY
- ec_word EXCL
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_FEELING
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_FRIDAY
+ .2byte EC_WORD_EXCL
@ loss speech
- ec_word I_AM
- ec_word FEELING
- ec_word LIKE
- ec_word IT_S
- ec_word MONDAY
- ec_word ELLIPSIS
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_FEELING
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_MONDAY
+ .2byte EC_WORD_ELLIPSIS
.4byte gSlateportBattleTentTrainerMons_Jolie
@ 1
.4byte TRAINER_CLASS_RUIN_MANIAC
.string "MALACHI$", 8
@ pre-battle speech
- ec_word BAD
- ec_word NEWS
- ec_word EXCL
- ec_word IT_S
- ec_word A
- ec_move1 SAND_TOMB
+ .2byte EC_WORD_BAD
+ .2byte EC_WORD_NEWS
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_A
+ .2byte EC_MOVE(SAND_TOMB)
@ win speech
- ec_word YEEHAW_EXCL
+ .2byte EC_WORD_YEEHAW_EXCL
.2byte -1
.2byte -1
- ec_word I_VE
- ec_word DONE
- ec_word IT
+ .2byte EC_WORD_I_VE
+ .2byte EC_WORD_DONE
+ .2byte EC_WORD_IT
@ loss speech
- ec_word I_VE
- ec_word LOST
- ec_word IN
- ec_word THIS
- ec_move1 SAND_TOMB
- ec_word ELLIPSIS
+ .2byte EC_WORD_I_VE
+ .2byte EC_WORD_LOST
+ .2byte EC_WORD_IN
+ .2byte EC_WORD_THIS
+ .2byte EC_MOVE(SAND_TOMB)
+ .2byte EC_WORD_ELLIPSIS
.4byte gSlateportBattleTentTrainerMons_Malachi
@ 2
.4byte TRAINER_CLASS_TUBER_1
.string "KELSIE$", 8
@ pre-battle speech
- ec_word GO
- ec_word EXCL_EXCL
- ec_word MY
- ec_word BATH
- ec_word POKEMON
- ec_word EXCL_EXCL
+ .2byte EC_WORD_GO
+ .2byte EC_WORD_EXCL_EXCL
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_BATH
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_EXCL_EXCL
@ win speech
- ec_word YAHOO
- ec_word EXCL_EXCL
- ec_word MY
- ec_word BATH
- ec_word POKEMON
- ec_word EXCL_EXCL
+ .2byte EC_WORD_YAHOO
+ .2byte EC_WORD_EXCL_EXCL
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_BATH
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_EXCL_EXCL
@ loss speech
- ec_word GWAH
- ec_word EXCL_EXCL
- ec_word MY
- ec_word BATH
- ec_word POKEMON
- ec_word EXCL_EXCL
+ .2byte EC_WORD_GWAH
+ .2byte EC_WORD_EXCL_EXCL
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_BATH
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_EXCL_EXCL
.4byte gSlateportBattleTentTrainerMons_Kelsie
@ 3
.4byte TRAINER_CLASS_TUBER_2
.string "DAVON$", 8
@ pre-battle speech
- ec_word YEAH_YEAH
- ec_word EXCL_EXCL
+ .2byte EC_WORD_YEAH_YEAH
+ .2byte EC_WORD_EXCL_EXCL
.2byte -1
- ec_word GREAT
- ec_move1 WHIRLPOOL
- ec_word ISN_T_IT_QUES
+ .2byte EC_WORD_GREAT
+ .2byte EC_MOVE(WHIRLPOOL)
+ .2byte EC_WORD_ISN_T_IT_QUES
@ win speech
- ec_word THAT_WAS
- ec_word LIKE
- ec_word A
- ec_move1 WHIRLPOOL
- ec_word YEAH_YEAH
- ec_word EXCL_EXCL
+ .2byte EC_WORD_THAT_WAS
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_A
+ .2byte EC_MOVE(WHIRLPOOL)
+ .2byte EC_WORD_YEAH_YEAH
+ .2byte EC_WORD_EXCL_EXCL
@ loss speech
- ec_word DON_T
- ec_word GET
- ec_move2 BEAT_UP
- ec_word IN
- ec_word THAT
- ec_move1 WHIRLPOOL
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_GET
+ .2byte EC_MOVE2(BEAT_UP)
+ .2byte EC_WORD_IN
+ .2byte EC_WORD_THAT
+ .2byte EC_MOVE(WHIRLPOOL)
.4byte gSlateportBattleTentTrainerMons_Davon
@ 4
.4byte TRAINER_CLASS_LADY
.string "GLENDA$", 8
@ pre-battle speech
- ec_word CONVERSATION
- ec_word CAN
- ec_word WAIT
- ec_word UNTIL
- ec_word I
- ec_word WIN
+ .2byte EC_WORD_CONVERSATION
+ .2byte EC_WORD_CAN
+ .2byte EC_WORD_WAIT
+ .2byte EC_WORD_UNTIL
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WIN
@ win speech
- ec_word FABULOUS
- ec_word EXCL
- ec_word I_AM
- ec_word GOING
- ec_word TO
- ec_word ROCK
+ .2byte EC_WORD_FABULOUS
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_GOING
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_ROCK
@ loss speech
- ec_word NO
- ec_word EXCL
+ .2byte EC_WORD_NO
+ .2byte EC_WORD_EXCL
.2byte -1
- ec_word I
- ec_word WASN_T
- ec_word SERIOUS
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WASN_T
+ .2byte EC_WORD_SERIOUS
.4byte gSlateportBattleTentTrainerMons_Glenda
@ 5
.4byte TRAINER_CLASS_BEAUTY
.string "HELENA$", 8
@ pre-battle speech
- ec_word DOES
- ec_word MY
- ec_word BEAUTY
- ec_word INTIMIDATE
- ec_word YOU
- ec_word QUES
+ .2byte EC_WORD_DOES
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_BEAUTY
+ .2byte EC_WORD_INTIMIDATE
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_QUES
@ win speech
- ec_word I_AM
- ec_word SO
- ec_word SORRY
- ec_word BUT
- ec_word YOU_RE
- ec_word BORING
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_SORRY
+ .2byte EC_WORD_BUT
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_BORING
@ loss speech
- ec_word I
- ec_word DO
- ec_word SO
- ec_word ENJOY
- ec_word THIS
- ec_word EXCL
+ .2byte EC_WORD_I
+ .2byte EC_WORD_DO
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_ENJOY
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_EXCL
.4byte gSlateportBattleTentTrainerMons_Helena
@ 6
.4byte TRAINER_CLASS_RICH_BOY
.string "RODOLFO$", 8
@ pre-battle speech
- ec_word GO
- ec_word GET
- ec_word A
- ec_pokemon1 WHISCASH
- ec_word FOR
- ec_word ME
+ .2byte EC_WORD_GO
+ .2byte EC_WORD_GET
+ .2byte EC_WORD_A
+ .2byte EC_POKEMON(WHISCASH)
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_ME
@ win speech
- ec_word AWW
- ec_word YOU
- ec_word DON_T
- ec_word HAVE
- ec_word A
- ec_pokemon1 WHISCASH
+ .2byte EC_WORD_AWW
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_A
+ .2byte EC_POKEMON(WHISCASH)
@ loss speech
- ec_word PLEASE
- ec_word I
- ec_word NEED
- ec_word A
- ec_pokemon1 WHISCASH
- ec_word BADLY
+ .2byte EC_WORD_PLEASE
+ .2byte EC_WORD_I
+ .2byte EC_WORD_NEED
+ .2byte EC_WORD_A
+ .2byte EC_POKEMON(WHISCASH)
+ .2byte EC_WORD_BADLY
.4byte gSlateportBattleTentTrainerMons_Rodolfo
@ 7
.4byte TRAINER_CLASS_POKEMANIAC
.string "DAVION$", 8
@ pre-battle speech
- ec_word GRAAAH
- ec_word GRAAAH
- ec_word EXCL_EXCL
- ec_word GRAAAH
- ec_word GRAAAH
- ec_word EXCL_EXCL
+ .2byte EC_WORD_GRAAAH
+ .2byte EC_WORD_GRAAAH
+ .2byte EC_WORD_EXCL_EXCL
+ .2byte EC_WORD_GRAAAH
+ .2byte EC_WORD_GRAAAH
+ .2byte EC_WORD_EXCL_EXCL
@ win speech
- ec_move2 ROAR
- ec_word EXCL
+ .2byte EC_MOVE2(ROAR)
+ .2byte EC_WORD_EXCL
.2byte -1
- ec_move2 ROAR
- ec_word EXCL_EXCL
+ .2byte EC_MOVE2(ROAR)
+ .2byte EC_WORD_EXCL_EXCL
.2byte -1
@ loss speech
- ec_word URGH
- ec_word WAAAH
- ec_word EXCL_EXCL
+ .2byte EC_WORD_URGH
+ .2byte EC_WORD_WAAAH
+ .2byte EC_WORD_EXCL_EXCL
.2byte -1
.2byte -1
.2byte -1
@@ -212,285 +212,285 @@ gSlateportBattleTentTrainers:: @ 85DDA14
.4byte TRAINER_CLASS_SWIMMER_M
.string "KENDALL$", 8
@ pre-battle speech
- ec_word A_LITTLE
- ec_move2 PETAL_DANCE
- ec_word TO
- ec_word PLEASE
- ec_word YOU
- ec_word EXCL
+ .2byte EC_WORD_A_LITTLE
+ .2byte EC_MOVE2(PETAL_DANCE)
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_PLEASE
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_EXCL
@ win speech
- ec_word I
- ec_word DO
- ec_word THIS
- ec_word ONLY
- ec_word FOR
- ec_word WORK
+ .2byte EC_WORD_I
+ .2byte EC_WORD_DO
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_ONLY
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_WORK
@ loss speech
- ec_word HOW
- ec_word COULD
- ec_word YOU
- ec_move2 POUND
- ec_word ME
- ec_word QUES
+ .2byte EC_WORD_HOW
+ .2byte EC_WORD_COULD
+ .2byte EC_WORD_YOU
+ .2byte EC_MOVE2(POUND)
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_QUES
.4byte gSlateportBattleTentTrainerMons_Kendall
@ 9
.4byte TRAINER_CLASS_CAMPER
.string "COLTEN$", 8
@ pre-battle speech
- ec_word I
- ec_word WANT
- ec_word TO
- ec_word GO
- ec_word RUN
- ec_word AROUND
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WANT
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_GO
+ .2byte EC_WORD_RUN
+ .2byte EC_WORD_AROUND
@ win speech
- ec_word YAY
- ec_word EXCL
- ec_word WANT
- ec_word TO
- ec_word RUN
- ec_word QUES
+ .2byte EC_WORD_YAY
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_WANT
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_RUN
+ .2byte EC_WORD_QUES
@ loss speech
- ec_word A
- ec_word SWIFT_SWIM
- ec_word WOULD
- ec_word BE
- ec_word GOOD
- ec_word TOO
+ .2byte EC_WORD_A
+ .2byte EC_WORD_SWIFT_SWIM
+ .2byte EC_WORD_WOULD
+ .2byte EC_WORD_BE
+ .2byte EC_WORD_GOOD
+ .2byte EC_WORD_TOO
.4byte gSlateportBattleTentTrainerMons_Colten
@ 10
.4byte TRAINER_CLASS_BUG_MANIAC
.string "IRVIN$", 8
@ pre-battle speech
- ec_word HAVE
- ec_word A
- ec_word LOOK
- ec_word AT
- ec_word MY
- ec_move1 CONFUSE_RAY
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_A
+ .2byte EC_WORD_LOOK
+ .2byte EC_WORD_AT
+ .2byte EC_WORD_MY
+ .2byte EC_MOVE(CONFUSE_RAY)
@ win speech
- ec_word YAHOO
- ec_word MY
- ec_move1 CONFUSE_RAY
- ec_word IS
- ec_word THE
- ec_word BEST
+ .2byte EC_WORD_YAHOO
+ .2byte EC_WORD_MY
+ .2byte EC_MOVE(CONFUSE_RAY)
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_BEST
@ loss speech
- ec_word GWAH
- ec_word EXCL_EXCL
+ .2byte EC_WORD_GWAH
+ .2byte EC_WORD_EXCL_EXCL
.2byte -1
- ec_word I_AM
- ec_word SORRY
- ec_word EXCL
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_SORRY
+ .2byte EC_WORD_EXCL
.4byte gSlateportBattleTentTrainerMons_Irvin
@ 11
.4byte TRAINER_CLASS_GENTLEMAN
.string "SHAUN$", 8
@ pre-battle speech
- ec_word LISTEN
- ec_word ELLIPSIS
- ec_word YOU
- ec_word AREN_T
- ec_word VERY
- ec_word GOOD
+ .2byte EC_WORD_LISTEN
+ .2byte EC_WORD_ELLIPSIS
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_AREN_T
+ .2byte EC_WORD_VERY
+ .2byte EC_WORD_GOOD
@ win speech
- ec_word YOU
- ec_word SEE
- ec_word QUES
- ec_word I
- ec_word WAS
- ec_word RIGHT
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_SEE
+ .2byte EC_WORD_QUES
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WAS
+ .2byte EC_WORD_RIGHT
@ loss speech
- ec_word YES
- ec_word YES
- ec_word ELLIPSIS
- ec_word YOU_RE
- ec_word QUITE
- ec_word SOMETHING
+ .2byte EC_WORD_YES
+ .2byte EC_WORD_YES
+ .2byte EC_WORD_ELLIPSIS
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_QUITE
+ .2byte EC_WORD_SOMETHING
.4byte gSlateportBattleTentTrainerMons_Shaun
@ 12
.4byte TRAINER_CLASS_GUITARIST
.string "KYLER$", 8
@ pre-battle speech
- ec_word ELLIPSIS_ELLIPSIS_ELLIPSIS
- ec_word ELLIPSIS_ELLIPSIS_ELLIPSIS
- ec_word ELLIPSIS_ELLIPSIS_ELLIPSIS
- ec_word ELLIPSIS_ELLIPSIS_ELLIPSIS
- ec_word ELLIPSIS_ELLIPSIS_ELLIPSIS
- ec_word QUES
+ .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
+ .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
+ .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
+ .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
+ .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
+ .2byte EC_WORD_QUES
@ win speech
- ec_word ELLIPSIS_ELLIPSIS_ELLIPSIS
- ec_word ELLIPSIS_ELLIPSIS_ELLIPSIS
- ec_word ELLIPSIS_ELLIPSIS_ELLIPSIS
- ec_word ELLIPSIS_ELLIPSIS_ELLIPSIS
- ec_word ELLIPSIS_ELLIPSIS_ELLIPSIS
- ec_word YAY
+ .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
+ .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
+ .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
+ .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
+ .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
+ .2byte EC_WORD_YAY
@ loss speech
- ec_word ELLIPSIS_ELLIPSIS_ELLIPSIS
- ec_word ELLIPSIS_ELLIPSIS_ELLIPSIS
- ec_word ELLIPSIS_ELLIPSIS_ELLIPSIS
- ec_word ELLIPSIS_ELLIPSIS_ELLIPSIS
- ec_word ELLIPSIS_ELLIPSIS_ELLIPSIS
- ec_word WOW
+ .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
+ .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
+ .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
+ .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
+ .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
+ .2byte EC_WORD_WOW
.4byte gSlateportBattleTentTrainerMons_Kyler
@ 13
.4byte TRAINER_CLASS_SCHOOL_KID_2
.string "MAGGIE$", 8
@ pre-battle speech
- ec_pokemon1 VULPIX
- ec_pokemon1 XATU
- ec_pokemon2 UMBREON
- ec_word ELLIPSIS
- ec_word UM
- ec_word ELLIPSIS
+ .2byte EC_POKEMON(VULPIX)
+ .2byte EC_POKEMON(XATU)
+ .2byte EC_POKEMON2(UMBREON)
+ .2byte EC_WORD_ELLIPSIS
+ .2byte EC_WORD_UM
+ .2byte EC_WORD_ELLIPSIS
@ win speech
- ec_pokemon1 NOSEPASS
- ec_word ELLIPSIS
- ec_word UM
- ec_pokemon1 SEVIPER
- ec_word EXCL
+ .2byte EC_POKEMON(NOSEPASS)
+ .2byte EC_WORD_ELLIPSIS
+ .2byte EC_WORD_UM
+ .2byte EC_POKEMON(SEVIPER)
+ .2byte EC_WORD_EXCL
.2byte -1
@ loss speech
- ec_pokemon1 NOSEPASS
- ec_word ELLIPSIS
- ec_word UM
- ec_pokemon2 SNORLAX
- ec_word ELLIPSIS
- ec_word UH_OH
+ .2byte EC_POKEMON(NOSEPASS)
+ .2byte EC_WORD_ELLIPSIS
+ .2byte EC_WORD_UM
+ .2byte EC_POKEMON2(SNORLAX)
+ .2byte EC_WORD_ELLIPSIS
+ .2byte EC_WORD_UH_OH
.4byte gSlateportBattleTentTrainerMons_Maggie
@ 14
.4byte TRAINER_CLASS_COOLTRAINER_1
.string "STEPHON$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word GOING
- ec_word TO
- ec_word ENJOY
- ec_word AN
- ec_word EGG
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_GOING
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_ENJOY
+ .2byte EC_WORD_AN
+ .2byte EC_WORD_EGG
@ win speech
- ec_word I
- ec_word WILL
- ec_word ENJOY
- ec_word THIS
- ec_word TASTY
- ec_word VICTORY
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_ENJOY
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_TASTY
+ .2byte EC_WORD_VICTORY
@ loss speech
- ec_word AWFUL
- ec_word EXCL_EXCL
+ .2byte EC_WORD_AWFUL
+ .2byte EC_WORD_EXCL_EXCL
.2byte -1
- ec_word JUST
- ec_word AWFUL
- ec_word EXCL_EXCL
+ .2byte EC_WORD_JUST
+ .2byte EC_WORD_AWFUL
+ .2byte EC_WORD_EXCL_EXCL
.4byte gSlateportBattleTentTrainerMons_Stephon
@ 15
.4byte TRAINER_CLASS_COOLTRAINER_2
.string "REBECCA$", 8
@ pre-battle speech
- ec_word THAT
- ec_word EGG
- ec_word HAS
- ec_word A
- ec_word TASTY
- ec_word SHINE
+ .2byte EC_WORD_THAT
+ .2byte EC_WORD_EGG
+ .2byte EC_WORD_HAS
+ .2byte EC_WORD_A
+ .2byte EC_WORD_TASTY
+ .2byte EC_WORD_SHINE
@ win speech
- ec_word I
- ec_word CAN_T
- ec_word EXCL
- ec_word SMELL
- ec_word THAT
- ec_word STENCH
+ .2byte EC_WORD_I
+ .2byte EC_WORD_CAN_T
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_SMELL
+ .2byte EC_WORD_THAT
+ .2byte EC_WORD_STENCH
@ loss speech
- ec_word YOU
- ec_word CAN_T
- ec_word MAKE
- ec_word ME
- ec_word STOP
- ec_word ELLIPSIS
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_CAN_T
+ .2byte EC_WORD_MAKE
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_STOP
+ .2byte EC_WORD_ELLIPSIS
.4byte gSlateportBattleTentTrainerMons_Rebecca
@ 16
.4byte TRAINER_CLASS_POKEFAN_1
.string "REGGIE$", 8
@ pre-battle speech
- ec_word POKEMON
- ec_word COME
- ec_word BEFORE
- ec_word MONEY
- ec_word OR
- ec_word FAMILY
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_COME
+ .2byte EC_WORD_BEFORE
+ .2byte EC_WORD_MONEY
+ .2byte EC_WORD_OR
+ .2byte EC_WORD_FAMILY
@ win speech
- ec_word THAT_S
- ec_word WHAT
- ec_word IS
- ec_word MAKING
- ec_word ME
- ec_word STRONG
+ .2byte EC_WORD_THAT_S
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_MAKING
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_STRONG
@ loss speech
- ec_word THAT_S
- ec_word WHY
- ec_word I_AM
- ec_word SO
- ec_word THICK
- ec_word ELLIPSIS
+ .2byte EC_WORD_THAT_S
+ .2byte EC_WORD_WHY
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_THICK
+ .2byte EC_WORD_ELLIPSIS
.4byte gSlateportBattleTentTrainerMons_Reggie
@ 17
.4byte TRAINER_CLASS_POKEFAN_2
.string "JANAE$", 8
@ pre-battle speech
- ec_word I
- ec_word JUST
- ec_word ADORE
- ec_word YOUR
- ec_word TOUGH
- ec_word LOOK
+ .2byte EC_WORD_I
+ .2byte EC_WORD_JUST
+ .2byte EC_WORD_ADORE
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_TOUGH
+ .2byte EC_WORD_LOOK
@ win speech
- ec_word I
- ec_word LIKE
- ec_word HOW
- ec_word YOU
- ec_move2 STRUGGLE
+ .2byte EC_WORD_I
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_HOW
+ .2byte EC_WORD_YOU
+ .2byte EC_MOVE2(STRUGGLE)
.2byte -1
@ loss speech
- ec_word YOU_RE
- ec_word A
- ec_word MEAN
- ec_word AND
- ec_word AWFUL
- ec_word TRAINER
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_A
+ .2byte EC_WORD_MEAN
+ .2byte EC_WORD_AND
+ .2byte EC_WORD_AWFUL
+ .2byte EC_WORD_TRAINER
.4byte gSlateportBattleTentTrainerMons_Janae
@ 18
.4byte TRAINER_CLASS_EXPERT_1
.string "CAIDEN$", 8
@ pre-battle speech
- ec_word MY
- ec_move2 CURSE
- ec_word WILL
- ec_word BREAK
- ec_word YOUR
- ec_word SPIRIT
+ .2byte EC_WORD_MY
+ .2byte EC_MOVE2(CURSE)
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_BREAK
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_SPIRIT
@ win speech
- ec_move2 CURSE
- ec_word QUES
- ec_word IT_S
- ec_word A
- ec_word LIE
- ec_word ELLIPSIS
+ .2byte EC_MOVE2(CURSE)
+ .2byte EC_WORD_QUES
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_A
+ .2byte EC_WORD_LIE
+ .2byte EC_WORD_ELLIPSIS
@ loss speech
- ec_word MY
- ec_move2 CURSE
- ec_word WILL
- ec_word LAST
- ec_word FOREVER
+ .2byte EC_WORD_MY
+ .2byte EC_MOVE2(CURSE)
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_LAST
+ .2byte EC_WORD_FOREVER
.2byte -1
.4byte gSlateportBattleTentTrainerMons_Caiden
@@ -498,77 +498,77 @@ gSlateportBattleTentTrainers:: @ 85DDA14
.4byte TRAINER_CLASS_EXPERT_2
.string "KIRSTEN$", 8
@ pre-battle speech
- ec_word HUH_QUES
- ec_word A
- ec_word BATTLE
- ec_word YOU
- ec_word SAID
- ec_word QUES
+ .2byte EC_WORD_HUH_QUES
+ .2byte EC_WORD_A
+ .2byte EC_WORD_BATTLE
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_SAID
+ .2byte EC_WORD_QUES
@ win speech
- ec_word HUH_QUES
- ec_word STRONG
- ec_word BUT
- ec_word NOT
- ec_word STRONG
- ec_word ENOUGH
+ .2byte EC_WORD_HUH_QUES
+ .2byte EC_WORD_STRONG
+ .2byte EC_WORD_BUT
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_STRONG
+ .2byte EC_WORD_ENOUGH
@ loss speech
- ec_word HUH_QUES
- ec_word I
- ec_word SURRENDER
- ec_word TO
- ec_word YOUR
- ec_move1 STRENGTH
+ .2byte EC_WORD_HUH_QUES
+ .2byte EC_WORD_I
+ .2byte EC_WORD_SURRENDER
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_YOUR
+ .2byte EC_MOVE(STRENGTH)
.4byte gSlateportBattleTentTrainerMons_Kirsten
@ 20
.4byte TRAINER_CLASS_YOUNGSTER
.string "KURTIS$", 8
@ pre-battle speech
- ec_word SORRY
- ec_word YOU_RE
- ec_word GOING
- ec_word TO
- ec_word GET
- ec_move2 BEAT_UP
+ .2byte EC_WORD_SORRY
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_GOING
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_GET
+ .2byte EC_MOVE2(BEAT_UP)
@ win speech
- ec_word I
- ec_word SAID
- ec_word WE
- ec_word WOULD
- ec_move2 POUND
- ec_word YOU
+ .2byte EC_WORD_I
+ .2byte EC_WORD_SAID
+ .2byte EC_WORD_WE
+ .2byte EC_WORD_WOULD
+ .2byte EC_MOVE2(POUND)
+ .2byte EC_WORD_YOU
@ loss speech
- ec_word HOW
- ec_word DID
- ec_word I
- ec_word GET
- ec_move2 BEAT_UP
- ec_word QUES
+ .2byte EC_WORD_HOW
+ .2byte EC_WORD_DID
+ .2byte EC_WORD_I
+ .2byte EC_WORD_GET
+ .2byte EC_MOVE2(BEAT_UP)
+ .2byte EC_WORD_QUES
.4byte gSlateportBattleTentTrainerMons_Kurtis
@ 21
.4byte TRAINER_CLASS_FISHERMAN
.string "STEFAN$", 8
@ pre-battle speech
- ec_word I
- ec_word ONLY
- ec_word WANT
- ec_word CUTE
- ec_word POKEMON
+ .2byte EC_WORD_I
+ .2byte EC_WORD_ONLY
+ .2byte EC_WORD_WANT
+ .2byte EC_WORD_CUTE
+ .2byte EC_WORD_POKEMON
.2byte -1
@ win speech
- ec_word WHAT
- ec_word IS
- ec_word IT
- ec_word TO
- ec_word YOU
- ec_word QUES
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_IT
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_QUES
@ loss speech
- ec_word YOU_RE
- ec_word KIND
- ec_word OF
- ec_word AWESOME
- ec_word ELLIPSIS
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_KIND
+ .2byte EC_WORD_OF
+ .2byte EC_WORD_AWESOME
+ .2byte EC_WORD_ELLIPSIS
.2byte -1
.4byte gSlateportBattleTentTrainerMons_Stefan
@@ -576,51 +576,51 @@ gSlateportBattleTentTrainers:: @ 85DDA14
.4byte TRAINER_CLASS_BIRD_KEEPER
.string "AVERY$", 8
@ pre-battle speech
- ec_word TOYS
- ec_word EXCL
- ec_word I
- ec_word NEED
- ec_word MORE
- ec_word TOYS
+ .2byte EC_WORD_TOYS
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_I
+ .2byte EC_WORD_NEED
+ .2byte EC_WORD_MORE
+ .2byte EC_WORD_TOYS
@ win speech
- ec_word I
- ec_word NEED
- ec_word SOME
- ec_word EASY
- ec_word MONEY
- ec_word FAST
+ .2byte EC_WORD_I
+ .2byte EC_WORD_NEED
+ .2byte EC_WORD_SOME
+ .2byte EC_WORD_EASY
+ .2byte EC_WORD_MONEY
+ .2byte EC_WORD_FAST
@ loss speech
- ec_word I
- ec_word NEED
- ec_word TO
- ec_word WORK
- ec_word FOR
- ec_word MONEY
+ .2byte EC_WORD_I
+ .2byte EC_WORD_NEED
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_WORK
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_MONEY
.4byte gSlateportBattleTentTrainerMons_Avery
@ 23
.4byte TRAINER_CLASS_NINJA_BOY
.string "DWANE$", 8
@ pre-battle speech
- ec_word MMM
- ec_word TASTY
- ec_word ELLIPSIS
- ec_word WONDER
- ec_word WHAT
- ec_word QUES
+ .2byte EC_WORD_MMM
+ .2byte EC_WORD_TASTY
+ .2byte EC_WORD_ELLIPSIS
+ .2byte EC_WORD_WONDER
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_QUES
@ win speech
- ec_word MMM
- ec_word MMM
- ec_word ELLIPSIS
- ec_word YOU
- ec_word DON_T
- ec_word KNOW
+ .2byte EC_WORD_MMM
+ .2byte EC_WORD_MMM
+ .2byte EC_WORD_ELLIPSIS
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_KNOW
@ loss speech
- ec_word MMM
- ec_word MMM
- ec_word ELLIPSIS
- ec_word OH_YEAH
- ec_word THIS_IS_IT_EXCL
+ .2byte EC_WORD_MMM
+ .2byte EC_WORD_MMM
+ .2byte EC_WORD_ELLIPSIS
+ .2byte EC_WORD_OH_YEAH
+ .2byte EC_WORD_THIS_IS_IT_EXCL
.2byte -1
.4byte gSlateportBattleTentTrainerMons_Dwane
@@ -628,21 +628,21 @@ gSlateportBattleTentTrainers:: @ 85DDA14
.4byte TRAINER_CLASS_PARASOL_LADY
.string "MCKENNA$", 8
@ pre-battle speech
- ec_word I
- ec_word DISLIKE
- ec_word SMALL
- ec_word TALK
- ec_word LET_S
- ec_word GO
+ .2byte EC_WORD_I
+ .2byte EC_WORD_DISLIKE
+ .2byte EC_WORD_SMALL
+ .2byte EC_WORD_TALK
+ .2byte EC_WORD_LET_S
+ .2byte EC_WORD_GO
@ win speech
- ec_word YUP
- ec_word THAT_S
- ec_word THAT
+ .2byte EC_WORD_YUP
+ .2byte EC_WORD_THAT_S
+ .2byte EC_WORD_THAT
.2byte -1
.2byte -1
.2byte -1
@ loss speech
- ec_word KTHX_BYE
+ .2byte EC_WORD_KTHX_BYE
.2byte -1
.2byte -1
.2byte -1
@@ -654,51 +654,51 @@ gSlateportBattleTentTrainers:: @ 85DDA14
.4byte TRAINER_CLASS_SWIMMER_F
.string "CAMRYN$", 8
@ pre-battle speech
- ec_word MR
- ec_word JUDGE
- ec_word YOU
- ec_word HAVE
- ec_word OUR
- ec_word TRUST
+ .2byte EC_WORD_MR
+ .2byte EC_WORD_JUDGE
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_OUR
+ .2byte EC_WORD_TRUST
@ win speech
- ec_word YES_SIR_EXCL
- ec_word WE_RE
- ec_word NO_1
- ec_word IN
- ec_word THIS
- ec_word CONTEST
+ .2byte EC_WORD_YES_SIR_EXCL
+ .2byte EC_WORD_WE_RE
+ .2byte EC_WORD_NO_1
+ .2byte EC_WORD_IN
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_CONTEST
@ loss speech
- ec_word I
- ec_word WON_T
- ec_word GIVE_UP
- ec_word MY
- ec_word IDOL
- ec_word DREAM
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WON_T
+ .2byte EC_WORD_GIVE_UP
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_IDOL
+ .2byte EC_WORD_DREAM
.4byte gSlateportBattleTentTrainerMons_Camryn
@ 26
.4byte TRAINER_CLASS_PICNICKER
.string "NATASHA$", 8
@ pre-battle speech
- ec_word COME_OVER
- ec_word TO
- ec_word MY
- ec_word PLACE
- ec_word OK_QUES
+ .2byte EC_WORD_COME_OVER
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_PLACE
+ .2byte EC_WORD_OK_QUES
.2byte -1
@ win speech
- ec_word COME_ON
- ec_word OVER
- ec_word IT
- ec_word WILL
- ec_word BE
- ec_word GREAT
+ .2byte EC_WORD_COME_ON
+ .2byte EC_WORD_OVER
+ .2byte EC_WORD_IT
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_BE
+ .2byte EC_WORD_GREAT
@ loss speech
- ec_word AWW
- ec_word WON_T
- ec_word YOU
- ec_word COME_OVER
- ec_word QUES
+ .2byte EC_WORD_AWW
+ .2byte EC_WORD_WON_T
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_COME_OVER
+ .2byte EC_WORD_QUES
.2byte -1
.4byte gSlateportBattleTentTrainerMons_Natasha
@@ -706,76 +706,76 @@ gSlateportBattleTentTrainers:: @ 85DDA14
.4byte TRAINER_CLASS_SAILOR
.string "AUSTYN$", 8
@ pre-battle speech
- ec_word I
- ec_word DON_T
- ec_word CARE
- ec_word HOW
- ec_word WE
- ec_word MATCH_UP
+ .2byte EC_WORD_I
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_CARE
+ .2byte EC_WORD_HOW
+ .2byte EC_WORD_WE
+ .2byte EC_WORD_MATCH_UP
@ win speech
- ec_word HAH
- ec_word BACK
- ec_word TO
- ec_word SCHOOL
- ec_word FOR
- ec_word YOU
+ .2byte EC_WORD_HAH
+ .2byte EC_WORD_BACK
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_SCHOOL
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_YOU
@ loss speech
- ec_word I
- ec_word NEED
- ec_word TO
- ec_word STUDY
- ec_word MY
- ec_word LESSONS
+ .2byte EC_WORD_I
+ .2byte EC_WORD_NEED
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_STUDY
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_LESSONS
.4byte gSlateportBattleTentTrainerMons_Austyn
@ 28
.4byte TRAINER_CLASS_COLLECTOR
.string "DONOVAN$", 8
@ pre-battle speech
- ec_word OH
- ec_word I_AM
- ec_word FEELING
- ec_word SLIMY
- ec_word ALL
- ec_word OVER
+ .2byte EC_WORD_OH
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_FEELING
+ .2byte EC_WORD_SLIMY
+ .2byte EC_WORD_ALL
+ .2byte EC_WORD_OVER
@ win speech
- ec_word YOU_RE
- ec_word GOING
- ec_word DOWN
- ec_word THE
- ec_move2 MEGA_DRAIN
- ec_word HAHAHA
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_GOING
+ .2byte EC_WORD_DOWN
+ .2byte EC_WORD_THE
+ .2byte EC_MOVE2(MEGA_DRAIN)
+ .2byte EC_WORD_HAHAHA
@ loss speech
- ec_word I_AM
- ec_word NATURALLY
- ec_word SLIMY
- ec_word THAT_S
- ec_word WHAT
- ec_word I_AM
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_NATURALLY
+ .2byte EC_WORD_SLIMY
+ .2byte EC_WORD_THAT_S
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_I_AM
.4byte gSlateportBattleTentTrainerMons_Donovan
@ 29
.4byte TRAINER_CLASS_LASS
.string "TAMIA$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word ANGRY
- ec_word WITH
- ec_word MY
- ec_word FATHER
- ec_word ELLIPSIS
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_ANGRY
+ .2byte EC_WORD_WITH
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_FATHER
+ .2byte EC_WORD_ELLIPSIS
@ win speech
- ec_word I
- ec_word REALLY
- ec_word DISLIKE
- ec_word MY
- ec_word FATHER
- ec_word EXCL
+ .2byte EC_WORD_I
+ .2byte EC_WORD_REALLY
+ .2byte EC_WORD_DISLIKE
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_FATHER
+ .2byte EC_WORD_EXCL
@ loss speech
- ec_word I
- ec_word JUST
- ec_word SO
- ec_word ADORE
- ec_word MY
- ec_word FATHER
+ .2byte EC_WORD_I
+ .2byte EC_WORD_JUST
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_ADORE
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_FATHER
.4byte gSlateportBattleTentTrainerMons_Tamia
diff --git a/data/battle_frontier/verdanturf_battle_tent_trainers.inc b/data/battle_frontier/verdanturf_battle_tent_trainers.inc
index af9a03910..aa028c600 100644
--- a/data/battle_frontier/verdanturf_battle_tent_trainers.inc
+++ b/data/battle_frontier/verdanturf_battle_tent_trainers.inc
@@ -4,413 +4,413 @@ gVerdanturfBattleTentTrainers:: @ 85DE610
.4byte TRAINER_CLASS_AROMA_LADY
.string "BRENNA$", 8
@ pre-battle speech
- ec_word NO
- ec_word DAYS
- ec_word GO
- ec_word WITHOUT
- ec_word MY
- ec_move1 FAKE_TEARS
+ .2byte EC_WORD_NO
+ .2byte EC_WORD_DAYS
+ .2byte EC_WORD_GO
+ .2byte EC_WORD_WITHOUT
+ .2byte EC_WORD_MY
+ .2byte EC_MOVE(FAKE_TEARS)
@ win speech
- ec_word OH
- ec_word THAT_WAS
- ec_word SO
- ec_word REFRESHING
- ec_word EXCL
+ .2byte EC_WORD_OH
+ .2byte EC_WORD_THAT_WAS
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_REFRESHING
+ .2byte EC_WORD_EXCL
.2byte -1
@ loss speech
- ec_word ALL
- ec_word I
- ec_word EVER
- ec_word GET
- ec_word IS
- ec_move1 TORMENT
+ .2byte EC_WORD_ALL
+ .2byte EC_WORD_I
+ .2byte EC_WORD_EVER
+ .2byte EC_WORD_GET
+ .2byte EC_WORD_IS
+ .2byte EC_MOVE(TORMENT)
.4byte gVerdanturfBattleTentTrainerMons_Brenna
@ 1
.4byte TRAINER_CLASS_RUIN_MANIAC
.string "DILAN$", 8
@ pre-battle speech
- ec_word YOU
- ec_word DON_T
- ec_word KNOW
- ec_word HOW
- ec_word BORED
- ec_word I_AM
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_KNOW
+ .2byte EC_WORD_HOW
+ .2byte EC_WORD_BORED
+ .2byte EC_WORD_I_AM
@ win speech
- ec_word LOSING
- ec_word ISN_T
- ec_word EXCITING
- ec_word AT
- ec_word ALL
- ec_word ELLIPSIS
+ .2byte EC_WORD_LOSING
+ .2byte EC_WORD_ISN_T
+ .2byte EC_WORD_EXCITING
+ .2byte EC_WORD_AT
+ .2byte EC_WORD_ALL
+ .2byte EC_WORD_ELLIPSIS
@ loss speech
- ec_word EXCITING
- ec_word EXCL_EXCL
- ec_word BYE_BYE
- ec_word TO
- ec_word BEING
- ec_word BORED
+ .2byte EC_WORD_EXCITING
+ .2byte EC_WORD_EXCL_EXCL
+ .2byte EC_WORD_BYE_BYE
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_BEING
+ .2byte EC_WORD_BORED
.4byte gVerdanturfBattleTentTrainerMons_Dilan
@ 2
.4byte TRAINER_CLASS_TUBER_1
.string "ELIANA$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word GOING
- ec_word ON
- ec_word A
- ec_word VACATION
- ec_word SOON
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_GOING
+ .2byte EC_WORD_ON
+ .2byte EC_WORD_A
+ .2byte EC_WORD_VACATION
+ .2byte EC_WORD_SOON
@ win speech
- ec_word I
- ec_word NEED
- ec_word TO
- ec_word GET
- ec_word SOME
- ec_word MONEY
+ .2byte EC_WORD_I
+ .2byte EC_WORD_NEED
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_GET
+ .2byte EC_WORD_SOME
+ .2byte EC_WORD_MONEY
@ loss speech
- ec_word NO
- ec_word SLEEP
- ec_word UNTIL
- ec_word I
- ec_word GET
- ec_word HOME
+ .2byte EC_WORD_NO
+ .2byte EC_WORD_SLEEP
+ .2byte EC_WORD_UNTIL
+ .2byte EC_WORD_I
+ .2byte EC_WORD_GET
+ .2byte EC_WORD_HOME
.4byte gVerdanturfBattleTentTrainerMons_Eliana
@ 3
.4byte TRAINER_CLASS_TUBER_2
.string "MARKUS$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word SMART
- ec_word EXCL
- ec_word IF_I_LOSE
- ec_word I
- ec_move1 SELF_DESTRUCT
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_SMART
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_IF_I_LOSE
+ .2byte EC_WORD_I
+ .2byte EC_MOVE(SELF_DESTRUCT)
@ win speech
- ec_word IT_S
- ec_word A
- ec_word NON_STOP
- ec_move2 EXPLOSION
- ec_word OF
- ec_word JOY
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_A
+ .2byte EC_WORD_NON_STOP
+ .2byte EC_MOVE2(EXPLOSION)
+ .2byte EC_WORD_OF
+ .2byte EC_WORD_JOY
@ loss speech
- ec_word I_VE
- ec_word LOST
- ec_word ELLIPSIS
- ec_word TIME
- ec_word TO
- ec_move1 SELF_DESTRUCT
+ .2byte EC_WORD_I_VE
+ .2byte EC_WORD_LOST
+ .2byte EC_WORD_ELLIPSIS
+ .2byte EC_WORD_TIME
+ .2byte EC_WORD_TO
+ .2byte EC_MOVE(SELF_DESTRUCT)
.4byte gVerdanturfBattleTentTrainerMons_Markus
@ 4
.4byte TRAINER_CLASS_LADY
.string "CAITLYN$", 8
@ pre-battle speech
- ec_word I_AM
- ec_word BORED
- ec_word OF
- ec_word BEING
- ec_word AN
- ec_word IDOL
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_BORED
+ .2byte EC_WORD_OF
+ .2byte EC_WORD_BEING
+ .2byte EC_WORD_AN
+ .2byte EC_WORD_IDOL
@ win speech
- ec_word A
- ec_word BATTLE
- ec_word IS
- ec_word BEST
- ec_word FOR
- ec_word HAPPINESS
+ .2byte EC_WORD_A
+ .2byte EC_WORD_BATTLE
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_BEST
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_HAPPINESS
@ loss speech
- ec_word LOSING
- ec_word DOESN_T
- ec_word BUG
- ec_word ME
- ec_word AT
- ec_word ALL
+ .2byte EC_WORD_LOSING
+ .2byte EC_WORD_DOESN_T
+ .2byte EC_WORD_BUG
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_AT
+ .2byte EC_WORD_ALL
.4byte gVerdanturfBattleTentTrainerMons_Caitlyn
@ 5
.4byte TRAINER_CLASS_BEAUTY
.string "DESIREE$", 8
@ pre-battle speech
- ec_word DOESN_T
- ec_word MY
- ec_word BEAUTY
- ec_move1 ASTONISH
- ec_word YOU
- ec_word QUES
+ .2byte EC_WORD_DOESN_T
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_BEAUTY
+ .2byte EC_MOVE(ASTONISH)
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_QUES
@ win speech
- ec_word DID
- ec_word I
- ec_word INTIMIDATE
- ec_word YOU
- ec_word QUES
+ .2byte EC_WORD_DID
+ .2byte EC_WORD_I
+ .2byte EC_WORD_INTIMIDATE
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_QUES
.2byte -1
@ loss speech
- ec_word MY
- ec_word BEAUTY
- ec_word DID
- ec_word NOTHING
- ec_word FOR
- ec_word YOU
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_BEAUTY
+ .2byte EC_WORD_DID
+ .2byte EC_WORD_NOTHING
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_YOU
.4byte gVerdanturfBattleTentTrainerMons_Desiree
@ 6
.4byte TRAINER_CLASS_RICH_BOY
.string "RONALD$", 8
@ pre-battle speech
- ec_word COME_ON
- ec_word I
- ec_word WILL
- ec_word BATTLE
- ec_word SERIOUSLY
+ .2byte EC_WORD_COME_ON
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_BATTLE
+ .2byte EC_WORD_SERIOUSLY
.2byte -1
@ win speech
- ec_word GIVE_UP
- ec_word QUES
+ .2byte EC_WORD_GIVE_UP
+ .2byte EC_WORD_QUES
.2byte -1
- ec_word THAT_S
- ec_word REALLY
- ec_word WEAK
+ .2byte EC_WORD_THAT_S
+ .2byte EC_WORD_REALLY
+ .2byte EC_WORD_WEAK
@ loss speech
- ec_word I
- ec_word NEED
- ec_word TO
- ec_word DO
- ec_word A
- ec_move2 BATON_PASS
+ .2byte EC_WORD_I
+ .2byte EC_WORD_NEED
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_DO
+ .2byte EC_WORD_A
+ .2byte EC_MOVE2(BATON_PASS)
.4byte gVerdanturfBattleTentTrainerMons_Ronald
@ 7
.4byte TRAINER_CLASS_POKEMANIAC
.string "ASHTEN$", 8
@ pre-battle speech
- ec_word OH_YEAH
- ec_word ANOTHER
- ec_word EXCITING
- ec_word BATTLE
- ec_word EXCL
+ .2byte EC_WORD_OH_YEAH
+ .2byte EC_WORD_ANOTHER
+ .2byte EC_WORD_EXCITING
+ .2byte EC_WORD_BATTLE
+ .2byte EC_WORD_EXCL
.2byte -1
@ win speech
- ec_word YOUR
- ec_word POKEMON
- ec_word ARE
- ec_word WIMPY
- ec_word AND
- ec_word BORING
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_ARE
+ .2byte EC_WORD_WIMPY
+ .2byte EC_WORD_AND
+ .2byte EC_WORD_BORING
@ loss speech
- ec_word THAT_WAS
- ec_word AN
- ec_word EXCITING
- ec_word LOSS
- ec_word WOW
- ec_word EXCL
+ .2byte EC_WORD_THAT_WAS
+ .2byte EC_WORD_AN
+ .2byte EC_WORD_EXCITING
+ .2byte EC_WORD_LOSS
+ .2byte EC_WORD_WOW
+ .2byte EC_WORD_EXCL
.4byte gVerdanturfBattleTentTrainerMons_Ashten
@ 8
.4byte TRAINER_CLASS_SWIMMER_M
.string "GERARD$", 8
@ pre-battle speech
- ec_word LOOK
- ec_word AT
- ec_word MY
- ec_word SUPER
- ec_move2 TEETER_DANCE
- ec_word EXCL
+ .2byte EC_WORD_LOOK
+ .2byte EC_WORD_AT
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_SUPER
+ .2byte EC_MOVE2(TEETER_DANCE)
+ .2byte EC_WORD_EXCL
@ win speech
- ec_word THAT_WAS
- ec_word HARD
- ec_word ELLIPSIS
- ec_word AM
- ec_word I
- ec_word OK_QUES
+ .2byte EC_WORD_THAT_WAS
+ .2byte EC_WORD_HARD
+ .2byte EC_WORD_ELLIPSIS
+ .2byte EC_WORD_AM
+ .2byte EC_WORD_I
+ .2byte EC_WORD_OK_QUES
@ loss speech
- ec_word I
- ec_word WON_T
- ec_word FORGIVE
- ec_word YOU
- ec_word FOR
- ec_word THAT
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WON_T
+ .2byte EC_WORD_FORGIVE
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_THAT
.4byte gVerdanturfBattleTentTrainerMons_Gerard
@ 9
.4byte TRAINER_CLASS_CAMPER
.string "BRADLY$", 8
@ pre-battle speech
- ec_word IT_S
- ec_word LONESOME
- ec_word BUT
- ec_word I
- ec_word VACATION
- ec_word ALONE
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_LONESOME
+ .2byte EC_WORD_BUT
+ .2byte EC_WORD_I
+ .2byte EC_WORD_VACATION
+ .2byte EC_WORD_ALONE
@ win speech
- ec_word I
- ec_word WILL
- ec_move1 WITHDRAW
- ec_word INSIDE
- ec_word MY
- ec_word SHELL_ARMOR
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WILL
+ .2byte EC_MOVE(WITHDRAW)
+ .2byte EC_WORD_INSIDE
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_SHELL_ARMOR
@ loss speech
- ec_word OH
- ec_word ELLIPSIS
+ .2byte EC_WORD_OH
+ .2byte EC_WORD_ELLIPSIS
.2byte -1
- ec_word ALONE
- ec_word AS
- ec_word ALWAYS
+ .2byte EC_WORD_ALONE
+ .2byte EC_WORD_AS
+ .2byte EC_WORD_ALWAYS
.4byte gVerdanturfBattleTentTrainerMons_Bradly
@ 10
.4byte TRAINER_CLASS_BUG_MANIAC
.string "DENNIS$", 8
@ pre-battle speech
- ec_word ARE
- ec_word YOU
- ec_word REALLY
- ec_word STRONG
- ec_word QUES
+ .2byte EC_WORD_ARE
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_REALLY
+ .2byte EC_WORD_STRONG
+ .2byte EC_WORD_QUES
.2byte -1
@ win speech
- ec_word WAHAHAHA
- ec_word EXCL
+ .2byte EC_WORD_WAHAHAHA
+ .2byte EC_WORD_EXCL
.2byte -1
- ec_word WAHAHAHA
- ec_word EXCL_EXCL
+ .2byte EC_WORD_WAHAHAHA
+ .2byte EC_WORD_EXCL_EXCL
.2byte -1
@ loss speech
- ec_word NICE
- ec_word GOING
- ec_word EXCL
- ec_word I
- ec_word WAS
- ec_word CHILD_S_PLAY
+ .2byte EC_WORD_NICE
+ .2byte EC_WORD_GOING
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WAS
+ .2byte EC_WORD_CHILD_S_PLAY
.4byte gVerdanturfBattleTentTrainerMons_Dennis
@ 11
.4byte TRAINER_CLASS_GENTLEMAN
.string "PRESTIN$", 8
@ pre-battle speech
- ec_word THIS
- ec_word IS
- ec_word A
- ec_move1 NIGHTMARE
- ec_word FOR
- ec_word YOU
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_A
+ .2byte EC_MOVE(NIGHTMARE)
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_YOU
@ win speech
- ec_word FORGIVE
- ec_word ME
- ec_word ELLIPSIS
- ec_word IT_S
- ec_word A
- ec_word DREAM
+ .2byte EC_WORD_FORGIVE
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_ELLIPSIS
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_A
+ .2byte EC_WORD_DREAM
@ loss speech
- ec_word I
- ec_word WANT
- ec_word TO
- ec_word WAKE_UP
- ec_word FROM
- ec_word THIS
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WANT
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_WAKE_UP
+ .2byte EC_WORD_FROM
+ .2byte EC_WORD_THIS
.4byte gVerdanturfBattleTentTrainerMons_Prestin
@ 12
.4byte TRAINER_CLASS_GUITARIST
.string "ERNESTO$", 8
@ pre-battle speech
- ec_word THIS
- ec_word PARTY
- ec_word GOES
- ec_word ON
- ec_word FOREVER
- ec_word EXCL
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_PARTY
+ .2byte EC_WORD_GOES
+ .2byte EC_WORD_ON
+ .2byte EC_WORD_FOREVER
+ .2byte EC_WORD_EXCL
@ win speech
- ec_word THE
- ec_word MUSIC
- ec_word PLAYS
- ec_word ON
- ec_word WITHOUT
- ec_word END
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_MUSIC
+ .2byte EC_WORD_PLAYS
+ .2byte EC_WORD_ON
+ .2byte EC_WORD_WITHOUT
+ .2byte EC_WORD_END
@ loss speech
- ec_word NO
- ec_word EXCL
- ec_word THE
- ec_word MUSIC
- ec_word CAN_T
- ec_word STOP
+ .2byte EC_WORD_NO
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_MUSIC
+ .2byte EC_WORD_CAN_T
+ .2byte EC_WORD_STOP
.4byte gVerdanturfBattleTentTrainerMons_Ernesto
@ 13
.4byte TRAINER_CLASS_SCHOOL_KID_2
.string "NALA$", 8
@ pre-battle speech
- ec_word I
- ec_word WANT
- ec_word THE
- ec_word WORLD
- ec_word MOVIE
- ec_word COLLECTION
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WANT
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_WORLD
+ .2byte EC_WORD_MOVIE
+ .2byte EC_WORD_COLLECTION
@ win speech
- ec_word I
- ec_word DON_T
- ec_word LIKE
- ec_word RADIO
- ec_word VERY
- ec_word MUCH
+ .2byte EC_WORD_I
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_RADIO
+ .2byte EC_WORD_VERY
+ .2byte EC_WORD_MUCH
@ loss speech
- ec_word I
- ec_word REFUSE
- ec_word TO
- ec_word BELIEVE
- ec_word THIS
- ec_word EXCL
+ .2byte EC_WORD_I
+ .2byte EC_WORD_REFUSE
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_BELIEVE
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_EXCL
.4byte gVerdanturfBattleTentTrainerMons_Nala
@ 14
.4byte TRAINER_CLASS_COOLTRAINER_1
.string "DARNELL$", 8
@ pre-battle speech
- ec_word I
- ec_word WILL
- ec_word GO_EASY
- ec_word ON
- ec_word YOU
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_GO_EASY
+ .2byte EC_WORD_ON
+ .2byte EC_WORD_YOU
.2byte -1
@ win speech
- ec_word YOUR
- ec_move2 FRUSTRATION
- ec_word SHOULD
- ec_word BE
- ec_word HIDDEN
- ec_word AWAY
+ .2byte EC_WORD_YOUR
+ .2byte EC_MOVE2(FRUSTRATION)
+ .2byte EC_WORD_SHOULD
+ .2byte EC_WORD_BE
+ .2byte EC_WORD_HIDDEN
+ .2byte EC_WORD_AWAY
@ loss speech
- ec_word YOU_RE
- ec_word TOO
- ec_word MUCH
- ec_word TO
- ec_word TAKE
- ec_word ELLIPSIS
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_TOO
+ .2byte EC_WORD_MUCH
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_TAKE
+ .2byte EC_WORD_ELLIPSIS
.4byte gVerdanturfBattleTentTrainerMons_Darnell
@ 15
.4byte TRAINER_CLASS_COOLTRAINER_2
.string "ASHLYN$", 8
@ pre-battle speech
- ec_word I
- ec_word LOOK
- ec_word TOUGH
- ec_word DO
- ec_word I
- ec_word QUES
+ .2byte EC_WORD_I
+ .2byte EC_WORD_LOOK
+ .2byte EC_WORD_TOUGH
+ .2byte EC_WORD_DO
+ .2byte EC_WORD_I
+ .2byte EC_WORD_QUES
@ win speech
- ec_word I_AM
- ec_word NOT
- ec_word OVER
- ec_word YOUR
- ec_move2 TAUNT
- ec_word YET
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_OVER
+ .2byte EC_WORD_YOUR
+ .2byte EC_MOVE2(TAUNT)
+ .2byte EC_WORD_YET
@ loss speech
- ec_word YOU_RE
- ec_word MEAN
- ec_word EXCL_EXCL
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_MEAN
+ .2byte EC_WORD_EXCL_EXCL
.2byte -1
.2byte -1
.2byte -1
@@ -420,48 +420,48 @@ gVerdanturfBattleTentTrainers:: @ 85DE610
.4byte TRAINER_CLASS_POKEFAN_1
.string "ADDISON$", 8
@ pre-battle speech
- ec_word YES
- ec_word EXCL
+ .2byte EC_WORD_YES
+ .2byte EC_WORD_EXCL
.2byte -1
- ec_word MY
- ec_word POKEMON
- ec_word EXCL
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_EXCL
@ win speech
- ec_word WELL
- ec_word WASN_T
- ec_word THAT
- ec_word EASY
- ec_word QUES
+ .2byte EC_WORD_WELL
+ .2byte EC_WORD_WASN_T
+ .2byte EC_WORD_THAT
+ .2byte EC_WORD_EASY
+ .2byte EC_WORD_QUES
.2byte -1
@ loss speech
- ec_word WAAAH
- ec_word EXCL
+ .2byte EC_WORD_WAAAH
+ .2byte EC_WORD_EXCL
.2byte -1
- ec_word BUT
- ec_word WHY
- ec_word QUES
+ .2byte EC_WORD_BUT
+ .2byte EC_WORD_WHY
+ .2byte EC_WORD_QUES
.4byte gVerdanturfBattleTentTrainerMons_Addison
@ 17
.4byte TRAINER_CLASS_POKEFAN_2
.string "JUSTINE$", 8
@ pre-battle speech
- ec_word YES
- ec_word EXCL
+ .2byte EC_WORD_YES
+ .2byte EC_WORD_EXCL
.2byte -1
- ec_word COME_ON
- ec_word I_AM
- ec_word READY
+ .2byte EC_WORD_COME_ON
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_READY
@ win speech
- ec_word YOU_RE
- ec_word JUST
- ec_word NOT
- ec_word GOOD
- ec_word ENOUGH
- ec_word EXCL
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_JUST
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_GOOD
+ .2byte EC_WORD_ENOUGH
+ .2byte EC_WORD_EXCL
@ loss speech
- ec_word WOWEE
- ec_word EXCL_EXCL
+ .2byte EC_WORD_WOWEE
+ .2byte EC_WORD_EXCL_EXCL
.2byte -1
.2byte -1
.2byte -1
@@ -472,310 +472,310 @@ gVerdanturfBattleTentTrainers:: @ 85DE610
.4byte TRAINER_CLASS_EXPERT_1
.string "TYSON$", 8
@ pre-battle speech
- ec_word YOU_RE
- ec_word GOING
- ec_word TO
- ec_word PRESSURE
- ec_word ME
- ec_word QUES
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_GOING
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_PRESSURE
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_QUES
@ win speech
- ec_word WHAT
- ec_word QUES
- ec_word YOU_RE
- ec_word MUCH
- ec_word TOO_WEAK
- ec_word EXCL
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_QUES
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_MUCH
+ .2byte EC_WORD_TOO_WEAK
+ .2byte EC_WORD_EXCL
@ loss speech
- ec_word THIS
- ec_word DOESN_T
- ec_word MAKE
- ec_word ME
- ec_word HAPPY
- ec_word EXCL
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_DOESN_T
+ .2byte EC_WORD_MAKE
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_HAPPY
+ .2byte EC_WORD_EXCL
.4byte gVerdanturfBattleTentTrainerMons_Tyson
@ 19
.4byte TRAINER_CLASS_EXPERT_2
.string "LAILA$", 8
@ pre-battle speech
- ec_word A
- ec_move2 STRUGGLE
- ec_word ISN_T
- ec_word VERY
- ec_word COOL
+ .2byte EC_WORD_A
+ .2byte EC_MOVE2(STRUGGLE)
+ .2byte EC_WORD_ISN_T
+ .2byte EC_WORD_VERY
+ .2byte EC_WORD_COOL
.2byte -1
@ win speech
- ec_word NOPE
- ec_word NOT_VERY
- ec_word COOL
- ec_word AT
- ec_word ALL
- ec_word EXCL
+ .2byte EC_WORD_NOPE
+ .2byte EC_WORD_NOT_VERY
+ .2byte EC_WORD_COOL
+ .2byte EC_WORD_AT
+ .2byte EC_WORD_ALL
+ .2byte EC_WORD_EXCL
@ loss speech
- ec_word YOU_RE
- ec_word NOT
- ec_word COOL
- ec_word BUT
- ec_word YOU
- ec_word WON
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_COOL
+ .2byte EC_WORD_BUT
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_WON
.4byte gVerdanturfBattleTentTrainerMons_Laila
@ 20
.4byte TRAINER_CLASS_YOUNGSTER
.string "WAREN$", 8
@ pre-battle speech
- ec_word DANGER
- ec_word EXCL
+ .2byte EC_WORD_DANGER
+ .2byte EC_WORD_EXCL
.2byte -1
- ec_word I
- ec_word SENSE
- ec_word DANGER
+ .2byte EC_WORD_I
+ .2byte EC_WORD_SENSE
+ .2byte EC_WORD_DANGER
@ win speech
- ec_word DID
- ec_word YOU
- ec_word BELIEVE
- ec_word MY
- ec_word LIE
- ec_word QUES_EXCL
+ .2byte EC_WORD_DID
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_BELIEVE
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_LIE
+ .2byte EC_WORD_QUES_EXCL
@ loss speech
- ec_word I
- ec_word REALLY
- ec_word DID
- ec_word SENSE
- ec_word DANGER
- ec_word ELLIPSIS
+ .2byte EC_WORD_I
+ .2byte EC_WORD_REALLY
+ .2byte EC_WORD_DID
+ .2byte EC_WORD_SENSE
+ .2byte EC_WORD_DANGER
+ .2byte EC_WORD_ELLIPSIS
.4byte gVerdanturfBattleTentTrainerMons_Waren
@ 21
.4byte TRAINER_CLASS_FISHERMAN
.string "TOBIAS$", 8
@ pre-battle speech
- ec_move2 BARRIER
- ec_word EXCL_EXCL
+ .2byte EC_MOVE2(BARRIER)
+ .2byte EC_WORD_EXCL_EXCL
.2byte -1
- ec_word NOW
- ec_word COME_ON
- ec_word EXCL
+ .2byte EC_WORD_NOW
+ .2byte EC_WORD_COME_ON
+ .2byte EC_WORD_EXCL
@ win speech
- ec_word HUH_QUES
- ec_word YOU
- ec_word MEAN
- ec_word I
- ec_word WON
- ec_word QUES
+ .2byte EC_WORD_HUH_QUES
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_MEAN
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WON
+ .2byte EC_WORD_QUES
@ loss speech
- ec_word I
- ec_word SHOULD
- ec_word KNOW
- ec_word THAT
- ec_word IT_S
- ec_word HOPELESS
+ .2byte EC_WORD_I
+ .2byte EC_WORD_SHOULD
+ .2byte EC_WORD_KNOW
+ .2byte EC_WORD_THAT
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_HOPELESS
.4byte gVerdanturfBattleTentTrainerMons_Tobias
@ 22
.4byte TRAINER_CLASS_BIRD_KEEPER
.string "JOSIAH$", 8
@ pre-battle speech
- ec_word I
- ec_word PROMISE
- ec_word TO
- ec_move1 FLY
- ec_word IF_I_LOSE
+ .2byte EC_WORD_I
+ .2byte EC_WORD_PROMISE
+ .2byte EC_WORD_TO
+ .2byte EC_MOVE(FLY)
+ .2byte EC_WORD_IF_I_LOSE
.2byte -1
@ win speech
- ec_word TOO_WEAK
- ec_word ELLIPSIS
+ .2byte EC_WORD_TOO_WEAK
+ .2byte EC_WORD_ELLIPSIS
.2byte -1
- ec_word YOU
- ec_move1 FLY
- ec_word INSTEAD
+ .2byte EC_WORD_YOU
+ .2byte EC_MOVE(FLY)
+ .2byte EC_WORD_INSTEAD
@ loss speech
- ec_word I
- ec_word PROMISE
- ec_word TO
- ec_move1 FLY
- ec_word SOMETIME
- ec_word SOON
+ .2byte EC_WORD_I
+ .2byte EC_WORD_PROMISE
+ .2byte EC_WORD_TO
+ .2byte EC_MOVE(FLY)
+ .2byte EC_WORD_SOMETIME
+ .2byte EC_WORD_SOON
.4byte gVerdanturfBattleTentTrainerMons_Josiah
@ 23
.4byte TRAINER_CLASS_NINJA_BOY
.string "DION$", 8
@ pre-battle speech
- ec_word IT_S
- ec_word TRENDY
- ec_word UM
- ec_word BATTLE
- ec_word SOMETHING
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_TRENDY
+ .2byte EC_WORD_UM
+ .2byte EC_WORD_BATTLE
+ .2byte EC_WORD_SOMETHING
.2byte -1
@ win speech
- ec_word WAS
- ec_word IT
- ec_word ELLIPSIS
- ec_word BATTLE
- ec_word DATE
- ec_word QUES
+ .2byte EC_WORD_WAS
+ .2byte EC_WORD_IT
+ .2byte EC_WORD_ELLIPSIS
+ .2byte EC_WORD_BATTLE
+ .2byte EC_WORD_DATE
+ .2byte EC_WORD_QUES
@ loss speech
- ec_word WAS
- ec_word IT
- ec_word ELLIPSIS
- ec_word BATTLE
- ec_word GOURMET
- ec_word QUES
+ .2byte EC_WORD_WAS
+ .2byte EC_WORD_IT
+ .2byte EC_WORD_ELLIPSIS
+ .2byte EC_WORD_BATTLE
+ .2byte EC_WORD_GOURMET
+ .2byte EC_WORD_QUES
.4byte gVerdanturfBattleTentTrainerMons_Dion
@ 24
.4byte TRAINER_CLASS_PARASOL_LADY
.string "KENZIE$", 8
@ pre-battle speech
- ec_word THE
- ec_move1 MORNING_SUN
- ec_word GIVES
- ec_word ME
- ec_move1 STRENGTH
+ .2byte EC_WORD_THE
+ .2byte EC_MOVE(MORNING_SUN)
+ .2byte EC_WORD_GIVES
+ .2byte EC_WORD_ME
+ .2byte EC_MOVE(STRENGTH)
.2byte -1
@ win speech
- ec_word BUT
- ec_word I
- ec_word LIKE
- ec_move2 MOONLIGHT
- ec_word TOO
+ .2byte EC_WORD_BUT
+ .2byte EC_WORD_I
+ .2byte EC_WORD_LIKE
+ .2byte EC_MOVE2(MOONLIGHT)
+ .2byte EC_WORD_TOO
.2byte -1
@ loss speech
- ec_word YOU_RE
- ec_word LIKE
- ec_word A
- ec_word TERRIBLE
- ec_move1 SANDSTORM
- ec_word ELLIPSIS
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_A
+ .2byte EC_WORD_TERRIBLE
+ .2byte EC_MOVE(SANDSTORM)
+ .2byte EC_WORD_ELLIPSIS
.4byte gVerdanturfBattleTentTrainerMons_Kenzie
@ 25
.4byte TRAINER_CLASS_SWIMMER_F
.string "LILLIAN$", 8
@ pre-battle speech
- ec_word I
- ec_word DO
- ec_word THINGS
- ec_word AT
- ec_word MY
- ec_word OWN_TEMPO
+ .2byte EC_WORD_I
+ .2byte EC_WORD_DO
+ .2byte EC_WORD_THINGS
+ .2byte EC_WORD_AT
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_OWN_TEMPO
@ win speech
- ec_word I
- ec_word WON
- ec_word QUES
- ec_word WHAT
- ec_word A
- ec_word SURPRISE
+ .2byte EC_WORD_I
+ .2byte EC_WORD_WON
+ .2byte EC_WORD_QUES
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_A
+ .2byte EC_WORD_SURPRISE
@ loss speech
- ec_word AWW
- ec_word ELLIPSIS
- ec_word I
- ec_word NEED
- ec_word A
- ec_word NAP
+ .2byte EC_WORD_AWW
+ .2byte EC_WORD_ELLIPSIS
+ .2byte EC_WORD_I
+ .2byte EC_WORD_NEED
+ .2byte EC_WORD_A
+ .2byte EC_WORD_NAP
.4byte gVerdanturfBattleTentTrainerMons_Lillian
@ 26
.4byte TRAINER_CLASS_PICNICKER
.string "LESLEY$", 8
@ pre-battle speech
- ec_word YOU
- ec_word SHOULD
- ec_word NOT
- ec_word BE
- ec_word LOLLING
- ec_word ABOUT
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_SHOULD
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_BE
+ .2byte EC_WORD_LOLLING
+ .2byte EC_WORD_ABOUT
@ win speech
- ec_word YOU
- ec_word SHOULD
- ec_word GET
- ec_word UP
- ec_word EARLIER
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_SHOULD
+ .2byte EC_WORD_GET
+ .2byte EC_WORD_UP
+ .2byte EC_WORD_EARLIER
.2byte -1
@ loss speech
- ec_word THIS
- ec_word SHOULD
- ec_word NOT
- ec_word BE
- ec_word HAPPENING
- ec_word EXCL
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_SHOULD
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_BE
+ .2byte EC_WORD_HAPPENING
+ .2byte EC_WORD_EXCL
.4byte gVerdanturfBattleTentTrainerMons_Lesley
@ 27
.4byte TRAINER_CLASS_SAILOR
.string "MARQUIS$", 8
@ pre-battle speech
- ec_word NONE
- ec_word OF
- ec_word THIS
- ec_word IS
- ec_word MAKING
- ec_word SENSE
+ .2byte EC_WORD_NONE
+ .2byte EC_WORD_OF
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_MAKING
+ .2byte EC_WORD_SENSE
@ win speech
- ec_word SEE
- ec_word QUES
- ec_word THIS
- ec_word JUST
- ec_word ISN_T
- ec_word NORMAL
+ .2byte EC_WORD_SEE
+ .2byte EC_WORD_QUES
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_JUST
+ .2byte EC_WORD_ISN_T
+ .2byte EC_WORD_NORMAL
@ loss speech
- ec_word SHOULD
- ec_word I
- ec_word CAUSE
- ec_word AN
- ec_move1 UPROAR
- ec_word QUES
+ .2byte EC_WORD_SHOULD
+ .2byte EC_WORD_I
+ .2byte EC_WORD_CAUSE
+ .2byte EC_WORD_AN
+ .2byte EC_MOVE(UPROAR)
+ .2byte EC_WORD_QUES
.4byte gVerdanturfBattleTentTrainerMons_Marquis
@ 28
.4byte TRAINER_CLASS_COLLECTOR
.string "FREDDY$", 8
@ pre-battle speech
- ec_word I
- ec_word ADORE
- ec_word THIS
- ec_word CUTE
- ec_word TELEVISION
- ec_word IDOL
+ .2byte EC_WORD_I
+ .2byte EC_WORD_ADORE
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_CUTE
+ .2byte EC_WORD_TELEVISION
+ .2byte EC_WORD_IDOL
@ win speech
- ec_word YOU_RE
- ec_word SO
- ec_word FUNNY
- ec_word WHEN
- ec_word YOU_RE
- ec_word ANGRY
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_SO
+ .2byte EC_WORD_FUNNY
+ .2byte EC_WORD_WHEN
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_ANGRY
@ loss speech
- ec_word LATE
- ec_word NIGHT
- ec_word TELEVISION
- ec_word IS
- ec_word MY
- ec_word LIFE
+ .2byte EC_WORD_LATE
+ .2byte EC_WORD_NIGHT
+ .2byte EC_WORD_TELEVISION
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_LIFE
.4byte gVerdanturfBattleTentTrainerMons_Freddy
@ 29
.4byte TRAINER_CLASS_LASS
.string "CECILIA$", 8
@ pre-battle speech
- ec_word MY
- ec_word FABULOUS
- ec_word CUTENESS
- ec_word IS
- ec_word IN
- ec_word FASHION
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_FABULOUS
+ .2byte EC_WORD_CUTENESS
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_IN
+ .2byte EC_WORD_FASHION
@ win speech
- ec_word YOU_RE
- ec_word NO
- ec_word MATCH
- ec_word FOR
- ec_word MY
- ec_word CUTE_CHARM
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_NO
+ .2byte EC_WORD_MATCH
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_CUTE_CHARM
@ loss speech
- ec_word DON_T
- ec_word YOU
- ec_word HAVE
- ec_word FASHION
- ec_word SENSE
- ec_word QUES
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_FASHION
+ .2byte EC_WORD_SENSE
+ .2byte EC_WORD_QUES
.4byte gVerdanturfBattleTentTrainerMons_Cecilia
diff --git a/data/battle_frontier_2.s b/data/battle_frontier_2.s
index 44c14f520..74abbe788 100644
--- a/data/battle_frontier_2.s
+++ b/data/battle_frontier_2.s
@@ -1,3 +1,5 @@
+#include "constants/moves.h"
+#include "constants/species.h"
.include "asm/macros.inc"
.include "constants/constants.inc"
diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s
index b2dfec5d8..4efa72858 100644
--- a/data/battle_scripts_1.s
+++ b/data/battle_scripts_1.s
@@ -1,586 +1,4593 @@
+#include "constants/abilities.h"
+#include "constants/moves.h"
+#include "constants/songs.h"
.include "asm/macros.inc"
+ .include "asm/macros/battle_script.inc"
.include "constants/constants.inc"
+ .include "constants/battle_constants.inc"
+ .include "constants/battle_script_constants.inc"
+ .include "constants/battle_text.inc"
.section script_data, "aw", %progbits
gBattleScriptsForMoveEffects:: @ 82D86A8
- .incbin "baserom.gba", 0x2d86a8, 0x388
-
-BattleScript_PresentDamageTarget:: @ 82D8A30
- .incbin "baserom.gba", 0x2d8a30, 0x1e
-
-BattleScript_MoveEnd:: @ 82D8A4E
- .incbin "baserom.gba", 0x2d8a4e, 0x12
-
-BattleScript_PauseEffectivenessSoundResultMsgEndMove:: @ 82D8A60
- .incbin "baserom.gba", 0x2d8a60, 0x274
-
-BattleScript_StatUp:: @ 82D8CD4
- .incbin "baserom.gba", 0x2d8cd4, 0x91
-
-BattleScript_StatDown:: @ 82D8D65
- .incbin "baserom.gba", 0x2d8d65, 0x6fd
-
-BattleScript_MoveUsedMustRecharge:: @ 82D9462
- .incbin "baserom.gba", 0x2d9462, 0xa7f
-
-BattleScript_PresentHealTarget:: @ 82D9EE1
- .incbin "baserom.gba", 0x2d9ee1, 0x1a
-
-BattleScript_AlreadyAtFullHp:: @ 82D9EFB
- .incbin "baserom.gba", 0x2d9efb, 0x21
-
-BattleScript_ButItFailed:: @ 82D9F1C
- .incbin "baserom.gba", 0x2d9f1c, 0x88e
-
-BattleScript_FaintAttacker:: @ 82DA7AA
- .incbin "baserom.gba", 0x2da7aa, 0xd
-
-BattleScript_FaintTarget:: @ 82DA7B7
- .incbin "baserom.gba", 0x2da7b7, 0xd
-
-gUnknown_082DA7C4:: @ 82DA7C4
- .incbin "baserom.gba", 0x2da7c4, 0x9
-
-gUnknown_082DA7CD:: @ 82DA7CD
- .incbin "baserom.gba", 0x2da7cd, 0x160
-
-BattleScript_LocalTrainerBattleWon:: @ 82DA92D
- .incbin "baserom.gba", 0x2da92d, 0x3d
-
-BattleScript_PayDayMoneyAndPickUpItems:: @ 82DA96A
- .incbin "baserom.gba", 0x2da96a, 0x3
-
-BattleScript_LocalBattleLost:: @ 82DA96D
- .incbin "baserom.gba", 0x2da96d, 0x9e
-
-gUnknown_082DAA0B:: @ 82DAA0B
- .incbin "baserom.gba", 0x2daa0b, 0x2a
-
-BattleScript_LinkBattleWonOrLost:: @ 82DAA35
- .incbin "baserom.gba", 0x2daa35, 0x52
-
-BattleScript_FrontierTrainerBattleWon:: @ 82DAA87
- .incbin "baserom.gba", 0x2daa87, 0x54
-
-BattleScript_SmokeBallEscape:: @ 82DAADB
- .incbin "baserom.gba", 0x2daadb, 0xe
-
-BattleScript_RanAwayUsingMonAbility:: @ 82DAAE9
- .incbin "baserom.gba", 0x2daae9, 0x7
-
-BattleScript_GotAwaySafely:: @ 82DAAF0
- .incbin "baserom.gba", 0x2daaf0, 0x7
-
-BattleScript_WildMonFled:: @ 82DAAF7
- .incbin "baserom.gba", 0x2daaf7, 0x7
-
-gUnknown_082DAAFE:: @ 82DAAFE
- .incbin "baserom.gba", 0x2daafe, 0x4
-
-BattleScript_PrintFailedToRunString:: @ 82DAB02
- .incbin "baserom.gba", 0x2dab02, 0x9
-
-gUnknown_082DAB0B:: @ 82DAB0B
- .incbin "baserom.gba", 0x2dab0b, 0x6
-
-gUnknown_082DAB11:: @ 82DAB11
- .incbin "baserom.gba", 0x2dab11, 0x4
-
-BattleScript_ActionSwitch:: @ 82DAB15
- .incbin "baserom.gba", 0x2dab15, 0xa4
-
-BattleScript_Pausex20:: @ 82DABB9
- .incbin "baserom.gba", 0x2dabb9, 0x4
-
-BattleScript_LevelUp:: @ 82DABBD
- .incbin "baserom.gba", 0x2dabbd, 0x6f
-
-gUnknown_082DAC2C:: @ 82DAC2C
- .incbin "baserom.gba", 0x2dac2c, 0x1b
-
-gUnknown_082DAC47:: @ 82DAC47
- .incbin "baserom.gba", 0x2dac47, 0x82
-
-gUnknown_082DACC9:: @ 82DACC9
- .incbin "baserom.gba", 0x2dacc9, 0x9
-
-gUnknown_082DACD2:: @ 82DACD2
- .incbin "baserom.gba", 0x2dacd2, 0xe
-
-gUnknown_082DACE0:: @ 82DACE0
- .incbin "baserom.gba", 0x2dace0, 0x7
-
-gUnknown_082DACE7:: @ 82DACE7
- .incbin "baserom.gba", 0x2dace7, 0x13
-
-gUnknown_082DACFA:: @ 82DACFA
- .incbin "baserom.gba", 0x2dacfa, 0x11
-
-gUnknown_082DAD0B:: @ 82DAD0B
- .incbin "baserom.gba", 0x2dad0b, 0xa
-
-BattleScript_LeechSeedTurnDrain:: @ 82DAD15
- .incbin "baserom.gba", 0x2dad15, 0x5c
-
-BattleScript_BideStoringEnergy:: @ 82DAD71
- .incbin "baserom.gba", 0x2dad71, 0xb
-
-BattleScript_BideAttack:: @ 82DAD7C
- .incbin "baserom.gba", 0x2dad7c, 0x48
-
-BattleScript_BideNoEnergyToAttack:: @ 82DADC4
- .incbin "baserom.gba", 0x2dadc4, 0x14
-
-gUnknown_082DADD8:: @ 82DADD8
- .incbin "baserom.gba", 0x2dadd8, 0x2b
-
-BattleScript_MistProtected:: @ 82DAE03
- .incbin "baserom.gba", 0x2dae03, 0xa
-
-BattleScript_RageIsBuilding:: @ 82DAE0D
- .incbin "baserom.gba", 0x2dae0d, 0x7
-
-BattleScript_MoveUsedIsDisabled:: @ 82DAE14
- .incbin "baserom.gba", 0x2dae14, 0xb
-
-gUnknown_082DAE1F:: @ 82DAE1F
- .incbin "baserom.gba", 0x2dae1f, 0x4
-
-BattleScript_DisabledNoMore:: @ 82DAE23
- .incbin "baserom.gba", 0x2dae23, 0x7
-
-gUnknown_082DAE2A:: @ 82DAE2A
- .incbin "baserom.gba", 0x2dae2a, 0xd
-
-BattleScript_EncoredNoMore:: @ 82DAE37
- .incbin "baserom.gba", 0x2dae37, 0x7
-
-BattleScript_DestinyBondTakesLife:: @ 82DAE3E
- .incbin "baserom.gba", 0x2dae3e, 0x1b
-
-gUnknown_082DAE59:: @ 82DAE59
- .incbin "baserom.gba", 0x2dae59, 0x37
-
-gUnknown_082DAE90:: @ 82DAE90
- .incbin "baserom.gba", 0x2dae90, 0x37
-
-gUnknown_082DAEC7:: @ 82DAEC7
- .incbin "baserom.gba", 0x2daec7, 0x3e
-
-gUnknown_082DAF05:: @ 82DAF05
- .incbin "baserom.gba", 0x2daf05, 0x1b
-
-gUnknown_082DAF20:: @ 82DAF20
- .incbin "baserom.gba", 0x2daf20, 0x7
-
-BattleScript_AllStatsUp:: @ 82DAF27
- .incbin "baserom.gba", 0x2daf27, 0x9c
-
-BattleScript_RapidSpinAway:: @ 82DAFC3
- .incbin "baserom.gba", 0x2dafc3, 0x2
-
-BattleScript_WrapFree:: @ 82DAFC5
- .incbin "baserom.gba", 0x2dafc5, 0x11
-
-BattleScript_LeechSeedFree:: @ 82DAFD6
- .incbin "baserom.gba", 0x2dafd6, 0x7
-
-BattleScript_SpikesFree:: @ 82DAFDD
- .incbin "baserom.gba", 0x2dafdd, 0x7
-
-gUnknown_082DAFE4:: @ 82DAFE4
- .incbin "baserom.gba", 0x2dafe4, 0x8e
-
-BattleScript_NoMovesLeft:: @ 82DB072
- .incbin "baserom.gba", 0x2db072, 0x4
-
-gUnknown_082DB076:: @ 82DB076
- .incbin "baserom.gba", 0x2db076, 0x4
-
-BattleScript_NoPPForMove:: @ 82DB07A
- .incbin "baserom.gba", 0x2db07a, 0xf
-
-gUnknown_082DB089:: @ 82DB089
- .incbin "baserom.gba", 0x2db089, 0xf
-
-gUnknown_082DB098:: @ 82DB098
- .incbin "baserom.gba", 0x2db098, 0x8
-
-gUnknown_082DB0A0:: @ 82DB0A0
- .incbin "baserom.gba", 0x2db0a0, 0x4
-
-BattleScript_MoveUsedIsTaunted:: @ 82DB0A4
- .incbin "baserom.gba", 0x2db0a4, 0xb
-
-gUnknown_082DB0AF:: @ 82DB0AF
- .incbin "baserom.gba", 0x2db0af, 0x8
-
-BattleScript_WishComesTrue:: @ 82DB0B7
- .incbin "baserom.gba", 0x2db0b7, 0x37
-
-BattleScript_IngrainTurnHeal:: @ 82DB0EE
- .incbin "baserom.gba", 0x2db0ee, 0x29
-
-BattleScript_AtkDefDown:: @ 82DB117
- .incbin "baserom.gba", 0x2db117, 0x51
-
-BattleScript_KnockedOff:: @ 82DB168
- .incbin "baserom.gba", 0x2db168, 0xe
-
-BattleScript_MoveUsedIsImprisoned:: @ 82DB176
- .incbin "baserom.gba", 0x2db176, 0xb
-
-gUnknown_082DB181:: @ 82DB181
- .incbin "baserom.gba", 0x2db181, 0x4
-
-gUnknown_082DB185:: @ 82DB185
- .incbin "baserom.gba", 0x2db185, 0x8
-
-BattleScript_GrudgeTakesPp:: @ 82DB18D
- .incbin "baserom.gba", 0x2db18d, 0x7
-
-BattleScript_MagicCoatBounce:: @ 82DB194
- .incbin "baserom.gba", 0x2db194, 0x18
-
-BattleScript_SnatchedMove:: @ 82DB1AC
- .incbin "baserom.gba", 0x2db1ac, 0x1b
-
-BattleScript_EnduredMsg:: @ 82DB1C7
- .incbin "baserom.gba", 0x2db1c7, 0x7
-
-BattleScript_OneHitKOMsg:: @ 82DB1CE
- .incbin "baserom.gba", 0x2db1ce, 0x7
-
-BattleScript_SAtkDown2:: @ 82DB1D5
- .incbin "baserom.gba", 0x2db1d5, 0x2a
-
-BattleScript_FocusPunchSetUp:: @ 82DB1FF
- .incbin "baserom.gba", 0x2db1ff, 0x14
-
-BattleScript_MoveUsedIsAsleep:: @ 82DB213
- .incbin "baserom.gba", 0x2db213, 0xd
-
-BattleScript_MoveUsedWokeUp:: @ 82DB220
- .incbin "baserom.gba", 0x2db220, 0x14
-
-gUnknown_082DB234:: @ 82DB234
- .incbin "baserom.gba", 0x2db234, 0x9
-
-BattleScript_PoisonTurnDmg:: @ 82DB23D
- .incbin "baserom.gba", 0x2db23d, 0x22
-
-BattleScript_BurnTurnDmg:: @ 82DB25F
- .incbin "baserom.gba", 0x2db25f, 0xb
-
-BattleScript_MoveUsedIsFrozen:: @ 82DB26A
- .incbin "baserom.gba", 0x2db26a, 0xd
-
-BattleScript_MoveUsedUnfroze:: @ 82DB277
- .incbin "baserom.gba", 0x2db277, 0xb
-
-BattleScript_DefrostedViaFireMove:: @ 82DB282
- .incbin "baserom.gba", 0x2db282, 0x9
-
-BattleScript_MoveUsedIsParalyzed:: @ 82DB28B
- .incbin "baserom.gba", 0x2db28b, 0x10
-
-BattleScript_MoveUsedFlinched:: @ 82DB29B
- .incbin "baserom.gba", 0x2db29b, 0xb
-
-gUnknown_082DB2A6:: @ 82DB2A6
- .incbin "baserom.gba", 0x2db2a6, 0x9
-
-BattleScript_ThrashConfuses:: @ 82DB2AF
- .incbin "baserom.gba", 0x2db2af, 0xe
-
-BattleScript_MoveUsedIsConfused:: @ 82DB2BD
- .incbin "baserom.gba", 0x2db2bd, 0x43
-
-BattleScript_MoveUsedIsConfusedNoMore:: @ 82DB300
- .incbin "baserom.gba", 0x2db300, 0x7
-
-BattleScript_PrintPayDayMoneyString:: @ 82DB307
- .incbin "baserom.gba", 0x2db307, 0x7
-
-BattleScript_WrapTurnDmg:: @ 82DB30E
- .incbin "baserom.gba", 0x2db30e, 0x12
-
-BattleScript_WrapEnds:: @ 82DB320
- .incbin "baserom.gba", 0x2db320, 0x7
-
-BattleScript_MoveUsedIsInLove:: @ 82DB327
- .incbin "baserom.gba", 0x2db327, 0xd
-
-BattleScript_MoveUsedIsParalyzedCantAttack:: @ 82DB334
- .incbin "baserom.gba", 0x2db334, 0xb
-
-BattleScript_NightmareTurnDmg:: @ 82DB33F
- .incbin "baserom.gba", 0x2db33f, 0x11
-
-BattleScript_CurseTurnDmg:: @ 82DB350
- .incbin "baserom.gba", 0x2db350, 0x11
-
-BattleScript_TargetPRLZHeal:: @ 82DB361
- .incbin "baserom.gba", 0x2db361, 0x9
-
-BattleScript_MoveEffectSleep:: @ 82DB36A
- .incbin "baserom.gba", 0x2db36A, 0xE
-
-BattleScript_YawnMakesAsleep:: @ 82DB378
- .incbin "baserom.gba", 0x2db378, 0xE
-
-BattleScript_MoveEffectPoison:: @ 82DB386
- .incbin "baserom.gba", 0x2db386, 0xF
-
-BattleScript_MoveEffectBurn:: @ 82DB395
- .incbin "baserom.gba", 0x2db395, 0xF
-
-BattleScript_MoveEffectFreeze:: @ 82DB3A4
- .incbin "baserom.gba", 0x2db3A4, 0xF
-
-BattleScript_MoveEffectParalysis:: @ 82DB3B3
- .incbin "baserom.gba", 0x2db3B3, 0xF
-
-BattleScript_MoveEffectUproar:: @ 82DB3C2
- .incbin "baserom.gba", 0x2db3C2, 0x7
-
-BattleScript_MoveEffectToxic:: @ 82DB3C9
- .incbin "baserom.gba", 0x2db3C9, 0xD
-
-BattleScript_MoveEffectPayDay:: @ 82DB3D6
- .incbin "baserom.gba", 0x2db3D6, 0x7
-
-BattleScript_MoveEffectWrap:: @ 82DB3DD
- .incbin "baserom.gba", 0x2db3DD, 0x9
-
-BattleScript_MoveEffectConfusion:: @ 82DB3E6
- .incbin "baserom.gba", 0x2db3E6, 0xE
-
-BattleScript_MoveEffectRecoil33:: @ 82DB3F4
- .incbin "baserom.gba", 0x2db3F4, 0x2e
-
-BattleScript_ItemSteal:: @ 82DB422
- .incbin "baserom.gba", 0x2db422, 0xe
-
-BattleScript_DrizzleActivates:: @ 82DB430
- .incbin "baserom.gba", 0x2db430, 0x14
-
-BattleScript_SpeedBoostActivates:: @ 82DB444
- .incbin "baserom.gba", 0x2db444, 0xe
-
-BattleScript_TraceActivates:: @ 82DB452
- .incbin "baserom.gba", 0x2db452, 0xa
-
-BattleScript_RainDishActivates:: @ 82DB45C
- .incbin "baserom.gba", 0x2db45c, 0x14
-
-BattleScript_SandstreamActivates:: @ 82DB470
- .incbin "baserom.gba", 0x2db470, 0x14
-
-BattleScript_ShedSkinActivates:: @ 82DB484
- .incbin "baserom.gba", 0x2db484, 0x25
-
-BattleScript_CastformChange:: @ 82DB4A9
- .incbin "baserom.gba", 0x2db4a9, 0xf
-
-gUnknown_082DB4B8:: @ 82DB4B8
- .incbin "baserom.gba", 0x2db4b8, 0x9
-
-gUnknown_082DB4C1:: @ 82DB4C1
- .incbin "baserom.gba", 0x2db4c1, 0x69
-
-BattleScript_DroughtActivates:: @ 82DB52A
- .incbin "baserom.gba", 0x2db52a, 0x14
-
-BattleScript_TookAttack:: @ 82DB53E
- .incbin "baserom.gba", 0x2db53e, 0x14
-
-BattleScript_SturdyPreventsOHKO:: @ 82DB552
- .incbin "baserom.gba", 0x2db552, 0xe
-
-BattleScript_DampStopsExplosion:: @ 82DB560
- .incbin "baserom.gba", 0x2db560, 0xe
-
-BattleScript_MoveHPDrain_PPLoss:: @ 82DB56E
- .incbin "baserom.gba", 0x2db56e, 0x1
-
-BattleScript_MoveHPDrain:: @ 82DB56F
- .incbin "baserom.gba", 0x2db56f, 0x22
-
-gUnknown_082DB591:: @ 82DB591
- .incbin "baserom.gba", 0x2db591, 0x1
-
-gUnknown_082DB592:: @ 82DB592
- .incbin "baserom.gba", 0x2db592, 0x15
-
-BattleScript_FlashFireBoost_PPLoss:: @ 82DB5A7
- .incbin "baserom.gba", 0x2db5a7, 0x1
-
-BattleScript_FlashFireBoost:: @ 82DB5A8
- .incbin "baserom.gba", 0x2db5a8, 0x1f
-
-BattleScript_AbilityNoStatLoss:: @ 82DB5C7
- .incbin "baserom.gba", 0x2db5c7, 0xa
-
-BattleScript_BRNPrevention:: @ 82DB5D1
- .incbin "baserom.gba", 0x2db5d1, 0xc
-
-BattleScript_PRLZPrevention:: @ 82DB5DD
- .incbin "baserom.gba", 0x2db5dd, 0xc
-
-BattleScript_PSNPrevention:: @ 82DB5E9
- .incbin "baserom.gba", 0x2db5e9, 0xc
-
-BattleScript_ObliviousPreventsAttraction:: @ 82DB5F5
- .incbin "baserom.gba", 0x2db5f5, 0xe
-
-BattleScript_FlinchPrevention:: @ 82DB603
- .incbin "baserom.gba", 0x2db603, 0x1c
-
-BattleScript_SoundproofProtected:: @ 82DB61F
- .incbin "baserom.gba", 0x2db61f, 0x10
-
-BattleScript_AbilityNoSpecificStatLoss:: @ 82DB62F
- .incbin "baserom.gba", 0x2db62f, 0x10
-
-BattleScript_StickyHoldActivates:: @ 82DB63F
- .incbin "baserom.gba", 0x2db63f, 0xe
-
-BattleScript_ColorChangeActivates:: @ 82DB64D
- .incbin "baserom.gba", 0x2db64d, 0x7
-
-BattleScript_RoughSkinActivates:: @ 82DB654
- .incbin "baserom.gba", 0x2db654, 0x1b
-
-BattleScript_CuteCharmActivates:: @ 82DB66F
- .incbin "baserom.gba", 0x2db66f, 0xd
-
-BattleScript_ApplySecondaryEffect:: @ 82DB67C
- .incbin "baserom.gba", 0x2db67c, 0x3
-
-BattleScript_SynchronizeActivates:: @ 82DB67F
- .incbin "baserom.gba", 0x2db67f, 0x3
-
-BattleScript_NoItemSteal:: @ 82DB682
- .incbin "baserom.gba", 0x2db682, 0xa
-
-gUnknown_082DB68C:: @ 82DB68C
- .incbin "baserom.gba", 0x2db68c, 0x9
-
-gUnknown_082DB695:: @ 82DB695
- .incbin "baserom.gba", 0x2db695, 0x10
-
-gUnknown_082DB6A5:: @ 82DB6A5
- .incbin "baserom.gba", 0x2db6a5, 0x8
-
-BattleScript_MoveUsedLoafingAround:: @ 82DB6AD
- .incbin "baserom.gba", 0x2db6ad, 0x2c
-
-gUnknown_082DB6D9:: @ 82DB6D9
- .incbin "baserom.gba", 0x2db6d9, 0x17
-
-gUnknown_082DB6F0:: @ 82DB6F0
- .incbin "baserom.gba", 0x2db6f0, 0xb
-
-BattleScript_SubstituteFade:: @ 82DB6FB
- .incbin "baserom.gba", 0x2db6fb, 0xb
-
-BattleScript_BerryCurePrlzEnd2:: @ 82DB706
- .incbin "baserom.gba", 0x2db706, 0x6
-
-BattleScript_BerryCureParRet:: @ 82DB70C
- .incbin "baserom.gba", 0x2db70c, 0x12
-
-BattleScript_BerryCurePsnEnd2:: @ 82DB71E
- .incbin "baserom.gba", 0x2db71e, 0x6
-
-BattleScript_BerryCurePsnRet:: @ 82DB724
- .incbin "baserom.gba", 0x2db724, 0x12
-
-BattleScript_BerryCureBrnEnd2:: @ 82DB736
- .incbin "baserom.gba", 0x2db736, 0x6
-
-BattleScript_BerryCureBrnRet:: @ 82DB73C
- .incbin "baserom.gba", 0x2db73c, 0x12
-
-BattleScript_BerryCureFrzEnd2:: @ 82DB74E
- .incbin "baserom.gba", 0x2db74e, 0x6
-
-BattleScript_BerryCureFrzRet:: @ 82DB754
- .incbin "baserom.gba", 0x2db754, 0x12
-
-BattleScript_BerryCureSlpEnd2:: @ 82DB766
- .incbin "baserom.gba", 0x2db766, 0x6
-
-BattleScript_BerryCureSlpRet:: @ 82DB76C
- .incbin "baserom.gba", 0x2db76c, 0x12
-
-BattleScript_BerryCureConfusionEnd2:: @ 82DB77E
- .incbin "baserom.gba", 0x2db77e, 0x6
-
-BattleScript_BerryCureConfusionRet:: @ 82DB784
- .incbin "baserom.gba", 0x2db784, 0x10
-
-BattleScript_BerryCureChosenStatusEnd2:: @ 82DB794
- .incbin "baserom.gba", 0x2db794, 0x6
-
-BattleScript_BerryCureChosenStatusRet:: @ 82DB79A
- .incbin "baserom.gba", 0x2db79a, 0x14
-
-BattleScript_WhiteHerbEnd2:: @ 82DB7AE
- .incbin "baserom.gba", 0x2db7ae, 0x6
-
-BattleScript_WhiteHerbRet:: @ 82DB7B4
- .incbin "baserom.gba", 0x2db7b4, 0x10
-
-BattleScript_ItemHealHP_RemoveItem:: @ 82DB7C4
- .incbin "baserom.gba", 0x2db7c4, 0x1d
-
-BattleScript_BerryPPHealEnd2:: @ 82DB7E1
- .incbin "baserom.gba", 0x2db7e1, 0x10
-
-BattleScript_ItemHealHP_End2:: @ 82DB7F1
- .incbin "baserom.gba", 0x2db7f1, 0x6
-
-BattleScript_ItemHealHP_Ret:: @ 82DB7F7
- .incbin "baserom.gba", 0x2db7f7, 0x1b
-
-gUnknown_082DB812:: @ 82DB812
- .incbin "baserom.gba", 0x2db812, 0x4
-
-BattleScript_HangedOnMsg:: @ 82DB816
- .incbin "baserom.gba", 0x2db816, 0xe
-
-BattleScript_BerryConfuseHealEnd2:: @ 82DB824
- .incbin "baserom.gba", 0x2db824, 0x2a
-
-BattleScript_BerryStatRaiseEnd2:: @ 82DB84E
- .incbin "baserom.gba", 0x2db84e, 0x1b
-
-BattleScript_BerryFocusEnergyEnd2:: @ 82DB869
- .incbin "baserom.gba", 0x2db869, 0x10
-
-BattleScript_ActionSelectionItemsCantBeUsed:: @ 82DB879
- .incbin "baserom.gba", 0x2db879, 0x4
-
-gUnknown_082DB87D:: @ 82DB87D
- .incbin "baserom.gba", 0x2db87d, 0x4
-
-gUnknown_082DB881:: @ 82DB881
- .incbin "baserom.gba", 0x2db881, 0x3d
-
-gUnknown_082DB8BE:: @ 82DB8BE
- .incbin "baserom.gba", 0x2db8be, 0x35
-
-gUnknown_082DB8F3:: @ 82DB8F3
- .incbin "baserom.gba", 0x2db8f3, 0xc7
-
-gUnknown_082DB9BA:: @ 82DB9BA
- .incbin "baserom.gba", 0x2db9ba, 0x7
-
-gUnknown_082DB9C1:: @ 82DB9C1
- .incbin "baserom.gba", 0x2db9c1, 0x7
-
-gUnknown_082DB9C8:: @ 82DB9C8
- .incbin "baserom.gba", 0x2db9c8, 0xc
+ .4byte BattleScript_EffectHit
+ .4byte BattleScript_EffectSleep
+ .4byte BattleScript_EffectPoisonHit
+ .4byte BattleScript_EffectAbsorb
+ .4byte BattleScript_EffectBurnHit
+ .4byte BattleScript_EffectFreezeHit
+ .4byte BattleScript_EffectParalyzeHit
+ .4byte BattleScript_EffectExplosion
+ .4byte BattleScript_EffectDreamEater
+ .4byte BattleScript_EffectMirrorMove
+ .4byte BattleScript_EffectAttackUp
+ .4byte BattleScript_EffectDefenseUp
+ .4byte BattleScript_EffectSpeedUp
+ .4byte BattleScript_EffectSpecialAttackUp
+ .4byte BattleScript_EffectSpecialDefenseUp
+ .4byte BattleScript_EffectAccuracyUp
+ .4byte BattleScript_EffectEvasionUp
+ .4byte BattleScript_EffectAlwaysHit
+ .4byte BattleScript_EffectAttackDown
+ .4byte BattleScript_EffectDefenseDown
+ .4byte BattleScript_EffectSpeedDown
+ .4byte BattleScript_EffectSpecialAttackDown
+ .4byte BattleScript_EffectSpecialDefenseDown
+ .4byte BattleScript_EffectAccuracyDown
+ .4byte BattleScript_EffectEvasionDown
+ .4byte BattleScript_EffectHaze
+ .4byte BattleScript_EffectBide
+ .4byte BattleScript_EffectRampage
+ .4byte BattleScript_EffectRoar
+ .4byte BattleScript_EffectMultiHit
+ .4byte BattleScript_EffectConversion
+ .4byte BattleScript_EffectFlinchHit
+ .4byte BattleScript_EffectRestoreHp
+ .4byte BattleScript_EffectToxic
+ .4byte BattleScript_EffectPayDay
+ .4byte BattleScript_EffectLightScreen
+ .4byte BattleScript_EffectTriAttack
+ .4byte BattleScript_EffectRest
+ .4byte BattleScript_EffectOHKO
+ .4byte BattleScript_EffectRazorWind
+ .4byte BattleScript_EffectSuperFang
+ .4byte BattleScript_EffectDragonRage
+ .4byte BattleScript_EffectTrap
+ .4byte BattleScript_EffectHighCritical
+ .4byte BattleScript_EffectDoubleHit
+ .4byte BattleScript_EffectRecoilIfMiss
+ .4byte BattleScript_EffectMist
+ .4byte BattleScript_EffectFocusEnergy
+ .4byte BattleScript_EffectRecoil
+ .4byte BattleScript_EffectConfuse
+ .4byte BattleScript_EffectAttackUp2
+ .4byte BattleScript_EffectDefenseUp2
+ .4byte BattleScript_EffectSpeedUp2
+ .4byte BattleScript_EffectSpecialAttackUp2
+ .4byte BattleScript_EffectSpecialDefenseUp2
+ .4byte BattleScript_EffectAccuracyUp2
+ .4byte BattleScript_EffectEvasionUp2
+ .4byte BattleScript_EffectTransform
+ .4byte BattleScript_EffectAttackDown2
+ .4byte BattleScript_EffectDefenseDown2
+ .4byte BattleScript_EffectSpeedDown2
+ .4byte BattleScript_EffectSpecialAttackDown2
+ .4byte BattleScript_EffectSpecialDefenseDown2
+ .4byte BattleScript_EffectAccuracyDown2
+ .4byte BattleScript_EffectEvasionDown2
+ .4byte BattleScript_EffectReflect
+ .4byte BattleScript_EffectPoison
+ .4byte BattleScript_EffectParalyze
+ .4byte BattleScript_EffectAttackDownHit
+ .4byte BattleScript_EffectDefenseDownHit
+ .4byte BattleScript_EffectSpeedDownHit
+ .4byte BattleScript_EffectSpecialAttackDownHit
+ .4byte BattleScript_EffectSpecialDefenseDownHit
+ .4byte BattleScript_EffectAccuracyDownHit
+ .4byte BattleScript_EffectEvasionDownHit
+ .4byte BattleScript_EffectSkyAttack
+ .4byte BattleScript_EffectConfuseHit
+ .4byte BattleScript_EffectTwineedle
+ .4byte BattleScript_EffectVitalThrow
+ .4byte BattleScript_EffectSubstitute
+ .4byte BattleScript_EffectRecharge
+ .4byte BattleScript_EffectRage
+ .4byte BattleScript_EffectMimic
+ .4byte BattleScript_EffectMetronome
+ .4byte BattleScript_EffectLeechSeed
+ .4byte BattleScript_EffectSplash
+ .4byte BattleScript_EffectDisable
+ .4byte BattleScript_EffectLevelDamage
+ .4byte BattleScript_EffectPsywave
+ .4byte BattleScript_EffectCounter
+ .4byte BattleScript_EffectEncore
+ .4byte BattleScript_EffectPainSplit
+ .4byte BattleScript_EffectSnore
+ .4byte BattleScript_EffectConversion2
+ .4byte BattleScript_EffectLockOn
+ .4byte BattleScript_EffectSketch
+ .4byte BattleScript_EffectUnused60//Thaw
+ .4byte BattleScript_EffectSleepTalk
+ .4byte BattleScript_EffectDestinyBond
+ .4byte BattleScript_EffectFlail
+ .4byte BattleScript_EffectSpite
+ .4byte BattleScript_EffectFalseSwipe
+ .4byte BattleScript_EffectHealBell
+ .4byte BattleScript_EffectQuickAttack
+ .4byte BattleScript_EffectTripleKick
+ .4byte BattleScript_EffectThief
+ .4byte BattleScript_EffectMeanLook
+ .4byte BattleScript_EffectNightmare
+ .4byte BattleScript_EffectMinimize
+ .4byte BattleScript_EffectCurse
+ .4byte BattleScript_EffectUnused6e
+ .4byte BattleScript_EffectProtect
+ .4byte BattleScript_EffectSpikes
+ .4byte BattleScript_EffectForesight
+ .4byte BattleScript_EffectPerishSong
+ .4byte BattleScript_EffectSandstorm
+ .4byte BattleScript_EffectEndure
+ .4byte BattleScript_EffectRollout
+ .4byte BattleScript_EffectSwagger
+ .4byte BattleScript_EffectFuryCutter
+ .4byte BattleScript_EffectAttract
+ .4byte BattleScript_EffectReturn
+ .4byte BattleScript_EffectPresent
+ .4byte BattleScript_EffectFrustration
+ .4byte BattleScript_EffectSafeguard
+ .4byte BattleScript_EffectThawHit
+ .4byte BattleScript_EffectMagnitude
+ .4byte BattleScript_EffectBatonPass
+ .4byte BattleScript_EffectPursuit
+ .4byte BattleScript_EffectRapidSpin
+ .4byte BattleScript_EffectSonicboom
+ .4byte BattleScript_EffectUnused83
+ .4byte BattleScript_EffectMorningSun
+ .4byte BattleScript_EffectSynthesis
+ .4byte BattleScript_EffectMoonlight
+ .4byte BattleScript_EffectHiddenPower
+ .4byte BattleScript_EffectRainDance
+ .4byte BattleScript_EffectSunnyDay
+ .4byte BattleScript_EffectDefenseUpHit
+ .4byte BattleScript_EffectAttackUpHit
+ .4byte BattleScript_EffectAllStatsUpHit
+ .4byte BattleScript_EffectUnused8d
+ .4byte BattleScript_EffectBellyDrum
+ .4byte BattleScript_EffectPsychUp
+ .4byte BattleScript_EffectMirrorCoat
+ .4byte BattleScript_EffectSkullBash
+ .4byte BattleScript_EffectTwister
+ .4byte BattleScript_EffectEarthquake
+ .4byte BattleScript_EffectFutureSight
+ .4byte BattleScript_EffectGust
+ .4byte BattleScript_EffectStomp
+ .4byte BattleScript_EffectSolarbeam
+ .4byte BattleScript_EffectThunder
+ .4byte BattleScript_EffectTeleport
+ .4byte BattleScript_EffectBeatUp
+ .4byte BattleScript_EffectSemiInvulnerable
+ .4byte BattleScript_EffectDefenseCurl
+ .4byte BattleScript_EffectSoftboiled
+ .4byte BattleScript_EffectFakeOut
+ .4byte BattleScript_EffectUproar
+ .4byte BattleScript_EffectStockpile
+ .4byte BattleScript_EffectSpitUp
+ .4byte BattleScript_EffectSwallow
+ .4byte BattleScript_EffectUnusedA3
+ .4byte BattleScript_EffectHail
+ .4byte BattleScript_EffectTorment
+ .4byte BattleScript_EffectFlatter
+ .4byte BattleScript_EffectWillOWisp
+ .4byte BattleScript_EffectMemento
+ .4byte BattleScript_EffectFacade
+ .4byte BattleScript_EffectFocusPunch
+ .4byte BattleScript_EffectSmellingsalt
+ .4byte BattleScript_EffectFollowMe
+ .4byte BattleScript_EffectNaturePower
+ .4byte BattleScript_EffectCharge
+ .4byte BattleScript_EffectTaunt
+ .4byte BattleScript_EffectHelpingHand
+ .4byte BattleScript_EffectTrick
+ .4byte BattleScript_EffectRolePlay
+ .4byte BattleScript_EffectWish
+ .4byte BattleScript_EffectAssist
+ .4byte BattleScript_EffectIngrain
+ .4byte BattleScript_EffectSuperpower
+ .4byte BattleScript_EffectMagicCoat
+ .4byte BattleScript_EffectRecycle
+ .4byte BattleScript_EffectRevenge
+ .4byte BattleScript_EffectBrickBreak
+ .4byte BattleScript_EffectYawn
+ .4byte BattleScript_EffectKnockOff
+ .4byte BattleScript_EffectEndeavor
+ .4byte BattleScript_EffectEruption
+ .4byte BattleScript_EffectSkillSwap
+ .4byte BattleScript_EffectImprison
+ .4byte BattleScript_EffectRefresh
+ .4byte BattleScript_EffectGrudge
+ .4byte BattleScript_EffectSnatch
+ .4byte BattleScript_EffectLowKick
+ .4byte BattleScript_EffectSecretPower
+ .4byte BattleScript_EffectDoubleEdge
+ .4byte BattleScript_EffectTeeterDance
+ .4byte BattleScript_EffectBlazeKick
+ .4byte BattleScript_EffectMudSport
+ .4byte BattleScript_EffectPoisonFang
+ .4byte BattleScript_EffectWeatherBall
+ .4byte BattleScript_EffectOverheat
+ .4byte BattleScript_EffectTickle
+ .4byte BattleScript_EffectCosmicPower
+ .4byte BattleScript_EffectSkyUppercut
+ .4byte BattleScript_EffectBulkUp
+ .4byte BattleScript_EffectPoisonTail
+ .4byte BattleScript_EffectWaterSport
+ .4byte BattleScript_EffectCalmMind
+ .4byte BattleScript_EffectDragonDance
+ .4byte BattleScript_EffectCamouflage
+
+BattleScript_EffectSpeedUp::
+BattleScript_EffectSpecialDefenseUp::
+BattleScript_EffectAccuracyUp::
+BattleScript_EffectAlwaysHit::
+BattleScript_EffectSpecialAttackDown::
+BattleScript_EffectSpecialDefenseDown::
+BattleScript_EffectHighCritical::
+BattleScript_EffectAccuracyUp2::
+BattleScript_EffectEvasionUp2::
+BattleScript_EffectSpecialAttackDown2::
+BattleScript_EffectAccuracyDown2::
+BattleScript_EffectEvasionDown2::
+BattleScript_EffectEvasionDownHit::
+BattleScript_EffectVitalThrow::
+BattleScript_EffectUnused60::
+BattleScript_EffectFalseSwipe::
+BattleScript_EffectQuickAttack::
+BattleScript_EffectUnused6e::
+BattleScript_EffectPursuit::
+BattleScript_EffectUnused83::
+BattleScript_EffectUnused8d::
+BattleScript_EffectUnusedA3::
+BattleScript_EffectHit::
+ jumpifnotmove MOVE_SURF, BattleScript_HitFromAtkCanceler
+ jumpifnostatus3 TARGET, STATUS3_UNDERWATER, BattleScript_HitFromAtkCanceler
+ orword gHitMarker, HITMARKER_IGNORE_UNDERWATER
+ setbyte sDMG_MULTIPLIER, 0x2
+BattleScript_HitFromAtkCanceler::
+ attackcanceler
+BattleScript_HitFromAccCheck::
+ accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
+BattleScript_HitFromAtkString::
+ attackstring
+ ppreduce
+BattleScript_HitFromCritCalc::
+ critcalc
+ damagecalc
+ typecalc
+ adjustnormaldamage
+BattleScript_HitFromAtkAnimation::
+ attackanimation
+ waitanimation
+ effectivenesssound
+ hitanimation TARGET
+ waitstate
+ healthbarupdate TARGET
+ datahpupdate TARGET
+ critmessage
+ waitmessage 0x40
+ resultmessage
+ waitmessage 0x40
+ seteffectwithchance
+ tryfaintmon TARGET, FALSE, NULL
+BattleScript_MoveEnd::
+ setbyte sMOVEEND_STATE, 0x0
+ moveend 0x0, 0x0
+ end
+
+BattleScript_MakeMoveMissed::
+ orbyte gBattleMoveFlags, MOVESTATUS_MISSED
+BattleScript_PrintMoveMissed::
+ attackstring
+ ppreduce
+BattleScript_MoveMissedPause::
+ pause 0x20
+BattleScript_MoveMissed::
+ effectivenesssound
+ resultmessage
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectSleep::
+ attackcanceler
+ attackstring
+ ppreduce
+ jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifstatus TARGET, STATUS_SLEEP, BattleScript_AlreadyAsleep
+ jumpifcantmakeasleep BattleScript_CantMakeAsleep
+ jumpifstatus TARGET, STATUS_ANY, BattleScript_ButItFailed
+ accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
+ jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
+ attackanimation
+ waitanimation
+ setmoveeffect EFFECT_SLEEP
+ seteffectprimary
+ goto BattleScript_MoveEnd
+
+BattleScript_AlreadyAsleep::
+ various23 ATTACKER
+ pause 0x20
+ printstring STRINGID_PKMNALREADYASLEEP
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_WasntAffected::
+ pause 0x20
+ printstring STRINGID_PKMNWASNTAFFECTED
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_CantMakeAsleep::
+ pause 0x20
+ printfromtable gUproarAwakeStringIds
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectPoisonHit::
+BattleScript_EffectPoisonTail::
+ setmoveeffect EFFECT_POISON
+ goto BattleScript_EffectHit
+
+BattleScript_EffectAbsorb::
+ attackcanceler
+ accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
+ attackstring
+ ppreduce
+ critcalc
+ damagecalc
+ typecalc
+ adjustnormaldamage
+ attackanimation
+ waitanimation
+ effectivenesssound
+ hitanimation TARGET
+ waitstate
+ healthbarupdate TARGET
+ datahpupdate TARGET
+ critmessage
+ waitmessage 0x40
+ resultmessage
+ waitmessage 0x40
+ negativedamage
+ orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
+ jumpifability TARGET, ABILITY_LIQUID_OOZE, BattleScript_AbsorbLiquidOoze
+ setbyte cMULTISTRING_CHOOSER, 0x0
+ goto BattleScript_AbsorbUpdateHp
+BattleScript_AbsorbLiquidOoze::
+ manipulatedamage ATK80_DMG_CHANGE_SIGN
+ setbyte cMULTISTRING_CHOOSER, 0x1
+BattleScript_AbsorbUpdateHp::
+ healthbarupdate ATTACKER
+ datahpupdate ATTACKER
+ jumpifmovehadnoeffect BattleScript_AbsorbTryFainting
+ printfromtable gLeechSeedDrainStringIds
+ waitmessage 0x40
+BattleScript_AbsorbTryFainting::
+ tryfaintmon ATTACKER, FALSE, NULL
+ tryfaintmon TARGET, FALSE, NULL
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectBurnHit::
+BattleScript_EffectBlazeKick::
+ setmoveeffect EFFECT_BURN
+ goto BattleScript_EffectHit
+
+BattleScript_EffectFreezeHit::
+ setmoveeffect EFFECT_FREEZE
+ goto BattleScript_EffectHit
+
+BattleScript_EffectParalyzeHit::
+ setmoveeffect EFFECT_PARALYSIS
+ goto BattleScript_EffectHit
+
+BattleScript_EffectExplosion::
+ attackcanceler
+ attackstring
+ ppreduce
+ faintifabilitynotdamp
+ setatkhptozero
+ waitstate
+ jumpifbyte NO_COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED, BattleScript_82D8B94
+ call BattleScript_82D8BEA
+ goto BattleScript_82D8B96
+BattleScript_82D8B94::
+ attackanimation
+ waitanimation
+BattleScript_82D8B96::
+ movevaluescleanup
+ critcalc
+ damagecalc
+ typecalc
+ adjustnormaldamage
+ accuracycheck BattleScript_82D8BCF, ACC_CURR_MOVE
+ effectivenesssound
+ hitanimation TARGET
+ waitstate
+ healthbarupdate TARGET
+ datahpupdate TARGET
+ critmessage
+ waitmessage 0x40
+ resultmessage
+ waitmessage 0x40
+ tryfaintmon TARGET, FALSE, NULL
+ setbyte sMOVEEND_STATE, 0x0
+ moveend 0x2, 0x10
+ jumpifnexttargetvalid BattleScript_82D8B96
+ tryfaintmon ATTACKER, FALSE, NULL
+ end
+BattleScript_82D8BCF::
+ effectivenesssound
+ resultmessage
+ waitmessage 0x40
+ setbyte sMOVEEND_STATE, 0x0
+ moveend 0x2, 0x10
+ jumpifnexttargetvalid BattleScript_82D8B96
+ tryfaintmon ATTACKER, FALSE, NULL
+ end
+
+BattleScript_82D8BEA::
+ bicbyte gBattleMoveFlags, MOVESTATUS_MISSED
+ attackanimation
+ waitanimation
+ orbyte gBattleMoveFlags, MOVESTATUS_MISSED
+ return
+
+BattleScript_EffectDreamEater::
+ attackcanceler
+ jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_82D8C0E
+ jumpifstatus TARGET, STATUS_SLEEP, BattleScript_82D8C18
+BattleScript_82D8C0E::
+ attackstring
+ ppreduce
+ waitmessage 0x40
+ goto BattleScript_WasntAffected
+BattleScript_82D8C18::
+ accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
+ attackstring
+ ppreduce
+ critcalc
+ damagecalc
+ typecalc
+ adjustnormaldamage
+ attackanimation
+ waitanimation
+ effectivenesssound
+ hitanimation TARGET
+ waitstate
+ healthbarupdate TARGET
+ datahpupdate TARGET
+ critmessage
+ waitmessage 0x40
+ resultmessage
+ waitmessage 0x40
+ negativedamage
+ orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
+ healthbarupdate ATTACKER
+ datahpupdate ATTACKER
+ jumpifmovehadnoeffect BattleScript_DreamEaterTryFaintEnd
+ printstring STRINGID_PKMNDREAMEATEN
+ waitmessage 0x40
+BattleScript_DreamEaterTryFaintEnd::
+ tryfaintmon TARGET, FALSE, NULL
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectMirrorMove::
+ attackcanceler
+ attackstring
+ pause 0x40
+ trymirrormove
+ ppreduce
+ orbyte gBattleMoveFlags, MOVESTATUS_FAILED
+ printstring STRINGID_MIRRORMOVEFAILED
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectAttackUp::
+ setstatchanger ATK, 1, FALSE
+ goto BattleScript_EffectStatUp
+
+BattleScript_EffectDefenseUp::
+ setstatchanger DEF, 1, FALSE
+ goto BattleScript_EffectStatUp
+
+BattleScript_EffectSpecialAttackUp::
+ setstatchanger SPATK, 1, FALSE
+ goto BattleScript_EffectStatUp
+
+BattleScript_EffectEvasionUp::
+ setstatchanger EVASION, 1, FALSE
+BattleScript_EffectStatUp::
+ attackcanceler
+BattleScript_EffectStatUpAfterAtkCanceler::
+ attackstring
+ ppreduce
+ statbuffchange AFFECTS_USER | 0x1, BattleScript_StatUpEnd
+ jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_StatUpAttackAnim
+ pause 0x20
+ goto BattleScript_StatUpPrintString
+BattleScript_StatUpAttackAnim::
+ attackanimation
+ waitanimation
+BattleScript_StatUpDoAnim::
+ setgraphicalstatchangevalues
+ playanimation ATTACKER, ANIM_STATS_CHANGE, sANIM_ARG1
+BattleScript_StatUpPrintString::
+ printfromtable gStatUpStringIds
+ waitmessage 0x40
+BattleScript_StatUpEnd::
+ goto BattleScript_MoveEnd
+
+BattleScript_StatUp::
+ playanimation EFFECT_BANK, ANIM_STATS_CHANGE, sANIM_ARG1
+ printfromtable gStatUpStringIds
+ waitmessage 0x40
+ return
+
+BattleScript_EffectAttackDown::
+ setstatchanger ATK, 1, TRUE
+ goto BattleScript_EffectStatDown
+
+BattleScript_EffectDefenseDown::
+ setstatchanger DEF, 1, TRUE
+ goto BattleScript_EffectStatDown
+
+BattleScript_EffectSpeedDown::
+ setstatchanger SPEED, 1, TRUE
+ goto BattleScript_EffectStatDown
+
+BattleScript_EffectAccuracyDown::
+ setstatchanger ACC, 1, TRUE
+ goto BattleScript_EffectStatDown
+
+BattleScript_EffectEvasionDown::
+ setstatchanger EVASION, 1, TRUE
+BattleScript_EffectStatDown::
+ attackcanceler
+ jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailedAtkStringPpReduce
+ accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
+ attackstring
+ ppreduce
+ statbuffchange 0x1, BattleScript_StatDownEnd
+ jumpifbyte LESS_THAN, cMULTISTRING_CHOOSER, 0x2, BattleScript_StatDownDoAnim
+ jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x3, BattleScript_StatDownEnd
+ pause 0x20
+ goto BattleScript_StatDownPrintString
+BattleScript_StatDownDoAnim::
+ attackanimation
+ waitanimation
+ setgraphicalstatchangevalues
+ playanimation TARGET, ANIM_STATS_CHANGE, sANIM_ARG1
+BattleScript_StatDownPrintString::
+ printfromtable gStatDownStringIds
+ waitmessage 0x40
+BattleScript_StatDownEnd::
+ goto BattleScript_MoveEnd
+
+BattleScript_StatDown::
+ playanimation EFFECT_BANK, ANIM_STATS_CHANGE, sANIM_ARG1
+ printfromtable gStatDownStringIds
+ waitmessage 0x40
+ return
+
+BattleScript_EffectHaze::
+ attackcanceler
+ attackstring
+ ppreduce
+ attackanimation
+ waitanimation
+ normalisebuffs
+ printstring STRINGID_STATCHANGESGONE
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectBide::
+ attackcanceler
+ attackstring
+ ppreduce
+ attackanimation
+ waitanimation
+ orword gHitMarker, HITMARKER_x8000000
+ setbide
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectRampage::
+ attackcanceler
+ accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
+ attackstring
+ jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_82D8DAE
+ ppreduce
+BattleScript_82D8DAE::
+ confuseifrepeatingattackends
+ goto BattleScript_HitFromCritCalc
+
+BattleScript_EffectRoar::
+ attackcanceler
+ attackstring
+ ppreduce
+ jumpifability TARGET, ABILITY_SUCTION_CUPS, BattleScript_AbilityPreventsPhasingOut
+ jumpifstatus3 TARGET, STATUS3_ROOTED, BattleScript_PrintMonIsRooted
+ accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
+ accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ jumpifbattletype BATTLE_TYPE_ARENA, BattleScript_ButItFailed
+ forcerandomswitch BattleScript_ButItFailed
+
+BattleScript_EffectMultiHit::
+ attackcanceler
+ accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
+ attackstring
+ ppreduce
+ setmultihitcounter 0x0
+ initmultihitstring
+ setbyte sMULTIHIT_EFFECT, 0x0
+BattleScript_MultiHitLoop::
+ jumpifhasnohp ATTACKER, BattleScript_MultiHitEnd
+ jumpifhasnohp TARGET, BattleScript_MultiHitPrintStrings
+ jumpifhalfword EQUAL, gChosenMove, MOVE_SLEEP_TALK, BattleScript_DoMultiHit
+ jumpifstatus ATTACKER, STATUS_SLEEP, BattleScript_MultiHitPrintStrings
+BattleScript_DoMultiHit::
+ movevaluescleanup
+ copybyte cEFFECT_CHOOSER, sMULTIHIT_EFFECT
+ critcalc
+ damagecalc
+ typecalc
+ jumpifmovehadnoeffect BattleScript_MultiHitNoMoreHits
+ adjustnormaldamage
+ attackanimation
+ waitanimation
+ effectivenesssound
+ hitanimation TARGET
+ waitstate
+ healthbarupdate TARGET
+ datahpupdate TARGET
+ critmessage
+ waitmessage 0x40
+ printstring STRINGID_EMPTYSTRING3
+ waitmessage 0x1
+ addbyte sMULTIHIT_STRING + 4, 0x1
+ setbyte sMOVEEND_STATE, 0x0
+ moveend 0x2, 0x10
+ jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_ENDURED, BattleScript_MultiHitPrintStrings
+ decrementmultihit BattleScript_MultiHitLoop
+ goto BattleScript_MultiHitPrintStrings
+BattleScript_MultiHitNoMoreHits::
+ pause 0x20
+BattleScript_MultiHitPrintStrings::
+ resultmessage
+ waitmessage 0x40
+ jumpifmovehadnoeffect BattleScript_MultiHitEnd
+ copyarray gBattleTextBuff1, sMULTIHIT_STRING, 0x6
+ printstring STRINGID_HITXTIMES
+ waitmessage 0x40
+BattleScript_MultiHitEnd::
+ seteffectwithchance
+ tryfaintmon TARGET, FALSE, NULL
+ setbyte sMOVEEND_STATE, 0x2
+ moveend 0x1, 0x0
+ setbyte sMOVEEND_STATE, 0x4
+ moveend 0x0, 0x0
+ end
+
+BattleScript_EffectConversion::
+ attackcanceler
+ attackstring
+ ppreduce
+ tryconversiontypechange BattleScript_ButItFailed
+ attackanimation
+ waitanimation
+ printstring STRINGID_PKMNCHANGEDTYPE
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectFlinchHit::
+ setmoveeffect EFFECT_FLINCH
+ goto BattleScript_EffectHit
+
+BattleScript_EffectRestoreHp::
+ attackcanceler
+ attackstring
+ ppreduce
+ tryhealhalfhealth BattleScript_AlreadyAtFullHp, ATTACKER
+ attackanimation
+ waitanimation
+ orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
+ healthbarupdate ATTACKER
+ datahpupdate ATTACKER
+ printstring STRINGID_PKMNREGAINEDHEALTH
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectToxic::
+ attackcanceler
+ attackstring
+ ppreduce
+ jumpifability TARGET, ABILITY_IMMUNITY, BattleScript_ImmunityProtected
+ jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifstatus TARGET, STATUS_POISON, BattleScript_AlreadyPoisoned
+ jumpifstatus TARGET, STATUS_TOXIC_POISON, BattleScript_AlreadyPoisoned
+ jumpifstatus TARGET, STATUS_ANY, BattleScript_ButItFailed
+ jumpiftype TARGET, TYPE_POISON, BattleScript_NotAffected
+ jumpiftype TARGET, TYPE_STEEL, BattleScript_NotAffected
+ accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
+ jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
+ attackanimation
+ waitanimation
+ setmoveeffect EFFECT_TOXIC
+ seteffectprimary
+ resultmessage
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_AlreadyPoisoned::
+ various23 ATTACKER
+ pause 0x40
+ printstring STRINGID_PKMNALREADYPOISONED
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_ImmunityProtected::
+ copybyte gEffectBank, gBankTarget
+ setbyte cMULTISTRING_CHOOSER, 0x0
+ call BattleScript_PSNPrevention
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectPayDay::
+ setmoveeffect EFFECT_PAYDAY
+ goto BattleScript_EffectHit
+
+BattleScript_EffectLightScreen::
+ attackcanceler
+ attackstring
+ ppreduce
+ setlightscreen
+ goto BattleScript_PrintReflectLightScreenSafeguardString
+
+BattleScript_EffectTriAttack::
+ setmoveeffect EFFECT_TRI_ATTACK
+ goto BattleScript_EffectHit
+
+BattleScript_EffectRest::
+ attackcanceler
+ attackstring
+ ppreduce
+ jumpifstatus ATTACKER, STATUS_SLEEP, BattleScript_RestIsAlreadyAsleep
+ jumpifcantmakeasleep BattleScript_RestCantSleep
+ trysetrest BattleScript_AlreadyAtFullHp
+ pause 0x20
+ printfromtable gRestUsedStringIds
+ waitmessage 0x40
+ updatestatusicon ATTACKER
+ waitstate
+ goto BattleScript_PresentHealTarget
+
+BattleScript_RestCantSleep::
+ pause 0x40
+ printfromtable gUproarAwakeStringIds
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_RestIsAlreadyAsleep::
+ various23 ATTACKER
+ pause 0x20
+ printstring STRINGID_PKMNALREADYASLEEP2
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectOHKO::
+ attackcanceler
+ attackstring
+ ppreduce
+ accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
+ typecalc
+ jumpifmovehadnoeffect BattleScript_HitFromAtkAnimation
+ tryKO BattleScript_KOFail
+ trysetdestinybondtohappen
+ goto BattleScript_HitFromAtkAnimation
+BattleScript_KOFail::
+ pause 0x40
+ printfromtable gKOFailedStringIds
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectRazorWind::
+ jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn
+ jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_TwoTurnMovesSecondTurn
+ setbyte sTWOTURN_STRINGID, 0x0
+ call BattleScriptFirstChargingTurn
+ goto BattleScript_MoveEnd
+
+BattleScript_TwoTurnMovesSecondTurn::
+ attackcanceler
+ setmoveeffect EFFECT_CHARGING
+ setbyte sANIM_TURN, 0x1
+ clearstatusfromeffect ATTACKER
+ orword gHitMarker, HITMARKER_NO_PPDEDUCT
+ jumpifnotmove MOVE_SKY_ATTACK, BattleScript_HitFromAccCheck
+ setmoveeffect EFFECT_FLINCH
+ goto BattleScript_HitFromAccCheck
+
+BattleScriptFirstChargingTurn::
+ attackcanceler
+ printstring STRINGID_EMPTYSTRING3
+ ppreduce
+ attackanimation
+ waitanimation
+ orword gHitMarker, HITMARKER_x8000000
+ setmoveeffect EFFECT_CHARGING | AFFECTS_USER
+ seteffectprimary
+ copybyte cMULTISTRING_CHOOSER, sTWOTURN_STRINGID
+ printfromtable gFirstTurnOfTwoStringIds
+ waitmessage 0x40
+ return
+
+BattleScript_EffectSuperFang::
+ attackcanceler
+ accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
+ attackstring
+ ppreduce
+ typecalc
+ bicbyte gBattleMoveFlags, MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE
+ damagetohalftargethp
+ goto BattleScript_HitFromAtkAnimation
+
+BattleScript_EffectDragonRage::
+ attackcanceler
+ accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
+ attackstring
+ ppreduce
+ typecalc
+ bicbyte gBattleMoveFlags, MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE
+ setword gBattleMoveDamage, 40
+ adjustsetdamage
+ goto BattleScript_HitFromAtkAnimation
+
+BattleScript_EffectTrap::
+ jumpifnotmove MOVE_WHIRLPOOL, BattleScript_DoWrapEffect
+ jumpifnostatus3 TARGET, STATUS3_UNDERWATER, BattleScript_DoWrapEffect
+ orword gHitMarker, HITMARKER_IGNORE_UNDERWATER
+ setbyte sDMG_MULTIPLIER, 0x2
+BattleScript_DoWrapEffect::
+ setmoveeffect EFFECT_WRAP
+ goto BattleScript_EffectHit
+
+BattleScript_EffectDoubleHit::
+ attackcanceler
+ accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
+ attackstring
+ ppreduce
+ setmultihitcounter 0x2
+ initmultihitstring
+ setbyte sMULTIHIT_EFFECT, 0x0
+ goto BattleScript_MultiHitLoop
+
+BattleScript_EffectRecoilIfMiss::
+ attackcanceler
+ accuracycheck BattleScript_MoveMissedDoDamage, ACC_CURR_MOVE
+ goto BattleScript_HitFromAtkString
+BattleScript_MoveMissedDoDamage::
+ attackstring
+ ppreduce
+ pause 0x40
+ resultmessage
+ waitmessage 0x40
+ jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_NOTAFFECTED, BattleScript_MoveEnd
+ printstring STRINGID_PKMNCRASHED
+ waitmessage 0x40
+ damagecalc
+ typecalc
+ adjustnormaldamage
+ manipulatedamage ATK80_DMG_HALF_BY_TWO_NOT_MORE_THAN_HALF_MAX_HP
+ bicbyte gBattleMoveFlags, MOVESTATUS_MISSED
+ orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
+ healthbarupdate ATTACKER
+ datahpupdate ATTACKER
+ tryfaintmon ATTACKER, FALSE, NULL
+ orbyte gBattleMoveFlags, MOVESTATUS_MISSED
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectMist::
+ attackcanceler
+ attackstring
+ ppreduce
+ setmist
+ attackanimation
+ waitanimation
+ printfromtable gMistUsedStringIds
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectFocusEnergy::
+ attackcanceler
+ attackstring
+ ppreduce
+ jumpifstatus2 ATTACKER, STATUS2_FOCUS_ENERGY, BattleScript_ButItFailed
+ setfocusenergy
+ attackanimation
+ waitanimation
+ printfromtable gFocusEnergyUsedStringIds
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectRecoil::
+ setmoveeffect EFFECT_RECOIL_25 | AFFECTS_USER | CERTAIN
+ jumpifnotmove MOVE_STRUGGLE, BattleScript_EffectHit
+ incrementgamestat 0x1B
+ goto BattleScript_EffectHit
+
+BattleScript_EffectConfuse::
+ attackcanceler
+ attackstring
+ ppreduce
+ jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_OwnTempoPrevents
+ jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifstatus2 TARGET, STATUS2_CONFUSION, BattleScript_AlreadyConfused
+ accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
+ jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
+ attackanimation
+ waitanimation
+ setmoveeffect EFFECT_CONFUSION
+ seteffectprimary
+ resultmessage
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_AlreadyConfused::
+ various23 ATTACKER
+ pause 0x20
+ printstring STRINGID_PKMNALREADYCONFUSED
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectAttackUp2::
+ setstatchanger ATK, 2, FALSE
+ goto BattleScript_EffectStatUp
+
+BattleScript_EffectDefenseUp2::
+ setstatchanger DEF, 2, FALSE
+ goto BattleScript_EffectStatUp
+
+BattleScript_EffectSpeedUp2::
+ setstatchanger SPEED, 2, FALSE
+ goto BattleScript_EffectStatUp
+
+BattleScript_EffectSpecialAttackUp2::
+ setstatchanger SPATK, 2, FALSE
+ goto BattleScript_EffectStatUp
+
+BattleScript_EffectSpecialDefenseUp2::
+ setstatchanger SPDEF, 2, FALSE
+ goto BattleScript_EffectStatUp
+
+BattleScript_EffectTransform::
+ attackcanceler
+ attackstring
+ ppreduce
+ transformdataexecution
+ attackanimation
+ waitanimation
+ printfromtable gTransformUsedStringIds
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectAttackDown2::
+ setstatchanger ATK, 2, TRUE
+ goto BattleScript_EffectStatDown
+
+BattleScript_EffectDefenseDown2::
+ setstatchanger DEF, 2, TRUE
+ goto BattleScript_EffectStatDown
+
+BattleScript_EffectSpeedDown2::
+ setstatchanger SPEED, 2, TRUE
+ goto BattleScript_EffectStatDown
+
+BattleScript_EffectSpecialDefenseDown2::
+ setstatchanger SPDEF, 2, TRUE
+ goto BattleScript_EffectStatDown
+
+BattleScript_EffectReflect::
+ attackcanceler
+ attackstring
+ ppreduce
+ setreflect
+BattleScript_PrintReflectLightScreenSafeguardString::
+ attackanimation
+ waitanimation
+ printfromtable gReflectLightScreenSafeguardStringIds
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectPoison::
+ attackcanceler
+ attackstring
+ ppreduce
+ jumpifability TARGET, ABILITY_IMMUNITY, BattleScript_ImmunityProtected
+ jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifstatus TARGET, STATUS_POISON, BattleScript_AlreadyPoisoned
+ jumpifstatus TARGET, STATUS_TOXIC_POISON, BattleScript_AlreadyPoisoned
+ jumpiftype TARGET, TYPE_POISON, BattleScript_NotAffected
+ jumpiftype TARGET, TYPE_STEEL, BattleScript_NotAffected
+ jumpifstatus TARGET, STATUS_ANY, BattleScript_ButItFailed
+ accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
+ jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
+ attackanimation
+ waitanimation
+ setmoveeffect EFFECT_POISON
+ seteffectprimary
+ resultmessage
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectParalyze::
+ attackcanceler
+ attackstring
+ ppreduce
+ jumpifability TARGET, ABILITY_LIMBER, BattleScript_LimberProtected
+ jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ typecalc
+ jumpifmovehadnoeffect BattleScript_ButItFailed
+ jumpifstatus TARGET, STATUS_PARALYSIS, BattleScript_AlreadyParalyzed
+ jumpifstatus TARGET, STATUS_ANY, BattleScript_ButItFailed
+ accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
+ jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
+ attackanimation
+ waitanimation
+ setmoveeffect EFFECT_PARALYSIS
+ seteffectprimary
+ resultmessage
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_AlreadyParalyzed::
+ various23 ATTACKER
+ pause 0x20
+ printstring STRINGID_PKMNISALREADYPARALYZED
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_LimberProtected::
+ copybyte gEffectBank, gBankTarget
+ setbyte cMULTISTRING_CHOOSER, 0x0
+ call BattleScript_PRLZPrevention
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectAttackDownHit::
+ setmoveeffect EFFECT_ATK_MINUS_1
+ goto BattleScript_EffectHit
+
+BattleScript_EffectDefenseDownHit::
+ setmoveeffect EFFECT_DEF_MINUS_1
+ goto BattleScript_EffectHit
+
+BattleScript_EffectSpeedDownHit::
+ setmoveeffect EFFECT_SPD_MINUS_1
+ goto BattleScript_EffectHit
+
+BattleScript_EffectSpecialAttackDownHit::
+ setmoveeffect EFFECT_SP_ATK_MINUS_1
+ goto BattleScript_EffectHit
+
+BattleScript_EffectSpecialDefenseDownHit::
+ setmoveeffect EFFECT_SP_DEF_MINUS_1
+ goto BattleScript_EffectHit
+
+BattleScript_EffectAccuracyDownHit::
+ setmoveeffect EFFECT_ACC_MINUS_1
+ goto BattleScript_EffectHit
+
+BattleScript_EffectSkyAttack::
+ jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn
+ jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_TwoTurnMovesSecondTurn
+ setbyte sTWOTURN_STRINGID, 0x3
+ call BattleScriptFirstChargingTurn
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectConfuseHit::
+ setmoveeffect EFFECT_CONFUSION
+ goto BattleScript_EffectHit
+
+BattleScript_EffectTwineedle::
+ attackcanceler
+ accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
+ setbyte sMULTIHIT_EFFECT, EFFECT_POISON
+ attackstring
+ ppreduce
+ setmultihitcounter 0x2
+ initmultihitstring
+ goto BattleScript_MultiHitLoop
+
+BattleScript_EffectSubstitute::
+ attackcanceler
+ ppreduce
+ attackstring
+ waitstate
+ jumpifstatus2 ATTACKER, STATUS2_SUBSTITUTE, BattleScript_AlreadyHasSubstitute
+ setsubstitute
+ jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x1, BattleScript_SubstituteAnim
+ pause 0x20
+ goto BattleScript_SubstituteString
+BattleScript_SubstituteAnim::
+ attackanimation
+ waitanimation
+ healthbarupdate ATTACKER
+ datahpupdate ATTACKER
+BattleScript_SubstituteString::
+ printfromtable gSubsituteUsedStringIds
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+BattleScript_AlreadyHasSubstitute::
+ various23 ATTACKER
+ pause 0x20
+ printstring STRINGID_PKMNHASSUBSTITUTE
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectRecharge::
+ attackcanceler
+ accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
+ setmoveeffect EFFECT_RECHARGE | AFFECTS_USER | CERTAIN
+ goto BattleScript_HitFromAtkString
+
+BattleScript_MoveUsedMustRecharge::
+ printstring STRINGID_PKMNMUSTRECHARGE
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectRage::
+ attackcanceler
+ accuracycheck BattleScript_RageMiss, ACC_CURR_MOVE
+ setmoveeffect EFFECT_RAGE
+ seteffectprimary
+ setmoveeffect 0
+ goto BattleScript_HitFromAtkString
+BattleScript_RageMiss::
+ setmoveeffect EFFECT_RAGE
+ clearstatusfromeffect ATTACKER
+ goto BattleScript_PrintMoveMissed
+
+BattleScript_EffectMimic::
+ attackcanceler
+ attackstring
+ ppreduce
+ jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
+ mimicattackcopy BattleScript_ButItFailed
+ attackanimation
+ waitanimation
+ printstring STRINGID_PKMNLEARNEDMOVE2
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectMetronome::
+ attackcanceler
+ attackstring
+ pause 0x20
+ attackanimation
+ waitanimation
+ setbyte sANIM_TURN, 0x0
+ setbyte sANIM_TARGETS_HIT, 0x0
+ metronome
+
+BattleScript_EffectLeechSeed::
+ attackcanceler
+ attackstring
+ pause 0x20
+ ppreduce
+ jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ accuracycheck BattleScript_DoLeechSeed, ACC_CURR_MOVE
+BattleScript_DoLeechSeed::
+ setseeded
+ attackanimation
+ waitanimation
+ printfromtable gLeechSeedStringIds
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectSplash::
+ attackcanceler
+ attackstring
+ ppreduce
+ attackanimation
+ waitanimation
+ incrementgamestat 0x1A
+ printstring STRINGID_BUTNOTHINGHAPPENED
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectDisable::
+ attackcanceler
+ attackstring
+ ppreduce
+ accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
+ disablelastusedattack BattleScript_ButItFailed
+ attackanimation
+ waitanimation
+ printstring STRINGID_PKMNMOVEWASDISABLED
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectLevelDamage::
+ attackcanceler
+ accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
+ attackstring
+ ppreduce
+ typecalc
+ bicbyte gBattleMoveFlags, MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE
+ dmgtolevel
+ adjustsetdamage
+ goto BattleScript_HitFromAtkAnimation
+
+BattleScript_EffectPsywave::
+ attackcanceler
+ accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
+ attackstring
+ ppreduce
+ typecalc
+ bicbyte gBattleMoveFlags, MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE
+ psywavedamageeffect
+ adjustsetdamage
+ goto BattleScript_HitFromAtkAnimation
+
+BattleScript_EffectCounter::
+ attackcanceler
+ counterdamagecalculator BattleScript_ButItFailedAtkStringPpReduce
+ accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
+ attackstring
+ ppreduce
+ typecalc2
+ adjustsetdamage
+ goto BattleScript_HitFromAtkAnimation
+
+BattleScript_EffectEncore::
+ attackcanceler
+ accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
+ attackstring
+ ppreduce
+ trysetencore BattleScript_ButItFailed
+ attackanimation
+ waitanimation
+ printstring STRINGID_PKMNGOTENCORE
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectPainSplit::
+ attackcanceler
+ attackstring
+ ppreduce
+ accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
+ painsplitdmgcalc BattleScript_ButItFailed
+ attackanimation
+ waitanimation
+ orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
+ healthbarupdate ATTACKER
+ datahpupdate ATTACKER
+ copyword gBattleMoveDamage, sPAINSPLIT_HP
+ healthbarupdate TARGET
+ datahpupdate TARGET
+ printstring STRINGID_SHAREDPAIN
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectSnore::
+ attackcanceler
+ jumpifstatus ATTACKER, STATUS_SLEEP, BattleScript_SnoreIsAsleep
+ attackstring
+ ppreduce
+ goto BattleScript_ButItFailed
+BattleScript_SnoreIsAsleep::
+ jumpifhalfword EQUAL, gChosenMove, MOVE_SLEEP_TALK, BattleScript_DoSnore
+ printstring STRINGID_PKMNFASTASLEEP
+ waitmessage 0x40
+ statusanimation ATTACKER
+BattleScript_DoSnore::
+ attackstring
+ ppreduce
+ accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ setmoveeffect EFFECT_FLINCH
+ goto BattleScript_HitFromCritCalc
+
+BattleScript_EffectConversion2::
+ attackcanceler
+ attackstring
+ ppreduce
+ settypetorandomresistance BattleScript_ButItFailed
+ attackanimation
+ waitanimation
+ printstring STRINGID_PKMNCHANGEDTYPE
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectLockOn::
+ attackcanceler
+ attackstring
+ ppreduce
+ jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
+ setalwayshitflag
+ attackanimation
+ waitanimation
+ printstring STRINGID_PKMNTOOKAIM
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectSketch::
+ attackcanceler
+ attackstring
+ ppreduce
+ jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ copymovepermanently BattleScript_ButItFailed
+ attackanimation
+ waitanimation
+ printstring STRINGID_PKMNSKETCHEDMOVE
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectSleepTalk::
+ attackcanceler
+ jumpifstatus ATTACKER, STATUS_SLEEP, BattleScript_SleepTalkIsAsleep
+ attackstring
+ ppreduce
+ goto BattleScript_ButItFailed
+BattleScript_SleepTalkIsAsleep::
+ printstring STRINGID_PKMNFASTASLEEP
+ waitmessage 0x40
+ statusanimation ATTACKER
+ attackstring
+ ppreduce
+ orword gHitMarker, HITMARKER_NO_PPDEDUCT
+ trychoosesleeptalkmove BattleScript_SleepTalkUsingMove
+ pause 0x40
+ goto BattleScript_ButItFailed
+BattleScript_SleepTalkUsingMove::
+ attackanimation
+ waitanimation
+ setbyte sANIM_TURN, 0x0
+ setbyte sANIM_TARGETS_HIT, 0x0
+ jumptorandomattack TRUE
+
+BattleScript_EffectDestinyBond::
+ attackcanceler
+ attackstring
+ ppreduce
+ setdestinybond
+ attackanimation
+ waitanimation
+ printstring STRINGID_PKMNTRYINGTOTAKEFOE
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectFlail::
+ remaininghptopower
+ goto BattleScript_EffectHit
+
+BattleScript_EffectSpite::
+ attackcanceler
+ attackstring
+ ppreduce
+ accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
+ tryspiteppreduce BattleScript_ButItFailed
+ attackanimation
+ waitanimation
+ printstring STRINGID_PKMNREDUCEDPP
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectHealBell::
+ attackcanceler
+ attackstring
+ ppreduce
+ healpartystatus
+ waitstate
+ attackanimation
+ waitanimation
+ printfromtable gPartyStatusHealStringIds
+ waitmessage 0x40
+ jumpifnotmove MOVE_HEAL_BELL, BattleScript_PartyHealEnd
+ jumpifbyte NO_COMMON_BITS, cMULTISTRING_CHOOSER, 0x1, BattleScript_CheckHealBellMon2Unaffected
+ printstring STRINGID_PKMNSXBLOCKSY
+ waitmessage 0x40
+BattleScript_CheckHealBellMon2Unaffected::
+ jumpifbyte NO_COMMON_BITS, cMULTISTRING_CHOOSER, 0x2, BattleScript_PartyHealEnd
+ printstring STRINGID_PKMNSXBLOCKSY2
+ waitmessage 0x40
+BattleScript_PartyHealEnd::
+ updatestatusicon ATTACKER_WITH_PARTNER
+ waitstate
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectTripleKick::
+ attackcanceler
+ attackstring
+ ppreduce
+ sethword sTRIPLE_KICK_POWER, 0x0
+ initmultihitstring
+ setmultihit 0x3
+BattleScript_TripleKickLoop::
+ jumpifhasnohp ATTACKER, BattleScript_TripleKickEnd
+ jumpifhasnohp TARGET, BattleScript_TripleKickNoMoreHits
+ jumpifhalfword EQUAL, gChosenMove, MOVE_SLEEP_TALK, BattleScript_DoTripleKickAttack
+ jumpifstatus ATTACKER, STATUS_SLEEP, BattleScript_TripleKickNoMoreHits
+BattleScript_DoTripleKickAttack::
+ accuracycheck BattleScript_TripleKickNoMoreHits, ACC_CURR_MOVE
+ movevaluescleanup
+ addbyte sTRIPLE_KICK_POWER, 10
+ addbyte sMULTIHIT_STRING + 4, 0x1
+ copyhword gDynamicBasePower, sTRIPLE_KICK_POWER
+ critcalc
+ damagecalc
+ typecalc
+ adjustnormaldamage
+ jumpifmovehadnoeffect BattleScript_TripleKickNoMoreHits
+ attackanimation
+ waitanimation
+ effectivenesssound
+ hitanimation TARGET
+ waitstate
+ healthbarupdate TARGET
+ datahpupdate TARGET
+ critmessage
+ waitmessage 0x40
+ printstring STRINGID_EMPTYSTRING3
+ waitmessage 0x1
+ setbyte sMOVEEND_STATE, 0x0
+ moveend 0x2, 0x10
+ jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_ENDURED, BattleScript_TripleKickPrintStrings
+ decrementmultihit BattleScript_TripleKickLoop
+ goto BattleScript_TripleKickPrintStrings
+BattleScript_TripleKickNoMoreHits::
+ pause 0x20
+ jumpifbyte EQUAL, sMULTIHIT_STRING + 4, 0x0, BattleScript_TripleKickPrintStrings
+ bicbyte gBattleMoveFlags, MOVESTATUS_MISSED
+BattleScript_TripleKickPrintStrings::
+ resultmessage
+ waitmessage 0x40
+ jumpifbyte EQUAL, sMULTIHIT_STRING + 4, 0x0, BattleScript_TripleKickEnd
+ jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_NOTAFFECTED, BattleScript_TripleKickEnd
+ copyarray gBattleTextBuff1, sMULTIHIT_STRING, 0x6
+ printstring STRINGID_HITXTIMES
+ waitmessage 0x40
+BattleScript_TripleKickEnd::
+ seteffectwithchance
+ tryfaintmon TARGET, FALSE, NULL
+ setbyte sMOVEEND_STATE, 0xE
+ moveend 0x0, 0x0
+ end
+
+BattleScript_EffectThief::
+ setmoveeffect EFFECT_STEAL_ITEM
+ goto BattleScript_EffectHit
+
+BattleScript_EffectMeanLook::
+ attackcanceler
+ attackstring
+ ppreduce
+ accuracycheck BattleScript_ButItFailed, NO_ACC_CALC
+ jumpifstatus2 TARGET, STATUS2_ESCAPE_PREVENTION, BattleScript_ButItFailed
+ jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ attackanimation
+ waitanimation
+ setmoveeffect EFFECT_PREVENT_ESCAPE
+ seteffectprimary
+ printstring STRINGID_TARGETCANTESCAPENOW
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectNightmare::
+ attackcanceler
+ attackstring
+ ppreduce
+ jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifstatus2 TARGET, STATUS2_NIGHTMARE, BattleScript_ButItFailed
+ jumpifstatus TARGET, STATUS_SLEEP, BattleScript_NightmareWorked
+ goto BattleScript_ButItFailed
+BattleScript_NightmareWorked::
+ attackanimation
+ waitanimation
+ setmoveeffect EFFECT_NIGHTMARE
+ seteffectprimary
+ printstring STRINGID_PKMNFELLINTONIGHTMARE
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectMinimize::
+ attackcanceler
+ setminimize
+ setstatchanger EVASION, 1, FALSE
+ goto BattleScript_EffectStatUpAfterAtkCanceler
+
+BattleScript_EffectCurse::
+ jumpiftype2 ATTACKER, TYPE_GHOST, BattleScript_GhostCurse
+ attackcanceler
+ attackstring
+ ppreduce
+ jumpifstat ATTACKER, GREATER_THAN, SPEED, 0x0, BattleScript_CurseTrySpeed
+ jumpifstat ATTACKER, NOT_EQUAL, ATK, 0xC, BattleScript_CurseTrySpeed
+ jumpifstat ATTACKER, EQUAL, DEF, 0xC, BattleScript_ButItFailed
+BattleScript_CurseTrySpeed::
+ copybyte gBankTarget, gBankAttacker
+ setbyte sANIM_TURN, 0x1
+ attackanimation
+ waitanimation
+ setstatchanger SPEED, 1, TRUE
+ statbuffchange AFFECTS_USER | 0x1, BattleScript_CurseTryAttack
+ printfromtable gStatDownStringIds
+ waitmessage 0x40
+BattleScript_CurseTryAttack::
+ setstatchanger ATK, 1, FALSE
+ statbuffchange AFFECTS_USER | 0x1, BattleScript_CurseTryDefence
+ printfromtable gStatUpStringIds
+ waitmessage 0x40
+BattleScript_CurseTryDefence::
+ setstatchanger DEF, 1, FALSE
+ statbuffchange AFFECTS_USER | 0x1, BattleScript_CurseEnd
+ printfromtable gStatUpStringIds
+ waitmessage 0x40
+BattleScript_CurseEnd::
+ goto BattleScript_MoveEnd
+BattleScript_GhostCurse::
+ jumpifbytenotequal gBankAttacker, gBankTarget, BattleScript_DoGhostCurse
+ getmovetarget ATTACKER
+BattleScript_DoGhostCurse::
+ attackcanceler
+ attackstring
+ ppreduce
+ jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
+ cursetarget BattleScript_ButItFailed
+ orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
+ setbyte sANIM_TURN, 0x0
+ attackanimation
+ waitanimation
+ healthbarupdate ATTACKER
+ datahpupdate ATTACKER
+ printstring STRINGID_PKMNLAIDCURSE
+ waitmessage 0x40
+ tryfaintmon ATTACKER, FALSE, NULL
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectProtect::
+BattleScript_EffectEndure::
+ attackcanceler
+ attackstring
+ ppreduce
+ setprotectlike
+ attackanimation
+ waitanimation
+ printfromtable gProtectLikeUsedStringIds
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectSpikes::
+ attackcanceler
+ trysetspikes BattleScript_ButItFailedAtkStringPpReduce
+ attackstring
+ ppreduce
+ attackanimation
+ waitanimation
+ printstring STRINGID_SPIKESSCATTERED
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectForesight::
+ attackcanceler
+ accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
+ attackstring
+ ppreduce
+ setforesight
+ attackanimation
+ waitanimation
+ printstring STRINGID_PKMNIDENTIFIED
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectPerishSong::
+ attackcanceler
+ attackstring
+ ppreduce
+ trysetperishsong BattleScript_ButItFailed
+ attackanimation
+ waitanimation
+ printstring STRINGID_FAINTINTHREE
+ waitmessage 0x40
+ setbyte sBANK, 0x0
+BattleScript_PerishSongLoop::
+ jumpifability SCRIPTING_BANK, ABILITY_SOUNDPROOF, BattleScript_PerishSongNotAffected
+BattleScript_PerishSongLoopIncrement::
+ addbyte sBANK, 0x1
+ jumpifbytenotequal sBANK, gNoOfAllBanks, BattleScript_PerishSongLoop
+ goto BattleScript_MoveEnd
+
+BattleScript_PerishSongNotAffected::
+ printstring STRINGID_PKMNSXBLOCKSY2
+ waitmessage 0x40
+ goto BattleScript_PerishSongLoopIncrement
+
+BattleScript_EffectSandstorm::
+ attackcanceler
+ attackstring
+ ppreduce
+ setsandstorm
+ goto BattleScript_MoveWeatherChange
+
+BattleScript_EffectRollout::
+ attackcanceler
+ attackstring
+ jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_RolloutCheckAccuracy
+ ppreduce
+BattleScript_RolloutCheckAccuracy::
+ accuracycheck BattleScript_RolloutHit, ACC_CURR_MOVE
+BattleScript_RolloutHit::
+ typecalc2
+ rolloutdamagecalculation
+ goto BattleScript_HitFromCritCalc
+
+BattleScript_EffectSwagger::
+ attackcanceler
+ jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_MakeMoveMissed
+ accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
+ attackstring
+ ppreduce
+ jumpifconfusedandstatmaxed ATK, BattleScript_ButItFailed
+ attackanimation
+ waitanimation
+ setstatchanger ATK, 2, FALSE
+ statbuffchange 0x1, BattleScript_SwaggerTryConfuse
+ jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_SwaggerTryConfuse
+ setgraphicalstatchangevalues
+ playanimation TARGET, ANIM_STATS_CHANGE, sANIM_ARG1
+ printfromtable gStatUpStringIds
+ waitmessage 0x40
+BattleScript_SwaggerTryConfuse::
+ jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_OwnTempoPrevents
+ jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
+ setmoveeffect EFFECT_CONFUSION
+ seteffectprimary
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectFuryCutter::
+ attackcanceler
+ attackstring
+ ppreduce
+ accuracycheck BattleScript_FuryCutterHit, ACC_CURR_MOVE
+BattleScript_FuryCutterHit::
+ furycuttercalc
+ critcalc
+ damagecalc
+ typecalc
+ jumpifmovehadnoeffect BattleScript_FuryCutterHit
+ adjustnormaldamage
+ goto BattleScript_HitFromAtkAnimation
+
+BattleScript_EffectAttract::
+ attackcanceler
+ attackstring
+ ppreduce
+ accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
+ tryinfatuating BattleScript_ButItFailed
+ attackanimation
+ waitanimation
+ printstring STRINGID_PKMNFELLINLOVE
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectReturn::
+BattleScript_EffectFrustration::
+ attackcanceler
+ accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
+ happinesstodamagecalculation
+ goto BattleScript_HitFromAtkString
+
+BattleScript_EffectPresent::
+ attackcanceler
+ accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
+ attackstring
+ ppreduce
+ typecalc
+ presentdamagecalculation
+
+BattleScript_EffectSafeguard::
+ attackcanceler
+ attackstring
+ ppreduce
+ setsafeguard
+ goto BattleScript_PrintReflectLightScreenSafeguardString
+
+BattleScript_EffectThawHit::
+ setmoveeffect EFFECT_BURN
+ goto BattleScript_EffectHit
+
+BattleScript_EffectMagnitude::
+ attackcanceler
+ attackstring
+ ppreduce
+ selectfirstvalidtarget
+ magnitudedamagecalculation
+ pause 0x20
+ printstring STRINGID_MAGNITUDESTRENGTH
+ waitmessage 0x40
+ goto BattleScript_HitsAllWithUndergroundBonusLoop
+
+BattleScript_EffectBatonPass::
+ attackcanceler
+ attackstring
+ ppreduce
+ jumpifbattletype BATTLE_TYPE_ARENA, BattleScript_ButItFailed
+ jumpifcantswitch ATK4F_DONT_CHECK_STATUSES | ATTACKER, BattleScript_ButItFailed
+ attackanimation
+ waitanimation
+ openpartyscreen 0x1, BattleScript_ButItFailed
+ switchoutabilities ATTACKER
+ waitstate
+ switchhandleorder ATTACKER, 0x2
+ returntoball ATTACKER
+ getswitchedmondata ATTACKER
+ switchindataupdate ATTACKER
+ hpthresholds ATTACKER
+ printstring STRINGID_SWITCHINMON
+ switchinanim ATTACKER, TRUE
+ waitstate
+ switchineffects ATTACKER
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectRapidSpin::
+ setmoveeffect EFFECT_RAPIDSPIN | AFFECTS_USER | CERTAIN
+ goto BattleScript_EffectHit
+
+BattleScript_EffectSonicboom::
+ attackcanceler
+ accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
+ attackstring
+ ppreduce
+ typecalc
+ bicbyte gBattleMoveFlags, MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE
+ setword gBattleMoveDamage, 20
+ adjustsetdamage
+ goto BattleScript_HitFromAtkAnimation
+
+BattleScript_EffectMorningSun::
+BattleScript_EffectSynthesis::
+BattleScript_EffectMoonlight::
+ attackcanceler
+ attackstring
+ ppreduce
+ recoverbasedonsunlight BattleScript_AlreadyAtFullHp
+ goto BattleScript_PresentHealTarget
+
+BattleScript_EffectHiddenPower::
+ hiddenpowercalc
+ goto BattleScript_EffectHit
+
+BattleScript_EffectRainDance::
+ attackcanceler
+ attackstring
+ ppreduce
+ setrain
+BattleScript_MoveWeatherChange::
+ attackanimation
+ waitanimation
+ printfromtable gMoveWeatherChangeStringIds
+ waitmessage 0x40
+ call BattleScript_WeatherFormChanges
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectSunnyDay::
+ attackcanceler
+ attackstring
+ ppreduce
+ setsunny
+ goto BattleScript_MoveWeatherChange
+
+BattleScript_EffectDefenseUpHit::
+ setmoveeffect EFFECT_DEF_PLUS_1 | AFFECTS_USER
+ goto BattleScript_EffectHit
+
+BattleScript_EffectAttackUpHit::
+ setmoveeffect EFFECT_ATK_PLUS_1 | AFFECTS_USER
+ goto BattleScript_EffectHit
+
+BattleScript_EffectAllStatsUpHit::
+ setmoveeffect EFFECT_ALL_STATS_UP | AFFECTS_USER
+ goto BattleScript_EffectHit
+
+BattleScript_EffectBellyDrum::
+ attackcanceler
+ attackstring
+ ppreduce
+ maxattackhalvehp BattleScript_ButItFailed
+ orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
+ attackanimation
+ waitanimation
+ healthbarupdate ATTACKER
+ datahpupdate ATTACKER
+ printstring STRINGID_PKMNCUTHPMAXEDATTACK
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectPsychUp::
+ attackcanceler
+ attackstring
+ ppreduce
+ copyfoestats BattleScript_ButItFailed
+ attackanimation
+ waitanimation
+ printstring STRINGID_PKMNCOPIEDSTATCHANGES
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectMirrorCoat::
+ attackcanceler
+ mirrorcoatdamagecalculator BattleScript_ButItFailedAtkStringPpReduce
+ accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
+ attackstring
+ ppreduce
+ typecalc2
+ adjustsetdamage
+ goto BattleScript_HitFromAtkAnimation
+
+BattleScript_EffectSkullBash::
+ jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn
+ jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_TwoTurnMovesSecondTurn
+ setbyte sTWOTURN_STRINGID, 0x2
+ call BattleScriptFirstChargingTurn
+ setstatchanger DEF, 1, FALSE
+ statbuffchange AFFECTS_USER | 0x1, BattleScript_SkullBashEnd
+ jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_SkullBashEnd
+ setgraphicalstatchangevalues
+ playanimation ATTACKER, ANIM_STATS_CHANGE, sANIM_ARG1
+ printfromtable gStatUpStringIds
+ waitmessage 0x40
+BattleScript_SkullBashEnd::
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectTwister::
+ jumpifnostatus3 TARGET, STATUS3_ON_AIR, BattleScript_FlinchEffect
+ orword gHitMarker, HITMARKER_IGNORE_ON_AIR
+ setbyte sDMG_MULTIPLIER, 0x2
+BattleScript_FlinchEffect::
+ setmoveeffect EFFECT_FLINCH
+ goto BattleScript_EffectHit
+
+BattleScript_EffectEarthquake::
+ attackcanceler
+ attackstring
+ ppreduce
+ selectfirstvalidtarget
+BattleScript_HitsAllWithUndergroundBonusLoop::
+ movevaluescleanup
+ jumpifnostatus3 TARGET, STATUS3_UNDERGROUND, BattleScript_HitsAllNoUndergroundBonus
+ orword gHitMarker, HITMARKER_IGNORE_UNDERGROUND
+ setbyte sDMG_MULTIPLIER, 0x2
+ goto BattleScript_DoHitAllWithUndergroundBonus
+BattleScript_HitsAllNoUndergroundBonus::
+ bicword gHitMarker, HITMARKER_IGNORE_UNDERGROUND
+ setbyte sDMG_MULTIPLIER, 0x1
+BattleScript_DoHitAllWithUndergroundBonus::
+ accuracycheck BattleScript_HitAllWithUndergroundBonusMissed, ACC_CURR_MOVE
+ critcalc
+ damagecalc
+ typecalc
+ adjustnormaldamage
+ attackanimation
+ waitanimation
+ effectivenesssound
+ hitanimation TARGET
+ waitstate
+ healthbarupdate TARGET
+ datahpupdate TARGET
+ critmessage
+ waitmessage 0x40
+ resultmessage
+ waitmessage 0x40
+ printstring STRINGID_EMPTYSTRING3
+ waitmessage 0x1
+ tryfaintmon TARGET, FALSE, NULL
+ setbyte sMOVEEND_STATE, 0x0
+ moveend 0x2, 0x10
+ jumpifnexttargetvalid BattleScript_HitsAllWithUndergroundBonusLoop
+ end
+BattleScript_HitAllWithUndergroundBonusMissed::
+ pause 0x20
+ typecalc
+ effectivenesssound
+ resultmessage
+ waitmessage 0x40
+ setbyte sMOVEEND_STATE, 0x0
+ moveend 0x2, 0x10
+ jumpifnexttargetvalid BattleScript_HitsAllWithUndergroundBonusLoop
+ end
+
+BattleScript_EffectFutureSight::
+ attackcanceler
+ attackstring
+ ppreduce
+ trysetfutureattack BattleScript_ButItFailed
+ attackanimation
+ waitanimation
+ printfromtable gFutureMoveUsedStringIds
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectGust::
+ jumpifnostatus3 TARGET, STATUS3_ON_AIR, BattleScript_EffectHit
+ orword gHitMarker, HITMARKER_IGNORE_ON_AIR
+ setbyte sDMG_MULTIPLIER, 0x2
+ goto BattleScript_EffectHit
+
+BattleScript_EffectStomp::
+ jumpifnostatus3 TARGET, STATUS3_MINIMIZED, BattleScript_FlinchEffect
+ setbyte sDMG_MULTIPLIER, 0x2
+ goto BattleScript_FlinchEffect
+
+BattleScript_EffectSolarbeam::
+ jumpifabilitypresent ABILITY_CLOUD_NINE, BattleScript_SolarbeamDecideTurn
+ jumpifabilitypresent ABILITY_AIR_LOCK, BattleScript_SolarbeamDecideTurn
+ jumpifhalfword COMMON_BITS, gBattleWeather, WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT, BattleScript_SolarbeamOnFirstTurn
+BattleScript_SolarbeamDecideTurn::
+ jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn
+ jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_TwoTurnMovesSecondTurn
+ setbyte sTWOTURN_STRINGID, 0x1
+ call BattleScriptFirstChargingTurn
+ goto BattleScript_MoveEnd
+BattleScript_SolarbeamOnFirstTurn::
+ orword gHitMarker, HITMARKER_x8000000
+ setmoveeffect EFFECT_CHARGING | AFFECTS_USER
+ seteffectprimary
+ ppreduce
+ goto BattleScript_TwoTurnMovesSecondTurn
+
+BattleScript_EffectThunder::
+ setmoveeffect EFFECT_PARALYSIS
+ orword gHitMarker, HITMARKER_IGNORE_ON_AIR
+ goto BattleScript_EffectHit
+
+BattleScript_EffectTeleport::
+ attackcanceler
+ attackstring
+ ppreduce
+ jumpifbattletype BATTLE_TYPE_TRAINER, BattleScript_ButItFailed
+ getifcantrunfrombattle ATTACKER
+ jumpifbyte EQUAL, gBattleCommunication, 0x1, BattleScript_ButItFailed
+ jumpifbyte EQUAL, gBattleCommunication, 0x2, BattleScript_PrintAbilityMadeIneffective
+ attackanimation
+ waitanimation
+ printstring STRINGID_PKMNFLEDFROMBATTLE
+ waitmessage 0x40
+ setoutcomeonteleport ATTACKER
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectBeatUp::
+ attackcanceler
+ accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
+ attackstring
+ pause 0x20
+ ppreduce
+ setbyte gBattleCommunication, 0x0
+BattleScript_BeatUpLoop::
+ movevaluescleanup
+ trydobeatup BattleScript_BeatUpEnd, BattleScript_ButItFailed
+ printstring STRINGID_PKMNATTACK
+ critcalc
+ jumpifbyte NOT_EQUAL, gCritMultiplier, 0x2, BattleScript_BeatUpAttack
+ manipulatedamage ATK80_DMG_DOUBLED
+BattleScript_BeatUpAttack::
+ adjustnormaldamage
+ attackanimation
+ waitanimation
+ effectivenesssound
+ hitanimation TARGET
+ waitstate
+ healthbarupdate TARGET
+ datahpupdate TARGET
+ critmessage
+ waitmessage 0x40
+ resultmessage
+ waitmessage 0x40
+ tryfaintmon TARGET, FALSE, NULL
+ setbyte sMOVEEND_STATE, 0x0
+ moveend 0x2, 0x10
+ goto BattleScript_BeatUpLoop
+BattleScript_BeatUpEnd::
+ end
+
+BattleScript_EffectSemiInvulnerable::
+ jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_SecondTurnSemiInvulnerable
+ jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_SecondTurnSemiInvulnerable
+ jumpifmove MOVE_FLY, BattleScript_FirstTurnFly
+ jumpifmove MOVE_DIVE, BattleScript_FirstTurnDive
+ jumpifmove MOVE_BOUNCE, BattleScript_FirstTurnBounce
+ setbyte sTWOTURN_STRINGID, 0x5
+ goto BattleScript_FirstTurnSemiInvulnerable
+
+BattleScript_FirstTurnBounce::
+ setbyte sTWOTURN_STRINGID, 0x7
+ goto BattleScript_FirstTurnSemiInvulnerable
+
+BattleScript_FirstTurnDive::
+ setbyte sTWOTURN_STRINGID, 0x6
+ goto BattleScript_FirstTurnSemiInvulnerable
+
+BattleScript_FirstTurnFly::
+ setbyte sTWOTURN_STRINGID, 0x4
+BattleScript_FirstTurnSemiInvulnerable::
+ call BattleScriptFirstChargingTurn
+ setsemiinvulnerablebit
+ goto BattleScript_MoveEnd
+
+BattleScript_SecondTurnSemiInvulnerable::
+ attackcanceler
+ setmoveeffect EFFECT_CHARGING
+ setbyte sANIM_TURN, 0x1
+ clearstatusfromeffect ATTACKER
+ orword gHitMarker, HITMARKER_NO_PPDEDUCT
+ jumpifnotmove MOVE_BOUNCE, BattleScript_SemiInvulnerableTryHit
+ setmoveeffect EFFECT_PARALYSIS
+BattleScript_SemiInvulnerableTryHit::
+ accuracycheck BattleScript_SemiInvulnerableMiss, ACC_CURR_MOVE
+ clearsemiinvulnerablebit
+ goto BattleScript_HitFromAtkString
+
+BattleScript_SemiInvulnerableMiss::
+ clearsemiinvulnerablebit
+ goto BattleScript_PrintMoveMissed
+
+BattleScript_EffectDefenseCurl::
+ attackcanceler
+ attackstring
+ ppreduce
+ setdefensecurlbit
+ setstatchanger DEF, 1, FALSE
+ statbuffchange AFFECTS_USER | 0x1, BattleScript_DefenseCurlDoStatUpAnim
+ jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_StatUpPrintString
+ attackanimation
+ waitanimation
+BattleScript_DefenseCurlDoStatUpAnim::
+ goto BattleScript_StatUpDoAnim
+
+BattleScript_EffectSoftboiled::
+ attackcanceler
+ attackstring
+ ppreduce
+ tryhealhalfhealth BattleScript_AlreadyAtFullHp, TARGET
+BattleScript_PresentHealTarget::
+ attackanimation
+ waitanimation
+ orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
+ healthbarupdate TARGET
+ datahpupdate TARGET
+ printstring STRINGID_PKMNREGAINEDHEALTH
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_AlreadyAtFullHp::
+ pause 0x20
+ printstring STRINGID_PKMNHPFULL
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectFakeOut::
+ attackcanceler
+ jumpifnotfirstturn BattleScript_ButItFailedAtkStringPpReduce
+ setmoveeffect EFFECT_FLINCH | CERTAIN
+ goto BattleScript_EffectHit
+
+BattleScript_ButItFailedAtkStringPpReduce::
+ attackstring
+BattleScript_ButItFailedPpReduce::
+ ppreduce
+BattleScript_ButItFailed::
+ pause 0x20
+ orbyte gBattleMoveFlags, MOVESTATUS_FAILED
+ resultmessage
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_NotAffected::
+ pause 0x20
+ orbyte gBattleMoveFlags, MOVESTATUS_NOTAFFECTED
+ resultmessage
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectUproar::
+ attackcanceler
+ accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
+ setmoveeffect EFFECT_UPROAR | AFFECTS_USER
+ attackstring
+ jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_UproarHit
+ ppreduce
+BattleScript_UproarHit::
+ nop
+ goto BattleScript_HitFromCritCalc
+
+BattleScript_EffectStockpile::
+ attackcanceler
+ attackstring
+ ppreduce
+ stockpile
+ attackanimation
+ waitanimation
+ printfromtable gStockpileUsedStringIds
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectSpitUp::
+ attackcanceler
+ jumpifbyte EQUAL, gBattleCommunication + 6, 0x1, BattleScript_82D9FA2
+ attackstring
+ ppreduce
+ accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
+ stockpiletobasedamage BattleScript_SpitUpFail
+ typecalc
+ adjustsetdamage
+ goto BattleScript_HitFromAtkAnimation
+BattleScript_SpitUpFail::
+ pause 0x20
+ printstring STRINGID_FAILEDTOSPITUP
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_82D9FA2::
+ attackstring
+ ppreduce
+ pause 0x40
+ stockpiletobasedamage BattleScript_SpitUpFail
+ resultmessage
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectSwallow::
+ attackcanceler
+ attackstring
+ ppreduce
+ stockpiletohpheal BattleScript_SwallowFail
+ goto BattleScript_PresentHealTarget
+
+BattleScript_SwallowFail::
+ pause 0x20
+ printfromtable gSwallowFailStringIds
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectHail::
+ attackcanceler
+ attackstring
+ ppreduce
+ sethail
+ goto BattleScript_MoveWeatherChange
+
+BattleScript_EffectTorment::
+ attackcanceler
+ attackstring
+ ppreduce
+ accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
+ settorment BattleScript_ButItFailed
+ attackanimation
+ waitanimation
+ printstring STRINGID_PKMNSUBJECTEDTOTORMENT
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectFlatter::
+ attackcanceler
+ jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_MakeMoveMissed
+ accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
+ attackstring
+ ppreduce
+ jumpifconfusedandstatmaxed SPATK, BattleScript_ButItFailed
+ attackanimation
+ waitanimation
+ setstatchanger SPATK, 1, FALSE
+ statbuffchange 0x1, BattleScript_FlatterTryConfuse
+ jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_FlatterTryConfuse
+ setgraphicalstatchangevalues
+ playanimation TARGET, ANIM_STATS_CHANGE, sANIM_ARG1
+ printfromtable gStatUpStringIds
+ waitmessage 0x40
+BattleScript_FlatterTryConfuse::
+ jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_OwnTempoPrevents
+ jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
+ setmoveeffect EFFECT_CONFUSION
+ seteffectprimary
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectWillOWisp::
+ attackcanceler
+ attackstring
+ ppreduce
+ jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifstatus TARGET, STATUS_BURN, BattleScript_AlreadyBurned
+ jumpiftype TARGET, TYPE_FIRE, BattleScript_NotAffected
+ jumpifability TARGET, ABILITY_WATER_VEIL, BattleScript_WaterVeilPrevents
+ jumpifstatus TARGET, STATUS_ANY, BattleScript_ButItFailed
+ accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
+ jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
+ attackanimation
+ waitanimation
+ setmoveeffect EFFECT_BURN
+ seteffectprimary
+ goto BattleScript_MoveEnd
+
+BattleScript_WaterVeilPrevents::
+ copybyte gEffectBank, gBankTarget
+ setbyte cMULTISTRING_CHOOSER, 0x0
+ call BattleScript_BRNPrevention
+ goto BattleScript_MoveEnd
+
+BattleScript_AlreadyBurned::
+ various23 ATTACKER
+ pause 0x20
+ printstring STRINGID_PKMNALREADYHASBURN
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectMemento::
+ attackcanceler
+ jumpifbyte EQUAL, gBattleCommunication + 6, 0x1, BattleScript_82DA153
+ attackstring
+ ppreduce
+ jumpifattackandspecialattackcannotfall BattleScript_ButItFailed
+ setatkhptozero
+ attackanimation
+ waitanimation
+ jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_82DA148
+ setbyte sFIELD_1B, 0x0
+ playstatchangeanimation TARGET, 0x12, 0x7
+ playstatchangeanimation TARGET, 0x2, 0x3
+ setstatchanger ATK, 2, TRUE
+ statbuffchange 0x1, BattleScript_82DA119
+ jumpifbyte GREATER_THAN, cMULTISTRING_CHOOSER, 0x1, BattleScript_82DA119
+ printfromtable gStatDownStringIds
+ waitmessage 0x40
+BattleScript_82DA119::
+ playstatchangeanimation TARGET, 0x10, 0x3
+ setstatchanger SPATK, 2, TRUE
+ statbuffchange 0x1, BattleScript_82DA13C
+ jumpifbyte GREATER_THAN, cMULTISTRING_CHOOSER, 0x1, BattleScript_82DA13C
+ printfromtable gStatDownStringIds
+ waitmessage 0x40
+BattleScript_82DA13C::
+ tryfaintmon ATTACKER, FALSE, NULL
+ goto BattleScript_MoveEnd
+BattleScript_82DA148::
+ printstring STRINGID_BUTNOEFFECT
+ waitmessage 0x40
+ goto BattleScript_82DA13C
+BattleScript_82DA153::
+ attackstring
+ ppreduce
+ jumpifattackandspecialattackcannotfall BattleScript_82DA15A
+BattleScript_82DA15A::
+ setatkhptozero
+ pause 0x40
+ effectivenesssound
+ resultmessage
+ waitmessage 0x40
+ tryfaintmon ATTACKER, FALSE, NULL
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectFacade::
+ jumpifstatus ATTACKER, STATUS_POISON | STATUS_BURN | STATUS_PARALYSIS | STATUS_TOXIC_POISON, BattleScript_FacadeDoubleDmg
+ goto BattleScript_EffectHit
+
+BattleScript_FacadeDoubleDmg::
+ setbyte sDMG_MULTIPLIER, 0x2
+ goto BattleScript_EffectHit
+
+BattleScript_EffectFocusPunch::
+ attackcanceler
+ jumpifnodamage BattleScript_HitFromAccCheck
+ ppreduce
+ printstring STRINGID_PKMNLOSTFOCUS
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectSmellingsalt::
+ jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_EffectHit
+ setmoveeffect EFFECT_REMOVE_PARALYSIS | CERTAIN
+ jumpifstatus TARGET, STATUS_PARALYSIS, BattleScript_SmellingsaltDoubleDmg
+ goto BattleScript_EffectHit
+
+BattleScript_SmellingsaltDoubleDmg::
+ setbyte sDMG_MULTIPLIER, 0x2
+ goto BattleScript_EffectHit
+
+BattleScript_EffectFollowMe::
+ attackcanceler
+ attackstring
+ ppreduce
+ setforcedtarget
+ attackanimation
+ waitanimation
+ printstring STRINGID_PKMNCENTERATTENTION
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectNaturePower::
+ attackcanceler
+ attackstring
+ pause 0x20
+ callterrainattack
+ printstring STRINGID_NATUREPOWERTURNEDINTO
+ waitmessage 0x40
+ return
+
+BattleScript_EffectCharge::
+ attackcanceler
+ attackstring
+ ppreduce
+ setcharge
+ attackanimation
+ waitanimation
+ printstring STRINGID_PKMNCHARGINGPOWER
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectTaunt::
+ attackcanceler
+ attackstring
+ ppreduce
+ accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
+ settaunt BattleScript_ButItFailed
+ attackanimation
+ waitanimation
+ printstring STRINGID_PKMNFELLFORTAUNT
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectHelpingHand::
+ attackcanceler
+ attackstring
+ ppreduce
+ trysethelpinghand BattleScript_ButItFailed
+ attackanimation
+ waitanimation
+ printstring STRINGID_PKMNREADYTOHELP
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectTrick::
+ attackcanceler
+ attackstring
+ ppreduce
+ jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
+ tryswapitems BattleScript_ButItFailed
+ attackanimation
+ waitanimation
+ printstring STRINGID_PKMNSWITCHEDITEMS
+ waitmessage 0x40
+ printfromtable gItemSwapStringIds
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectRolePlay::
+ attackcanceler
+ attackstring
+ ppreduce
+ accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
+ trycopyability BattleScript_ButItFailed
+ attackanimation
+ waitanimation
+ printstring STRINGID_PKMNCOPIEDFOE
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectWish::
+ attackcanceler
+ attackstring
+ ppreduce
+ trywish 0x0, BattleScript_ButItFailed
+ attackanimation
+ waitanimation
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectAssist::
+ attackcanceler
+ attackstring
+ asistattackselect BattleScript_ButItFailedPpReduce
+ attackanimation
+ waitanimation
+ setbyte sANIM_TURN, 0x0
+ setbyte sANIM_TARGETS_HIT, 0x0
+ jumptorandomattack TRUE
+
+BattleScript_EffectIngrain::
+ attackcanceler
+ attackstring
+ ppreduce
+ trysetroots BattleScript_ButItFailed
+ attackanimation
+ waitanimation
+ printstring STRINGID_PKMNPLANTEDROOTS
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectSuperpower::
+ setmoveeffect EFFECT_ATK_DEF_DOWN | AFFECTS_USER | CERTAIN
+ goto BattleScript_EffectHit
+
+BattleScript_EffectMagicCoat::
+ attackcanceler
+ trysetmagiccoat BattleScript_ButItFailedAtkStringPpReduce
+ attackstring
+ ppreduce
+ attackanimation
+ waitanimation
+ printstring STRINGID_PKMNSHROUDEDITSELF
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectRecycle::
+ attackcanceler
+ attackstring
+ ppreduce
+ tryrecycleitem BattleScript_ButItFailed
+ attackanimation
+ waitanimation
+ printstring STRINGID_XFOUNDONEY
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectRevenge::
+ doubledamagedealtifdamaged
+ goto BattleScript_EffectHit
+
+BattleScript_EffectBrickBreak::
+ attackcanceler
+ accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE
+ attackstring
+ ppreduce
+ removelightscreenreflect
+ critcalc
+ damagecalc
+ typecalc
+ adjustnormaldamage
+ jumpifbyte EQUAL, sANIM_TURN, 0x0, BattleScript_BrickBreakAnim
+ bicbyte gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED
+BattleScript_BrickBreakAnim::
+ attackanimation
+ waitanimation
+ jumpifbyte LESS_THAN, sANIM_TURN, 0x2, BattleScript_BrickBreakDoHit
+ printstring STRINGID_THEWALLSHATTERED
+ waitmessage 0x40
+BattleScript_BrickBreakDoHit::
+ typecalc2
+ effectivenesssound
+ hitanimation TARGET
+ waitstate
+ healthbarupdate TARGET
+ datahpupdate TARGET
+ critmessage
+ waitmessage 0x40
+ resultmessage
+ waitmessage 0x40
+ seteffectwithchance
+ tryfaintmon TARGET, FALSE, NULL
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectYawn::
+ attackcanceler
+ attackstring
+ ppreduce
+ jumpifability TARGET, ABILITY_VITAL_SPIRIT, BattleScript_PrintBankAbilityMadeIneffective
+ jumpifability TARGET, ABILITY_INSOMNIA, BattleScript_PrintBankAbilityMadeIneffective
+ jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected
+ accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
+ jumpifcantmakeasleep BattleScript_ButItFailed
+ setyawn BattleScript_ButItFailed
+ attackanimation
+ waitanimation
+ printstring STRINGID_PKMNWASMADEDROWSY
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+BattleScript_PrintBankAbilityMadeIneffective::
+ copybyte sBANK, sBANK_WITH_ABILITY
+BattleScript_PrintAbilityMadeIneffective::
+ pause 0x20
+ printstring STRINGID_PKMNSXMADEITINEFFECTIVE
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectKnockOff::
+ setmoveeffect EFFECT_KNOCK_OFF
+ goto BattleScript_EffectHit
+
+BattleScript_EffectEndeavor::
+ attackcanceler
+ attackstring
+ ppreduce
+ setdamagetohealthdifference BattleScript_ButItFailed
+ copyword gHpDealt, gBattleMoveDamage
+ accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ typecalc
+ jumpifmovehadnoeffect BattleScript_HitFromAtkAnimation
+ bicbyte gBattleMoveFlags, MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE
+ copyword gBattleMoveDamage, gHpDealt
+ adjustsetdamage
+ goto BattleScript_HitFromAtkAnimation
+
+BattleScript_EffectEruption::
+ scaledamagebyhealthratio
+ goto BattleScript_EffectHit
+
+BattleScript_EffectSkillSwap::
+ attackcanceler
+ attackstring
+ ppreduce
+ accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
+ tryswapabilities BattleScript_ButItFailed
+ attackanimation
+ waitanimation
+ printstring STRINGID_PKMNSWAPPEDABILITIES
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectImprison::
+ attackcanceler
+ attackstring
+ ppreduce
+ tryimprision BattleScript_ButItFailed
+ attackanimation
+ waitanimation
+ printstring STRINGID_PKMNSEALEDOPPONENTMOVE
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectRefresh::
+ attackcanceler
+ attackstring
+ ppreduce
+ cureifburnedparalysedorpoisoned BattleScript_ButItFailed
+ attackanimation
+ waitanimation
+ printstring STRINGID_PKMNSTATUSNORMAL
+ waitmessage 0x40
+ updatestatusicon ATTACKER
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectGrudge::
+ attackcanceler
+ attackstring
+ ppreduce
+ trysetgrudge BattleScript_ButItFailed
+ attackanimation
+ waitanimation
+ printstring STRINGID_PKMNWANTSGRUDGE
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectSnatch::
+ attackcanceler
+ trysetsnatch BattleScript_ButItFailedAtkStringPpReduce
+ attackstring
+ ppreduce
+ attackanimation
+ waitanimation
+ pause 0x20
+ printstring STRINGID_PKMNWAITSFORTARGET
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectLowKick::
+ attackcanceler
+ attackstring
+ ppreduce
+ weightdamagecalculation
+ accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
+ goto BattleScript_HitFromCritCalc
+
+BattleScript_EffectSecretPower::
+ getsecretpowereffect
+ goto BattleScript_EffectHit
+
+BattleScript_EffectDoubleEdge::
+ setmoveeffect EFFECT_RECOIL_33_PARALYSIS | AFFECTS_USER | CERTAIN
+ goto BattleScript_EffectHit
+
+BattleScript_EffectTeeterDance::
+ attackcanceler
+ attackstring
+ ppreduce
+ setbyte gBankTarget, 0x0
+BattleScript_TeeterDanceLoop::
+ movevaluescleanup
+ setmoveeffect EFFECT_CONFUSION
+ jumpifbyteequal gBankAttacker, gBankTarget, BattleScript_TeeterDanceLoopIncrement
+ jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_TeeterDanceOwnTempoPrevents
+ jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_TeeterDanceSubstitutePrevents
+ jumpifstatus2 TARGET, STATUS2_CONFUSION, BattleScript_TeeterDanceAlreadyConfused
+ jumpifhasnohp TARGET, BattleScript_TeeterDanceLoopIncrement
+ accuracycheck BattleScript_TeeterDanceMissed, ACC_CURR_MOVE
+ jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_TeeterDanceSafeguardProtected
+ attackanimation
+ waitanimation
+ seteffectprimary
+ resultmessage
+ waitmessage 0x40
+BattleScript_TeeterDanceDoMoveEndIncrement::
+ setbyte sMOVEEND_STATE, 0x0
+ moveend 0x2, 0x10
+BattleScript_TeeterDanceLoopIncrement::
+ addbyte gBankTarget, 0x1
+ jumpifbytenotequal gBankTarget, gNoOfAllBanks, BattleScript_TeeterDanceLoop
+ end
+
+BattleScript_TeeterDanceOwnTempoPrevents::
+ pause 0x20
+ printstring STRINGID_PKMNPREVENTSCONFUSIONWITH
+ waitmessage 0x40
+ goto BattleScript_TeeterDanceDoMoveEndIncrement
+
+BattleScript_TeeterDanceSafeguardProtected::
+ pause 0x20
+ printstring STRINGID_PKMNUSEDSAFEGUARD
+ waitmessage 0x40
+ goto BattleScript_TeeterDanceDoMoveEndIncrement
+
+BattleScript_TeeterDanceSubstitutePrevents::
+ pause 0x20
+ printstring STRINGID_BUTITFAILED
+ waitmessage 0x40
+ goto BattleScript_TeeterDanceDoMoveEndIncrement
+
+BattleScript_TeeterDanceAlreadyConfused::
+ various23 ATTACKER
+ pause 0x20
+ printstring STRINGID_PKMNALREADYCONFUSED
+ waitmessage 0x40
+ goto BattleScript_TeeterDanceDoMoveEndIncrement
+
+BattleScript_TeeterDanceMissed::
+ resultmessage
+ waitmessage 0x40
+ goto BattleScript_TeeterDanceDoMoveEndIncrement
+
+BattleScript_EffectMudSport::
+BattleScript_EffectWaterSport::
+ attackcanceler
+ attackstring
+ ppreduce
+ settypebasedhalvers BattleScript_ButItFailed
+ attackanimation
+ waitanimation
+ printfromtable gSportsUsedStringIds
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectPoisonFang::
+ setmoveeffect EFFECT_TOXIC
+ goto BattleScript_EffectHit
+
+BattleScript_EffectWeatherBall::
+ setweatherballtype
+ goto BattleScript_EffectHit
+
+BattleScript_EffectOverheat::
+ setmoveeffect EFFECT_SP_ATK_TWO_DOWN | AFFECTS_USER | CERTAIN
+ goto BattleScript_EffectHit
+
+BattleScript_EffectTickle::
+ attackcanceler
+ attackstring
+ ppreduce
+ jumpifstat TARGET, GREATER_THAN, ATK, 0x0, BattleScript_TickleDoMoveAnim
+ jumpifstat TARGET, EQUAL, DEF, 0x0, BattleScript_CantLowerMultipleStats
+BattleScript_TickleDoMoveAnim::
+ accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE
+ attackanimation
+ waitanimation
+ setbyte sFIELD_1B, 0x0
+ playstatchangeanimation TARGET, 0x6, 0x5
+ playstatchangeanimation TARGET, 0x2, 0x1
+ setstatchanger ATK, 1, TRUE
+ statbuffchange 0x1, BattleScript_TickleTryLowerDef
+ jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_TickleTryLowerDef
+ printfromtable gStatDownStringIds
+ waitmessage 0x40
+BattleScript_TickleTryLowerDef::
+ playstatchangeanimation TARGET, 0x4, 0x1
+ setstatchanger DEF, 1, TRUE
+ statbuffchange 0x1, BattleScript_TickleEnd
+ jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_TickleEnd
+ printfromtable gStatDownStringIds
+ waitmessage 0x40
+BattleScript_TickleEnd::
+ goto BattleScript_MoveEnd
+
+BattleScript_CantLowerMultipleStats::
+ pause 0x20
+ orbyte gBattleMoveFlags, MOVESTATUS_FAILED
+ printstring STRINGID_STATSWONTDECREASE2
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectCosmicPower::
+ attackcanceler
+ attackstring
+ ppreduce
+ jumpifstat ATTACKER, LESS_THAN, DEF, 0xC, BattleScript_CosmicPowerDoMoveAnim
+ jumpifstat ATTACKER, EQUAL, SPDEF, 0xC, BattleScript_CantRaiseMultipleStats
+BattleScript_CosmicPowerDoMoveAnim::
+ attackanimation
+ waitanimation
+ setbyte sFIELD_1B, 0x0
+ playstatchangeanimation ATTACKER, 0x24, 0x0
+ setstatchanger DEF, 1, FALSE
+ statbuffchange AFFECTS_USER | 0x1, BattleScript_CosmicPowerTrySpDef
+ jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_CosmicPowerTrySpDef
+ printfromtable gStatUpStringIds
+ waitmessage 0x40
+BattleScript_CosmicPowerTrySpDef::
+ setstatchanger SPDEF, 1, FALSE
+ statbuffchange AFFECTS_USER | 0x1, BattleScript_CosmicPowerEnd
+ jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_CosmicPowerEnd
+ printfromtable gStatUpStringIds
+ waitmessage 0x40
+BattleScript_CosmicPowerEnd::
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectSkyUppercut::
+ orword gHitMarker, HITMARKER_IGNORE_ON_AIR
+ goto BattleScript_EffectHit
+
+BattleScript_EffectBulkUp::
+ attackcanceler
+ attackstring
+ ppreduce
+ jumpifstat ATTACKER, LESS_THAN, ATK, 0xC, BattleScript_BulkUpDoMoveAnim
+ jumpifstat ATTACKER, EQUAL, DEF, 0xC, BattleScript_CantRaiseMultipleStats
+BattleScript_BulkUpDoMoveAnim::
+ attackanimation
+ waitanimation
+ setbyte sFIELD_1B, 0x0
+ playstatchangeanimation ATTACKER, 0x6, 0x0
+ setstatchanger ATK, 1, FALSE
+ statbuffchange AFFECTS_USER | 0x1, BattleScript_BulkUpTryDef
+ jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_BulkUpTryDef
+ printfromtable gStatUpStringIds
+ waitmessage 0x40
+BattleScript_BulkUpTryDef::
+ setstatchanger DEF, 1, FALSE
+ statbuffchange AFFECTS_USER | 0x1, BattleScript_BulkUpEnd
+ jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_BulkUpEnd
+ printfromtable gStatUpStringIds
+ waitmessage 0x40
+BattleScript_BulkUpEnd::
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectCalmMind::
+ attackcanceler
+ attackstring
+ ppreduce
+ jumpifstat ATTACKER, LESS_THAN, SPATK, 0xC, BattleScript_CalmMindDoMoveAnim
+ jumpifstat ATTACKER, EQUAL, SPDEF, 0xC, BattleScript_CantRaiseMultipleStats
+BattleScript_CalmMindDoMoveAnim::
+ attackanimation
+ waitanimation
+ setbyte sFIELD_1B, 0x0
+ playstatchangeanimation ATTACKER, 0x30, 0x0
+ setstatchanger SPATK, 1, FALSE
+ statbuffchange AFFECTS_USER | 0x1, BattleScript_CalmMindTrySpDef
+ jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_CalmMindTrySpDef
+ printfromtable gStatUpStringIds
+ waitmessage 0x40
+BattleScript_CalmMindTrySpDef::
+ setstatchanger SPDEF, 1, FALSE
+ statbuffchange AFFECTS_USER | 0x1, BattleScript_CalmMindEnd
+ jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_CalmMindEnd
+ printfromtable gStatUpStringIds
+ waitmessage 0x40
+BattleScript_CalmMindEnd::
+ goto BattleScript_MoveEnd
+
+BattleScript_CantRaiseMultipleStats::
+ pause 0x20
+ orbyte gBattleMoveFlags, MOVESTATUS_FAILED
+ printstring STRINGID_STATSWONTINCREASE2
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectDragonDance::
+ attackcanceler
+ attackstring
+ ppreduce
+ jumpifstat ATTACKER, LESS_THAN, ATK, 0xC, BattleScript_DragonDanceDoMoveAnim
+ jumpifstat ATTACKER, EQUAL, SPEED, 0xC, BattleScript_CantRaiseMultipleStats
+BattleScript_DragonDanceDoMoveAnim::
+ attackanimation
+ waitanimation
+ setbyte sFIELD_1B, 0x0
+ playstatchangeanimation ATTACKER, 0xA, 0x0
+ setstatchanger ATK, 1, FALSE
+ statbuffchange AFFECTS_USER | 0x1, BattleScript_DragonDanceTrySpeed
+ jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_DragonDanceTrySpeed
+ printfromtable gStatUpStringIds
+ waitmessage 0x40
+BattleScript_DragonDanceTrySpeed::
+ setstatchanger SPEED, 1, FALSE
+ statbuffchange AFFECTS_USER | 0x1, BattleScript_DragonDanceEnd
+ jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_DragonDanceEnd
+ printfromtable gStatUpStringIds
+ waitmessage 0x40
+BattleScript_DragonDanceEnd::
+ goto BattleScript_MoveEnd
+
+BattleScript_EffectCamouflage::
+ attackcanceler
+ attackstring
+ ppreduce
+ settypetoterrain BattleScript_ButItFailed
+ attackanimation
+ waitanimation
+ printstring STRINGID_PKMNCHANGEDTYPE
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_FaintAttacker::
+ playfaintcry ATTACKER
+ pause 0x40
+ dofaintanimation ATTACKER
+ cleareffectsonfaint ATTACKER
+ printstring STRINGID_ATTACKERFAINTED
+ return
+
+BattleScript_FaintTarget::
+ playfaintcry TARGET
+ pause 0x40
+ dofaintanimation TARGET
+ cleareffectsonfaint TARGET
+ printstring STRINGID_TARGETFAINTED
+ return
+
+BattleScript_GiveExp::
+ setbyte sGIVEEXP_STATE, 0x0
+ getexp TARGET
+ end2
+
+BattleScript_HandleFaintedMon::
+ atk24 BattleScript_82DA8F6
+ jumpifbyte NOT_EQUAL, gBattleOutcome, 0, BattleScript_FaintedMonEnd
+ jumpifbattletype BATTLE_TYPE_TRAINER, BattleScript_FaintedMonTryChooseAnother
+ jumpifword NO_COMMON_BITS, gHitMarker, HITMARKER_x400000, BattleScript_FaintedMonTryChooseAnother
+ printstring STRINGID_USENEXTPKMN
+ setbyte gBattleCommunication, 0x0
+ yesnobox
+ jumpifbyte EQUAL, gBattleCommunication + 1, 0x0, BattleScript_FaintedMonTryChooseAnother
+ jumpifplayerran BattleScript_FaintedMonEnd
+ printstring STRINGID_CANTESCAPE2
+BattleScript_FaintedMonTryChooseAnother::
+ openpartyscreen 0x3, BattleScript_FaintedMonEnd
+ switchhandleorder GBANK_1, 0x2
+ jumpifnotbattletype BATTLE_TYPE_TRAINER, BattleScript_FaintedMonChooseAnother
+ jumpifbattletype BATTLE_TYPE_LINK, BattleScript_FaintedMonChooseAnother
+ jumpifbattletype BATTLE_TYPE_x2000000, BattleScript_FaintedMonChooseAnother
+ jumpifbattletype BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE | BATTLE_TYPE_PYRAMID, BattleScript_FaintedMonChooseAnother
+ jumpifbattletype BATTLE_TYPE_DOUBLE, BattleScript_FaintedMonChooseAnother
+ jumpifword COMMON_BITS, gHitMarker, HITMARKER_x400000, BattleScript_FaintedMonChooseAnother
+ jumpifbyte EQUAL, sBATTLE_STYLE, 0x1, BattleScript_FaintedMonChooseAnother
+ jumpifcantswitch 11, BattleScript_FaintedMonChooseAnother
+ printstring STRINGID_ENEMYABOUTTOSWITCHPKMN
+ setbyte gBattleCommunication, 0x0
+ yesnobox
+ jumpifbyte EQUAL, gBattleCommunication + 1, 0x1, BattleScript_FaintedMonChooseAnother
+ setatktoplayer0
+ openpartyscreen 0x81, BattleScript_FaintedMonChooseAnother
+ switchhandleorder ATTACKER, 0x2
+ jumpifbyte EQUAL, gBattleCommunication, 0x6, BattleScript_FaintedMonChooseAnother
+ atknameinbuff1
+ resetintrimidatetracebits ATTACKER
+ hpthresholds2 ATTACKER
+ printstring STRINGID_RETURNMON
+ switchoutabilities ATTACKER
+ waitstate
+ returnatktoball
+ waitstate
+ drawpartystatussummary ATTACKER
+ getswitchedmondata ATTACKER
+ switchindataupdate ATTACKER
+ hpthresholds ATTACKER
+ printstring STRINGID_SWITCHINMON
+ atk62 ATTACKER
+ switchinanim ATTACKER, 0x0
+ waitstate
+ switchineffects ATTACKER
+ resetsentmonsvalue
+BattleScript_FaintedMonChooseAnother::
+ drawpartystatussummary GBANK_1
+ getswitchedmondata GBANK_1
+ switchindataupdate GBANK_1
+ hpthresholds GBANK_1
+ printstring STRINGID_SWITCHINMON
+ atk62 GBANK_1
+ switchinanim GBANK_1, FALSE
+ waitstate
+ various7 ATTACKER
+ switchineffects GBANK_1
+ jumpifbattletype BATTLE_TYPE_DOUBLE, BattleScript_FaintedMonEnd
+ cancelallactions
+BattleScript_FaintedMonEnd::
+ end2
+
+BattleScript_82DA8F6::
+ openpartyscreen 0x5, BattleScript_82DA8FC
+BattleScript_82DA8FC::
+ switchhandleorder GBANK_1, 0x0
+ openpartyscreen 0x6, BattleScript_82DA92C
+ switchhandleorder GBANK_1, 0x0
+BattleScript_82DA908::
+ switchhandleorder GBANK_1, 0x3
+ drawpartystatussummary GBANK_1
+ getswitchedmondata GBANK_1
+ switchindataupdate GBANK_1
+ hpthresholds GBANK_1
+ printstring STRINGID_SWITCHINMON
+ atk62 GBANK_1
+ switchinanim GBANK_1, FALSE
+ waitstate
+ switchineffects 5
+ jumpifbytenotequal gBank1, gNoOfAllBanks, BattleScript_82DA908
+BattleScript_82DA92C::
+ end2
+
+BattleScript_LocalTrainerBattleWon::
+ jumpifbattletype BATTLE_TYPE_TWO_OPPONENTS, BattleScript_LocalTwoTrainersDefeated
+ printstring STRINGID_PLAYERDEFEATEDTRAINER1
+ goto BattleScript_LocalBattleWonLoseTexts
+BattleScript_LocalTwoTrainersDefeated::
+ printstring STRINGID_TWOENEMIESDEFEATED
+BattleScript_LocalBattleWonLoseTexts::
+ trainerslidein ATTACKER
+ waitstate
+ printstring STRINGID_TRAINER1LOSETEXT
+ jumpifnotbattletype BATTLE_TYPE_TWO_OPPONENTS, BattleScript_LocalBattleWonReward
+ trainerslideout IDENTITY_OPPONENT_MON1
+ waitstate
+ trainerslidein GBANK_1
+ waitstate
+ printstring STRINGID_TRAINER2LOSETEXT
+BattleScript_LocalBattleWonReward::
+ getmoneyreward
+ printstring STRINGID_PLAYERGOTMONEY
+ waitmessage 0x40
+BattleScript_PayDayMoneyAndPickUpItems::
+ givepaydaymoney
+ pickup
+ end2
+
+BattleScript_LocalBattleLost::
+ jumpifbattletype BATTLE_TYPE_DOME, BattleScript_CheckDomeDrew
+ jumpifbattletype BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE | BATTLE_TYPE_PYRAMID, BattleScript_LocalBattleLostPrintTrainersWinText
+ jumpifbattletype BATTLE_TYPE_x4000000, BattleScript_LocalBattleLostPrintTrainersWinText
+ jumpifbattletype BATTLE_TYPE_EREADER_TRAINER, BattleScript_LocalBattleLostEnd
+ jumpifhalfword EQUAL, gTrainerBattleOpponent_A, 0x400, BattleScript_LocalBattleLostEnd
+BattleScript_LocalBattleLostPrintWhiteOut::
+ printstring STRINGID_PLAYERWHITEOUT
+ waitmessage 0x40
+ printstring STRINGID_PLAYERWHITEOUT2
+ waitmessage 0x40
+BattleScript_LocalBattleLostEnd::
+ end2
+BattleScript_CheckDomeDrew::
+ jumpifbyte EQUAL, gBattleOutcome, DREW, BattleScript_LocalBattleLostEnd_
+BattleScript_LocalBattleLostPrintTrainersWinText::
+ jumpifnotbattletype BATTLE_TYPE_TRAINER, BattleScript_LocalBattleLostPrintWhiteOut
+ returnopponentmon1toball ATTACKER
+ waitstate
+ returnopponentmon2toball ATTACKER
+ waitstate
+ trainerslidein ATTACKER
+ waitstate
+ printstring STRINGID_TRAINER1WINTEXT
+ jumpifbattletype BATTLE_TYPE_x800000, BattleScript_LocalBattleLostDoTrainer2WinText
+ jumpifnotbattletype BATTLE_TYPE_TWO_OPPONENTS, BattleScript_LocalBattleLostEnd_
+BattleScript_LocalBattleLostDoTrainer2WinText::
+ trainerslideout IDENTITY_OPPONENT_MON1
+ waitstate
+ trainerslidein GBANK_1
+ waitstate
+ printstring STRINGID_TRAINER2WINTEXT
+BattleScript_LocalBattleLostEnd_::
+ end2
+
+BattleScript_82DAA0B::
+ returnopponentmon1toball ATTACKER
+ waitstate
+ returnopponentmon2toball ATTACKER
+ waitstate
+ trainerslidein ATTACKER
+ waitstate
+ printstring STRINGID_TRAINER1WINTEXT
+ trainerslideout IDENTITY_OPPONENT_MON1
+ waitstate
+ trainerslidein GBANK_1
+ waitstate
+ printstring STRINGID_TRAINER2WINTEXT
+ jumpifbattletype BATTLE_TYPE_RECORDED, BattleScript_82DAA31
+ atk57
+BattleScript_82DAA31::
+ waitmessage 0x40
+ end2
+
+BattleScript_LinkBattleWonOrLost::
+ jumpifbattletype BATTLE_TYPE_BATTLE_TOWER, BattleScript_82DAA5C
+ printstring STRINGID_BATTLEEND
+ waitmessage 0x40
+ jumpifbattletype BATTLE_TYPE_RECORDED, BattleScript_LinkBattleWonOrLostWaitEnd
+ atk57
+BattleScript_LinkBattleWonOrLostWaitEnd::
+ waitmessage 0x40
+ end2
+
+BattleScript_82DAA5C::
+ playtrainerdefeatbgm ATTACKER
+ printstring STRINGID_BATTLEEND
+ waitmessage 0x40
+ trainerslidein ATTACKER
+ waitstate
+ printstring STRINGID_TRAINER1LOSETEXT
+ trainerslideout IDENTITY_OPPONENT_MON1
+ waitstate
+ trainerslidein GBANK_1
+ waitstate
+ printstring STRINGID_TRAINER2LOSETEXT
+ jumpifbattletype BATTLE_TYPE_RECORDED, BattleScript_82DAA83
+ atk57
+BattleScript_82DAA83::
+ waitmessage 0x40
+ end2
+
+BattleScript_FrontierTrainerBattleWon::
+ jumpifnotbattletype BATTLE_TYPE_TRAINER, BattleScript_PayDayMoneyAndPickUpItems
+ jumpifbattletype BATTLE_TYPE_TWO_OPPONENTS, BattleScript_82DAAAB
+ printstring STRINGID_PLAYERDEFEATEDTRAINER1
+ goto BattleScript_82DAAAE
+BattleScript_82DAAAB::
+ printstring STRINGID_TWOENEMIESDEFEATED
+BattleScript_82DAAAE::
+ trainerslidein ATTACKER
+ waitstate
+ printstring STRINGID_TRAINER1LOSETEXT
+ jumpifnotbattletype BATTLE_TYPE_TWO_OPPONENTS, BattleScript_82DAACB
+ trainerslideout IDENTITY_OPPONENT_MON1
+ waitstate
+ trainerslidein GBANK_1
+ waitstate
+ printstring STRINGID_TRAINER2LOSETEXT
+BattleScript_82DAACB::
+ jumpifnotbattletype BATTLE_TYPE_PYRAMID, BattleScript_82DAADA
+ pickup
+BattleScript_82DAADA::
+ end2
+
+BattleScript_SmokeBallEscape::
+ playanimation ATTACKER, ANIM_SMOKEBALL_ESCAPE, NULL
+ printstring STRINGID_PKMNFLEDUSINGITS
+ waitmessage 0x40
+ end2
+
+BattleScript_RanAwayUsingMonAbility::
+ printstring STRINGID_PKMNFLEDUSING
+ waitmessage 0x40
+ end2
+
+BattleScript_GotAwaySafely::
+ printstring STRINGID_GOTAWAYSAFELY
+ waitmessage 0x40
+ end2
+
+BattleScript_WildMonFled::
+ printstring STRINGID_WILDPKMNFLED
+ waitmessage 0x40
+ end2
+
+BattleScript_PrintCantRunFromTrainer::
+ printstring STRINGID_NORUNNINGFROMTRAINERS
+ end2
+
+BattleScript_PrintFailedToRunString::
+ printfromtable gNoEscapeStringIds
+ waitmessage 0x40
+ end2
+
+BattleScript_PrintCantEscapeFromBattle::
+ printselectionstringfromtable gNoEscapeStringIds
+ endselectionscript
+
+BattleScript_PrintFullBox::
+ printselectionstring STRINGID_BOXISFULL
+ endselectionscript
+
+BattleScript_ActionSwitch::
+ hpthresholds2 ATTACKER
+ printstring STRINGID_RETURNMON
+ setbyte sDMG_MULTIPLIER, 0x2
+ jumpifbattletype BATTLE_TYPE_DOUBLE, BattleScript_PursuitSwitchDmgSetMultihit
+ setmultihit 0x1
+ goto BattleScript_PursuitSwitchDmgLoop
+BattleScript_PursuitSwitchDmgSetMultihit::
+ setmultihit 0x2
+BattleScript_PursuitSwitchDmgLoop::
+ jumpifnopursuitswitchdmg BattleScript_DoSwitchOut
+ atk5F
+ trysetdestinybondtohappen
+ call BattleScript_PursuitDmgOnSwitchOut
+ atk5F
+BattleScript_DoSwitchOut::
+ decrementmultihit BattleScript_PursuitSwitchDmgLoop
+ switchoutabilities ATTACKER
+ waitstate
+ returnatktoball
+ waitstate
+ drawpartystatussummary ATTACKER
+ switchhandleorder ATTACKER, 0x1
+ getswitchedmondata ATTACKER
+ switchindataupdate ATTACKER
+ hpthresholds ATTACKER
+ printstring STRINGID_SWITCHINMON
+ atk62 ATTACKER
+ switchinanim ATTACKER, FALSE
+ waitstate
+ switchineffects ATTACKER
+ setbyte sMOVEEND_STATE, 0x4
+ moveend 0x1, 0x0
+ setbyte sMOVEEND_STATE, 0xF
+ moveend 0x1, 0x0
+ end2
+
+BattleScript_PursuitDmgOnSwitchOut::
+ pause 0x20
+ attackstring
+ ppreduce
+ critcalc
+ damagecalc
+ typecalc
+ adjustnormaldamage
+ attackanimation
+ waitanimation
+ effectivenesssound
+ hitanimation TARGET
+ waitstate
+ healthbarupdate TARGET
+ datahpupdate TARGET
+ critmessage
+ waitmessage 0x40
+ resultmessage
+ waitmessage 0x40
+ tryfaintmon TARGET, FALSE, NULL
+ setbyte sMOVEEND_STATE, 0x3
+ moveend 0x2, 0x6
+ various4 TARGET
+ jumpifbyte EQUAL, gBattleCommunication, 0x0, BattleScript_PursuitDmgOnSwitchOutRet
+ setbyte sGIVEEXP_STATE, 0x0
+ getexp TARGET
+BattleScript_PursuitDmgOnSwitchOutRet::
+ return
+
+BattleScript_Pausex20::
+ pause 0x20
+ return
+
+BattleScript_LevelUp::
+ fanfare BGM_FANFA1
+ printstring STRINGID_PKMNGREWTOLV
+ setbyte sLVLBOX_STATE, 0x0
+ drawlvlupbox
+ handlelearnnewmove BattleScript_LearnedNewMove, BattleScript_LearnMoveReturn, TRUE
+ goto BattleScript_AskToLearnMove
+BattleScript_TryLearnMoveLoop::
+ handlelearnnewmove BattleScript_LearnedNewMove, BattleScript_LearnMoveReturn, FALSE
+BattleScript_AskToLearnMove::
+ buffermovetolearn
+ printstring STRINGID_TRYTOLEARNMOVE1
+ printstring STRINGID_TRYTOLEARNMOVE2
+ printstring STRINGID_TRYTOLEARNMOVE3
+ waitstate
+ setbyte sLEARNMOVE_STATE, 0x0
+ yesnoboxlearnmove BattleScript_ForgotAndLearnedNewMove
+ printstring STRINGID_STOPLEARNINGMOVE
+ waitstate
+ setbyte sLEARNMOVE_STATE, 0x0
+ yesnoboxstoplearningmove BattleScript_AskToLearnMove
+ printstring STRINGID_DIDNOTLEARNMOVE
+ goto BattleScript_TryLearnMoveLoop
+BattleScript_ForgotAndLearnedNewMove::
+ printstring STRINGID_123POOF
+ printstring STRINGID_PKMNFORGOTMOVE
+ printstring STRINGID_ANDELLIPSIS
+BattleScript_LearnedNewMove::
+ buffermovetolearn
+ fanfare BGM_FANFA1
+ printstring STRINGID_PKMNLEARNEDMOVE
+ waitmessage 0x40
+ updatechoicemoveonlvlup ATTACKER
+ goto BattleScript_TryLearnMoveLoop
+BattleScript_LearnMoveReturn::
+ return
+
+BattleScript_RainContinuesOrEnds::
+ printfromtable gRainContinuesStringIds
+ waitmessage 0x40
+ jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_RainContinuesOrEndsEnd
+ playanimation ATTACKER, ANIM_RAIN_CONTINUES, NULL
+BattleScript_RainContinuesOrEndsEnd::
+ end2
+
+BattleScript_DamagingWeatherContinues::
+ printfromtable gSandStormHailContinuesStringIds
+ waitmessage 0x40
+ playanimation2 ATTACKER, sANIM_ARG1, NULL
+ setbyte gBattleCommunication, 0x0
+BattleScript_DamagingWeatherLoop::
+ copyarraywithindex gBankAttacker, gBanksByTurnOrder, gBattleCommunication, 0x1
+ weatherdamage
+ jumpifword EQUAL, gBattleMoveDamage, 0x0, BattleScript_DamagingWeatherLoopIncrement
+ printfromtable gSandStormHailDmgStringIds
+ waitmessage 0x40
+ orword gHitMarker, HITMARKER_x20 | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 | HITMARKER_GRUDGE
+ effectivenesssound
+ hitanimation ATTACKER
+ healthbarupdate ATTACKER
+ datahpupdate ATTACKER
+ tryfaintmon ATTACKER, FALSE, NULL
+ atk24 BattleScript_DamagingWeatherLoopIncrement
+BattleScript_DamagingWeatherLoopIncrement::
+ jumpifbyte NOT_EQUAL, gBattleOutcome, 0, BattleScript_DamagingWeatherContinuesEnd
+ addbyte gBattleCommunication, 0x1
+ jumpifbytenotequal gBattleCommunication, gNoOfAllBanks, BattleScript_DamagingWeatherLoop
+BattleScript_DamagingWeatherContinuesEnd::
+ bicword gHitMarker, HITMARKER_x20 | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 | HITMARKER_GRUDGE
+ end2
+
+BattleScript_SandStormHailEnds::
+ printfromtable gSandStormHailEndStringIds
+ waitmessage 0x40
+ end2
+
+BattleScript_SunlightContinues::
+ printstring STRINGID_SUNLIGHTSTRONG
+ waitmessage 0x40
+ playanimation ATTACKER, ANIM_SUN_CONTINUES, NULL
+ end2
+
+BattleScript_SunlightFaded::
+ printstring STRINGID_SUNLIGHTFADED
+ waitmessage 0x40
+ end2
+
+BattleScript_OverworldWeatherStarts::
+ printfromtable gWeatherContinuesStringIds
+ waitmessage 0x40
+ playanimation2 ATTACKER, sANIM_ARG1, NULL
+ end3
+
+BattleScript_SideStatusWoreOff::
+ printstring STRINGID_PKMNSXWOREOFF
+ waitmessage 0x40
+ end2
+
+BattleScript_SafeguardProtected::
+ pause 0x20
+ printstring STRINGID_PKMNUSEDSAFEGUARD
+ waitmessage 0x40
+ end2
+
+BattleScript_SafeguardEnds::
+ pause 0x20
+ printstring STRINGID_PKMNSAFEGUARDEXPIRED
+ waitmessage 0x40
+ end2
+
+BattleScript_LeechSeedTurnDrain::
+ playanimation ATTACKER, ANIM_LEECH_SEED_DRAIN, sANIM_ARG1
+ orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
+ healthbarupdate ATTACKER
+ datahpupdate ATTACKER
+ copyword gBattleMoveDamage, gHpDealt
+ jumpifability ATTACKER, ABILITY_LIQUID_OOZE, BattleScript_LeechSeedTurnPrintLiquidOoze
+ manipulatedamage ATK80_DMG_CHANGE_SIGN
+ setbyte cMULTISTRING_CHOOSER, 0x3
+ goto BattleScript_LeechSeedTurnPrintAndUpdateHp
+BattleScript_LeechSeedTurnPrintLiquidOoze::
+ setbyte cMULTISTRING_CHOOSER, 0x4
+BattleScript_LeechSeedTurnPrintAndUpdateHp::
+ orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
+ healthbarupdate TARGET
+ datahpupdate TARGET
+ printfromtable gLeechSeedStringIds
+ waitmessage 0x40
+ tryfaintmon ATTACKER, FALSE, NULL
+ tryfaintmon TARGET, FALSE, NULL
+ end2
+
+BattleScript_BideStoringEnergy::
+ printstring STRINGID_PKMNSTORINGENERGY
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_BideAttack::
+ attackcanceler
+ setmoveeffect EFFECT_CHARGING
+ clearstatusfromeffect ATTACKER
+ printstring STRINGID_PKMNUNLEASHEDENERGY
+ waitmessage 0x40
+ accuracycheck BattleScript_MoveMissed, ACC_CURR_MOVE
+ typecalc
+ bicbyte gBattleMoveFlags, MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE
+ copyword gBattleMoveDamage, sBIDE_DMG
+ adjustsetdamage
+ setbyte sANIM_TURN, 0x1
+ attackanimation
+ waitanimation
+ effectivenesssound
+ hitanimation TARGET
+ waitstate
+ healthbarupdate TARGET
+ datahpupdate TARGET
+ resultmessage
+ waitmessage 0x40
+ tryfaintmon TARGET, FALSE, NULL
+ goto BattleScript_MoveEnd
+
+BattleScript_BideNoEnergyToAttack::
+ attackcanceler
+ setmoveeffect EFFECT_CHARGING
+ clearstatusfromeffect ATTACKER
+ printstring STRINGID_PKMNUNLEASHEDENERGY
+ waitmessage 0x40
+ goto BattleScript_ButItFailed
+
+BattleScript_SuccessForceOut::
+ attackanimation
+ waitanimation
+ switchoutabilities TARGET
+ returntoball TARGET
+ waitstate
+ jumpifbattletype BATTLE_TYPE_TRAINER, BattleScript_TrainerBattleForceOut
+ setoutcomeonteleport ATTACKER
+ finishaction
+
+BattleScript_TrainerBattleForceOut::
+ getswitchedmondata TARGET
+ switchindataupdate TARGET
+ switchinanim TARGET, FALSE
+ waitstate
+ printstring STRINGID_PKMNWASDRAGGEDOUT
+ switchineffects TARGET
+ goto BattleScript_MoveEnd
+
+BattleScript_MistProtected::
+ pause 0x20
+ printstring STRINGID_PKMNPROTECTEDBYMIST
+ waitmessage 0x40
+ return
+
+BattleScript_RageIsBuilding::
+ printstring STRINGID_PKMNRAGEBUILDING
+ waitmessage 0x40
+ return
+
+BattleScript_MoveUsedIsDisabled::
+ printstring STRINGID_PKMNMOVEISDISABLED
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_SelectingDisabledMove::
+ printselectionstring STRINGID_PKMNMOVEISDISABLED
+ endselectionscript
+
+BattleScript_DisabledNoMore::
+ printstring STRINGID_PKMNMOVEDISABLEDNOMORE
+ waitmessage 0x40
+ end2
+
+BattleScript_SelectingDisabledMoveInPalace::
+ printstring STRINGID_PKMNMOVEISDISABLED
+BattleScript_SelectingUnusableMoveInPalace::
+ setbyte sMOVEEND_STATE, 0x0
+ moveend 0x2, 0x10
+ end
+
+BattleScript_EncoredNoMore::
+ printstring STRINGID_PKMNENCOREENDED
+ waitmessage 0x40
+ end2
+
+BattleScript_DestinyBondTakesLife::
+ printstring STRINGID_PKMNTOOKFOE
+ waitmessage 0x40
+ orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
+ healthbarupdate ATTACKER
+ datahpupdate ATTACKER
+ tryfaintmon ATTACKER, FALSE, NULL
+ return
+
+BattleScript_SpikesOnAttacker::
+ orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
+ healthbarupdate ATTACKER
+ datahpupdate ATTACKER
+ call BattleScript_PrintHurtBySpikes
+ tryfaintmon ATTACKER, FALSE, NULL
+ tryfaintmon ATTACKER, TRUE, BattleScript_SpikesOnAttackerFainted
+ return
+
+BattleScript_SpikesOnAttackerFainted::
+ setbyte sGIVEEXP_STATE, 0x0
+ getexp ATTACKER
+ setbyte sMOVEEND_STATE, 0x0
+ moveend 0x0, 0x0
+ goto BattleScript_HandleFaintedMon
+
+BattleScript_SpikesOnTarget::
+ orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
+ healthbarupdate TARGET
+ datahpupdate TARGET
+ call BattleScript_PrintHurtBySpikes
+ tryfaintmon TARGET, FALSE, NULL
+ tryfaintmon TARGET, TRUE, BattleScript_SpikesOnTargetFainted
+ return
+
+BattleScript_SpikesOnTargetFainted::
+ setbyte sGIVEEXP_STATE, 0x0
+ getexp TARGET
+ setbyte sMOVEEND_STATE, 0x0
+ moveend 0x0, 0x0
+ goto BattleScript_HandleFaintedMon
+
+BattleScript_SpikesOngBank1::
+ orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
+ healthbarupdate GBANK_1
+ datahpupdate GBANK_1
+ call BattleScript_PrintHurtBySpikes
+ tryfaintmon GBANK_1, FALSE, NULL
+ tryfaintmon GBANK_1, TRUE, BattleScript_SpikesOngBank1Fainted
+ return
+
+BattleScript_SpikesOngBank1Fainted::
+ setbyte sGIVEEXP_STATE, 0x0
+ getexp GBANK_1
+ setbyte sMOVEEND_STATE, 0x0
+ moveend 0x0, 0x0
+ goto BattleScript_HandleFaintedMon
+
+BattleScript_PrintHurtBySpikes::
+ printstring STRINGID_PKMNHURTBYSPIKES
+ waitmessage 0x40
+ return
+
+BattleScript_PerishSongTakesLife::
+ printstring STRINGID_PKMNPERISHCOUNTFELL
+ waitmessage 0x40
+ orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
+ healthbarupdate ATTACKER
+ datahpupdate ATTACKER
+ tryfaintmon ATTACKER, FALSE, NULL
+ end2
+
+BattleScript_PerishSongCountGoesDown::
+ printstring STRINGID_PKMNPERISHCOUNTFELL
+ waitmessage 0x40
+ end2
+
+BattleScript_AllStatsUp::
+ jumpifstat ATTACKER, LESS_THAN, ATK, 0xC, BattleScript_AllStatsUpAtk
+ jumpifstat ATTACKER, LESS_THAN, DEF, 0xC, BattleScript_AllStatsUpAtk
+ jumpifstat ATTACKER, LESS_THAN, SPEED, 0xC, BattleScript_AllStatsUpAtk
+ jumpifstat ATTACKER, LESS_THAN, SPATK, 0xC, BattleScript_AllStatsUpAtk
+ jumpifstat ATTACKER, EQUAL, SPDEF, 0xC, BattleScript_AllStatsUpRet
+BattleScript_AllStatsUpAtk::
+ setbyte sFIELD_1B, 0x0
+ playstatchangeanimation ATTACKER, 0x3E, 0x0
+ setstatchanger ATK, 1, FALSE
+ statbuffchange AFFECTS_USER | 0x1, BattleScript_AllStatsUpDef
+ printfromtable gStatUpStringIds
+ waitmessage 0x40
+BattleScript_AllStatsUpDef::
+ setstatchanger DEF, 1, FALSE
+ statbuffchange AFFECTS_USER | 0x1, BattleScript_AllStatsUpSpeed
+ printfromtable gStatUpStringIds
+ waitmessage 0x40
+BattleScript_AllStatsUpSpeed::
+ setstatchanger SPEED, 1, FALSE
+ statbuffchange AFFECTS_USER | 0x1, BattleScript_AllStatsUpSpAtk
+ printfromtable gStatUpStringIds
+ waitmessage 0x40
+BattleScript_AllStatsUpSpAtk::
+ setstatchanger SPATK, 1, FALSE
+ statbuffchange AFFECTS_USER | 0x1, BattleScript_AllStatsUpSpDef
+ printfromtable gStatUpStringIds
+ waitmessage 0x40
+BattleScript_AllStatsUpSpDef::
+ setstatchanger SPDEF, 1, FALSE
+ statbuffchange AFFECTS_USER | 0x1, BattleScript_AllStatsUpRet
+ printfromtable gStatUpStringIds
+ waitmessage 0x40
+BattleScript_AllStatsUpRet::
+ return
+
+BattleScript_RapidSpinAway::
+ rapidspinfree
+ return
+
+BattleScript_WrapFree::
+ printstring STRINGID_PKMNGOTFREE
+ waitmessage 0x40
+ copybyte gBankTarget, sBANK
+ return
+
+BattleScript_LeechSeedFree::
+ printstring STRINGID_PKMNSHEDLEECHSEED
+ waitmessage 0x40
+ return
+
+BattleScript_SpikesFree::
+ printstring STRINGID_PKMNBLEWAWAYSPIKES
+ waitmessage 0x40
+ return
+
+BattleScript_MonTookFutureAttack::
+ printstring STRINGID_PKMNTOOKATTACK
+ waitmessage 0x40
+ jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x0, BattleScript_CheckDoomDesireMiss
+ accuracycheck BattleScript_FutureAttackMiss, MOVE_FUTURE_SIGHT
+ goto BattleScript_FutureAttackAnimate
+BattleScript_CheckDoomDesireMiss::
+ accuracycheck BattleScript_FutureAttackMiss, MOVE_DOOM_DESIRE
+BattleScript_FutureAttackAnimate::
+ adjustnormaldamage2
+ jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x0, BattleScript_FutureHitAnimDoomDesire
+ playanimation ATTACKER, ANIM_FUTURE_SIGHT_HIT, NULL
+ goto BattleScript_DoFutureAttackHit
+BattleScript_FutureHitAnimDoomDesire::
+ playanimation ATTACKER, ANIM_DOOM_DESIRE_HIT, NULL
+BattleScript_DoFutureAttackHit::
+ effectivenesssound
+ hitanimation TARGET
+ waitstate
+ healthbarupdate TARGET
+ datahpupdate TARGET
+ resultmessage
+ waitmessage 0x40
+ tryfaintmon TARGET, FALSE, NULL
+ atk24 BattleScript_FutureAttackEnd
+BattleScript_FutureAttackEnd::
+ setbyte sMOVEEND_STATE, 0x0
+ moveend 0x1, 0x0
+ setbyte sMOVEEND_STATE, 0xB
+ moveend 0x2, 0xE
+ setbyte gBattleMoveFlags, 0
+ end2
+
+BattleScript_FutureAttackMiss::
+ pause 0x20
+ setbyte gBattleMoveFlags, 0
+ orbyte gBattleMoveFlags, MOVESTATUS_FAILED
+ resultmessage
+ waitmessage 0x40
+ setbyte gBattleMoveFlags, 0
+ end2
+
+BattleScript_NoMovesLeft::
+ printselectionstring STRINGID_PKMNHASNOMOVESLEFT
+ endselectionscript
+
+BattleScript_SelectingMoveWithNoPP::
+ printselectionstring STRINGID_NOPPLEFT
+ endselectionscript
+
+BattleScript_NoPPForMove::
+ attackstring
+ pause 0x20
+ printstring STRINGID_BUTNOPPLEFT
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_SelectingTormentedMove::
+ printselectionstring STRINGID_PKMNCANTUSEMOVETORMENT
+ endselectionscript
+
+BattleScript_MoveUsedIsTormented::
+ printstring STRINGID_PKMNCANTUSEMOVETORMENT
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_SelectingTormentedMoveInPalace::
+ printstring STRINGID_PKMNCANTUSEMOVETORMENT
+ goto BattleScript_SelectingUnusableMoveInPalace
+
+BattleScript_SelectingNotAllowedMoveTaunt::
+ printselectionstring STRINGID_PKMNCANTUSEMOVETAUNT
+ endselectionscript
+
+BattleScript_MoveUsedIsTaunted::
+ printstring STRINGID_PKMNCANTUSEMOVETAUNT
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_SelectingNotAllowedMoveTauntInPalace::
+ printstring STRINGID_PKMNCANTUSEMOVETAUNT
+ goto BattleScript_SelectingUnusableMoveInPalace
+
+BattleScript_WishComesTrue::
+ trywish 0x1, BattleScript_WishButFullHp
+ playanimation TARGET, ANIM_WISH_HEAL, NULL
+ printstring STRINGID_PKMNWISHCAMETRUE
+ waitmessage 0x40
+ orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
+ healthbarupdate TARGET
+ datahpupdate TARGET
+ printstring STRINGID_PKMNREGAINEDHEALTH
+ waitmessage 0x40
+ end2
+
+BattleScript_WishButFullHp::
+ printstring STRINGID_PKMNWISHCAMETRUE
+ waitmessage 0x40
+ pause 0x20
+ printstring STRINGID_PKMNHPFULL
+ waitmessage 0x40
+ end2
+
+BattleScript_IngrainTurnHeal::
+ playanimation ATTACKER, ANIM_INGRAIN_HEAL, NULL
+ printstring STRINGID_PKMNABSORBEDNUTRIENTS
+ waitmessage 0x40
+ orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
+ healthbarupdate ATTACKER
+ datahpupdate ATTACKER
+ end2
+
+BattleScript_PrintMonIsRooted::
+ pause 0x20
+ printstring STRINGID_PKMNANCHOREDITSELF
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_AtkDefDown::
+ setbyte sFIELD_1B, 0x0
+ playstatchangeanimation ATTACKER, 0x6, 0xD
+ playstatchangeanimation ATTACKER, 0x2, 0x9
+ setstatchanger ATK, 1, TRUE
+ statbuffchange AFFECTS_USER | CERTAIN | 0x1, BattleScript_82DB144
+ jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DB144
+ printfromtable gStatDownStringIds
+ waitmessage 0x40
+BattleScript_82DB144::
+ playstatchangeanimation ATTACKER, 0x4, 0x9
+ setstatchanger DEF, 1, TRUE
+ statbuffchange AFFECTS_USER | CERTAIN | 0x1, BattleScript_82DB167
+ jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DB167
+ printfromtable gStatDownStringIds
+ waitmessage 0x40
+BattleScript_82DB167::
+ return
+
+BattleScript_KnockedOff::
+ playanimation TARGET, ANIM_ITEM_KNOCKOFF, NULL
+ printstring STRINGID_PKMNKNOCKEDOFF
+ waitmessage 0x40
+ return
+
+BattleScript_MoveUsedIsImprisoned::
+ printstring STRINGID_PKMNCANTUSEMOVESEALED
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_SelectingImprisionedMove::
+ printselectionstring STRINGID_PKMNCANTUSEMOVESEALED
+ endselectionscript
+
+BattleScript_SelectingImprisionedMoveInPalace::
+ printstring STRINGID_PKMNCANTUSEMOVESEALED
+ goto BattleScript_SelectingUnusableMoveInPalace
+
+BattleScript_GrudgeTakesPp::
+ printstring STRINGID_PKMNLOSTPPGRUDGE
+ waitmessage 0x40
+ return
+
+BattleScript_MagicCoatBounce::
+ attackstring
+ ppreduce
+ pause 0x20
+ printstring STRINGID_PKMNMOVEBOUNCED
+ waitmessage 0x40
+ orword gHitMarker, HITMARKER_ATTACKSTRING_PRINTED | HITMARKER_NO_PPDEDUCT | HITMARKER_x800000
+ setmagiccoattarget ATTACKER
+ return
+
+BattleScript_SnatchedMove::
+ attackstring
+ ppreduce
+ snatchsetbanks
+ playanimation TARGET, ANIM_SNATCH_MOVE, NULL
+ printstring STRINGID_PKMNSNATCHEDMOVE
+ waitmessage 0x40
+ orword gHitMarker, HITMARKER_ATTACKSTRING_PRINTED | HITMARKER_NO_PPDEDUCT | HITMARKER_x800000
+ atk5F
+ return
+
+BattleScript_EnduredMsg::
+ printstring STRINGID_PKMNENDUREDHIT
+ waitmessage 0x40
+ return
+
+BattleScript_OneHitKOMsg::
+ printstring STRINGID_ONEHITKO
+ waitmessage 0x40
+ return
+
+BattleScript_SAtkDown2::
+ setbyte sFIELD_1B, 0x0
+ playstatchangeanimation ATTACKER, 0x10, 0xB
+ setstatchanger SPATK, 2, TRUE
+ statbuffchange AFFECTS_USER | CERTAIN | 0x1, BattleScript_82DB1FE
+ jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DB1FE
+ printfromtable gStatDownStringIds
+ waitmessage 0x40
+BattleScript_82DB1FE::
+ return
+
+BattleScript_FocusPunchSetUp::
+ printstring STRINGID_EMPTYSTRING3
+ waitmessage 0x1
+ playanimation ATTACKER, ANIM_x14, NULL
+ printstring STRINGID_PKMNTIGHTENINGFOCUS
+ waitmessage 0x40
+ end2
+
+BattleScript_MoveUsedIsAsleep::
+ printstring STRINGID_PKMNFASTASLEEP
+ waitmessage 0x40
+ statusanimation ATTACKER
+ goto BattleScript_MoveEnd
+
+BattleScript_MoveUsedWokeUp::
+ bicword gHitMarker, HITMARKER_x10
+ printfromtable gWokeUpStringIds
+ waitmessage 0x40
+ updatestatusicon ATTACKER
+ return
+
+BattleScript_MonWokeUpInUproar::
+ printstring STRINGID_PKMNWOKEUPINUPROAR
+ waitmessage 0x40
+ updatestatusicon ATTACKER
+ end2
+
+BattleScript_PoisonTurnDmg::
+ printstring STRINGID_PKMNHURTBYPOISON
+ waitmessage 0x40
+BattleScript_DoStatusTurnDmg::
+ statusanimation ATTACKER
+BattleScript_DoTurnDmg::
+ orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
+ healthbarupdate ATTACKER
+ datahpupdate ATTACKER
+ tryfaintmon ATTACKER, FALSE, NULL
+ atk24 BattleScript_DoTurnDmgEnd
+BattleScript_DoTurnDmgEnd::
+ end2
+
+BattleScript_BurnTurnDmg::
+ printstring STRINGID_PKMNHURTBYBURN
+ waitmessage 0x40
+ goto BattleScript_DoStatusTurnDmg
+
+BattleScript_MoveUsedIsFrozen::
+ printstring STRINGID_PKMNISFROZEN
+ waitmessage 0x40
+ statusanimation ATTACKER
+ goto BattleScript_MoveEnd
+
+BattleScript_MoveUsedUnfroze::
+ printfromtable gGotDefrostedStringIds
+ waitmessage 0x40
+ updatestatusicon ATTACKER
+ return
+
+BattleScript_DefrostedViaFireMove::
+ printstring STRINGID_PKMNWASDEFROSTED
+ waitmessage 0x40
+ updatestatusicon TARGET
+ return
+
+BattleScript_MoveUsedIsParalyzed::
+ printstring STRINGID_PKMNISPARALYZED
+ waitmessage 0x40
+ statusanimation ATTACKER
+ cancelmultiturnmoves ATTACKER
+ goto BattleScript_MoveEnd
+
+BattleScript_MoveUsedFlinched::
+ printstring STRINGID_PKMNFLINCHED
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_PrintUproarOverTurns::
+ printfromtable gUproarOverTurnStringIds
+ waitmessage 0x40
+ end2
+
+BattleScript_ThrashConfuses::
+ chosenstatus2animation ATTACKER, STATUS2_CONFUSION
+ printstring STRINGID_PKMNFATIGUECONFUSION
+ waitmessage 0x40
+ end2
+
+BattleScript_MoveUsedIsConfused::
+ printstring STRINGID_PKMNISCONFUSED
+ waitmessage 0x40
+ status2animation ATTACKER, STATUS2_CONFUSION
+ jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x0, BattleScript_MoveUsedIsConfusedRet
+BattleScript_DoSelfConfusionDmg::
+ cancelmultiturnmoves ATTACKER
+ adjustnormaldamage2
+ printstring STRINGID_ITHURTCONFUSION
+ waitmessage 0x40
+ effectivenesssound
+ hitanimation ATTACKER
+ waitstate
+ orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
+ healthbarupdate ATTACKER
+ datahpupdate ATTACKER
+ resultmessage
+ waitmessage 0x40
+ tryfaintmon ATTACKER, FALSE, NULL
+ goto BattleScript_MoveEnd
+BattleScript_MoveUsedIsConfusedRet::
+ return
+
+BattleScript_MoveUsedIsConfusedNoMore::
+ printstring STRINGID_PKMNHEALEDCONFUSION
+ waitmessage 0x40
+ return
+
+BattleScript_PrintPayDayMoneyString::
+ printstring STRINGID_PKMNPICKEDUPITEM
+ waitmessage 0x40
+ return
+
+BattleScript_WrapTurnDmg::
+ playanimation ATTACKER, ANIM_TURN_TRAP, sANIM_ARG1
+ printstring STRINGID_PKMNHURTBY
+ waitmessage 0x40
+ goto BattleScript_DoTurnDmg
+
+BattleScript_WrapEnds::
+ printstring STRINGID_PKMNFREEDFROM
+ waitmessage 0x40
+ end2
+
+BattleScript_MoveUsedIsInLove::
+ printstring STRINGID_PKMNINLOVE
+ waitmessage 0x40
+ status2animation ATTACKER, STATUS2_INFATUATION
+ return
+
+BattleScript_MoveUsedIsParalyzedCantAttack::
+ printstring STRINGID_PKMNIMMOBILIZEDBYLOVE
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_NightmareTurnDmg::
+ printstring STRINGID_PKMNLOCKEDINNIGHTMARE
+ waitmessage 0x40
+ status2animation ATTACKER, STATUS2_NIGHTMARE
+ goto BattleScript_DoTurnDmg
+
+BattleScript_CurseTurnDmg::
+ printstring STRINGID_PKMNAFFLICTEDBYCURSE
+ waitmessage 0x40
+ status2animation ATTACKER, STATUS2_CURSED
+ goto BattleScript_DoTurnDmg
+
+BattleScript_TargetPRLZHeal::
+ printstring STRINGID_PKMNHEALEDPARALYSIS
+ waitmessage 0x40
+ updatestatusicon TARGET
+ return
+
+BattleScript_MoveEffectSleep::
+ statusanimation EFFECT_BANK
+ printfromtable gFellAsleepStringIds
+ waitmessage 0x40
+BattleScript_UpdateEffectStatusIconRet::
+ updatestatusicon EFFECT_BANK
+ waitstate
+ return
+
+BattleScript_YawnMakesAsleep::
+ statusanimation EFFECT_BANK
+ printstring STRINGID_PKMNFELLASLEEP
+ waitmessage 0x40
+ updatestatusicon EFFECT_BANK
+ waitstate
+ makevisible EFFECT_BANK
+ end2
+
+BattleScript_MoveEffectPoison::
+ statusanimation EFFECT_BANK
+ printfromtable gGotPoisonedStringIds
+ waitmessage 0x40
+ goto BattleScript_UpdateEffectStatusIconRet
+
+BattleScript_MoveEffectBurn::
+ statusanimation EFFECT_BANK
+ printfromtable gGotBurnedStringIds
+ waitmessage 0x40
+ goto BattleScript_UpdateEffectStatusIconRet
+
+BattleScript_MoveEffectFreeze::
+ statusanimation EFFECT_BANK
+ printfromtable gGotFrozenStringIds
+ waitmessage 0x40
+ goto BattleScript_UpdateEffectStatusIconRet
+
+BattleScript_MoveEffectParalysis::
+ statusanimation EFFECT_BANK
+ printfromtable gGotParalyzedStringIds
+ waitmessage 0x40
+ goto BattleScript_UpdateEffectStatusIconRet
+
+BattleScript_MoveEffectUproar::
+ printstring STRINGID_PKMNCAUSEDUPROAR
+ waitmessage 0x40
+ return
+
+BattleScript_MoveEffectToxic::
+ statusanimation EFFECT_BANK
+ printstring STRINGID_PKMNBADLYPOISONED
+ waitmessage 0x40
+ goto BattleScript_UpdateEffectStatusIconRet
+
+BattleScript_MoveEffectPayDay::
+ printstring STRINGID_COINSSCATTERED
+ waitmessage 0x40
+ return
+
+BattleScript_MoveEffectWrap::
+ printfromtable gWrappedStringIds
+ waitmessage 0x40
+ return
+
+BattleScript_MoveEffectConfusion::
+ chosenstatus2animation EFFECT_BANK, STATUS2_CONFUSION
+ printstring STRINGID_PKMNWASCONFUSED
+ waitmessage 0x40
+ return
+
+BattleScript_MoveEffectRecoil33::
+ jumpifmove MOVE_STRUGGLE, BattleScript_DoRecoil33
+ jumpifability ATTACKER, ABILITY_ROCK_HEAD, BattleScript_Recoil33End
+BattleScript_DoRecoil33::
+ orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
+ healthbarupdate ATTACKER
+ datahpupdate ATTACKER
+ printstring STRINGID_PKMNHITWITHRECOIL
+ waitmessage 0x40
+ tryfaintmon ATTACKER, FALSE, NULL
+BattleScript_Recoil33End::
+ return
+
+BattleScript_ItemSteal::
+ playanimation TARGET, ANIM_ITEM_STEAL, NULL
+ printstring STRINGID_PKMNSTOLEITEM
+ waitmessage 0x40
+ return
+
+BattleScript_DrizzleActivates::
+ pause 0x20
+ printstring STRINGID_PKMNMADEITRAIN
+ waitstate
+ playanimation BANK0, ANIM_RAIN_CONTINUES, NULL
+ call BattleScript_WeatherFormChanges
+ end3
+
+BattleScript_SpeedBoostActivates::
+ playanimation ATTACKER, ANIM_STATS_CHANGE, sANIM_ARG1
+ printstring STRINGID_PKMNRAISEDSPEED
+ waitmessage 0x40
+ end3
+
+BattleScript_TraceActivates::
+ pause 0x20
+ printstring STRINGID_PKMNTRACED
+ waitmessage 0x40
+ end3
+
+BattleScript_RainDishActivates::
+ printstring STRINGID_PKMNSXRESTOREDHPALITTLE2
+ waitmessage 0x40
+ orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
+ healthbarupdate ATTACKER
+ datahpupdate ATTACKER
+ end3
+
+BattleScript_SandstreamActivates::
+ pause 0x20
+ printstring STRINGID_PKMNSXWHIPPEDUPSANDSTORM
+ waitstate
+ playanimation BANK0, ANIM_SANDSTORM_CONTINUES, NULL
+ call BattleScript_WeatherFormChanges
+ end3
+
+BattleScript_ShedSkinActivates::
+ printstring STRINGID_PKMNSXCUREDYPROBLEM
+ waitmessage 0x40
+ updatestatusicon ATTACKER
+ end3
+
+BattleScript_WeatherFormChanges::
+ setbyte sBANK, 0x0
+BattleScript_WeatherFormChangesLoop::
+ trycastformdatachange
+ addbyte sBANK, 0x1
+ jumpifbytenotequal sBANK, gNoOfAllBanks, BattleScript_WeatherFormChangesLoop
+ return
+
+BattleScript_CastformChange::
+ call BattleScript_82DB4AF
+ end3
+
+BattleScript_82DB4AF::
+ docastformchangeanimation
+ waitstate
+ printstring STRINGID_PKMNTRANSFORMED
+ waitmessage 0x40
+ return
+
+BattleScript_82DB4B8::
+ call BattleScript_82DB4BE
+ end3
+
+BattleScript_82DB4BE::
+ pause 0x20
+BattleScript_82DB4C1::
+ setbyte gBankTarget, 0x0
+ setstatchanger ATK, 1, TRUE
+BattleScript_82DB4CD::
+ trygetintimidatetarget BattleScript_82DB51B
+ jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_82DB510
+ jumpifability TARGET, ABILITY_CLEAR_BODY, BattleScript_82DB51C
+ jumpifability TARGET, ABILITY_HYPER_CUTTER, BattleScript_82DB51C
+ jumpifability TARGET, ABILITY_WHITE_SMOKE, BattleScript_82DB51C
+ statbuffchange 0x21, BattleScript_82DB510
+ jumpifbyte GREATER_THAN, cMULTISTRING_CHOOSER, 0x1, BattleScript_82DB510
+ setgraphicalstatchangevalues
+ playanimation TARGET, ANIM_STATS_CHANGE, sANIM_ARG1
+ printstring STRINGID_PKMNCUTSATTACKWITH
+ waitmessage 0x40
+BattleScript_82DB510::
+ addbyte gBankTarget, 0x1
+ goto BattleScript_82DB4CD
+BattleScript_82DB51B::
+ return
+
+BattleScript_82DB51C::
+ pause 0x20
+ printstring STRINGID_PREVENTEDFROMWORKING
+ waitmessage 0x40
+ goto BattleScript_82DB510
+
+BattleScript_DroughtActivates::
+ pause 0x20
+ printstring STRINGID_PKMNSXINTENSIFIEDSUN
+ waitstate
+ playanimation BANK0, ANIM_SUN_CONTINUES, NULL
+ call BattleScript_WeatherFormChanges
+ end3
+
+BattleScript_TookAttack::
+ attackstring
+ pause 0x20
+ printstring STRINGID_PKMNSXTOOKATTACK
+ waitmessage 0x40
+ orword gHitMarker, HITMARKER_ATTACKSTRING_PRINTED
+ return
+
+BattleScript_SturdyPreventsOHKO::
+ pause 0x20
+ printstring STRINGID_PKMNPROTECTEDBY
+ pause 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_DampStopsExplosion::
+ pause 0x20
+ printstring STRINGID_PKMNPREVENTSUSAGE
+ pause 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_MoveHPDrain_PPLoss::
+ ppreduce
+BattleScript_MoveHPDrain::
+ attackstring
+ pause 0x20
+ orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
+ healthbarupdate TARGET
+ datahpupdate TARGET
+ printstring STRINGID_PKMNRESTOREDHPUSING
+ waitmessage 0x40
+ orbyte gBattleMoveFlags, MOVESTATUS_NOTAFFECTED
+ goto BattleScript_MoveEnd
+
+BattleScript_MonMadeMoveUseless_PPLoss::
+ ppreduce
+BattleScript_MonMadeMoveUseless::
+ attackstring
+ pause 0x20
+ printstring STRINGID_PKMNSXMADEYUSELESS
+ waitmessage 0x40
+ orbyte gBattleMoveFlags, MOVESTATUS_NOTAFFECTED
+ goto BattleScript_MoveEnd
+
+BattleScript_FlashFireBoost_PPLoss::
+ ppreduce
+BattleScript_FlashFireBoost::
+ attackstring
+ pause 0x20
+ printfromtable gFlashFireStringIds
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_AbilityPreventsPhasingOut::
+ pause 0x20
+ printstring STRINGID_PKMNANCHORSITSELFWITH
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_AbilityNoStatLoss::
+ pause 0x20
+ printstring STRINGID_PKMNPREVENTSSTATLOSSWITH
+ waitmessage 0x40
+ return
+
+BattleScript_BRNPrevention::
+ pause 0x20
+ printfromtable gBRNPreventionStringIds
+ waitmessage 0x40
+ return
+
+BattleScript_PRLZPrevention::
+ pause 0x20
+ printfromtable gPRLZPreventionStringIds
+ waitmessage 0x40
+ return
+
+BattleScript_PSNPrevention::
+ pause 0x20
+ printfromtable gPSNPreventionStringIds
+ waitmessage 0x40
+ return
+
+BattleScript_ObliviousPreventsAttraction::
+ pause 0x20
+ printstring STRINGID_PKMNPREVENTSROMANCEWITH
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_FlinchPrevention::
+ pause 0x20
+ printstring STRINGID_PKMNSXPREVENTSFLINCHING
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_OwnTempoPrevents::
+ pause 0x20
+ printstring STRINGID_PKMNPREVENTSCONFUSIONWITH
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_SoundproofProtected::
+ attackstring
+ ppreduce
+ pause 0x20
+ printstring STRINGID_PKMNSXBLOCKSY
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_AbilityNoSpecificStatLoss::
+ pause 0x20
+ printstring STRINGID_PKMNSXPREVENTSYLOSS
+ waitmessage 0x40
+ setbyte cMULTISTRING_CHOOSER, 0x3
+ return
+
+BattleScript_StickyHoldActivates::
+ pause 0x20
+ printstring STRINGID_PKMNSXMADEYINEFFECTIVE
+ waitmessage 0x40
+ goto BattleScript_MoveEnd
+
+BattleScript_ColorChangeActivates::
+ printstring STRINGID_PKMNCHANGEDTYPEWITH
+ waitmessage 0x40
+ return
+
+BattleScript_RoughSkinActivates::
+ orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000
+ healthbarupdate ATTACKER
+ datahpupdate ATTACKER
+ printstring STRINGID_PKMNHURTSWITH
+ waitmessage 0x40
+ tryfaintmon ATTACKER, FALSE, NULL
+ return
+
+BattleScript_CuteCharmActivates::
+ status2animation ATTACKER, STATUS2_INFATUATION
+ printstring STRINGID_PKMNSXINFATUATEDY
+ waitmessage 0x40
+ return
+
+BattleScript_ApplySecondaryEffect::
+ waitstate
+ seteffectsecondary
+ return
+
+BattleScript_SynchronizeActivates::
+ waitstate
+ seteffectprimary
+ return
+
+BattleScript_NoItemSteal::
+ pause 0x20
+ printstring STRINGID_PKMNSXMADEYINEFFECTIVE
+ waitmessage 0x40
+ return
+
+BattleScript_AbilityCuredStatus::
+ printstring STRINGID_PKMNSXCUREDITSYPROBLEM
+ waitmessage 0x40
+ updatestatusicon SCRIPTING_BANK
+ return
+
+BattleScript_82DB695::
+ printstring STRINGID_PKMNIGNORESASLEEP
+ waitmessage 0x40
+ setbyte sMOVEEND_STATE, 0x0
+ moveend 0x2, 0x10
+ end
+
+BattleScript_IgnoresAndUsesRandomMove::
+ printstring STRINGID_PKMNIGNOREDORDERS
+ waitmessage 0x40
+ jumptorandomattack FALSE
+
+BattleScript_MoveUsedLoafingAround::
+ jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x4, BattleScript_82DB6C7
+ setbyte gBattleCommunication, 0x0
+ various24 ATTACKER
+ setbyte cMULTISTRING_CHOOSER, 0x4
+BattleScript_82DB6C7::
+ printfromtable gInobedientStringIds
+ waitmessage 0x40
+ setbyte sMOVEEND_STATE, 0x0
+ moveend 0x2, 0x10
+ end
+
+BattleScript_IgnoresAndFallsAsleep::
+ printstring STRINGID_PKMNBEGANTONAP
+ waitmessage 0x40
+ setmoveeffect EFFECT_SLEEP | AFFECTS_USER
+ seteffectprimary
+ setbyte sMOVEEND_STATE, 0x0
+ moveend 0x2, 0x10
+ end
+
+BattleScript_82DB6F0::
+ printstring STRINGID_PKMNWONTOBEY
+ waitmessage 0x40
+ goto BattleScript_DoSelfConfusionDmg
+
+BattleScript_SubstituteFade::
+ playanimation TARGET, ANIM_SUBSTITUTE_FADE, NULL
+ printstring STRINGID_PKMNSUBSTITUTEFADED
+ return
+
+BattleScript_BerryCurePrlzEnd2::
+ call BattleScript_BerryCureParRet
+ end2
+
+BattleScript_BerryCureParRet::
+ playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL
+ printstring STRINGID_PKMNSITEMCUREDPARALYSIS
+ waitmessage 0x40
+ updatestatusicon SCRIPTING_BANK
+ removeitem SCRIPTING_BANK
+ return
+
+BattleScript_BerryCurePsnEnd2::
+ call BattleScript_BerryCurePsnRet
+ end2
+
+BattleScript_BerryCurePsnRet::
+ playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL
+ printstring STRINGID_PKMNSITEMCUREDPOISON
+ waitmessage 0x40
+ updatestatusicon SCRIPTING_BANK
+ removeitem SCRIPTING_BANK
+ return
+
+BattleScript_BerryCureBrnEnd2::
+ call BattleScript_BerryCureBrnRet
+ end2
+
+BattleScript_BerryCureBrnRet::
+ playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL
+ printstring STRINGID_PKMNSITEMHEALEDBURN
+ waitmessage 0x40
+ updatestatusicon SCRIPTING_BANK
+ removeitem SCRIPTING_BANK
+ return
+
+BattleScript_BerryCureFrzEnd2::
+ call BattleScript_BerryCureFrzRet
+ end2
+
+BattleScript_BerryCureFrzRet::
+ playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL
+ printstring STRINGID_PKMNSITEMDEFROSTEDIT
+ waitmessage 0x40
+ updatestatusicon SCRIPTING_BANK
+ removeitem SCRIPTING_BANK
+ return
+
+BattleScript_BerryCureSlpEnd2::
+ call BattleScript_BerryCureSlpRet
+ end2
+
+BattleScript_BerryCureSlpRet::
+ playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL
+ printstring STRINGID_PKMNSITEMWOKEIT
+ waitmessage 0x40
+ updatestatusicon SCRIPTING_BANK
+ removeitem SCRIPTING_BANK
+ return
+
+BattleScript_BerryCureConfusionEnd2::
+ call BattleScript_BerryCureConfusionRet
+ end2
+
+BattleScript_BerryCureConfusionRet::
+ playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL
+ printstring STRINGID_PKMNSITEMSNAPPEDOUT
+ waitmessage 0x40
+ removeitem SCRIPTING_BANK
+ return
+
+BattleScript_BerryCureChosenStatusEnd2::
+ call BattleScript_BerryCureChosenStatusRet
+ end2
+
+BattleScript_BerryCureChosenStatusRet::
+ playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL
+ printfromtable gBerryEffectStringIds
+ waitmessage 0x40
+ updatestatusicon SCRIPTING_BANK
+ removeitem SCRIPTING_BANK
+ return
+
+BattleScript_WhiteHerbEnd2::
+ call BattleScript_WhiteHerbRet
+ end2
+
+BattleScript_WhiteHerbRet::
+ playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL
+ printstring STRINGID_PKMNSITEMRESTOREDSTATUS
+ waitmessage 0x40
+ removeitem SCRIPTING_BANK
+ return
+
+BattleScript_ItemHealHP_RemoveItem::
+ playanimation ATTACKER, ANIM_ITEM_EFFECT, NULL
+ printstring STRINGID_PKMNSITEMRESTOREDHEALTH
+ waitmessage 0x40
+ orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
+ healthbarupdate ATTACKER
+ datahpupdate ATTACKER
+ removeitem ATTACKER
+ end2
+
+BattleScript_BerryPPHealEnd2::
+ playanimation ATTACKER, ANIM_ITEM_EFFECT, NULL
+ printstring STRINGID_PKMNSITEMRESTOREDPP
+ waitmessage 0x40
+ removeitem ATTACKER
+ end2
+
+BattleScript_ItemHealHP_End2::
+ call BattleScript_ItemHealHP_Ret
+ end2
+
+BattleScript_ItemHealHP_Ret::
+ playanimation ATTACKER, ANIM_ITEM_EFFECT, NULL
+ printstring STRINGID_PKMNSITEMRESTOREDHPALITTLE
+ waitmessage 0x40
+ orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
+ healthbarupdate ATTACKER
+ datahpupdate ATTACKER
+ return
+
+BattleScript_SelectingNotAllowedMoveChoiceItem::
+ printselectionstring STRINGID_ITEMALLOWSONLYYMOVE
+ endselectionscript
+
+BattleScript_HangedOnMsg::
+ playanimation TARGET, ANIM_HANGED_ON, NULL
+ printstring STRINGID_PKMNHUNGONWITHX
+ waitmessage 0x40
+ return
+
+BattleScript_BerryConfuseHealEnd2::
+ playanimation ATTACKER, ANIM_ITEM_EFFECT, NULL
+ printstring STRINGID_PKMNSITEMRESTOREDHEALTH
+ waitmessage 0x40
+ orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
+ healthbarupdate ATTACKER
+ datahpupdate ATTACKER
+ printstring STRINGID_FORXCOMMAYZ
+ waitmessage 0x40
+ setmoveeffect EFFECT_CONFUSION | AFFECTS_USER
+ seteffectprimary
+ removeitem ATTACKER
+ end2
+
+BattleScript_BerryStatRaiseEnd2::
+ playanimation ATTACKER, ANIM_ITEM_EFFECT, NULL
+ statbuffchange AFFECTS_USER | 0x1, BattleScript_82DB85B
+BattleScript_82DB85B::
+ setbyte cMULTISTRING_CHOOSER, 0x4
+ call BattleScript_StatUp
+ removeitem ATTACKER
+ end2
+
+BattleScript_BerryFocusEnergyEnd2::
+ playanimation ATTACKER, ANIM_ITEM_EFFECT, NULL
+ printstring STRINGID_PKMNUSEDXTOGETPUMPED
+ waitmessage 0x40
+ removeitem ATTACKER
+ end2
+
+BattleScript_ActionSelectionItemsCantBeUsed::
+ printselectionstring STRINGID_ITEMSCANTBEUSEDNOW
+ endselectionscript
+
+BattleScript_82DB87D::
+ printstring STRINGID_EMPTYSTRING3
+ return
+
+BattleScript_82DB881::
+ setbyte gBattleCommunication + 1, 0x0
+BattleScript_82DB887::
+ various8 ATTACKER
+ jumpifbyte NOT_EQUAL, gBattleCommunication, 0x1, BattleScript_82DB89D
+ printfromtable gStringIds_85CCF0A
+ waitmessage 0x40
+BattleScript_82DB89D::
+ addbyte gBattleCommunication + 1, 0x1
+ jumpifbytenotequal gBattleCommunication + 1, gNoOfAllBanks, BattleScript_82DB887
+ setbyte gBattleCommunication, 0x0
+ setbyte gBattleCommunication + 1, 0x0
+ end2
+
+BattleScript_82DB8BE::
+ waitcry ATTACKER
+ various21 ATTACKER
+ playse 0x109
+ pause 0x8
+ playse 0x109
+ various14 ATTACKER
+ various16 8
+ various17 8
+ pause 0x40
+ various15 ATTACKER
+ various22 ATTACKER
+ end2
+
+BattleScript_82DB8E0::
+ playse SE_PINPON
+ various14 ATTACKER
+ various16 TARGET
+ various17 TARGET
+ pause 0x40
+ various15 ATTACKER
+ end2
+
+BattleScript_82DB8F3::
+ makevisible 11
+ waitstate
+ makevisible OPPONENT1
+ waitstate
+ various21 ATTACKER
+ playse 0x109
+ pause 0x8
+ playse 0x109
+ pause 0x40
+ various14 ATTACKER
+ various16 ATTACKER
+ various17 ATTACKER
+ pause 0x40
+ setbyte gBattleCommunication, 0x0
+ various9 ATTACKER
+ pause 0x40
+ various9 ATTACKER
+ various16 EFFECT_BANK
+ various17 EFFECT_BANK
+ various9 ATTACKER
+ various16 GBANK_1
+ various17 GBANK_1
+ various9 ATTACKER
+ various16 0x4
+ various17 0x4
+ various9 ATTACKER
+ jumpifbyte EQUAL, gBattleCommunication + 1, 0x3, BattleScript_82DB973
+ jumpifbyte EQUAL, gBattleCommunication + 1, 0x4, BattleScript_82DB992
+ various16 0x5
+ various17 0x5
+ various9 ATTACKER
+ various15 ATTACKER
+ printstring STRINGID_DEFEATEDOPPONENTBYREFEREE
+ waitmessage 0x40
+ playfaintcry OPPONENT1
+ waitcry ATTACKER
+ dofaintanimation OPPONENT1
+ cleareffectsonfaint OPPONENT1
+ various10 ATTACKER
+ end2
+
+BattleScript_82DB973::
+ various16 0x6
+ various17 0x6
+ various9 ATTACKER
+ various15 ATTACKER
+ printstring STRINGID_LOSTTOOPPONENTBYREFEREE
+ waitmessage 0x40
+ playfaintcry 11
+ waitcry ATTACKER
+ dofaintanimation 11
+ cleareffectsonfaint 11
+ various11 ATTACKER
+ end2
+
+BattleScript_82DB992::
+ various16 BANK0
+ various17 BANK0
+ various9 ATTACKER
+ various15 ATTACKER
+ printstring STRINGID_TIEDOPPONENTBYREFEREE
+ waitmessage 0x40
+ playfaintcry 11
+ waitcry ATTACKER
+ dofaintanimation 11
+ cleareffectsonfaint 11
+ playfaintcry OPPONENT1
+ waitcry ATTACKER
+ dofaintanimation OPPONENT1
+ cleareffectsonfaint OPPONENT1
+ various12 ATTACKER
+ end2
+
+BattleScript_AskIfWantsToForfeitMatch::
+ printselectionstring STRINGID_QUESTIONFORFEITMATCH
+ forfeityesnobox ATTACKER
+ endselectionscript
+
+BattleScript_PrintPlayerForfeited::
+ printstring STRINGID_FORFEITEDMATCH
+ waitmessage 0x40
+ end2
+
+BattleScript_PrintPlayerForfeitedLinkBattle::
+ printstring STRINGID_FORFEITEDMATCH
+ waitmessage 0x40
+ atk57
+ waitmessage 0x40
+ end2
diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s
index 4a4dc4665..9cd6a4d7d 100644
--- a/data/battle_scripts_2.s
+++ b/data/battle_scripts_2.s
@@ -1,32 +1,38 @@
+#include "constants/items.h"
+#include "constants/songs.h"
.include "asm/macros.inc"
+ .include "asm/macros/battle_script.inc"
.include "constants/constants.inc"
+ .include "constants/battle_constants.inc"
+ .include "constants/battle_script_constants.inc"
+ .include "constants/battle_text.inc"
.section script_data, "aw", %progbits
.align 2
gBattlescriptsForBallThrow:: @ 82DBD08
- .4byte gUnknown_082DBD68
- .4byte gUnknown_082DBD68
- .4byte gUnknown_082DBD68
- .4byte gUnknown_082DBD68
- .4byte gUnknown_082DBD68
- .4byte gUnknown_082DBD7E
- .4byte gUnknown_082DBD68
- .4byte gUnknown_082DBD68
- .4byte gUnknown_082DBD68
- .4byte gUnknown_082DBD68
- .4byte gUnknown_082DBD68
- .4byte gUnknown_082DBD68
- .4byte gUnknown_082DBD68
+ .4byte BattleScript_BallThrow
+ .4byte BattleScript_BallThrow
+ .4byte BattleScript_BallThrow
+ .4byte BattleScript_BallThrow
+ .4byte BattleScript_BallThrow
+ .4byte BattleScript_SafariBallThrow
+ .4byte BattleScript_BallThrow
+ .4byte BattleScript_BallThrow
+ .4byte BattleScript_BallThrow
+ .4byte BattleScript_BallThrow
+ .4byte BattleScript_BallThrow
+ .4byte BattleScript_BallThrow
+ .4byte BattleScript_BallThrow
.align 2
-gUnknown_082DBD3C:: @ 82DBD3C
- .4byte gUnknown_082DBE12
- .4byte gUnknown_082DBE1C
- .4byte gUnknown_082DBE1C
- .4byte gUnknown_082DBE4B
- .4byte gUnknown_082DBE6F
- .4byte gUnknown_082DBE91
+gBattlescriptsForUsingItem:: @ 82DBD3C
+ .4byte BattleScript_PlayerUsesItem
+ .4byte BattleScript_OpponentUsesHealItem
+ .4byte BattleScript_OpponentUsesHealItem
+ .4byte BattleScript_OpponentUsesStatusCureItem
+ .4byte BattleScript_OpponentUsesXItem
+ .4byte BattleScript_OpponentUsesGuardSpecs
.align 2
gBattlescriptsForRunningByItem:: @ 82DBD54
@@ -34,55 +40,166 @@ gBattlescriptsForRunningByItem:: @ 82DBD54
.align 2
gBattlescriptsForSafariActions:: @ 82DBD58
- .4byte gUnknown_082DBEBD
- .4byte gUnknown_082DBEC4
- .4byte gUnknown_082DBECD
- .4byte gUnknown_082DBEE3
-
-gUnknown_082DBD68:: @ 82DBD68
- .incbin "baserom.gba", 0x2dbd68, 0x16
-
-gUnknown_082DBD7E:: @ 82DBD7E
- .incbin "baserom.gba", 0x2dbd7e, 0x6
-
-BattleScript_SuccessBallThrow:: @ 82DBD84
- .incbin "baserom.gba", 0x2dbd84, 0x46
-
-BattleScript_WallyBallThrow:: @ 82DBDCA
- .incbin "baserom.gba", 0x2dbdca, 0xa
-
-BattleScript_ShakeBallThrow:: @ 82DBDD4
- .incbin "baserom.gba", 0x2dbdd4, 0x2e
-
-BattleScript_TrainerBallBlock:: @ 82DBE02
- .incbin "baserom.gba", 0x2dbe02, 0x10
-
-gUnknown_082DBE12:: @ 82DBE12
- .incbin "baserom.gba", 0x2dbe12, 0xa
-
-gUnknown_082DBE1C:: @ 82DBE1C
- .incbin "baserom.gba", 0x2dbe1c, 0x2f
-
-gUnknown_082DBE4B:: @ 82DBE4B
- .incbin "baserom.gba", 0x2dbe4b, 0x24
-
-gUnknown_082DBE6F:: @ 82DBE6F
- .incbin "baserom.gba", 0x2dbe6f, 0x22
-
-gUnknown_082DBE91:: @ 82DBE91
- .incbin "baserom.gba", 0x2dbe91, 0x22
-
-BattleScript_RunByUsingItem:: @ 82DBEB3
- .incbin "baserom.gba", 0x2dbeb3, 0xA
-
-gUnknown_082DBEBD:: @ 82DBEBD
- .incbin "baserom.gba", 0x2dbebd, 0x7
-
-gUnknown_082DBEC4:: @ 82DBEC4
- .incbin "baserom.gba", 0x2dbec4, 0x9
-
-gUnknown_082DBECD:: @ 82DBECD
- .incbin "baserom.gba", 0x2dbecd, 0x16
-
-gUnknown_082DBEE3:: @ 82DBEE3
- .incbin "baserom.gba", 0x2dbee3, 0x15
+ .4byte BattleScript_ActionWatchesCarefully
+ .4byte BattleScript_ActionGetNear
+ .4byte BattleScript_ActionThrowPokeblock
+ .4byte BattleScript_82DBEE3
+
+BattleScript_BallThrow::
+ jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_WALLY_TUTORIAL, BattleScript_BallThrowByWally
+ printstring STRINGID_PLAYERUSEDITEM
+ handleballthrow
+
+BattleScript_BallThrowByWally::
+ printstring STRINGID_WALLYUSEDITEM
+ handleballthrow
+
+BattleScript_SafariBallThrow::
+ printstring STRINGID_PLAYERUSEDITEM
+ updatestatusicon ATTACKER
+ handleballthrow
+
+BattleScript_SuccessBallThrow::
+ jumpifhalfword EQUAL, gLastUsedItem, ITEM_SAFARI_BALL, BattleScript_PrintCaughtMonInfo
+ incrementgamestat 0xB
+BattleScript_PrintCaughtMonInfo::
+ printstring STRINGID_GOTCHAPKMNCAUGHT
+ trysetcaughtmondexflags BattleScript_TryNicknameCaughtMon
+ printstring STRINGID_PKMNDATAADDEDTODEX
+ waitstate
+ setbyte gBattleCommunication, 0x0
+ displaydexinfo
+BattleScript_TryNicknameCaughtMon::
+ printstring STRINGID_GIVENICKNAMECAPTURED
+ waitstate
+ setbyte gBattleCommunication, 0x0
+ trygivecaughtmonnick BattleScript_GiveCaughtMonEnd
+ givecaughtmon
+ printfromtable gCaughtMonStringIds
+ waitmessage 0x40
+ goto BattleScript_SuccessBallThrowEnd
+BattleScript_GiveCaughtMonEnd::
+ givecaughtmon
+BattleScript_SuccessBallThrowEnd::
+ setbyte gBattleOutcome, CAUGHT
+ finishturn
+
+BattleScript_WallyBallThrow::
+ printstring STRINGID_GOTCHAPKMNCAUGHT2
+ setbyte gBattleOutcome, CAUGHT
+ finishturn
+
+BattleScript_ShakeBallThrow::
+ printfromtable gBallEscapeStringIds
+ waitmessage 0x40
+ jumpifword NO_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_SAFARI, BattleScript_ShakeBallThrowEnd
+ jumpifbyte NOT_EQUAL, gNumSafariBalls, 0x0, BattleScript_ShakeBallThrowEnd
+ printstring STRINGID_OUTOFSAFARIBALLS
+ waitmessage 0x40
+ setbyte gBattleOutcome, OUT_OF_BALLS
+BattleScript_ShakeBallThrowEnd::
+ finishaction
+
+BattleScript_TrainerBallBlock::
+ waitmessage 0x40
+ printstring STRINGID_TRAINERBLOCKEDBALL
+ waitmessage 0x40
+ printstring STRINGID_DONTBEATHIEF
+ waitmessage 0x40
+ finishaction
+
+BattleScript_PlayerUsesItem::
+ setbyte sMOVEEND_STATE, 0xF
+ moveend 0x1, 0x0
+ end
+
+BattleScript_OpponentUsesHealItem::
+ printstring STRINGID_EMPTYSTRING3
+ pause 0x30
+ playse SE_KAIFUKU
+ printstring STRINGID_TRAINER1USEDITEM
+ waitmessage 0x40
+ useitemonopponent
+ orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
+ healthbarupdate ATTACKER
+ datahpupdate ATTACKER
+ printstring STRINGID_PKMNSITEMRESTOREDHEALTH
+ waitmessage 0x40
+ updatestatusicon ATTACKER
+ setbyte sMOVEEND_STATE, 0xF
+ moveend 0x1, 0x0
+ finishaction
+
+BattleScript_OpponentUsesStatusCureItem::
+ printstring STRINGID_EMPTYSTRING3
+ pause 0x30
+ playse SE_KAIFUKU
+ printstring STRINGID_TRAINER1USEDITEM
+ waitmessage 0x40
+ useitemonopponent
+ printfromtable gTrainerItemCuredStatusStringIds
+ waitmessage 0x40
+ updatestatusicon ATTACKER
+ setbyte sMOVEEND_STATE, 0xF
+ moveend 0x1, 0x0
+ finishaction
+
+BattleScript_OpponentUsesXItem::
+ printstring STRINGID_EMPTYSTRING3
+ pause 0x30
+ playse SE_KAIFUKU
+ printstring STRINGID_TRAINER1USEDITEM
+ waitmessage 0x40
+ useitemonopponent
+ printfromtable gStatUpStringIds
+ waitmessage 0x40
+ setbyte sMOVEEND_STATE, 0xF
+ moveend 0x1, 0x0
+ finishaction
+
+BattleScript_OpponentUsesGuardSpecs::
+ printstring STRINGID_EMPTYSTRING3
+ pause 0x30
+ playse SE_KAIFUKU
+ printstring STRINGID_TRAINER1USEDITEM
+ waitmessage 0x40
+ useitemonopponent
+ printfromtable gMistUsedStringIds
+ waitmessage 0x40
+ setbyte sMOVEEND_STATE, 0xF
+ moveend 0x1, 0x0
+ finishaction
+
+BattleScript_RunByUsingItem::
+ playse SE_NIGERU
+ setbyte gBattleOutcome, RAN
+ finishturn
+
+BattleScript_ActionWatchesCarefully::
+ printstring STRINGID_PKMNWATCHINGCAREFULLY
+ waitmessage 0x40
+ end2
+
+BattleScript_ActionGetNear::
+ printfromtable gSafariGetNearStringIds
+ waitmessage 0x40
+ end2
+
+BattleScript_ActionThrowPokeblock::
+ printstring STRINGID_THREWPOKEBLOCKATPKMN
+ waitmessage 0x40
+ playanimation ATTACKER, ANIM_x4, NULL
+ printfromtable gSafariPokeblockResultStringIds
+ waitmessage 0x40
+ end2
+
+BattleScript_82DBEE3::
+ printstring STRINGID_RETURNMON
+ waitmessage 0x40
+ returnatktoball
+ waitstate
+ trainerslidein TARGET
+ waitstate
+ printstring STRINGID_YOUTHROWABALLNOWRIGHT
+ waitmessage 0x40
+ end2
diff --git a/data/battle_setup.s b/data/battle_setup.s
deleted file mode 100644
index d5043aae9..000000000
--- a/data/battle_setup.s
+++ /dev/null
@@ -1,190 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2, 0
-
-gUnknown_0854FE88:: @ 854FE88
- .byte 0x08, 0x09, 0x05, 0x0a, 0x00, 0x0a, 0x07, 0x06
-
-gUnknown_0854FE90:: @ 854FE90
- .byte 0x04, 0x0b, 0x02, 0x03, 0x00, 0x0a, 0x01, 0x06
-
-gUnknown_0854FE98:: @ 854FE98
- .byte 0x1d, 0x1e, 0x1f, 0x20, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29
-
-gUnknown_0854FEA4:: @ 854FEA4
- .byte 0x1f, 0x20, 0x21
-
-gUnknown_0854FEA7:: @ 854FEA7
- .byte 0x1d, 0x1f, 0x20, 0x21, 0x00
-
- .align 2
-gUnknown_0854FEAC:: @ 854FEAC
- .4byte gUnknown_02038BC8, 0x00000000
- .4byte gTrainerBattleOpponent_A, 0x00000001
- .4byte gUnknown_02038BD0, 0x00000001
- .4byte gUnknown_02038BD4, 0x00000002
- .4byte gUnknown_02038BDC, 0x00000002
- .4byte gUnknown_02038BE4, 0x00000005
- .4byte gUnknown_02038BE8, 0x00000005
- .4byte gUnknown_02038BF0, 0x00000005
- .4byte gUnknown_02038BEC, 0x00000006
-
- .align 2
-gUnknown_0854FEF4:: @ 854FEF4
- .4byte gUnknown_02038BC8, 0x00000000
- .4byte gTrainerBattleOpponent_A, 0x00000001
- .4byte gUnknown_02038BD0, 0x00000001
- .4byte gUnknown_02038BD4, 0x00000002
- .4byte gUnknown_02038BDC, 0x00000002
- .4byte gUnknown_02038BE4, 0x00000005
- .4byte gUnknown_02038BE8, 0x00000005
- .4byte gUnknown_02038BF0, 0x00000002
- .4byte gUnknown_02038BEC, 0x00000006
-
- .align 2
-gUnknown_0854FF3C:: @ 854FF3C
- .4byte gUnknown_02038BC8, 0x00000000
- .4byte gTrainerBattleOpponent_A, 0x00000001
- .4byte gUnknown_02038BD0, 0x00000001
- .4byte gUnknown_02038BD4, 0x00000002
- .4byte gUnknown_02038BDC, 0x00000002
- .4byte gUnknown_02038BE4, 0x00000005
- .4byte gUnknown_02038BE8, 0x00000002
- .4byte gUnknown_02038BF0, 0x00000005
- .4byte gUnknown_02038BEC, 0x00000006
-
- .align 2
-gUnknown_0854FF84:: @ 854FF84
- .4byte gUnknown_02038BC8, 0x00000000
- .4byte gTrainerBattleOpponent_A, 0x00000001
- .4byte gUnknown_02038BD0, 0x00000001
- .4byte gUnknown_02038BD4, 0x00000005
- .4byte gUnknown_02038BDC, 0x00000002
- .4byte gUnknown_02038BE4, 0x00000005
- .4byte gUnknown_02038BE8, 0x00000005
- .4byte gUnknown_02038BF0, 0x00000005
- .4byte gUnknown_02038BEC, 0x00000006
-
- .align 2
-gUnknown_0854FFCC:: @ 854FFCC
- .4byte gUnknown_02038BC8, 0x00000000
- .4byte gTrainerBattleOpponent_A, 0x00000001
- .4byte gUnknown_02038BD0, 0x00000001
- .4byte gUnknown_02038BD4, 0x00000002
- .4byte gUnknown_02038BDC, 0x00000002
- .4byte gUnknown_02038BE4, 0x00000005
- .4byte gUnknown_02038BE8, 0x00000002
- .4byte gUnknown_02038BF0, 0x00000002
- .4byte gUnknown_02038BEC, 0x00000006
-
- .align 2
-gUnknown_08550014:: @ 8550014
- .4byte gUnknown_02038BC8, 0x00000000
- .4byte gTrainerBattleOpponent_B, 0x00000001
- .4byte gUnknown_02038BD0, 0x00000001
- .4byte gUnknown_02038BD8, 0x00000002
- .4byte gUnknown_02038BE0, 0x00000002
- .4byte gUnknown_02038BE4, 0x00000005
- .4byte gUnknown_02038BE8, 0x00000005
- .4byte gUnknown_02038BF4, 0x00000005
- .4byte gUnknown_02038BEC, 0x00000006
-
- .align 2
-gUnknown_0855005C:: @ 855005C
- .4byte gUnknown_02038BC8, 0x00000000
- .4byte gTrainerBattleOpponent_B, 0x00000001
- .4byte gUnknown_02038BD0, 0x00000001
- .4byte gUnknown_02038BD8, 0x00000002
- .4byte gUnknown_02038BE0, 0x00000002
- .4byte gUnknown_02038BE4, 0x00000005
- .4byte gUnknown_02038BE8, 0x00000005
- .4byte gUnknown_02038BF4, 0x00000002
- .4byte gUnknown_02038BEC, 0x00000006
-
- .align 2
-gUnknown_085500A4:: @ 85500A4
- .2byte 0x0025, 0x0028, 0x0029, 0x002a, 0x002b, 0x0000, 0x0021, 0x0000
- .2byte 0x02e1, 0x032c, 0x032d, 0x032e, 0x032f, 0x0000, 0x0014, 0x0000
- .2byte 0x002c, 0x002f, 0x0030, 0x0031, 0x0032, 0x0000, 0x001a, 0x0000
- .2byte 0x0039, 0x003c, 0x003d, 0x003e, 0x003f, 0x0000, 0x0018, 0x0000
- .2byte 0x0040, 0x0043, 0x0044, 0x0045, 0x0046, 0x0000, 0x0018, 0x0000
- .2byte 0x02af, 0x02b0, 0x02b1, 0x02b2, 0x02b3, 0x0000, 0x0027, 0x0000
- .2byte 0x02ff, 0x033c, 0x033d, 0x033e, 0x033f, 0x0000, 0x0024, 0x0000
- .2byte 0x005e, 0x0065, 0x0066, 0x0067, 0x0068, 0x0000, 0x001a, 0x0000
- .2byte 0x004e, 0x0054, 0x0055, 0x0056, 0x0057, 0x0000, 0x001a, 0x0000
- .2byte 0x006c, 0x006e, 0x006f, 0x0070, 0x0071, 0x0018, 0x0014, 0x0000
- .2byte 0x0072, 0x0078, 0x0079, 0x007a, 0x007b, 0x0000, 0x0013, 0x0000
- .2byte 0x0090, 0x034c, 0x034d, 0x034e, 0x034f, 0x0018, 0x0038, 0x0000
- .2byte 0x007f, 0x0084, 0x0085, 0x0086, 0x0087, 0x0000, 0x0024, 0x0000
- .2byte 0x0088, 0x008b, 0x008c, 0x008d, 0x008e, 0x0000, 0x0013, 0x0000
- .2byte 0x008f, 0x0093, 0x0094, 0x0095, 0x0096, 0x0000, 0x001d, 0x0000
- .2byte 0x009b, 0x00af, 0x00b0, 0x00b1, 0x00b2, 0x0000, 0x0016, 0x0000
- .2byte 0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x0000, 0x001e, 0x0000
- .2byte 0x02a0, 0x0338, 0x0339, 0x033a, 0x033b, 0x0000, 0x002a, 0x0000
- .2byte 0x00c3, 0x0340, 0x0341, 0x0342, 0x0343, 0x0000, 0x0026, 0x0000
- .2byte 0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x0000, 0x0021, 0x0000
- .2byte 0x00ce, 0x00cf, 0x00d0, 0x00d1, 0x00d2, 0x0000, 0x001d, 0x0000
- .2byte 0x00d8, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x0018, 0x000d, 0x0000
- .2byte 0x02a9, 0x02aa, 0x02ab, 0x02ac, 0x02ad, 0x0018, 0x0001, 0x0000
- .2byte 0x00e2, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x0000, 0x0023, 0x0000
- .2byte 0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x00f2, 0x0000, 0x0026, 0x0000
- .2byte 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x0000, 0x0026, 0x0000
- .2byte 0x00fe, 0x0101, 0x0102, 0x0103, 0x0104, 0x0000, 0x0024, 0x0000
- .2byte 0x0118, 0x011a, 0x011b, 0x011c, 0x011d, 0x0000, 0x001f, 0x0000
- .2byte 0x0111, 0x0114, 0x0115, 0x0116, 0x0117, 0x0000, 0x001f, 0x0000
- .2byte 0x011f, 0x0120, 0x0121, 0x0122, 0x0123, 0x0000, 0x0020, 0x0000
- .2byte 0x012e, 0x012f, 0x0130, 0x0131, 0x0132, 0x0000, 0x0019, 0x0000
- .2byte 0x0125, 0x0127, 0x0128, 0x0129, 0x012a, 0x0000, 0x0012, 0x0000
- .2byte 0x0133, 0x0134, 0x0135, 0x0136, 0x0137, 0x0000, 0x001e, 0x0000
- .2byte 0x0139, 0x013a, 0x013b, 0x013c, 0x013d, 0x0018, 0x000c, 0x0000
- .2byte 0x013e, 0x0148, 0x0149, 0x014a, 0x014b, 0x0000, 0x0011, 0x0000
- .2byte 0x0153, 0x015a, 0x015b, 0x015c, 0x015d, 0x0000, 0x0015, 0x0000
- .2byte 0x0178, 0x017b, 0x017c, 0x017d, 0x017e, 0x0000, 0x002b, 0x0000
- .2byte 0x0171, 0x0172, 0x0173, 0x0174, 0x0175, 0x0000, 0x0020, 0x0000
- .2byte 0x0166, 0x0168, 0x0169, 0x016a, 0x016b, 0x0000, 0x0019, 0x0000
- .2byte 0x016c, 0x016d, 0x016e, 0x016f, 0x0170, 0x0000, 0x0020, 0x0000
- .2byte 0x0182, 0x0184, 0x0185, 0x0186, 0x0187, 0x0000, 0x002b, 0x0000
- .2byte 0x0161, 0x0162, 0x0163, 0x0164, 0x0165, 0x0000, 0x0019, 0x0000
- .2byte 0x0179, 0x0334, 0x0335, 0x0336, 0x0337, 0x0000, 0x0029, 0x0000
- .2byte 0x0188, 0x0189, 0x018a, 0x018b, 0x018c, 0x0018, 0x0001, 0x0000
- .2byte 0x0196, 0x0199, 0x019a, 0x019b, 0x019c, 0x0000, 0x0023, 0x0000
- .2byte 0x01a3, 0x01a5, 0x01a6, 0x01a7, 0x01a8, 0x0000, 0x001c, 0x0000
- .2byte 0x01ab, 0x01ae, 0x01af, 0x01b0, 0x01b1, 0x0000, 0x001e, 0x0000
- .2byte 0x01b2, 0x01b5, 0x01b6, 0x01b7, 0x01b8, 0x0000, 0x001c, 0x0000
- .2byte 0x01c1, 0x01d1, 0x01d2, 0x01d3, 0x01d4, 0x0000, 0x0027, 0x0000
- .2byte 0x01da, 0x01dd, 0x01de, 0x01df, 0x01e0, 0x0018, 0x000d, 0x0000
- .2byte 0x01e1, 0x01e2, 0x01e7, 0x01e8, 0x01e9, 0x0000, 0x0012, 0x0000
- .2byte 0x01ec, 0x01f1, 0x01f2, 0x01f3, 0x01f4, 0x0000, 0x0028, 0x0000
- .2byte 0x02e4, 0x0330, 0x0331, 0x0332, 0x0333, 0x0000, 0x0017, 0x0000
- .2byte 0x0200, 0x0203, 0x0204, 0x0205, 0x0206, 0x0000, 0x0019, 0x0000
- .2byte 0x0221, 0x0224, 0x0225, 0x0226, 0x0227, 0x0000, 0x0020, 0x0000
- .2byte 0x021a, 0x021d, 0x021e, 0x021f, 0x0220, 0x0000, 0x0020, 0x0000
- .2byte 0x0009, 0x0348, 0x0349, 0x034a, 0x034b, 0x0018, 0x0011, 0x0000
- .2byte 0x022f, 0x0232, 0x0233, 0x0234, 0x0235, 0x0000, 0x0022, 0x0000
- .2byte 0x0228, 0x022b, 0x022c, 0x022d, 0x022e, 0x0000, 0x0022, 0x0000
- .2byte 0x025c, 0x025f, 0x0260, 0x0261, 0x0262, 0x0000, 0x0013, 0x0000
- .2byte 0x026d, 0x026e, 0x026f, 0x0270, 0x0271, 0x0018, 0x000b, 0x0000
- .2byte 0x0273, 0x027c, 0x027d, 0x027e, 0x027f, 0x0000, 0x001b, 0x0000
- .2byte 0x0001, 0x0344, 0x0345, 0x0346, 0x0347, 0x0018, 0x000c, 0x0000
- .2byte 0x0282, 0x0283, 0x0284, 0x0285, 0x0286, 0x0018, 0x003e, 0x0000
- .2byte 0x0291, 0x0292, 0x0293, 0x0294, 0x0294, 0x0018, 0x002b, 0x0000
- .2byte 0x0109, 0x0302, 0x0303, 0x0304, 0x0305, 0x0000, 0x0003, 0x0000
- .2byte 0x010a, 0x0306, 0x0307, 0x0308, 0x0309, 0x0000, 0x000b, 0x0000
- .2byte 0x010b, 0x030a, 0x030b, 0x030c, 0x030d, 0x0000, 0x0002, 0x0000
- .2byte 0x010c, 0x030e, 0x030f, 0x0310, 0x0311, 0x0000, 0x000c, 0x0000
- .2byte 0x010d, 0x0312, 0x0313, 0x0314, 0x0315, 0x0000, 0x0000, 0x0000
- .2byte 0x010e, 0x0316, 0x0317, 0x0318, 0x0319, 0x0000, 0x0004, 0x0000
- .2byte 0x010f, 0x031a, 0x031b, 0x031c, 0x031d, 0x0000, 0x0006, 0x0000
- .2byte 0x0110, 0x031e, 0x031f, 0x0320, 0x0321, 0x0000, 0x0007, 0x0000
- .2byte 0x0105, 0x0105, 0x0105, 0x0105, 0x0105, 0x0000, 0x0008, 0x0000
- .2byte 0x0106, 0x0106, 0x0106, 0x0106, 0x0106, 0x0000, 0x0008, 0x0000
- .2byte 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0000, 0x0008, 0x0000
- .2byte 0x0108, 0x0108, 0x0108, 0x0108, 0x0108, 0x0000, 0x0008, 0x0000
- .2byte 0x014f, 0x014f, 0x014f, 0x014f, 0x014f, 0x0000, 0x0008, 0x0000
-
- .align 2
-gUnknown_08550584:: @ 8550584
- .2byte 0x0867, 0x0868, 0x0869, 0x086a, 0x086b, 0x086c, 0x086d, 0x086e
-
diff --git a/data/battle_tower.s b/data/battle_tower.s
index a952e0773..b3926d19a 100644
--- a/data/battle_tower.s
+++ b/data/battle_tower.s
@@ -1,3 +1,7 @@
+#include "constants/easy_chat.h"
+#include "constants/items.h"
+#include "constants/moves.h"
+#include "constants/species.h"
.include "asm/macros.inc"
.include "constants/constants.inc"
diff --git a/data/cable_car.s b/data/cable_car.s
index 0f3bf3e2e..32a265c97 100644
--- a/data/cable_car.s
+++ b/data/cable_car.s
@@ -1,3 +1,4 @@
+#include "constants/map_objects.h"
.include "asm/macros.inc"
.include "constants/constants.inc"
diff --git a/data/data2b.s b/data/data2b.s
index e723b4c97..6051b86cc 100644
--- a/data/data2b.s
+++ b/data/data2b.s
@@ -1,5 +1,8 @@
@ the second big chunk of data
+#include "constants/items.h"
+#include "constants/moves.h"
+#include "constants/species.h"
.include "asm/macros.inc"
.include "constants/constants.inc"
diff --git a/data/data2c.s b/data/data2c.s
index be715493c..904009254 100644
--- a/data/data2c.s
+++ b/data/data2c.s
@@ -1,5 +1,9 @@
@ the second big chunk of data
+#include "constants/abilities.h"
+#include "constants/items.h"
+#include "constants/moves.h"
+#include "constants/species.h"
.include "asm/macros.inc"
.include "constants/constants.inc"
diff --git a/data/data4c.s b/data/data4c.s
index b86cd2add..c18d0d592 100644
--- a/data/data4c.s
+++ b/data/data4c.s
@@ -5,39 +5,6 @@
.section .rodata
-gUnknown_085B21D4:: @ 85B21D4
- .incbin "baserom.gba", 0x5b21d4, 0x8
-
-gUnknown_085B21DC:: @ 85B21DC
- .incbin "baserom.gba", 0x5b21dc, 0x18
-
-gUnknown_085B21F4:: @ 85B21F4
- .incbin "baserom.gba", 0x5b21f4, 0x8
-
-gUnknown_085B21FC:: @ 85B21FC
- .incbin "baserom.gba", 0x5b21fc, 0xc
-
-gUnknown_085B2208:: @ 85B2208
- .incbin "baserom.gba", 0x5b2208, 0x10
-
-gUnknown_085B2218:: @ 85B2218
- .incbin "baserom.gba", 0x5b2218, 0x38
-
-gUnknown_085B2250:: @ 85B2250
- .incbin "baserom.gba", 0x5b2250, 0x18
-
-gUnknown_085B2268:: @ 85B2268
- .incbin "baserom.gba", 0x5b2268, 0x38
-
-gUnknown_085B22A0:: @ 85B22A0
- .incbin "baserom.gba", 0x5b22a0, 0x18
-
-gUnknown_085B22B8:: @ 85B22B8
- .incbin "baserom.gba", 0x5b22b8, 0x18
-
-gUnknown_085B22D0:: @ 85B22D0
- .incbin "baserom.gba", 0x5b22d0, 0x2d0
-
gPokeblockFlavorCompatibilityTable:: @ 85B25A0
.incbin "baserom.gba", 0x5b25a0, 0x80
diff --git a/data/easy_chat.s b/data/easy_chat.s
index db2e620ef..8d9c561d4 100644
--- a/data/easy_chat.s
+++ b/data/easy_chat.s
@@ -1,3 +1,6 @@
+#include "constants/easy_chat.h"
+#include "constants/moves.h"
+#include "constants/species.h"
.include "asm/macros.inc"
.include "constants/constants.inc"
diff --git a/data/event_scripts.s b/data/event_scripts.s
index 214242b7b..f4b2270a3 100644
--- a/data/event_scripts.s
+++ b/data/event_scripts.s
@@ -1,8 +1,12 @@
+#include "constants/flags.h"
+#include "constants/items.h"
+#include "constants/moves.h"
+#include "constants/songs.h"
+#include "constants/species.h"
+#include "constants/vars.h"
.include "asm/macros.inc"
.include "asm/macros/event.inc"
.include "constants/constants.inc"
- .include "constants/variables.inc"
- .include "constants/flags.inc"
.section script_data, "aw", %progbits
@@ -842,101 +846,101 @@ EventScript_271356:: @ 8271356
special SetUpTrainerEncounterMusic
special sub_80B45AC
waitstate
- goto EventScript_27143C
+ goto EventScript_ShowTrainerIntroMsg
EventScript_271362:: @ 8271362
lock
faceplayer
- applymovement 0x800F, Movement_27143A
+ applymovement VAR_LAST_TALKED, Movement_27143A
waitmovement 0
- specialvar VAR_RESULT, check_trainer_flag
+ specialvar VAR_RESULT, GetTrainerFlag
compare_var_to_value VAR_RESULT, 0
goto_if 5, EventScript_271389
special SetUpTrainerEncounterMusic
special sub_80B16D8
- goto EventScript_27143C
+ goto EventScript_ShowTrainerIntroMsg
EventScript_271389:: @ 8271389
- ontrainerbattleend
+ gotopostbattlescript
-EventScript_27138A:: @ 827138A
+EventScript_TryDoDoubleTrainerBattle:: @ 827138A
lock
faceplayer
call EventScript_27142F
- specialvar VAR_RESULT, check_trainer_flag
+ specialvar VAR_RESULT, GetTrainerFlag
compare_var_to_value VAR_RESULT, 0
goto_if 5, EventScript_2713C1
- special sub_80F92F8
+ special HasEnoughMonsForDoubleBattle
compare_var_to_value VAR_RESULT, 0
- goto_if 5, EventScript_2713BA
+ goto_if 5, EventScript_NotEnoughMonsForDoubleBattle
special SetUpTrainerEncounterMusic
special sub_80B16D8
- goto EventScript_27143C
+ goto EventScript_ShowTrainerIntroMsg
-EventScript_2713BA:: @ 82713BA
- special special_trainer_unable_to_battle
+EventScript_NotEnoughMonsForDoubleBattle:: @ 82713BA
+ special ShowTrainerCantBattleSpeech
waitmessage
waitbuttonpress
release
end
EventScript_2713C1:: @ 82713C1
- ontrainerbattleend
+ gotopostbattlescript
EventScript_2713C2:: @ 82713C2
- applymovement 0x800F, Movement_27143A
+ applymovement VAR_LAST_TALKED, Movement_27143A
waitmovement 0
special SetUpTrainerEncounterMusic
trainerbattlebegin
- ontrainerbattleend
+ gotopostbattlescript
EventScript_2713D1:: @ 82713D1
call EventScript_27142F
- specialvar VAR_RESULT, sub_80B22A0
+ specialvar VAR_RESULT, IsTrainerReadyForRematch
compare_var_to_value VAR_RESULT, 0
goto_eq EventScript_2713F7
special SetUpTrainerEncounterMusic
special sub_80B16D8
- special sub_80B1A14
+ special ShowTrainerIntroSpeech
waitmessage
waitbuttonpress
- special sub_80B19EC
+ special BattleSetup_StartRematchBattle
waitstate
releaseall
end
EventScript_2713F7:: @ 82713F7
- ontrainerbattleend
+ gotopostbattlescript
-EventScript_2713F8:: @ 82713F8
- specialvar VAR_RESULT, sub_80B22A0
+EventScript_TryDoDoubleRematchBattle:: @ 82713F8
+ specialvar VAR_RESULT, IsTrainerReadyForRematch
compare_var_to_value VAR_RESULT, 0
goto_eq EventScript_271427
- special sub_80F92F8
+ special HasEnoughMonsForDoubleBattle
compare_var_to_value VAR_RESULT, 0
- goto_if 5, EventScript_271428
+ goto_if 5, EventScript_NotEnoughMonsForDoubleRematchBattle
special SetUpTrainerEncounterMusic
special sub_80B16D8
- special sub_80B1A14
+ special ShowTrainerIntroSpeech
waitmessage
waitbuttonpress
- special sub_80B19EC
+ special BattleSetup_StartRematchBattle
waitstate
releaseall
end
EventScript_271427:: @ 8271427
- ontrainerbattleend
+ gotopostbattlescript
-EventScript_271428:: @ 8271428
- special special_trainer_unable_to_battle
+EventScript_NotEnoughMonsForDoubleRematchBattle:: @ 8271428
+ special ShowTrainerCantBattleSpeech
waitmessage
waitbuttonpress
release
end
EventScript_27142F:: @ 827142F
- applymovement 0x800F, Movement_27143A
+ applymovement VAR_LAST_TALKED, Movement_27143A
waitmovement 0
return
@@ -944,18 +948,18 @@ Movement_27143A: @ 827143A
step_59
step_end
-EventScript_27143C:: @ 827143C
- special sub_80B1A14
+EventScript_ShowTrainerIntroMsg:: @ 827143C
+ special ShowTrainerIntroSpeech
waitmessage
waitbuttonpress
special sub_80B45D0
compare_var_to_value VAR_RESULT, 1
goto_eq EventScript_271356
- goto EventScript_271454
+ goto EventScript_DoTrainerBattle
-EventScript_271454:: @ 8271454
+EventScript_DoTrainerBattle:: @ 8271454
trainerbattlebegin
- specialvar VAR_RESULT, sub_80B170C
+ specialvar VAR_RESULT, GetTrainerBattleMode
compare_var_to_value VAR_RESULT, 0
goto_eq EventScript_271491
compare_var_to_value VAR_RESULT, 2
@@ -968,7 +972,7 @@ EventScript_271454:: @ 8271454
goto_eq EventScript_271491
EventScript_271491:: @ 8271491
- ontrainerbattleendgoto
+ gotobeatenscript
releaseall
end
@@ -2268,7 +2272,7 @@ Route101_EventScript_272141:: @ 8272141
Route103_EventScript_272141:: @ 8272141
lock
faceplayer
- checkflag FLAG_0x12F
+ checkflag FLAG_HAS_MATCH_CALL
goto_if 0, Route101_EventScript_272155
checkflag FLAG_0x119
goto_if 0, Route101_EventScript_1FA2D2
@@ -4082,15 +4086,15 @@ Std_8:: @ 82742C9
delay 30
return
-LavaridgeTown_Gym_1F_EventScript_2742E6:: @ 82742E6
- special CheckIfMultipleTrainersWantBattle
+EventScript_TryGetTrainerScript:: @ 82742E6
+ special ShouldTryGetTrainerScript
compare_var_to_value VAR_RESULT, 1
- goto_eq LavaridgeTown_Gym_1F_EventScript_2742F6
+ goto_eq EventScript_GotoTrainerScript
releaseall
end
-LavaridgeTown_Gym_1F_EventScript_2742F6:: @ 82742F6
- ontrainerbattleendgoto
+EventScript_GotoTrainerScript:: @ 82742F6
+ gotobeatenscript
releaseall
end
@@ -14313,12 +14317,12 @@ EventScript_2C83F0:: @ 82C83F0
closemessage
end
-Text_2C840A:: @ 82C840A
+Text_ThisIsATestSignpostMsg:: @ 82C840A
.string "This is a test message.\n"
.string "This is a signpost.$"
-EventScript_2C8436:: @ 82C8436
- msgbox Text_2C840A, 3
+EventScript_TestSignpostMsg:: @ 82C8436
+ msgbox Text_ThisIsATestSignpostMsg, 3
end
.string "It’s very disappointing…$"
diff --git a/data/field_map_obj.s b/data/field_map_obj.s
index 52b39f932..50bdfe6f3 100644
--- a/data/field_map_obj.s
+++ b/data/field_map_obj.s
@@ -1,3 +1,4 @@
+#include "constants/map_objects.h"
.include "asm/macros.inc"
.include "constants/constants.inc"
diff --git a/data/graphics.s b/data/graphics.s
index 2b83c5946..d1a8e88ab 100644
--- a/data/graphics.s
+++ b/data/graphics.s
@@ -16,12 +16,108 @@ gUnknown_08C00524:: @ 8C00524
.incbin "baserom.gba", 0xc00c10, 0xa34
gUnknown_08C01644:: @ 8C01644
- .incbin "baserom.gba", 0xc01644, 0xE0
+ .incbin "baserom.gba", 0xc01644, 0xe0
gUnknown_08C01724:: @ 8C01724
- .incbin "baserom.gba", 0xc01724, 0xBDC
+ .incbin "baserom.gba", 0xc01724, 0x18
+
+ .align 2
+gInterfaceGfx_PokeBall::
+ .incbin "graphics/interface/ball/poke.4bpp.lz" @ 0xBC
+
+ .align 2
+gInterfacePal_PokeBall::
+ .incbin "graphics/interface/ball/poke.gbapal.lz"
+
+ .align 2
+gInterfaceGfx_GreatBall::
+ .incbin "graphics/interface/ball/great.4bpp.lz" @ 0xBC
+
+ .align 2
+gInterfacePal_GreatBall::
+ .incbin "graphics/interface/ball/great.gbapal.lz"
+
+ .align 2
+gInterfaceGfx_SafariBall::
+ .incbin "graphics/interface/ball/safari.4bpp.lz" @ 0xBC
+
+ .align 2
+gInterfacePal_SafariBall::
+ .incbin "graphics/interface/ball/safari.gbapal.lz"
+
+ .align 2
+gInterfaceGfx_UltraBall::
+ .incbin "baserom.gba", 0xC019E0, 0xB4
+
+ .align 2
+gInterfacePal_UltraBall::
+ .incbin "baserom.gba", 0xC01A94, 0x20
+
+ .align 2
+gInterfaceGfx_MasterBall::
+ .incbin "graphics/interface/ball/master.4bpp.lz" @ 0xBC
+
+ .align 2
+gInterfacePal_MasterBall::
+ .incbin "graphics/interface/ball/master.gbapal.lz"
+
+ .align 2
+gInterfaceGfx_NetBall::
+ .incbin "graphics/interface/ball/net.4bpp.lz" @ 0xBC
+
+ .align 2
+gInterfacePal_NetBall::
+ .incbin "graphics/interface/ball/net.gbapal.lz"
+
+ .align 2
+gInterfaceGfx_DiveBall::
+ .incbin "graphics/interface/ball/dive.4bpp.lz" @ 0xBC
+
+ .align 2
+gInterfacePal_DiveBall::
+ .incbin "graphics/interface/ball/dive.gbapal.lz"
+
+ .align 2
+gInterfaceGfx_NestBall::
+ .incbin "graphics/interface/ball/nest.4bpp.lz" @ 0xBC
+
+ .align 2
+gInterfacePal_NestBall::
+ .incbin "graphics/interface/ball/nest.gbapal.lz"
+
+ .align 2
+gInterfaceGfx_RepeatBall::
+ .incbin "graphics/interface/ball/repeat.4bpp.lz" @ 0xBC
+
+ .align 2
+gInterfacePal_RepeatBall::
+ .incbin "graphics/interface/ball/repeat.gbapal.lz"
+
+ .align 2
+gInterfaceGfx_TimerBall::
+ .incbin "graphics/interface/ball/timer.4bpp.lz" @ 0xBC
+
+ .align 2
+gInterfacePal_TimerBall::
+ .incbin "graphics/interface/ball/timer.gbapal.lz"
+
+ .align 2
+gInterfaceGfx_LuxuryBall::
+ .incbin "graphics/interface/ball/luxury.4bpp.lz" @ 0xBC
+
+ .align 2
+gInterfacePal_LuxuryBall::
+ .incbin "graphics/interface/ball/luxury.gbapal.lz"
+
+ .align 2
+gInterfaceGfx_PremierBall::
+ .incbin "graphics/interface/ball/premier.4bpp.lz" @ 0xBC
+
+ .align 2
+gInterfacePal_PremierBall::
+ .incbin "graphics/interface/ball/premier.gbapal.lz"
-gUnknown_08C02300:: @ 8C02300
+gOpenPokeballGfx:: @ 8C02300
.incbin "baserom.gba", 0xc02300, 0x7c
gUnknown_08C0237C:: @ 8C0237C
@@ -682,7 +778,7 @@ gMonIcon_Egg:: @ 8D8FC74
.incbin "baserom.gba", 0xd90074, 0x1524
-gUnknown_08D91598:: @ 8D91598
+sBlenderCenterGfx:: @ 8D91598
.incbin "baserom.gba", 0xd91598, 0x820
gUnknown_08D91DB8:: @ 8D91DB8
diff --git a/data/graphics/field_objects/berry_tree_graphics_tables.inc b/data/graphics/field_objects/berry_tree_graphics_tables.inc
index 52c8719fe..8d716d759 100644
--- a/data/graphics/field_objects/berry_tree_graphics_tables.inc
+++ b/data/graphics/field_objects/berry_tree_graphics_tables.inc
@@ -478,18 +478,18 @@ gFieldObjectPicTable_TamatoBerryTree:: @ 850C758
gBerryTreePaletteSlotTable_Tamato:: @ 850C7A0
berry_tree_palette_slot_table 2
- .byte FIELD_OBJ_GFX_BERRY_TREE_EARLY_STAGES
- .byte FIELD_OBJ_GFX_BERRY_TREE_EARLY_STAGES
- .byte FIELD_OBJ_GFX_BERRY_TREE_EARLY_STAGES
- .byte FIELD_OBJ_GFX_BERRY_TREE_EARLY_STAGES
- .byte FIELD_OBJ_GFX_BERRY_TREE_EARLY_STAGES
+ .byte MAP_OBJ_GFX_BERRY_TREE_EARLY_STAGES
+ .byte MAP_OBJ_GFX_BERRY_TREE_EARLY_STAGES
+ .byte MAP_OBJ_GFX_BERRY_TREE_EARLY_STAGES
+ .byte MAP_OBJ_GFX_BERRY_TREE_EARLY_STAGES
+ .byte MAP_OBJ_GFX_BERRY_TREE_EARLY_STAGES
gBerryTreeFieldObjectGraphicsIdTable:: @ 850C7AA
- .byte FIELD_OBJ_GFX_BERRY_TREE_EARLY_STAGES
- .byte FIELD_OBJ_GFX_BERRY_TREE_EARLY_STAGES
- .byte FIELD_OBJ_GFX_BERRY_TREE_LATE_STAGES
- .byte FIELD_OBJ_GFX_BERRY_TREE_LATE_STAGES
- .byte FIELD_OBJ_GFX_BERRY_TREE_LATE_STAGES
+ .byte MAP_OBJ_GFX_BERRY_TREE_EARLY_STAGES
+ .byte MAP_OBJ_GFX_BERRY_TREE_EARLY_STAGES
+ .byte MAP_OBJ_GFX_BERRY_TREE_LATE_STAGES
+ .byte MAP_OBJ_GFX_BERRY_TREE_LATE_STAGES
+ .byte MAP_OBJ_GFX_BERRY_TREE_LATE_STAGES
.align 2
gBerryTreePicTablePointers:: @ 850C7B0
diff --git a/data/graphics/pokemon/animation_delay_table.inc b/data/graphics/pokemon/animation_delay_table.inc
index 55d602bab..be517649b 100644
--- a/data/graphics/pokemon/animation_delay_table.inc
+++ b/data/graphics/pokemon/animation_delay_table.inc
@@ -81,7 +81,7 @@ gMonAnimationDelayTable:: @ 8329B87
.byte 0x00 @ SPECIES_SLOWBRO
.byte 0x00 @ SPECIES_MAGNEMITE
.byte 0x00 @ SPECIES_MAGNETON
- .byte 0x00 @ SPECIES_FARFETCH_D
+ .byte 0x00 @ SPECIES_FARFETCHD
.byte 0x00 @ SPECIES_DODUO
.byte 0x00 @ SPECIES_DODRIO
.byte 0x00 @ SPECIES_SEEL
diff --git a/data/graphics/pokemon/front_anim_ids_table.inc b/data/graphics/pokemon/front_anim_ids_table.inc
index 6e2d7fe0e..4f225348a 100644
--- a/data/graphics/pokemon/front_anim_ids_table.inc
+++ b/data/graphics/pokemon/front_anim_ids_table.inc
@@ -81,7 +81,7 @@ gMonFrontAnimIdsTable:: @ 83299EC
.byte 0x0b @ SPECIES_SLOWBRO
.byte 0x54 @ SPECIES_MAGNEMITE
.byte 0x2c @ SPECIES_MAGNETON
- .byte 0x48 @ SPECIES_FARFETCH_D
+ .byte 0x48 @ SPECIES_FARFETCHD
.byte 0x4c @ SPECIES_DODUO
.byte 0x41 @ SPECIES_DODRIO
.byte 0x0b @ SPECIES_SEEL
diff --git a/data/item_menu_icons.s b/data/item_menu_icons.s
index 3b7b0ef89..01aa67eb0 100644
--- a/data/item_menu_icons.s
+++ b/data/item_menu_icons.s
@@ -1,3 +1,4 @@
+#include "constants/items.h"
.include "asm/macros.inc"
.include "constants/constants.inc"
diff --git a/data/link.s b/data/link.s
index d9cf886c5..8cd19ba5c 100644
--- a/data/link.s
+++ b/data/link.s
@@ -1,5 +1,6 @@
@ the second big chunk of data
+#include "constants/species.h"
.include "asm/macros.inc"
.include "constants/constants.inc"
@@ -28,15 +29,15 @@ g2BlankTilesGfx:: @ 82ED168
.incbin "graphics/interface/blank_1x2.4bpp"
gUnknown_082ED1A8:: @ 82ED1A8
- .4byte gUnknown_020228C4
+ .4byte gBlockSendBuffer
.4byte 0x000000C8
- .4byte gUnknown_020228C4
+ .4byte gBlockSendBuffer
.4byte 0x000000C8
- .4byte gUnknown_020228C4
+ .4byte gBlockSendBuffer
.4byte 0x00000064
- .4byte gUnknown_020228C4
+ .4byte gBlockSendBuffer
.4byte 0x000000DC
- .4byte gUnknown_020228C4
+ .4byte gBlockSendBuffer
.4byte 0x00000028
gUnknown_082ED1D0:: @ 82ED1D0
@@ -224,15 +225,15 @@ gUnknown_082ED6A5:: @ 82ED6A5
.align 2
gUnknown_082ED6B8:: @ 82ED6B8
- .4byte gUnknown_020228C4
+ .4byte gBlockSendBuffer
.4byte 0x000000c8
- .4byte gUnknown_020228C4
+ .4byte gBlockSendBuffer
.4byte 0x000000c8
- .4byte gUnknown_020228C4
+ .4byte gBlockSendBuffer
.4byte 0x00000064
- .4byte gUnknown_020228C4
+ .4byte gBlockSendBuffer
.4byte 0x000000dc
- .4byte gUnknown_020228C4
+ .4byte gBlockSendBuffer
.4byte 0x00000028
.align 2
diff --git a/data/map_events.s b/data/map_events.s
index 805c4d255..8784ee047 100644
--- a/data/map_events.s
+++ b/data/map_events.s
@@ -1,7 +1,9 @@
+#include "constants/flags.h"
+#include "constants/items.h"
+#include "constants/map_objects.h"
+#include "constants/vars.h"
.include "asm/macros.inc"
.include "constants/constants.inc"
- .include "constants/flags.inc"
- .include "constants/variables.inc"
.section .rodata
diff --git a/data/maps.s b/data/maps.s
index a8074c02a..8848ac242 100644
--- a/data/maps.s
+++ b/data/maps.s
@@ -1,3 +1,4 @@
+#include "constants/songs.h"
.include "asm/macros.inc"
.include "constants/constants.inc"
diff --git a/data/rom4.s b/data/overworld.s
index 890829cd9..890829cd9 100644
--- a/data/rom4.s
+++ b/data/overworld.s
diff --git a/data/player_pc.s b/data/player_pc.s
index c3422db30..47bdbff39 100644
--- a/data/player_pc.s
+++ b/data/player_pc.s
@@ -1,3 +1,4 @@
+#include "constants/items.h"
.include "asm/macros.inc"
.include "constants/constants.inc"
diff --git a/data/pokeball.s b/data/pokeball.s
deleted file mode 100644
index 4e7b4315a..000000000
--- a/data/pokeball.s
+++ /dev/null
@@ -1,14 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2, 0
-
-gUnknown_0832C400:: @ 832C400
- .incbin "baserom.gba", 0x32c400, 0x60
-
-gUnknown_0832C460:: @ 832C460
- .incbin "baserom.gba", 0x32c460, 0x128
-
-gUnknown_0832C588:: @ 832C588
- .incbin "baserom.gba", 0x32c588, 0x138
diff --git a/data/script_cmd_table.inc b/data/script_cmd_table.inc
index b33db9218..96f42dfb0 100644
--- a/data/script_cmd_table.inc
+++ b/data/script_cmd_table.inc
@@ -94,8 +94,8 @@ gScriptCmdTable:: @ 81DB67C
.4byte ScrCmd_turnobject
.4byte ScrCmd_trainerbattle
.4byte ScrCmd_dotrainerbattle
- .4byte ScrCmd_ontrainerbattleend
- .4byte ScrCmd_ontrainerbattleendgoto
+ .4byte ScrCmd_gotopostbattlescript
+ .4byte ScrCmd_gotobeatenscript
.4byte ScrCmd_checktrainerflag
.4byte ScrCmd_settrainerflag
.4byte ScrCmd_cleartrainerflag
diff --git a/data/scripts/cable_club.inc b/data/scripts/cable_club.inc
index 71e3303b5..bfea16d8f 100644
--- a/data/scripts/cable_club.inc
+++ b/data/scripts/cable_club.inc
@@ -409,7 +409,7 @@ OldaleTown_PokemonCenter_2F_EventScript_276F23:: @ 8276F23
end
OldaleTown_PokemonCenter_2F_EventScript_276F2E:: @ 8276F2E
- special sub_80F92F8
+ special HasEnoughMonsForDoubleBattle
compare_var_to_value VAR_RESULT, 0
goto_if 5, OldaleTown_PokemonCenter_2F_EventScript_276F47
setvar VAR_0x8004, 2
@@ -1194,7 +1194,7 @@ OldaleTown_PokemonCenter_2F_EventScript_27788E:: @ 827788E
end
OldaleTown_PokemonCenter_2F_EventScript_277899:: @ 8277899
- special sub_80F92F8
+ special HasEnoughMonsForDoubleBattle
compare_var_to_value VAR_RESULT, 0
goto_if 5, OldaleTown_PokemonCenter_2F_EventScript_2778B2
setvar VAR_0x8004, 1
diff --git a/data/scripts/maps/AbandonedShip_Rooms2_1F.inc b/data/scripts/maps/AbandonedShip_Rooms2_1F.inc
index 7d86c6f3f..0b687aaeb 100644
--- a/data/scripts/maps/AbandonedShip_Rooms2_1F.inc
+++ b/data/scripts/maps/AbandonedShip_Rooms2_1F.inc
@@ -3,7 +3,7 @@ AbandonedShip_Rooms2_1F_MapScripts:: @ 82380A6
AbandonedShip_Rooms2_1F_EventScript_2380A7:: @ 82380A7
trainerbattle 6, TRAINER_KIRA_AND_DAN_1, 0, AbandonedShip_Rooms2_1F_Text_23819D, AbandonedShip_Rooms2_1F_Text_2381DA, AbandonedShip_Rooms2_1F_Text_238257, AbandonedShip_Rooms2_1F_EventScript_2380D7
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq AbandonedShip_Rooms2_1F_EventScript_2380F0
msgbox AbandonedShip_Rooms2_1F_Text_23820F, 4
@@ -26,7 +26,7 @@ AbandonedShip_Rooms2_1F_EventScript_2380F0:: @ 82380F0
AbandonedShip_Rooms2_1F_EventScript_23810B:: @ 823810B
trainerbattle 6, TRAINER_KIRA_AND_DAN_1, 0, AbandonedShip_Rooms2_1F_Text_2382A4, AbandonedShip_Rooms2_1F_Text_2382F4, AbandonedShip_Rooms2_1F_Text_23836F, AbandonedShip_Rooms2_1F_EventScript_23813B
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq AbandonedShip_Rooms2_1F_EventScript_238154
msgbox AbandonedShip_Rooms2_1F_Text_23830A, 4
diff --git a/data/scripts/maps/AbandonedShip_Rooms_1F.inc b/data/scripts/maps/AbandonedShip_Rooms_1F.inc
index 025b497dd..beaea9b34 100644
--- a/data/scripts/maps/AbandonedShip_Rooms_1F.inc
+++ b/data/scripts/maps/AbandonedShip_Rooms_1F.inc
@@ -12,7 +12,7 @@ AbandonedShip_Rooms_1F_EventScript_237A9C:: @ 8237A9C
AbandonedShip_Rooms_1F_EventScript_237AB3:: @ 8237AB3
trainerbattle 2, TRAINER_THALIA_1, 0, AbandonedShip_Rooms_1F_Text_237B76, AbandonedShip_Rooms_1F_Text_237BB8, AbandonedShip_Rooms_1F_EventScript_237ADF
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq AbandonedShip_Rooms_1F_EventScript_237AFE
msgbox AbandonedShip_Rooms_1F_Text_237BDB, 4
diff --git a/data/scripts/maps/AncientTomb.inc b/data/scripts/maps/AncientTomb.inc
index 85a1d708d..240a40fd8 100644
--- a/data/scripts/maps/AncientTomb.inc
+++ b/data/scripts/maps/AncientTomb.inc
@@ -72,7 +72,7 @@ AncientTomb_EventScript_23905A:: @ 823905A
waitmoncry
setwildbattle SPECIES_REGISTEEL, 40, ITEM_NONE
setflag FLAG_SYS_CTRL_OBJ_DELETE
- special sub_80B0A74
+ special StartRegiBattle
waitstate
clearflag FLAG_SYS_CTRL_OBJ_DELETE
specialvar VAR_RESULT, sub_8138B80
diff --git a/data/scripts/maps/BattleFrontier_Lounge2.inc b/data/scripts/maps/BattleFrontier_Lounge2.inc
index 6b43747cc..bd20f13ac 100644
--- a/data/scripts/maps/BattleFrontier_Lounge2.inc
+++ b/data/scripts/maps/BattleFrontier_Lounge2.inc
@@ -17,29 +17,29 @@ BattleFrontier_Lounge2_EventScript_26065F:: @ 826065F
end
BattleFrontier_Lounge2_EventScript_26066D:: @ 826066D
- compare_var_to_value VAR_0x402F, 0
+ compare_var_to_value VAR_FRONTIER_MANIAC_FACILITY, 0
call_if 1, BattleFrontier_Lounge2_EventScript_26070A
- compare_var_to_value VAR_0x402F, 1
+ compare_var_to_value VAR_FRONTIER_MANIAC_FACILITY, 1
call_if 1, BattleFrontier_Lounge2_EventScript_26070F
- compare_var_to_value VAR_0x402F, 2
+ compare_var_to_value VAR_FRONTIER_MANIAC_FACILITY, 2
call_if 1, BattleFrontier_Lounge2_EventScript_260714
- compare_var_to_value VAR_0x402F, 3
+ compare_var_to_value VAR_FRONTIER_MANIAC_FACILITY, 3
call_if 1, BattleFrontier_Lounge2_EventScript_260719
- compare_var_to_value VAR_0x402F, 4
+ compare_var_to_value VAR_FRONTIER_MANIAC_FACILITY, 4
call_if 1, BattleFrontier_Lounge2_EventScript_26071E
- compare_var_to_value VAR_0x402F, 5
+ compare_var_to_value VAR_FRONTIER_MANIAC_FACILITY, 5
call_if 1, BattleFrontier_Lounge2_EventScript_260723
- compare_var_to_value VAR_0x402F, 6
+ compare_var_to_value VAR_FRONTIER_MANIAC_FACILITY, 6
call_if 1, BattleFrontier_Lounge2_EventScript_260728
- compare_var_to_value VAR_0x402F, 7
+ compare_var_to_value VAR_FRONTIER_MANIAC_FACILITY, 7
call_if 1, BattleFrontier_Lounge2_EventScript_26072D
- compare_var_to_value VAR_0x402F, 8
+ compare_var_to_value VAR_FRONTIER_MANIAC_FACILITY, 8
call_if 1, BattleFrontier_Lounge2_EventScript_260732
- compare_var_to_value VAR_0x402F, 9
+ compare_var_to_value VAR_FRONTIER_MANIAC_FACILITY, 9
call_if 1, BattleFrontier_Lounge2_EventScript_260737
- compare_var_to_value VAR_0x402F, 3
+ compare_var_to_value VAR_FRONTIER_MANIAC_FACILITY, 3
call_if 3, BattleFrontier_Lounge2_EventScript_2606F8
- compare_var_to_value VAR_0x402F, 4
+ compare_var_to_value VAR_FRONTIER_MANIAC_FACILITY, 4
call_if 4, BattleFrontier_Lounge2_EventScript_260701
special sub_8139F20
waitmessage
diff --git a/data/scripts/maps/BattleFrontier_Lounge3.inc b/data/scripts/maps/BattleFrontier_Lounge3.inc
index 0612ccb8e..5fb7a8367 100644
--- a/data/scripts/maps/BattleFrontier_Lounge3.inc
+++ b/data/scripts/maps/BattleFrontier_Lounge3.inc
@@ -32,7 +32,7 @@ BattleFrontier_Lounge3_EventScript_261DAF:: @ 8261DAF
BattleFrontier_Lounge3_EventScript_261DE9:: @ 8261DE9
multichoice 20, 4, 87, 0
- copyvar VAR_0x4032, VAR_RESULT
+ copyvar VAR_FRONTIER_GAMBLER_AMOUNT_BET, VAR_RESULT
switch VAR_RESULT
case 0, BattleFrontier_Lounge3_EventScript_261E30
case 1, BattleFrontier_Lounge3_EventScript_261E3B
@@ -69,7 +69,7 @@ BattleFrontier_Lounge3_EventScript_261E51:: @ 8261E51
BattleFrontier_Lounge3_EventScript_261E75:: @ 8261E75
copyvar VAR_0x8004, VAR_0x8008
special sub_813A9A4
- setvar VAR_0x4033, 1
+ setvar VAR_FRONTIER_GAMBLER_PLACED_BET_F, 1
special sub_813A8FC
playse SE_REGI
msgbox BattleFrontier_Lounge3_Text_262BE0, 4
@@ -113,37 +113,37 @@ BattleFrontier_Lounge3_EventScript_261EEB:: @ 8261EEB
BattleFrontier_Lounge3_EventScript_261EF9:: @ 8261EF9
msgbox BattleFrontier_Lounge3_Text_26346B, 4
- compare_var_to_value VAR_0x4033, 1
+ compare_var_to_value VAR_FRONTIER_GAMBLER_PLACED_BET_F, 1
goto_if 4, BattleFrontier_Lounge3_EventScript_261F12
goto BattleFrontier_Lounge3_EventScript_261DAF
end
BattleFrontier_Lounge3_EventScript_261F12:: @ 8261F12
- compare_var_to_value VAR_0x4033, 1
+ compare_var_to_value VAR_FRONTIER_GAMBLER_PLACED_BET_F, 1
goto_eq BattleFrontier_Lounge3_EventScript_261F9E
- compare_var_to_value VAR_0x4033, 2
+ compare_var_to_value VAR_FRONTIER_GAMBLER_PLACED_BET_F, 2
goto_eq BattleFrontier_Lounge3_EventScript_261F2E
goto BattleFrontier_Lounge3_EventScript_261F71
end
BattleFrontier_Lounge3_EventScript_261F2E:: @ 8261F2E
msgbox BattleFrontier_Lounge3_Text_263334, 4
- compare_var_to_value VAR_0x4032, 0
+ compare_var_to_value VAR_FRONTIER_GAMBLER_AMOUNT_BET, 0
call_if 1, BattleFrontier_Lounge3_EventScript_261F80
- compare_var_to_value VAR_0x4032, 1
+ compare_var_to_value VAR_FRONTIER_GAMBLER_AMOUNT_BET, 1
call_if 1, BattleFrontier_Lounge3_EventScript_261F8A
- compare_var_to_value VAR_0x4032, 2
+ compare_var_to_value VAR_FRONTIER_GAMBLER_AMOUNT_BET, 2
call_if 1, BattleFrontier_Lounge3_EventScript_261F94
msgbox BattleFrontier_Lounge3_Text_2633D4, 9
special sub_813A9D0
msgbox BattleFrontier_Lounge3_Text_2633F2, 4
- setvar VAR_0x4033, 0
+ setvar VAR_FRONTIER_GAMBLER_PLACED_BET_F, 0
release
end
BattleFrontier_Lounge3_EventScript_261F71:: @ 8261F71
msgbox BattleFrontier_Lounge3_Text_263298, 4
- setvar VAR_0x4033, 0
+ setvar VAR_FRONTIER_GAMBLER_PLACED_BET_F, 0
release
end
diff --git a/data/scripts/maps/BirthIsland_Exterior.inc b/data/scripts/maps/BirthIsland_Exterior.inc
index 8ea18a673..8c298c85a 100644
--- a/data/scripts/maps/BirthIsland_Exterior.inc
+++ b/data/scripts/maps/BirthIsland_Exterior.inc
@@ -88,7 +88,7 @@ BirthIsland_Exterior_EventScript_267FC1:: @ 8267FC1
setvar VAR_0x8006, 0
special DoScriptedWildBattle
setflag FLAG_SYS_CTRL_OBJ_DELETE
- special sub_80B0934
+ special BattleSetup_StartLegendaryBattle
waitstate
clearflag FLAG_SYS_CTRL_OBJ_DELETE
specialvar VAR_RESULT, sub_8138B80
diff --git a/data/scripts/maps/DesertRuins.inc b/data/scripts/maps/DesertRuins.inc
index bb2f6d23d..afbd24903 100644
--- a/data/scripts/maps/DesertRuins.inc
+++ b/data/scripts/maps/DesertRuins.inc
@@ -72,7 +72,7 @@ DesertRuins_EventScript_22DA02:: @ 822DA02
waitmoncry
setwildbattle SPECIES_REGIROCK, 40, ITEM_NONE
setflag FLAG_SYS_CTRL_OBJ_DELETE
- special sub_80B0A74
+ special StartRegiBattle
waitstate
clearflag FLAG_SYS_CTRL_OBJ_DELETE
specialvar VAR_RESULT, sub_8138B80
diff --git a/data/scripts/maps/DewfordTown_Gym.inc b/data/scripts/maps/DewfordTown_Gym.inc
index a3f996f25..5e9b5fa7d 100644
--- a/data/scripts/maps/DewfordTown_Gym.inc
+++ b/data/scripts/maps/DewfordTown_Gym.inc
@@ -157,7 +157,7 @@ DewfordTown_Gym_EventScript_1FC7C1:: @ 81FC7C1
DewfordTown_Gym_EventScript_1FC7C2:: @ 81FC7C2
trainerbattle 1, TRAINER_BRAWLY_1, 0, DewfordTown_Gym_Text_1FCF44, DewfordTown_Gym_Text_1FD008, DewfordTown_Gym_EventScript_1FC7F7
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq DewfordTown_Gym_EventScript_1FC89C
checkflag FLAG_0x0A6
diff --git a/data/scripts/maps/FarawayIsland_Interior.inc b/data/scripts/maps/FarawayIsland_Interior.inc
index f49d938a7..e86a2da52 100644
--- a/data/scripts/maps/FarawayIsland_Interior.inc
+++ b/data/scripts/maps/FarawayIsland_Interior.inc
@@ -145,7 +145,7 @@ FarawayIsland_Interior_EventScript_267DF2:: @ 8267DF2
setvar VAR_0x8006, 0
special DoScriptedWildBattle
setflag FLAG_SYS_CTRL_OBJ_DELETE
- special sub_80B0934
+ special BattleSetup_StartLegendaryBattle
waitstate
clearflag FLAG_SYS_CTRL_OBJ_DELETE
specialvar VAR_RESULT, sub_8138B80
diff --git a/data/scripts/maps/FortreeCity_Gym.inc b/data/scripts/maps/FortreeCity_Gym.inc
index e3990cd23..67d5a21eb 100644
--- a/data/scripts/maps/FortreeCity_Gym.inc
+++ b/data/scripts/maps/FortreeCity_Gym.inc
@@ -17,7 +17,7 @@ FortreeCity_Gym_EventScript_2165C4:: @ 82165C4
FortreeCity_Gym_EventScript_2165C8:: @ 82165C8
trainerbattle 1, TRAINER_WINONA_1, 0, FortreeCity_Gym_Text_216D75, FortreeCity_Gym_Text_216E60, FortreeCity_Gym_EventScript_2165FD
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq FortreeCity_Gym_EventScript_21668D
checkflag FLAG_0x0AA
diff --git a/data/scripts/maps/IslandCave.inc b/data/scripts/maps/IslandCave.inc
index 69a3ef76a..4d6a4fda9 100644
--- a/data/scripts/maps/IslandCave.inc
+++ b/data/scripts/maps/IslandCave.inc
@@ -104,7 +104,7 @@ IslandCave_EventScript_238F58:: @ 8238F58
waitmoncry
setwildbattle SPECIES_REGICE, 40, ITEM_NONE
setflag FLAG_SYS_CTRL_OBJ_DELETE
- special sub_80B0A74
+ special StartRegiBattle
waitstate
clearflag FLAG_SYS_CTRL_OBJ_DELETE
specialvar VAR_RESULT, sub_8138B80
diff --git a/data/scripts/maps/JaggedPass.inc b/data/scripts/maps/JaggedPass.inc
index 1fb3b316e..4cc415b30 100644
--- a/data/scripts/maps/JaggedPass.inc
+++ b/data/scripts/maps/JaggedPass.inc
@@ -104,7 +104,7 @@ JaggedPass_EventScript_230785:: @ 8230785
JaggedPass_EventScript_23079C:: @ 823079C
trainerbattle 2, TRAINER_DIANA_1, 0, JaggedPass_Text_230974, JaggedPass_Text_2309B5, JaggedPass_EventScript_2307C8
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq JaggedPass_EventScript_2307E4
msgbox JaggedPass_Text_2309D8, 4
@@ -128,7 +128,7 @@ JaggedPass_EventScript_2307E4:: @ 82307E4
JaggedPass_EventScript_2307FB:: @ 82307FB
trainerbattle 2, TRAINER_ETHAN_1, 0, JaggedPass_Text_230B10, JaggedPass_Text_230B50, JaggedPass_EventScript_230827
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq JaggedPass_EventScript_230843
msgbox JaggedPass_Text_230B93, 4
diff --git a/data/scripts/maps/LavaridgeTown_Gym_1F.inc b/data/scripts/maps/LavaridgeTown_Gym_1F.inc
index 55ae851e0..581f4ca1d 100644
--- a/data/scripts/maps/LavaridgeTown_Gym_1F.inc
+++ b/data/scripts/maps/LavaridgeTown_Gym_1F.inc
@@ -60,7 +60,7 @@ LavaridgeTown_Gym_1F_EventScript_1FE78B:: @ 81FE78B
LavaridgeTown_Gym_1F_EventScript_1FE78C:: @ 81FE78C
trainerbattle 1, TRAINER_FLANNERY_1, 0, LavaridgeTown_Gym_1F_Text_1FF0DC, LavaridgeTown_Gym_1F_Text_1FF233, LavaridgeTown_Gym_1F_EventScript_1FE7C1
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq LavaridgeTown_Gym_1F_EventScript_1FE864
checkflag FLAG_0x0A8
@@ -127,9 +127,9 @@ LavaridgeTown_Gym_1F_EventScript_1FE89A:: @ 81FE89A
LavaridgeTown_Gym_B1F_EventScript_1FE89A:: @ 81FE89A
call LavaridgeTown_Gym_1F_EventScript_1FE705
release
- special CheckIfMultipleTrainersWantBattle
+ special ShouldTryGetTrainerScript
compare_var_to_value VAR_RESULT, 1
- goto_eq LavaridgeTown_Gym_1F_EventScript_2742F6
+ goto_eq EventScript_GotoTrainerScript
end
LavaridgeTown_Gym_1F_EventScript_1FE8AF:: @ 81FE8AF
diff --git a/data/scripts/maps/LittlerootTown_ProfessorBirchsLab.inc b/data/scripts/maps/LittlerootTown_ProfessorBirchsLab.inc
index cef69c7b2..1dd35ab18 100644
--- a/data/scripts/maps/LittlerootTown_ProfessorBirchsLab.inc
+++ b/data/scripts/maps/LittlerootTown_ProfessorBirchsLab.inc
@@ -482,7 +482,7 @@ LittlerootTown_ProfessorBirchsLab_EventScript_1FA25A:: @ 81FA25A
goto_eq LittlerootTown_ProfessorBirchsLab_EventScript_1FA28A
compare_var_to_value VAR_0x40D3, 2
goto_eq LittlerootTown_ProfessorBirchsLab_EventScript_1FA294
- checkflag FLAG_0x12F
+ checkflag FLAG_HAS_MATCH_CALL
goto_if 0, LittlerootTown_ProfessorBirchsLab_EventScript_1FA29E
checkflag FLAG_0x119
goto_if 0, LittlerootTown_ProfessorBirchsLab_EventScript_1FA2D2
diff --git a/data/scripts/maps/MarineCave_End.inc b/data/scripts/maps/MarineCave_End.inc
index dc2e2b3a0..fafc10b63 100644
--- a/data/scripts/maps/MarineCave_End.inc
+++ b/data/scripts/maps/MarineCave_End.inc
@@ -38,7 +38,7 @@ MarineCave_End_EventScript_23B01B:: @ 823B01B
setvar VAR_LAST_TALKED, 1
setwildbattle SPECIES_KYOGRE, 70, ITEM_NONE
setflag FLAG_SYS_CTRL_OBJ_DELETE
- special sub_80B0934
+ special BattleSetup_StartLegendaryBattle
waitstate
clearflag FLAG_SYS_CTRL_OBJ_DELETE
setvar VAR_0x4001, 0
diff --git a/data/scripts/maps/MauvilleCity_Gym.inc b/data/scripts/maps/MauvilleCity_Gym.inc
index 899550337..dd2d502db 100644
--- a/data/scripts/maps/MauvilleCity_Gym.inc
+++ b/data/scripts/maps/MauvilleCity_Gym.inc
@@ -77,7 +77,7 @@ MauvilleCity_Gym_EventScript_20DEE7:: @ 820DEE7
MauvilleCity_Gym_EventScript_20DEEB:: @ 820DEEB
trainerbattle 1, TRAINER_WATTSON_1, 0, MauvilleCity_Gym_Text_20E602, MauvilleCity_Gym_Text_20E734, MauvilleCity_Gym_EventScript_20DF2B
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq MauvilleCity_Gym_EventScript_20DFDE
checkflag FLAG_0x0A7
diff --git a/data/scripts/maps/MeteorFalls_1F_2R.inc b/data/scripts/maps/MeteorFalls_1F_2R.inc
index 8cf171209..12e84c761 100644
--- a/data/scripts/maps/MeteorFalls_1F_2R.inc
+++ b/data/scripts/maps/MeteorFalls_1F_2R.inc
@@ -3,7 +3,7 @@ MeteorFalls_1F_2R_MapScripts:: @ 822C4DD
MeteorFalls_1F_2R_EventScript_22C4DE:: @ 822C4DE
trainerbattle 2, TRAINER_NICOLAS_1, 0, MeteorFalls_1F_2R_Text_22C608, MeteorFalls_1F_2R_Text_22C678, MeteorFalls_1F_2R_EventScript_22C50A
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq MeteorFalls_1F_2R_EventScript_22C529
msgbox MeteorFalls_1F_2R_Text_22C6A3, 4
@@ -28,7 +28,7 @@ MeteorFalls_1F_2R_EventScript_22C529:: @ 822C529
MeteorFalls_1F_2R_EventScript_22C540:: @ 822C540
trainerbattle 6, TRAINER_JOHN_AND_JAY_1, 0, MeteorFalls_1F_2R_Text_22C843, MeteorFalls_1F_2R_Text_22C89C, MeteorFalls_1F_2R_Text_22C92B, MeteorFalls_1F_2R_EventScript_22C570
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq MeteorFalls_1F_2R_EventScript_22C589
msgbox MeteorFalls_1F_2R_Text_22C8C1, 4
@@ -51,7 +51,7 @@ MeteorFalls_1F_2R_EventScript_22C589:: @ 822C589
MeteorFalls_1F_2R_EventScript_22C5A4:: @ 822C5A4
trainerbattle 6, TRAINER_JOHN_AND_JAY_1, 0, MeteorFalls_1F_2R_Text_22C9E6, MeteorFalls_1F_2R_Text_22CA44, MeteorFalls_1F_2R_Text_22CACD, MeteorFalls_1F_2R_EventScript_22C5D4
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq MeteorFalls_1F_2R_EventScript_22C5ED
msgbox MeteorFalls_1F_2R_Text_22CA70, 4
diff --git a/data/scripts/maps/MossdeepCity_Gym.inc b/data/scripts/maps/MossdeepCity_Gym.inc
index 89c243767..dfcb14721 100644
--- a/data/scripts/maps/MossdeepCity_Gym.inc
+++ b/data/scripts/maps/MossdeepCity_Gym.inc
@@ -50,7 +50,7 @@ MossdeepCity_Gym_EventScript_220885:: @ 8220885
MossdeepCity_Gym_EventScript_220898:: @ 8220898
trainerbattle 8, TRAINER_TATE_AND_LIZA_1, 0, MossdeepCity_Gym_Text_221783, MossdeepCity_Gym_Text_2218EC, MossdeepCity_Gym_Text_221BCE, MossdeepCity_Gym_EventScript_2208D1
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq MossdeepCity_Gym_EventScript_22097E
checkflag FLAG_0x0AB
diff --git a/data/scripts/maps/MtChimney.inc b/data/scripts/maps/MtChimney.inc
index d7a2ed83a..b93fbd3ec 100644
--- a/data/scripts/maps/MtChimney.inc
+++ b/data/scripts/maps/MtChimney.inc
@@ -488,7 +488,7 @@ MtChimney_EventScript_22F141:: @ 822F141
MtChimney_EventScript_22F14A:: @ 822F14A
trainerbattle 2, TRAINER_SHELBY_1, 0, MtChimney_Text_23001D, MtChimney_Text_230076, MtChimney_EventScript_22F176
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq MtChimney_EventScript_22F195
msgbox MtChimney_Text_2300A2, 4
@@ -533,7 +533,7 @@ MtChimney_EventScript_22F1F1:: @ 822F1F1
MtChimney_EventScript_22F208:: @ 822F208
trainerbattle 2, TRAINER_SAWYER_1, 0, MtChimney_Text_2304B3, MtChimney_Text_2304F7, MtChimney_EventScript_22F234
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq MtChimney_EventScript_22F253
msgbox MtChimney_Text_230519, 4
diff --git a/data/scripts/maps/MtPyre_3F.inc b/data/scripts/maps/MtPyre_3F.inc
index ad99e6c9a..7c95a8d84 100644
--- a/data/scripts/maps/MtPyre_3F.inc
+++ b/data/scripts/maps/MtPyre_3F.inc
@@ -13,7 +13,7 @@ MtPyre_3F_EventScript_23176A:: @ 823176A
MtPyre_3F_EventScript_231781:: @ 8231781
trainerbattle 2, TRAINER_GABRIELLE_1, 0, MtPyre_3F_Text_231952, MtPyre_3F_Text_23196A, MtPyre_3F_EventScript_2317AD
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq MtPyre_3F_EventScript_2317CC
msgbox MtPyre_3F_Text_23199B, 4
diff --git a/data/scripts/maps/MtPyre_6F.inc b/data/scripts/maps/MtPyre_6F.inc
index 36a727daa..6c61221d5 100644
--- a/data/scripts/maps/MtPyre_6F.inc
+++ b/data/scripts/maps/MtPyre_6F.inc
@@ -3,7 +3,7 @@ MtPyre_6F_MapScripts:: @ 8231D3A
MtPyre_6F_EventScript_231D3B:: @ 8231D3B
trainerbattle 2, TRAINER_VALERIE_1, 0, MtPyre_6F_Text_231DB4, MtPyre_6F_Text_231DE2, MtPyre_6F_EventScript_231D67
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq MtPyre_6F_EventScript_231D86
msgbox MtPyre_6F_Text_231DFC, 4
diff --git a/data/scripts/maps/NavelRock_Bottom.inc b/data/scripts/maps/NavelRock_Bottom.inc
index 055697d23..5167af41a 100644
--- a/data/scripts/maps/NavelRock_Bottom.inc
+++ b/data/scripts/maps/NavelRock_Bottom.inc
@@ -61,7 +61,7 @@ NavelRock_Bottom_EventScript_2692A2:: @ 82692A2
setvar VAR_0x8006, 0
special DoScriptedWildBattle
setflag FLAG_SYS_CTRL_OBJ_DELETE
- special sub_80B0934
+ special BattleSetup_StartLegendaryBattle
waitstate
clearflag FLAG_SYS_CTRL_OBJ_DELETE
specialvar VAR_RESULT, sub_8138B80
diff --git a/data/scripts/maps/NavelRock_Top.inc b/data/scripts/maps/NavelRock_Top.inc
index 01c9a1523..edebb3976 100644
--- a/data/scripts/maps/NavelRock_Top.inc
+++ b/data/scripts/maps/NavelRock_Top.inc
@@ -65,7 +65,7 @@ NavelRock_Top_EventScript_26916F:: @ 826916F
setvar VAR_0x8006, 0
special DoScriptedWildBattle
setflag FLAG_SYS_CTRL_OBJ_DELETE
- special sub_80B0934
+ special BattleSetup_StartLegendaryBattle
waitstate
clearflag FLAG_SYS_CTRL_OBJ_DELETE
setvar VAR_LAST_TALKED, 1
diff --git a/data/scripts/maps/PetalburgCity.inc b/data/scripts/maps/PetalburgCity.inc
index e223bf414..ad7e2f1cb 100644
--- a/data/scripts/maps/PetalburgCity.inc
+++ b/data/scripts/maps/PetalburgCity.inc
@@ -36,7 +36,7 @@ PetalburgCity_EventScript_1DC32E:: @ 81DC32E
applymovement 255, PetalburgCity_Movement_1DC430
waitmovement 0
msgbox PetalburgCity_Text_1EC1F8, 4
- special sub_80B086C
+ special StartWallyTutorialBattle
waitstate
msgbox PetalburgCity_Text_1EC271, 4
applymovementat 2, PetalburgCity_Movement_2725A4, PETALBURG_CITY
diff --git a/data/scripts/maps/PetalburgCity_Gym.inc b/data/scripts/maps/PetalburgCity_Gym.inc
index e6cdd1334..3c119a227 100644
--- a/data/scripts/maps/PetalburgCity_Gym.inc
+++ b/data/scripts/maps/PetalburgCity_Gym.inc
@@ -62,7 +62,7 @@ PetalburgCity_Gym_EventScript_204955:: @ 8204955
PetalburgCity_Gym_EventScript_20495D:: @ 820495D
setorcopyvar 0x8015, 269
- specialvar VAR_RESULT, sub_80B22A0
+ specialvar VAR_RESULT, IsTrainerReadyForRematch
compare_var_to_value VAR_RESULT, 1
goto_eq PetalburgCity_Gym_EventScript_204985
compare_var_to_value VAR_0x4085, 8
diff --git a/data/scripts/maps/PetalburgWoods.inc b/data/scripts/maps/PetalburgWoods.inc
index a6b018134..64cf94754 100644
--- a/data/scripts/maps/PetalburgWoods.inc
+++ b/data/scripts/maps/PetalburgWoods.inc
@@ -279,7 +279,7 @@ PetalburgWoods_EventScript_22E26D:: @ 822E26D
PetalburgWoods_EventScript_22E284:: @ 822E284
trainerbattle 2, TRAINER_JAMES_1, 0, PetalburgWoods_Text_22E827, PetalburgWoods_Text_22E86B, PetalburgWoods_EventScript_22E2C5
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq PetalburgWoods_EventScript_22E31B
setvar VAR_0x8004, 621
@@ -293,7 +293,7 @@ PetalburgWoods_EventScript_22E284:: @ 822E284
PetalburgWoods_EventScript_22E2C5:: @ 822E2C5
special sub_80B4808
waitmovement 0
- checkflag FLAG_0x12F
+ checkflag FLAG_HAS_MATCH_CALL
goto_eq PetalburgWoods_EventScript_22E2D6
release
end
@@ -308,7 +308,7 @@ PetalburgWoods_EventScript_22E2D6:: @ 822E2D6
end
PetalburgWoods_EventScript_22E2EF:: @ 822E2EF
- checkflag FLAG_0x12F
+ checkflag FLAG_HAS_MATCH_CALL
goto_eq PetalburgWoods_EventScript_22E302
msgbox PetalburgWoods_Text_22E889, 4
release
diff --git a/data/scripts/maps/Route101.inc b/data/scripts/maps/Route101.inc
index 27c83f3d0..6536952c4 100644
--- a/data/scripts/maps/Route101.inc
+++ b/data/scripts/maps/Route101.inc
@@ -225,7 +225,7 @@ Route101_EventScript_1EBE16:: @ 81EBE16
setobjectxy 255, 6, 13
applymovement 255, Route101_Movement_2725A4
waitmovement 0
- special sub_80B1138
+ special ChooseStarter
waitstate
applymovement 2, Route101_Movement_1EBE8D
waitmovement 0
diff --git a/data/scripts/maps/Route102.inc b/data/scripts/maps/Route102.inc
index 00c8c309f..99e9f610c 100644
--- a/data/scripts/maps/Route102.inc
+++ b/data/scripts/maps/Route102.inc
@@ -19,7 +19,7 @@ Route102_EventScript_1EC0FC:: @ 81EC0FC
Route102_EventScript_1EC105:: @ 81EC105
trainerbattle 2, TRAINER_CALVIN_1, 0, Route102_Text_294513, Route102_Text_29457C, Route102_EventScript_1EC146
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route102_EventScript_1EC19C
setvar VAR_0x8004, 318
@@ -33,7 +33,7 @@ Route102_EventScript_1EC105:: @ 81EC105
Route102_EventScript_1EC146:: @ 81EC146
special sub_80B4808
waitmovement 0
- checkflag FLAG_0x12F
+ checkflag FLAG_HAS_MATCH_CALL
goto_eq Route102_EventScript_1EC157
release
end
@@ -48,7 +48,7 @@ Route102_EventScript_1EC157:: @ 81EC157
end
Route102_EventScript_1EC170:: @ 81EC170
- checkflag FLAG_0x12F
+ checkflag FLAG_HAS_MATCH_CALL
goto_eq Route102_EventScript_1EC183
msgbox Route102_Text_2945AC, 4
release
diff --git a/data/scripts/maps/Route103.inc b/data/scripts/maps/Route103.inc
index 4dd68204a..dcfa8cde3 100644
--- a/data/scripts/maps/Route103.inc
+++ b/data/scripts/maps/Route103.inc
@@ -209,7 +209,7 @@ Route103_EventScript_1EC5F4:: @ 81EC5F4
Route103_EventScript_1EC60B:: @ 81EC60B
trainerbattle 6, TRAINER_AMY_AND_LIV_1, 0, Route103_Text_2949F9, Route103_Text_294A3D, Route103_Text_294AAE, Route103_EventScript_1EC63A
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route103_EventScript_1EC653
msgbox Route103_Text_294A52, 6
@@ -231,7 +231,7 @@ Route103_EventScript_1EC653:: @ 81EC653
Route103_EventScript_1EC66E:: @ 81EC66E
trainerbattle 6, TRAINER_AMY_AND_LIV_1, 0, Route103_Text_294AFD, Route103_Text_294B22, Route103_Text_294BD0, Route103_EventScript_1EC69D
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route103_EventScript_1EC6B6
msgbox Route103_Text_294B40, 6
@@ -258,7 +258,7 @@ Route103_EventScript_1EC6D1:: @ 81EC6D1
Route103_EventScript_1EC6E8:: @ 81EC6E8
trainerbattle 2, TRAINER_MIGUEL_1, 0, Route103_Text_294EDF, Route103_Text_294F21, Route103_EventScript_1EC714
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route103_EventScript_1EC733
msgbox Route103_Text_294F42, 4
diff --git a/data/scripts/maps/Route104.inc b/data/scripts/maps/Route104.inc
index 8c4138f11..df209ced9 100644
--- a/data/scripts/maps/Route104.inc
+++ b/data/scripts/maps/Route104.inc
@@ -882,7 +882,7 @@ Route104_EventScript_1ED376:: @ 81ED376
Route104_EventScript_1ED38D:: @ 81ED38D
trainerbattle 2, TRAINER_HALEY_1, 0, Route104_Text_29563A, Route104_Text_29566F, Route104_EventScript_1ED3CE
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route104_EventScript_1ED424
setvar VAR_0x8004, 604
@@ -896,7 +896,7 @@ Route104_EventScript_1ED38D:: @ 81ED38D
Route104_EventScript_1ED3CE:: @ 81ED3CE
special sub_80B4808
waitmovement 0
- checkflag FLAG_0x12F
+ checkflag FLAG_HAS_MATCH_CALL
goto_eq Route104_EventScript_1ED3DF
release
end
@@ -911,7 +911,7 @@ Route104_EventScript_1ED3DF:: @ 81ED3DF
end
Route104_EventScript_1ED3F8:: @ 81ED3F8
- checkflag FLAG_0x12F
+ checkflag FLAG_HAS_MATCH_CALL
goto_eq Route104_EventScript_1ED40B
msgbox Route104_Text_295689, 4
release
@@ -933,7 +933,7 @@ Route104_EventScript_1ED424:: @ 81ED424
Route104_EventScript_1ED43B:: @ 81ED43B
trainerbattle 2, TRAINER_WINSTON_1, 0, Route104_Text_295870, Route104_Text_2958AD, Route104_EventScript_1ED47C
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route104_EventScript_1ED4D2
setvar VAR_0x8004, 136
@@ -947,7 +947,7 @@ Route104_EventScript_1ED43B:: @ 81ED43B
Route104_EventScript_1ED47C:: @ 81ED47C
special sub_80B4808
waitmovement 0
- checkflag FLAG_0x12F
+ checkflag FLAG_HAS_MATCH_CALL
goto_eq Route104_EventScript_1ED48D
release
end
@@ -962,7 +962,7 @@ Route104_EventScript_1ED48D:: @ 81ED48D
end
Route104_EventScript_1ED4A6:: @ 81ED4A6
- checkflag FLAG_0x12F
+ checkflag FLAG_HAS_MATCH_CALL
goto_eq Route104_EventScript_1ED4B9
msgbox Route104_Text_2958C1, 4
release
@@ -984,7 +984,7 @@ Route104_EventScript_1ED4D2:: @ 81ED4D2
Route104_EventScript_1ED4E9:: @ 81ED4E9
trainerbattle 2, TRAINER_CINDY_1, 0, Route104_Text_295A7E, Route104_Text_295ABB, Route104_EventScript_1ED52A
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route104_EventScript_1ED580
setvar VAR_0x8004, 114
@@ -998,7 +998,7 @@ Route104_EventScript_1ED4E9:: @ 81ED4E9
Route104_EventScript_1ED52A:: @ 81ED52A
special sub_80B4808
waitmovement 0
- checkflag FLAG_0x12F
+ checkflag FLAG_HAS_MATCH_CALL
goto_eq Route104_EventScript_1ED53B
release
end
@@ -1013,7 +1013,7 @@ Route104_EventScript_1ED53B:: @ 81ED53B
end
Route104_EventScript_1ED554:: @ 81ED554
- checkflag FLAG_0x12F
+ checkflag FLAG_HAS_MATCH_CALL
goto_eq Route104_EventScript_1ED567
msgbox Route104_Text_295AC3, 4
release
diff --git a/data/scripts/maps/Route105.inc b/data/scripts/maps/Route105.inc
index 72b35e7b0..b527fc7a8 100644
--- a/data/scripts/maps/Route105.inc
+++ b/data/scripts/maps/Route105.inc
@@ -63,7 +63,7 @@ Route105_EventScript_1EE2BD:: @ 81EE2BD
Route105_EventScript_1EE2D4:: @ 81EE2D4
trainerbattle 2, TRAINER_ANDRES_1, 0, Route105_Text_2960A9, Route105_Text_2960DB, Route105_EventScript_1EE300
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route105_EventScript_1EE31F
msgbox Route105_Text_2960FA, 4
diff --git a/data/scripts/maps/Route106.inc b/data/scripts/maps/Route106.inc
index 3bb5e27e7..8b0df4336 100644
--- a/data/scripts/maps/Route106.inc
+++ b/data/scripts/maps/Route106.inc
@@ -17,7 +17,7 @@ Route106_EventScript_1EE4AA:: @ 81EE4AA
Route106_EventScript_1EE4C1:: @ 81EE4C1
trainerbattle 2, TRAINER_ELLIOT_1, 0, Route106_Text_296327, Route106_Text_29635C, Route106_EventScript_1EE4ED
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route106_EventScript_1EE50C
msgbox Route106_Text_29638C, 4
diff --git a/data/scripts/maps/Route107.inc b/data/scripts/maps/Route107.inc
index 736eaa8ee..0f144a6bb 100644
--- a/data/scripts/maps/Route107.inc
+++ b/data/scripts/maps/Route107.inc
@@ -8,7 +8,7 @@ Route107_EventScript_1EE595:: @ 81EE595
Route107_EventScript_1EE5AC:: @ 81EE5AC
trainerbattle 2, TRAINER_TONY_1, 0, Route107_Text_2967AD, Route107_Text_2967D8, Route107_EventScript_1EE5D8
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route107_EventScript_1EE5F7
msgbox Route107_Text_2967FF, 4
diff --git a/data/scripts/maps/Route108.inc b/data/scripts/maps/Route108.inc
index d88f63ca1..5c416d7dd 100644
--- a/data/scripts/maps/Route108.inc
+++ b/data/scripts/maps/Route108.inc
@@ -28,7 +28,7 @@ Route108_EventScript_1EE6E6:: @ 81EE6E6
Route108_EventScript_1EE6FD:: @ 81EE6FD
trainerbattle 2, TRAINER_CORY_1, 0, Route108_Text_296F5D, Route108_Text_296F93, Route108_EventScript_1EE729
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route108_EventScript_1EE748
msgbox Route108_Text_296FB0, 4
diff --git a/data/scripts/maps/Route109.inc b/data/scripts/maps/Route109.inc
index 4cdd835ff..da36de73c 100644
--- a/data/scripts/maps/Route109.inc
+++ b/data/scripts/maps/Route109.inc
@@ -397,7 +397,7 @@ Route109_EventScript_1EEA82:: @ 81EEA82
Route109_EventScript_1EEA99:: @ 81EEA99
trainerbattle 2, TRAINER_RICKY_1, 0, Route109_Text_29733B, Route109_Text_297379, Route109_EventScript_1EEAC5
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route109_EventScript_1EEAE4
msgbox Route109_Text_297380, 4
@@ -422,7 +422,7 @@ Route109_EventScript_1EEAE4:: @ 81EEAE4
Route109_EventScript_1EEAFB:: @ 81EEAFB
trainerbattle 2, TRAINER_LOLA_1, 0, Route109_Text_29749C, Route109_Text_2974CF, Route109_EventScript_1EEB27
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route109_EventScript_1EEB46
msgbox Route109_Text_2974D6, 4
diff --git a/data/scripts/maps/Route110.inc b/data/scripts/maps/Route110.inc
index 0fa78b385..f07ca623e 100644
--- a/data/scripts/maps/Route110.inc
+++ b/data/scripts/maps/Route110.inc
@@ -176,7 +176,7 @@ Route110_EventScript_1EF409:: @ 81EF409
Route110_EventScript_1EF420:: @ 81EF420
trainerbattle 2, TRAINER_EDWIN_1, 0, Route110_Text_29815E, Route110_Text_29818F, Route110_EventScript_1EF44C
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route110_EventScript_1EF46B
msgbox Route110_Text_2981B3, 4
@@ -216,7 +216,7 @@ Route110_EventScript_1EF4B0:: @ 81EF4B0
Route110_EventScript_1EF4C7:: @ 81EF4C7
trainerbattle 2, TRAINER_BENJAMIN_1, 0, Route110_Text_297C63, Route110_Text_297C8A, Route110_EventScript_1EF4F3
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route110_EventScript_1EF512
msgbox Route110_Text_297CB4, 4
@@ -246,7 +246,7 @@ Route110_EventScript_1EF529:: @ 81EF529
Route110_EventScript_1EF540:: @ 81EF540
trainerbattle 2, TRAINER_ABIGAIL_1, 0, Route110_Text_297DFA, Route110_Text_297E69, Route110_EventScript_1EF56C
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route110_EventScript_1EF58B
msgbox Route110_Text_297E88, 4
@@ -271,7 +271,7 @@ Route110_EventScript_1EF58B:: @ 81EF58B
Route110_EventScript_1EF5A2:: @ 81EF5A2
trainerbattle 2, TRAINER_ISABEL_1, 0, Route110_Text_298349, Route110_Text_298389, Route110_EventScript_1EF5CE
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route110_EventScript_1EF5ED
msgbox Route110_Text_2983A2, 4
diff --git a/data/scripts/maps/Route111.inc b/data/scripts/maps/Route111.inc
index c51b07b6c..18dc4c389 100644
--- a/data/scripts/maps/Route111.inc
+++ b/data/scripts/maps/Route111.inc
@@ -473,7 +473,7 @@ Route111_EventScript_1F1249:: @ 81F1249
Route111_EventScript_1F1260:: @ 81F1260
trainerbattle 2, TRAINER_DUSTY_1, 0, Route111_Text_298B08, Route111_Text_298B53, Route111_EventScript_1F128C
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route111_EventScript_1F12AB
msgbox Route111_Text_298B9A, 4
@@ -513,7 +513,7 @@ Route111_EventScript_1F12F0:: @ 81F12F0
Route111_EventScript_1F1307:: @ 81F1307
trainerbattle 2, TRAINER_WILTON_1, 0, Route111_Text_298F79, Route111_Text_298FA9, Route111_EventScript_1F1333
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route111_EventScript_1F1352
msgbox Route111_Text_298FD4, 4
@@ -538,7 +538,7 @@ Route111_EventScript_1F1352:: @ 81F1352
Route111_EventScript_1F1369:: @ 81F1369
trainerbattle 2, TRAINER_BROOKE_1, 0, Route111_Text_299143, Route111_Text_299193, Route111_EventScript_1F1395
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route111_EventScript_1F13B4
msgbox Route111_Text_2991C2, 4
diff --git a/data/scripts/maps/Route112.inc b/data/scripts/maps/Route112.inc
index 066a7a347..6a9f506f6 100644
--- a/data/scripts/maps/Route112.inc
+++ b/data/scripts/maps/Route112.inc
@@ -67,7 +67,7 @@ Route112_EventScript_1F1E6A:: @ 81F1E6A
Route112_EventScript_1F1E81:: @ 81F1E81
trainerbattle 2, TRAINER_TRENT_1, 0, Route112_Text_299815, Route112_Text_29987C, Route112_EventScript_1F1EAD
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route112_EventScript_1F1ECC
msgbox Route112_Text_299896, 4
diff --git a/data/scripts/maps/Route113.inc b/data/scripts/maps/Route113.inc
index 7ee63e492..30bf10068 100644
--- a/data/scripts/maps/Route113.inc
+++ b/data/scripts/maps/Route113.inc
@@ -60,7 +60,7 @@ Route113_EventScript_1F21D7:: @ 81F21D7
Route113_EventScript_1F21EE:: @ 81F21EE
trainerbattle 2, TRAINER_MADELINE_1, 0, Route113_Text_299EA6, Route113_Text_299EF9, Route113_EventScript_1F221A
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route113_EventScript_1F2239
msgbox Route113_Text_299F15, 4
@@ -85,7 +85,7 @@ Route113_EventScript_1F2239:: @ 81F2239
Route113_EventScript_1F2250:: @ 81F2250
trainerbattle 2, TRAINER_LAO_1, 0, Route113_Text_29A015, Route113_Text_29A04C, Route113_EventScript_1F227C
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route113_EventScript_1F229B
msgbox Route113_Text_29A067, 4
diff --git a/data/scripts/maps/Route114.inc b/data/scripts/maps/Route114.inc
index cca7be5af..f1aaf24d2 100644
--- a/data/scripts/maps/Route114.inc
+++ b/data/scripts/maps/Route114.inc
@@ -110,7 +110,7 @@ Route114_EventScript_1F2685:: @ 81F2685
Route114_EventScript_1F269C:: @ 81F269C
trainerbattle 2, TRAINER_STEVE_1, 0, Route114_Text_29A943, Route114_Text_29A973, Route114_EventScript_1F26C8
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route114_EventScript_1F26E7
msgbox Route114_Text_29A981, 4
@@ -135,7 +135,7 @@ Route114_EventScript_1F26E7:: @ 81F26E7
Route114_EventScript_1F26FE:: @ 81F26FE
trainerbattle 2, TRAINER_BERNIE_1, 0, Route114_Text_29AADB, Route114_Text_29AB1A, Route114_EventScript_1F272A
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route114_EventScript_1F2749
msgbox Route114_Text_29AB36, 4
diff --git a/data/scripts/maps/Route115.inc b/data/scripts/maps/Route115.inc
index 8ea531f9d..8adf2fa04 100644
--- a/data/scripts/maps/Route115.inc
+++ b/data/scripts/maps/Route115.inc
@@ -38,7 +38,7 @@ Route115_EventScript_1F2985:: @ 81F2985
Route115_EventScript_1F298E:: @ 81F298E
trainerbattle 2, TRAINER_TIMOTHY_1, 0, Route115_Text_29B1FA, Route115_Text_29B230, Route115_EventScript_1F29BA
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route115_EventScript_1F29D9
msgbox Route115_Text_29B258, 4
@@ -68,7 +68,7 @@ Route115_EventScript_1F29F0:: @ 81F29F0
Route115_EventScript_1F2A07:: @ 81F2A07
trainerbattle 2, TRAINER_NOB_1, 0, Route115_Text_29B449, Route115_Text_29B480, Route115_EventScript_1F2A33
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route115_EventScript_1F2A52
msgbox Route115_Text_29B49D, 4
@@ -93,7 +93,7 @@ Route115_EventScript_1F2A52:: @ 81F2A52
Route115_EventScript_1F2A69:: @ 81F2A69
trainerbattle 2, TRAINER_CYNDY_1, 0, Route115_Text_29B5EF, Route115_Text_29B62D, Route115_EventScript_1F2A95
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route115_EventScript_1F2AB4
msgbox Route115_Text_29B647, 4
diff --git a/data/scripts/maps/Route116.inc b/data/scripts/maps/Route116.inc
index 359f21375..4e6a6be80 100644
--- a/data/scripts/maps/Route116.inc
+++ b/data/scripts/maps/Route116.inc
@@ -259,7 +259,7 @@ Route116_EventScript_1F2EA0:: @ 81F2EA0
Route116_EventScript_1F2EB7:: @ 81F2EB7
trainerbattle 2, TRAINER_JERRY_1, 0, Route116_Text_29BD0C, Route116_Text_29BD66, Route116_EventScript_1F2EF8
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route116_EventScript_1F2F4E
setvar VAR_0x8004, 273
@@ -271,7 +271,7 @@ Route116_EventScript_1F2EB7:: @ 81F2EB7
end
Route116_EventScript_1F2EF8:: @ 81F2EF8
- checkflag FLAG_0x12F
+ checkflag FLAG_HAS_MATCH_CALL
goto_eq Route116_EventScript_1F2F03
release
end
@@ -288,7 +288,7 @@ Route116_EventScript_1F2F03:: @ 81F2F03
end
Route116_EventScript_1F2F22:: @ 81F2F22
- checkflag FLAG_0x12F
+ checkflag FLAG_HAS_MATCH_CALL
goto_eq Route116_EventScript_1F2F35
msgbox Route116_Text_29BD92, 4
release
@@ -320,7 +320,7 @@ Route116_EventScript_1F2F7C:: @ 81F2F7C
Route116_EventScript_1F2F93:: @ 81F2F93
trainerbattle 2, TRAINER_KAREN_1, 0, Route116_Text_29BFC5, Route116_Text_29BFFA, Route116_EventScript_1F2FD4
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route116_EventScript_1F302A
setvar VAR_0x8004, 280
@@ -332,7 +332,7 @@ Route116_EventScript_1F2F93:: @ 81F2F93
end
Route116_EventScript_1F2FD4:: @ 81F2FD4
- checkflag FLAG_0x12F
+ checkflag FLAG_HAS_MATCH_CALL
goto_eq Route116_EventScript_1F2FDF
release
end
@@ -349,7 +349,7 @@ Route116_EventScript_1F2FDF:: @ 81F2FDF
end
Route116_EventScript_1F2FFE:: @ 81F2FFE
- checkflag FLAG_0x12F
+ checkflag FLAG_HAS_MATCH_CALL
goto_eq Route116_EventScript_1F3011
msgbox Route116_Text_29C010, 4
release
diff --git a/data/scripts/maps/Route117.inc b/data/scripts/maps/Route117.inc
index 01463516b..5140596d8 100644
--- a/data/scripts/maps/Route117.inc
+++ b/data/scripts/maps/Route117.inc
@@ -40,7 +40,7 @@ Route117_EventScript_1F39C7:: @ 81F39C7
Route117_EventScript_1F39D0:: @ 81F39D0
trainerbattle 2, TRAINER_ISAAC_1, 0, Route117_Text_29C43F, Route117_Text_29C47A, Route117_EventScript_1F39FC
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route117_EventScript_1F3A1B
msgbox Route117_Text_29C498, 4
@@ -65,7 +65,7 @@ Route117_EventScript_1F3A1B:: @ 81F3A1B
Route117_EventScript_1F3A32:: @ 81F3A32
trainerbattle 2, TRAINER_LYDIA_1, 0, Route117_Text_29C612, Route117_Text_29C659, Route117_EventScript_1F3A5E
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route117_EventScript_1F3A7D
msgbox Route117_Text_29C679, 4
@@ -90,7 +90,7 @@ Route117_EventScript_1F3A7D:: @ 81F3A7D
Route117_EventScript_1F3A94:: @ 81F3A94
trainerbattle 2, TRAINER_DYLAN_1, 0, Route117_Text_29C7A5, Route117_Text_29C7EB, Route117_EventScript_1F3AC0
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route117_EventScript_1F3ADF
msgbox Route117_Text_29C800, 4
@@ -115,7 +115,7 @@ Route117_EventScript_1F3ADF:: @ 81F3ADF
Route117_EventScript_1F3AF6:: @ 81F3AF6
trainerbattle 2, TRAINER_MARIA_1, 0, Route117_Text_29C955, Route117_Text_29C9A6, Route117_EventScript_1F3B22
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route117_EventScript_1F3B41
msgbox Route117_Text_29C9D0, 4
@@ -145,7 +145,7 @@ Route117_EventScript_1F3B58:: @ 81F3B58
Route117_EventScript_1F3B6F:: @ 81F3B6F
trainerbattle 6, TRAINER_ANNA_AND_MEG_1, 0, Route117_Text_29CC4A, Route117_Text_29CC8E, Route117_Text_29CD61, Route117_EventScript_1F3B9F
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route117_EventScript_1F3BB8
msgbox Route117_Text_29CCCB, 4
@@ -168,7 +168,7 @@ Route117_EventScript_1F3BB8:: @ 81F3BB8
Route117_EventScript_1F3BD3:: @ 81F3BD3
trainerbattle 6, TRAINER_ANNA_AND_MEG_1, 0, Route117_Text_29CD9D, Route117_Text_29CDE9, Route117_Text_29CE52, Route117_EventScript_1F3C03
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route117_EventScript_1F3C1C
msgbox Route117_Text_29CE17, 4
diff --git a/data/scripts/maps/Route118.inc b/data/scripts/maps/Route118.inc
index 42c3d6d57..5d46224a9 100644
--- a/data/scripts/maps/Route118.inc
+++ b/data/scripts/maps/Route118.inc
@@ -188,7 +188,7 @@ Route118_Movement_1F3F7E: @ 81F3F7E
Route118_EventScript_1F3F87:: @ 81F3F87
trainerbattle 2, TRAINER_ROSE_1, 0, Route118_Text_29D290, Route118_Text_29D2D8, Route118_EventScript_1F3FB3
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route118_EventScript_1F3FD2
msgbox Route118_Text_29D2FA, 4
@@ -223,7 +223,7 @@ Route118_EventScript_1F4000:: @ 81F4000
Route118_EventScript_1F4017:: @ 81F4017
trainerbattle 2, TRAINER_DALTON_1, 0, Route118_Text_29D6AF, Route118_Text_29D6CD, Route118_EventScript_1F4043
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route118_EventScript_1F4062
msgbox Route118_Text_29D6D8, 4
diff --git a/data/scripts/maps/Route119.inc b/data/scripts/maps/Route119.inc
index 4436005ba..f9bbadb85 100644
--- a/data/scripts/maps/Route119.inc
+++ b/data/scripts/maps/Route119.inc
@@ -368,7 +368,7 @@ Route119_EventScript_1F47F9:: @ 81F47F9
Route119_EventScript_1F4810:: @ 81F4810
trainerbattle 2, TRAINER_JACKSON_1, 0, Route119_Text_29DC4C, Route119_Text_29DC9F, Route119_EventScript_1F483C
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route119_EventScript_1F485B
msgbox Route119_Text_29DCC6, 4
@@ -393,7 +393,7 @@ Route119_EventScript_1F485B:: @ 81F485B
Route119_EventScript_1F4872:: @ 81F4872
trainerbattle 2, TRAINER_CATHERINE_1, 0, Route119_Text_29DE0F, Route119_Text_29DE5D, Route119_EventScript_1F489E
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route119_EventScript_1F48BD
msgbox Route119_Text_29DE88, 4
diff --git a/data/scripts/maps/Route120.inc b/data/scripts/maps/Route120.inc
index aaffe0f12..9651ab8ab 100644
--- a/data/scripts/maps/Route120.inc
+++ b/data/scripts/maps/Route120.inc
@@ -297,7 +297,7 @@ Route120_EventScript_1F57D7:: @ 81F57D7
Route120_EventScript_1F57EE:: @ 81F57EE
trainerbattle 2, TRAINER_ROBERT_1, 0, Route120_Text_29E6E3, Route120_Text_29E70A, Route120_EventScript_1F581A
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route120_EventScript_1F5839
msgbox Route120_Text_29E726, 4
@@ -332,7 +332,7 @@ Route120_EventScript_1F5867:: @ 81F5867
Route120_EventScript_1F587E:: @ 81F587E
trainerbattle 2, TRAINER_JEFFREY_1, 0, Route120_Text_29E9D7, Route120_Text_29E9FF, Route120_EventScript_1F58AA
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route120_EventScript_1F58C9
msgbox Route120_Text_29EA08, 4
diff --git a/data/scripts/maps/Route121.inc b/data/scripts/maps/Route121.inc
index 0d1f8863e..59623b4e6 100644
--- a/data/scripts/maps/Route121.inc
+++ b/data/scripts/maps/Route121.inc
@@ -72,7 +72,7 @@ Route121_EventScript_1F5E74:: @ 81F5E74
Route121_EventScript_1F5E8B:: @ 81F5E8B
trainerbattle 2, TRAINER_WALTER_1, 0, Route121_Text_29F199, Route121_Text_29F20D, Route121_EventScript_1F5EB7
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route121_EventScript_1F5ED6
msgbox Route121_Text_29F21E, 4
@@ -112,7 +112,7 @@ Route121_EventScript_1F5F1F:: @ 81F5F1F
Route121_EventScript_1F5F3A:: @ 81F5F3A
trainerbattle 2, TRAINER_JESSICA_1, 0, Route121_Text_29F612, Route121_Text_29F641, Route121_EventScript_1F5F66
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route121_EventScript_1F5F85
msgbox Route121_Text_29F66F, 4
@@ -157,7 +157,7 @@ Route121_EventScript_1F5FE1:: @ 81F5FE1
Route121_EventScript_1F5FF8:: @ 81F5FF8
trainerbattle 2, TRAINER_CRISTIN_1, 0, Route121_Text_29F770, Route121_Text_29F7C1, Route121_EventScript_1F6024
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route121_EventScript_1F6043
msgbox Route121_Text_29F7D4, 4
diff --git a/data/scripts/maps/Route123.inc b/data/scripts/maps/Route123.inc
index 8eb397fd4..ee659a496 100644
--- a/data/scripts/maps/Route123.inc
+++ b/data/scripts/maps/Route123.inc
@@ -62,7 +62,7 @@ Route123_EventScript_1F61F3:: @ 81F61F3
Route123_EventScript_1F620A:: @ 81F620A
trainerbattle 2, TRAINER_CAMERON_1, 0, Route123_Text_29FDBA, Route123_Text_29FE1E, Route123_EventScript_1F6236
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route123_EventScript_1F6255
msgbox Route123_Text_29FE2A, 4
@@ -87,7 +87,7 @@ Route123_EventScript_1F6255:: @ 81F6255
Route123_EventScript_1F626C:: @ 81F626C
trainerbattle 2, TRAINER_JACKI_1, 0, Route123_Text_29FF61, Route123_Text_29FFD8, Route123_EventScript_1F6298
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route123_EventScript_1F62B7
msgbox Route123_Text_29FFE5, 4
@@ -162,7 +162,7 @@ Route123_EventScript_1F63A5:: @ 81F63A5
Route123_EventScript_1F63BC:: @ 81F63BC
trainerbattle 2, TRAINER_FERNANDO_1, 0, Route123_Text_2A0323, Route123_Text_2A035C, Route123_EventScript_1F63E8
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route123_EventScript_1F6407
msgbox Route123_Text_2A0389, 4
diff --git a/data/scripts/maps/Route124.inc b/data/scripts/maps/Route124.inc
index 2a0298650..01687eba8 100644
--- a/data/scripts/maps/Route124.inc
+++ b/data/scripts/maps/Route124.inc
@@ -23,7 +23,7 @@ Route124_EventScript_1F659C:: @ 81F659C
Route124_EventScript_1F65B3:: @ 81F65B3
trainerbattle 2, TRAINER_JENNY_1, 0, Route124_Text_2A0B37, Route124_Text_2A0B7C, Route124_EventScript_1F65DF
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route124_EventScript_1F65FE
msgbox Route124_Text_2A0B9A, 4
@@ -58,7 +58,7 @@ Route124_EventScript_1F662C:: @ 81F662C
Route124_EventScript_1F6643:: @ 81F6643
trainerbattle 6, TRAINER_LILA_AND_ROY_1, 0, Route124_Text_2A0E87, Route124_Text_2A0EFE, Route124_Text_2A0F8C, Route124_EventScript_1F6673
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route124_EventScript_1F668C
msgbox Route124_Text_2A0F3A, 4
@@ -81,7 +81,7 @@ Route124_EventScript_1F668C:: @ 81F668C
Route124_EventScript_1F66A7:: @ 81F66A7
trainerbattle 6, TRAINER_LILA_AND_ROY_1, 0, Route124_Text_2A0FD1, Route124_Text_2A1012, Route124_Text_2A10E5, Route124_EventScript_1F66D7
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route124_EventScript_1F66F0
msgbox Route124_Text_2A103E, 4
diff --git a/data/scripts/maps/Route125.inc b/data/scripts/maps/Route125.inc
index 953bf52b2..b93e7f016 100644
--- a/data/scripts/maps/Route125.inc
+++ b/data/scripts/maps/Route125.inc
@@ -48,7 +48,7 @@ Route125_EventScript_1F67E9:: @ 81F67E9
Route125_EventScript_1F6800:: @ 81F6800
trainerbattle 2, TRAINER_ERNEST_1, 0, Route125_Text_2A16FC, Route125_Text_2A173A, Route125_EventScript_1F682C
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route125_EventScript_1F684B
msgbox Route125_Text_2A1755, 4
diff --git a/data/scripts/maps/Route126.inc b/data/scripts/maps/Route126.inc
index 4678fe39d..e6f8848b7 100644
--- a/data/scripts/maps/Route126.inc
+++ b/data/scripts/maps/Route126.inc
@@ -44,7 +44,7 @@ Route126_EventScript_1F6960:: @ 81F6960
Route126_EventScript_1F6977:: @ 81F6977
trainerbattle 2, TRAINER_PABLO_1, 0, Route126_Text_2A1EA5, Route126_Text_2A1EE3, Route126_EventScript_1F69A3
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route126_EventScript_1F69C2
msgbox Route126_Text_2A1F10, 4
diff --git a/data/scripts/maps/Route127.inc b/data/scripts/maps/Route127.inc
index 9851df043..68992425e 100644
--- a/data/scripts/maps/Route127.inc
+++ b/data/scripts/maps/Route127.inc
@@ -63,7 +63,7 @@ Route127_EventScript_1F6ABF:: @ 81F6ABF
Route127_EventScript_1F6AD6:: @ 81F6AD6
trainerbattle 2, TRAINER_KOJI_1, 0, Route127_Text_2A264D, Route127_Text_2A2685, Route127_EventScript_1F6B02
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route127_EventScript_1F6B21
msgbox Route127_Text_2A26AC, 4
diff --git a/data/scripts/maps/Route128.inc b/data/scripts/maps/Route128.inc
index 1ba1b3448..21824eb41 100644
--- a/data/scripts/maps/Route128.inc
+++ b/data/scripts/maps/Route128.inc
@@ -177,7 +177,7 @@ Route128_Movement_1F6CBB: @ 81F6CBB
Route128_EventScript_1F6CBE:: @ 81F6CBE
trainerbattle 2, TRAINER_ISAIAH_1, 0, Route128_Text_2A287F, Route128_Text_2A28AB, Route128_EventScript_1F6CEA
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route128_EventScript_1F6D09
msgbox Route128_Text_2A28D7, 4
@@ -202,7 +202,7 @@ Route128_EventScript_1F6D09:: @ 81F6D09
Route128_EventScript_1F6D20:: @ 81F6D20
trainerbattle 2, TRAINER_KATELYN_1, 0, Route128_Text_2A2A1F, Route128_Text_2A2A94, Route128_EventScript_1F6D4C
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq Route128_EventScript_1F6D6B
msgbox Route128_Text_2A2AB7, 4
diff --git a/data/scripts/maps/RustboroCity.inc b/data/scripts/maps/RustboroCity.inc
index 31182439b..14f155cee 100644
--- a/data/scripts/maps/RustboroCity.inc
+++ b/data/scripts/maps/RustboroCity.inc
@@ -52,7 +52,7 @@ RustboroCity_EventScript_1E0715:: @ 81E0715
waitmovement 0
msgbox RustboroCity_Text_1E22A5, 4
closemessage
- setflag FLAG_0x12F
+ setflag FLAG_HAS_MATCH_CALL
applymovement 15, RustboroCity_Movement_2725A4
waitmovement 0
playse SE_TK_KASYA
diff --git a/data/scripts/maps/RustboroCity_Gym.inc b/data/scripts/maps/RustboroCity_Gym.inc
index dec6a8e73..dde0cc6a6 100644
--- a/data/scripts/maps/RustboroCity_Gym.inc
+++ b/data/scripts/maps/RustboroCity_Gym.inc
@@ -3,7 +3,7 @@ RustboroCity_Gym_MapScripts:: @ 8212F30
RustboroCity_Gym_EventScript_212F31:: @ 8212F31
trainerbattle 1, TRAINER_ROXANNE_1, 0, RustboroCity_Gym_Text_21362A, RustboroCity_Gym_Text_21370B, RustboroCity_Gym_EventScript_212F66
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq RustboroCity_Gym_EventScript_212FC8
checkflag FLAG_0x0A5
diff --git a/data/scripts/maps/SkyPillar_Top.inc b/data/scripts/maps/SkyPillar_Top.inc
index d5a4e477c..7d7e575fc 100644
--- a/data/scripts/maps/SkyPillar_Top.inc
+++ b/data/scripts/maps/SkyPillar_Top.inc
@@ -53,7 +53,7 @@ SkyPillar_Top_EventScript_239722:: @ 8239722
waitmoncry
setwildbattle SPECIES_RAYQUAZA, 70, ITEM_NONE
setflag FLAG_SYS_CTRL_OBJ_DELETE
- special sub_80B0934
+ special BattleSetup_StartLegendaryBattle
waitstate
clearflag FLAG_SYS_CTRL_OBJ_DELETE
specialvar VAR_RESULT, sub_8138B80
diff --git a/data/scripts/maps/SootopolisCity_Gym_1F.inc b/data/scripts/maps/SootopolisCity_Gym_1F.inc
index e28d8d13f..8b6a5754e 100644
--- a/data/scripts/maps/SootopolisCity_Gym_1F.inc
+++ b/data/scripts/maps/SootopolisCity_Gym_1F.inc
@@ -87,7 +87,7 @@ SootopolisCity_Gym_1F_Movement_224F42: @ 8224F42
SootopolisCity_Gym_1F_EventScript_224F44:: @ 8224F44
trainerbattle 1, TRAINER_JUAN_1, 0, SootopolisCity_Gym_1F_Text_225268, SootopolisCity_Gym_1F_Text_225432, SootopolisCity_Gym_1F_EventScript_224F82
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq SootopolisCity_Gym_1F_EventScript_225025
checkflag FLAG_0x0AC
diff --git a/data/scripts/maps/SouthernIsland_Interior.inc b/data/scripts/maps/SouthernIsland_Interior.inc
index 1853c08b8..aa19dc5fb 100644
--- a/data/scripts/maps/SouthernIsland_Interior.inc
+++ b/data/scripts/maps/SouthernIsland_Interior.inc
@@ -87,7 +87,7 @@ SouthernIsland_Interior_EventScript_242AD0:: @ 8242AD0
compare_var_to_value VAR_0x40D5, 0
call_if 5, SouthernIsland_Interior_EventScript_242BB7
setflag FLAG_SYS_CTRL_OBJ_DELETE
- special sub_80B08EC
+ special BattleSetup_StartLatiBattle
waitstate
clearflag FLAG_SYS_CTRL_OBJ_DELETE
specialvar VAR_RESULT, sub_8138B80
diff --git a/data/scripts/maps/TerraCave_End.inc b/data/scripts/maps/TerraCave_End.inc
index a39856dda..f3168036f 100644
--- a/data/scripts/maps/TerraCave_End.inc
+++ b/data/scripts/maps/TerraCave_End.inc
@@ -38,7 +38,7 @@ TerraCave_End_EventScript_23B0EC:: @ 823B0EC
setvar VAR_LAST_TALKED, 1
setwildbattle SPECIES_GROUDON, 70, ITEM_NONE
setflag FLAG_SYS_CTRL_OBJ_DELETE
- special sub_80B0934
+ special BattleSetup_StartLegendaryBattle
waitstate
clearflag FLAG_SYS_CTRL_OBJ_DELETE
setvar VAR_0x4001, 0
diff --git a/data/scripts/maps/VictoryRoad_1F.inc b/data/scripts/maps/VictoryRoad_1F.inc
index 8bc22aa3d..94ecc0946 100644
--- a/data/scripts/maps/VictoryRoad_1F.inc
+++ b/data/scripts/maps/VictoryRoad_1F.inc
@@ -83,7 +83,7 @@ VictoryRoad_1F_EventScript_235E2C:: @ 8235E2C
VictoryRoad_1F_EventScript_235E35:: @ 8235E35
trainerbattle 0, TRAINER_WALLY_3, 0, VictoryRoad_1F_Text_236073, VictoryRoad_1F_Text_2360DA
- specialvar VAR_RESULT, sub_80B226C
+ specialvar VAR_RESULT, ShouldTryRematchBattle
compare_var_to_value VAR_RESULT, 1
goto_eq VictoryRoad_1F_EventScript_235E5C
msgbox VictoryRoad_1F_Text_2360FE, 6
diff --git a/data/scripts/players_house.inc b/data/scripts/players_house.inc
index 85952d9f0..184a00a0d 100644
--- a/data/scripts/players_house.inc
+++ b/data/scripts/players_house.inc
@@ -114,7 +114,7 @@ LittlerootTown_BrendansHouse_2F_EventScript_29283F:: @ 829283F
LittlerootTown_BrendansHouse_2F_EventScript_292849:: @ 8292849
fadescreen 1
- special Special_StartWallClock
+ special StartWallClock
waitstate
return
@@ -318,7 +318,7 @@ LittlerootTown_MaysHouse_1F_EventScript_2929C5:: @ 82929C5
goto_eq LittlerootTown_BrendansHouse_1F_EventScript_292A0F
compare_var_to_value VAR_0x408C, 4
goto_eq LittlerootTown_BrendansHouse_1F_EventScript_292A0F
- checkflag FLAG_0x12F
+ checkflag FLAG_HAS_MATCH_CALL
goto_eq LittlerootTown_BrendansHouse_1F_EventScript_292A19
checkflag FLAG_0x052
goto_eq LittlerootTown_BrendansHouse_1F_EventScript_292A86
diff --git a/data/scripts/pokeblocks.inc b/data/scripts/pokeblocks.inc
index e77e4d789..a93c44615 100644
--- a/data/scripts/pokeblocks.inc
+++ b/data/scripts/pokeblocks.inc
@@ -290,7 +290,7 @@ LilycoveCity_ContestLobby_EventScript_293CEE:: @ 8293CEE
checkitem ITEM_POKEBLOCK_CASE, 1
compare_var_to_value VAR_RESULT, 0
goto_eq LilycoveCity_ContestLobby_EventScript_293D43
- specialvar VAR_RESULT, sub_8136EF4
+ specialvar VAR_RESULT, GetFirstFreePokeblockSlot
compare_var_to_value VAR_RESULT, 65535
goto_eq LilycoveCity_ContestLobby_EventScript_293D39
specialvar VAR_RESULT, PlayerHasBerries
@@ -303,7 +303,7 @@ LilycoveCity_ContestLobby_EventScript_293CEE:: @ 8293CEE
LilycoveCity_ContestLobby_EventScript_293D2C:: @ 8293D2C
copyvar VAR_0x8004, VAR_0x8009
fadescreen 1
- special sub_807FA80
+ special DoBerryBlending
waitstate
releaseall
end
@@ -365,7 +365,7 @@ LilycoveCity_ContestLobby_EventScript_293DC6:: @ 8293DC6
compare_var_to_value VAR_RESULT, 0
goto_eq LilycoveCity_ContestLobby_EventScript_293E14
msgbox LilycoveCity_ContestLobby_Text_293237, 4
- specialvar VAR_RESULT, sub_8136EF4
+ specialvar VAR_RESULT, GetFirstFreePokeblockSlot
compare_var_to_value VAR_RESULT, 65535
goto_if 5, LilycoveCity_ContestLobby_EventScript_293D91
compare_var_to_value VAR_RESULT, 65535
@@ -431,7 +431,7 @@ LilycoveCity_ContestLobby_EventScript_293EA3:: @ 8293EA3
compare_var_to_value VAR_RESULT, 0
goto_eq LilycoveCity_ContestLobby_EventScript_293EF1
msgbox LilycoveCity_ContestLobby_Text_29354E, 4
- specialvar VAR_RESULT, sub_8136EF4
+ specialvar VAR_RESULT, GetFirstFreePokeblockSlot
compare_var_to_value VAR_RESULT, 65535
goto_if 5, LilycoveCity_ContestLobby_EventScript_293E6E
compare_var_to_value VAR_RESULT, 65535
@@ -470,7 +470,7 @@ LilycoveCity_ContestLobby_EventScript_293F28:: @ 8293F28
specialvar VAR_RESULT, PlayerHasBerries
compare_var_to_value VAR_RESULT, 0
goto_eq LilycoveCity_ContestLobby_EventScript_293F1E
- specialvar VAR_RESULT, sub_8136EF4
+ specialvar VAR_RESULT, GetFirstFreePokeblockSlot
compare_var_to_value VAR_RESULT, 65535
goto_if 5, LilycoveCity_ContestLobby_EventScript_293F64
compare_var_to_value VAR_RESULT, 65535
@@ -536,7 +536,7 @@ LilycoveCity_ContestLobby_EventScript_293FF8:: @ 8293FF8
checkitem ITEM_POKEBLOCK_CASE, 1
compare_var_to_value VAR_RESULT, 0
goto_eq LilycoveCity_ContestLobby_EventScript_294028
- specialvar VAR_RESULT, sub_8136EF4
+ specialvar VAR_RESULT, GetFirstFreePokeblockSlot
compare_var_to_value VAR_RESULT, 65535
goto_eq LilycoveCity_ContestLobby_EventScript_294028
dodailyevents
@@ -570,7 +570,7 @@ LilycoveCity_ContestLobby_EventScript_294055:: @ 8294055
checkitem ITEM_POKEBLOCK_CASE, 1
compare_var_to_value VAR_RESULT, 0
goto_eq LilycoveCity_ContestLobby_EventScript_29416C
- specialvar VAR_RESULT, sub_8136EF4
+ specialvar VAR_RESULT, GetFirstFreePokeblockSlot
compare_var_to_value VAR_RESULT, 65535
goto_if 5, LilycoveCity_ContestLobby_EventScript_294092
compare_var_to_value VAR_RESULT, 65535
@@ -635,7 +635,7 @@ LilycoveCity_ContestLobby_EventScript_294147:: @ 8294147
removeobject 239
removeobject 238
removeobject 237
- special sub_807FA80
+ special DoBerryBlending
waitstate
releaseall
end
diff --git a/data/specials.inc b/data/specials.inc
index da076f6ff..d159df31f 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -61,17 +61,17 @@ gSpecials:: @ 81DBA64
def_special FieldObjectInteractionWaterBerryTree
def_special PlayerHasBerries
def_special IsEnigmaBerryValid
- def_special sub_80B170C
- def_special sub_80B1A14
- def_special special_trainer_unable_to_battle
- def_special check_trainer_flag
+ def_special GetTrainerBattleMode
+ def_special ShowTrainerIntroSpeech
+ def_special ShowTrainerCantBattleSpeech
+ def_special GetTrainerFlag
def_special sub_80B45AC
def_special SetUpTrainerEncounterMusic
- def_special sub_80B226C
- def_special sub_80B22A0
- def_special sub_80B19EC
+ def_special ShouldTryRematchBattle
+ def_special IsTrainerReadyForRematch
+ def_special BattleSetup_StartRematchBattle
def_special sub_80C7578
- def_special sub_80F92F8
+ def_special HasEnoughMonsForDoubleBattle
def_special TurnOffTVScreen
def_special DoTVShow
def_special DoPokeNews
@@ -164,14 +164,14 @@ gSpecials:: @ 81DBA64
def_special sub_8138B8C
def_special sub_814FC9C
def_special sub_8085784
- def_special Special_StartWallClock
+ def_special StartWallClock
def_special Special_ViewWallClock
- def_special sub_80B1138
- def_special sub_80B086C
+ def_special ChooseStarter
+ def_special StartWallyTutorialBattle
def_special ChangePokemonNickname
def_special sub_81B94B0
- def_special sub_8136EF4
- def_special sub_807FA80
+ def_special GetFirstFreePokeblockSlot
+ def_special DoBerryBlending
def_special sub_8142BC8
def_special sub_813BD60
def_special sub_813BCA8
@@ -320,9 +320,9 @@ gSpecials:: @ 81DBA64
def_special sub_8139540
def_special sub_809E1C8
def_special sub_8139560
- def_special sub_80B0A18
- def_special sub_80B0934
- def_special sub_80B0A74
+ def_special StartGroudonKyogreBattle
+ def_special BattleSetup_StartLegendaryBattle
+ def_special StartRegiBattle
def_special sub_80B16D8
def_special DoSealedChamberShakingEffect2
def_special sub_8139634
@@ -332,7 +332,7 @@ gSpecials:: @ 81DBA64
def_special sub_80F8D28
def_special sub_80F8EB8
def_special sub_8162794
- def_special sub_80B08EC
+ def_special BattleSetup_StartLatiBattle
def_special sub_8139648
def_special sub_8139668
def_special sub_80F8FA0
@@ -415,7 +415,7 @@ gSpecials:: @ 81DBA64
def_special PutLilycoveContestLadyShowOnTheAir
def_special sub_813B880
def_special sub_81A085C
- def_special CheckIfMultipleTrainersWantBattle
+ def_special ShouldTryGetTrainerScript
def_special AddMapNamePopUpWindowTask
def_special AddMapNamePopUpWindowTask
def_special sub_81BE994
diff --git a/data/starter_choose.s b/data/starter_choose.s
index ae81aae20..a951a8987 100644
--- a/data/starter_choose.s
+++ b/data/starter_choose.s
@@ -63,5 +63,4 @@ sSpriteTemplate_PokeBall:: @ 85B1F28
.incbin "baserom.gba", 0x5b1f28, 0x18
gUnknown_085B1F40:: @ 85B1F40
- .incbin "baserom.gba", 0x5b1f40, 0x294
-
+ .incbin "baserom.gba", 0x5b1f40, 0x18
diff --git a/data/text/contest_strings.inc b/data/text/contest_strings.inc
index 46ce8a8c4..92b04c95c 100644
--- a/data/text/contest_strings.inc
+++ b/data/text/contest_strings.inc
@@ -202,476 +202,516 @@ gContestMoveTypeSmartText:: @ 827D4FB
gContestMoveTypeToughText:: @ 827D501
.string "TOUGH$"
-gUnknown_0827D507:: @ 827D507
+gText_0827D507:: @ 827D507
.string "Appeal no. {STR_VAR_1}!\n"
.string "Which move will be played?$"
-gUnknown_0827D531:: @ 827D531
+gText_0827D531:: @ 827D531
.string "Appeal no. {STR_VAR_1}!\n"
.string "But it can’t participate!$"
-gUnknown_0827D55A:: @ 827D55A
+gText_0827D55A:: @ 827D55A
.string "{STR_VAR_1} appealed with\n"
.string "{STR_VAR_2}!$"
-gUnknown_0827D56F:: @ 827D56F
+gText_0827D56F:: @ 827D56F
.string "{STR_VAR_1} was watching\n"
.string "the others.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
-gUnknown_0827D597:: @ 827D597
+gText_0827D597:: @ 827D597
.string "We’re all out of\n"
.string "Appeal Time!{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
-gUnknown_0827D5C1:: @ 827D5C1
+gText_0827D5C1:: @ 827D5C1
.string "But the appeal was\n"
.string "jammed.$"
-gUnknown_0827D5DC:: @ 827D5DC
+gText_0827D5DC:: @ 827D5DC
.string "It followed another\n"
.string "POKéMON’s lead.$"
-gUnknown_0827D600:: @ 827D600
+gText_0827D600:: @ 827D600
.string "But it messed up.$"
-gUnknown_0827D612:: @ 827D612
+gText_0827D612:: @ 827D612
.string "It went better than\n"
.string "usual.$"
-gUnknown_0827D62D:: @ 827D62D
+gText_0827D62D:: @ 827D62D
.string "The JUDGE looked away\n"
.string "for some reason.$"
-gUnknown_0827D654:: @ 827D654
+gText_0827D654:: @ 827D654
.string "It worked hard to build on\n"
.string "past mistakes.$"
-gUnknown_0827D67E:: @ 827D67E
+gText_0827D67E:: @ 827D67E
.string "It can’t make any more\n"
.string "moves.$"
-gUnknown_0827D69C:: @ 827D69C
+gText_0827D69C:: @ 827D69C
.string "It worked frighteningly\n"
.string "well.$"
-gUnknown_0827D6BA:: @ 827D6BA
+gText_0827D6BA:: @ 827D6BA
.string "It worked as hard as the\n"
.string "standout POKéMON.$"
-gUnknown_0827D6E5:: @ 827D6E5
+gText_0827D6E5:: @ 827D6E5
.string "The JUDGE looked on\n"
.string "expectantly.$"
-gUnknown_0827D706:: @ 827D706
+gText_0827D706:: @ 827D706
.string "It worked rather well.$"
-gUnknown_0827D71D:: @ 827D71D
+gText_0827D71D:: @ 827D71D
.string "It worked a little better\n"
.string "than usual.$"
-gUnknown_0827D743:: @ 827D743
+gText_0827D743:: @ 827D743
.string "{STR_VAR_1} failed to\n"
.string "stand out at all…{PAUSE_UNTIL_PRESS}$"
-gUnknown_0827D764:: @ 827D764
+gText_0827D764:: @ 827D764
.string "{STR_VAR_1} didn’t stand\n"
.string "out very much…{PAUSE_UNTIL_PRESS}$"
-gUnknown_0827D785:: @ 827D785
+gText_0827D785:: @ 827D785
.string "{STR_VAR_1} caught a\n"
.string "little attention.{PAUSE_UNTIL_PRESS}$"
-gUnknown_0827D7A5:: @ 827D7A5
+gText_0827D7A5:: @ 827D7A5
.string "{STR_VAR_1} attracted a\n"
.string "lot of attention.{PAUSE_UNTIL_PRESS}$"
-gUnknown_0827D7C8:: @ 827D7C8
+gText_0827D7C8:: @ 827D7C8
.string "{STR_VAR_1} commanded\n"
.string "total attention.{PAUSE_UNTIL_PRESS}$"
-gUnknown_0827D7E8:: @ 827D7E8
+gText_0827D7E8:: @ 827D7E8
.string "{STR_VAR_1} hasn’t made\n"
.string "its appeal.{PAUSE_UNTIL_PRESS}$"
-gUnknown_0827D805:: @ 827D805
+gText_0827D805:: @ 827D805
.string "Anticipation swelled for\n"
.string "{STR_VAR_1}’s appeal next.$"
-gUnknown_0827D830:: @ 827D830
+gText_0827D830:: @ 827D830
.string "$"
-gUnknown_0827D831:: @ 827D831
+gText_0827D831:: @ 827D831
.string "The JUDGE ’s views on\n"
.string "{STR_VAR_1} held firm.$"
-gUnknown_0827D855:: @ 827D855
+gText_0827D855:: @ 827D855
.string "{STR_VAR_1}’s {STR_VAR_3}\n"
.string "changed perceptions.$"
-gUnknown_0827D872:: @ 827D872
+gText_0827D872:: @ 827D872
.string "{STR_VAR_1}’s appeal\n"
.string "effect wore off.$"
-gUnknown_0827D88F:: @ 827D88F
+gText_0827D88F:: @ 827D88F
.string "The special appeal’s\n"
.string "effect wore off.$"
-gUnknown_0827D8B5:: @ 827D8B5
+gText_0827D8B5:: @ 827D8B5
.string "Everyone’s appeals were\n"
.string "made to look the same.$"
-gUnknown_0827D8E4:: @ 827D8E4
+gText_0827D8E4:: @ 827D8E4
.string "It cheapened\n"
.string "{STR_VAR_2}’s appeal.$"
-gUnknown_0827D8FE:: @ 827D8FE
+gText_0827D8FE:: @ 827D8FE
.string "It cheapened the appeal\n"
.string "of those ahead.$"
-gUnknown_0827D926:: @ 827D926
+gText_0827D926:: @ 827D926
.string "It stole attention away\n"
.string "from {STR_VAR_2}.$"
-gUnknown_0827D947:: @ 827D947
+gText_0827D947:: @ 827D947
.string "It cheapened\n"
.string "{STR_VAR_2}’s appeal.$"
-gUnknown_0827D961:: @ 827D961
+gText_0827D961:: @ 827D961
.string "It severely cheapened\n"
.string "other appeals.$"
-gUnknown_0827D986:: @ 827D986
+gText_0827D986:: @ 827D986
.string "Anticipation swelled for\n"
.string "{STR_VAR_1}’s appeal next.$"
-gUnknown_0827D9B1:: @ 827D9B1
+gText_0827D9B1:: @ 827D9B1
.string "It cheapened the appeal\n"
.string "of those ahead.$"
-gUnknown_0827D9D9:: @ 827D9D9
+gText_0827D9D9:: @ 827D9D9
.string "It cheapened the JUDGE’s\n"
.string "favorite appeal.$"
-gUnknown_0827DA03:: @ 827DA03
+gText_0827DA03:: @ 827DA03
.string "The appeals of others\n"
.string "were cheapened by half.$"
-gUnknown_0827DA31:: @ 827DA31
+gText_0827DA31:: @ 827DA31
.string "It stood out to make up\n"
.string "for being jammed.$"
-gUnknown_0827DA5B:: @ 827DA5B
+gText_0827DA5B:: @ 827DA5B
.string "It can’t participate in\n"
.string "appeals any more.$"
-gUnknown_0827DA85:: @ 827DA85
+gText_0827DA85:: @ 827DA85
.string "It touched the JUDGE for\n"
.string "a fantastic appeal.$"
-gUnknown_0827DAB2:: @ 827DAB2
+gText_0827DAB2:: @ 827DAB2
.string "Anticipation rose for\n"
.string "upcoming appeals.$"
-gUnknown_0827DADA:: @ 827DADA
+gText_0827DADA:: @ 827DADA
.string "It stood out as much as\n"
.string "special appeals.$"
-gUnknown_0827DB03:: @ 827DB03
+gText_0827DB03:: @ 827DB03
.string "It stood out as much as\n"
.string "{STR_VAR_1}.$"
-gUnknown_0827DB1F:: @ 827DB1F
+gText_0827DB1F:: @ 827DB1F
.string "Jammed appeals were made\n"
.string "even less noticeable.$"
-gUnknown_0827DB4E:: @ 827DB4E
+gText_0827DB4E:: @ 827DB4E
.string "Everyone’s appeals were\n"
.string "made the same.$"
+gText_827DB75:: @ 827DB75
.string "It became more conscious\n"
.string "of the other POKéMON.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827DBB0:: @ 827DBB0
.string "{STR_VAR_1} can’t make an\n"
.string "appeal after this.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827DBE0:: @ 827DBE0
.string "It settled down just a\n"
.string "little bit.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827DC0F:: @ 827DC0F
.string "It became oblivious to\n"
.string "the other POKéMON.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827DC45:: @ 827DC45
.string "It became less aware of\n"
.string "the other POKéMON.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827DC7C:: @ 827DC7C
.string "It stopped caring about\n"
.string "other POKéMON much.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827DCB4:: @ 827DCB4
.string "It tried to startle the\n"
.string "other POKéMON.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827DCE7:: @ 827DCE7
.string "It tried to dazzle the\n"
.string "others.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827DD12:: @ 827DD12
.string "The JUDGE looked away\n"
.string "from {STR_VAR_1}.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827DD3D:: @ 827DD3D
.string "It tried to unnerve the\n"
.string "next POKéMON.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827DD6F:: @ 827DD6F
.string "{STR_VAR_1} became\n"
.string "nervous.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827DD8E:: @ 827DD8E
.string "The appeal tried to\n"
.string "unnerve waiting POKéMON.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827DDC7:: @ 827DDC7
.string "It taunted POKéMON\n"
.string "doing well.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827DDF2:: @ 827DDF2
.string "{STR_VAR_1} regained its\n"
.string "form.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827DE14:: @ 827DE14
.string "It tried to jam POKéMON\n"
.string "doing well.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827DE44:: @ 827DE44
.string "The standout {STR_VAR_1}\n"
.string "hustled even more.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827DE73:: @ 827DE73
.string "The largely unnoticed\n"
.string "{STR_VAR_1} worked hard.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827DEA5:: @ 827DEA5
.string "It worked as much as\n"
.string "POKéMON before it.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827DED9:: @ 827DED9
.string "{STR_VAR_1}’s appeal did\n"
.string "not go well.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827DF02:: @ 827DF02
.string "It worked as much as the\n"
.string "preceding POKéMON.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827DF3A:: @ 827DF3A
.string "{STR_VAR_1}’s appeal did\n"
.string "not go well.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827DF63:: @ 827DF63
.string "{STR_VAR_1}’s appeal did\n"
.string "not go well.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827DF8C:: @ 827DF8C
.string "{STR_VAR_1}’s appeal\n"
.string "went slightly well.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827DFB8:: @ 827DFB8
.string "{STR_VAR_1}’s appeal\n"
.string "went pretty well.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827DFE2:: @ 827DFE2
.string "{STR_VAR_1}’s appeal\n"
.string "went excellently.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827E00C:: @ 827E00C
.string "{STR_VAR_1}’s appeal was\n"
.string "a dud.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827E02F:: @ 827E02F
.string "{STR_VAR_1}’s appeal did\n"
.string "not work very well.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827E05F:: @ 827E05F
.string "{STR_VAR_1}’s appeal\n"
.string "went slightly well.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827E08B:: @ 827E08B
.string "{STR_VAR_1}’s appeal\n"
.string "went pretty well.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827E0B5:: @ 827E0B5
.string "{STR_VAR_1}’s appeal\n"
.string "went very well.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827E0DD:: @ 827E0DD
.string "{STR_VAR_1}’s appeal\n"
.string "went excellently.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827E107:: @ 827E107
.string "It’s the same type as the\n"
.string "POKéMON before--good!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827E143:: @ 827E143
.string "It’s not the same type as\n"
.string "the one before--good!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827E17F:: @ 827E17F
.string "It stood out much more\n"
.string "than the POKéMON before.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827E1BB:: @ 827E1BB
.string "It didn’t do as well as the\n"
.string "POKéMON before.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827E1F3:: @ 827E1F3
.string "{STR_VAR_1}’s condition\n"
.string "rose above usual.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827E220:: @ 827E220
.string "{STR_VAR_1}’s hot status\n"
.string "made it a great appeal!{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827E254:: @ 827E254
.string "It moved up in line for\n"
.string "the next appeal.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827E289:: @ 827E289
.string "It moved back in line once\n"
.string "for the next appeal.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
+gText_827E2C5:: @ 827E2C5
.string "It scrambled up the\n"
.string "order for the next turn.{PAUSE 15}{PAUSE 15}{PAUSE 15}{PAUSE 15}$"
-gUnknown_0827E2FE:: @ 827E2FE
+gText_0827E2FE:: @ 827E2FE
.string "The JUDGE looked at\n"
.string "{STR_VAR_1} expectantly.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
-gUnknown_0827E32E:: @ 827E32E
+gText_0827E32E:: @ 827E32E
.string "The appeal combo went\n"
.string "over well.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
-gUnknown_0827E35B:: @ 827E35B
+gText_0827E35B:: @ 827E35B
.string "The appeal combo went\n"
.string "over very well.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
-gUnknown_0827E38D:: @ 827E38D
+gText_0827E38D:: @ 827E38D
.string "The appeal combo went\n"
.string "over excellently.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
-gUnknown_0827E3C1:: @ 827E3C1
+gText_0827E3C1:: @ 827E3C1
.string "{STR_VAR_1} managed to\n"
.string "avert its gaze.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
-gUnknown_0827E3EB:: @ 827E3EB
+gText_0827E3EB:: @ 827E3EB
.string "{STR_VAR_1} managed to\n"
.string "avoid seeing it.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
-gUnknown_0827E416:: @ 827E416
+gText_0827E416:: @ 827E416
.string "{STR_VAR_1} isn’t fazed\n"
.string "by that sort of thing.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
-gUnknown_0827E448:: @ 827E448
+gText_0827E448:: @ 827E448
.string "{STR_VAR_1} became a\n"
.string "little distracted.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
-gUnknown_0827E473:: @ 827E473
+gText_0827E473:: @ 827E473
.string "It tried to startle the\n"
.string "other POKéMON.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
-gUnknown_0827E4A6:: @ 827E4A6
+gText_0827E4A6:: @ 827E4A6
.string "{STR_VAR_1} looked down\n"
.string "out of distraction.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
-gUnknown_0827E4D5:: @ 827E4D5
+gText_0827E4D5:: @ 827E4D5
.string "{STR_VAR_1} turned back\n"
.string "out of distraction.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
-gUnknown_0827E504:: @ 827E504
+gText_0827E504:: @ 827E504
.string "{STR_VAR_1} couldn’t help\n"
.string "uttering a cry.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
-gUnknown_0827E531:: @ 827E531
+gText_0827E531:: @ 827E531
.string "{STR_VAR_1} couldn’t help\n"
.string "leaping up.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
-gUnknown_0827E55A:: @ 827E55A
+gText_0827E55A:: @ 827E55A
.string "{STR_VAR_1} tripped over\n"
.string "out of distraction.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
-gUnknown_0827E58A:: @ 827E58A
+gText_0827E58A:: @ 827E58A
.string "{STR_VAR_1} was too\n"
.string "nervous to move.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
-gUnknown_0827E5B2:: @ 827E5B2
+gText_0827E5B2:: @ 827E5B2
.string "But it messed up.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
-gUnknown_0827E5D0:: @ 827E5D0
+gText_0827E5D0:: @ 827E5D0
.string "But it failed to make\n"
.string "the target nervous.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
-gUnknown_0827E606:: @ 827E606
+gText_0827E606:: @ 827E606
.string "But it failed to make\n"
.string "anyone nervous.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
-gUnknown_0827E638:: @ 827E638
+gText_0827E638:: @ 827E638
.string "But it was ignored…{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
-gUnknown_0827E658:: @ 827E658
+gText_0827E658:: @ 827E658
.string "But it couldn’t improve\n"
.string "its condition…{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
-gUnknown_0827E68B:: @ 827E68B
+gText_0827E68B:: @ 827E68B
.string "Its bad condition\n"
.string "resulted in a weak appeal.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
-gUnknown_0827E6C4:: @ 827E6C4
+gText_0827E6C4:: @ 827E6C4
.string "{STR_VAR_1} was\n"
.string "unaffected.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
-gUnknown_0827E6E3:: @ 827E6E3
+gText_0827E6E3:: @ 827E6E3
.string "{STR_VAR_1} disappointed\n"
.string "by repeating an appeal.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
-gUnknown_0827E717:: @ 827E717
+gText_0827E717:: @ 827E717
.string "{STR_VAR_1}’s {STR_VAR_3}\n"
.string "went over great.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
-gUnknown_0827E73C:: @ 827E73C
+gText_0827E73C:: @ 827E73C
.string "{STR_VAR_1}’s {STR_VAR_3}\n"
.string "didn’t go over well here…{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
-gUnknown_0827E76A:: @ 827E76A
+gText_0827E76A:: @ 827E76A
.string "{STR_VAR_1}’s {STR_VAR_3}\n"
.string "got the crowd going.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
-gUnknown_0827E793:: @ 827E793
+gText_0827E793:: @ 827E793
.string "{STR_VAR_1} can’t appeal\n"
.string "next turn…{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
-gUnknown_0827E7BA:: @ 827E7BA
+gText_0827E7BA:: @ 827E7BA
.string "It attracted the crowd’s\n"
.string "attention.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
-gUnknown_0827E7EA:: @ 827E7EA
+gText_0827E7EA:: @ 827E7EA
.string "The crowd continues to\n"
.string "watch {STR_VAR_3}.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
-gUnknown_0827E817:: @ 827E817
+gText_0827E817:: @ 827E817
.string "{STR_VAR_1}’s\n"
.string "{STR_VAR_2} is ignored.{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}{PAUSE 0x0F}$"
-gUnknown_0827E837:: @ 827E837
+gText_0827E837:: @ 827E837
.string "shyness$"
-gUnknown_0827E83F:: @ 827E83F
+gText_0827E83F:: @ 827E83F
.string "anxiety$"
-gUnknown_0827E847:: @ 827E847
+gText_0827E847:: @ 827E847
.string "laziness$"
-gUnknown_0827E850:: @ 827E850
+gText_0827E850:: @ 827E850
.string "hesitancy$"
-gUnknown_0827E85A:: @ 827E85A
+gText_0827E85A:: @ 827E85A
.string "fear$"
-gUnknown_0827E85F:: @ 827E85F
+gText_0827E85F:: @ 827E85F
.string "coolness$"
-gUnknown_0827E868:: @ 827E868
+gText_0827E868:: @ 827E868
.string "beauty$"
-gUnknown_0827E86F:: @ 827E86F
+gText_0827E86F:: @ 827E86F
.string "cuteness$"
-gUnknown_0827E878:: @ 827E878
+gText_0827E878:: @ 827E878
.string "smartness$"
-gUnknown_0827E882:: @ 827E882
+gText_0827E882:: @ 827E882
.string "toughness$"
-gUnknown_0827E88C:: @ 827E88C
+gText_0827E88C:: @ 827E88C
.string "TENSION$"
-gUnknown_0827E894:: @ 827E894
+gText_0827E894:: @ 827E894
.string "COOL Move$"
-gUnknown_0827E89E:: @ 827E89E
+gText_0827E89E:: @ 827E89E
.string "BEAUTY Move$"
-gUnknown_0827E8AA:: @ 827E8AA
+gText_0827E8AA:: @ 827E8AA
.string "CUTE Move$"
-gUnknown_0827E8B4:: @ 827E8B4
+gText_0827E8B4:: @ 827E8B4
.string "SMART Move$"
-gUnknown_0827E8BF:: @ 827E8BF
+gText_0827E8BF:: @ 827E8BF
.string "TOUGH Move$"
-gUnknown_0827E8CA:: @ 827E8CA
+gText_0827E8CA:: @ 827E8CA
.string "???$"
diff --git a/data/text/easy_chat/easy_chat_group_pokemon2.s b/data/text/easy_chat/easy_chat_group_pokemon2.s
index 6a1bc0fcd..e2f58e496 100644
--- a/data/text/easy_chat/easy_chat_group_pokemon2.s
+++ b/data/text/easy_chat/easy_chat_group_pokemon2.s
@@ -57,7 +57,7 @@ gEasyChatGroup_Pokemon2:: @ 859CE0C
.2byte SPECIES_ESPEON
.2byte SPECIES_EXEGGCUTE
.2byte SPECIES_EXEGGUTOR
- .2byte SPECIES_FARFETCH_D
+ .2byte SPECIES_FARFETCHD
.2byte SPECIES_FEAROW
.2byte SPECIES_FERALIGATR
.2byte SPECIES_FLAAFFY
diff --git a/data/text/easy_chat/easy_chat_words_by_letter.inc b/data/text/easy_chat/easy_chat_words_by_letter.inc
index a271a5586..bce4be347 100644
--- a/data/text/easy_chat/easy_chat_words_by_letter.inc
+++ b/data/text/easy_chat/easy_chat_words_by_letter.inc
@@ -1,2522 +1,2522 @@
gEasyChatWordsByLetter_Others:: @ 859D0B4
- ec_word EXCL
- ec_word EXCL_EXCL
- ec_word DASH
- ec_word DASH_DASH_DASH
- ec_word ELLIPSIS
- ec_word ELLIPSIS_EXCL
- ec_word ELLIPSIS_ELLIPSIS_ELLIPSIS
- ec_word 1_HIT_KO_EXCL
- ec_word QUES
- ec_word QUES_EXCL
+ .2byte EC_WORD_EXCL
+ .2byte EC_WORD_EXCL_EXCL
+ .2byte EC_WORD_DASH
+ .2byte EC_WORD_DASH_DASH_DASH
+ .2byte EC_WORD_ELLIPSIS
+ .2byte EC_WORD_ELLIPSIS_EXCL
+ .2byte EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS
+ .2byte EC_WORD_1_HIT_KO_EXCL
+ .2byte EC_WORD_QUES
+ .2byte EC_WORD_QUES_EXCL
gEasyChatWordsByLetter_A:: @ 859D0C8
- ec_word A
- ec_word A_LITTLE
- ec_word A_LOT
- ec_word A_TINY_BIT
- ec_word ABOUT
- ec_word ABOVE
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 ABRA
- ec_pokemon2 ABRA
- ec_word ABSENT
- ec_pokemon1 ABSOL
- ec_word ABSOLUTELY
- ec_move1 ABSORB
- ec_word ACCEPT
- ec_move2 ACID
- ec_move2 ACID_ARMOR
- ec_word ADORE
- ec_word ADULT
- ec_word ADVENTURE
- ec_move2 AERIAL_ACE
- ec_move1 AEROBLAST
- ec_pokemon2 AERODACTYL
- ec_word AFTER
- ec_word AGE
- ec_pokemon1 AGGRON
- ec_move1 AGILITY
- ec_word AGREE
- ec_word AHAHA
- ec_word AIM
- ec_pokemon2 AIPOM
- ec_move1 AIR_CUTTER
- ec_word AIR_LOCK
- ec_word AIYEEH
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 ALAKAZAM
- ec_pokemon2 ALAKAZAM
- ec_word ALL
- ec_word ALL_RIGHT
- ec_word ALLOW
- ec_word ALLOWANCE
- ec_word ALLY
- ec_word ALMOST
- ec_word ALONE
- ec_word ALSO
- ec_word ALT_COLOR
- ec_pokemon1 ALTARIA
- ec_word ALTHOUGH
- ec_word ALWAYS
- ec_word AM
- ec_move2 AMNESIA
- ec_pokemon2 AMPHAROS
- ec_word AMUSING
- ec_word AN
- ec_move1 ANCIENT_POWER
- ec_word AND
- ec_word ANGER
- ec_word ANGERS
- ec_word ANGRY
- ec_word ANIME
- ec_pokemon1 ANORITH
- ec_word ANOTHER
- ec_word ANTICIPATION
- ec_word ANY
- ec_word ANYWHERE
- ec_word APOLOGIZE
- ec_word APPEAL
- ec_word APPEAR
- ec_word APPEARS
- ec_word APPRECIATE
- ec_word APPROVED
- ec_pokemon2 ARBOK
- ec_pokemon2 ARCANINE
- ec_word ARE
- ec_word AREN_T
- ec_word ARENA_TRAP
- ec_pokemon2 ARIADOS
- ec_move2 ARM_THRUST
- ec_pokemon1 ARMALDO
- ec_move1 AROMATHERAPY
- ec_pokemon1 ARON
- ec_word AROUND
- ec_word ARRGH
- ec_pokemon2 ARTICUNO
- ec_word AS
- ec_word AS_IF
- ec_word AS_MUCH_AS
- ec_move2 ASSIST
- ec_move1 ASTONISH
- ec_word AT
- ec_word ATTACK
- ec_move2 ATTRACT
- ec_word AUNT
- ec_move1 AURORA_BEAM
- ec_word AVANT_GARDE
- ec_word AWAY
- ec_word AWESOME
- ec_word AWFUL
- ec_word AWFULLY
- ec_word AWW
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 AZUMARILL
- ec_pokemon2 AZUMARILL
- ec_pokemon1 AZURILL
+ .2byte EC_WORD_A
+ .2byte EC_WORD_A_LITTLE
+ .2byte EC_WORD_A_LOT
+ .2byte EC_WORD_A_TINY_BIT
+ .2byte EC_WORD_ABOUT
+ .2byte EC_WORD_ABOVE
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(ABRA)
+ .2byte EC_POKEMON2(ABRA)
+ .2byte EC_WORD_ABSENT
+ .2byte EC_POKEMON(ABSOL)
+ .2byte EC_WORD_ABSOLUTELY
+ .2byte EC_MOVE(ABSORB)
+ .2byte EC_WORD_ACCEPT
+ .2byte EC_MOVE2(ACID)
+ .2byte EC_MOVE2(ACID_ARMOR)
+ .2byte EC_WORD_ADORE
+ .2byte EC_WORD_ADULT
+ .2byte EC_WORD_ADVENTURE
+ .2byte EC_MOVE2(AERIAL_ACE)
+ .2byte EC_MOVE(AEROBLAST)
+ .2byte EC_POKEMON2(AERODACTYL)
+ .2byte EC_WORD_AFTER
+ .2byte EC_WORD_AGE
+ .2byte EC_POKEMON(AGGRON)
+ .2byte EC_MOVE(AGILITY)
+ .2byte EC_WORD_AGREE
+ .2byte EC_WORD_AHAHA
+ .2byte EC_WORD_AIM
+ .2byte EC_POKEMON2(AIPOM)
+ .2byte EC_MOVE(AIR_CUTTER)
+ .2byte EC_WORD_AIR_LOCK
+ .2byte EC_WORD_AIYEEH
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(ALAKAZAM)
+ .2byte EC_POKEMON2(ALAKAZAM)
+ .2byte EC_WORD_ALL
+ .2byte EC_WORD_ALL_RIGHT
+ .2byte EC_WORD_ALLOW
+ .2byte EC_WORD_ALLOWANCE
+ .2byte EC_WORD_ALLY
+ .2byte EC_WORD_ALMOST
+ .2byte EC_WORD_ALONE
+ .2byte EC_WORD_ALSO
+ .2byte EC_WORD_ALT_COLOR
+ .2byte EC_POKEMON(ALTARIA)
+ .2byte EC_WORD_ALTHOUGH
+ .2byte EC_WORD_ALWAYS
+ .2byte EC_WORD_AM
+ .2byte EC_MOVE2(AMNESIA)
+ .2byte EC_POKEMON2(AMPHAROS)
+ .2byte EC_WORD_AMUSING
+ .2byte EC_WORD_AN
+ .2byte EC_MOVE(ANCIENT_POWER)
+ .2byte EC_WORD_AND
+ .2byte EC_WORD_ANGER
+ .2byte EC_WORD_ANGERS
+ .2byte EC_WORD_ANGRY
+ .2byte EC_WORD_ANIME
+ .2byte EC_POKEMON(ANORITH)
+ .2byte EC_WORD_ANOTHER
+ .2byte EC_WORD_ANTICIPATION
+ .2byte EC_WORD_ANY
+ .2byte EC_WORD_ANYWHERE
+ .2byte EC_WORD_APOLOGIZE
+ .2byte EC_WORD_APPEAL
+ .2byte EC_WORD_APPEAR
+ .2byte EC_WORD_APPEARS
+ .2byte EC_WORD_APPRECIATE
+ .2byte EC_WORD_APPROVED
+ .2byte EC_POKEMON2(ARBOK)
+ .2byte EC_POKEMON2(ARCANINE)
+ .2byte EC_WORD_ARE
+ .2byte EC_WORD_AREN_T
+ .2byte EC_WORD_ARENA_TRAP
+ .2byte EC_POKEMON2(ARIADOS)
+ .2byte EC_MOVE2(ARM_THRUST)
+ .2byte EC_POKEMON(ARMALDO)
+ .2byte EC_MOVE(AROMATHERAPY)
+ .2byte EC_POKEMON(ARON)
+ .2byte EC_WORD_AROUND
+ .2byte EC_WORD_ARRGH
+ .2byte EC_POKEMON2(ARTICUNO)
+ .2byte EC_WORD_AS
+ .2byte EC_WORD_AS_IF
+ .2byte EC_WORD_AS_MUCH_AS
+ .2byte EC_MOVE2(ASSIST)
+ .2byte EC_MOVE(ASTONISH)
+ .2byte EC_WORD_AT
+ .2byte EC_WORD_ATTACK
+ .2byte EC_MOVE2(ATTRACT)
+ .2byte EC_WORD_AUNT
+ .2byte EC_MOVE(AURORA_BEAM)
+ .2byte EC_WORD_AVANT_GARDE
+ .2byte EC_WORD_AWAY
+ .2byte EC_WORD_AWESOME
+ .2byte EC_WORD_AWFUL
+ .2byte EC_WORD_AWFULLY
+ .2byte EC_WORD_AWW
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(AZUMARILL)
+ .2byte EC_POKEMON2(AZUMARILL)
+ .2byte EC_POKEMON(AZURILL)
gEasyChatWordsByLetter_B:: @ 859D19C
- ec_word BABE
- ec_word BABY
- ec_word BACK
- ec_word BAD
- ec_word BADLY
- ec_word BAG
- ec_pokemon1 BAGON
- ec_word BALL
- ec_pokemon1 BALTOY
- ec_pokemon1 BANETTE
- ec_word BANG
- ec_pokemon1 BARBOACH
- ec_move2 BARRAGE
- ec_move2 BARRIER
- ec_word BATH
- ec_move2 BATON_PASS
- ec_word BATTLE
- ec_word BATTLE_ARMOR
- ec_word BATTLE_ROOM
- ec_word BATTLE_TOWER
- ec_pokemon2 BAYLEEF
- ec_word BE
- ec_word BEAT
- ec_move2 BEAT_UP
- ec_pokemon1 BEAUTIFLY
- ec_word BEAUTIFUL
- ec_word BEAUTY
- ec_word BECOMES
- ec_pokemon2 BEEDRILL
- ec_word BEEN
- ec_word BEFORE
- ec_word BEGINNING
- ec_word BEING
- ec_pokemon1 BELDUM
- ec_word BELIEVE
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 BELLOSSOM
- ec_pokemon2 BELLOSSOM
- ec_pokemon2 BELLSPROUT
- ec_move2 BELLY_DRUM
- ec_word BELONGS_TO
- ec_word BELOW
- ec_word BERRY
- ec_word BESIDE
- ec_word BEST
- ec_word BETTER
- ec_move1 BIDE
- ec_word BIG
- ec_word BIKE
- ec_move1 BIND
- ec_move1 BITE
- ec_move2 BLAST_BURN
- ec_pokemon2 BLASTOISE
- ec_word BLAZE
- ec_move2 BLAZE_KICK
- ec_pokemon1 BLAZIKEN
- ec_word BLEND
- ec_pokemon2 BLISSEY
- ec_move2 BLIZZARD
- ec_move2 BLOCK
- ec_word BOARD
- ec_move2 BODY_SLAM
- ec_move2 BONE_CLUB
- ec_move2 BONE_RUSH
- ec_move2 BONEMERANG
- ec_word BOOK
- ec_word BORED
- ec_word BORING
- ec_move2 BOUNCE
- ec_word BOY
- ec_word BRAG
- ec_word BREAK
- ec_pokemon1 BRELOOM
- ec_move1 BRICK_BREAK
- ec_word BROTHER
- ec_move1 BUBBLE
- ec_move2 BUBBLE_BEAM
- ec_word BUG
- ec_pokemon2 BULBASAUR
- ec_move2 BULK_UP
- ec_move2 BULLET_SEED
- ec_word BUSY
- ec_word BUT
- ec_pokemon2 BUTTERFREE
- ec_word BYE_BYE
+ .2byte EC_WORD_BABE
+ .2byte EC_WORD_BABY
+ .2byte EC_WORD_BACK
+ .2byte EC_WORD_BAD
+ .2byte EC_WORD_BADLY
+ .2byte EC_WORD_BAG
+ .2byte EC_POKEMON(BAGON)
+ .2byte EC_WORD_BALL
+ .2byte EC_POKEMON(BALTOY)
+ .2byte EC_POKEMON(BANETTE)
+ .2byte EC_WORD_BANG
+ .2byte EC_POKEMON(BARBOACH)
+ .2byte EC_MOVE2(BARRAGE)
+ .2byte EC_MOVE2(BARRIER)
+ .2byte EC_WORD_BATH
+ .2byte EC_MOVE2(BATON_PASS)
+ .2byte EC_WORD_BATTLE
+ .2byte EC_WORD_BATTLE_ARMOR
+ .2byte EC_WORD_BATTLE_ROOM
+ .2byte EC_WORD_BATTLE_TOWER
+ .2byte EC_POKEMON2(BAYLEEF)
+ .2byte EC_WORD_BE
+ .2byte EC_WORD_BEAT
+ .2byte EC_MOVE2(BEAT_UP)
+ .2byte EC_POKEMON(BEAUTIFLY)
+ .2byte EC_WORD_BEAUTIFUL
+ .2byte EC_WORD_BEAUTY
+ .2byte EC_WORD_BECOMES
+ .2byte EC_POKEMON2(BEEDRILL)
+ .2byte EC_WORD_BEEN
+ .2byte EC_WORD_BEFORE
+ .2byte EC_WORD_BEGINNING
+ .2byte EC_WORD_BEING
+ .2byte EC_POKEMON(BELDUM)
+ .2byte EC_WORD_BELIEVE
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(BELLOSSOM)
+ .2byte EC_POKEMON2(BELLOSSOM)
+ .2byte EC_POKEMON2(BELLSPROUT)
+ .2byte EC_MOVE2(BELLY_DRUM)
+ .2byte EC_WORD_BELONGS_TO
+ .2byte EC_WORD_BELOW
+ .2byte EC_WORD_BERRY
+ .2byte EC_WORD_BESIDE
+ .2byte EC_WORD_BEST
+ .2byte EC_WORD_BETTER
+ .2byte EC_MOVE(BIDE)
+ .2byte EC_WORD_BIG
+ .2byte EC_WORD_BIKE
+ .2byte EC_MOVE(BIND)
+ .2byte EC_MOVE(BITE)
+ .2byte EC_MOVE2(BLAST_BURN)
+ .2byte EC_POKEMON2(BLASTOISE)
+ .2byte EC_WORD_BLAZE
+ .2byte EC_MOVE2(BLAZE_KICK)
+ .2byte EC_POKEMON(BLAZIKEN)
+ .2byte EC_WORD_BLEND
+ .2byte EC_POKEMON2(BLISSEY)
+ .2byte EC_MOVE2(BLIZZARD)
+ .2byte EC_MOVE2(BLOCK)
+ .2byte EC_WORD_BOARD
+ .2byte EC_MOVE2(BODY_SLAM)
+ .2byte EC_MOVE2(BONE_CLUB)
+ .2byte EC_MOVE2(BONE_RUSH)
+ .2byte EC_MOVE2(BONEMERANG)
+ .2byte EC_WORD_BOOK
+ .2byte EC_WORD_BORED
+ .2byte EC_WORD_BORING
+ .2byte EC_MOVE2(BOUNCE)
+ .2byte EC_WORD_BOY
+ .2byte EC_WORD_BRAG
+ .2byte EC_WORD_BREAK
+ .2byte EC_POKEMON(BRELOOM)
+ .2byte EC_MOVE(BRICK_BREAK)
+ .2byte EC_WORD_BROTHER
+ .2byte EC_MOVE(BUBBLE)
+ .2byte EC_MOVE2(BUBBLE_BEAM)
+ .2byte EC_WORD_BUG
+ .2byte EC_POKEMON2(BULBASAUR)
+ .2byte EC_MOVE2(BULK_UP)
+ .2byte EC_MOVE2(BULLET_SEED)
+ .2byte EC_WORD_BUSY
+ .2byte EC_WORD_BUT
+ .2byte EC_POKEMON2(BUTTERFREE)
+ .2byte EC_WORD_BYE_BYE
gEasyChatWordsByLetter_C:: @ 859D248
- ec_pokemon1 CACNEA
- ec_pokemon1 CACTURNE
- ec_move2 CALM_MIND
- ec_word CAME
- ec_word CAMERA
- ec_pokemon1 CAMERUPT
- ec_move2 CAMOUFLAGE
- ec_word CAN
- ec_word CAN_WIN
- ec_word CAN_T
- ec_word CAN_T_WIN
- ec_word CANCEL
- ec_word CAPABLE
- ec_word CARDS
- ec_word CARE
- ec_word CARES
- ec_pokemon1 CARVANHA
- ec_pokemon1 CASCOON
- ec_word CASE
- ec_pokemon1 CASTFORM
- ec_pokemon2 CATERPIE
- ec_word CAUSE
- ec_pokemon2 CELEBI
- ec_word CENTER
- ec_word CHALLENGE
- ec_word CHANGE
- ec_word CHANNEL
- ec_pokemon2 CHANSEY
- ec_move1 CHARGE
- ec_pokemon2 CHARIZARD
- ec_move1 CHARM
- ec_pokemon2 CHARMANDER
- ec_pokemon2 CHARMELEON
- ec_word CHAT
- ec_pokemon2 CHIKORITA
- ec_word CHILD_S_PLAY
- ec_word CHILDREN
- ec_pokemon1 CHIMECHO
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 CHINCHOU
- ec_pokemon2 CHINCHOU
- ec_word CHLOROPHYLL
- ec_word CHOICE
- ec_word CHOOSE
- ec_word CHORES
- ec_move1 CLAMP
- ec_pokemon1 CLAMPERL
- ec_word CLASS
- ec_pokemon1 CLAYDOL
- ec_word CLEAR_BODY
- ec_pokemon2 CLEFABLE
- ec_pokemon2 CLEFAIRY
- ec_pokemon2 CLEFFA
- ec_word CLOSE
- ec_word CLOUD_NINE
- ec_pokemon2 CLOYSTER
- ec_word COLD
- ec_word COLLECT
- ec_word COLLECTION
- ec_word COLOR
- ec_word COLOR_CHANGE
- ec_pokemon1 COMBUSKEN
- ec_word COME
- ec_word COME_ON
- ec_word COME_OVER
- ec_move2 COMET_PUNCH
- ec_word COMICS
- ec_word COMMEMORATE
- ec_word COMPLETE
- ec_word COMPOUNDEYES
- ec_word CONCEDE
- ec_move1 CONFUSE_RAY
- ec_word CONFUSED
- ec_move2 CONFUSION
- ec_word CONGRATS
- ec_move1 CONSTRICT
- ec_word CONTEST
- ec_word CONVERSATION
- ec_move2 CONVERSION
- ec_move2 CONVERSION_2
- ec_word COOL
- ec_word COOLNESS
- ec_pokemon1 CORPHISH
- ec_word CORRECT
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 CORSOLA
- ec_pokemon2 CORSOLA
- ec_move1 COSMIC_POWER
- ec_move2 COTTON_SPORE
- ec_word COULD
- ec_word COULDN_T
- ec_word COUNT_ON
- ec_move1 COUNTER
- ec_word COUPLE
- ec_move2 COVET
- ec_move1 CRABHAMMER
- ec_pokemon1 CRADILY
- ec_pokemon1 CRAWDAUNT
- ec_word CRIES
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 CROBAT
- ec_pokemon2 CROBAT
- ec_pokemon2 CROCONAW
- ec_move1 CROSS_CHOP
- ec_move1 CRUNCH
- ec_word CRUSH
- ec_move2 CRUSH_CLAW
- ec_word CRY
- ec_pokemon2 CUBONE
- ec_word CURRENT
- ec_move2 CURSE
- ec_move1 CUT
- ec_word CUTE
- ec_word CUTE_CHARM
- ec_word CUTENESS
- ec_pokemon2 CYNDAQUIL
+ .2byte EC_POKEMON(CACNEA)
+ .2byte EC_POKEMON(CACTURNE)
+ .2byte EC_MOVE2(CALM_MIND)
+ .2byte EC_WORD_CAME
+ .2byte EC_WORD_CAMERA
+ .2byte EC_POKEMON(CAMERUPT)
+ .2byte EC_MOVE2(CAMOUFLAGE)
+ .2byte EC_WORD_CAN
+ .2byte EC_WORD_CAN_WIN
+ .2byte EC_WORD_CAN_T
+ .2byte EC_WORD_CAN_T_WIN
+ .2byte EC_WORD_CANCEL
+ .2byte EC_WORD_CAPABLE
+ .2byte EC_WORD_CARDS
+ .2byte EC_WORD_CARE
+ .2byte EC_WORD_CARES
+ .2byte EC_POKEMON(CARVANHA)
+ .2byte EC_POKEMON(CASCOON)
+ .2byte EC_WORD_CASE
+ .2byte EC_POKEMON(CASTFORM)
+ .2byte EC_POKEMON2(CATERPIE)
+ .2byte EC_WORD_CAUSE
+ .2byte EC_POKEMON2(CELEBI)
+ .2byte EC_WORD_CENTER
+ .2byte EC_WORD_CHALLENGE
+ .2byte EC_WORD_CHANGE
+ .2byte EC_WORD_CHANNEL
+ .2byte EC_POKEMON2(CHANSEY)
+ .2byte EC_MOVE(CHARGE)
+ .2byte EC_POKEMON2(CHARIZARD)
+ .2byte EC_MOVE(CHARM)
+ .2byte EC_POKEMON2(CHARMANDER)
+ .2byte EC_POKEMON2(CHARMELEON)
+ .2byte EC_WORD_CHAT
+ .2byte EC_POKEMON2(CHIKORITA)
+ .2byte EC_WORD_CHILD_S_PLAY
+ .2byte EC_WORD_CHILDREN
+ .2byte EC_POKEMON(CHIMECHO)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(CHINCHOU)
+ .2byte EC_POKEMON2(CHINCHOU)
+ .2byte EC_WORD_CHLOROPHYLL
+ .2byte EC_WORD_CHOICE
+ .2byte EC_WORD_CHOOSE
+ .2byte EC_WORD_CHORES
+ .2byte EC_MOVE(CLAMP)
+ .2byte EC_POKEMON(CLAMPERL)
+ .2byte EC_WORD_CLASS
+ .2byte EC_POKEMON(CLAYDOL)
+ .2byte EC_WORD_CLEAR_BODY
+ .2byte EC_POKEMON2(CLEFABLE)
+ .2byte EC_POKEMON2(CLEFAIRY)
+ .2byte EC_POKEMON2(CLEFFA)
+ .2byte EC_WORD_CLOSE
+ .2byte EC_WORD_CLOUD_NINE
+ .2byte EC_POKEMON2(CLOYSTER)
+ .2byte EC_WORD_COLD
+ .2byte EC_WORD_COLLECT
+ .2byte EC_WORD_COLLECTION
+ .2byte EC_WORD_COLOR
+ .2byte EC_WORD_COLOR_CHANGE
+ .2byte EC_POKEMON(COMBUSKEN)
+ .2byte EC_WORD_COME
+ .2byte EC_WORD_COME_ON
+ .2byte EC_WORD_COME_OVER
+ .2byte EC_MOVE2(COMET_PUNCH)
+ .2byte EC_WORD_COMICS
+ .2byte EC_WORD_COMMEMORATE
+ .2byte EC_WORD_COMPLETE
+ .2byte EC_WORD_COMPOUNDEYES
+ .2byte EC_WORD_CONCEDE
+ .2byte EC_MOVE(CONFUSE_RAY)
+ .2byte EC_WORD_CONFUSED
+ .2byte EC_MOVE2(CONFUSION)
+ .2byte EC_WORD_CONGRATS
+ .2byte EC_MOVE(CONSTRICT)
+ .2byte EC_WORD_CONTEST
+ .2byte EC_WORD_CONVERSATION
+ .2byte EC_MOVE2(CONVERSION)
+ .2byte EC_MOVE2(CONVERSION_2)
+ .2byte EC_WORD_COOL
+ .2byte EC_WORD_COOLNESS
+ .2byte EC_POKEMON(CORPHISH)
+ .2byte EC_WORD_CORRECT
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(CORSOLA)
+ .2byte EC_POKEMON2(CORSOLA)
+ .2byte EC_MOVE(COSMIC_POWER)
+ .2byte EC_MOVE2(COTTON_SPORE)
+ .2byte EC_WORD_COULD
+ .2byte EC_WORD_COULDN_T
+ .2byte EC_WORD_COUNT_ON
+ .2byte EC_MOVE(COUNTER)
+ .2byte EC_WORD_COUPLE
+ .2byte EC_MOVE2(COVET)
+ .2byte EC_MOVE(CRABHAMMER)
+ .2byte EC_POKEMON(CRADILY)
+ .2byte EC_POKEMON(CRAWDAUNT)
+ .2byte EC_WORD_CRIES
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(CROBAT)
+ .2byte EC_POKEMON2(CROBAT)
+ .2byte EC_POKEMON2(CROCONAW)
+ .2byte EC_MOVE(CROSS_CHOP)
+ .2byte EC_MOVE(CRUNCH)
+ .2byte EC_WORD_CRUSH
+ .2byte EC_MOVE2(CRUSH_CLAW)
+ .2byte EC_WORD_CRY
+ .2byte EC_POKEMON2(CUBONE)
+ .2byte EC_WORD_CURRENT
+ .2byte EC_MOVE2(CURSE)
+ .2byte EC_MOVE(CUT)
+ .2byte EC_WORD_CUTE
+ .2byte EC_WORD_CUTE_CHARM
+ .2byte EC_WORD_CUTENESS
+ .2byte EC_POKEMON2(CYNDAQUIL)
gEasyChatWordsByLetter_D:: @ 859D336
- ec_word DAILY
- ec_word DAMP
- ec_word DANCE
- ec_word DANGER
- ec_word DARK
- ec_word DARN
- ec_word DATE
- ec_word DAUGHTER
- ec_word DAY
- ec_word DAYS
- ec_word DAYTIME
- ec_word DECIDE
- ec_word DECIDED
- ec_word DEEP
- ec_word DEFEATED
- ec_move2 DEFENSE_CURL
- ec_pokemon1 DELCATTY
- ec_pokemon2 DELIBIRD
- ec_pokemon1 DEOXYS
- ec_word DEPT_STORE
- ec_word DESIGN
- ec_word DESTINY
- ec_move2 DESTINY_BOND
- ec_word DESTROYED
- ec_move2 DETECT
- ec_pokemon2 DEWGONG
- ec_word DID
- ec_word DIDN_T
- ec_word DIET
- ec_word DIFFERENT
- ec_move1 DIG
- ec_word DIGITAL
- ec_pokemon2 DIGLETT
- ec_word DIRECT
- ec_move1 DISABLE
- ec_word DISAPPEAR
- ec_word DISAPPOINT
- ec_word DISAPPOINTED
- ec_word DISAPPOINTS
- ec_word DISASTER
- ec_word DISLIKE
- ec_word DISLIKES
- ec_pokemon2 DITTO
- ec_move2 DIVE
- ec_move2 DIZZY_PUNCH
- ec_word DO
- ec_word DOCILE
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 DODRIO
- ec_pokemon2 DODRIO
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 DODUO
- ec_pokemon2 DODUO
- ec_word DOES
- ec_word DOESN_T
- ec_word DON_T
- ec_word DONE
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 DONPHAN
- ec_pokemon2 DONPHAN
- ec_move2 DOOM_DESIRE
- ec_move2 DOUBLE_KICK
- ec_move1 DOUBLE_TEAM
- ec_move1 DOUBLE_EDGE
- ec_move1 DOUBLE_SLAP
- ec_word DOWN
- ec_word DOWNCAST
- ec_word DRAGON
- ec_move2 DRAGON_CLAW
- ec_move2 DRAGON_DANCE
- ec_move2 DRAGON_RAGE
- ec_pokemon2 DRAGONAIR
- ec_move2 DRAGON_BREATH
- ec_pokemon2 DRAGONITE
- ec_pokemon2 DRATINI
- ec_word DREAM
- ec_move2 DREAM_EATER
- ec_move2 DRILL_PECK
- ec_word DRINK
- ec_word DRINKS
- ec_word DRIZZLE
- ec_word DROOLING
- ec_word DROUGHT
- ec_pokemon2 DROWZEE
- ec_word DUDE
- ec_pokemon2 DUGTRIO
- ec_pokemon2 DUNSPARCE
- ec_pokemon1 DUSCLOPS
- ec_pokemon1 DUSKULL
- ec_pokemon1 DUSTOX
- ec_move2 DYNAMIC_PUNCH
+ .2byte EC_WORD_DAILY
+ .2byte EC_WORD_DAMP
+ .2byte EC_WORD_DANCE
+ .2byte EC_WORD_DANGER
+ .2byte EC_WORD_DARK
+ .2byte EC_WORD_DARN
+ .2byte EC_WORD_DATE
+ .2byte EC_WORD_DAUGHTER
+ .2byte EC_WORD_DAY
+ .2byte EC_WORD_DAYS
+ .2byte EC_WORD_DAYTIME
+ .2byte EC_WORD_DECIDE
+ .2byte EC_WORD_DECIDED
+ .2byte EC_WORD_DEEP
+ .2byte EC_WORD_DEFEATED
+ .2byte EC_MOVE2(DEFENSE_CURL)
+ .2byte EC_POKEMON(DELCATTY)
+ .2byte EC_POKEMON2(DELIBIRD)
+ .2byte EC_POKEMON(DEOXYS)
+ .2byte EC_WORD_DEPT_STORE
+ .2byte EC_WORD_DESIGN
+ .2byte EC_WORD_DESTINY
+ .2byte EC_MOVE2(DESTINY_BOND)
+ .2byte EC_WORD_DESTROYED
+ .2byte EC_MOVE2(DETECT)
+ .2byte EC_POKEMON2(DEWGONG)
+ .2byte EC_WORD_DID
+ .2byte EC_WORD_DIDN_T
+ .2byte EC_WORD_DIET
+ .2byte EC_WORD_DIFFERENT
+ .2byte EC_MOVE(DIG)
+ .2byte EC_WORD_DIGITAL
+ .2byte EC_POKEMON2(DIGLETT)
+ .2byte EC_WORD_DIRECT
+ .2byte EC_MOVE(DISABLE)
+ .2byte EC_WORD_DISAPPEAR
+ .2byte EC_WORD_DISAPPOINT
+ .2byte EC_WORD_DISAPPOINTED
+ .2byte EC_WORD_DISAPPOINTS
+ .2byte EC_WORD_DISASTER
+ .2byte EC_WORD_DISLIKE
+ .2byte EC_WORD_DISLIKES
+ .2byte EC_POKEMON2(DITTO)
+ .2byte EC_MOVE2(DIVE)
+ .2byte EC_MOVE2(DIZZY_PUNCH)
+ .2byte EC_WORD_DO
+ .2byte EC_WORD_DOCILE
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(DODRIO)
+ .2byte EC_POKEMON2(DODRIO)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(DODUO)
+ .2byte EC_POKEMON2(DODUO)
+ .2byte EC_WORD_DOES
+ .2byte EC_WORD_DOESN_T
+ .2byte EC_WORD_DON_T
+ .2byte EC_WORD_DONE
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(DONPHAN)
+ .2byte EC_POKEMON2(DONPHAN)
+ .2byte EC_MOVE2(DOOM_DESIRE)
+ .2byte EC_MOVE2(DOUBLE_KICK)
+ .2byte EC_MOVE(DOUBLE_TEAM)
+ .2byte EC_MOVE(DOUBLE_EDGE)
+ .2byte EC_MOVE(DOUBLE_SLAP)
+ .2byte EC_WORD_DOWN
+ .2byte EC_WORD_DOWNCAST
+ .2byte EC_WORD_DRAGON
+ .2byte EC_MOVE2(DRAGON_CLAW)
+ .2byte EC_MOVE2(DRAGON_DANCE)
+ .2byte EC_MOVE2(DRAGON_RAGE)
+ .2byte EC_POKEMON2(DRAGONAIR)
+ .2byte EC_MOVE2(DRAGON_BREATH)
+ .2byte EC_POKEMON2(DRAGONITE)
+ .2byte EC_POKEMON2(DRATINI)
+ .2byte EC_WORD_DREAM
+ .2byte EC_MOVE2(DREAM_EATER)
+ .2byte EC_MOVE2(DRILL_PECK)
+ .2byte EC_WORD_DRINK
+ .2byte EC_WORD_DRINKS
+ .2byte EC_WORD_DRIZZLE
+ .2byte EC_WORD_DROOLING
+ .2byte EC_WORD_DROUGHT
+ .2byte EC_POKEMON2(DROWZEE)
+ .2byte EC_WORD_DUDE
+ .2byte EC_POKEMON2(DUGTRIO)
+ .2byte EC_POKEMON2(DUNSPARCE)
+ .2byte EC_POKEMON(DUSCLOPS)
+ .2byte EC_POKEMON(DUSKULL)
+ .2byte EC_POKEMON(DUSTOX)
+ .2byte EC_MOVE2(DYNAMIC_PUNCH)
gEasyChatWordsByLetter_E:: @ 859D3F2
- ec_word EARLIER
- ec_word EARLY_BIRD
- ec_move1 EARTHQUAKE
- ec_word EASY
- ec_word EAT
- ec_word EATS
- ec_word EEK
- ec_pokemon2 EEVEE
- ec_word EFFECT_SPORE
- ec_word EGG
- ec_move2 EGG_BOMB
- ec_word EH_QUES
- ec_word EHEHE
- ec_pokemon2 EKANS
- ec_pokemon2 ELECTABUZZ
- ec_word ELECTRIC
- ec_pokemon1 ELECTRIKE
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 ELECTRODE
- ec_pokemon2 ELECTRODE
- ec_pokemon2 ELEKID
- ec_word ELSE
- ec_move2 EMBER
- ec_word EMERALD
- ec_move1 ENCORE
- ec_word ENCYCLOPEDIA
- ec_word END
- ec_move1 ENDEAVOR
- ec_move1 ENDURE
- ec_word ENJOY
- ec_word ENJOYS
- ec_word ENOUGH
- ec_pokemon2 ENTEI
- ec_word ENTERTAINING
- ec_move2 ERUPTION
- ec_word ESCAPE
- ec_pokemon2 ESPEON
- ec_word EVEN_SO
- ec_word EVENT
- ec_word EVENTS
- ec_word EVER
- ec_word EVERY
- ec_word EVOLUTION
- ec_word EVOLVE
- ec_word EXCELLENT
- ec_word EXCESS
- ec_word EXCITE
- ec_word EXCITING
- ec_word EXCUSE
- ec_word EXCUSE_ME
- ec_pokemon2 EXEGGCUTE
- ec_pokemon2 EXEGGUTOR
- ec_word EXISTS
- ec_word EXPENSIVE
- ec_move2 EXPLOSION
- ec_pokemon1 EXPLOUD
- ec_move1 EXTRASENSORY
- ec_move1 EXTREME_SPEED
+ .2byte EC_WORD_EARLIER
+ .2byte EC_WORD_EARLY_BIRD
+ .2byte EC_MOVE(EARTHQUAKE)
+ .2byte EC_WORD_EASY
+ .2byte EC_WORD_EAT
+ .2byte EC_WORD_EATS
+ .2byte EC_WORD_EEK
+ .2byte EC_POKEMON2(EEVEE)
+ .2byte EC_WORD_EFFECT_SPORE
+ .2byte EC_WORD_EGG
+ .2byte EC_MOVE2(EGG_BOMB)
+ .2byte EC_WORD_EH_QUES
+ .2byte EC_WORD_EHEHE
+ .2byte EC_POKEMON2(EKANS)
+ .2byte EC_POKEMON2(ELECTABUZZ)
+ .2byte EC_WORD_ELECTRIC
+ .2byte EC_POKEMON(ELECTRIKE)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(ELECTRODE)
+ .2byte EC_POKEMON2(ELECTRODE)
+ .2byte EC_POKEMON2(ELEKID)
+ .2byte EC_WORD_ELSE
+ .2byte EC_MOVE2(EMBER)
+ .2byte EC_WORD_EMERALD
+ .2byte EC_MOVE(ENCORE)
+ .2byte EC_WORD_ENCYCLOPEDIA
+ .2byte EC_WORD_END
+ .2byte EC_MOVE(ENDEAVOR)
+ .2byte EC_MOVE(ENDURE)
+ .2byte EC_WORD_ENJOY
+ .2byte EC_WORD_ENJOYS
+ .2byte EC_WORD_ENOUGH
+ .2byte EC_POKEMON2(ENTEI)
+ .2byte EC_WORD_ENTERTAINING
+ .2byte EC_MOVE2(ERUPTION)
+ .2byte EC_WORD_ESCAPE
+ .2byte EC_POKEMON2(ESPEON)
+ .2byte EC_WORD_EVEN_SO
+ .2byte EC_WORD_EVENT
+ .2byte EC_WORD_EVENTS
+ .2byte EC_WORD_EVER
+ .2byte EC_WORD_EVERY
+ .2byte EC_WORD_EVOLUTION
+ .2byte EC_WORD_EVOLVE
+ .2byte EC_WORD_EXCELLENT
+ .2byte EC_WORD_EXCESS
+ .2byte EC_WORD_EXCITE
+ .2byte EC_WORD_EXCITING
+ .2byte EC_WORD_EXCUSE
+ .2byte EC_WORD_EXCUSE_ME
+ .2byte EC_POKEMON2(EXEGGCUTE)
+ .2byte EC_POKEMON2(EXEGGUTOR)
+ .2byte EC_WORD_EXISTS
+ .2byte EC_WORD_EXPENSIVE
+ .2byte EC_MOVE2(EXPLOSION)
+ .2byte EC_POKEMON(EXPLOUD)
+ .2byte EC_MOVE(EXTRASENSORY)
+ .2byte EC_MOVE(EXTREME_SPEED)
gEasyChatWordsByLetter_F:: @ 859D468
- ec_word FABULOUS
- ec_move1 FACADE
- ec_word FAINT
- ec_move2 FAINT_ATTACK
- ec_word FAINTED
- ec_move2 FAKE_OUT
- ec_move1 FAKE_TEARS
- ec_word FALL
- ec_move2 FALSE_SWIPE
- ec_word FAMILY
- ec_word FANTASTIC
- ec_word FAR
- ec_pokemon2 FARFETCH_D
- ec_word FASHION
- ec_word FAST
- ec_word FATHER
- ec_word FEAR
- ec_pokemon2 FEAROW
- ec_move2 FEATHER_DANCE
- ec_pokemon1 FEEBAS
- ec_word FEELING
- ec_pokemon2 FERALIGATR
- ec_word FESTIVAL
- ec_word FEVER
- ec_word FIERY
- ec_word FIGHT
- ec_word FIGHTING
- ec_word FIGHTS
- ec_word FINAL
- ec_word FINALLY
- ec_word FINISH
- ec_word FIRE
- ec_move2 FIRE_BLAST
- ec_move2 FIRE_PUNCH
- ec_move2 FIRE_SPIN
- ec_word FISHING
- ec_move1 FISSURE
- ec_pokemon2 FLAAFFY
- ec_move1 FLAIL
- ec_word FLAME
- ec_word FLAME_BODY
- ec_move1 FLAME_WHEEL
- ec_move1 FLAMETHROWER
- ec_pokemon2 FLAREON
- ec_move2 FLASH
- ec_word FLASH_FIRE
- ec_word FLATTEN
- ec_move1 FLATTER
- ec_word FLOWERS
- ec_move1 FLY
- ec_pokemon1 FLYGON
- ec_word FLYING
- ec_move1 FOCUS_ENERGY
- ec_move1 FOCUS_PUNCH
- ec_word FOE
- ec_move1 FOLLOW_ME
- ec_word FOR
- ec_word FOR_NOW
- ec_word FORECAST
- ec_move2 FORESIGHT
- ec_word FOREVER
- ec_word FORGET
- ec_word FORGETS
- ec_word FORGIVE
- ec_pokemon2 FORRETRESS
- ec_move2 FRENZY_PLANT
- ec_word FRIDAY
- ec_word FRIEND
- ec_word FROM
- ec_word FRONT
- ec_word FRONTIER
- ec_move2 FRUSTRATION
- ec_word FUFUFU
- ec_word FULL
- ec_word FUNNY
- ec_pokemon2 FURRET
- ec_move2 FURY_ATTACK
- ec_move2 FURY_CUTTER
- ec_move2 FURY_SWIPES
- ec_move2 FUTURE_SIGHT
+ .2byte EC_WORD_FABULOUS
+ .2byte EC_MOVE(FACADE)
+ .2byte EC_WORD_FAINT
+ .2byte EC_MOVE2(FAINT_ATTACK)
+ .2byte EC_WORD_FAINTED
+ .2byte EC_MOVE2(FAKE_OUT)
+ .2byte EC_MOVE(FAKE_TEARS)
+ .2byte EC_WORD_FALL
+ .2byte EC_MOVE2(FALSE_SWIPE)
+ .2byte EC_WORD_FAMILY
+ .2byte EC_WORD_FANTASTIC
+ .2byte EC_WORD_FAR
+ .2byte EC_POKEMON2(FARFETCHD)
+ .2byte EC_WORD_FASHION
+ .2byte EC_WORD_FAST
+ .2byte EC_WORD_FATHER
+ .2byte EC_WORD_FEAR
+ .2byte EC_POKEMON2(FEAROW)
+ .2byte EC_MOVE2(FEATHER_DANCE)
+ .2byte EC_POKEMON(FEEBAS)
+ .2byte EC_WORD_FEELING
+ .2byte EC_POKEMON2(FERALIGATR)
+ .2byte EC_WORD_FESTIVAL
+ .2byte EC_WORD_FEVER
+ .2byte EC_WORD_FIERY
+ .2byte EC_WORD_FIGHT
+ .2byte EC_WORD_FIGHTING
+ .2byte EC_WORD_FIGHTS
+ .2byte EC_WORD_FINAL
+ .2byte EC_WORD_FINALLY
+ .2byte EC_WORD_FINISH
+ .2byte EC_WORD_FIRE
+ .2byte EC_MOVE2(FIRE_BLAST)
+ .2byte EC_MOVE2(FIRE_PUNCH)
+ .2byte EC_MOVE2(FIRE_SPIN)
+ .2byte EC_WORD_FISHING
+ .2byte EC_MOVE(FISSURE)
+ .2byte EC_POKEMON2(FLAAFFY)
+ .2byte EC_MOVE(FLAIL)
+ .2byte EC_WORD_FLAME
+ .2byte EC_WORD_FLAME_BODY
+ .2byte EC_MOVE(FLAME_WHEEL)
+ .2byte EC_MOVE(FLAMETHROWER)
+ .2byte EC_POKEMON2(FLAREON)
+ .2byte EC_MOVE2(FLASH)
+ .2byte EC_WORD_FLASH_FIRE
+ .2byte EC_WORD_FLATTEN
+ .2byte EC_MOVE(FLATTER)
+ .2byte EC_WORD_FLOWERS
+ .2byte EC_MOVE(FLY)
+ .2byte EC_POKEMON(FLYGON)
+ .2byte EC_WORD_FLYING
+ .2byte EC_MOVE(FOCUS_ENERGY)
+ .2byte EC_MOVE(FOCUS_PUNCH)
+ .2byte EC_WORD_FOE
+ .2byte EC_MOVE(FOLLOW_ME)
+ .2byte EC_WORD_FOR
+ .2byte EC_WORD_FOR_NOW
+ .2byte EC_WORD_FORECAST
+ .2byte EC_MOVE2(FORESIGHT)
+ .2byte EC_WORD_FOREVER
+ .2byte EC_WORD_FORGET
+ .2byte EC_WORD_FORGETS
+ .2byte EC_WORD_FORGIVE
+ .2byte EC_POKEMON2(FORRETRESS)
+ .2byte EC_MOVE2(FRENZY_PLANT)
+ .2byte EC_WORD_FRIDAY
+ .2byte EC_WORD_FRIEND
+ .2byte EC_WORD_FROM
+ .2byte EC_WORD_FRONT
+ .2byte EC_WORD_FRONTIER
+ .2byte EC_MOVE2(FRUSTRATION)
+ .2byte EC_WORD_FUFUFU
+ .2byte EC_WORD_FULL
+ .2byte EC_WORD_FUNNY
+ .2byte EC_POKEMON2(FURRET)
+ .2byte EC_MOVE2(FURY_ATTACK)
+ .2byte EC_MOVE2(FURY_CUTTER)
+ .2byte EC_MOVE2(FURY_SWIPES)
+ .2byte EC_MOVE2(FUTURE_SIGHT)
gEasyChatWordsByLetter_G:: @ 859D508
- ec_word GAME
- ec_pokemon1 GARDEVOIR
- ec_pokemon2 GASTLY
- ec_pokemon2 GENGAR
- ec_word GENIUS
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 GEODUDE
- ec_pokemon2 GEODUDE
- ec_word GET
- ec_word GETS
- ec_word GHOST
- ec_word GIDDY
- ec_move1 GIGA_DRAIN
- ec_word GIGGLE
- ec_word GIMME
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 GIRAFARIG
- ec_pokemon2 GIRAFARIG
- ec_word GIRL
- ec_word GIVE
- ec_word GIVE_ME
- ec_word GIVE_UP
- ec_word GIVES
- ec_pokemon1 GLALIE
- ec_move2 GLARE
- ec_pokemon2 GLIGAR
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 GLOOM
- ec_pokemon2 GLOOM
- ec_word GO
- ec_word GO_AHEAD
- ec_word GO_EASY
- ec_word GO_HOME
- ec_word GOES
- ec_word GOING
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 GOLBAT
- ec_pokemon2 GOLBAT
- ec_word GOLD
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 GOLDEEN
- ec_pokemon2 GOLDEEN
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 GOLDUCK
- ec_pokemon2 GOLDUCK
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 GOLEM
- ec_pokemon2 GOLEM
- ec_word GOOD
- ec_word GOOD_BYE
- ec_pokemon1 GOREBYSS
- ec_word GOT
- ec_word GOTCHA
- ec_word GOURMET
- ec_word GRAAAH
- ec_pokemon2 GRANBULL
- ec_word GRANDFATHER
- ec_word GRANDMOTHER
- ec_word GRASS
- ec_move1 GRASS_WHISTLE
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 GRAVELER
- ec_pokemon2 GRAVELER
- ec_word GREAT
- ec_word GREEN
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 GRIMER
- ec_pokemon2 GRIMER
- ec_pokemon1 GROUDON
- ec_word GROUND
- ec_word GROUP
- ec_pokemon1 GROVYLE
- ec_move2 GROWL
- ec_pokemon2 GROWLITHE
- ec_move1 GROWTH
- ec_move1 GRUDGE
- ec_pokemon1 GRUMPIG
- ec_word GUARD
- ec_move2 GUILLOTINE
- ec_pokemon1 GULPIN
- ec_move1 GUST
- ec_word GUTS
- ec_word GUTSY
- ec_word GWAH
- ec_word GWAHAHAHA
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 GYARADOS
- ec_pokemon2 GYARADOS
+ .2byte EC_WORD_GAME
+ .2byte EC_POKEMON(GARDEVOIR)
+ .2byte EC_POKEMON2(GASTLY)
+ .2byte EC_POKEMON2(GENGAR)
+ .2byte EC_WORD_GENIUS
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(GEODUDE)
+ .2byte EC_POKEMON2(GEODUDE)
+ .2byte EC_WORD_GET
+ .2byte EC_WORD_GETS
+ .2byte EC_WORD_GHOST
+ .2byte EC_WORD_GIDDY
+ .2byte EC_MOVE(GIGA_DRAIN)
+ .2byte EC_WORD_GIGGLE
+ .2byte EC_WORD_GIMME
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(GIRAFARIG)
+ .2byte EC_POKEMON2(GIRAFARIG)
+ .2byte EC_WORD_GIRL
+ .2byte EC_WORD_GIVE
+ .2byte EC_WORD_GIVE_ME
+ .2byte EC_WORD_GIVE_UP
+ .2byte EC_WORD_GIVES
+ .2byte EC_POKEMON(GLALIE)
+ .2byte EC_MOVE2(GLARE)
+ .2byte EC_POKEMON2(GLIGAR)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(GLOOM)
+ .2byte EC_POKEMON2(GLOOM)
+ .2byte EC_WORD_GO
+ .2byte EC_WORD_GO_AHEAD
+ .2byte EC_WORD_GO_EASY
+ .2byte EC_WORD_GO_HOME
+ .2byte EC_WORD_GOES
+ .2byte EC_WORD_GOING
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(GOLBAT)
+ .2byte EC_POKEMON2(GOLBAT)
+ .2byte EC_WORD_GOLD
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(GOLDEEN)
+ .2byte EC_POKEMON2(GOLDEEN)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(GOLDUCK)
+ .2byte EC_POKEMON2(GOLDUCK)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(GOLEM)
+ .2byte EC_POKEMON2(GOLEM)
+ .2byte EC_WORD_GOOD
+ .2byte EC_WORD_GOOD_BYE
+ .2byte EC_POKEMON(GOREBYSS)
+ .2byte EC_WORD_GOT
+ .2byte EC_WORD_GOTCHA
+ .2byte EC_WORD_GOURMET
+ .2byte EC_WORD_GRAAAH
+ .2byte EC_POKEMON2(GRANBULL)
+ .2byte EC_WORD_GRANDFATHER
+ .2byte EC_WORD_GRANDMOTHER
+ .2byte EC_WORD_GRASS
+ .2byte EC_MOVE(GRASS_WHISTLE)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(GRAVELER)
+ .2byte EC_POKEMON2(GRAVELER)
+ .2byte EC_WORD_GREAT
+ .2byte EC_WORD_GREEN
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(GRIMER)
+ .2byte EC_POKEMON2(GRIMER)
+ .2byte EC_POKEMON(GROUDON)
+ .2byte EC_WORD_GROUND
+ .2byte EC_WORD_GROUP
+ .2byte EC_POKEMON(GROVYLE)
+ .2byte EC_MOVE2(GROWL)
+ .2byte EC_POKEMON2(GROWLITHE)
+ .2byte EC_MOVE(GROWTH)
+ .2byte EC_MOVE(GRUDGE)
+ .2byte EC_POKEMON(GRUMPIG)
+ .2byte EC_WORD_GUARD
+ .2byte EC_MOVE2(GUILLOTINE)
+ .2byte EC_POKEMON(GULPIN)
+ .2byte EC_MOVE(GUST)
+ .2byte EC_WORD_GUTS
+ .2byte EC_WORD_GUTSY
+ .2byte EC_WORD_GWAH
+ .2byte EC_WORD_GWAHAHAHA
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(GYARADOS)
+ .2byte EC_POKEMON2(GYARADOS)
gEasyChatWordsByLetter_H:: @ 859D5CC
- ec_word HABIT
- ec_word HAH
- ec_word HAHAHA
- ec_move1 HAIL
- ec_word HALL_OF_FAME
- ec_word HAPPENING
- ec_word HAPPILY
- ec_word HAPPINESS
- ec_word HAPPY
- ec_word HARD
- ec_move1 HARDEN
- ec_pokemon1 HARIYAMA
- ec_word HAS
- ec_word HASSLE
- ec_pokemon2 HAUNTER
- ec_word HAVE
- ec_word HAVEN_T
- ec_move1 HAZE
- ec_word HE
- ec_word HE_S
- ec_move1 HEADBUTT
- ec_move1 HEAL_BELL
- ec_word HEALTHY
- ec_word HEAR
- ec_word HEARING
- ec_word HEARS
- ec_word HEART
- ec_move2 HEAT_WAVE
- ec_word HEH
- ec_word HEHE
- ec_word HEHEHE
- ec_word HELLO
- ec_move2 HELPING_HAND
- ec_word HER
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 HERACROSS
- ec_pokemon2 HERACROSS
- ec_word HERE
- ec_word HERE_GOES
- ec_word HERE_I_COME
- ec_word HERE_IT_IS
- ec_word HERO
- ec_word HEROINE
- ec_word HERS
- ec_word HEY
- ec_word HEY_THERE
- ec_word HEY_QUES
- ec_word HI
- ec_move2 HI_JUMP_KICK
- ec_word HIDDEN
- ec_move2 HIDDEN_POWER
- ec_word HIGH
- ec_word HIGHS
- ec_word HIM
- ec_word HIP_AND
- ec_word HIS
- ec_word HIT
- ec_pokemon2 HITMONCHAN
- ec_pokemon2 HITMONLEE
- ec_pokemon2 HITMONTOP
- ec_word HIYAH
- ec_word HMM
- ec_pokemon2 HO_OH
- ec_word HOBBY
- ec_word HOHOHO
- ec_word HOLIDAY
- ec_word HOME
- ec_word HOO_HAH
- ec_pokemon2 HOOTHOOT
- ec_word HOPELESS
- ec_pokemon2 HOPPIP
- ec_move2 HORN_ATTACK
- ec_move2 HORN_DRILL
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 HORSEA
- ec_pokemon2 HORSEA
- ec_word HOT
- ec_pokemon2 HOUNDOOM
- ec_pokemon2 HOUNDOUR
- ec_word HOW
- ec_word HOW_DO
- ec_word HOWEVER
- ec_move2 HOWL
- ec_word HUGE_POWER
- ec_word HUH_QUES
- ec_word HUMPH
- ec_word HUNGRY
- ec_pokemon1 HUNTAIL
- ec_word HURRIED
- ec_word HUSTLE
- ec_move2 HYDRO_CANNON
- ec_move2 HYDRO_PUMP
- ec_word HYPER
- ec_move2 HYPER_BEAM
- ec_word HYPER_CUTTER
- ec_move2 HYPER_FANG
- ec_move2 HYPER_VOICE
- ec_pokemon2 HYPNO
- ec_move1 HYPNOSIS
+ .2byte EC_WORD_HABIT
+ .2byte EC_WORD_HAH
+ .2byte EC_WORD_HAHAHA
+ .2byte EC_MOVE(HAIL)
+ .2byte EC_WORD_HALL_OF_FAME
+ .2byte EC_WORD_HAPPENING
+ .2byte EC_WORD_HAPPILY
+ .2byte EC_WORD_HAPPINESS
+ .2byte EC_WORD_HAPPY
+ .2byte EC_WORD_HARD
+ .2byte EC_MOVE(HARDEN)
+ .2byte EC_POKEMON(HARIYAMA)
+ .2byte EC_WORD_HAS
+ .2byte EC_WORD_HASSLE
+ .2byte EC_POKEMON2(HAUNTER)
+ .2byte EC_WORD_HAVE
+ .2byte EC_WORD_HAVEN_T
+ .2byte EC_MOVE(HAZE)
+ .2byte EC_WORD_HE
+ .2byte EC_WORD_HE_S
+ .2byte EC_MOVE(HEADBUTT)
+ .2byte EC_MOVE(HEAL_BELL)
+ .2byte EC_WORD_HEALTHY
+ .2byte EC_WORD_HEAR
+ .2byte EC_WORD_HEARING
+ .2byte EC_WORD_HEARS
+ .2byte EC_WORD_HEART
+ .2byte EC_MOVE2(HEAT_WAVE)
+ .2byte EC_WORD_HEH
+ .2byte EC_WORD_HEHE
+ .2byte EC_WORD_HEHEHE
+ .2byte EC_WORD_HELLO
+ .2byte EC_MOVE2(HELPING_HAND)
+ .2byte EC_WORD_HER
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(HERACROSS)
+ .2byte EC_POKEMON2(HERACROSS)
+ .2byte EC_WORD_HERE
+ .2byte EC_WORD_HERE_GOES
+ .2byte EC_WORD_HERE_I_COME
+ .2byte EC_WORD_HERE_IT_IS
+ .2byte EC_WORD_HERO
+ .2byte EC_WORD_HEROINE
+ .2byte EC_WORD_HERS
+ .2byte EC_WORD_HEY
+ .2byte EC_WORD_HEY_THERE
+ .2byte EC_WORD_HEY_QUES
+ .2byte EC_WORD_HI
+ .2byte EC_MOVE2(HI_JUMP_KICK)
+ .2byte EC_WORD_HIDDEN
+ .2byte EC_MOVE2(HIDDEN_POWER)
+ .2byte EC_WORD_HIGH
+ .2byte EC_WORD_HIGHS
+ .2byte EC_WORD_HIM
+ .2byte EC_WORD_HIP_AND
+ .2byte EC_WORD_HIS
+ .2byte EC_WORD_HIT
+ .2byte EC_POKEMON2(HITMONCHAN)
+ .2byte EC_POKEMON2(HITMONLEE)
+ .2byte EC_POKEMON2(HITMONTOP)
+ .2byte EC_WORD_HIYAH
+ .2byte EC_WORD_HMM
+ .2byte EC_POKEMON2(HO_OH)
+ .2byte EC_WORD_HOBBY
+ .2byte EC_WORD_HOHOHO
+ .2byte EC_WORD_HOLIDAY
+ .2byte EC_WORD_HOME
+ .2byte EC_WORD_HOO_HAH
+ .2byte EC_POKEMON2(HOOTHOOT)
+ .2byte EC_WORD_HOPELESS
+ .2byte EC_POKEMON2(HOPPIP)
+ .2byte EC_MOVE2(HORN_ATTACK)
+ .2byte EC_MOVE2(HORN_DRILL)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(HORSEA)
+ .2byte EC_POKEMON2(HORSEA)
+ .2byte EC_WORD_HOT
+ .2byte EC_POKEMON2(HOUNDOOM)
+ .2byte EC_POKEMON2(HOUNDOUR)
+ .2byte EC_WORD_HOW
+ .2byte EC_WORD_HOW_DO
+ .2byte EC_WORD_HOWEVER
+ .2byte EC_MOVE2(HOWL)
+ .2byte EC_WORD_HUGE_POWER
+ .2byte EC_WORD_HUH_QUES
+ .2byte EC_WORD_HUMPH
+ .2byte EC_WORD_HUNGRY
+ .2byte EC_POKEMON(HUNTAIL)
+ .2byte EC_WORD_HURRIED
+ .2byte EC_WORD_HUSTLE
+ .2byte EC_MOVE2(HYDRO_CANNON)
+ .2byte EC_MOVE2(HYDRO_PUMP)
+ .2byte EC_WORD_HYPER
+ .2byte EC_MOVE2(HYPER_BEAM)
+ .2byte EC_WORD_HYPER_CUTTER
+ .2byte EC_MOVE2(HYPER_FANG)
+ .2byte EC_MOVE2(HYPER_VOICE)
+ .2byte EC_POKEMON2(HYPNO)
+ .2byte EC_MOVE(HYPNOSIS)
gEasyChatWordsByLetter_I:: @ 859D696
- ec_word I
- ec_word I_AM
- ec_word I_CHOOSE_YOU
- ec_word I_WAS
- ec_word I_VE
- ec_word I_VE_ARRIVED
- ec_word ICE
- ec_move1 ICE_BALL
- ec_move2 ICE_BEAM
- ec_move2 ICE_PUNCH
- ec_move2 ICICLE_SPEAR
- ec_move1 ICY_WIND
- ec_word IDOL
- ec_word IF
- ec_word IF_I_LOSE
- ec_word IF_I_WIN
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 IGGLYBUFF
- ec_pokemon2 IGGLYBUFF
- ec_word IGNORANT
- ec_word ILLUMINATE
- ec_pokemon1 ILLUMISE
- ec_word IMMUNITY
- ec_word IMPORTANT
- ec_word IMPOSSIBLE
- ec_move2 IMPRISON
- ec_word IN
- ec_word INCREASING
- ec_word INCREDIBLE
- ec_word INFORMATION
- ec_move2 INGRAIN
- ec_word INNER_FOCUS
- ec_word INSIDE
- ec_word INSOMNIA
- ec_word INSTEAD
- ec_word INTIMIDATE
- ec_word INVINCIBLE
- ec_move2 IRON_DEFENSE
- ec_move1 IRON_TAIL
- ec_word IS
- ec_word IS_IT_QUES
- ec_word ISN_T
- ec_word ISN_T_IT_QUES
- ec_word IT
- ec_word IT_S
- ec_word ITEM
- ec_pokemon2 IVYSAUR
+ .2byte EC_WORD_I
+ .2byte EC_WORD_I_AM
+ .2byte EC_WORD_I_CHOOSE_YOU
+ .2byte EC_WORD_I_WAS
+ .2byte EC_WORD_I_VE
+ .2byte EC_WORD_I_VE_ARRIVED
+ .2byte EC_WORD_ICE
+ .2byte EC_MOVE(ICE_BALL)
+ .2byte EC_MOVE2(ICE_BEAM)
+ .2byte EC_MOVE2(ICE_PUNCH)
+ .2byte EC_MOVE2(ICICLE_SPEAR)
+ .2byte EC_MOVE(ICY_WIND)
+ .2byte EC_WORD_IDOL
+ .2byte EC_WORD_IF
+ .2byte EC_WORD_IF_I_LOSE
+ .2byte EC_WORD_IF_I_WIN
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(IGGLYBUFF)
+ .2byte EC_POKEMON2(IGGLYBUFF)
+ .2byte EC_WORD_IGNORANT
+ .2byte EC_WORD_ILLUMINATE
+ .2byte EC_POKEMON(ILLUMISE)
+ .2byte EC_WORD_IMMUNITY
+ .2byte EC_WORD_IMPORTANT
+ .2byte EC_WORD_IMPOSSIBLE
+ .2byte EC_MOVE2(IMPRISON)
+ .2byte EC_WORD_IN
+ .2byte EC_WORD_INCREASING
+ .2byte EC_WORD_INCREDIBLE
+ .2byte EC_WORD_INFORMATION
+ .2byte EC_MOVE2(INGRAIN)
+ .2byte EC_WORD_INNER_FOCUS
+ .2byte EC_WORD_INSIDE
+ .2byte EC_WORD_INSOMNIA
+ .2byte EC_WORD_INSTEAD
+ .2byte EC_WORD_INTIMIDATE
+ .2byte EC_WORD_INVINCIBLE
+ .2byte EC_MOVE2(IRON_DEFENSE)
+ .2byte EC_MOVE(IRON_TAIL)
+ .2byte EC_WORD_IS
+ .2byte EC_WORD_IS_IT_QUES
+ .2byte EC_WORD_ISN_T
+ .2byte EC_WORD_ISN_T_IT_QUES
+ .2byte EC_WORD_IT
+ .2byte EC_WORD_IT_S
+ .2byte EC_WORD_ITEM
+ .2byte EC_POKEMON2(IVYSAUR)
gEasyChatWordsByLetter_J:: @ 859D6F6
.2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 JIGGLYPUFF
- ec_pokemon2 JIGGLYPUFF
- ec_pokemon1 JIRACHI
- ec_word JOKING
- ec_pokemon2 JOLTEON
- ec_word JOY
- ec_word JUDGE
- ec_move2 JUMP_KICK
- ec_pokemon2 JUMPLUFF
- ec_word JUST
- ec_pokemon2 JYNX
+ .2byte EC_POKEMON(JIGGLYPUFF)
+ .2byte EC_POKEMON2(JIGGLYPUFF)
+ .2byte EC_POKEMON(JIRACHI)
+ .2byte EC_WORD_JOKING
+ .2byte EC_POKEMON2(JOLTEON)
+ .2byte EC_WORD_JOY
+ .2byte EC_WORD_JUDGE
+ .2byte EC_MOVE2(JUMP_KICK)
+ .2byte EC_POKEMON2(JUMPLUFF)
+ .2byte EC_WORD_JUST
+ .2byte EC_POKEMON2(JYNX)
gEasyChatWordsByLetter_K:: @ 859D710
- ec_pokemon2 KABUTO
- ec_pokemon2 KABUTOPS
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 KADABRA
- ec_pokemon2 KADABRA
- ec_pokemon2 KAKUNA
- ec_pokemon2 KANGASKHAN
- ec_move1 KARATE_CHOP
- ec_pokemon1 KECLEON
- ec_word KEEN_EYE
- ec_word KID
- ec_word KIDDING
- ec_word KIND
- ec_word KINDERGARTEN
- ec_move1 KINESIS
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 KINGDRA
- ec_pokemon2 KINGDRA
- ec_pokemon2 KINGLER
- ec_pokemon1 KIRLIA
- ec_move2 KNOCK_OFF
- ec_word KNOCKOUT
- ec_word KNOW
- ec_word KNOWS
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 KOFFING
- ec_pokemon2 KOFFING
- ec_pokemon2 KRABBY
- ec_word KTHX_BYE
- ec_pokemon1 KYOGRE
+ .2byte EC_POKEMON2(KABUTO)
+ .2byte EC_POKEMON2(KABUTOPS)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(KADABRA)
+ .2byte EC_POKEMON2(KADABRA)
+ .2byte EC_POKEMON2(KAKUNA)
+ .2byte EC_POKEMON2(KANGASKHAN)
+ .2byte EC_MOVE(KARATE_CHOP)
+ .2byte EC_POKEMON(KECLEON)
+ .2byte EC_WORD_KEEN_EYE
+ .2byte EC_WORD_KID
+ .2byte EC_WORD_KIDDING
+ .2byte EC_WORD_KIND
+ .2byte EC_WORD_KINDERGARTEN
+ .2byte EC_MOVE(KINESIS)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(KINGDRA)
+ .2byte EC_POKEMON2(KINGDRA)
+ .2byte EC_POKEMON2(KINGLER)
+ .2byte EC_POKEMON(KIRLIA)
+ .2byte EC_MOVE2(KNOCK_OFF)
+ .2byte EC_WORD_KNOCKOUT
+ .2byte EC_WORD_KNOW
+ .2byte EC_WORD_KNOWS
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(KOFFING)
+ .2byte EC_POKEMON2(KOFFING)
+ .2byte EC_POKEMON2(KRABBY)
+ .2byte EC_WORD_KTHX_BYE
+ .2byte EC_POKEMON(KYOGRE)
gEasyChatWordsByLetter_L:: @ 859D752
- ec_word LACKING
- ec_word LACKS
- ec_word LADY
- ec_pokemon1 LAIRON
- ec_word LALALA
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 LANTURN
- ec_pokemon2 LANTURN
- ec_pokemon2 LAPRAS
- ec_pokemon2 LARVITAR
- ec_word LAST
- ec_word LATE
- ec_word LATER
- ec_pokemon1 LATIAS
- ec_pokemon1 LATIOS
- ec_word LAVISH
- ec_word LAY
- ec_word LEADER
- ec_word LEADERS
- ec_word LEAF
- ec_move2 LEAF_BLADE
- ec_word LEARN
- ec_pokemon2 LEDIAN
- ec_pokemon2 LEDYBA
- ec_move1 LEECH_LIFE
- ec_move2 LEECH_SEED
- ec_move2 LEER
- ec_word LEFT
- ec_word LEGEND
- ec_word LESS
- ec_word LESSONS
- ec_word LET_ME_WIN
- ec_word LET_S
- ec_word LETTER
- ec_word LEVEL
- ec_word LEVITATE
- ec_move1 LICK
- ec_pokemon2 LICKITUNG
- ec_word LIE
- ec_word LIFE
- ec_move2 LIGHT_SCREEN
- ec_word LIGHTNINGROD
- ec_word LIKE
- ec_word LIKELY_TO
- ec_word LIKES
- ec_pokemon1 LILEEP
- ec_word LIMBER
- ec_word LINK
- ec_pokemon1 LINOONE
- ec_word LIQUID_OOZE
- ec_word LISTEN
- ec_word LISTENING
- ec_word LISTENS
- ec_word LIVING
- ec_move2 LOCK_ON
- ec_word LOCOMOTIVE
- ec_word LOL
- ec_word LOLLING
- ec_pokemon1 LOMBRE
- ec_word LONESOME
- ec_word LOOK
- ec_word LOOKS
- ec_word LOSE
- ec_word LOSER
- ec_word LOSING
- ec_word LOSS
- ec_word LOST
- ec_pokemon1 LOTAD
- ec_pokemon1 LOUDRED
- ec_word LOUSY
- ec_move1 LOVELY_KISS
- ec_word LOVEY_DOVEY
- ec_word LOW
- ec_move1 LOW_KICK
- ec_word LOWS
- ec_pokemon1 LUDICOLO
- ec_pokemon2 LUGIA
- ec_word LUKEWARM
- ec_pokemon1 LUNATONE
- ec_move2 LUSTER_PURGE
- ec_pokemon1 LUVDISC
+ .2byte EC_WORD_LACKING
+ .2byte EC_WORD_LACKS
+ .2byte EC_WORD_LADY
+ .2byte EC_POKEMON(LAIRON)
+ .2byte EC_WORD_LALALA
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(LANTURN)
+ .2byte EC_POKEMON2(LANTURN)
+ .2byte EC_POKEMON2(LAPRAS)
+ .2byte EC_POKEMON2(LARVITAR)
+ .2byte EC_WORD_LAST
+ .2byte EC_WORD_LATE
+ .2byte EC_WORD_LATER
+ .2byte EC_POKEMON(LATIAS)
+ .2byte EC_POKEMON(LATIOS)
+ .2byte EC_WORD_LAVISH
+ .2byte EC_WORD_LAY
+ .2byte EC_WORD_LEADER
+ .2byte EC_WORD_LEADERS
+ .2byte EC_WORD_LEAF
+ .2byte EC_MOVE2(LEAF_BLADE)
+ .2byte EC_WORD_LEARN
+ .2byte EC_POKEMON2(LEDIAN)
+ .2byte EC_POKEMON2(LEDYBA)
+ .2byte EC_MOVE(LEECH_LIFE)
+ .2byte EC_MOVE2(LEECH_SEED)
+ .2byte EC_MOVE2(LEER)
+ .2byte EC_WORD_LEFT
+ .2byte EC_WORD_LEGEND
+ .2byte EC_WORD_LESS
+ .2byte EC_WORD_LESSONS
+ .2byte EC_WORD_LET_ME_WIN
+ .2byte EC_WORD_LET_S
+ .2byte EC_WORD_LETTER
+ .2byte EC_WORD_LEVEL
+ .2byte EC_WORD_LEVITATE
+ .2byte EC_MOVE(LICK)
+ .2byte EC_POKEMON2(LICKITUNG)
+ .2byte EC_WORD_LIE
+ .2byte EC_WORD_LIFE
+ .2byte EC_MOVE2(LIGHT_SCREEN)
+ .2byte EC_WORD_LIGHTNINGROD
+ .2byte EC_WORD_LIKE
+ .2byte EC_WORD_LIKELY_TO
+ .2byte EC_WORD_LIKES
+ .2byte EC_POKEMON(LILEEP)
+ .2byte EC_WORD_LIMBER
+ .2byte EC_WORD_LINK
+ .2byte EC_POKEMON(LINOONE)
+ .2byte EC_WORD_LIQUID_OOZE
+ .2byte EC_WORD_LISTEN
+ .2byte EC_WORD_LISTENING
+ .2byte EC_WORD_LISTENS
+ .2byte EC_WORD_LIVING
+ .2byte EC_MOVE2(LOCK_ON)
+ .2byte EC_WORD_LOCOMOTIVE
+ .2byte EC_WORD_LOL
+ .2byte EC_WORD_LOLLING
+ .2byte EC_POKEMON(LOMBRE)
+ .2byte EC_WORD_LONESOME
+ .2byte EC_WORD_LOOK
+ .2byte EC_WORD_LOOKS
+ .2byte EC_WORD_LOSE
+ .2byte EC_WORD_LOSER
+ .2byte EC_WORD_LOSING
+ .2byte EC_WORD_LOSS
+ .2byte EC_WORD_LOST
+ .2byte EC_POKEMON(LOTAD)
+ .2byte EC_POKEMON(LOUDRED)
+ .2byte EC_WORD_LOUSY
+ .2byte EC_MOVE(LOVELY_KISS)
+ .2byte EC_WORD_LOVEY_DOVEY
+ .2byte EC_WORD_LOW
+ .2byte EC_MOVE(LOW_KICK)
+ .2byte EC_WORD_LOWS
+ .2byte EC_POKEMON(LUDICOLO)
+ .2byte EC_POKEMON2(LUGIA)
+ .2byte EC_WORD_LUKEWARM
+ .2byte EC_POKEMON(LUNATONE)
+ .2byte EC_MOVE2(LUSTER_PURGE)
+ .2byte EC_POKEMON(LUVDISC)
gEasyChatWordsByLetter_M:: @ 859D7F6
- ec_move2 MACH_PUNCH
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 MACHAMP
- ec_pokemon2 MACHAMP
- ec_word MACHINE
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 MACHOKE
- ec_pokemon2 MACHOKE
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 MACHOP
- ec_pokemon2 MACHOP
- ec_word MAGAZINE
- ec_pokemon2 MAGBY
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 MAGCARGO
- ec_pokemon2 MAGCARGO
- ec_move2 MAGIC_COAT
- ec_move2 MAGICAL_LEAF
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 MAGIKARP
- ec_pokemon2 MAGIKARP
- ec_word MAGMA_ARMOR
- ec_pokemon2 MAGMAR
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 MAGNEMITE
- ec_pokemon2 MAGNEMITE
- ec_word MAGNET_PULL
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 MAGNETON
- ec_pokemon2 MAGNETON
- ec_move2 MAGNITUDE
- ec_word MAIL
- ec_word MAKE
- ec_word MAKING
- ec_pokemon1 MAKUHITA
- ec_word MAN
- ec_pokemon1 MANECTRIC
- ec_pokemon2 MANKEY
- ec_pokemon2 MANTINE
- ec_pokemon2 MAREEP
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 MARILL
- ec_pokemon2 MARILL
- ec_pokemon2 MAROWAK
- ec_pokemon1 MARSHTOMP
- ec_word MARVEL_SCALE
- ec_pokemon1 MASQUERAIN
- ec_word MASTER
- ec_word MATCH
- ec_word MATCH_UP
- ec_pokemon1 MAWILE
- ec_word MAYBE
- ec_word MC
- ec_word ME
- ec_word MEAN
- ec_move1 MEAN_LOOK
- ec_pokemon1 MEDICHAM
- ec_move2 MEDITATE
- ec_pokemon1 MEDITITE
- ec_word MEET
- ec_word MEET_YOU
- ec_word MEETS
- ec_word MEGA
- ec_move2 MEGA_DRAIN
- ec_move2 MEGA_KICK
- ec_move2 MEGA_PUNCH
- ec_move2 MEGAHORN
- ec_pokemon2 MEGANIUM
- ec_move1 MEMENTO
- ec_pokemon2 MEOWTH
- ec_word MESSAGE
- ec_pokemon1 METAGROSS
- ec_move2 METAL_CLAW
- ec_move1 METAL_SOUND
- ec_pokemon1 METANG
- ec_pokemon2 METAPOD
- ec_move1 METEOR_MASH
- ec_move2 METRONOME
- ec_pokemon2 MEW
- ec_pokemon2 MEWTWO
- ec_pokemon1 MIGHTYENA
- ec_move2 MILK_DRINK
- ec_pokemon1 MILOTIC
- ec_pokemon2 MILTANK
- ec_move2 MIMIC
- ec_move1 MIND_READER
- ec_move2 MINIMIZE
- ec_pokemon1 MINUN
- ec_word MINUS
- ec_move2 MIRROR_COAT
- ec_move1 MIRROR_MOVE
- ec_pokemon2 MISDREAVUS
- ec_word MISHEARD
- ec_word MISS
- ec_move1 MIST
- ec_move2 MIST_BALL
- ec_word MISTAKE
- ec_word MMM
- ec_word MODE
- ec_word MODERN
- ec_pokemon2 MOLTRES
- ec_word MOMENTUM
- ec_word MONDAY
- ec_word MONEY
- ec_word MONTH
- ec_word MOOD
- ec_move2 MOONLIGHT
- ec_word MORE
- ec_word MORNING
- ec_move1 MORNING_SUN
- ec_word MOTHER
- ec_word MOVE
- ec_word MOVIE
- ec_word MR
- ec_pokemon2 MR_MIME
- ec_word MRS
- ec_word MUCH
- ec_word MUCH_OBLIGED
- ec_move2 MUD_SHOT
- ec_move2 MUD_SPORT
- ec_move2 MUD_SLAP
- ec_move2 MUDDY_WATER
- ec_pokemon1 MUDKIP
- ec_word MUFUFU
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 MUK
- ec_pokemon2 MUK
- ec_pokemon2 MURKROW
- ec_word MUSIC
- ec_word MUST_BE
- ec_word MY
- ec_word MYSELF
- ec_word MYSTERY
+ .2byte EC_MOVE2(MACH_PUNCH)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(MACHAMP)
+ .2byte EC_POKEMON2(MACHAMP)
+ .2byte EC_WORD_MACHINE
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(MACHOKE)
+ .2byte EC_POKEMON2(MACHOKE)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(MACHOP)
+ .2byte EC_POKEMON2(MACHOP)
+ .2byte EC_WORD_MAGAZINE
+ .2byte EC_POKEMON2(MAGBY)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(MAGCARGO)
+ .2byte EC_POKEMON2(MAGCARGO)
+ .2byte EC_MOVE2(MAGIC_COAT)
+ .2byte EC_MOVE2(MAGICAL_LEAF)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(MAGIKARP)
+ .2byte EC_POKEMON2(MAGIKARP)
+ .2byte EC_WORD_MAGMA_ARMOR
+ .2byte EC_POKEMON2(MAGMAR)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(MAGNEMITE)
+ .2byte EC_POKEMON2(MAGNEMITE)
+ .2byte EC_WORD_MAGNET_PULL
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(MAGNETON)
+ .2byte EC_POKEMON2(MAGNETON)
+ .2byte EC_MOVE2(MAGNITUDE)
+ .2byte EC_WORD_MAIL
+ .2byte EC_WORD_MAKE
+ .2byte EC_WORD_MAKING
+ .2byte EC_POKEMON(MAKUHITA)
+ .2byte EC_WORD_MAN
+ .2byte EC_POKEMON(MANECTRIC)
+ .2byte EC_POKEMON2(MANKEY)
+ .2byte EC_POKEMON2(MANTINE)
+ .2byte EC_POKEMON2(MAREEP)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(MARILL)
+ .2byte EC_POKEMON2(MARILL)
+ .2byte EC_POKEMON2(MAROWAK)
+ .2byte EC_POKEMON(MARSHTOMP)
+ .2byte EC_WORD_MARVEL_SCALE
+ .2byte EC_POKEMON(MASQUERAIN)
+ .2byte EC_WORD_MASTER
+ .2byte EC_WORD_MATCH
+ .2byte EC_WORD_MATCH_UP
+ .2byte EC_POKEMON(MAWILE)
+ .2byte EC_WORD_MAYBE
+ .2byte EC_WORD_MC
+ .2byte EC_WORD_ME
+ .2byte EC_WORD_MEAN
+ .2byte EC_MOVE(MEAN_LOOK)
+ .2byte EC_POKEMON(MEDICHAM)
+ .2byte EC_MOVE2(MEDITATE)
+ .2byte EC_POKEMON(MEDITITE)
+ .2byte EC_WORD_MEET
+ .2byte EC_WORD_MEET_YOU
+ .2byte EC_WORD_MEETS
+ .2byte EC_WORD_MEGA
+ .2byte EC_MOVE2(MEGA_DRAIN)
+ .2byte EC_MOVE2(MEGA_KICK)
+ .2byte EC_MOVE2(MEGA_PUNCH)
+ .2byte EC_MOVE2(MEGAHORN)
+ .2byte EC_POKEMON2(MEGANIUM)
+ .2byte EC_MOVE(MEMENTO)
+ .2byte EC_POKEMON2(MEOWTH)
+ .2byte EC_WORD_MESSAGE
+ .2byte EC_POKEMON(METAGROSS)
+ .2byte EC_MOVE2(METAL_CLAW)
+ .2byte EC_MOVE(METAL_SOUND)
+ .2byte EC_POKEMON(METANG)
+ .2byte EC_POKEMON2(METAPOD)
+ .2byte EC_MOVE(METEOR_MASH)
+ .2byte EC_MOVE2(METRONOME)
+ .2byte EC_POKEMON2(MEW)
+ .2byte EC_POKEMON2(MEWTWO)
+ .2byte EC_POKEMON(MIGHTYENA)
+ .2byte EC_MOVE2(MILK_DRINK)
+ .2byte EC_POKEMON(MILOTIC)
+ .2byte EC_POKEMON2(MILTANK)
+ .2byte EC_MOVE2(MIMIC)
+ .2byte EC_MOVE(MIND_READER)
+ .2byte EC_MOVE2(MINIMIZE)
+ .2byte EC_POKEMON(MINUN)
+ .2byte EC_WORD_MINUS
+ .2byte EC_MOVE2(MIRROR_COAT)
+ .2byte EC_MOVE(MIRROR_MOVE)
+ .2byte EC_POKEMON2(MISDREAVUS)
+ .2byte EC_WORD_MISHEARD
+ .2byte EC_WORD_MISS
+ .2byte EC_MOVE(MIST)
+ .2byte EC_MOVE2(MIST_BALL)
+ .2byte EC_WORD_MISTAKE
+ .2byte EC_WORD_MMM
+ .2byte EC_WORD_MODE
+ .2byte EC_WORD_MODERN
+ .2byte EC_POKEMON2(MOLTRES)
+ .2byte EC_WORD_MOMENTUM
+ .2byte EC_WORD_MONDAY
+ .2byte EC_WORD_MONEY
+ .2byte EC_WORD_MONTH
+ .2byte EC_WORD_MOOD
+ .2byte EC_MOVE2(MOONLIGHT)
+ .2byte EC_WORD_MORE
+ .2byte EC_WORD_MORNING
+ .2byte EC_MOVE(MORNING_SUN)
+ .2byte EC_WORD_MOTHER
+ .2byte EC_WORD_MOVE
+ .2byte EC_WORD_MOVIE
+ .2byte EC_WORD_MR
+ .2byte EC_POKEMON2(MR_MIME)
+ .2byte EC_WORD_MRS
+ .2byte EC_WORD_MUCH
+ .2byte EC_WORD_MUCH_OBLIGED
+ .2byte EC_MOVE2(MUD_SHOT)
+ .2byte EC_MOVE2(MUD_SPORT)
+ .2byte EC_MOVE2(MUD_SLAP)
+ .2byte EC_MOVE2(MUDDY_WATER)
+ .2byte EC_POKEMON(MUDKIP)
+ .2byte EC_WORD_MUFUFU
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(MUK)
+ .2byte EC_POKEMON2(MUK)
+ .2byte EC_POKEMON2(MURKROW)
+ .2byte EC_WORD_MUSIC
+ .2byte EC_WORD_MUST_BE
+ .2byte EC_WORD_MY
+ .2byte EC_WORD_MYSELF
+ .2byte EC_WORD_MYSTERY
gEasyChatWordsByLetter_N:: @ 859D912
- ec_word NAME
- ec_word NAP
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 NATU
- ec_pokemon2 NATU
- ec_word NATURAL
- ec_word NATURAL_CURE
- ec_word NATURALLY
- ec_word NATURE
- ec_move1 NATURE_POWER
- ec_word NEAR
- ec_word NEARLY
- ec_word NEED
- ec_move2 NEEDLE_ARM
- ec_word NEGATIVE
- ec_word NEVER
- ec_word NEW
- ec_word NEWS
- ec_word NEXT
- ec_word NICE
- ec_pokemon2 NIDOKING
- ec_pokemon2 NIDOQUEEN
- ec_pokemon2 NIDORAN_F
- ec_pokemon2 NIDORAN_M
- ec_pokemon2 NIDORINA
- ec_pokemon2 NIDORINO
- ec_word NIGHT
- ec_move2 NIGHT_SHADE
- ec_move1 NIGHTMARE
- ec_word NIGHTTIME
- ec_pokemon1 NINCADA
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 NINETALES
- ec_pokemon2 NINETALES
- ec_pokemon1 NINJASK
- ec_word NITWIT
- ec_word NO
- ec_word NO_MATCH
- ec_word NO_1
- ec_pokemon2 NOCTOWL
- ec_word NOISY
- ec_word NON_STOP
- ec_word NONE
- ec_word NOPE
- ec_word NORMAL
- ec_pokemon1 NOSEPASS
- ec_word NOT
- ec_word NOT_VERY
- ec_word NOTHING
- ec_word NOW
- ec_pokemon1 NUMEL
- ec_pokemon1 NUZLEAF
+ .2byte EC_WORD_NAME
+ .2byte EC_WORD_NAP
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(NATU)
+ .2byte EC_POKEMON2(NATU)
+ .2byte EC_WORD_NATURAL
+ .2byte EC_WORD_NATURAL_CURE
+ .2byte EC_WORD_NATURALLY
+ .2byte EC_WORD_NATURE
+ .2byte EC_MOVE(NATURE_POWER)
+ .2byte EC_WORD_NEAR
+ .2byte EC_WORD_NEARLY
+ .2byte EC_WORD_NEED
+ .2byte EC_MOVE2(NEEDLE_ARM)
+ .2byte EC_WORD_NEGATIVE
+ .2byte EC_WORD_NEVER
+ .2byte EC_WORD_NEW
+ .2byte EC_WORD_NEWS
+ .2byte EC_WORD_NEXT
+ .2byte EC_WORD_NICE
+ .2byte EC_POKEMON2(NIDOKING)
+ .2byte EC_POKEMON2(NIDOQUEEN)
+ .2byte EC_POKEMON2(NIDORAN_F)
+ .2byte EC_POKEMON2(NIDORAN_M)
+ .2byte EC_POKEMON2(NIDORINA)
+ .2byte EC_POKEMON2(NIDORINO)
+ .2byte EC_WORD_NIGHT
+ .2byte EC_MOVE2(NIGHT_SHADE)
+ .2byte EC_MOVE(NIGHTMARE)
+ .2byte EC_WORD_NIGHTTIME
+ .2byte EC_POKEMON(NINCADA)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(NINETALES)
+ .2byte EC_POKEMON2(NINETALES)
+ .2byte EC_POKEMON(NINJASK)
+ .2byte EC_WORD_NITWIT
+ .2byte EC_WORD_NO
+ .2byte EC_WORD_NO_MATCH
+ .2byte EC_WORD_NO_1
+ .2byte EC_POKEMON2(NOCTOWL)
+ .2byte EC_WORD_NOISY
+ .2byte EC_WORD_NON_STOP
+ .2byte EC_WORD_NONE
+ .2byte EC_WORD_NOPE
+ .2byte EC_WORD_NORMAL
+ .2byte EC_POKEMON(NOSEPASS)
+ .2byte EC_WORD_NOT
+ .2byte EC_WORD_NOT_VERY
+ .2byte EC_WORD_NOTHING
+ .2byte EC_WORD_NOW
+ .2byte EC_POKEMON(NUMEL)
+ .2byte EC_POKEMON(NUZLEAF)
gEasyChatWordsByLetter_O:: @ 859D97E
- ec_word OBLIVIOUS
- ec_move1 OCTAZOOKA
- ec_pokemon2 OCTILLERY
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 ODDISH
- ec_pokemon2 ODDISH
- ec_move1 ODOR_SLEUTH
- ec_word OF
- ec_word OFF
- ec_word OFFENSIVE
- ec_word OH
- ec_word OH_DEAR
- ec_word OH_YEAH
- ec_word OH_KAY
- ec_word OH_QUES
- ec_word OI
- ec_word OI_OI_OI
- ec_word OK_QUES
- ec_word OKAY
- ec_word OLD
- ec_word OLDEN
- ec_pokemon2 OMANYTE
- ec_pokemon2 OMASTAR
- ec_word ON
- ec_word ONCE
- ec_pokemon2 ONIX
- ec_word ONLY
- ec_word OOPS
- ec_word OPPONENT
- ec_word OPPOSITE
- ec_word OR
- ec_word OTHER
- ec_word OUR
- ec_word OUT
- ec_move1 OUTRAGE
- ec_word OUTSIDE
- ec_word OVER
- ec_word OVERDO
- ec_word OVERGROW
- ec_move1 OVERHEAT
- ec_word OVERWHELMING
- ec_word OWN
- ec_word OWN_TEMPO
+ .2byte EC_WORD_OBLIVIOUS
+ .2byte EC_MOVE(OCTAZOOKA)
+ .2byte EC_POKEMON2(OCTILLERY)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(ODDISH)
+ .2byte EC_POKEMON2(ODDISH)
+ .2byte EC_MOVE(ODOR_SLEUTH)
+ .2byte EC_WORD_OF
+ .2byte EC_WORD_OFF
+ .2byte EC_WORD_OFFENSIVE
+ .2byte EC_WORD_OH
+ .2byte EC_WORD_OH_DEAR
+ .2byte EC_WORD_OH_YEAH
+ .2byte EC_WORD_OH_KAY
+ .2byte EC_WORD_OH_QUES
+ .2byte EC_WORD_OI
+ .2byte EC_WORD_OI_OI_OI
+ .2byte EC_WORD_OK_QUES
+ .2byte EC_WORD_OKAY
+ .2byte EC_WORD_OLD
+ .2byte EC_WORD_OLDEN
+ .2byte EC_POKEMON2(OMANYTE)
+ .2byte EC_POKEMON2(OMASTAR)
+ .2byte EC_WORD_ON
+ .2byte EC_WORD_ONCE
+ .2byte EC_POKEMON2(ONIX)
+ .2byte EC_WORD_ONLY
+ .2byte EC_WORD_OOPS
+ .2byte EC_WORD_OPPONENT
+ .2byte EC_WORD_OPPOSITE
+ .2byte EC_WORD_OR
+ .2byte EC_WORD_OTHER
+ .2byte EC_WORD_OUR
+ .2byte EC_WORD_OUT
+ .2byte EC_MOVE(OUTRAGE)
+ .2byte EC_WORD_OUTSIDE
+ .2byte EC_WORD_OVER
+ .2byte EC_WORD_OVERDO
+ .2byte EC_WORD_OVERGROW
+ .2byte EC_MOVE(OVERHEAT)
+ .2byte EC_WORD_OVERWHELMING
+ .2byte EC_WORD_OWN
+ .2byte EC_WORD_OWN_TEMPO
gEasyChatWordsByLetter_P:: @ 859D9D6
- ec_move1 PAIN_SPLIT
- ec_pokemon2 PARAS
- ec_pokemon2 PARASECT
- ec_word PARDON
- ec_word PARENT
- ec_word PARTNER
- ec_word PARTY
- ec_word PATTERN
- ec_move2 PAY_DAY
- ec_word PC
- ec_move2 PECK
- ec_pokemon1 PELIPPER
- ec_word PERFECT
- ec_word PERFECTION
- ec_move2 PERISH_SONG
- ec_pokemon2 PERSIAN
- ec_word PERSON
- ec_move2 PETAL_DANCE
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 PHANPY
- ec_pokemon2 PHANPY
- ec_word PHONE
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 PICHU
- ec_pokemon2 PICHU
- ec_word PICKUP
- ec_pokemon2 PIDGEOT
- ec_pokemon2 PIDGEOTTO
- ec_pokemon2 PIDGEY
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 PIKACHU
- ec_pokemon2 PIKACHU
- ec_pokemon2 PILOSWINE
- ec_move2 PIN_MISSILE
- ec_pokemon2 PINECO
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 PINSIR
- ec_pokemon2 PINSIR
- ec_word PKRS
- ec_word PLACE
- ec_word PLANS
- ec_word PLAY
- ec_word PLAYED
- ec_word PLAYS
- ec_word PLEASE
- ec_word PLUS
- ec_word PLUSH_DOLL
- ec_pokemon1 PLUSLE
- ec_word POINTS
- ec_word POISON
- ec_move2 POISON_FANG
- ec_move2 POISON_GAS
- ec_word POISON_POINT
- ec_move2 POISON_STING
- ec_move2 POISON_TAIL
- ec_move2 POISON_POWDER
- ec_word POKEBLOCK
- ec_word POKEDEX
- ec_word POKEMON
- ec_word POKENAV
- ec_pokemon2 POLITOED
- ec_pokemon2 POLIWAG
- ec_pokemon2 POLIWHIRL
- ec_pokemon2 POLIWRATH
- ec_pokemon2 PONYTA
- ec_pokemon1 POOCHYENA
- ec_word POPULAR
- ec_pokemon2 PORYGON
- ec_pokemon2 PORYGON2
- ec_move2 POUND
- ec_move1 POWDER_SNOW
- ec_word POWER
- ec_word PRAISE
- ec_word PREPOSTEROUS
- ec_move2 PRESENT
- ec_word PRESSURE
- ec_word PRETEND
- ec_word PRETTY
- ec_pokemon2 PRIMEAPE
- ec_word PROBABLY
- ec_word PROMISE
- ec_move2 PROTECT
- ec_move1 PSYBEAM
- ec_move1 PSYCH_UP
- .2byte -1, 2 @ doubled Pokémon species names
- ec_word PSYCHIC
- ec_move1 PSYCHIC
- ec_move1 PSYCHO_BOOST
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 PSYDUCK
- ec_pokemon2 PSYDUCK
- ec_move1 PSYWAVE
- ec_pokemon2 PUPITAR
- ec_word PURE_POWER
- ec_move1 PURSUIT
- ec_word PUSHOVER
+ .2byte EC_MOVE(PAIN_SPLIT)
+ .2byte EC_POKEMON2(PARAS)
+ .2byte EC_POKEMON2(PARASECT)
+ .2byte EC_WORD_PARDON
+ .2byte EC_WORD_PARENT
+ .2byte EC_WORD_PARTNER
+ .2byte EC_WORD_PARTY
+ .2byte EC_WORD_PATTERN
+ .2byte EC_MOVE2(PAY_DAY)
+ .2byte EC_WORD_PC
+ .2byte EC_MOVE2(PECK)
+ .2byte EC_POKEMON(PELIPPER)
+ .2byte EC_WORD_PERFECT
+ .2byte EC_WORD_PERFECTION
+ .2byte EC_MOVE2(PERISH_SONG)
+ .2byte EC_POKEMON2(PERSIAN)
+ .2byte EC_WORD_PERSON
+ .2byte EC_MOVE2(PETAL_DANCE)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(PHANPY)
+ .2byte EC_POKEMON2(PHANPY)
+ .2byte EC_WORD_PHONE
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(PICHU)
+ .2byte EC_POKEMON2(PICHU)
+ .2byte EC_WORD_PICKUP
+ .2byte EC_POKEMON2(PIDGEOT)
+ .2byte EC_POKEMON2(PIDGEOTTO)
+ .2byte EC_POKEMON2(PIDGEY)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(PIKACHU)
+ .2byte EC_POKEMON2(PIKACHU)
+ .2byte EC_POKEMON2(PILOSWINE)
+ .2byte EC_MOVE2(PIN_MISSILE)
+ .2byte EC_POKEMON2(PINECO)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(PINSIR)
+ .2byte EC_POKEMON2(PINSIR)
+ .2byte EC_WORD_PKRS
+ .2byte EC_WORD_PLACE
+ .2byte EC_WORD_PLANS
+ .2byte EC_WORD_PLAY
+ .2byte EC_WORD_PLAYED
+ .2byte EC_WORD_PLAYS
+ .2byte EC_WORD_PLEASE
+ .2byte EC_WORD_PLUS
+ .2byte EC_WORD_PLUSH_DOLL
+ .2byte EC_POKEMON(PLUSLE)
+ .2byte EC_WORD_POINTS
+ .2byte EC_WORD_POISON
+ .2byte EC_MOVE2(POISON_FANG)
+ .2byte EC_MOVE2(POISON_GAS)
+ .2byte EC_WORD_POISON_POINT
+ .2byte EC_MOVE2(POISON_STING)
+ .2byte EC_MOVE2(POISON_TAIL)
+ .2byte EC_MOVE2(POISON_POWDER)
+ .2byte EC_WORD_POKEBLOCK
+ .2byte EC_WORD_POKEDEX
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_POKENAV
+ .2byte EC_POKEMON2(POLITOED)
+ .2byte EC_POKEMON2(POLIWAG)
+ .2byte EC_POKEMON2(POLIWHIRL)
+ .2byte EC_POKEMON2(POLIWRATH)
+ .2byte EC_POKEMON2(PONYTA)
+ .2byte EC_POKEMON(POOCHYENA)
+ .2byte EC_WORD_POPULAR
+ .2byte EC_POKEMON2(PORYGON)
+ .2byte EC_POKEMON2(PORYGON2)
+ .2byte EC_MOVE2(POUND)
+ .2byte EC_MOVE(POWDER_SNOW)
+ .2byte EC_WORD_POWER
+ .2byte EC_WORD_PRAISE
+ .2byte EC_WORD_PREPOSTEROUS
+ .2byte EC_MOVE2(PRESENT)
+ .2byte EC_WORD_PRESSURE
+ .2byte EC_WORD_PRETEND
+ .2byte EC_WORD_PRETTY
+ .2byte EC_POKEMON2(PRIMEAPE)
+ .2byte EC_WORD_PROBABLY
+ .2byte EC_WORD_PROMISE
+ .2byte EC_MOVE2(PROTECT)
+ .2byte EC_MOVE(PSYBEAM)
+ .2byte EC_MOVE(PSYCH_UP)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_WORD_PSYCHIC
+ .2byte EC_MOVE(PSYCHIC)
+ .2byte EC_MOVE(PSYCHO_BOOST)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(PSYDUCK)
+ .2byte EC_POKEMON2(PSYDUCK)
+ .2byte EC_MOVE(PSYWAVE)
+ .2byte EC_POKEMON2(PUPITAR)
+ .2byte EC_WORD_PURE_POWER
+ .2byte EC_MOVE(PURSUIT)
+ .2byte EC_WORD_PUSHOVER
gEasyChatWordsByLetter_Q:: @ 859DAA2
- ec_pokemon2 QUAGSIRE
- ec_word QUESTION
- ec_move2 QUICK_ATTACK
- ec_pokemon2 QUILAVA
- ec_word QUITE
- ec_pokemon2 QWILFISH
+ .2byte EC_POKEMON2(QUAGSIRE)
+ .2byte EC_WORD_QUESTION
+ .2byte EC_MOVE2(QUICK_ATTACK)
+ .2byte EC_POKEMON2(QUILAVA)
+ .2byte EC_WORD_QUITE
+ .2byte EC_POKEMON2(QWILFISH)
gEasyChatWordsByLetter_R:: @ 859DAAE
- ec_word RADIO
- ec_move1 RAGE
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 RAICHU
- ec_pokemon2 RAICHU
- ec_pokemon2 RAIKOU
- ec_move1 RAIN_DANCE
- ec_word RAIN_DISH
- ec_pokemon1 RALTS
- ec_word RANK
- ec_move1 RAPID_SPIN
- ec_pokemon2 RAPIDASH
- ec_word RARE
- ec_word RATHER
- ec_pokemon2 RATICATE
- ec_pokemon2 RATTATA
- ec_pokemon1 RAYQUAZA
- ec_move2 RAZOR_LEAF
- ec_move1 RAZOR_WIND
- ec_word READY
- ec_word REALLY
- ec_word REAR
- ec_word RECEIVED
- ec_word RECOMMEND
- ec_move1 RECOVER
- ec_move2 RECYCLE
- ec_word RED
- ec_move2 REFLECT
- ec_move2 REFRESH
- ec_word REFRESHING
- ec_word REFUSE
- ec_pokemon1 REGICE
- ec_pokemon1 REGIROCK
- ec_pokemon1 REGISTEEL
- ec_word REJECT
- ec_word RELEASE
- ec_pokemon1 RELICANTH
- ec_pokemon2 REMORAID
- ec_word RENTAL
- ec_move2 REST
- ec_word RESUSCITATE
- ec_move1 RETURN
- ec_move2 REVENGE
- ec_move1 REVERSAL
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 RHYDON
- ec_pokemon2 RHYDON
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 RHYHORN
- ec_pokemon2 RHYHORN
- ec_word RIBBON
- ec_word RICKETY
- ec_word RIGHT
- ec_word RIPPED
- ec_word RIVAL
- ec_move2 ROAR
- ec_word ROCK
- ec_move2 ROCK_BLAST
- ec_word ROCK_HEAD
- ec_move1 ROCK_SLIDE
- ec_move1 ROCK_SMASH
- ec_move1 ROCK_THROW
- ec_move1 ROCK_TOMB
- ec_word ROCK_SOLID
- ec_move2 ROLE_PLAY
- ec_move2 ROLLING_KICK
- ec_move1 ROLLOUT
- ec_word ROMANTIC
- ec_word ROOM
- ec_pokemon1 ROSELIA
- ec_word ROUGH_SKIN
- ec_word RPG
- ec_word RUBY
- ec_word RULE
- ec_word RUN
- ec_word RUN_AWAY
- ec_word RUNS
+ .2byte EC_WORD_RADIO
+ .2byte EC_MOVE(RAGE)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(RAICHU)
+ .2byte EC_POKEMON2(RAICHU)
+ .2byte EC_POKEMON2(RAIKOU)
+ .2byte EC_MOVE(RAIN_DANCE)
+ .2byte EC_WORD_RAIN_DISH
+ .2byte EC_POKEMON(RALTS)
+ .2byte EC_WORD_RANK
+ .2byte EC_MOVE(RAPID_SPIN)
+ .2byte EC_POKEMON2(RAPIDASH)
+ .2byte EC_WORD_RARE
+ .2byte EC_WORD_RATHER
+ .2byte EC_POKEMON2(RATICATE)
+ .2byte EC_POKEMON2(RATTATA)
+ .2byte EC_POKEMON(RAYQUAZA)
+ .2byte EC_MOVE2(RAZOR_LEAF)
+ .2byte EC_MOVE(RAZOR_WIND)
+ .2byte EC_WORD_READY
+ .2byte EC_WORD_REALLY
+ .2byte EC_WORD_REAR
+ .2byte EC_WORD_RECEIVED
+ .2byte EC_WORD_RECOMMEND
+ .2byte EC_MOVE(RECOVER)
+ .2byte EC_MOVE2(RECYCLE)
+ .2byte EC_WORD_RED
+ .2byte EC_MOVE2(REFLECT)
+ .2byte EC_MOVE2(REFRESH)
+ .2byte EC_WORD_REFRESHING
+ .2byte EC_WORD_REFUSE
+ .2byte EC_POKEMON(REGICE)
+ .2byte EC_POKEMON(REGIROCK)
+ .2byte EC_POKEMON(REGISTEEL)
+ .2byte EC_WORD_REJECT
+ .2byte EC_WORD_RELEASE
+ .2byte EC_POKEMON(RELICANTH)
+ .2byte EC_POKEMON2(REMORAID)
+ .2byte EC_WORD_RENTAL
+ .2byte EC_MOVE2(REST)
+ .2byte EC_WORD_RESUSCITATE
+ .2byte EC_MOVE(RETURN)
+ .2byte EC_MOVE2(REVENGE)
+ .2byte EC_MOVE(REVERSAL)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(RHYDON)
+ .2byte EC_POKEMON2(RHYDON)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(RHYHORN)
+ .2byte EC_POKEMON2(RHYHORN)
+ .2byte EC_WORD_RIBBON
+ .2byte EC_WORD_RICKETY
+ .2byte EC_WORD_RIGHT
+ .2byte EC_WORD_RIPPED
+ .2byte EC_WORD_RIVAL
+ .2byte EC_MOVE2(ROAR)
+ .2byte EC_WORD_ROCK
+ .2byte EC_MOVE2(ROCK_BLAST)
+ .2byte EC_WORD_ROCK_HEAD
+ .2byte EC_MOVE(ROCK_SLIDE)
+ .2byte EC_MOVE(ROCK_SMASH)
+ .2byte EC_MOVE(ROCK_THROW)
+ .2byte EC_MOVE(ROCK_TOMB)
+ .2byte EC_WORD_ROCK_SOLID
+ .2byte EC_MOVE2(ROLE_PLAY)
+ .2byte EC_MOVE2(ROLLING_KICK)
+ .2byte EC_MOVE(ROLLOUT)
+ .2byte EC_WORD_ROMANTIC
+ .2byte EC_WORD_ROOM
+ .2byte EC_POKEMON(ROSELIA)
+ .2byte EC_WORD_ROUGH_SKIN
+ .2byte EC_WORD_RPG
+ .2byte EC_WORD_RUBY
+ .2byte EC_WORD_RULE
+ .2byte EC_WORD_RUN
+ .2byte EC_WORD_RUN_AWAY
+ .2byte EC_WORD_RUNS
gEasyChatWordsByLetter_S:: @ 859DB4E
- ec_pokemon1 SABLEYE
- ec_move1 SACRED_FIRE
- ec_word SAD
- ec_word SADLY
- ec_move1 SAFEGUARD
- ec_word SAID
- ec_pokemon1 SALAMENCE
- ec_word SAND_STREAM
- ec_move1 SAND_TOMB
- ec_word SAND_VEIL
- ec_move1 SAND_ATTACK
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 SANDSHREW
- ec_pokemon2 SANDSHREW
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 SANDSLASH
- ec_pokemon2 SANDSLASH
- ec_move1 SANDSTORM
- ec_word SAPPHIRE
- ec_word SATISFIED
- ec_word SATURDAY
- ec_word SAYS
- ec_word SCARY
- ec_move1 SCARY_FACE
- ec_word SCATTER
- ec_pokemon1 SCEPTILE
- ec_word SCHOOL
- ec_pokemon2 SCIZOR
- ec_move2 SCRATCH
- ec_move1 SCREECH
- ec_pokemon2 SCYTHER
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 SEADRA
- ec_pokemon2 SEADRA
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 SEAKING
- ec_pokemon2 SEAKING
- ec_pokemon1 SEALEO
- ec_word SEARCH
- ec_word SECRET
- ec_word SECRET_BASE
- ec_move2 SECRET_POWER
- ec_word SEE
- ec_word SEE_YA
- ec_pokemon1 SEEDOT
- ec_word SEEK
- ec_pokemon2 SEEL
- ec_word SEEMS
- ec_word SEES
- ec_move2 SEISMIC_TOSS
- ec_move1 SELF_DESTRUCT
- ec_word SENSE
- ec_pokemon2 SENTRET
- ec_word SERENE_GRACE
- ec_word SERIOUS
- ec_word SERIOUSLY
- ec_word SERVICE
- ec_pokemon1 SEVIPER
- ec_move1 SHADOW_BALL
- ec_move1 SHADOW_PUNCH
- ec_word SHADOW_TAG
- ec_word SHADY
- ec_word SHAKE
- ec_word SHAKY
- ec_word SHALLOW
- ec_pokemon1 SHARPEDO
- ec_move1 SHARPEN
- ec_word SHE
- ec_word SHE_IS
- ec_word SHE_WAS
- ec_word SHED_SKIN
- ec_pokemon1 SHEDINJA
- ec_move1 SHEER_COLD
- ec_pokemon1 SHELGON
- ec_word SHELL_ARMOR
- ec_pokemon2 SHELLDER
- ec_word SHIELD_DUST
- ec_pokemon1 SHIFTRY
- ec_word SHINE
- ec_move2 SHOCK_WAVE
- ec_word SHOCKED
- ec_word SHOPPING
- ec_word SHOULD
- ec_word SHOW
- ec_word SHREDDED
- ec_pokemon1 SHROOMISH
- ec_pokemon2 SHUCKLE
- ec_pokemon1 SHUPPET
- ec_word SIBLINGS
- ec_word SIGH
- ec_move1 SIGNAL_BEAM
- ec_pokemon1 SILCOON
- ec_word SILKY
- ec_word SILVER
- ec_move1 SILVER_WIND
- ec_word SIMPLE
- ec_word SINCE
- ec_move1 SING
- ec_word SINK
- ec_word SISTER
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 SKARMORY
- ec_pokemon2 SKARMORY
- ec_move1 SKETCH
- ec_word SKILL
- ec_move1 SKILL_SWAP
- ec_word SKILLED
- ec_pokemon2 SKIPLOOM
- ec_pokemon1 SKITTY
- ec_move2 SKULL_BASH
- ec_move1 SKY_ATTACK
- ec_move1 SKY_UPPERCUT
- ec_move2 SLACK_OFF
- ec_pokemon1 SLAKING
- ec_pokemon1 SLAKOTH
- ec_move2 SLAM
- ec_move1 SLASH
- ec_word SLEEP
- ec_move2 SLEEP_POWDER
- ec_move2 SLEEP_TALK
- ec_word SLEPT
- ec_word SLIDE
- ec_word SLIMY
- ec_pokemon2 SLOWBRO
- ec_pokemon2 SLOWKING
- ec_pokemon2 SLOWPOKE
- ec_move2 SLUDGE
- ec_move2 SLUDGE_BOMB
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 SLUGMA
- ec_pokemon2 SLUGMA
- ec_word SMACK
- ec_word SMALL
- ec_word SMART
- ec_word SMARTNESS
- ec_pokemon2 SMEARGLE
- ec_word SMELL
- ec_word SMELL_YA
- ec_move1 SMELLING_SALT
- ec_word SMITE
- ec_move1 SMOG
- ec_move1 SMOKESCREEN
- ec_pokemon2 SMOOCHUM
- ec_word SMOOTH
- ec_move2 SNATCH
- ec_pokemon2 SNEASEL
- ec_move1 SNORE
- ec_pokemon2 SNORLAX
- ec_word SNORT
- ec_pokemon1 SNORUNT
- ec_pokemon2 SNUBBULL
- ec_word SO
- ec_move2 SOFT_BOILED
- ec_word SOFTWARE
- ec_move1 SOLAR_BEAM
- ec_pokemon1 SOLROCK
- ec_word SOME
- ec_word SOMEHOW
- ec_word SOMEONE
- ec_word SOMETHING
- ec_word SOMETIME
- ec_word SON
- ec_word SONG
- ec_word SONGS
- ec_move1 SONIC_BOOM
- ec_word SOON
- ec_word SORRY
- ec_word SOUNDPROOF
- ec_word SP_ABILITY
- ec_move1 SPARK
- ec_pokemon2 SPEAROW
- ec_word SPECTATOR
- ec_word SPEED_BOOST
- ec_pokemon1 SPHEAL
- ec_move1 SPIDER_WEB
- ec_move2 SPIKE_CANNON
- ec_move2 SPIKES
- ec_pokemon2 SPINARAK
- ec_pokemon1 SPINDA
- ec_word SPIRALING
- ec_word SPIRIT
- ec_move2 SPIT_UP
- ec_move1 SPITE
- ec_move2 SPLASH
- ec_pokemon1 SPOINK
- ec_move1 SPORE
- ec_word SPORTS
- ec_word SPRING
- ec_pokemon2 SQUIRTLE
- ec_word STAGE
- ec_pokemon2 STANTLER
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 STARMIE
- ec_pokemon2 STARMIE
- ec_word START
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 STARYU
- ec_pokemon2 STARYU
- ec_word STATIC
- ec_word STAY_AT_HOME
- ec_word STEEL
- ec_move2 STEEL_WING
- ec_pokemon2 STEELIX
- ec_word STENCH
- ec_word STICKY_HOLD
- ec_move2 STOCKPILE
- ec_move2 STOMP
- ec_word STOP
- ec_word STORE
- ec_word STORES
- ec_word STORY
- ec_word STRATEGY
- ec_move1 STRENGTH
- ec_move1 STRING_SHOT
- ec_word STRONG
- ec_move2 STRUGGLE
- ec_word STUDY
- ec_move1 STUN_SPORE
- ec_word STURDY
- ec_move1 SUBMISSION
- ec_move2 SUBSTITUTE
- ec_word SUCTION_CUPS
- ec_pokemon2 SUDOWOODO
- ec_pokemon2 SUICUNE
- ec_word SUMMER
- ec_word SUNDAY
- ec_pokemon2 SUNFLORA
- ec_pokemon2 SUNKERN
- ec_move2 SUNNY_DAY
- ec_word SUPER
- ec_move1 SUPER_FANG
- ec_move2 SUPERPOWER
- ec_move2 SUPERSONIC
- ec_move2 SURF
- ec_word SURPRISE
- ec_word SURRENDER
- ec_pokemon1 SURSKIT
- ec_pokemon1 SWABLU
- ec_move1 SWAGGER
- ec_move2 SWALLOW
- ec_pokemon1 SWALOT
- ec_pokemon1 SWAMPERT
- ec_word SWARM
- ec_move2 SWEET_KISS
- ec_move1 SWEET_SCENT
- ec_word SWEETS
- ec_pokemon1 SWELLOW
- ec_move1 SWIFT
- ec_word SWIFT_SWIM
- ec_pokemon2 SWINUB
- ec_move2 SWORDS_DANCE
- ec_word SYNCHRONIZE
- ec_move1 SYNTHESIS
- ec_word SYSTEM
+ .2byte EC_POKEMON(SABLEYE)
+ .2byte EC_MOVE(SACRED_FIRE)
+ .2byte EC_WORD_SAD
+ .2byte EC_WORD_SADLY
+ .2byte EC_MOVE(SAFEGUARD)
+ .2byte EC_WORD_SAID
+ .2byte EC_POKEMON(SALAMENCE)
+ .2byte EC_WORD_SAND_STREAM
+ .2byte EC_MOVE(SAND_TOMB)
+ .2byte EC_WORD_SAND_VEIL
+ .2byte EC_MOVE(SAND_ATTACK)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(SANDSHREW)
+ .2byte EC_POKEMON2(SANDSHREW)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(SANDSLASH)
+ .2byte EC_POKEMON2(SANDSLASH)
+ .2byte EC_MOVE(SANDSTORM)
+ .2byte EC_WORD_SAPPHIRE
+ .2byte EC_WORD_SATISFIED
+ .2byte EC_WORD_SATURDAY
+ .2byte EC_WORD_SAYS
+ .2byte EC_WORD_SCARY
+ .2byte EC_MOVE(SCARY_FACE)
+ .2byte EC_WORD_SCATTER
+ .2byte EC_POKEMON(SCEPTILE)
+ .2byte EC_WORD_SCHOOL
+ .2byte EC_POKEMON2(SCIZOR)
+ .2byte EC_MOVE2(SCRATCH)
+ .2byte EC_MOVE(SCREECH)
+ .2byte EC_POKEMON2(SCYTHER)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(SEADRA)
+ .2byte EC_POKEMON2(SEADRA)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(SEAKING)
+ .2byte EC_POKEMON2(SEAKING)
+ .2byte EC_POKEMON(SEALEO)
+ .2byte EC_WORD_SEARCH
+ .2byte EC_WORD_SECRET
+ .2byte EC_WORD_SECRET_BASE
+ .2byte EC_MOVE2(SECRET_POWER)
+ .2byte EC_WORD_SEE
+ .2byte EC_WORD_SEE_YA
+ .2byte EC_POKEMON(SEEDOT)
+ .2byte EC_WORD_SEEK
+ .2byte EC_POKEMON2(SEEL)
+ .2byte EC_WORD_SEEMS
+ .2byte EC_WORD_SEES
+ .2byte EC_MOVE2(SEISMIC_TOSS)
+ .2byte EC_MOVE(SELF_DESTRUCT)
+ .2byte EC_WORD_SENSE
+ .2byte EC_POKEMON2(SENTRET)
+ .2byte EC_WORD_SERENE_GRACE
+ .2byte EC_WORD_SERIOUS
+ .2byte EC_WORD_SERIOUSLY
+ .2byte EC_WORD_SERVICE
+ .2byte EC_POKEMON(SEVIPER)
+ .2byte EC_MOVE(SHADOW_BALL)
+ .2byte EC_MOVE(SHADOW_PUNCH)
+ .2byte EC_WORD_SHADOW_TAG
+ .2byte EC_WORD_SHADY
+ .2byte EC_WORD_SHAKE
+ .2byte EC_WORD_SHAKY
+ .2byte EC_WORD_SHALLOW
+ .2byte EC_POKEMON(SHARPEDO)
+ .2byte EC_MOVE(SHARPEN)
+ .2byte EC_WORD_SHE
+ .2byte EC_WORD_SHE_IS
+ .2byte EC_WORD_SHE_WAS
+ .2byte EC_WORD_SHED_SKIN
+ .2byte EC_POKEMON(SHEDINJA)
+ .2byte EC_MOVE(SHEER_COLD)
+ .2byte EC_POKEMON(SHELGON)
+ .2byte EC_WORD_SHELL_ARMOR
+ .2byte EC_POKEMON2(SHELLDER)
+ .2byte EC_WORD_SHIELD_DUST
+ .2byte EC_POKEMON(SHIFTRY)
+ .2byte EC_WORD_SHINE
+ .2byte EC_MOVE2(SHOCK_WAVE)
+ .2byte EC_WORD_SHOCKED
+ .2byte EC_WORD_SHOPPING
+ .2byte EC_WORD_SHOULD
+ .2byte EC_WORD_SHOW
+ .2byte EC_WORD_SHREDDED
+ .2byte EC_POKEMON(SHROOMISH)
+ .2byte EC_POKEMON2(SHUCKLE)
+ .2byte EC_POKEMON(SHUPPET)
+ .2byte EC_WORD_SIBLINGS
+ .2byte EC_WORD_SIGH
+ .2byte EC_MOVE(SIGNAL_BEAM)
+ .2byte EC_POKEMON(SILCOON)
+ .2byte EC_WORD_SILKY
+ .2byte EC_WORD_SILVER
+ .2byte EC_MOVE(SILVER_WIND)
+ .2byte EC_WORD_SIMPLE
+ .2byte EC_WORD_SINCE
+ .2byte EC_MOVE(SING)
+ .2byte EC_WORD_SINK
+ .2byte EC_WORD_SISTER
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(SKARMORY)
+ .2byte EC_POKEMON2(SKARMORY)
+ .2byte EC_MOVE(SKETCH)
+ .2byte EC_WORD_SKILL
+ .2byte EC_MOVE(SKILL_SWAP)
+ .2byte EC_WORD_SKILLED
+ .2byte EC_POKEMON2(SKIPLOOM)
+ .2byte EC_POKEMON(SKITTY)
+ .2byte EC_MOVE2(SKULL_BASH)
+ .2byte EC_MOVE(SKY_ATTACK)
+ .2byte EC_MOVE(SKY_UPPERCUT)
+ .2byte EC_MOVE2(SLACK_OFF)
+ .2byte EC_POKEMON(SLAKING)
+ .2byte EC_POKEMON(SLAKOTH)
+ .2byte EC_MOVE2(SLAM)
+ .2byte EC_MOVE(SLASH)
+ .2byte EC_WORD_SLEEP
+ .2byte EC_MOVE2(SLEEP_POWDER)
+ .2byte EC_MOVE2(SLEEP_TALK)
+ .2byte EC_WORD_SLEPT
+ .2byte EC_WORD_SLIDE
+ .2byte EC_WORD_SLIMY
+ .2byte EC_POKEMON2(SLOWBRO)
+ .2byte EC_POKEMON2(SLOWKING)
+ .2byte EC_POKEMON2(SLOWPOKE)
+ .2byte EC_MOVE2(SLUDGE)
+ .2byte EC_MOVE2(SLUDGE_BOMB)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(SLUGMA)
+ .2byte EC_POKEMON2(SLUGMA)
+ .2byte EC_WORD_SMACK
+ .2byte EC_WORD_SMALL
+ .2byte EC_WORD_SMART
+ .2byte EC_WORD_SMARTNESS
+ .2byte EC_POKEMON2(SMEARGLE)
+ .2byte EC_WORD_SMELL
+ .2byte EC_WORD_SMELL_YA
+ .2byte EC_MOVE(SMELLING_SALT)
+ .2byte EC_WORD_SMITE
+ .2byte EC_MOVE(SMOG)
+ .2byte EC_MOVE(SMOKESCREEN)
+ .2byte EC_POKEMON2(SMOOCHUM)
+ .2byte EC_WORD_SMOOTH
+ .2byte EC_MOVE2(SNATCH)
+ .2byte EC_POKEMON2(SNEASEL)
+ .2byte EC_MOVE(SNORE)
+ .2byte EC_POKEMON2(SNORLAX)
+ .2byte EC_WORD_SNORT
+ .2byte EC_POKEMON(SNORUNT)
+ .2byte EC_POKEMON2(SNUBBULL)
+ .2byte EC_WORD_SO
+ .2byte EC_MOVE2(SOFT_BOILED)
+ .2byte EC_WORD_SOFTWARE
+ .2byte EC_MOVE(SOLAR_BEAM)
+ .2byte EC_POKEMON(SOLROCK)
+ .2byte EC_WORD_SOME
+ .2byte EC_WORD_SOMEHOW
+ .2byte EC_WORD_SOMEONE
+ .2byte EC_WORD_SOMETHING
+ .2byte EC_WORD_SOMETIME
+ .2byte EC_WORD_SON
+ .2byte EC_WORD_SONG
+ .2byte EC_WORD_SONGS
+ .2byte EC_MOVE(SONIC_BOOM)
+ .2byte EC_WORD_SOON
+ .2byte EC_WORD_SORRY
+ .2byte EC_WORD_SOUNDPROOF
+ .2byte EC_WORD_SP_ABILITY
+ .2byte EC_MOVE(SPARK)
+ .2byte EC_POKEMON2(SPEAROW)
+ .2byte EC_WORD_SPECTATOR
+ .2byte EC_WORD_SPEED_BOOST
+ .2byte EC_POKEMON(SPHEAL)
+ .2byte EC_MOVE(SPIDER_WEB)
+ .2byte EC_MOVE2(SPIKE_CANNON)
+ .2byte EC_MOVE2(SPIKES)
+ .2byte EC_POKEMON2(SPINARAK)
+ .2byte EC_POKEMON(SPINDA)
+ .2byte EC_WORD_SPIRALING
+ .2byte EC_WORD_SPIRIT
+ .2byte EC_MOVE2(SPIT_UP)
+ .2byte EC_MOVE(SPITE)
+ .2byte EC_MOVE2(SPLASH)
+ .2byte EC_POKEMON(SPOINK)
+ .2byte EC_MOVE(SPORE)
+ .2byte EC_WORD_SPORTS
+ .2byte EC_WORD_SPRING
+ .2byte EC_POKEMON2(SQUIRTLE)
+ .2byte EC_WORD_STAGE
+ .2byte EC_POKEMON2(STANTLER)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(STARMIE)
+ .2byte EC_POKEMON2(STARMIE)
+ .2byte EC_WORD_START
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(STARYU)
+ .2byte EC_POKEMON2(STARYU)
+ .2byte EC_WORD_STATIC
+ .2byte EC_WORD_STAY_AT_HOME
+ .2byte EC_WORD_STEEL
+ .2byte EC_MOVE2(STEEL_WING)
+ .2byte EC_POKEMON2(STEELIX)
+ .2byte EC_WORD_STENCH
+ .2byte EC_WORD_STICKY_HOLD
+ .2byte EC_MOVE2(STOCKPILE)
+ .2byte EC_MOVE2(STOMP)
+ .2byte EC_WORD_STOP
+ .2byte EC_WORD_STORE
+ .2byte EC_WORD_STORES
+ .2byte EC_WORD_STORY
+ .2byte EC_WORD_STRATEGY
+ .2byte EC_MOVE(STRENGTH)
+ .2byte EC_MOVE(STRING_SHOT)
+ .2byte EC_WORD_STRONG
+ .2byte EC_MOVE2(STRUGGLE)
+ .2byte EC_WORD_STUDY
+ .2byte EC_MOVE(STUN_SPORE)
+ .2byte EC_WORD_STURDY
+ .2byte EC_MOVE(SUBMISSION)
+ .2byte EC_MOVE2(SUBSTITUTE)
+ .2byte EC_WORD_SUCTION_CUPS
+ .2byte EC_POKEMON2(SUDOWOODO)
+ .2byte EC_POKEMON2(SUICUNE)
+ .2byte EC_WORD_SUMMER
+ .2byte EC_WORD_SUNDAY
+ .2byte EC_POKEMON2(SUNFLORA)
+ .2byte EC_POKEMON2(SUNKERN)
+ .2byte EC_MOVE2(SUNNY_DAY)
+ .2byte EC_WORD_SUPER
+ .2byte EC_MOVE(SUPER_FANG)
+ .2byte EC_MOVE2(SUPERPOWER)
+ .2byte EC_MOVE2(SUPERSONIC)
+ .2byte EC_MOVE2(SURF)
+ .2byte EC_WORD_SURPRISE
+ .2byte EC_WORD_SURRENDER
+ .2byte EC_POKEMON(SURSKIT)
+ .2byte EC_POKEMON(SWABLU)
+ .2byte EC_MOVE(SWAGGER)
+ .2byte EC_MOVE2(SWALLOW)
+ .2byte EC_POKEMON(SWALOT)
+ .2byte EC_POKEMON(SWAMPERT)
+ .2byte EC_WORD_SWARM
+ .2byte EC_MOVE2(SWEET_KISS)
+ .2byte EC_MOVE(SWEET_SCENT)
+ .2byte EC_WORD_SWEETS
+ .2byte EC_POKEMON(SWELLOW)
+ .2byte EC_MOVE(SWIFT)
+ .2byte EC_WORD_SWIFT_SWIM
+ .2byte EC_POKEMON2(SWINUB)
+ .2byte EC_MOVE2(SWORDS_DANCE)
+ .2byte EC_WORD_SYNCHRONIZE
+ .2byte EC_MOVE(SYNTHESIS)
+ .2byte EC_WORD_SYSTEM
gEasyChatWordsByLetter_T:: @ 859DD5A
- ec_move2 TACKLE
- ec_move2 TAIL_GLOW
- ec_move1 TAIL_WHIP
- ec_pokemon1 TAILLOW
- ec_word TAKE
- ec_move2 TAKE_DOWN
- ec_word TAKE_THAT
- ec_word TALENT
- ec_word TALK
- ec_word TALKING
- ec_pokemon2 TANGELA
- ec_word TASTY
- ec_move2 TAUNT
- ec_pokemon2 TAUROS
- ec_word TCH
- ec_word TEACH
- ec_word TEACHER
- ec_word TEACHES
- ec_pokemon2 TEDDIURSA
- ec_move2 TEETER_DANCE
- ec_move2 TELEPORT
- ec_word TELEVISION
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 TENTACOOL
- ec_pokemon2 TENTACOOL
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 TENTACRUEL
- ec_pokemon2 TENTACRUEL
- ec_word TERRIBLE
- ec_word TEST
- ec_word THAN
- ec_word THANK_YOU
- ec_word THANKS
- ec_word THAT
- ec_word THAT_WAS
- ec_word THAT_S
- ec_word THAT_S_IT_EXCL
- ec_word THE
- ec_word THEIR
- ec_word THERE
- ec_word THESE
- ec_word THESE_WERE
- ec_word THEY
- ec_word THEY_WERE
- ec_word THEY_RE
- ec_word THEY_VE
- ec_word THICK
- ec_word THICK_FAT
- ec_move2 THIEF
- ec_word THIN
- ec_word THING
- ec_word THINGS
- ec_word THINK
- ec_word THINKS
- ec_word THIRSTY
- ec_word THIS
- ec_word THIS_IS_IT_EXCL
- ec_word THOSE
- ec_word THOSE_ARE
- ec_word THOSE_WERE
- ec_move1 THRASH
- ec_word THROW
- ec_move1 THUNDER
- ec_move2 THUNDER_WAVE
- ec_move1 THUNDERBOLT
- ec_move1 THUNDER_PUNCH
- ec_move2 THUNDER_SHOCK
- ec_word THURSDAY
- ec_move1 TICKLE
- ec_word TICKLISH
- ec_word TIGHT
- ec_word TIME
- ec_word TIMES
- ec_word TIRED
- ec_word TO
- ec_word TO_HER
- ec_word TO_ME
- ec_word TO_THEM
- ec_word TO_US
- ec_word TO_WHOM
- ec_word TODAY
- ec_pokemon2 TOGEPI
- ec_word TOGETHER
- ec_pokemon2 TOGETIC
- ec_word TOMORROW
- ec_word TOO
- ec_word TOO_LATE
- ec_word TOO_STRONG
- ec_word TOO_WEAK
- ec_word TOP
- ec_pokemon1 TORCHIC
- ec_pokemon1 TORKOAL
- ec_move1 TORMENT
- ec_word TORRENT
- ec_word TOTALLY
- ec_pokemon2 TOTODILE
- ec_word TOUGH
- ec_word TOUGHNESS
- ec_word TOURNAMENT
- ec_word TOWER
- ec_move2 TOXIC
- ec_word TOYS
- ec_word TRACE
- ec_word TRADE
- ec_word TRAIN
- ec_word TRAINER
- ec_word TRAINS
- ec_move2 TRANSFORM
- ec_pokemon1 TRAPINCH
- ec_word TRAVEL
- ec_word TREASURE
- ec_pokemon1 TREECKO
- ec_word TRENDY
- ec_move2 TRI_ATTACK
- ec_move2 TRICK
- ec_word TRIES
- ec_move2 TRIPLE_KICK
- ec_pokemon1 TROPIUS
- ec_word TRUANT
- ec_word TRULY
- ec_word TRUMP_CARD
- ec_word TRUST
- ec_word TRY
- ec_word TUESDAY
- ec_move2 TWINEEDLE
- ec_word TWIRLING
- ec_move2 TWISTER
- ec_word TYPE
- ec_pokemon2 TYPHLOSION
- ec_pokemon2 TYRANITAR
- ec_pokemon2 TYROGUE
+ .2byte EC_MOVE2(TACKLE)
+ .2byte EC_MOVE2(TAIL_GLOW)
+ .2byte EC_MOVE(TAIL_WHIP)
+ .2byte EC_POKEMON(TAILLOW)
+ .2byte EC_WORD_TAKE
+ .2byte EC_MOVE2(TAKE_DOWN)
+ .2byte EC_WORD_TAKE_THAT
+ .2byte EC_WORD_TALENT
+ .2byte EC_WORD_TALK
+ .2byte EC_WORD_TALKING
+ .2byte EC_POKEMON2(TANGELA)
+ .2byte EC_WORD_TASTY
+ .2byte EC_MOVE2(TAUNT)
+ .2byte EC_POKEMON2(TAUROS)
+ .2byte EC_WORD_TCH
+ .2byte EC_WORD_TEACH
+ .2byte EC_WORD_TEACHER
+ .2byte EC_WORD_TEACHES
+ .2byte EC_POKEMON2(TEDDIURSA)
+ .2byte EC_MOVE2(TEETER_DANCE)
+ .2byte EC_MOVE2(TELEPORT)
+ .2byte EC_WORD_TELEVISION
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(TENTACOOL)
+ .2byte EC_POKEMON2(TENTACOOL)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(TENTACRUEL)
+ .2byte EC_POKEMON2(TENTACRUEL)
+ .2byte EC_WORD_TERRIBLE
+ .2byte EC_WORD_TEST
+ .2byte EC_WORD_THAN
+ .2byte EC_WORD_THANK_YOU
+ .2byte EC_WORD_THANKS
+ .2byte EC_WORD_THAT
+ .2byte EC_WORD_THAT_WAS
+ .2byte EC_WORD_THAT_S
+ .2byte EC_WORD_THAT_S_IT_EXCL
+ .2byte EC_WORD_THE
+ .2byte EC_WORD_THEIR
+ .2byte EC_WORD_THERE
+ .2byte EC_WORD_THESE
+ .2byte EC_WORD_THESE_WERE
+ .2byte EC_WORD_THEY
+ .2byte EC_WORD_THEY_WERE
+ .2byte EC_WORD_THEY_RE
+ .2byte EC_WORD_THEY_VE
+ .2byte EC_WORD_THICK
+ .2byte EC_WORD_THICK_FAT
+ .2byte EC_MOVE2(THIEF)
+ .2byte EC_WORD_THIN
+ .2byte EC_WORD_THING
+ .2byte EC_WORD_THINGS
+ .2byte EC_WORD_THINK
+ .2byte EC_WORD_THINKS
+ .2byte EC_WORD_THIRSTY
+ .2byte EC_WORD_THIS
+ .2byte EC_WORD_THIS_IS_IT_EXCL
+ .2byte EC_WORD_THOSE
+ .2byte EC_WORD_THOSE_ARE
+ .2byte EC_WORD_THOSE_WERE
+ .2byte EC_MOVE(THRASH)
+ .2byte EC_WORD_THROW
+ .2byte EC_MOVE(THUNDER)
+ .2byte EC_MOVE2(THUNDER_WAVE)
+ .2byte EC_MOVE(THUNDERBOLT)
+ .2byte EC_MOVE(THUNDER_PUNCH)
+ .2byte EC_MOVE2(THUNDER_SHOCK)
+ .2byte EC_WORD_THURSDAY
+ .2byte EC_MOVE(TICKLE)
+ .2byte EC_WORD_TICKLISH
+ .2byte EC_WORD_TIGHT
+ .2byte EC_WORD_TIME
+ .2byte EC_WORD_TIMES
+ .2byte EC_WORD_TIRED
+ .2byte EC_WORD_TO
+ .2byte EC_WORD_TO_HER
+ .2byte EC_WORD_TO_ME
+ .2byte EC_WORD_TO_THEM
+ .2byte EC_WORD_TO_US
+ .2byte EC_WORD_TO_WHOM
+ .2byte EC_WORD_TODAY
+ .2byte EC_POKEMON2(TOGEPI)
+ .2byte EC_WORD_TOGETHER
+ .2byte EC_POKEMON2(TOGETIC)
+ .2byte EC_WORD_TOMORROW
+ .2byte EC_WORD_TOO
+ .2byte EC_WORD_TOO_LATE
+ .2byte EC_WORD_TOO_STRONG
+ .2byte EC_WORD_TOO_WEAK
+ .2byte EC_WORD_TOP
+ .2byte EC_POKEMON(TORCHIC)
+ .2byte EC_POKEMON(TORKOAL)
+ .2byte EC_MOVE(TORMENT)
+ .2byte EC_WORD_TORRENT
+ .2byte EC_WORD_TOTALLY
+ .2byte EC_POKEMON2(TOTODILE)
+ .2byte EC_WORD_TOUGH
+ .2byte EC_WORD_TOUGHNESS
+ .2byte EC_WORD_TOURNAMENT
+ .2byte EC_WORD_TOWER
+ .2byte EC_MOVE2(TOXIC)
+ .2byte EC_WORD_TOYS
+ .2byte EC_WORD_TRACE
+ .2byte EC_WORD_TRADE
+ .2byte EC_WORD_TRAIN
+ .2byte EC_WORD_TRAINER
+ .2byte EC_WORD_TRAINS
+ .2byte EC_MOVE2(TRANSFORM)
+ .2byte EC_POKEMON(TRAPINCH)
+ .2byte EC_WORD_TRAVEL
+ .2byte EC_WORD_TREASURE
+ .2byte EC_POKEMON(TREECKO)
+ .2byte EC_WORD_TRENDY
+ .2byte EC_MOVE2(TRI_ATTACK)
+ .2byte EC_MOVE2(TRICK)
+ .2byte EC_WORD_TRIES
+ .2byte EC_MOVE2(TRIPLE_KICK)
+ .2byte EC_POKEMON(TROPIUS)
+ .2byte EC_WORD_TRUANT
+ .2byte EC_WORD_TRULY
+ .2byte EC_WORD_TRUMP_CARD
+ .2byte EC_WORD_TRUST
+ .2byte EC_WORD_TRY
+ .2byte EC_WORD_TUESDAY
+ .2byte EC_MOVE2(TWINEEDLE)
+ .2byte EC_WORD_TWIRLING
+ .2byte EC_MOVE2(TWISTER)
+ .2byte EC_WORD_TYPE
+ .2byte EC_POKEMON2(TYPHLOSION)
+ .2byte EC_POKEMON2(TYRANITAR)
+ .2byte EC_POKEMON2(TYROGUE)
gEasyChatWordsByLetter_U:: @ 859DE64
- ec_word UGLY
- ec_word UH_HUH
- ec_word UH_OH
- ec_word UM
- ec_pokemon2 UMBREON
- ec_word UNAVOIDABLE
- ec_word UNBELIEVABLE
- ec_word UNCLE
- ec_word UNDERSTAND
- ec_word UNDERSTANDS
- ec_word UNDERSTOOD
- ec_word UNION
- ec_pokemon2 UNOWN
- ec_word UNTIL
- ec_word UP
- ec_word UPBEAT
- ec_move1 UPROAR
- ec_word UPSIDE_DOWN
- ec_word URGH
- ec_pokemon2 URSARING
- ec_word USE
- ec_word USELESS
- ec_word USES
- ec_word USING
+ .2byte EC_WORD_UGLY
+ .2byte EC_WORD_UH_HUH
+ .2byte EC_WORD_UH_OH
+ .2byte EC_WORD_UM
+ .2byte EC_POKEMON2(UMBREON)
+ .2byte EC_WORD_UNAVOIDABLE
+ .2byte EC_WORD_UNBELIEVABLE
+ .2byte EC_WORD_UNCLE
+ .2byte EC_WORD_UNDERSTAND
+ .2byte EC_WORD_UNDERSTANDS
+ .2byte EC_WORD_UNDERSTOOD
+ .2byte EC_WORD_UNION
+ .2byte EC_POKEMON2(UNOWN)
+ .2byte EC_WORD_UNTIL
+ .2byte EC_WORD_UP
+ .2byte EC_WORD_UPBEAT
+ .2byte EC_MOVE(UPROAR)
+ .2byte EC_WORD_UPSIDE_DOWN
+ .2byte EC_WORD_URGH
+ .2byte EC_POKEMON2(URSARING)
+ .2byte EC_WORD_USE
+ .2byte EC_WORD_USELESS
+ .2byte EC_WORD_USES
+ .2byte EC_WORD_USING
gEasyChatWordsByLetter_V:: @ 859DE94
- ec_word VACATION
- ec_pokemon2 VAPOREON
- ec_pokemon2 VENOMOTH
- ec_pokemon2 VENONAT
- ec_pokemon2 VENUSAUR
- ec_word VERSION
- ec_word VERSUS
- ec_word VERY
- ec_pokemon1 VIBRAVA
- ec_move2 VICE_GRIP
- ec_word VICTORY
- ec_pokemon2 VICTREEBEL
- ec_word VIEWING
- ec_pokemon1 VIGOROTH
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 VILEPLUME
- ec_pokemon2 VILEPLUME
- ec_move2 VINE_WHIP
- ec_word VITAL_SPIRIT
- ec_move1 VITAL_THROW
- ec_pokemon1 VOLBEAT
- ec_word VOLT_ABSORB
- ec_move2 VOLT_TACKLE
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 VOLTORB
- ec_pokemon2 VOLTORB
- ec_word VORACIOUS
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 VULPIX
- ec_pokemon2 VULPIX
+ .2byte EC_WORD_VACATION
+ .2byte EC_POKEMON2(VAPOREON)
+ .2byte EC_POKEMON2(VENOMOTH)
+ .2byte EC_POKEMON2(VENONAT)
+ .2byte EC_POKEMON2(VENUSAUR)
+ .2byte EC_WORD_VERSION
+ .2byte EC_WORD_VERSUS
+ .2byte EC_WORD_VERY
+ .2byte EC_POKEMON(VIBRAVA)
+ .2byte EC_MOVE2(VICE_GRIP)
+ .2byte EC_WORD_VICTORY
+ .2byte EC_POKEMON2(VICTREEBEL)
+ .2byte EC_WORD_VIEWING
+ .2byte EC_POKEMON(VIGOROTH)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(VILEPLUME)
+ .2byte EC_POKEMON2(VILEPLUME)
+ .2byte EC_MOVE2(VINE_WHIP)
+ .2byte EC_WORD_VITAL_SPIRIT
+ .2byte EC_MOVE(VITAL_THROW)
+ .2byte EC_POKEMON(VOLBEAT)
+ .2byte EC_WORD_VOLT_ABSORB
+ .2byte EC_MOVE2(VOLT_TACKLE)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(VOLTORB)
+ .2byte EC_POKEMON2(VOLTORB)
+ .2byte EC_WORD_VORACIOUS
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(VULPIX)
+ .2byte EC_POKEMON2(VULPIX)
gEasyChatWordsByLetter_W:: @ 859DED6
- ec_word WAAAH
- ec_word WAHAHAHA
- ec_pokemon1 WAILMER
- ec_pokemon1 WAILORD
- ec_word WAIT
- ec_word WAKE_UP
- ec_word WAKES_UP
- ec_word WALK
- ec_word WALKING
- ec_word WALKS
- ec_pokemon1 WALREIN
- ec_word WANDERING
- ec_word WANNABE
- ec_word WANT
- ec_word WANTS
- ec_pokemon2 WARTORTLE
- ec_word WAS
- ec_word WASN_T
- ec_word WATER
- ec_word WATER_ABSORB
- ec_move2 WATER_GUN
- ec_move2 WATER_PULSE
- ec_move2 WATER_SPORT
- ec_move1 WATER_SPOUT
- ec_word WATER_VEIL
- ec_move2 WATERFALL
- ec_word WAY
- ec_word WE
- ec_word WE_RE
- ec_word WE_VE
- ec_word WEAK
- ec_word WEAKENED
- ec_move1 WEATHER_BALL
- ec_word WEDNESDAY
- ec_pokemon2 WEEDLE
- ec_word WEEK
- ec_pokemon2 WEEPINBELL
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 WEEZING
- ec_pokemon2 WEEZING
- ec_word WEIRD
- ec_word WELCOME
- ec_word WELL
- ec_word WELL_THEN
- ec_word WENT
- ec_word WERE
- ec_word WEREN_T
- ec_word WHAT
- ec_word WHAT_S_UP_QUES
- ec_word WHEN
- ec_word WHEN_I_WIN
- ec_word WHERE
- ec_word WHICH
- ec_word WHILE
- ec_move1 WHIRLPOOL
- ec_move2 WHIRLWIND
- ec_pokemon1 WHISCASH
- ec_pokemon1 WHISMUR
- ec_word WHITE_SMOKE
- ec_word WHO
- ec_word WHO_IS
- ec_word WHO_WAS
- ec_word WHOAH
- ec_word WHOM
- ec_word WHOSE
- ec_word WHY
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 WIGGLYTUFF
- ec_pokemon2 WIGGLYTUFF
- ec_word WILD
- ec_word WILL
- ec_word WILL_BE_HERE
- ec_move1 WILL_O_WISP
- ec_word WIMPY
- ec_word WIN
- ec_move2 WING_ATTACK
- ec_pokemon1 WINGULL
- ec_word WINNER
- ec_word WINS
- ec_word WINTER
- ec_word WIRELESS
- ec_move2 WISH
- ec_word WITH
- ec_move1 WITHDRAW
- ec_word WITHOUT
- ec_word WOBBLY
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 WOBBUFFET
- ec_pokemon2 WOBBUFFET
- ec_word WOMAN
- ec_word WON
- ec_word WON_T
- ec_word WONDER
- ec_word WONDER_GUARD
- ec_pokemon2 WOOPER
- ec_word WORD
- ec_word WORK
- ec_word WORKING
- ec_word WORKS
- ec_word WORLD
- ec_word WORRY
- ec_word WOULD
- ec_word WOW
- ec_word WOWEE
- ec_move2 WRAP
- ec_word WROOOAAR_EXCL
- ec_pokemon1 WURMPLE
- ec_pokemon1 WYNAUT
+ .2byte EC_WORD_WAAAH
+ .2byte EC_WORD_WAHAHAHA
+ .2byte EC_POKEMON(WAILMER)
+ .2byte EC_POKEMON(WAILORD)
+ .2byte EC_WORD_WAIT
+ .2byte EC_WORD_WAKE_UP
+ .2byte EC_WORD_WAKES_UP
+ .2byte EC_WORD_WALK
+ .2byte EC_WORD_WALKING
+ .2byte EC_WORD_WALKS
+ .2byte EC_POKEMON(WALREIN)
+ .2byte EC_WORD_WANDERING
+ .2byte EC_WORD_WANNABE
+ .2byte EC_WORD_WANT
+ .2byte EC_WORD_WANTS
+ .2byte EC_POKEMON2(WARTORTLE)
+ .2byte EC_WORD_WAS
+ .2byte EC_WORD_WASN_T
+ .2byte EC_WORD_WATER
+ .2byte EC_WORD_WATER_ABSORB
+ .2byte EC_MOVE2(WATER_GUN)
+ .2byte EC_MOVE2(WATER_PULSE)
+ .2byte EC_MOVE2(WATER_SPORT)
+ .2byte EC_MOVE(WATER_SPOUT)
+ .2byte EC_WORD_WATER_VEIL
+ .2byte EC_MOVE2(WATERFALL)
+ .2byte EC_WORD_WAY
+ .2byte EC_WORD_WE
+ .2byte EC_WORD_WE_RE
+ .2byte EC_WORD_WE_VE
+ .2byte EC_WORD_WEAK
+ .2byte EC_WORD_WEAKENED
+ .2byte EC_MOVE(WEATHER_BALL)
+ .2byte EC_WORD_WEDNESDAY
+ .2byte EC_POKEMON2(WEEDLE)
+ .2byte EC_WORD_WEEK
+ .2byte EC_POKEMON2(WEEPINBELL)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(WEEZING)
+ .2byte EC_POKEMON2(WEEZING)
+ .2byte EC_WORD_WEIRD
+ .2byte EC_WORD_WELCOME
+ .2byte EC_WORD_WELL
+ .2byte EC_WORD_WELL_THEN
+ .2byte EC_WORD_WENT
+ .2byte EC_WORD_WERE
+ .2byte EC_WORD_WEREN_T
+ .2byte EC_WORD_WHAT
+ .2byte EC_WORD_WHAT_S_UP_QUES
+ .2byte EC_WORD_WHEN
+ .2byte EC_WORD_WHEN_I_WIN
+ .2byte EC_WORD_WHERE
+ .2byte EC_WORD_WHICH
+ .2byte EC_WORD_WHILE
+ .2byte EC_MOVE(WHIRLPOOL)
+ .2byte EC_MOVE2(WHIRLWIND)
+ .2byte EC_POKEMON(WHISCASH)
+ .2byte EC_POKEMON(WHISMUR)
+ .2byte EC_WORD_WHITE_SMOKE
+ .2byte EC_WORD_WHO
+ .2byte EC_WORD_WHO_IS
+ .2byte EC_WORD_WHO_WAS
+ .2byte EC_WORD_WHOAH
+ .2byte EC_WORD_WHOM
+ .2byte EC_WORD_WHOSE
+ .2byte EC_WORD_WHY
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(WIGGLYTUFF)
+ .2byte EC_POKEMON2(WIGGLYTUFF)
+ .2byte EC_WORD_WILD
+ .2byte EC_WORD_WILL
+ .2byte EC_WORD_WILL_BE_HERE
+ .2byte EC_MOVE(WILL_O_WISP)
+ .2byte EC_WORD_WIMPY
+ .2byte EC_WORD_WIN
+ .2byte EC_MOVE2(WING_ATTACK)
+ .2byte EC_POKEMON(WINGULL)
+ .2byte EC_WORD_WINNER
+ .2byte EC_WORD_WINS
+ .2byte EC_WORD_WINTER
+ .2byte EC_WORD_WIRELESS
+ .2byte EC_MOVE2(WISH)
+ .2byte EC_WORD_WITH
+ .2byte EC_MOVE(WITHDRAW)
+ .2byte EC_WORD_WITHOUT
+ .2byte EC_WORD_WOBBLY
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON(WOBBUFFET)
+ .2byte EC_POKEMON2(WOBBUFFET)
+ .2byte EC_WORD_WOMAN
+ .2byte EC_WORD_WON
+ .2byte EC_WORD_WON_T
+ .2byte EC_WORD_WONDER
+ .2byte EC_WORD_WONDER_GUARD
+ .2byte EC_POKEMON2(WOOPER)
+ .2byte EC_WORD_WORD
+ .2byte EC_WORD_WORK
+ .2byte EC_WORD_WORKING
+ .2byte EC_WORD_WORKS
+ .2byte EC_WORD_WORLD
+ .2byte EC_WORD_WORRY
+ .2byte EC_WORD_WOULD
+ .2byte EC_WORD_WOW
+ .2byte EC_WORD_WOWEE
+ .2byte EC_MOVE2(WRAP)
+ .2byte EC_WORD_WROOOAAR_EXCL
+ .2byte EC_POKEMON(WURMPLE)
+ .2byte EC_POKEMON(WYNAUT)
gEasyChatWordsByLetter_X:: @ 859DFB4
.2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 XATU
- ec_pokemon2 XATU
+ .2byte EC_POKEMON(XATU)
+ .2byte EC_POKEMON2(XATU)
gEasyChatWordsByLetter_Y:: @ 859DFBC
- ec_word YAHOO
- ec_pokemon2 YANMA
- ec_move1 YAWN
- ec_word YAY
- ec_word YEAH
- ec_word YEAH_YEAH
- ec_word YEEHAW_EXCL
- ec_word YES
- ec_word YES_SIR_EXCL
- ec_word YESTERDAY
- ec_word YET
- ec_word YO
- ec_word YOU
- ec_word YOU_RE
- ec_word YOU_VE
- ec_word YOUNG
- ec_word YOUR
- ec_word YOURS
- ec_word YUP
+ .2byte EC_WORD_YAHOO
+ .2byte EC_POKEMON2(YANMA)
+ .2byte EC_MOVE(YAWN)
+ .2byte EC_WORD_YAY
+ .2byte EC_WORD_YEAH
+ .2byte EC_WORD_YEAH_YEAH
+ .2byte EC_WORD_YEEHAW_EXCL
+ .2byte EC_WORD_YES
+ .2byte EC_WORD_YES_SIR_EXCL
+ .2byte EC_WORD_YESTERDAY
+ .2byte EC_WORD_YET
+ .2byte EC_WORD_YO
+ .2byte EC_WORD_YOU
+ .2byte EC_WORD_YOU_RE
+ .2byte EC_WORD_YOU_VE
+ .2byte EC_WORD_YOUNG
+ .2byte EC_WORD_YOUR
+ .2byte EC_WORD_YOURS
+ .2byte EC_WORD_YUP
gEasyChatWordsByLetter_Z:: @ 859DFE2
- ec_pokemon1 ZANGOOSE
- ec_move2 ZAP_CANNON
- ec_pokemon2 ZAPDOS
- ec_pokemon1 ZIGZAGOON
+ .2byte EC_POKEMON(ZANGOOSE)
+ .2byte EC_MOVE2(ZAP_CANNON)
+ .2byte EC_POKEMON2(ZAPDOS)
+ .2byte EC_POKEMON(ZIGZAGOON)
.2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon1 ZUBAT
- ec_pokemon2 ZUBAT
+ .2byte EC_POKEMON(ZUBAT)
+ .2byte EC_POKEMON2(ZUBAT)
gEasyChatWordsByLetter_UnusedJapaneseHi:: @ 859DFF2
- ec_pokemon2 CLEFFA
- ec_word AIYEEH
- ec_pokemon2 WEEDLE
- ec_word HERO
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon2 PIKACHU
- ec_pokemon1 PIKACHU
- ec_move2 LIGHT_SCREEN
- ec_word SHINE
- ec_word LOW
- ec_pokemon2 CLEFABLE
- ec_word FLYING
- ec_pokemon2 PIDGEOT
- ec_pokemon2 PIDGEOTTO
- ec_word LEFT
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon2 PICHU
- ec_pokemon1 PICHU
- ec_move2 SCRATCH
- ec_word SURPRISE
- ec_move2 HYPER_FANG
- ec_pokemon2 CLEFAIRY
- ec_word DROUGHT
- ec_word HIDDEN
- ec_word PERSON
- ec_word AWFUL
- ec_pokemon2 CHARMANDER
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon2 STARYU
- ec_pokemon1 STARYU
- ec_word ALONE
- ec_pokemon2 CYNDAQUIL
- ec_move2 EMBER
- ec_pokemon1 VIBRAVA
- ec_word BORED
- ec_pokemon2 SUNKERN
- ec_word SECRET
- ec_word SECRET_BASE
- ec_move2 SECRET_POWER
- ec_pokemon2 TEDDIURSA
- ec_word HIYAH
- ec_move2 DIZZY_PUNCH
- ec_word LIGHTNINGROD
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon2 VOLTORB
- ec_pokemon1 VOLTORB
- ec_word DAYTIME
- ec_move2 BULK_UP
- ec_word NAP
- ec_word HEROINE
- ec_pokemon1 FEEBAS
+ .2byte EC_POKEMON2(CLEFFA)
+ .2byte EC_WORD_AIYEEH
+ .2byte EC_POKEMON2(WEEDLE)
+ .2byte EC_WORD_HERO
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON2(PIKACHU)
+ .2byte EC_POKEMON(PIKACHU)
+ .2byte EC_MOVE2(LIGHT_SCREEN)
+ .2byte EC_WORD_SHINE
+ .2byte EC_WORD_LOW
+ .2byte EC_POKEMON2(CLEFABLE)
+ .2byte EC_WORD_FLYING
+ .2byte EC_POKEMON2(PIDGEOT)
+ .2byte EC_POKEMON2(PIDGEOTTO)
+ .2byte EC_WORD_LEFT
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON2(PICHU)
+ .2byte EC_POKEMON(PICHU)
+ .2byte EC_MOVE2(SCRATCH)
+ .2byte EC_WORD_SURPRISE
+ .2byte EC_MOVE2(HYPER_FANG)
+ .2byte EC_POKEMON2(CLEFAIRY)
+ .2byte EC_WORD_DROUGHT
+ .2byte EC_WORD_HIDDEN
+ .2byte EC_WORD_PERSON
+ .2byte EC_WORD_AWFUL
+ .2byte EC_POKEMON2(CHARMANDER)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON2(STARYU)
+ .2byte EC_POKEMON(STARYU)
+ .2byte EC_WORD_ALONE
+ .2byte EC_POKEMON2(CYNDAQUIL)
+ .2byte EC_MOVE2(EMBER)
+ .2byte EC_POKEMON(VIBRAVA)
+ .2byte EC_WORD_BORED
+ .2byte EC_POKEMON2(SUNKERN)
+ .2byte EC_WORD_SECRET
+ .2byte EC_WORD_SECRET_BASE
+ .2byte EC_MOVE2(SECRET_POWER)
+ .2byte EC_POKEMON2(TEDDIURSA)
+ .2byte EC_WORD_HIYAH
+ .2byte EC_MOVE2(DIZZY_PUNCH)
+ .2byte EC_WORD_LIGHTNINGROD
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON2(VOLTORB)
+ .2byte EC_POKEMON(VOLTORB)
+ .2byte EC_WORD_DAYTIME
+ .2byte EC_MOVE2(BULK_UP)
+ .2byte EC_WORD_NAP
+ .2byte EC_WORD_HEROINE
+ .2byte EC_POKEMON(FEEBAS)
gEasyChatWordsByLetter_UnusedJapaneseFu:: @ 859E060
- ec_word FIGHT
- ec_pokemon2 MOLTRES
- ec_word FASHION
- ec_word FEAR
- ec_word FEVER
- ec_move2 IMPRISON
- ec_pokemon2 FLAREON
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon2 ALAKAZAM
- ec_pokemon1 ALAKAZAM
- ec_pokemon2 MAGMAR
- ec_pokemon1 GRUMPIG
- ec_move2 FEATHER_DANCE
- ec_pokemon2 FORRETRESS
- ec_move2 WHIRLWIND
- ec_word COMPOUNDEYES
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon2 WIGGLYTUFF
- ec_pokemon1 WIGGLYTUFF
- ec_move2 BEAT_UP
- ec_word MYSTERY
- ec_pokemon2 IVYSAUR
- ec_pokemon2 BULBASAUR
- ec_word MARVEL_SCALE
- ec_word WONDER_GUARD
- ec_pokemon2 VENUSAUR
- ec_word LACKS
- ec_word RESUSCITATE
- ec_word SMACK
- ec_word FUFUFU
- ec_pokemon2 AERODACTYL
- ec_word WIMPY
- ec_pokemon2 MAGBY
- ec_word LOL
- ec_move2 BLIZZARD
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon2 IGGLYBUFF
- ec_pokemon1 IGGLYBUFF
- ec_word SNORT
- ec_move2 STOMP
- ec_word INSOMNIA
- ec_word WINTER
- ec_word LEVITATE
- ec_pokemon1 FLYGON
- ec_word PLUS
- ec_move2 BLAST_BURN
- ec_pokemon1 PLUSLE
- ec_pokemon2 UMBREON
- ec_move2 FLASH
- ec_word WOBBLY
- ec_move2 TEETER_DANCE
- ec_word PRETEND
- ec_pokemon2 ARTICUNO
- ec_word WANNABE
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon2 JIGGLYPUFF
- ec_pokemon1 JIGGLYPUFF
- ec_pokemon2 SNUBBULL
- ec_word SHAKY
- ec_move2 CRUSH_CLAW
- ec_move2 BLAZE_KICK
- ec_move2 PRESENT
- ec_word PRESSURE
- ec_word BLEND
- ec_word FRONTIER
- ec_word HUMPH
- ec_move2 ERUPTION
+ .2byte EC_WORD_FIGHT
+ .2byte EC_POKEMON2(MOLTRES)
+ .2byte EC_WORD_FASHION
+ .2byte EC_WORD_FEAR
+ .2byte EC_WORD_FEVER
+ .2byte EC_MOVE2(IMPRISON)
+ .2byte EC_POKEMON2(FLAREON)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON2(ALAKAZAM)
+ .2byte EC_POKEMON(ALAKAZAM)
+ .2byte EC_POKEMON2(MAGMAR)
+ .2byte EC_POKEMON(GRUMPIG)
+ .2byte EC_MOVE2(FEATHER_DANCE)
+ .2byte EC_POKEMON2(FORRETRESS)
+ .2byte EC_MOVE2(WHIRLWIND)
+ .2byte EC_WORD_COMPOUNDEYES
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON2(WIGGLYTUFF)
+ .2byte EC_POKEMON(WIGGLYTUFF)
+ .2byte EC_MOVE2(BEAT_UP)
+ .2byte EC_WORD_MYSTERY
+ .2byte EC_POKEMON2(IVYSAUR)
+ .2byte EC_POKEMON2(BULBASAUR)
+ .2byte EC_WORD_MARVEL_SCALE
+ .2byte EC_WORD_WONDER_GUARD
+ .2byte EC_POKEMON2(VENUSAUR)
+ .2byte EC_WORD_LACKS
+ .2byte EC_WORD_RESUSCITATE
+ .2byte EC_WORD_SMACK
+ .2byte EC_WORD_FUFUFU
+ .2byte EC_POKEMON2(AERODACTYL)
+ .2byte EC_WORD_WIMPY
+ .2byte EC_POKEMON2(MAGBY)
+ .2byte EC_WORD_LOL
+ .2byte EC_MOVE2(BLIZZARD)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON2(IGGLYBUFF)
+ .2byte EC_POKEMON(IGGLYBUFF)
+ .2byte EC_WORD_SNORT
+ .2byte EC_MOVE2(STOMP)
+ .2byte EC_WORD_INSOMNIA
+ .2byte EC_WORD_WINTER
+ .2byte EC_WORD_LEVITATE
+ .2byte EC_POKEMON(FLYGON)
+ .2byte EC_WORD_PLUS
+ .2byte EC_MOVE2(BLAST_BURN)
+ .2byte EC_POKEMON(PLUSLE)
+ .2byte EC_POKEMON2(UMBREON)
+ .2byte EC_MOVE2(FLASH)
+ .2byte EC_WORD_WOBBLY
+ .2byte EC_MOVE2(TEETER_DANCE)
+ .2byte EC_WORD_PRETEND
+ .2byte EC_POKEMON2(ARTICUNO)
+ .2byte EC_WORD_WANNABE
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON2(JIGGLYPUFF)
+ .2byte EC_POKEMON(JIGGLYPUFF)
+ .2byte EC_POKEMON2(SNUBBULL)
+ .2byte EC_WORD_SHAKY
+ .2byte EC_MOVE2(CRUSH_CLAW)
+ .2byte EC_MOVE2(BLAZE_KICK)
+ .2byte EC_MOVE2(PRESENT)
+ .2byte EC_WORD_PRESSURE
+ .2byte EC_WORD_BLEND
+ .2byte EC_WORD_FRONTIER
+ .2byte EC_WORD_HUMPH
+ .2byte EC_MOVE2(ERUPTION)
gEasyChatWordsByLetter_UnusedJapaneseHe:: @ 859E0EE
- ec_word HEY
- ec_pokemon1 CORPHISH
- ec_word BABY
- ec_pokemon2 BAYLEEF
- ec_word BEST
- ec_word LOUSY
- ec_word HEHEHE
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon2 GRIMER
- ec_pokemon1 GRIMER
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon2 MUK
- ec_pokemon1 MUK
- ec_word LIQUID_OOZE
- ec_move2 SLUDGE
- ec_move2 SLUDGE_BOMB
- ec_move2 GLARE
- ec_word HEH
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon2 HERACROSS
- ec_pokemon1 HERACROSS
- ec_pokemon1 PELIPPER
- ec_pokemon2 HOUNDOOM
- ec_pokemon2 PERSIAN
- ec_word RIPPED
- ec_pokemon2 LICKITUNG
- ec_word STUDY
- ec_word COLOR_CHANGE
- ec_move2 TRANSFORM
+ .2byte EC_WORD_HEY
+ .2byte EC_POKEMON(CORPHISH)
+ .2byte EC_WORD_BABY
+ .2byte EC_POKEMON2(BAYLEEF)
+ .2byte EC_WORD_BEST
+ .2byte EC_WORD_LOUSY
+ .2byte EC_WORD_HEHEHE
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON2(GRIMER)
+ .2byte EC_POKEMON(GRIMER)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON2(MUK)
+ .2byte EC_POKEMON(MUK)
+ .2byte EC_WORD_LIQUID_OOZE
+ .2byte EC_MOVE2(SLUDGE)
+ .2byte EC_MOVE2(SLUDGE_BOMB)
+ .2byte EC_MOVE2(GLARE)
+ .2byte EC_WORD_HEH
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON2(HERACROSS)
+ .2byte EC_POKEMON(HERACROSS)
+ .2byte EC_POKEMON(PELIPPER)
+ .2byte EC_POKEMON2(HOUNDOOM)
+ .2byte EC_POKEMON2(PERSIAN)
+ .2byte EC_WORD_RIPPED
+ .2byte EC_POKEMON2(LICKITUNG)
+ .2byte EC_WORD_STUDY
+ .2byte EC_WORD_COLOR_CHANGE
+ .2byte EC_MOVE2(TRANSFORM)
gEasyChatWordsByLetter_UnusedJapaneseHo:: @ 859E12E
- ec_move2 POISON_TAIL
- ec_word POINTS
- ec_pokemon2 HO_OH
- ec_word SOUNDPROOF
- ec_word ADVENTURE
- ec_word EFFECT_SPORE
- ec_move2 ROAR
- ec_pokemon1 WAILORD
- ec_pokemon1 WAILMER
- ec_word DUDE
- ec_word BOARD
- ec_pokemon2 HOOTHOOT
- ec_pokemon1 SALAMENCE
- ec_word BALL
- ec_move2 BONE_RUSH
- ec_word THEY
- ec_word THEY_WERE
- ec_word TO_THEM
- ec_word THEIR
- ec_word THEY_RE
- ec_word THEY_VE
- ec_word POKENAV
- ec_word POKEMON
- ec_word GET
- ec_word POKEDEX
- ec_word PKRS
- ec_move2 CAMOUFLAGE
- ec_word WANT
- ec_move2 COVET
- ec_pokemon1 AGGRON
- ec_move2 TAIL_GLOW
- ec_pokemon1 POOCHYENA
- ec_pokemon2 PIDGEY
- ec_word AS_MUCH_AS
- ec_pokemon2 PONYTA
- ec_move2 BONE_CLUB
- ec_move2 BONEMERANG
- ec_word FIRE
- ec_move2 FIRE_SPIN
- ec_word FLAME_BODY
- ec_move2 FIRE_PUNCH
- ec_pokemon2 SKIPLOOM
- ec_word HOHOHO
- ec_word PRAISE
- ec_word UH_HUH
- ec_pokemon2 PORYGON
- ec_pokemon2 PORYGON2
- ec_move2 VOLT_TACKLE
- ec_word POKEBLOCK
- ec_move2 PERISH_SONG
- ec_word SHREDDED
- ec_pokemon1 CASTFORM
- ec_word BOOK
- ec_word SERIOUS
- ec_word REALLY
+ .2byte EC_MOVE2(POISON_TAIL)
+ .2byte EC_WORD_POINTS
+ .2byte EC_POKEMON2(HO_OH)
+ .2byte EC_WORD_SOUNDPROOF
+ .2byte EC_WORD_ADVENTURE
+ .2byte EC_WORD_EFFECT_SPORE
+ .2byte EC_MOVE2(ROAR)
+ .2byte EC_POKEMON(WAILORD)
+ .2byte EC_POKEMON(WAILMER)
+ .2byte EC_WORD_DUDE
+ .2byte EC_WORD_BOARD
+ .2byte EC_POKEMON2(HOOTHOOT)
+ .2byte EC_POKEMON(SALAMENCE)
+ .2byte EC_WORD_BALL
+ .2byte EC_MOVE2(BONE_RUSH)
+ .2byte EC_WORD_THEY
+ .2byte EC_WORD_THEY_WERE
+ .2byte EC_WORD_TO_THEM
+ .2byte EC_WORD_THEIR
+ .2byte EC_WORD_THEY_RE
+ .2byte EC_WORD_THEY_VE
+ .2byte EC_WORD_POKENAV
+ .2byte EC_WORD_POKEMON
+ .2byte EC_WORD_GET
+ .2byte EC_WORD_POKEDEX
+ .2byte EC_WORD_PKRS
+ .2byte EC_MOVE2(CAMOUFLAGE)
+ .2byte EC_WORD_WANT
+ .2byte EC_MOVE2(COVET)
+ .2byte EC_POKEMON(AGGRON)
+ .2byte EC_MOVE2(TAIL_GLOW)
+ .2byte EC_POKEMON(POOCHYENA)
+ .2byte EC_POKEMON2(PIDGEY)
+ .2byte EC_WORD_AS_MUCH_AS
+ .2byte EC_POKEMON2(PONYTA)
+ .2byte EC_MOVE2(BONE_CLUB)
+ .2byte EC_MOVE2(BONEMERANG)
+ .2byte EC_WORD_FIRE
+ .2byte EC_MOVE2(FIRE_SPIN)
+ .2byte EC_WORD_FLAME_BODY
+ .2byte EC_MOVE2(FIRE_PUNCH)
+ .2byte EC_POKEMON2(SKIPLOOM)
+ .2byte EC_WORD_HOHOHO
+ .2byte EC_WORD_PRAISE
+ .2byte EC_WORD_UH_HUH
+ .2byte EC_POKEMON2(PORYGON)
+ .2byte EC_POKEMON2(PORYGON2)
+ .2byte EC_MOVE2(VOLT_TACKLE)
+ .2byte EC_WORD_POKEBLOCK
+ .2byte EC_MOVE2(PERISH_SONG)
+ .2byte EC_WORD_SHREDDED
+ .2byte EC_POKEMON(CASTFORM)
+ .2byte EC_WORD_BOOK
+ .2byte EC_WORD_SERIOUS
+ .2byte EC_WORD_REALLY
gEasyChatWordsByLetter_UnusedJapaneseMa:: @ 859E19C
- ec_word OH_DEAR
- ec_word IN
- ec_word GIVE_UP
- ec_word MINUS
- ec_pokemon1 MINUN
- ec_word DAILY
- ec_word OWN_TEMPO
- ec_move2 WRAP
- ec_move2 SPIKES
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon2 MAGCARGO
- ec_pokemon1 MAGCARGO
- ec_move2 MAGNITUDE
- ec_pokemon1 MAKUHITA
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon2 SLUGMA
- ec_pokemon1 SLUGMA
- ec_word MAGMA_ARMOR
- ec_pokemon2 QUILAVA
- ec_word OVERDO
- ec_word LOSS
- ec_word IF_I_LOSE
- ec_word LOST
- ec_word LOSE
- ec_word TRULY
- ec_word SERIOUSLY
- ec_move2 MAGICAL_LEAF
- ec_move2 MAGIC_COAT
- ec_word MACHINE
- ec_word OUT
- ec_word MASTER
- ec_word INCREASING
- ec_word TOO
- ec_word LIKE
- ec_pokemon2 BELLSPROUT
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon2 WEEZING
- ec_pokemon1 WEEZING
- ec_word SMELL
- ec_word YET
- ec_word MISTAKE
- ec_pokemon1 LINOONE
- ec_word TOTALLY
- ec_move2 MUD_SHOT
- ec_move2 MACH_PUNCH
- ec_word FESTIVAL
- ec_word UNTIL
- ec_word WAIT
- ec_word GUARD
- ec_move2 PROTECT
- ec_pokemon1 CASCOON
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon2 MARILL
- ec_pokemon1 MARILL
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon2 AZUMARILL
- ec_pokemon1 AZUMARILL
- ec_move2 DEFENSE_CURL
- ec_word AS_IF
- ec_pokemon1 SWALOT
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon2 ELECTRODE
- ec_pokemon1 ELECTRODE
- ec_move2 ROLLING_KICK
- ec_word COMICS
- ec_pokemon2 MANKEY
- ec_word SATISFIED
- ec_pokemon2 MANTINE
+ .2byte EC_WORD_OH_DEAR
+ .2byte EC_WORD_IN
+ .2byte EC_WORD_GIVE_UP
+ .2byte EC_WORD_MINUS
+ .2byte EC_POKEMON(MINUN)
+ .2byte EC_WORD_DAILY
+ .2byte EC_WORD_OWN_TEMPO
+ .2byte EC_MOVE2(WRAP)
+ .2byte EC_MOVE2(SPIKES)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON2(MAGCARGO)
+ .2byte EC_POKEMON(MAGCARGO)
+ .2byte EC_MOVE2(MAGNITUDE)
+ .2byte EC_POKEMON(MAKUHITA)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON2(SLUGMA)
+ .2byte EC_POKEMON(SLUGMA)
+ .2byte EC_WORD_MAGMA_ARMOR
+ .2byte EC_POKEMON2(QUILAVA)
+ .2byte EC_WORD_OVERDO
+ .2byte EC_WORD_LOSS
+ .2byte EC_WORD_IF_I_LOSE
+ .2byte EC_WORD_LOST
+ .2byte EC_WORD_LOSE
+ .2byte EC_WORD_TRULY
+ .2byte EC_WORD_SERIOUSLY
+ .2byte EC_MOVE2(MAGICAL_LEAF)
+ .2byte EC_MOVE2(MAGIC_COAT)
+ .2byte EC_WORD_MACHINE
+ .2byte EC_WORD_OUT
+ .2byte EC_WORD_MASTER
+ .2byte EC_WORD_INCREASING
+ .2byte EC_WORD_TOO
+ .2byte EC_WORD_LIKE
+ .2byte EC_POKEMON2(BELLSPROUT)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON2(WEEZING)
+ .2byte EC_POKEMON(WEEZING)
+ .2byte EC_WORD_SMELL
+ .2byte EC_WORD_YET
+ .2byte EC_WORD_MISTAKE
+ .2byte EC_POKEMON(LINOONE)
+ .2byte EC_WORD_TOTALLY
+ .2byte EC_MOVE2(MUD_SHOT)
+ .2byte EC_MOVE2(MACH_PUNCH)
+ .2byte EC_WORD_FESTIVAL
+ .2byte EC_WORD_UNTIL
+ .2byte EC_WORD_WAIT
+ .2byte EC_WORD_GUARD
+ .2byte EC_MOVE2(PROTECT)
+ .2byte EC_POKEMON(CASCOON)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON2(MARILL)
+ .2byte EC_POKEMON(MARILL)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON2(AZUMARILL)
+ .2byte EC_POKEMON(AZUMARILL)
+ .2byte EC_MOVE2(DEFENSE_CURL)
+ .2byte EC_WORD_AS_IF
+ .2byte EC_POKEMON(SWALOT)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON2(ELECTRODE)
+ .2byte EC_POKEMON(ELECTRODE)
+ .2byte EC_MOVE2(ROLLING_KICK)
+ .2byte EC_WORD_COMICS
+ .2byte EC_POKEMON2(MANKEY)
+ .2byte EC_WORD_SATISFIED
+ .2byte EC_POKEMON2(MANTINE)
gEasyChatWordsByLetter_UnusedJapaneseMi:: @ 859E230
- ec_word PARTNER
- ec_move2 SUBSTITUTE
- ec_word RIGHT
- ec_move2 DETECT
- ec_move2 PIN_MISSILE
- ec_word WATER
- ec_move2 WATER_SPORT
- ec_pokemon1 MUDKIP
- ec_move2 WATER_GUN
- ec_move2 MIST_BALL
- ec_move2 WATER_PULSE
- ec_word WATER_VEIL
- ec_word SHOW
- ec_word SEE
- ec_word DID
- ec_move2 FURY_ATTACK
- ec_move2 FURY_SWIPES
- ec_move2 DESTINY_BOND
- ec_word LOOKS
- ec_word REJECT
- ec_word ACCEPT
- ec_pokemon2 DRATINI
- ec_move2 FALSE_SWIPE
- ec_move2 FORESIGHT
- ec_pokemon2 MEW
- ec_pokemon2 MEWTWO
- ec_move2 MIRROR_COAT
- ec_move2 FUTURE_SIGHT
- ec_word SEES
- ec_move2 MILK_DRINK
- ec_pokemon2 MILTANK
- ec_pokemon1 MILOTIC
- ec_word WE
- ec_word BEEN
- ec_word TO_US
- ec_word OUR
- ec_word WE_RE
+ .2byte EC_WORD_PARTNER
+ .2byte EC_MOVE2(SUBSTITUTE)
+ .2byte EC_WORD_RIGHT
+ .2byte EC_MOVE2(DETECT)
+ .2byte EC_MOVE2(PIN_MISSILE)
+ .2byte EC_WORD_WATER
+ .2byte EC_MOVE2(WATER_SPORT)
+ .2byte EC_POKEMON(MUDKIP)
+ .2byte EC_MOVE2(WATER_GUN)
+ .2byte EC_MOVE2(MIST_BALL)
+ .2byte EC_MOVE2(WATER_PULSE)
+ .2byte EC_WORD_WATER_VEIL
+ .2byte EC_WORD_SHOW
+ .2byte EC_WORD_SEE
+ .2byte EC_WORD_DID
+ .2byte EC_MOVE2(FURY_ATTACK)
+ .2byte EC_MOVE2(FURY_SWIPES)
+ .2byte EC_MOVE2(DESTINY_BOND)
+ .2byte EC_WORD_LOOKS
+ .2byte EC_WORD_REJECT
+ .2byte EC_WORD_ACCEPT
+ .2byte EC_POKEMON2(DRATINI)
+ .2byte EC_MOVE2(FALSE_SWIPE)
+ .2byte EC_MOVE2(FORESIGHT)
+ .2byte EC_POKEMON2(MEW)
+ .2byte EC_POKEMON2(MEWTWO)
+ .2byte EC_MOVE2(MIRROR_COAT)
+ .2byte EC_MOVE2(FUTURE_SIGHT)
+ .2byte EC_WORD_SEES
+ .2byte EC_MOVE2(MILK_DRINK)
+ .2byte EC_POKEMON2(MILTANK)
+ .2byte EC_POKEMON(MILOTIC)
+ .2byte EC_WORD_WE
+ .2byte EC_WORD_BEEN
+ .2byte EC_WORD_TO_US
+ .2byte EC_WORD_OUR
+ .2byte EC_WORD_WE_RE
gEasyChatWordsByLetter_UnusedJapaneseMu:: @ 859E27A
- ec_word MOOD
- ec_pokemon2 MISDREAVUS
- ec_word OLDEN
- ec_word ARRGH
- ec_word BUG
- ec_word SWARM
- ec_word RATHER
- ec_pokemon2 SMOOCHUM
- ec_word INVINCIBLE
- ec_word HEART
- ec_word MUFUFU
- ec_word MMM
+ .2byte EC_WORD_MOOD
+ .2byte EC_POKEMON2(MISDREAVUS)
+ .2byte EC_WORD_OLDEN
+ .2byte EC_WORD_ARRGH
+ .2byte EC_WORD_BUG
+ .2byte EC_WORD_SWARM
+ .2byte EC_WORD_RATHER
+ .2byte EC_POKEMON2(SMOOCHUM)
+ .2byte EC_WORD_INVINCIBLE
+ .2byte EC_WORD_HEART
+ .2byte EC_WORD_MUFUFU
+ .2byte EC_WORD_MMM
gEasyChatWordsByLetter_UnusedJapaneseMe:: @ 859E292
- ec_move2 CALM_MIND
- ec_word MAIL
- ec_move2 MEGA_DRAIN
- ec_move2 MEGA_KICK
- ec_move2 MEGA_PUNCH
- ec_pokemon2 MEGANIUM
- ec_move2 MEGAHORN
- ec_word SEEK
- ec_move2 HIDDEN_POWER
- ec_word RARE
- ec_pokemon1 METAGROSS
- ec_pokemon2 DITTO
- ec_move2 METAL_CLAW
- ec_pokemon1 METANG
- ec_word DESTROYED
- ec_word MESSAGE
- ec_word AWFULLY
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon2 TENTACOOL
- ec_pokemon1 TENTACOOL
- ec_word FIERY
- ec_pokemon2 MAREEP
- ec_move2 ATTRACT
- ec_word CUTE_CHARM
- ec_word IMMUNITY
+ .2byte EC_MOVE2(CALM_MIND)
+ .2byte EC_WORD_MAIL
+ .2byte EC_MOVE2(MEGA_DRAIN)
+ .2byte EC_MOVE2(MEGA_KICK)
+ .2byte EC_MOVE2(MEGA_PUNCH)
+ .2byte EC_POKEMON2(MEGANIUM)
+ .2byte EC_MOVE2(MEGAHORN)
+ .2byte EC_WORD_SEEK
+ .2byte EC_MOVE2(HIDDEN_POWER)
+ .2byte EC_WORD_RARE
+ .2byte EC_POKEMON(METAGROSS)
+ .2byte EC_POKEMON2(DITTO)
+ .2byte EC_MOVE2(METAL_CLAW)
+ .2byte EC_POKEMON(METANG)
+ .2byte EC_WORD_DESTROYED
+ .2byte EC_WORD_MESSAGE
+ .2byte EC_WORD_AWFULLY
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON2(TENTACOOL)
+ .2byte EC_POKEMON(TENTACOOL)
+ .2byte EC_WORD_FIERY
+ .2byte EC_POKEMON2(MAREEP)
+ .2byte EC_MOVE2(ATTRACT)
+ .2byte EC_WORD_CUTE_CHARM
+ .2byte EC_WORD_IMMUNITY
gEasyChatWordsByLetter_UnusedJapaneseMo:: @ 859E2C6
- ec_word ALMOST
- ec_word BLAZE
- ec_word NEARLY
- ec_word MODE
- ec_word OLD
- ec_word THURSDAY
- ec_pokemon2 FLAAFFY
- ec_word LISTENING
- ec_word OWN
- ec_word MORE
- ec_word DIDN_T
- ec_word PICKUP
- ec_move2 MIMIC
- ec_word TOO_LATE
- ec_word PATTERN
- ec_word FLASH_FIRE
- ec_word RECEIVED
- ec_pokemon2 VENOMOTH
- ec_word DOESN_T
- ec_pokemon2 TANGELA
+ .2byte EC_WORD_ALMOST
+ .2byte EC_WORD_BLAZE
+ .2byte EC_WORD_NEARLY
+ .2byte EC_WORD_MODE
+ .2byte EC_WORD_OLD
+ .2byte EC_WORD_THURSDAY
+ .2byte EC_POKEMON2(FLAAFFY)
+ .2byte EC_WORD_LISTENING
+ .2byte EC_WORD_OWN
+ .2byte EC_WORD_MORE
+ .2byte EC_WORD_DIDN_T
+ .2byte EC_WORD_PICKUP
+ .2byte EC_MOVE2(MIMIC)
+ .2byte EC_WORD_TOO_LATE
+ .2byte EC_WORD_PATTERN
+ .2byte EC_WORD_FLASH_FIRE
+ .2byte EC_WORD_RECEIVED
+ .2byte EC_POKEMON2(VENOMOTH)
+ .2byte EC_WORD_DOESN_T
+ .2byte EC_POKEMON2(TANGELA)
gEasyChatWordsByLetter_UnusedJapaneseYa:: @ 859E2EE
- ec_word HOO_HAH
- ec_word PROMISE
- ec_word KIND
- ec_pokemon1 BALTOY
- ec_word HOLIDAY
- ec_word NEGATIVE
- ec_move2 FRUSTRATION
- ec_word DONE
- ec_word FINALLY
- ec_word ANY
- ec_word YAHOO
- ec_pokemon2 SLOWKING
- ec_pokemon2 SLOWBRO
- ec_move2 LEECH_SEED
- ec_pokemon2 SLOWPOKE
- ec_word DANGER
- ec_pokemon2 MURKROW
- ec_pokemon1 SABLEYE
- ec_word DEFEATED
- ec_word BEAT
- ec_word VITAL_SPIRIT
- ec_pokemon1 VIGOROTH
- ec_word YOUNG
- ec_pokemon2 YANMA
+ .2byte EC_WORD_HOO_HAH
+ .2byte EC_WORD_PROMISE
+ .2byte EC_WORD_KIND
+ .2byte EC_POKEMON(BALTOY)
+ .2byte EC_WORD_HOLIDAY
+ .2byte EC_WORD_NEGATIVE
+ .2byte EC_MOVE2(FRUSTRATION)
+ .2byte EC_WORD_DONE
+ .2byte EC_WORD_FINALLY
+ .2byte EC_WORD_ANY
+ .2byte EC_WORD_YAHOO
+ .2byte EC_POKEMON2(SLOWKING)
+ .2byte EC_POKEMON2(SLOWBRO)
+ .2byte EC_MOVE2(LEECH_SEED)
+ .2byte EC_POKEMON2(SLOWPOKE)
+ .2byte EC_WORD_DANGER
+ .2byte EC_POKEMON2(MURKROW)
+ .2byte EC_POKEMON(SABLEYE)
+ .2byte EC_WORD_DEFEATED
+ .2byte EC_WORD_BEAT
+ .2byte EC_WORD_VITAL_SPIRIT
+ .2byte EC_POKEMON(VIGOROTH)
+ .2byte EC_WORD_YOUNG
+ .2byte EC_POKEMON2(YANMA)
gEasyChatWordsByLetter_UnusedJapaneseYu:: @ 859E31E
- ec_pokemon1 SNORUNT
- ec_word TAKE
- ec_word UNION
- ec_move2 METRONOME
- ec_word DREAM
- ec_move2 DREAM_EATER
- ec_word ALLOW
- ec_word FORGET
- ec_pokemon1 CRADILY
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon2 KADABRA
- ec_pokemon1 KADABRA
+ .2byte EC_POKEMON(SNORUNT)
+ .2byte EC_WORD_TAKE
+ .2byte EC_WORD_UNION
+ .2byte EC_MOVE2(METRONOME)
+ .2byte EC_WORD_DREAM
+ .2byte EC_MOVE2(DREAM_EATER)
+ .2byte EC_WORD_ALLOW
+ .2byte EC_WORD_FORGET
+ .2byte EC_POKEMON(CRADILY)
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON2(KADABRA)
+ .2byte EC_POKEMON(KADABRA)
gEasyChatWordsByLetter_UnusedJapaneseYo:: @ 859E338
- ec_word WITHOUT
- ec_word YO
- ec_move2 ACID
- ec_word COME_OVER
- ec_word KINDERGARTEN
- ec_word CHLOROPHYLL
- ec_word AFTER
- ec_pokemon2 LARVITAR
- ec_word OH_KAY
- ec_word BEFORE
- ec_word GREAT
- ec_move2 MEDITATE
- ec_word PURE_POWER
- ec_word WELL
- ec_move2 SNATCH
- ec_word OKAY
- ec_word PLANS
- ec_word NIGHTTIME
- ec_word WHILE
- ec_pokemon1 DUSKULL
- ec_word EASY
- ec_word INSTEAD
- ec_word NIGHT
- ec_pokemon2 NOCTOWL
- ec_word COUNT_ON
- ec_word WEAK
- ec_word TOO_WEAK
- ec_word WEAKENED
+ .2byte EC_WORD_WITHOUT
+ .2byte EC_WORD_YO
+ .2byte EC_MOVE2(ACID)
+ .2byte EC_WORD_COME_OVER
+ .2byte EC_WORD_KINDERGARTEN
+ .2byte EC_WORD_CHLOROPHYLL
+ .2byte EC_WORD_AFTER
+ .2byte EC_POKEMON2(LARVITAR)
+ .2byte EC_WORD_OH_KAY
+ .2byte EC_WORD_BEFORE
+ .2byte EC_WORD_GREAT
+ .2byte EC_MOVE2(MEDITATE)
+ .2byte EC_WORD_PURE_POWER
+ .2byte EC_WORD_WELL
+ .2byte EC_MOVE2(SNATCH)
+ .2byte EC_WORD_OKAY
+ .2byte EC_WORD_PLANS
+ .2byte EC_WORD_NIGHTTIME
+ .2byte EC_WORD_WHILE
+ .2byte EC_POKEMON(DUSKULL)
+ .2byte EC_WORD_EASY
+ .2byte EC_WORD_INSTEAD
+ .2byte EC_WORD_NIGHT
+ .2byte EC_POKEMON2(NOCTOWL)
+ .2byte EC_WORD_COUNT_ON
+ .2byte EC_WORD_WEAK
+ .2byte EC_WORD_TOO_WEAK
+ .2byte EC_WORD_WEAKENED
gEasyChatWordsByLetter_UnusedJapaneseRa:: @ 859E370
- ec_pokemon2 RAIKOU
- ec_word WEEK
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon2 RAICHU
- ec_pokemon1 RAICHU
- ec_word RIVAL
- ec_word LIFE
- ec_pokemon1 MANECTRIC
- ec_word SIMPLE
- ec_word PUSHOVER
- ec_pokemon1 SWAMPERT
- ec_pokemon1 ELECTRIKE
- ec_word SEEMS
- ec_word RADIO
- ec_move2 LUSTER_PURGE
- ec_pokemon2 CHANSEY
- ec_pokemon2 RATICATE
- ec_pokemon1 LATIAS
- ec_pokemon1 LATIOS
- ec_pokemon1 LUVDISC
- ec_pokemon2 LAPRAS
- ec_word LOVEY_DOVEY
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon2 VILEPLUME
- ec_pokemon1 VILEPLUME
- ec_word LALALA
- ec_pokemon1 RALTS
- ec_word FORGETS
- ec_word APPEARS
- ec_word RANK
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon2 LANTURN
- ec_pokemon1 LANTURN
+ .2byte EC_POKEMON2(RAIKOU)
+ .2byte EC_WORD_WEEK
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON2(RAICHU)
+ .2byte EC_POKEMON(RAICHU)
+ .2byte EC_WORD_RIVAL
+ .2byte EC_WORD_LIFE
+ .2byte EC_POKEMON(MANECTRIC)
+ .2byte EC_WORD_SIMPLE
+ .2byte EC_WORD_PUSHOVER
+ .2byte EC_POKEMON(SWAMPERT)
+ .2byte EC_POKEMON(ELECTRIKE)
+ .2byte EC_WORD_SEEMS
+ .2byte EC_WORD_RADIO
+ .2byte EC_MOVE2(LUSTER_PURGE)
+ .2byte EC_POKEMON2(CHANSEY)
+ .2byte EC_POKEMON2(RATICATE)
+ .2byte EC_POKEMON(LATIAS)
+ .2byte EC_POKEMON(LATIOS)
+ .2byte EC_POKEMON(LUVDISC)
+ .2byte EC_POKEMON2(LAPRAS)
+ .2byte EC_WORD_LOVEY_DOVEY
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON2(VILEPLUME)
+ .2byte EC_POKEMON(VILEPLUME)
+ .2byte EC_WORD_LALALA
+ .2byte EC_POKEMON(RALTS)
+ .2byte EC_WORD_FORGETS
+ .2byte EC_WORD_APPEARS
+ .2byte EC_WORD_RANK
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON2(LANTURN)
+ .2byte EC_POKEMON(LANTURN)
gEasyChatWordsByLetter_UnusedJapaneseRi:: @ 859E3B8
- ec_word LEADER
- ec_move2 LEAF_BLADE
- ec_pokemon2 CHARMELEON
- ec_pokemon2 CHARIZARD
- ec_move2 RECYCLE
- ec_move2 REFLECT
- ec_move2 REFRESH
- ec_move2 REVENGE
- ec_word RIBBON
- ec_word TRENDY
- ec_move2 DRAGON_RAGE
- ec_move2 DRAGON_BREATH
- ec_move2 DRAGON_DANCE
- ec_word VACATION
- ec_pokemon1 LILEEP
- ec_pokemon2 URSARING
- ec_word SHIELD_DUST
+ .2byte EC_WORD_LEADER
+ .2byte EC_MOVE2(LEAF_BLADE)
+ .2byte EC_POKEMON2(CHARMELEON)
+ .2byte EC_POKEMON2(CHARIZARD)
+ .2byte EC_MOVE2(RECYCLE)
+ .2byte EC_MOVE2(REFLECT)
+ .2byte EC_MOVE2(REFRESH)
+ .2byte EC_MOVE2(REVENGE)
+ .2byte EC_WORD_RIBBON
+ .2byte EC_WORD_TRENDY
+ .2byte EC_MOVE2(DRAGON_RAGE)
+ .2byte EC_MOVE2(DRAGON_BREATH)
+ .2byte EC_MOVE2(DRAGON_DANCE)
+ .2byte EC_WORD_VACATION
+ .2byte EC_POKEMON(LILEEP)
+ .2byte EC_POKEMON2(URSARING)
+ .2byte EC_WORD_SHIELD_DUST
gEasyChatWordsByLetter_UnusedJapaneseRu:: @ 859E3DA
- ec_pokemon2 JYNX
- ec_word ROOM
- ec_word RULE
- ec_pokemon2 LUGIA
- ec_word LOOK
- ec_pokemon1 LUNATONE
- ec_word RUBY
- ec_word THAN
- ec_pokemon1 AZURILL
- ec_pokemon1 LUDICOLO
- ec_word HAPPILY
+ .2byte EC_POKEMON2(JYNX)
+ .2byte EC_WORD_ROOM
+ .2byte EC_WORD_RULE
+ .2byte EC_POKEMON2(LUGIA)
+ .2byte EC_WORD_LOOK
+ .2byte EC_POKEMON(LUNATONE)
+ .2byte EC_WORD_RUBY
+ .2byte EC_WORD_THAN
+ .2byte EC_POKEMON(AZURILL)
+ .2byte EC_POKEMON(LUDICOLO)
+ .2byte EC_WORD_HAPPILY
gEasyChatWordsByLetter_UnusedJapaneseRe:: @ 859E3F0
.2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon2 MAGNETON
- ec_pokemon1 MAGNETON
- ec_move2 ICE_PUNCH
- ec_move2 ICE_BEAM
- ec_pokemon1 REGICE
- ec_pokemon1 REGISTEEL
- ec_pokemon1 REGIROCK
- ec_pokemon1 RAYQUAZA
- ec_word UGLY
- ec_pokemon2 LEDIAN
- ec_pokemon2 LEDYBA
- ec_word FANTASTIC
- ec_word LEVEL
- ec_move2 FURY_CUTTER
- ec_move2 COMET_PUNCH
- ec_word RENTAL
+ .2byte EC_POKEMON2(MAGNETON)
+ .2byte EC_POKEMON(MAGNETON)
+ .2byte EC_MOVE2(ICE_PUNCH)
+ .2byte EC_MOVE2(ICE_BEAM)
+ .2byte EC_POKEMON(REGICE)
+ .2byte EC_POKEMON(REGISTEEL)
+ .2byte EC_POKEMON(REGIROCK)
+ .2byte EC_POKEMON(RAYQUAZA)
+ .2byte EC_WORD_UGLY
+ .2byte EC_POKEMON2(LEDIAN)
+ .2byte EC_POKEMON2(LEDYBA)
+ .2byte EC_WORD_FANTASTIC
+ .2byte EC_WORD_LEVEL
+ .2byte EC_MOVE2(FURY_CUTTER)
+ .2byte EC_MOVE2(COMET_PUNCH)
+ .2byte EC_WORD_RENTAL
gEasyChatWordsByLetter_UnusedJapaneseRo:: @ 859E414
- ec_move2 SKULL_BASH
+ .2byte EC_MOVE2(SKULL_BASH)
.2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon2 VULPIX
- ec_pokemon1 VULPIX
- ec_pokemon1 ROSELIA
- ec_move2 LOCK_ON
- ec_move2 ROCK_BLAST
- ec_word ROMANTIC
- ec_word QUESTION
+ .2byte EC_POKEMON2(VULPIX)
+ .2byte EC_POKEMON(VULPIX)
+ .2byte EC_POKEMON(ROSELIA)
+ .2byte EC_MOVE2(LOCK_ON)
+ .2byte EC_MOVE2(ROCK_BLAST)
+ .2byte EC_WORD_ROMANTIC
+ .2byte EC_WORD_QUESTION
gEasyChatWordsByLetter_UnusedJapaneseWa:: @ 859E428
- ec_word YAY
- ec_word WORLD
- ec_word AWW
- ec_word WIRELESS
- ec_word WOWEE
- ec_pokemon1 COMBUSKEN
- ec_word UNDERSTAND
- ec_word UNDERSTANDS
- ec_word FAINT
- ec_word ANTICIPATION
- ec_word ONCE
- ec_word MOVE
- ec_word WE_VE
- ec_word FAINTED
- ec_word WOMAN
- ec_word SHE
- ec_word SHE_WAS
- ec_word TO_HER
- ec_word HERS
- ec_word SHE_IS
- ec_word SOME
- ec_pokemon2 JUMPLUFF
- ec_move2 COTTON_SPORE
- ec_word GWAH
- ec_pokemon2 TOTODILE
- ec_word WAHAHAHA
- ec_word ANYWHERE
- ec_move2 STRUGGLE
- ec_word BADLY
- .2byte -1, 2 @ doubled Pokémon species names
- ec_pokemon2 MACHOP
- ec_pokemon1 MACHOP
+ .2byte EC_WORD_YAY
+ .2byte EC_WORD_WORLD
+ .2byte EC_WORD_AWW
+ .2byte EC_WORD_WIRELESS
+ .2byte EC_WORD_WOWEE
+ .2byte EC_POKEMON(COMBUSKEN)
+ .2byte EC_WORD_UNDERSTAND
+ .2byte EC_WORD_UNDERSTANDS
+ .2byte EC_WORD_FAINT
+ .2byte EC_WORD_ANTICIPATION
+ .2byte EC_WORD_ONCE
+ .2byte EC_WORD_MOVE
+ .2byte EC_WORD_WE_VE
+ .2byte EC_WORD_FAINTED
+ .2byte EC_WORD_WOMAN
+ .2byte EC_WORD_SHE
+ .2byte EC_WORD_SHE_WAS
+ .2byte EC_WORD_TO_HER
+ .2byte EC_WORD_HERS
+ .2byte EC_WORD_SHE_IS
+ .2byte EC_WORD_SOME
+ .2byte EC_POKEMON2(JUMPLUFF)
+ .2byte EC_MOVE2(COTTON_SPORE)
+ .2byte EC_WORD_GWAH
+ .2byte EC_POKEMON2(TOTODILE)
+ .2byte EC_WORD_WAHAHAHA
+ .2byte EC_WORD_ANYWHERE
+ .2byte EC_MOVE2(STRUGGLE)
+ .2byte EC_WORD_BADLY
+ .2byte -1, 2 @ doubled Pokémon species names
+ .2byte EC_POKEMON2(MACHOP)
+ .2byte EC_POKEMON(MACHOP)
.align 2
gEasyChatWordsByLetterPointers:: @ 859E46C
diff --git a/data/trade.s b/data/trade.s
index 3150269b0..b392fbc24 100644
--- a/data/trade.s
+++ b/data/trade.s
@@ -3,6 +3,9 @@
.section .rodata
.align 2, 0
+
+gUnknown_0832C6A8:: @ 832C6A8
+ .incbin "baserom.gba", 0x32C6A8, 0x18
gUnknown_0832C6C0:: @ 832C6C0
.incbin "baserom.gba", 0x32c6c0, 0x1fe
diff --git a/data/unk_81BAD84.s b/data/unk_81BAD84.s
deleted file mode 100644
index de88365ac..000000000
--- a/data/unk_81BAD84.s
+++ /dev/null
@@ -1,7 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-gUnknown_08617128:: @ 8617128
- .incbin "baserom.gba", 0x617128, 0x48
diff --git a/data/wild_encounter.s b/data/wild_encounter.s
index e221c2f99..0b46e3d35 100644
--- a/data/wild_encounter.s
+++ b/data/wild_encounter.s
@@ -1,3 +1,4 @@
+#include "constants/species.h"
.include "asm/macros.inc"
.include "constants/constants.inc"
diff --git a/data/wild_mons.inc b/data/wild_mons.inc
index 3361a3975..83b73bc81 100644
--- a/data/wild_mons.inc
+++ b/data/wild_mons.inc
@@ -1,17 +1,17 @@
.align 2
gRoute101_LandMons:: @ 85507E4
- wild_mon WURMPLE, 2
- wild_mon POOCHYENA, 2
- wild_mon WURMPLE, 2
- wild_mon WURMPLE, 3
- wild_mon POOCHYENA, 3
- wild_mon POOCHYENA, 3
- wild_mon WURMPLE, 3
- wild_mon POOCHYENA, 3
- wild_mon ZIGZAGOON, 2
- wild_mon ZIGZAGOON, 2
- wild_mon ZIGZAGOON, 3
- wild_mon ZIGZAGOON, 3
+ wild_mon SPECIES_WURMPLE, 2
+ wild_mon SPECIES_POOCHYENA, 2
+ wild_mon SPECIES_WURMPLE, 2
+ wild_mon SPECIES_WURMPLE, 3
+ wild_mon SPECIES_POOCHYENA, 3
+ wild_mon SPECIES_POOCHYENA, 3
+ wild_mon SPECIES_WURMPLE, 3
+ wild_mon SPECIES_POOCHYENA, 3
+ wild_mon SPECIES_ZIGZAGOON, 2
+ wild_mon SPECIES_ZIGZAGOON, 2
+ wild_mon SPECIES_ZIGZAGOON, 3
+ wild_mon SPECIES_ZIGZAGOON, 3
.align 2
gRoute101_LandMonsInfo:: @ 8550814
@@ -20,18 +20,18 @@ gRoute101_LandMonsInfo:: @ 8550814
.align 2
gRoute102_LandMons:: @ 855081C
- wild_mon POOCHYENA, 3
- wild_mon WURMPLE, 3
- wild_mon POOCHYENA, 4
- wild_mon WURMPLE, 4
- wild_mon LOTAD, 3
- wild_mon LOTAD, 4
- wild_mon ZIGZAGOON, 3
- wild_mon ZIGZAGOON, 3
- wild_mon ZIGZAGOON, 4
- wild_mon RALTS, 4
- wild_mon ZIGZAGOON, 4
- wild_mon SEEDOT, 3
+ wild_mon SPECIES_POOCHYENA, 3
+ wild_mon SPECIES_WURMPLE, 3
+ wild_mon SPECIES_POOCHYENA, 4
+ wild_mon SPECIES_WURMPLE, 4
+ wild_mon SPECIES_LOTAD, 3
+ wild_mon SPECIES_LOTAD, 4
+ wild_mon SPECIES_ZIGZAGOON, 3
+ wild_mon SPECIES_ZIGZAGOON, 3
+ wild_mon SPECIES_ZIGZAGOON, 4
+ wild_mon SPECIES_RALTS, 4
+ wild_mon SPECIES_ZIGZAGOON, 4
+ wild_mon SPECIES_SEEDOT, 3
.align 2
gRoute102_LandMonsInfo:: @ 855084C
@@ -40,11 +40,11 @@ gRoute102_LandMonsInfo:: @ 855084C
.align 2
gRoute102_WaterMons:: @ 8550854
- wild_mon MARILL, 20, 30
- wild_mon MARILL, 10, 20
- wild_mon MARILL, 30, 35
- wild_mon MARILL, 5, 10
- wild_mon GOLDEEN, 20, 30
+ wild_mon SPECIES_MARILL, 20, 30
+ wild_mon SPECIES_MARILL, 10, 20
+ wild_mon SPECIES_MARILL, 30, 35
+ wild_mon SPECIES_MARILL, 5, 10
+ wild_mon SPECIES_GOLDEEN, 20, 30
.align 2
gRoute102_WaterMonsInfo:: @ 8550868
@@ -53,16 +53,16 @@ gRoute102_WaterMonsInfo:: @ 8550868
.align 2
gRoute102_FishingMons:: @ 8550870
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 30
- wild_mon CORPHISH, 10, 30
- wild_mon CORPHISH, 25, 30
- wild_mon CORPHISH, 30, 35
- wild_mon CORPHISH, 20, 25
- wild_mon CORPHISH, 35, 40
- wild_mon CORPHISH, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_GOLDEEN, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_GOLDEEN, 10, 30
+ wild_mon SPECIES_CORPHISH, 10, 30
+ wild_mon SPECIES_CORPHISH, 25, 30
+ wild_mon SPECIES_CORPHISH, 30, 35
+ wild_mon SPECIES_CORPHISH, 20, 25
+ wild_mon SPECIES_CORPHISH, 35, 40
+ wild_mon SPECIES_CORPHISH, 40, 45
.align 2
gRoute102_FishingMonsInfo:: @ 8550898
@@ -71,18 +71,18 @@ gRoute102_FishingMonsInfo:: @ 8550898
.align 2
gRoute103_LandMons:: @ 85508A0
- wild_mon POOCHYENA, 2
- wild_mon POOCHYENA, 3
- wild_mon POOCHYENA, 3
- wild_mon POOCHYENA, 4
- wild_mon WINGULL, 2
- wild_mon ZIGZAGOON, 3
- wild_mon ZIGZAGOON, 3
- wild_mon ZIGZAGOON, 4
- wild_mon WINGULL, 3
- wild_mon WINGULL, 3
- wild_mon WINGULL, 2
- wild_mon WINGULL, 4
+ wild_mon SPECIES_POOCHYENA, 2
+ wild_mon SPECIES_POOCHYENA, 3
+ wild_mon SPECIES_POOCHYENA, 3
+ wild_mon SPECIES_POOCHYENA, 4
+ wild_mon SPECIES_WINGULL, 2
+ wild_mon SPECIES_ZIGZAGOON, 3
+ wild_mon SPECIES_ZIGZAGOON, 3
+ wild_mon SPECIES_ZIGZAGOON, 4
+ wild_mon SPECIES_WINGULL, 3
+ wild_mon SPECIES_WINGULL, 3
+ wild_mon SPECIES_WINGULL, 2
+ wild_mon SPECIES_WINGULL, 4
.align 2
gRoute103_LandMonsInfo:: @ 85508D0
@@ -91,11 +91,11 @@ gRoute103_LandMonsInfo:: @ 85508D0
.align 2
gRoute103_WaterMons:: @ 85508D8
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_WINGULL, 10, 30
+ wild_mon SPECIES_WINGULL, 15, 25
+ wild_mon SPECIES_PELIPPER, 25, 30
+ wild_mon SPECIES_PELIPPER, 25, 30
.align 2
gRoute103_WaterMonsInfo:: @ 85508EC
@@ -104,16 +104,16 @@ gRoute103_WaterMonsInfo:: @ 85508EC
.align 2
gRoute103_FishingMons:: @ 85508F4
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_WAILMER, 10, 30
+ wild_mon SPECIES_SHARPEDO, 30, 35
+ wild_mon SPECIES_WAILMER, 30, 35
+ wild_mon SPECIES_WAILMER, 25, 30
+ wild_mon SPECIES_WAILMER, 35, 40
+ wild_mon SPECIES_WAILMER, 40, 45
.align 2
gRoute103_FishingMonsInfo:: @ 855091C
@@ -122,18 +122,18 @@ gRoute103_FishingMonsInfo:: @ 855091C
.align 2
gRoute104_LandMons:: @ 8550924
- wild_mon POOCHYENA, 4
- wild_mon WURMPLE, 4
- wild_mon POOCHYENA, 5
- wild_mon MARILL, 5
- wild_mon MARILL, 4
- wild_mon POOCHYENA, 5
- wild_mon TAILLOW, 4
- wild_mon TAILLOW, 5
- wild_mon WINGULL, 4
- wild_mon WINGULL, 4
- wild_mon WINGULL, 3
- wild_mon WINGULL, 5
+ wild_mon SPECIES_POOCHYENA, 4
+ wild_mon SPECIES_WURMPLE, 4
+ wild_mon SPECIES_POOCHYENA, 5
+ wild_mon SPECIES_MARILL, 5
+ wild_mon SPECIES_MARILL, 4
+ wild_mon SPECIES_POOCHYENA, 5
+ wild_mon SPECIES_TAILLOW, 4
+ wild_mon SPECIES_TAILLOW, 5
+ wild_mon SPECIES_WINGULL, 4
+ wild_mon SPECIES_WINGULL, 4
+ wild_mon SPECIES_WINGULL, 3
+ wild_mon SPECIES_WINGULL, 5
.align 2
gRoute104_LandMonsInfo:: @ 8550954
@@ -142,11 +142,11 @@ gRoute104_LandMonsInfo:: @ 8550954
.align 2
gRoute104_WaterMons:: @ 855095C
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
+ wild_mon SPECIES_WINGULL, 10, 30
+ wild_mon SPECIES_WINGULL, 15, 25
+ wild_mon SPECIES_WINGULL, 15, 25
+ wild_mon SPECIES_PELIPPER, 25, 30
+ wild_mon SPECIES_PELIPPER, 25, 30
.align 2
gRoute104_WaterMonsInfo:: @ 8550970
@@ -155,16 +155,16 @@ gRoute104_WaterMonsInfo:: @ 8550970
.align 2
gRoute104_FishingMons:: @ 8550978
- wild_mon MAGIKARP, 5, 10
- wild_mon MAGIKARP, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon MAGIKARP, 10, 30
- wild_mon MAGIKARP, 10, 30
- wild_mon MAGIKARP, 25, 30
- wild_mon MAGIKARP, 30, 35
- wild_mon MAGIKARP, 20, 25
- wild_mon MAGIKARP, 35, 40
- wild_mon MAGIKARP, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_MAGIKARP, 25, 30
+ wild_mon SPECIES_MAGIKARP, 30, 35
+ wild_mon SPECIES_MAGIKARP, 20, 25
+ wild_mon SPECIES_MAGIKARP, 35, 40
+ wild_mon SPECIES_MAGIKARP, 40, 45
.align 2
gRoute104_FishingMonsInfo:: @ 85509A0
@@ -173,11 +173,11 @@ gRoute104_FishingMonsInfo:: @ 85509A0
.align 2
gRoute105_WaterMons:: @ 85509A8
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_WINGULL, 10, 30
+ wild_mon SPECIES_WINGULL, 15, 25
+ wild_mon SPECIES_PELIPPER, 25, 30
+ wild_mon SPECIES_PELIPPER, 25, 30
.align 2
gRoute105_WaterMonsInfo:: @ 85509BC
@@ -186,16 +186,16 @@ gRoute105_WaterMonsInfo:: @ 85509BC
.align 2
gRoute105_FishingMons:: @ 85509C4
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_WAILMER, 10, 30
+ wild_mon SPECIES_WAILMER, 25, 30
+ wild_mon SPECIES_WAILMER, 30, 35
+ wild_mon SPECIES_WAILMER, 20, 25
+ wild_mon SPECIES_WAILMER, 35, 40
+ wild_mon SPECIES_WAILMER, 40, 45
.align 2
gRoute105_FishingMonsInfo:: @ 85509EC
@@ -204,18 +204,18 @@ gRoute105_FishingMonsInfo:: @ 85509EC
.align 2
gRoute110_LandMons:: @ 85509F4
- wild_mon POOCHYENA, 12
- wild_mon ELECTRIKE, 12
- wild_mon GULPIN, 12
- wild_mon ELECTRIKE, 13
- wild_mon MINUN, 13
- wild_mon ODDISH, 13
- wild_mon MINUN, 13
- wild_mon GULPIN, 13
- wild_mon WINGULL, 12
- wild_mon WINGULL, 12
- wild_mon PLUSLE, 12
- wild_mon PLUSLE, 13
+ wild_mon SPECIES_POOCHYENA, 12
+ wild_mon SPECIES_ELECTRIKE, 12
+ wild_mon SPECIES_GULPIN, 12
+ wild_mon SPECIES_ELECTRIKE, 13
+ wild_mon SPECIES_MINUN, 13
+ wild_mon SPECIES_ODDISH, 13
+ wild_mon SPECIES_MINUN, 13
+ wild_mon SPECIES_GULPIN, 13
+ wild_mon SPECIES_WINGULL, 12
+ wild_mon SPECIES_WINGULL, 12
+ wild_mon SPECIES_PLUSLE, 12
+ wild_mon SPECIES_PLUSLE, 13
.align 2
gRoute110_LandMonsInfo:: @ 8550A24
@@ -224,11 +224,11 @@ gRoute110_LandMonsInfo:: @ 8550A24
.align 2
gRoute110_WaterMons:: @ 8550A2C
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_WINGULL, 10, 30
+ wild_mon SPECIES_WINGULL, 15, 25
+ wild_mon SPECIES_PELIPPER, 25, 30
+ wild_mon SPECIES_PELIPPER, 25, 30
.align 2
gRoute110_WaterMonsInfo:: @ 8550A40
@@ -237,16 +237,16 @@ gRoute110_WaterMonsInfo:: @ 8550A40
.align 2
gRoute110_FishingMons:: @ 8550A48
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_WAILMER, 10, 30
+ wild_mon SPECIES_WAILMER, 25, 30
+ wild_mon SPECIES_WAILMER, 30, 35
+ wild_mon SPECIES_WAILMER, 20, 25
+ wild_mon SPECIES_WAILMER, 35, 40
+ wild_mon SPECIES_WAILMER, 40, 45
.align 2
gRoute110_FishingMonsInfo:: @ 8550A70
@@ -255,18 +255,18 @@ gRoute110_FishingMonsInfo:: @ 8550A70
.align 2
gRoute111_LandMons:: @ 8550A78
- wild_mon SANDSHREW, 20
- wild_mon TRAPINCH, 20
- wild_mon SANDSHREW, 21
- wild_mon TRAPINCH, 21
- wild_mon BALTOY, 19
- wild_mon BALTOY, 21
- wild_mon SANDSHREW, 19
- wild_mon TRAPINCH, 19
- wild_mon BALTOY, 20
- wild_mon CACNEA, 20
- wild_mon CACNEA, 22
- wild_mon CACNEA, 22
+ wild_mon SPECIES_SANDSHREW, 20
+ wild_mon SPECIES_TRAPINCH, 20
+ wild_mon SPECIES_SANDSHREW, 21
+ wild_mon SPECIES_TRAPINCH, 21
+ wild_mon SPECIES_BALTOY, 19
+ wild_mon SPECIES_BALTOY, 21
+ wild_mon SPECIES_SANDSHREW, 19
+ wild_mon SPECIES_TRAPINCH, 19
+ wild_mon SPECIES_BALTOY, 20
+ wild_mon SPECIES_CACNEA, 20
+ wild_mon SPECIES_CACNEA, 22
+ wild_mon SPECIES_CACNEA, 22
.align 2
gRoute111_LandMonsInfo:: @ 8550AA8
@@ -275,11 +275,11 @@ gRoute111_LandMonsInfo:: @ 8550AA8
.align 2
gRoute111_WaterMons:: @ 8550AB0
- wild_mon MARILL, 20, 30
- wild_mon MARILL, 10, 20
- wild_mon MARILL, 30, 35
- wild_mon MARILL, 5, 10
- wild_mon GOLDEEN, 20, 30
+ wild_mon SPECIES_MARILL, 20, 30
+ wild_mon SPECIES_MARILL, 10, 20
+ wild_mon SPECIES_MARILL, 30, 35
+ wild_mon SPECIES_MARILL, 5, 10
+ wild_mon SPECIES_GOLDEEN, 20, 30
.align 2
gRoute111_WaterMonsInfo:: @ 8550AC4
@@ -288,11 +288,11 @@ gRoute111_WaterMonsInfo:: @ 8550AC4
.align 2
gRoute111_RockSmashMons:: @ 8550ACC
- wild_mon GEODUDE, 10, 15
- wild_mon GEODUDE, 5, 10
- wild_mon GEODUDE, 15, 20
- wild_mon GEODUDE, 15, 20
- wild_mon GEODUDE, 15, 20
+ wild_mon SPECIES_GEODUDE, 10, 15
+ wild_mon SPECIES_GEODUDE, 5, 10
+ wild_mon SPECIES_GEODUDE, 15, 20
+ wild_mon SPECIES_GEODUDE, 15, 20
+ wild_mon SPECIES_GEODUDE, 15, 20
.align 2
gRoute111_RockSmashMonsInfo:: @ 8550AE0
@@ -301,16 +301,16 @@ gRoute111_RockSmashMonsInfo:: @ 8550AE0
.align 2
gRoute111_FishingMons:: @ 8550AE8
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 30
- wild_mon BARBOACH, 10, 30
- wild_mon BARBOACH, 25, 30
- wild_mon BARBOACH, 30, 35
- wild_mon BARBOACH, 20, 25
- wild_mon BARBOACH, 35, 40
- wild_mon BARBOACH, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_GOLDEEN, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_GOLDEEN, 10, 30
+ wild_mon SPECIES_BARBOACH, 10, 30
+ wild_mon SPECIES_BARBOACH, 25, 30
+ wild_mon SPECIES_BARBOACH, 30, 35
+ wild_mon SPECIES_BARBOACH, 20, 25
+ wild_mon SPECIES_BARBOACH, 35, 40
+ wild_mon SPECIES_BARBOACH, 40, 45
.align 2
gRoute111_FishingMonsInfo:: @ 8550B10
@@ -319,18 +319,18 @@ gRoute111_FishingMonsInfo:: @ 8550B10
.align 2
gRoute112_LandMons:: @ 8550B18
- wild_mon NUMEL, 15
- wild_mon NUMEL, 15
- wild_mon MARILL, 15
- wild_mon NUMEL, 14
- wild_mon NUMEL, 14
- wild_mon MARILL, 14
- wild_mon NUMEL, 16
- wild_mon MARILL, 16
- wild_mon NUMEL, 16
- wild_mon NUMEL, 16
- wild_mon NUMEL, 16
- wild_mon NUMEL, 16
+ wild_mon SPECIES_NUMEL, 15
+ wild_mon SPECIES_NUMEL, 15
+ wild_mon SPECIES_MARILL, 15
+ wild_mon SPECIES_NUMEL, 14
+ wild_mon SPECIES_NUMEL, 14
+ wild_mon SPECIES_MARILL, 14
+ wild_mon SPECIES_NUMEL, 16
+ wild_mon SPECIES_MARILL, 16
+ wild_mon SPECIES_NUMEL, 16
+ wild_mon SPECIES_NUMEL, 16
+ wild_mon SPECIES_NUMEL, 16
+ wild_mon SPECIES_NUMEL, 16
.align 2
gRoute112_LandMonsInfo:: @ 8550B48
@@ -339,18 +339,18 @@ gRoute112_LandMonsInfo:: @ 8550B48
.align 2
gRoute113_LandMons:: @ 8550B50
- wild_mon SPINDA, 15
- wild_mon SPINDA, 15
- wild_mon SLUGMA, 15
- wild_mon SPINDA, 14
- wild_mon SPINDA, 14
- wild_mon SLUGMA, 14
- wild_mon SPINDA, 16
- wild_mon SLUGMA, 16
- wild_mon SPINDA, 16
- wild_mon SKARMORY, 16
- wild_mon SPINDA, 16
- wild_mon SKARMORY, 16
+ wild_mon SPECIES_SPINDA, 15
+ wild_mon SPECIES_SPINDA, 15
+ wild_mon SPECIES_SLUGMA, 15
+ wild_mon SPECIES_SPINDA, 14
+ wild_mon SPECIES_SPINDA, 14
+ wild_mon SPECIES_SLUGMA, 14
+ wild_mon SPECIES_SPINDA, 16
+ wild_mon SPECIES_SLUGMA, 16
+ wild_mon SPECIES_SPINDA, 16
+ wild_mon SPECIES_SKARMORY, 16
+ wild_mon SPECIES_SPINDA, 16
+ wild_mon SPECIES_SKARMORY, 16
.align 2
gRoute113_LandMonsInfo:: @ 8550B80
@@ -359,18 +359,18 @@ gRoute113_LandMonsInfo:: @ 8550B80
.align 2
gRoute114_LandMons:: @ 8550B88
- wild_mon SWABLU, 16
- wild_mon LOTAD, 16
- wild_mon SWABLU, 17
- wild_mon SWABLU, 15
- wild_mon LOTAD, 15
- wild_mon LOMBRE, 16
- wild_mon LOMBRE, 16
- wild_mon LOMBRE, 18
- wild_mon SEVIPER, 17
- wild_mon SEVIPER, 15
- wild_mon SEVIPER, 17
- wild_mon NUZLEAF, 15
+ wild_mon SPECIES_SWABLU, 16
+ wild_mon SPECIES_LOTAD, 16
+ wild_mon SPECIES_SWABLU, 17
+ wild_mon SPECIES_SWABLU, 15
+ wild_mon SPECIES_LOTAD, 15
+ wild_mon SPECIES_LOMBRE, 16
+ wild_mon SPECIES_LOMBRE, 16
+ wild_mon SPECIES_LOMBRE, 18
+ wild_mon SPECIES_SEVIPER, 17
+ wild_mon SPECIES_SEVIPER, 15
+ wild_mon SPECIES_SEVIPER, 17
+ wild_mon SPECIES_NUZLEAF, 15
.align 2
gRoute114_LandMonsInfo:: @ 8550BB8
@@ -379,11 +379,11 @@ gRoute114_LandMonsInfo:: @ 8550BB8
.align 2
gRoute114_WaterMons:: @ 8550BC0
- wild_mon MARILL, 20, 30
- wild_mon MARILL, 10, 20
- wild_mon MARILL, 30, 35
- wild_mon MARILL, 5, 10
- wild_mon GOLDEEN, 20, 30
+ wild_mon SPECIES_MARILL, 20, 30
+ wild_mon SPECIES_MARILL, 10, 20
+ wild_mon SPECIES_MARILL, 30, 35
+ wild_mon SPECIES_MARILL, 5, 10
+ wild_mon SPECIES_GOLDEEN, 20, 30
.align 2
gRoute114_WaterMonsInfo:: @ 8550BD4
@@ -392,11 +392,11 @@ gRoute114_WaterMonsInfo:: @ 8550BD4
.align 2
gRoute114_RockSmashMons:: @ 8550BDC
- wild_mon GEODUDE, 10, 15
- wild_mon GEODUDE, 5, 10
- wild_mon GEODUDE, 15, 20
- wild_mon GEODUDE, 15, 20
- wild_mon GEODUDE, 15, 20
+ wild_mon SPECIES_GEODUDE, 10, 15
+ wild_mon SPECIES_GEODUDE, 5, 10
+ wild_mon SPECIES_GEODUDE, 15, 20
+ wild_mon SPECIES_GEODUDE, 15, 20
+ wild_mon SPECIES_GEODUDE, 15, 20
.align 2
gRoute114_RockSmashMonsInfo:: @ 8550BF0
@@ -405,16 +405,16 @@ gRoute114_RockSmashMonsInfo:: @ 8550BF0
.align 2
gRoute114_FishingMons:: @ 8550BF8
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 30
- wild_mon BARBOACH, 10, 30
- wild_mon BARBOACH, 25, 30
- wild_mon BARBOACH, 30, 35
- wild_mon BARBOACH, 20, 25
- wild_mon BARBOACH, 35, 40
- wild_mon BARBOACH, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_GOLDEEN, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_GOLDEEN, 10, 30
+ wild_mon SPECIES_BARBOACH, 10, 30
+ wild_mon SPECIES_BARBOACH, 25, 30
+ wild_mon SPECIES_BARBOACH, 30, 35
+ wild_mon SPECIES_BARBOACH, 20, 25
+ wild_mon SPECIES_BARBOACH, 35, 40
+ wild_mon SPECIES_BARBOACH, 40, 45
.align 2
gRoute114_FishingMonsInfo:: @ 8550C20
@@ -423,18 +423,18 @@ gRoute114_FishingMonsInfo:: @ 8550C20
.align 2
gRoute116_LandMons:: @ 8550C28
- wild_mon POOCHYENA, 6
- wild_mon WHISMUR, 6
- wild_mon NINCADA, 6
- wild_mon ABRA, 7
- wild_mon NINCADA, 7
- wild_mon TAILLOW, 6
- wild_mon TAILLOW, 7
- wild_mon TAILLOW, 8
- wild_mon POOCHYENA, 7
- wild_mon POOCHYENA, 8
- wild_mon SKITTY, 7
- wild_mon SKITTY, 8
+ wild_mon SPECIES_POOCHYENA, 6
+ wild_mon SPECIES_WHISMUR, 6
+ wild_mon SPECIES_NINCADA, 6
+ wild_mon SPECIES_ABRA, 7
+ wild_mon SPECIES_NINCADA, 7
+ wild_mon SPECIES_TAILLOW, 6
+ wild_mon SPECIES_TAILLOW, 7
+ wild_mon SPECIES_TAILLOW, 8
+ wild_mon SPECIES_POOCHYENA, 7
+ wild_mon SPECIES_POOCHYENA, 8
+ wild_mon SPECIES_SKITTY, 7
+ wild_mon SPECIES_SKITTY, 8
.align 2
gRoute116_LandMonsInfo:: @ 8550C58
@@ -443,18 +443,18 @@ gRoute116_LandMonsInfo:: @ 8550C58
.align 2
gRoute117_LandMons:: @ 8550C60
- wild_mon POOCHYENA, 13
- wild_mon ODDISH, 13
- wild_mon POOCHYENA, 14
- wild_mon ODDISH, 14
- wild_mon MARILL, 13
- wild_mon ODDISH, 13
- wild_mon ILLUMISE, 13
- wild_mon ILLUMISE, 13
- wild_mon ILLUMISE, 14
- wild_mon ILLUMISE, 14
- wild_mon VOLBEAT, 13
- wild_mon SEEDOT, 13
+ wild_mon SPECIES_POOCHYENA, 13
+ wild_mon SPECIES_ODDISH, 13
+ wild_mon SPECIES_POOCHYENA, 14
+ wild_mon SPECIES_ODDISH, 14
+ wild_mon SPECIES_MARILL, 13
+ wild_mon SPECIES_ODDISH, 13
+ wild_mon SPECIES_ILLUMISE, 13
+ wild_mon SPECIES_ILLUMISE, 13
+ wild_mon SPECIES_ILLUMISE, 14
+ wild_mon SPECIES_ILLUMISE, 14
+ wild_mon SPECIES_VOLBEAT, 13
+ wild_mon SPECIES_SEEDOT, 13
.align 2
gRoute117_LandMonsInfo:: @ 8550C90
@@ -463,11 +463,11 @@ gRoute117_LandMonsInfo:: @ 8550C90
.align 2
gRoute117_WaterMons:: @ 8550C98
- wild_mon MARILL, 20, 30
- wild_mon MARILL, 10, 20
- wild_mon MARILL, 30, 35
- wild_mon MARILL, 5, 10
- wild_mon GOLDEEN, 20, 30
+ wild_mon SPECIES_MARILL, 20, 30
+ wild_mon SPECIES_MARILL, 10, 20
+ wild_mon SPECIES_MARILL, 30, 35
+ wild_mon SPECIES_MARILL, 5, 10
+ wild_mon SPECIES_GOLDEEN, 20, 30
.align 2
gRoute117_WaterMonsInfo:: @ 8550CAC
@@ -476,16 +476,16 @@ gRoute117_WaterMonsInfo:: @ 8550CAC
.align 2
gRoute117_FishingMons:: @ 8550CB4
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 30
- wild_mon CORPHISH, 10, 30
- wild_mon CORPHISH, 25, 30
- wild_mon CORPHISH, 30, 35
- wild_mon CORPHISH, 20, 25
- wild_mon CORPHISH, 35, 40
- wild_mon CORPHISH, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_GOLDEEN, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_GOLDEEN, 10, 30
+ wild_mon SPECIES_CORPHISH, 10, 30
+ wild_mon SPECIES_CORPHISH, 25, 30
+ wild_mon SPECIES_CORPHISH, 30, 35
+ wild_mon SPECIES_CORPHISH, 20, 25
+ wild_mon SPECIES_CORPHISH, 35, 40
+ wild_mon SPECIES_CORPHISH, 40, 45
.align 2
gRoute117_FishingMonsInfo:: @ 8550CDC
@@ -494,18 +494,18 @@ gRoute117_FishingMonsInfo:: @ 8550CDC
.align 2
gRoute118_LandMons:: @ 8550CE4
- wild_mon ZIGZAGOON, 24
- wild_mon ELECTRIKE, 24
- wild_mon ZIGZAGOON, 26
- wild_mon ELECTRIKE, 26
- wild_mon LINOONE, 26
- wild_mon MANECTRIC, 26
- wild_mon WINGULL, 25
- wild_mon WINGULL, 25
- wild_mon WINGULL, 26
- wild_mon WINGULL, 26
- wild_mon WINGULL, 27
- wild_mon KECLEON, 25
+ wild_mon SPECIES_ZIGZAGOON, 24
+ wild_mon SPECIES_ELECTRIKE, 24
+ wild_mon SPECIES_ZIGZAGOON, 26
+ wild_mon SPECIES_ELECTRIKE, 26
+ wild_mon SPECIES_LINOONE, 26
+ wild_mon SPECIES_MANECTRIC, 26
+ wild_mon SPECIES_WINGULL, 25
+ wild_mon SPECIES_WINGULL, 25
+ wild_mon SPECIES_WINGULL, 26
+ wild_mon SPECIES_WINGULL, 26
+ wild_mon SPECIES_WINGULL, 27
+ wild_mon SPECIES_KECLEON, 25
.align 2
gRoute118_LandMonsInfo:: @ 8550D14
@@ -514,11 +514,11 @@ gRoute118_LandMonsInfo:: @ 8550D14
.align 2
gRoute118_WaterMons:: @ 8550D1C
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_WINGULL, 10, 30
+ wild_mon SPECIES_WINGULL, 15, 25
+ wild_mon SPECIES_PELIPPER, 25, 30
+ wild_mon SPECIES_PELIPPER, 25, 30
.align 2
gRoute118_WaterMonsInfo:: @ 8550D30
@@ -527,16 +527,16 @@ gRoute118_WaterMonsInfo:: @ 8550D30
.align 2
gRoute118_FishingMons:: @ 8550D38
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon CARVANHA, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon CARVANHA, 30, 35
- wild_mon CARVANHA, 20, 25
- wild_mon CARVANHA, 35, 40
- wild_mon CARVANHA, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_CARVANHA, 10, 30
+ wild_mon SPECIES_SHARPEDO, 30, 35
+ wild_mon SPECIES_CARVANHA, 30, 35
+ wild_mon SPECIES_CARVANHA, 20, 25
+ wild_mon SPECIES_CARVANHA, 35, 40
+ wild_mon SPECIES_CARVANHA, 40, 45
.align 2
gRoute118_FishingMonsInfo:: @ 8550D60
@@ -545,11 +545,11 @@ gRoute118_FishingMonsInfo:: @ 8550D60
.align 2
gRoute124_WaterMons:: @ 8550D68
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_WINGULL, 10, 30
+ wild_mon SPECIES_WINGULL, 15, 25
+ wild_mon SPECIES_PELIPPER, 25, 30
+ wild_mon SPECIES_PELIPPER, 25, 30
.align 2
gRoute124_WaterMonsInfo:: @ 8550D7C
@@ -558,16 +558,16 @@ gRoute124_WaterMonsInfo:: @ 8550D7C
.align 2
gRoute124_FishingMons:: @ 8550D84
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_WAILMER, 10, 30
+ wild_mon SPECIES_SHARPEDO, 30, 35
+ wild_mon SPECIES_WAILMER, 30, 35
+ wild_mon SPECIES_WAILMER, 25, 30
+ wild_mon SPECIES_WAILMER, 35, 40
+ wild_mon SPECIES_WAILMER, 40, 45
.align 2
gRoute124_FishingMonsInfo:: @ 8550DAC
@@ -576,18 +576,18 @@ gRoute124_FishingMonsInfo:: @ 8550DAC
.align 2
gPetalburgWoods_LandMons:: @ 8550DB4
- wild_mon POOCHYENA, 5
- wild_mon WURMPLE, 5
- wild_mon SHROOMISH, 5
- wild_mon POOCHYENA, 6
- wild_mon SILCOON, 5
- wild_mon CASCOON, 5
- wild_mon WURMPLE, 6
- wild_mon SHROOMISH, 6
- wild_mon TAILLOW, 5
- wild_mon SLAKOTH, 5
- wild_mon TAILLOW, 6
- wild_mon SLAKOTH, 6
+ wild_mon SPECIES_POOCHYENA, 5
+ wild_mon SPECIES_WURMPLE, 5
+ wild_mon SPECIES_SHROOMISH, 5
+ wild_mon SPECIES_POOCHYENA, 6
+ wild_mon SPECIES_SILCOON, 5
+ wild_mon SPECIES_CASCOON, 5
+ wild_mon SPECIES_WURMPLE, 6
+ wild_mon SPECIES_SHROOMISH, 6
+ wild_mon SPECIES_TAILLOW, 5
+ wild_mon SPECIES_SLAKOTH, 5
+ wild_mon SPECIES_TAILLOW, 6
+ wild_mon SPECIES_SLAKOTH, 6
.align 2
gPetalburgWoods_LandMonsInfo:: @ 8550DE4
@@ -596,18 +596,18 @@ gPetalburgWoods_LandMonsInfo:: @ 8550DE4
.align 2
gRusturfTunnel_LandMons:: @ 8550DEC
- wild_mon WHISMUR, 6
- wild_mon WHISMUR, 7
- wild_mon WHISMUR, 6
- wild_mon WHISMUR, 6
- wild_mon WHISMUR, 7
- wild_mon WHISMUR, 7
- wild_mon WHISMUR, 5
- wild_mon WHISMUR, 8
- wild_mon WHISMUR, 5
- wild_mon WHISMUR, 8
- wild_mon WHISMUR, 5
- wild_mon WHISMUR, 8
+ wild_mon SPECIES_WHISMUR, 6
+ wild_mon SPECIES_WHISMUR, 7
+ wild_mon SPECIES_WHISMUR, 6
+ wild_mon SPECIES_WHISMUR, 6
+ wild_mon SPECIES_WHISMUR, 7
+ wild_mon SPECIES_WHISMUR, 7
+ wild_mon SPECIES_WHISMUR, 5
+ wild_mon SPECIES_WHISMUR, 8
+ wild_mon SPECIES_WHISMUR, 5
+ wild_mon SPECIES_WHISMUR, 8
+ wild_mon SPECIES_WHISMUR, 5
+ wild_mon SPECIES_WHISMUR, 8
.align 2
gRusturfTunnel_LandMonsInfo:: @ 8550E1C
@@ -616,18 +616,18 @@ gRusturfTunnel_LandMonsInfo:: @ 8550E1C
.align 2
gGraniteCave_1F_LandMons:: @ 8550E24
- wild_mon ZUBAT, 7
- wild_mon MAKUHITA, 8
- wild_mon MAKUHITA, 7
- wild_mon ZUBAT, 8
- wild_mon MAKUHITA, 9
- wild_mon ABRA, 8
- wild_mon MAKUHITA, 10
- wild_mon MAKUHITA, 6
- wild_mon GEODUDE, 7
- wild_mon GEODUDE, 8
- wild_mon GEODUDE, 6
- wild_mon GEODUDE, 9
+ wild_mon SPECIES_ZUBAT, 7
+ wild_mon SPECIES_MAKUHITA, 8
+ wild_mon SPECIES_MAKUHITA, 7
+ wild_mon SPECIES_ZUBAT, 8
+ wild_mon SPECIES_MAKUHITA, 9
+ wild_mon SPECIES_ABRA, 8
+ wild_mon SPECIES_MAKUHITA, 10
+ wild_mon SPECIES_MAKUHITA, 6
+ wild_mon SPECIES_GEODUDE, 7
+ wild_mon SPECIES_GEODUDE, 8
+ wild_mon SPECIES_GEODUDE, 6
+ wild_mon SPECIES_GEODUDE, 9
.align 2
gGraniteCave_1F_LandMonsInfo:: @ 8550E54
@@ -636,18 +636,18 @@ gGraniteCave_1F_LandMonsInfo:: @ 8550E54
.align 2
gGraniteCave_B1F_LandMons:: @ 8550E5C
- wild_mon ZUBAT, 9
- wild_mon ARON, 10
- wild_mon ARON, 9
- wild_mon ARON, 11
- wild_mon ZUBAT, 10
- wild_mon ABRA, 9
- wild_mon MAKUHITA, 10
- wild_mon MAKUHITA, 11
- wild_mon SABLEYE, 10
- wild_mon SABLEYE, 10
- wild_mon SABLEYE, 9
- wild_mon SABLEYE, 11
+ wild_mon SPECIES_ZUBAT, 9
+ wild_mon SPECIES_ARON, 10
+ wild_mon SPECIES_ARON, 9
+ wild_mon SPECIES_ARON, 11
+ wild_mon SPECIES_ZUBAT, 10
+ wild_mon SPECIES_ABRA, 9
+ wild_mon SPECIES_MAKUHITA, 10
+ wild_mon SPECIES_MAKUHITA, 11
+ wild_mon SPECIES_SABLEYE, 10
+ wild_mon SPECIES_SABLEYE, 10
+ wild_mon SPECIES_SABLEYE, 9
+ wild_mon SPECIES_SABLEYE, 11
.align 2
gGraniteCave_B1F_LandMonsInfo:: @ 8550E8C
@@ -656,18 +656,18 @@ gGraniteCave_B1F_LandMonsInfo:: @ 8550E8C
.align 2
gMtPyre_1F_LandMons:: @ 8550E94
- wild_mon SHUPPET, 27
- wild_mon SHUPPET, 28
- wild_mon SHUPPET, 26
- wild_mon SHUPPET, 25
- wild_mon SHUPPET, 29
- wild_mon SHUPPET, 24
- wild_mon SHUPPET, 23
- wild_mon SHUPPET, 22
- wild_mon SHUPPET, 29
- wild_mon SHUPPET, 24
- wild_mon SHUPPET, 29
- wild_mon SHUPPET, 24
+ wild_mon SPECIES_SHUPPET, 27
+ wild_mon SPECIES_SHUPPET, 28
+ wild_mon SPECIES_SHUPPET, 26
+ wild_mon SPECIES_SHUPPET, 25
+ wild_mon SPECIES_SHUPPET, 29
+ wild_mon SPECIES_SHUPPET, 24
+ wild_mon SPECIES_SHUPPET, 23
+ wild_mon SPECIES_SHUPPET, 22
+ wild_mon SPECIES_SHUPPET, 29
+ wild_mon SPECIES_SHUPPET, 24
+ wild_mon SPECIES_SHUPPET, 29
+ wild_mon SPECIES_SHUPPET, 24
.align 2
gMtPyre_1F_LandMonsInfo:: @ 8550EC4
@@ -676,18 +676,18 @@ gMtPyre_1F_LandMonsInfo:: @ 8550EC4
.align 2
gVictoryRoad_1F_LandMons:: @ 8550ECC
- wild_mon GOLBAT, 40
- wild_mon HARIYAMA, 40
- wild_mon LAIRON, 40
- wild_mon LOUDRED, 40
- wild_mon ZUBAT, 36
- wild_mon MAKUHITA, 36
- wild_mon GOLBAT, 38
- wild_mon HARIYAMA, 38
- wild_mon ARON, 36
- wild_mon WHISMUR, 36
- wild_mon ARON, 36
- wild_mon WHISMUR, 36
+ wild_mon SPECIES_GOLBAT, 40
+ wild_mon SPECIES_HARIYAMA, 40
+ wild_mon SPECIES_LAIRON, 40
+ wild_mon SPECIES_LOUDRED, 40
+ wild_mon SPECIES_ZUBAT, 36
+ wild_mon SPECIES_MAKUHITA, 36
+ wild_mon SPECIES_GOLBAT, 38
+ wild_mon SPECIES_HARIYAMA, 38
+ wild_mon SPECIES_ARON, 36
+ wild_mon SPECIES_WHISMUR, 36
+ wild_mon SPECIES_ARON, 36
+ wild_mon SPECIES_WHISMUR, 36
.align 2
gVictoryRoad_1F_LandMonsInfo:: @ 8550EFC
@@ -696,18 +696,18 @@ gVictoryRoad_1F_LandMonsInfo:: @ 8550EFC
.align 2
gSafariZone_South_LandMons:: @ 8550F04
- wild_mon ODDISH, 25
- wild_mon ODDISH, 27
- wild_mon GIRAFARIG, 25
- wild_mon GIRAFARIG, 27
- wild_mon NATU, 25
- wild_mon DODUO, 25
- wild_mon GLOOM, 25
- wild_mon WOBBUFFET, 27
- wild_mon PIKACHU, 25
- wild_mon WOBBUFFET, 27
- wild_mon PIKACHU, 27
- wild_mon WOBBUFFET, 29
+ wild_mon SPECIES_ODDISH, 25
+ wild_mon SPECIES_ODDISH, 27
+ wild_mon SPECIES_GIRAFARIG, 25
+ wild_mon SPECIES_GIRAFARIG, 27
+ wild_mon SPECIES_NATU, 25
+ wild_mon SPECIES_DODUO, 25
+ wild_mon SPECIES_GLOOM, 25
+ wild_mon SPECIES_WOBBUFFET, 27
+ wild_mon SPECIES_PIKACHU, 25
+ wild_mon SPECIES_WOBBUFFET, 27
+ wild_mon SPECIES_PIKACHU, 27
+ wild_mon SPECIES_WOBBUFFET, 29
.align 2
gSafariZone_South_LandMonsInfo:: @ 8550F34
@@ -716,11 +716,11 @@ gSafariZone_South_LandMonsInfo:: @ 8550F34
.align 2
gUnderwater2_WaterMons:: @ 8550F3C
- wild_mon CLAMPERL, 20, 30
- wild_mon CHINCHOU, 20, 30
- wild_mon CLAMPERL, 30, 35
- wild_mon RELICANTH, 30, 35
- wild_mon RELICANTH, 30, 35
+ wild_mon SPECIES_CLAMPERL, 20, 30
+ wild_mon SPECIES_CHINCHOU, 20, 30
+ wild_mon SPECIES_CLAMPERL, 30, 35
+ wild_mon SPECIES_RELICANTH, 30, 35
+ wild_mon SPECIES_RELICANTH, 30, 35
.align 2
gUnderwater2_WaterMonsInfo:: @ 8550F50
@@ -729,11 +729,11 @@ gUnderwater2_WaterMonsInfo:: @ 8550F50
.align 2
gAbandonedShip_Rooms_B1F_WaterMons:: @ 8550F58
- wild_mon TENTACOOL, 5, 35
- wild_mon TENTACOOL, 5, 35
- wild_mon TENTACOOL, 5, 35
- wild_mon TENTACOOL, 5, 35
- wild_mon TENTACRUEL, 30, 35
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_TENTACRUEL, 30, 35
.align 2
gAbandonedShip_Rooms_B1F_WaterMonsInfo:: @ 8550F6C
@@ -742,16 +742,16 @@ gAbandonedShip_Rooms_B1F_WaterMonsInfo:: @ 8550F6C
.align 2
gAbandonedShip_Rooms_B1F_FishingMons:: @ 8550F74
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon TENTACOOL, 25, 30
- wild_mon TENTACOOL, 30, 35
- wild_mon TENTACRUEL, 30, 35
- wild_mon TENTACRUEL, 25, 30
- wild_mon TENTACRUEL, 20, 25
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_TENTACOOL, 25, 30
+ wild_mon SPECIES_TENTACOOL, 30, 35
+ wild_mon SPECIES_TENTACRUEL, 30, 35
+ wild_mon SPECIES_TENTACRUEL, 25, 30
+ wild_mon SPECIES_TENTACRUEL, 20, 25
.align 2
gAbandonedShip_Rooms_B1F_FishingMonsInfo:: @ 8550F9C
@@ -760,18 +760,18 @@ gAbandonedShip_Rooms_B1F_FishingMonsInfo:: @ 8550F9C
.align 2
gGraniteCave_B2F_LandMons:: @ 8550FA4
- wild_mon ZUBAT, 10
- wild_mon ARON, 11
- wild_mon ARON, 10
- wild_mon ZUBAT, 11
- wild_mon ARON, 12
- wild_mon ABRA, 10
- wild_mon SABLEYE, 10
- wild_mon SABLEYE, 11
- wild_mon SABLEYE, 12
- wild_mon SABLEYE, 10
- wild_mon SABLEYE, 12
- wild_mon SABLEYE, 10
+ wild_mon SPECIES_ZUBAT, 10
+ wild_mon SPECIES_ARON, 11
+ wild_mon SPECIES_ARON, 10
+ wild_mon SPECIES_ZUBAT, 11
+ wild_mon SPECIES_ARON, 12
+ wild_mon SPECIES_ABRA, 10
+ wild_mon SPECIES_SABLEYE, 10
+ wild_mon SPECIES_SABLEYE, 11
+ wild_mon SPECIES_SABLEYE, 12
+ wild_mon SPECIES_SABLEYE, 10
+ wild_mon SPECIES_SABLEYE, 12
+ wild_mon SPECIES_SABLEYE, 10
.align 2
gGraniteCave_B2F_LandMonsInfo:: @ 8550FD4
@@ -780,11 +780,11 @@ gGraniteCave_B2F_LandMonsInfo:: @ 8550FD4
.align 2
gGraniteCave_B2F_RockSmashMons:: @ 8550FDC
- wild_mon GEODUDE, 10, 15
- wild_mon NOSEPASS, 10, 20
- wild_mon GEODUDE, 5, 10
- wild_mon GEODUDE, 15, 20
- wild_mon GEODUDE, 15, 20
+ wild_mon SPECIES_GEODUDE, 10, 15
+ wild_mon SPECIES_NOSEPASS, 10, 20
+ wild_mon SPECIES_GEODUDE, 5, 10
+ wild_mon SPECIES_GEODUDE, 15, 20
+ wild_mon SPECIES_GEODUDE, 15, 20
.align 2
gGraniteCave_B2F_RockSmashMonsInfo:: @ 8550FF0
@@ -793,18 +793,18 @@ gGraniteCave_B2F_RockSmashMonsInfo:: @ 8550FF0
.align 2
gFieryPath_LandMons:: @ 8550FF8
- wild_mon NUMEL, 15
- wild_mon KOFFING, 15
- wild_mon NUMEL, 16
- wild_mon MACHOP, 15
- wild_mon TORKOAL, 15
- wild_mon SLUGMA, 15
- wild_mon KOFFING, 16
- wild_mon MACHOP, 16
- wild_mon TORKOAL, 14
- wild_mon TORKOAL, 16
- wild_mon GRIMER, 14
- wild_mon GRIMER, 14
+ wild_mon SPECIES_NUMEL, 15
+ wild_mon SPECIES_KOFFING, 15
+ wild_mon SPECIES_NUMEL, 16
+ wild_mon SPECIES_MACHOP, 15
+ wild_mon SPECIES_TORKOAL, 15
+ wild_mon SPECIES_SLUGMA, 15
+ wild_mon SPECIES_KOFFING, 16
+ wild_mon SPECIES_MACHOP, 16
+ wild_mon SPECIES_TORKOAL, 14
+ wild_mon SPECIES_TORKOAL, 16
+ wild_mon SPECIES_GRIMER, 14
+ wild_mon SPECIES_GRIMER, 14
.align 2
gFieryPath_LandMonsInfo:: @ 8551028
@@ -813,18 +813,18 @@ gFieryPath_LandMonsInfo:: @ 8551028
.align 2
gMeteorFalls_B1F_2R_LandMons:: @ 8551030
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 35
- wild_mon BAGON, 30
- wild_mon SOLROCK, 35
- wild_mon BAGON, 35
- wild_mon SOLROCK, 37
- wild_mon BAGON, 25
- wild_mon SOLROCK, 39
- wild_mon GOLBAT, 38
- wild_mon GOLBAT, 40
- wild_mon GOLBAT, 38
- wild_mon GOLBAT, 40
+ wild_mon SPECIES_GOLBAT, 33
+ wild_mon SPECIES_GOLBAT, 35
+ wild_mon SPECIES_BAGON, 30
+ wild_mon SPECIES_SOLROCK, 35
+ wild_mon SPECIES_BAGON, 35
+ wild_mon SPECIES_SOLROCK, 37
+ wild_mon SPECIES_BAGON, 25
+ wild_mon SPECIES_SOLROCK, 39
+ wild_mon SPECIES_GOLBAT, 38
+ wild_mon SPECIES_GOLBAT, 40
+ wild_mon SPECIES_GOLBAT, 38
+ wild_mon SPECIES_GOLBAT, 40
.align 2
gMeteorFalls_B1F_2R_LandMonsInfo:: @ 8551060
@@ -833,11 +833,11 @@ gMeteorFalls_B1F_2R_LandMonsInfo:: @ 8551060
.align 2
gMeteorFalls_B1F_2R_WaterMons:: @ 8551068
- wild_mon GOLBAT, 30, 35
- wild_mon GOLBAT, 30, 35
- wild_mon SOLROCK, 25, 35
- wild_mon SOLROCK, 15, 25
- wild_mon SOLROCK, 5, 15
+ wild_mon SPECIES_GOLBAT, 30, 35
+ wild_mon SPECIES_GOLBAT, 30, 35
+ wild_mon SPECIES_SOLROCK, 25, 35
+ wild_mon SPECIES_SOLROCK, 15, 25
+ wild_mon SPECIES_SOLROCK, 5, 15
.align 2
gMeteorFalls_B1F_2R_WaterMonsInfo:: @ 855107C
@@ -846,16 +846,16 @@ gMeteorFalls_B1F_2R_WaterMonsInfo:: @ 855107C
.align 2
gMeteorFalls_B1F_2R_FishingMons:: @ 8551084
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 30
- wild_mon BARBOACH, 10, 30
- wild_mon BARBOACH, 25, 30
- wild_mon BARBOACH, 30, 35
- wild_mon WHISCASH, 30, 35
- wild_mon WHISCASH, 35, 40
- wild_mon WHISCASH, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_GOLDEEN, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_GOLDEEN, 10, 30
+ wild_mon SPECIES_BARBOACH, 10, 30
+ wild_mon SPECIES_BARBOACH, 25, 30
+ wild_mon SPECIES_BARBOACH, 30, 35
+ wild_mon SPECIES_WHISCASH, 30, 35
+ wild_mon SPECIES_WHISCASH, 35, 40
+ wild_mon SPECIES_WHISCASH, 40, 45
.align 2
gMeteorFalls_B1F_2R_FishingMonsInfo:: @ 85510AC
@@ -864,18 +864,18 @@ gMeteorFalls_B1F_2R_FishingMonsInfo:: @ 85510AC
.align 2
gJaggedPass_LandMons:: @ 85510B4
- wild_mon NUMEL, 21
- wild_mon NUMEL, 21
- wild_mon MACHOP, 21
- wild_mon NUMEL, 20
- wild_mon SPOINK, 20
- wild_mon MACHOP, 20
- wild_mon SPOINK, 21
- wild_mon MACHOP, 22
- wild_mon NUMEL, 22
- wild_mon SPOINK, 22
- wild_mon NUMEL, 22
- wild_mon SPOINK, 22
+ wild_mon SPECIES_NUMEL, 21
+ wild_mon SPECIES_NUMEL, 21
+ wild_mon SPECIES_MACHOP, 21
+ wild_mon SPECIES_NUMEL, 20
+ wild_mon SPECIES_SPOINK, 20
+ wild_mon SPECIES_MACHOP, 20
+ wild_mon SPECIES_SPOINK, 21
+ wild_mon SPECIES_MACHOP, 22
+ wild_mon SPECIES_NUMEL, 22
+ wild_mon SPECIES_SPOINK, 22
+ wild_mon SPECIES_NUMEL, 22
+ wild_mon SPECIES_SPOINK, 22
.align 2
gJaggedPass_LandMonsInfo:: @ 85510E4
@@ -884,11 +884,11 @@ gJaggedPass_LandMonsInfo:: @ 85510E4
.align 2
gRoute106_WaterMons:: @ 85510EC
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_WINGULL, 10, 30
+ wild_mon SPECIES_WINGULL, 15, 25
+ wild_mon SPECIES_PELIPPER, 25, 30
+ wild_mon SPECIES_PELIPPER, 25, 30
.align 2
gRoute106_WaterMonsInfo:: @ 8551100
@@ -897,16 +897,16 @@ gRoute106_WaterMonsInfo:: @ 8551100
.align 2
gRoute106_FishingMons:: @ 8551108
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_WAILMER, 10, 30
+ wild_mon SPECIES_WAILMER, 25, 30
+ wild_mon SPECIES_WAILMER, 30, 35
+ wild_mon SPECIES_WAILMER, 20, 25
+ wild_mon SPECIES_WAILMER, 35, 40
+ wild_mon SPECIES_WAILMER, 40, 45
.align 2
gRoute106_FishingMonsInfo:: @ 8551130
@@ -915,11 +915,11 @@ gRoute106_FishingMonsInfo:: @ 8551130
.align 2
gRoute107_WaterMons:: @ 8551138
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_WINGULL, 10, 30
+ wild_mon SPECIES_WINGULL, 15, 25
+ wild_mon SPECIES_PELIPPER, 25, 30
+ wild_mon SPECIES_PELIPPER, 25, 30
.align 2
gRoute107_WaterMonsInfo:: @ 855114C
@@ -928,16 +928,16 @@ gRoute107_WaterMonsInfo:: @ 855114C
.align 2
gRoute107_FishingMons:: @ 8551154
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_WAILMER, 10, 30
+ wild_mon SPECIES_WAILMER, 25, 30
+ wild_mon SPECIES_WAILMER, 30, 35
+ wild_mon SPECIES_WAILMER, 20, 25
+ wild_mon SPECIES_WAILMER, 35, 40
+ wild_mon SPECIES_WAILMER, 40, 45
.align 2
gRoute107_FishingMonsInfo:: @ 855117C
@@ -946,11 +946,11 @@ gRoute107_FishingMonsInfo:: @ 855117C
.align 2
gRoute108_WaterMons:: @ 8551184
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_WINGULL, 10, 30
+ wild_mon SPECIES_WINGULL, 15, 25
+ wild_mon SPECIES_PELIPPER, 25, 30
+ wild_mon SPECIES_PELIPPER, 25, 30
.align 2
gRoute108_WaterMonsInfo:: @ 8551198
@@ -959,16 +959,16 @@ gRoute108_WaterMonsInfo:: @ 8551198
.align 2
gRoute108_FishingMons:: @ 85511A0
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_WAILMER, 10, 30
+ wild_mon SPECIES_WAILMER, 25, 30
+ wild_mon SPECIES_WAILMER, 30, 35
+ wild_mon SPECIES_WAILMER, 20, 25
+ wild_mon SPECIES_WAILMER, 35, 40
+ wild_mon SPECIES_WAILMER, 40, 45
.align 2
gRoute108_FishingMonsInfo:: @ 85511C8
@@ -977,11 +977,11 @@ gRoute108_FishingMonsInfo:: @ 85511C8
.align 2
gRoute109_WaterMons:: @ 85511D0
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_WINGULL, 10, 30
+ wild_mon SPECIES_WINGULL, 15, 25
+ wild_mon SPECIES_PELIPPER, 25, 30
+ wild_mon SPECIES_PELIPPER, 25, 30
.align 2
gRoute109_WaterMonsInfo:: @ 85511E4
@@ -990,16 +990,16 @@ gRoute109_WaterMonsInfo:: @ 85511E4
.align 2
gRoute109_FishingMons:: @ 85511EC
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_WAILMER, 10, 30
+ wild_mon SPECIES_WAILMER, 25, 30
+ wild_mon SPECIES_WAILMER, 30, 35
+ wild_mon SPECIES_WAILMER, 20, 25
+ wild_mon SPECIES_WAILMER, 35, 40
+ wild_mon SPECIES_WAILMER, 40, 45
.align 2
gRoute109_FishingMonsInfo:: @ 8551214
@@ -1008,18 +1008,18 @@ gRoute109_FishingMonsInfo:: @ 8551214
.align 2
gRoute115_LandMons:: @ 855121C
- wild_mon SWABLU, 23
- wild_mon TAILLOW, 23
- wild_mon SWABLU, 25
- wild_mon TAILLOW, 24
- wild_mon TAILLOW, 25
- wild_mon SWELLOW, 25
- wild_mon JIGGLYPUFF, 24
- wild_mon JIGGLYPUFF, 25
- wild_mon WINGULL, 24
- wild_mon WINGULL, 24
- wild_mon WINGULL, 26
- wild_mon WINGULL, 25
+ wild_mon SPECIES_SWABLU, 23
+ wild_mon SPECIES_TAILLOW, 23
+ wild_mon SPECIES_SWABLU, 25
+ wild_mon SPECIES_TAILLOW, 24
+ wild_mon SPECIES_TAILLOW, 25
+ wild_mon SPECIES_SWELLOW, 25
+ wild_mon SPECIES_JIGGLYPUFF, 24
+ wild_mon SPECIES_JIGGLYPUFF, 25
+ wild_mon SPECIES_WINGULL, 24
+ wild_mon SPECIES_WINGULL, 24
+ wild_mon SPECIES_WINGULL, 26
+ wild_mon SPECIES_WINGULL, 25
.align 2
gRoute115_LandMonsInfo:: @ 855124C
@@ -1028,11 +1028,11 @@ gRoute115_LandMonsInfo:: @ 855124C
.align 2
gRoute115_WaterMons:: @ 8551254
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_WINGULL, 10, 30
+ wild_mon SPECIES_WINGULL, 15, 25
+ wild_mon SPECIES_PELIPPER, 25, 30
+ wild_mon SPECIES_PELIPPER, 25, 30
.align 2
gRoute115_WaterMonsInfo:: @ 8551268
@@ -1041,16 +1041,16 @@ gRoute115_WaterMonsInfo:: @ 8551268
.align 2
gRoute115_FishingMons:: @ 8551270
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_WAILMER, 10, 30
+ wild_mon SPECIES_WAILMER, 25, 30
+ wild_mon SPECIES_WAILMER, 30, 35
+ wild_mon SPECIES_WAILMER, 20, 25
+ wild_mon SPECIES_WAILMER, 35, 40
+ wild_mon SPECIES_WAILMER, 40, 45
.align 2
gRoute115_FishingMonsInfo:: @ 8551298
@@ -1059,18 +1059,18 @@ gRoute115_FishingMonsInfo:: @ 8551298
.align 2
gNewMauville_Inside_LandMons:: @ 85512A0
- wild_mon VOLTORB, 24
- wild_mon MAGNEMITE, 24
- wild_mon VOLTORB, 25
- wild_mon MAGNEMITE, 25
- wild_mon VOLTORB, 23
- wild_mon MAGNEMITE, 23
- wild_mon VOLTORB, 26
- wild_mon MAGNEMITE, 26
- wild_mon VOLTORB, 22
- wild_mon MAGNEMITE, 22
- wild_mon ELECTRODE, 26
- wild_mon MAGNETON, 26
+ wild_mon SPECIES_VOLTORB, 24
+ wild_mon SPECIES_MAGNEMITE, 24
+ wild_mon SPECIES_VOLTORB, 25
+ wild_mon SPECIES_MAGNEMITE, 25
+ wild_mon SPECIES_VOLTORB, 23
+ wild_mon SPECIES_MAGNEMITE, 23
+ wild_mon SPECIES_VOLTORB, 26
+ wild_mon SPECIES_MAGNEMITE, 26
+ wild_mon SPECIES_VOLTORB, 22
+ wild_mon SPECIES_MAGNEMITE, 22
+ wild_mon SPECIES_ELECTRODE, 26
+ wild_mon SPECIES_MAGNETON, 26
.align 2
gNewMauville_Inside_LandMonsInfo:: @ 85512D0
@@ -1079,18 +1079,18 @@ gNewMauville_Inside_LandMonsInfo:: @ 85512D0
.align 2
gRoute119_LandMons:: @ 85512D8
- wild_mon ZIGZAGOON, 25
- wild_mon LINOONE, 25
- wild_mon ZIGZAGOON, 27
- wild_mon ODDISH, 25
- wild_mon LINOONE, 27
- wild_mon ODDISH, 26
- wild_mon ODDISH, 27
- wild_mon ODDISH, 24
- wild_mon TROPIUS, 25
- wild_mon TROPIUS, 26
- wild_mon TROPIUS, 27
- wild_mon KECLEON, 25
+ wild_mon SPECIES_ZIGZAGOON, 25
+ wild_mon SPECIES_LINOONE, 25
+ wild_mon SPECIES_ZIGZAGOON, 27
+ wild_mon SPECIES_ODDISH, 25
+ wild_mon SPECIES_LINOONE, 27
+ wild_mon SPECIES_ODDISH, 26
+ wild_mon SPECIES_ODDISH, 27
+ wild_mon SPECIES_ODDISH, 24
+ wild_mon SPECIES_TROPIUS, 25
+ wild_mon SPECIES_TROPIUS, 26
+ wild_mon SPECIES_TROPIUS, 27
+ wild_mon SPECIES_KECLEON, 25
.align 2
gRoute119_LandMonsInfo:: @ 8551308
@@ -1099,11 +1099,11 @@ gRoute119_LandMonsInfo:: @ 8551308
.align 2
gRoute119_WaterMons:: @ 8551310
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_WINGULL, 10, 30
+ wild_mon SPECIES_WINGULL, 15, 25
+ wild_mon SPECIES_PELIPPER, 25, 30
+ wild_mon SPECIES_PELIPPER, 25, 30
.align 2
gRoute119_WaterMonsInfo:: @ 8551324
@@ -1112,16 +1112,16 @@ gRoute119_WaterMonsInfo:: @ 8551324
.align 2
gRoute119_FishingMons:: @ 855132C
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon CARVANHA, 10, 30
- wild_mon CARVANHA, 25, 30
- wild_mon CARVANHA, 30, 35
- wild_mon CARVANHA, 20, 25
- wild_mon CARVANHA, 35, 40
- wild_mon CARVANHA, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_CARVANHA, 10, 30
+ wild_mon SPECIES_CARVANHA, 25, 30
+ wild_mon SPECIES_CARVANHA, 30, 35
+ wild_mon SPECIES_CARVANHA, 20, 25
+ wild_mon SPECIES_CARVANHA, 35, 40
+ wild_mon SPECIES_CARVANHA, 40, 45
.align 2
gRoute119_FishingMonsInfo:: @ 8551354
@@ -1130,18 +1130,18 @@ gRoute119_FishingMonsInfo:: @ 8551354
.align 2
gRoute120_LandMons:: @ 855135C
- wild_mon POOCHYENA, 25
- wild_mon MIGHTYENA, 25
- wild_mon MIGHTYENA, 27
- wild_mon ODDISH, 25
- wild_mon MARILL, 25
- wild_mon ODDISH, 26
- wild_mon ODDISH, 27
- wild_mon MARILL, 27
- wild_mon ABSOL, 25
- wild_mon ABSOL, 27
- wild_mon KECLEON, 25
- wild_mon SEEDOT, 25
+ wild_mon SPECIES_POOCHYENA, 25
+ wild_mon SPECIES_MIGHTYENA, 25
+ wild_mon SPECIES_MIGHTYENA, 27
+ wild_mon SPECIES_ODDISH, 25
+ wild_mon SPECIES_MARILL, 25
+ wild_mon SPECIES_ODDISH, 26
+ wild_mon SPECIES_ODDISH, 27
+ wild_mon SPECIES_MARILL, 27
+ wild_mon SPECIES_ABSOL, 25
+ wild_mon SPECIES_ABSOL, 27
+ wild_mon SPECIES_KECLEON, 25
+ wild_mon SPECIES_SEEDOT, 25
.align 2
gRoute120_LandMonsInfo:: @ 855138C
@@ -1150,11 +1150,11 @@ gRoute120_LandMonsInfo:: @ 855138C
.align 2
gRoute120_WaterMons:: @ 8551394
- wild_mon MARILL, 20, 30
- wild_mon MARILL, 10, 20
- wild_mon MARILL, 30, 35
- wild_mon MARILL, 5, 10
- wild_mon GOLDEEN, 20, 30
+ wild_mon SPECIES_MARILL, 20, 30
+ wild_mon SPECIES_MARILL, 10, 20
+ wild_mon SPECIES_MARILL, 30, 35
+ wild_mon SPECIES_MARILL, 5, 10
+ wild_mon SPECIES_GOLDEEN, 20, 30
.align 2
gRoute120_WaterMonsInfo:: @ 85513A8
@@ -1163,16 +1163,16 @@ gRoute120_WaterMonsInfo:: @ 85513A8
.align 2
gRoute120_FishingMons:: @ 85513B0
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 30
- wild_mon BARBOACH, 10, 30
- wild_mon BARBOACH, 25, 30
- wild_mon BARBOACH, 30, 35
- wild_mon BARBOACH, 20, 25
- wild_mon BARBOACH, 35, 40
- wild_mon BARBOACH, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_GOLDEEN, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_GOLDEEN, 10, 30
+ wild_mon SPECIES_BARBOACH, 10, 30
+ wild_mon SPECIES_BARBOACH, 25, 30
+ wild_mon SPECIES_BARBOACH, 30, 35
+ wild_mon SPECIES_BARBOACH, 20, 25
+ wild_mon SPECIES_BARBOACH, 35, 40
+ wild_mon SPECIES_BARBOACH, 40, 45
.align 2
gRoute120_FishingMonsInfo:: @ 85513D8
@@ -1181,18 +1181,18 @@ gRoute120_FishingMonsInfo:: @ 85513D8
.align 2
gRoute121_LandMons:: @ 85513E0
- wild_mon POOCHYENA, 26
- wild_mon SHUPPET, 26
- wild_mon MIGHTYENA, 26
- wild_mon SHUPPET, 28
- wild_mon MIGHTYENA, 28
- wild_mon ODDISH, 26
- wild_mon ODDISH, 28
- wild_mon GLOOM, 28
- wild_mon WINGULL, 26
- wild_mon WINGULL, 27
- wild_mon WINGULL, 28
- wild_mon KECLEON, 25
+ wild_mon SPECIES_POOCHYENA, 26
+ wild_mon SPECIES_SHUPPET, 26
+ wild_mon SPECIES_MIGHTYENA, 26
+ wild_mon SPECIES_SHUPPET, 28
+ wild_mon SPECIES_MIGHTYENA, 28
+ wild_mon SPECIES_ODDISH, 26
+ wild_mon SPECIES_ODDISH, 28
+ wild_mon SPECIES_GLOOM, 28
+ wild_mon SPECIES_WINGULL, 26
+ wild_mon SPECIES_WINGULL, 27
+ wild_mon SPECIES_WINGULL, 28
+ wild_mon SPECIES_KECLEON, 25
.align 2
gRoute121_LandMonsInfo:: @ 8551410
@@ -1201,11 +1201,11 @@ gRoute121_LandMonsInfo:: @ 8551410
.align 2
gRoute121_WaterMons:: @ 8551418
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_WINGULL, 10, 30
+ wild_mon SPECIES_WINGULL, 15, 25
+ wild_mon SPECIES_PELIPPER, 25, 30
+ wild_mon SPECIES_PELIPPER, 25, 30
.align 2
gRoute121_WaterMonsInfo:: @ 855142C
@@ -1214,16 +1214,16 @@ gRoute121_WaterMonsInfo:: @ 855142C
.align 2
gRoute121_FishingMons:: @ 8551434
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_WAILMER, 10, 30
+ wild_mon SPECIES_WAILMER, 25, 30
+ wild_mon SPECIES_WAILMER, 30, 35
+ wild_mon SPECIES_WAILMER, 20, 25
+ wild_mon SPECIES_WAILMER, 35, 40
+ wild_mon SPECIES_WAILMER, 40, 45
.align 2
gRoute121_FishingMonsInfo:: @ 855145C
@@ -1232,11 +1232,11 @@ gRoute121_FishingMonsInfo:: @ 855145C
.align 2
gRoute122_WaterMons:: @ 8551464
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_WINGULL, 10, 30
+ wild_mon SPECIES_WINGULL, 15, 25
+ wild_mon SPECIES_PELIPPER, 25, 30
+ wild_mon SPECIES_PELIPPER, 25, 30
.align 2
gRoute122_WaterMonsInfo:: @ 8551478
@@ -1245,16 +1245,16 @@ gRoute122_WaterMonsInfo:: @ 8551478
.align 2
gRoute122_FishingMons:: @ 8551480
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_WAILMER, 10, 30
+ wild_mon SPECIES_SHARPEDO, 30, 35
+ wild_mon SPECIES_WAILMER, 30, 35
+ wild_mon SPECIES_WAILMER, 25, 30
+ wild_mon SPECIES_WAILMER, 35, 40
+ wild_mon SPECIES_WAILMER, 40, 45
.align 2
gRoute122_FishingMonsInfo:: @ 85514A8
@@ -1263,18 +1263,18 @@ gRoute122_FishingMonsInfo:: @ 85514A8
.align 2
gRoute123_LandMons:: @ 85514B0
- wild_mon POOCHYENA, 26
- wild_mon SHUPPET, 26
- wild_mon MIGHTYENA, 26
- wild_mon SHUPPET, 28
- wild_mon MIGHTYENA, 28
- wild_mon ODDISH, 26
- wild_mon ODDISH, 28
- wild_mon GLOOM, 28
- wild_mon WINGULL, 26
- wild_mon WINGULL, 27
- wild_mon WINGULL, 28
- wild_mon KECLEON, 25
+ wild_mon SPECIES_POOCHYENA, 26
+ wild_mon SPECIES_SHUPPET, 26
+ wild_mon SPECIES_MIGHTYENA, 26
+ wild_mon SPECIES_SHUPPET, 28
+ wild_mon SPECIES_MIGHTYENA, 28
+ wild_mon SPECIES_ODDISH, 26
+ wild_mon SPECIES_ODDISH, 28
+ wild_mon SPECIES_GLOOM, 28
+ wild_mon SPECIES_WINGULL, 26
+ wild_mon SPECIES_WINGULL, 27
+ wild_mon SPECIES_WINGULL, 28
+ wild_mon SPECIES_KECLEON, 25
.align 2
gRoute123_LandMonsInfo:: @ 85514E0
@@ -1283,11 +1283,11 @@ gRoute123_LandMonsInfo:: @ 85514E0
.align 2
gRoute123_WaterMons:: @ 85514E8
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_WINGULL, 10, 30
+ wild_mon SPECIES_WINGULL, 15, 25
+ wild_mon SPECIES_PELIPPER, 25, 30
+ wild_mon SPECIES_PELIPPER, 25, 30
.align 2
gRoute123_WaterMonsInfo:: @ 85514FC
@@ -1296,16 +1296,16 @@ gRoute123_WaterMonsInfo:: @ 85514FC
.align 2
gRoute123_FishingMons:: @ 8551504
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_WAILMER, 10, 30
+ wild_mon SPECIES_WAILMER, 25, 30
+ wild_mon SPECIES_WAILMER, 30, 35
+ wild_mon SPECIES_WAILMER, 20, 25
+ wild_mon SPECIES_WAILMER, 35, 40
+ wild_mon SPECIES_WAILMER, 40, 45
.align 2
gRoute123_FishingMonsInfo:: @ 855152C
@@ -1314,18 +1314,18 @@ gRoute123_FishingMonsInfo:: @ 855152C
.align 2
gMtPyre_2F_LandMons:: @ 8551534
- wild_mon SHUPPET, 27
- wild_mon SHUPPET, 28
- wild_mon SHUPPET, 26
- wild_mon SHUPPET, 25
- wild_mon SHUPPET, 29
- wild_mon SHUPPET, 24
- wild_mon SHUPPET, 23
- wild_mon SHUPPET, 22
- wild_mon SHUPPET, 29
- wild_mon SHUPPET, 24
- wild_mon SHUPPET, 29
- wild_mon SHUPPET, 24
+ wild_mon SPECIES_SHUPPET, 27
+ wild_mon SPECIES_SHUPPET, 28
+ wild_mon SPECIES_SHUPPET, 26
+ wild_mon SPECIES_SHUPPET, 25
+ wild_mon SPECIES_SHUPPET, 29
+ wild_mon SPECIES_SHUPPET, 24
+ wild_mon SPECIES_SHUPPET, 23
+ wild_mon SPECIES_SHUPPET, 22
+ wild_mon SPECIES_SHUPPET, 29
+ wild_mon SPECIES_SHUPPET, 24
+ wild_mon SPECIES_SHUPPET, 29
+ wild_mon SPECIES_SHUPPET, 24
.align 2
gMtPyre_2F_LandMonsInfo:: @ 8551564
@@ -1334,18 +1334,18 @@ gMtPyre_2F_LandMonsInfo:: @ 8551564
.align 2
gMtPyre_3F_LandMons:: @ 855156C
- wild_mon SHUPPET, 27
- wild_mon SHUPPET, 28
- wild_mon SHUPPET, 26
- wild_mon SHUPPET, 25
- wild_mon SHUPPET, 29
- wild_mon SHUPPET, 24
- wild_mon SHUPPET, 23
- wild_mon SHUPPET, 22
- wild_mon SHUPPET, 29
- wild_mon SHUPPET, 24
- wild_mon SHUPPET, 29
- wild_mon SHUPPET, 24
+ wild_mon SPECIES_SHUPPET, 27
+ wild_mon SPECIES_SHUPPET, 28
+ wild_mon SPECIES_SHUPPET, 26
+ wild_mon SPECIES_SHUPPET, 25
+ wild_mon SPECIES_SHUPPET, 29
+ wild_mon SPECIES_SHUPPET, 24
+ wild_mon SPECIES_SHUPPET, 23
+ wild_mon SPECIES_SHUPPET, 22
+ wild_mon SPECIES_SHUPPET, 29
+ wild_mon SPECIES_SHUPPET, 24
+ wild_mon SPECIES_SHUPPET, 29
+ wild_mon SPECIES_SHUPPET, 24
.align 2
gMtPyre_3F_LandMonsInfo:: @ 855159C
@@ -1354,18 +1354,18 @@ gMtPyre_3F_LandMonsInfo:: @ 855159C
.align 2
gMtPyre_4F_LandMons:: @ 85515A4
- wild_mon SHUPPET, 27
- wild_mon SHUPPET, 28
- wild_mon SHUPPET, 26
- wild_mon SHUPPET, 25
- wild_mon SHUPPET, 29
- wild_mon SHUPPET, 24
- wild_mon SHUPPET, 23
- wild_mon SHUPPET, 22
- wild_mon DUSKULL, 27
- wild_mon DUSKULL, 27
- wild_mon DUSKULL, 25
- wild_mon DUSKULL, 29
+ wild_mon SPECIES_SHUPPET, 27
+ wild_mon SPECIES_SHUPPET, 28
+ wild_mon SPECIES_SHUPPET, 26
+ wild_mon SPECIES_SHUPPET, 25
+ wild_mon SPECIES_SHUPPET, 29
+ wild_mon SPECIES_SHUPPET, 24
+ wild_mon SPECIES_SHUPPET, 23
+ wild_mon SPECIES_SHUPPET, 22
+ wild_mon SPECIES_DUSKULL, 27
+ wild_mon SPECIES_DUSKULL, 27
+ wild_mon SPECIES_DUSKULL, 25
+ wild_mon SPECIES_DUSKULL, 29
.align 2
gMtPyre_4F_LandMonsInfo:: @ 85515D4
@@ -1374,18 +1374,18 @@ gMtPyre_4F_LandMonsInfo:: @ 85515D4
.align 2
gMtPyre_5F_LandMons:: @ 85515DC
- wild_mon SHUPPET, 27
- wild_mon SHUPPET, 28
- wild_mon SHUPPET, 26
- wild_mon SHUPPET, 25
- wild_mon SHUPPET, 29
- wild_mon SHUPPET, 24
- wild_mon SHUPPET, 23
- wild_mon SHUPPET, 22
- wild_mon DUSKULL, 27
- wild_mon DUSKULL, 27
- wild_mon DUSKULL, 25
- wild_mon DUSKULL, 29
+ wild_mon SPECIES_SHUPPET, 27
+ wild_mon SPECIES_SHUPPET, 28
+ wild_mon SPECIES_SHUPPET, 26
+ wild_mon SPECIES_SHUPPET, 25
+ wild_mon SPECIES_SHUPPET, 29
+ wild_mon SPECIES_SHUPPET, 24
+ wild_mon SPECIES_SHUPPET, 23
+ wild_mon SPECIES_SHUPPET, 22
+ wild_mon SPECIES_DUSKULL, 27
+ wild_mon SPECIES_DUSKULL, 27
+ wild_mon SPECIES_DUSKULL, 25
+ wild_mon SPECIES_DUSKULL, 29
.align 2
gMtPyre_5F_LandMonsInfo:: @ 855160C
@@ -1394,18 +1394,18 @@ gMtPyre_5F_LandMonsInfo:: @ 855160C
.align 2
gMtPyre_6F_LandMons:: @ 8551614
- wild_mon SHUPPET, 27
- wild_mon SHUPPET, 28
- wild_mon SHUPPET, 26
- wild_mon SHUPPET, 25
- wild_mon SHUPPET, 29
- wild_mon SHUPPET, 24
- wild_mon SHUPPET, 23
- wild_mon SHUPPET, 22
- wild_mon DUSKULL, 27
- wild_mon DUSKULL, 27
- wild_mon DUSKULL, 25
- wild_mon DUSKULL, 29
+ wild_mon SPECIES_SHUPPET, 27
+ wild_mon SPECIES_SHUPPET, 28
+ wild_mon SPECIES_SHUPPET, 26
+ wild_mon SPECIES_SHUPPET, 25
+ wild_mon SPECIES_SHUPPET, 29
+ wild_mon SPECIES_SHUPPET, 24
+ wild_mon SPECIES_SHUPPET, 23
+ wild_mon SPECIES_SHUPPET, 22
+ wild_mon SPECIES_DUSKULL, 27
+ wild_mon SPECIES_DUSKULL, 27
+ wild_mon SPECIES_DUSKULL, 25
+ wild_mon SPECIES_DUSKULL, 29
.align 2
gMtPyre_6F_LandMonsInfo:: @ 8551644
@@ -1414,18 +1414,18 @@ gMtPyre_6F_LandMonsInfo:: @ 8551644
.align 2
gMtPyre_Exterior_LandMons:: @ 855164C
- wild_mon SHUPPET, 27
- wild_mon SHUPPET, 27
- wild_mon SHUPPET, 28
- wild_mon SHUPPET, 29
- wild_mon VULPIX, 29
- wild_mon VULPIX, 27
- wild_mon VULPIX, 29
- wild_mon VULPIX, 25
- wild_mon WINGULL, 27
- wild_mon WINGULL, 27
- wild_mon WINGULL, 26
- wild_mon WINGULL, 28
+ wild_mon SPECIES_SHUPPET, 27
+ wild_mon SPECIES_SHUPPET, 27
+ wild_mon SPECIES_SHUPPET, 28
+ wild_mon SPECIES_SHUPPET, 29
+ wild_mon SPECIES_VULPIX, 29
+ wild_mon SPECIES_VULPIX, 27
+ wild_mon SPECIES_VULPIX, 29
+ wild_mon SPECIES_VULPIX, 25
+ wild_mon SPECIES_WINGULL, 27
+ wild_mon SPECIES_WINGULL, 27
+ wild_mon SPECIES_WINGULL, 26
+ wild_mon SPECIES_WINGULL, 28
.align 2
gMtPyre_Exterior_LandMonsInfo:: @ 855167C
@@ -1434,18 +1434,18 @@ gMtPyre_Exterior_LandMonsInfo:: @ 855167C
.align 2
gMtPyre_Summit_LandMons:: @ 8551684
- wild_mon SHUPPET, 28
- wild_mon SHUPPET, 29
- wild_mon SHUPPET, 27
- wild_mon SHUPPET, 26
- wild_mon SHUPPET, 30
- wild_mon SHUPPET, 25
- wild_mon SHUPPET, 24
- wild_mon DUSKULL, 28
- wild_mon DUSKULL, 26
- wild_mon DUSKULL, 30
- wild_mon CHIMECHO, 28
- wild_mon CHIMECHO, 28
+ wild_mon SPECIES_SHUPPET, 28
+ wild_mon SPECIES_SHUPPET, 29
+ wild_mon SPECIES_SHUPPET, 27
+ wild_mon SPECIES_SHUPPET, 26
+ wild_mon SPECIES_SHUPPET, 30
+ wild_mon SPECIES_SHUPPET, 25
+ wild_mon SPECIES_SHUPPET, 24
+ wild_mon SPECIES_DUSKULL, 28
+ wild_mon SPECIES_DUSKULL, 26
+ wild_mon SPECIES_DUSKULL, 30
+ wild_mon SPECIES_CHIMECHO, 28
+ wild_mon SPECIES_CHIMECHO, 28
.align 2
gMtPyre_Summit_LandMonsInfo:: @ 85516B4
@@ -1454,18 +1454,18 @@ gMtPyre_Summit_LandMonsInfo:: @ 85516B4
.align 2
gGraniteCave_StevensRoom_LandMons:: @ 85516BC
- wild_mon ZUBAT, 7
- wild_mon MAKUHITA, 8
- wild_mon MAKUHITA, 7
- wild_mon ZUBAT, 8
- wild_mon MAKUHITA, 9
- wild_mon ABRA, 8
- wild_mon MAKUHITA, 10
- wild_mon MAKUHITA, 6
- wild_mon ARON, 7
- wild_mon ARON, 8
- wild_mon ARON, 7
- wild_mon ARON, 8
+ wild_mon SPECIES_ZUBAT, 7
+ wild_mon SPECIES_MAKUHITA, 8
+ wild_mon SPECIES_MAKUHITA, 7
+ wild_mon SPECIES_ZUBAT, 8
+ wild_mon SPECIES_MAKUHITA, 9
+ wild_mon SPECIES_ABRA, 8
+ wild_mon SPECIES_MAKUHITA, 10
+ wild_mon SPECIES_MAKUHITA, 6
+ wild_mon SPECIES_ARON, 7
+ wild_mon SPECIES_ARON, 8
+ wild_mon SPECIES_ARON, 7
+ wild_mon SPECIES_ARON, 8
.align 2
gGraniteCave_StevensRoom_LandMonsInfo:: @ 85516EC
@@ -1474,11 +1474,11 @@ gGraniteCave_StevensRoom_LandMonsInfo:: @ 85516EC
.align 2
gRoute125_WaterMons:: @ 85516F4
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_WINGULL, 10, 30
+ wild_mon SPECIES_WINGULL, 15, 25
+ wild_mon SPECIES_PELIPPER, 25, 30
+ wild_mon SPECIES_PELIPPER, 25, 30
.align 2
gRoute125_WaterMonsInfo:: @ 8551708
@@ -1487,16 +1487,16 @@ gRoute125_WaterMonsInfo:: @ 8551708
.align 2
gRoute125_FishingMons:: @ 8551710
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_WAILMER, 10, 30
+ wild_mon SPECIES_SHARPEDO, 30, 35
+ wild_mon SPECIES_WAILMER, 30, 35
+ wild_mon SPECIES_WAILMER, 25, 30
+ wild_mon SPECIES_WAILMER, 35, 40
+ wild_mon SPECIES_WAILMER, 40, 45
.align 2
gRoute125_FishingMonsInfo:: @ 8551738
@@ -1505,11 +1505,11 @@ gRoute125_FishingMonsInfo:: @ 8551738
.align 2
gRoute126_WaterMons:: @ 8551740
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_WINGULL, 10, 30
+ wild_mon SPECIES_WINGULL, 15, 25
+ wild_mon SPECIES_PELIPPER, 25, 30
+ wild_mon SPECIES_PELIPPER, 25, 30
.align 2
gRoute126_WaterMonsInfo:: @ 8551754
@@ -1518,16 +1518,16 @@ gRoute126_WaterMonsInfo:: @ 8551754
.align 2
gRoute126_FishingMons:: @ 855175C
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_WAILMER, 10, 30
+ wild_mon SPECIES_SHARPEDO, 30, 35
+ wild_mon SPECIES_WAILMER, 30, 35
+ wild_mon SPECIES_WAILMER, 25, 30
+ wild_mon SPECIES_WAILMER, 35, 40
+ wild_mon SPECIES_WAILMER, 40, 45
.align 2
gRoute126_FishingMonsInfo:: @ 8551784
@@ -1536,11 +1536,11 @@ gRoute126_FishingMonsInfo:: @ 8551784
.align 2
gRoute127_WaterMons:: @ 855178C
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_WINGULL, 10, 30
+ wild_mon SPECIES_WINGULL, 15, 25
+ wild_mon SPECIES_PELIPPER, 25, 30
+ wild_mon SPECIES_PELIPPER, 25, 30
.align 2
gRoute127_WaterMonsInfo:: @ 85517A0
@@ -1549,16 +1549,16 @@ gRoute127_WaterMonsInfo:: @ 85517A0
.align 2
gRoute127_FishingMons:: @ 85517A8
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_WAILMER, 10, 30
+ wild_mon SPECIES_SHARPEDO, 30, 35
+ wild_mon SPECIES_WAILMER, 30, 35
+ wild_mon SPECIES_WAILMER, 25, 30
+ wild_mon SPECIES_WAILMER, 35, 40
+ wild_mon SPECIES_WAILMER, 40, 45
.align 2
gRoute127_FishingMonsInfo:: @ 85517D0
@@ -1567,11 +1567,11 @@ gRoute127_FishingMonsInfo:: @ 85517D0
.align 2
gRoute128_WaterMons:: @ 85517D8
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_WINGULL, 10, 30
+ wild_mon SPECIES_WINGULL, 15, 25
+ wild_mon SPECIES_PELIPPER, 25, 30
+ wild_mon SPECIES_PELIPPER, 25, 30
.align 2
gRoute128_WaterMonsInfo:: @ 85517EC
@@ -1580,16 +1580,16 @@ gRoute128_WaterMonsInfo:: @ 85517EC
.align 2
gRoute128_FishingMons:: @ 85517F4
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon LUVDISC, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon LUVDISC, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon CORSOLA, 30, 35
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_LUVDISC, 10, 30
+ wild_mon SPECIES_WAILMER, 10, 30
+ wild_mon SPECIES_LUVDISC, 30, 35
+ wild_mon SPECIES_WAILMER, 30, 35
+ wild_mon SPECIES_CORSOLA, 30, 35
+ wild_mon SPECIES_WAILMER, 35, 40
+ wild_mon SPECIES_WAILMER, 40, 45
.align 2
gRoute128_FishingMonsInfo:: @ 855181C
@@ -1598,11 +1598,11 @@ gRoute128_FishingMonsInfo:: @ 855181C
.align 2
gRoute129_WaterMons:: @ 8551824
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon WAILORD, 25, 30
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_WINGULL, 10, 30
+ wild_mon SPECIES_WINGULL, 15, 25
+ wild_mon SPECIES_PELIPPER, 25, 30
+ wild_mon SPECIES_WAILORD, 25, 30
.align 2
gRoute129_WaterMonsInfo:: @ 8551838
@@ -1611,16 +1611,16 @@ gRoute129_WaterMonsInfo:: @ 8551838
.align 2
gRoute129_FishingMons:: @ 8551840
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_WAILMER, 10, 30
+ wild_mon SPECIES_SHARPEDO, 30, 35
+ wild_mon SPECIES_WAILMER, 30, 35
+ wild_mon SPECIES_WAILMER, 25, 30
+ wild_mon SPECIES_WAILMER, 35, 40
+ wild_mon SPECIES_WAILMER, 40, 45
.align 2
gRoute129_FishingMonsInfo:: @ 8551868
@@ -1629,18 +1629,18 @@ gRoute129_FishingMonsInfo:: @ 8551868
.align 2
gRoute130_LandMons:: @ 8551870
- wild_mon WYNAUT, 30
- wild_mon WYNAUT, 35
- wild_mon WYNAUT, 25
- wild_mon WYNAUT, 40
- wild_mon WYNAUT, 20
- wild_mon WYNAUT, 45
- wild_mon WYNAUT, 15
- wild_mon WYNAUT, 50
- wild_mon WYNAUT, 10
- wild_mon WYNAUT, 5
- wild_mon WYNAUT, 10
- wild_mon WYNAUT, 5
+ wild_mon SPECIES_WYNAUT, 30
+ wild_mon SPECIES_WYNAUT, 35
+ wild_mon SPECIES_WYNAUT, 25
+ wild_mon SPECIES_WYNAUT, 40
+ wild_mon SPECIES_WYNAUT, 20
+ wild_mon SPECIES_WYNAUT, 45
+ wild_mon SPECIES_WYNAUT, 15
+ wild_mon SPECIES_WYNAUT, 50
+ wild_mon SPECIES_WYNAUT, 10
+ wild_mon SPECIES_WYNAUT, 5
+ wild_mon SPECIES_WYNAUT, 10
+ wild_mon SPECIES_WYNAUT, 5
.align 2
gRoute130_LandMonsInfo:: @ 85518A0
@@ -1649,11 +1649,11 @@ gRoute130_LandMonsInfo:: @ 85518A0
.align 2
gRoute130_WaterMons:: @ 85518A8
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_WINGULL, 10, 30
+ wild_mon SPECIES_WINGULL, 15, 25
+ wild_mon SPECIES_PELIPPER, 25, 30
+ wild_mon SPECIES_PELIPPER, 25, 30
.align 2
gRoute130_WaterMonsInfo:: @ 85518BC
@@ -1662,16 +1662,16 @@ gRoute130_WaterMonsInfo:: @ 85518BC
.align 2
gRoute130_FishingMons:: @ 85518C4
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_WAILMER, 10, 30
+ wild_mon SPECIES_SHARPEDO, 30, 35
+ wild_mon SPECIES_WAILMER, 30, 35
+ wild_mon SPECIES_WAILMER, 25, 30
+ wild_mon SPECIES_WAILMER, 35, 40
+ wild_mon SPECIES_WAILMER, 40, 45
.align 2
gRoute130_FishingMonsInfo:: @ 85518EC
@@ -1680,11 +1680,11 @@ gRoute130_FishingMonsInfo:: @ 85518EC
.align 2
gRoute131_WaterMons:: @ 85518F4
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_WINGULL, 10, 30
+ wild_mon SPECIES_WINGULL, 15, 25
+ wild_mon SPECIES_PELIPPER, 25, 30
+ wild_mon SPECIES_PELIPPER, 25, 30
.align 2
gRoute131_WaterMonsInfo:: @ 8551908
@@ -1693,16 +1693,16 @@ gRoute131_WaterMonsInfo:: @ 8551908
.align 2
gRoute131_FishingMons:: @ 8551910
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_WAILMER, 10, 30
+ wild_mon SPECIES_SHARPEDO, 30, 35
+ wild_mon SPECIES_WAILMER, 30, 35
+ wild_mon SPECIES_WAILMER, 25, 30
+ wild_mon SPECIES_WAILMER, 35, 40
+ wild_mon SPECIES_WAILMER, 40, 45
.align 2
gRoute131_FishingMonsInfo:: @ 8551938
@@ -1711,11 +1711,11 @@ gRoute131_FishingMonsInfo:: @ 8551938
.align 2
gRoute132_WaterMons:: @ 8551940
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_WINGULL, 10, 30
+ wild_mon SPECIES_WINGULL, 15, 25
+ wild_mon SPECIES_PELIPPER, 25, 30
+ wild_mon SPECIES_PELIPPER, 25, 30
.align 2
gRoute132_WaterMonsInfo:: @ 8551954
@@ -1724,16 +1724,16 @@ gRoute132_WaterMonsInfo:: @ 8551954
.align 2
gRoute132_FishingMons:: @ 855195C
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon HORSEA, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_WAILMER, 10, 30
+ wild_mon SPECIES_SHARPEDO, 30, 35
+ wild_mon SPECIES_WAILMER, 30, 35
+ wild_mon SPECIES_HORSEA, 25, 30
+ wild_mon SPECIES_WAILMER, 35, 40
+ wild_mon SPECIES_WAILMER, 40, 45
.align 2
gRoute132_FishingMonsInfo:: @ 8551984
@@ -1742,11 +1742,11 @@ gRoute132_FishingMonsInfo:: @ 8551984
.align 2
gRoute133_WaterMons:: @ 855198C
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_WINGULL, 10, 30
+ wild_mon SPECIES_WINGULL, 15, 25
+ wild_mon SPECIES_PELIPPER, 25, 30
+ wild_mon SPECIES_PELIPPER, 25, 30
.align 2
gRoute133_WaterMonsInfo:: @ 85519A0
@@ -1755,16 +1755,16 @@ gRoute133_WaterMonsInfo:: @ 85519A0
.align 2
gRoute133_FishingMons:: @ 85519A8
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon HORSEA, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_WAILMER, 10, 30
+ wild_mon SPECIES_SHARPEDO, 30, 35
+ wild_mon SPECIES_WAILMER, 30, 35
+ wild_mon SPECIES_HORSEA, 25, 30
+ wild_mon SPECIES_WAILMER, 35, 40
+ wild_mon SPECIES_WAILMER, 40, 45
.align 2
gRoute133_FishingMonsInfo:: @ 85519D0
@@ -1773,11 +1773,11 @@ gRoute133_FishingMonsInfo:: @ 85519D0
.align 2
gRoute134_WaterMons:: @ 85519D8
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_WINGULL, 10, 30
+ wild_mon SPECIES_WINGULL, 15, 25
+ wild_mon SPECIES_PELIPPER, 25, 30
+ wild_mon SPECIES_PELIPPER, 25, 30
.align 2
gRoute134_WaterMonsInfo:: @ 85519EC
@@ -1786,16 +1786,16 @@ gRoute134_WaterMonsInfo:: @ 85519EC
.align 2
gRoute134_FishingMons:: @ 85519F4
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon HORSEA, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_WAILMER, 10, 30
+ wild_mon SPECIES_SHARPEDO, 30, 35
+ wild_mon SPECIES_WAILMER, 30, 35
+ wild_mon SPECIES_HORSEA, 25, 30
+ wild_mon SPECIES_WAILMER, 35, 40
+ wild_mon SPECIES_WAILMER, 40, 45
.align 2
gRoute134_FishingMonsInfo:: @ 8551A1C
@@ -1804,11 +1804,11 @@ gRoute134_FishingMonsInfo:: @ 8551A1C
.align 2
gAbandonedShip_HiddenFloorCorridors_WaterMons:: @ 8551A24
- wild_mon TENTACOOL, 5, 35
- wild_mon TENTACOOL, 5, 35
- wild_mon TENTACOOL, 5, 35
- wild_mon TENTACOOL, 5, 35
- wild_mon TENTACRUEL, 30, 35
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_TENTACRUEL, 30, 35
.align 2
gAbandonedShip_HiddenFloorCorridors_WaterMonsInfo:: @ 8551A38
@@ -1817,16 +1817,16 @@ gAbandonedShip_HiddenFloorCorridors_WaterMonsInfo:: @ 8551A38
.align 2
gAbandonedShip_HiddenFloorCorridors_FishingMons:: @ 8551A40
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon TENTACOOL, 25, 30
- wild_mon TENTACOOL, 30, 35
- wild_mon TENTACRUEL, 30, 35
- wild_mon TENTACRUEL, 25, 30
- wild_mon TENTACRUEL, 20, 25
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_TENTACOOL, 25, 30
+ wild_mon SPECIES_TENTACOOL, 30, 35
+ wild_mon SPECIES_TENTACRUEL, 30, 35
+ wild_mon SPECIES_TENTACRUEL, 25, 30
+ wild_mon SPECIES_TENTACRUEL, 20, 25
.align 2
gAbandonedShip_HiddenFloorCorridors_FishingMonsInfo:: @ 8551A68
@@ -1835,18 +1835,18 @@ gAbandonedShip_HiddenFloorCorridors_FishingMonsInfo:: @ 8551A68
.align 2
gSeafloorCavern_Room1_LandMons:: @ 8551A70
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 28
- wild_mon ZUBAT, 29
- wild_mon ZUBAT, 34
- wild_mon ZUBAT, 35
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
+ wild_mon SPECIES_ZUBAT, 30
+ wild_mon SPECIES_ZUBAT, 31
+ wild_mon SPECIES_ZUBAT, 32
+ wild_mon SPECIES_ZUBAT, 33
+ wild_mon SPECIES_ZUBAT, 28
+ wild_mon SPECIES_ZUBAT, 29
+ wild_mon SPECIES_ZUBAT, 34
+ wild_mon SPECIES_ZUBAT, 35
+ wild_mon SPECIES_GOLBAT, 34
+ wild_mon SPECIES_GOLBAT, 35
+ wild_mon SPECIES_GOLBAT, 33
+ wild_mon SPECIES_GOLBAT, 36
.align 2
gSeafloorCavern_Room1_LandMonsInfo:: @ 8551AA0
@@ -1855,18 +1855,18 @@ gSeafloorCavern_Room1_LandMonsInfo:: @ 8551AA0
.align 2
gSeafloorCavern_Room2_LandMons:: @ 8551AA8
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 28
- wild_mon ZUBAT, 29
- wild_mon ZUBAT, 34
- wild_mon ZUBAT, 35
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
+ wild_mon SPECIES_ZUBAT, 30
+ wild_mon SPECIES_ZUBAT, 31
+ wild_mon SPECIES_ZUBAT, 32
+ wild_mon SPECIES_ZUBAT, 33
+ wild_mon SPECIES_ZUBAT, 28
+ wild_mon SPECIES_ZUBAT, 29
+ wild_mon SPECIES_ZUBAT, 34
+ wild_mon SPECIES_ZUBAT, 35
+ wild_mon SPECIES_GOLBAT, 34
+ wild_mon SPECIES_GOLBAT, 35
+ wild_mon SPECIES_GOLBAT, 33
+ wild_mon SPECIES_GOLBAT, 36
.align 2
gSeafloorCavern_Room2_LandMonsInfo:: @ 8551AD8
@@ -1875,18 +1875,18 @@ gSeafloorCavern_Room2_LandMonsInfo:: @ 8551AD8
.align 2
gSeafloorCavern_Room3_LandMons:: @ 8551AE0
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 28
- wild_mon ZUBAT, 29
- wild_mon ZUBAT, 34
- wild_mon ZUBAT, 35
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
+ wild_mon SPECIES_ZUBAT, 30
+ wild_mon SPECIES_ZUBAT, 31
+ wild_mon SPECIES_ZUBAT, 32
+ wild_mon SPECIES_ZUBAT, 33
+ wild_mon SPECIES_ZUBAT, 28
+ wild_mon SPECIES_ZUBAT, 29
+ wild_mon SPECIES_ZUBAT, 34
+ wild_mon SPECIES_ZUBAT, 35
+ wild_mon SPECIES_GOLBAT, 34
+ wild_mon SPECIES_GOLBAT, 35
+ wild_mon SPECIES_GOLBAT, 33
+ wild_mon SPECIES_GOLBAT, 36
.align 2
gSeafloorCavern_Room3_LandMonsInfo:: @ 8551B10
@@ -1895,18 +1895,18 @@ gSeafloorCavern_Room3_LandMonsInfo:: @ 8551B10
.align 2
gSeafloorCavern_Room4_LandMons:: @ 8551B18
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 28
- wild_mon ZUBAT, 29
- wild_mon ZUBAT, 34
- wild_mon ZUBAT, 35
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
+ wild_mon SPECIES_ZUBAT, 30
+ wild_mon SPECIES_ZUBAT, 31
+ wild_mon SPECIES_ZUBAT, 32
+ wild_mon SPECIES_ZUBAT, 33
+ wild_mon SPECIES_ZUBAT, 28
+ wild_mon SPECIES_ZUBAT, 29
+ wild_mon SPECIES_ZUBAT, 34
+ wild_mon SPECIES_ZUBAT, 35
+ wild_mon SPECIES_GOLBAT, 34
+ wild_mon SPECIES_GOLBAT, 35
+ wild_mon SPECIES_GOLBAT, 33
+ wild_mon SPECIES_GOLBAT, 36
.align 2
gSeafloorCavern_Room4_LandMonsInfo:: @ 8551B48
@@ -1915,18 +1915,18 @@ gSeafloorCavern_Room4_LandMonsInfo:: @ 8551B48
.align 2
gSeafloorCavern_Room5_LandMons:: @ 8551B50
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 28
- wild_mon ZUBAT, 29
- wild_mon ZUBAT, 34
- wild_mon ZUBAT, 35
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
+ wild_mon SPECIES_ZUBAT, 30
+ wild_mon SPECIES_ZUBAT, 31
+ wild_mon SPECIES_ZUBAT, 32
+ wild_mon SPECIES_ZUBAT, 33
+ wild_mon SPECIES_ZUBAT, 28
+ wild_mon SPECIES_ZUBAT, 29
+ wild_mon SPECIES_ZUBAT, 34
+ wild_mon SPECIES_ZUBAT, 35
+ wild_mon SPECIES_GOLBAT, 34
+ wild_mon SPECIES_GOLBAT, 35
+ wild_mon SPECIES_GOLBAT, 33
+ wild_mon SPECIES_GOLBAT, 36
.align 2
gSeafloorCavern_Room5_LandMonsInfo:: @ 8551B80
@@ -1935,18 +1935,18 @@ gSeafloorCavern_Room5_LandMonsInfo:: @ 8551B80
.align 2
gSeafloorCavern_Room6_LandMons:: @ 8551B88
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 28
- wild_mon ZUBAT, 29
- wild_mon ZUBAT, 34
- wild_mon ZUBAT, 35
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
+ wild_mon SPECIES_ZUBAT, 30
+ wild_mon SPECIES_ZUBAT, 31
+ wild_mon SPECIES_ZUBAT, 32
+ wild_mon SPECIES_ZUBAT, 33
+ wild_mon SPECIES_ZUBAT, 28
+ wild_mon SPECIES_ZUBAT, 29
+ wild_mon SPECIES_ZUBAT, 34
+ wild_mon SPECIES_ZUBAT, 35
+ wild_mon SPECIES_GOLBAT, 34
+ wild_mon SPECIES_GOLBAT, 35
+ wild_mon SPECIES_GOLBAT, 33
+ wild_mon SPECIES_GOLBAT, 36
.align 2
gSeafloorCavern_Room6_LandMonsInfo:: @ 8551BB8
@@ -1955,11 +1955,11 @@ gSeafloorCavern_Room6_LandMonsInfo:: @ 8551BB8
.align 2
gSeafloorCavern_Room6_WaterMons:: @ 8551BC0
- wild_mon TENTACOOL, 5, 35
- wild_mon ZUBAT, 5, 35
- wild_mon ZUBAT, 30, 35
- wild_mon GOLBAT, 30, 35
- wild_mon GOLBAT, 30, 35
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_ZUBAT, 5, 35
+ wild_mon SPECIES_ZUBAT, 30, 35
+ wild_mon SPECIES_GOLBAT, 30, 35
+ wild_mon SPECIES_GOLBAT, 30, 35
.align 2
gSeafloorCavern_Room6_WaterMonsInfo:: @ 8551BD4
@@ -1968,16 +1968,16 @@ gSeafloorCavern_Room6_WaterMonsInfo:: @ 8551BD4
.align 2
gSeafloorCavern_Room6_FishingMons:: @ 8551BDC
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_WAILMER, 10, 30
+ wild_mon SPECIES_WAILMER, 25, 30
+ wild_mon SPECIES_WAILMER, 30, 35
+ wild_mon SPECIES_WAILMER, 20, 25
+ wild_mon SPECIES_WAILMER, 35, 40
+ wild_mon SPECIES_WAILMER, 40, 45
.align 2
gSeafloorCavern_Room6_FishingMonsInfo:: @ 8551C04
@@ -1986,18 +1986,18 @@ gSeafloorCavern_Room6_FishingMonsInfo:: @ 8551C04
.align 2
gSeafloorCavern_Room7_LandMons:: @ 8551C0C
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 28
- wild_mon ZUBAT, 29
- wild_mon ZUBAT, 34
- wild_mon ZUBAT, 35
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
+ wild_mon SPECIES_ZUBAT, 30
+ wild_mon SPECIES_ZUBAT, 31
+ wild_mon SPECIES_ZUBAT, 32
+ wild_mon SPECIES_ZUBAT, 33
+ wild_mon SPECIES_ZUBAT, 28
+ wild_mon SPECIES_ZUBAT, 29
+ wild_mon SPECIES_ZUBAT, 34
+ wild_mon SPECIES_ZUBAT, 35
+ wild_mon SPECIES_GOLBAT, 34
+ wild_mon SPECIES_GOLBAT, 35
+ wild_mon SPECIES_GOLBAT, 33
+ wild_mon SPECIES_GOLBAT, 36
.align 2
gSeafloorCavern_Room7_LandMonsInfo:: @ 8551C3C
@@ -2006,11 +2006,11 @@ gSeafloorCavern_Room7_LandMonsInfo:: @ 8551C3C
.align 2
gSeafloorCavern_Room7_WaterMons:: @ 8551C44
- wild_mon TENTACOOL, 5, 35
- wild_mon ZUBAT, 5, 35
- wild_mon ZUBAT, 30, 35
- wild_mon GOLBAT, 30, 35
- wild_mon GOLBAT, 30, 35
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_ZUBAT, 5, 35
+ wild_mon SPECIES_ZUBAT, 30, 35
+ wild_mon SPECIES_GOLBAT, 30, 35
+ wild_mon SPECIES_GOLBAT, 30, 35
.align 2
gSeafloorCavern_Room7_WaterMonsInfo:: @ 8551C58
@@ -2019,16 +2019,16 @@ gSeafloorCavern_Room7_WaterMonsInfo:: @ 8551C58
.align 2
gSeafloorCavern_Room7_FishingMons:: @ 8551C60
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_WAILMER, 10, 30
+ wild_mon SPECIES_WAILMER, 25, 30
+ wild_mon SPECIES_WAILMER, 30, 35
+ wild_mon SPECIES_WAILMER, 20, 25
+ wild_mon SPECIES_WAILMER, 35, 40
+ wild_mon SPECIES_WAILMER, 40, 45
.align 2
gSeafloorCavern_Room7_FishingMonsInfo:: @ 8551C88
@@ -2037,18 +2037,18 @@ gSeafloorCavern_Room7_FishingMonsInfo:: @ 8551C88
.align 2
gSeafloorCavern_Room8_LandMons:: @ 8551C90
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 28
- wild_mon ZUBAT, 29
- wild_mon ZUBAT, 34
- wild_mon ZUBAT, 35
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
+ wild_mon SPECIES_ZUBAT, 30
+ wild_mon SPECIES_ZUBAT, 31
+ wild_mon SPECIES_ZUBAT, 32
+ wild_mon SPECIES_ZUBAT, 33
+ wild_mon SPECIES_ZUBAT, 28
+ wild_mon SPECIES_ZUBAT, 29
+ wild_mon SPECIES_ZUBAT, 34
+ wild_mon SPECIES_ZUBAT, 35
+ wild_mon SPECIES_GOLBAT, 34
+ wild_mon SPECIES_GOLBAT, 35
+ wild_mon SPECIES_GOLBAT, 33
+ wild_mon SPECIES_GOLBAT, 36
.align 2
gSeafloorCavern_Room8_LandMonsInfo:: @ 8551CC0
@@ -2057,11 +2057,11 @@ gSeafloorCavern_Room8_LandMonsInfo:: @ 8551CC0
.align 2
gSeafloorCavern_Entrance_WaterMons:: @ 8551CC8
- wild_mon TENTACOOL, 5, 35
- wild_mon ZUBAT, 5, 35
- wild_mon ZUBAT, 30, 35
- wild_mon GOLBAT, 30, 35
- wild_mon GOLBAT, 30, 35
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_ZUBAT, 5, 35
+ wild_mon SPECIES_ZUBAT, 30, 35
+ wild_mon SPECIES_GOLBAT, 30, 35
+ wild_mon SPECIES_GOLBAT, 30, 35
.align 2
gSeafloorCavern_Entrance_WaterMonsInfo:: @ 8551CDC
@@ -2070,16 +2070,16 @@ gSeafloorCavern_Entrance_WaterMonsInfo:: @ 8551CDC
.align 2
gSeafloorCavern_Entrance_FishingMons:: @ 8551CE4
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_WAILMER, 10, 30
+ wild_mon SPECIES_WAILMER, 25, 30
+ wild_mon SPECIES_WAILMER, 30, 35
+ wild_mon SPECIES_WAILMER, 20, 25
+ wild_mon SPECIES_WAILMER, 35, 40
+ wild_mon SPECIES_WAILMER, 40, 45
.align 2
gSeafloorCavern_Entrance_FishingMonsInfo:: @ 8551D0C
@@ -2088,18 +2088,18 @@ gSeafloorCavern_Entrance_FishingMonsInfo:: @ 8551D0C
.align 2
gCaveOfOrigin_Entrance_LandMons:: @ 8551D14
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 28
- wild_mon ZUBAT, 29
- wild_mon ZUBAT, 34
- wild_mon ZUBAT, 35
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
+ wild_mon SPECIES_ZUBAT, 30
+ wild_mon SPECIES_ZUBAT, 31
+ wild_mon SPECIES_ZUBAT, 32
+ wild_mon SPECIES_ZUBAT, 33
+ wild_mon SPECIES_ZUBAT, 28
+ wild_mon SPECIES_ZUBAT, 29
+ wild_mon SPECIES_ZUBAT, 34
+ wild_mon SPECIES_ZUBAT, 35
+ wild_mon SPECIES_GOLBAT, 34
+ wild_mon SPECIES_GOLBAT, 35
+ wild_mon SPECIES_GOLBAT, 33
+ wild_mon SPECIES_GOLBAT, 36
.align 2
gCaveOfOrigin_Entrance_LandMonsInfo:: @ 8551D44
@@ -2108,18 +2108,18 @@ gCaveOfOrigin_Entrance_LandMonsInfo:: @ 8551D44
.align 2
gCaveOfOrigin_1F_LandMons:: @ 8551D4C
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon SABLEYE, 30
- wild_mon SABLEYE, 32
- wild_mon SABLEYE, 34
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 34
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
+ wild_mon SPECIES_ZUBAT, 30
+ wild_mon SPECIES_ZUBAT, 31
+ wild_mon SPECIES_ZUBAT, 32
+ wild_mon SPECIES_SABLEYE, 30
+ wild_mon SPECIES_SABLEYE, 32
+ wild_mon SPECIES_SABLEYE, 34
+ wild_mon SPECIES_ZUBAT, 33
+ wild_mon SPECIES_ZUBAT, 34
+ wild_mon SPECIES_GOLBAT, 34
+ wild_mon SPECIES_GOLBAT, 35
+ wild_mon SPECIES_GOLBAT, 33
+ wild_mon SPECIES_GOLBAT, 36
.align 2
gCaveOfOrigin_1F_LandMonsInfo:: @ 8551D7C
@@ -2128,18 +2128,18 @@ gCaveOfOrigin_1F_LandMonsInfo:: @ 8551D7C
.align 2
gCaveOfOrigin_UnusedRubySapphireMap1_LandMons:: @ 8551D84
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon SABLEYE, 30
- wild_mon SABLEYE, 32
- wild_mon SABLEYE, 34
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 34
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
+ wild_mon SPECIES_ZUBAT, 30
+ wild_mon SPECIES_ZUBAT, 31
+ wild_mon SPECIES_ZUBAT, 32
+ wild_mon SPECIES_SABLEYE, 30
+ wild_mon SPECIES_SABLEYE, 32
+ wild_mon SPECIES_SABLEYE, 34
+ wild_mon SPECIES_ZUBAT, 33
+ wild_mon SPECIES_ZUBAT, 34
+ wild_mon SPECIES_GOLBAT, 34
+ wild_mon SPECIES_GOLBAT, 35
+ wild_mon SPECIES_GOLBAT, 33
+ wild_mon SPECIES_GOLBAT, 36
.align 2
gCaveOfOrigin_UnusedRubySapphireMap1_LandMonsInfo:: @ 8551DB4
@@ -2148,18 +2148,18 @@ gCaveOfOrigin_UnusedRubySapphireMap1_LandMonsInfo:: @ 8551DB4
.align 2
gCaveOfOrigin_UnusedRubySapphireMap2_LandMons:: @ 8551DBC
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon SABLEYE, 30
- wild_mon SABLEYE, 32
- wild_mon SABLEYE, 34
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 34
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
+ wild_mon SPECIES_ZUBAT, 30
+ wild_mon SPECIES_ZUBAT, 31
+ wild_mon SPECIES_ZUBAT, 32
+ wild_mon SPECIES_SABLEYE, 30
+ wild_mon SPECIES_SABLEYE, 32
+ wild_mon SPECIES_SABLEYE, 34
+ wild_mon SPECIES_ZUBAT, 33
+ wild_mon SPECIES_ZUBAT, 34
+ wild_mon SPECIES_GOLBAT, 34
+ wild_mon SPECIES_GOLBAT, 35
+ wild_mon SPECIES_GOLBAT, 33
+ wild_mon SPECIES_GOLBAT, 36
.align 2
gCaveOfOrigin_UnusedRubySapphireMap2_LandMonsInfo:: @ 8551DEC
@@ -2168,18 +2168,18 @@ gCaveOfOrigin_UnusedRubySapphireMap2_LandMonsInfo:: @ 8551DEC
.align 2
gCaveOfOrigin_UnusedRubySapphireMap3_LandMons:: @ 8551DF4
- wild_mon ZUBAT, 30
- wild_mon ZUBAT, 31
- wild_mon ZUBAT, 32
- wild_mon SABLEYE, 30
- wild_mon SABLEYE, 32
- wild_mon SABLEYE, 34
- wild_mon ZUBAT, 33
- wild_mon ZUBAT, 34
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 36
+ wild_mon SPECIES_ZUBAT, 30
+ wild_mon SPECIES_ZUBAT, 31
+ wild_mon SPECIES_ZUBAT, 32
+ wild_mon SPECIES_SABLEYE, 30
+ wild_mon SPECIES_SABLEYE, 32
+ wild_mon SPECIES_SABLEYE, 34
+ wild_mon SPECIES_ZUBAT, 33
+ wild_mon SPECIES_ZUBAT, 34
+ wild_mon SPECIES_GOLBAT, 34
+ wild_mon SPECIES_GOLBAT, 35
+ wild_mon SPECIES_GOLBAT, 33
+ wild_mon SPECIES_GOLBAT, 36
.align 2
gCaveOfOrigin_UnusedRubySapphireMap3_LandMonsInfo:: @ 8551E24
@@ -2188,18 +2188,18 @@ gCaveOfOrigin_UnusedRubySapphireMap3_LandMonsInfo:: @ 8551E24
.align 2
gNewMauville_Entrance_LandMons:: @ 8551E2C
- wild_mon VOLTORB, 24
- wild_mon MAGNEMITE, 24
- wild_mon VOLTORB, 25
- wild_mon MAGNEMITE, 25
- wild_mon VOLTORB, 23
- wild_mon MAGNEMITE, 23
- wild_mon VOLTORB, 26
- wild_mon MAGNEMITE, 26
- wild_mon VOLTORB, 22
- wild_mon MAGNEMITE, 22
- wild_mon VOLTORB, 22
- wild_mon MAGNEMITE, 22
+ wild_mon SPECIES_VOLTORB, 24
+ wild_mon SPECIES_MAGNEMITE, 24
+ wild_mon SPECIES_VOLTORB, 25
+ wild_mon SPECIES_MAGNEMITE, 25
+ wild_mon SPECIES_VOLTORB, 23
+ wild_mon SPECIES_MAGNEMITE, 23
+ wild_mon SPECIES_VOLTORB, 26
+ wild_mon SPECIES_MAGNEMITE, 26
+ wild_mon SPECIES_VOLTORB, 22
+ wild_mon SPECIES_MAGNEMITE, 22
+ wild_mon SPECIES_VOLTORB, 22
+ wild_mon SPECIES_MAGNEMITE, 22
.align 2
gNewMauville_Entrance_LandMonsInfo:: @ 8551E5C
@@ -2208,18 +2208,18 @@ gNewMauville_Entrance_LandMonsInfo:: @ 8551E5C
.align 2
gSafariZone_Southwest_LandMons:: @ 8551E64
- wild_mon ODDISH, 25
- wild_mon ODDISH, 27
- wild_mon GIRAFARIG, 25
- wild_mon GIRAFARIG, 27
- wild_mon NATU, 25
- wild_mon DODUO, 27
- wild_mon GLOOM, 25
- wild_mon WOBBUFFET, 27
- wild_mon PIKACHU, 25
- wild_mon WOBBUFFET, 27
- wild_mon PIKACHU, 27
- wild_mon WOBBUFFET, 29
+ wild_mon SPECIES_ODDISH, 25
+ wild_mon SPECIES_ODDISH, 27
+ wild_mon SPECIES_GIRAFARIG, 25
+ wild_mon SPECIES_GIRAFARIG, 27
+ wild_mon SPECIES_NATU, 25
+ wild_mon SPECIES_DODUO, 27
+ wild_mon SPECIES_GLOOM, 25
+ wild_mon SPECIES_WOBBUFFET, 27
+ wild_mon SPECIES_PIKACHU, 25
+ wild_mon SPECIES_WOBBUFFET, 27
+ wild_mon SPECIES_PIKACHU, 27
+ wild_mon SPECIES_WOBBUFFET, 29
.align 2
gSafariZone_Southwest_LandMonsInfo:: @ 8551E94
@@ -2228,11 +2228,11 @@ gSafariZone_Southwest_LandMonsInfo:: @ 8551E94
.align 2
gSafariZone_Southwest_WaterMons:: @ 8551E9C
- wild_mon PSYDUCK, 20, 30
- wild_mon PSYDUCK, 20, 30
- wild_mon PSYDUCK, 30, 35
- wild_mon PSYDUCK, 30, 35
- wild_mon PSYDUCK, 30, 35
+ wild_mon SPECIES_PSYDUCK, 20, 30
+ wild_mon SPECIES_PSYDUCK, 20, 30
+ wild_mon SPECIES_PSYDUCK, 30, 35
+ wild_mon SPECIES_PSYDUCK, 30, 35
+ wild_mon SPECIES_PSYDUCK, 30, 35
.align 2
gSafariZone_Southwest_WaterMonsInfo:: @ 8551EB0
@@ -2241,16 +2241,16 @@ gSafariZone_Southwest_WaterMonsInfo:: @ 8551EB0
.align 2
gSafariZone_Southwest_FishingMons:: @ 8551EB8
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 25
- wild_mon GOLDEEN, 10, 30
- wild_mon GOLDEEN, 25, 30
- wild_mon GOLDEEN, 30, 35
- wild_mon SEAKING, 30, 35
- wild_mon SEAKING, 35, 40
- wild_mon SEAKING, 25, 30
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_GOLDEEN, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_GOLDEEN, 10, 25
+ wild_mon SPECIES_GOLDEEN, 10, 30
+ wild_mon SPECIES_GOLDEEN, 25, 30
+ wild_mon SPECIES_GOLDEEN, 30, 35
+ wild_mon SPECIES_SEAKING, 30, 35
+ wild_mon SPECIES_SEAKING, 35, 40
+ wild_mon SPECIES_SEAKING, 25, 30
.align 2
gSafariZone_Southwest_FishingMonsInfo:: @ 8551EE0
@@ -2259,18 +2259,18 @@ gSafariZone_Southwest_FishingMonsInfo:: @ 8551EE0
.align 2
gSafariZone_North_LandMons:: @ 8551EE8
- wild_mon PHANPY, 27
- wild_mon ODDISH, 27
- wild_mon PHANPY, 29
- wild_mon ODDISH, 29
- wild_mon NATU, 27
- wild_mon GLOOM, 29
- wild_mon GLOOM, 31
- wild_mon NATU, 29
- wild_mon XATU, 29
- wild_mon HERACROSS, 27
- wild_mon XATU, 31
- wild_mon HERACROSS, 29
+ wild_mon SPECIES_PHANPY, 27
+ wild_mon SPECIES_ODDISH, 27
+ wild_mon SPECIES_PHANPY, 29
+ wild_mon SPECIES_ODDISH, 29
+ wild_mon SPECIES_NATU, 27
+ wild_mon SPECIES_GLOOM, 29
+ wild_mon SPECIES_GLOOM, 31
+ wild_mon SPECIES_NATU, 29
+ wild_mon SPECIES_XATU, 29
+ wild_mon SPECIES_HERACROSS, 27
+ wild_mon SPECIES_XATU, 31
+ wild_mon SPECIES_HERACROSS, 29
.align 2
gSafariZone_North_LandMonsInfo:: @ 8551F18
@@ -2279,11 +2279,11 @@ gSafariZone_North_LandMonsInfo:: @ 8551F18
.align 2
gSafariZone_North_RockSmashMons:: @ 8551F20
- wild_mon GEODUDE, 10, 15
- wild_mon GEODUDE, 5, 10
- wild_mon GEODUDE, 15, 20
- wild_mon GEODUDE, 20, 25
- wild_mon GEODUDE, 25, 30
+ wild_mon SPECIES_GEODUDE, 10, 15
+ wild_mon SPECIES_GEODUDE, 5, 10
+ wild_mon SPECIES_GEODUDE, 15, 20
+ wild_mon SPECIES_GEODUDE, 20, 25
+ wild_mon SPECIES_GEODUDE, 25, 30
.align 2
gSafariZone_North_RockSmashMonsInfo:: @ 8551F34
@@ -2292,18 +2292,18 @@ gSafariZone_North_RockSmashMonsInfo:: @ 8551F34
.align 2
gSafariZone_Northwest_LandMons:: @ 8551F3C
- wild_mon RHYHORN, 27
- wild_mon ODDISH, 27
- wild_mon RHYHORN, 29
- wild_mon ODDISH, 29
- wild_mon DODUO, 27
- wild_mon GLOOM, 29
- wild_mon GLOOM, 31
- wild_mon DODUO, 29
- wild_mon DODRIO, 29
- wild_mon PINSIR, 27
- wild_mon DODRIO, 31
- wild_mon PINSIR, 29
+ wild_mon SPECIES_RHYHORN, 27
+ wild_mon SPECIES_ODDISH, 27
+ wild_mon SPECIES_RHYHORN, 29
+ wild_mon SPECIES_ODDISH, 29
+ wild_mon SPECIES_DODUO, 27
+ wild_mon SPECIES_GLOOM, 29
+ wild_mon SPECIES_GLOOM, 31
+ wild_mon SPECIES_DODUO, 29
+ wild_mon SPECIES_DODRIO, 29
+ wild_mon SPECIES_PINSIR, 27
+ wild_mon SPECIES_DODRIO, 31
+ wild_mon SPECIES_PINSIR, 29
.align 2
gSafariZone_Northwest_LandMonsInfo:: @ 8551F6C
@@ -2312,11 +2312,11 @@ gSafariZone_Northwest_LandMonsInfo:: @ 8551F6C
.align 2
gSafariZone_Northwest_WaterMons:: @ 8551F74
- wild_mon PSYDUCK, 20, 30
- wild_mon PSYDUCK, 20, 30
- wild_mon PSYDUCK, 30, 35
- wild_mon GOLDUCK, 30, 35
- wild_mon GOLDUCK, 25, 40
+ wild_mon SPECIES_PSYDUCK, 20, 30
+ wild_mon SPECIES_PSYDUCK, 20, 30
+ wild_mon SPECIES_PSYDUCK, 30, 35
+ wild_mon SPECIES_GOLDUCK, 30, 35
+ wild_mon SPECIES_GOLDUCK, 25, 40
.align 2
gSafariZone_Northwest_WaterMonsInfo:: @ 8551F88
@@ -2325,16 +2325,16 @@ gSafariZone_Northwest_WaterMonsInfo:: @ 8551F88
.align 2
gSafariZone_Northwest_FishingMons:: @ 8551F90
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 25
- wild_mon GOLDEEN, 10, 30
- wild_mon GOLDEEN, 25, 30
- wild_mon GOLDEEN, 30, 35
- wild_mon SEAKING, 30, 35
- wild_mon SEAKING, 35, 40
- wild_mon SEAKING, 25, 30
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_GOLDEEN, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_GOLDEEN, 10, 25
+ wild_mon SPECIES_GOLDEEN, 10, 30
+ wild_mon SPECIES_GOLDEEN, 25, 30
+ wild_mon SPECIES_GOLDEEN, 30, 35
+ wild_mon SPECIES_SEAKING, 30, 35
+ wild_mon SPECIES_SEAKING, 35, 40
+ wild_mon SPECIES_SEAKING, 25, 30
.align 2
gSafariZone_Northwest_FishingMonsInfo:: @ 8551FB8
@@ -2343,18 +2343,18 @@ gSafariZone_Northwest_FishingMonsInfo:: @ 8551FB8
.align 2
gVictoryRoad_B1F_LandMons:: @ 8551FC0
- wild_mon GOLBAT, 40
- wild_mon HARIYAMA, 40
- wild_mon LAIRON, 40
- wild_mon LAIRON, 40
- wild_mon GOLBAT, 38
- wild_mon HARIYAMA, 38
- wild_mon GOLBAT, 42
- wild_mon HARIYAMA, 42
- wild_mon LAIRON, 42
- wild_mon MAWILE, 38
- wild_mon LAIRON, 42
- wild_mon MAWILE, 38
+ wild_mon SPECIES_GOLBAT, 40
+ wild_mon SPECIES_HARIYAMA, 40
+ wild_mon SPECIES_LAIRON, 40
+ wild_mon SPECIES_LAIRON, 40
+ wild_mon SPECIES_GOLBAT, 38
+ wild_mon SPECIES_HARIYAMA, 38
+ wild_mon SPECIES_GOLBAT, 42
+ wild_mon SPECIES_HARIYAMA, 42
+ wild_mon SPECIES_LAIRON, 42
+ wild_mon SPECIES_MAWILE, 38
+ wild_mon SPECIES_LAIRON, 42
+ wild_mon SPECIES_MAWILE, 38
.align 2
gVictoryRoad_B1F_LandMonsInfo:: @ 8551FF0
@@ -2363,11 +2363,11 @@ gVictoryRoad_B1F_LandMonsInfo:: @ 8551FF0
.align 2
gVictoryRoad_B1F_RockSmashMons:: @ 8551FF8
- wild_mon GRAVELER, 30, 40
- wild_mon GEODUDE, 30, 40
- wild_mon GRAVELER, 35, 40
- wild_mon GRAVELER, 35, 40
- wild_mon GRAVELER, 35, 40
+ wild_mon SPECIES_GRAVELER, 30, 40
+ wild_mon SPECIES_GEODUDE, 30, 40
+ wild_mon SPECIES_GRAVELER, 35, 40
+ wild_mon SPECIES_GRAVELER, 35, 40
+ wild_mon SPECIES_GRAVELER, 35, 40
.align 2
gVictoryRoad_B1F_RockSmashMonsInfo:: @ 855200C
@@ -2376,18 +2376,18 @@ gVictoryRoad_B1F_RockSmashMonsInfo:: @ 855200C
.align 2
gVictoryRoad_B2F_LandMons:: @ 8552014
- wild_mon GOLBAT, 40
- wild_mon SABLEYE, 40
- wild_mon LAIRON, 40
- wild_mon LAIRON, 40
- wild_mon GOLBAT, 42
- wild_mon SABLEYE, 42
- wild_mon GOLBAT, 44
- wild_mon SABLEYE, 44
- wild_mon LAIRON, 42
- wild_mon MAWILE, 42
- wild_mon LAIRON, 44
- wild_mon MAWILE, 44
+ wild_mon SPECIES_GOLBAT, 40
+ wild_mon SPECIES_SABLEYE, 40
+ wild_mon SPECIES_LAIRON, 40
+ wild_mon SPECIES_LAIRON, 40
+ wild_mon SPECIES_GOLBAT, 42
+ wild_mon SPECIES_SABLEYE, 42
+ wild_mon SPECIES_GOLBAT, 44
+ wild_mon SPECIES_SABLEYE, 44
+ wild_mon SPECIES_LAIRON, 42
+ wild_mon SPECIES_MAWILE, 42
+ wild_mon SPECIES_LAIRON, 44
+ wild_mon SPECIES_MAWILE, 44
.align 2
gVictoryRoad_B2F_LandMonsInfo:: @ 8552044
@@ -2396,11 +2396,11 @@ gVictoryRoad_B2F_LandMonsInfo:: @ 8552044
.align 2
gVictoryRoad_B2F_WaterMons:: @ 855204C
- wild_mon GOLBAT, 30, 35
- wild_mon GOLBAT, 25, 30
- wild_mon GOLBAT, 35, 40
- wild_mon GOLBAT, 35, 40
- wild_mon GOLBAT, 35, 40
+ wild_mon SPECIES_GOLBAT, 30, 35
+ wild_mon SPECIES_GOLBAT, 25, 30
+ wild_mon SPECIES_GOLBAT, 35, 40
+ wild_mon SPECIES_GOLBAT, 35, 40
+ wild_mon SPECIES_GOLBAT, 35, 40
.align 2
gVictoryRoad_B2F_WaterMonsInfo:: @ 8552060
@@ -2409,16 +2409,16 @@ gVictoryRoad_B2F_WaterMonsInfo:: @ 8552060
.align 2
gVictoryRoad_B2F_FishingMons:: @ 8552068
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 30
- wild_mon BARBOACH, 10, 30
- wild_mon BARBOACH, 25, 30
- wild_mon BARBOACH, 30, 35
- wild_mon WHISCASH, 30, 35
- wild_mon WHISCASH, 35, 40
- wild_mon WHISCASH, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_GOLDEEN, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_GOLDEEN, 10, 30
+ wild_mon SPECIES_BARBOACH, 10, 30
+ wild_mon SPECIES_BARBOACH, 25, 30
+ wild_mon SPECIES_BARBOACH, 30, 35
+ wild_mon SPECIES_WHISCASH, 30, 35
+ wild_mon SPECIES_WHISCASH, 35, 40
+ wild_mon SPECIES_WHISCASH, 40, 45
.align 2
gVictoryRoad_B2F_FishingMonsInfo:: @ 8552090
@@ -2427,18 +2427,18 @@ gVictoryRoad_B2F_FishingMonsInfo:: @ 8552090
.align 2
gMeteorFalls_1F_1R_LandMons:: @ 8552098
- wild_mon ZUBAT, 16
- wild_mon ZUBAT, 17
- wild_mon ZUBAT, 18
- wild_mon ZUBAT, 15
- wild_mon ZUBAT, 14
- wild_mon SOLROCK, 16
- wild_mon SOLROCK, 18
- wild_mon SOLROCK, 14
- wild_mon ZUBAT, 19
- wild_mon ZUBAT, 20
- wild_mon ZUBAT, 19
- wild_mon ZUBAT, 20
+ wild_mon SPECIES_ZUBAT, 16
+ wild_mon SPECIES_ZUBAT, 17
+ wild_mon SPECIES_ZUBAT, 18
+ wild_mon SPECIES_ZUBAT, 15
+ wild_mon SPECIES_ZUBAT, 14
+ wild_mon SPECIES_SOLROCK, 16
+ wild_mon SPECIES_SOLROCK, 18
+ wild_mon SPECIES_SOLROCK, 14
+ wild_mon SPECIES_ZUBAT, 19
+ wild_mon SPECIES_ZUBAT, 20
+ wild_mon SPECIES_ZUBAT, 19
+ wild_mon SPECIES_ZUBAT, 20
.align 2
gMeteorFalls_1F_1R_LandMonsInfo:: @ 85520C8
@@ -2447,11 +2447,11 @@ gMeteorFalls_1F_1R_LandMonsInfo:: @ 85520C8
.align 2
gMeteorFalls_1F_1R_WaterMons:: @ 85520D0
- wild_mon ZUBAT, 5, 35
- wild_mon ZUBAT, 30, 35
- wild_mon SOLROCK, 25, 35
- wild_mon SOLROCK, 15, 25
- wild_mon SOLROCK, 5, 15
+ wild_mon SPECIES_ZUBAT, 5, 35
+ wild_mon SPECIES_ZUBAT, 30, 35
+ wild_mon SPECIES_SOLROCK, 25, 35
+ wild_mon SPECIES_SOLROCK, 15, 25
+ wild_mon SPECIES_SOLROCK, 5, 15
.align 2
gMeteorFalls_1F_1R_WaterMonsInfo:: @ 85520E4
@@ -2460,16 +2460,16 @@ gMeteorFalls_1F_1R_WaterMonsInfo:: @ 85520E4
.align 2
gMeteorFalls_1F_1R_FishingMons:: @ 85520EC
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 30
- wild_mon BARBOACH, 10, 30
- wild_mon BARBOACH, 25, 30
- wild_mon BARBOACH, 30, 35
- wild_mon BARBOACH, 20, 25
- wild_mon BARBOACH, 35, 40
- wild_mon BARBOACH, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_GOLDEEN, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_GOLDEEN, 10, 30
+ wild_mon SPECIES_BARBOACH, 10, 30
+ wild_mon SPECIES_BARBOACH, 25, 30
+ wild_mon SPECIES_BARBOACH, 30, 35
+ wild_mon SPECIES_BARBOACH, 20, 25
+ wild_mon SPECIES_BARBOACH, 35, 40
+ wild_mon SPECIES_BARBOACH, 40, 45
.align 2
gMeteorFalls_1F_1R_FishingMonsInfo:: @ 8552114
@@ -2478,18 +2478,18 @@ gMeteorFalls_1F_1R_FishingMonsInfo:: @ 8552114
.align 2
gMeteorFalls_1F_2R_LandMons:: @ 855211C
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon SOLROCK, 35
- wild_mon SOLROCK, 33
- wild_mon SOLROCK, 37
- wild_mon GOLBAT, 35
- wild_mon SOLROCK, 39
- wild_mon GOLBAT, 38
- wild_mon GOLBAT, 40
- wild_mon GOLBAT, 38
- wild_mon GOLBAT, 40
+ wild_mon SPECIES_GOLBAT, 33
+ wild_mon SPECIES_GOLBAT, 35
+ wild_mon SPECIES_GOLBAT, 33
+ wild_mon SPECIES_SOLROCK, 35
+ wild_mon SPECIES_SOLROCK, 33
+ wild_mon SPECIES_SOLROCK, 37
+ wild_mon SPECIES_GOLBAT, 35
+ wild_mon SPECIES_SOLROCK, 39
+ wild_mon SPECIES_GOLBAT, 38
+ wild_mon SPECIES_GOLBAT, 40
+ wild_mon SPECIES_GOLBAT, 38
+ wild_mon SPECIES_GOLBAT, 40
.align 2
gMeteorFalls_1F_2R_LandMonsInfo:: @ 855214C
@@ -2498,11 +2498,11 @@ gMeteorFalls_1F_2R_LandMonsInfo:: @ 855214C
.align 2
gMeteorFalls_1F_2R_WaterMons:: @ 8552154
- wild_mon GOLBAT, 30, 35
- wild_mon GOLBAT, 30, 35
- wild_mon SOLROCK, 25, 35
- wild_mon SOLROCK, 15, 25
- wild_mon SOLROCK, 5, 15
+ wild_mon SPECIES_GOLBAT, 30, 35
+ wild_mon SPECIES_GOLBAT, 30, 35
+ wild_mon SPECIES_SOLROCK, 25, 35
+ wild_mon SPECIES_SOLROCK, 15, 25
+ wild_mon SPECIES_SOLROCK, 5, 15
.align 2
gMeteorFalls_1F_2R_WaterMonsInfo:: @ 8552168
@@ -2511,16 +2511,16 @@ gMeteorFalls_1F_2R_WaterMonsInfo:: @ 8552168
.align 2
gMeteorFalls_1F_2R_FishingMons:: @ 8552170
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 30
- wild_mon BARBOACH, 10, 30
- wild_mon BARBOACH, 25, 30
- wild_mon BARBOACH, 30, 35
- wild_mon WHISCASH, 30, 35
- wild_mon WHISCASH, 35, 40
- wild_mon WHISCASH, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_GOLDEEN, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_GOLDEEN, 10, 30
+ wild_mon SPECIES_BARBOACH, 10, 30
+ wild_mon SPECIES_BARBOACH, 25, 30
+ wild_mon SPECIES_BARBOACH, 30, 35
+ wild_mon SPECIES_WHISCASH, 30, 35
+ wild_mon SPECIES_WHISCASH, 35, 40
+ wild_mon SPECIES_WHISCASH, 40, 45
.align 2
gMeteorFalls_1F_2R_FishingMonsInfo:: @ 8552198
@@ -2529,18 +2529,18 @@ gMeteorFalls_1F_2R_FishingMonsInfo:: @ 8552198
.align 2
gMeteorFalls_B1F_1R_LandMons:: @ 85521A0
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon SOLROCK, 35
- wild_mon SOLROCK, 33
- wild_mon SOLROCK, 37
- wild_mon GOLBAT, 35
- wild_mon SOLROCK, 39
- wild_mon GOLBAT, 38
- wild_mon GOLBAT, 40
- wild_mon GOLBAT, 38
- wild_mon GOLBAT, 40
+ wild_mon SPECIES_GOLBAT, 33
+ wild_mon SPECIES_GOLBAT, 35
+ wild_mon SPECIES_GOLBAT, 33
+ wild_mon SPECIES_SOLROCK, 35
+ wild_mon SPECIES_SOLROCK, 33
+ wild_mon SPECIES_SOLROCK, 37
+ wild_mon SPECIES_GOLBAT, 35
+ wild_mon SPECIES_SOLROCK, 39
+ wild_mon SPECIES_GOLBAT, 38
+ wild_mon SPECIES_GOLBAT, 40
+ wild_mon SPECIES_GOLBAT, 38
+ wild_mon SPECIES_GOLBAT, 40
.align 2
gMeteorFalls_B1F_1R_LandMonsInfo:: @ 85521D0
@@ -2549,11 +2549,11 @@ gMeteorFalls_B1F_1R_LandMonsInfo:: @ 85521D0
.align 2
gMeteorFalls_B1F_1R_WaterMons:: @ 85521D8
- wild_mon GOLBAT, 30, 35
- wild_mon GOLBAT, 30, 35
- wild_mon SOLROCK, 25, 35
- wild_mon SOLROCK, 15, 25
- wild_mon SOLROCK, 5, 15
+ wild_mon SPECIES_GOLBAT, 30, 35
+ wild_mon SPECIES_GOLBAT, 30, 35
+ wild_mon SPECIES_SOLROCK, 25, 35
+ wild_mon SPECIES_SOLROCK, 15, 25
+ wild_mon SPECIES_SOLROCK, 5, 15
.align 2
gMeteorFalls_B1F_1R_WaterMonsInfo:: @ 85521EC
@@ -2562,16 +2562,16 @@ gMeteorFalls_B1F_1R_WaterMonsInfo:: @ 85521EC
.align 2
gMeteorFalls_B1F_1R_FishingMons:: @ 85521F4
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 30
- wild_mon BARBOACH, 10, 30
- wild_mon BARBOACH, 25, 30
- wild_mon BARBOACH, 30, 35
- wild_mon WHISCASH, 30, 35
- wild_mon WHISCASH, 35, 40
- wild_mon WHISCASH, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_GOLDEEN, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_GOLDEEN, 10, 30
+ wild_mon SPECIES_BARBOACH, 10, 30
+ wild_mon SPECIES_BARBOACH, 25, 30
+ wild_mon SPECIES_BARBOACH, 30, 35
+ wild_mon SPECIES_WHISCASH, 30, 35
+ wild_mon SPECIES_WHISCASH, 35, 40
+ wild_mon SPECIES_WHISCASH, 40, 45
.align 2
gMeteorFalls_B1F_1R_FishingMonsInfo:: @ 855221C
@@ -2580,18 +2580,18 @@ gMeteorFalls_B1F_1R_FishingMonsInfo:: @ 855221C
.align 2
gShoalCave_LowTideStairsRoom_LandMons:: @ 8552224
- wild_mon ZUBAT, 26
- wild_mon SPHEAL, 26
- wild_mon ZUBAT, 28
- wild_mon SPHEAL, 28
- wild_mon ZUBAT, 30
- wild_mon SPHEAL, 30
- wild_mon ZUBAT, 32
- wild_mon SPHEAL, 32
- wild_mon GOLBAT, 32
- wild_mon SPHEAL, 32
- wild_mon GOLBAT, 32
- wild_mon SPHEAL, 32
+ wild_mon SPECIES_ZUBAT, 26
+ wild_mon SPECIES_SPHEAL, 26
+ wild_mon SPECIES_ZUBAT, 28
+ wild_mon SPECIES_SPHEAL, 28
+ wild_mon SPECIES_ZUBAT, 30
+ wild_mon SPECIES_SPHEAL, 30
+ wild_mon SPECIES_ZUBAT, 32
+ wild_mon SPECIES_SPHEAL, 32
+ wild_mon SPECIES_GOLBAT, 32
+ wild_mon SPECIES_SPHEAL, 32
+ wild_mon SPECIES_GOLBAT, 32
+ wild_mon SPECIES_SPHEAL, 32
.align 2
gShoalCave_LowTideStairsRoom_LandMonsInfo:: @ 8552254
@@ -2600,18 +2600,18 @@ gShoalCave_LowTideStairsRoom_LandMonsInfo:: @ 8552254
.align 2
gShoalCave_LowTideLowerRoom_LandMons:: @ 855225C
- wild_mon ZUBAT, 26
- wild_mon SPHEAL, 26
- wild_mon ZUBAT, 28
- wild_mon SPHEAL, 28
- wild_mon ZUBAT, 30
- wild_mon SPHEAL, 30
- wild_mon ZUBAT, 32
- wild_mon SPHEAL, 32
- wild_mon GOLBAT, 32
- wild_mon SPHEAL, 32
- wild_mon GOLBAT, 32
- wild_mon SPHEAL, 32
+ wild_mon SPECIES_ZUBAT, 26
+ wild_mon SPECIES_SPHEAL, 26
+ wild_mon SPECIES_ZUBAT, 28
+ wild_mon SPECIES_SPHEAL, 28
+ wild_mon SPECIES_ZUBAT, 30
+ wild_mon SPECIES_SPHEAL, 30
+ wild_mon SPECIES_ZUBAT, 32
+ wild_mon SPECIES_SPHEAL, 32
+ wild_mon SPECIES_GOLBAT, 32
+ wild_mon SPECIES_SPHEAL, 32
+ wild_mon SPECIES_GOLBAT, 32
+ wild_mon SPECIES_SPHEAL, 32
.align 2
gShoalCave_LowTideLowerRoom_LandMonsInfo:: @ 855228C
@@ -2620,18 +2620,18 @@ gShoalCave_LowTideLowerRoom_LandMonsInfo:: @ 855228C
.align 2
gShoalCave_LowTideInnerRoom_LandMons:: @ 8552294
- wild_mon ZUBAT, 26
- wild_mon SPHEAL, 26
- wild_mon ZUBAT, 28
- wild_mon SPHEAL, 28
- wild_mon ZUBAT, 30
- wild_mon SPHEAL, 30
- wild_mon ZUBAT, 32
- wild_mon SPHEAL, 32
- wild_mon GOLBAT, 32
- wild_mon SPHEAL, 32
- wild_mon GOLBAT, 32
- wild_mon SPHEAL, 32
+ wild_mon SPECIES_ZUBAT, 26
+ wild_mon SPECIES_SPHEAL, 26
+ wild_mon SPECIES_ZUBAT, 28
+ wild_mon SPECIES_SPHEAL, 28
+ wild_mon SPECIES_ZUBAT, 30
+ wild_mon SPECIES_SPHEAL, 30
+ wild_mon SPECIES_ZUBAT, 32
+ wild_mon SPECIES_SPHEAL, 32
+ wild_mon SPECIES_GOLBAT, 32
+ wild_mon SPECIES_SPHEAL, 32
+ wild_mon SPECIES_GOLBAT, 32
+ wild_mon SPECIES_SPHEAL, 32
.align 2
gShoalCave_LowTideInnerRoom_LandMonsInfo:: @ 85522C4
@@ -2640,11 +2640,11 @@ gShoalCave_LowTideInnerRoom_LandMonsInfo:: @ 85522C4
.align 2
gShoalCave_LowTideInnerRoom_WaterMons:: @ 85522CC
- wild_mon TENTACOOL, 5, 35
- wild_mon ZUBAT, 5, 35
- wild_mon SPHEAL, 25, 30
- wild_mon SPHEAL, 25, 30
- wild_mon SPHEAL, 25, 35
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_ZUBAT, 5, 35
+ wild_mon SPECIES_SPHEAL, 25, 30
+ wild_mon SPECIES_SPHEAL, 25, 30
+ wild_mon SPECIES_SPHEAL, 25, 35
.align 2
gShoalCave_LowTideInnerRoom_WaterMonsInfo:: @ 85522E0
@@ -2653,16 +2653,16 @@ gShoalCave_LowTideInnerRoom_WaterMonsInfo:: @ 85522E0
.align 2
gShoalCave_LowTideInnerRoom_FishingMons:: @ 85522E8
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_WAILMER, 10, 30
+ wild_mon SPECIES_WAILMER, 25, 30
+ wild_mon SPECIES_WAILMER, 30, 35
+ wild_mon SPECIES_WAILMER, 20, 25
+ wild_mon SPECIES_WAILMER, 35, 40
+ wild_mon SPECIES_WAILMER, 40, 45
.align 2
gShoalCave_LowTideInnerRoom_FishingMonsInfo:: @ 8552310
@@ -2671,18 +2671,18 @@ gShoalCave_LowTideInnerRoom_FishingMonsInfo:: @ 8552310
.align 2
gShoalCave_LowTideEntranceRoom_LandMons:: @ 8552318
- wild_mon ZUBAT, 26
- wild_mon SPHEAL, 26
- wild_mon ZUBAT, 28
- wild_mon SPHEAL, 28
- wild_mon ZUBAT, 30
- wild_mon SPHEAL, 30
- wild_mon ZUBAT, 32
- wild_mon SPHEAL, 32
- wild_mon GOLBAT, 32
- wild_mon SPHEAL, 32
- wild_mon GOLBAT, 32
- wild_mon SPHEAL, 32
+ wild_mon SPECIES_ZUBAT, 26
+ wild_mon SPECIES_SPHEAL, 26
+ wild_mon SPECIES_ZUBAT, 28
+ wild_mon SPECIES_SPHEAL, 28
+ wild_mon SPECIES_ZUBAT, 30
+ wild_mon SPECIES_SPHEAL, 30
+ wild_mon SPECIES_ZUBAT, 32
+ wild_mon SPECIES_SPHEAL, 32
+ wild_mon SPECIES_GOLBAT, 32
+ wild_mon SPECIES_SPHEAL, 32
+ wild_mon SPECIES_GOLBAT, 32
+ wild_mon SPECIES_SPHEAL, 32
.align 2
gShoalCave_LowTideEntranceRoom_LandMonsInfo:: @ 8552348
@@ -2691,11 +2691,11 @@ gShoalCave_LowTideEntranceRoom_LandMonsInfo:: @ 8552348
.align 2
gShoalCave_LowTideEntranceRoom_WaterMons:: @ 8552350
- wild_mon TENTACOOL, 5, 35
- wild_mon ZUBAT, 5, 35
- wild_mon SPHEAL, 25, 30
- wild_mon SPHEAL, 25, 30
- wild_mon SPHEAL, 25, 35
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_ZUBAT, 5, 35
+ wild_mon SPECIES_SPHEAL, 25, 30
+ wild_mon SPECIES_SPHEAL, 25, 30
+ wild_mon SPECIES_SPHEAL, 25, 35
.align 2
gShoalCave_LowTideEntranceRoom_WaterMonsInfo:: @ 8552364
@@ -2704,16 +2704,16 @@ gShoalCave_LowTideEntranceRoom_WaterMonsInfo:: @ 8552364
.align 2
gShoalCave_LowTideEntranceRoom_FishingMons:: @ 855236C
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_WAILMER, 10, 30
+ wild_mon SPECIES_WAILMER, 25, 30
+ wild_mon SPECIES_WAILMER, 30, 35
+ wild_mon SPECIES_WAILMER, 20, 25
+ wild_mon SPECIES_WAILMER, 35, 40
+ wild_mon SPECIES_WAILMER, 40, 45
.align 2
gShoalCave_LowTideEntranceRoom_FishingMonsInfo:: @ 8552394
@@ -2722,11 +2722,11 @@ gShoalCave_LowTideEntranceRoom_FishingMonsInfo:: @ 8552394
.align 2
gLilycoveCity_WaterMons:: @ 855239C
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_WINGULL, 10, 30
+ wild_mon SPECIES_WINGULL, 15, 25
+ wild_mon SPECIES_PELIPPER, 25, 30
+ wild_mon SPECIES_PELIPPER, 25, 30
.align 2
gLilycoveCity_WaterMonsInfo:: @ 85523B0
@@ -2735,16 +2735,16 @@ gLilycoveCity_WaterMonsInfo:: @ 85523B0
.align 2
gLilycoveCity_FishingMons:: @ 85523B8
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon STARYU, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_WAILMER, 10, 30
+ wild_mon SPECIES_WAILMER, 25, 30
+ wild_mon SPECIES_WAILMER, 30, 35
+ wild_mon SPECIES_STARYU, 25, 30
+ wild_mon SPECIES_WAILMER, 35, 40
+ wild_mon SPECIES_WAILMER, 40, 45
.align 2
gLilycoveCity_FishingMonsInfo:: @ 85523E0
@@ -2753,11 +2753,11 @@ gLilycoveCity_FishingMonsInfo:: @ 85523E0
.align 2
gDewfordTown_WaterMons:: @ 85523E8
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_WINGULL, 10, 30
+ wild_mon SPECIES_WINGULL, 15, 25
+ wild_mon SPECIES_PELIPPER, 25, 30
+ wild_mon SPECIES_PELIPPER, 25, 30
.align 2
gDewfordTown_WaterMonsInfo:: @ 85523FC
@@ -2766,16 +2766,16 @@ gDewfordTown_WaterMonsInfo:: @ 85523FC
.align 2
gDewfordTown_FishingMons:: @ 8552404
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_WAILMER, 10, 30
+ wild_mon SPECIES_WAILMER, 25, 30
+ wild_mon SPECIES_WAILMER, 30, 35
+ wild_mon SPECIES_WAILMER, 20, 25
+ wild_mon SPECIES_WAILMER, 35, 40
+ wild_mon SPECIES_WAILMER, 40, 45
.align 2
gDewfordTown_FishingMonsInfo:: @ 855242C
@@ -2784,11 +2784,11 @@ gDewfordTown_FishingMonsInfo:: @ 855242C
.align 2
gSlateportCity_WaterMons:: @ 8552434
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_WINGULL, 10, 30
+ wild_mon SPECIES_WINGULL, 15, 25
+ wild_mon SPECIES_PELIPPER, 25, 30
+ wild_mon SPECIES_PELIPPER, 25, 30
.align 2
gSlateportCity_WaterMonsInfo:: @ 8552448
@@ -2797,16 +2797,16 @@ gSlateportCity_WaterMonsInfo:: @ 8552448
.align 2
gSlateportCity_FishingMons:: @ 8552450
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 20, 25
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_WAILMER, 10, 30
+ wild_mon SPECIES_WAILMER, 25, 30
+ wild_mon SPECIES_WAILMER, 30, 35
+ wild_mon SPECIES_WAILMER, 20, 25
+ wild_mon SPECIES_WAILMER, 35, 40
+ wild_mon SPECIES_WAILMER, 40, 45
.align 2
gSlateportCity_FishingMonsInfo:: @ 8552478
@@ -2815,11 +2815,11 @@ gSlateportCity_FishingMonsInfo:: @ 8552478
.align 2
gMossdeepCity_WaterMons:: @ 8552480
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_WINGULL, 10, 30
+ wild_mon SPECIES_WINGULL, 15, 25
+ wild_mon SPECIES_PELIPPER, 25, 30
+ wild_mon SPECIES_PELIPPER, 25, 30
.align 2
gMossdeepCity_WaterMonsInfo:: @ 8552494
@@ -2828,16 +2828,16 @@ gMossdeepCity_WaterMonsInfo:: @ 8552494
.align 2
gMossdeepCity_FishingMons:: @ 855249C
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_WAILMER, 10, 30
+ wild_mon SPECIES_SHARPEDO, 30, 35
+ wild_mon SPECIES_WAILMER, 30, 35
+ wild_mon SPECIES_WAILMER, 25, 30
+ wild_mon SPECIES_WAILMER, 35, 40
+ wild_mon SPECIES_WAILMER, 40, 45
.align 2
gMossdeepCity_FishingMonsInfo:: @ 85524C4
@@ -2846,11 +2846,11 @@ gMossdeepCity_FishingMonsInfo:: @ 85524C4
.align 2
gPacifidlogTown_WaterMons:: @ 85524CC
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_WINGULL, 10, 30
+ wild_mon SPECIES_WINGULL, 15, 25
+ wild_mon SPECIES_PELIPPER, 25, 30
+ wild_mon SPECIES_PELIPPER, 25, 30
.align 2
gPacifidlogTown_WaterMonsInfo:: @ 85524E0
@@ -2859,16 +2859,16 @@ gPacifidlogTown_WaterMonsInfo:: @ 85524E0
.align 2
gPacifidlogTown_FishingMons:: @ 85524E8
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon TENTACOOL, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon SHARPEDO, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon WAILMER, 25, 30
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_TENTACOOL, 10, 30
+ wild_mon SPECIES_WAILMER, 10, 30
+ wild_mon SPECIES_SHARPEDO, 30, 35
+ wild_mon SPECIES_WAILMER, 30, 35
+ wild_mon SPECIES_WAILMER, 25, 30
+ wild_mon SPECIES_WAILMER, 35, 40
+ wild_mon SPECIES_WAILMER, 40, 45
.align 2
gPacifidlogTown_FishingMonsInfo:: @ 8552510
@@ -2877,11 +2877,11 @@ gPacifidlogTown_FishingMonsInfo:: @ 8552510
.align 2
gEverGrandeCity_WaterMons:: @ 8552518
- wild_mon TENTACOOL, 5, 35
- wild_mon WINGULL, 10, 30
- wild_mon WINGULL, 15, 25
- wild_mon PELIPPER, 25, 30
- wild_mon PELIPPER, 25, 30
+ wild_mon SPECIES_TENTACOOL, 5, 35
+ wild_mon SPECIES_WINGULL, 10, 30
+ wild_mon SPECIES_WINGULL, 15, 25
+ wild_mon SPECIES_PELIPPER, 25, 30
+ wild_mon SPECIES_PELIPPER, 25, 30
.align 2
gEverGrandeCity_WaterMonsInfo:: @ 855252C
@@ -2890,16 +2890,16 @@ gEverGrandeCity_WaterMonsInfo:: @ 855252C
.align 2
gEverGrandeCity_FishingMons:: @ 8552534
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon LUVDISC, 10, 30
- wild_mon WAILMER, 10, 30
- wild_mon LUVDISC, 30, 35
- wild_mon WAILMER, 30, 35
- wild_mon CORSOLA, 30, 35
- wild_mon WAILMER, 35, 40
- wild_mon WAILMER, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_LUVDISC, 10, 30
+ wild_mon SPECIES_WAILMER, 10, 30
+ wild_mon SPECIES_LUVDISC, 30, 35
+ wild_mon SPECIES_WAILMER, 30, 35
+ wild_mon SPECIES_CORSOLA, 30, 35
+ wild_mon SPECIES_WAILMER, 35, 40
+ wild_mon SPECIES_WAILMER, 40, 45
.align 2
gEverGrandeCity_FishingMonsInfo:: @ 855255C
@@ -2908,11 +2908,11 @@ gEverGrandeCity_FishingMonsInfo:: @ 855255C
.align 2
gPetalburgCity_WaterMons:: @ 8552564
- wild_mon MARILL, 20, 30
- wild_mon MARILL, 10, 20
- wild_mon MARILL, 30, 35
- wild_mon MARILL, 5, 10
- wild_mon MARILL, 5, 10
+ wild_mon SPECIES_MARILL, 20, 30
+ wild_mon SPECIES_MARILL, 10, 20
+ wild_mon SPECIES_MARILL, 30, 35
+ wild_mon SPECIES_MARILL, 5, 10
+ wild_mon SPECIES_MARILL, 5, 10
.align 2
gPetalburgCity_WaterMonsInfo:: @ 8552578
@@ -2921,16 +2921,16 @@ gPetalburgCity_WaterMonsInfo:: @ 8552578
.align 2
gPetalburgCity_FishingMons:: @ 8552580
- wild_mon MAGIKARP, 5, 10
- wild_mon GOLDEEN, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon GOLDEEN, 10, 30
- wild_mon CORPHISH, 10, 30
- wild_mon CORPHISH, 25, 30
- wild_mon CORPHISH, 30, 35
- wild_mon CORPHISH, 20, 25
- wild_mon CORPHISH, 35, 40
- wild_mon CORPHISH, 40, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_GOLDEEN, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_GOLDEEN, 10, 30
+ wild_mon SPECIES_CORPHISH, 10, 30
+ wild_mon SPECIES_CORPHISH, 25, 30
+ wild_mon SPECIES_CORPHISH, 30, 35
+ wild_mon SPECIES_CORPHISH, 20, 25
+ wild_mon SPECIES_CORPHISH, 35, 40
+ wild_mon SPECIES_CORPHISH, 40, 45
.align 2
gPetalburgCity_FishingMonsInfo:: @ 85525A8
@@ -2939,11 +2939,11 @@ gPetalburgCity_FishingMonsInfo:: @ 85525A8
.align 2
gUnderwater1_WaterMons:: @ 85525B0
- wild_mon CLAMPERL, 20, 30
- wild_mon CHINCHOU, 20, 30
- wild_mon CLAMPERL, 30, 35
- wild_mon RELICANTH, 30, 35
- wild_mon RELICANTH, 30, 35
+ wild_mon SPECIES_CLAMPERL, 20, 30
+ wild_mon SPECIES_CHINCHOU, 20, 30
+ wild_mon SPECIES_CLAMPERL, 30, 35
+ wild_mon SPECIES_RELICANTH, 30, 35
+ wild_mon SPECIES_RELICANTH, 30, 35
.align 2
gUnderwater1_WaterMonsInfo:: @ 85525C4
@@ -2952,18 +2952,18 @@ gUnderwater1_WaterMonsInfo:: @ 85525C4
.align 2
gShoalCave_LowTideIceRoom_LandMons:: @ 85525CC
- wild_mon ZUBAT, 26
- wild_mon SPHEAL, 26
- wild_mon ZUBAT, 28
- wild_mon SPHEAL, 28
- wild_mon ZUBAT, 30
- wild_mon SPHEAL, 30
- wild_mon SNORUNT, 26
- wild_mon SPHEAL, 32
- wild_mon GOLBAT, 30
- wild_mon SNORUNT, 28
- wild_mon GOLBAT, 32
- wild_mon SNORUNT, 30
+ wild_mon SPECIES_ZUBAT, 26
+ wild_mon SPECIES_SPHEAL, 26
+ wild_mon SPECIES_ZUBAT, 28
+ wild_mon SPECIES_SPHEAL, 28
+ wild_mon SPECIES_ZUBAT, 30
+ wild_mon SPECIES_SPHEAL, 30
+ wild_mon SPECIES_SNORUNT, 26
+ wild_mon SPECIES_SPHEAL, 32
+ wild_mon SPECIES_GOLBAT, 30
+ wild_mon SPECIES_SNORUNT, 28
+ wild_mon SPECIES_GOLBAT, 32
+ wild_mon SPECIES_SNORUNT, 30
.align 2
gShoalCave_LowTideIceRoom_LandMonsInfo:: @ 85525FC
@@ -2972,18 +2972,18 @@ gShoalCave_LowTideIceRoom_LandMonsInfo:: @ 85525FC
.align 2
gSkyPillar_1F_LandMons:: @ 8552604
- wild_mon SABLEYE, 33
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon SABLEYE, 34
- wild_mon CLAYDOL, 36
- wild_mon BANETTE, 37
- wild_mon BANETTE, 38
- wild_mon CLAYDOL, 36
- wild_mon CLAYDOL, 37
- wild_mon CLAYDOL, 38
- wild_mon CLAYDOL, 37
- wild_mon CLAYDOL, 38
+ wild_mon SPECIES_SABLEYE, 33
+ wild_mon SPECIES_GOLBAT, 34
+ wild_mon SPECIES_GOLBAT, 35
+ wild_mon SPECIES_SABLEYE, 34
+ wild_mon SPECIES_CLAYDOL, 36
+ wild_mon SPECIES_BANETTE, 37
+ wild_mon SPECIES_BANETTE, 38
+ wild_mon SPECIES_CLAYDOL, 36
+ wild_mon SPECIES_CLAYDOL, 37
+ wild_mon SPECIES_CLAYDOL, 38
+ wild_mon SPECIES_CLAYDOL, 37
+ wild_mon SPECIES_CLAYDOL, 38
.align 2
gSkyPillar_1F_LandMonsInfo:: @ 8552634
@@ -2992,11 +2992,11 @@ gSkyPillar_1F_LandMonsInfo:: @ 8552634
.align 2
gSootopolisCity_WaterMons:: @ 855263C
- wild_mon MAGIKARP, 5, 35
- wild_mon MAGIKARP, 10, 30
- wild_mon MAGIKARP, 15, 25
- wild_mon MAGIKARP, 25, 30
- wild_mon MAGIKARP, 25, 30
+ wild_mon SPECIES_MAGIKARP, 5, 35
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_MAGIKARP, 15, 25
+ wild_mon SPECIES_MAGIKARP, 25, 30
+ wild_mon SPECIES_MAGIKARP, 25, 30
.align 2
gSootopolisCity_WaterMonsInfo:: @ 8552650
@@ -3005,16 +3005,16 @@ gSootopolisCity_WaterMonsInfo:: @ 8552650
.align 2
gSootopolisCity_FishingMons:: @ 8552658
- wild_mon MAGIKARP, 5, 10
- wild_mon TENTACOOL, 5, 10
- wild_mon MAGIKARP, 10, 30
- wild_mon MAGIKARP, 10, 30
- wild_mon MAGIKARP, 10, 30
- wild_mon MAGIKARP, 30, 35
- wild_mon MAGIKARP, 30, 35
- wild_mon GYARADOS, 35, 40
- wild_mon GYARADOS, 35, 45
- wild_mon GYARADOS, 5, 45
+ wild_mon SPECIES_MAGIKARP, 5, 10
+ wild_mon SPECIES_TENTACOOL, 5, 10
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_MAGIKARP, 10, 30
+ wild_mon SPECIES_MAGIKARP, 30, 35
+ wild_mon SPECIES_MAGIKARP, 30, 35
+ wild_mon SPECIES_GYARADOS, 35, 40
+ wild_mon SPECIES_GYARADOS, 35, 45
+ wild_mon SPECIES_GYARADOS, 5, 45
.align 2
gSootopolisCity_FishingMonsInfo:: @ 8552680
@@ -3023,18 +3023,18 @@ gSootopolisCity_FishingMonsInfo:: @ 8552680
.align 2
gSkyPillar_3F_LandMons:: @ 8552688
- wild_mon SABLEYE, 33
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon SABLEYE, 34
- wild_mon CLAYDOL, 36
- wild_mon BANETTE, 37
- wild_mon BANETTE, 38
- wild_mon CLAYDOL, 36
- wild_mon CLAYDOL, 37
- wild_mon CLAYDOL, 38
- wild_mon CLAYDOL, 37
- wild_mon CLAYDOL, 38
+ wild_mon SPECIES_SABLEYE, 33
+ wild_mon SPECIES_GOLBAT, 34
+ wild_mon SPECIES_GOLBAT, 35
+ wild_mon SPECIES_SABLEYE, 34
+ wild_mon SPECIES_CLAYDOL, 36
+ wild_mon SPECIES_BANETTE, 37
+ wild_mon SPECIES_BANETTE, 38
+ wild_mon SPECIES_CLAYDOL, 36
+ wild_mon SPECIES_CLAYDOL, 37
+ wild_mon SPECIES_CLAYDOL, 38
+ wild_mon SPECIES_CLAYDOL, 37
+ wild_mon SPECIES_CLAYDOL, 38
.align 2
gSkyPillar_3F_LandMonsInfo:: @ 85526B8
@@ -3043,18 +3043,18 @@ gSkyPillar_3F_LandMonsInfo:: @ 85526B8
.align 2
gSkyPillar_5F_LandMons:: @ 85526C0
- wild_mon SABLEYE, 33
- wild_mon GOLBAT, 34
- wild_mon GOLBAT, 35
- wild_mon SABLEYE, 34
- wild_mon CLAYDOL, 36
- wild_mon BANETTE, 37
- wild_mon BANETTE, 38
- wild_mon CLAYDOL, 36
- wild_mon CLAYDOL, 37
- wild_mon ALTARIA, 38
- wild_mon ALTARIA, 39
- wild_mon ALTARIA, 39
+ wild_mon SPECIES_SABLEYE, 33
+ wild_mon SPECIES_GOLBAT, 34
+ wild_mon SPECIES_GOLBAT, 35
+ wild_mon SPECIES_SABLEYE, 34
+ wild_mon SPECIES_CLAYDOL, 36
+ wild_mon SPECIES_BANETTE, 37
+ wild_mon SPECIES_BANETTE, 38
+ wild_mon SPECIES_CLAYDOL, 36
+ wild_mon SPECIES_CLAYDOL, 37
+ wild_mon SPECIES_ALTARIA, 38
+ wild_mon SPECIES_ALTARIA, 39
+ wild_mon SPECIES_ALTARIA, 39
.align 2
gSkyPillar_5F_LandMonsInfo:: @ 85526F0
@@ -3063,18 +3063,18 @@ gSkyPillar_5F_LandMonsInfo:: @ 85526F0
.align 2
gSafariZone_Southeast_LandMons:: @ 85526F8
- wild_mon SUNKERN, 33
- wild_mon MAREEP, 34
- wild_mon SUNKERN, 35
- wild_mon MAREEP, 36
- wild_mon AIPOM, 34
- wild_mon SPINARAK, 33
- wild_mon HOOTHOOT, 35
- wild_mon SNUBBULL, 34
- wild_mon STANTLER, 36
- wild_mon GLIGAR, 37
- wild_mon STANTLER, 39
- wild_mon GLIGAR, 40
+ wild_mon SPECIES_SUNKERN, 33
+ wild_mon SPECIES_MAREEP, 34
+ wild_mon SPECIES_SUNKERN, 35
+ wild_mon SPECIES_MAREEP, 36
+ wild_mon SPECIES_AIPOM, 34
+ wild_mon SPECIES_SPINARAK, 33
+ wild_mon SPECIES_HOOTHOOT, 35
+ wild_mon SPECIES_SNUBBULL, 34
+ wild_mon SPECIES_STANTLER, 36
+ wild_mon SPECIES_GLIGAR, 37
+ wild_mon SPECIES_STANTLER, 39
+ wild_mon SPECIES_GLIGAR, 40
.align 2
gSafariZone_Southeast_LandMonsInfo:: @ 8552728
@@ -3083,11 +3083,11 @@ gSafariZone_Southeast_LandMonsInfo:: @ 8552728
.align 2
gSafariZone_Southeast_WaterMons:: @ 8552730
- wild_mon WOOPER, 25, 30
- wild_mon MARILL, 25, 30
- wild_mon MARILL, 25, 30
- wild_mon MARILL, 30, 35
- wild_mon QUAGSIRE, 35, 40
+ wild_mon SPECIES_WOOPER, 25, 30
+ wild_mon SPECIES_MARILL, 25, 30
+ wild_mon SPECIES_MARILL, 25, 30
+ wild_mon SPECIES_MARILL, 30, 35
+ wild_mon SPECIES_QUAGSIRE, 35, 40
.align 2
gSafariZone_Southeast_WaterMonsInfo:: @ 8552744
@@ -3096,16 +3096,16 @@ gSafariZone_Southeast_WaterMonsInfo:: @ 8552744
.align 2
gSafariZone_Southeast_FishingMons:: @ 855274C
- wild_mon MAGIKARP, 25, 30
- wild_mon GOLDEEN, 25, 30
- wild_mon MAGIKARP, 25, 30
- wild_mon GOLDEEN, 25, 30
- wild_mon REMORAID, 30, 35
- wild_mon GOLDEEN, 25, 30
- wild_mon REMORAID, 25, 30
- wild_mon REMORAID, 30, 35
- wild_mon REMORAID, 30, 35
- wild_mon OCTILLERY, 35, 40
+ wild_mon SPECIES_MAGIKARP, 25, 30
+ wild_mon SPECIES_GOLDEEN, 25, 30
+ wild_mon SPECIES_MAGIKARP, 25, 30
+ wild_mon SPECIES_GOLDEEN, 25, 30
+ wild_mon SPECIES_REMORAID, 30, 35
+ wild_mon SPECIES_GOLDEEN, 25, 30
+ wild_mon SPECIES_REMORAID, 25, 30
+ wild_mon SPECIES_REMORAID, 30, 35
+ wild_mon SPECIES_REMORAID, 30, 35
+ wild_mon SPECIES_OCTILLERY, 35, 40
.align 2
gSafariZone_Southeast_FishingMonsInfo:: @ 8552774
@@ -3114,18 +3114,18 @@ gSafariZone_Southeast_FishingMonsInfo:: @ 8552774
.align 2
gSafariZone_Northeast_LandMons:: @ 855277C
- wild_mon AIPOM, 33
- wild_mon TEDDIURSA, 34
- wild_mon AIPOM, 35
- wild_mon TEDDIURSA, 36
- wild_mon SUNKERN, 34
- wild_mon LEDYBA, 33
- wild_mon HOOTHOOT, 35
- wild_mon PINECO, 34
- wild_mon HOUNDOUR, 36
- wild_mon MILTANK, 37
- wild_mon HOUNDOUR, 39
- wild_mon MILTANK, 40
+ wild_mon SPECIES_AIPOM, 33
+ wild_mon SPECIES_TEDDIURSA, 34
+ wild_mon SPECIES_AIPOM, 35
+ wild_mon SPECIES_TEDDIURSA, 36
+ wild_mon SPECIES_SUNKERN, 34
+ wild_mon SPECIES_LEDYBA, 33
+ wild_mon SPECIES_HOOTHOOT, 35
+ wild_mon SPECIES_PINECO, 34
+ wild_mon SPECIES_HOUNDOUR, 36
+ wild_mon SPECIES_MILTANK, 37
+ wild_mon SPECIES_HOUNDOUR, 39
+ wild_mon SPECIES_MILTANK, 40
.align 2
gSafariZone_Northeast_LandMonsInfo:: @ 85527AC
@@ -3134,11 +3134,11 @@ gSafariZone_Northeast_LandMonsInfo:: @ 85527AC
.align 2
gSafariZone_Northeast_RockSmashMons:: @ 85527B4
- wild_mon SHUCKLE, 25, 30
- wild_mon SHUCKLE, 20, 25
- wild_mon SHUCKLE, 30, 35
- wild_mon SHUCKLE, 30, 35
- wild_mon SHUCKLE, 35, 40
+ wild_mon SPECIES_SHUCKLE, 25, 30
+ wild_mon SPECIES_SHUCKLE, 20, 25
+ wild_mon SPECIES_SHUCKLE, 30, 35
+ wild_mon SPECIES_SHUCKLE, 30, 35
+ wild_mon SPECIES_SHUCKLE, 35, 40
.align 2
gSafariZone_Northeast_RockSmashMonsInfo:: @ 85527C8
@@ -3147,18 +3147,18 @@ gSafariZone_Northeast_RockSmashMonsInfo:: @ 85527C8
.align 2
gMagmaHideout_1F_LandMons:: @ 85527D0
- wild_mon GEODUDE, 27
- wild_mon TORKOAL, 28
- wild_mon GEODUDE, 28
- wild_mon TORKOAL, 30
- wild_mon GEODUDE, 29
- wild_mon GEODUDE, 30
- wild_mon GEODUDE, 30
- wild_mon GRAVELER, 30
- wild_mon GRAVELER, 30
- wild_mon GRAVELER, 31
- wild_mon GRAVELER, 32
- wild_mon GRAVELER, 33
+ wild_mon SPECIES_GEODUDE, 27
+ wild_mon SPECIES_TORKOAL, 28
+ wild_mon SPECIES_GEODUDE, 28
+ wild_mon SPECIES_TORKOAL, 30
+ wild_mon SPECIES_GEODUDE, 29
+ wild_mon SPECIES_GEODUDE, 30
+ wild_mon SPECIES_GEODUDE, 30
+ wild_mon SPECIES_GRAVELER, 30
+ wild_mon SPECIES_GRAVELER, 30
+ wild_mon SPECIES_GRAVELER, 31
+ wild_mon SPECIES_GRAVELER, 32
+ wild_mon SPECIES_GRAVELER, 33
.align 2
gMagmaHideout_1F_LandMonsInfo:: @ 8552800
@@ -3167,18 +3167,18 @@ gMagmaHideout_1F_LandMonsInfo:: @ 8552800
.align 2
gMagmaHideout_2F_1R_LandMons:: @ 8552808
- wild_mon GEODUDE, 27
- wild_mon TORKOAL, 28
- wild_mon GEODUDE, 28
- wild_mon TORKOAL, 30
- wild_mon GEODUDE, 29
- wild_mon GEODUDE, 30
- wild_mon GEODUDE, 30
- wild_mon GRAVELER, 30
- wild_mon GRAVELER, 30
- wild_mon GRAVELER, 31
- wild_mon GRAVELER, 32
- wild_mon GRAVELER, 33
+ wild_mon SPECIES_GEODUDE, 27
+ wild_mon SPECIES_TORKOAL, 28
+ wild_mon SPECIES_GEODUDE, 28
+ wild_mon SPECIES_TORKOAL, 30
+ wild_mon SPECIES_GEODUDE, 29
+ wild_mon SPECIES_GEODUDE, 30
+ wild_mon SPECIES_GEODUDE, 30
+ wild_mon SPECIES_GRAVELER, 30
+ wild_mon SPECIES_GRAVELER, 30
+ wild_mon SPECIES_GRAVELER, 31
+ wild_mon SPECIES_GRAVELER, 32
+ wild_mon SPECIES_GRAVELER, 33
.align 2
gMagmaHideout_2F_1R_LandMonsInfo:: @ 8552838
@@ -3187,18 +3187,18 @@ gMagmaHideout_2F_1R_LandMonsInfo:: @ 8552838
.align 2
gMagmaHideout_2F_2R_LandMons:: @ 8552840
- wild_mon GEODUDE, 27
- wild_mon TORKOAL, 28
- wild_mon GEODUDE, 28
- wild_mon TORKOAL, 30
- wild_mon GEODUDE, 29
- wild_mon GEODUDE, 30
- wild_mon GEODUDE, 30
- wild_mon GRAVELER, 30
- wild_mon GRAVELER, 30
- wild_mon GRAVELER, 31
- wild_mon GRAVELER, 32
- wild_mon GRAVELER, 33
+ wild_mon SPECIES_GEODUDE, 27
+ wild_mon SPECIES_TORKOAL, 28
+ wild_mon SPECIES_GEODUDE, 28
+ wild_mon SPECIES_TORKOAL, 30
+ wild_mon SPECIES_GEODUDE, 29
+ wild_mon SPECIES_GEODUDE, 30
+ wild_mon SPECIES_GEODUDE, 30
+ wild_mon SPECIES_GRAVELER, 30
+ wild_mon SPECIES_GRAVELER, 30
+ wild_mon SPECIES_GRAVELER, 31
+ wild_mon SPECIES_GRAVELER, 32
+ wild_mon SPECIES_GRAVELER, 33
.align 2
gMagmaHideout_2F_2R_LandMonsInfo:: @ 8552870
@@ -3207,18 +3207,18 @@ gMagmaHideout_2F_2R_LandMonsInfo:: @ 8552870
.align 2
gMagmaHideout_3F_1R_LandMons:: @ 8552878
- wild_mon GEODUDE, 27
- wild_mon TORKOAL, 28
- wild_mon GEODUDE, 28
- wild_mon TORKOAL, 30
- wild_mon GEODUDE, 29
- wild_mon GEODUDE, 30
- wild_mon GEODUDE, 30
- wild_mon GRAVELER, 30
- wild_mon GRAVELER, 30
- wild_mon GRAVELER, 31
- wild_mon GRAVELER, 32
- wild_mon GRAVELER, 33
+ wild_mon SPECIES_GEODUDE, 27
+ wild_mon SPECIES_TORKOAL, 28
+ wild_mon SPECIES_GEODUDE, 28
+ wild_mon SPECIES_TORKOAL, 30
+ wild_mon SPECIES_GEODUDE, 29
+ wild_mon SPECIES_GEODUDE, 30
+ wild_mon SPECIES_GEODUDE, 30
+ wild_mon SPECIES_GRAVELER, 30
+ wild_mon SPECIES_GRAVELER, 30
+ wild_mon SPECIES_GRAVELER, 31
+ wild_mon SPECIES_GRAVELER, 32
+ wild_mon SPECIES_GRAVELER, 33
.align 2
gMagmaHideout_3F_1R_LandMonsInfo:: @ 85528A8
@@ -3227,18 +3227,18 @@ gMagmaHideout_3F_1R_LandMonsInfo:: @ 85528A8
.align 2
gMagmaHideout_3F_2R_LandMons:: @ 85528B0
- wild_mon GEODUDE, 27
- wild_mon TORKOAL, 28
- wild_mon GEODUDE, 28
- wild_mon TORKOAL, 30
- wild_mon GEODUDE, 29
- wild_mon GEODUDE, 30
- wild_mon GEODUDE, 30
- wild_mon GRAVELER, 30
- wild_mon GRAVELER, 30
- wild_mon GRAVELER, 31
- wild_mon GRAVELER, 32
- wild_mon GRAVELER, 33
+ wild_mon SPECIES_GEODUDE, 27
+ wild_mon SPECIES_TORKOAL, 28
+ wild_mon SPECIES_GEODUDE, 28
+ wild_mon SPECIES_TORKOAL, 30
+ wild_mon SPECIES_GEODUDE, 29
+ wild_mon SPECIES_GEODUDE, 30
+ wild_mon SPECIES_GEODUDE, 30
+ wild_mon SPECIES_GRAVELER, 30
+ wild_mon SPECIES_GRAVELER, 30
+ wild_mon SPECIES_GRAVELER, 31
+ wild_mon SPECIES_GRAVELER, 32
+ wild_mon SPECIES_GRAVELER, 33
.align 2
gMagmaHideout_3F_2R_LandMonsInfo:: @ 85528E0
@@ -3247,18 +3247,18 @@ gMagmaHideout_3F_2R_LandMonsInfo:: @ 85528E0
.align 2
gMagmaHideout_4F_LandMons:: @ 85528E8
- wild_mon GEODUDE, 27
- wild_mon TORKOAL, 28
- wild_mon GEODUDE, 28
- wild_mon TORKOAL, 30
- wild_mon GEODUDE, 29
- wild_mon GEODUDE, 30
- wild_mon GEODUDE, 30
- wild_mon GRAVELER, 30
- wild_mon GRAVELER, 30
- wild_mon GRAVELER, 31
- wild_mon GRAVELER, 32
- wild_mon GRAVELER, 33
+ wild_mon SPECIES_GEODUDE, 27
+ wild_mon SPECIES_TORKOAL, 28
+ wild_mon SPECIES_GEODUDE, 28
+ wild_mon SPECIES_TORKOAL, 30
+ wild_mon SPECIES_GEODUDE, 29
+ wild_mon SPECIES_GEODUDE, 30
+ wild_mon SPECIES_GEODUDE, 30
+ wild_mon SPECIES_GRAVELER, 30
+ wild_mon SPECIES_GRAVELER, 30
+ wild_mon SPECIES_GRAVELER, 31
+ wild_mon SPECIES_GRAVELER, 32
+ wild_mon SPECIES_GRAVELER, 33
.align 2
gMagmaHideout_4F_LandMonsInfo:: @ 8552918
@@ -3267,18 +3267,18 @@ gMagmaHideout_4F_LandMonsInfo:: @ 8552918
.align 2
gMagmaHideout_3F_3R_LandMons:: @ 8552920
- wild_mon GEODUDE, 27
- wild_mon TORKOAL, 28
- wild_mon GEODUDE, 28
- wild_mon TORKOAL, 30
- wild_mon GEODUDE, 29
- wild_mon GEODUDE, 30
- wild_mon GEODUDE, 30
- wild_mon GRAVELER, 30
- wild_mon GRAVELER, 30
- wild_mon GRAVELER, 31
- wild_mon GRAVELER, 32
- wild_mon GRAVELER, 33
+ wild_mon SPECIES_GEODUDE, 27
+ wild_mon SPECIES_TORKOAL, 28
+ wild_mon SPECIES_GEODUDE, 28
+ wild_mon SPECIES_TORKOAL, 30
+ wild_mon SPECIES_GEODUDE, 29
+ wild_mon SPECIES_GEODUDE, 30
+ wild_mon SPECIES_GEODUDE, 30
+ wild_mon SPECIES_GRAVELER, 30
+ wild_mon SPECIES_GRAVELER, 30
+ wild_mon SPECIES_GRAVELER, 31
+ wild_mon SPECIES_GRAVELER, 32
+ wild_mon SPECIES_GRAVELER, 33
.align 2
gMagmaHideout_3F_3R_LandMonsInfo:: @ 8552950
@@ -3287,18 +3287,18 @@ gMagmaHideout_3F_3R_LandMonsInfo:: @ 8552950
.align 2
gMagmaHideout_2F_3R_LandMons:: @ 8552958
- wild_mon GEODUDE, 27
- wild_mon TORKOAL, 28
- wild_mon GEODUDE, 28
- wild_mon TORKOAL, 30
- wild_mon GEODUDE, 29
- wild_mon GEODUDE, 30
- wild_mon GEODUDE, 30
- wild_mon GRAVELER, 30
- wild_mon GRAVELER, 30
- wild_mon GRAVELER, 31
- wild_mon GRAVELER, 32
- wild_mon GRAVELER, 33
+ wild_mon SPECIES_GEODUDE, 27
+ wild_mon SPECIES_TORKOAL, 28
+ wild_mon SPECIES_GEODUDE, 28
+ wild_mon SPECIES_TORKOAL, 30
+ wild_mon SPECIES_GEODUDE, 29
+ wild_mon SPECIES_GEODUDE, 30
+ wild_mon SPECIES_GEODUDE, 30
+ wild_mon SPECIES_GRAVELER, 30
+ wild_mon SPECIES_GRAVELER, 30
+ wild_mon SPECIES_GRAVELER, 31
+ wild_mon SPECIES_GRAVELER, 32
+ wild_mon SPECIES_GRAVELER, 33
.align 2
gMagmaHideout_2F_3R_LandMonsInfo:: @ 8552988
@@ -3307,18 +3307,18 @@ gMagmaHideout_2F_3R_LandMonsInfo:: @ 8552988
.align 2
gMirageTower_1F_LandMons:: @ 8552990
- wild_mon SANDSHREW, 21
- wild_mon TRAPINCH, 21
- wild_mon SANDSHREW, 20
- wild_mon TRAPINCH, 20
- wild_mon SANDSHREW, 20
- wild_mon TRAPINCH, 20
- wild_mon SANDSHREW, 22
- wild_mon TRAPINCH, 22
- wild_mon SANDSHREW, 23
- wild_mon TRAPINCH, 23
- wild_mon SANDSHREW, 24
- wild_mon TRAPINCH, 24
+ wild_mon SPECIES_SANDSHREW, 21
+ wild_mon SPECIES_TRAPINCH, 21
+ wild_mon SPECIES_SANDSHREW, 20
+ wild_mon SPECIES_TRAPINCH, 20
+ wild_mon SPECIES_SANDSHREW, 20
+ wild_mon SPECIES_TRAPINCH, 20
+ wild_mon SPECIES_SANDSHREW, 22
+ wild_mon SPECIES_TRAPINCH, 22
+ wild_mon SPECIES_SANDSHREW, 23
+ wild_mon SPECIES_TRAPINCH, 23
+ wild_mon SPECIES_SANDSHREW, 24
+ wild_mon SPECIES_TRAPINCH, 24
.align 2
gMirageTower_1F_LandMonsInfo:: @ 85529C0
@@ -3327,18 +3327,18 @@ gMirageTower_1F_LandMonsInfo:: @ 85529C0
.align 2
gMirageTower_2F_LandMons:: @ 85529C8
- wild_mon SANDSHREW, 21
- wild_mon TRAPINCH, 21
- wild_mon SANDSHREW, 20
- wild_mon TRAPINCH, 20
- wild_mon SANDSHREW, 20
- wild_mon TRAPINCH, 20
- wild_mon SANDSHREW, 22
- wild_mon TRAPINCH, 22
- wild_mon SANDSHREW, 23
- wild_mon TRAPINCH, 23
- wild_mon SANDSHREW, 24
- wild_mon TRAPINCH, 24
+ wild_mon SPECIES_SANDSHREW, 21
+ wild_mon SPECIES_TRAPINCH, 21
+ wild_mon SPECIES_SANDSHREW, 20
+ wild_mon SPECIES_TRAPINCH, 20
+ wild_mon SPECIES_SANDSHREW, 20
+ wild_mon SPECIES_TRAPINCH, 20
+ wild_mon SPECIES_SANDSHREW, 22
+ wild_mon SPECIES_TRAPINCH, 22
+ wild_mon SPECIES_SANDSHREW, 23
+ wild_mon SPECIES_TRAPINCH, 23
+ wild_mon SPECIES_SANDSHREW, 24
+ wild_mon SPECIES_TRAPINCH, 24
.align 2
gMirageTower_2F_LandMonsInfo:: @ 85529F8
@@ -3347,18 +3347,18 @@ gMirageTower_2F_LandMonsInfo:: @ 85529F8
.align 2
gMirageTower_3F_LandMons:: @ 8552A00
- wild_mon SANDSHREW, 21
- wild_mon TRAPINCH, 21
- wild_mon SANDSHREW, 20
- wild_mon TRAPINCH, 20
- wild_mon SANDSHREW, 20
- wild_mon TRAPINCH, 20
- wild_mon SANDSHREW, 22
- wild_mon TRAPINCH, 22
- wild_mon SANDSHREW, 23
- wild_mon TRAPINCH, 23
- wild_mon SANDSHREW, 24
- wild_mon TRAPINCH, 24
+ wild_mon SPECIES_SANDSHREW, 21
+ wild_mon SPECIES_TRAPINCH, 21
+ wild_mon SPECIES_SANDSHREW, 20
+ wild_mon SPECIES_TRAPINCH, 20
+ wild_mon SPECIES_SANDSHREW, 20
+ wild_mon SPECIES_TRAPINCH, 20
+ wild_mon SPECIES_SANDSHREW, 22
+ wild_mon SPECIES_TRAPINCH, 22
+ wild_mon SPECIES_SANDSHREW, 23
+ wild_mon SPECIES_TRAPINCH, 23
+ wild_mon SPECIES_SANDSHREW, 24
+ wild_mon SPECIES_TRAPINCH, 24
.align 2
gMirageTower_3F_LandMonsInfo:: @ 8552A30
@@ -3367,18 +3367,18 @@ gMirageTower_3F_LandMonsInfo:: @ 8552A30
.align 2
gMirageTower_4F_LandMons:: @ 8552A38
- wild_mon SANDSHREW, 21
- wild_mon TRAPINCH, 21
- wild_mon SANDSHREW, 20
- wild_mon TRAPINCH, 20
- wild_mon SANDSHREW, 20
- wild_mon TRAPINCH, 20
- wild_mon SANDSHREW, 22
- wild_mon TRAPINCH, 22
- wild_mon SANDSHREW, 23
- wild_mon TRAPINCH, 23
- wild_mon SANDSHREW, 24
- wild_mon TRAPINCH, 24
+ wild_mon SPECIES_SANDSHREW, 21
+ wild_mon SPECIES_TRAPINCH, 21
+ wild_mon SPECIES_SANDSHREW, 20
+ wild_mon SPECIES_TRAPINCH, 20
+ wild_mon SPECIES_SANDSHREW, 20
+ wild_mon SPECIES_TRAPINCH, 20
+ wild_mon SPECIES_SANDSHREW, 22
+ wild_mon SPECIES_TRAPINCH, 22
+ wild_mon SPECIES_SANDSHREW, 23
+ wild_mon SPECIES_TRAPINCH, 23
+ wild_mon SPECIES_SANDSHREW, 24
+ wild_mon SPECIES_TRAPINCH, 24
.align 2
gMirageTower_4F_LandMonsInfo:: @ 8552A68
@@ -3387,18 +3387,18 @@ gMirageTower_4F_LandMonsInfo:: @ 8552A68
.align 2
gDesertUnderpass_LandMons:: @ 8552A70
- wild_mon DITTO, 38
- wild_mon WHISMUR, 35
- wild_mon DITTO, 40
- wild_mon LOUDRED, 40
- wild_mon DITTO, 41
- wild_mon WHISMUR, 36
- wild_mon LOUDRED, 38
- wild_mon DITTO, 42
- wild_mon WHISMUR, 38
- wild_mon DITTO, 43
- wild_mon LOUDRED, 44
- wild_mon DITTO, 45
+ wild_mon SPECIES_DITTO, 38
+ wild_mon SPECIES_WHISMUR, 35
+ wild_mon SPECIES_DITTO, 40
+ wild_mon SPECIES_LOUDRED, 40
+ wild_mon SPECIES_DITTO, 41
+ wild_mon SPECIES_WHISMUR, 36
+ wild_mon SPECIES_LOUDRED, 38
+ wild_mon SPECIES_DITTO, 42
+ wild_mon SPECIES_WHISMUR, 38
+ wild_mon SPECIES_DITTO, 43
+ wild_mon SPECIES_LOUDRED, 44
+ wild_mon SPECIES_DITTO, 45
.align 2
gDesertUnderpass_LandMonsInfo:: @ 8552AA0
@@ -3407,18 +3407,18 @@ gDesertUnderpass_LandMonsInfo:: @ 8552AA0
.align 2
gArtisanCave_B1F_LandMons:: @ 8552AA8
- wild_mon SMEARGLE, 40
- wild_mon SMEARGLE, 41
- wild_mon SMEARGLE, 42
- wild_mon SMEARGLE, 43
- wild_mon SMEARGLE, 44
- wild_mon SMEARGLE, 45
- wild_mon SMEARGLE, 46
- wild_mon SMEARGLE, 47
- wild_mon SMEARGLE, 48
- wild_mon SMEARGLE, 49
- wild_mon SMEARGLE, 50
- wild_mon SMEARGLE, 50
+ wild_mon SPECIES_SMEARGLE, 40
+ wild_mon SPECIES_SMEARGLE, 41
+ wild_mon SPECIES_SMEARGLE, 42
+ wild_mon SPECIES_SMEARGLE, 43
+ wild_mon SPECIES_SMEARGLE, 44
+ wild_mon SPECIES_SMEARGLE, 45
+ wild_mon SPECIES_SMEARGLE, 46
+ wild_mon SPECIES_SMEARGLE, 47
+ wild_mon SPECIES_SMEARGLE, 48
+ wild_mon SPECIES_SMEARGLE, 49
+ wild_mon SPECIES_SMEARGLE, 50
+ wild_mon SPECIES_SMEARGLE, 50
.align 2
gArtisanCave_B1F_LandMonsInfo:: @ 8552AD8
@@ -3427,18 +3427,18 @@ gArtisanCave_B1F_LandMonsInfo:: @ 8552AD8
.align 2
gArtisanCave_1F_LandMons:: @ 8552AE0
- wild_mon SMEARGLE, 40
- wild_mon SMEARGLE, 41
- wild_mon SMEARGLE, 42
- wild_mon SMEARGLE, 43
- wild_mon SMEARGLE, 44
- wild_mon SMEARGLE, 45
- wild_mon SMEARGLE, 46
- wild_mon SMEARGLE, 47
- wild_mon SMEARGLE, 48
- wild_mon SMEARGLE, 49
- wild_mon SMEARGLE, 50
- wild_mon SMEARGLE, 50
+ wild_mon SPECIES_SMEARGLE, 40
+ wild_mon SPECIES_SMEARGLE, 41
+ wild_mon SPECIES_SMEARGLE, 42
+ wild_mon SPECIES_SMEARGLE, 43
+ wild_mon SPECIES_SMEARGLE, 44
+ wild_mon SPECIES_SMEARGLE, 45
+ wild_mon SPECIES_SMEARGLE, 46
+ wild_mon SPECIES_SMEARGLE, 47
+ wild_mon SPECIES_SMEARGLE, 48
+ wild_mon SPECIES_SMEARGLE, 49
+ wild_mon SPECIES_SMEARGLE, 50
+ wild_mon SPECIES_SMEARGLE, 50
.align 2
gArtisanCave_1F_LandMonsInfo:: @ 8552B10
@@ -3447,18 +3447,18 @@ gArtisanCave_1F_LandMonsInfo:: @ 8552B10
.align 2
gAlteringCave1_LandMons:: @ 8552B18
- wild_mon ZUBAT, 10
- wild_mon ZUBAT, 12
- wild_mon ZUBAT, 8
- wild_mon ZUBAT, 14
- wild_mon ZUBAT, 10
- wild_mon ZUBAT, 12
- wild_mon ZUBAT, 16
- wild_mon ZUBAT, 6
- wild_mon ZUBAT, 8
- wild_mon ZUBAT, 14
- wild_mon ZUBAT, 8
- wild_mon ZUBAT, 14
+ wild_mon SPECIES_ZUBAT, 10
+ wild_mon SPECIES_ZUBAT, 12
+ wild_mon SPECIES_ZUBAT, 8
+ wild_mon SPECIES_ZUBAT, 14
+ wild_mon SPECIES_ZUBAT, 10
+ wild_mon SPECIES_ZUBAT, 12
+ wild_mon SPECIES_ZUBAT, 16
+ wild_mon SPECIES_ZUBAT, 6
+ wild_mon SPECIES_ZUBAT, 8
+ wild_mon SPECIES_ZUBAT, 14
+ wild_mon SPECIES_ZUBAT, 8
+ wild_mon SPECIES_ZUBAT, 14
.align 2
gAlteringCave1_LandMonsInfo:: @ 8552B48
@@ -3467,18 +3467,18 @@ gAlteringCave1_LandMonsInfo:: @ 8552B48
.align 2
gAlteringCave2_LandMons:: @ 8552B50
- wild_mon MAREEP, 7
- wild_mon MAREEP, 9
- wild_mon MAREEP, 5
- wild_mon MAREEP, 11
- wild_mon MAREEP, 7
- wild_mon MAREEP, 9
- wild_mon MAREEP, 13
- wild_mon MAREEP, 3
- wild_mon MAREEP, 5
- wild_mon MAREEP, 11
- wild_mon MAREEP, 5
- wild_mon MAREEP, 11
+ wild_mon SPECIES_MAREEP, 7
+ wild_mon SPECIES_MAREEP, 9
+ wild_mon SPECIES_MAREEP, 5
+ wild_mon SPECIES_MAREEP, 11
+ wild_mon SPECIES_MAREEP, 7
+ wild_mon SPECIES_MAREEP, 9
+ wild_mon SPECIES_MAREEP, 13
+ wild_mon SPECIES_MAREEP, 3
+ wild_mon SPECIES_MAREEP, 5
+ wild_mon SPECIES_MAREEP, 11
+ wild_mon SPECIES_MAREEP, 5
+ wild_mon SPECIES_MAREEP, 11
.align 2
gAlteringCave2_LandMonsInfo:: @ 8552B80
@@ -3487,18 +3487,18 @@ gAlteringCave2_LandMonsInfo:: @ 8552B80
.align 2
gAlteringCave3_LandMons:: @ 8552B88
- wild_mon PINECO, 23
- wild_mon PINECO, 25
- wild_mon PINECO, 22
- wild_mon PINECO, 27
- wild_mon PINECO, 23
- wild_mon PINECO, 25
- wild_mon PINECO, 29
- wild_mon PINECO, 19
- wild_mon PINECO, 21
- wild_mon PINECO, 27
- wild_mon PINECO, 21
- wild_mon PINECO, 27
+ wild_mon SPECIES_PINECO, 23
+ wild_mon SPECIES_PINECO, 25
+ wild_mon SPECIES_PINECO, 22
+ wild_mon SPECIES_PINECO, 27
+ wild_mon SPECIES_PINECO, 23
+ wild_mon SPECIES_PINECO, 25
+ wild_mon SPECIES_PINECO, 29
+ wild_mon SPECIES_PINECO, 19
+ wild_mon SPECIES_PINECO, 21
+ wild_mon SPECIES_PINECO, 27
+ wild_mon SPECIES_PINECO, 21
+ wild_mon SPECIES_PINECO, 27
.align 2
gAlteringCave3_LandMonsInfo:: @ 8552BB8
@@ -3507,18 +3507,18 @@ gAlteringCave3_LandMonsInfo:: @ 8552BB8
.align 2
gAlteringCave4_LandMons:: @ 8552BC0
- wild_mon HOUNDOUR, 16
- wild_mon HOUNDOUR, 18
- wild_mon HOUNDOUR, 14
- wild_mon HOUNDOUR, 20
- wild_mon HOUNDOUR, 16
- wild_mon HOUNDOUR, 18
- wild_mon HOUNDOUR, 22
- wild_mon HOUNDOUR, 12
- wild_mon HOUNDOUR, 14
- wild_mon HOUNDOUR, 20
- wild_mon HOUNDOUR, 14
- wild_mon HOUNDOUR, 20
+ wild_mon SPECIES_HOUNDOUR, 16
+ wild_mon SPECIES_HOUNDOUR, 18
+ wild_mon SPECIES_HOUNDOUR, 14
+ wild_mon SPECIES_HOUNDOUR, 20
+ wild_mon SPECIES_HOUNDOUR, 16
+ wild_mon SPECIES_HOUNDOUR, 18
+ wild_mon SPECIES_HOUNDOUR, 22
+ wild_mon SPECIES_HOUNDOUR, 12
+ wild_mon SPECIES_HOUNDOUR, 14
+ wild_mon SPECIES_HOUNDOUR, 20
+ wild_mon SPECIES_HOUNDOUR, 14
+ wild_mon SPECIES_HOUNDOUR, 20
.align 2
gAlteringCave4_LandMonsInfo:: @ 8552BF0
@@ -3527,18 +3527,18 @@ gAlteringCave4_LandMonsInfo:: @ 8552BF0
.align 2
gAlteringCave5_LandMons:: @ 8552BF8
- wild_mon TEDDIURSA, 10
- wild_mon TEDDIURSA, 12
- wild_mon TEDDIURSA, 8
- wild_mon TEDDIURSA, 14
- wild_mon TEDDIURSA, 10
- wild_mon TEDDIURSA, 12
- wild_mon TEDDIURSA, 16
- wild_mon TEDDIURSA, 6
- wild_mon TEDDIURSA, 8
- wild_mon TEDDIURSA, 14
- wild_mon TEDDIURSA, 8
- wild_mon TEDDIURSA, 14
+ wild_mon SPECIES_TEDDIURSA, 10
+ wild_mon SPECIES_TEDDIURSA, 12
+ wild_mon SPECIES_TEDDIURSA, 8
+ wild_mon SPECIES_TEDDIURSA, 14
+ wild_mon SPECIES_TEDDIURSA, 10
+ wild_mon SPECIES_TEDDIURSA, 12
+ wild_mon SPECIES_TEDDIURSA, 16
+ wild_mon SPECIES_TEDDIURSA, 6
+ wild_mon SPECIES_TEDDIURSA, 8
+ wild_mon SPECIES_TEDDIURSA, 14
+ wild_mon SPECIES_TEDDIURSA, 8
+ wild_mon SPECIES_TEDDIURSA, 14
.align 2
gAlteringCave5_LandMonsInfo:: @ 8552C28
@@ -3547,18 +3547,18 @@ gAlteringCave5_LandMonsInfo:: @ 8552C28
.align 2
gAlteringCave6_LandMons:: @ 8552C30
- wild_mon AIPOM, 22
- wild_mon AIPOM, 24
- wild_mon AIPOM, 20
- wild_mon AIPOM, 26
- wild_mon AIPOM, 22
- wild_mon AIPOM, 24
- wild_mon AIPOM, 28
- wild_mon AIPOM, 18
- wild_mon AIPOM, 20
- wild_mon AIPOM, 26
- wild_mon AIPOM, 20
- wild_mon AIPOM, 26
+ wild_mon SPECIES_AIPOM, 22
+ wild_mon SPECIES_AIPOM, 24
+ wild_mon SPECIES_AIPOM, 20
+ wild_mon SPECIES_AIPOM, 26
+ wild_mon SPECIES_AIPOM, 22
+ wild_mon SPECIES_AIPOM, 24
+ wild_mon SPECIES_AIPOM, 28
+ wild_mon SPECIES_AIPOM, 18
+ wild_mon SPECIES_AIPOM, 20
+ wild_mon SPECIES_AIPOM, 26
+ wild_mon SPECIES_AIPOM, 20
+ wild_mon SPECIES_AIPOM, 26
.align 2
gAlteringCave6_LandMonsInfo:: @ 8552C60
@@ -3567,18 +3567,18 @@ gAlteringCave6_LandMonsInfo:: @ 8552C60
.align 2
gAlteringCave7_LandMons:: @ 8552C68
- wild_mon SHUCKLE, 22
- wild_mon SHUCKLE, 24
- wild_mon SHUCKLE, 20
- wild_mon SHUCKLE, 26
- wild_mon SHUCKLE, 22
- wild_mon SHUCKLE, 24
- wild_mon SHUCKLE, 28
- wild_mon SHUCKLE, 18
- wild_mon SHUCKLE, 20
- wild_mon SHUCKLE, 26
- wild_mon SHUCKLE, 20
- wild_mon SHUCKLE, 26
+ wild_mon SPECIES_SHUCKLE, 22
+ wild_mon SPECIES_SHUCKLE, 24
+ wild_mon SPECIES_SHUCKLE, 20
+ wild_mon SPECIES_SHUCKLE, 26
+ wild_mon SPECIES_SHUCKLE, 22
+ wild_mon SPECIES_SHUCKLE, 24
+ wild_mon SPECIES_SHUCKLE, 28
+ wild_mon SPECIES_SHUCKLE, 18
+ wild_mon SPECIES_SHUCKLE, 20
+ wild_mon SPECIES_SHUCKLE, 26
+ wild_mon SPECIES_SHUCKLE, 20
+ wild_mon SPECIES_SHUCKLE, 26
.align 2
gAlteringCave7_LandMonsInfo:: @ 8552C98
@@ -3587,18 +3587,18 @@ gAlteringCave7_LandMonsInfo:: @ 8552C98
.align 2
gAlteringCave8_LandMons:: @ 8552CA0
- wild_mon STANTLER, 22
- wild_mon STANTLER, 24
- wild_mon STANTLER, 20
- wild_mon STANTLER, 26
- wild_mon STANTLER, 22
- wild_mon STANTLER, 24
- wild_mon STANTLER, 28
- wild_mon STANTLER, 18
- wild_mon STANTLER, 20
- wild_mon STANTLER, 26
- wild_mon STANTLER, 20
- wild_mon STANTLER, 26
+ wild_mon SPECIES_STANTLER, 22
+ wild_mon SPECIES_STANTLER, 24
+ wild_mon SPECIES_STANTLER, 20
+ wild_mon SPECIES_STANTLER, 26
+ wild_mon SPECIES_STANTLER, 22
+ wild_mon SPECIES_STANTLER, 24
+ wild_mon SPECIES_STANTLER, 28
+ wild_mon SPECIES_STANTLER, 18
+ wild_mon SPECIES_STANTLER, 20
+ wild_mon SPECIES_STANTLER, 26
+ wild_mon SPECIES_STANTLER, 20
+ wild_mon SPECIES_STANTLER, 26
.align 2
gAlteringCave8_LandMonsInfo:: @ 8552CD0
@@ -3607,18 +3607,18 @@ gAlteringCave8_LandMonsInfo:: @ 8552CD0
.align 2
gAlteringCave9_LandMons:: @ 8552CD8
- wild_mon SMEARGLE, 22
- wild_mon SMEARGLE, 24
- wild_mon SMEARGLE, 20
- wild_mon SMEARGLE, 26
- wild_mon SMEARGLE, 22
- wild_mon SMEARGLE, 24
- wild_mon SMEARGLE, 28
- wild_mon SMEARGLE, 18
- wild_mon SMEARGLE, 20
- wild_mon SMEARGLE, 26
- wild_mon SMEARGLE, 20
- wild_mon SMEARGLE, 26
+ wild_mon SPECIES_SMEARGLE, 22
+ wild_mon SPECIES_SMEARGLE, 24
+ wild_mon SPECIES_SMEARGLE, 20
+ wild_mon SPECIES_SMEARGLE, 26
+ wild_mon SPECIES_SMEARGLE, 22
+ wild_mon SPECIES_SMEARGLE, 24
+ wild_mon SPECIES_SMEARGLE, 28
+ wild_mon SPECIES_SMEARGLE, 18
+ wild_mon SPECIES_SMEARGLE, 20
+ wild_mon SPECIES_SMEARGLE, 26
+ wild_mon SPECIES_SMEARGLE, 20
+ wild_mon SPECIES_SMEARGLE, 26
.align 2
gAlteringCave9_LandMonsInfo:: @ 8552D08
@@ -3627,18 +3627,18 @@ gAlteringCave9_LandMonsInfo:: @ 8552D08
.align 2
gMeteorFalls_StevensCave_LandMons:: @ 8552D10
- wild_mon GOLBAT, 33
- wild_mon GOLBAT, 35
- wild_mon GOLBAT, 33
- wild_mon SOLROCK, 35
- wild_mon SOLROCK, 33
- wild_mon SOLROCK, 37
- wild_mon GOLBAT, 35
- wild_mon SOLROCK, 39
- wild_mon GOLBAT, 38
- wild_mon GOLBAT, 40
- wild_mon GOLBAT, 38
- wild_mon GOLBAT, 40
+ wild_mon SPECIES_GOLBAT, 33
+ wild_mon SPECIES_GOLBAT, 35
+ wild_mon SPECIES_GOLBAT, 33
+ wild_mon SPECIES_SOLROCK, 35
+ wild_mon SPECIES_SOLROCK, 33
+ wild_mon SPECIES_SOLROCK, 37
+ wild_mon SPECIES_GOLBAT, 35
+ wild_mon SPECIES_SOLROCK, 39
+ wild_mon SPECIES_GOLBAT, 38
+ wild_mon SPECIES_GOLBAT, 40
+ wild_mon SPECIES_GOLBAT, 38
+ wild_mon SPECIES_GOLBAT, 40
.align 2
gMeteorFalls_StevensCave_LandMonsInfo:: @ 8552D40
diff --git a/graphics/interface/ball/dive.png b/graphics/interface/ball/dive.png
new file mode 100644
index 000000000..5be9b1ed6
--- /dev/null
+++ b/graphics/interface/ball/dive.png
Binary files differ
diff --git a/graphics/interface/ball/great.png b/graphics/interface/ball/great.png
new file mode 100644
index 000000000..0c054d7d3
--- /dev/null
+++ b/graphics/interface/ball/great.png
Binary files differ
diff --git a/graphics/interface/ball/luxury.png b/graphics/interface/ball/luxury.png
new file mode 100644
index 000000000..8056416b2
--- /dev/null
+++ b/graphics/interface/ball/luxury.png
Binary files differ
diff --git a/graphics/interface/ball/master.png b/graphics/interface/ball/master.png
new file mode 100644
index 000000000..9787a8896
--- /dev/null
+++ b/graphics/interface/ball/master.png
Binary files differ
diff --git a/graphics/interface/ball/nest.png b/graphics/interface/ball/nest.png
new file mode 100644
index 000000000..a2fa81c1e
--- /dev/null
+++ b/graphics/interface/ball/nest.png
Binary files differ
diff --git a/graphics/interface/ball/net.png b/graphics/interface/ball/net.png
new file mode 100644
index 000000000..6fef48101
--- /dev/null
+++ b/graphics/interface/ball/net.png
Binary files differ
diff --git a/graphics/interface/ball/poke.png b/graphics/interface/ball/poke.png
new file mode 100644
index 000000000..1e4aba669
--- /dev/null
+++ b/graphics/interface/ball/poke.png
Binary files differ
diff --git a/graphics/interface/ball/premier.png b/graphics/interface/ball/premier.png
new file mode 100644
index 000000000..f5aaadbaf
--- /dev/null
+++ b/graphics/interface/ball/premier.png
Binary files differ
diff --git a/graphics/interface/ball/repeat.png b/graphics/interface/ball/repeat.png
new file mode 100644
index 000000000..5abe789a2
--- /dev/null
+++ b/graphics/interface/ball/repeat.png
Binary files differ
diff --git a/graphics/interface/ball/safari.png b/graphics/interface/ball/safari.png
new file mode 100644
index 000000000..0dd49aef9
--- /dev/null
+++ b/graphics/interface/ball/safari.png
Binary files differ
diff --git a/graphics/interface/ball/timer.png b/graphics/interface/ball/timer.png
new file mode 100644
index 000000000..2b63f6795
--- /dev/null
+++ b/graphics/interface/ball/timer.png
Binary files differ
diff --git a/graphics/wallclock/graphics_85b1f58.png b/graphics/wallclock/graphics_85b1f58.png
new file mode 100644
index 000000000..06a4ecad0
--- /dev/null
+++ b/graphics/wallclock/graphics_85b1f58.png
Binary files differ
diff --git a/graphics/wallclock/palette_85b21d4.pal b/graphics/wallclock/palette_85b21d4.pal
new file mode 100644
index 000000000..fda317608
--- /dev/null
+++ b/graphics/wallclock/palette_85b21d4.pal
@@ -0,0 +1,7 @@
+JASC-PAL
+0100
+4
+0 0 0
+74 180 189
+255 255 255
+0 0 0
diff --git a/include/abilities.h b/include/abilities.h
deleted file mode 100644
index 4c47025f8..000000000
--- a/include/abilities.h
+++ /dev/null
@@ -1,81 +0,0 @@
-enum
-{
- ABILITY_NONE,
- ABILITY_STENCH,
- ABILITY_DRIZZLE,
- ABILITY_SPEED_BOOST,
- ABILITY_BATTLE_ARMOR,
- ABILITY_STURDY,
- ABILITY_DAMP,
- ABILITY_LIMBER,
- ABILITY_SAND_VEIL,
- ABILITY_STATIC,
- ABILITY_VOLT_ABSORB,
- ABILITY_WATER_ABSORB,
- ABILITY_OBLIVIOUS,
- ABILITY_CLOUD_NINE,
- ABILITY_COMPOUND_EYES,
- ABILITY_INSOMNIA,
- ABILITY_COLOR_CHANGE,
- ABILITY_IMMUNITY,
- ABILITY_FLASH_FIRE,
- ABILITY_SHIELD_DUST,
- ABILITY_OWN_TEMPO,
- ABILITY_SUCTION_CUPS,
- ABILITY_INTIMIDATE,
- ABILITY_SHADOW_TAG,
- ABILITY_ROUGH_SKIN,
- ABILITY_WONDER_GUARD,
- ABILITY_LEVITATE,
- ABILITY_EFFECT_SPORE,
- ABILITY_SYNCHRONIZE,
- ABILITY_CLEAR_BODY,
- ABILITY_NATURAL_CURE,
- ABILITY_LIGHTNING_ROD,
- ABILITY_SERENE_GRACE,
- ABILITY_SWIFT_SWIM,
- ABILITY_CHLOROPHYLL,
- ABILITY_ILLUMINATE,
- ABILITY_TRACE,
- ABILITY_HUGE_POWER,
- ABILITY_POISON_POINT,
- ABILITY_INNER_FOCUS,
- ABILITY_MAGMA_ARMOR,
- ABILITY_WATER_VEIL,
- ABILITY_MAGNET_PULL,
- ABILITY_SOUNDPROOF,
- ABILITY_RAIN_DISH,
- ABILITY_SAND_STREAM,
- ABILITY_PRESSURE,
- ABILITY_THICK_FAT,
- ABILITY_EARLY_BIRD,
- ABILITY_FLAME_BODY,
- ABILITY_RUN_AWAY,
- ABILITY_KEEN_EYE,
- ABILITY_HYPER_CUTTER,
- ABILITY_PICKUP,
- ABILITY_TRUANT,
- ABILITY_HUSTLE,
- ABILITY_CUTE_CHARM,
- ABILITY_PLUS,
- ABILITY_MINUS,
- ABILITY_FORECAST,
- ABILITY_STICKY_HOLD,
- ABILITY_SHED_SKIN,
- ABILITY_GUTS,
- ABILITY_MARVEL_SCALE,
- ABILITY_LIQUID_OOZE,
- ABILITY_OVERGROW,
- ABILITY_BLAZE,
- ABILITY_TORRENT,
- ABILITY_SWARM,
- ABILITY_ROCK_HEAD,
- ABILITY_DROUGHT,
- ABILITY_ARENA_TRAP,
- ABILITY_VITAL_SPIRIT,
- ABILITY_WHITE_SMOKE,
- ABILITY_PURE_POWER,
- ABILITY_SHELL_ARMOR,
- ABILITY_CACOPHONY,
- ABILITY_AIR_LOCK
-}; \ No newline at end of file
diff --git a/include/battle.h b/include/battle.h
index 0939c92b6..71dbe9a57 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -53,7 +53,7 @@
#define BATTLE_TYPE_PALACE 0x20000
#define BATTLE_TYPE_ARENA 0x40000
#define BATTLE_TYPE_FACTORY 0x80000
-#define BATTLE_TYPE_x100000 0x100000
+#define BATTLE_TYPE_PIKE 0x100000
#define BATTLE_TYPE_PYRAMID 0x200000
#define BATTLE_TYPE_INGAME_PARTNER 0x400000
#define BATTLE_TYPE_x800000 0x800000
@@ -62,7 +62,7 @@
#define BATTLE_TYPE_x4000000 0x4000000
#define BATTLE_TYPE_SECRET_BASE 0x8000000
#define BATTLE_TYPE_GROUDON 0x10000000
-#define BATTLE_TYPE_KYORGE 0x20000000
+#define BATTLE_TYPE_KYOGRE 0x20000000
#define BATTLE_TYPE_RAYQUAZA 0x40000000
#define BATTLE_TYPE_x80000000 0x80000000
@@ -72,8 +72,8 @@
#define STEVEN_PARTNER_ID 0xC03
#define SECRET_BASE_OPPONENT 0x400
-#define BATTLE_TYPE_FRONTIER (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_x100000 | BATTLE_TYPE_PYRAMID)
-#define BATTLE_TYPE_FRONTIER_NO_PYRAMID (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_x100000)
+#define BATTLE_TYPE_FRONTIER (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE | BATTLE_TYPE_PYRAMID)
+#define BATTLE_TYPE_FRONTIER_NO_PYRAMID (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE)
#define BATTLE_WON 0x1
#define BATTLE_LOST 0x2
@@ -86,8 +86,9 @@
#define BATTLE_FORFEITED 0x9
#define BATTLE_OPPONENT_TELEPORTED 0xA
-#define BATTLE_OUTCOME_BIT_x80 0x80
+#define OUTCOME_LINK_BATTLE_RUN 0x80
+#define STATUS_NONE 0x0
#define STATUS_SLEEP 0x7
#define STATUS_POISON 0x8
#define STATUS_BURN 0x10
@@ -228,9 +229,9 @@
#define BATTLE_TERRAIN_UNDERWATER 3
#define BATTLE_TERRAIN_WATER 4
#define BATTLE_TERRAIN_POND 5
-#define BATTLE_TERRAIN_ROCK 6
+#define BATTLE_TERRAIN_MOUNTAIN 6
#define BATTLE_TERRAIN_CAVE 7
-#define BATTLE_TERRAIN_INSIDE 8
+#define BATTLE_TERRAIN_BUILDING 8
#define BATTLE_TERRAIN_PLAIN 9
// array entries for battle communication
@@ -272,6 +273,8 @@
#define BS_GET_TARGET 0
#define BS_GET_ATTACKER 1
#define BS_GET_EFFECT_BANK 2
+#define BS_GET_gBank1 3
+#define BS_GET_BANK_0 7
#define BS_ATTACKER_WITH_PARTNER 4 // for atk98_status_icon_update
#define BS_GET_ATTACKER_SIDE 8 // for atk1E_jumpifability
#define BS_GET_NOT_ATTACKER_SIDE 9 // for atk1E_jumpifability
@@ -295,7 +298,6 @@ struct TrainerMonNoItemDefaultMoves
u16 species;
};
-u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg);
u8 GetBankSide(u8 bank);
struct TrainerMonItemDefaultMoves
@@ -325,10 +327,10 @@ struct TrainerMonItemCustomMoves
union TrainerMonPtr
{
- struct TrainerMonNoItemDefaultMoves* NoItemDefaultMoves;
- struct TrainerMonNoItemCustomMoves* NoItemCustomMoves;
- struct TrainerMonItemDefaultMoves* ItemDefaultMoves;
- struct TrainerMonItemCustomMoves* ItemCustomMoves;
+ struct TrainerMonNoItemDefaultMoves *NoItemDefaultMoves;
+ struct TrainerMonNoItemCustomMoves *NoItemCustomMoves;
+ struct TrainerMonItemDefaultMoves *ItemDefaultMoves;
+ struct TrainerMonItemCustomMoves *ItemCustomMoves;
};
struct Trainer
@@ -345,9 +347,6 @@ struct Trainer
/*0x24*/ union TrainerMonPtr party;
};
-#define PARTY_FLAG_CUSTOM_MOVES 0x1
-#define PARTY_FLAG_HAS_ITEM 0x2
-
extern const struct Trainer gTrainers[];
#define TRAINER_ENCOUNTER_MUSIC(trainer)((gTrainers[trainer].encounterMusic_gender & 0x7F))
@@ -613,10 +612,10 @@ struct BattleStruct
u8 focusPunchBank;
u8 field_49;
u8 moneyMultiplier;
- u8 field_4B;
+ u8 savedTurnActionNumber;
u8 switchInAbilitiesCounter;
- u8 field_4D;
- u8 field_4E;
+ u8 faintedActionsState;
+ u8 faintedActionsBank;
u8 field_4F;
u16 expValue;
u8 field_52;
@@ -688,8 +687,8 @@ struct BattleStruct
u8 field_182;
u8 field_183;
struct BattleEnigmaBerry battleEnigmaBerry;
- u8 field_1A0;
- u8 field_1A1;
+ u8 wishPerishSongState;
+ u8 wishPerishSongBank;
bool8 overworldWeatherDone;
u8 atkCancellerTracker;
u8 field_1A4[96];
@@ -704,13 +703,6 @@ struct BattleStruct
extern struct BattleStruct* gBattleStruct;
-#define MEME_ACCESS_U8(structName, structPtr, arrayId, offsetField, value) \
-{ \
- u8* var2 = (u8*)((u32)(arrayId)); \
- var2 = (u32)(structPtr) + var2; \
- var2[offsetof(struct structName, offsetField)] = value; \
-}
-
#define GET_MOVE_TYPE(move, typeArg) \
{ \
if (gBattleStruct->dynamicMoveType) \
@@ -805,7 +797,7 @@ extern struct BattleStruct* gBattleStruct;
#define B_ANIM_ITEM_STEAL 0x10
#define B_ANIM_SNATCH_MOVE 0x11
#define B_ANIM_FUTURE_SIGHT_HIT 0x12
-#define B_ANIM_x13 0x13
+#define B_ANIM_DOOM_DESIRE_HIT 0x13
#define B_ANIM_x14 0x14
#define B_ANIM_INGRAIN_HEAL 0x15
#define B_ANIM_WISH_HEAL 0x16
@@ -835,23 +827,23 @@ extern struct BattleStruct* gBattleStruct;
#define GET_STAT_BUFF_VALUE(n)(((n >> 4) & 7)) // 0x10, 0x20, 0x40
#define STAT_BUFF_NEGATIVE 0x80 // 0x80, the sign bit
-#define SET_STAT_BUFF_ID(n)((n & 0xF))
#define SET_STAT_BUFF_VALUE(n)(((s8)(((s8)(n) << 4)) & 0xF0))
+#define SET_STATCHANGER(statId, stage, goesDown)(gBattleScripting.statChanger = (statId) + (stage << 4) + (goesDown << 7))
+
struct BattleScripting
{
s32 painSplitHp;
s32 bideDmg;
u8 multihitString[6];
u8 dmgMultiplier;
- u8 field_F;
+ u8 twoTurnsMoveStringId;
u8 animArg1;
u8 animArg2;
- u8 field_12;
- u8 field_13;
+ u16 tripleKickPower;
u8 atk49_state;
- u8 field_15;
- u8 field_16;
+ u8 bankWithAbility;
+ u8 multihitMoveEffect;
u8 bank;
u8 animTurn;
u8 animTargetsHit;
@@ -937,7 +929,7 @@ struct BattleHealthboxInfo
u8 flag_x1 : 1;
u8 flag_x2 : 1;
u8 flag_x4 : 1;
- u8 flag_x8 : 1;
+ u8 ballAnimActive : 1; // 0x8
u8 statusAnimActive : 1; // x10
u8 animFromTableActive : 1; // x20
u8 specialAnimActive : 1; //x40
diff --git a/include/battle_anim.h b/include/battle_anim.h
index c055e94fa..9fb7ccd53 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -79,11 +79,22 @@ void HandleIntroSlide(u8 terrainId);
// battle_anim_80A5C6C.s
void sub_80A6EEC(struct Sprite *sprite);
+void sub_80A68D4(struct Sprite *sprite);
+void sub_80A6F3C(struct Sprite *sprite);
void sub_80A8278(void);
void sub_80A6B30(struct UnknownAnimStruct2*);
void sub_80A6B90(struct UnknownAnimStruct2*, u32 arg1);
u8 sub_80A82E4(u8 bank);
-u8 sub_80A5C6C(u8 bank, u8 attributeId);
+bool8 AnimateBallThrow(struct Sprite *sprite);
+
+enum
+{
+ BANK_X_POS,
+ BANK_Y_POS,
+};
+
+u8 GetBankPosition(u8 bank, u8 attributeId);
+
bool8 IsBankSpritePresent(u8 bank);
void sub_80A6C68(u8 arg0);
u8 GetAnimBankSpriteId(u8 wantedBank);
@@ -99,4 +110,9 @@ u8 GetSubstituteSpriteDefault_Y(u8 bank);
// battle_anim_80A9C70.s
void LaunchStatusAnimation(u8 bank, u8 statusAnimId);
+// battle_anim_8170478.s
+u8 ItemIdToBallId(u16 itemId);
+u8 LaunchBallStarsTask(u8 x, u8 y, u8 kindOfStars, u8 arg3, u8 ballId);
+u8 LaunchBallFadeMonTask(bool8 unFadeLater, u8 bank, u32 arg2, u8 ballId);
+
#endif // GUARD_BATTLE_ANIM_H
diff --git a/include/battle_controllers.h b/include/battle_controllers.h
index 973a723e0..c69cb1017 100644
--- a/include/battle_controllers.h
+++ b/include/battle_controllers.h
@@ -198,7 +198,7 @@ void EmitBallThrowAnim(u8 bufferId, u8 caseId);
void EmitPause(u8 bufferId, u8 toWait, void *data); // unused
void EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr, u8 multihit);
void EmitPrintString(u8 bufferId, u16 stringId);
-void EmitPrintStringPlayerOnly(u8 bufferId, u16 stringId);
+void EmitPrintSelectionString(u8 bufferId, u16 stringId);
void EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2);
void EmitUnknownYesNoBox(u8 bufferId);
void EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct *movePpData);
@@ -224,7 +224,7 @@ void EmitCmd39(u8 bufferId); // unused
void EmitCmd40(u8 bufferId); // unused
void EmitHitAnimation(u8 bufferId);
void EmitCmd42(u8 bufferId);
-void EmitEffectivenessSound(u8 bufferId, u16 songId);
+void EmitPlaySE(u8 bufferId, u16 songId);
void EmitPlayFanfareOrBGM(u8 bufferId, u16 songId, bool8 playBGM);
void EmitFaintingCry(u8 bufferId);
void EmitIntroSlide(u8 bufferId, u8 terrainId);
diff --git a/include/battle_frontier_2.h b/include/battle_frontier_2.h
index 4f37248cc..801c3f3ec 100644
--- a/include/battle_frontier_2.h
+++ b/include/battle_frontier_2.h
@@ -5,5 +5,6 @@ void sub_81A8934(u8);
void sub_81A895C(void);
u16 sub_81A89A0(u8);
void sub_81A8AF8(void);
+bool8 InBattlePike(void);
#endif // GUARD_BATTLE_FRONTIER_2_H
diff --git a/include/battle_message.h b/include/battle_message.h
index 3f9b38cad..30ddca469 100644
--- a/include/battle_message.h
+++ b/include/battle_message.h
@@ -67,13 +67,21 @@
#define B_BUFF_STAT 5
#define B_BUFF_SPECIES 6
#define B_BUFF_MON_NICK 7
-#define B_BUFF_NEGATIVE_FLAVOUR 8
+#define B_BUFF_NEGATIVE_FLAVOR 8
#define B_BUFF_ABILITY 9
#define B_BUFF_ITEM 10
#define B_BUFF_PLACEHOLDER_BEGIN 0xFD
#define B_BUFF_EOS 0xFF
+#define PREPARE_FLAVOR_BUFFER(textVar, flavorId) \
+{ \
+ textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \
+ textVar[1] = B_BUFF_NEGATIVE_FLAVOR; \
+ textVar[2] = flavorId; \
+ textVar[3] = B_BUFF_EOS; \
+}
+
#define PREPARE_STAT_BUFFER(textVar, statId) \
{ \
textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \
@@ -189,7 +197,7 @@
struct StringInfoBattle
{
u16 currentMove;
- u16 lastMove;
+ u16 originallyUsedMove;
u16 lastItem;
u8 lastAbility;
u8 scrActive;
diff --git a/include/battle_move_effects.h b/include/battle_move_effects.h
deleted file mode 100644
index 4a9415379..000000000
--- a/include/battle_move_effects.h
+++ /dev/null
@@ -1,222 +0,0 @@
-#ifndef GUARD_BATTLE_MOVE_EFFECTS_H
-#define GUARD_BATTLE_MOVE_EFFECTS_H
-
-enum
-{
- EFFECT_HIT,
- EFFECT_SLEEP,
- EFFECT_POISON_HIT,
- EFFECT_ABSORB,
- EFFECT_BURN_HIT,
- EFFECT_FREEZE_HIT,
- EFFECT_PARALYZE_HIT,
- EFFECT_EXPLOSION,
- EFFECT_DREAM_EATER,
- EFFECT_MIRROR_MOVE,
- EFFECT_ATTACK_UP,
- EFFECT_DEFENSE_UP,
- EFFECT_SPEED_UP,
- EFFECT_SPECIAL_ATTACK_UP,
- EFFECT_SPECIAL_DEFENSE_UP,
- EFFECT_ACCURACY_UP,
- EFFECT_EVASION_UP,
- EFFECT_ALWAYS_HIT,
- EFFECT_ATTACK_DOWN,
- EFFECT_DEFENSE_DOWN,
- EFFECT_SPEED_DOWN,
- EFFECT_SPECIAL_ATTACK_DOWN, // unused
- EFFECT_SPECIAL_DEFENSE_DOWN, // unused
- EFFECT_ACCURACY_DOWN,
- EFFECT_EVASION_DOWN,
- EFFECT_HAZE,
- EFFECT_BIDE,
- EFFECT_RAMPAGE,
- EFFECT_ROAR,
- EFFECT_MULTI_HIT,
- EFFECT_CONVERSION,
- EFFECT_FLINCH_HIT,
- EFFECT_RESTORE_HP,
- EFFECT_TOXIC,
- EFFECT_PAY_DAY,
- EFFECT_LIGHT_SCREEN,
- EFFECT_TRI_ATTACK,
- EFFECT_REST,
- EFFECT_OHKO,
- EFFECT_RAZOR_WIND,
- EFFECT_SUPER_FANG,
- EFFECT_DRAGON_RAGE,
- EFFECT_TRAP,
- EFFECT_HIGH_CRITICAL,
- EFFECT_DOUBLE_HIT,
- EFFECT_RECOIL_IF_MISS,
- EFFECT_MIST,
- EFFECT_FOCUS_ENERGY,
- EFFECT_RECOIL,
- EFFECT_CONFUSE,
- EFFECT_ATTACK_UP_2,
- EFFECT_DEFENSE_UP_2,
- EFFECT_SPEED_UP_2,
- EFFECT_SPECIAL_ATTACK_UP_2,
- EFFECT_SPECIAL_DEFENSE_UP_2,
- EFFECT_ACCURACY_UP_2,
- EFFECT_EVASION_UP_2,
- EFFECT_TRANSFORM,
- EFFECT_ATTACK_DOWN_2,
- EFFECT_DEFENSE_DOWN_2,
- EFFECT_SPEED_DOWN_2,
- EFFECT_SPECIAL_ATTACK_DOWN_2,
- EFFECT_SPECIAL_DEFENSE_DOWN_2,
- EFFECT_ACCURACY_DOWN_2,
- EFFECT_EVASION_DOWN_2,
- EFFECT_REFLECT,
- EFFECT_POISON,
- EFFECT_PARALYZE,
- EFFECT_ATTACK_DOWN_HIT,
- EFFECT_DEFENSE_DOWN_HIT,
- EFFECT_SPEED_DOWN_HIT,
- EFFECT_SPECIAL_ATTACK_DOWN_HIT,
- EFFECT_SPECIAL_DEFENSE_DOWN_HIT,
- EFFECT_ACCURACY_DOWN_HIT,
- EFFECT_EVASION_DOWN_HIT,
- EFFECT_SKY_ATTACK,
- EFFECT_CONFUSE_HIT,
- EFFECT_TWINEEDLE,
- EFFECT_VITAL_THROW,
- EFFECT_SUBSTITUTE,
- EFFECT_RECHARGE,
- EFFECT_RAGE,
- EFFECT_MIMIC,
- EFFECT_METRONOME,
- EFFECT_LEECH_SEED,
- EFFECT_SPLASH,
- EFFECT_DISABLE,
- EFFECT_LEVEL_DAMAGE,
- EFFECT_PSYWAVE,
- EFFECT_COUNTER,
- EFFECT_ENCORE,
- EFFECT_PAIN_SPLIT,
- EFFECT_SNORE,
- EFFECT_CONVERSION_2,
- EFFECT_LOCK_ON,
- EFFECT_SKETCH,
- EFFECT_UNUSED_60, // thaw
- EFFECT_SLEEP_TALK,
- EFFECT_DESTINY_BOND,
- EFFECT_FLAIL,
- EFFECT_SPITE,
- EFFECT_FALSE_SWIPE,
- EFFECT_HEAL_BELL,
- EFFECT_QUICK_ATTACK,
- EFFECT_TRIPLE_KICK,
- EFFECT_THIEF,
- EFFECT_MEAN_LOOK,
- EFFECT_NIGHTMARE,
- EFFECT_MINIMIZE,
- EFFECT_CURSE,
- EFFECT_UNUSED_6E,
- EFFECT_PROTECT,
- EFFECT_SPIKES,
- EFFECT_FORESIGHT,
- EFFECT_PERISH_SONG,
- EFFECT_SANDSTORM,
- EFFECT_ENDURE,
- EFFECT_ROLLOUT,
- EFFECT_SWAGGER,
- EFFECT_FURY_CUTTER,
- EFFECT_ATTRACT,
- EFFECT_RETURN,
- EFFECT_PRESENT,
- EFFECT_FRUSTRATION,
- EFFECT_SAFEGUARD,
- EFFECT_THAW_HIT,
- EFFECT_MAGNITUDE,
- EFFECT_BATON_PASS,
- EFFECT_PURSUIT,
- EFFECT_RAPID_SPIN,
- EFFECT_SONICBOOM,
- EFFECT_UNUSED_83,
- EFFECT_MORNING_SUN,
- EFFECT_SYNTHESIS,
- EFFECT_MOONLIGHT,
- EFFECT_HIDDEN_POWER,
- EFFECT_RAIN_DANCE,
- EFFECT_SUNNY_DAY,
- EFFECT_DEFENSE_UP_HIT,
- EFFECT_ATTACK_UP_HIT,
- EFFECT_ALL_STATS_UP_HIT,
- EFFECT_UNUSED_8D, // incomplete fake out in gen 2
- EFFECT_BELLY_DRUM,
- EFFECT_PSYCH_UP,
- EFFECT_MIRROR_COAT,
- EFFECT_SKULL_BASH,
- EFFECT_TWISTER,
- EFFECT_EARTHQUAKE,
- EFFECT_FUTURE_SIGHT,
- EFFECT_GUST,
- EFFECT_FLINCH_HIT_2, // STOMP ASTONISH EXTRASENSORY NEEDLE_ARM
- EFFECT_SOLARBEAM,
- EFFECT_THUNDER,
- EFFECT_TELEPORT,
- EFFECT_BEAT_UP,
- EFFECT_FLY,
- EFFECT_DEFENSE_CURL,
- EFFECT_SOFTBOILED,
- EFFECT_FAKE_OUT,
- EFFECT_UPROAR,
- EFFECT_STOCKPILE,
- EFFECT_SPIT_UP,
- EFFECT_SWALLOW,
- EFFECT_UNUSED_A3,
- EFFECT_HAIL,
- EFFECT_TORMENT,
- EFFECT_FLATTER,
- EFFECT_WILL_O_WISP,
- EFFECT_MEMENTO,
- EFFECT_FACADE,
- EFFECT_FOCUS_PUNCH,
- EFFECT_SMELLINGSALT,
- EFFECT_FOLLOW_ME,
- EFFECT_NATURE_POWER,
- EFFECT_CHARGE,
- EFFECT_TAUNT,
- EFFECT_HELPING_HAND,
- EFFECT_TRICK,
- EFFECT_ROLE_PLAY,
- EFFECT_WISH,
- EFFECT_ASSIST,
- EFFECT_INGRAIN,
- EFFECT_SUPERPOWER,
- EFFECT_MAGIC_COAT,
- EFFECT_RECYCLE,
- EFFECT_REVENGE,
- EFFECT_BRICK_BREAK,
- EFFECT_YAWN,
- EFFECT_KNOCK_OFF,
- EFFECT_ENDEAVOR,
- EFFECT_ERUPTION,
- EFFECT_SKILL_SWAP,
- EFFECT_IMPRISON,
- EFFECT_REFRESH,
- EFFECT_GRUDGE,
- EFFECT_SNATCH,
- EFFECT_LOW_KICK,
- EFFECT_SECRET_POWER,
- EFFECT_DOUBLE_EDGE,
- EFFECT_TEETER_DANCE,
- EFFECT_BLAZE_KICK,
- EFFECT_MUD_SPORT,
- EFFECT_POISON_FANG,
- EFFECT_WEATHER_BALL,
- EFFECT_OVERHEAT,
- EFFECT_TICKLE,
- EFFECT_COSMIC_POWER,
- EFFECT_SKY_UPPERCUT,
- EFFECT_BULK_UP,
- EFFECT_POISON_TAIL,
- EFFECT_WATER_SPORT,
- EFFECT_CALM_MIND,
- EFFECT_DRAGON_DANCE,
- EFFECT_CAMOUFLAGE,
-};
-
-#endif // GUARD_BATTLE_MOVE_EFFECTS_H
diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h
index ebfeabccc..80fabaa64 100644
--- a/include/battle_script_commands.h
+++ b/include/battle_script_commands.h
@@ -1,6 +1,10 @@
#ifndef GUARD_BATTLE_SCRIPT_COMMANDS_H
#define GUARD_BATTLE_SCRIPT_COMMANDS_H
+#define NO_ACC_CALC 0xFFFE
+#define NO_ACC_CALC_CHECK_LOCK_ON 0xFFFF
+#define ACC_CURR_MOVE 0
+
#define CMP_EQUAL 0x0
#define CMP_NOT_EQUAL 0x1
#define CMP_GREATER_THAN 0x2
@@ -21,7 +25,7 @@
#define VARIOUS_CANCEL_MULTI_TURN_MOVES 0
#define VARIOUS_SET_MAGIC_COAT_TARGET 1
-#define VARIOUS_CAN_RUN_FROM_BATTLE 2
+#define VARIOUS_IS_RUNNING_IMPOSSIBLE 2
#define VARIOUS_GET_MOVE_TARGET 3
#define VARIOUS_RESET_INTIMIDATE_TRACE_BITS 5
#define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6
diff --git a/include/battle_scripts.h b/include/battle_scripts.h
new file mode 100644
index 000000000..2e31a37c5
--- /dev/null
+++ b/include/battle_scripts.h
@@ -0,0 +1,290 @@
+#ifndef GUARD_BATTLE_SCRIPTS_H
+#define GUARD_BATTLE_SCRIPTS_H
+
+extern const u8 BattleScript_HitFromCritCalc[];
+extern const u8 BattleScript_MoveEnd[];
+extern const u8 BattleScript_MakeMoveMissed[];
+extern const u8 BattleScript_PrintMoveMissed[];
+extern const u8 BattleScript_MoveMissedPause[];
+extern const u8 BattleScript_MoveMissed[];
+extern const u8 BattleScript_ButItFailed[];
+extern const u8 BattleScript_StatUp[];
+extern const u8 BattleScript_StatDown[];
+extern const u8 BattleScript_AlreadyAtFullHp[];
+extern const u8 BattleScript_PresentHealTarget[];
+extern const u8 BattleScript_MoveUsedMustRecharge[];
+extern const u8 BattleScript_FaintAttacker[];
+extern const u8 BattleScript_FaintTarget[];
+extern const u8 BattleScript_GiveExp[];
+extern const u8 BattleScript_HandleFaintedMon[];
+extern const u8 BattleScript_LocalTrainerBattleWon[];
+extern const u8 BattleScript_LocalTwoTrainersDefeated[];
+extern const u8 BattleScript_LocalBattleWonLoseTexts[];
+extern const u8 BattleScript_LocalBattleWonReward[];
+extern const u8 BattleScript_PayDayMoneyAndPickUpItems[];
+extern const u8 BattleScript_LocalBattleLost[];
+extern const u8 BattleScript_LocalBattleLostPrintWhiteOut[];
+extern const u8 BattleScript_LocalBattleLostEnd[];
+extern const u8 BattleScript_CheckDomeDrew[];
+extern const u8 BattleScript_82DAA0B[];
+extern const u8 BattleScript_82DAA31[];
+extern const u8 BattleScript_LinkBattleWonOrLost[];
+extern const u8 BattleScript_82DAA5C[];
+extern const u8 BattleScript_82DAA83[];
+extern const u8 BattleScript_FrontierTrainerBattleWon[];
+extern const u8 BattleScript_82DAAAB[];
+extern const u8 BattleScript_82DAAAE[];
+extern const u8 BattleScript_82DAACB[];
+extern const u8 BattleScript_82DAADA[];
+extern const u8 BattleScript_SmokeBallEscape[];
+extern const u8 BattleScript_RanAwayUsingMonAbility[];
+extern const u8 BattleScript_GotAwaySafely[];
+extern const u8 BattleScript_WildMonFled[];
+extern const u8 BattleScript_PrintCantRunFromTrainer[];
+extern const u8 BattleScript_PrintFailedToRunString[];
+extern const u8 BattleScript_PrintCantEscapeFromBattle[];
+extern const u8 BattleScript_PrintFullBox[];
+extern const u8 BattleScript_ActionSwitch[];
+extern const u8 BattleScript_82DAB35[];
+extern const u8 BattleScript_82DAB37[];
+extern const u8 BattleScript_82DAB44[];
+extern const u8 BattleScript_82DAB77[];
+extern const u8 BattleScript_82DABB8[];
+extern const u8 BattleScript_Pausex20[];
+extern const u8 BattleScript_LevelUp[];
+extern const u8 BattleScript_RainContinuesOrEnds[];
+extern const u8 BattleScript_DamagingWeatherContinues[];
+extern const u8 BattleScript_SandStormHailEnds[];
+extern const u8 BattleScript_SunlightContinues[];
+extern const u8 BattleScript_SunlightFaded[];
+extern const u8 BattleScript_OverworldWeatherStarts[];
+extern const u8 BattleScript_SideStatusWoreOff[];
+extern const u8 BattleScript_SafeguardProtected[];
+extern const u8 BattleScript_SafeguardEnds[];
+extern const u8 BattleScript_LeechSeedTurnDrain[];
+extern const u8 BattleScript_82DAD47[];
+extern const u8 BattleScript_82DAD4D[];
+extern const u8 BattleScript_BideStoringEnergy[];
+extern const u8 BattleScript_BideAttack[];
+extern const u8 BattleScript_BideNoEnergyToAttack[];
+extern const u8 BattleScript_SuccessForceOut[];
+extern const u8 BattleScript_82DADF1[];
+extern const u8 BattleScript_MistProtected[];
+extern const u8 BattleScript_RageIsBuilding[];
+extern const u8 BattleScript_MoveUsedIsDisabled[];
+extern const u8 BattleScript_SelectingDisabledMove[];
+extern const u8 BattleScript_DisabledNoMore[];
+extern const u8 BattleScript_SelectingDisabledMoveInPalace[];
+extern const u8 BattleScript_SelectingUnusableMoveInPalace[];
+extern const u8 BattleScript_EncoredNoMore[];
+extern const u8 BattleScript_DestinyBondTakesLife[];
+extern const u8 BattleScript_SpikesOnAttacker[];
+extern const u8 BattleScript_82DAE7A[];
+extern const u8 BattleScript_SpikesOnTarget[];
+extern const u8 BattleScript_82DAEB1[];
+extern const u8 BattleScript_SpikesOngBank1[];
+extern const u8 BattleScript_82DAEE8[];
+extern const u8 BattleScript_82DAEFE[];
+extern const u8 BattleScript_PerishSongTakesLife[];
+extern const u8 BattleScript_PerishSongCountGoesDown[];
+extern const u8 BattleScript_AllStatsUp[];
+extern const u8 BattleScript_82DAF54[];
+extern const u8 BattleScript_82DAF72[];
+extern const u8 BattleScript_82DAF86[];
+extern const u8 BattleScript_82DAF9A[];
+extern const u8 BattleScript_82DAFAE[];
+extern const u8 BattleScript_82DAFC2[];
+extern const u8 BattleScript_RapidSpinAway[];
+extern const u8 BattleScript_WrapFree[];
+extern const u8 BattleScript_LeechSeedFree[];
+extern const u8 BattleScript_SpikesFree[];
+extern const u8 BattleScript_MonTookFutureAttack[];
+extern const u8 BattleScript_82DB001[];
+extern const u8 BattleScript_82DB008[];
+extern const u8 BattleScript_82DB020[];
+extern const u8 BattleScript_82DB027[];
+extern const u8 BattleScript_82DB03F[];
+extern const u8 BattleScript_82DB058[];
+extern const u8 BattleScript_NoMovesLeft[];
+extern const u8 BattleScript_SelectingMoveWithNoPP[];
+extern const u8 BattleScript_NoPPForMove[];
+extern const u8 BattleScript_SelectingTormentedMove[];
+extern const u8 BattleScript_MoveUsedIsTormented[];
+extern const u8 BattleScript_SelectingTormentedMoveInPalace[];
+extern const u8 BattleScript_SelectingNotAllowedMoveTaunt[];
+extern const u8 BattleScript_MoveUsedIsTaunted[];
+extern const u8 BattleScript_SelectingNotAllowedMoveTauntInPalace[];
+extern const u8 BattleScript_WishComesTrue[];
+extern const u8 BattleScript_IngrainTurnHeal[];
+extern const u8 BattleScript_AtkDefDown[];
+extern const u8 BattleScript_82DB144[];
+extern const u8 BattleScript_82DB167[];
+extern const u8 BattleScript_KnockedOff[];
+extern const u8 BattleScript_MoveUsedIsImprisoned[];
+extern const u8 BattleScript_SelectingImprisionedMove[];
+extern const u8 BattleScript_SelectingImprisionedMoveInPalace[];
+extern const u8 BattleScript_GrudgeTakesPp[];
+extern const u8 BattleScript_MagicCoatBounce[];
+extern const u8 BattleScript_SnatchedMove[];
+extern const u8 BattleScript_EnduredMsg[];
+extern const u8 BattleScript_OneHitKOMsg[];
+extern const u8 BattleScript_SAtkDown2[];
+extern const u8 BattleScript_82DB1FE[];
+extern const u8 BattleScript_FocusPunchSetUp[];
+extern const u8 BattleScript_MoveUsedIsAsleep[];
+extern const u8 BattleScript_MoveUsedWokeUp[];
+extern const u8 BattleScript_MonWokeUpInUproar[];
+extern const u8 BattleScript_PoisonTurnDmg[];
+extern const u8 BattleScript_82DB243[];
+extern const u8 BattleScript_82DB245[];
+extern const u8 BattleScript_82DB25E[];
+extern const u8 BattleScript_BurnTurnDmg[];
+extern const u8 BattleScript_MoveUsedIsFrozen[];
+extern const u8 BattleScript_MoveUsedUnfroze[];
+extern const u8 BattleScript_DefrostedViaFireMove[];
+extern const u8 BattleScript_MoveUsedIsParalyzed[];
+extern const u8 BattleScript_MoveUsedFlinched[];
+extern const u8 BattleScript_PrintUproarOverTurns[];
+extern const u8 BattleScript_ThrashConfuses[];
+extern const u8 BattleScript_MoveUsedIsConfused[];
+extern const u8 BattleScript_82DB2D4[];
+extern const u8 BattleScript_82DB2FF[];
+extern const u8 BattleScript_MoveUsedIsConfusedNoMore[];
+extern const u8 BattleScript_PrintPayDayMoneyString[];
+extern const u8 BattleScript_WrapTurnDmg[];
+extern const u8 BattleScript_WrapEnds[];
+extern const u8 BattleScript_MoveUsedIsInLove[];
+extern const u8 BattleScript_MoveUsedIsParalyzedCantAttack[];
+extern const u8 BattleScript_NightmareTurnDmg[];
+extern const u8 BattleScript_CurseTurnDmg[];
+extern const u8 BattleScript_TargetPRLZHeal[];
+extern const u8 BattleScript_MoveEffectSleep[];
+extern const u8 BattleScript_82DB374[];
+extern const u8 BattleScript_YawnMakesAsleep[];
+extern const u8 BattleScript_MoveEffectPoison[];
+extern const u8 BattleScript_MoveEffectBurn[];
+extern const u8 BattleScript_MoveEffectFreeze[];
+extern const u8 BattleScript_MoveEffectParalysis[];
+extern const u8 BattleScript_MoveEffectUproar[];
+extern const u8 BattleScript_MoveEffectToxic[];
+extern const u8 BattleScript_MoveEffectPayDay[];
+extern const u8 BattleScript_MoveEffectWrap[];
+extern const u8 BattleScript_MoveEffectConfusion[];
+extern const u8 BattleScript_MoveEffectRecoil33[];
+extern const u8 BattleScript_DoRecoil33[];
+extern const u8 BattleScript_Recoil33End[];
+extern const u8 BattleScript_ItemSteal[];
+extern const u8 BattleScript_DrizzleActivates[];
+extern const u8 BattleScript_SpeedBoostActivates[];
+extern const u8 BattleScript_TraceActivates[];
+extern const u8 BattleScript_RainDishActivates[];
+extern const u8 BattleScript_SandstreamActivates[];
+extern const u8 BattleScript_ShedSkinActivates[];
+extern const u8 BattleScript_WeatherFormChanges[];
+extern const u8 BattleScript_WeatherFormChangesLoop[];
+extern const u8 BattleScript_CastformChange[];
+extern const u8 BattleScript_82DB4AF[];
+extern const u8 BattleScript_82DB4B8[];
+extern const u8 BattleScript_82DB4BE[];
+extern const u8 BattleScript_82DB4C1[];
+extern const u8 BattleScript_82DB4CD[];
+extern const u8 BattleScript_82DB510[];
+extern const u8 BattleScript_82DB51B[];
+extern const u8 BattleScript_82DB51C[];
+extern const u8 BattleScript_DroughtActivates[];
+extern const u8 BattleScript_TookAttack[];
+extern const u8 BattleScript_SturdyPreventsOHKO[];
+extern const u8 BattleScript_DampStopsExplosion[];
+extern const u8 BattleScript_MoveHPDrain_PPLoss[];
+extern const u8 BattleScript_MoveHPDrain[];
+extern const u8 BattleScript_MonMadeMoveUseless_PPLoss[];
+extern const u8 BattleScript_MonMadeMoveUseless[];
+extern const u8 BattleScript_FlashFireBoost_PPLoss[];
+extern const u8 BattleScript_FlashFireBoost[];
+extern const u8 BattleScript_AbilityNoStatLoss[];
+extern const u8 BattleScript_BRNPrevention[];
+extern const u8 BattleScript_PRLZPrevention[];
+extern const u8 BattleScript_PSNPrevention[];
+extern const u8 BattleScript_ObliviousPreventsAttraction[];
+extern const u8 BattleScript_FlinchPrevention[];
+extern const u8 BattleScript_OwnTempoPrevents[];
+extern const u8 BattleScript_SoundproofProtected[];
+extern const u8 BattleScript_AbilityNoSpecificStatLoss[];
+extern const u8 BattleScript_StickyHoldActivates[];
+extern const u8 BattleScript_ColorChangeActivates[];
+extern const u8 BattleScript_RoughSkinActivates[];
+extern const u8 BattleScript_CuteCharmActivates[];
+extern const u8 BattleScript_ApplySecondaryEffect[];
+extern const u8 BattleScript_SynchronizeActivates[];
+extern const u8 BattleScript_NoItemSteal[];
+extern const u8 BattleScript_AbilityCuredStatus[];
+extern const u8 BattleScript_82DB695[];
+extern const u8 BattleScript_IgnoresAndUsesRandomMove[];
+extern const u8 BattleScript_MoveUsedLoafingAround[];
+extern const u8 BattleScript_82DB6C7[];
+extern const u8 BattleScript_IgnoresAndFallsAsleep[];
+extern const u8 BattleScript_82DB6F0[];
+extern const u8 BattleScript_SubstituteFade[];
+extern const u8 BattleScript_BerryCurePrlzEnd2[];
+extern const u8 BattleScript_BerryCureParRet[];
+extern const u8 BattleScript_BerryCurePsnEnd2[];
+extern const u8 BattleScript_BerryCurePsnRet[];
+extern const u8 BattleScript_BerryCureBrnEnd2[];
+extern const u8 BattleScript_BerryCureBrnRet[];
+extern const u8 BattleScript_BerryCureFrzEnd2[];
+extern const u8 BattleScript_BerryCureFrzRet[];
+extern const u8 BattleScript_BerryCureSlpEnd2[];
+extern const u8 BattleScript_BerryCureSlpRet[];
+extern const u8 BattleScript_BerryCureConfusionEnd2[];
+extern const u8 BattleScript_BerryCureConfusionRet[];
+extern const u8 BattleScript_BerryCureChosenStatusEnd2[];
+extern const u8 BattleScript_BerryCureChosenStatusRet[];
+extern const u8 BattleScript_WhiteHerbEnd2[];
+extern const u8 BattleScript_WhiteHerbRet[];
+extern const u8 BattleScript_ItemHealHP_RemoveItem[];
+extern const u8 BattleScript_BerryPPHealEnd2[];
+extern const u8 BattleScript_ItemHealHP_End2[];
+extern const u8 BattleScript_ItemHealHP_Ret[];
+extern const u8 BattleScript_SelectingNotAllowedMoveChoiceItem[];
+extern const u8 BattleScript_HangedOnMsg[];
+extern const u8 BattleScript_BerryConfuseHealEnd2[];
+extern const u8 BattleScript_BerryStatRaiseEnd2[];
+extern const u8 BattleScript_82DB85B[];
+extern const u8 BattleScript_BerryFocusEnergyEnd2[];
+extern const u8 BattleScript_ActionSelectionItemsCantBeUsed[];
+extern const u8 BattleScript_82DB87D[];
+extern const u8 BattleScript_82DB881[];
+extern const u8 BattleScript_82DB887[];
+extern const u8 BattleScript_82DB89D[];
+extern const u8 BattleScript_82DB8BE[];
+extern const u8 BattleScript_82DB8E0[];
+extern const u8 BattleScript_82DB8F3[];
+extern const u8 BattleScript_82DB973[];
+extern const u8 BattleScript_82DB992[];
+extern const u8 BattleScript_AskIfWantsToForfeitMatch[];
+extern const u8 BattleScript_PrintPlayerForfeited[];
+extern const u8 BattleScript_PrintPlayerForfeitedLinkBattle[];
+extern const u8 BattleScript_BallThrow[];
+extern const u8 BattleScript_BallThrowByWally[];
+extern const u8 BattleScript_SafariBallThrow[];
+extern const u8 BattleScript_SuccessBallThrow[];
+extern const u8 BattleScript_82DBD92[];
+extern const u8 BattleScript_82DBDA5[];
+extern const u8 BattleScript_82DBDC2[];
+extern const u8 BattleScript_82DBDC3[];
+extern const u8 BattleScript_WallyBallThrow[];
+extern const u8 BattleScript_ShakeBallThrow[];
+extern const u8 BattleScript_82DBE01[];
+extern const u8 BattleScript_TrainerBallBlock[];
+extern const u8 BattleScript_82DBE12[];
+extern const u8 BattleScript_82DBE1C[];
+extern const u8 BattleScript_82DBE4B[];
+extern const u8 BattleScript_82DBE6F[];
+extern const u8 BattleScript_82DBE91[];
+extern const u8 BattleScript_RunByUsingItem[];
+extern const u8 BattleScript_ActionWatchesCarefully[];
+extern const u8 BattleScript_ActionGetNear[];
+extern const u8 BattleScript_ActionThrowPokeblock[];
+extern const u8 BattleScript_82DBEE3[];
+
+#endif // GUARD_BATTLE_SCRIPTS_H
diff --git a/include/battle_setup.h b/include/battle_setup.h
index 0168022cc..e4bae6fdb 100644
--- a/include/battle_setup.h
+++ b/include/battle_setup.h
@@ -1,18 +1,85 @@
#ifndef GUARD_BATTLE_SETUP_H
#define GUARD_BATTLE_SETUP_H
-void BattleSetup_StartScriptedWildBattle(void);
-u8 BattleSetup_GetTerrainId(void);
-u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data);
-void BattleSetup_StartBattlePikeWildBattle(void);
+enum
+{
+ TRAINER_BATTLE_NORMAL,
+ TRAINER_BATTLE_CONTINUE_SCRIPT_NO_MUSIC,
+ TRAINER_BATTLE_CONTINUE_SCRIPT,
+ TRAINER_BATTLE_NORMAL_NO_INTRO_TEXT,
+ TRAINER_BATTLE_DOUBLE,
+ TRAINER_BATTLE_REMATCH,
+ TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE,
+ TRAINER_BATTLE_REMATCH_DOUBLE,
+ TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE_NO_MUSIC,
+ TRAINER_BATTLE_9,
+ TRAINER_BATTLE_SET_TRAINER_A,
+ TRAINER_BATTLE_SET_TRAINER_B,
+ TRAINER_BATTLE_12,
+};
+
+#define REMATCHES_COUNT 5
+#define REMATCH_TABLE_ENTRIES 78
+#define REMATCH_WALLY_ENTRY 64
+#define REMATCH_ELITE_FOUR_ENTRIES 73
+
+struct RematchTrainer
+{
+ u16 trainerIds[REMATCHES_COUNT];
+ u16 mapGroup;
+ u16 mapNum;
+};
+
+extern const struct RematchTrainer gRematchTable[REMATCH_TABLE_ENTRIES];
+
+extern u16 gTrainerBattleOpponent_A;
+extern u16 gTrainerBattleOpponent_B;
+extern u16 gPartnerTrainerId;
+
void BattleSetup_StartWildBattle(void);
+void BattleSetup_StartBattlePikeWildBattle(void);
void BattleSetup_StartRoamerBattle(void);
-
-u8 HasTrainerAlreadyBeenFought(u16);
-void trainer_flag_set(u16);
-void trainer_flag_clear(u16);
+void StartWallyTutorialBattle(void);
+void BattleSetup_StartScriptedWildBattle(void);
+void BattleSetup_StartLatiBattle(void);
+void BattleSetup_StartLegendaryBattle(void);
+void StartGroudonKyogreBattle(void);
+void StartRegiBattle(void);
+u8 BattleSetup_GetTerrainId(void);
+u8 sub_80B100C(s32 arg0);
+void ChooseStarter(void);
+void ResetTrainerOpponentIds(void);
+void SetMapVarsToTrainer(void);
+const u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data);
+void ConfigureAndSetUpOneTrainerBattle(u8 trainerMapObjId, const u8 *trainerScript);
+void ConfigureTwoTrainersBattle(u8 trainerMapObjId, const u8 *trainerScript);
+void SetUpTwoTrainersBattle(void);
+bool32 GetTrainerFlagFromScriptPointer(const u8 *data);
+void sub_80B16D8(void);
+u8 GetTrainerBattleMode(void);
+bool8 GetTrainerFlag(void);
+bool8 HasTrainerBeenFought(u16 trainerId);
+void SetTrainerFlag(u16 trainerId);
+void ClearTrainerFlag(u16 trainerId);
void BattleSetup_StartTrainerBattle(void);
-u8 *BattleSetup_GetScriptAddrAfterBattle(void);
-u8 *BattleSetup_GetTrainerPostBattleScript(void);
+void BattleSetup_StartRematchBattle(void);
+void ShowTrainerIntroSpeech(void);
+const u8 *BattleSetup_GetScriptAddrAfterBattle(void);
+const u8 *BattleSetup_GetTrainerPostBattleScript(void);
+void ShowTrainerCantBattleSpeech(void);
+void SetUpTrainerEncounterMusic(void);
+const u8 *GetTrainerALoseText(void);
+const u8 *GetTrainerBLoseText(void);
+const u8 *GetTrainerWonSpeech(void);
+void UpdateRematchIfDefeated(s32 rematchTableId);
+void IncrementRematchStepCounter(void);
+void TryUpdateRandomTrainerRematches(u16 mapGroup, u16 mapNum);
+bool32 DoesSomeoneWantRematchIn(u16 mapGroup, u16 mapNum);
+bool32 IsRematchTrainerIn(u16 mapGroup, u16 mapNum);
+u16 GetLastBeatenRematchTrainerId(u16 trainerId);
+bool8 ShouldTryRematchBattle(void);
+bool8 IsTrainerReadyForRematch(void);
+void ShouldTryGetTrainerScript(void);
+u16 CountBattledRematchTeams(u16 trainerId);
#endif // GUARD_BATTLE_SETUP_H
diff --git a/include/battle_transition.h b/include/battle_transition.h
index 1603f5c93..84b5e37ec 100644
--- a/include/battle_transition.h
+++ b/include/battle_transition.h
@@ -2,5 +2,55 @@
#define GUARD_BATTLE_TRANSITION_H
void sub_8149DFC(u8 a1);
+void BattleTransition_StartOnField(u8 transitionID);
+void BattleTransition_Start(u8 transitionID);
+bool8 IsBattleTransitionDone(void);
+
+// 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_CHAMPION 16
+// added in Emerald
+#define B_TRANSITION_AQUA 17
+#define B_TRANSITION_MAGMA 18
+#define B_TRANSITION_REGICE 19
+#define B_TRANSITION_REGISTEEL 20
+#define B_TRANSITION_REGIROCK 21
+#define B_TRANSITION_KYOGRE 22
+#define B_TRANSITION_GROUDON 23
+#define B_TRANSITION_RAYQUAZA 24
+#define B_TRANSITION_25 25
+#define B_TRANSITION_26 26
+#define B_TRANSITION_27 27
+#define B_TRANSITION_28 28
+#define B_TRANSITION_29 29
+#define B_TRANSITION_30 30
+#define B_TRANSITION_31 31
+#define B_TRANSITION_32 32
+#define B_TRANSITION_33 33
+#define B_TRANSITION_34 34
+#define B_TRANSITION_35 35
+#define B_TRANSITION_36 36
+#define B_TRANSITION_37 37
+#define B_TRANSITION_38 38
+#define B_TRANSITION_39 39
+#define B_TRANSITION_40 40
+#define B_TRANSITION_41 41
#endif // GUARD_BATTLE_TRANSITION_H
diff --git a/include/battle_util.h b/include/battle_util.h
index b21b250c4..81eb85dc7 100644
--- a/include/battle_util.h
+++ b/include/battle_util.h
@@ -66,8 +66,8 @@ bool8 AreAllMovesUnusable(void);
u8 GetImprisonedMovesCount(u8 bank, u16 move);
u8 UpdateTurnCounters(void);
u8 TurnBasedEffects(void);
-bool8 sub_8041364(void);
-bool8 sub_8041728(void);
+bool8 HandleWishPerishSongOnTurnEnd(void);
+bool8 HandleFaintedMonActions(void);
void TryClearRageStatuses(void);
u8 AtkCanceller_UnableToUseMove(void);
bool8 sub_80423F4(u8 bank, u8 r1, u8 r2);
@@ -79,6 +79,6 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn);
void ClearFuryCutterDestinyBondGrudge(u8 bank);
void HandleAction_RunBattleScript(void);
u8 GetMoveTarget(u16 move, u8 useMoveTarget);
-u8 IsPokeDisobedient(void);
+u8 IsMonDisobedient(void);
#endif // GUARD_BATTLE_UTIL_H
diff --git a/include/berry.h b/include/berry.h
index f51503d41..425a664c9 100644
--- a/include/berry.h
+++ b/include/berry.h
@@ -11,6 +11,16 @@ enum
BERRY_FIRMNESS_SUPER_HARD,
};
+enum
+{
+ FLAVOR_SPICY,
+ FLAVOR_DRY,
+ FLAVOR_SWEET,
+ FLAVOR_BITTER,
+ FLAVOR_SOUR,
+ FLAVOR_COUNT
+};
+
#define NUM_BERRIES 44
extern const u8 *const gBerryTreeFieldObjectGraphicsIdTablePointers[NUM_BERRIES];
diff --git a/include/berry_blender.h b/include/berry_blender.h
new file mode 100644
index 000000000..fb62e3fa3
--- /dev/null
+++ b/include/berry_blender.h
@@ -0,0 +1,8 @@
+#ifndef GUARD_BERRY_BLENDER_H
+#define GUARD_BERRY_BLENDER_H
+
+void DoBerryBlending(void);
+u16 GetBlenderArrowPosition(void);
+void ShowBerryBlenderRecordWindow(void);
+
+#endif // GUARD_BERRY_BLENDER_H
diff --git a/include/constants/abilities.h b/include/constants/abilities.h
new file mode 100644
index 000000000..4e2c4056c
--- /dev/null
+++ b/include/constants/abilities.h
@@ -0,0 +1,83 @@
+#ifndef GUARD_CONSTANTS_ABILITIES_H
+#define GUARD_CONSTANTS_ABILITIES_H
+
+#define ABILITY_NONE 0
+#define ABILITY_STENCH 1
+#define ABILITY_DRIZZLE 2
+#define ABILITY_SPEED_BOOST 3
+#define ABILITY_BATTLE_ARMOR 4
+#define ABILITY_STURDY 5
+#define ABILITY_DAMP 6
+#define ABILITY_LIMBER 7
+#define ABILITY_SAND_VEIL 8
+#define ABILITY_STATIC 9
+#define ABILITY_VOLT_ABSORB 10
+#define ABILITY_WATER_ABSORB 11
+#define ABILITY_OBLIVIOUS 12
+#define ABILITY_CLOUD_NINE 13
+#define ABILITY_COMPOUND_EYES 14
+#define ABILITY_INSOMNIA 15
+#define ABILITY_COLOR_CHANGE 16
+#define ABILITY_IMMUNITY 17
+#define ABILITY_FLASH_FIRE 18
+#define ABILITY_SHIELD_DUST 19
+#define ABILITY_OWN_TEMPO 20
+#define ABILITY_SUCTION_CUPS 21
+#define ABILITY_INTIMIDATE 22
+#define ABILITY_SHADOW_TAG 23
+#define ABILITY_ROUGH_SKIN 24
+#define ABILITY_WONDER_GUARD 25
+#define ABILITY_LEVITATE 26
+#define ABILITY_EFFECT_SPORE 27
+#define ABILITY_SYNCHRONIZE 28
+#define ABILITY_CLEAR_BODY 29
+#define ABILITY_NATURAL_CURE 30
+#define ABILITY_LIGHTNING_ROD 31
+#define ABILITY_SERENE_GRACE 32
+#define ABILITY_SWIFT_SWIM 33
+#define ABILITY_CHLOROPHYLL 34
+#define ABILITY_ILLUMINATE 35
+#define ABILITY_TRACE 36
+#define ABILITY_HUGE_POWER 37
+#define ABILITY_POISON_POINT 38
+#define ABILITY_INNER_FOCUS 39
+#define ABILITY_MAGMA_ARMOR 40
+#define ABILITY_WATER_VEIL 41
+#define ABILITY_MAGNET_PULL 42
+#define ABILITY_SOUNDPROOF 43
+#define ABILITY_RAIN_DISH 44
+#define ABILITY_SAND_STREAM 45
+#define ABILITY_PRESSURE 46
+#define ABILITY_THICK_FAT 47
+#define ABILITY_EARLY_BIRD 48
+#define ABILITY_FLAME_BODY 49
+#define ABILITY_RUN_AWAY 50
+#define ABILITY_KEEN_EYE 51
+#define ABILITY_HYPER_CUTTER 52
+#define ABILITY_PICKUP 53
+#define ABILITY_TRUANT 54
+#define ABILITY_HUSTLE 55
+#define ABILITY_CUTE_CHARM 56
+#define ABILITY_PLUS 57
+#define ABILITY_MINUS 58
+#define ABILITY_FORECAST 59
+#define ABILITY_STICKY_HOLD 60
+#define ABILITY_SHED_SKIN 61
+#define ABILITY_GUTS 62
+#define ABILITY_MARVEL_SCALE 63
+#define ABILITY_LIQUID_OOZE 64
+#define ABILITY_OVERGROW 65
+#define ABILITY_BLAZE 66
+#define ABILITY_TORRENT 67
+#define ABILITY_SWARM 68
+#define ABILITY_ROCK_HEAD 69
+#define ABILITY_DROUGHT 70
+#define ABILITY_ARENA_TRAP 71
+#define ABILITY_VITAL_SPIRIT 72
+#define ABILITY_WHITE_SMOKE 73
+#define ABILITY_PURE_POWER 74
+#define ABILITY_SHELL_ARMOR 75
+#define ABILITY_CACOPHONY 76
+#define ABILITY_AIR_LOCK 77
+
+#endif // GUARD_CONSTANTS_ABILITIES_H
diff --git a/include/constants/battle_move_effects.h b/include/constants/battle_move_effects.h
new file mode 100644
index 000000000..1b59f2f64
--- /dev/null
+++ b/include/constants/battle_move_effects.h
@@ -0,0 +1,219 @@
+#ifndef GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H
+#define GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H
+
+#define EFFECT_HIT 0
+#define EFFECT_SLEEP 1
+#define EFFECT_POISON_HIT 2
+#define EFFECT_ABSORB 3
+#define EFFECT_BURN_HIT 4
+#define EFFECT_FREEZE_HIT 5
+#define EFFECT_PARALYZE_HIT 6
+#define EFFECT_EXPLOSION 7
+#define EFFECT_DREAM_EATER 8
+#define EFFECT_MIRROR_MOVE 9
+#define EFFECT_ATTACK_UP 10
+#define EFFECT_DEFENSE_UP 11
+#define EFFECT_SPEED_UP 12
+#define EFFECT_SPECIAL_ATTACK_UP 13
+#define EFFECT_SPECIAL_DEFENSE_UP 14
+#define EFFECT_ACCURACY_UP 15
+#define EFFECT_EVASION_UP 16
+#define EFFECT_ALWAYS_HIT 17
+#define EFFECT_ATTACK_DOWN 18
+#define EFFECT_DEFENSE_DOWN 19
+#define EFFECT_SPEED_DOWN 20
+#define EFFECT_SPECIAL_ATTACK_DOWN 21 // unused
+#define EFFECT_SPECIAL_DEFENSE_DOWN 22 // unused
+#define EFFECT_ACCURACY_DOWN 23
+#define EFFECT_EVASION_DOWN 24
+#define EFFECT_HAZE 25
+#define EFFECT_BIDE 26
+#define EFFECT_RAMPAGE 27
+#define EFFECT_ROAR 28
+#define EFFECT_MULTI_HIT 29
+#define EFFECT_CONVERSION 30
+#define EFFECT_FLINCH_HIT 31
+#define EFFECT_RESTORE_HP 32
+#define EFFECT_TOXIC 33
+#define EFFECT_PAY_DAY 34
+#define EFFECT_LIGHT_SCREEN 35
+#define EFFECT_TRI_ATTACK 36
+#define EFFECT_REST 37
+#define EFFECT_OHKO 38
+#define EFFECT_RAZOR_WIND 39
+#define EFFECT_SUPER_FANG 40
+#define EFFECT_DRAGON_RAGE 41
+#define EFFECT_TRAP 42
+#define EFFECT_HIGH_CRITICAL 43
+#define EFFECT_DOUBLE_HIT 44
+#define EFFECT_RECOIL_IF_MISS 45
+#define EFFECT_MIST 46
+#define EFFECT_FOCUS_ENERGY 47
+#define EFFECT_RECOIL 48
+#define EFFECT_CONFUSE 49
+#define EFFECT_ATTACK_UP_2 50
+#define EFFECT_DEFENSE_UP_2 51
+#define EFFECT_SPEED_UP_2 52
+#define EFFECT_SPECIAL_ATTACK_UP_2 53
+#define EFFECT_SPECIAL_DEFENSE_UP_2 54
+#define EFFECT_ACCURACY_UP_2 55
+#define EFFECT_EVASION_UP_2 56
+#define EFFECT_TRANSFORM 57
+#define EFFECT_ATTACK_DOWN_2 58
+#define EFFECT_DEFENSE_DOWN_2 59
+#define EFFECT_SPEED_DOWN_2 60
+#define EFFECT_SPECIAL_ATTACK_DOWN_2 61
+#define EFFECT_SPECIAL_DEFENSE_DOWN_2 62
+#define EFFECT_ACCURACY_DOWN_2 63
+#define EFFECT_EVASION_DOWN_2 64
+#define EFFECT_REFLECT 65
+#define EFFECT_POISON 66
+#define EFFECT_PARALYZE 67
+#define EFFECT_ATTACK_DOWN_HIT 68
+#define EFFECT_DEFENSE_DOWN_HIT 69
+#define EFFECT_SPEED_DOWN_HIT 70
+#define EFFECT_SPECIAL_ATTACK_DOWN_HIT 71
+#define EFFECT_SPECIAL_DEFENSE_DOWN_HIT 72
+#define EFFECT_ACCURACY_DOWN_HIT 73
+#define EFFECT_EVASION_DOWN_HIT 74
+#define EFFECT_SKY_ATTACK 75
+#define EFFECT_CONFUSE_HIT 76
+#define EFFECT_TWINEEDLE 77
+#define EFFECT_VITAL_THROW 78
+#define EFFECT_SUBSTITUTE 79
+#define EFFECT_RECHARGE 80
+#define EFFECT_RAGE 81
+#define EFFECT_MIMIC 82
+#define EFFECT_METRONOME 83
+#define EFFECT_LEECH_SEED 84
+#define EFFECT_SPLASH 85
+#define EFFECT_DISABLE 86
+#define EFFECT_LEVEL_DAMAGE 87
+#define EFFECT_PSYWAVE 88
+#define EFFECT_COUNTER 89
+#define EFFECT_ENCORE 90
+#define EFFECT_PAIN_SPLIT 91
+#define EFFECT_SNORE 92
+#define EFFECT_CONVERSION_2 93
+#define EFFECT_LOCK_ON 94
+#define EFFECT_SKETCH 95
+#define EFFECT_UNUSED_60 96 // thaw
+#define EFFECT_SLEEP_TALK 97
+#define EFFECT_DESTINY_BOND 98
+#define EFFECT_FLAIL 99
+#define EFFECT_SPITE 100
+#define EFFECT_FALSE_SWIPE 101
+#define EFFECT_HEAL_BELL 102
+#define EFFECT_QUICK_ATTACK 103
+#define EFFECT_TRIPLE_KICK 104
+#define EFFECT_THIEF 105
+#define EFFECT_MEAN_LOOK 106
+#define EFFECT_NIGHTMARE 107
+#define EFFECT_MINIMIZE 108
+#define EFFECT_CURSE 109
+#define EFFECT_UNUSED_6E 110
+#define EFFECT_PROTECT 111
+#define EFFECT_SPIKES 112
+#define EFFECT_FORESIGHT 113
+#define EFFECT_PERISH_SONG 114
+#define EFFECT_SANDSTORM 115
+#define EFFECT_ENDURE 116
+#define EFFECT_ROLLOUT 117
+#define EFFECT_SWAGGER 118
+#define EFFECT_FURY_CUTTER 119
+#define EFFECT_ATTRACT 120
+#define EFFECT_RETURN 121
+#define EFFECT_PRESENT 122
+#define EFFECT_FRUSTRATION 123
+#define EFFECT_SAFEGUARD 124
+#define EFFECT_THAW_HIT 125
+#define EFFECT_MAGNITUDE 126
+#define EFFECT_BATON_PASS 127
+#define EFFECT_PURSUIT 128
+#define EFFECT_RAPID_SPIN 129
+#define EFFECT_SONICBOOM 130
+#define EFFECT_UNUSED_83 131
+#define EFFECT_MORNING_SUN 132
+#define EFFECT_SYNTHESIS 133
+#define EFFECT_MOONLIGHT 134
+#define EFFECT_HIDDEN_POWER 135
+#define EFFECT_RAIN_DANCE 136
+#define EFFECT_SUNNY_DAY 137
+#define EFFECT_DEFENSE_UP_HIT 138
+#define EFFECT_ATTACK_UP_HIT 139
+#define EFFECT_ALL_STATS_UP_HIT 140
+#define EFFECT_UNUSED_8D 141 // incomplete fake out in gen 2
+#define EFFECT_BELLY_DRUM 142
+#define EFFECT_PSYCH_UP 143
+#define EFFECT_MIRROR_COAT 144
+#define EFFECT_SKULL_BASH 145
+#define EFFECT_TWISTER 146
+#define EFFECT_EARTHQUAKE 147
+#define EFFECT_FUTURE_SIGHT 148
+#define EFFECT_GUST 149
+#define EFFECT_FLINCH_HIT_2 150 // STOMP ASTONISH EXTRASENSORY NEEDLE_ARM
+#define EFFECT_SOLARBEAM 151
+#define EFFECT_THUNDER 152
+#define EFFECT_TELEPORT 153
+#define EFFECT_BEAT_UP 154
+#define EFFECT_SEMI_INVULNERABLE 155
+#define EFFECT_DEFENSE_CURL 156
+#define EFFECT_SOFTBOILED 157
+#define EFFECT_FAKE_OUT 158
+#define EFFECT_UPROAR 159
+#define EFFECT_STOCKPILE 160
+#define EFFECT_SPIT_UP 161
+#define EFFECT_SWALLOW 162
+#define EFFECT_UNUSED_A3 163
+#define EFFECT_HAIL 164
+#define EFFECT_TORMENT 165
+#define EFFECT_FLATTER 166
+#define EFFECT_WILL_O_WISP 167
+#define EFFECT_MEMENTO 168
+#define EFFECT_FACADE 169
+#define EFFECT_FOCUS_PUNCH 170
+#define EFFECT_SMELLINGSALT 171
+#define EFFECT_FOLLOW_ME 172
+#define EFFECT_NATURE_POWER 173
+#define EFFECT_CHARGE 174
+#define EFFECT_TAUNT 175
+#define EFFECT_HELPING_HAND 176
+#define EFFECT_TRICK 177
+#define EFFECT_ROLE_PLAY 178
+#define EFFECT_WISH 179
+#define EFFECT_ASSIST 180
+#define EFFECT_INGRAIN 181
+#define EFFECT_SUPERPOWER 182
+#define EFFECT_MAGIC_COAT 183
+#define EFFECT_RECYCLE 184
+#define EFFECT_REVENGE 185
+#define EFFECT_BRICK_BREAK 186
+#define EFFECT_YAWN 187
+#define EFFECT_KNOCK_OFF 188
+#define EFFECT_ENDEAVOR 189
+#define EFFECT_ERUPTION 190
+#define EFFECT_SKILL_SWAP 191
+#define EFFECT_IMPRISON 192
+#define EFFECT_REFRESH 193
+#define EFFECT_GRUDGE 194
+#define EFFECT_SNATCH 195
+#define EFFECT_LOW_KICK 196
+#define EFFECT_SECRET_POWER 197
+#define EFFECT_DOUBLE_EDGE 198
+#define EFFECT_TEETER_DANCE 199
+#define EFFECT_BLAZE_KICK 200
+#define EFFECT_MUD_SPORT 201
+#define EFFECT_POISON_FANG 202
+#define EFFECT_WEATHER_BALL 203
+#define EFFECT_OVERHEAT 204
+#define EFFECT_TICKLE 205
+#define EFFECT_COSMIC_POWER 206
+#define EFFECT_SKY_UPPERCUT 207
+#define EFFECT_BULK_UP 208
+#define EFFECT_POISON_TAIL 209
+#define EFFECT_WATER_SPORT 210
+#define EFFECT_CALM_MIND 211
+#define EFFECT_DRAGON_DANCE 212
+#define EFFECT_CAMOUFLAGE 213
+
+#endif // GUARD_CONSTANTS_BATTLE_MOVE_EFFECTS_H
diff --git a/include/constants/decorations.h b/include/constants/decorations.h
new file mode 100644
index 000000000..2e3558721
--- /dev/null
+++ b/include/constants/decorations.h
@@ -0,0 +1,126 @@
+#ifndef GUARD_CONSTANTS_DECORATIONS_H
+#define GUARD_CONSTANTS_DECORATIONS_H
+
+#define DECOR_NONE 0
+#define DECOR_SMALL_DESK 1
+#define DECOR_POKEMON_DESK 2
+#define DECOR_HEAVY_DESK 3
+#define DECOR_RAGGED_DESK 4
+#define DECOR_COMFORT_DESK 5
+#define DECOR_PRETTY_DESK 6
+#define DECOR_BRICK_DESK 7
+#define DECOR_CAMP_DESK 8
+#define DECOR_HARD_DESK 9
+#define DECOR_SMALL_CHAIR 10
+#define DECOR_POKEMON_CHAIR 11
+#define DECOR_HEAVY_CHAIR 12
+#define DECOR_PRETTY_CHAIR 13
+#define DECOR_COMFORT_CHAIR 14
+#define DECOR_RAGGED_CHAIR 15
+#define DECOR_BRICK_CHAIR 16
+#define DECOR_CAMP_CHAIR 17
+#define DECOR_HARD_CHAIR 18
+#define DECOR_RED_PLANT 19
+#define DECOR_TROPICAL_PLANT 20
+#define DECOR_PRETTY_FLOWERS 21
+#define DECOR_COLORFUL_PLANT 22
+#define DECOR_BIG_PLANT 23
+#define DECOR_GORGEOUS_PLANT 24
+#define DECOR_RED_BRICK 25
+#define DECOR_YELLOW_BRICK 26
+#define DECOR_BLUE_BRICK 27
+#define DECOR_RED_BALLOON 28
+#define DECOR_BLUE_BALLOON 29
+#define DECOR_YELLOW_BALLOON 30
+#define DECOR_RED_TENT 31
+#define DECOR_BLUE_TENT 32
+#define DECOR_SOLID_BOARD 33
+#define DECOR_SLIDE 34
+#define DECOR_FENCE_LENGTH 35
+#define DECOR_FENCE_WIDTH 36
+#define DECOR_TIRE 37
+#define DECOR_STAND 38
+#define DECOR_MUD_BALL 39
+#define DECOR_BREAKABLE_DOOR 40
+#define DECOR_SAND_ORNAMENT 41
+#define DECOR_SILVER_SHIELD 42
+#define DECOR_GOLD_SHIELD 43
+#define DECOR_GLASS_ORNAMENT 44
+#define DECOR_TV 45
+#define DECOR_ROUND_TV 46
+#define DECOR_CUTE_TV 47
+#define DECOR_GLITTER_MAT 48
+#define DECOR_JUMP_MAT 49
+#define DECOR_SPIN_MAT 50
+#define DECOR_C_LOW_NOTE_MAT 51
+#define DECOR_D_NOTE_MAT 52
+#define DECOR_E_NOTE_MAT 53
+#define DECOR_F_NOTE_MAT 54
+#define DECOR_G_NOTE_MAT 55
+#define DECOR_A_NOTE_MAT 56
+#define DECOR_B_NOTE_MAT 57
+#define DECOR_C_HIGH_NOTE_MAT 58
+#define DECOR_SURF_MAT 59
+#define DECOR_THUNDER_MAT 60
+#define DECOR_FIRE_BLAST_MAT 61
+#define DECOR_POWDER_SNOW_MAT 62
+#define DECOR_ATTRACT_MAT 63
+#define DECOR_FISSURE_MAT 64
+#define DECOR_SPIKES_MAT 65
+#define DECOR_BALL_POSTER 66
+#define DECOR_GREEN_POSTER 67
+#define DECOR_RED_POSTER 68
+#define DECOR_BLUE_POSTER 69
+#define DECOR_CUTE_POSTER 70
+#define DECOR_PIKA_POSTER 71
+#define DECOR_LONG_POSTER 72
+#define DECOR_SEA_POSTER 73
+#define DECOR_SKY_POSTER 74
+#define DECOR_KISS_POSTER 75
+#define DECOR_PICHU_DOLL 76
+#define DECOR_PIKACHU_DOLL 77
+#define DECOR_MARILL_DOLL 78
+#define DECOR_TOGEPI_DOLL 79
+#define DECOR_CYNDAQUIL_DOLL 80
+#define DECOR_CHIKORITA_DOLL 81
+#define DECOR_TOTODILE_DOLL 82
+#define DECOR_JIGGLYPUFF_DOLL 83
+#define DECOR_MEOWTH_DOLL 84
+#define DECOR_CLEFAIRY_DOLL 85
+#define DECOR_DITTO_DOLL 86
+#define DECOR_SMOOCHUM_DOLL 87
+#define DECOR_TREECKO_DOLL 88
+#define DECOR_TORCHIC_DOLL 89
+#define DECOR_MUDKIP_DOLL 90
+#define DECOR_DUSKULL_DOLL 91
+#define DECOR_WYNAUT_DOLL 92
+#define DECOR_BALTOY_DOLL 93
+#define DECOR_KECLEON_DOLL 94
+#define DECOR_AZURILL_DOLL 95
+#define DECOR_SKITTY_DOLL 96
+#define DECOR_SWABLU_DOLL 97
+#define DECOR_GULPIN_DOLL 98
+#define DECOR_LOTAD_DOLL 99
+#define DECOR_SEEDOT_DOLL 100
+#define DECOR_PIKA_CUSHION 101
+#define DECOR_ROUND_CUSHION 102
+#define DECOR_KISS_CUSHION 103
+#define DECOR_ZIGZAG_CUSHION 104
+#define DECOR_SPIN_CUSHION 105
+#define DECOR_DIAMOND_CUSHION 106
+#define DECOR_BALL_CUSHION 107
+#define DECOR_GRASS_CUSHION 108
+#define DECOR_FIRE_CUSHION 109
+#define DECOR_WATER_CUSHION 110
+#define DECOR_SNORLAX_DOLL 111
+#define DECOR_RHYDON_DOLL 112
+#define DECOR_LAPRAS_DOLL 113
+#define DECOR_VENUSAUR_DOLL 114
+#define DECOR_CHARIZARD_DOLL 115
+#define DECOR_BLASTOISE_DOLL 116
+#define DECOR_WAILMER_DOLL 117
+#define DECOR_REGIROCK_DOLL 118
+#define DECOR_REGICE_DOLL 119
+#define DECOR_REGISTEEL_DOLL 120
+
+#endif // GUARD_CONSTANTS_DECORATIONS_H
diff --git a/include/constants/easy_chat.h b/include/constants/easy_chat.h
new file mode 100644
index 000000000..2c437c88e
--- /dev/null
+++ b/include/constants/easy_chat.h
@@ -0,0 +1,1079 @@
+#ifndef GUARD_CONSTANTS_EASY_CHAT_H
+#define GUARD_CONSTANTS_EASY_CHAT_H
+
+#define EC_GROUP_POKEMON 0x0
+#define EC_GROUP_TRAINER 0x1
+#define EC_GROUP_STATUS 0x2
+#define EC_GROUP_BATTLE 0x3
+#define EC_GROUP_GREETINGS 0x4
+#define EC_GROUP_PEOPLE 0x5
+#define EC_GROUP_VOICES 0x6
+#define EC_GROUP_SPEECH 0x7
+#define EC_GROUP_ENDINGS 0x8
+#define EC_GROUP_FEELINGS 0x9
+#define EC_GROUP_CONDITIONS 0xa
+#define EC_GROUP_ACTIONS 0xb
+#define EC_GROUP_LIFESTYLE 0xc
+#define EC_GROUP_HOBBIES 0xd
+#define EC_GROUP_TIME 0xe
+#define EC_GROUP_MISC 0xf
+#define EC_GROUP_ADJECTIVES 0x10
+#define EC_GROUP_EVENTS 0x11
+#define EC_GROUP_MOVE_1 0x12
+#define EC_GROUP_MOVE_2 0x13
+#define EC_GROUP_TRENDY_SAYING 0x14
+#define EC_GROUP_POKEMON_2 0x15
+
+// 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
+#define EC_WORD_RED (EC_GROUP_TRAINER << 9) | 0x13
+#define EC_WORD_GREEN (EC_GROUP_TRAINER << 9) | 0x14
+#define EC_WORD_BAG (EC_GROUP_TRAINER << 9) | 0x15
+#define EC_WORD_FLAME (EC_GROUP_TRAINER << 9) | 0x16
+#define EC_WORD_GOLD (EC_GROUP_TRAINER << 9) | 0x17
+#define EC_WORD_LEAF (EC_GROUP_TRAINER << 9) | 0x18
+#define EC_WORD_SILVER (EC_GROUP_TRAINER << 9) | 0x19
+#define EC_WORD_EMERALD (EC_GROUP_TRAINER << 9) | 0x1a
+
+// 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
+#define EC_WORD_CRUSH (EC_GROUP_EVENTS << 9) | 0x16
+#define EC_WORD_DIRECT (EC_GROUP_EVENTS << 9) | 0x17
+#define EC_WORD_TOWER (EC_GROUP_EVENTS << 9) | 0x18
+#define EC_WORD_UNION (EC_GROUP_EVENTS << 9) | 0x19
+#define EC_WORD_ROOM (EC_GROUP_EVENTS << 9) | 0x1a
+#define EC_WORD_WIRELESS (EC_GROUP_EVENTS << 9) | 0x1b
+#define EC_WORD_FRONTIER (EC_GROUP_EVENTS << 9) | 0x1c
+
+// 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_POKEMON(mon) ((EC_GROUP_POKEMON << 9) | SPECIES_##mon)
+#define EC_POKEMON2(mon) ((EC_GROUP_POKEMON_2 << 9) | SPECIES_##mon)
+#define EC_MOVE(move) ((EC_GROUP_MOVE_1 << 9) | MOVE_##move)
+#define EC_MOVE2(move) ((EC_GROUP_MOVE_2 << 9) | MOVE_##move)
+
+#define EC_GROUP(word) ((word) >> 9)
+#define EC_INDEX(word) ((word) & 0x1FF)
+
+#endif // GUARD_CONSTANTS_EASY_CHAT_H
diff --git a/include/constants/flags.h b/include/constants/flags.h
new file mode 100644
index 000000000..26d015c84
--- /dev/null
+++ b/include/constants/flags.h
@@ -0,0 +1,1578 @@
+#ifndef GUARD_CONSTANTS_FLAGS_H
+#define GUARD_CONSTANTS_FLAGS_H
+
+#define FLAG_0x001 0x1
+#define FLAG_0x002 0x2
+#define FLAG_0x003 0x3
+#define FLAG_0x004 0x4
+#define FLAG_0x005 0x5
+#define FLAG_0x006 0x6
+#define FLAG_0x007 0x7
+#define FLAG_0x008 0x8
+#define FLAG_0x009 0x9
+#define FLAG_0x00A 0xA
+#define FLAG_0x00B 0xB
+#define FLAG_0x00C 0xC
+#define FLAG_0x00D 0xD
+#define FLAG_0x00E 0xE
+#define FLAG_0x00F 0xF
+#define FLAG_0x010 0x10
+#define FLAG_0x011 0x11
+#define FLAG_0x012 0x12
+#define FLAG_0x013 0x13
+#define FLAG_0x014 0x14
+#define FLAG_0x015 0x15
+#define FLAG_0x016 0x16
+#define FLAG_0x017 0x17
+#define FLAG_0x018 0x18
+#define FLAG_0x019 0x19
+#define FLAG_0x01A 0x1A
+#define FLAG_0x01B 0x1B
+#define FLAG_0x01C 0x1C
+#define FLAG_0x01D 0x1D
+#define FLAG_0x01E 0x1E
+#define FLAG_0x01F 0x1F
+#define FLAG_0x020 0x20
+#define FLAG_0x021 0x21
+#define FLAG_0x022 0x22
+#define FLAG_0x023 0x23
+#define FLAG_0x024 0x24
+#define FLAG_0x025 0x25
+#define FLAG_0x026 0x26
+#define FLAG_0x027 0x27
+#define FLAG_0x028 0x28
+#define FLAG_0x029 0x29
+#define FLAG_0x02A 0x2A
+#define FLAG_0x02B 0x2B
+#define FLAG_0x02C 0x2C
+#define FLAG_0x02D 0x2D
+#define FLAG_0x02E 0x2E
+#define FLAG_0x02F 0x2F
+#define FLAG_0x030 0x30
+#define FLAG_0x031 0x31
+#define FLAG_0x032 0x32
+#define FLAG_0x033 0x33
+#define FLAG_0x034 0x34
+#define FLAG_0x035 0x35
+#define FLAG_0x036 0x36
+#define FLAG_0x037 0x37
+#define FLAG_0x038 0x38
+#define FLAG_0x039 0x39
+#define FLAG_0x03A 0x3A
+#define FLAG_0x03B 0x3B
+#define FLAG_0x03C 0x3C
+#define FLAG_0x03D 0x3D
+#define FLAG_0x03E 0x3E
+#define FLAG_0x03F 0x3F
+#define FLAG_0x040 0x40
+#define FLAG_0x041 0x41
+#define FLAG_0x042 0x42
+#define FLAG_0x043 0x43
+#define FLAG_0x044 0x44
+#define FLAG_0x045 0x45
+#define FLAG_0x046 0x46
+#define FLAG_0x047 0x47
+#define FLAG_0x048 0x48
+#define FLAG_0x049 0x49
+#define FLAG_0x04A 0x4A
+#define FLAG_0x04B 0x4B
+#define FLAG_0x04C 0x4C
+#define FLAG_0x04D 0x4D
+#define FLAG_0x04E 0x4E
+#define FLAG_0x04F 0x4F
+#define FLAG_0x050 0x50
+#define FLAG_0x051 0x51
+#define FLAG_0x052 0x52
+#define FLAG_LEGENDARIES_IN_SOOTOPOLIS 0x53
+#define FLAG_0x054 0x54
+#define FLAG_0x055 0x55
+#define FLAG_0x056 0x56
+#define FLAG_0x057 0x57
+#define FLAG_0x058 0x58
+#define FLAG_0x059 0x59
+#define FLAG_0x05A 0x5A
+#define FLAG_0x05B 0x5B
+#define FLAG_0x05C 0x5C
+#define FLAG_0x05D 0x5D
+#define FLAG_0x05E 0x5E
+#define FLAG_0x05F 0x5F
+#define FLAG_0x060 0x60
+#define FLAG_0x061 0x61
+#define FLAG_0x062 0x62
+#define FLAG_0x063 0x63
+#define FLAG_0x064 0x64
+#define FLAG_0x065 0x65
+#define FLAG_0x066 0x66
+#define FLAG_0x067 0x67
+#define FLAG_0x068 0x68
+#define FLAG_0x069 0x69
+#define FLAG_0x06A 0x6A
+#define FLAG_0x06B 0x6B
+#define FLAG_0x06C 0x6C
+#define FLAG_0x06D 0x6D
+#define FLAG_0x06E 0x6E
+#define FLAG_0x06F 0x6F
+#define FLAG_0x070 0x70
+#define FLAG_0x071 0x71
+#define FLAG_0x072 0x72
+#define FLAG_0x073 0x73
+#define FLAG_0x074 0x74
+#define FLAG_0x075 0x75
+#define FLAG_0x076 0x76
+#define FLAG_0x077 0x77
+#define FLAG_0x078 0x78
+#define FLAG_0x079 0x79
+#define FLAG_0x07A 0x7A
+#define FLAG_0x07B 0x7B
+#define FLAG_0x07C 0x7C
+#define FLAG_0x07D 0x7D
+#define FLAG_0x07E 0x7E
+#define FLAG_0x07F 0x7F
+#define FLAG_0x080 0x80
+#define FLAG_0x081 0x81
+#define FLAG_0x082 0x82
+#define FLAG_0x083 0x83
+#define FLAG_0x084 0x84
+#define FLAG_0x085 0x85
+#define FLAG_PENDING_DAYCARE_EGG 0x86
+#define FLAG_0x087 0x87
+#define FLAG_0x088 0x88
+#define FLAG_0x089 0x89
+#define FLAG_0x08A 0x8A
+#define FLAG_0x08B 0x8B
+#define FLAG_0x08C 0x8C
+#define FLAG_0x08D 0x8D
+#define FLAG_0x08E 0x8E
+#define FLAG_0x08F 0x8F
+#define FLAG_0x090 0x90
+#define FLAG_0x091 0x91
+#define FLAG_0x092 0x92
+#define FLAG_0x093 0x93
+#define FLAG_0x094 0x94
+#define FLAG_0x095 0x95
+#define FLAG_0x096 0x96
+#define FLAG_0x097 0x97
+#define FLAG_0x098 0x98
+#define FLAG_0x099 0x99
+#define FLAG_0x09A 0x9A
+#define FLAG_0x09B 0x9B
+#define FLAG_0x09C 0x9C
+#define FLAG_0x09D 0x9D
+#define FLAG_0x09E 0x9E
+#define FLAG_0x09F 0x9F
+#define FLAG_0x0A0 0xA0
+#define FLAG_0x0A1 0xA1
+#define FLAG_0x0A2 0xA2
+#define FLAG_0x0A3 0xA3
+#define FLAG_0x0A4 0xA4
+#define FLAG_0x0A5 0xA5
+#define FLAG_0x0A6 0xA6
+#define FLAG_0x0A7 0xA7
+#define FLAG_0x0A8 0xA8
+#define FLAG_0x0A9 0xA9
+#define FLAG_0x0AA 0xAA
+#define FLAG_0x0AB 0xAB
+#define FLAG_0x0AC 0xAC
+#define FLAG_0x0AD 0xAD
+#define FLAG_0x0AE 0xAE
+#define FLAG_0x0AF 0xAF
+#define FLAG_0x0B0 0xB0
+#define FLAG_0x0B1 0xB1
+#define FLAG_0x0B2 0xB2
+#define FLAG_0x0B3 0xB3
+#define FLAG_0x0B4 0xB4
+#define FLAG_0x0B5 0xB5
+#define FLAG_0x0B6 0xB6
+#define FLAG_0x0B7 0xB7
+#define FLAG_0x0B8 0xB8
+#define FLAG_0x0B9 0xB9
+#define FLAG_0x0BA 0xBA
+#define FLAG_0x0BB 0xBB
+#define FLAG_0x0BC 0xBC
+#define FLAG_0x0BD 0xBD
+#define FLAG_0x0BE 0xBE
+#define FLAG_0x0BF 0xBF
+#define FLAG_0x0C0 0xC0
+#define FLAG_0x0C1 0xC1
+#define FLAG_0x0C2 0xC2
+#define FLAG_0x0C3 0xC3
+#define FLAG_0x0C4 0xC4
+#define FLAG_0x0C5 0xC5
+#define FLAG_0x0C6 0xC6
+#define FLAG_0x0C7 0xC7
+#define FLAG_0x0C8 0xC8
+#define FLAG_0x0C9 0xC9
+#define FLAG_0x0CA 0xCA
+#define FLAG_0x0CB 0xCB
+#define FLAG_0x0CC 0xCC
+#define FLAG_0x0CD 0xCD
+#define FLAG_0x0CE 0xCE
+#define FLAG_0x0CF 0xCF
+#define FLAG_0x0D0 0xD0
+#define FLAG_0x0D1 0xD1
+#define FLAG_0x0D2 0xD2
+#define FLAG_0x0D3 0xD3
+#define FLAG_0x0D4 0xD4
+#define FLAG_0x0D5 0xD5
+#define FLAG_0x0D6 0xD6
+#define FLAG_0x0D7 0xD7
+#define FLAG_0x0D8 0xD8
+#define FLAG_0x0D9 0xD9
+#define FLAG_0x0DA 0xDA
+#define FLAG_0x0DB 0xDB
+#define FLAG_0x0DC 0xDC
+#define FLAG_0x0DD 0xDD
+#define FLAG_0x0DE 0xDE
+#define FLAG_0x0DF 0xDF
+#define FLAG_0x0E0 0xE0
+#define FLAG_0x0E1 0xE1
+#define FLAG_0x0E2 0xE2
+#define FLAG_0x0E3 0xE3
+#define FLAG_0x0E4 0xE4
+#define FLAG_0x0E5 0xE5
+#define FLAG_0x0E6 0xE6
+#define FLAG_0x0E7 0xE7
+#define FLAG_0x0E8 0xE8
+#define FLAG_0x0E9 0xE9
+#define FLAG_0x0EA 0xEA
+#define FLAG_0x0EB 0xEB
+#define FLAG_0x0EC 0xEC
+#define FLAG_0x0ED 0xED
+#define FLAG_0x0EE 0xEE
+#define FLAG_0x0EF 0xEF
+#define FLAG_0x0F0 0xF0
+#define FLAG_0x0F1 0xF1
+#define FLAG_0x0F2 0xF2
+#define FLAG_0x0F3 0xF3
+#define FLAG_0x0F4 0xF4
+#define FLAG_0x0F5 0xF5
+#define FLAG_0x0F6 0xF6
+#define FLAG_0x0F7 0xF7
+#define FLAG_0x0F8 0xF8
+#define FLAG_0x0F9 0xF9
+#define FLAG_0x0FA 0xFA
+#define FLAG_0x0FB 0xFB
+#define FLAG_0x0FC 0xFC
+#define FLAG_0x0FD 0xFD
+#define FLAG_0x0FE 0xFE
+#define FLAG_0x0FF 0xFF
+#define FLAG_0x100 0x100
+#define FLAG_0x101 0x101
+#define FLAG_0x102 0x102
+#define FLAG_0x103 0x103
+#define FLAG_0x104 0x104
+#define FLAG_0x105 0x105
+#define FLAG_0x106 0x106
+#define FLAG_0x107 0x107
+#define FLAG_0x108 0x108
+#define FLAG_0x109 0x109
+#define FLAG_0x10A 0x10A
+#define FLAG_0x10B 0x10B
+#define FLAG_0x10C 0x10C
+#define FLAG_0x10D 0x10D
+#define FLAG_0x10E 0x10E
+#define FLAG_0x10F 0x10F
+#define FLAG_0x110 0x110
+#define FLAG_0x111 0x111
+#define FLAG_0x112 0x112
+#define FLAG_0x113 0x113
+#define FLAG_0x114 0x114
+#define FLAG_0x115 0x115
+#define FLAG_0x116 0x116
+#define FLAG_0x117 0x117
+#define FLAG_0x118 0x118
+#define FLAG_0x119 0x119
+#define FLAG_0x11A 0x11A
+#define FLAG_0x11B 0x11B
+#define FLAG_0x11C 0x11C
+#define FLAG_0x11D 0x11D
+#define FLAG_0x11E 0x11E
+#define FLAG_0x11F 0x11F
+#define FLAG_0x120 0x120
+#define FLAG_0x121 0x121
+#define FLAG_0x122 0x122
+#define FLAG_0x123 0x123
+#define FLAG_0x124 0x124
+#define FLAG_0x125 0x125
+#define FLAG_0x126 0x126
+#define FLAG_0x127 0x127
+#define FLAG_0x128 0x128
+#define FLAG_0x129 0x129
+#define FLAG_0x12A 0x12A
+#define FLAG_0x12B 0x12B
+#define FLAG_0x12C 0x12C
+#define FLAG_0x12D 0x12D
+#define FLAG_0x12E 0x12E
+#define FLAG_HAS_MATCH_CALL 0x12F
+#define FLAG_0x130 0x130
+#define FLAG_0x131 0x131
+#define FLAG_0x132 0x132
+#define FLAG_0x133 0x133
+#define FLAG_0x134 0x134
+#define FLAG_0x135 0x135
+#define FLAG_0x136 0x136
+#define FLAG_0x137 0x137
+#define FLAG_0x138 0x138
+#define FLAG_0x139 0x139
+#define FLAG_0x13A 0x13A
+#define FLAG_0x13B 0x13B
+#define FLAG_0x13C 0x13C
+#define FLAG_0x13D 0x13D
+#define FLAG_0x13E 0x13E
+#define FLAG_0x13F 0x13F
+#define FLAG_0x140 0x140
+#define FLAG_0x141 0x141
+#define FLAG_0x142 0x142
+#define FLAG_0x143 0x143
+#define FLAG_0x144 0x144
+#define FLAG_0x145 0x145
+#define FLAG_0x146 0x146
+#define FLAG_0x147 0x147
+#define FLAG_0x148 0x148
+#define FLAG_0x149 0x149
+#define FLAG_0x14A 0x14A
+#define FLAG_0x14B 0x14B
+#define FLAG_0x14C 0x14C
+#define FLAG_0x14D 0x14D
+#define FLAG_0x14E 0x14E
+#define FLAG_0x14F 0x14F
+#define FLAG_0x150 0x150
+#define FLAG_0x151 0x151
+#define FLAG_0x152 0x152
+#define FLAG_0x153 0x153
+#define FLAG_0x154 0x154
+#define FLAG_0x155 0x155
+#define FLAG_0x156 0x156
+#define FLAG_0x157 0x157
+#define FLAG_0x158 0x158
+#define FLAG_0x159 0x159
+#define FLAG_0x15A 0x15A
+#define FLAG_0x15B 0x15B
+#define FLAG_MATCH_CALL_REGISTERED 0x15C
+#define FLAG_0x15D 0x15D
+#define FLAG_0x15E 0x15E
+#define FLAG_0x15F 0x15F
+#define FLAG_0x160 0x160
+#define FLAG_0x161 0x161
+#define FLAG_0x162 0x162
+#define FLAG_0x163 0x163
+#define FLAG_0x164 0x164
+#define FLAG_0x165 0x165
+#define FLAG_0x166 0x166
+#define FLAG_0x167 0x167
+#define FLAG_0x168 0x168
+#define FLAG_0x169 0x169
+#define FLAG_0x16A 0x16A
+#define FLAG_0x16B 0x16B
+#define FLAG_0x16C 0x16C
+#define FLAG_0x16D 0x16D
+#define FLAG_0x16E 0x16E
+#define FLAG_0x16F 0x16F
+#define FLAG_0x170 0x170
+#define FLAG_0x171 0x171
+#define FLAG_0x172 0x172
+#define FLAG_0x173 0x173
+#define FLAG_0x174 0x174
+#define FLAG_0x175 0x175
+#define FLAG_0x176 0x176
+#define FLAG_0x177 0x177
+#define FLAG_0x178 0x178
+#define FLAG_0x179 0x179
+#define FLAG_0x17A 0x17A
+#define FLAG_0x17B 0x17B
+#define FLAG_0x17C 0x17C
+#define FLAG_0x17D 0x17D
+#define FLAG_0x17E 0x17E
+#define FLAG_0x17F 0x17F
+#define FLAG_0x180 0x180
+#define FLAG_0x181 0x181
+#define FLAG_0x182 0x182
+#define FLAG_0x183 0x183
+#define FLAG_0x184 0x184
+#define FLAG_0x185 0x185
+#define FLAG_0x186 0x186
+#define FLAG_0x187 0x187
+#define FLAG_0x188 0x188
+#define FLAG_0x189 0x189
+#define FLAG_0x18A 0x18A
+#define FLAG_0x18B 0x18B
+#define FLAG_0x18C 0x18C
+#define FLAG_0x18D 0x18D
+#define FLAG_0x18E 0x18E
+#define FLAG_0x18F 0x18F
+#define FLAG_0x190 0x190
+#define FLAG_0x191 0x191
+#define FLAG_0x192 0x192
+#define FLAG_0x193 0x193
+#define FLAG_0x194 0x194
+#define FLAG_0x195 0x195
+#define FLAG_0x196 0x196
+#define FLAG_0x197 0x197
+#define FLAG_0x198 0x198
+#define FLAG_0x199 0x199
+#define FLAG_0x19A 0x19A
+#define FLAG_0x19B 0x19B
+#define FLAG_0x19C 0x19C
+#define FLAG_0x19D 0x19D
+#define FLAG_0x19E 0x19E
+#define FLAG_0x19F 0x19F
+#define FLAG_0x1A0 0x1A0
+#define FLAG_0x1A1 0x1A1
+#define FLAG_0x1A2 0x1A2
+#define FLAG_0x1A3 0x1A3
+#define FLAG_0x1A4 0x1A4
+#define FLAG_0x1A5 0x1A5
+#define FLAG_0x1A6 0x1A6
+#define FLAG_0x1A7 0x1A7
+#define FLAG_0x1A8 0x1A8
+#define FLAG_0x1A9 0x1A9
+#define FLAG_0x1AA 0x1AA
+#define FLAG_0x1AB 0x1AB
+#define FLAG_0x1AC 0x1AC
+#define FLAG_0x1AD 0x1AD
+#define FLAG_0x1AE 0x1AE
+#define FLAG_0x1AF 0x1AF
+#define FLAG_0x1B0 0x1B0
+#define FLAG_0x1B1 0x1B1
+#define FLAG_0x1B2 0x1B2
+#define FLAG_0x1B3 0x1B3
+#define FLAG_0x1B4 0x1B4
+#define FLAG_0x1B5 0x1B5
+#define FLAG_0x1B6 0x1B6
+#define FLAG_0x1B7 0x1B7
+#define FLAG_0x1B8 0x1B8
+#define FLAG_0x1B9 0x1B9
+#define FLAG_0x1BA 0x1BA
+#define FLAG_0x1BB 0x1BB
+#define FLAG_0x1BC 0x1BC
+#define FLAG_0x1BD 0x1BD
+#define FLAG_0x1BE 0x1BE
+#define FLAG_0x1BF 0x1BF
+#define FLAG_0x1C0 0x1C0
+#define FLAG_0x1C1 0x1C1
+#define FLAG_0x1C2 0x1C2
+#define FLAG_0x1C3 0x1C3
+#define FLAG_0x1C4 0x1C4
+#define FLAG_0x1C5 0x1C5
+#define FLAG_0x1C6 0x1C6
+#define FLAG_0x1C7 0x1C7
+#define FLAG_0x1C8 0x1C8
+#define FLAG_0x1C9 0x1C9
+#define FLAG_0x1CA 0x1CA
+#define FLAG_0x1CB 0x1CB
+#define FLAG_0x1CC 0x1CC
+#define FLAG_0x1CD 0x1CD
+#define FLAG_0x1CE 0x1CE
+#define FLAG_0x1CF 0x1CF
+#define FLAG_0x1D0 0x1D0
+#define FLAG_0x1D1 0x1D1
+#define FLAG_0x1D2 0x1D2
+#define FLAG_0x1D3 0x1D3
+#define FLAG_0x1D4 0x1D4
+#define FLAG_0x1D5 0x1D5
+#define FLAG_0x1D6 0x1D6
+#define FLAG_0x1D7 0x1D7
+#define FLAG_0x1D8 0x1D8
+#define FLAG_0x1D9 0x1D9
+#define FLAG_0x1DA 0x1DA
+#define FLAG_0x1DB 0x1DB
+#define FLAG_0x1DC 0x1DC
+#define FLAG_0x1DD 0x1DD
+#define FLAG_0x1DE 0x1DE
+#define FLAG_0x1DF 0x1DF
+#define FLAG_0x1E0 0x1E0
+#define FLAG_0x1E1 0x1E1
+#define FLAG_0x1E2 0x1E2
+#define FLAG_0x1E3 0x1E3
+#define FLAG_0x1E4 0x1E4
+#define FLAG_0x1E5 0x1E5
+#define FLAG_0x1E6 0x1E6
+#define FLAG_0x1E7 0x1E7
+#define FLAG_0x1E8 0x1E8
+#define FLAG_0x1E9 0x1E9
+#define FLAG_0x1EA 0x1EA
+#define FLAG_0x1EB 0x1EB
+#define FLAG_0x1EC 0x1EC
+#define FLAG_0x1ED 0x1ED
+#define FLAG_0x1EE 0x1EE
+#define FLAG_0x1EF 0x1EF
+#define FLAG_0x1F0 0x1F0
+#define FLAG_0x1F1 0x1F1
+#define FLAG_0x1F2 0x1F2
+#define FLAG_0x1F3 0x1F3
+#define FLAG_0x1F4 0x1F4
+#define FLAG_0x1F5 0x1F5
+#define FLAG_0x1F6 0x1F6
+#define FLAG_0x1F7 0x1F7
+#define FLAG_0x1F8 0x1F8
+#define FLAG_0x1F9 0x1F9
+#define FLAG_0x1FA 0x1FA
+#define FLAG_0x1FB 0x1FB
+#define FLAG_0x1FC 0x1FC
+#define FLAG_0x1FD 0x1FD
+#define FLAG_0x1FE 0x1FE
+#define FLAG_0x1FF 0x1FF
+#define FLAG_0x200 0x200
+#define FLAG_0x201 0x201
+#define FLAG_0x202 0x202
+#define FLAG_0x203 0x203
+#define FLAG_0x204 0x204
+#define FLAG_0x205 0x205
+#define FLAG_0x206 0x206
+#define FLAG_0x207 0x207
+#define FLAG_0x208 0x208
+#define FLAG_0x209 0x209
+#define FLAG_0x20A 0x20A
+#define FLAG_0x20B 0x20B
+#define FLAG_0x20C 0x20C
+#define FLAG_0x20D 0x20D
+#define FLAG_0x20E 0x20E
+#define FLAG_0x20F 0x20F
+#define FLAG_0x210 0x210
+#define FLAG_0x211 0x211
+#define FLAG_0x212 0x212
+#define FLAG_0x213 0x213
+#define FLAG_0x214 0x214
+#define FLAG_0x215 0x215
+#define FLAG_0x216 0x216
+#define FLAG_0x217 0x217
+#define FLAG_0x218 0x218
+#define FLAG_0x219 0x219
+#define FLAG_0x21A 0x21A
+#define FLAG_0x21B 0x21B
+#define FLAG_0x21C 0x21C
+#define FLAG_0x21D 0x21D
+#define FLAG_0x21E 0x21E
+#define FLAG_0x21F 0x21F
+#define FLAG_0x220 0x220
+#define FLAG_0x221 0x221
+#define FLAG_0x222 0x222
+#define FLAG_0x223 0x223
+#define FLAG_0x224 0x224
+#define FLAG_0x225 0x225
+#define FLAG_0x226 0x226
+#define FLAG_0x227 0x227
+#define FLAG_0x228 0x228
+#define FLAG_0x229 0x229
+#define FLAG_0x22A 0x22A
+#define FLAG_0x22B 0x22B
+#define FLAG_0x22C 0x22C
+#define FLAG_0x22D 0x22D
+#define FLAG_0x22E 0x22E
+#define FLAG_0x22F 0x22F
+#define FLAG_0x230 0x230
+#define FLAG_0x231 0x231
+#define FLAG_0x232 0x232
+#define FLAG_0x233 0x233
+#define FLAG_0x234 0x234
+#define FLAG_0x235 0x235
+#define FLAG_0x236 0x236
+#define FLAG_0x237 0x237
+#define FLAG_0x238 0x238
+#define FLAG_0x239 0x239
+#define FLAG_0x23A 0x23A
+#define FLAG_0x23B 0x23B
+#define FLAG_0x23C 0x23C
+#define FLAG_0x23D 0x23D
+#define FLAG_0x23E 0x23E
+#define FLAG_0x23F 0x23F
+#define FLAG_0x240 0x240
+#define FLAG_0x241 0x241
+#define FLAG_0x242 0x242
+#define FLAG_0x243 0x243
+#define FLAG_0x244 0x244
+#define FLAG_0x245 0x245
+#define FLAG_0x246 0x246
+#define FLAG_0x247 0x247
+#define FLAG_0x248 0x248
+#define FLAG_0x249 0x249
+#define FLAG_0x24A 0x24A
+#define FLAG_0x24B 0x24B
+#define FLAG_0x24C 0x24C
+#define FLAG_0x24D 0x24D
+#define FLAG_0x24E 0x24E
+#define FLAG_0x24F 0x24F
+#define FLAG_0x250 0x250
+#define FLAG_0x251 0x251
+#define FLAG_0x252 0x252
+#define FLAG_0x253 0x253
+#define FLAG_0x254 0x254
+#define FLAG_0x255 0x255
+#define FLAG_0x256 0x256
+#define FLAG_0x257 0x257
+#define FLAG_0x258 0x258
+#define FLAG_0x259 0x259
+#define FLAG_0x25A 0x25A
+#define FLAG_0x25B 0x25B
+#define FLAG_0x25C 0x25C
+#define FLAG_0x25D 0x25D
+#define FLAG_0x25E 0x25E
+#define FLAG_0x25F 0x25F
+#define FLAG_0x260 0x260
+#define FLAG_0x261 0x261
+#define FLAG_0x262 0x262
+#define FLAG_0x263 0x263
+#define FLAG_0x264 0x264
+#define FLAG_0x265 0x265
+#define FLAG_0x266 0x266
+#define FLAG_0x267 0x267
+#define FLAG_0x268 0x268
+#define FLAG_0x269 0x269
+#define FLAG_0x26A 0x26A
+#define FLAG_0x26B 0x26B
+#define FLAG_0x26C 0x26C
+#define FLAG_0x26D 0x26D
+#define FLAG_0x26E 0x26E
+#define FLAG_0x26F 0x26F
+#define FLAG_0x270 0x270
+#define FLAG_0x271 0x271
+#define FLAG_0x272 0x272
+#define FLAG_0x273 0x273
+#define FLAG_0x274 0x274
+#define FLAG_0x275 0x275
+#define FLAG_0x276 0x276
+#define FLAG_0x277 0x277
+#define FLAG_0x278 0x278
+#define FLAG_0x279 0x279
+#define FLAG_0x27A 0x27A
+#define FLAG_0x27B 0x27B
+#define FLAG_0x27C 0x27C
+#define FLAG_0x27D 0x27D
+#define FLAG_0x27E 0x27E
+#define FLAG_0x27F 0x27F
+#define FLAG_0x280 0x280
+#define FLAG_0x281 0x281
+#define FLAG_0x282 0x282
+#define FLAG_0x283 0x283
+#define FLAG_0x284 0x284
+#define FLAG_0x285 0x285
+#define FLAG_0x286 0x286
+#define FLAG_0x287 0x287
+#define FLAG_0x288 0x288
+#define FLAG_0x289 0x289
+#define FLAG_0x28A 0x28A
+#define FLAG_0x28B 0x28B
+#define FLAG_0x28C 0x28C
+#define FLAG_0x28D 0x28D
+#define FLAG_0x28E 0x28E
+#define FLAG_0x28F 0x28F
+#define FLAG_0x290 0x290
+#define FLAG_0x291 0x291
+#define FLAG_0x292 0x292
+#define FLAG_0x293 0x293
+#define FLAG_0x294 0x294
+#define FLAG_0x295 0x295
+#define FLAG_0x296 0x296
+#define FLAG_0x297 0x297
+#define FLAG_0x298 0x298
+#define FLAG_0x299 0x299
+#define FLAG_0x29A 0x29A
+#define FLAG_0x29B 0x29B
+#define FLAG_0x29C 0x29C
+#define FLAG_0x29D 0x29D
+#define FLAG_0x29E 0x29E
+#define FLAG_0x29F 0x29F
+#define FLAG_0x2A0 0x2A0
+#define FLAG_0x2A1 0x2A1
+#define FLAG_0x2A2 0x2A2
+#define FLAG_0x2A3 0x2A3
+#define FLAG_0x2A4 0x2A4
+#define FLAG_0x2A5 0x2A5
+#define FLAG_0x2A6 0x2A6
+#define FLAG_0x2A7 0x2A7
+#define FLAG_0x2A8 0x2A8
+#define FLAG_0x2A9 0x2A9
+#define FLAG_0x2AA 0x2AA
+#define FLAG_0x2AB 0x2AB
+#define FLAG_0x2AC 0x2AC
+#define FLAG_0x2AD 0x2AD
+#define FLAG_0x2AE 0x2AE
+#define FLAG_0x2AF 0x2AF
+#define FLAG_0x2B0 0x2B0
+#define FLAG_0x2B1 0x2B1
+#define FLAG_0x2B2 0x2B2
+#define FLAG_0x2B3 0x2B3
+#define FLAG_0x2B4 0x2B4
+#define FLAG_0x2B5 0x2B5
+#define FLAG_0x2B6 0x2B6
+#define FLAG_0x2B7 0x2B7
+#define FLAG_0x2B8 0x2B8
+#define FLAG_0x2B9 0x2B9
+#define FLAG_0x2BA 0x2BA
+#define FLAG_0x2BB 0x2BB
+#define FLAG_0x2BC 0x2BC
+#define FLAG_0x2BD 0x2BD
+#define FLAG_0x2BE 0x2BE
+#define FLAG_0x2BF 0x2BF
+#define FLAG_0x2C0 0x2C0
+#define FLAG_0x2C1 0x2C1
+#define FLAG_0x2C2 0x2C2
+#define FLAG_0x2C3 0x2C3
+#define FLAG_0x2C4 0x2C4
+#define FLAG_0x2C5 0x2C5
+#define FLAG_0x2C6 0x2C6
+#define FLAG_0x2C7 0x2C7
+#define FLAG_0x2C8 0x2C8
+#define FLAG_0x2C9 0x2C9
+#define FLAG_0x2CA 0x2CA
+#define FLAG_0x2CB 0x2CB
+#define FLAG_0x2CC 0x2CC
+#define FLAG_0x2CD 0x2CD
+#define FLAG_0x2CE 0x2CE
+#define FLAG_0x2CF 0x2CF
+#define FLAG_0x2D0 0x2D0
+#define FLAG_0x2D1 0x2D1
+#define FLAG_0x2D2 0x2D2
+#define FLAG_0x2D3 0x2D3
+#define FLAG_0x2D4 0x2D4
+#define FLAG_0x2D5 0x2D5
+#define FLAG_0x2D6 0x2D6
+#define FLAG_0x2D7 0x2D7
+#define FLAG_0x2D8 0x2D8
+#define FLAG_0x2D9 0x2D9
+#define FLAG_0x2DA 0x2DA
+#define FLAG_0x2DB 0x2DB
+#define FLAG_0x2DC 0x2DC
+#define FLAG_0x2DD 0x2DD
+#define FLAG_0x2DE 0x2DE
+#define FLAG_0x2DF 0x2DF
+#define FLAG_0x2E0 0x2E0
+#define FLAG_0x2E1 0x2E1
+#define FLAG_0x2E2 0x2E2
+#define FLAG_0x2E3 0x2E3
+#define FLAG_0x2E4 0x2E4
+#define FLAG_0x2E5 0x2E5
+#define FLAG_0x2E6 0x2E6
+#define FLAG_0x2E7 0x2E7
+#define FLAG_0x2E8 0x2E8
+#define FLAG_0x2E9 0x2E9
+#define FLAG_0x2EA 0x2EA
+#define FLAG_0x2EB 0x2EB
+#define FLAG_0x2EC 0x2EC
+#define FLAG_0x2ED 0x2ED
+#define FLAG_0x2EE 0x2EE
+#define FLAG_0x2EF 0x2EF
+#define FLAG_0x2F0 0x2F0
+#define FLAG_0x2F1 0x2F1
+#define FLAG_0x2F2 0x2F2
+#define FLAG_0x2F3 0x2F3
+#define FLAG_0x2F4 0x2F4
+#define FLAG_0x2F5 0x2F5
+#define FLAG_0x2F6 0x2F6
+#define FLAG_0x2F7 0x2F7
+#define FLAG_0x2F8 0x2F8
+#define FLAG_0x2F9 0x2F9
+#define FLAG_0x2FA 0x2FA
+#define FLAG_0x2FB 0x2FB
+#define FLAG_0x2FC 0x2FC
+#define FLAG_0x2FD 0x2FD
+#define FLAG_0x2FE 0x2FE
+#define FLAG_0x2FF 0x2FF
+#define FLAG_0x300 0x300
+#define FLAG_0x301 0x301
+#define FLAG_0x302 0x302
+#define FLAG_0x303 0x303
+#define FLAG_0x304 0x304
+#define FLAG_0x305 0x305
+#define FLAG_0x306 0x306
+#define FLAG_0x307 0x307
+#define FLAG_0x308 0x308
+#define FLAG_0x309 0x309
+#define FLAG_0x30A 0x30A
+#define FLAG_0x30B 0x30B
+#define FLAG_0x30C 0x30C
+#define FLAG_0x30D 0x30D
+#define FLAG_0x30E 0x30E
+#define FLAG_0x30F 0x30F
+#define FLAG_0x310 0x310
+#define FLAG_0x311 0x311
+#define FLAG_0x312 0x312
+#define FLAG_0x313 0x313
+#define FLAG_0x314 0x314
+#define FLAG_0x315 0x315
+#define FLAG_0x316 0x316
+#define FLAG_0x317 0x317
+#define FLAG_0x318 0x318
+#define FLAG_0x319 0x319
+#define FLAG_0x31A 0x31A
+#define FLAG_0x31B 0x31B
+#define FLAG_0x31C 0x31C
+#define FLAG_0x31D 0x31D
+#define FLAG_0x31E 0x31E
+#define FLAG_0x31F 0x31F
+#define FLAG_0x320 0x320
+#define FLAG_0x321 0x321
+#define FLAG_0x322 0x322
+#define FLAG_0x323 0x323
+#define FLAG_0x324 0x324
+#define FLAG_0x325 0x325
+#define FLAG_0x326 0x326
+#define FLAG_0x327 0x327
+#define FLAG_0x328 0x328
+#define FLAG_0x329 0x329
+#define FLAG_0x32A 0x32A
+#define FLAG_0x32B 0x32B
+#define FLAG_0x32C 0x32C
+#define FLAG_0x32D 0x32D
+#define FLAG_0x32E 0x32E
+#define FLAG_0x32F 0x32F
+#define FLAG_0x330 0x330
+#define FLAG_0x331 0x331
+#define FLAG_0x332 0x332
+#define FLAG_0x333 0x333
+#define FLAG_0x334 0x334
+#define FLAG_0x335 0x335
+#define FLAG_0x336 0x336
+#define FLAG_0x337 0x337
+#define FLAG_0x338 0x338
+#define FLAG_0x339 0x339
+#define FLAG_0x33A 0x33A
+#define FLAG_0x33B 0x33B
+#define FLAG_0x33C 0x33C
+#define FLAG_0x33D 0x33D
+#define FLAG_0x33E 0x33E
+#define FLAG_0x33F 0x33F
+#define FLAG_0x340 0x340
+#define FLAG_0x341 0x341
+#define FLAG_0x342 0x342
+#define FLAG_0x343 0x343
+#define FLAG_0x344 0x344
+#define FLAG_0x345 0x345
+#define FLAG_0x346 0x346
+#define FLAG_0x347 0x347
+#define FLAG_0x348 0x348
+#define FLAG_0x349 0x349
+#define FLAG_0x34A 0x34A
+#define FLAG_0x34B 0x34B
+#define FLAG_0x34C 0x34C
+#define FLAG_0x34D 0x34D
+#define FLAG_0x34E 0x34E
+#define FLAG_0x34F 0x34F
+#define FLAG_0x350 0x350
+#define FLAG_0x351 0x351
+#define FLAG_0x352 0x352
+#define FLAG_0x353 0x353
+#define FLAG_0x354 0x354
+#define FLAG_0x355 0x355
+#define FLAG_0x356 0x356
+#define FLAG_0x357 0x357
+#define FLAG_0x358 0x358
+#define FLAG_0x359 0x359
+#define FLAG_0x35A 0x35A
+#define FLAG_0x35B 0x35B
+#define FLAG_0x35C 0x35C
+#define FLAG_0x35D 0x35D
+#define FLAG_0x35E 0x35E
+#define FLAG_0x35F 0x35F
+#define FLAG_0x360 0x360
+#define FLAG_0x361 0x361
+#define FLAG_0x362 0x362
+#define FLAG_0x363 0x363
+#define FLAG_0x364 0x364
+#define FLAG_0x365 0x365
+#define FLAG_0x366 0x366
+#define FLAG_0x367 0x367
+#define FLAG_0x368 0x368
+#define FLAG_0x369 0x369
+#define FLAG_0x36A 0x36A
+#define FLAG_0x36B 0x36B
+#define FLAG_0x36C 0x36C
+#define FLAG_0x36D 0x36D
+#define FLAG_0x36E 0x36E
+#define FLAG_0x36F 0x36F
+#define FLAG_0x370 0x370
+#define FLAG_0x371 0x371
+#define FLAG_0x372 0x372
+#define FLAG_0x373 0x373
+#define FLAG_0x374 0x374
+#define FLAG_0x375 0x375
+#define FLAG_0x376 0x376
+#define FLAG_0x377 0x377
+#define FLAG_0x378 0x378
+#define FLAG_0x379 0x379
+#define FLAG_0x37A 0x37A
+#define FLAG_0x37B 0x37B
+#define FLAG_0x37C 0x37C
+#define FLAG_0x37D 0x37D
+#define FLAG_0x37E 0x37E
+#define FLAG_0x37F 0x37F
+#define FLAG_0x380 0x380
+#define FLAG_0x381 0x381
+#define FLAG_0x382 0x382
+#define FLAG_0x383 0x383
+#define FLAG_0x384 0x384
+#define FLAG_0x385 0x385
+#define FLAG_0x386 0x386
+#define FLAG_0x387 0x387
+#define FLAG_0x388 0x388
+#define FLAG_0x389 0x389
+#define FLAG_0x38A 0x38A
+#define FLAG_0x38B 0x38B
+#define FLAG_0x38C 0x38C
+#define FLAG_0x38D 0x38D
+#define FLAG_0x38E 0x38E
+#define FLAG_0x38F 0x38F
+#define FLAG_0x390 0x390
+#define FLAG_0x391 0x391
+#define FLAG_0x392 0x392
+#define FLAG_0x393 0x393
+#define FLAG_0x394 0x394
+#define FLAG_0x395 0x395
+#define FLAG_0x396 0x396
+#define FLAG_0x397 0x397
+#define FLAG_0x398 0x398
+#define FLAG_0x399 0x399
+#define FLAG_0x39A 0x39A
+#define FLAG_0x39B 0x39B
+#define FLAG_0x39C 0x39C
+#define FLAG_0x39D 0x39D
+#define FLAG_0x39E 0x39E
+#define FLAG_0x39F 0x39F
+#define FLAG_0x3A0 0x3A0
+#define FLAG_0x3A1 0x3A1
+#define FLAG_0x3A2 0x3A2
+#define FLAG_0x3A3 0x3A3
+#define FLAG_0x3A4 0x3A4
+#define FLAG_0x3A5 0x3A5
+#define FLAG_0x3A6 0x3A6
+#define FLAG_0x3A7 0x3A7
+#define FLAG_0x3A8 0x3A8
+#define FLAG_0x3A9 0x3A9
+#define FLAG_0x3AA 0x3AA
+#define FLAG_0x3AB 0x3AB
+#define FLAG_0x3AC 0x3AC
+#define FLAG_0x3AD 0x3AD
+#define FLAG_0x3AE 0x3AE
+#define FLAG_0x3AF 0x3AF
+#define FLAG_0x3B0 0x3B0
+#define FLAG_0x3B1 0x3B1
+#define FLAG_0x3B2 0x3B2
+#define FLAG_0x3B3 0x3B3
+#define FLAG_0x3B4 0x3B4
+#define FLAG_0x3B5 0x3B5
+#define FLAG_0x3B6 0x3B6
+#define FLAG_0x3B7 0x3B7
+#define FLAG_0x3B8 0x3B8
+#define FLAG_0x3B9 0x3B9
+#define FLAG_0x3BA 0x3BA
+#define FLAG_0x3BB 0x3BB
+#define FLAG_0x3BC 0x3BC
+#define FLAG_0x3BD 0x3BD
+#define FLAG_0x3BE 0x3BE
+#define FLAG_0x3BF 0x3BF
+#define FLAG_0x3C0 0x3C0
+#define FLAG_0x3C1 0x3C1
+#define FLAG_0x3C2 0x3C2
+#define FLAG_0x3C3 0x3C3
+#define FLAG_0x3C4 0x3C4
+#define FLAG_0x3C5 0x3C5
+#define FLAG_0x3C6 0x3C6
+#define FLAG_0x3C7 0x3C7
+#define FLAG_0x3C8 0x3C8
+#define FLAG_0x3C9 0x3C9
+#define FLAG_0x3CA 0x3CA
+#define FLAG_0x3CB 0x3CB
+#define FLAG_0x3CC 0x3CC
+#define FLAG_0x3CD 0x3CD
+#define FLAG_0x3CE 0x3CE
+#define FLAG_0x3CF 0x3CF
+#define FLAG_0x3D0 0x3D0
+#define FLAG_0x3D1 0x3D1
+#define FLAG_0x3D2 0x3D2
+#define FLAG_0x3D3 0x3D3
+#define FLAG_0x3D4 0x3D4
+#define FLAG_0x3D5 0x3D5
+#define FLAG_0x3D6 0x3D6
+#define FLAG_0x3D7 0x3D7
+#define FLAG_0x3D8 0x3D8
+#define FLAG_0x3D9 0x3D9
+#define FLAG_0x3DA 0x3DA
+#define FLAG_0x3DB 0x3DB
+#define FLAG_0x3DC 0x3DC
+#define FLAG_0x3DD 0x3DD
+#define FLAG_0x3DE 0x3DE
+#define FLAG_0x3DF 0x3DF
+#define FLAG_0x3E0 0x3E0
+#define FLAG_0x3E1 0x3E1
+#define FLAG_0x3E2 0x3E2
+#define FLAG_0x3E3 0x3E3
+#define FLAG_0x3E4 0x3E4
+#define FLAG_0x3E5 0x3E5
+#define FLAG_0x3E6 0x3E6
+#define FLAG_0x3E7 0x3E7
+#define FLAG_0x3E8 0x3E8
+#define FLAG_0x3E9 0x3E9
+#define FLAG_0x3EA 0x3EA
+#define FLAG_0x3EB 0x3EB
+#define FLAG_0x3EC 0x3EC
+#define FLAG_0x3ED 0x3ED
+#define FLAG_0x3EE 0x3EE
+#define FLAG_0x3EF 0x3EF
+#define FLAG_0x3F0 0x3F0
+#define FLAG_0x3F1 0x3F1
+#define FLAG_0x3F2 0x3F2
+#define FLAG_0x3F3 0x3F3
+#define FLAG_0x3F4 0x3F4
+#define FLAG_0x3F5 0x3F5
+#define FLAG_0x3F6 0x3F6
+#define FLAG_0x3F7 0x3F7
+#define FLAG_0x3F8 0x3F8
+#define FLAG_0x3F9 0x3F9
+#define FLAG_0x3FA 0x3FA
+#define FLAG_0x3FB 0x3FB
+#define FLAG_0x3FC 0x3FC
+#define FLAG_0x3FD 0x3FD
+#define FLAG_0x3FE 0x3FE
+#define FLAG_0x3FF 0x3FF
+#define FLAG_0x400 0x400
+#define FLAG_0x401 0x401
+#define FLAG_0x402 0x402
+#define FLAG_0x403 0x403
+#define FLAG_0x404 0x404
+#define FLAG_0x405 0x405
+#define FLAG_0x406 0x406
+#define FLAG_0x407 0x407
+#define FLAG_0x408 0x408
+#define FLAG_0x409 0x409
+#define FLAG_0x40A 0x40A
+#define FLAG_0x40B 0x40B
+#define FLAG_0x40C 0x40C
+#define FLAG_0x40D 0x40D
+#define FLAG_0x40E 0x40E
+#define FLAG_0x40F 0x40F
+#define FLAG_0x410 0x410
+#define FLAG_0x411 0x411
+#define FLAG_0x412 0x412
+#define FLAG_0x413 0x413
+#define FLAG_0x414 0x414
+#define FLAG_0x415 0x415
+#define FLAG_0x416 0x416
+#define FLAG_0x417 0x417
+#define FLAG_0x418 0x418
+#define FLAG_0x419 0x419
+#define FLAG_0x41A 0x41A
+#define FLAG_0x41B 0x41B
+#define FLAG_0x41C 0x41C
+#define FLAG_0x41D 0x41D
+#define FLAG_0x41E 0x41E
+#define FLAG_0x41F 0x41F
+#define FLAG_0x420 0x420
+#define FLAG_0x421 0x421
+#define FLAG_0x422 0x422
+#define FLAG_0x423 0x423
+#define FLAG_0x424 0x424
+#define FLAG_0x425 0x425
+#define FLAG_0x426 0x426
+#define FLAG_0x427 0x427
+#define FLAG_0x428 0x428
+#define FLAG_0x429 0x429
+#define FLAG_0x42A 0x42A
+#define FLAG_0x42B 0x42B
+#define FLAG_0x42C 0x42C
+#define FLAG_0x42D 0x42D
+#define FLAG_0x42E 0x42E
+#define FLAG_0x42F 0x42F
+#define FLAG_0x430 0x430
+#define FLAG_0x431 0x431
+#define FLAG_0x432 0x432
+#define FLAG_0x433 0x433
+#define FLAG_0x434 0x434
+#define FLAG_0x435 0x435
+#define FLAG_0x436 0x436
+#define FLAG_0x437 0x437
+#define FLAG_0x438 0x438
+#define FLAG_0x439 0x439
+#define FLAG_0x43A 0x43A
+#define FLAG_0x43B 0x43B
+#define FLAG_0x43C 0x43C
+#define FLAG_0x43D 0x43D
+#define FLAG_0x43E 0x43E
+#define FLAG_0x43F 0x43F
+#define FLAG_0x440 0x440
+#define FLAG_0x441 0x441
+#define FLAG_0x442 0x442
+#define FLAG_0x443 0x443
+#define FLAG_0x444 0x444
+#define FLAG_0x445 0x445
+#define FLAG_0x446 0x446
+#define FLAG_0x447 0x447
+#define FLAG_0x448 0x448
+#define FLAG_0x449 0x449
+#define FLAG_0x44A 0x44A
+#define FLAG_0x44B 0x44B
+#define FLAG_0x44C 0x44C
+#define FLAG_0x44D 0x44D
+#define FLAG_0x44E 0x44E
+#define FLAG_0x44F 0x44F
+#define FLAG_0x450 0x450
+#define FLAG_0x451 0x451
+#define FLAG_0x452 0x452
+#define FLAG_0x453 0x453
+#define FLAG_0x454 0x454
+#define FLAG_0x455 0x455
+#define FLAG_0x456 0x456
+#define FLAG_0x457 0x457
+#define FLAG_0x458 0x458
+#define FLAG_0x459 0x459
+#define FLAG_0x45A 0x45A
+#define FLAG_0x45B 0x45B
+#define FLAG_0x45C 0x45C
+#define FLAG_0x45D 0x45D
+#define FLAG_0x45E 0x45E
+#define FLAG_0x45F 0x45F
+#define FLAG_0x460 0x460
+#define FLAG_0x461 0x461
+#define FLAG_0x462 0x462
+#define FLAG_0x463 0x463
+#define FLAG_0x464 0x464
+#define FLAG_0x465 0x465
+#define FLAG_0x466 0x466
+#define FLAG_0x467 0x467
+#define FLAG_0x468 0x468
+#define FLAG_0x469 0x469
+#define FLAG_0x46A 0x46A
+#define FLAG_0x46B 0x46B
+#define FLAG_0x46C 0x46C
+#define FLAG_0x46D 0x46D
+#define FLAG_0x46E 0x46E
+#define FLAG_0x46F 0x46F
+#define FLAG_0x470 0x470
+#define FLAG_0x471 0x471
+#define FLAG_0x472 0x472
+#define FLAG_0x473 0x473
+#define FLAG_0x474 0x474
+#define FLAG_0x475 0x475
+#define FLAG_0x476 0x476
+#define FLAG_0x477 0x477
+#define FLAG_0x478 0x478
+#define FLAG_0x479 0x479
+#define FLAG_0x47A 0x47A
+#define FLAG_0x47B 0x47B
+#define FLAG_0x47C 0x47C
+#define FLAG_0x47D 0x47D
+#define FLAG_0x47E 0x47E
+#define FLAG_0x47F 0x47F
+#define FLAG_0x480 0x480
+#define FLAG_0x481 0x481
+#define FLAG_0x482 0x482
+#define FLAG_0x483 0x483
+#define FLAG_0x484 0x484
+#define FLAG_0x485 0x485
+#define FLAG_0x486 0x486
+#define FLAG_0x487 0x487
+#define FLAG_0x488 0x488
+#define FLAG_0x489 0x489
+#define FLAG_0x48A 0x48A
+#define FLAG_0x48B 0x48B
+#define FLAG_0x48C 0x48C
+#define FLAG_0x48D 0x48D
+#define FLAG_0x48E 0x48E
+#define FLAG_0x48F 0x48F
+#define FLAG_0x490 0x490
+#define FLAG_0x491 0x491
+#define FLAG_0x492 0x492
+#define FLAG_0x493 0x493
+#define FLAG_0x494 0x494
+#define FLAG_0x495 0x495
+#define FLAG_0x496 0x496
+#define FLAG_0x497 0x497
+#define FLAG_0x498 0x498
+#define FLAG_0x499 0x499
+#define FLAG_0x49A 0x49A
+#define FLAG_0x49B 0x49B
+#define FLAG_0x49C 0x49C
+#define FLAG_0x49D 0x49D
+#define FLAG_0x49E 0x49E
+#define FLAG_0x49F 0x49F
+#define FLAG_0x4A0 0x4A0
+#define FLAG_0x4A1 0x4A1
+#define FLAG_0x4A2 0x4A2
+#define FLAG_0x4A3 0x4A3
+#define FLAG_0x4A4 0x4A4
+#define FLAG_0x4A5 0x4A5
+#define FLAG_0x4A6 0x4A6
+#define FLAG_0x4A7 0x4A7
+#define FLAG_0x4A8 0x4A8
+#define FLAG_0x4A9 0x4A9
+#define FLAG_0x4AA 0x4AA
+#define FLAG_0x4AB 0x4AB
+#define FLAG_0x4AC 0x4AC
+#define FLAG_0x4AD 0x4AD
+#define FLAG_0x4AE 0x4AE
+#define FLAG_0x4AF 0x4AF
+#define FLAG_0x4B0 0x4B0
+#define FLAG_0x4B1 0x4B1
+#define FLAG_0x4B2 0x4B2
+#define FLAG_0x4B3 0x4B3
+#define FLAG_0x4B4 0x4B4
+#define FLAG_0x4B5 0x4B5
+#define FLAG_0x4B6 0x4B6
+#define FLAG_0x4B7 0x4B7
+#define FLAG_0x4B8 0x4B8
+#define FLAG_0x4B9 0x4B9
+#define FLAG_0x4BA 0x4BA
+#define FLAG_0x4BB 0x4BB
+#define FLAG_0x4BC 0x4BC
+#define FLAG_0x4BD 0x4BD
+#define FLAG_0x4BE 0x4BE
+#define FLAG_0x4BF 0x4BF
+#define FLAG_0x4C0 0x4C0
+#define FLAG_0x4C1 0x4C1
+#define FLAG_0x4C2 0x4C2
+#define FLAG_0x4C3 0x4C3
+#define FLAG_0x4C4 0x4C4
+#define FLAG_0x4C5 0x4C5
+#define FLAG_0x4C6 0x4C6
+#define FLAG_0x4C7 0x4C7
+#define FLAG_0x4C8 0x4C8
+#define FLAG_0x4C9 0x4C9
+#define FLAG_0x4CA 0x4CA
+#define FLAG_0x4CB 0x4CB
+#define FLAG_0x4CC 0x4CC
+#define FLAG_0x4CD 0x4CD
+#define FLAG_0x4CE 0x4CE
+#define FLAG_0x4CF 0x4CF
+#define FLAG_0x4D0 0x4D0
+#define FLAG_0x4D1 0x4D1
+#define FLAG_0x4D2 0x4D2
+#define FLAG_0x4D3 0x4D3
+#define FLAG_0x4D4 0x4D4
+#define FLAG_0x4D5 0x4D5
+#define FLAG_0x4D6 0x4D6
+#define FLAG_0x4D7 0x4D7
+#define FLAG_0x4D8 0x4D8
+#define FLAG_0x4D9 0x4D9
+#define FLAG_0x4DA 0x4DA
+#define FLAG_0x4DB 0x4DB
+#define FLAG_0x4DC 0x4DC
+#define FLAG_0x4DD 0x4DD
+#define FLAG_0x4DE 0x4DE
+#define FLAG_0x4DF 0x4DF
+#define FLAG_0x4E0 0x4E0
+#define FLAG_0x4E1 0x4E1
+#define FLAG_0x4E2 0x4E2
+#define FLAG_0x4E3 0x4E3
+#define FLAG_0x4E4 0x4E4
+#define FLAG_0x4E5 0x4E5
+#define FLAG_0x4E6 0x4E6
+#define FLAG_0x4E7 0x4E7
+#define FLAG_0x4E8 0x4E8
+#define FLAG_0x4E9 0x4E9
+#define FLAG_0x4EA 0x4EA
+#define FLAG_0x4EB 0x4EB
+#define FLAG_0x4EC 0x4EC
+#define FLAG_0x4ED 0x4ED
+#define FLAG_0x4EE 0x4EE
+#define FLAG_0x4EF 0x4EF
+#define FLAG_0x4F0 0x4F0
+#define FLAG_0x4F1 0x4F1
+#define FLAG_0x4F2 0x4F2
+#define FLAG_0x4F3 0x4F3
+#define FLAG_0x4F4 0x4F4
+#define FLAG_0x4F5 0x4F5
+#define FLAG_0x4F6 0x4F6
+#define FLAG_0x4F7 0x4F7
+#define FLAG_0x4F8 0x4F8
+#define FLAG_0x4F9 0x4F9
+#define FLAG_0x4FA 0x4FA
+#define FLAG_0x4FB 0x4FB
+#define FLAG_0x4FC 0x4FC
+#define FLAG_0x4FD 0x4FD
+#define FLAG_0x4FE 0x4FE
+#define FLAG_0x4FF 0x4FF
+
+#define FLAG_TRAINER_FLAG_START 0x500
+
+#define TRAINERS_FLAG_NO 0x356
+#define CODE_FLAGS (FLAG_TRAINER_FLAG_START + TRAINERS_FLAG_NO + 0xA) // 0x860
+
+// SYSTEM FLAGS
+
+// 0x860
+#define FLAG_SYS_POKEMON_GET (CODE_FLAGS + 0)
+#define FLAG_SYS_POKEDEX_GET (CODE_FLAGS + 1)
+#define FLAG_SYS_POKENAV_GET (CODE_FLAGS + 2)
+// third one appears unused
+#define FLAG_SYS_GAME_CLEAR (CODE_FLAGS + 4)
+#define FLAG_SYS_CHAT_USED (CODE_FLAGS + 5)
+#define FLAG_SYS_HIPSTER_MEET (CODE_FLAGS + 6)
+
+// badges
+#define FLAG_BADGE01_GET (CODE_FLAGS + 7)
+#define FLAG_BADGE02_GET (CODE_FLAGS + 8)
+#define FLAG_BADGE03_GET (CODE_FLAGS + 9)
+#define FLAG_BADGE04_GET (CODE_FLAGS + 0xA)
+#define FLAG_BADGE05_GET (CODE_FLAGS + 0xB)
+#define FLAG_BADGE06_GET (CODE_FLAGS + 0xC)
+#define FLAG_BADGE07_GET (CODE_FLAGS + 0xD)
+#define FLAG_BADGE08_GET (CODE_FLAGS + 0xE)
+
+// cities and towns
+#define FLAG_VISITED_LITTLEROOT_TOWN (CODE_FLAGS + 0xF)
+#define FLAG_VISITED_OLDALE_TOWN (CODE_FLAGS + 0x10)
+#define FLAG_VISITED_DEWFORD_TOWN (CODE_FLAGS + 0x11)
+#define FLAG_VISITED_LAVARIDGE_TOWN (CODE_FLAGS + 0x12)
+#define FLAG_VISITED_FALLARBOR_TOWN (CODE_FLAGS + 0x13)
+#define FLAG_VISITED_VERDANTURF_TOWN (CODE_FLAGS + 0x14)
+#define FLAG_VISITED_PACIFIDLOG_TOWN (CODE_FLAGS + 0x15)
+#define FLAG_VISITED_PETALBURG_CITY (CODE_FLAGS + 0x16)
+#define FLAG_VISITED_SLATEPORT_CITY (CODE_FLAGS + 0x17)
+#define FLAG_VISITED_MAUVILLE_CITY (CODE_FLAGS + 0x18)
+#define FLAG_VISITED_RUSTBORO_CITY (CODE_FLAGS + 0x19)
+#define FLAG_VISITED_FORTREE_CITY (CODE_FLAGS + 0x1A)
+#define FLAG_VISITED_LILYCOVE_CITY (CODE_FLAGS + 0x1B)
+#define FLAG_VISITED_MOSSDEEP_CITY (CODE_FLAGS + 0x1C)
+#define FLAG_VISITED_SOOTOPOLIS_CITY (CODE_FLAGS + 0x1D)
+#define FLAG_VISITED_EVER_GRANDE_CITY (CODE_FLAGS + 0x1E)
+
+#define FLAG_0x87F (CODE_FLAGS + 0x1F)
+#define FLAG_0x880 (CODE_FLAGS + 0x20)
+#define FLAG_0x881 (CODE_FLAGS + 0x21)
+#define FLAG_0x882 (CODE_FLAGS + 0x22)
+#define FLAG_0x883 (CODE_FLAGS + 0x23)
+#define FLAG_0x884 (CODE_FLAGS + 0x24)
+#define FLAG_0x885 (CODE_FLAGS + 0x25)
+#define FLAG_0x886 (CODE_FLAGS + 0x26)
+#define FLAG_0x887 (CODE_FLAGS + 0x27)
+
+#define FLAG_SYS_USE_FLASH (CODE_FLAGS + 0x28)
+#define FLAG_SYS_USE_STRENGTH (CODE_FLAGS + 0x29)
+#define FLAG_SYS_WEATHER_CTRL (CODE_FLAGS + 0x2A)
+#define FLAG_SYS_CYCLING_ROAD (CODE_FLAGS + 0x2B)
+#define FLAG_SYS_SAFARI_MODE (CODE_FLAGS + 0x2C)
+#define FLAG_SYS_CRUISE_MODE (CODE_FLAGS + 0x2D)
+
+#define FLAG_0x88E (CODE_FLAGS + 0x2E)
+#define FLAG_0x88F (CODE_FLAGS + 0x2F)
+
+#define FLAG_SYS_TV_HOME (CODE_FLAGS + 0x30)
+#define FLAG_SYS_TV_WATCH (CODE_FLAGS + 0x31)
+#define FLAG_SYS_TV_START (CODE_FLAGS + 0x32)
+#define FLAG_SYS_POPWORD_INPUT (CODE_FLAGS + 0x33)
+#define FLAG_SYS_MIX_RECORD (CODE_FLAGS + 0x34)
+#define FLAG_SYS_CLOCK_SET (CODE_FLAGS + 0x35)
+#define FLAG_SYS_NATIONAL_DEX (CODE_FLAGS + 0x36)
+#define FLAG_SYS_CAVE_SHIP (CODE_FLAGS + 0x37)
+#define FLAG_SYS_CAVE_WONDER (CODE_FLAGS + 0x38)
+#define FLAG_SYS_CAVE_BATTLE (CODE_FLAGS + 0x39)
+#define FLAG_SYS_SHOAL_TIDE (CODE_FLAGS + 0x3A)
+#define FLAG_SYS_RIBBON_GET (CODE_FLAGS + 0x3B)
+
+#define FLAG_0x89C (CODE_FLAGS + 0x3C)
+#define FLAG_0x89D (CODE_FLAGS + 0x3D)
+#define FLAG_0x89E (CODE_FLAGS + 0x3E)
+#define FLAG_0x89F (CODE_FLAGS + 0x3F)
+#define FLAG_0x8A0 (CODE_FLAGS + 0x40)
+#define FLAG_0x8A1 (CODE_FLAGS + 0x41)
+#define FLAG_0x8A2 (CODE_FLAGS + 0x42)
+#define FLAG_0x8A3 (CODE_FLAGS + 0x43)
+#define FLAG_0x8A4 (CODE_FLAGS + 0x44)
+#define FLAG_0x8A5 (CODE_FLAGS + 0x45)
+#define FLAG_0x8A6 (CODE_FLAGS + 0x46)
+#define FLAG_0x8A7 (CODE_FLAGS + 0x47)
+#define FLAG_UNLOCK_BATTLE_FRONTIER (CODE_FLAGS + 0x48)
+#define FLAG_UNLOCK_SOUTHERN_ISLAND (CODE_FLAGS + 0x49)
+#define FLAG_0x8AA (CODE_FLAGS + 0x4A)
+
+#define FLAG_SYS_PC_LANETTE (CODE_FLAGS + 0x4B)
+#define FLAG_SYS_MYSTERY_EVENT_ENABLE (CODE_FLAGS + 0x4C)
+#define FLAG_SYS_ENC_UP_ITEM (CODE_FLAGS + 0x4D)
+#define FLAG_SYS_ENC_DOWN_ITEM (CODE_FLAGS + 0x4E)
+#define FLAG_SYS_BRAILLE_DIG (CODE_FLAGS + 0x4F)
+#define FLAG_SYS_BRAILLE_STRENGTH (CODE_FLAGS + 0x50)
+#define FLAG_SYS_BRAILLE_WAIT (CODE_FLAGS + 0x51)
+#define FLAG_SYS_BRAILLE_FLY (CODE_FLAGS + 0x52)
+#define FLAG_SYS_HAS_EON_TICKET (CODE_FLAGS + 0x53)
+
+#define FLAG_SYS_POKEMON_LEAGUE_FLY (CODE_FLAGS + 0x54)
+
+#define FLAG_0x8B5 (CODE_FLAGS + 0x55)
+#define FLAG_0x8B6 (CODE_FLAGS + 0x56)
+#define FLAG_0x8B7 (CODE_FLAGS + 0x57)
+#define FLAG_0x8B8 (CODE_FLAGS + 0x58)
+#define FLAG_0x8B9 (CODE_FLAGS + 0x59)
+#define FLAG_0x8BA (CODE_FLAGS + 0x5A)
+#define FLAG_0x8BB (CODE_FLAGS + 0x5B)
+#define FLAG_0x8BC (CODE_FLAGS + 0x5C)
+
+#define FLAG_SYS_TV_LATI (CODE_FLAGS + 0x5D)
+
+#define FLAG_0x8BE (CODE_FLAGS + 0x5E)
+
+#define FLAG_SYS_SHOAL_ITEM (CODE_FLAGS + 0x5F)
+#define FLAG_SYS_B_DASH (CODE_FLAGS + 0x60) // got Running Shoes
+#define FLAG_SYS_CTRL_OBJ_DELETE (CODE_FLAGS + 0x61)
+#define FLAG_SYS_RESET_RTC_ENABLE (CODE_FLAGS + 0x62)
+
+#define FLAG_0x8C3 (CODE_FLAGS + 0x63)
+
+#define FLAG_SYS_TOWER_SILVER (CODE_FLAGS + 0x64)
+#define FLAG_SYS_TOWER_GOLD (CODE_FLAGS + 0x65)
+#define FLAG_SYS_DOME_SILVER (CODE_FLAGS + 0x66)
+#define FLAG_SYS_DOME_GOLD (CODE_FLAGS + 0x67)
+#define FLAG_SYS_PALACE_SILVER (CODE_FLAGS + 0x68)
+#define FLAG_SYS_PALACE_GOLD (CODE_FLAGS + 0x69)
+#define FLAG_SYS_ARENA_SILVER (CODE_FLAGS + 0x6A)
+#define FLAG_SYS_ARENA_GOLD (CODE_FLAGS + 0x6B)
+#define FLAG_SYS_FACTORY_SILVER (CODE_FLAGS + 0x6C)
+#define FLAG_SYS_FACTORY_GOLD (CODE_FLAGS + 0x6D)
+#define FLAG_SYS_PIKE_SILVER (CODE_FLAGS + 0x6E)
+#define FLAG_SYS_PIKE_GOLD (CODE_FLAGS + 0x6F)
+#define FLAG_SYS_PYRAMID_SILVER (CODE_FLAGS + 0x70)
+#define FLAG_SYS_PYRAMID_GOLD (CODE_FLAGS + 0x71)
+#define FLAG_SYS_FRONTIER_PASS (CODE_FLAGS + 0x72)
+
+#define FLAG_0x8D3 (CODE_FLAGS + 0x73)
+#define FLAG_0x8D4 (CODE_FLAGS + 0x74)
+#define FLAG_0x8D5 (CODE_FLAGS + 0x75)
+#define FLAG_0x8D6 (CODE_FLAGS + 0x76)
+
+#define FLAG_SYS_STORAGE_UNKNOWN_FLAG (CODE_FLAGS + 0x77)
+
+#define FLAG_0x8D8 (CODE_FLAGS + 0x78)
+#define FLAG_0x8D9 (CODE_FLAGS + 0x79)
+#define FLAG_0x8DA (CODE_FLAGS + 0x7A)
+
+#define FLAG_SYS_MYSTERY_GIFT_ENABLE (CODE_FLAGS + 0x7B)
+
+#define FLAG_0x8DC (CODE_FLAGS + 0x7C)
+#define FLAG_0x8DD (CODE_FLAGS + 0x7D)
+#define FLAG_0x8DE (CODE_FLAGS + 0x7E)
+#define FLAG_0x8DF (CODE_FLAGS + 0x7F)
+#define FLAG_0x8E0 (CODE_FLAGS + 0x80)
+#define FLAG_0x8E1 (CODE_FLAGS + 0x81)
+#define FLAG_0x8E2 (CODE_FLAGS + 0x82)
+#define FLAG_0x8E3 (CODE_FLAGS + 0x83)
+#define FLAG_0x8E4 (CODE_FLAGS + 0x84)
+#define FLAG_0x8E5 (CODE_FLAGS + 0x85)
+#define FLAG_0x8E6 (CODE_FLAGS + 0x86)
+#define FLAG_0x8E7 (CODE_FLAGS + 0x87)
+#define FLAG_0x8E8 (CODE_FLAGS + 0x88)
+#define FLAG_0x8E9 (CODE_FLAGS + 0x89)
+#define FLAG_0x8EA (CODE_FLAGS + 0x8A)
+#define FLAG_0x8EB (CODE_FLAGS + 0x8B)
+#define FLAG_0x8EC (CODE_FLAGS + 0x8C)
+#define FLAG_0x8ED (CODE_FLAGS + 0x8D)
+#define FLAG_0x8EE (CODE_FLAGS + 0x8E)
+#define FLAG_0x8EF (CODE_FLAGS + 0x8F)
+#define FLAG_0x8F0 (CODE_FLAGS + 0x90)
+#define FLAG_0x8F1 (CODE_FLAGS + 0x91)
+#define FLAG_0x8F2 (CODE_FLAGS + 0x92)
+#define FLAG_0x8F3 (CODE_FLAGS + 0x93)
+#define FLAG_0x8F4 (CODE_FLAGS + 0x94)
+#define FLAG_0x8F5 (CODE_FLAGS + 0x95)
+#define FLAG_0x8F6 (CODE_FLAGS + 0x96)
+#define FLAG_0x8F7 (CODE_FLAGS + 0x97)
+#define FLAG_0x8F8 (CODE_FLAGS + 0x98)
+#define FLAG_0x8F9 (CODE_FLAGS + 0x99)
+#define FLAG_0x8FA (CODE_FLAGS + 0x9A)
+#define FLAG_0x8FB (CODE_FLAGS + 0x9B)
+#define FLAG_0x8FC (CODE_FLAGS + 0x9C)
+#define FLAG_0x8FD (CODE_FLAGS + 0x9D)
+#define FLAG_0x8FE (CODE_FLAGS + 0x9E)
+#define FLAG_0x8FF (CODE_FLAGS + 0x9F)
+#define FLAG_0x900 (CODE_FLAGS + 0xA0)
+#define FLAG_0x901 (CODE_FLAGS + 0xA1)
+#define FLAG_0x902 (CODE_FLAGS + 0xA2)
+#define FLAG_0x903 (CODE_FLAGS + 0xA3)
+#define FLAG_0x904 (CODE_FLAGS + 0xA4)
+#define FLAG_0x905 (CODE_FLAGS + 0xA5)
+#define FLAG_0x906 (CODE_FLAGS + 0xA6)
+#define FLAG_0x907 (CODE_FLAGS + 0xA7)
+#define FLAG_0x908 (CODE_FLAGS + 0xA8)
+#define FLAG_0x909 (CODE_FLAGS + 0xA9)
+#define FLAG_0x90A (CODE_FLAGS + 0xAA)
+#define FLAG_0x90B (CODE_FLAGS + 0xAB)
+#define FLAG_0x90C (CODE_FLAGS + 0xAC)
+#define FLAG_0x90D (CODE_FLAGS + 0xAD)
+#define FLAG_0x90E (CODE_FLAGS + 0xAE)
+#define FLAG_0x90F (CODE_FLAGS + 0xAF)
+#define FLAG_0x910 (CODE_FLAGS + 0xB0)
+#define FLAG_0x911 (CODE_FLAGS + 0xB1)
+#define FLAG_0x912 (CODE_FLAGS + 0xB2)
+#define FLAG_0x913 (CODE_FLAGS + 0xB3)
+#define FLAG_0x914 (CODE_FLAGS + 0xB4)
+#define FLAG_0x915 (CODE_FLAGS + 0xB5)
+#define FLAG_0x916 (CODE_FLAGS + 0xB6)
+#define FLAG_0x917 (CODE_FLAGS + 0xB7)
+#define FLAG_0x918 (CODE_FLAGS + 0xB8)
+#define FLAG_0x919 (CODE_FLAGS + 0xB9)
+#define FLAG_0x91A (CODE_FLAGS + 0xBA)
+#define FLAG_0x91B (CODE_FLAGS + 0xBB)
+#define FLAG_0x91C (CODE_FLAGS + 0xBC)
+#define FLAG_0x91D (CODE_FLAGS + 0xBD)
+#define FLAG_0x91E (CODE_FLAGS + 0xBE)
+#define FLAG_0x91F (CODE_FLAGS + 0xBF)
+#define FLAG_0x920 (CODE_FLAGS + 0xC0)
+#define FLAG_0x921 (CODE_FLAGS + 0xC1)
+#define FLAG_0x922 (CODE_FLAGS + 0xC2)
+#define FLAG_0x923 (CODE_FLAGS + 0xC3)
+#define FLAG_0x924 (CODE_FLAGS + 0xC4)
+#define FLAG_0x925 (CODE_FLAGS + 0xC5)
+#define FLAG_0x926 (CODE_FLAGS + 0xC6)
+#define FLAG_0x927 (CODE_FLAGS + 0xC7)
+#define FLAG_0x928 (CODE_FLAGS + 0xC8)
+#define FLAG_0x929 (CODE_FLAGS + 0xC9)
+#define FLAG_0x92A (CODE_FLAGS + 0xCA)
+#define FLAG_0x92B (CODE_FLAGS + 0xCB)
+#define FLAG_0x92C (CODE_FLAGS + 0xCC)
+#define FLAG_0x92D (CODE_FLAGS + 0xCD)
+#define FLAG_0x92E (CODE_FLAGS + 0xCE)
+#define FLAG_0x92F (CODE_FLAGS + 0xCF)
+#define FLAG_0x930 (CODE_FLAGS + 0xD0)
+#define FLAG_0x931 (CODE_FLAGS + 0xD1)
+#define FLAG_0x932 (CODE_FLAGS + 0xD2)
+#define FLAG_0x933 (CODE_FLAGS + 0xD3)
+#define FLAG_0x934 (CODE_FLAGS + 0xD4)
+#define FLAG_0x935 (CODE_FLAGS + 0xD5)
+#define FLAG_0x936 (CODE_FLAGS + 0xD6)
+#define FLAG_0x937 (CODE_FLAGS + 0xD7)
+#define FLAG_0x938 (CODE_FLAGS + 0xD8)
+#define FLAG_0x939 (CODE_FLAGS + 0xD9)
+#define FLAG_0x93A (CODE_FLAGS + 0xDA)
+#define FLAG_0x93B (CODE_FLAGS + 0xDB)
+#define FLAG_0x93C (CODE_FLAGS + 0xDC)
+#define FLAG_0x93D (CODE_FLAGS + 0xDD)
+#define FLAG_0x93E (CODE_FLAGS + 0xDE)
+#define FLAG_0x93F (CODE_FLAGS + 0xDF)
+#define FLAG_0x940 (CODE_FLAGS + 0xE0)
+#define FLAG_0x941 (CODE_FLAGS + 0xE1)
+#define FLAG_0x942 (CODE_FLAGS + 0xE2)
+#define FLAG_0x943 (CODE_FLAGS + 0xE3)
+#define FLAG_0x944 (CODE_FLAGS + 0xE4)
+#define FLAG_0x945 (CODE_FLAGS + 0xE5)
+#define FLAG_0x946 (CODE_FLAGS + 0xE6)
+#define FLAG_0x947 (CODE_FLAGS + 0xE7)
+#define FLAG_0x948 (CODE_FLAGS + 0xE8)
+#define FLAG_0x949 (CODE_FLAGS + 0xE9)
+#define FLAG_0x94A (CODE_FLAGS + 0xEA)
+#define FLAG_0x94B (CODE_FLAGS + 0xEB)
+#define FLAG_0x94C (CODE_FLAGS + 0xEC)
+#define FLAG_0x94D (CODE_FLAGS + 0xED)
+#define FLAG_0x94E (CODE_FLAGS + 0xEE)
+#define FLAG_0x94F (CODE_FLAGS + 0xEF)
+#define FLAG_0x950 (CODE_FLAGS + 0xF0)
+#define FLAG_0x951 (CODE_FLAGS + 0xF1)
+#define FLAG_0x952 (CODE_FLAGS + 0xF2)
+#define FLAG_0x953 (CODE_FLAGS + 0xF3)
+#define FLAG_0x954 (CODE_FLAGS + 0xF4)
+#define FLAG_0x955 (CODE_FLAGS + 0xF5)
+#define FLAG_0x956 (CODE_FLAGS + 0xF6)
+#define FLAG_0x957 (CODE_FLAGS + 0xF7)
+#define FLAG_0x958 (CODE_FLAGS + 0xF8)
+#define FLAG_0x959 (CODE_FLAGS + 0xF9)
+#define FLAG_0x95A (CODE_FLAGS + 0xFA)
+#define FLAG_0x95B (CODE_FLAGS + 0xFB)
+#define FLAG_0x95C (CODE_FLAGS + 0xFC)
+#define FLAG_0x95D (CODE_FLAGS + 0xFD)
+#define FLAG_0x95E (CODE_FLAGS + 0xFE)
+#define FLAG_0x95F (CODE_FLAGS + 0xFF)
+
+// SPECIAL FLAGS (unknown purpose)
+#define FLAG_SPECIAL_FLAG_0x4000 0x4000
+#define FLAG_SPECIAL_FLAG_0x4001 0x4001
+#define FLAG_SPECIAL_FLAG_0x4002 0x4002
+#define FLAG_SPECIAL_FLAG_0x4003 0x4003
+#define FLAG_SPECIAL_FLAG_0x4004 0x4004
+
+#endif // GUARD_CONSTANTS_FLAGS_H
diff --git a/include/game_stat.h b/include/constants/game_stat.h
index 5979c531c..b1f3d4197 100644
--- a/include/game_stat.h
+++ b/include/constants/game_stat.h
@@ -1,5 +1,5 @@
-#ifndef GUARD_GAME_STAT_H
-#define GUARD_GAME_STAT_H
+#ifndef GUARD_CONSTANTS_GAME_STAT_H
+#define GUARD_CONSTANTS_GAME_STAT_H
#define GAME_STAT_SAVED_GAME 0
#define GAME_STAT_FIRST_HOF_PLAY_TIME 1
@@ -56,7 +56,4 @@
#define NUM_GAME_STATS 64
-void IncrementGameStat(u8);
-u32 GetGameStat(u8);
-
-#endif // GUARD_GAME_STAT_H
+#endif // GUARD_CONSTANTS_GAME_STAT_H
diff --git a/include/hold_effects.h b/include/constants/hold_effects.h
index b653f5a92..b653f5a92 100644
--- a/include/hold_effects.h
+++ b/include/constants/hold_effects.h
diff --git a/include/constants/items.h b/include/constants/items.h
new file mode 100644
index 000000000..6135b8d6f
--- /dev/null
+++ b/include/constants/items.h
@@ -0,0 +1,393 @@
+#ifndef GUARD_CONSTANTS_ITEMS_H
+#define GUARD_CONSTANTS_ITEMS_H
+
+#define ITEM_NONE 0
+#define ITEM_MASTER_BALL 1
+#define ITEM_ULTRA_BALL 2
+#define ITEM_GREAT_BALL 3
+#define ITEM_POKE_BALL 4
+#define ITEM_SAFARI_BALL 5
+#define ITEM_NET_BALL 6
+#define ITEM_DIVE_BALL 7
+#define ITEM_NEST_BALL 8
+#define ITEM_REPEAT_BALL 9
+#define ITEM_TIMER_BALL 10
+#define ITEM_LUXURY_BALL 11
+#define ITEM_PREMIER_BALL 12
+#define ITEM_POTION 13
+#define ITEM_ANTIDOTE 14
+#define ITEM_BURN_HEAL 15
+#define ITEM_ICE_HEAL 16
+#define ITEM_AWAKENING 17
+#define ITEM_PARALYZE_HEAL 18
+#define ITEM_FULL_RESTORE 19
+#define ITEM_MAX_POTION 20
+#define ITEM_HYPER_POTION 21
+#define ITEM_SUPER_POTION 22
+#define ITEM_FULL_HEAL 23
+#define ITEM_REVIVE 24
+#define ITEM_MAX_REVIVE 25
+#define ITEM_FRESH_WATER 26
+#define ITEM_SODA_POP 27
+#define ITEM_LEMONADE 28
+#define ITEM_MOOMOO_MILK 29
+#define ITEM_ENERGY_POWDER 30
+#define ITEM_ENERGY_ROOT 31
+#define ITEM_HEAL_POWDER 32
+#define ITEM_REVIVAL_HERB 33
+#define ITEM_ETHER 34
+#define ITEM_MAX_ETHER 35
+#define ITEM_ELIXIR 36
+#define ITEM_MAX_ELIXIR 37
+#define ITEM_LAVA_COOKIE 38
+#define ITEM_BLUE_FLUTE 39
+#define ITEM_YELLOW_FLUTE 40
+#define ITEM_RED_FLUTE 41
+#define ITEM_BLACK_FLUTE 42
+#define ITEM_WHITE_FLUTE 43
+#define ITEM_BERRY_JUICE 44
+#define ITEM_SACRED_ASH 45
+#define ITEM_SHOAL_SALT 46
+#define ITEM_SHOAL_SHELL 47
+#define ITEM_RED_SHARD 48
+#define ITEM_BLUE_SHARD 49
+#define ITEM_YELLOW_SHARD 50
+#define ITEM_GREEN_SHARD 51
+#define ITEM_034 52
+#define ITEM_035 53
+#define ITEM_036 54
+#define ITEM_037 55
+#define ITEM_038 56
+#define ITEM_039 57
+#define ITEM_03A 58
+#define ITEM_03B 59
+#define ITEM_03C 60
+#define ITEM_03D 61
+#define ITEM_03E 62
+#define ITEM_HP_UP 63
+#define ITEM_PROTEIN 64
+#define ITEM_IRON 65
+#define ITEM_CARBOS 66
+#define ITEM_CALCIUM 67
+#define ITEM_RARE_CANDY 68
+#define ITEM_PP_UP 69
+#define ITEM_ZINC 70
+#define ITEM_PP_MAX 71
+#define ITEM_048 72
+#define ITEM_GUARD_SPEC 73
+#define ITEM_DIRE_HIT 74
+#define ITEM_X_ATTACK 75
+#define ITEM_X_DEFEND 76
+#define ITEM_X_SPEED 77
+#define ITEM_X_ACCURACY 78
+#define ITEM_X_SPECIAL 79
+#define ITEM_POKE_DOLL 80
+#define ITEM_FLUFFY_TAIL 81
+#define ITEM_052 82
+#define ITEM_SUPER_REPEL 83
+#define ITEM_MAX_REPEL 84
+#define ITEM_ESCAPE_ROPE 85
+#define ITEM_REPEL 86
+#define ITEM_057 87
+#define ITEM_058 88
+#define ITEM_059 89
+#define ITEM_05A 90
+#define ITEM_05B 91
+#define ITEM_05C 92
+#define ITEM_SUN_STONE 93
+#define ITEM_MOON_STONE 94
+#define ITEM_FIRE_STONE 95
+#define ITEM_THUNDER_STONE 96
+#define ITEM_WATER_STONE 97
+#define ITEM_LEAF_STONE 98
+#define ITEM_063 99
+#define ITEM_064 100
+#define ITEM_065 101
+#define ITEM_066 102
+#define ITEM_TINY_MUSHROOM 103
+#define ITEM_BIG_MUSHROOM 104
+#define ITEM_069 105
+#define ITEM_PEARL 106
+#define ITEM_BIG_PEARL 107
+#define ITEM_STARDUST 108
+#define ITEM_STAR_PIECE 109
+#define ITEM_NUGGET 110
+#define ITEM_HEART_SCALE 111
+#define ITEM_070 112
+#define ITEM_071 113
+#define ITEM_072 114
+#define ITEM_073 115
+#define ITEM_074 116
+#define ITEM_075 117
+#define ITEM_076 118
+#define ITEM_077 119
+#define ITEM_078 120
+#define ITEM_ORANGE_MAIL 121
+#define ITEM_HARBOR_MAIL 122
+#define ITEM_GLITTER_MAIL 123
+#define ITEM_MECH_MAIL 124
+#define ITEM_WOOD_MAIL 125
+#define ITEM_WAVE_MAIL 126
+#define ITEM_BEAD_MAIL 127
+#define ITEM_SHADOW_MAIL 128
+#define ITEM_TROPIC_MAIL 129
+#define ITEM_DREAM_MAIL 130
+#define ITEM_FAB_MAIL 131
+#define ITEM_RETRO_MAIL 132
+#define ITEM_CHERI_BERRY 133
+#define ITEM_CHESTO_BERRY 134
+#define ITEM_PECHA_BERRY 135
+#define ITEM_RAWST_BERRY 136
+#define ITEM_ASPEAR_BERRY 137
+#define ITEM_LEPPA_BERRY 138
+#define ITEM_ORAN_BERRY 139
+#define ITEM_PERSIM_BERRY 140
+#define ITEM_LUM_BERRY 141
+#define ITEM_SITRUS_BERRY 142
+#define ITEM_FIGY_BERRY 143
+#define ITEM_WIKI_BERRY 144
+#define ITEM_MAGO_BERRY 145
+#define ITEM_AGUAV_BERRY 146
+#define ITEM_IAPAPA_BERRY 147
+#define ITEM_RAZZ_BERRY 148
+#define ITEM_BLUK_BERRY 149
+#define ITEM_NANAB_BERRY 150
+#define ITEM_WEPEAR_BERRY 151
+#define ITEM_PINAP_BERRY 152
+#define ITEM_POMEG_BERRY 153
+#define ITEM_KELPSY_BERRY 154
+#define ITEM_QUALOT_BERRY 155
+#define ITEM_HONDEW_BERRY 156
+#define ITEM_GREPA_BERRY 157
+#define ITEM_TAMATO_BERRY 158
+#define ITEM_CORNN_BERRY 159
+#define ITEM_MAGOST_BERRY 160
+#define ITEM_RABUTA_BERRY 161
+#define ITEM_NOMEL_BERRY 162
+#define ITEM_SPELON_BERRY 163
+#define ITEM_PAMTRE_BERRY 164
+#define ITEM_WATMEL_BERRY 165
+#define ITEM_DURIN_BERRY 166
+#define ITEM_BELUE_BERRY 167
+#define ITEM_LIECHI_BERRY 168
+#define ITEM_GANLON_BERRY 169
+#define ITEM_SALAC_BERRY 170
+#define ITEM_PETAYA_BERRY 171
+#define ITEM_APICOT_BERRY 172
+#define ITEM_LANSAT_BERRY 173
+#define ITEM_STARF_BERRY 174
+#define ITEM_ENIGMA_BERRY 175
+#define ITEM_0B0 176
+#define ITEM_0B1 177
+#define ITEM_0B2 178
+#define ITEM_BRIGHT_POWDER 179
+#define ITEM_WHITE_HERB 180
+#define ITEM_MACHO_BRACE 181
+#define ITEM_EXP_SHARE 182
+#define ITEM_QUICK_CLAW 183
+#define ITEM_SOOTHE_BELL 184
+#define ITEM_MENTAL_HERB 185
+#define ITEM_CHOICE_BAND 186
+#define ITEM_KINGS_ROCK 187
+#define ITEM_SILVER_POWDER 188
+#define ITEM_AMULET_COIN 189
+#define ITEM_CLEANSE_TAG 190
+#define ITEM_SOUL_DEW 191
+#define ITEM_DEEP_SEA_TOOTH 192
+#define ITEM_DEEP_SEA_SCALE 193
+#define ITEM_SMOKE_BALL 194
+#define ITEM_EVERSTONE 195
+#define ITEM_FOCUS_BAND 196
+#define ITEM_LUCKY_EGG 197
+#define ITEM_SCOPE_LENS 198
+#define ITEM_METAL_COAT 199
+#define ITEM_LEFTOVERS 200
+#define ITEM_DRAGON_SCALE 201
+#define ITEM_LIGHT_BALL 202
+#define ITEM_SOFT_SAND 203
+#define ITEM_HARD_STONE 204
+#define ITEM_MIRACLE_SEED 205
+#define ITEM_BLACK_GLASSES 206
+#define ITEM_BLACK_BELT 207
+#define ITEM_MAGNET 208
+#define ITEM_MYSTIC_WATER 209
+#define ITEM_SHARP_BEAK 210
+#define ITEM_POISON_BARB 211
+#define ITEM_NEVER_MELT_ICE 212
+#define ITEM_SPELL_TAG 213
+#define ITEM_TWISTED_SPOON 214
+#define ITEM_CHARCOAL 215
+#define ITEM_DRAGON_FANG 216
+#define ITEM_SILK_SCARF 217
+#define ITEM_UP_GRADE 218
+#define ITEM_SHELL_BELL 219
+#define ITEM_SEA_INCENSE 220
+#define ITEM_LAX_INCENSE 221
+#define ITEM_LUCKY_PUNCH 222
+#define ITEM_METAL_POWDER 223
+#define ITEM_THICK_CLUB 224
+#define ITEM_STICK 225
+#define ITEM_0E2 226
+#define ITEM_0E3 227
+#define ITEM_0E4 228
+#define ITEM_0E5 229
+#define ITEM_0E6 230
+#define ITEM_0E7 231
+#define ITEM_0E8 232
+#define ITEM_0E9 233
+#define ITEM_0EA 234
+#define ITEM_0EB 235
+#define ITEM_0EC 236
+#define ITEM_0ED 237
+#define ITEM_0EE 238
+#define ITEM_0EF 239
+#define ITEM_0F0 240
+#define ITEM_0F1 241
+#define ITEM_0F2 242
+#define ITEM_0F3 243
+#define ITEM_0F4 244
+#define ITEM_0F5 245
+#define ITEM_0F6 246
+#define ITEM_0F7 247
+#define ITEM_0F8 248
+#define ITEM_0F9 249
+#define ITEM_0FA 250
+#define ITEM_0FB 251
+#define ITEM_0FC 252
+#define ITEM_0FD 253
+#define ITEM_RED_SCARF 254
+#define ITEM_BLUE_SCARF 255
+#define ITEM_PINK_SCARF 256
+#define ITEM_GREEN_SCARF 257
+#define ITEM_YELLOW_SCARF 258
+#define ITEM_MACH_BIKE 259
+#define ITEM_COIN_CASE 260
+#define ITEM_ITEMFINDER 261
+#define ITEM_OLD_ROD 262
+#define ITEM_GOOD_ROD 263
+#define ITEM_SUPER_ROD 264
+#define ITEM_SS_TICKET 265
+#define ITEM_CONTEST_PASS 266
+#define ITEM_10B 267
+#define ITEM_WAILMER_PAIL 268
+#define ITEM_DEVON_GOODS 269
+#define ITEM_SOOT_SACK 270
+#define ITEM_BASEMENT_KEY 271
+#define ITEM_ACRO_BIKE 272
+#define ITEM_POKEBLOCK_CASE 273
+#define ITEM_LETTER 274
+#define ITEM_EON_TICKET 275
+#define ITEM_RED_ORB 276
+#define ITEM_BLUE_ORB 277
+#define ITEM_SCANNER 278
+#define ITEM_GO_GOGGLES 279
+#define ITEM_METEORITE 280
+#define ITEM_ROOM_1_KEY 281
+#define ITEM_ROOM_2_KEY 282
+#define ITEM_ROOM_4_KEY 283
+#define ITEM_ROOM_6_KEY 284
+#define ITEM_STORAGE_KEY 285
+#define ITEM_ROOT_FOSSIL 286
+#define ITEM_CLAW_FOSSIL 287
+#define ITEM_DEVON_SCOPE 288
+#define ITEM_TM01 289
+#define ITEM_TM02 290
+#define ITEM_TM03 291
+#define ITEM_TM04 292
+#define ITEM_TM05 293
+#define ITEM_TM06 294
+#define ITEM_TM07 295
+#define ITEM_TM08 296
+#define ITEM_TM09 297
+#define ITEM_TM10 298
+#define ITEM_TM11 299
+#define ITEM_TM12 300
+#define ITEM_TM13 301
+#define ITEM_TM14 302
+#define ITEM_TM15 303
+#define ITEM_TM16 304
+#define ITEM_TM17 305
+#define ITEM_TM18 306
+#define ITEM_TM19 307
+#define ITEM_TM20 308
+#define ITEM_TM21 309
+#define ITEM_TM22 310
+#define ITEM_TM23 311
+#define ITEM_TM24 312
+#define ITEM_TM25 313
+#define ITEM_TM26 314
+#define ITEM_TM27 315
+#define ITEM_TM28 316
+#define ITEM_TM29 317
+#define ITEM_TM30 318
+#define ITEM_TM31 319
+#define ITEM_TM32 320
+#define ITEM_TM33 321
+#define ITEM_TM34 322
+#define ITEM_TM35 323
+#define ITEM_TM36 324
+#define ITEM_TM37 325
+#define ITEM_TM38 326
+#define ITEM_TM39 327
+#define ITEM_TM40 328
+#define ITEM_TM41 329
+#define ITEM_TM42 330
+#define ITEM_TM43 331
+#define ITEM_TM44 332
+#define ITEM_TM45 333
+#define ITEM_TM46 334
+#define ITEM_TM47 335
+#define ITEM_TM48 336
+#define ITEM_TM49 337
+#define ITEM_TM50 338
+#define ITEM_HM01 339
+#define ITEM_HM02 340
+#define ITEM_HM03 341
+#define ITEM_HM04 342
+#define ITEM_HM05 343
+#define ITEM_HM06 344
+#define ITEM_HM07 345
+#define ITEM_HM08 346
+#define ITEM_15B 347
+#define ITEM_15C 348
+
+// FireRed/LeafGreen
+#define ITEM_OAKS_PARCEL 349
+#define ITEM_POKE_FLUTE 350
+#define ITEM_SECRET_KEY 351
+#define ITEM_BIKE_VOUCHER 352
+#define ITEM_GOLD_TEETH 353
+#define ITEM_OLD_AMBER 354
+#define ITEM_CARD_KEY 355
+#define ITEM_LIFT_KEY 356
+#define ITEM_HELIX_FOSSIL 357
+#define ITEM_DOME_FOSSIL 358
+#define ITEM_SILPH_SCOPE 359
+#define ITEM_BICYCLE 360
+#define ITEM_TOWN_MAP 361
+#define ITEM_VS_SEEKER 362
+#define ITEM_FAME_CHECKER 363
+#define ITEM_TM_CASE 364
+#define ITEM_BERRY_POUCH 365
+#define ITEM_TEACHY_TV 366
+#define ITEM_TRI_PASS 367
+#define ITEM_RAINBOW_PASS 368
+#define ITEM_TEA 369
+#define ITEM_MYSTIC_TICKET 370
+#define ITEM_AURORA_TICKET 371
+#define ITEM_POWDER_JAR 372
+#define ITEM_RUBY 373
+#define ITEM_SAPPHIRE 374
+
+// Emerald
+#define ITEM_MAGMA_EMBLEM 375
+#define ITEM_OLD_SEA_MAP 376
+
+#define FIRST_BERRY_INDEX ITEM_CHERI_BERRY
+#define LAST_BERRY_INDEX ITEM_ENIGMA_BERRY
+#define ITEM_TO_BERRY(itemId)(((itemId - FIRST_BERRY_INDEX) + 1))
+
+#define NUM_TECHNICAL_MACHINES 50
+#define NUM_HIDDEN_MACHINES 8
+
+#endif // GUARD_CONSTANTS_ITEMS_H
diff --git a/include/constants/map_objects.h b/include/constants/map_objects.h
new file mode 100644
index 000000000..d5b983005
--- /dev/null
+++ b/include/constants/map_objects.h
@@ -0,0 +1,263 @@
+#ifndef GUARD_CONSTANTS_MAP_OBJECTS_H
+#define GUARD_CONSTANTS_MAP_OBJECTS_H
+
+#define MAP_OBJ_GFX_BRENDAN_NORMAL 0
+#define MAP_OBJ_GFX_BRENDAN_MACH_BIKE 1
+#define MAP_OBJ_GFX_BRENDAN_SURFING 2
+#define MAP_OBJ_GFX_BRENDAN_FIELD_MOVE 3
+#define MAP_OBJ_GFX_QUINTY_PLUMP 4
+#define MAP_OBJ_GFX_LITTLE_BOY_1 5
+#define MAP_OBJ_GFX_LITTLE_GIRL_1 6
+#define MAP_OBJ_GFX_BOY_1 7
+#define MAP_OBJ_GFX_GIRL_1 8
+#define MAP_OBJ_GFX_BOY_2 9
+#define MAP_OBJ_GFX_GIRL_2 10
+#define MAP_OBJ_GFX_LITTLE_BOY_2 11
+#define MAP_OBJ_GFX_LITTLE_GIRL_2 12
+#define MAP_OBJ_GFX_BOY_3 13
+#define MAP_OBJ_GFX_GIRL_3 14
+#define MAP_OBJ_GFX_BOY_4 15
+#define MAP_OBJ_GFX_WOMAN_1 16
+#define MAP_OBJ_GFX_FAT_MAN 17
+#define MAP_OBJ_GFX_WOMAN_2 18
+#define MAP_OBJ_GFX_MAN_1 19
+#define MAP_OBJ_GFX_WOMAN_3 20
+#define MAP_OBJ_GFX_OLD_MAN_1 21
+#define MAP_OBJ_GFX_OLD_WOMAN_1 22
+#define MAP_OBJ_GFX_MAN_2 23
+#define MAP_OBJ_GFX_WOMAN_4 24
+#define MAP_OBJ_GFX_MAN_3 25
+#define MAP_OBJ_GFX_WOMAN_5 26
+#define MAP_OBJ_GFX_COOK 27
+#define MAP_OBJ_GFX_WOMAN_6 28
+#define MAP_OBJ_GFX_OLD_MAN_2 29
+#define MAP_OBJ_GFX_OLD_WOMAN_2 30
+#define MAP_OBJ_GFX_CAMPER 31
+#define MAP_OBJ_GFX_PICNICKER 32
+#define MAP_OBJ_GFX_MAN_4 33
+#define MAP_OBJ_GFX_WOMAN_7 34
+#define MAP_OBJ_GFX_YOUNGSTER 35
+#define MAP_OBJ_GFX_BUG_CATCHER 36
+#define MAP_OBJ_GFX_PSYCHIC_M 37
+#define MAP_OBJ_GFX_SCHOOL_KID_M 38
+#define MAP_OBJ_GFX_MANIAC 39
+#define MAP_OBJ_GFX_HEX_MANIAC 40
+#define MAP_OBJ_GFX_RAYQUAZA_1 41
+#define MAP_OBJ_GFX_SWIMMER_M 42
+#define MAP_OBJ_GFX_SWIMMER_F 43
+#define MAP_OBJ_GFX_BLACK_BELT 44
+#define MAP_OBJ_GFX_BEAUTY 45
+#define MAP_OBJ_GFX_SCIENTIST_1 46
+#define MAP_OBJ_GFX_LASS 47
+#define MAP_OBJ_GFX_GENTLEMAN 48
+#define MAP_OBJ_GFX_SAILOR 49
+#define MAP_OBJ_GFX_FISHERMAN 50
+#define MAP_OBJ_GFX_RUNNING_TRIATHLETE_M 51
+#define MAP_OBJ_GFX_RUNNING_TRIATHLETE_F 52
+#define MAP_OBJ_GFX_TUBER_F 53
+#define MAP_OBJ_GFX_TUBER_M 54
+#define MAP_OBJ_GFX_HIKER 55
+#define MAP_OBJ_GFX_CYCLING_TRIATHLETE_M 56
+#define MAP_OBJ_GFX_CYCLING_TRIATHLETE_F 57
+#define MAP_OBJ_GFX_NURSE 58
+#define MAP_OBJ_GFX_ITEM_BALL 59
+#define MAP_OBJ_GFX_BERRY_TREE 60
+#define MAP_OBJ_GFX_BERRY_TREE_EARLY_STAGES 61
+#define MAP_OBJ_GFX_BERRY_TREE_LATE_STAGES 62
+#define MAP_OBJ_GFX_BRENDAN_ACRO_BIKE 63
+#define MAP_OBJ_GFX_PROF_BIRCH 64
+#define MAP_OBJ_GFX_MAN_5 65
+#define MAP_OBJ_GFX_MAN_6 66
+#define MAP_OBJ_GFX_REPORTER_M 67
+#define MAP_OBJ_GFX_REPORTER_F 68
+#define MAP_OBJ_GFX_BARD 69
+#define MAP_OBJ_GFX_ANABEL 70
+#define MAP_OBJ_GFX_TUCKER 71
+#define MAP_OBJ_GFX_GRETA 72
+#define MAP_OBJ_GFX_SPENSER 73
+#define MAP_OBJ_GFX_NOLAND 74
+#define MAP_OBJ_GFX_LUCY 75
+#define MAP_OBJ_GFX_UNUSED_NATU_DOLL 76
+#define MAP_OBJ_GFX_UNUSED_MAGNEMITE_DOLL 77
+#define MAP_OBJ_GFX_UNUSED_SQUIRTLE_DOLL 78
+#define MAP_OBJ_GFX_UNUSED_WOOPER_DOLL 79
+#define MAP_OBJ_GFX_UNUSED_PIKACHU_DOLL 80
+#define MAP_OBJ_GFX_UNUSED_PORYGON2_DOLL 81
+#define MAP_OBJ_GFX_CUTTABLE_TREE 82
+#define MAP_OBJ_GFX_MART_EMPLOYEE 83
+#define MAP_OBJ_GFX_ROOFTOP_SALE_WOMAN 84
+#define MAP_OBJ_GFX_TEALA 85
+#define MAP_OBJ_GFX_BREAKABLE_ROCK 86
+#define MAP_OBJ_GFX_PUSHABLE_BOULDER 87
+#define MAP_OBJ_GFX_MR_BRINEYS_BOAT 88
+#define MAP_OBJ_GFX_MAY_NORMAL 89
+#define MAP_OBJ_GFX_MAY_MACH_BIKE 90
+#define MAP_OBJ_GFX_MAY_ACRO_BIKE 91
+#define MAP_OBJ_GFX_MAY_SURFING 92
+#define MAP_OBJ_GFX_MAY_FIELD_MOVE 93
+#define MAP_OBJ_GFX_TRUCK 94
+#define MAP_OBJ_GFX_VIGAROTH_CARRYING_BOX 95
+#define MAP_OBJ_GFX_VIGAROTH_FACING_AWAY 96
+#define MAP_OBJ_GFX_BIRCHS_BAG 97
+#define MAP_OBJ_GFX_ZIGZAGOON_1 98
+#define MAP_OBJ_GFX_ARTIST 99
+#define MAP_OBJ_GFX_RIVAL_BRENDAN_NORMAL 100
+#define MAP_OBJ_GFX_RIVAL_BRENDAN_MACH_BIKE 101
+#define MAP_OBJ_GFX_RIVAL_BRENDAN_ACRO_BIKE 102
+#define MAP_OBJ_GFX_RIVAL_BRENDAN_SURFING 103
+#define MAP_OBJ_GFX_RIVAL_BRENDAN_FIELD_MOVE 104
+#define MAP_OBJ_GFX_RIVAL_MAY_NORMAL 105
+#define MAP_OBJ_GFX_RIVAL_MAY_MACH_BIKE 106
+#define MAP_OBJ_GFX_RIVAL_MAY_ACRO_BIKE 107
+#define MAP_OBJ_GFX_RIVAL_MAY_SURFING 108
+#define MAP_OBJ_GFX_RIVAL_MAY_FIELD_MOVE 109
+#define MAP_OBJ_GFX_CAMERAMAN 110
+#define MAP_OBJ_GFX_BRENDAN_UNDERWATER 111
+#define MAP_OBJ_GFX_MAY_UNDERWATER 112
+#define MAP_OBJ_GFX_MOVING_BOX 113
+#define MAP_OBJ_GFX_CABLE_CAR 114
+#define MAP_OBJ_GFX_SCIENTIST_2 115
+#define MAP_OBJ_GFX_MAN_7 116
+#define MAP_OBJ_GFX_AQUA_MEMBER_M 117
+#define MAP_OBJ_GFX_AQUA_MEMBER_F 118
+#define MAP_OBJ_GFX_MAGMA_MEMBER_M 119
+#define MAP_OBJ_GFX_MAGMA_MEMBER_F 120
+#define MAP_OBJ_GFX_SIDNEY 121
+#define MAP_OBJ_GFX_PHOEBE 122
+#define MAP_OBJ_GFX_GLACIA 123
+#define MAP_OBJ_GFX_DRAKE 124
+#define MAP_OBJ_GFX_ROXANNE 125
+#define MAP_OBJ_GFX_BRAWLY 126
+#define MAP_OBJ_GFX_WATTSON 127
+#define MAP_OBJ_GFX_FLANNERY 128
+#define MAP_OBJ_GFX_NORMAN 129
+#define MAP_OBJ_GFX_WINONA 130
+#define MAP_OBJ_GFX_LIZA 131
+#define MAP_OBJ_GFX_TATE 132
+#define MAP_OBJ_GFX_WALLACE 133
+#define MAP_OBJ_GFX_STEVEN 134
+#define MAP_OBJ_GFX_WALLY 135
+#define MAP_OBJ_GFX_LITTLE_BOY_3 136
+#define MAP_OBJ_GFX_BRENDAN_FISHING 137
+#define MAP_OBJ_GFX_MAY_FISHING 138
+#define MAP_OBJ_GFX_HOT_SPRINGS_OLD_WOMAN 139
+#define MAP_OBJ_GFX_SS_TIDAL 140
+#define MAP_OBJ_GFX_SUBMARINE_SHADOW 141
+#define MAP_OBJ_GFX_PICHU_DOLL 142
+#define MAP_OBJ_GFX_PIKACHU_DOLL 143
+#define MAP_OBJ_GFX_MARILL_DOLL 144
+#define MAP_OBJ_GFX_TOGEPI_DOLL 145
+#define MAP_OBJ_GFX_CYNDAQUIL_DOLL 146
+#define MAP_OBJ_GFX_CHIKORITA_DOLL 147
+#define MAP_OBJ_GFX_TOTODILE_DOLL 148
+#define MAP_OBJ_GFX_JIGGLYPUFF_DOLL 149
+#define MAP_OBJ_GFX_MEOWTH_DOLL 150
+#define MAP_OBJ_GFX_CLEFAIRY_DOLL 151
+#define MAP_OBJ_GFX_DITTO_DOLL 152
+#define MAP_OBJ_GFX_SMOOCHUM_DOLL 153
+#define MAP_OBJ_GFX_TREECKO_DOLL 154
+#define MAP_OBJ_GFX_TORCHIC_DOLL 155
+#define MAP_OBJ_GFX_MUDKIP_DOLL 156
+#define MAP_OBJ_GFX_DUSKULL_DOLL 157
+#define MAP_OBJ_GFX_WYNAUT_DOLL 158
+#define MAP_OBJ_GFX_BALTOY_DOLL 159
+#define MAP_OBJ_GFX_KECLEON_DOLL 160
+#define MAP_OBJ_GFX_AZURILL_DOLL 161
+#define MAP_OBJ_GFX_SKITTY_DOLL 162
+#define MAP_OBJ_GFX_SWABLU_DOLL 163
+#define MAP_OBJ_GFX_GULPIN_DOLL 164
+#define MAP_OBJ_GFX_LOTAD_DOLL 165
+#define MAP_OBJ_GFX_SEEDOT_DOLL 166
+#define MAP_OBJ_GFX_PIKA_CUSHION 167
+#define MAP_OBJ_GFX_ROUND_CUSHION 168
+#define MAP_OBJ_GFX_KISS_CUSHION 169
+#define MAP_OBJ_GFX_ZIGZAG_CUSHION 170
+#define MAP_OBJ_GFX_SPIN_CUSHION 171
+#define MAP_OBJ_GFX_DIAMOND_CUSHION 172
+#define MAP_OBJ_GFX_BALL_CUSHION 173
+#define MAP_OBJ_GFX_GRASS_CUSHION 174
+#define MAP_OBJ_GFX_FIRE_CUSHION 175
+#define MAP_OBJ_GFX_WATER_CUSHION 176
+#define MAP_OBJ_GFX_BIG_SNORLAX_DOLL 177
+#define MAP_OBJ_GFX_BIG_RHYDON_DOLL 178
+#define MAP_OBJ_GFX_BIG_LAPRAS_DOLL 179
+#define MAP_OBJ_GFX_BIG_VENUSAUR_DOLL 180
+#define MAP_OBJ_GFX_BIG_CHARIZARD_DOLL 181
+#define MAP_OBJ_GFX_BIG_BLASTOISE_DOLL 182
+#define MAP_OBJ_GFX_BIG_WAILMER_DOLL 183
+#define MAP_OBJ_GFX_BIG_REGIROCK_DOLL 184
+#define MAP_OBJ_GFX_BIG_REGICE_DOLL 185
+#define MAP_OBJ_GFX_BIG_REGISTEEL_DOLL 186
+#define MAP_OBJ_GFX_LATIAS 187
+#define MAP_OBJ_GFX_LATIOS 188
+#define MAP_OBJ_GFX_BOY_5 189
+#define MAP_OBJ_GFX_CONTEST_JUDGE 190
+#define MAP_OBJ_GFX_BRENDAN_WATERING 191
+#define MAP_OBJ_GFX_MAY_WATERING 192
+#define MAP_OBJ_GFX_BRENDAN_DECORATING 193
+#define MAP_OBJ_GFX_MAY_DECORATING 194
+#define MAP_OBJ_GFX_ARCHIE 195
+#define MAP_OBJ_GFX_MAXIE 196
+#define MAP_OBJ_GFX_KYOGRE_1 197
+#define MAP_OBJ_GFX_GROUDON_1 198
+#define MAP_OBJ_GFX_FOSSIL 199
+#define MAP_OBJ_GFX_REGIROCK 200
+#define MAP_OBJ_GFX_REGICE 201
+#define MAP_OBJ_GFX_REGISTEEL 202
+#define MAP_OBJ_GFX_SKITTY 203
+#define MAP_OBJ_GFX_KECLEON_1 204
+#define MAP_OBJ_GFX_KYOGRE_2 205
+#define MAP_OBJ_GFX_GROUDON_2 206
+#define MAP_OBJ_GFX_RAYQUAZA_2 207
+#define MAP_OBJ_GFX_ZIGZAGOON_2 208
+#define MAP_OBJ_GFX_PIKACHU 209
+#define MAP_OBJ_GFX_AZUMARILL 210
+#define MAP_OBJ_GFX_WINGULL 211
+#define MAP_OBJ_GFX_KECLEON_2 212
+#define MAP_OBJ_GFX_TUBER_M_SWIMMING 213
+#define MAP_OBJ_GFX_AZURILL 214
+#define MAP_OBJ_GFX_MOM 215
+#define MAP_OBJ_GFX_LINK_BRENDAN 216
+#define MAP_OBJ_GFX_LINK_MAY 217
+#define MAP_OBJ_GFX_JUAN 218
+#define MAP_OBJ_GFX_SCOTT 219
+#define MAP_OBJ_GFX_POOCHYENA 220
+#define MAP_OBJ_GFX_KYOGRE_3 221
+#define MAP_OBJ_GFX_GROUDON_3 222
+#define MAP_OBJ_GFX_MYSTERY_GIFT_MAN 223
+#define MAP_OBJ_GFX_TRICK_HOUSE_STATUE 224
+#define MAP_OBJ_GFX_KIRLIA 225
+#define MAP_OBJ_GFX_DUSCLOPS 226
+#define MAP_OBJ_GFX_UNION_ROOM_NURSE 227
+#define MAP_OBJ_GFX_SUDOWOODO 228
+#define MAP_OBJ_GFX_MEW 229
+#define MAP_OBJ_GFX_RED 230
+#define MAP_OBJ_GFX_LEAF 231
+#define MAP_OBJ_GFX_DEOXYS 232
+#define MAP_OBJ_GFX_DEOXYS_TRIANGLE 233
+#define MAP_OBJ_GFX_BRANDON 234
+#define MAP_OBJ_GFX_LINK_RS_BRENDAN 235
+#define MAP_OBJ_GFX_LINK_RS_MAY 236
+#define MAP_OBJ_GFX_LUGIA 237
+#define MAP_OBJ_GFX_HOOH 238
+#define MAP_OBJ_GFX_BARD_2 239
+#define MAP_OBJ_GFX_HIPSTER 240
+#define MAP_OBJ_GFX_TRADER 241
+#define MAP_OBJ_GFX_STORYTELLER 242
+#define MAP_OBJ_GFX_GIDDY 243
+#define MAP_OBJ_GFX_PLACEHOLDER_1 244
+#define MAP_OBJ_GFX_PLACEHOLDER_2 245
+
+#define SHADOW_SIZE_S 0
+#define SHADOW_SIZE_M 1
+#define SHADOW_SIZE_L 2
+#define SHADOW_SIZE_XL 3
+
+#define F_INANIMATE (1 << 6)
+#define F_DISABLE_REFLECTION_PALETTE_LOAD (1 << 7)
+
+#define TRACKS_NONE 0
+#define TRACKS_FOOT 1
+#define TRACKS_BIKE_TIRE 2
+
+#endif // GUARD_CONSTANTS_MAP_OBJECTS_H
diff --git a/include/constants/maps.h b/include/constants/maps.h
new file mode 100644
index 000000000..737edd7de
--- /dev/null
+++ b/include/constants/maps.h
@@ -0,0 +1,595 @@
+#ifndef GUARD_CONSTANTS_MAPS_H
+#define GUARD_CONSTANTS_MAPS_H
+
+// Map Group 0
+#define MAP_PETALBURG_CITY (0 | (0 << 8))
+#define MAP_SLATEPORT_CITY (1 | (0 << 8))
+#define MAP_MAUVILLE_CITY (2 | (0 << 8))
+#define MAP_RUSTBORO_CITY (3 | (0 << 8))
+#define MAP_FORTREE_CITY (4 | (0 << 8))
+#define MAP_LILYCOVE_CITY (5 | (0 << 8))
+#define MAP_MOSSDEEP_CITY (6 | (0 << 8))
+#define MAP_SOOTOPOLIS_CITY (7 | (0 << 8))
+#define MAP_EVER_GRANDE_CITY (8 | (0 << 8))
+#define MAP_LITTLEROOT_TOWN (9 | (0 << 8))
+#define MAP_OLDALE_TOWN (10 | (0 << 8))
+#define MAP_DEWFORD_TOWN (11 | (0 << 8))
+#define MAP_LAVARIDGE_TOWN (12 | (0 << 8))
+#define MAP_FALLARBOR_TOWN (13 | (0 << 8))
+#define MAP_VERDANTURF_TOWN (14 | (0 << 8))
+#define MAP_PACIFIDLOG_TOWN (15 | (0 << 8))
+#define MAP_ROUTE101 (16 | (0 << 8))
+#define MAP_ROUTE102 (17 | (0 << 8))
+#define MAP_ROUTE103 (18 | (0 << 8))
+#define MAP_ROUTE104 (19 | (0 << 8))
+#define MAP_ROUTE105 (20 | (0 << 8))
+#define MAP_ROUTE106 (21 | (0 << 8))
+#define MAP_ROUTE107 (22 | (0 << 8))
+#define MAP_ROUTE108 (23 | (0 << 8))
+#define MAP_ROUTE109 (24 | (0 << 8))
+#define MAP_ROUTE110 (25 | (0 << 8))
+#define MAP_ROUTE111 (26 | (0 << 8))
+#define MAP_ROUTE112 (27 | (0 << 8))
+#define MAP_ROUTE113 (28 | (0 << 8))
+#define MAP_ROUTE114 (29 | (0 << 8))
+#define MAP_ROUTE115 (30 | (0 << 8))
+#define MAP_ROUTE116 (31 | (0 << 8))
+#define MAP_ROUTE117 (32 | (0 << 8))
+#define MAP_ROUTE118 (33 | (0 << 8))
+#define MAP_ROUTE119 (34 | (0 << 8))
+#define MAP_ROUTE120 (35 | (0 << 8))
+#define MAP_ROUTE121 (36 | (0 << 8))
+#define MAP_ROUTE122 (37 | (0 << 8))
+#define MAP_ROUTE123 (38 | (0 << 8))
+#define MAP_ROUTE124 (39 | (0 << 8))
+#define MAP_ROUTE125 (40 | (0 << 8))
+#define MAP_ROUTE126 (41 | (0 << 8))
+#define MAP_ROUTE127 (42 | (0 << 8))
+#define MAP_ROUTE128 (43 | (0 << 8))
+#define MAP_ROUTE129 (44 | (0 << 8))
+#define MAP_ROUTE130 (45 | (0 << 8))
+#define MAP_ROUTE131 (46 | (0 << 8))
+#define MAP_ROUTE132 (47 | (0 << 8))
+#define MAP_ROUTE133 (48 | (0 << 8))
+#define MAP_ROUTE134 (49 | (0 << 8))
+#define MAP_UNDERWATER1 (50 | (0 << 8))
+#define MAP_UNDERWATER2 (51 | (0 << 8))
+#define MAP_UNDERWATER3 (52 | (0 << 8))
+#define MAP_UNDERWATER4 (53 | (0 << 8))
+
+// Map Group 1
+#define MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F (0 | (1 << 8))
+#define MAP_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F (1 | (1 << 8))
+#define MAP_LITTLEROOT_TOWN_MAYS_HOUSE_1F (2 | (1 << 8))
+#define MAP_LITTLEROOT_TOWN_MAYS_HOUSE_2F (3 | (1 << 8))
+#define MAP_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB (4 | (1 << 8))
+
+// Map Group 2
+#define MAP_OLDALE_TOWN_HOUSE1 (0 | (2 << 8))
+#define MAP_OLDALE_TOWN_HOUSE2 (1 | (2 << 8))
+#define MAP_OLDALE_TOWN_POKEMON_CENTER_1F (2 | (2 << 8))
+#define MAP_OLDALE_TOWN_POKEMON_CENTER_2F (3 | (2 << 8))
+#define MAP_OLDALE_TOWN_MART (4 | (2 << 8))
+
+// Map Group 3
+#define MAP_DEWFORD_TOWN_HOUSE1 (0 | (3 << 8))
+#define MAP_DEWFORD_TOWN_POKEMON_CENTER_1F (1 | (3 << 8))
+#define MAP_DEWFORD_TOWN_POKEMON_CENTER_2F (2 | (3 << 8))
+#define MAP_DEWFORD_TOWN_GYM (3 | (3 << 8))
+#define MAP_DEWFORD_TOWN_HALL (4 | (3 << 8))
+#define MAP_DEWFORD_TOWN_HOUSE2 (5 | (3 << 8))
+
+// Map Group 4
+#define MAP_LAVARIDGE_TOWN_HERB_SHOP (0 | (4 << 8))
+#define MAP_LAVARIDGE_TOWN_GYM_1F (1 | (4 << 8))
+#define MAP_LAVARIDGE_TOWN_GYM_B1F (2 | (4 << 8))
+#define MAP_LAVARIDGE_TOWN_HOUSE (3 | (4 << 8))
+#define MAP_LAVARIDGE_TOWN_MART (4 | (4 << 8))
+#define MAP_LAVARIDGE_TOWN_POKEMON_CENTER_1F (5 | (4 << 8))
+#define MAP_LAVARIDGE_TOWN_POKEMON_CENTER_2F (6 | (4 << 8))
+
+// Map Group 5
+#define MAP_FALLARBOR_TOWN_MART (0 | (5 << 8))
+#define MAP_FALLARBOR_TOWN_BATTLE_TENT_LOBBY (1 | (5 << 8))
+#define MAP_FALLARBOR_TOWN_BATTLE_TENT_CORRIDOR (2 | (5 << 8))
+#define MAP_FALLARBOR_TOWN_BATTLE_TENT_BATTLE_ROOM (3 | (5 << 8))
+#define MAP_FALLARBOR_TOWN_POKEMON_CENTER_1F (4 | (5 << 8))
+#define MAP_FALLARBOR_TOWN_POKEMON_CENTER_2F (5 | (5 << 8))
+#define MAP_FALLARBOR_TOWN_HOUSE1 (6 | (5 << 8))
+#define MAP_FALLARBOR_TOWN_HOUSE2 (7 | (5 << 8))
+
+// Map Group 6
+#define MAP_VERDANTURF_TOWN_BATTLE_TENT_LOBBY (0 | (6 << 8))
+#define MAP_VERDANTURF_TOWN_BATTLE_TENT_CORRIDOR (1 | (6 << 8))
+#define MAP_VERDANTURF_TOWN_BATTLE_TENT_BATTLE_ROOM (2 | (6 << 8))
+#define MAP_VERDANTURF_TOWN_MART (3 | (6 << 8))
+#define MAP_VERDANTURF_TOWN_POKEMON_CENTER_1F (4 | (6 << 8))
+#define MAP_VERDANTURF_TOWN_POKEMON_CENTER_2F (5 | (6 << 8))
+#define MAP_VERDANTURF_TOWN_WANDAS_HOUSE (6 | (6 << 8))
+#define MAP_VERDANTURF_TOWN_FRIENDSHIP_RATERS_HOUSE (7 | (6 << 8))
+#define MAP_VERDANTURF_TOWN_HOUSE (8 | (6 << 8))
+
+// Map Group 7
+#define MAP_PACIFIDLOG_TOWN_POKEMON_CENTER_1F (0 | (7 << 8))
+#define MAP_PACIFIDLOG_TOWN_POKEMON_CENTER_2F (1 | (7 << 8))
+#define MAP_PACIFIDLOG_TOWN_HOUSE1 (2 | (7 << 8))
+#define MAP_PACIFIDLOG_TOWN_HOUSE2 (3 | (7 << 8))
+#define MAP_PACIFIDLOG_TOWN_HOUSE3 (4 | (7 << 8))
+#define MAP_PACIFIDLOG_TOWN_HOUSE4 (5 | (7 << 8))
+#define MAP_PACIFIDLOG_TOWN_HOUSE5 (6 | (7 << 8))
+
+// Map Group 8
+#define MAP_PETALBURG_CITY_WALLYS_HOUSE (0 | (8 << 8))
+#define MAP_PETALBURG_CITY_GYM (1 | (8 << 8))
+#define MAP_PETALBURG_CITY_HOUSE1 (2 | (8 << 8))
+#define MAP_PETALBURG_CITY_HOUSE2 (3 | (8 << 8))
+#define MAP_PETALBURG_CITY_POKEMON_CENTER_1F (4 | (8 << 8))
+#define MAP_PETALBURG_CITY_POKEMON_CENTER_2F (5 | (8 << 8))
+#define MAP_PETALBURG_CITY_MART (6 | (8 << 8))
+
+// Map Group 9
+#define MAP_SLATEPORT_CITY_STERNS_SHIPYARD_1F (0 | (9 << 8))
+#define MAP_SLATEPORT_CITY_STERNS_SHIPYARD_2F (1 | (9 << 8))
+#define MAP_SLATEPORT_CITY_BATTLE_TENT_LOBBY (2 | (9 << 8))
+#define MAP_SLATEPORT_CITY_BATTLE_TENT_CORRIDOR (3 | (9 << 8))
+#define MAP_SLATEPORT_CITY_BATTLE_TENT_BATTLE_ROOM (4 | (9 << 8))
+#define MAP_SLATEPORT_CITY_HOUSE1 (5 | (9 << 8))
+#define MAP_SLATEPORT_CITY_POKEMON_FAN_CLUB (6 | (9 << 8))
+#define MAP_SLATEPORT_CITY_OCEANIC_MUSEUM_1F (7 | (9 << 8))
+#define MAP_SLATEPORT_CITY_OCEANIC_MUSEUM_2F (8 | (9 << 8))
+#define MAP_SLATEPORT_CITY_HARBOR (9 | (9 << 8))
+#define MAP_SLATEPORT_CITY_HOUSE2 (10 | (9 << 8))
+#define MAP_SLATEPORT_CITY_POKEMON_CENTER_1F (11 | (9 << 8))
+#define MAP_SLATEPORT_CITY_POKEMON_CENTER_2F (12 | (9 << 8))
+#define MAP_SLATEPORT_CITY_MART (13 | (9 << 8))
+
+// Map Group 10
+#define MAP_MAUVILLE_CITY_GYM (0 | (10 << 8))
+#define MAP_MAUVILLE_CITY_BIKE_SHOP (1 | (10 << 8))
+#define MAP_MAUVILLE_CITY_HOUSE1 (2 | (10 << 8))
+#define MAP_MAUVILLE_CITY_GAME_CORNER (3 | (10 << 8))
+#define MAP_MAUVILLE_CITY_HOUSE2 (4 | (10 << 8))
+#define MAP_MAUVILLE_CITY_POKEMON_CENTER_1F (5 | (10 << 8))
+#define MAP_MAUVILLE_CITY_POKEMON_CENTER_2F (6 | (10 << 8))
+#define MAP_MAUVILLE_CITY_MART (7 | (10 << 8))
+
+// Map Group 11
+#define MAP_RUSTBORO_CITY_DEVON_CORP_1F (0 | (11 << 8))
+#define MAP_RUSTBORO_CITY_DEVON_CORP_2F (1 | (11 << 8))
+#define MAP_RUSTBORO_CITY_DEVON_CORP_3F (2 | (11 << 8))
+#define MAP_RUSTBORO_CITY_GYM (3 | (11 << 8))
+#define MAP_RUSTBORO_CITY_POKEMON_SCHOOL (4 | (11 << 8))
+#define MAP_RUSTBORO_CITY_POKEMON_CENTER_1F (5 | (11 << 8))
+#define MAP_RUSTBORO_CITY_POKEMON_CENTER_2F (6 | (11 << 8))
+#define MAP_RUSTBORO_CITY_MART (7 | (11 << 8))
+#define MAP_RUSTBORO_CITY_FLAT1_1F (8 | (11 << 8))
+#define MAP_RUSTBORO_CITY_FLAT1_2F (9 | (11 << 8))
+#define MAP_RUSTBORO_CITY_HOUSE1 (10 | (11 << 8))
+#define MAP_RUSTBORO_CITY_CUTTERS_HOUSE (11 | (11 << 8))
+#define MAP_RUSTBORO_CITY_HOUSE2 (12 | (11 << 8))
+#define MAP_RUSTBORO_CITY_FLAT2_1F (13 | (11 << 8))
+#define MAP_RUSTBORO_CITY_FLAT2_2F (14 | (11 << 8))
+#define MAP_RUSTBORO_CITY_FLAT2_3F (15 | (11 << 8))
+#define MAP_RUSTBORO_CITY_HOUSE3 (16 | (11 << 8))
+
+// Map Group 12
+#define MAP_FORTREE_CITY_HOUSE1 (0 | (12 << 8))
+#define MAP_FORTREE_CITY_GYM (1 | (12 << 8))
+#define MAP_FORTREE_CITY_POKEMON_CENTER_1F (2 | (12 << 8))
+#define MAP_FORTREE_CITY_POKEMON_CENTER_2F (3 | (12 << 8))
+#define MAP_FORTREE_CITY_MART (4 | (12 << 8))
+#define MAP_FORTREE_CITY_HOUSE2 (5 | (12 << 8))
+#define MAP_FORTREE_CITY_HOUSE3 (6 | (12 << 8))
+#define MAP_FORTREE_CITY_HOUSE4 (7 | (12 << 8))
+#define MAP_FORTREE_CITY_HOUSE5 (8 | (12 << 8))
+#define MAP_FORTREE_CITY_DECORATION_SHOP (9 | (12 << 8))
+
+// Map Group 13
+#define MAP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F (0 | (13 << 8))
+#define MAP_LILYCOVE_CITY_COVE_LILY_MOTEL_2F (1 | (13 << 8))
+#define MAP_LILYCOVE_CITY_LILYCOVE_MUSEUM_1F (2 | (13 << 8))
+#define MAP_LILYCOVE_CITY_LILYCOVE_MUSEUM_2F (3 | (13 << 8))
+#define MAP_LILYCOVE_CITY_CONTEST_LOBBY (4 | (13 << 8))
+#define MAP_LILYCOVE_CITY_CONTEST_HALL (5 | (13 << 8))
+#define MAP_LILYCOVE_CITY_POKEMON_CENTER_1F (6 | (13 << 8))
+#define MAP_LILYCOVE_CITY_POKEMON_CENTER_2F (7 | (13 << 8))
+#define MAP_LILYCOVE_CITY_UNUSED_MART (8 | (13 << 8))
+#define MAP_LILYCOVE_CITY_POKEMON_TRAINER_FAN_CLUB (9 | (13 << 8))
+#define MAP_LILYCOVE_CITY_HARBOR (10 | (13 << 8))
+#define MAP_LILYCOVE_CITY_MOVE_DELETERS_HOUSE (11 | (13 << 8))
+#define MAP_LILYCOVE_CITY_HOUSE1 (12 | (13 << 8))
+#define MAP_LILYCOVE_CITY_HOUSE2 (13 | (13 << 8))
+#define MAP_LILYCOVE_CITY_HOUSE3 (14 | (13 << 8))
+#define MAP_LILYCOVE_CITY_HOUSE4 (15 | (13 << 8))
+#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_1F (16 | (13 << 8))
+#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_2F (17 | (13 << 8))
+#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_3F (18 | (13 << 8))
+#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_4F (19 | (13 << 8))
+#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_5F (20 | (13 << 8))
+#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP (21 | (13 << 8))
+#define MAP_LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR (22 | (13 << 8))
+
+// Map Group 14
+#define MAP_MOSSDEEP_CITY_GYM (0 | (14 << 8))
+#define MAP_MOSSDEEP_CITY_HOUSE1 (1 | (14 << 8))
+#define MAP_MOSSDEEP_CITY_HOUSE2 (2 | (14 << 8))
+#define MAP_MOSSDEEP_CITY_POKEMON_CENTER_1F (3 | (14 << 8))
+#define MAP_MOSSDEEP_CITY_POKEMON_CENTER_2F (4 | (14 << 8))
+#define MAP_MOSSDEEP_CITY_MART (5 | (14 << 8))
+#define MAP_MOSSDEEP_CITY_HOUSE3 (6 | (14 << 8))
+#define MAP_MOSSDEEP_CITY_STEVENS_HOUSE (7 | (14 << 8))
+#define MAP_MOSSDEEP_CITY_HOUSE4 (8 | (14 << 8))
+#define MAP_MOSSDEEP_CITY_SPACE_CENTER_1F (9 | (14 << 8))
+#define MAP_MOSSDEEP_CITY_SPACE_CENTER_2F (10 | (14 << 8))
+#define MAP_MOSSDEEP_CITY_GAME_CORNER_1F (11 | (14 << 8))
+#define MAP_MOSSDEEP_CITY_GAME_CORNER_B1F (12 | (14 << 8))
+
+// Map Group 15
+#define MAP_SOOTOPOLIS_CITY_GYM_1F (0 | (15 << 8))
+#define MAP_SOOTOPOLIS_CITY_GYM_B1F (1 | (15 << 8))
+#define MAP_SOOTOPOLIS_CITY_POKEMON_CENTER_1F (2 | (15 << 8))
+#define MAP_SOOTOPOLIS_CITY_POKEMON_CENTER_2F (3 | (15 << 8))
+#define MAP_SOOTOPOLIS_CITY_MART (4 | (15 << 8))
+#define MAP_SOOTOPOLIS_CITY_HOUSE1 (5 | (15 << 8))
+#define MAP_SOOTOPOLIS_CITY_HOUSE2 (6 | (15 << 8))
+#define MAP_SOOTOPOLIS_CITY_HOUSE3 (7 | (15 << 8))
+#define MAP_SOOTOPOLIS_CITY_HOUSE4 (8 | (15 << 8))
+#define MAP_SOOTOPOLIS_CITY_HOUSE5 (9 | (15 << 8))
+#define MAP_SOOTOPOLIS_CITY_HOUSE6 (10 | (15 << 8))
+#define MAP_SOOTOPOLIS_CITY_HOUSE7 (11 | (15 << 8))
+#define MAP_SOOTOPOLIS_CITY_HOUSE8 (12 | (15 << 8))
+#define MAP_SOOTOPOLIS_CITY_HOUSE9_1F (13 | (15 << 8))
+#define MAP_SOOTOPOLIS_CITY_HOUSE9_B1F (14 | (15 << 8))
+
+// Map Group 16
+#define MAP_EVER_GRANDE_CITY_SIDNEYS_ROOM (0 | (16 << 8))
+#define MAP_EVER_GRANDE_CITY_PHOEBES_ROOM (1 | (16 << 8))
+#define MAP_EVER_GRANDE_CITY_GLACIAS_ROOM (2 | (16 << 8))
+#define MAP_EVER_GRANDE_CITY_DRAKES_ROOM (3 | (16 << 8))
+#define MAP_EVER_GRANDE_CITY_CHAMPIONS_ROOM (4 | (16 << 8))
+#define MAP_EVER_GRANDE_CITY_CORRIDOR1 (5 | (16 << 8))
+#define MAP_EVER_GRANDE_CITY_CORRIDOR2 (6 | (16 << 8))
+#define MAP_EVER_GRANDE_CITY_CORRIDOR3 (7 | (16 << 8))
+#define MAP_EVER_GRANDE_CITY_CORRIDOR4 (8 | (16 << 8))
+#define MAP_EVER_GRANDE_CITY_CORRIDOR5 (9 | (16 << 8))
+#define MAP_EVER_GRANDE_CITY_POKEMON_LEAGUE_1F (10 | (16 << 8))
+#define MAP_EVER_GRANDE_CITY_HALL_OF_FAME (11 | (16 << 8))
+#define MAP_EVER_GRANDE_CITY_POKEMON_CENTER_1F (12 | (16 << 8))
+#define MAP_EVER_GRANDE_CITY_POKEMON_CENTER_2F (13 | (16 << 8))
+#define MAP_EVER_GRANDE_CITY_POKEMON_LEAGUE_2F (14 | (16 << 8))
+
+// Map Group 17
+#define MAP_ROUTE104_MR_BRINEYS_HOUSE (0 | (17 << 8))
+#define MAP_ROUTE104_PRETTY_PETAL_FLOWER_SHOP (1 | (17 << 8))
+
+// Map Group 18
+#define MAP_ROUTE111_WINSTRATE_FAMILYS_HOUSE (0 | (18 << 8))
+#define MAP_ROUTE111_OLD_LADYS_REST_STOP (1 | (18 << 8))
+
+// Map Group 19
+#define MAP_ROUTE112_CABLE_CAR_STATION (0 | (19 << 8))
+#define MAP_MT_CHIMNEY_CABLE_CAR_STATION (1 | (19 << 8))
+
+// Map Group 20
+#define MAP_ROUTE114_FOSSIL_MANIACS_HOUSE (0 | (20 << 8))
+#define MAP_ROUTE114_FOSSIL_MANIACS_TUNNEL (1 | (20 << 8))
+#define MAP_ROUTE114_LANETTES_HOUSE (2 | (20 << 8))
+
+// Map Group 21
+#define MAP_ROUTE116_TUNNELERS_REST_HOUSE (0 | (21 << 8))
+
+// Map Group 22
+#define MAP_ROUTE117_POKEMON_DAY_CARE (0 | (22 << 8))
+
+// Map Group 23
+#define MAP_ROUTE121_SAFARI_ZONE_ENTRANCE (0 | (23 << 8))
+
+// Map Group 24
+#define MAP_METEOR_FALLS_1F_1R (0 | (24 << 8))
+#define MAP_METEOR_FALLS_1F_2R (1 | (24 << 8))
+#define MAP_METEOR_FALLS_B1F_1R (2 | (24 << 8))
+#define MAP_METEOR_FALLS_B1F_2R (3 | (24 << 8))
+#define MAP_RUSTURF_TUNNEL (4 | (24 << 8))
+#define MAP_UNDERWATER_SOOTOPOLIS_CITY (5 | (24 << 8))
+#define MAP_DESERT_RUINS (6 | (24 << 8))
+#define MAP_GRANITE_CAVE_1F (7 | (24 << 8))
+#define MAP_GRANITE_CAVE_B1F (8 | (24 << 8))
+#define MAP_GRANITE_CAVE_B2F (9 | (24 << 8))
+#define MAP_GRANITE_CAVE_STEVENS_ROOM (10 | (24 << 8))
+#define MAP_PETALBURG_WOODS (11 | (24 << 8))
+#define MAP_MT_CHIMNEY (12 | (24 << 8))
+#define MAP_JAGGED_PASS (13 | (24 << 8))
+#define MAP_FIERY_PATH (14 | (24 << 8))
+#define MAP_MT_PYRE_1F (15 | (24 << 8))
+#define MAP_MT_PYRE_2F (16 | (24 << 8))
+#define MAP_MT_PYRE_3F (17 | (24 << 8))
+#define MAP_MT_PYRE_4F (18 | (24 << 8))
+#define MAP_MT_PYRE_5F (19 | (24 << 8))
+#define MAP_MT_PYRE_6F (20 | (24 << 8))
+#define MAP_MT_PYRE_EXTERIOR (21 | (24 << 8))
+#define MAP_MT_PYRE_SUMMIT (22 | (24 << 8))
+#define MAP_AQUA_HIDEOUT_1F (23 | (24 << 8))
+#define MAP_AQUA_HIDEOUT_B1F (24 | (24 << 8))
+#define MAP_AQUA_HIDEOUT_B2F (25 | (24 << 8))
+#define MAP_UNDERWATER_SEAFLOOR_CAVERN (26 | (24 << 8))
+#define MAP_SEAFLOOR_CAVERN_ENTRANCE (27 | (24 << 8))
+#define MAP_SEAFLOOR_CAVERN_ROOM1 (28 | (24 << 8))
+#define MAP_SEAFLOOR_CAVERN_ROOM2 (29 | (24 << 8))
+#define MAP_SEAFLOOR_CAVERN_ROOM3 (30 | (24 << 8))
+#define MAP_SEAFLOOR_CAVERN_ROOM4 (31 | (24 << 8))
+#define MAP_SEAFLOOR_CAVERN_ROOM5 (32 | (24 << 8))
+#define MAP_SEAFLOOR_CAVERN_ROOM6 (33 | (24 << 8))
+#define MAP_SEAFLOOR_CAVERN_ROOM7 (34 | (24 << 8))
+#define MAP_SEAFLOOR_CAVERN_ROOM8 (35 | (24 << 8))
+#define MAP_SEAFLOOR_CAVERN_ROOM9 (36 | (24 << 8))
+#define MAP_CAVE_OF_ORIGIN_ENTRANCE (37 | (24 << 8))
+#define MAP_CAVE_OF_ORIGIN_1F (38 | (24 << 8))
+#define MAP_CAVE_OF_ORIGIN_UNUSED_RS_B1F (39 | (24 << 8)) //
+#define MAP_CAVE_OF_ORIGIN_UNUSED_RS_B2F (40 | (24 << 8)) // Ruby/Sapphire leftovers
+#define MAP_CAVE_OF_ORIGIN_UNUSED_RS_B3F (41 | (24 << 8)) //
+#define MAP_CAVE_OF_ORIGIN_B1F (42 | (24 << 8))
+#define MAP_VICTORY_ROAD_1F (43 | (24 << 8))
+#define MAP_VICTORY_ROAD_B1F (44 | (24 << 8))
+#define MAP_VICTORY_ROAD_B2F (45 | (24 << 8))
+#define MAP_SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM (46 | (24 << 8))
+#define MAP_SHOAL_CAVE_LOW_TIDE_INNER_ROOM (47 | (24 << 8))
+#define MAP_SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM (48 | (24 << 8))
+#define MAP_SHOAL_CAVE_LOW_TIDE_LOWER_ROOM (49 | (24 << 8))
+#define MAP_SHOAL_CAVE_HIGH_TIDE_ENTRANCE_ROOM (50 | (24 << 8))
+#define MAP_SHOAL_CAVE_HIGH_TIDE_INNER_ROOM (51 | (24 << 8))
+#define MAP_NEW_MAUVILLE_ENTRANCE (52 | (24 << 8))
+#define MAP_NEW_MAUVILLE_INSIDE (53 | (24 << 8))
+#define MAP_ABANDONED_SHIP_DECK (54 | (24 << 8))
+#define MAP_ABANDONED_SHIP_CORRIDORS_1F (55 | (24 << 8))
+#define MAP_ABANDONED_SHIP_ROOMS_1F (56 | (24 << 8))
+#define MAP_ABANDONED_SHIP_CORRIDORS_B1F (57 | (24 << 8))
+#define MAP_ABANDONED_SHIP_ROOMS_B1F (58 | (24 << 8))
+#define MAP_ABANDONED_SHIP_ROOMS2_B1F (59 | (24 << 8))
+#define MAP_ABANDONED_SHIP_UNDERWATER1 (60 | (24 << 8))
+#define MAP_ABANDONED_SHIP_ROOM_B1F (61 | (24 << 8))
+#define MAP_ABANDONED_SHIP_ROOMS2_1F (62 | (24 << 8))
+#define MAP_ABANDONED_SHIP_CAPTAINS_OFFICE (63 | (24 << 8))
+#define MAP_ABANDONED_SHIP_UNDERWATER2 (64 | (24 << 8))
+#define MAP_ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS (65 | (24 << 8))
+#define MAP_ABANDONED_SHIP_HIDDEN_FLOOR_ROOMS (66 | (24 << 8))
+#define MAP_ISLAND_CAVE (67 | (24 << 8))
+#define MAP_ANCIENT_TOMB (68 | (24 << 8))
+#define MAP_UNDERWATER_ROUTE134 (69 | (24 << 8))
+#define MAP_UNDERWATER_SEALED_CHAMBER (70 | (24 << 8))
+#define MAP_SEALED_CHAMBER_OUTER_ROOM (71 | (24 << 8))
+#define MAP_SEALED_CHAMBER_INNER_ROOM (72 | (24 << 8))
+#define MAP_SCORCHED_SLAB (73 | (24 << 8))
+#define MAP_UNUSED_RUBY_MAGMA_HIDEOUT_1F (74 | (24 << 8)) //
+#define MAP_UNUSED_RUBY_MAGMA_HIDEOUT_B1F (75 | (24 << 8)) // Ruby/Sapphire leftovers
+#define MAP_UNUSED_RUBY_MAGMA_HIDEOUT_B2F (76 | (24 << 8)) //
+#define MAP_SKY_PILLAR_ENTRANCE (77 | (24 << 8))
+#define MAP_SKY_PILLAR_OUTSIDE (78 | (24 << 8))
+#define MAP_SKY_PILLAR_1F (79 | (24 << 8))
+#define MAP_SKY_PILLAR_2F (80 | (24 << 8))
+#define MAP_SKY_PILLAR_3F (81 | (24 << 8))
+#define MAP_SKY_PILLAR_4F (82 | (24 << 8))
+#define MAP_SHOAL_CAVE_LOW_TIDE_ICE_ROOM (83 | (24 << 8))
+#define MAP_SKY_PILLAR_5F (84 | (24 << 8))
+#define MAP_SKY_PILLAR_TOP (85 | (24 << 8))
+#define MAP_MAGMA_HIDEOUT_1F (86 | (24 << 8))
+#define MAP_MAGMA_HIDEOUT_2F_1R (87 | (24 << 8))
+#define MAP_MAGMA_HIDEOUT_2F_2R (88 | (24 << 8))
+#define MAP_MAGMA_HIDEOUT_3F_1R (89 | (24 << 8))
+#define MAP_MAGMA_HIDEOUT_3F_2R (90 | (24 << 8))
+#define MAP_MAGMA_HIDEOUT_4F (91 | (24 << 8))
+#define MAP_MAGMA_HIDEOUT_3F_3R (92 | (24 << 8))
+#define MAP_MAGMA_HIDEOUT_2F_3R (93 | (24 << 8))
+#define MAP_MIRAGE_TOWER_1F (94 | (24 << 8))
+#define MAP_MIRAGE_TOWER_2F (95 | (24 << 8))
+#define MAP_MIRAGE_TOWER_3F (96 | (24 << 8))
+#define MAP_MIRAGE_TOWER_4F (97 | (24 << 8))
+#define MAP_DESERT_UNDERPASS (98 | (24 << 8))
+#define MAP_ARTISAN_CAVE_B1F (99 | (24 << 8))
+#define MAP_ARTISAN_CAVE_1F (100 | (24 << 8))
+#define MAP_UNDERWATER_MARINE_CAVE (101 | (24 << 8))
+#define MAP_MARINE_CAVE_ENTRANCE (102 | (24 << 8))
+#define MAP_MARINE_CAVE_END (103 | (24 << 8))
+#define MAP_TERRA_CAVE_ENTRANCE (104 | (24 << 8))
+#define MAP_TERRA_CAVE_END (105 | (24 << 8))
+#define MAP_ALTERING_CAVE (106 | (24 << 8))
+#define MAP_METEOR_FALLS_STEVENS_CAVE (107 | (24 << 8))
+
+// Map Group 25
+#define MAP_SECRET_BASE_RED_CAVE1 (0 | (25 << 8))
+#define MAP_SECRET_BASE_BROWN_CAVE1 (1 | (25 << 8))
+#define MAP_SECRET_BASE_BLUE_CAVE1 (2 | (25 << 8))
+#define MAP_SECRET_BASE_YELLOW_CAVE1 (3 | (25 << 8))
+#define MAP_SECRET_BASE_TREE1 (4 | (25 << 8))
+#define MAP_SECRET_BASE_SHRUB1 (5 | (25 << 8))
+#define MAP_SECRET_BASE_RED_CAVE2 (6 | (25 << 8))
+#define MAP_SECRET_BASE_BROWN_CAVE2 (7 | (25 << 8))
+#define MAP_SECRET_BASE_BLUE_CAVE2 (8 | (25 << 8))
+#define MAP_SECRET_BASE_YELLOW_CAVE2 (9 | (25 << 8))
+#define MAP_SECRET_BASE_TREE2 (10 | (25 << 8))
+#define MAP_SECRET_BASE_SHRUB2 (11 | (25 << 8))
+#define MAP_SECRET_BASE_RED_CAVE3 (12 | (25 << 8))
+#define MAP_SECRET_BASE_BROWN_CAVE3 (13 | (25 << 8))
+#define MAP_SECRET_BASE_BLUE_CAVE3 (14 | (25 << 8))
+#define MAP_SECRET_BASE_YELLOW_CAVE3 (15 | (25 << 8))
+#define MAP_SECRET_BASE_TREE3 (16 | (25 << 8))
+#define MAP_SECRET_BASE_SHRUB3 (17 | (25 << 8))
+#define MAP_SECRET_BASE_RED_CAVE4 (18 | (25 << 8))
+#define MAP_SECRET_BASE_BROWN_CAVE4 (19 | (25 << 8))
+#define MAP_SECRET_BASE_BLUE_CAVE4 (20 | (25 << 8))
+#define MAP_SECRET_BASE_YELLOW_CAVE4 (21 | (25 << 8))
+#define MAP_SECRET_BASE_TREE4 (22 | (25 << 8))
+#define MAP_SECRET_BASE_SHRUB4 (23 | (25 << 8))
+#define MAP_SINGLE_BATTLE_COLOSSEUM (24 | (25 << 8))
+#define MAP_TRADE_CENTER (25 | (25 << 8))
+#define MAP_RECORD_CORNER (26 | (25 << 8))
+#define MAP_DOUBLE_BATTLE_COLOSSEUM (27 | (25 << 8))
+#define MAP_LINK_CONTEST_ROOM1 (28 | (25 << 8))
+#define MAP_UNKNOWN_MAP_25_29 (29 | (25 << 8))
+#define MAP_UNKNOWN_MAP_25_30 (30 | (25 << 8))
+#define MAP_UNKNOWN_MAP_25_31 (31 | (25 << 8))
+#define MAP_UNKNOWN_MAP_25_32 (32 | (25 << 8))
+#define MAP_UNKNOWN_MAP_25_33 (33 | (25 << 8))
+#define MAP_UNKNOWN_MAP_25_34 (34 | (25 << 8))
+#define MAP_LINK_CONTEST_ROOM2 (35 | (25 << 8))
+#define MAP_LINK_CONTEST_ROOM3 (36 | (25 << 8))
+#define MAP_LINK_CONTEST_ROOM4 (37 | (25 << 8))
+#define MAP_LINK_CONTEST_ROOM5 (38 | (25 << 8))
+#define MAP_LINK_CONTEST_ROOM6 (39 | (25 << 8))
+#define MAP_INSIDE_OF_TRUCK (40 | (25 << 8))
+#define MAP_SS_TIDAL_CORRIDOR (41 | (25 << 8))
+#define MAP_SS_TIDAL_LOWER_DECK (42 | (25 << 8))
+#define MAP_SS_TIDAL_ROOMS (43 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE_01 (44 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE_02 (45 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE_03 (46 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE_04 (47 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE_05 (48 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE_06 (49 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE_07 (50 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE_08 (51 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE_09 (52 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE_10 (53 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE_11 (54 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE_12 (55 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE_13 (56 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE_14 (57 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE_15 (58 | (25 << 8))
+#define MAP_BATTLE_PYRAMID_SQUARE_16 (59 | (25 << 8))
+#define MAP_UNION_ROOM (60 | (25 << 8))
+
+// Map Group 26
+#define MAP_SAFARI_ZONE_NORTHWEST (0 | (26 << 8))
+#define MAP_SAFARI_ZONE_NORTHEAST (1 | (26 << 8))
+#define MAP_SAFARI_ZONE_SOUTHWEST (2 | (26 << 8))
+#define MAP_SAFARI_ZONE_SOUTHEAST (3 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_OUTSIDE_WEST (4 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_LOBBY (5 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_ELEVATOR (6 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR (7 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM (8 | (26 << 8))
+#define MAP_SOUTHERN_ISLAND_EXTERIOR (9 | (26 << 8))
+#define MAP_SOUTHERN_ISLAND_INTERIOR (10 | (26 << 8))
+#define MAP_SAFARI_ZONE_REST_HOUSE (11 | (26 << 8))
+#define MAP_SAFARI_ZONE_EM_1 (12 | (26 << 8))
+#define MAP_SAFARI_ZONE_EM_2 (13 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_OUTSIDE_EAST (14 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_MULTI_BATTLE_ROOM (15 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_CORRIDOR_2 (16 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_TOWER_BATTLE_ROOM_2 (17 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_DOME_LOBBY (18 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_DOME_CORRIDOR (19 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_DOME_PRE_BATTLE_ROOM (20 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_DOME_BATTLE_ROOM (21 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_PALACE_LOBBY (22 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_PALACE_CORRIDOR (23 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_PALACE_BATTLE_ROOM (24 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_LOBBY (25 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_EMPTY_SQUARE (26 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_PYRAMID_TOP (27 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_ARENA_LOBBY (28 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_ARENA_CORRIDOR (29 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_ARENA_BATTLE_ROOM (30 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_FACTORY_LOBBY (31 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_FACTORY_PRE_BATTLE_ROOM (32 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_FACTORY_BATTLE_ROOM (33 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_LOBBY (34 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_CORRIDOR (35 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_THREE_PATH_ROOM (36 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM_1 (37 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM_2 (38 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_PIKE_RANDOM_ROOM_3 (39 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_RANKING_HALL (40 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_LOUNGE_1 (41 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_BATTLE_POINT_EXCHANGE_SERVICE_CORNER (42 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_LOUNGE_2 (43 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_LOUNGE_3 (44 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_LOUNGE_4 (45 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_SCOTTS_HOUSE (46 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_LOUNGE_5 (47 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_LOUNGE_6 (48 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_LOUNGE_7 (49 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_RECEPTION_GATE (50 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_LOUNGE_8 (51 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_LOUNGE_9 (52 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_POKEMON_CENTER_1F (53 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_POKEMON_CENTER_2F (54 | (26 << 8))
+#define MAP_BATTLE_FRONTIER_MART (55 | (26 << 8))
+#define MAP_FARAWAY_ISLAND_ENTRANCE (56 | (26 << 8))
+#define MAP_FARAWAY_ISLAND_INTERIOR (57 | (26 << 8))
+#define MAP_BIRTH_ISLAND_EXTERIOR (58 | (26 << 8))
+#define MAP_BIRTH_ISLAND_HARBOR (59 | (26 << 8))
+#define MAP_TRAINER_HILL_ENTRANCE (60 | (26 << 8))
+#define MAP_TRAINER_HILL_1F (61 | (26 << 8))
+#define MAP_TRAINER_HILL_2F (62 | (26 << 8))
+#define MAP_TRAINER_HILL_3F (63 | (26 << 8))
+#define MAP_TRAINER_HILL_4F (64 | (26 << 8))
+#define MAP_TRAINER_HILL_ROOF (65 | (26 << 8))
+#define MAP_NAVEL_ROCK_EXTERIOR (66 | (26 << 8))
+#define MAP_NAVEL_ROCK_HARBOR (67 | (26 << 8))
+#define MAP_NAVEL_ROCK_ENTRANCE (68 | (26 << 8))
+#define MAP_NAVEL_ROCK_B1F (69 | (26 << 8))
+#define MAP_NAVEL_ROCK_FORK (70 | (26 << 8))
+#define MAP_NAVEL_ROCK_UP_1 (71 | (26 << 8))
+#define MAP_NAVEL_ROCK_UP_2 (72 | (26 << 8))
+#define MAP_NAVEL_ROCK_UP_3 (73 | (26 << 8))
+#define MAP_NAVEL_ROCK_UP_4 (74 | (26 << 8))
+#define MAP_NAVEL_ROCK_TOP (75 | (26 << 8))
+#define MAP_NAVEL_ROCK_DOWN_01 (76 | (26 << 8))
+#define MAP_NAVEL_ROCK_DOWN_02 (77 | (26 << 8))
+#define MAP_NAVEL_ROCK_DOWN_03 (78 | (26 << 8))
+#define MAP_NAVEL_ROCK_DOWN_04 (79 | (26 << 8))
+#define MAP_NAVEL_ROCK_DOWN_05 (80 | (26 << 8))
+#define MAP_NAVEL_ROCK_DOWN_06 (81 | (26 << 8))
+#define MAP_NAVEL_ROCK_DOWN_07 (82 | (26 << 8))
+#define MAP_NAVEL_ROCK_DOWN_08 (83 | (26 << 8))
+#define MAP_NAVEL_ROCK_DOWN_09 (84 | (26 << 8))
+#define MAP_NAVEL_ROCK_DOWN_10 (85 | (26 << 8))
+#define MAP_NAVEL_ROCK_DOWN_11 (86 | (26 << 8))
+#define MAP_NAVEL_ROCK_BOTTOM (87 | (26 << 8))
+#define MAP_TRAINER_HILL_ELEVATOR (88 | (26 << 8))
+
+// Map Group 27
+#define MAP_ROUTE104_PROTOTYPE (0 | (27 << 8))
+#define MAP_ROUTE104_PROTOTYPE_PRETTY_PETAL_FLOWER_SHOP (1 | (27 << 8))
+
+// Map Group 28
+#define MAP_ROUTE109_SEASHORE_HOUSE (0 | (28 << 8))
+
+// Map Group 29
+#define MAP_ROUTE110_TRICK_HOUSE_ENTRANCE (0 | (29 << 8))
+#define MAP_ROUTE110_TRICK_HOUSE_END (1 | (29 << 8))
+#define MAP_ROUTE110_TRICK_HOUSE_CORRIDOR (2 | (29 << 8))
+#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE1 (3 | (29 << 8))
+#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE2 (4 | (29 << 8))
+#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE3 (5 | (29 << 8))
+#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE4 (6 | (29 << 8))
+#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE5 (7 | (29 << 8))
+#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE6 (8 | (29 << 8))
+#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE7 (9 | (29 << 8))
+#define MAP_ROUTE110_TRICK_HOUSE_PUZZLE8 (10 | (29 << 8))
+#define MAP_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE (11 | (29 << 8))
+#define MAP_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE (12 | (29 << 8))
+
+// Map Group 30
+#define MAP_ROUTE113_GLASS_WORKSHOP (0 | (30 << 8))
+
+// Map Group 31
+#define MAP_ROUTE123_BERRY_MASTERS_HOUSE (0 | (31 << 8))
+
+// Map Group 32
+#define MAP_ROUTE119_WEATHER_INSTITUTE_1F (0 | (32 << 8))
+#define MAP_ROUTE119_WEATHER_INSTITUTE_2F (1 | (32 << 8))
+#define MAP_ROUTE119_HOUSE (2 | (32 << 8))
+
+// Map Group 33
+#define MAP_ROUTE124_DIVING_TREASURE_HUNTERS_HOUSE (0 | (33 << 8))
+
+
+#define MAP_NONE (0x7F | (0x7F << 8))
+#define MAP_UNDEFINED (0xFF | (0xFF << 8))
+
+
+#define MAP_GROUP(map) (MAP_##map >> 8)
+#define MAP_NUM(map) (MAP_##map & 0xFF)
+
+#endif // GUARD_CONSTANTS_MAPS_H
diff --git a/include/constants/mauville_man.h b/include/constants/mauville_man.h
new file mode 100644
index 000000000..b00e3a291
--- /dev/null
+++ b/include/constants/mauville_man.h
@@ -0,0 +1,10 @@
+#ifndef GUARD_CONSTANTS_MAUVILLE_MAN_H
+#define GUARD_CONSTANTS_MAUVILLE_MAN_H
+
+#define MAUVILLE_MAN_BARD 0
+#define MAUVILLE_MAN_HIPSTER 1
+#define MAUVILLE_MAN_TRADER 2
+#define MAUVILLE_MAN_STORYTELLER 3
+#define MAUVILLE_MAN_GIDDY 4
+
+#endif // GUARD_CONSTANTS_MAUVILLE_MAN_H
diff --git a/include/constants/moves.h b/include/constants/moves.h
new file mode 100644
index 000000000..f3a3acb90
--- /dev/null
+++ b/include/constants/moves.h
@@ -0,0 +1,362 @@
+#ifndef GUARD_CONSTANTS_MOVES_H
+#define GUARD_CONSTANTS_MOVES_H
+
+#define MOVE_NONE 0
+#define MOVE_POUND 1
+#define MOVE_KARATE_CHOP 2
+#define MOVE_DOUBLE_SLAP 3
+#define MOVE_COMET_PUNCH 4
+#define MOVE_MEGA_PUNCH 5
+#define MOVE_PAY_DAY 6
+#define MOVE_FIRE_PUNCH 7
+#define MOVE_ICE_PUNCH 8
+#define MOVE_THUNDER_PUNCH 9
+#define MOVE_SCRATCH 10
+#define MOVE_VICE_GRIP 11
+#define MOVE_GUILLOTINE 12
+#define MOVE_RAZOR_WIND 13
+#define MOVE_SWORDS_DANCE 14
+#define MOVE_CUT 15
+#define MOVE_GUST 16
+#define MOVE_WING_ATTACK 17
+#define MOVE_WHIRLWIND 18
+#define MOVE_FLY 19
+#define MOVE_BIND 20
+#define MOVE_SLAM 21
+#define MOVE_VINE_WHIP 22
+#define MOVE_STOMP 23
+#define MOVE_DOUBLE_KICK 24
+#define MOVE_MEGA_KICK 25
+#define MOVE_JUMP_KICK 26
+#define MOVE_ROLLING_KICK 27
+#define MOVE_SAND_ATTACK 28
+#define MOVE_HEADBUTT 29
+#define MOVE_HORN_ATTACK 30
+#define MOVE_FURY_ATTACK 31
+#define MOVE_HORN_DRILL 32
+#define MOVE_TACKLE 33
+#define MOVE_BODY_SLAM 34
+#define MOVE_WRAP 35
+#define MOVE_TAKE_DOWN 36
+#define MOVE_THRASH 37
+#define MOVE_DOUBLE_EDGE 38
+#define MOVE_TAIL_WHIP 39
+#define MOVE_POISON_STING 40
+#define MOVE_TWINEEDLE 41
+#define MOVE_PIN_MISSILE 42
+#define MOVE_LEER 43
+#define MOVE_BITE 44
+#define MOVE_GROWL 45
+#define MOVE_ROAR 46
+#define MOVE_SING 47
+#define MOVE_SUPERSONIC 48
+#define MOVE_SONIC_BOOM 49
+#define MOVE_DISABLE 50
+#define MOVE_ACID 51
+#define MOVE_EMBER 52
+#define MOVE_FLAMETHROWER 53
+#define MOVE_MIST 54
+#define MOVE_WATER_GUN 55
+#define MOVE_HYDRO_PUMP 56
+#define MOVE_SURF 57
+#define MOVE_ICE_BEAM 58
+#define MOVE_BLIZZARD 59
+#define MOVE_PSYBEAM 60
+#define MOVE_BUBBLE_BEAM 61
+#define MOVE_AURORA_BEAM 62
+#define MOVE_HYPER_BEAM 63
+#define MOVE_PECK 64
+#define MOVE_DRILL_PECK 65
+#define MOVE_SUBMISSION 66
+#define MOVE_LOW_KICK 67
+#define MOVE_COUNTER 68
+#define MOVE_SEISMIC_TOSS 69
+#define MOVE_STRENGTH 70
+#define MOVE_ABSORB 71
+#define MOVE_MEGA_DRAIN 72
+#define MOVE_LEECH_SEED 73
+#define MOVE_GROWTH 74
+#define MOVE_RAZOR_LEAF 75
+#define MOVE_SOLAR_BEAM 76
+#define MOVE_POISON_POWDER 77
+#define MOVE_STUN_SPORE 78
+#define MOVE_SLEEP_POWDER 79
+#define MOVE_PETAL_DANCE 80
+#define MOVE_STRING_SHOT 81
+#define MOVE_DRAGON_RAGE 82
+#define MOVE_FIRE_SPIN 83
+#define MOVE_THUNDER_SHOCK 84
+#define MOVE_THUNDERBOLT 85
+#define MOVE_THUNDER_WAVE 86
+#define MOVE_THUNDER 87
+#define MOVE_ROCK_THROW 88
+#define MOVE_EARTHQUAKE 89
+#define MOVE_FISSURE 90
+#define MOVE_DIG 91
+#define MOVE_TOXIC 92
+#define MOVE_CONFUSION 93
+#define MOVE_PSYCHIC 94
+#define MOVE_HYPNOSIS 95
+#define MOVE_MEDITATE 96
+#define MOVE_AGILITY 97
+#define MOVE_QUICK_ATTACK 98
+#define MOVE_RAGE 99
+#define MOVE_TELEPORT 100
+#define MOVE_NIGHT_SHADE 101
+#define MOVE_MIMIC 102
+#define MOVE_SCREECH 103
+#define MOVE_DOUBLE_TEAM 104
+#define MOVE_RECOVER 105
+#define MOVE_HARDEN 106
+#define MOVE_MINIMIZE 107
+#define MOVE_SMOKESCREEN 108
+#define MOVE_CONFUSE_RAY 109
+#define MOVE_WITHDRAW 110
+#define MOVE_DEFENSE_CURL 111
+#define MOVE_BARRIER 112
+#define MOVE_LIGHT_SCREEN 113
+#define MOVE_HAZE 114
+#define MOVE_REFLECT 115
+#define MOVE_FOCUS_ENERGY 116
+#define MOVE_BIDE 117
+#define MOVE_METRONOME 118
+#define MOVE_MIRROR_MOVE 119
+#define MOVE_SELF_DESTRUCT 120
+#define MOVE_EGG_BOMB 121
+#define MOVE_LICK 122
+#define MOVE_SMOG 123
+#define MOVE_SLUDGE 124
+#define MOVE_BONE_CLUB 125
+#define MOVE_FIRE_BLAST 126
+#define MOVE_WATERFALL 127
+#define MOVE_CLAMP 128
+#define MOVE_SWIFT 129
+#define MOVE_SKULL_BASH 130
+#define MOVE_SPIKE_CANNON 131
+#define MOVE_CONSTRICT 132
+#define MOVE_AMNESIA 133
+#define MOVE_KINESIS 134
+#define MOVE_SOFT_BOILED 135
+#define MOVE_HI_JUMP_KICK 136
+#define MOVE_GLARE 137
+#define MOVE_DREAM_EATER 138
+#define MOVE_POISON_GAS 139
+#define MOVE_BARRAGE 140
+#define MOVE_LEECH_LIFE 141
+#define MOVE_LOVELY_KISS 142
+#define MOVE_SKY_ATTACK 143
+#define MOVE_TRANSFORM 144
+#define MOVE_BUBBLE 145
+#define MOVE_DIZZY_PUNCH 146
+#define MOVE_SPORE 147
+#define MOVE_FLASH 148
+#define MOVE_PSYWAVE 149
+#define MOVE_SPLASH 150
+#define MOVE_ACID_ARMOR 151
+#define MOVE_CRABHAMMER 152
+#define MOVE_EXPLOSION 153
+#define MOVE_FURY_SWIPES 154
+#define MOVE_BONEMERANG 155
+#define MOVE_REST 156
+#define MOVE_ROCK_SLIDE 157
+#define MOVE_HYPER_FANG 158
+#define MOVE_SHARPEN 159
+#define MOVE_CONVERSION 160
+#define MOVE_TRI_ATTACK 161
+#define MOVE_SUPER_FANG 162
+#define MOVE_SLASH 163
+#define MOVE_SUBSTITUTE 164
+#define MOVE_STRUGGLE 165
+#define MOVE_SKETCH 166
+#define MOVE_TRIPLE_KICK 167
+#define MOVE_THIEF 168
+#define MOVE_SPIDER_WEB 169
+#define MOVE_MIND_READER 170
+#define MOVE_NIGHTMARE 171
+#define MOVE_FLAME_WHEEL 172
+#define MOVE_SNORE 173
+#define MOVE_CURSE 174
+#define MOVE_FLAIL 175
+#define MOVE_CONVERSION_2 176
+#define MOVE_AEROBLAST 177
+#define MOVE_COTTON_SPORE 178
+#define MOVE_REVERSAL 179
+#define MOVE_SPITE 180
+#define MOVE_POWDER_SNOW 181
+#define MOVE_PROTECT 182
+#define MOVE_MACH_PUNCH 183
+#define MOVE_SCARY_FACE 184
+#define MOVE_FAINT_ATTACK 185
+#define MOVE_SWEET_KISS 186
+#define MOVE_BELLY_DRUM 187
+#define MOVE_SLUDGE_BOMB 188
+#define MOVE_MUD_SLAP 189
+#define MOVE_OCTAZOOKA 190
+#define MOVE_SPIKES 191
+#define MOVE_ZAP_CANNON 192
+#define MOVE_FORESIGHT 193
+#define MOVE_DESTINY_BOND 194
+#define MOVE_PERISH_SONG 195
+#define MOVE_ICY_WIND 196
+#define MOVE_DETECT 197
+#define MOVE_BONE_RUSH 198
+#define MOVE_LOCK_ON 199
+#define MOVE_OUTRAGE 200
+#define MOVE_SANDSTORM 201
+#define MOVE_GIGA_DRAIN 202
+#define MOVE_ENDURE 203
+#define MOVE_CHARM 204
+#define MOVE_ROLLOUT 205
+#define MOVE_FALSE_SWIPE 206
+#define MOVE_SWAGGER 207
+#define MOVE_MILK_DRINK 208
+#define MOVE_SPARK 209
+#define MOVE_FURY_CUTTER 210
+#define MOVE_STEEL_WING 211
+#define MOVE_MEAN_LOOK 212
+#define MOVE_ATTRACT 213
+#define MOVE_SLEEP_TALK 214
+#define MOVE_HEAL_BELL 215
+#define MOVE_RETURN 216
+#define MOVE_PRESENT 217
+#define MOVE_FRUSTRATION 218
+#define MOVE_SAFEGUARD 219
+#define MOVE_PAIN_SPLIT 220
+#define MOVE_SACRED_FIRE 221
+#define MOVE_MAGNITUDE 222
+#define MOVE_DYNAMIC_PUNCH 223
+#define MOVE_MEGAHORN 224
+#define MOVE_DRAGON_BREATH 225
+#define MOVE_BATON_PASS 226
+#define MOVE_ENCORE 227
+#define MOVE_PURSUIT 228
+#define MOVE_RAPID_SPIN 229
+#define MOVE_SWEET_SCENT 230
+#define MOVE_IRON_TAIL 231
+#define MOVE_METAL_CLAW 232
+#define MOVE_VITAL_THROW 233
+#define MOVE_MORNING_SUN 234
+#define MOVE_SYNTHESIS 235
+#define MOVE_MOONLIGHT 236
+#define MOVE_HIDDEN_POWER 237
+#define MOVE_CROSS_CHOP 238
+#define MOVE_TWISTER 239
+#define MOVE_RAIN_DANCE 240
+#define MOVE_SUNNY_DAY 241
+#define MOVE_CRUNCH 242
+#define MOVE_MIRROR_COAT 243
+#define MOVE_PSYCH_UP 244
+#define MOVE_EXTREME_SPEED 245
+#define MOVE_ANCIENT_POWER 246
+#define MOVE_SHADOW_BALL 247
+#define MOVE_FUTURE_SIGHT 248
+#define MOVE_ROCK_SMASH 249
+#define MOVE_WHIRLPOOL 250
+#define MOVE_BEAT_UP 251
+#define MOVE_FAKE_OUT 252
+#define MOVE_UPROAR 253
+#define MOVE_STOCKPILE 254
+#define MOVE_SPIT_UP 255
+#define MOVE_SWALLOW 256
+#define MOVE_HEAT_WAVE 257
+#define MOVE_HAIL 258
+#define MOVE_TORMENT 259
+#define MOVE_FLATTER 260
+#define MOVE_WILL_O_WISP 261
+#define MOVE_MEMENTO 262
+#define MOVE_FACADE 263
+#define MOVE_FOCUS_PUNCH 264
+#define MOVE_SMELLING_SALT 265
+#define MOVE_FOLLOW_ME 266
+#define MOVE_NATURE_POWER 267
+#define MOVE_CHARGE 268
+#define MOVE_TAUNT 269
+#define MOVE_HELPING_HAND 270
+#define MOVE_TRICK 271
+#define MOVE_ROLE_PLAY 272
+#define MOVE_WISH 273
+#define MOVE_ASSIST 274
+#define MOVE_INGRAIN 275
+#define MOVE_SUPERPOWER 276
+#define MOVE_MAGIC_COAT 277
+#define MOVE_RECYCLE 278
+#define MOVE_REVENGE 279
+#define MOVE_BRICK_BREAK 280
+#define MOVE_YAWN 281
+#define MOVE_KNOCK_OFF 282
+#define MOVE_ENDEAVOR 283
+#define MOVE_ERUPTION 284
+#define MOVE_SKILL_SWAP 285
+#define MOVE_IMPRISON 286
+#define MOVE_REFRESH 287
+#define MOVE_GRUDGE 288
+#define MOVE_SNATCH 289
+#define MOVE_SECRET_POWER 290
+#define MOVE_DIVE 291
+#define MOVE_ARM_THRUST 292
+#define MOVE_CAMOUFLAGE 293
+#define MOVE_TAIL_GLOW 294
+#define MOVE_LUSTER_PURGE 295
+#define MOVE_MIST_BALL 296
+#define MOVE_FEATHER_DANCE 297
+#define MOVE_TEETER_DANCE 298
+#define MOVE_BLAZE_KICK 299
+#define MOVE_MUD_SPORT 300
+#define MOVE_ICE_BALL 301
+#define MOVE_NEEDLE_ARM 302
+#define MOVE_SLACK_OFF 303
+#define MOVE_HYPER_VOICE 304
+#define MOVE_POISON_FANG 305
+#define MOVE_CRUSH_CLAW 306
+#define MOVE_BLAST_BURN 307
+#define MOVE_HYDRO_CANNON 308
+#define MOVE_METEOR_MASH 309
+#define MOVE_ASTONISH 310
+#define MOVE_WEATHER_BALL 311
+#define MOVE_AROMATHERAPY 312
+#define MOVE_FAKE_TEARS 313
+#define MOVE_AIR_CUTTER 314
+#define MOVE_OVERHEAT 315
+#define MOVE_ODOR_SLEUTH 316
+#define MOVE_ROCK_TOMB 317
+#define MOVE_SILVER_WIND 318
+#define MOVE_METAL_SOUND 319
+#define MOVE_GRASS_WHISTLE 320
+#define MOVE_TICKLE 321
+#define MOVE_COSMIC_POWER 322
+#define MOVE_WATER_SPOUT 323
+#define MOVE_SIGNAL_BEAM 324
+#define MOVE_SHADOW_PUNCH 325
+#define MOVE_EXTRASENSORY 326
+#define MOVE_SKY_UPPERCUT 327
+#define MOVE_SAND_TOMB 328
+#define MOVE_SHEER_COLD 329
+#define MOVE_MUDDY_WATER 330
+#define MOVE_BULLET_SEED 331
+#define MOVE_AERIAL_ACE 332
+#define MOVE_ICICLE_SPEAR 333
+#define MOVE_IRON_DEFENSE 334
+#define MOVE_BLOCK 335
+#define MOVE_HOWL 336
+#define MOVE_DRAGON_CLAW 337
+#define MOVE_FRENZY_PLANT 338
+#define MOVE_BULK_UP 339
+#define MOVE_BOUNCE 340
+#define MOVE_MUD_SHOT 341
+#define MOVE_POISON_TAIL 342
+#define MOVE_COVET 343
+#define MOVE_VOLT_TACKLE 344
+#define MOVE_MAGICAL_LEAF 345
+#define MOVE_WATER_SPORT 346
+#define MOVE_CALM_MIND 347
+#define MOVE_LEAF_BLADE 348
+#define MOVE_DRAGON_DANCE 349
+#define MOVE_ROCK_BLAST 350
+#define MOVE_SHOCK_WAVE 351
+#define MOVE_WATER_PULSE 352
+#define MOVE_DOOM_DESIRE 353
+#define MOVE_PSYCHO_BOOST 354
+
+#define LAST_MOVE_INDEX MOVE_PSYCHO_BOOST
+
+#endif // GUARD_CONSTANTS_MOVES_H
diff --git a/include/constants/songs.h b/include/constants/songs.h
new file mode 100644
index 000000000..2e3adcbbf
--- /dev/null
+++ b/include/constants/songs.h
@@ -0,0 +1,465 @@
+#ifndef GUARD_CONSTANTS_SONGS_H
+#define GUARD_CONSTANTS_SONGS_H
+
+#define SE_STOP 0
+#define SE_KAIFUKU 1
+#define SE_PC_LOGON 2
+#define SE_PC_OFF 3
+#define SE_PC_ON 4
+#define SE_SELECT 5
+#define SE_WIN_OPEN 6
+#define SE_WALL_HIT 7
+#define SE_DOOR 8
+#define SE_KAIDAN 9
+#define SE_DANSA 10
+#define SE_JITENSYA 11
+#define SE_KOUKA_L 12
+#define SE_KOUKA_M 13
+#define SE_KOUKA_H 14
+#define SE_BOWA2 15
+#define SE_POKE_DEAD 16
+#define SE_NIGERU 17
+#define SE_JIDO_DOA 18
+#define SE_NAMINORI 19
+#define SE_BAN 20
+#define SE_PIN 21
+#define SE_BOO 22
+#define SE_BOWA 23
+#define SE_JYUNI 24
+#define SE_A 25
+#define SE_I 26
+#define SE_U 27
+#define SE_E 28
+#define SE_O 29
+#define SE_N 30
+#define SE_SEIKAI 31
+#define SE_HAZURE 32
+#define SE_EXP 33
+#define SE_JITE_PYOKO 34
+#define SE_MU_PACHI 35
+#define SE_TK_KASYA 36
+#define SE_FU_ZAKU 37
+#define SE_FU_ZAKU2 38
+#define SE_FU_ZUZUZU 39
+#define SE_RU_GASHIN 40
+#define SE_RU_GASYAN 41
+#define SE_RU_BARI 42
+#define SE_RU_HYUU 43
+#define SE_KI_GASYAN 44
+#define SE_TK_WARPIN 45
+#define SE_TK_WARPOUT 46
+#define SE_TU_SAA 47
+#define SE_HI_TURUN 48
+#define SE_TRACK_MOVE 49
+#define SE_TRACK_STOP 50
+#define SE_TRACK_HAIK 51
+#define SE_TRACK_DOOR 52
+#define SE_MOTER 53
+#define SE_CARD 54
+#define SE_SAVE 55
+#define SE_KON 56
+#define SE_KON2 57
+#define SE_KON3 58
+#define SE_KON4 59
+#define SE_SUIKOMU 60
+#define SE_NAGERU 61
+#define SE_TOY_C 62
+#define SE_TOY_D 63
+#define SE_TOY_E 64
+#define SE_TOY_F 65
+#define SE_TOY_G 66
+#define SE_TOY_A 67
+#define SE_TOY_B 68
+#define SE_TOY_C1 69
+#define SE_MIZU 70
+#define SE_HASHI 71
+#define SE_DAUGI 72
+#define SE_PINPON 73
+#define SE_FUUSEN1 74
+#define SE_FUUSEN2 75
+#define SE_FUUSEN3 76
+#define SE_TOY_KABE 77
+#define SE_TOY_DANGO 78
+#define SE_DOKU 79
+#define SE_ESUKA 80
+#define SE_T_AME 81
+#define SE_T_AME_E 82
+#define SE_T_OOAME 83
+#define SE_T_OOAME_E 84
+#define SE_T_KOAME 85
+#define SE_T_KOAME_E 86
+#define SE_T_KAMI 87
+#define SE_T_KAMI2 88
+#define SE_ELEBETA 89
+#define SE_HINSI 90
+#define SE_EXPMAX 91
+#define SE_TAMAKORO 92
+#define SE_TAMAKORO_E 93
+#define SE_BASABASA 94
+#define SE_REGI 95
+#define SE_C_GAJI 96
+#define SE_C_MAKU_U 97
+#define SE_C_MAKU_D 98
+#define SE_C_PASI 99
+#define SE_C_SYU 100
+#define SE_C_PIKON 101
+#define SE_REAPOKE 102
+#define SE_OP_BASYU 103
+#define SE_BT_START 104
+#define SE_DENDOU 105
+#define SE_JIHANKI 106
+#define SE_TAMA 107
+#define SE_Z_SCROLL 108
+#define SE_Z_PAGE 109
+#define SE_PN_ON 110
+#define SE_PN_OFF 111
+#define SE_Z_SEARCH 112
+#define SE_TAMAGO 113
+#define SE_TB_START 114
+#define SE_TB_KON 115
+#define SE_TB_KARA 116
+#define SE_BIDORO 117
+#define SE_W085 118
+#define SE_W085B 119
+#define SE_W231 120
+#define SE_W171 121
+#define SE_W233 122
+#define SE_W233B 123
+#define SE_W145 124
+#define SE_W145B 125
+#define SE_W145C 126
+#define SE_W240 127
+#define SE_W015 128
+#define SE_W081 129
+#define SE_W081B 130
+#define SE_W088 131
+#define SE_W016 132
+#define SE_W016B 133
+#define SE_W003 134
+#define SE_W104 135
+#define SE_W013 136
+#define SE_W196 137
+#define SE_W086 138
+#define SE_W004 139
+#define SE_W025 140
+#define SE_W025B 141
+#define SE_W152 142
+#define SE_W026 143
+#define SE_W172 144
+#define SE_W172B 145
+#define SE_W053 146
+#define SE_W007 147
+#define SE_W092 148
+#define SE_W221 149
+#define SE_W221B 150
+#define SE_W052 151
+#define SE_W036 152
+#define SE_W059 153
+#define SE_W059B 154
+#define SE_W010 155
+#define SE_W011 156
+#define SE_W017 157
+#define SE_W019 158
+#define SE_W028 159
+#define SE_W013B 160
+#define SE_W044 161
+#define SE_W029 162
+#define SE_W057 163
+#define SE_W056 164
+#define SE_W250 165
+#define SE_W030 166
+#define SE_W039 167
+#define SE_W054 168
+#define SE_W077 169
+#define SE_W020 170
+#define SE_W082 171
+#define SE_W047 172
+#define SE_W195 173
+#define SE_W006 174
+#define SE_W091 175
+#define SE_W146 176
+#define SE_W120 177
+#define SE_W153 178
+#define SE_W071B 179
+#define SE_W071 180
+#define SE_W103 181
+#define SE_W062 182
+#define SE_W062B 183
+#define SE_W048 184
+#define SE_W187 185
+#define SE_W118 186
+#define SE_W155 187
+#define SE_W122 188
+#define SE_W060 189
+#define SE_W185 190
+#define SE_W014 191
+#define SE_W043 192
+#define SE_W207 193
+#define SE_W207B 194
+#define SE_W215 195
+#define SE_W109 196
+#define SE_W173 197
+#define SE_W280 198
+#define SE_W202 199
+#define SE_W060B 200
+#define SE_W076 201
+#define SE_W080 202
+#define SE_W100 203
+#define SE_W107 204
+#define SE_W166 205
+#define SE_W129 206
+#define SE_W115 207
+#define SE_W112 208
+#define SE_W197 209
+#define SE_W199 210
+#define SE_W236 211
+#define SE_W204 212
+#define SE_W268 213
+#define SE_W070 214
+#define SE_W063 215
+#define SE_W127 216
+#define SE_W179 217
+#define SE_W151 218
+#define SE_W201 219
+#define SE_W161 220
+#define SE_W161B 221
+#define SE_W227 222
+#define SE_W227B 223
+#define SE_W226 224
+#define SE_W208 225
+#define SE_W213 226
+#define SE_W213B 227
+#define SE_W234 228
+#define SE_W260 229
+#define SE_W328 230
+#define SE_W320 231
+#define SE_W255 232
+#define SE_W291 233
+#define SE_W089 234
+#define SE_W239 235
+#define SE_W230 236
+#define SE_W281 237
+#define SE_W327 238
+#define SE_W287 239
+#define SE_W257 240
+#define SE_W253 241
+#define SE_W258 242
+#define SE_W322 243
+#define SE_W298 244
+#define SE_W287B 245
+#define SE_W114 246
+#define SE_W063B 247
+#define BGM_STOP 349
+#define BGM_TETSUJI 350
+#define BGM_FIELD13 351
+#define BGM_KACHI22 352
+#define BGM_KACHI2 353
+#define BGM_KACHI3 354
+#define BGM_KACHI5 355
+#define BGM_PCC 356
+#define BGM_NIBI 357
+#define BGM_SUIKUN 358
+#define BGM_DOORO1 359
+#define BGM_DOORO_X1 360
+#define BGM_DOORO_X3 361
+#define BGM_MACHI_S2 362
+#define BGM_MACHI_S4 363
+#define BGM_GIM 364
+#define BGM_NAMINORI 365
+#define BGM_DAN01 366
+#define BGM_FANFA1 367
+#define BGM_ME_ASA 368
+#define BGM_ME_BACHI 369
+#define BGM_FANFA4 370
+#define BGM_FANFA5 371
+#define BGM_ME_WAZA 372
+#define BGM_BIJYUTU 373
+#define BGM_DOORO_X4 374
+#define BGM_FUNE_KAN 375
+#define BGM_ME_SHINKA 376
+#define BGM_SHINKA 377
+#define BGM_ME_WASURE 378
+#define BGM_SYOUJOEYE 379
+#define BGM_BOYEYE 380
+#define BGM_DAN02 381
+#define BGM_MACHI_S3 382
+#define BGM_ODAMAKI 383
+#define BGM_B_TOWER 384
+#define BGM_SWIMEYE 385
+#define BGM_DAN03 386
+#define BGM_ME_KINOMI 387
+#define BGM_ME_TAMA 388
+#define BGM_ME_B_BIG 389
+#define BGM_ME_B_SMALL 390
+#define BGM_ME_ZANNEN 391
+#define BGM_BD_TIME 392
+#define BGM_TEST1 393
+#define BGM_TEST2 394
+#define BGM_TEST3 395
+#define BGM_TEST4 396
+#define BGM_TEST 397
+#define BGM_GOMACHI0 398
+#define BGM_GOTOWN 399
+#define BGM_POKECEN 400
+#define BGM_NEXTROAD 401
+#define BGM_GRANROAD 402
+#define BGM_CYCLING 403
+#define BGM_FRIENDLY 404
+#define BGM_MISHIRO 405
+#define BGM_TOZAN 406
+#define BGM_GIRLEYE 407
+#define BGM_MINAMO 408
+#define BGM_ASHROAD 409
+#define BGM_EVENT0 410
+#define BGM_DEEPDEEP 411
+#define BGM_KACHI1 412
+#define BGM_TITLE3 413
+#define BGM_DEMO1 414
+#define BGM_GIRL_SUP 415
+#define BGM_HAGESHII 416
+#define BGM_KAKKOII 417
+#define BGM_KAZANBAI 418
+#define BGM_AQA_0 419
+#define BGM_TSURETEK 420
+#define BGM_BOY_SUP 421
+#define BGM_RAINBOW 422
+#define BGM_AYASII 423
+#define BGM_KACHI4 424
+#define BGM_ROPEWAY 425
+#define BGM_CASINO 426
+#define BGM_HIGHTOWN 427
+#define BGM_SAFARI 428
+#define BGM_C_ROAD 429
+#define BGM_AJITO 430
+#define BGM_M_BOAT 431
+#define BGM_M_DUNGON 432
+#define BGM_FINECITY 433
+#define BGM_MACHUPI 434
+#define BGM_P_SCHOOL 435
+#define BGM_DENDOU 436
+#define BGM_TONEKUSA 437
+#define BGM_MABOROSI 438
+#define BGM_CON_FAN 439
+#define BGM_CONTEST0 440
+#define BGM_MGM0 441
+#define BGM_T_BATTLE 442
+#define BGM_OOAME 443
+#define BGM_HIDERI 444
+#define BGM_RUNECITY 445
+#define BGM_CON_K 446
+#define BGM_EIKOU_R 447
+#define BGM_KARAKURI 448
+#define BGM_HUTAGO 449
+#define BGM_SITENNOU 450
+#define BGM_YAMA_EYE 451
+#define BGM_CONLOBBY 452
+#define BGM_INTER_V 453
+#define BGM_DAIGO 454
+#define BGM_THANKFOR 455
+#define BGM_END 456
+#define BGM_BATTLE_FRONTIER 457
+#define BGM_BATTLE_ARENA 458
+#define BGM_ME_BATTLE_POINTS 459
+#define BGM_ME_MATCH_CALL 460
+#define BGM_BATTLE_PYRAMID 461
+#define BGM_BATTLE_PYRAMID_SUMMIT 462
+#define BGM_BATTLE_PALACE 463
+#define BGM_FANFA_RAYQUAZA 464
+#define BGM_BATTLE_TOWER 465
+#define BGM_ME_BATTLE_SYMBOL 466
+#define BGM_BATTLE_DOME_TOURNAMENT 467
+#define BGM_BATTLE_PIKE 468
+#define BGM_BATTLE_FACTORY 469
+#define BGM_BATTLE_LEGENDARY 470
+#define BGM_BATTLE_FRONTIER_BRAIN 471
+#define BGM_BATTLE_MEW 472
+#define BGM_BATTLE_DOME 473
+#define BGM_BATTLE27 474
+#define BGM_BATTLE31 475
+#define BGM_BATTLE20 476
+#define BGM_BATTLE32 477
+#define BGM_BATTLE33 478
+#define BGM_BATTLE36 479
+#define BGM_BATTLE34 480
+#define BGM_BATTLE35 481
+#define BGM_BATTLE38 482
+#define BGM_BATTLE30 483
+#define BGM_FRLG_FOLLOW_ME 484
+#define BGM_FRLG_GAMECORNER 485
+#define BGM_FRLG_ROCKET_HIDEOUT 486
+#define BGM_FRLG_GYM 487
+#define BGM_FRLG_JIGGLYPUFF 488
+#define BGM_FRLG_OPENING 489
+#define BGM_FRLG_TITLE 490
+#define BGM_FRLG_CINNABAR_ISLAND 491
+#define BGM_FRLG_LAVENDER_TOWN 492
+#define BGM_FRLG_HEALING_TEST 493
+#define BGM_FRLG_BICYCLE 494
+#define BGM_FRLG_SUSPICIOUS_EYE 495
+#define BGM_FRLG_GIRL_EYE 496
+#define BGM_FRLG_BOY_EYE 497
+#define BGM_FRLG_CONGRATULATIONS_HALL_OF_FAME 498
+#define BGM_FRLG_VIRIDIAN_FOREST 499
+#define BGM_FRLG_MT_MOON 500
+#define BGM_FRLG_POKEMON_MANSION 501
+#define BGM_FRLG_CREDITS 502
+#define BGM_FRLG_ROUTE_1 503
+#define BGM_FRLG_ROUTE_24 504
+#define BGM_FRLG_ROUTE_3 505
+#define BGM_FRLG_ROUTE_11 506
+#define BGM_FRLG_INDIGO_PLATEAU 507
+#define BGM_FRLG_BATTLE_LEADER 508
+#define BGM_FRLG_BATTLE_TRAINER 509
+#define BGM_FRLG_BATTLE_WILD_POKEMON 510
+#define BGM_FRLG_BATTLE_CHAMPION 511
+#define BGM_FRLG_PALLET_TOWN 512
+#define BGM_FRLG_OAK_LAB 513
+#define BGM_FRLG_PROF_OAK 514
+#define BGM_FRLG_POKEMON_CENTER 515
+#define BGM_FRLG_SS_ANNE 516
+#define BGM_FRLG_SURF 517
+#define BGM_FRLG_POKEMON_TOWER 518
+#define BGM_FRLG_SILPH 519
+#define BGM_FRLG_CERULEAN_CITY 520
+#define BGM_FRLG_CELADON_CITY 521
+#define BGM_FRLG_KACHI_TRAINER 522
+#define BGM_FRLG_KACHI_WILD_POKEMON 523
+#define BGM_FRLG_KACHI_LEADER 524
+#define BGM_FRLG_VERMILION_CITY 525
+#define BGM_FRLG_VIRIDIAN_CITY 526
+#define BGM_FRLG_RIVAL 527
+#define BGM_FRLG_RIVAL_POSTBATTLE 528
+#define BGM_FRLG_ME_POKEDEX_EVAL 529
+#define BGM_FRLG_ME_KEYITEM 530
+#define BGM_FRLG_FANFA_POKEMON_CAUGHT 531
+#define BGM_FRLG_FANFA_TRAINERCARD_PHOTO 532
+#define BGM_FRLG_GAMEFREAK_LOGO 533
+#define BGM_FRLG_CAUGHT_POKEMON 534
+#define BGM_FRLG_GAME_EXPLANATION_START 535
+#define BGM_FRLG_GAME_EXPLANATION_MIDDLE 536
+#define BGM_FRLG_GAME_EXPLANATION_END 537
+#define BGM_FRLG_POKEMON_JUMP 538
+#define BGM_FRLG_UNION_ROOM 539
+#define BGM_FRLG_POKEMON_NETWORK_CENTER 540
+#define BGM_FRLG_MYSTERY_GIFT 541
+#define BGM_FRLG_DODRIO_BERRY_PICK 542
+#define BGM_FRLG_MT_EMBER 543
+#define BGM_FRLG_TEACHY_TV_EPISODE 544
+#define BGM_FRLG_SEVII_ISLANDS 545
+#define BGM_FRLG_TANOBY_RUINS 546
+#define BGM_FRLG_ISLAND_ONE 547
+#define BGM_FRLG_ISLAND_FOUR 548
+#define BGM_FRLG_ISLAND_SIX 549
+#define BGM_FRLG_FLUTE 550
+#define BGM_FRLG_BATTLE_DEOXYS 551
+#define BGM_FRLG_BATTLE_MEWTWO 552
+#define BGM_FRLG_BATTLE_LEGENDARY 553
+#define BGM_FRLG_LEADER_EYE 554
+#define BGM_FRLG_DEOXYS_EYE 555
+#define BGM_FRLG_TRAINER_TOWER 556
+#define BGM_FRLG_HALL_OF_FAME_PALLET_TOWN 557
+#define BGM_FRLG_TEACHY_TV 558
+
+#define BGM_ROUTE_118 0x7FFF // What is this for?
+
+#endif // GUARD_CONSTANTS_SONGS_H
diff --git a/include/constants/species.h b/include/constants/species.h
new file mode 100644
index 000000000..f698ada14
--- /dev/null
+++ b/include/constants/species.h
@@ -0,0 +1,450 @@
+#ifndef GUARD_CONSTANTS_SPECIES_H
+#define GUARD_CONSTANTS_SPECIES_H
+
+#define SPECIES_NONE 0
+#define SPECIES_BULBASAUR 1
+#define SPECIES_IVYSAUR 2
+#define SPECIES_VENUSAUR 3
+#define SPECIES_CHARMANDER 4
+#define SPECIES_CHARMELEON 5
+#define SPECIES_CHARIZARD 6
+#define SPECIES_SQUIRTLE 7
+#define SPECIES_WARTORTLE 8
+#define SPECIES_BLASTOISE 9
+#define SPECIES_CATERPIE 10
+#define SPECIES_METAPOD 11
+#define SPECIES_BUTTERFREE 12
+#define SPECIES_WEEDLE 13
+#define SPECIES_KAKUNA 14
+#define SPECIES_BEEDRILL 15
+#define SPECIES_PIDGEY 16
+#define SPECIES_PIDGEOTTO 17
+#define SPECIES_PIDGEOT 18
+#define SPECIES_RATTATA 19
+#define SPECIES_RATICATE 20
+#define SPECIES_SPEAROW 21
+#define SPECIES_FEAROW 22
+#define SPECIES_EKANS 23
+#define SPECIES_ARBOK 24
+#define SPECIES_PIKACHU 25
+#define SPECIES_RAICHU 26
+#define SPECIES_SANDSHREW 27
+#define SPECIES_SANDSLASH 28
+#define SPECIES_NIDORAN_F 29
+#define SPECIES_NIDORINA 30
+#define SPECIES_NIDOQUEEN 31
+#define SPECIES_NIDORAN_M 32
+#define SPECIES_NIDORINO 33
+#define SPECIES_NIDOKING 34
+#define SPECIES_CLEFAIRY 35
+#define SPECIES_CLEFABLE 36
+#define SPECIES_VULPIX 37
+#define SPECIES_NINETALES 38
+#define SPECIES_JIGGLYPUFF 39
+#define SPECIES_WIGGLYTUFF 40
+#define SPECIES_ZUBAT 41
+#define SPECIES_GOLBAT 42
+#define SPECIES_ODDISH 43
+#define SPECIES_GLOOM 44
+#define SPECIES_VILEPLUME 45
+#define SPECIES_PARAS 46
+#define SPECIES_PARASECT 47
+#define SPECIES_VENONAT 48
+#define SPECIES_VENOMOTH 49
+#define SPECIES_DIGLETT 50
+#define SPECIES_DUGTRIO 51
+#define SPECIES_MEOWTH 52
+#define SPECIES_PERSIAN 53
+#define SPECIES_PSYDUCK 54
+#define SPECIES_GOLDUCK 55
+#define SPECIES_MANKEY 56
+#define SPECIES_PRIMEAPE 57
+#define SPECIES_GROWLITHE 58
+#define SPECIES_ARCANINE 59
+#define SPECIES_POLIWAG 60
+#define SPECIES_POLIWHIRL 61
+#define SPECIES_POLIWRATH 62
+#define SPECIES_ABRA 63
+#define SPECIES_KADABRA 64
+#define SPECIES_ALAKAZAM 65
+#define SPECIES_MACHOP 66
+#define SPECIES_MACHOKE 67
+#define SPECIES_MACHAMP 68
+#define SPECIES_BELLSPROUT 69
+#define SPECIES_WEEPINBELL 70
+#define SPECIES_VICTREEBEL 71
+#define SPECIES_TENTACOOL 72
+#define SPECIES_TENTACRUEL 73
+#define SPECIES_GEODUDE 74
+#define SPECIES_GRAVELER 75
+#define SPECIES_GOLEM 76
+#define SPECIES_PONYTA 77
+#define SPECIES_RAPIDASH 78
+#define SPECIES_SLOWPOKE 79
+#define SPECIES_SLOWBRO 80
+#define SPECIES_MAGNEMITE 81
+#define SPECIES_MAGNETON 82
+#define SPECIES_FARFETCHD 83
+#define SPECIES_DODUO 84
+#define SPECIES_DODRIO 85
+#define SPECIES_SEEL 86
+#define SPECIES_DEWGONG 87
+#define SPECIES_GRIMER 88
+#define SPECIES_MUK 89
+#define SPECIES_SHELLDER 90
+#define SPECIES_CLOYSTER 91
+#define SPECIES_GASTLY 92
+#define SPECIES_HAUNTER 93
+#define SPECIES_GENGAR 94
+#define SPECIES_ONIX 95
+#define SPECIES_DROWZEE 96
+#define SPECIES_HYPNO 97
+#define SPECIES_KRABBY 98
+#define SPECIES_KINGLER 99
+#define SPECIES_VOLTORB 100
+#define SPECIES_ELECTRODE 101
+#define SPECIES_EXEGGCUTE 102
+#define SPECIES_EXEGGUTOR 103
+#define SPECIES_CUBONE 104
+#define SPECIES_MAROWAK 105
+#define SPECIES_HITMONLEE 106
+#define SPECIES_HITMONCHAN 107
+#define SPECIES_LICKITUNG 108
+#define SPECIES_KOFFING 109
+#define SPECIES_WEEZING 110
+#define SPECIES_RHYHORN 111
+#define SPECIES_RHYDON 112
+#define SPECIES_CHANSEY 113
+#define SPECIES_TANGELA 114
+#define SPECIES_KANGASKHAN 115
+#define SPECIES_HORSEA 116
+#define SPECIES_SEADRA 117
+#define SPECIES_GOLDEEN 118
+#define SPECIES_SEAKING 119
+#define SPECIES_STARYU 120
+#define SPECIES_STARMIE 121
+#define SPECIES_MR_MIME 122
+#define SPECIES_SCYTHER 123
+#define SPECIES_JYNX 124
+#define SPECIES_ELECTABUZZ 125
+#define SPECIES_MAGMAR 126
+#define SPECIES_PINSIR 127
+#define SPECIES_TAUROS 128
+#define SPECIES_MAGIKARP 129
+#define SPECIES_GYARADOS 130
+#define SPECIES_LAPRAS 131
+#define SPECIES_DITTO 132
+#define SPECIES_EEVEE 133
+#define SPECIES_VAPOREON 134
+#define SPECIES_JOLTEON 135
+#define SPECIES_FLAREON 136
+#define SPECIES_PORYGON 137
+#define SPECIES_OMANYTE 138
+#define SPECIES_OMASTAR 139
+#define SPECIES_KABUTO 140
+#define SPECIES_KABUTOPS 141
+#define SPECIES_AERODACTYL 142
+#define SPECIES_SNORLAX 143
+#define SPECIES_ARTICUNO 144
+#define SPECIES_ZAPDOS 145
+#define SPECIES_MOLTRES 146
+#define SPECIES_DRATINI 147
+#define SPECIES_DRAGONAIR 148
+#define SPECIES_DRAGONITE 149
+#define SPECIES_MEWTWO 150
+#define SPECIES_MEW 151
+#define SPECIES_CHIKORITA 152
+#define SPECIES_BAYLEEF 153
+#define SPECIES_MEGANIUM 154
+#define SPECIES_CYNDAQUIL 155
+#define SPECIES_QUILAVA 156
+#define SPECIES_TYPHLOSION 157
+#define SPECIES_TOTODILE 158
+#define SPECIES_CROCONAW 159
+#define SPECIES_FERALIGATR 160
+#define SPECIES_SENTRET 161
+#define SPECIES_FURRET 162
+#define SPECIES_HOOTHOOT 163
+#define SPECIES_NOCTOWL 164
+#define SPECIES_LEDYBA 165
+#define SPECIES_LEDIAN 166
+#define SPECIES_SPINARAK 167
+#define SPECIES_ARIADOS 168
+#define SPECIES_CROBAT 169
+#define SPECIES_CHINCHOU 170
+#define SPECIES_LANTURN 171
+#define SPECIES_PICHU 172
+#define SPECIES_CLEFFA 173
+#define SPECIES_IGGLYBUFF 174
+#define SPECIES_TOGEPI 175
+#define SPECIES_TOGETIC 176
+#define SPECIES_NATU 177
+#define SPECIES_XATU 178
+#define SPECIES_MAREEP 179
+#define SPECIES_FLAAFFY 180
+#define SPECIES_AMPHAROS 181
+#define SPECIES_BELLOSSOM 182
+#define SPECIES_MARILL 183
+#define SPECIES_AZUMARILL 184
+#define SPECIES_SUDOWOODO 185
+#define SPECIES_POLITOED 186
+#define SPECIES_HOPPIP 187
+#define SPECIES_SKIPLOOM 188
+#define SPECIES_JUMPLUFF 189
+#define SPECIES_AIPOM 190
+#define SPECIES_SUNKERN 191
+#define SPECIES_SUNFLORA 192
+#define SPECIES_YANMA 193
+#define SPECIES_WOOPER 194
+#define SPECIES_QUAGSIRE 195
+#define SPECIES_ESPEON 196
+#define SPECIES_UMBREON 197
+#define SPECIES_MURKROW 198
+#define SPECIES_SLOWKING 199
+#define SPECIES_MISDREAVUS 200
+#define SPECIES_UNOWN 201
+#define SPECIES_WOBBUFFET 202
+#define SPECIES_GIRAFARIG 203
+#define SPECIES_PINECO 204
+#define SPECIES_FORRETRESS 205
+#define SPECIES_DUNSPARCE 206
+#define SPECIES_GLIGAR 207
+#define SPECIES_STEELIX 208
+#define SPECIES_SNUBBULL 209
+#define SPECIES_GRANBULL 210
+#define SPECIES_QWILFISH 211
+#define SPECIES_SCIZOR 212
+#define SPECIES_SHUCKLE 213
+#define SPECIES_HERACROSS 214
+#define SPECIES_SNEASEL 215
+#define SPECIES_TEDDIURSA 216
+#define SPECIES_URSARING 217
+#define SPECIES_SLUGMA 218
+#define SPECIES_MAGCARGO 219
+#define SPECIES_SWINUB 220
+#define SPECIES_PILOSWINE 221
+#define SPECIES_CORSOLA 222
+#define SPECIES_REMORAID 223
+#define SPECIES_OCTILLERY 224
+#define SPECIES_DELIBIRD 225
+#define SPECIES_MANTINE 226
+#define SPECIES_SKARMORY 227
+#define SPECIES_HOUNDOUR 228
+#define SPECIES_HOUNDOOM 229
+#define SPECIES_KINGDRA 230
+#define SPECIES_PHANPY 231
+#define SPECIES_DONPHAN 232
+#define SPECIES_PORYGON2 233
+#define SPECIES_STANTLER 234
+#define SPECIES_SMEARGLE 235
+#define SPECIES_TYROGUE 236
+#define SPECIES_HITMONTOP 237
+#define SPECIES_SMOOCHUM 238
+#define SPECIES_ELEKID 239
+#define SPECIES_MAGBY 240
+#define SPECIES_MILTANK 241
+#define SPECIES_BLISSEY 242
+#define SPECIES_RAIKOU 243
+#define SPECIES_ENTEI 244
+#define SPECIES_SUICUNE 245
+#define SPECIES_LARVITAR 246
+#define SPECIES_PUPITAR 247
+#define SPECIES_TYRANITAR 248
+#define SPECIES_LUGIA 249
+#define SPECIES_HO_OH 250
+#define SPECIES_CELEBI 251
+
+#define SPECIES_OLD_UNOWN_B 252
+#define SPECIES_OLD_UNOWN_C 253
+#define SPECIES_OLD_UNOWN_D 254
+#define SPECIES_OLD_UNOWN_E 255
+#define SPECIES_OLD_UNOWN_F 256
+#define SPECIES_OLD_UNOWN_G 257
+#define SPECIES_OLD_UNOWN_H 258
+#define SPECIES_OLD_UNOWN_I 259
+#define SPECIES_OLD_UNOWN_J 260
+#define SPECIES_OLD_UNOWN_K 261
+#define SPECIES_OLD_UNOWN_L 262
+#define SPECIES_OLD_UNOWN_M 263
+#define SPECIES_OLD_UNOWN_N 264
+#define SPECIES_OLD_UNOWN_O 265
+#define SPECIES_OLD_UNOWN_P 266
+#define SPECIES_OLD_UNOWN_Q 267
+#define SPECIES_OLD_UNOWN_R 268
+#define SPECIES_OLD_UNOWN_S 269
+#define SPECIES_OLD_UNOWN_T 270
+#define SPECIES_OLD_UNOWN_U 271
+#define SPECIES_OLD_UNOWN_V 272
+#define SPECIES_OLD_UNOWN_W 273
+#define SPECIES_OLD_UNOWN_X 274
+#define SPECIES_OLD_UNOWN_Y 275
+#define SPECIES_OLD_UNOWN_Z 276
+
+#define SPECIES_TREECKO 277
+#define SPECIES_GROVYLE 278
+#define SPECIES_SCEPTILE 279
+#define SPECIES_TORCHIC 280
+#define SPECIES_COMBUSKEN 281
+#define SPECIES_BLAZIKEN 282
+#define SPECIES_MUDKIP 283
+#define SPECIES_MARSHTOMP 284
+#define SPECIES_SWAMPERT 285
+#define SPECIES_POOCHYENA 286
+#define SPECIES_MIGHTYENA 287
+#define SPECIES_ZIGZAGOON 288
+#define SPECIES_LINOONE 289
+#define SPECIES_WURMPLE 290
+#define SPECIES_SILCOON 291
+#define SPECIES_BEAUTIFLY 292
+#define SPECIES_CASCOON 293
+#define SPECIES_DUSTOX 294
+#define SPECIES_LOTAD 295
+#define SPECIES_LOMBRE 296
+#define SPECIES_LUDICOLO 297
+#define SPECIES_SEEDOT 298
+#define SPECIES_NUZLEAF 299
+#define SPECIES_SHIFTRY 300
+#define SPECIES_NINCADA 301
+#define SPECIES_NINJASK 302
+#define SPECIES_SHEDINJA 303
+#define SPECIES_TAILLOW 304
+#define SPECIES_SWELLOW 305
+#define SPECIES_SHROOMISH 306
+#define SPECIES_BRELOOM 307
+#define SPECIES_SPINDA 308
+#define SPECIES_WINGULL 309
+#define SPECIES_PELIPPER 310
+#define SPECIES_SURSKIT 311
+#define SPECIES_MASQUERAIN 312
+#define SPECIES_WAILMER 313
+#define SPECIES_WAILORD 314
+#define SPECIES_SKITTY 315
+#define SPECIES_DELCATTY 316
+#define SPECIES_KECLEON 317
+#define SPECIES_BALTOY 318
+#define SPECIES_CLAYDOL 319
+#define SPECIES_NOSEPASS 320
+#define SPECIES_TORKOAL 321
+#define SPECIES_SABLEYE 322
+#define SPECIES_BARBOACH 323
+#define SPECIES_WHISCASH 324
+#define SPECIES_LUVDISC 325
+#define SPECIES_CORPHISH 326
+#define SPECIES_CRAWDAUNT 327
+#define SPECIES_FEEBAS 328
+#define SPECIES_MILOTIC 329
+#define SPECIES_CARVANHA 330
+#define SPECIES_SHARPEDO 331
+#define SPECIES_TRAPINCH 332
+#define SPECIES_VIBRAVA 333
+#define SPECIES_FLYGON 334
+#define SPECIES_MAKUHITA 335
+#define SPECIES_HARIYAMA 336
+#define SPECIES_ELECTRIKE 337
+#define SPECIES_MANECTRIC 338
+#define SPECIES_NUMEL 339
+#define SPECIES_CAMERUPT 340
+#define SPECIES_SPHEAL 341
+#define SPECIES_SEALEO 342
+#define SPECIES_WALREIN 343
+#define SPECIES_CACNEA 344
+#define SPECIES_CACTURNE 345
+#define SPECIES_SNORUNT 346
+#define SPECIES_GLALIE 347
+#define SPECIES_LUNATONE 348
+#define SPECIES_SOLROCK 349
+#define SPECIES_AZURILL 350
+#define SPECIES_SPOINK 351
+#define SPECIES_GRUMPIG 352
+#define SPECIES_PLUSLE 353
+#define SPECIES_MINUN 354
+#define SPECIES_MAWILE 355
+#define SPECIES_MEDITITE 356
+#define SPECIES_MEDICHAM 357
+#define SPECIES_SWABLU 358
+#define SPECIES_ALTARIA 359
+#define SPECIES_WYNAUT 360
+#define SPECIES_DUSKULL 361
+#define SPECIES_DUSCLOPS 362
+#define SPECIES_ROSELIA 363
+#define SPECIES_SLAKOTH 364
+#define SPECIES_VIGOROTH 365
+#define SPECIES_SLAKING 366
+#define SPECIES_GULPIN 367
+#define SPECIES_SWALOT 368
+#define SPECIES_TROPIUS 369
+#define SPECIES_WHISMUR 370
+#define SPECIES_LOUDRED 371
+#define SPECIES_EXPLOUD 372
+#define SPECIES_CLAMPERL 373
+#define SPECIES_HUNTAIL 374
+#define SPECIES_GOREBYSS 375
+#define SPECIES_ABSOL 376
+#define SPECIES_SHUPPET 377
+#define SPECIES_BANETTE 378
+#define SPECIES_SEVIPER 379
+#define SPECIES_ZANGOOSE 380
+#define SPECIES_RELICANTH 381
+#define SPECIES_ARON 382
+#define SPECIES_LAIRON 383
+#define SPECIES_AGGRON 384
+#define SPECIES_CASTFORM 385
+#define SPECIES_VOLBEAT 386
+#define SPECIES_ILLUMISE 387
+#define SPECIES_LILEEP 388
+#define SPECIES_CRADILY 389
+#define SPECIES_ANORITH 390
+#define SPECIES_ARMALDO 391
+#define SPECIES_RALTS 392
+#define SPECIES_KIRLIA 393
+#define SPECIES_GARDEVOIR 394
+#define SPECIES_BAGON 395
+#define SPECIES_SHELGON 396
+#define SPECIES_SALAMENCE 397
+#define SPECIES_BELDUM 398
+#define SPECIES_METANG 399
+#define SPECIES_METAGROSS 400
+#define SPECIES_REGIROCK 401
+#define SPECIES_REGICE 402
+#define SPECIES_REGISTEEL 403
+#define SPECIES_KYOGRE 404
+#define SPECIES_GROUDON 405
+#define SPECIES_RAYQUAZA 406
+#define SPECIES_LATIAS 407
+#define SPECIES_LATIOS 408
+#define SPECIES_JIRACHI 409
+#define SPECIES_DEOXYS 410
+#define SPECIES_CHIMECHO 411
+#define SPECIES_EGG 412
+
+#define SPECIES_UNOWN_B 413
+#define SPECIES_UNOWN_C 414
+#define SPECIES_UNOWN_D 415
+#define SPECIES_UNOWN_E 416
+#define SPECIES_UNOWN_F 417
+#define SPECIES_UNOWN_G 418
+#define SPECIES_UNOWN_H 419
+#define SPECIES_UNOWN_I 420
+#define SPECIES_UNOWN_J 421
+#define SPECIES_UNOWN_K 422
+#define SPECIES_UNOWN_L 423
+#define SPECIES_UNOWN_M 424
+#define SPECIES_UNOWN_N 425
+#define SPECIES_UNOWN_O 426
+#define SPECIES_UNOWN_P 427
+#define SPECIES_UNOWN_Q 428
+#define SPECIES_UNOWN_R 429
+#define SPECIES_UNOWN_S 430
+#define SPECIES_UNOWN_T 431
+#define SPECIES_UNOWN_U 432
+#define SPECIES_UNOWN_V 433
+#define SPECIES_UNOWN_W 434
+#define SPECIES_UNOWN_X 435
+#define SPECIES_UNOWN_Y 436
+#define SPECIES_UNOWN_Z 437
+#define SPECIES_UNOWN_EMARK 438
+#define SPECIES_UNOWN_QMARK 439
+
+#define NUM_SPECIES SPECIES_EGG
+
+#endif // GUARD_CONSTANTS_SPECIES_H
diff --git a/include/constants/trainers.h b/include/constants/trainers.h
new file mode 100644
index 000000000..48d4f081e
--- /dev/null
+++ b/include/constants/trainers.h
@@ -0,0 +1,1129 @@
+#ifndef GUARD_TRAINERS_H
+#define GUARD_TRAINERS_H
+
+#define TRAINER_NONE 0
+#define TRAINER_SAWYER_1 1
+#define TRAINER_GRUNT_1 2
+#define TRAINER_GRUNT_2 3
+#define TRAINER_GRUNT_3 4
+#define TRAINER_GRUNT_4 5
+#define TRAINER_GRUNT_5 6
+#define TRAINER_GRUNT_6 7
+#define TRAINER_GRUNT_7 8
+#define TRAINER_GABRIELLE_1 9
+#define TRAINER_GRUNT_8 10
+#define TRAINER_MARCEL 11
+#define TRAINER_ALBERTO 12
+#define TRAINER_ED 13
+#define TRAINER_GRUNT_9 14
+#define TRAINER_DECLAN 15
+#define TRAINER_GRUNT_10 16
+#define TRAINER_GRUNT_11 17
+#define TRAINER_GRUNT_12 18
+#define TRAINER_GRUNT_13 19
+#define TRAINER_GRUNT_14 20
+#define TRAINER_GRUNT_15 21
+#define TRAINER_GRUNT_16 22
+#define TRAINER_GRUNT_17 23
+#define TRAINER_GRUNT_18 24
+#define TRAINER_GRUNT_19 25
+#define TRAINER_GRUNT_20 26
+#define TRAINER_GRUNT_21 27
+#define TRAINER_GRUNT_22 28
+#define TRAINER_FREDRICK 29
+#define TRAINER_MATT 30
+#define TRAINER_ZANDER 31
+#define TRAINER_SHELLY_1 32
+#define TRAINER_SHELLY_2 33
+#define TRAINER_ARCHIE 34
+#define TRAINER_LEAH 35
+#define TRAINER_DAISY 36
+#define TRAINER_ROSE_1 37
+#define TRAINER_FELIX 38
+#define TRAINER_VIOLET 39
+#define TRAINER_ROSE_2 40
+#define TRAINER_ROSE_3 41
+#define TRAINER_ROSE_4 42
+#define TRAINER_ROSE_5 43
+#define TRAINER_DUSTY_1 44
+#define TRAINER_CHIP 45
+#define TRAINER_FOSTER 46
+#define TRAINER_DUSTY_2 47
+#define TRAINER_DUSTY_3 48
+#define TRAINER_DUSTY_4 49
+#define TRAINER_DUSTY_5 50
+#define TRAINER_GABBY_AND_TY_1 51
+#define TRAINER_GABBY_AND_TY_2 52
+#define TRAINER_GABBY_AND_TY_3 53
+#define TRAINER_GABBY_AND_TY_4 54
+#define TRAINER_GABBY_AND_TY_5 55
+#define TRAINER_GABBY_AND_TY_6 56
+#define TRAINER_LOLA_1 57
+#define TRAINER_AUSTINA 58
+#define TRAINER_GWEN 59
+#define TRAINER_LOLA_2 60
+#define TRAINER_LOLA_3 61
+#define TRAINER_LOLA_4 62
+#define TRAINER_LOLA_5 63
+#define TRAINER_RICKY_1 64
+#define TRAINER_SIMON 65
+#define TRAINER_CHARLIE 66
+#define TRAINER_RICKY_2 67
+#define TRAINER_RICKY_3 68
+#define TRAINER_RICKY_4 69
+#define TRAINER_RICKY_5 70
+#define TRAINER_RANDALL 71
+#define TRAINER_PARKER 72
+#define TRAINER_GEORGE 73
+#define TRAINER_BERKE 74
+#define TRAINER_BRAXTON 75
+#define TRAINER_VINCENT 76
+#define TRAINER_LEROY 77
+#define TRAINER_WILTON_1 78
+#define TRAINER_EDGAR 79
+#define TRAINER_ALBERT 80
+#define TRAINER_SAMUEL 81
+#define TRAINER_VITO 82
+#define TRAINER_OWEN 83
+#define TRAINER_WILTON_2 84
+#define TRAINER_WILTON_3 85
+#define TRAINER_WILTON_4 86
+#define TRAINER_WILTON_5 87
+#define TRAINER_WARREN 88
+#define TRAINER_MARY 89
+#define TRAINER_ALEXIA 90
+#define TRAINER_JODY 91
+#define TRAINER_WENDY 92
+#define TRAINER_KEIRA 93
+#define TRAINER_BROOKE_1 94
+#define TRAINER_JENNIFER 95
+#define TRAINER_HOPE 96
+#define TRAINER_SHANNON 97
+#define TRAINER_MICHELLE 98
+#define TRAINER_CAROLINE 99
+#define TRAINER_JULIE 100
+#define TRAINER_BROOKE_2 101
+#define TRAINER_BROOKE_3 102
+#define TRAINER_BROOKE_4 103
+#define TRAINER_BROOKE_5 104
+#define TRAINER_PATRICIA 105
+#define TRAINER_KINDRA 106
+#define TRAINER_TAMMY 107
+#define TRAINER_VALERIE_1 108
+#define TRAINER_TASHA 109
+#define TRAINER_VALERIE_2 110
+#define TRAINER_VALERIE_3 111
+#define TRAINER_VALERIE_4 112
+#define TRAINER_VALERIE_5 113
+#define TRAINER_CINDY_1 114
+#define TRAINER_DAPHNE 115
+#define TRAINER_GRUNT_23 116
+#define TRAINER_CINDY_2 117
+#define TRAINER_BRIANNA 118
+#define TRAINER_NAOMI 119
+#define TRAINER_CINDY_3 120
+#define TRAINER_CINDY_4 121
+#define TRAINER_CINDY_5 122
+#define TRAINER_CINDY_6 123
+#define TRAINER_MELISSA 124
+#define TRAINER_SHEILA 125
+#define TRAINER_SHIRLEY 126
+#define TRAINER_JESSICA_1 127
+#define TRAINER_CONNIE 128
+#define TRAINER_BRIDGET 129
+#define TRAINER_OLIVIA 130
+#define TRAINER_TIFFANY 131
+#define TRAINER_JESSICA_2 132
+#define TRAINER_JESSICA_3 133
+#define TRAINER_JESSICA_4 134
+#define TRAINER_JESSICA_5 135
+#define TRAINER_WINSTON_1 136
+#define TRAINER_MOLLIE 137
+#define TRAINER_GARRET 138
+#define TRAINER_WINSTON_2 139
+#define TRAINER_WINSTON_3 140
+#define TRAINER_WINSTON_4 141
+#define TRAINER_WINSTON_5 142
+#define TRAINER_STEVE_1 143
+#define TRAINER_THALIA_1 144
+#define TRAINER_MARK 145
+#define TRAINER_GRUNT_24 146
+#define TRAINER_STEVE_2 147
+#define TRAINER_STEVE_3 148
+#define TRAINER_STEVE_4 149
+#define TRAINER_STEVE_5 150
+#define TRAINER_LUIS 151
+#define TRAINER_DOMINIK 152
+#define TRAINER_DOUGLAS 153
+#define TRAINER_DARRIN 154
+#define TRAINER_TONY_1 155
+#define TRAINER_JEROME 156
+#define TRAINER_MATTHEW 157
+#define TRAINER_DAVID 158
+#define TRAINER_SPENCER 159
+#define TRAINER_ROLAND 160
+#define TRAINER_NOLEN 161
+#define TRAINER_STAN 162
+#define TRAINER_BARRY 163
+#define TRAINER_DEAN 164
+#define TRAINER_RODNEY 165
+#define TRAINER_RICHARD 166
+#define TRAINER_HERMAN 167
+#define TRAINER_SANTIAGO 168
+#define TRAINER_GILBERT 169
+#define TRAINER_FRANKLIN 170
+#define TRAINER_KEVIN 171
+#define TRAINER_JACK 172
+#define TRAINER_DUDLEY 173
+#define TRAINER_CHAD 174
+#define TRAINER_TONY_2 175
+#define TRAINER_TONY_3 176
+#define TRAINER_TONY_4 177
+#define TRAINER_TONY_5 178
+#define TRAINER_TAKAO 179
+#define TRAINER_HITOSHI 180
+#define TRAINER_KIYO 181
+#define TRAINER_KOICHI 182
+#define TRAINER_NOB_1 183
+#define TRAINER_NOB_2 184
+#define TRAINER_NOB_3 185
+#define TRAINER_NOB_4 186
+#define TRAINER_NOB_5 187
+#define TRAINER_YUJI 188
+#define TRAINER_DAISUKE 189
+#define TRAINER_ATSUSHI 190
+#define TRAINER_KIRK 191
+#define TRAINER_GRUNT_25 192
+#define TRAINER_GRUNT_26 193
+#define TRAINER_SHAWN 194
+#define TRAINER_FERNANDO_1 195
+#define TRAINER_DALTON_1 196
+#define TRAINER_DALTON_2 197
+#define TRAINER_DALTON_3 198
+#define TRAINER_DALTON_4 199
+#define TRAINER_DALTON_5 200
+#define TRAINER_COLE 201
+#define TRAINER_JEFF 202
+#define TRAINER_AXLE 203
+#define TRAINER_JACE 204
+#define TRAINER_KEEGAN 205
+#define TRAINER_BERNIE_1 206
+#define TRAINER_BERNIE_2 207
+#define TRAINER_BERNIE_3 208
+#define TRAINER_BERNIE_4 209
+#define TRAINER_BERNIE_5 210
+#define TRAINER_DREW 211
+#define TRAINER_BEAU 212
+#define TRAINER_LARRY 213
+#define TRAINER_SHANE 214
+#define TRAINER_JUSTIN 215
+#define TRAINER_ETHAN_1 216
+#define TRAINER_AUTUMN 217
+#define TRAINER_TRAVIS 218
+#define TRAINER_ETHAN_2 219
+#define TRAINER_ETHAN_3 220
+#define TRAINER_ETHAN_4 221
+#define TRAINER_ETHAN_5 222
+#define TRAINER_BRENT 223
+#define TRAINER_DONALD 224
+#define TRAINER_TAYLOR 225
+#define TRAINER_JEFFREY_1 226
+#define TRAINER_DEREK 227
+#define TRAINER_JEFFREY_2 228
+#define TRAINER_JEFFREY_3 229
+#define TRAINER_JEFFREY_4 230
+#define TRAINER_JEFFREY_5 231
+#define TRAINER_EDWARD 232
+#define TRAINER_PRESTON 233
+#define TRAINER_VIRGIL 234
+#define TRAINER_BLAKE 235
+#define TRAINER_WILLIAM 236
+#define TRAINER_JOSHUA 237
+#define TRAINER_CAMERON_1 238
+#define TRAINER_CAMERON_2 239
+#define TRAINER_CAMERON_3 240
+#define TRAINER_CAMERON_4 241
+#define TRAINER_CAMERON_5 242
+#define TRAINER_JACLYN 243
+#define TRAINER_HANNAH 244
+#define TRAINER_SAMANTHA 245
+#define TRAINER_MAURA 246
+#define TRAINER_KAYLA 247
+#define TRAINER_ALEXIS 248
+#define TRAINER_JACKI_1 249
+#define TRAINER_JACKI_2 250
+#define TRAINER_JACKI_3 251
+#define TRAINER_JACKI_4 252
+#define TRAINER_JACKI_5 253
+#define TRAINER_WALTER_1 254
+#define TRAINER_MICAH 255
+#define TRAINER_THOMAS 256
+#define TRAINER_WALTER_2 257
+#define TRAINER_WALTER_3 258
+#define TRAINER_WALTER_4 259
+#define TRAINER_WALTER_5 260
+#define TRAINER_SIDNEY 261
+#define TRAINER_PHOEBE 262
+#define TRAINER_GLACIA 263
+#define TRAINER_DRAKE 264
+#define TRAINER_ROXANNE_1 265
+#define TRAINER_BRAWLY_1 266
+#define TRAINER_WATTSON_1 267
+#define TRAINER_FLANNERY_1 268
+#define TRAINER_NORMAN_1 269
+#define TRAINER_WINONA_1 270
+#define TRAINER_TATE_AND_LIZA_1 271
+#define TRAINER_JUAN_1 272
+#define TRAINER_JERRY_1 273
+#define TRAINER_TED 274
+#define TRAINER_PAUL 275
+#define TRAINER_JERRY_2 276
+#define TRAINER_JERRY_3 277
+#define TRAINER_JERRY_4 278
+#define TRAINER_JERRY_5 279
+#define TRAINER_KAREN_1 280
+#define TRAINER_GEORGIA 281
+#define TRAINER_KAREN_2 282
+#define TRAINER_KAREN_3 283
+#define TRAINER_KAREN_4 284
+#define TRAINER_KAREN_5 285
+#define TRAINER_KATE_AND_JOY 286
+#define TRAINER_ANNA_AND_MEG_1 287
+#define TRAINER_ANNA_AND_MEG_2 288
+#define TRAINER_ANNA_AND_MEG_3 289
+#define TRAINER_ANNA_AND_MEG_4 290
+#define TRAINER_ANNA_AND_MEG_5 291
+#define TRAINER_VICTOR 292
+#define TRAINER_MIGUEL_1 293
+#define TRAINER_COLTON 294
+#define TRAINER_MIGUEL_2 295
+#define TRAINER_MIGUEL_3 296
+#define TRAINER_MIGUEL_4 297
+#define TRAINER_MIGUEL_5 298
+#define TRAINER_VICTORIA 299
+#define TRAINER_VANESSA 300
+#define TRAINER_BETHANY 301
+#define TRAINER_ISABEL_1 302
+#define TRAINER_ISABEL_2 303
+#define TRAINER_ISABEL_3 304
+#define TRAINER_ISABEL_4 305
+#define TRAINER_ISABEL_5 306
+#define TRAINER_TIMOTHY_1 307
+#define TRAINER_TIMOTHY_2 308
+#define TRAINER_TIMOTHY_3 309
+#define TRAINER_TIMOTHY_4 310
+#define TRAINER_TIMOTHY_5 311
+#define TRAINER_VICKY 312
+#define TRAINER_SHELBY_1 313
+#define TRAINER_SHELBY_2 314
+#define TRAINER_SHELBY_3 315
+#define TRAINER_SHELBY_4 316
+#define TRAINER_SHELBY_5 317
+#define TRAINER_CALVIN_1 318
+#define TRAINER_BILLY 319
+#define TRAINER_JOSH 320
+#define TRAINER_TOMMY 321
+#define TRAINER_JOEY 322
+#define TRAINER_BEN 323
+#define TRAINER_QUINCY 324
+#define TRAINER_KATELYNN 325
+#define TRAINER_JAYLEN 326
+#define TRAINER_DILLON 327
+#define TRAINER_CALVIN_2 328
+#define TRAINER_CALVIN_3 329
+#define TRAINER_CALVIN_4 330
+#define TRAINER_CALVIN_5 331
+#define TRAINER_EDDIE 332
+#define TRAINER_ALLEN 333
+#define TRAINER_TIMMY 334
+#define TRAINER_WALLACE 335
+#define TRAINER_ANDREW 336
+#define TRAINER_IVAN 337
+#define TRAINER_CLAUDE 338
+#define TRAINER_ELLIOT_1 339
+#define TRAINER_NED 340
+#define TRAINER_DALE 341
+#define TRAINER_NOLAN 342
+#define TRAINER_BARNY 343
+#define TRAINER_WADE 344
+#define TRAINER_CARTER 345
+#define TRAINER_ELLIOT_2 346
+#define TRAINER_ELLIOT_3 347
+#define TRAINER_ELLIOT_4 348
+#define TRAINER_ELLIOT_5 349
+#define TRAINER_RONALD 350
+#define TRAINER_JACOB 351
+#define TRAINER_ANTHONY 352
+#define TRAINER_BENJAMIN_1 353
+#define TRAINER_BENJAMIN_2 354
+#define TRAINER_BENJAMIN_3 355
+#define TRAINER_BENJAMIN_4 356
+#define TRAINER_BENJAMIN_5 357
+#define TRAINER_ABIGAIL_1 358
+#define TRAINER_JASMINE 359
+#define TRAINER_ABIGAIL_2 360
+#define TRAINER_ABIGAIL_3 361
+#define TRAINER_ABIGAIL_4 362
+#define TRAINER_ABIGAIL_5 363
+#define TRAINER_DYLAN_1 364
+#define TRAINER_DYLAN_2 365
+#define TRAINER_DYLAN_3 366
+#define TRAINER_DYLAN_4 367
+#define TRAINER_DYLAN_5 368
+#define TRAINER_MARIA_1 369
+#define TRAINER_MARIA_2 370
+#define TRAINER_MARIA_3 371
+#define TRAINER_MARIA_4 372
+#define TRAINER_MARIA_5 373
+#define TRAINER_CAMDEN 374
+#define TRAINER_DEMETRIUS 375
+#define TRAINER_ISAIAH_1 376
+#define TRAINER_PABLO_1 377
+#define TRAINER_CHASE 378
+#define TRAINER_ISAIAH_2 379
+#define TRAINER_ISAIAH_3 380
+#define TRAINER_ISAIAH_4 381
+#define TRAINER_ISAIAH_5 382
+#define TRAINER_ISOBEL 383
+#define TRAINER_DONNY 384
+#define TRAINER_TALIA 385
+#define TRAINER_KATELYN_1 386
+#define TRAINER_ALLISON 387
+#define TRAINER_KATELYN_2 388
+#define TRAINER_KATELYN_3 389
+#define TRAINER_KATELYN_4 390
+#define TRAINER_KATELYN_5 391
+#define TRAINER_NICOLAS_1 392
+#define TRAINER_NICOLAS_2 393
+#define TRAINER_NICOLAS_3 394
+#define TRAINER_NICOLAS_4 395
+#define TRAINER_NICOLAS_5 396
+#define TRAINER_AARON 397
+#define TRAINER_PERRY 398
+#define TRAINER_HUGH 399
+#define TRAINER_PHIL 400
+#define TRAINER_JARED 401
+#define TRAINER_HUMBERTO 402
+#define TRAINER_PRESLEY 403
+#define TRAINER_EDWARDO 404
+#define TRAINER_COLIN 405
+#define TRAINER_ROBERT_1 406
+#define TRAINER_BENNY 407
+#define TRAINER_CHESTER 408
+#define TRAINER_ROBERT_2 409
+#define TRAINER_ROBERT_3 410
+#define TRAINER_ROBERT_4 411
+#define TRAINER_ROBERT_5 412
+#define TRAINER_ALEX 413
+#define TRAINER_BECK 414
+#define TRAINER_YASU 415
+#define TRAINER_TAKASHI 416
+#define TRAINER_DIANNE 417
+#define TRAINER_JANI 418
+#define TRAINER_LAO_1 419
+#define TRAINER_LUNG 420
+#define TRAINER_LAO_2 421
+#define TRAINER_LAO_3 422
+#define TRAINER_LAO_4 423
+#define TRAINER_LAO_5 424
+#define TRAINER_JOCELYN 425
+#define TRAINER_LAURA 426
+#define TRAINER_CYNDY_1 427
+#define TRAINER_CORA 428
+#define TRAINER_PAULA 429
+#define TRAINER_CYNDY_2 430
+#define TRAINER_CYNDY_3 431
+#define TRAINER_CYNDY_4 432
+#define TRAINER_CYNDY_5 433
+#define TRAINER_MADELINE_1 434
+#define TRAINER_CLARISSA 435
+#define TRAINER_ANGELICA 436
+#define TRAINER_MADELINE_2 437
+#define TRAINER_MADELINE_3 438
+#define TRAINER_MADELINE_4 439
+#define TRAINER_MADELINE_5 440
+#define TRAINER_BEVERLY 441
+#define TRAINER_IMANI 442
+#define TRAINER_KYLA 443
+#define TRAINER_DENISE 444
+#define TRAINER_BETH 445
+#define TRAINER_TARA 446
+#define TRAINER_MISSY 447
+#define TRAINER_ALICE 448
+#define TRAINER_JENNY_1 449
+#define TRAINER_GRACE 450
+#define TRAINER_TANYA 451
+#define TRAINER_SHARON 452
+#define TRAINER_NIKKI 453
+#define TRAINER_BRENDA 454
+#define TRAINER_KATIE 455
+#define TRAINER_SUSIE 456
+#define TRAINER_KARA 457
+#define TRAINER_DANA 458
+#define TRAINER_SIENNA 459
+#define TRAINER_DEBRA 460
+#define TRAINER_LINDA 461
+#define TRAINER_KAYLEE 462
+#define TRAINER_LAUREL 463
+#define TRAINER_CARLEE 464
+#define TRAINER_JENNY_2 465
+#define TRAINER_JENNY_3 466
+#define TRAINER_JENNY_4 467
+#define TRAINER_JENNY_5 468
+#define TRAINER_HEIDI 469
+#define TRAINER_BECKY 470
+#define TRAINER_CAROL 471
+#define TRAINER_NANCY 472
+#define TRAINER_MARTHA 473
+#define TRAINER_DIANA_1 474
+#define TRAINER_CEDRIC 475
+#define TRAINER_IRENE 476
+#define TRAINER_DIANA_2 477
+#define TRAINER_DIANA_3 478
+#define TRAINER_DIANA_4 479
+#define TRAINER_DIANA_5 480
+#define TRAINER_AMY_AND_LIV_1 481
+#define TRAINER_AMY_AND_LIV_2 482
+#define TRAINER_GINA_AND_MIA_1 483
+#define TRAINER_MIU_AND_YUKI 484
+#define TRAINER_AMY_AND_LIV_3 485
+#define TRAINER_GINA_AND_MIA_2 486
+#define TRAINER_AMY_AND_LIV_4 487
+#define TRAINER_AMY_AND_LIV_5 488
+#define TRAINER_AMY_AND_LIV_6 489
+#define TRAINER_HUEY 490
+#define TRAINER_EDMOND 491
+#define TRAINER_ERNEST_1 492
+#define TRAINER_DWAYNE 493
+#define TRAINER_PHILLIP 494
+#define TRAINER_LEONARD 495
+#define TRAINER_DUNCAN 496
+#define TRAINER_ERNEST_2 497
+#define TRAINER_ERNEST_3 498
+#define TRAINER_ERNEST_4 499
+#define TRAINER_ERNEST_5 500
+#define TRAINER_ELI 501
+#define TRAINER_ANNIKA 502
+#define TRAINER_JAZMYN 503
+#define TRAINER_JONAS 504
+#define TRAINER_KAYLEY 505
+#define TRAINER_AURON 506
+#define TRAINER_KELVIN 507
+#define TRAINER_MARLEY 508
+#define TRAINER_REYNA 509
+#define TRAINER_HUDSON 510
+#define TRAINER_CONOR 511
+#define TRAINER_EDWIN_1 512
+#define TRAINER_HECTOR 513
+#define TRAINER_TABITHA_1 514
+#define TRAINER_EDWIN_2 515
+#define TRAINER_EDWIN_3 516
+#define TRAINER_EDWIN_4 517
+#define TRAINER_EDWIN_5 518
+#define TRAINER_WALLY_1 519
+#define TRAINER_BRENDAN_1 520
+#define TRAINER_BRENDAN_2 521
+#define TRAINER_BRENDAN_3 522
+#define TRAINER_BRENDAN_4 523
+#define TRAINER_BRENDAN_5 524
+#define TRAINER_BRENDAN_6 525
+#define TRAINER_BRENDAN_7 526
+#define TRAINER_BRENDAN_8 527
+#define TRAINER_BRENDAN_9 528
+#define TRAINER_MAY_1 529
+#define TRAINER_MAY_2 530
+#define TRAINER_MAY_3 531
+#define TRAINER_MAY_4 532
+#define TRAINER_MAY_5 533
+#define TRAINER_MAY_6 534
+#define TRAINER_MAY_7 535
+#define TRAINER_MAY_8 536
+#define TRAINER_MAY_9 537
+#define TRAINER_ISAAC_1 538
+#define TRAINER_DAVIS 539
+#define TRAINER_MITCHELL 540
+#define TRAINER_ISAAC_2 541
+#define TRAINER_ISAAC_3 542
+#define TRAINER_ISAAC_4 543
+#define TRAINER_ISAAC_5 544
+#define TRAINER_LYDIA_1 545
+#define TRAINER_HALLE 546
+#define TRAINER_GARRISON 547
+#define TRAINER_LYDIA_2 548
+#define TRAINER_LYDIA_3 549
+#define TRAINER_LYDIA_4 550
+#define TRAINER_LYDIA_5 551
+#define TRAINER_JACKSON_1 552
+#define TRAINER_LORENZO 553
+#define TRAINER_SEBASTIAN 554
+#define TRAINER_JACKSON_2 555
+#define TRAINER_JACKSON_3 556
+#define TRAINER_JACKSON_4 557
+#define TRAINER_JACKSON_5 558
+#define TRAINER_CATHERINE_1 559
+#define TRAINER_JENNA 560
+#define TRAINER_SOPHIA 561
+#define TRAINER_CATHERINE_2 562
+#define TRAINER_CATHERINE_3 563
+#define TRAINER_CATHERINE_4 564
+#define TRAINER_CATHERINE_5 565
+#define TRAINER_JULIO 566
+#define TRAINER_GRUNT_27 567
+#define TRAINER_GRUNT_28 568
+#define TRAINER_GRUNT_29 569
+#define TRAINER_GRUNT_30 570
+#define TRAINER_MARC 571
+#define TRAINER_BRENDEN 572
+#define TRAINER_LILITH 573
+#define TRAINER_CRISTIAN 574
+#define TRAINER_SYLVIA 575
+#define TRAINER_LEONARDO 576
+#define TRAINER_ATHENA 577
+#define TRAINER_HARRISON 578
+#define TRAINER_GRUNT_31 579
+#define TRAINER_CLARENCE 580
+#define TRAINER_TERRY 581
+#define TRAINER_NATE 582
+#define TRAINER_KATHLEEN 583
+#define TRAINER_CLIFFORD 584
+#define TRAINER_NICHOLAS 585
+#define TRAINER_GRUNT_32 586
+#define TRAINER_GRUNT_33 587
+#define TRAINER_GRUNT_34 588
+#define TRAINER_GRUNT_35 589
+#define TRAINER_GRUNT_36 590
+#define TRAINER_MACEY 591
+#define TRAINER_BRENDAN_10 592
+#define TRAINER_BRENDAN_11 593
+#define TRAINER_PAXTON 594
+#define TRAINER_ISABELLA 595
+#define TRAINER_GRUNT_37 596
+#define TRAINER_TABITHA_2 597
+#define TRAINER_JONATHAN 598
+#define TRAINER_BRENDAN_12 599
+#define TRAINER_MAY_10 600
+#define TRAINER_MAXIE_1 601
+#define TRAINER_MAXIE_2 602
+#define TRAINER_TIANA 603
+#define TRAINER_HALEY_1 604
+#define TRAINER_JANICE 605
+#define TRAINER_VIVI 606
+#define TRAINER_HALEY_2 607
+#define TRAINER_HALEY_3 608
+#define TRAINER_HALEY_4 609
+#define TRAINER_HALEY_5 610
+#define TRAINER_SALLY 611
+#define TRAINER_ROBIN 612
+#define TRAINER_ANDREA 613
+#define TRAINER_CRISSY 614
+#define TRAINER_RICK 615
+#define TRAINER_LYLE 616
+#define TRAINER_JOSE 617
+#define TRAINER_DOUG 618
+#define TRAINER_GREG 619
+#define TRAINER_KENT 620
+#define TRAINER_JAMES_1 621
+#define TRAINER_JAMES_2 622
+#define TRAINER_JAMES_3 623
+#define TRAINER_JAMES_4 624
+#define TRAINER_JAMES_5 625
+#define TRAINER_BRICE 626
+#define TRAINER_TRENT_1 627
+#define TRAINER_LENNY 628
+#define TRAINER_LUCAS_1 629
+#define TRAINER_ALAN 630
+#define TRAINER_CLARK 631
+#define TRAINER_ERIC 632
+#define TRAINER_LUCAS_2 633
+#define TRAINER_MIKE_1 634
+#define TRAINER_MIKE_2 635
+#define TRAINER_TRENT_2 636
+#define TRAINER_TRENT_3 637
+#define TRAINER_TRENT_4 638
+#define TRAINER_TRENT_5 639
+#define TRAINER_DEZ_AND_LUKE 640
+#define TRAINER_LEA_AND_JED 641
+#define TRAINER_KIRA_AND_DAN_1 642
+#define TRAINER_KIRA_AND_DAN_2 643
+#define TRAINER_KIRA_AND_DAN_3 644
+#define TRAINER_KIRA_AND_DAN_4 645
+#define TRAINER_KIRA_AND_DAN_5 646
+#define TRAINER_JOHANNA 647
+#define TRAINER_GERALD 648
+#define TRAINER_VIVIAN 649
+#define TRAINER_DANIELLE 650
+#define TRAINER_HIDEO 651
+#define TRAINER_KEIGO 652
+#define TRAINER_RILEY 653
+#define TRAINER_FLINT 654
+#define TRAINER_ASHLEY 655
+#define TRAINER_WALLY_2 656
+#define TRAINER_WALLY_3 657
+#define TRAINER_WALLY_4 658
+#define TRAINER_WALLY_5 659
+#define TRAINER_WALLY_6 660
+#define TRAINER_BRENDAN_13 661
+#define TRAINER_BRENDAN_14 662
+#define TRAINER_BRENDAN_15 663
+#define TRAINER_MAY_11 664
+#define TRAINER_MAY_12 665
+#define TRAINER_MAY_13 666
+#define TRAINER_JONAH 667
+#define TRAINER_HENRY 668
+#define TRAINER_ROGER 669
+#define TRAINER_ALEXA 670
+#define TRAINER_RUBEN 671
+#define TRAINER_KOJI_1 672
+#define TRAINER_WAYNE 673
+#define TRAINER_AIDAN 674
+#define TRAINER_REED 675
+#define TRAINER_TISHA 676
+#define TRAINER_TORI_AND_TIA 677
+#define TRAINER_KIM_AND_IRIS 678
+#define TRAINER_TYRA_AND_IVY 679
+#define TRAINER_MEL_AND_PAUL 680
+#define TRAINER_JOHN_AND_JAY_1 681
+#define TRAINER_JOHN_AND_JAY_2 682
+#define TRAINER_JOHN_AND_JAY_3 683
+#define TRAINER_JOHN_AND_JAY_4 684
+#define TRAINER_JOHN_AND_JAY_5 685
+#define TRAINER_RELI_AND_IAN 686
+#define TRAINER_LILA_AND_ROY_1 687
+#define TRAINER_LILA_AND_ROY_2 688
+#define TRAINER_LILA_AND_ROY_3 689
+#define TRAINER_LILA_AND_ROY_4 690
+#define TRAINER_LILA_AND_ROY_5 691
+#define TRAINER_LISA_AND_RAY 692
+#define TRAINER_CHRIS 693
+#define TRAINER_DAWSON 694
+#define TRAINER_SARAH 695
+#define TRAINER_DARIAN 696
+#define TRAINER_HAILEY 697
+#define TRAINER_CHANDLER 698
+#define TRAINER_KALEB 699
+#define TRAINER_JOSEPH 700
+#define TRAINER_ALYSSA 701
+#define TRAINER_MARCOS 702
+#define TRAINER_RHETT 703
+#define TRAINER_TYRON 704
+#define TRAINER_CELINA 705
+#define TRAINER_BIANCA 706
+#define TRAINER_HAYDEN 707
+#define TRAINER_SOPHIE 708
+#define TRAINER_COBY 709
+#define TRAINER_LAWRENCE 710
+#define TRAINER_WYATT 711
+#define TRAINER_ANGELINA 712
+#define TRAINER_KAI 713
+#define TRAINER_CHARLOTTE 714
+#define TRAINER_DEANDRE 715
+#define TRAINER_GRUNT_38 716
+#define TRAINER_GRUNT_39 717
+#define TRAINER_GRUNT_40 718
+#define TRAINER_GRUNT_41 719
+#define TRAINER_GRUNT_42 720
+#define TRAINER_GRUNT_43 721
+#define TRAINER_GRUNT_44 722
+#define TRAINER_GRUNT_45 723
+#define TRAINER_GRUNT_46 724
+#define TRAINER_GRUNT_47 725
+#define TRAINER_GRUNT_48 726
+#define TRAINER_GRUNT_49 727
+#define TRAINER_GRUNT_50 728
+#define TRAINER_GRUNT_51 729
+#define TRAINER_GRUNT_52 730
+#define TRAINER_GRUNT_53 731
+#define TRAINER_TABITHA_3 732
+#define TRAINER_DARCY 733
+#define TRAINER_MAXIE_3 734
+#define TRAINER_PETE 735
+#define TRAINER_ISABELLE 736
+#define TRAINER_ANDRES_1 737
+#define TRAINER_JOSUE 738
+#define TRAINER_CAMRON 739
+#define TRAINER_CORY_1 740
+#define TRAINER_CAROLINA 741
+#define TRAINER_ELIJAH 742
+#define TRAINER_CELIA 743
+#define TRAINER_BRYAN 744
+#define TRAINER_BRANDEN 745
+#define TRAINER_BRYANT 746
+#define TRAINER_SHAYLA 747
+#define TRAINER_KYRA 748
+#define TRAINER_JAIDEN 749
+#define TRAINER_ALIX 750
+#define TRAINER_HELENE 751
+#define TRAINER_MARLENE 752
+#define TRAINER_DEVAN 753
+#define TRAINER_JOHNSON 754
+#define TRAINER_MELINA 755
+#define TRAINER_BRANDI 756
+#define TRAINER_AISHA 757
+#define TRAINER_MAKAYLA 758
+#define TRAINER_FABIAN 759
+#define TRAINER_DAYTON 760
+#define TRAINER_RACHEL 761
+#define TRAINER_LEONEL 762
+#define TRAINER_CALLIE 763
+#define TRAINER_CALE 764
+#define TRAINER_MYLES 765
+#define TRAINER_PAT 766
+#define TRAINER_CRISTIN_1 767
+#define TRAINER_MAY_14 768
+#define TRAINER_MAY_15 769
+#define TRAINER_ROXANNE_2 770
+#define TRAINER_ROXANNE_3 771
+#define TRAINER_ROXANNE_4 772
+#define TRAINER_ROXANNE_5 773
+#define TRAINER_BRAWLY_2 774
+#define TRAINER_BRAWLY_3 775
+#define TRAINER_BRAWLY_4 776
+#define TRAINER_BRAWLY_5 777
+#define TRAINER_WATTSON_2 778
+#define TRAINER_WATTSON_3 779
+#define TRAINER_WATTSON_4 780
+#define TRAINER_WATTSON_5 781
+#define TRAINER_FLANNERY_2 782
+#define TRAINER_FLANNERY_3 783
+#define TRAINER_FLANNERY_4 784
+#define TRAINER_FLANNERY_5 785
+#define TRAINER_NORMAN_2 786
+#define TRAINER_NORMAN_3 787
+#define TRAINER_NORMAN_4 788
+#define TRAINER_NORMAN_5 789
+#define TRAINER_WINONA_2 790
+#define TRAINER_WINONA_3 791
+#define TRAINER_WINONA_4 792
+#define TRAINER_WINONA_5 793
+#define TRAINER_TATE_AND_LIZA_2 794
+#define TRAINER_TATE_AND_LIZA_3 795
+#define TRAINER_TATE_AND_LIZA_4 796
+#define TRAINER_TATE_AND_LIZA_5 797
+#define TRAINER_JUAN_2 798
+#define TRAINER_JUAN_3 799
+#define TRAINER_JUAN_4 800
+#define TRAINER_JUAN_5 801
+#define TRAINER_ANGELO 802
+#define TRAINER_DARIUS 803
+#define TRAINER_STEVEN 804
+#define TRAINER_ANABEL 805
+#define TRAINER_TUCKER 806
+#define TRAINER_SPENSER 807
+#define TRAINER_GRETA 808
+#define TRAINER_NOLAND 809
+#define TRAINER_LUCY 810
+#define TRAINER_BRANDON 811
+#define TRAINER_ANDRES_2 812
+#define TRAINER_ANDRES_3 813
+#define TRAINER_ANDRES_4 814
+#define TRAINER_ANDRES_5 815
+#define TRAINER_CORY_2 816
+#define TRAINER_CORY_3 817
+#define TRAINER_CORY_4 818
+#define TRAINER_CORY_5 819
+#define TRAINER_PABLO_2 820
+#define TRAINER_PABLO_3 821
+#define TRAINER_PABLO_4 822
+#define TRAINER_PABLO_5 823
+#define TRAINER_KOJI_2 824
+#define TRAINER_KOJI_3 825
+#define TRAINER_KOJI_4 826
+#define TRAINER_KOJI_5 827
+#define TRAINER_CRISTIN_2 828
+#define TRAINER_CRISTIN_3 829
+#define TRAINER_CRISTIN_4 830
+#define TRAINER_CRISTIN_5 831
+#define TRAINER_FERNANDO_2 832
+#define TRAINER_FERNANDO_3 833
+#define TRAINER_FERNANDO_4 834
+#define TRAINER_FERNANDO_5 835
+#define TRAINER_SAWYER_2 836
+#define TRAINER_SAWYER_3 837
+#define TRAINER_SAWYER_4 838
+#define TRAINER_SAWYER_5 839
+#define TRAINER_GABRIELLE_2 840
+#define TRAINER_GABRIELLE_3 841
+#define TRAINER_GABRIELLE_4 842
+#define TRAINER_GABRIELLE_5 843
+#define TRAINER_THALIA_2 844
+#define TRAINER_THALIA_3 845
+#define TRAINER_THALIA_4 846
+#define TRAINER_THALIA_5 847
+#define TRAINER_MARIELA 848
+#define TRAINER_ALVARO 849
+#define TRAINER_EVERETT 850
+#define TRAINER_RED 851
+#define TRAINER_LEAF 852
+#define TRAINER_BRENDAN_16 853
+#define TRAINER_MAY_16 854
+
+#define NO_OF_TRAINERS 854
+
+#define TRAINER_PIC_HIKER 0
+#define TRAINER_PIC_AQUA_GRUNT_M 1
+#define TRAINER_PIC_POKEMON_BREEDER_F 2
+#define TRAINER_PIC_COOL_TRAINER_M 3
+#define TRAINER_PIC_BIRD_KEEPER 4
+#define TRAINER_PIC_COLLECTOR 5
+#define TRAINER_PIC_AQUA_GRUNT_F 6
+#define TRAINER_PIC_SWIMMER_M 7
+#define TRAINER_PIC_MAGMA_GRUNT_M 8
+#define TRAINER_PIC_EXPERT_M 9
+#define TRAINER_PIC_AQUA_ADMIN_M 10
+#define TRAINER_PIC_BLACK_BELT 11
+#define TRAINER_PIC_AQUA_ADMIN_F 12
+#define TRAINER_PIC_AQUA_LEADER_ARCHIE 13
+#define TRAINER_PIC_HEX_MANIAC 14
+#define TRAINER_PIC_AROMA_LADY 15
+#define TRAINER_PIC_RUIN_MANIAC 16
+#define TRAINER_PIC_INTERVIEWER 17
+#define TRAINER_PIC_TUBER_F 18
+#define TRAINER_PIC_TUBER_M 19
+#define TRAINER_PIC_COOL_TRAINER_F 20
+#define TRAINER_PIC_LADY 21
+#define TRAINER_PIC_BEAUTY 22
+#define TRAINER_PIC_RICH_BOY 23
+#define TRAINER_PIC_EXPERT_F 24
+#define TRAINER_PIC_POKEMANIAC 25
+#define TRAINER_PIC_MAGMA_GRUNT_F 26
+#define TRAINER_PIC_GUITARIST 27
+#define TRAINER_PIC_KINDLER 28
+#define TRAINER_PIC_CAMPER 29
+#define TRAINER_PIC_PICNICKER 30
+#define TRAINER_PIC_BUG_MANIAC 31
+#define TRAINER_PIC_POKEMON_BREEDER_M 32
+#define TRAINER_PIC_PSYCHIC_M 33
+#define TRAINER_PIC_PSYCHIC_F 34
+#define TRAINER_PIC_GENTLEMAN 35
+#define TRAINER_PIC_ELITE_FOUR_SIDNEY 36
+#define TRAINER_PIC_ELITE_FOUR_PHOEBE 37
+#define TRAINER_PIC_ELITE_FOUR_GLACIA 38
+#define TRAINER_PIC_ELITE_FOUR_DRAKE 39
+#define TRAINER_PIC_LEADER_ROXANNE 40
+#define TRAINER_PIC_LEADER_BRAWLY 41
+#define TRAINER_PIC_LEADER_WATTSON 42
+#define TRAINER_PIC_LEADER_FLANNERY 43
+#define TRAINER_PIC_LEADER_NORMAN 44
+#define TRAINER_PIC_LEADER_WINONA 45
+#define TRAINER_PIC_LEADER_TATE_AND_LIZA 46
+#define TRAINER_PIC_LEADER_JUAN 47
+#define TRAINER_PIC_SCHOOL_KID_M 48
+#define TRAINER_PIC_SCHOOL_KID_F 49
+#define TRAINER_PIC_SR_AND_JR 50
+#define TRAINER_PIC_WINSTRATE_M 51
+#define TRAINER_PIC_WINSTRATE_F 52
+#define TRAINER_PIC_YOUNGSTER 53
+#define TRAINER_PIC_CHAMPION_WALLACE 54
+#define TRAINER_PIC_FISHERMAN 55
+#define TRAINER_PIC_CYCLING_TRIATHLETE_M 56
+#define TRAINER_PIC_CYCLING_TRIATHLETE_F 57
+#define TRAINER_PIC_RUNNING_TRIATHLETE_M 58
+#define TRAINER_PIC_RUNNING_TRIATHLETE_F 59
+#define TRAINER_PIC_SWIMMING_TRIATHLETE_M 60
+#define TRAINER_PIC_SWIMMING_TRIATHLETE_F 61
+#define TRAINER_PIC_DRAGON_TAMER 62
+#define TRAINER_PIC_NINJA_BOY 63
+#define TRAINER_PIC_BATTLE_GIRL 64
+#define TRAINER_PIC_PARASOL_LADY 65
+#define TRAINER_PIC_SWIMMER_F 66
+#define TRAINER_PIC_TWINS 67
+#define TRAINER_PIC_SAILOR 68
+#define TRAINER_PIC_MAGMA_ADMIN 69
+#define TRAINER_PIC_WALLY 70
+#define TRAINER_PIC_BRENDAN 71
+#define TRAINER_PIC_MAY 72
+#define TRAINER_PIC_BUG_CATCHER 73
+#define TRAINER_PIC_POKEMON_RANGER_M 74
+#define TRAINER_PIC_POKEMON_RANGER_F 75
+#define TRAINER_PIC_MAGMA_LEADER_MAXIE 76
+#define TRAINER_PIC_LASS 77
+#define TRAINER_PIC_YOUNG_COUPLE 78
+#define TRAINER_PIC_OLD_COUPLE 79
+#define TRAINER_PIC_SIS_AND_BRO 80
+#define TRAINER_PIC_STEVEN 81
+#define TRAINER_PIC_SALON_MAIDEN_ANABEL 82
+#define TRAINER_PIC_DOME_ACE_TUCKER 83
+#define TRAINER_PIC_PALACE_MAVEN_SPENSER 84
+#define TRAINER_PIC_ARENA_TYCOON_GRETA 85
+#define TRAINER_PIC_FACTORY_HEAD_NOLAND 86
+#define TRAINER_PIC_PIKE_QUEEN_LUCY 87
+#define TRAINER_PIC_PYRAMID_KING_BRANDON 88
+#define TRAINER_PIC_RED 89
+#define TRAINER_PIC_LEAF 90
+#define TRAINER_PIC_RUBY_SAPPHIRE_BRENDAN 91
+#define TRAINER_PIC_RUBY_SAPPHIRE_MAY 92
+
+#define FACILITY_CLASS_HIKER 0x0
+#define FACILITY_CLASS_TEAM_AQUA_1 0x1
+#define FACILITY_CLASS_PKMN_BREEDER_1 0x2
+#define FACILITY_CLASS_COOLTRAINER_1 0x3
+#define FACILITY_CLASS_BIRD_KEEPER 0x4
+#define FACILITY_CLASS_COLLECTOR 0x5
+#define FACILITY_CLASS_TEAM_AQUA_2 0x6
+#define FACILITY_CLASS_SWIMMER_M 0x7
+#define FACILITY_CLASS_TEAM_MAGMA_1 0x8
+#define FACILITY_CLASS_EXPERT_1 0x9
+#define FACILITY_CLASS_BLACK_BELT 0xa
+#define FACILITY_CLASS_AQUA_LEADER 0xb
+#define FACILITY_CLASS_HEX_MANIAC 0xc
+#define FACILITY_CLASS_AROMA_LADY 0xd
+#define FACILITY_CLASS_RUIN_MANIAC 0xe
+#define FACILITY_CLASS_INTERVIEWER 0xf
+#define FACILITY_CLASS_TUBER_1 0x10
+#define FACILITY_CLASS_TUBER_2 0x11
+#define FACILITY_CLASS_COOLTRAINER_2 0x12
+#define FACILITY_CLASS_LADY 0x13
+#define FACILITY_CLASS_BEAUTY 0x14
+#define FACILITY_CLASS_RICH_BOY 0x15
+#define FACILITY_CLASS_EXPERT_2 0x16
+#define FACILITY_CLASS_POKEMANIAC 0x17
+#define FACILITY_CLASS_TEAM_MAGMA_2 0x18
+#define FACILITY_CLASS_GUITARIST 0x19
+#define FACILITY_CLASS_KINDLER 0x1a
+#define FACILITY_CLASS_CAMPER 0x1b
+#define FACILITY_CLASS_PICNICKER 0x1c
+#define FACILITY_CLASS_BUG_MANIAC 0x1d
+#define FACILITY_CLASS_PSYCHIC_1 0x1e
+#define FACILITY_CLASS_PSYCHIC_2 0x1f
+#define FACILITY_CLASS_GENTLEMAN 0x20
+#define FACILITY_CLASS_ELITE_FOUR_1 0x21
+#define FACILITY_CLASS_ELITE_FOUR_2 0x22
+#define FACILITY_CLASS_LEADER_1 0x23
+#define FACILITY_CLASS_LEADER_2 0x24
+#define FACILITY_CLASS_LEADER_3 0x25
+#define FACILITY_CLASS_SCHOOL_KID_1 0x26
+#define FACILITY_CLASS_SCHOOL_KID_2 0x27
+#define FACILITY_CLASS_SR_AND_JR 0x28
+#define FACILITY_CLASS_POKEFAN_1 0x29
+#define FACILITY_CLASS_POKEFAN_2 0x2a
+#define FACILITY_CLASS_YOUNGSTER 0x2b
+#define FACILITY_CLASS_CHAMPION 0x2c
+#define FACILITY_CLASS_FISHERMAN 0x2d
+#define FACILITY_CLASS_TRIATHLETE_1 0x2e
+#define FACILITY_CLASS_TRIATHLETE_2 0x2f
+#define FACILITY_CLASS_TRIATHLETE_3 0x30
+#define FACILITY_CLASS_TRIATHLETE_4 0x31
+#define FACILITY_CLASS_TRIATHLETE_5 0x32
+#define FACILITY_CLASS_TRIATHLETE_6 0x33
+#define FACILITY_CLASS_DRAGON_TAMER 0x34
+#define FACILITY_CLASS_NINJA_BOY 0x35
+#define FACILITY_CLASS_BATTLE_GIRL 0x36
+#define FACILITY_CLASS_PARASOL_LADY 0x37
+#define FACILITY_CLASS_SWIMMER_F 0x38
+#define FACILITY_CLASS_TWINS 0x39
+#define FACILITY_CLASS_SAILOR 0x3a
+#define FACILITY_CLASS_PKMN_TRAINER_1 0x3b
+#define FACILITY_CLASS_PKMN_TRAINER_2 0x3c
+#define FACILITY_CLASS_PKMN_TRAINER_3 0x3d
+#define FACILITY_CLASS_PKMN_TRAINER_4 0x3e
+#define FACILITY_CLASS_PKMN_TRAINER_5 0x3f
+#define FACILITY_CLASS_PKMN_TRAINER_6 0x40
+#define FACILITY_CLASS_PKMN_TRAINER_7 0x41
+#define FACILITY_CLASS_PKMN_BREEDER_2 0x42
+#define FACILITY_CLASS_BUG_CATCHER 0x43
+#define FACILITY_CLASS_PKMN_RANGER_1 0x44
+#define FACILITY_CLASS_PKMN_RANGER_2 0x45
+#define FACILITY_CLASS_MAGMA_LEADER 0x46
+#define FACILITY_CLASS_LASS 0x47
+#define FACILITY_CLASS_YOUNG_COUPLE 0x48
+#define FACILITY_CLASS_OLD_COUPLE 0x49
+#define FACILITY_CLASS_SIS_AND_BRO 0x4a
+#define FACILITY_CLASS_PKMN_TRAINER_8 0x4b
+#define FACILITY_CLASS_SALON_MAIDEN 0x4c
+#define FACILITY_CLASS_DOME_ACE 0x4d
+#define FACILITY_CLASS_PKMN_TRAINER_9 0x4e
+#define FACILITY_CLASS_PKMN_TRAINER_10 0x4f
+#define FACILITY_CLASS_PKMN_TRAINER_11 0x50
+#define FACILITY_CLASS_PKMN_TRAINER_12 0x51
+
+#define TRAINER_CLASS_PKMN_TRAINER_1 0x0
+#define TRAINER_CLASS_PKMN_TRAINER_2 0x1
+#define TRAINER_CLASS_HIKER 0x2
+#define TRAINER_CLASS_TEAM_AQUA 0x3
+#define TRAINER_CLASS_PKMN_BREEDER 0x4
+#define TRAINER_CLASS_COOLTRAINER_1 0x5
+#define TRAINER_CLASS_BIRD_KEEPER 0x6
+#define TRAINER_CLASS_COLLECTOR 0x7
+#define TRAINER_CLASS_SWIMMER_M 0x8
+#define TRAINER_CLASS_TEAM_MAGMA 0x9
+#define TRAINER_CLASS_EXPERT 0xa
+#define TRAINER_CLASS_AQUA_ADMIN 0xb
+#define TRAINER_CLASS_BLACK_BELT 0xc
+#define TRAINER_CLASS_AQUA_LEADER 0xd
+#define TRAINER_CLASS_HEX_MANIAC 0xe
+#define TRAINER_CLASS_AROMA_LADY 0xf
+#define TRAINER_CLASS_RUIN_MANIAC 0x10
+#define TRAINER_CLASS_INTERVIEWER 0x11
+#define TRAINER_CLASS_TUBER_1 0x12
+#define TRAINER_CLASS_TUBER_2 0x13
+#define TRAINER_CLASS_LADY 0x14
+#define TRAINER_CLASS_BEAUTY 0x15
+#define TRAINER_CLASS_RICH_BOY 0x16
+#define TRAINER_CLASS_POKEMANIAC 0x17
+#define TRAINER_CLASS_GUITARIST 0x18
+#define TRAINER_CLASS_KINDLER 0x19
+#define TRAINER_CLASS_CAMPER 0x1a
+#define TRAINER_CLASS_PICNICKER 0x1b
+#define TRAINER_CLASS_BUG_MANIAC 0x1c
+#define TRAINER_CLASS_PSYCHIC 0x1d
+#define TRAINER_CLASS_GENTLEMAN 0x1e
+#define TRAINER_CLASS_ELITE_FOUR 0x1f
+#define TRAINER_CLASS_LEADER 0x20
+#define TRAINER_CLASS_SCHOOL_KID 0x21
+#define TRAINER_CLASS_SR_AND_JR 0x22
+#define TRAINER_CLASS_WINSTRATE 0x23
+#define TRAINER_CLASS_POKEFAN 0x24
+#define TRAINER_CLASS_YOUNGSTER 0x25
+#define TRAINER_CLASS_CHAMPION 0x26
+#define TRAINER_CLASS_FISHERMAN 0x27
+#define TRAINER_CLASS_TRIATHLETE 0x28
+#define TRAINER_CLASS_DRAGON_TAMER 0x29
+#define TRAINER_CLASS_NINJA_BOY 0x2a
+#define TRAINER_CLASS_BATTLE_GIRL 0x2b
+#define TRAINER_CLASS_PARASOL_LADY 0x2c
+#define TRAINER_CLASS_SWIMMER_F 0x2d
+#define TRAINER_CLASS_TWINS 0x2e
+#define TRAINER_CLASS_SAILOR 0x2f
+#define TRAINER_CLASS_COOLTRAINER_2 0x30
+#define TRAINER_CLASS_MAGMA_ADMIN 0x31
+#define TRAINER_CLASS_PKMN_TRAINER_3 0x32
+#define TRAINER_CLASS_BUG_CATCHER 0x33
+#define TRAINER_CLASS_PKMN_RANGER 0x34
+#define TRAINER_CLASS_MAGMA_LEADER 0x35
+#define TRAINER_CLASS_LASS 0x36
+#define TRAINER_CLASS_YOUNG_COUPLE 0x37
+#define TRAINER_CLASS_OLD_COUPLE 0x38
+#define TRAINER_CLASS_SIS_AND_BRO 0x39
+#define TRAINER_CLASS_SALON_MAIDEN 0x3a
+#define TRAINER_CLASS_DOME_ACE 0x3b
+#define TRAINER_CLASS_PALACE_MAVEN 0x3c
+#define TRAINER_CLASS_ARENA_TYCOON 0x3d
+#define TRAINER_CLASS_FACTORY_HEAD 0x3e
+#define TRAINER_CLASS_PIKE_QUEEN 0x3f
+#define TRAINER_CLASS_PYRAMID_KING 0x40
+#define TRAINER_CLASS_PKMN_TRAINER_4 0x41
+
+#define TRAINER_ENCOUNTER_MUSIC_MALE 0 // standard male encounter music
+#define TRAINER_ENCOUNTER_MUSIC_FEMALE 1 // standard female encounter music
+#define TRAINER_ENCOUNTER_MUSIC_GIRL 2 // used for male Tubers and Young Couples too
+#define TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS 3
+#define TRAINER_ENCOUNTER_MUSIC_INTENSE 4
+#define TRAINER_ENCOUNTER_MUSIC_COOL 5
+#define TRAINER_ENCOUNTER_MUSIC_AQUA 6
+#define TRAINER_ENCOUNTER_MUSIC_MAGMA 7
+#define TRAINER_ENCOUNTER_MUSIC_SWIMMER 8
+#define TRAINER_ENCOUNTER_MUSIC_TWINS 9 // used for other trainer classes too
+#define TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR 10
+#define TRAINER_ENCOUNTER_MUSIC_HIKER 11 // used for other trainer classes too
+#define TRAINER_ENCOUNTER_MUSIC_INTERVIEWER 12
+#define TRAINER_ENCOUNTER_MUSIC_RICH 13 // Rich Boys and Gentlemen
+
+#define F_TRAINER_FEMALE (1 << 7)
+
+// All trainer parties specify the IV, level, and species for each Pokémon in the
+// party. Some trainer parties also specify held items and custom moves for each
+// Pokémon.
+#define F_TRAINER_PARTY_CUSTOM_MOVESET (1 << 0)
+#define F_TRAINER_PARTY_HELD_ITEM (1 << 1)
+
+#endif // GUARD_TRAINERS_H
diff --git a/include/constants/vars.h b/include/constants/vars.h
new file mode 100644
index 000000000..6dc8d0ccd
--- /dev/null
+++ b/include/constants/vars.h
@@ -0,0 +1,288 @@
+#ifndef GUARD_CONSTANTS_VARS_H
+#define GUARD_CONSTANTS_VARS_H
+
+#define VAR_0x3F20 0x3F20
+
+#define VAR_0x4000 0x4000
+#define VAR_0x4001 0x4001
+#define VAR_0x4002 0x4002
+#define VAR_0x4003 0x4003
+#define VAR_0x4004 0x4004
+#define VAR_0x4005 0x4005
+#define VAR_0x4006 0x4006
+#define VAR_0x4007 0x4007
+#define VAR_0x4008 0x4008
+#define VAR_0x4009 0x4009
+#define VAR_0x400A 0x400A
+#define VAR_0x400B 0x400B
+#define VAR_0x400C 0x400C
+#define VAR_0x400D 0x400D
+#define VAR_0x400E 0x400E
+#define VAR_0x400F 0x400F
+#define VAR_0x4010 0x4010
+#define VAR_0x4011 0x4011
+#define VAR_0x4012 0x4012
+#define VAR_0x4013 0x4013
+#define VAR_0x4014 0x4014
+#define VAR_0x4015 0x4015
+#define VAR_0x4016 0x4016
+#define VAR_0x4017 0x4017
+#define VAR_0x4018 0x4018
+#define VAR_0x4019 0x4019
+#define VAR_0x401A 0x401A
+#define VAR_0x401B 0x401B
+#define VAR_0x401C 0x401C
+#define VAR_0x401D 0x401D
+#define VAR_0x401E 0x401E
+#define VAR_0x401F 0x401F
+#define VAR_RECYCLE_GOODS 0x4020
+#define VAR_REPEL_STEP_COUNT 0x4021
+#define VAR_ICE_STEP_COUNT 0x4022
+#define VAR_FIRST_POKE 0x4023
+#define VAR_MIRAGE_RND_H 0x4024
+#define VAR_MIRAGE_RND_L 0x4025
+#define VAR_SECRET_BASE_MAP 0x4026
+#define VAR_0x4027 0x4027
+#define VAR_0x4028 0x4028
+#define VAR_0x4029 0x4029
+#define VAR_HAPPINESS_STEP_COUNTER 0x402A
+#define VAR_POISON_STEP_COUNTER 0x402B
+#define VAR_RESET_RTC_ENABLE 0x402C
+#define VAR_0x402D 0x402D
+#define VAR_0x402E 0x402E
+
+#define VAR_FRONTIER_MANIAC_FACILITY 0x402F
+
+#define VAR_FRONTIER_GAMBLER_FACILITY 0x4030
+#define VAR_FRONTIER_GAMBLER_SET_FACILITY_F 0x4031
+#define VAR_FRONTIER_GAMBLER_AMOUNT_BET 0x4032
+#define VAR_FRONTIER_GAMBLER_PLACED_BET_F 0x4033
+
+#define VAR_0x4034 0x4034
+#define VAR_0x4035 0x4035
+#define VAR_STORAGE_UNKNOWN 0x4036
+#define VAR_0x4037 0x4037
+#define VAR_0x4038 0x4038
+#define VAR_0x4039 0x4039
+#define VAR_0x403A 0x403A
+#define VAR_0x403B 0x403B
+#define VAR_0x403C 0x403C
+#define VAR_0x403D 0x403D
+#define VAR_ALTERING_CAVE_WILD_SET 0x403E
+#define VAR_0x403F 0x403F
+#define VAR_DAYS 0x4040
+#define VAR_0x4041 0x4041
+#define VAR_0x4042 0x4042
+#define VAR_DEPT_STORE_FLOOR 0x4043
+#define VAR_0x4044 0x4044
+#define VAR_POKELOT_PRIZE 0x4045
+#define VAR_NATIONAL_DEX 0x4046
+#define VAR_SEEDOT_SIZE_RECORD 0x4047
+#define VAR_ASH_GATHER_COUNT 0x4048
+#define VAR_BIRCH_STATE 0x4049
+#define VAR_CRUISE_STEP_COUNT 0x404A
+#define VAR_POKELOT_RND1 0x404B
+#define VAR_POKELOT_RND2 0x404C
+#define VAR_0x404D 0x404D
+#define VAR_0x404E 0x404E
+#define VAR_LOTAD_SIZE_RECORD 0x404F
+#define VAR_0x4050 0x4050
+#define VAR_0x4051 0x4051
+#define VAR_0x4052 0x4052
+#define VAR_0x4053 0x4053
+#define VAR_0x4054 0x4054
+#define VAR_0x4055 0x4055
+#define VAR_0x4056 0x4056
+#define VAR_0x4057 0x4057
+#define VAR_0x4058 0x4058
+#define VAR_0x4059 0x4059
+#define VAR_0x405A 0x405A
+#define VAR_0x405B 0x405B
+#define VAR_0x405C 0x405C
+#define VAR_0x405D 0x405D
+#define VAR_0x405E 0x405E
+#define VAR_0x405F 0x405F
+#define VAR_0x4060 0x4060
+#define VAR_0x4061 0x4061
+#define VAR_0x4062 0x4062
+#define VAR_0x4063 0x4063
+#define VAR_0x4064 0x4064
+#define VAR_0x4065 0x4065
+#define VAR_0x4066 0x4066
+#define VAR_0x4067 0x4067
+#define VAR_0x4068 0x4068
+#define VAR_0x4069 0x4069
+#define VAR_0x406A 0x406A
+#define VAR_0x406B 0x406B
+#define VAR_0x406C 0x406C
+#define VAR_0x406D 0x406D
+#define VAR_0x406E 0x406E
+#define VAR_0x406F 0x406F
+#define VAR_0x4070 0x4070
+#define VAR_0x4071 0x4071
+#define VAR_0x4072 0x4072
+#define VAR_0x4073 0x4073
+#define VAR_0x4074 0x4074
+#define VAR_0x4075 0x4075
+#define VAR_0x4076 0x4076
+#define VAR_0x4077 0x4077
+#define VAR_0x4078 0x4078
+#define VAR_0x4079 0x4079
+#define VAR_0x407A 0x407A
+#define VAR_0x407B 0x407B
+#define VAR_0x407C 0x407C
+#define VAR_0x407D 0x407D
+#define VAR_0x407E 0x407E
+#define VAR_0x407F 0x407F
+#define VAR_0x4080 0x4080
+#define VAR_0x4081 0x4081
+#define VAR_0x4082 0x4082
+#define VAR_0x4083 0x4083
+#define VAR_0x4084 0x4084
+#define VAR_0x4085 0x4085
+#define VAR_0x4086 0x4086
+#define VAR_0x4087 0x4087
+#define VAR_0x4088 0x4088
+#define VAR_0x4089 0x4089
+#define VAR_0x408A 0x408A
+#define VAR_0x408B 0x408B
+#define VAR_0x408C 0x408C
+#define VAR_0x408D 0x408D
+#define VAR_0x408E 0x408E
+#define VAR_0x408F 0x408F
+#define VAR_0x4090 0x4090
+#define VAR_0x4091 0x4091
+#define VAR_0x4092 0x4092
+#define VAR_0x4093 0x4093
+#define VAR_0x4094 0x4094
+#define VAR_0x4095 0x4095
+#define VAR_0x4096 0x4096
+#define VAR_0x4097 0x4097
+#define VAR_0x4098 0x4098
+#define VAR_0x4099 0x4099
+#define VAR_0x409A 0x409A
+#define VAR_0x409B 0x409B
+#define VAR_0x409C 0x409C
+#define VAR_0x409D 0x409D
+#define VAR_0x409E 0x409E
+#define VAR_0x409F 0x409F
+#define VAR_0x40A0 0x40A0
+#define VAR_0x40A1 0x40A1
+#define VAR_0x40A2 0x40A2
+#define VAR_0x40A3 0x40A3
+#define VAR_0x40A4 0x40A4
+#define VAR_0x40A5 0x40A5
+#define VAR_0x40A6 0x40A6
+#define VAR_0x40A7 0x40A7
+#define VAR_0x40A8 0x40A8
+#define VAR_0x40A9 0x40A9
+#define VAR_0x40AA 0x40AA
+#define VAR_0x40AB 0x40AB
+#define VAR_0x40AC 0x40AC
+#define VAR_0x40AD 0x40AD
+#define VAR_0x40AE 0x40AE
+#define VAR_0x40AF 0x40AF
+#define VAR_0x40B0 0x40B0
+#define VAR_0x40B1 0x40B1
+#define VAR_0x40B2 0x40B2
+#define VAR_0x40B3 0x40B3
+#define VAR_PORTHOLE 0x40B4
+#define VAR_0x40B5 0x40B5
+#define VAR_0x40B6 0x40B6
+#define VAR_0x40B7 0x40B7
+#define VAR_0x40B8 0x40B8
+#define VAR_0x40B9 0x40B9
+#define VAR_0x40BA 0x40BA
+#define VAR_0x40BB 0x40BB
+#define VAR_0x40BC 0x40BC
+#define VAR_0x40BD 0x40BD
+#define VAR_0x40BE 0x40BE
+#define VAR_0x40BF 0x40BF
+#define VAR_0x40C0 0x40C0
+#define VAR_0x40C1 0x40C1
+#define VAR_0x40C2 0x40C2
+#define VAR_0x40C3 0x40C3
+#define VAR_0x40C4 0x40C4
+#define VAR_0x40C5 0x40C5
+#define VAR_0x40C6 0x40C6
+#define VAR_0x40C7 0x40C7
+#define VAR_0x40C8 0x40C8
+#define VAR_0x40C9 0x40C9
+#define VAR_0x40CA 0x40CA
+#define VAR_0x40CB 0x40CB
+#define VAR_0x40CC 0x40CC
+#define VAR_0x40CD 0x40CD
+#define VAR_0x40CE 0x40CE
+#define VAR_FRONTIER_FACILITY 0x40CF
+#define VAR_0x40D0 0x40D0
+#define VAR_0x40D1 0x40D1
+#define VAR_0x40D2 0x40D2
+#define VAR_0x40D3 0x40D3
+#define VAR_0x40D4 0x40D4
+#define VAR_0x40D5 0x40D5
+#define VAR_0x40D6 0x40D6
+#define VAR_0x40D7 0x40D7
+#define VAR_0x40D8 0x40D8
+#define VAR_0x40D9 0x40D9
+#define VAR_0x40DA 0x40DA
+#define VAR_0x40DB 0x40DB
+#define VAR_0x40DC 0x40DC
+#define VAR_0x40DD 0x40DD
+#define VAR_0x40DE 0x40DE
+#define VAR_0x40DF 0x40DF
+#define VAR_0x40E0 0x40E0
+#define VAR_0x40E1 0x40E1
+#define VAR_0x40E2 0x40E2
+#define VAR_0x40E3 0x40E3
+#define VAR_0x40E4 0x40E4
+#define VAR_0x40E5 0x40E5
+#define VAR_DAILY_SLOTS 0x40E6
+#define VAR_DAILY_WILDS 0x40E7
+#define VAR_DAILY_BLENDER 0x40E8
+#define VAR_DAILY_PLANTED_BERRIES 0x40E9
+#define VAR_DAILY_PICKED_BERRIES 0x40EA
+#define VAR_DAILY_ROULETTE 0x40EB
+#define VAR_0x40EC 0x40EC
+#define VAR_0x40ED 0x40ED
+#define VAR_0x40EE 0x40EE
+#define VAR_0x40EF 0x40EF
+#define VAR_0x40F0 0x40F0
+#define VAR_DAILY_BP 0x40F1
+#define VAR_0x40F2 0x40F2
+#define VAR_0x40F3 0x40F3
+#define VAR_0x40F4 0x40F4
+#define VAR_0x40F5 0x40F5
+#define VAR_0x40F6 0x40F6
+#define VAR_0x40F7 0x40F7
+#define VAR_0x40F8 0x40F8
+#define VAR_0x40F9 0x40F9
+#define VAR_0x40FA 0x40FA
+#define VAR_0x40FB 0x40FB
+#define VAR_0x40FC 0x40FC
+#define VAR_0x40FD 0x40FD
+#define VAR_0x40FE 0x40FE
+#define VAR_0x40FF 0x40FF
+
+#define VAR_0x8000 0x8000
+#define VAR_0x8001 0x8001
+#define VAR_0x8002 0x8002
+#define VAR_0x8003 0x8003
+#define VAR_0x8004 0x8004
+#define VAR_0x8005 0x8005
+#define VAR_0x8006 0x8006
+#define VAR_0x8007 0x8007
+#define VAR_0x8008 0x8008
+#define VAR_0x8009 0x8009
+#define VAR_0x800A 0x800A
+#define VAR_0x800B 0x800B
+#define VAR_FACING 0x800C
+#define VAR_RESULT 0x800D
+#define VAR_ITEM_ID 0x800E
+#define VAR_LAST_TALKED 0x800F
+#define VAR_CONTEST_RANK 0x8010
+#define VAR_CONTEST_CATEGORY 0x8011
+#define VAR_MON_BOX_ID 0x8012
+#define VAR_MON_BOX_POS 0x8013
+#define VAR_0x8014 0x8014
+
+#endif // GUARD_CONSTANTS_VARS_H
diff --git a/include/data/bard_music/pokemon.h b/include/data/bard_music/pokemon.h
index 7b4081a3c..693005360 100644
--- a/include/data/bard_music/pokemon.h
+++ b/include/data/bard_music/pokemon.h
@@ -1,6 +1,6 @@
#ifndef GUARD_DATA_BARD_MUSIC_POKEMON_H
#define GUARD_DATA_BARD_MUSIC_POKEMON_H
-#include "species.h"
+#include "constants/species.h"
const u16 gUnknown_085F5490 = NUM_SPECIES;
diff --git a/include/decompress.h b/include/decompress.h
index 36be803e0..34a678cda 100644
--- a/include/decompress.h
+++ b/include/decompress.h
@@ -28,4 +28,6 @@ void LoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32
void LoadSpecialPokePic_2(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic);
void LoadSpecialPokePic_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic);
+u32 sub_8034974(const u8 *ptr);
+
#endif // GUARD_DECOMPRESS_H
diff --git a/include/decoration.h b/include/decoration.h
index ead621c5f..c841bbfc1 100644
--- a/include/decoration.h
+++ b/include/decoration.h
@@ -1,130 +1,6 @@
#ifndef GUARD_DECORATION_H
#define GUARD_DECORATION_H
-enum DecoId {
- /*000*/ DECOR_NONE,
- /*001*/ DECOR_SMALL_DESK,
- /*002*/ DECOR_POKEMON_DESK,
- /*003*/ DECOR_HEAVY_DESK,
- /*004*/ DECOR_RAGGED_DESK,
- /*005*/ DECOR_COMFORT_DESK,
- /*006*/ DECOR_PRETTY_DESK,
- /*007*/ DECOR_BRICK_DESK,
- /*008*/ DECOR_CAMP_DESK,
- /*009*/ DECOR_HARD_DESK,
- /*010*/ DECOR_SMALL_CHAIR,
- /*011*/ DECOR_POKEMON_CHAIR,
- /*012*/ DECOR_HEAVY_CHAIR,
- /*013*/ DECOR_PRETTY_CHAIR,
- /*014*/ DECOR_COMFORT_CHAIR,
- /*015*/ DECOR_RAGGED_CHAIR,
- /*016*/ DECOR_BRICK_CHAIR,
- /*017*/ DECOR_CAMP_CHAIR,
- /*018*/ DECOR_HARD_CHAIR,
- /*019*/ DECOR_RED_PLANT,
- /*020*/ DECOR_TROPICAL_PLANT,
- /*021*/ DECOR_PRETTY_FLOWERS,
- /*022*/ DECOR_COLORFUL_PLANT,
- /*023*/ DECOR_BIG_PLANT,
- /*024*/ DECOR_GORGEOUS_PLANT,
- /*025*/ DECOR_RED_BRICK,
- /*026*/ DECOR_YELLOW_BRICK,
- /*027*/ DECOR_BLUE_BRICK,
- /*028*/ DECOR_RED_BALLOON,
- /*029*/ DECOR_BLUE_BALLOON,
- /*030*/ DECOR_YELLOW_BALLOON,
- /*031*/ DECOR_RED_TENT,
- /*032*/ DECOR_BLUE_TENT,
- /*033*/ DECOR_SOLID_BOARD,
- /*034*/ DECOR_SLIDE,
- /*035*/ DECOR_FENCE_LENGTH,
- /*036*/ DECOR_FENCE_WIDTH,
- /*037*/ DECOR_TIRE,
- /*038*/ DECOR_STAND,
- /*039*/ DECOR_MUD_BALL,
- /*040*/ DECOR_BREAKABLE_DOOR,
- /*041*/ DECOR_SAND_ORNAMENT,
- /*042*/ DECOR_SILVER_SHIELD,
- /*043*/ DECOR_GOLD_SHIELD,
- /*044*/ DECOR_GLASS_ORNAMENT,
- /*045*/ DECOR_TV,
- /*046*/ DECOR_ROUND_TV,
- /*047*/ DECOR_CUTE_TV,
- /*048*/ DECOR_GLITTER_MAT,
- /*049*/ DECOR_JUMP_MAT,
- /*050*/ DECOR_SPIN_MAT,
- /*051*/ DECOR_C_LOW_NOTE_MAT,
- /*052*/ DECOR_D_NOTE_MAT,
- /*053*/ DECOR_E_NOTE_MAT,
- /*054*/ DECOR_F_NOTE_MAT,
- /*055*/ DECOR_G_NOTE_MAT,
- /*056*/ DECOR_A_NOTE_MAT,
- /*057*/ DECOR_B_NOTE_MAT,
- /*058*/ DECOR_C_HIGH_NOTE_MAT,
- /*059*/ DECOR_SURF_MAT,
- /*060*/ DECOR_THUNDER_MAT,
- /*061*/ DECOR_FIRE_BLAST_MAT,
- /*062*/ DECOR_POWDER_SNOW_MAT,
- /*063*/ DECOR_ATTRACT_MAT,
- /*064*/ DECOR_FISSURE_MAT,
- /*065*/ DECOR_SPIKES_MAT,
- /*066*/ DECOR_BALL_POSTER,
- /*067*/ DECOR_GREEN_POSTER,
- /*068*/ DECOR_RED_POSTER,
- /*069*/ DECOR_BLUE_POSTER,
- /*070*/ DECOR_CUTE_POSTER,
- /*071*/ DECOR_PIKA_POSTER,
- /*072*/ DECOR_LONG_POSTER,
- /*073*/ DECOR_SEA_POSTER,
- /*074*/ DECOR_SKY_POSTER,
- /*075*/ DECOR_KISS_POSTER,
- /*076*/ DECOR_PICHU_DOLL,
- /*077*/ DECOR_PIKACHU_DOLL,
- /*078*/ DECOR_MARILL_DOLL,
- /*079*/ DECOR_TOGEPI_DOLL,
- /*080*/ DECOR_CYNDAQUIL_DOLL,
- /*081*/ DECOR_CHIKORITA_DOLL,
- /*082*/ DECOR_TOTODILE_DOLL,
- /*083*/ DECOR_JIGGLYPUFF_DOLL,
- /*084*/ DECOR_MEOWTH_DOLL,
- /*085*/ DECOR_CLEFAIRY_DOLL,
- /*086*/ DECOR_DITTO_DOLL,
- /*087*/ DECOR_SMOOCHUM_DOLL,
- /*088*/ DECOR_TREECKO_DOLL,
- /*089*/ DECOR_TORCHIC_DOLL,
- /*090*/ DECOR_MUDKIP_DOLL,
- /*091*/ DECOR_DUSKULL_DOLL,
- /*092*/ DECOR_WYNAUT_DOLL,
- /*093*/ DECOR_BALTOY_DOLL,
- /*094*/ DECOR_KECLEON_DOLL,
- /*095*/ DECOR_AZURILL_DOLL,
- /*096*/ DECOR_SKITTY_DOLL,
- /*097*/ DECOR_SWABLU_DOLL,
- /*098*/ DECOR_GULPIN_DOLL,
- /*099*/ DECOR_LOTAD_DOLL,
- /*100*/ DECOR_SEEDOT_DOLL,
- /*101*/ DECOR_PIKA_CUSHION,
- /*102*/ DECOR_ROUND_CUSHION,
- /*103*/ DECOR_KISS_CUSHION,
- /*104*/ DECOR_ZIGZAG_CUSHION,
- /*105*/ DECOR_SPIN_CUSHION,
- /*106*/ DECOR_DIAMOND_CUSHION,
- /*107*/ DECOR_BALL_CUSHION,
- /*108*/ DECOR_GRASS_CUSHION,
- /*109*/ DECOR_FIRE_CUSHION,
- /*110*/ DECOR_WATER_CUSHION,
- /*111*/ DECOR_SNORLAX_DOLL,
- /*112*/ DECOR_RHYDON_DOLL,
- /*113*/ DECOR_LAPRAS_DOLL,
- /*114*/ DECOR_VENUSAUR_DOLL,
- /*115*/ DECOR_CHARIZARD_DOLL,
- /*116*/ DECOR_BLASTOISE_DOLL,
- /*117*/ DECOR_WAILMER_DOLL,
- /*118*/ DECOR_REGIROCK_DOLL,
- /*119*/ DECOR_REGICE_DOLL,
- /*120*/ DECOR_REGISTEEL_DOLL
-};
-
enum DecorPerm {
/*
* The nomenclature here describes collision and placement permissions, in that order.
diff --git a/include/dewford_trend.h b/include/dewford_trend.h
index 01e5d9762..dac5ea6c9 100644
--- a/include/dewford_trend.h
+++ b/include/dewford_trend.h
@@ -3,5 +3,6 @@
void InitDewfordTrend(void);
void UpdateDewfordTrendPerDay(u16);
+void UpdateDewfordTrendPerDay(u16 days);
#endif // GUARD_DEWFORDTREND_H
diff --git a/include/event_data.h b/include/event_data.h
index f0ab90ae4..f829d3b87 100644
--- a/include/event_data.h
+++ b/include/event_data.h
@@ -1,8 +1,8 @@
#ifndef GUARD_EVENT_DATA_H
#define GUARD_EVENT_DATA_H
-#include "flags.h"
-#include "vars.h"
+#include "constants/flags.h"
+#include "constants/vars.h"
void InitEventData(void);
void ClearTempFieldEventData(void);
diff --git a/include/event_scripts.h b/include/event_scripts.h
index 844f1052a..a54e0e463 100755
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -7,10 +7,18 @@
extern const u8 gUnknown_0823B4E8[];
extern const u8 gUnknown_0823B5E9[];
+extern const u8 EventScript_TestSignpostMsg[];
+extern const u8 EventScript_TryGetTrainerScript[];
extern const u8 EventScript_275BB7[];
extern const u8 EventScript_275D0C[];
extern const u8 EventScript_275D1F[];
extern const u8 EventScript_275D2E[];
+extern const u8 EventScript_271354[];
+extern const u8 EventScript_2713C2[];
+extern const u8 EventScript_TryDoDoubleTrainerBattle[];
+extern const u8 EventScript_271362[];
+extern const u8 EventScript_TryDoDoubleRematchBattle[];
+extern const u8 EventScript_2713D1[];
extern const u8 EventScript_2766A2[];
extern const u8 EventScript_2766A6[];
diff --git a/include/field_map_obj.h b/include/field_map_obj.h
index 0107fa10f..696d1c2e2 100755
--- a/include/field_map_obj.h
+++ b/include/field_map_obj.h
@@ -76,6 +76,8 @@ void MoveCoords(u8, s16 *, s16 *);
bool8 FieldObjectIsSpecialAnimActive(struct MapObject *);
u8 FieldObjectClearAnimIfSpecialAnimFinished(struct MapObject *);
u8 GetFieldObjectIdByXYZ(u16 x, u16 y, u8 z);
+void npc_set_running_behaviour_etc(struct MapObject *mapObject, u8 animPattern);
+u8 npc_running_behaviour_by_direction(u8 direction);
// Exported data declarations
diff --git a/include/field_poison.h b/include/field_poison.h
new file mode 100644
index 000000000..d1a4c823b
--- /dev/null
+++ b/include/field_poison.h
@@ -0,0 +1,19 @@
+#ifndef GUARD_FIELD_POISON_H
+#define GUARD_FIELD_POISON_H
+
+// Exported type declarations
+
+// Exported RAM declarations
+
+// Exported ROM declarations
+
+enum {
+ FLDPSN_NONE,
+ FLDPSN_PSN,
+ FLDPSN_FNT
+};
+
+void sub_80F972C(void);
+unsigned int overworld_poison(void);
+
+#endif //GUARD_FIELD_POISON_H
diff --git a/include/field_screen.h b/include/field_screen.h
index 089e79cc4..cfc0d081f 100644
--- a/include/field_screen.h
+++ b/include/field_screen.h
@@ -9,5 +9,6 @@
void pal_fill_black(void);
bool8 sub_80ABDFC(void);
void sub_80AF168(void);
+void UpdateWeatherPerDay(u16 days);
#endif //GUARD_FIELD_SCREEN_H
diff --git a/include/flags.h b/include/flags.h
deleted file mode 100644
index 30c28c0c2..000000000
--- a/include/flags.h
+++ /dev/null
@@ -1,118 +0,0 @@
-#ifndef GUARD_FLAGS_H
-#define GUARD_FLAGS_H
-
-#define FLAG_LEGENDARIES_IN_SOOTOPOLIS 0x53
-#define FLAG_PENDING_DAYCARE_EGG 0x86
-
-#define FLAG_TRAINER_FLAG_START 0x500
-
-#define TRAINERS_FLAG_NO 0x356
-#define CODE_FLAGS (FLAG_TRAINER_FLAG_START + TRAINERS_FLAG_NO + 0xA) // 0x860
-
-// SYSTEM FLAGS
-
-#define FLAG_SYS_POKEMON_GET (CODE_FLAGS + 0)
-#define FLAG_SYS_POKEDEX_GET (CODE_FLAGS + 1)
-#define FLAG_SYS_POKENAV_GET (CODE_FLAGS + 2)
-// third one appears unused
-#define FLAG_SYS_GAME_CLEAR (CODE_FLAGS + 4)
-#define FLAG_SYS_CHAT_USED (CODE_FLAGS + 5)
-#define FLAG_SYS_HIPSTER_MEET (CODE_FLAGS + 6)
-
-// badges
-#define FLAG_BADGE01_GET (CODE_FLAGS + 7)
-#define FLAG_BADGE02_GET (CODE_FLAGS + 8)
-#define FLAG_BADGE03_GET (CODE_FLAGS + 9)
-#define FLAG_BADGE04_GET (CODE_FLAGS + 0xA)
-#define FLAG_BADGE05_GET (CODE_FLAGS + 0xB)
-#define FLAG_BADGE06_GET (CODE_FLAGS + 0xC)
-#define FLAG_BADGE07_GET (CODE_FLAGS + 0xD)
-#define FLAG_BADGE08_GET (CODE_FLAGS + 0xE)
-
-// cities and towns
-#define FLAG_VISITED_LITTLEROOT_TOWN (CODE_FLAGS + 0xF)
-#define FLAG_VISITED_OLDALE_TOWN (CODE_FLAGS + 0x10)
-#define FLAG_VISITED_DEWFORD_TOWN (CODE_FLAGS + 0x11)
-#define FLAG_VISITED_LAVARIDGE_TOWN (CODE_FLAGS + 0x12)
-#define FLAG_VISITED_FALLARBOR_TOWN (CODE_FLAGS + 0x13)
-#define FLAG_VISITED_VERDANTURF_TOWN (CODE_FLAGS + 0x14)
-#define FLAG_VISITED_PACIFIDLOG_TOWN (CODE_FLAGS + 0x15)
-#define FLAG_VISITED_PETALBURG_CITY (CODE_FLAGS + 0x16)
-#define FLAG_VISITED_SLATEPORT_CITY (CODE_FLAGS + 0x17)
-#define FLAG_VISITED_MAUVILLE_CITY (CODE_FLAGS + 0x18)
-#define FLAG_VISITED_RUSTBORO_CITY (CODE_FLAGS + 0x19)
-#define FLAG_VISITED_FORTREE_CITY (CODE_FLAGS + 0x1A)
-#define FLAG_VISITED_LILYCOVE_CITY (CODE_FLAGS + 0x1B)
-#define FLAG_VISITED_MOSSDEEP_CITY (CODE_FLAGS + 0x1C)
-#define FLAG_VISITED_SOOTOPOLIS_CITY (CODE_FLAGS + 0x1D)
-#define FLAG_VISITED_EVER_GRANDE_CITY (CODE_FLAGS + 0x1E)
-
-#define FLAG_SYS_UNKNOWN_880 (CODE_FLAGS + 0x20)
-
-#define FLAG_SYS_USE_FLASH (CODE_FLAGS + 0x28)
-#define FLAG_SYS_USE_STRENGTH (CODE_FLAGS + 0x29)
-#define FLAG_SYS_WEATHER_CTRL (CODE_FLAGS + 0x2A)
-#define FLAG_SYS_CYCLING_ROAD (CODE_FLAGS + 0x2B)
-#define FLAG_SYS_SAFARI_MODE (CODE_FLAGS + 0x2C)
-#define FLAG_SYS_CRUISE_MODE (CODE_FLAGS + 0x2D)
-
-#define FLAG_SYS_TV_HOME (CODE_FLAGS + 0x30)
-#define FLAG_SYS_TV_WATCH (CODE_FLAGS + 0x31)
-#define FLAG_SYS_TV_START (CODE_FLAGS + 0x32)
-#define FLAG_SYS_POPWORD_INPUT (CODE_FLAGS + 0x33)
-#define FLAG_SYS_MIX_RECORD (CODE_FLAGS + 0x34)
-#define FLAG_SYS_CLOCK_SET (CODE_FLAGS + 0x35)
-#define FLAG_SYS_NATIONAL_DEX (CODE_FLAGS + 0x36)
-#define FLAG_SYS_CAVE_SHIP (CODE_FLAGS + 0x37)
-#define FLAG_SYS_CAVE_WONDER (CODE_FLAGS + 0x38)
-#define FLAG_SYS_CAVE_BATTLE (CODE_FLAGS + 0x39)
-#define FLAG_SYS_SHOAL_TIDE (CODE_FLAGS + 0x3A)
-#define FLAG_SYS_RIBBON_GET (CODE_FLAGS + 0x3B)
-
-#define FLAG_UNLOCK_BATTLE_FRONTIER (CODE_FLAGS + 0x48)
-#define FLAG_UNLOCK_SOUTHERN_ISLAND (CODE_FLAGS + 0x49)
-
-#define FLAG_SYS_PC_LANETTE (CODE_FLAGS + 0x4B)
-#define FLAG_SYS_MYSTERY_EVENT_ENABLE (CODE_FLAGS + 0x4C)
-#define FLAG_SYS_ENC_UP_ITEM (CODE_FLAGS + 0x4D)
-#define FLAG_SYS_ENC_DOWN_ITEM (CODE_FLAGS + 0x4E)
-#define FLAG_SYS_BRAILLE_DIG (CODE_FLAGS + 0x4F)
-#define FLAG_SYS_BRAILLE_STRENGTH (CODE_FLAGS + 0x50)
-#define FLAG_SYS_BRAILLE_WAIT (CODE_FLAGS + 0x51)
-#define FLAG_SYS_BRAILLE_FLY (CODE_FLAGS + 0x52)
-#define FLAG_SYS_HAS_EON_TICKET (CODE_FLAGS + 0x53)
-
-#define FLAG_SYS_POKEMON_LEAGUE_FLY (CODE_FLAGS + 0x54)
-
-#define FLAG_SYS_TV_LATI (CODE_FLAGS + 0x5D)
-
-#define FLAG_SYS_SHOAL_ITEM (CODE_FLAGS + 0x5F)
-#define FLAG_SYS_B_DASH (CODE_FLAGS + 0x60) // got Running Shoes
-#define FLAG_SYS_CTRL_OBJ_DELETE (CODE_FLAGS + 0x61)
-#define FLAG_SYS_RESET_RTC_ENABLE (CODE_FLAGS + 0x62)
-
-#define FLAG_SYS_TOWER_SILVER (CODE_FLAGS + 0x64)
-#define FLAG_SYS_TOWER_GOLD (CODE_FLAGS + 0x65)
-#define FLAG_SYS_DOME_SILVER (CODE_FLAGS + 0x66)
-#define FLAG_SYS_DOME_GOLD (CODE_FLAGS + 0x67)
-#define FLAG_SYS_PALACE_SILVER (CODE_FLAGS + 0x68)
-#define FLAG_SYS_PALACE_GOLD (CODE_FLAGS + 0x69)
-#define FLAG_SYS_ARENA_SILVER (CODE_FLAGS + 0x6A)
-#define FLAG_SYS_ARENA_GOLD (CODE_FLAGS + 0x6B)
-#define FLAG_SYS_FACTORY_SILVER (CODE_FLAGS + 0x6C)
-#define FLAG_SYS_FACTORY_GOLD (CODE_FLAGS + 0x6D)
-#define FLAG_SYS_PIKE_SILVER (CODE_FLAGS + 0x6E)
-#define FLAG_SYS_PIKE_GOLD (CODE_FLAGS + 0x6F)
-#define FLAG_SYS_PYRAMID_SILVER (CODE_FLAGS + 0x70)
-#define FLAG_SYS_PYRAMID_GOLD (CODE_FLAGS + 0x71)
-#define FLAG_SYS_FRONTIER_PASS (CODE_FLAGS + 0x72)
-
-#define FLAG_SYS_STORAGE_UNKNOWN_FLAG (CODE_FLAGS + 0x77)
-
-#define FLAG_SYS_MYSTERY_GIFT_ENABLE (CODE_FLAGS + 0x7B)
-
-// SPECIAL FLAGS (unknown purpose)
-
-#define SPECIAL_FLAG_1 0x4001
-
-#endif // GUARD_FLAGS_H
diff --git a/include/fldeff_80F9BCC.h b/include/fldeff_80F9BCC.h
index ecce04943..d57665c68 100644
--- a/include/fldeff_80F9BCC.h
+++ b/include/fldeff_80F9BCC.h
@@ -9,5 +9,6 @@
void sub_80FA5E4(s16 id, s16 x, s16 y);
void sub_80FA794(s16 x, s16 y);
+void overworld_poison_effect(void);
#endif //GUARD_FLDEFF_80F9BCC_H
diff --git a/include/gba/m4a_internal.h b/include/gba/m4a_internal.h
index 6cdfd13e1..659302fd5 100644
--- a/include/gba/m4a_internal.h
+++ b/include/gba/m4a_internal.h
@@ -406,7 +406,7 @@ 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 m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s16 pitch);
void m4aMPlayPanpotControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s8 pan);
void ClearModM(struct MusicPlayerTrack *track);
void m4aMPlayModDepthSet(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u8 modDepth);
diff --git a/include/gba/macro.h b/include/gba/macro.h
index 7b6b98c06..ad4820bcf 100644
--- a/include/gba/macro.h
+++ b/include/gba/macro.h
@@ -78,6 +78,81 @@
#define DmaCopy16(dmaNum, src, dest, size) DMA_COPY(dmaNum, src, dest, size, 16)
#define DmaCopy32(dmaNum, src, dest, size) DMA_COPY(dmaNum, src, dest, size, 32)
+#define DmaCopyLarge(dmaNum, src, dest, size, block, bit) \
+{ \
+ const void *_src = src; \
+ void *_dest = dest; \
+ u32 _size = size; \
+ while (1) \
+ { \
+ DmaCopy##bit(dmaNum, _src, _dest, (block)); \
+ _src += (block); \
+ _dest += (block); \
+ _size -= (block); \
+ if (_size <= (block)) \
+ { \
+ DmaCopy##bit(dmaNum, _src, _dest, _size); \
+ break; \
+ } \
+ } \
+}
+
+#define DmaCopyLarge16(dmaNum, src, dest, size, block) DmaCopyLarge(dmaNum, src, dest, size, block, 16)
+
+#define DmaCopyLarge32(dmaNum, src, dest, size, block) DmaCopyLarge(dmaNum, src, dest, size, block, 32)
+
+#define DmaFillLarge(dmaNum, value, dest, size, block, bit) \
+{ \
+ void *_dest = dest; \
+ u32 _size = size; \
+ while (1) \
+ { \
+ DmaFill##bit(dmaNum, value, _dest, (block)); \
+ _dest += (block); \
+ _size -= (block); \
+ if (_size <= (block)) \
+ { \
+ DmaFill##bit(dmaNum, value, _dest, _size); \
+ break; \
+ } \
+ } \
+}
+
+#define DmaFillLarge16(dmaNum, value, dest, size, block) DmaFillLarge(dmaNum, value, dest, size, block, 16)
+
+#define DmaFillLarge32(dmaNum, value, dest, size, block) DmaFillLarge(dmaNum, value, dest, size, block, 32)
+
+#define DmaCopyDefvars(dmaNum, src, dest, size, bit) \
+{ \
+ const void *_src = src; \
+ void *_dest = dest; \
+ u32 _size = size; \
+ DmaCopy##bit(dmaNum, _src, _dest, _size); \
+}
+
+#define DmaCopy16Defvars(dmaNum, src, dest, size) DmaCopyDefvars(dmaNum, src, dest, size, 16)
+#define DmaCopy32Defvars(dmaNum, src, dest, size) DmaCopyDefvars(dmaNum, src, dest, size, 32)
+
+#define DmaFillDefvars(dmaNum, value, dest, size, bit) \
+{ \
+ void *_dest = dest; \
+ u32 _size = size; \
+ DmaFill##bit(dmaNum, value, _dest, _size); \
+}
+
+#define DmaFill16Defvars(dmaNum, value, dest, size) DmaFillDefvars(dmaNum, value, dest, size, 16)
+#define DmaFill32Defvars(dmaNum, value, dest, size) DmaFillDefvars(dmaNum, value, dest, size, 32)
+
+#define DmaClearDefvars(dmaNum, dest, size, bit) \
+{ \
+ void *_dest = dest; \
+ u32 _size = size; \
+ DmaClear##bit(dmaNum, _dest, _size); \
+}
+
+#define DmaClear16Defvars(dmaNum, dest, size) DmaClearDefvars(dmaNum, dest, size, 16)
+#define DmaClear32Defvars(dmaNum, dest, size) DmaClearDefvars(dmaNum, dest, size, 32)
+
#define DmaStop(dmaNum) \
{ \
vu16 *dmaRegs = (vu16 *)REG_ADDR_DMA##dmaNum; \
diff --git a/include/global.h b/include/global.h
index f3ec9ce33..9fe0d975f 100644
--- a/include/global.h
+++ b/include/global.h
@@ -36,6 +36,24 @@ extern u8 gStringVar2[];
extern u8 gStringVar3[];
extern u8 gStringVar4[];
+// There are many quirks in the source code which have overarching behavioral differences from
+// a number of other files. For example, diploma.c seems to declare rodata before each use while
+// other files declare out of order and must be at the beginning. There are also a number of
+// macros which differ from one file to the next due to the method of obtaining the result, such
+// as these below. Because of this, there is a theory (Two Team Theory) that states that these
+// programming projects had more than 1 "programming team" which utilized different macros for
+// each of the files that were worked on.
+#define T1_READ_8(ptr) ((ptr)[0])
+#define T1_READ_16(ptr) ((ptr)[0] | ((ptr)[1] << 8))
+#define T1_READ_32(ptr) ((ptr)[0] | ((ptr)[1] << 8) | ((ptr)[2] << 16) | ((ptr)[3] << 24))
+#define T1_READ_PTR(ptr) (u8*) T1_READ_32(ptr)
+
+// T2_READ_8 is a duplicate to remain consistent with each group.
+#define T2_READ_8(ptr) ((ptr)[0])
+#define T2_READ_16(ptr) ((ptr)[0] + ((ptr)[1] << 8))
+#define T2_READ_32(ptr) ((ptr)[0] + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24))
+#define T2_READ_PTR(ptr) (void*) T2_READ_32(ptr)
+
enum
{
VERSION_SAPPHIRE = 1,
@@ -45,10 +63,15 @@ enum
VERSION_LEAF_GREEN = 5,
};
-enum LanguageId {
+enum LanguageId
+{
LANGUAGE_JAPANESE = 1,
LANGUAGE_ENGLISH = 2,
+ LANGUAGE_FRENCH = 3,
+ LANGUAGE_ITALIAN = 4,
LANGUAGE_GERMAN = 5,
+ // 6 goes unused but the theory is it was meant to be Korean
+ LANGUAGE_SPANISH = 7,
};
#define GAME_LANGUAGE (LANGUAGE_ENGLISH)
@@ -218,7 +241,7 @@ struct SaveBlock2
/*0x1EC*/ struct BerryCrush berryCrush;
/*0x1FC*/ struct PokemonJumpResults pokeJump;
/*0x20C*/ struct BerryPickingResults berryPick;
- /*0x214*/ u8 field_214[1032];
+ /*0x21C*/ u8 field_21C[1032];
/*0x624*/ u16 contestLinkResults[20]; // 4 positions for 5 categories, possibly a struct or a 2d array
// All below could be a one giant struct
@@ -240,7 +263,7 @@ struct SaveBlock2
/*0xCA9*/ u8 field_CA9_f : 1; // 0x80
/*0xCAA*/ u16 field_CAA[4];
/*0xCB2*/ u16 battlePyramidWildHeaderId;
- /*0xCB4*/ u8 field_CB4[82];
+ /*0xCB4*/ u16 field_CB4[41];
/*0xD06*/ u8 field_D06;
/*0xD07*/ u8 field_D07;
/*0xD08*/ u8 filler_D08[0x112];
@@ -284,7 +307,7 @@ struct SecretBaseRecord
/*0x1B34*/ u8 partyEVs[6];
};
-#include "game_stat.h"
+#include "constants/game_stat.h"
#include "global.fieldmap.h"
#include "global.berry.h"
#include "global.tv.h"
@@ -356,10 +379,12 @@ struct EasyChatPair
u16 words[2];
}; /*size = 0x8*/
+#define MAIL_WORDS_COUNT 9
+
struct MailStruct
{
- /*0x00*/ u16 words[9];
- /*0x12*/ u8 playerName[8];
+ /*0x00*/ u16 words[MAIL_WORDS_COUNT];
+ /*0x12*/ u8 playerName[PLAYER_NAME_LENGTH];
/*0x1A*/ u8 trainerId[4];
/*0x1E*/ u16 species;
/*0x20*/ u16 itemId;
diff --git a/include/graphics.h b/include/graphics.h
index c50fdef3f..aad5c0190 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -5,6 +5,32 @@
#ifndef GUARD_GRAPHICS_H
#define GUARD_GRAPHICS_H
+extern const u8 gInterfaceGfx_PokeBall[];
+extern const u8 gInterfacePal_PokeBall[];
+extern const u8 gInterfaceGfx_GreatBall[];
+extern const u8 gInterfacePal_GreatBall[];
+extern const u8 gInterfaceGfx_SafariBall[];
+extern const u8 gInterfacePal_SafariBall[];
+extern const u8 gInterfaceGfx_UltraBall[];
+extern const u8 gInterfacePal_UltraBall[];
+extern const u8 gInterfaceGfx_MasterBall[];
+extern const u8 gInterfacePal_MasterBall[];
+extern const u8 gInterfaceGfx_NetBall[];
+extern const u8 gInterfacePal_NetBall[];
+extern const u8 gInterfaceGfx_DiveBall[];
+extern const u8 gInterfacePal_DiveBall[];
+extern const u8 gInterfaceGfx_NestBall[];
+extern const u8 gInterfacePal_NestBall[];
+extern const u8 gInterfaceGfx_RepeatBall[];
+extern const u8 gInterfacePal_RepeatBall[];
+extern const u8 gInterfaceGfx_TimerBall[];
+extern const u8 gInterfacePal_TimerBall[];
+extern const u8 gInterfaceGfx_LuxuryBall[];
+extern const u8 gInterfacePal_LuxuryBall[];
+extern const u8 gInterfaceGfx_PremierBall[];
+extern const u8 gInterfacePal_PremierBall[];
+extern const u8 gOpenPokeballGfx[];
+
extern const u8 gItemIcon_QuestionMark[];
extern const u8 gItemIconPalette_QuestionMark[];
extern const u8 gUnknown_08DB7AA0[];
@@ -91,5 +117,28 @@ extern const u8 gUnknown_08DB9F08[];
extern const u8 gUnknown_08DB9FFC[];
extern const u8 gUnknown_08DBA020[];
extern const u8 gUnknown_08DBA12C[];
+extern const u8 gUnknown_08DCC05C[];
+extern const u16 gUnknown_08DCC01C[];
+extern const u16 gUnknown_08DCC03C[];
+extern const u8 gUnknown_08DCC648[];
+extern const u8 gUnknown_08DCC908[];
+extern const u8 gUnknown_08DD87C0[];
+extern const u8 gUnknown_08DD8EE0[];
+extern const u16 gUnknown_08DD8780[];
+extern const u8 gUnknown_08DD90E0[];
+extern const u8 gUnknown_08DD9718[];
+extern const u16 gUnknown_08DD9080[];
+extern const u8 gUnknown_08DD98B4[];
+extern const u8 gUnknown_08DD9E58[];
+extern const u16 gUnknown_08DD9874[];
+extern const u8 gUnknown_08DDA02C[];
+extern const u8 gUnknown_08DDA63C[];
+extern const u16 gUnknown_08DD9FEC[];
+extern const u8 gUnknown_08DDA840[];
+extern const u8 gUnknown_08DDAE40[];
+extern const u16 gUnknown_08DDA800[];
+extern const u8 gUnknown_08DDB020[];
+extern const u8 gUnknown_08DDB2C4[];
+extern const u16 gUnknown_08DDAFE0[];
#endif //GUARD_GRAPHICS_H
diff --git a/include/international_string_util.h b/include/international_string_util.h
index e7876162e..f4ba827e3 100644
--- a/include/international_string_util.h
+++ b/include/international_string_util.h
@@ -14,7 +14,7 @@ s32 sub_81DB3D8(const struct MenuAction *str, u8* arg1, s32 arg2);
// sub_81DB41C
// CopyMonCategoryText
// sub_81DB494
-// sub_81DB4DC
+void PadNameString(u8 *dst, u8 padWith);
// sub_81DB554
// sub_81DB5AC
u32 sub_81DB604(const u8 *);
diff --git a/include/item_menu_icons.h b/include/item_menu_icons.h
new file mode 100644
index 000000000..553e7c262
--- /dev/null
+++ b/include/item_menu_icons.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_ITEM_MENU_ICONS
+#define GUARD_ITEM_MENU_ICONS
+
+u8 sub_80D511C(u8 a0, u8 a1, u8 a2, u8 a3);
+
+#endif // GUARD_ITEM_MENU_ICONS
diff --git a/include/items.h b/include/items.h
deleted file mode 100644
index 1f6c288c5..000000000
--- a/include/items.h
+++ /dev/null
@@ -1,392 +0,0 @@
-#ifndef GUARD_ITEMS_H
-#define GUARD_ITEMS_H
-
-enum
-{
- ITEM_NONE, // 0x000
- ITEM_MASTER_BALL, // 0x001
- ITEM_ULTRA_BALL, // 0x002
- ITEM_GREAT_BALL, // 0x003
- ITEM_POKE_BALL, // 0x004
- ITEM_SAFARI_BALL, // 0x005
- ITEM_NET_BALL, // 0x006
- ITEM_DIVE_BALL, // 0x007
- ITEM_NEST_BALL, // 0x008
- ITEM_REPEAT_BALL, // 0x009
- ITEM_TIMER_BALL, // 0x00a
- ITEM_LUXURY_BALL, // 0x00b
- ITEM_PREMIER_BALL, // 0x00c
- ITEM_POTION, // 0x00d
- ITEM_ANTIDOTE, // 0x00e
- ITEM_BURN_HEAL, // 0x00f
- ITEM_ICE_HEAL, // 0x010
- ITEM_AWAKENING, // 0x011
- ITEM_PARALYZE_HEAL, // 0x012
- ITEM_FULL_RESTORE, // 0x013
- ITEM_MAX_POTION, // 0x014
- ITEM_HYPER_POTION, // 0x015
- ITEM_SUPER_POTION, // 0x016
- ITEM_FULL_HEAL, // 0x017
- ITEM_REVIVE, // 0x018
- ITEM_MAX_REVIVE, // 0x019
- ITEM_FRESH_WATER, // 0x01a
- ITEM_SODA_POP, // 0x01b
- ITEM_LEMONADE, // 0x01c
- ITEM_MOOMOO_MILK, // 0x01d
- ITEM_ENERGY_POWDER, // 0x01e
- ITEM_ENERGY_ROOT, // 0x01f
- ITEM_HEAL_POWDER, // 0x020
- ITEM_REVIVAL_HERB, // 0x021
- ITEM_ETHER, // 0x022
- ITEM_MAX_ETHER, // 0x023
- ITEM_ELIXIR, // 0x024
- ITEM_MAX_ELIXIR, // 0x025
- ITEM_LAVA_COOKIE, // 0x026
- ITEM_BLUE_FLUTE, // 0x027
- ITEM_YELLOW_FLUTE, // 0x028
- ITEM_RED_FLUTE, // 0x029
- ITEM_BLACK_FLUTE, // 0x02a
- ITEM_WHITE_FLUTE, // 0x02b
- ITEM_BERRY_JUICE, // 0x02c
- ITEM_SACRED_ASH, // 0x02d
- ITEM_SHOAL_SALT, // 0x02e
- ITEM_SHOAL_SHELL, // 0x02f
- ITEM_RED_SHARD, // 0x030
- ITEM_BLUE_SHARD, // 0x031
- ITEM_YELLOW_SHARD, // 0x032
- ITEM_GREEN_SHARD, // 0x033
- ITEM_034,
- ITEM_035,
- ITEM_036,
- ITEM_037,
- ITEM_038,
- ITEM_039,
- ITEM_03A,
- ITEM_03B,
- ITEM_03C,
- ITEM_03D,
- ITEM_03E,
- ITEM_HP_UP, // 0x03f
- ITEM_PROTEIN, // 0x040
- ITEM_IRON, // 0x041
- ITEM_CARBOS, // 0x042
- ITEM_CALCIUM, // 0x043
- ITEM_RARE_CANDY, // 0x044
- ITEM_PP_UP, // 0x045
- ITEM_ZINC, // 0x046
- ITEM_PP_MAX, // 0x047
- ITEM_048,
- ITEM_GUARD_SPEC, // 0x049
- ITEM_DIRE_HIT, // 0x04a
- ITEM_X_ATTACK, // 0x04b
- ITEM_X_DEFEND, // 0x04c
- ITEM_X_SPEED, // 0x04d
- ITEM_X_ACCURACY, // 0x04e
- ITEM_X_SPECIAL, // 0x04f
- ITEM_POKE_DOLL, // 0x050
- ITEM_FLUFFY_TAIL, // 0x051
- ITEM_052,
- ITEM_SUPER_REPEL, // 0x053
- ITEM_MAX_REPEL, // 0x054
- ITEM_ESCAPE_ROPE, // 0x055
- ITEM_REPEL, // 0x056
- ITEM_057,
- ITEM_058,
- ITEM_059,
- ITEM_05A,
- ITEM_05B,
- ITEM_05C,
- ITEM_SUN_STONE, // 0x05d
- ITEM_MOON_STONE, // 0x05e
- ITEM_FIRE_STONE, // 0x05f
- ITEM_THUNDER_STONE, // 0x060
- ITEM_WATER_STONE, // 0x061
- ITEM_LEAF_STONE, // 0x062
- ITEM_063,
- ITEM_064,
- ITEM_065,
- ITEM_066,
- ITEM_TINY_MUSHROOM, // 0x067
- ITEM_BIG_MUSHROOM, // 0x068
- ITEM_069,
- ITEM_PEARL, // 0x06a
- ITEM_BIG_PEARL, // 0x06b
- ITEM_STARDUST, // 0x06c
- ITEM_STAR_PIECE, // 0x06d
- ITEM_NUGGET, // 0x06e
- ITEM_HEART_SCALE, // 0x06f
- ITEM_070,
- ITEM_071,
- ITEM_072,
- ITEM_073,
- ITEM_074,
- ITEM_075,
- ITEM_076,
- ITEM_077,
- ITEM_078,
- ITEM_ORANGE_MAIL, // 0x079
- ITEM_HARBOR_MAIL, // 0x07a
- ITEM_GLITTER_MAIL, // 0x07b
- ITEM_MECH_MAIL, // 0x07c
- ITEM_WOOD_MAIL, // 0x07d
- ITEM_WAVE_MAIL, // 0x07e
- ITEM_BEAD_MAIL, // 0x07f
- ITEM_SHADOW_MAIL, // 0x080
- ITEM_TROPIC_MAIL, // 0x081
- ITEM_DREAM_MAIL, // 0x082
- ITEM_FAB_MAIL, // 0x083
- ITEM_RETRO_MAIL, // 0x084
- ITEM_CHERI_BERRY, // 0x085
- ITEM_CHESTO_BERRY, // 0x086
- ITEM_PECHA_BERRY, // 0x087
- ITEM_RAWST_BERRY, // 0x088
- ITEM_ASPEAR_BERRY, // 0x089
- ITEM_LEPPA_BERRY, // 0x08a
- ITEM_ORAN_BERRY, // 0x08b
- ITEM_PERSIM_BERRY, // 0x08c
- ITEM_LUM_BERRY, // 0x08d
- ITEM_SITRUS_BERRY, // 0x08e
- ITEM_FIGY_BERRY, // 0x08f
- ITEM_WIKI_BERRY, // 0x090
- ITEM_MAGO_BERRY, // 0x091
- ITEM_AGUAV_BERRY, // 0x092
- ITEM_IAPAPA_BERRY, // 0x093
- ITEM_RAZZ_BERRY, // 0x094
- ITEM_BLUK_BERRY, // 0x095
- ITEM_NANAB_BERRY, // 0x096
- ITEM_WEPEAR_BERRY, // 0x097
- ITEM_PINAP_BERRY, // 0x098
- ITEM_POMEG_BERRY, // 0x099
- ITEM_KELPSY_BERRY, // 0x09a
- ITEM_QUALOT_BERRY, // 0x09b
- ITEM_HONDEW_BERRY, // 0x09c
- ITEM_GREPA_BERRY, // 0x09d
- ITEM_TAMATO_BERRY, // 0x09e
- ITEM_CORNN_BERRY, // 0x09f
- ITEM_MAGOST_BERRY, // 0x0a0
- ITEM_RABUTA_BERRY, // 0x0a1
- ITEM_NOMEL_BERRY, // 0x0a2
- ITEM_SPELON_BERRY, // 0x0a3
- ITEM_PAMTRE_BERRY, // 0x0a4
- ITEM_WATMEL_BERRY, // 0x0a5
- ITEM_DURIN_BERRY, // 0x0a6
- ITEM_BELUE_BERRY, // 0x0a7
- ITEM_LIECHI_BERRY, // 0x0a8
- ITEM_GANLON_BERRY, // 0x0a9
- ITEM_SALAC_BERRY, // 0x0aa
- ITEM_PETAYA_BERRY, // 0x0ab
- ITEM_APICOT_BERRY, // 0x0ac
- ITEM_LANSAT_BERRY, // 0x0ad
- ITEM_STARF_BERRY, // 0x0ae
- ITEM_ENIGMA_BERRY, // 0x0af
- ITEM_0B0,
- ITEM_0B1,
- ITEM_0B2,
- ITEM_BRIGHT_POWDER, // 0x0b3
- ITEM_WHITE_HERB, // 0x0b4
- ITEM_MACHO_BRACE, // 0x0b5
- ITEM_EXP_SHARE, // 0x0b6
- ITEM_QUICK_CLAW, // 0x0b7
- ITEM_SOOTHE_BELL, // 0x0b8
- ITEM_MENTAL_HERB, // 0x0b9
- ITEM_CHOICE_BAND, // 0x0ba
- ITEM_KINGS_ROCK, // 0x0bb
- ITEM_SILVER_POWDER, // 0x0bc
- ITEM_AMULET_COIN, // 0x0bd
- ITEM_CLEANSE_TAG, // 0x0be
- ITEM_SOUL_DEW, // 0x0bf
- ITEM_DEEP_SEA_TOOTH, // 0x0c0
- ITEM_DEEP_SEA_SCALE, // 0x0c1
- ITEM_SMOKE_BALL, // 0x0c2
- ITEM_EVERSTONE, // 0x0c3
- ITEM_FOCUS_BAND, // 0x0c4
- ITEM_LUCKY_EGG, // 0x0c5
- ITEM_SCOPE_LENS, // 0x0c6
- ITEM_METAL_COAT, // 0x0c7
- ITEM_LEFTOVERS, // 0x0c8
- ITEM_DRAGON_SCALE, // 0x0c9
- ITEM_LIGHT_BALL, // 0x0ca
- ITEM_SOFT_SAND, // 0x0cb
- ITEM_HARD_STONE, // 0x0cc
- ITEM_MIRACLE_SEED, // 0x0cd
- ITEM_BLACK_GLASSES, // 0x0ce
- ITEM_BLACK_BELT, // 0x0cf
- ITEM_MAGNET, // 0x0d0
- ITEM_MYSTIC_WATER, // 0x0d1
- ITEM_SHARP_BEAK, // 0x0d2
- ITEM_POISON_BARB, // 0x0d3
- ITEM_NEVER_MELT_ICE, // 0x0d4
- ITEM_SPELL_TAG, // 0x0d5
- ITEM_TWISTED_SPOON, // 0x0d6
- ITEM_CHARCOAL, // 0x0d7
- ITEM_DRAGON_FANG, // 0x0d8
- ITEM_SILK_SCARF, // 0x0d9
- ITEM_UP_GRADE, // 0x0da
- ITEM_SHELL_BELL, // 0x0db
- ITEM_SEA_INCENSE, // 0x0dc
- ITEM_LAX_INCENSE, // 0x0dd
- ITEM_LUCKY_PUNCH, // 0x0de
- ITEM_METAL_POWDER, // 0x0df
- ITEM_THICK_CLUB, // 0x0e0
- ITEM_STICK, // 0x0e1
- ITEM_0E2,
- ITEM_0E3,
- ITEM_0E4,
- ITEM_0E5,
- ITEM_0E6,
- ITEM_0E7,
- ITEM_0E8,
- ITEM_0E9,
- ITEM_0EA,
- ITEM_0EB,
- ITEM_0EC,
- ITEM_0ED,
- ITEM_0EE,
- ITEM_0EF,
- ITEM_0F0,
- ITEM_0F1,
- ITEM_0F2,
- ITEM_0F3,
- ITEM_0F4,
- ITEM_0F5,
- ITEM_0F6,
- ITEM_0F7,
- ITEM_0F8,
- ITEM_0F9,
- ITEM_0FA,
- ITEM_0FB,
- ITEM_0FC,
- ITEM_0FD,
- ITEM_RED_SCARF, // 0x0fe
- ITEM_BLUE_SCARF, // 0x0ff
- ITEM_PINK_SCARF, // 0x100
- ITEM_GREEN_SCARF, // 0x101
- ITEM_YELLOW_SCARF, // 0x102
- ITEM_MACH_BIKE, // 0x103
- ITEM_COIN_CASE, // 0x104
- ITEM_ITEMFINDER, // 0x105
- ITEM_OLD_ROD, // 0x106
- ITEM_GOOD_ROD, // 0x107
- ITEM_SUPER_ROD, // 0x108
- ITEM_SS_TICKET, // 0x109
- ITEM_CONTEST_PASS, // 0x10a
- ITEM_10B,
- ITEM_WAILMER_PAIL, // 0x10c
- ITEM_DEVON_GOODS, // 0x10d
- ITEM_SOOT_SACK, // 0x10e
- ITEM_BASEMENT_KEY, // 0x10f
- ITEM_ACRO_BIKE, // 0x110
- ITEM_POKEBLOCK_CASE, // 0x111
- ITEM_LETTER, // 0x112
- ITEM_EON_TICKET, // 0x113
- ITEM_RED_ORB, // 0x114
- ITEM_BLUE_ORB, // 0x115
- ITEM_SCANNER, // 0x116
- ITEM_GO_GOGGLES, // 0x117
- ITEM_METEORITE, // 0x118
- ITEM_ROOM_1_KEY, // 0x119
- ITEM_ROOM_2_KEY, // 0x11a
- ITEM_ROOM_4_KEY, // 0x11b
- ITEM_ROOM_6_KEY, // 0x11c
- ITEM_STORAGE_KEY, // 0x11d
- ITEM_ROOT_FOSSIL, // 0x11e
- ITEM_CLAW_FOSSIL, // 0x11f
- ITEM_DEVON_SCOPE, // 0x120
- ITEM_TM01, // 0x121
- ITEM_TM02, // 0x122
- ITEM_TM03, // 0x123
- ITEM_TM04, // 0x124
- ITEM_TM05, // 0x125
- ITEM_TM06, // 0x126
- ITEM_TM07, // 0x127
- ITEM_TM08, // 0x128
- ITEM_TM09, // 0x129
- ITEM_TM10, // 0x12a
- ITEM_TM11, // 0x12b
- ITEM_TM12, // 0x12c
- ITEM_TM13, // 0x12d
- ITEM_TM14, // 0x12e
- ITEM_TM15, // 0x12f
- ITEM_TM16, // 0x130
- ITEM_TM17, // 0x131
- ITEM_TM18, // 0x132
- ITEM_TM19, // 0x133
- ITEM_TM20, // 0x134
- ITEM_TM21, // 0x135
- ITEM_TM22, // 0x136
- ITEM_TM23, // 0x137
- ITEM_TM24, // 0x138
- ITEM_TM25, // 0x139
- ITEM_TM26, // 0x13a
- ITEM_TM27, // 0x13b
- ITEM_TM28, // 0x13c
- ITEM_TM29, // 0x13d
- ITEM_TM30, // 0x13e
- ITEM_TM31, // 0x13f
- ITEM_TM32, // 0x140
- ITEM_TM33, // 0x141
- ITEM_TM34, // 0x142
- ITEM_TM35, // 0x143
- ITEM_TM36, // 0x144
- ITEM_TM37, // 0x145
- ITEM_TM38, // 0x146
- ITEM_TM39, // 0x147
- ITEM_TM40, // 0x148
- ITEM_TM41, // 0x149
- ITEM_TM42, // 0x14a
- ITEM_TM43, // 0x14b
- ITEM_TM44, // 0x14c
- ITEM_TM45, // 0x14d
- ITEM_TM46, // 0x14e
- ITEM_TM47, // 0x14f
- ITEM_TM48, // 0x150
- ITEM_TM49, // 0x151
- ITEM_TM50, // 0x152
- ITEM_HM01, // 0x153
- ITEM_HM02, // 0x154
- ITEM_HM03, // 0x155
- ITEM_HM04, // 0x156
- ITEM_HM05, // 0x157
- ITEM_HM06, // 0x158
- ITEM_HM07, // 0x159
- ITEM_HM08, // 0x15a
- ITEM_15B,
- ITEM_15C,
-
- // FireRed/LeafGreen
- ITEM_OAKS_PARCEL, // 0x15d
- ITEM_POKE_FLUTE, // 0x15e
- ITEM_SECRET_KEY, // 0x15f
- ITEM_BIKE_VOUCHER, // 0x160
- ITEM_GOLD_TEETH, // 0x161
- ITEM_OLD_AMBER, // 0x162
- ITEM_CARD_KEY, // 0x163
- ITEM_LIFT_KEY, // 0x164
- ITEM_HELIX_FOSSIL, // 0x165
- ITEM_DOME_FOSSIL, // 0x166
- ITEM_SILPH_SCOPE, // 0x167
- ITEM_BICYCLE, // 0x168
- ITEM_TOWN_MAP, // 0x169
- ITEM_VS_SEEKER, // 0x16a
- ITEM_FAME_CHECKER, // 0x16b
- ITEM_TM_CASE, // 0x16c
- ITEM_BERRY_POUCH, // 0x16d
- ITEM_TEACHY_TV, // 0x16e
- ITEM_TRI_PASS, // 0x16f
- ITEM_RAINBOW_PASS, // 0x170
- ITEM_TEA, // 0x171
- ITEM_MYSTIC_TICKET, // 0x172
- ITEM_AURORA_TICKET, // 0x173
- ITEM_POWDER_JAR, // 0x174
- ITEM_RUBY, // 0x175
- ITEM_SAPPHIRE, // 0x176
-
- // Emerald
- ITEM_MAGMA_EMBLEM, // 0x177
- ITEM_OLD_SEA_MAP, // 0x178
-};
-
-#define NUM_TECHNICAL_MACHINES 50
-#define NUM_HIDDEN_MACHINES 8
-
-#endif // GUARD_ITEMS_H
diff --git a/include/link.h b/include/link.h
index ccde9818c..fe5429497 100644
--- a/include/link.h
+++ b/include/link.h
@@ -2,6 +2,7 @@
#define GUARD_LINK_H
#define MAX_LINK_PLAYERS 4
+#define MAX_RFU_PLAYERS 5
#define CMD_LENGTH 8
#define QUEUE_CAPACITY 50
#define BLOCK_BUFFER_SIZE 0x100
@@ -131,7 +132,7 @@ struct BlockRequest
extern const struct BlockRequest sBlockRequestLookupTable[5];
extern struct Link gLink;
-extern u16 gRecvCmds[CMD_LENGTH][MAX_LINK_PLAYERS];
+extern u16 gRecvCmds[MAX_RFU_PLAYERS][CMD_LENGTH];
extern u8 gBlockSendBuffer[BLOCK_BUFFER_SIZE];
extern u16 gLinkType;
extern u32 gLinkStatus;
diff --git a/include/mail.h b/include/mail.h
index 1a29d73b5..042586653 100644
--- a/include/mail.h
+++ b/include/mail.h
@@ -1,8 +1,6 @@
#ifndef GUARD_MAIL_H
#define GUARD_MAIL_H
-#include "items.h"
-
#define IS_ITEM_MAIL(itemId)((itemId == ITEM_ORANGE_MAIL \
|| itemId == ITEM_HARBOR_MAIL \
|| itemId == ITEM_GLITTER_MAIL \
@@ -16,10 +14,20 @@
|| itemId == ITEM_FAB_MAIL \
|| itemId == ITEM_RETRO_MAIL))
+// mail.h
+void ReadMail(struct MailStruct *mail, void (*callback)(void), bool8 flag);
+// mail_data.h
+void ClearMailData(void);
+void ClearMailStruct(struct MailStruct *mail);
bool8 MonHasMail(struct Pokemon *mon);
-void TakeMailFromMon(struct Pokemon *mon);
+u8 GiveMailToMon(struct Pokemon *mon, u16 itemId);
+u16 SpeciesToMailSpecies(u16 species, u32 personality);
+u16 MailSpeciesToSpecies(u16 mailSpecies, u16 *buffer);
u8 GiveMailToMon2(struct Pokemon *mon, struct MailStruct *mail);
-void ClearMailStruct(struct MailStruct *mail);
+void TakeMailFromMon(struct Pokemon *mon);
+void ClearMailItemId(u8 mailId);
+u8 TakeMailFromMon2(struct Pokemon *mon);
+bool8 ItemIsMail(u16 itemId);
#endif // GUARD_MAIL_H
diff --git a/include/mail_data.h b/include/mail_data.h
deleted file mode 100644
index bf6540bad..000000000
--- a/include/mail_data.h
+++ /dev/null
@@ -1,12 +0,0 @@
-#ifndef GUARD_MAIL_DATA_H
-#define GUARD_MAIL_DATA_H
-
-// Exported type declarations
-
-// Exported RAM declarations
-
-// Exported ROM declarations
-
-u16 sub_80D45E8(u16, u16 *);
-
-#endif //GUARD_MAIL_DATA_H
diff --git a/include/map_constants.h b/include/map_constants.h
deleted file mode 100644
index 6199793c8..000000000
--- a/include/map_constants.h
+++ /dev/null
@@ -1,1342 +0,0 @@
-#ifndef GUARD_MAP_CONSTANTS_H
-#define GUARD_MAP_CONSTANTS_H
-
-//--------------------------------------------------
-// Map Group 0
-//--------------------------------------------------
-
-enum
-{
- MAP_ID_PETALBURG_CITY,
- MAP_ID_SLATEPORT_CITY,
- MAP_ID_MAUVILLE_CITY,
- MAP_ID_RUSTBORO_CITY,
- MAP_ID_FORTREE_CITY,
- MAP_ID_LILYCOVE_CITY,
- MAP_ID_MOSSDEEP_CITY,
- MAP_ID_SOOTOPOLIS_CITY,
- MAP_ID_EVER_GRANDE_CITY,
- MAP_ID_LITTLEROOT_TOWN,
- MAP_ID_OLDALE_TOWN,
- MAP_ID_DEWFORD_TOWN,
- MAP_ID_LAVARIDGE_TOWN,
- MAP_ID_FALLARBOR_TOWN,
- MAP_ID_VERDANTURF_TOWN,
- MAP_ID_PACIFIDLOG_TOWN,
- MAP_ID_ROUTE101,
- MAP_ID_ROUTE102,
- MAP_ID_ROUTE103,
- MAP_ID_ROUTE104,
- MAP_ID_ROUTE105,
- MAP_ID_ROUTE106,
- MAP_ID_ROUTE107,
- MAP_ID_ROUTE108,
- MAP_ID_ROUTE109,
- MAP_ID_ROUTE110,
- MAP_ID_ROUTE111,
- MAP_ID_ROUTE112,
- MAP_ID_ROUTE113,
- MAP_ID_ROUTE114,
- MAP_ID_ROUTE115,
- MAP_ID_ROUTE116,
- MAP_ID_ROUTE117,
- MAP_ID_ROUTE118,
- MAP_ID_ROUTE119,
- MAP_ID_ROUTE120,
- MAP_ID_ROUTE121,
- MAP_ID_ROUTE122,
- MAP_ID_ROUTE123,
- MAP_ID_ROUTE124,
- MAP_ID_ROUTE125,
- MAP_ID_ROUTE126,
- MAP_ID_ROUTE127,
- MAP_ID_ROUTE128,
- MAP_ID_ROUTE129,
- MAP_ID_ROUTE130,
- MAP_ID_ROUTE131,
- MAP_ID_ROUTE132,
- MAP_ID_ROUTE133,
- MAP_ID_ROUTE134,
- MAP_ID_UNDERWATER1,
- MAP_ID_UNDERWATER2,
- MAP_ID_UNDERWATER3,
- MAP_ID_UNDERWATER4,
- MAP_ID_UNDERWATER5,
- MAP_ID_UNDERWATER6,
- MAP_ID_UNDERWATER7,
-};
-
-#define MAP_GROUP_PETALBURG_CITY 0
-#define MAP_GROUP_SLATEPORT_CITY 0
-#define MAP_GROUP_MAUVILLE_CITY 0
-#define MAP_GROUP_RUSTBORO_CITY 0
-#define MAP_GROUP_FORTREE_CITY 0
-#define MAP_GROUP_LILYCOVE_CITY 0
-#define MAP_GROUP_MOSSDEEP_CITY 0
-#define MAP_GROUP_SOOTOPOLIS_CITY 0
-#define MAP_GROUP_EVER_GRANDE_CITY 0
-#define MAP_GROUP_LITTLEROOT_TOWN 0
-#define MAP_GROUP_OLDALE_TOWN 0
-#define MAP_GROUP_DEWFORD_TOWN 0
-#define MAP_GROUP_LAVARIDGE_TOWN 0
-#define MAP_GROUP_FALLARBOR_TOWN 0
-#define MAP_GROUP_VERDANTURF_TOWN 0
-#define MAP_GROUP_PACIFIDLOG_TOWN 0
-#define MAP_GROUP_ROUTE101 0
-#define MAP_GROUP_ROUTE102 0
-#define MAP_GROUP_ROUTE103 0
-#define MAP_GROUP_ROUTE104 0
-#define MAP_GROUP_ROUTE105 0
-#define MAP_GROUP_ROUTE106 0
-#define MAP_GROUP_ROUTE107 0
-#define MAP_GROUP_ROUTE108 0
-#define MAP_GROUP_ROUTE109 0
-#define MAP_GROUP_ROUTE110 0
-#define MAP_GROUP_ROUTE111 0
-#define MAP_GROUP_ROUTE112 0
-#define MAP_GROUP_ROUTE113 0
-#define MAP_GROUP_ROUTE114 0
-#define MAP_GROUP_ROUTE115 0
-#define MAP_GROUP_ROUTE116 0
-#define MAP_GROUP_ROUTE117 0
-#define MAP_GROUP_ROUTE118 0
-#define MAP_GROUP_ROUTE119 0
-#define MAP_GROUP_ROUTE120 0
-#define MAP_GROUP_ROUTE121 0
-#define MAP_GROUP_ROUTE122 0
-#define MAP_GROUP_ROUTE123 0
-#define MAP_GROUP_ROUTE124 0
-#define MAP_GROUP_ROUTE125 0
-#define MAP_GROUP_ROUTE126 0
-#define MAP_GROUP_ROUTE127 0
-#define MAP_GROUP_ROUTE128 0
-#define MAP_GROUP_ROUTE129 0
-#define MAP_GROUP_ROUTE130 0
-#define MAP_GROUP_ROUTE131 0
-#define MAP_GROUP_ROUTE132 0
-#define MAP_GROUP_ROUTE133 0
-#define MAP_GROUP_ROUTE134 0
-#define MAP_GROUP_UNDERWATER1 0
-#define MAP_GROUP_UNDERWATER2 0
-#define MAP_GROUP_UNDERWATER3 0
-#define MAP_GROUP_UNDERWATER4 0
-#define MAP_GROUP_UNDERWATER5 0
-#define MAP_GROUP_UNDERWATER6 0
-#define MAP_GROUP_UNDERWATER7 0
-//--------------------------------------------------
-// Map Group 1
-//--------------------------------------------------
-
-enum
-{
- MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F,
- MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F,
- MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_1F,
- MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_2F,
- MAP_ID_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB,
-};
-
-#define MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F 1
-#define MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_2F 1
-#define MAP_GROUP_LITTLEROOT_TOWN_MAYS_HOUSE_1F 1
-#define MAP_GROUP_LITTLEROOT_TOWN_MAYS_HOUSE_2F 1
-#define MAP_GROUP_LITTLEROOT_TOWN_PROFESSOR_BIRCHS_LAB 1
-
-//--------------------------------------------------
-// Map Group 2
-//--------------------------------------------------
-
-enum
-{
- MAP_ID_OLDALE_TOWN_HOUSE1,
- MAP_ID_OLDALE_TOWN_HOUSE2,
- MAP_ID_OLDALE_TOWN_POKEMON_CENTER_1F,
- MAP_ID_OLDALE_TOWN_POKEMON_CENTER_2F,
- MAP_ID_OLDALE_TOWN_MART,
-};
-
-#define MAP_GROUP_OLDALE_TOWN_HOUSE1 2
-#define MAP_GROUP_OLDALE_TOWN_HOUSE2 2
-#define MAP_GROUP_OLDALE_TOWN_POKEMON_CENTER_1F 2
-#define MAP_GROUP_OLDALE_TOWN_POKEMON_CENTER_2F 2
-#define MAP_GROUP_OLDALE_TOWN_MART 2
-
-//--------------------------------------------------
-// Map Group 3
-//--------------------------------------------------
-
-enum
-{
- MAP_ID_DEWFORD_TOWN_HOUSE1,
- MAP_ID_DEWFORD_TOWN_POKEMON_CENTER_1F,
- MAP_ID_DEWFORD_TOWN_POKEMON_CENTER_2F,
- MAP_ID_DEWFORD_TOWN_GYM,
- MAP_ID_DEWFORD_TOWN_HALL,
- MAP_ID_DEWFORD_TOWN_HOUSE2,
-};
-
-#define MAP_GROUP_DEWFORD_TOWN_HOUSE1 3
-#define MAP_GROUP_DEWFORD_TOWN_POKEMON_CENTER_1F 3
-#define MAP_GROUP_DEWFORD_TOWN_POKEMON_CENTER_2F 3
-#define MAP_GROUP_DEWFORD_TOWN_GYM 3
-#define MAP_GROUP_DEWFORD_TOWN_HALL 3
-#define MAP_GROUP_DEWFORD_TOWN_HOUSE2 3
-
-//--------------------------------------------------
-// Map Group 4
-//--------------------------------------------------
-
-enum
-{
- MAP_ID_LAVARIDGE_TOWN_HERB_SHOP,
- MAP_ID_LAVARIDGE_TOWN_GYM_1F,
- MAP_ID_LAVARIDGE_TOWN_GYM_B1F,
- MAP_ID_LAVARIDGE_TOWN_HOUSE,
- MAP_ID_LAVARIDGE_TOWN_MART,
- MAP_ID_LAVARIDGE_TOWN_POKEMON_CENTER_1F,
- MAP_ID_LAVARIDGE_TOWN_POKEMON_CENTER_2F,
-};
-
-#define MAP_GROUP_LAVARIDGE_TOWN_HERB_SHOP 4
-#define MAP_GROUP_LAVARIDGE_TOWN_GYM_1F 4
-#define MAP_GROUP_LAVARIDGE_TOWN_GYM_B1F 4
-#define MAP_GROUP_LAVARIDGE_TOWN_HOUSE 4
-#define MAP_GROUP_LAVARIDGE_TOWN_MART 4
-#define MAP_GROUP_LAVARIDGE_TOWN_POKEMON_CENTER_1F 4
-#define MAP_GROUP_LAVARIDGE_TOWN_POKEMON_CENTER_2F 4
-
-//--------------------------------------------------
-// Map Group 5
-//--------------------------------------------------
-
-enum
-{
- MAP_ID_FALLARBOR_TOWN_MART,
- MAP_ID_FALLARBOR_TOWN_TENT_LOBBY,
- MAP_ID_FALLARBOR_TOWN_TENT_HALL,
- MAP_ID_FALLARBOR_TOWN_TENT_ARENA,
- MAP_ID_FALLARBOR_TOWN_POKEMON_CENTER_1F,
- MAP_ID_FALLARBOR_TOWN_POKEMON_CENTER_2F,
- MAP_ID_FALLARBOR_TOWN_HOUSE1,
- MAP_ID_FALLARBOR_TOWN_HOUSE2,
-};
-
-#define MAP_GROUP_FALLARBOR_TOWN_MART 5
-#define MAP_GROUP_FALLARBOR_TOWN_TENT_LOBBY 5
-#define MAP_GROUP_FALLARBOR_TOWN_TENT_HALL 5
-#define MAP_GROUP_FALLARBOR_TOWN_TENT_ARENA 5
-#define MAP_GROUP_FALLARBOR_TOWN_POKEMON_CENTER_1F 5
-#define MAP_GROUP_FALLARBOR_TOWN_POKEMON_CENTER_2F 5
-#define MAP_GROUP_FALLARBOR_TOWN_HOUSE1 5
-#define MAP_GROUP_FALLARBOR_TOWN_HOUSE2 5
-
-//--------------------------------------------------
-// Map Group 6
-//--------------------------------------------------
-
-enum
-{
- MAP_ID_VERDANTURF_TOWN_TENT_LOBBY,
- MAP_ID_VERDANTURF_TOWN_TENT_HALL,
- MAP_ID_VERDANTURF_TOWN_TENT_ARENA,
- MAP_ID_VERDANTURF_TOWN_MART,
- MAP_ID_VERDANTURF_TOWN_POKEMON_CENTER_1F,
- MAP_ID_VERDANTURF_TOWN_POKEMON_CENTER_2F,
- MAP_ID_VERDANTURF_TOWN_WANDAS_HOUSE,
- MAP_ID_VERDANTURF_TOWN_FRIENDSHIP_RATERS_HOUSE,
- MAP_ID_VERDANTURF_TOWN_HOUSE,
-};
-
-#define MAP_GROUP_VERDANTURF_TOWN_TENT_LOBBY 6
-#define MAP_GROUP_VERDANTURF_TOWN_TENT_HALL 6
-#define MAP_GROUP_VERDANTURF_TOWN_TENT_ARENA 6
-#define MAP_GROUP_VERDANTURF_TOWN_MART 6
-#define MAP_GROUP_VERDANTURF_TOWN_POKEMON_CENTER_1F 6
-#define MAP_GROUP_VERDANTURF_TOWN_POKEMON_CENTER_2F 6
-#define MAP_GROUP_VERDANTURF_TOWN_WANDAS_HOUSE 6
-#define MAP_GROUP_VERDANTURF_TOWN_FRIENDSHIP_RATERS_HOUSE 6
-#define MAP_GROUP_VERDANTURF_TOWN_HOUSE 6
-
-//--------------------------------------------------
-// Map Group 7
-//--------------------------------------------------
-
-enum
-{
- MAP_ID_PACIFIDLOG_TOWN_POKEMON_CENTER_1F,
- MAP_ID_PACIFIDLOG_TOWN_POKEMON_CENTER_2F,
- MAP_ID_PACIFIDLOG_TOWN_HOUSE1,
- MAP_ID_PACIFIDLOG_TOWN_HOUSE2,
- MAP_ID_PACIFIDLOG_TOWN_HOUSE3,
- MAP_ID_PACIFIDLOG_TOWN_HOUSE4,
- MAP_ID_PACIFIDLOG_TOWN_HOUSE5,
-};
-
-#define MAP_GROUP_PACIFIDLOG_TOWN_POKEMON_CENTER_1F 7
-#define MAP_GROUP_PACIFIDLOG_TOWN_POKEMON_CENTER_2F 7
-#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE1 7
-#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE2 7
-#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE3 7
-#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE4 7
-#define MAP_GROUP_PACIFIDLOG_TOWN_HOUSE5 7
-
-//--------------------------------------------------
-// Map Group 8
-//--------------------------------------------------
-
-enum
-{
- MAP_ID_PETALBURG_CITY_WALLYS_HOUSE,
- MAP_ID_PETALBURG_CITY_GYM,
- MAP_ID_PETALBURG_CITY_HOUSE1,
- MAP_ID_PETALBURG_CITY_HOUSE2,
- MAP_ID_PETALBURG_CITY_POKEMON_CENTER_1F,
- MAP_ID_PETALBURG_CITY_POKEMON_CENTER_2F,
- MAP_ID_PETALBURG_CITY_MART,
-};
-
-#define MAP_GROUP_PETALBURG_CITY_WALLYS_HOUSE 8
-#define MAP_GROUP_PETALBURG_CITY_GYM 8
-#define MAP_GROUP_PETALBURG_CITY_HOUSE1 8
-#define MAP_GROUP_PETALBURG_CITY_HOUSE2 8
-#define MAP_GROUP_PETALBURG_CITY_POKEMON_CENTER_1F 8
-#define MAP_GROUP_PETALBURG_CITY_POKEMON_CENTER_2F 8
-#define MAP_GROUP_PETALBURG_CITY_MART 8
-
-//--------------------------------------------------
-// Map Group 9
-//--------------------------------------------------
-
-enum
-{
- MAP_ID_SLATEPORT_CITY_STERNS_SHIPYARD_1F,
- MAP_ID_SLATEPORT_CITY_STERNS_SHIPYARD_2F,
- MAP_ID_SLATEPORT_CITY_TENT_LOBBY,
- MAP_ID_SLATEPORT_CITY_TENT_HALL,
- MAP_ID_SLATEPORT_CITY_TENT_ARENA,
- MAP_ID_SLATEPORT_CITY_HOUSE1,
- MAP_ID_SLATEPORT_CITY_POKEMON_FAN_CLUB,
- MAP_ID_SLATEPORT_CITY_OCEANIC_MUSEUM_1F,
- MAP_ID_SLATEPORT_CITY_OCEANIC_MUSEUM_2F,
- MAP_ID_SLATEPORT_CITY_HARBOR,
- MAP_ID_SLATEPORT_CITY_HOUSE2,
- MAP_ID_SLATEPORT_CITY_POKEMON_CENTER_1F,
- MAP_ID_SLATEPORT_CITY_POKEMON_CENTER_2F,
- MAP_ID_SLATEPORT_CITY_MART,
-};
-
-#define MAP_GROUP_SLATEPORT_CITY_STERNS_SHIPYARD_1F 9
-#define MAP_GROUP_SLATEPORT_CITY_STERNS_SHIPYARD_2F 9
-#define MAP_GROUP_SLATEPORT_CITY_TENT_LOBBY 9
-#define MAP_GROUP_SLATEPORT_CITY_TENT_HALL 9
-#define MAP_GROUP_SLATEPORT_CITY_TENT_ARENA 9
-#define MAP_GROUP_SLATEPORT_CITY_HOUSE1 9
-#define MAP_GROUP_SLATEPORT_CITY_POKEMON_FAN_CLUB 9
-#define MAP_GROUP_SLATEPORT_CITY_OCEANIC_MUSEUM_1F 9
-#define MAP_GROUP_SLATEPORT_CITY_OCEANIC_MUSEUM_2F 9
-#define MAP_GROUP_SLATEPORT_CITY_HARBOR 9
-#define MAP_GROUP_SLATEPORT_CITY_HOUSE2 9
-#define MAP_GROUP_SLATEPORT_CITY_POKEMON_CENTER_1F 9
-#define MAP_GROUP_SLATEPORT_CITY_POKEMON_CENTER_2F 9
-#define MAP_GROUP_SLATEPORT_CITY_MART 9
-
-//--------------------------------------------------
-// Map Group 10
-//--------------------------------------------------
-
-enum
-{
- MAP_ID_MAUVILLE_CITY_GYM,
- MAP_ID_MAUVILLE_CITY_BIKE_SHOP,
- MAP_ID_MAUVILLE_CITY_HOUSE1,
- MAP_ID_MAUVILLE_CITY_GAME_CORNER,
- MAP_ID_MAUVILLE_CITY_HOUSE2,
- MAP_ID_MAUVILLE_CITY_POKEMON_CENTER_1F,
- MAP_ID_MAUVILLE_CITY_POKEMON_CENTER_2F,
- MAP_ID_MAUVILLE_CITY_MART,
-};
-
-#define MAP_GROUP_MAUVILLE_CITY_GYM 10
-#define MAP_GROUP_MAUVILLE_CITY_BIKE_SHOP 10
-#define MAP_GROUP_MAUVILLE_CITY_HOUSE1 10
-#define MAP_GROUP_MAUVILLE_CITY_GAME_CORNER 10
-#define MAP_GROUP_MAUVILLE_CITY_HOUSE2 10
-#define MAP_GROUP_MAUVILLE_CITY_POKEMON_CENTER_1F 10
-#define MAP_GROUP_MAUVILLE_CITY_POKEMON_CENTER_2F 10
-#define MAP_GROUP_MAUVILLE_CITY_MART 10
-
-//--------------------------------------------------
-// Map Group 11
-//--------------------------------------------------
-
-enum
-{
- MAP_ID_RUSTBORO_CITY_DEVON_CORP_1F,
- MAP_ID_RUSTBORO_CITY_DEVON_CORP_2F,
- MAP_ID_RUSTBORO_CITY_DEVON_CORP_3F,
- MAP_ID_RUSTBORO_CITY_GYM,
- MAP_ID_RUSTBORO_CITY_POKEMON_SCHOOL,
- MAP_ID_RUSTBORO_CITY_POKEMON_CENTER_1F,
- MAP_ID_RUSTBORO_CITY_POKEMON_CENTER_2F,
- MAP_ID_RUSTBORO_CITY_MART,
- MAP_ID_RUSTBORO_CITY_FLAT1_1F,
- MAP_ID_RUSTBORO_CITY_FLAT1_2F,
- MAP_ID_RUSTBORO_CITY_HOUSE1,
- MAP_ID_RUSTBORO_CITY_CUTTERS_HOUSE,
- MAP_ID_RUSTBORO_CITY_HOUSE2,
- MAP_ID_RUSTBORO_CITY_FLAT2_1F,
- MAP_ID_RUSTBORO_CITY_FLAT2_2F,
- MAP_ID_RUSTBORO_CITY_FLAT2_3F,
- MAP_ID_RUSTBORO_CITY_HOUSE3,
-};
-
-#define MAP_GROUP_RUSTBORO_CITY_DEVON_CORP_1F 11
-#define MAP_GROUP_RUSTBORO_CITY_DEVON_CORP_2F 11
-#define MAP_GROUP_RUSTBORO_CITY_DEVON_CORP_3F 11
-#define MAP_GROUP_RUSTBORO_CITY_GYM 11
-#define MAP_GROUP_RUSTBORO_CITY_POKEMON_SCHOOL 11
-#define MAP_GROUP_RUSTBORO_CITY_POKEMON_CENTER_1F 11
-#define MAP_GROUP_RUSTBORO_CITY_POKEMON_CENTER_2F 11
-#define MAP_GROUP_RUSTBORO_CITY_MART 11
-#define MAP_GROUP_RUSTBORO_CITY_FLAT1_1F 11
-#define MAP_GROUP_RUSTBORO_CITY_FLAT1_2F 11
-#define MAP_GROUP_RUSTBORO_CITY_HOUSE1 11
-#define MAP_GROUP_RUSTBORO_CITY_CUTTERS_HOUSE 11
-#define MAP_GROUP_RUSTBORO_CITY_HOUSE2 11
-#define MAP_GROUP_RUSTBORO_CITY_FLAT2_1F 11
-#define MAP_GROUP_RUSTBORO_CITY_FLAT2_2F 11
-#define MAP_GROUP_RUSTBORO_CITY_FLAT2_3F 11
-#define MAP_GROUP_RUSTBORO_CITY_HOUSE3 11
-
-//--------------------------------------------------
-// Map Group 12
-//--------------------------------------------------
-
-enum
-{
- MAP_ID_FORTREE_CITY_HOUSE1,
- MAP_ID_FORTREE_CITY_GYM,
- MAP_ID_FORTREE_CITY_POKEMON_CENTER_1F,
- MAP_ID_FORTREE_CITY_POKEMON_CENTER_2F,
- MAP_ID_FORTREE_CITY_MART,
- MAP_ID_FORTREE_CITY_HOUSE2,
- MAP_ID_FORTREE_CITY_HOUSE3,
- MAP_ID_FORTREE_CITY_HOUSE4,
- MAP_ID_FORTREE_CITY_HOUSE5,
- MAP_ID_FORTREE_CITY_DECORATION_SHOP,
-};
-
-#define MAP_GROUP_FORTREE_CITY_HOUSE1 12
-#define MAP_GROUP_FORTREE_CITY_GYM 12
-#define MAP_GROUP_FORTREE_CITY_POKEMON_CENTER_1F 12
-#define MAP_GROUP_FORTREE_CITY_POKEMON_CENTER_2F 12
-#define MAP_GROUP_FORTREE_CITY_MART 12
-#define MAP_GROUP_FORTREE_CITY_HOUSE2 12
-#define MAP_GROUP_FORTREE_CITY_HOUSE3 12
-#define MAP_GROUP_FORTREE_CITY_HOUSE4 12
-#define MAP_GROUP_FORTREE_CITY_HOUSE5 12
-#define MAP_GROUP_FORTREE_CITY_DECORATION_SHOP 12
-
-//--------------------------------------------------
-// Map Group 13
-//--------------------------------------------------
-
-enum
-{
- MAP_ID_LILYCOVE_CITY_COVE_LILY_MOTEL_1F,
- MAP_ID_LILYCOVE_CITY_COVE_LILY_MOTEL_2F,
- MAP_ID_LILYCOVE_CITY_LILYCOVE_MUSEUM_1F,
- MAP_ID_LILYCOVE_CITY_LILYCOVE_MUSEUM_2F,
- MAP_ID_LILYCOVE_CITY_CONTEST_LOBBY,
- MAP_ID_LILYCOVE_CITY_CONTEST_HALL,
- MAP_ID_LILYCOVE_CITY_POKEMON_CENTER_1F,
- MAP_ID_LILYCOVE_CITY_POKEMON_CENTER_2F,
- MAP_ID_LILYCOVE_CITY_UNUSED_MART,
- MAP_ID_LILYCOVE_CITY_POKEMON_TRAINER_FAN_CLUB,
- MAP_ID_LILYCOVE_CITY_HARBOR,
- MAP_ID_LILYCOVE_CITY_MOVE_DELETERS_HOUSE,
- MAP_ID_LILYCOVE_CITY_HOUSE1,
- MAP_ID_LILYCOVE_CITY_HOUSE2,
- MAP_ID_LILYCOVE_CITY_HOUSE3,
- MAP_ID_LILYCOVE_CITY_HOUSE4,
- MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_1F,
- MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_2F,
- MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_3F,
- MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_4F,
- MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_5F,
- MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP,
- MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR,
-};
-
-#define MAP_GROUP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F 13
-#define MAP_GROUP_LILYCOVE_CITY_COVE_LILY_MOTEL_2F 13
-#define MAP_GROUP_LILYCOVE_CITY_LILYCOVE_MUSEUM_1F 13
-#define MAP_GROUP_LILYCOVE_CITY_LILYCOVE_MUSEUM_2F 13
-#define MAP_GROUP_LILYCOVE_CITY_CONTEST_LOBBY 13
-#define MAP_GROUP_LILYCOVE_CITY_CONTEST_HALL 13
-#define MAP_GROUP_LILYCOVE_CITY_POKEMON_CENTER_1F 13
-#define MAP_GROUP_LILYCOVE_CITY_POKEMON_CENTER_2F 13
-#define MAP_GROUP_LILYCOVE_CITY_UNUSED_MART 13
-#define MAP_GROUP_LILYCOVE_CITY_POKEMON_TRAINER_FAN_CLUB 13
-#define MAP_GROUP_LILYCOVE_CITY_HARBOR 13
-#define MAP_GROUP_LILYCOVE_CITY_MOVE_DELETERS_HOUSE 13
-#define MAP_GROUP_LILYCOVE_CITY_HOUSE1 13
-#define MAP_GROUP_LILYCOVE_CITY_HOUSE2 13
-#define MAP_GROUP_LILYCOVE_CITY_HOUSE3 13
-#define MAP_GROUP_LILYCOVE_CITY_HOUSE4 13
-#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_1F 13
-#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_2F 13
-#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_3F 13
-#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_4F 13
-#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_5F 13
-#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP 13
-#define MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ELEVATOR 13
-
-//--------------------------------------------------
-// Map Group 14
-//--------------------------------------------------
-
-enum
-{
- MAP_ID_MOSSDEEP_CITY_GYM,
- MAP_ID_MOSSDEEP_CITY_HOUSE1,
- MAP_ID_MOSSDEEP_CITY_HOUSE2,
- MAP_ID_MOSSDEEP_CITY_POKEMON_CENTER_1F,
- MAP_ID_MOSSDEEP_CITY_POKEMON_CENTER_2F,
- MAP_ID_MOSSDEEP_CITY_MART,
- MAP_ID_MOSSDEEP_CITY_HOUSE3,
- MAP_ID_MOSSDEEP_CITY_STEVENS_HOUSE,
- MAP_ID_MOSSDEEP_CITY_HOUSE4,
- MAP_ID_MOSSDEEP_CITY_SPACE_CENTER_1F,
- MAP_ID_MOSSDEEP_CITY_SPACE_CENTER_2F,
- MAP_ID_MOSSDEEP_CITY_GAME_CORNER_1F,
- MAP_ID_MOSSDEEP_CITY_GAME_CORNER_B1F,
-};
-
-#define MAP_GROUP_MOSSDEEP_CITY_GYM 14
-#define MAP_GROUP_MOSSDEEP_CITY_HOUSE1 14
-#define MAP_GROUP_MOSSDEEP_CITY_HOUSE2 14
-#define MAP_GROUP_MOSSDEEP_CITY_POKEMON_CENTER_1F 14
-#define MAP_GROUP_MOSSDEEP_CITY_POKEMON_CENTER_2F 14
-#define MAP_GROUP_MOSSDEEP_CITY_MART 14
-#define MAP_GROUP_MOSSDEEP_CITY_HOUSE3 14
-#define MAP_GROUP_MOSSDEEP_CITY_STEVENS_HOUSE 14
-#define MAP_GROUP_MOSSDEEP_CITY_HOUSE4 14
-#define MAP_GROUP_MOSSDEEP_CITY_SPACE_CENTER_1F 14
-#define MAP_GROUP_MOSSDEEP_CITY_SPACE_CENTER_2F 14
-#define MAP_GROUP_MOSSDEEP_CITY_GAME_CORNER_1F 14
-#define MAP_GROUP_MOSSDEEP_CITY_GAME_CORNER_B1F 14
-
-//--------------------------------------------------
-// Map Group 15
-//--------------------------------------------------
-
-enum
-{
- MAP_ID_SOOTOPOLIS_CITY_GYM_1F,
- MAP_ID_SOOTOPOLIS_CITY_GYM_B1F,
- MAP_ID_SOOTOPOLIS_CITY_POKEMON_CENTER_1F,
- MAP_ID_SOOTOPOLIS_CITY_POKEMON_CENTER_2F,
- MAP_ID_SOOTOPOLIS_CITY_MART,
- MAP_ID_SOOTOPOLIS_CITY_HOUSE1,
- MAP_ID_SOOTOPOLIS_CITY_HOUSE2,
- MAP_ID_SOOTOPOLIS_CITY_HOUSE3,
- MAP_ID_SOOTOPOLIS_CITY_HOUSE4,
- MAP_ID_SOOTOPOLIS_CITY_HOUSE5,
- MAP_ID_SOOTOPOLIS_CITY_HOUSE6,
- MAP_ID_SOOTOPOLIS_CITY_HOUSE7,
- MAP_ID_SOOTOPOLIS_CITY_HOUSE8,
- MAP_ID_SOOTOPOLIS_CITY_BATTLEHOUSE_1,
- MAP_ID_SOOTOPOLIS_CITY_BATTLEHOUSE_2,
-};
-
-#define MAP_GROUP_SOOTOPOLIS_CITY_GYM_1F 15
-#define MAP_GROUP_SOOTOPOLIS_CITY_GYM_B1F 15
-#define MAP_GROUP_SOOTOPOLIS_CITY_POKEMON_CENTER_1F 15
-#define MAP_GROUP_SOOTOPOLIS_CITY_POKEMON_CENTER_2F 15
-#define MAP_GROUP_SOOTOPOLIS_CITY_MART 15
-#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE1 15
-#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE2 15
-#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE3 15
-#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE4 15
-#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE5 15
-#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE6 15
-#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE7 15
-#define MAP_GROUP_SOOTOPOLIS_CITY_HOUSE8 15
-#define MAP_ID_SOOTOPOLIS_CITY_BATTLEHOUSE_1 15
-#define MAP_ID_SOOTOPOLIS_CITY_BATTLEHOUSE_2 15
-//--------------------------------------------------
-// Map Group 16
-//--------------------------------------------------
-
-enum
-{
- MAP_ID_EVER_GRANDE_CITY_SIDNEYS_ROOM,
- MAP_ID_EVER_GRANDE_CITY_PHOEBES_ROOM,
- MAP_ID_EVER_GRANDE_CITY_GLACIAS_ROOM,
- MAP_ID_EVER_GRANDE_CITY_DRAKES_ROOM,
- MAP_ID_EVER_GRANDE_CITY_CHAMPIONS_ROOM,
- MAP_ID_EVER_GRANDE_CITY_CORRIDOR1,
- MAP_ID_EVER_GRANDE_CITY_CORRIDOR2,
- MAP_ID_EVER_GRANDE_CITY_CORRIDOR3,
- MAP_ID_EVER_GRANDE_CITY_CORRIDOR4,
- MAP_ID_EVER_GRANDE_CITY_CORRIDOR5,
- MAP_ID_EVER_GRANDE_CITY_POKEMON_LEAGUE_1F,
- MAP_ID_EVER_GRANDE_CITY_HALL_OF_FAME,
- MAP_ID_EVER_GRANDE_CITY_POKEMON_CENTER_1F,
- MAP_ID_EVER_GRANDE_CITY_POKEMON_CENTER_2F,
- MAP_ID_EVER_GRANDE_CITY_POKEMON_LEAGUE_2F,
-};
-
-#define MAP_GROUP_EVER_GRANDE_CITY_SIDNEYS_ROOM 16
-#define MAP_GROUP_EVER_GRANDE_CITY_PHOEBES_ROOM 16
-#define MAP_GROUP_EVER_GRANDE_CITY_GLACIAS_ROOM 16
-#define MAP_GROUP_EVER_GRANDE_CITY_DRAKES_ROOM 16
-#define MAP_GROUP_EVER_GRANDE_CITY_CHAMPIONS_ROOM 16
-#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR1 16
-#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR2 16
-#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR3 16
-#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR4 16
-#define MAP_GROUP_EVER_GRANDE_CITY_CORRIDOR5 16
-#define MAP_GROUP_EVER_GRANDE_CITY_POKEMON_LEAGUE_1F 16
-#define MAP_GROUP_EVER_GRANDE_CITY_HALL_OF_FAME 16
-#define MAP_GROUP_EVER_GRANDE_CITY_POKEMON_CENTER_1F 16
-#define MAP_GROUP_EVER_GRANDE_CITY_POKEMON_CENTER_2F 16
-#define MAP_GROUP_EVER_GRANDE_CITY_POKEMON_LEAGUE_2F 16
-
-//--------------------------------------------------
-// Map Group 17
-//--------------------------------------------------
-
-enum
-{
- MAP_ID_ROUTE104_MR_BRINEYS_HOUSE,
- MAP_ID_ROUTE104_PRETTY_PETAL_FLOWER_SHOP,
-};
-
-#define MAP_GROUP_ROUTE104_MR_BRINEYS_HOUSE 17
-#define MAP_GROUP_ROUTE104_PRETTY_PETAL_FLOWER_SHOP 17
-
-//--------------------------------------------------
-// Map Group 18
-//--------------------------------------------------
-
-enum
-{
- MAP_ID_ROUTE111_WINSTRATE_FAMILYS_HOUSE,
- MAP_ID_ROUTE111_OLD_LADYS_REST_STOP,
-};
-
-#define MAP_GROUP_ROUTE111_WINSTRATE_FAMILYS_HOUSE 18
-#define MAP_GROUP_ROUTE111_OLD_LADYS_REST_STOP 18
-
-//--------------------------------------------------
-// Map Group 19
-//--------------------------------------------------
-
-enum
-{
- MAP_ID_ROUTE112_CABLE_CAR_STATION,
- MAP_ID_MT_CHIMNEY_CABLE_CAR_STATION,
-};
-
-#define MAP_GROUP_ROUTE112_CABLE_CAR_STATION 19
-#define MAP_GROUP_MT_CHIMNEY_CABLE_CAR_STATION 19
-
-//--------------------------------------------------
-// Map Group 20
-//--------------------------------------------------
-
-enum
-{
- MAP_ID_ROUTE114_FOSSIL_MANIACS_HOUSE,
- MAP_ID_ROUTE114_FOSSIL_MANIACS_TUNNEL,
- MAP_ID_ROUTE114_LANETTES_HOUSE,
-};
-
-#define MAP_GROUP_ROUTE114_FOSSIL_MANIACS_HOUSE 20
-#define MAP_GROUP_ROUTE114_FOSSIL_MANIACS_TUNNEL 20
-#define MAP_GROUP_ROUTE114_LANETTES_HOUSE 20
-
-//--------------------------------------------------
-// Map Group 21
-//--------------------------------------------------
-
-enum
-{
- MAP_ID_ROUTE116_TUNNELERS_REST_HOUSE,
-};
-
-#define MAP_GROUP_ROUTE116_TUNNELERS_REST_HOUSE 21
-
-//--------------------------------------------------
-// Map Group 22
-//--------------------------------------------------
-
-enum
-{
- MAP_ID_ROUTE117_POKEMON_DAY_CARE,
-};
-
-#define MAP_GROUP_ROUTE117_POKEMON_DAY_CARE 22
-
-//--------------------------------------------------
-// Map Group 23
-//--------------------------------------------------
-
-enum
-{
- MAP_ID_ROUTE121_SAFARI_ZONE_ENTRANCE,
-};
-
-#define MAP_GROUP_ROUTE121_SAFARI_ZONE_ENTRANCE 23
-
-//--------------------------------------------------
-// Map Group 24
-//--------------------------------------------------
-
-enum
-{
- MAP_ID_METEOR_FALLS_1F_1R,
- MAP_ID_METEOR_FALLS_1F_2R,
- MAP_ID_METEOR_FALLS_B1F_1R,
- MAP_ID_METEOR_FALLS_B1F_2R,
- MAP_ID_RUSTURF_TUNNEL,
- MAP_ID_UNDERWATER_SOOTOPOLIS_CITY,
- MAP_ID_DESERT_RUINS,
- MAP_ID_GRANITE_CAVE_1F,
- MAP_ID_GRANITE_CAVE_B1F,
- MAP_ID_GRANITE_CAVE_B2F,
- MAP_ID_GRANITE_CAVE_STEVENS_ROOM,
- MAP_ID_PETALBURG_WOODS,
- MAP_ID_MT_CHIMNEY,
- MAP_ID_JAGGED_PASS,
- MAP_ID_FIERY_PATH,
- MAP_ID_MT_PYRE_1F,
- MAP_ID_MT_PYRE_2F,
- MAP_ID_MT_PYRE_3F,
- MAP_ID_MT_PYRE_4F,
- MAP_ID_MT_PYRE_5F,
- MAP_ID_MT_PYRE_6F,
- MAP_ID_MT_PYRE_EXTERIOR,
- MAP_ID_MT_PYRE_SUMMIT,
- MAP_ID_AQUA_HIDEOUT_1F,
- MAP_ID_AQUA_HIDEOUT_B1F,
- MAP_ID_AQUA_HIDEOUT_B2F,
- MAP_ID_UNDERWATER_SEAFLOOR_CAVERN,
- MAP_ID_SEAFLOOR_CAVERN_ENTRANCE,
- MAP_ID_SEAFLOOR_CAVERN_ROOM1,
- MAP_ID_SEAFLOOR_CAVERN_ROOM2,
- MAP_ID_SEAFLOOR_CAVERN_ROOM3,
- MAP_ID_SEAFLOOR_CAVERN_ROOM4,
- MAP_ID_SEAFLOOR_CAVERN_ROOM5,
- MAP_ID_SEAFLOOR_CAVERN_ROOM6,
- MAP_ID_SEAFLOOR_CAVERN_ROOM7,
- MAP_ID_SEAFLOOR_CAVERN_ROOM8,
- MAP_ID_SEAFLOOR_CAVERN_ROOM9,
- MAP_ID_CAVE_OF_ORIGIN_ENTRANCE,
- MAP_ID_CAVE_OF_ORIGIN_1F,
- MAP_ID_CAVE_OF_ORIGIN_B1F,
- MAP_ID_CAVE_OF_ORIGIN_B2F,
- MAP_ID_CAVE_OF_ORIGIN_B3F,
- MAP_ID_CAVE_OF_ORIGIN_B4F,
- MAP_ID_VICTORY_ROAD_1F,
- MAP_ID_VICTORY_ROAD_B1F,
- MAP_ID_VICTORY_ROAD_B2F,
- MAP_ID_SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM,
- MAP_ID_SHOAL_CAVE_LOW_TIDE_INNER_ROOM,
- MAP_ID_SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM,
- MAP_ID_SHOAL_CAVE_LOW_TIDE_LOWER_ROOM,
- MAP_ID_SHOAL_CAVE_HIGH_TIDE_ENTRANCE_ROOM,
- MAP_ID_SHOAL_CAVE_HIGH_TIDE_INNER_ROOM,
- MAP_ID_NEW_MAUVILLE_ENTRANCE,
- MAP_ID_NEW_MAUVILLE_INSIDE,
- MAP_ID_ABANDONED_SHIP_DECK,
- MAP_ID_ABANDONED_SHIP_CORRIDORS_1F,
- MAP_ID_ABANDONED_SHIP_ROOMS_1F,
- MAP_ID_ABANDONED_SHIP_CORRIDORS_B1F,
- MAP_ID_ABANDONED_SHIP_ROOMS_B1F,
- MAP_ID_ABANDONED_SHIP_ROOMS2_B1F,
- MAP_ID_ABANDONED_SHIP_UNDERWATER1,
- MAP_ID_ABANDONED_SHIP_ROOM_B1F,
- MAP_ID_ABANDONED_SHIP_ROOMS2_1F,
- MAP_ID_ABANDONED_SHIP_CAPTAINS_OFFICE,
- MAP_ID_ABANDONED_SHIP_UNDERWATER2,
- MAP_ID_ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS,
- MAP_ID_ABANDONED_SHIP_HIDDEN_FLOOR_ROOMS,
- MAP_ID_ISLAND_CAVE,
- MAP_ID_ANCIENT_TOMB,
- MAP_ID_UNDERWATER_ROUTE134,
- MAP_ID_UNDERWATER_SEALED_CHAMBER,
- MAP_ID_SEALED_CHAMBER_OUTER_ROOM,
- MAP_ID_SEALED_CHAMBER_INNER_ROOM,
- MAP_ID_SCORCHED_SLAB,
- MAP_ID_UNUSED_AQUA_HIDEOUT_1F,
- MAP_ID_UNUSED_AQUA_HIDEOUT_B1F,
- MAP_ID_UNUSED_AQUA_HIDEOUT_B2F,
- MAP_ID_SKY_PILLAR_ENTRANCE,
- MAP_ID_SKY_PILLAR_OUTSIDE,
- MAP_ID_SKY_PILLAR_1F,
- MAP_ID_SKY_PILLAR_2F,
- MAP_ID_SKY_PILLAR_3F,
- MAP_ID_SKY_PILLAR_4F,
- MAP_ID_SHOAL_CAVE_LOW_TIDE_ICE_ROOM,
- MAP_ID_SKY_PILLAR_5F,
- MAP_ID_SKY_PILLAR_TOP,
- MAP_ID_MAGMA_HIDEOUT_ENTRANCE,
- MAP_ID_MAGMA_HIDEOUT_B1F,
- MAP_ID_MAGMA_HIDEOUT_B2F,
- MAP_ID_MAGMA_HIDEOUT_B3F,
- MAP_ID_MAGMA_HIDEOUT_B4F,
- MAP_ID_MAGMA_HIDEOUT_B5F,
- MAP_ID_MAGMA_HIDEOUT_B6F,
- MAP_ID_MAGMA_HIDEOUT_B7F,
- MAP_ID_MIRAGE_TOWER_1F,
- MAP_ID_MIRAGE_TOWER_2F,
- MAP_ID_MIRAGE_TOWER_3F,
- MAP_ID_MIRAGE_TOWER_4F,
- MAP_ID_DESERT_UNDERPASS,
- MAP_ID_ARTISAN_CAVE_1F,
- MAP_ID_ARTISAN_CAVE_2F,
- MAP_ID_UNKNOWN_UNDERWATER,
- MAP_ID_MARINE_CAVE_1F,
- MAP_ID_MARINE_CAVE_2F,
- MAP_ID_TERRA_CAVE_1F,
- MAP_ID_TERRA_CAVE_2F,
- MAP_ID_ALTERING_CAVE,
- MAP_ID_METEOR_FALLS_B1F_3R,
-};
-
-#define MAP_GROUP_METEOR_FALLS_1F_1R 24
-#define MAP_GROUP_METEOR_FALLS_1F_2R 24
-#define MAP_GROUP_METEOR_FALLS_B1F_1R 24
-#define MAP_GROUP_METEOR_FALLS_B1F_2R 24
-#define MAP_GROUP_RUSTURF_TUNNEL 24
-#define MAP_GROUP_UNDERWATER_SOOTOPOLIS_CITY 24
-#define MAP_GROUP_DESERT_RUINS 24
-#define MAP_GROUP_GRANITE_CAVE_1F 24
-#define MAP_GROUP_GRANITE_CAVE_B1F 24
-#define MAP_GROUP_GRANITE_CAVE_B2F 24
-#define MAP_GROUP_GRANITE_CAVE_STEVENS_ROOM 24
-#define MAP_GROUP_PETALBURG_WOODS 24
-#define MAP_GROUP_MT_CHIMNEY 24
-#define MAP_GROUP_JAGGED_PASS 24
-#define MAP_GROUP_FIERY_PATH 24
-#define MAP_GROUP_MT_PYRE_1F 24
-#define MAP_GROUP_MT_PYRE_2F 24
-#define MAP_GROUP_MT_PYRE_3F 24
-#define MAP_GROUP_MT_PYRE_4F 24
-#define MAP_GROUP_MT_PYRE_5F 24
-#define MAP_GROUP_MT_PYRE_6F 24
-#define MAP_GROUP_MT_PYRE_EXTERIOR 24
-#define MAP_GROUP_MT_PYRE_SUMMIT 24
-#define MAP_GROUP_AQUA_HIDEOUT_1F 24
-#define MAP_GROUP_AQUA_HIDEOUT_B1F 24
-#define MAP_GROUP_AQUA_HIDEOUT_B2F 24
-#define MAP_GROUP_UNDERWATER_SEAFLOOR_CAVERN 24
-#define MAP_GROUP_SEAFLOOR_CAVERN_ENTRANCE 24
-#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM1 24
-#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM2 24
-#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM3 24
-#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM4 24
-#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM5 24
-#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM6 24
-#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM7 24
-#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM8 24
-#define MAP_GROUP_SEAFLOOR_CAVERN_ROOM9 24
-#define MAP_GROUP_CAVE_OF_ORIGIN_ENTRANCE 24
-#define MAP_GROUP_CAVE_OF_ORIGIN_1F 24
-#define MAP_GROUP_CAVE_OF_ORIGIN_B1F 24
-#define MAP_GROUP_CAVE_OF_ORIGIN_B2F 24
-#define MAP_GROUP_CAVE_OF_ORIGIN_B3F 24
-#define MAP_GROUP_CAVE_OF_ORIGIN_B4F 24
-#define MAP_GROUP_VICTORY_ROAD_1F 24
-#define MAP_GROUP_VICTORY_ROAD_B1F 24
-#define MAP_GROUP_VICTORY_ROAD_B2F 24
-#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_ENTRANCE_ROOM 24
-#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_INNER_ROOM 24
-#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_STAIRS_ROOM 24
-#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_LOWER_ROOM 24
-#define MAP_GROUP_SHOAL_CAVE_HIGH_TIDE_ENTRANCE_ROOM 24
-#define MAP_GROUP_SHOAL_CAVE_HIGH_TIDE_INNER_ROOM 24
-#define MAP_GROUP_NEW_MAUVILLE_ENTRANCE 24
-#define MAP_GROUP_NEW_MAUVILLE_INSIDE 24
-#define MAP_GROUP_ABANDONED_SHIP_DECK 24
-#define MAP_GROUP_ABANDONED_SHIP_CORRIDORS_1F 24
-#define MAP_GROUP_ABANDONED_SHIP_ROOMS_1F 24
-#define MAP_GROUP_ABANDONED_SHIP_CORRIDORS_B1F 24
-#define MAP_GROUP_ABANDONED_SHIP_ROOMS_B1F 24
-#define MAP_GROUP_ABANDONED_SHIP_ROOMS2_B1F 24
-#define MAP_GROUP_ABANDONED_SHIP_UNDERWATER1 24
-#define MAP_GROUP_ABANDONED_SHIP_ROOM_B1F 24
-#define MAP_GROUP_ABANDONED_SHIP_ROOMS2_1F 24
-#define MAP_GROUP_ABANDONED_SHIP_CAPTAINS_OFFICE 24
-#define MAP_GROUP_ABANDONED_SHIP_UNDERWATER2 24
-#define MAP_GROUP_ABANDONED_SHIP_HIDDEN_FLOOR_CORRIDORS 24
-#define MAP_GROUP_ABANDONED_SHIP_HIDDEN_FLOOR_ROOMS 24
-#define MAP_GROUP_ISLAND_CAVE 24
-#define MAP_GROUP_ANCIENT_TOMB 24
-#define MAP_GROUP_UNDERWATER_ROUTE134 24
-#define MAP_GROUP_UNDERWATER_SEALED_CHAMBER 24
-#define MAP_GROUP_SEALED_CHAMBER_OUTER_ROOM 24
-#define MAP_GROUP_SEALED_CHAMBER_INNER_ROOM 24
-#define MAP_GROUP_SCORCHED_SLAB 24
-#define MAP_GROUP_UNUSED_AQUA_HIDEOUT_1F 24
-#define MAP_GROUP_UNUSED_AQUA_HIDEOUT_B1F 24
-#define MAP_GROUP_UNUSED_AQUA_HIDEOUT_B2F 24
-#define MAP_GROUP_SKY_PILLAR_ENTRANCE 24
-#define MAP_GROUP_SKY_PILLAR_OUTSIDE 24
-#define MAP_GROUP_SKY_PILLAR_1F 24
-#define MAP_GROUP_SKY_PILLAR_2F 24
-#define MAP_GROUP_SKY_PILLAR_3F 24
-#define MAP_GROUP_SKY_PILLAR_4F 24
-#define MAP_GROUP_SHOAL_CAVE_LOW_TIDE_ICE_ROOM 24
-#define MAP_GROUP_SKY_PILLAR_5F 24
-#define MAP_GROUP_SKY_PILLAR_TOP 24
-#define MAP_GROUP_MAGMA_HIDEOUT_ENTRANCE 24
-#define MAP_GROUP_MAGMA_HIDEOUT_B1F 24
-#define MAP_GROUP_MAGMA_HIDEOUT_B2F 24
-#define MAP_GROUP_MAGMA_HIDEOUT_B3F 24
-#define MAP_GROUP_MAGMA_HIDEOUT_B4F 24
-#define MAP_GROUP_MAGMA_HIDEOUT_B5F 24
-#define MAP_GROUP_MAGMA_HIDEOUT_B6F 24
-#define MAP_GROUP_MAGMA_HIDEOUT_B7F 24
-#define MAP_GROUP_MIRAGE_TOWER_1F 24
-#define MAP_GROUP_MIRAGE_TOWER_2F 24
-#define MAP_GROUP_MIRAGE_TOWER_3F 24
-#define MAP_GROUP_MIRAGE_TOWER_4F 24
-#define MAP_GROUP_DESERT_UNDERPASS 24
-#define MAP_GROUP_ARTISAN_CAVE_1F 24
-#define MAP_GROUP_ARTISAN_CAVE_2F 24
-#define MAP_GROUP_UNKNOWN_UNDERWATER 24
-#define MAP_GROUP_MARINE_CAVE_1F 24
-#define MAP_GROUP_MARINE_CAVE_2F 24
-#define MAP_GROUP_TERRA_CAVE_1F 24
-#define MAP_GROUP_TERRA_CAVE_2F 24
-#define MAP_GROUP_ALTERING_CAVE 24
-#define MAP_GROUP_METEOR_FALLS_B1F_3R 24
-
-//--------------------------------------------------
-// Map Group 25
-//--------------------------------------------------
-
-enum
-{
- MAP_ID_SECRET_BASE_RED_CAVE1,
- MAP_ID_SECRET_BASE_BROWN_CAVE1,
- MAP_ID_SECRET_BASE_BLUE_CAVE1,
- MAP_ID_SECRET_BASE_YELLOW_CAVE1,
- MAP_ID_SECRET_BASE_TREE1,
- MAP_ID_SECRET_BASE_SHRUB1,
- MAP_ID_SECRET_BASE_RED_CAVE2,
- MAP_ID_SECRET_BASE_BROWN_CAVE2,
- MAP_ID_SECRET_BASE_BLUE_CAVE2,
- MAP_ID_SECRET_BASE_YELLOW_CAVE2,
- MAP_ID_SECRET_BASE_TREE2,
- MAP_ID_SECRET_BASE_SHRUB2,
- MAP_ID_SECRET_BASE_RED_CAVE3,
- MAP_ID_SECRET_BASE_BROWN_CAVE3,
- MAP_ID_SECRET_BASE_BLUE_CAVE3,
- MAP_ID_SECRET_BASE_YELLOW_CAVE3,
- MAP_ID_SECRET_BASE_TREE3,
- MAP_ID_SECRET_BASE_SHRUB3,
- MAP_ID_SECRET_BASE_RED_CAVE4,
- MAP_ID_SECRET_BASE_BROWN_CAVE4,
- MAP_ID_SECRET_BASE_BLUE_CAVE4,
- MAP_ID_SECRET_BASE_YELLOW_CAVE4,
- MAP_ID_SECRET_BASE_TREE4,
- MAP_ID_SECRET_BASE_SHRUB4,
- MAP_ID_SINGLE_BATTLE_COLOSSEUM,
- MAP_ID_TRADE_CENTER,
- MAP_ID_RECORD_CORNER,
- MAP_ID_DOUBLE_BATTLE_COLOSSEUM,
- MAP_ID_LINK_CONTEST_ROOM1,
- MAP_ID_UNKNOWN_MAP_25_29,
- MAP_ID_UNKNOWN_MAP_25_30,
- MAP_ID_UNKNOWN_MAP_25_31,
- MAP_ID_UNKNOWN_MAP_25_32,
- MAP_ID_UNKNOWN_MAP_25_33,
- MAP_ID_UNKNOWN_MAP_25_34,
- MAP_ID_LINK_CONTEST_ROOM2,
- MAP_ID_LINK_CONTEST_ROOM3,
- MAP_ID_LINK_CONTEST_ROOM4,
- MAP_ID_LINK_CONTEST_ROOM5,
- MAP_ID_LINK_CONTEST_ROOM6,
- MAP_ID_INSIDE_OF_TRUCK,
- MAP_ID_SS_TIDAL_CORRIDOR,
- MAP_ID_SS_TIDAL_LOWER_DECK,
- MAP_ID_SS_TIDAL_ROOMS,
- MAP_ID_TEST_ROOM_1,
- MAP_ID_TEST_ROOM_2,
- MAP_ID_TEST_ROOM_3,
- MAP_ID_TEST_ROOM_4,
- MAP_ID_TEST_ROOM_5,
- MAP_ID_TEST_ROOM_6,
- MAP_ID_TEST_ROOM_7,
- MAP_ID_TEST_ROOM_8,
- MAP_ID_TEST_ROOM_9,
- MAP_ID_TEST_ROOM_10,
- MAP_ID_TEST_ROOM_11,
- MAP_ID_TEST_ROOM_12,
- MAP_ID_TEST_ROOM_13,
- MAP_ID_TEST_ROOM_14,
- MAP_ID_TEST_ROOM_15,
- MAP_ID_TEST_ROOM_16,
- MAP_ID_UNION_ROOM,
-};
-
-#define MAP_GROUP_SECRET_BASE_RED_CAVE1 25
-#define MAP_GROUP_SECRET_BASE_BROWN_CAVE1 25
-#define MAP_GROUP_SECRET_BASE_BLUE_CAVE1 25
-#define MAP_GROUP_SECRET_BASE_YELLOW_CAVE1 25
-#define MAP_GROUP_SECRET_BASE_TREE1 25
-#define MAP_GROUP_SECRET_BASE_SHRUB1 25
-#define MAP_GROUP_SECRET_BASE_RED_CAVE2 25
-#define MAP_GROUP_SECRET_BASE_BROWN_CAVE2 25
-#define MAP_GROUP_SECRET_BASE_BLUE_CAVE2 25
-#define MAP_GROUP_SECRET_BASE_YELLOW_CAVE2 25
-#define MAP_GROUP_SECRET_BASE_TREE2 25
-#define MAP_GROUP_SECRET_BASE_SHRUB2 25
-#define MAP_GROUP_SECRET_BASE_RED_CAVE3 25
-#define MAP_GROUP_SECRET_BASE_BROWN_CAVE3 25
-#define MAP_GROUP_SECRET_BASE_BLUE_CAVE3 25
-#define MAP_GROUP_SECRET_BASE_YELLOW_CAVE3 25
-#define MAP_GROUP_SECRET_BASE_TREE3 25
-#define MAP_GROUP_SECRET_BASE_SHRUB3 25
-#define MAP_GROUP_SECRET_BASE_RED_CAVE4 25
-#define MAP_GROUP_SECRET_BASE_BROWN_CAVE4 25
-#define MAP_GROUP_SECRET_BASE_BLUE_CAVE4 25
-#define MAP_GROUP_SECRET_BASE_YELLOW_CAVE4 25
-#define MAP_GROUP_SECRET_BASE_TREE4 25
-#define MAP_GROUP_SECRET_BASE_SHRUB4 25
-#define MAP_GROUP_SINGLE_BATTLE_COLOSSEUM 25
-#define MAP_GROUP_TRADE_CENTER 25
-#define MAP_GROUP_RECORD_CORNER 25
-#define MAP_GROUP_DOUBLE_BATTLE_COLOSSEUM 25
-#define MAP_GROUP_LINK_CONTEST_ROOM1 25
-#define MAP_GROUP_UNKNOWN_MAP_25_29 25
-#define MAP_GROUP_UNKNOWN_MAP_25_30 25
-#define MAP_GROUP_UNKNOWN_MAP_25_31 25
-#define MAP_GROUP_UNKNOWN_MAP_25_32 25
-#define MAP_GROUP_UNKNOWN_MAP_25_33 25
-#define MAP_GROUP_UNKNOWN_MAP_25_34 25
-#define MAP_GROUP_LINK_CONTEST_ROOM2 25
-#define MAP_GROUP_LINK_CONTEST_ROOM3 25
-#define MAP_GROUP_LINK_CONTEST_ROOM4 25
-#define MAP_GROUP_LINK_CONTEST_ROOM5 25
-#define MAP_GROUP_LINK_CONTEST_ROOM6 25
-#define MAP_GROUP_INSIDE_OF_TRUCK 25
-#define MAP_GROUP_SS_TIDAL_CORRIDOR 25
-#define MAP_GROUP_SS_TIDAL_LOWER_DECK 25
-#define MAP_GROUP_SS_TIDAL_ROOMS 25
-#define MAP_GROUP_TEST_ROOM_1 25
-#define MAP_GROUP_TEST_ROOM_2 25
-#define MAP_GROUP_TEST_ROOM_3 25
-#define MAP_GROUP_TEST_ROOM_4 25
-#define MAP_GROUP_TEST_ROOM_5 25
-#define MAP_GROUP_TEST_ROOM_6 25
-#define MAP_GROUP_TEST_ROOM_7 25
-#define MAP_GROUP_TEST_ROOM_8 25
-#define MAP_GROUP_TEST_ROOM_9 25
-#define MAP_GROUP_TEST_ROOM_10 25
-#define MAP_GROUP_TEST_ROOM_11 25
-#define MAP_GROUP_TEST_ROOM_12 25
-#define MAP_GROUP_TEST_ROOM_13 25
-#define MAP_GROUP_TEST_ROOM_14 25
-#define MAP_GROUP_TEST_ROOM_15 25
-#define MAP_GROUP_TEST_ROOM_16 25
-#define MAP_GROUP_UNION_ROOM 25
-//--------------------------------------------------
-// Map Group 26
-//--------------------------------------------------
-
-enum
-{
- MAP_ID_SAFARI_ZONE_NORTHWEST,
- MAP_ID_SAFARI_ZONE_NORTHEAST,
- MAP_ID_SAFARI_ZONE_SOUTHWEST,
- MAP_ID_SAFARI_ZONE_SOUTHEAST,
- MAP_ID_BATTLE_FRONTIER_OUTSIDE_WEST,
- MAP_ID_BATTLE_TOWER_LOBBY,
- MAP_ID_BATTLE_TOWER_ELEVATOR,
- MAP_ID_BATTLE_TOWER_CORRIDOR,
- MAP_ID_BATTLE_TOWER_BATTLE_ROOM,
- MAP_ID_SOUTHERN_ISLAND_EXTERIOR,
- MAP_ID_SOUTHERN_ISLAND_INTERIOR,
- MAP_ID_SAFARI_ZONE_REST_HOUSE,
- MAP_ID_SAFARI_ZONE_EM_1,
- MAP_ID_SAFARI_ZONE_EM_2,
- MAP_ID_BATTLE_FRONTIER_OUTSIDE_EAST,
- MAP_ID_BATTLE_FRONTIER_TAG_LINK,
- MAP_ID_BATTLE_FRONTIER_TAG_LINK_CORRIDOR,
- MAP_ID_BATTLE_FRONTIER_TAG_LINK_ARENA,
- MAP_ID_BATTLE_DOME_LOBBY,
- MAP_ID_BATTLE_DOME_CORRIDOR,
- MAP_ID_BATTLE_DOME_ROOM,
- MAP_ID_BATTLE_DOME_ARENA,
- MAP_ID_BATTLE_PALACE_LOBBY,
- MAP_ID_BATTLE_PALACE_CORRIDOR,
- MAP_ID_BATTLE_PALACE_1F,
- MAP_ID_BATTLE_PYRAMID_LOBBY,
- MAP_ID_BATTLE_PYRAMID_UNKNOWN,
- MAP_ID_BATTLE_PYRAMID_PEAK,
- MAP_ID_BATTLE_ARENA_LOBBY,
- MAP_ID_BATTLE_ARENA_CORRIDOR,
- MAP_ID_BATTLE_ARENA_ARENA,
- MAP_ID_BATTLE_FACTORY_LOBBY,
- MAP_ID_BATTLE_FACTORY_CORRIDOR,
- MAP_ID_BATTLE_FACTORY_ARENA,
- MAP_ID_BATTLE_PALACE_2F,
- MAP_ID_BATTLE_PALACE_3F,
- MAP_ID_BATTLE_PALACE_4F,
- MAP_ID_BATTLE_PALACE_5F,
- MAP_ID_BATTLE_PALACE_6F,
- MAP_ID_BATTLE_PALACE_TEST_ROOM,
- MAP_ID_RANKING_HALL,
- MAP_ID_STAT_RATER_HOUSE,
- MAP_ID_BATTLE_FRONTIER_EXCHANGE,
- MAP_ID_BATTLE_FRONTIER_MANIAC_HOUSE,
- MAP_ID_BATTLE_FRONTIER_GAMBLING_HOUSE,
- MAP_ID_BATTLE_FRONTIER_HOUSE1,
- MAP_ID_BATTLE_FRONTIER_SCOTTS_HOUSE,
- MAP_ID_BATTLE_FRONTIER_HOUSE2,
- MAP_ID_BATTLE_FRONTIER_HOUSE3,
- MAP_ID_BATTLE_FRONTIER_HOUSE4,
- MAP_ID_BATTLE_FRONTIER_ENTRANCE_HALL,
- MAP_ID_BATTLE_FRONTIER_HOUSE5,
- MAP_ID_BATTLE_FRONTIER_UNUSED_HOUSE,
- MAP_ID_BATTLE_FRONTIER_POKEMON_CENTER_1F,
- MAP_ID_BATTLE_FRONTIER_POKEMON_CENTER_2F,
- MAP_ID_BATTLE_FRONTIER_MART,
- MAP_ID_FARAWAY_ISLAND_OUTSIDE,
- MAP_ID_FARAWAY_ISLAND_FOREST,
- MAP_ID_BIRTH_ISLAND_OUTSIDE,
- MAP_ID_BIRTH_ISLAND_DOCKS,
- MAP_ID_TRAINER_HILL_LOBBY,
- MAP_ID_TRAINER_HILL_1F,
- MAP_ID_TRAINER_HILL_2F,
- MAP_ID_TRAINER_HILL_3F,
- MAP_ID_TRAINER_HILL_4F,
- MAP_ID_TRAINER_HILL_5F,
- MAP_ID_NAVEL_ROCK_OUTSIDE,
- MAP_ID_NAVEL_ROCK_DOCKS,
- MAP_ID_NAVEL_ROCK_1F,
- MAP_ID_NAVEL_ROCK_2F,
- MAP_ID_NAVEL_ROCK_3F,
- MAP_ID_NAVEL_ROCK_4F,
- MAP_ID_NAVEL_ROCK_5F,
- MAP_ID_NAVEL_ROCK_6F,
- MAP_ID_NAVEL_ROCK_7F,
- MAP_ID_NAVEL_ROCK_PEAK,
- MAP_ID_NAVEL_ROCK_B1F,
- MAP_ID_NAVEL_ROCK_B2F,
- MAP_ID_NAVEL_ROCK_B3F,
- MAP_ID_NAVEL_ROCK_B4F,
- MAP_ID_NAVEL_ROCK_B5F,
- MAP_ID_NAVEL_ROCK_B6F,
- MAP_ID_NAVEL_ROCK_B7F,
- MAP_ID_NAVEL_ROCK_B8F,
- MAP_ID_NAVEL_ROCK_B9F,
- MAP_ID_NAVEL_ROCK_B10F,
- MAP_ID_NAVEL_ROCK_B11F,
- MAP_ID_NAVEL_ROCK_INNER,
- MAP_ID_TRAINER_HILL_ELEVATOR,
-};
-
-#define MAP_GROUP_SAFARI_ZONE_NORTHWEST 26
-#define MAP_GROUP_SAFARI_ZONE_NORTHEAST 26
-#define MAP_GROUP_SAFARI_ZONE_SOUTHWEST 26
-#define MAP_GROUP_SAFARI_ZONE_SOUTHEAST 26
-#define MAP_GROUP_BATTLE_FRONTIER_OUTSIDE_WEST 26
-#define MAP_GROUP_BATTLE_TOWER_LOBBY 26
-#define MAP_GROUP_BATTLE_TOWER_ELEVATOR 26
-#define MAP_GROUP_BATTLE_TOWER_CORRIDOR 26
-#define MAP_GROUP_BATTLE_TOWER_BATTLE_ROOM 26
-#define MAP_GROUP_SOUTHERN_ISLAND_EXTERIOR 26
-#define MAP_GROUP_SOUTHERN_ISLAND_INTERIOR 26
-#define MAP_GROUP_SAFARI_ZONE_REST_HOUSE 26
-#define MAP_GROUP_SAFARI_ZONE_EM_1 26
-#define MAP_GROUP_SAFARI_ZONE_EM_2 26
-#define MAP_GROUP_BATTLE_FRONTIER_OUTSIDE_EAST 26
-#define MAP_GROUP_BATTLE_FRONTIER_TAG_LINK 26
-#define MAP_GROUP_BATTLE_FRONTIER_TAG_LINK_CORRIDOR 26
-#define MAP_GROUP_BATTLE_FRONTIER_TAG_LINK_ARENA 26
-#define MAP_GROUP_BATTLE_DOME_LOBBY 26
-#define MAP_GROUP_BATTLE_DOME_CORRIDOR 26
-#define MAP_GROUP_BATTLE_DOME_ROOM 26
-#define MAP_GROUP_BATTLE_DOME_ARENA 26
-#define MAP_GROUP_BATTLE_PALACE_LOBBY 26
-#define MAP_GROUP_BATTLE_PALACE_CORRIDOR 26
-#define MAP_GROUP_BATTLE_PALACE_1F 26
-#define MAP_GROUP_BATTLE_PYRAMID_LOBBY 26
-#define MAP_GROUP_BATTLE_PYRAMID_UNKNOWN 26
-#define MAP_GROUP_BATTLE_PYRAMID_PEAK 26
-#define MAP_GROUP_BATTLE_ARENA_LOBBY 26
-#define MAP_GROUP_BATTLE_ARENA_CORRIDOR 26
-#define MAP_GROUP_BATTLE_ARENA_ARENA 26 // rename
-#define MAP_GROUP_BATTLE_FACTORY_LOBBY 26
-#define MAP_GROUP_BATTLE_FACTORY_CORRIDOR 26
-#define MAP_GROUP_BATTLE_FACTORY_ARENA 26
-#define MAP_GROUP_BATTLE_PALACE_2F 26
-#define MAP_GROUP_BATTLE_PALACE_3F 26
-#define MAP_GROUP_BATTLE_PALACE_4F 26
-#define MAP_GROUP_BATTLE_PALACE_5F 26
-#define MAP_GROUP_BATTLE_PALACE_6F 26
-#define MAP_GROUP_BATTLE_PALACE_TEST_ROOM 26
-#define MAP_GROUP_RANKING_HALL 26
-#define MAP_GROUP_STAT_RATER_HOUSE 26
-#define MAP_GROUP_BATTLE_FRONTIER_EXCHANGE 26
-#define MAP_GROUP_BATTLE_FRONTIER_MANIAC_HOUSE 26
-#define MAP_GROUP_BATTLE_FRONTIER_GAMBLING_HOUSE 26
-#define MAP_GROUP_BATTLE_FRONTIER_HOUSE1 26
-#define MAP_GROUP_BATTLE_FRONTIER_SCOTTS_HOUSE 26
-#define MAP_GROUP_BATTLE_FRONTIER_HOUSE2 26
-#define MAP_GROUP_BATTLE_FRONTIER_HOUSE3 26
-#define MAP_GROUP_BATTLE_FRONTIER_HOUSE4 26
-#define MAP_GROUP_BATTLE_FRONTIER_ENTRANCE_HALL 26
-#define MAP_GROUP_BATTLE_FRONTIER_HOUSE5 26
-#define MAP_GROUP_BATTLE_FRONTIER_UNUSED_HOUSE 26
-#define MAP_GROUP_BATTLE_FRONTIER_POKEMON_CENTER_1F 26
-#define MAP_GROUP_BATTLE_FRONTIER_POKEMON_CENTER_2F 26
-#define MAP_GROUP_BATTLE_FRONTIER_MART 26
-#define MAP_GROUP_FARAWAY_ISLAND_OUTSIDE 26
-#define MAP_GROUP_FARAWAY_ISLAND_FOREST 26
-#define MAP_GROUP_BIRTH_ISLAND_OUTSIDE 26
-#define MAP_GROUP_BIRTH_ISLAND_DOCKS 26
-#define MAP_GROUP_TRAINER_HILL_LOBBY 26
-#define MAP_GROUP_TRAINER_HILL_1F 26
-#define MAP_GROUP_TRAINER_HILL_2F 26
-#define MAP_GROUP_TRAINER_HILL_3F 26
-#define MAP_GROUP_TRAINER_HILL_4F 26
-#define MAP_GROUP_TRAINER_HILL_5F 26
-#define MAP_GROUP_NAVEL_ROCK_OUTSIDE 26
-#define MAP_GROUP_NAVEL_ROCK_DOCKS 26
-#define MAP_GROUP_NAVEL_ROCK_1F 26
-#define MAP_GROUP_NAVEL_ROCK_2F 26
-#define MAP_GROUP_NAVEL_ROCK_3F 26
-#define MAP_GROUP_NAVEL_ROCK_4F 26
-#define MAP_GROUP_NAVEL_ROCK_5F 26
-#define MAP_GROUP_NAVEL_ROCK_6F 26
-#define MAP_GROUP_NAVEL_ROCK_7F 26
-#define MAP_GROUP_NAVEL_ROCK_PEAK 26
-#define MAP_GROUP_NAVEL_ROCK_B1F 26
-#define MAP_GROUP_NAVEL_ROCK_B2F 26
-#define MAP_GROUP_NAVEL_ROCK_B3F 26
-#define MAP_GROUP_NAVEL_ROCK_B4F 26
-#define MAP_GROUP_NAVEL_ROCK_B5F 26
-#define MAP_GROUP_NAVEL_ROCK_B6F 26
-#define MAP_GROUP_NAVEL_ROCK_B7F 26
-#define MAP_GROUP_NAVEL_ROCK_B8F 26
-#define MAP_GROUP_NAVEL_ROCK_B9F 26
-#define MAP_GROUP_NAVEL_ROCK_B10F 26
-#define MAP_GROUP_NAVEL_ROCK_B11F 26
-#define MAP_GROUP_NAVEL_ROCK_INNER 26
-#define MAP_GROUP_TRAINER_HILL_ELEVATOR 26
-//--------------------------------------------------
-// Map Group 27
-//--------------------------------------------------
-
-enum
-{
- MAP_ID_ROUTE104_PROTOTYPE,
- MAP_ID_ROUTE104_PROTOTYPE_PRETTY_PETAL_FLOWER_SHOP,
-};
-
-#define MAP_GROUP_ROUTE104_PROTOTYPE 27
-#define MAP_GROUP_ROUTE104_PROTOTYPE_PRETTY_PETAL_FLOWER_SHOP 27
-
-//--------------------------------------------------
-// Map Group 28
-//--------------------------------------------------
-
-enum
-{
- MAP_ID_ROUTE109_SEASHORE_HOUSE,
-};
-
-#define MAP_GROUP_ROUTE109_SEASHORE_HOUSE 28
-
-//--------------------------------------------------
-// Map Group 29
-//--------------------------------------------------
-
-enum
-{
- MAP_ID_ROUTE110_TRICK_HOUSE_ENTRANCE,
- MAP_ID_ROUTE110_TRICK_HOUSE_END,
- MAP_ID_ROUTE110_TRICK_HOUSE_CORRIDOR,
- MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE1,
- MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE2,
- MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE3,
- MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE4,
- MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE5,
- MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE6,
- MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE7,
- MAP_ID_ROUTE110_TRICK_HOUSE_PUZZLE8,
- MAP_ID_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE,
- MAP_ID_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE,
-};
-
-#define MAP_GROUP_ROUTE110_TRICK_HOUSE_ENTRANCE 29
-#define MAP_GROUP_ROUTE110_TRICK_HOUSE_END 29
-#define MAP_GROUP_ROUTE110_TRICK_HOUSE_CORRIDOR 29
-#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE1 29
-#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE2 29
-#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE3 29
-#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE4 29
-#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE5 29
-#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE6 29
-#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE7 29
-#define MAP_GROUP_ROUTE110_TRICK_HOUSE_PUZZLE8 29
-#define MAP_GROUP_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE 29
-#define MAP_GROUP_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE 29
-
-//--------------------------------------------------
-// Map Group 30
-//--------------------------------------------------
-
-enum
-{
- MAP_ID_ROUTE113_GLASS_WORKSHOP,
-};
-
-#define MAP_GROUP_ROUTE113_GLASS_WORKSHOP 30
-
-//--------------------------------------------------
-// Map Group 31
-//--------------------------------------------------
-
-enum
-{
- MAP_ID_ROUTE123_BERRY_MASTERS_HOUSE,
-};
-
-#define MAP_GROUP_ROUTE123_BERRY_MASTERS_HOUSE 31
-
-//--------------------------------------------------
-// Map Group 32
-//--------------------------------------------------
-
-enum
-{
- MAP_ID_ROUTE119_WEATHER_INSTITUTE_1F,
- MAP_ID_ROUTE119_WEATHER_INSTITUTE_2F,
- MAP_ID_ROUTE119_HOUSE,
-};
-
-#define MAP_GROUP_ROUTE119_WEATHER_INSTITUTE_1F 32
-#define MAP_GROUP_ROUTE119_WEATHER_INSTITUTE_2F 32
-#define MAP_GROUP_ROUTE119_HOUSE 32
-
-//--------------------------------------------------
-// Map Group 33
-//--------------------------------------------------
-
-enum
-{
- MAP_ID_ROUTE124_DIVING_TREASURE_HUNTERS_HOUSE,
-};
-
-#define MAP_GROUP_ROUTE124_DIVING_TREASURE_HUNTERS_HOUSE 33
-
-#endif // GUARD_MAP_CONSTANTS_H \ No newline at end of file
diff --git a/include/map_object_constants.h b/include/map_object_constants.h
deleted file mode 100644
index 79482b54a..000000000
--- a/include/map_object_constants.h
+++ /dev/null
@@ -1,239 +0,0 @@
-#ifndef GUARD_MAP_OBJECT_CONSTANTS_H
-#define GUARD_MAP_OBJECT_CONSTANTS_H
-
-enum
-{
- MAP_OBJ_GFX_BRENDAN_NORMAL,
- MAP_OBJ_GFX_BRENDAN_MACH_BIKE,
- MAP_OBJ_GFX_BRENDAN_SURFING,
- MAP_OBJ_GFX_BRENDAN_FIELD_MOVE,
- MAP_OBJ_GFX_QUINTY_PLUMP,
- MAP_OBJ_GFX_LITTLE_BOY_1,
- MAP_OBJ_GFX_LITTLE_GIRL_1,
- MAP_OBJ_GFX_BOY_1,
- MAP_OBJ_GFX_GIRL_1,
- MAP_OBJ_GFX_BOY_2,
- MAP_OBJ_GFX_GIRL_2,
- MAP_OBJ_GFX_LITTLE_BOY_2,
- MAP_OBJ_GFX_LITTLE_GIRL_2,
- MAP_OBJ_GFX_BOY_3,
- MAP_OBJ_GFX_GIRL_3,
- MAP_OBJ_GFX_BOY_4,
- MAP_OBJ_GFX_WOMAN_1,
- MAP_OBJ_GFX_FAT_MAN,
- MAP_OBJ_GFX_WOMAN_2,
- MAP_OBJ_GFX_MAN_1,
- MAP_OBJ_GFX_WOMAN_3,
- MAP_OBJ_GFX_OLD_MAN_1,
- MAP_OBJ_GFX_OLD_WOMAN_1,
- MAP_OBJ_GFX_MAN_2,
- MAP_OBJ_GFX_WOMAN_4,
- MAP_OBJ_GFX_MAN_3,
- MAP_OBJ_GFX_WOMAN_5,
- MAP_OBJ_GFX_COOK,
- MAP_OBJ_GFX_WOMAN_6,
- MAP_OBJ_GFX_OLD_MAN_2,
- MAP_OBJ_GFX_OLD_WOMAN_2,
- MAP_OBJ_GFX_CAMPER,
- MAP_OBJ_GFX_PICNICKER,
- MAP_OBJ_GFX_MAN_4,
- MAP_OBJ_GFX_WOMAN_7,
- MAP_OBJ_GFX_YOUNGSTER,
- MAP_OBJ_GFX_BUG_CATCHER,
- MAP_OBJ_GFX_PSYCHIC_M,
- MAP_OBJ_GFX_SCHOOL_KID_M,
- MAP_OBJ_GFX_MANIAC,
- MAP_OBJ_GFX_HEX_MANIAC,
- MAP_OBJ_GFX_WOMAN_8,
- MAP_OBJ_GFX_SWIMMER_M,
- MAP_OBJ_GFX_SWIMMER_F,
- MAP_OBJ_GFX_BLACK_BELT,
- MAP_OBJ_GFX_BEAUTY,
- MAP_OBJ_GFX_SCIENTIST_1,
- MAP_OBJ_GFX_LASS,
- MAP_OBJ_GFX_GENTLEMAN,
- MAP_OBJ_GFX_SAILOR,
- MAP_OBJ_GFX_FISHERMAN,
- MAP_OBJ_GFX_RUNNING_TRIATHLETE_M,
- MAP_OBJ_GFX_RUNNING_TRIATHLETE_F,
- MAP_OBJ_GFX_TUBER_F,
- MAP_OBJ_GFX_TUBER_M,
- MAP_OBJ_GFX_HIKER,
- MAP_OBJ_GFX_CYCLING_TRIATHLETE_M,
- MAP_OBJ_GFX_CYCLING_TRIATHLETE_F,
- MAP_OBJ_GFX_NURSE,
- MAP_OBJ_GFX_ITEM_BALL,
- MAP_OBJ_GFX_BERRY_TREE,
- MAP_OBJ_GFX_BERRY_TREE_EARLY_STAGES,
- MAP_OBJ_GFX_BERRY_TREE_LATE_STAGES,
- MAP_OBJ_GFX_BRENDAN_ACRO_BIKE,
- MAP_OBJ_GFX_PROF_BIRCH,
- MAP_OBJ_GFX_MAN_5,
- MAP_OBJ_GFX_MAN_6,
- MAP_OBJ_GFX_REPORTER_M,
- MAP_OBJ_GFX_REPORTER_F,
- MAP_OBJ_GFX_BARD,
- MAP_OBJ_GFX_HIPSTER,
- MAP_OBJ_GFX_TRADER,
- MAP_OBJ_GFX_STORYTELLER,
- MAP_OBJ_GFX_GIDDY,
- MAP_OBJ_GFX_UNUSED_MAUVILLE_OLD_MAN_1,
- MAP_OBJ_GFX_UNUSED_MAUVILLE_OLD_MAN_2,
- MAP_OBJ_GFX_UNUSED_NATU_DOLL,
- MAP_OBJ_GFX_UNUSED_MAGNEMITE_DOLL,
- MAP_OBJ_GFX_UNUSED_SQUIRTLE_DOLL,
- MAP_OBJ_GFX_UNUSED_WOOPER_DOLL,
- MAP_OBJ_GFX_UNUSED_PIKACHU_DOLL,
- MAP_OBJ_GFX_UNUSED_PORYGON2_DOLL,
- MAP_OBJ_GFX_CUTTABLE_TREE,
- MAP_OBJ_GFX_MART_EMPLOYEE,
- MAP_OBJ_GFX_ROOFTOP_SALE_WOMAN,
- MAP_OBJ_GFX_TEALA,
- MAP_OBJ_GFX_BREAKABLE_ROCK,
- MAP_OBJ_GFX_PUSHABLE_BOULDER,
- MAP_OBJ_GFX_MR_BRINEYS_BOAT,
- MAP_OBJ_GFX_MAY_NORMAL,
- MAP_OBJ_GFX_MAY_MACH_BIKE,
- MAP_OBJ_GFX_MAY_ACRO_BIKE,
- MAP_OBJ_GFX_MAY_SURFING,
- MAP_OBJ_GFX_MAY_FIELD_MOVE,
- MAP_OBJ_GFX_TRUCK,
- MAP_OBJ_GFX_MACHOKE_CARRYING_BOX,
- MAP_OBJ_GFX_MACHOKE_FACING_AWAY,
- MAP_OBJ_GFX_BIRCHS_BAG,
- MAP_OBJ_GFX_POOCHYENA,
- MAP_OBJ_GFX_ARTIST,
- MAP_OBJ_GFX_RIVAL_BRENDAN_NORMAL,
- MAP_OBJ_GFX_RIVAL_BRENDAN_MACH_BIKE,
- MAP_OBJ_GFX_RIVAL_BRENDAN_ACRO_BIKE,
- MAP_OBJ_GFX_RIVAL_BRENDAN_SURFING,
- MAP_OBJ_GFX_RIVAL_BRENDAN_FIELD_MOVE,
- MAP_OBJ_GFX_RIVAL_MAY_NORMAL,
- MAP_OBJ_GFX_RIVAL_MAY_MACH_BIKE,
- MAP_OBJ_GFX_RIVAL_MAY_ACRO_BIKE,
- MAP_OBJ_GFX_RIVAL_MAY_SURFING,
- MAP_OBJ_GFX_RIVAL_MAY_FIELD_MOVE,
- MAP_OBJ_GFX_CAMERAMAN,
- MAP_OBJ_GFX_BRENDAN_UNDERWATER,
- MAP_OBJ_GFX_MAY_UNDERWATER,
- MAP_OBJ_GFX_MOVING_BOX,
- MAP_OBJ_GFX_CABLE_CAR,
- MAP_OBJ_GFX_SCIENTIST_2,
- MAP_OBJ_GFX_MAN_7,
- MAP_OBJ_GFX_AQUA_MEMBER_M,
- MAP_OBJ_GFX_AQUA_MEMBER_F,
- MAP_OBJ_GFX_MAGMA_MEMBER_M,
- MAP_OBJ_GFX_MAGMA_MEMBER_F,
- MAP_OBJ_GFX_SIDNEY,
- MAP_OBJ_GFX_PHOEBE,
- MAP_OBJ_GFX_GLACIA,
- MAP_OBJ_GFX_DRAKE,
- MAP_OBJ_GFX_ROXANNE,
- MAP_OBJ_GFX_BRAWLY,
- MAP_OBJ_GFX_WATTSON,
- MAP_OBJ_GFX_FLANNERY,
- MAP_OBJ_GFX_NORMAN,
- MAP_OBJ_GFX_WINONA,
- MAP_OBJ_GFX_LIZA,
- MAP_OBJ_GFX_TATE,
- MAP_OBJ_GFX_WALLACE,
- MAP_OBJ_GFX_STEVEN,
- MAP_OBJ_GFX_WALLY,
- MAP_OBJ_GFX_LITTLE_BOY_3,
- MAP_OBJ_GFX_BRENDAN_FISHING,
- MAP_OBJ_GFX_MAY_FISHING,
- MAP_OBJ_GFX_HOT_SPRINGS_OLD_WOMAN,
- MAP_OBJ_GFX_SS_TIDAL,
- MAP_OBJ_GFX_SUBMARINE_SHADOW,
- MAP_OBJ_GFX_PICHU_DOLL,
- MAP_OBJ_GFX_PIKACHU_DOLL,
- MAP_OBJ_GFX_MARILL_DOLL,
- MAP_OBJ_GFX_TOGEPI_DOLL,
- MAP_OBJ_GFX_CYNDAQUIL_DOLL,
- MAP_OBJ_GFX_CHIKORITA_DOLL,
- MAP_OBJ_GFX_TOTODILE_DOLL,
- MAP_OBJ_GFX_JIGGLYPUFF_DOLL,
- MAP_OBJ_GFX_MEOWTH_DOLL,
- MAP_OBJ_GFX_CLEFAIRY_DOLL,
- MAP_OBJ_GFX_DITTO_DOLL,
- MAP_OBJ_GFX_SMOOCHUM_DOLL,
- MAP_OBJ_GFX_TREECKO_DOLL,
- MAP_OBJ_GFX_TORCHIC_DOLL,
- MAP_OBJ_GFX_MUDKIP_DOLL,
- MAP_OBJ_GFX_DUSKULL_DOLL,
- MAP_OBJ_GFX_WYNAUT_DOLL,
- MAP_OBJ_GFX_BALTOY_DOLL,
- MAP_OBJ_GFX_KECLEON_DOLL,
- MAP_OBJ_GFX_AZURILL_DOLL,
- MAP_OBJ_GFX_SKITTY_DOLL,
- MAP_OBJ_GFX_SWABLU_DOLL,
- MAP_OBJ_GFX_GULPIN_DOLL,
- MAP_OBJ_GFX_LOTAD_DOLL,
- MAP_OBJ_GFX_SEEDOT_DOLL,
- MAP_OBJ_GFX_PIKA_CUSHION,
- MAP_OBJ_GFX_ROUND_CUSHION,
- MAP_OBJ_GFX_KISS_CUSHION,
- MAP_OBJ_GFX_ZIGZAG_CUSHION,
- MAP_OBJ_GFX_SPIN_CUSHION,
- MAP_OBJ_GFX_DIAMOND_CUSHION,
- MAP_OBJ_GFX_BALL_CUSHION,
- MAP_OBJ_GFX_GRASS_CUSHION,
- MAP_OBJ_GFX_FIRE_CUSHION,
- MAP_OBJ_GFX_WATER_CUSHION,
- MAP_OBJ_GFX_BIG_SNORLAX_DOLL,
- MAP_OBJ_GFX_BIG_RHYDON_DOLL,
- MAP_OBJ_GFX_BIG_LAPRAS_DOLL,
- MAP_OBJ_GFX_BIG_VENUSAUR_DOLL,
- MAP_OBJ_GFX_BIG_CHARIZARD_DOLL,
- MAP_OBJ_GFX_BIG_BLASTOISE_DOLL,
- MAP_OBJ_GFX_BIG_WAILMER_DOLL,
- MAP_OBJ_GFX_BIG_REGIROCK_DOLL,
- MAP_OBJ_GFX_BIG_REGICE_DOLL,
- MAP_OBJ_GFX_BIG_REGISTEEL_DOLL,
- MAP_OBJ_GFX_LATIAS,
- MAP_OBJ_GFX_LATIOS,
- MAP_OBJ_GFX_BOY_5,
- MAP_OBJ_GFX_CONTEST_JUDGE,
- MAP_OBJ_GFX_BRENDAN_WATERING,
- MAP_OBJ_GFX_MAY_WATERING,
- MAP_OBJ_GFX_BRENDAN_DECORATING,
- MAP_OBJ_GFX_MAY_DECORATING,
- MAP_OBJ_GFX_ARCHIE,
- MAP_OBJ_GFX_MAXIE,
- MAP_OBJ_GFX_KYOGRE_1,
- MAP_OBJ_GFX_GROUDON_1,
- MAP_OBJ_GFX_FOSSIL,
- MAP_OBJ_GFX_REGIROCK,
- MAP_OBJ_GFX_REGICE,
- MAP_OBJ_GFX_REGISTEEL,
- MAP_OBJ_GFX_SKITTY,
- MAP_OBJ_GFX_KECLEON_1,
- MAP_OBJ_GFX_KYOGRE_2,
- MAP_OBJ_GFX_GROUDON_2,
- MAP_OBJ_GFX_RAYQUAZA,
- MAP_OBJ_GFX_ZIGZAGOON,
- MAP_OBJ_GFX_PIKACHU,
- MAP_OBJ_GFX_AZUMARILL,
- MAP_OBJ_GFX_WINGULL,
- MAP_OBJ_GFX_KECLEON_2,
- MAP_OBJ_GFX_TUBER_M_SWIMMING,
- MAP_OBJ_GFX_AZURILL,
- MAP_OBJ_GFX_MOM,
- MAP_OBJ_GFX_LINK_BRENDAN,
- MAP_OBJ_GFX_LINK_MAY,
-};
-
-enum {
- SHADOW_SIZE_S,
- SHADOW_SIZE_M,
- SHADOW_SIZE_L,
- SHADOW_SIZE_XL
-};
-
-enum {
- TRACKS_NONE,
- TRACKS_FOOT,
- TRACKS_BIKE_TIRE
-};
-
-#endif // GUARD_MAP_OBJECT_CONSTANTS_H
diff --git a/include/menu.h b/include/menu.h
index e93d688e4..99ff35adb 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -1,6 +1,7 @@
#ifndef GUARD_MENU_H
#define GUARD_MENU_H
+#include "text.h"
#include "window.h"
struct MenuAction
@@ -28,8 +29,10 @@ int decompress_and_copy_tile_data_to_vram(u8 bg_id, const void *src, int size, u
bool8 free_temp_tile_data_buffers_if_possible(void);
u64 sub_8198A50(struct WindowTemplate*, u8, u8, u8, u8, u8, u8, u16); // returns something but it isn't used, fix when menu.s is decomp'd
void CreateYesNoMenu(const struct WindowTemplate *windowTemplate, u16 borderFirstTileNum, u8 borderPalette, u8 initialCursorPos);
-s8 sub_8198C58(void);
+s8 ProcessMenuInputNoWrap_(void);
void do_scheduled_bg_tilemap_copies_to_vram(void);
void clear_scheduled_bg_copies_to_vram(void);
+void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, struct TextColor *color, s8 speed, const u8 *str);
+void sub_8197B1C(u8 windowId, bool8 copyToVram, u16 a2, u16 a3);
#endif // GUARD_MENU_H
diff --git a/include/moves.h b/include/moves.h
deleted file mode 100644
index 682f59506..000000000
--- a/include/moves.h
+++ /dev/null
@@ -1,366 +0,0 @@
-#ifndef GUARD_MOVES_H
-#define GUARD_MOVES_H
-
-enum
-{
- MOVE_NONE,
- MOVE_POUND,
- MOVE_KARATE_CHOP,
- MOVE_DOUBLE_SLAP,
- MOVE_COMET_PUNCH,
- MOVE_MEGA_PUNCH,
- MOVE_PAY_DAY,
- MOVE_FIRE_PUNCH,
- MOVE_ICE_PUNCH,
- MOVE_THUNDER_PUNCH,
- MOVE_SCRATCH,
- MOVE_VICE_GRIP,
- MOVE_GUILLOTINE,
- MOVE_RAZOR_WIND,
- MOVE_SWORDS_DANCE,
- MOVE_CUT,
- MOVE_GUST,
- MOVE_WING_ATTACK,
- MOVE_WHIRLWIND,
- MOVE_FLY,
- MOVE_BIND,
- MOVE_SLAM,
- MOVE_VINE_WHIP,
- MOVE_STOMP,
- MOVE_DOUBLE_KICK,
- MOVE_MEGA_KICK,
- MOVE_JUMP_KICK,
- MOVE_ROLLING_KICK,
- MOVE_SAND_ATTACK,
- MOVE_HEADBUTT,
- MOVE_HORN_ATTACK,
- MOVE_FURY_ATTACK,
- MOVE_HORN_DRILL,
- MOVE_TACKLE,
- MOVE_BODY_SLAM,
- MOVE_WRAP,
- MOVE_TAKE_DOWN,
- MOVE_THRASH,
- MOVE_DOUBLE_EDGE,
- MOVE_TAIL_WHIP,
- MOVE_POISON_STING,
- MOVE_TWINEEDLE,
- MOVE_PIN_MISSILE,
- MOVE_LEER,
- MOVE_BITE,
- MOVE_GROWL,
- MOVE_ROAR,
- MOVE_SING,
- MOVE_SUPERSONIC,
- MOVE_SONIC_BOOM,
- MOVE_DISABLE,
- MOVE_ACID,
- MOVE_EMBER,
- MOVE_FLAMETHROWER,
- MOVE_MIST,
- MOVE_WATER_GUN,
- MOVE_HYDRO_PUMP,
- MOVE_SURF,
- MOVE_ICE_BEAM,
- MOVE_BLIZZARD,
- MOVE_PSYBEAM,
- MOVE_BUBBLE_BEAM,
- MOVE_AURORA_BEAM,
- MOVE_HYPER_BEAM,
- MOVE_PECK,
- MOVE_DRILL_PECK,
- MOVE_SUBMISSION,
- MOVE_LOW_KICK,
- MOVE_COUNTER,
- MOVE_SEISMIC_TOSS,
- MOVE_STRENGTH,
- MOVE_ABSORB,
- MOVE_MEGA_DRAIN,
- MOVE_LEECH_SEED,
- MOVE_GROWTH,
- MOVE_RAZOR_LEAF,
- MOVE_SOLAR_BEAM,
- MOVE_POISON_POWDER,
- MOVE_STUN_SPORE,
- MOVE_SLEEP_POWDER,
- MOVE_PETAL_DANCE,
- MOVE_STRING_SHOT,
- MOVE_DRAGON_RAGE,
- MOVE_FIRE_SPIN,
- MOVE_THUNDER_SHOCK,
- MOVE_THUNDERBOLT,
- MOVE_THUNDER_WAVE,
- MOVE_THUNDER,
- MOVE_ROCK_THROW,
- MOVE_EARTHQUAKE,
- MOVE_FISSURE,
- MOVE_DIG,
- MOVE_TOXIC,
- MOVE_CONFUSION,
- MOVE_PSYCHIC,
- MOVE_HYPNOSIS,
- MOVE_MEDITATE,
- MOVE_AGILITY,
- MOVE_QUICK_ATTACK,
- MOVE_RAGE,
- MOVE_TELEPORT,
- MOVE_NIGHT_SHADE,
- MOVE_MIMIC,
- MOVE_SCREECH,
- MOVE_DOUBLE_TEAM,
- MOVE_RECOVER,
- MOVE_HARDEN,
- MOVE_MINIMIZE,
- MOVE_SMOKESCREEN,
- MOVE_CONFUSE_RAY,
- MOVE_WITHDRAW,
- MOVE_DEFENSE_CURL,
- MOVE_BARRIER,
- MOVE_LIGHT_SCREEN,
- MOVE_HAZE,
- MOVE_REFLECT,
- MOVE_FOCUS_ENERGY,
- MOVE_BIDE,
- MOVE_METRONOME,
- MOVE_MIRROR_MOVE,
- MOVE_SELF_DESTRUCT,
- MOVE_EGG_BOMB,
- MOVE_LICK,
- MOVE_SMOG,
- MOVE_SLUDGE,
- MOVE_BONE_CLUB,
- MOVE_FIRE_BLAST,
- MOVE_WATERFALL,
- MOVE_CLAMP,
- MOVE_SWIFT,
- MOVE_SKULL_BASH,
- MOVE_SPIKE_CANNON,
- MOVE_CONSTRICT,
- MOVE_AMNESIA,
- MOVE_KINESIS,
- MOVE_SOFT_BOILED,
- MOVE_HI_JUMP_KICK,
- MOVE_GLARE,
- MOVE_DREAM_EATER,
- MOVE_POISON_GAS,
- MOVE_BARRAGE,
- MOVE_LEECH_LIFE,
- MOVE_LOVELY_KISS,
- MOVE_SKY_ATTACK,
- MOVE_TRANSFORM,
- MOVE_BUBBLE,
- MOVE_DIZZY_PUNCH,
- MOVE_SPORE,
- MOVE_FLASH,
- MOVE_PSYWAVE,
- MOVE_SPLASH,
- MOVE_ACID_ARMOR,
- MOVE_CRABHAMMER,
- MOVE_EXPLOSION,
- MOVE_FURY_SWIPES,
- MOVE_BONEMERANG,
- MOVE_REST,
- MOVE_ROCK_SLIDE,
- MOVE_HYPER_FANG,
- MOVE_SHARPEN,
- MOVE_CONVERSION,
- MOVE_TRI_ATTACK,
- MOVE_SUPER_FANG,
- MOVE_SLASH,
- MOVE_SUBSTITUTE,
- MOVE_STRUGGLE,
- MOVE_SKETCH,
- MOVE_TRIPLE_KICK,
- MOVE_THIEF,
- MOVE_SPIDER_WEB,
- MOVE_MIND_READER,
- MOVE_NIGHTMARE,
- MOVE_FLAME_WHEEL,
- MOVE_SNORE,
- MOVE_CURSE,
- MOVE_FLAIL,
- MOVE_CONVERSION_2,
- MOVE_AEROBLAST,
- MOVE_COTTON_SPORE,
- MOVE_REVERSAL,
- MOVE_SPITE,
- MOVE_POWDER_SNOW,
- MOVE_PROTECT,
- MOVE_MACH_PUNCH,
- MOVE_SCARY_FACE,
- MOVE_FAINT_ATTACK,
- MOVE_SWEET_KISS,
- MOVE_BELLY_DRUM,
- MOVE_SLUDGE_BOMB,
- MOVE_MUD_SLAP,
- MOVE_OCTAZOOKA,
- MOVE_SPIKES,
- MOVE_ZAP_CANNON,
- MOVE_FORESIGHT,
- MOVE_DESTINY_BOND,
- MOVE_PERISH_SONG,
- MOVE_ICY_WIND,
- MOVE_DETECT,
- MOVE_BONE_RUSH,
- MOVE_LOCK_ON,
- MOVE_OUTRAGE,
- MOVE_SANDSTORM,
- MOVE_GIGA_DRAIN,
- MOVE_ENDURE,
- MOVE_CHARM,
- MOVE_ROLLOUT,
- MOVE_FALSE_SWIPE,
- MOVE_SWAGGER,
- MOVE_MILK_DRINK,
- MOVE_SPARK,
- MOVE_FURY_CUTTER,
- MOVE_STEEL_WING,
- MOVE_MEAN_LOOK,
- MOVE_ATTRACT,
- MOVE_SLEEP_TALK,
- MOVE_HEAL_BELL,
- MOVE_RETURN,
- MOVE_PRESENT,
- MOVE_FRUSTRATION,
- MOVE_SAFEGUARD,
- MOVE_PAIN_SPLIT,
- MOVE_SACRED_FIRE,
- MOVE_MAGNITUDE,
- MOVE_DYNAMIC_PUNCH,
- MOVE_MEGAHORN,
- MOVE_DRAGON_BREATH,
- MOVE_BATON_PASS,
- MOVE_ENCORE,
- MOVE_PURSUIT,
- MOVE_RAPID_SPIN,
- MOVE_SWEET_SCENT,
- MOVE_IRON_TAIL,
- MOVE_METAL_CLAW,
- MOVE_VITAL_THROW,
- MOVE_MORNING_SUN,
- MOVE_SYNTHESIS,
- MOVE_MOONLIGHT,
- MOVE_HIDDEN_POWER,
- MOVE_CROSS_CHOP,
- MOVE_TWISTER,
- MOVE_RAIN_DANCE,
- MOVE_SUNNY_DAY,
- MOVE_CRUNCH,
- MOVE_MIRROR_COAT,
- MOVE_PSYCH_UP,
- MOVE_EXTREME_SPEED,
- MOVE_ANCIENT_POWER,
- MOVE_SHADOW_BALL,
- MOVE_FUTURE_SIGHT,
- MOVE_ROCK_SMASH,
- MOVE_WHIRLPOOL,
- MOVE_BEAT_UP,
- MOVE_FAKE_OUT,
- MOVE_UPROAR,
- MOVE_STOCKPILE,
- MOVE_SPIT_UP,
- MOVE_SWALLOW,
- MOVE_HEAT_WAVE,
- MOVE_HAIL,
- MOVE_TORMENT,
- MOVE_FLATTER,
- MOVE_WILL_O_WISP,
- MOVE_MEMENTO,
- MOVE_FACADE,
- MOVE_FOCUS_PUNCH,
- MOVE_SMELLING_SALT,
- MOVE_FOLLOW_ME,
- MOVE_NATURE_POWER,
- MOVE_CHARGE,
- MOVE_TAUNT,
- MOVE_HELPING_HAND,
- MOVE_TRICK,
- MOVE_ROLE_PLAY,
- MOVE_WISH,
- MOVE_ASSIST,
- MOVE_INGRAIN,
- MOVE_SUPERPOWER,
- MOVE_MAGIC_COAT,
- MOVE_RECYCLE,
- MOVE_REVENGE,
- MOVE_BRICK_BREAK,
- MOVE_YAWN,
- MOVE_KNOCK_OFF,
- MOVE_ENDEAVOR,
- MOVE_ERUPTION,
- MOVE_SKILL_SWAP,
- MOVE_IMPRISON,
- MOVE_REFRESH,
- MOVE_GRUDGE,
- MOVE_SNATCH,
- MOVE_SECRET_POWER,
- MOVE_DIVE,
- MOVE_ARM_THRUST,
- MOVE_CAMOUFLAGE,
- MOVE_TAIL_GLOW,
- MOVE_LUSTER_PURGE,
- MOVE_MIST_BALL,
- MOVE_FEATHER_DANCE,
- MOVE_TEETER_DANCE,
- MOVE_BLAZE_KICK,
- MOVE_MUD_SPORT,
- MOVE_ICE_BALL,
- MOVE_NEEDLE_ARM,
- MOVE_SLACK_OFF,
- MOVE_HYPER_VOICE,
- MOVE_POISON_FANG,
- MOVE_CRUSH_CLAW,
- MOVE_BLAST_BURN,
- MOVE_HYDRO_CANNON,
- MOVE_METEOR_MASH,
- MOVE_ASTONISH,
- MOVE_WEATHER_BALL,
- MOVE_AROMATHERAPY,
- MOVE_FAKE_TEARS,
- MOVE_AIR_CUTTER,
- MOVE_OVERHEAT,
- MOVE_ODOR_SLEUTH,
- MOVE_ROCK_TOMB,
- MOVE_SILVER_WIND,
- MOVE_METAL_SOUND,
- MOVE_GRASS_WHISTLE,
- MOVE_TICKLE,
- MOVE_COSMIC_POWER,
- MOVE_WATER_SPOUT,
- MOVE_SIGNAL_BEAM,
- MOVE_SHADOW_PUNCH,
- MOVE_EXTRASENSORY,
- MOVE_SKY_UPPERCUT,
- MOVE_SAND_TOMB,
- MOVE_SHEER_COLD,
- MOVE_MUDDY_WATER,
- MOVE_BULLET_SEED,
- MOVE_AERIAL_ACE,
- MOVE_ICICLE_SPEAR,
- MOVE_IRON_DEFENSE,
- MOVE_BLOCK,
- MOVE_HOWL,
- MOVE_DRAGON_CLAW,
- MOVE_FRENZY_PLANT,
- MOVE_BULK_UP,
- MOVE_BOUNCE,
- MOVE_MUD_SHOT,
- MOVE_POISON_TAIL,
- MOVE_COVET,
- MOVE_VOLT_TACKLE,
- MOVE_MAGICAL_LEAF,
- MOVE_WATER_SPORT,
- MOVE_CALM_MIND,
- MOVE_LEAF_BLADE,
- MOVE_DRAGON_DANCE,
- MOVE_ROCK_BLAST,
- MOVE_SHOCK_WAVE,
- MOVE_WATER_PULSE,
- MOVE_DOOM_DESIRE,
- MOVE_PSYCHO_BOOST,
-};
-extern const u8 gMoveNames[][13];
-
-#define LAST_MOVE_INDEX MOVE_PSYCHO_BOOST
-
-#endif // GUARD_MOVES_H
diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h
index 42b8c60b1..c52184972 100644
--- a/include/new_menu_helpers.h
+++ b/include/new_menu_helpers.h
@@ -13,5 +13,6 @@ void DisplayItemMessageOnField(u8 taskId, const u8 *src, TaskFunc callback);
void sub_8197434(u8 a0, u8 a1);
void SetStandardWindowBorderStyle(u8 a0, u8 a1);
void sub_8197930(void);
+u8 GetPlayerTextSpeed(void);
#endif // GUARD_NEW_MENU_HELPERS_H
diff --git a/include/overworld.h b/include/overworld.h
index ea3d27319..a5fba0c10 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -68,4 +68,7 @@ void c2_load_new_map(void);
void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused);
void mapldr_default(void);
+void IncrementGameStat(u8);
+u32 GetGameStat(u8);
+
#endif //GUARD_ROM4_H
diff --git a/include/party_menu.h b/include/party_menu.h
index 7a7d59cd0..c787bafb1 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -1,8 +1,18 @@
#ifndef GUARD_PARTY_MENU_H
#define GUARD_PARTY_MENU_H
+enum {
+ AILMENT_NONE,
+ AILMENT_PSN,
+ AILMENT_PRZ,
+ AILMENT_SLP,
+ AILMENT_FRZ,
+ AILMENT_BRN
+};
+
bool8 pokemon_has_move(struct Pokemon *, u16);
void sub_81B58A8(void);
void DoWallyTutorialBagMenu(void);
+u8 pokemon_ailments_get_primary(u32 status);
#endif // GUARD_PARTY_MENU_H
diff --git a/include/pokeball.h b/include/pokeball.h
index 76f084465..84178b5b2 100644
--- a/include/pokeball.h
+++ b/include/pokeball.h
@@ -1,8 +1,32 @@
#ifndef GUARD_POKEBALL_H
#define GUARD_POKEBALL_H
-u8 sub_80753E8(u16, u8);
+enum
+{
+ BALL_POKE,
+ BALL_GREAT,
+ BALL_SAFARI,
+ BALL_ULTRA,
+ BALL_MASTER,
+ BALL_NET,
+ BALL_DIVE,
+ BALL_NEST,
+ BALL_REPEAT,
+ BALL_TIMER,
+ BALL_LUXURY,
+ BALL_PREMIER,
+ POKEBALL_COUNT
+};
+
+#define POKEBALL_PLAYER_SENDOUT 0xFF
+#define POKEBALL_OPPONENT_SENDOUT 0xFE
+
+u8 DoPokeballSendOutAnimation(s16 pan, u8 kindOfThrow);
+void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 bank, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 g, u32 h, u16 species);
+u8 sub_807671C(u8 a, u8 b, u8 x, u8 y, u8 oamPriority, u8 subPriority, u8 g, u32 h);
void sub_8076918(u8 bank);
void DoHitAnimHealthboxEffect(u8 bank);
+void LoadBallGfx(u8 ballId);
+void FreeBallGfx(u8 ballId);
#endif // GUARD_POKEBALL_H
diff --git a/include/pokeblock.h b/include/pokeblock.h
index b0e93f0e5..a145cbada 100644
--- a/include/pokeblock.h
+++ b/include/pokeblock.h
@@ -23,23 +23,11 @@ enum
};
void ClearPokeblocks(void);
+s8 GetFirstFreePokeblockSlot(void);
+bool32 AddPokeblock(struct Pokeblock *pokeblock);
+u8 GetHighestPokeblocksFlavorLevel(const struct Pokeblock *pokeblock);
+u8 GetPokeblocksFeel(const struct Pokeblock *pokeblock);
+u8 GetPokeblocksFlavor(const struct Pokeblock *pokeblock);
s16 PokeblockGetGain(u8, const struct Pokeblock *);
-/*
-void sub_810B96C(void);
-u8 sub_810BA50(s16, s16, u8);
-u8 sub_810C9B0(struct Pokeblock *);
-s16 GetPokeblockData(const struct Pokeblock *, u8);
-u8 sub_810C9E8(struct Pokeblock *);
-void sub_810BA7C(u8);
-bool8 PokeblockClearIfExists(u8);
-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/pokemon.h b/include/pokemon.h
index 1eb052f4e..cdab96687 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -642,8 +642,8 @@ u8 CheckPartyPokerus(struct Pokemon *party, u8 selection);
u8 CheckPartyHasHadPokerus(struct Pokemon *party, u8 selection);
void UpdatePartyPokerusTime(u16 days);
void PartySpreadPokerus(struct Pokemon *party);
-s8 GetMonFlavourRelation(struct Pokemon *mon, u8 a2);
-s8 GetFlavourRelationByPersonality(u32 personality, u8 a2);
+s8 GetMonFlavorRelation(struct Pokemon *mon, u8 a2);
+s8 GetFlavorRelationByPersonality(u32 personality, u8 a2);
u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit);
u8 GetDefaultMoveTarget(u8 atkBank);
u16 PlayerGenderToFrontTrainerPicId(u8 playerGender);
@@ -653,6 +653,7 @@ u8 GetSecretBaseTrainerPicIndex(void);
bool8 TryIncrementMonLevel(struct Pokemon *mon);
void BoxMonToMon(struct BoxPokemon *srcMon, struct Pokemon *dstMon);
u8 GetLevelUpMovesBySpecies(u16 species, u16 *moves);
+u8 GetMonsStateToDoubles_2(void);
#include "sprite.h"
diff --git a/include/pokemon_3.h b/include/pokemon_3.h
index 5c9862d57..82dfacf48 100644
--- a/include/pokemon_3.h
+++ b/include/pokemon_3.h
@@ -3,5 +3,7 @@
const u8* GetTrainerClassNameFromId(u16 trainerId);
const u8* GetTrainerNameFromId(u16 trainerId);
+void PlayMapChosenOrBattleBGM(u16 song);
+u8 GetTrainerEncounterMusicId(u16 trainerOpponentId);
#endif // GUARD_POKEMON_3_H
diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h
index b6d21823e..e0a9aa0c5 100644
--- a/include/pokemon_icon.h
+++ b/include/pokemon_icon.h
@@ -3,6 +3,7 @@
const u8 *GetMonIconPtr(u16 speciesId, u32 personality, u32 frameNo);
const u16 *GetValidMonIconPalettePtr(u16 speciesId);
+u16 GetUnownLetterByPersonality(u32 personality);
u16 sub_80D2E84(u16 speciesId);
void sub_80D2F68(u16 iconId);
u8 sub_80D2D78(u16 iconId, void callback(struct Sprite *), u16 x, u16 y, u16 a4, u8 a5);
diff --git a/include/pokenav.h b/include/pokenav.h
new file mode 100644
index 000000000..06676610a
--- /dev/null
+++ b/include/pokenav.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_POKENAV_H
+#define GUARD_POKENAV_H
+
+bool8 sub_81D5C18(void);
+
+#endif //GUARD_POKENAV_H
diff --git a/include/rng.h b/include/random.h
index ae98e575f..79a9d71dc 100644
--- a/include/rng.h
+++ b/include/random.h
@@ -1,5 +1,5 @@
-#ifndef GUARD_RNG_H
-#define GUARD_RNG_H
+#ifndef GUARD_RANDOM_H
+#define GUARD_RANDOM_H
extern u32 gRngValue;
extern u32 gRng2Value;
@@ -15,4 +15,4 @@ u16 Random2(void);
void SeedRng(u16 seed);
void SeedRng2(u16 seed);
-#endif // GUARD_RNG_H
+#endif // GUARD_RANDOM_H
diff --git a/include/rom6.h b/include/rom6.h
index b4a972794..6d20752e2 100644
--- a/include/rom6.h
+++ b/include/rom6.h
@@ -5,5 +5,11 @@ void sub_81357FC(u8, void(void));
u8 GetLeadMonIndex(void);
u8 GetSSTidalLocation(u8 *grp, u8 *num, s16 *x, s16 *y);
void sub_813BADC(bool8);
+bool8 sub_813B9C0(void);
+void UpdateMirageRnd(u16 days);
+void UpdateBirchState(u16 days);
+void UpdateFrontierManiac(u16 days);
+void UpdateFrontierGambler(u16 days);
+void SetShoalItemFlag(u16 days);
#endif //GUARD_ROM6_H
diff --git a/include/safari_zone.h b/include/safari_zone.h
index 9a81894b8..39ee3ccb3 100644
--- a/include/safari_zone.h
+++ b/include/safari_zone.h
@@ -13,6 +13,8 @@ void ExitSafariMode(void);
bool8 SafariZoneTakeStep(void);
void SafariZoneRetirePrompt(void);
+void CB2_EndSafariBattle(void);
+
struct Pokeblock *SafariZoneGetActivePokeblock(void);
void SafariZoneActivatePokeblockFeeder(u8 pokeblock_index);
diff --git a/include/secret_base.h b/include/secret_base.h
index 630a36773..b2502889c 100644
--- a/include/secret_base.h
+++ b/include/secret_base.h
@@ -9,5 +9,6 @@
void sub_80E9578(void);
void sub_80E980C(void);
u8 *GetSecretBaseMapName(u8 *dest);
+const u8 *GetSecretBaseTrainerLoseText(void);
#endif //GUARD_SECRET_BASE_H
diff --git a/include/songs.h b/include/songs.h
index 5a1fff00c..37c4f16b4 100644
--- a/include/songs.h
+++ b/include/songs.h
@@ -372,20 +372,20 @@ enum
BGM_BATTLE_DOME_TOURNAMENT,
BGM_BATTLE_PIKE,
BGM_BATTLE_FACTORY,
- BGM_BATTLE_LEGENDARY,
- BGM_BATTLE_FRONTIER_BRAIN,
- BGM_BATTLE_MEW,
- BGM_BATTLE_DOME, // end of the human-readable names
+ /*0x1D6*/ BGM_BATTLE_LEGENDARY,
+ /*0x1D7*/ BGM_BATTLE_FRONTIER_BRAIN,
+ /*0x1D8*/ BGM_BATTLE_MEW,
+ /*0x1D9*/ BGM_BATTLE_DOME, // end of the human-readable names
/*0x1DA*/ BGM_BATTLE27, // wild
- BGM_BATTLE31, // aqua/magma grunt
- BGM_BATTLE20, // trainer
- BGM_BATTLE32, // gym leader
- BGM_BATTLE33, // champion
- BGM_BATTLE36, // regi
- BGM_BATTLE34, // weather trio
- BGM_BATTLE35, // rival
- BGM_BATTLE38, // elite four
- BGM_BATTLE30, // aqua/magma leader
+ /*0x1DB*/ BGM_BATTLE31, // aqua/magma grunt
+ /*0x1DC*/ BGM_BATTLE20, // trainer
+ /*0x1DD*/ BGM_BATTLE32, // gym leader
+ /*0x1DE*/ BGM_BATTLE33, // champion
+ /*0x1DF*/ BGM_BATTLE36, // regi
+ /*0x1E0*/ BGM_BATTLE34, // weather trio
+ /*0x1E1*/ BGM_BATTLE35, // rival
+ /*0x1E2*/ BGM_BATTLE38, // elite four
+ /*0x1E3*/ BGM_BATTLE30, // aqua/magma leader
/*0x1E4*/ BGM_FRLG_FOLLOW_ME, // FR/LG names not known, human-readable again!
BGM_FRLG_GAMECORNER,
BGM_FRLG_ROCKET_HIDEOUT,
@@ -453,14 +453,14 @@ enum
BGM_FRLG_ISLAND_FOUR,
BGM_FRLG_ISLAND_SIX,
BGM_FRLG_FLUTE,
- BGM_FRLG_BATTLE_DEOXYS,
- BGM_FRLG_BATTLE_MEWTWO,
- BGM_FRLG_BATTLE_LEGENDARY,
- BGM_FRLG_LEADER_EYE,
- BGM_FRLG_DEOXYS_EYE,
- BGM_FRLG_TRAINER_TOWER,
- BGM_FRLG_HALL_OF_FAME_PALLET_TOWN,
- /*0x22E*/BGM_FRLG_TEACHY_TV,
+ /*0x227*/ BGM_FRLG_BATTLE_DEOXYS,
+ /*0x228*/ BGM_FRLG_BATTLE_MEWTWO,
+ /*0x229*/ BGM_FRLG_BATTLE_LEGENDARY,
+ /*0x22A*/ BGM_FRLG_LEADER_EYE,
+ /*0x22B*/ BGM_FRLG_DEOXYS_EYE,
+ /*0x22C*/ BGM_FRLG_TRAINER_TOWER,
+ /*0x22D*/ BGM_FRLG_HALL_OF_FAME_PALLET_TOWN,
+ /*0x22E*/ BGM_FRLG_TEACHY_TV,
};
#endif // GUARD_SONGS_H
diff --git a/include/species.h b/include/species.h
deleted file mode 100644
index ac0797418..000000000
--- a/include/species.h
+++ /dev/null
@@ -1,454 +0,0 @@
-#ifndef GUARD_SPECIES_H
-#define GUARD_SPECIES_H
-
-enum
-{
- SPECIES_NONE, // 0x000
- SPECIES_BULBASAUR, // 0x001
- SPECIES_IVYSAUR, // 0x002
- SPECIES_VENUSAUR, // 0x003
- SPECIES_CHARMANDER, // 0x004
- SPECIES_CHARMELEON, // 0x005
- SPECIES_CHARIZARD, // 0x006
- SPECIES_SQUIRTLE, // 0x007
- SPECIES_WARTORTLE, // 0x008
- SPECIES_BLASTOISE, // 0x009
- SPECIES_CATERPIE, // 0x00a
- SPECIES_METAPOD, // 0x00b
- SPECIES_BUTTERFREE, // 0x00c
- SPECIES_WEEDLE, // 0x00d
- SPECIES_KAKUNA, // 0x00e
- SPECIES_BEEDRILL, // 0x00f
- SPECIES_PIDGEY, // 0x010
- SPECIES_PIDGEOTTO, // 0x011
- SPECIES_PIDGEOT, // 0x012
- SPECIES_RATTATA, // 0x013
- SPECIES_RATICATE, // 0x014
- SPECIES_SPEAROW, // 0x015
- SPECIES_FEAROW, // 0x016
- SPECIES_EKANS, // 0x017
- SPECIES_ARBOK, // 0x018
- SPECIES_PIKACHU, // 0x019
- SPECIES_RAICHU, // 0x01a
- SPECIES_SANDSHREW, // 0x01b
- SPECIES_SANDSLASH, // 0x01c
- SPECIES_NIDORAN_F, // 0x01d
- SPECIES_NIDORINA, // 0x01e
- SPECIES_NIDOQUEEN, // 0x01f
- SPECIES_NIDORAN_M, // 0x020
- SPECIES_NIDORINO, // 0x021
- SPECIES_NIDOKING, // 0x022
- SPECIES_CLEFAIRY, // 0x023
- SPECIES_CLEFABLE, // 0x024
- SPECIES_VULPIX, // 0x025
- SPECIES_NINETALES, // 0x026
- SPECIES_JIGGLYPUFF, // 0x027
- SPECIES_WIGGLYTUFF, // 0x028
- SPECIES_ZUBAT, // 0x029
- SPECIES_GOLBAT, // 0x02a
- SPECIES_ODDISH, // 0x02b
- SPECIES_GLOOM, // 0x02c
- SPECIES_VILEPLUME, // 0x02d
- SPECIES_PARAS, // 0x02e
- SPECIES_PARASECT, // 0x02f
- SPECIES_VENONAT, // 0x030
- SPECIES_VENOMOTH, // 0x031
- SPECIES_DIGLETT, // 0x032
- SPECIES_DUGTRIO, // 0x033
- SPECIES_MEOWTH, // 0x034
- SPECIES_PERSIAN, // 0x035
- SPECIES_PSYDUCK, // 0x036
- SPECIES_GOLDUCK, // 0x037
- SPECIES_MANKEY, // 0x038
- SPECIES_PRIMEAPE, // 0x039
- SPECIES_GROWLITHE, // 0x03a
- SPECIES_ARCANINE, // 0x03b
- SPECIES_POLIWAG, // 0x03c
- SPECIES_POLIWHIRL, // 0x03d
- SPECIES_POLIWRATH, // 0x03e
- SPECIES_ABRA, // 0x03f
- SPECIES_KADABRA, // 0x040
- SPECIES_ALAKAZAM, // 0x041
- SPECIES_MACHOP, // 0x042
- SPECIES_MACHOKE, // 0x043
- SPECIES_MACHAMP, // 0x044
- SPECIES_BELLSPROUT, // 0x045
- SPECIES_WEEPINBELL, // 0x046
- SPECIES_VICTREEBEL, // 0x047
- SPECIES_TENTACOOL, // 0x048
- SPECIES_TENTACRUEL, // 0x049
- SPECIES_GEODUDE, // 0x04a
- SPECIES_GRAVELER, // 0x04b
- SPECIES_GOLEM, // 0x04c
- SPECIES_PONYTA, // 0x04d
- SPECIES_RAPIDASH, // 0x04e
- SPECIES_SLOWPOKE, // 0x04f
- SPECIES_SLOWBRO, // 0x050
- SPECIES_MAGNEMITE, // 0x051
- SPECIES_MAGNETON, // 0x052
- SPECIES_FARFETCHD, // 0x053
- SPECIES_DODUO, // 0x054
- SPECIES_DODRIO, // 0x055
- SPECIES_SEEL, // 0x056
- SPECIES_DEWGONG, // 0x057
- SPECIES_GRIMER, // 0x058
- SPECIES_MUK, // 0x059
- SPECIES_SHELLDER, // 0x05a
- SPECIES_CLOYSTER, // 0x05b
- SPECIES_GASTLY, // 0x05c
- SPECIES_HAUNTER, // 0x05d
- SPECIES_GENGAR, // 0x05e
- SPECIES_ONIX, // 0x05f
- SPECIES_DROWZEE, // 0x060
- SPECIES_HYPNO, // 0x061
- SPECIES_KRABBY, // 0x062
- SPECIES_KINGLER, // 0x063
- SPECIES_VOLTORB, // 0x064
- SPECIES_ELECTRODE, // 0x065
- SPECIES_EXEGGCUTE, // 0x066
- SPECIES_EXEGGUTOR, // 0x067
- SPECIES_CUBONE, // 0x068
- SPECIES_MAROWAK, // 0x069
- SPECIES_HITMONLEE, // 0x06a
- SPECIES_HITMONCHAN, // 0x06b
- SPECIES_LICKITUNG, // 0x06c
- SPECIES_KOFFING, // 0x06d
- SPECIES_WEEZING, // 0x06e
- SPECIES_RHYHORN, // 0x06f
- SPECIES_RHYDON, // 0x070
- SPECIES_CHANSEY, // 0x071
- SPECIES_TANGELA, // 0x072
- SPECIES_KANGASKHAN, // 0x073
- SPECIES_HORSEA, // 0x074
- SPECIES_SEADRA, // 0x075
- SPECIES_GOLDEEN, // 0x076
- SPECIES_SEAKING, // 0x077
- SPECIES_STARYU, // 0x078
- SPECIES_STARMIE, // 0x079
- SPECIES_MR_MIME, // 0x07a
- SPECIES_SCYTHER, // 0x07b
- SPECIES_JYNX, // 0x07c
- SPECIES_ELECTABUZZ, // 0x07d
- SPECIES_MAGMAR, // 0x07e
- SPECIES_PINSIR, // 0x07f
- SPECIES_TAUROS, // 0x080
- SPECIES_MAGIKARP, // 0x081
- SPECIES_GYARADOS, // 0x082
- SPECIES_LAPRAS, // 0x083
- SPECIES_DITTO, // 0x084
- SPECIES_EEVEE, // 0x085
- SPECIES_VAPOREON, // 0x086
- SPECIES_JOLTEON, // 0x087
- SPECIES_FLAREON, // 0x088
- SPECIES_PORYGON, // 0x089
- SPECIES_OMANYTE, // 0x08a
- SPECIES_OMASTAR, // 0x08b
- SPECIES_KABUTO, // 0x08c
- SPECIES_KABUTOPS, // 0x08d
- SPECIES_AERODACTYL, // 0x08e
- SPECIES_SNORLAX, // 0x08f
- SPECIES_ARTICUNO, // 0x090
- SPECIES_ZAPDOS, // 0x091
- SPECIES_MOLTRES, // 0x092
- SPECIES_DRATINI, // 0x093
- SPECIES_DRAGONAIR, // 0x094
- SPECIES_DRAGONITE, // 0x095
- SPECIES_MEWTWO, // 0x096
- SPECIES_MEW, // 0x097
- SPECIES_CHIKORITA, // 0x098
- SPECIES_BAYLEEF, // 0x099
- SPECIES_MEGANIUM, // 0x09a
- SPECIES_CYNDAQUIL, // 0x09b
- SPECIES_QUILAVA, // 0x09c
- SPECIES_TYPHLOSION, // 0x09d
- SPECIES_TOTODILE, // 0x09e
- SPECIES_CROCONAW, // 0x09f
- SPECIES_FERALIGATR, // 0x0a0
- SPECIES_SENTRET, // 0x0a1
- SPECIES_FURRET, // 0x0a2
- SPECIES_HOOTHOOT, // 0x0a3
- SPECIES_NOCTOWL, // 0x0a4
- SPECIES_LEDYBA, // 0x0a5
- SPECIES_LEDIAN, // 0x0a6
- SPECIES_SPINARAK, // 0x0a7
- SPECIES_ARIADOS, // 0x0a8
- SPECIES_CROBAT, // 0x0a9
- SPECIES_CHINCHOU, // 0x0aa
- SPECIES_LANTURN, // 0x0ab
- SPECIES_PICHU, // 0x0ac
- SPECIES_CLEFFA, // 0x0ad
- SPECIES_IGGLYBUFF, // 0x0ae
- SPECIES_TOGEPI, // 0x0af
- SPECIES_TOGETIC, // 0x0b0
- SPECIES_NATU, // 0x0b1
- SPECIES_XATU, // 0x0b2
- SPECIES_MAREEP, // 0x0b3
- SPECIES_FLAAFFY, // 0x0b4
- SPECIES_AMPHAROS, // 0x0b5
- SPECIES_BELLOSSOM, // 0x0b6
- SPECIES_MARILL, // 0x0b7
- SPECIES_AZUMARILL, // 0x0b8
- SPECIES_SUDOWOODO, // 0x0b9
- SPECIES_POLITOED, // 0x0ba
- SPECIES_HOPPIP, // 0x0bb
- SPECIES_SKIPLOOM, // 0x0bc
- SPECIES_JUMPLUFF, // 0x0bd
- SPECIES_AIPOM, // 0x0be
- SPECIES_SUNKERN, // 0x0bf
- SPECIES_SUNFLORA, // 0x0c0
- SPECIES_YANMA, // 0x0c1
- SPECIES_WOOPER, // 0x0c2
- SPECIES_QUAGSIRE, // 0x0c3
- SPECIES_ESPEON, // 0x0c4
- SPECIES_UMBREON, // 0x0c5
- SPECIES_MURKROW, // 0x0c6
- SPECIES_SLOWKING, // 0x0c7
- SPECIES_MISDREAVUS, // 0x0c8
- SPECIES_UNOWN, // 0x0c9
- SPECIES_WOBBUFFET, // 0x0ca
- SPECIES_GIRAFARIG, // 0x0cb
- SPECIES_PINECO, // 0x0cc
- SPECIES_FORRETRESS, // 0x0cd
- SPECIES_DUNSPARCE, // 0x0ce
- SPECIES_GLIGAR, // 0x0cf
- SPECIES_STEELIX, // 0x0d0
- SPECIES_SNUBBULL, // 0x0d1
- SPECIES_GRANBULL, // 0x0d2
- SPECIES_QWILFISH, // 0x0d3
- SPECIES_SCIZOR, // 0x0d4
- SPECIES_SHUCKLE, // 0x0d5
- SPECIES_HERACROSS, // 0x0d6
- SPECIES_SNEASEL, // 0x0d7
- SPECIES_TEDDIURSA, // 0x0d8
- SPECIES_URSARING, // 0x0d9
- SPECIES_SLUGMA, // 0x0da
- SPECIES_MAGCARGO, // 0x0db
- SPECIES_SWINUB, // 0x0dc
- SPECIES_PILOSWINE, // 0x0dd
- SPECIES_CORSOLA, // 0x0de
- SPECIES_REMORAID, // 0x0df
- SPECIES_OCTILLERY, // 0x0e0
- SPECIES_DELIBIRD, // 0x0e1
- SPECIES_MANTINE, // 0x0e2
- SPECIES_SKARMORY, // 0x0e3
- SPECIES_HOUNDOUR, // 0x0e4
- SPECIES_HOUNDOOM, // 0x0e5
- SPECIES_KINGDRA, // 0x0e6
- SPECIES_PHANPY, // 0x0e7
- SPECIES_DONPHAN, // 0x0e8
- SPECIES_PORYGON2, // 0x0e9
- SPECIES_STANTLER, // 0x0ea
- SPECIES_SMEARGLE, // 0x0eb
- SPECIES_TYROGUE, // 0x0ec
- SPECIES_HITMONTOP, // 0x0ed
- SPECIES_SMOOCHUM, // 0x0ee
- SPECIES_ELEKID, // 0x0ef
- SPECIES_MAGBY, // 0x0f0
- SPECIES_MILTANK, // 0x0f1
- SPECIES_BLISSEY, // 0x0f2
- SPECIES_RAIKOU, // 0x0f3
- SPECIES_ENTEI, // 0x0f4
- SPECIES_SUICUNE, // 0x0f5
- SPECIES_LARVITAR, // 0x0f6
- SPECIES_PUPITAR, // 0x0f7
- SPECIES_TYRANITAR, // 0x0f8
- SPECIES_LUGIA, // 0x0f9
- SPECIES_HO_OH, // 0x0fa
- SPECIES_CELEBI, // 0x0fb
-
- SPECIES_OLD_UNOWN_B,
- SPECIES_OLD_UNOWN_C,
- SPECIES_OLD_UNOWN_D,
- SPECIES_OLD_UNOWN_E,
- SPECIES_OLD_UNOWN_F,
- SPECIES_OLD_UNOWN_G,
- SPECIES_OLD_UNOWN_H,
- SPECIES_OLD_UNOWN_I,
- SPECIES_OLD_UNOWN_J,
- SPECIES_OLD_UNOWN_K,
- SPECIES_OLD_UNOWN_L,
- SPECIES_OLD_UNOWN_M,
- SPECIES_OLD_UNOWN_N,
- SPECIES_OLD_UNOWN_O,
- SPECIES_OLD_UNOWN_P,
- SPECIES_OLD_UNOWN_Q,
- SPECIES_OLD_UNOWN_R,
- SPECIES_OLD_UNOWN_S,
- SPECIES_OLD_UNOWN_T,
- SPECIES_OLD_UNOWN_U,
- SPECIES_OLD_UNOWN_V,
- SPECIES_OLD_UNOWN_W,
- SPECIES_OLD_UNOWN_X,
- SPECIES_OLD_UNOWN_Y,
- SPECIES_OLD_UNOWN_Z,
-
- SPECIES_TREECKO, // 0x115
- SPECIES_GROVYLE, // 0x116
- SPECIES_SCEPTILE, // 0x117
- SPECIES_TORCHIC, // 0x118
- SPECIES_COMBUSKEN, // 0x119
- SPECIES_BLAZIKEN, // 0x11a
- SPECIES_MUDKIP, // 0x11b
- SPECIES_MARSHTOMP, // 0x11c
- SPECIES_SWAMPERT, // 0x11d
- SPECIES_POOCHYENA, // 0x11e
- SPECIES_MIGHTYENA, // 0x11f
- SPECIES_ZIGZAGOON, // 0x120
- SPECIES_LINOONE, // 0x121
- SPECIES_WURMPLE, // 0x122
- SPECIES_SILCOON, // 0x123
- SPECIES_BEAUTIFLY, // 0x124
- SPECIES_CASCOON, // 0x125
- SPECIES_DUSTOX, // 0x126
- SPECIES_LOTAD, // 0x127
- SPECIES_LOMBRE, // 0x128
- SPECIES_LUDICOLO, // 0x129
- SPECIES_SEEDOT, // 0x12a
- SPECIES_NUZLEAF, // 0x12b
- SPECIES_SHIFTRY, // 0x12c
- SPECIES_NINCADA, // 0x12d
- SPECIES_NINJASK, // 0x12e
- SPECIES_SHEDINJA, // 0x12f
- SPECIES_TAILLOW, // 0x130
- SPECIES_SWELLOW, // 0x131
- SPECIES_SHROOMISH, // 0x132
- SPECIES_BRELOOM, // 0x133
- SPECIES_SPINDA, // 0x134
- SPECIES_WINGULL, // 0x135
- SPECIES_PELIPPER, // 0x136
- SPECIES_SURSKIT, // 0x137
- SPECIES_MASQUERAIN, // 0x138
- SPECIES_WAILMER, // 0x139
- SPECIES_WAILORD, // 0x13a
- SPECIES_SKITTY, // 0x13b
- SPECIES_DELCATTY, // 0x13c
- SPECIES_KECLEON, // 0x13d
- SPECIES_BALTOY, // 0x13e
- SPECIES_CLAYDOL, // 0x13f
- SPECIES_NOSEPASS, // 0x140
- SPECIES_TORKOAL, // 0x141
- SPECIES_SABLEYE, // 0x142
- SPECIES_BARBOACH, // 0x143
- SPECIES_WHISCASH, // 0x144
- SPECIES_LUVDISC, // 0x145
- SPECIES_CORPHISH, // 0x146
- SPECIES_CRAWDAUNT, // 0x147
- SPECIES_FEEBAS, // 0x148
- SPECIES_MILOTIC, // 0x149
- SPECIES_CARVANHA, // 0x14a
- SPECIES_SHARPEDO, // 0x14b
- SPECIES_TRAPINCH, // 0x14c
- SPECIES_VIBRAVA, // 0x14d
- SPECIES_FLYGON, // 0x14e
- SPECIES_MAKUHITA, // 0x14f
- SPECIES_HARIYAMA, // 0x150
- SPECIES_ELECTRIKE, // 0x151
- SPECIES_MANECTRIC, // 0x152
- SPECIES_NUMEL, // 0x153
- SPECIES_CAMERUPT, // 0x154
- SPECIES_SPHEAL, // 0x155
- SPECIES_SEALEO, // 0x156
- SPECIES_WALREIN, // 0x157
- SPECIES_CACNEA, // 0x158
- SPECIES_CACTURNE, // 0x159
- SPECIES_SNORUNT, // 0x15a
- SPECIES_GLALIE, // 0x15b
- SPECIES_LUNATONE, // 0x15c
- SPECIES_SOLROCK, // 0x15d
- SPECIES_AZURILL, // 0x15e
- SPECIES_SPOINK, // 0x15f
- SPECIES_GRUMPIG, // 0x160
- SPECIES_PLUSLE, // 0x161
- SPECIES_MINUN, // 0x162
- SPECIES_MAWILE, // 0x163
- SPECIES_MEDITITE, // 0x164
- SPECIES_MEDICHAM, // 0x165
- SPECIES_SWABLU, // 0x166
- SPECIES_ALTARIA, // 0x167
- SPECIES_WYNAUT, // 0x168
- SPECIES_DUSKULL, // 0x169
- SPECIES_DUSCLOPS, // 0x16a
- SPECIES_ROSELIA, // 0x16b
- SPECIES_SLAKOTH, // 0x16c
- SPECIES_VIGOROTH, // 0x16d
- SPECIES_SLAKING, // 0x16e
- SPECIES_GULPIN, // 0x16f
- SPECIES_SWALOT, // 0x170
- SPECIES_TROPIUS, // 0x171
- SPECIES_WHISMUR, // 0x172
- SPECIES_LOUDRED, // 0x173
- SPECIES_EXPLOUD, // 0x174
- SPECIES_CLAMPERL, // 0x175
- SPECIES_HUNTAIL, // 0x176
- SPECIES_GOREBYSS, // 0x177
- SPECIES_ABSOL, // 0x178
- SPECIES_SHUPPET, // 0x179
- SPECIES_BANETTE, // 0x17a
- SPECIES_SEVIPER, // 0x17b
- SPECIES_ZANGOOSE, // 0x17c
- SPECIES_RELICANTH, // 0x17d
- SPECIES_ARON, // 0x17e
- SPECIES_LAIRON, // 0x17f
- SPECIES_AGGRON, // 0x180
- SPECIES_CASTFORM, // 0x181
- SPECIES_VOLBEAT, // 0x182
- SPECIES_ILLUMISE, // 0x183
- SPECIES_LILEEP, // 0x184
- SPECIES_CRADILY, // 0x185
- SPECIES_ANORITH, // 0x186
- SPECIES_ARMALDO, // 0x187
- SPECIES_RALTS, // 0x188
- SPECIES_KIRLIA, // 0x189
- SPECIES_GARDEVOIR, // 0x18a
- SPECIES_BAGON, // 0x18b
- SPECIES_SHELGON, // 0x18c
- SPECIES_SALAMENCE, // 0x18d
- SPECIES_BELDUM, // 0x18e
- SPECIES_METANG, // 0x18f
- SPECIES_METAGROSS, // 0x190
- SPECIES_REGIROCK, // 0x191
- SPECIES_REGICE, // 0x192
- SPECIES_REGISTEEL, // 0x193
- SPECIES_KYOGRE, // 0x194
- SPECIES_GROUDON, // 0x195
- SPECIES_RAYQUAZA, // 0x196
- SPECIES_LATIAS, // 0x197
- SPECIES_LATIOS, // 0x198
- SPECIES_JIRACHI, // 0x199
- SPECIES_DEOXYS, // 0x19a
- SPECIES_CHIMECHO, // 0x19b
- SPECIES_EGG, // 0x19c
-
- SPECIES_UNOWN_B,
- SPECIES_UNOWN_C,
- SPECIES_UNOWN_D,
- SPECIES_UNOWN_E,
- SPECIES_UNOWN_F,
- SPECIES_UNOWN_G,
- SPECIES_UNOWN_H,
- SPECIES_UNOWN_I,
- SPECIES_UNOWN_J,
- SPECIES_UNOWN_K,
- SPECIES_UNOWN_L,
- SPECIES_UNOWN_M,
- SPECIES_UNOWN_N,
- SPECIES_UNOWN_O,
- SPECIES_UNOWN_P,
- SPECIES_UNOWN_Q,
- SPECIES_UNOWN_R,
- SPECIES_UNOWN_S,
- SPECIES_UNOWN_T,
- SPECIES_UNOWN_U,
- SPECIES_UNOWN_V,
- SPECIES_UNOWN_W,
- SPECIES_UNOWN_X,
- SPECIES_UNOWN_Y,
- SPECIES_UNOWN_Z,
- SPECIES_UNOWN_EMARK,
- SPECIES_UNOWN_QMARK,
-};
-
-#define NUM_SPECIES SPECIES_EGG
-extern const u8 gSpeciesNames[][11];
-
-#endif // GUARD_SPECIES_H
diff --git a/include/sprite.h b/include/sprite.h
index 531314079..170d77c3f 100644
--- a/include/sprite.h
+++ b/include/sprite.h
@@ -195,14 +195,7 @@ struct Sprite
/*0x2D*/ u8 animLoopCounter;
// general purpose data fields
- /*0x2E*/ s16 data0;
- /*0x30*/ s16 data1;
- /*0x32*/ s16 data2;
- /*0x34*/ s16 data3;
- /*0x36*/ s16 data4;
- /*0x38*/ s16 data5;
- /*0x3A*/ s16 data6;
- /*0x3C*/ s16 data7;
+ /*0x2E*/ s16 data[8];
/*0x3E*/ u16 inUse:1; //1
u16 coordOffsetEnabled:1; //2
diff --git a/include/strings.h b/include/strings.h
index 08e2b4bba..84d7084b4 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -82,5 +82,11 @@ extern const u8 gText_NoRegistry[];
extern const u8 gText_OkayToDeleteFromRegistry[];
extern const u8 gText_RegisteredDataDeleted[];
extern const u8 gUnknown_085EA79D[];
+extern const u8 gText_EmptyString2[];
+extern const u8 gText_Confirm3[];
+extern const u8 gText_Cancel4[];
+extern const u8 gText_IsThisTheCorrectTime[];
+extern const u8 gText_PkmnFainted3[];
+extern const u8 gText_Coins[];
#endif //GUARD_STRINGS_H
diff --git a/include/text.h b/include/text.h
index 594661717..289c7d2b5 100644
--- a/include/text.h
+++ b/include/text.h
@@ -65,6 +65,7 @@
#define CHAR_x 0xEC
#define CHAR_y 0xED
#define CHAR_z 0xEE
+#define CHAR_SPECIAL_F7 0xF7
#define CHAR_SPECIAL_F9 0xF9
#define CHAR_COLON 0xF0
#define CHAR_PROMPT_SCROLL 0xFA // waits for button press and scrolls dialog
@@ -85,6 +86,8 @@
#define NUM_TEXT_PRINTERS 32
+#define TEXT_SPEED_FF 0xFF
+
struct TextPrinterSubStruct
{
u8 font_type:4; // 0x14
diff --git a/include/trainer_classes.h b/include/trainer_classes.h
deleted file mode 100644
index e5e26b359..000000000
--- a/include/trainer_classes.h
+++ /dev/null
@@ -1,74 +0,0 @@
-#ifndef GUARD_TRAINER_CLASSES_H
-#define GUARD_TRAINER_CLASSES_H
-
-enum
-{
- CLASS_PKMN_TRAINER0, // 0
- CLASS_PKMN_TRAINER1, // 1
- CLASS_HIKER, // 2
- CLASS_TEAM_AQUA, // 3
- CLASS_PKMN_BREEDER, // 4
- CLASS_COOLTRAINER, // 5
- CLASS_BIRDKEEPER, // 6
- CLASS_COLLECTOR, // 7
- CLASS_SWIMMER_MALE, // 8
- CLASS_TEAM_MAGMA, // 9
- CLASS_EXPERT, // 0xA
- CLASS_AQUA_ADMIN, // 0xB
- CLASS_BLACK_BELT, // 0xC
- CLASS_AQUA_LEADER, // 0xD
- CLASS_HEX_MANIAC, // 0xE
- CLASS_AROMA_LADY, // 0xF
- CLASS_RUIN_MANIAC, // 0x10
- CLASS_INTERVIEWER, // 0x11
- CLASS_TUBER_FEMALE, // 0x12
- CLASS_TUBER_MALE, // 0x13
- CLASS_LADY, // 0x14
- CLASS_BEAUTY, // 0x15
- CLASS_RICH_BOY, // 0x16
- CLASS_POKEMANIAC, // 0x17
- CLASS_GUITARIST, // 0x18
- CLASS_KINDLER, // 0x19
- CLASS_CAMPER, // 0x1A
- CLASS_PICKNICKER, // 0x1B
- CLASS_BUG_MANIAC, // 0x1C
- CLASS_PSYCHIC, // 0x1D
- CLASS_GENTLEMAN, // 0x1E
- CLASS_ELITE_FOUR, // 0x1F
- CLASS_LEADER, // 0x20
- CLASS_SCHOOL_KID, // 0x21
- CLASS_SCHOOL_SR_JR, // 0x22
- CLASS_WINSTRATE, // 0x23
- CLASS_POKE_FAN, // 0x24
- CLASS_YOUNGSTER, // 0x25
- CLASS_CHAMPION, // 0x26
- CLASS_FISHERMAN, // 0x27
- CLASS_TRIATHLETE, // 0x28
- CLASS_DRAGON_TAMER, // 0x29
- CLASS_NINJA_BOY, // 0x2A
- CLASS_BATTLE_GIRL, // 0x2B
- CLASS_PARASOL_LADY, // 0x2C
- CLASS_SWIMMER_FEMALE, // 0x2D
- CLASS_TWINS, // 0x2E
- CLASS_SAILOR, // 0x2F
- CLASS_COOLTRAINER_2, // 0x30
- CLASS_MAGMA_ADMIN, // 0x31
- CLASS_PKMN_TRAINER_RIVAL, // 0x32
- CLASS_BUG_CATCHER, // 0x33
- CLASS_PKMN_RANGER, // 0x34
- CLASS_MAGMA_LEADER, // 0x35
- CLASS_LASS, // 0x36
- CLASS_YOUNG_COUPLE, // 0x37
- CLASS_OLD_COUPLE, // 0x38
- CLASS_SIS_AND_BRO, // 0x39
- CLASS_SALON_MAIDEN, // 0x3A
- CLASS_DOME_ACE, // 0x3B
- CLASS_PALACE_MAVEN, // 0x3C
- CLASS_ARENA_TYCOON, // 0x3D
- CLASS_FACTORY_HEAD, // 0x3E
- CLASS_PIKE_QUEEN, // 0x3F
- CLASS_PYRAMID_KING, // 0x40
- CLASS_PKMN_TRAINER2, // 0x41
-};
-
-#endif // GUARD_TRAINER_CLASSES_H
diff --git a/include/trainer_front_sprites.h b/include/trainer_front_sprites.h
deleted file mode 100644
index 3259bec88..000000000
--- a/include/trainer_front_sprites.h
+++ /dev/null
@@ -1,101 +0,0 @@
-#ifndef GUARD_TRAINER_FRONT_SPRITES_H
-#define GUARD_TRAINER_FRONT_SPRITES_H
-
-enum
-{
- TRAINER_FRONT_PIC_HIKER,
- TRAINER_FRONT_PIC_AQUA_GRUNT_M,
- TRAINER_FRONT_PIC_PKMN_BREEDER_F,
- TRAINER_FRONT_PIC_COOLTRAINER_M,
- TRAINER_FRONT_PIC_BIRD_KEEPER,
- TRAINER_FRONT_PIC_COLLECTOR,
- TRAINER_FRONT_PIC_AQUA_GRUNT_F,
- TRAINER_FRONT_PIC_SWIMMER_M,
- TRAINER_FRONT_PIC_MAGMA_GRUNT_M,
- TRAINER_FRONT_PIC_EXPERT_M,
- TRAINER_FRONT_PIC_AQUA_ADMIN_M,
- TRAINER_FRONT_PIC_BLACK_BELT,
- TRAINER_FRONT_PIC_AQUA_ADMIN_F,
- TRAINER_FRONT_PIC_AQUA_LEADER,
- TRAINER_FRONT_PIC_HEX_MANIAC,
- TRAINER_FRONT_PIC_AROMA_LADY,
- TRAINER_FRONT_PIC_RUIN_MANIAC,
- TRAINER_FRONT_PIC_INTERVIEWER,
- TRAINER_FRONT_PIC_TUBER_F,
- TRAINER_FRONT_PIC_TUBER_M,
- TRAINER_FRONT_PIC_COOLTRAINER_F,
- TRAINER_FRONT_PIC_LADY,
- TRAINER_FRONT_PIC_BEAUTY,
- TRAINER_FRONT_PIC_RICH_BOY,
- TRAINER_FRONT_PIC_EXPERT_F,
- TRAINER_FRONT_PIC_POKE_MANIAC,
- TRAINER_FRONT_PIC_MAGMA_GRUNT_F,
- TRAINER_FRONT_PIC_GUITARIST,
- TRAINER_FRONT_PIC_KINDLER,
- TRAINER_FRONT_PIC_CAMPER,
- TRAINER_FRONT_PIC_PICNICKER,
- TRAINER_FRONT_PIC_BUG_MANIAC,
- TRAINER_FRONT_PIC_PKMN_BREEDER_M,
- TRAINER_FRONT_PIC_PSYCHIC_M,
- TRAINER_FRONT_PIC_PSYCHIC_F,
- TRAINER_FRONT_PIC_GENTLEMAN,
- TRAINER_FRONT_PIC_SIDNEY,
- TRAINER_FRONT_PIC_PHOEBE,
- TRAINER_FRONT_PIC_GLACIA,
- TRAINER_FRONT_PIC_DRAKE,
- TRAINER_FRONT_PIC_ROXANNE,
- TRAINER_FRONT_PIC_BRAWLY,
- TRAINER_FRONT_PIC_WATTSON,
- TRAINER_FRONT_PIC_FLANNERY,
- TRAINER_FRONT_PIC_NORMAN,
- TRAINER_FRONT_PIC_WINONA,
- TRAINER_FRONT_PIC_TATE_LIZA,
- TRAINER_FRONT_PIC_JUAN,
- TRAINER_FRONT_PIC_SCHOOL_KID_M,
- TRAINER_FRONT_PIC_SCHOOL_KID_F,
- TRAINER_FRONT_PIC_SR_JR,
- TRAINER_FRONT_PIC_POKÉFAN_M,
- TRAINER_FRONT_PIC_POKÉFAN_F,
- TRAINER_FRONT_PIC_YOUNGSTER,
- TRAINER_FRONT_PIC_WALLACE,
- TRAINER_FRONT_PIC_FISHERMAN,
- TRAINER_FRONT_PIC_TRIATHLETE_BIKER_M,
- TRAINER_FRONT_PIC_TRIATHLETE_BIKER_F,
- TRAINER_FRONT_PIC_TRIATHLETE_JOGGER_M,
- TRAINER_FRONT_PIC_TRIATHLETE_JOGGER_F,
- TRAINER_FRONT_PIC_TRIATHLETE_SWIMMER_M,
- TRAINER_FRONT_PIC_TRIATHLETE_SWIMMER_F,
- TRAINER_FRONT_PIC_DRAGON_TAMER,
- TRAINER_FRONT_PIC_NINJA_BOY,
- TRAINER_FRONT_PIC_BATTLE_GIRL,
- TRAINER_FRONT_PIC_PARASOL_LADY,
- TRAINER_FRONT_PIC_SWIMMER_F,
- TRAINER_FRONT_PIC_TWINS,
- TRAINER_FRONT_PIC_SAILOR,
- TRAINER_FRONT_PIC_MAGMA_ADMIN_M,
- TRAINER_FRONT_PIC_WALLY,
- TRAINER_FRONT_PIC_BRENDAN_E,
- TRAINER_FRONT_PIC_MAY_E,
- TRAINER_FRONT_PIC_BUG_CATCHER,
- TRAINER_FRONT_PIC_PKMN_RANGER_M,
- TRAINER_FRONT_PIC_PKMN_RANGER_F,
- TRAINER_FRONT_PIC_MAGMA_LEADER,
- TRAINER_FRONT_PIC_LASS,
- TRAINER_FRONT_PIC_YOUNG_COUPLE,
- TRAINER_FRONT_PIC_OLD_COUPLE,
- TRAINER_FRONT_PIC_SIS_AND_BRO,
- TRAINER_FRONT_PIC_STEVEN,
- TRAINER_FRONT_PIC_ANABEL,
- TRAINER_FRONT_PIC_TUCKER,
- TRAINER_FRONT_PIC_SPENSER,
- TRAINER_FRONT_PIC_GRETA,
- TRAINER_FRONT_PIC_NOLAND,
- TRAINER_FRONT_PIC_LUCY,
- TRAINER_FRONT_PIC_BRANDON,
- TRAINER_FRONT_PIC_RED,
- TRAINER_FRONT_PIC_LEAF,
- TRAINER_FRONT_PIC_BRENDAN_RS,
- TRAINER_FRONT_PIC_MAY_RS
-};
-
-#endif // GUARD_TRAINER_FRONT_SPRITES_H
diff --git a/include/trainer_ids.h b/include/trainer_ids.h
deleted file mode 100644
index 65c80187f..000000000
--- a/include/trainer_ids.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef GUARD_TRAINER_IDS_H
-#define GUARD_TRAINER_IDS_H
-
-#define NO_OF_TRAINERS 854
-#define TRAINER_ID_STEVEN 804
-
-#endif // GUARD_TRAINER_IDS_H
diff --git a/include/trainer_see.h b/include/trainer_see.h
index ab035d9f8..5da50cfa1 100644
--- a/include/trainer_see.h
+++ b/include/trainer_see.h
@@ -1,6 +1,21 @@
#ifndef GUARD_TRAINER_SEE_H
#define GUARD_TRAINER_SEE_H
+struct ApproachingTrainer
+{
+ u8 mapObjectId;
+ u8 radius;
+ u8 field_2;
+ u8 field_3;
+ const u8 *trainerScriptPtr;
+ u8 field_8;
+ u8 field_9;
+ u8 field_A;
+ u8 field_B;
+};
+
+extern struct ApproachingTrainer gApproachingTrainers[];
+
void sub_80B4578(struct MapObject *);
u8 sub_80B47BC(void);
void sub_8155D78(struct MapObject *);
diff --git a/include/tv.h b/include/tv.h
index 3f48af569..eca11385e 100644
--- a/include/tv.h
+++ b/include/tv.h
@@ -13,6 +13,8 @@ void sub_80EE184(void);
void sub_80EEA70(void);
void sub_80F14F8(TVShow *shows);
size_t sub_80EF370(int value);
+bool8 Put3CheersForPokeblocksOnTheAir(const u8 *partnersName, u8 flavor, u8 unused, u8 sheen, u8 language);
void SetPokemonAnglerSpecies(u16 species);
+void UpdateTVShowsPerDay(u16 days);
#endif //GUARD_TV_H
diff --git a/include/unk_text_util.h b/include/unk_text_util.h
new file mode 100644
index 000000000..72243a90e
--- /dev/null
+++ b/include/unk_text_util.h
@@ -0,0 +1,9 @@
+#ifndef GUARD_UNK_TEXT_UTIL_H
+#define GUARD_UNK_TEXT_UTIL_H
+
+void UnkTextUtil_Reset(void);
+void UnkTextUtil_SetPtrI(u8 idx, const u8 *ptr);
+u8 *UnkTextUtil_StringExpandPlaceholders(u8 *dest, const u8 *src);
+const u8 *UnkTextUtil_GetPtrI(u8 idx);
+
+#endif //GUARD_UNK_TEXT_UTIL_H
diff --git a/include/vars.h b/include/vars.h
deleted file mode 100644
index 763b7379d..000000000
--- a/include/vars.h
+++ /dev/null
@@ -1,75 +0,0 @@
-#ifndef GUARD_VARS_H
-#define GUARD_VARS_H
-
-#define VAR_0x3F20 0x3F20
-
-#define VAR_0x4000 0x4000
-#define VAR_0x4001 0x4001
-#define VAR_0x4002 0x4002
-#define VAR_0x4003 0x4003
-#define VAR_0x4004 0x4004
-#define VAR_0x4005 0x4005
-#define VAR_0x4006 0x4006
-#define VAR_0x4007 0x4007
-#define VAR_0x4008 0x4008
-#define VAR_0x4009 0x4009
-#define VAR_0x400A 0x400A
-#define VAR_0x4010 0x4010
-#define VAR_0x4011 0x4011
-#define VAR_0x401F 0x401F
-#define VAR_RECYCLE_GOODS 0x4020
-#define VAR_REPEL_STEP_COUNT 0x4021
-#define VAR_ICE_STEP_COUNT 0x4022
-#define VAR_FIRST_POKE 0x4023
-#define VAR_MIRAGE_RND_H 0x4024
-#define VAR_MIRAGE_RND_L 0x4025
-#define VAR_SECRET_BASE_MAP 0x4026
-
-#define VAR_HAPPINESS_STEP_COUNTER 0x402A
-#define VAR_POISON_STEP_COUNTER 0x402B
-#define VAR_RESET_RTC_ENABLE 0x402C
-
-#define VAR_0x4037 0x4037
-#define VAR_ALTERING_CAVE_WILD_SET 0x403E
-#define VAR_DAYS 0x4040
-
-#define VAR_DEPT_STORE_FLOOR 0x4043
-#define VAR_STORAGE_UNKNOWN 0x4036
-#define VAR_POKELOT_PRIZE 0x4045
-#define VAR_NATIONAL_DEX 0x4046
-#define VAR_SEEDOT_SIZE_RECORD 0x4047
-#define VAR_ASH_GATHER_COUNT 0x4048
-#define VAR_BIRCH_STATE 0x4049
-#define VAR_CRUISE_STEP_COUNT 0x404A
-#define VAR_POKELOT_RND1 0x404B
-#define VAR_POKELOT_RND2 0x404C
-
-#define VAR_LOTAD_SIZE_RECORD 0x404F
-
-#define VAR_0x4054 0x4054
-
-#define VAR_0x4089 0x4089
-#define VAR_0x4095 0x4095
-#define VAR_0x4097 0x4097
-#define VAR_0x409a 0x409a
-#define VAR_PORTHOLE 0x40B4
-
-#define VAR_0x40BC 0x40BC
-#define VAR_0x40C2 0x40C2
-
-#define VAR_FRONTIER_FACILITY 0x40CF
-
-#define VAR_DAILY_SLOTS 0x40E6
-#define VAR_DAILY_WILDS 0x40E7
-#define VAR_DAILY_BLENDER 0x40E8
-#define VAR_DAILY_PLANTED_BERRIES 0x40E9
-#define VAR_DAILY_PICKED_BERRIES 0x40EA
-#define VAR_DAILY_ROULETTE 0x40EB
-#define VAR_0x40EC 0x40EC
-#define VAR_0x40ED 0x40ED
-#define VAR_0x40EE 0x40EE
-#define VAR_0x40EF 0x40EF
-#define VAR_0x40F0 0x40F0
-#define VAR_DAILY_BP 0x40F1
-
-#endif // GUARD_VARS_H
diff --git a/include/wallclock.h b/include/wallclock.h
new file mode 100644
index 000000000..48697c19f
--- /dev/null
+++ b/include/wallclock.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_WALLCLOCK_H
+#define GUARD_WALLCLOCK_H
+
+void Cb2_StartWallClock(void);
+
+#endif //GUARD_WALLCLOCK_H
diff --git a/ld_script.txt b/ld_script.txt
index e9c810adc..4015c51fa 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -74,22 +74,20 @@ SECTIONS {
src/pokemon_3.o(.text);
asm/pokemon_3.o(.text);
src/trig.o(.text);
- src/rng.o(.text);
+ src/random.o(.text);
src/util.o(.text);
src/blend_palette.o(.text);
src/daycare.o(.text);
src/egg_hatch.o(.text);
src/battle_interface.o(.text);
asm/smokescreen.o(.text);
- asm/pokeball.o(.text);
+ src/pokeball.o(.text);
src/load_save.o(.text);
- asm/load_save.o(.text);
asm/trade.o(.text);
src/berry_blender.o(.text);
- asm/berry_blender.o(.text);
src/play_time.o(.text);
src/new_game.o(.text);
- asm/rom4.o(.text);
+ asm/overworld.o(.text);
asm/fieldmap.o(.text);
src/metatile_behavior.o(.text);
asm/field_camera.o(.text);
@@ -107,7 +105,7 @@ SECTIONS {
src/event_data.o(.text);
asm/coord_event_weather.o(.text);
asm/field_tasks.o(.text);
- asm/clock.o(.text);
+ src/clock.o(.text);
asm/reset_rtc_screen.o(.text);
src/start_menu.o(.text);
asm/start_menu.o(.text);
@@ -121,8 +119,9 @@ SECTIONS {
asm/battle_anim_80A9C70.o(.text);
asm/title_screen.o(.text);
asm/field_screen.o(.text);
- asm/battle_setup.o(.text);
+ src/battle_setup.o(.text);
asm/cable_club.o(.text);
+ src/trainer_see.o(.text);
asm/trainer_see.o(.text);
src/wild_encounter.o(.text);
asm/field_effect.o(.text);
@@ -135,7 +134,7 @@ SECTIONS {
asm/pokemon_icon.o(.text);
asm/script_movement.o(.text);
asm/fldeff_cut.o(.text);
- asm/mail_data.o(.text);
+ src/mail_data.o(.text);
asm/map_name_popup.o(.text);
asm/item_menu_icons.o(.text);
asm/battle_anim_80D51AC.o(.text);
@@ -153,7 +152,7 @@ SECTIONS {
src/tv.o(.text);
asm/contest_link_80F57C4.o(.text);
asm/script_pokemon_util_80F87D8.o(.text);
- asm/field_poison.o(.text);
+ src/field_poison.o(.text);
src/pokemon_size_record.o(.text);
asm/fldeff_80F9BCC.o(.text);
src/field_special_scene.o(.text);
@@ -178,7 +177,7 @@ SECTIONS {
src/battle_ai_script_commands.o(.text);
asm/trader.o(.text);
src/starter_choose.o(.text);
- asm/wallclock.o(.text);
+ src/wallclock.o(.text);
asm/rom6.o(.text);
asm/battle_records.o(.text);
asm/pokedex_area_screen.o(.text);
@@ -186,7 +185,6 @@ SECTIONS {
asm/roulette.o(.text);
asm/pokedex_cry_screen.o(.text);
src/coins.o(.text);
- asm/coins.o(.text);
asm/landmark.o(.text);
asm/fldeff_strength.o(.text);
asm/battle_transition.o(.text);
@@ -244,14 +242,14 @@ SECTIONS {
asm/item_menu.o(.text);
asm/list_menu.o(.text);
asm/menu_indicators.o(.text);
- asm/unk_text_util.o(.text);
+ src/unk_text_util.o(.text);
src/save_location.o(.text);
asm/item_icon.o(.text);
asm/party_menu.o(.text);
asm/battle_tent.o(.text);
src/unk_text_util_2.o(.text);
src/multiboot.o(.text);
- asm/unk_81BAD84.o(.text);
+ src/unk_81BAD84.o(.text);
src/battle_controller_player_partner.o(.text);
asm/fldeff_groundshake.o(.text);
asm/fossil_specials.o(.text);
@@ -348,11 +346,11 @@ SECTIONS {
src/egg_hatch.o(.rodata);
src/battle_gfx_sfx_util.o(.rodata);
src/battle_interface.o(.rodata);
- data/pokeball.o(.rodata);
+ src/pokeball.o(.rodata);
data/trade.o(.rodata);
src/berry_blender.o(.rodata);
src/new_game.o(.rodata);
- data/rom4.o(.rodata);
+ data/overworld.o(.rodata);
data/tilesets.o(.rodata);
data/maps.o(.rodata);
data/fieldmap.o(.rodata);
@@ -379,7 +377,7 @@ SECTIONS {
data/battle_anim_80A9C70.o(.rodata);
data/title_screen.o(.rodata);
data/field_screen.o(.rodata);
- data/battle_setup.o(.rodata);
+ src/battle_setup.o(.rodata);
data/cable_club.o(.rodata);
data/trainer_see.o(.rodata);
data/wild_encounter.o(.rodata);
@@ -425,6 +423,7 @@ SECTIONS {
src/battle_ai_script_commands.o(.rodata);
data/data4.o(.rodata);
data/starter_choose.o(.rodata);
+ src/wallclock.o(.rodata);
data/data4c.o(.rodata);
src/battle_controller_link_partner.o(.rodata);
src/battle_message.o(.rodata);
@@ -472,7 +471,7 @@ SECTIONS {
data/party_menu.o(.rodata);
data/battle_tent.o(.rodata);
src/unk_text_util_2.o(.rodata);
- data/unk_81BAD84.o(.rodata);
+ src/unk_81BAD84.o(.rodata);
src/battle_controller_player_partner.o(.rodata);
data/fossil_special_fldeff_groundshake.o(.rodata);
src/berry_fix_program.o(.rodata);
diff --git a/src/battle_2.c b/src/battle_2.c
index 2be6f9d77..7bde3d174 100644
--- a/src/battle_2.c
+++ b/src/battle_2.c
@@ -6,16 +6,18 @@
#include "gpu_regs.h"
#include "unknown_task.h"
#include "battle_setup.h"
+#include "battle_scripts.h"
#include "pokemon.h"
#include "palette.h"
#include "task.h"
#include "event_data.h"
-#include "species.h"
+#include "constants/species.h"
#include "berry.h"
#include "text.h"
#include "item.h"
-#include "items.h"
-#include "hold_effects.h"
+#include "constants/items.h"
+#include "constants/hold_effects.h"
+#include "constants/trainers.h"
#include "link.h"
#include "bg.h"
#include "dma3.h"
@@ -24,20 +26,19 @@
#include "event_data.h"
#include "m4a.h"
#include "window.h"
-#include "rng.h"
-#include "songs.h"
+#include "random.h"
+#include "constants/songs.h"
#include "sound.h"
#include "battle_message.h"
#include "sprite.h"
#include "util.h"
#include "trig.h"
#include "battle_ai_script_commands.h"
-#include "battle_move_effects.h"
+#include "constants/battle_move_effects.h"
#include "battle_controllers.h"
#include "pokedex.h"
-#include "abilities.h"
-#include "moves.h"
-#include "trainer_classes.h"
+#include "constants/abilities.h"
+#include "constants/moves.h"
#include "evolution_scene.h"
#include "roamer.h"
#include "tv.h"
@@ -119,14 +120,14 @@ extern u32 gBattleExecBuffer;
extern u8 gMultiHitCounter;
extern u8 gBattleMoveFlags;
extern s32 gBattleMoveDamage;
-extern const u8* gUnknown_02024230[BATTLE_BANKS_COUNT];
-extern u16 gUnknownMovesUsedByBanks[BATTLE_BANKS_COUNT];
-extern u16 gLastUsedMovesByBanks[BATTLE_BANKS_COUNT];
-extern u16 gUnknown_02024250[BATTLE_BANKS_COUNT];
-extern u16 gUnknown_02024258[BATTLE_BANKS_COUNT];
-extern u16 gUnknown_02024260[BATTLE_BANKS_COUNT];
+extern const u8* gPalaceSelectionBattleScripts[BATTLE_BANKS_COUNT];
+extern u16 gLastPrintedMoves[BATTLE_BANKS_COUNT];
+extern u16 gLastMoves[BATTLE_BANKS_COUNT];
+extern u16 gLastLandedMoves[BATTLE_BANKS_COUNT];
+extern u16 gLastHitByType[BATTLE_BANKS_COUNT];
+extern u16 gLastResultingMoves[BATTLE_BANKS_COUNT];
extern u16 gLockedMoves[BATTLE_BANKS_COUNT];
-extern u8 gUnknown_02024270[BATTLE_BANKS_COUNT];
+extern u8 gLastHitBy[BATTLE_BANKS_COUNT];
extern u8 gUnknown_02024284[BATTLE_BANKS_COUNT];
extern u32 gStatuses3[BATTLE_BANKS_COUNT];
extern u16 gSideAffecting[2];
@@ -140,7 +141,7 @@ extern u16 gChosenMovesByBanks[BATTLE_BANKS_COUNT];
extern u8 gCurrentActionFuncId;
extern u8 gLastUsedAbility;
extern u8 gUnknown_0203CF00[];
-extern const u8* gBattlescriptPtrsForSelection[BATTLE_BANKS_COUNT];
+extern const u8* gSelectionBattleScripts[BATTLE_BANKS_COUNT];
extern const u8* gBattlescriptCurrInstr;
extern u8 gActionsByTurnOrder[BATTLE_BANKS_COUNT];
extern u8 gCurrentTurnActionNumber;
@@ -148,7 +149,7 @@ extern u16 gDynamicBasePower;
extern u8 gCritMultiplier;
extern u8 gCurrMovePos;
extern u8 gUnknown_020241E9;
-extern u16 gLastUsedMove;
+extern u16 gChosenMove;
extern const struct BattleMove gBattleMoves[];
extern const u16 gUnknown_08C004E0[]; // battle textbox palette
@@ -159,7 +160,7 @@ extern const u8 gStatStageRatios[][2];
extern const u8 * const gBattleScriptsForMoveEffects[];
extern const u8 * const gBattlescriptsForBallThrow[];
extern const u8 * const gBattlescriptsForRunningByItem[];
-extern const u8 * const gUnknown_082DBD3C[];
+extern const u8 * const gBattlescriptsForUsingItem[];
extern const u8 * const gBattlescriptsForSafariActions[];
// strings
@@ -178,38 +179,13 @@ extern const u8 gText_Ice[];
extern const u8 gText_Confusion[];
extern const u8 gText_Love[];
-// battlescripts
-extern const u8 gUnknown_082DB8BE[];
-extern const u8 gUnknown_082DB881[];
-extern const u8 BattleScript_ActionSelectionItemsCantBeUsed[];
-extern const u8 gUnknown_082DAB11[];
-extern const u8 gUnknown_082DB9BA[];
-extern const u8 gUnknown_082DAAFE[];
-extern const u8 gUnknown_082DAB0B[];
-extern const u8 BattleScript_FocusPunchSetUp[];
-extern const u8 BattleScript_LinkBattleWonOrLost[];
-extern const u8 BattleScript_FrontierTrainerBattleWon[];
-extern const u8 BattleScript_LocalTrainerBattleWon[];
-extern const u8 BattleScript_PayDayMoneyAndPickUpItems[];
-extern const u8 BattleScript_LocalBattleLost[];
-extern const u8 gUnknown_082DB9C8[];
-extern const u8 gUnknown_082DAA0B[];
-extern const u8 gUnknown_082DB9C1[];
-extern const u8 BattleScript_RanAwayUsingMonAbility[];
-extern const u8 BattleScript_SmokeBallEscape[];
-extern const u8 BattleScript_GotAwaySafely[];
-extern const u8 BattleScript_WildMonFled[];
-extern const u8 BattleScript_MoveUsedLoafingAround[];
-extern const u8 BattleScript_ActionSwitch[];
-extern const u8 BattleScript_PrintFailedToRunString[];
-
// functions
extern void dp12_8087EA4(void);
extern void sub_80356D0(void);
extern void GetFrontierTrainerName(u8* dst, u16 trainerId); // battle tower
extern void sub_8166188(void); // battle tower, sets link battle mons level but why?
extern void sub_8165B88(u8* dst, u16 trainerId); // battle tower, gets language
-extern void sub_81DB4DC(u8* dst, u8 arg2); //
+extern void PadNameString(u8* dst, u8 arg2); //
extern void sub_81B9150(void);
extern void sub_800AC34(void);
extern void sub_80B3AF8(u8 taskId); // cable club
@@ -439,7 +415,7 @@ static void CB2_InitBattleInternal(void)
gBattleTerrain = BattleSetup_GetTerrainId();
if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
- gBattleTerrain = BATTLE_TERRAIN_INSIDE;
+ gBattleTerrain = BATTLE_TERRAIN_BUILDING;
sub_80356D0();
LoadBattleTextboxAndBackground();
@@ -485,7 +461,7 @@ static void sub_8036A5C(void)
u32 status = 0;
s32 i;
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
hp = GetMonData(&gPlayerParty[i], MON_DATA_HP);
@@ -1164,7 +1140,7 @@ static void sub_80379F8(u8 arrayIdPlus)
gUnknown_02022FF8[i].gender = GetMonGender(&gPlayerParty[arrayIdPlus + i]);
StripExtCtrlCodes(gUnknown_02022FF8[i].nickname);
if (GetMonData(&gPlayerParty[arrayIdPlus + i], MON_DATA_LANGUAGE) != LANGUAGE_JAPANESE)
- sub_81DB4DC(gUnknown_02022FF8[i].nickname, 0);
+ PadNameString(gUnknown_02022FF8[i].nickname, CHAR_SPACE);
}
memcpy(gUnknown_02023058, gUnknown_02022FF8, sizeof(gUnknown_02022FF8));
}
@@ -1644,7 +1620,7 @@ void CB2_QuitRecordedBattle(void)
void sub_8038528(struct Sprite* sprite)
{
- sprite->data0 = 0;
+ sprite->data[0] = 0;
sprite->callback = sub_8038538;
}
@@ -1652,42 +1628,42 @@ static void sub_8038538(struct Sprite *sprite)
{
u16 *arr = (u16*)(gDecompressionBuffer);
- switch (sprite->data0)
+ switch (sprite->data[0])
{
case 0:
- sprite->data0++;
- sprite->data1 = 0;
- sprite->data2 = 0x281;
- sprite->data3 = 0;
- sprite->data4 = 1;
+ sprite->data[0]++;
+ sprite->data[1] = 0;
+ sprite->data[2] = 0x281;
+ sprite->data[3] = 0;
+ sprite->data[4] = 1;
// fall through
case 1:
- sprite->data4--;
- if (sprite->data4 == 0)
+ sprite->data[4]--;
+ if (sprite->data[4] == 0)
{
s32 i;
s32 r2;
s32 r0;
- sprite->data4 = 2;
- r2 = sprite->data1 + sprite->data3 * 32;
- r0 = sprite->data2 - sprite->data3 * 32;
+ sprite->data[4] = 2;
+ r2 = sprite->data[1] + sprite->data[3] * 32;
+ r0 = sprite->data[2] - sprite->data[3] * 32;
for (i = 0; i < 29; i += 2)
{
arr[r2 + i] = 0x3D;
arr[r0 + i] = 0x3D;
}
- sprite->data3++;
- if (sprite->data3 == 21)
+ sprite->data[3]++;
+ if (sprite->data[3] == 21)
{
- sprite->data0++;
- sprite->data1 = 32;
+ sprite->data[0]++;
+ sprite->data[1] = 32;
}
}
break;
case 2:
- sprite->data1--;
- if (sprite->data1 == 20)
+ sprite->data[1]--;
+ if (sprite->data[1] == 20)
SetMainCallback2(CB2_InitBattle);
break;
}
@@ -1742,7 +1718,7 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir
{
const struct TrainerMonNoItemDefaultMoves *partyData = gTrainers[trainerNum].party.NoItemDefaultMoves;
- for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++)
+ for (j = 0; gSpeciesNames[partyData[i].species][j] != EOS; j++)
nameHash += gSpeciesNames[partyData[i].species][j];
personalityValue += nameHash << 8;
@@ -1750,11 +1726,11 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir
CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, OT_ID_RANDOM_NO_SHINY, 0);
break;
}
- case PARTY_FLAG_CUSTOM_MOVES:
+ case F_TRAINER_PARTY_CUSTOM_MOVESET:
{
const struct TrainerMonNoItemCustomMoves *partyData = gTrainers[trainerNum].party.NoItemCustomMoves;
- for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++)
+ for (j = 0; gSpeciesNames[partyData[i].species][j] != EOS; j++)
nameHash += gSpeciesNames[partyData[i].species][j];
personalityValue += nameHash << 8;
@@ -1768,11 +1744,11 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir
}
break;
}
- case PARTY_FLAG_HAS_ITEM:
+ case F_TRAINER_PARTY_HELD_ITEM:
{
const struct TrainerMonItemDefaultMoves *partyData = gTrainers[trainerNum].party.ItemDefaultMoves;
- for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++)
+ for (j = 0; gSpeciesNames[partyData[i].species][j] != EOS; j++)
nameHash += gSpeciesNames[partyData[i].species][j];
personalityValue += nameHash << 8;
@@ -1782,11 +1758,11 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum, bool8 fir
SetMonData(&party[i], MON_DATA_HELD_ITEM, &partyData[i].heldItem);
break;
}
- case PARTY_FLAG_CUSTOM_MOVES | PARTY_FLAG_HAS_ITEM:
+ case F_TRAINER_PARTY_CUSTOM_MOVESET | F_TRAINER_PARTY_HELD_ITEM:
{
const struct TrainerMonItemCustomMoves *partyData = gTrainers[trainerNum].party.ItemCustomMoves;
- for (j = 0; gSpeciesNames[partyData[i].species][j] != 0xFF; j++)
+ for (j = 0; gSpeciesNames[partyData[i].species][j] != EOS; j++)
nameHash += gSpeciesNames[partyData[i].species][j];
personalityValue += nameHash << 8;
@@ -1848,12 +1824,12 @@ void nullsub_17(void)
static void sub_8038B04(struct Sprite *sprite)
{
- if (sprite->data0 != 0)
- sprite->pos1.x = sprite->data1 + ((sprite->data2 & 0xFF00) >> 8);
+ if (sprite->data[0] != 0)
+ sprite->pos1.x = sprite->data[1] + ((sprite->data[2] & 0xFF00) >> 8);
else
- sprite->pos1.x = sprite->data1 - ((sprite->data2 & 0xFF00) >> 8);
+ sprite->pos1.x = sprite->data[1] - ((sprite->data[2] & 0xFF00) >> 8);
- sprite->data2 += 0x180;
+ sprite->data[2] += 0x180;
if (sprite->affineAnimEnded)
{
@@ -1902,7 +1878,7 @@ static void sub_8038B94(u8 taskId)
}
r7 = 0;
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
u16 species = GetMonData(&sp4[i], MON_DATA_SPECIES2);
u16 hp = GetMonData(&sp4[i], MON_DATA_HP);
@@ -1926,7 +1902,7 @@ static void sub_8038B94(u8 taskId)
gTasks[taskId].data[3] = r7;
r7 = 0;
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
u16 species = GetMonData(&sp8[i], MON_DATA_SPECIES2);
u16 hp = GetMonData(&sp8[i], MON_DATA_HP);
@@ -2406,8 +2382,8 @@ u32 sub_80397C4(u32 setId, u32 tableId)
return gUnknown_0831ABA0[setId][tableId].width * 8;
}
-#define tBank data0
-#define tSpeciesId data2
+#define tBank data[0]
+#define tSpeciesId data[2]
void oac_poke_opponent(struct Sprite *sprite)
{
@@ -2455,20 +2431,20 @@ void SpriteCallbackDummy_2(struct Sprite *sprite)
static void sub_80398BC(struct Sprite *sprite) // unused?
{
- sprite->data3 = 6;
- sprite->data4 = 1;
+ sprite->data[3] = 6;
+ sprite->data[4] = 1;
sprite->callback = sub_80398D0;
}
static void sub_80398D0(struct Sprite *sprite)
{
- sprite->data4--;
- if (sprite->data4 == 0)
+ sprite->data[4]--;
+ if (sprite->data[4] == 0)
{
- sprite->data4 = 8;
+ sprite->data[4] = 8;
sprite->invisible ^= 1;
- sprite->data3--;
- if (sprite->data3 == 0)
+ sprite->data[3]--;
+ if (sprite->data[3] == 0)
{
sprite->invisible = FALSE;
sprite->callback = SpriteCallbackDummy_2;
@@ -2519,8 +2495,8 @@ void sub_8039934(struct Sprite *sprite)
yOffset = gMonFrontPicCoords[species].y_offset;
}
- sprite->data3 = 8 - yOffset / 8;
- sprite->data4 = 1;
+ sprite->data[3] = 8 - yOffset / 8;
+ sprite->data[4] = 1;
sprite->callback = sub_8039A48;
}
@@ -2528,20 +2504,20 @@ static void sub_8039A48(struct Sprite *sprite)
{
s32 i;
- sprite->data4--;
- if (sprite->data4 == 0)
+ sprite->data[4]--;
+ if (sprite->data[4] == 0)
{
- sprite->data4 = 2;
+ sprite->data[4] = 2;
sprite->pos2.y += 8;
- sprite->data3--;
- if (sprite->data3 < 0)
+ sprite->data[3]--;
+ if (sprite->data[3] < 0)
{
FreeSpriteOamMatrix(sprite);
DestroySprite(sprite);
}
else
{
- u8 *dst = (u8 *)gMonSpritesGfxPtr->sprites[GetBankIdentity(sprite->tBank)] + (gBattleMonForms[sprite->tBank] << 11) + (sprite->data3 << 8);
+ u8 *dst = (u8 *)gMonSpritesGfxPtr->sprites[GetBankIdentity(sprite->tBank)] + (gBattleMonForms[sprite->tBank] << 11) + (sprite->data[3] << 8);
for (i = 0; i < 0x100; i++)
*(dst++) = 0;
@@ -2553,25 +2529,25 @@ static void sub_8039A48(struct Sprite *sprite)
void sub_8039AD8(struct Sprite *sprite)
{
- sprite->data3 = 8;
- sprite->data4 = sprite->invisible;
+ sprite->data[3] = 8;
+ sprite->data[4] = sprite->invisible;
sprite->callback = sub_8039AF4;
}
static void sub_8039AF4(struct Sprite *sprite)
{
- sprite->data3--;
- if (sprite->data3 == 0)
+ sprite->data[3]--;
+ if (sprite->data[3] == 0)
{
sprite->invisible ^= 1;
- sprite->data3 = 8;
+ sprite->data[3] = 8;
}
}
void sub_8039B2C(struct Sprite *sprite)
{
- sprite->invisible = sprite->data4;
- sprite->data4 = FALSE;
+ sprite->invisible = sprite->data[4];
+ sprite->data[4] = FALSE;
sprite->callback = SpriteCallbackDummy_2;
}
@@ -2601,7 +2577,7 @@ static void oac_poke_ally_(struct Sprite *sprite)
if (sprite->pos2.x == 0)
{
sprite->callback = SpriteCallbackDummy_3;
- sprite->data1 = 0;
+ sprite->data[1] = 0;
}
}
}
@@ -2619,8 +2595,8 @@ void sub_8039C00(struct Sprite *sprite)
{
if (!(gUnknown_020243FC & 1))
{
- sprite->pos2.x += sprite->data1;
- sprite->pos2.y += sprite->data2;
+ sprite->pos2.x += sprite->data[1];
+ sprite->pos2.y += sprite->data[2];
}
}
@@ -2646,19 +2622,19 @@ void dp11b_obj_instanciate(u8 bank, u8 b, s8 c, s8 d)
spriteId2 = gHealthBoxesIds[bank];
gBattleSpritesDataPtr->healthBoxesData[bank].field_2 = bounceHealthBoxSpriteId;
gBattleSpritesDataPtr->healthBoxesData[bank].flag_x2 = 1;
- gSprites[bounceHealthBoxSpriteId].data0 = 0x80;
+ gSprites[bounceHealthBoxSpriteId].data[0] = 0x80;
}
else
{
spriteId2 = gBankSpriteIds[bank];
gBattleSpritesDataPtr->healthBoxesData[bank].field_3 = bounceHealthBoxSpriteId;
gBattleSpritesDataPtr->healthBoxesData[bank].flag_x4 = 1;
- gSprites[bounceHealthBoxSpriteId].data0 = 0xC0;
+ gSprites[bounceHealthBoxSpriteId].data[0] = 0xC0;
}
- gSprites[bounceHealthBoxSpriteId].data1 = c;
- gSprites[bounceHealthBoxSpriteId].data2 = d;
- gSprites[bounceHealthBoxSpriteId].data3 = spriteId2;
- gSprites[bounceHealthBoxSpriteId].data4 = b;
+ gSprites[bounceHealthBoxSpriteId].data[1] = c;
+ gSprites[bounceHealthBoxSpriteId].data[2] = d;
+ gSprites[bounceHealthBoxSpriteId].data[3] = spriteId2;
+ gSprites[bounceHealthBoxSpriteId].data[4] = b;
gSprites[spriteId2].pos2.x = 0;
gSprites[spriteId2].pos2.y = 0;
}
@@ -2672,7 +2648,7 @@ void dp11b_obj_free(u8 bank, bool8 b)
if (!gBattleSpritesDataPtr->healthBoxesData[bank].flag_x2)
return;
- r4 = gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].field_2].data3;
+ r4 = gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].field_2].data[3];
DestroySprite(&gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].field_2]);
gBattleSpritesDataPtr->healthBoxesData[bank].flag_x2 = 0;
}
@@ -2681,7 +2657,7 @@ void dp11b_obj_free(u8 bank, bool8 b)
if (!gBattleSpritesDataPtr->healthBoxesData[bank].flag_x4)
return;
- r4 = gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].field_3].data3;
+ r4 = gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].field_3].data[3];
DestroySprite(&gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].field_3]);
gBattleSpritesDataPtr->healthBoxesData[bank].flag_x4 = 0;
}
@@ -2691,16 +2667,16 @@ void dp11b_obj_free(u8 bank, bool8 b)
static void SpriteCB_HealthBoxBounce(struct Sprite *sprite)
{
- u8 spriteId = sprite->data3;
+ u8 spriteId = sprite->data[3];
s32 var;
- if (sprite->data4 == 1)
- var = sprite->data0;
+ if (sprite->data[4] == 1)
+ var = sprite->data[0];
else
- var = sprite->data0;
+ var = sprite->data[0];
- gSprites[spriteId].pos2.y = Sin(var, sprite->data2) + sprite->data2;
- sprite->data0 = (sprite->data0 + sprite->data1) & 0xFF;
+ gSprites[spriteId].pos2.y = Sin(var, sprite->data[2]) + sprite->data[2];
+ sprite->data[0] = (sprite->data[0] + sprite->data[1]) & 0xFF;
}
void sub_8039E44(struct Sprite *sprite)
@@ -2765,17 +2741,17 @@ static void BattleStartClearSetData(void)
for (j = 0; j < sizeof(struct DisableStruct); j++)
dataPtr[j] = 0;
- gDisableStructs[i].isFirstTurn= 2;
+ gDisableStructs[i].isFirstTurn = 2;
gUnknown_02024284[i] = 0;
- gLastUsedMovesByBanks[i] = 0;
- gUnknown_02024250[i] = 0;
- gUnknown_02024258[i] = 0;
- gUnknown_02024260[i] = 0;
- gUnknown_02024270[i] = 0xFF;
+ gLastMoves[i] = 0;
+ gLastLandedMoves[i] = 0;
+ gLastHitByType[i] = 0;
+ gLastResultingMoves[i] = 0;
+ gLastHitBy[i] = 0xFF;
gLockedMoves[i] = 0;
- gUnknownMovesUsedByBanks[i] = 0;
+ gLastPrintedMoves[i] = 0;
gBattleResources->flags->flags[i] = 0;
- gUnknown_02024230[i] = 0;
+ gPalaceSelectionBattleScripts[i] = 0;
}
for (i = 0; i < 2; i++)
@@ -2896,7 +2872,7 @@ void SwitchInClearSetData(void)
&& (gStatuses3[i] & STATUS3_ALWAYS_HITS) != 0
&& (gDisableStructs[i].bankWithSureHit == gActiveBank))
{
- gStatuses3[i] &= ~STATUS3_ALWAYS_HITS;
+ gStatuses3[i] &= ~(STATUS3_ALWAYS_HITS);
gStatuses3[i] |= 0x10;
}
}
@@ -2932,14 +2908,14 @@ void SwitchInClearSetData(void)
}
gBattleMoveFlags = 0;
- gDisableStructs[gActiveBank].isFirstTurn= 2;
+ gDisableStructs[gActiveBank].isFirstTurn = 2;
gDisableStructs[gActiveBank].truantUnknownBit = disableStructCopy.truantUnknownBit;
- gLastUsedMovesByBanks[gActiveBank] = 0;
- gUnknown_02024250[gActiveBank] = 0;
- gUnknown_02024258[gActiveBank] = 0;
- gUnknown_02024260[gActiveBank] = 0;
- gUnknownMovesUsedByBanks[gActiveBank] = 0;
- gUnknown_02024270[gActiveBank] = 0xFF;
+ gLastMoves[gActiveBank] = 0;
+ gLastLandedMoves[gActiveBank] = 0;
+ gLastHitByType[gActiveBank] = 0;
+ gLastResultingMoves[gActiveBank] = 0;
+ gLastPrintedMoves[gActiveBank] = 0;
+ gLastHitBy[gActiveBank] = 0xFF;
*(gBattleStruct->mirrorMoves + gActiveBank * 2 + 0) = 0;
*(gBattleStruct->mirrorMoves + gActiveBank * 2 + 1) = 0;
@@ -3026,12 +3002,12 @@ void FaintClearSetData(void)
gDisableStructs[gActiveBank].isFirstTurn = 2;
- gLastUsedMovesByBanks[gActiveBank] = 0;
- gUnknown_02024250[gActiveBank] = 0;
- gUnknown_02024258[gActiveBank] = 0;
- gUnknown_02024260[gActiveBank] = 0;
- gUnknownMovesUsedByBanks[gActiveBank] = 0;
- gUnknown_02024270[gActiveBank] = 0xFF;
+ gLastMoves[gActiveBank] = 0;
+ gLastLandedMoves[gActiveBank] = 0;
+ gLastHitByType[gActiveBank] = 0;
+ gLastResultingMoves[gActiveBank] = 0;
+ gLastPrintedMoves[gActiveBank] = 0;
+ gLastHitBy[gActiveBank] = 0xFF;
*(u8*)((u8*)(&gBattleStruct->choicedMove[gActiveBank]) + 0) = 0;
*(u8*)((u8*)(&gBattleStruct->choicedMove[gActiveBank]) + 1) = 0;
@@ -3213,7 +3189,7 @@ static void BattleIntroDrawPartySummaryScreens(void)
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
{
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_NONE
|| GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_EGG)
@@ -3231,7 +3207,7 @@ static void BattleIntroDrawPartySummaryScreens(void)
EmitDrawPartyStatusSummary(0, hpStatus, 0x80);
MarkBufferBankForExecution(gActiveBank);
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_NONE
|| GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_EGG)
@@ -3692,10 +3668,10 @@ static void TryDoEventsBeforeFirstTurn(void)
*(&gBattleStruct->turnEffectsTracker) = 0;
*(&gBattleStruct->turnEffectsBank) = 0;
- *(&gBattleStruct->field_1A0) = 0;
- *(&gBattleStruct->field_1A1) = 0;
+ *(&gBattleStruct->wishPerishSongState) = 0;
+ *(&gBattleStruct->wishPerishSongBank) = 0;
gBattleScripting.atk49_state = 0;
- gBattleStruct->field_4D = 0;
+ gBattleStruct->faintedActionsState = 0;
gBattleStruct->turncountersTracker = 0;
gBattleMoveFlags = 0;
@@ -3704,7 +3680,7 @@ static void TryDoEventsBeforeFirstTurn(void)
if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
{
StopCryAndClearCrySongs();
- BattleScriptExecute(gUnknown_082DB8BE);
+ BattleScriptExecute(BattleScript_82DB8BE);
}
}
@@ -3725,8 +3701,8 @@ static void HandleEndTurn_ContinueBattle(void)
}
gBattleStruct->turnEffectsTracker = 0;
gBattleStruct->turnEffectsBank = 0;
- gBattleStruct->field_1A0 = 0;
- gBattleStruct->field_1A1 = 0;
+ gBattleStruct->wishPerishSongState = 0;
+ gBattleStruct->wishPerishSongBank = 0;
gBattleStruct->turncountersTracker = 0;
gBattleMoveFlags = 0;
}
@@ -3744,10 +3720,10 @@ void BattleTurnPassed(void)
if (TurnBasedEffects() != 0)
return;
}
- if (sub_8041728() != 0)
+ if (HandleFaintedMonActions() != 0)
return;
- gBattleStruct->field_4D = 0;
- if (sub_8041364() != 0)
+ gBattleStruct->faintedActionsState = 0;
+ if (HandleWishPerishSongOnTurnEnd() != 0)
return;
TurnValuesCleanUp(FALSE);
@@ -3792,9 +3768,9 @@ void BattleTurnPassed(void)
gRandomTurnNumber = Random();
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
- BattleScriptExecute(gUnknown_082DB881);
+ BattleScriptExecute(BattleScript_82DB881);
else if (gBattleTypeFlags & BATTLE_TYPE_ARENA && gBattleStruct->field_DA == 0)
- BattleScriptExecute(gUnknown_082DB8BE);
+ BattleScriptExecute(BattleScript_82DB8BE);
}
u8 IsRunningFromBattleImpossible(void)
@@ -4007,7 +3983,7 @@ static void HandleTurnActionSelectionState(void)
| BATTLE_TYPE_x2000000))
{
RecordedBattle_ClearBankAction(gActiveBank, 1);
- gBattlescriptPtrsForSelection[gActiveBank] = BattleScript_ActionSelectionItemsCantBeUsed;
+ gSelectionBattleScripts[gActiveBank] = BattleScript_ActionSelectionItemsCantBeUsed;
gBattleCommunication[gActiveBank] = STATE_SELECTION_SCRIPT;
*(gBattleStruct->selectionScriptFinished + gActiveBank) = FALSE;
*(gBattleStruct->stateIdAfterSelScript + gActiveBank) = STATE_BEFORE_ACTION_CHOSEN;
@@ -4052,7 +4028,7 @@ static void HandleTurnActionSelectionState(void)
case ACTION_SAFARI_ZONE_BALL:
if (IsPlayerPartyAndPokemonStorageFull())
{
- gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DAB11;
+ gSelectionBattleScripts[gActiveBank] = BattleScript_PrintFullBox;
gBattleCommunication[gActiveBank] = STATE_SELECTION_SCRIPT;
*(gBattleStruct->selectionScriptFinished + gActiveBank) = FALSE;
*(gBattleStruct->stateIdAfterSelScript + gActiveBank) = STATE_BEFORE_ACTION_CHOSEN;
@@ -4107,7 +4083,7 @@ static void HandleTurnActionSelectionState(void)
&& gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_x4000000)
&& gBattleBufferB[gActiveBank][1] == ACTION_RUN)
{
- gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DB9BA;
+ gSelectionBattleScripts[gActiveBank] = BattleScript_AskIfWantsToForfeitMatch;
gBattleCommunication[gActiveBank] = 8;
*(gBattleStruct->selectionScriptFinished + gActiveBank) = FALSE;
*(gBattleStruct->stateIdAfterSelScript + gActiveBank) = STATE_BEFORE_ACTION_CHOSEN;
@@ -4117,13 +4093,13 @@ static void HandleTurnActionSelectionState(void)
&& !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
&& gBattleBufferB[gActiveBank][1] == ACTION_RUN)
{
- BattleScriptExecute(gUnknown_082DAAFE);
+ BattleScriptExecute(BattleScript_PrintCantRunFromTrainer);
gBattleCommunication[gActiveBank] = 1;
}
- else if (IsRunningFromBattleImpossible() != 0
+ else if (IsRunningFromBattleImpossible()
&& gBattleBufferB[gActiveBank][1] == ACTION_RUN)
{
- gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DAB0B;
+ gSelectionBattleScripts[gActiveBank] = BattleScript_PrintCantEscapeFromBattle;
gBattleCommunication[gActiveBank] = STATE_SELECTION_SCRIPT;
*(gBattleStruct->selectionScriptFinished + gActiveBank) = FALSE;
*(gBattleStruct->stateIdAfterSelScript + gActiveBank) = STATE_BEFORE_ACTION_CHOSEN;
@@ -4276,12 +4252,12 @@ static void HandleTurnActionSelectionState(void)
else
{
gBankAttacker = gActiveBank;
- gBattlescriptCurrInstr = gBattlescriptPtrsForSelection[gActiveBank];
+ gBattlescriptCurrInstr = gSelectionBattleScripts[gActiveBank];
if (!(gBattleExecBuffer & ((gBitTable[gActiveBank]) | (0xF0000000) | (gBitTable[gActiveBank] << 4) | (gBitTable[gActiveBank] << 8) | (gBitTable[gActiveBank] << 0xC))))
{
gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]]();
}
- gBattlescriptPtrsForSelection[gActiveBank] = gBattlescriptCurrInstr;
+ gSelectionBattleScripts[gActiveBank] = gBattlescriptCurrInstr;
}
break;
case STATE_WAIT_SET_BEFORE_ACTION:
@@ -4308,12 +4284,12 @@ static void HandleTurnActionSelectionState(void)
else
{
gBankAttacker = gActiveBank;
- gBattlescriptCurrInstr = gBattlescriptPtrsForSelection[gActiveBank];
+ gBattlescriptCurrInstr = gSelectionBattleScripts[gActiveBank];
if (!(gBattleExecBuffer & ((gBitTable[gActiveBank]) | (0xF0000000) | (gBitTable[gActiveBank] << 4) | (gBitTable[gActiveBank] << 8) | (gBitTable[gActiveBank] << 0xC))))
{
gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]]();
}
- gBattlescriptPtrsForSelection[gActiveBank] = gBattlescriptCurrInstr;
+ gSelectionBattleScripts[gActiveBank] = gBattlescriptCurrInstr;
}
break;
}
@@ -4716,7 +4692,7 @@ static void CheckFocusPunch_ClearVarsBeforeTurnStarts(void)
gBattleMainFunc = RunTurnActionsFunctions;
gBattleCommunication[3] = 0;
gBattleCommunication[4] = 0;
- gBattleScripting.field_16 = 0;
+ gBattleScripting.multihitMoveEffect = 0;
gBattleResources->battleScriptsStack->size = 0;
}
@@ -4725,7 +4701,7 @@ static void RunTurnActionsFunctions(void)
if (gBattleOutcome != 0)
gCurrentActionFuncId = 12;
- *(&gBattleStruct->field_4B) = gCurrentTurnActionNumber;
+ *(&gBattleStruct->savedTurnActionNumber) = gCurrentTurnActionNumber;
sTurnActionsFuncsTable[gCurrentActionFuncId]();
if (gCurrentTurnActionNumber >= gNoOfAllBanks) // everyone did their actions, turn finished
@@ -4735,7 +4711,7 @@ static void RunTurnActionsFunctions(void)
}
else
{
- if (gBattleStruct->field_4B != gCurrentTurnActionNumber) // action turn has been done, clear hitmarker bits for another bank
+ if (gBattleStruct->savedTurnActionNumber != gCurrentTurnActionNumber) // action turn has been done, clear hitmarker bits for another bank
{
gHitMarker &= ~(HITMARKER_NO_ATTACKSTRING);
gHitMarker &= ~(HITMARKER_UNABLE_TO_USE_MOVE);
@@ -4753,7 +4729,7 @@ static void HandleEndTurn_BattleWon(void)
gBattleTextBuff1[0] = gBattleOutcome;
gBankAttacker = GetBankByIdentity(IDENTITY_PLAYER_MON1);
gBattlescriptCurrInstr = BattleScript_LinkBattleWonOrLost;
- gBattleOutcome &= ~(BATTLE_OUTCOME_BIT_x80);
+ gBattleOutcome &= ~(OUTCOME_LINK_BATTLE_RUN);
}
else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER
&& gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_x4000000 | BATTLE_TYPE_EREADER_TRAINER))
@@ -4773,19 +4749,19 @@ static void HandleEndTurn_BattleWon(void)
switch (gTrainers[gTrainerBattleOpponent_A].trainerClass)
{
- case CLASS_ELITE_FOUR:
- case CLASS_CHAMPION:
+ case TRAINER_CLASS_ELITE_FOUR:
+ case TRAINER_CLASS_CHAMPION:
PlayBGM(BGM_KACHI5);
break;
- case CLASS_TEAM_AQUA:
- case CLASS_TEAM_MAGMA:
- case CLASS_AQUA_ADMIN:
- case CLASS_AQUA_LEADER:
- case CLASS_MAGMA_ADMIN:
- case CLASS_MAGMA_LEADER:
+ case TRAINER_CLASS_TEAM_AQUA:
+ case TRAINER_CLASS_TEAM_MAGMA:
+ case TRAINER_CLASS_AQUA_ADMIN:
+ case TRAINER_CLASS_AQUA_LEADER:
+ case TRAINER_CLASS_MAGMA_ADMIN:
+ case TRAINER_CLASS_MAGMA_LEADER:
PlayBGM(BGM_KACHI4);
break;
- case CLASS_LEADER:
+ case TRAINER_CLASS_LEADER:
PlayBGM(BGM_KACHI3);
break;
default:
@@ -4809,16 +4785,16 @@ static void HandleEndTurn_BattleLost(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
{
- if (gBattleOutcome & BATTLE_OUTCOME_BIT_x80)
+ if (gBattleOutcome & OUTCOME_LINK_BATTLE_RUN)
{
- gBattlescriptCurrInstr = gUnknown_082DB9C8;
- gBattleOutcome &= ~(BATTLE_OUTCOME_BIT_x80);
+ gBattlescriptCurrInstr = BattleScript_PrintPlayerForfeitedLinkBattle;
+ gBattleOutcome &= ~(OUTCOME_LINK_BATTLE_RUN);
gSaveBlock2Ptr->field_CA9_b = 1;
}
else
{
- gBattlescriptCurrInstr = gUnknown_082DAA0B;
- gBattleOutcome &= ~(BATTLE_OUTCOME_BIT_x80);
+ gBattlescriptCurrInstr = BattleScript_82DAA0B;
+ gBattleOutcome &= ~(OUTCOME_LINK_BATTLE_RUN);
}
}
else
@@ -4826,7 +4802,7 @@ static void HandleEndTurn_BattleLost(void)
gBattleTextBuff1[0] = gBattleOutcome;
gBankAttacker = GetBankByIdentity(IDENTITY_PLAYER_MON1);
gBattlescriptCurrInstr = BattleScript_LinkBattleWonOrLost;
- gBattleOutcome &= ~(BATTLE_OUTCOME_BIT_x80);
+ gBattleOutcome &= ~(OUTCOME_LINK_BATTLE_RUN);
}
}
else
@@ -4843,13 +4819,13 @@ static void HandleEndTurn_RanFromBattle(void)
if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER && gBattleTypeFlags & BATTLE_TYPE_TRAINER)
{
- gBattlescriptCurrInstr = gUnknown_082DB9C1;
+ gBattlescriptCurrInstr = BattleScript_PrintPlayerForfeited;
gBattleOutcome = BATTLE_FORFEITED;
gSaveBlock2Ptr->field_CA9_b = 1;
}
else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
{
- gBattlescriptCurrInstr = gUnknown_082DB9C1;
+ gBattlescriptCurrInstr = BattleScript_PrintPlayerForfeited;
gBattleOutcome = BATTLE_FORFEITED;
}
else
@@ -5072,19 +5048,19 @@ static void HandleAction_UseMove(void)
if (gProtectStructs[gBankAttacker].onlyStruggle)
{
gProtectStructs[gBankAttacker].onlyStruggle = 0;
- gCurrentMove = gLastUsedMove = MOVE_STRUGGLE;
+ gCurrentMove = gChosenMove = MOVE_STRUGGLE;
gHitMarker |= HITMARKER_NO_PPDEDUCT;
*(gBattleStruct->moveTarget + gBankAttacker) = GetMoveTarget(MOVE_STRUGGLE, 0);
}
else if (gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS || gBattleMons[gBankAttacker].status2 & STATUS2_RECHARGE)
{
- gCurrentMove = gLastUsedMove = gLockedMoves[gBankAttacker];
+ gCurrentMove = gChosenMove = gLockedMoves[gBankAttacker];
}
// encore forces you to use the same move
else if (gDisableStructs[gBankAttacker].encoredMove != MOVE_NONE
&& gDisableStructs[gBankAttacker].encoredMove == gBattleMons[gBankAttacker].moves[gDisableStructs[gBankAttacker].encoredMovePos])
{
- gCurrentMove = gLastUsedMove = gDisableStructs[gBankAttacker].encoredMove;
+ gCurrentMove = gChosenMove = gDisableStructs[gBankAttacker].encoredMove;
gCurrMovePos = gUnknown_020241E9 = gDisableStructs[gBankAttacker].encoredMovePos;
*(gBattleStruct->moveTarget + gBankAttacker) = GetMoveTarget(gCurrentMove, 0);
}
@@ -5093,7 +5069,7 @@ static void HandleAction_UseMove(void)
&& gDisableStructs[gBankAttacker].encoredMove != gBattleMons[gBankAttacker].moves[gDisableStructs[gBankAttacker].encoredMovePos])
{
gCurrMovePos = gUnknown_020241E9 = gDisableStructs[gBankAttacker].encoredMovePos;
- gCurrentMove = gLastUsedMove = gBattleMons[gBankAttacker].moves[gCurrMovePos];
+ gCurrentMove = gChosenMove = gBattleMons[gBankAttacker].moves[gCurrMovePos];
gDisableStructs[gBankAttacker].encoredMove = MOVE_NONE;
gDisableStructs[gBankAttacker].encoredMovePos = 0;
gDisableStructs[gBankAttacker].encoreTimer1 = 0;
@@ -5101,12 +5077,12 @@ static void HandleAction_UseMove(void)
}
else if (gBattleMons[gBankAttacker].moves[gCurrMovePos] != gChosenMovesByBanks[gBankAttacker])
{
- gCurrentMove = gLastUsedMove = gBattleMons[gBankAttacker].moves[gCurrMovePos];
+ gCurrentMove = gChosenMove = gBattleMons[gBankAttacker].moves[gCurrMovePos];
*(gBattleStruct->moveTarget + gBankAttacker) = GetMoveTarget(gCurrentMove, 0);
}
else
{
- gCurrentMove = gLastUsedMove = gBattleMons[gBankAttacker].moves[gCurrMovePos];
+ gCurrentMove = gChosenMove = gBattleMons[gBankAttacker].moves[gCurrMovePos];
}
if (gBattleMons[gBankAttacker].hp != 0)
@@ -5146,7 +5122,7 @@ static void HandleAction_UseMove(void)
}
if (var == 4)
{
- if (gBattleMoves[gLastUsedMove].target & MOVE_TARGET_RANDOM)
+ if (gBattleMoves[gChosenMove].target & MOVE_TARGET_RANDOM)
{
if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
{
@@ -5191,7 +5167,7 @@ static void HandleAction_UseMove(void)
}
}
else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE
- && gBattleMoves[gLastUsedMove].target & MOVE_TARGET_RANDOM)
+ && gBattleMoves[gChosenMove].target & MOVE_TARGET_RANDOM)
{
if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
{
@@ -5241,11 +5217,11 @@ static void HandleAction_UseMove(void)
gCurrentActionFuncId = 12;
return;
}
- else if (gUnknown_02024230[gBankAttacker] != NULL)
+ else if (gPalaceSelectionBattleScripts[gBankAttacker] != NULL)
{
gBattleCommunication[MULTISTRING_CHOOSER] = 4;
- gBattlescriptCurrInstr = gUnknown_02024230[gBankAttacker];
- gUnknown_02024230[gBankAttacker] = NULL;
+ gBattlescriptCurrInstr = gPalaceSelectionBattleScripts[gBankAttacker];
+ gPalaceSelectionBattleScripts[gBankAttacker] = NULL;
}
else
{
@@ -5300,7 +5276,7 @@ static void HandleAction_UseItem(void)
}
else if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
{
- gBattlescriptCurrInstr = gUnknown_082DBD3C[0];
+ gBattlescriptCurrInstr = gBattlescriptsForUsingItem[0];
}
else
{
@@ -5356,7 +5332,7 @@ static void HandleAction_UseItem(void)
break;
}
- gBattlescriptCurrInstr = gUnknown_082DBD3C[*(gBattleStruct->AI_itemType + gBankAttacker / 2)];
+ gBattlescriptCurrInstr = gBattlescriptsForUsingItem[*(gBattleStruct->AI_itemType + gBankAttacker / 2)];
}
gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT;
}
@@ -5463,7 +5439,7 @@ static void HandleAction_Run(void)
}
}
- gBattleOutcome |= BATTLE_OUTCOME_BIT_x80;
+ gBattleOutcome |= OUTCOME_LINK_BATTLE_RUN;
gSaveBlock2Ptr->field_CA9_b = 1;
}
else
@@ -5589,9 +5565,9 @@ static void HandleAction_Action9(void)
static void HandleAction_Action11(void)
{
- if (!sub_8041728())
+ if (!HandleFaintedMonActions())
{
- gBattleStruct->field_4D = 0;
+ gBattleStruct->faintedActionsState = 0;
gCurrentActionFuncId = ACTION_FINISHED;
}
}
@@ -5624,13 +5600,13 @@ static void HandleAction_ActionFinished(void)
gBattleMoveFlags = 0;
gBattleScripting.animTurn = 0;
gBattleScripting.animTargetsHit = 0;
- gUnknown_02024250[gBankAttacker] = 0;
- gUnknown_02024258[gBankAttacker] = 0;
+ gLastLandedMoves[gBankAttacker] = 0;
+ gLastHitByType[gBankAttacker] = 0;
gBattleStruct->dynamicMoveType = 0;
gDynamicBasePower = 0;
gBattleScripting.atk49_state = 0;
gBattleCommunication[3] = 0;
gBattleCommunication[4] = 0;
- gBattleScripting.field_16 = 0;
+ gBattleScripting.multihitMoveEffect = 0;
gBattleResources->battleScriptsStack->size = 0;
}
diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c
index 24377eacc..44be0a4d9 100644
--- a/src/battle_ai_script_commands.c
+++ b/src/battle_ai_script_commands.c
@@ -2,17 +2,16 @@
#include "battle_ai_script_commands.h"
#include "pokemon.h"
#include "battle.h"
-#include "species.h"
-#include "abilities.h"
-#include "rng.h"
+#include "constants/species.h"
+#include "constants/abilities.h"
+#include "random.h"
#include "item.h"
-#include "battle_move_effects.h"
-#include "moves.h"
+#include "constants/battle_move_effects.h"
+#include "constants/moves.h"
#include "util.h"
#define AIScriptRead32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24)
#define AIScriptRead16(ptr) ((ptr)[0] | (ptr)[1] << 8)
-#define AIScriptRead8(ptr) ((ptr)[0])
#define AIScriptReadPtr(ptr) (const u8*) AIScriptRead32(ptr)
#define AI_ACTION_DONE 0x0001
@@ -58,7 +57,7 @@ extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
extern u16 gCurrentMove;
extern u8 gBankTarget;
extern u8 gAbsentBankFlags;
-extern u16 gLastUsedMovesByBanks[BATTLE_BANKS_COUNT];
+extern u16 gLastMoves[BATTLE_BANKS_COUNT];
extern u16 gTrainerBattleOpponent_A;
extern u16 gTrainerBattleOpponent_B;
extern u32 gStatuses3[BATTLE_BANKS_COUNT];
@@ -633,12 +632,12 @@ static void RecordLastUsedMoveByTarget(void)
for (i = 0; i < 4; i++)
{
- if (gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] == gLastUsedMovesByBanks[gBankTarget])
+ if (gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] == gLastMoves[gBankTarget])
break;
- if (gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] != gLastUsedMovesByBanks[gBankTarget] // HACK: This redundant condition is a hack to make the asm match.
+ if (gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] != gLastMoves[gBankTarget] // HACK: This redundant condition is a hack to make the asm match.
&& gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] == 0)
{
- gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] = gLastUsedMovesByBanks[gBankTarget];
+ gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] = gLastMoves[gBankTarget];
break;
}
}
@@ -1252,9 +1251,9 @@ static void BattleAICmd_is_most_powerful_move(void)
static void BattleAICmd_get_last_used_bank_move(void)
{
if (gAIScriptPtr[1] == AI_USER)
- AI_THINKING_STRUCT->funcResult = gLastUsedMovesByBanks[sBank_AI];
+ AI_THINKING_STRUCT->funcResult = gLastMoves[sBank_AI];
else
- AI_THINKING_STRUCT->funcResult = gLastUsedMovesByBanks[gBankTarget];
+ AI_THINKING_STRUCT->funcResult = gLastMoves[gBankTarget];
gAIScriptPtr += 2;
}
diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c
index 75d144c3d..b3fccb17f 100644
--- a/src/battle_ai_switch_items.c
+++ b/src/battle_ai_switch_items.c
@@ -1,13 +1,13 @@
#include "global.h"
#include "battle.h"
#include "battle_controllers.h"
-#include "abilities.h"
-#include "moves.h"
+#include "constants/abilities.h"
+#include "constants/moves.h"
#include "pokemon.h"
-#include "species.h"
-#include "rng.h"
+#include "constants/species.h"
+#include "random.h"
#include "util.h"
-#include "items.h"
+#include "constants/items.h"
#include "pokemon_item_effects.h"
extern u8 gActiveBank;
@@ -16,8 +16,8 @@ extern u32 gBattleTypeFlags;
extern u32 gStatuses3[BATTLE_BANKS_COUNT];
extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
-extern u16 gUnknown_02024250[BATTLE_BANKS_COUNT];
-extern u8 gUnknown_02024270[BATTLE_BANKS_COUNT];
+extern u16 gLastLandedMoves[BATTLE_BANKS_COUNT];
+extern u8 gLastHitBy[BATTLE_BANKS_COUNT];
extern u16 gDynamicBasePower;
extern u8 gBattleMoveFlags;
extern u8 gCritMultiplier;
@@ -141,11 +141,11 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void)
if (HasSuperEffectiveMoveAgainstOpponents(TRUE) && Random() % 3 != 0)
return FALSE;
- if (gUnknown_02024250[gActiveBank] == 0)
+ if (gLastLandedMoves[gActiveBank] == 0)
return FALSE;
- if (gUnknown_02024250[gActiveBank] == 0xFFFF)
+ if (gLastLandedMoves[gActiveBank] == 0xFFFF)
return FALSE;
- if (gBattleMoves[gUnknown_02024250[gActiveBank]].power == 0)
+ if (gBattleMoves[gLastLandedMoves[gActiveBank]].power == 0)
return FALSE;
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
@@ -162,11 +162,11 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void)
bankIn2 = gActiveBank;
}
- if (gBattleMoves[gUnknown_02024250[gActiveBank]].type == TYPE_FIRE)
+ if (gBattleMoves[gLastLandedMoves[gActiveBank]].type == TYPE_FIRE)
absorbingTypeAbility = ABILITY_FLASH_FIRE;
- else if (gBattleMoves[gUnknown_02024250[gActiveBank]].type == TYPE_WATER)
+ else if (gBattleMoves[gLastLandedMoves[gActiveBank]].type == TYPE_WATER)
absorbingTypeAbility = ABILITY_WATER_ABSORB;
- else if (gBattleMoves[gUnknown_02024250[gActiveBank]].type == TYPE_ELECTRIC)
+ else if (gBattleMoves[gLastLandedMoves[gActiveBank]].type == TYPE_ELECTRIC)
absorbingTypeAbility = ABILITY_VOLT_ABSORB;
else
return FALSE;
@@ -238,13 +238,13 @@ static bool8 ShouldSwitchIfNaturalCure(void)
if (gBattleMons[gActiveBank].hp < gBattleMons[gActiveBank].maxHP / 2)
return FALSE;
- if ((gUnknown_02024250[gActiveBank] == 0 || gUnknown_02024250[gActiveBank] == 0xFFFF) && Random() & 1)
+ if ((gLastLandedMoves[gActiveBank] == 0 || gLastLandedMoves[gActiveBank] == 0xFFFF) && Random() & 1)
{
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBank) = 6;
EmitTwoReturnValues(1, ACTION_SWITCH, 0);
return TRUE;
}
- else if (gBattleMoves[gUnknown_02024250[gActiveBank]].power == 0 && Random() & 1)
+ else if (gBattleMoves[gLastLandedMoves[gActiveBank]].power == 0 && Random() & 1)
{
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBank) = 6;
EmitTwoReturnValues(1, ACTION_SWITCH, 0);
@@ -345,13 +345,13 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent)
u16 move;
u8 moveFlags;
- if (gUnknown_02024250[gActiveBank] == 0)
+ if (gLastLandedMoves[gActiveBank] == 0)
return FALSE;
- if (gUnknown_02024250[gActiveBank] == 0xFFFF)
+ if (gLastLandedMoves[gActiveBank] == 0xFFFF)
return FALSE;
- if (gUnknown_02024270[gActiveBank] == 0xFF)
+ if (gLastHitBy[gActiveBank] == 0xFF)
return FALSE;
- if (gBattleMoves[gUnknown_02024250[gActiveBank]].power == 0)
+ if (gBattleMoves[gLastLandedMoves[gActiveBank]].power == 0)
return FALSE;
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
@@ -411,10 +411,10 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent)
else
monAbility = gBaseStats[species].ability1;
- moveFlags = AI_TypeCalc(gUnknown_02024250[gActiveBank], species, monAbility);
+ moveFlags = AI_TypeCalc(gLastLandedMoves[gActiveBank], species, monAbility);
if (moveFlags & flags)
{
- bankIn1 = gUnknown_02024270[gActiveBank];
+ bankIn1 = gLastHitBy[gActiveBank];
for (j = 0; j < 4; j++)
{
diff --git a/src/battle_anim.c b/src/battle_anim.c
index fa3ac73be..2eec0bed5 100644
--- a/src/battle_anim.c
+++ b/src/battle_anim.c
@@ -423,7 +423,7 @@ static void ScriptCmd_createsprite(void)
if (subpriority < 3)
subpriority = 3;
- CreateSpriteAndAnimate(template, sub_80A5C6C(gAnimBankTarget, 2), sub_80A5C6C(gAnimBankTarget, 3), subpriority);
+ CreateSpriteAndAnimate(template, GetBankPosition(gAnimBankTarget, 2), GetBankPosition(gAnimBankTarget, 3), subpriority);
gAnimVisualTaskCount++;
}
diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c
index 423d34d45..dd8582618 100644
--- a/src/battle_controller_link_opponent.c
+++ b/src/battle_controller_link_opponent.c
@@ -10,7 +10,7 @@
#include "link.h"
#include "util.h"
#include "main.h"
-#include "songs.h"
+#include "constants/songs.h"
#include "sound.h"
#include "window.h"
#include "m4a.h"
@@ -82,7 +82,7 @@ static void LinkOpponentHandleBallThrowAnim(void);
static void LinkOpponentHandlePause(void);
static void LinkOpponentHandleMoveAnimation(void);
static void LinkOpponentHandlePrintString(void);
-static void LinkOpponentHandlePrintStringPlayerOnly(void);
+static void LinkOpponentHandlePrintSelectionString(void);
static void LinkOpponentHandleChooseAction(void);
static void LinkOpponentHandleUnknownYesNoBox(void);
static void LinkOpponentHandleChooseMove(void);
@@ -108,7 +108,7 @@ static void LinkOpponentHandleCmd39(void);
static void LinkOpponentHandleCmd40(void);
static void LinkOpponentHandleHitAnimation(void);
static void LinkOpponentHandleCmd42(void);
-static void LinkOpponentHandleEffectivenessSound(void);
+static void LinkOpponentHandlePlaySE(void);
static void LinkOpponentHandlePlayFanfareOrBGM(void);
static void LinkOpponentHandleFaintingCry(void);
static void LinkOpponentHandleIntroSlide(void);
@@ -154,7 +154,7 @@ static void (*const sLinkOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
LinkOpponentHandlePause,
LinkOpponentHandleMoveAnimation,
LinkOpponentHandlePrintString,
- LinkOpponentHandlePrintStringPlayerOnly,
+ LinkOpponentHandlePrintSelectionString,
LinkOpponentHandleChooseAction,
LinkOpponentHandleUnknownYesNoBox,
LinkOpponentHandleChooseMove,
@@ -180,7 +180,7 @@ static void (*const sLinkOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
LinkOpponentHandleCmd40,
LinkOpponentHandleHitAnimation,
LinkOpponentHandleCmd42,
- LinkOpponentHandleEffectivenessSound,
+ LinkOpponentHandlePlaySE,
LinkOpponentHandlePlayFanfareOrBGM,
LinkOpponentHandleFaintingCry,
LinkOpponentHandleIntroSlide,
@@ -310,14 +310,14 @@ static void sub_8064734(void)
{
bool32 r10 = FALSE;
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x8
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1)
{
sub_8172EF0(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
}
if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x8
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].ballAnimActive
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x80
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].field_1_x1)
{
@@ -325,7 +325,7 @@ static void sub_8064734(void)
}
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x8 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x8)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].ballAnimActive)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x80)
{
@@ -465,18 +465,18 @@ static void DoHitAnimBlinkSpriteEffect(void)
{
u8 spriteId = gBankSpriteIds[gActiveBank];
- if (gSprites[spriteId].data1 == 32)
+ if (gSprites[spriteId].data[1] == 32)
{
- gSprites[spriteId].data1 = 0;
+ gSprites[spriteId].data[1] = 0;
gSprites[spriteId].invisible = 0;
gDoingBattleAnim = FALSE;
LinkOpponentBufferExecCompleted();
}
else
{
- if ((gSprites[spriteId].data1 % 4) == 0)
+ if ((gSprites[spriteId].data[1] % 4) == 0)
gSprites[spriteId].invisible ^= 1;
- gSprites[spriteId].data1++;
+ gSprites[spriteId].data[1]++;
}
}
@@ -527,14 +527,14 @@ static void sub_8064E50(void)
static void sub_8064F40(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x8
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80)
{
sub_8172EF0(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
}
if (gSprites[gUnknown_03005D7C[gActiveBank]].callback == SpriteCallbackDummy
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x8)
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive)
{
DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBank]]);
SetBankEnemyShadowSpriteCallback(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
@@ -1163,12 +1163,12 @@ static void LinkOpponentHandleLoadMonSprite(void)
sub_806A068(species, GetBankIdentity(gActiveBank));
gBankSpriteIds[gActiveBank] = CreateSprite(&gUnknown_0202499C,
- sub_80A5C6C(gActiveBank, 2),
+ GetBankPosition(gActiveBank, 2),
GetBankSpriteDefault_Y(gActiveBank),
sub_80A82E4(gActiveBank));
gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240;
- gSprites[gBankSpriteIds[gActiveBank]].data0 = gActiveBank;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = gActiveBank;
gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], gBattleMonForms[gActiveBank]);
@@ -1197,15 +1197,15 @@ static void sub_8066494(u8 bank, bool8 dontClearSubstituteBit)
gBankSpriteIds[bank] = CreateSprite(
&gUnknown_0202499C,
- sub_80A5C6C(bank, 2),
+ GetBankPosition(bank, 2),
GetBankSpriteDefault_Y(bank),
sub_80A82E4(bank));
- gSprites[gUnknown_03005D7C[bank]].data1 = gBankSpriteIds[bank];
- gSprites[gUnknown_03005D7C[bank]].data2 = bank;
+ gSprites[gUnknown_03005D7C[bank]].data[1] = gBankSpriteIds[bank];
+ gSprites[gUnknown_03005D7C[bank]].data[2] = bank;
- gSprites[gBankSpriteIds[bank]].data0 = bank;
- gSprites[gBankSpriteIds[bank]].data2 = species;
+ gSprites[gBankSpriteIds[bank]].data[0] = bank;
+ gSprites[gBankSpriteIds[bank]].data[2] = species;
gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
@@ -1213,7 +1213,7 @@ static void sub_8066494(u8 bank, bool8 dontClearSubstituteBit)
gSprites[gBankSpriteIds[bank]].invisible = TRUE;
gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
- gSprites[gUnknown_03005D7C[bank]].data0 = sub_80753E8(0, 0xFE);
+ gSprites[gUnknown_03005D7C[bank]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_OPPONENT_SENDOUT);
}
static void LinkOpponentHandleReturnMonToBall(void)
@@ -1334,7 +1334,7 @@ static void LinkOpponentHandleDrawTrainerPic(void)
sub_80A82E4(gActiveBank));
gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240;
- gSprites[gBankSpriteIds[gActiveBank]].data0 = 2;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 2;
gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
gSprites[gBankSpriteIds[gActiveBank]].oam.affineParam = trainerPicId;
gSprites[gBankSpriteIds[gActiveBank]].callback = sub_805D7AC;
@@ -1357,7 +1357,7 @@ static void LinkOpponentHandleTrainerSlide(void)
gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 96;
gSprites[gBankSpriteIds[gActiveBank]].pos1.x += 32;
- gSprites[gBankSpriteIds[gActiveBank]].data0 = -2;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
gSprites[gBankSpriteIds[gActiveBank]].oam.affineParam = trainerPicId;
gSprites[gBankSpriteIds[gActiveBank]].callback = sub_805D7AC;
@@ -1369,9 +1369,9 @@ static void LinkOpponentHandleTrainerSlide(void)
static void LinkOpponentHandleTrainerSlideBack(void)
{
oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
- gSprites[gBankSpriteIds[gActiveBank]].data0 = 35;
- gSprites[gBankSpriteIds[gActiveBank]].data2 = 280;
- gSprites[gBankSpriteIds[gActiveBank]].data4 = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35;
+ gSprites[gBankSpriteIds[gActiveBank]].data[2] = 280;
+ gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80A6EEC;
StoreSpriteCallbackInData6(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy);
gBattleBankFunc[gActiveBank] = sub_8064470;
@@ -1505,7 +1505,7 @@ static void LinkOpponentHandlePrintString(void)
sub_817C95C(*stringId);
}
-static void LinkOpponentHandlePrintStringPlayerOnly(void)
+static void LinkOpponentHandlePrintSelectionString(void)
{
LinkOpponentBufferExecCompleted();
}
@@ -1670,7 +1670,7 @@ static void LinkOpponentHandleHitAnimation(void)
else
{
gDoingBattleAnim = TRUE;
- gSprites[gBankSpriteIds[gActiveBank]].data1 = 0;
+ gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
DoHitAnimHealthboxEffect(gActiveBank);
gBattleBankFunc[gActiveBank] = DoHitAnimBlinkSpriteEffect;
}
@@ -1681,7 +1681,7 @@ static void LinkOpponentHandleCmd42(void)
LinkOpponentBufferExecCompleted();
}
-static void LinkOpponentHandleEffectivenessSound(void)
+static void LinkOpponentHandlePlaySE(void)
{
s8 pan;
@@ -1731,9 +1731,9 @@ static void LinkOpponentHandleIntroTrainerBallThrow(void)
oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
- gSprites[gBankSpriteIds[gActiveBank]].data0 = 35;
- gSprites[gBankSpriteIds[gActiveBank]].data2 = 280;
- gSprites[gBankSpriteIds[gActiveBank]].data4 = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35;
+ gSprites[gBankSpriteIds[gActiveBank]].data[2] = 280;
+ gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80A6EEC;
StoreSpriteCallbackInData6(&gSprites[gBankSpriteIds[gActiveBank]], sub_80676FC);
diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c
index e3bee98d9..9da468761 100644
--- a/src/battle_controller_link_partner.c
+++ b/src/battle_controller_link_partner.c
@@ -10,7 +10,7 @@
#include "link.h"
#include "util.h"
#include "main.h"
-#include "songs.h"
+#include "constants/songs.h"
#include "sound.h"
#include "window.h"
#include "m4a.h"
@@ -78,7 +78,7 @@ static void LinkPartnerHandleBallThrowAnim(void);
static void LinkPartnerHandlePause(void);
static void LinkPartnerHandleMoveAnimation(void);
static void LinkPartnerHandlePrintString(void);
-static void LinkPartnerHandlePrintStringPlayerOnly(void);
+static void LinkPartnerHandlePrintSelectionString(void);
static void LinkPartnerHandleChooseAction(void);
static void LinkPartnerHandleUnknownYesNoBox(void);
static void LinkPartnerHandleChooseMove(void);
@@ -104,7 +104,7 @@ static void LinkPartnerHandleCmd39(void);
static void LinkPartnerHandleCmd40(void);
static void LinkPartnerHandleHitAnimation(void);
static void LinkPartnerHandleCmd42(void);
-static void LinkPartnerHandleEffectivenessSound(void);
+static void LinkPartnerHandlePlaySE(void);
static void LinkPartnerHandlePlayFanfareOrBGM(void);
static void LinkPartnerHandleFaintingCry(void);
static void LinkPartnerHandleIntroSlide(void);
@@ -149,7 +149,7 @@ static void (*const sLinkPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
LinkPartnerHandlePause,
LinkPartnerHandleMoveAnimation,
LinkPartnerHandlePrintString,
- LinkPartnerHandlePrintStringPlayerOnly,
+ LinkPartnerHandlePrintSelectionString,
LinkPartnerHandleChooseAction,
LinkPartnerHandleUnknownYesNoBox,
LinkPartnerHandleChooseMove,
@@ -175,7 +175,7 @@ static void (*const sLinkPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
LinkPartnerHandleCmd40,
LinkPartnerHandleHitAnimation,
LinkPartnerHandleCmd42,
- LinkPartnerHandleEffectivenessSound,
+ LinkPartnerHandlePlaySE,
LinkPartnerHandlePlayFanfareOrBGM,
LinkPartnerHandleFaintingCry,
LinkPartnerHandleIntroSlide,
@@ -267,8 +267,8 @@ static void sub_814B004(void)
static void sub_814B0E8(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x8
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x8
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].ballAnimActive
&& gSprites[gUnknown_03005D7C[gActiveBank]].callback == SpriteCallbackDummy
&& gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy
&& ++gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_9 != 1)
@@ -352,18 +352,18 @@ static void DoHitAnimBlinkSpriteEffect(void)
{
u8 spriteId = gBankSpriteIds[gActiveBank];
- if (gSprites[spriteId].data1 == 32)
+ if (gSprites[spriteId].data[1] == 32)
{
- gSprites[spriteId].data1 = 0;
+ gSprites[spriteId].data[1] = 0;
gSprites[spriteId].invisible = 0;
gDoingBattleAnim = FALSE;
LinkPartnerBufferExecCompleted();
}
else
{
- if ((gSprites[spriteId].data1 % 4) == 0)
+ if ((gSprites[spriteId].data[1] % 4) == 0)
gSprites[spriteId].invisible ^= 1;
- gSprites[spriteId].data1++;
+ gSprites[spriteId].data[1]++;
}
}
@@ -412,13 +412,13 @@ static void sub_814B5A8(void)
static void sub_814B69C(void)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x8)
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive)
{
sub_8172EF0(gActiveBank, &gPlayerParty[gBattlePartyID[gActiveBank]]);
}
if (gSprites[gUnknown_03005D7C[gActiveBank]].callback == SpriteCallbackDummy
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x8)
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive)
{
DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBank]]);
gBattleBankFunc[gActiveBank] = sub_814B5A8;
@@ -1049,11 +1049,11 @@ static void LinkPartnerHandleLoadMonSprite(void)
sub_806A068(species, GetBankIdentity(gActiveBank));
gBankSpriteIds[gActiveBank] = CreateSprite(&gUnknown_0202499C,
- sub_80A5C6C(gActiveBank, 2),
+ GetBankPosition(gActiveBank, 2),
GetBankSpriteDefault_Y(gActiveBank),
sub_80A82E4(gActiveBank));
gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240;
- gSprites[gBankSpriteIds[gActiveBank]].data0 = gActiveBank;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = gActiveBank;
gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], gBattleMonForms[gActiveBank]);
gBattleBankFunc[gActiveBank] = sub_814B290;
@@ -1080,15 +1080,15 @@ static void sub_814CC98(u8 bank, bool8 dontClearSubstituteBit)
gBankSpriteIds[bank] = CreateSprite(
&gUnknown_0202499C,
- sub_80A5C6C(bank, 2),
+ GetBankPosition(bank, 2),
GetBankSpriteDefault_Y(bank),
sub_80A82E4(bank));
- gSprites[gUnknown_03005D7C[bank]].data1 = gBankSpriteIds[bank];
- gSprites[gUnknown_03005D7C[bank]].data2 = bank;
+ gSprites[gUnknown_03005D7C[bank]].data[1] = gBankSpriteIds[bank];
+ gSprites[gUnknown_03005D7C[bank]].data[2] = bank;
- gSprites[gBankSpriteIds[bank]].data0 = bank;
- gSprites[gBankSpriteIds[bank]].data2 = species;
+ gSprites[gBankSpriteIds[bank]].data[0] = bank;
+ gSprites[gBankSpriteIds[bank]].data[2] = species;
gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
@@ -1096,7 +1096,7 @@ static void sub_814CC98(u8 bank, bool8 dontClearSubstituteBit)
gSprites[gBankSpriteIds[bank]].invisible = TRUE;
gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
- gSprites[gUnknown_03005D7C[bank]].data0 = sub_80753E8(0, 0xFF);
+ gSprites[gUnknown_03005D7C[bank]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_PLAYER_SENDOUT);
}
static void LinkPartnerHandleReturnMonToBall(void)
@@ -1174,7 +1174,7 @@ static void LinkPartnerHandleDrawTrainerPic(void)
gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 240;
- gSprites[gBankSpriteIds[gActiveBank]].data0 = -2;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
gSprites[gBankSpriteIds[gActiveBank]].callback = sub_805D7AC;
gBattleBankFunc[gActiveBank] = CompleteOnBankSpriteCallbackDummy;
@@ -1188,9 +1188,9 @@ static void LinkPartnerHandleTrainerSlide(void)
static void LinkPartnerHandleTrainerSlideBack(void)
{
oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
- gSprites[gBankSpriteIds[gActiveBank]].data0 = 35;
- gSprites[gBankSpriteIds[gActiveBank]].data2 = -40;
- gSprites[gBankSpriteIds[gActiveBank]].data4 = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35;
+ gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40;
+ gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80A6EEC;
StoreSpriteCallbackInData6(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy);
gBattleBankFunc[gActiveBank] = sub_814AF54;
@@ -1211,8 +1211,8 @@ static void LinkPartnerHandleFaintAnimation(void)
gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
PlaySE12WithPanning(SE_POKE_DEAD, PAN_SIDE_PLAYER);
- gSprites[gBankSpriteIds[gActiveBank]].data1 = 0;
- gSprites[gBankSpriteIds[gActiveBank]].data2 = 5;
+ gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
+ gSprites[gBankSpriteIds[gActiveBank]].data[2] = 5;
gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8039C00;
gBattleBankFunc[gActiveBank] = sub_814B340;
}
@@ -1327,7 +1327,7 @@ static void LinkPartnerHandlePrintString(void)
sub_817C95C(*stringId);
}
-static void LinkPartnerHandlePrintStringPlayerOnly(void)
+static void LinkPartnerHandlePrintSelectionString(void)
{
LinkPartnerBufferExecCompleted();
}
@@ -1492,7 +1492,7 @@ static void LinkPartnerHandleHitAnimation(void)
else
{
gDoingBattleAnim = TRUE;
- gSprites[gBankSpriteIds[gActiveBank]].data1 = 0;
+ gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
DoHitAnimHealthboxEffect(gActiveBank);
gBattleBankFunc[gActiveBank] = DoHitAnimBlinkSpriteEffect;
}
@@ -1503,7 +1503,7 @@ static void LinkPartnerHandleCmd42(void)
LinkPartnerBufferExecCompleted();
}
-static void LinkPartnerHandleEffectivenessSound(void)
+static void LinkPartnerHandlePlaySE(void)
{
s8 pan;
@@ -1554,11 +1554,11 @@ static void LinkPartnerHandleIntroTrainerBallThrow(void)
oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
- gSprites[gBankSpriteIds[gActiveBank]].data0 = 50;
- gSprites[gBankSpriteIds[gActiveBank]].data2 = -40;
- gSprites[gBankSpriteIds[gActiveBank]].data4 = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 50;
+ gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40;
+ gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80A6EEC;
- gSprites[gBankSpriteIds[gActiveBank]].data5 = gActiveBank;
+ gSprites[gBankSpriteIds[gActiveBank]].data[5] = gActiveBank;
StoreSpriteCallbackInData6(&gSprites[gBankSpriteIds[gActiveBank]], sub_805CC00);
StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1);
diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c
index 0aac4cbe4..0862e72a7 100644
--- a/src/battle_controller_opponent.c
+++ b/src/battle_controller_opponent.c
@@ -11,10 +11,10 @@
#include "util.h"
#include "main.h"
#include "item.h"
-#include "items.h"
-#include "songs.h"
+#include "constants/items.h"
+#include "constants/songs.h"
#include "sound.h"
-#include "moves.h"
+#include "constants/moves.h"
#include "window.h"
#include "m4a.h"
#include "palette.h"
@@ -23,7 +23,7 @@
#include "string_util.h"
#include "bg.h"
#include "reshow_battle_screen.h"
-#include "rng.h"
+#include "random.h"
#include "pokeball.h"
#include "data2.h"
@@ -83,7 +83,7 @@ static void OpponentHandleBallThrow(void);
static void OpponentHandlePause(void);
static void OpponentHandleMoveAnimation(void);
static void OpponentHandlePrintString(void);
-static void OpponentHandlePrintStringPlayerOnly(void);
+static void OpponentHandlePrintSelectionString(void);
static void OpponentHandleChooseAction(void);
static void OpponentHandleUnknownYesNoBox(void);
static void OpponentHandleChooseMove(void);
@@ -109,7 +109,7 @@ static void OpponentHandleCmd39(void);
static void OpponentHandleCmd40(void);
static void OpponentHandleHitAnimation(void);
static void OpponentHandleCmd42(void);
-static void OpponentHandleEffectivenessSound(void);
+static void OpponentHandlePlaySE(void);
static void OpponentHandlePlayFanfareOrBGM(void);
static void OpponentHandleFaintingCry(void);
static void OpponentHandleIntroSlide(void);
@@ -155,7 +155,7 @@ static void (*const sOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
OpponentHandlePause,
OpponentHandleMoveAnimation,
OpponentHandlePrintString,
- OpponentHandlePrintStringPlayerOnly,
+ OpponentHandlePrintSelectionString,
OpponentHandleChooseAction,
OpponentHandleUnknownYesNoBox,
OpponentHandleChooseMove,
@@ -181,7 +181,7 @@ static void (*const sOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
OpponentHandleCmd40,
OpponentHandleHitAnimation,
OpponentHandleCmd42,
- OpponentHandleEffectivenessSound,
+ OpponentHandlePlaySE,
OpponentHandlePlayFanfareOrBGM,
OpponentHandleFaintingCry,
OpponentHandleIntroSlide,
@@ -318,11 +318,11 @@ static void sub_805F560(void)
bool32 sp = FALSE;
bool32 r10 = FALSE;
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x8 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x1)
sub_8172EF0(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
- if (!(gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) && !(gBattleTypeFlags & BATTLE_TYPE_MULTI) && IsDoubleBattle() && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x8 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].field_1_x1)
+ if (!(gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) && !(gBattleTypeFlags & BATTLE_TYPE_MULTI) && IsDoubleBattle() && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].field_1_x1)
sub_8172EF0(gActiveBank ^ BIT_MON, &gEnemyParty[gBattlePartyID[gActiveBank ^ BIT_MON]]);
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x8 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x8)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].ballAnimActive)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x80)
{
@@ -453,18 +453,18 @@ static void DoHitAnimBlinkSpriteEffect(void)
{
u8 spriteId = gBankSpriteIds[gActiveBank];
- if (gSprites[spriteId].data1 == 32)
+ if (gSprites[spriteId].data[1] == 32)
{
- gSprites[spriteId].data1 = 0;
+ gSprites[spriteId].data[1] = 0;
gSprites[spriteId].invisible = 0;
gDoingBattleAnim = FALSE;
OpponentBufferExecCompleted();
}
else
{
- if ((gSprites[spriteId].data1 % 4) == 0)
+ if ((gSprites[spriteId].data[1] % 4) == 0)
gSprites[spriteId].invisible ^= 1;
- gSprites[spriteId].data1++;
+ gSprites[spriteId].data[1]++;
}
}
@@ -509,11 +509,11 @@ static void sub_805FD00(void)
static void sub_805FDF0(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x8)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive)
sub_8172EF0(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
if (gSprites[gUnknown_03005D7C[gActiveBank]].callback == SpriteCallbackDummy
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x8)
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive)
{
DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBank]]);
SetBankEnemyShadowSpriteCallback(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
@@ -1151,13 +1151,13 @@ static void OpponentHandleLoadMonSprite(void)
sub_806A068(species, GetBankIdentity(gActiveBank));
gBankSpriteIds[gActiveBank] = CreateSprite(&gUnknown_0202499C,
- sub_80A5C6C(gActiveBank, 2),
+ GetBankPosition(gActiveBank, 2),
GetBankSpriteDefault_Y(gActiveBank),
sub_80A82E4(gActiveBank));
gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240;
- gSprites[gBankSpriteIds[gActiveBank]].data0 = gActiveBank;
- gSprites[gBankSpriteIds[gActiveBank]].data2 = species;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = gActiveBank;
+ gSprites[gBankSpriteIds[gActiveBank]].data[2] = species;
gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], gBattleMonForms[gActiveBank]);
@@ -1186,15 +1186,15 @@ static void sub_80613DC(u8 bank, bool8 dontClearSubstituteBit)
sub_806A068(species, GetBankIdentity(bank));
gBankSpriteIds[bank] = CreateSprite(&gUnknown_0202499C,
- sub_80A5C6C(bank, 2),
+ GetBankPosition(bank, 2),
GetBankSpriteDefault_Y(bank),
sub_80A82E4(bank));
- gSprites[gBankSpriteIds[bank]].data0 = bank;
- gSprites[gBankSpriteIds[bank]].data2 = species;
+ gSprites[gBankSpriteIds[bank]].data[0] = bank;
+ gSprites[gBankSpriteIds[bank]].data[2] = species;
- gSprites[gUnknown_03005D7C[bank]].data1 = gBankSpriteIds[bank];
- gSprites[gUnknown_03005D7C[bank]].data2 = bank;
+ gSprites[gUnknown_03005D7C[bank]].data[1] = gBankSpriteIds[bank];
+ gSprites[gUnknown_03005D7C[bank]].data[2] = bank;
gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
@@ -1203,7 +1203,7 @@ static void sub_80613DC(u8 bank, bool8 dontClearSubstituteBit)
gSprites[gBankSpriteIds[bank]].invisible = TRUE;
gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
- gSprites[gUnknown_03005D7C[bank]].data0 = sub_80753E8(0, 0xFE);
+ gSprites[gUnknown_03005D7C[bank]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_OPPONENT_SENDOUT);
}
static void OpponentHandleReturnMonToBall(void)
@@ -1321,7 +1321,7 @@ static void OpponentHandleDrawTrainerPic(void)
sub_80A82E4(gActiveBank));
gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240;
- gSprites[gBankSpriteIds[gActiveBank]].data0 = 2;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 2;
gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
gSprites[gBankSpriteIds[gActiveBank]].oam.affineParam = trainerPicId;
gSprites[gBankSpriteIds[gActiveBank]].callback = sub_805D7AC;
@@ -1391,7 +1391,7 @@ static void OpponentHandleTrainerSlide(void)
gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 96;
gSprites[gBankSpriteIds[gActiveBank]].pos1.x += 32;
- gSprites[gBankSpriteIds[gActiveBank]].data0 = -2;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
gSprites[gBankSpriteIds[gActiveBank]].oam.affineParam = trainerPicId;
gSprites[gBankSpriteIds[gActiveBank]].callback = sub_805D7AC;
@@ -1402,9 +1402,9 @@ static void OpponentHandleTrainerSlide(void)
static void OpponentHandleTrainerSlideBack(void)
{
oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
- gSprites[gBankSpriteIds[gActiveBank]].data0 = 35;
- gSprites[gBankSpriteIds[gActiveBank]].data2 = 280;
- gSprites[gBankSpriteIds[gActiveBank]].data4 = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35;
+ gSprites[gBankSpriteIds[gActiveBank]].data[2] = 280;
+ gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80A6EEC;
StoreSpriteCallbackInData6(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy);
gBattleBankFunc[gActiveBank] = sub_805F240;
@@ -1537,7 +1537,7 @@ static void OpponentHandlePrintString(void)
sub_81A57E4(gActiveBank, *stringId);
}
-static void OpponentHandlePrintStringPlayerOnly(void)
+static void OpponentHandlePrintSelectionString(void)
{
OpponentBufferExecCompleted();
}
@@ -1815,7 +1815,7 @@ static void OpponentHandleHitAnimation(void)
else
{
gDoingBattleAnim = TRUE;
- gSprites[gBankSpriteIds[gActiveBank]].data1 = 0;
+ gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
DoHitAnimHealthboxEffect(gActiveBank);
gBattleBankFunc[gActiveBank] = DoHitAnimBlinkSpriteEffect;
}
@@ -1826,7 +1826,7 @@ static void OpponentHandleCmd42(void)
OpponentBufferExecCompleted();
}
-static void OpponentHandleEffectivenessSound(void)
+static void OpponentHandlePlaySE(void)
{
s8 pan;
@@ -1876,9 +1876,9 @@ static void OpponentHandleIntroTrainerBallThrow(void)
oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
- gSprites[gBankSpriteIds[gActiveBank]].data0 = 35;
- gSprites[gBankSpriteIds[gActiveBank]].data2 = 280;
- gSprites[gBankSpriteIds[gActiveBank]].data4 = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35;
+ gSprites[gBankSpriteIds[gActiveBank]].data[2] = 280;
+ gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80A6EEC;
StoreSpriteCallbackInData6(&gSprites[gBankSpriteIds[gActiveBank]], sub_806280C);
diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c
index 16c62c53b..e497dbfe2 100644
--- a/src/battle_controller_player.c
+++ b/src/battle_controller_player.c
@@ -10,10 +10,10 @@
#include "util.h"
#include "main.h"
#include "item.h"
-#include "items.h"
-#include "songs.h"
+#include "constants/items.h"
+#include "constants/songs.h"
#include "sound.h"
-#include "moves.h"
+#include "constants/moves.h"
#include "window.h"
#include "m4a.h"
#include "palette.h"
@@ -22,7 +22,7 @@
#include "string_util.h"
#include "bg.h"
#include "reshow_battle_screen.h"
-#include "rng.h"
+#include "random.h"
#include "pokeball.h"
#include "data2.h"
@@ -102,7 +102,7 @@ static void PlayerHandleBallThrowAnim(void);
static void PlayerHandlePause(void);
static void PlayerHandleMoveAnimation(void);
static void PlayerHandlePrintString(void);
-static void PlayerHandlePrintStringPlayerOnly(void);
+static void PlayerHandlePrintSelectionString(void);
static void PlayerHandleChooseAction(void);
static void PlayerHandleUnknownYesNoBox(void);
static void PlayerHandleChooseMove(void);
@@ -128,7 +128,7 @@ static void PlayerHandleCmd39(void);
static void PlayerHandleCmd40(void);
static void PlayerHandleHitAnimation(void);
static void PlayerHandleCmd42(void);
-static void PlayerHandleEffectivenessSound(void);
+static void PlayerHandlePlaySE(void);
static void PlayerHandlePlayFanfareOrBGM(void);
static void PlayerHandleFaintingCry(void);
static void PlayerHandleIntroSlide(void);
@@ -189,7 +189,7 @@ static void (*const sPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
PlayerHandlePause,
PlayerHandleMoveAnimation,
PlayerHandlePrintString,
- PlayerHandlePrintStringPlayerOnly,
+ PlayerHandlePrintSelectionString,
PlayerHandleChooseAction,
PlayerHandleUnknownYesNoBox,
PlayerHandleChooseMove,
@@ -215,7 +215,7 @@ static void (*const sPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
PlayerHandleCmd40,
PlayerHandleHitAnimation,
PlayerHandleCmd42,
- PlayerHandleEffectivenessSound,
+ PlayerHandlePlaySE,
PlayerHandlePlayFanfareOrBGM,
PlayerHandleFaintingCry,
PlayerHandleIntroSlide,
@@ -1023,12 +1023,12 @@ static void sub_8058B40(void)
bool32 r9 = FALSE;
bool32 r8 = FALSE;
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x8)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive)
sub_8172EF0(gActiveBank, &gPlayerParty[gBattlePartyID[gActiveBank]]);
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x8)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].ballAnimActive)
sub_8172EF0(gActiveBank ^ BIT_MON, &gPlayerParty[gBattlePartyID[gActiveBank ^ BIT_MON]]);
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x8 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x8)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].ballAnimActive)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x80)
{
@@ -1127,13 +1127,13 @@ static void sub_8058FC0(void)
static void sub_805902C(void)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x8)
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive)
{
sub_8172EF0(gActiveBank, &gPlayerParty[gBattlePartyID[gActiveBank]]);
}
if (gSprites[gUnknown_03005D7C[gActiveBank]].callback == SpriteCallbackDummy
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x8)
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive)
{
DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBank]]);
UpdateHealthboxAttribute(gHealthBoxesIds[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], HEALTHBOX_ALL);
@@ -1431,18 +1431,18 @@ static void DoHitAnimBlinkSpriteEffect(void)
{
u8 spriteId = gBankSpriteIds[gActiveBank];
- if (gSprites[spriteId].data1 == 32)
+ if (gSprites[spriteId].data[1] == 32)
{
- gSprites[spriteId].data1 = 0;
+ gSprites[spriteId].data[1] = 0;
gSprites[spriteId].invisible = 0;
gDoingBattleAnim = FALSE;
PlayerBufferExecCompleted();
}
else
{
- if ((gSprites[spriteId].data1 % 4) == 0)
+ if ((gSprites[spriteId].data[1] % 4) == 0)
gSprites[spriteId].invisible ^= 1;
- gSprites[spriteId].data1++;
+ gSprites[spriteId].data[1]++;
}
}
@@ -2237,15 +2237,15 @@ static void sub_805B258(u8 bank, bool8 dontClearSubstituteBit)
gBankSpriteIds[bank] = CreateSprite(
&gUnknown_0202499C,
- sub_80A5C6C(bank, 2),
+ GetBankPosition(bank, 2),
GetBankSpriteDefault_Y(bank),
sub_80A82E4(bank));
- gSprites[gUnknown_03005D7C[bank]].data1 = gBankSpriteIds[bank];
- gSprites[gUnknown_03005D7C[bank]].data2 = bank;
+ gSprites[gUnknown_03005D7C[bank]].data[1] = gBankSpriteIds[bank];
+ gSprites[gUnknown_03005D7C[bank]].data[2] = bank;
- gSprites[gBankSpriteIds[bank]].data0 = bank;
- gSprites[gBankSpriteIds[bank]].data2 = species;
+ gSprites[gBankSpriteIds[bank]].data[0] = bank;
+ gSprites[gBankSpriteIds[bank]].data[2] = species;
gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
@@ -2253,7 +2253,7 @@ static void sub_805B258(u8 bank, bool8 dontClearSubstituteBit)
gSprites[gBankSpriteIds[bank]].invisible = TRUE;
gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
- gSprites[gUnknown_03005D7C[bank]].data0 = sub_80753E8(0, 0xFF);
+ gSprites[gUnknown_03005D7C[bank]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_PLAYER_SENDOUT);
}
static void PlayerHandleReturnMonToBall(void)
@@ -2358,7 +2358,7 @@ static void PlayerHandleDrawTrainerPic(void)
gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 240;
gSprites[gBankSpriteIds[gActiveBank]].pos2.y = 48;
- gSprites[gBankSpriteIds[gActiveBank]].data0 = -2;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
gSprites[gBankSpriteIds[gActiveBank]].callback = sub_805D7AC;
gSprites[gBankSpriteIds[gActiveBank]].oam.affineMode = 0;
gSprites[gBankSpriteIds[gActiveBank]].hFlip = 1;
@@ -2372,7 +2372,7 @@ static void PlayerHandleDrawTrainerPic(void)
gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 240;
- gSprites[gBankSpriteIds[gActiveBank]].data0 = -2;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
gSprites[gBankSpriteIds[gActiveBank]].callback = sub_805D7AC;
}
@@ -2411,7 +2411,7 @@ static void PlayerHandleTrainerSlide(void)
gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -96;
- gSprites[gBankSpriteIds[gActiveBank]].data0 = 2;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 2;
gSprites[gBankSpriteIds[gActiveBank]].callback = sub_805D7AC;
gBattleBankFunc[gActiveBank] = CompleteOnBankSpriteCallbackDummy2;
@@ -2420,9 +2420,9 @@ static void PlayerHandleTrainerSlide(void)
static void PlayerHandleTrainerSlideBack(void)
{
oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
- gSprites[gBankSpriteIds[gActiveBank]].data0 = 50;
- gSprites[gBankSpriteIds[gActiveBank]].data2 = -40;
- gSprites[gBankSpriteIds[gActiveBank]].data4 = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 50;
+ gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40;
+ gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80A6EEC;
StoreSpriteCallbackInData6(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy);
StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1);
@@ -2444,8 +2444,8 @@ static void PlayerHandleFaintAnimation(void)
gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
PlaySE12WithPanning(SE_POKE_DEAD, PAN_SIDE_PLAYER);
- gSprites[gBankSpriteIds[gActiveBank]].data1 = 0;
- gSprites[gBankSpriteIds[gActiveBank]].data2 = 5;
+ gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
+ gSprites[gBankSpriteIds[gActiveBank]].data[2] = 5;
gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8039C00;
gBattleBankFunc[gActiveBank] = sub_80596A8;
}
@@ -2576,7 +2576,7 @@ static void PlayerHandlePrintString(void)
sub_81A57E4(gActiveBank, *stringId);
}
-static void PlayerHandlePrintStringPlayerOnly(void)
+static void PlayerHandlePrintSelectionString(void)
{
if (GetBankSide(gActiveBank) == SIDE_PLAYER)
PlayerHandlePrintString();
@@ -2902,7 +2902,7 @@ static void PlayerHandleHitAnimation(void)
else
{
gDoingBattleAnim = TRUE;
- gSprites[gBankSpriteIds[gActiveBank]].data1 = 0;
+ gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
DoHitAnimHealthboxEffect(gActiveBank);
gBattleBankFunc[gActiveBank] = DoHitAnimBlinkSpriteEffect;
}
@@ -2913,7 +2913,7 @@ static void PlayerHandleCmd42(void)
PlayerBufferExecCompleted();
}
-static void PlayerHandleEffectivenessSound(void)
+static void PlayerHandlePlaySE(void)
{
s8 pan;
@@ -2963,11 +2963,11 @@ static void PlayerHandleIntroTrainerBallThrow(void)
oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
- gSprites[gBankSpriteIds[gActiveBank]].data0 = 50;
- gSprites[gBankSpriteIds[gActiveBank]].data2 = -40;
- gSprites[gBankSpriteIds[gActiveBank]].data4 = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 50;
+ gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40;
+ gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80A6EEC;
- gSprites[gBankSpriteIds[gActiveBank]].data5 = gActiveBank;
+ gSprites[gBankSpriteIds[gActiveBank]].data[5] = gActiveBank;
StoreSpriteCallbackInData6(&gSprites[gBankSpriteIds[gActiveBank]], sub_805CC00);
StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1);
@@ -2988,7 +2988,7 @@ static void PlayerHandleIntroTrainerBallThrow(void)
void sub_805CC00(struct Sprite *sprite)
{
- u8 bank = sprite->data5;
+ u8 bank = sprite->data[5];
FreeSpriteOamMatrix(sprite);
FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum));
diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c
index 0cd34442a..eb57297da 100644
--- a/src/battle_controller_player_partner.c
+++ b/src/battle_controller_player_partner.c
@@ -9,7 +9,7 @@
#include "link.h"
#include "util.h"
#include "main.h"
-#include "songs.h"
+#include "constants/songs.h"
#include "sound.h"
#include "window.h"
#include "m4a.h"
@@ -78,7 +78,7 @@ static void PlayerPartnerHandleBallThrowAnim(void);
static void PlayerPartnerHandlePause(void);
static void PlayerPartnerHandleMoveAnimation(void);
static void PlayerPartnerHandlePrintString(void);
-static void PlayerPartnerHandlePrintStringPlayerOnly(void);
+static void PlayerPartnerHandlePrintSelectionString(void);
static void PlayerPartnerHandleChooseAction(void);
static void PlayerPartnerHandleUnknownYesNoBox(void);
static void PlayerPartnerHandleChooseMove(void);
@@ -104,7 +104,7 @@ static void PlayerPartnerHandleCmd39(void);
static void PlayerPartnerHandleCmd40(void);
static void PlayerPartnerHandleHitAnimation(void);
static void PlayerPartnerHandleCmd42(void);
-static void PlayerPartnerHandleEffectivenessSound(void);
+static void PlayerPartnerHandlePlaySE(void);
static void PlayerPartnerHandlePlayFanfareOrBGM(void);
static void PlayerPartnerHandleFaintingCry(void);
static void PlayerPartnerHandleIntroSlide(void);
@@ -155,7 +155,7 @@ static void (*const sPlayerPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
PlayerPartnerHandlePause,
PlayerPartnerHandleMoveAnimation,
PlayerPartnerHandlePrintString,
- PlayerPartnerHandlePrintStringPlayerOnly,
+ PlayerPartnerHandlePrintSelectionString,
PlayerPartnerHandleChooseAction,
PlayerPartnerHandleUnknownYesNoBox,
PlayerPartnerHandleChooseMove,
@@ -181,7 +181,7 @@ static void (*const sPlayerPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
PlayerPartnerHandleCmd40,
PlayerPartnerHandleHitAnimation,
PlayerPartnerHandleCmd42,
- PlayerPartnerHandleEffectivenessSound,
+ PlayerPartnerHandlePlaySE,
PlayerPartnerHandlePlayFanfareOrBGM,
PlayerPartnerHandleFaintingCry,
PlayerPartnerHandleIntroSlide,
@@ -282,8 +282,8 @@ static void sub_81BAF48(void)
static void sub_81BB02C(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x8
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x8
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].ballAnimActive
&& gSprites[gUnknown_03005D7C[gActiveBank]].callback == SpriteCallbackDummy
&& gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy
&& ++gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_9 != 1)
@@ -539,18 +539,18 @@ static void DoHitAnimBlinkSpriteEffect(void)
{
u8 spriteId = gBankSpriteIds[gActiveBank];
- if (gSprites[spriteId].data1 == 32)
+ if (gSprites[spriteId].data[1] == 32)
{
- gSprites[spriteId].data1 = 0;
+ gSprites[spriteId].data[1] = 0;
gSprites[spriteId].invisible = 0;
gDoingBattleAnim = FALSE;
PlayerPartnerBufferExecCompleted();
}
else
{
- if ((gSprites[spriteId].data1 % 4) == 0)
+ if ((gSprites[spriteId].data[1] % 4) == 0)
gSprites[spriteId].invisible ^= 1;
- gSprites[spriteId].data1++;
+ gSprites[spriteId].data[1]++;
}
}
@@ -599,13 +599,13 @@ static void sub_81BB9F4(void)
static void sub_81BBAE8(void)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x8)
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive)
{
sub_8172EF0(gActiveBank, &gPlayerParty[gBattlePartyID[gActiveBank]]);
}
if (gSprites[gUnknown_03005D7C[gActiveBank]].callback == SpriteCallbackDummy
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x8)
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive)
{
DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBank]]);
gBattleBankFunc[gActiveBank] = sub_81BB9F4;
@@ -1236,11 +1236,11 @@ static void PlayerPartnerHandleLoadMonSprite(void)
sub_806A068(species, GetBankIdentity(gActiveBank));
gBankSpriteIds[gActiveBank] = CreateSprite(&gUnknown_0202499C,
- sub_80A5C6C(gActiveBank, 2),
+ GetBankPosition(gActiveBank, 2),
GetBankSpriteDefault_Y(gActiveBank),
sub_80A82E4(gActiveBank));
gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240;
- gSprites[gBankSpriteIds[gActiveBank]].data0 = gActiveBank;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = gActiveBank;
gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], gBattleMonForms[gActiveBank]);
gBattleBankFunc[gActiveBank] = sub_81BB1D4;
@@ -1267,15 +1267,15 @@ static void sub_81BD0E4(u8 bank, bool8 dontClearSubstituteBit)
gBankSpriteIds[bank] = CreateSprite(
&gUnknown_0202499C,
- sub_80A5C6C(bank, 2),
+ GetBankPosition(bank, 2),
GetBankSpriteDefault_Y(bank),
sub_80A82E4(bank));
- gSprites[gUnknown_03005D7C[bank]].data1 = gBankSpriteIds[bank];
- gSprites[gUnknown_03005D7C[bank]].data2 = bank;
+ gSprites[gUnknown_03005D7C[bank]].data[1] = gBankSpriteIds[bank];
+ gSprites[gUnknown_03005D7C[bank]].data[2] = bank;
- gSprites[gBankSpriteIds[bank]].data0 = bank;
- gSprites[gBankSpriteIds[bank]].data2 = species;
+ gSprites[gBankSpriteIds[bank]].data[0] = bank;
+ gSprites[gBankSpriteIds[bank]].data[2] = species;
gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
@@ -1283,7 +1283,7 @@ static void sub_81BD0E4(u8 bank, bool8 dontClearSubstituteBit)
gSprites[gBankSpriteIds[bank]].invisible = TRUE;
gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
- gSprites[gUnknown_03005D7C[bank]].data0 = sub_80753E8(0, 0xFF);
+ gSprites[gUnknown_03005D7C[bank]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_PLAYER_SENDOUT);
}
static void PlayerPartnerHandleReturnMonToBall(void)
@@ -1353,7 +1353,7 @@ static void PlayerPartnerHandleDrawTrainerPic(void)
gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 240;
- gSprites[gBankSpriteIds[gActiveBank]].data0 = -2;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
gSprites[gBankSpriteIds[gActiveBank]].callback = sub_805D7AC;
}
else // otherwise use front sprite
@@ -1365,7 +1365,7 @@ static void PlayerPartnerHandleDrawTrainerPic(void)
gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 240;
gSprites[gBankSpriteIds[gActiveBank]].pos2.y = 48;
- gSprites[gBankSpriteIds[gActiveBank]].data0 = -2;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
gSprites[gBankSpriteIds[gActiveBank]].callback = sub_805D7AC;
gSprites[gBankSpriteIds[gActiveBank]].oam.affineMode = 0;
gSprites[gBankSpriteIds[gActiveBank]].hFlip = 1;
@@ -1382,9 +1382,9 @@ static void PlayerPartnerHandleTrainerSlide(void)
static void PlayerPartnerHandleTrainerSlideBack(void)
{
oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
- gSprites[gBankSpriteIds[gActiveBank]].data0 = 35;
- gSprites[gBankSpriteIds[gActiveBank]].data2 = -40;
- gSprites[gBankSpriteIds[gActiveBank]].data4 = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35;
+ gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40;
+ gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80A6EEC;
StoreSpriteCallbackInData6(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy);
gBattleBankFunc[gActiveBank] = sub_81BAE98;
@@ -1405,8 +1405,8 @@ static void PlayerPartnerHandleFaintAnimation(void)
gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
PlaySE12WithPanning(SE_POKE_DEAD, PAN_SIDE_PLAYER);
- gSprites[gBankSpriteIds[gActiveBank]].data1 = 0;
- gSprites[gBankSpriteIds[gActiveBank]].data2 = 5;
+ gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
+ gSprites[gBankSpriteIds[gActiveBank]].data[2] = 5;
gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8039C00;
gBattleBankFunc[gActiveBank] = sub_81BB78C;
}
@@ -1519,7 +1519,7 @@ static void PlayerPartnerHandlePrintString(void)
gBattleBankFunc[gActiveBank] = CompleteOnInactiveTextPrinter2;
}
-static void PlayerPartnerHandlePrintStringPlayerOnly(void)
+static void PlayerPartnerHandlePrintSelectionString(void)
{
PlayerPartnerBufferExecCompleted();
}
@@ -1745,7 +1745,7 @@ static void PlayerPartnerHandleHitAnimation(void)
else
{
gDoingBattleAnim = TRUE;
- gSprites[gBankSpriteIds[gActiveBank]].data1 = 0;
+ gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
DoHitAnimHealthboxEffect(gActiveBank);
gBattleBankFunc[gActiveBank] = DoHitAnimBlinkSpriteEffect;
}
@@ -1756,7 +1756,7 @@ static void PlayerPartnerHandleCmd42(void)
PlayerPartnerBufferExecCompleted();
}
-static void PlayerPartnerHandleEffectivenessSound(void)
+static void PlayerPartnerHandlePlaySE(void)
{
s8 pan;
@@ -1806,11 +1806,11 @@ static void PlayerPartnerHandleIntroTrainerBallThrow(void)
oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
- gSprites[gBankSpriteIds[gActiveBank]].data0 = 50;
- gSprites[gBankSpriteIds[gActiveBank]].data2 = -40;
- gSprites[gBankSpriteIds[gActiveBank]].data4 = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 50;
+ gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40;
+ gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80A6EEC;
- gSprites[gBankSpriteIds[gActiveBank]].data5 = gActiveBank;
+ gSprites[gBankSpriteIds[gActiveBank]].data[5] = gActiveBank;
StoreSpriteCallbackInData6(&gSprites[gBankSpriteIds[gActiveBank]], sub_805CC00);
StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1);
diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c
index b55d644ac..8e2f31879 100644
--- a/src/battle_controller_recorded_opponent.c
+++ b/src/battle_controller_recorded_opponent.c
@@ -11,7 +11,7 @@
#include "link.h"
#include "util.h"
#include "main.h"
-#include "songs.h"
+#include "constants/songs.h"
#include "sound.h"
#include "window.h"
#include "m4a.h"
@@ -81,7 +81,7 @@ static void RecordedOpponentHandleBallThrowAnim(void);
static void RecordedOpponentHandlePause(void);
static void RecordedOpponentHandleMoveAnimation(void);
static void RecordedOpponentHandlePrintString(void);
-static void RecordedOpponentHandlePrintStringPlayerOnly(void);
+static void RecordedOpponentHandlePrintSelectionString(void);
static void RecordedOpponentHandleChooseAction(void);
static void RecordedOpponentHandleUnknownYesNoBox(void);
static void RecordedOpponentHandleChooseMove(void);
@@ -107,7 +107,7 @@ static void RecordedOpponentHandleCmd39(void);
static void RecordedOpponentHandleCmd40(void);
static void RecordedOpponentHandleHitAnimation(void);
static void RecordedOpponentHandleCmd42(void);
-static void RecordedOpponentHandleEffectivenessSound(void);
+static void RecordedOpponentHandlePlaySE(void);
static void RecordedOpponentHandlePlayFanfareOrBGM(void);
static void RecordedOpponentHandleFaintingCry(void);
static void RecordedOpponentHandleIntroSlide(void);
@@ -153,7 +153,7 @@ static void (*const sRecordedOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void
RecordedOpponentHandlePause,
RecordedOpponentHandleMoveAnimation,
RecordedOpponentHandlePrintString,
- RecordedOpponentHandlePrintStringPlayerOnly,
+ RecordedOpponentHandlePrintSelectionString,
RecordedOpponentHandleChooseAction,
RecordedOpponentHandleUnknownYesNoBox,
RecordedOpponentHandleChooseMove,
@@ -179,7 +179,7 @@ static void (*const sRecordedOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void
RecordedOpponentHandleCmd40,
RecordedOpponentHandleHitAnimation,
RecordedOpponentHandleCmd42,
- RecordedOpponentHandleEffectivenessSound,
+ RecordedOpponentHandlePlaySE,
RecordedOpponentHandlePlayFanfareOrBGM,
RecordedOpponentHandleFaintingCry,
RecordedOpponentHandleIntroSlide,
@@ -298,12 +298,12 @@ static void sub_818686C(void)
bool32 r9 = FALSE;
bool32 r8 = FALSE;
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x8)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive)
sub_8172EF0(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x8)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].ballAnimActive)
sub_8172EF0(gActiveBank ^ BIT_MON, &gEnemyParty[gBattlePartyID[gActiveBank ^ BIT_MON]]);
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x8 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x8)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].ballAnimActive)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x80)
{
@@ -449,18 +449,18 @@ static void DoHitAnimBlinkSpriteEffect(void)
{
u8 spriteId = gBankSpriteIds[gActiveBank];
- if (gSprites[spriteId].data1 == 32)
+ if (gSprites[spriteId].data[1] == 32)
{
- gSprites[spriteId].data1 = 0;
+ gSprites[spriteId].data[1] = 0;
gSprites[spriteId].invisible = 0;
gDoingBattleAnim = FALSE;
RecordedOpponentBufferExecCompleted();
}
else
{
- if ((gSprites[spriteId].data1 % 4) == 0)
+ if ((gSprites[spriteId].data[1] % 4) == 0)
gSprites[spriteId].invisible ^= 1;
- gSprites[spriteId].data1++;
+ gSprites[spriteId].data[1]++;
}
}
@@ -512,14 +512,14 @@ static void sub_8186F94(void)
static void sub_8187084(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x8
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive
&& !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80)
{
sub_8172EF0(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
}
if (gSprites[gUnknown_03005D7C[gActiveBank]].callback == SpriteCallbackDummy
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x8)
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive)
{
DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBank]]);
SetBankEnemyShadowSpriteCallback(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
@@ -1148,14 +1148,14 @@ static void RecordedOpponentHandleLoadMonSprite(void)
sub_806A068(species, GetBankIdentity(gActiveBank));
gBankSpriteIds[gActiveBank] = CreateSprite(&gUnknown_0202499C,
- sub_80A5C6C(gActiveBank, 2),
+ GetBankPosition(gActiveBank, 2),
GetBankSpriteDefault_Y(gActiveBank),
sub_80A82E4(gActiveBank));
gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240;
- gSprites[gBankSpriteIds[gActiveBank]].data0 = gActiveBank;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = gActiveBank;
gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], gBattleMonForms[gActiveBank]);
@@ -1183,15 +1183,15 @@ static void sub_81885D8(u8 bank, bool8 dontClearSubstituteBit)
sub_806A068(species, GetBankIdentity(bank));
gBankSpriteIds[bank] = CreateSprite(&gUnknown_0202499C,
- sub_80A5C6C(bank, 2),
+ GetBankPosition(bank, 2),
GetBankSpriteDefault_Y(bank),
sub_80A82E4(bank));
- gSprites[gUnknown_03005D7C[bank]].data1 = gBankSpriteIds[bank];
- gSprites[gUnknown_03005D7C[bank]].data2 = bank;
+ gSprites[gUnknown_03005D7C[bank]].data[1] = gBankSpriteIds[bank];
+ gSprites[gUnknown_03005D7C[bank]].data[2] = bank;
- gSprites[gBankSpriteIds[bank]].data0 = bank;
- gSprites[gBankSpriteIds[bank]].data2 = species;
+ gSprites[gBankSpriteIds[bank]].data[0] = bank;
+ gSprites[gBankSpriteIds[bank]].data[2] = species;
gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
@@ -1199,7 +1199,7 @@ static void sub_81885D8(u8 bank, bool8 dontClearSubstituteBit)
gSprites[gBankSpriteIds[bank]].invisible = TRUE;
gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
- gSprites[gUnknown_03005D7C[bank]].data0 = sub_80753E8(0, 0xFE);
+ gSprites[gUnknown_03005D7C[bank]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_OPPONENT_SENDOUT);
}
static void RecordedOpponentHandleReturnMonToBall(void)
@@ -1285,7 +1285,7 @@ static void RecordedOpponentHandleDrawTrainerPic(void)
sub_80A82E4(gActiveBank));
gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240;
- gSprites[gBankSpriteIds[gActiveBank]].data0 = 2;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 2;
gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
gSprites[gBankSpriteIds[gActiveBank]].oam.affineParam = trainerPicId;
gSprites[gBankSpriteIds[gActiveBank]].callback = sub_805D7AC;
@@ -1301,9 +1301,9 @@ static void RecordedOpponentHandleTrainerSlide(void)
static void RecordedOpponentHandleTrainerSlideBack(void)
{
oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
- gSprites[gBankSpriteIds[gActiveBank]].data0 = 35;
- gSprites[gBankSpriteIds[gActiveBank]].data2 = 280;
- gSprites[gBankSpriteIds[gActiveBank]].data4 = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35;
+ gSprites[gBankSpriteIds[gActiveBank]].data[2] = 280;
+ gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80A6EEC;
StoreSpriteCallbackInData6(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy);
gBattleBankFunc[gActiveBank] = sub_81865C8;
@@ -1435,7 +1435,7 @@ static void RecordedOpponentHandlePrintString(void)
gBattleBankFunc[gActiveBank] = CompleteOnInactiveTextPrinter;
}
-static void RecordedOpponentHandlePrintStringPlayerOnly(void)
+static void RecordedOpponentHandlePrintSelectionString(void)
{
RecordedOpponentBufferExecCompleted();
}
@@ -1614,7 +1614,7 @@ static void RecordedOpponentHandleHitAnimation(void)
else
{
gDoingBattleAnim = TRUE;
- gSprites[gBankSpriteIds[gActiveBank]].data1 = 0;
+ gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
DoHitAnimHealthboxEffect(gActiveBank);
gBattleBankFunc[gActiveBank] = DoHitAnimBlinkSpriteEffect;
}
@@ -1625,7 +1625,7 @@ static void RecordedOpponentHandleCmd42(void)
RecordedOpponentBufferExecCompleted();
}
-static void RecordedOpponentHandleEffectivenessSound(void)
+static void RecordedOpponentHandlePlaySE(void)
{
s8 pan;
@@ -1675,9 +1675,9 @@ static void RecordedOpponentHandleIntroTrainerBallThrow(void)
oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
- gSprites[gBankSpriteIds[gActiveBank]].data0 = 35;
- gSprites[gBankSpriteIds[gActiveBank]].data2 = 280;
- gSprites[gBankSpriteIds[gActiveBank]].data4 = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35;
+ gSprites[gBankSpriteIds[gActiveBank]].data[2] = 280;
+ gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80A6EEC;
StoreSpriteCallbackInData6(&gSprites[gBankSpriteIds[gActiveBank]], sub_818962C);
diff --git a/src/battle_controller_recorded_player.c b/src/battle_controller_recorded_player.c
index 78e7497a5..f558fde87 100644
--- a/src/battle_controller_recorded_player.c
+++ b/src/battle_controller_recorded_player.c
@@ -10,7 +10,7 @@
#include "link.h"
#include "util.h"
#include "main.h"
-#include "songs.h"
+#include "constants/songs.h"
#include "sound.h"
#include "window.h"
#include "m4a.h"
@@ -81,7 +81,7 @@ static void RecordedPlayerHandleBallThrowAnim(void);
static void RecordedPlayerHandlePause(void);
static void RecordedPlayerHandleMoveAnimation(void);
static void RecordedPlayerHandlePrintString(void);
-static void RecordedPlayerHandlePrintStringPlayerOnly(void);
+static void RecordedPlayerHandlePrintSelectionString(void);
static void RecordedPlayerHandleChooseAction(void);
static void RecordedPlayerHandleUnknownYesNoBox(void);
static void RecordedPlayerHandleChooseMove(void);
@@ -107,7 +107,7 @@ static void RecordedPlayerHandleCmd39(void);
static void RecordedPlayerHandleCmd40(void);
static void RecordedPlayerHandleHitAnimation(void);
static void RecordedPlayerHandleCmd42(void);
-static void RecordedPlayerHandleEffectivenessSound(void);
+static void RecordedPlayerHandlePlaySE(void);
static void RecordedPlayerHandlePlayFanfareOrBGM(void);
static void RecordedPlayerHandleFaintingCry(void);
static void RecordedPlayerHandleIntroSlide(void);
@@ -152,7 +152,7 @@ static void (*const sRecordedPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void)
RecordedPlayerHandlePause,
RecordedPlayerHandleMoveAnimation,
RecordedPlayerHandlePrintString,
- RecordedPlayerHandlePrintStringPlayerOnly,
+ RecordedPlayerHandlePrintSelectionString,
RecordedPlayerHandleChooseAction,
RecordedPlayerHandleUnknownYesNoBox,
RecordedPlayerHandleChooseMove,
@@ -178,7 +178,7 @@ static void (*const sRecordedPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void)
RecordedPlayerHandleCmd40,
RecordedPlayerHandleHitAnimation,
RecordedPlayerHandleCmd42,
- RecordedPlayerHandleEffectivenessSound,
+ RecordedPlayerHandlePlaySE,
RecordedPlayerHandlePlayFanfareOrBGM,
RecordedPlayerHandleFaintingCry,
RecordedPlayerHandleIntroSlide,
@@ -314,19 +314,19 @@ static void sub_8189D40(void)
if (GetBankIdentity(gActiveBank) == IDENTITY_PLAYER_MON1)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x8)
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive)
{
sub_8172EF0(gActiveBank, &gPlayerParty[gBattlePartyID[gActiveBank]]);
}
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x80
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x8)
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].ballAnimActive)
{
sub_8172EF0(gActiveBank ^ BIT_MON, &gPlayerParty[gBattlePartyID[gActiveBank ^ BIT_MON]]);
}
}
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x8
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x8)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].ballAnimActive)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].field_1_x80)
{
@@ -437,18 +437,18 @@ static void DoHitAnimBlinkSpriteEffect(void)
{
u8 spriteId = gBankSpriteIds[gActiveBank];
- if (gSprites[spriteId].data1 == 32)
+ if (gSprites[spriteId].data[1] == 32)
{
- gSprites[spriteId].data1 = 0;
+ gSprites[spriteId].data[1] = 0;
gSprites[spriteId].invisible = 0;
gDoingBattleAnim = FALSE;
RecordedPlayerBufferExecCompleted();
}
else
{
- if ((gSprites[spriteId].data1 % 4) == 0)
+ if ((gSprites[spriteId].data[1] % 4) == 0)
gSprites[spriteId].invisible ^= 1;
- gSprites[spriteId].data1++;
+ gSprites[spriteId].data[1]++;
}
}
@@ -497,13 +497,13 @@ static void sub_818A37C(void)
static void sub_818A470(void)
{
if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x8)
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive)
{
sub_8172EF0(gActiveBank, &gPlayerParty[gBattlePartyID[gActiveBank]]);
}
if (gSprites[gUnknown_03005D7C[gActiveBank]].callback == SpriteCallbackDummy
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x8)
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive)
{
DestroySprite(&gSprites[gUnknown_03005D7C[gActiveBank]]);
gBattleBankFunc[gActiveBank] = sub_818A37C;
@@ -1134,11 +1134,11 @@ static void RecordedPlayerHandleLoadMonSprite(void)
sub_806A068(species, GetBankIdentity(gActiveBank));
gBankSpriteIds[gActiveBank] = CreateSprite(&gUnknown_0202499C,
- sub_80A5C6C(gActiveBank, 2),
+ GetBankPosition(gActiveBank, 2),
GetBankSpriteDefault_Y(gActiveBank),
sub_80A82E4(gActiveBank));
gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240;
- gSprites[gBankSpriteIds[gActiveBank]].data0 = gActiveBank;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = gActiveBank;
gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], gBattleMonForms[gActiveBank]);
gBattleBankFunc[gActiveBank] = sub_818A064;
@@ -1165,15 +1165,15 @@ static void sub_818BA6C(u8 bank, bool8 dontClearSubstituteBit)
gBankSpriteIds[bank] = CreateSprite(
&gUnknown_0202499C,
- sub_80A5C6C(bank, 2),
+ GetBankPosition(bank, 2),
GetBankSpriteDefault_Y(bank),
sub_80A82E4(bank));
- gSprites[gUnknown_03005D7C[bank]].data1 = gBankSpriteIds[bank];
- gSprites[gUnknown_03005D7C[bank]].data2 = bank;
+ gSprites[gUnknown_03005D7C[bank]].data[1] = gBankSpriteIds[bank];
+ gSprites[gUnknown_03005D7C[bank]].data[2] = bank;
- gSprites[gBankSpriteIds[bank]].data0 = bank;
- gSprites[gBankSpriteIds[bank]].data2 = species;
+ gSprites[gBankSpriteIds[bank]].data[0] = bank;
+ gSprites[gBankSpriteIds[bank]].data[2] = species;
gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
@@ -1181,7 +1181,7 @@ static void sub_818BA6C(u8 bank, bool8 dontClearSubstituteBit)
gSprites[gBankSpriteIds[bank]].invisible = TRUE;
gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
- gSprites[gUnknown_03005D7C[bank]].data0 = sub_80753E8(0, 0xFF);
+ gSprites[gUnknown_03005D7C[bank]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_PLAYER_SENDOUT);
}
static void RecordedPlayerHandleReturnMonToBall(void)
@@ -1272,7 +1272,7 @@ static void RecordedPlayerHandleDrawTrainerPic(void)
gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 240;
gSprites[gBankSpriteIds[gActiveBank]].pos2.y = 48;
- gSprites[gBankSpriteIds[gActiveBank]].data0 = -2;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
gSprites[gBankSpriteIds[gActiveBank]].callback = sub_805D7AC;
gSprites[gBankSpriteIds[gActiveBank]].oam.affineMode = 0;
gSprites[gBankSpriteIds[gActiveBank]].hFlip = 1;
@@ -1285,7 +1285,7 @@ static void RecordedPlayerHandleDrawTrainerPic(void)
gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 240;
- gSprites[gBankSpriteIds[gActiveBank]].data0 = -2;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
gSprites[gBankSpriteIds[gActiveBank]].callback = sub_805D7AC;
}
@@ -1300,9 +1300,9 @@ static void RecordedPlayerHandleTrainerSlide(void)
static void RecordedPlayerHandleTrainerSlideBack(void)
{
oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
- gSprites[gBankSpriteIds[gActiveBank]].data0 = 35;
- gSprites[gBankSpriteIds[gActiveBank]].data2 = -40;
- gSprites[gBankSpriteIds[gActiveBank]].data4 = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35;
+ gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40;
+ gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80A6EEC;
StoreSpriteCallbackInData6(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy);
gBattleBankFunc[gActiveBank] = sub_81899F0;
@@ -1323,8 +1323,8 @@ static void RecordedPlayerHandleFaintAnimation(void)
gBattleSpritesDataPtr->healthBoxesData[gActiveBank].animationState = 0;
HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
PlaySE12WithPanning(SE_POKE_DEAD, -64);
- gSprites[gBankSpriteIds[gActiveBank]].data1 = 0;
- gSprites[gBankSpriteIds[gActiveBank]].data2 = 5;
+ gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
+ gSprites[gBankSpriteIds[gActiveBank]].data[2] = 5;
gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8039C00;
gBattleBankFunc[gActiveBank] = sub_818A114;
}
@@ -1437,7 +1437,7 @@ static void RecordedPlayerHandlePrintString(void)
gBattleBankFunc[gActiveBank] = CompleteOnInactiveTextPrinter;
}
-static void RecordedPlayerHandlePrintStringPlayerOnly(void)
+static void RecordedPlayerHandlePrintSelectionString(void)
{
RecordedPlayerBufferExecCompleted();
}
@@ -1633,7 +1633,7 @@ static void RecordedPlayerHandleHitAnimation(void)
else
{
gDoingBattleAnim = TRUE;
- gSprites[gBankSpriteIds[gActiveBank]].data1 = 0;
+ gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
DoHitAnimHealthboxEffect(gActiveBank);
gBattleBankFunc[gActiveBank] = DoHitAnimBlinkSpriteEffect;
}
@@ -1644,7 +1644,7 @@ static void RecordedPlayerHandleCmd42(void)
RecordedPlayerBufferExecCompleted();
}
-static void RecordedPlayerHandleEffectivenessSound(void)
+static void RecordedPlayerHandlePlaySE(void)
{
s8 pan;
@@ -1695,11 +1695,11 @@ static void RecordedPlayerHandleIntroTrainerBallThrow(void)
oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
- gSprites[gBankSpriteIds[gActiveBank]].data0 = 50;
- gSprites[gBankSpriteIds[gActiveBank]].data2 = -40;
- gSprites[gBankSpriteIds[gActiveBank]].data4 = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 50;
+ gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40;
+ gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80A6EEC;
- gSprites[gBankSpriteIds[gActiveBank]].data5 = gActiveBank;
+ gSprites[gBankSpriteIds[gActiveBank]].data[5] = gActiveBank;
StoreSpriteCallbackInData6(&gSprites[gBankSpriteIds[gActiveBank]], sub_805CC00);
StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1);
diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c
index a4f35bed1..db4670523 100644
--- a/src/battle_controller_safari.c
+++ b/src/battle_controller_safari.c
@@ -8,7 +8,7 @@
#include "link.h"
#include "util.h"
#include "main.h"
-#include "songs.h"
+#include "constants/songs.h"
#include "sound.h"
#include "window.h"
#include "m4a.h"
@@ -66,7 +66,7 @@ static void SafariHandleBallThrowAnim(void);
static void SafariHandlePause(void);
static void SafariHandleMoveAnimation(void);
static void SafariHandlePrintString(void);
-static void SafariHandlePrintStringPlayerOnly(void);
+static void SafariHandlePrintSelectionString(void);
static void SafariHandleChooseAction(void);
static void SafariHandleUnknownYesNoBox(void);
static void SafariHandleChooseMove(void);
@@ -92,7 +92,7 @@ static void SafariHandleCmd39(void);
static void SafariHandleCmd40(void);
static void SafariHandleHitAnimation(void);
static void SafariHandleCmd42(void);
-static void SafariHandleEffectivenessSound(void);
+static void SafariHandlePlaySE(void);
static void SafariHandlePlayFanfareOrBGM(void);
static void SafariHandleFaintingCry(void);
static void SafariHandleIntroSlide(void);
@@ -130,7 +130,7 @@ static void (*const sSafariBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
SafariHandlePause,
SafariHandleMoveAnimation,
SafariHandlePrintString,
- SafariHandlePrintStringPlayerOnly,
+ SafariHandlePrintSelectionString,
SafariHandleChooseAction,
SafariHandleUnknownYesNoBox,
SafariHandleChooseMove,
@@ -156,7 +156,7 @@ static void (*const sSafariBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
SafariHandleCmd40,
SafariHandleHitAnimation,
SafariHandleCmd42,
- SafariHandleEffectivenessSound,
+ SafariHandlePlaySE,
SafariHandlePlayFanfareOrBGM,
SafariHandleFaintingCry,
SafariHandleIntroSlide,
@@ -384,7 +384,7 @@ static void SafariHandleDrawTrainerPic(void)
30);
gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 240;
- gSprites[gBankSpriteIds[gActiveBank]].data0 = -2;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
gSprites[gBankSpriteIds[gActiveBank]].callback = sub_805D7AC;
gBattleBankFunc[gActiveBank] = CompleteOnBankSpriteCallbackDummy;
}
@@ -449,7 +449,7 @@ static void SafariHandlePrintString(void)
gBattleBankFunc[gActiveBank] = CompleteOnInactiveTextPrinter;
}
-static void SafariHandlePrintStringPlayerOnly(void)
+static void SafariHandlePrintSelectionString(void)
{
if (GetBankSide(gActiveBank) == SIDE_PLAYER)
SafariHandlePrintString();
@@ -607,7 +607,7 @@ static void SafariHandleCmd42(void)
SafariBufferExecCompleted();
}
-static void SafariHandleEffectivenessSound(void)
+static void SafariHandlePlaySE(void)
{
s8 pan;
diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c
index 4dac1d264..446027944 100644
--- a/src/battle_controller_wally.c
+++ b/src/battle_controller_wally.c
@@ -10,10 +10,10 @@
#include "util.h"
#include "main.h"
#include "item.h"
-#include "items.h"
-#include "songs.h"
+#include "constants/items.h"
+#include "constants/songs.h"
#include "sound.h"
-#include "moves.h"
+#include "constants/moves.h"
#include "window.h"
#include "m4a.h"
#include "palette.h"
@@ -22,7 +22,7 @@
#include "string_util.h"
#include "bg.h"
#include "reshow_battle_screen.h"
-#include "rng.h"
+#include "random.h"
#include "pokeball.h"
#include "data2.h"
#include "party_menu.h"
@@ -86,7 +86,7 @@ static void WallyHandleBallThrowAnim(void);
static void WallyHandlePause(void);
static void WallyHandleMoveAnimation(void);
static void WallyHandlePrintString(void);
-static void WallyHandlePrintStringPlayerOnly(void);
+static void WallyHandlePrintSelectionString(void);
static void WallyHandleChooseAction(void);
static void WallyHandleUnknownYesNoBox(void);
static void WallyHandleChooseMove(void);
@@ -112,7 +112,7 @@ static void WallyHandleCmd39(void);
static void WallyHandleCmd40(void);
static void WallyHandleHitAnimation(void);
static void WallyHandleCmd42(void);
-static void WallyHandleEffectivenessSound(void);
+static void WallyHandlePlaySE(void);
static void WallyHandlePlayFanfareOrBGM(void);
static void WallyHandleFaintingCry(void);
static void WallyHandleIntroSlide(void);
@@ -155,7 +155,7 @@ static void (*const sWallyBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
WallyHandlePause,
WallyHandleMoveAnimation,
WallyHandlePrintString,
- WallyHandlePrintStringPlayerOnly,
+ WallyHandlePrintSelectionString,
WallyHandleChooseAction,
WallyHandleUnknownYesNoBox,
WallyHandleChooseMove,
@@ -181,7 +181,7 @@ static void (*const sWallyBufferCommands[CONTROLLER_CMDS_COUNT])(void) =
WallyHandleCmd40,
WallyHandleHitAnimation,
WallyHandleCmd42,
- WallyHandleEffectivenessSound,
+ WallyHandlePlaySE,
WallyHandlePlayFanfareOrBGM,
WallyHandleFaintingCry,
WallyHandleIntroSlide,
@@ -321,13 +321,13 @@ static void CompleteOnChosenItem(void)
static void sub_816864C(void)
{
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x8)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive)
sub_8172EF0(gActiveBank, &gPlayerParty[gBattlePartyID[gActiveBank]]);
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x8)
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].ballAnimActive)
sub_8172EF0(gActiveBank ^ BIT_MON, &gPlayerParty[gBattlePartyID[gActiveBank ^ BIT_MON]]);
- if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].flag_x8
- && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].flag_x8
+ if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive
+ && !gBattleSpritesDataPtr->healthBoxesData[gActiveBank ^ BIT_MON].ballAnimActive
&& gSprites[gUnknown_03005D7C[gActiveBank]].callback == SpriteCallbackDummy
&& gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
{
@@ -396,18 +396,18 @@ static void DoHitAnimBlinkSpriteEffect(void)
{
u8 spriteId = gBankSpriteIds[gActiveBank];
- if (gSprites[spriteId].data1 == 32)
+ if (gSprites[spriteId].data[1] == 32)
{
- gSprites[spriteId].data1 = 0;
+ gSprites[spriteId].data[1] = 0;
gSprites[spriteId].invisible = 0;
gDoingBattleAnim = FALSE;
WallyBufferExecCompleted();
}
else
{
- if ((gSprites[spriteId].data1 % 4) == 0)
+ if ((gSprites[spriteId].data[1] % 4) == 0)
gSprites[spriteId].invisible ^= 1;
- gSprites[spriteId].data1++;
+ gSprites[spriteId].data[1]++;
}
}
@@ -1073,7 +1073,7 @@ static void WallyHandleDrawTrainerPic(void)
30);
gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 240;
- gSprites[gBankSpriteIds[gActiveBank]].data0 = -2;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
gSprites[gBankSpriteIds[gActiveBank]].callback = sub_805D7AC;
gBattleBankFunc[gActiveBank] = CompleteOnBankSpriteCallbackDummy;
}
@@ -1088,7 +1088,7 @@ static void WallyHandleTrainerSlide(void)
30);
gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -96;
- gSprites[gBankSpriteIds[gActiveBank]].data0 = 2;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 2;
gSprites[gBankSpriteIds[gActiveBank]].callback = sub_805D7AC;
gBattleBankFunc[gActiveBank] = CompleteOnBankSpriteCallbackDummy2;
}
@@ -1211,7 +1211,7 @@ static void WallyHandlePrintString(void)
gBattleBankFunc[gActiveBank] = CompleteOnInactiveTextPrinter;
}
-static void WallyHandlePrintStringPlayerOnly(void)
+static void WallyHandlePrintSelectionString(void)
{
if (GetBankSide(gActiveBank) == SIDE_PLAYER)
WallyHandlePrintString();
@@ -1408,7 +1408,7 @@ static void WallyHandleHitAnimation(void)
else
{
gDoingBattleAnim = TRUE;
- gSprites[gBankSpriteIds[gActiveBank]].data1 = 0;
+ gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
DoHitAnimHealthboxEffect(gActiveBank);
gBattleBankFunc[gActiveBank] = DoHitAnimBlinkSpriteEffect;
}
@@ -1419,7 +1419,7 @@ static void WallyHandleCmd42(void)
WallyBufferExecCompleted();
}
-static void WallyHandleEffectivenessSound(void)
+static void WallyHandlePlaySE(void)
{
PlaySE(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
WallyBufferExecCompleted();
@@ -1462,11 +1462,11 @@ static void WallyHandleIntroTrainerBallThrow(void)
oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
- gSprites[gBankSpriteIds[gActiveBank]].data0 = 50;
- gSprites[gBankSpriteIds[gActiveBank]].data2 = -40;
- gSprites[gBankSpriteIds[gActiveBank]].data4 = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 50;
+ gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40;
+ gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80A6EEC;
- gSprites[gBankSpriteIds[gActiveBank]].data5 = gActiveBank;
+ gSprites[gBankSpriteIds[gActiveBank]].data[5] = gActiveBank;
StoreSpriteCallbackInData6(&gSprites[gBankSpriteIds[gActiveBank]], sub_805CC00);
StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1);
@@ -1495,21 +1495,21 @@ static void sub_816AA80(u8 bank)
gUnknown_03005D7C[bank] = CreateInvisibleSpriteWithCallback(sub_805D714);
sub_806A068(species, GetBankIdentity(bank));
gBankSpriteIds[bank] = CreateSprite(&gUnknown_0202499C,
- sub_80A5C6C(bank, 2),
+ GetBankPosition(bank, 2),
GetBankSpriteDefault_Y(bank),
sub_80A82E4(bank));
- gSprites[gUnknown_03005D7C[bank]].data1 = gBankSpriteIds[bank];
- gSprites[gUnknown_03005D7C[bank]].data2 = bank;
+ gSprites[gUnknown_03005D7C[bank]].data[1] = gBankSpriteIds[bank];
+ gSprites[gUnknown_03005D7C[bank]].data[2] = bank;
- gSprites[gBankSpriteIds[bank]].data0 = bank;
- gSprites[gBankSpriteIds[bank]].data2 = species;
+ gSprites[gBankSpriteIds[bank]].data[0] = bank;
+ gSprites[gBankSpriteIds[bank]].data[2] = species;
gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
gSprites[gBankSpriteIds[bank]].invisible = TRUE;
gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
- gSprites[gUnknown_03005D7C[bank]].data0 = sub_80753E8(0, 0xFF);
+ gSprites[gUnknown_03005D7C[bank]].data[0] = DoPokeballSendOutAnimation(0, POKEBALL_PLAYER_SENDOUT);
}
static void sub_816AC04(u8 taskId)
diff --git a/src/battle_controllers.c b/src/battle_controllers.c
index 858540a9f..c6d47e71e 100644
--- a/src/battle_controllers.c
+++ b/src/battle_controllers.c
@@ -6,10 +6,10 @@
#include "battle_ai_script_commands.h"
#include "battle_anim.h"
#include "pokemon.h"
-#include "species.h"
+#include "constants/species.h"
#include "recorded_battle.h"
#include "util.h"
-#include "abilities.h"
+#include "constants/abilities.h"
#include "battle_message.h"
extern u32 gBattleTypeFlags;
@@ -38,7 +38,7 @@ extern u8 gEffectBank;
extern u16 gBattleWeather;
extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
extern u16 gCurrentMove;
-extern u16 gLastUsedMove;
+extern u16 gChosenMove;
extern u16 gLastUsedItem;
extern u8 gBattleOutcome;
extern u8 gLastUsedAbility;
@@ -1120,7 +1120,7 @@ void EmitPrintString(u8 bufferId, u16 stringID)
stringInfo = (struct StringInfoBattle*)(&gBattleBuffersTransferData[4]);
stringInfo->currentMove = gCurrentMove;
- stringInfo->lastMove = gLastUsedMove;
+ stringInfo->originallyUsedMove = gChosenMove;
stringInfo->lastItem = gLastUsedItem;
stringInfo->lastAbility = gLastUsedAbility;
stringInfo->scrActive = gBattleScripting.bank;
@@ -1140,10 +1140,10 @@ void EmitPrintString(u8 bufferId, u16 stringID)
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, sizeof(struct StringInfoBattle) + 4);
}
-void EmitPrintStringPlayerOnly(u8 bufferId, u16 stringID)
+void EmitPrintSelectionString(u8 bufferId, u16 stringID)
{
s32 i;
- struct StringInfoBattle* stringInfo;
+ struct StringInfoBattle *stringInfo;
gBattleBuffersTransferData[0] = CONTROLLER_PRINTSTRINGPLAYERONLY;
gBattleBuffersTransferData[1] = CONTROLLER_PRINTSTRINGPLAYERONLY;
@@ -1152,7 +1152,7 @@ void EmitPrintStringPlayerOnly(u8 bufferId, u16 stringID)
stringInfo = (struct StringInfoBattle*)(&gBattleBuffersTransferData[4]);
stringInfo->currentMove = gCurrentMove;
- stringInfo->lastMove = gLastUsedMove;
+ stringInfo->originallyUsedMove = gChosenMove;
stringInfo->lastItem = gLastUsedItem;
stringInfo->lastAbility = gLastUsedAbility;
stringInfo->scrActive = gBattleScripting.bank;
@@ -1427,7 +1427,7 @@ void EmitCmd42(u8 bufferId)
PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4);
}
-void EmitEffectivenessSound(u8 bufferId, u16 songId)
+void EmitPlaySE(u8 bufferId, u16 songId)
{
gBattleBuffersTransferData[0] = CONTROLLER_EFFECTIVENESSSOUND;
gBattleBuffersTransferData[1] = songId;
diff --git a/src/battle_dome_cards.c b/src/battle_dome_cards.c
index 9385417b4..d549856f2 100644
--- a/src/battle_dome_cards.c
+++ b/src/battle_dome_cards.c
@@ -4,7 +4,7 @@
#include "sprite.h"
#include "window.h"
#include "malloc.h"
-#include "species.h"
+#include "constants/species.h"
#include "palette.h"
#include "decompress.h"
#include "battle_dome_cards.h"
diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c
index 99a82f3ca..22be086f0 100644
--- a/src/battle_gfx_sfx_util.c
+++ b/src/battle_gfx_sfx_util.c
@@ -6,21 +6,21 @@
#include "battle_interface.h"
#include "main.h"
#include "malloc.h"
-#include "rng.h"
+#include "random.h"
#include "util.h"
#include "pokemon.h"
-#include "moves.h"
+#include "constants/moves.h"
#include "task.h"
#include "sprite.h"
#include "sound.h"
#include "m4a.h"
-#include "species.h"
+#include "constants/species.h"
#include "decompress.h"
#include "data2.h"
#include "palette.h"
#include "blend_palette.h"
#include "contest.h"
-#include "songs.h"
+#include "constants/songs.h"
extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200];
extern u8 gActiveBank;
@@ -332,7 +332,7 @@ static u16 BattlePalaceGetTargetRetValue(void)
void sub_805D714(struct Sprite *sprite)
{
- u8 spriteId = sprite->data1;
+ u8 spriteId = sprite->data[1];
if (!gSprites[spriteId].affineAnimEnded)
return;
@@ -367,7 +367,7 @@ void sub_805D7AC(struct Sprite *sprite)
{
if (!(gUnknown_020243FC & 1))
{
- sprite->pos2.x += sprite->data0;
+ sprite->pos2.x += sprite->data[0];
if (sprite->pos2.x == 0)
{
if (sprite->pos2.y != 0)
@@ -1134,7 +1134,7 @@ void sub_805EB9C(u8 affineMode)
}
}
-#define tBank data0
+#define tBank data[0]
void LoadAndCreateEnemyShadowSprites(void)
{
@@ -1143,14 +1143,14 @@ void LoadAndCreateEnemyShadowSprites(void)
LoadCompressedObjectPic(&gSpriteSheet_EnemyShadow);
bank = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
- gBattleSpritesDataPtr->healthBoxesData[bank].shadowSpriteId = CreateSprite(&gSpriteTemplate_EnemyShadow, sub_80A5C6C(bank, 0), sub_80A5C6C(bank, 1) + 29, 0xC8);
- gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].shadowSpriteId].data0 = bank;
+ gBattleSpritesDataPtr->healthBoxesData[bank].shadowSpriteId = CreateSprite(&gSpriteTemplate_EnemyShadow, GetBankPosition(bank, 0), GetBankPosition(bank, 1) + 29, 0xC8);
+ gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].shadowSpriteId].data[0] = bank;
if (IsDoubleBattle())
{
bank = GetBankByIdentity(IDENTITY_OPPONENT_MON2);
- gBattleSpritesDataPtr->healthBoxesData[bank].shadowSpriteId = CreateSprite(&gSpriteTemplate_EnemyShadow, sub_80A5C6C(bank, 0), sub_80A5C6C(bank, 1) + 29, 0xC8);
- gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].shadowSpriteId].data0 = bank;
+ gBattleSpritesDataPtr->healthBoxesData[bank].shadowSpriteId = CreateSprite(&gSpriteTemplate_EnemyShadow, GetBankPosition(bank, 0), GetBankPosition(bank, 1) + 29, 0xC8);
+ gSprites[gBattleSpritesDataPtr->healthBoxesData[bank].shadowSpriteId].data[0] = bank;
}
}
diff --git a/src/battle_interface.c b/src/battle_interface.c
index 240c64862..95f1a1111 100644
--- a/src/battle_interface.c
+++ b/src/battle_interface.c
@@ -8,13 +8,13 @@
#include "string_util.h"
#include "text.h"
#include "sound.h"
-#include "songs.h"
+#include "constants/songs.h"
#include "decompress.h"
#include "task.h"
#include "util.h"
#include "gpu_regs.h"
#include "battle_message.h"
-#include "species.h"
+#include "constants/species.h"
#include "pokedex.h"
#include "palette.h"
#include "international_string_util.h"
@@ -927,7 +927,7 @@ u8 CreateBankHealthboxSprites(u8 bank)
data6 = 2;
}
gSprites[healthboxSpriteId_1].oam.affineParam = healthboxSpriteId_2;
- gSprites[healthboxSpriteId_2].data5 = healthboxSpriteId_1;
+ gSprites[healthboxSpriteId_2].data[5] = healthboxSpriteId_1;
gSprites[healthboxSpriteId_2].callback = sub_8072924;
}
else
@@ -939,7 +939,7 @@ u8 CreateBankHealthboxSprites(u8 bank)
gSprites[healthboxSpriteId_1].oam.affineParam = healthboxSpriteId_2;
- gSprites[healthboxSpriteId_2].data5 = healthboxSpriteId_1;
+ gSprites[healthboxSpriteId_2].data[5] = healthboxSpriteId_1;
gSprites[healthboxSpriteId_2].oam.tileNum += 32;
gSprites[healthboxSpriteId_2].callback = sub_8072924;
@@ -952,7 +952,7 @@ u8 CreateBankHealthboxSprites(u8 bank)
gSprites[healthboxSpriteId_1].oam.affineParam = healthboxSpriteId_2;
- gSprites[healthboxSpriteId_2].data5 = healthboxSpriteId_1;
+ gSprites[healthboxSpriteId_2].data[5] = healthboxSpriteId_1;
gSprites[healthboxSpriteId_2].oam.tileNum += 32;
gSprites[healthboxSpriteId_2].callback = sub_8072924;
@@ -968,14 +968,14 @@ u8 CreateBankHealthboxSprites(u8 bank)
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_1), (void*)(OBJ_VRAM0 + unkSpritePtr->oam.tileNum * 32), 64);
- gSprites[healthboxSpriteId_1].data5 = unkSpriteId;
- gSprites[healthboxSpriteId_1].data6 = bank;
+ gSprites[healthboxSpriteId_1].data[5] = unkSpriteId;
+ gSprites[healthboxSpriteId_1].data[6] = bank;
gSprites[healthboxSpriteId_1].invisible = 1;
gSprites[healthboxSpriteId_2].invisible = 1;
- unkSpritePtr->data5 = healthboxSpriteId_1;
- unkSpritePtr->data6 = data6;
+ unkSpritePtr->data[5] = healthboxSpriteId_1;
+ unkSpritePtr->data[6] = data6;
unkSpritePtr->invisible = 1;
return healthboxSpriteId_1;
@@ -994,7 +994,7 @@ u8 CreateSafariPlayerHealthboxSprites(void)
gSprites[healthboxSpriteId_2].oam.tileNum += 64;
gSprites[healthboxSpriteId_1].oam.affineParam = healthboxSpriteId_2;
- gSprites[healthboxSpriteId_2].data5 = healthboxSpriteId_1;
+ gSprites[healthboxSpriteId_2].data[5] = healthboxSpriteId_1;
gSprites[healthboxSpriteId_2].callback = sub_8072924;
@@ -1008,9 +1008,9 @@ static const u8 *GetHealthboxElementGfxPtr(u8 elementId)
static void sub_80728B4(struct Sprite *sprite)
{
- u8 var = sprite->data5;
+ u8 var = sprite->data[5];
- switch (sprite->data6)
+ switch (sprite->data[6])
{
case 0:
sprite->pos1.x = gSprites[var].pos1.x + 16;
@@ -1033,7 +1033,7 @@ static void sub_80728B4(struct Sprite *sprite)
static void sub_8072924(struct Sprite *sprite)
{
- u8 otherSpriteId = sprite->data5;
+ u8 otherSpriteId = sprite->data[5];
sprite->pos1.x = gSprites[otherSpriteId].pos1.x + 64;
sprite->pos1.y = gSprites[otherSpriteId].pos1.y;
@@ -1054,14 +1054,14 @@ void SetBattleBarStruct(u8 bank, u8 healthboxSpriteId, s32 maxVal, s32 currVal,
void SetHealthboxSpriteInvisible(u8 healthboxSpriteId)
{
gSprites[healthboxSpriteId].invisible = 1;
- gSprites[gSprites[healthboxSpriteId].data5].invisible = 1;
+ gSprites[gSprites[healthboxSpriteId].data[5]].invisible = 1;
gSprites[gSprites[healthboxSpriteId].oam.affineParam].invisible = 1;
}
void SetHealthboxSpriteVisible(u8 healthboxSpriteId)
{
gSprites[healthboxSpriteId].invisible = 0;
- gSprites[gSprites[healthboxSpriteId].data5].invisible = 0;
+ gSprites[gSprites[healthboxSpriteId].data[5]].invisible = 0;
gSprites[gSprites[healthboxSpriteId].oam.affineParam].invisible = 0;
}
@@ -1074,7 +1074,7 @@ static void UpdateSpritePos(u8 spriteId, s16 x, s16 y)
void DestoryHealthboxSprite(u8 healthboxSpriteId)
{
DestroySprite(&gSprites[gSprites[healthboxSpriteId].oam.affineParam]);
- DestroySprite(&gSprites[gSprites[healthboxSpriteId].data5]);
+ DestroySprite(&gSprites[gSprites[healthboxSpriteId].data[5]]);
DestroySprite(&gSprites[healthboxSpriteId]);
}
@@ -1091,7 +1091,7 @@ void UpdateOamPriorityInAllHealthboxes(u8 priority)
{
u8 healthboxSpriteId_1 = gHealthBoxesIds[i];
u8 healthboxSpriteId_2 = gSprites[gHealthBoxesIds[i]].oam.affineParam;
- u8 healthboxSpriteId_3 = gSprites[gHealthBoxesIds[i]].data5;
+ u8 healthboxSpriteId_3 = gSprites[gHealthBoxesIds[i]].data[5];
gSprites[healthboxSpriteId_1].oam.priority = priority;
gSprites[healthboxSpriteId_2].oam.priority = priority;
@@ -1156,7 +1156,7 @@ static void UpdateLvlInHealthbox(u8 healthboxSpriteId, u8 lvl)
windowTileData = AddTextPrinterAndCreateWindowOnHealthbox(text, xPos, 3, 2, &windowId);
spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32;
- if (GetBankSide(gSprites[healthboxSpriteId].data6) == SIDE_PLAYER)
+ if (GetBankSide(gSprites[healthboxSpriteId].data[6]) == SIDE_PLAYER)
{
objVram = (void*)(OBJ_VRAM0);
if (!IsDoubleBattle())
@@ -1180,7 +1180,7 @@ void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent)
u8 text[32];
void *objVram;
- if (GetBankSide(gSprites[healthboxSpriteId].data6) == SIDE_PLAYER && !IsDoubleBattle())
+ if (GetBankSide(gSprites[healthboxSpriteId].data[6]) == SIDE_PLAYER && !IsDoubleBattle())
{
spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32;
if (maxOrCurrent != HP_CURRENT) // singles, max
@@ -1213,7 +1213,7 @@ void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent)
u8 bank;
memcpy(text, sUnknown_0832C3C4, sizeof(sUnknown_0832C3C4));
- bank = gSprites[healthboxSpriteId].data6;
+ bank = gSprites[healthboxSpriteId].data[6];
if (IsDoubleBattle() == TRUE || GetBankSide(bank) == SIDE_OPPONENT)
{
UpdateHpTextInHealthboxInDoubles(healthboxSpriteId, value, maxOrCurrent);
@@ -1223,7 +1223,7 @@ void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent)
u32 var;
u8 i;
- if (GetBankSide(gSprites[healthboxSpriteId].data6) == SIDE_PLAYER)
+ if (GetBankSide(gSprites[healthboxSpriteId].data[6]) == SIDE_PLAYER)
{
if (maxOrCurrent == HP_CURRENT)
var = 29;
@@ -1258,11 +1258,11 @@ static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8
u8 text[32];
void *objVram;
- if (GetBankSide(gSprites[healthboxSpriteId].data6) == SIDE_PLAYER)
+ if (GetBankSide(gSprites[healthboxSpriteId].data[6]) == SIDE_PLAYER)
{
- if (gBattleSpritesDataPtr->bankData[gSprites[healthboxSpriteId].data6].hpNumbersNoBars) // don't print text if only bars are visible
+ if (gBattleSpritesDataPtr->bankData[gSprites[healthboxSpriteId].data[6]].hpNumbersNoBars) // don't print text if only bars are visible
{
- spriteTileNum = gSprites[gSprites[healthboxSpriteId].data5].oam.tileNum * 32;
+ spriteTileNum = gSprites[gSprites[healthboxSpriteId].data[5]].oam.tileNum * 32;
objVram = (void*)(OBJ_VRAM0) + spriteTileNum;
if (maxOrCurrent != HP_CURRENT) // doubles, max hp
@@ -1292,7 +1292,7 @@ static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8
u8 bank;
memcpy(text, sUnknown_0832C3D8, sizeof(sUnknown_0832C3D8));
- bank = gSprites[healthboxSpriteId].data6;
+ bank = gSprites[healthboxSpriteId].data[6];
if (gBattleSpritesDataPtr->bankData[bank].hpNumbersNoBars) // don't print text if only bars are visible
{
@@ -1304,7 +1304,7 @@ static void UpdateHpTextInHealthboxInDoubles(u8 healthboxSpriteId, s16 value, u8
if (maxOrCurrent == HP_CURRENT)
var = 0;
- r7 = gSprites[healthboxSpriteId].data5;
+ r7 = gSprites[healthboxSpriteId].data[5];
txtPtr = ConvertIntToDecimalStringN(text + 6, value, STR_CONV_MODE_RIGHT_ALIGN, 3);
if (!maxOrCurrent)
StringCopy(txtPtr, gText_Slash);
@@ -1354,7 +1354,7 @@ static void sub_80730D4(u8 healthboxSpriteId, struct Pokemon *mon)
u8 i, var, nature, healthboxSpriteId_2;
memcpy(text, sUnknown_0832C3C4, sizeof(sUnknown_0832C3C4));
- barFontGfx = &gMonSpritesGfxPtr->barFontGfx[0x520 + (GetBankIdentity(gSprites[healthboxSpriteId].data6) * 384)];
+ barFontGfx = &gMonSpritesGfxPtr->barFontGfx[0x520 + (GetBankIdentity(gSprites[healthboxSpriteId].data[6]) * 384)];
var = 5;
nature = GetNature(mon);
StringCopy(text + 6, gNatureNamePointers[nature]);
@@ -1385,7 +1385,7 @@ static void sub_80730D4(u8 healthboxSpriteId, struct Pokemon *mon)
barFontGfx += 0x20;
}
- healthboxSpriteId_2 = gSprites[healthboxSpriteId].data5;
+ healthboxSpriteId_2 = gSprites[healthboxSpriteId].data[5];
ConvertIntToDecimalStringN(text + 6, gBattleStruct->field_7C, STR_CONV_MODE_RIGHT_ALIGN, 2);
ConvertIntToDecimalStringN(text + 9, gBattleStruct->field_7B, STR_CONV_MODE_RIGHT_ALIGN, 2);
text[5] = CHAR_SPACE;
@@ -1434,7 +1434,7 @@ void SwapHpBarsWithHpText(void)
if (noBars == TRUE) // bars to text
{
- spriteId = gSprites[gHealthBoxesIds[i]].data5;
+ spriteId = gSprites[gHealthBoxesIds[i]].data[5];
CpuFill32(0, (void*)(OBJ_VRAM0 + gSprites[spriteId].oam.tileNum * 32), 0x100);
UpdateHpTextInHealthboxInDoubles(gHealthBoxesIds[i], GetMonData(&gPlayerParty[gBattlePartyID[i]], MON_DATA_HP), HP_CURRENT);
@@ -1457,7 +1457,7 @@ void SwapHpBarsWithHpText(void)
}
else
{
- spriteId = gSprites[gHealthBoxesIds[i]].data5;
+ spriteId = gSprites[gHealthBoxesIds[i]].data[5];
CpuFill32(0, (void *)(OBJ_VRAM0 + gSprites[spriteId].oam.tileNum * 32), 0x100);
UpdateHpTextInHealthboxInDoubles(gHealthBoxesIds[i], GetMonData(&gEnemyParty[gBattlePartyID[i]], MON_DATA_HP), HP_CURRENT);
@@ -1472,7 +1472,7 @@ void SwapHpBarsWithHpText(void)
UpdateHealthboxAttribute(gHealthBoxesIds[i], &gEnemyParty[gBattlePartyID[i]], HEALTHBOX_NICK);
}
}
- gSprites[gHealthBoxesIds[i]].data7 ^= 1;
+ gSprites[gHealthBoxesIds[i]].data[7] ^= 1;
}
}
}
@@ -1524,7 +1524,7 @@ u8 CreatePartyStatusSummarySprites(u8 bank, struct HpAndStatus *partyInfo, u8 ar
barSpriteId = CreateSprite(&sStatusSummaryBarSpriteTemplates[isOpponent], bar_X, bar_Y, 10);
SetSubspriteTables(&gSprites[barSpriteId], sStatusSummaryBar_SubspriteTable);
gSprites[barSpriteId].pos2.x = bar_pos2_X;
- gSprites[barSpriteId].data0 = bar_data0;
+ gSprites[barSpriteId].data[0] = bar_data0;
if (isOpponent)
{
@@ -1549,22 +1549,22 @@ u8 CreatePartyStatusSummarySprites(u8 bank, struct HpAndStatus *partyInfo, u8 ar
gSprites[ballIconSpritesIds[i]].pos2.y = 0;
}
- gSprites[ballIconSpritesIds[i]].data0 = barSpriteId;
+ gSprites[ballIconSpritesIds[i]].data[0] = barSpriteId;
if (!isOpponent)
{
gSprites[ballIconSpritesIds[i]].pos1.x += 10 * i + 24;
- gSprites[ballIconSpritesIds[i]].data1 = i * 7 + 10;
+ gSprites[ballIconSpritesIds[i]].data[1] = i * 7 + 10;
gSprites[ballIconSpritesIds[i]].pos2.x = 120;
}
else
{
gSprites[ballIconSpritesIds[i]].pos1.x -= 10 * (5 - i) + 24;
- gSprites[ballIconSpritesIds[i]].data1 = (6 - i) * 7 + 10;
+ gSprites[ballIconSpritesIds[i]].data[1] = (6 - i) * 7 + 10;
gSprites[ballIconSpritesIds[i]].pos2.x = -120;
}
- gSprites[ballIconSpritesIds[i]].data2 = isOpponent;
+ gSprites[ballIconSpritesIds[i]].data[2] = isOpponent;
}
if (GetBankSide(bank) == SIDE_PLAYER)
@@ -1576,7 +1576,7 @@ u8 CreatePartyStatusSummarySprites(u8 bank, struct HpAndStatus *partyInfo, u8 ar
if (partyInfo[i].hp == 0xFFFF) // empty slot or an egg
{
gSprites[ballIconSpritesIds[i]].oam.tileNum += 1;
- gSprites[ballIconSpritesIds[i]].data7 = 1;
+ gSprites[ballIconSpritesIds[i]].data[7] = 1;
}
else if (partyInfo[i].hp == 0) // fainted mon
{
@@ -1595,7 +1595,7 @@ u8 CreatePartyStatusSummarySprites(u8 bank, struct HpAndStatus *partyInfo, u8 ar
if (partyInfo[j].hp == 0xFFFF) // empty slot or an egg
{
gSprites[ballIconSpritesIds[var]].oam.tileNum += 1;
- gSprites[ballIconSpritesIds[var]].data7 = 1;
+ gSprites[ballIconSpritesIds[var]].data[7] = 1;
var--;
continue;
}
@@ -1624,7 +1624,7 @@ u8 CreatePartyStatusSummarySprites(u8 bank, struct HpAndStatus *partyInfo, u8 ar
if (partyInfo[i].hp == 0xFFFF) // empty slot or an egg
{
gSprites[ballIconSpritesIds[var]].oam.tileNum += 1;
- gSprites[ballIconSpritesIds[var]].data7 = 1;
+ gSprites[ballIconSpritesIds[var]].data[7] = 1;
}
else if (partyInfo[i].hp == 0) // fainted mon
{
@@ -1644,7 +1644,7 @@ u8 CreatePartyStatusSummarySprites(u8 bank, struct HpAndStatus *partyInfo, u8 ar
if (partyInfo[j].hp == 0xFFFF) // empty slot or an egg
{
gSprites[ballIconSpritesIds[i]].oam.tileNum += 1;
- gSprites[ballIconSpritesIds[i]].data7 = 1;
+ gSprites[ballIconSpritesIds[i]].data[7] = 1;
i++;
continue;
}
@@ -1714,21 +1714,21 @@ void sub_8073C30(u8 taskId)
{
if (GetBankSide(bank) != SIDE_PLAYER)
{
- gSprites[sp[5 - i]].data1 = 7 * i;
- gSprites[sp[5 - i]].data3 = 0;
- gSprites[sp[5 - i]].data4 = 0;
+ gSprites[sp[5 - i]].data[1] = 7 * i;
+ gSprites[sp[5 - i]].data[3] = 0;
+ gSprites[sp[5 - i]].data[4] = 0;
gSprites[sp[5 - i]].callback = sub_8074158;
}
else
{
- gSprites[sp[i]].data1 = 7 * i;
- gSprites[sp[i]].data3 = 0;
- gSprites[sp[i]].data4 = 0;
+ gSprites[sp[i]].data[1] = 7 * i;
+ gSprites[sp[i]].data[3] = 0;
+ gSprites[sp[i]].data[4] = 0;
gSprites[sp[i]].callback = sub_8074158;
}
}
- gSprites[r10].data0 /= 2;
- gSprites[r10].data1 = 0;
+ gSprites[r10].data[0] /= 2;
+ gSprites[r10].data[1] = 0;
gSprites[r10].callback = sub_8074090;
SetSubspriteTables(&gSprites[r10], sUnknown_0832C2CC);
gTasks[taskId].func = sub_8073E08;
@@ -1831,17 +1831,17 @@ static void sub_8073F98(u8 taskId)
static void SpriteCB_StatusSummaryBar(struct Sprite *sprite)
{
if (sprite->pos2.x != 0)
- sprite->pos2.x += sprite->data0;
+ sprite->pos2.x += sprite->data[0];
}
static void sub_8074090(struct Sprite *sprite)
{
- sprite->data1 += 32;
- if (sprite->data0 > 0)
- sprite->pos2.x += sprite->data1 >> 4;
+ sprite->data[1] += 32;
+ if (sprite->data[0] > 0)
+ sprite->pos2.x += sprite->data[1] >> 4;
else
- sprite->pos2.x -= sprite->data1 >> 4;
- sprite->data1 &= 0xF;
+ sprite->pos2.x -= sprite->data[1] >> 4;
+ sprite->data[1] &= 0xF;
}
static void SpriteCB_StatusSummaryBallsOnBattleStart(struct Sprite *sprite)
@@ -1850,16 +1850,16 @@ static void SpriteCB_StatusSummaryBallsOnBattleStart(struct Sprite *sprite)
u16 var2;
s8 pan;
- if (sprite->data1 > 0)
+ if (sprite->data[1] > 0)
{
- sprite->data1--;
+ sprite->data[1]--;
return;
}
- var1 = sprite->data2;
- var2 = sprite->data3;
+ var1 = sprite->data[2];
+ var2 = sprite->data[3];
var2 += 56;
- sprite->data3 = var2 & 0xFFF0;
+ sprite->data[3] = var2 & 0xFFF0;
if (var1 != 0)
{
@@ -1880,7 +1880,7 @@ static void SpriteCB_StatusSummaryBallsOnBattleStart(struct Sprite *sprite)
if (var1 != 0)
pan = PAN_SIDE_PLAYER;
- if (sprite->data7 != 0)
+ if (sprite->data[7] != 0)
PlaySE2WithPanning(SE_TB_KARA, pan);
else
PlaySE1WithPanning(SE_TB_KON, pan);
@@ -1894,15 +1894,15 @@ static void sub_8074158(struct Sprite *sprite)
u8 var1;
u16 var2;
- if (sprite->data1 > 0)
+ if (sprite->data[1] > 0)
{
- sprite->data1--;
+ sprite->data[1]--;
return;
}
- var1 = sprite->data2;
- var2 = sprite->data3;
+ var1 = sprite->data[2];
+ var2 = sprite->data[3];
var2 += 56;
- sprite->data3 = var2 & 0xFFF0;
+ sprite->data[3] = var2 & 0xFFF0;
if (var1 != 0)
sprite->pos2.x += var2 >> 4;
else
@@ -1917,7 +1917,7 @@ static void sub_8074158(struct Sprite *sprite)
static void SpriteCB_StatusSummaryBallsOnSwitchout(struct Sprite *sprite)
{
- u8 barSpriteId = sprite->data0;
+ u8 barSpriteId = sprite->data[0];
sprite->pos2.x = gSprites[barSpriteId].pos2.x;
sprite->pos2.y = gSprites[barSpriteId].pos2.y;
@@ -1964,7 +1964,7 @@ static void UpdateNickInHealthbox(u8 healthboxSpriteId, struct Pokemon *mon)
spriteTileNum = gSprites[healthboxSpriteId].oam.tileNum * 32;
- if (GetBankSide(gSprites[healthboxSpriteId].data6) == SIDE_PLAYER)
+ if (GetBankSide(gSprites[healthboxSpriteId].data[6]) == SIDE_PLAYER)
{
sub_8075198((void*)(0x6010040 + spriteTileNum), windowTileData, 6);
ptr = (void*)(OBJ_VRAM0);
@@ -1991,13 +1991,13 @@ static void TryAddPokeballIconToHealthbox(u8 healthboxSpriteId, bool8 noStatus)
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
return;
- bank = gSprites[healthboxSpriteId].data6;
+ bank = gSprites[healthboxSpriteId].data[6];
if (GetBankSide(bank) == SIDE_PLAYER)
return;
if (!GetSetPokedexFlag(SpeciesToNationalPokedexNum(GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES)), FLAG_GET_CAUGHT))
return;
- healthboxSpriteId_2 = gSprites[healthboxSpriteId].data5;
+ healthboxSpriteId_2 = gSprites[healthboxSpriteId].data[5];
if (noStatus)
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_70), (void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId_2].oam.tileNum + 8) * 32), 32);
@@ -2014,8 +2014,8 @@ static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId)
s16 tileNumAdder;
u8 statusPalId;
- bank = gSprites[healthboxSpriteId].data6;
- healthboxSpriteId_2 = gSprites[healthboxSpriteId].data5;
+ bank = gSprites[healthboxSpriteId].data[6];
+ healthboxSpriteId_2 = gSprites[healthboxSpriteId].data[5];
if (GetBankSide(bank) == SIDE_PLAYER)
{
status = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_STATUS);
@@ -2178,12 +2178,12 @@ static void UpdateLeftNoOfBallsTextOnHealthbox(u8 healthboxSpriteId)
void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elementId)
{
s32 maxHp, currHp;
- u8 bank = gSprites[healthboxSpriteId].data6;
+ u8 bank = gSprites[healthboxSpriteId].data[6];
if (elementId == HEALTHBOX_ALL && !IsDoubleBattle())
GetBankSide(bank); // pointless function call
- if (GetBankSide(gSprites[healthboxSpriteId].data6) == SIDE_PLAYER)
+ if (GetBankSide(gSprites[healthboxSpriteId].data[6]) == SIDE_PLAYER)
{
u8 isDoubles;
@@ -2308,7 +2308,7 @@ static void sub_8074B9C(u8 bank, u8 whichBar)
}
for (i = 0; i < 6; i++)
{
- u8 healthboxSpriteId_2 = gSprites[gBattleSpritesDataPtr->battleBars[bank].healthboxSpriteId].data5;
+ u8 healthboxSpriteId_2 = gSprites[gBattleSpritesDataPtr->battleBars[bank].healthboxSpriteId].data[5];
if (i < 2)
CpuCopy32(GetHealthboxElementGfxPtr(barElementId) + array[i] * 32,
(void*)(OBJ_VRAM0 + (gSprites[healthboxSpriteId_2].oam.tileNum + 2 + i) * 32), 32);
diff --git a/src/battle_message.c b/src/battle_message.c
index 9c37cf646..cab4bdf42 100644
--- a/src/battle_message.c
+++ b/src/battle_message.c
@@ -2,16 +2,17 @@
#include "battle.h"
#include "battle_message.h"
#include "battle_string_ids.h"
-#include "moves.h"
+#include "constants/moves.h"
#include "text.h"
#include "string_util.h"
-#include "items.h"
+#include "constants/items.h"
#include "event_data.h"
#include "link.h"
#include "item.h"
#include "window.h"
#include "palette.h"
#include "battle_controllers.h"
+#include "battle_setup.h"
extern u16 gLastUsedItem;
extern u8 gLastUsedAbility;
@@ -54,12 +55,10 @@ extern void sub_81D5554(u8 *txtPtr, u16 trainerId); // pokenav
extern void GetEreaderTrainerName(u8 *txtPtr);
extern void sub_81A36D0(u8 arg0, u16 trainerId); // battle_frontier_2
extern void sub_81D572C(u8 arg0, u16 trainerId); // pokenav
-extern const u8* GetTrainer1LoseText(void); // battle_setup
-extern const u8* GetTrainer2LoseText(void); // battle_setup
extern void GetFrontierTrainerName(u8 *dst, u16 trainerId);
extern s32 GetStringCenterAlignXOffsetWithLetterSpacing(u8 fontId, const u8 *str, s32 totalWidth, s16 letterSpacing);
extern u8 GetTextSpeedInRecordedBattle(void);
-extern u8 sav2_get_text_speed(void);
+extern u8 GetPlayerTextSpeed(void);
// this file's functions
static void sub_814F8F8(u8 *textPtr);
@@ -932,58 +931,237 @@ const u16 gSandStormHailDmgStringIds[] =
STRINGID_PKMNBUFFETEDBYSANDSTORM, STRINGID_PKMNPELTEDBYHAIL
};
-// todo once battlescripts are dumped
-const u16 gTooLazyToSplitThemStringIds[] =
+const u16 gSandStormHailEndStringIds[] =
{
- STRINGID_SANDSTORMSUBSIDED, STRINGID_HAILSTOPPED, STRINGID_RAINCONTINUES, STRINGID_DOWNPOURCONTINUES,
- STRINGID_RAINSTOPPED, STRINGID_PKMNPROTECTEDITSELF2, STRINGID_PKMNBRACEDITSELF,
- STRINGID_BUTITFAILED, STRINGID_BUTITFAILED, STRINGID_PKMNRAISEDDEF,
- STRINGID_PKMNRAISEDDEFALITTLE, STRINGID_PKMNRAISEDSPDEF, STRINGID_PKMNRAISEDSPDEFALITTLE,
- STRINGID_PKMNCOVEREDBYVEIL, STRINGID_PKMNSEEDED, STRINGID_PKMNEVADEDATTACK,
+ STRINGID_SANDSTORMSUBSIDED, STRINGID_HAILSTOPPED
+};
+
+const u16 gRainContinuesStringIds[] =
+{
+ STRINGID_RAINCONTINUES, STRINGID_DOWNPOURCONTINUES, STRINGID_RAINSTOPPED
+};
+
+const u16 gProtectLikeUsedStringIds[] =
+{
+ STRINGID_PKMNPROTECTEDITSELF2, STRINGID_PKMNBRACEDITSELF, STRINGID_BUTITFAILED
+};
+
+const u16 gReflectLightScreenSafeguardStringIds[] =
+{
+ STRINGID_BUTITFAILED, STRINGID_PKMNRAISEDDEF, STRINGID_PKMNRAISEDDEFALITTLE,
+ STRINGID_PKMNRAISEDSPDEF, STRINGID_PKMNRAISEDSPDEFALITTLE, STRINGID_PKMNCOVEREDBYVEIL
+};
+
+const u16 gLeechSeedStringIds[] =
+{
+ STRINGID_PKMNSEEDED, STRINGID_PKMNEVADEDATTACK,
STRINGID_ITDOESNTAFFECT, STRINGID_PKMNSAPPEDBYLEECHSEED, STRINGID_ITSUCKEDLIQUIDOOZE,
- STRINGID_PKMNWENTTOSLEEP, STRINGID_PKMNSLEPTHEALTHY, STRINGID_PKMNMAKINGUPROAR,
- STRINGID_PKMNCALMEDDOWN, STRINGID_PKMNSTOCKPILED, STRINGID_PKMNCANTSTOCKPILE,
- STRINGID_PKMNWOKEUP, STRINGID_PKMNWOKEUPINUPROAR, STRINGID_FAILEDTOSWALLOW,
- STRINGID_PKMNHPFULL, STRINGID_PKMNCANTSLEEPINUPROAR2, STRINGID_UPROARKEPTPKMNAWAKE,
- STRINGID_PKMNSTAYEDAWAKEUSING, STRINGID_PKMNSSTATCHANGED, STRINGID_PKMNSSTATCHANGED2,
- STRINGID_STATSWONTINCREASE, STRINGID_EMPTYSTRING3, STRINGID_USINGXTHEYOFZN,
- STRINGID_PKMNUSEDXTOGETPUMPED, STRINGID_PKMNSSTATCHANGED3, STRINGID_PKMNSSTATCHANGED4,
- STRINGID_STATSWONTDECREASE, STRINGID_EMPTYSTRING3, STRINGID_PKMNWHIPPEDWHIRLWIND,
- STRINGID_PKMNTOOKSUNLIGHT, STRINGID_PKMNLOWEREDHEAD, STRINGID_PKMNISGLOWING,
- STRINGID_PKMNFLEWHIGH, STRINGID_PKMNDUGHOLE, STRINGID_PKMNHIDUNDERWATER,
- STRINGID_PKMNSPRANGUP, STRINGID_PKMNSQUEEZEDBYBIND, STRINGID_PKMNWRAPPEDBY,
- STRINGID_PKMNTRAPPEDINVORTEX, STRINGID_PKMNCLAMPED, STRINGID_PKMNTRAPPEDINVORTEX,
- STRINGID_PKMNTRAPPEDBYSANDTOMB, STRINGID_PKMNSHROUDEDINMIST, STRINGID_BUTITFAILED,
- STRINGID_PKMNGETTINGPUMPED, STRINGID_BUTITFAILED, STRINGID_PKMNTRANSFORMEDINTO,
- STRINGID_BUTITFAILED, STRINGID_PKMNMADESUBSTITUTE, STRINGID_TOOWEAKFORSUBSTITUTE,
- STRINGID_PKMNWASPOISONED, STRINGID_PKMNPOISONEDBY, STRINGID_PKMNWASPARALYZED,
- STRINGID_PKMNWASPARALYZEDBY, STRINGID_PKMNFELLASLEEP, STRINGID_PKMNMADESLEEP,
- STRINGID_PKMNWASBURNED, STRINGID_PKMNBURNEDBY, STRINGID_PKMNWASFROZEN,
- STRINGID_PKMNFROZENBY, STRINGID_PKMNWASDEFROSTED2, STRINGID_PKMNWASDEFROSTEDBY,
- STRINGID_ATTACKMISSED, STRINGID_PKMNUNAFFECTED, STRINGID_PKMNFELLINLOVE,
- STRINGID_PKMNSXINFATUATEDY, STRINGID_PKMNENERGYDRAINED, STRINGID_ITSUCKEDLIQUIDOOZE,
- STRINGID_ELECTRICITYWEAKENED, STRINGID_FIREWEAKENED, STRINGID_BELLCHIMED,
- STRINGID_BELLCHIMED, STRINGID_BELLCHIMED, STRINGID_BELLCHIMED,
- STRINGID_SOOTHINGAROMA, STRINGID_PKMNFORESAWATTACK, STRINGID_PKMNCHOSEXASDESTINY,
- STRINGID_PKMNBROKEFREE, STRINGID_ITAPPEAREDCAUGHT, STRINGID_AARGHALMOSTHADIT,
- STRINGID_SHOOTSOCLOSE, STRINGID_ITISRAINING, STRINGID_ITISRAINING,
+};
+
+const u16 gRestUsedStringIds[] =
+{
+ STRINGID_PKMNWENTTOSLEEP, STRINGID_PKMNSLEPTHEALTHY
+};
+
+const u16 gUproarOverTurnStringIds[] =
+{
+ STRINGID_PKMNMAKINGUPROAR, STRINGID_PKMNCALMEDDOWN
+};
+
+const u16 gStockpileUsedStringIds[] =
+{
+ STRINGID_PKMNSTOCKPILED, STRINGID_PKMNCANTSTOCKPILE,
+};
+
+const u16 gWokeUpStringIds[] =
+{
+ STRINGID_PKMNWOKEUP, STRINGID_PKMNWOKEUPINUPROAR
+};
+
+const u16 gSwallowFailStringIds[] =
+{
+ STRINGID_FAILEDTOSWALLOW, STRINGID_PKMNHPFULL
+};
+
+const u16 gUproarAwakeStringIds[] =
+{
+ STRINGID_PKMNCANTSLEEPINUPROAR2, STRINGID_UPROARKEPTPKMNAWAKE, STRINGID_PKMNSTAYEDAWAKEUSING
+};
+
+const u16 gStatUpStringIds[] =
+{
+ STRINGID_PKMNSSTATCHANGED, STRINGID_PKMNSSTATCHANGED2, STRINGID_STATSWONTINCREASE,
+ STRINGID_EMPTYSTRING3, STRINGID_USINGXTHEYOFZN, STRINGID_PKMNUSEDXTOGETPUMPED
+};
+
+const u16 gStatDownStringIds[] =
+{
+ STRINGID_PKMNSSTATCHANGED3, STRINGID_PKMNSSTATCHANGED4, STRINGID_STATSWONTDECREASE, STRINGID_EMPTYSTRING3
+};
+
+const u16 gFirstTurnOfTwoStringIds[] =
+{
+ STRINGID_PKMNWHIPPEDWHIRLWIND, STRINGID_PKMNTOOKSUNLIGHT, STRINGID_PKMNLOWEREDHEAD, STRINGID_PKMNISGLOWING,
+ STRINGID_PKMNFLEWHIGH, STRINGID_PKMNDUGHOLE, STRINGID_PKMNHIDUNDERWATER, STRINGID_PKMNSPRANGUP
+};
+
+const u16 gWrappedStringIds[] =
+{
+ STRINGID_PKMNSQUEEZEDBYBIND, STRINGID_PKMNWRAPPEDBY, STRINGID_PKMNTRAPPEDINVORTEX,
+ STRINGID_PKMNCLAMPED, STRINGID_PKMNTRAPPEDINVORTEX, STRINGID_PKMNTRAPPEDBYSANDTOMB
+};
+
+const u16 gMistUsedStringIds[] =
+{
+ STRINGID_PKMNSHROUDEDINMIST, STRINGID_BUTITFAILED
+};
+
+const u16 gFocusEnergyUsedStringIds[] =
+{
+ STRINGID_PKMNGETTINGPUMPED, STRINGID_BUTITFAILED
+};
+
+const u16 gTransformUsedStringIds[] =
+{
+ STRINGID_PKMNTRANSFORMEDINTO, STRINGID_BUTITFAILED
+};
+
+const u16 gSubsituteUsedStringIds[] =
+{
+ STRINGID_PKMNMADESUBSTITUTE, STRINGID_TOOWEAKFORSUBSTITUTE
+};
+
+const u16 gGotPoisonedStringIds[] =
+{
+ STRINGID_PKMNWASPOISONED, STRINGID_PKMNPOISONEDBY
+};
+
+const u16 gGotParalyzedStringIds[] =
+{
+ STRINGID_PKMNWASPARALYZED, STRINGID_PKMNWASPARALYZEDBY
+};
+
+const u16 gFellAsleepStringIds[] =
+{
+ STRINGID_PKMNFELLASLEEP, STRINGID_PKMNMADESLEEP,
+};
+
+const u16 gGotBurnedStringIds[] =
+{
+ STRINGID_PKMNWASBURNED, STRINGID_PKMNBURNEDBY
+};
+
+const u16 gGotFrozenStringIds[] =
+{
+ STRINGID_PKMNWASFROZEN, STRINGID_PKMNFROZENBY
+};
+
+const u16 gGotDefrostedStringIds[] =
+{
+ STRINGID_PKMNWASDEFROSTED2, STRINGID_PKMNWASDEFROSTEDBY
+};
+
+const u16 gKOFailedStringIds[] =
+{
+ STRINGID_ATTACKMISSED, STRINGID_PKMNUNAFFECTED
+};
+
+const u16 gAttractUsedStringIds[] =
+{
+ STRINGID_PKMNFELLINLOVE, STRINGID_PKMNSXINFATUATEDY
+};
+
+const u16 gLeechSeedDrainStringIds[] =
+{
+ STRINGID_PKMNENERGYDRAINED, STRINGID_ITSUCKEDLIQUIDOOZE
+};
+
+const u16 gSportsUsedStringIds[] =
+{
+ STRINGID_ELECTRICITYWEAKENED, STRINGID_FIREWEAKENED
+};
+
+const u16 gPartyStatusHealStringIds[] =
+{
+ STRINGID_BELLCHIMED, STRINGID_BELLCHIMED, STRINGID_BELLCHIMED, STRINGID_BELLCHIMED,
+ // interesting how there are four instances of the same string
+ STRINGID_SOOTHINGAROMA
+};
+
+const u16 gFutureMoveUsedStringIds[] =
+{
+ STRINGID_PKMNFORESAWATTACK, STRINGID_PKMNCHOSEXASDESTINY
+};
+
+const u16 gBallEscapeStringIds[] =
+{
+ STRINGID_PKMNBROKEFREE, STRINGID_ITAPPEAREDCAUGHT, STRINGID_AARGHALMOSTHADIT, STRINGID_SHOOTSOCLOSE
+};
+
+const u16 gWeatherContinuesStringIds[] =
+{
STRINGID_ITISRAINING, STRINGID_ITISRAINING, STRINGID_ITISRAINING,
STRINGID_ITISRAINING, STRINGID_ITISRAINING, STRINGID_ITISRAINING,
- STRINGID_SANDSTORMISRAGING, STRINGID_ITISRAINING, STRINGID_ITISRAINING,
- STRINGID_ITISRAINING, STRINGID_SUNLIGHTSTRONG, STRINGID_ITISRAINING,
- STRINGID_ITISRAINING, STRINGID_ITISRAINING, STRINGID_PKMNLOAFING,
- STRINGID_PKMNWONTOBEY, STRINGID_PKMNTURNEDAWAY, STRINGID_PKMNPRETENDNOTNOTICE,
- STRINGID_PKMNINCAPABLEOFPOWER, STRINGID_CREPTCLOSER, STRINGID_CANTGETCLOSER,
- STRINGID_PKMNCURIOUSABOUTX, STRINGID_PKMNENTHRALLEDBYX, STRINGID_PKMNIGNOREDX,
+ STRINGID_ITISRAINING, STRINGID_ITISRAINING, STRINGID_SANDSTORMISRAGING,
+ STRINGID_ITISRAINING, STRINGID_ITISRAINING, STRINGID_ITISRAINING,
+ STRINGID_SUNLIGHTSTRONG, STRINGID_ITISRAINING, STRINGID_ITISRAINING, STRINGID_ITISRAINING
+};
+
+const u16 gInobedientStringIds[] =
+{
+ STRINGID_PKMNLOAFING, STRINGID_PKMNWONTOBEY, STRINGID_PKMNTURNEDAWAY,
+ STRINGID_PKMNPRETENDNOTNOTICE, STRINGID_PKMNINCAPABLEOFPOWER
+};
+
+const u16 gSafariGetNearStringIds[] =
+{
+ STRINGID_CREPTCLOSER, STRINGID_CANTGETCLOSER
+};
+
+const u16 gSafariPokeblockResultStringIds[] =
+{
+ STRINGID_PKMNCURIOUSABOUTX, STRINGID_PKMNENTHRALLEDBYX, STRINGID_PKMNIGNOREDX
+};
+
+const u16 gTrainerItemCuredStatusStringIds[] =
+{
STRINGID_PKMNSITEMSNAPPEDOUT, STRINGID_PKMNSITEMCUREDPARALYSIS, STRINGID_PKMNSITEMDEFROSTEDIT,
- STRINGID_PKMNSITEMHEALEDBURN, STRINGID_PKMNSITEMCUREDPOISON, STRINGID_PKMNSITEMWOKEIT,
- STRINGID_PKMNSITEMCUREDPROBLEM, STRINGID_PKMNSITEMNORMALIZEDSTATUS, STRINGID_PKMNSXPREVENTSBURNS,
- STRINGID_PKMNSXPREVENTSYSZ, STRINGID_PKMNSXHADNOEFFECTONY, STRINGID_PKMNPREVENTSPARALYSISWITH,
- STRINGID_PKMNSXPREVENTSYSZ, STRINGID_PKMNSXHADNOEFFECTONY, STRINGID_PKMNPREVENTSPOISONINGWITH,
- STRINGID_PKMNSXPREVENTSYSZ, STRINGID_PKMNSXHADNOEFFECTONY, STRINGID_PKMNOBTAINEDX,
- STRINGID_PKMNOBTAINEDX2, STRINGID_PKMNOBTAINEDXYOBTAINEDZ, STRINGID_PKMNRAISEDFIREPOWERWITH,
- STRINGID_PKMNSXMADEYINEFFECTIVE, STRINGID_PKMNTRANSFERREDSOMEONESPC, STRINGID_PKMNTRANSFERREDLANETTESPC,
- STRINGID_PKMNBOXSOMEONESPCFULL, STRINGID_PKMNBOXLANETTESPCFULL,
+ STRINGID_PKMNSITEMHEALEDBURN, STRINGID_PKMNSITEMCUREDPOISON, STRINGID_PKMNSITEMWOKEIT
+};
+
+const u16 gBerryEffectStringIds[] =
+{
+ STRINGID_PKMNSITEMCUREDPROBLEM, STRINGID_PKMNSITEMNORMALIZEDSTATUS
+};
+
+const u16 gBRNPreventionStringIds[] =
+{
+ STRINGID_PKMNSXPREVENTSBURNS, STRINGID_PKMNSXPREVENTSYSZ, STRINGID_PKMNSXHADNOEFFECTONY
+};
+
+const u16 gPRLZPreventionStringIds[] =
+{
+ STRINGID_PKMNPREVENTSPARALYSISWITH, STRINGID_PKMNSXPREVENTSYSZ, STRINGID_PKMNSXHADNOEFFECTONY
+};
+
+const u16 gPSNPreventionStringIds[] =
+{
+ STRINGID_PKMNPREVENTSPOISONINGWITH, STRINGID_PKMNSXPREVENTSYSZ, STRINGID_PKMNSXHADNOEFFECTONY
+};
+
+const u16 gItemSwapStringIds[] =
+{
+ STRINGID_PKMNOBTAINEDX, STRINGID_PKMNOBTAINEDX2, STRINGID_PKMNOBTAINEDXYOBTAINEDZ
+};
+
+const u16 gFlashFireStringIds[] =
+{
+ STRINGID_PKMNRAISEDFIREPOWERWITH, STRINGID_PKMNSXMADEYINEFFECTIVE
+};
+
+const u16 gCaughtMonStringIds[] =
+{
+ STRINGID_PKMNTRANSFERREDSOMEONESPC, STRINGID_PKMNTRANSFERREDLANETTESPC, STRINGID_PKMNBOXSOMEONESPCFULL, STRINGID_PKMNBOXLANETTESPCFULL,
};
const u16 gTrappingMoves[] =
@@ -1102,9 +1280,10 @@ const u8 gText_PkmnGettingIntoPosition[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is
const u8 gText_PkmnBeganGrowlingDeeply[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} began growling deeply!");
const u8 gText_PkmnEagerForMore[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is eager for more!");
-const u16 gUnknown_085CCF0A[] =
+const u16 gStringIds_85CCF0A[] =
{
- 0x016E, 0x016F, 0x0170, 0x0171
+ STRINGID_GLINTAPPEARSINEYE, STRINGID_PKMNGETTINGINTOPOSITION,
+ STRINGID_PKMNBEGANGROWLINGDEEPLY, STRINGID_PKMNEAGERFORMORE
};
const u8 gText_RefIfNothingIsDecided[] = _("REFEREE: If nothing is decided in\n3 turns, we will go to judging!");
@@ -1452,9 +1631,9 @@ void BufferStringBattle(u16 stringID)
stringPtr = gText_AttackerUsedX;
break;
case STRINGID_BATTLEEND: // battle end
- if (gBattleTextBuff1[0] & BATTLE_OUTCOME_BIT_x80)
+ if (gBattleTextBuff1[0] & OUTCOME_LINK_BATTLE_RUN)
{
- gBattleTextBuff1[0] &= ~(BATTLE_OUTCOME_BIT_x80);
+ gBattleTextBuff1[0] &= ~(OUTCOME_LINK_BATTLE_RUN);
if (GetBankSide(gActiveBank) == SIDE_OPPONENT && gBattleTextBuff1[0] != BATTLE_DREW)
gBattleTextBuff1[0] ^= (BATTLE_LOST | BATTLE_WON);
@@ -1736,11 +1915,11 @@ u32 BattleStringExpandPlaceholders(const u8* src, u8* dst)
else
toCpy = gMoveNames[gStringInfo->currentMove];
break;
- case B_TXT_LAST_MOVE: // last used move name
- if (gStringInfo->lastMove > LAST_MOVE_INDEX)
+ case B_TXT_LAST_MOVE: // originally used move name
+ if (gStringInfo->originallyUsedMove > LAST_MOVE_INDEX)
toCpy = gText_UnknownMoveTypes[gBattleStruct->stringMoveType];
else
- toCpy = gMoveNames[gStringInfo->lastMove];
+ toCpy = gMoveNames[gStringInfo->originallyUsedMove];
break;
case B_TXT_LAST_ITEM: // last used item
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
@@ -1888,7 +2067,7 @@ u32 BattleStringExpandPlaceholders(const u8* src, u8* dst)
}
else
{
- toCpy = GetTrainer1LoseText();
+ toCpy = GetTrainerALoseText();
}
break;
case B_TXT_TRAINER1_WIN_TEXT: // trainerA win text
@@ -1985,7 +2164,7 @@ u32 BattleStringExpandPlaceholders(const u8* src, u8* dst)
}
else
{
- toCpy = GetTrainer2LoseText();
+ toCpy = GetTrainerBLoseText();
}
break;
case B_TXT_TRAINER2_WIN_TEXT:
@@ -2118,7 +2297,7 @@ static void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst)
StringGetEnd10(dst);
srcID += 3;
break;
- case B_BUFF_NEGATIVE_FLAVOUR: // flavour table
+ case B_BUFF_NEGATIVE_FLAVOR: // flavor table
StringAppend(dst, gPokeblockWasTooXStringTable[src[srcID + 1]]);
srcID += 2;
break;
@@ -2266,7 +2445,7 @@ void BattleHandleAddTextPrinter(const u8 *text, u8 arg1)
else if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
speed = sRecordedBattleTextSpeeds[GetTextSpeedInRecordedBattle()];
else
- speed = sav2_get_text_speed();
+ speed = GetPlayerTextSpeed();
gTextFlags.flag_0 = 1;
}
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index 6409ff56e..656f9f43a 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -1,21 +1,23 @@
#include "global.h"
#include "battle.h"
-#include "battle_move_effects.h"
+#include "constants/battle_move_effects.h"
#include "battle_message.h"
#include "battle_ai_script_commands.h"
-#include "moves.h"
-#include "abilities.h"
+#include "battle_scripts.h"
+#include "constants/moves.h"
+#include "constants/abilities.h"
#include "item.h"
-#include "items.h"
-#include "hold_effects.h"
+#include "constants/items.h"
+#include "constants/hold_effects.h"
#include "util.h"
#include "pokemon.h"
#include "calculate_base_damage.h"
-#include "rng.h"
+#include "random.h"
#include "battle_controllers.h"
#include "battle_interface.h"
-#include "species.h"
-#include "songs.h"
+#include "constants/species.h"
+#include "constants/songs.h"
+#include "constants/trainers.h"
#include "text.h"
#include "sound.h"
#include "pokedex.h"
@@ -73,10 +75,10 @@ extern u8 gCurrentActionFuncId;
extern u32 gHitMarker;
extern u8 gBattleMoveFlags;
extern u8 gBattleCommunication[];
-extern u16 gUnknown_02024250[4];
-extern u16 gUnknown_02024258[4];
-extern u16 gUnknown_02024260[4];
-extern u8 gUnknown_02024270[4];
+extern u16 gLastLandedMoves[4];
+extern u16 gLastHitByType[4];
+extern u16 gLastResultingMoves[4];
+extern u8 gLastHitBy[4];
extern u8 gStringBank;
extern u16 gDynamicBasePower;
extern u16 gLastUsedItem;
@@ -98,9 +100,9 @@ extern u8 gCurrentTurnActionNumber;
extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200];
extern u16 gLockedMoves[BATTLE_BANKS_COUNT];
extern u16 gPartnerTrainerId;
-extern u16 gLastUsedMove;
-extern u16 gUnknownMovesUsedByBanks[BATTLE_BANKS_COUNT];
-extern u16 gLastUsedMovesByBanks[BATTLE_BANKS_COUNT];
+extern u16 gChosenMove;
+extern u16 gLastPrintedMoves[BATTLE_BANKS_COUNT];
+extern u16 gLastMoves[BATTLE_BANKS_COUNT];
extern u16 gTrainerBattleOpponent_A;
extern u16 gTrainerBattleOpponent_B;
extern u8 gUnknown_020241E9;
@@ -146,88 +148,6 @@ extern u8 sub_813B21C(void);
extern u16 get_unknown_box_id(void);
extern void sub_80356D0(void);
-// BattleScripts
-extern const u8 BattleScript_MoveEnd[];
-extern const u8 BattleScript_NoPPForMove[];
-extern const u8 BattleScript_MagicCoatBounce[];
-extern const u8 BattleScript_TookAttack[];
-extern const u8 BattleScript_SnatchedMove[];
-extern const u8 BattleScript_Pausex20[];
-extern const u8 BattleScript_SubstituteFade[];
-extern const u8 BattleScript_HangedOnMsg[];
-extern const u8 BattleScript_OneHitKOMsg[];
-extern const u8 BattleScript_EnduredMsg[];
-extern const u8 BattleScript_PSNPrevention[];
-extern const u8 BattleScript_BRNPrevention[];
-extern const u8 BattleScript_PRLZPrevention[];
-extern const u8 BattleScript_FlinchPrevention[];
-extern const u8 BattleScript_StatUp[];
-extern const u8 BattleScript_StatDown[];
-extern const u8 BattleScript_NoItemSteal[];
-extern const u8 BattleScript_ItemSteal[];
-extern const u8 BattleScript_RapidSpinAway[];
-extern const u8 BattleScript_TargetPRLZHeal[];
-extern const u8 BattleScript_KnockedOff[];
-extern const u8 BattleScript_StickyHoldActivates[];
-extern const u8 BattleScript_AllStatsUp[];
-extern const u8 BattleScript_AtkDefDown[];
-extern const u8 BattleScript_SAtkDown2[];
-extern const u8 BattleScript_LevelUp[];
-extern const u8 BattleScript_WrapFree[];
-extern const u8 BattleScript_LeechSeedFree[];
-extern const u8 BattleScript_SpikesFree[];
-extern const u8 BattleScript_ButItFailed[];
-extern const u8 BattleScript_ObliviousPreventsAttraction[];
-extern const u8 BattleScript_MistProtected[];
-extern const u8 BattleScript_AbilityNoStatLoss[];
-extern const u8 BattleScript_AbilityNoSpecificStatLoss[];
-extern const u8 BattleScript_TrainerBallBlock[];
-extern const u8 BattleScript_WallyBallThrow[];
-extern const u8 BattleScript_SuccessBallThrow[];
-extern const u8 BattleScript_ShakeBallThrow[];
-extern const u8 BattleScript_FaintAttacker[];
-extern const u8 BattleScript_FaintTarget[];
-extern const u8 BattleScript_DestinyBondTakesLife[];
-extern const u8 BattleScript_GrudgeTakesPp[];
-extern const u8 BattleScript_RageIsBuilding[];
-extern const u8 BattleScript_DefrostedViaFireMove[];
-extern const u8 gUnknown_082DB87D[];
-extern const u8 gUnknown_082DAE90[];
-extern const u8 gUnknown_082DAE59[];
-extern const u8 gUnknown_082DAEC7[];
-extern const u8 BattleScript_MoveEffectSleep[];
-extern const u8 BattleScript_MoveEffectPoison[];
-extern const u8 BattleScript_MoveEffectBurn[];
-extern const u8 BattleScript_MoveEffectFreeze[];
-extern const u8 BattleScript_MoveEffectParalysis[];
-extern const u8 BattleScript_MoveEffectToxic[];
-extern const u8 BattleScript_MoveEffectConfusion[];
-extern const u8 BattleScript_MoveEffectUproar[];
-extern const u8 BattleScript_MoveEffectPayDay[];
-extern const u8 BattleScript_MoveEffectWrap[];
-extern const u8 BattleScript_MoveEffectRecoil33[];
-extern const u8 BattleScript_DampStopsExplosion[];
-extern const u8 BattleScript_MistProtected[];
-extern const u8 BattleScript_AbilityNoStatLoss[];
-extern const u8 BattleScript_AbilityNoSpecificStatLoss[];
-extern const u8 BattleScript_ButItFailed[];
-extern const u8 gUnknown_082DADD8[];
-extern const u8 BattleScript_PrintPayDayMoneyString[];
-extern const u8 BattleScript_SturdyPreventsOHKO[];
-extern const u8 BattleScript_ObliviousPreventsAttraction[];
-extern const u8 BattleScript_PauseEffectivenessSoundResultMsgEndMove[];
-extern const u8 BattleScript_CastformChange[];
-extern const u8 BattleScript_TrainerBallBlock[];
-extern const u8 BattleScript_WallyBallThrow[];
-extern const u8 BattleScript_SuccessBallThrow[];
-extern const u8 BattleScript_ShakeBallThrow[];
-extern const u8 BattleScript_PresentDamageTarget[];
-extern const u8 BattleScript_AlreadyAtFullHp[];
-extern const u8 BattleScript_PresentHealTarget[];
-extern const u8 BattleScript_WrapFree[];
-extern const u8 BattleScript_LeechSeedFree[];
-extern const u8 BattleScript_SpikesFree[];
-
// strings
extern const u8 gText_BattleYesNoChoice[];
@@ -247,7 +167,7 @@ extern const u8 gText_BattleYesNoChoice[];
// this file's functions
static bool8 IsTwoTurnsMove(u16 move);
-static void DestinyBondFlagUpdate(void);
+static void TrySetDestinyBondToHappen(void);
static u8 AttacksThisTurn(u8 bank, u16 move); // Note: returns 1 if it's a charging turn, otherwise 2.
static void CheckWonderGuardAndLevitate(void);
static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8, const u8* BS_ptr);
@@ -267,41 +187,41 @@ static void atk01_accuracycheck(void);
static void atk02_attackstring(void);
static void atk03_ppreduce(void);
static void atk04_critcalc(void);
-static void atk05_damagecalc1(void);
+static void atk05_damagecalc(void);
static void atk06_typecalc(void);
-static void atk07_dmg_adjustment(void);
-static void atk08_dmg_adjustment2(void);
+static void atk07_adjustnormaldamage(void);
+static void atk08_adjustnormaldamage2(void);
static void atk09_attackanimation(void);
static void atk0A_waitanimation(void);
static void atk0B_healthbarupdate(void);
static void atk0C_datahpupdate(void);
static void atk0D_critmessage(void);
-static void atk0E_effectiveness_sound(void);
+static void atk0E_effectivenesssound(void);
static void atk0F_resultmessage(void);
static void atk10_printstring(void);
-static void atk11_printstring_playeronly(void);
+static void atk11_printselectionstring(void);
static void atk12_waitmessage(void);
static void atk13_printfromtable(void);
-static void atk14_printfromtable_playeronly(void);
+static void atk14_printselectionstringfromtable(void);
static void atk15_seteffectwithchance(void);
static void atk16_seteffectprimary(void);
static void atk17_seteffectsecondary(void);
-static void atk18_status_effect_clear(void);
-static void atk19_faint_pokemon(void);
-static void atk1A_faint_animation(void);
-static void atk1B_faint_effects_clear(void);
+static void atk18_clearstatusfromeffect(void);
+static void atk19_tryfaintmon(void);
+static void atk1A_dofaintanimation(void);
+static void atk1B_cleareffectsonfaint(void);
static void atk1C_jumpifstatus(void);
static void atk1D_jumpifstatus2(void);
static void atk1E_jumpifability(void);
static void atk1F_jumpifsideaffecting(void);
static void atk20_jumpifstat(void);
-static void atk21_jumpifstatus3(void);
+static void atk21_jumpifstatus3condition(void);
static void atk22_jumpiftype(void);
static void atk23_getexp(void);
static void atk24(void);
-static void atk25_move_values_cleanup(void);
-static void atk26_set_multihit(void);
-static void atk27_decrement_multihit(void);
+static void atk25_movevaluescleanup(void);
+static void atk26_setmultihit(void);
+static void atk27_decrementmultihit(void);
static void atk28_goto(void);
static void atk29_jumpifbyte(void);
static void atk2A_jumpifhalfword(void);
@@ -312,7 +232,7 @@ static void atk2E_setbyte(void);
static void atk2F_addbyte(void);
static void atk30_subbyte(void);
static void atk31_copyarray(void);
-static void atk32_copyarray_withindex(void);
+static void atk32_copyarraywithindex(void);
static void atk33_orbyte(void);
static void atk34_orhalfword(void);
static void atk35_orword(void);
@@ -326,75 +246,75 @@ static void atk3C_return(void);
static void atk3D_end(void);
static void atk3E_end2(void);
static void atk3F_end3(void);
-static void atk40_jump_if_move_affected_by_protect(void);
+static void atk40_jumpifaffectedbyprotect(void);
static void atk41_call(void);
static void atk42_jumpiftype2(void);
static void atk43_jumpifabilitypresent(void);
-static void atk44_end_selection_script(void);
+static void atk44_endselectionscript(void);
static void atk45_playanimation(void);
static void atk46_playanimation2(void);
static void atk47_setgraphicalstatchangevalues(void);
static void atk48_playstatchangeanimation(void);
static void atk49_moveend(void);
static void atk4A_typecalc2(void);
-static void atk4B_return_atk_to_ball(void);
-static void atk4C_get_switched_mon_data(void);
-static void atk4D_switch_data_update(void);
-static void atk4E_switchin_anim(void);
-static void atk4F_jump_if_cannot_switch(void);
+static void atk4B_returnatktoball(void);
+static void atk4C_getswitchedmondata(void);
+static void atk4D_switchindataupdate(void);
+static void atk4E_switchinanim(void);
+static void atk4F_jumpifcantswitch(void);
static void atk50_openpartyscreen(void);
-static void atk51_switch_handle_order(void);
-static void atk52_switch_in_effects(void);
-static void atk53_trainer_slide(void);
-static void atk54_effectiveness_sound(void);
-static void atk55_play_fanfare(void);
-static void atk56_fainting_cry(void);
+static void atk51_switchhandleorder(void);
+static void atk52_switchineffects(void);
+static void atk53_trainerslidein(void);
+static void atk54_playse(void);
+static void atk55_fanfare(void);
+static void atk56_playfaintcry(void);
static void atk57(void);
-static void atk58_return_to_ball(void);
-static void atk59_learnmove_inbattle(void);
+static void atk58_returntoball(void);
+static void atk59_handlelearnnewmove(void);
static void atk5A_yesnoboxlearnmove(void);
static void atk5B_yesnoboxstoplearningmove(void);
static void atk5C_hitanimation(void);
static void atk5D_getmoneyreward(void);
-static void atk5E_8025A70(void);
-static void atk5F_8025B24(void);
-static void atk60_increment_gamestat(void);
-static void atk61_draw_party_status_summary(void);
-static void atk62_08025C6C(void);
+static void atk5E(void);
+static void atk5F(void);
+static void atk60_incrementgamestat(void);
+static void atk61_drawpartystatussummary(void);
+static void atk62(void);
static void atk63_jumptorandomattack(void);
static void atk64_statusanimation(void);
static void atk65_status2animation(void);
static void atk66_chosenstatusanimation(void);
static void atk67_yesnobox(void);
-static void atk68_cancel_everyones_actions(void);
-static void atk69_dmg_adjustment3(void);
+static void atk68_cancelallactions(void);
+static void atk69_adjustsetdamage(void);
static void atk6A_removeitem(void);
static void atk6B_atknameinbuff1(void);
-static void atk6C_draw_lvlupbox(void);
-static void atk6D_reset_sentpokes_value(void);
-static void atk6E_set_atk_to_player0(void);
-static void atk6F_set_visible(void);
-static void atk70_record_last_used_ability(void);
-static void atk71_buffer_move_to_learn(void);
-static void atk72_jump_if_run_attempt_success(void);
-static void atk73_hp_thresholds(void);
-static void atk74_hp_thresholds2(void);
-static void atk75_item_effect_on_opponent(void);
+static void atk6C_drawlvlupbox(void);
+static void atk6D_resetsentmonsvalue(void);
+static void atk6E_setatktoplayer0(void);
+static void atk6F_makevisible(void);
+static void atk70_recordlastability(void);
+static void atk71_buffermovetolearn(void);
+static void atk72_jumpifplayerran(void);
+static void atk73_hpthresholds(void);
+static void atk74_hpthresholds2(void);
+static void atk75_useitemonopponent(void);
static void atk76_various(void);
-static void atk77_set_protect_like(void);
+static void atk77_setprotectlike(void);
static void atk78_faintifabilitynotdamp(void);
static void atk79_setatkhptozero(void);
-static void atk7A_jumpwhiletargetvalid(void);
-static void atk7B_healhalfHP_if_possible(void);
+static void atk7A_jumpifnexttargetvalid(void);
+static void atk7B_tryhealhalfhealth(void);
static void atk7C_trymirrormove(void);
-static void atk7D_set_rain(void);
+static void atk7D_setrain(void);
static void atk7E_setreflect(void);
static void atk7F_setseeded(void);
static void atk80_manipulatedamage(void);
-static void atk81_setrest(void);
+static void atk81_trysetrest(void);
static void atk82_jumpifnotfirstturn(void);
static void atk83_nop(void);
-static void atk84_jump_if_cant_sleep(void);
+static void atk84_jumpifcantmakeasleep(void);
static void atk85_stockpile(void);
static void atk86_stockpiletobasedamage(void);
static void atk87_stockpiletohpheal(void);
@@ -403,22 +323,22 @@ static void atk89_statbuffchange(void);
static void atk8A_normalisebuffs(void);
static void atk8B_setbide(void);
static void atk8C_confuseifrepeatingattackends(void);
-static void atk8D_setmultihit_counter(void);
-static void atk8E_init_multihit_string(void);
+static void atk8D_setmultihitcounter(void);
+static void atk8E_initmultihitstring(void);
static void atk8F_forcerandomswitch(void);
-static void atk90_conversion_type_change(void);
+static void atk90_tryconversiontypechange(void);
static void atk91_givepaydaymoney(void);
static void atk92_setlightscreen(void);
-static void atk93_ko_move(void);
+static void atk93_tryKO(void);
static void atk94_damagetohalftargethp(void);
static void atk95_setsandstorm(void);
static void atk96_weatherdamage(void);
-static void atk97_try_infatuation(void);
-static void atk98_status_icon_update(void);
+static void atk97_tryinfatuating(void);
+static void atk98_updatestatusicon(void);
static void atk99_setmist(void);
-static void atk9A_set_focusenergy(void);
+static void atk9A_setfocusenergy(void);
static void atk9B_transformdataexecution(void);
-static void atk9C_set_substitute(void);
+static void atk9C_setsubstitute(void);
static void atk9D_mimicattackcopy(void);
static void atk9E_metronome(void);
static void atk9F_dmgtolevel(void);
@@ -426,39 +346,39 @@ static void atkA0_psywavedamageeffect(void);
static void atkA1_counterdamagecalculator(void);
static void atkA2_mirrorcoatdamagecalculator(void);
static void atkA3_disablelastusedattack(void);
-static void atkA4_setencore(void);
+static void atkA4_trysetencore(void);
static void atkA5_painsplitdmgcalc(void);
static void atkA6_settypetorandomresistance(void);
static void atkA7_setalwayshitflag(void);
static void atkA8_copymovepermanently(void);
-static void atkA9_sleeptalk_choose_move(void);
-static void atkAA_set_destinybond(void);
-static void atkAB_DestinyBondFlagUpdate(void);
+static void atkA9_trychoosesleeptalkmove(void);
+static void atkAA_setdestinybond(void);
+static void atkAB_trysetdestinybondtohappen(void);
static void atkAC_remaininghptopower(void);
-static void atkAD_spite_ppreduce(void);
-static void atkAE_heal_party_status(void);
+static void atkAD_tryspiteppreduce(void);
+static void atkAE_healpartystatus(void);
static void atkAF_cursetarget(void);
-static void atkB0_set_spikes(void);
-static void atkB1_set_foresight(void);
-static void atkB2_setperishsong(void);
+static void atkB0_trysetspikes(void);
+static void atkB1_setforesight(void);
+static void atkB2_trysetperishsong(void);
static void atkB3_rolloutdamagecalculation(void);
static void atkB4_jumpifconfusedandstatmaxed(void);
static void atkB5_furycuttercalc(void);
static void atkB6_happinesstodamagecalculation(void);
static void atkB7_presentdamagecalculation(void);
-static void atkB8_set_safeguard(void);
+static void atkB8_setsafeguard(void);
static void atkB9_magnitudedamagecalculation(void);
static void atkBA_jumpifnopursuitswitchdmg(void);
static void atkBB_setsunny(void);
static void atkBC_maxattackhalvehp(void);
static void atkBD_copyfoestats(void);
static void atkBE_rapidspinfree(void);
-static void atkBF_set_defense_curl(void);
+static void atkBF_setdefensecurlbit(void);
static void atkC0_recoverbasedonsunlight(void);
-static void atkC1_hidden_power_calc(void);
-static void atkC2_selectnexttarget(void);
-static void atkC3_setfutureattack(void);
-static void atkC4_beat_up(void);
+static void atkC1_hiddenpowercalc(void);
+static void atkC2_selectfirstvalidtarget(void);
+static void atkC3_trysetfutureattack(void);
+static void atkC4_trydobeatup(void);
static void atkC5_setsemiinvulnerablebit(void);
static void atkC6_clearsemiinvulnerablebit(void);
static void atkC7_setminimize(void);
@@ -471,46 +391,46 @@ static void atkCD_cureifburnedparalysedorpoisoned(void);
static void atkCE_settorment(void);
static void atkCF_jumpifnodamage(void);
static void atkD0_settaunt(void);
-static void atkD1_set_helpinghand(void);
-static void atkD2_swap_items(void);
-static void atkD3_copy_ability(void);
-static void atkD4_wish_effect(void);
-static void atkD5_setroots(void);
+static void atkD1_trysethelpinghand(void);
+static void atkD2_tryswapitems(void);
+static void atkD3_trycopyability(void);
+static void atkD4_trywish(void);
+static void atkD5_trysetroots(void);
static void atkD6_doubledamagedealtifdamaged(void);
static void atkD7_setyawn(void);
static void atkD8_setdamagetohealthdifference(void);
static void atkD9_scaledamagebyhealthratio(void);
-static void atkDA_abilityswap(void);
-static void atkDB_imprisoneffect(void);
-static void atkDC_setgrudge(void);
+static void atkDA_tryswapabilities(void);
+static void atkDB_tryimprision(void);
+static void atkDC_trysetgrudge(void);
static void atkDD_weightdamagecalculation(void);
static void atkDE_asistattackselect(void);
-static void atkDF_setmagiccoat(void);
-static void atkE0_setstealstatchange(void);
-static void atkE1_intimidate_string_loader(void);
-static void atkE2_switchout_abilities(void);
+static void atkDF_trysetmagiccoat(void);
+static void atkE0_trysetsnatch(void);
+static void atkE1_trygetintimidatetarget(void);
+static void atkE2_switchoutabilities(void);
static void atkE3_jumpifhasnohp(void);
static void atkE4_getsecretpowereffect(void);
static void atkE5_pickup(void);
-static void atkE6_castform_change_animation(void);
-static void atkE7_castform_data_change(void);
+static void atkE6_docastformchangeanimation(void);
+static void atkE7_trycastformdatachange(void);
static void atkE8_settypebasedhalvers(void);
static void atkE9_setweatherballtype(void);
-static void atkEA_recycleitem(void);
+static void atkEA_tryrecycleitem(void);
static void atkEB_settypetoterrain(void);
-static void atkEC_pursuit_sth(void);
-static void atkED_802B4B4(void);
+static void atkEC_pursuitrelated(void);
+static void atkEF_snatchsetbanks(void);
static void atkEE_removelightscreenreflect(void);
-static void atkEF_pokeball_catch_calculation(void);
-static void atkF0_give_caught_mon(void);
-static void atkF1_set_caught_mon_dex_flags(void);
-static void atkF2_display_dex_info(void);
-static void atkF3_nickname_caught_poke(void);
+static void atkEF_handleballthrow(void);
+static void atkF0_givecaughtmon(void);
+static void atkF1_trysetcaughtmondexflags(void);
+static void atkF2_displaydexinfo(void);
+static void atkF3_trygivecaughtmonnick(void);
static void atkF4_subattackerhpbydmg(void);
static void atkF5_removeattackerstatus1(void);
-static void atkF6_action_finished(void);
-static void atkF7_turn_finished(void);
-static void atkF8_trainer_slide_back(void);
+static void atkF6_finishaction(void);
+static void atkF7_finishturn(void);
+static void atkF8_trainerslideout(void);
void (* const gBattleScriptingCommandsTable[])(void) =
{
@@ -519,41 +439,41 @@ void (* const gBattleScriptingCommandsTable[])(void) =
atk02_attackstring,
atk03_ppreduce,
atk04_critcalc,
- atk05_damagecalc1,
+ atk05_damagecalc,
atk06_typecalc,
- atk07_dmg_adjustment,
- atk08_dmg_adjustment2,
+ atk07_adjustnormaldamage,
+ atk08_adjustnormaldamage2,
atk09_attackanimation,
atk0A_waitanimation,
atk0B_healthbarupdate,
atk0C_datahpupdate,
atk0D_critmessage,
- atk0E_effectiveness_sound,
+ atk0E_effectivenesssound,
atk0F_resultmessage,
atk10_printstring,
- atk11_printstring_playeronly,
+ atk11_printselectionstring,
atk12_waitmessage,
atk13_printfromtable,
- atk14_printfromtable_playeronly,
+ atk14_printselectionstringfromtable,
atk15_seteffectwithchance,
atk16_seteffectprimary,
atk17_seteffectsecondary,
- atk18_status_effect_clear,
- atk19_faint_pokemon,
- atk1A_faint_animation,
- atk1B_faint_effects_clear,
+ atk18_clearstatusfromeffect,
+ atk19_tryfaintmon,
+ atk1A_dofaintanimation,
+ atk1B_cleareffectsonfaint,
atk1C_jumpifstatus,
atk1D_jumpifstatus2,
atk1E_jumpifability,
atk1F_jumpifsideaffecting,
atk20_jumpifstat,
- atk21_jumpifstatus3,
+ atk21_jumpifstatus3condition,
atk22_jumpiftype,
atk23_getexp,
atk24,
- atk25_move_values_cleanup,
- atk26_set_multihit,
- atk27_decrement_multihit,
+ atk25_movevaluescleanup,
+ atk26_setmultihit,
+ atk27_decrementmultihit,
atk28_goto,
atk29_jumpifbyte,
atk2A_jumpifhalfword,
@@ -564,7 +484,7 @@ void (* const gBattleScriptingCommandsTable[])(void) =
atk2F_addbyte,
atk30_subbyte,
atk31_copyarray,
- atk32_copyarray_withindex,
+ atk32_copyarraywithindex,
atk33_orbyte,
atk34_orhalfword,
atk35_orword,
@@ -578,75 +498,75 @@ void (* const gBattleScriptingCommandsTable[])(void) =
atk3D_end,
atk3E_end2,
atk3F_end3,
- atk40_jump_if_move_affected_by_protect,
+ atk40_jumpifaffectedbyprotect,
atk41_call,
atk42_jumpiftype2,
atk43_jumpifabilitypresent,
- atk44_end_selection_script,
+ atk44_endselectionscript,
atk45_playanimation,
atk46_playanimation2,
atk47_setgraphicalstatchangevalues,
atk48_playstatchangeanimation,
atk49_moveend,
atk4A_typecalc2,
- atk4B_return_atk_to_ball,
- atk4C_get_switched_mon_data,
- atk4D_switch_data_update,
- atk4E_switchin_anim,
- atk4F_jump_if_cannot_switch,
+ atk4B_returnatktoball,
+ atk4C_getswitchedmondata,
+ atk4D_switchindataupdate,
+ atk4E_switchinanim,
+ atk4F_jumpifcantswitch,
atk50_openpartyscreen,
- atk51_switch_handle_order,
- atk52_switch_in_effects,
- atk53_trainer_slide,
- atk54_effectiveness_sound,
- atk55_play_fanfare,
- atk56_fainting_cry,
+ atk51_switchhandleorder,
+ atk52_switchineffects,
+ atk53_trainerslidein,
+ atk54_playse,
+ atk55_fanfare,
+ atk56_playfaintcry,
atk57,
- atk58_return_to_ball,
- atk59_learnmove_inbattle,
+ atk58_returntoball,
+ atk59_handlelearnnewmove,
atk5A_yesnoboxlearnmove,
atk5B_yesnoboxstoplearningmove,
atk5C_hitanimation,
atk5D_getmoneyreward,
- atk5E_8025A70,
- atk5F_8025B24,
- atk60_increment_gamestat,
- atk61_draw_party_status_summary,
- atk62_08025C6C,
+ atk5E,
+ atk5F,
+ atk60_incrementgamestat,
+ atk61_drawpartystatussummary,
+ atk62,
atk63_jumptorandomattack,
atk64_statusanimation,
atk65_status2animation,
atk66_chosenstatusanimation,
atk67_yesnobox,
- atk68_cancel_everyones_actions,
- atk69_dmg_adjustment3,
+ atk68_cancelallactions,
+ atk69_adjustsetdamage,
atk6A_removeitem,
atk6B_atknameinbuff1,
- atk6C_draw_lvlupbox,
- atk6D_reset_sentpokes_value,
- atk6E_set_atk_to_player0,
- atk6F_set_visible,
- atk70_record_last_used_ability,
- atk71_buffer_move_to_learn,
- atk72_jump_if_run_attempt_success,
- atk73_hp_thresholds,
- atk74_hp_thresholds2,
- atk75_item_effect_on_opponent,
+ atk6C_drawlvlupbox,
+ atk6D_resetsentmonsvalue,
+ atk6E_setatktoplayer0,
+ atk6F_makevisible,
+ atk70_recordlastability,
+ atk71_buffermovetolearn,
+ atk72_jumpifplayerran,
+ atk73_hpthresholds,
+ atk74_hpthresholds2,
+ atk75_useitemonopponent,
atk76_various,
- atk77_set_protect_like,
+ atk77_setprotectlike,
atk78_faintifabilitynotdamp,
atk79_setatkhptozero,
- atk7A_jumpwhiletargetvalid,
- atk7B_healhalfHP_if_possible,
+ atk7A_jumpifnexttargetvalid,
+ atk7B_tryhealhalfhealth,
atk7C_trymirrormove,
- atk7D_set_rain,
+ atk7D_setrain,
atk7E_setreflect,
atk7F_setseeded,
atk80_manipulatedamage,
- atk81_setrest,
+ atk81_trysetrest,
atk82_jumpifnotfirstturn,
atk83_nop,
- atk84_jump_if_cant_sleep,
+ atk84_jumpifcantmakeasleep,
atk85_stockpile,
atk86_stockpiletobasedamage,
atk87_stockpiletohpheal,
@@ -655,22 +575,22 @@ void (* const gBattleScriptingCommandsTable[])(void) =
atk8A_normalisebuffs,
atk8B_setbide,
atk8C_confuseifrepeatingattackends,
- atk8D_setmultihit_counter,
- atk8E_init_multihit_string,
+ atk8D_setmultihitcounter,
+ atk8E_initmultihitstring,
atk8F_forcerandomswitch,
- atk90_conversion_type_change,
+ atk90_tryconversiontypechange,
atk91_givepaydaymoney,
atk92_setlightscreen,
- atk93_ko_move,
+ atk93_tryKO,
atk94_damagetohalftargethp,
atk95_setsandstorm,
atk96_weatherdamage,
- atk97_try_infatuation,
- atk98_status_icon_update,
+ atk97_tryinfatuating,
+ atk98_updatestatusicon,
atk99_setmist,
- atk9A_set_focusenergy,
+ atk9A_setfocusenergy,
atk9B_transformdataexecution,
- atk9C_set_substitute,
+ atk9C_setsubstitute,
atk9D_mimicattackcopy,
atk9E_metronome,
atk9F_dmgtolevel,
@@ -678,39 +598,39 @@ void (* const gBattleScriptingCommandsTable[])(void) =
atkA1_counterdamagecalculator,
atkA2_mirrorcoatdamagecalculator,
atkA3_disablelastusedattack,
- atkA4_setencore,
+ atkA4_trysetencore,
atkA5_painsplitdmgcalc,
atkA6_settypetorandomresistance,
atkA7_setalwayshitflag,
atkA8_copymovepermanently,
- atkA9_sleeptalk_choose_move,
- atkAA_set_destinybond,
- atkAB_DestinyBondFlagUpdate,
+ atkA9_trychoosesleeptalkmove,
+ atkAA_setdestinybond,
+ atkAB_trysetdestinybondtohappen,
atkAC_remaininghptopower,
- atkAD_spite_ppreduce,
- atkAE_heal_party_status,
+ atkAD_tryspiteppreduce,
+ atkAE_healpartystatus,
atkAF_cursetarget,
- atkB0_set_spikes,
- atkB1_set_foresight,
- atkB2_setperishsong,
+ atkB0_trysetspikes,
+ atkB1_setforesight,
+ atkB2_trysetperishsong,
atkB3_rolloutdamagecalculation,
atkB4_jumpifconfusedandstatmaxed,
atkB5_furycuttercalc,
atkB6_happinesstodamagecalculation,
atkB7_presentdamagecalculation,
- atkB8_set_safeguard,
+ atkB8_setsafeguard,
atkB9_magnitudedamagecalculation,
atkBA_jumpifnopursuitswitchdmg,
atkBB_setsunny,
atkBC_maxattackhalvehp,
atkBD_copyfoestats,
atkBE_rapidspinfree,
- atkBF_set_defense_curl,
+ atkBF_setdefensecurlbit,
atkC0_recoverbasedonsunlight,
- atkC1_hidden_power_calc,
- atkC2_selectnexttarget,
- atkC3_setfutureattack,
- atkC4_beat_up,
+ atkC1_hiddenpowercalc,
+ atkC2_selectfirstvalidtarget,
+ atkC3_trysetfutureattack,
+ atkC4_trydobeatup,
atkC5_setsemiinvulnerablebit,
atkC6_clearsemiinvulnerablebit,
atkC7_setminimize,
@@ -723,46 +643,46 @@ void (* const gBattleScriptingCommandsTable[])(void) =
atkCE_settorment,
atkCF_jumpifnodamage,
atkD0_settaunt,
- atkD1_set_helpinghand,
- atkD2_swap_items,
- atkD3_copy_ability,
- atkD4_wish_effect,
- atkD5_setroots,
+ atkD1_trysethelpinghand,
+ atkD2_tryswapitems,
+ atkD3_trycopyability,
+ atkD4_trywish,
+ atkD5_trysetroots,
atkD6_doubledamagedealtifdamaged,
atkD7_setyawn,
atkD8_setdamagetohealthdifference,
atkD9_scaledamagebyhealthratio,
- atkDA_abilityswap,
- atkDB_imprisoneffect,
- atkDC_setgrudge,
+ atkDA_tryswapabilities,
+ atkDB_tryimprision,
+ atkDC_trysetgrudge,
atkDD_weightdamagecalculation,
atkDE_asistattackselect,
- atkDF_setmagiccoat,
- atkE0_setstealstatchange,
- atkE1_intimidate_string_loader,
- atkE2_switchout_abilities,
+ atkDF_trysetmagiccoat,
+ atkE0_trysetsnatch,
+ atkE1_trygetintimidatetarget,
+ atkE2_switchoutabilities,
atkE3_jumpifhasnohp,
atkE4_getsecretpowereffect,
atkE5_pickup,
- atkE6_castform_change_animation,
- atkE7_castform_data_change,
+ atkE6_docastformchangeanimation,
+ atkE7_trycastformdatachange,
atkE8_settypebasedhalvers,
atkE9_setweatherballtype,
- atkEA_recycleitem,
+ atkEA_tryrecycleitem,
atkEB_settypetoterrain,
- atkEC_pursuit_sth,
- atkED_802B4B4,
+ atkEC_pursuitrelated,
+ atkEF_snatchsetbanks,
atkEE_removelightscreenreflect,
- atkEF_pokeball_catch_calculation,
- atkF0_give_caught_mon,
- atkF1_set_caught_mon_dex_flags,
- atkF2_display_dex_info,
- atkF3_nickname_caught_poke,
+ atkEF_handleballthrow,
+ atkF0_givecaughtmon,
+ atkF1_trysetcaughtmondexflags,
+ atkF2_displaydexinfo,
+ atkF3_trygivecaughtmonnick,
atkF4_subattackerhpbydmg,
atkF5_removeattackerstatus1,
- atkF6_action_finished,
- atkF7_turn_finished,
- atkF8_trainer_slide_back
+ atkF6_finishaction,
+ atkF7_finishturn,
+ atkF8_trainerslideout
};
struct StatFractions
@@ -1134,7 +1054,7 @@ static void atk00_attackcanceler(void)
if (!(gHitMarker & HITMARKER_OBEYS) && !(gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS))
{
- i = IsPokeDisobedient(); // why use the 'i' variable...?
+ i = IsMonDisobedient(); // why use the 'i' variable...?
switch (i)
{
case 0:
@@ -1186,8 +1106,8 @@ static void atk00_attackcanceler(void)
{
CancelMultiTurnMoves(gBankAttacker);
gBattleMoveFlags |= MOVESTATUS_MISSED;
- gUnknown_02024250[gBankTarget] = 0;
- gUnknown_02024258[gBankTarget] = 0;
+ gLastLandedMoves[gBankTarget] = 0;
+ gLastHitByType[gBankTarget] = 0;
gBattleCommunication[6] = 1;
gBattlescriptCurrInstr++;
}
@@ -1199,23 +1119,23 @@ static void atk00_attackcanceler(void)
static void JumpIfMoveFailed(u8 adder, u16 move)
{
- const void* BS_ptr = gBattlescriptCurrInstr + adder;
+ const u8 *BS_ptr = gBattlescriptCurrInstr + adder;
if (gBattleMoveFlags & MOVESTATUS_NOEFFECT)
{
- gUnknown_02024250[gBankTarget] = 0;
- gUnknown_02024258[gBankTarget] = 0;
+ gLastLandedMoves[gBankTarget] = 0;
+ gLastHitByType[gBankTarget] = 0;
BS_ptr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
}
else
{
- DestinyBondFlagUpdate();
+ TrySetDestinyBondToHappen();
if (AbilityBattleEffects(ABILITYEFFECT_ABSORBING, gBankTarget, 0, 0, move))
return;
}
gBattlescriptCurrInstr = BS_ptr;
}
-static void atk40_jump_if_move_affected_by_protect(void)
+static void atk40_jumpifaffectedbyprotect(void)
{
if (TARGET_PROTECT_AFFECTED)
{
@@ -1476,7 +1396,7 @@ static void atk04_critcalc(void)
gBattlescriptCurrInstr++;
}
-static void atk05_damagecalc1(void)
+static void atk05_damagecalc(void)
{
u16 sideStatus = gSideAffecting[GET_BANK_SIDE(gBankTarget)];
gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankTarget], gCurrentMove,
@@ -1565,8 +1485,8 @@ static void atk06_typecalc(void)
{
gLastUsedAbility = gBattleMons[gBankTarget].ability;
gBattleMoveFlags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED);
- gUnknown_02024250[gBankTarget] = 0;
- gUnknown_02024258[gBankTarget] = 0;
+ gLastLandedMoves[gBankTarget] = 0;
+ gLastHitByType[gBankTarget] = 0;
gBattleCommunication[6] = moveType;
RecordAbilityBattle(gBankTarget, gLastUsedAbility);
}
@@ -1601,8 +1521,8 @@ static void atk06_typecalc(void)
{
gLastUsedAbility = ABILITY_WONDER_GUARD;
gBattleMoveFlags |= MOVESTATUS_MISSED;
- gUnknown_02024250[gBankTarget] = 0;
- gUnknown_02024258[gBankTarget] = 0;
+ gLastLandedMoves[gBankTarget] = 0;
+ gLastHitByType[gBankTarget] = 0;
gBattleCommunication[6] = 3;
RecordAbilityBattle(gBankTarget, gLastUsedAbility);
}
@@ -1843,7 +1763,7 @@ static void Unused_ApplyRandomDmgMultiplier(void)
ApplyRandomDmgMultiplier();
}
-static void atk07_dmg_adjustment(void)
+static void atk07_adjustnormaldamage(void)
{
u8 holdEffect, quality;
@@ -1891,7 +1811,7 @@ static void atk07_dmg_adjustment(void)
gBattlescriptCurrInstr++;
}
-static void atk08_dmg_adjustment2(void) // The same as 0x7 except it doesn't check for false swipe move effect.
+static void atk08_adjustnormaldamage2(void) // The same as 0x7 except it doesn't check for false swipe move effect.
{
u8 holdEffect, quality;
@@ -2172,7 +2092,7 @@ static void atk0D_critmessage(void)
}
}
-static void atk0E_effectiveness_sound(void)
+static void atk0E_effectivenesssound(void)
{
if (gBattleExecBuffer)
return;
@@ -2183,11 +2103,11 @@ static void atk0E_effectiveness_sound(void)
switch (gBattleMoveFlags & (u8)(~(MOVESTATUS_MISSED)))
{
case MOVESTATUS_SUPEREFFECTIVE:
- EmitEffectivenessSound(0, SE_KOUKA_H);
+ EmitPlaySE(0, SE_KOUKA_H);
MarkBufferBankForExecution(gActiveBank);
break;
case MOVESTATUS_NOTVERYEFFECTIVE:
- EmitEffectivenessSound(0, SE_KOUKA_L);
+ EmitPlaySE(0, SE_KOUKA_L);
MarkBufferBankForExecution(gActiveBank);
break;
case MOVESTATUS_NOTAFFECTED:
@@ -2200,17 +2120,17 @@ static void atk0E_effectiveness_sound(void)
default:
if (gBattleMoveFlags & MOVESTATUS_SUPEREFFECTIVE)
{
- EmitEffectivenessSound(0, SE_KOUKA_H);
+ EmitPlaySE(0, SE_KOUKA_H);
MarkBufferBankForExecution(gActiveBank);
}
else if (gBattleMoveFlags & MOVESTATUS_NOTVERYEFFECTIVE)
{
- EmitEffectivenessSound(0, SE_KOUKA_L);
+ EmitPlaySE(0, SE_KOUKA_L);
MarkBufferBankForExecution(gActiveBank);
}
else if (!(gBattleMoveFlags & (MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED)))
{
- EmitEffectivenessSound(0, SE_KOUKA_M);
+ EmitPlaySE(0, SE_KOUKA_M);
MarkBufferBankForExecution(gActiveBank);
}
break;
@@ -2319,11 +2239,11 @@ static void atk10_printstring(void)
}
}
-static void atk11_printstring_playeronly(void)
+static void atk11_printselectionstring(void)
{
gActiveBank = gBankAttacker;
- EmitPrintStringPlayerOnly(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1));
+ EmitPrintSelectionString(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1));
MarkBufferBankForExecution(gActiveBank);
gBattlescriptCurrInstr += 3;
@@ -2365,7 +2285,7 @@ static void atk13_printfromtable(void)
}
}
-static void atk14_printfromtable_playeronly(void)
+static void atk14_printselectionstringfromtable(void)
{
if (gBattleExecBuffer == 0)
{
@@ -2373,7 +2293,7 @@ static void atk14_printfromtable_playeronly(void)
ptr += gBattleCommunication[MULTISTRING_CHOOSER];
gActiveBank = gBankAttacker;
- EmitPrintStringPlayerOnly(0, *ptr);
+ EmitPrintSelectionString(0, *ptr);
MarkBufferBankForExecution(gActiveBank);
gBattlescriptCurrInstr += 5;
@@ -3121,7 +3041,7 @@ static void atk15_seteffectwithchance(void)
}
gBattleCommunication[MOVE_EFFECT_BYTE] = 0;
- gBattleScripting.field_16 = 0;
+ gBattleScripting.multihitMoveEffect = 0;
}
static void atk16_seteffectprimary(void)
@@ -3134,7 +3054,7 @@ static void atk17_seteffectsecondary(void)
SetMoveEffect(FALSE, 0);
}
-static void atk18_status_effect_clear(void)
+static void atk18_clearstatusfromeffect(void)
{
gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
@@ -3145,10 +3065,10 @@ static void atk18_status_effect_clear(void)
gBattleCommunication[MOVE_EFFECT_BYTE] = 0;
gBattlescriptCurrInstr += 2;
- gBattleScripting.field_16 = 0;
+ gBattleScripting.multihitMoveEffect = 0;
}
-static void atk19_faint_pokemon(void)
+static void atk19_tryfaintmon(void)
{
const u8 *BS_ptr;
@@ -3235,7 +3155,7 @@ static void atk19_faint_pokemon(void)
}
}
-static void atk1A_faint_animation(void)
+static void atk1A_dofaintanimation(void)
{
if (gBattleExecBuffer == 0)
{
@@ -3246,7 +3166,7 @@ static void atk1A_faint_animation(void)
}
}
-static void atk1B_faint_effects_clear(void)
+static void atk1B_cleareffectsonfaint(void)
{
if (gBattleExecBuffer == 0)
{
@@ -3302,7 +3222,7 @@ static void atk1E_jumpifability(void)
gLastUsedAbility = ability;
gBattlescriptCurrInstr = jumpPtr;
RecordAbilityBattle(bank - 1, gLastUsedAbility);
- gBattleScripting.field_15 = bank - 1;
+ gBattleScripting.bankWithAbility = bank - 1;
}
else
gBattlescriptCurrInstr += 7;
@@ -3315,7 +3235,7 @@ static void atk1E_jumpifability(void)
gLastUsedAbility = ability;
gBattlescriptCurrInstr = jumpPtr;
RecordAbilityBattle(bank - 1, gLastUsedAbility);
- gBattleScripting.field_15 = bank - 1;
+ gBattleScripting.bankWithAbility = bank - 1;
}
else
gBattlescriptCurrInstr += 7;
@@ -3328,7 +3248,7 @@ static void atk1E_jumpifability(void)
gLastUsedAbility = ability;
gBattlescriptCurrInstr = jumpPtr;
RecordAbilityBattle(bank, gLastUsedAbility);
- gBattleScripting.field_15 = bank;
+ gBattleScripting.bankWithAbility = bank;
}
else
gBattlescriptCurrInstr += 7;
@@ -3395,10 +3315,10 @@ static void atk20_jumpifstat(void)
gBattlescriptCurrInstr += 9;
}
-static void atk21_jumpifstatus3(void)
+static void atk21_jumpifstatus3condition(void)
{
u32 flags;
- const u8* jumpPtr;
+ const u8 *jumpPtr;
gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
flags = BS2ScriptRead32(gBattlescriptCurrInstr + 2);
@@ -4098,19 +4018,19 @@ static void MoveValuesCleanUp(void)
gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT);
}
-static void atk25_move_values_cleanup(void)
+static void atk25_movevaluescleanup(void)
{
MoveValuesCleanUp();
gBattlescriptCurrInstr += 1;
}
-static void atk26_set_multihit(void)
+static void atk26_setmultihit(void)
{
gMultiHitCounter = gBattlescriptCurrInstr[1];
gBattlescriptCurrInstr += 2;
}
-static void atk27_decrement_multihit(void)
+static void atk27_decrementmultihit(void)
{
if (--gMultiHitCounter == 0)
gBattlescriptCurrInstr += 5;
@@ -4320,7 +4240,7 @@ static void atk31_copyarray(void)
gBattlescriptCurrInstr += 10;
}
-static void atk32_copyarray_withindex(void)
+static void atk32_copyarraywithindex(void)
{
u8* dest = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
const u8* src = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5);
@@ -4470,7 +4390,7 @@ static void atk43_jumpifabilitypresent(void)
gBattlescriptCurrInstr += 6;
}
-static void atk44_end_selection_script(void)
+static void atk44_endselectionscript(void)
{
*(gBankAttacker + gBattleStruct->selectionScriptFinished) = TRUE;
}
@@ -4937,14 +4857,14 @@ static void atk49_moveend(void)
u8 holdEffectAtk;
u16 *choicedMoveAtk;
u8 arg1, arg2;
- u16 lastMove;
+ u16 originallyUsedMove;
effect = FALSE;
- if (gLastUsedMove == 0xFFFF)
- lastMove = 0;
+ if (gChosenMove == 0xFFFF)
+ originallyUsedMove = 0;
else
- lastMove = gLastUsedMove;
+ originallyUsedMove = gChosenMove;
arg1 = gBattlescriptCurrInstr[1];
arg2 = gBattlescriptCurrInstr[2];
@@ -5015,14 +4935,14 @@ static void atk49_moveend(void)
break;
case 6: // update choice band move
if (!(gHitMarker & HITMARKER_OBEYS) || holdEffectAtk != HOLD_EFFECT_CHOICE_BAND
- || gLastUsedMove == MOVE_STRUGGLE || (*choicedMoveAtk != 0 && *choicedMoveAtk != 0xFFFF))
+ || gChosenMove == MOVE_STRUGGLE || (*choicedMoveAtk != 0 && *choicedMoveAtk != 0xFFFF))
goto LOOP;
- if (gLastUsedMove == MOVE_BATON_PASS && !(gBattleMoveFlags & MOVESTATUS_FAILED))
+ if (gChosenMove == MOVE_BATON_PASS && !(gBattleMoveFlags & MOVESTATUS_FAILED))
{
gBattleScripting.atk49_state++;
break;
}
- *choicedMoveAtk = gLastUsedMove;
+ *choicedMoveAtk = gChosenMove;
LOOP:
{
for (i = 0; i < 4; i++)
@@ -5117,63 +5037,63 @@ static void atk49_moveend(void)
}
if (gHitMarker & HITMARKER_ATTACKSTRING_PRINTED)
{
- gUnknownMovesUsedByBanks[gBankAttacker] = gLastUsedMove;
+ gLastPrintedMoves[gBankAttacker] = gChosenMove;
}
if (!(gAbsentBankFlags & gBitTable[gBankAttacker])
&& !(gBattleStruct->field_91 & gBitTable[gBankAttacker])
- && gBattleMoves[lastMove].effect != EFFECT_BATON_PASS)
+ && gBattleMoves[originallyUsedMove].effect != EFFECT_BATON_PASS)
{
if (gHitMarker & HITMARKER_OBEYS)
{
- gLastUsedMovesByBanks[gBankAttacker] = gLastUsedMove;
- gUnknown_02024260[gBankAttacker] = gCurrentMove;
+ gLastMoves[gBankAttacker] = gChosenMove;
+ gLastResultingMoves[gBankAttacker] = gCurrentMove;
}
else
{
- gLastUsedMovesByBanks[gBankAttacker] = 0xFFFF;
- gUnknown_02024260[gBankAttacker] = 0xFFFF;
+ gLastMoves[gBankAttacker] = 0xFFFF;
+ gLastResultingMoves[gBankAttacker] = 0xFFFF;
}
if (!(gHitMarker & HITMARKER_FAINTED(gBankTarget)))
- gUnknown_02024270[gBankTarget] = gBankAttacker;
+ gLastHitBy[gBankTarget] = gBankAttacker;
if (gHitMarker & HITMARKER_OBEYS && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
{
- if (gLastUsedMove == 0xFFFF)
+ if (gChosenMove == 0xFFFF)
{
- gUnknown_02024250[gBankTarget] = gLastUsedMove;
+ gLastLandedMoves[gBankTarget] = gChosenMove;
}
else
{
- gUnknown_02024250[gBankTarget] = gCurrentMove;
- GET_MOVE_TYPE(gCurrentMove, gUnknown_02024258[gBankTarget]);
+ gLastLandedMoves[gBankTarget] = gCurrentMove;
+ GET_MOVE_TYPE(gCurrentMove, gLastHitByType[gBankTarget]);
}
}
else
{
- gUnknown_02024250[gBankTarget] = 0xFFFF;
+ gLastLandedMoves[gBankTarget] = 0xFFFF;
}
}
gBattleScripting.atk49_state++;
break;
case 15: // mirror move
if (!(gAbsentBankFlags & gBitTable[gBankAttacker]) && !(gBattleStruct->field_91 & gBitTable[gBankAttacker])
- && gBattleMoves[lastMove].flags & FLAG_MIRROR_MOVE_AFFECTED && gHitMarker & HITMARKER_OBEYS
+ && gBattleMoves[originallyUsedMove].flags & FLAG_MIRROR_MOVE_AFFECTED && gHitMarker & HITMARKER_OBEYS
&& gBankAttacker != gBankTarget && !(gHitMarker & HITMARKER_FAINTED(gBankTarget))
&& !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
{
u8 target, attacker;
- *(gBattleStruct->mirrorMoves + gBankTarget * 2 + 0) = gLastUsedMove;
- *(gBattleStruct->mirrorMoves + gBankTarget * 2 + 1) = gLastUsedMove >> 8;
+ *(gBattleStruct->mirrorMoves + gBankTarget * 2 + 0) = gChosenMove;
+ *(gBattleStruct->mirrorMoves + gBankTarget * 2 + 1) = gChosenMove >> 8;
target = gBankTarget;
attacker = gBankAttacker;
- *(attacker * 2 + target * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = gLastUsedMove;
+ *(attacker * 2 + target * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = gChosenMove;
target = gBankTarget;
attacker = gBankAttacker;
- *(attacker * 2 + target * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = gLastUsedMove >> 8;
+ *(attacker * 2 + target * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = gChosenMove >> 8;
}
gBattleScripting.atk49_state++;
break;
@@ -5190,7 +5110,7 @@ static void atk49_moveend(void)
gBattleScripting.atk49_state = 0;
MoveValuesCleanUp();
BattleScriptPush(gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]);
- gBattlescriptCurrInstr = gUnknown_082DB87D;
+ gBattlescriptCurrInstr = BattleScript_82DB87D;
return;
}
else
@@ -5225,7 +5145,7 @@ static void atk4A_typecalc2(void)
{
gLastUsedAbility = gBattleMons[gBankTarget].ability;
gBattleMoveFlags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED);
- gUnknown_02024250[gBankTarget] = 0;
+ gLastLandedMoves[gBankTarget] = 0;
gBattleCommunication[6] = moveType;
RecordAbilityBattle(gBankTarget, gLastUsedAbility);
}
@@ -5300,7 +5220,7 @@ static void atk4A_typecalc2(void)
{
gLastUsedAbility = ABILITY_WONDER_GUARD;
gBattleMoveFlags |= MOVESTATUS_MISSED;
- gUnknown_02024250[gBankTarget] = 0;
+ gLastLandedMoves[gBankTarget] = 0;
gBattleCommunication[6] = 3;
RecordAbilityBattle(gBankTarget, gLastUsedAbility);
}
@@ -5310,7 +5230,7 @@ static void atk4A_typecalc2(void)
gBattlescriptCurrInstr++;
}
-static void atk4B_return_atk_to_ball(void)
+static void atk4B_returnatktoball(void)
{
gActiveBank = gBankAttacker;
if (!(gHitMarker & HITMARKER_FAINTED(gActiveBank)))
@@ -5321,7 +5241,7 @@ static void atk4B_return_atk_to_ball(void)
gBattlescriptCurrInstr++;
}
-static void atk4C_get_switched_mon_data(void)
+static void atk4C_getswitchedmondata(void)
{
if (gBattleExecBuffer)
return;
@@ -5336,7 +5256,7 @@ static void atk4C_get_switched_mon_data(void)
gBattlescriptCurrInstr += 2;
}
-static void atk4D_switch_data_update(void)
+static void atk4D_switchindataupdate(void)
{
struct BattlePokemon oldData;
s32 i;
@@ -5389,7 +5309,7 @@ static void atk4D_switch_data_update(void)
gBattlescriptCurrInstr += 2;
}
-static void atk4E_switchin_anim(void)
+static void atk4E_switchinanim(void)
{
if (gBattleExecBuffer)
return;
@@ -5415,7 +5335,7 @@ static void atk4E_switchin_anim(void)
sub_81A56B4();
}
-static void atk4F_jump_if_cannot_switch(void)
+static void atk4F_jumpifcantswitch(void)
{
s32 val = 0;
s32 compareVar = 0;
@@ -5533,10 +5453,10 @@ static void atk4F_jump_if_cannot_switch(void)
{
if (GetBankSide(gActiveBank) == SIDE_OPPONENT)
{
- r7 = GetBankByIdentity(1);
+ r7 = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
- compareVar = GetBankByIdentity(3);
+ compareVar = GetBankByIdentity(IDENTITY_OPPONENT_MON2);
else
compareVar = r7;
@@ -5544,10 +5464,10 @@ static void atk4F_jump_if_cannot_switch(void)
}
else
{
- r7 = GetBankByIdentity(0);
+ r7 = GetBankByIdentity(IDENTITY_PLAYER_MON1);
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
- compareVar = GetBankByIdentity(2);
+ compareVar = GetBankByIdentity(IDENTITY_PLAYER_MON2);
else
compareVar = r7;
@@ -5869,7 +5789,7 @@ static void atk50_openpartyscreen(void)
}
}
-static void atk51_switch_handle_order(void)
+static void atk51_switchhandleorder(void)
{
s32 i;
if (gBattleExecBuffer)
@@ -5936,7 +5856,7 @@ static void atk51_switch_handle_order(void)
gBattlescriptCurrInstr += 3;
}
-static void atk52_switch_in_effects(void)
+static void atk52_switchineffects(void)
{
s32 i;
@@ -5967,12 +5887,12 @@ static void atk52_switch_in_effects(void)
gBattleScripting.bank = gActiveBank;
BattleScriptPushCursor();
- if (gBattlescriptCurrInstr[1] == 0)
- gBattlescriptCurrInstr = gUnknown_082DAE90;
- else if (gBattlescriptCurrInstr[1] == 1)
- gBattlescriptCurrInstr = gUnknown_082DAE59;
+ if (gBattlescriptCurrInstr[1] == BS_GET_TARGET)
+ gBattlescriptCurrInstr = BattleScript_SpikesOnTarget;
+ else if (gBattlescriptCurrInstr[1] == BS_GET_ATTACKER)
+ gBattlescriptCurrInstr = BattleScript_SpikesOnAttacker;
else
- gBattlescriptCurrInstr = gUnknown_082DAEC7;
+ gBattlescriptCurrInstr = BattleScript_SpikesOngBank1;
}
else
{
@@ -6017,7 +5937,7 @@ static void atk52_switch_in_effects(void)
}
}
-static void atk53_trainer_slide(void)
+static void atk53_trainerslidein(void)
{
gActiveBank = GetBankByIdentity(gBattlescriptCurrInstr[1]);
EmitTrainerSlide(0);
@@ -6026,16 +5946,16 @@ static void atk53_trainer_slide(void)
gBattlescriptCurrInstr += 2;
}
-static void atk54_effectiveness_sound(void)
+static void atk54_playse(void)
{
gActiveBank = gBankAttacker;
- EmitEffectivenessSound(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1));
+ EmitPlaySE(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1));
MarkBufferBankForExecution(gActiveBank);
gBattlescriptCurrInstr += 3;
}
-static void atk55_play_fanfare(void)
+static void atk55_fanfare(void)
{
gActiveBank = gBankAttacker;
EmitPlayFanfareOrBGM(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1), FALSE);
@@ -6044,7 +5964,7 @@ static void atk55_play_fanfare(void)
gBattlescriptCurrInstr += 3;
}
-static void atk56_fainting_cry(void)
+static void atk56_playfaintcry(void)
{
gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
EmitFaintingCry(0);
@@ -6055,14 +5975,14 @@ static void atk56_fainting_cry(void)
static void atk57(void)
{
- gActiveBank = GetBankByIdentity(0);
+ gActiveBank = GetBankByIdentity(IDENTITY_PLAYER_MON1);
EmitCmd55(0, gBattleOutcome);
MarkBufferBankForExecution(gActiveBank);
gBattlescriptCurrInstr += 1;
}
-static void atk58_return_to_ball(void)
+static void atk58_returntoball(void)
{
gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
EmitReturnMonToBall(0, 1);
@@ -6071,10 +5991,10 @@ static void atk58_return_to_ball(void)
gBattlescriptCurrInstr += 2;
}
-static void atk59_learnmove_inbattle(void)
+static void atk59_handlelearnnewmove(void)
{
- const u8* jumpPtr1 = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
- const u8* jumpPtr2 = BSScriptReadPtr(gBattlescriptCurrInstr + 5);
+ const u8 *jumpPtr1 = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ const u8 *jumpPtr2 = BSScriptReadPtr(gBattlescriptCurrInstr + 5);
u16 ret = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterId], gBattlescriptCurrInstr[9]);
while (ret == 0xFFFE)
@@ -6090,7 +6010,7 @@ static void atk59_learnmove_inbattle(void)
}
else
{
- gActiveBank = GetBankByIdentity(0);
+ gActiveBank = GetBankByIdentity(IDENTITY_PLAYER_MON1);
if (gBattlePartyID[gActiveBank] == gBattleStruct->expGetterId
&& !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED))
@@ -6099,7 +6019,7 @@ static void atk59_learnmove_inbattle(void)
}
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
- gActiveBank = GetBankByIdentity(2);
+ gActiveBank = GetBankByIdentity(IDENTITY_PLAYER_MON2);
if (gBattlePartyID[gActiveBank] == gBattleStruct->expGetterId
&& !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED))
{
@@ -6317,19 +6237,19 @@ static u32 GetTrainerMoneyToGive(u16 trainerId)
lastMonLevel = party[gTrainers[trainerId].partySize - 1].lvl;
}
break;
- case PARTY_FLAG_CUSTOM_MOVES:
+ case F_TRAINER_PARTY_CUSTOM_MOVESET:
{
const struct TrainerMonNoItemCustomMoves *party = gTrainers[trainerId].party.NoItemCustomMoves;
lastMonLevel = party[gTrainers[trainerId].partySize - 1].lvl;
}
break;
- case PARTY_FLAG_HAS_ITEM:
+ case F_TRAINER_PARTY_HELD_ITEM:
{
const struct TrainerMonItemDefaultMoves *party = gTrainers[trainerId].party.ItemDefaultMoves;
lastMonLevel = party[gTrainers[trainerId].partySize - 1].lvl;
}
break;
- case PARTY_FLAG_CUSTOM_MOVES | PARTY_FLAG_HAS_ITEM:
+ case F_TRAINER_PARTY_CUSTOM_MOVESET | F_TRAINER_PARTY_HELD_ITEM:
{
const struct TrainerMonItemCustomMoves *party = gTrainers[trainerId].party.ItemCustomMoves;
lastMonLevel = party[gTrainers[trainerId].partySize - 1].lvl;
@@ -6367,7 +6287,7 @@ static void atk5D_getmoneyreward(void)
gBattlescriptCurrInstr++;
}
-static void atk5E_8025A70(void)
+static void atk5E(void)
{
gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
@@ -6394,7 +6314,7 @@ static void atk5E_8025A70(void)
}
}
-static void atk5F_8025B24(void)
+static void atk5F(void)
{
gActiveBank = gBankAttacker;
gBankAttacker = gBankTarget;
@@ -6408,7 +6328,7 @@ static void atk5F_8025B24(void)
gBattlescriptCurrInstr++;
}
-static void atk60_increment_gamestat(void)
+static void atk60_incrementgamestat(void)
{
if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
IncrementGameStat(gBattlescriptCurrInstr[1]);
@@ -6416,7 +6336,7 @@ static void atk60_increment_gamestat(void)
gBattlescriptCurrInstr += 2;
}
-static void atk61_draw_party_status_summary(void)
+static void atk61_drawpartystatussummary(void)
{
s32 i;
struct Pokemon* party;
@@ -6453,7 +6373,7 @@ static void atk61_draw_party_status_summary(void)
gBattlescriptCurrInstr += 2;
}
-static void atk62_08025C6C(void)
+static void atk62(void)
{
gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
EmitCmd49(0);
@@ -6464,10 +6384,10 @@ static void atk62_08025C6C(void)
static void atk63_jumptorandomattack(void)
{
- if (gBattlescriptCurrInstr[1] != 0)
+ if (gBattlescriptCurrInstr[1])
gCurrentMove = gRandomMove;
else
- gLastUsedMove = gCurrentMove = gRandomMove;
+ gChosenMove = gCurrentMove = gRandomMove;
gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect];
}
@@ -6569,7 +6489,7 @@ static void atk67_yesnobox(void)
}
}
-static void atk68_cancel_everyones_actions(void)
+static void atk68_cancelallactions(void)
{
s32 i;
@@ -6579,7 +6499,7 @@ static void atk68_cancel_everyones_actions(void)
gBattlescriptCurrInstr++;
}
-static void atk69_dmg_adjustment3(void) // The same as 0x7, except there's no random damage multiplier.
+static void atk69_adjustsetdamage(void) // The same as 0x7, except there's no random damage multiplier.
{
u8 holdEffect, quality;
@@ -6648,7 +6568,7 @@ static void atk6B_atknameinbuff1(void)
gBattlescriptCurrInstr++;
}
-static void atk6C_draw_lvlupbox(void)
+static void atk6C_drawlvlupbox(void)
{
if (gBattleScripting.atk6C_state == 0)
{
@@ -6863,8 +6783,8 @@ static bool8 sub_804F344(void)
return (gBattle_BG2_X != 0x1A0);
}
-#define sDestroy data0
-#define sSavedLvlUpBoxXPosition data1
+#define sDestroy data[0]
+#define sSavedLvlUpBoxXPosition data[1]
static void PutMonIconOnLvlUpBox(void)
{
@@ -6922,19 +6842,19 @@ static bool32 IsMonGettingExpSentOut(void)
return FALSE;
}
-static void atk6D_reset_sentpokes_value(void)
+static void atk6D_resetsentmonsvalue(void)
{
ResetSentPokesToOpponentValue();
gBattlescriptCurrInstr++;
}
-static void atk6E_set_atk_to_player0(void)
+static void atk6E_setatktoplayer0(void)
{
- gBankAttacker = GetBankByIdentity(0);
+ gBankAttacker = GetBankByIdentity(IDENTITY_PLAYER_MON1);
gBattlescriptCurrInstr++;
}
-static void atk6F_set_visible(void)
+static void atk6F_makevisible(void)
{
gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
EmitSpriteInvisibility(0, FALSE);
@@ -6943,7 +6863,7 @@ static void atk6F_set_visible(void)
gBattlescriptCurrInstr += 2;
}
-static void atk70_record_last_used_ability(void)
+static void atk70_recordlastability(void)
{
gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
RecordAbilityBattle(gActiveBank, gLastUsedAbility);
@@ -6955,13 +6875,13 @@ void BufferMoveToLearnIntoBattleTextBuff2(void)
PREPARE_MOVE_BUFFER(gBattleTextBuff2, gMoveToLearn);
}
-static void atk71_buffer_move_to_learn(void)
+static void atk71_buffermovetolearn(void)
{
BufferMoveToLearnIntoBattleTextBuff2();
gBattlescriptCurrInstr++;
}
-static void atk72_jump_if_run_attempt_success(void)
+static void atk72_jumpifplayerran(void)
{
if (TryRunFromBattle(gBank1))
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
@@ -6969,7 +6889,7 @@ static void atk72_jump_if_run_attempt_success(void)
gBattlescriptCurrInstr += 5;
}
-static void atk73_hp_thresholds(void)
+static void atk73_hpthresholds(void)
{
u8 opposingBank;
s32 result;
@@ -6996,7 +6916,7 @@ static void atk73_hp_thresholds(void)
gBattlescriptCurrInstr += 2;
}
-static void atk74_hp_thresholds2(void)
+static void atk74_hpthresholds2(void)
{
u8 opposingBank;
s32 result;
@@ -7022,7 +6942,7 @@ static void atk74_hp_thresholds2(void)
gBattlescriptCurrInstr += 2;
}
-static void atk75_item_effect_on_opponent(void)
+static void atk75_useitemonopponent(void)
{
gBankInMenu = gBankAttacker;
ExecuteTableBasedItemEffect(&gEnemyParty[gBattlePartyID[gBankAttacker]], gLastUsedItem, gBattlePartyID[gBankAttacker], 0, 1);
@@ -7044,13 +6964,13 @@ static void atk76_various(void)
break;
case VARIOUS_SET_MAGIC_COAT_TARGET:
gBankAttacker = gBankTarget;
- side = GetBankSide(gBankAttacker) ^ 1;
+ side = GetBankSide(gBankAttacker) ^ BIT_SIDE;
if (gSideTimers[side].followmeTimer != 0 && gBattleMons[gSideTimers[side].followmeTarget].hp != 0)
gBankTarget = gSideTimers[side].followmeTarget;
else
gBankTarget = gActiveBank;
break;
- case VARIOUS_CAN_RUN_FROM_BATTLE:
+ case VARIOUS_IS_RUNNING_IMPOSSIBLE:
gBattleCommunication[0] = IsRunningFromBattleImpossible();
break;
case VARIOUS_GET_MOVE_TARGET:
@@ -7209,10 +7129,10 @@ static void atk76_various(void)
gBattlescriptCurrInstr += 3;
}
-static void atk77_set_protect_like(void) // protect and endure
+static void atk77_setprotectlike(void) // protect and endure
{
bool8 notLastTurn = TRUE;
- u16 lastMove = gUnknown_02024260[gBankAttacker];
+ u16 lastMove = gLastResultingMoves[gBankAttacker];
if (lastMove != MOVE_PROTECT && lastMove != MOVE_DETECT && lastMove != MOVE_ENDURE)
gDisableStructs[gBankAttacker].protectUses = 0;
@@ -7292,9 +7212,9 @@ static void atk79_setatkhptozero(void)
gBattlescriptCurrInstr++;
}
-static void atk7A_jumpwhiletargetvalid(void) // Used by intimidate to loop through all targets.
+static void atk7A_jumpifnexttargetvalid(void)
{
- const u8* jumpPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ const u8 *jumpPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
@@ -7312,10 +7232,12 @@ static void atk7A_jumpwhiletargetvalid(void) // Used by intimidate to loop throu
gBattlescriptCurrInstr = jumpPtr;
}
else
+ {
gBattlescriptCurrInstr += 5;
+ }
}
-static void atk7B_healhalfHP_if_possible(void)
+static void atk7B_tryhealhalfhealth(void)
{
const u8* failPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
@@ -7383,7 +7305,7 @@ static void atk7C_trymirrormove(void)
}
}
-static void atk7D_set_rain(void)
+static void atk7D_setrain(void)
{
if (gBattleWeather & WEATHER_RAIN_ANY)
{
@@ -7464,9 +7386,9 @@ static void atk80_manipulatedamage(void)
gBattlescriptCurrInstr += 2;
}
-static void atk81_setrest(void)
+static void atk81_trysetrest(void)
{
- const u8* failJump = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ const u8 *failJump = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
gActiveBank = gBankTarget = gBankAttacker;
gBattleMoveDamage = gBattleMons[gBankTarget].maxHP * (-1);
@@ -7530,9 +7452,9 @@ bool8 UproarWakeUpCheck(u8 bank)
return TRUE;
}
-static void atk84_jump_if_cant_sleep(void)
+static void atk84_jumpifcantmakeasleep(void)
{
- const u8* jumpPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ const u8 *jumpPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
if (UproarWakeUpCheck(gBankTarget))
{
@@ -7636,9 +7558,9 @@ static void atk88_negativedamage(void)
gBattlescriptCurrInstr++;
}
-static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8* BS_ptr)
+static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8 *BS_ptr)
{
- bool8 certain = 0;
+ bool8 certain = FALSE;
bool8 notProtectAffected = FALSE;
u32 index;
@@ -7746,15 +7668,15 @@ static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8* BS_ptr)
if (statValue == -2)
{
gBattleTextBuff2[1] = B_BUFF_STRING;
- gBattleTextBuff2[2] = 0xD3; // harshly
- gBattleTextBuff2[3] = 0xD3 >> 8;
+ gBattleTextBuff2[2] = STRINGID_STATHARSHLY;
+ gBattleTextBuff2[3] = STRINGID_STATHARSHLY >> 8;
index = 4;
}
gBattleTextBuff2[index] = B_BUFF_STRING;
index++;
- gBattleTextBuff2[index] = 0xD4; // fell
+ gBattleTextBuff2[index] = STRINGID_STATFELL;
index++;
- gBattleTextBuff2[index] = 0xD4 >> 8;
+ gBattleTextBuff2[index] = STRINGID_STATFELL >> 8;
index++;
gBattleTextBuff2[index] = B_BUFF_EOS;
@@ -7773,15 +7695,15 @@ static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8* BS_ptr)
if (statValue == 2)
{
gBattleTextBuff2[1] = B_BUFF_STRING;
- gBattleTextBuff2[2] = 0xD1; // sharply
- gBattleTextBuff2[3] = 0xD1 >> 8;
+ gBattleTextBuff2[2] = STRINGID_STATSHARPLY;
+ gBattleTextBuff2[3] = STRINGID_STATSHARPLY >> 8;
index = 4;
}
gBattleTextBuff2[index] = B_BUFF_STRING;
index++;
- gBattleTextBuff2[index] = 0xD2; // rose
+ gBattleTextBuff2[index] = STRINGID_STATROSE;
index++;
- gBattleTextBuff2[index] = 0xD2 >> 8;
+ gBattleTextBuff2[index] = STRINGID_STATROSE >> 8;
index++;
gBattleTextBuff2[index] = B_BUFF_EOS;
@@ -7844,7 +7766,7 @@ static void atk8C_confuseifrepeatingattackends(void)
gBattlescriptCurrInstr++;
}
-static void atk8D_setmultihit_counter(void)
+static void atk8D_setmultihitcounter(void)
{
if (gBattlescriptCurrInstr[1])
{
@@ -7862,14 +7784,14 @@ static void atk8D_setmultihit_counter(void)
gBattlescriptCurrInstr += 2;
}
-static void atk8E_init_multihit_string(void)
+static void atk8E_initmultihitstring(void)
{
PREPARE_BYTE_NUMBER_BUFFER(gBattleScripting.multihitString, 1, 0)
gBattlescriptCurrInstr++;
}
-static bool8 sub_8051064(void)
+static bool8 TryDoForceSwitchOut(void)
{
if (gBattleMons[gBankAttacker].level >= gBattleMons[gBankTarget].level)
{
@@ -7886,7 +7808,7 @@ static bool8 sub_8051064(void)
*(gBattleStruct->field_58 + gBankTarget) = gBattlePartyID[gBankTarget];
}
- gBattlescriptCurrInstr = gUnknown_082DADD8;
+ gBattlescriptCurrInstr = BattleScript_SuccessForceOut;
return TRUE;
}
@@ -8014,7 +7936,7 @@ static void atk8F_forcerandomswitch(void)
}
else
{
- if (sub_8051064())
+ if (TryDoForceSwitchOut())
{
do
{
@@ -8047,11 +7969,11 @@ static void atk8F_forcerandomswitch(void)
}
else
{
- sub_8051064();
+ TryDoForceSwitchOut();
}
}
-static void atk90_conversion_type_change(void) // randomly changes user's type to one of its moves' type
+static void atk90_tryconversiontypechange(void) // randomly changes user's type to one of its moves' type
{
u8 validMoves = 0;
u8 moveChecked;
@@ -8155,7 +8077,7 @@ static void atk92_setlightscreen(void)
gBattlescriptCurrInstr++;
}
-static void atk93_ko_move(void)
+static void atk93_tryKO(void)
{
u8 holdEffect, param;
@@ -8319,7 +8241,7 @@ static void atk96_weatherdamage(void)
gBattlescriptCurrInstr++;
}
-static void atk97_try_infatuation(void)
+static void atk97_tryinfatuating(void)
{
struct Pokemon *monAttacker, *monTarget;
u16 speciesAttacker, speciesTarget;
@@ -8364,7 +8286,7 @@ static void atk97_try_infatuation(void)
}
}
-static void atk98_status_icon_update(void)
+static void atk98_updatestatusicon(void)
{
if (gBattleExecBuffer)
return;
@@ -8414,7 +8336,7 @@ static void atk99_setmist(void)
gBattlescriptCurrInstr++;
}
-static void atk9A_set_focusenergy(void)
+static void atk9A_setfocusenergy(void)
{
if (gBattleMons[gBankAttacker].status2 & STATUS2_FOCUS_ENERGY)
{
@@ -8431,7 +8353,7 @@ static void atk9A_set_focusenergy(void)
static void atk9B_transformdataexecution(void)
{
- gLastUsedMove = 0xFFFF;
+ gChosenMove = 0xFFFF;
gBattlescriptCurrInstr++;
if (gBattleMons[gBankTarget].status2 & STATUS2_TRANSFORMED
|| gStatuses3[gBankTarget] & STATUS3_SEMI_INVULNERABLE)
@@ -8473,7 +8395,7 @@ static void atk9B_transformdataexecution(void)
}
}
-static void atk9C_set_substitute(void)
+static void atk9C_setsubstitute(void)
{
u32 hp = gBattleMons[gBankAttacker].maxHP / 4;
if (gBattleMons[gBankAttacker].maxHP / 4 == 0)
@@ -8511,12 +8433,12 @@ static bool8 IsMoveUncopyableByMimic(u16 move)
static void atk9D_mimicattackcopy(void)
{
- gLastUsedMove = 0xFFFF;
+ gChosenMove = 0xFFFF;
- if (IsMoveUncopyableByMimic(gLastUsedMovesByBanks[gBankTarget])
+ if (IsMoveUncopyableByMimic(gLastMoves[gBankTarget])
|| gBattleMons[gBankAttacker].status2 & STATUS2_TRANSFORMED
- || gLastUsedMovesByBanks[gBankTarget] == 0
- || gLastUsedMovesByBanks[gBankTarget] == 0xFFFF)
+ || gLastMoves[gBankTarget] == 0
+ || gLastMoves[gBankTarget] == 0xFFFF)
{
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
}
@@ -8526,20 +8448,20 @@ static void atk9D_mimicattackcopy(void)
for (i = 0; i < 4; i++)
{
- if (gBattleMons[gBankAttacker].moves[i] == gLastUsedMovesByBanks[gBankTarget])
+ if (gBattleMons[gBankAttacker].moves[i] == gLastMoves[gBankTarget])
break;
}
if (i == 4)
{
- gBattleMons[gBankAttacker].moves[gCurrMovePos] = gLastUsedMovesByBanks[gBankTarget];
- if (gBattleMoves[gLastUsedMovesByBanks[gBankTarget]].pp < 5)
- gBattleMons[gBankAttacker].pp[gCurrMovePos] = gBattleMoves[gLastUsedMovesByBanks[gBankTarget]].pp;
+ gBattleMons[gBankAttacker].moves[gCurrMovePos] = gLastMoves[gBankTarget];
+ if (gBattleMoves[gLastMoves[gBankTarget]].pp < 5)
+ gBattleMons[gBankAttacker].pp[gCurrMovePos] = gBattleMoves[gLastMoves[gBankTarget]].pp;
else
gBattleMons[gBankAttacker].pp[gCurrMovePos] = 5;
- PREPARE_MOVE_BUFFER(gBattleTextBuff1, gLastUsedMovesByBanks[gBankTarget])
+ PREPARE_MOVE_BUFFER(gBattleTextBuff1, gLastMoves[gBankTarget])
gDisableStructs[gBankAttacker].unk18_b |= gBitTable[gCurrMovePos];
gBattlescriptCurrInstr += 5;
@@ -8654,7 +8576,7 @@ static void atkA3_disablelastusedattack(void)
for (i = 0; i < 4; i++)
{
- if (gBattleMons[gBankTarget].moves[i] == gLastUsedMovesByBanks[gBankTarget])
+ if (gBattleMons[gBankTarget].moves[i] == gLastMoves[gBankTarget])
break;
}
if (gDisableStructs[gBankTarget].disabledMove == 0
@@ -8673,19 +8595,19 @@ static void atkA3_disablelastusedattack(void)
}
}
-static void atkA4_setencore(void)
+static void atkA4_trysetencore(void)
{
s32 i;
for (i = 0; i < 4; i++)
{
- if (gBattleMons[gBankTarget].moves[i] == gLastUsedMovesByBanks[gBankTarget])
+ if (gBattleMons[gBankTarget].moves[i] == gLastMoves[gBankTarget])
break;
}
- if (gLastUsedMovesByBanks[gBankTarget] == MOVE_STRUGGLE
- || gLastUsedMovesByBanks[gBankTarget] == MOVE_ENCORE
- || gLastUsedMovesByBanks[gBankTarget] == MOVE_MIRROR_MOVE)
+ if (gLastMoves[gBankTarget] == MOVE_STRUGGLE
+ || gLastMoves[gBankTarget] == MOVE_ENCORE
+ || gLastMoves[gBankTarget] == MOVE_MIRROR_MOVE)
{
i = 4;
}
@@ -8731,13 +8653,13 @@ static void atkA5_painsplitdmgcalc(void)
static void atkA6_settypetorandomresistance(void) // conversion 2
{
- if (gUnknown_02024250[gBankAttacker] == 0
- || gUnknown_02024250[gBankAttacker] == 0xFFFF)
+ if (gLastLandedMoves[gBankAttacker] == 0
+ || gLastLandedMoves[gBankAttacker] == 0xFFFF)
{
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
}
- else if (IsTwoTurnsMove(gUnknown_02024250[gBankAttacker])
- && gBattleMons[gUnknown_02024270[gBankAttacker]].status2 & STATUS2_MULTIPLETURNS)
+ else if (IsTwoTurnsMove(gLastLandedMoves[gBankAttacker])
+ && gBattleMons[gLastHitBy[gBankAttacker]].status2 & STATUS2_MULTIPLETURNS)
{
gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
}
@@ -8751,7 +8673,7 @@ static void atkA6_settypetorandomresistance(void) // conversion 2
i *= 3;
- if (TYPE_EFFECT_ATK_TYPE(i) == gUnknown_02024258[gBankAttacker]
+ if (TYPE_EFFECT_ATK_TYPE(i) == gLastHitByType[gBankAttacker]
&& TYPE_EFFECT_MULTIPLIER(i) <= TYPE_MUL_NOT_EFFECTIVE
&& gBattleMons[gBankAttacker].type1 != TYPE_EFFECT_DEF_TYPE(i)
&& gBattleMons[gBankAttacker].type2 != TYPE_EFFECT_DEF_TYPE(i))
@@ -8774,7 +8696,7 @@ static void atkA6_settypetorandomresistance(void) // conversion 2
case TYPE_FORESIGHT:
break;
default:
- if (TYPE_EFFECT_ATK_TYPE(j) == gUnknown_02024258[gBankAttacker]
+ if (TYPE_EFFECT_ATK_TYPE(j) == gLastHitByType[gBankAttacker]
&& TYPE_EFFECT_MULTIPLIER(j) <= 5
&& gBattleMons[gBankAttacker].type1 != TYPE_EFFECT_DEF_TYPE(i)
&& gBattleMons[gBankAttacker].type2 != TYPE_EFFECT_DEF_TYPE(i))
@@ -8805,13 +8727,13 @@ static void atkA7_setalwayshitflag(void)
static void atkA8_copymovepermanently(void) // sketch
{
- gLastUsedMove = 0xFFFF;
+ gChosenMove = 0xFFFF;
if (!(gBattleMons[gBankAttacker].status2 & STATUS2_TRANSFORMED)
- && gUnknownMovesUsedByBanks[gBankTarget] != MOVE_STRUGGLE
- && gUnknownMovesUsedByBanks[gBankTarget] != 0
- && gUnknownMovesUsedByBanks[gBankTarget] != 0xFFFF
- && gUnknownMovesUsedByBanks[gBankTarget] != MOVE_SKETCH)
+ && gLastPrintedMoves[gBankTarget] != MOVE_STRUGGLE
+ && gLastPrintedMoves[gBankTarget] != 0
+ && gLastPrintedMoves[gBankTarget] != 0xFFFF
+ && gLastPrintedMoves[gBankTarget] != MOVE_SKETCH)
{
s32 i;
@@ -8819,7 +8741,7 @@ static void atkA8_copymovepermanently(void) // sketch
{
if (gBattleMons[gBankAttacker].moves[i] == MOVE_SKETCH)
continue;
- if (gBattleMons[gBankAttacker].moves[i] == gUnknownMovesUsedByBanks[gBankTarget])
+ if (gBattleMons[gBankAttacker].moves[i] == gLastPrintedMoves[gBankTarget])
break;
}
@@ -8831,8 +8753,8 @@ static void atkA8_copymovepermanently(void) // sketch
{
struct MovePpInfo movePpData;
- gBattleMons[gBankAttacker].moves[gCurrMovePos] = gUnknownMovesUsedByBanks[gBankTarget];
- gBattleMons[gBankAttacker].pp[gCurrMovePos] = gBattleMoves[gUnknownMovesUsedByBanks[gBankTarget]].pp;
+ gBattleMons[gBankAttacker].moves[gCurrMovePos] = gLastPrintedMoves[gBankTarget];
+ gBattleMons[gBankAttacker].pp[gCurrMovePos] = gBattleMoves[gLastPrintedMoves[gBankTarget]].pp;
gActiveBank = gBankAttacker;
for (i = 0; i < 4; i++)
@@ -8845,7 +8767,7 @@ static void atkA8_copymovepermanently(void) // sketch
EmitSetMonData(0, REQUEST_MOVES_PP_BATTLE, 0, sizeof(struct MovePpInfo), &movePpData);
MarkBufferBankForExecution(gActiveBank);
- PREPARE_MOVE_BUFFER(gBattleTextBuff1, gUnknownMovesUsedByBanks[gBankTarget])
+ PREPARE_MOVE_BUFFER(gBattleTextBuff1, gLastPrintedMoves[gBankTarget])
gBattlescriptCurrInstr += 5;
}
@@ -8862,7 +8784,7 @@ static bool8 IsTwoTurnsMove(u16 move)
|| gBattleMoves[move].effect == EFFECT_RAZOR_WIND
|| gBattleMoves[move].effect == EFFECT_SKY_ATTACK
|| gBattleMoves[move].effect == EFFECT_SOLARBEAM
- || gBattleMoves[move].effect == EFFECT_FLY
+ || gBattleMoves[move].effect == EFFECT_SEMI_INVULNERABLE
|| gBattleMoves[move].effect == EFFECT_BIDE)
return TRUE;
else
@@ -8889,7 +8811,7 @@ static u8 AttacksThisTurn(u8 bank, u16 move) // Note: returns 1 if it's a chargi
|| gBattleMoves[move].effect == EFFECT_RAZOR_WIND
|| gBattleMoves[move].effect == EFFECT_SKY_ATTACK
|| gBattleMoves[move].effect == EFFECT_SOLARBEAM
- || gBattleMoves[move].effect == EFFECT_FLY
+ || gBattleMoves[move].effect == EFFECT_SEMI_INVULNERABLE
|| gBattleMoves[move].effect == EFFECT_BIDE)
{
if ((gHitMarker & HITMARKER_x8000000))
@@ -8898,7 +8820,7 @@ static u8 AttacksThisTurn(u8 bank, u16 move) // Note: returns 1 if it's a chargi
return 2;
}
-static void atkA9_sleeptalk_choose_move(void)
+static void atkA9_trychoosesleeptalkmove(void)
{
s32 i;
u8 unusableMovesBits = 0;
@@ -8937,13 +8859,13 @@ static void atkA9_sleeptalk_choose_move(void)
}
}
-static void atkAA_set_destinybond(void)
+static void atkAA_setdestinybond(void)
{
gBattleMons[gBankAttacker].status2 |= STATUS2_DESTINY_BOND;
gBattlescriptCurrInstr++;
}
-static void DestinyBondFlagUpdate(void)
+static void TrySetDestinyBondToHappen(void)
{
u8 sideAttacker = GetBankSide(gBankAttacker);
u8 sideTarget = GetBankSide(gBankTarget);
@@ -8955,9 +8877,9 @@ static void DestinyBondFlagUpdate(void)
}
}
-static void atkAB_DestinyBondFlagUpdate(void)
+static void atkAB_trysetdestinybondtohappen(void)
{
- DestinyBondFlagUpdate();
+ TrySetDestinyBondToHappen();
gBattlescriptCurrInstr++;
}
@@ -8976,16 +8898,16 @@ static void atkAC_remaininghptopower(void)
gBattlescriptCurrInstr++;
}
-static void atkAD_spite_ppreduce(void)
+static void atkAD_tryspiteppreduce(void)
{
- if (gLastUsedMovesByBanks[gBankTarget] != 0
- && gLastUsedMovesByBanks[gBankTarget] != 0xFFFF)
+ if (gLastMoves[gBankTarget] != 0
+ && gLastMoves[gBankTarget] != 0xFFFF)
{
s32 i;
for (i = 0; i < 4; i++)
{
- if (gLastUsedMovesByBanks[gBankTarget] == gBattleMons[gBankTarget].moves[i])
+ if (gLastMoves[gBankTarget] == gBattleMons[gBankTarget].moves[i])
break;
}
@@ -8995,7 +8917,7 @@ static void atkAD_spite_ppreduce(void)
if (gBattleMons[gBankTarget].pp[i] < ppToDeduct)
ppToDeduct = gBattleMons[gBankTarget].pp[i];
- PREPARE_MOVE_BUFFER(gBattleTextBuff1, gLastUsedMovesByBanks[gBankTarget])
+ PREPARE_MOVE_BUFFER(gBattleTextBuff1, gLastMoves[gBankTarget])
ConvertIntToDecimalStringN(gBattleTextBuff2, ppToDeduct, 0, 1);
@@ -9027,7 +8949,7 @@ static void atkAD_spite_ppreduce(void)
}
}
-static void atkAE_heal_party_status(void)
+static void atkAE_healpartystatus(void)
{
u32 zero = 0;
u8 toHeal = 0;
@@ -9103,7 +9025,7 @@ static void atkAE_heal_party_status(void)
gBattleMons[gBankAttacker].status1 = 0;
gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE);
- gActiveBank = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ 2);
+ gActiveBank = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ BIT_MON);
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE
&& !(gAbsentBankFlags & gBitTable[gActiveBank]))
{
@@ -9140,7 +9062,7 @@ static void atkAF_cursetarget(void)
}
}
-static void atkB0_set_spikes(void)
+static void atkB0_trysetspikes(void)
{
u8 targetSide = GetBankSide(gBankAttacker) ^ BIT_SIDE;
@@ -9157,13 +9079,13 @@ static void atkB0_set_spikes(void)
}
}
-static void atkB1_set_foresight(void)
+static void atkB1_setforesight(void)
{
gBattleMons[gBankTarget].status2 |= STATUS2_FORESIGHT;
gBattlescriptCurrInstr++;
}
-static void atkB2_setperishsong(void)
+static void atkB2_trysetperishsong(void)
{
s32 i;
s32 notAffectedCount = 0;
@@ -9196,7 +9118,7 @@ static void atkB3_rolloutdamagecalculation(void)
if (gBattleMoveFlags & MOVESTATUS_NOEFFECT)
{
CancelMultiTurnMoves(gBankAttacker);
- gBattlescriptCurrInstr = BattleScript_PauseEffectivenessSoundResultMsgEndMove;
+ gBattlescriptCurrInstr = BattleScript_MoveMissedPause;
}
else
{
@@ -9240,7 +9162,7 @@ static void atkB5_furycuttercalc(void)
if (gBattleMoveFlags & MOVESTATUS_NOEFFECT)
{
gDisableStructs[gBankAttacker].furyCutterCounter = 0;
- gBattlescriptCurrInstr = BattleScript_PauseEffectivenessSoundResultMsgEndMove;
+ gBattlescriptCurrInstr = BattleScript_MoveMissedPause;
}
else
{
@@ -9286,7 +9208,7 @@ static void atkB7_presentdamagecalculation(void)
gBattleMoveDamage *= -1;
}
if (rand < 204)
- gBattlescriptCurrInstr = BattleScript_PresentDamageTarget;
+ gBattlescriptCurrInstr = BattleScript_HitFromCritCalc;
else if (gBattleMons[gBankTarget].maxHP == gBattleMons[gBankTarget].hp)
gBattlescriptCurrInstr = BattleScript_AlreadyAtFullHp;
else
@@ -9296,7 +9218,7 @@ static void atkB7_presentdamagecalculation(void)
}
}
-static void atkB8_set_safeguard(void)
+static void atkB8_setsafeguard(void)
{
if (gSideAffecting[GET_BANK_SIDE(gBankAttacker)] & SIDE_STATUS_SAFEGUARD)
{
@@ -9385,7 +9307,7 @@ static void atkBA_jumpifnopursuitswitchdmg(void)
gBankTarget = GetBankByIdentity(IDENTITY_PLAYER_MON2);
}
- if (gActionForBanks[gBankTarget] == 0
+ if (gActionForBanks[gBankTarget] == ACTION_USE_MOVE
&& gBankAttacker == *(gBattleStruct->moveTarget + gBankTarget)
&& !(gBattleMons[gBankTarget].status1 & (STATUS_SLEEP | STATUS_FREEZE))
&& gBattleMons[gBankAttacker].hp
@@ -9501,7 +9423,7 @@ static void atkBE_rapidspinfree(void)
}
}
-static void atkBF_set_defense_curl(void)
+static void atkBF_setdefensecurlbit(void)
{
gBattleMons[gBankAttacker].status2 |= STATUS2_DEFENSE_CURL;
gBattlescriptCurrInstr++;
@@ -9533,7 +9455,7 @@ static void atkC0_recoverbasedonsunlight(void)
}
#ifdef NONMATCHING
-static void atkC1_hidden_power_calc(void)
+static void atkC1_hiddenpowercalc(void)
{
u32 powerBits = 0;
u32 typeBits = 0;
@@ -9564,7 +9486,7 @@ static void atkC1_hidden_power_calc(void)
#else
__attribute__((naked))
-static void atkC1_hidden_power_calc(void)
+static void atkC1_hiddenpowercalc(void)
{
asm(".syntax unified\n\
push {r4-r7,lr}\n\
@@ -9707,7 +9629,7 @@ _080544F0:\n\
}
#endif // NONMATCHING
-static void atkC2_selectnexttarget(void)
+static void atkC2_selectfirstvalidtarget(void)
{
for (gBankTarget = 0; gBankTarget < gNoOfAllBanks; gBankTarget++)
{
@@ -9719,7 +9641,7 @@ static void atkC2_selectnexttarget(void)
gBattlescriptCurrInstr++;
}
-static void atkC3_setfutureattack(void)
+static void atkC3_trysetfutureattack(void)
{
if (gWishFutureKnock.futureSightCounter[gBankTarget] != 0)
{
@@ -9747,9 +9669,9 @@ static void atkC3_setfutureattack(void)
}
}
-static void atkC4_beat_up(void)
+static void atkC4_trydobeatup(void)
{
- struct Pokemon* party;
+ struct Pokemon *party;
if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
party = gPlayerParty;
@@ -9950,7 +9872,7 @@ static void atkD0_settaunt(void)
}
}
-static void atkD1_set_helpinghand(void)
+static void atkD1_trysethelpinghand(void)
{
gBankTarget = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ BIT_MON);
@@ -9968,7 +9890,7 @@ static void atkD1_set_helpinghand(void)
}
}
-static void atkD2_swap_items(void) // trick
+static void atkD2_tryswapitems(void) // trick
{
// opponent can't swap items with player in regular battles
if (gBattleTypeFlags & BATTLE_TYPE_x4000000
@@ -10055,7 +9977,7 @@ static void atkD2_swap_items(void) // trick
}
}
-static void atkD3_copy_ability(void) // role play
+static void atkD3_trycopyability(void) // role play
{
if (gBattleMons[gBankTarget].ability != 0
&& gBattleMons[gBankTarget].ability != ABILITY_WONDER_GUARD)
@@ -10070,7 +9992,7 @@ static void atkD3_copy_ability(void) // role play
}
}
-static void atkD4_wish_effect(void)
+static void atkD4_trywish(void)
{
switch (gBattlescriptCurrInstr[1])
{
@@ -10103,7 +10025,7 @@ static void atkD4_wish_effect(void)
}
}
-static void atkD5_setroots(void) // ingrain
+static void atkD5_trysetroots(void) // ingrain
{
if (gStatuses3[gBankAttacker] & STATUS3_ROOTED)
{
@@ -10168,7 +10090,7 @@ static void atkD9_scaledamagebyhealthratio(void)
gBattlescriptCurrInstr++;
}
-static void atkDA_abilityswap(void) // skill swap
+static void atkDA_tryswapabilities(void) // skill swap
{
if ((gBattleMons[gBankAttacker].ability == 0
&& gBattleMons[gBankTarget].ability == 0)
@@ -10188,7 +10110,7 @@ static void atkDA_abilityswap(void) // skill swap
}
}
-static void atkDB_imprisoneffect(void)
+static void atkDB_tryimprision(void)
{
if ((gStatuses3[gBankAttacker] & STATUS3_IMPRISONED_OTHERS))
{
@@ -10230,7 +10152,7 @@ static void atkDB_imprisoneffect(void)
}
}
-static void atkDC_setgrudge(void)
+static void atkDC_trysetgrudge(void)
{
if (gStatuses3[gBankAttacker] & STATUS3_GRUDGE)
{
@@ -10313,7 +10235,7 @@ static void atkDE_asistattackselect(void)
}
}
-static void atkDF_setmagiccoat(void)
+static void atkDF_trysetmagiccoat(void)
{
gBankTarget = gBankAttacker;
gSpecialStatuses[gBankAttacker].flag20 = 1;
@@ -10328,7 +10250,7 @@ static void atkDF_setmagiccoat(void)
}
}
-static void atkE0_setstealstatchange(void) // snatch
+static void atkE0_trysetsnatch(void) // snatch
{
gSpecialStatuses[gBankAttacker].flag20 = 1;
if (gCurrentTurnActionNumber == gNoOfAllBanks - 1) // moves last turn
@@ -10342,7 +10264,7 @@ static void atkE0_setstealstatchange(void) // snatch
}
}
-static void atkE1_intimidate_string_loader(void)
+static void atkE1_trygetintimidatetarget(void)
{
u8 side;
@@ -10365,7 +10287,7 @@ static void atkE1_intimidate_string_loader(void)
gBattlescriptCurrInstr += 5;
}
-static void atkE2_switchout_abilities(void)
+static void atkE2_switchoutabilities(void)
{
gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]);
@@ -10413,7 +10335,7 @@ static void atkE4_getsecretpowereffect(void)
case BATTLE_TERRAIN_POND:
gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_SPD_MINUS_1;
break;
- case BATTLE_TERRAIN_ROCK:
+ case BATTLE_TERRAIN_MOUNTAIN:
gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_CONFUSION;
break;
case BATTLE_TERRAIN_CAVE:
@@ -10502,7 +10424,7 @@ static void atkE5_pickup(void)
gBattlescriptCurrInstr++;
}
-static void atkE6_castform_change_animation(void)
+static void atkE6_docastformchangeanimation(void)
{
gActiveBank = gBattleScripting.bank;
@@ -10515,7 +10437,7 @@ static void atkE6_castform_change_animation(void)
gBattlescriptCurrInstr++;
}
-static void atkE7_castform_data_change(void)
+static void atkE7_trycastformdatachange(void)
{
u8 form;
@@ -10578,7 +10500,7 @@ static void atkE9_setweatherballtype(void)
gBattlescriptCurrInstr++;
}
-static void atkEA_recycleitem(void)
+static void atkEA_tryrecycleitem(void)
{
u16 *usedHeldItem;
@@ -10619,7 +10541,7 @@ static void atkEB_settypetoterrain(void)
}
}
-static void atkEC_pursuit_sth(void)
+static void atkEC_pursuitrelated(void)
{
gActiveBank = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ BIT_MON);
@@ -10641,7 +10563,7 @@ static void atkEC_pursuit_sth(void)
}
}
-static void atkED_802B4B4(void)
+static void atkEF_snatchsetbanks(void)
{
gEffectBank = gBankAttacker;
@@ -10676,7 +10598,7 @@ static void atkEE_removelightscreenreflect(void) // brick break
gBattlescriptCurrInstr++;
}
-static void atkEF_pokeball_catch_calculation(void)
+static void atkEF_handleballthrow(void)
{
u8 ballMultiplier = 0;
@@ -10827,7 +10749,7 @@ static void atkEF_pokeball_catch_calculation(void)
}
}
-static void atkF0_give_caught_mon(void)
+static void atkF0_givecaughtmon(void)
{
if (GiveMonToPlayer(&gEnemyParty[gBattlePartyID[gBankAttacker ^ BIT_SIDE]]) != MON_GIVEN_TO_PARTY)
{
@@ -10856,7 +10778,7 @@ static void atkF0_give_caught_mon(void)
gBattlescriptCurrInstr++;
}
-static void atkF1_set_caught_mon_dex_flags(void)
+static void atkF1_trysetcaughtmondexflags(void)
{
u16 species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL);
u32 personality = GetMonData(&gEnemyParty[0], MON_DATA_PERSONALITY, NULL);
@@ -10872,7 +10794,7 @@ static void atkF1_set_caught_mon_dex_flags(void)
}
}
-static void atkF2_display_dex_info(void)
+static void atkF2_displaydexinfo(void)
{
u16 species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL);
@@ -10991,7 +10913,7 @@ void BattleDestroyYesNoCursorAt(u8 cursorPosition)
CopyBgTilemapBufferToVram(0);
}
-static void atkF3_nickname_caught_poke(void)
+static void atkF3_trygivecaughtmonnick(void)
{
switch (gBattleCommunication[MULTIUSE_STATE])
{
@@ -11079,18 +11001,18 @@ static void atkF5_removeattackerstatus1(void)
gBattlescriptCurrInstr++;
}
-static void atkF6_action_finished(void)
+static void atkF6_finishaction(void)
{
gCurrentActionFuncId = ACTION_FINISHED;
}
-static void atkF7_turn_finished(void)
+static void atkF7_finishturn(void)
{
gCurrentActionFuncId = ACTION_FINISHED;
gCurrentTurnActionNumber = gNoOfAllBanks;
}
-static void atkF8_trainer_slide_back(void)
+static void atkF8_trainerslideout(void)
{
gActiveBank = GetBankByIdentity(gBattlescriptCurrInstr[1]);
EmitTrainerSlideBack(0);
diff --git a/src/battle_setup.c b/src/battle_setup.c
new file mode 100644
index 000000000..3d4f5afcc
--- /dev/null
+++ b/src/battle_setup.c
@@ -0,0 +1,1884 @@
+#include "global.h"
+#include "constants/trainers.h"
+#include "battle.h"
+#include "battle_setup.h"
+#include "battle_transition.h"
+#include "main.h"
+#include "task.h"
+#include "pokemon_3.h"
+#include "safari_zone.h"
+#include "script.h"
+#include "constants/game_stat.h"
+#include "event_data.h"
+#include "constants/species.h"
+#include "songs.h"
+#include "metatile_behavior.h"
+#include "constants/maps.h"
+#include "field_player_avatar.h"
+#include "fieldmap.h"
+#include "random.h"
+#include "starter_choose.h"
+#include "script_pokemon_80F8.h"
+#include "constants/items.h"
+#include "palette.h"
+#include "window.h"
+#include "field_map_obj.h"
+#include "event_scripts.h"
+#include "trainer_see.h"
+#include "field_message_box.h"
+#include "sound.h"
+#include "strings.h"
+#include "secret_base.h"
+#include "string_util.h"
+
+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;
+};
+
+extern bool8 InBattlePyramid(void);
+extern bool8 InBattlePike(void);
+extern bool32 InTrainerHill(void);
+extern bool32 FieldPoisonEffectIsRunning(void);
+extern void overworld_free_bg_tilemaps(void);
+extern void prev_quest_postbuffer_cursor_backup_reset(void);
+extern void ResetPoisonStepCounter(void);
+extern void sub_81BE72C(void);
+extern void FreezeMapObjects(void);
+extern void sub_808BCF4(void);
+extern void sub_80EECC8(void);
+extern void c2_exit_to_overworld_1_continue_scripts_restart_music(void);
+extern void c2_exit_to_overworld_2_switch(void);
+extern void Overworld_ClearSavedMusic(void);
+extern void CB2_WhiteOut(void);
+extern void sub_80AF6F0(void);
+extern void PlayBattleBGM(void);
+extern void sub_81DA57C(void);
+extern u8 GetSav1Weather(void);
+extern u8 Overworld_GetFlashLevel(void);
+extern u16 sub_81A9AA8(u8 localId);
+extern u16 sub_81D6180(u8 localId);
+extern bool8 GetBattlePyramidTrainerFlag(u8 mapObjId);
+extern bool8 GetTrainerHillTrainerFlag(u8 mapObjId);
+extern bool8 sub_81D5C18(void);
+extern void sub_816306C(u8 a0);
+extern void sub_8163048(u8 a0);
+extern void sub_81A9B04(void);
+extern void sub_81D639C(void);
+extern void sub_81D6384(void);
+extern void sub_81D61E8(void);
+extern void sub_80982B8(void);
+extern void sub_81A9EDC(u16 a0);
+extern void sub_81D572C(u8 a0, u16 arg1);
+extern void IncrementGameStat(u8 statId);
+extern u32 GetGameStat(u8 statId);
+
+extern u32 gBattleTypeFlags;
+extern u8 gBattleOutcome;
+extern void (*gFieldCallback)(void);
+extern u8 gApproachingTrainerId;
+extern u8 gNoOfApproachingTrainers;
+extern u16 gUnknown_03006080;
+
+// this file's functions
+static void DoBattlePikeWildBattle(void);
+static void DoSafariBattle(void);
+static void DoStandardWildBattle(void);
+static void CB2_EndWildBattle(void);
+static void CB2_EndScriptedWildBattle(void);
+static u8 GetWildBattleTransition(void);
+static u8 GetTrainerBattleTransition(void);
+static void sub_80B1218(void);
+static void sub_80B1234(void);
+static void CB2_GiveStarter(void);
+static void CB2_StartFirstBattle(void);
+static void CB2_EndFirstBattle(void);
+static void CB2_EndTrainerBattle(void);
+static bool32 IsPlayerDefeated(u32 battleOutcome);
+static u16 GetRematchTrainerId(u16 trainerId);
+static void RegisterTrainerInMatchCall(void);
+static void HandleRematchVarsOnBattleEnd(void);
+static const u8 *GetIntroSpeechOfApproachingTrainer(void);
+static const u8 *GetTrainerCantBattleSpeech(void);
+
+// ewram data
+EWRAM_DATA static u16 sTrainerBattleMode = 0;
+EWRAM_DATA u16 gTrainerBattleOpponent_A = 0;
+EWRAM_DATA u16 gTrainerBattleOpponent_B = 0;
+EWRAM_DATA u16 gPartnerTrainerId = 0;
+EWRAM_DATA static u16 sTrainerMapObjectLocalId = 0;
+EWRAM_DATA static u8 *sTrainerAIntroSpeech = NULL;
+EWRAM_DATA static u8 *sTrainerBIntroSpeech = NULL;
+EWRAM_DATA static u8 *sTrainerADefeatSpeech = NULL;
+EWRAM_DATA static u8 *sTrainerBDefeatSpeech = NULL;
+EWRAM_DATA static u8 *sTrainerVictorySpeech = NULL;
+EWRAM_DATA static u8 *sTrainerCannotBattleSpeech = NULL;
+EWRAM_DATA static u8 *sTrainerBattleEndScript = NULL;
+EWRAM_DATA static u8 *sTrainerABattleScriptRetAddr = NULL;
+EWRAM_DATA static u8 *sTrainerBBattleScriptRetAddr = NULL;
+EWRAM_DATA static bool8 sShouldCheckTrainerBScript = FALSE;
+EWRAM_DATA static u8 sNoOfPossibleTrainerRetScripts = 0;
+
+// const rom data
+
+// The first transition is used if the enemy pokemon are lower level than our pokemon.
+// Otherwise, the second transition is used.
+static const u8 sBattleTransitionTable_Wild[][2] =
+{
+ {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 sBattleTransitionTable_Trainer[][2] =
+{
+ {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
+};
+
+static const u8 sUnknown_0854FE98[] =
+{
+ B_TRANSITION_29, B_TRANSITION_30, B_TRANSITION_31, B_TRANSITION_32,
+ B_TRANSITION_34, B_TRANSITION_35, B_TRANSITION_36, B_TRANSITION_37,
+ B_TRANSITION_38, B_TRANSITION_39, B_TRANSITION_40, B_TRANSITION_41
+};
+
+static const u8 sUnknown_0854FEA4[] =
+{
+ B_TRANSITION_31, B_TRANSITION_32, B_TRANSITION_33
+};
+
+static const u8 sUnknown_0854FEA7[] =
+{
+ B_TRANSITION_29, B_TRANSITION_31, B_TRANSITION_32, B_TRANSITION_33
+};
+
+static const struct TrainerBattleParameter sOrdinaryBattleParams[] =
+{
+ {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
+ {&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerAIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerCannotBattleSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerABattleScriptRetAddr, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR},
+};
+
+static const struct TrainerBattleParameter sContinueScriptBattleParams[] =
+{
+ {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
+ {&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerAIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerCannotBattleSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerABattleScriptRetAddr, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR},
+};
+
+static const struct TrainerBattleParameter sDoubleBattleParams[] =
+{
+ {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
+ {&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerAIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerCannotBattleSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerABattleScriptRetAddr, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR},
+};
+
+static const struct TrainerBattleParameter sOrdinaryNoIntroBattleParams[] =
+{
+ {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
+ {&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerAIntroSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerCannotBattleSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerABattleScriptRetAddr, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR},
+};
+
+static const struct TrainerBattleParameter sContinueScriptDoubleBattleParams[] =
+{
+ {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
+ {&gTrainerBattleOpponent_A, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerAIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerADefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerCannotBattleSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerABattleScriptRetAddr, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR},
+};
+
+static const struct TrainerBattleParameter sTrainerBOrdinaryBattleParams[] =
+{
+ {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
+ {&gTrainerBattleOpponent_B, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerBIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerBDefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerCannotBattleSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerBBattleScriptRetAddr, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR},
+};
+
+static const struct TrainerBattleParameter sTrainerBContinueScriptBattleParams[] =
+{
+ {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
+ {&gTrainerBattleOpponent_B, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerBIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerBDefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerCannotBattleSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerBBattleScriptRetAddr, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR},
+};
+
+const struct RematchTrainer gRematchTable[REMATCH_TABLE_ENTRIES] =
+{
+ {{0x0025, 0x0028, 0x0029, 0x002a, 0x002b}, 0x0000, 0x0021},
+ {{0x02e1, 0x032c, 0x032d, 0x032e, 0x032f}, 0x0000, 0x0014},
+ {{0x002c, 0x002f, 0x0030, 0x0031, 0x0032}, 0x0000, 0x001a},
+ {{0x0039, 0x003c, 0x003d, 0x003e, 0x003f}, 0x0000, 0x0018},
+ {{0x0040, 0x0043, 0x0044, 0x0045, 0x0046}, 0x0000, 0x0018},
+ {{0x02af, 0x02b0, 0x02b1, 0x02b2, 0x02b3}, 0x0000, 0x0027},
+ {{0x02ff, 0x033c, 0x033d, 0x033e, 0x033f}, 0x0000, 0x0024},
+ {{0x005e, 0x0065, 0x0066, 0x0067, 0x0068}, 0x0000, 0x001a},
+ {{0x004e, 0x0054, 0x0055, 0x0056, 0x0057}, 0x0000, 0x001a},
+ {{0x006c, 0x006e, 0x006f, 0x0070, 0x0071}, 0x0018, 0x0014},
+ {{0x0072, 0x0078, 0x0079, 0x007a, 0x007b}, 0x0000, 0x0013},
+ {{0x0090, 0x034c, 0x034d, 0x034e, 0x034f}, 0x0018, 0x0038},
+ {{0x007f, 0x0084, 0x0085, 0x0086, 0x0087}, 0x0000, 0x0024},
+ {{0x0088, 0x008b, 0x008c, 0x008d, 0x008e}, 0x0000, 0x0013},
+ {{0x008f, 0x0093, 0x0094, 0x0095, 0x0096}, 0x0000, 0x001d},
+ {{0x009b, 0x00af, 0x00b0, 0x00b1, 0x00b2}, 0x0000, 0x0016},
+ {{0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb}, 0x0000, 0x001e},
+ {{0x02a0, 0x0338, 0x0339, 0x033a, 0x033b}, 0x0000, 0x002a},
+ {{0x00c3, 0x0340, 0x0341, 0x0342, 0x0343}, 0x0000, 0x0026},
+ {{0x00c4, 0x00c5, 0x00c6, 0x00c7, 0x00c8}, 0x0000, 0x0021},
+ {{0x00ce, 0x00cf, 0x00d0, 0x00d1, 0x00d2}, 0x0000, 0x001d},
+ {{0x00d8, 0x00db, 0x00dc, 0x00dd, 0x00de}, 0x0018, 0x000d},
+ {{0x02a9, 0x02aa, 0x02ab, 0x02ac, 0x02ad}, 0x0018, 0x0001},
+ {{0x00e2, 0x00e4, 0x00e5, 0x00e6, 0x00e7}, 0x0000, 0x0023},
+ {{0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x00f2}, 0x0000, 0x0026},
+ {{0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd}, 0x0000, 0x0026},
+ {{0x00fe, 0x0101, 0x0102, 0x0103, 0x0104}, 0x0000, 0x0024},
+ {{0x0118, 0x011a, 0x011b, 0x011c, 0x011d}, 0x0000, 0x001f},
+ {{0x0111, 0x0114, 0x0115, 0x0116, 0x0117}, 0x0000, 0x001f},
+ {{0x011f, 0x0120, 0x0121, 0x0122, 0x0123}, 0x0000, 0x0020},
+ {{0x012e, 0x012f, 0x0130, 0x0131, 0x0132}, 0x0000, 0x0019},
+ {{0x0125, 0x0127, 0x0128, 0x0129, 0x012a}, 0x0000, 0x0012},
+ {{0x0133, 0x0134, 0x0135, 0x0136, 0x0137}, 0x0000, 0x001e},
+ {{0x0139, 0x013a, 0x013b, 0x013c, 0x013d}, 0x0018, 0x000c},
+ {{0x013e, 0x0148, 0x0149, 0x014a, 0x014b}, 0x0000, 0x0011},
+ {{0x0153, 0x015a, 0x015b, 0x015c, 0x015d}, 0x0000, 0x0015},
+ {{0x0178, 0x017b, 0x017c, 0x017d, 0x017e}, 0x0000, 0x002b},
+ {{0x0171, 0x0172, 0x0173, 0x0174, 0x0175}, 0x0000, 0x0020},
+ {{0x0166, 0x0168, 0x0169, 0x016a, 0x016b}, 0x0000, 0x0019},
+ {{0x016c, 0x016d, 0x016e, 0x016f, 0x0170}, 0x0000, 0x0020},
+ {{0x0182, 0x0184, 0x0185, 0x0186, 0x0187}, 0x0000, 0x002b},
+ {{0x0161, 0x0162, 0x0163, 0x0164, 0x0165}, 0x0000, 0x0019},
+ {{0x0179, 0x0334, 0x0335, 0x0336, 0x0337}, 0x0000, 0x0029},
+ {{0x0188, 0x0189, 0x018a, 0x018b, 0x018c}, 0x0018, 0x0001},
+ {{0x0196, 0x0199, 0x019a, 0x019b, 0x019c}, 0x0000, 0x0023},
+ {{0x01a3, 0x01a5, 0x01a6, 0x01a7, 0x01a8}, 0x0000, 0x001c},
+ {{0x01ab, 0x01ae, 0x01af, 0x01b0, 0x01b1}, 0x0000, 0x001e},
+ {{0x01b2, 0x01b5, 0x01b6, 0x01b7, 0x01b8}, 0x0000, 0x001c},
+ {{0x01c1, 0x01d1, 0x01d2, 0x01d3, 0x01d4}, 0x0000, 0x0027},
+ {{0x01da, 0x01dd, 0x01de, 0x01df, 0x01e0}, 0x0018, 0x000d},
+ {{0x01e1, 0x01e2, 0x01e7, 0x01e8, 0x01e9}, 0x0000, 0x0012},
+ {{0x01ec, 0x01f1, 0x01f2, 0x01f3, 0x01f4}, 0x0000, 0x0028},
+ {{0x02e4, 0x0330, 0x0331, 0x0332, 0x0333}, 0x0000, 0x0017},
+ {{0x0200, 0x0203, 0x0204, 0x0205, 0x0206}, 0x0000, 0x0019},
+ {{0x0221, 0x0224, 0x0225, 0x0226, 0x0227}, 0x0000, 0x0020},
+ {{0x021a, 0x021d, 0x021e, 0x021f, 0x0220}, 0x0000, 0x0020},
+ {{0x0009, 0x0348, 0x0349, 0x034a, 0x034b}, 0x0018, 0x0011},
+ {{0x022f, 0x0232, 0x0233, 0x0234, 0x0235}, 0x0000, 0x0022},
+ {{0x0228, 0x022b, 0x022c, 0x022d, 0x022e}, 0x0000, 0x0022},
+ {{0x025c, 0x025f, 0x0260, 0x0261, 0x0262}, 0x0000, 0x0013},
+ {{0x026d, 0x026e, 0x026f, 0x0270, 0x0271}, 0x0018, 0x000b},
+ {{0x0273, 0x027c, 0x027d, 0x027e, 0x027f}, 0x0000, 0x001b},
+ {{0x0001, 0x0344, 0x0345, 0x0346, 0x0347}, 0x0018, 0x000c},
+ {{0x0282, 0x0283, 0x0284, 0x0285, 0x0286}, 0x0018, 0x003e},
+ {{0x0291, 0x0292, 0x0293, 0x0294, 0x0294}, 0x0018, 0x002b},
+ {{0x0109, 0x0302, 0x0303, 0x0304, 0x0305}, 0x0000, 0x0003},
+ {{0x010a, 0x0306, 0x0307, 0x0308, 0x0309}, 0x0000, 0x000b},
+ {{0x010b, 0x030a, 0x030b, 0x030c, 0x030d}, 0x0000, 0x0002},
+ {{0x010c, 0x030e, 0x030f, 0x0310, 0x0311}, 0x0000, 0x000c},
+ {{0x010d, 0x0312, 0x0313, 0x0314, 0x0315}, 0x0000, 0x0000},
+ {{0x010e, 0x0316, 0x0317, 0x0318, 0x0319}, 0x0000, 0x0004},
+ {{0x010f, 0x031a, 0x031b, 0x031c, 0x031d}, 0x0000, 0x0006},
+ {{0x0110, 0x031e, 0x031f, 0x0320, 0x0321}, 0x0000, 0x0007},
+ {{0x0105, 0x0105, 0x0105, 0x0105, 0x0105}, 0x0000, 0x0008},
+ {{0x0106, 0x0106, 0x0106, 0x0106, 0x0106}, 0x0000, 0x0008},
+ {{0x0107, 0x0107, 0x0107, 0x0107, 0x0107}, 0x0000, 0x0008},
+ {{0x0108, 0x0108, 0x0108, 0x0108, 0x0108}, 0x0000, 0x0008},
+ {{0x014f, 0x014f, 0x014f, 0x014f, 0x014f}, 0x0000, 0x0008},
+};
+
+static const u16 sBadgeFlags[8] =
+{
+ FLAG_BADGE01_GET, FLAG_BADGE02_GET, FLAG_BADGE03_GET, FLAG_BADGE04_GET,
+ FLAG_BADGE05_GET, FLAG_BADGE06_GET, FLAG_BADGE07_GET, FLAG_BADGE08_GET,
+};
+
+#define tState data[0]
+#define tTransition data[1]
+
+static void Task_BattleStart(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ switch (tState)
+ {
+ case 0:
+ if (!FieldPoisonEffectIsRunning()) // is poison not active?
+ {
+ BattleTransition_StartOnField(tTransition);
+ sub_81BE72C();
+ tState++; // go to case 1.
+ }
+ break;
+ case 1:
+ if (IsBattleTransitionDone() == TRUE)
+ {
+ overworld_free_bg_tilemaps();
+ SetMainCallback2(CB2_InitBattle);
+ prev_quest_postbuffer_cursor_backup_reset();
+ ResetPoisonStepCounter();
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+static void CreateBattleStartTask(u8 transition, u16 song)
+{
+ u8 taskId = CreateTask(Task_BattleStart, 1);
+
+ gTasks[taskId].tTransition = transition;
+ PlayMapChosenOrBattleBGM(song);
+}
+
+#undef tState
+#undef tTransition
+
+void BattleSetup_StartWildBattle(void)
+{
+ if (GetSafariZoneFlag())
+ DoSafariBattle();
+ else
+ DoStandardWildBattle();
+}
+
+void BattleSetup_StartBattlePikeWildBattle(void)
+{
+ DoBattlePikeWildBattle();
+}
+
+static void DoStandardWildBattle(void)
+{
+ ScriptContext2_Enable();
+ FreezeMapObjects();
+ sub_808BCF4();
+ gMain.savedCallback = CB2_EndWildBattle;
+ gBattleTypeFlags = 0;
+ if (InBattlePyramid())
+ {
+ VarSet(VAR_0x400E, 0);
+ gBattleTypeFlags |= BATTLE_TYPE_PYRAMID;
+ }
+ CreateBattleStartTask(GetWildBattleTransition(), 0);
+ IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
+ IncrementGameStat(GAME_STAT_WILD_BATTLES);
+ sub_80EECC8();
+ sub_80B1218();
+}
+
+void BattleSetup_StartRoamerBattle(void)
+{
+ ScriptContext2_Enable();
+ FreezeMapObjects();
+ sub_808BCF4();
+ gMain.savedCallback = CB2_EndWildBattle;
+ gBattleTypeFlags = BATTLE_TYPE_ROAMER;
+ CreateBattleStartTask(GetWildBattleTransition(), 0);
+ IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
+ IncrementGameStat(GAME_STAT_WILD_BATTLES);
+ sub_80EECC8();
+ sub_80B1218();
+}
+
+static void DoSafariBattle(void)
+{
+ ScriptContext2_Enable();
+ FreezeMapObjects();
+ sub_808BCF4();
+ gMain.savedCallback = CB2_EndSafariBattle;
+ gBattleTypeFlags = BATTLE_TYPE_SAFARI;
+ CreateBattleStartTask(GetWildBattleTransition(), 0);
+}
+
+static void DoBattlePikeWildBattle(void)
+{
+ ScriptContext2_Enable();
+ FreezeMapObjects();
+ sub_808BCF4();
+ gMain.savedCallback = CB2_EndWildBattle;
+ gBattleTypeFlags = BATTLE_TYPE_PIKE;
+ CreateBattleStartTask(GetWildBattleTransition(), 0);
+ IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
+ IncrementGameStat(GAME_STAT_WILD_BATTLES);
+ sub_80EECC8();
+ sub_80B1218();
+}
+
+static void DoTrainerBattle(void)
+{
+ CreateBattleStartTask(GetTrainerBattleTransition(), 0);
+ IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
+ IncrementGameStat(GAME_STAT_TRAINER_BATTLES);
+ sub_80B1234();
+}
+
+static void sub_80B0828(void)
+{
+ if (InBattlePyramid())
+ CreateBattleStartTask(sub_80B100C(10), 0);
+ else
+ CreateBattleStartTask(sub_80B100C(11), 0);
+
+ IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
+ IncrementGameStat(GAME_STAT_TRAINER_BATTLES);
+ sub_80B1234();
+}
+
+// Initiates battle where Wally catches Ralts
+void 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;
+ CreateBattleStartTask(B_TRANSITION_SLICE, 0);
+}
+
+void BattleSetup_StartScriptedWildBattle(void)
+{
+ ScriptContext2_Enable();
+ gMain.savedCallback = CB2_EndScriptedWildBattle;
+ gBattleTypeFlags = 0;
+ CreateBattleStartTask(GetWildBattleTransition(), 0);
+ IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
+ IncrementGameStat(GAME_STAT_WILD_BATTLES);
+ sub_80EECC8();
+ sub_80B1218();
+}
+
+void BattleSetup_StartLatiBattle(void)
+{
+ ScriptContext2_Enable();
+ gMain.savedCallback = CB2_EndScriptedWildBattle;
+ gBattleTypeFlags = BATTLE_TYPE_LEGENDARY;
+ CreateBattleStartTask(GetWildBattleTransition(), 0);
+ IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
+ IncrementGameStat(GAME_STAT_WILD_BATTLES);
+ sub_80EECC8();
+ sub_80B1218();
+}
+
+void BattleSetup_StartLegendaryBattle(void)
+{
+ ScriptContext2_Enable();
+ gMain.savedCallback = CB2_EndScriptedWildBattle;
+ gBattleTypeFlags = BATTLE_TYPE_LEGENDARY;
+
+ switch (GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL))
+ {
+ default:
+ case SPECIES_GROUDON:
+ gBattleTypeFlags |= BATTLE_TYPE_GROUDON;
+ CreateBattleStartTask(B_TRANSITION_GROUDON, BGM_BATTLE34);
+ break;
+ case SPECIES_KYOGRE:
+ gBattleTypeFlags |= BATTLE_TYPE_KYOGRE;
+ CreateBattleStartTask(B_TRANSITION_KYOGRE, BGM_BATTLE34);
+ break;
+ case SPECIES_RAYQUAZA:
+ gBattleTypeFlags |= BATTLE_TYPE_RAYQUAZA;
+ CreateBattleStartTask(B_TRANSITION_RAYQUAZA, BGM_BATTLE_LEGENDARY);
+ break;
+ case SPECIES_DEOXYS:
+ CreateBattleStartTask(B_TRANSITION_BLUR, BGM_FRLG_BATTLE_DEOXYS);
+ break;
+ case SPECIES_LUGIA:
+ case SPECIES_HO_OH:
+ CreateBattleStartTask(B_TRANSITION_BLUR, BGM_FRLG_BATTLE_LEGENDARY);
+ break;
+ case SPECIES_MEW:
+ CreateBattleStartTask(B_TRANSITION_GRID_SQUARES, BGM_BATTLE_MEW);
+ break;
+ }
+
+ IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
+ IncrementGameStat(GAME_STAT_WILD_BATTLES);
+ sub_80EECC8();
+ sub_80B1218();
+}
+
+void StartGroudonKyogreBattle(void)
+{
+ ScriptContext2_Enable();
+ gMain.savedCallback = CB2_EndScriptedWildBattle;
+ gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_KYOGRE_GROUDON;
+
+ if (gGameVersion == VERSION_RUBY)
+ CreateBattleStartTask(B_TRANSITION_SHARDS, BGM_BATTLE34); // GROUDON
+ else
+ CreateBattleStartTask(B_TRANSITION_RIPPLE, BGM_BATTLE34); // KYOGRE
+
+ IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
+ IncrementGameStat(GAME_STAT_WILD_BATTLES);
+ sub_80EECC8();
+ sub_80B1218();
+}
+
+void StartRegiBattle(void)
+{
+ u8 transitionId;
+ u16 species;
+
+ ScriptContext2_Enable();
+ gMain.savedCallback = CB2_EndScriptedWildBattle;
+ gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_REGI;
+
+ species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES);
+ switch (species)
+ {
+ case SPECIES_REGIROCK:
+ transitionId = B_TRANSITION_REGIROCK;
+ break;
+ case SPECIES_REGICE:
+ transitionId = B_TRANSITION_REGICE;
+ break;
+ case SPECIES_REGISTEEL:
+ transitionId = B_TRANSITION_REGISTEEL;
+ break;
+ default:
+ transitionId = B_TRANSITION_GRID_SQUARES;
+ break;
+ }
+ CreateBattleStartTask(transitionId, BGM_BATTLE36);
+
+ IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
+ IncrementGameStat(GAME_STAT_WILD_BATTLES);
+ sub_80EECC8();
+ sub_80B1218();
+}
+
+static void CB2_EndWildBattle(void)
+{
+ CpuFill16(0, (void*)(BG_PLTT), BG_PLTT_SIZE);
+ ResetOamRange(0, 128);
+
+ if (IsPlayerDefeated(gBattleOutcome) == TRUE && !InBattlePyramid() && !InBattlePike())
+ {
+ SetMainCallback2(CB2_WhiteOut);
+ }
+ else
+ {
+ SetMainCallback2(c2_exit_to_overworld_2_switch);
+ gFieldCallback = sub_80AF6F0;
+ }
+}
+
+static void CB2_EndScriptedWildBattle(void)
+{
+ CpuFill16(0, (void*)(BG_PLTT), BG_PLTT_SIZE);
+ ResetOamRange(0, 128);
+
+ if (IsPlayerDefeated(gBattleOutcome) == TRUE)
+ {
+ if (InBattlePyramid())
+ SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ else
+ SetMainCallback2(CB2_WhiteOut);
+ }
+ else
+ {
+ SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ }
+}
+
+u8 BattleSetup_GetTerrainId(void)
+{
+ u16 tileBehavior;
+ s16 x, y;
+
+ PlayerGetDestCoords(&x, &y);
+ tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
+
+ if (MetatileBehavior_IsTallGrass(tileBehavior))
+ return BATTLE_TERRAIN_GRASS;
+ if (MetatileBehavior_IsLongGrass(tileBehavior))
+ return BATTLE_TERRAIN_LONG_GRASS;
+ if (MetatileBehavior_IsSandOrDeepSand(tileBehavior))
+ return BATTLE_TERRAIN_SAND;
+
+ switch (gMapHeader.mapType)
+ {
+ case MAP_TYPE_TOWN:
+ case MAP_TYPE_CITY:
+ case MAP_TYPE_ROUTE:
+ break;
+ case MAP_TYPE_UNDERGROUND:
+ if (MetatileBehavior_IsMB_0B(tileBehavior))
+ return BATTLE_TERRAIN_BUILDING;
+ if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior))
+ return BATTLE_TERRAIN_POND;
+ return BATTLE_TERRAIN_CAVE;
+ case MAP_TYPE_INDOOR:
+ case MAP_TYPE_SECRET_BASE:
+ return BATTLE_TERRAIN_BUILDING;
+ case MAP_TYPE_UNDERWATER:
+ return BATTLE_TERRAIN_UNDERWATER;
+ case MAP_TYPE_6:
+ if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior))
+ return BATTLE_TERRAIN_WATER;
+ return BATTLE_TERRAIN_PLAIN;
+ }
+ if (MetatileBehavior_IsDeepOrOceanWater(tileBehavior))
+ return BATTLE_TERRAIN_WATER;
+ if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior))
+ return BATTLE_TERRAIN_POND;
+ if (MetatileBehavior_IsMountain(tileBehavior))
+ return BATTLE_TERRAIN_MOUNTAIN;
+ if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
+ {
+ if (MetatileBehavior_GetBridgeSth(tileBehavior))
+ return BATTLE_TERRAIN_POND;
+ if (MetatileBehavior_IsBridge(tileBehavior) == TRUE)
+ return BATTLE_TERRAIN_WATER;
+ }
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ROUTE113) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE113))
+ return BATTLE_TERRAIN_SAND;
+ if (GetSav1Weather() == 8)
+ return BATTLE_TERRAIN_SAND;
+
+ return BATTLE_TERRAIN_PLAIN;
+}
+
+static u8 GetBattleTransitionTypeByMap(void)
+{
+ u16 tileBehavior;
+ s16 x, y;
+
+ PlayerGetDestCoords(&x, &y);
+ tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
+ if (Overworld_GetFlashLevel())
+ return B_TRANSITION_SHUFFLE;
+ if (!MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior))
+ {
+ switch (gMapHeader.mapType)
+ {
+ case MAP_TYPE_UNDERGROUND:
+ return B_TRANSITION_SWIRL;
+ case MAP_TYPE_UNDERWATER:
+ return B_TRANSITION_BIG_POKEBALL;
+ default:
+ return B_TRANSITION_BLUR;
+ }
+ }
+ return B_TRANSITION_BIG_POKEBALL;
+}
+
+static u16 GetSumOfPlayerPartyLevel(u8 numMons)
+{
+ u8 sum = 0;
+ int i;
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ u32 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
+
+ if (species != SPECIES_EGG && species != SPECIES_NONE && GetMonData(&gPlayerParty[i], MON_DATA_HP) != 0)
+ {
+ sum += GetMonData(&gPlayerParty[i], MON_DATA_LEVEL);
+ if (--numMons == 0)
+ break;
+ }
+ }
+ return sum;
+}
+
+static u8 GetSumOfEnemyPartyLevel(u16 opponentId, u8 numMons)
+{
+ u8 i;
+ u8 sum;
+ u32 count = numMons;
+
+ if (gTrainers[opponentId].partySize < count)
+ count = gTrainers[opponentId].partySize;
+
+ sum = 0;
+
+ switch (gTrainers[opponentId].partyFlags)
+ {
+ case 0:
+ {
+ const struct TrainerMonNoItemDefaultMoves *party;
+ party = gTrainers[opponentId].party.NoItemDefaultMoves;
+ for (i = 0; i < count; i++)
+ sum += party[i].lvl;
+ }
+ break;
+ case F_TRAINER_PARTY_CUSTOM_MOVESET:
+ {
+ const struct TrainerMonNoItemCustomMoves *party;
+ party = gTrainers[opponentId].party.NoItemCustomMoves;
+ for (i = 0; i < count; i++)
+ sum += party[i].lvl;
+ }
+ break;
+ case F_TRAINER_PARTY_HELD_ITEM:
+ {
+ const struct TrainerMonItemDefaultMoves *party;
+ party = gTrainers[opponentId].party.ItemDefaultMoves;
+ for (i = 0; i < count; i++)
+ sum += party[i].lvl;
+ }
+ break;
+ case F_TRAINER_PARTY_CUSTOM_MOVESET | F_TRAINER_PARTY_HELD_ITEM:
+ {
+ const struct TrainerMonItemCustomMoves *party;
+ party = gTrainers[opponentId].party.ItemCustomMoves;
+ for (i = 0; i < count; i++)
+ sum += party[i].lvl;
+ }
+ break;
+ }
+
+ return sum;
+}
+
+static u8 GetWildBattleTransition(void)
+{
+ u8 transitionType = GetBattleTransitionTypeByMap();
+ u8 enemyLevel = GetMonData(&gEnemyParty[0], MON_DATA_LEVEL);
+ u8 playerLevel = GetSumOfPlayerPartyLevel(1);
+
+ if (enemyLevel < playerLevel)
+ {
+ if (InBattlePyramid())
+ return B_TRANSITION_BLUR;
+ else
+ return sBattleTransitionTable_Wild[transitionType][0];
+ }
+ else
+ {
+ if (InBattlePyramid())
+ return B_TRANSITION_GRID_SQUARES;
+ else
+ return sBattleTransitionTable_Wild[transitionType][1];
+ }
+}
+
+static u8 GetTrainerBattleTransition(void)
+{
+ u8 minPartyCount;
+ u8 transitionType;
+ u8 enemyLevel;
+ u8 playerLevel;
+
+ if (gTrainerBattleOpponent_A == SECRET_BASE_OPPONENT)
+ return B_TRANSITION_CHAMPION;
+
+ if (gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_ELITE_FOUR)
+ {
+ if (gTrainerBattleOpponent_A == TRAINER_SIDNEY)
+ return B_TRANSITION_SYDNEY;
+ if (gTrainerBattleOpponent_A == TRAINER_PHOEBE)
+ return B_TRANSITION_PHOEBE;
+ if (gTrainerBattleOpponent_A == TRAINER_GLACIA)
+ return B_TRANSITION_GLACIA;
+ if (gTrainerBattleOpponent_A == TRAINER_DRAKE)
+ return B_TRANSITION_DRAKE;
+ return B_TRANSITION_CHAMPION;
+ }
+
+ if (gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_CHAMPION)
+ return B_TRANSITION_CHAMPION;
+
+ if (gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_TEAM_MAGMA
+ || gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_MAGMA_LEADER
+ || gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_MAGMA_ADMIN)
+ return B_TRANSITION_MAGMA;
+
+ if (gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_TEAM_AQUA
+ || gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_AQUA_LEADER
+ || gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_AQUA_ADMIN)
+ return B_TRANSITION_AQUA;
+
+ if (gTrainers[gTrainerBattleOpponent_A].doubleBattle == TRUE)
+ minPartyCount = 2; // double battles always at least have 2 pokemon.
+ else
+ minPartyCount = 1;
+
+ transitionType = GetBattleTransitionTypeByMap();
+ enemyLevel = GetSumOfEnemyPartyLevel(gTrainerBattleOpponent_A, minPartyCount);
+ playerLevel = GetSumOfPlayerPartyLevel(minPartyCount);
+
+ if (enemyLevel < playerLevel)
+ return sBattleTransitionTable_Trainer[transitionType][0];
+ else
+ return sBattleTransitionTable_Trainer[transitionType][1];
+}
+
+u8 sub_80B100C(s32 arg0)
+{
+ u16 var;
+ u8 enemyLevel = GetMonData(&gEnemyParty[0], MON_DATA_LEVEL);
+ u8 playerLevel = GetSumOfPlayerPartyLevel(1);
+
+ if (enemyLevel < playerLevel)
+ {
+ switch (arg0)
+ {
+ case 11:
+ case 12:
+ case 13:
+ return B_TRANSITION_POKEBALLS_TRAIL;
+ case 10:
+ return sUnknown_0854FEA4[Random() % ARRAY_COUNT(sUnknown_0854FEA4)];
+ case 3:
+ return sUnknown_0854FEA7[Random() % ARRAY_COUNT(sUnknown_0854FEA7)];
+ }
+
+ if (VarGet(VAR_0x40CE) != 3)
+ return sUnknown_0854FE98[Random() % ARRAY_COUNT(sUnknown_0854FE98)];
+ }
+ else
+ {
+ switch (arg0)
+ {
+ case 11:
+ case 12:
+ case 13:
+ return B_TRANSITION_BIG_POKEBALL;
+ case 10:
+ return sUnknown_0854FEA4[Random() % ARRAY_COUNT(sUnknown_0854FEA4)];
+ case 3:
+ return sUnknown_0854FEA7[Random() % ARRAY_COUNT(sUnknown_0854FEA7)];
+ }
+
+ if (VarGet(VAR_0x40CE) != 3)
+ return sUnknown_0854FE98[Random() % ARRAY_COUNT(sUnknown_0854FE98)];
+ }
+
+ var = gSaveBlock2Ptr->field_CB4[gSaveBlock2Ptr->battlePyramidWildHeaderId * 2 + 0]
+ + gSaveBlock2Ptr->field_CB4[gSaveBlock2Ptr->battlePyramidWildHeaderId * 2 + 1];
+
+ return sUnknown_0854FE98[var % ARRAY_COUNT(sUnknown_0854FE98)];
+}
+
+void ChooseStarter(void)
+{
+ SetMainCallback2(CB2_ChooseStarter);
+ gMain.savedCallback = CB2_GiveStarter;
+}
+
+static void CB2_GiveStarter(void)
+{
+ u16 starterMon;
+
+ *GetVarPointer(VAR_FIRST_POKE) = gSpecialVar_Result;
+ starterMon = GetStarterPokemon(gSpecialVar_Result);
+ ScriptGiveMon(starterMon, 5, 0, 0, 0, 0);
+ ResetTasks();
+ PlayBattleBGM();
+ SetMainCallback2(CB2_StartFirstBattle);
+ BattleTransition_Start(B_TRANSITION_BLUR);
+}
+
+static void CB2_StartFirstBattle(void)
+{
+ UpdatePaletteFade();
+ RunTasks();
+
+ if (IsBattleTransitionDone() == TRUE)
+ {
+ gBattleTypeFlags = BATTLE_TYPE_FIRST_BATTLE;
+ gMain.savedCallback = CB2_EndFirstBattle;
+ FreeAllWindowBuffers();
+ SetMainCallback2(CB2_InitBattle);
+ prev_quest_postbuffer_cursor_backup_reset();
+ ResetPoisonStepCounter();
+ IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
+ IncrementGameStat(GAME_STAT_WILD_BATTLES);
+ sub_80EECC8();
+ sub_80B1218();
+ }
+}
+
+static void CB2_EndFirstBattle(void)
+{
+ Overworld_ClearSavedMusic();
+ SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+}
+
+static void sub_80B1218(void)
+{
+ if (GetGameStat(GAME_STAT_WILD_BATTLES) % 60 == 0)
+ sub_81DA57C();
+}
+
+static void sub_80B1234(void)
+{
+ if (GetGameStat(GAME_STAT_TRAINER_BATTLES) % 20 == 0)
+ sub_81DA57C();
+}
+
+// why not just use the macros? maybe its because they didnt want to uncast const every time?
+static u32 TrainerBattleLoadArg32(const u8 *ptr)
+{
+ return T1_READ_32(ptr);
+}
+
+static u16 TrainerBattleLoadArg16(const u8 *ptr)
+{
+ return T1_READ_16(ptr);
+}
+
+static u8 TrainerBattleLoadArg8(const u8 *ptr)
+{
+ return T1_READ_8(ptr);
+}
+
+static u16 GetTrainerAFlag(void)
+{
+ return FLAG_TRAINER_FLAG_START + gTrainerBattleOpponent_A;
+}
+
+static u16 GetTrainerBFlag(void)
+{
+ return FLAG_TRAINER_FLAG_START + gTrainerBattleOpponent_B;
+}
+
+static bool32 IsPlayerDefeated(u32 battleOutcome)
+{
+ switch (battleOutcome)
+ {
+ case BATTLE_LOST:
+ case BATTLE_DREW:
+ return TRUE;
+ case BATTLE_WON:
+ case BATTLE_RAN:
+ case BATTLE_PLAYER_TELEPORTED:
+ case BATTLE_POKE_FLED:
+ case BATTLE_CAUGHT:
+ return FALSE;
+ default:
+ return FALSE;
+ }
+}
+
+void ResetTrainerOpponentIds(void)
+{
+ gTrainerBattleOpponent_A = 0;
+ gTrainerBattleOpponent_B = 0;
+}
+
+static void InitTrainerBattleVariables(void)
+{
+ sTrainerBattleMode = 0;
+ if (gApproachingTrainerId == 0)
+ {
+ sTrainerAIntroSpeech = NULL;
+ sTrainerADefeatSpeech = NULL;
+ sTrainerABattleScriptRetAddr = NULL;
+ }
+ else
+ {
+ sTrainerBIntroSpeech = NULL;
+ sTrainerBDefeatSpeech = NULL;
+ sTrainerBBattleScriptRetAddr = NULL;
+ }
+ sTrainerMapObjectLocalId = 0;
+ sTrainerVictorySpeech = NULL;
+ sTrainerCannotBattleSpeech = NULL;
+ sTrainerBattleEndScript = NULL;
+}
+
+static inline void SetU8(void *ptr, u8 value)
+{
+ *(u8*)(ptr) = value;
+}
+
+static inline void SetU16(void *ptr, u16 value)
+{
+ *(u16*)(ptr) = value;
+}
+
+static inline void SetU32(void *ptr, u32 value)
+{
+ *(u32*)(ptr) = value;
+}
+
+static inline void SetPtr(const void *ptr, const void* value)
+{
+ *(const void**)(ptr) = value;
+}
+
+static void TrainerBattleLoadArgs(const struct TrainerBattleParameter *specs, const u8 *data)
+{
+ while (1)
+ {
+ switch (specs->ptrType)
+ {
+ case TRAINER_PARAM_LOAD_VAL_8BIT:
+ SetU8(specs->varPtr, TrainerBattleLoadArg8(data));
+ data += 1;
+ break;
+ case TRAINER_PARAM_LOAD_VAL_16BIT:
+ SetU16(specs->varPtr, TrainerBattleLoadArg16(data));
+ data += 2;
+ break;
+ case TRAINER_PARAM_LOAD_VAL_32BIT:
+ SetU32(specs->varPtr, TrainerBattleLoadArg32(data));
+ data += 4;
+ break;
+ case TRAINER_PARAM_CLEAR_VAL_8BIT:
+ SetU8(specs->varPtr, 0);
+ break;
+ case TRAINER_PARAM_CLEAR_VAL_16BIT:
+ SetU16(specs->varPtr, 0);
+ break;
+ case TRAINER_PARAM_CLEAR_VAL_32BIT:
+ SetU32(specs->varPtr, 0);
+ break;
+ case TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR:
+ SetPtr(specs->varPtr, data);
+ return;
+ }
+ specs++;
+ }
+}
+
+void SetMapVarsToTrainer(void)
+{
+ if (sTrainerMapObjectLocalId != 0)
+ {
+ gSpecialVar_LastTalked = sTrainerMapObjectLocalId;
+ gSelectedMapObject = GetFieldObjectIdByLocalIdAndMap(sTrainerMapObjectLocalId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+ }
+}
+
+const u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data)
+{
+ InitTrainerBattleVariables();
+ sTrainerBattleMode = TrainerBattleLoadArg8(data);
+
+ switch (sTrainerBattleMode)
+ {
+ case 3:
+ TrainerBattleLoadArgs(sOrdinaryNoIntroBattleParams, data);
+ return EventScript_2713C2;
+ case 4:
+ TrainerBattleLoadArgs(sDoubleBattleParams, data);
+ SetMapVarsToTrainer();
+ return EventScript_TryDoDoubleTrainerBattle;
+ case 2:
+ if (gApproachingTrainerId == 0)
+ {
+ TrainerBattleLoadArgs(sContinueScriptBattleParams, data);
+ SetMapVarsToTrainer();
+ }
+ else
+ {
+ TrainerBattleLoadArgs(sTrainerBContinueScriptBattleParams, data);
+ }
+ return EventScript_271362;
+ case 1:
+ TrainerBattleLoadArgs(sContinueScriptBattleParams, data);
+ SetMapVarsToTrainer();
+ return EventScript_271362;
+ case 6:
+ case 8:
+ TrainerBattleLoadArgs(sContinueScriptDoubleBattleParams, data);
+ SetMapVarsToTrainer();
+ return EventScript_TryDoDoubleTrainerBattle;
+ case 7:
+ TrainerBattleLoadArgs(sDoubleBattleParams, data);
+ SetMapVarsToTrainer();
+ gTrainerBattleOpponent_A = GetRematchTrainerId(gTrainerBattleOpponent_A);
+ return EventScript_TryDoDoubleRematchBattle;
+ case 5:
+ TrainerBattleLoadArgs(sOrdinaryBattleParams, data);
+ SetMapVarsToTrainer();
+ gTrainerBattleOpponent_A = GetRematchTrainerId(gTrainerBattleOpponent_A);
+ return EventScript_2713D1;
+ case 9:
+ if (gApproachingTrainerId == 0)
+ {
+ TrainerBattleLoadArgs(sOrdinaryBattleParams, data);
+ SetMapVarsToTrainer();
+ gTrainerBattleOpponent_A = sub_81A9AA8(gSpecialVar_LastTalked);
+ }
+ else
+ {
+ TrainerBattleLoadArgs(sTrainerBOrdinaryBattleParams, data);
+ gTrainerBattleOpponent_B = sub_81A9AA8(gSpecialVar_LastTalked);
+ }
+ return EventScript_271362;
+ case 10:
+ TrainerBattleLoadArgs(sOrdinaryBattleParams, data);
+ return NULL;
+ case 11:
+ TrainerBattleLoadArgs(sTrainerBOrdinaryBattleParams, data);
+ return NULL;
+ case 12:
+ if (gApproachingTrainerId == 0)
+ {
+ TrainerBattleLoadArgs(sOrdinaryBattleParams, data);
+ SetMapVarsToTrainer();
+ gTrainerBattleOpponent_A = sub_81D6180(gSpecialVar_LastTalked);
+ }
+ else
+ {
+ TrainerBattleLoadArgs(sTrainerBOrdinaryBattleParams, data);
+ gTrainerBattleOpponent_B = sub_81D6180(gSpecialVar_LastTalked);
+ }
+ return EventScript_271362;
+ default:
+ if (gApproachingTrainerId == 0)
+ {
+ TrainerBattleLoadArgs(sOrdinaryBattleParams, data);
+ SetMapVarsToTrainer();
+ }
+ else
+ {
+ TrainerBattleLoadArgs(sTrainerBOrdinaryBattleParams, data);
+ }
+ return EventScript_271362;
+ }
+}
+
+void ConfigureAndSetUpOneTrainerBattle(u8 trainerMapObjId, const u8 *trainerScript)
+{
+ gSelectedMapObject = trainerMapObjId;
+ gSpecialVar_LastTalked = gMapObjects[trainerMapObjId].localId;
+ BattleSetup_ConfigureTrainerBattle(trainerScript + 1);
+ ScriptContext1_SetupScript(EventScript_271354);
+ ScriptContext2_Enable();
+}
+
+void ConfigureTwoTrainersBattle(u8 trainerMapObjId, const u8 *trainerScript)
+{
+ gSelectedMapObject = trainerMapObjId;
+ gSpecialVar_LastTalked = gMapObjects[trainerMapObjId].localId;
+ BattleSetup_ConfigureTrainerBattle(trainerScript + 1);
+}
+
+void SetUpTwoTrainersBattle(void)
+{
+ ScriptContext1_SetupScript(EventScript_271354);
+ ScriptContext2_Enable();
+}
+
+bool32 GetTrainerFlagFromScriptPointer(const u8 *data)
+{
+ u32 flag = TrainerBattleLoadArg16(data + 2);
+ return FlagGet(FLAG_TRAINER_FLAG_START + flag);
+}
+
+void sub_80B16D8(void)
+{
+ struct MapObject *mapObject = &gMapObjects[gSelectedMapObject];
+
+ npc_set_running_behaviour_etc(mapObject, npc_running_behaviour_by_direction(mapObject->mapobj_unk_18));
+}
+
+u8 GetTrainerBattleMode(void)
+{
+ return sTrainerBattleMode;
+}
+
+bool8 GetTrainerFlag(void)
+{
+ if (InBattlePyramid())
+ return GetBattlePyramidTrainerFlag(gSelectedMapObject);
+ else if (InTrainerHill())
+ return GetTrainerHillTrainerFlag(gSelectedMapObject);
+ else
+ return FlagGet(GetTrainerAFlag());
+}
+
+static void SetBattledTrainersFlags(void)
+{
+ if (gTrainerBattleOpponent_B != 0)
+ FlagSet(GetTrainerBFlag());
+ FlagSet(GetTrainerAFlag());
+}
+
+static void SetBattledTrainerFlag(void)
+{
+ FlagSet(GetTrainerAFlag());
+}
+
+bool8 HasTrainerBeenFought(u16 trainerId)
+{
+ return FlagGet(FLAG_TRAINER_FLAG_START + trainerId);
+}
+
+void SetTrainerFlag(u16 trainerId)
+{
+ FlagSet(FLAG_TRAINER_FLAG_START + trainerId);
+}
+
+void ClearTrainerFlag(u16 trainerId)
+{
+ FlagClear(FLAG_TRAINER_FLAG_START + trainerId);
+}
+
+void BattleSetup_StartTrainerBattle(void)
+{
+ if (gNoOfApproachingTrainers == 2)
+ gBattleTypeFlags = (BATTLE_TYPE_DOUBLE | BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_TRAINER);
+ else
+ gBattleTypeFlags = (BATTLE_TYPE_TRAINER);
+
+ if (InBattlePyramid())
+ {
+ VarSet(VAR_0x400E, 0);
+ gBattleTypeFlags |= BATTLE_TYPE_PYRAMID;
+
+ if (gNoOfApproachingTrainers == 2)
+ {
+ sub_816306C(1);
+ ZeroMonData(&gEnemyParty[1]);
+ ZeroMonData(&gEnemyParty[2]);
+ ZeroMonData(&gEnemyParty[4]);
+ ZeroMonData(&gEnemyParty[5]);
+ }
+ else
+ {
+ sub_8163048(1);
+ ZeroMonData(&gEnemyParty[1]);
+ ZeroMonData(&gEnemyParty[2]);
+ }
+
+ sub_81A9B04();
+ }
+ else if (sub_81D5C18())
+ {
+ gBattleTypeFlags |= BATTLE_TYPE_x4000000;
+
+ if (gNoOfApproachingTrainers == 2)
+ sub_81D639C();
+ else
+ sub_81D6384();
+
+ sub_81D61E8();
+ }
+
+ sNoOfPossibleTrainerRetScripts = gNoOfApproachingTrainers;
+ gNoOfApproachingTrainers = 0;
+ sShouldCheckTrainerBScript = FALSE;
+ gUnknown_03006080 = 0;
+ gMain.savedCallback = CB2_EndTrainerBattle;
+
+ if (InBattlePyramid() || sub_81D5C18())
+ sub_80B0828();
+ else
+ DoTrainerBattle();
+
+ ScriptContext1_Stop();
+}
+
+static void CB2_EndTrainerBattle(void)
+{
+ if (gTrainerBattleOpponent_A == SECRET_BASE_OPPONENT)
+ {
+ SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ }
+ else if (IsPlayerDefeated(gBattleOutcome) == TRUE)
+ {
+ if (InBattlePyramid() || sub_81D5C18())
+ SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ else
+ SetMainCallback2(CB2_WhiteOut);
+ }
+ else
+ {
+ SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ if (!InBattlePyramid() && !sub_81D5C18())
+ {
+ RegisterTrainerInMatchCall();
+ SetBattledTrainersFlags();
+ }
+ }
+}
+
+static void CB2_EndRematchBattle(void)
+{
+ if (gTrainerBattleOpponent_A == SECRET_BASE_OPPONENT)
+ {
+ SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ }
+ else if (IsPlayerDefeated(gBattleOutcome) == TRUE)
+ {
+ SetMainCallback2(CB2_WhiteOut);
+ }
+ else
+ {
+ SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ RegisterTrainerInMatchCall();
+ SetBattledTrainersFlags();
+ HandleRematchVarsOnBattleEnd();
+ }
+}
+
+void BattleSetup_StartRematchBattle(void)
+{
+ gBattleTypeFlags = BATTLE_TYPE_TRAINER;
+ gMain.savedCallback = CB2_EndRematchBattle;
+ DoTrainerBattle();
+ ScriptContext1_Stop();
+}
+
+void ShowTrainerIntroSpeech(void)
+{
+ if (InBattlePyramid())
+ {
+ if (gNoOfApproachingTrainers == 0 || gNoOfApproachingTrainers == 1)
+ sub_81A9EDC(sub_81A9AA8(gSpecialVar_LastTalked));
+ else
+ sub_81A9EDC(sub_81A9AA8(gMapObjects[gApproachingTrainers[gApproachingTrainerId].mapObjectId].localId));
+
+ sub_80982B8();
+ }
+ else if (sub_81D5C18())
+ {
+ if (gNoOfApproachingTrainers == 0 || gNoOfApproachingTrainers == 1)
+ sub_81D572C(2, sub_81D6180(gSpecialVar_LastTalked));
+ else
+ sub_81D572C(2, sub_81D6180(gMapObjects[gApproachingTrainers[gApproachingTrainerId].mapObjectId].localId));
+
+ sub_80982B8();
+ }
+ else
+ {
+ ShowFieldMessage(GetIntroSpeechOfApproachingTrainer());
+ }
+}
+
+const u8 *BattleSetup_GetScriptAddrAfterBattle(void)
+{
+ if (sTrainerBattleEndScript != NULL)
+ return sTrainerBattleEndScript;
+ else
+ return EventScript_TestSignpostMsg;
+}
+
+const u8 *BattleSetup_GetTrainerPostBattleScript(void)
+{
+ if (sShouldCheckTrainerBScript)
+ {
+ sShouldCheckTrainerBScript = FALSE;
+ if (sTrainerBBattleScriptRetAddr != NULL)
+ {
+ gUnknown_03006080 = 1;
+ return sTrainerBBattleScriptRetAddr;
+ }
+ }
+ else
+ {
+ if (sTrainerABattleScriptRetAddr != NULL)
+ {
+ gUnknown_03006080 = 0;
+ return sTrainerABattleScriptRetAddr;
+ }
+ }
+
+ return EventScript_TryGetTrainerScript;
+}
+
+void ShowTrainerCantBattleSpeech(void)
+{
+ ShowFieldMessage(GetTrainerCantBattleSpeech());
+}
+
+void SetUpTrainerEncounterMusic(void)
+{
+ u16 trainerId;
+ u16 music;
+
+ if (gApproachingTrainerId == 0)
+ trainerId = gTrainerBattleOpponent_A;
+ else
+ trainerId = gTrainerBattleOpponent_B;
+
+ if (sTrainerBattleMode != TRAINER_BATTLE_CONTINUE_SCRIPT_NO_MUSIC
+ && sTrainerBattleMode != TRAINER_BATTLE_CONTINUE_SCRIPT_DOUBLE_NO_MUSIC)
+ {
+ switch (GetTrainerEncounterMusicId(trainerId))
+ {
+ case TRAINER_ENCOUNTER_MUSIC_MALE:
+ music = BGM_BOYEYE;
+ break;
+ case TRAINER_ENCOUNTER_MUSIC_FEMALE:
+ music = BGM_GIRLEYE;
+ break;
+ case TRAINER_ENCOUNTER_MUSIC_GIRL:
+ music = BGM_SYOUJOEYE;
+ break;
+ case TRAINER_ENCOUNTER_MUSIC_INTENSE:
+ music = BGM_HAGESHII;
+ break;
+ case TRAINER_ENCOUNTER_MUSIC_COOL:
+ music = BGM_KAKKOII;
+ break;
+ case TRAINER_ENCOUNTER_MUSIC_AQUA:
+ music = BGM_AQA_0;
+ break;
+ case TRAINER_ENCOUNTER_MUSIC_MAGMA:
+ music = BGM_MGM0;
+ break;
+ case TRAINER_ENCOUNTER_MUSIC_SWIMMER:
+ music = BGM_SWIMEYE;
+ break;
+ case TRAINER_ENCOUNTER_MUSIC_TWINS:
+ music = BGM_HUTAGO;
+ break;
+ case TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR:
+ music = BGM_SITENNOU;
+ break;
+ case TRAINER_ENCOUNTER_MUSIC_HIKER:
+ music = BGM_YAMA_EYE;
+ break;
+ case TRAINER_ENCOUNTER_MUSIC_INTERVIEWER:
+ music = BGM_INTER_V;
+ break;
+ case TRAINER_ENCOUNTER_MUSIC_RICH:
+ music = BGM_TEST;
+ break;
+ default:
+ music = BGM_AYASII;
+ }
+ PlayNewMapMusic(music);
+ }
+}
+
+static const u8 *ReturnEmptyStringIfNull(const u8 *string)
+{
+ if (string == NULL)
+ return gText_EmptyString2;
+ else
+ return string;
+}
+
+static const u8 *GetIntroSpeechOfApproachingTrainer(void)
+{
+ if (gApproachingTrainerId == 0)
+ return ReturnEmptyStringIfNull(sTrainerAIntroSpeech);
+ else
+ return ReturnEmptyStringIfNull(sTrainerBIntroSpeech);
+}
+
+const u8 *GetTrainerALoseText(void)
+{
+ const u8 *string;
+
+ if (gTrainerBattleOpponent_A == SECRET_BASE_OPPONENT)
+ string = GetSecretBaseTrainerLoseText();
+ else
+ string = sTrainerADefeatSpeech;
+
+ StringExpandPlaceholders(gStringVar4, ReturnEmptyStringIfNull(string));
+ return gStringVar4;
+}
+
+const u8 *GetTrainerBLoseText(void)
+{
+ StringExpandPlaceholders(gStringVar4, ReturnEmptyStringIfNull(sTrainerBDefeatSpeech));
+ return gStringVar4;
+}
+
+const u8 *GetTrainerWonSpeech(void)
+{
+ return ReturnEmptyStringIfNull(sTrainerVictorySpeech);
+}
+
+static const u8 *GetTrainerCantBattleSpeech(void)
+{
+ return ReturnEmptyStringIfNull(sTrainerCannotBattleSpeech);
+}
+
+static s32 FirstBattleTrainerIdToRematchTableId(const struct RematchTrainer *table, u16 trainerId)
+{
+ s32 i;
+
+ for (i = 0; i < REMATCH_TABLE_ENTRIES; i++)
+ {
+ if (table[i].trainerIds[0] == trainerId)
+ return i;
+ }
+
+ return -1;
+}
+
+static s32 TrainerIdToRematchTableId(const struct RematchTrainer *table, u16 trainerId)
+{
+ s32 i, j;
+
+ for (i = 0; i < REMATCH_TABLE_ENTRIES; i++)
+ {
+ for (j = 0; j < REMATCHES_COUNT; j++)
+ {
+ if (table[i].trainerIds[j] == 0)
+ break;
+ if (table[i].trainerIds[j] == trainerId)
+ return i;
+ }
+ }
+
+ return -1;
+}
+
+static bool32 sub_80B1D94(s32 rematchTableId)
+{
+ if (rematchTableId >= REMATCH_ELITE_FOUR_ENTRIES)
+ return TRUE;
+ else if (rematchTableId == REMATCH_WALLY_ENTRY)
+ return (FlagGet(FLAG_0x07E) == FALSE);
+ else
+ return FALSE;
+}
+
+static void SetRematchIdForTrainer(const struct RematchTrainer *table, u32 tableId)
+{
+ s32 i;
+
+ for (i = 1; i < REMATCHES_COUNT; i++)
+ {
+ u16 trainerId = table[tableId].trainerIds[i];
+
+ if (trainerId == 0)
+ break;
+ if (!HasTrainerBeenFought(trainerId))
+ break;
+ }
+
+ gSaveBlock1Ptr->trainerRematches[tableId] = i;
+}
+
+static bool32 UpdateRandomTrainerRematches(const struct RematchTrainer *table, u16 mapGroup, u16 mapNum)
+{
+ s32 i;
+ bool32 ret = FALSE;
+
+ for (i = 0; i <= REMATCH_WALLY_ENTRY; i++)
+ {
+ if (table[i].mapGroup == mapGroup && table[i].mapNum == mapNum && !sub_80B1D94(i))
+ {
+ if (gSaveBlock1Ptr->trainerRematches[i] != 0)
+ {
+ // Trainer already wants a rematch. Don't bother updating it
+ ret = TRUE;
+ }
+ else if (FlagGet(FLAG_MATCH_CALL_REGISTERED + i)
+ && (Random() % 100) <= 30) // 31% chance of getting a rematch
+ {
+ SetRematchIdForTrainer(table, i);
+ ret = TRUE;
+ }
+ }
+ }
+
+ return ret;
+}
+
+void UpdateRematchIfDefeated(s32 rematchTableId)
+{
+ if (HasTrainerBeenFought(gRematchTable[rematchTableId].trainerIds[0]) == TRUE)
+ SetRematchIdForTrainer(gRematchTable, rematchTableId);
+}
+
+static bool32 DoesSomeoneWantRematchIn_(const struct RematchTrainer *table, u16 mapGroup, u16 mapNum)
+{
+ s32 i;
+
+ for (i = 0; i < REMATCH_TABLE_ENTRIES; i++)
+ {
+ if (table[i].mapGroup == mapGroup && table[i].mapNum == mapNum && gSaveBlock1Ptr->trainerRematches[i] != 0)
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static bool32 IsRematchTrainerIn_(const struct RematchTrainer *table, u16 mapGroup, u16 mapNum)
+{
+ s32 i;
+
+ for (i = 0; i < REMATCH_TABLE_ENTRIES; i++)
+ {
+ if (table[i].mapGroup == mapGroup && table[i].mapNum == mapNum)
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static bool8 IsFirstTrainerIdReadyForRematch(const struct RematchTrainer *table, u16 firstBattleTrainerId)
+{
+ s32 tableId = FirstBattleTrainerIdToRematchTableId(table, firstBattleTrainerId);
+
+ if (tableId == -1)
+ return FALSE;
+ if (tableId >= 100)
+ return FALSE;
+ if (gSaveBlock1Ptr->trainerRematches[tableId] == 0)
+ return FALSE;
+
+ return TRUE;
+}
+
+static bool8 IsTrainerReadyForRematch_(const struct RematchTrainer *table, u16 trainerId)
+{
+ s32 tableId = TrainerIdToRematchTableId(table, trainerId);
+
+ if (tableId == -1)
+ return FALSE;
+ if (tableId >= 100)
+ return FALSE;
+ if (gSaveBlock1Ptr->trainerRematches[tableId] == 0)
+ return FALSE;
+
+ return TRUE;
+}
+
+static u16 GetRematchTrainerIdFromTable(const struct RematchTrainer *table, u16 firstBattleTrainerId)
+{
+ const struct RematchTrainer *trainerEntry;
+ s32 i;
+ s32 tableId = FirstBattleTrainerIdToRematchTableId(table, firstBattleTrainerId);
+
+ if (tableId == -1)
+ return FALSE;
+
+ trainerEntry = &table[tableId];
+ for (i = 1; i < REMATCHES_COUNT; i++)
+ {
+ if (trainerEntry->trainerIds[i] == 0) // previous entry was this trainer's last one
+ return trainerEntry->trainerIds[i - 1];
+ if (!HasTrainerBeenFought(trainerEntry->trainerIds[i]))
+ return trainerEntry->trainerIds[i];
+ }
+
+ return trainerEntry->trainerIds[REMATCHES_COUNT - 1]; // already beaten at max stage
+}
+
+static u16 GetLastBeatenRematchTrainerIdFromTable(const struct RematchTrainer *table, u16 firstBattleTrainerId)
+{
+ const struct RematchTrainer *trainerEntry;
+ s32 i;
+ s32 tableId = FirstBattleTrainerIdToRematchTableId(table, firstBattleTrainerId);
+
+ if (tableId == -1)
+ return FALSE;
+
+ trainerEntry = &table[tableId];
+ for (i = 1; i < REMATCHES_COUNT; i++)
+ {
+ if (trainerEntry->trainerIds[i] == 0) // previous entry was this trainer's last one
+ return trainerEntry->trainerIds[i - 1];
+ if (!HasTrainerBeenFought(trainerEntry->trainerIds[i]))
+ return trainerEntry->trainerIds[i - 1];
+ }
+
+ return trainerEntry->trainerIds[REMATCHES_COUNT - 1]; // already beaten at max stage
+}
+
+static void ClearTrainerWantRematchState(const struct RematchTrainer *table, u16 firstBattleTrainerId)
+{
+ s32 tableId = TrainerIdToRematchTableId(table, firstBattleTrainerId);
+
+ if (tableId != -1)
+ gSaveBlock1Ptr->trainerRematches[tableId] = 0;
+}
+
+static u32 GetTrainerMatchCallFlag(u32 trainerId)
+{
+ s32 i;
+
+ for (i = 0; i < REMATCH_TABLE_ENTRIES; i++)
+ {
+ if (gRematchTable[i].trainerIds[0] == trainerId)
+ return FLAG_MATCH_CALL_REGISTERED + i;
+ }
+
+ return 0xFFFF;
+}
+
+static void RegisterTrainerInMatchCall(void)
+{
+ if (FlagGet(FLAG_HAS_MATCH_CALL))
+ {
+ u32 matchCallFlagId = GetTrainerMatchCallFlag(gTrainerBattleOpponent_A);
+ if (matchCallFlagId != 0xFFFF)
+ FlagSet(matchCallFlagId);
+ }
+}
+
+static bool8 WasSecondRematchWon(const struct RematchTrainer *table, u16 firstBattleTrainerId)
+{
+ s32 tableId = FirstBattleTrainerIdToRematchTableId(table, firstBattleTrainerId);
+
+ if (tableId == -1)
+ return FALSE;
+ if (!HasTrainerBeenFought(table[tableId].trainerIds[1]))
+ return FALSE;
+
+ return TRUE;
+}
+
+static bool32 HasAtLeastFiveBadges(void)
+{
+ s32 i, count;
+
+ for (count = 0, i = 0; i < ARRAY_COUNT(sBadgeFlags); i++)
+ {
+ if (FlagGet(sBadgeFlags[i]) == TRUE)
+ {
+ if (++count >= 5)
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+#define STEP_COUNTER_MAX 255
+
+void IncrementRematchStepCounter(void)
+{
+ if (HasAtLeastFiveBadges())
+ {
+ if (gSaveBlock1Ptr->trainerRematchStepCounter >= STEP_COUNTER_MAX)
+ gSaveBlock1Ptr->trainerRematchStepCounter = STEP_COUNTER_MAX;
+ else
+ gSaveBlock1Ptr->trainerRematchStepCounter++;
+ }
+}
+
+static bool32 IsRematchStepCounterMaxed(void)
+{
+ if (HasAtLeastFiveBadges() && gSaveBlock1Ptr->trainerRematchStepCounter >= STEP_COUNTER_MAX)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void TryUpdateRandomTrainerRematches(u16 mapGroup, u16 mapNum)
+{
+ if (IsRematchStepCounterMaxed() && UpdateRandomTrainerRematches(gRematchTable, mapGroup, mapNum) == TRUE)
+ gSaveBlock1Ptr->trainerRematchStepCounter = 0;
+}
+
+bool32 DoesSomeoneWantRematchIn(u16 mapGroup, u16 mapNum)
+{
+ return DoesSomeoneWantRematchIn_(gRematchTable, mapGroup, mapNum);
+}
+
+bool32 IsRematchTrainerIn(u16 mapGroup, u16 mapNum)
+{
+ return IsRematchTrainerIn_(gRematchTable, mapGroup, mapNum);
+}
+
+static u16 GetRematchTrainerId(u16 trainerId)
+{
+ return GetRematchTrainerIdFromTable(gRematchTable, trainerId);
+}
+
+u16 GetLastBeatenRematchTrainerId(u16 trainerId)
+{
+ return GetLastBeatenRematchTrainerIdFromTable(gRematchTable, trainerId);
+}
+
+bool8 ShouldTryRematchBattle(void)
+{
+ if (IsFirstTrainerIdReadyForRematch(gRematchTable, gTrainerBattleOpponent_A))
+ return TRUE;
+
+ return WasSecondRematchWon(gRematchTable, gTrainerBattleOpponent_A);
+}
+
+bool8 IsTrainerReadyForRematch(void)
+{
+ return IsTrainerReadyForRematch_(gRematchTable, gTrainerBattleOpponent_A);
+}
+
+static void HandleRematchVarsOnBattleEnd(void)
+{
+ ClearTrainerWantRematchState(gRematchTable, gTrainerBattleOpponent_A);
+ SetBattledTrainersFlags();
+}
+
+void ShouldTryGetTrainerScript(void)
+{
+ if (sNoOfPossibleTrainerRetScripts > 1)
+ {
+ sNoOfPossibleTrainerRetScripts = 0;
+ sShouldCheckTrainerBScript = TRUE;
+ gSpecialVar_Result = TRUE;
+ }
+ else
+ {
+ sShouldCheckTrainerBScript = FALSE;
+ gSpecialVar_Result = FALSE;
+ }
+}
+
+u16 CountBattledRematchTeams(u16 trainerId)
+{
+ s32 i;
+
+ if (HasTrainerBeenFought(gRematchTable[trainerId].trainerIds[0]) != TRUE)
+ return 0;
+
+ for (i = 1; i < REMATCHES_COUNT; i++)
+ {
+ if (gRematchTable[trainerId].trainerIds[i] == 0)
+ break;
+ if (!HasTrainerBeenFought(gRematchTable[trainerId].trainerIds[i]))
+ break;
+ }
+
+ return i;
+}
diff --git a/src/battle_util.c b/src/battle_util.c
index ed3bdef98..1a624641d 100644
--- a/src/battle_util.c
+++ b/src/battle_util.c
@@ -1,27 +1,30 @@
#include "global.h"
#include "battle.h"
-#include "abilities.h"
-#include "moves.h"
-#include "hold_effects.h"
+#include "constants/abilities.h"
+#include "constants/moves.h"
+#include "constants/hold_effects.h"
#include "pokemon.h"
-#include "species.h"
+#include "constants/species.h"
#include "item.h"
-#include "items.h"
+#include "constants/items.h"
#include "util.h"
-#include "battle_move_effects.h"
-#include "rng.h"
+#include "constants/battle_move_effects.h"
+#include "battle_scripts.h"
+#include "random.h"
#include "text.h"
#include "string_util.h"
#include "battle_message.h"
+#include "battle_string_ids.h"
#include "battle_ai_script_commands.h"
#include "battle_controllers.h"
#include "event_data.h"
#include "calculate_base_damage.h"
#include "link.h"
+#include "berry.h"
extern const u8* gBattlescriptCurrInstr;
-extern const u8* gBattlescriptPtrsForSelection[BATTLE_BANKS_COUNT];
-extern const u8* gUnknown_02024230[BATTLE_BANKS_COUNT];
+extern const u8* gSelectionBattleScripts[BATTLE_BANKS_COUNT];
+extern const u8* gPalaceSelectionBattleScripts[BATTLE_BANKS_COUNT];
extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
extern u8 gActiveBank;
extern u8 gStringBank;
@@ -41,7 +44,7 @@ extern s32 gBattleMoveDamage;
extern struct BattleEnigmaBerry gEnigmaBerries[BATTLE_BANKS_COUNT];
extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200];
extern u32 gBattleTypeFlags;
-extern u16 gLastUsedMovesByBanks[BATTLE_BANKS_COUNT];
+extern u16 gLastMoves[BATTLE_BANKS_COUNT];
extern u32 gHitMarker;
extern u8 gEffectBank;
extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
@@ -60,119 +63,6 @@ extern u8 gSentPokesToOpponent[2];
extern const struct BattleMove gBattleMoves[];
-// scripts
-extern const u8 gUnknown_082DAE2A[];
-extern const u8 gUnknown_082DAE1F[];
-extern const u8 gUnknown_082DB089[];
-extern const u8 gUnknown_082DB098[];
-extern const u8 gUnknown_082DB0AF[];
-extern const u8 gUnknown_082DB0A0[];
-extern const u8 gUnknown_082DB185[];
-extern const u8 gUnknown_082DB181[];
-extern const u8 gUnknown_082DB812[];
-extern const u8 gUnknown_082DB076[];
-extern const u8 BattleScript_NoMovesLeft[];
-extern const u8 gUnknown_082DACFA[];
-extern const u8 gUnknown_082DAD0B[];
-extern const u8 gUnknown_082DACC9[];
-extern const u8 gUnknown_082DAC47[];
-extern const u8 gUnknown_082DACE0[];
-extern const u8 gUnknown_082DACD2[];
-extern const u8 BattleScript_WishComesTrue[];
-extern const u8 gUnknown_082DACC9[];
-extern const u8 gUnknown_082DAC2C[];
-extern const u8 BattleScript_IngrainTurnHeal[];
-extern const u8 BattleScript_LeechSeedTurnDrain[];
-extern const u8 BattleScript_PoisonTurnDmg[];
-extern const u8 BattleScript_BurnTurnDmg[];
-extern const u8 BattleScript_NightmareTurnDmg[];
-extern const u8 BattleScript_CurseTurnDmg[];
-extern const u8 BattleScript_WrapTurnDmg[];
-extern const u8 BattleScript_WrapEnds[];
-extern const u8 gUnknown_082DB234[];
-extern const u8 gUnknown_082DB2A6[];
-extern const u8 BattleScript_ThrashConfuses[];
-extern const u8 BattleScript_DisabledNoMore[];
-extern const u8 BattleScript_EncoredNoMore[];
-extern const u8 BattleScript_YawnMakesAsleep[];
-extern const u8 gUnknown_082DAFE4[];
-extern const u8 gUnknown_082DB8F3[];
-extern const u8 gUnknown_082DAF05[];
-extern const u8 gUnknown_082DAF20[];
-extern const u8 gUnknown_082DA7C4[];
-extern const u8 gUnknown_082DA7CD[];
-extern const u8 BattleScript_MoveUsedWokeUp[];
-extern const u8 BattleScript_MoveUsedIsAsleep[];
-extern const u8 BattleScript_MoveUsedIsFrozen[];
-extern const u8 BattleScript_MoveUsedUnfroze[];
-extern const u8 BattleScript_MoveUsedLoafingAround[];
-extern const u8 BattleScript_MoveUsedMustRecharge[];
-extern const u8 BattleScript_MoveUsedFlinched[];
-extern const u8 BattleScript_MoveUsedIsDisabled[];
-extern const u8 BattleScript_MoveUsedIsTaunted[];
-extern const u8 BattleScript_MoveUsedIsImprisoned[];
-extern const u8 BattleScript_MoveUsedIsConfused[];
-extern const u8 BattleScript_MoveUsedIsConfusedNoMore[];
-extern const u8 BattleScript_MoveUsedIsParalyzed[];
-extern const u8 BattleScript_MoveUsedIsParalyzedCantAttack[];
-extern const u8 BattleScript_MoveUsedIsInLove[];
-extern const u8 BattleScript_BideStoringEnergy[];
-extern const u8 BattleScript_BideAttack[];
-extern const u8 BattleScript_BideNoEnergyToAttack[];
-extern const u8 gUnknown_082DACE7[];
-extern const u8 BattleScript_DrizzleActivates[];
-extern const u8 BattleScript_SandstreamActivates[];
-extern const u8 BattleScript_DroughtActivates[];
-extern const u8 BattleScript_CastformChange[];
-extern const u8 BattleScript_RainDishActivates[];
-extern const u8 BattleScript_ShedSkinActivates[];
-extern const u8 BattleScript_SpeedBoostActivates[];
-extern const u8 BattleScript_SoundproofProtected[];
-extern const u8 BattleScript_MoveHPDrain[];
-extern const u8 BattleScript_MoveHPDrain_PPLoss[];
-extern const u8 BattleScript_FlashFireBoost[];
-extern const u8 BattleScript_FlashFireBoost_PPLoss[];
-extern const u8 gUnknown_082DB592[];
-extern const u8 gUnknown_082DB591[];
-extern const u8 BattleScript_ColorChangeActivates[];
-extern const u8 BattleScript_RoughSkinActivates[];
-extern const u8 BattleScript_ApplySecondaryEffect[];
-extern const u8 BattleScript_CuteCharmActivates[];
-extern const u8 gUnknown_082DB68C[];
-extern const u8 BattleScript_SynchronizeActivates[];
-extern const u8 gUnknown_082DB4B8[];
-extern const u8 gUnknown_082DB4C1[];
-extern const u8 BattleScript_TraceActivates[];
-
-extern const u8 BattleScript_WhiteHerbEnd2[];
-extern const u8 BattleScript_WhiteHerbRet[];
-extern const u8 BattleScript_ItemHealHP_RemoveItem[];
-extern const u8 BattleScript_BerryPPHealEnd2[];
-extern const u8 BattleScript_ItemHealHP_End2[];
-extern const u8 BattleScript_BerryConfuseHealEnd2[];
-extern const u8 BattleScript_BerryStatRaiseEnd2[];
-extern const u8 BattleScript_BerryFocusEnergyEnd2[];
-extern const u8 BattleScript_BerryCurePrlzEnd2[];
-extern const u8 BattleScript_BerryCurePsnEnd2[];
-extern const u8 BattleScript_BerryCureBrnEnd2[];
-extern const u8 BattleScript_BerryCureFrzEnd2[];
-extern const u8 BattleScript_BerryCureSlpEnd2[];
-extern const u8 BattleScript_BerryCureConfusionEnd2[];
-extern const u8 BattleScript_BerryCureChosenStatusEnd2[];
-extern const u8 BattleScript_BerryCureParRet[];
-extern const u8 BattleScript_BerryCurePsnRet[];
-extern const u8 BattleScript_BerryCureBrnRet[];
-extern const u8 BattleScript_BerryCureFrzRet[];
-extern const u8 BattleScript_BerryCureSlpRet[];
-extern const u8 BattleScript_BerryCureConfusionRet[];
-extern const u8 BattleScript_BerryCureChosenStatusRet[];
-extern const u8 BattleScript_ItemHealHP_Ret[];
-
-extern const u8 gUnknown_082DB695[]; //disobedient while asleep
-extern const u8 gUnknown_082DB6A5[]; //disobedient, uses a random move
-extern const u8 gUnknown_082DB6D9[]; //disobedient, went to sleep
-extern const u8 gUnknown_082DB6F0[]; //disobedient, hits itself
-
extern u8 weather_get_current(void);
// rom const data
@@ -196,13 +86,13 @@ u8 GetBattleBank(u8 caseId)
case BS_GET_EFFECT_BANK:
ret = gEffectBank;
break;
- case 7:
+ case BS_GET_BANK_0:
ret = 0;
break;
case BS_GET_SCRIPTING_BANK:
ret = gBattleScripting.bank;
break;
- case 3:
+ case BS_GET_gBank1:
ret = gBank1;
break;
case 5:
@@ -474,27 +364,27 @@ u8 TrySetCantSelectMoveBattleScript(void)
gCurrentMove = move;
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{
- gUnknown_02024230[gActiveBank] = gUnknown_082DAE2A;
+ gPalaceSelectionBattleScripts[gActiveBank] = BattleScript_SelectingDisabledMoveInPalace;
gProtectStructs[gActiveBank].flag_x10 = 1;
}
else
{
- gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DAE1F;
+ gSelectionBattleScripts[gActiveBank] = BattleScript_SelectingDisabledMove;
limitations = 1;
}
}
- if (move == gLastUsedMovesByBanks[gActiveBank] && move != MOVE_STRUGGLE && (gBattleMons[gActiveBank].status2 & STATUS2_TORMENT))
+ if (move == gLastMoves[gActiveBank] && move != MOVE_STRUGGLE && (gBattleMons[gActiveBank].status2 & STATUS2_TORMENT))
{
CancelMultiTurnMoves(gActiveBank);
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{
- gUnknown_02024230[gActiveBank] = gUnknown_082DB098;
+ gPalaceSelectionBattleScripts[gActiveBank] = BattleScript_SelectingTormentedMoveInPalace;
gProtectStructs[gActiveBank].flag_x10 = 1;
}
else
{
- gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DB089;
+ gSelectionBattleScripts[gActiveBank] = BattleScript_SelectingTormentedMove;
limitations++;
}
}
@@ -504,12 +394,12 @@ u8 TrySetCantSelectMoveBattleScript(void)
gCurrentMove = move;
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{
- gUnknown_02024230[gActiveBank] = gUnknown_082DB0AF;
+ gPalaceSelectionBattleScripts[gActiveBank] = BattleScript_SelectingNotAllowedMoveTauntInPalace;
gProtectStructs[gActiveBank].flag_x10 = 1;
}
else
{
- gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DB0A0;
+ gSelectionBattleScripts[gActiveBank] = BattleScript_SelectingNotAllowedMoveTaunt;
limitations++;
}
}
@@ -519,12 +409,12 @@ u8 TrySetCantSelectMoveBattleScript(void)
gCurrentMove = move;
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
{
- gUnknown_02024230[gActiveBank] = gUnknown_082DB185;
+ gPalaceSelectionBattleScripts[gActiveBank] = BattleScript_SelectingImprisionedMoveInPalace;
gProtectStructs[gActiveBank].flag_x10 = 1;
}
else
{
- gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DB181;
+ gSelectionBattleScripts[gActiveBank] = BattleScript_SelectingImprisionedMove;
limitations++;
}
}
@@ -546,7 +436,7 @@ u8 TrySetCantSelectMoveBattleScript(void)
}
else
{
- gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DB812;
+ gSelectionBattleScripts[gActiveBank] = BattleScript_SelectingNotAllowedMoveChoiceItem;
limitations++;
}
}
@@ -559,7 +449,7 @@ u8 TrySetCantSelectMoveBattleScript(void)
}
else
{
- gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DB076;
+ gSelectionBattleScripts[gActiveBank] = BattleScript_SelectingMoveWithNoPP;
limitations++;
}
}
@@ -570,7 +460,7 @@ u8 TrySetCantSelectMoveBattleScript(void)
u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check)
{
u8 holdEffect;
- u16* choicedMove = &gBattleStruct->choicedMove[bank];
+ u16 *choicedMove = &gBattleStruct->choicedMove[bank];
s32 i;
if (gBattleMons[bank].item == ITEM_ENIGMA_BERRY)
@@ -588,7 +478,7 @@ u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check)
unusableMoves |= gBitTable[i];
if (gBattleMons[bank].moves[i] == gDisableStructs[bank].disabledMove && check & MOVE_LIMITATION_DISABLED)
unusableMoves |= gBitTable[i];
- if (gBattleMons[bank].moves[i] == gLastUsedMovesByBanks[bank] && check & MOVE_LIMITATION_TORMENTED && gBattleMons[bank].status2 & STATUS2_TORMENT)
+ if (gBattleMons[bank].moves[i] == gLastMoves[bank] && check & MOVE_LIMITATION_TORMENTED && gBattleMons[bank].status2 & STATUS2_TORMENT)
unusableMoves |= gBitTable[i];
if (gDisableStructs[bank].tauntTimer1 && check & MOVE_LIMITATION_TAUNT && gBattleMoves[gBattleMons[bank].moves[i]].power == 0)
unusableMoves |= gBitTable[i];
@@ -610,7 +500,7 @@ bool8 AreAllMovesUnusable(void)
if (unusable == 0xF) // all moves are unusable
{
gProtectStructs[gActiveBank].onlyStruggle = 1;
- gBattlescriptPtrsForSelection[gActiveBank] = BattleScript_NoMovesLeft;
+ gSelectionBattleScripts[gActiveBank] = BattleScript_NoMovesLeft;
}
else
{
@@ -694,12 +584,8 @@ u8 UpdateTurnCounters(void)
if (--gSideTimers[sideBank].reflectTimer == 0)
{
gSideAffecting[sideBank] &= ~SIDE_STATUS_REFLECT;
- BattleScriptExecute(gUnknown_082DACFA);
- gBattleTextBuff1[0] = 0xFD;
- gBattleTextBuff1[1] = 2;
- gBattleTextBuff1[2] = MOVE_REFLECT;
- gBattleTextBuff1[3] = MOVE_REFLECT >> 8;
- gBattleTextBuff1[4] = EOS;
+ BattleScriptExecute(BattleScript_SideStatusWoreOff);
+ PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_REFLECT);
effect++;
}
}
@@ -723,13 +609,9 @@ u8 UpdateTurnCounters(void)
if (--gSideTimers[sideBank].lightscreenTimer == 0)
{
gSideAffecting[sideBank] &= ~SIDE_STATUS_LIGHTSCREEN;
- BattleScriptExecute(gUnknown_082DACFA);
+ BattleScriptExecute(BattleScript_SideStatusWoreOff);
gBattleCommunication[MULTISTRING_CHOOSER] = sideBank;
- gBattleTextBuff1[0] = 0xFD;
- gBattleTextBuff1[1] = 2;
- gBattleTextBuff1[2] = MOVE_LIGHT_SCREEN;
- gBattleTextBuff1[3] = MOVE_LIGHT_SCREEN >> 8;
- gBattleTextBuff1[4] = EOS;
+ PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_LIGHT_SCREEN);
effect++;
}
}
@@ -752,13 +634,9 @@ u8 UpdateTurnCounters(void)
&& --gSideTimers[sideBank].mistTimer == 0)
{
gSideAffecting[sideBank] &= ~SIDE_STATUS_MIST;
- BattleScriptExecute(gUnknown_082DACFA);
+ BattleScriptExecute(BattleScript_SideStatusWoreOff);
gBattleCommunication[MULTISTRING_CHOOSER] = sideBank;
- gBattleTextBuff1[0] = 0xFD;
- gBattleTextBuff1[1] = 2;
- gBattleTextBuff1[2] = MOVE_MIST;
- gBattleTextBuff1[3] = MOVE_MIST >> 8;
- gBattleTextBuff1[4] = EOS;
+ PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_MIST);
effect++;
}
gBattleStruct->turnSideTracker++;
@@ -781,7 +659,7 @@ u8 UpdateTurnCounters(void)
if (--gSideTimers[sideBank].safeguardTimer == 0)
{
gSideAffecting[sideBank] &= ~SIDE_STATUS_SAFEGUARD;
- BattleScriptExecute(gUnknown_082DAD0B);
+ BattleScriptExecute(BattleScript_SafeguardEnds);
effect++;
}
}
@@ -833,10 +711,15 @@ u8 UpdateTurnCounters(void)
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
}
else if (gBattleWeather & WEATHER_RAIN_DOWNPOUR)
+ {
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ }
else
+ {
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
- BattleScriptExecute(gUnknown_082DAC2C);
+ }
+
+ BattleScriptExecute(BattleScript_RainContinuesOrEnds);
effect++;
}
gBattleStruct->turncountersTracker++;
@@ -847,12 +730,14 @@ u8 UpdateTurnCounters(void)
if (!(gBattleWeather & WEATHER_SANDSTORM_PERMANENT) && --gWishFutureKnock.weatherDuration == 0)
{
gBattleWeather &= ~WEATHER_SANDSTORM_TEMPORARY;
- gBattlescriptCurrInstr = gUnknown_082DACC9;
+ gBattlescriptCurrInstr = BattleScript_SandStormHailEnds;
}
else
- gBattlescriptCurrInstr = gUnknown_082DAC47;
+ {
+ gBattlescriptCurrInstr = BattleScript_DamagingWeatherContinues;
+ }
- gBattleScripting.animArg1 = 0xC;
+ gBattleScripting.animArg1 = B_ANIM_SANDSTORM_CONTINUES;
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
BattleScriptExecute(gBattlescriptCurrInstr);
effect++;
@@ -865,10 +750,12 @@ u8 UpdateTurnCounters(void)
if (!(gBattleWeather & WEATHER_SUN_PERMANENT) && --gWishFutureKnock.weatherDuration == 0)
{
gBattleWeather &= ~WEATHER_SUN_TEMPORARY;
- gBattlescriptCurrInstr = gUnknown_082DACE0;
+ gBattlescriptCurrInstr = BattleScript_SunlightFaded;
}
else
- gBattlescriptCurrInstr = gUnknown_082DACD2;
+ {
+ gBattlescriptCurrInstr = BattleScript_SunlightContinues;
+ }
BattleScriptExecute(gBattlescriptCurrInstr);
effect++;
@@ -881,12 +768,14 @@ u8 UpdateTurnCounters(void)
if (--gWishFutureKnock.weatherDuration == 0)
{
gBattleWeather &= ~WEATHER_HAIL;
- gBattlescriptCurrInstr = gUnknown_082DACC9;
+ gBattlescriptCurrInstr = BattleScript_SandStormHailEnds;
}
else
- gBattlescriptCurrInstr = gUnknown_082DAC47;
+ {
+ gBattlescriptCurrInstr = BattleScript_DamagingWeatherContinues;
+ }
- gBattleScripting.animArg1 = 0xD;
+ gBattleScripting.animArg1 = B_ANIM_HAIL_CONTINUES;
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
BattleScriptExecute(gBattlescriptCurrInstr);
effect++;
@@ -981,7 +870,7 @@ u8 TurnBasedEffects(void)
gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 16;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
- if ((gBattleMons[gActiveBank].status1 & 0xF00) != 0xF00) //not 16 turns
+ if ((gBattleMons[gActiveBank].status1 & 0xF00) != 0xF00) // not 16 turns
gBattleMons[gActiveBank].status1 += 0x100;
gBattleMoveDamage *= (gBattleMons[gActiveBank].status1 & 0xF00) >> 8;
BattleScriptExecute(BattleScript_PoisonTurnDmg);
@@ -1040,8 +929,8 @@ u8 TurnBasedEffects(void)
// This is the only way I could get this array access to match.
gBattleScripting.animArg1 = *(gBattleStruct->wrappedMove + gActiveBank * 2 + 0);
gBattleScripting.animArg2 = *(gBattleStruct->wrappedMove + gActiveBank * 2 + 1);
- gBattleTextBuff1[0] = 0xFD;
- gBattleTextBuff1[1] = 2;
+ gBattleTextBuff1[0] = B_BUFF_PLACEHOLDER_BEGIN;
+ gBattleTextBuff1[1] = B_BUFF_MOVE;
gBattleTextBuff1[2] = *(gBattleStruct->wrappedMove + gActiveBank * 2 + 0);
gBattleTextBuff1[3] = *(gBattleStruct->wrappedMove + gActiveBank * 2 + 1);
gBattleTextBuff1[4] = EOS;
@@ -1052,8 +941,8 @@ u8 TurnBasedEffects(void)
}
else // broke free
{
- gBattleTextBuff1[0] = 0xFD;
- gBattleTextBuff1[1] = 2;
+ gBattleTextBuff1[0] = B_BUFF_PLACEHOLDER_BEGIN;
+ gBattleTextBuff1[1] = B_BUFF_MOVE;
gBattleTextBuff1[2] = *(gBattleStruct->wrappedMove + gActiveBank * 2 + 0);
gBattleTextBuff1[3] = *(gBattleStruct->wrappedMove + gActiveBank * 2 + 1);
gBattleTextBuff1[4] = EOS;
@@ -1075,7 +964,7 @@ u8 TurnBasedEffects(void)
gBattleMons[gBankAttacker].status1 &= ~(STATUS_SLEEP);
gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE);
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
- BattleScriptExecute(gUnknown_082DB234);
+ BattleScriptExecute(BattleScript_MonWokeUpInUproar);
gActiveBank = gBankAttacker;
EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
MarkBufferBankForExecution(gActiveBank);
@@ -1106,7 +995,7 @@ u8 TurnBasedEffects(void)
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
CancelMultiTurnMoves(gActiveBank);
}
- BattleScriptExecute(gUnknown_082DB2A6);
+ BattleScriptExecute(BattleScript_PrintUproarOverTurns);
effect = 1;
}
}
@@ -1125,7 +1014,7 @@ u8 TurnBasedEffects(void)
gBattleMons[gActiveBank].status2 &= ~(STATUS2_MULTIPLETURNS);
if (!(gBattleMons[gActiveBank].status2 & STATUS2_CONFUSION))
{
- gBattleCommunication[MOVE_EFFECT_BYTE] = 0x47;
+ gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_CONFUSION | MOVE_EFFECT_AFFECTS_USER;
SetMoveEffect(1, 0);
if (gBattleMons[gActiveBank].status2 & STATUS2_CONFUSION)
BattleScriptExecute(BattleScript_ThrashConfuses);
@@ -1224,23 +1113,23 @@ u8 TurnBasedEffects(void)
return 0;
}
-bool8 sub_8041364(void)
+bool8 HandleWishPerishSongOnTurnEnd(void)
{
gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_x20);
- switch (gBattleStruct->field_1A0)
+ switch (gBattleStruct->wishPerishSongState)
{
case 0:
- while (gBattleStruct->field_1A1 < gNoOfAllBanks)
+ while (gBattleStruct->wishPerishSongBank < gNoOfAllBanks)
{
- gActiveBank = gBattleStruct->field_1A1;
+ gActiveBank = gBattleStruct->wishPerishSongBank;
if (gAbsentBankFlags & gBitTable[gActiveBank])
{
- gBattleStruct->field_1A1++;
+ gBattleStruct->wishPerishSongBank++;
continue;
}
- gBattleStruct->field_1A1++;
+ gBattleStruct->wishPerishSongBank++;
if (gWishFutureKnock.futureSightCounter[gActiveBank] != 0
&& --gWishFutureKnock.futureSightCounter[gActiveBank] == 0
&& gBattleMons[gActiveBank].hp != 0)
@@ -1250,70 +1139,62 @@ bool8 sub_8041364(void)
else
gBattleCommunication[MULTISTRING_CHOOSER] = 1;
- gBattleTextBuff1[0] = 0xFD;
- gBattleTextBuff1[1] = 2;
- gBattleTextBuff1[2] = gWishFutureKnock.futureSightMove[gActiveBank];
- gBattleTextBuff1[3] = gWishFutureKnock.futureSightMove[gActiveBank] >> 8;
- gBattleTextBuff1[4] = EOS;
+ PREPARE_MOVE_BUFFER(gBattleTextBuff1, gWishFutureKnock.futureSightMove[gActiveBank]);
+
gBankTarget = gActiveBank;
gBankAttacker = gWishFutureKnock.futureSightAttacker[gActiveBank];
gBattleMoveDamage = gWishFutureKnock.futureSightDmg[gActiveBank];
gSpecialStatuses[gBankTarget].moveturnLostHP = 0xFFFF;
- BattleScriptExecute(gUnknown_082DAFE4);
+ BattleScriptExecute(BattleScript_MonTookFutureAttack);
if (gWishFutureKnock.futureSightCounter[gActiveBank] == 0
- && gWishFutureKnock.futureSightCounter[gActiveBank ^ 2] == 0)
+ && gWishFutureKnock.futureSightCounter[gActiveBank ^ BIT_MON] == 0)
{
- gSideAffecting[GetBankIdentity(gBankTarget) & 1] &= ~SIDE_STATUS_FUTUREATTACK;
+ gSideAffecting[GET_BANK_SIDE(gBankTarget)] &= ~(SIDE_STATUS_FUTUREATTACK);
}
- return 1;
+ return TRUE;
}
}
// Why do I have to keep doing this to match?
{
- u8* var = &gBattleStruct->field_1A0;
- *var = 1;
- gBattleStruct->field_1A1 = 0;
+ u8 *state = &gBattleStruct->wishPerishSongState;
+ *state = 1;
+ gBattleStruct->wishPerishSongBank = 0;
}
// fall through
case 1:
- while (gBattleStruct->field_1A1 < gNoOfAllBanks)
+ while (gBattleStruct->wishPerishSongBank < gNoOfAllBanks)
{
- gActiveBank = gBankAttacker = gBanksByTurnOrder[gBattleStruct->field_1A1];
+ gActiveBank = gBankAttacker = gBanksByTurnOrder[gBattleStruct->wishPerishSongBank];
if (gAbsentBankFlags & gBitTable[gActiveBank])
{
- gBattleStruct->field_1A1++;
+ gBattleStruct->wishPerishSongBank++;
continue;
}
- gBattleStruct->field_1A1++;
+ gBattleStruct->wishPerishSongBank++;
if (gStatuses3[gActiveBank] & STATUS3_PERISH_SONG)
{
- gBattleTextBuff1[0] = 0xFD;
- gBattleTextBuff1[1] = 1;
- gBattleTextBuff1[2] = 1;
- gBattleTextBuff1[3] = 1;
- gBattleTextBuff1[4] = gDisableStructs[gActiveBank].perishSongTimer1;
- gBattleTextBuff1[5] = EOS;
+ PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff1, 1, gDisableStructs[gActiveBank].perishSongTimer1);
if (gDisableStructs[gActiveBank].perishSongTimer1 == 0)
{
gStatuses3[gActiveBank] &= ~STATUS3_PERISH_SONG;
gBattleMoveDamage = gBattleMons[gActiveBank].hp;
- gBattlescriptCurrInstr = gUnknown_082DAF05;
+ gBattlescriptCurrInstr = BattleScript_PerishSongTakesLife;
}
else
{
gDisableStructs[gActiveBank].perishSongTimer1--;
- gBattlescriptCurrInstr = gUnknown_082DAF20;
+ gBattlescriptCurrInstr = BattleScript_PerishSongCountGoesDown;
}
BattleScriptExecute(gBattlescriptCurrInstr);
- return 1;
+ return TRUE;
}
}
// Hm...
{
- u8* var = &gBattleStruct->field_1A0;
- *var = 2;
- gBattleStruct->field_1A1 = 0;
+ u8 *state = &gBattleStruct->wishPerishSongState;
+ *state = 2;
+ gBattleStruct->wishPerishSongBank = 0;
}
// fall through
case 2:
@@ -1326,33 +1207,33 @@ bool8 sub_8041364(void)
for (i = 0; i < 2; i++)
CancelMultiTurnMoves(i);
- gBattlescriptCurrInstr = gUnknown_082DB8F3;
- BattleScriptExecute(gUnknown_082DB8F3);
- gBattleStruct->field_1A0++;
- return 1;
+ gBattlescriptCurrInstr = BattleScript_82DB8F3;
+ BattleScriptExecute(BattleScript_82DB8F3);
+ gBattleStruct->wishPerishSongState++;
+ return TRUE;
}
break;
}
gHitMarker &= ~(HITMARKER_GRUDGE | HITMARKER_x20);
- return 0;
+ return FALSE;
}
-#define sub_8041728_MAX_CASE 7
+#define FAINTED_ACTIONS_MAX_CASE 7
-bool8 sub_8041728(void)
+bool8 HandleFaintedMonActions(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
return FALSE;
do
{
int i;
- switch (gBattleStruct->field_4D)
+ switch (gBattleStruct->faintedActionsState)
{
case 0:
- gBattleStruct->field_4E = 0;
- gBattleStruct->field_4D++;
+ gBattleStruct->faintedActionsBank = 0;
+ gBattleStruct->faintedActionsState++;
for (i = 0; i < gNoOfAllBanks; i++)
{
if (gAbsentBankFlags & gBitTable[i] && !sub_80423F4(i, 6, 6))
@@ -1362,58 +1243,58 @@ bool8 sub_8041728(void)
case 1:
do
{
- gBank1 = gBankTarget = gBattleStruct->field_4E;
- if (gBattleMons[gBattleStruct->field_4E].hp == 0
- && !(gBattleStruct->field_DF & gBitTable[gBattlePartyID[gBattleStruct->field_4E]])
- && !(gAbsentBankFlags & gBitTable[gBattleStruct->field_4E]))
+ gBank1 = gBankTarget = gBattleStruct->faintedActionsBank;
+ if (gBattleMons[gBattleStruct->faintedActionsBank].hp == 0
+ && !(gBattleStruct->field_DF & gBitTable[gBattlePartyID[gBattleStruct->faintedActionsBank]])
+ && !(gAbsentBankFlags & gBitTable[gBattleStruct->faintedActionsBank]))
{
- BattleScriptExecute(gUnknown_082DA7C4);
- gBattleStruct->field_4D = 2;
+ BattleScriptExecute(BattleScript_GiveExp);
+ gBattleStruct->faintedActionsState = 2;
return TRUE;
}
- } while (++gBattleStruct->field_4E != gNoOfAllBanks);
- gBattleStruct->field_4D = 3;
+ } while (++gBattleStruct->faintedActionsBank != gNoOfAllBanks);
+ gBattleStruct->faintedActionsState = 3;
break;
case 2:
sub_803F9EC(gBank1);
- if (++gBattleStruct->field_4E == gNoOfAllBanks)
- gBattleStruct->field_4D = 3;
+ if (++gBattleStruct->faintedActionsBank == gNoOfAllBanks)
+ gBattleStruct->faintedActionsState = 3;
else
- gBattleStruct->field_4D = 1;
+ gBattleStruct->faintedActionsState = 1;
break;
case 3:
- gBattleStruct->field_4E = 0;
- gBattleStruct->field_4D++;
+ gBattleStruct->faintedActionsBank = 0;
+ gBattleStruct->faintedActionsState++;
// fall through
case 4:
do
{
- gBank1 = gBankTarget = gBattleStruct->field_4E;
- if (gBattleMons[gBattleStruct->field_4E].hp == 0
- && !(gAbsentBankFlags & gBitTable[gBattleStruct->field_4E]))
+ gBank1 = gBankTarget = gBattleStruct->faintedActionsBank;
+ if (gBattleMons[gBattleStruct->faintedActionsBank].hp == 0
+ && !(gAbsentBankFlags & gBitTable[gBattleStruct->faintedActionsBank]))
{
- BattleScriptExecute(gUnknown_082DA7CD);
- gBattleStruct->field_4D = 5;
+ BattleScriptExecute(BattleScript_HandleFaintedMon);
+ gBattleStruct->faintedActionsState = 5;
return TRUE;
}
- } while (++gBattleStruct->field_4E != gNoOfAllBanks);
- gBattleStruct->field_4D = 6;
+ } while (++gBattleStruct->faintedActionsBank != gNoOfAllBanks);
+ gBattleStruct->faintedActionsState = 6;
break;
case 5:
- if (++gBattleStruct->field_4E == gNoOfAllBanks)
- gBattleStruct->field_4D = 6;
+ if (++gBattleStruct->faintedActionsBank == gNoOfAllBanks)
+ gBattleStruct->faintedActionsState = 6;
else
- gBattleStruct->field_4D = 4;
+ gBattleStruct->faintedActionsState = 4;
break;
case 6:
if (AbilityBattleEffects(ABILITYEFFECT_INTIMIDATE1, 0, 0, 0, 0) || AbilityBattleEffects(ABILITYEFFECT_TRACE, 0, 0, 0, 0) || ItemBattleEffects(1, 0, 1) || AbilityBattleEffects(ABILITYEFFECT_FORECAST, 0, 0, 0, 0))
return TRUE;
- gBattleStruct->field_4D++;
+ gBattleStruct->faintedActionsState++;
break;
- case 7:
+ case FAINTED_ACTIONS_MAX_CASE:
break;
}
- } while (gBattleStruct->field_4D != sub_8041728_MAX_CASE);
+ } while (gBattleStruct->faintedActionsState != FAINTED_ACTIONS_MAX_CASE);
return FALSE;
}
@@ -1432,7 +1313,7 @@ void TryClearRageStatuses(void)
u8 AtkCanceller_UnableToUseMove(void)
{
u8 effect = 0;
- s32* bideDmg = &gBattleScripting.bideDmg;
+ s32 *bideDmg = &gBattleScripting.bideDmg;
do
{
switch (gBattleStruct->atkCancellerTracker)
@@ -1683,7 +1564,7 @@ u8 AtkCanceller_UnableToUseMove(void)
}
gBattleStruct->atkCancellerTracker++;
break;
- case 14: // last case
+ case ATKCANCELLER_MAX_CASE:
break;
}
@@ -1785,14 +1666,14 @@ bool8 sub_80423F4(u8 bank, u8 r1, u8 r2)
{
if (GetBankSide(bank) == SIDE_OPPONENT)
{
- r7 = GetBankByIdentity(1);
- r6 = GetBankByIdentity(3);
+ r7 = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
+ r6 = GetBankByIdentity(IDENTITY_OPPONENT_MON2);
party = gEnemyParty;
}
else
{
- r7 = GetBankByIdentity(0);
- r6 = GetBankByIdentity(2);
+ r7 = GetBankByIdentity(IDENTITY_PLAYER_MON1);
+ r6 = GetBankByIdentity(IDENTITY_PLAYER_MON2);
party = gPlayerParty;
}
if (r1 == 6)
@@ -1910,10 +1791,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
else
move = gCurrentMove;
- if (gBattleStruct->dynamicMoveType)
- moveType = gBattleStruct->dynamicMoveType & 0x3F;
- else
- moveType = gBattleMoves[move].type;
+ GET_MOVE_TYPE(move, moveType);
switch (caseID)
{
@@ -1961,7 +1839,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
if (effect)
{
gBattleCommunication[MULTISTRING_CHOOSER] = weather_get_current();
- BattleScriptPushCursorAndCallback(gUnknown_082DACE7);
+ BattleScriptPushCursorAndCallback(BattleScript_OverworldWeatherStarts);
}
break;
case ABILITY_DRIZZLE:
@@ -2167,9 +2045,9 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
if (gBattleMons[bank].maxHP == gBattleMons[bank].hp)
{
if ((gProtectStructs[gBankAttacker].notFirstStrike))
- gBattlescriptCurrInstr = gUnknown_082DB592;
+ gBattlescriptCurrInstr = BattleScript_MonMadeMoveUseless;
else
- gBattlescriptCurrInstr = gUnknown_082DB591;
+ gBattlescriptCurrInstr = BattleScript_MonMadeMoveUseless_PPLoss;
}
else
{
@@ -2307,86 +2185,84 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_IMMUNITY: // 5
+ for (bank = 0; bank < gNoOfAllBanks; bank++)
{
- for (bank = 0; bank < gNoOfAllBanks; bank++)
+ switch (gBattleMons[bank].ability)
{
- switch (gBattleMons[bank].ability)
+ case ABILITY_IMMUNITY:
+ if (gBattleMons[bank].status1 & (STATUS_POISON | STATUS_TOXIC_POISON | STATUS_TOXIC_COUNTER))
{
- case ABILITY_IMMUNITY:
- if (gBattleMons[bank].status1 & (STATUS_POISON | STATUS_TOXIC_POISON | STATUS_TOXIC_COUNTER))
- {
- StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn);
- effect = 1;
- }
- break;
- case ABILITY_OWN_TEMPO:
- if (gBattleMons[bank].status2 & STATUS2_CONFUSION)
- {
- StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn);
- effect = 2;
- }
- break;
- case ABILITY_LIMBER:
- if (gBattleMons[bank].status1 & STATUS_PARALYSIS)
- {
- StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn);
- effect = 1;
- }
- break;
- case ABILITY_INSOMNIA:
- case ABILITY_VITAL_SPIRIT:
- if (gBattleMons[bank].status1 & STATUS_SLEEP)
- {
- gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE);
- StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn);
- effect = 1;
- }
- break;
- case ABILITY_WATER_VEIL:
- if (gBattleMons[bank].status1 & STATUS_BURN)
- {
- StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn);
- effect = 1;
- }
+ StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn);
+ effect = 1;
+ }
+ break;
+ case ABILITY_OWN_TEMPO:
+ if (gBattleMons[bank].status2 & STATUS2_CONFUSION)
+ {
+ StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn);
+ effect = 2;
+ }
+ break;
+ case ABILITY_LIMBER:
+ if (gBattleMons[bank].status1 & STATUS_PARALYSIS)
+ {
+ StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn);
+ effect = 1;
+ }
+ break;
+ case ABILITY_INSOMNIA:
+ case ABILITY_VITAL_SPIRIT:
+ if (gBattleMons[bank].status1 & STATUS_SLEEP)
+ {
+ gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE);
+ StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn);
+ effect = 1;
+ }
+ break;
+ case ABILITY_WATER_VEIL:
+ if (gBattleMons[bank].status1 & STATUS_BURN)
+ {
+ StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn);
+ effect = 1;
+ }
+ break;
+ case ABILITY_MAGMA_ARMOR:
+ if (gBattleMons[bank].status1 & STATUS_FREEZE)
+ {
+ StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn);
+ effect = 1;
+ }
+ break;
+ case ABILITY_OBLIVIOUS:
+ if (gBattleMons[bank].status2 & STATUS2_INFATUATION)
+ {
+ StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn);
+ effect = 3;
+ }
+ break;
+ }
+ if (effect)
+ {
+ switch (effect)
+ {
+ case 1: // status cleared
+ gBattleMons[bank].status1 = 0;
break;
- case ABILITY_MAGMA_ARMOR:
- if (gBattleMons[bank].status1 & STATUS_FREEZE)
- {
- StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn);
- effect = 1;
- }
+ case 2: // get rid of confusion
+ gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION);
break;
- case ABILITY_OBLIVIOUS:
- if (gBattleMons[bank].status2 & STATUS2_INFATUATION)
- {
- StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn);
- effect = 3;
- }
+ case 3: // get rid of infatuation
+ gBattleMons[bank].status2 &= ~(STATUS2_INFATUATION);
break;
}
- if (effect)
- {
- switch (effect)
- {
- case 1: // status cleared
- gBattleMons[bank].status1 = 0;
- break;
- case 2: // get rid of confusion
- gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION);
- break;
- case 3: // get rid of infatuation
- gBattleMons[bank].status2 &= ~(STATUS2_INFATUATION);
- break;
- }
- BattleScriptPushCursor();
- gBattlescriptCurrInstr = gUnknown_082DB68C;
- gBattleScripting.bank = bank;
- gActiveBank = bank;
- EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
- MarkBufferBankForExecution(gActiveBank);
- return effect;
- }
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_AbilityCuredStatus;
+ gBattleScripting.bank = bank;
+ gActiveBank = bank;
+ EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
+ MarkBufferBankForExecution(gActiveBank);
+ return effect;
}
}
break;
@@ -2445,7 +2321,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
{
gLastUsedAbility = ABILITY_INTIMIDATE;
gStatuses3[i] &= ~(STATUS3_INTIMIDATE_POKES);
- BattleScriptPushCursorAndCallback(gUnknown_082DB4B8);
+ BattleScriptPushCursorAndCallback(BattleScript_82DB4B8);
gBattleStruct->intimidateBank = i;
effect++;
break;
@@ -2517,7 +2393,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
gLastUsedAbility = ABILITY_INTIMIDATE;
gStatuses3[i] &= ~(STATUS3_INTIMIDATE_POKES);
BattleScriptPushCursor();
- gBattlescriptCurrInstr = gUnknown_082DB4C1;
+ gBattlescriptCurrInstr = BattleScript_82DB4C1;
gBattleStruct->intimidateBank = i;
effect++;
break;
@@ -2636,7 +2512,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
return effect;
}
-void BattleScriptExecute(const u8* BS_ptr)
+void BattleScriptExecute(const u8 *BS_ptr)
{
gBattlescriptCurrInstr = BS_ptr;
BATTLE_CALLBACKS_STACK->function[BATTLE_CALLBACKS_STACK->size++] = gBattleMainFunc;
@@ -2644,7 +2520,7 @@ void BattleScriptExecute(const u8* BS_ptr)
gCurrentActionFuncId = 0;
}
-void BattleScriptPushCursorAndCallback(const u8* BS_ptr)
+void BattleScriptPushCursorAndCallback(const u8 *BS_ptr)
{
BattleScriptPushCursor();
gBattlescriptCurrInstr = BS_ptr;
@@ -2662,15 +2538,6 @@ enum
ITEM_STATS_CHANGE, // 5
};
-enum
-{
- FLAVOR_SPICY, // 0
- FLAVOR_DRY, // 1
- FLAVOR_SWEET, // 2
- FLAVOR_BITTER, // 3
- FLAVOR_SOUR, // 4
-};
-
u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
{
int i = 0;
@@ -2727,7 +2594,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
gBattleStruct->moneyMultiplier = 2;
break;
case HOLD_EFFECT_RESTORE_STATS:
- for (i = 0; i < 8; i++)
+ for (i = 0; i < BATTLE_STATS_NO; i++)
{
if (gBattleMons[bank].statStages[i] < 6)
{
@@ -2764,19 +2631,19 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
case HOLD_EFFECT_RESTORE_PP:
if (!moveTurn)
{
- struct Pokemon* poke;
+ struct Pokemon *mon;
u8 ppBonuses;
u16 move;
if (GetBankSide(bank) == SIDE_PLAYER)
- poke = &gPlayerParty[gBattlePartyID[bank]];
+ mon = &gPlayerParty[gBattlePartyID[bank]];
else
- poke = &gEnemyParty[gBattlePartyID[bank]];
+ mon = &gEnemyParty[gBattlePartyID[bank]];
for (i = 0; i < 4; i++)
{
- move = GetMonData(poke, MON_DATA_MOVE1 + i);
- changedPP = GetMonData(poke, MON_DATA_PP1 + i);
- ppBonuses = GetMonData(poke, MON_DATA_PP_BONUSES);
+ move = GetMonData(mon, MON_DATA_MOVE1 + i);
+ changedPP = GetMonData(mon, MON_DATA_PP1 + i);
+ ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES);
if (move && changedPP == 0)
break;
}
@@ -2787,11 +2654,9 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
changedPP = maxPP;
else
changedPP = changedPP + bankQuality;
- gBattleTextBuff1[0] = 0xFD;
- gBattleTextBuff1[1] = 2;
- gBattleTextBuff1[2] = move;
- gBattleTextBuff1[3] = move >> 8;
- gBattleTextBuff1[4] = 0xFF;
+
+ PREPARE_MOVE_BUFFER(gBattleTextBuff1, move);
+
BattleScriptExecute(BattleScript_BerryPPHealEnd2);
EmitSetMonData(0, i + REQUEST_PPMOVE1_BATTLE, 0, 1, &changedPP);
MarkBufferBankForExecution(gActiveBank);
@@ -2800,7 +2665,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
}
break;
case HOLD_EFFECT_RESTORE_STATS:
- for (i = 0; i < 8; i++)
+ for (i = 0; i < BATTLE_STATS_NO; i++)
{
if (gBattleMons[bank].statStages[i] < 6)
{
@@ -2834,17 +2699,15 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
case HOLD_EFFECT_CONFUSE_SPICY:
if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn)
{
- gBattleTextBuff1[0] = 0xFD;
- gBattleTextBuff1[1] = 8;
- gBattleTextBuff1[2] = FLAVOR_SPICY;
- gBattleTextBuff1[3] = EOS;
+ PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_SPICY);
+
gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP)
gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp;
gBattleMoveDamage *= -1;
- if (GetFlavourRelationByPersonality(gBattleMons[bank].personality, FLAVOR_SPICY) < 0)
+ if (GetFlavorRelationByPersonality(gBattleMons[bank].personality, FLAVOR_SPICY) < 0)
BattleScriptExecute(BattleScript_BerryConfuseHealEnd2);
else
BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem);
@@ -2854,17 +2717,15 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
case HOLD_EFFECT_CONFUSE_DRY:
if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn)
{
- gBattleTextBuff1[0] = 0xFD;
- gBattleTextBuff1[1] = 8;
- gBattleTextBuff1[2] = FLAVOR_DRY;
- gBattleTextBuff1[3] = EOS;
+ PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_DRY);
+
gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP)
gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp;
gBattleMoveDamage *= -1;
- if (GetFlavourRelationByPersonality(gBattleMons[bank].personality, FLAVOR_DRY) < 0)
+ if (GetFlavorRelationByPersonality(gBattleMons[bank].personality, FLAVOR_DRY) < 0)
BattleScriptExecute(BattleScript_BerryConfuseHealEnd2);
else
BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem);
@@ -2874,17 +2735,15 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
case HOLD_EFFECT_CONFUSE_SWEET:
if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn)
{
- gBattleTextBuff1[0] = 0xFD;
- gBattleTextBuff1[1] = 8;
- gBattleTextBuff1[2] = FLAVOR_SWEET;
- gBattleTextBuff1[3] = EOS;
+ PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_SWEET);
+
gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP)
gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp;
gBattleMoveDamage *= -1;
- if (GetFlavourRelationByPersonality(gBattleMons[bank].personality, FLAVOR_SWEET) < 0)
+ if (GetFlavorRelationByPersonality(gBattleMons[bank].personality, FLAVOR_SWEET) < 0)
BattleScriptExecute(BattleScript_BerryConfuseHealEnd2);
else
BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem);
@@ -2894,17 +2753,15 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
case HOLD_EFFECT_CONFUSE_BITTER:
if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn)
{
- gBattleTextBuff1[0] = 0xFD;
- gBattleTextBuff1[1] = 8;
- gBattleTextBuff1[2] = FLAVOR_BITTER;
- gBattleTextBuff1[3] = EOS;
+ PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_BITTER);
+
gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP)
gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp;
gBattleMoveDamage *= -1;
- if (GetFlavourRelationByPersonality(gBattleMons[bank].personality, FLAVOR_BITTER) < 0)
+ if (GetFlavorRelationByPersonality(gBattleMons[bank].personality, FLAVOR_BITTER) < 0)
BattleScriptExecute(BattleScript_BerryConfuseHealEnd2);
else
BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem);
@@ -2914,17 +2771,15 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
case HOLD_EFFECT_CONFUSE_SOUR:
if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn)
{
- gBattleTextBuff1[0] = 0xFD;
- gBattleTextBuff1[1] = 8;
- gBattleTextBuff1[2] = FLAVOR_SOUR;
- gBattleTextBuff1[3] = EOS;
+ PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_SOUR);
+
gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality;
if (gBattleMoveDamage == 0)
gBattleMoveDamage = 1;
if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP)
gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp;
gBattleMoveDamage *= -1;
- if (GetFlavourRelationByPersonality(gBattleMons[bank].personality, FLAVOR_SOUR) < 0)
+ if (GetFlavorRelationByPersonality(gBattleMons[bank].personality, FLAVOR_SOUR) < 0)
BattleScriptExecute(BattleScript_BerryConfuseHealEnd2);
else
BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem);
@@ -2935,19 +2790,11 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
case HOLD_EFFECT_ATTACK_UP:
if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_ATK] < 0xC)
{
- gBattleTextBuff1[0] = 0xFD;
- gBattleTextBuff1[1] = 5;
- gBattleTextBuff1[2] = STAT_STAGE_ATK;
- gBattleTextBuff1[3] = EOS;
-
- gBattleTextBuff2[0] = 0xFD;
- gBattleTextBuff2[1] = 0;
- gBattleTextBuff2[2] = 0xD2;
- gBattleTextBuff2[3] = 0xD2 >> 8;
- gBattleTextBuff2[4] = EOS;
+ PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_STAGE_ATK);
+ PREPARE_STRING_BUFFER(gBattleTextBuff2, STRINGID_STATROSE);
gEffectBank = bank;
- gBattleScripting.statChanger = 0x10 + STAT_STAGE_ATK;
+ SET_STATCHANGER(STAT_STAGE_ATK, 1, FALSE);
gBattleScripting.animArg1 = 0xE + STAT_STAGE_ATK;
gBattleScripting.animArg2 = 0;
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
@@ -2957,13 +2804,10 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
case HOLD_EFFECT_DEFENSE_UP:
if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_DEF] < 0xC)
{
- gBattleTextBuff1[0] = 0xFD;
- gBattleTextBuff1[1] = 5;
- gBattleTextBuff1[2] = STAT_STAGE_DEF;
- gBattleTextBuff1[3] = EOS;
+ PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_STAGE_DEF);
gEffectBank = bank;
- gBattleScripting.statChanger = 0x10 + STAT_STAGE_DEF;
+ SET_STATCHANGER(STAT_STAGE_DEF, 1, FALSE);
gBattleScripting.animArg1 = 0xE + STAT_STAGE_DEF;
gBattleScripting.animArg2 = 0;
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
@@ -2973,13 +2817,10 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
case HOLD_EFFECT_SPEED_UP:
if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_SPEED] < 0xC)
{
- gBattleTextBuff1[0] = 0xFD;
- gBattleTextBuff1[1] = 5;
- gBattleTextBuff1[2] = STAT_STAGE_SPEED;
- gBattleTextBuff1[3] = EOS;
+ PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_STAGE_SPEED);
gEffectBank = bank;
- gBattleScripting.statChanger = 0x10 + STAT_STAGE_SPEED;
+ SET_STATCHANGER(STAT_STAGE_SPEED, 1, FALSE);
gBattleScripting.animArg1 = 0xE + STAT_STAGE_SPEED;
gBattleScripting.animArg2 = 0;
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
@@ -2989,13 +2830,10 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
case HOLD_EFFECT_SP_ATTACK_UP:
if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_SPATK] < 0xC)
{
- gBattleTextBuff1[0] = 0xFD;
- gBattleTextBuff1[1] = 5;
- gBattleTextBuff1[2] = STAT_STAGE_SPATK;
- gBattleTextBuff1[3] = EOS;
+ PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_STAGE_SPATK);
gEffectBank = bank;
- gBattleScripting.statChanger = 0x10 + STAT_STAGE_SPATK;
+ SET_STATCHANGER(STAT_STAGE_SPATK, 1, FALSE);
gBattleScripting.animArg1 = 0xE + STAT_STAGE_SPATK;
gBattleScripting.animArg2 = 0;
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
@@ -3005,13 +2843,10 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
case HOLD_EFFECT_SP_DEFENSE_UP:
if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_SPDEF] < 0xC)
{
- gBattleTextBuff1[0] = 0xFD;
- gBattleTextBuff1[1] = 5;
- gBattleTextBuff1[2] = STAT_STAGE_SPDEF;
- gBattleTextBuff1[3] = EOS;
+ PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_STAGE_SPDEF);
gEffectBank = bank;
- gBattleScripting.statChanger = 0x10 + STAT_STAGE_SPDEF;
+ SET_STATCHANGER(STAT_STAGE_SPDEF, 1, FALSE);
gBattleScripting.animArg1 = 0xE + STAT_STAGE_SPDEF;
gBattleScripting.animArg2 = 0;
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
@@ -3041,22 +2876,19 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
i = Random() % 5;
} while (gBattleMons[bank].statStages[STAT_STAGE_ATK + i] == 0xC);
- gBattleTextBuff1[0] = 0xFD;
- gBattleTextBuff1[1] = 5;
- gBattleTextBuff1[2] = i + 1;
- gBattleTextBuff1[3] = EOS;
-
- gBattleTextBuff2[0] = 0xFD;
- gBattleTextBuff2[1] = 0;
- gBattleTextBuff2[2] = 0xD1;
- gBattleTextBuff2[3] = 0xD1 >> 8;
- gBattleTextBuff2[4] = 0;
- gBattleTextBuff2[5] = 0xD2;
- gBattleTextBuff2[6] = 0xD2 >> 8;
+ PREPARE_STAT_BUFFER(gBattleTextBuff1, i + 1);
+
+ gBattleTextBuff2[0] = B_BUFF_PLACEHOLDER_BEGIN;
+ gBattleTextBuff2[1] = B_BUFF_STRING;
+ gBattleTextBuff2[2] = STRINGID_STATSHARPLY;
+ gBattleTextBuff2[3] = STRINGID_STATSHARPLY >> 8;
+ gBattleTextBuff2[4] = B_BUFF_STRING;
+ gBattleTextBuff2[5] = STRINGID_STATROSE;
+ gBattleTextBuff2[6] = STRINGID_STATROSE >> 8;
gBattleTextBuff2[7] = EOS;
gEffectBank = bank;
- gBattleScripting.statChanger = 0x21 + i;
+ SET_STATCHANGER(i + 1, 2, FALSE);
gBattleScripting.animArg1 = 0x21 + i + 6;
gBattleScripting.animArg2 = 0;
BattleScriptExecute(BattleScript_BerryStatRaiseEnd2);
@@ -3309,7 +3141,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
}
break;
case HOLD_EFFECT_RESTORE_STATS:
- for (i = 0; i < 8; i++)
+ for (i = 0; i < BATTLE_STATS_NO; i++)
{
if (gBattleMons[bank].statStages[i] < 6)
{
@@ -3350,7 +3182,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
&& gBattleMoves[gCurrentMove].flags & FLAG_KINGSROCK_AFFECTED
&& gBattleMons[gBankTarget].hp)
{
- gBattleCommunication[MOVE_EFFECT_BYTE] = 8;
+ gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_FLINCH;
BattleScriptPushCursor();
SetMoveEffect(0, 0);
BattleScriptPop();
@@ -3411,7 +3243,7 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget)
switch (moveTarget)
{
case MOVE_TARGET_SELECTED:
- side = GetBankSide(gBankAttacker) ^ 1;
+ side = GetBankSide(gBankAttacker) ^ BIT_SIDE;
if (gSideTimers[side].followmeTimer && gBattleMons[gSideTimers[side].followmeTarget].hp)
targetBank = gSideTimers[side].followmeTarget;
else
@@ -3425,7 +3257,7 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget)
&& AbilityBattleEffects(ABILITYEFFECT_COUNT_OTHER_SIDE, gBankAttacker, ABILITY_LIGHTNING_ROD, 0, 0)
&& gBattleMons[targetBank].ability != ABILITY_LIGHTNING_ROD)
{
- targetBank ^= 2;
+ targetBank ^= BIT_MON;
RecordAbilityBattle(targetBank, gBattleMons[targetBank].ability);
gSpecialStatuses[targetBank].lightningRodRedirected = 1;
}
@@ -3435,12 +3267,12 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget)
case MOVE_TARGET_BOTH:
case MOVE_TARGET_FOES_AND_ALLY:
case MOVE_TARGET_OPPONENTS_FIELD:
- targetBank = GetBankByIdentity((GetBankIdentity(gBankAttacker) & 1) ^ 1);
+ targetBank = GetBankByIdentity((GetBankIdentity(gBankAttacker) & BIT_SIDE) ^ BIT_SIDE);
if (gAbsentBankFlags & gBitTable[targetBank])
- targetBank ^= 2;
+ targetBank ^= BIT_MON;
break;
case MOVE_TARGET_RANDOM:
- side = GetBankSide(gBankAttacker) ^ 1;
+ side = GetBankSide(gBankAttacker) ^ BIT_SIDE;
if (gSideTimers[side].followmeTimer && gBattleMons[gSideTimers[side].followmeTarget].hp)
targetBank = gSideTimers[side].followmeTarget;
else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && moveTarget & MOVE_TARGET_RANDOM)
@@ -3448,22 +3280,22 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget)
if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
{
if (Random() & 1)
- targetBank = GetBankByIdentity(1);
+ targetBank = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
else
- targetBank = GetBankByIdentity(3);
+ targetBank = GetBankByIdentity(IDENTITY_OPPONENT_MON2);
}
else
{
if (Random() & 1)
- targetBank = GetBankByIdentity(0);
+ targetBank = GetBankByIdentity(IDENTITY_PLAYER_MON1);
else
- targetBank = GetBankByIdentity(2);
+ targetBank = GetBankByIdentity(IDENTITY_PLAYER_MON2);
}
if (gAbsentBankFlags & gBitTable[targetBank])
- targetBank ^= 2;
+ targetBank ^= BIT_MON;
}
else
- targetBank = GetBankByIdentity((GetBankIdentity(gBankAttacker) & 1) ^ 1);
+ targetBank = GetBankByIdentity((GetBankIdentity(gBankAttacker) & BIT_SIDE) ^ BIT_SIDE);
break;
case MOVE_TARGET_USER:
case MOVE_TARGET_x10:
@@ -3471,11 +3303,7 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget)
break;
}
- #ifndef NONMATCHING
- MEME_ACCESS_U8(BattleStruct, gBattleStruct, gBankAttacker, moveTarget, targetBank);
- #else
- gBattleStruct->moveTarget[gBankAttacker] = targetBank;
- #endif // NONMATCHING
+ *(gBattleStruct->moveTarget + gBankAttacker) = targetBank;
return targetBank;
}
@@ -3490,7 +3318,7 @@ static bool32 HasObedientBitSet(u8 bank)
return GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_OBEDIENCE, NULL);
}
-u8 IsPokeDisobedient(void)
+u8 IsMonDisobedient(void)
{
s32 rnd;
s32 calc;
@@ -3536,7 +3364,7 @@ u8 IsPokeDisobedient(void)
gBattleMons[gBankAttacker].status2 &= ~(STATUS2_RAGE);
if (gBattleMons[gBankAttacker].status1 & STATUS_SLEEP && (gCurrentMove == MOVE_SNORE || gCurrentMove == MOVE_SLEEP_TALK))
{
- gBattlescriptCurrInstr = gUnknown_082DB695;
+ gBattlescriptCurrInstr = BattleScript_82DB695;
return 1;
}
@@ -3559,7 +3387,7 @@ u8 IsPokeDisobedient(void)
} while (gBitTable[gCurrMovePos] & calc);
gRandomMove = gBattleMons[gBankAttacker].moves[gCurrMovePos];
- gBattlescriptCurrInstr = gUnknown_082DB6A5;
+ gBattlescriptCurrInstr = BattleScript_IgnoresAndUsesRandomMove;
gBankTarget = GetMoveTarget(gRandomMove, 0);
gHitMarker |= HITMARKER_x200000;
return 2;
@@ -3581,7 +3409,7 @@ u8 IsPokeDisobedient(void)
}
if (i == gNoOfAllBanks)
{
- gBattlescriptCurrInstr = gUnknown_082DB6D9;
+ gBattlescriptCurrInstr = BattleScript_IgnoresAndFallsAsleep;
return 1;
}
}
@@ -3590,7 +3418,7 @@ u8 IsPokeDisobedient(void)
{
gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankAttacker], MOVE_POUND, 0, 40, 0, gBankAttacker, gBankAttacker);
gBankTarget = gBankAttacker;
- gBattlescriptCurrInstr = gUnknown_082DB6F0;
+ gBattlescriptCurrInstr = BattleScript_82DB6F0;
gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
return 2;
}
diff --git a/src/battle_util2.c b/src/battle_util2.c
index e119c85d7..538c1c641 100644
--- a/src/battle_util2.c
+++ b/src/battle_util2.c
@@ -4,21 +4,17 @@
#include "malloc.h"
#include "pokemon.h"
#include "event_data.h"
-#include "abilities.h"
-#include "rng.h"
+#include "constants/abilities.h"
+#include "random.h"
+#include "battle_scripts.h"
extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
extern u8 gUnknown_0203CF00[];
-extern const u8* gBattlescriptCurrInstr;
+extern const u8 *gBattlescriptCurrInstr;
extern u8 gBattleCommunication[];
extern u8 gActiveBank;
-extern const u8 BattleScript_MoveUsedWokeUp[];
-extern const u8 BattleScript_MoveUsedIsFrozen[];
-extern const u8 BattleScript_MoveUsedUnfroze[];
-extern const u8 BattleScript_MoveUsedIsAsleep[];
-
extern void sub_81D55D0(void);
extern void sub_81D5694(void);
extern u8 pokemon_order_func(u8);
diff --git a/src/berry.c b/src/berry.c
index 6d1fd17a1..74b7090c0 100644
--- a/src/berry.c
+++ b/src/berry.c
@@ -2,9 +2,9 @@
#include "berry.h"
#include "main.h"
#include "item.h"
-#include "items.h"
+#include "constants/items.h"
#include "text.h"
-#include "rng.h"
+#include "random.h"
#include "event_data.h"
#include "fieldmap.h"
@@ -18,12 +18,6 @@ extern u16 gSpecialVar_ItemId;
extern const u8 BerryTreeScript[];
-#define BERRY_NAME_LENGTH 6
-
-#define FIRST_BERRY ITEM_CHERI_BERRY
-#define LAST_BERRY ITEM_ENIGMA_BERRY
-
-
static const u8 sBerryDescriptionPart1_Cheri[] = _("Blooms with delicate pretty flowers.");
static const u8 sBerryDescriptionPart2_Cheri[] = _("The bright red BERRY is very spicy.");
static const u8 sBerryDescriptionPart1_Chesto[] = _("The BERRY’s thick skin and fruit are");
@@ -1062,28 +1056,28 @@ u8 GetStageByBerryTreeId(u8 id)
u8 ItemIdToBerryType(u16 item)
{
- u16 berry = item - FIRST_BERRY;
+ u16 berry = item - FIRST_BERRY_INDEX;
- if (berry > LAST_BERRY - FIRST_BERRY)
+ if (berry > LAST_BERRY_INDEX - FIRST_BERRY_INDEX)
return 1;
else
- return item - FIRST_BERRY + 1;
+ return ITEM_TO_BERRY(item);
}
u16 BerryTypeToItemId(u16 berry)
{
u16 item = berry - 1;
- if (item > LAST_BERRY - FIRST_BERRY)
- return FIRST_BERRY;
+ if (item > LAST_BERRY_INDEX - FIRST_BERRY_INDEX)
+ return FIRST_BERRY_INDEX;
else
- return berry + FIRST_BERRY - 1;
+ return berry + FIRST_BERRY_INDEX - 1;
}
void GetBerryNameByBerryType(u8 berry, u8 *string)
{
- memcpy(string, GetBerryInfo(berry)->name, BERRY_NAME_LENGTH);
- string[BERRY_NAME_LENGTH] = EOS;
+ memcpy(string, GetBerryInfo(berry)->name, BERRY_NAME_COUNT - 1);
+ string[BERRY_NAME_COUNT - 1] = EOS;
}
void GetBerryCountStringByBerryType(u8 berry, u8* dest, u32 berryCount)
diff --git a/src/berry_blender.c b/src/berry_blender.c
index 8e5a51845..b1e8712a6 100644
--- a/src/berry_blender.c
+++ b/src/berry_blender.c
@@ -1,17 +1,140 @@
#include "global.h"
+#include "constants/game_stat.h"
+#include "overworld.h"
+#include "berry_blender.h"
#include "bg.h"
#include "window.h"
#include "task.h"
#include "sprite.h"
+#include "sound.h"
+#include "constants/songs.h"
+#include "m4a.h"
+#include "bg.h"
+#include "palette.h"
+#include "decompress.h"
+#include "malloc.h"
+#include "gpu_regs.h"
+#include "text.h"
+#include "event_data.h"
+#include "main.h"
+#include "link.h"
+#include "new_menu_helpers.h"
+#include "item_menu_icons.h"
+#include "berry.h"
+#include "item.h"
+#include "constants/items.h"
+#include "string_util.h"
+#include "international_string_util.h"
+#include "random.h"
+#include "menu.h"
+#include "pokeblock.h"
+#include "trig.h"
+#include "tv.h"
+
+#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
+
+enum
+{
+ PLAY_AGAIN_OK,
+ DONT_PLAY_AGAIN,
+ CANT_PLAY_NO_BERRIES,
+ CANT_PLAY_NO_PKBLCK_SPACE
+};
-// Static type declarations
+struct BlenderBerry
+{
+ u16 itemId;
+ u8 name[BERRY_NAME_COUNT];
+ u8 flavors[FLAVOR_COUNT];
+ u8 smoothness;
+};
-// Static RAM declarations
-IWRAM_DATA void *berry_blender_c_unused_03000de4;
-IWRAM_DATA s16 gUnknown_03000DE8[8];
-IWRAM_DATA s16 gUnknown_03000DF8[6];
-IWRAM_DATA s16 gUnknown_03000E04;
-IWRAM_DATA s16 gUnknown_03000E06;
+struct TimeAndRPM
+{
+ u32 time;
+ u16 max_RPM;
+};
+
+struct BlenderGameBlock
+{
+ struct TimeAndRPM timeRPM;
+ u16 scores[BLENDER_MAX_PLAYERS][BLENDER_SCORES_NO];
+};
+
+struct TvBlenderStruct
+{
+ u8 name[11];
+ u8 pokeblockFlavor;
+ u8 pokeblockColor;
+ u8 pokeblockSheen;
+};
+
+struct BerryBlenderData
+{
+ u8 mainState;
+ u8 loadGfxState;
+ u8 unused_02[0x42];
+ u16 field_44;
+ u8 scoreIconIds[BLENDER_SCORES_NO];
+ u16 arrowPos;
+ s16 field_4C;
+ u16 max_RPM;
+ u8 syncArrowSpriteIds[BLENDER_MAX_PLAYERS];
+ u8 syncArrowSprite2Ids[BLENDER_MAX_PLAYERS];
+ u8 unused_57[0xB];
+ u8 gameEndState;
+ u16 field_64[BLENDER_MAX_PLAYERS];
+ u16 field_6C;
+ u16 field_6E;
+ u16 playAgainState;
+ u8 field_72;
+ u16 chosenItemId[BLENDER_MAX_PLAYERS];
+ u8 playersNo;
+ u8 unused_7D[0x10];
+ u16 field_8E[BLENDER_MAX_PLAYERS];
+ u16 field_96[BLENDER_MAX_PLAYERS];
+ u8 yesNoAnswer;
+ u8 stringVar[100];
+ u32 gameFrameTime;
+ s32 framesToWait;
+ u32 field_10C;
+ u8 unused_110[4];
+ u8 field_114;
+ u16 field_116;
+ u16 field_118;
+ u16 field_11A;
+ u16 bg_X;
+ u16 bg_Y;
+ u8 field_120[3];
+ u8 field_123;
+ u16 scores[BLENDER_MAX_PLAYERS][BLENDER_SCORES_NO];
+ u8 playerPlaces[BLENDER_MAX_PLAYERS];
+ struct BgAffineSrcData bgAffineSrc;
+ u16 field_154;
+ struct BlenderBerry blendedBerries[BLENDER_MAX_PLAYERS];
+ struct TimeAndRPM smallBlock;
+ u32 field_1A0;
+ u8 field_1A4;
+ struct TvBlenderStruct tvBlender;
+ u8 tilemapBuffers[2][0x800];
+ s16 textState;
+ void *tilesBuffer;
+ struct BlenderGameBlock gameBlock;
+};
+
+extern struct MusicPlayerInfo gMPlay_SE2;
+extern struct MusicPlayerInfo gMPlay_BGM;
+extern u16 gSpecialVar_ItemId;
+extern u8 gInGameOpponentsNo;
+extern u8 gUnknown_020322D5;
+extern u8 gResultsWindowId;
+
+extern const u8 * const gPokeblockNames[];
// graphics
extern const u8 gBerryBlenderArrowTiles[];
@@ -21,20 +144,92 @@ extern const u8 gBerryBlenderParticlesTiles[];
extern const u8 gBerryBlenderCountdownNumbersTiles[];
extern const u16 gBerryBlenderMiscPalette[];
extern const u16 gBerryBlenderArrowPalette[];
-
-void sub_8080EA4(u8 taskId);
-void sub_8080FD0(u8 taskId);
-void sub_80810F8(u8 taskId);
-void sub_80833F8(struct Sprite *sprite);
-void sub_8082F68(struct Sprite *sprite);
-void sub_8083010(struct Sprite *sprite);
-void sub_80830C0(struct Sprite *sprite);
-
-// .rodata
-// TODO: make those static once the file is decompiled
-const u16 sBlenderCenterPal[] = INCBIN_U16("graphics/berry_blender/center.gbapal");
-const u8 sBlenderCenterMap[] = INCBIN_U8("graphics/berry_blender/center_map.bin");
-const u16 sBlenderOuterPal[] = INCBIN_U16("graphics/berry_blender/outer.gbapal");
+extern const u8 sBlenderCenterGfx[];
+extern const u8 gUnknown_08D91DB8[];
+extern const u8 gUnknown_08D927EC[];
+
+// text
+extern const u8 gText_SavingDontTurnOff2[];
+extern const u8 gText_Space[];
+extern const u8 gText_BlenderMaxSpeedRecord[];
+extern const u8 gText_234Players[];
+
+extern void sub_81978B0(u16);
+extern void sub_800A418(void);
+extern u8 sub_800A9D8(void);
+extern bool8 sub_800A4D8(u8);
+extern void sub_8197DF8(u8 windowId, bool8 copyToVram);
+extern void sub_809882C(u8, u16, u8);
+extern void copy_textbox_border_tile_patterns_to_vram(u8, u16, u8);
+extern void sub_81AABF0(void (*callback)(void));
+extern void sub_800B4C0(void);
+extern void sub_8009F8C(void);
+extern void c2_exit_to_overworld_1_continue_scripts_restart_music(void);
+extern void sub_8153430(void);
+extern bool8 sub_8153474(void);
+extern void sub_80EECEC(void);
+
+// this file's functions
+static void BerryBlender_SetBackgroundsPos(void);
+static void sub_8080EA4(u8 taskId);
+static void sub_8080FD0(u8 taskId);
+static void sub_80810F8(u8 taskId);
+static void sub_8081224(u8 taskId);
+static void sub_8083F3C(u8 taskId);
+static void sub_80833F8(struct Sprite *sprite);
+static void sub_8082F68(struct Sprite *sprite);
+static void sub_8083010(struct Sprite *sprite);
+static void sub_80830C0(struct Sprite *sprite);
+static void sub_8082F9C(struct Sprite *sprite);
+static void Blender_SetPlayerNamesLocal(u8 opponentsNum);
+static void sub_807FAC8(void);
+static void sub_8082D28(void);
+static bool32 Blender_PrintText(s16 *textState, const u8 *string, s32 textSpeed);
+static void sub_807FFA4(void);
+static void sub_8080018(void);
+static void sub_80808D4(void);
+static void Blender_DummiedOutFunc(s16 a0, s16 a1);
+static void sub_8081898(void);
+static void sub_8082CB4(struct BgAffineSrcData *bgAffineSrc);
+static bool8 sub_8083380(void);
+static void sub_808074C(void);
+static void Blender_PrintPlayerNames(void);
+static void sub_8080588(void);
+static void Blender_SetBankBerryData(u8 bank, u16 itemId);
+static void Blender_AddTextPrinter(u8 windowId, const u8 *string, u8 x, u8 y, s32 speed, s32 caseId);
+static void sub_8080DF8(void);
+static void sub_8082E84(void);
+static void sub_80832BC(s16* a0, u16 a1);
+static void sub_8083140(u16 a0, u16 a2);
+static void sub_8083230(u16 a0);
+static void sub_808330C(void);
+static void sub_8082AD4(void);
+static void CB2_HandleBlenderEndGame(void);
+static bool8 Blender_PrintBlendingRanking(void);
+static bool8 Blender_PrintBlendingResults(void);
+static void CB2_HandlePlayerPlayAgainChoice(void);
+static void CB2_HandlePlayerLinkPlayAgainChoice(void);
+static void sub_8083170(u16 a0, u16 a1);
+static void Blender_PrintMadePokeblockString(struct Pokeblock *pokeblock, u8 *dst);
+static bool32 TryAddContestLinkTvShow(struct Pokeblock *pokeblock, struct TvBlenderStruct *a1);
+
+// ewram
+EWRAM_DATA static struct BerryBlenderData *sBerryBlenderData = NULL;
+EWRAM_DATA static s32 sUnknown_020322A8[5] = {0};
+EWRAM_DATA static s32 sUnknown_020322BC[5] = {0};
+EWRAM_DATA static u32 sUnknown_020322D0 = 0;
+
+// iwram
+IWRAM_DATA static s16 sUnknown_03000DE8[8];
+IWRAM_DATA static s16 sUnknown_03000DF8[6];
+IWRAM_DATA static s16 sUnknown_03000E04;
+IWRAM_DATA static s16 sUnknown_03000E06;
+
+// rom
+
+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/unknown/unknown_339514.gbapal");
@@ -47,9 +242,9 @@ static const u8 sUnusedText_Space[] = _(" ");
static const u8 sUnusedText_Terminating[] = _("Terminating.");
static const u8 sUnusedText_LinkPartnerNotFound[] = _("Link partner(s) not found.\nPlease try again.\p");
-const u8 gText_BerryBlenderStart[] = _("Starting up the BERRY BLENDER.\pPlease select a BERRY from your BAG\nto put in the BERRY BLENDER.\p");
-const u8 gText_NewParagraph[] = _("\p");
-const u8 gText_WasMade[] = _(" was made!");
+static const u8 sText_BerryBlenderStart[] = _("Starting up the BERRY BLENDER.\pPlease select a BERRY from your BAG\nto put in the BERRY BLENDER.\p");
+static const u8 sText_NewParagraph[] = _("\p");
+static const u8 sText_WasMade[] = _(" was made!");
static const u8 sText_Mister[] = _("MISTER");
static const u8 sText_Laddie[] = _("LADDIE");
static const u8 sText_Lassie[] = _("LASSIE");
@@ -57,7 +252,7 @@ static const u8 sText_Master[] = _("MASTER");
static const u8 sText_Dude[] = _("DUDE");
static const u8 sText_Miss[] = _("MISS");
-const u8* const sBlenderOpponentsNames[] =
+static const u8* const sBlenderOpponentsNames[] =
{
sText_Mister,
sText_Laddie,
@@ -67,31 +262,41 @@ const u8* const sBlenderOpponentsNames[] =
sText_Miss
};
+enum
+{
+ BLENDER_MISTER,
+ BLENDER_LADDIE,
+ BLENDER_LASSIE,
+ BLENDER_MASTER,
+ BLENDER_DUDE,
+ BLENDER_MISS
+};
+
static const u8 sText_PressAToStart[] = _("Press the A Button to start.");
static const u8 sText_PleaseWaitAWhile[] = _("Please wait a while.");
-const u8 sText_CommunicationStandby[] = _("Communication standby…");
-const u8 sText_WouldLikeToBlendAnotherBerry[] = _("Would you like to blend another BERRY?");
-const u8 sText_RunOutOfBerriesForBlending[] = _("You’ve run out of BERRIES for\nblending in the BERRY BLENDER.\p");
-const u8 sText_YourPokeblockCaseIsFull[] = _("Your {POKEBLOCK} CASE is full.\p");
-const u8 sText_HasNoBerriesToPut[] = _(" has no BERRIES to put in\nthe BERRY BLENDER.");
-const u8 sText_ApostropheSPokeblockCaseIsFull[] = _("’s {POKEBLOCK} CASE is full.\p");
-const u8 sText_BlendingResults[] = _("RESULTS OF BLENDING");
+static const u8 sText_CommunicationStandby[] = _("Communication standby…");
+static const u8 sText_WouldLikeToBlendAnotherBerry[] = _("Would you like to blend another BERRY?");
+static const u8 sText_RunOutOfBerriesForBlending[] = _("You’ve run out of BERRIES for\nblending in the BERRY BLENDER.\p");
+static const u8 sText_YourPokeblockCaseIsFull[] = _("Your {POKEBLOCK} CASE is full.\p");
+static const u8 sText_HasNoBerriesToPut[] = _(" has no BERRIES to put in\nthe BERRY BLENDER.");
+static const u8 sText_ApostropheSPokeblockCaseIsFull[] = _("’s {POKEBLOCK} CASE is full.\p");
+static const u8 sText_BlendingResults[] = _("RESULTS OF BLENDING");
static const u8 sText_BerryUsed[] = _("BERRY USED");
-const u8 sText_SpaceBerry[] = _(" BERRY");
-const u8 sText_Time[] = _("Time:");
-const u8 sText_Min[] = _(" min. ");
-const u8 sText_Sec[] = _(" sec.");
-const u8 sText_MaximumSpeed[] = _("MAXIMUM SPEED");
-const u8 sText_RPM[] = _(" RPM");
-const u8 sText_Dot[] = _(".");
-const u8 sText_NewLine[] = _("\n");
+static const u8 sText_SpaceBerry[] = _(" BERRY");
+static const u8 sText_Time[] = _("Time:");
+static const u8 sText_Min[] = _(" min. ");
+static const u8 sText_Sec[] = _(" sec.");
+static const u8 sText_MaximumSpeed[] = _("MAXIMUM SPEED");
+static const u8 sText_RPM[] = _(" RPM");
+static const u8 sText_Dot[] = _(".");
+static const u8 sText_NewLine[] = _("\n");
static const u8 sText_Space[] = _(" ");
-const u8 sText_Ranking[] = _("RANKING");
-const u8 sText_TheLevelIs[] = _("The level is ");
-const u8 sText_TheFeelIs[] = _(", and the feel is ");
-const u8 sText_Dot2[] = _(".");
+static const u8 sText_Ranking[] = _("RANKING");
+static const u8 sText_TheLevelIs[] = _("The level is ");
+static const u8 sText_TheFeelIs[] = _(", and the feel is ");
+static const u8 sText_Dot2[] = _(".");
-const struct BgTemplate gUnknown_08339974[3] =
+static const struct BgTemplate sBerryBlenderBgTemplates[3] =
{
{
.bg = 0,
@@ -122,7 +327,7 @@ const struct BgTemplate gUnknown_08339974[3] =
}
};
-const struct WindowTemplate gUnknown_08339980[] =
+static const struct WindowTemplate sBerryBlender_WindowTemplates[] =
{
{0, 1, 6, 7, 2, 0xE, 0x28},
{0, 0x16, 6, 7, 2, 0xE, 0x36},
@@ -133,31 +338,31 @@ const struct WindowTemplate gUnknown_08339980[] =
DUMMY_WIN_TEMPLATE
};
-const struct WindowTemplate gUnknown_083399B8 =
+static const struct WindowTemplate sBlender_YesNoWindowTemplate =
{
0, 0x15, 9, 5, 4, 0xE, 0xCC
};
-const s8 gUnknown_083399C0[][2] =
+static const s8 sUnknown_083399C0[][2] =
{
{-1, -1}, {1, -1}, {-1, 1}, {1, 1}
};
-const u8 sBlenderSyncArrowsPos[][2] =
+static const u8 sBlenderSyncArrowsPos[BLENDER_MAX_PLAYERS][2] =
{
{72, 32}, {168, 32}, {72, 128}, {168, 128}
};
-const u8 gUnknown_083399D0[3][4] =
+static const u8 sUnknown_083399D0[3][4] =
{
{-1, 0, 1, -1}, {-1, 0, 1, 2}, {0, 1, 2, 3}
};
-const u16 gUnknown_083399DC[] = {0, 0xC000, 0x4000, 0x8000};
-const u8 gUnknown_083399E4[] = {1, 1, 0};
-const u8 gUnknown_083399E7[] = {32, 224, 96, 160, 0};
+static const u16 sUnknown_083399DC[] = {0, 0xC000, 0x4000, 0x8000};
+static const u8 sUnknown_083399E4[] = {1, 1, 0};
+static const u8 sUnknown_083399E7[] = {32, 224, 96, 160, 0};
-const TaskFunc gUnknown_083399EC[] =
+static const TaskFunc sUnknown_083399EC[] =
{
sub_8080EA4, sub_8080FD0, sub_80810F8
};
@@ -279,22 +484,22 @@ static const union AnimCmd *const sSpriteAnimTable_82163AC[] =
sSpriteAnim_82163A4
};
-const struct SpriteSheet sSpriteSheet_BlenderArrow =
+static const struct SpriteSheet sSpriteSheet_BlenderArrow =
{
gBerryBlenderArrowTiles, 0x800, 46545
};
-const struct SpritePalette sSpritePal_BlenderMisc =
+static const struct SpritePalette sSpritePal_BlenderMisc =
{
gBerryBlenderMiscPalette, 46546
};
-const struct SpritePalette sSpritePal_BlenderArrow =
+static const struct SpritePalette sSpritePal_BlenderArrow =
{
gBerryBlenderArrowPalette, 12312
};
-const struct SpriteTemplate sBlenderSyncArrow_SpriteTemplate =
+static const struct SpriteTemplate sBlenderSyncArrow_SpriteTemplate =
{
.tileTag = 46545,
.paletteTag = 12312,
@@ -358,12 +563,12 @@ static const union AnimCmd *const sSpriteAnimTable_8216444[] =
sSpriteAnim_821643C,
};
-const struct SpriteSheet gUnknown_08339B38 =
+static const struct SpriteSheet sUnknown_08339B38 =
{
gBerryBlenderMarubatsuTiles, 0x200, 48888
};
-const struct SpriteTemplate gUnknown_08339B40 =
+static const struct SpriteTemplate sUnknown_08339B40 =
{
.tileTag = 48888,
.paletteTag = 46546,
@@ -445,12 +650,12 @@ static const union AnimCmd *const sSpriteAnimTable_82164E0[] =
sSpriteAnim_82164D8,
};
-const struct SpriteSheet gUnknown_08339BD8 =
+static const struct SpriteSheet sUnknown_08339BD8 =
{
gBerryBlenderParticlesTiles, 0xE0, 23456
};
-const struct SpriteTemplate gUnknown_08339BE0 =
+static const struct SpriteTemplate sUnknown_08339BE0 =
{
.tileTag = 23456,
.paletteTag = 46546,
@@ -503,12 +708,12 @@ static const union AnimCmd *const sSpriteAnimTable_8216534[] =
sSpriteAnim_821652C,
};
-const struct SpriteSheet gUnknown_08339C24 =
+static const struct SpriteSheet sUnknown_08339C24 =
{
gBerryBlenderCountdownNumbersTiles, 0x600, 12345
};
-const struct SpriteTemplate gUnknown_08339C2C =
+static const struct SpriteTemplate sUnknown_08339C2C =
{
.tileTag = 12345,
.paletteTag = 46546,
@@ -547,12 +752,12 @@ static const union AnimCmd *const sSpriteAnimTable_8216570[] =
sSpriteAnim_8216568,
};
-const struct SpriteSheet gUnknown_08339C58 =
+static const struct SpriteSheet sUnknown_08339C58 =
{
gBerryBlenderStartTiles, 0x400, 12346
};
-const struct SpriteTemplate gUnknown_08339C60 =
+static const struct SpriteTemplate sUnknown_08339C60 =
{
.tileTag = 12346,
.paletteTag = 46546,
@@ -563,7 +768,7 @@ const struct SpriteTemplate gUnknown_08339C60 =
.callback = sub_80830C0
};
-const s16 gUnknown_08339C78[][5] =
+static const s16 sUnknown_08339C78[][5] =
{
{-10, 20, 10, 2, 1},
{250, 20, 10, -2, 1},
@@ -571,18 +776,18 @@ const s16 gUnknown_08339C78[][5] =
{250, 140, 10, -2, -1},
};
-const u8 gUnknown_08339CA0[][3] =
+static const u8 sOpponentBerrySets[][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},
};
-const u8 gUnknown_08339CBE[] = {30, 31, 32, 33, 34};
+static const u8 sSpecialOpponentBerrySets[] = {30, 31, 32, 33, 34};
-const u8 gUnknown_08339CC3[] = {1, 1, 2, 3, 4};
+static const u8 sUnknown_08339CC3[] = {1, 1, 2, 3, 4};
-const u8 gUnknown_08339CC8[] = {0x1C, 0x16, 0x13, 0x1A, 0x19, 0x0E, 0x0D, 0x0B, 0x07, 0x15};
+static const u8 sUnknown_08339CC8[] = {0x1C, 0x16, 0x13, 0x1A, 0x19, 0x0E, 0x0D, 0x0B, 0x07, 0x15};
-static const u8 gUnknown_08339CD2[] =
+static const u8 sUnknown_08339CD2[] =
{
0xfe, 0x02, 0x02, 0xce, 0xd0, 0x37, 0x44, 0x07, 0x1f, 0x0c, 0x10,
0x00, 0xff, 0xfe, 0x91, 0x72, 0xce, 0xd0, 0x37, 0x44, 0x07, 0x1f,
@@ -592,6 +797,2835 @@ static const u8 gUnknown_08339CD2[] =
0x05, 0x03, 0x03, 0x03, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x02
};
-const struct WindowTemplate gUnknown_08339D14[] = {0, 6, 4, 0x12, 0xB, 0xF, 8};
+static const struct WindowTemplate sBlenderRecordWindowTemplate = {0, 6, 4, 0x12, 0xB, 0xF, 8};
+
+// code
+
+static void Blender_ControlHitPitch(void)
+{
+ m4aMPlayPitchControl(&gMPlay_SE2, 0xFFFF, 2 * (sBerryBlenderData->field_4C - 128));
+}
+
+static void VBlankCB0_BerryBlender(void)
+{
+ BerryBlender_SetBackgroundsPos();
+ SetBgAffine(2, sBerryBlenderData->bgAffineSrc.texX, sBerryBlenderData->bgAffineSrc.texY,
+ sBerryBlenderData->bgAffineSrc.scrX, sBerryBlenderData->bgAffineSrc.scrY,
+ sBerryBlenderData->bgAffineSrc.sx, sBerryBlenderData->bgAffineSrc.sy,
+ sBerryBlenderData->bgAffineSrc.alpha);
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static bool8 LoadBerryBlenderGfx(void)
+{
+ switch (sBerryBlenderData->loadGfxState)
+ {
+ case 0:
+ sBerryBlenderData->tilesBuffer = AllocZeroed(sub_8034974(sBlenderCenterGfx) + 100);
+ LZDecompressWram(sBlenderCenterGfx, sBerryBlenderData->tilesBuffer);
+ sBerryBlenderData->loadGfxState++;
+ break;
+ case 1:
+ CopyToBgTilemapBuffer(2, sBlenderCenterMap, 0x400, 0);
+ CopyBgTilemapBufferToVram(2);
+ LoadPalette(sBlenderCenterPal, 0, 0x100);
+ sBerryBlenderData->loadGfxState++;
+ break;
+ case 2:
+ LoadBgTiles(2, sBerryBlenderData->tilesBuffer, sub_8034974(sBlenderCenterGfx), 0);
+ sBerryBlenderData->loadGfxState++;
+ break;
+ case 3:
+ LZDecompressWram(gUnknown_08D91DB8, sBerryBlenderData->tilesBuffer);
+ sBerryBlenderData->loadGfxState++;
+ break;
+ case 4:
+ LoadBgTiles(1, sBerryBlenderData->tilesBuffer, sub_8034974(gUnknown_08D91DB8), 0);
+ sBerryBlenderData->loadGfxState++;
+ break;
+ case 5:
+ LZDecompressWram(gUnknown_08D927EC, sBerryBlenderData->tilesBuffer);
+ sBerryBlenderData->loadGfxState++;
+ break;
+ case 6:
+ CopyToBgTilemapBuffer(1, sBerryBlenderData->tilesBuffer, sub_8034974(gUnknown_08D927EC), 0);
+ CopyBgTilemapBufferToVram(1);
+ sBerryBlenderData->loadGfxState++;
+ break;
+ case 7:
+ LoadPalette(sBlenderOuterPal, 0x80, 0x20);
+ sBerryBlenderData->loadGfxState++;
+ break;
+ case 8:
+ LoadSpriteSheet(&sSpriteSheet_BlenderArrow);
+ LoadSpriteSheet(&sUnknown_08339BD8);
+ LoadSpriteSheet(&sUnknown_08339B38);
+ sBerryBlenderData->loadGfxState++;
+ break;
+ case 9:
+ LoadSpriteSheet(&sUnknown_08339C24);
+ LoadSpriteSheet(&sUnknown_08339C58);
+ LoadSpritePalette(&sSpritePal_BlenderArrow);
+ LoadSpritePalette(&sSpritePal_BlenderMisc);
+ Free(sBerryBlenderData->tilesBuffer);
+ sBerryBlenderData->loadGfxState = 0;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static void sub_807F9D0(void)
+{
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x1E, 0x14);
+ CopyBgTilemapBufferToVram(0);
+ ShowBg(0);
+ ShowBg(1);
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
+ ChangeBgX(0, 0, 0);
+ ChangeBgY(0, 0, 0);
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+}
+
+static void InitBerryBlenderWindows(void)
+{
+ if (InitWindows(sBerryBlender_WindowTemplates))
+ {
+ s32 i;
+
+ DeactivateAllTextPrinters();
+ for (i = 0; i < 5; i++)
+ FillWindowPixelBuffer(i, 0);
+
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x1E, 0x14);
+ sub_81978B0(0xE0);
+ }
+}
+
+void DoBerryBlending(void)
+{
+ if (sBerryBlenderData == NULL)
+ sBerryBlenderData = AllocZeroed(sizeof(*sBerryBlenderData));
+
+ sBerryBlenderData->gameEndState = 0;
+ sBerryBlenderData->mainState = 0;
+ sBerryBlenderData->gameEndState = 0;
+
+ Blender_SetPlayerNamesLocal(gSpecialVar_0x8004);
+ SetMainCallback2(sub_807FAC8);
+}
+
+static void sub_807FAC8(void)
+{
+ s32 i;
+
+ switch (sBerryBlenderData->mainState)
+ {
+ case 0:
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ SetVBlankCallback(NULL);
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(1, sBerryBlenderBgTemplates, ARRAY_COUNT(sBerryBlenderBgTemplates));
+ SetBgTilemapBuffer(1, sBerryBlenderData->tilemapBuffers[0]);
+ SetBgTilemapBuffer(2, sBerryBlenderData->tilemapBuffers[1]);
+ sub_809882C(0, 1, 0xD0);
+ copy_textbox_border_tile_patterns_to_vram(0, 0x14, 0xF0);
+ InitBerryBlenderWindows();
+
+ sBerryBlenderData->mainState++;
+ sBerryBlenderData->field_118 = 0;
+ sBerryBlenderData->field_116 = 0;
+ sBerryBlenderData->field_11A = 0x50;
+ sBerryBlenderData->bg_X = 0;
+ sBerryBlenderData->bg_Y = 0;
+ sBerryBlenderData->loadGfxState = 0;
+
+ sub_8082D28();
+ break;
+ case 1:
+ if (LoadBerryBlenderGfx())
+ {
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ sBerryBlenderData->syncArrowSpriteIds[i] = CreateSprite(&sBlenderSyncArrow_SpriteTemplate, sBlenderSyncArrowsPos[i][0], sBlenderSyncArrowsPos[i][1], 1);
+ StartSpriteAnim(&gSprites[sBerryBlenderData->syncArrowSpriteIds[i]], i + 8);
+ }
+ if (gReceivedRemoteLinkPlayers != 0 && gLinkVSyncDisabled)
+ {
+ sub_800E0E8();
+ sub_800DFB4(0, 0);
+ }
+ SetVBlankCallback(VBlankCB0_BerryBlender);
+ sBerryBlenderData->mainState++;
+ }
+ break;
+ case 2:
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ sub_8082D28();
+ sBerryBlenderData->mainState++;
+ break;
+ case 3:
+ sub_807F9D0();
+ if (!gPaletteFade.active)
+ sBerryBlenderData->mainState++;
+ break;
+ case 4:
+ if (Blender_PrintText(&sBerryBlenderData->textState, sText_BerryBlenderStart, GetPlayerTextSpeed()))
+ sBerryBlenderData->mainState++;
+ break;
+ case 5:
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ sBerryBlenderData->mainState++;
+ break;
+ case 6:
+ if (!gPaletteFade.active)
+ {
+ FreeAllWindowBuffers();
+ UnsetBgTilemapBuffer(2);
+ UnsetBgTilemapBuffer(1);
+ SetVBlankCallback(NULL);
+ sub_81AABF0(sub_807FFA4);
+
+ sBerryBlenderData->mainState = 0;
+ }
+ break;
+ }
+
+ AnimateSprites();
+ BuildOamBuffer();
+ RunTextPrinters();
+ UpdatePaletteFade();
+}
+
+static void sub_807FD08(struct Sprite* sprite)
+{
+ sprite->data[1] += sprite->data[6];
+ sprite->data[2] -= sprite->data[4];
+ sprite->data[2] += sprite->data[7];
+ sprite->data[0] += sprite->data[7];
+ sprite->data[4]--;
+
+ if (sprite->data[0] < sprite->data[2])
+ {
+ sprite->data[3] = sprite->data[4] = sprite->data[3] - 1;
+
+ if (++sprite->data[5] > 3)
+ DestroySprite(sprite);
+ else
+ PlaySE(SE_TB_KARA);
+ }
+ sprite->pos1.x = sprite->data[1];
+ sprite->pos1.y = sprite->data[2];
+}
+
+static void sub_807FD64(struct Sprite* sprite, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6)
+{
+ sprite->data[0] = a3;
+ sprite->data[1] = a2;
+ sprite->data[2] = a3;
+ sprite->data[3] = a4;
+ sprite->data[4] = 10;
+ sprite->data[5] = 0;
+ sprite->data[6] = a5;
+ sprite->data[7] = a6;
+ sprite->callback = sub_807FD08;
+}
+
+static void sub_807FD90(u16 a0, u8 a1)
+{
+ u8 spriteId = sub_80D511C(a0 + 123, 0, 80, a1 & 1);
+ sub_807FD64(&gSprites[spriteId], sUnknown_08339C78[a1][0], sUnknown_08339C78[a1][1], sUnknown_08339C78[a1][2], sUnknown_08339C78[a1][3], sUnknown_08339C78[a1][4]);
+}
+
+static void Blender_CopyBerryData(struct BlenderBerry* berry, u16 itemId)
+{
+ const struct Berry *berryInfo = GetBerryInfo(ITEM_TO_BERRY(itemId));
+
+ berry->itemId = itemId;
+ StringCopy(berry->name, berryInfo->name);
+ berry->flavors[FLAVOR_SPICY] = berryInfo->spicy;
+ berry->flavors[FLAVOR_DRY] = berryInfo->dry;
+ berry->flavors[FLAVOR_SWEET] = berryInfo->sweet;
+ berry->flavors[FLAVOR_BITTER] = berryInfo->bitter;
+ berry->flavors[FLAVOR_SOUR] = berryInfo->sour;
+ berry->smoothness = berryInfo->smoothness;
+}
+
+static void Blender_SetPlayerNamesLocal(u8 opponentsNum)
+{
+ switch (opponentsNum)
+ {
+ case 0:
+ gInGameOpponentsNo = 0;
+ break;
+ case 1:
+ gInGameOpponentsNo = 1;
+ sBerryBlenderData->playersNo = 2;
+ StringCopy(gLinkPlayers[0].name, gSaveBlock2Ptr->playerName);
+
+ if (!FlagGet(FLAG_0x340))
+ StringCopy(gLinkPlayers[1].name, sBlenderOpponentsNames[BLENDER_MASTER]);
+ else
+ StringCopy(gLinkPlayers[1].name, sBlenderOpponentsNames[BLENDER_MISTER]);
+
+ gLinkPlayers[0].language = GAME_LANGUAGE;
+ gLinkPlayers[1].language = GAME_LANGUAGE;
+ break;
+ case 2:
+ gInGameOpponentsNo = 2;
+ sBerryBlenderData->playersNo = 3;
+ StringCopy(gLinkPlayers[0].name, gSaveBlock2Ptr->playerName);
+ StringCopy(gLinkPlayers[1].name, sBlenderOpponentsNames[BLENDER_DUDE]);
+ StringCopy(gLinkPlayers[2].name, sBlenderOpponentsNames[BLENDER_LASSIE]);
+
+ gLinkPlayers[0].language = GAME_LANGUAGE;
+ gLinkPlayers[1].language = GAME_LANGUAGE;
+ gLinkPlayers[2].language = GAME_LANGUAGE;
+ break;
+ case 3:
+ gInGameOpponentsNo = 3;
+ sBerryBlenderData->playersNo = 4;
+ StringCopy(gLinkPlayers[0].name, gSaveBlock2Ptr->playerName);
+ StringCopy(gLinkPlayers[1].name, sBlenderOpponentsNames[BLENDER_MISS]);
+ StringCopy(gLinkPlayers[2].name, sBlenderOpponentsNames[BLENDER_LADDIE]);
+ StringCopy(gLinkPlayers[3].name, sBlenderOpponentsNames[BLENDER_LASSIE]);
+
+ gLinkPlayers[0].language = GAME_LANGUAGE;
+ gLinkPlayers[1].language = GAME_LANGUAGE;
+ gLinkPlayers[2].language = GAME_LANGUAGE;
+ gLinkPlayers[3].language = GAME_LANGUAGE;
+ break;
+ }
+}
+
+static void sub_807FFA4(void)
+{
+ s32 i;
+
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ if (sBerryBlenderData == NULL)
+ sBerryBlenderData = AllocZeroed(sizeof(*sBerryBlenderData));
+
+ sBerryBlenderData->mainState = 0;
+ sBerryBlenderData->field_10C = 0;
+
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ sBerryBlenderData->chosenItemId[i] = ITEM_NONE;
+
+ Blender_SetPlayerNamesLocal(gSpecialVar_0x8004);
+
+ if (gSpecialVar_0x8004 == 0)
+ SetMainCallback2(sub_8080018);
+ else
+ SetMainCallback2(sub_80808D4);
+}
+
+static void sub_8080018(void)
+{
+ s32 i, j;
+
+ switch (sBerryBlenderData->mainState)
+ {
+ case 0:
+ sub_8080588();
+ gLinkType = 0x4422;
+ sBerryBlenderData->field_72 = 0;
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ sBerryBlenderData->field_64[i] = 0;
+ for (j = 0; j < 3; j++)
+ {
+ sBerryBlenderData->scores[i][j] = 0;
+ }
+ }
+ sBerryBlenderData->playAgainState = 0;
+ sBerryBlenderData->max_RPM = 0;
+ sBerryBlenderData->loadGfxState = 0;
+ sBerryBlenderData->mainState++;
+ break;
+ case 1:
+ if (LoadBerryBlenderGfx())
+ {
+ sBerryBlenderData->mainState++;
+ sub_8082D28();
+ }
+ break;
+ case 2:
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ sBerryBlenderData->syncArrowSprite2Ids[i] = CreateSprite(&sBlenderSyncArrow_SpriteTemplate, sBlenderSyncArrowsPos[i][0], sBlenderSyncArrowsPos[i][1], 1);
+ StartSpriteAnim(&gSprites[sBerryBlenderData->syncArrowSprite2Ids[i]], i + 8);
+ }
+ if (gReceivedRemoteLinkPlayers != 0 && gLinkVSyncDisabled)
+ {
+ sub_800E0E8();
+ sub_800DFB4(0, 0);
+ }
+ sBerryBlenderData->mainState++;
+ break;
+ case 3:
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ sBerryBlenderData->mainState++;
+ break;
+ case 4:
+ sub_807F9D0();
+ if (!gPaletteFade.active)
+ {
+ sBerryBlenderData->mainState++;
+ }
+ break;
+ case 5:
+ Blender_PrintText(&sBerryBlenderData->textState, sText_CommunicationStandby, 0);
+ sBerryBlenderData->mainState = 8;
+ sBerryBlenderData->framesToWait = 0;
+ break;
+ case 8:
+ sBerryBlenderData->mainState++;
+ sBerryBlenderData->field_114 = 0;
+ Blender_CopyBerryData(&sBerryBlenderData->blendedBerries[0], gSpecialVar_ItemId);
+ memcpy(gBlockSendBuffer, &sBerryBlenderData->blendedBerries[0], sizeof(struct BlenderBerry));
+ sub_800ADF8();
+ sBerryBlenderData->framesToWait = 0;
+ break;
+ case 9:
+ if (sub_800A520())
+ {
+ ResetBlockReceivedFlags();
+ if (GetMultiplayerId() == 0)
+ sub_800A4D8(4);
+ sBerryBlenderData->mainState++;
+ }
+ break;
+ case 10:
+ if (++sBerryBlenderData->framesToWait > 20)
+ {
+ sub_8197DF8(4, TRUE);
+ if (GetBlockReceivedStatus() == sub_800A9D8())
+ {
+ for (i = 0; i < GetLinkPlayerCount(); i++)
+ {
+ memcpy(&sBerryBlenderData->blendedBerries[i], &gBlockRecvBuffer[i][0], sizeof(struct BlenderBerry));
+ sBerryBlenderData->chosenItemId[i] = sBerryBlenderData->blendedBerries[i].itemId;
+ }
+
+ ResetBlockReceivedFlags();
+ sBerryBlenderData->mainState++;
+ }
+ }
+ break;
+ case 11:
+ sBerryBlenderData->playersNo = GetLinkPlayerCount();
+
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ if (sBerryBlenderData->field_114 == sUnknown_083399D0[sBerryBlenderData->playersNo - 2][i])
+ {
+ sub_807FD90(sBerryBlenderData->chosenItemId[sBerryBlenderData->field_114], i);
+ break;
+ }
+ }
+
+ sBerryBlenderData->framesToWait = 0;
+ sBerryBlenderData->mainState++;
+ sBerryBlenderData->field_114++;
+ break;
+ case 12:
+ if (++sBerryBlenderData->framesToWait > 60)
+ {
+ if (sBerryBlenderData->field_114 >= sBerryBlenderData->playersNo)
+ {
+ sBerryBlenderData->mainState++;
+ sBerryBlenderData->arrowPos = sUnknown_083399DC[sUnknown_083399E4[sBerryBlenderData->playersNo - 2]] - 22528;
+ }
+ else
+ {
+ sBerryBlenderData->mainState--;
+ }
+ sBerryBlenderData->framesToWait = 0;
+ }
+ break;
+ case 13:
+ if (sub_800A520())
+ {
+ sBerryBlenderData->mainState++;
+ sub_8082CB4(&sBerryBlenderData->bgAffineSrc);
+ PlaySE(SE_RU_HYUU);
+ ShowBg(2);
+ }
+ break;
+ case 14:
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON);
+ sBerryBlenderData->arrowPos += 0x200;
+ sBerryBlenderData->field_11A += 4;
+ if (sBerryBlenderData->field_11A > 0xFF)
+ {
+ SetGpuRegBits(REG_OFFSET_BG2CNT, 2);
+ sBerryBlenderData->mainState++;
+ sBerryBlenderData->field_11A = 0x100;
+ sBerryBlenderData->arrowPos = sUnknown_083399DC[sUnknown_083399E4[sBerryBlenderData->playersNo - 2]];
+ sBerryBlenderData->framesToWait = 0;
+ PlaySE(SE_TRACK_DOOR);
+ sub_808074C();
+ Blender_PrintPlayerNames();
+ }
+ sub_8082CB4(&sBerryBlenderData->bgAffineSrc);
+ break;
+ case 15:
+ if (sub_8083380())
+ {
+ sBerryBlenderData->framesToWait = 0;
+ sBerryBlenderData->mainState++;
+ }
+ sub_8082CB4(&sBerryBlenderData->bgAffineSrc);
+ break;
+ case 16:
+ CreateSprite(&sUnknown_08339C2C, 120, -16, 3);
+ sBerryBlenderData->mainState++;
+ break;
+ case 18:
+ sBerryBlenderData->mainState++;
+ break;
+ case 19:
+ sub_800ADF8();
+ sBerryBlenderData->mainState++;
+ break;
+ case 20:
+ if (sub_800A520())
+ {
+ sub_800A418();
+ sBerryBlenderData->mainState++;
+ }
+ break;
+ case 21:
+ sBerryBlenderData->field_4C = 128;
+ sBerryBlenderData->gameFrameTime = 0;
+ SetMainCallback2(sub_8081898);
+ if (GetCurrentMapMusic() != BGM_CYCLING)
+ {
+ sBerryBlenderData->field_154 = GetCurrentMapMusic();
+ }
+ PlayBGM(BGM_CYCLING);
+ break;
+ }
+
+ Blender_DummiedOutFunc(sBerryBlenderData->bg_X, sBerryBlenderData->bg_Y);
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ RunTextPrinters();
+ UpdatePaletteFade();
+}
+
+static void sub_8080588(void)
+{
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetTasks();
+
+ SetVBlankCallback(VBlankCB0_BerryBlender);
+
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(1, sBerryBlenderBgTemplates, ARRAY_COUNT(sBerryBlenderBgTemplates));
+
+ SetBgTilemapBuffer(1, sBerryBlenderData->tilemapBuffers[0]);
+ SetBgTilemapBuffer(2, sBerryBlenderData->tilemapBuffers[1]);
+
+ sub_809882C(0, 1, 0xD0);
+ copy_textbox_border_tile_patterns_to_vram(0, 0x14, 0xF0);
+ InitBerryBlenderWindows();
+
+ sBerryBlenderData->field_44 = 0;
+ sBerryBlenderData->field_4C = 0;
+ sBerryBlenderData->arrowPos = 0;
+ sBerryBlenderData->max_RPM = 0;
+ sBerryBlenderData->bg_X = 0;
+ sBerryBlenderData->bg_Y = 0;
+}
+
+static u8 sub_8080624(u16 arrowPos, u8 playerId)
+{
+ u32 var1 = (arrowPos / 0x100) + 0x18;
+ u8 arrID = sBerryBlenderData->field_96[playerId];
+ u32 var2 = sUnknown_083399E7[arrID];
+
+ if (var1 >= var2 && var1 < var2 + 0x30)
+ {
+ if (var1 >= var2 + 20 && var1 < var2 + 28)
+ return 2;
+ else
+ return 1;
+ }
+
+ return 0;
+}
+
+static void Blender_SetOpponentsBerryData(u16 playerBerryItemId, u8 playersNum, struct BlenderBerry* playerBerry)
+{
+ u16 opponentSetId = 0;
+ u16 opponentBerryId;
+ u16 var;
+ u16 i;
+
+ if (playerBerryItemId == ITEM_ENIGMA_BERRY)
+ {
+ for (i = 0; i < FLAVOR_COUNT; i++)
+ {
+ if (playerBerry->flavors[opponentSetId] > playerBerry->flavors[i])
+ opponentSetId = i;
+ }
+ opponentSetId += 5;
+ }
+ else
+ {
+ opponentSetId = playerBerryItemId - FIRST_BERRY_INDEX;
+ if (opponentSetId >= 5)
+ opponentSetId = (opponentSetId % 5) + 5;
+ }
+ for (i = 0; i < playersNum - 1; i++)
+ {
+ opponentBerryId = sOpponentBerrySets[opponentSetId][i];
+ var = playerBerryItemId - 163;
+ if (!FlagGet(0x340) && gSpecialVar_0x8004 == 1)
+ {
+ opponentSetId %= 5;
+ opponentBerryId = sSpecialOpponentBerrySets[opponentSetId];
+ if (var <= 4)
+ opponentBerryId -= 5;
+ }
+ Blender_SetBankBerryData(i + 1, opponentBerryId + FIRST_BERRY_INDEX);
+ }
+}
+
+static void sub_808074C(void)
+{
+ s32 i, j;
+
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ sBerryBlenderData->field_96[i] = 0xFF;
+ sBerryBlenderData->field_8E[i] = sUnknown_083399D0[sBerryBlenderData->playersNo - 2][i];
+ }
+ for (j = 0; j < BLENDER_MAX_PLAYERS; j++)
+ {
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ if (sBerryBlenderData->field_8E[i] == j)
+ sBerryBlenderData->field_96[j] = i;
+ }
+ }
+}
+
+static void Blender_PrintPlayerNames(void)
+{
+ s32 i, xPos;
+ u32 multiplayerId = 0;
+ u8 text[20];
+
+ if (gReceivedRemoteLinkPlayers)
+ multiplayerId = GetMultiplayerId();
+
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ if (sBerryBlenderData->field_8E[i] != 0xFF)
+ {
+ sBerryBlenderData->syncArrowSpriteIds[sBerryBlenderData->field_8E[i]] = sBerryBlenderData->syncArrowSprite2Ids[i];
+ StartSpriteAnim(&gSprites[sBerryBlenderData->syncArrowSpriteIds[sBerryBlenderData->field_8E[i]]], i);
+
+ text[0] = EOS;
+ StringCopy(text, gLinkPlayers[sBerryBlenderData->field_8E[i]].name);
+ xPos = GetStringCenterAlignXOffset(1, text, 0x38);
+
+ if (multiplayerId == sBerryBlenderData->field_8E[i])
+ Blender_AddTextPrinter(i, text, xPos, 1, 0, 2);
+ else
+ Blender_AddTextPrinter(i, text, xPos, 1, 0, 1);
+
+ PutWindowTilemap(i);
+ CopyWindowToVram(i, 3);
+ }
+ }
+}
+
+static void sub_80808D4(void)
+{
+ s32 i, j;
+
+ switch (sBerryBlenderData->mainState)
+ {
+ case 0:
+ sub_800B4C0();
+ sub_8080588();
+ Blender_SetBankBerryData(0, gSpecialVar_ItemId);
+ Blender_CopyBerryData(&sBerryBlenderData->blendedBerries[0], gSpecialVar_ItemId);
+ Blender_SetOpponentsBerryData(gSpecialVar_ItemId, sBerryBlenderData->playersNo, &sBerryBlenderData->blendedBerries[0]);
+
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ sBerryBlenderData->field_64[i] = 0;
+ for (j = 0; j < 3; j++)
+ {
+ sBerryBlenderData->scores[i][j] = 0;
+ }
+ }
+
+ sBerryBlenderData->playAgainState = 0;
+ sBerryBlenderData->loadGfxState = 0;
+ gLinkType = 0x4422;
+ sBerryBlenderData->mainState++;
+ break;
+ case 1:
+ if (LoadBerryBlenderGfx())
+ {
+ sBerryBlenderData->mainState++;
+ sub_8082D28();
+ }
+ break;
+ case 2:
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ sBerryBlenderData->syncArrowSprite2Ids[i] = CreateSprite(&sBlenderSyncArrow_SpriteTemplate, sBlenderSyncArrowsPos[i][0], sBlenderSyncArrowsPos[i][1], 1);
+ StartSpriteAnim(&gSprites[sBerryBlenderData->syncArrowSprite2Ids[i]], i + 8);
+ }
+ sBerryBlenderData->mainState++;
+ break;
+ case 3:
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ sBerryBlenderData->mainState++;
+ sBerryBlenderData->framesToWait = 0;
+ break;
+ case 4:
+ if (++sBerryBlenderData->framesToWait == 2)
+ sub_807F9D0();
+ if (!gPaletteFade.active)
+ sBerryBlenderData->mainState = 8;
+ break;
+ case 8:
+ sBerryBlenderData->mainState = 11;
+ sBerryBlenderData->field_114 = 0;
+ break;
+ case 11:
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ u32 var = sUnknown_083399D0[sBerryBlenderData->playersNo - 2][i];
+ if (sBerryBlenderData->field_114 == var)
+ {
+ sub_807FD90(sBerryBlenderData->chosenItemId[sBerryBlenderData->field_114], i);
+ break;
+ }
+ }
+ sBerryBlenderData->framesToWait = 0;
+ sBerryBlenderData->mainState++;
+ sBerryBlenderData->field_114++;
+ break;
+ case 12:
+ if (++sBerryBlenderData->framesToWait > 60)
+ {
+ if (sBerryBlenderData->field_114 >= sBerryBlenderData->playersNo)
+ {
+ sBerryBlenderData->arrowPos = sUnknown_083399DC[sUnknown_083399E4[sBerryBlenderData->playersNo - 2]] - 22528;
+ sBerryBlenderData->mainState++;
+ }
+ else
+ {
+ sBerryBlenderData->mainState--;
+ }
+ sBerryBlenderData->framesToWait = 0;
+ }
+ break;
+ case 13:
+ sBerryBlenderData->mainState++;
+ sub_808074C();
+ PlaySE(SE_RU_HYUU);
+ sub_8082CB4(&sBerryBlenderData->bgAffineSrc);
+ ShowBg(2);
+ break;
+ case 14:
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON);
+ sBerryBlenderData->arrowPos += 0x200;
+ sBerryBlenderData->field_11A += 4;
+ if (sBerryBlenderData->field_11A > 0xFF)
+ {
+ sBerryBlenderData->mainState++;
+ sBerryBlenderData->field_11A = 0x100;
+ sBerryBlenderData->arrowPos = sUnknown_083399DC[sUnknown_083399E4[sBerryBlenderData->playersNo - 2]];
+ SetGpuRegBits(REG_OFFSET_BG2CNT, 2);
+ sBerryBlenderData->framesToWait = 0;
+ PlaySE(SE_TRACK_DOOR);
+ Blender_PrintPlayerNames();
+ }
+ sub_8082CB4(&sBerryBlenderData->bgAffineSrc);
+ break;
+ case 15:
+ if (sub_8083380())
+ {
+ sBerryBlenderData->mainState++;
+ }
+ sub_8082CB4(&sBerryBlenderData->bgAffineSrc);
+ break;
+ case 16:
+ CreateSprite(&sUnknown_08339C2C, 120, -16, 3);
+ sBerryBlenderData->mainState++;
+ break;
+ case 18:
+ sBerryBlenderData->mainState++;
+ break;
+ case 19:
+ sBerryBlenderData->mainState++;
+ break;
+ case 20:
+ sBerryBlenderData->mainState++;
+ break;
+ case 21:
+ sub_8080DF8();
+ sBerryBlenderData->field_4C = 0x80;
+ sBerryBlenderData->gameFrameTime = 0;
+ sBerryBlenderData->field_123 = 0;
+ sBerryBlenderData->field_72 = 0;
+ SetMainCallback2(sub_8081898);
+
+ if (gSpecialVar_0x8004 == 1)
+ {
+ if (!FlagGet(FLAG_0x340))
+ sBerryBlenderData->field_120[0] = CreateTask(sub_8081224, 10);
+ else
+ sBerryBlenderData->field_120[0] = CreateTask(sUnknown_083399EC[0], 10);
+ }
+
+ if (gSpecialVar_0x8004 > 1)
+ {
+ for (i = 0; i < gSpecialVar_0x8004; i++)
+ sBerryBlenderData->field_120[i] = CreateTask(sUnknown_083399EC[i], 10 + i);
+ }
+
+ if (GetCurrentMapMusic() != BGM_CYCLING)
+ sBerryBlenderData->field_154 = GetCurrentMapMusic();
+
+ PlayBGM(BGM_CYCLING);
+ PlaySE(SE_MOTER);
+ Blender_ControlHitPitch();
+ break;
+ }
+
+ Blender_DummiedOutFunc(sBerryBlenderData->bg_X, sBerryBlenderData->bg_Y);
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ RunTextPrinters();
+ UpdatePaletteFade();
+}
+
+static void sub_8080DF8(void)
+{
+ s32 i;
+ for (i = 0; i < 4; i++)
+ {
+ gSendCmd[0] = 0;
+ gSendCmd[2] = 0;
+ gRecvCmds[i][0] = 0;
+ gRecvCmds[i][2] = 0;
+ }
+}
+
+static void sub_8080E20(u8 taskId)
+{
+ if(++gTasks[taskId].data[0] > gTasks[taskId].data[1])
+ {
+ gRecvCmds[gTasks[taskId].data[2]][2] = 0x2345;
+ DestroyTask(taskId);
+ }
+}
+
+static void sub_8080E6C(u8 a0, u8 a1)
+{
+ u8 taskId = CreateTask(sub_8080E20, 80);
+ gTasks[taskId].data[1] = a1;
+ gTasks[taskId].data[2] = a0;
+}
+
+static void sub_8080EA4(u8 taskId)
+{
+ if (sub_8080624(sBerryBlenderData->arrowPos, 1) == 2)
+ {
+ if (gTasks[taskId].data[0] == 0)
+ {
+ if (sBerryBlenderData->field_123 == 0)
+ {
+ u8 rand = Random() / 655;
+ if (sBerryBlenderData->field_4C < 500)
+ {
+ if (rand > 75)
+ gRecvCmds[1][2] = 0x4523;
+ else
+ gRecvCmds[1][2] = 0x5432;
+
+ gRecvCmds[1][2] = 0x5432;
+ }
+ else if (sBerryBlenderData->field_4C < 1500)
+ {
+ if (rand > 80)
+ {
+ gRecvCmds[1][2] = 0x4523;
+ }
+ else
+ {
+ u8 value = rand - 21;
+ if (value < 60)
+ gRecvCmds[1][2] = 0x5432;
+ else if (rand < 10)
+ sub_8080E6C(1, 5);
+ }
+ }
+ else if (rand <= 90)
+ {
+ u8 value = rand - 71;
+ if (value < 20)
+ gRecvCmds[1][2] = 0x5432;
+ else if (rand < 30)
+ sub_8080E6C(1, 5);
+ }
+ else
+ {
+ gRecvCmds[1][2] = 0x4523;
+ }
+ }
+ else
+ {
+ gRecvCmds[1][2] = 0x4523;
+ }
+
+ gTasks[taskId].data[0] = 1;
+ }
+ }
+ else
+ {
+ gTasks[taskId].data[0] = 0;
+ }
+}
+
+static void sub_8080FD0(u8 taskId)
+{
+ u32 var1 = (sBerryBlenderData->arrowPos + 0x1800) & 0xFFFF;
+ u32 var2 = sBerryBlenderData->field_96[2] & 0xFF;
+ if ((var1 >> 8) > sUnknown_083399E7[var2] + 20 && (var1 >> 8) < sUnknown_083399E7[var2] + 40)
+ {
+ if (gTasks[taskId].data[0] == 0)
+ {
+ if (sBerryBlenderData->field_123 == 0)
+ {
+ u8 rand = Random() / 655;
+ if (sBerryBlenderData->field_4C < 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_8080E6C(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_80810F8(u8 taskId)
+{
+ u32 var1, var2;
+
+ var1 = (sBerryBlenderData->arrowPos + 0x1800) & 0xFFFF;
+ var2 = sBerryBlenderData->field_96[3] & 0xFF;
+ if ((var1 >> 8) > sUnknown_083399E7[var2] + 20 && (var1 >> 8) < sUnknown_083399E7[var2] + 40)
+ {
+ if (gTasks[taskId].data[0] == 0)
+ {
+ if (sBerryBlenderData->field_123 == 0)
+ {
+ u8 rand = (Random() / 655);
+ if (sBerryBlenderData->field_4C < 500)
+ {
+ if (rand > 88)
+ gRecvCmds[3][2] = 0x4523;
+ else
+ gRecvCmds[3][2] = 0x5432;
+ }
+ else
+ {
+ if (rand > 60)
+ {
+ gRecvCmds[3][2] = 0x4523;
+ }
+ else
+ {
+ s8 value = rand - 56; // makes me wonder what the original code was
+ u8 value2 = value;
+ if (value2 < 5)
+ gRecvCmds[3][2] = 0x5432;
+ }
+ if (rand < 5)
+ sub_8080E6C(3, 5);
+ }
+ gTasks[taskId].data[0] = 1;
+ }
+ else
+ {
+ gRecvCmds[3][2] = 0x4523;
+ gTasks[taskId].data[0] = 1;
+ }
+ }
+ }
+ else
+ {
+ gTasks[taskId].data[0] = 0;
+ }
+}
+
+static void sub_8081224(u8 taskId)
+{
+ if (sub_8080624(sBerryBlenderData->arrowPos, 1) == 2)
+ {
+ if (gTasks[taskId].data[0] == 0)
+ {
+ gRecvCmds[1][2] = 0x4523;
+ gTasks[taskId].data[0] = 1;
+ }
+ }
+ else
+ {
+ gTasks[taskId].data[0] = 0;
+ }
+}
+
+static void sub_8081288(u16 a0, u8 a1)
+{
+ u8 spriteId;
+
+ spriteId = CreateSprite(&sUnknown_08339B40,
+ sBlenderSyncArrowsPos[a1][0] - (10 * sUnknown_083399C0[a1][0]),
+ sBlenderSyncArrowsPos[a1][1] - (10 * sUnknown_083399C0[a1][1]),
+ 1);
+ if (a0 == 0x4523)
+ {
+ StartSpriteAnim(&gSprites[spriteId], 2);
+ gSprites[spriteId].callback = sub_8082F9C;
+ 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_8082E84();
+}
+
+static void sub_8081370(u16 a0)
+{
+ Blender_ControlHitPitch();
+ switch (a0)
+ {
+ case 0x4523:
+ if (sBerryBlenderData->field_4C < 1500)
+ sBerryBlenderData->field_4C += (0x180 / sUnknown_08339CC3[sBerryBlenderData->playersNo]);
+ else
+ {
+ sBerryBlenderData->field_4C += (128 / sUnknown_08339CC3[sBerryBlenderData->playersNo]);
+ sub_80832BC(&sBerryBlenderData->bg_X, (sBerryBlenderData->field_4C / 100) - 10);
+ sub_80832BC(&sBerryBlenderData->bg_Y, (sBerryBlenderData->field_4C / 100) - 10);
+ }
+ break;
+ case 0x5432:
+ if (sBerryBlenderData->field_4C < 1500)
+ sBerryBlenderData->field_4C += (0x100 / sUnknown_08339CC3[sBerryBlenderData->playersNo]);
+ break;
+ case 0x2345:
+ sBerryBlenderData->field_4C -= (0x100 / sUnknown_08339CC3[sBerryBlenderData->playersNo]);
+ if (sBerryBlenderData->field_4C < 0x80)
+ sBerryBlenderData->field_4C = 0x80;
+ break;
+ }
+}
+
+static bool32 sub_80814B0(u16 arg0, u16 arg1, u16 arg2)
+{
+ if (gReceivedRemoteLinkPlayers != 0 && gLinkVSyncDisabled)
+ {
+ if ((arg0 & 0xFF00) == arg2)
+ return TRUE;
+ }
+ else
+ {
+ if (arg0 == arg1)
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static void sub_80814F4(void)
+{
+ s32 i;
+
+ if (gSpecialVar_0x8004 != 0)
+ {
+ if (gSendCmd[2] != 0)
+ {
+ gRecvCmds[0][2] = gSendCmd[2];
+ gRecvCmds[0][0] = 0x4444;
+ gSendCmd[2] = 0;
+ }
+ for (i = 1; i < 4; i++)
+ {
+ if (gRecvCmds[i][2] != 0)
+ gRecvCmds[i][0] = 0x4444;
+ }
+ }
+ for (i = 0; i < sBerryBlenderData->playersNo; i++)
+ {
+ if (sub_80814B0(gRecvCmds[i][0], 0x4444, 0x4400))
+ {
+ u32 var = sBerryBlenderData->field_96[i];
+ if (gRecvCmds[i][2] == 0x4523)
+ {
+ sub_8081370(0x4523);
+ sBerryBlenderData->field_116 += (sBerryBlenderData->field_4C / 55);
+ if (sBerryBlenderData->field_116 >= 1000)
+ sBerryBlenderData->field_116 = 1000;
+ sub_8081288(0x4523, var);
+ sBerryBlenderData->scores[i][BLENDER_SCORE_BEST]++;
+ }
+ else if (gRecvCmds[i][2] == 0x5432)
+ {
+ sub_8081370(0x5432);
+ sBerryBlenderData->field_116 += (sBerryBlenderData->field_4C / 70);
+ sub_8081288(0x5432, var);
+ sBerryBlenderData->scores[i][BLENDER_SCORE_GOOD]++;
+ }
+ else if (gRecvCmds[i][2] == 0x2345)
+ {
+ sub_8081288(0x2345, var);
+ sub_8081370(0x2345);
+ if (sBerryBlenderData->scores[i][BLENDER_SCORE_MISS] < 999)
+ sBerryBlenderData->scores[i][BLENDER_SCORE_MISS]++;
+ }
+ if (gRecvCmds[i][2] == 0x2345 || gRecvCmds[2][i] == 0x4523 || gRecvCmds[2][i] == 0x5432) // could be a bug, 2 and i are reversed
+ {
+ if (sBerryBlenderData->field_4C > 1500)
+ m4aMPlayTempoControl(&gMPlay_BGM, ((sBerryBlenderData->field_4C - 750) / 20) + 256);
+ else
+ m4aMPlayTempoControl(&gMPlay_BGM, 0x100);
+ }
+ }
+ }
+ if (gSpecialVar_0x8004 != 0)
+ {
+ for (i = 0; i < sBerryBlenderData->playersNo; i++)
+ {
+ gRecvCmds[i][0] = 0;
+ gRecvCmds[i][2] = 0;
+ }
+ }
+}
+
+static void sub_8081744(void)
+{
+ u8 var2;
+ bool8 A_pressed = FALSE;
+ u8 playerId = 0;
+
+ if (gReceivedRemoteLinkPlayers != 0)
+ playerId = GetMultiplayerId();
+
+ var2 = sBerryBlenderData->field_96[playerId];
+
+ if (sBerryBlenderData->gameEndState == 0)
+ {
+ if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_L_EQUALS_A && gMain.newKeys & A_BUTTON)
+ {
+ if ((gMain.heldKeysRaw & (A_BUTTON | L_BUTTON)) != (A_BUTTON | L_BUTTON))
+ A_pressed = TRUE;
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ A_pressed = TRUE;
+ }
+
+ if (A_pressed)
+ {
+ u8 var3;
+ StartSpriteAnim(&gSprites[sBerryBlenderData->syncArrowSpriteIds[sBerryBlenderData->field_8E[var2]]], var2 + 4);
+ var3 = sub_8080624(sBerryBlenderData->arrowPos, playerId);
+
+ if (var3 == 2)
+ gSendCmd[2] = 0x4523;
+ else if (var3 == 1)
+ gSendCmd[2] = 0x5432;
+ else
+ gSendCmd[2] = 0x2345;
+ }
+ }
+ if (++sBerryBlenderData->field_72 > 5)
+ {
+ if (sBerryBlenderData->field_4C > 128)
+ sBerryBlenderData->field_4C--;
+ sBerryBlenderData->field_72 = 0;
+ }
+ if (gUnknown_020322D5 && gMain.newKeys & L_BUTTON)
+ sBerryBlenderData->field_123 ^= 1;
+}
+
+static void sub_8081898(void)
+{
+ sub_8082D28();
+
+ if (sBerryBlenderData->gameFrameTime < (99 * 60 * 60) + (59 * 60)) // game time can't be longer than 99 minutes and 59 seconds, can't print 3 digits
+ sBerryBlenderData->gameFrameTime++;
+
+ sub_8081744();
+ SetLinkDebugValues((u16)(sBerryBlenderData->field_4C), sBerryBlenderData->field_116);
+ sub_80814F4();
+ sub_8083140(sBerryBlenderData->field_116, 1000);
+ sub_8083230(sBerryBlenderData->field_4C);
+ sub_808330C();
+ sub_8082AD4();
+ if (sBerryBlenderData->gameEndState == 0 && sBerryBlenderData->field_118 >= 1000)
+ {
+ sBerryBlenderData->field_116 = 1000;
+ sBerryBlenderData->gameEndState = 1;
+ SetMainCallback2(CB2_HandleBlenderEndGame);
+ }
+
+ Blender_DummiedOutFunc(sBerryBlenderData->bg_X, sBerryBlenderData->bg_Y);
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ RunTextPrinters();
+ UpdatePaletteFade();
+}
+
+static void Blender_DummiedOutFunc(s16 a0, s16 a1)
+{
+
+}
+
+static bool8 sub_8081964(struct BlenderBerry* berries, u8 index1, u8 index2)
+{
+ if (berries[index1].itemId != berries[index2].itemId
+ || (StringCompare(berries[index1].name, berries[index2].name) == 0
+ && (berries[index1].flavors[FLAVOR_SPICY] == berries[index2].flavors[FLAVOR_SPICY]
+ && berries[index1].flavors[FLAVOR_DRY] == berries[index2].flavors[FLAVOR_DRY]
+ && berries[index1].flavors[FLAVOR_SWEET] == berries[index2].flavors[FLAVOR_SWEET]
+ && berries[index1].flavors[FLAVOR_BITTER] == berries[index2].flavors[FLAVOR_BITTER]
+ && berries[index1].flavors[FLAVOR_SOUR] == berries[index2].flavors[FLAVOR_SOUR]
+ && berries[index1].smoothness == berries[index2].smoothness)))
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static u32 Blender_GetPokeblockColor(struct BlenderBerry* berries, s16* a1, u8 playersNo, u8 a3)
+{
+ s16 vars[6];
+ s32 i;
+ s32 r6;
+ u8 r2;
+
+ for (i = 0; i < 6; i++)
+ 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_8081964(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)
+ sUnknown_03000DF8[var++] = i;
+ }
+ if (vars[sUnknown_03000DF8[0]] >= vars[sUnknown_03000DF8[1]])
+ {
+ if (sUnknown_03000DF8[0] == 0)
+ return (sUnknown_03000DF8[1] << 16) | 6;
+ if (sUnknown_03000DF8[0] == 1)
+ return (sUnknown_03000DF8[1] << 16) | 7;
+ if (sUnknown_03000DF8[0] == 2)
+ return (sUnknown_03000DF8[1] << 16) | 8;
+ if (sUnknown_03000DF8[0] == 3)
+ return (sUnknown_03000DF8[1] << 16) | 9;
+ if (sUnknown_03000DF8[0] == 4)
+ return (sUnknown_03000DF8[1] << 16) | 10;
+ }
+ else
+ {
+ if (sUnknown_03000DF8[1] == 0)
+ return (sUnknown_03000DF8[0] << 16) | 6;
+ if (sUnknown_03000DF8[1] == 1)
+ return (sUnknown_03000DF8[0] << 16) | 7;
+ if (sUnknown_03000DF8[1] == 2)
+ return (sUnknown_03000DF8[0] << 16) | 8;
+ if (sUnknown_03000DF8[1] == 3)
+ return (sUnknown_03000DF8[0] << 16) | 9;
+ if (sUnknown_03000DF8[1] == 4)
+ return (sUnknown_03000DF8[0] << 16) | 10;
+ }
+ }
+ return 0;
+}
+
+static void sub_8081BB0(s16 value)
+{
+ sUnknown_03000E04 = value;
+}
+
+static s16 sub_8081BBC(void)
+{
+ return sUnknown_03000E04;
+}
+
+static void sub_8081BC8(s16 value)
+{
+ sUnknown_03000E06 = value;
+}
+
+static s16 sub_8081BD4(void)
+{
+ return sUnknown_03000E06;
+}
+
+static void Blender_CalculatePokeblock(struct BlenderBerry *berries, struct Pokeblock *pokeblock, u8 playersNo, u8 *flavors, u16 maxRPM)
+{
+ s32 i, j;
+ s32 multiuseVar, var2;
+ u8 var3;
+
+ for (i = 0; i < 6; i++)
+ sUnknown_03000DE8[i] = 0;
+
+ for (i = 0; i < playersNo; i++)
+ {
+ for (j = 0; j < 6; j++)
+ sUnknown_03000DE8[j] += berries[i].flavors[j];
+ }
+
+ multiuseVar = sUnknown_03000DE8[0];
+ sUnknown_03000DE8[0] -= sUnknown_03000DE8[1];
+ sUnknown_03000DE8[1] -= sUnknown_03000DE8[2];
+ sUnknown_03000DE8[2] -= sUnknown_03000DE8[3];
+ sUnknown_03000DE8[3] -= sUnknown_03000DE8[4];
+ sUnknown_03000DE8[4] -= multiuseVar;
+
+ multiuseVar = 0;
+ for (i = 0; i < 5; i++)
+ {
+ if (sUnknown_03000DE8[i] < 0)
+ {
+ sUnknown_03000DE8[i] = 0;
+ multiuseVar++;
+ }
+ }
+ var3 = multiuseVar;
+ for (i = 0; i < 5; i++)
+ {
+ if (sUnknown_03000DE8[i] > 0)
+ {
+ if (sUnknown_03000DE8[i] < multiuseVar)
+ sUnknown_03000DE8[i] = 0;
+ else
+ sUnknown_03000DE8[i] -= multiuseVar;
+ }
+ }
+ for (i = 0; i < 5; i++)
+ {
+ sUnknown_020322A8[i] = sUnknown_03000DE8[i];
+ }
+
+ multiuseVar = maxRPM / 333 + 100;
+ sUnknown_020322D0 = multiuseVar;
+
+ for (i = 0; i < 5; i++)
+ {
+ s32 r4;
+ s32 r5 = sUnknown_03000DE8[i];
+ r5 = (r5 * multiuseVar) / 10;
+ r4 = r5 % 10;
+ r5 /= 10;
+ if (r4 > 4)
+ r5++;
+ sUnknown_03000DE8[i] = r5;
+ }
+ for (i = 0; i < 5; i++)
+ {
+ sUnknown_020322BC[i] = sUnknown_03000DE8[i];
+ }
+
+ pokeblock->color = Blender_GetPokeblockColor(berries, &sUnknown_03000DE8[0], playersNo, var3);
+ sUnknown_03000DE8[5] = (sUnknown_03000DE8[5] / playersNo) - playersNo;
+
+ if (sUnknown_03000DE8[5] < 0)
+ sUnknown_03000DE8[5] = 0;
+
+ if (pokeblock->color == 12)
+ {
+ multiuseVar = Random() % 10;
+ for (i = 0; i < 5; i++)
+ {
+ if ((sUnknown_08339CC8[multiuseVar] >> i) & 1)
+ sUnknown_03000DE8[i] = 2;
+ else
+ sUnknown_03000DE8[i] = 0;
+ }
+ }
+
+ for (i = 0; i < 6; i++)
+ {
+ if (sUnknown_03000DE8[i] > 255)
+ sUnknown_03000DE8[i] = 255;
+ }
+
+ pokeblock->spicy = sUnknown_03000DE8[0];
+ pokeblock->dry = sUnknown_03000DE8[1];
+ pokeblock->sweet = sUnknown_03000DE8[2];
+ pokeblock->bitter = sUnknown_03000DE8[3];
+ pokeblock->sour = sUnknown_03000DE8[4];
+ pokeblock->feel = sUnknown_03000DE8[5];
+
+ for (i = 0; i < 6; i++)
+ {
+ flavors[i] = sUnknown_03000DE8[i];
+ }
+}
+
+static void BlenderDebug_CalculatePokeblock(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 playersNo, u8* flavors, u16 a4)
+{
+ Blender_CalculatePokeblock(berries, pokeblock, playersNo, flavors, a4);
+}
+
+static void sub_8081E20(void)
+{
+ u32 frames = (u16)(sBerryBlenderData->gameFrameTime);
+ u16 max_RPM = sBerryBlenderData->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_8081BC8(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_8081BB0(var);
+}
+
+static void sub_8081F94(u16 *a0)
+{
+ if (gReceivedRemoteLinkPlayers != 0 && gLinkVSyncDisabled)
+ *a0 = 0x2F00;
+ else
+ *a0 = 0x2FFF;
+}
+
+static void CB2_HandleBlenderEndGame(void)
+{
+ u8 i, j;
+
+ if (sBerryBlenderData->gameEndState < 3)
+ sub_8082D28();
+
+ GetMultiplayerId(); // unused return value
+
+ switch (sBerryBlenderData->gameEndState)
+ {
+ case 1:
+ m4aMPlayTempoControl(&gMPlay_BGM, 256);
+ for (i = 0; i < gSpecialVar_0x8004; i++)
+ {
+ DestroyTask(sBerryBlenderData->field_120[i]);
+ }
+ sBerryBlenderData->gameEndState++;
+ break;
+ case 2:
+ sBerryBlenderData->field_4C -= 32;
+ if (sBerryBlenderData->field_4C <= 0)
+ {
+ sub_8009F8C();
+ sBerryBlenderData->field_4C = 0;
+
+ if (gReceivedRemoteLinkPlayers != 0)
+ sBerryBlenderData->gameEndState++;
+ else
+ sBerryBlenderData->gameEndState = 5;
+
+ sBerryBlenderData->mainState = 0;
+ m4aMPlayStop(&gMPlay_SE2);
+ }
+ Blender_ControlHitPitch();
+ break;
+ case 3:
+ if (GetMultiplayerId() != 0)
+ {
+ sBerryBlenderData->gameEndState++;
+ }
+ else if (sub_800A520())
+ {
+ if (gReceivedRemoteLinkPlayers != 0 && gLinkVSyncDisabled)
+ {
+ sBerryBlenderData->gameBlock.timeRPM.time = sBerryBlenderData->gameFrameTime;
+ sBerryBlenderData->gameBlock.timeRPM.max_RPM = sBerryBlenderData->max_RPM;
+
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ for (j = 0; j < BLENDER_SCORES_NO; j++)
+ sBerryBlenderData->gameBlock.scores[i][j] = sBerryBlenderData->scores[i][j];
+ }
+
+ if (SendBlock(0, &sBerryBlenderData->gameBlock, sizeof(sBerryBlenderData->gameBlock)))
+ sBerryBlenderData->gameEndState++;
+ }
+ else
+ {
+ sBerryBlenderData->smallBlock.time = sBerryBlenderData->gameFrameTime;
+ sBerryBlenderData->smallBlock.max_RPM = sBerryBlenderData->max_RPM;
+ if (SendBlock(0, &sBerryBlenderData->smallBlock, sizeof(sBerryBlenderData->smallBlock) + 32))
+ sBerryBlenderData->gameEndState++;
+ }
+ }
+ break;
+ case 4:
+ if (GetBlockReceivedStatus())
+ {
+ ResetBlockReceivedFlags();
+ sBerryBlenderData->gameEndState++;
+
+ if (gReceivedRemoteLinkPlayers != 0 && gLinkVSyncDisabled)
+ {
+ struct BlenderGameBlock *receivedBlock = (struct BlenderGameBlock*)(&gBlockRecvBuffer);
+
+ sBerryBlenderData->max_RPM = receivedBlock->timeRPM.max_RPM;
+ sBerryBlenderData->gameFrameTime = receivedBlock->timeRPM.time;
+
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ for (j = 0; j < BLENDER_SCORES_NO; j++)
+ sBerryBlenderData->scores[i][j] = receivedBlock->scores[i][j];
+ }
+ }
+ else
+ {
+ struct TimeAndRPM *receivedBlock = (struct TimeAndRPM*)(&gBlockRecvBuffer);
+
+ sBerryBlenderData->max_RPM = receivedBlock->max_RPM;
+ sBerryBlenderData->gameFrameTime = receivedBlock->time;
+ }
+ }
+ break;
+ case 5:
+ if (Blender_PrintBlendingRanking())
+ sBerryBlenderData->gameEndState++;
+ break;
+ case 6:
+ if (Blender_PrintBlendingResults())
+ {
+ if (gInGameOpponentsNo == 0)
+ IncrementGameStat(GAME_STAT_POKEBLOCKS_WITH_FRIENDS);
+ else
+ IncrementGameStat(GAME_STAT_POKEBLOCKS);
+
+ sBerryBlenderData->gameEndState++;
+ }
+ break;
+ case 7:
+ if (Blender_PrintText(&sBerryBlenderData->textState, sText_WouldLikeToBlendAnotherBerry, GetPlayerTextSpeed()))
+ sBerryBlenderData->gameEndState++;
+ break;
+ case 9:
+ sBerryBlenderData->yesNoAnswer = 0;
+ CreateYesNoMenu(&sBlender_YesNoWindowTemplate, 1, 0xD, 0);
+ sBerryBlenderData->gameEndState++;
+ break;
+ case 10:
+ switch (ProcessMenuInputNoWrap_())
+ {
+ case 1:
+ case -1:
+ sBerryBlenderData->yesNoAnswer = 1;
+ sBerryBlenderData->gameEndState++;
+ for (i = 0; i <BLENDER_MAX_PLAYERS; i++)
+ {
+ if (sBerryBlenderData->field_8E[i] != 0xFF)
+ {
+ PutWindowTilemap(i);
+ CopyWindowToVram(i, 3);
+ }
+ }
+ break;
+ case 0:
+ sBerryBlenderData->yesNoAnswer = 0;
+ sBerryBlenderData->gameEndState++;
+ for (i = 0; i <BLENDER_MAX_PLAYERS; i++)
+ {
+ if (sBerryBlenderData->field_8E[i] != 0xFF)
+ {
+ PutWindowTilemap(i);
+ CopyWindowToVram(i, 3);
+ }
+ }
+ break;
+ }
+ break;
+ case 11:
+ sub_8081F94(&gSendCmd[0]);
+ if (sBerryBlenderData->yesNoAnswer == 0)
+ {
+ if (IsBagPocketNonEmpty(BAG_BERRIES) == FALSE) // no berries
+ {
+ sBerryBlenderData->playAgainState = CANT_PLAY_NO_BERRIES;
+ gSendCmd[1] = 0x9999;
+ }
+ else if (GetFirstFreePokeblockSlot() == -1) // no space for pokeblocks
+ {
+ sBerryBlenderData->playAgainState = CANT_PLAY_NO_PKBLCK_SPACE;
+ gSendCmd[1] = 0xAAAA;
+ }
+ else
+ {
+ sBerryBlenderData->playAgainState = PLAY_AGAIN_OK;
+ gSendCmd[1] = 0x7779;
+ }
+ sBerryBlenderData->gameEndState++;
+ }
+ else
+ {
+ sBerryBlenderData->playAgainState = DONT_PLAY_AGAIN;
+ gSendCmd[1] = 0x8888;
+ sBerryBlenderData->gameEndState++;
+ }
+ break;
+ case 12:
+ if (gInGameOpponentsNo)
+ {
+ SetMainCallback2(CB2_HandlePlayerPlayAgainChoice);
+ sBerryBlenderData->gameEndState = 0;
+ sBerryBlenderData->mainState = 0;
+ }
+ else
+ {
+ sBerryBlenderData->gameEndState++;
+ }
+ break;
+ case 8:
+ sBerryBlenderData->gameEndState++;
+ break;
+ case 13:
+ if (Blender_PrintText(&sBerryBlenderData->textState, sText_CommunicationStandby, GetPlayerTextSpeed()))
+ {
+ SetMainCallback2(CB2_HandlePlayerLinkPlayAgainChoice);
+ sBerryBlenderData->gameEndState = 0;
+ sBerryBlenderData->mainState = 0;
+ }
+ break;
+ }
+
+ sub_808330C();
+ sub_8083230(sBerryBlenderData->field_4C);
+ sub_8082AD4();
+ Blender_DummiedOutFunc(sBerryBlenderData->bg_X, sBerryBlenderData->bg_Y);
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ RunTextPrinters();
+ UpdatePaletteFade();
+}
+
+static bool8 LinkPlayAgainHandleSaving(void)
+{
+ switch (sBerryBlenderData->field_1A0)
+ {
+ case 0:
+ sub_800ADF8();
+ sBerryBlenderData->field_1A0 = 1;
+ sBerryBlenderData->framesToWait = 0;
+ break;
+ case 1:
+ if (sub_800A520())
+ {
+ sBerryBlenderData->field_1A0++;
+ gSoftResetDisabled = TRUE;
+ }
+ break;
+ case 2:
+ sub_8153430();
+ sBerryBlenderData->field_1A0++;
+ sBerryBlenderData->framesToWait = 0;
+ break;
+ case 3:
+ if (++sBerryBlenderData->framesToWait == 10)
+ {
+ sub_800ADF8();
+ sBerryBlenderData->field_1A0++;
+ }
+ break;
+ case 4:
+ if (sub_800A520())
+ {
+ if (sub_8153474())
+ {
+ sBerryBlenderData->field_1A0 = 5;
+ }
+ else
+ {
+ sBerryBlenderData->framesToWait = 0;
+ sBerryBlenderData->field_1A0 = 3;
+ }
+ }
+ break;
+ case 5:
+ sBerryBlenderData->field_1A0++;
+ sBerryBlenderData->framesToWait = 0;
+ break;
+ case 6:
+ if (++sBerryBlenderData->framesToWait > 5)
+ {
+ gSoftResetDisabled = FALSE;
+ return TRUE;
+ }
+ break;
+ }
+
+ return FALSE;
+}
+
+static void CB2_HandlePlayerLinkPlayAgainChoice(void)
+{
+ switch (sBerryBlenderData->gameEndState)
+ {
+ case 0:
+ if (sBerryBlenderData->field_64[0] == 0x2222)
+ {
+ sBerryBlenderData->gameEndState = 5;
+ }
+ else if (sBerryBlenderData->field_64[0] == 0x1111)
+ {
+ if (sBerryBlenderData->field_6C == 0x9999)
+ sBerryBlenderData->gameEndState = 2;
+ else if (sBerryBlenderData->field_6C == 0xAAAA)
+ sBerryBlenderData->gameEndState = 1;
+ else
+ sBerryBlenderData->gameEndState = 5;
+ }
+ break;
+ case 1:
+ sBerryBlenderData->gameEndState = 3;
+ StringCopy(gStringVar4, gLinkPlayers[sBerryBlenderData->field_6E].name);
+ StringAppend(gStringVar4, sText_ApostropheSPokeblockCaseIsFull);
+ break;
+ case 2:
+ sBerryBlenderData->gameEndState++;
+ StringCopy(gStringVar4, gLinkPlayers[sBerryBlenderData->field_6E].name);
+ StringAppend(gStringVar4, sText_HasNoBerriesToPut);
+ break;
+ case 3:
+ if (Blender_PrintText(&sBerryBlenderData->textState, gStringVar4, GetPlayerTextSpeed()))
+ {
+ sBerryBlenderData->framesToWait = 0;
+ sBerryBlenderData->gameEndState++;
+ }
+ break;
+ case 4:
+ if (++sBerryBlenderData->framesToWait > 60)
+ sBerryBlenderData->gameEndState = 5;
+ break;
+ case 5:
+ Blender_PrintText(&sBerryBlenderData->textState, gText_SavingDontTurnOff2, 0);
+ sub_800ADF8();
+ sBerryBlenderData->gameEndState++;
+ break;
+ case 6:
+ if (sub_800A520())
+ {
+ sBerryBlenderData->framesToWait = 0;
+ sBerryBlenderData->gameEndState++;
+ sBerryBlenderData->field_1A0 = 0;
+ }
+ break;
+ case 7:
+ if (LinkPlayAgainHandleSaving())
+ {
+ PlaySE(SE_SAVE);
+ sBerryBlenderData->gameEndState++;
+ }
+ break;
+ case 8:
+ sBerryBlenderData->gameEndState++;
+ sub_800ADF8();
+ break;
+ case 9:
+ if (sub_800A520())
+ {
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ sBerryBlenderData->gameEndState++;
+ }
+ break;
+ case 10:
+ if (!gPaletteFade.active)
+ {
+ if (sBerryBlenderData->field_64[0] == 0x2222)
+ {
+ FreeAllWindowBuffers();
+ UnsetBgTilemapBuffer(2);
+ UnsetBgTilemapBuffer(1);
+ FREE_AND_SET_NULL(sBerryBlenderData);
+ SetMainCallback2(DoBerryBlending);
+ }
+ else
+ {
+ sBerryBlenderData->framesToWait = 0;
+ sBerryBlenderData->gameEndState++;
+ }
+ }
+ break;
+ case 11:
+ if (++sBerryBlenderData->framesToWait > 30)
+ {
+ sub_800AC34();
+ sBerryBlenderData->gameEndState++;
+ }
+ break;
+ case 12:
+ if (gReceivedRemoteLinkPlayers == 0)
+ {
+ FREE_AND_SET_NULL(sBerryBlenderData);
+ SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ }
+ break;
+ }
+
+ sub_8082AD4();
+ Blender_DummiedOutFunc(sBerryBlenderData->bg_X, sBerryBlenderData->bg_Y);
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ RunTextPrinters();
+ UpdatePaletteFade();
+}
+
+static void CB2_HandlePlayerPlayAgainChoice(void)
+{
+ switch (sBerryBlenderData->gameEndState)
+ {
+ case 0:
+ if (sBerryBlenderData->playAgainState == PLAY_AGAIN_OK || sBerryBlenderData->playAgainState == DONT_PLAY_AGAIN)
+ sBerryBlenderData->gameEndState = 9;
+ if (sBerryBlenderData->playAgainState == CANT_PLAY_NO_BERRIES)
+ sBerryBlenderData->gameEndState = 2;
+ if (sBerryBlenderData->playAgainState == CANT_PLAY_NO_PKBLCK_SPACE)
+ sBerryBlenderData->gameEndState = 1;
+ break;
+ case 1:
+ sBerryBlenderData->gameEndState = 3;
+ sBerryBlenderData->textState = 0;
+ StringCopy(gStringVar4, sText_YourPokeblockCaseIsFull);
+ break;
+ case 2:
+ sBerryBlenderData->gameEndState++;
+ sBerryBlenderData->textState = 0;
+ StringCopy(gStringVar4, sText_RunOutOfBerriesForBlending);
+ break;
+ case 3:
+ if (Blender_PrintText(&sBerryBlenderData->textState, gStringVar4, GetPlayerTextSpeed()))
+ sBerryBlenderData->gameEndState = 9;
+ break;
+ case 9:
+ BeginFastPaletteFade(3);
+ sBerryBlenderData->gameEndState++;
+ break;
+ case 10:
+ if (!gPaletteFade.active)
+ {
+ if (sBerryBlenderData->playAgainState == PLAY_AGAIN_OK)
+ SetMainCallback2(DoBerryBlending);
+ else
+ SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+
+ FreeAllWindowBuffers();
+ UnsetBgTilemapBuffer(2);
+ UnsetBgTilemapBuffer(1);
+ FREE_AND_SET_NULL(sBerryBlenderData);
+ }
+ break;
+ }
+
+ sub_8082AD4();
+ Blender_DummiedOutFunc(sBerryBlenderData->bg_X, sBerryBlenderData->bg_Y);
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ RunTextPrinters();
+ UpdatePaletteFade();
+}
+
+static void sub_8082AD4(void)
+{
+ if (gReceivedRemoteLinkPlayers)
+ {
+ if (sub_80814B0(gRecvCmds[0][0], 0x2FFF, 0x2F00))
+ {
+ if (gRecvCmds[0][1] == 0x1111)
+ {
+ switch (gRecvCmds[0][2])
+ {
+ case 0x8888:
+ sBerryBlenderData->field_6C = 0x8888;
+ sBerryBlenderData->field_6E = gRecvCmds[0][3];
+ break;
+ case 0x9999:
+ sBerryBlenderData->field_6C = 0x9999;
+ sBerryBlenderData->field_6E = gRecvCmds[0][3];
+ break;
+ case 0xAAAA:
+ sBerryBlenderData->field_6C = 0xAAAA;
+ sBerryBlenderData->field_6E = gRecvCmds[0][3];
+ break;
+ }
+
+ sBerryBlenderData->field_64[0] = 0x1111;
+ }
+ else if (gRecvCmds[0][1] == 0x2222)
+ {
+ sBerryBlenderData->field_64[0] = 0x2222;
+ }
+ }
+ if (GetMultiplayerId() == 0 && sBerryBlenderData->field_64[0] != 0x1111 && sBerryBlenderData->field_64[0] != 0x2222)
+ {
+ u8 i;
+ for (i = 0; i < GetLinkPlayerCount(); i++)
+ {
+ if (sub_80814B0(gRecvCmds[i][0], 0x2FFF, 0x2F00))
+ {
+ switch (gRecvCmds[i][1])
+ {
+ case 0x8888:
+ sBerryBlenderData->field_64[i] = 0x8888;
+ break;
+ case 0x7779:
+ sBerryBlenderData->field_64[i] = 0x7779;
+ break;
+ case 0x9999:
+ sBerryBlenderData->field_64[i] = 0x9999;
+ break;
+ case 0xAAAA:
+ sBerryBlenderData->field_64[i] = 0xAAAA;
+ break;
+ }
+ }
+ }
+ for (i = 0; i < GetLinkPlayerCount(); i++)
+ {
+ if (sBerryBlenderData->field_64[i] == 0)
+ break;
+ }
+ if (i == GetLinkPlayerCount())
+ {
+ for (i = 0; i < GetLinkPlayerCount(); i++)
+ {
+ if (sBerryBlenderData->field_64[i] != 0x7779)
+ break;
+ }
+ sub_8081F94(&gSendCmd[0]);
+ if (i == GetLinkPlayerCount())
+ {
+ gSendCmd[1] = 0x2222;
+ }
+ else
+ {
+ gSendCmd[1] = 0x1111;
+ gSendCmd[2] = sBerryBlenderData->field_64[i];
+ gSendCmd[3] = i;
+ }
+ }
+ }
+ }
+}
+
+static void sub_8082CB4(struct BgAffineSrcData *dest)
+{
+ struct BgAffineSrcData affineSrc;
+
+ affineSrc.texX = 0x7800;
+ affineSrc.texY = 0x5000;
+ affineSrc.scrX = 0x78 - sBerryBlenderData->bg_X;
+ affineSrc.scrY = 0x50 - sBerryBlenderData->bg_Y;
+ affineSrc.sx = sBerryBlenderData->field_11A;
+ affineSrc.sy = sBerryBlenderData->field_11A;
+ affineSrc.alpha = sBerryBlenderData->arrowPos;
+
+ *dest = affineSrc;
+}
+
+u16 GetBlenderArrowPosition(void)
+{
+ return sBerryBlenderData->arrowPos;
+}
+
+static void sub_8082D28(void)
+{
+ u8 playerId = 0;
+
+ if (gReceivedRemoteLinkPlayers != 0)
+ playerId = GetMultiplayerId();
+
+ if (gLinkVSyncDisabled && gReceivedRemoteLinkPlayers != 0)
+ {
+ if (playerId == 0)
+ {
+ sBerryBlenderData->arrowPos += sBerryBlenderData->field_4C;
+ gSendCmd[5] = sBerryBlenderData->field_116;
+ gSendCmd[6] = sBerryBlenderData->arrowPos;
+ sub_8082CB4(&sBerryBlenderData->bgAffineSrc);
+ }
+ else
+ {
+ if ((gRecvCmds[0][0] & 0xFF00) == 0x4400)
+ {
+ sBerryBlenderData->field_116 = gRecvCmds[0][5];
+ sBerryBlenderData->arrowPos = gRecvCmds[0][6];
+ sub_8082CB4(&sBerryBlenderData->bgAffineSrc);
+ }
+ }
+ }
+ else
+ {
+ sBerryBlenderData->arrowPos += sBerryBlenderData->field_4C;
+ sub_8082CB4(&sBerryBlenderData->bgAffineSrc);
+ }
+}
+
+static void BerryBlender_SetBackgroundsPos(void)
+{
+ SetGpuReg(REG_OFFSET_BG1HOFS, sBerryBlenderData->bg_X);
+ SetGpuReg(REG_OFFSET_BG1VOFS, sBerryBlenderData->bg_Y);
+
+ SetGpuReg(REG_OFFSET_BG0HOFS, sBerryBlenderData->bg_X);
+ SetGpuReg(REG_OFFSET_BG0VOFS, sBerryBlenderData->bg_Y);
+}
+
+static void sub_8082E3C(struct Sprite* sprite)
+{
+ sprite->data[2] += sprite->data[0];
+ sprite->data[3] += sprite->data[1];
+ sprite->pos2.x = sprite->data[2] / 8;
+ sprite->pos2.y = sprite->data[3] / 8;
+
+ if (sprite->animEnded)
+ DestroySprite(sprite);
+}
+
+static void sub_8082E84(void)
+{
+ s32 limit = (Random() % 2) + 1;
+ s32 i;
+
+ for (i = 0; i < limit; i++)
+ {
+ u16 rand;
+ s32 x, y;
+ u8 spriteId;
+
+ rand = sBerryBlenderData->arrowPos + (Random() % 20);
+
+ x = gSineTable[(rand & 0xFF) + 64] / 4;
+ y = gSineTable[(rand & 0xFF)] / 4;
+
+ spriteId = CreateSprite(&sUnknown_08339BE0, x + 120, y + 80, 1);
+ gSprites[spriteId].data[0] = 16 - (Random() % 32);
+ gSprites[spriteId].data[1] = 16 - (Random() % 32);
+
+ gSprites[spriteId].callback = sub_8082E3C;
+ }
+}
+
+static void sub_8082F68(struct Sprite* sprite)
+{
+ sprite->data[0]++;
+ sprite->pos2.y = -(sprite->data[0] / 3);
+
+ if (sprite->animEnded)
+ DestroySprite(sprite);
+}
+
+static void sub_8082F9C(struct Sprite* sprite)
+{
+ sprite->data[0]++;
+ sprite->pos2.y = -(sprite->data[0] * 2);
+
+ if (sprite->pos2.y < -12)
+ sprite->pos2.y = -12;
+ if (sprite->animEnded)
+ DestroySprite(sprite);
+}
+
+static void Blender_SetBankBerryData(u8 bank, u16 itemId)
+{
+ sBerryBlenderData->chosenItemId[bank] = itemId;
+ Blender_CopyBerryData(&sBerryBlenderData->blendedBerries[bank], itemId);
+}
+
+static void sub_8083010(struct Sprite* sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->data[1] += 8;
+ if (sprite->data[1] > 88)
+ {
+ sprite->data[1] = 88;
+ sprite->data[0]++;
+ PlaySE(SE_KON);
+ }
+ break;
+ case 1:
+ sprite->data[2] += 1;
+ if (sprite->data[2] > 20)
+ {
+ sprite->data[0]++;
+ sprite->data[2] = 0;
+ }
+ break;
+ case 2:
+ sprite->data[1] += 4;
+ if (sprite->data[1] > 176)
+ {
+ if (++sprite->data[3] == 3)
+ {
+ DestroySprite(sprite);
+ CreateSprite(&sUnknown_08339C60, 120, -20, 2);
+ }
+ else
+ {
+ sprite->data[0] = 0;
+ sprite->data[1] = -16;
+ StartSpriteAnim(sprite, sprite->data[3]);
+ }
+ }
+ break;
+ }
+
+ sprite->pos2.y = sprite->data[1];
+}
+
+static void sub_80830C0(struct Sprite* sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->data[1] += 8;
+ if (sprite->data[1] > 92)
+ {
+ sprite->data[1] = 92;
+ sprite->data[0]++;
+ PlaySE(SE_PIN);
+ }
+ break;
+ case 1:
+ sprite->data[2] += 1;
+ if (sprite->data[2] > 20)
+ sprite->data[0]++;
+ break;
+ case 2:
+ sprite->data[1] += 4;
+ if (sprite->data[1] > 176)
+ {
+ sBerryBlenderData->mainState++;
+ DestroySprite(sprite);
+ }
+ break;
+ }
+
+ sprite->pos2.y = sprite->data[1];
+}
+
+static void sub_8083140(u16 a0, u16 a1)
+{
+ if (sBerryBlenderData->field_118 < a0)
+ {
+ sBerryBlenderData->field_118 += 2;
+ sub_8083170(sBerryBlenderData->field_118, a1);
+ }
+}
+
+static void sub_8083170(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] = 0x80E9;
+ vram[43 + var4] = 0x80F9;
+ }
+ var3 = var1 % 8;
+ if (var3 != 0)
+ {
+ vram[11 + var4] = var3 + 0x80E1;
+ vram[43 + var4] = var3 + 0x80F1;
+ var4++;
+ }
+ for (; var4 < 8; var4++)
+ {
+ vram[11 + var4] = 0x80E1;
+ vram[43 + var4] = 0x80F1;
+ }
+}
+
+static u32 sub_8083210(u16 a0)
+{
+ return 0x57E40 * a0 / 0x10000;
+}
+
+static void sub_8083230(u16 a0)
+{
+ u8 i;
+ u8 palAdders[5];
+
+ u32 var = sub_8083210(a0);
+ if (sBerryBlenderData->max_RPM < var)
+ sBerryBlenderData->max_RPM = var;
+ for (i = 0; i < 5; i++)
+ {
+ palAdders[i] = var % 10;
+ var /= 10;
+ }
+ *((u16*)(VRAM + 0x6458)) = palAdders[4] + 0x8072;
+ *((u16*)(VRAM + 0x645A)) = palAdders[3] + 0x8072;
+ *((u16*)(VRAM + 0x645C)) = palAdders[2] + 0x8072;
+ *((u16*)(VRAM + 0x6460)) = palAdders[1] + 0x8072;
+ *((u16*)(VRAM + 0x6462)) = palAdders[0] + 0x8072;
+}
+
+static void sub_80832BC(s16* a0, u16 a1)
+{
+ if (*a0 == 0)
+ *a0 = (Random() % a1) - (a1 / 2);
+}
+
+static void sub_80832E8(s16* a0)
+{
+ if (*a0 < 0)
+ (*a0)++;
+ if (*a0 > 0)
+ (*a0)--;
+}
+
+static void sub_808330C(void)
+{
+ sub_80832E8(&sBerryBlenderData->bg_X);
+ sub_80832E8(&sBerryBlenderData->bg_Y);
+}
+
+static void sub_8083334(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_8083380(void)
+{
+ if (sBerryBlenderData->framesToWait == 0)
+ {
+ sBerryBlenderData->bg_X = 0;
+ sBerryBlenderData->bg_Y = 0;
+ }
+
+ sBerryBlenderData->framesToWait++;
+ sub_8083334(&sBerryBlenderData->bg_X, sBerryBlenderData->framesToWait);
+ sub_8083334(&sBerryBlenderData->bg_Y, sBerryBlenderData->framesToWait);
+
+ if (sBerryBlenderData->framesToWait == 20)
+ {
+ sBerryBlenderData->bg_X = 0;
+ sBerryBlenderData->bg_Y = 0;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static void sub_80833F8(struct Sprite* sprite)
+{
+ sprite->pos2.x = -(sBerryBlenderData->bg_X);
+ sprite->pos2.y = -(sBerryBlenderData->bg_Y);
+}
+
+static void TryUpdateBerryBlenderRecord(void)
+{
+ if (gSaveBlock1Ptr->berryBlenderRecords[sBerryBlenderData->playersNo - 2] < sBerryBlenderData->max_RPM)
+ gSaveBlock1Ptr->berryBlenderRecords[sBerryBlenderData->playersNo - 2] = sBerryBlenderData->max_RPM;
+}
+
+static bool8 Blender_PrintBlendingResults(void)
+{
+ u16 i;
+ s32 xPos, yPos;
+
+ struct Pokeblock pokeblock;
+ u8 flavors[6];
+ u8 text[40];
+ u16 berryIds[4]; // unused
+
+ switch (sBerryBlenderData->mainState)
+ {
+ case 0:
+ sBerryBlenderData->mainState++;
+ sBerryBlenderData->framesToWait = 17;
+ break;
+ case 1:
+ sBerryBlenderData->framesToWait -= 10;
+ if (sBerryBlenderData->framesToWait < 0)
+ {
+ sBerryBlenderData->framesToWait = 0;
+ sBerryBlenderData->mainState++;
+ }
+ break;
+ case 2:
+ if (++sBerryBlenderData->framesToWait > 20)
+ {
+ for (i = 0; i < BLENDER_SCORES_NO; i++)
+ DestroySprite(&gSprites[sBerryBlenderData->scoreIconIds[i]]);
+
+ sBerryBlenderData->framesToWait = 0;
+ sBerryBlenderData->mainState++;
+ }
+ break;
+ case 3:
+ {
+ u16 minutes, seconds;
+ u8 *txtPtr;
+
+ xPos = GetStringCenterAlignXOffset(1, sText_BlendingResults, 0xA8);
+ Blender_AddTextPrinter(5, sText_BlendingResults, xPos, 1, TEXT_SPEED_FF, 0);
+
+ if (sBerryBlenderData->playersNo == 4)
+ yPos = 17;
+ else
+ yPos = 21;
+
+ for (i = 0; i < sBerryBlenderData->playersNo; yPos += 16, i++)
+ {
+ u8 place = sBerryBlenderData->playerPlaces[i];
+
+ ConvertIntToDecimalStringN(sBerryBlenderData->stringVar, i + 1, STR_CONV_MODE_LEFT_ALIGN, 1);
+ StringAppend(sBerryBlenderData->stringVar, sText_Dot);
+ StringAppend(sBerryBlenderData->stringVar, gText_Space);
+ StringAppend(sBerryBlenderData->stringVar, gLinkPlayers[place].name);
+ Blender_AddTextPrinter(5, sBerryBlenderData->stringVar, 8, yPos, TEXT_SPEED_FF, 3);
+
+ StringCopy(sBerryBlenderData->stringVar, sBerryBlenderData->blendedBerries[place].name);
+ ConvertInternationalString(sBerryBlenderData->stringVar, gLinkPlayers[place].language);
+ StringAppend(sBerryBlenderData->stringVar, sText_SpaceBerry);
+ Blender_AddTextPrinter(5, sBerryBlenderData->stringVar, 0x54, yPos, TEXT_SPEED_FF, 3);
+ }
+
+ Blender_AddTextPrinter(5, sText_MaximumSpeed, 0, 0x51, TEXT_SPEED_FF, 3);
+ ConvertIntToDecimalStringN(sBerryBlenderData->stringVar, sBerryBlenderData->max_RPM / 100, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ StringAppend(sBerryBlenderData->stringVar, sText_Dot);
+
+ ConvertIntToDecimalStringN(text, sBerryBlenderData->max_RPM % 100, STR_CONV_MODE_LEADING_ZEROS, 2);
+ StringAppend(sBerryBlenderData->stringVar, text);
+ StringAppend(sBerryBlenderData->stringVar, sText_RPM);
+
+ xPos = GetStringRightAlignXOffset(1, sBerryBlenderData->stringVar, 0xA8);
+ Blender_AddTextPrinter(5, sBerryBlenderData->stringVar, xPos, 0x51, TEXT_SPEED_FF, 3);
+ Blender_AddTextPrinter(5, sText_Time, 0, 0x61, TEXT_SPEED_FF, 3);
+
+ seconds = (sBerryBlenderData->gameFrameTime / 60) % 60;
+ minutes = (sBerryBlenderData->gameFrameTime / (60 * 60));
+
+ ConvertIntToDecimalStringN(sBerryBlenderData->stringVar, minutes, STR_CONV_MODE_LEADING_ZEROS, 2);
+ txtPtr = StringAppend(sBerryBlenderData->stringVar, sText_Min);
+
+ ConvertIntToDecimalStringN(txtPtr, seconds, STR_CONV_MODE_LEADING_ZEROS, 2);
+ StringAppend(sBerryBlenderData->stringVar, sText_Sec);
+
+ xPos = GetStringRightAlignXOffset(1, sBerryBlenderData->stringVar, 0xA8);
+ Blender_AddTextPrinter(5, sBerryBlenderData->stringVar, xPos, 0x61, TEXT_SPEED_FF, 3);
+
+ sBerryBlenderData->framesToWait = 0;
+ sBerryBlenderData->mainState++;
+
+ CopyWindowToVram(5, 2);
+ }
+ break;
+ case 4:
+ if (gMain.newKeys & A_BUTTON)
+ sBerryBlenderData->mainState++;
+ break;
+ case 5:
+ sub_8198070(5, 1);
+
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ if (sBerryBlenderData->chosenItemId[i] != 0)
+ berryIds[i] = sBerryBlenderData->chosenItemId[i] - FIRST_BERRY_INDEX;
+ if (sBerryBlenderData->field_8E[i] != 0xFF)
+ {
+ PutWindowTilemap(i);
+ CopyWindowToVram(i, 3);
+ }
+ }
+
+ sub_8081E20();
+
+ Blender_CalculatePokeblock(sBerryBlenderData->blendedBerries, &pokeblock, sBerryBlenderData->playersNo, flavors, sBerryBlenderData->max_RPM);
+ Blender_PrintMadePokeblockString(&pokeblock, sBerryBlenderData->stringVar);
+ TryAddContestLinkTvShow(&pokeblock, &sBerryBlenderData->tvBlender);
+
+ CreateTask(sub_8083F3C, 6);
+ sub_80EECEC();
+
+ RemoveBagItem(gSpecialVar_ItemId, 1);
+ AddPokeblock(&pokeblock);
+
+ sBerryBlenderData->textState = 0;
+ sBerryBlenderData->mainState++;
+ break;
+ case 6:
+ if (Blender_PrintText(&sBerryBlenderData->textState, sBerryBlenderData->stringVar, GetPlayerTextSpeed()))
+ {
+ TryUpdateBerryBlenderRecord();
+ return TRUE;
+ }
+ break;
+ }
+
+ return FALSE;
+}
+
+static void Blender_PrintMadePokeblockString(struct Pokeblock *pokeblock, u8 *dst)
+{
+ u8 text[12];
+ u8 flavorLvl, feel;
+
+ dst[0] = EOS;
+ StringCopy(dst, gPokeblockNames[pokeblock->color]);
+ StringAppend(dst, sText_WasMade);
+ StringAppend(dst, sText_NewLine);
+
+ flavorLvl = GetHighestPokeblocksFlavorLevel(pokeblock);
+ feel = GetPokeblocksFeel(pokeblock);
+
+ StringAppend(dst, sText_TheLevelIs);
+ ConvertIntToDecimalStringN(text, flavorLvl, STR_CONV_MODE_LEFT_ALIGN, 3);
+ StringAppend(dst, text);
+
+ StringAppend(dst, sText_TheFeelIs);
+ ConvertIntToDecimalStringN(text, feel, STR_CONV_MODE_LEFT_ALIGN, 3);
+ StringAppend(dst, text);
+
+ StringAppend(dst, sText_Dot2);
+ StringAppend(dst, sText_NewParagraph);
+}
+
+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 playerId;
+ u8 i;
+ u8 places[BLENDER_MAX_PLAYERS];
+ u32 points[BLENDER_MAX_PLAYERS];
+
+ for (i = 0; i < sBerryBlenderData->playersNo; i++)
+ places[i] = i;
+ for (i = 0; i < sBerryBlenderData->playersNo; i++)
+ {
+ points[i] = 1000000 * sBerryBlenderData->scores[i][BLENDER_SCORE_BEST];
+ points[i] += 1000 * sBerryBlenderData->scores[i][BLENDER_SCORE_GOOD];
+ points[i] += 1000 - sBerryBlenderData->scores[i][BLENDER_SCORE_MISS];
+ }
+ Blender_SortBasedOnPoints(places, sBerryBlenderData->playersNo, points);
+ for (i = 0; i < sBerryBlenderData->playersNo; i++)
+ sBerryBlenderData->playerPlaces[i] = places[i];
+
+ if (gReceivedRemoteLinkPlayers == 0)
+ playerId = 0;
+ else
+ playerId = GetMultiplayerId();
+
+ for (i = 0; i < sBerryBlenderData->playersNo; i++)
+ {
+ if (sBerryBlenderData->playerPlaces[i] == playerId)
+ sBerryBlenderData->field_1A4 = i;
+ }
+}
+
+static bool8 Blender_PrintBlendingRanking(void)
+{
+ u16 i;
+ s32 xPos, yPos;
+
+ switch (sBerryBlenderData->mainState)
+ {
+ case 0:
+ sBerryBlenderData->mainState++;
+ sBerryBlenderData->framesToWait = 255;
+ break;
+ case 1:
+ sBerryBlenderData->framesToWait -= 10;
+ if (sBerryBlenderData->framesToWait < 0)
+ {
+ sBerryBlenderData->framesToWait = 0;
+ sBerryBlenderData->mainState++;
+ }
+ break;
+ case 2:
+ if (++sBerryBlenderData->framesToWait > 20)
+ {
+ sBerryBlenderData->framesToWait = 0;
+ sBerryBlenderData->mainState++;
+ }
+ break;
+ case 3:
+ SetWindowBorderStyle(5, 0, 1, 0xD);
+ xPos = GetStringCenterAlignXOffset(1, sText_Ranking, 0xA8);
+ Blender_AddTextPrinter(5, sText_Ranking, xPos, 1, TEXT_SPEED_FF, 0);
+
+ sBerryBlenderData->scoreIconIds[BLENDER_SCORE_BEST] = CreateSprite(&sUnknown_08339B40, 128, 52, 0);
+ StartSpriteAnim(&gSprites[sBerryBlenderData->scoreIconIds[BLENDER_SCORE_BEST]], 3);
+ gSprites[sBerryBlenderData->scoreIconIds[BLENDER_SCORE_BEST]].callback = SpriteCallbackDummy;
+
+ sBerryBlenderData->scoreIconIds[BLENDER_SCORE_GOOD] = CreateSprite(&sUnknown_08339B40, 160, 52, 0);
+ gSprites[sBerryBlenderData->scoreIconIds[BLENDER_SCORE_GOOD]].callback = SpriteCallbackDummy;
+
+ sBerryBlenderData->scoreIconIds[BLENDER_SCORE_MISS] = CreateSprite(&sUnknown_08339B40, 192, 52, 0);
+ StartSpriteAnim(&gSprites[sBerryBlenderData->scoreIconIds[BLENDER_SCORE_MISS]], 1);
+ gSprites[sBerryBlenderData->scoreIconIds[BLENDER_SCORE_MISS]].callback = SpriteCallbackDummy;
+
+ Blender_SortScores();
+
+ for (yPos = 0x29, i = 0; i < sBerryBlenderData->playersNo; yPos += 0x10, i++)
+ {
+ u8 place = sBerryBlenderData->playerPlaces[i];
+
+ ConvertIntToDecimalStringN(sBerryBlenderData->stringVar, i + 1, STR_CONV_MODE_LEFT_ALIGN, 1);
+ StringAppend(sBerryBlenderData->stringVar, sText_Dot);
+ StringAppend(sBerryBlenderData->stringVar, gText_Space);
+ StringAppend(sBerryBlenderData->stringVar, gLinkPlayers[place].name);
+ Blender_AddTextPrinter(5, sBerryBlenderData->stringVar, 0, yPos, TEXT_SPEED_FF, 3);
+
+ ConvertIntToDecimalStringN(sBerryBlenderData->stringVar, sBerryBlenderData->scores[place][BLENDER_SCORE_BEST], STR_CONV_MODE_RIGHT_ALIGN, 3);
+ Blender_AddTextPrinter(5, sBerryBlenderData->stringVar, 0x4E, yPos, TEXT_SPEED_FF, 3);
+
+ ConvertIntToDecimalStringN(sBerryBlenderData->stringVar, sBerryBlenderData->scores[place][BLENDER_SCORE_GOOD], STR_CONV_MODE_RIGHT_ALIGN, 3);
+ Blender_AddTextPrinter(5, sBerryBlenderData->stringVar, 0x6E, yPos, TEXT_SPEED_FF, 3);
+
+ ConvertIntToDecimalStringN(sBerryBlenderData->stringVar, sBerryBlenderData->scores[place][BLENDER_SCORE_MISS], STR_CONV_MODE_RIGHT_ALIGN, 3);
+ Blender_AddTextPrinter(5, sBerryBlenderData->stringVar, 0x8E, yPos, TEXT_SPEED_FF, 3);
+ }
+
+ PutWindowTilemap(5);
+ CopyWindowToVram(5, 3);
+
+ sBerryBlenderData->framesToWait = 0;
+ sBerryBlenderData->mainState++;
+ break;
+ case 4:
+ if (++sBerryBlenderData->framesToWait > 20)
+ sBerryBlenderData->mainState++;
+ break;
+ case 5:
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sBerryBlenderData->mainState++;
+ }
+ break;
+ case 6:
+ sBerryBlenderData->mainState = 0;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+void ShowBerryBlenderRecordWindow(void)
+{
+ s32 i;
+ s32 xPos, yPos;
+ struct WindowTemplate winTemplate;
+ u8 text[32];
+
+ winTemplate = sBlenderRecordWindowTemplate;
+ gResultsWindowId = AddWindow(&winTemplate);
+ sub_81973FC(gResultsWindowId, 0);
+ FillWindowPixelBuffer(gResultsWindowId, 0x11);
+
+ xPos = GetStringCenterAlignXOffset(1, gText_BlenderMaxSpeedRecord, 0x90);
+ PrintTextOnWindow(gResultsWindowId, 1, gText_BlenderMaxSpeedRecord, xPos, 1, 0, NULL);
+ PrintTextOnWindow(gResultsWindowId, 1, gText_234Players, 4, 0x29, 0, NULL);
+
+ for (i = 0, yPos = 0x29; i < BLENDER_SCORES_NO; i++)
+ {
+ u8 *txtPtr;
+ u32 record;
+
+ record = gSaveBlock1Ptr->berryBlenderRecords[i];
+
+ txtPtr = ConvertIntToDecimalStringN(text, record / 100, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ txtPtr = StringAppend(txtPtr, sText_Dot);
+ txtPtr = ConvertIntToDecimalStringN(txtPtr, record % 100, STR_CONV_MODE_LEADING_ZEROS, 2);
+ txtPtr = StringAppend(txtPtr, sText_RPM);
+
+ xPos = GetStringRightAlignXOffset(1, text, 0x8C);
+ PrintTextOnWindow(gResultsWindowId, 1, text, xPos, yPos + (i * 16), 0, NULL);
+ }
+
+ PutWindowTilemap(gResultsWindowId);
+ CopyWindowToVram(gResultsWindowId, 3);
+}
+
+static void sub_8083F3C(u8 taskId)
+{
+ if (gTasks[taskId].data[0] == 0)
+ {
+ PlayFanfare(BGM_FANFA1);
+ gTasks[taskId].data[0]++;
+ }
+ if (IsFanfareTaskInactive())
+ {
+ PlayBGM(sBerryBlenderData->field_154);
+ DestroyTask(taskId);
+ }
+}
+
+static bool32 TryAddContestLinkTvShow(struct Pokeblock *pokeblock, struct TvBlenderStruct *tvBlender)
+{
+ u8 flavorLevel = GetHighestPokeblocksFlavorLevel(pokeblock);
+ u16 sheen = (flavorLevel * 10) / GetPokeblocksFeel(pokeblock);
+
+ tvBlender->pokeblockSheen = sheen;
+ tvBlender->pokeblockColor = pokeblock->color;
+ tvBlender->name[0] = EOS;
+
+ if (gReceivedRemoteLinkPlayers != 0)
+ {
+ if (sBerryBlenderData->field_1A4 == 0 && sheen > 20)
+ {
+ StringCopy(tvBlender->name, gLinkPlayers[sBerryBlenderData->playerPlaces[sBerryBlenderData->playersNo - 1]].name);
+ tvBlender->pokeblockFlavor = GetPokeblocksFlavor(pokeblock);
+ if (Put3CheersForPokeblocksOnTheAir(tvBlender->name, tvBlender->pokeblockFlavor,
+ tvBlender->pokeblockColor, tvBlender->pokeblockSheen,
+ gLinkPlayers[sBerryBlenderData->playerPlaces[sBerryBlenderData->playersNo - 1]].language))
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+ }
+ else if (sBerryBlenderData->field_1A4 == sBerryBlenderData->playersNo - 1 && sheen <= 20)
+ {
+ StringCopy(tvBlender->name, gLinkPlayers[sBerryBlenderData->playerPlaces[0]].name);
+ tvBlender->pokeblockFlavor = GetPokeblocksFlavor(pokeblock);
+ if (Put3CheersForPokeblocksOnTheAir(tvBlender->name, tvBlender->pokeblockFlavor,
+ tvBlender->pokeblockColor, tvBlender->pokeblockSheen,
+ gLinkPlayers[sBerryBlenderData->playerPlaces[0]].language))
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+ }
+ }
+
+ return FALSE;
+}
+
+static void Blender_AddTextPrinter(u8 windowId, const u8 *string, u8 x, u8 y, s32 speed, s32 caseId)
+{
+ struct TextColor txtColor;
+ u32 letterSpacing = 0;
+
+ switch (caseId)
+ {
+ case 0:
+ case 3:
+ txtColor.fgColor = 1;
+ txtColor.bgColor = 2;
+ txtColor.shadowColor = 3;
+ break;
+ case 1:
+ txtColor.fgColor = 0;
+ txtColor.bgColor = 2;
+ txtColor.shadowColor = 3;
+ break;
+ case 2:
+ txtColor.fgColor = 0;
+ txtColor.bgColor = 4;
+ txtColor.shadowColor = 5;
+ break;
+ }
+
+ if (caseId != 3)
+ {
+ FillWindowPixelBuffer(windowId, txtColor.fgColor | (txtColor.fgColor << 4));
+ }
+
+ AddTextPrinterParametrized2(windowId, 1, x, y, letterSpacing, 1, &txtColor, speed, string);
+}
+
+static bool32 Blender_PrintText(s16 *textState, const u8 *string, s32 textSpeed)
+{
+ switch (*textState)
+ {
+ case 0:
+ sub_8197B1C(4, FALSE, 0x14, 0xF);
+ Blender_AddTextPrinter(4, string, 0, 1, textSpeed, 0);
+ PutWindowTilemap(4);
+ CopyWindowToVram(4, 3);
+ (*textState)++;
+ break;
+ case 1:
+ if (!IsTextPrinterActive(4))
+ {
+ *textState = 0;
+ return TRUE;
+ }
+ break;
+ }
-// .text
+ return FALSE;
+}
diff --git a/src/berry_fix_program.c b/src/berry_fix_program.c
index eca20af9d..bba39c3eb 100644
--- a/src/berry_fix_program.c
+++ b/src/berry_fix_program.c
@@ -1,5 +1,3 @@
-
-// Includes
#include "global.h"
#include "gpu_regs.h"
#include "multiboot.h"
@@ -10,6 +8,7 @@
#include "task.h"
#include "unknown_task.h"
#include "window.h"
+#include "text.h"
#include "menu.h"
#include "m4a.h"
diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c
index 85b2bc509..d6924de9f 100755
--- a/src/braille_puzzles.c
+++ b/src/braille_puzzles.c
@@ -1,12 +1,12 @@
#include "global.h"
#include "event_data.h"
-#include "songs.h"
+#include "constants/songs.h"
#include "sound.h"
#include "script.h"
-#include "species.h"
+#include "constants/species.h"
#include "task.h"
#include "field_effect.h"
-#include "flags.h"
+#include "constants/flags.h"
extern void MapGridSetMetatileIdAt(s32 x, s32 y, u16 metatileId); // fieldmap
extern void DrawWholeMapView(); // field_camera
diff --git a/src/calculate_base_damage.c b/src/calculate_base_damage.c
index 89770b17a..d30599607 100644
--- a/src/calculate_base_damage.c
+++ b/src/calculate_base_damage.c
@@ -1,14 +1,14 @@
#include "global.h"
-#include "abilities.h"
+#include "constants/abilities.h"
#include "battle.h"
-#include "hold_effects.h"
+#include "constants/hold_effects.h"
#include "event_data.h"
#include "item.h"
-#include "items.h"
+#include "constants/items.h"
#include "pokemon.h"
-#include "species.h"
-#include "moves.h"
-#include "battle_move_effects.h"
+#include "constants/species.h"
+#include "constants/moves.h"
+#include "constants/battle_move_effects.h"
extern u32 gBattleTypeFlags;
extern struct BattlePokemon gBattleMons[4];
diff --git a/src/clear_save_data_screen.c b/src/clear_save_data_screen.c
index 3192e0e11..6d6a1545b 100755
--- a/src/clear_save_data_screen.c
+++ b/src/clear_save_data_screen.c
@@ -1,7 +1,7 @@
#include "global.h"
#include "task.h"
-#include "menu.h"
#include "text.h"
+#include "menu.h"
#include "sound.h"
#include "main.h"
#include "save.h"
@@ -9,7 +9,7 @@
#include "gpu_regs.h"
#include "bg.h"
#include "text_window.h"
-#include "songs.h"
+#include "constants/songs.h"
extern u8 gText_ClearAllSaveData[];
extern u8 gText_ClearingData[];
@@ -88,7 +88,7 @@ static void Task_DoClearSaveDataScreenYesNo(u8 taskId)
static void Task_ClearSaveDataScreenYesNoChoice(u8 taskId)
{
- switch(sub_8198C58())
+ switch(ProcessMenuInputNoWrap_())
{
case 0:
FillWindowPixelBuffer(0, 17);
diff --git a/src/clock.c b/src/clock.c
new file mode 100644
index 000000000..7cea30166
--- /dev/null
+++ b/src/clock.c
@@ -0,0 +1,93 @@
+#include "global.h"
+#include "rom6.h"
+#include "event_data.h"
+#include "rtc.h"
+#include "lottery_corner.h"
+#include "dewford_trend.h"
+#include "tv.h"
+#include "field_screen.h"
+#include "berry.h"
+#include "main.h"
+#include "overworld.h"
+#include "wallclock.h"
+
+// static types
+
+// static declarations
+
+static void UpdatePerDay(struct Time *localTime);
+static void UpdatePerMinute(struct Time *localTime);
+
+// rodata
+
+// text
+
+static void InitTimeBasedEvents(void)
+{
+ FlagSet(FLAG_SYS_CLOCK_SET);
+ RtcCalcLocalTime();
+ gSaveBlock2Ptr->lastBerryTreeUpdate = gLocalTime;
+ VarSet(VAR_DAYS, gLocalTime.days);
+}
+
+void DoTimeBasedEvents(void)
+{
+ if (FlagGet(FLAG_SYS_CLOCK_SET) && !sub_813B9C0())
+ {
+ RtcCalcLocalTime();
+ UpdatePerDay(&gLocalTime);
+ UpdatePerMinute(&gLocalTime);
+ }
+}
+
+static void UpdatePerDay(struct Time *localTime)
+{
+ u16 *days = GetVarPointer(VAR_DAYS);
+ u16 daysSince;
+
+ if (*days != localTime->days && *days <= localTime->days)
+ {
+ daysSince = localTime->days - *days;
+ ClearUpperFlags();
+ UpdateDewfordTrendPerDay(daysSince);
+ UpdateTVShowsPerDay(daysSince);
+ UpdateWeatherPerDay(daysSince);
+ UpdatePartyPokerusTime(daysSince);
+ UpdateMirageRnd(daysSince);
+ UpdateBirchState(daysSince);
+ UpdateFrontierManiac(daysSince);
+ UpdateFrontierGambler(daysSince);
+ SetShoalItemFlag(daysSince);
+ SetRandomLotteryNumber(daysSince);
+ *days = localTime->days;
+ }
+}
+
+static void UpdatePerMinute(struct Time *localTime)
+{
+ struct Time difference;
+ int minutes;
+
+ CalcTimeDifference(&difference, &gSaveBlock2Ptr->lastBerryTreeUpdate, localTime);
+ minutes = 24 * 60 * difference.days + 60 * difference.hours + difference.minutes;
+ if (minutes != 0)
+ {
+ if (minutes >= 0)
+ {
+ BerryTreeTimeUpdate(minutes);
+ gSaveBlock2Ptr->lastBerryTreeUpdate = *localTime;
+ }
+ }
+}
+
+static void ReturnFromStartWallClock(void)
+{
+ InitTimeBasedEvents();
+ SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+}
+
+void StartWallClock(void)
+{
+ SetMainCallback2(Cb2_StartWallClock);
+ gMain.savedCallback = ReturnFromStartWallClock;
+}
diff --git a/src/coins.c b/src/coins.c
index e1694b29c..50c31cac0 100644
--- a/src/coins.c
+++ b/src/coins.c
@@ -2,8 +2,9 @@
#include "coins.h"
#include "text.h"
#include "window.h"
-#include "text_window.h"
+#include "strings.h"
#include "string_util.h"
+#include "new_menu_helpers.h"
#include "menu.h"
#include "international_string_util.h"
@@ -11,10 +12,6 @@
EWRAM_DATA u8 sCoinsWindowId = 0;
-extern void sub_819746C(u8 windowId, bool8 copyToVram);
-
-extern const u8 gText_Coins[];
-
void PrintCoinsString(u32 coinAmount)
{
u32 xAlign;
@@ -53,7 +50,6 @@ void SetCoins(u16 coinAmount)
gSaveBlock1Ptr->coins = coinAmount ^ gSaveBlock2Ptr->encryptionKey;
}
-/* Can't match it lol
bool8 GiveCoins(u16 toAdd)
{
u16 newAmount;
@@ -67,10 +63,22 @@ bool8 GiveCoins(u16 toAdd)
}
else
{
- newAmount = ownedCoins + toAdd;
- if (newAmount > MAX_COINS)
- newAmount = MAX_COINS;
+ ownedCoins += toAdd;
+ if (ownedCoins > MAX_COINS)
+ ownedCoins = MAX_COINS;
+ newAmount = ownedCoins;
}
SetCoins(newAmount);
return TRUE;
-}*/
+}
+
+bool8 TakeCoins(u16 toSub)
+{
+ u16 ownedCoins = GetCoins();
+ if (ownedCoins >= toSub)
+ {
+ SetCoins(ownedCoins - toSub);
+ return TRUE;
+ }
+ return FALSE;
+}
diff --git a/src/daycare.c b/src/daycare.c
index 8dd45863a..ce9952531 100644
--- a/src/daycare.c
+++ b/src/daycare.c
@@ -2,14 +2,14 @@
#include "pokemon.h"
#include "daycare.h"
#include "string_util.h"
-#include "species.h"
-#include "items.h"
+#include "constants/species.h"
+#include "constants/items.h"
#include "mail.h"
#include "pokemon_storage_system.h"
#include "event_data.h"
-#include "rng.h"
+#include "random.h"
#include "main.h"
-#include "moves.h"
+#include "constants/moves.h"
#include "egg_hatch.h"
#include "text.h"
#include "menu.h"
diff --git a/src/decompress.c b/src/decompress.c
index 9210799ec..8e8827194 100644
--- a/src/decompress.c
+++ b/src/decompress.c
@@ -1,6 +1,6 @@
#include "global.h"
#include "decompress.h"
-#include "species.h"
+#include "constants/species.h"
#include "text.h"
#include "malloc.h"
#include "pokemon.h"
@@ -459,10 +459,9 @@ _08034964:\n\
.syntax divided");
}
-u32 sub_8034974(void* ptr)
+u32 sub_8034974(const u8 *ptr)
{
- u8* ptr_ = (u8*)(ptr);
- return (ptr_[3] << 16) | (ptr_[2] << 8) | (ptr_[1]);
+ return (ptr[3] << 16) | (ptr[2] << 8) | (ptr[1]);
}
bool8 LoadCompressedObjectPicUsingHeap(const struct CompressedSpriteSheet* src)
diff --git a/src/decoration.c b/src/decoration.c
index adcdc583b..987e628c5 100644
--- a/src/decoration.c
+++ b/src/decoration.c
@@ -1,13 +1,15 @@
#include "global.h"
+#include "constants/decorations.h"
#include "decompress.h"
#include "malloc.h"
+#include "text.h"
#include "string_util.h"
#include "international_string_util.h"
#include "script.h"
#include "task.h"
#include "main.h"
#include "palette.h"
-#include "songs.h"
+#include "constants/songs.h"
#include "overworld.h"
#include "fieldmap.h"
#include "metatile_behavior.h"
@@ -31,7 +33,7 @@
#include "tilesets.h"
#include "item_icon.h"
#include "trader.h"
-#include "map_object_constants.h"
+#include "constants/map_objects.h"
#include "decoration_inventory.h"
#include "decoration.h"
#include "graphics.h"
@@ -1301,7 +1303,7 @@ void sub_8128060(u8 taskId)
void ConfigureCameraObjectForPlacingDecoration(struct PlaceDecorationGraphicsDataBuffer *data, u8 decor)
{
- sDecor_CameraSpriteObjectIdx1 = gSprites[gUnknown_03005DD0.unk4].data0;
+ sDecor_CameraSpriteObjectIdx1 = gSprites[gUnknown_03005DD0.unk4].data[0];
gUnknown_03005DD0.unk4 = gpu_pal_decompress_alloc_tag_and_upload(data, decor);
gSprites[gUnknown_03005DD0.unk4].oam.priority = 1;
gSprites[gUnknown_03005DD0.unk4].callback = sub_81292D0;
@@ -1382,8 +1384,8 @@ void sub_812826C(u8 taskId)
void sub_81283BC(u8 taskId)
{
gTasks[taskId].data[10] = 0;
- gSprites[sDecor_CameraSpriteObjectIdx1].data7 = 1;
- gSprites[sDecor_CameraSpriteObjectIdx2].data7 = 1;
+ gSprites[sDecor_CameraSpriteObjectIdx1].data[7] = 1;
+ gSprites[sDecor_CameraSpriteObjectIdx2].data[7] = 1;
sub_8128DE0();
sub_8128950(taskId);
}
@@ -1391,8 +1393,8 @@ void sub_81283BC(u8 taskId)
void sub_8128414(u8 taskId)
{
gTasks[taskId].data[10] = 0;
- gSprites[sDecor_CameraSpriteObjectIdx1].data7 = 1;
- gSprites[sDecor_CameraSpriteObjectIdx2].data7 = 1;
+ gSprites[sDecor_CameraSpriteObjectIdx1].data[7] = 1;
+ gSprites[sDecor_CameraSpriteObjectIdx2].data[7] = 1;
sub_8128DE0();
StringExpandPlaceholders(gStringVar4, gText_CancelDecorating);
DisplayItemMessageOnField(taskId, gStringVar4, sub_8128B80);
@@ -1768,8 +1770,8 @@ bool8 sub_8128DB4(void)
void sub_8128DE0(void)
{
sDecorationLastDirectionMoved = 0;
- gSprites[sDecor_CameraSpriteObjectIdx1].data2 = 0;
- gSprites[sDecor_CameraSpriteObjectIdx1].data3 = 0;
+ gSprites[sDecor_CameraSpriteObjectIdx1].data[2] = 0;
+ gSprites[sDecor_CameraSpriteObjectIdx1].data[3] = 0;
}
void sub_8128E18(u8 taskId)
@@ -1777,7 +1779,7 @@ void sub_8128E18(u8 taskId)
s16 *data;
data = gTasks[taskId].data;
- if (!gSprites[sDecor_CameraSpriteObjectIdx1].data4)
+ if (!gSprites[sDecor_CameraSpriteObjectIdx1].data[4])
{
if (data[10] == 1)
{
@@ -1791,29 +1793,29 @@ void sub_8128E18(u8 taskId)
if ((gMain.heldKeys & 0x0F0) == DPAD_UP)
{
sDecorationLastDirectionMoved = DIR_SOUTH;
- gSprites[sDecor_CameraSpriteObjectIdx1].data2 = 0;
- gSprites[sDecor_CameraSpriteObjectIdx1].data3 = -2;
+ gSprites[sDecor_CameraSpriteObjectIdx1].data[2] = 0;
+ gSprites[sDecor_CameraSpriteObjectIdx1].data[3] = -2;
data[1]--;
}
if ((gMain.heldKeys & 0x0F0) == DPAD_DOWN)
{
sDecorationLastDirectionMoved = DIR_NORTH;
- gSprites[sDecor_CameraSpriteObjectIdx1].data2 = 0;
- gSprites[sDecor_CameraSpriteObjectIdx1].data3 = 2;
+ gSprites[sDecor_CameraSpriteObjectIdx1].data[2] = 0;
+ gSprites[sDecor_CameraSpriteObjectIdx1].data[3] = 2;
data[1]++;
}
if ((gMain.heldKeys & 0x0F0) == DPAD_LEFT)
{
sDecorationLastDirectionMoved = DIR_WEST;
- gSprites[sDecor_CameraSpriteObjectIdx1].data2 = -2;
- gSprites[sDecor_CameraSpriteObjectIdx1].data3 = 0;
+ gSprites[sDecor_CameraSpriteObjectIdx1].data[2] = -2;
+ gSprites[sDecor_CameraSpriteObjectIdx1].data[3] = 0;
data[0]--;
}
if ((gMain.heldKeys & 0x0F0) == DPAD_RIGHT)
{
sDecorationLastDirectionMoved = DIR_EAST;
- gSprites[sDecor_CameraSpriteObjectIdx1].data2 = 2;
- gSprites[sDecor_CameraSpriteObjectIdx1].data3 = 0;
+ gSprites[sDecor_CameraSpriteObjectIdx1].data[2] = 2;
+ gSprites[sDecor_CameraSpriteObjectIdx1].data[3] = 0;
data[0]++;
}
if (!sub_8128DB4() || !sub_8128D10(taskId))
@@ -1823,8 +1825,8 @@ void sub_8128E18(u8 taskId)
}
if (sDecorationLastDirectionMoved)
{
- gSprites[sDecor_CameraSpriteObjectIdx1].data4++;
- gSprites[sDecor_CameraSpriteObjectIdx1].data4 &= 7;
+ gSprites[sDecor_CameraSpriteObjectIdx1].data[4]++;
+ gSprites[sDecor_CameraSpriteObjectIdx1].data[4] &= 7;
}
if (!data[10])
{
@@ -1842,7 +1844,7 @@ void sub_8128E18(u8 taskId)
void sub_8128FD8(u8 taskId)
{
sub_8197434(0, 1);
- gSprites[sDecor_CameraSpriteObjectIdx1].data7 = 0;
+ gSprites[sDecor_CameraSpriteObjectIdx1].data[7] = 0;
gTasks[taskId].data[10] = 0;
gTasks[taskId].func = sub_8128E18;
}
@@ -1953,20 +1955,20 @@ void SetDecorSelectionBoxOamAttributes(u8 decorShape)
void sub_81292D0(struct Sprite *sprite)
{
- sprite->data2 = 0;
- sprite->data3 = 0;
- sprite->data4 = 0;
- sprite->data5 = 0;
- sprite->data6 = 0;
- sprite->data7 = 0;
+ sprite->data[2] = 0;
+ sprite->data[3] = 0;
+ sprite->data[4] = 0;
+ sprite->data[5] = 0;
+ sprite->data[6] = 0;
+ sprite->data[7] = 0;
sprite->callback = sub_81292E8;
}
void sub_81292E8(struct Sprite *sprite)
{
- if (sprite->data7 == 0)
+ if (sprite->data[7] == 0)
{
- if (sprite->data6 < 15)
+ if (sprite->data[6] < 15)
{
sprite->invisible = FALSE;
}
@@ -1974,8 +1976,8 @@ void sub_81292E8(struct Sprite *sprite)
{
sprite->invisible = TRUE;
}
- sprite->data6 ++;
- sprite->data6 &= 0x1F;
+ sprite->data[6] ++;
+ sprite->data[6] &= 0x1F;
}
else
{
@@ -2247,7 +2249,7 @@ bool8 sub_81299AC(u8 taskId)
void SetUpPuttingAwayDecorationPlayerAvatar(void)
{
player_get_direction_lower_nybble();
- sDecor_CameraSpriteObjectIdx1 = gSprites[gUnknown_03005DD0.unk4].data0;
+ sDecor_CameraSpriteObjectIdx1 = gSprites[gUnknown_03005DD0.unk4].data[0];
sub_812A39C();
gUnknown_03005DD0.unk4 = CreateSprite(&gUnknown_085A7404, 0x78, 0x50, 0);
if (gSaveBlock2Ptr->playerGender == MALE)
@@ -2298,7 +2300,7 @@ void sub_8129ABC(u8 taskId)
void sub_8129B34(u8 taskId)
{
sub_8197434(0, 1);
- gSprites[sDecor_CameraSpriteObjectIdx1].data7 = 0;
+ gSprites[sDecor_CameraSpriteObjectIdx1].data[7] = 0;
gSprites[sDecor_CameraSpriteObjectIdx1].invisible = FALSE;
gSprites[sDecor_CameraSpriteObjectIdx1].callback = sub_812A36C;
gSprites[sDecor_CameraSpriteObjectIdx2].pos1.x = 0x88;
@@ -2718,9 +2720,9 @@ void sub_812A334(void)
void sub_812A36C(struct Sprite *sprite)
{
- sprite->data0 ++;
- sprite->data0 &= 0x1F;
- if (sprite->data0 > 15)
+ sprite->data[0] ++;
+ sprite->data[0] &= 0x1F;
+ if (sprite->data[0] > 15)
{
sprite->invisible = TRUE;
}
diff --git a/src/decoration_inventory.c b/src/decoration_inventory.c
index 03ab6c00c..308320206 100644
--- a/src/decoration_inventory.c
+++ b/src/decoration_inventory.c
@@ -1,6 +1,7 @@
// Includes
#include "global.h"
+#include "constants/decorations.h"
#include "decoration.h"
#include "decoration_inventory.h"
diff --git a/src/egg_hatch.c b/src/egg_hatch.c
index a3f7c2ab0..a31eb0520 100644
--- a/src/egg_hatch.c
+++ b/src/egg_hatch.c
@@ -2,7 +2,7 @@
#include "pokemon.h"
#include "egg_hatch.h"
#include "pokedex.h"
-#include "items.h"
+#include "constants/items.h"
#include "script.h"
#include "decompress.h"
#include "task.h"
@@ -10,20 +10,20 @@
#include "main.h"
#include "event_data.h"
#include "sound.h"
-#include "songs.h"
+#include "constants/songs.h"
#include "text.h"
#include "text_window.h"
#include "string_util.h"
#include "menu.h"
#include "trig.h"
-#include "rng.h"
+#include "random.h"
#include "malloc.h"
#include "dma3.h"
#include "gpu_regs.h"
#include "bg.h"
#include "m4a.h"
#include "window.h"
-#include "abilities.h"
+#include "constants/abilities.h"
#include "daycare.h"
#include "battle.h" // to get rid of later
@@ -57,10 +57,8 @@ extern const u32 gUnknown_08331F60[]; // tilemap gameboy circle
extern const u8 gText_HatchedFromEgg[];
extern const u8 gText_NickHatchPrompt[];
-extern u8* GetMonNick(struct Pokemon* mon, u8* dst);
-extern u8* GetBoxMonNick(struct BoxPokemon* boxMon, u8* dst);
extern u8 sav1_map_get_name(void);
-extern s8 sub_8198C58(void);
+extern s8 ProcessMenuInputNoWrap_(void);
extern void TVShowConvertInternationalString(u8* str1, u8* str2, u8);
extern void sub_806A068(u16, u8);
extern void fade_screen(u8, u8);
@@ -75,7 +73,6 @@ extern void play_some_sound(void);
extern void copy_decompressed_tile_data_to_vram_autofree(u8 bg_id, const void* src, u16 size, u16 offset, u8 mode);
extern void CreateYesNoMenu(const struct WindowTemplate*, u16, u8, u8);
extern void DoNamingScreen(u8, const u8*, u16, u8, u32, MainCallback);
-extern void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, struct TextColor* colors, s8 speed, u8 *str);
extern u16 sub_80D22D0(void);
extern u8 CountPartyAliveNonEggMonsExcept(u8);
@@ -672,7 +669,7 @@ static void CB2_EggHatch_1(void)
}
break;
case 10:
- switch (sub_8198C58())
+ switch (ProcessMenuInputNoWrap_())
{
case 0:
GetMonNick(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar3);
@@ -712,16 +709,16 @@ static void CB2_EggHatch_1(void)
static void SpriteCB_Egg_0(struct Sprite* sprite)
{
- if (++sprite->data0 > 20)
+ if (++sprite->data[0] > 20)
{
sprite->callback = SpriteCB_Egg_1;
- sprite->data0 = 0;
+ sprite->data[0] = 0;
}
else
{
- sprite->data1 = (sprite->data1 + 20) & 0xFF;
- sprite->pos2.x = Sin(sprite->data1, 1);
- if (sprite->data0 == 15)
+ sprite->data[1] = (sprite->data[1] + 20) & 0xFF;
+ sprite->pos2.x = Sin(sprite->data[1], 1);
+ if (sprite->data[0] == 15)
{
PlaySE(SE_BOWA);
StartSpriteAnim(sprite, 1);
@@ -732,19 +729,19 @@ static void SpriteCB_Egg_0(struct Sprite* sprite)
static void SpriteCB_Egg_1(struct Sprite* sprite)
{
- if (++sprite->data2 > 30)
+ if (++sprite->data[2] > 30)
{
- if (++sprite->data0 > 20)
+ if (++sprite->data[0] > 20)
{
sprite->callback = SpriteCB_Egg_2;
- sprite->data0 = 0;
- sprite->data2 = 0;
+ sprite->data[0] = 0;
+ sprite->data[2] = 0;
}
else
{
- sprite->data1 = (sprite->data1 + 20) & 0xFF;
- sprite->pos2.x = Sin(sprite->data1, 2);
- if (sprite->data0 == 15)
+ sprite->data[1] = (sprite->data[1] + 20) & 0xFF;
+ sprite->pos2.x = Sin(sprite->data[1], 2);
+ if (sprite->data[0] == 15)
{
PlaySE(SE_BOWA);
StartSpriteAnim(sprite, 2);
@@ -755,30 +752,30 @@ static void SpriteCB_Egg_1(struct Sprite* sprite)
static void SpriteCB_Egg_2(struct Sprite* sprite)
{
- if (++sprite->data2 > 30)
+ if (++sprite->data[2] > 30)
{
- if (++sprite->data0 > 38)
+ if (++sprite->data[0] > 38)
{
u16 species;
sprite->callback = SpriteCB_Egg_3;
- sprite->data0 = 0;
+ sprite->data[0] = 0;
species = GetMonData(&gPlayerParty[sEggHatchData->eggPartyID], MON_DATA_SPECIES);
gSprites[sEggHatchData->pokeSpriteID].pos2.x = 0;
gSprites[sEggHatchData->pokeSpriteID].pos2.y = 0;
}
else
{
- sprite->data1 = (sprite->data1 + 20) & 0xFF;
- sprite->pos2.x = Sin(sprite->data1, 2);
- if (sprite->data0 == 15)
+ sprite->data[1] = (sprite->data[1] + 20) & 0xFF;
+ sprite->pos2.x = Sin(sprite->data[1], 2);
+ if (sprite->data[0] == 15)
{
PlaySE(SE_BOWA);
StartSpriteAnim(sprite, 2);
CreateRandomEggShardSprite();
CreateRandomEggShardSprite();
}
- if (sprite->data0 == 30)
+ if (sprite->data[0] == 30)
PlaySE(SE_BOWA);
}
}
@@ -786,60 +783,60 @@ static void SpriteCB_Egg_2(struct Sprite* sprite)
static void SpriteCB_Egg_3(struct Sprite* sprite)
{
- if (++sprite->data0 > 50)
+ if (++sprite->data[0] > 50)
{
sprite->callback = SpriteCB_Egg_4;
- sprite->data0 = 0;
+ sprite->data[0] = 0;
}
}
static void SpriteCB_Egg_4(struct Sprite* sprite)
{
s16 i;
- if (sprite->data0 == 0)
+ if (sprite->data[0] == 0)
BeginNormalPaletteFade(-1, -1, 0, 0x10, 0xFFFF);
- if (sprite->data0 < 4u)
+ if (sprite->data[0] < 4u)
{
for (i = 0; i <= 3; i++)
CreateRandomEggShardSprite();
}
- sprite->data0++;
+ sprite->data[0]++;
if (!gPaletteFade.active)
{
PlaySE(SE_TAMAGO);
sprite->invisible = 1;
sprite->callback = SpriteCB_Egg_5;
- sprite->data0 = 0;
+ sprite->data[0] = 0;
}
}
static void SpriteCB_Egg_5(struct Sprite* sprite)
{
- if (sprite->data0 == 0)
+ if (sprite->data[0] == 0)
{
gSprites[sEggHatchData->pokeSpriteID].invisible = 0;
StartSpriteAffineAnim(&gSprites[sEggHatchData->pokeSpriteID], 1);
}
- if (sprite->data0 == 8)
+ if (sprite->data[0] == 8)
BeginNormalPaletteFade(-1, -1, 0x10, 0, 0xFFFF);
- if (sprite->data0 <= 9)
+ if (sprite->data[0] <= 9)
gSprites[sEggHatchData->pokeSpriteID].pos1.y -= 1;
- if (sprite->data0 > 40)
+ if (sprite->data[0] > 40)
sprite->callback = SpriteCallbackDummy;
- sprite->data0++;
+ sprite->data[0]++;
}
static void SpriteCB_EggShard(struct Sprite* sprite)
{
- sprite->data4 += sprite->data1;
- sprite->data5 += sprite->data2;
+ sprite->data[4] += sprite->data[1];
+ sprite->data[5] += sprite->data[2];
- sprite->pos2.x = sprite->data4 / 256;
- sprite->pos2.y = sprite->data5 / 256;
+ sprite->pos2.x = sprite->data[4] / 256;
+ sprite->pos2.y = sprite->data[5] / 256;
- sprite->data2 += sprite->data3;
+ sprite->data[2] += sprite->data[3];
- if (sprite->pos1.y + sprite->pos2.y > sprite->pos1.y + 20 && sprite->data2 > 0)
+ if (sprite->pos1.y + sprite->pos2.y > sprite->pos1.y + 20 && sprite->data[2] > 0)
DestroySprite(sprite);
}
@@ -857,9 +854,9 @@ static void CreateRandomEggShardSprite(void)
static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 spriteAnimIndex)
{
u8 spriteID = CreateSprite(&sSpriteTemplate_EggShard, x, y, 4);
- gSprites[spriteID].data1 = data1;
- gSprites[spriteID].data2 = data2;
- gSprites[spriteID].data3 = data3;
+ gSprites[spriteID].data[1] = data1;
+ gSprites[spriteID].data[2] = data2;
+ gSprites[spriteID].data[3] = data3;
StartSpriteAnim(&gSprites[spriteID], spriteAnimIndex);
}
diff --git a/src/event_data.c b/src/event_data.c
index e3742a147..9f1432f17 100644
--- a/src/event_data.c
+++ b/src/event_data.c
@@ -44,7 +44,7 @@ void ClearTempFieldEventData(void)
FlagClear(FLAG_SYS_ENC_DOWN_ITEM);
FlagClear(FLAG_SYS_USE_STRENGTH);
FlagClear(FLAG_SYS_CTRL_OBJ_DELETE);
- FlagClear(FLAG_SYS_UNKNOWN_880);
+ FlagClear(FLAG_0x880);
}
// probably had different flag splits at one point.
diff --git a/src/evolution_graphics.c b/src/evolution_graphics.c
index eca5d4bdc..8d02eef91 100644
--- a/src/evolution_graphics.c
+++ b/src/evolution_graphics.c
@@ -2,11 +2,11 @@
#include "evolution_graphics.h"
#include "sprite.h"
#include "trig.h"
-#include "rng.h"
+#include "random.h"
#include "decompress.h"
#include "task.h"
#include "sound.h"
-#include "songs.h"
+#include "constants/songs.h"
#include "palette.h"
// this file's functions
@@ -112,18 +112,18 @@ static void SpriteCB_PreEvoSparkleSet1(struct Sprite* sprite)
{
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++;
+ sprite->pos1.y = 88 - (sprite->data[7] * sprite->data[7]) / 80;
+ sprite->pos2.y = Sin((u8)(sprite->data[6]), sprite->data[5]) / 4;
+ sprite->pos2.x = Cos((u8)(sprite->data[6]), sprite->data[5]);
+ sprite->data[6] += 4;
+ if (sprite->data[7] & 1)
+ sprite->data[5]--;
+ sprite->data[7]++;
if (sprite->pos2.y > 0)
sprite->subpriority = 1;
else
sprite->subpriority = 20;
- matrixNum = sprite->data5 / 4 + 20;
+ matrixNum = sprite->data[5] / 4 + 20;
if (matrixNum > 31)
matrixNum = 31;
sprite->oam.matrixNum = matrixNum;
@@ -137,9 +137,9 @@ 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].data[5] = 48;
+ gSprites[spriteID].data[6] = arg0;
+ gSprites[spriteID].data[7] = 0;
gSprites[spriteID].oam.affineMode = 1;
gSprites[spriteID].oam.matrixNum = 31;
gSprites[spriteID].callback = SpriteCB_PreEvoSparkleSet1;
@@ -150,11 +150,11 @@ 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++;
+ sprite->pos1.y = 8 + (sprite->data[7] * sprite->data[7]) / 5;
+ sprite->pos2.y = Sin((u8)(sprite->data[6]), sprite->data[5]) / 4;
+ sprite->pos2.x = Cos((u8)(sprite->data[6]), sprite->data[5]);
+ sprite->data[5] = 8 + Sin((u8)(sprite->data[7] * 4), 40);
+ sprite->data[7]++;
}
else
DestroySprite(sprite);
@@ -165,9 +165,9 @@ 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].data[5] = 8;
+ gSprites[spriteID].data[6] = arg0;
+ gSprites[spriteID].data[7] = 0;
gSprites[spriteID].oam.affineMode = 1;
gSprites[spriteID].oam.matrixNum = 25;
gSprites[spriteID].subpriority = 1;
@@ -177,12 +177,12 @@ static void CreatePreEvoSparkleSet2(u8 arg0)
static void SpriteCB_PostEvoSparkleSet1(struct Sprite* sprite)
{
- if (sprite->data5 > 8)
+ if (sprite->data[5] > 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;
+ sprite->pos2.y = Sin((u8)(sprite->data[6]), sprite->data[5]);
+ sprite->pos2.x = Cos((u8)(sprite->data[6]), sprite->data[5]);
+ sprite->data[5] -= sprite->data[3];
+ sprite->data[6] += 4;
}
else
DestroySprite(sprite);
@@ -193,10 +193,10 @@ 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].data[3] = arg1;
+ gSprites[spriteID].data[5] = 120;
+ gSprites[spriteID].data[6] = arg0;
+ gSprites[spriteID].data[7] = 0;
gSprites[spriteID].oam.affineMode = 1;
gSprites[spriteID].oam.matrixNum = 31;
gSprites[spriteID].subpriority = 1;
@@ -206,29 +206,29 @@ static void CreatePostEvoSparkleSet1(u8 arg0, u8 arg1)
static void SpriteCB_PostEvoSparkleSet2(struct Sprite* sprite)
{
- if (!(sprite->data7 & 3))
+ if (!(sprite->data[7] & 3))
sprite->pos1.y++;
- if (sprite->data6 < 128)
+ if (sprite->data[6] < 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->pos2.y = -Sin((u8)(sprite->data[6]), sprite->data[5]);
+ sprite->pos1.x = 120 + (sprite->data[3] * sprite->data[7]) / 3;
+ sprite->data[6]++;
+ matrixNum = 31 - (sprite->data[6] * 12 / 128);
+ if (sprite->data[6] > 64)
sprite->subpriority = 1;
else
{
sprite->invisible = 0;
sprite->subpriority = 20;
- if (sprite->data6 > 112 && sprite->data6 & 1)
+ if (sprite->data[6] > 112 && sprite->data[6] & 1)
sprite->invisible = 1;
}
if (matrixNum < 20)
matrixNum = 20;
sprite->oam.matrixNum = matrixNum;
- sprite->data7++;
+ sprite->data[7]++;
}
else
DestroySprite(sprite);
@@ -239,9 +239,9 @@ 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].data[3] = 3 - (Random() % 7);
+ gSprites[spriteID].data[5] = 48 + (Random() & 0x3F);
+ gSprites[spriteID].data[7] = 0;
gSprites[spriteID].oam.affineMode = 1;
gSprites[spriteID].oam.matrixNum = 31;
gSprites[spriteID].subpriority = 20;
diff --git a/src/evolution_scene.c b/src/evolution_scene.c
index 68731a14a..2b88fec3a 100644
--- a/src/evolution_scene.c
+++ b/src/evolution_scene.c
@@ -16,11 +16,12 @@
#include "m4a.h"
#include "menu.h"
#include "pokedex.h"
-#include "species.h"
+#include "constants/species.h"
#include "sound.h"
-#include "songs.h"
+#include "constants/songs.h"
#include "overworld.h"
#include "battle_message.h"
+#include "battle_string_ids.h"
#include "gpu_regs.h"
#include "bg.h"
#include "link.h"
@@ -51,6 +52,7 @@ extern u8 gBattleTerrain;
extern struct SpriteTemplate gUnknown_0202499C;
extern bool8 gAffineAnimsDisabled;
extern u16 gMoveToLearn;
+extern const u8 gSpeciesNames[][11];
extern u8 gBattleCommunication[];
#define sEvoCursorPos gBattleCommunication[1] // when learning a new move
@@ -771,7 +773,7 @@ static void Task_EvolutionScene(u8 taskID)
{
BufferMoveToLearnIntoBattleTextBuff2();
PlayFanfare(BGM_FANFA1);
- BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[3]);
+ BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_PKMNLEARNEDMOVE - BATTLESTRINGS_ID_ADDER]);
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
gTasks[taskID].tLearnsFirstMove = 0x40; // re-used as a counter
gTasks[taskID].tState++;
@@ -788,7 +790,7 @@ static void Task_EvolutionScene(u8 taskID)
if (!IsTextPrinterActive(0) && !IsSEPlaying())
{
BufferMoveToLearnIntoBattleTextBuff2();
- BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[4]);
+ BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE1 - BATTLESTRINGS_ID_ADDER]);
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
gTasks[taskID].tLearnMoveState++;
}
@@ -796,7 +798,7 @@ static void Task_EvolutionScene(u8 taskID)
case 1:
if (!IsTextPrinterActive(0) && !IsSEPlaying())
{
- BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[5]);
+ BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE2 - BATTLESTRINGS_ID_ADDER]);
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
gTasks[taskID].tLearnMoveState++;
}
@@ -804,7 +806,7 @@ static void Task_EvolutionScene(u8 taskID)
case 2:
if (!IsTextPrinterActive(0) && !IsSEPlaying())
{
- BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[6]);
+ BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE3 - BATTLESTRINGS_ID_ADDER]);
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
gTasks[taskID].tData7 = 5;
gTasks[taskID].tData8 = 10;
@@ -881,7 +883,7 @@ static void Task_EvolutionScene(u8 taskID)
u16 move = GetMonData(mon, var + MON_DATA_MOVE1);
if (IsHMMove2(move))
{
- BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[307]);
+ BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_HMMOVESCANTBEFORGOTTEN - BATTLESTRINGS_ID_ADDER]);
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
gTasks[taskID].tLearnMoveState = 12;
}
@@ -897,14 +899,14 @@ static void Task_EvolutionScene(u8 taskID)
}
break;
case 7:
- BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[207]);
+ BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_123POOF - BATTLESTRINGS_ID_ADDER]);
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
gTasks[taskID].tLearnMoveState++;
break;
case 8:
if (!IsTextPrinterActive(0) && !IsSEPlaying())
{
- BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[7]);
+ BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_PKMNFORGOTMOVE - BATTLESTRINGS_ID_ADDER]);
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
gTasks[taskID].tLearnMoveState++;
}
@@ -912,20 +914,20 @@ static void Task_EvolutionScene(u8 taskID)
case 9:
if (!IsTextPrinterActive(0) && !IsSEPlaying())
{
- BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[208]);
+ BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_ANDELLIPSIS - BATTLESTRINGS_ID_ADDER]);
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
gTasks[taskID].tState = 20;
}
break;
case 10:
- BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[8]);
+ BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_STOPLEARNINGMOVE - BATTLESTRINGS_ID_ADDER]);
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
gTasks[taskID].tData7 = 11;
gTasks[taskID].tData8 = 0;
gTasks[taskID].tLearnMoveState = 3;
break;
case 11:
- BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[9]);
+ BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_DIDNOTLEARNMOVE - BATTLESTRINGS_ID_ADDER]);
BattleHandleAddTextPrinter(gDisplayedStringBattle, 0);
gTasks[taskID].tState = 15;
break;
@@ -1116,7 +1118,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
{
BufferMoveToLearnIntoBattleTextBuff2();
PlayFanfare(BGM_FANFA1);
- BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[3]);
+ BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_PKMNLEARNEDMOVE - BATTLESTRINGS_ID_ADDER]);
sub_807F1A8(0, gDisplayedStringBattle, 1);
gTasks[taskID].tLearnsFirstMove = 0x40; // re-used as a counter
gTasks[taskID].tState++;
@@ -1133,7 +1135,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
if (!IsTextPrinterActive(0) && !IsSEPlaying())
{
BufferMoveToLearnIntoBattleTextBuff2();
- BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[4]);
+ BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE1 - BATTLESTRINGS_ID_ADDER]);
sub_807F1A8(0, gDisplayedStringBattle, 1);
gTasks[taskID].tLearnMoveState++;
}
@@ -1141,7 +1143,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
case 1:
if (!IsTextPrinterActive(0) && !IsSEPlaying())
{
- BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[5]);
+ BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE2 - BATTLESTRINGS_ID_ADDER]);
sub_807F1A8(0, gDisplayedStringBattle, 1);
gTasks[taskID].tLearnMoveState++;
}
@@ -1149,7 +1151,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
case 2:
if (!IsTextPrinterActive(0) && !IsSEPlaying())
{
- BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[6]);
+ BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE3 - BATTLESTRINGS_ID_ADDER]);
sub_807F1A8(0, gDisplayedStringBattle, 1);
gTasks[taskID].tData7 = 5;
gTasks[taskID].tData8 = 9;
@@ -1166,11 +1168,11 @@ static void Task_TradeEvolutionScene(u8 taskID)
}
break;
case 4:
- switch (sub_8198C58())
+ switch (ProcessMenuInputNoWrap_())
{
case 0:
sEvoCursorPos = 0;
- BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[292]);
+ BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_EMPTYSTRING3 - BATTLESTRINGS_ID_ADDER]);
sub_807F1A8(0, gDisplayedStringBattle, 1);
gTasks[taskID].tLearnMoveState = gTasks[taskID].tData7;
if (gTasks[taskID].tLearnMoveState == 5)
@@ -1179,7 +1181,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
case 1:
case -1:
sEvoCursorPos = 1;
- BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[292]);
+ BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_EMPTYSTRING3 - BATTLESTRINGS_ID_ADDER]);
sub_807F1A8(0, gDisplayedStringBattle, 1);
gTasks[taskID].tLearnMoveState = gTasks[taskID].tData8;
break;
@@ -1215,7 +1217,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
u16 move = GetMonData(mon, var + MON_DATA_MOVE1);
if (IsHMMove2(move))
{
- BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[307]);
+ BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_HMMOVESCANTBEFORGOTTEN - BATTLESTRINGS_ID_ADDER]);
sub_807F1A8(0, gDisplayedStringBattle, 1);
gTasks[taskID].tLearnMoveState = 11;
}
@@ -1225,7 +1227,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
RemoveMonPPBonus(mon, var);
SetMonMoveSlot(mon, gMoveToLearn, var);
- BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[207]);
+ BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_123POOF - BATTLESTRINGS_ID_ADDER]);
sub_807F1A8(0, gDisplayedStringBattle, 1);
gTasks[taskID].tLearnMoveState++;
}
@@ -1235,7 +1237,7 @@ static void Task_TradeEvolutionScene(u8 taskID)
case 7:
if (!IsTextPrinterActive(0) && !IsSEPlaying())
{
- BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[7]);
+ BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_PKMNFORGOTMOVE - BATTLESTRINGS_ID_ADDER]);
sub_807F1A8(0, gDisplayedStringBattle, 1);
gTasks[taskID].tLearnMoveState++;
}
@@ -1243,20 +1245,20 @@ static void Task_TradeEvolutionScene(u8 taskID)
case 8:
if (!IsTextPrinterActive(0) && !IsSEPlaying())
{
- BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[208]);
+ BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_ANDELLIPSIS - BATTLESTRINGS_ID_ADDER]);
sub_807F1A8(0, gDisplayedStringBattle, 1);
gTasks[taskID].tState = 18;
}
break;
case 9:
- BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[8]);
+ BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_STOPLEARNINGMOVE - BATTLESTRINGS_ID_ADDER]);
sub_807F1A8(0, gDisplayedStringBattle, 1);
gTasks[taskID].tData7 = 10;
gTasks[taskID].tData8 = 0;
gTasks[taskID].tLearnMoveState = 3;
break;
case 10:
- BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[9]);
+ BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_DIDNOTLEARNMOVE - BATTLESTRINGS_ID_ADDER]);
sub_807F1A8(0, gDisplayedStringBattle, 1);
gTasks[taskID].tState = 13;
break;
diff --git a/src/field_map_obj.c b/src/field_map_obj.c
index dfdeb63a3..6a99890a4 100755
--- a/src/field_map_obj.c
+++ b/src/field_map_obj.c
@@ -4,7 +4,7 @@
#include "malloc.h"
#include "sprite.h"
#include "overworld.h"
-#include "rng.h"
+#include "random.h"
#include "event_scripts.h"
#include "berry.h"
#include "palette.h"
@@ -30,7 +30,7 @@
bool8 FieldObjectCB2_##name(struct MapObject *, struct Sprite *);\
void FieldObjectCB_##name(struct Sprite *sprite)\
{\
- FieldObjectStep(&gMapObjects[sprite->data0], sprite, FieldObjectCB2_##name);\
+ FieldObjectStep(&gMapObjects[sprite->data[0]], sprite, FieldObjectCB2_##name);\
}\
bool8 FieldObjectCB2_##name(struct MapObject *mapObject, struct Sprite *sprite)\
{\
@@ -42,11 +42,11 @@ extern bool8 (*const (table)[])(struct MapObject *, struct Sprite *);\
bool8 FieldObjectCB2_##name(struct MapObject *, struct Sprite *);\
void FieldObjectCB_##name(struct Sprite *sprite)\
{\
- FieldObjectStep(&gMapObjects[sprite->data0], sprite, FieldObjectCB2_##name);\
+ FieldObjectStep(&gMapObjects[sprite->data[0]], sprite, FieldObjectCB2_##name);\
}\
bool8 FieldObjectCB2_##name(struct MapObject *mapObject, struct Sprite *sprite)\
{\
- return (table)[sprite->data1](mapObject, sprite);\
+ return (table)[sprite->data[1]](mapObject, sprite);\
}
#define field_object_path(idx, table, sub, path, catch, coord)\
@@ -655,7 +655,7 @@ static u8 SpawnFieldObjectInternal(struct MapObjectTemplate *mapObjectTemplate,
sprite->pos1.y += 16 + sprite->centerToCornerVecY;
sprite->oam.paletteNum = paletteSlot;
sprite->coordOffsetEnabled = TRUE;
- sprite->data0 = mapObjectId;
+ sprite->data[0] = mapObjectId;
mapObject->spriteId = spriteId;
mapObject->mapobj_bit_12 = graphicsInfo->inanimate;
if (!mapObject->mapobj_bit_12)
@@ -813,8 +813,8 @@ u8 sprite_new(u8 graphicsId, u8 a1, s16 x, s16 y, u8 z, u8 direction)
sprite->oam.paletteNum -= 16;
}
sprite->coordOffsetEnabled = TRUE;
- sprite->data0 = a1;
- sprite->data1 = z;
+ sprite->data[0] = a1;
+ sprite->data[1] = z;
if (graphicsInfo->paletteSlot == 10)
{
npc_load_two_palettes__and_record(graphicsInfo->paletteTag1, graphicsInfo->paletteSlot);
@@ -1003,7 +1003,7 @@ static void sub_808E1B8(u8 mapObjectId, s16 x, s16 y)
}
sprite->oam.paletteNum = paletteSlot;
sprite->coordOffsetEnabled = TRUE;
- sprite->data0 = mapObjectId;
+ sprite->data[0] = mapObjectId;
mapObject->spriteId = spriteId;
if (!mapObject->mapobj_bit_12 && mapObject->animPattern != 0x0b)
{
@@ -1463,7 +1463,7 @@ u8 AddCameraObject(u8 linkedSpriteId)
spriteId = CreateSprite(&gUnknown_084975D4, 0, 0, 4);
gSprites[spriteId].invisible = TRUE;
- gSprites[spriteId].data0 = linkedSpriteId;
+ gSprites[spriteId].data[0] = linkedSpriteId;
return spriteId;
}
@@ -1472,15 +1472,15 @@ void ObjectCB_CameraObject(struct Sprite *sprite)
void (*callbacks[ARRAY_COUNT(gUnknown_084975EC)])(struct Sprite *);
memcpy(callbacks, gUnknown_084975EC, sizeof gUnknown_084975EC);
- callbacks[sprite->data1](sprite);
+ callbacks[sprite->data[1]](sprite);
}
/*static*/ void CameraObject_0(struct Sprite *sprite)
{
- sprite->pos1.x = gSprites[sprite->data0].pos1.x;
- sprite->pos1.y = gSprites[sprite->data0].pos1.y;
+ sprite->pos1.x = gSprites[sprite->data[0]].pos1.x;
+ sprite->pos1.y = gSprites[sprite->data[0]].pos1.y;
sprite->invisible = TRUE;
- sprite->data1 = 1;
+ sprite->data[1] = 1;
CameraObject_1(sprite);
}
@@ -1489,20 +1489,20 @@ void ObjectCB_CameraObject(struct Sprite *sprite)
s16 x;
s16 y;
- y = gSprites[sprite->data0].pos1.y;
- x = gSprites[sprite->data0].pos1.x;
- sprite->data2 = x - sprite->pos1.x;
- sprite->data3 = y - sprite->pos1.y;
+ y = gSprites[sprite->data[0]].pos1.y;
+ x = gSprites[sprite->data[0]].pos1.x;
+ sprite->data[2] = x - sprite->pos1.x;
+ sprite->data[3] = y - sprite->pos1.y;
sprite->pos1.x = x;
sprite->pos1.y = y;
}
/*static*/ void CameraObject_2(struct Sprite *sprite)
{
- sprite->pos1.x = gSprites[sprite->data0].pos1.x;
- sprite->pos1.y = gSprites[sprite->data0].pos1.y;
- sprite->data2 = 0;
- sprite->data3 = 0;
+ sprite->pos1.x = gSprites[sprite->data[0]].pos1.x;
+ sprite->pos1.y = gSprites[sprite->data[0]].pos1.y;
+ sprite->data[2] = 0;
+ sprite->data[3] = 0;
}
static struct Sprite *FindCameraObject(void)
@@ -1526,7 +1526,7 @@ void CameraObjectReset1(void)
cameraObject = FindCameraObject();
if (cameraObject != NULL)
{
- cameraObject->data1 = 0;
+ cameraObject->data[1] = 0;
cameraObject->callback(cameraObject);
}
}
@@ -1538,7 +1538,7 @@ void CameraObjectSetFollowedObjectId(u8 objectId)
cameraObject = FindCameraObject();
if (cameraObject != NULL)
{
- cameraObject->data0 = objectId;
+ cameraObject->data[0] = objectId;
CameraObjectReset1();
}
}
@@ -1552,12 +1552,12 @@ u8 CameraObjectGetFollowedObjectId(void)
{
return MAX_SPRITES;
}
- return cameraObject->data0;
+ return cameraObject->data[0];
}
void CameraObjectReset2(void)
{
- FindCameraObject()->data1 = 2;
+ FindCameraObject()->data[1] = 2;
}
u8 CopySprite(struct Sprite *sprite, s16 x, s16 y, u8 subpriority)
@@ -1818,14 +1818,14 @@ field_object_step(GoRandomDirections, gUnknown_0850D6F4)
bool8 sub_808F44C(struct MapObject *mapObject, struct Sprite *sprite)
{
npc_reset(mapObject, sprite);
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
bool8 sub_808F460(struct MapObject *mapObject, struct Sprite *sprite)
{
FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
- sprite->data1 = 2;
+ sprite->data[1] = 2;
return TRUE;
}
@@ -1836,7 +1836,7 @@ bool8 sub_808F48C(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
SetFieldObjectStepTimer(sprite, gUnknown_0850D6DC[Random() & 0x03]);
- sprite->data1 = 3;
+ sprite->data[1] = 3;
return TRUE;
}
@@ -1844,7 +1844,7 @@ bool8 sub_808F4C8(struct MapObject *mapObject, struct Sprite *sprite)
{
if (RunFieldObjectStepTimer(sprite))
{
- sprite->data1 = 4;
+ sprite->data[1] = 4;
return TRUE;
}
return FALSE;
@@ -1858,10 +1858,10 @@ bool8 sub_808F4E8(struct MapObject *mapObject, struct Sprite *sprite)
memcpy(directions, gUnknown_0850D710, sizeof directions);
chosenDirection = directions[Random() & 0x03];
FieldObjectSetDirection(mapObject, chosenDirection);
- sprite->data1 = 5;
+ sprite->data[1] = 5;
if (npc_block_way__next_tile(mapObject, chosenDirection))
{
- sprite->data1 = 1;
+ sprite->data[1] = 1;
}
return TRUE;
}
@@ -1870,7 +1870,7 @@ bool8 sub_808F534(struct MapObject *mapObject, struct Sprite *sprite)
{
FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed0AnimId(mapObject->placeholder18));
mapObject->mapobj_bit_1 = TRUE;
- sprite->data1 = 6;
+ sprite->data[1] = 6;
return TRUE;
}
@@ -1879,7 +1879,7 @@ bool8 sub_808F564(struct MapObject *mapObject, struct Sprite *sprite)
if (FieldObjectExecRegularAnim(mapObject, sprite))
{
mapObject->mapobj_bit_1 = FALSE;
- sprite->data1 = 1;
+ sprite->data[1] = 1;
}
return FALSE;
}
@@ -2140,14 +2140,14 @@ field_object_step(LookRandomDirections, gUnknown_0850D740)
bool8 sub_808F988(struct MapObject *mapObject, struct Sprite *sprite)
{
npc_reset(mapObject, sprite);
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
bool8 sub_808F99C(struct MapObject *mapObject, struct Sprite *sprite)
{
FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
- sprite->data1 = 2;
+ sprite->data[1] = 2;
return TRUE;
}
@@ -2157,7 +2157,7 @@ bool8 sub_808F9C8(struct MapObject *mapObject, struct Sprite *sprite)
{
SetFieldObjectStepTimer(sprite, gUnknown_0850D6DC[Random() & 0x03]);
mapObject->mapobj_bit_1 = FALSE;
- sprite->data1 = 3;
+ sprite->data[1] = 3;
}
return FALSE;
}
@@ -2166,7 +2166,7 @@ bool8 sub_808FA0C(struct MapObject *mapObject, struct Sprite *sprite)
{
if (RunFieldObjectStepTimer(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
{
- sprite->data1 = 4;
+ sprite->data[1] = 4;
return TRUE;
}
return FALSE;
@@ -2184,7 +2184,7 @@ bool8 sub_808FA3C(struct MapObject *mapObject, struct Sprite *sprite)
direction = directions[Random() & 0x03];
}
FieldObjectSetDirection(mapObject, direction);
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
@@ -2193,14 +2193,14 @@ field_object_step(RandomlyGoNorthOrSouth, gUnknown_0850D754)
bool8 sub_808FAC8(struct MapObject *mapObject, struct Sprite *sprite)
{
npc_reset(mapObject, sprite);
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
bool8 sub_808FADC(struct MapObject *mapObject, struct Sprite *sprite)
{
FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
- sprite->data1 = 2;
+ sprite->data[1] = 2;
return TRUE;
}
@@ -2211,7 +2211,7 @@ bool8 sub_808FB08(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
SetFieldObjectStepTimer(sprite, gUnknown_0850D6DC[Random() & 0x03]);
- sprite->data1 = 3;
+ sprite->data[1] = 3;
return TRUE;
}
@@ -2219,7 +2219,7 @@ bool8 sub_808FB44(struct MapObject *mapObject, struct Sprite *sprite)
{
if (RunFieldObjectStepTimer(sprite))
{
- sprite->data1 = 4;
+ sprite->data[1] = 4;
return TRUE;
}
return FALSE;
@@ -2233,10 +2233,10 @@ bool8 sub_808FB64(struct MapObject *mapObject, struct Sprite *sprite)
memcpy(directions, gUnknown_0850D770, sizeof directions);
direction = directions[Random() & 0x01];
FieldObjectSetDirection(mapObject, direction);
- sprite->data1 = 5;
+ sprite->data[1] = 5;
if (npc_block_way__next_tile(mapObject, direction))
{
- sprite->data1 = 1;
+ sprite->data[1] = 1;
}
return TRUE;
}
@@ -2245,7 +2245,7 @@ bool8 sub_808FBB0(struct MapObject *mapObject, struct Sprite *sprite)
{
FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed0AnimId(mapObject->placeholder18));
mapObject->mapobj_bit_1 = TRUE;
- sprite->data1 = 6;
+ sprite->data[1] = 6;
return TRUE;
}
@@ -2254,7 +2254,7 @@ bool8 sub_808FBE0(struct MapObject *mapObject, struct Sprite *sprite)
if (FieldObjectExecRegularAnim(mapObject, sprite))
{
mapObject->mapobj_bit_1 = FALSE;
- sprite->data1 = 1;
+ sprite->data[1] = 1;
}
return FALSE;
}
@@ -2264,14 +2264,14 @@ field_object_step(RandomlyGoEastOrWest, gUnknown_0850D774)
bool8 sub_808FC4C(struct MapObject *mapObject, struct Sprite *sprite)
{
npc_reset(mapObject, sprite);
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
bool8 sub_808FC60(struct MapObject *mapObject, struct Sprite *sprite)
{
FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
- sprite->data1 = 2;
+ sprite->data[1] = 2;
return TRUE;
}
@@ -2282,7 +2282,7 @@ bool8 sub_808FC8C(struct MapObject *mapObject, struct Sprite *sprite)
return FALSE;
}
SetFieldObjectStepTimer(sprite, gUnknown_0850D6DC[Random() & 0x03]);
- sprite->data1 = 3;
+ sprite->data[1] = 3;
return TRUE;
}
@@ -2290,7 +2290,7 @@ bool8 sub_808FCC8(struct MapObject *mapObject, struct Sprite *sprite)
{
if (RunFieldObjectStepTimer(sprite))
{
- sprite->data1 = 4;
+ sprite->data[1] = 4;
return TRUE;
}
return FALSE;
@@ -2304,10 +2304,10 @@ bool8 sub_808FCE8(struct MapObject *mapObject, struct Sprite *sprite)
memcpy(directions, gUnknown_0850D790, sizeof directions);
direction = directions[Random() & 0x01];
FieldObjectSetDirection(mapObject, direction);
- sprite->data1 = 5;
+ sprite->data[1] = 5;
if (npc_block_way__next_tile(mapObject, direction))
{
- sprite->data1 = 1;
+ sprite->data[1] = 1;
}
return TRUE;
}
@@ -2316,7 +2316,7 @@ bool8 sub_808FD34(struct MapObject *mapObject, struct Sprite *sprite)
{
FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed0AnimId(mapObject->placeholder18));
mapObject->mapobj_bit_1 = TRUE;
- sprite->data1 = 6;
+ sprite->data[1] = 6;
return TRUE;
}
@@ -2325,7 +2325,7 @@ bool8 sub_808FD64(struct MapObject *mapObject, struct Sprite *sprite)
if (FieldObjectExecRegularAnim(mapObject, sprite))
{
mapObject->mapobj_bit_1 = FALSE;
- sprite->data1 = 1;
+ sprite->data[1] = 1;
}
return FALSE;
}
@@ -2336,7 +2336,7 @@ bool8 sub_808FDD0(struct MapObject *mapObject, struct Sprite *sprite)
{
npc_reset(mapObject, sprite);
FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
@@ -2344,7 +2344,7 @@ bool8 sub_808FDFC(struct MapObject *mapObject, struct Sprite *sprite)
{
if (FieldObjectExecRegularAnim(mapObject, sprite))
{
- sprite->data1 = 2;
+ sprite->data[1] = 2;
return TRUE;
}
return FALSE;
@@ -2362,17 +2362,17 @@ void FieldObjectCB_BerryTree(struct Sprite *sprite)
{
struct MapObject *mapObject;
- mapObject = &gMapObjects[sprite->data0];
- if (!(sprite->data7 & 0x0001))
+ mapObject = &gMapObjects[sprite->data[0]];
+ if (!(sprite->data[7] & 0x0001))
{
get_berry_tree_graphics(mapObject, sprite);
- sprite->data7 |= 0x0001;
+ sprite->data[7] |= 0x0001;
}
FieldObjectStep(mapObject, sprite, FieldObjectCB2_BerryTree);
}
static bool8 FieldObjectCB2_BerryTree(struct MapObject *mapObject, struct Sprite *sprite)
{
- return gUnknown_0850D7A0[sprite->data1](mapObject, sprite);
+ return gUnknown_0850D7A0[sprite->data[1]](mapObject, sprite);
}
bool8 do_berry_tree_growth_sparkle_1 (struct MapObject *mapObject, struct Sprite *sprite)
@@ -2385,7 +2385,7 @@ bool8 do_berry_tree_growth_sparkle_1 (struct MapObject *mapObject, struct Sprite
berryStage = GetStageByBerryTreeId(mapObject->trainerRange_berryTreeId);
if (berryStage == 0)
{
- if (!(sprite->data7 & 0x0004) && sprite->animNum == 4)
+ if (!(sprite->data[7] & 0x0004) && sprite->animNum == 4)
{
gFieldEffectArguments[0] = mapObject->coords2.x;
gFieldEffectArguments[1] = mapObject->coords2.y;
@@ -2401,12 +2401,12 @@ bool8 do_berry_tree_growth_sparkle_1 (struct MapObject *mapObject, struct Sprite
berryStage --;
if (sprite->animNum != berryStage)
{
- sprite->data1 = 2;
+ sprite->data[1] = 2;
return TRUE;
}
get_berry_tree_graphics(mapObject, sprite);
FieldObjectSetRegularAnim(mapObject, sprite, 0x39);
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
@@ -2414,7 +2414,7 @@ bool8 sub_808FF48 (struct MapObject *mapObject, struct Sprite *sprite)
{
if (FieldObjectExecRegularAnim(mapObject, sprite))
{
- sprite->data1 = 0;
+ sprite->data[1] = 0;
return TRUE;
}
return FALSE;
@@ -2423,9 +2423,9 @@ bool8 sub_808FF48 (struct MapObject *mapObject, struct Sprite *sprite)
bool8 do_berry_tree_growth_sparkle_2 (struct MapObject *mapObject, struct Sprite *sprite)
{
mapObject->mapobj_bit_1 = TRUE;
- sprite->data1 = 3;
- sprite->data2 = 0;
- sprite->data7 |= 0x0002;
+ sprite->data[1] = 3;
+ sprite->data[2] = 0;
+ sprite->data[7] |= 0x0002;
gFieldEffectArguments[0] = mapObject->coords2.x;
gFieldEffectArguments[1] = mapObject->coords2.y;
gFieldEffectArguments[2] = sprite->subpriority - 1;
@@ -2436,14 +2436,14 @@ bool8 do_berry_tree_growth_sparkle_2 (struct MapObject *mapObject, struct Sprite
bool8 sub_808FFB4 (struct MapObject *mapObject, struct Sprite *sprite)
{
- sprite->data2 ++;
- mapObject->mapobj_bit_13 = (sprite->data2 & 0x02) >> 1;
+ sprite->data[2] ++;
+ mapObject->mapobj_bit_13 = (sprite->data[2] & 0x02) >> 1;
sprite->animPaused = TRUE;
- if (sprite->data2 > 64)
+ if (sprite->data[2] > 64)
{
get_berry_tree_graphics(mapObject, sprite);
- sprite->data1 = 4;
- sprite->data2 = 0;
+ sprite->data[1] = 4;
+ sprite->data[2] = 0;
return TRUE;
}
return FALSE;
@@ -2451,13 +2451,13 @@ bool8 sub_808FFB4 (struct MapObject *mapObject, struct Sprite *sprite)
bool8 sub_8090004 (struct MapObject *mapObject, struct Sprite *sprite)
{
- sprite->data2 ++;
- mapObject->mapobj_bit_13 = (sprite->data2 & 0x02) >> 1;
+ sprite->data[2] ++;
+ mapObject->mapobj_bit_13 = (sprite->data[2] & 0x02) >> 1;
sprite->animPaused = TRUE;
- if (sprite->data2 > 64)
+ if (sprite->data[2] > 64)
{
- sprite->data1 = 0;
- sprite->data7 &= ~0x0002;
+ sprite->data[1] = 0;
+ sprite->data[7] &= ~0x0002;
return TRUE;
}
return FALSE;
@@ -2468,14 +2468,14 @@ field_object_step(RandomlyLookNorthOrSouth, gUnknown_0850D7B4)
bool8 sub_8090094 (struct MapObject *mapObject, struct Sprite *sprite)
{
npc_reset(mapObject, sprite);
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
bool8 sub_80900A8 (struct MapObject *mapObject, struct Sprite *sprite)
{
FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
- sprite->data1 = 2;
+ sprite->data[1] = 2;
return TRUE;
}
@@ -2485,7 +2485,7 @@ bool8 sub_80900D4 (struct MapObject *mapObject, struct Sprite *sprite)
{
SetFieldObjectStepTimer(sprite, gUnknown_0850D6DC[Random() & 0x03]);
mapObject->mapobj_bit_1 = FALSE;
- sprite->data1 = 3;
+ sprite->data[1] = 3;
}
return FALSE;
}
@@ -2494,7 +2494,7 @@ bool8 sub_8090118 (struct MapObject *mapObject, struct Sprite *sprite)
{
if (RunFieldObjectStepTimer(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
{
- sprite->data1 = 4;
+ sprite->data[1] = 4;
return TRUE;
}
return FALSE;
@@ -2512,7 +2512,7 @@ bool8 sub_8090148 (struct MapObject *mapObject, struct Sprite *sprite)
direction = directions[Random() & 0x01];
}
FieldObjectSetDirection(mapObject, direction);
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
@@ -2521,14 +2521,14 @@ field_object_step(RandomlyLookEastOrWest, gUnknown_0850D7C8)
bool8 sub_80901D4 (struct MapObject *mapObject, struct Sprite *sprite)
{
npc_reset(mapObject, sprite);
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
bool8 sub_80901E8 (struct MapObject *mapObject, struct Sprite *sprite)
{
FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
- sprite->data1 = 2;
+ sprite->data[1] = 2;
return TRUE;
}
@@ -2538,7 +2538,7 @@ bool8 sub_8090214 (struct MapObject *mapObject, struct Sprite *sprite)
{
SetFieldObjectStepTimer(sprite, gUnknown_0850D6DC[Random() & 0x03]);
mapObject->mapobj_bit_1 = FALSE;
- sprite->data1 = 3;
+ sprite->data[1] = 3;
}
return FALSE;
}
@@ -2547,7 +2547,7 @@ bool8 sub_8090258 (struct MapObject *mapObject, struct Sprite *sprite)
{
if (RunFieldObjectStepTimer(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
{
- sprite->data1 = 4;
+ sprite->data[1] = 4;
return TRUE;
}
return FALSE;
@@ -2565,7 +2565,7 @@ bool8 sub_8090288 (struct MapObject *mapObject, struct Sprite *sprite)
direction = directions[Random() & 0x01];
}
FieldObjectSetDirection(mapObject, direction);
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
@@ -2574,14 +2574,14 @@ field_object_step(RandomlyLookNorthOrWest, gUnknown_0850D7DC)
bool8 sub_8090314 (struct MapObject *mapObject, struct Sprite *sprite)
{
npc_reset(mapObject, sprite);
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
bool8 sub_8090328 (struct MapObject *mapObject, struct Sprite *sprite)
{
FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
- sprite->data1 = 2;
+ sprite->data[1] = 2;
return TRUE;
}
@@ -2591,7 +2591,7 @@ bool8 sub_8090354 (struct MapObject *mapObject, struct Sprite *sprite)
{
SetFieldObjectStepTimer(sprite, gUnknown_0850D6EC[Random() & 0x03]);
mapObject->mapobj_bit_1 = FALSE;
- sprite->data1 = 3;
+ sprite->data[1] = 3;
}
return FALSE;
}
@@ -2600,7 +2600,7 @@ bool8 sub_8090398 (struct MapObject *mapObject, struct Sprite *sprite)
{
if (RunFieldObjectStepTimer(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
{
- sprite->data1 = 4;
+ sprite->data[1] = 4;
return TRUE;
}
return FALSE;
@@ -2618,7 +2618,7 @@ bool8 sub_80903C8 (struct MapObject *mapObject, struct Sprite *sprite)
direction = directions[Random() & 0x01];
}
FieldObjectSetDirection(mapObject, direction);
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
@@ -2627,14 +2627,14 @@ field_object_step(RandomlyLookNorthOrEast, gUnknown_0850D7F4)
bool8 sub_8090454 (struct MapObject *mapObject, struct Sprite *sprite)
{
npc_reset(mapObject, sprite);
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
bool8 sub_8090468 (struct MapObject *mapObject, struct Sprite *sprite)
{
FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
- sprite->data1 = 2;
+ sprite->data[1] = 2;
return TRUE;
}
@@ -2644,7 +2644,7 @@ bool8 sub_8090494 (struct MapObject *mapObject, struct Sprite *sprite)
{
SetFieldObjectStepTimer(sprite, gUnknown_0850D6EC[Random() & 0x03]);
mapObject->mapobj_bit_1 = FALSE;
- sprite->data1 = 3;
+ sprite->data[1] = 3;
}
return FALSE;
}
@@ -2653,7 +2653,7 @@ bool8 sub_80904D8 (struct MapObject *mapObject, struct Sprite *sprite)
{
if (RunFieldObjectStepTimer(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
{
- sprite->data1 = 4;
+ sprite->data[1] = 4;
return TRUE;
}
return FALSE;
@@ -2671,7 +2671,7 @@ bool8 sub_8090508 (struct MapObject *mapObject, struct Sprite *sprite)
direction = directions[Random() & 0x01];
}
FieldObjectSetDirection(mapObject, direction);
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
@@ -2680,14 +2680,14 @@ field_object_step(RandomlyLookSouthOrWest, gUnknown_0850D80C)
bool8 sub_8090594 (struct MapObject *mapObject, struct Sprite *sprite)
{
npc_reset(mapObject, sprite);
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
bool8 sub_80905A8 (struct MapObject *mapObject, struct Sprite *sprite)
{
FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
- sprite->data1 = 2;
+ sprite->data[1] = 2;
return TRUE;
}
@@ -2697,7 +2697,7 @@ bool8 sub_80905D4 (struct MapObject *mapObject, struct Sprite *sprite)
{
SetFieldObjectStepTimer(sprite, gUnknown_0850D6EC[Random() & 0x03]);
mapObject->mapobj_bit_1 = FALSE;
- sprite->data1 = 3;
+ sprite->data[1] = 3;
}
return FALSE;
}
@@ -2706,7 +2706,7 @@ bool8 sub_8090618 (struct MapObject *mapObject, struct Sprite *sprite)
{
if (RunFieldObjectStepTimer(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
{
- sprite->data1 = 4;
+ sprite->data[1] = 4;
return TRUE;
}
return FALSE;
@@ -2724,7 +2724,7 @@ bool8 sub_8090648 (struct MapObject *mapObject, struct Sprite *sprite)
direction = directions[Random() & 0x01];
}
FieldObjectSetDirection(mapObject, direction);
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
@@ -2733,14 +2733,14 @@ field_object_step(RandomlyLookSouthOrEast, gUnknown_0850D824)
bool8 sub_80906D4 (struct MapObject *mapObject, struct Sprite *sprite)
{
npc_reset(mapObject, sprite);
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
bool8 sub_80906E8 (struct MapObject *mapObject, struct Sprite *sprite)
{
FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
- sprite->data1 = 2;
+ sprite->data[1] = 2;
return TRUE;
}
@@ -2750,7 +2750,7 @@ bool8 sub_8090714 (struct MapObject *mapObject, struct Sprite *sprite)
{
SetFieldObjectStepTimer(sprite, gUnknown_0850D6EC[Random() & 0x03]);
mapObject->mapobj_bit_1 = FALSE;
- sprite->data1 = 3;
+ sprite->data[1] = 3;
}
return FALSE;
}
@@ -2759,7 +2759,7 @@ bool8 sub_8090758 (struct MapObject *mapObject, struct Sprite *sprite)
{
if (RunFieldObjectStepTimer(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
{
- sprite->data1 = 4;
+ sprite->data[1] = 4;
return TRUE;
}
return FALSE;
@@ -2777,7 +2777,7 @@ bool8 sub_8090788 (struct MapObject *mapObject, struct Sprite *sprite)
direction = directions[Random() & 0x01];
}
FieldObjectSetDirection(mapObject, direction);
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
@@ -2786,14 +2786,14 @@ field_object_step(RandomlyLookNorthOrSouthOrWest, gUnknown_0850D83C)
bool8 sub_8090814 (struct MapObject *mapObject, struct Sprite *sprite)
{
npc_reset(mapObject, sprite);
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
bool8 sub_8090828 (struct MapObject *mapObject, struct Sprite *sprite)
{
FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
- sprite->data1 = 2;
+ sprite->data[1] = 2;
return TRUE;
}
@@ -2803,7 +2803,7 @@ bool8 sub_8090854 (struct MapObject *mapObject, struct Sprite *sprite)
{
SetFieldObjectStepTimer(sprite, gUnknown_0850D6EC[Random() & 0x03]);
mapObject->mapobj_bit_1 = FALSE;
- sprite->data1 = 3;
+ sprite->data[1] = 3;
}
return FALSE;
}
@@ -2812,7 +2812,7 @@ bool8 sub_8090898 (struct MapObject *mapObject, struct Sprite *sprite)
{
if (RunFieldObjectStepTimer(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
{
- sprite->data1 = 4;
+ sprite->data[1] = 4;
return TRUE;
}
return FALSE;
@@ -2830,7 +2830,7 @@ bool8 sub_80908C8 (struct MapObject *mapObject, struct Sprite *sprite)
direction = directions[Random() & 0x03];
}
FieldObjectSetDirection(mapObject, direction);
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
@@ -2839,14 +2839,14 @@ field_object_step(RandomlyLookNorthOrSouthOrEast, gUnknown_0850D854)
bool8 sub_8090954 (struct MapObject *mapObject, struct Sprite *sprite)
{
npc_reset(mapObject, sprite);
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
bool8 sub_8090968 (struct MapObject *mapObject, struct Sprite *sprite)
{
FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
- sprite->data1 = 2;
+ sprite->data[1] = 2;
return TRUE;
}
@@ -2856,7 +2856,7 @@ bool8 sub_8090994 (struct MapObject *mapObject, struct Sprite *sprite)
{
SetFieldObjectStepTimer(sprite, gUnknown_0850D6EC[Random() & 0x03]);
mapObject->mapobj_bit_1 = FALSE;
- sprite->data1 = 3;
+ sprite->data[1] = 3;
}
return FALSE;
}
@@ -2865,7 +2865,7 @@ bool8 sub_80909D8 (struct MapObject *mapObject, struct Sprite *sprite)
{
if (RunFieldObjectStepTimer(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
{
- sprite->data1 = 4;
+ sprite->data[1] = 4;
return TRUE;
}
return FALSE;
@@ -2883,7 +2883,7 @@ bool8 sub_8090A08 (struct MapObject *mapObject, struct Sprite *sprite)
direction = directions[Random() & 0x03];
}
FieldObjectSetDirection(mapObject, direction);
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
@@ -2892,14 +2892,14 @@ field_object_step(RandomlyLookNorthOrEastOrWest, gUnknown_0850D86C)
bool8 sub_8090A94 (struct MapObject *mapObject, struct Sprite *sprite)
{
npc_reset(mapObject, sprite);
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
bool8 sub_8090AA8 (struct MapObject *mapObject, struct Sprite *sprite)
{
FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
- sprite->data1 = 2;
+ sprite->data[1] = 2;
return TRUE;
}
@@ -2909,7 +2909,7 @@ bool8 sub_8090AD4 (struct MapObject *mapObject, struct Sprite *sprite)
{
SetFieldObjectStepTimer(sprite, gUnknown_0850D6EC[Random() & 0x03]);
mapObject->mapobj_bit_1 = FALSE;
- sprite->data1 = 3;
+ sprite->data[1] = 3;
}
return FALSE;
}
@@ -2918,7 +2918,7 @@ bool8 sub_8090B18 (struct MapObject *mapObject, struct Sprite *sprite)
{
if (RunFieldObjectStepTimer(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
{
- sprite->data1 = 4;
+ sprite->data[1] = 4;
return TRUE;
}
return FALSE;
@@ -2936,7 +2936,7 @@ bool8 sub_8090B48 (struct MapObject *mapObject, struct Sprite *sprite)
direction = directions[Random() & 0x03];
}
FieldObjectSetDirection(mapObject, direction);
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
@@ -2945,14 +2945,14 @@ field_object_step(RandomlyLookSouthOrEastOrWest, gUnknown_0850D884)
bool8 sub_8090BD4 (struct MapObject *mapObject, struct Sprite *sprite)
{
npc_reset(mapObject, sprite);
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
bool8 sub_8090BE8 (struct MapObject *mapObject, struct Sprite *sprite)
{
FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
- sprite->data1 = 2;
+ sprite->data[1] = 2;
return TRUE;
}
@@ -2962,7 +2962,7 @@ bool8 sub_8090C14 (struct MapObject *mapObject, struct Sprite *sprite)
{
SetFieldObjectStepTimer(sprite, gUnknown_0850D6EC[Random() & 0x03]);
mapObject->mapobj_bit_1 = FALSE;
- sprite->data1 = 3;
+ sprite->data[1] = 3;
}
return FALSE;
}
@@ -2971,7 +2971,7 @@ bool8 sub_8090C58 (struct MapObject *mapObject, struct Sprite *sprite)
{
if (RunFieldObjectStepTimer(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
{
- sprite->data1 = 4;
+ sprite->data[1] = 4;
return TRUE;
}
return FALSE;
@@ -2989,7 +2989,7 @@ bool8 sub_8090C88 (struct MapObject *mapObject, struct Sprite *sprite)
direction = directions[Random() & 0x03];
}
FieldObjectSetDirection(mapObject, direction);
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
@@ -2999,7 +2999,7 @@ bool8 sub_8090D14 (struct MapObject *mapObject, struct Sprite *sprite)
{
npc_reset(mapObject, sprite);
FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
@@ -3008,7 +3008,7 @@ bool8 sub_8090D40 (struct MapObject *mapObject, struct Sprite *sprite)
if (FieldObjectExecRegularAnim(mapObject, sprite))
{
SetFieldObjectStepTimer(sprite, 48);
- sprite->data1 = 2;
+ sprite->data[1] = 2;
}
return FALSE;
}
@@ -3017,7 +3017,7 @@ bool8 sub_8090D64 (struct MapObject *mapObject, struct Sprite *sprite)
{
if (RunFieldObjectStepTimer(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
{
- sprite->data1 = 3;
+ sprite->data[1] = 3;
}
return FALSE;
}
@@ -3034,7 +3034,7 @@ bool8 sub_8090D90 (struct MapObject *mapObject, struct Sprite *sprite)
direction = directions[mapObject->mapobj_unk_18];
}
FieldObjectSetDirection(mapObject, direction);
- sprite->data1 = 0;
+ sprite->data[1] = 0;
return TRUE;
}
@@ -3044,7 +3044,7 @@ bool8 sub_8090E18 (struct MapObject *mapObject, struct Sprite *sprite)
{
npc_reset(mapObject, sprite);
FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
@@ -3053,7 +3053,7 @@ bool8 sub_8090E44 (struct MapObject *mapObject, struct Sprite *sprite)
if (FieldObjectExecRegularAnim(mapObject, sprite))
{
SetFieldObjectStepTimer(sprite, 48);
- sprite->data1 = 2;
+ sprite->data[1] = 2;
}
return FALSE;
}
@@ -3062,7 +3062,7 @@ bool8 sub_8090E68 (struct MapObject *mapObject, struct Sprite *sprite)
{
if (RunFieldObjectStepTimer(sprite) || FieldObjectIsTrainerAndCloseToPlayer(mapObject))
{
- sprite->data1 = 3;
+ sprite->data[1] = 3;
}
return FALSE;
}
@@ -3079,7 +3079,7 @@ bool8 sub_8090E94 (struct MapObject *mapObject, struct Sprite *sprite)
direction = directions[mapObject->mapobj_unk_18];
}
FieldObjectSetDirection(mapObject, direction);
- sprite->data1 = 0;
+ sprite->data[1] = 0;
return TRUE;
}
@@ -3088,7 +3088,7 @@ field_object_step(AlternatelyGoInOppositeDirections, gUnknown_0850D8CC)
bool8 sub_8090F1C (struct MapObject *mapObject, struct Sprite *sprite)
{
npc_reset(mapObject, sprite);
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
@@ -3102,7 +3102,7 @@ bool8 sub_8090F30 (struct MapObject *mapObject, struct Sprite *sprite)
direction = GetOppositeDirection(direction);
}
FieldObjectSetDirection(mapObject, direction);
- sprite->data1 = 2;
+ sprite->data[1] = 2;
return TRUE;
}
@@ -3131,7 +3131,7 @@ bool8 sub_8090F68 (struct MapObject *mapObject, struct Sprite *sprite)
}
FieldObjectSetRegularAnim(mapObject, sprite, animId);
mapObject->mapobj_bit_1 = TRUE;
- sprite->data1 = 3;
+ sprite->data[1] = 3;
return TRUE;
}
@@ -3140,7 +3140,7 @@ bool8 sub_8091020 (struct MapObject *mapObject, struct Sprite *sprite)
if (FieldObjectExecRegularAnim(mapObject, sprite))
{
mapObject->mapobj_bit_1 = FALSE;
- sprite->data1 = 1;
+ sprite->data[1] = 1;
}
return FALSE;
}
@@ -3148,7 +3148,7 @@ bool8 sub_8091020 (struct MapObject *mapObject, struct Sprite *sprite)
bool8 sub_8091048(struct MapObject *mapObject, struct Sprite *sprite)
{
npc_reset(mapObject, sprite);
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
@@ -3177,7 +3177,7 @@ bool8 MoveFieldObjectInNextDirectionInSequence(struct MapObject *mapObject, stru
}
FieldObjectSetRegularAnim(mapObject, sprite, animId);
mapObject->mapobj_bit_1 = TRUE;
- sprite->data1 = 2;
+ sprite->data[1] = 2;
return TRUE;
}
@@ -3186,7 +3186,7 @@ bool8 sub_8091110(struct MapObject *mapObject, struct Sprite *sprite)
if (FieldObjectExecRegularAnim(mapObject, sprite))
{
mapObject->mapobj_bit_1 = FALSE;
- sprite->data1 = 1;
+ sprite->data[1] = 1;
}
return FALSE;
}
@@ -3225,7 +3225,7 @@ bool8 mss_npc_reset_oampriv3_1_unk2_unk3(struct MapObject *mapObject, struct Spr
{
mapObject->mapobj_unk_21 = player_get_direction_lower_nybble();
}
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
@@ -3243,7 +3243,7 @@ bool8 sub_8091F20(struct MapObject *mapObject, struct Sprite *sprite)
if (FieldObjectExecRegularAnim(mapObject, sprite))
{
mapObject->mapobj_bit_1 = FALSE;
- sprite->data1 = 1;
+ sprite->data[1] = 1;
}
return FALSE;
}
@@ -3257,7 +3257,7 @@ bool8 sub_8091F4C(struct MapObject *mapObject, struct Sprite *sprite, u8 playerD
{
FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(state_to_direction(gUnknown_085055CD[mapObject->animPattern], mapObject->mapobj_unk_21, playerDirection)));
mapObject->mapobj_bit_1 = TRUE;
- sprite->data1 = 2;
+ sprite->data[1] = 2;
return TRUE;
}
@@ -3278,7 +3278,7 @@ bool8 sub_8091F94(struct MapObject *mapObject, struct Sprite *sprite, u8 playerD
FieldObjectMoveDestCoords(mapObject, direction, &x, &y);
FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction));
mapObject->mapobj_bit_1 = TRUE;
- sprite->data1 = 2;
+ sprite->data[1] = 2;
return TRUE;
}
}
@@ -3293,7 +3293,7 @@ bool8 sub_8091F94(struct MapObject *mapObject, struct Sprite *sprite, u8 playerD
FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction));
}
mapObject->mapobj_bit_1 = TRUE;
- sprite->data1 = 2;
+ sprite->data[1] = 2;
return TRUE;
}
@@ -3312,7 +3312,7 @@ bool8 sub_80920A4(struct MapObject *mapObject, struct Sprite *sprite, u8 playerD
FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction));
}
mapObject->mapobj_bit_1 = TRUE;
- sprite->data1 = 2;
+ sprite->data[1] = 2;
return TRUE;
}
@@ -3331,7 +3331,7 @@ bool8 sub_809215C(struct MapObject *mapObject, struct Sprite *sprite, u8 playerD
FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction));
}
mapObject->mapobj_bit_1 = TRUE;
- sprite->data1 = 2;
+ sprite->data[1] = 2;
return TRUE;
}
@@ -3350,7 +3350,7 @@ bool8 sub_8092214(struct MapObject *mapObject, struct Sprite *sprite, u8 playerD
FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction));
}
mapObject->mapobj_bit_1 = TRUE;
- sprite->data1 = 2;
+ sprite->data[1] = 2;
return TRUE;
}
@@ -3362,7 +3362,7 @@ bool8 cph_IM_DIFFERENT(struct MapObject *mapObject, struct Sprite *sprite, u8 pl
direction = state_to_direction(gUnknown_085055CD[mapObject->animPattern], mapObject->mapobj_unk_21, direction);
FieldObjectSetRegularAnim(mapObject, sprite, sub_80934BC(direction));
mapObject->mapobj_bit_1 = TRUE;
- sprite->data1 = 2;
+ sprite->data[1] = 2;
return TRUE;
}
@@ -3381,7 +3381,7 @@ bool8 sub_8092314(struct MapObject *mapObject, struct Sprite *sprite, u8 playerD
FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction));
}
mapObject->mapobj_bit_1 = TRUE;
- sprite->data1 = 2;
+ sprite->data[1] = 2;
return TRUE;
}
@@ -3402,7 +3402,7 @@ bool8 oac_hopping(struct MapObject *mapObject, struct Sprite *sprite, u8 playerD
FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction));
}
mapObject->mapobj_bit_1 = TRUE;
- sprite->data1 = 2;
+ sprite->data[1] = 2;
return TRUE;
}
@@ -3423,15 +3423,15 @@ void FieldObjectCB_TreeDisguise(struct Sprite *sprite)
{
struct MapObject *mapObject;
- mapObject = &gMapObjects[sprite->data0];
- if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && !sprite->data7))
+ mapObject = &gMapObjects[sprite->data[0]];
+ if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && !sprite->data[7]))
{
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 ++;
+ sprite->data[7] ++;
}
- FieldObjectStep(&gMapObjects[sprite->data0], sprite, sub_80925AC);
+ FieldObjectStep(&gMapObjects[sprite->data[0]], sprite, sub_80925AC);
}
bool8 sub_80925AC(struct MapObject *mapObject, struct Sprite *sprite)
@@ -3444,15 +3444,15 @@ void FieldObjectCB_MountainDisguise(struct Sprite *sprite)
{
struct MapObject *mapObject;
- mapObject = &gMapObjects[sprite->data0];
- if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && !sprite->data7))
+ mapObject = &gMapObjects[sprite->data[0]];
+ if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && !sprite->data[7]))
{
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 ++;
+ sprite->data[7] ++;
}
- FieldObjectStep(&gMapObjects[sprite->data0], sprite, sub_80925AC);
+ FieldObjectStep(&gMapObjects[sprite->data[0]], sprite, sub_80925AC);
}
extern bool8 (*const gUnknown_0850DA9C[])(struct MapObject *, struct Sprite *);
@@ -3460,19 +3460,19 @@ bool8 sub_809268C(struct MapObject *, struct Sprite *);
void FieldObjectCB_Hidden1(struct Sprite *sprite)
{
- if (!sprite->data7)
+ if (!sprite->data[7])
{
- gMapObjects[sprite->data0].mapobj_bit_26 = TRUE;
+ gMapObjects[sprite->data[0]].mapobj_bit_26 = TRUE;
sprite->subspriteMode = 2;
sprite->oam.priority = 3;
- sprite->data7 ++;
+ sprite->data[7] ++;
}
- FieldObjectStep(&gMapObjects[sprite->data0], sprite, sub_809268C);
+ FieldObjectStep(&gMapObjects[sprite->data[0]], sprite, sub_809268C);
}
bool8 sub_809268C(struct MapObject *mapObject, struct Sprite *sprite)
{
- return gUnknown_0850DA9C[sprite->data1](mapObject, sprite);
+ return gUnknown_0850DA9C[sprite->data[1]](mapObject, sprite);
}
bool8 sub_80926AC (struct MapObject *mapObject, struct Sprite *sprite)
@@ -3484,7 +3484,7 @@ bool8 sub_80926B8 (struct MapObject *mapObject, struct Sprite *sprite)
{
if (FieldObjectExecRegularAnim(mapObject, sprite))
{
- sprite->data1 = 0;
+ sprite->data[1] = 0;
}
return FALSE;
}
@@ -3495,7 +3495,7 @@ bool8 sub_8092718(struct MapObject *mapObject, struct Sprite *sprite)
{
npc_reset(mapObject, sprite);
FieldObjectSetRegularAnim(mapObject, sprite, GetStepInPlaceDelay16AnimId(mapObject->mapobj_unk_18));
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
@@ -3505,7 +3505,7 @@ bool8 sub_8092788(struct MapObject *mapObject, struct Sprite *sprite)
{
npc_reset(mapObject, sprite);
FieldObjectSetRegularAnim(mapObject, sprite, GetStepInPlaceDelay32AnimId(mapObject->mapobj_unk_18));
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
@@ -3515,7 +3515,7 @@ bool8 sub_80927F8(struct MapObject *mapObject, struct Sprite *sprite)
{
npc_reset(mapObject, sprite);
FieldObjectSetRegularAnim(mapObject, sprite, GetStepInPlaceDelay8AnimId(mapObject->mapobj_unk_18));
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
@@ -3525,7 +3525,7 @@ bool8 sub_8092868(struct MapObject *mapObject, struct Sprite *sprite)
{
npc_reset(mapObject, sprite);
FieldObjectSetRegularAnim(mapObject, sprite, GetStepInPlaceDelay4AnimId(mapObject->mapobj_unk_18));
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
@@ -3536,14 +3536,14 @@ bool8 sub_80928D8(struct MapObject *mapObject, struct Sprite *sprite)
npc_reset(mapObject, sprite);
FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(mapObject->mapobj_unk_18));
mapObject->mapobj_bit_13 = TRUE;
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return TRUE;
}
bool8 sub_809290C(struct MapObject *mapObject, struct Sprite *sprite)
{
if (FieldObjectExecRegularAnim(mapObject, sprite))
{
- sprite->data1 = 2;
+ sprite->data[1] = 2;
return TRUE;
}
return FALSE;
@@ -3561,7 +3561,7 @@ void npc_reset(struct MapObject *mapObject, struct Sprite *sprite)
mapObject->mapobj_bit_6 = FALSE;
mapObject->mapobj_bit_7 = FALSE;
mapObject->mapobj_unk_1C = 0xFF;
- sprite->data1 = 0;
+ sprite->data[1] = 0;
}
#define dirn2anim(name, table)\
@@ -3680,7 +3680,7 @@ void npc_set_running_behaviour_etc(struct MapObject *mapObject, u8 animPattern)
mapObject->mapobj_unk_21 = 0;
mapObject->animId = 0;
gSprites[mapObject->spriteId].callback = gUnknown_08505438[animPattern];
- gSprites[mapObject->spriteId].data1 = 0;
+ gSprites[mapObject->spriteId].data[1] = 0;
}
dirn2anim(npc_running_behaviour_by_direction, gUnknown_0850DB53)
@@ -3811,7 +3811,7 @@ bool8 sub_8092E9C(u8 localId, u8 mapNum, u8 mapGroup)
{
u8 mapObjectId;
- if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId) && gSprites[gMapObjects[mapObjectId].spriteId].data7 & 0x02)
+ if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId) && gSprites[gMapObjects[mapObjectId].spriteId].data[7] & 0x02)
{
return TRUE;
}
@@ -3824,7 +3824,7 @@ void sub_8092EF0(u8 localId, u8 mapNum, u8 mapGroup)
if (!TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId))
{
- gSprites[gMapObjects[mapObjectId].spriteId].data7 |= 0x04;
+ gSprites[gMapObjects[mapObjectId].spriteId].data[7] |= 0x04;
}
}
@@ -3975,7 +3975,7 @@ bool8 FieldObjectSetSpecialAnim(struct MapObject *mapObject, u8 specialAnimId)
mapObject->mapobj_unk_1C = specialAnimId;
mapObject->mapobj_bit_6 = TRUE;
mapObject->mapobj_bit_7 = FALSE;
- gSprites[mapObject->spriteId].data2 = 0;
+ gSprites[mapObject->spriteId].data[2] = 0;
return FALSE;
}
@@ -3998,8 +3998,8 @@ void FieldObjectClearAnim(struct MapObject *mapObject)
mapObject->mapobj_unk_1C = 0xFF;
mapObject->mapobj_bit_6 = FALSE;
mapObject->mapobj_bit_7 = FALSE;
- gSprites[mapObject->spriteId].data1 = 0;
- gSprites[mapObject->spriteId].data2 = 0;
+ gSprites[mapObject->spriteId].data[1] = 0;
+ gSprites[mapObject->spriteId].data[2] = 0;
}
u8 FieldObjectCheckIfSpecialAnimFinishedOrInactive(struct MapObject *mapObject)
@@ -4137,7 +4137,7 @@ static u32 state_to_direction(u8 a0, u32 a1, u32 a2)
static void FieldObjectExecSpecialAnim(struct MapObject *mapObject, struct Sprite *sprite)
{
- if (gUnknown_0850DC50[mapObject->mapobj_unk_1C][sprite->data2](mapObject, sprite))
+ if (gUnknown_0850DC50[mapObject->mapobj_unk_1C][sprite->data[2]](mapObject, sprite))
{
mapObject->mapobj_bit_7 = TRUE;
}
@@ -4145,10 +4145,10 @@ static void FieldObjectExecSpecialAnim(struct MapObject *mapObject, struct Sprit
bool8 FieldObjectExecRegularAnim(struct MapObject *mapObject, struct Sprite *sprite)
{
- if (gUnknown_0850DC50[mapObject->mapobj_unk_1C][sprite->data2](mapObject, sprite))
+ if (gUnknown_0850DC50[mapObject->mapobj_unk_1C][sprite->data[2]](mapObject, sprite))
{
mapObject->mapobj_unk_1C = 0xFF;
- sprite->data2 = 0;
+ sprite->data[2] = 0;
return TRUE;
}
return FALSE;
@@ -4157,7 +4157,7 @@ bool8 FieldObjectExecRegularAnim(struct MapObject *mapObject, struct Sprite *spr
void FieldObjectSetRegularAnim(struct MapObject *mapObject, struct Sprite *sprite, u8 animId)
{
mapObject->mapobj_unk_1C = animId;
- sprite->data2 = 0;
+ sprite->data[2] = 0;
}
// file boundary?
@@ -4168,7 +4168,7 @@ void an_look_any(struct MapObject *mapObject, struct Sprite *sprite, u8 directio
npc_coords_shift_still(mapObject);
obj_npc_animation_step(mapObject, sprite, get_go_image_anim_num(mapObject->mapobj_unk_18));
sprite->animPaused = TRUE;
- sprite->data2 = 1;
+ sprite->data[2] = 1;
}
bool8 sub_8093950(struct MapObject *mapObject, struct Sprite *sprite)
@@ -4212,7 +4212,7 @@ void npc_apply_direction(struct MapObject *mapObject, struct Sprite *sprite, u8
sprite->animPaused = TRUE;
}
mapObject->mapobj_bit_2 = TRUE;
- sprite->data2 = 1;
+ sprite->data[2] = 1;
}
void do_go_anim(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 speed)
@@ -4255,7 +4255,7 @@ void sub_8093AF0(struct MapObject *mapObject, struct Sprite *sprite, u8 directio
sub_80976DC(sprite, direction);
sprite->animPaused = FALSE;
mapObject->mapobj_bit_2 = TRUE;
- sprite->data2 = 1;
+ sprite->data[2] = 1;
}
void sub_8093B60(struct MapObject *mapObject, struct Sprite *sprite, u8 direction)
@@ -4287,7 +4287,7 @@ bool8 name##_2(struct MapObject *mapObject, struct Sprite *sprite)\
{\
if (fn2(mapObject, sprite))\
{\
- sprite->data2 = 2;\
+ sprite->data[2] = 2;\
return TRUE;\
}\
return FALSE;\
@@ -4323,7 +4323,7 @@ void sub_8093FC4(struct MapObject *mapObject, struct Sprite *sprite, u8 directio
sub_8092F88(direction, &x, &y, displacements[speed], displacements[speed]);
npc_coords_shift(mapObject, mapObject->coords2.x + x, mapObject->coords2.y + y);
sub_809783C(sprite, direction, speed, a5);
- sprite->data2 = 1;
+ sprite->data[2] = 1;
sprite->animPaused = 0;
mapObject->mapobj_bit_2 = 1;
mapObject->mapobj_bit_4 = 1;
@@ -4345,11 +4345,11 @@ u8 sub_80940C4(struct MapObject *mapObject, struct Sprite *sprite, u8 callback(s
memcpy(displacements, gUnknown_0850DFC2, sizeof gUnknown_0850DFC2);
result = callback(sprite);
- if (result == 1 && displacements[sprite->data4] != 0)
+ if (result == 1 && displacements[sprite->data[4]] != 0)
{
x = 0;
y = 0;
- sub_8092F88(mapObject->placeholder18, &x, &y, displacements[sprite->data4], displacements[sprite->data4]);
+ sub_8092F88(mapObject->placeholder18, &x, &y, displacements[sprite->data[4]], displacements[sprite->data[4]]);
npc_coords_shift(mapObject, mapObject->coords2.x + x, mapObject->coords2.y + y);
mapObject->mapobj_bit_2 = TRUE;
mapObject->mapobj_bit_4 = TRUE;
@@ -4418,7 +4418,7 @@ bool8 name##_2(struct MapObject *mapObject, struct Sprite *sprite)\
if (fn2(mapObject, sprite))\
{\
mapObject->mapobj_bit_22 = FALSE;\
- sprite->data2 = 2;\
+ sprite->data[2] = 2;\
return TRUE;\
}\
return FALSE;\
@@ -4431,15 +4431,15 @@ maybe_shadow_1_macro(sub_8094338, maybe_shadow_1, sub_80941B0, DIR_EAST, 2, 0)
void sub_8094390(struct Sprite *sprite, u16 duration)
{
- sprite->data2 = 1;
- sprite->data3 = duration;
+ sprite->data[2] = 1;
+ sprite->data[3] = duration;
}
bool8 sub_8094398(struct MapObject *mapObject, struct Sprite *sprite)
{
- if (-- sprite->data3 == 0)
+ if (-- sprite->data[3] == 0)
{
- sprite->data2 = 2;
+ sprite->data[2] = 2;
return TRUE;
}
return FALSE;
@@ -4468,15 +4468,15 @@ void sub_8094554(struct MapObject *mapObject, struct Sprite *sprite, u8 directio
FieldObjectSetDirection(mapObject, direction);
npc_apply_anim_looping(mapObject, sprite, animNum);
sprite->animPaused = FALSE;
- sprite->data2 = 1;
- sprite->data3 = duration;
+ sprite->data[2] = 1;
+ sprite->data[3] = duration;
}
bool8 sub_809459C(struct MapObject *mapObject, struct Sprite *sprite)
{
- if (-- sprite->data3 == 0)
+ if (-- sprite->data[3] == 0)
{
- sprite->data2 = 2;
+ sprite->data[2] = 2;
sprite->animPaused = TRUE;
return TRUE;
}
@@ -4485,7 +4485,7 @@ bool8 sub_809459C(struct MapObject *mapObject, struct Sprite *sprite)
bool8 sub_80945C4(struct MapObject *mapObject, struct Sprite *sprite)
{
- if (sprite->data3 & 1)
+ if (sprite->data[3] & 1)
{
sprite->animDelayCounter ++;
}
@@ -4539,7 +4539,7 @@ void npc_set_direction_and_anim__an_proceed(struct MapObject *mapObject, struct
{
obj_anim_image_set_and_seek(sprite, animNum, 0);
FieldObjectSetDirection(mapObject, direction);
- sprite->data2 = 1;
+ sprite->data[2] = 1;
}
bool8 sub_8094DAC(struct MapObject *mapObject, struct Sprite *sprite)
@@ -4552,7 +4552,7 @@ bool8 sub_8094DC4(struct MapObject *mapObject, struct Sprite *sprite)
{
if (sub_80979BC(sprite))
{
- sprite->data2 = 2;
+ sprite->data[2] = 2;
return TRUE;
}
return FALSE;
@@ -4575,7 +4575,7 @@ bool8 name##_2(struct MapObject *mapObject, struct Sprite *sprite)\
{\
if (sub_80941C8(mapObject, sprite))\
{\
- sprite->data2 = 2;\
+ sprite->data[2] = 2;\
mapObject->mapobj_bit_5 = FALSE;\
return TRUE;\
}\
@@ -4595,7 +4595,7 @@ bool8 sub_8094F38(struct MapObject *mapObject, struct Sprite *sprite)
{
an_look_any(mapObject, sprite, sub_8092AF8(mapObject->coords2.x, mapObject->coords2.y, gMapObjects[mapObjectId].coords2.x, gMapObjects[mapObjectId].coords2.y));
}
- sprite->data2 = 1;
+ sprite->data[2] = 1;
return TRUE;
}
@@ -4607,21 +4607,21 @@ bool8 sub_8094F94(struct MapObject *mapObject, struct Sprite *sprite)
{
an_look_any(mapObject, sprite, GetOppositeDirection(sub_8092AF8(mapObject->coords2.x, mapObject->coords2.y, gMapObjects[mapObjectId].coords2.x, gMapObjects[mapObjectId].coords2.y)));
}
- sprite->data2 = 1;
+ sprite->data[2] = 1;
return TRUE;
}
bool8 sub_8094FF8(struct MapObject *mapObject, struct Sprite *sprite)
{
mapObject->mapobj_bit_9 = TRUE;
- sprite->data2 = 1;
+ sprite->data[2] = 1;
return TRUE;
}
bool8 sub_8095008(struct MapObject *mapObject, struct Sprite *sprite)
{
mapObject->mapobj_bit_9 = FALSE;
- sprite->data2 = 1;
+ sprite->data[2] = 1;
return TRUE;
}
@@ -4653,42 +4653,42 @@ bool8 sub_8095450(struct MapObject *mapObject, struct Sprite *sprite)
bool8 sub_8095460(struct MapObject *mapObject, struct Sprite *sprite)
{
mapObject->mapobj_bit_25 = FALSE;
- sprite->data2 = 1;
+ sprite->data[2] = 1;
return TRUE;
}
bool8 sub_8095470(struct MapObject *mapObject, struct Sprite *sprite)
{
mapObject->mapobj_bit_25 = TRUE;
- sprite->data2 = 1;
+ sprite->data[2] = 1;
return TRUE;
}
bool8 sub_8095480(struct MapObject *mapObject, struct Sprite *sprite)
{
mapObject->mapobj_bit_12 = TRUE;
- sprite->data2 = 1;
+ sprite->data[2] = 1;
return TRUE;
}
bool8 sub_8095490(struct MapObject *mapObject, struct Sprite *sprite)
{
mapObject->mapobj_bit_12 = GetFieldObjectGraphicsInfo(mapObject->graphicsId)->inanimate;
- sprite->data2 = 1;
+ sprite->data[2] = 1;
return TRUE;
}
bool8 sub_80954BC(struct MapObject *mapObject, struct Sprite *sprite)
{
mapObject->mapobj_bit_13 = TRUE;
- sprite->data2 = 1;
+ sprite->data[2] = 1;
return TRUE;
}
bool8 sub_80954CC(struct MapObject *mapObject, struct Sprite *sprite)
{
mapObject->mapobj_bit_13 = FALSE;
- sprite->data2 = 1;
+ sprite->data[2] = 1;
return TRUE;
}
@@ -4696,7 +4696,7 @@ bool8 do_exclamation_mark_bubble_1(struct MapObject *mapObject, struct Sprite *s
{
FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]);
FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON_1);
- sprite->data2 = 1;
+ sprite->data[2] = 1;
return TRUE;
}
@@ -4704,7 +4704,7 @@ bool8 do_exclamation_mark_bubble_2(struct MapObject *mapObject, struct Sprite *s
{
FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]);
FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON_2);
- sprite->data2 = 1;
+ sprite->data[2] = 1;
return TRUE;
}
@@ -4712,7 +4712,7 @@ bool8 do_heart_bubble(struct MapObject *mapObject, struct Sprite *sprite)
{
FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]);
FieldEffectStart(FLDEFF_HEART_ICON);
- sprite->data2 = 1;
+ sprite->data[2] = 1;
return TRUE;
}
@@ -4725,11 +4725,11 @@ bool8 sub_8095548(struct MapObject *mapObject, struct Sprite *sprite)
}
if (mapObject->animPattern != 0x39 && mapObject->animPattern != 0x3A)
{
- sprite->data2 = 2;
+ sprite->data[2] = 2;
return TRUE;
}
sub_8155D78(mapObject);
- sprite->data2 = 1;
+ sprite->data[2] = 1;
return sub_809558C(mapObject, sprite);
}
@@ -4737,7 +4737,7 @@ bool8 sub_809558C(struct MapObject *mapObject, struct Sprite *sprite)
{
if (sub_8155DA0(mapObject))
{
- sprite->data2 = 2;
+ sprite->data[2] = 2;
return TRUE;
}
return FALSE;
@@ -4746,7 +4746,7 @@ bool8 sub_809558C(struct MapObject *mapObject, struct Sprite *sprite)
bool8 sub_80955AC(struct MapObject *mapObject, struct Sprite *sprite)
{
obj_anim_image_set_and_seek(sprite, 1, 0);
- sprite->data2 = 1;
+ sprite->data[2] = 1;
return FALSE;
}
@@ -4755,7 +4755,7 @@ bool8 sub_80955C8(struct MapObject *mapObject, struct Sprite *sprite)
if (sub_80979BC(sprite))
{
SetFieldObjectStepTimer(sprite, 32);
- sprite->data2 = 2;
+ sprite->data[2] = 2;
}
return FALSE;
}
@@ -4766,7 +4766,7 @@ bool8 sub_80955EC(struct MapObject *mapObject, struct Sprite *sprite)
if (RunFieldObjectStepTimer(sprite))
{
mapObject->mapobj_bit_13 = TRUE;
- sprite->data2 = 3;
+ sprite->data[2] = 3;
}
return FALSE;
}
@@ -4774,7 +4774,7 @@ bool8 sub_80955EC(struct MapObject *mapObject, struct Sprite *sprite)
bool8 sub_8095628(struct MapObject *mapObject, struct Sprite *sprite)
{
obj_anim_image_set_and_seek(sprite, 1, 0);
- sprite->data2 = 1;
+ sprite->data[2] = 1;
return FALSE;
}
@@ -4783,7 +4783,7 @@ bool8 sub_8095644(struct MapObject *mapObject, struct Sprite *sprite)
if (sub_80979BC(sprite))
{
SetFieldObjectStepTimer(sprite, 32);
- sprite->data2 = 2;
+ sprite->data[2] = 2;
}
return FALSE;
}
@@ -4794,7 +4794,7 @@ bool8 sub_8095668(struct MapObject *mapObject, struct Sprite *sprite)
if (RunFieldObjectStepTimer(sprite))
{
mapObject->mapobj_bit_13 = TRUE;
- sprite->data2 = 3;
+ sprite->data[2] = 3;
}
return FALSE;
}
@@ -4802,14 +4802,14 @@ bool8 sub_8095668(struct MapObject *mapObject, struct Sprite *sprite)
bool8 sub_80956A4(struct MapObject *mapObject, struct Sprite *sprite)
{
mapObject->mapobj_bit_26 = TRUE;
- sprite->data2 = 1;
+ sprite->data[2] = 1;
return TRUE;
}
bool8 sub_80956B4(struct MapObject *mapObject, struct Sprite *sprite)
{
mapObject->mapobj_bit_26 = FALSE;
- sprite->data2 = 1;
+ sprite->data[2] = 1;
return TRUE;
}
@@ -4856,7 +4856,7 @@ bool8 name##_2(struct MapObject *mapObject, struct Sprite *sprite)\
if (fn2(mapObject, sprite))\
{\
sprite->affineAnimPaused = TRUE;\
- sprite->data2 = 2;\
+ sprite->data[2] = 2;\
return TRUE;\
}\
return FALSE;\
@@ -4873,7 +4873,7 @@ static void sub_80958C0(struct MapObject *mapObject, struct Sprite *sprite, u8 d
npc_coords_shift_still(mapObject);
obj_npc_animation_step(mapObject, sprite, sub_80929FC(direction));
sprite->animPaused = TRUE;
- sprite->data2 = 1;
+ sprite->data[2] = 1;
}
bool8 sub_8095900(struct MapObject *mapObject, struct Sprite *sprite)
@@ -4941,7 +4941,7 @@ bool8 sub_8095B0C(struct MapObject *mapObject, struct Sprite *sprite)
bool8 sub_8095B44(struct MapObject *mapObject, struct Sprite *sprite)
{
sub_8095AF0(mapObject, sprite);
- sprite->data2 = 1;
+ sprite->data[2] = 1;
return sub_8095B64(mapObject, sprite);
}
@@ -4949,7 +4949,7 @@ bool8 sub_8095B64(struct MapObject *mapObject, struct Sprite *sprite)
{
if (sub_8095B0C(mapObject, sprite))
{
- sprite->data2 = 2;
+ sprite->data[2] = 2;
return TRUE;
}
return FALSE;
@@ -5017,7 +5017,7 @@ an_walk_any_2_macro(sub_8096428, sub_8096330, npc_obj_ministep_stop_on_arrival,
bool8 sub_8096468(struct MapObject *mapObject, struct Sprite *sprite)
{
sub_8097FA4(mapObject);
- sprite->data2 = 1;
+ sprite->data[2] = 1;
return TRUE;
}
@@ -5025,7 +5025,7 @@ bool8 sub_809647C(struct MapObject *mapObject, struct Sprite *sprite)
{
sub_8098044(mapObject->mapobj_unk_1B);
sprite->pos2.y = 0;
- sprite->data2 = 1;
+ sprite->data[2] = 1;
return TRUE;
}
@@ -5034,7 +5034,7 @@ bool8 sub_8096494(struct MapObject *mapObject, struct Sprite *sprite)
if (sprite->pos2.y == 0)
{
sub_8098044(mapObject->mapobj_unk_1B);
- sprite->data2 = 1;
+ sprite->data[2] = 1;
return TRUE;
}
return FALSE;
diff --git a/src/field_poison.c b/src/field_poison.c
new file mode 100644
index 000000000..b83788210
--- /dev/null
+++ b/src/field_poison.c
@@ -0,0 +1,148 @@
+#include "global.h"
+#include "string_util.h"
+#include "party_menu.h"
+#include "constants/species.h"
+#include "task.h"
+#include "field_message_box.h"
+#include "strings.h"
+#include "rom_818CFC8.h"
+#include "battle_frontier_2.h"
+#include "pokenav.h"
+#include "event_data.h"
+#include "script.h"
+#include "battle.h"
+#include "fldeff_80F9BCC.h"
+#include "field_poison.h"
+
+static bool32 sub_80F9568(struct Pokemon *pokemon)
+{
+ u16 species = GetMonData(pokemon, MON_DATA_SPECIES2);
+ if (species == SPECIES_NONE || species == SPECIES_EGG)
+ {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+static bool32 sub_80F958C(void)
+{
+ int i;
+ struct Pokemon *pokemon;
+
+ for (pokemon = gPlayerParty, i = 0; i < PARTY_SIZE; i++, pokemon++)
+ {
+ if (sub_80F9568(pokemon) && GetMonData(pokemon, MON_DATA_HP) != 0)
+ {
+ return FALSE;
+ }
+ }
+ return TRUE;
+}
+
+static void sub_80F95C0(u8 partyIdx)
+{
+ struct Pokemon *pokemon = gPlayerParty + partyIdx;
+ unsigned int status = STATUS_NONE;
+ AdjustFriendship(pokemon, 0x07);
+ SetMonData(pokemon, MON_DATA_STATUS, &status);
+ GetMonData(pokemon, MON_DATA_NICKNAME, gStringVar1);
+ StringGetEnd10(gStringVar1);
+}
+
+static bool32 sub_80F960C(u8 partyIdx)
+{
+ struct Pokemon *pokemon = gPlayerParty + partyIdx;
+ if (sub_80F9568(pokemon) && GetMonData(pokemon, MON_DATA_HP) == 0 && pokemon_ailments_get_primary(GetMonData(pokemon, MON_DATA_STATUS)) == AILMENT_PSN)
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void sub_80F9654(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ switch (data[0])
+ {
+ case 0:
+ for (; data[1] < PARTY_SIZE; data[1]++)
+ {
+ if (sub_80F960C(data[1]))
+ {
+ sub_80F95C0(data[1]);
+ ShowFieldMessage(gText_PkmnFainted3);
+ data[0]++;
+ return;
+ }
+ }
+ data[0] = 2;
+ break;
+ case 1:
+ if (IsFieldMessageBoxHidden())
+ {
+ data[0]--;
+ }
+ break;
+ case 2:
+ if (sub_80F958C())
+ {
+ if (InBattlePyramid() | InBattlePike() || sub_81D5C18())
+ {
+ gSpecialVar_Result = 2;
+ }
+ else
+ {
+ gSpecialVar_Result = 1;
+ }
+ }
+ else
+ {
+ gSpecialVar_Result = 0;
+ }
+ EnableBothScriptContexts();
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+void sub_80F972C(void)
+{
+ CreateTask(sub_80F9654, 80);
+ ScriptContext1_Stop();
+}
+
+unsigned int overworld_poison(void)
+{
+ int i;
+ unsigned int hp;
+ struct Pokemon *pokemon = gPlayerParty;
+ unsigned int numPoisoned = 0;
+ unsigned int numFainted = 0;
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (GetMonData(pokemon, MON_DATA_SANITY_BIT2) && pokemon_ailments_get_primary(GetMonData(pokemon, MON_DATA_STATUS)) == AILMENT_PSN)
+ {
+ hp = GetMonData(pokemon, MON_DATA_HP);
+ if (hp == 0 || --hp == 0)
+ {
+ numFainted++;
+ }
+ SetMonData(pokemon, MON_DATA_HP, &hp);
+ numPoisoned++;
+ }
+ pokemon++;
+ }
+ if (numFainted != 0 || numPoisoned != 0)
+ {
+ overworld_poison_effect();
+ }
+ if (numFainted != 0)
+ {
+ return FLDPSN_FNT;
+ }
+ if (numPoisoned != 0)
+ {
+ return FLDPSN_PSN;
+ }
+ return FLDPSN_NONE;
+}
diff --git a/src/field_special_scene.c b/src/field_special_scene.c
index f92f342eb..d46ddeaa6 100755
--- a/src/field_special_scene.c
+++ b/src/field_special_scene.c
@@ -2,11 +2,11 @@
#include "task.h"
#include "sprite.h"
#include "field_map_obj.h"
-#include "songs.h"
+#include "constants/songs.h"
#include "sound.h"
#include "palette.h"
#include "script.h"
-#include "vars.h"
+#include "constants/vars.h"
#include "event_data.h"
#include "main.h"
diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c
index bc7177bd7..52babe346 100644
--- a/src/hall_of_fame.c
+++ b/src/hall_of_fame.c
@@ -9,21 +9,22 @@
#include "gpu_regs.h"
#include "main.h"
#include "sound.h"
-#include "songs.h"
+#include "constants/songs.h"
#include "decompress.h"
#include "save.h"
#include "window.h"
#include "bg.h"
-#include "species.h"
-#include "game_stat.h"
+#include "constants/species.h"
+#include "constants/game_stat.h"
#include "blend_palette.h"
#include "string_util.h"
#include "m4a.h"
#include "international_string_util.h"
#include "unknown_task.h"
#include "trig.h"
-#include "rng.h"
+#include "random.h"
#include "event_data.h"
+#include "overworld.h"
struct HallofFameMon
{
@@ -57,6 +58,7 @@ extern struct MusicPlayerInfo gMPlay_BGM;
extern MainCallback gGameContinueCallback;
extern u32 gDamagedSaveSectors;
extern u8 gReservedSpritePaletteCount;
+extern const u8 gSpeciesNames[][11];
#define HALL_OF_FAME_MAX_TEAMS 50
@@ -580,9 +582,9 @@ static void Task_Hof_SetMonDisplayTask(u8 taskId)
gTasks[taskId].func = Task_Hof_DisplayMon;
}
-#define tDestinationX data1
-#define tDestinationY data2
-#define tSpecies data7
+#define tDestinationX data[1]
+#define tDestinationY data[2]
+#define tSpecies data[7]
static void Task_Hof_DisplayMon(u8 taskId)
{
@@ -613,7 +615,7 @@ static void Task_Hof_DisplayMon(u8 taskId)
spriteId = sub_818D3E4(currMon->species, currMon->tid, currMon->personality, 1, xPos, yPos, currMonId, 0xFFFF);
gSprites[spriteId].tDestinationX = field4;
gSprites[spriteId].tDestinationY = field6;
- gSprites[spriteId].data0 = 0;
+ gSprites[spriteId].data[0] = 0;
gSprites[spriteId].tSpecies = currMon->species;
gSprites[spriteId].callback = SpriteCB_GetOnScreenAndAnimate;
gTasks[taskId].tMonSpriteId(currMonId) = spriteId;
@@ -1404,13 +1406,13 @@ static void sub_81751A4(struct Sprite* sprite)
u8 tableID;
sprite->pos2.y++;
- sprite->pos2.y += sprite->data1;
+ sprite->pos2.y += sprite->data[1];
- tableID = sprite->data0;
+ tableID = sprite->data[0];
rand = (Random() % 4) + 8;
sprite->pos2.x = rand * gSineTable[tableID] / 256;
- sprite->data0 += 4;
+ sprite->data[0] += 4;
}
}
@@ -1428,9 +1430,9 @@ static bool8 sub_81751FC(void)
StartSpriteAnim(sprite, Random() % 17);
if (Random() & 3)
- sprite->data1 = 0;
+ sprite->data[1] = 0;
else
- sprite->data1 = 1;
+ sprite->data[1] = 1;
return FALSE;
}
diff --git a/src/heal_location.c b/src/heal_location.c
index efc534170..aa90fe1ae 100644
--- a/src/heal_location.c
+++ b/src/heal_location.c
@@ -1,10 +1,10 @@
// Includes
#include "global.h"
-#include "map_constants.h"
+#include "constants/maps.h"
#include "heal_location.h"
-#define HEAL_LOCATION(map, x, y) {MAP_GROUP_##map, MAP_ID_##map, x, y}
+#define HEAL_LOCATION(map, x, y) {MAP_GROUP(map), MAP_NUM(map), x, y}
// Static type declarations
diff --git a/src/international_string_util.c b/src/international_string_util.c
index 81985d614..89b4a7a69 100644
--- a/src/international_string_util.c
+++ b/src/international_string_util.c
@@ -1,6 +1,6 @@
#include "global.h"
-#include "international_string_util.h"
#include "text.h"
+#include "international_string_util.h"
extern s32 convert_pixel_width_to_tile_width(s32 a0); // script menu
diff --git a/src/item.c b/src/item.c
index 32347623e..931027e25 100644
--- a/src/item.c
+++ b/src/item.c
@@ -1,11 +1,11 @@
#include "global.h"
#include "item.h"
-#include "items.h"
+#include "constants/items.h"
#include "string_util.h"
#include "text.h"
#include "event_data.h"
-extern void ApplyNewEncyprtionKeyToHword(u16* hword, u32 newKey);
+extern void ApplyNewEncryptionKeyToHword(u16* hword, u32 newKey);
extern bool8 InBattlePyramid(void);
extern const u8 gText_PokeBalls[];
@@ -45,19 +45,19 @@ void SetBagItemId(u16* slot, u16 newItemId)
*slot = newItemId;
}
-void ApplyNewEncyprtionKeyToBagItems(u32 newKey)
+void ApplyNewEncryptionKeyToBagItems(u32 newKey)
{
u32 pocket, item;
for (pocket = 0; pocket < 5; pocket++)
{
for (item = 0; item < gBagPockets[pocket].capacity; item++)
- ApplyNewEncyprtionKeyToHword(&(gBagPockets[pocket].itemSlots[item].quantity), newKey);
+ ApplyNewEncryptionKeyToHword(&(gBagPockets[pocket].itemSlots[item].quantity), newKey);
}
}
-void ApplyNewEncyprtionKeyToBagItems_(u32 newKey) // really GF?
+void ApplyNewEncryptionKeyToBagItems_(u32 newKey) // really GF?
{
- ApplyNewEncyprtionKeyToBagItems(newKey);
+ ApplyNewEncryptionKeyToBagItems(newKey);
}
// TODO: move those max values to defines
diff --git a/src/lilycove_lady.c b/src/lilycove_lady.c
index 62171e475..95270974a 100644
--- a/src/lilycove_lady.c
+++ b/src/lilycove_lady.c
@@ -8,10 +8,10 @@
#include "rom6.h"
#include "event_data.h"
#include "script.h"
-#include "rng.h"
+#include "random.h"
#include "string_util.h"
#include "item.h"
-#include "items.h"
+#include "constants/items.h"
#include "item_menu.h"
#include "text.h"
#include "easy_chat.h"
diff --git a/src/load_save.c b/src/load_save.c
index 68d978e3d..e0106c0a8 100644
--- a/src/load_save.c
+++ b/src/load_save.c
@@ -3,19 +3,34 @@
#include "load_save.h"
#include "main.h"
#include "pokemon.h"
-#include "rng.h"
-#include "malloc.h"
+#include "random.h"
extern void* gUnknown_0203CF5C;
extern bool16 IdentifyFlash(void);
extern void SetBagItemsPointers(void);
extern void SetDecorationInventoriesPointers(void);
+extern void ApplyNewEncryptionKeyToGameStats(u32 key);
+extern void ApplyNewEncryptionKeyToBagItems(u32 newKey);
+extern void ApplyNewEncryptionKeyToBagItems_(u32 key);
+extern void ApplyNewEncryptionKeyToBerryPowder(u32 key);
+extern void sub_8084FAC(int unused);
-void ApplyNewEncyprtionKeyToAllEncryptedData(u32 encryptionKey);
+// this is probably wrong or misleading due to it being used in ResetHeap...
+extern void InitHeap(void *pointer, u32 size);
#define SAVEBLOCK_MOVE_RANGE 128
+struct LoadedSaveData
+{
+ /*0x0000*/ struct ItemSlot items[30];
+ /*0x0078*/ struct ItemSlot keyItems[30];
+ /*0x00F0*/ struct ItemSlot pokeBalls[16];
+ /*0x0130*/ struct ItemSlot TMsHMs[64];
+ /*0x0230*/ struct ItemSlot berries[46];
+ /*0x02E8*/ struct MailStruct mail[MAIL_COUNT];
+};
+
EWRAM_DATA struct SaveBlock2 gSaveblock2 = {0};
EWRAM_DATA u8 gSaveblock2_DMA[SAVEBLOCK_MOVE_RANGE] = {0};
@@ -25,6 +40,11 @@ EWRAM_DATA u8 gSaveblock1_DMA[SAVEBLOCK_MOVE_RANGE] = {0};
EWRAM_DATA struct PokemonStorage gPokemonStorage = {0};
EWRAM_DATA u8 gSaveblock3_DMA[SAVEBLOCK_MOVE_RANGE] = {0};
+EWRAM_DATA struct LoadedSaveData gLoadedSaveData = {0};
+EWRAM_DATA u32 gLastEncryptionKey = {0};
+
+void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey);
+
void CheckForFlashMemory(void)
{
if (!IdentifyFlash())
@@ -60,18 +80,45 @@ void SetSaveBlocksPointers(u16 offset)
SetDecorationInventoriesPointers();
}
+// stuff i used to try and match MoveSaveBlocks_ResetHeap
struct SaveBlocksInOne
{
struct SaveBlock2 sav2;
struct SaveBlock1 sav1;
struct PokemonStorage sav3;
};
+
+extern struct SaveBlocksInOne gHeap;
+
+#define ewram_addr 0x02000000 // oh no...
+#define ewram_addr2 0x02000f2c
+#define ewram_addr3 0x02004cb4
+
+#define eSaveBlockCopy (*(struct SaveBlocksInOne *)(ewram_addr + 0x0))
+#define eSaveBlock2Copy (*(struct SaveBlock2 *)((void*)(ewram_addr + 0x0)))
+#define eSaveBlock1Copy (*(struct SaveBlock1 *)((void*)(ewram_addr + sizeof(struct SaveBlock2))))
+#define eSaveBlock3Copy (*(struct PokemonStorage *)((void*)(ewram_addr + sizeof(struct SaveBlock2) + sizeof(struct SaveBlock1))))
+
+#ifdef NONMATCHING // this is one devil of a motherfucker
/*
+ The reason MoveSaveBlocks_ResetHeap mismatches is due to incorrect memcpys. Various
+ things have been tried, such as: direct struct copys, ewram casts, use of defining
+ the addresses manually, using memcpy anyway, delayed allocation of pointers at
+ the start of function, as seen above and below. Scope declaration has been used to try and
+ reproduce the correct macro thought to be used, but nothing has worked. It is worth
+ noting that at this point that the compiler will delay the allocation of the save block
+ pointers at the beginningto be allocated later: which might matter for matching this.
+ Due to loading shared ewram heap areas directly, it is very likely emerald used ewram
+ defines for this function, but there is no known example of a matching define.
+ In addition, dead code might be present in the form of a runtime variable used
+ to fix the address of the save blocks. This has been tested and is shown to affect
+ the registers as well.
+*/
void MoveSaveBlocks_ResetHeap(void)
{
void *vblankCB, *hblankCB;
u32 encryptionKey;
- struct SaveBlocksInOne* copiedSavs;
+ struct SaveBlock1 **sav1Copy = &gSaveBlock1Ptr; // r10;
// save interrupt functions and turn them off
vblankCB = gMain.vblankCallback;
@@ -80,24 +127,22 @@ void MoveSaveBlocks_ResetHeap(void)
gMain.hblankCallback = NULL;
gUnknown_0203CF5C = NULL;
- copiedSavs = (void*)(gHeap);
-
- // copy saveblocks' content
- copiedSavs->sav2 = *gSaveBlock2Ptr;
- copiedSavs->sav1 = *gSaveBlock1Ptr;
- copiedSavs->sav3 = *gPokemonStoragePtr;
+ // backup the saves.
+ eSaveBlock1Copy = **sav1Copy;
+ eSaveBlock2Copy = *gSaveBlock2Ptr;
+ eSaveBlock3Copy = *gPokemonStoragePtr;
// change saveblocks' pointers
// argument is a sum of the individual trainerId bytes
- SetSaveBlocksPointers(copiedSavs->sav2.playerTrainerId[0] + copiedSavs->sav2.playerTrainerId[1] + copiedSavs->sav2.playerTrainerId[2] + copiedSavs->sav2.playerTrainerId[3]);
+ SetSaveBlocksPointers(eSaveBlock2Copy.playerTrainerId[0] + eSaveBlock2Copy.playerTrainerId[1] + eSaveBlock2Copy.playerTrainerId[2] + eSaveBlock2Copy.playerTrainerId[3]);
// restore saveblock data since the pointers changed
- *gSaveBlock2Ptr = copiedSavs->sav2;
- *gSaveBlock1Ptr = copiedSavs->sav1;
- *gPokemonStoragePtr = copiedSavs->sav3;
+ **sav1Copy = eSaveBlock1Copy;
+ *gSaveBlock2Ptr = eSaveBlock2Copy;
+ *gPokemonStoragePtr = eSaveBlock3Copy;
// heap was destroyed in the copying process, so reset it
- InitHeap(gHeap, sizeof(gHeap));
+ InitHeap((void*)(0x02000000), 0x1C000);
// restore interrupt functions
gMain.hblankCallback = hblankCB;
@@ -105,6 +150,266 @@ void MoveSaveBlocks_ResetHeap(void)
// create a new encryption key
encryptionKey = (Random() << 0x10) + (Random());
- ApplyNewEncyprtionKeyToAllEncryptedData(encryptionKey);
+ ApplyNewEncryptionKeyToAllEncryptedData(encryptionKey);
gSaveBlock2Ptr->encryptionKey = encryptionKey;
-}*/
+}
+#else
+__attribute__((naked))
+void MoveSaveBlocks_ResetHeap(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x8\n\
+ ldr r5, =gMain\n\
+ ldr r0, [r5, 0xC]\n\
+ str r0, [sp]\n\
+ ldr r1, [r5, 0x10]\n\
+ str r1, [sp, 0x4]\n\
+ movs r0, 0\n\
+ str r0, [r5, 0xC]\n\
+ str r0, [r5, 0x10]\n\
+ ldr r1, =gUnknown_0203CF5C\n\
+ str r0, [r1]\n\
+ ldr r4, =0x02000000\n\
+ ldr r0, =gSaveBlock2Ptr\n\
+ ldr r1, [r0]\n\
+ ldr r6, =0x00000f2c\n\
+ adds r0, r4, 0\n\
+ adds r2, r6, 0\n\
+ bl memcpy\n\
+ ldr r1, =gSaveBlock1Ptr\n\
+ mov r10, r1\n\
+ ldr r1, [r1]\n\
+ ldr r7, =0x00003d88\n\
+ ldr r0, =0x02000f2c\n\
+ adds r2, r7, 0\n\
+ bl memcpy\n\
+ ldr r0, =gPokemonStoragePtr\n\
+ mov r8, r0\n\
+ ldr r1, [r0]\n\
+ ldr r0, =0x000083d0\n\
+ mov r9, r0\n\
+ ldr r0, =0x02004cb4\n\
+ mov r2, r9\n\
+ bl memcpy\n\
+ ldrb r1, [r4, 0xA]\n\
+ ldrb r0, [r4, 0xB]\n\
+ adds r1, r0\n\
+ ldrb r0, [r4, 0xC]\n\
+ adds r1, r0\n\
+ ldrb r0, [r4, 0xD]\n\
+ adds r0, r1\n\
+ bl SetSaveBlocksPointers\n\
+ ldr r1, =gSaveBlock2Ptr\n\
+ ldr r0, [r1]\n\
+ adds r1, r4, 0\n\
+ adds r2, r6, 0\n\
+ bl memcpy\n\
+ mov r1, r10\n\
+ ldr r0, [r1]\n\
+ ldr r1, =0x02000f2c\n\
+ adds r2, r7, 0\n\
+ bl memcpy\n\
+ mov r1, r8\n\
+ ldr r0, [r1]\n\
+ ldr r1, =0x02004cb4\n\
+ mov r2, r9\n\
+ bl memcpy\n\
+ movs r1, 0xE0\n\
+ lsls r1, 9\n\
+ adds r0, r4, 0\n\
+ bl InitHeap\n\
+ ldr r0, [sp, 0x4]\n\
+ str r0, [r5, 0x10]\n\
+ ldr r1, [sp]\n\
+ str r1, [r5, 0xC]\n\
+ bl Random\n\
+ adds r4, r0, 0\n\
+ bl Random\n\
+ lsls r4, 16\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ adds r4, r0\n\
+ adds r0, r4, 0\n\
+ bl ApplyNewEncryptionKeyToAllEncryptedData\n\
+ ldr r1, =gSaveBlock2Ptr\n\
+ ldr r0, [r1]\n\
+ adds r0, 0xAC\n\
+ str r4, [r0]\n\
+ add sp, 0x8\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool\n\
+ .syntax divided\n");
+}
+#endif
+
+u8 sav2_x1_query_bit1(void)
+{
+ return gSaveBlock2Ptr->specialSaveWarp & 1;
+}
+
+void sav2_x9_clear_bit1(void)
+{
+ gSaveBlock2Ptr->specialSaveWarp &= ~1;
+}
+
+void sub_8076D48(void)
+{
+ gSaveBlock2Ptr->specialSaveWarp |= 1;
+}
+
+void sub_8076D5C(void)
+{
+ sub_8084FAC(0);
+ gSaveBlock2Ptr->specialSaveWarp |= 1;
+}
+
+void sav2_gender2_inplace_and_xFE(void)
+{
+ gSaveBlock2Ptr->specialSaveWarp &= ~1;
+}
+
+void copy_player_party_to_sav1(void) // SavePlayerParty
+{
+ int i;
+
+ gSaveBlock1Ptr->playerPartyCount = gPlayerPartyCount;
+
+ for (i = 0; i < 6; i++)
+ gSaveBlock1Ptr->playerParty[i] = gPlayerParty[i];
+}
+
+void copy_player_party_from_sav1(void) // LoadPlayerParty
+{
+ int i;
+
+ gPlayerPartyCount = gSaveBlock1Ptr->playerPartyCount;
+
+ for (i = 0; i < 6; i++)
+ gPlayerParty[i] = gSaveBlock1Ptr->playerParty[i];
+}
+
+void save_serialize_npcs(void) // SaveMapObjects
+{
+ int i;
+
+ for (i = 0; i < 16; i++)
+ gSaveBlock1Ptr->mapObjects[i] = gMapObjects[i];
+}
+
+void save_deserialize_npcs(void) // LoadMapObjects
+{
+ int i;
+
+ for (i = 0; i < 16; i++)
+ gMapObjects[i] = gSaveBlock1Ptr->mapObjects[i];
+}
+
+void SaveSerializedGame(void)
+{
+ copy_player_party_to_sav1();
+ save_serialize_npcs();
+}
+
+void LoadSerializedGame(void)
+{
+ copy_player_party_from_sav1();
+ save_deserialize_npcs();
+}
+
+void copy_bags_and_unk_data_from_save_blocks(void)
+{
+ int i;
+
+ // load player items.
+ for (i = 0; i < 30; i++)
+ gLoadedSaveData.items[i] = gSaveBlock1Ptr->bagPocket_Items[i];
+
+ // load player key items.
+ for (i = 0; i < 30; i++)
+ gLoadedSaveData.keyItems[i] = gSaveBlock1Ptr->bagPocket_KeyItems[i];
+
+ // load player pokeballs.
+ for (i = 0; i < 16; i++)
+ gLoadedSaveData.pokeBalls[i] = gSaveBlock1Ptr->bagPocket_PokeBalls[i];
+
+ // load player TMs and HMs.
+ for (i = 0; i < 64; i++)
+ gLoadedSaveData.TMsHMs[i] = gSaveBlock1Ptr->bagPocket_TMHM[i];
+
+ // load player berries.
+ for (i = 0; i < 46; i++)
+ gLoadedSaveData.berries[i] = gSaveBlock1Ptr->bagPocket_Berries[i];
+
+ // load mail.
+ for (i = 0; i < 16; i++)
+ gLoadedSaveData.mail[i] = gSaveBlock1Ptr->mail[i];
+
+ gLastEncryptionKey = gSaveBlock2Ptr->encryptionKey;
+}
+
+void copy_bags_and_unk_data_to_save_blocks(void)
+{
+ int i;
+ u32 encryptionKeyBackup;
+
+ // save player items.
+ for (i = 0; i < 30; i++)
+ gSaveBlock1Ptr->bagPocket_Items[i] = gLoadedSaveData.items[i];
+
+ // save player key items.
+ for (i = 0; i < 30; i++)
+ gSaveBlock1Ptr->bagPocket_KeyItems[i] = gLoadedSaveData.keyItems[i];
+
+ // save player pokeballs.
+ for (i = 0; i < 16; i++)
+ gSaveBlock1Ptr->bagPocket_PokeBalls[i] = gLoadedSaveData.pokeBalls[i];
+
+ // save player TMs and HMs.
+ for (i = 0; i < 64; i++)
+ gSaveBlock1Ptr->bagPocket_TMHM[i] = gLoadedSaveData.TMsHMs[i];
+
+ // save player berries.
+ for (i = 0; i < 46; i++)
+ gSaveBlock1Ptr->bagPocket_Berries[i] = gLoadedSaveData.berries[i];
+
+ // save mail.
+ for (i = 0; i < 16; i++)
+ gSaveBlock1Ptr->mail[i] = gLoadedSaveData.mail[i];
+
+ encryptionKeyBackup = gSaveBlock2Ptr->encryptionKey;
+ gSaveBlock2Ptr->encryptionKey = gLastEncryptionKey;
+ ApplyNewEncryptionKeyToBagItems(encryptionKeyBackup);
+ gSaveBlock2Ptr->encryptionKey = encryptionKeyBackup; // updated twice?
+}
+
+void ApplyNewEncryptionKeyToHword(u16 *hWord, u32 newKey)
+{
+ *hWord ^= gSaveBlock2Ptr->encryptionKey;
+ *hWord ^= newKey;
+}
+
+void ApplyNewEncryptionKeyToWord(u32 *word, u32 newKey)
+{
+ *word ^= gSaveBlock2Ptr->encryptionKey;
+ *word ^= newKey;
+}
+
+void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey)
+{
+ ApplyNewEncryptionKeyToGameStats(encryptionKey);
+ ApplyNewEncryptionKeyToBagItems_(encryptionKey);
+ ApplyNewEncryptionKeyToBerryPowder(encryptionKey);
+ ApplyNewEncryptionKeyToWord(&gSaveBlock1Ptr->money, encryptionKey);
+ ApplyNewEncryptionKeyToHword(&gSaveBlock1Ptr->coins, encryptionKey);
+}
diff --git a/src/lottery_corner.c b/src/lottery_corner.c
index 211b78f19..2ded9c943 100644
--- a/src/lottery_corner.c
+++ b/src/lottery_corner.c
@@ -2,9 +2,9 @@
#include "lottery_corner.h"
#include "event_data.h"
#include "pokemon.h"
-#include "items.h"
-#include "rng.h"
-#include "species.h"
+#include "constants/items.h"
+#include "random.h"
+#include "constants/species.h"
#include "string_util.h"
#include "text.h"
diff --git a/src/m4a_4.c b/src/m4a_4.c
index 99195ec00..e645fbef5 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;
@@ -66,7 +66,7 @@ void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16
{
if (track->flags & MPT_FLG_EXIST)
{
- track->keyShiftX = (s16)pitch >> 8;
+ track->keyShiftX = pitch >> 8;
track->pitX = pitch;
track->flags |= MPT_FLG_PITCHG;
}
diff --git a/src/mail.c b/src/mail.c
index 1ceb1be1a..ec7ff2ce2 100644
--- a/src/mail.c
+++ b/src/mail.c
@@ -1,14 +1,14 @@
-
-// Includes
#include "global.h"
+#include "mail.h"
+#include "constants/items.h"
#include "main.h"
#include "overworld.h"
#include "task.h"
#include "unknown_task.h"
#include "palette.h"
+#include "text.h"
#include "menu.h"
#include "menu_helpers.h"
-#include "text.h"
#include "text_window.h"
#include "string_util.h"
#include "international_string_util.h"
@@ -16,11 +16,46 @@
#include "gpu_regs.h"
#include "bg.h"
#include "pokemon_icon.h"
-#include "species.h"
+#include "constants/species.h"
#include "malloc.h"
#include "easy_chat.h"
-#include "mail_data.h"
-#include "mail.h"
+
+extern const u16 gUnknown_08DBE818[];
+extern const u16 gUnknown_08DBE838[];
+extern const u16 gUnknown_08DBE858[];
+extern const u16 gUnknown_08DBE878[];
+extern const u16 gUnknown_08DBE898[];
+extern const u16 gUnknown_08DBE8B8[];
+extern const u16 gUnknown_08DBE8D8[];
+extern const u16 gUnknown_08DBE8F8[];
+extern const u16 gUnknown_08DBE918[];
+extern const u16 gUnknown_08DBE938[];
+extern const u16 gUnknown_08DBE958[];
+extern const u16 gUnknown_08DBE978[];
+extern const u8 gUnknown_08DBE998[];
+extern const u8 gUnknown_08DBFBA4[];
+extern const u8 gUnknown_08DBEB38[];
+extern const u8 gUnknown_08DBFC7C[];
+extern const u8 gUnknown_08DBEC74[];
+extern const u8 gUnknown_08DBFD5C[];
+extern const u8 gUnknown_08DBEE84[];
+extern const u8 gUnknown_08DBFE68[];
+extern const u8 gUnknown_08DBEF5C[];
+extern const u8 gUnknown_08DBFF44[];
+extern const u8 gUnknown_08DBF154[];
+extern const u8 gUnknown_08DC0034[];
+extern const u8 gUnknown_08DBF2D4[];
+extern const u8 gUnknown_08DC0114[];
+extern const u8 gUnknown_08DBF37C[];
+extern const u8 gUnknown_08DC01F4[];
+extern const u8 gUnknown_08DBF50C[];
+extern const u8 gUnknown_08DC0300[];
+extern const u8 gUnknown_08DBF64C[];
+extern const u8 gUnknown_08DC03F0[];
+extern const u8 gUnknown_08DBF7B4[];
+extern const u8 gUnknown_08DC04E8[];
+extern const u8 gUnknown_08DBF904[];
+extern const u8 gUnknown_08DC0600[];
// Static type declarations
@@ -52,9 +87,7 @@ struct MailGraphics
u16 color12;
};
-// Static RAM declarations
-
-static EWRAM_DATA struct
+struct MailRead
{
/*0x0000*/ u8 strbuf[8][64];
/*0x0200*/ u8 playerName[12];
@@ -73,22 +106,26 @@ static EWRAM_DATA struct
/*0x0228*/ const struct MailLayout *layout;
/*0x022c*/ u8 bg1TilemapBuffer[0x1000];
/*0x122c*/ u8 bg2TilemapBuffer[0x1000];
-} *gUnknown_0203A134 = NULL;
+};
+
+// Static RAM declarations
+
+static EWRAM_DATA struct MailRead *sMailRead = NULL;
// Static ROM declarations
-void sub_81219F0(void);
-void sub_8121A1C(void);
-void sub_8121B1C(void);
-void sub_8121C50(void);
-void sub_8121C64(void);
-void sub_8121C98(void);
-void sub_8121CC0(void);
-void sub_8121D00(void);
+static void CB2_InitMailRead(void);
+static void sub_8121A1C(void);
+static void sub_8121B1C(void);
+static void VBlankCB_MailRead(void);
+static void CB2_MailRead(void);
+static void CB2_WaitForPaletteExitOnKeyPress(void);
+static void CB2_ExitOnKeyPress(void);
+static void CB2_ExitMailReadFreeVars(void);
// .rodata
-const struct BgTemplate gUnknown_0859F290[] = {
+static const struct BgTemplate sUnknown_0859F290[] = {
{
.bg = 0,
.charBaseIndex = 2,
@@ -107,7 +144,7 @@ const struct BgTemplate gUnknown_0859F290[] = {
}
};
-const struct WindowTemplate gUnknown_0859F29C[] = {
+static const struct WindowTemplate sUnknown_0859F29C[] = {
{
.priority = 0,
.tilemapLeft = 2,
@@ -120,55 +157,18 @@ const struct WindowTemplate gUnknown_0859F29C[] = {
DUMMY_WIN_TEMPLATE
};
-const u8 gUnknown_0859F2AC[] = {
+static const u8 sUnknown_0859F2AC[] = {
0,
10,
11
};
-const u16 gUnknown_0859F2B0[][2] = {
+static const u16 sUnknown_0859F2B0[][2] = {
{ 0x6ACD, 0x51A5 },
{ 0x45FC, 0x38D4 }
};
-extern const u16 gUnknown_08DBE818[];
-extern const u16 gUnknown_08DBE838[];
-extern const u16 gUnknown_08DBE858[];
-extern const u16 gUnknown_08DBE878[];
-extern const u16 gUnknown_08DBE898[];
-extern const u16 gUnknown_08DBE8B8[];
-extern const u16 gUnknown_08DBE8D8[];
-extern const u16 gUnknown_08DBE8F8[];
-extern const u16 gUnknown_08DBE918[];
-extern const u16 gUnknown_08DBE938[];
-extern const u16 gUnknown_08DBE958[];
-extern const u16 gUnknown_08DBE978[];
-extern const u8 gUnknown_08DBE998[];
-extern const u8 gUnknown_08DBFBA4[];
-extern const u8 gUnknown_08DBEB38[];
-extern const u8 gUnknown_08DBFC7C[];
-extern const u8 gUnknown_08DBEC74[];
-extern const u8 gUnknown_08DBFD5C[];
-extern const u8 gUnknown_08DBEE84[];
-extern const u8 gUnknown_08DBFE68[];
-extern const u8 gUnknown_08DBEF5C[];
-extern const u8 gUnknown_08DBFF44[];
-extern const u8 gUnknown_08DBF154[];
-extern const u8 gUnknown_08DC0034[];
-extern const u8 gUnknown_08DBF2D4[];
-extern const u8 gUnknown_08DC0114[];
-extern const u8 gUnknown_08DBF37C[];
-extern const u8 gUnknown_08DC01F4[];
-extern const u8 gUnknown_08DBF50C[];
-extern const u8 gUnknown_08DC0300[];
-extern const u8 gUnknown_08DBF64C[];
-extern const u8 gUnknown_08DC03F0[];
-extern const u8 gUnknown_08DBF7B4[];
-extern const u8 gUnknown_08DC04E8[];
-extern const u8 gUnknown_08DBF904[];
-extern const u8 gUnknown_08DC0600[];
-
-const struct MailGraphics gUnknown_0859F2B8[] = {
+static const struct MailGraphics sUnknown_0859F2B8[] = {
{
gUnknown_08DBE818, gUnknown_08DBE998, gUnknown_08DBFBA4, 0x02c0, 0x0000, 0x294a, 0x6739
}, {
@@ -196,13 +196,13 @@ const struct MailGraphics gUnknown_0859F2B8[] = {
}
};
-const struct UnkMailStruct Unknown_0859F3A8[] = {
+static const struct UnkMailStruct Unknown_0859F3A8[] = {
{ .numEasyChatWords = 3, .lineHeight = 16 },
{ .numEasyChatWords = 3, .lineHeight = 16 },
{ .numEasyChatWords = 3, .lineHeight = 16 }
};
-const struct MailLayout gUnknown_0859F3B4[] = {
+static const struct MailLayout sUnknown_0859F3B4[] = {
{ 0x03, 0x00, 0x00, 0x02, 0x04, Unknown_0859F3A8 },
{ 0x03, 0x00, 0x00, 0x02, 0x04, Unknown_0859F3A8 },
{ 0x03, 0x00, 0x00, 0x02, 0x04, Unknown_0859F3A8 },
@@ -217,7 +217,7 @@ const struct MailLayout gUnknown_0859F3B4[] = {
{ 0x03, 0x00, 0x00, 0x02, 0x00, Unknown_0859F3A8 }
};
-const struct UnkMailStruct Unknown_0859F444[] = {
+static const struct UnkMailStruct Unknown_0859F444[] = {
{ .numEasyChatWords = 2, .lineHeight = 16 },
{ .numEasyChatWords = 2, .lineHeight = 16 },
{ .numEasyChatWords = 2, .lineHeight = 16 },
@@ -225,7 +225,7 @@ const struct UnkMailStruct Unknown_0859F444[] = {
{ .numEasyChatWords = 1, .lineHeight = 16 }
};
-const struct MailLayout gUnknown_0859F458[] = {
+static const struct MailLayout sUnknown_0859F458[] = {
{ 0x05, 0x07, 0x58, 0x0b, 0x1e, Unknown_0859F444 },
{ 0x05, 0x0a, 0x60, 0x09, 0x1e, Unknown_0859F444 },
{ 0x05, 0x0c, 0x68, 0x05, 0x1e, Unknown_0859F444 },
@@ -242,23 +242,23 @@ const struct MailLayout gUnknown_0859F458[] = {
// What the heck are these meant to be? Call them u16 for now.
-const u16 Unknown_0859F4E8[] = {
+static const u16 Unknown_0859F4E8[] = {
0x00, 0x4000, 0x00, 0x00
};
-const u16 Unknown_0859F4F0[] = {
+static const u16 Unknown_0859F4F0[] = {
0x00, 0x00, -1, 0x00
};
-const u16 Unknown_0859F4F8[] = {
+static const u16 Unknown_0859F4F8[] = {
0x04, 0x00, -1, 0x00
};
-const u16 Unknown_0859F500[] = {
+static const u16 Unknown_0859F500[] = {
0x00, 0x40, -1, 0x00
};
-const u16 *const gUnknown_0859F508[] = {
+static const u16 *const sUnknown_0859F508[] = {
Unknown_0859F4F0,
Unknown_0859F4F8,
Unknown_0859F500
@@ -266,60 +266,62 @@ const u16 *const gUnknown_0859F508[] = {
// .text
-void sub_8121478(struct MailStruct *mail, MainCallback callback, bool8 flag) {
+void ReadMail(struct MailStruct *mail, void (*callback)(void), bool8 flag)
+{
u16 buffer[2];
u16 species;
- gUnknown_0203A134 = calloc(1, sizeof(*gUnknown_0203A134));
- gUnknown_0203A134->language = LANGUAGE_ENGLISH;
- gUnknown_0203A134->playerIsSender = TRUE;
- gUnknown_0203A134->parserSingle = CopyEasyChatWord;
- gUnknown_0203A134->parserMultiple = ConvertEasyChatWordsToString;
- if (mail->itemId >= ITEM_ORANGE_MAIL && mail->itemId <= ITEM_RETRO_MAIL) {
- gUnknown_0203A134->mailType = mail->itemId - ITEM_ORANGE_MAIL;
+ sMailRead = calloc(1, sizeof(*sMailRead));
+ sMailRead->language = LANGUAGE_ENGLISH;
+ sMailRead->playerIsSender = TRUE;
+ sMailRead->parserSingle = CopyEasyChatWord;
+ sMailRead->parserMultiple = ConvertEasyChatWordsToString;
+ if (IS_ITEM_MAIL(mail->itemId))
+ {
+ sMailRead->mailType = mail->itemId - ITEM_ORANGE_MAIL;
}
else
{
- gUnknown_0203A134->mailType = 0;
+ sMailRead->mailType = 0;
flag = FALSE;
}
- switch (gUnknown_0203A134->playerIsSender)
+ switch (sMailRead->playerIsSender)
{
case FALSE:
default:
- gUnknown_0203A134->layout = &gUnknown_0859F3B4[gUnknown_0203A134->mailType];
+ sMailRead->layout = &sUnknown_0859F3B4[sMailRead->mailType];
break;
case TRUE:
- gUnknown_0203A134->layout = &gUnknown_0859F458[gUnknown_0203A134->mailType];
+ sMailRead->layout = &sUnknown_0859F458[sMailRead->mailType];
break;
}
- species = sub_80D45E8(mail->species, buffer);
+ species = MailSpeciesToSpecies(mail->species, buffer);
if (species >= SPECIES_BULBASAUR && species < NUM_SPECIES)
{
- switch (gUnknown_0203A134->mailType)
+ switch (sMailRead->mailType)
{
default:
- gUnknown_0203A134->animsActive = 0;
+ sMailRead->animsActive = 0;
break;
case ITEM_BEAD_MAIL - ITEM_ORANGE_MAIL:
- gUnknown_0203A134->animsActive = 1;
+ sMailRead->animsActive = 1;
break;
case ITEM_DREAM_MAIL - ITEM_ORANGE_MAIL:
- gUnknown_0203A134->animsActive = 2;
+ sMailRead->animsActive = 2;
break;
}
}
else
{
- gUnknown_0203A134->animsActive = 0;
+ sMailRead->animsActive = 0;
}
- gUnknown_0203A134->mail = mail;
- gUnknown_0203A134->callback = callback;
- gUnknown_0203A134->flag = flag;
- SetMainCallback2(sub_81219F0);
+ sMailRead->mail = mail;
+ sMailRead->callback = callback;
+ sMailRead->flag = flag;
+ SetMainCallback2(CB2_InitMailRead);
}
-bool8 sub_81215EC(void)
+static bool8 MailReadBuildGraphics(void)
{
u16 icon;
@@ -353,21 +355,21 @@ bool8 sub_81215EC(void)
SetGpuReg(REG_OFFSET_BG2HOFS, 0x0000);
SetGpuReg(REG_OFFSET_BG3HOFS, 0x0000);
SetGpuReg(REG_OFFSET_BG3VOFS, 0x0000);
- SetGpuReg(REG_OFFSET_BLDCNT, 0x0000);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0x0000);
SetGpuReg(REG_OFFSET_BLDALPHA, 0x0000);
break;
case 6:
ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, gUnknown_0859F290, 3);
- SetBgTilemapBuffer(1, gUnknown_0203A134->bg1TilemapBuffer);
- SetBgTilemapBuffer(2, gUnknown_0203A134->bg2TilemapBuffer);
+ InitBgsFromTemplates(0, sUnknown_0859F290, 3);
+ SetBgTilemapBuffer(1, sMailRead->bg1TilemapBuffer);
+ SetBgTilemapBuffer(2, sMailRead->bg2TilemapBuffer);
break;
case 7:
- InitWindows(gUnknown_0859F29C);
+ InitWindows(sUnknown_0859F29C);
DeactivateAllTextPrinters();
break;
case 8:
- decompress_and_copy_tile_data_to_vram(1, gUnknown_0859F2B8[gUnknown_0203A134->mailType].tiles, 0, 0, 0);
+ decompress_and_copy_tile_data_to_vram(1, sUnknown_0859F2B8[sMailRead->mailType].tiles, 0, 0, 0);
break;
case 9:
if (free_temp_tile_data_buffers_if_possible())
@@ -378,7 +380,7 @@ bool8 sub_81215EC(void)
case 10:
FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20);
FillBgTilemapBufferRect_Palette0(2, 1, 0, 0, 30, 20);
- CopyToBgTilemapBuffer(1, gUnknown_0859F2B8[gUnknown_0203A134->mailType].tileMap, 0, 0);
+ CopyToBgTilemapBuffer(1, sUnknown_0859F2B8[sMailRead->mailType].tileMap, 0, 0);
break;
case 11:
CopyBgTilemapBufferToVram(0);
@@ -387,24 +389,24 @@ bool8 sub_81215EC(void)
break;
case 12:
LoadPalette(GetOverworldTextboxPalettePtr(), 240, 32);
- gPlttBufferUnfaded[250] = gUnknown_0859F2B8[gUnknown_0203A134->mailType].color10;
- gPlttBufferFaded[250] = gUnknown_0859F2B8[gUnknown_0203A134->mailType].color10;
- gPlttBufferUnfaded[251] = gUnknown_0859F2B8[gUnknown_0203A134->mailType].color12;
- gPlttBufferFaded[251] = gUnknown_0859F2B8[gUnknown_0203A134->mailType].color12;
- LoadPalette(gUnknown_0859F2B8[gUnknown_0203A134->mailType].palette, 0, 32);
- gPlttBufferUnfaded[10] = gUnknown_0859F2B0[gSaveBlock2Ptr->playerGender][0];
- gPlttBufferFaded[10] = gUnknown_0859F2B0[gSaveBlock2Ptr->playerGender][0];
- gPlttBufferUnfaded[11] = gUnknown_0859F2B0[gSaveBlock2Ptr->playerGender][1];
- gPlttBufferFaded[11] = gUnknown_0859F2B0[gSaveBlock2Ptr->playerGender][1];
+ gPlttBufferUnfaded[250] = sUnknown_0859F2B8[sMailRead->mailType].color10;
+ gPlttBufferFaded[250] = sUnknown_0859F2B8[sMailRead->mailType].color10;
+ gPlttBufferUnfaded[251] = sUnknown_0859F2B8[sMailRead->mailType].color12;
+ gPlttBufferFaded[251] = sUnknown_0859F2B8[sMailRead->mailType].color12;
+ LoadPalette(sUnknown_0859F2B8[sMailRead->mailType].palette, 0, 32);
+ gPlttBufferUnfaded[10] = sUnknown_0859F2B0[gSaveBlock2Ptr->playerGender][0];
+ gPlttBufferFaded[10] = sUnknown_0859F2B0[gSaveBlock2Ptr->playerGender][0];
+ gPlttBufferUnfaded[11] = sUnknown_0859F2B0[gSaveBlock2Ptr->playerGender][1];
+ gPlttBufferFaded[11] = sUnknown_0859F2B0[gSaveBlock2Ptr->playerGender][1];
break;
case 13:
- if (gUnknown_0203A134->flag)
+ if (sMailRead->flag)
{
sub_8121A1C();
}
break;
case 14:
- if (gUnknown_0203A134->flag)
+ if (sMailRead->flag)
{
sub_8121B1C();
RunTextPrinters();
@@ -417,20 +419,20 @@ bool8 sub_81215EC(void)
}
break;
case 16:
- SetVBlankCallback(sub_8121C50);
+ SetVBlankCallback(VBlankCB_MailRead);
gPaletteFade.bufferTransferDisabled = TRUE;
break;
case 17:
- icon = sub_80D2E84(gUnknown_0203A134->mail->species);
- switch (gUnknown_0203A134->animsActive)
+ icon = sub_80D2E84(sMailRead->mail->species);
+ switch (sMailRead->animsActive)
{
case 1:
sub_80D2F68(icon);
- gUnknown_0203A134->monIconSprite = sub_80D2D78(icon, SpriteCallbackDummy, 0x60, 0x80, 0, 0);
+ sMailRead->monIconSprite = sub_80D2D78(icon, SpriteCallbackDummy, 0x60, 0x80, 0, 0);
break;
case 2:
sub_80D2F68(icon);
- gUnknown_0203A134->monIconSprite = sub_80D2D78(icon, SpriteCallbackDummy, 0x28, 0x80, 0, 0);
+ sMailRead->monIconSprite = sub_80D2D78(icon, SpriteCallbackDummy, 0x28, 0x80, 0, 0);
break;
}
break;
@@ -441,53 +443,53 @@ bool8 sub_81215EC(void)
ShowBg(2);
BeginNormalPaletteFade(-1, 0, 16, 0, 0);
gPaletteFade.bufferTransferDisabled = FALSE;
- gUnknown_0203A134->callback2 = sub_8121C98;
+ sMailRead->callback2 = CB2_WaitForPaletteExitOnKeyPress;
return TRUE;
default:
return FALSE;
}
- gMain.state ++;
+ gMain.state++;
return FALSE;
}
-void sub_81219F0(void)
+static void CB2_InitMailRead(void)
{
do
{
- if (sub_81215EC() == TRUE)
+ if (MailReadBuildGraphics() == TRUE)
{
- SetMainCallback2(sub_8121C64);
+ SetMainCallback2(CB2_MailRead);
break;
}
} while (sub_81221AC() != TRUE);
}
-void sub_8121A1C(void)
+static void sub_8121A1C(void)
{
u16 i;
u8 total;
u8 *ptr;
total = 0;
- for (i = 0; i < gUnknown_0203A134->layout->numSubStructs; i ++)
+ for (i = 0; i < sMailRead->layout->numSubStructs; i ++)
{
- ConvertEasyChatWordsToString(gUnknown_0203A134->strbuf[i], &gUnknown_0203A134->mail->words[total], gUnknown_0203A134->layout->var8[i].numEasyChatWords, 1);
- total += gUnknown_0203A134->layout->var8[i].numEasyChatWords;
+ ConvertEasyChatWordsToString(sMailRead->strbuf[i], &sMailRead->mail->words[total], sMailRead->layout->var8[i].numEasyChatWords, 1);
+ total += sMailRead->layout->var8[i].numEasyChatWords;
}
- ptr = StringCopy(gUnknown_0203A134->playerName, gUnknown_0203A134->mail->playerName);
- if (!gUnknown_0203A134->playerIsSender)
+ ptr = StringCopy(sMailRead->playerName, sMailRead->mail->playerName);
+ if (!sMailRead->playerIsSender)
{
StringCopy(ptr, gText_FromSpace);
- gUnknown_0203A134->signatureWidth = gUnknown_0203A134->layout->signatureWidth - (StringLength(gUnknown_0203A134->playerName) * 8 - 0x60);
+ sMailRead->signatureWidth = sMailRead->layout->signatureWidth - (StringLength(sMailRead->playerName) * 8 - 0x60);
}
else
{
- sub_81DB52C(gUnknown_0203A134->playerName);
- gUnknown_0203A134->signatureWidth = gUnknown_0203A134->layout->signatureWidth;
+ sub_81DB52C(sMailRead->playerName);
+ sMailRead->signatureWidth = sMailRead->layout->signatureWidth;
}
}
-void sub_8121B1C(void)
+static void sub_8121B1C(void)
{
u16 i;
u8 strbuf[0x20];
@@ -501,77 +503,76 @@ void sub_8121B1C(void)
PutWindowTilemap(1);
FillWindowPixelBuffer(0, 0);
FillWindowPixelBuffer(1, 0);
- for (i = 0; i < gUnknown_0203A134->layout->numSubStructs; i ++)
+ for (i = 0; i < sMailRead->layout->numSubStructs; i ++)
{
- if (gUnknown_0203A134->strbuf[i][0] == EOS || gUnknown_0203A134->strbuf[i][0] == CHAR_SPACE)
+ if (sMailRead->strbuf[i][0] == EOS || sMailRead->strbuf[i][0] == CHAR_SPACE)
{
continue;
}
- box_print(0, 1, gUnknown_0203A134->layout->var8[i].xOffset + gUnknown_0203A134->layout->wordsYPos, y + gUnknown_0203A134->layout->wordsXPos, gUnknown_0859F2AC, 0, gUnknown_0203A134->strbuf[i]);
- y += gUnknown_0203A134->layout->var8[i].lineHeight;
+ box_print(0, 1, sMailRead->layout->var8[i].xOffset + sMailRead->layout->wordsYPos, y + sMailRead->layout->wordsXPos, sUnknown_0859F2AC, 0, sMailRead->strbuf[i]);
+ y += sMailRead->layout->var8[i].lineHeight;
}
bufptr = StringCopy(strbuf, gText_FromSpace);
- StringCopy(bufptr, gUnknown_0203A134->playerName);
- box_x = GetStringCenterAlignXOffset(1, strbuf, gUnknown_0203A134->signatureWidth) + 0x68;
- box_y = gUnknown_0203A134->layout->signatureYPos + 0x58;
- box_print(0, 1, box_x, box_y, gUnknown_0859F2AC, 0, strbuf);
+ StringCopy(bufptr, sMailRead->playerName);
+ box_x = GetStringCenterAlignXOffset(1, strbuf, sMailRead->signatureWidth) + 0x68;
+ box_y = sMailRead->layout->signatureYPos + 0x58;
+ box_print(0, 1, box_x, box_y, sUnknown_0859F2AC, 0, strbuf);
CopyWindowToVram(0, 3);
CopyWindowToVram(1, 3);
}
-void sub_8121C50(void)
+static void VBlankCB_MailRead(void)
{
LoadOam();
ProcessSpriteCopyRequests();
TransferPlttBuffer();
}
-void sub_8121C64(void)
+static void CB2_MailRead(void)
{
- if (gUnknown_0203A134->animsActive != 0)
+ if (sMailRead->animsActive != 0)
{
AnimateSprites();
BuildOamBuffer();
}
- gUnknown_0203A134->callback2();
+ sMailRead->callback2();
}
-void sub_8121C98(void)
+static void CB2_WaitForPaletteExitOnKeyPress(void)
{
if (!UpdatePaletteFade())
{
- gUnknown_0203A134->callback2 = sub_8121CC0;
+ sMailRead->callback2 = CB2_ExitOnKeyPress;
}
}
-void sub_8121CC0(void)
+static void CB2_ExitOnKeyPress(void)
{
if (gMain.newKeys & (A_BUTTON | B_BUTTON))
{
BeginNormalPaletteFade(-1, 0, 0, 16, 0);
- gUnknown_0203A134->callback2 = sub_8121D00;
+ sMailRead->callback2 = CB2_ExitMailReadFreeVars;
}
}
-void sub_8121D00(void)
+static void CB2_ExitMailReadFreeVars(void)
{
if (!UpdatePaletteFade())
{
- SetMainCallback2(gUnknown_0203A134->callback);
- switch (gUnknown_0203A134->animsActive)
+ SetMainCallback2(sMailRead->callback);
+ switch (sMailRead->animsActive)
{
case 1:
case 2:
- sub_80D2FF0(sub_80D2E84(gUnknown_0203A134->mail->species));
- sub_80D2EF8(&gSprites[gUnknown_0203A134->monIconSprite]);
+ sub_80D2FF0(sub_80D2E84(sMailRead->mail->species));
+ sub_80D2EF8(&gSprites[sMailRead->monIconSprite]);
}
- memset(gUnknown_0203A134, 0, sizeof(*gUnknown_0203A134));
+ memset(sMailRead, 0, sizeof(*sMailRead));
ResetPaletteFade();
UnsetBgTilemapBuffer(0);
UnsetBgTilemapBuffer(1);
ResetBgsAndClearDma3BusyFlags(0);
FreeAllWindowBuffers();
- free(gUnknown_0203A134);
- gUnknown_0203A134 = NULL;
+ FREE_AND_SET_NULL(sMailRead);
}
}
diff --git a/src/mail_data.c b/src/mail_data.c
new file mode 100644
index 000000000..ebb49febf
--- /dev/null
+++ b/src/mail_data.c
@@ -0,0 +1,203 @@
+#include "global.h"
+#include "mail.h"
+#include "constants/items.h"
+#include "pokemon.h"
+#include "pokemon_icon.h"
+#include "constants/species.h"
+#include "text.h"
+#include "international_string_util.h"
+
+void ClearMailData(void)
+{
+ u8 i;
+
+ for (i = 0; i < MAIL_COUNT; i++)
+ ClearMailStruct(&gSaveBlock1Ptr->mail[i]);
+}
+
+void ClearMailStruct(struct MailStruct *mail)
+{
+ s32 i;
+
+ for (i = 0; i < MAIL_WORDS_COUNT; i++)
+ mail->words[i] = 0xFFFF;
+
+ for (i = 0; i < PLAYER_NAME_LENGTH; i++)
+ mail->playerName[i] = EOS;
+
+ for (i = 0; i < 4; i++)
+ mail->trainerId[i] = 0;
+
+ mail->species = SPECIES_BULBASAUR;
+ mail->itemId = ITEM_NONE;
+}
+
+bool8 MonHasMail(struct Pokemon *mon)
+{
+ u16 heldItem = GetMonData(mon, MON_DATA_HELD_ITEM);
+ if (ItemIsMail(heldItem) && GetMonData(mon, MON_DATA_MAIL) != 0xFF)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+u8 GiveMailToMon(struct Pokemon *mon, u16 itemId)
+{
+ u8 heldItem[2];
+ u8 id, i;
+ u16 species;
+ u32 personality;
+
+ heldItem[0] = itemId;
+ heldItem[1] = itemId >> 8;
+
+ for (id = 0; id < PARTY_SIZE; id++)
+ {
+ if (gSaveBlock1Ptr->mail[id].itemId == 0)
+ {
+ for (i = 0; i < MAIL_WORDS_COUNT; i++)
+ gSaveBlock1Ptr->mail[id].words[i] = 0xFFFF;
+
+ for (i = 0; i < PLAYER_NAME_LENGTH - 1; i++)
+ gSaveBlock1Ptr->mail[id].playerName[i] = gSaveBlock2Ptr->playerName[i];
+ gSaveBlock1Ptr->mail[id].playerName[i] = EOS;
+ PadNameString(gSaveBlock1Ptr->mail[id].playerName, CHAR_SPACE);
+
+ for (i = 0; i < 4; i++)
+ gSaveBlock1Ptr->mail[id].trainerId[i] = gSaveBlock2Ptr->playerTrainerId[i];
+
+ species = GetBoxMonData(&mon->box, MON_DATA_SPECIES);
+ personality = GetBoxMonData(&mon->box, MON_DATA_PERSONALITY);
+ gSaveBlock1Ptr->mail[id].species = SpeciesToMailSpecies(species, personality);
+ gSaveBlock1Ptr->mail[id].itemId = itemId;
+ SetMonData(mon, MON_DATA_MAIL, &id);
+ SetMonData(mon, MON_DATA_HELD_ITEM, heldItem);
+ return id;
+ }
+ }
+
+ return 0xFF;
+}
+
+u16 SpeciesToMailSpecies(u16 species, u32 personality)
+{
+ if (species == SPECIES_UNOWN)
+ {
+ u32 species = GetUnownLetterByPersonality(personality) + 30000;
+ return species;
+ }
+
+ return species;
+}
+
+u16 MailSpeciesToSpecies(u16 mailSpecies, u16 *buffer)
+{
+ u16 result;
+
+ if (mailSpecies >= 30000 && mailSpecies < (30000 + UNOWN_FORM_COUNT))
+ {
+ result = SPECIES_UNOWN;
+ *buffer = mailSpecies - 30000;
+ }
+ else
+ {
+ result = mailSpecies;
+ }
+
+ return result;
+}
+
+u8 GiveMailToMon2(struct Pokemon *mon, struct MailStruct *mail)
+{
+ u8 heldItem[2];
+ u16 itemId = mail->itemId;
+ u8 mailId = GiveMailToMon(mon, itemId);
+
+ if (mailId == 0xFF)
+ return 0xFF;
+
+ gSaveBlock1Ptr->mail[mailId] = *mail;
+
+ SetMonData(mon, MON_DATA_MAIL, &mailId);
+
+ heldItem[0] = itemId;
+ heldItem[1] = itemId >> 8;
+
+ SetMonData(mon, MON_DATA_HELD_ITEM, heldItem);
+
+ return mailId;
+}
+
+static bool32 DummyMailFunc(void)
+{
+ return FALSE;
+}
+
+void TakeMailFromMon(struct Pokemon *mon)
+{
+ u8 heldItem[2];
+ u8 mailId;
+
+ if (MonHasMail(mon))
+ {
+ mailId = GetMonData(mon, MON_DATA_MAIL);
+ gSaveBlock1Ptr->mail[mailId].itemId = ITEM_NONE;
+ mailId = 0xFF;
+ heldItem[0] = ITEM_NONE;
+ heldItem[1] = ITEM_NONE << 8;
+ SetMonData(mon, MON_DATA_MAIL, &mailId);
+ SetMonData(mon, MON_DATA_HELD_ITEM, heldItem);
+ }
+}
+
+void ClearMailItemId(u8 mailId)
+{
+ gSaveBlock1Ptr->mail[mailId].itemId = ITEM_NONE;
+}
+
+u8 TakeMailFromMon2(struct Pokemon *mon)
+{
+ u8 i;
+ u8 newHeldItem[2];
+ u8 newMailId;
+
+ newHeldItem[0] = ITEM_NONE;
+ newHeldItem[1] = ITEM_NONE << 8;
+ newMailId = 0xFF;
+
+ for (i = PARTY_SIZE; i < MAIL_COUNT; i++)
+ {
+ if (gSaveBlock1Ptr->mail[i].itemId == ITEM_NONE)
+ {
+ memcpy(&gSaveBlock1Ptr->mail[i], &gSaveBlock1Ptr->mail[GetMonData(mon, MON_DATA_MAIL)], sizeof(struct MailStruct));
+ gSaveBlock1Ptr->mail[GetMonData(mon, MON_DATA_MAIL)].itemId = ITEM_NONE;
+ SetMonData(mon, MON_DATA_MAIL, &newMailId);
+ SetMonData(mon, MON_DATA_HELD_ITEM, newHeldItem);
+ return i;
+ }
+ }
+
+ return 0xFF;
+}
+
+bool8 ItemIsMail(u16 itemId)
+{
+ switch (itemId)
+ {
+ case ITEM_ORANGE_MAIL:
+ case ITEM_HARBOR_MAIL:
+ case ITEM_GLITTER_MAIL:
+ case ITEM_MECH_MAIL:
+ case ITEM_WOOD_MAIL:
+ case ITEM_WAVE_MAIL:
+ case ITEM_BEAD_MAIL:
+ case ITEM_SHADOW_MAIL:
+ case ITEM_TROPIC_MAIL:
+ case ITEM_DREAM_MAIL:
+ case ITEM_FAB_MAIL:
+ case ITEM_RETRO_MAIL:
+ return TRUE;
+ default:
+ return FALSE;
+ }
+}
diff --git a/src/main.c b/src/main.c
index 665a4dd84..07ce07f1c 100644
--- a/src/main.c
+++ b/src/main.c
@@ -2,7 +2,7 @@
#include "main.h"
#include "m4a.h"
#include "rtc.h"
-#include "rng.h"
+#include "random.h"
#include "dma3.h"
#include "gba/flash_internal.h"
#include "battle.h"
diff --git a/src/new_game.c b/src/new_game.c
index 75e80dc8e..12873fec9 100644
--- a/src/new_game.c
+++ b/src/new_game.c
@@ -1,6 +1,6 @@
#include "global.h"
#include "new_game.h"
-#include "rng.h"
+#include "random.h"
#include "pokemon.h"
#include "roamer.h"
#include "pokemon_size_record.h"
diff --git a/src/rom4.c b/src/overworld.c
index c538595f2..c538595f2 100644
--- a/src/rom4.c
+++ b/src/overworld.c
diff --git a/src/pokeball.c b/src/pokeball.c
new file mode 100644
index 000000000..127ba8e9d
--- /dev/null
+++ b/src/pokeball.c
@@ -0,0 +1,1282 @@
+#include "global.h"
+#include "pokemon.h"
+#include "sprite.h"
+#include "pokeball.h"
+#include "battle.h"
+#include "battle_anim.h"
+#include "task.h"
+#include "sound.h"
+#include "constants/songs.h"
+#include "trig.h"
+#include "main.h"
+#include "m4a.h"
+#include "decompress.h"
+#include "constants/species.h"
+#include "util.h"
+#include "graphics.h"
+
+extern bool8 gDoingBattleAnim;
+extern u8 gActiveBank;
+extern u8 gBankTarget;
+extern u16 gBattlePartyID[];
+extern u8 gBankSpriteIds[];
+extern u8 gHealthBoxesIds[];
+extern struct MusicPlayerInfo gMPlay_BGM;
+
+// this file's functions
+static void Task_DoPokeballSendOutAnim(u8 taskId);
+static void SpriteCB_TestBallThrow(struct Sprite *sprite);
+static void SpriteCB_PlayerMonSendOut_1(struct Sprite *sprite);
+static void SpriteCB_PlayerMonSendOut_2(struct Sprite *sprite);
+static void SpriteCB_OpponentMonSendOut(struct Sprite *sprite);
+static void sub_80756D4(struct Sprite *sprite);
+static void sub_80756E0(struct Sprite *sprite);
+static void sub_807574C(struct Sprite *sprite);
+static void sub_80757E4(struct Sprite *sprite);
+static void sub_8075838(struct Sprite *sprite);
+static void sub_8075930(struct Sprite *sprite);
+static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite);
+static void SpriteCB_ReleaseMon2FromBall(struct Sprite *sprite);
+static void sub_8075970(struct Sprite *sprite);
+static void HandleBallAnimEnd(struct Sprite *sprite);
+static void sub_8075FB4(struct Sprite *sprite);
+static void sub_80760F8(struct Sprite *sprite);
+static void sub_8076524(struct Sprite *sprite);
+static void sub_80765E0(struct Sprite *sprite);
+static void sub_80767D4(struct Sprite *sprite);
+static void sub_807687C(struct Sprite *sprite);
+static void sub_80768F0(struct Sprite *sprite);
+static void sub_80769A8(struct Sprite *sprite);
+static void sub_80769CC(struct Sprite *sprite);
+static void SpriteCB_HitAnimHealthoxEffect(struct Sprite *sprite);
+static u16 GetBankPokeballItemId(u8 bank);
+
+// rom const data
+
+#define GFX_TAG_POKEBALL 55000
+#define GFX_TAG_GREATBALL 55001
+#define GFX_TAG_SAFARIBALL 55002
+#define GFX_TAG_ULTRABALL 55003
+#define GFX_TAG_MASTERBALL 55004
+#define GFX_TAG_NETBALL 55005
+#define GFX_TAG_DIVEBALL 55006
+#define GFX_TAG_NESTBALL 55007
+#define GFX_TAG_REPEATBALL 55008
+#define GFX_TAG_TIMERBALL 55009
+#define GFX_TAG_LUXURYBALL 55010
+#define GFX_TAG_PREMIERBALL 55011
+
+const struct CompressedSpriteSheet gBallSpriteSheets[POKEBALL_COUNT] =
+{
+ {gInterfaceGfx_PokeBall, 384, GFX_TAG_POKEBALL},
+ {gInterfaceGfx_GreatBall, 384, GFX_TAG_GREATBALL},
+ {gInterfaceGfx_SafariBall, 384, GFX_TAG_SAFARIBALL},
+ {gInterfaceGfx_UltraBall, 384, GFX_TAG_ULTRABALL},
+ {gInterfaceGfx_MasterBall, 384, GFX_TAG_MASTERBALL},
+ {gInterfaceGfx_NetBall, 384, GFX_TAG_NETBALL},
+ {gInterfaceGfx_DiveBall, 384, GFX_TAG_DIVEBALL},
+ {gInterfaceGfx_NestBall, 384, GFX_TAG_NESTBALL},
+ {gInterfaceGfx_RepeatBall, 384, GFX_TAG_REPEATBALL},
+ {gInterfaceGfx_TimerBall, 384, GFX_TAG_TIMERBALL},
+ {gInterfaceGfx_LuxuryBall, 384, GFX_TAG_LUXURYBALL},
+ {gInterfaceGfx_PremierBall, 384, GFX_TAG_PREMIERBALL},
+};
+
+const struct CompressedSpritePalette gBallSpritePalettes[POKEBALL_COUNT] =
+{
+ {gInterfacePal_PokeBall, GFX_TAG_POKEBALL},
+ {gInterfacePal_GreatBall, GFX_TAG_GREATBALL},
+ {gInterfacePal_SafariBall, GFX_TAG_SAFARIBALL},
+ {gInterfacePal_UltraBall, GFX_TAG_ULTRABALL},
+ {gInterfacePal_MasterBall, GFX_TAG_MASTERBALL},
+ {gInterfacePal_NetBall, GFX_TAG_NETBALL},
+ {gInterfacePal_DiveBall, GFX_TAG_DIVEBALL},
+ {gInterfacePal_NestBall, GFX_TAG_NESTBALL},
+ {gInterfacePal_RepeatBall, GFX_TAG_REPEATBALL},
+ {gInterfacePal_TimerBall, GFX_TAG_TIMERBALL},
+ {gInterfacePal_LuxuryBall, GFX_TAG_LUXURYBALL},
+ {gInterfacePal_PremierBall, GFX_TAG_PREMIERBALL},
+};
+
+static const struct OamData sBallOamData =
+{
+ .y = 0,
+ .affineMode = 3,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sBallAnimSeq3[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_JUMP(0),
+};
+
+static const union AnimCmd sBallAnimSeq5[] =
+{
+ ANIMCMD_FRAME(4, 1),
+ ANIMCMD_JUMP(0),
+};
+
+static const union AnimCmd sBallAnimSeq4[] =
+{
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_JUMP(0),
+};
+
+static const union AnimCmd sBallAnimSeq6[] =
+{
+ ANIMCMD_FRAME(12, 1),
+ ANIMCMD_JUMP(0),
+};
+
+static const union AnimCmd sBallAnimSeq0[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sBallAnimSeq1[] =
+{
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd sBallAnimSeq2[] =
+{
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END,
+};
+
+static const union AnimCmd *const sBallAnimSequences[] =
+{
+ sBallAnimSeq0,
+ sBallAnimSeq1,
+ sBallAnimSeq2,
+
+ // unused?
+ sBallAnimSeq3,
+ sBallAnimSeq4,
+ sBallAnimSeq5,
+ sBallAnimSeq6,
+};
+
+static const union AffineAnimCmd sBallAffineAnimSeq0[] =
+{
+ AFFINEANIMCMD_FRAME(0, 0, 0, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+static const union AffineAnimCmd sBallAffineAnimSeq1[] =
+{
+ AFFINEANIMCMD_FRAME(0, 0, -3, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+static const union AffineAnimCmd sBallAffineAnimSeq2[] =
+{
+ AFFINEANIMCMD_FRAME(0, 0, 3, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+static const union AffineAnimCmd sBallAffineAnimSeq3[] =
+{
+ AFFINEANIMCMD_FRAME(256, 256, 0, 0),
+ AFFINEANIMCMD_END,
+};
+
+static const union AffineAnimCmd sBallAffineAnimSeq4[] =
+{
+ AFFINEANIMCMD_FRAME(0, 0, 25, 1),
+ AFFINEANIMCMD_JUMP(0),
+};
+
+static const union AffineAnimCmd *const sBallAffineAnimSequences[] =
+{
+ sBallAffineAnimSeq0,
+ sBallAffineAnimSeq1,
+ sBallAffineAnimSeq2,
+ sBallAffineAnimSeq3,
+ sBallAffineAnimSeq4,
+};
+
+const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] =
+{
+ {
+ .tileTag = GFX_TAG_POKEBALL,
+ .paletteTag = GFX_TAG_POKEBALL,
+ .oam = &sBallOamData,
+ .anims = sBallAnimSequences,
+ .images = NULL,
+ .affineAnims = sBallAffineAnimSequences,
+ .callback = SpriteCB_TestBallThrow,
+ },
+ {
+ .tileTag = GFX_TAG_GREATBALL,
+ .paletteTag = GFX_TAG_GREATBALL,
+ .oam = &sBallOamData,
+ .anims = sBallAnimSequences,
+ .images = NULL,
+ .affineAnims = sBallAffineAnimSequences,
+ .callback = SpriteCB_TestBallThrow,
+ },
+ {
+ .tileTag = GFX_TAG_SAFARIBALL,
+ .paletteTag = GFX_TAG_SAFARIBALL,
+ .oam = &sBallOamData,
+ .anims = sBallAnimSequences,
+ .images = NULL,
+ .affineAnims = sBallAffineAnimSequences,
+ .callback = SpriteCB_TestBallThrow,
+ },
+ {
+ .tileTag = GFX_TAG_ULTRABALL,
+ .paletteTag = GFX_TAG_ULTRABALL,
+ .oam = &sBallOamData,
+ .anims = sBallAnimSequences,
+ .images = NULL,
+ .affineAnims = sBallAffineAnimSequences,
+ .callback = SpriteCB_TestBallThrow,
+ },
+ {
+ .tileTag = GFX_TAG_MASTERBALL,
+ .paletteTag = GFX_TAG_MASTERBALL,
+ .oam = &sBallOamData,
+ .anims = sBallAnimSequences,
+ .images = NULL,
+ .affineAnims = sBallAffineAnimSequences,
+ .callback = SpriteCB_TestBallThrow,
+ },
+ {
+ .tileTag = GFX_TAG_NETBALL,
+ .paletteTag = GFX_TAG_NETBALL,
+ .oam = &sBallOamData,
+ .anims = sBallAnimSequences,
+ .images = NULL,
+ .affineAnims = sBallAffineAnimSequences,
+ .callback = SpriteCB_TestBallThrow,
+ },
+ {
+ .tileTag = GFX_TAG_DIVEBALL,
+ .paletteTag = GFX_TAG_DIVEBALL,
+ .oam = &sBallOamData,
+ .anims = sBallAnimSequences,
+ .images = NULL,
+ .affineAnims = sBallAffineAnimSequences,
+ .callback = SpriteCB_TestBallThrow,
+ },
+ {
+ .tileTag = GFX_TAG_NESTBALL,
+ .paletteTag = GFX_TAG_NESTBALL,
+ .oam = &sBallOamData,
+ .anims = sBallAnimSequences,
+ .images = NULL,
+ .affineAnims = sBallAffineAnimSequences,
+ .callback = SpriteCB_TestBallThrow,
+ },
+ {
+ .tileTag = GFX_TAG_REPEATBALL,
+ .paletteTag = GFX_TAG_REPEATBALL,
+ .oam = &sBallOamData,
+ .anims = sBallAnimSequences,
+ .images = NULL,
+ .affineAnims = sBallAffineAnimSequences,
+ .callback = SpriteCB_TestBallThrow,
+ },
+ {
+ .tileTag = GFX_TAG_TIMERBALL,
+ .paletteTag = GFX_TAG_TIMERBALL,
+ .oam = &sBallOamData,
+ .anims = sBallAnimSequences,
+ .images = NULL,
+ .affineAnims = sBallAffineAnimSequences,
+ .callback = SpriteCB_TestBallThrow,
+ },
+ {
+ .tileTag = GFX_TAG_LUXURYBALL,
+ .paletteTag = GFX_TAG_LUXURYBALL,
+ .oam = &sBallOamData,
+ .anims = sBallAnimSequences,
+ .images = NULL,
+ .affineAnims = sBallAffineAnimSequences,
+ .callback = SpriteCB_TestBallThrow,
+ },
+ {
+ .tileTag = GFX_TAG_PREMIERBALL,
+ .paletteTag = GFX_TAG_PREMIERBALL,
+ .oam = &sBallOamData,
+ .anims = sBallAnimSequences,
+ .images = NULL,
+ .affineAnims = sBallAffineAnimSequences,
+ .callback = SpriteCB_TestBallThrow,
+ },
+};
+
+#define tFrames data[0]
+#define tPan data[1]
+#define tThrowId data[2]
+#define tBank data[3]
+#define tOpponentBank data[4]
+
+u8 DoPokeballSendOutAnimation(s16 pan, u8 kindOfThrow)
+{
+ u8 taskId;
+
+ gDoingBattleAnim = TRUE;
+ gBattleSpritesDataPtr->healthBoxesData[gActiveBank].ballAnimActive = 1;
+
+ taskId = CreateTask(Task_DoPokeballSendOutAnim, 5);
+ gTasks[taskId].tPan = pan;
+ gTasks[taskId].tThrowId = kindOfThrow;
+ gTasks[taskId].tBank = gActiveBank;
+
+ return 0;
+}
+
+#define sBank data[6]
+
+static void Task_DoPokeballSendOutAnim(u8 taskId)
+{
+ u16 throwCaseId;
+ u8 bank;
+ u16 itemId, ballId;
+ u8 ballSpriteId;
+ bool8 notSendOut = FALSE;
+
+ if (gTasks[taskId].tFrames == 0)
+ {
+ gTasks[taskId].tFrames++;
+ return;
+ }
+
+ throwCaseId = gTasks[taskId].tThrowId;
+ bank = gTasks[taskId].tBank;
+
+ if (GetBankSide(bank) != SIDE_PLAYER)
+ itemId = GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_POKEBALL);
+ else
+ itemId = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_POKEBALL);
+
+ ballId = ItemIdToBallId(itemId);
+ LoadBallGfx(ballId);
+ ballSpriteId = CreateSprite(&gBallSpriteTemplates[ballId], 32, 80, 29);
+ gSprites[ballSpriteId].data[0] = 0x80;
+ gSprites[ballSpriteId].data[1] = 0;
+ gSprites[ballSpriteId].data[7] = throwCaseId;
+
+ switch (throwCaseId)
+ {
+ case POKEBALL_PLAYER_SENDOUT:
+ gBankTarget = bank;
+ gSprites[ballSpriteId].pos1.x = 24;
+ gSprites[ballSpriteId].pos1.y = 68;
+ gSprites[ballSpriteId].callback = SpriteCB_PlayerMonSendOut_1;
+ break;
+ case POKEBALL_OPPONENT_SENDOUT:
+ gSprites[ballSpriteId].pos1.x = GetBankPosition(bank, BANK_X_POS);
+ gSprites[ballSpriteId].pos1.y = GetBankPosition(bank, BANK_Y_POS) + 24;
+ gBankTarget = bank;
+ gSprites[ballSpriteId].data[0] = 0;
+ gSprites[ballSpriteId].callback = SpriteCB_OpponentMonSendOut;
+ break;
+ default:
+ gBankTarget = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
+ notSendOut = TRUE;
+ break;
+ }
+
+ gSprites[ballSpriteId].sBank = gBankTarget;
+ if (!notSendOut)
+ {
+ DestroyTask(taskId);
+ return;
+ }
+
+ // this will perform an unused ball throw animation
+ gSprites[ballSpriteId].data[0] = 0x22;
+ gSprites[ballSpriteId].data[2] = GetBankPosition(gBankTarget, BANK_X_POS);
+ gSprites[ballSpriteId].data[4] = GetBankPosition(gBankTarget, BANK_Y_POS) - 16;
+ gSprites[ballSpriteId].data[5] = -40;
+ sub_80A68D4(&gSprites[ballSpriteId]);
+ gSprites[ballSpriteId].oam.affineParam = taskId;
+ gTasks[taskId].tOpponentBank = gBankTarget;
+ gTasks[taskId].func = TaskDummy;
+ PlaySE(SE_NAGERU);
+}
+
+static void SpriteCB_TestBallThrow(struct Sprite *sprite)
+{
+ if (AnimateBallThrow(sprite))
+ {
+ u16 ballId;
+ u8 taskId = sprite->oam.affineParam;
+ u8 opponentBank = gTasks[taskId].tOpponentBank;
+ u8 noOfShakes = gTasks[taskId].tThrowId;
+
+ StartSpriteAnim(sprite, 1);
+ sprite->affineAnimPaused = 1;
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.x = 0;
+ sprite->pos2.y = 0;
+ sprite->data[5] = 0;
+ ballId = ItemIdToBallId(GetBankPokeballItemId(opponentBank));
+ LaunchBallStarsTask(sprite->pos1.x, sprite->pos1.y - 5, 1, 0x1C, ballId);
+ sprite->data[0] = LaunchBallFadeMonTask(FALSE, opponentBank, 14, ballId);
+ sprite->sBank = opponentBank;
+ sprite->data[7] = noOfShakes;
+ DestroyTask(taskId);
+ sprite->callback = sub_80756D4;
+ }
+}
+
+#undef tFrames
+#undef tPan
+#undef tThrowId
+#undef tBank
+#undef tOpponentBank
+
+static void sub_80756D4(struct Sprite *sprite)
+{
+ sprite->callback = sub_80756E0;
+}
+
+static void sub_80756E0(struct Sprite *sprite)
+{
+ if (++sprite->data[5] == 10)
+ {
+ sprite->data[5] = 0;
+ sprite->callback = sub_807574C;
+ StartSpriteAffineAnim(&gSprites[gBankSpriteIds[sprite->sBank]], 2);
+ AnimateSprite(&gSprites[gBankSpriteIds[sprite->sBank]]);
+ gSprites[gBankSpriteIds[sprite->sBank]].data[1] = 0;
+ }
+}
+
+static void sub_807574C(struct Sprite *sprite)
+{
+ sprite->data[5]++;
+ if (sprite->data[5] == 11)
+ PlaySE(SE_SUIKOMU);
+ if (gSprites[gBankSpriteIds[sprite->sBank]].affineAnimEnded)
+ {
+ StartSpriteAnim(sprite, 2);
+ gSprites[gBankSpriteIds[sprite->sBank]].invisible = TRUE;
+ sprite->data[5] = 0;
+ sprite->callback = sub_80757E4;
+ }
+ else
+ {
+ gSprites[gBankSpriteIds[sprite->sBank]].data[1] += 0x60;
+ gSprites[gBankSpriteIds[sprite->sBank]].pos2.y = -gSprites[gBankSpriteIds[sprite->sBank]].data[1] >> 8;
+ }
+}
+
+static void sub_80757E4(struct Sprite *sprite)
+{
+ if (sprite->animEnded)
+ {
+ sprite->data[5]++;
+ if (sprite->data[5] == 1)
+ {
+ sprite->data[3] = 0;
+ sprite->data[4] = 32;
+ sprite->data[5] = 0;
+ sprite->pos1.y += Cos(0, 32);
+ sprite->pos2.y = -Cos(0, sprite->data[4]);
+ sprite->callback = sub_8075838;
+ }
+ }
+}
+
+static void sub_8075838(struct Sprite *sprite)
+{
+ bool8 r5 = FALSE;
+
+ switch (sprite->data[3] & 0xFF)
+ {
+ case 0:
+ sprite->pos2.y = -Cos(sprite->data[5], sprite->data[4]);
+ sprite->data[5] += 4 + (sprite->data[3] >> 8);
+ if (sprite->data[5] >= 64)
+ {
+ sprite->data[4] -= 10;
+ sprite->data[3] += 0x101;
+ if (sprite->data[3] >> 8 == 4)
+ r5 = TRUE;
+ switch (sprite->data[3] >> 8)
+ {
+ case 1:
+ PlaySE(SE_KON);
+ break;
+ case 2:
+ PlaySE(SE_KON2);
+ break;
+ case 3:
+ PlaySE(SE_KON3);
+ break;
+ default:
+ PlaySE(SE_KON4);
+ break;
+ }
+ }
+ break;
+ case 1:
+ sprite->pos2.y = -Cos(sprite->data[5], sprite->data[4]);
+ sprite->data[5] -= 4 + (sprite->data[3] >> 8);
+ if (sprite->data[5] <= 0)
+ {
+ sprite->data[5] = 0;
+ sprite->data[3] &= 0xFF00;
+ }
+ break;
+ }
+ if (r5)
+ {
+ sprite->data[3] = 0;
+ sprite->pos1.y += Cos(64, 32);
+ sprite->pos2.y = 0;
+ if (sprite->data[7] == 0)
+ {
+ sprite->callback = SpriteCB_ReleaseMonFromBall;
+ }
+ else
+ {
+ sprite->callback = sub_8075930;
+ sprite->data[4] = 1;
+ sprite->data[5] = 0;
+ }
+ }
+}
+
+static void sub_8075930(struct Sprite *sprite)
+{
+ sprite->data[3]++;
+ if (sprite->data[3] == 31)
+ {
+ sprite->data[3] = 0;
+ sprite->affineAnimPaused = TRUE;
+ StartSpriteAffineAnim(sprite, 1);
+ sprite->callback = sub_8075970;
+ PlaySE(SE_BOWA);
+ }
+}
+
+static void sub_8075970(struct Sprite *sprite)
+{
+ switch (sprite->data[3] & 0xFF)
+ {
+ case 0:
+ case 2:
+ sprite->pos2.x += sprite->data[4];
+ sprite->data[5] += sprite->data[4];
+ sprite->affineAnimPaused = FALSE;
+ if (sprite->data[5] > 3 || sprite->data[5] < -3)
+ {
+ sprite->data[3]++;
+ sprite->data[5] = 0;
+ }
+ break;
+ case 1:
+ sprite->data[5]++;
+ if (sprite->data[5] == 1)
+ {
+ sprite->data[5] = 0;
+ sprite->data[4] = -sprite->data[4];
+ sprite->data[3]++;
+ sprite->affineAnimPaused = FALSE;
+ if (sprite->data[4] < 0)
+ ChangeSpriteAffineAnim(sprite, 2);
+ else
+ ChangeSpriteAffineAnim(sprite, 1);
+ }
+ else
+ {
+ sprite->affineAnimPaused = TRUE;
+ }
+ break;
+ case 3:
+ sprite->data[3] += 0x100;
+ if (sprite->data[3] >> 8 == sprite->data[7])
+ {
+ sprite->callback = SpriteCB_ReleaseMonFromBall;
+ }
+ else
+ {
+ if (sprite->data[7] == 4 && sprite->data[3] >> 8 == 3)
+ {
+ sprite->callback = sub_8075FB4;
+ sprite->affineAnimPaused = TRUE;
+ }
+ else
+ {
+ sprite->data[3]++;
+ sprite->affineAnimPaused = TRUE;
+ }
+ }
+ break;
+ case 4:
+ default:
+ sprite->data[5]++;
+ if (sprite->data[5] == 31)
+ {
+ sprite->data[5] = 0;
+ sprite->data[3] &= 0xFF00;
+ StartSpriteAffineAnim(sprite, 3);
+ if (sprite->data[4] < 0)
+ StartSpriteAffineAnim(sprite, 2);
+ else
+ StartSpriteAffineAnim(sprite, 1);
+ PlaySE(SE_BOWA);
+ }
+ break;
+ }
+}
+
+#define tCryTaskSpecies data[0]
+#define tCryTaskPan data[1]
+#define tCryTaskWantedCry data[2]
+#define tCryTaskBank data[3]
+#define tCryTaskMonSpriteId data[4]
+#define tCryTaskMonPtr1 data[5]
+#define tCryTaskMonPtr2 data[6]
+#define tCryTaskFrames data[10]
+#define tCryTaskState data[15]
+
+static void Task_PlayCryWhenReleasedFromBall(u8 taskId)
+{
+ u8 wantedCry = gTasks[taskId].tCryTaskWantedCry;
+ s8 pan = gTasks[taskId].tCryTaskPan;
+ u16 species = gTasks[taskId].tCryTaskSpecies;
+ u8 bank = gTasks[taskId].tCryTaskBank;
+ u8 monSpriteId = gTasks[taskId].tCryTaskMonSpriteId;
+ struct Pokemon *mon = (void*)(u32)((gTasks[taskId].tCryTaskMonPtr1 << 0x10) | (u16)(gTasks[taskId].tCryTaskMonPtr2));
+
+ switch (gTasks[taskId].tCryTaskState)
+ {
+ case 0:
+ default:
+ if (gSprites[monSpriteId].affineAnimEnded)
+ gTasks[taskId].tCryTaskState = wantedCry + 1;
+ break;
+ case 1:
+ if (ShouldPlayNormalPokeCry(mon) == TRUE)
+ PlayCry3(species, pan, 0);
+ else
+ PlayCry3(species, pan, 11);
+ gBattleSpritesDataPtr->healthBoxesData[bank].field_1_x40 = 0;
+ DestroyTask(taskId);
+ break;
+ case 2:
+ StopCryAndClearCrySongs();
+ gTasks[taskId].tCryTaskFrames = 3;
+ gTasks[taskId].tCryTaskState = 20;
+ break;
+ case 20:
+ if (gTasks[taskId].tCryTaskFrames == 0)
+ {
+ if (ShouldPlayNormalPokeCry(mon) == TRUE)
+ PlayCry4(species, pan, 1);
+ else
+ PlayCry4(species, pan, 12);
+
+ gBattleSpritesDataPtr->healthBoxesData[bank].field_1_x40 = 0;
+ DestroyTask(taskId);
+ }
+ else
+ {
+ gTasks[taskId].tCryTaskFrames--;
+ }
+ break;
+ case 3:
+ gTasks[taskId].tCryTaskFrames = 6;
+ gTasks[taskId].tCryTaskState = 30;
+ break;
+ case 30:
+ if (gTasks[taskId].tCryTaskFrames != 0)
+ {
+ gTasks[taskId].tCryTaskFrames--;
+ break;
+ }
+ gTasks[taskId].tCryTaskState++;
+ // fall through
+ case 31:
+ if (!IsCryPlayingOrClearCrySongs())
+ {
+ StopCryAndClearCrySongs();
+ gTasks[taskId].tCryTaskFrames = 3;
+ gTasks[taskId].tCryTaskState++;
+ }
+ break;
+ case 32:
+ if (gTasks[taskId].tCryTaskFrames != 0)
+ {
+ gTasks[taskId].tCryTaskFrames--;
+ break;
+ }
+ if (ShouldPlayNormalPokeCry(mon) == TRUE)
+ PlayCry4(species, pan, 0);
+ else
+ PlayCry4(species, pan, 11);
+
+ gBattleSpritesDataPtr->healthBoxesData[bank].field_1_x40 = 0;
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite)
+{
+ u8 bank = sprite->sBank;
+ u32 ballId;
+
+ StartSpriteAnim(sprite, 1);
+ ballId = ItemIdToBallId(GetBankPokeballItemId(bank));
+ LaunchBallStarsTask(sprite->pos1.x, sprite->pos1.y - 5, 1, 0x1C, ballId);
+ sprite->data[0] = LaunchBallFadeMonTask(1, sprite->sBank, 14, ballId);
+ sprite->callback = HandleBallAnimEnd;
+
+ if (gMain.inBattle)
+ {
+ struct Pokemon *mon;
+ u16 species;
+ s8 pan;
+ u16 wantedCryCase;
+ u8 taskId;
+
+ if (GetBankSide(bank) != SIDE_PLAYER)
+ {
+ mon = &gEnemyParty[gBattlePartyID[bank]];
+ pan = 25;
+ }
+ else
+ {
+ mon = &gPlayerParty[gBattlePartyID[bank]];
+ pan = -25;
+ }
+
+ species = GetMonData(mon, MON_DATA_SPECIES);
+ if ((bank == GetBankByIdentity(IDENTITY_PLAYER_MON1) || bank == GetBankByIdentity(IDENTITY_OPPONENT_MON1))
+ && IsDoubleBattle() && gBattleSpritesDataPtr->animationData->field_9_x1)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI && gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ if (IsBGMPlaying())
+ m4aMPlayStop(&gMPlay_BGM);
+ }
+ else
+ {
+ m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 128);
+ }
+ }
+
+ if (!IsDoubleBattle() || !gBattleSpritesDataPtr->animationData->field_9_x1)
+ wantedCryCase = 0;
+ else if (bank == GetBankByIdentity(IDENTITY_PLAYER_MON1) || bank == GetBankByIdentity(IDENTITY_OPPONENT_MON1))
+ wantedCryCase = 1;
+ else
+ wantedCryCase = 2;
+
+ gBattleSpritesDataPtr->healthBoxesData[bank].field_1_x40 = 1;
+
+ taskId = CreateTask(Task_PlayCryWhenReleasedFromBall, 3);
+ gTasks[taskId].tCryTaskSpecies = species;
+ gTasks[taskId].tCryTaskPan = pan;
+ gTasks[taskId].tCryTaskWantedCry = wantedCryCase;
+ gTasks[taskId].tCryTaskBank = bank;
+ gTasks[taskId].tCryTaskMonSpriteId = gBankSpriteIds[sprite->sBank];
+ gTasks[taskId].tCryTaskMonPtr1 = (u32)(mon) >> 0x10;
+ gTasks[taskId].tCryTaskMonPtr2 = (u32)(mon);
+ gTasks[taskId].tCryTaskState = 0;
+ }
+
+ StartSpriteAffineAnim(&gSprites[gBankSpriteIds[sprite->sBank]], 1);
+
+ if (GetBankSide(sprite->sBank) == SIDE_OPPONENT)
+ gSprites[gBankSpriteIds[sprite->sBank]].callback = sub_8039B58;
+ else
+ gSprites[gBankSpriteIds[sprite->sBank]].callback = sub_8039E44;
+
+ AnimateSprite(&gSprites[gBankSpriteIds[sprite->sBank]]);
+ gSprites[gBankSpriteIds[sprite->sBank]].data[1] = 0x1000;
+}
+
+#undef tCryTaskSpecies
+#undef tCryTaskPan
+#undef tCryTaskWantedCry
+#undef tCryTaskBank
+#undef tCryTaskMonSpriteId
+#undef tCryTaskMonPtr1
+#undef tCryTaskMonPtr2
+#undef tCryTaskFrames
+#undef tCryTaskState
+
+static void sub_8075FB4(struct Sprite *sprite)
+{
+ sprite->animPaused = TRUE;
+ sprite->callback = sub_80760F8;
+ sprite->data[3] = 0;
+ sprite->data[4] = 0;
+ sprite->data[5] = 0;
+}
+
+static void HandleBallAnimEnd(struct Sprite *sprite)
+{
+ bool8 affineAnimEnded = FALSE;
+ u8 bank = sprite->sBank;
+
+ gSprites[gBankSpriteIds[bank]].invisible = FALSE;
+ if (sprite->animEnded)
+ sprite->invisible = TRUE;
+ if (gSprites[gBankSpriteIds[bank]].affineAnimEnded)
+ {
+ StartSpriteAffineAnim(&gSprites[gBankSpriteIds[bank]], 0);
+ affineAnimEnded = TRUE;
+ }
+ else
+ {
+ gSprites[gBankSpriteIds[bank]].data[1] -= 288;
+ gSprites[gBankSpriteIds[bank]].pos2.y = gSprites[gBankSpriteIds[bank]].data[1] >> 8;
+ }
+ if (sprite->animEnded && affineAnimEnded)
+ {
+ s32 i, doneBanks;
+
+ gSprites[gBankSpriteIds[bank]].pos2.y = 0;
+ gDoingBattleAnim = FALSE;
+ gBattleSpritesDataPtr->healthBoxesData[bank].ballAnimActive = 0;
+ FreeSpriteOamMatrix(sprite);
+ DestroySprite(sprite);
+
+ for (doneBanks = 0, i = 0; i < BATTLE_BANKS_COUNT; i++)
+ {
+ if (gBattleSpritesDataPtr->healthBoxesData[i].ballAnimActive == 0)
+ doneBanks++;
+ }
+ if (doneBanks == BATTLE_BANKS_COUNT)
+ {
+ for (i = 0; i < POKEBALL_COUNT; i++)
+ FreeBallGfx(i);
+ }
+ }
+}
+
+static void sub_80760F8(struct Sprite *sprite)
+{
+ u8 bank = sprite->sBank;
+
+ sprite->data[4]++;
+ if (sprite->data[4] == 40)
+ {
+ return;
+ }
+ else if (sprite->data[4] == 95)
+ {
+ gDoingBattleAnim = FALSE;
+ m4aMPlayAllStop();
+ PlaySE(BGM_FANFA5);
+ }
+ else if (sprite->data[4] == 315)
+ {
+ FreeOamMatrix(gSprites[gBankSpriteIds[sprite->sBank]].oam.matrixNum);
+ DestroySprite(&gSprites[gBankSpriteIds[sprite->sBank]]);
+ DestroySpriteAndFreeResources(sprite);
+ if (gMain.inBattle)
+ gBattleSpritesDataPtr->healthBoxesData[bank].ballAnimActive = 0;
+ }
+}
+
+static void SpriteCB_PlayerMonSendOut_1(struct Sprite *sprite)
+{
+ sprite->data[0] = 25;
+ sprite->data[2] = GetBankPosition(sprite->sBank, 2);
+ sprite->data[4] = GetBankPosition(sprite->sBank, 3) + 24;
+ sprite->data[5] = -30;
+ sprite->oam.affineParam = sprite->sBank;
+ sub_80A68D4(sprite);
+ sprite->callback = SpriteCB_PlayerMonSendOut_2;
+}
+
+#define HIBYTE(x) (((x) >> 8) & 0xFF)
+
+static void SpriteCB_PlayerMonSendOut_2(struct Sprite *sprite)
+{
+ u32 r6;
+ u32 r7;
+
+ if (HIBYTE(sprite->data[7]) >= 35 && HIBYTE(sprite->data[7]) < 80)
+ {
+ s16 r4;
+
+ if ((sprite->oam.affineParam & 0xFF00) == 0)
+ {
+ r6 = sprite->data[1] & 1;
+ r7 = sprite->data[2] & 1;
+ sprite->data[1] = ((sprite->data[1] / 3) & ~1) | r6;
+ sprite->data[2] = ((sprite->data[2] / 3) & ~1) | r7;
+ StartSpriteAffineAnim(sprite, 4);
+ }
+ r4 = sprite->data[0];
+ sub_80A6F3C(sprite);
+ sprite->data[7] += sprite->sBank / 3;
+ sprite->pos2.y += Sin(HIBYTE(sprite->data[7]), sprite->data[5]);
+ sprite->oam.affineParam += 0x100;
+ if ((sprite->oam.affineParam >> 8) % 3 != 0)
+ sprite->data[0] = r4;
+ else
+ sprite->data[0] = r4 - 1;
+ if (HIBYTE(sprite->data[7]) >= 80)
+ {
+ r6 = sprite->data[1] & 1;
+ r7 = sprite->data[2] & 1;
+ sprite->data[1] = ((sprite->data[1] * 3) & ~1) | r6;
+ sprite->data[2] = ((sprite->data[2] * 3) & ~1) | r7;
+ }
+ }
+ else
+ {
+ if (AnimateBallThrow(sprite))
+ {
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.y = 0;
+ sprite->pos2.x = 0;
+ sprite->sBank = sprite->oam.affineParam & 0xFF;
+ sprite->data[0] = 0;
+
+ if (IsDoubleBattle() && gBattleSpritesDataPtr->animationData->field_9_x1
+ && sprite->sBank == GetBankByIdentity(IDENTITY_PLAYER_MON2))
+ sprite->callback = SpriteCB_ReleaseMon2FromBall;
+ else
+ sprite->callback = SpriteCB_ReleaseMonFromBall;
+
+ StartSpriteAffineAnim(sprite, 0);
+ }
+ }
+}
+
+static void SpriteCB_ReleaseMon2FromBall(struct Sprite *sprite)
+{
+ if (sprite->data[0]++ > 24)
+ {
+ sprite->data[0] = 0;
+ sprite->callback = SpriteCB_ReleaseMonFromBall;
+ }
+}
+
+static void SpriteCB_OpponentMonSendOut(struct Sprite *sprite)
+{
+ sprite->data[0]++;
+ if (sprite->data[0] > 15)
+ {
+ sprite->data[0] = 0;
+ if (IsDoubleBattle() && gBattleSpritesDataPtr->animationData->field_9_x1
+ && sprite->sBank == GetBankByIdentity(IDENTITY_OPPONENT_MON2))
+ sprite->callback = SpriteCB_ReleaseMon2FromBall;
+ else
+ sprite->callback = SpriteCB_ReleaseMonFromBall;
+ }
+}
+
+#undef sBank
+
+static u8 LaunchBallStarsTaskForPokeball(u8 x, u8 y, u8 kindOfStars, u8 d)
+{
+ return LaunchBallStarsTask(x, y, kindOfStars, d, BALL_POKE);
+}
+
+static u8 LaunchBallFadeMonTaskForPokeball(bool8 unFadeLater, u8 bank, u32 arg2)
+{
+ return LaunchBallFadeMonTask(unFadeLater, bank, arg2, BALL_POKE);
+}
+
+void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 bank, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 g, u32 h, u16 species)
+{
+ u8 spriteId;
+
+ LoadCompressedObjectPicUsingHeap(&gBallSpriteSheets[0]);
+ LoadCompressedObjectPaletteUsingHeap(&gBallSpritePalettes[0]);
+ spriteId = CreateSprite(&gBallSpriteTemplates[0], x, y, subpriortiy);
+
+ gSprites[spriteId].data[0] = monSpriteId;
+ gSprites[spriteId].data[5] = gSprites[monSpriteId].pos1.x;
+ gSprites[spriteId].data[6] = gSprites[monSpriteId].pos1.y;
+
+ gSprites[monSpriteId].pos1.x = x;
+ gSprites[monSpriteId].pos1.y = y;
+ gSprites[monSpriteId].data[7] = species;
+
+ gSprites[spriteId].data[1] = g;
+ gSprites[spriteId].data[2] = bank;
+ gSprites[spriteId].data[3] = h;
+ gSprites[spriteId].data[4] = h >> 0x10;
+ gSprites[spriteId].oam.priority = oamPriority;
+ gSprites[spriteId].callback = sub_8076524;
+
+ gSprites[monSpriteId].invisible = TRUE;
+}
+
+static void sub_8076524(struct Sprite *sprite)
+{
+ if (sprite->data[1] == 0)
+ {
+ u8 r5;
+ u8 r7 = sprite->data[0];
+ u8 bank = sprite->data[2];
+ u32 r4 = (u16)sprite->data[3] | ((u16)sprite->data[4] << 16);
+
+ if (sprite->subpriority != 0)
+ r5 = sprite->subpriority - 1;
+ else
+ r5 = 0;
+
+ StartSpriteAnim(sprite, 1);
+ LaunchBallStarsTaskForPokeball(sprite->pos1.x, sprite->pos1.y - 5, sprite->oam.priority, r5);
+ sprite->data[1] = LaunchBallFadeMonTaskForPokeball(1, bank, r4);
+ sprite->callback = sub_80765E0;
+ gSprites[r7].invisible = FALSE;
+ StartSpriteAffineAnim(&gSprites[r7], 1);
+ AnimateSprite(&gSprites[r7]);
+ gSprites[r7].data[1] = 0x1000;
+ sprite->data[7] = 0;
+ }
+ else
+ {
+ sprite->data[1]--;
+ }
+}
+
+static void sub_80765E0(struct Sprite *sprite)
+{
+ bool8 r12 = FALSE;
+ bool8 r6 = FALSE;
+ u8 monSpriteId = sprite->data[0];
+ u16 var1;
+ u16 var2;
+
+ if (sprite->animEnded)
+ sprite->invisible = TRUE;
+ if (gSprites[monSpriteId].affineAnimEnded)
+ {
+ StartSpriteAffineAnim(&gSprites[monSpriteId], 0);
+ r12 = TRUE;
+ }
+ var1 = (sprite->data[5] - sprite->pos1.x) * sprite->data[7] / 128 + sprite->pos1.x;
+ var2 = (sprite->data[6] - sprite->pos1.y) * sprite->data[7] / 128 + sprite->pos1.y;
+ gSprites[monSpriteId].pos1.x = var1;
+ gSprites[monSpriteId].pos1.y = var2;
+ if (sprite->data[7] < 128)
+ {
+ s16 sine = -(gSineTable[(u8)sprite->data[7]] / 8);
+
+ sprite->data[7] += 4;
+ gSprites[monSpriteId].pos2.x = sine;
+ gSprites[monSpriteId].pos2.y = sine;
+ }
+ else
+ {
+ gSprites[monSpriteId].pos1.x = sprite->data[5];
+ gSprites[monSpriteId].pos1.y = sprite->data[6];
+ gSprites[monSpriteId].pos2.x = 0;
+ gSprites[monSpriteId].pos2.y = 0;
+ r6 = TRUE;
+ }
+ if (sprite->animEnded && r12 && r6)
+ {
+ if (gSprites[monSpriteId].data[7] == SPECIES_EGG)
+ DoMonFrontSpriteAnimation(&gSprites[monSpriteId], gSprites[monSpriteId].data[7], TRUE, 0);
+ else
+ DoMonFrontSpriteAnimation(&gSprites[monSpriteId], gSprites[monSpriteId].data[7], FALSE, 0);
+
+ DestroySpriteAndFreeResources(sprite);
+ }
+}
+
+u8 sub_807671C(u8 a, u8 b, u8 x, u8 y, u8 oamPriority, u8 subPriority, u8 g, u32 h)
+{
+ u8 spriteId;
+
+ LoadCompressedObjectPicUsingHeap(&gBallSpriteSheets[0]);
+ LoadCompressedObjectPaletteUsingHeap(&gBallSpritePalettes[0]);
+ spriteId = CreateSprite(&gBallSpriteTemplates[0], x, y, subPriority);
+ gSprites[spriteId].data[0] = a;
+ gSprites[spriteId].data[1] = g;
+ gSprites[spriteId].data[2] = b;
+ gSprites[spriteId].data[3] = h;
+ gSprites[spriteId].data[4] = h >> 16;
+ gSprites[spriteId].oam.priority = oamPriority;
+ gSprites[spriteId].callback = sub_80767D4;
+ return spriteId;
+}
+
+static void sub_80767D4(struct Sprite *sprite)
+{
+ if (sprite->data[1] == 0)
+ {
+ u8 r6;
+ u8 r7 = sprite->data[0];
+ u8 r8 = sprite->data[2];
+ u32 r5 = (u16)sprite->data[3] | ((u16)sprite->data[4] << 16);
+
+ if (sprite->subpriority != 0)
+ r6 = sprite->subpriority - 1;
+ else
+ r6 = 0;
+
+ StartSpriteAnim(sprite, 1);
+ LaunchBallStarsTaskForPokeball(sprite->pos1.x, sprite->pos1.y - 5, sprite->oam.priority, r6);
+ sprite->data[1] = LaunchBallFadeMonTaskForPokeball(1, r8, r5);
+ sprite->callback = sub_807687C;
+ StartSpriteAffineAnim(&gSprites[r7], 2);
+ AnimateSprite(&gSprites[r7]);
+ gSprites[r7].data[1] = 0;
+ }
+ else
+ {
+ sprite->data[1]--;
+ }
+}
+
+static void sub_807687C(struct Sprite *sprite)
+{
+ u8 r1;
+
+ sprite->data[5]++;
+ if (sprite->data[5] == 11)
+ PlaySE(SE_SUIKOMU);
+ r1 = sprite->data[0];
+ if (gSprites[r1].affineAnimEnded)
+ {
+ StartSpriteAnim(sprite, 2);
+ gSprites[r1].invisible = TRUE;
+ sprite->data[5] = 0;
+ sprite->callback = sub_80768F0;
+ }
+ else
+ {
+ gSprites[r1].data[1] += 96;
+ gSprites[r1].pos2.y = -gSprites[r1].data[1] >> 8;
+ }
+}
+
+static void sub_80768F0(struct Sprite *sprite)
+{
+ if (sprite->animEnded)
+ sprite->callback = SpriteCallbackDummy;
+}
+
+static void DestroySpriteAndFreeResources_(struct Sprite *sprite)
+{
+ DestroySpriteAndFreeResources(sprite);
+}
+
+void sub_8076918(u8 bank)
+{
+ struct Sprite *healthboxSprite = &gSprites[gHealthBoxesIds[bank]];
+
+ healthboxSprite->data[0] = 5;
+ healthboxSprite->data[1] = 0;
+ healthboxSprite->pos2.x = 0x73;
+ healthboxSprite->pos2.y = 0;
+ healthboxSprite->callback = sub_80769CC;
+ if (GetBankSide(bank) != SIDE_PLAYER)
+ {
+ healthboxSprite->data[0] = -healthboxSprite->data[0];
+ healthboxSprite->data[1] = -healthboxSprite->data[1];
+ healthboxSprite->pos2.x = -healthboxSprite->pos2.x;
+ healthboxSprite->pos2.y = -healthboxSprite->pos2.y;
+ }
+ gSprites[healthboxSprite->data[5]].callback(&gSprites[healthboxSprite->data[5]]);
+ if (GetBankIdentity(bank) == IDENTITY_PLAYER_MON2)
+ healthboxSprite->callback = sub_80769A8;
+}
+
+static void sub_80769A8(struct Sprite *sprite)
+{
+ sprite->data[1]++;
+ if (sprite->data[1] == 20)
+ {
+ sprite->data[1] = 0;
+ sprite->callback = sub_80769CC;
+ }
+}
+
+static void sub_80769CC(struct Sprite *sprite)
+{
+ sprite->pos2.x -= sprite->data[0];
+ sprite->pos2.y -= sprite->data[1];
+ if (sprite->pos2.x == 0 && sprite->pos2.y == 0)
+ sprite->callback = SpriteCallbackDummy;
+}
+
+void DoHitAnimHealthboxEffect(u8 bank)
+{
+ u8 spriteId;
+
+ spriteId = CreateInvisibleSpriteWithCallback(SpriteCB_HitAnimHealthoxEffect);
+ gSprites[spriteId].data[0] = 1;
+ gSprites[spriteId].data[1] = gHealthBoxesIds[bank];
+ gSprites[spriteId].callback = SpriteCB_HitAnimHealthoxEffect;
+}
+
+static void SpriteCB_HitAnimHealthoxEffect(struct Sprite *sprite)
+{
+ u8 r1 = sprite->data[1];
+
+ gSprites[r1].pos2.y = sprite->data[0];
+ sprite->data[0] = -sprite->data[0];
+ sprite->data[2]++;
+ if (sprite->data[2] == 21)
+ {
+ gSprites[r1].pos2.x = 0;
+ gSprites[r1].pos2.y = 0;
+ DestroySprite(sprite);
+ }
+}
+
+void LoadBallGfx(u8 ballId)
+{
+ u16 var;
+
+ if (GetSpriteTileStartByTag(gBallSpriteSheets[ballId].tag) == 0xFFFF)
+ {
+ LoadCompressedObjectPicUsingHeap(&gBallSpriteSheets[ballId]);
+ LoadCompressedObjectPaletteUsingHeap(&gBallSpritePalettes[ballId]);
+ }
+ switch (ballId)
+ {
+ case BALL_DIVE:
+ case BALL_LUXURY:
+ case BALL_PREMIER:
+ break;
+ default:
+ var = GetSpriteTileStartByTag(gBallSpriteSheets[ballId].tag);
+ LZDecompressVram(gOpenPokeballGfx, (void *)(VRAM + 0x10100 + var * 32));
+ break;
+ }
+}
+
+void FreeBallGfx(u8 ballId)
+{
+ FreeSpriteTilesByTag(gBallSpriteSheets[ballId].tag);
+ FreeSpritePaletteByTag(gBallSpritePalettes[ballId].tag);
+}
+
+static u16 GetBankPokeballItemId(u8 bank)
+{
+ if (GetBankSide(bank) == SIDE_PLAYER)
+ return GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_POKEBALL);
+ else
+ return GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_POKEBALL);
+}
diff --git a/src/pokemon_1.c b/src/pokemon_1.c
index f56ade967..98a35454f 100644
--- a/src/pokemon_1.c
+++ b/src/pokemon_1.c
@@ -1,8 +1,8 @@
#include "global.h"
#include "pokemon.h"
-#include "rng.h"
+#include "random.h"
#include "main.h"
-#include "items.h"
+#include "constants/items.h"
#include "string_util.h"
#include "text.h"
diff --git a/src/pokemon_2.c b/src/pokemon_2.c
index 7014be492..db176e025 100644
--- a/src/pokemon_2.c
+++ b/src/pokemon_2.c
@@ -2,9 +2,9 @@
#include "pokemon.h"
#include "battle.h"
#include "event_data.h"
-#include "rng.h"
+#include "random.h"
#include "sprite.h"
-#include "species.h"
+#include "constants/species.h"
#include "text.h"
#include "string_util.h"
@@ -1155,7 +1155,7 @@ u8 GetMonsStateToDoubles_2(void)
s32 aliveCount = 0;
s32 i;
- for (i = 0; i < 6; i++)
+ for (i = 0; i < PARTY_SIZE; i++)
{
u32 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL);
if (species != SPECIES_EGG && species != SPECIES_NONE
diff --git a/src/pokemon_3.c b/src/pokemon_3.c
index 01dfc954a..d58b024a8 100644
--- a/src/pokemon_3.c
+++ b/src/pokemon_3.c
@@ -1,25 +1,24 @@
#include "global.h"
#include "pokemon.h"
#include "main.h"
-#include "items.h"
+#include "constants/items.h"
#include "string_util.h"
#include "battle_message.h"
#include "rtc.h"
#include "item.h"
#include "battle.h"
-#include "species.h"
+#include "constants/species.h"
#include "link.h"
-#include "hold_effects.h"
-#include "rng.h"
-#include "trainer_classes.h"
-#include "trainer_ids.h"
-#include "songs.h"
+#include "constants/hold_effects.h"
+#include "random.h"
+#include "constants/trainers.h"
+#include "constants/songs.h"
#include "sound.h"
#include "m4a.h"
#include "task.h"
#include "sprite.h"
#include "text.h"
-#include "abilities.h"
+#include "constants/abilities.h"
#include "pokemon_animation.h"
#include "pokedex.h"
@@ -692,9 +691,9 @@ void AdjustFriendship(struct Pokemon *mon, u8 event)
if ((event != 5 || !(Random() & 1))
&& (event != 3
|| ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
- && (gTrainers[gTrainerBattleOpponent_A].trainerClass == CLASS_ELITE_FOUR
- || gTrainers[gTrainerBattleOpponent_A].trainerClass == CLASS_LEADER
- || gTrainers[gTrainerBattleOpponent_A].trainerClass == CLASS_CHAMPION))))
+ && (gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_ELITE_FOUR
+ || gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_LEADER
+ || gTrainers[gTrainerBattleOpponent_A].trainerClass == TRAINER_CLASS_CHAMPION))))
{
s8 mod = gUnknown_08329ECE[event][friendshipLevel];
if (mod > 0 && holdEffect == HOLD_EFFECT_HAPPINESS_UP)
@@ -1146,55 +1145,57 @@ void ClearBattleMonForms(void)
u16 GetBattleBGM(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON)
- return 0x1E0;
+ return BGM_BATTLE34;
if (gBattleTypeFlags & BATTLE_TYPE_REGI)
- return 0x1DF;
+ return BGM_BATTLE36;
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
- return 0x1DC;
+ return BGM_BATTLE20;
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
{
u8 trainerClass;
+
if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
trainerClass = GetFrontierOpponentClass(gTrainerBattleOpponent_A);
else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
- trainerClass = CLASS_EXPERT;
+ trainerClass = TRAINER_CLASS_EXPERT;
else
trainerClass = gTrainers[gTrainerBattleOpponent_A].trainerClass;
+
switch (trainerClass)
{
- case CLASS_AQUA_LEADER:
- case CLASS_MAGMA_LEADER:
- return 0x1E3;
- case CLASS_TEAM_AQUA:
- case CLASS_TEAM_MAGMA:
- case CLASS_AQUA_ADMIN:
- case CLASS_MAGMA_ADMIN:
- return 0x1DB;
- case CLASS_LEADER:
- return 0x1DD;
- case CLASS_CHAMPION:
- return 0x1DE;
- case CLASS_PKMN_TRAINER_RIVAL:
+ case TRAINER_CLASS_AQUA_LEADER:
+ case TRAINER_CLASS_MAGMA_LEADER:
+ return BGM_BATTLE30;
+ case TRAINER_CLASS_TEAM_AQUA:
+ case TRAINER_CLASS_TEAM_MAGMA:
+ case TRAINER_CLASS_AQUA_ADMIN:
+ case TRAINER_CLASS_MAGMA_ADMIN:
+ return BGM_BATTLE31;
+ case TRAINER_CLASS_LEADER:
+ return BGM_BATTLE32;
+ case TRAINER_CLASS_CHAMPION:
+ return BGM_BATTLE33;
+ case TRAINER_CLASS_PKMN_TRAINER_3:
if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
- return 0x1E1;
+ return BGM_BATTLE35;
if (!StringCompare(gTrainers[gTrainerBattleOpponent_A].trainerName, gText_BattleWallyName))
- return 0x1DC;
- return 0x1E1;
- case CLASS_ELITE_FOUR:
- return 0x1E2;
- case CLASS_SALON_MAIDEN:
- case CLASS_DOME_ACE:
- case CLASS_PALACE_MAVEN:
- case CLASS_ARENA_TYCOON:
- case CLASS_FACTORY_HEAD:
- case CLASS_PIKE_QUEEN:
- case CLASS_PYRAMID_KING:
- return 0x1D7;
+ return BGM_BATTLE20;
+ return BGM_BATTLE35;
+ case TRAINER_CLASS_ELITE_FOUR:
+ return BGM_BATTLE38;
+ case TRAINER_CLASS_SALON_MAIDEN:
+ case TRAINER_CLASS_DOME_ACE:
+ case TRAINER_CLASS_PALACE_MAVEN:
+ case TRAINER_CLASS_ARENA_TYCOON:
+ case TRAINER_CLASS_FACTORY_HEAD:
+ case TRAINER_CLASS_PIKE_QUEEN:
+ case TRAINER_CLASS_PYRAMID_KING:
+ return BGM_BATTLE_FRONTIER_BRAIN;
default:
- return 0x1DC;
+ return BGM_BATTLE20;
}
}
- return 0x1DA;
+ return BGM_BATTLE27;
}
void PlayBattleBGM(void)
@@ -1297,13 +1298,13 @@ bool8 IsPokeSpriteNotFlipped(u16 species)
return gBaseStats[species].noFlip;
}
-s8 GetMonFlavourRelation(struct Pokemon *mon, u8 a2)
+s8 GetMonFlavorRelation(struct Pokemon *mon, u8 a2)
{
u8 nature = GetNature(mon);
return gPokeblockFlavorCompatibilityTable[nature * 5 + a2];
}
-s8 GetFlavourRelationByPersonality(u32 personality, u8 a2)
+s8 GetFlavorRelationByPersonality(u32 personality, u8 a2)
{
u8 nature = GetNatureFromPersonality(personality);
return gPokeblockFlavorCompatibilityTable[nature * 5 + a2];
@@ -1396,7 +1397,7 @@ static s32 GetWildMonTableIdInAlteringCave(u16 species)
void SetWildMonHeldItem(void)
{
- if (!(gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_TRAINER | BATTLE_TYPE_PYRAMID | BATTLE_TYPE_x100000)))
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_TRAINER | BATTLE_TYPE_PYRAMID | BATTLE_TYPE_PIKE)))
{
u16 rnd = Random() % 100;
u16 species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, 0);
@@ -1462,12 +1463,14 @@ bool8 IsShinyOtIdPersonality(u32 otId, u32 personality)
return retVal;
}
-const u8* GetTrainerPartnerName(void)
+const u8 *GetTrainerPartnerName(void)
{
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
{
if (gPartnerTrainerId == STEVEN_PARTNER_ID)
- return gTrainers[TRAINER_ID_STEVEN].trainerName;
+ {
+ return gTrainers[TRAINER_STEVEN].trainerName;
+ }
else
{
GetFrontierTrainerName(gStringVar1, gPartnerTrainerId);
@@ -1682,14 +1685,14 @@ void HandleSetPokedexFlag(u16 nationalNum, u8 caseId, u32 personality)
}
}
-const u8* GetTrainerClassNameFromId(u16 trainerId)
+const u8 *GetTrainerClassNameFromId(u16 trainerId)
{
if (trainerId > NO_OF_TRAINERS)
trainerId = 0;
return gTrainerClassNames[gTrainers[trainerId].trainerClass];
}
-const u8* GetTrainerNameFromId(u16 trainerId)
+const u8 *GetTrainerNameFromId(u16 trainerId)
{
if (trainerId > NO_OF_TRAINERS)
trainerId = 0;
diff --git a/src/pokemon_size_record.c b/src/pokemon_size_record.c
index ec0103bc7..fe3b3e8dd 100644
--- a/src/pokemon_size_record.c
+++ b/src/pokemon_size_record.c
@@ -1,7 +1,7 @@
#include "global.h"
#include "pokemon_size_record.h"
#include "event_data.h"
-#include "species.h"
+#include "constants/species.h"
#include "string_util.h"
#include "text.h"
#include "pokemon.h"
diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c
index f82a52d38..bdf4427c7 100644
--- a/src/pokemon_storage_system.c
+++ b/src/pokemon_storage_system.c
@@ -1,7 +1,7 @@
#include "global.h"
#include "pokemon_storage_system.h"
#include "pokemon.h"
-#include "species.h"
+#include "constants/species.h"
#include "event_data.h"
#include "string_util.h"
#include "text.h"
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index d09cbc407..b00979945 100755
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -3,18 +3,19 @@
#include "bg.h"
#include "decompress.h"
#include "item.h"
-#include "items.h"
+#include "constants/items.h"
#include "link.h"
#include "m4a.h"
#include "main.h"
#include "malloc.h"
-#include "moves.h"
+#include "constants/moves.h"
#include "palette.h"
#include "pokemon.h"
-#include "songs.h"
+#include "constants/songs.h"
#include "sound.h"
-#include "species.h"
+#include "constants/species.h"
#include "sprite.h"
+#include "unk_text_util.h"
#include "string_util.h"
#include "task.h"
#include "text.h"
@@ -166,9 +167,7 @@ extern s32 GetStringCenterAlignXOffset(u8 fontId, u8 *str, s32 totalWidth);
extern s32 GetStringRightAlignXOffset(u8 fontId, u8 *str, s32 totalWidth);
extern bool8 sub_81A6BF4();
extern bool8 sub_81B9E94();
-extern void sub_81AFBF0();
-extern u8 sub_81AFC0C(u8 a, u8 *b);
-extern void sub_81AFC28(u8 *a, u8 *b);
+extern void UnkTextUtil_Reset();
extern void sub_8124610(u8 *a, u8 b);
extern int GetPlayerIDAsU32();
extern u8 GetCurrentPpToMaxPpState(u8 a, u8 b);
@@ -938,7 +937,7 @@ void sub_81C0704(u8 taskId)
gUnknown_0203CF1C->unk40D3 = sub_81C45F4(&gUnknown_0203CF1C->currentMon, &data[1]);
if (gUnknown_0203CF1C->unk40D3 == 0xFF)
return;
- gSprites[gUnknown_0203CF1C->unk40D3].data2 = 1;
+ gSprites[gUnknown_0203CF1C->unk40D3].data[2] = 1;
sub_81C0E24();
data[1] = 0;
break;
@@ -953,7 +952,7 @@ void sub_81C0704(u8 taskId)
sub_81C2524();
break;
case 12:
- gSprites[gUnknown_0203CF1C->unk40D3].data2 = 0;
+ gSprites[gUnknown_0203CF1C->unk40D3].data[2] = 0;
break;
default:
if (sub_81221EC() == 0 && FuncIsActiveTask(sub_81C20F0) == 0)
@@ -2993,12 +2992,12 @@ void sub_81C307C()
{
struct PokeSummary *sum = &gUnknown_0203CF1C->summary;
u8 *text;
- sub_81AFBF0();
- sub_81AFC0C(0, gUnknown_0861CE74);
- sub_81AFC0C(1, gUnknown_0861CE7B);
+ UnkTextUtil_Reset();
+ UnkTextUtil_SetPtrI(0, gUnknown_0861CE74);
+ UnkTextUtil_SetPtrI(1, gUnknown_0861CE7B);
sub_81C31C0();
if (sub_81A6BF4() == TRUE || sub_81B9E94() == TRUE || sub_81C3304() == TRUE)
- sub_81AFC28(gStringVar4, gText_XNature);
+ UnkTextUtil_StringExpandPlaceholders(gStringVar4, gText_XNature);
else
{
u8 *alloced1 = Alloc(32);
@@ -3007,7 +3006,7 @@ void sub_81C307C()
if (sum->metLocation <= 0xD4)
{
sub_8124610(alloced2, sum->metLocation);
- sub_81AFC0C(4, alloced2);
+ UnkTextUtil_SetPtrI(4, alloced2);
}
if (sub_81C3220() == 1)
{
@@ -3022,7 +3021,7 @@ void sub_81C307C()
text = (sum->metLocation > 0xD4) ? gText_XNatureObtainedInTrade : gText_XNatureProbablyMetAt;
else
text = gText_XNatureObtainedInTrade;
- sub_81AFC28(gStringVar4, text);
+ UnkTextUtil_StringExpandPlaceholders(gStringVar4, text);
Free(alloced1);
Free(alloced2);
}
@@ -3036,8 +3035,8 @@ void sub_81C3194()
void sub_81C31C0()
{
struct UnkSummaryStruct *sumStruct = gUnknown_0203CF1C;
- sub_81AFC0C(2, gNatureNamePointers[sumStruct->summary.nature]);
- sub_81AFC0C(5, gText_EmptyString5);
+ UnkTextUtil_SetPtrI(2, gNatureNamePointers[sumStruct->summary.nature]);
+ UnkTextUtil_SetPtrI(5, gText_EmptyString5);
}
void sub_81C31F0(u8 *a)
@@ -3046,7 +3045,7 @@ void sub_81C31F0(u8 *a)
if (level == 0)
level = 5;
ConvertIntToDecimalStringN(a, level, 0, 3);
- sub_81AFC0C(3, a);
+ UnkTextUtil_SetPtrI(3, a);
}
u8 sub_81C3220()
@@ -3301,12 +3300,12 @@ void sub_81C3710()
ConvertIntToDecimalStringN(alloced2, gUnknown_0203CF1C->summary.maxHP, 1, 3);
ConvertIntToDecimalStringN(alloced3, gUnknown_0203CF1C->summary.atk, 1, 7);
ConvertIntToDecimalStringN(alloced4, gUnknown_0203CF1C->summary.def, 1, 7);
- sub_81AFBF0();
- sub_81AFC0C(0, alloced1);
- sub_81AFC0C(1, alloced2);
- sub_81AFC0C(2, alloced3);
- sub_81AFC0C(3, alloced4);
- sub_81AFC28(gStringVar4, gUnknown_0861CE82);
+ UnkTextUtil_Reset();
+ UnkTextUtil_SetPtrI(0, alloced1);
+ UnkTextUtil_SetPtrI(1, alloced2);
+ UnkTextUtil_SetPtrI(2, alloced3);
+ UnkTextUtil_SetPtrI(3, alloced4);
+ UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_0861CE82);
Free(alloced1);
Free(alloced2);
Free(alloced3);
@@ -3323,11 +3322,11 @@ void sub_81C3808()
ConvertIntToDecimalStringN(gStringVar1, gUnknown_0203CF1C->summary.spatk, 1, 3);
ConvertIntToDecimalStringN(gStringVar2, gUnknown_0203CF1C->summary.spdef, 1, 3);
ConvertIntToDecimalStringN(gStringVar3, gUnknown_0203CF1C->summary.speed, 1, 3);
- sub_81AFBF0();
- sub_81AFC0C(0, gStringVar1);
- sub_81AFC0C(1, gStringVar2);
- sub_81AFC0C(2, gStringVar3);
- sub_81AFC28(gStringVar4, gUnknown_0861CE8E);
+ UnkTextUtil_Reset();
+ UnkTextUtil_SetPtrI(0, gStringVar1);
+ UnkTextUtil_SetPtrI(1, gStringVar2);
+ UnkTextUtil_SetPtrI(2, gStringVar3);
+ UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_0861CE8E);
}
void sub_81C3890()
@@ -3436,10 +3435,10 @@ void sub_81C3B08(u8 a)
sub_81C25A4(r8, gMoveNames[move], 0, (a<<4) + 1, 0, 1);
ConvertIntToDecimalStringN(gStringVar1, r10->summary.pp[a], 1, 2);
ConvertIntToDecimalStringN(gStringVar2, r6, 1, 2);
- sub_81AFBF0();
- sub_81AFC0C(0, gStringVar1);
- sub_81AFC0C(1, gStringVar2);
- sub_81AFC28(gStringVar4, gUnknown_0861CE97);
+ UnkTextUtil_Reset();
+ UnkTextUtil_SetPtrI(0, gStringVar1);
+ UnkTextUtil_SetPtrI(1, gStringVar2);
+ UnkTextUtil_StringExpandPlaceholders(gStringVar4, gUnknown_0861CE97);
text = gStringVar4;
r5 = GetCurrentPpToMaxPpState(r10->summary.pp[a], r6) + 9;
offset = GetStringRightAlignXOffset(1, text, 0x2C);
@@ -3531,17 +3530,17 @@ void sub_81C3B08(u8 a)
movs r2, 0x1\n\
movs r3, 0x2\n\
bl ConvertIntToDecimalStringN\n\
- bl sub_81AFBF0\n\
+ bl UnkTextUtil_Reset\n\
movs r0, 0\n\
mov r1, r8\n\
- bl sub_81AFC0C\n\
+ bl UnkTextUtil_SetPtrI\n\
movs r0, 0x1\n\
adds r1, r4, 0\n\
- bl sub_81AFC0C\n\
+ bl UnkTextUtil_SetPtrI\n\
ldr r4, =gStringVar4\n\
ldr r1, =gUnknown_0861CE97\n\
adds r0, r4, 0\n\
- bl sub_81AFC28\n\
+ bl UnkTextUtil_StringExpandPlaceholders\n\
adds r7, r4, 0\n\
ldrb r0, [r5]\n\
adds r1, r6, 0\n\
diff --git a/src/rng.c b/src/random.c
index ddd149018..f2f0ede58 100644
--- a/src/rng.c
+++ b/src/random.c
@@ -1,5 +1,5 @@
#include "global.h"
-#include "rng.h"
+#include "random.h"
// The number 1103515245 comes from the example implementation of rand and srand
// in the ISO C standard.
diff --git a/src/recorded_battle.c b/src/recorded_battle.c
index e843ff7cb..c88229c61 100644
--- a/src/recorded_battle.c
+++ b/src/recorded_battle.c
@@ -3,7 +3,7 @@
#include "recorded_battle.h"
#include "main.h"
#include "pokemon.h"
-#include "rng.h"
+#include "random.h"
#include "event_data.h"
#include "link.h"
#include "string_util.h"
@@ -19,7 +19,7 @@
| BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_ROAMER | BATTLE_TYPE_EREADER_TRAINER \
| BATTLE_TYPE_KYOGRE_GROUDON | BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_REGI \
| BATTLE_TYPE_RECORDED | BATTLE_TYPE_x4000000 | BATTLE_TYPE_SECRET_BASE \
- | BATTLE_TYPE_GROUDON | BATTLE_TYPE_KYORGE | BATTLE_TYPE_RAYQUAZA))
+ | BATTLE_TYPE_GROUDON | BATTLE_TYPE_KYOGRE | BATTLE_TYPE_RAYQUAZA))
extern u32 gBattleTypeFlags;
extern u16 gTrainerBattleOpponent_A;
diff --git a/src/region_map.c b/src/region_map.c
index da96475c0..b7fc625ca 100644
--- a/src/region_map.c
+++ b/src/region_map.c
@@ -1,25 +1,23 @@
-
-// Includes
#include "global.h"
#include "main.h"
+#include "text.h"
#include "menu.h"
#include "malloc.h"
#include "gpu_regs.h"
#include "palette.h"
#include "party_menu.h"
#include "trig.h"
-#include "map_constants.h"
+#include "constants/maps.h"
#include "overworld.h"
-#include "flags.h"
+#include "constants/flags.h"
#include "event_data.h"
#include "rom6.h"
#include "secret_base.h"
#include "string_util.h"
#include "international_string_util.h"
#include "strings.h"
-#include "text.h"
#include "text_window.h"
-#include "songs.h"
+#include "constants/songs.h"
#include "m4a.h"
#include "field_effect.h"
#include "region_map.h"
@@ -244,56 +242,56 @@ static const u16 Unknown_085A1D48[] = INCBIN_U16("graphics/pokenav/fly_target_ic
static const u8 gUnknown_085A1D68[] = INCBIN_U8("graphics/pokenav/fly_target_icons.4bpp.lz");
static const u8 gUnknown_085A1E3C[][3] = {
- {MAP_GROUP_LITTLEROOT_TOWN, MAP_ID_LITTLEROOT_TOWN, 1},
- {MAP_GROUP_OLDALE_TOWN, MAP_ID_OLDALE_TOWN, 14},
- {MAP_GROUP_DEWFORD_TOWN, MAP_ID_DEWFORD_TOWN, 15},
- {MAP_GROUP_LAVARIDGE_TOWN, MAP_ID_LAVARIDGE_TOWN, 16},
- {MAP_GROUP_FALLARBOR_TOWN, MAP_ID_FALLARBOR_TOWN, 17},
- {MAP_GROUP_VERDANTURF_TOWN, MAP_ID_VERDANTURF_TOWN, 18},
- {MAP_GROUP_PACIFIDLOG_TOWN, MAP_ID_PACIFIDLOG_TOWN, 19},
- {MAP_GROUP_PETALBURG_CITY, MAP_ID_PETALBURG_CITY, 3},
- {MAP_GROUP_SLATEPORT_CITY, MAP_ID_SLATEPORT_CITY, 4},
- {MAP_GROUP_MAUVILLE_CITY, MAP_ID_MAUVILLE_CITY, 5},
- {MAP_GROUP_RUSTBORO_CITY, MAP_ID_RUSTBORO_CITY, 6},
- {MAP_GROUP_FORTREE_CITY, MAP_ID_FORTREE_CITY, 7},
- {MAP_GROUP_LILYCOVE_CITY, MAP_ID_LILYCOVE_CITY, 8},
- {MAP_GROUP_MOSSDEEP_CITY, MAP_ID_MOSSDEEP_CITY, 9},
- {MAP_GROUP_SOOTOPOLIS_CITY, MAP_ID_SOOTOPOLIS_CITY, 10},
- {MAP_GROUP_EVER_GRANDE_CITY, MAP_ID_EVER_GRANDE_CITY, 11},
- {MAP_GROUP_ROUTE101, MAP_ID_ROUTE101, 0},
- {MAP_GROUP_ROUTE102, MAP_ID_ROUTE102, 0},
- {MAP_GROUP_ROUTE103, MAP_ID_ROUTE103, 0},
- {MAP_GROUP_ROUTE104, MAP_ID_ROUTE104, 0},
- {MAP_GROUP_ROUTE105, MAP_ID_ROUTE105, 0},
- {MAP_GROUP_ROUTE106, MAP_ID_ROUTE106, 0},
- {MAP_GROUP_ROUTE107, MAP_ID_ROUTE107, 0},
- {MAP_GROUP_ROUTE108, MAP_ID_ROUTE108, 0},
- {MAP_GROUP_ROUTE109, MAP_ID_ROUTE109, 0},
- {MAP_GROUP_ROUTE110, MAP_ID_ROUTE110, 0},
- {MAP_GROUP_ROUTE111, MAP_ID_ROUTE111, 0},
- {MAP_GROUP_ROUTE112, MAP_ID_ROUTE112, 0},
- {MAP_GROUP_ROUTE113, MAP_ID_ROUTE113, 0},
- {MAP_GROUP_ROUTE114, MAP_ID_ROUTE114, 0},
- {MAP_GROUP_ROUTE115, MAP_ID_ROUTE115, 0},
- {MAP_GROUP_ROUTE116, MAP_ID_ROUTE116, 0},
- {MAP_GROUP_ROUTE117, MAP_ID_ROUTE117, 0},
- {MAP_GROUP_ROUTE118, MAP_ID_ROUTE118, 0},
- {MAP_GROUP_ROUTE119, MAP_ID_ROUTE119, 0},
- {MAP_GROUP_ROUTE120, MAP_ID_ROUTE120, 0},
- {MAP_GROUP_ROUTE121, MAP_ID_ROUTE121, 0},
- {MAP_GROUP_ROUTE122, MAP_ID_ROUTE122, 0},
- {MAP_GROUP_ROUTE123, MAP_ID_ROUTE123, 0},
- {MAP_GROUP_ROUTE124, MAP_ID_ROUTE124, 0},
- {MAP_GROUP_ROUTE125, MAP_ID_ROUTE125, 0},
- {MAP_GROUP_ROUTE126, MAP_ID_ROUTE126, 0},
- {MAP_GROUP_ROUTE127, MAP_ID_ROUTE127, 0},
- {MAP_GROUP_ROUTE128, MAP_ID_ROUTE128, 0},
- {MAP_GROUP_ROUTE129, MAP_ID_ROUTE129, 0},
- {MAP_GROUP_ROUTE130, MAP_ID_ROUTE130, 0},
- {MAP_GROUP_ROUTE131, MAP_ID_ROUTE131, 0},
- {MAP_GROUP_ROUTE132, MAP_ID_ROUTE132, 0},
- {MAP_GROUP_ROUTE133, MAP_ID_ROUTE133, 0},
- {MAP_GROUP_ROUTE134, MAP_ID_ROUTE134, 0}
+ {MAP_GROUP(LITTLEROOT_TOWN), MAP_NUM(LITTLEROOT_TOWN), 1},
+ {MAP_GROUP(OLDALE_TOWN), MAP_NUM(OLDALE_TOWN), 14},
+ {MAP_GROUP(DEWFORD_TOWN), MAP_NUM(DEWFORD_TOWN), 15},
+ {MAP_GROUP(LAVARIDGE_TOWN), MAP_NUM(LAVARIDGE_TOWN), 16},
+ {MAP_GROUP(FALLARBOR_TOWN), MAP_NUM(FALLARBOR_TOWN), 17},
+ {MAP_GROUP(VERDANTURF_TOWN), MAP_NUM(VERDANTURF_TOWN), 18},
+ {MAP_GROUP(PACIFIDLOG_TOWN), MAP_NUM(PACIFIDLOG_TOWN), 19},
+ {MAP_GROUP(PETALBURG_CITY), MAP_NUM(PETALBURG_CITY), 3},
+ {MAP_GROUP(SLATEPORT_CITY), MAP_NUM(SLATEPORT_CITY), 4},
+ {MAP_GROUP(MAUVILLE_CITY), MAP_NUM(MAUVILLE_CITY), 5},
+ {MAP_GROUP(RUSTBORO_CITY), MAP_NUM(RUSTBORO_CITY), 6},
+ {MAP_GROUP(FORTREE_CITY), MAP_NUM(FORTREE_CITY), 7},
+ {MAP_GROUP(LILYCOVE_CITY), MAP_NUM(LILYCOVE_CITY), 8},
+ {MAP_GROUP(MOSSDEEP_CITY), MAP_NUM(MOSSDEEP_CITY), 9},
+ {MAP_GROUP(SOOTOPOLIS_CITY), MAP_NUM(SOOTOPOLIS_CITY), 10},
+ {MAP_GROUP(EVER_GRANDE_CITY), MAP_NUM(EVER_GRANDE_CITY), 11},
+ {MAP_GROUP(ROUTE101), MAP_NUM(ROUTE101), 0},
+ {MAP_GROUP(ROUTE102), MAP_NUM(ROUTE102), 0},
+ {MAP_GROUP(ROUTE103), MAP_NUM(ROUTE103), 0},
+ {MAP_GROUP(ROUTE104), MAP_NUM(ROUTE104), 0},
+ {MAP_GROUP(ROUTE105), MAP_NUM(ROUTE105), 0},
+ {MAP_GROUP(ROUTE106), MAP_NUM(ROUTE106), 0},
+ {MAP_GROUP(ROUTE107), MAP_NUM(ROUTE107), 0},
+ {MAP_GROUP(ROUTE108), MAP_NUM(ROUTE108), 0},
+ {MAP_GROUP(ROUTE109), MAP_NUM(ROUTE109), 0},
+ {MAP_GROUP(ROUTE110), MAP_NUM(ROUTE110), 0},
+ {MAP_GROUP(ROUTE111), MAP_NUM(ROUTE111), 0},
+ {MAP_GROUP(ROUTE112), MAP_NUM(ROUTE112), 0},
+ {MAP_GROUP(ROUTE113), MAP_NUM(ROUTE113), 0},
+ {MAP_GROUP(ROUTE114), MAP_NUM(ROUTE114), 0},
+ {MAP_GROUP(ROUTE115), MAP_NUM(ROUTE115), 0},
+ {MAP_GROUP(ROUTE116), MAP_NUM(ROUTE116), 0},
+ {MAP_GROUP(ROUTE117), MAP_NUM(ROUTE117), 0},
+ {MAP_GROUP(ROUTE118), MAP_NUM(ROUTE118), 0},
+ {MAP_GROUP(ROUTE119), MAP_NUM(ROUTE119), 0},
+ {MAP_GROUP(ROUTE120), MAP_NUM(ROUTE120), 0},
+ {MAP_GROUP(ROUTE121), MAP_NUM(ROUTE121), 0},
+ {MAP_GROUP(ROUTE122), MAP_NUM(ROUTE122), 0},
+ {MAP_GROUP(ROUTE123), MAP_NUM(ROUTE123), 0},
+ {MAP_GROUP(ROUTE124), MAP_NUM(ROUTE124), 0},
+ {MAP_GROUP(ROUTE125), MAP_NUM(ROUTE125), 0},
+ {MAP_GROUP(ROUTE126), MAP_NUM(ROUTE126), 0},
+ {MAP_GROUP(ROUTE127), MAP_NUM(ROUTE127), 0},
+ {MAP_GROUP(ROUTE128), MAP_NUM(ROUTE128), 0},
+ {MAP_GROUP(ROUTE129), MAP_NUM(ROUTE129), 0},
+ {MAP_GROUP(ROUTE130), MAP_NUM(ROUTE130), 0},
+ {MAP_GROUP(ROUTE131), MAP_NUM(ROUTE131), 0},
+ {MAP_GROUP(ROUTE132), MAP_NUM(ROUTE132), 0},
+ {MAP_GROUP(ROUTE133), MAP_NUM(ROUTE133), 0},
+ {MAP_GROUP(ROUTE134), MAP_NUM(ROUTE134), 0}
};
static const u8 *const gUnknown_085A1ED4[] = {
@@ -873,10 +871,10 @@ static void RegionMap_InitializeStateBasedOnPlayerLocation(void)
u16 xOnMap;
struct WarpData *storedWarp;
- if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_SS_TIDAL_CORRIDOR
- && (gSaveBlock1Ptr->location.mapNum == MAP_ID_SS_TIDAL_CORRIDOR
- || gSaveBlock1Ptr->location.mapNum == MAP_ID_SS_TIDAL_LOWER_DECK
- || gSaveBlock1Ptr->location.mapNum == MAP_ID_SS_TIDAL_ROOMS))
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SS_TIDAL_CORRIDOR)
+ && (gSaveBlock1Ptr->location.mapNum == MAP_NUM(SS_TIDAL_CORRIDOR)
+ || gSaveBlock1Ptr->location.mapNum == MAP_NUM(SS_TIDAL_LOWER_DECK)
+ || gSaveBlock1Ptr->location.mapNum == MAP_NUM(SS_TIDAL_ROOMS)))
{
RegionMap_InitializeStateBasedOnSSTidalLocation();
return;
@@ -1334,9 +1332,9 @@ void CreateRegionMapCursor(u16 tileTag, u16 paletteTag)
gRegionMap->cursorSprite->pos1.x = 8 * gRegionMap->cursorPosX + 4;
gRegionMap->cursorSprite->pos1.y = 8 * gRegionMap->cursorPosY + 4;
}
- gRegionMap->cursorSprite->data1 = 2;
- gRegionMap->cursorSprite->data2 = (IndexOfSpritePaletteTag(paletteTag) << 4) + 0x101;
- gRegionMap->cursorSprite->data3 = TRUE;
+ gRegionMap->cursorSprite->data[1] = 2;
+ gRegionMap->cursorSprite->data[2] = (IndexOfSpritePaletteTag(paletteTag) << 4) + 0x101;
+ gRegionMap->cursorSprite->data[3] = TRUE;
}
}
@@ -1352,12 +1350,12 @@ static void FreeRegionMapCursorSprite(void)
void sub_8124268(void)
{
- gRegionMap->cursorSprite->data3 = TRUE;
+ gRegionMap->cursorSprite->data[3] = TRUE;
}
void sub_8124278(void)
{
- gRegionMap->cursorSprite->data3 = FALSE;
+ gRegionMap->cursorSprite->data[3] = FALSE;
}
void CreateRegionMapPlayerIcon(u16 tileTag, u16 paletteTag)
@@ -1431,17 +1429,17 @@ static void RegionMapPlayerIconSpriteCallback_Zoomed(struct Sprite *sprite)
{
sprite->pos2.x = -2 * gRegionMap->scrollX;
sprite->pos2.y = -2 * gRegionMap->scrollY;
- sprite->data0 = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY;
- sprite->data1 = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX;
- if (sprite->data0 < -8 || sprite->data0 > 0xa8 || sprite->data1 < -8 || sprite->data1 > 0xf8)
+ sprite->data[0] = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY;
+ sprite->data[1] = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX;
+ if (sprite->data[0] < -8 || sprite->data[0] > 0xa8 || sprite->data[1] < -8 || sprite->data[1] > 0xf8)
{
- sprite->data2 = FALSE;
+ sprite->data[2] = FALSE;
}
else
{
- sprite->data2 = TRUE;
+ sprite->data[2] = TRUE;
}
- if (sprite->data2 == TRUE)
+ if (sprite->data[2] == TRUE)
{
RegionMapPlayerIconSpriteCallback(sprite);
}
@@ -1460,9 +1458,9 @@ static void RegionMapPlayerIconSpriteCallback(struct Sprite *sprite)
{
if (gRegionMap->blinkPlayerIcon)
{
- if (++sprite->data7 > 16)
+ if (++sprite->data[7] > 16)
{
- sprite->data7 = 0;
+ sprite->data[7] = 0;
sprite->invisible = sprite->invisible ? FALSE : TRUE;
}
}
@@ -1792,7 +1790,7 @@ static void sub_8124AD4(void)
shape += 3;
}
StartSpriteAnim(&gSprites[spriteId], shape);
- gSprites[spriteId].data0 = i;
+ gSprites[spriteId].data[0] = i;
}
canFlyFlag++;
}
@@ -1822,7 +1820,7 @@ static void sub_8124BE4(void)
gSprites[spriteId].oam.size = 1;
gSprites[spriteId].callback = sub_8124CBC;
StartSpriteAnim(&gSprites[spriteId], 6);
- gSprites[spriteId].data0 = mapSecId;
+ gSprites[spriteId].data[0] = mapSecId;
}
}
}
@@ -1830,17 +1828,17 @@ static void sub_8124BE4(void)
static void sub_8124CBC(struct Sprite *sprite)
{
- if (gUnknown_0203A148->regionMap.mapSecId == sprite->data0)
+ if (gUnknown_0203A148->regionMap.mapSecId == sprite->data[0])
{
- if (++sprite->data1 > 16)
+ if (++sprite->data[1] > 16)
{
- sprite->data1 = 0;
+ sprite->data[1] = 0;
sprite->invisible = sprite->invisible ? FALSE : TRUE;
}
}
else
{
- sprite->data1 = 16;
+ sprite->data[1] = 16;
sprite->invisible = FALSE;
}
}
diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c
index 3177a8946..a034ca089 100644
--- a/src/reshow_battle_screen.c
+++ b/src/reshow_battle_screen.c
@@ -10,7 +10,7 @@
#include "battle_controllers.h"
#include "link.h"
#include "sprite.h"
-#include "species.h"
+#include "constants/species.h"
#include "battle_interface.h"
extern u16 gBattle_BG0_X;
@@ -42,7 +42,7 @@ extern u8 GetBankSpriteDefault_Y(u8 bank);
extern u8 sub_80A82E4(u8 bank);
extern void sub_806A068(u16 species, u8 bankIdentity);
extern void sub_806A12C(u16 backPicId, u8 bankIdentity);
-extern u8 sub_80A5C6C(u8 bank, u8 caseId);
+extern u8 GetBankPosition(u8 bank, u8 caseId);
// this file's functions
static void CB2_ReshowBattleScreenAfterMenu(void);
@@ -260,11 +260,11 @@ static void CreateBankSprite(u8 bank)
return;
sub_806A068(GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES), GetBankIdentity(bank));
- gBankSpriteIds[bank] = CreateSprite(&gUnknown_0202499C, sub_80A5C6C(bank, 2), posY, sub_80A82E4(bank));
+ gBankSpriteIds[bank] = CreateSprite(&gUnknown_0202499C, GetBankPosition(bank, 2), posY, sub_80A82E4(bank));
gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
- gSprites[gBankSpriteIds[bank]].data0 = bank;
- gSprites[gBankSpriteIds[bank]].data2 = GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
+ gSprites[gBankSpriteIds[bank]].data[0] = bank;
+ gSprites[gBankSpriteIds[bank]].data[2] = GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
if (gBattleSpritesDataPtr->bankData[bank].transformSpecies == SPECIES_CASTFORM)
@@ -278,7 +278,7 @@ static void CreateBankSprite(u8 bank)
sub_80A82E4(0));
gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
- gSprites[gBankSpriteIds[bank]].data0 = bank;
+ gSprites[gBankSpriteIds[bank]].data[0] = bank;
}
else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0)
{
@@ -288,7 +288,7 @@ static void CreateBankSprite(u8 bank)
sub_80A82E4(0));
gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
- gSprites[gBankSpriteIds[bank]].data0 = bank;
+ gSprites[gBankSpriteIds[bank]].data[0] = bank;
}
else
{
@@ -296,11 +296,11 @@ static void CreateBankSprite(u8 bank)
return;
sub_806A068(GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES), GetBankIdentity(bank));
- gBankSpriteIds[bank] = CreateSprite(&gUnknown_0202499C, sub_80A5C6C(bank, 2), posY, sub_80A82E4(bank));
+ gBankSpriteIds[bank] = CreateSprite(&gUnknown_0202499C, GetBankPosition(bank, 2), posY, sub_80A82E4(bank));
gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
- gSprites[gBankSpriteIds[bank]].data0 = bank;
- gSprites[gBankSpriteIds[bank]].data2 = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
+ gSprites[gBankSpriteIds[bank]].data[0] = bank;
+ gSprites[gBankSpriteIds[bank]].data[2] = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
if (gBattleSpritesDataPtr->bankData[bank].transformSpecies == SPECIES_CASTFORM)
diff --git a/src/roamer.c b/src/roamer.c
index cbe1b6312..fbd25bfad 100644
--- a/src/roamer.c
+++ b/src/roamer.c
@@ -1,8 +1,8 @@
#include "global.h"
#include "roamer.h"
#include "pokemon.h"
-#include "rng.h"
-#include "species.h"
+#include "random.h"
+#include "constants/species.h"
#include "event_data.h"
enum
diff --git a/src/safari_zone.c b/src/safari_zone.c
index d3d40af28..f1d59907d 100644
--- a/src/safari_zone.c
+++ b/src/safari_zone.c
@@ -1,7 +1,7 @@
#include "global.h"
#include "safari_zone.h"
#include "event_data.h"
-#include "game_stat.h"
+#include "constants/game_stat.h"
#include "main.h"
#include "battle.h"
#include "string_util.h"
@@ -105,7 +105,7 @@ void SafariZoneRetirePrompt(void)
ScriptContext1_SetupScript(EventScript_2A4B6F);
}
-void sub_80FC190(void)
+void CB2_EndSafariBattle(void)
{
sSafariZoneFleedMons += gBattleResults.field_1F;
if (gBattleOutcome == BATTLE_CAUGHT)
diff --git a/src/save.c b/src/save.c
index 528c67145..023ca6870 100644
--- a/src/save.c
+++ b/src/save.c
@@ -1,7 +1,7 @@
#include "global.h"
#include "gba/flash_internal.h"
#include "save.h"
-#include "game_stat.h"
+#include "constants/game_stat.h"
#include "task.h"
extern struct SaveSectionLocation gRamSaveSectionLocations[0xE];
diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c
index 3f49b89e6..ef01f0293 100755
--- a/src/save_failed_screen.c
+++ b/src/save_failed_screen.c
@@ -13,8 +13,6 @@
#define MSG_WIN_TOP 12
#define CLOCK_WIN_TOP (MSG_WIN_TOP - 4)
-extern void AddTextPrinterParametrized2(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, struct TextColor *color, s8 speed, u8 *str);
-
extern void (*gGameContinueCallback)(void);
extern u32 gDamagedSaveSectors;
diff --git a/src/save_location.c b/src/save_location.c
index 61a5fd30d..262aaf40c 100755
--- a/src/save_location.c
+++ b/src/save_location.c
@@ -1,9 +1,6 @@
#include "global.h"
#include "save_location.h"
-#include "map_constants.h"
-
-// used to make the list defines a little less ugly.
-#define MAP(name) ((MAP_GROUP_##name << 8) + (MAP_ID_##name))
+#include "constants/maps.h"
// specialSaveWarp flags
#define POKECENTER_SAVEWARP (1 << 1)
@@ -29,44 +26,44 @@ static bool32 IsCurMapInLocationList(const u16 *list)
// TODO: Not require a packed u16 array for these lists
static const u16 sSaveLocationPokeCenterList[] =
{
- MAP(OLDALE_TOWN_POKEMON_CENTER_1F),
- MAP(OLDALE_TOWN_POKEMON_CENTER_2F),
- MAP(DEWFORD_TOWN_POKEMON_CENTER_1F),
- MAP(DEWFORD_TOWN_POKEMON_CENTER_2F),
- MAP(LAVARIDGE_TOWN_POKEMON_CENTER_1F),
- MAP(LAVARIDGE_TOWN_POKEMON_CENTER_2F),
- MAP(FALLARBOR_TOWN_POKEMON_CENTER_1F),
- MAP(FALLARBOR_TOWN_POKEMON_CENTER_2F),
- MAP(VERDANTURF_TOWN_POKEMON_CENTER_1F),
- MAP(VERDANTURF_TOWN_POKEMON_CENTER_2F),
- MAP(PACIFIDLOG_TOWN_POKEMON_CENTER_1F),
- MAP(PACIFIDLOG_TOWN_POKEMON_CENTER_2F),
- MAP(PETALBURG_CITY_POKEMON_CENTER_1F),
- MAP(PETALBURG_CITY_POKEMON_CENTER_2F),
- MAP(SLATEPORT_CITY_POKEMON_CENTER_1F),
- MAP(SLATEPORT_CITY_POKEMON_CENTER_2F),
- MAP(MAUVILLE_CITY_POKEMON_CENTER_1F),
- MAP(MAUVILLE_CITY_POKEMON_CENTER_2F),
- MAP(RUSTBORO_CITY_POKEMON_CENTER_1F),
- MAP(RUSTBORO_CITY_POKEMON_CENTER_2F),
- MAP(FORTREE_CITY_POKEMON_CENTER_1F),
- MAP(FORTREE_CITY_POKEMON_CENTER_2F),
- MAP(LILYCOVE_CITY_POKEMON_CENTER_1F),
- MAP(LILYCOVE_CITY_POKEMON_CENTER_2F),
- MAP(MOSSDEEP_CITY_POKEMON_CENTER_1F),
- MAP(MOSSDEEP_CITY_POKEMON_CENTER_2F),
- MAP(SOOTOPOLIS_CITY_POKEMON_CENTER_1F),
- MAP(SOOTOPOLIS_CITY_POKEMON_CENTER_2F),
- MAP(EVER_GRANDE_CITY_POKEMON_CENTER_1F),
- MAP(EVER_GRANDE_CITY_POKEMON_CENTER_2F),
- MAP(EVER_GRANDE_CITY_POKEMON_LEAGUE_1F),
- MAP(EVER_GRANDE_CITY_POKEMON_LEAGUE_2F),
- MAP(BATTLE_FRONTIER_POKEMON_CENTER_1F),
- MAP(BATTLE_FRONTIER_POKEMON_CENTER_2F),
- MAP(SINGLE_BATTLE_COLOSSEUM),
- MAP(TRADE_CENTER),
- MAP(RECORD_CORNER),
- MAP(DOUBLE_BATTLE_COLOSSEUM),
+ MAP_OLDALE_TOWN_POKEMON_CENTER_1F,
+ MAP_OLDALE_TOWN_POKEMON_CENTER_2F,
+ MAP_DEWFORD_TOWN_POKEMON_CENTER_1F,
+ MAP_DEWFORD_TOWN_POKEMON_CENTER_2F,
+ MAP_LAVARIDGE_TOWN_POKEMON_CENTER_1F,
+ MAP_LAVARIDGE_TOWN_POKEMON_CENTER_2F,
+ MAP_FALLARBOR_TOWN_POKEMON_CENTER_1F,
+ MAP_FALLARBOR_TOWN_POKEMON_CENTER_2F,
+ MAP_VERDANTURF_TOWN_POKEMON_CENTER_1F,
+ MAP_VERDANTURF_TOWN_POKEMON_CENTER_2F,
+ MAP_PACIFIDLOG_TOWN_POKEMON_CENTER_1F,
+ MAP_PACIFIDLOG_TOWN_POKEMON_CENTER_2F,
+ MAP_PETALBURG_CITY_POKEMON_CENTER_1F,
+ MAP_PETALBURG_CITY_POKEMON_CENTER_2F,
+ MAP_SLATEPORT_CITY_POKEMON_CENTER_1F,
+ MAP_SLATEPORT_CITY_POKEMON_CENTER_2F,
+ MAP_MAUVILLE_CITY_POKEMON_CENTER_1F,
+ MAP_MAUVILLE_CITY_POKEMON_CENTER_2F,
+ MAP_RUSTBORO_CITY_POKEMON_CENTER_1F,
+ MAP_RUSTBORO_CITY_POKEMON_CENTER_2F,
+ MAP_FORTREE_CITY_POKEMON_CENTER_1F,
+ MAP_FORTREE_CITY_POKEMON_CENTER_2F,
+ MAP_LILYCOVE_CITY_POKEMON_CENTER_1F,
+ MAP_LILYCOVE_CITY_POKEMON_CENTER_2F,
+ MAP_MOSSDEEP_CITY_POKEMON_CENTER_1F,
+ MAP_MOSSDEEP_CITY_POKEMON_CENTER_2F,
+ MAP_SOOTOPOLIS_CITY_POKEMON_CENTER_1F,
+ MAP_SOOTOPOLIS_CITY_POKEMON_CENTER_2F,
+ MAP_EVER_GRANDE_CITY_POKEMON_CENTER_1F,
+ MAP_EVER_GRANDE_CITY_POKEMON_CENTER_2F,
+ MAP_EVER_GRANDE_CITY_POKEMON_LEAGUE_1F,
+ MAP_EVER_GRANDE_CITY_POKEMON_LEAGUE_2F,
+ MAP_BATTLE_FRONTIER_POKEMON_CENTER_1F,
+ MAP_BATTLE_FRONTIER_POKEMON_CENTER_2F,
+ MAP_SINGLE_BATTLE_COLOSSEUM,
+ MAP_TRADE_CENTER,
+ MAP_RECORD_CORNER,
+ MAP_DOUBLE_BATTLE_COLOSSEUM,
0xFFFF,
};
@@ -77,7 +74,7 @@ static bool32 IsCurMapPokeCenter(void)
static const u16 sSaveLocationReloadLocList[] = // there's only 1 location, and it's presumed its for the save reload feature for battle tower
{
- MAP(BATTLE_TOWER_LOBBY),
+ MAP_BATTLE_FRONTIER_BATTLE_TOWER_LOBBY,
0xFFFF,
};
diff --git a/src/scrcmd.c b/src/scrcmd.c
index 183b9bab5..1b10501fc 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -34,7 +34,7 @@
#include "party_menu.h"
#include "pokemon_3.h"
#include "pokemon_storage_system.h"
-#include "rng.h"
+#include "random.h"
#include "overworld.h"
#include "rtc.h"
#include "script.h"
@@ -656,7 +656,7 @@ bool8 ScrCmd_fadescreenspeed(struct ScriptContext *ctx)
bool8 ScrCmd_fadescreenswapbuffers(struct ScriptContext *ctx)
{
u8 mode = ScriptReadByte(ctx);
-
+
switch (mode)
{
case 1:
@@ -1445,7 +1445,7 @@ bool8 ScrCmd_drawboxtext(struct ScriptContext *ctx)
u8 top = ScriptReadByte(ctx);
u8 multichoiceId = ScriptReadByte(ctx);
u8 ignoreBPress = ScriptReadByte(ctx);
-
+
/*if (Multichoice(left, top, multichoiceId, ignoreBPress) == TRUE)
{
ScriptContext1_Stop();
@@ -1501,31 +1501,31 @@ bool8 ScrCmd_braillemessage(struct ScriptContext *ctx)
u8 y;
StringExpandPlaceholders(gStringVar4, ptr + 6);
-
+
width = GetStringWidth(6, gStringVar4, -1) / 8;
-
+
if (width > 0x1C)
width = 0x1C;
-
+
for (i = 0, height = 4; gStringVar4[i] != 0xFF;)
{
if (gStringVar4[i++] == 0xFE)
height += 3;
}
-
+
if (height > 0x12)
height = 0x12;
-
+
x = width + 2;
temp1 = (0x1E - x) / 2;
x = temp1 + 1;
temp1 = ((x - temp1 - 1) * 8 + 3);
-
+
y = height + 2;
temp2 = (0x14 - y) / 2;
y = temp2 + 2;
temp2 = ((y - temp2 - 1) * 8);
-
+
sub_8198A50(&template1, 0, x, y, width, height, 0xF, 0x1);
template2 = template1;
gUnknown_03000F30 = AddWindow(&template2);
@@ -1924,7 +1924,7 @@ bool8 ScrCmd_hidemoneybox(struct ScriptContext *ctx)
{
/*u8 x = ScriptReadByte(ctx);
u8 y = ScriptReadByte(ctx);*/
-
+
HideMoneyBox();
return FALSE;
}
@@ -1979,13 +1979,13 @@ bool8 ScrCmd_dotrainerbattle(struct ScriptContext *ctx)
return TRUE;
}
-bool8 ScrCmd_ontrainerbattleend(struct ScriptContext *ctx)
+bool8 ScrCmd_gotopostbattlescript(struct ScriptContext *ctx)
{
ctx->scriptPtr = BattleSetup_GetScriptAddrAfterBattle();
return FALSE;
}
-bool8 ScrCmd_ontrainerbattleendgoto(struct ScriptContext *ctx)
+bool8 ScrCmd_gotobeatenscript(struct ScriptContext *ctx)
{
ctx->scriptPtr = BattleSetup_GetTrainerPostBattleScript();
return FALSE;
@@ -1995,7 +1995,7 @@ bool8 ScrCmd_checktrainerflag(struct ScriptContext *ctx)
{
u16 index = VarGet(ScriptReadHalfword(ctx));
- ctx->comparisonResult = HasTrainerAlreadyBeenFought(index);
+ ctx->comparisonResult = HasTrainerBeenFought(index);
return FALSE;
}
@@ -2003,7 +2003,7 @@ bool8 ScrCmd_settrainerflag(struct ScriptContext *ctx)
{
u16 index = VarGet(ScriptReadHalfword(ctx));
- trainer_flag_set(index);
+ SetTrainerFlag(index);
return FALSE;
}
@@ -2011,7 +2011,7 @@ bool8 ScrCmd_cleartrainerflag(struct ScriptContext *ctx)
{
u16 index = VarGet(ScriptReadHalfword(ctx));
- trainer_flag_clear(index);
+ ClearTrainerFlag(index);
return FALSE;
}
@@ -2374,7 +2374,7 @@ bool8 ScrCmd_checkmonobedience(struct ScriptContext *ctx)
bool8 ScrCmd_cmdCF(struct ScriptContext *ctx)
{
const u8* v1 = sub_8099244();
-
+
if (v1)
{
((u8*)gUnknown_020375C0) = ctx->scriptPtr;
diff --git a/src/secret_base.c b/src/secret_base.c
index de2b7221a..cc320e5d7 100644
--- a/src/secret_base.c
+++ b/src/secret_base.c
@@ -1,6 +1,7 @@
// Includes
#include "global.h"
+#include "constants/decorations.h"
#include "malloc.h"
#include "task.h"
#include "palette.h"
@@ -10,8 +11,8 @@
#include "menu_helpers.h"
#include "new_menu_helpers.h"
#include "menu_indicators.h"
-#include "map_constants.h"
-#include "songs.h"
+#include "constants/maps.h"
+#include "constants/songs.h"
#include "sound.h"
#include "overworld.h"
#include "fieldmap.h"
@@ -89,30 +90,30 @@ const struct {
};
const u8 gUnknown_0858CFE8[] = {
- MAP_ID_SECRET_BASE_RED_CAVE1, 0x00, 0x01, 0x03,
- MAP_ID_SECRET_BASE_RED_CAVE2, 0x00, 0x05, 0x09,
- MAP_ID_SECRET_BASE_RED_CAVE3, 0x00, 0x01, 0x03,
- MAP_ID_SECRET_BASE_RED_CAVE4, 0x00, 0x07, 0x0d,
- MAP_ID_SECRET_BASE_BROWN_CAVE1, 0x00, 0x02, 0x03,
- MAP_ID_SECRET_BASE_BROWN_CAVE2, 0x00, 0x09, 0x02,
- MAP_ID_SECRET_BASE_BROWN_CAVE3, 0x00, 0x0d, 0x04,
- MAP_ID_SECRET_BASE_BROWN_CAVE4, 0x00, 0x01, 0x02,
- MAP_ID_SECRET_BASE_BLUE_CAVE1, 0x00, 0x01, 0x03,
- MAP_ID_SECRET_BASE_BLUE_CAVE2, 0x00, 0x01, 0x02,
- MAP_ID_SECRET_BASE_BLUE_CAVE3, 0x00, 0x03, 0x0f,
- MAP_ID_SECRET_BASE_BLUE_CAVE4, 0x00, 0x03, 0x0e,
- MAP_ID_SECRET_BASE_YELLOW_CAVE1, 0x00, 0x09, 0x03,
- MAP_ID_SECRET_BASE_YELLOW_CAVE2, 0x00, 0x08, 0x07,
- MAP_ID_SECRET_BASE_YELLOW_CAVE3, 0x00, 0x03, 0x06,
- MAP_ID_SECRET_BASE_YELLOW_CAVE4, 0x00, 0x05, 0x09,
- MAP_ID_SECRET_BASE_TREE1, 0x00, 0x02, 0x03,
- MAP_ID_SECRET_BASE_TREE2, 0x00, 0x05, 0x06,
- MAP_ID_SECRET_BASE_TREE3, 0x00, 0x0f, 0x03,
- MAP_ID_SECRET_BASE_TREE4, 0x00, 0x04, 0x0a,
- MAP_ID_SECRET_BASE_SHRUB1, 0x00, 0x03, 0x03,
- MAP_ID_SECRET_BASE_SHRUB2, 0x00, 0x01, 0x02,
- MAP_ID_SECRET_BASE_SHRUB3, 0x00, 0x07, 0x08,
- MAP_ID_SECRET_BASE_SHRUB4, 0x00, 0x09, 0x06
+ MAP_NUM(SECRET_BASE_RED_CAVE1), 0x00, 0x01, 0x03,
+ MAP_NUM(SECRET_BASE_RED_CAVE2), 0x00, 0x05, 0x09,
+ MAP_NUM(SECRET_BASE_RED_CAVE3), 0x00, 0x01, 0x03,
+ MAP_NUM(SECRET_BASE_RED_CAVE4), 0x00, 0x07, 0x0d,
+ MAP_NUM(SECRET_BASE_BROWN_CAVE1), 0x00, 0x02, 0x03,
+ MAP_NUM(SECRET_BASE_BROWN_CAVE2), 0x00, 0x09, 0x02,
+ MAP_NUM(SECRET_BASE_BROWN_CAVE3), 0x00, 0x0d, 0x04,
+ MAP_NUM(SECRET_BASE_BROWN_CAVE4), 0x00, 0x01, 0x02,
+ MAP_NUM(SECRET_BASE_BLUE_CAVE1), 0x00, 0x01, 0x03,
+ MAP_NUM(SECRET_BASE_BLUE_CAVE2), 0x00, 0x01, 0x02,
+ MAP_NUM(SECRET_BASE_BLUE_CAVE3), 0x00, 0x03, 0x0f,
+ MAP_NUM(SECRET_BASE_BLUE_CAVE4), 0x00, 0x03, 0x0e,
+ MAP_NUM(SECRET_BASE_YELLOW_CAVE1), 0x00, 0x09, 0x03,
+ MAP_NUM(SECRET_BASE_YELLOW_CAVE2), 0x00, 0x08, 0x07,
+ MAP_NUM(SECRET_BASE_YELLOW_CAVE3), 0x00, 0x03, 0x06,
+ MAP_NUM(SECRET_BASE_YELLOW_CAVE4), 0x00, 0x05, 0x09,
+ MAP_NUM(SECRET_BASE_TREE1), 0x00, 0x02, 0x03,
+ MAP_NUM(SECRET_BASE_TREE2), 0x00, 0x05, 0x06,
+ MAP_NUM(SECRET_BASE_TREE3), 0x00, 0x0f, 0x03,
+ MAP_NUM(SECRET_BASE_TREE4), 0x00, 0x04, 0x0a,
+ MAP_NUM(SECRET_BASE_SHRUB1), 0x00, 0x03, 0x03,
+ MAP_NUM(SECRET_BASE_SHRUB2), 0x00, 0x01, 0x02,
+ MAP_NUM(SECRET_BASE_SHRUB3), 0x00, 0x07, 0x08,
+ MAP_NUM(SECRET_BASE_SHRUB4), 0x00, 0x09, 0x06
};
const struct MenuAction gUnknown_0858D048[] = {
@@ -360,7 +361,7 @@ void sub_80E8F9C(void)
s8 idx;
idx = sCurSecretBaseId / 10 * 4;
- warp1_set_2(MAP_GROUP_SECRET_BASE_RED_CAVE1, gUnknown_0858CFE8[idx], gUnknown_0858CFE8[idx + 1]);
+ warp1_set_2(MAP_GROUP(SECRET_BASE_RED_CAVE1), gUnknown_0858CFE8[idx], gUnknown_0858CFE8[idx + 1]);
}
void sub_80E8FD0(u8 taskId)
@@ -455,7 +456,7 @@ void sub_80E91F8(void)
bool8 CurrentMapIsSecretBase(void)
{
- if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_SECRET_BASE_RED_CAVE1 && (u8)gSaveBlock1Ptr->location.mapNum <= MAP_ID_SECRET_BASE_SHRUB4)
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SECRET_BASE_RED_CAVE1) && (u8)gSaveBlock1Ptr->location.mapNum <= MAP_NUM(SECRET_BASE_SHRUB4))
{
return TRUE;
}
@@ -1282,7 +1283,7 @@ u8 sub_80EA20C(u8 secretBaseRecordId)
return (gSaveBlock1Ptr->secretBases[secretBaseRecordId].trainerId[0] % 5) + (gSaveBlock1Ptr->secretBases[secretBaseRecordId].gender * 5);
}
-const u8 *sub_80EA250(void)
+const u8 *GetSecretBaseTrainerLoseText(void)
{
u8 param;
diff --git a/src/sound.c b/src/sound.c
index a95511ece..086fede67 100644
--- a/src/sound.c
+++ b/src/sound.c
@@ -5,7 +5,7 @@
#include "m4a.h"
#include "main.h"
#include "pokemon.h"
-#include "songs.h"
+#include "constants/songs.h"
#include "task.h"
struct Fanfare
diff --git a/src/sprite.c b/src/sprite.c
index daa019019..9db61d2e9 100644
--- a/src/sprite.c
+++ b/src/sprite.c
@@ -168,14 +168,7 @@ static const struct Sprite sDummySprite =
.animPaused = 0,
.affineAnimPaused = 0,
.animLoopCounter = 0,
- .data0 = 0,
- .data1 = 0,
- .data2 = 0,
- .data3 = 0,
- .data4 = 0,
- .data5 = 0,
- .data6 = 0,
- .data7 = 0,
+ .data = {0, 0, 0, 0, 0, 0, 0},
.inUse = 0,
.coordOffsetEnabled = 0,
.invisible = 0,
@@ -1075,7 +1068,7 @@ void BeginAffineAnim(struct Sprite *sprite)
ApplyAffineAnimFrame(matrixNum, &frameCmd);
sAffineAnimStates[matrixNum].delayCounter = frameCmd.duration;
if (sprite->flags_f)
- obj_update_pos2(sprite, sprite->data6, sprite->data7);
+ obj_update_pos2(sprite, sprite->data[6], sprite->data[7]);
}
}
@@ -1101,7 +1094,7 @@ void ContinueAffineAnim(struct Sprite *sprite)
sAffineAnimCmdFuncs[funcIndex](matrixNum, sprite);
}
if (sprite->flags_f)
- obj_update_pos2(sprite, sprite->data6, sprite->data7);
+ obj_update_pos2(sprite, sprite->data[6], sprite->data[7]);
}
}
@@ -1197,8 +1190,8 @@ u8 GetSpriteMatrixNum(struct Sprite *sprite)
void sub_8007E18(struct Sprite* sprite, s16 a2, s16 a3)
{
- sprite->data6 = a2;
- sprite->data7 = a3;
+ sprite->data[6] = a2;
+ sprite->data[7] = a3;
sprite->flags_f = 1;
}
diff --git a/src/starter_choose.c b/src/starter_choose.c
index 8cf3cfefa..2d78af8fb 100644
--- a/src/starter_choose.c
+++ b/src/starter_choose.c
@@ -12,7 +12,7 @@
#include "decompress.h"
#include "menu.h"
#include "sound.h"
-#include "songs.h"
+#include "constants/songs.h"
#include "event_data.h"
#include "pokedex.h"
#include "data2.h"
@@ -170,20 +170,20 @@ void CB2_ChooseStarter(void)
// Create hand sprite
spriteId = CreateSprite(&sSpriteTemplate_Hand, 120, 56, 2);
- gSprites[spriteId].data0 = taskId;
+ gSprites[spriteId].data[0] = taskId;
// Create three Pokeball sprites
spriteId = CreateSprite(&sSpriteTemplate_PokeBall, sPokeballCoords[0][0], sPokeballCoords[0][1], 2);
- gSprites[spriteId].data0 = taskId;
- gSprites[spriteId].data1 = 0;
+ gSprites[spriteId].data[0] = taskId;
+ gSprites[spriteId].data[1] = 0;
spriteId = CreateSprite(&sSpriteTemplate_PokeBall, sPokeballCoords[1][0], sPokeballCoords[1][1], 2);
- gSprites[spriteId].data0 = taskId;
- gSprites[spriteId].data1 = 1;
+ gSprites[spriteId].data[0] = taskId;
+ gSprites[spriteId].data[1] = 1;
spriteId = CreateSprite(&sSpriteTemplate_PokeBall, sPokeballCoords[2][0], sPokeballCoords[2][1], 2);
- gSprites[spriteId].data0 = taskId;
- gSprites[spriteId].data1 = 2;
+ gSprites[spriteId].data[0] = taskId;
+ gSprites[spriteId].data[1] = 2;
sStarterChooseWindowId = 0xFF;
}
@@ -265,7 +265,7 @@ static void Task_StarterChoose5(u8 taskId)
{
u8 spriteId;
- switch (sub_8198C58())
+ switch (ProcessMenuInputNoWrap_())
{
case 0: // YES
// Return the starter choice and exit.
@@ -363,15 +363,15 @@ static u8 CreatePokemonFrontSprite(u16 species, u8 x, u8 y)
static void sub_81346DC(struct Sprite *sprite)
{
- sprite->pos1.x = gUnknown_085B1E28[gTasks[sprite->data0].tStarterSelection][0];
- sprite->pos1.y = gUnknown_085B1E28[gTasks[sprite->data0].tStarterSelection][1];
- sprite->pos2.y = Sin(sprite->data1, 8);
- sprite->data1 = (u8)(sprite->data1) + 4;
+ sprite->pos1.x = gUnknown_085B1E28[gTasks[sprite->data[0]].tStarterSelection][0];
+ sprite->pos1.y = gUnknown_085B1E28[gTasks[sprite->data[0]].tStarterSelection][1];
+ sprite->pos2.y = Sin(sprite->data[1], 8);
+ sprite->data[1] = (u8)(sprite->data[1]) + 4;
}
static void sub_813473C(struct Sprite *sprite)
{
- if (gTasks[sprite->data0].tStarterSelection == sprite->data1)
+ if (gTasks[sprite->data[0]].tStarterSelection == sprite->data[1])
StartSpriteAnimIfDifferent(sprite, 1);
else
StartSpriteAnimIfDifferent(sprite, 0);
diff --git a/src/text.c b/src/text.c
index 8108a6867..a13ed162d 100644
--- a/src/text.c
+++ b/src/text.c
@@ -13,7 +13,7 @@ extern void CopyWindowToVram(u8 windowId, u8 mode);
extern u16 Font6Func(struct TextPrinter *textPrinter);
extern u32 GetGlyphWidthFont6(u16 glyphId, bool32 isJapanese);
extern void PlaySE(u16 songNum);
-extern u8* sub_81AFC74(u8 a1);
+extern u8* UnkTextUtil_GetPtrI(u8 a1);
EWRAM_DATA struct TextPrinter gTempTextPrinter = {0};
EWRAM_DATA struct TextPrinter gTextPrinters[NUM_TEXT_PRINTERS] = {0};
@@ -190,7 +190,7 @@ bool16 AddTextPrinter(struct TextSubPrinter *textSubPrinter, u8 speed, void (*ca
gTempTextPrinter.japanese = 0;
GenerateFontHalfRowLookupTable(textSubPrinter->fontColor_h, textSubPrinter->bgColor, textSubPrinter->shadowColor);
- if (speed != 0xFF && speed != 0x0)
+ if (speed != TEXT_SPEED_FF && speed != 0x0)
{
--gTempTextPrinter.text_speed;
gTextPrinters[textSubPrinter->windowId] = gTempTextPrinter;
@@ -204,7 +204,7 @@ bool16 AddTextPrinter(struct TextSubPrinter *textSubPrinter, u8 speed, void (*ca
break;
}
- if (speed != 0xFF)
+ if (speed != TEXT_SPEED_FF)
CopyWindowToVram(gTempTextPrinter.subPrinter.windowId, 2);
gTextPrinters[textSubPrinter->windowId].sub_union.sub.active = 0;
}
@@ -2932,7 +2932,7 @@ u32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing)
}
case 0xF7:
if (bufferPointer == NULL)
- bufferPointer = sub_81AFC74(*++str);
+ bufferPointer = UnkTextUtil_GetPtrI(*++str);
while (*bufferPointer != 0xFF)
{
glyphWidth = func(*bufferPointer++, isJapanese);
diff --git a/src/trainer_see.c b/src/trainer_see.c
new file mode 100644
index 000000000..b30f27347
--- /dev/null
+++ b/src/trainer_see.c
@@ -0,0 +1,68 @@
+#include "global.h"
+#include "trainer_see.h"
+#include "battle_setup.h"
+
+extern u8 gApproachingTrainerId;
+extern u8 gNoOfApproachingTrainers;
+extern u8 gUnknown_030060AC;
+extern u16 gUnknown_03006080;
+
+// this file's functions
+u8 CheckIfTrainerWantsBattle(u8 mapObjectId);
+
+bool8 CheckForTrainersWantingBattle(void)
+{
+ u8 i;
+
+ gNoOfApproachingTrainers = 0;
+ gApproachingTrainerId = 0;
+
+ for (i = 0; i < MAP_OBJECTS_COUNT; i++)
+ {
+ u8 retVal;
+
+ if (!gMapObjects[i].active)
+ continue;
+ if (gMapObjects[i].trainerType != 1 && gMapObjects[i].trainerType != 3)
+ continue;
+
+ retVal = CheckIfTrainerWantsBattle(i);
+ if (retVal == 2)
+ break; // two trainers have been found
+
+ if (retVal == 0) // no trainers
+ continue;
+
+ if (gNoOfApproachingTrainers > 1)
+ break;
+ if (GetMonsStateToDoubles_2() != 0) // one trainer found and cant have a double battle
+ break;
+ }
+
+ if (gNoOfApproachingTrainers == 1)
+ {
+ ResetTrainerOpponentIds();
+ ConfigureAndSetUpOneTrainerBattle(gApproachingTrainers[gNoOfApproachingTrainers - 1].mapObjectId,
+ gApproachingTrainers[gNoOfApproachingTrainers - 1].trainerScriptPtr);
+ gUnknown_030060AC = 1;
+ return TRUE;
+ }
+ else if (gNoOfApproachingTrainers == 2)
+ {
+ ResetTrainerOpponentIds();
+ for (i = 0; i < gNoOfApproachingTrainers; i++, gApproachingTrainerId++)
+ {
+ ConfigureTwoTrainersBattle(gApproachingTrainers[i].mapObjectId,
+ gApproachingTrainers[i].trainerScriptPtr);
+ }
+ SetUpTwoTrainersBattle();
+ gApproachingTrainerId = 0;
+ gUnknown_030060AC = 1;
+ return TRUE;
+ }
+ else
+ {
+ gUnknown_030060AC = 0;
+ return FALSE;
+ }
+}
diff --git a/src/tv.c b/src/tv.c
index 1d978b093..205adbf4d 100644
--- a/src/tv.c
+++ b/src/tv.c
@@ -3,8 +3,8 @@
#include "global.h"
#include "rtc.h"
#include "overworld.h"
-#include "map_constants.h"
-#include "rng.h"
+#include "constants/maps.h"
+#include "random.h"
#include "event_data.h"
#include "fieldmap.h"
#include "field_camera.h"
@@ -14,12 +14,12 @@
#include "pokemon_storage_system.h"
#include "field_message_box.h"
#include "easy_chat.h"
-#include "species.h"
-#include "moves.h"
+#include "constants/species.h"
+#include "constants/moves.h"
#include "battle.h"
#include "battle_tower.h"
#include "contest.h"
-#include "items.h"
+#include "constants/items.h"
#include "item.h"
#include "link.h"
#include "main.h"
@@ -38,6 +38,9 @@
#include "secret_base.h"
#include "tv.h"
+extern const u8 gSpeciesNames[][11];
+extern const u8 gMoveNames[][13];
+
// Static type declarations
#define rbernoulli(num, den) TV_BernoulliTrial(0xFFFF * (num) / (den))
@@ -832,7 +835,7 @@ void UpdateTVScreensOnMap(int width, int height)
case 2:
break;
default:
- if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F && gSaveBlock1Ptr->location.mapNum == MAP_ID_LILYCOVE_CITY_COVE_LILY_MOTEL_1F)
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(LILYCOVE_CITY_COVE_LILY_MOTEL_1F) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(LILYCOVE_CITY_COVE_LILY_MOTEL_1F))
{
SetTVMetatilesOnMap(width, height, 0x3);
}
@@ -1575,7 +1578,9 @@ void SaveRecordedItemPurchasesForTVShow(void)
TVShow *show;
u8 i;
- if (!(gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_TRAINER_HILL_LOBBY && gSaveBlock1Ptr->location.mapNum == MAP_ID_TRAINER_HILL_LOBBY) && !(gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_BATTLE_FRONTIER_MART && gSaveBlock1Ptr->location.mapNum == MAP_ID_BATTLE_FRONTIER_MART) && !rbernoulli(1, 3))
+ if (!(gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(TRAINER_HILL_ENTRANCE) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(TRAINER_HILL_ENTRANCE))
+ && !(gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(BATTLE_FRONTIER_MART) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(BATTLE_FRONTIER_MART))
+ && !rbernoulli(1, 3))
{
sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_SMART_SHOPPER, FALSE) != TRUE)
@@ -1788,7 +1793,7 @@ void EndMassOutbreak(void)
gSaveBlock1Ptr->outbreakDaysLeft = 0;
}
-void sub_80ED888(u16 days)
+void UpdateTVShowsPerDay(u16 days)
{
sub_80ED8B4(days);
@@ -2959,13 +2964,13 @@ bool8 IsPriceDiscounted(u8 newsKind)
switch (newsKind)
{
case POKENEWS_SLATEPORT:
- if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_SLATEPORT_CITY && gSaveBlock1Ptr->location.mapNum == MAP_ID_SLATEPORT_CITY && gSpecialVar_LastTalked == 25)
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SLATEPORT_CITY) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(SLATEPORT_CITY) && gSpecialVar_LastTalked == 25)
{
return TRUE;
}
return FALSE;
case POKENEWS_LILYCOVE:
- if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP && gSaveBlock1Ptr->location.mapNum == MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP)
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP))
{
return TRUE;
}
@@ -3694,20 +3699,20 @@ u32 GetPlayerIDAsU32(void)
u8 CheckForBigMovieOrEmergencyNewsOnTV(void)
{
- if (gSaveBlock1Ptr->location.mapGroup != MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F)
+ if (gSaveBlock1Ptr->location.mapGroup != MAP_GROUP(LITTLEROOT_TOWN_BRENDANS_HOUSE_1F))
{
return 0;
}
if (gSaveBlock2Ptr->playerGender == MALE)
{
- if (gSaveBlock1Ptr->location.mapNum != MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F)
+ if (gSaveBlock1Ptr->location.mapNum != MAP_NUM(LITTLEROOT_TOWN_BRENDANS_HOUSE_1F))
{
return 0;
}
}
else
{
- if (gSaveBlock1Ptr->location.mapNum != MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_1F)
+ if (gSaveBlock1Ptr->location.mapNum != MAP_NUM(LITTLEROOT_TOWN_MAYS_HOUSE_1F))
{
return 0;
}
@@ -3725,11 +3730,11 @@ u8 CheckForBigMovieOrEmergencyNewsOnTV(void)
void GetMomOrDadStringForTVMessage(void)
{
- if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F)
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(LITTLEROOT_TOWN_BRENDANS_HOUSE_1F))
{
if (gSaveBlock2Ptr->playerGender == MALE)
{
- if (gSaveBlock1Ptr->location.mapNum == MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F)
+ if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(LITTLEROOT_TOWN_BRENDANS_HOUSE_1F))
{
StringCopy(gStringVar1, gText_Mom);
VarSet(VAR_0x4003, 1);
@@ -3737,7 +3742,7 @@ void GetMomOrDadStringForTVMessage(void)
}
else
{
- if (gSaveBlock1Ptr->location.mapNum == MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_1F)
+ if (gSaveBlock1Ptr->location.mapNum == MAP_NUM(LITTLEROOT_TOWN_MAYS_HOUSE_1F))
{
StringCopy(gStringVar1, gText_Mom);
VarSet(VAR_0x4003, 1);
diff --git a/src/unk_81BAD84.c b/src/unk_81BAD84.c
new file mode 100644
index 000000000..9ba98dd87
--- /dev/null
+++ b/src/unk_81BAD84.c
@@ -0,0 +1,47 @@
+#include "global.h"
+#include "graphics.h"
+
+const struct {
+ const u8 *gfx;
+ const u8 *tileMap;
+ const u16 *pltt;
+} gUnknown_08617128[] = {
+ {
+ gUnknown_08DD87C0,
+ gUnknown_08DD8EE0,
+ gUnknown_08DD8780
+ }, {
+ gUnknown_08DD90E0,
+ gUnknown_08DD9718,
+ gUnknown_08DD9080
+ }, {
+ gUnknown_08DD98B4,
+ gUnknown_08DD9E58,
+ gUnknown_08DD9874
+ }, {
+ gUnknown_08DDA02C,
+ gUnknown_08DDA63C,
+ gUnknown_08DD9FEC
+ }, {
+ gUnknown_08DDA840,
+ gUnknown_08DDAE40,
+ gUnknown_08DDA800
+ }, {
+ gUnknown_08DDB020,
+ gUnknown_08DDB2C4,
+ gUnknown_08DDAFE0
+ }
+};
+
+void sub_81BAD84(u32 idx)
+{
+ REG_DISPCNT = 0x0000;
+ REG_BG0HOFS = 0x0000;
+ REG_BG0VOFS = 0x0000;
+ REG_BLDCNT = 0x0000;
+ LZ77UnCompVram(gUnknown_08617128[idx].gfx, (void *)BG_CHAR_ADDR(0));
+ LZ77UnCompVram(gUnknown_08617128[idx].tileMap, (void *)BG_SCREEN_ADDR(31));
+ CpuCopy16(gUnknown_08617128[idx].pltt, (void *)PLTT, 0x200);
+ REG_BG0CNT = 0x1f00;
+ REG_DISPCNT = DISPCNT_BG0_ON;
+}
diff --git a/src/unk_text_util.c b/src/unk_text_util.c
new file mode 100644
index 000000000..2773522b2
--- /dev/null
+++ b/src/unk_text_util.c
@@ -0,0 +1,56 @@
+#include "global.h"
+#include "text.h"
+#include "unk_text_util.h"
+#include "string_util.h"
+
+static EWRAM_DATA const u8 *sStringPointers[8] = {};
+
+void UnkTextUtil_Reset(void)
+{
+ const u8 **ptr;
+ u8 *fillval;
+ const u8 **ptr2;
+
+ ptr = sStringPointers;
+ fillval = NULL;
+ ptr2 = ptr + (ARRAY_COUNT(sStringPointers) - 1);
+ do
+ {
+ *ptr2-- = fillval;
+ } while ((int)ptr2 >= (int)ptr);
+}
+
+void UnkTextUtil_SetPtrI(u8 idx, const u8 *ptr)
+{
+ if (idx < ARRAY_COUNT(sStringPointers))
+ {
+ sStringPointers[idx] = ptr;
+ }
+}
+
+u8 *UnkTextUtil_StringExpandPlaceholders(u8 *dest, const u8 *src)
+{
+ while (*src != EOS)
+ {
+ if (*src != CHAR_SPECIAL_F7)
+ {
+ *dest++ = *src++;
+ }
+ else
+ {
+ src++;
+ if (sStringPointers[*src] != NULL)
+ {
+ dest = StringCopy(dest, sStringPointers[*src]);
+ }
+ src++;
+ }
+ }
+ *dest = EOS;
+ return dest;
+}
+
+const u8 *UnkTextUtil_GetPtrI(u8 idx)
+{
+ return sStringPointers[idx];
+}
diff --git a/src/wallclock.c b/src/wallclock.c
new file mode 100644
index 000000000..892ef3f05
--- /dev/null
+++ b/src/wallclock.c
@@ -0,0 +1,1057 @@
+#include "global.h"
+#include "main.h"
+#include "palette.h"
+#include "gpu_regs.h"
+#include "bg.h"
+#include "rtc.h"
+#include "clock.h"
+#include "wallclock.h"
+#include "event_data.h"
+#include "graphics.h"
+#include "text.h"
+#include "window.h"
+#include "text_window.h"
+#include "menu.h"
+#include "unknown_task.h"
+#include "task.h"
+#include "strings.h"
+#include "sound.h"
+#include "songs.h"
+#include "trig.h"
+#include "decompress.h"
+
+// static types
+
+#define tMinuteHandAngle data[0]
+#define tHourHandAngle data[1]
+#define tHours data[2]
+#define tMinutes data[3]
+#define tMvmtDir data[4]
+#define tPeriod data[5]
+#define tMvmtSpeed data[6]
+
+#define TAG_GFX_WALL_CLOCK_HAND 0x1000
+#define TAG_PAL_WALL_CLOCK_HAND 0x1000
+
+// static declarations
+
+static void WallClockMainCallback(void);
+static void Task_SetClock1(u8 taskId);
+static void Task_SetClock2(u8 taskId);
+static void Task_SetClock3(u8 taskId);
+static void Task_SetClock4(u8 taskId);
+static void Task_SetClock5(u8 taskId);
+static void Task_SetClock6(u8 taskId);
+static void Task_ViewClock1(u8 taskId);
+static void Task_ViewClock2(u8 taskId);
+static void Task_ViewClock3(u8 taskId);
+static void Task_ViewClock4(u8 taskId);
+static u16 CalcNewMinHandAngle(u16 a0, u8 command, u8 a2);
+static bool32 AdvanceClock(u8 taskId, u8 command);
+static void UpdateClockPeriod(u8 taskId, u8 command);
+static void InitClockWithRtc(u8 taskId);
+static void SpriteCB_MinuteHand(struct Sprite *sprite);
+static void SpriteCB_HourHand(struct Sprite *sprite);
+static void SpriteCB_AMIndicator(struct Sprite *sprite);
+static void SpriteCB_PMIndicator(struct Sprite *sprite);
+
+// rodata
+
+static const u8 gUnknown_085B1F58[] = INCBIN_U8("graphics/wallclock/graphics_85b1f58.4bpp.lz");
+static const u16 gUnknown_085B21D4[] = INCBIN_U16("graphics/wallclock/palette_85b21d4.gbapal");
+static const struct WindowTemplate gUnknown_085B21DC[] = {
+ { 0x00, 0x03, 0x11, 0x18, 0x02, 0x0e, 0x200 },
+ { 0x02, 0x18, 0x10, 0x06, 0x02, 0x0c, 0x230 },
+ DUMMY_WIN_TEMPLATE
+};
+static const struct WindowTemplate gUnknown_085B21F4 = {
+ 0x00, 0x18, 0x09, 0x05, 0x04, 0x0e, 0x23c
+};
+static const struct BgTemplate gUnknown_085B21FC[] = {
+ {
+ .bg = 0,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 31,
+ .priority = 0
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 8,
+ .priority = 1
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 7,
+ .priority = 2
+ }
+};
+static const struct CompressedSpriteSheet gUnknown_085B2208 = {
+ gUnknown_085B1F58, 0x2000, TAG_GFX_WALL_CLOCK_HAND
+};
+static const u32 filler_85B2210[2] = {};
+static const struct SpritePalette gUnknown_085B2218[] = {
+ { gUnknown_08DCC01C, TAG_PAL_WALL_CLOCK_HAND },
+ { gUnknown_08DCC03C, 0x1001 },
+ {}
+};
+static const struct OamData Unknown_085B2230 = {
+ .y = 0xa0,
+ .size = 3,
+ .priority = 1
+};
+static const union AnimCmd Unknown_085B2238[] = {
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_END
+};
+static const union AnimCmd Unknown_085B2240[] = {
+ ANIMCMD_FRAME(64, 30),
+ ANIMCMD_END
+};
+static const union AnimCmd *const gUnknown_085B2248[] = {
+ Unknown_085B2238
+};
+static const union AnimCmd *const gUnknown_085B224C[] = {
+ Unknown_085B2240
+};
+static const struct SpriteTemplate gUnknown_085B2250 = {
+ TAG_GFX_WALL_CLOCK_HAND,
+ TAG_PAL_WALL_CLOCK_HAND,
+ &Unknown_085B2230,
+ gUnknown_085B2248,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ SpriteCB_MinuteHand
+};
+static const struct SpriteTemplate gUnknown_085B2268 = {
+ TAG_GFX_WALL_CLOCK_HAND,
+ TAG_PAL_WALL_CLOCK_HAND,
+ &Unknown_085B2230,
+ gUnknown_085B224C,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ SpriteCB_HourHand
+};
+static const struct OamData Unknown_085B2280 = {
+ .y = 0xa0,
+ .size = 1,
+ .priority = 3
+};
+static const union AnimCmd Unknown_085B2288[] = {
+ ANIMCMD_FRAME(0x84, 30),
+ ANIMCMD_END
+};
+static const union AnimCmd Unknown_085B2290[] = {
+ ANIMCMD_FRAME(0x80, 30),
+ ANIMCMD_END
+};
+static const union AnimCmd *const gUnknown_085B2298[] = {
+ Unknown_085B2288
+};
+static const union AnimCmd *const gUnknown_085B229C[] = {
+ Unknown_085B2290
+};
+static const struct SpriteTemplate gUnknown_085B22A0 = {
+ TAG_GFX_WALL_CLOCK_HAND,
+ TAG_PAL_WALL_CLOCK_HAND,
+ &Unknown_085B2280,
+ gUnknown_085B2298,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ SpriteCB_AMIndicator
+};
+static const struct SpriteTemplate gUnknown_085B22B8 = {
+ TAG_GFX_WALL_CLOCK_HAND,
+ TAG_PAL_WALL_CLOCK_HAND,
+ &Unknown_085B2280,
+ gUnknown_085B229C,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ SpriteCB_PMIndicator
+};
+static const s8 sClockHandCoords[][2] = {
+ { 0x00, -0x18},
+ { 0x01, -0x19},
+ { 0x01, -0x19},
+ { 0x02, -0x19},
+ { 0x02, -0x19},
+ { 0x02, -0x19},
+ { 0x03, -0x18},
+ { 0x03, -0x19},
+ { 0x04, -0x19},
+ { 0x04, -0x19},
+ { 0x04, -0x19},
+ { 0x05, -0x19},
+ { 0x05, -0x19},
+ { 0x06, -0x18},
+ { 0x06, -0x18},
+ { 0x06, -0x18},
+ { 0x07, -0x18},
+ { 0x07, -0x18},
+ { 0x07, -0x18},
+ { 0x08, -0x18},
+ { 0x08, -0x18},
+ { 0x09, -0x18},
+ { 0x09, -0x18},
+ { 0x0a, -0x17},
+ { 0x0a, -0x17},
+ { 0x0b, -0x16},
+ { 0x0b, -0x16},
+ { 0x0b, -0x16},
+ { 0x0c, -0x16},
+ { 0x0c, -0x15},
+ { 0x0d, -0x15},
+ { 0x0d, -0x15},
+ { 0x0d, -0x15},
+ { 0x0e, -0x15},
+ { 0x0e, -0x15},
+ { 0x0e, -0x14},
+ { 0x0e, -0x14},
+ { 0x0f, -0x14},
+ { 0x0f, -0x13},
+ { 0x10, -0x13},
+ { 0x10, -0x13},
+ { 0x10, -0x13},
+ { 0x10, -0x12},
+ { 0x10, -0x12},
+ { 0x11, -0x12},
+ { 0x11, -0x11},
+ { 0x11, -0x11},
+ { 0x12, -0x11},
+ { 0x12, -0x11},
+ { 0x12, -0x10},
+ { 0x12, -0x10},
+ { 0x13, -0x10},
+ { 0x13, -0x0f},
+ { 0x13, -0x0f},
+ { 0x14, -0x0f},
+ { 0x14, -0x0e},
+ { 0x14, -0x0e},
+ { 0x14, -0x0d},
+ { 0x14, -0x0d},
+ { 0x15, -0x0d},
+ { 0x15, -0x0d},
+ { 0x15, -0x0c},
+ { 0x16, -0x0c},
+ { 0x16, -0x0c},
+ { 0x16, -0x0b},
+ { 0x16, -0x0b},
+ { 0x16, -0x0a},
+ { 0x17, -0x0a},
+ { 0x17, -0x09},
+ { 0x17, -0x09},
+ { 0x17, -0x09},
+ { 0x17, -0x09},
+ { 0x17, -0x08},
+ { 0x17, -0x08},
+ { 0x17, -0x07},
+ { 0x17, -0x07},
+ { 0x17, -0x06},
+ { 0x18, -0x06},
+ { 0x18, -0x06},
+ { 0x19, -0x05},
+ { 0x19, -0x05},
+ { 0x18, -0x04},
+ { 0x19, -0x04},
+ { 0x18, -0x03},
+ { 0x19, -0x03},
+ { 0x19, -0x03},
+ { 0x19, -0x02},
+ { 0x19, -0x02},
+ { 0x18, -0x01},
+ { 0x19, -0x01},
+ { 0x18, 0x00},
+ { 0x18, 0x00},
+ { 0x18, 0x00},
+ { 0x18, 0x01},
+ { 0x18, 0x01},
+ { 0x19, 0x02},
+ { 0x18, 0x02},
+ { 0x19, 0x02},
+ { 0x18, 0x03},
+ { 0x18, 0x03},
+ { 0x19, 0x04},
+ { 0x18, 0x04},
+ { 0x18, 0x05},
+ { 0x18, 0x05},
+ { 0x18, 0x05},
+ { 0x18, 0x06},
+ { 0x17, 0x06},
+ { 0x17, 0x06},
+ { 0x17, 0x07},
+ { 0x17, 0x08},
+ { 0x17, 0x08},
+ { 0x17, 0x08},
+ { 0x17, 0x09},
+ { 0x17, 0x09},
+ { 0x17, 0x0a},
+ { 0x16, 0x0a},
+ { 0x16, 0x0a},
+ { 0x16, 0x0b},
+ { 0x16, 0x0b},
+ { 0x16, 0x0b},
+ { 0x16, 0x0c},
+ { 0x15, 0x0c},
+ { 0x15, 0x0c},
+ { 0x15, 0x0d},
+ { 0x14, 0x0d},
+ { 0x14, 0x0d},
+ { 0x13, 0x0d},
+ { 0x13, 0x0d},
+ { 0x13, 0x0e},
+ { 0x13, 0x0e},
+ { 0x13, 0x0f},
+ { 0x13, 0x0f},
+ { 0x12, 0x0f},
+ { 0x12, 0x10},
+ { 0x11, 0x10},
+ { 0x11, 0x10},
+ { 0x11, 0x11},
+ { 0x11, 0x11},
+ { 0x10, 0x11},
+ { 0x10, 0x12},
+ { 0x10, 0x12},
+ { 0x0f, 0x12},
+ { 0x0e, 0x12},
+ { 0x0f, 0x13},
+ { 0x0e, 0x13},
+ { 0x0e, 0x13},
+ { 0x0d, 0x13},
+ { 0x0d, 0x14},
+ { 0x0d, 0x14},
+ { 0x0d, 0x14},
+ { 0x0c, 0x14},
+ { 0x0c, 0x14},
+ { 0x0c, 0x15},
+ { 0x0b, 0x15},
+ { 0x0b, 0x15},
+ { 0x0b, 0x15},
+ { 0x0a, 0x15},
+ { 0x0a, 0x16},
+ { 0x0a, 0x16},
+ { 0x09, 0x16},
+ { 0x09, 0x16},
+ { 0x08, 0x16},
+ { 0x07, 0x16},
+ { 0x07, 0x17},
+ { 0x07, 0x17},
+ { 0x06, 0x17},
+ { 0x06, 0x17},
+ { 0x05, 0x17},
+ { 0x05, 0x17},
+ { 0x05, 0x18},
+ { 0x04, 0x18},
+ { 0x04, 0x18},
+ { 0x04, 0x18},
+ { 0x03, 0x18},
+ { 0x02, 0x18},
+ { 0x02, 0x18},
+ { 0x01, 0x18},
+ { 0x01, 0x18},
+ { 0x00, 0x18},
+ { 0x00, 0x18},
+ {-0x01, 0x17},
+ { 0x00, 0x18},
+ { 0x00, 0x18},
+ {-0x01, 0x18},
+ {-0x01, 0x18},
+ {-0x02, 0x18},
+ {-0x02, 0x18},
+ {-0x03, 0x18},
+ {-0x03, 0x18},
+ {-0x04, 0x18},
+ {-0x04, 0x18},
+ {-0x05, 0x18},
+ {-0x05, 0x17},
+ {-0x05, 0x17},
+ {-0x06, 0x17},
+ {-0x06, 0x17},
+ {-0x07, 0x17},
+ {-0x07, 0x17},
+ {-0x07, 0x17},
+ {-0x08, 0x17},
+ {-0x08, 0x16},
+ {-0x09, 0x16},
+ {-0x09, 0x16},
+ {-0x0a, 0x16},
+ {-0x0a, 0x16},
+ {-0x0a, 0x15},
+ {-0x0b, 0x15},
+ {-0x0b, 0x15},
+ {-0x0b, 0x15},
+ {-0x0b, 0x14},
+ {-0x0c, 0x14},
+ {-0x0c, 0x14},
+ {-0x0d, 0x14},
+ {-0x0d, 0x14},
+ {-0x0d, 0x13},
+ {-0x0e, 0x13},
+ {-0x0e, 0x13},
+ {-0x0e, 0x13},
+ {-0x0e, 0x12},
+ {-0x0f, 0x12},
+ {-0x0f, 0x12},
+ {-0x0f, 0x11},
+ {-0x10, 0x11},
+ {-0x10, 0x11},
+ {-0x11, 0x11},
+ {-0x11, 0x10},
+ {-0x11, 0x10},
+ {-0x12, 0x10},
+ {-0x11, 0x0f},
+ {-0x12, 0x0f},
+ {-0x12, 0x0f},
+ {-0x13, 0x0f},
+ {-0x13, 0x0e},
+ {-0x13, 0x0e},
+ {-0x13, 0x0d},
+ {-0x13, 0x0d},
+ {-0x14, 0x0d},
+ {-0x14, 0x0c},
+ {-0x14, 0x0c},
+ {-0x15, 0x0c},
+ {-0x15, 0x0c},
+ {-0x15, 0x0b},
+ {-0x15, 0x0b},
+ {-0x15, 0x0a},
+ {-0x15, 0x0a},
+ {-0x15, 0x09},
+ {-0x16, 0x09},
+ {-0x16, 0x09},
+ {-0x16, 0x08},
+ {-0x16, 0x08},
+ {-0x16, 0x07},
+ {-0x17, 0x07},
+ {-0x17, 0x07},
+ {-0x17, 0x06},
+ {-0x17, 0x06},
+ {-0x17, 0x05},
+ {-0x18, 0x05},
+ {-0x17, 0x04},
+ {-0x17, 0x04},
+ {-0x18, 0x04},
+ {-0x18, 0x04},
+ {-0x18, 0x03},
+ {-0x18, 0x03},
+ {-0x18, 0x02},
+ {-0x18, 0x02},
+ {-0x18, 0x01},
+ {-0x18, 0x01},
+ {-0x18, 0x01},
+ {-0x18, 0x00},
+ {-0x19, 0x00},
+ {-0x18, -0x01},
+ {-0x19, -0x01},
+ {-0x18, -0x01},
+ {-0x18, -0x02},
+ {-0x18, -0x02},
+ {-0x18, -0x03},
+ {-0x18, -0x03},
+ {-0x18, -0x04},
+ {-0x18, -0x04},
+ {-0x18, -0x04},
+ {-0x18, -0x05},
+ {-0x18, -0x05},
+ {-0x18, -0x06},
+ {-0x18, -0x06},
+ {-0x17, -0x06},
+ {-0x17, -0x07},
+ {-0x17, -0x07},
+ {-0x17, -0x08},
+ {-0x17, -0x08},
+ {-0x17, -0x09},
+ {-0x17, -0x09},
+ {-0x16, -0x09},
+ {-0x16, -0x09},
+ {-0x16, -0x0a},
+ {-0x16, -0x0a},
+ {-0x15, -0x0a},
+ {-0x15, -0x0b},
+ {-0x16, -0x0b},
+ {-0x16, -0x0c},
+ {-0x15, -0x0c},
+ {-0x15, -0x0d},
+ {-0x15, -0x0d},
+ {-0x14, -0x0d},
+ {-0x15, -0x0e},
+ {-0x14, -0x0e},
+ {-0x14, -0x0e},
+ {-0x13, -0x0e},
+ {-0x13, -0x0f},
+ {-0x13, -0x0f},
+ {-0x12, -0x10},
+ {-0x12, -0x10},
+ {-0x12, -0x10},
+ {-0x12, -0x11},
+ {-0x12, -0x11},
+ {-0x11, -0x11},
+ {-0x11, -0x12},
+ {-0x11, -0x12},
+ {-0x10, -0x12},
+ {-0x10, -0x12},
+ {-0x10, -0x13},
+ {-0x10, -0x13},
+ {-0x0f, -0x13},
+ {-0x0f, -0x13},
+ {-0x0f, -0x14},
+ {-0x0e, -0x14},
+ {-0x0e, -0x14},
+ {-0x0e, -0x15},
+ {-0x0d, -0x15},
+ {-0x0d, -0x15},
+ {-0x0d, -0x15},
+ {-0x0c, -0x15},
+ {-0x0c, -0x16},
+ {-0x0b, -0x16},
+ {-0x0b, -0x16},
+ {-0x0b, -0x16},
+ {-0x0a, -0x16},
+ {-0x0a, -0x16},
+ {-0x09, -0x16},
+ {-0x09, -0x17},
+ {-0x09, -0x17},
+ {-0x08, -0x17},
+ {-0x08, -0x17},
+ {-0x07, -0x17},
+ {-0x07, -0x17},
+ {-0x07, -0x18},
+ {-0x06, -0x18},
+ {-0x06, -0x18},
+ {-0x05, -0x18},
+ {-0x05, -0x18},
+ {-0x04, -0x18},
+ {-0x04, -0x18},
+ {-0x04, -0x18},
+ {-0x04, -0x19},
+ {-0x03, -0x19},
+ {-0x02, -0x19},
+ {-0x02, -0x18},
+ {-0x02, -0x18},
+ {-0x01, -0x19},
+ {-0x01, -0x19},
+ { 0x00, -0x19}
+};
+
+// text
+
+static void WallClockVblankCallback(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void LoadWallClockGraphics(void)
+{
+ SetVBlankCallback(NULL);
+ SetGpuReg(REG_OFFSET_DISPCNT, 0x0000);
+ SetGpuReg(REG_OFFSET_BG3CNT, 0x0000);
+ SetGpuReg(REG_OFFSET_BG2CNT, 0x0000);
+ SetGpuReg(REG_OFFSET_BG1CNT, 0x0000);
+ SetGpuReg(REG_OFFSET_BG0CNT, 0x0000);
+ ChangeBgX(0, 0, 0);
+ ChangeBgY(0, 0, 0);
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ChangeBgX(2, 0, 0);
+ ChangeBgY(2, 0, 0);
+ ChangeBgX(3, 0, 0);
+ ChangeBgY(3, 0, 0);
+ DmaFillLarge16(3, 0, (void *)VRAM, VRAM_SIZE, 0x1000);
+ DmaClear32(3, (void *)OAM, OAM_SIZE);
+ DmaClear16(3, (void *)PLTT, PLTT_SIZE);
+ LZ77UnCompVram(gUnknown_08DCC05C, (void *)VRAM);
+ if (gSpecialVar_0x8004 == 0)
+ {
+ LoadPalette(gUnknown_08DCC01C, 0x00, 0x20);
+ }
+ else
+ {
+ LoadPalette(gUnknown_08DCC03C, 0x00, 0x20);
+ }
+ LoadPalette(GetOverworldTextboxPalettePtr(), 0xe0, 0x20);
+ LoadPalette(gUnknown_085B21D4, 0xc0, 0x08);
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, gUnknown_085B21FC, 3);
+ InitWindows(gUnknown_085B21DC);
+ DeactivateAllTextPrinters();
+ sub_809882C(0, 0x250, 0xd0);
+ clear_scheduled_bg_copies_to_vram();
+ remove_some_task();
+ ResetTasks();
+ ResetSpriteData();
+ ResetPaletteFade();
+ FreeAllSpritePalettes();
+ LoadCompressedObjectPic(&gUnknown_085B2208);
+ LoadSpritePalettes(gUnknown_085B2218);
+}
+
+static void WallClockInit(void)
+{
+ BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ EnableInterrupts(INTR_FLAG_VBLANK);
+ SetVBlankCallback(WallClockVblankCallback);
+ SetMainCallback2(WallClockMainCallback);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0x0000);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0x0000);
+ SetGpuReg(REG_OFFSET_BLDY, 0x0000);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON);
+ ShowBg(0);
+ ShowBg(2);
+ ShowBg(3);
+}
+
+void Cb2_StartWallClock(void)
+{
+ u8 taskId;
+ u8 spriteId;
+
+ LoadWallClockGraphics();
+ LZ77UnCompVram(gUnknown_08DCC648, (u16 *)BG_SCREEN_ADDR(7));
+
+ taskId = CreateTask(Task_SetClock1, 0);
+ gTasks[taskId].tHours = 10;
+ gTasks[taskId].tMinutes = 0;
+ gTasks[taskId].tMvmtDir = 0;
+ gTasks[taskId].tPeriod = 0;
+ gTasks[taskId].tMvmtSpeed = 0;
+ gTasks[taskId].tMinuteHandAngle = 0;
+ gTasks[taskId].tHourHandAngle = 300;
+
+ spriteId = CreateSprite(&gUnknown_085B2250, 0x78, 0x50, 1);
+ gSprites[spriteId].data[0] = taskId;
+ gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
+ gSprites[spriteId].oam.matrixNum = 0;
+
+ spriteId = CreateSprite(&gUnknown_085B2268, 0x78, 0x50, 0);
+ gSprites[spriteId].data[0] = taskId;
+ gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
+ gSprites[spriteId].oam.matrixNum = 1;
+
+ spriteId = CreateSprite(&gUnknown_085B22A0, 0x78, 0x50, 2);
+ gSprites[spriteId].data[0] = taskId;
+ gSprites[spriteId].data[1] = 45;
+
+ spriteId = CreateSprite(&gUnknown_085B22B8, 0x78, 0x50, 2);
+ gSprites[spriteId].data[0] = taskId;
+ gSprites[spriteId].data[1] = 90;
+
+ WallClockInit();
+
+ PrintTextOnWindow(1, 1, gText_Confirm3, 0, 1, 0, NULL);
+ PutWindowTilemap(1);
+ schedule_bg_copy_tilemap_to_vram(2);
+}
+
+void Cb2_ViewWallClock(void)
+{
+ u8 taskId;
+ u8 spriteId;
+ u8 angle1;
+ u8 angle2;
+
+ LoadWallClockGraphics();
+ LZ77UnCompVram(gUnknown_08DCC908, (u16 *)BG_SCREEN_ADDR(7));
+
+ taskId = CreateTask(Task_ViewClock1, 0);
+ InitClockWithRtc(taskId);
+ if (gTasks[taskId].tPeriod == 0)
+ {
+ angle1 = 45;
+ angle2 = 90;
+ }
+ else
+ {
+ angle1 = 90;
+ angle2 = 135;
+ }
+
+ spriteId = CreateSprite(&gUnknown_085B2250, 0x78, 0x50, 1);
+ gSprites[spriteId].data[0] = taskId;
+ gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
+ gSprites[spriteId].oam.matrixNum = 0;
+
+ spriteId = CreateSprite(&gUnknown_085B2268, 0x78, 0x50, 0);
+ gSprites[spriteId].data[0] = taskId;
+ gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_NORMAL;
+ gSprites[spriteId].oam.matrixNum = 1;
+
+ spriteId = CreateSprite(&gUnknown_085B22A0, 0x78, 0x50, 2);
+ gSprites[spriteId].data[0] = taskId;
+ gSprites[spriteId].data[1] = angle1;
+
+ spriteId = CreateSprite(&gUnknown_085B22B8, 0x78, 0x50, 2);
+ gSprites[spriteId].data[0] = taskId;
+ gSprites[spriteId].data[1] = angle2;
+
+ WallClockInit();
+
+ PrintTextOnWindow(1, 1, gText_Cancel4, 0, 1, 0, NULL);
+ PutWindowTilemap(1);
+ schedule_bg_copy_tilemap_to_vram(2);
+}
+
+static void WallClockMainCallback(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ do_scheduled_bg_tilemap_copies_to_vram();
+ UpdatePaletteFade();
+}
+
+static void Task_SetClock1(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ gTasks[taskId].func = Task_SetClock2;
+ }
+}
+
+static void Task_SetClock2(u8 taskId)
+{
+ if (gTasks[taskId].tMinuteHandAngle % 6)
+ {
+ gTasks[taskId].tMinuteHandAngle = CalcNewMinHandAngle(gTasks[taskId].tMinuteHandAngle, gTasks[taskId].tMvmtDir, gTasks[taskId].tMvmtSpeed);
+ }
+ else
+ {
+ gTasks[taskId].tMinuteHandAngle = gTasks[taskId].tMinutes * 6;
+ gTasks[taskId].tHourHandAngle = (gTasks[taskId].tHours % 12) * 30 + (gTasks[taskId].tMinutes / 10) * 5;
+ if (gMain.newKeys & A_BUTTON)
+ {
+ gTasks[taskId].func = Task_SetClock3;
+ }
+ else
+ {
+ gTasks[taskId].tMvmtDir = 0;
+ if (gMain.heldKeys & DPAD_LEFT)
+ {
+ gTasks[taskId].tMvmtDir = 1;
+ }
+ if (gMain.heldKeys & DPAD_RIGHT)
+ {
+ gTasks[taskId].tMvmtDir = 2;
+ }
+ if (gTasks[taskId].tMvmtDir != 0)
+ {
+ if (gTasks[taskId].tMvmtSpeed < 0xFF)
+ {
+ gTasks[taskId].tMvmtSpeed++;
+ }
+ gTasks[taskId].tMinuteHandAngle = CalcNewMinHandAngle(gTasks[taskId].tMinuteHandAngle, gTasks[taskId].tMvmtDir, gTasks[taskId].tMvmtSpeed);
+ AdvanceClock(taskId, gTasks[taskId].tMvmtDir);
+ }
+ else
+ {
+ gTasks[taskId].tMvmtSpeed = 0;
+ }
+ }
+ }
+}
+
+static void Task_SetClock3(u8 taskId)
+{
+ SetWindowBorderStyle(0, FALSE, 0x250, 0x0d);
+ PrintTextOnWindow(0, 1, gText_IsThisTheCorrectTime, 0, 1, 0, NULL);
+ PutWindowTilemap(0);
+ schedule_bg_copy_tilemap_to_vram(0);
+ CreateYesNoMenu(&gUnknown_085B21F4, 0x250, 0x0d, 1);
+ gTasks[taskId].func = Task_SetClock4;
+}
+
+static void Task_SetClock4(u8 taskId)
+{
+ switch (ProcessMenuInputNoWrap_())
+ {
+ case 0:
+ PlaySE(SE_SELECT);
+ gTasks[taskId].func = Task_SetClock5;
+ break;
+ case 1:
+ case -1:
+ PlaySE(SE_SELECT);
+ sub_8198070(0, FALSE);
+ ClearWindowTilemap(0);
+ gTasks[taskId].func = Task_SetClock2;
+ break;
+ }
+}
+
+static void Task_SetClock5(u8 taskId)
+{
+ RtcInitLocalTimeOffset(gTasks[taskId].tHours, gTasks[taskId].tMinutes);
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ gTasks[taskId].func = Task_SetClock6;
+}
+
+static void Task_SetClock6(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ FreeAllWindowBuffers();
+ SetMainCallback2(gMain.savedCallback);
+ }
+}
+
+static void Task_ViewClock1(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ gTasks[taskId].func = Task_ViewClock2;
+ }
+}
+
+static void Task_ViewClock2(u8 taskId)
+{
+ InitClockWithRtc(taskId);
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ gTasks[taskId].func = Task_ViewClock3;
+ }
+}
+
+static void Task_ViewClock3(u8 taskId)
+{
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ gTasks[taskId].func = Task_ViewClock4;
+}
+
+static void Task_ViewClock4(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(gMain.savedCallback);
+ }
+}
+
+static u8 CalcMinHandDelta(u16 a0)
+{
+ if (a0 > 60)
+ {
+ return 6;
+ }
+ if (a0 > 30)
+ {
+ return 3;
+ }
+ if (a0 > 10)
+ {
+ return 2;
+ }
+ return 1;
+}
+
+static u16 CalcNewMinHandAngle(u16 a0, u8 command, u8 a2)
+{
+ u8 r1 = CalcMinHandDelta(a2);
+ switch (command)
+ {
+ case 1:
+ if (a0) a0 -= r1;
+ else a0 = 360 - r1;
+ break;
+ case 2:
+ if (a0 < 360 - r1) a0 += r1;
+ else a0 = 0;
+ break;
+ }
+ return a0;
+}
+
+static bool32 AdvanceClock(u8 taskId, u8 command)
+{
+ switch (command)
+ {
+ case 1:
+ if (gTasks[taskId].tMinutes > 0)
+ {
+ gTasks[taskId].tMinutes--;
+ }
+ else
+ {
+ gTasks[taskId].tMinutes = 59;
+ if (gTasks[taskId].tHours > 0)
+ {
+ gTasks[taskId].tHours--;
+ }
+ else
+ {
+ gTasks[taskId].tHours = 23;
+ }
+ UpdateClockPeriod(taskId, command);
+ }
+ break;
+ case 2:
+ if (gTasks[taskId].tMinutes < 59)
+ {
+ gTasks[taskId].tMinutes++;
+ }
+ else
+ {
+ gTasks[taskId].tMinutes = 0;
+ if (gTasks[taskId].tHours < 23)
+ {
+ gTasks[taskId].tHours++;
+ }
+ else
+ {
+ gTasks[taskId].tHours = 0;
+ }
+ UpdateClockPeriod(taskId, command);
+ }
+ break;
+ }
+ return FALSE;
+}
+
+static void UpdateClockPeriod(u8 taskId, u8 command)
+{
+ u8 hours = gTasks[taskId].tHours;
+ switch (command)
+ {
+ case 1:
+ switch (hours)
+ {
+ case 11:
+ gTasks[taskId].tPeriod = FALSE;
+ break;
+ case 23:
+ gTasks[taskId].tPeriod = TRUE;
+ break;
+ }
+ break;
+ case 2:
+ switch (hours)
+ {
+ case 0:
+ gTasks[taskId].tPeriod = FALSE;
+ break;
+ case 12:
+ gTasks[taskId].tPeriod = TRUE;
+ break;
+ }
+ break;
+ }
+}
+
+static void InitClockWithRtc(u8 taskId)
+{
+ RtcCalcLocalTime();
+ gTasks[taskId].tHours = gLocalTime.hours;
+ gTasks[taskId].tMinutes = gLocalTime.minutes;
+ gTasks[taskId].tMinuteHandAngle = gTasks[taskId].tMinutes * 6;
+ gTasks[taskId].tHourHandAngle = (gTasks[taskId].tHours % 12) * 30 + (gTasks[taskId].tMinutes / 10) * 5;
+ if (gLocalTime.hours < 12)
+ {
+ gTasks[taskId].tPeriod = FALSE;
+ }
+ else
+ {
+ gTasks[taskId].tPeriod = TRUE;
+ }
+}
+
+static void SpriteCB_MinuteHand(struct Sprite *sprite)
+{
+ u16 angle = gTasks[sprite->data[0]].tMinuteHandAngle;
+ s16 sin = Sin2(angle) / 16;
+ s16 cos = Cos2(angle) / 16;
+ u16 xhat;
+ u16 yhat;
+
+ SetOamMatrix(0, cos, sin, -sin, cos);
+ xhat = sClockHandCoords[angle][0];
+ yhat = sClockHandCoords[angle][1];
+
+ if (xhat > 0x80)
+ {
+ xhat |= 0xff00;
+ }
+ if (yhat > 0x80)
+ {
+ yhat |= 0xff00;
+ }
+ sprite->pos2.x = xhat;
+ sprite->pos2.y = yhat;
+}
+
+static void SpriteCB_HourHand(struct Sprite *sprite)
+{
+ u16 angle = gTasks[sprite->data[0]].tHourHandAngle;
+ s16 sin = Sin2(angle) / 16;
+ s16 cos = Cos2(angle) / 16;
+ u16 xhat;
+ u16 yhat;
+
+ SetOamMatrix(1, cos, sin, -sin, cos);
+ xhat = sClockHandCoords[angle][0];
+ yhat = sClockHandCoords[angle][1];
+ if (xhat > 0x80)
+ {
+ xhat |= 0xff00;
+ }
+ if (yhat > 0x80)
+ {
+ yhat |= 0xff00;
+ }
+ sprite->pos2.x = xhat;
+ sprite->pos2.y = yhat;
+}
+
+static void SpriteCB_AMIndicator(struct Sprite *sprite)
+{
+ if (gTasks[sprite->data[0]].tPeriod)
+ {
+ if (sprite->data[1] >= 60 && sprite->data[1] < 90)
+ {
+ sprite->data[1] += 5;
+ }
+ if (sprite->data[1] < 60)
+ {
+ sprite->data[1]++;
+ }
+ }
+ else
+ {
+ if (sprite->data[1] >= 46 && sprite->data[1] < 76)
+ {
+ sprite->data[1] -= 5;
+ }
+ if (sprite->data[1] > 75)
+ {
+ sprite->data[1]--;
+ }
+ }
+ sprite->pos2.x = Cos2(sprite->data[1]) * 30 / 0x1000;
+ sprite->pos2.y = Sin2(sprite->data[1]) * 30 / 0x1000;
+}
+
+static void SpriteCB_PMIndicator(struct Sprite *sprite)
+{
+ if (gTasks[sprite->data[0]].tPeriod)
+ {
+ if (sprite->data[1] >= 105 && sprite->data[1] < 135)
+ {
+ sprite->data[1] += 5;
+ }
+ if (sprite->data[1] < 105)
+ {
+ sprite->data[1]++;
+ }
+ }
+ else
+ {
+ if (sprite->data[1] >= 91 && sprite->data[1] < 121)
+ {
+ sprite->data[1] -= 5;
+ }
+ if (sprite->data[1] > 120)
+ {
+ sprite->data[1]--;
+ }
+ }
+ sprite->pos2.x = Cos2(sprite->data[1]) * 30 / 0x1000;
+ sprite->pos2.y = Sin2(sprite->data[1]) * 30 / 0x1000;
+}
diff --git a/src/wild_encounter.c b/src/wild_encounter.c
index ce1e02e5e..705c4416c 100644
--- a/src/wild_encounter.c
+++ b/src/wild_encounter.c
@@ -1,23 +1,24 @@
#include "global.h"
#include "wild_encounter.h"
#include "pokemon.h"
-#include "species.h"
+#include "constants/species.h"
#include "metatile_behavior.h"
#include "fieldmap.h"
-#include "rng.h"
-#include "map_constants.h"
+#include "random.h"
+#include "constants/maps.h"
#include "field_player_avatar.h"
-#include "abilities.h"
+#include "constants/abilities.h"
#include "event_data.h"
#include "safari_zone.h"
+#include "overworld.h"
#include "pokeblock.h"
#include "battle_setup.h"
#include "roamer.h"
-#include "game_stat.h"
+#include "constants/game_stat.h"
#include "tv.h"
#include "link.h"
#include "script.h"
-#include "items.h"
+#include "constants/items.h"
extern const u8 EventScript_RepelWoreOff[];
@@ -84,8 +85,8 @@ static bool8 CheckFeebas(void)
u8 route119Section = 0;
u16 waterTileNum;
- if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_ROUTE119
- && gSaveBlock1Ptr->location.mapNum == MAP_ID_ROUTE119)
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ROUTE119)
+ && gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE119))
{
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
x -= 7;
@@ -283,8 +284,8 @@ static u16 GetCurrentMapWildMonHeaderId(void)
if (gWildMonHeaders[i].mapGroup == gSaveBlock1Ptr->location.mapGroup &&
gWildMonHeaders[i].mapNum == gSaveBlock1Ptr->location.mapNum)
{
- if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_ALTERING_CAVE &&
- gSaveBlock1Ptr->location.mapNum == MAP_ID_ALTERING_CAVE)
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ALTERING_CAVE) &&
+ gSaveBlock1Ptr->location.mapNum == MAP_NUM(ALTERING_CAVE))
{
u16 alteringCaveId = VarGet(VAR_ALTERING_CAVE_WILD_SET);
if (alteringCaveId > 8)
@@ -513,8 +514,8 @@ static bool8 DoGlobalWildEncounterDiceRoll(void)
static bool8 AreLegendariesInSootopolisPreventingEncounters(void)
{
- if (gSaveBlock1Ptr->location.mapGroup != MAP_GROUP_SOOTOPOLIS_CITY
- || gSaveBlock1Ptr->location.mapNum != MAP_ID_SOOTOPOLIS_CITY)
+ if (gSaveBlock1Ptr->location.mapGroup != MAP_GROUP(SOOTOPOLIS_CITY)
+ || gSaveBlock1Ptr->location.mapNum != MAP_NUM(SOOTOPOLIS_CITY))
{
return FALSE;
}
diff --git a/sym_bss.txt b/sym_bss.txt
index e2f03b8f3..a4d3c2d82 100644
--- a/sym_bss.txt
+++ b/sym_bss.txt
@@ -2,32 +2,32 @@
.include "src/malloc.o"
.include "src/dma3_manager.o"
.include "src/gpu_regs.o"
- .include "src/bg.o"
+ .include "src/bg.o"
.include "src/text.o"
.include "src/sprite.o"
- .include "src/link.o"
- .include "src/rtc.o"
- .include "src/main_menu.o"
- .include "src/battle_1.o"
- .include "src/egg_hatch.o"
- .include "src/berry_blender.o"
- .include "src/play_time.o"
- .include "src/rom4.o"
- .include "src/field_camera.o"
- .include "src/script.o"
- .include "src/scrcmd.o"
- .include "src/tileset_anims.o"
- .include "src/palette.o"
- .include "src/sound.o"
- .include "src/field_screen.o"
- .include "src/field_effect.o"
- .include "src/pokemon_storage_system.o"
- .include "src/fldeff_cut.o"
- .include "src/script_menu.o"
- .include "src/record_mixing.o"
- .include "src/tv.o"
-
- .space 1 @ TODO: define this u32 in mauville_old_man
+ .include "src/link.o"
+ .include "src/rtc.o"
+ .include "src/main_menu.o"
+ .include "src/battle_1.o"
+ .include "src/egg_hatch.o"
+ .include "src/berry_blender.o"
+ .include "src/play_time.o"
+ .include "src/overworld.o"
+ .include "src/field_camera.o"
+ .include "src/script.o"
+ .include "src/scrcmd.o"
+ .include "src/tileset_anims.o"
+ .include "src/palette.o"
+ .include "src/sound.o"
+ .include "src/field_screen.o"
+ .include "src/field_effect.o"
+ .include "src/pokemon_storage_system.o"
+ .include "src/fldeff_cut.o"
+ .include "src/script_menu.o"
+ .include "src/record_mixing.o"
+ .include "src/tv.o"
+
+ .space 1 @ TODO: define this u32 in mauville_old_man
gUnknown_03001178: @ 3001178
.space 0x4
@@ -54,9 +54,9 @@ gUnknown_030011F6: @ 30011F6
gUnknown_030011F7: @ 30011F7
.space 0x1
- .include "src/starter_choose.o"
-
- .align 0x2
+ .include "src/starter_choose.o"
+
+ .align 0x2
gUnknown_030011FC: @ 30011FC
.space 0x2
@@ -138,7 +138,7 @@ gUnknown_03001298: @ 3001298
gUnknown_030012A8: @ 30012A8
.space 0x10
- .include "src/berry_fix_program.o"
+ .include "src/berry_fix_program.o"
gUnknown_030012BC: @ 30012BC
.space 0x4
diff --git a/sym_common.txt b/sym_common.txt
index 1a199dbb3..646db3bb7 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -75,7 +75,7 @@ gUnknown_0300307C: @ 300307C
gUnknown_03003084: @ 3003084
.space 0xC
-gUnknown_03003090: @ 3003090
+gRecvCmds: @ 3003090
.space 0x2
gUnknown_03003092: @ 3003092
@@ -111,7 +111,7 @@ gLinkVSyncDisabled: @ 30030FC
gUnknown_03003100: @ 3003100
.space 0x10
-gUnknown_03003110: @ 3003110
+gSendCmd: @ 3003110
.space 0x10
gUnknown_03003120: @ 3003120
@@ -248,7 +248,7 @@ gSaveBlock2Ptr: @ 3005D90
gPokemonStoragePtr: @ 3005D94
.space 0x4
-gUnknown_03005D98: @ 3005D98
+gInGameOpponentsNo: @ 3005D98
.space 0x4
gUnknown_03005D9C: @ 3005D9C
@@ -302,10 +302,10 @@ gUnknown_03006080: @ 3006080
gUnknown_03006084: @ 3006084
.space 0xC
-gUnknown_03006090: @ 3006090
+gApproachingTrainers: @ 3006090
.space 0x18
-gUnknown_030060A8: @ 30060A8
+gNoOfApproachingTrainers: @ 30060A8
.space 0x4
gUnknown_030060AC: @ 30060AC
diff --git a/sym_ewram.txt b/sym_ewram.txt
index cfe686a7c..31ecf2085 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -34,13 +34,13 @@ gUnknown_020223C0: @ 20223C0
gBlockRecvBuffer: @ 20223C4
.space 0x500
-gUnknown_020228C4: @ 20228C4 gBlockSendBuffer
+gBlockSendBuffer: @ 20228C4 gBlockSendBuffer
.space 0x100
gUnknown_020229C4: @ 20229C4
.space 0x2
-gUnknown_020229C6: @ 20229C6
+gLinkType: @ 20229C6
.space 0x2
gUnknown_020229C8: @ 20229C8
@@ -312,7 +312,7 @@ gUnknown_020241E9: @ 20241E9
gCurrentMove: @ 20241EA
.space 0x2
-gLastUsedMove: @ 20241EC
+gChosenMove: @ 20241EC
.space 0x2
gRandomMove: @ 20241EE
@@ -363,31 +363,31 @@ gBattlescriptCurrInstr: @ 2024214
gActionForBanks: @ 202421C
.space 0x4
-gBattlescriptPtrsForSelection: @ 2024220
+gSelectionBattleScripts: @ 2024220
.space 0x10
-gUnknown_02024230: @ 2024230
+gPalaceSelectionBattleScripts: @ 2024230
.space 0x10
-gUnknownMovesUsedByBanks: @ 2024240
+gLastPrintedMoves: @ 2024240
.space 0x8
-gLastUsedMovesByBanks: @ 2024248
+gLastMoves: @ 2024248
.space 0x8
-gUnknown_02024250: @ 2024250
+gLastLandedMoves: @ 2024250
.space 0x8
-gUnknown_02024258: @ 2024258
+gLastHitByType: @ 2024258
.space 0x8
-gUnknown_02024260: @ 2024260
+gLastResultingMoves: @ 2024260
.space 0x8
gLockedMoves: @ 2024268
.space 0x8
-gUnknown_02024270: @ 2024270
+gLastHitBy: @ 2024270
.space 0x4
gChosenMovesByBanks: @ 2024274
@@ -543,16 +543,10 @@ gUnknown_0202499C: @ 202499C
gUnknown_020249B4: @ 20249B4
.space 0x8
- .include "src/rng.o"
+ .include "src/random.o"
.include "src/daycare.o"
.include "src/load_save.o"
-gUnknown_02031C58: @ 2031C58
- .space 0x528
-
-gUnknown_02032180: @ 2032180
- .space 0x4
-
gUnknown_02032184: @ 2032184
.space 0x4
@@ -570,18 +564,8 @@ gUnknown_0203229C: @ 203229C
gUnknown_020322A0: @ 20322A0
.space 0x4
-
-gUnknown_020322A4: @ 20322A4
- .space 0x4
-
-gUnknown_020322A8: @ 20322A8
- .space 0x14
-
-gUnknown_020322BC: @ 20322BC
- .space 0x14
-
-gUnknown_020322D0: @ 20322D0
- .space 0x4
+
+ .include "src/berry_blender.o"
gDifferentSaveFile: @ 20322D4
.space 0x1
@@ -722,55 +706,11 @@ gUnknown_02038BC4: @ 2038BC4
gUnknown_02038BC6: @ 2038BC6
.space 0x2
-gUnknown_02038BC8: @ 2038BC8
- .space 0x2
-
-gTrainerBattleOpponent_A: @ 2038BCA
- .space 0x2
-
-gTrainerBattleOpponent_B: @ 2038BCC
- .space 0x2
-
-gPartnerTrainerId: @ 2038BCE
- .space 0x2
-
-gUnknown_02038BD0: @ 2038BD0
- .space 0x4
-
-gUnknown_02038BD4: @ 2038BD4
- .space 0x4
-
-gUnknown_02038BD8: @ 2038BD8
- .space 0x4
-
-gUnknown_02038BDC: @ 2038BDC
- .space 0x4
-
-gUnknown_02038BE0: @ 2038BE0
- .space 0x4
-
-gUnknown_02038BE4: @ 2038BE4
- .space 0x4
-
-gUnknown_02038BE8: @ 2038BE8
- .space 0x4
+ .include "src/battle_setup.o"
-gUnknown_02038BEC: @ 2038BEC
- .space 0x4
-
-gUnknown_02038BF0: @ 2038BF0
- .space 0x4
-
-gUnknown_02038BF4: @ 2038BF4
- .space 0x4
-
-gUnknown_02038BF8: @ 2038BF8
- .space 0x1
-
-gUnknown_02038BF9: @ 2038BF9
- .space 0x3
+.align 2
-gUnknown_02038BFC: @ 2038BFC
+gApproachingTrainerId: @ 2038BFC
.space 0x4
.include "src/wild_encounter.o"
@@ -1238,7 +1178,7 @@ gUnknown_0203AB6F: @ 203AB6F
gUnknown_0203AB70: @ 203AB70
.space 0x4
-gUnknown_0203AB74: @ 203AB74
+gResultsWindowId: @ 203AB74
.space 0x4
gUnknown_0203AB78: @ 203AB78
@@ -1545,8 +1485,7 @@ gUnknown_0203CE84: @ 203CE84
gUnknown_0203CE8C: @ 203CE8C
.space 0x10
-gUnknown_0203CE9C: @ 203CE9C
- .space 0x20
+ .include "src/unk_text_util.o"
gUnknown_0203CEBC: @ 203CEBC
.space 0x4