summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorU-User-PC\User <golemgalvanize@github.com>2017-10-18 19:28:36 -0400
committerU-User-PC\User <golemgalvanize@github.com>2017-10-18 19:28:36 -0400
commitd4532c70cb03962d38517fef2d723f81a9b27c1b (patch)
tree70220c06025360d7089011f5d80239b61ac183af
parent11f9a27640a9f921c6dc1858261d9a609a6599ca (diff)
parent0f0ba1e28c5c14bb93d403fd2df4a2d89e057a65 (diff)
fix merge conflicts
-rw-r--r--.gitignore1
-rw-r--r--Makefile104
-rw-r--r--asm/battle_1.s10
-rw-r--r--asm/battle_7.s84
-rw-r--r--asm/battle_9.s2847
-rw-r--r--asm/battle_anim.s4
-rw-r--r--asm/battle_anim_80FE840.s26
-rwxr-xr-xasm/battle_anim_815A0D4.s6
-rw-r--r--asm/battle_controller_linkopponent.s48
-rw-r--r--asm/battle_controller_linkpartner.s40
-rw-r--r--asm/battle_controller_opponent.s68
-rw-r--r--asm/battle_controller_player.s118
-rw-r--r--asm/battle_controller_player_partner.s66
-rw-r--r--asm/battle_controller_recorded_opponent.s54
-rw-r--r--asm/battle_controller_recorded_player.s58
-rw-r--r--asm/battle_controller_safari.s30
-rw-r--r--asm/battle_controller_wally.s38
-rwxr-xr-xasm/battle_frontier_1.s6
-rwxr-xr-xasm/battle_frontier_2.s22
-rwxr-xr-xasm/battle_interface.s68
-rw-r--r--asm/battle_link_817C95C.s18
-rw-r--r--asm/battle_message.s3089
-rw-r--r--asm/battle_setup.s76
-rwxr-xr-xasm/battle_tower.s32
-rw-r--r--asm/battle_transition.s4
-rw-r--r--asm/berry_blender.s18
-rw-r--r--asm/bike.s4
-rw-r--r--asm/cable_club.s30
-rw-r--r--asm/clock.s6
-rw-r--r--asm/coins.s16
-rw-r--r--asm/contest.s52
-rw-r--r--asm/contest_ai.s6
-rw-r--r--asm/contest_effect.s2
-rw-r--r--asm/contest_link_80F57C4.s34
-rw-r--r--asm/contest_link_80FC4F4.s2
-rwxr-xr-xasm/contest_link_81D9DE4.s2
-rw-r--r--asm/decoration.s4
-rw-r--r--asm/decoration_inventory.s6
-rw-r--r--asm/dewford_trend.s2
-rw-r--r--asm/easy_chat.s12
-rw-r--r--asm/field_door.s36
-rw-r--r--asm/field_effect.s54
-rw-r--r--asm/field_effect_helpers.s56
-rw-r--r--asm/field_ground_effect.s24
-rw-r--r--asm/field_message_box.s24
-rw-r--r--asm/field_player_avatar.s8
-rw-r--r--asm/field_poison.s4
-rw-r--r--asm/field_screen.s34
-rw-r--r--asm/field_tasks.s8
-rw-r--r--asm/fldeff_80F9BCC.s32
-rwxr-xr-xasm/fldeff_cut.s4
-rw-r--r--asm/fldeff_emotion.s328
-rwxr-xr-xasm/fldeff_groundshake.s4
-rw-r--r--asm/fldeff_strength.s4
-rw-r--r--asm/fldeff_sweetscent.s2
-rw-r--r--asm/fldeff_teleport.s2
-rwxr-xr-xasm/international_string_util.s127
-rw-r--r--asm/item.s12
-rwxr-xr-xasm/item_menu.s2
-rw-r--r--asm/item_use.s4
-rw-r--r--asm/link.s78
-rw-r--r--asm/main_menu.s14
-rw-r--r--asm/map_obj_8097404.s10
-rw-r--r--asm/map_obj_lock.s16
-rw-r--r--asm/mauville_old_man.s10
-rw-r--r--asm/mystery_event_script.s8
-rwxr-xr-xasm/party_menu.s18
-rw-r--r--asm/player_pc.s2
-rwxr-xr-xasm/pokeball.s8
-rwxr-xr-xasm/pokemon_storage_system.s2
-rw-r--r--asm/record_mixing.s24
-rw-r--r--asm/recorded_battle.s4
-rw-r--r--asm/reset_rtc_screen.s4
-rw-r--r--asm/reshow_battle_screen.s1040
-rw-r--r--asm/rom3.s8
-rw-r--r--asm/rom4.s114
-rw-r--r--asm/rom6.s96
-rw-r--r--asm/rom_80A5C6C.s12
-rw-r--r--asm/scrcmd.s5744
-rw-r--r--asm/script_menu.s38
-rwxr-xr-xasm/script_movement.s12
-rw-r--r--asm/script_pokemon_util_80F87D8.s38
-rw-r--r--asm/secret_base.s6
-rw-r--r--asm/shop.s2
-rw-r--r--asm/slot_machine.s6
-rw-r--r--asm/trade.s4
-rwxr-xr-xasm/trainer_rematch.s2
-rw-r--r--asm/trainer_see.s334
-rw-r--r--asm/tv.s16938
-rw-r--r--charmap.txt6
-rw-r--r--common_syms/tv.txt4
-rw-r--r--data/battle_1.s12
-rw-r--r--data/battle_anims.s742
-rw-r--r--data/battle_message.s2083
-rw-r--r--data/bike.s47
-rw-r--r--data/cable_club.s9
-rw-r--r--data/data2b.s4856
-rw-r--r--data/data2c.s137
-rw-r--r--data/enemy_mon_elevation.inc415
-rw-r--r--data/event_script_command_function_table.inc454
-rw-r--r--data/event_scripts.s16
-rw-r--r--data/fanfares.s20
-rw-r--r--data/fldeff_emotion.s11
-rw-r--r--data/graphics.s122
-rw-r--r--data/graphics/pokemon/animation_delay_table.inc412
-rw-r--r--data/graphics/pokemon/back_pic_table.inc (renamed from data/graphics/pokemon/mon_back_pic_table.inc)0
-rw-r--r--data/graphics/pokemon/footprint_table.inc (renamed from data/graphics/pokemon/mon_footprint_table.inc)0
-rw-r--r--data/graphics/pokemon/front_anim_ids_table.inc412
-rw-r--r--data/graphics/pokemon/front_anims.inc6915
-rw-r--r--data/graphics/pokemon/front_pic_table.inc (renamed from data/graphics/pokemon/mon_front_pic_table.inc)0
-rw-r--r--data/graphics/pokemon/graphics.inc (renamed from data/graphics/pokemon/mon_graphics.inc)0
-rw-r--r--data/graphics/pokemon/icon_palette_indices.inc (renamed from data/graphics/pokemon/mon_icon_palette_indices.inc)0
-rw-r--r--data/graphics/pokemon/icon_palette_table.inc (renamed from data/graphics/pokemon/mon_icon_palette_table.inc)0
-rw-r--r--data/graphics/pokemon/icon_table.inc (renamed from data/graphics/pokemon/mon_icon_table.inc)0
-rw-r--r--data/graphics/pokemon/palette_table.inc (renamed from data/graphics/pokemon/mon_palette_table.inc)0
-rw-r--r--data/graphics/pokemon/shiny_palette_table.inc (renamed from data/graphics/pokemon/mon_shiny_palette_table.inc)0
-rw-r--r--data/graphics/pokemon/still_front_pic_table.inc (renamed from data/graphics/pokemon/mon_still_front_pic_table.inc)0
-rw-r--r--data/graphics/trainers/back_pic_coords.inc10
-rw-r--r--data/graphics/trainers/back_pic_palette_table.inc (renamed from data/graphics/trainers/trainer_back_pic_palette_table.inc)0
-rw-r--r--data/graphics/trainers/back_pic_table.inc (renamed from data/graphics/trainers/trainer_back_pic_table.inc)0
-rw-r--r--data/graphics/trainers/front_pic_coords.inc95
-rw-r--r--data/graphics/trainers/front_pic_palette_table.inc (renamed from data/graphics/trainers/trainer_front_pic_palette_table.inc)0
-rw-r--r--data/graphics/trainers/front_pic_table.inc (renamed from data/graphics/trainers/trainer_front_pic_table.inc)0
-rw-r--r--data/graphics/trainers/graphics.inc (renamed from data/graphics/trainers/trainer_graphics.inc)0
-rw-r--r--data/main_menu.s141
-rw-r--r--data/pokedex.s2
-rw-r--r--data/pokemon_icon.s9
-rw-r--r--data/pokemon_summary_screen.s5
-rw-r--r--data/reset_rtc_screen.s75
-rw-r--r--data/scrcmd.s14
-rw-r--r--data/strings.s92
-rw-r--r--data/text/pokemon_news.inc165
-rw-r--r--data/text/tv.inc2891
-rw-r--r--data/title_screen.s11
-rw-r--r--data/trainer_money.inc59
-rw-r--r--data/trainer_see.s83
-rw-r--r--data/tv.s128
-rw-r--r--data/type_effectiveness.inc119
-rw-r--r--graphics/birch_speech/bg0.pal19
-rw-r--r--graphics/birch_speech/bg1.pal19
-rw-r--r--graphics/birch_speech/bg2.pal11
-rw-r--r--graphics/birch_speech/map.binbin0 -> 1280 bytes
-rw-r--r--graphics/birch_speech/shadow.pngbin0 -> 433 bytes
-rw-r--r--graphics/link/minigame_digits.pal19
-rw-r--r--graphics/link/minigame_digits.pngbin0 -> 264 bytes
-rw-r--r--graphics/link/minigame_digits2.pngbin0 -> 296 bytes
-rw-r--r--graphics/misc/emotion_exclamation.pngbin0 -> 108 bytes
-rw-r--r--graphics/misc/emotion_heart.pngbin0 -> 126 bytes
-rw-r--r--graphics/misc/emotion_question.pngbin0 -> 117 bytes
-rw-r--r--graphics/misc/main_menu_bg.pal19
-rw-r--r--graphics/misc/main_menu_text.pal19
-rw-r--r--graphics/misc/reset_rtc_screen_arrow.pal7
-rw-r--r--graphics/misc/reset_rtc_screen_downarrow.pngbin0 -> 113 bytes
-rw-r--r--graphics/misc/reset_rtc_screen_rightarrow.pngbin0 -> 110 bytes
-rw-r--r--graphics/title_screen/unk_853EF78.pal115
-rw-r--r--include/battle.h52
-rw-r--r--include/battle_2.h3
-rw-r--r--include/battle_ai_switch_items.h17
-rw-r--r--include/battle_controller_player.h7
-rw-r--r--include/battle_controllers.h7
-rw-r--r--include/battle_frontier_2.h9
-rw-r--r--include/battle_interface.h28
-rw-r--r--include/battle_message.h124
-rw-r--r--include/battle_script_commands.h2
-rw-r--r--include/battle_setup.h9
-rw-r--r--include/battle_string_ids.h387
-rw-r--r--include/battle_tower.h6
-rw-r--r--include/bg.h10
-rw-r--r--include/clock.h8
-rw-r--r--include/coins.h4
-rw-r--r--include/contest.h18
-rw-r--r--include/contest_link_80F57C4.h8
-rw-r--r--include/contest_painting.h6
-rw-r--r--include/data2.h19
-rw-r--r--include/decoration.h142
-rw-r--r--include/decoration_inventory.h10
-rw-r--r--include/diploma.h6
-rw-r--r--include/easy_chat.h6
-rw-r--r--include/event_data.h2
-rwxr-xr-xinclude/event_scripts.h349
-rw-r--r--include/field_camera.h2
-rw-r--r--include/field_door.h11
-rw-r--r--include/field_effect.h9
-rw-r--r--include/field_fadetransition.h12
-rwxr-xr-xinclude/field_map_obj.h3
-rw-r--r--include/field_map_obj_helpers.h7
-rw-r--r--include/field_message_box.h10
-rw-r--r--include/field_player_avatar.h6
-rw-r--r--include/field_screen_effect.h8
-rw-r--r--include/field_specials.h6
-rw-r--r--include/field_tasks.h6
-rw-r--r--include/field_weather.h12
-rw-r--r--include/fieldmap.h15
-rw-r--r--include/flags.h16
-rw-r--r--include/game_stat.h3
-rw-r--r--include/global.h323
-rw-r--r--include/global.tv.h535
-rw-r--r--include/international_string_util.h21
-rw-r--r--include/item.h2
-rw-r--r--include/link.h2
-rw-r--r--include/malloc.h2
-rw-r--r--include/map_obj_lock.h11
-rw-r--r--include/menu.h1
-rw-r--r--include/money.h2
-rw-r--r--include/moves.h1
-rw-r--r--include/mystery_event_script.h8
-rw-r--r--include/new_menu_helpers.h9
-rw-r--r--include/overworld.h58
-rw-r--r--include/palette.h3
-rw-r--r--include/party_menu.h6
-rw-r--r--include/pokedex.h4
-rw-r--r--include/pokemon.h1
-rw-r--r--include/pokemon_3.h7
-rw-r--r--include/pokemon_item_effects.h54
-rw-r--r--include/pokemon_storage_system.h2
-rw-r--r--include/region_map.h227
-rw-r--r--include/reshow_battle_screen.h1
-rw-r--r--include/rom4.h33
-rw-r--r--include/rom6.h1
-rw-r--r--include/save_location.h9
-rw-r--r--include/script.h4
-rw-r--r--include/script_menu.h13
-rw-r--r--include/script_movement.h8
-rw-r--r--include/script_pokemon_80F8.h10
-rw-r--r--include/script_pokemon_81B9.h6
-rw-r--r--include/secret_base.h11
-rw-r--r--include/shop.h10
-rw-r--r--include/slot_machine.h6
-rw-r--r--include/species.h1
-rw-r--r--include/string_util.h2
-rw-r--r--include/strings.h33
-rw-r--r--include/text.h5
-rw-r--r--include/trainer_see.h1
-rw-r--r--include/tv.h15
-rw-r--r--include/vars.h10
-rw-r--r--ld_script.txt21
-rw-r--r--src/battle_2.c66
-rw-r--r--src/battle_ai_script_commands.c842
-rw-r--r--src/battle_ai_switch_items.c951
-rw-r--r--src/battle_dome_cards.c4
-rw-r--r--src/battle_message.c2333
-rw-r--r--src/battle_script_commands.c37
-rw-r--r--src/battle_util.c3276
-rwxr-xr-xsrc/braille_puzzles.c8
-rw-r--r--src/coins.c4
-rwxr-xr-xsrc/diploma.c29
-rw-r--r--src/egg_hatch.c6
-rw-r--r--src/event_data.c52
-rwxr-xr-xsrc/field_map_obj.c28
-rwxr-xr-xsrc/field_special_scene.c18
-rw-r--r--src/international_string_util.c57
-rw-r--r--src/lilycove_lady.c2
-rw-r--r--src/money.c4
-rw-r--r--src/new_game.c6
-rw-r--r--src/palette.c6
-rw-r--r--src/pokemon_2.c8
-rw-r--r--src/reset_save_heap.c2
-rw-r--r--src/reshow_battle_screen.c354
-rw-r--r--src/safari_zone.c4
-rwxr-xr-xsrc/save_location.c13
-rw-r--r--src/scrcmd.c2451
-rw-r--r--src/script.c4
-rw-r--r--src/start_menu.c4
-rw-r--r--src/string_util.c2
-rw-r--r--src/text.c2
-rw-r--r--src/tv.c7927
-rw-r--r--src/util.c2
-rw-r--r--sym_bss.txt11
-rw-r--r--sym_common.txt22
-rw-r--r--sym_ewram.txt76
270 files changed, 36310 insertions, 38419 deletions
diff --git a/.gitignore b/.gitignore
index e1600820c..9f10eb5b1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -23,5 +23,6 @@ tools/*
*.dump
*.sa*
Thumbs.db
+build/
.DS_Store
*.ddump
diff --git a/Makefile b/Makefile
index e176b1258..ca8348f68 100644
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,19 @@
SHELL := /bin/bash -o pipefail
+ROM := pokeemerald.gba
+OBJ_DIR := build/emerald
+
+ELF = $(ROM:.gba=.elf)
+MAP = $(ROM:.gba=.map)
+
+C_SUBDIR = src
+ASM_SUBDIR = asm
+DATA_ASM_SUBDIR = data
+
+C_BUILDDIR = $(OBJ_DIR)/$(C_SUBDIR)
+ASM_BUILDDIR = $(OBJ_DIR)/$(ASM_SUBDIR)
+DATA_ASM_BUILDDIR = $(OBJ_DIR)/$(DATA_ASM_SUBDIR)
+
AS := $(DEVKITARM)/bin/arm-none-eabi-as
ASFLAGS := -mcpu=arm7tdmi
@@ -10,7 +24,7 @@ CPP := $(DEVKITARM)/bin/arm-none-eabi-cpp
CPPFLAGS := -I tools/agbcc/include -iquote include -nostdinc -undef
LD := $(DEVKITARM)/bin/arm-none-eabi-ld
-LDFLAGS := -T ld_script.ld -Map pokeemerald.map
+LDFLAGS = -Map $(MAP)
OBJCOPY := $(DEVKITARM)/bin/arm-none-eabi-objcopy
@@ -20,7 +34,7 @@ SHA1 := sha1sum -c
GFX := tools/gbagfx/gbagfx
AIF := tools/aif2pcm/aif2pcm
-MID := tools/mid2agb/mid2agb
+MID := $(abspath tools/mid2agb/mid2agb)
SCANINC := tools/scaninc/scaninc
PREPROC := tools/preproc/preproc
RAMSCRGEN := tools/ramscrgen/ramscrgen
@@ -35,19 +49,19 @@ RAMSCRGEN := tools/ramscrgen/ramscrgen
.PHONY: rom clean compare tidy
-C_SRCS := $(wildcard src/*.c)
-C_OBJS := $(C_SRCS:%.c=%.o)
+$(shell mkdir -p $(C_BUILDDIR) $(ASM_BUILDDIR) $(DATA_ASM_BUILDDIR))
-ASM_SRCS := $(wildcard asm/*.s)
-ASM_OBJS := $(ASM_SRCS:%.s=%.o)
+C_SRCS := $(wildcard $(C_SUBDIR)/*.c)
+C_OBJS := $(patsubst $(C_SUBDIR)/%.c,$(C_BUILDDIR)/%.o,$(C_SRCS))
-DATA_ASM_SRCS := $(wildcard data/*.s)
-DATA_ASM_OBJS := $(DATA_ASM_SRCS:%.s=%.o)
+ASM_SRCS := $(wildcard $(ASM_SUBDIR)/*.s)
+ASM_OBJS := $(patsubst $(ASM_SUBDIR)/%.s,$(ASM_BUILDDIR)/%.o,$(ASM_SRCS))
-OBJS := $(C_OBJS) $(ASM_OBJS) $(DATA_ASM_OBJS)
+DATA_ASM_SRCS := $(wildcard $(DATA_ASM_SUBDIR)/*.s)
+DATA_ASM_OBJS := $(patsubst $(DATA_ASM_SUBDIR)/%.s,$(DATA_ASM_BUILDDIR)/%.o,$(DATA_ASM_SRCS))
-ROM := pokeemerald.gba
-ELF := $(ROM:.gba=.elf)
+OBJS := $(C_OBJS) $(ASM_OBJS) $(DATA_ASM_OBJS)
+OBJS_REL := $(patsubst $(OBJ_DIR)/%,%,$(OBJS))
rom: $(ROM)
@@ -59,8 +73,8 @@ clean: tidy
find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.latfont' -o -iname '*.hwjpnfont' -o -iname '*.fwjpnfont' \) -exec rm {} +
tidy:
- rm -f ld_script.ld sym_bss.ld sym_common.ld sym_ewram.ld
- rm -f $(ROM) $(ELF) $(OBJS) $(C_SRCS:%.c=%.i) pokeemerald.map
+ rm -f $(ROM) $(ELF) $(MAP)
+ rm -r build/*
include graphics_file_rules.mk
@@ -75,56 +89,62 @@ include graphics_file_rules.mk
%.lz: % ; $(GFX) $< $@
%.rl: % ; $(GFX) $< $@
-src/libc.o: CC1 := tools/agbcc/bin/old_agbcc
-src/libc.o: CFLAGS := -O2
+$(C_BUILDDIR)/libc.o: CC1 := tools/agbcc/bin/old_agbcc
+$(C_BUILDDIR)/libc.o: CFLAGS := -O2
-src/siirtc.o: CFLAGS := -mthumb-interwork
+$(C_BUILDDIR)/siirtc.o: CFLAGS := -mthumb-interwork
-src/agb_flash.o: CFLAGS := -O -mthumb-interwork
-src/agb_flash_1m.o: CFLAGS := -O -mthumb-interwork
-src/agb_flash_mx.o: CFLAGS := -O -mthumb-interwork
+$(C_BUILDDIR)/agb_flash.o: CFLAGS := -O -mthumb-interwork
+$(C_BUILDDIR)/agb_flash_1m.o: CFLAGS := -O -mthumb-interwork
+$(C_BUILDDIR)/agb_flash_mx.o: CFLAGS := -O -mthumb-interwork
-src/m4a_2.o: CC1 := tools/agbcc/bin/old_agbcc
-src/m4a_4.o: CC1 := tools/agbcc/bin/old_agbcc
+$(C_BUILDDIR)/m4a_2.o: CC1 := tools/agbcc/bin/old_agbcc
+$(C_BUILDDIR)/m4a_4.o: CC1 := tools/agbcc/bin/old_agbcc
ifeq ($(NODEP),)
-%.o: c_dep = $(shell $(SCANINC) $*.c)
+$(C_BUILDDIR)/%.o: c_dep = $(shell $(SCANINC) $(C_SUBDIR)/$*.c)
else
-%.o: c_dep :=
+$(C_BUILDDIR)/%.o: c_dep :=
endif
-$(C_OBJS): %.o : %.c $$(c_dep)
- @$(CPP) $(CPPFLAGS) $< -o $*.i
- @$(PREPROC) $*.i charmap.txt | $(CC1) $(CFLAGS) -o $*.s
- @echo -e ".text\n\t.align\t2, 0\n" >> $*.s
- $(AS) $(ASFLAGS) -o $@ $*.s
+$(C_BUILDDIR)/%.o : $(C_SUBDIR)/%.c $$(c_dep)
+ @$(CPP) $(CPPFLAGS) $< -o $(C_BUILDDIR)/$*.i
+ @$(PREPROC) $(C_BUILDDIR)/$*.i charmap.txt | $(CC1) $(CFLAGS) -o $(C_BUILDDIR)/$*.s
+ @echo -e ".text\n\t.align\t2, 0\n" >> $(C_BUILDDIR)/$*.s
+ $(AS) $(ASFLAGS) -o $@ $(C_BUILDDIR)/$*.s
ifeq ($(NODEP),)
-%.o: asm_dep = $(shell $(SCANINC) $*.s)
+$(ASM_BUILDDIR)/%.o: asm_dep = $(shell $(SCANINC) $(ASM_SUBDIR)/$*.s)
else
-%.o: asm_dep :=
+$(ASM_BUILDDIR)/%.o: asm_dep :=
endif
-$(ASM_OBJS): %.o: %.s $$(asm_dep)
+$(ASM_BUILDDIR)/%.o: $(ASM_SUBDIR)/%.s $$(asm_dep)
$(AS) $(ASFLAGS) -o $@ $<
-$(DATA_ASM_OBJS): %.o: %.s $$(asm_dep)
+ifeq ($(NODEP),)
+$(DATA_ASM_BUILDDIR)/%.o: data_dep = $(shell $(SCANINC) $(DATA_ASM_SUBDIR)/$*.s)
+else
+$(DATA_ASM_BUILDDIR)/%.o: data_dep :=
+endif
+
+$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s $$(data_dep)
$(PREPROC) $< charmap.txt | $(AS) $(ASFLAGS) -o $@
-sym_bss.ld: sym_bss.txt
- $(RAMSCRGEN) .bss sym_bss.txt ENGLISH >$@
+$(OBJ_DIR)/sym_bss.ld: sym_bss.txt
+ $(RAMSCRGEN) .bss $< ENGLISH > $@
-sym_common.ld: sym_common.txt $(C_OBJS) $(wildcard common_syms/*.txt)
- $(RAMSCRGEN) COMMON sym_common.txt ENGLISH -c src,common_syms >$@
+$(OBJ_DIR)/sym_common.ld: sym_common.txt $(C_OBJS) $(wildcard common_syms/*.txt)
+ $(RAMSCRGEN) COMMON $< ENGLISH -c $(C_BUILDDIR),common_syms > $@
-sym_ewram.ld: sym_ewram.txt
- $(RAMSCRGEN) ewram_data sym_ewram.txt ENGLISH >$@
+$(OBJ_DIR)/sym_ewram.ld: sym_ewram.txt
+ $(RAMSCRGEN) ewram_data $< ENGLISH > $@
-ld_script.ld: ld_script.txt sym_bss.ld sym_common.ld sym_ewram.ld
- sed -f ld_script.sed ld_script.txt >ld_script.ld
+$(OBJ_DIR)/ld_script.ld: ld_script.txt $(OBJ_DIR)/sym_bss.ld $(OBJ_DIR)/sym_common.ld $(OBJ_DIR)/sym_ewram.ld
+ cd $(OBJ_DIR) && sed -f ../../ld_script.sed ../../$< | sed "s#tools/#../../tools/#g" | sed "s#sound/#../../sound/#g" > ld_script.ld
-$(ELF): ld_script.ld $(OBJS)
- $(LD) $(LDFLAGS) -o $@ $(OBJS) $(LIBGCC)
+$(ELF): $(OBJ_DIR)/ld_script.ld $(OBJS)
+ cd $(OBJ_DIR) && $(LD) $(LDFLAGS) -T ld_script.ld -o ../../$@ $(OBJS_REL) ../../$(LIBGCC)
$(ROM): $(ELF)
$(OBJCOPY) -O binary --gap-fill 0xFF --pad-to 0x9000000 $< $@
diff --git a/asm/battle_1.s b/asm/battle_1.s
index 849736cb4..416fd87ec 100644
--- a/asm/battle_1.s
+++ b/asm/battle_1.s
@@ -1547,7 +1547,7 @@ _080358E0:
.4byte _08035A40
.4byte _08035A70
_08035904:
- ldr r4, =gUnknown_0831ABA8
+ ldr r4, =gBattleTerrainTable
ldr r5, =gBattleTerrain
ldrb r1, [r5]
lsls r0, r1, 2
@@ -2632,7 +2632,7 @@ _08036350:
lsls r0, 24
cmp r0, 0
bne _0803639C
- ldr r4, =gUnknown_0831ABA8
+ ldr r4, =gBattleTerrainTable
ldr r5, =gBattleTerrain
ldrb r1, [r5]
lsls r0, r1, 2
@@ -2778,7 +2778,7 @@ _080364A8:
.4byte _08036510
.4byte _08036518
_080364CC:
- ldr r2, =gUnknown_0831ABA8
+ ldr r2, =gBattleTerrainTable
ldr r0, =gBattleTerrain
ldrb r1, [r0]
lsls r0, r1, 2
@@ -2888,7 +2888,7 @@ _080365B4:
.4byte _0803661C
.4byte _08036624
_080365D8:
- ldr r2, =gUnknown_0831ABA8
+ ldr r2, =gBattleTerrainTable
ldr r0, =gBattleTerrain
ldrb r1, [r0]
lsls r0, r1, 2
@@ -3003,7 +3003,7 @@ _080366C8:
.4byte _08036738
.4byte _08036740
_080366EC:
- ldr r2, =gUnknown_0831ABA8
+ ldr r2, =gBattleTerrainTable
ldr r0, =gBattleTerrain
ldrb r1, [r0]
lsls r0, r1, 2
diff --git a/asm/battle_7.s b/asm/battle_7.s
index 7f82e790a..36a0bf282 100644
--- a/asm/battle_7.s
+++ b/asm/battle_7.s
@@ -1323,8 +1323,8 @@ _0805DC02:
.pool
thumb_func_end mplay_80342A4
- thumb_func_start sub_805DC0C
-sub_805DC0C: @ 805DC0C
+ thumb_func_start BattleLoadOpponentMonSpriteGfx
+BattleLoadOpponentMonSpriteGfx: @ 805DC0C
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -1474,10 +1474,10 @@ _0805DD46:
pop {r0}
bx r0
.pool
- thumb_func_end sub_805DC0C
+ thumb_func_end BattleLoadOpponentMonSpriteGfx
- thumb_func_start sub_805DD7C
-sub_805DD7C: @ 805DD7C
+ thumb_func_start BattleLoadPlayerMonSpriteGfx
+BattleLoadPlayerMonSpriteGfx: @ 805DD7C
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -1658,7 +1658,7 @@ _0805DEFC:
pop {r0}
bx r0
.pool
- thumb_func_end sub_805DD7C
+ thumb_func_end BattleLoadPlayerMonSpriteGfx
thumb_func_start nullsub_23
nullsub_23: @ 805DF30
@@ -1703,8 +1703,8 @@ sub_805DF38: @ 805DF38
.pool
thumb_func_end sub_805DF38
- thumb_func_start sub_805DF84
-sub_805DF84: @ 805DF84
+ thumb_func_start LoadBackTrainerBankSpriteGfx
+LoadBackTrainerBankSpriteGfx: @ 805DF84
push {r4,r5,lr}
adds r5, r0, 0
adds r4, r1, 0
@@ -1742,7 +1742,7 @@ sub_805DF84: @ 805DF84
pop {r0}
bx r0
.pool
- thumb_func_end sub_805DF84
+ thumb_func_end LoadBackTrainerBankSpriteGfx
thumb_func_start nullsub_25
nullsub_25: @ 805DFE0
@@ -1772,7 +1772,7 @@ sub_805DFFC: @ 805DFFC
adds r4, 0x8
adds r0, r4, 0
bl LoadSpritePalette
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
bne _0805E034
@@ -1821,8 +1821,8 @@ _0805E076:
.pool
thumb_func_end sub_805DFFC
- thumb_func_start sub_805E08C
-sub_805E08C: @ 805E08C
+ thumb_func_start BattleLoadAllHealthBoxesGfx
+BattleLoadAllHealthBoxesGfx: @ 805E08C
push {r4-r6,lr}
lsls r0, 24
lsrs r4, r0, 24
@@ -1843,7 +1843,7 @@ _0805E09C:
b _0805E1AE
.pool
_0805E0B8:
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
bne _0805E120
@@ -1953,7 +1953,7 @@ _0805E1AE:
pop {r4-r6}
pop {r1}
bx r1
- thumb_func_end sub_805E08C
+ thumb_func_end BattleLoadAllHealthBoxesGfx
thumb_func_start load_gfxc_health_bar
load_gfxc_health_bar: @ 805E1B8
@@ -2002,7 +2002,7 @@ _0805E214:
b _0805E324
_0805E21A:
ldrb r0, [r4]
- bl sub_805E08C
+ bl BattleLoadAllHealthBoxesGfx
lsls r0, 24
cmp r0, 0
beq _0805E228
@@ -2022,12 +2022,12 @@ _0805E230:
ldrb r0, [r4]
cmp r0, 0
bne _0805E24C
- bl battle_make_oam_safari_battle
+ bl CreateSafariPlayerHealthboxSprites
b _0805E252
.pool
_0805E24C:
ldrb r0, [r4]
- bl battle_make_oam_normal_battle
+ bl CreateBankHealthboxSprites
_0805E252:
ldr r2, =gHealthBoxesIds
ldrb r1, [r4]
@@ -2037,7 +2037,7 @@ _0805E252:
.pool
_0805E260:
ldrb r0, [r4]
- bl sub_8072B18
+ bl SetBankHealthboxSpritePos
ldr r0, =gBanksBySide
ldrb r1, [r4]
adds r0, r1, r0
@@ -2084,7 +2084,7 @@ _0805E29C:
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
b _0805E302
.pool
_0805E2E4:
@@ -2101,13 +2101,13 @@ _0805E2E4:
ldr r2, =gEnemyParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
_0805E302:
ldr r1, =gHealthBoxesIds
ldrb r0, [r4]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
_0805E30E:
ldrb r0, [r4]
adds r0, 0x1
@@ -2128,7 +2128,7 @@ _0805E324:
b _0805E346
.pool
_0805E33C:
- bl sub_805EC84
+ bl LoadAndCreateEnemyShadowSprites
bl sub_81B8C68
movs r6, 0x1
_0805E346:
@@ -2541,7 +2541,7 @@ _0805E662:
ldr r1, =gSprites
adds r1, 0x8
adds r0, r1
- ldr r1, =gUnknown_08309AAC
+ ldr r1, =gMonAnimationsSpriteAnimsPtrTable
mov r3, r8
lsls r2, r3, 2
adds r1, r2
@@ -2630,8 +2630,8 @@ _0805E77A:
.pool
thumb_func_end sub_805E448
- thumb_func_start sub_805E7DC
-sub_805E7DC: @ 805E7DC
+ thumb_func_start BattleLoadSubstituteSpriteGfx
+BattleLoadSubstituteSpriteGfx: @ 805E7DC
push {r4-r7,lr}
lsls r0, 24
lsrs r4, r0, 24
@@ -2732,7 +2732,7 @@ _0805E898:
ldr r1, =gEnemyParty
adds r0, r1
adds r1, r4, 0
- bl sub_805DC0C
+ bl BattleLoadOpponentMonSpriteGfx
b _0805E8E6
.pool
_0805E8D0:
@@ -2745,13 +2745,13 @@ _0805E8D0:
ldr r1, =gPlayerParty
adds r0, r1
adds r1, r5, 0
- bl sub_805DD7C
+ bl BattleLoadPlayerMonSpriteGfx
_0805E8E6:
pop {r4-r7}
pop {r0}
bx r0
.pool
- thumb_func_end sub_805E7DC
+ thumb_func_end BattleLoadSubstituteSpriteGfx
thumb_func_start refresh_graphics_maybe
refresh_graphics_maybe: @ 805E8F4
@@ -2766,7 +2766,7 @@ refresh_graphics_maybe: @ 805E8F4
lsrs r4, 24
adds r0, r6, 0
adds r1, r5, 0
- bl sub_805E7DC
+ bl BattleLoadSubstituteSpriteGfx
lsls r0, r4, 4
adds r0, r4
lsls r0, 2
@@ -2905,7 +2905,7 @@ _0805EA08:
negs r0, r0
ands r0, r2
strb r0, [r1]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
bne _0805EA34
@@ -2914,7 +2914,7 @@ _0805EA08:
b _0805EA5A
.pool
_0805EA34:
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0805EA5A
@@ -2955,7 +2955,7 @@ BattleMusicStop: @ 805EA60
adds r0, r6, 0
ands r0, r2
strb r0, [r1]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0805EAA2
@@ -3059,7 +3059,7 @@ sub_805EAE8: @ 805EAE8
mov r1, r8
bl sub_805E990
_0805EB5A:
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0805EB7E
@@ -3195,8 +3195,8 @@ _0805EC6C:
.pool
thumb_func_end sub_805EB9C
- thumb_func_start sub_805EC84
-sub_805EC84: @ 805EC84
+ thumb_func_start LoadAndCreateEnemyShadowSprites
+LoadAndCreateEnemyShadowSprites: @ 805EC84
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -3247,7 +3247,7 @@ sub_805EC84: @ 805EC84
lsls r0, 2
adds r0, r7
strh r5, [r0, 0x2E]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0805ED56
@@ -3299,7 +3299,7 @@ _0805ED56:
pop {r0}
bx r0
.pool
- thumb_func_end sub_805EC84
+ thumb_func_end LoadAndCreateEnemyShadowSprites
thumb_func_start sub_805ED70
@ int sub_805ED70(obj *a1)
@@ -3365,7 +3365,7 @@ _0805EDE4:
adds r4, r1, 0
cmp r0, 0
beq _0805EE06
- ldr r0, =gUnknown_08305DCC
+ ldr r0, =gEnemyMonElevation
ldrh r1, [r3, 0x2]
adds r1, r0
ldrb r0, [r1]
@@ -3418,8 +3418,8 @@ sub_805EE48: @ 805EE48
bx lr
thumb_func_end sub_805EE48
- thumb_func_start sub_805EE54
-sub_805EE54: @ 805EE54
+ thumb_func_start SetBankEnemyShadowSpriteCallback
+SetBankEnemyShadowSpriteCallback: @ 805EE54
push {r4-r6,lr}
lsls r0, 24
lsrs r4, r0, 24
@@ -3441,7 +3441,7 @@ sub_805EE54: @ 805EE54
beq _0805EE7E
adds r5, r0, 0
_0805EE7E:
- ldr r0, =gUnknown_08305DCC
+ ldr r0, =gEnemyMonElevation
adds r0, r5, r0
ldrb r0, [r0]
cmp r0, 0
@@ -3482,7 +3482,7 @@ _0805EED0:
pop {r0}
bx r0
.pool
- thumb_func_end sub_805EE54
+ thumb_func_end SetBankEnemyShadowSpriteCallback
thumb_func_start sub_805EEE0
sub_805EEE0: @ 805EEE0
diff --git a/asm/battle_9.s b/asm/battle_9.s
deleted file mode 100644
index 0dfc105ec..000000000
--- a/asm/battle_9.s
+++ /dev/null
@@ -1,2847 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start ai_switch_perish_song
-ai_switch_perish_song: @ 8062BF8
- push {lr}
- ldr r1, =gStatuses3
- ldr r0, =gActiveBank
- ldrb r2, [r0]
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x20
- ands r0, r1
- cmp r0, 0
- beq _08062C50
- ldr r0, =gDisableStructs
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0xF]
- lsls r0, 28
- cmp r0, 0
- bne _08062C50
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, r2, r0
- movs r1, 0xA5
- lsls r1, 2
- adds r0, r1
- movs r1, 0x6
- strb r1, [r0]
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
- movs r0, 0x1
- b _08062C52
- .pool
-_08062C50:
- movs r0, 0
-_08062C52:
- pop {r1}
- bx r1
- thumb_func_end ai_switch_perish_song
-
- thumb_func_start sub_8062C58
-sub_8062C58: @ 8062C58
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08062C72
- b _08062E2C
-_08062C72:
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- bl GetBankIdentity
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldr r4, =gBattleMons
- bl GetBankByIdentity
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x58
- muls r0, r1
- adds r0, r4
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x19
- beq _08062C9E
- b _08062E2C
-_08062C9E:
- mov r0, r10
- bl GetBankByIdentity
- lsls r0, 24
- lsrs r2, r0, 24
- movs r6, 0
- mov r8, r4
- movs r7, 0x58
- adds r0, r2, 0
- muls r0, r7
- adds r4, r0, r4
- movs r0, 0x20
- adds r0, r4
- mov r9, r0
-_08062CBA:
- lsls r1, r6, 1
- ldr r5, =gActiveBank
- ldrb r0, [r5]
- muls r0, r7
- adds r1, r0
- mov r0, r8
- adds r0, 0xC
- adds r1, r0
- ldrh r0, [r1]
- cmp r0, 0
- beq _08062CE8
- ldrh r1, [r4]
- mov r3, r9
- ldrb r2, [r3]
- bl AI_TypeCalc
- lsls r0, 24
- lsrs r1, r0, 24
- movs r0, 0x2
- ands r1, r0
- cmp r1, 0
- beq _08062CE8
- b _08062E2C
-_08062CE8:
- adds r6, 0x1
- cmp r6, 0x3
- ble _08062CBA
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ldr r1, =0x00808000
- ands r0, r1
- cmp r0, 0
- beq _08062D50
- ldrb r1, [r5]
- movs r0, 0x2
- ands r0, r1
- adds r1, r5, 0
- cmp r0, 0
- bne _08062D20
- movs r4, 0
- movs r0, 0x3
- str r0, [sp]
- b _08062D58
- .pool
-_08062D20:
- movs r4, 0x3
- movs r3, 0x6
- str r3, [sp]
- b _08062D58
-_08062D28:
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- ldr r1, =gBattleStruct
- ldr r1, [r1]
- adds r0, r1
- movs r1, 0xA5
- lsls r1, 2
- adds r0, r1
- strb r6, [r0]
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
- movs r0, 0x1
- b _08062E2E
- .pool
-_08062D50:
- movs r4, 0
- movs r3, 0x6
- str r3, [sp]
- adds r1, r5, 0
-_08062D58:
- ldrb r0, [r1]
- bl GetBankSide
- lsls r0, 24
- ldr r1, =gEnemyParty
- mov r9, r1
- cmp r0, 0
- bne _08062D6C
- ldr r3, =gPlayerParty
- mov r9, r3
-_08062D6C:
- adds r6, r4, 0
- ldr r0, [sp]
- cmp r6, r0
- bge _08062E2C
-_08062D74:
- movs r0, 0x64
- adds r5, r6, 0
- muls r5, r0
- mov r1, r9
- adds r4, r1, r5
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _08062E24
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- beq _08062E24
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _08062E24
- ldr r1, =gBattlePartyID
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r6, r0
- beq _08062E24
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- adds r0, r4, 0
- movs r1, 0x2E
- bl GetMonData
- mov r0, r10
- bl GetBankByIdentity
- lsls r0, 24
- lsrs r2, r0, 24
- movs r4, 0
- mov r8, r5
- ldr r1, =gBattleMons
- movs r0, 0x58
- muls r0, r2
- adds r5, r0, r1
- adds r7, r5, 0
- adds r7, 0x20
-_08062DE0:
- adds r1, r4, 0
- adds r1, 0xD
- mov r0, r9
- add r0, r8
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- beq _08062E1E
- ldrh r1, [r5]
- ldrb r2, [r7]
- bl AI_TypeCalc
- lsls r0, 24
- lsrs r1, r0, 24
- movs r0, 0x2
- ands r1, r0
- cmp r1, 0
- beq _08062E1E
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bls _08062D28
-_08062E1E:
- adds r4, 0x1
- cmp r4, 0x3
- ble _08062DE0
-_08062E24:
- adds r6, 0x1
- ldr r3, [sp]
- cmp r6, r3
- blt _08062D74
-_08062E2C:
- movs r0, 0
-_08062E2E:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8062C58
-
- thumb_func_start sub_8062E54
-sub_8062E54: @ 8062E54
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- movs r0, 0x1
- bl ai_has_super_effective_move_on_field
- lsls r0, 24
- cmp r0, 0
- beq _08062E82
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __umodsi3
- lsls r0, 16
- cmp r0, 0
- beq _08062E82
- b _080630AC
-_08062E82:
- ldr r1, =gUnknown_02024250
- ldr r5, =gActiveBank
- ldrb r3, [r5]
- lsls r0, r3, 1
- adds r4, r0, r1
- ldrh r1, [r4]
- cmp r1, 0
- bne _08062E94
- b _080630AC
-_08062E94:
- ldr r0, =0x0000ffff
- cmp r1, r0
- bne _08062E9C
- b _080630AC
-_08062E9C:
- ldr r2, =gBattleMoves
- ldrh r1, [r4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- bne _08062EB0
- b _080630AC
-_08062EB0:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08062F1A
- mov r8, r3
- mov r0, r8
- bl GetBankIdentity
- movs r4, 0x2
- eors r0, r4
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByIdentity
- ldr r1, =gAbsentBankFlags
- ldrb r1, [r1]
- ldr r2, =gBitTable
- lsls r0, 24
- lsrs r0, 22
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _08062F04
- ldrb r7, [r5]
- b _08062F1E
- .pool
-_08062F04:
- ldrb r0, [r5]
- bl GetBankIdentity
- eors r0, r4
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByIdentity
- lsls r0, 24
- lsrs r7, r0, 24
- b _08062F1E
-_08062F1A:
- adds r7, r3, 0
- mov r8, r7
-_08062F1E:
- ldr r3, =gBattleMoves
- ldr r1, =gUnknown_02024250
- ldr r2, =gActiveBank
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r0, [r0, 0x2]
- cmp r0, 0xA
- bne _08062F4C
- movs r0, 0x12
- b _08062F5E
- .pool
-_08062F4C:
- cmp r0, 0xB
- bne _08062F56
- movs r1, 0xB
- str r1, [sp]
- b _08062F60
-_08062F56:
- cmp r0, 0xD
- beq _08062F5C
- b _080630AC
-_08062F5C:
- movs r0, 0xA
-_08062F5E:
- str r0, [sp]
-_08062F60:
- ldr r1, =gBattleMons
- ldrb r3, [r2]
- movs r0, 0x58
- muls r0, r3
- adds r0, r1
- adds r0, 0x20
- ldrb r0, [r0]
- ldr r1, [sp]
- cmp r0, r1
- bne _08062F76
- b _080630AC
-_08062F76:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ldr r1, =0x00808000
- ands r0, r1
- cmp r0, 0
- beq _08062FCC
- movs r0, 0x2
- ands r3, r0
- cmp r3, 0
- bne _08062F9C
- movs r4, 0
- movs r0, 0x3
- b _08062FD0
- .pool
-_08062F9C:
- movs r4, 0x3
- movs r1, 0x6
- mov r10, r1
- b _08062FD2
-_08062FA4:
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- ldr r1, =gBattleStruct
- ldr r1, [r1]
- adds r0, r1
- movs r2, 0xA5
- lsls r2, 2
- adds r0, r2
- strb r5, [r0]
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
- movs r0, 0x1
- b _080630AE
- .pool
-_08062FCC:
- movs r4, 0
- movs r0, 0x6
-_08062FD0:
- mov r10, r0
-_08062FD2:
- ldrb r0, [r2]
- bl GetBankSide
- lsls r0, 24
- ldr r1, =gEnemyParty
- str r1, [sp, 0x4]
- cmp r0, 0
- bne _08062FE6
- ldr r2, =gPlayerParty
- str r2, [sp, 0x4]
-_08062FE6:
- adds r5, r4, 0
- cmp r5, r10
- bge _080630AC
- ldr r0, =gBaseStats
- mov r9, r0
-_08062FF0:
- movs r0, 0x64
- muls r0, r5
- ldr r1, [sp, 0x4]
- adds r6, r1, r0
- adds r0, r6, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _080630A6
- adds r0, r6, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- beq _080630A6
- adds r0, r6, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _080630A6
- ldr r1, =gBattlePartyID
- mov r2, r8
- lsls r0, r2, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r5, r0
- beq _080630A6
- lsls r0, r7, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r5, r0
- beq _080630A6
- ldr r0, =gBattleStruct
- ldr r1, [r0]
- adds r0, r2, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r5, r0
- beq _080630A6
- adds r0, r7, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r5, r0
- beq _080630A6
- adds r0, r6, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r6, 0
- movs r1, 0x2E
- bl GetMonData
- cmp r0, 0
- beq _08063088
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- add r0, r9
- ldrb r0, [r0, 0x17]
- b _08063092
- .pool
-_08063088:
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- add r0, r9
- ldrb r0, [r0, 0x16]
-_08063092:
- ldr r1, [sp]
- cmp r1, r0
- bne _080630A6
- bl Random
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- beq _080630A6
- b _08062FA4
-_080630A6:
- adds r5, 0x1
- cmp r5, r10
- blt _08062FF0
-_080630AC:
- movs r0, 0
-_080630AE:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8062E54
-
- thumb_func_start ai_switchout_natural_cure
-ai_switchout_natural_cure: @ 80630C0
- push {r4,r5,lr}
- ldr r3, =gBattleMons
- ldr r5, =gActiveBank
- ldrb r4, [r5]
- movs r0, 0x58
- adds r2, r4, 0
- muls r2, r0
- adds r0, r3, 0
- adds r0, 0x4C
- adds r0, r2, r0
- ldr r0, [r0]
- movs r1, 0x7
- ands r0, r1
- cmp r0, 0
- beq _08063188
- adds r1, r2, r3
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x1E
- bne _08063188
- ldrh r0, [r1, 0x2C]
- ldrh r1, [r1, 0x28]
- lsrs r0, 1
- cmp r1, r0
- bcc _08063188
- ldr r1, =gUnknown_02024250
- lsls r0, r4, 1
- adds r0, r1
- ldrh r1, [r0]
- cmp r1, 0
- beq _08063106
- ldr r0, =0x0000ffff
- cmp r1, r0
- bne _08063128
-_08063106:
- bl Random
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- beq _08063128
- ldrb r0, [r5]
- b _08063190
- .pool
-_08063128:
- ldr r2, =gBattleMoves
- ldr r1, =gUnknown_02024250
- ldr r4, =gActiveBank
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- bne _08063160
- bl Random
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- beq _08063160
- ldrb r0, [r4]
- b _08063190
- .pool
-_08063160:
- movs r0, 0x8
- movs r1, 0x1
- bl ai_switchout_something
- lsls r0, 24
- cmp r0, 0
- bne _080631AA
- movs r0, 0x4
- movs r1, 0x1
- bl ai_switchout_something
- lsls r0, 24
- cmp r0, 0
- bne _080631AA
- bl Random
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- bne _0806318C
-_08063188:
- movs r0, 0
- b _080631AC
-_0806318C:
- ldr r0, =gActiveBank
- ldrb r0, [r0]
-_08063190:
- ldr r1, =gBattleStruct
- ldr r1, [r1]
- adds r0, r1
- movs r1, 0xA5
- lsls r1, 2
- adds r0, r1
- movs r1, 0x6
- strb r1, [r0]
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
-_080631AA:
- movs r0, 0x1
-_080631AC:
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end ai_switchout_natural_cure
-
- thumb_func_start ai_has_super_effective_move_on_field
-ai_has_super_effective_move_on_field: @ 80631BC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- bl GetBankIdentity
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- bl GetBankByIdentity
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r0, =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, =gBitTable
- lsls r0, r3, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _08063256
- movs r4, 0
- ldr r6, =gBattleMons
- movs r7, 0x58
- adds r0, r3, 0
- muls r0, r7
- adds r5, r0, r6
- movs r0, 0x20
- adds r0, r5
- mov r8, r0
-_0806320A:
- lsls r1, r4, 1
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- muls r0, r7
- adds r1, r0
- adds r0, r6, 0
- adds r0, 0xC
- adds r1, r0
- ldrh r0, [r1]
- cmp r0, 0
- beq _08063250
- ldrh r1, [r5]
- mov r3, r8
- ldrb r2, [r3]
- bl AI_TypeCalc
- lsls r0, 24
- lsrs r1, r0, 24
- movs r0, 0x2
- ands r1, r0
- cmp r1, 0
- beq _08063250
- mov r0, r9
- cmp r0, 0
- bne _08063278
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xA
- bl __umodsi3
- lsls r0, 16
- cmp r0, 0
- bne _08063278
-_08063250:
- adds r4, 0x1
- cmp r4, 0x3
- ble _0806320A
-_08063256:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0806327C
- b _080632FA
- .pool
-_08063278:
- movs r0, 0x1
- b _080632FC
-_0806327C:
- movs r1, 0x2
- mov r0, r10
- eors r0, r1
- bl GetBankByIdentity
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r0, =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, =gBitTable
- lsls r0, r3, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _080632FA
- movs r4, 0
- ldr r6, =gBattleMons
- movs r7, 0x58
- adds r0, r3, 0
- muls r0, r7
- adds r5, r0, r6
- movs r3, 0x20
- adds r3, r5
- mov r8, r3
-_080632AE:
- lsls r1, r4, 1
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- muls r0, r7
- adds r1, r0
- adds r0, r6, 0
- adds r0, 0xC
- adds r1, r0
- ldrh r0, [r1]
- cmp r0, 0
- beq _080632F4
- ldrh r1, [r5]
- mov r3, r8
- ldrb r2, [r3]
- bl AI_TypeCalc
- lsls r0, 24
- lsrs r1, r0, 24
- movs r0, 0x2
- ands r1, r0
- cmp r1, 0
- beq _080632F4
- mov r0, r9
- cmp r0, 0
- bne _08063278
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xA
- bl __umodsi3
- lsls r0, 16
- cmp r0, 0
- bne _08063278
-_080632F4:
- adds r4, 0x1
- cmp r4, 0x3
- ble _080632AE
-_080632FA:
- movs r0, 0
-_080632FC:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end ai_has_super_effective_move_on_field
-
- thumb_func_start ai_is_too_invested_in_stat_buffs
-ai_is_too_invested_in_stat_buffs: @ 806331C
- push {r4,lr}
- movs r4, 0
- ldr r1, =gBattleMons
- ldr r0, =gActiveBank
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x18
- adds r2, r0, r1
- movs r3, 0x7
-_08063330:
- ldrb r1, [r2]
- movs r0, 0
- ldrsb r0, [r2, r0]
- cmp r0, 0x6
- ble _08063346
- subs r1, 0x6
- lsls r0, r4, 24
- asrs r0, 24
- adds r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
-_08063346:
- adds r2, 0x1
- subs r3, 0x1
- cmp r3, 0
- bge _08063330
- movs r0, 0
- cmp r4, 0x3
- bls _08063356
- movs r0, 0x1
-_08063356:
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end ai_is_too_invested_in_stat_buffs
-
- thumb_func_start ai_switchout_something
-ai_switchout_something: @ 8063364
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp, 0x4]
- ldr r2, =gUnknown_02024250
- ldr r1, =gActiveBank
- ldrb r3, [r1]
- lsls r0, r3, 1
- adds r4, r0, r2
- ldrh r2, [r4]
- adds r5, r1, 0
- cmp r2, 0
- bne _08063390
- b _080635EE
-_08063390:
- ldr r0, =0x0000ffff
- cmp r2, r0
- bne _08063398
- b _080635EE
-_08063398:
- ldr r0, =gUnknown_02024270
- adds r0, r3, r0
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _080633A4
- b _080635EE
-_080633A4:
- ldr r2, =gBattleMoves
- ldrh r1, [r4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- bne _080633B8
- b _080635EE
-_080633B8:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0806342C
- mov r9, r3
- mov r0, r9
- bl GetBankIdentity
- movs r4, 0x2
- eors r0, r4
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByIdentity
- ldr r1, =gAbsentBankFlags
- ldrb r1, [r1]
- ldr r2, =gBitTable
- lsls r0, 24
- lsrs r0, 22
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _08063414
- ldrb r5, [r5]
- mov r10, r5
- b _08063430
- .pool
-_08063414:
- ldrb r0, [r5]
- bl GetBankIdentity
- eors r0, r4
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByIdentity
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- b _08063430
-_0806342C:
- mov r9, r3
- mov r10, r9
-_08063430:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ldr r1, =0x00808000
- ands r0, r1
- cmp r0, 0
- beq _08063490
- ldr r2, =gActiveBank
- ldrb r1, [r2]
- movs r0, 0x2
- ands r0, r1
- adds r5, r2, 0
- cmp r0, 0
- bne _08063460
- movs r4, 0
- movs r0, 0x3
- str r0, [sp, 0x8]
- b _08063498
- .pool
-_08063460:
- movs r4, 0x3
- movs r1, 0x6
- str r1, [sp, 0x8]
- b _08063498
-_08063468:
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- ldr r1, =gBattleStruct
- ldr r1, [r1]
- adds r0, r1
- movs r2, 0xA5
- lsls r2, 2
- adds r0, r2
- strb r6, [r0]
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
- movs r0, 0x1
- b _080635F0
- .pool
-_08063490:
- movs r4, 0
- movs r0, 0x6
- str r0, [sp, 0x8]
- ldr r5, =gActiveBank
-_08063498:
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- ldr r1, =gEnemyParty
- str r1, [sp, 0xC]
- cmp r0, 0
- bne _080634AC
- ldr r2, =gPlayerParty
- str r2, [sp, 0xC]
-_080634AC:
- adds r6, r4, 0
- b _080635E6
- .pool
-_080634BC:
- movs r0, 0x64
- muls r0, r6
- ldr r1, [sp, 0xC]
- adds r5, r1, r0
- adds r0, r5, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _080634D2
- b _080635E4
-_080634D2:
- adds r0, r5, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- bne _080634E0
- b _080635E4
-_080634E0:
- adds r0, r5, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _080635E4
- ldr r1, =gBattlePartyID
- mov r2, r9
- lsls r0, r2, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r6, r0
- beq _080635E4
- mov r2, r10
- lsls r0, r2, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r6, r0
- beq _080635E4
- ldr r0, =gBattleStruct
- ldr r1, [r0]
- mov r2, r9
- adds r0, r2, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r6, r0
- beq _080635E4
- mov r2, r10
- adds r0, r2, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r6, r0
- beq _080635E4
- adds r0, r5, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r5, 0
- movs r1, 0x2E
- bl GetMonData
- cmp r0, 0
- beq _08063558
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- ldr r1, =gBaseStats
- adds r0, r1
- ldrb r2, [r0, 0x17]
- b _08063564
- .pool
-_08063558:
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- ldr r2, =gBaseStats
- adds r0, r2
- ldrb r2, [r0, 0x16]
-_08063564:
- ldr r1, =gUnknown_02024250
- ldr r5, =gActiveBank
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- adds r1, r4, 0
- bl AI_TypeCalc
- ldr r1, [sp]
- ands r1, r0
- cmp r1, 0
- beq _080635E4
- ldr r1, =gUnknown_02024270
- ldrb r0, [r5]
- adds r0, r1
- ldrb r0, [r0]
- mov r9, r0
- movs r4, 0
- movs r0, 0x64
- adds r1, r6, 0
- muls r1, r0
- mov r8, r1
- ldr r1, =gBattleMons
- movs r0, 0x58
- mov r2, r9
- muls r2, r0
- adds r0, r2, 0
- adds r5, r0, r1
- adds r7, r5, 0
- adds r7, 0x20
-_080635A2:
- adds r1, r4, 0
- adds r1, 0xD
- ldr r0, [sp, 0xC]
- add r0, r8
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- beq _080635DE
- ldrh r1, [r5]
- ldrb r2, [r7]
- bl AI_TypeCalc
- lsls r0, 24
- lsrs r1, r0, 24
- movs r0, 0x2
- ands r1, r0
- cmp r1, 0
- beq _080635DE
- bl Random
- lsls r0, 16
- lsrs r0, 16
- ldr r1, [sp, 0x4]
- bl __modsi3
- cmp r0, 0
- bne _080635DE
- b _08063468
-_080635DE:
- adds r4, 0x1
- cmp r4, 0x3
- ble _080635A2
-_080635E4:
- adds r6, 0x1
-_080635E6:
- ldr r0, [sp, 0x8]
- cmp r6, r0
- bge _080635EE
- b _080634BC
-_080635EE:
- movs r0, 0
-_080635F0:
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end ai_switchout_something
-
- thumb_func_start sub_8063614
-sub_8063614: @ 8063614
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r6, =gBattleMons
- ldr r4, =gActiveBank
- ldrb r2, [r4]
- movs r5, 0x58
- adds r0, r2, 0
- muls r0, r5
- adds r1, r6, 0
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =0x0400e000
- ands r0, r1
- cmp r0, 0
- beq _0806363E
- b _0806386C
-_0806363E:
- ldr r0, =gStatuses3
- lsls r1, r2, 2
- adds r1, r0
- ldr r1, [r1]
- movs r0, 0x80
- lsls r0, 3
- ands r1, r0
- cmp r1, 0
- beq _08063652
- b _0806386C
-_08063652:
- str r1, [sp]
- movs r0, 0xC
- adds r1, r2, 0
- movs r2, 0x17
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _0806366A
- b _0806386C
-_0806366A:
- ldrb r1, [r4]
- str r0, [sp]
- movs r0, 0xC
- movs r2, 0x47
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _08063682
- b _0806386C
-_08063682:
- str r0, [sp]
- movs r0, 0xE
- movs r1, 0
- movs r2, 0x2A
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- beq _080636B4
- ldrb r0, [r4]
- muls r0, r5
- adds r1, r0, r6
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0x8
- bne _080636A8
- b _0806386C
-_080636A8:
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0x8
- bne _080636B4
- b _0806386C
-_080636B4:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 11
- ands r0, r1
- cmp r0, 0
- beq _080636C4
- b _0806386C
-_080636C4:
- movs r0, 0
- mov r10, r0
- movs r0, 0x1
- ands r1, r0
- cmp r1, 0
- beq _0806372E
- ldrb r7, [r4]
- adds r0, r7, 0
- bl GetBankIdentity
- movs r5, 0x2
- eors r0, r5
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByIdentity
- ldr r1, =gAbsentBankFlags
- ldrb r1, [r1]
- ldr r2, =gBitTable
- lsls r0, 24
- lsrs r0, 22
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _08063718
- ldrb r6, [r4]
- b _08063732
- .pool
-_08063718:
- ldrb r0, [r4]
- bl GetBankIdentity
- eors r0, r5
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByIdentity
- lsls r0, 24
- lsrs r6, r0, 24
- b _08063732
-_0806372E:
- ldrb r6, [r4]
- adds r7, r6, 0
-_08063732:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ldr r1, =0x00808000
- ands r0, r1
- cmp r0, 0
- beq _08063768
- ldr r2, =gActiveBank
- ldrb r1, [r2]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08063760
- movs r4, 0
- movs r1, 0x3
- mov r8, r1
- b _08063770
- .pool
-_08063760:
- movs r4, 0x3
- movs r0, 0x6
- mov r8, r0
- b _08063770
-_08063768:
- movs r4, 0
- movs r1, 0x6
- mov r8, r1
- ldr r2, =gActiveBank
-_08063770:
- ldrb r0, [r2]
- bl GetBankSide
- lsls r0, 24
- ldr r1, =gEnemyParty
- mov r9, r1
- cmp r0, 0
- bne _08063784
- ldr r0, =gPlayerParty
- mov r9, r0
-_08063784:
- adds r5, r4, 0
- cmp r5, r8
- bge _080637F2
-_0806378A:
- movs r0, 0x64
- muls r0, r5
- mov r1, r9
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _080637EC
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- beq _080637EC
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _080637EC
- ldr r1, =gBattlePartyID
- lsls r0, r7, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r5, r0
- beq _080637EC
- lsls r0, r6, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r5, r0
- beq _080637EC
- ldr r0, =gBattleStruct
- ldr r1, [r0]
- adds r0, r7, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r5, r0
- beq _080637EC
- adds r0, r6, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r5, r0
- beq _080637EC
- movs r0, 0x1
- add r10, r0
-_080637EC:
- adds r5, 0x1
- cmp r5, r8
- blt _0806378A
-_080637F2:
- mov r1, r10
- cmp r1, 0
- beq _0806386C
- bl ai_switch_perish_song
- lsls r0, 24
- cmp r0, 0
- bne _08063852
- bl sub_8062C58
- lsls r0, 24
- cmp r0, 0
- bne _08063852
- bl sub_8062E54
- lsls r0, 24
- cmp r0, 0
- bne _08063852
- bl ai_switchout_natural_cure
- lsls r0, 24
- cmp r0, 0
- bne _08063852
- movs r0, 0
- bl ai_has_super_effective_move_on_field
- lsls r0, 24
- cmp r0, 0
- bne _0806386C
- bl ai_is_too_invested_in_stat_buffs
- lsls r0, 24
- cmp r0, 0
- bne _0806386C
- movs r0, 0x8
- movs r1, 0x2
- bl ai_switchout_something
- lsls r0, 24
- cmp r0, 0
- bne _08063852
- movs r0, 0x4
- movs r1, 0x3
- bl ai_switchout_something
- lsls r0, 24
- cmp r0, 0
- beq _0806386C
-_08063852:
- movs r0, 0x1
- b _0806386E
- .pool
-_0806386C:
- movs r0, 0
-_0806386E:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8063614
-
- thumb_func_start sub_8063880
-sub_8063880: @ 8063880
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r4, =gActiveBank
- ldrb r0, [r4]
- bl GetBankIdentity
- lsls r0, 24
- lsrs r6, r0, 24
- adds r5, r6, 0
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- ldr r1, =gEnemyParty
- mov r8, r1
- cmp r0, 0
- bne _080638A8
- ldr r2, =gPlayerParty
- mov r8, r2
-_080638A8:
- ldr r7, =gBattleTypeFlags
- ldr r0, [r7]
- movs r1, 0x8
- ands r0, r1
- cmp r0, 0
- bne _080638B6
- b _080639E6
-_080638B6:
- bl sub_8063614
- lsls r0, 24
- cmp r0, 0
- bne _080638C2
- b _080639DC
-_080638C2:
- ldrb r0, [r4]
- ldr r2, =gBattleStruct
- ldr r1, [r2]
- adds r0, r1
- movs r1, 0xA5
- lsls r1, 2
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x6
- bne _080639B8
- bl sub_8063A90
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x6
- bne _080639A6
- ldr r0, [r7]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- bne _08063910
- adds r0, r6, 0
- bl GetBankByIdentity
- lsls r0, 24
- lsrs r5, r0, 24
- adds r6, r5, 0
- b _08063928
- .pool
-_08063910:
- adds r0, r5, 0
- bl GetBankByIdentity
- lsls r0, 24
- lsrs r6, r0, 24
- movs r0, 0x2
- eors r5, r0
- adds r0, r5, 0
- bl GetBankByIdentity
- lsls r0, 24
- lsrs r5, r0, 24
-_08063928:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ldr r1, =0x00808000
- ands r0, r1
- cmp r0, 0
- beq _08063958
- ldr r0, =gActiveBank
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08063954
- movs r0, 0
- movs r7, 0x3
- b _0806395C
- .pool
-_08063954:
- movs r0, 0x3
- b _0806395A
-_08063958:
- movs r0, 0
-_0806395A:
- movs r7, 0x6
-_0806395C:
- adds r4, r0, 0
- cmp r4, r7
- bge _080639A6
-_08063962:
- movs r0, 0x64
- muls r0, r4
- add r0, r8
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _080639A0
- ldr r1, =gBattlePartyID
- lsls r0, r6, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r4, r0
- beq _080639A0
- lsls r0, r5, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r4, r0
- beq _080639A0
- ldr r0, =gBattleStruct
- ldr r1, [r0]
- adds r0, r6, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r4, r0
- beq _080639A0
- adds r0, r5, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r4, r0
- bne _080639A6
-_080639A0:
- adds r4, 0x1
- cmp r4, r7
- blt _08063962
-_080639A6:
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- ldr r2, =gBattleStruct
- ldr r1, [r2]
- adds r0, r1
- movs r1, 0xA5
- lsls r1, 2
- adds r0, r1
- strb r4, [r0]
-_080639B8:
- ldr r0, =gActiveBank
- ldrb r1, [r0]
- ldr r0, [r2]
- adds r0, r1, r0
- adds r1, r0, 0
- adds r1, 0x5C
- movs r2, 0xA5
- lsls r2, 2
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- b _080639F8
- .pool
-_080639DC:
- bl sub_8063EE0
- lsls r0, 24
- cmp r0, 0
- bne _080639F8
-_080639E6:
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- movs r2, 0x1
- eors r2, r0
- lsls r2, 8
- movs r0, 0x1
- movs r1, 0
- bl dp01_build_cmdbuf_x21_a_bb
-_080639F8:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8063880
-
- thumb_func_start sub_8063A08
-sub_8063A08: @ 8063A08
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- adds r6, r3, 0
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- movs r7, 0
- ldr r0, =gTypeEffectiveness
- mov r10, r0
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _08063A7A
- mov r5, r10
-_08063A36:
- ldrb r0, [r5]
- cmp r0, 0xFE
- beq _08063A6C
- ldr r1, [sp]
- cmp r0, r1
- bne _08063A6C
- ldrb r4, [r5, 0x1]
- cmp r4, r9
- bne _08063A56
- ldrb r1, [r6]
- ldrb r0, [r5, 0x2]
- muls r0, r1
- movs r1, 0xA
- bl __divsi3
- strb r0, [r6]
-_08063A56:
- cmp r4, r8
- bne _08063A6C
- cmp r9, r8
- beq _08063A6C
- ldrb r1, [r6]
- ldrb r0, [r5, 0x2]
- muls r0, r1
- movs r1, 0xA
- bl __divsi3
- strb r0, [r6]
-_08063A6C:
- adds r5, 0x3
- adds r7, 0x3
- mov r1, r10
- adds r0, r7, r1
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _08063A36
-_08063A7A:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_8063A08
-
- thumb_func_start sub_8063A90
-sub_8063A90: @ 8063A90
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x24
- ldr r4, =gActiveBank
- ldrb r2, [r4]
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, r2, r0
- adds r1, r0, 0
- adds r1, 0x5C
- ldrb r0, [r1]
- cmp r0, 0x6
- beq _08063AB2
- b _08063E50
-_08063AB2:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 11
- ands r0, r1
- cmp r0, 0
- beq _08063AE0
- ldr r1, =gBattlePartyID
- lsls r0, r2, 1
- adds r0, r1
- ldrb r0, [r0]
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- b _08063E50
- .pool
-_08063AE0:
- movs r0, 0x1
- ands r1, r0
- cmp r1, 0
- beq _08063B6C
- str r2, [sp, 0x10]
- adds r0, r2, 0
- bl GetBankIdentity
- movs r5, 0x2
- eors r0, r5
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByIdentity
- ldr r1, =gAbsentBankFlags
- ldrb r1, [r1]
- ldr r2, =gBitTable
- lsls r0, 24
- lsrs r0, 22
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _08063B20
- ldrb r4, [r4]
- str r4, [sp, 0x14]
- b _08063B36
- .pool
-_08063B20:
- ldrb r0, [r4]
- bl GetBankIdentity
- eors r0, r5
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByIdentity
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x14]
-_08063B36:
- bl Random
- movs r3, 0x2
- ands r0, r3
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- ldr r0, =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, =gBitTable
- ldr r4, [sp, 0x4]
- lsls r0, r4, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _08063B8A
- eors r4, r3
- lsls r0, r4, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- b _08063B8A
- .pool
-_08063B6C:
- adds r0, r2, 0
- bl GetBankIdentity
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByIdentity
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- ldrb r4, [r4]
- str r4, [sp, 0x14]
- str r4, [sp, 0x10]
-_08063B8A:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ldr r1, =0x00808000
- ands r0, r1
- cmp r0, 0
- beq _08063BC2
- ldr r2, =gActiveBank
- ldrb r1, [r2]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08063BB8
- movs r0, 0
- str r0, [sp, 0x18]
- movs r1, 0x3
- str r1, [sp, 0x1C]
- b _08063BCC
- .pool
-_08063BB8:
- movs r4, 0x3
- str r4, [sp, 0x18]
- movs r0, 0x6
- str r0, [sp, 0x1C]
- b _08063BCC
-_08063BC2:
- movs r1, 0
- str r1, [sp, 0x18]
- movs r2, 0x6
- str r2, [sp, 0x1C]
- ldr r2, =gActiveBank
-_08063BCC:
- ldrb r0, [r2]
- bl GetBankSide
- lsls r0, 24
- ldr r4, =gEnemyParty
- str r4, [sp, 0x20]
- cmp r0, 0
- bne _08063BE0
- ldr r0, =gPlayerParty
- str r0, [sp, 0x20]
-_08063BE0:
- movs r1, 0
- mov r9, r1
-_08063BE4:
- movs r2, 0
- str r2, [sp, 0x8]
- movs r4, 0x6
- str r4, [sp, 0xC]
- ldr r7, [sp, 0x18]
- ldr r0, [sp, 0x1C]
- cmp r7, r0
- blt _08063BF6
- b _08063CF2
-_08063BF6:
- lsls r0, r7, 2
- ldr r1, =gBitTable
- adds r0, r1
- mov r8, r0
- mov r10, sp
-_08063C00:
- movs r0, 0x64
- muls r0, r7
- ldr r2, [sp, 0x20]
- adds r4, r2, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0
- beq _08063CD8
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _08063CD8
- mov r4, r8
- ldr r0, [r4]
- mov r1, r9
- ands r0, r1
- cmp r0, 0
- bne _08063CD8
- ldr r1, =gBattlePartyID
- ldr r2, [sp, 0x10]
- lsls r0, r2, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, r7
- beq _08063CD8
- ldr r4, [sp, 0x14]
- lsls r0, r4, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, r7
- beq _08063CD8
- ldr r0, =gBattleStruct
- ldr r1, [r0]
- adds r0, r2, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r7, r0
- beq _08063CD8
- adds r0, r4, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r7, r0
- beq _08063CD8
- ldr r1, =gBaseStats
- lsls r0, r5, 3
- subs r0, r5
- lsls r0, 2
- adds r0, r1
- ldrb r5, [r0, 0x6]
- ldrb r6, [r0, 0x7]
- movs r0, 0xA
- mov r1, r10
- strb r0, [r1]
- movs r0, 0x58
- ldr r2, [sp, 0x4]
- adds r4, r2, 0
- muls r4, r0
- ldr r0, =gBattleMons
- adds r4, r0
- adds r0, r4, 0
- adds r0, 0x21
- ldrb r0, [r0]
- adds r1, r5, 0
- adds r2, r6, 0
- mov r3, sp
- bl sub_8063A08
- adds r4, 0x22
- ldrb r0, [r4]
- adds r1, r5, 0
- adds r2, r6, 0
- mov r3, sp
- bl sub_8063A08
- ldr r2, [sp, 0x8]
- mov r1, r10
- ldrb r1, [r1]
- cmp r2, r1
- bcs _08063CE6
- mov r2, r10
- ldrb r2, [r2]
- str r2, [sp, 0x8]
- lsls r0, r7, 24
- lsrs r0, 24
- str r0, [sp, 0xC]
- b _08063CE6
- .pool
-_08063CD8:
- mov r4, r8
- ldr r0, [r4]
- mov r1, r9
- orrs r1, r0
- lsls r0, r1, 24
- lsrs r0, 24
- mov r9, r0
-_08063CE6:
- movs r2, 0x4
- add r8, r2
- adds r7, 0x1
- ldr r4, [sp, 0x1C]
- cmp r7, r4
- blt _08063C00
-_08063CF2:
- ldr r0, [sp, 0xC]
- cmp r0, 0x6
- beq _08063D54
- movs r7, 0
- movs r0, 0x64
- ldr r1, [sp, 0xC]
- adds r5, r1, 0
- muls r5, r0
-_08063D02:
- adds r1, r7, 0
- adds r1, 0xD
- ldr r2, [sp, 0x20]
- adds r0, r2, r5
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0
- beq _08063D2A
- ldr r0, =gActiveBank
- ldrb r1, [r0]
- adds r0, r4, 0
- ldr r2, [sp, 0x4]
- bl TypeCalc
- movs r1, 0x2
- ands r1, r0
- cmp r1, 0
- bne _08063D30
-_08063D2A:
- adds r7, 0x1
- cmp r7, 0x3
- ble _08063D02
-_08063D30:
- cmp r7, 0x4
- beq _08063D36
- b _08063E4E
-_08063D36:
- ldr r4, [sp, 0xC]
- lsls r0, r4, 2
- ldr r1, =gBitTable
- adds r0, r1
- ldr r0, [r0]
- mov r2, r9
- orrs r2, r0
- lsls r0, r2, 24
- lsrs r0, 24
- mov r9, r0
- b _08063D58
- .pool
-_08063D54:
- movs r4, 0x3F
- mov r9, r4
-_08063D58:
- mov r0, r9
- cmp r0, 0x3F
- beq _08063D60
- b _08063BE4
-_08063D60:
- ldr r0, =gDynamicBasePower
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- strb r1, [r0, 0x13]
- ldr r0, =gBattleScripting
- movs r2, 0x1
- strb r2, [r0, 0xE]
- ldr r0, =gBattleMoveFlags
- strb r1, [r0]
- ldr r0, =gCritMultiplier
- strb r2, [r0]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r2, 0x6
- str r2, [sp, 0xC]
- ldr r7, [sp, 0x18]
- ldr r4, [sp, 0x1C]
- cmp r7, r4
- bge _08063E4E
-_08063D8A:
- movs r0, 0x64
- adds r6, r7, 0
- muls r6, r0
- ldr r0, [sp, 0x20]
- adds r4, r0, r6
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- adds r1, r7, 0x1
- mov r10, r1
- cmp r0, 0
- beq _08063E46
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _08063E46
- ldr r1, =gBattlePartyID
- ldr r2, [sp, 0x10]
- lsls r0, r2, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, r7
- beq _08063E46
- ldr r4, [sp, 0x14]
- lsls r0, r4, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, r7
- beq _08063E46
- ldr r0, =gBattleStruct
- ldr r1, [r0]
- adds r0, r2, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r7, r0
- beq _08063E46
- adds r0, r4, r1
- adds r0, 0x5C
- ldrb r0, [r0]
- cmp r7, r0
- beq _08063E46
- movs r5, 0
- mov r9, r6
- ldr r0, =gBattleMoveDamage
- mov r8, r0
- ldr r6, =gActiveBank
-_08063DEE:
- adds r1, r5, 0
- adds r1, 0xD
- ldr r0, [sp, 0x20]
- add r0, r9
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- movs r0, 0
- mov r1, r8
- str r0, [r1]
- cmp r4, 0
- beq _08063E2A
- ldr r0, =gBattleMoves
- lsls r1, r4, 1
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- cmp r0, 0x1
- beq _08063E2A
- ldrb r0, [r6]
- ldr r1, [sp, 0x4]
- bl AI_CalcDmg
- ldrb r1, [r6]
- adds r0, r4, 0
- ldr r2, [sp, 0x4]
- bl TypeCalc
-_08063E2A:
- mov r2, r8
- ldr r0, [r2]
- ldr r4, [sp, 0x8]
- cmp r4, r0
- bge _08063E40
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x8]
- lsls r0, r7, 24
- lsrs r0, 24
- str r0, [sp, 0xC]
-_08063E40:
- adds r5, 0x1
- cmp r5, 0x3
- ble _08063DEE
-_08063E46:
- mov r7, r10
- ldr r0, [sp, 0x1C]
- cmp r7, r0
- blt _08063D8A
-_08063E4E:
- ldr r0, [sp, 0xC]
-_08063E50:
- add sp, 0x24
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8063A90
-
- thumb_func_start ai_identify_item_effect
-ai_identify_item_effect: @ 8063E84
- push {r4,lr}
- adds r2, r1, 0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x13
- bne _08063E94
- movs r0, 0x1
- b _08063EDA
-_08063E94:
- ldrb r1, [r2, 0x4]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _08063EA2
- movs r0, 0x2
- b _08063EDA
-_08063EA2:
- ldrb r4, [r2, 0x3]
- movs r3, 0x3F
- adds r0, r3, 0
- ands r0, r4
- cmp r0, 0
- beq _08063EB2
- movs r0, 0x3
- b _08063EDA
-_08063EB2:
- ldrb r1, [r2]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- bne _08063EC8
- ldrb r0, [r2, 0x1]
- cmp r0, 0
- bne _08063EC8
- ldrb r0, [r2, 0x2]
- cmp r0, 0
- beq _08063ECC
-_08063EC8:
- movs r0, 0x4
- b _08063EDA
-_08063ECC:
- movs r0, 0x80
- ands r0, r4
- cmp r0, 0
- bne _08063ED8
- movs r0, 0x6
- b _08063EDA
-_08063ED8:
- movs r0, 0x5
-_08063EDA:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end ai_identify_item_effect
-
- thumb_func_start sub_8063EE0
-sub_8063EE0: @ 8063EE0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- movs r0, 0
- mov r10, r0
- movs r7, 0
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 15
- ands r0, r1
- cmp r0, 0
- beq _08063F12
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _08063F12
- b _0806437C
-_08063F12:
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- ldr r5, =gEnemyParty
- cmp r0, 0
- bne _08063F24
- ldr r5, =gPlayerParty
-_08063F24:
- movs r1, 0
- mov r8, r1
-_08063F28:
- movs r0, 0x64
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- adds r4, r5, r0
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _08063F64
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- beq _08063F64
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _08063F64
- mov r0, r10
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
-_08063F64:
- movs r0, 0x1
- add r8, r0
- mov r1, r8
- cmp r1, 0x5
- ble _08063F28
- movs r2, 0
- mov r8, r2
-_08063F72:
- ldr r1, =gBattleResources
- mov r0, r8
- cmp r0, 0
- beq _08063F8E
- ldr r0, [r1]
- ldr r0, [r0, 0x18]
- adds r0, 0x50
- ldrb r0, [r0]
- mov r2, r8
- subs r0, r2
- adds r0, 0x1
- cmp r10, r0
- ble _08063F8E
- b _08064370
-_08063F8E:
- ldr r0, [r1]
- ldr r0, [r0, 0x18]
- mov r2, r8
- lsls r1, r2, 1
- adds r0, 0x48
- adds r0, r1
- ldrh r0, [r0]
- mov r9, r0
- str r1, [sp]
- cmp r0, 0
- bne _08063FA6
- b _08064370
-_08063FA6:
- ldr r1, =gItemEffectTable
- subs r0, 0xD
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- cmp r1, 0
- bne _08063FB6
- b _08064370
-_08063FB6:
- mov r0, r9
- cmp r0, 0xAF
- bne _08063FE8
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00003214
- adds r5, r0, r1
- b _08063FEA
- .pool
-_08063FE8:
- adds r5, r1, 0
-_08063FEA:
- mov r2, r9
- lsls r0, r2, 24
- lsrs r0, 24
- adds r1, r5, 0
- bl ai_identify_item_effect
- ldr r4, =gActiveBank
- ldrb r1, [r4]
- lsrs r1, 1
- ldr r3, =gBattleStruct
- ldr r2, [r3]
- adds r1, r2
- adds r1, 0xC4
- strb r0, [r1]
- ldrb r0, [r4]
- lsrs r0, 1
- ldr r1, [r3]
- adds r0, r1
- adds r0, 0xC4
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r0, 0x5
- bls _0806401A
- b _08064324
-_0806401A:
- lsls r0, 2
- ldr r1, =_08064030
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_08064030:
- .4byte _08064048
- .4byte _08064074
- .4byte _080640BC
- .4byte _08064214
- .4byte _080642F4
- .4byte _0806437C
-_08064048:
- ldr r2, =gBattleMons
- ldr r0, =gActiveBank
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r1, [r0, 0x2C]
- ldrh r0, [r0, 0x28]
- lsrs r1, 2
- cmp r0, r1
- bcc _08064060
- b _08064324
-_08064060:
- cmp r0, 0
- bne _08064066
- b _08064324
-_08064066:
- movs r7, 0x1
- b _08064328
- .pool
-_08064074:
- mov r0, r9
- movs r1, 0x4
- movs r2, 0x4
- bl GetItemEffectParamOffset
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _08064088
- b _08064324
-_08064088:
- ldr r2, =gBattleMons
- ldr r0, =gActiveBank
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r1, r0, r2
- ldrh r2, [r1, 0x28]
- cmp r2, 0
- bne _0806409C
- b _08064324
-_0806409C:
- ldrh r3, [r1, 0x2C]
- lsrs r0, r3, 2
- cmp r2, r0
- bcc _08064066
- adds r0, r2, 0
- subs r0, r3, r0
- adds r1, r5, r4
- ldrb r1, [r1]
- cmp r0, r1
- bgt _080640B2
- b _08064324
-_080640B2:
- b _08064066
- .pool
-_080640BC:
- ldr r3, =gActiveBank
- ldrb r0, [r3]
- lsrs r0, 1
- ldr r2, =gBattleStruct
- ldr r1, [r2]
- adds r0, r1
- adds r0, 0xC6
- movs r1, 0
- strb r1, [r0]
- ldrb r1, [r5, 0x3]
- movs r6, 0x20
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _08064100
- ldr r1, =gBattleMons
- ldrb r4, [r3]
- movs r0, 0x58
- muls r0, r4
- adds r1, 0x4C
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x7
- ands r0, r1
- cmp r0, 0
- beq _08064100
- lsrs r1, r4, 1
- ldr r0, [r2]
- adds r1, r0
- adds r1, 0xC6
- ldrb r0, [r1]
- orrs r0, r6
- strb r0, [r1]
- movs r7, 0x1
-_08064100:
- ldrb r1, [r5, 0x3]
- movs r6, 0x10
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0806413A
- ldr r1, =gBattleMons
- ldrb r4, [r3]
- movs r0, 0x58
- muls r0, r4
- adds r1, 0x4C
- adds r0, r1
- ldr r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- bne _0806412A
- movs r0, 0x80
- ands r1, r0
- cmp r1, 0
- beq _0806413A
-_0806412A:
- lsrs r1, r4, 1
- ldr r0, [r2]
- adds r1, r0
- adds r1, 0xC6
- ldrb r0, [r1]
- orrs r0, r6
- strb r0, [r1]
- movs r7, 0x1
-_0806413A:
- ldrb r1, [r5, 0x3]
- movs r6, 0x8
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0806416C
- ldr r1, =gBattleMons
- ldrb r4, [r3]
- movs r0, 0x58
- muls r0, r4
- adds r1, 0x4C
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0806416C
- lsrs r1, r4, 1
- ldr r0, [r2]
- adds r1, r0
- adds r1, 0xC6
- ldrb r0, [r1]
- orrs r0, r6
- strb r0, [r1]
- movs r7, 0x1
-_0806416C:
- ldrb r1, [r5, 0x3]
- movs r6, 0x4
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0806419E
- ldr r1, =gBattleMons
- ldrb r4, [r3]
- movs r0, 0x58
- muls r0, r4
- adds r1, 0x4C
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0806419E
- lsrs r1, r4, 1
- ldr r0, [r2]
- adds r1, r0
- adds r1, 0xC6
- ldrb r0, [r1]
- orrs r0, r6
- strb r0, [r1]
- movs r7, 0x1
-_0806419E:
- ldrb r1, [r5, 0x3]
- movs r6, 0x2
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080641D0
- ldr r1, =gBattleMons
- ldrb r4, [r3]
- movs r0, 0x58
- muls r0, r4
- adds r1, 0x4C
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080641D0
- lsrs r1, r4, 1
- ldr r0, [r2]
- adds r1, r0
- adds r1, 0xC6
- ldrb r0, [r1]
- orrs r0, r6
- strb r0, [r1]
- movs r7, 0x1
-_080641D0:
- ldrb r1, [r5, 0x3]
- movs r4, 0x1
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080641DE
- b _08064324
-_080641DE:
- ldr r1, =gBattleMons
- ldrb r3, [r3]
- movs r0, 0x58
- muls r0, r3
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x7
- ands r0, r1
- cmp r0, 0
- bne _080641F6
- b _08064324
-_080641F6:
- lsrs r1, r3, 1
- ldr r0, [r2]
- adds r1, r0
- adds r1, 0xC6
- ldrb r0, [r1]
- orrs r0, r4
- strb r0, [r1]
- b _08064066
- .pool
-_08064214:
- ldr r4, =gActiveBank
- ldrb r0, [r4]
- lsrs r0, 1
- ldr r3, =gBattleStruct
- ldr r1, [r3]
- adds r0, r1
- adds r0, 0xC6
- movs r1, 0
- strb r1, [r0]
- ldr r1, =gDisableStructs
- ldrb r2, [r4]
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x16]
- cmp r0, 0
- beq _08064324
- ldrb r1, [r5]
- movs r6, 0xF
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0
- beq _08064254
- lsrs r2, 1
- ldr r0, [r3]
- adds r2, r0
- adds r2, 0xC6
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
-_08064254:
- ldrb r1, [r5, 0x1]
- movs r7, 0xF0
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0
- beq _08064272
- ldrb r0, [r4]
- lsrs r0, 1
- ldr r1, [r3]
- adds r0, r1
- adds r0, 0xC6
- ldrb r1, [r0]
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r0]
-_08064272:
- ldrb r1, [r5, 0x1]
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0
- beq _0806428E
- ldrb r0, [r4]
- lsrs r0, 1
- ldr r1, [r3]
- adds r0, r1
- adds r0, 0xC6
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
-_0806428E:
- ldrb r1, [r5, 0x2]
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0
- beq _080642AA
- ldrb r0, [r4]
- lsrs r0, 1
- ldr r1, [r3]
- adds r0, r1
- adds r0, 0xC6
- ldrb r1, [r0]
- movs r2, 0x8
- orrs r1, r2
- strb r1, [r0]
-_080642AA:
- ldrb r1, [r5, 0x2]
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0
- beq _080642C6
- ldrb r0, [r4]
- lsrs r0, 1
- ldr r1, [r3]
- adds r0, r1
- adds r0, 0xC6
- ldrb r1, [r0]
- movs r2, 0x20
- orrs r1, r2
- strb r1, [r0]
-_080642C6:
- ldrb r1, [r5]
- movs r0, 0x30
- ands r0, r1
- cmp r0, 0
- bne _080642D2
- b _08064066
-_080642D2:
- ldrb r0, [r4]
- lsrs r0, 1
- ldr r1, [r3]
- adds r0, r1
- adds r0, 0xC6
- ldrb r1, [r0]
- movs r2, 0x80
- orrs r1, r2
- strb r1, [r0]
- b _08064066
- .pool
-_080642F4:
- ldr r4, =gActiveBank
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r2, =gDisableStructs
- ldrb r1, [r4]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x16]
- cmp r0, 0
- beq _08064324
- ldr r0, =gSideTimers
- lsls r1, r3, 1
- adds r1, r3
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x4]
- cmp r0, 0
- bne _08064324
- b _08064066
-_08064324:
- cmp r7, 0
- beq _08064370
-_08064328:
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
- ldr r0, =gActiveBank
- ldrb r0, [r0]
- lsrs r0, 1
- ldr r1, =gBattleStruct
- ldr r1, [r1]
- lsls r0, 1
- adds r0, r1
- adds r0, 0xC0
- mov r1, r9
- strb r1, [r0]
- ldr r0, =gBattleResources
- ldr r0, [r0]
- ldr r0, [r0, 0x18]
- adds r0, 0x48
- ldr r2, [sp]
- adds r0, r2
- movs r1, 0
- strh r1, [r0]
- adds r0, r7, 0
- b _0806437E
- .pool
-_08064370:
- movs r0, 0x1
- add r8, r0
- mov r1, r8
- cmp r1, 0x3
- bgt _0806437C
- b _08063F72
-_0806437C:
- movs r0, 0
-_0806437E:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8063EE0
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_anim.s b/asm/battle_anim.s
index 645700d53..5ce9c4cf9 100644
--- a/asm/battle_anim.s
+++ b/asm/battle_anim.s
@@ -4047,7 +4047,7 @@ sub_80A5AFC: @ 80A5AFC
lsls r0, 24
cmp r0, 0
bne _080A5BA6
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _080A5BA6
@@ -4129,7 +4129,7 @@ sub_80A5BAC: @ 80A5BAC
lsls r0, 24
cmp r0, 0
bne _080A5C38
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _080A5C38
diff --git a/asm/battle_anim_80FE840.s b/asm/battle_anim_80FE840.s
index 58eb2ebf0..4ecdcbf68 100644
--- a/asm/battle_anim_80FE840.s
+++ b/asm/battle_anim_80FE840.s
@@ -721,7 +721,7 @@ sub_80FEE1C: @ 80FEE1C
lsls r0, 24
cmp r0, 0
bne _080FEE36
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
bne _080FEE3E
@@ -1260,7 +1260,7 @@ _080FF260:
sub_80FF268: @ 80FF268
push {r4,lr}
adds r4, r0, 0
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -5433,7 +5433,7 @@ _08101378:
ldr r0, =gAnimationBankTarget
_0810137A:
ldrb r6, [r0]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _081013C4
@@ -7557,7 +7557,7 @@ _08102448:
bne _08102464
adds r0, r4, r5
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
_08102464:
movs r1, 0x2
ldrsh r0, [r6, r1]
@@ -7571,7 +7571,7 @@ _08102464:
bne _08102482
adds r0, r4, r5
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
_08102482:
adds r0, r4, 0x1
lsls r0, 24
@@ -7600,7 +7600,7 @@ _081024B2:
ldr r0, =gHealthBoxesIds
adds r0, r4, r0
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
adds r0, r4, 0x1
lsls r0, 24
lsrs r4, r0, 24
@@ -13205,7 +13205,7 @@ _081051F2:
movs r0, 0x1
adds r4, r0, 0
eors r4, r1
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0810526A
@@ -26794,7 +26794,7 @@ _0810BF90:
ldrsh r0, [r0, r1]
cmp r0, 0
beq _0810BFA8
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
bne _0810BFB4
@@ -33105,7 +33105,7 @@ _0810F284:
mov r0, r8
cmp r0, 0
bne _0810F2B8
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0810F2B8
@@ -33501,7 +33501,7 @@ _0810F5A6:
lsls r0, 24
cmp r0, 0
bne _0810F5EE
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0810F5EE
@@ -43194,7 +43194,7 @@ sub_81144F8: @ 81144F8
movs r2, 0x1
bl lcd_bg_operations
_0811455C:
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _081145D6
@@ -47859,7 +47859,7 @@ sub_8116B14: @ 8116B14
movs r0, 0xA
bl SetGpuReg
_08116BA2:
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08116C26
@@ -48295,7 +48295,7 @@ _08116F5C:
movs r2, 0x1
bl lcd_bg_operations
_08116FBA:
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08117036
diff --git a/asm/battle_anim_815A0D4.s b/asm/battle_anim_815A0D4.s
index 81e4f9163..fc21f001f 100755
--- a/asm/battle_anim_815A0D4.s
+++ b/asm/battle_anim_815A0D4.s
@@ -3256,7 +3256,7 @@ _0815BAB6:
lsls r1, r0, 2
adds r1, r2
ldrh r1, [r1, 0x2]
- bl sub_805EE54
+ bl SetBankEnemyShadowSpriteCallback
_0815BAF6:
mov r0, r8
bl move_anim_task_del
@@ -4001,7 +4001,7 @@ _0815C15C:
bl GetBankIdentity
lsls r0, 24
lsrs r4, r0, 24
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -9334,7 +9334,7 @@ sub_815EC48: @ 815EC48
lsls r0, 24
cmp r0, 0
bne _0815ECD0
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
lsrs r7, r0, 24
cmp r7, 0x1
diff --git a/asm/battle_controller_linkopponent.s b/asm/battle_controller_linkopponent.s
index 58f3b95b7..bf350a8bc 100644
--- a/asm/battle_controller_linkopponent.s
+++ b/asm/battle_controller_linkopponent.s
@@ -199,11 +199,11 @@ sub_8064520: @ 8064520
movs r0, 0
mov r8, r0
movs r4, 0
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0806454C
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08064584
@@ -531,7 +531,7 @@ _080647B4:
ands r0, r1
cmp r0, 0
bne _0806487A
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0806484A
@@ -557,7 +557,7 @@ _080647B4:
ldr r2, =gEnemyParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
mov r1, r9
ldrb r0, [r1]
eors r0, r7
@@ -567,7 +567,7 @@ _080647B4:
eors r0, r7
adds r0, r4
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
_0806484A:
ldr r5, =gHealthBoxesIds
ldr r4, =gActiveBank
@@ -583,13 +583,13 @@ _0806484A:
ldr r2, =gEnemyParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r4]
bl sub_8076918
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
_0806487A:
ldr r4, =gBattleSpritesDataPtr
ldr r0, [r4]
@@ -760,7 +760,7 @@ _08064998:
movs r1, 0
strb r1, [r0, 0x9]
_080649E2:
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08064A3A
@@ -799,7 +799,7 @@ _080649E2:
lsls r1, 16
lsrs r1, 16
adds r0, r4, 0
- bl sub_805EE54
+ bl SetBankEnemyShadowSpriteCallback
_08064A3A:
ldr r1, =gUnknown_03005D7C
ldr r4, =gActiveBank
@@ -827,7 +827,7 @@ _08064A3A:
lsls r1, 16
lsrs r1, 16
adds r0, r5, 0
- bl sub_805EE54
+ bl SetBankEnemyShadowSpriteCallback
ldr r3, =gBattleSpritesDataPtr
ldr r0, [r3]
ldr r2, [r0, 0x8]
@@ -974,7 +974,7 @@ sub_8064BC0: @ 8064BC0
ldrb r0, [r6]
adds r0, r5
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
lsls r4, 16
asrs r1, r4, 16
movs r0, 0x1
@@ -1017,7 +1017,7 @@ sub_8064C14: @ 8064C14
ldr r0, =gHealthBoxesIds
adds r0, r3, r0
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl LinkOpponentBufferExecCompleted
_08064C42:
pop {r0}
@@ -1065,7 +1065,7 @@ sub_8064C58: @ 8064C58
ldrb r0, [r6]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl LinkOpponentBufferExecCompleted
_08064CB2:
pop {r4-r6}
@@ -1321,13 +1321,13 @@ sub_8064E50: @ 8064E50
ldr r2, =gEnemyParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r5]
bl sub_8076918
ldrb r0, [r5]
adds r0, r4
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
ldrb r0, [r5]
bl sub_805E408
ldr r1, =gBattleBankFunc
@@ -1413,7 +1413,7 @@ _08064F72:
lsls r1, 16
lsrs r1, 16
adds r0, r4, 0
- bl sub_805EE54
+ bl SetBankEnemyShadowSpriteCallback
ldr r1, =gBattleBankFunc
ldrb r0, [r5]
lsls r0, 2
@@ -3583,7 +3583,7 @@ sub_80662F8: @ 80662F8
muls r2, r0
adds r0, r2, 0
add r0, r9
- bl sub_805DC0C
+ bl BattleLoadOpponentMonSpriteGfx
ldrb r0, [r6]
bl GetBankIdentity
adds r1, r0, 0
@@ -3673,7 +3673,7 @@ sub_80662F8: @ 80662F8
lsls r1, 16
lsrs r1, 16
adds r0, r4, 0
- bl sub_805EE54
+ bl SetBankEnemyShadowSpriteCallback
ldr r1, =gBattleBankFunc
ldrb r0, [r6]
lsls r0, 2
@@ -3772,7 +3772,7 @@ sub_8066494: @ 8066494
adds r0, r1, 0
adds r0, r5
adds r1, r6, 0
- bl sub_805DC0C
+ bl BattleLoadOpponentMonSpriteGfx
adds r0, r6, 0
bl GetBankIdentity
adds r1, r0, 0
@@ -3947,7 +3947,7 @@ _0806666C:
ldrb r0, [r6]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl LinkOpponentBufferExecCompleted
_080666A8:
pop {r4-r6}
@@ -4283,7 +4283,7 @@ _0806694C:
bl sub_806A12C
ldr r6, =gUnknown_0202499C
mov r9, r7
- ldr r1, =gUnknown_083054E0
+ ldr r1, =gTrainerFrontPicCoords
mov r2, r8
lsls r0, r2, 2
adds r0, r1
@@ -4411,7 +4411,7 @@ _08066A76:
mov r0, r8
bl sub_806A12C
ldr r0, =gUnknown_0202499C
- ldr r2, =gUnknown_083054E0
+ ldr r2, =gTrainerFrontPicCoords
mov r3, r8
lsls r1, r3, 2
adds r1, r2
@@ -5242,7 +5242,7 @@ sub_806719C: @ 806719C
ldr r2, =gEnemyParty
adds r1, r2
movs r2, 0x9
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r2, [r4]
ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
@@ -5779,7 +5779,7 @@ c3_08038DC4: @ 8067618
adds r0, r1
ldrh r0, [r0, 0x8]
strb r0, [r7]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08067652
diff --git a/asm/battle_controller_linkpartner.s b/asm/battle_controller_linkpartner.s
index 562b236d0..b26943cf5 100644
--- a/asm/battle_controller_linkpartner.s
+++ b/asm/battle_controller_linkpartner.s
@@ -168,11 +168,11 @@ _0814AFF4:
sub_814B004: @ 814B004
push {r4-r6,lr}
movs r6, 0
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0814B028
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0814B05C
@@ -348,7 +348,7 @@ _0814B136:
lsls r0, 2
adds r0, r2
strb r6, [r0, 0x9]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0814B1F0
@@ -383,7 +383,7 @@ _0814B136:
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r7]
mov r1, r8
eors r0, r1
@@ -393,7 +393,7 @@ _0814B136:
eors r0, r1
adds r0, r4
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
_0814B1F0:
ldr r1, =gUnknown_03005D7C
ldr r4, =gActiveBank
@@ -419,13 +419,13 @@ _0814B1F0:
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r4]
bl sub_8076918
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r2, [r0, 0x8]
@@ -498,7 +498,7 @@ bx_t4_healthbar_update: @ 814B2D0
ldrb r0, [r5]
adds r0, r6
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
lsls r4, 16
asrs r1, r4, 16
movs r0, 0x1
@@ -587,7 +587,7 @@ sub_814B340: @ 814B340
ldrb r0, [r4]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl LinkPartnerBufferExecCompleted
_0814B3BC:
pop {r4-r6}
@@ -634,7 +634,7 @@ sub_814B3DC: @ 814B3DC
ldrb r0, [r6]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl LinkPartnerBufferExecCompleted
_0814B430:
pop {r4-r6}
@@ -878,13 +878,13 @@ sub_814B5A8: @ 814B5A8
muls r1, r6
adds r1, r5
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r7]
bl sub_8076918
ldrb r0, [r7]
adds r0, r4
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
ldr r1, =gBattleBankFunc
ldrb r0, [r7]
lsls r0, 2
@@ -3154,7 +3154,7 @@ sub_814CB0C: @ 814CB0C
muls r0, r5
ldr r4, =gPlayerParty
adds r0, r4
- bl sub_805DD7C
+ bl BattleLoadPlayerMonSpriteGfx
ldrb r0, [r6]
lsls r0, 1
add r0, r8
@@ -3283,7 +3283,7 @@ sub_814CC28: @ 814CC28
muls r0, r2
ldr r2, =gPlayerParty
adds r0, r2
- bl sub_805DD7C
+ bl BattleLoadPlayerMonSpriteGfx
ldrb r0, [r5]
lsls r1, r0, 9
adds r1, r6
@@ -3514,7 +3514,7 @@ _0814CE5C:
ldrb r0, [r6]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl LinkPartnerBufferExecCompleted
_0814CE92:
pop {r4-r6}
@@ -3696,7 +3696,7 @@ _0814D002:
ldr r5, =gActiveBank
ldrb r1, [r5]
adds r0, r4, 0
- bl sub_805DF84
+ bl LoadBackTrainerBankSpriteGfx
ldrb r0, [r5]
bl GetBankIdentity
adds r1, r0, 0
@@ -3706,7 +3706,7 @@ _0814D002:
bl sub_806A12C
ldr r6, =gUnknown_0202499C
mov r8, r7
- ldr r0, =gUnknown_08305D2C
+ ldr r0, =gTrainerBackPicCoords
lsls r4, 2
adds r4, r0
ldrb r0, [r4]
@@ -4551,7 +4551,7 @@ sub_814D738: @ 814D738
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0x9
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r2, [r4]
ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
@@ -5217,7 +5217,7 @@ _0814DCF8:
mov r9, r0
ldrh r0, [r1, 0x8]
strb r0, [r7]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0814DD18
@@ -5276,7 +5276,7 @@ _0814DD48:
muls r0, r2
ldr r2, =gPlayerParty
adds r0, r2
- bl sub_805DD7C
+ bl BattleLoadPlayerMonSpriteGfx
ldrb r0, [r7]
movs r1, 0
bl sub_814CC98
diff --git a/asm/battle_controller_opponent.s b/asm/battle_controller_opponent.s
index 066a0ceab..424e4159d 100644
--- a/asm/battle_controller_opponent.s
+++ b/asm/battle_controller_opponent.s
@@ -200,11 +200,11 @@ sub_805F2F0: @ 805F2F0
push {r5-r7}
movs r0, 0
mov r10, r0
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0805F32C
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0805F31E
@@ -520,7 +520,7 @@ _0805F5A6:
ands r0, r1
cmp r0, 0
bne _0805F5EE
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0805F5EE
@@ -583,7 +583,7 @@ _0805F5EE:
ands r0, r1
cmp r0, 0
bne _0805F6B4
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0805F684
@@ -609,7 +609,7 @@ _0805F5EE:
ldr r2, =gEnemyParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
mov r1, r8
ldrb r0, [r1]
eors r0, r7
@@ -619,7 +619,7 @@ _0805F5EE:
eors r0, r7
adds r0, r4
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
_0805F684:
ldr r5, =gHealthBoxesIds
ldr r4, =gActiveBank
@@ -635,13 +635,13 @@ _0805F684:
ldr r2, =gEnemyParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r4]
bl sub_8076918
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
_0805F6B4:
ldr r3, =gBattleSpritesDataPtr
ldr r2, [r3]
@@ -739,11 +739,11 @@ _0805F774:
movs r0, 0x1
str r0, [sp]
_0805F792:
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0805F7B2
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0805F810
@@ -838,7 +838,7 @@ _0805F86E:
mov r0, r10
cmp r0, 0
beq _0805F958
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0805F8D2
@@ -877,7 +877,7 @@ _0805F86E:
lsls r1, 16
lsrs r1, 16
adds r0, r4, 0
- bl sub_805EE54
+ bl SetBankEnemyShadowSpriteCallback
_0805F8D2:
ldr r1, =gUnknown_03005D7C
ldr r4, =gActiveBank
@@ -905,7 +905,7 @@ _0805F8D2:
lsls r1, 16
lsrs r1, 16
adds r0, r5, 0
- bl sub_805EE54
+ bl SetBankEnemyShadowSpriteCallback
ldr r3, =gBattleSpritesDataPtr
ldr r0, [r3]
ldr r2, [r0, 0x8]
@@ -1068,7 +1068,7 @@ sub_805FA70: @ 805FA70
ldrb r0, [r6]
adds r0, r5
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
lsls r4, 16
asrs r1, r4, 16
movs r0, 0x1
@@ -1111,7 +1111,7 @@ sub_805FAC4: @ 805FAC4
ldr r0, =gHealthBoxesIds
adds r0, r3, r0
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl OpponentBufferExecCompleted
_0805FAF2:
pop {r0}
@@ -1159,7 +1159,7 @@ sub_805FB08: @ 805FB08
ldrb r0, [r6]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl OpponentBufferExecCompleted
_0805FB62:
pop {r4-r6}
@@ -1415,13 +1415,13 @@ sub_805FD00: @ 805FD00
ldr r2, =gEnemyParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r5]
bl sub_8076918
ldrb r0, [r5]
adds r0, r4
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
ldrb r0, [r5]
bl sub_805E408
ldr r1, =gBattleBankFunc
@@ -1507,7 +1507,7 @@ _0805FE22:
lsls r1, 16
lsrs r1, 16
adds r0, r4, 0
- bl sub_805EE54
+ bl SetBankEnemyShadowSpriteCallback
ldr r1, =gBattleBankFunc
ldrb r0, [r5]
lsls r0, 2
@@ -3730,7 +3730,7 @@ sub_8061224: @ 8061224
ldrh r0, [r0]
muls r0, r7
add r0, r10
- bl sub_805DC0C
+ bl BattleLoadOpponentMonSpriteGfx
ldrb r0, [r6]
bl GetBankIdentity
adds r1, r0, 0
@@ -3828,7 +3828,7 @@ sub_8061224: @ 8061224
lsls r1, 16
lsrs r1, 16
adds r0, r4, 0
- bl sub_805EE54
+ bl SetBankEnemyShadowSpriteCallback
ldr r1, =gBattleBankFunc
ldrb r0, [r6]
lsls r0, 2
@@ -3934,7 +3934,7 @@ sub_80613DC: @ 80613DC
adds r0, r1, 0
adds r0, r5
adds r1, r6, 0
- bl sub_805DC0C
+ bl BattleLoadOpponentMonSpriteGfx
adds r0, r6, 0
bl GetBankIdentity
adds r1, r0, 0
@@ -4109,7 +4109,7 @@ _080615B4:
ldrb r0, [r6]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl OpponentBufferExecCompleted
_080615F0:
pop {r4-r6}
@@ -4339,7 +4339,7 @@ _080617CA:
bl sub_806A12C
ldr r6, =gUnknown_0202499C
mov r9, r7
- ldr r1, =gUnknown_083054E0
+ ldr r1, =gTrainerFrontPicCoords
mov r2, r8
lsls r0, r2, 2
adds r0, r1
@@ -4564,7 +4564,7 @@ _080619DE:
mov r0, r8
bl sub_806A12C
ldr r0, =gUnknown_0202499C
- ldr r2, =gUnknown_083054E0
+ ldr r2, =gTrainerFrontPicCoords
mov r3, r8
lsls r1, r3, 2
adds r1, r2
@@ -5212,7 +5212,7 @@ sub_8061F90: @ 8061F90
thumb_func_start sub_8061F9C
sub_8061F9C: @ 8061F9C
push {lr}
- bl sub_8063880
+ bl AI_TrySwitchOrUseItem
bl OpponentBufferExecCompleted
pop {r0}
bx r0
@@ -5243,7 +5243,7 @@ sub_8061FB8: @ 8061FB8
movs r0, 0x1
movs r1, 0xA
_08061FD6:
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd_x21
_08061FDA:
bl OpponentBufferExecCompleted
b _08062156
@@ -5347,7 +5347,7 @@ _0806209C:
movs r0, 0x1
movs r1, 0xA
adds r2, r4, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd_x21
b _08061FDA
.pool
_080620C4:
@@ -5378,7 +5378,7 @@ _080620C6:
movs r0, 0x1
movs r1, 0xA
adds r2, r4, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd_x21
b _08062152
.pool
_08062108:
@@ -5401,7 +5401,7 @@ _08062108:
orrs r2, r4
movs r0, 0x1
movs r1, 0xA
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd_x21
b _08062152
.pool
_0806213C:
@@ -5413,7 +5413,7 @@ _0806213C:
orrs r2, r4
movs r0, 0x1
movs r1, 0xA
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd_x21
_08062152:
bl OpponentBufferExecCompleted
_08062156:
@@ -5456,7 +5456,7 @@ sub_8062188: @ 8062188
ldrb r0, [r1]
cmp r0, 0x6
bne _08062254
- bl sub_8063A90
+ bl GetMostSuitableMonToSwitchInto
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0x6
@@ -5692,7 +5692,7 @@ sub_8062390: @ 8062390
ldr r2, =gEnemyParty
adds r1, r2
movs r2, 0x9
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r2, [r4]
ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
@@ -6244,7 +6244,7 @@ sub_8062828: @ 8062828
adds r0, r1
ldrh r0, [r0, 0x8]
strb r0, [r7]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0806286C
diff --git a/asm/battle_controller_player.s b/asm/battle_controller_player.s
index 1ea1bb5f2..047c62f6b 100644
--- a/asm/battle_controller_player.s
+++ b/asm/battle_controller_player.s
@@ -226,7 +226,7 @@ _0805764C:
movs r0, 0x1
movs r1, 0x3
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd_x21
b _080577C2
_08057658:
movs r0, 0x20
@@ -249,7 +249,7 @@ _08057674:
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
- bl sub_8059CF8
+ bl ActionSelectionDestroyCursorAt
ldrb r1, [r4]
adds r1, r5
ldrb r0, [r1]
@@ -277,7 +277,7 @@ _080576B4:
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
- bl sub_8059CF8
+ bl ActionSelectionDestroyCursorAt
ldrb r1, [r4]
adds r1, r5
ldrb r0, [r1]
@@ -321,7 +321,7 @@ _0805771A:
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
- bl sub_8059CF8
+ bl ActionSelectionDestroyCursorAt
ldrb r1, [r4]
adds r1, r5
ldrb r0, [r1]
@@ -333,7 +333,7 @@ _08057732:
adds r0, r5
ldrb r0, [r0]
movs r1, 0
- bl sub_8059CB4
+ bl ActionSelectionCreateCursorAt
b _080577E8
.pool
_0805774C:
@@ -393,7 +393,7 @@ _080577B2:
movs r1, 0xC
_080577BC:
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd_x21
_080577C2:
bl PlayerBufferExecCompleted
b _080577E8
@@ -518,7 +518,7 @@ _080578A0:
orrs r2, r0
movs r0, 0x1
movs r1, 0xA
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd_x21
ldrb r0, [r4]
movs r1, 0x1
bl dp11b_obj_free
@@ -1086,7 +1086,7 @@ _08057E14:
_08057E1C:
movs r0, 0x1
movs r1, 0xA
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd_x21
bl PlayerBufferExecCompleted
b _08057F9E
.pool
@@ -2385,11 +2385,11 @@ sub_805896C: @ 805896C
mov r5, r8
push {r5-r7}
movs r7, 0
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08058998
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _080589D0
@@ -2541,7 +2541,7 @@ _08058A0E:
ldr r4, =gPlayerParty
adds r0, r4
bl sub_805E990
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08058AE4
@@ -2672,7 +2672,7 @@ _08058BB2:
ands r0, r1
cmp r0, 0
bne _08058C68
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08058C38
@@ -2697,7 +2697,7 @@ _08058BB2:
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r7]
eors r0, r6
bl sub_8076918
@@ -2705,7 +2705,7 @@ _08058BB2:
eors r0, r6
adds r0, r4
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
_08058C38:
ldr r5, =gHealthBoxesIds
ldr r4, =gActiveBank
@@ -2721,13 +2721,13 @@ _08058C38:
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r4]
bl sub_8076918
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
_08058C68:
ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
@@ -2817,11 +2817,11 @@ _08058D14:
movs r0, 0x1
mov r9, r0
_08058D32:
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08058D52
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08058DAC
@@ -2915,7 +2915,7 @@ _08058E0A:
mov r0, r8
cmp r0, 0
beq _08058EAA
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08058E48
@@ -3207,13 +3207,13 @@ _0805905E:
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r5]
bl sub_8076918
ldrb r0, [r5]
adds r0, r4
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
ldr r1, =gBattleBankFunc
ldrb r0, [r5]
lsls r0, 2
@@ -3267,7 +3267,7 @@ bx_t1_healthbar_update: @ 8059130
ldrb r0, [r5]
adds r0, r6
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
lsls r4, 16
asrs r1, r4, 16
movs r0, 0x1
@@ -3338,7 +3338,7 @@ sub_80591B8: @ 80591B8
str r7, [sp, 0x8]
ldrh r2, [r1, 0xA]
str r2, [sp, 0xC]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -3413,9 +3413,9 @@ _080591FE:
lsrs r2, 16
movs r0, 0x1
movs r1, 0xB
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd_x21
strb r5, [r4]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -3616,7 +3616,7 @@ _08059430:
lsls r4, 16
lsrs r4, 16
ldrb r0, [r5]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
lsls r4, 16
asrs r4, 16
movs r0, 0x1
@@ -3686,7 +3686,7 @@ _08059430:
lsrs r2, 16
movs r0, 0x1
movs r1, 0xB
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd_x21
strb r5, [r4]
ldr r0, =sub_8059544
str r0, [r6]
@@ -3729,7 +3729,7 @@ sub_8059544: @ 8059544
adds r0, r1
ldrb r4, [r0, 0xC]
ldrb r6, [r0, 0x8]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -3795,7 +3795,7 @@ sub_80595A4: @ 80595A4
adds r0, r7, 0
movs r1, 0x38
bl GetMonData
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -3814,7 +3814,7 @@ sub_80595A4: @ 80595A4
ldrb r0, [r0]
adds r1, r7, 0
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
b _08059638
.pool
_08059624:
@@ -3826,7 +3826,7 @@ _08059624:
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
_08059638:
ldr r0, =gTasks
lsls r1, r6, 2
@@ -3930,7 +3930,7 @@ sub_80596A8: @ 80596A8
ldrb r0, [r4]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl PlayerBufferExecCompleted
_08059724:
pop {r4-r6}
@@ -3977,7 +3977,7 @@ sub_8059744: @ 8059744
ldrb r0, [r6]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl PlayerBufferExecCompleted
_08059798:
pop {r4-r6}
@@ -4291,14 +4291,14 @@ _08059A2C:
movs r0, 0x1
movs r1, 0xE
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd_x21
b _08059A76
.pool
_08059A6C:
movs r0, 0x1
movs r1, 0xD
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd_x21
_08059A76:
bl PlayerBufferExecCompleted
_08059A7A:
@@ -4401,7 +4401,7 @@ sub_8059B3C: @ 8059B3C
ldrb r0, [r0]
cmp r0, 0x1
beq _08059B98
- bl sub_814FBAC
+ bl SetPpNumbersPaletteInMoveSelection
ldrb r1, [r7]
lsls r4, r1, 9
adds r0, r5, 0x4
@@ -4561,8 +4561,8 @@ battle_menu_cursor_related: @ 8059C70
.pool
thumb_func_end battle_menu_cursor_related
- thumb_func_start sub_8059CB4
-sub_8059CB4: @ 8059CB4
+ thumb_func_start ActionSelectionCreateCursorAt
+ActionSelectionCreateCursorAt: @ 8059CB4
push {r4,lr}
sub sp, 0x10
adds r3, r0, 0
@@ -4595,10 +4595,10 @@ sub_8059CB4: @ 8059CB4
pop {r4}
pop {r0}
bx r0
- thumb_func_end sub_8059CB4
+ thumb_func_end ActionSelectionCreateCursorAt
- thumb_func_start sub_8059CF8
-sub_8059CF8: @ 8059CF8
+ thumb_func_start ActionSelectionDestroyCursorAt
+ActionSelectionDestroyCursorAt: @ 8059CF8
push {lr}
sub sp, 0x10
adds r3, r0, 0
@@ -4632,7 +4632,7 @@ sub_8059CF8: @ 8059CF8
pop {r0}
bx r0
.pool
- thumb_func_end sub_8059CF8
+ thumb_func_end ActionSelectionDestroyCursorAt
thumb_func_start sub_8059D40
sub_8059D40: @ 8059D40
@@ -6866,7 +6866,7 @@ sub_805B164: @ 805B164
muls r0, r2
ldr r2, =gPlayerParty
adds r0, r2
- bl sub_805DD7C
+ bl BattleLoadPlayerMonSpriteGfx
ldr r2, =gSprites
ldr r0, =gBankSpriteIds
ldrb r3, [r4]
@@ -6923,7 +6923,7 @@ sub_805B1CC: @ 805B1CC
muls r0, r2
ldr r2, =gPlayerParty
adds r0, r2
- bl sub_805DD7C
+ bl BattleLoadPlayerMonSpriteGfx
ldr r1, =gActionSelectionCursor
ldrb r0, [r5]
adds r0, r1
@@ -7162,7 +7162,7 @@ _0805B41C:
ldrb r0, [r6]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl PlayerBufferExecCompleted
_0805B452:
pop {r4-r6}
@@ -7371,11 +7371,11 @@ _0805B5E0:
beq _0805B618
movs r0, 0x5A
mov r9, r0
- ldr r1, =gUnknown_083054E0
+ ldr r1, =gTrainerFrontPicCoords
b _0805B642
.pool
_0805B618:
- ldr r1, =gUnknown_08305D2C
+ ldr r1, =gTrainerBackPicCoords
lsls r0, r4, 2
adds r0, r1
ldrb r1, [r0]
@@ -7392,7 +7392,7 @@ _0805B618:
_0805B63C:
movs r0, 0x50
mov r9, r0
- ldr r1, =gUnknown_08305D2C
+ ldr r1, =gTrainerBackPicCoords
_0805B642:
lsls r0, r4, 2
adds r0, r1
@@ -7542,7 +7542,7 @@ _0805B794:
ldr r5, =gActiveBank
ldrb r1, [r5]
adds r0, r4, 0
- bl sub_805DF84
+ bl LoadBackTrainerBankSpriteGfx
ldrb r0, [r5]
bl GetBankIdentity
adds r1, r0, 0
@@ -7724,7 +7724,7 @@ _0805B926:
ldr r5, =gActiveBank
ldrb r1, [r5]
adds r0, r4, 0
- bl sub_805DF84
+ bl LoadBackTrainerBankSpriteGfx
ldrb r0, [r5]
bl GetBankIdentity
adds r1, r0, 0
@@ -7733,7 +7733,7 @@ _0805B926:
adds r0, r4, 0
bl sub_806A12C
ldr r0, =gUnknown_0202499C
- ldr r1, =gUnknown_08305D2C
+ ldr r1, =gTrainerBackPicCoords
lsls r4, 2
adds r4, r1
ldrb r1, [r4]
@@ -8539,7 +8539,7 @@ dp01t_12_6_battle_menu: @ 805C044
_0805C062:
lsls r0, r4, 24
lsrs r0, 24
- bl sub_8059CF8
+ bl ActionSelectionDestroyCursorAt
adds r4, 0x1
cmp r4, 0x3
ble _0805C062
@@ -8549,7 +8549,7 @@ _0805C062:
adds r0, r1
ldrb r0, [r0]
movs r1, 0
- bl sub_8059CB4
+ bl ActionSelectionCreateCursorAt
ldr r0, =gText_WhatWillPkmnDo
bl BattleStringExpandPlaceholdersToDisplayedString
ldr r0, =gDisplayedStringBattle
@@ -8658,7 +8658,7 @@ sub_805C158: @ 805C158
lsrs r2, 16
movs r0, 0x1
movs r1, 0xA
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd_x21
bl PlayerBufferExecCompleted
_0805C194:
pop {r0}
@@ -9130,7 +9130,7 @@ sub_805C5C4: @ 805C5C4
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0x9
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r2, [r4]
ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
@@ -9378,7 +9378,7 @@ sub_805C80C: @ 805C80C
movs r0, 0x1
movs r1, 0
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd_x21
bl PlayerBufferExecCompleted
pop {r0}
bx r0
@@ -9860,7 +9860,7 @@ sub_805CC00: @ 805CC00
ldr r1, =gPlayerParty
adds r0, r1
adds r1, r4, 0
- bl sub_805DD7C
+ bl BattleLoadPlayerMonSpriteGfx
ldr r0, =gBankSpriteIds
adds r4, r0
ldrb r1, [r4]
@@ -9906,7 +9906,7 @@ _0805CC94:
mov r9, r0
ldrh r0, [r1, 0x8]
strb r0, [r7]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0805CCB4
@@ -9965,7 +9965,7 @@ _0805CCE4:
muls r0, r2
ldr r2, =gPlayerParty
adds r0, r2
- bl sub_805DD7C
+ bl BattleLoadPlayerMonSpriteGfx
ldrb r0, [r7]
movs r1, 0
bl sub_805B258
diff --git a/asm/battle_controller_player_partner.s b/asm/battle_controller_player_partner.s
index c0ea9b87f..35ee3a733 100644
--- a/asm/battle_controller_player_partner.s
+++ b/asm/battle_controller_player_partner.s
@@ -169,11 +169,11 @@ _081BAF38:
sub_81BAF48: @ 81BAF48
push {r4-r6,lr}
movs r6, 0
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _081BAF6C
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _081BAFA0
@@ -349,7 +349,7 @@ _081BB07A:
lsls r0, 2
adds r0, r2
strb r6, [r0, 0x9]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _081BB134
@@ -384,7 +384,7 @@ _081BB07A:
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r7]
mov r1, r8
eors r0, r1
@@ -394,7 +394,7 @@ _081BB07A:
eors r0, r1
adds r0, r4
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
_081BB134:
ldr r1, =gUnknown_03005D7C
ldr r4, =gActiveBank
@@ -420,13 +420,13 @@ _081BB134:
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r4]
bl sub_8076918
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r2, [r0, 0x8]
@@ -499,7 +499,7 @@ bx_t3_healthbar_update: @ 81BB214
ldrb r0, [r5]
adds r0, r6
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
lsls r4, 16
asrs r1, r4, 16
movs r0, 0x1
@@ -570,7 +570,7 @@ sub_81BB29C: @ 81BB29C
str r7, [sp, 0x8]
ldrh r2, [r1, 0xA]
str r2, [sp, 0xC]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -645,9 +645,9 @@ _081BB2E2:
lsrs r2, 16
movs r0, 0x1
movs r1, 0xB
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd_x21
strb r5, [r4]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -848,7 +848,7 @@ _081BB514:
lsls r4, 16
lsrs r4, 16
ldrb r0, [r5]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
lsls r4, 16
asrs r4, 16
movs r0, 0x1
@@ -918,7 +918,7 @@ _081BB514:
lsrs r2, 16
movs r0, 0x1
movs r1, 0xB
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd_x21
strb r5, [r4]
ldr r0, =sub_81BB628
str r0, [r6]
@@ -961,7 +961,7 @@ sub_81BB628: @ 81BB628
adds r0, r1
ldrb r4, [r0, 0xC]
ldrb r6, [r0, 0x8]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1027,7 +1027,7 @@ sub_81BB688: @ 81BB688
adds r0, r7, 0
movs r1, 0x38
bl GetMonData
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -1046,7 +1046,7 @@ sub_81BB688: @ 81BB688
ldrb r0, [r0]
adds r1, r7, 0
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
b _081BB71C
.pool
_081BB708:
@@ -1058,7 +1058,7 @@ _081BB708:
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
_081BB71C:
ldr r0, =gTasks
lsls r1, r6, 2
@@ -1162,7 +1162,7 @@ sub_81BB78C: @ 81BB78C
ldrb r0, [r4]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl PlayerPartnerBufferExecCompleted
_081BB808:
pop {r4-r6}
@@ -1209,7 +1209,7 @@ sub_81BB828: @ 81BB828
ldrb r0, [r6]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl PlayerPartnerBufferExecCompleted
_081BB87C:
pop {r4-r6}
@@ -1453,13 +1453,13 @@ sub_81BB9F4: @ 81BB9F4
muls r1, r6
adds r1, r5
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r7]
bl sub_8076918
ldrb r0, [r7]
adds r0, r4
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
ldr r1, =gBattleBankFunc
ldrb r0, [r7]
lsls r0, 2
@@ -3729,7 +3729,7 @@ sub_81BCF58: @ 81BCF58
muls r0, r5
ldr r4, =gPlayerParty
adds r0, r4
- bl sub_805DD7C
+ bl BattleLoadPlayerMonSpriteGfx
ldrb r0, [r6]
lsls r0, 1
add r0, r8
@@ -3858,7 +3858,7 @@ sub_81BD074: @ 81BD074
muls r0, r2
ldr r2, =gPlayerParty
adds r0, r2
- bl sub_805DD7C
+ bl BattleLoadPlayerMonSpriteGfx
ldrb r0, [r5]
lsls r1, r0, 9
adds r1, r6
@@ -4089,7 +4089,7 @@ _081BD2A8:
ldrb r0, [r6]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl PlayerPartnerBufferExecCompleted
_081BD2DE:
pop {r4-r6}
@@ -4182,7 +4182,7 @@ sub_81BD37C: @ 81BD37C
movs r4, 0x7
movs r0, 0x5A
mov r9, r0
- ldr r0, =gUnknown_08305D2C
+ ldr r0, =gTrainerBackPicCoords
ldrb r1, [r0, 0x1C]
b _081BD3BE
.pool
@@ -4193,7 +4193,7 @@ _081BD3A8:
lsrs r4, r0, 24
movs r0, 0x20
mov r9, r0
- ldr r1, =gUnknown_083054E0
+ ldr r1, =gTrainerFrontPicCoords
lsls r0, r4, 2
adds r0, r1
ldrb r1, [r0]
@@ -4213,7 +4213,7 @@ _081BD3BE:
ldr r5, =gActiveBank
ldrb r1, [r5]
adds r0, r4, 0
- bl sub_805DF84
+ bl LoadBackTrainerBankSpriteGfx
ldrb r0, [r5]
bl GetBankIdentity
adds r1, r0, 0
@@ -4990,7 +4990,7 @@ sub_81BDAA0: @ 81BDAA0
thumb_func_start sub_81BDAAC
sub_81BDAAC: @ 81BDAAC
push {lr}
- bl sub_8063880
+ bl AI_TrySwitchOrUseItem
bl PlayerPartnerBufferExecCompleted
pop {r0}
bx r0
@@ -5068,7 +5068,7 @@ _081BDB3C:
orrs r2, r5
movs r0, 0x1
movs r1, 0xA
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd_x21
bl PlayerPartnerBufferExecCompleted
pop {r4-r6}
pop {r0}
@@ -5087,7 +5087,7 @@ sub_81BDB70: @ 81BDB70
thumb_func_start sub_81BDB7C
sub_81BDB7C: @ 81BDB7C
push {r4-r6,lr}
- bl sub_8063A90
+ bl GetMostSuitableMonToSwitchInto
lsls r0, 24
lsrs r4, r0, 24
cmp r4, 0x6
@@ -5338,7 +5338,7 @@ sub_81BDD9C: @ 81BDD9C
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0x9
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r2, [r4]
ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
@@ -5950,7 +5950,7 @@ _081BE2F4:
mov r9, r0
ldrh r0, [r1, 0x8]
strb r0, [r7]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _081BE314
@@ -6009,7 +6009,7 @@ _081BE344:
muls r0, r2
ldr r2, =gPlayerParty
adds r0, r2
- bl sub_805DD7C
+ bl BattleLoadPlayerMonSpriteGfx
ldrb r0, [r7]
movs r1, 0
bl sub_81BD0E4
diff --git a/asm/battle_controller_recorded_opponent.s b/asm/battle_controller_recorded_opponent.s
index 0d9bb2331..562b55d4d 100644
--- a/asm/battle_controller_recorded_opponent.s
+++ b/asm/battle_controller_recorded_opponent.s
@@ -198,11 +198,11 @@ sub_8186678: @ 8186678
push {r6,r7}
movs r0, 0
mov r9, r0
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _081866A4
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _081866F8
@@ -504,7 +504,7 @@ _081868DE:
ands r0, r1
cmp r0, 0
bne _08186994
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08186964
@@ -529,7 +529,7 @@ _081868DE:
ldr r2, =gEnemyParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r7]
eors r0, r6
bl sub_8076918
@@ -537,7 +537,7 @@ _081868DE:
eors r0, r6
adds r0, r4
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
_08186964:
ldr r5, =gHealthBoxesIds
ldr r4, =gActiveBank
@@ -553,13 +553,13 @@ _08186964:
ldr r2, =gEnemyParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r4]
bl sub_8076918
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
_08186994:
ldr r0, =gBattleSpritesDataPtr
ldr r2, [r0]
@@ -655,7 +655,7 @@ _08186A4C:
movs r0, 0x1
mov r9, r0
_08186A6A:
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
bne _08186AC8
@@ -742,7 +742,7 @@ _08186B26:
mov r0, r8
cmp r0, 0
beq _08186C10
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08186B8A
@@ -781,7 +781,7 @@ _08186B26:
lsls r1, 16
lsrs r1, 16
adds r0, r4, 0
- bl sub_805EE54
+ bl SetBankEnemyShadowSpriteCallback
_08186B8A:
ldr r1, =gUnknown_03005D7C
ldr r4, =gActiveBank
@@ -809,7 +809,7 @@ _08186B8A:
lsls r1, 16
lsrs r1, 16
adds r0, r5, 0
- bl sub_805EE54
+ bl SetBankEnemyShadowSpriteCallback
ldr r3, =gBattleSpritesDataPtr
ldr r0, [r3]
ldr r2, [r0, 0x8]
@@ -955,7 +955,7 @@ sub_8186D04: @ 8186D04
ldrb r0, [r6]
adds r0, r5
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
lsls r4, 16
asrs r1, r4, 16
movs r0, 0x1
@@ -998,7 +998,7 @@ sub_8186D58: @ 8186D58
ldr r0, =gHealthBoxesIds
adds r0, r3, r0
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl RecordedOpponentBufferExecCompleted
_08186D86:
pop {r0}
@@ -1046,7 +1046,7 @@ sub_8186D9C: @ 8186D9C
ldrb r0, [r6]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl RecordedOpponentBufferExecCompleted
_08186DF6:
pop {r4-r6}
@@ -1302,13 +1302,13 @@ sub_8186F94: @ 8186F94
ldr r2, =gEnemyParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r5]
bl sub_8076918
ldrb r0, [r5]
adds r0, r4
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
ldrb r0, [r5]
bl sub_805E408
ldr r1, =gBattleBankFunc
@@ -1394,7 +1394,7 @@ _081870B6:
lsls r1, 16
lsrs r1, 16
adds r0, r4, 0
- bl sub_805EE54
+ bl SetBankEnemyShadowSpriteCallback
ldr r1, =gBattleBankFunc
ldrb r0, [r5]
lsls r0, 2
@@ -3564,7 +3564,7 @@ sub_818843C: @ 818843C
muls r2, r0
adds r0, r2, 0
add r0, r9
- bl sub_805DC0C
+ bl BattleLoadOpponentMonSpriteGfx
ldrb r0, [r6]
bl GetBankIdentity
adds r1, r0, 0
@@ -3654,7 +3654,7 @@ sub_818843C: @ 818843C
lsls r1, 16
lsrs r1, 16
adds r0, r4, 0
- bl sub_805EE54
+ bl SetBankEnemyShadowSpriteCallback
ldr r1, =gBattleBankFunc
ldrb r0, [r6]
lsls r0, 2
@@ -3753,7 +3753,7 @@ sub_81885D8: @ 81885D8
adds r0, r1, 0
adds r0, r5
adds r1, r6, 0
- bl sub_805DC0C
+ bl BattleLoadOpponentMonSpriteGfx
adds r0, r6, 0
bl GetBankIdentity
adds r1, r0, 0
@@ -3928,7 +3928,7 @@ _081887B0:
ldrb r0, [r6]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl RecordedOpponentBufferExecCompleted
_081887EC:
pop {r4-r6}
@@ -4096,7 +4096,7 @@ _0818892C:
bl sub_806A12C
ldr r6, =gUnknown_0202499C
mov r9, r7
- ldr r1, =gUnknown_083054E0
+ ldr r1, =gTrainerFrontPicCoords
mov r2, r8
lsls r0, r2, 2
adds r0, r1
@@ -4754,7 +4754,7 @@ sub_8188EF0: @ 8188EF0
lsrs r1, 24
movs r0, 0x1
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd_x21
bl RecordedOpponentBufferExecCompleted
pop {r0}
bx r0
@@ -4785,7 +4785,7 @@ sub_8188F20: @ 8188F20
lsrs r2, 16
movs r0, 0x1
movs r1, 0xA
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd_x21
b _08188F6C
.pool
_08188F48:
@@ -4803,7 +4803,7 @@ _08188F48:
orrs r2, r4
movs r0, 0x1
movs r1, 0xA
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd_x21
_08188F6C:
bl RecordedOpponentBufferExecCompleted
pop {r4,r5}
@@ -4981,7 +4981,7 @@ sub_81890CC: @ 81890CC
ldr r2, =gEnemyParty
adds r1, r2
movs r2, 0x9
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r2, [r4]
ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
@@ -5518,7 +5518,7 @@ c3_0803D564: @ 8189548
adds r0, r1
ldrh r0, [r0, 0x8]
strb r0, [r7]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08189582
diff --git a/asm/battle_controller_recorded_player.s b/asm/battle_controller_recorded_player.s
index 1b0cd52e3..f7dfc0fed 100644
--- a/asm/battle_controller_recorded_player.s
+++ b/asm/battle_controller_recorded_player.s
@@ -180,11 +180,11 @@ sub_8189AA0: @ 8189AA0
beq _08189ABA
b _08189C60
_08189ABA:
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08189ADA
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08189B0C
@@ -337,7 +337,7 @@ _08189B86:
ldr r4, =gPlayerParty
adds r0, r4
bl sub_805E990
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08189C22
@@ -366,11 +366,11 @@ _08189C22:
b _08189D10
.pool
_08189C60:
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08189C80
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08189CB0
@@ -561,7 +561,7 @@ _08189DBE:
ands r0, r1
cmp r0, 0
bne _08189E84
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08189E54
@@ -587,7 +587,7 @@ _08189DBE:
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
mov r1, r9
ldrb r0, [r1]
eors r0, r7
@@ -597,7 +597,7 @@ _08189DBE:
eors r0, r7
adds r0, r4
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
_08189E54:
ldr r5, =gHealthBoxesIds
ldr r4, =gActiveBank
@@ -613,13 +613,13 @@ _08189E54:
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r4]
bl sub_8076918
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
_08189E84:
ldr r4, =gBattleSpritesDataPtr
ldr r0, [r4]
@@ -747,7 +747,7 @@ _08189F62:
ldr r0, [r0]
cmp r0, r2
bne _0818A02A
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08189FC8
@@ -874,7 +874,7 @@ sub_818A0A4: @ 818A0A4
ldrb r0, [r5]
adds r0, r6
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
lsls r4, 16
asrs r1, r4, 16
movs r0, 0x1
@@ -963,7 +963,7 @@ sub_818A114: @ 818A114
ldrb r0, [r4]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl RecordedPlayerBufferExecCompleted
_0818A190:
pop {r4-r6}
@@ -1010,7 +1010,7 @@ sub_818A1B0: @ 818A1B0
ldrb r0, [r6]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl RecordedPlayerBufferExecCompleted
_0818A204:
pop {r4-r6}
@@ -1254,13 +1254,13 @@ sub_818A37C: @ 818A37C
muls r1, r6
adds r1, r5
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r7]
bl sub_8076918
ldrb r0, [r7]
adds r0, r4
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
ldr r1, =gBattleBankFunc
ldrb r0, [r7]
lsls r0, 2
@@ -3530,7 +3530,7 @@ sub_818B8E0: @ 818B8E0
muls r0, r5
ldr r4, =gPlayerParty
adds r0, r4
- bl sub_805DD7C
+ bl BattleLoadPlayerMonSpriteGfx
ldrb r0, [r6]
lsls r0, 1
add r0, r8
@@ -3659,7 +3659,7 @@ sub_818B9FC: @ 818B9FC
muls r0, r2
ldr r2, =gPlayerParty
adds r0, r2
- bl sub_805DD7C
+ bl BattleLoadPlayerMonSpriteGfx
ldrb r0, [r5]
lsls r1, r0, 9
adds r1, r6
@@ -3890,7 +3890,7 @@ _0818BC30:
ldrb r0, [r6]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl RecordedPlayerBufferExecCompleted
_0818BC66:
pop {r4-r6}
@@ -4033,14 +4033,14 @@ _0818BD72:
beq _0818BD9C
movs r0, 0x5A
mov r9, r0
- ldr r1, =gUnknown_083054E0
+ ldr r1, =gTrainerFrontPicCoords
b _0818BD9E
.pool
_0818BD98:
movs r0, 0x50
mov r9, r0
_0818BD9C:
- ldr r1, =gUnknown_08305D2C
+ ldr r1, =gTrainerBackPicCoords
_0818BD9E:
lsls r0, r4, 2
adds r0, r1
@@ -4182,7 +4182,7 @@ _0818BEDC:
ldr r5, =gActiveBank
ldrb r1, [r5]
adds r0, r4, 0
- bl sub_805DF84
+ bl LoadBackTrainerBankSpriteGfx
ldrb r0, [r5]
bl GetBankIdentity
adds r1, r0, 0
@@ -4861,7 +4861,7 @@ sub_818C49C: @ 818C49C
lsrs r1, 24
movs r0, 0x1
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd_x21
bl RecordedPlayerBufferExecCompleted
_0818C4C6:
pop {r0}
@@ -4897,7 +4897,7 @@ _0818C508:
lsrs r1, 24
movs r0, 0x1
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd_x21
bl RecordedPlayerBufferExecCompleted
_0818C522:
pop {r0}
@@ -4929,7 +4929,7 @@ sub_818C538: @ 818C538
lsrs r2, 16
movs r0, 0x1
movs r1, 0xA
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd_x21
b _0818C584
.pool
_0818C560:
@@ -4947,7 +4947,7 @@ _0818C560:
orrs r2, r4
movs r0, 0x1
movs r1, 0xA
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd_x21
_0818C584:
bl RecordedPlayerBufferExecCompleted
pop {r4,r5}
@@ -5132,7 +5132,7 @@ sub_818C6F4: @ 818C6F4
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0x9
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r2, [r4]
ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
@@ -5746,7 +5746,7 @@ _0818CC50:
mov r9, r0
ldrh r0, [r1, 0x8]
strb r0, [r7]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0818CC70
@@ -5805,7 +5805,7 @@ _0818CCA0:
muls r0, r2
ldr r2, =gPlayerParty
adds r0, r2
- bl sub_805DD7C
+ bl BattleLoadPlayerMonSpriteGfx
ldrb r0, [r7]
movs r1, 0
bl sub_818BA6C
diff --git a/asm/battle_controller_safari.s b/asm/battle_controller_safari.s
index 26f7ad8f7..a45ae6cee 100644
--- a/asm/battle_controller_safari.s
+++ b/asm/battle_controller_safari.s
@@ -103,13 +103,13 @@ _0815942A:
movs r1, 0x7
_0815942E:
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd_x21
b _08159440
_08159436:
movs r0, 0x1
movs r1, 0x8
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd_x21
_08159440:
bl SafariBufferExecCompleted
b _0815954E
@@ -132,7 +132,7 @@ _08159446:
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
- bl sub_8059CF8
+ bl ActionSelectionDestroyCursorAt
ldrb r1, [r4]
adds r1, r5
ldrb r0, [r1]
@@ -158,7 +158,7 @@ _08159484:
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
- bl sub_8059CF8
+ bl ActionSelectionDestroyCursorAt
ldrb r1, [r4]
adds r1, r5
ldrb r0, [r1]
@@ -184,7 +184,7 @@ _081594C0:
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
- bl sub_8059CF8
+ bl ActionSelectionDestroyCursorAt
ldrb r1, [r4]
adds r1, r5
ldrb r0, [r1]
@@ -196,7 +196,7 @@ _081594F2:
adds r0, r5
ldrb r0, [r0]
movs r1, 0
- bl sub_8059CB4
+ bl ActionSelectionCreateCursorAt
b _0815954E
.pool
_0815950C:
@@ -218,7 +218,7 @@ _0815950C:
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
- bl sub_8059CF8
+ bl ActionSelectionDestroyCursorAt
ldrb r1, [r4]
adds r1, r5
ldrb r0, [r1]
@@ -229,7 +229,7 @@ _0815950C:
adds r0, r5
ldrb r0, [r0]
movs r1, 0
- bl sub_8059CB4
+ bl ActionSelectionCreateCursorAt
_0815954E:
pop {r4,r5}
pop {r0}
@@ -569,7 +569,7 @@ sub_8159800: @ 8159800
ldrb r0, [r0, 0x8]
ldr r5, =gActiveBank
ldrb r1, [r5]
- bl sub_805DF84
+ bl LoadBackTrainerBankSpriteGfx
ldr r0, [r4]
ldrb r6, [r0, 0x8]
ldrb r0, [r5]
@@ -580,7 +580,7 @@ sub_8159800: @ 8159800
adds r0, r6, 0
bl sub_806A12C
ldr r0, =gUnknown_0202499C
- ldr r2, =gUnknown_08305D2C
+ ldr r2, =gTrainerBackPicCoords
ldr r1, [r4]
ldrb r1, [r1, 0x8]
lsls r1, 2
@@ -867,7 +867,7 @@ sub_8159A94: @ 8159A94
_08159AAE:
lsls r0, r4, 24
lsrs r0, 24
- bl sub_8059CF8
+ bl ActionSelectionDestroyCursorAt
adds r4, 0x1
cmp r4, 0x3
ble _08159AAE
@@ -877,7 +877,7 @@ _08159AAE:
adds r0, r1
ldrb r0, [r0]
movs r1, 0
- bl sub_8059CB4
+ bl ActionSelectionCreateCursorAt
ldr r0, =gText_WhatWillPkmnDo2
bl BattleStringExpandPlaceholdersToDisplayedString
ldr r0, =gDisplayedStringBattle
@@ -981,7 +981,7 @@ sub_8159B84: @ 8159B84
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0xB
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
bl SafariBufferExecCompleted
pop {r0}
bx r0
@@ -1256,13 +1256,13 @@ sub_8159D90: @ 8159D90
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0xA
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r4]
bl sub_8076918
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
ldr r1, =gBattleBankFunc
ldrb r0, [r4]
lsls r0, 2
diff --git a/asm/battle_controller_wally.s b/asm/battle_controller_wally.s
index 629fa308d..de17547a1 100644
--- a/asm/battle_controller_wally.s
+++ b/asm/battle_controller_wally.s
@@ -153,7 +153,7 @@ _081684CE:
movs r1, 0x9
_081684E4:
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd_x21
bl WallyBufferExecCompleted
ldr r1, [r4]
adds r1, 0x94
@@ -180,10 +180,10 @@ _08168508:
movs r0, 0x5
bl PlaySE
movs r0, 0
- bl sub_8059CF8
+ bl ActionSelectionDestroyCursorAt
movs r0, 0x1
movs r1, 0
- bl sub_8059CB4
+ bl ActionSelectionCreateCursorAt
ldr r0, [r4]
adds r0, 0x96
movs r1, 0x40
@@ -208,7 +208,7 @@ _08168540:
movs r0, 0x1
movs r1, 0x1
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd_x21
bl WallyBufferExecCompleted
_08168564:
pop {r4,r5}
@@ -425,7 +425,7 @@ _081686D2:
ldr r0, [r0]
cmp r0, r3
bne _081687DC
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _0816877A
@@ -459,7 +459,7 @@ _081686D2:
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r5]
eors r0, r6
bl sub_8076918
@@ -467,7 +467,7 @@ _081686D2:
eors r0, r6
adds r0, r4
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
_0816877A:
ldr r1, =gUnknown_03005D7C
ldr r4, =gActiveBank
@@ -493,13 +493,13 @@ _0816877A:
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldrb r0, [r4]
bl sub_8076918
ldrb r0, [r4]
adds r0, r5
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
ldr r0, =gBattleSpritesDataPtr
ldr r0, [r0]
ldr r2, [r0, 0x8]
@@ -665,7 +665,7 @@ sub_8168934: @ 8168934
ldrb r0, [r5]
adds r0, r6
ldrb r0, [r0]
- bl sub_80729D0
+ bl SetHealthboxSpriteVisible
lsls r4, 16
asrs r1, r4, 16
movs r0, 0x1
@@ -796,7 +796,7 @@ sub_8168A20: @ 8168A20
ldrb r0, [r6]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl WallyBufferExecCompleted
_08168A74:
pop {r4-r6}
@@ -3015,7 +3015,7 @@ _08169E80:
ldrb r0, [r6]
adds r0, r1
ldrb r0, [r0]
- bl sub_8072984
+ bl SetHealthboxSpriteInvisible
bl WallyBufferExecCompleted
_08169EB6:
pop {r4-r6}
@@ -3030,7 +3030,7 @@ sub_8169EC8: @ 8169EC8
ldr r4, =gActiveBank
ldrb r1, [r4]
movs r0, 0x6
- bl sub_805DF84
+ bl LoadBackTrainerBankSpriteGfx
ldrb r0, [r4]
bl GetBankIdentity
adds r1, r0, 0
@@ -3039,7 +3039,7 @@ sub_8169EC8: @ 8169EC8
movs r0, 0x6
bl sub_806A12C
ldr r0, =gUnknown_0202499C
- ldr r1, =gUnknown_08305D2C
+ ldr r1, =gTrainerBackPicCoords
ldrb r1, [r1, 0x18]
movs r2, 0x8
subs r2, r1
@@ -3115,7 +3115,7 @@ dp01t_07_6_: @ 8169F94
ldr r4, =gActiveBank
ldrb r1, [r4]
movs r0, 0x6
- bl sub_805DF84
+ bl LoadBackTrainerBankSpriteGfx
ldrb r0, [r4]
bl GetBankIdentity
adds r1, r0, 0
@@ -3124,7 +3124,7 @@ dp01t_07_6_: @ 8169F94
movs r0, 0x6
bl sub_806A12C
ldr r0, =gUnknown_0202499C
- ldr r1, =gUnknown_08305D2C
+ ldr r1, =gTrainerBackPicCoords
ldrb r1, [r1, 0x18]
movs r2, 0x8
subs r2, r1
@@ -3681,7 +3681,7 @@ dp01t_12_1_battle_menu: @ 816A470
_0816A48A:
lsls r0, r4, 24
lsrs r0, 24
- bl sub_8059CF8
+ bl ActionSelectionDestroyCursorAt
adds r4, 0x1
cmp r4, 0x3
ble _0816A48A
@@ -3691,7 +3691,7 @@ _0816A48A:
adds r0, r1
ldrb r0, [r0]
movs r1, 0
- bl sub_8059CB4
+ bl ActionSelectionCreateCursorAt
ldr r0, =gText_WhatWillWallyDo
bl BattleStringExpandPlaceholdersToDisplayedString
ldr r0, =gDisplayedStringBattle
@@ -3777,7 +3777,7 @@ _0816A550:
lsls r2, 1
movs r0, 0x1
movs r1, 0xA
- bl dp01_build_cmdbuf_x21_a_bb
+ bl EmitCmd_x21
bl WallyBufferExecCompleted
_0816A574:
pop {r4}
diff --git a/asm/battle_frontier_1.s b/asm/battle_frontier_1.s
index 4c44855f9..7ac60f1be 100755
--- a/asm/battle_frontier_1.s
+++ b/asm/battle_frontier_1.s
@@ -14296,7 +14296,7 @@ sub_81963F0: @ 81963F0
adds r0, r1
bl FieldObjectClearAnimIfSpecialAnimFinished
bl sub_80D338C
- bl sub_809757C
+ bl UnfreezeMapObjects
bl ScriptContext2_Disable
_08196446:
movs r0, 0x1
@@ -14680,7 +14680,7 @@ sub_8196748: @ 8196748
ldr r4, =gUnknown_085500A4
_08196750:
ldrh r0, [r4]
- bl trainer_flag_check
+ bl HasTrainerAlreadyBeenFought
lsls r0, 24
cmp r0, 0
beq _0819675E
@@ -14706,7 +14706,7 @@ sub_8196774: @ 8196774
ldr r5, =gUnknown_085500A4
_0819677E:
ldrh r0, [r5]
- bl trainer_flag_check
+ bl HasTrainerAlreadyBeenFought
lsls r0, 24
cmp r0, 0
beq _0819679A
diff --git a/asm/battle_frontier_2.s b/asm/battle_frontier_2.s
index de5617167..37ddc7ac6 100755
--- a/asm/battle_frontier_2.s
+++ b/asm/battle_frontier_2.s
@@ -12935,7 +12935,7 @@ _081A1118:
adds r1, r0, 0
mov r0, sp
movs r2, 0x2
- bl sub_81DB5E8
+ bl TVShowConvertInternationalString
adds r0, r5, 0
mov r1, sp
bl StringCopy
@@ -18997,7 +18997,7 @@ sub_81A4594: @ 81A4594
adds r1, r6, 0x6
ldrb r2, [r6, 0xE]
add r0, sp, 0xC
- bl sub_81DB5E8
+ bl TVShowConvertInternationalString
ldr r1, =gUnknown_0203AB74
ldrb r0, [r1]
mov r3, r8
@@ -19111,7 +19111,7 @@ sub_81A4684: @ 81A4684
adds r1, 0xA
ldrb r2, [r5, 0x1A]
add r0, sp, 0xC
- bl sub_81DB5E8
+ bl TVShowConvertInternationalString
ldr r1, =gUnknown_0203AB74
ldrb r0, [r1]
adds r3, r7, 0x2
@@ -19133,13 +19133,13 @@ sub_81A4684: @ 81A4684
adds r4, r5, 0
adds r4, 0x12
adds r0, r4, 0
- bl sub_8009228
+ bl IsStringJapanese
cmp r0, 0
beq _081A4734
add r0, sp, 0xC
adds r1, r4, 0
movs r2, 0x1
- bl sub_81DB5E8
+ bl TVShowConvertInternationalString
b _081A473C
.pool
_081A4734:
@@ -20577,7 +20577,7 @@ _081A5328:
movs r0, 0x1
negs r0, r0
strb r0, [r1, 0x1]
- ldr r0, =gText_JapaneseHonorific
+ ldr r0, =gText_PlayerMon1Name
bl BattleStringExpandPlaceholdersToDisplayedString
ldr r4, =gDisplayedStringBattle
adds r0, r4, 0
@@ -20586,7 +20586,7 @@ _081A5328:
ldr r0, =gText_Vs
movs r1, 0x10
bl sub_814F9EC
- ldr r0, =gText_RivalBuffer
+ ldr r0, =gText_OpponentMon1Name
bl BattleStringExpandPlaceholdersToDisplayedString
adds r0, r4, 0
movs r1, 0x11
@@ -27306,7 +27306,7 @@ _081A8A74:
ldrb r1, [r2, 0x5]
ldrb r2, [r2, 0x4]
adds r3, r7, 0
- bl exec_movement
+ bl ScriptMovement_StartObjectMovementScript
b _081A8AD4
.pool
_081A8ACC:
@@ -27540,7 +27540,7 @@ _081A8C72:
ldr r2, [r1]
ldrb r1, [r2, 0x5]
ldrb r2, [r2, 0x4]
- bl exec_movement
+ bl ScriptMovement_StartObjectMovementScript
b _081A8D32
.pool
_081A8C9C:
@@ -27618,7 +27618,7 @@ _081A8D12:
ldr r2, [r1]
ldrb r1, [r2, 0x5]
ldrb r2, [r2, 0x4]
- bl exec_movement
+ bl ScriptMovement_StartObjectMovementScript
_081A8D32:
mov r0, r9
adds r0, 0x1
@@ -28660,7 +28660,7 @@ _081A95EE:
lsls r0, r7, 2
adds r0, r1
ldr r0, [r0]
- bl box_related_two__2
+ bl ShowFieldMessage
add sp, 0x8
pop {r3,r4}
mov r8, r3
diff --git a/asm/battle_interface.s b/asm/battle_interface.s
index d9bb3d8cc..1f1185032 100755
--- a/asm/battle_interface.s
+++ b/asm/battle_interface.s
@@ -261,8 +261,8 @@ sub_80724A8: @ 80724A8
bx r0
thumb_func_end sub_80724A8
- thumb_func_start battle_make_oam_normal_battle
-battle_make_oam_normal_battle: @ 80724DC
+ thumb_func_start CreateBankHealthboxSprites
+CreateBankHealthboxSprites: @ 80724DC
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -274,7 +274,7 @@ battle_make_oam_normal_battle: @ 80724DC
mov r10, r0
movs r0, 0
str r0, [sp]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
bne _080725F0
@@ -608,10 +608,10 @@ _08072718:
pop {r1}
bx r1
.pool
- thumb_func_end battle_make_oam_normal_battle
+ thumb_func_end CreateBankHealthboxSprites
- thumb_func_start battle_make_oam_safari_battle
-battle_make_oam_safari_battle: @ 8072804
+ thumb_func_start CreateSafariPlayerHealthboxSprites
+CreateSafariPlayerHealthboxSprites: @ 8072804
push {r4-r7,lr}
mov r7, r9
mov r6, r8
@@ -680,7 +680,7 @@ battle_make_oam_safari_battle: @ 8072804
pop {r1}
bx r1
.pool
- thumb_func_end battle_make_oam_safari_battle
+ thumb_func_end CreateSafariPlayerHealthboxSprites
thumb_func_start sub_80728A4
sub_80728A4: @ 80728A4
@@ -802,8 +802,8 @@ sub_807294C: @ 807294C
.pool
thumb_func_end sub_807294C
- thumb_func_start sub_8072984
-sub_8072984: @ 8072984
+ thumb_func_start SetHealthboxSpriteInvisible
+SetHealthboxSpriteInvisible: @ 8072984
push {r4,lr}
lsls r0, 24
lsrs r0, 24
@@ -841,10 +841,10 @@ sub_8072984: @ 8072984
pop {r0}
bx r0
.pool
- thumb_func_end sub_8072984
+ thumb_func_end SetHealthboxSpriteInvisible
- thumb_func_start sub_80729D0
-sub_80729D0: @ 80729D0
+ thumb_func_start SetHealthboxSpriteVisible
+SetHealthboxSpriteVisible: @ 80729D0
push {r4,r5,lr}
lsls r0, 24
lsrs r0, 24
@@ -885,7 +885,7 @@ sub_80729D0: @ 80729D0
pop {r0}
bx r0
.pool
- thumb_func_end sub_80729D0
+ thumb_func_end SetHealthboxSpriteVisible
thumb_func_start sub_8072A24
sub_8072A24: @ 8072A24
@@ -1014,14 +1014,14 @@ _08072B00:
.pool
thumb_func_end sub_8072A88
- thumb_func_start sub_8072B18
-sub_8072B18: @ 8072B18
+ thumb_func_start SetBankHealthboxSpritePos
+SetBankHealthboxSpritePos: @ 8072B18
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
movs r5, 0
movs r4, 0
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
bne _08072B44
@@ -1081,7 +1081,7 @@ _08072B7C:
pop {r0}
bx r0
.pool
- thumb_func_end sub_8072B18
+ thumb_func_end SetBankHealthboxSpritePos
thumb_func_start healthbar_draw_level
healthbar_draw_level: @ 8072B94
@@ -1132,7 +1132,7 @@ healthbar_draw_level: @ 8072B94
lsls r0, 24
cmp r0, 0
bne _08072C18
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
ldr r2, =0x06010420
adds r1, r4, r2
@@ -1187,7 +1187,7 @@ heathbar_draw_hp: @ 8072C38
lsls r0, 24
cmp r0, 0
bne _08072D10
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
bne _08072D10
@@ -1267,7 +1267,7 @@ _08072D10:
ldrh r0, [r6, 0x3A]
lsls r0, 24
lsrs r5, r0, 24
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
lsrs r0, 24
mov r10, r4
@@ -1993,7 +1993,7 @@ _08073354:
bne _0807336A
b _080735A8
_0807336A:
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
bne _08073382
@@ -2036,7 +2036,7 @@ _08073382:
lsls r0, 24
cmp r0, 0
bne _080734B0
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
bne _080733D0
@@ -2107,7 +2107,7 @@ _08073468:
ldr r2, =gPlayerParty
adds r1, r2
movs r2, 0x5
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
movs r0, 0x75
bl sub_80728A4
ldrb r2, [r6]
@@ -2209,7 +2209,7 @@ _0807355C:
ldr r4, =gEnemyParty
adds r1, r4
movs r2, 0x5
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
ldr r0, =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x80
@@ -2222,7 +2222,7 @@ _0807355C:
muls r1, r5
adds r1, r4
movs r2, 0x4
- bl healthbar_draw_field_maybe
+ bl UpdateHealthboxAttribute
_08073592:
ldr r0, =gHealthBoxesIds
add r0, r9
@@ -2303,7 +2303,7 @@ _08073630:
mov r9, r3
cmp r4, 0
beq _08073642
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
bne _08073648
@@ -3842,7 +3842,7 @@ _08074272:
adds r1, r6, 0
movs r2, 0x6
bl sub_8075198
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
ldr r1, =0x06010400
adds r5, r4, r1
@@ -4013,7 +4013,7 @@ draw_status_ailment_maybe: @ 80743F8
movs r1, 0x37
bl GetMonData
adds r4, r0, 0
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
movs r3, 0x12
mov r8, r3
@@ -4210,7 +4210,7 @@ _080745B8:
ldr r2, =0x04000018
adds r0, r6, 0
bl CpuSet
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -4468,8 +4468,8 @@ sub_80747D8: @ 80747D8
.pool
thumb_func_end sub_80747D8
- thumb_func_start healthbar_draw_field_maybe
-healthbar_draw_field_maybe: @ 8074860
+ thumb_func_start UpdateHealthboxAttribute
+UpdateHealthboxAttribute: @ 8074860
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -4492,7 +4492,7 @@ healthbar_draw_field_maybe: @ 8074860
mov r9, r0
cmp r7, 0
bne _0807489C
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
bne _0807489C
@@ -4581,7 +4581,7 @@ _08074914:
movs r3, 0
bl sub_8074AA0
_08074948:
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
lsrs r0, 24
mov r10, r0
@@ -4742,7 +4742,7 @@ _08074A8E:
pop {r4-r7}
pop {r0}
bx r0
- thumb_func_end healthbar_draw_field_maybe
+ thumb_func_end UpdateHealthboxAttribute
thumb_func_start sub_8074AA0
sub_8074AA0: @ 8074AA0
diff --git a/asm/battle_link_817C95C.s b/asm/battle_link_817C95C.s
index 39ae59d8b..aa887bc25 100644
--- a/asm/battle_link_817C95C.s
+++ b/asm/battle_link_817C95C.s
@@ -665,7 +665,7 @@ _0817D16C:
bl _0817DFAC
.pool
_0817D1B8:
- ldr r1, =gUnknown_02022F5C
+ ldr r1, =gBattleTextBuff1 + 4
ldrb r0, [r1]
cmp r0, 0
beq _0817D1C4
@@ -917,7 +917,7 @@ _0817D3C0:
bne _0817D3CC
bl _0817E0A6
_0817D3CC:
- ldr r1, =gUnknown_02022F6A
+ ldr r1, =gBattleTextBuff2 + 2
ldrh r0, [r1]
cmp r0, 0xD1
bne _0817D3E8
@@ -946,7 +946,7 @@ _0817D3FE:
ldrb r1, [r1]
cmp r0, r1
bne _0817D436
- ldr r1, =gUnknown_02022F6A
+ ldr r1, =gBattleTextBuff2 + 2
ldrh r0, [r1]
cmp r0, 0xD1
bne _0817D42C
@@ -988,7 +988,7 @@ _0817D45C:
bne _0817D468
bl _0817E0A6
_0817D468:
- ldr r1, =gUnknown_02022F6A
+ ldr r1, =gBattleTextBuff2 + 2
ldrh r0, [r1]
cmp r0, 0xD3
bne _0817D484
@@ -2182,7 +2182,7 @@ _0817DE10:
b _0817DFAA
.pool
_0817DE58:
- ldr r1, =gUnknown_02022F5A
+ ldr r1, =gBattleTextBuff1 + 2
ldrh r0, [r1]
cmp r0, 0x73
bne _0817DE82
@@ -2204,7 +2204,7 @@ _0817DE58:
ands r0, r2
strb r0, [r1]
_0817DE82:
- ldr r2, =gUnknown_02022F5A
+ ldr r2, =gBattleTextBuff1 + 2
ldrh r0, [r2]
cmp r0, 0x71
bne _0817DEAA
@@ -2225,7 +2225,7 @@ _0817DE82:
ands r0, r2
strb r0, [r1]
_0817DEAA:
- ldr r1, =gUnknown_02022F5A
+ ldr r1, =gBattleTextBuff1 + 2
ldrh r0, [r1]
cmp r0, 0x36
beq _0817DEB4
@@ -3193,7 +3193,7 @@ _0817E63A:
adds r1, r4, 0
ldr r2, [sp]
ldr r3, [sp, 0x4]
- bl sub_80ECB00
+ bl PutBattleUpdateOnTheAir
b _0817E670
.pool
_0817E65C:
@@ -3205,7 +3205,7 @@ _0817E65C:
adds r1, r4, 0
ldr r2, [sp]
ldr r3, [sp, 0x4]
- bl sub_80ECB00
+ bl PutBattleUpdateOnTheAir
_0817E670:
add sp, 0x20
pop {r3-r5}
diff --git a/asm/battle_message.s b/asm/battle_message.s
deleted file mode 100644
index b114a36f8..000000000
--- a/asm/battle_message.s
+++ /dev/null
@@ -1,3089 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start BufferStringBattle
-BufferStringBattle: @ 814E0C4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 16
- lsrs r6, r0, 16
- movs r7, 0
- ldr r4, =gStringInfo
- ldr r0, =gActiveBank
- mov r8, r0
- ldrb r1, [r0]
- lsls r1, 9
- ldr r0, =gBattleBufferA + 4
- adds r1, r0
- str r1, [r4]
- ldr r2, =gLastUsedItem
- ldrh r0, [r1, 0x4]
- strh r0, [r2]
- ldr r2, =gLastUsedAbility
- ldrb r0, [r1, 0x6]
- strb r0, [r2]
- ldr r5, =gBattleScripting
- ldrb r0, [r1, 0x7]
- strb r0, [r5, 0x17]
- ldr r3, =gBattleStruct
- ldr r0, [r3]
- adds r0, 0x52
- ldrb r1, [r1, 0x8]
- strb r1, [r0]
- ldr r0, [r3]
- adds r0, 0xB1
- ldr r1, [r4]
- ldrb r1, [r1, 0x9]
- strb r1, [r0]
- ldr r1, =gStringBank
- ldr r2, [r4]
- ldrb r0, [r2, 0xA]
- strb r0, [r1]
- ldr r0, [r3]
- adds r0, 0x8E
- ldrb r1, [r2, 0xB]
- strb r1, [r0]
- movs r2, 0
- mov r12, r8
- mov r9, r5
- ldr r1, =gBattleTextBuff1
- mov r10, r1
- ldr r3, =gAbilitiesPerBank
-_0814E126:
- adds r0, r2, r3
- ldr r1, [r4]
- adds r1, 0xC
- adds r1, r2
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x3
- ble _0814E126
- movs r2, 0
- ldr r0, =gBattleTextBuff1
- mov r8, r0
- ldr r3, =gStringInfo
- ldr r5, =gBattleTextBuff2
- ldr r4, =gBattleTextBuff3
-_0814E144:
- mov r0, r8
- adds r1, r2, r0
- ldr r0, [r3]
- adds r0, 0x10
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- adds r1, r2, r5
- ldr r0, [r3]
- adds r0, 0x20
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- adds r1, r2, r4
- ldr r0, [r3]
- adds r0, 0x30
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- adds r2, 0x1
- cmp r2, 0xF
- ble _0814E144
- cmp r6, 0x5
- bls _0814E176
- b _0814E6B8
-_0814E176:
- lsls r0, r6, 2
- ldr r1, =_0814E1B4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0814E1B4:
- .4byte _0814E1CC
- .4byte _0814E2AC
- .4byte _0814E394
- .4byte _0814E430
- .4byte _0814E4F8
- .4byte _0814E55C
-_0814E1CC:
- ldr r0, =gBattleTypeFlags
- ldr r2, [r0]
- movs r0, 0x8
- ands r0, r2
- cmp r0, 0
- beq _0814E26C
- ldr r0, =0x02000002
- ands r0, r2
- cmp r0, 0
- beq _0814E248
- movs r0, 0x80
- lsls r0, 16
- ands r0, r2
- cmp r0, 0
- bne _0814E260
- movs r0, 0x40
- ands r0, r2
- cmp r0, 0
- beq _0814E214
- movs r0, 0x80
- lsls r0, 17
- ands r2, r0
- ldr r7, =gText_TwoTrainersWantToBattle
- cmp r2, 0
- bne _0814E200
- b _0814E6D8
-_0814E200:
- ldr r7, =gText_TwoTrainersWantToBattle3
- b _0814E6D8
- .pool
-_0814E214:
- ldr r0, =gTrainerBattleOpponent_A
- ldrh r1, [r0]
- movs r0, 0xC0
- lsls r0, 4
- cmp r1, r0
- bne _0814E22C
- ldr r7, =gText_TrainerXYWantsToBattle
- b _0814E6D8
- .pool
-_0814E22C:
- movs r0, 0x80
- lsls r0, 17
- ands r2, r0
- ldr r7, =gText_TrainerXWantsToBattle
- cmp r2, 0
- bne _0814E23A
- b _0814E6D8
-_0814E23A:
- ldr r7, =gText_TrainerWantsToBattle
- b _0814E6D8
- .pool
-_0814E248:
- movs r0, 0x80
- lsls r0, 15
- ands r0, r2
- cmp r0, 0
- bne _0814E260
- movs r0, 0x80
- lsls r0, 8
- ands r2, r0
- ldr r7, =gText_TrainerXYWantsToBattle
- cmp r2, 0
- bne _0814E260
- b _0814E6D8
-_0814E260:
- ldr r7, =gText_TwoTrainersWantToBattle2
- b _0814E6D8
- .pool
-_0814E26C:
- movs r0, 0x80
- lsls r0, 6
- ands r0, r2
- cmp r0, 0
- beq _0814E280
- ldr r7, =gText_WildPkmnAppeared2
- b _0814E6D8
- .pool
-_0814E280:
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- beq _0814E290
- ldr r7, =gText_TwoWildPkmnAppeared
- b _0814E6D8
- .pool
-_0814E290:
- movs r0, 0x80
- lsls r0, 2
- ands r2, r0
- ldr r7, =gText_WildPkmnAppeared
- cmp r2, 0
- bne _0814E29E
- b _0814E6D8
-_0814E29E:
- ldr r7, =gText_WildPkmnAppearedPause
- b _0814E6D8
- .pool
-_0814E2AC:
- mov r1, r12
- ldrb r0, [r1]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0814E310
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0814E308
- movs r0, 0x80
- lsls r0, 15
- ands r0, r1
- cmp r0, 0
- beq _0814E2DC
- ldr r7, =gText_TrainerXYSentOutZGoN
- b _0814E6D8
- .pool
-_0814E2DC:
- movs r0, 0x80
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- beq _0814E2F0
- ldr r7, =gText_GoTwoPkmn
- b _0814E6D8
- .pool
-_0814E2F0:
- movs r0, 0x40
- ands r1, r0
- ldr r7, =gText_GoTwoPkmn
- cmp r1, 0
- bne _0814E2FC
- b _0814E6D8
-_0814E2FC:
- ldr r7, =gText_EnemySentOutPkmnGoPkmn
- b _0814E6D8
- .pool
-_0814E308:
- ldr r7, =gText_GoPkmn
- b _0814E6D8
- .pool
-_0814E310:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0814E368
- movs r0, 0x80
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- bne _0814E330
- movs r0, 0x80
- lsls r0, 16
- ands r0, r1
- cmp r0, 0
- beq _0814E33C
-_0814E330:
- ldr r7, =gText_TwoTrainersSentPkmn
- b _0814E6D8
- .pool
-_0814E33C:
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0814E34C
- ldr r7, =gText_TwoTrainersSentOutPkmn
- b _0814E6D8
- .pool
-_0814E34C:
- ldr r0, =0x02000002
- ands r1, r0
- ldr r7, =gText_TrainerXYSentOutTwoPkmn
- cmp r1, 0
- bne _0814E358
- b _0814E6D8
-_0814E358:
- ldr r7, =gText_TrainerXSentOutTwoPkmn
- b _0814E6D8
- .pool
-_0814E368:
- ldr r0, =0x02000002
- ands r1, r0
- cmp r1, 0
- beq _0814E380
- ldr r0, =gTrainerBattleOpponent_A
- ldrh r1, [r0]
- movs r0, 0xC0
- lsls r0, 4
- ldr r7, =gText_TrainerXSentOutPkmn
- cmp r1, r0
- beq _0814E380
- b _0814E6D8
-_0814E380:
- ldr r7, =gText_TrainerXYSentOutPkmn
- b _0814E6D8
- .pool
-_0814E394:
- mov r1, r12
- ldrb r0, [r1]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0814E3EC
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, 0xB1
- ldrb r2, [r0]
- cmp r2, 0
- bne _0814E3BC
- ldr r7, =gText_PkmnThatsEnough
- b _0814E6D8
- .pool
-_0814E3BC:
- cmp r2, 0x1
- beq _0814E3CC
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0814E3D8
-_0814E3CC:
- ldr r7, =gText_PkmnComeBack
- b _0814E6D8
- .pool
-_0814E3D8:
- ldr r7, =gText_PkmnGoodComeBack
- cmp r2, 0x2
- beq _0814E3E0
- b _0814E6D8
-_0814E3E0:
- ldr r7, =gText_PkmnOkComeBack
- b _0814E6D8
- .pool
-_0814E3EC:
- ldr r0, =gTrainerBattleOpponent_A
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 4
- ldr r2, =gBattleTypeFlags
- cmp r1, r0
- beq _0814E406
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 18
- ands r0, r1
- cmp r0, 0
- beq _0814E428
-_0814E406:
- ldr r0, [r2]
- movs r1, 0x40
- ands r0, r1
- ldr r7, =gText_TrainerXWithdrewPkmn
- cmp r0, 0
- bne _0814E414
- b _0814E6D8
-_0814E414:
- ldr r7, =gText_TrainerXWithdrewPkmn2
- b _0814E6D8
- .pool
-_0814E428:
- ldr r7, =gText_TrainerXYWithdrewPkmn
- b _0814E6D8
- .pool
-_0814E430:
- mov r4, r9
- ldrb r0, [r4, 0x17]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0814E488
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, 0xB1
- ldrb r2, [r0]
- cmp r2, 0
- beq _0814E456
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0814E468
-_0814E456:
- ldr r7, =gText_GoPkmn2
- b _0814E6D8
- .pool
-_0814E468:
- cmp r2, 0x1
- bne _0814E474
- ldr r7, =gText_DoItPkmn
- b _0814E6D8
- .pool
-_0814E474:
- ldr r7, =gText_YourFoesWeakGetEmPkmn
- cmp r2, 0x2
- beq _0814E47C
- b _0814E6D8
-_0814E47C:
- ldr r7, =gText_GoForItPkmn
- b _0814E6D8
- .pool
-_0814E488:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- ldr r0, =0x02000002
- ands r0, r1
- cmp r0, 0
- beq _0814E4DC
- movs r0, 0x80
- lsls r0, 16
- ands r0, r1
- cmp r0, 0
- beq _0814E4AC
- ldrb r0, [r4, 0x17]
- b _0814E4EA
- .pool
-_0814E4AC:
- movs r0, 0x40
- ands r1, r0
- cmp r1, 0
- beq _0814E4BC
- ldr r7, =gText_TrainerXSentOutPkmn3
- b _0814E6D8
- .pool
-_0814E4BC:
- ldr r0, =gTrainerBattleOpponent_A
- ldrh r1, [r0]
- movs r0, 0xC0
- lsls r0, 4
- ldr r7, =gText_TrainerXSentOutPkmn2
- cmp r1, r0
- beq _0814E4CC
- b _0814E6D8
-_0814E4CC:
- ldr r7, =gText_TrainerXYSentOutPkmn2
- b _0814E6D8
- .pool
-_0814E4DC:
- movs r0, 0x80
- lsls r0, 8
- ands r1, r0
- cmp r1, 0
- beq _0814E4CC
- mov r1, r9
- ldrb r0, [r1, 0x17]
-_0814E4EA:
- ldr r7, =gText_TrainerXYSentOutPkmn3
- cmp r0, 0x1
- beq _0814E4F2
- b _0814E6D8
-_0814E4F2:
- b _0814E4CC
- .pool
-_0814E4F8:
- mov r0, r10
- bl sub_814F8F8
- ldr r0, =gStringInfo
- ldr r2, [r0]
- ldrh r1, [r2]
- movs r0, 0xB1
- lsls r0, 1
- cmp r1, r0
- bls _0814E534
- ldr r0, =gBattleTextBuff2
- ldr r1, =gBattleStruct
- ldr r1, [r1]
- adds r1, 0x8E
- ldrb r2, [r1]
- lsls r1, r2, 4
- adds r1, r2
- ldr r2, =gText_UnknownMoveTypes
- adds r1, r2
- bl StringCopy
- b _0814E544
- .pool
-_0814E534:
- ldr r0, =gBattleTextBuff2
- ldrh r2, [r2]
- movs r1, 0xD
- muls r1, r2
- ldr r2, =gMoveNames
- adds r1, r2
- bl StringCopy
-_0814E544:
- ldr r0, =gBattleTextBuff2
- bl sub_814F950
- ldr r7, =gText_XUsedY2
- b _0814E6D8
- .pool
-_0814E55C:
- ldr r4, =gBattleTextBuff1
- ldrb r1, [r4]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0814E5C4
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r4]
- mov r1, r12
- ldrb r0, [r1]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0814E58A
- ldrb r1, [r4]
- cmp r1, 0x3
- beq _0814E58A
- movs r0, 0x3
- eors r0, r1
- strb r0, [r4]
-_0814E58A:
- ldr r0, =gBattleTextBuff1
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _0814E5A4
- ldr r7, =gText_GotAwaySafely
- b _0814E6D8
- .pool
-_0814E5A4:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x40
- ands r0, r1
- ldr r7, =gText_WildFled
- cmp r0, 0
- bne _0814E5B4
- b _0814E6D8
-_0814E5B4:
- ldr r7, =gText_TwoWildFled
- b _0814E6D8
- .pool
-_0814E5C4:
- mov r1, r12
- ldrb r0, [r1]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0814E5E0
- ldrb r1, [r4]
- cmp r1, 0x3
- beq _0814E5E0
- movs r0, 0x3
- eors r0, r1
- strb r0, [r4]
-_0814E5E0:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0814E638
- ldr r0, =gBattleTextBuff1
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _0814E628
- cmp r0, 0x2
- bgt _0814E608
- cmp r0, 0x1
- beq _0814E60E
- b _0814E6D8
- .pool
-_0814E608:
- cmp r0, 0x3
- beq _0814E630
- b _0814E6D8
-_0814E60E:
- movs r0, 0x80
- lsls r0, 16
- ands r1, r0
- ldr r7, =gText_PlayerBeatTwo
- cmp r1, 0
- beq _0814E6D8
- ldr r7, =gText_TwoEnemiesDefeated
- b _0814E6D8
- .pool
-_0814E628:
- ldr r7, =gText_PlayerLostToTwo
- b _0814E6D8
- .pool
-_0814E630:
- ldr r7, =gText_PlayerBattledToDrawVsTwo
- b _0814E6D8
- .pool
-_0814E638:
- ldr r0, =gTrainerBattleOpponent_A
- ldrh r1, [r0]
- movs r0, 0xC0
- lsls r0, 4
- cmp r1, r0
- bne _0814E680
- ldr r0, =gBattleTextBuff1
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _0814E670
- cmp r0, 0x2
- bgt _0814E660
- cmp r0, 0x1
- beq _0814E666
- b _0814E6D8
- .pool
-_0814E660:
- cmp r0, 0x3
- beq _0814E678
- b _0814E6D8
-_0814E666:
- ldr r7, =gText_PlayerDefeatedXY
- b _0814E6D8
- .pool
-_0814E670:
- ldr r7, =gText_PlayerLostAgainst2
- b _0814E6D8
- .pool
-_0814E678:
- ldr r7, =gText_PlayerBattledToDraw2
- b _0814E6D8
- .pool
-_0814E680:
- ldr r0, =gBattleTextBuff1
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _0814E6A8
- cmp r0, 0x2
- bgt _0814E698
- cmp r0, 0x1
- beq _0814E69E
- b _0814E6D8
- .pool
-_0814E698:
- cmp r0, 0x3
- beq _0814E6B0
- b _0814E6D8
-_0814E69E:
- ldr r7, =gText_PlayerDefeated
- b _0814E6D8
- .pool
-_0814E6A8:
- ldr r7, =gText_PlayerLostAgainst
- b _0814E6D8
- .pool
-_0814E6B0:
- ldr r7, =gText_PlayerBattledToDraw
- b _0814E6D8
- .pool
-_0814E6B8:
- movs r0, 0xBE
- lsls r0, 1
- cmp r6, r0
- bls _0814E6CC
- ldr r1, =gDisplayedStringBattle
- movs r0, 0xFF
- strb r0, [r1]
- b _0814E6DE
- .pool
-_0814E6CC:
- ldr r1, =gBattleStringsTable
- adds r0, r6, 0
- subs r0, 0xC
- lsls r0, 2
- adds r0, r1
- ldr r7, [r0]
-_0814E6D8:
- adds r0, r7, 0
- bl BattleStringExpandPlaceholdersToDisplayedString
-_0814E6DE:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end BufferStringBattle
-
- thumb_func_start BattleStringExpandPlaceholdersToDisplayedString
-BattleStringExpandPlaceholdersToDisplayedString: @ 814E6F0
- push {lr}
- ldr r1, =gDisplayedStringBattle
- bl BattleStringExpandPlaceholders
- pop {r1}
- bx r1
- .pool
- thumb_func_end BattleStringExpandPlaceholdersToDisplayedString
-
- thumb_func_start AppendStatusString
-AppendStatusString: @ 814E700
- push {r4,r5,lr}
- sub sp, 0x8
- adds r4, r0, 0
- ldr r1, =gUnknown_085CD422
- mov r0, sp
- movs r2, 0x8
- bl memcpy
- mov r2, sp
- movs r3, 0
- b _0814E728
- .pool
-_0814E71C:
- strb r1, [r2]
- adds r4, 0x1
- adds r2, 0x1
- adds r3, 0x1
- cmp r3, 0x7
- bhi _0814E730
-_0814E728:
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _0814E71C
-_0814E730:
- ldr r5, [sp]
- ldr r4, [sp, 0x4]
- movs r3, 0
- ldr r2, =gStatusConditionStringsTable
-_0814E738:
- ldr r1, [r2]
- ldr r0, [r1]
- cmp r5, r0
- bne _0814E750
- ldr r0, [r1, 0x4]
- cmp r4, r0
- bne _0814E750
- ldr r0, [r2, 0x4]
- b _0814E75A
- .pool
-_0814E750:
- adds r2, 0x8
- adds r3, 0x1
- cmp r3, 0x6
- bls _0814E738
- movs r0, 0
-_0814E75A:
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end AppendStatusString
-
- thumb_func_start BattleStringExpandPlaceholders
- BattleStringExpandPlaceholders: @ 814E764
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x20
- mov r9, r0
- mov r8, r1
- movs r6, 0
- movs r4, 0
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 18
- ands r0, r1
- cmp r0, 0
- beq _0814E794
- ldr r0, =gUnknown_0203C7B4
- ldrb r7, [r0]
- b _0814E79C
- .pool
-_0814E794:
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r7, r0, 24
-_0814E79C:
- mov r0, r9
- ldrb r1, [r0]
- bl _0814F620
-_0814E7A4:
- cmp r1, 0xFD
- beq _0814E7AC
- bl _0814F610
-_0814E7AC:
- movs r1, 0x1
- add r9, r1
- mov r2, r9
- ldrb r0, [r2]
- cmp r0, 0x34
- bls _0814E7BC
- bl _0814F5C0
-_0814E7BC:
- lsls r0, 2
- ldr r1, =_0814E7CC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0814E7CC:
- .4byte _0814E8A0
- .4byte _0814E8CE
- .4byte _0814E90A
- .4byte _0814E914
- .4byte _0814E920
- .4byte _0814E92C
- .4byte _0814E960
- .4byte _0814E994
- .4byte _0814E9C8
- .4byte _0814E9FC
- .4byte _0814EA38
- .4byte _0814EA78
- .4byte _0814EAB8
- .4byte _0814EAF8
- .4byte _0814EBB0
- .4byte _0814EC38
- .4byte _0814ECD4
- .4byte _0814ED70
- .4byte _0814EE0C
- .4byte _0814EEA8
- .4byte _0814EF44
- .4byte _0814EF5C
- .4byte _0814EF98
- .4byte _0814F080
- .4byte _0814F088
- .4byte _0814F098
- .4byte _0814F0A8
- .4byte _0814F0B8
- .4byte _0814F0D8
- .4byte _0814F164
- .4byte _0814F220
- .4byte _0814F230
- .4byte _0814F244
- .4byte _0814F258
- .4byte _0814F27C
- .4byte _0814F298
- .4byte _0814F2C0
- .4byte _0814F300
- .4byte _0814F330
- .4byte _0814F3C4
- .4byte _0814F410
- .4byte _0814F418
- .4byte _0814F3E4
- .4byte _0814F3EC
- .4byte _0814F43C
- .4byte _0814F444
- .4byte _0814F468
- .4byte _0814F4B8
- .4byte _0814F508
- .4byte _0814F548
- .4byte _0814F594
- .4byte _0814F5B4
- .4byte _0814E8E4
-_0814E8A0:
- ldr r5, =gBattleTextBuff1
- ldrb r0, [r5]
- cmp r0, 0xFD
- bne _0814E8B8
- ldr r4, =gStringVar1
- adds r0, r5, 0
- b _0814E8F0
- .pool
-_0814E8B8:
- adds r0, r5, 0
- bl AppendStatusString
- adds r4, r0, 0
- cmp r4, 0
- beq _0814E8C8
- bl _0814F5C0
-_0814E8C8:
- adds r4, r5, 0
- bl _0814F5C0
-_0814E8CE:
- ldr r1, =gBattleTextBuff2
- ldrb r0, [r1]
- cmp r0, 0xFD
- bne _0814E904
- ldr r4, =gStringVar2
- b _0814E8EE
- .pool
-_0814E8E4:
- ldr r1, =gBattleTextBuff3
- ldrb r0, [r1]
- cmp r0, 0xFD
- bne _0814E904
- ldr r4, =gStringVar3
-_0814E8EE:
- adds r0, r1, 0
-_0814E8F0:
- adds r1, r4, 0
- bl ExpandBattleTextBuffPlaceholders
- bl _0814F5C0
- .pool
-_0814E904:
- adds r4, r1, 0
- bl _0814F5C0
-_0814E90A:
- ldr r4, =gStringVar1
- bl _0814F5C0
- .pool
-_0814E914:
- ldr r4, =gStringVar2
- bl _0814F5C0
- .pool
-_0814E920:
- ldr r4, =gStringVar3
- bl _0814F5C0
- .pool
-_0814E92C:
- movs r0, 0
- bl GetBankByIdentity
- ldr r1, =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- bl _0814F5BE
- .pool
-_0814E960:
- movs r0, 0x1
- bl GetBankByIdentity
- ldr r1, =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- bl _0814F5BE
- .pool
-_0814E994:
- movs r0, 0x2
- bl GetBankByIdentity
- ldr r1, =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- bl _0814F5BE
- .pool
-_0814E9C8:
- movs r0, 0x3
- bl GetBankByIdentity
- ldr r1, =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- bl _0814F5BE
- .pool
-_0814E9FC:
- ldr r2, =gBattlePartyID
- ldr r1, =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r1
- ldrh r0, [r0, 0x18]
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- bl _0814F5BE
- .pool
-_0814EA38:
- ldr r2, =gBattlePartyID
- ldr r1, =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r1
- ldrh r1, [r0, 0x18]
- movs r0, 0x1
- eors r0, r1
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- bl _0814F5BE
- .pool
-_0814EA78:
- ldr r2, =gBattlePartyID
- ldr r1, =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r1
- ldrh r1, [r0, 0x18]
- movs r0, 0x2
- eors r0, r1
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- bl _0814F5BE
- .pool
-_0814EAB8:
- ldr r2, =gBattlePartyID
- ldr r1, =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r1
- ldrh r1, [r0, 0x18]
- movs r0, 0x3
- eors r0, r1
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- bl _0814F5BE
- .pool
-_0814EAF8:
- ldr r4, =gBankAttacker
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- adds r2, r4, 0
- cmp r0, 0
- beq _0814EB74
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x8
- ands r1, r0
- ldr r4, =gText_WildPkmnPrefix
- cmp r1, 0
- beq _0814EB36
- ldr r4, =gText_FoePkmnPrefix
- b _0814EB36
- .pool
-_0814EB2C:
- mov r3, r8
- adds r0, r3, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
-_0814EB36:
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _0814EB2C
- ldrb r0, [r2]
- bl GetBankIdentity
- adds r1, r0, 0
- movs r0, 0x1
- ands r0, r1
- bl GetBankByIdentity
- ldr r1, =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- b _0814EB9E
- .pool
-_0814EB74:
- ldrb r0, [r2]
- bl GetBankIdentity
- adds r1, r0, 0
- movs r0, 0x1
- ands r0, r1
- bl GetBankByIdentity
- ldr r1, =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
-_0814EB9E:
- mov r0, sp
- bl StringGetEnd10
- bl _0814F5BE
- .pool
-_0814EBB0:
- ldr r4, =gBankAttacker
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0814EBF8
- ldrb r0, [r4]
- bl GetBankIdentity
- adds r1, r0, 0
- movs r0, 0x1
- ands r0, r1
- bl GetBankByIdentity
- ldr r1, =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, 0x4
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- b _0814EC24
- .pool
-_0814EBF8:
- ldrb r0, [r4]
- bl GetBankIdentity
- adds r1, r0, 0
- movs r0, 0x1
- ands r0, r1
- bl GetBankByIdentity
- ldr r1, =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, 0x4
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
-_0814EC24:
- mov r0, sp
- bl StringGetEnd10
- bl _0814F5BE
- .pool
-_0814EC38:
- ldr r5, =gBankAttacker
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _0814ECA8
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x8
- ands r1, r0
- ldr r4, =gText_WildPkmnPrefix
- cmp r1, 0
- beq _0814EC56
- ldr r4, =gText_FoePkmnPrefix
-_0814EC56:
- ldrb r1, [r4]
- adds r0, r1, 0
- ldr r3, =gBattlePartyID
- ldr r2, =gEnemyParty
- mov r12, r2
- adds r2, r5, 0
- cmp r0, 0xFF
- beq _0814EC78
-_0814EC66:
- mov r5, r8
- adds r0, r5, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _0814EC66
-_0814EC78:
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r3
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- add r0, r12
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- b _0814ECC2
- .pool
-_0814ECA8:
- ldr r1, =gBattlePartyID
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
-_0814ECC2:
- mov r0, sp
- bl StringGetEnd10
- bl _0814F5BE
- .pool
-_0814ECD4:
- ldr r5, =gBankTarget
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _0814ED44
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x8
- ands r1, r0
- ldr r4, =gText_WildPkmnPrefix
- cmp r1, 0
- beq _0814ECF2
- ldr r4, =gText_FoePkmnPrefix
-_0814ECF2:
- ldrb r1, [r4]
- adds r0, r1, 0
- ldr r3, =gBattlePartyID
- ldr r2, =gEnemyParty
- mov r12, r2
- adds r2, r5, 0
- cmp r0, 0xFF
- beq _0814ED14
-_0814ED02:
- mov r5, r8
- adds r0, r5, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _0814ED02
-_0814ED14:
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r3
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- add r0, r12
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- b _0814ED5E
- .pool
-_0814ED44:
- ldr r1, =gBattlePartyID
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
-_0814ED5E:
- mov r0, sp
- bl StringGetEnd10
- bl _0814F5BE
- .pool
-_0814ED70:
- ldr r5, =gEffectBank
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _0814EDE0
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x8
- ands r1, r0
- ldr r4, =gText_WildPkmnPrefix
- cmp r1, 0
- beq _0814ED8E
- ldr r4, =gText_FoePkmnPrefix
-_0814ED8E:
- ldrb r1, [r4]
- adds r0, r1, 0
- ldr r3, =gBattlePartyID
- ldr r2, =gEnemyParty
- mov r12, r2
- adds r2, r5, 0
- cmp r0, 0xFF
- beq _0814EDB0
-_0814ED9E:
- mov r5, r8
- adds r0, r5, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _0814ED9E
-_0814EDB0:
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r3
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- add r0, r12
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- b _0814EDFA
- .pool
-_0814EDE0:
- ldr r1, =gBattlePartyID
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
-_0814EDFA:
- mov r0, sp
- bl StringGetEnd10
- bl _0814F5BE
- .pool
-_0814EE0C:
- ldr r5, =gActiveBank
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _0814EE7C
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x8
- ands r1, r0
- ldr r4, =gText_WildPkmnPrefix
- cmp r1, 0
- beq _0814EE2A
- ldr r4, =gText_FoePkmnPrefix
-_0814EE2A:
- ldrb r1, [r4]
- adds r0, r1, 0
- ldr r3, =gBattlePartyID
- ldr r2, =gEnemyParty
- mov r12, r2
- adds r2, r5, 0
- cmp r0, 0xFF
- beq _0814EE4C
-_0814EE3A:
- mov r5, r8
- adds r0, r5, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _0814EE3A
-_0814EE4C:
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r3
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- add r0, r12
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- b _0814EE96
- .pool
-_0814EE7C:
- ldr r1, =gBattlePartyID
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
-_0814EE96:
- mov r0, sp
- bl StringGetEnd10
- b _0814F5BE
- .pool
-_0814EEA8:
- ldr r5, =gBattleScripting
- ldrb r0, [r5, 0x17]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _0814EF18
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x8
- ands r1, r0
- ldr r4, =gText_WildPkmnPrefix
- cmp r1, 0
- beq _0814EEC6
- ldr r4, =gText_FoePkmnPrefix
-_0814EEC6:
- ldrb r1, [r4]
- adds r0, r1, 0
- ldr r3, =gBattlePartyID
- ldr r2, =gEnemyParty
- mov r12, r2
- adds r2, r5, 0
- cmp r0, 0xFF
- beq _0814EEE8
-_0814EED6:
- mov r5, r8
- adds r0, r5, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _0814EED6
-_0814EEE8:
- ldrb r0, [r2, 0x17]
- lsls r0, 1
- adds r0, r3
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- add r0, r12
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- b _0814EF32
- .pool
-_0814EF18:
- ldr r1, =gBattlePartyID
- ldrb r0, [r5, 0x17]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
-_0814EF32:
- mov r0, sp
- bl StringGetEnd10
- b _0814F5BE
- .pool
-_0814EF44:
- ldr r0, =gStringInfo
- ldr r2, [r0]
- ldrh r1, [r2]
- movs r0, 0xB1
- lsls r0, 1
- cmp r1, r0
- bhi _0814EF6A
- ldrh r1, [r2]
- b _0814EF8A
- .pool
-_0814EF5C:
- ldr r0, =gStringInfo
- ldr r2, [r0]
- ldrh r1, [r2, 0x2]
- movs r0, 0xB1
- lsls r0, 1
- cmp r1, r0
- bls _0814EF88
-_0814EF6A:
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, 0x8E
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- ldr r1, =gText_UnknownMoveTypes
- adds r4, r0, r1
- b _0814F5C0
- .pool
-_0814EF88:
- ldrh r1, [r2, 0x2]
-_0814EF8A:
- movs r0, 0xD
- muls r1, r0
- ldr r0, =gMoveNames
- adds r4, r1, r0
- b _0814F5C0
- .pool
-_0814EF98:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- ldr r0, =0x02000002
- ands r0, r1
- cmp r0, 0
- beq _0814F06E
- ldr r2, =gLastUsedItem
- ldrh r0, [r2]
- cmp r0, 0xAF
- bne _0814F064
- movs r0, 0x40
- ands r1, r0
- cmp r1, 0
- bne _0814F014
- ldr r0, =gBattleScripting
- adds r0, 0x25
- ldrb r0, [r0]
- cmp r0, 0
- beq _0814EFE0
- ldr r2, =gStringBank
- ldrb r1, [r2]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0814EFEC
- b _0814F05C
- .pool
-_0814EFE0:
- ldr r2, =gStringBank
- ldrb r1, [r2]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0814F05C
-_0814EFEC:
- ldrb r0, [r2]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- ldr r0, =gEnigmaBerries
- adds r1, r0
- mov r0, sp
- bl StringCopy
- ldr r1, =gText_BerrySuffix
- mov r0, sp
- bl StringAppend
- b _0814F5BE
- .pool
-_0814F014:
- ldr r2, =gLinkPlayers
- ldr r0, =gBattleScripting
- adds r0, 0x25
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, =gStringBank
- ldrb r2, [r1]
- ldrh r0, [r0, 0x18]
- cmp r0, r2
- bne _0814F05C
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- ldr r0, =gEnigmaBerries
- adds r1, r0
- mov r0, sp
- bl StringCopy
- ldr r1, =gText_BerrySuffix
- mov r0, sp
- bl StringAppend
- b _0814F5BE
- .pool
-_0814F05C:
- ldr r4, =gText_EnigmaBerry
- b _0814F5C0
- .pool
-_0814F064:
- ldrh r0, [r2]
- mov r1, sp
- bl CopyItemName
- b _0814F5BE
-_0814F06E:
- ldr r0, =gLastUsedItem
- ldrh r0, [r0]
- mov r1, sp
- bl CopyItemName
- b _0814F5BE
- .pool
-_0814F080:
- ldr r0, =gLastUsedAbility
- b _0814F0C0
- .pool
-_0814F088:
- ldr r1, =gAbilitiesPerBank
- ldr r0, =gBankAttacker
- b _0814F0BC
- .pool
-_0814F098:
- ldr r1, =gAbilitiesPerBank
- ldr r0, =gBankTarget
- b _0814F0BC
- .pool
-_0814F0A8:
- ldr r1, =gAbilitiesPerBank
- ldr r0, =gBattleScripting
- ldrb r0, [r0, 0x17]
- b _0814F0BE
- .pool
-_0814F0B8:
- ldr r1, =gAbilitiesPerBank
- ldr r0, =gEffectBank
-_0814F0BC:
- ldrb r0, [r0]
-_0814F0BE:
- adds r0, r1
-_0814F0C0:
- ldrb r1, [r0]
- movs r0, 0xD
- muls r1, r0
- ldr r0, =gAbilityNames
- adds r4, r1, r0
- b _0814F5C0
- .pool
-_0814F0D8:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 20
- ands r0, r1
- cmp r0, 0
- beq _0814F0F0
- bl GetSecretBaseTrainerNameIndex
- b _0814F59C
- .pool
-_0814F0F0:
- ldr r3, =gTrainerBattleOpponent_A
- ldrh r2, [r3]
- movs r0, 0xC0
- lsls r0, 4
- cmp r2, r0
- bne _0814F10C
- bl sub_8068BB0
- lsls r0, 16
- lsrs r0, 16
- b _0814F5A0
- .pool
-_0814F10C:
- ldr r0, =0x000003fe
- cmp r2, r0
- bne _0814F11C
- bl sub_81A4D00
- b _0814F59C
- .pool
-_0814F11C:
- ldr r0, =0x003f0100
- ands r0, r1
- cmp r0, 0
- beq _0814F12C
- ldrh r0, [r3]
- b _0814F598
- .pool
-_0814F12C:
- movs r0, 0x80
- lsls r0, 19
- ands r0, r1
- cmp r0, 0
- beq _0814F13E
- ldrh r0, [r3]
- bl sub_81D5530
- b _0814F59C
-_0814F13E:
- movs r0, 0x80
- lsls r0, 4
- ands r1, r0
- cmp r1, 0
- beq _0814F14E
- bl sub_8165264
- b _0814F59C
-_0814F14E:
- ldr r2, =gTrainers
- ldrh r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrb r1, [r0, 0x1]
- movs r0, 0xD
- b _0814F5A2
- .pool
-_0814F164:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 20
- ands r0, r1
- cmp r0, 0
- beq _0814F1AC
- movs r2, 0
- ldr r4, =gBattleResources
- ldr r3, [r4]
-_0814F178:
- mov r1, sp
- adds r0, r1, r2
- ldr r1, [r3]
- adds r1, 0x2
- adds r1, r2
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x6
- ble _0814F178
- mov r3, sp
- adds r1, r3, r2
- movs r0, 0xFF
- strb r0, [r1]
- ldr r0, [r4]
- ldr r0, [r0]
- ldrb r1, [r0, 0xD]
- mov r0, sp
- bl ConvertInternationalString
- b _0814F5BE
- .pool
-_0814F1AC:
- ldr r3, =gTrainerBattleOpponent_A
- ldrh r2, [r3]
- movs r0, 0xC0
- lsls r0, 4
- cmp r2, r0
- bne _0814F1C4
- movs r1, 0x1
- adds r0, r7, 0
- eors r0, r1
- b _0814F284
- .pool
-_0814F1C4:
- ldr r0, =0x000003fe
- cmp r2, r0
- bne _0814F1D8
- mov r0, sp
- bl sub_81A4D50
- b _0814F5BE
- .pool
-_0814F1D8:
- ldr r0, =0x003f0100
- ands r0, r1
- cmp r0, 0
- beq _0814F1E8
- ldrh r1, [r3]
- b _0814F5B8
- .pool
-_0814F1E8:
- movs r0, 0x80
- lsls r0, 19
- ands r0, r1
- cmp r0, 0
- beq _0814F1FC
- ldrh r1, [r3]
- mov r0, sp
- bl sub_81D5554
- b _0814F5BE
-_0814F1FC:
- movs r0, 0x80
- lsls r0, 4
- ands r1, r0
- cmp r1, 0
- beq _0814F20E
- mov r0, sp
- bl sub_8165284
- b _0814F5BE
-_0814F20E:
- ldrh r0, [r3]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, =gTrainers + 0x4 @ name offset
- adds r4, r1, r0
- b _0814F5C0
- .pool
-_0814F220:
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- ldr r1, =gLinkPlayers + 8
- adds r4, r0, r1
- b _0814F5C0
- .pool
-_0814F230:
- ldr r4, =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x18]
- movs r0, 0x2
- b _0814F266
- .pool
-_0814F244:
- ldr r4, =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x18]
- movs r0, 0x1
- b _0814F266
- .pool
-_0814F258:
- ldr r4, =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x18]
- movs r0, 0x3
-_0814F266:
- eors r0, r1
- bl sub_806D864
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r4, 0x8
- adds r4, r1, r4
- b _0814F5C0
- .pool
-_0814F27C:
- ldr r0, =gBattleScripting
- ldrb r0, [r0, 0x17]
- bl sub_806D864
-_0814F284:
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- ldr r0, =gLinkPlayers + 8
- adds r4, r1, r0
- b _0814F5C0
- .pool
-_0814F298:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 17
- ands r0, r1
- cmp r0, 0
- beq _0814F2B4
- ldr r4, =gLinkPlayers + 8
- b _0814F5C0
- .pool
-_0814F2B4:
- ldr r0, =gSaveBlock2Ptr
- ldr r4, [r0]
- b _0814F5C0
- .pool
-_0814F2C0:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- ldr r0, =0x003f0100
- ands r0, r1
- cmp r0, 0
- beq _0814F2E0
- ldr r0, =gTrainerBattleOpponent_A
- ldrh r1, [r0]
- movs r0, 0x2
- b _0814F55A
- .pool
-_0814F2E0:
- movs r0, 0x80
- lsls r0, 19
- ands r1, r0
- cmp r1, 0
- beq _0814F2F8
- ldr r0, =gTrainerBattleOpponent_A
- ldrh r1, [r0]
- movs r0, 0x4
- b _0814F584
- .pool
-_0814F2F8:
- bl sub_80B1CA4
- adds r4, r0, 0
- b _0814F5C0
-_0814F300:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- ldr r0, =0x003f0100
- ands r0, r1
- cmp r0, 0
- beq _0814F31C
- ldr r0, =gTrainerBattleOpponent_A
- b _0814F556
- .pool
-_0814F31C:
- movs r0, 0x80
- lsls r0, 19
- ands r1, r0
- cmp r1, 0
- bne _0814F328
- b _0814F5C0
-_0814F328:
- ldr r0, =gTrainerBattleOpponent_A
- b _0814F580
- .pool
-_0814F330:
- ldr r0, =gBattleScripting
- ldrb r0, [r0, 0x17]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _0814F39C
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x8
- ands r1, r0
- ldr r4, =gText_WildPkmnPrefix
- cmp r1, 0
- beq _0814F34E
- ldr r4, =gText_FoePkmnPrefix
-_0814F34E:
- ldrb r1, [r4]
- adds r0, r1, 0
- ldr r5, =gEnemyParty
- mov r12, r5
- ldr r2, =gBattleStruct
- cmp r0, 0xFF
- beq _0814F36E
-_0814F35C:
- mov r3, r8
- adds r0, r3, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _0814F35C
-_0814F36E:
- ldr r0, [r2]
- adds r0, 0x52
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- add r0, r12
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- b _0814F3B4
- .pool
-_0814F39C:
- ldr r0, =gBattleStruct
- ldr r0, [r0]
- adds r0, 0x52
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
-_0814F3B4:
- mov r0, sp
- bl StringGetEnd10
- b _0814F5BE
- .pool
-_0814F3C4:
- ldr r0, =0x000008ab
- bl FlagGet
- lsls r0, 24
- ldr r4, =gText_Someones
- cmp r0, 0
- bne _0814F3D4
- b _0814F5C0
-_0814F3D4:
- ldr r4, =gText_Lanettes
- b _0814F5C0
- .pool
-_0814F3E4:
- ldr r0, =gBankAttacker
- b _0814F3EE
- .pool
-_0814F3EC:
- ldr r0, =gBankTarget
-_0814F3EE:
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- ldr r4, =gText_FoePkmnPrefix3
- cmp r0, 0
- beq _0814F3FE
- b _0814F5C0
-_0814F3FE:
- ldr r4, =gText_AllyPkmnPrefix2
- b _0814F5C0
- .pool
-_0814F410:
- ldr r0, =gBankAttacker
- b _0814F41A
- .pool
-_0814F418:
- ldr r0, =gBankTarget
-_0814F41A:
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- ldr r4, =gText_FoePkmnPrefix2
- cmp r0, 0
- beq _0814F42A
- b _0814F5C0
-_0814F42A:
- ldr r4, =gText_AllyPkmnPrefix
- b _0814F5C0
- .pool
-_0814F43C:
- ldr r0, =gBankAttacker
- b _0814F446
- .pool
-_0814F444:
- ldr r0, =gBankTarget
-_0814F446:
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- ldr r4, =gText_FoePkmnPrefix4
- cmp r0, 0
- beq _0814F456
- b _0814F5C0
-_0814F456:
- ldr r4, =gText_AllyPkmnPrefix3
- b _0814F5C0
- .pool
-_0814F468:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- ldr r0, =0x003f0100
- ands r0, r1
- cmp r0, 0
- beq _0814F484
- ldr r0, =gTrainerBattleOpponent_B
- b _0814F596
- .pool
-_0814F484:
- movs r0, 0x80
- lsls r0, 19
- ands r1, r0
- cmp r1, 0
- beq _0814F49C
- ldr r0, =gTrainerBattleOpponent_B
- ldrh r0, [r0]
- bl sub_81D5530
- b _0814F59C
- .pool
-_0814F49C:
- ldr r2, =gTrainers
- ldr r0, =gTrainerBattleOpponent_B
- ldrh r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrb r1, [r0, 0x1]
- movs r0, 0xD
- b _0814F5A2
- .pool
-_0814F4B8:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- ldr r0, =0x003f0100
- ands r0, r1
- cmp r0, 0
- beq _0814F4D4
- ldr r0, =gTrainerBattleOpponent_B
- b _0814F5B6
- .pool
-_0814F4D4:
- movs r0, 0x80
- lsls r0, 19
- ands r1, r0
- cmp r1, 0
- beq _0814F4F0
- ldr r0, =gTrainerBattleOpponent_B
- ldrh r1, [r0]
- mov r0, sp
- bl sub_81D5554
- b _0814F5BE
- .pool
-_0814F4F0:
- ldr r0, =gTrainerBattleOpponent_B
- ldrh r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- ldr r1, =gTrainers + 0x4 @ name offset
- adds r4, r0, r1
- b _0814F5C0
- .pool
-_0814F508:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- ldr r0, =0x003f0100
- ands r0, r1
- cmp r0, 0
- beq _0814F528
- ldr r0, =gTrainerBattleOpponent_B
- ldrh r1, [r0]
- movs r0, 0x2
- b _0814F55A
- .pool
-_0814F528:
- movs r0, 0x80
- lsls r0, 19
- ands r1, r0
- cmp r1, 0
- beq _0814F540
- ldr r0, =gTrainerBattleOpponent_B
- ldrh r1, [r0]
- movs r0, 0x4
- b _0814F584
- .pool
-_0814F540:
- bl sub_80B1CE0
- adds r4, r0, 0
- b _0814F5C0
-_0814F548:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- ldr r0, =0x003f0100
- ands r0, r1
- cmp r0, 0
- beq _0814F574
- ldr r0, =gTrainerBattleOpponent_B
-_0814F556:
- ldrh r1, [r0]
- movs r0, 0x1
-_0814F55A:
- bl sub_81A36D0
- ldr r4, =gStringVar4
- b _0814F5C0
- .pool
-_0814F574:
- movs r0, 0x80
- lsls r0, 19
- ands r1, r0
- cmp r1, 0
- beq _0814F5C0
- ldr r0, =gTrainerBattleOpponent_B
-_0814F580:
- ldrh r1, [r0]
- movs r0, 0x3
-_0814F584:
- bl sub_81D572C
- ldr r4, =gStringVar4
- b _0814F5C0
- .pool
-_0814F594:
- ldr r0, =gPartnerTrainerId
-_0814F596:
- ldrh r0, [r0]
-_0814F598:
- bl GetFrontierOpponentClass
-_0814F59C:
- lsls r0, 24
- lsrs r0, 24
-_0814F5A0:
- movs r1, 0xD
-_0814F5A2:
- muls r1, r0
- ldr r0, =gTrainerClassNames
- adds r4, r1, r0
- b _0814F5C0
- .pool
-_0814F5B4:
- ldr r0, =gPartnerTrainerId
-_0814F5B6:
- ldrh r1, [r0]
-_0814F5B8:
- mov r0, sp
- bl GetFrontierTrainerName
-_0814F5BE:
- mov r4, sp
-_0814F5C0:
- ldrb r1, [r4]
- adds r0, r1, 0
- mov r5, r9
- ldrb r2, [r5]
- mov r3, r9
- adds r3, 0x1
- cmp r0, 0xFF
- beq _0814F5E2
-_0814F5D0:
- mov r5, r8
- adds r0, r5, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _0814F5D0
-_0814F5E2:
- lsls r0, r2, 24
- lsrs r0, 24
- cmp r0, 0x24
- beq _0814F5F6
- cmp r0, 0x30
- beq _0814F5F6
- cmp r0, 0x25
- beq _0814F5F6
- cmp r0, 0x31
- bne _0814F61C
-_0814F5F6:
- mov r0, r8
- adds r1, r0, r6
- movs r0, 0xFC
- strb r0, [r1]
- adds r6, 0x1
- mov r2, r8
- adds r1, r2, r6
- movs r0, 0x9
- strb r0, [r1]
- adds r6, 0x1
- b _0814F61C
- .pool
-_0814F610:
- mov r3, r8
- adds r0, r3, r6
- strb r1, [r0]
- adds r6, 0x1
- mov r3, r9
- adds r3, 0x1
-_0814F61C:
- mov r9, r3
- ldrb r1, [r3]
-_0814F620:
- adds r0, r1, 0
- cmp r0, 0xFF
- beq _0814F62A
- bl _0814E7A4
-_0814F62A:
- mov r5, r8
- adds r1, r5, r6
- mov r2, r9
- ldrb r0, [r2]
- strb r0, [r1]
- adds r6, 0x1
- adds r0, r6, 0
- add sp, 0x20
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end BattleStringExpandPlaceholders
-
- thumb_func_start ExpandBattleTextBuffPlaceholders
-ExpandBattleTextBuffPlaceholders: @ 814F648
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- adds r7, r0, 0
- adds r6, r1, 0
- movs r5, 0x1
- movs r0, 0
- mov r8, r0
- movs r0, 0xFF
- strb r0, [r6]
- ldrb r0, [r7, 0x1]
- cmp r0, 0xFF
- bne _0814F666
- b _0814F8EA
-_0814F666:
- adds r0, r7, r5
- ldrb r1, [r0]
- adds r4, r0, 0
- cmp r1, 0xA
- bls _0814F672
- b _0814F8E0
-_0814F672:
- lsls r0, r1, 2
- ldr r1, =_0814F680
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0814F680:
- .4byte _0814F6AC
- .4byte _0814F6C8
- .4byte _0814F71C
- .4byte _0814F734
- .4byte _0814F744
- .4byte _0814F7BC
- .4byte _0814F7D0
- .4byte _0814F7E2
- .4byte _0814F828
- .4byte _0814F83C
- .4byte _0814F858
-_0814F6AC:
- adds r0, r5, r7
- ldrb r1, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldr r0, =gBattleStringsTable
- subs r1, 0xC
- lsls r1, 2
- adds r1, r0
- ldr r1, [r1]
- b _0814F8BE
- .pool
-_0814F6C8:
- ldrb r0, [r4, 0x1]
- cmp r0, 0x2
- beq _0814F6E4
- cmp r0, 0x2
- bgt _0814F6D8
- cmp r0, 0x1
- beq _0814F6DE
- b _0814F706
-_0814F6D8:
- cmp r0, 0x4
- beq _0814F6EC
- b _0814F706
-_0814F6DE:
- ldrb r4, [r4, 0x3]
- mov r8, r4
- b _0814F706
-_0814F6E4:
- ldrb r1, [r4, 0x3]
- ldrb r0, [r4, 0x4]
- lsls r0, 8
- b _0814F702
-_0814F6EC:
- ldrb r0, [r4, 0x3]
- mov r8, r0
- ldrb r0, [r4, 0x4]
- lsls r0, 8
- mov r1, r8
- orrs r1, r0
- ldrb r0, [r4, 0x5]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r4, 0x6]
- lsls r0, 24
-_0814F702:
- orrs r1, r0
- mov r8, r1
-_0814F706:
- adds r4, r5, r7
- ldrb r3, [r4, 0x2]
- adds r0, r6, 0
- mov r1, r8
- movs r2, 0
- bl ConvertIntToDecimalStringN
- adds r0, r5, 0x3
- ldrb r4, [r4, 0x1]
- adds r5, r0, r4
- b _0814F8E0
-_0814F71C:
- adds r0, r5, r7
- ldrb r1, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r1, r0
- movs r0, 0xD
- muls r1, r0
- ldr r0, =gMoveNames
- adds r1, r0
- b _0814F8BE
- .pool
-_0814F734:
- adds r0, r5, r7
- ldrb r0, [r0, 0x1]
- lsls r1, r0, 3
- subs r1, r0
- ldr r0, =gTypeNames
- b _0814F846
- .pool
-_0814F744:
- ldrb r0, [r4, 0x1]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0814F768
- ldrb r1, [r4, 0x2]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- b _0814F7A4
- .pool
-_0814F768:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0814F788
- ldr r1, =gText_FoePkmnPrefix
- adds r0, r6, 0
- bl StringAppend
- b _0814F790
- .pool
-_0814F788:
- ldr r1, =gText_WildPkmnPrefix
- adds r0, r6, 0
- bl StringAppend
-_0814F790:
- adds r0, r5, r7
- ldrb r1, [r0, 0x2]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
-_0814F7A4:
- mov r0, sp
- bl StringGetEnd10
- adds r0, r6, 0
- mov r1, sp
- bl StringAppend
- b _0814F8DE
- .pool
-_0814F7BC:
- ldr r1, =gStatNamesTable
- adds r0, r5, r7
- ldrb r0, [r0, 0x1]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- b _0814F848
- .pool
-_0814F7D0:
- adds r0, r5, r7
- ldrb r1, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r1, r0
- adds r0, r6, 0
- bl GetSpeciesName
- b _0814F8DE
-_0814F7E2:
- adds r4, r5, r7
- ldrb r0, [r4, 0x1]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0814F808
- ldrb r1, [r4, 0x2]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- adds r2, r6, 0
- bl GetMonData
- b _0814F81A
- .pool
-_0814F808:
- ldrb r1, [r4, 0x2]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- adds r2, r6, 0
- bl GetMonData
-_0814F81A:
- adds r0, r6, 0
- bl StringGetEnd10
- b _0814F8DE
- .pool
-_0814F828:
- ldr r1, =gPokeblockWasTooXStringTable
- adds r0, r5, r7
- ldrb r0, [r0, 0x1]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- b _0814F848
- .pool
-_0814F83C:
- adds r0, r5, r7
- ldrb r1, [r0, 0x1]
- movs r0, 0xD
- muls r1, r0
- ldr r0, =gAbilityNames
-_0814F846:
- adds r1, r0
-_0814F848:
- adds r0, r6, 0
- bl StringAppend
- adds r5, 0x2
- b _0814F8E0
- .pool
-_0814F858:
- adds r0, r5, r7
- ldrb r2, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r2, r0
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- ldr r1, =0x02000002
- ands r0, r1
- cmp r0, 0
- beq _0814F8D6
- cmp r2, 0xAF
- bne _0814F8CC
- ldr r2, =gLinkPlayers
- ldr r0, =gBattleScripting
- adds r0, 0x25
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, =gStringBank
- ldrb r2, [r1]
- ldrh r0, [r0, 0x18]
- cmp r0, r2
- bne _0814F8BC
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- ldr r0, =gEnigmaBerries
- adds r1, r0
- adds r0, r6, 0
- bl StringCopy
- ldr r1, =gText_BerrySuffix
- b _0814F8BE
- .pool
-_0814F8BC:
- ldr r1, =gText_EnigmaBerry
-_0814F8BE:
- adds r0, r6, 0
- bl StringAppend
- b _0814F8DE
- .pool
-_0814F8CC:
- adds r0, r2, 0
- adds r1, r6, 0
- bl CopyItemName
- b _0814F8DE
-_0814F8D6:
- adds r0, r2, 0
- adds r1, r6, 0
- bl CopyItemName
-_0814F8DE:
- adds r5, 0x3
-_0814F8E0:
- adds r0, r7, r5
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _0814F8EA
- b _0814F666
-_0814F8EA:
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end ExpandBattleTextBuffPlaceholders
-
- thumb_func_start sub_814F8F8
-sub_814F8F8: @ 814F8F8
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r2, 0
- ldr r5, =gStringInfo
- ldr r3, =gUnknown_085CD336
-_0814F902:
- cmp r2, 0x4
- beq _0814F918
- ldrh r1, [r3]
- cmp r1, 0
- bne _0814F90E
- adds r2, 0x1
-_0814F90E:
- ldr r0, [r5]
- adds r3, 0x2
- ldrh r0, [r0]
- cmp r1, r0
- bne _0814F902
-_0814F918:
- cmp r2, 0
- blt _0814F944
- cmp r2, 0x2
- bgt _0814F938
- ldr r1, =gText_SpaceIs
- adds r0, r4, 0
- bl StringCopy
- b _0814F944
- .pool
-_0814F938:
- cmp r2, 0x4
- bgt _0814F944
- ldr r1, =gText_ApostropheS
- adds r0, r4, 0
- bl StringCopy
-_0814F944:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_814F8F8
-
- thumb_func_start sub_814F950
-sub_814F950: @ 814F950
- push {r4,r5,lr}
- adds r3, r0, 0
- movs r4, 0
- b _0814F95A
-_0814F958:
- adds r3, 0x1
-_0814F95A:
- ldrb r0, [r3]
- cmp r0, 0xFF
- bne _0814F958
- ldr r1, =gUnknown_085CD336
- ldr r5, =gStringInfo
- movs r0, 0
- lsls r0, 1
- adds r2, r0, r1
-_0814F96A:
- cmp r4, 0x4
- beq _0814F984
- ldrh r1, [r2]
- cmp r1, 0
- bne _0814F976
- adds r4, 0x1
-_0814F976:
- ldr r0, [r5]
- adds r2, 0x2
- ldrh r0, [r0]
- cmp r1, r0
- bne _0814F96A
- cmp r4, 0x4
- bhi _0814F9E0
-_0814F984:
- lsls r0, r4, 2
- ldr r1, =_0814F99C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_0814F99C:
- .4byte _0814F9B0
- .4byte _0814F9B8
- .4byte _0814F9C0
- .4byte _0814F9C8
- .4byte _0814F9D8
-_0814F9B0:
- ldr r1, =gText_ExclamationMark
- b _0814F9CA
- .pool
-_0814F9B8:
- ldr r1, =gText_ExclamationMark2
- b _0814F9CA
- .pool
-_0814F9C0:
- ldr r1, =gText_ExclamationMark3
- b _0814F9CA
- .pool
-_0814F9C8:
- ldr r1, =gText_ExclamationMark4
-_0814F9CA:
- adds r0, r3, 0
- bl StringCopy
- b _0814F9E0
- .pool
-_0814F9D8:
- ldr r1, =gText_ExclamationMark5
- adds r0, r3, 0
- bl StringCopy
-_0814F9E0:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_814F950
-
- thumb_func_start sub_814F9EC
-sub_814F9EC: @ 814F9EC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x10
- adds r4, r0, 0
- lsls r1, 24
- lsrs r7, r1, 24
- ldr r1, =gUnknown_085CD660
- ldr r0, =gBattleScripting
- adds r0, 0x24
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- mov r8, r0
- movs r0, 0x80
- ands r0, r7
- cmp r0, 0
- beq _0814FA24
- movs r0, 0x7F
- ands r7, r0
- movs r0, 0
- b _0814FA36
- .pool
-_0814FA24:
- lsls r0, r7, 1
- adds r0, r7
- lsls r0, 2
- add r0, r8
- ldrb r1, [r0]
- adds r0, r7, 0
- bl FillWindowPixelBuffer
- movs r0, 0x1
-_0814FA36:
- mov r9, r0
- str r4, [sp]
- mov r0, sp
- strb r7, [r0, 0x4]
- mov r1, sp
- lsls r6, r7, 1
- adds r3, r6, r7
- lsls r3, 2
- add r3, r8
- ldrb r0, [r3, 0x1]
- strb r0, [r1, 0x5]
- ldrb r0, [r3, 0x2]
- strb r0, [r1, 0x6]
- ldrb r0, [r3, 0x3]
- strb r0, [r1, 0x7]
- mov r0, sp
- ldrb r0, [r0, 0x6]
- strb r0, [r1, 0x8]
- mov r0, sp
- ldrb r0, [r0, 0x7]
- strb r0, [r1, 0x9]
- ldrb r0, [r3, 0x4]
- strb r0, [r1, 0xA]
- ldrb r0, [r3, 0x5]
- strb r0, [r1, 0xB]
- mov r4, sp
- ldrb r2, [r4, 0xC]
- movs r1, 0x10
- negs r1, r1
- adds r0, r1, 0
- ands r0, r2
- strb r0, [r4, 0xC]
- mov r2, sp
- ldrb r0, [r3, 0x7]
- lsls r0, 4
- movs r5, 0xF
- strb r0, [r2, 0xC]
- ldrb r2, [r3, 0x8]
- adds r0, r5, 0
- ands r0, r2
- ldrb r2, [r4, 0xD]
- ands r1, r2
- orrs r1, r0
- strb r1, [r4, 0xD]
- mov r2, sp
- ldrb r0, [r3, 0x9]
- lsls r0, 4
- ands r1, r5
- orrs r1, r0
- strb r1, [r2, 0xD]
- mov r0, sp
- ldrb r0, [r0, 0x6]
- cmp r0, 0xFF
- bne _0814FAC6
- ldr r0, =gBattleScripting
- adds r0, 0x24
- ldrb r0, [r0]
- adds r1, r7, 0
- bl sub_80397C4
- adds r2, r0, 0
- mov r0, sp
- ldrb r0, [r0, 0x5]
- ldr r1, [sp]
- mov r3, sp
- ldrb r3, [r3, 0xA]
- bl GetStringCenterAlignXOffsetWithLetterSpacing
- mov r2, sp
- mov r1, sp
- strb r0, [r1, 0x8]
- strb r0, [r2, 0x6]
-_0814FAC6:
- cmp r7, 0x16
- bne _0814FAE0
- ldr r0, =gTextFlags
- ldrb r2, [r0]
- movs r1, 0x3
- negs r1, r1
- ands r1, r2
- b _0814FAE8
- .pool
-_0814FAE0:
- ldr r0, =gTextFlags
- ldrb r1, [r0]
- movs r2, 0x2
- orrs r1, r2
-_0814FAE8:
- strb r1, [r0]
- adds r3, r0, 0
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- ldr r2, =0x01000002
- ands r1, r2
- adds r2, r0, 0
- cmp r1, 0
- beq _0814FB10
- ldrb r0, [r3]
- movs r1, 0x4
- orrs r0, r1
- b _0814FB18
- .pool
-_0814FB10:
- ldrb r1, [r3]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
-_0814FB18:
- strb r0, [r3]
- cmp r7, 0
- beq _0814FB22
- cmp r7, 0x16
- bne _0814FB6C
-_0814FB22:
- ldr r1, [r2]
- ldr r0, =0x02000002
- ands r0, r1
- cmp r0, 0
- beq _0814FB34
- movs r6, 0x1
- b _0814FB5C
- .pool
-_0814FB34:
- movs r0, 0x80
- lsls r0, 17
- ands r1, r0
- cmp r1, 0
- beq _0814FB54
- ldr r4, =gUnknown_085CD668
- bl sub_8185FC4
- lsls r0, 24
- lsrs r0, 24
- adds r0, r4
- ldrb r6, [r0]
- b _0814FB5C
- .pool
-_0814FB54:
- bl sav2_get_text_speed
- lsls r0, 24
- lsrs r6, r0, 24
-_0814FB5C:
- ldr r0, =gTextFlags
- ldrb r1, [r0]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0]
- b _0814FB7E
- .pool
-_0814FB6C:
- adds r0, r6, r7
- lsls r0, 2
- add r0, r8
- ldrb r6, [r0, 0x6]
- ldrb r1, [r3]
- movs r0, 0x2
- negs r0, r0
- ands r0, r1
- strb r0, [r3]
-_0814FB7E:
- mov r0, sp
- adds r1, r6, 0
- movs r2, 0
- bl AddTextPrinter
- mov r0, r9
- cmp r0, 0
- beq _0814FB9C
- adds r0, r7, 0
- bl PutWindowTilemap
- adds r0, r7, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_0814FB9C:
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_814F9EC
-
- thumb_func_start sub_814FBAC
-sub_814FBAC: @ 814FBAC
- push {r4,r5,lr}
- ldr r0, =gActiveBank
- ldrb r2, [r0]
- lsls r1, r2, 9
- ldr r0, =gBattleBufferA + 4
- adds r1, r0
- ldr r4, =gUnknown_08D85620
- ldr r0, =gMoveSelectionCursor
- adds r2, r0
- ldrb r2, [r2]
- adds r0, r1, 0
- adds r0, 0x8
- adds r0, r2
- ldrb r0, [r0]
- adds r1, 0xC
- adds r1, r2
- ldrb r1, [r1]
- bl sub_814FC20
- lsls r0, 24
- ldr r5, =gPlttBufferUnfaded
- lsrs r0, 22
- adds r0, r4
- ldrh r1, [r0]
- adds r2, r5, 0
- adds r2, 0xB8
- strh r1, [r2]
- ldrh r0, [r0, 0x2]
- adds r5, 0xB6
- strh r0, [r5]
- ldr r4, =gPlttBufferFaded + 0xB8
- adds r0, r2, 0
- adds r1, r4, 0
- movs r2, 0x1
- bl CpuSet
- subs r4, 0x2
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x1
- bl CpuSet
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_814FBAC
-
- thumb_func_start sub_814FC20
-sub_814FC20: @ 814FC20
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- adds r3, r2, 0
- lsls r1, 24
- lsrs r0, r1, 24
- cmp r0, r2
- beq _0814FC68
- cmp r0, 0x2
- bhi _0814FC3A
- cmp r2, 0x1
- bhi _0814FC68
- b _0814FC42
-_0814FC3A:
- cmp r0, 0x7
- bhi _0814FC4C
- cmp r2, 0x2
- bhi _0814FC68
-_0814FC42:
- movs r0, 0x2
- subs r0, r2
- lsls r0, 24
- lsrs r0, 24
- b _0814FC6A
-_0814FC4C:
- cmp r2, 0
- bne _0814FC54
- movs r0, 0x2
- b _0814FC6A
-_0814FC54:
- lsrs r0, r1, 26
- cmp r2, r0
- bhi _0814FC5E
- movs r0, 0x1
- b _0814FC6A
-_0814FC5E:
- lsrs r0, r1, 25
- cmp r3, r0
- bhi _0814FC68
- movs r0, 0
- b _0814FC6A
-_0814FC68:
- movs r0, 0x3
-_0814FC6A:
- pop {r1}
- bx r1
- thumb_func_end sub_814FC20
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_setup.s b/asm/battle_setup.s
index fcc0de95b..5c7196579 100644
--- a/asm/battle_setup.s
+++ b/asm/battle_setup.s
@@ -299,8 +299,8 @@ sub_80B086C: @ 80B086C
.pool
thumb_func_end sub_80B086C
- thumb_func_start sub_80B08A8
-sub_80B08A8: @ 80B08A8
+ thumb_func_start BattleSetup_StartScriptedWildBattle
+BattleSetup_StartScriptedWildBattle: @ 80B08A8
push {lr}
bl ScriptContext2_Enable
ldr r1, =gMain
@@ -323,7 +323,7 @@ sub_80B08A8: @ 80B08A8
pop {r0}
bx r0
.pool
- thumb_func_end sub_80B08A8
+ thumb_func_end BattleSetup_StartScriptedWildBattle
thumb_func_start sub_80B08EC
sub_80B08EC: @ 80B08EC
@@ -1357,7 +1357,7 @@ sub_80B1158: @ 80B1158
movs r1, 0x5
movs r2, 0
movs r3, 0
- bl sub_80F9244
+ bl ScriptGiveMon
bl ResetTasks
bl PlayBattleBGM
ldr r0, =sub_80B11A8
@@ -1686,9 +1686,9 @@ _080B141A:
.pool
thumb_func_end battle_80801F0
- thumb_func_start TrainerBattleConfigure
-@ u8 *TrainerBattleConfigure(u8 *args)
-TrainerBattleConfigure: @ 80B1430
+ thumb_func_start BattleSetup_ConfigureTrainerBattle
+@ u8 *BattleSetup_ConfigureTrainerBattle(u8 *args)
+BattleSetup_ConfigureTrainerBattle: @ 80B1430
push {r4,r5,lr}
adds r5, r0, 0
bl InitTrainerBattleVariables
@@ -1872,7 +1872,7 @@ _080B161E:
pop {r1}
bx r1
.pool
- thumb_func_end TrainerBattleConfigure
+ thumb_func_end BattleSetup_ConfigureTrainerBattle
thumb_func_start SingleTrainerWantsBattle
@ void SingleTrainerWantsBattle(u8 trainerFieldObjectId, u8 *trainerScript)
@@ -1892,7 +1892,7 @@ SingleTrainerWantsBattle: @ 80B162C
strh r0, [r4]
adds r1, 0x1
adds r0, r1, 0
- bl TrainerBattleConfigure
+ bl BattleSetup_ConfigureTrainerBattle
ldr r0, =gUnknown_08271354
bl ScriptContext1_SetupScript
bl ScriptContext2_Enable
@@ -1920,7 +1920,7 @@ TwoTrainersWantBattle: @ 80B1670
strh r0, [r4]
adds r1, 0x1
adds r0, r1, 0
- bl TrainerBattleConfigure
+ bl BattleSetup_ConfigureTrainerBattle
pop {r4}
pop {r0}
bx r0
@@ -2056,8 +2056,8 @@ sub_80B178C: @ 80B178C
bx r0
thumb_func_end sub_80B178C
- thumb_func_start trainer_flag_check
-trainer_flag_check: @ 80B17A0
+ thumb_func_start HasTrainerAlreadyBeenFought
+HasTrainerAlreadyBeenFought: @ 80B17A0
push {lr}
lsls r0, 16
movs r1, 0xA0
@@ -2069,7 +2069,7 @@ trainer_flag_check: @ 80B17A0
lsrs r0, 24
pop {r1}
bx r1
- thumb_func_end trainer_flag_check
+ thumb_func_end HasTrainerAlreadyBeenFought
thumb_func_start trainer_flag_set
trainer_flag_set: @ 80B17B8
@@ -2092,13 +2092,13 @@ trainer_flag_clear: @ 80B17CC
lsls r1, 19
adds r0, r1
lsrs r0, 16
- bl FlagReset
+ bl FlagClear
pop {r0}
bx r0
thumb_func_end trainer_flag_clear
- thumb_func_start sub_80B17E0
-sub_80B17E0: @ 80B17E0
+ thumb_func_start BattleSetup_StartTrainerBattle
+BattleSetup_StartTrainerBattle: @ 80B17E0
push {r4,lr}
ldr r0, =gUnknown_030060A8
ldrb r0, [r0]
@@ -2217,7 +2217,7 @@ _080B190C:
pop {r4}
pop {r0}
bx r0
- thumb_func_end sub_80B17E0
+ thumb_func_end BattleSetup_StartTrainerBattle
thumb_func_start sub_80B1918
sub_80B1918: @ 80B1918
@@ -2407,14 +2407,14 @@ _080B1AD8:
.pool
_080B1AEC:
bl sub_80B1C7C
- bl box_related_two__2
+ bl ShowFieldMessage
_080B1AF4:
pop {r0}
bx r0
thumb_func_end sub_80B1A14
- thumb_func_start sub_80B1AF8
-sub_80B1AF8: @ 80B1AF8
+ thumb_func_start BattleSetup_GetScriptAddrAfterBattle
+BattleSetup_GetScriptAddrAfterBattle: @ 80B1AF8
push {lr}
ldr r0, =gUnknown_02038BEC
ldr r0, [r0]
@@ -2425,10 +2425,10 @@ _080B1B04:
pop {r1}
bx r1
.pool
- thumb_func_end sub_80B1AF8
+ thumb_func_end BattleSetup_GetScriptAddrAfterBattle
- thumb_func_start sub_80B1B10
-sub_80B1B10: @ 80B1B10
+ thumb_func_start BattleSetup_GetTrainerPostBattleScript
+BattleSetup_GetTrainerPostBattleScript: @ 80B1B10
push {lr}
ldr r1, =gUnknown_02038BF8
ldrb r2, [r1]
@@ -2462,13 +2462,13 @@ _080B1B56:
pop {r1}
bx r1
.pool
- thumb_func_end sub_80B1B10
+ thumb_func_end BattleSetup_GetTrainerPostBattleScript
thumb_func_start special_trainer_unable_to_battle
special_trainer_unable_to_battle: @ 80B1B60
push {lr}
bl sub_80B1D18
- bl box_related_two__2
+ bl ShowFieldMessage
pop {r0}
bx r0
thumb_func_end special_trainer_unable_to_battle
@@ -2617,8 +2617,8 @@ _080B1C96:
.pool
thumb_func_end sub_80B1C7C
- thumb_func_start sub_80B1CA4
-sub_80B1CA4: @ 80B1CA4
+ thumb_func_start GetTrainer1LoseText
+GetTrainer1LoseText: @ 80B1CA4
push {r4,lr}
ldr r0, =gTrainerBattleOpponent_A
ldrh r1, [r0]
@@ -2643,10 +2643,10 @@ _080B1CC0:
pop {r1}
bx r1
.pool
- thumb_func_end sub_80B1CA4
+ thumb_func_end GetTrainer1LoseText
- thumb_func_start sub_80B1CE0
-sub_80B1CE0: @ 80B1CE0
+ thumb_func_start GetTrainer2LoseText
+GetTrainer2LoseText: @ 80B1CE0
push {r4,lr}
ldr r4, =gStringVar4
ldr r0, =gUnknown_02038BE0
@@ -2660,7 +2660,7 @@ sub_80B1CE0: @ 80B1CE0
pop {r1}
bx r1
.pool
- thumb_func_end sub_80B1CE0
+ thumb_func_end GetTrainer2LoseText
thumb_func_start sub_80B1D04
sub_80B1D04: @ 80B1D04
@@ -2796,7 +2796,7 @@ _080B1DCE:
ldrh r0, [r4]
cmp r0, 0
beq _080B1DE2
- bl trainer_flag_check
+ bl HasTrainerAlreadyBeenFought
lsls r0, 24
cmp r0, 0
bne _080B1DCA
@@ -2895,7 +2895,7 @@ sub_80B1E94: @ 80B1E94
lsls r0, r4, 4
adds r0, r5
ldrh r0, [r0]
- bl trainer_flag_check
+ bl HasTrainerAlreadyBeenFought
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -3076,7 +3076,7 @@ _080B1FE2:
ldrh r0, [r4]
cmp r0, 0
beq _080B1FCA
- bl trainer_flag_check
+ bl HasTrainerAlreadyBeenFought
lsls r0, 24
cmp r0, 0
beq _080B1FD4
@@ -3127,7 +3127,7 @@ _080B203A:
ldrh r0, [r4]
cmp r0, 0
beq _080B201E
- bl trainer_flag_check
+ bl HasTrainerAlreadyBeenFought
lsls r0, 24
cmp r0, 0
beq _080B2028
@@ -3233,7 +3233,7 @@ sub_80B20F4: @ 80B20F4
lsls r0, r1, 4
adds r0, r4
ldrh r0, [r0, 0x2]
- bl trainer_flag_check
+ bl HasTrainerAlreadyBeenFought
lsls r0, 24
cmp r0, 0
beq _080B211E
@@ -3509,7 +3509,7 @@ sub_80B2318: @ 80B2318
lsrs r4, r0, 12
adds r6, r4, r7
ldrh r0, [r6]
- bl trainer_flag_check
+ bl HasTrainerAlreadyBeenFought
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -3527,7 +3527,7 @@ _080B2338:
adds r4, r6, 0x2
_080B2346:
ldrh r0, [r4]
- bl trainer_flag_check
+ bl HasTrainerAlreadyBeenFought
lsls r0, 24
cmp r0, 0
beq _080B2360
diff --git a/asm/battle_tower.s b/asm/battle_tower.s
index eb91121ae..74c84e34c 100755
--- a/asm/battle_tower.s
+++ b/asm/battle_tower.s
@@ -1795,7 +1795,7 @@ _08162ED8:
adds r0, 0xE4
ldrb r2, [r0]
adds r0, r6, 0
- bl sub_81DB5E8
+ bl TVShowConvertInternationalString
b _08162F62
.pool
_08162F00:
@@ -1835,7 +1835,7 @@ _08162F3E:
adds r1, r0, 0
adds r0, r6, 0
adds r2, r4, 0
- bl sub_81DB5E8
+ bl TVShowConvertInternationalString
b _08162F62
.pool
_08162F5C:
@@ -3548,11 +3548,11 @@ _08163E2C:
movs r0, 0
strb r0, [r4]
ldr r0, =gUnknown_08224158
- bl TrainerBattleConfigure
+ bl BattleSetup_ConfigureTrainerBattle
movs r0, 0x1
strb r0, [r4]
ldr r0, =gUnknown_08224167
- bl TrainerBattleConfigure
+ bl BattleSetup_ConfigureTrainerBattle
ldr r0, =gPartnerTrainerId
strh r5, [r0]
ldr r0, =sub_8163A8C
@@ -4364,7 +4364,7 @@ _081644E0:
strb r0, [r1, 0x1]
movs r0, 0xD8
lsls r0, 2
- bl FlagReset
+ bl FlagClear
ldr r0, [r6]
adds r0, r5
ldrh r0, [r0]
@@ -4525,7 +4525,7 @@ _08164660:
adds r1, 0xC0
strb r0, [r1, 0x1]
ldr r0, =0x00000361
- bl FlagReset
+ bl FlagClear
ldr r0, [r6]
adds r0, r5
ldrh r0, [r0]
@@ -5016,7 +5016,7 @@ _08164B04:
lsls r0, 2
adds r0, r1
ldr r0, [r0]
- bl box_related_two__2
+ bl ShowFieldMessage
b _08164B54
.pool
_08164B28:
@@ -5040,7 +5040,7 @@ _08164B28:
lsls r1, 2
adds r1, r0
ldr r0, [r1]
- bl box_related_two__2
+ bl ShowFieldMessage
_08164B54:
add sp, 0x8
pop {r3-r5}
@@ -5673,7 +5673,7 @@ _0816508C:
bl SetMonData
ldr r0, [r7]
adds r0, r4
- bl sub_80EE5A4
+ bl GetRibbonCount
strb r0, [r5, 0x1]
_081650D4:
adds r5, 0x4
@@ -5857,8 +5857,8 @@ sub_8165244: @ 8165244
.pool
thumb_func_end sub_8165244
- thumb_func_start sub_8165264
-sub_8165264: @ 8165264
+ thumb_func_start GetEreaderTrainerClassId
+GetEreaderTrainerClassId: @ 8165264
ldr r1, =gTrainerClassToNameIndex
ldr r0, =gSaveBlock2Ptr
ldr r0, [r0]
@@ -5869,10 +5869,10 @@ sub_8165264: @ 8165264
ldrb r0, [r0]
bx lr
.pool
- thumb_func_end sub_8165264
+ thumb_func_end GetEreaderTrainerClassId
- thumb_func_start sub_8165284
-sub_8165284: @ 8165284
+ thumb_func_start GetEreaderTrainerName
+GetEreaderTrainerName: @ 8165284
push {r4,lr}
adds r3, r0, 0
movs r2, 0
@@ -5896,7 +5896,7 @@ _08165294:
pop {r0}
bx r0
.pool
- thumb_func_end sub_8165284
+ thumb_func_end GetEreaderTrainerName
thumb_func_start sub_81652B4
sub_81652B4: @ 81652B4
@@ -6056,7 +6056,7 @@ _081653E0:
bne _081653F8
bl sub_80F01B8
movs r0, 0x77
- bl FlagReset
+ bl FlagClear
_081653F8:
pop {r0}
bx r0
diff --git a/asm/battle_transition.s b/asm/battle_transition.s
index a6e44f087..2f9637594 100644
--- a/asm/battle_transition.s
+++ b/asm/battle_transition.s
@@ -2151,7 +2151,7 @@ sub_8147018: @ 8147018
ands r5, r0
movs r1, 0
mov r8, r4
- ldr r6, =gFieldEffectSpawnParams
+ ldr r6, =gFieldEffectArguments
_08147046:
lsls r5, 16
asrs r5, 16
@@ -2221,7 +2221,7 @@ _081470C4:
sub_81470D0: @ 81470D0
push {r4,r5,lr}
ldr r0, =gUnknown_085C8E68
- ldr r5, =gFieldEffectSpawnParams
+ ldr r5, =gFieldEffectArguments
movs r2, 0
ldrsh r1, [r5, r2]
movs r3, 0x4
diff --git a/asm/berry_blender.s b/asm/berry_blender.s
index 277a49d2f..6d18ab7cb 100644
--- a/asm/berry_blender.s
+++ b/asm/berry_blender.s
@@ -1275,7 +1275,7 @@ _080802AC:
strh r0, [r1]
adds r5, 0x1
_080802D4:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r5, r0
@@ -1295,7 +1295,7 @@ _080802EC:
bl sub_807FD90
b _08080336
_08080302:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
ldr r2, =gUnknown_020322A4
ldr r1, [r2]
adds r1, 0x7C
@@ -6091,7 +6091,7 @@ _08082BEE:
lsls r0, 24
lsrs r5, r0, 24
_08082BF4:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r5, r0
@@ -6104,7 +6104,7 @@ _08082C0C:
lsls r0, 24
lsrs r5, r0, 24
_08082C12:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r5, r0
@@ -6118,7 +6118,7 @@ _08082C12:
cmp r0, 0
bne _08082C0C
_08082C2E:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r5, r0
@@ -6132,7 +6132,7 @@ _08082C48:
lsls r0, 24
lsrs r5, r0, 24
_08082C4E:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r5, r0
@@ -6149,7 +6149,7 @@ _08082C6A:
ldr r4, =gUnknown_03003110
adds r0, r4, 0
bl sub_8081F94
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r5, r0
@@ -8568,7 +8568,7 @@ sub_8083F94: @ 8083F94
ldrb r0, [r5, 0x12]
str r0, [sp]
adds r0, r7, 0
- bl sub_80ECC04
+ bl Put3CheersForPokeblocksOnTheAir
lsls r0, 24
cmp r0, 0
bne _080840BA
@@ -8617,7 +8617,7 @@ _08084058:
ldrb r0, [r5, 0x12]
str r0, [sp]
adds r0, r7, 0
- bl sub_80ECC04
+ bl Put3CheersForPokeblocksOnTheAir
lsls r0, 24
cmp r0, 0
beq _080840C4
diff --git a/asm/bike.s b/asm/bike.s
index 7ea4a4598..b5d40a312 100644
--- a/asm/bike.s
+++ b/asm/bike.s
@@ -2013,9 +2013,9 @@ _0811A0B0:
bl SetPlayerAvatarTransitionFlags
ldr r4, =0x00000193
adds r0, r4, 0
- bl sav1_set_battle_music_maybe
+ bl Overworld_SetSavedMusic
adds r0, r4, 0
- bl sub_80858C4
+ bl Overworld_ChangeMusicTo
_0811A0C4:
pop {r4}
pop {r0}
diff --git a/asm/cable_club.s b/asm/cable_club.s
index d5d3af151..74016152f 100644
--- a/asm/cable_club.s
+++ b/asm/cable_club.s
@@ -434,7 +434,7 @@ sub_80B2688: @ 80B2688
movs r0, 0x15
bl PlaySE
ldr r0, =gUnknown_082780B3
- bl box_related_two__3
+ bl ShowFieldAutoScrollMessage
ldr r0, =sub_80B270C
b _080B26FA
.pool
@@ -442,7 +442,7 @@ _080B26EC:
movs r0, 0x16
bl PlaySE
ldr r0, =gUnknown_08278131
- bl box_related_two__3
+ bl ShowFieldAutoScrollMessage
ldr r0, =sub_80B2918
_080B26FA:
str r0, [r4]
@@ -545,7 +545,7 @@ sub_80B275C: @ 80B275C
movs r3, 0x1
bl ConvertIntToDecimalStringN
ldr r0, =gUnknown_082780F2
- bl box_related_two__3
+ bl ShowFieldAutoScrollMessage
mov r0, r9
subs r0, 0x8
add r0, r8
@@ -598,7 +598,7 @@ sub_80B2804: @ 80B2804
beq _080B2878
_080B2852:
ldr r0, =gUnknown_082780B3
- bl box_related_two__3
+ bl ShowFieldAutoScrollMessage
ldr r1, =gTasks
lsls r0, r5, 2
adds r0, r5
@@ -719,7 +719,7 @@ sub_80B2918: @ 80B2918
cmp r0, 0x1
bhi _080B297C
bl sub_800AC34
- bl textbox_close
+ bl HideFieldMessageBox
ldr r0, =sub_80B2CB0
b _080B29E4
.pool
@@ -730,7 +730,7 @@ _080B297C:
bne _080B2994
_080B2984:
bl sub_80097E8
- bl textbox_close
+ bl HideFieldMessageBox
ldr r0, =sub_80B2CB0
b _080B29E4
.pool
@@ -814,7 +814,7 @@ _080B2A42:
_080B2A4A:
bl sub_80097E8
_080B2A4E:
- bl textbox_close
+ bl HideFieldMessageBox
ldr r0, =gTasks
lsls r1, r7, 2
adds r1, r7
@@ -1059,7 +1059,7 @@ _080B2C5C:
lsls r0, 24
lsrs r4, r0, 24
_080B2C7E:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r4, r0
@@ -1151,7 +1151,7 @@ sub_80B2D2C: @ 80B2D2C
bl sub_80B241C
ldrb r0, [r4, 0x12]
bl RemoveWindow
- bl textbox_close
+ bl HideFieldMessageBox
bl EnableBothScriptContexts
adds r0, r5, 0
bl DestroyTask
@@ -1361,7 +1361,7 @@ _080B2F0C:
movs r0, 0
mov r8, r0
mov r9, r0
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r5, r0, 24
movs r4, 0
@@ -1984,7 +1984,7 @@ _080B3474:
adds r5, 0x1C
adds r4, 0x1
_080B349A:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r4, r0
@@ -2080,7 +2080,7 @@ _080B3574:
beq _080B35F8
b _080B35FE
_080B357A:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r3, r0, 24
movs r4, 0
@@ -2297,13 +2297,13 @@ _080B3750:
b _080B37CC
_080B375A:
ldr r0, =gUnknown_08278091
- bl box_related_two__2
+ bl ShowFieldMessage
movs r0, 0x1
strh r0, [r5, 0x8]
b _080B37CC
.pool
_080B376C:
- bl sub_809833C
+ bl IsFieldMessageBoxHidden
lsls r0, 24
cmp r0, 0
beq _080B37CC
@@ -2325,7 +2325,7 @@ _080B378C:
beq _080B37B2
b _080B37CC
_080B379E:
- bl textbox_close
+ bl HideFieldMessageBox
movs r0, 0
strh r0, [r5, 0x8]
bl sub_80872C4
diff --git a/asm/clock.s b/asm/clock.s
index 01c7e964e..5d771a8b6 100644
--- a/asm/clock.s
+++ b/asm/clock.s
@@ -27,8 +27,8 @@ sub_809E778: @ 809E778
.pool
thumb_func_end sub_809E778
- thumb_func_start sub_809E7B0
-sub_809E7B0: @ 809E7B0
+ thumb_func_start DoTimeBasedEvents
+DoTimeBasedEvents: @ 809E7B0
push {r4,lr}
ldr r0, =0x00000895
bl FlagGet
@@ -50,7 +50,7 @@ _0809E7DA:
pop {r0}
bx r0
.pool
- thumb_func_end sub_809E7B0
+ thumb_func_end DoTimeBasedEvents
thumb_func_start sub_809E7E8
sub_809E7E8: @ 809E7E8
diff --git a/asm/coins.s b/asm/coins.s
index ea55dd85c..d2b6cbb47 100644
--- a/asm/coins.s
+++ b/asm/coins.s
@@ -5,9 +5,9 @@
.text
- thumb_func_start AddCoins
-@ bool8 AddCoins(u16 toAdd)
-AddCoins: @ 8145C80
+ thumb_func_start GiveCoins
+@ bool8 GiveCoins(u16 toAdd)
+GiveCoins: @ 8145C80
push {r4,lr}
lsls r0, 16
lsrs r4, r0, 16
@@ -44,11 +44,11 @@ _08145CC0:
pop {r1}
bx r1
.pool
- thumb_func_end AddCoins
+ thumb_func_end GiveCoins
- thumb_func_start SubtractCoins
-@ bool8 SubtractCoins(u16 toSub)
-SubtractCoins: @ 8145CCC
+ thumb_func_start TakeCoins
+@ bool8 TakeCoins(u16 toSub)
+TakeCoins: @ 8145CCC
push {r4,lr}
lsls r0, 16
lsrs r4, r0, 16
@@ -69,6 +69,6 @@ _08145CEE:
pop {r4}
pop {r1}
bx r1
- thumb_func_end SubtractCoins
+ thumb_func_end TakeCoins
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/contest.s b/asm/contest.s
index 561c79857..eebe557e5 100644
--- a/asm/contest.s
+++ b/asm/contest.s
@@ -1525,7 +1525,7 @@ sub_80D8490: @ 80D8490
movs r6, 0
ldr r0, =gUnknown_02039F25
mov r8, r0
- ldr r2, =gUnknown_02039E1E
+ ldr r2, =gUnknown_02039E00 + 30
mov r10, r2
ldr r7, =gUnknown_02039F34
_080D84B8:
@@ -2624,7 +2624,7 @@ _080D8EF2:
bl sub_80DB89C
ldr r0, =gStringVar1
lsls r1, r6, 6
- ldr r2, =gUnknown_02039E02
+ ldr r2, =gUnknown_02039E00 + 2
adds r1, r2
bl StringCopy
mov r2, r9
@@ -3562,7 +3562,7 @@ _080D96D4:
bl sub_80DB89C
ldr r0, =gStringVar1
lsls r1, r6, 6
- ldr r2, =gUnknown_02039E02
+ ldr r2, =gUnknown_02039E00 + 2
adds r1, r2
bl StringCopy
ldr r4, =gStringVar4
@@ -3671,7 +3671,7 @@ _080D97DC:
bl sub_80DB89C
ldr r0, =gStringVar1
lsls r1, r6, 6
- ldr r2, =gUnknown_02039E02
+ ldr r2, =gUnknown_02039E00 + 2
adds r1, r2
bl StringCopy
ldr r4, =gStringVar4
@@ -3809,7 +3809,7 @@ _080D9904:
bl sub_80DB89C
ldr r0, =gStringVar1
lsls r1, r6, 6
- ldr r2, =gUnknown_02039E02
+ ldr r2, =gUnknown_02039E00 + 2
adds r1, r2
bl StringCopy
ldr r4, =gStringVar4
@@ -4010,7 +4010,7 @@ _080D9AD2:
bl sub_80DB89C
ldr r0, =gStringVar1
lsls r1, r6, 6
- ldr r2, =gUnknown_02039E02
+ ldr r2, =gUnknown_02039E00 + 2
adds r1, r2
bl StringCopy
ldr r4, =gUnknown_02039F34
@@ -4381,7 +4381,7 @@ _080D9DD4:
lsls r1, 20
lsrs r1, 29
lsls r1, 6
- ldr r4, =gUnknown_02039E02
+ ldr r4, =gUnknown_02039E00 + 2
adds r1, r4
bl StringCopy
ldr r0, =gStringVar1
@@ -4476,7 +4476,7 @@ _080D9EDC:
bl sub_80DC9B4
ldr r0, =gStringVar1
lsls r1, r6, 6
- ldr r2, =gUnknown_02039E02
+ ldr r2, =gUnknown_02039E00 + 2
adds r1, r2
bl StringCopy
ldr r0, =gStringVar2
@@ -4626,7 +4626,7 @@ _080DA038:
bl sub_80DB89C
ldr r0, =gStringVar1
lsls r1, r6, 6
- ldr r2, =gUnknown_02039E02
+ ldr r2, =gUnknown_02039E00 + 2
adds r1, r2
bl StringCopy
ldr r4, =gStringVar4
@@ -5096,7 +5096,7 @@ sub_80DA3CC: @ 80DA3CC
ldr r0, =gStringVar1
ldrb r1, [r5]
lsls r1, 6
- ldr r2, =gUnknown_02039E02
+ ldr r2, =gUnknown_02039E00 + 2
adds r1, r2
bl StringCopy
ldr r5, =gStringVar4
@@ -5360,7 +5360,7 @@ _080DA600:
lsls r0, 2
adds r0, r2
ldrh r0, [r0, 0x8]
- bl sub_80ED03C
+ bl BravoTrainerPokemonProfile_BeforeInterview1
b _080DA668
.pool
_080DA65C:
@@ -5667,7 +5667,7 @@ _080DA8F2:
ldr r5, =gUnknown_02039F25
ldrb r0, [r5]
lsls r0, 6
- ldr r4, =gUnknown_02039E0D
+ ldr r4, =gUnknown_02039E00 + 13
adds r0, r4
mov r1, sp
movs r2, 0x8
@@ -6313,7 +6313,7 @@ _080DAE1E:
movs r0, 0x4
b _080DAE9A
_080DAE2E:
- ldr r0, =gUnknown_02039F2C
+ ldr r0, =gScriptContestCategory
ldrh r0, [r0]
cmp r0, 0x4
bhi _080DAE82
@@ -6451,7 +6451,7 @@ sub_80DAF1C: @ 80DAF1C
add r0, sp, 0x4
bl StringCopy
lsls r1, r5, 6
- ldr r0, =gUnknown_02039E0D
+ ldr r0, =gUnknown_02039E00 + 13
adds r1, r0
add r0, sp, 0x4
bl StringAppend
@@ -6508,7 +6508,7 @@ sub_80DAFA0: @ 80DAFA0
lsls r1, 24
lsrs r1, 24
lsls r0, r4, 6
- ldr r2, =gUnknown_02039E02
+ ldr r2, =gUnknown_02039E00 + 2
adds r0, r2
bl sub_80DAED4
ldr r0, =gUnknown_02039F26
@@ -8456,7 +8456,7 @@ sub_80DBED4: @ 80DBED4
adds r0, r1
ldrb r1, [r0]
lsls r1, 1
- ldr r0, =gUnknown_02039F2C
+ ldr r0, =gScriptContestCategory
ldrh r0, [r0]
lsls r0, 3
adds r1, r0
@@ -11173,7 +11173,7 @@ sub_80DD45C: @ 80DD45C
lsrs r6, r1, 24
ldr r0, =gStringVar1
lsls r1, r4, 6
- ldr r2, =gUnknown_02039E02
+ ldr r2, =gUnknown_02039E00 + 2
adds r1, r2
bl StringCopy
ldr r0, =gStringVar2
@@ -11805,7 +11805,7 @@ sub_80DD9F0: @ 80DD9F0
ldrb r1, [r0, 0x1]
lsls r1, 29
lsrs r1, 29
- ldr r0, =gUnknown_02039F2C
+ ldr r0, =gScriptContestCategory
ldrh r2, [r0]
lsls r0, r2, 2
adds r0, r2
@@ -14260,7 +14260,7 @@ _080DEDE6:
b _080DEF90
.pool
_080DEE00:
- ldr r0, =gUnknown_02039F2C
+ ldr r0, =gScriptContestCategory
ldrh r0, [r0]
cmp r0, 0x4
bhi _080DEE4C
@@ -14383,7 +14383,7 @@ _080DEF02:
mov r2, r9
lsls r1, r2, 5
adds r0, r1
- ldr r1, =gUnknown_02039F2C
+ ldr r1, =gScriptContestCategory
ldrh r1, [r1]
ldr r3, =0x00002e9a
adds r0, r3
@@ -14485,7 +14485,7 @@ _080DEFE6:
b _080DF03A
.pool
_080DEFF8:
- ldr r0, =gUnknown_02039F2C
+ ldr r0, =gScriptContestCategory
ldrh r0, [r0]
cmp r0, 0x4
bhi _080DF038
@@ -15385,21 +15385,21 @@ _080DF6AE:
beq _080DF6AE
_080DF6C4:
mov r0, r9
- bl sub_80ECDA4
+ bl ContestLiveUpdates_BeforeInterview_1
mov r0, r10
- bl sub_80ECDF4
+ bl ContestLiveUpdates_BeforeInterview_2
ldr r5, [sp, 0x4]
lsrs r0, r5, 24
- bl sub_80ECE34
+ bl ContestLiveUpdates_BeforeInterview_3
ldr r0, =gUnknown_02039F34
ldr r0, [r0]
ldr r0, [r0, 0x1C]
add r0, r8
ldrh r0, [r0, 0xA]
- bl sub_80ECE74
+ bl ContestLiveUpdates_BeforeInterview_4
adds r0, r4, 0
adds r1, r6, 0
- bl sub_80ECEB4
+ bl ContestLiveUpdates_BeforeInterview_5
_080DF6EE:
add sp, 0xC
pop {r3-r5}
diff --git a/asm/contest_ai.s b/asm/contest_ai.s
index f28492886..f937633da 100644
--- a/asm/contest_ai.s
+++ b/asm/contest_ai.s
@@ -144,7 +144,7 @@ sub_81563B0: @ 81563B0
beq _081564A0
adds r7, r5, 0
ldr r6, =gAIScriptPtr
- ldr r0, =gUnknown_02039E1E
+ ldr r0, =gUnknown_02039E00 + 30
mov r8, r0
_081563CC:
ldr r0, [r7]
@@ -1352,7 +1352,7 @@ sub_8156CF4: @ 8156CF4
ldr r0, =gUnknown_02039F34
ldr r0, [r0]
ldr r1, [r0, 0xC]
- ldr r0, =gUnknown_02039F2C
+ ldr r0, =gScriptContestCategory
ldrh r0, [r0]
strh r0, [r1, 0x18]
ldr r1, =gAIScriptPtr
@@ -5030,7 +5030,7 @@ sub_8158948: @ 8158948
push {r4-r6,lr}
movs r5, 0
movs r4, 0
- ldr r6, =gUnknown_02039E1E
+ ldr r6, =gUnknown_02039E00 + 30
_08158950:
lsls r1, r4, 1
ldr r0, =gUnknown_02039F34
diff --git a/asm/contest_effect.s b/asm/contest_effect.s
index 09c06b079..3b88e16e0 100644
--- a/asm/contest_effect.s
+++ b/asm/contest_effect.s
@@ -2590,7 +2590,7 @@ ContestEffectFunc_080E6778: @ 80E6778
adds r0, r3
ldrb r0, [r0, 0x1]
lsls r0, 29
- ldr r1, =gUnknown_02039F2C
+ ldr r1, =gScriptContestCategory
lsrs r0, 29
ldrh r1, [r1]
cmp r0, r1
diff --git a/asm/contest_link_80F57C4.s b/asm/contest_link_80F57C4.s
index 03e1aaf2b..f20070978 100644
--- a/asm/contest_link_80F57C4.s
+++ b/asm/contest_link_80F57C4.s
@@ -1239,7 +1239,7 @@ _080F6334:
ldr r1, =gUnknown_02039F20
ldrb r0, [r1]
ldr r7, =gStringVar1
- ldr r2, =gUnknown_02039E0D
+ ldr r2, =gUnknown_02039E00 + 13
mov r8, r2
cmp r0, 0
beq _080F636E
@@ -1750,7 +1750,7 @@ task_repel: @ 80F67C4
ldrb r0, [r0]
adds r0, r1
ldrb r0, [r0]
- bl sub_80ED090
+ bl BravoTrainerPokemonProfile_BeforeInterview2
_080F67E6:
movs r0, 0
str r0, [sp]
@@ -3008,7 +3008,7 @@ _080F7236:
bl CopyToBgTilemapBufferRect
movs r5, 0xF
_080F7240:
- ldr r0, =gUnknown_02039F2C
+ ldr r0, =gScriptContestCategory
ldrh r0, [r0]
cmp r0, 0
bne _080F725C
@@ -4640,7 +4640,7 @@ sub_80F7F30: @ 80F7F30
adds r5, r0, 0
cmp r5, 0
beq _080F7F5E
- ldr r4, =gUnknown_02039F2C
+ ldr r4, =gScriptContestCategory
ldrb r0, [r4]
ldr r1, =gUnknown_02039F2E
ldrb r1, [r1]
@@ -4666,7 +4666,7 @@ sub_80F7F7C: @ 80F7F7C
muls r1, r0
ldr r0, =gPlayerParty
adds r2, r1, r0
- ldr r0, =gUnknown_02039F2C
+ ldr r0, =gScriptContestCategory
ldrh r0, [r0]
cmp r0, 0x4
bhi _080F7FEE
@@ -4730,7 +4730,7 @@ sub_80F7FFC: @ 80F7FFC
beq _080F8010
b _080F8250
_080F8010:
- ldr r0, =gUnknown_02039F2C
+ ldr r0, =gScriptContestCategory
ldrh r0, [r0]
cmp r0, 0x4
bls _080F801A
@@ -4785,7 +4785,7 @@ _080F8074:
ldrb r0, [r6]
muls r0, r5
adds r0, r4
- bl sub_80EE5A4
+ bl GetRibbonCount
lsls r0, 24
lsrs r0, 24
cmp r0, 0x4
@@ -4834,7 +4834,7 @@ _080F80E2:
ldrb r0, [r7]
muls r0, r6
adds r0, r5
- bl sub_80EE5A4
+ bl GetRibbonCount
lsls r0, 24
lsrs r0, 24
cmp r0, 0x4
@@ -4883,7 +4883,7 @@ _080F814E:
ldrb r0, [r7]
muls r0, r6
adds r0, r5
- bl sub_80EE5A4
+ bl GetRibbonCount
lsls r0, 24
lsrs r0, 24
cmp r0, 0x4
@@ -4926,7 +4926,7 @@ _080F8190:
ldrb r0, [r7]
muls r0, r6
adds r0, r5
- bl sub_80EE5A4
+ bl GetRibbonCount
lsls r0, 24
lsrs r0, 24
cmp r0, 0x4
@@ -4969,7 +4969,7 @@ _080F81F8:
ldrb r0, [r7]
muls r0, r6
adds r0, r5
- bl sub_80EE5A4
+ bl GetRibbonCount
lsls r0, 24
lsrs r0, 24
cmp r0, 0x4
@@ -4994,7 +4994,7 @@ sub_80F8264: @ 80F8264
ldr r0, =gSpecialVar_0x8006
ldrh r1, [r0]
lsls r1, 6
- ldr r0, =gUnknown_02039E0D
+ ldr r0, =gUnknown_02039E00 + 13
adds r1, r0
adds r0, r4, 0
bl StringCopy
@@ -5013,7 +5013,7 @@ sub_80F8290: @ 80F8290
ldr r1, =gSpecialVar_0x8006
ldrh r1, [r1]
lsls r1, 6
- ldr r2, =gUnknown_02039E02
+ ldr r2, =gUnknown_02039E00 + 2
adds r1, r2
bl StringCopy
pop {r0}
@@ -5104,7 +5104,7 @@ sub_80F834C: @ 80F834C
ldr r2, =gUnknown_02039F20
ldrb r0, [r2]
ldr r4, =gStringVar3
- ldr r3, =gUnknown_02039E0D
+ ldr r3, =gUnknown_02039E00 + 13
cmp r0, 0
beq _080F836E
_080F835C:
@@ -5137,7 +5137,7 @@ sub_80F8390: @ 80F8390
ldr r2, =gUnknown_02039F20
ldrb r0, [r2]
ldr r4, =gStringVar1
- ldr r3, =gUnknown_02039E02
+ ldr r3, =gUnknown_02039E00 + 2
cmp r0, 0
beq _080F83B2
_080F83A0:
@@ -5488,7 +5488,7 @@ _080F8678:
bl sub_80F86E0
ldr r1, =gUnknown_02039F2B
strb r0, [r1]
- ldr r0, =gUnknown_02039F2C
+ ldr r0, =gScriptContestCategory
ldrb r0, [r0]
bl sub_80DB09C
ldr r1, =sub_80FCF40
@@ -5578,7 +5578,7 @@ sub_80F8714: @ 80F8714
b _080F877E
.pool
_080F8748:
- ldr r5, =gUnknown_02039E02
+ ldr r5, =gUnknown_02039E00 + 2
movs r4, 0x3
_080F874C:
adds r0, r5, 0
diff --git a/asm/contest_link_80FC4F4.s b/asm/contest_link_80FC4F4.s
index ad22946c5..4565c75aa 100644
--- a/asm/contest_link_80FC4F4.s
+++ b/asm/contest_link_80FC4F4.s
@@ -141,7 +141,7 @@ sub_80FC5DC: @ 80FC5DC
bl GetMultiplayerId
ldr r1, =gUnknown_02039F25
strb r0, [r1]
- bl sub_8009FCC
+ bl GetLinkPlayerCount
ldr r4, =gUnknown_02039F30
strb r0, [r4]
ldr r1, =gUnknown_02039F2A
diff --git a/asm/contest_link_81D9DE4.s b/asm/contest_link_81D9DE4.s
index 3fd8f56f1..5f9c25d7c 100755
--- a/asm/contest_link_81D9DE4.s
+++ b/asm/contest_link_81D9DE4.s
@@ -370,7 +370,7 @@ sub_81DA10C: @ 81DA10C
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r0, =gUnknown_02039F2C
+ ldr r0, =gScriptContestCategory
ldrb r0, [r0]
bl sub_80DB09C
ldr r1, =sub_80FCF40
diff --git a/asm/decoration.s b/asm/decoration.s
index 89bfbe3bf..0798e3165 100644
--- a/asm/decoration.s
+++ b/asm/decoration.s
@@ -2094,7 +2094,7 @@ sub_8127B04: @ 8127B04
lsls r4, 24
asrs r4, 24
str r4, [sp]
- bl warp1_set
+ bl Overworld_SetWarpDestination
bl warp_in
add sp, 0x4
pop {r4,r5}
@@ -2490,7 +2490,7 @@ _08127E34:
cmp r0, 0x1
bne _08127F1C
adds r0, r4, 0
- bl FlagReset
+ bl FlagClear
movs r2, 0
ldr r0, [r7, 0x4]
ldrb r4, [r0]
diff --git a/asm/decoration_inventory.s b/asm/decoration_inventory.s
index 52d490c20..7a909f585 100644
--- a/asm/decoration_inventory.s
+++ b/asm/decoration_inventory.s
@@ -156,8 +156,8 @@ _08161910:
bx r1
thumb_func_end sub_81618D0
- thumb_func_start sub_8161918
-sub_8161918: @ 8161918
+ thumb_func_start CheckHasDecoration
+CheckHasDecoration: @ 8161918
push {r4,lr}
lsls r0, 24
lsrs r3, r0, 24
@@ -193,7 +193,7 @@ _08161958:
pop {r4}
pop {r1}
bx r1
- thumb_func_end sub_8161918
+ thumb_func_end CheckHasDecoration
thumb_func_start DecorationAdd
DecorationAdd: @ 8161960
diff --git a/asm/dewford_trend.s b/asm/dewford_trend.s
index c3a7b192c..40df2d6a0 100644
--- a/asm/dewford_trend.s
+++ b/asm/dewford_trend.s
@@ -492,7 +492,7 @@ sub_812287C: @ 812287C
bl Free
b _08122980
_081228B0:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
mov r9, r0
diff --git a/asm/easy_chat.s b/asm/easy_chat.s
index 20bf327ac..a85169b61 100644
--- a/asm/easy_chat.s
+++ b/asm/easy_chat.s
@@ -565,7 +565,7 @@ _0811A72C:
ldr r4, =gStringVar3
adds r0, r4, 0
movs r1, 0x2
- bl sub_811F88C
+ bl InitializeEasyChatWordArray
b _0811A7C2
.pool
_0811A73C:
@@ -3704,7 +3704,7 @@ sub_811BDF0: @ 811BDF0
ldrb r2, [r0]
mov r0, sp
adds r1, r5, 0
- bl sub_81DB5E8
+ bl TVShowConvertInternationalString
movs r0, 0
mov r1, sp
bl sub_81AFC0C
@@ -9914,7 +9914,7 @@ _0811EF48:
adds r1, r5, 0
bl ConvertEasyChatWordsToString
adds r0, r4, 0
- bl box_related_two__3
+ bl ShowFieldAutoScrollMessage
_0811EF58:
pop {r4,r5}
pop {r0}
@@ -11109,8 +11109,8 @@ _0811F886:
bx r1
thumb_func_end sub_811F860
- thumb_func_start sub_811F88C
-sub_811F88C: @ 811F88C
+ thumb_func_start InitializeEasyChatWordArray
+InitializeEasyChatWordArray: @ 811F88C
push {lr}
adds r2, r0, 0
lsls r1, 16
@@ -11133,7 +11133,7 @@ _0811F8AE:
pop {r0}
bx r0
.pool
- thumb_func_end sub_811F88C
+ thumb_func_end InitializeEasyChatWordArray
thumb_func_start sub_811F8BC
sub_811F8BC: @ 811F8BC
diff --git a/asm/field_door.s b/asm/field_door.s
index 4602158df..037c76566 100644
--- a/asm/field_door.s
+++ b/asm/field_door.s
@@ -581,8 +581,8 @@ sub_808A83C: @ 808A83C
.pool
thumb_func_end sub_808A83C
- thumb_func_start sub_808A854
-sub_808A854: @ 808A854
+ thumb_func_start FieldSetDoorOpened
+FieldSetDoorOpened: @ 808A854
push {r4,r5,lr}
adds r4, r0, 0
adds r5, r1, 0
@@ -602,10 +602,10 @@ _0808A876:
pop {r0}
bx r0
.pool
- thumb_func_end sub_808A854
+ thumb_func_end FieldSetDoorOpened
- thumb_func_start sub_808A880
-sub_808A880: @ 808A880
+ thumb_func_start FieldSetDoorClosed
+FieldSetDoorClosed: @ 808A880
push {r4,r5,lr}
adds r4, r0, 0
adds r5, r1, 0
@@ -625,10 +625,10 @@ _0808A8A2:
pop {r0}
bx r0
.pool
- thumb_func_end sub_808A880
+ thumb_func_end FieldSetDoorClosed
- thumb_func_start sub_808A8AC
-sub_808A8AC: @ 808A8AC
+ thumb_func_start FieldAnimateDoorClose
+FieldAnimateDoorClose: @ 808A8AC
push {r4,r5,lr}
adds r4, r0, 0
adds r5, r1, 0
@@ -654,10 +654,10 @@ _0808A8DC:
pop {r4,r5}
pop {r1}
bx r1
- thumb_func_end sub_808A8AC
+ thumb_func_end FieldAnimateDoorClose
- thumb_func_start task_overworld_door_add_if_role_69_for_opening_door_at
-task_overworld_door_add_if_role_69_for_opening_door_at: @ 808A8E4
+ thumb_func_start FieldAnimateDoorOpen
+FieldAnimateDoorOpen: @ 808A8E4
push {r4,r5,lr}
adds r4, r0, 0
adds r5, r1, 0
@@ -683,10 +683,10 @@ _0808A914:
pop {r4,r5}
pop {r1}
bx r1
- thumb_func_end task_overworld_door_add_if_role_69_for_opening_door_at
+ thumb_func_end FieldAnimateDoorOpen
- thumb_func_start sub_808A91C
-sub_808A91C: @ 808A91C
+ thumb_func_start FieldIsDoorAnimationRunning
+FieldIsDoorAnimationRunning: @ 808A91C
push {lr}
ldr r0, =task50_overworld_door
bl FuncIsActiveTask
@@ -695,10 +695,10 @@ sub_808A91C: @ 808A91C
pop {r1}
bx r1
.pool
- thumb_func_end sub_808A91C
+ thumb_func_end FieldIsDoorAnimationRunning
- thumb_func_start cur_mapdata_get_door_sound_at
-cur_mapdata_get_door_sound_at: @ 808A930
+ thumb_func_start GetDoorSoundEffect
+GetDoorSoundEffect: @ 808A930
push {lr}
adds r3, r0, 0
adds r2, r1, 0
@@ -725,7 +725,7 @@ _0808A95C:
_0808A95E:
pop {r1}
bx r1
- thumb_func_end cur_mapdata_get_door_sound_at
+ thumb_func_end GetDoorSoundEffect
thumb_func_start sub_808A964
sub_808A964: @ 808A964
diff --git a/asm/field_effect.s b/asm/field_effect.s
index c8ccc49b4..323e56bfe 100644
--- a/asm/field_effect.s
+++ b/asm/field_effect.s
@@ -1989,7 +1989,7 @@ task00_8084310: @ 80B6A24
cmp r0, 0
beq _080B6A8A
bl brm_get_pokemon_selection
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
str r0, [r1]
@@ -2100,7 +2100,7 @@ _080B6B3E:
cmp r0, 0
bne _080B6B58
bl ScriptContext2_Disable
- bl sub_809757C
+ bl UnfreezeMapObjects
adds r0, r5, 0
bl DestroyTask
_080B6B58:
@@ -2459,7 +2459,7 @@ sub_80B6E18: @ 80B6E18
strb r0, [r1, 0x6]
bl ScriptContext2_Disable
bl CameraObjectReset1
- bl sub_809757C
+ bl UnfreezeMapObjects
bl InstallCameraPanAheadCallback
ldr r0, =sub_80B6B94
bl FindTaskIdByFunc
@@ -3111,7 +3111,7 @@ oei_waterfall: @ 80B734C
adds r1, r0
lsls r1, 3
adds r1, r2
- ldr r2, =gFieldEffectSpawnParams
+ ldr r2, =gFieldEffectArguments
ldr r2, [r2]
strh r2, [r1, 0xA]
bl _call_via_r4
@@ -3188,7 +3188,7 @@ waterfall_1_do_anim_probably: @ 80B73F0
bne _080B7420
adds r0, r5, 0
bl FieldObjectClearAnimIfSpecialAnimFinished
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
movs r2, 0xA
ldrsh r0, [r4, r2]
str r0, [r1]
@@ -3304,7 +3304,7 @@ sub_80B74D0: @ 80B74D0
adds r1, r0
lsls r1, 3
adds r1, r2
- ldr r3, =gFieldEffectSpawnParams
+ ldr r3, =gFieldEffectArguments
ldr r2, [r3]
strh r2, [r1, 0x26]
ldr r2, [r3, 0x4]
@@ -3363,7 +3363,7 @@ dive_2_unknown: @ 80B7558
push {r4,lr}
adds r4, r0, 0
bl ScriptContext2_Enable
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
movs r2, 0x26
ldrsh r0, [r4, r2]
str r0, [r1]
@@ -3536,7 +3536,7 @@ sub_80B76B8: @ 80B76B8
strh r0, [r2, 0x26]
movs r0, 0x1
strh r0, [r4, 0xE]
- ldr r3, =gFieldEffectSpawnParams
+ ldr r3, =gFieldEffectArguments
movs r5, 0x10
ldrsh r0, [r1, r5]
str r0, [r3]
@@ -3835,7 +3835,7 @@ sub_80B791C: @ 80B791C
lsls r0, 24
cmp r0, 0
beq _080B795C
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
movs r2, 0x10
ldrsh r0, [r5, r2]
str r0, [r1]
@@ -3919,7 +3919,7 @@ sub_80B79BC: @ 80B79BC
movs r0, 0
strb r0, [r1, 0x6]
bl ScriptContext2_Disable
- bl sub_809757C
+ bl UnfreezeMapObjects
ldr r0, =sub_80B7890
bl FindTaskIdByFunc
lsls r0, 24
@@ -3935,7 +3935,7 @@ _080B79E6:
thumb_func_start sub_80B79F4
sub_80B79F4: @ 80B79F4
push {r4,lr}
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
@@ -4090,7 +4090,7 @@ sub_80B7B18: @ 80B7B18
ldrsh r0, [r5, r2]
cmp r0, 0x3
ble _080B7B6C
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
movs r2, 0x10
ldrsh r0, [r4, r2]
str r0, [r1]
@@ -4222,7 +4222,7 @@ _080B7C2C:
thumb_func_start sub_80B7C48
sub_80B7C48: @ 80B7C48
push {r4,lr}
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
@@ -4583,7 +4583,7 @@ _080B7F32:
ands r0, r1
strb r0, [r6, 0x1]
bl ScriptContext2_Disable
- bl sub_809757C
+ bl UnfreezeMapObjects
ldr r0, =sub_80B7E94
bl FindTaskIdByFunc
lsls r0, 24
@@ -5194,7 +5194,7 @@ sub_80B8410: @ 80B8410
bne _080B8484
bl ScriptContext2_Disable
bl CameraObjectReset1
- bl sub_809757C
+ bl UnfreezeMapObjects
ldr r0, =sub_80B8250
bl FindTaskIdByFunc
lsls r0, 24
@@ -5229,7 +5229,7 @@ _080B84BE:
bl CreateTask
lsls r0, 24
lsrs r4, r0, 24
- ldr r2, =gFieldEffectSpawnParams
+ ldr r2, =gFieldEffectArguments
ldr r0, [r2]
ldr r1, [r2, 0x4]
ldr r2, [r2, 0x8]
@@ -5252,7 +5252,7 @@ _080B84BE:
thumb_func_start sub_80B84F8
sub_80B84F8: @ 80B84F8
push {r4-r6,lr}
- ldr r5, =gFieldEffectSpawnParams
+ ldr r5, =gFieldEffectArguments
ldr r0, [r5]
movs r6, 0x80
lsls r6, 24
@@ -6292,12 +6292,12 @@ sub_80B8D44: @ 80B8D44
adds r1, r0
lsls r1, 3
adds r1, r2
- ldr r0, =gFieldEffectSpawnParams
+ ldr r0, =gFieldEffectArguments
ldr r0, [r0]
strh r0, [r1, 0x26]
bl sav1_reset_battle_music_maybe
ldr r0, =0x0000016d
- bl sub_80858C4
+ bl Overworld_ChangeMusicTo
movs r0, 0
pop {r1}
bx r1
@@ -6421,7 +6421,7 @@ sub_80B8E60: @ 80B8E60
lsls r0, 24
cmp r0, 0
beq _080B8E96
- ldr r2, =gFieldEffectSpawnParams
+ ldr r2, =gFieldEffectArguments
movs r1, 0x26
ldrsh r0, [r4, r1]
movs r1, 0x80
@@ -6473,7 +6473,7 @@ sub_80B8EA8: @ 80B8EA8
lsrs r1, 24
adds r0, r4, 0
bl FieldObjectSetSpecialAnim
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
movs r2, 0xA
ldrsh r0, [r6, r2]
str r0, [r1]
@@ -6527,7 +6527,7 @@ sub_80B8F24: @ 80B8F24
ldrb r0, [r4, 0x1A]
movs r1, 0x1
bl sub_81555AC
- bl sub_809757C
+ bl UnfreezeMapObjects
bl ScriptContext2_Disable
movs r0, 0x9
bl FieldEffectActiveListRemove
@@ -6704,7 +6704,7 @@ sub_80B90CC: @ 80B90CC
strb r0, [r2, 0x5]
ldr r0, =sub_80B9128
str r0, [r2, 0x1C]
- ldr r0, =gFieldEffectSpawnParams
+ ldr r0, =gFieldEffectArguments
ldr r0, [r0]
strh r0, [r2, 0x30]
movs r0, 0x9E
@@ -6793,7 +6793,7 @@ sub_80B91A4: @ 80B91A4
adds r1, r0
lsls r1, 3
adds r1, r2
- ldr r0, =gFieldEffectSpawnParams
+ ldr r0, =gFieldEffectArguments
ldr r0, [r0]
strh r0, [r1, 0xA]
movs r0, 0
@@ -6884,7 +6884,7 @@ sub_80B925C: @ 80B925C
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
movs r2, 0xA
ldrsh r0, [r4, r2]
str r0, [r1]
@@ -7922,7 +7922,7 @@ _080B9ACA:
sub_80B9ADC: @ 80B9ADC
push {r4,lr}
sub sp, 0x4
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
ldrb r0, [r4]
ldrb r1, [r4, 0x4]
ldrb r2, [r4, 0x8]
@@ -8343,7 +8343,7 @@ _080B9E24:
sub_80B9E28: @ 80B9E28
push {r4-r7,lr}
sub sp, 0x4
- ldr r7, =gFieldEffectSpawnParams
+ ldr r7, =gFieldEffectArguments
ldrb r0, [r7]
ldrb r1, [r7, 0x4]
ldrb r2, [r7, 0x8]
diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s
index 223a27937..754a8f7ff 100644
--- a/asm/field_effect_helpers.s
+++ b/asm/field_effect_helpers.s
@@ -574,7 +574,7 @@ _0815432E:
thumb_func_start oei_shadow
oei_shadow: @ 8154340
push {r4,r5,lr}
- ldr r5, =gFieldEffectSpawnParams
+ ldr r5, =gFieldEffectArguments
ldrb r0, [r5]
ldrb r1, [r5, 0x4]
ldrb r2, [r5, 0x8]
@@ -742,7 +742,7 @@ _08154498:
oei_grass_normal: @ 81544AC
push {r4,r5,lr}
sub sp, 0x4
- ldr r5, =gFieldEffectSpawnParams
+ ldr r5, =gFieldEffectArguments
ldrh r1, [r5]
mov r0, sp
strh r1, [r0]
@@ -951,7 +951,7 @@ _08154648:
thumb_func_start sub_8154658
sub_8154658: @ 8154658
push {r4,lr}
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
@@ -1080,7 +1080,7 @@ _0815474C:
sub_8154758: @ 8154758
push {r4,r5,lr}
sub sp, 0x4
- ldr r5, =gFieldEffectSpawnParams
+ ldr r5, =gFieldEffectArguments
ldrh r1, [r5]
mov r0, sp
strh r1, [r0]
@@ -1282,7 +1282,7 @@ _081548EA:
thumb_func_start sub_81548FC
sub_81548FC: @ 81548FC
push {r4,lr}
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
@@ -1336,7 +1336,7 @@ _08154958:
thumb_func_start sub_815496C
sub_815496C: @ 815496C
push {r4-r6,lr}
- ldr r6, =gFieldEffectSpawnParams
+ ldr r6, =gFieldEffectArguments
ldrb r0, [r6]
ldrb r1, [r6, 0x4]
ldrb r2, [r6, 0x8]
@@ -1537,7 +1537,7 @@ _08154AF2:
thumb_func_start sub_8154B04
sub_8154B04: @ 8154B04
push {r4,lr}
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
@@ -1591,7 +1591,7 @@ _08154B62:
thumb_func_start sub_8154B78
sub_8154B78: @ 8154B78
push {r4,r5,lr}
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
@@ -1646,7 +1646,7 @@ _08154BD8:
thumb_func_start sub_8154BEC
sub_8154BEC: @ 8154BEC
push {r4,r5,lr}
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
@@ -1777,7 +1777,7 @@ _08154CE4:
thumb_func_start sub_8154CEC
sub_8154CEC: @ 8154CEC
push {r4-r6,lr}
- ldr r6, =gFieldEffectSpawnParams
+ ldr r6, =gFieldEffectArguments
ldrb r0, [r6]
ldrb r1, [r6, 0x4]
ldrb r2, [r6, 0x8]
@@ -1922,7 +1922,7 @@ _08154E0A:
thumb_func_start sub_8154E1C
sub_8154E1C: @ 8154E1C
push {r4,lr}
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
@@ -1976,7 +1976,7 @@ _08154E78:
thumb_func_start oei_water_drop_tall
oei_water_drop_tall: @ 8154E8C
push {r4,lr}
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
@@ -2030,7 +2030,7 @@ _08154EE8:
thumb_func_start sub_8154EFC
sub_8154EFC: @ 8154EFC
push {r4-r7,lr}
- ldr r7, =gFieldEffectSpawnParams
+ ldr r7, =gFieldEffectArguments
ldrb r0, [r7]
ldrb r1, [r7, 0x4]
ldrb r2, [r7, 0x8]
@@ -2193,7 +2193,7 @@ oei_ripples: @ 8155054
push {r4,lr}
ldr r0, =gFieldEffectObjectTemplatePointers
ldr r0, [r0, 0x14]
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
movs r2, 0
ldrsh r1, [r4, r2]
movs r3, 0x4
@@ -2238,7 +2238,7 @@ _081550A0:
thumb_func_start sub_81550B4
sub_81550B4: @ 81550B4
push {r4-r6,lr}
- ldr r6, =gFieldEffectSpawnParams
+ ldr r6, =gFieldEffectArguments
ldrb r0, [r6]
ldrb r1, [r6, 0x4]
ldrb r2, [r6, 0x8]
@@ -2393,7 +2393,7 @@ _081551E4:
thumb_func_start sub_81551F0
sub_81551F0: @ 81551F0
push {r4,lr}
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
@@ -2445,7 +2445,7 @@ _08155248:
thumb_func_start sub_815525C
sub_815525C: @ 815525C
push {r4,lr}
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
@@ -2497,7 +2497,7 @@ _081552B4:
thumb_func_start sub_81552C8
sub_81552C8: @ 81552C8
push {r4,lr}
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
@@ -2549,7 +2549,7 @@ _08155320:
thumb_func_start sub_8155334
sub_8155334: @ 8155334
push {r4,lr}
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
@@ -2603,7 +2603,7 @@ ash: @ 81553A0
push {r4,lr}
lsls r2, 16
lsrs r2, 16
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
lsls r0, 16
asrs r0, 16
str r0, [r4]
@@ -2630,7 +2630,7 @@ ash: @ 81553A0
oei_ash: @ 81553D4
push {r4,r5,lr}
sub sp, 0x4
- ldr r5, =gFieldEffectSpawnParams
+ ldr r5, =gFieldEffectArguments
ldrh r1, [r5]
mov r0, sp
strh r1, [r0]
@@ -2809,7 +2809,7 @@ _0815552C:
thumb_func_start sub_8155534
sub_8155534: @ 8155534
push {r4,r5,lr}
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
@@ -3261,7 +3261,7 @@ _08155888:
thumb_func_start sub_8155890
sub_8155890: @ 8155890
push {r4,lr}
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
@@ -3315,7 +3315,7 @@ _081558EC:
thumb_func_start sub_8155900
sub_8155900: @ 8155900
push {r4-r7,lr}
- ldr r7, =gFieldEffectSpawnParams
+ ldr r7, =gFieldEffectArguments
ldrb r0, [r7]
ldrb r1, [r7, 0x4]
ldrb r2, [r7, 0x8]
@@ -3505,7 +3505,7 @@ _08155A76:
thumb_func_start sub_8155A88
sub_8155A88: @ 8155A88
push {r4,lr}
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
@@ -3586,7 +3586,7 @@ _08155B20:
thumb_func_start sub_8155B2C
sub_8155B2C: @ 8155B2C
push {r4,lr}
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
adds r1, r4, 0x4
adds r0, r4, 0
movs r2, 0x8
@@ -3689,7 +3689,7 @@ ShowDisguiseFieldEffect: @ 8155BD0
lsrs r6, r1, 24
lsls r2, 24
lsrs r7, r2, 24
- ldr r5, =gFieldEffectSpawnParams
+ ldr r5, =gFieldEffectArguments
ldrb r0, [r5]
ldrb r1, [r5, 0x4]
ldrb r2, [r5, 0x8]
@@ -3950,7 +3950,7 @@ _08155DD8:
thumb_func_start sub_8155DDC
sub_8155DDC: @ 8155DDC
push {r4,lr}
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
ldr r0, [r4]
adds r0, 0x7
str r0, [r4]
diff --git a/asm/field_ground_effect.s b/asm/field_ground_effect.s
index 7d05dbd98..2152a5c5b 100644
--- a/asm/field_ground_effect.s
+++ b/asm/field_ground_effect.s
@@ -1166,7 +1166,7 @@ _08096E8C:
@ void GroundEffect_SpawnOnTallGrass(struct npc_state *fieldObject, struct obj *object)
GroundEffect_SpawnOnTallGrass: @ 8096E90
push {lr}
- ldr r3, =gFieldEffectSpawnParams
+ ldr r3, =gFieldEffectArguments
movs r2, 0x10
ldrsh r1, [r0, r2]
str r1, [r3]
@@ -1205,7 +1205,7 @@ GroundEffect_SpawnOnTallGrass: @ 8096E90
@ void GroundEffect_StepOnTallGrass(struct npc_state *fieldObject, struct obj *object)
GroundEffect_StepOnTallGrass: @ 8096EDC
push {lr}
- ldr r3, =gFieldEffectSpawnParams
+ ldr r3, =gFieldEffectArguments
movs r2, 0x10
ldrsh r1, [r0, r2]
str r1, [r3]
@@ -1244,7 +1244,7 @@ GroundEffect_StepOnTallGrass: @ 8096EDC
@ void GroundEffect_SpawnOnLongGrass(struct npc_state *fieldObject, struct obj *object)
GroundEffect_SpawnOnLongGrass: @ 8096F28
push {lr}
- ldr r3, =gFieldEffectSpawnParams
+ ldr r3, =gFieldEffectArguments
movs r2, 0x10
ldrsh r1, [r0, r2]
str r1, [r3]
@@ -1283,7 +1283,7 @@ GroundEffect_SpawnOnLongGrass: @ 8096F28
@ void GroundEffect_StepOnLongGrass(struct npc_state *fieldObject, struct obj *object)
GroundEffect_StepOnLongGrass: @ 8096F74
push {lr}
- ldr r3, =gFieldEffectSpawnParams
+ ldr r3, =gFieldEffectArguments
movs r2, 0x10
ldrsh r1, [r0, r2]
str r1, [r3]
@@ -1413,7 +1413,7 @@ DoTracksGroundEffect_Footprints: @ 8097044
mov r0, sp
movs r2, 0x4
bl memcpy
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
movs r2, 0x14
ldrsh r0, [r5, r2]
str r0, [r1]
@@ -1449,7 +1449,7 @@ DoTracksGroundEffect_BikeTireTracks: @ 8097094
ldr r0, [r4, 0x14]
cmp r1, r0
beq _080970D6
- ldr r2, =gFieldEffectSpawnParams
+ ldr r2, =gFieldEffectArguments
movs r1, 0x14
ldrsh r0, [r4, r1]
str r0, [r2]
@@ -1520,7 +1520,7 @@ GroundEffect_JumpOnTallGrass: @ 8097110
sub sp, 0x4
adds r5, r0, 0
adds r6, r1, 0
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
movs r2, 0x10
ldrsh r0, [r5, r2]
str r0, [r1]
@@ -1562,7 +1562,7 @@ _0809715A:
@ void GroundEffect_JumpOnLongGrass(struct npc_state *fieldObject, struct obj *object)
GroundEffect_JumpOnLongGrass: @ 8097168
push {lr}
- ldr r2, =gFieldEffectSpawnParams
+ ldr r2, =gFieldEffectArguments
movs r3, 0x10
ldrsh r1, [r0, r3]
str r1, [r2]
@@ -1585,7 +1585,7 @@ GroundEffect_JumpOnLongGrass: @ 8097168
@ void GroundEffect_JumpOnShallowWater(struct npc_state *fieldObject, struct obj *object)
GroundEffect_JumpOnShallowWater: @ 8097190
push {r4,lr}
- ldr r3, =gFieldEffectSpawnParams
+ ldr r3, =gFieldEffectArguments
movs r4, 0x10
ldrsh r2, [r0, r4]
str r2, [r3]
@@ -1611,7 +1611,7 @@ GroundEffect_JumpOnShallowWater: @ 8097190
@ void GroundEffect_JumpOnWater(struct npc_state *fieldObject, struct obj *object)
GroundEffect_JumpOnWater: @ 80971C0
push {r4,lr}
- ldr r3, =gFieldEffectSpawnParams
+ ldr r3, =gFieldEffectArguments
movs r4, 0x10
ldrsh r2, [r0, r4]
str r2, [r3]
@@ -1637,7 +1637,7 @@ GroundEffect_JumpOnWater: @ 80971C0
@ void GroundEffect_JumpLandingDust(struct npc_state *fieldObject, struct obj *object)
GroundEffect_JumpLandingDust: @ 80971F0
push {r4,lr}
- ldr r3, =gFieldEffectSpawnParams
+ ldr r3, =gFieldEffectArguments
movs r4, 0x10
ldrsh r2, [r0, r4]
str r2, [r3]
@@ -1685,7 +1685,7 @@ GroundEffect_HotSprings: @ 8097230
@ void GroundEffect_Seaweed(struct npc_state *fieldObject, struct obj *object)
GroundEffect_Seaweed: @ 8097240
push {lr}
- ldr r2, =gFieldEffectSpawnParams
+ ldr r2, =gFieldEffectArguments
movs r3, 0x10
ldrsh r1, [r0, r3]
str r1, [r2]
diff --git a/asm/field_message_box.s b/asm/field_message_box.s
index 35267e8d4..0c1fae6de 100644
--- a/asm/field_message_box.s
+++ b/asm/field_message_box.s
@@ -108,8 +108,8 @@ _080981E4:
.pool
thumb_func_end task_del_textbox
- thumb_func_start box_related_two__2
-box_related_two__2: @ 80981EC
+ thumb_func_start ShowFieldMessage
+ShowFieldMessage: @ 80981EC
push {r4,lr}
adds r1, r0, 0
ldr r4, =gUnknown_020375BC
@@ -130,7 +130,7 @@ _0809820E:
pop {r4}
pop {r1}
bx r1
- thumb_func_end box_related_two__2
+ thumb_func_end ShowFieldMessage
thumb_func_start sub_8098214
sub_8098214: @ 8098214
@@ -181,8 +181,8 @@ _08098272:
bx r1
thumb_func_end sub_8098238
- thumb_func_start box_related_two__3
-box_related_two__3: @ 8098278
+ thumb_func_start ShowFieldAutoScrollMessage
+ShowFieldAutoScrollMessage: @ 8098278
push {lr}
adds r1, r0, 0
ldr r2, =gUnknown_020375BC
@@ -202,7 +202,7 @@ _08098298:
_0809829A:
pop {r1}
bx r1
- thumb_func_end box_related_two__3
+ thumb_func_end ShowFieldAutoScrollMessage
thumb_func_start sub_80982A0
sub_80982A0: @ 80982A0
@@ -267,8 +267,8 @@ textbox_auto_and_task_add: @ 8098304
bx r0
thumb_func_end textbox_auto_and_task_add
- thumb_func_start textbox_close
-textbox_close: @ 8098314
+ thumb_func_start HideFieldMessageBox
+HideFieldMessageBox: @ 8098314
push {lr}
bl task_del_textbox
movs r0, 0
@@ -280,7 +280,7 @@ textbox_close: @ 8098314
pop {r0}
bx r0
.pool
- thumb_func_end textbox_close
+ thumb_func_end HideFieldMessageBox
thumb_func_start textbox_any_visible
textbox_any_visible: @ 8098330
@@ -290,8 +290,8 @@ textbox_any_visible: @ 8098330
.pool
thumb_func_end textbox_any_visible
- thumb_func_start sub_809833C
-sub_809833C: @ 809833C
+ thumb_func_start IsFieldMessageBoxHidden
+IsFieldMessageBoxHidden: @ 809833C
push {lr}
ldr r0, =gUnknown_020375BC
ldrb r0, [r0]
@@ -305,7 +305,7 @@ _08098350:
_08098352:
pop {r1}
bx r1
- thumb_func_end sub_809833C
+ thumb_func_end IsFieldMessageBoxHidden
thumb_func_start sub_8098358
sub_8098358: @ 8098358
diff --git a/asm/field_player_avatar.s b/asm/field_player_avatar.s
index 9f47c0a55..34ff54f61 100644
--- a/asm/field_player_avatar.s
+++ b/asm/field_player_avatar.s
@@ -1522,7 +1522,7 @@ PlayerAvatarTransition_Surfing: @ 808B4D8
bl FieldObjectTurn
movs r0, 0x8
bl SetPlayerAvatarStateMask
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
movs r2, 0x10
ldrsh r0, [r4, r2]
str r0, [r1]
@@ -3517,7 +3517,7 @@ _0808C3F0:
lsrs r1, 24
adds r0, r4, 0
bl FieldObjectSetSpecialAnim
- ldr r2, =gFieldEffectSpawnParams
+ ldr r2, =gFieldEffectArguments
movs r1, 0x10
ldrsh r0, [r4, r1]
str r0, [r2]
@@ -3897,7 +3897,7 @@ sub_808C750: @ 808C750
lsrs r4, 24
bl ScriptContext2_Enable
bl sav1_reset_battle_music_maybe
- bl sub_8085898
+ bl Overworld_ChangeMusicToDefault
ldr r2, =gPlayerAvatar
ldrb r1, [r2]
movs r0, 0xF7
@@ -4858,7 +4858,7 @@ fishF: @ 808CF2C
ldr r0, =gPlayerAvatar
strb r1, [r0, 0x6]
bl ScriptContext2_Disable
- bl sub_809757C
+ bl UnfreezeMapObjects
movs r0, 0
movs r1, 0x1
bl sub_8197434
diff --git a/asm/field_poison.s b/asm/field_poison.s
index 5b1e24719..652026523 100644
--- a/asm/field_poison.s
+++ b/asm/field_poison.s
@@ -178,7 +178,7 @@ _080F96A8:
strh r0, [r4]
b _080F9722
_080F96AE:
- bl sub_809833C
+ bl IsFieldMessageBoxHidden
lsls r0, 24
cmp r0, 0
beq _080F9722
@@ -217,7 +217,7 @@ _080F96FC:
ldrb r0, [r4, 0x2]
bl sub_80F95C0
ldr r0, =gText_PkmnFainted3
- bl box_related_two__2
+ bl ShowFieldMessage
ldrh r0, [r4]
adds r0, 0x1
strh r0, [r4]
diff --git a/asm/field_screen.s b/asm/field_screen.s
index 83fea2f44..4ab8a5a53 100644
--- a/asm/field_screen.s
+++ b/asm/field_screen.s
@@ -7503,8 +7503,8 @@ _080AED78:
bx r0
thumb_func_end bag_add_task0_by_acit
- thumb_func_start sub_80AED7C
-sub_80AED7C: @ 80AED7C
+ thumb_func_start SetSav1Weather
+SetSav1Weather: @ 80AED7C
push {r4,r5,lr}
ldr r4, =gSaveBlock1Ptr
ldr r1, [r4]
@@ -7525,7 +7525,7 @@ sub_80AED7C: @ 80AED7C
pop {r0}
bx r0
.pool
- thumb_func_end sub_80AED7C
+ thumb_func_end SetSav1Weather
thumb_func_start sav1_get_weather_probably
sav1_get_weather_probably: @ 80AEDAC
@@ -7564,7 +7564,7 @@ sub_80AEDBC: @ 80AEDBC
thumb_func_start sub_80AEDF0
sub_80AEDF0: @ 80AEDF0
push {lr}
- bl sub_80AED7C
+ bl SetSav1Weather
bl sav1_get_weather_probably
lsls r0, 24
lsrs r0, 24
@@ -7576,7 +7576,7 @@ sub_80AEDF0: @ 80AEDF0
thumb_func_start sub_80AEE08
sub_80AEE08: @ 80AEE08
push {lr}
- bl sub_80AED7C
+ bl SetSav1Weather
bl sav1_get_weather_probably
lsls r0, 24
lsrs r0, 24
@@ -7585,8 +7585,8 @@ sub_80AEE08: @ 80AEE08
bx r0
thumb_func_end sub_80AEE08
- thumb_func_start sub_80AEE20
-sub_80AEE20: @ 80AEE20
+ thumb_func_start DoCurrentWeather
+DoCurrentWeather: @ 80AEE20
push {r4,r5,lr}
bl sav1_get_weather_probably
lsls r0, 24
@@ -7627,7 +7627,7 @@ _080AEE6E:
pop {r0}
bx r0
.pool
- thumb_func_end sub_80AEE20
+ thumb_func_end DoCurrentWeather
thumb_func_start sub_80AEE84
sub_80AEE84: @ 80AEE84
@@ -8390,7 +8390,7 @@ _080AF480:
ldrsh r0, [r6, r1]
movs r2, 0
ldrsh r1, [r7, r2]
- bl sub_808A854
+ bl FieldSetDoorOpened
movs r0, 0x1
strh r0, [r5, 0x8]
b _080AF54A
@@ -8427,7 +8427,7 @@ _080AF4DC:
ldrsh r0, [r6, r1]
movs r2, 0
ldrsh r1, [r7, r2]
- bl sub_808A8AC
+ bl FieldAnimateDoorClose
lsls r0, 24
asrs r0, 24
strh r0, [r5, 0xA]
@@ -8461,7 +8461,7 @@ _080AF520:
cmp r0, 0x1
beq _080AF54A
_080AF536:
- bl sub_809757C
+ bl UnfreezeMapObjects
movs r0, 0x4
strh r0, [r5, 0x8]
b _080AF54A
@@ -8550,7 +8550,7 @@ _080AF5EC:
lsls r0, 24
cmp r0, 0
beq _080AF60A
- bl sub_809757C
+ bl UnfreezeMapObjects
movs r0, 0x3
strh r0, [r5, 0x8]
b _080AF60A
@@ -8593,7 +8593,7 @@ _080AF644:
bl sub_80AF71C
cmp r0, 0
beq _080AF65A
- bl sub_809757C
+ bl UnfreezeMapObjects
bl ScriptContext2_Disable
adds r0, r5, 0
bl DestroyTask
@@ -9142,7 +9142,7 @@ _080AFAD4:
movs r2, 0
ldrsh r1, [r6, r2]
subs r1, 0x1
- bl cur_mapdata_get_door_sound_at
+ bl GetDoorSoundEffect
lsls r0, 16
lsrs r0, 16
bl PlaySE
@@ -9151,7 +9151,7 @@ _080AFAD4:
movs r2, 0
ldrsh r1, [r6, r2]
subs r1, 0x1
- bl task_overworld_door_add_if_role_69_for_opening_door_at
+ bl FieldAnimateDoorOpen
lsls r0, 24
asrs r0, 24
strh r0, [r5, 0xA]
@@ -9211,7 +9211,7 @@ _080AFB6C:
movs r2, 0
ldrsh r1, [r6, r2]
subs r1, 0x1
- bl sub_808A8AC
+ bl FieldAnimateDoorClose
lsls r0, 24
asrs r0, 24
strh r0, [r5, 0xA]
@@ -9996,7 +9996,7 @@ _080B0198:
bl sub_808D1B4
cmp r0, 0x1
beq _080B01B6
- bl sub_809757C
+ bl UnfreezeMapObjects
bl ScriptContext2_Disable
adds r0, r5, 0
bl DestroyTask
diff --git a/asm/field_tasks.s b/asm/field_tasks.s
index 6f8174fd8..39bd3b545 100644
--- a/asm/field_tasks.s
+++ b/asm/field_tasks.s
@@ -46,7 +46,7 @@ _0809D8CA:
ands r0, r1
cmp r0, 0
beq _0809D8FC
- bl sub_809E7B0
+ bl DoTimeBasedEvents
ldrh r0, [r4]
adds r0, 0x1
b _0809D8FA
@@ -144,8 +144,8 @@ _0809D992:
.pool
thumb_func_end overworld_ensure_per_step_coros_running
- thumb_func_start activate_per_step_callback
-activate_per_step_callback: @ 809D9A8
+ thumb_func_start ActivatePerStepCallback
+ActivatePerStepCallback: @ 809D9A8
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
@@ -180,7 +180,7 @@ _0809D9EA:
pop {r4}
pop {r0}
bx r0
- thumb_func_end activate_per_step_callback
+ thumb_func_end ActivatePerStepCallback
thumb_func_start wild_encounter_reset_coro_args
wild_encounter_reset_coro_args: @ 809D9F0
diff --git a/asm/fldeff_80F9BCC.s b/asm/fldeff_80F9BCC.s
index 3ad2a398b..63acc9982 100644
--- a/asm/fldeff_80F9BCC.s
+++ b/asm/fldeff_80F9BCC.s
@@ -486,7 +486,7 @@ sub_80F9F78: @ 80F9F78
ands r0, r1
cmp r0, 0
beq _080F9FC0
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
ldr r0, [r1, 0x4]
cmp r0, 0x2
beq _080F9FAE
@@ -517,7 +517,7 @@ _080F9FB6:
movs r0, 0x18
b _080F9FFC
_080F9FC0:
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
ldr r0, [r1, 0x4]
cmp r0, 0x2
beq _080F9FEA
@@ -643,7 +643,7 @@ _080FA0C4:
sub_80FA0DC: @ 80FA0DC
push {lr}
bl brm_get_pokemon_selection
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
str r0, [r1]
@@ -701,7 +701,7 @@ sub_80FA13C: @ 80FA13C
ldrh r1, [r2, 0x2]
lsls r1, 23
lsrs r1, 23
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
ldr r3, [r4, 0x14]
adds r1, r3
lsls r1, 16
@@ -778,7 +778,7 @@ sub_80FA1D8: @ 80FA1D8
sub_80FA1E8: @ 80FA1E8
push {lr}
bl brm_get_pokemon_selection
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
str r0, [r1]
@@ -836,13 +836,13 @@ sub_80FA248: @ 80FA248
ands r2, r0
cmp r2, 0x96
bne _080FA26A
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
movs r0, 0
str r0, [r1, 0x1C]
_080FA26A:
cmp r2, 0x9C
bne _080FA274
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
movs r0, 0x2
str r0, [r1, 0x1C]
_080FA274:
@@ -858,7 +858,7 @@ _080FA274:
ldrh r1, [r2, 0x2]
lsls r1, 23
lsrs r1, 23
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
ldr r3, [r4, 0x14]
adds r1, r3
lsls r1, 16
@@ -891,7 +891,7 @@ sub_80FA2D8: @ 80FA2D8
adds r4, r0, 0
movs r0, 0x9B
bl PlaySE
- ldr r0, =gFieldEffectSpawnParams
+ ldr r0, =gFieldEffectArguments
ldr r1, [r0, 0x1C]
adds r2, r4, 0
adds r2, 0x2A
@@ -917,7 +917,7 @@ sub_80FA304: @ 80FA304
asrs r0, 16
cmp r0, 0x27
ble _080FA32E
- ldr r0, =gFieldEffectSpawnParams
+ ldr r0, =gFieldEffectArguments
ldr r0, [r0, 0x1C]
cmp r0, 0
beq _080FA322
@@ -951,7 +951,7 @@ sub_80FA33C: @ 80FA33C
sub_80FA34C: @ 80FA34C
push {lr}
bl brm_get_pokemon_selection
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
str r0, [r1]
@@ -1009,7 +1009,7 @@ sub_80FA3AC: @ 80FA3AC
ldrh r1, [r2, 0x2]
lsls r1, 23
lsrs r1, 23
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
ldr r3, [r4, 0x14]
adds r1, r3
lsls r1, 16
@@ -1807,7 +1807,7 @@ sub_80FAA7C: @ 80FAA7C
mov r0, sp
adds r1, r4, 0
bl GetXYCoordsOneStepInFrontOfPlayer
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
mov r0, sp
movs r2, 0
ldrsh r0, [r0, r2]
@@ -1930,7 +1930,7 @@ door_restore_tilemap: @ 80FABA4
adds r5, r0, 0
movs r0, 0x83
bl PlaySE
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
ldr r0, [r4, 0x14]
ldr r1, [r4, 0x18]
subs r1, 0x1
@@ -1953,7 +1953,7 @@ _080FABDC:
lsls r2, 2
bl MapGridSetMetatileIdAt
_080FABEA:
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
ldr r0, [r4, 0x14]
ldr r1, [r4, 0x18]
ldr r2, =0x0000020a
@@ -1988,7 +1988,7 @@ sub_80FAC24: @ 80FAC24
strh r0, [r5, 0x2E]
b _080FAC54
_080FAC38:
- ldr r4, =gFieldEffectSpawnParams
+ ldr r4, =gFieldEffectArguments
ldr r0, [r4, 0x14]
ldr r1, [r4, 0x18]
ldr r2, =0x00000e8c
diff --git a/asm/fldeff_cut.s b/asm/fldeff_cut.s
index 7f67185a9..e31bf22e2 100755
--- a/asm/fldeff_cut.s
+++ b/asm/fldeff_cut.s
@@ -385,7 +385,7 @@ hm2_ruin_valley: @ 80D3A50
movs r0, 0x1
bl FieldEffectStart
bl brm_get_pokemon_selection
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
str r0, [r1]
@@ -421,7 +421,7 @@ sub_80D3A6C: @ 80D3A6C
sub_80D3A9C: @ 80D3A9C
push {lr}
bl brm_get_pokemon_selection
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
str r0, [r1]
diff --git a/asm/fldeff_emotion.s b/asm/fldeff_emotion.s
deleted file mode 100644
index 37096a438..000000000
--- a/asm/fldeff_emotion.s
+++ /dev/null
@@ -1,328 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start oei_exclamation_mark
-oei_exclamation_mark: @ 80B4620
- push {lr}
- ldr r0, =gUnknown_085507B4
- movs r1, 0
- movs r2, 0
- movs r3, 0x53
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _080B4648
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- movs r1, 0
- movs r2, 0
- bl sub_80B46D8
-_080B4648:
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end oei_exclamation_mark
-
- thumb_func_start sub_80B4658
-sub_80B4658: @ 80B4658
- push {lr}
- ldr r0, =gUnknown_085507B4
- movs r1, 0
- movs r2, 0
- movs r3, 0x52
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _080B4680
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, =gSprites
- adds r0, r1
- movs r1, 0x21
- movs r2, 0x1
- bl sub_80B46D8
-_080B4680:
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B4658
-
- thumb_func_start sub_80B4690
-sub_80B4690: @ 80B4690
- push {r4,lr}
- ldr r0, =gUnknown_085507CC
- movs r1, 0
- movs r2, 0
- movs r3, 0x52
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _080B46C6
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- ldr r0, =gSprites
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x2E
- movs r2, 0
- bl sub_80B46D8
- ldrb r1, [r4, 0x5]
- movs r0, 0xF
- ands r0, r1
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r4, 0x5]
-_080B46C6:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B4690
-
- thumb_func_start sub_80B46D8
-@ void sub_80B46D8(struct obj *object, s16 a2, u8 a3)
-sub_80B46D8: @ 80B46D8
- push {r4,lr}
- lsls r2, 24
- lsrs r2, 24
- ldrb r4, [r0, 0x5]
- movs r3, 0xD
- negs r3, r3
- ands r3, r4
- movs r4, 0x4
- orrs r3, r4
- strb r3, [r0, 0x5]
- movs r3, 0x3E
- adds r3, r0
- mov r12, r3
- ldrb r3, [r3]
- movs r4, 0x2
- orrs r3, r4
- mov r4, r12
- strb r3, [r4]
- ldr r4, =gFieldEffectSpawnParams
- ldr r3, [r4]
- strh r3, [r0, 0x2E]
- ldr r3, [r4, 0x4]
- strh r3, [r0, 0x30]
- ldr r3, [r4, 0x8]
- strh r3, [r0, 0x32]
- ldr r3, =0x0000fffb
- strh r3, [r0, 0x34]
- strh r1, [r0, 0x3C]
- adds r1, r2, 0
- bl StartSpriteAnim
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B46D8
-
- thumb_func_start objc_exclamation_mark_probably
-objc_exclamation_mark_probably: @ 80B4724
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x30]
- lsls r1, 24
- lsrs r1, 24
- ldrh r2, [r4, 0x32]
- lsls r2, 24
- lsrs r2, 24
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- bne _080B4756
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080B4764
-_080B4756:
- ldrh r1, [r4, 0x3C]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl FieldEffectStop
- b _080B47B2
-_080B4764:
- ldr r2, =gMapObjects
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, =gSprites
- adds r1, r0
- ldrh r3, [r4, 0x34]
- ldrh r0, [r4, 0x36]
- adds r2, r3, r0
- strh r2, [r4, 0x36]
- ldrh r0, [r1, 0x20]
- strh r0, [r4, 0x20]
- ldrh r0, [r1, 0x22]
- subs r0, 0x10
- strh r0, [r4, 0x22]
- ldrh r0, [r1, 0x24]
- strh r0, [r4, 0x24]
- ldrh r0, [r1, 0x26]
- adds r0, r2
- strh r0, [r4, 0x26]
- lsls r2, 16
- asrs r2, 16
- cmp r2, 0
- beq _080B47B0
- adds r0, r3, 0x1
- strh r0, [r4, 0x34]
- b _080B47B2
- .pool
-_080B47B0:
- strh r2, [r4, 0x34]
-_080B47B2:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end objc_exclamation_mark_probably
-
- thumb_func_start sub_80B47BC
-sub_80B47BC: @ 80B47BC
- push {lr}
- ldr r0, =gUnknown_02038BFC
- ldrb r0, [r0]
- cmp r0, 0
- beq _080B47D4
- ldr r0, =gUnknown_03006090
- ldrb r0, [r0, 0xC]
- b _080B47D8
- .pool
-_080B47D4:
- ldr r0, =gUnknown_03006090
- ldrb r0, [r0]
-_080B47D8:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B47BC
-
- thumb_func_start sub_80B47E0
-sub_80B47E0: @ 80B47E0
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _080B47EE
- movs r0, 0
- b _080B4800
-_080B47EE:
- cmp r0, 0
- beq _080B47FC
- ldr r0, =gUnknown_03006090
- ldrb r0, [r0, 0xC]
- b _080B4800
- .pool
-_080B47FC:
- ldr r0, =gUnknown_03006090
- ldrb r0, [r0]
-_080B4800:
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80B47E0
-
- thumb_func_start sub_80B4808
-sub_80B4808: @ 80B4808
- push {lr}
- ldr r0, =gUnknown_030060AC
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080B4870
- ldr r2, =gUnknown_03006090
- ldr r0, =gUnknown_03006080
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =gMapObjects
- adds r0, r1
- ldrb r0, [r0, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetOppositeDirection
- lsls r0, 24
- lsrs r0, 24
- bl GetFaceDirectionAnimId
- ldr r3, =gUnknown_03006084
- strb r0, [r3]
- movs r0, 0xFE
- strb r0, [r3, 0x1]
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrb r1, [r0, 0x5]
- ldrb r2, [r0, 0x4]
- movs r0, 0xFF
- bl exec_movement
- b _080B489E
- .pool
-_080B4870:
- ldr r0, =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =gMapObjects
- adds r0, r1
- ldrb r0, [r0, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl GetFaceDirectionAnimId
- ldr r3, =gUnknown_03006084
- strb r0, [r3]
- movs r0, 0xFE
- strb r0, [r3, 0x1]
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrb r1, [r0, 0x5]
- ldrb r2, [r0, 0x4]
- movs r0, 0xFF
- bl exec_movement
-_080B489E:
- movs r0, 0xFF
- bl sub_809BE48
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80B4808
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/fldeff_groundshake.s b/asm/fldeff_groundshake.s
index cb0d2e2d8..81d92430e 100755
--- a/asm/fldeff_groundshake.s
+++ b/asm/fldeff_groundshake.s
@@ -161,7 +161,7 @@ sub_81BE79C: @ 81BE79C
beq _081BE7B8
movs r0, 0xA7
lsls r0, 1
- bl FlagReset
+ bl FlagClear
b _081BE7EE
.pool
_081BE7B8:
@@ -188,7 +188,7 @@ _081BE7D4:
_081BE7E6:
movs r0, 0xA7
lsls r0, 1
- bl FlagReset
+ bl FlagClear
_081BE7EE:
pop {r4}
pop {r0}
diff --git a/asm/fldeff_strength.s b/asm/fldeff_strength.s
index 98764625e..947517ed5 100644
--- a/asm/fldeff_strength.s
+++ b/asm/fldeff_strength.s
@@ -40,7 +40,7 @@ _08145DF2:
sub_8145E0C: @ 8145E0C
push {lr}
bl brm_get_pokemon_selection
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
str r0, [r1]
@@ -66,7 +66,7 @@ sub_8145E2C: @ 8145E2C
lsrs r0, r2, 16
strh r0, [r1, 0x18]
strh r2, [r1, 0x1A]
- ldr r0, =gFieldEffectSpawnParams
+ ldr r0, =gFieldEffectArguments
ldr r1, [r0]
movs r0, 0x64
muls r0, r1
diff --git a/asm/fldeff_sweetscent.s b/asm/fldeff_sweetscent.s
index 5c83b455d..ea7b2653a 100644
--- a/asm/fldeff_sweetscent.s
+++ b/asm/fldeff_sweetscent.s
@@ -24,7 +24,7 @@ hm2_sweet_scent: @ 8159F10
movs r0, 0x33
bl FieldEffectStart
bl brm_get_pokemon_selection
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
str r0, [r1]
diff --git a/asm/fldeff_teleport.s b/asm/fldeff_teleport.s
index e4f4bce42..d77e29dd2 100644
--- a/asm/fldeff_teleport.s
+++ b/asm/fldeff_teleport.s
@@ -39,7 +39,7 @@ hm_teleport_run_dp02scr: @ 817C8FC
movs r0, 0x3F
bl FieldEffectStart
bl brm_get_pokemon_selection
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
str r0, [r1]
diff --git a/asm/international_string_util.s b/asm/international_string_util.s
index 7c52fc41a..817a1d5e4 100755
--- a/asm/international_string_util.s
+++ b/asm/international_string_util.s
@@ -5,127 +5,6 @@
.text
- thumb_func_start GetStringCenterAlignXOffset
-@ s32 GetStringCenterAlignXOffset(u8 fontId, u8 *str, s32 totalWidth)
-GetStringCenterAlignXOffset: @ 81DB35C
- push {lr}
- movs r3, 0
- bl GetStringCenterAlignXOffsetWithLetterSpacing
- pop {r1}
- bx r1
- thumb_func_end GetStringCenterAlignXOffset
-
- thumb_func_start GetStringRightAlignXOffset
-@ s32 GetStringRightAlignXOffset(u8 fontId, u8 *str, s32 totalWidth)
-GetStringRightAlignXOffset: @ 81DB368
- push {lr}
- movs r3, 0
- bl GetStringWidthDifference
- pop {r1}
- bx r1
- thumb_func_end GetStringRightAlignXOffset
-
- thumb_func_start GetStringCenterAlignXOffsetWithLetterSpacing
-@ s32 GetStringCenterAlignXOffsetWithLetterSpacing(u8 fontId, u8 *str, s32 totalWidth, s16 letterSpacing)
-GetStringCenterAlignXOffsetWithLetterSpacing: @ 81DB374
- push {lr}
- bl GetStringWidthDifference
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- pop {r1}
- bx r1
- thumb_func_end GetStringCenterAlignXOffsetWithLetterSpacing
-
- thumb_func_start GetStringWidthDifference
-@ s32 GetStringWidthDifference(u8 fontId, u8 *str, s32 totalWidth, s16 letterSpacing)
-GetStringWidthDifference: @ 81DB384
- push {r4,lr}
- adds r4, r2, 0
- adds r2, r3, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r2, 16
- asrs r2, 16
- bl GetStringWidth
- cmp r4, r0
- bgt _081DB39E
- movs r0, 0
- b _081DB3A0
-_081DB39E:
- subs r0, r4, r0
-_081DB3A0:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end GetStringWidthDifference
-
- thumb_func_start GetMaxWidthInMenuTable
-GetMaxWidthInMenuTable: @ 81DB3A8
- push {r4-r6,lr}
- movs r6, 0
- cmp r6, r1
- bge _081DB3CC
- adds r5, r0, 0
- adds r4, r1, 0
-_081DB3B4:
- ldr r1, [r5]
- movs r0, 0x1
- movs r2, 0
- bl GetStringWidth
- cmp r0, r6
- ble _081DB3C4
- adds r6, r0, 0
-_081DB3C4:
- adds r5, 0x8
- subs r4, 0x1
- cmp r4, 0
- bne _081DB3B4
-_081DB3CC:
- adds r0, r6, 0
- bl convert_pixel_width_to_tile_width
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end GetMaxWidthInMenuTable
-
- thumb_func_start sub_81DB3D8
-sub_81DB3D8: @ 81DB3D8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- mov r8, r0
- adds r7, r1, 0
- adds r5, r2, 0
- movs r6, 0
- movs r4, 0
- cmp r6, r5
- bge _081DB40A
-_081DB3EC:
- adds r0, r7, r4
- ldrb r0, [r0]
- lsls r0, 3
- add r0, r8
- ldr r1, [r0]
- movs r0, 0x1
- movs r2, 0
- bl GetStringWidth
- cmp r0, r6
- ble _081DB404
- adds r6, r0, 0
-_081DB404:
- adds r4, 0x1
- cmp r4, r5
- blt _081DB3EC
-_081DB40A:
- adds r0, r6, 0
- bl convert_pixel_width_to_tile_width
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_81DB3D8
thumb_func_start sub_81DB41C
sub_81DB41C: @ 81DB41C
@@ -389,8 +268,8 @@ _081DB5E4:
bx r0
thumb_func_end sub_81DB5AC
- thumb_func_start sub_81DB5E8
-sub_81DB5E8: @ 81DB5E8
+ thumb_func_start TVShowConvertInternationalString
+TVShowConvertInternationalString: @ 81DB5E8
push {r4,r5,lr}
adds r5, r0, 0
adds r4, r2, 0
@@ -403,7 +282,7 @@ sub_81DB5E8: @ 81DB5E8
pop {r4,r5}
pop {r0}
bx r0
- thumb_func_end sub_81DB5E8
+ thumb_func_end TVShowConvertInternationalString
thumb_func_start sub_81DB604
sub_81DB604: @ 81DB604
diff --git a/asm/item.s b/asm/item.s
index 97582e190..89177c5d4 100644
--- a/asm/item.s
+++ b/asm/item.s
@@ -676,8 +676,8 @@ _080D6D04:
.pool
thumb_func_end sub_80D6CE4
- thumb_func_start sub_80D6D1C
-sub_80D6D1C: @ 80D6D1C
+ thumb_func_start CheckPCHasItem
+CheckPCHasItem: @ 80D6D1C
push {r4-r6,lr}
lsls r0, 16
lsrs r6, r0, 16
@@ -717,10 +717,10 @@ _080D6D68:
pop {r4-r6}
pop {r1}
bx r1
- thumb_func_end sub_80D6D1C
+ thumb_func_end CheckPCHasItem
- thumb_func_start sub_80D6D70
-sub_80D6D70: @ 80D6D70
+ thumb_func_start AddPCItem
+AddPCItem: @ 80D6D70
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -819,7 +819,7 @@ _080D6E3A:
pop {r1}
bx r1
.pool
- thumb_func_end sub_80D6D70
+ thumb_func_end AddPCItem
thumb_func_start sub_80D6E48
sub_80D6E48: @ 80D6E48
diff --git a/asm/item_menu.s b/asm/item_menu.s
index c1f94b4e9..1e4dfca49 100755
--- a/asm/item_menu.s
+++ b/asm/item_menu.s
@@ -5388,7 +5388,7 @@ _081ADB6C:
ldrh r0, [r4]
mov r3, r8
ldrh r1, [r3, 0x10]
- bl sub_80D6D70
+ bl AddPCItem
lsls r0, 24
lsrs r6, r0, 24
cmp r6, 0x1
diff --git a/asm/item_use.s b/asm/item_use.s
index 42b2d8bc0..d3c724166 100644
--- a/asm/item_use.s
+++ b/asm/item_use.s
@@ -2215,7 +2215,7 @@ ItemUseOutOfBattle_BlackWhiteFlute: @ 80FE234
ldr r0, =0x000008ad
bl FlagSet
ldr r0, =0x000008ae
- bl FlagReset
+ bl FlagClear
ldr r0, =gStringVar4
ldr r1, =gText_UsedVar2WildLured
bl StringExpandPlaceholders
@@ -2225,7 +2225,7 @@ _080FE278:
ldr r0, =0x000008ae
bl FlagSet
ldr r0, =0x000008ad
- bl FlagReset
+ bl FlagClear
ldr r0, =gStringVar4
ldr r1, =gText_UsedVar2WildRepelled
bl StringExpandPlaceholders
diff --git a/asm/link.s b/asm/link.s
index fb20b1fb2..91f5076b6 100644
--- a/asm/link.s
+++ b/asm/link.s
@@ -1371,8 +1371,8 @@ _08009FC4:
.pool
thumb_func_end sub_8009FAC
- thumb_func_start sub_8009FCC
-sub_8009FCC: @ 8009FCC
+ thumb_func_start GetLinkPlayerCount
+GetLinkPlayerCount: @ 8009FCC
push {lr}
ldr r0, =gLinkVSyncDisabled
ldrb r0, [r0]
@@ -1392,14 +1392,14 @@ _08009FEC:
_08009FF4:
pop {r1}
bx r1
- thumb_func_end sub_8009FCC
+ thumb_func_end GetLinkPlayerCount
thumb_func_start sub_8009FF8
sub_8009FF8: @ 8009FF8
push {r4-r7,lr}
adds r6, r0, 0
adds r5, r1, 0
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r4, r0, 24
movs r2, 0
@@ -1442,7 +1442,7 @@ sub_800A03C: @ 800A03C
thumb_func_start sub_800A040
sub_800A040: @ 800A040
push {lr}
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r0, 0x4
@@ -1546,7 +1546,7 @@ _0800A0EA:
b _0800A22E
.pool
_0800A0FC:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
cmp r0, 0
bne _0800A10E
@@ -1572,12 +1572,12 @@ _0800A130:
adds r5, 0x1C
adds r6, 0x1
_0800A134:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r6, r0
blt _0800A120
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r7, r0
@@ -1714,12 +1714,12 @@ _0800A266:
lsls r0, 24
lsrs r4, r0, 24
_0800A26C:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r4, r0
bcc _0800A24C
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r6, r0
@@ -1742,8 +1742,8 @@ _0800A298:
.pool
thumb_func_end sub_800A23C
- thumb_func_start sub_800A2A4
-sub_800A2A4: @ 800A2A4
+ thumb_func_start GetLinkPlayerTrainerId
+GetLinkPlayerTrainerId: @ 800A2A4
lsls r0, 24
lsrs r0, 24
ldr r2, =gLinkPlayers
@@ -1755,7 +1755,7 @@ sub_800A2A4: @ 800A2A4
ldr r0, [r1]
bx lr
.pool
- thumb_func_end sub_800A2A4
+ thumb_func_end GetLinkPlayerTrainerId
thumb_func_start sub_800A2BC
sub_800A2BC: @ 800A2BC
@@ -2697,7 +2697,7 @@ _0800A9E2:
lsrs r4, r0, 24
adds r5, 0x1
_0800A9EE:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r5, r0
@@ -3044,7 +3044,7 @@ _0800AC96:
thumb_func_start sub_800ACAC
sub_800ACAC: @ 800ACAC
push {r4,lr}
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r2, r0, 24
movs r3, 0
@@ -3142,7 +3142,7 @@ _0800AD72:
thumb_func_start sub_800AD88
sub_800AD88: @ 800AD88
push {r4,r5,lr}
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r3, r0, 24
movs r1, 0
@@ -3239,7 +3239,7 @@ _0800AE46:
thumb_func_start sub_800AE5C
sub_800AE5C: @ 800AE5C
push {r4,lr}
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r2, r0, 24
movs r1, 0
@@ -9671,7 +9671,7 @@ _0800E1C8:
lsls r0, 24
lsrs r5, r0, 24
_0800E1E6:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
subs r0, 0x1
@@ -9965,7 +9965,7 @@ _0800E428:
ble _0800E3FC
mov r4, r9
_0800E434:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r4, r0
@@ -10019,7 +10019,7 @@ _0800E4A6:
adds r5, 0x1C
adds r4, 0x1
_0800E4AC:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r4, r0
@@ -13627,7 +13627,7 @@ sub_80102B8: @ 80102B8
bl sub_800FD14
strh r4, [r5]
_080102E6:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r2, r0, 24
movs r1, 0
@@ -13734,7 +13734,7 @@ sub_8010390: @ 8010390
b _0801041C
.pool
_080103CC:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r2, r0, 24
movs r1, 0x1
@@ -15290,7 +15290,7 @@ _08011048:
strb r0, [r1, 0x3]
adds r4, 0x1
_08011054:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r4, r0
@@ -20950,12 +20950,12 @@ _08014138:
adds r5, 0x1C
adds r4, 0x1
_08014152:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r4, r0
blt _08014138
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2
@@ -21117,7 +21117,7 @@ sub_8014290: @ 8014290
asrs r5, 24
str r5, [sp]
adds r3, r4, 0
- bl warp1_set
+ bl Overworld_SetWarpDestination
ldr r0, [r6]
movs r1, 0x4
ldrsb r1, [r0, r1]
@@ -21159,7 +21159,7 @@ sub_8014304: @ 8014304
strh r1, [r0]
ldr r0, =0x00004087
bl VarSet
- bl sub_8009FCC
+ bl GetLinkPlayerCount
ldr r1, =gUnknown_03005DB8
strb r0, [r1]
bl GetMultiplayerId
@@ -21182,7 +21182,7 @@ sub_8014304: @ 8014304
adds r0, r4, 0
adds r1, r5, 0
mov r3, r8
- bl warp1_set
+ bl Overworld_SetWarpDestination
bl warp_in
add sp, 0x4
pop {r3}
@@ -28312,7 +28312,7 @@ _080181BC:
sub_80181CC: @ 80181CC
push {lr}
bl ScriptContext2_Enable
- bl sub_80983E8
+ bl ScriptFreezeMapObjects
pop {r0}
bx r0
thumb_func_end sub_80181CC
@@ -31292,7 +31292,7 @@ flag_clear_x63: @ 8019A64
adds r0, r1
lsls r0, 16
lsrs r0, 16
- bl FlagReset
+ bl FlagClear
pop {r0}
bx r0
.pool
@@ -39697,7 +39697,7 @@ sub_801DDD0: @ 801DDD0
strb r5, [r4, 0x16]
movs r0, 0xFF
strb r0, [r4, 0x1A]
- bl sub_8009FCC
+ bl GetLinkPlayerCount
strb r0, [r4, 0xD]
bl GetMultiplayerId
strb r0, [r4, 0x13]
@@ -42285,7 +42285,7 @@ _0801F30A:
movs r0, 0x1
strh r0, [r4]
_0801F30E:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
adds r2, r0, 0
@@ -42446,7 +42446,7 @@ _0801F448:
ldrsh r0, [r4, r3]
cmp r0, 0
beq _0801F47C
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2
@@ -45504,7 +45504,7 @@ _08020C8E:
b _08020CF8
.pool
_08020CAC:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
mov r8, r0
@@ -53271,7 +53271,7 @@ _08024B2C:
_08024B6A:
ldr r0, [sp, 0x10]
strb r1, [r0]
- bl sub_8009FCC
+ bl GetLinkPlayerCount
mov r1, r8
strb r0, [r1]
bl GetMultiplayerId
@@ -57700,7 +57700,7 @@ _08026EF6:
adds r4, 0xC
adds r5, 0x1
_08026EFE:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r5, r0
@@ -59511,7 +59511,7 @@ _08027C76:
thumb_func_start sub_8027D20
sub_8027D20: @ 8027D20
push {lr}
- bl sub_8009FCC
+ bl GetLinkPlayerCount
ldr r1, =gUnknown_02022C98
ldr r1, [r1]
adds r1, 0x24
@@ -64891,7 +64891,7 @@ sub_802AA48: @ 802AA48
sub_802AA60: @ 802AA60
push {r4,lr}
adds r4, r0, 0
- bl sub_8009FCC
+ bl GetLinkPlayerCount
movs r2, 0
strb r0, [r4, 0x5]
adds r1, r4, 0
@@ -68775,7 +68775,7 @@ _0802C8A4:
thumb_func_start sub_802C8AC
sub_802C8AC: @ 802C8AC
push {lr}
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
pop {r1}
diff --git a/asm/main_menu.s b/asm/main_menu.s
index 40466ae1b..6194f0487 100644
--- a/asm/main_menu.s
+++ b/asm/main_menu.s
@@ -119,11 +119,11 @@ InitMainMenu: @ 802F6F4
str r0, [r1, 0x8]
ldr r0, [r1, 0x8]
bl ResetPaletteFade
- ldr r0, =gUnknown_082FF0A0
+ ldr r0, =gMainMenuBgPal
movs r1, 0
movs r2, 0x20
bl LoadPalette
- ldr r0, =gUnknown_082FF0C0
+ ldr r0, =gMainMenuTextPal
movs r1, 0xF0
movs r2, 0x20
bl LoadPalette
@@ -1914,7 +1914,7 @@ task_new_game_prof_birch_speech_1: @ 80307B0
movs r0, 0x54
movs r1, 0
bl SetGpuReg
- ldr r0, =gUnknown_082FED3C
+ ldr r0, =gBirchIntroShadowGfx
movs r1, 0xC0
lsls r1, 19
bl LZ77UnCompVram
@@ -3679,7 +3679,7 @@ new_game_prof_birch_speech_part2_start: @ 8031678
str r0, [r1, 0x8]
ldr r0, [r1, 0x8]
bl ResetPaletteFade
- ldr r0, =gUnknown_082FED3C
+ ldr r0, =gBirchIntroShadowGfx
adds r1, r4, 0
bl LZ77UnCompVram
ldr r0, =gUnknown_082FEEF0
@@ -3689,7 +3689,7 @@ new_game_prof_birch_speech_part2_start: @ 8031678
movs r1, 0
movs r2, 0x40
bl LoadPalette
- ldr r0, =gUnknown_082FF01A
+ ldr r0, =gUnknown_082FF018+2
movs r1, 0x1
movs r2, 0x10
bl LoadPalette
@@ -4459,11 +4459,11 @@ set_default_player_name: @ 8031DC4
adds r5, r1, 0
cmp r0, 0
bne _08031DE4
- ldr r1, =gUnknown_082FF128
+ ldr r1, =gMalePresetNames
b _08031DE6
.pool
_08031DE4:
- ldr r1, =gUnknown_082FF178
+ ldr r1, =gFemalePresetNames
_08031DE6:
lsls r0, r2, 2
adds r0, r1
diff --git a/asm/map_obj_8097404.s b/asm/map_obj_8097404.s
index 4ed8e3bcd..96ffc2254 100644
--- a/asm/map_obj_8097404.s
+++ b/asm/map_obj_8097404.s
@@ -205,8 +205,8 @@ _0809756C:
.pool
thumb_func_end npc_sync_anim_pause_bits
- thumb_func_start sub_809757C
-sub_809757C: @ 809757C
+ thumb_func_start UnfreezeMapObjects
+UnfreezeMapObjects: @ 809757C
push {r4,r5,lr}
movs r4, 0
ldr r5, =gMapObjects
@@ -231,7 +231,7 @@ _08097598:
pop {r0}
bx r0
.pool
- thumb_func_end sub_809757C
+ thumb_func_end UnfreezeMapObjects
thumb_func_start little_step
@ void little_step(struct obj *object, u8 direction)
@@ -1396,7 +1396,7 @@ oe_exec_and_other_stuff: @ 8097DD0
adds r0, r1, 0
lsls r4, 24
lsrs r4, 24
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
adds r2, r1, 0x4
adds r3, r1, 0
adds r3, 0x8
@@ -1434,7 +1434,7 @@ DoRippleFieldEffect: @ 8097E14
adds r4, r1, 0
ldrb r0, [r0, 0x5]
bl GetFieldObjectGraphicsInfo
- ldr r2, =gFieldEffectSpawnParams
+ ldr r2, =gFieldEffectArguments
movs r3, 0x20
ldrsh r1, [r4, r3]
str r1, [r2]
diff --git a/asm/map_obj_lock.s b/asm/map_obj_lock.s
index 60757cdd0..ee60814f5 100644
--- a/asm/map_obj_lock.s
+++ b/asm/map_obj_lock.s
@@ -59,8 +59,8 @@ _080983E2:
bx r1
thumb_func_end sub_80983C4
- thumb_func_start sub_80983E8
-sub_80983E8: @ 80983E8
+ thumb_func_start ScriptFreezeMapObjects
+ScriptFreezeMapObjects: @ 80983E8
push {lr}
bl player_bitmagic
ldr r0, =sub_80983A4
@@ -69,7 +69,7 @@ sub_80983E8: @ 80983E8
pop {r0}
bx r0
.pool
- thumb_func_end sub_80983E8
+ thumb_func_end ScriptFreezeMapObjects
thumb_func_start sub_8098400
sub_8098400: @ 8098400
@@ -149,8 +149,8 @@ _0809849A:
bx r1
thumb_func_end sub_809847C
- thumb_func_start sub_80984A0
-sub_80984A0: @ 80984A0
+ thumb_func_start LockSelectedMapObject
+LockSelectedMapObject: @ 80984A0
push {r4,r5,lr}
ldr r4, =gSelectedMapObject
ldrb r0, [r4]
@@ -184,7 +184,7 @@ _080984DE:
pop {r0}
bx r0
.pool
- thumb_func_end sub_80984A0
+ thumb_func_end LockSelectedMapObject
thumb_func_start sub_80984F4
sub_80984F4: @ 80984F4
@@ -203,7 +203,7 @@ sub_80984F4: @ 80984F4
adds r0, r1
bl FieldObjectClearAnimIfSpecialAnimFinished
bl sub_80D338C
- bl sub_809757C
+ bl UnfreezeMapObjects
pop {r0}
bx r0
.pool
@@ -239,7 +239,7 @@ _08098542:
adds r0, r4
bl FieldObjectClearAnimIfSpecialAnimFinished
bl sub_80D338C
- bl sub_809757C
+ bl UnfreezeMapObjects
pop {r4}
pop {r0}
bx r0
diff --git a/asm/mauville_old_man.s b/asm/mauville_old_man.s
index 7b21e19e7..4972d4096 100644
--- a/asm/mauville_old_man.s
+++ b/asm/mauville_old_man.s
@@ -1392,7 +1392,7 @@ _08120BB0:
movs r0, 0xFF
strb r0, [r7, 0x7]
mov r0, sp
- bl sub_8009228
+ bl IsStringJapanese
cmp r0, 0
beq _08120BF8
mov r0, sp
@@ -1458,7 +1458,7 @@ _08120C48:
muls r0, r5
adds r0, 0x5
adds r0, r6, r0
- bl sub_8009228
+ bl IsStringJapanese
cmp r0, 0
beq _08120C5E
mov r0, r8
@@ -1480,7 +1480,7 @@ _08120C6A:
movs r5, 0x3
_08120C74:
adds r0, r6, 0
- bl sub_8009228
+ bl IsStringJapanese
cmp r0, 0
beq _08120C84
mov r1, r8
@@ -1569,7 +1569,7 @@ _08120CF2:
mov r1, r8
strb r0, [r1, 0x7]
mov r0, sp
- bl sub_8009228
+ bl IsStringJapanese
cmp r0, 0
beq _08120D1A
movs r0, 0x1
@@ -2205,7 +2205,7 @@ sub_8121178: @ 8121178
bl ConvertInternationalString
mov r0, r8
bl sub_8120EC0
- bl box_related_two__2
+ bl ShowFieldMessage
pop {r3}
mov r8, r3
pop {r4-r6}
diff --git a/asm/mystery_event_script.s b/asm/mystery_event_script.s
index d544f689f..ce8591981 100644
--- a/asm/mystery_event_script.s
+++ b/asm/mystery_event_script.s
@@ -46,7 +46,7 @@ sub_8153804: @ 8153804
ldr r1, =gUnknown_08674C86
bl StringExpandPlaceholders
movs r0, 0x3
- bl sub_81538C4
+ bl SetMysteryEventScriptStatus
pop {r0}
bx r0
.pool
@@ -140,13 +140,13 @@ _081538AC:
.pool
thumb_func_end sub_81538A0
- thumb_func_start sub_81538C4
-sub_81538C4: @ 81538C4
+ thumb_func_start SetMysteryEventScriptStatus
+SetMysteryEventScriptStatus: @ 81538C4
ldr r1, =gUnknown_0203BBC0
str r0, [r1, 0x6C]
bx lr
.pool
- thumb_func_end sub_81538C4
+ thumb_func_end SetMysteryEventScriptStatus
thumb_func_start sub_81538D0
sub_81538D0: @ 81538D0
diff --git a/asm/party_menu.s b/asm/party_menu.s
index a881d4589..50dc3c54e 100755
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -10051,7 +10051,7 @@ task_launch_hm_phase_2: @ 81B5750
cmp r0, 0x1
bne _081B577C
bl brm_get_selected_species
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
lsls r0, 16
lsrs r0, 16
str r0, [r1]
@@ -10135,7 +10135,7 @@ _081B57FE:
hm_surf_run_dp02scr: @ 81B5804
push {lr}
bl brm_get_pokemon_selection
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
str r0, [r1]
@@ -10239,7 +10239,7 @@ sub_81B58A8: @ 81B58A8
hm2_waterfall: @ 81B58D4
push {lr}
bl brm_get_pokemon_selection
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
str r0, [r1]
@@ -10299,7 +10299,7 @@ _081B594E:
sub_81B5958: @ 81B5958
push {lr}
bl brm_get_pokemon_selection
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
str r0, [r1]
@@ -10314,7 +10314,7 @@ sub_81B5958: @ 81B5958
sub_81B5974: @ 81B5974
push {lr}
bl sub_809D1E8
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
str r0, [r1, 0x4]
@@ -15205,7 +15205,7 @@ sub_81B841C: @ 81B841C
beq _081B8438
adds r0, r1, 0
movs r1, 0x1
- bl sub_80D6D70
+ bl AddPCItem
b _081B8440
.pool
_081B8438:
@@ -15872,7 +15872,7 @@ sub_81B8958: @ 81B8958
thumb_func_start sub_81B8984
sub_81B8984: @ 81B8984
push {lr}
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
bne _081B8994
@@ -16222,7 +16222,7 @@ _081B8CB0:
strb r0, [r6, 0x2]
b _081B8D58
_081B8CBE:
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
bne _081B8CFC
@@ -16382,7 +16382,7 @@ _081B8DE2:
strb r0, [r5, 0x2]
b _081B8E72
_081B8DF0:
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
bne _081B8E28
diff --git a/asm/player_pc.s b/asm/player_pc.s
index 14062347c..cd91ed3e1 100644
--- a/asm/player_pc.s
+++ b/asm/player_pc.s
@@ -31,7 +31,7 @@ _0816AE1A:
ldrh r0, [r0]
adds r1, r6
ldrh r1, [r1]
- bl sub_80D6D70
+ bl AddPCItem
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
diff --git a/asm/pokeball.s b/asm/pokeball.s
index 4e637fb9d..fed227c80 100755
--- a/asm/pokeball.s
+++ b/asm/pokeball.s
@@ -1211,7 +1211,7 @@ _08075DD4:
cmp r5, r0
bne _08075E56
_08075E00:
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08075E56
@@ -1243,7 +1243,7 @@ _08075E4C:
movs r2, 0x80
bl m4aMPlayVolumeControl
_08075E56:
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08075E70
@@ -1815,7 +1815,7 @@ _080762F8:
ldrb r0, [r5, 0x6]
strh r0, [r5, 0x3A]
strh r1, [r5, 0x2E]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _08076358
@@ -1888,7 +1888,7 @@ sub_8076398: @ 8076398
ble _080763EC
movs r0, 0
strh r0, [r5, 0x2E]
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _080763E8
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index 6c4c7ff13..298409e9c 100755
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -6902,7 +6902,7 @@ sub_80CABE0: @ 80CABE0
cmp r1, r0
beq _080CAC0A
ldr r0, =0x000008d7
- bl FlagReset
+ bl FlagClear
ldr r4, =0x00004036
bl StorageGetCurrentBox
adds r1, r0, 0
diff --git a/asm/record_mixing.s b/asm/record_mixing.s
index aacc5baa0..31d8d55e9 100644
--- a/asm/record_mixing.s
+++ b/asm/record_mixing.s
@@ -1162,7 +1162,7 @@ _080E7714:
lsrs r0, 24
mov r8, r0
_080E771C:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r8, r0
@@ -1179,7 +1179,7 @@ _080E771C:
adds r1, 0x1
strh r1, [r0, 0x8]
_080E773E:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
ldr r4, [sp, 0x8]
@@ -1312,7 +1312,7 @@ sub_80E7820: @ 80E7820
sub_80E7830: @ 80E7830
push {r4,lr}
adds r4, r0, 0
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r0, 0x3
@@ -1341,7 +1341,7 @@ _080E7856:
.pool
_080E7868:
movs r0, 0
- bl sub_800A2A4
+ bl GetLinkPlayerTrainerId
adds r2, r0, 0
movs r0, 0x1
ands r2, r0
@@ -1362,7 +1362,7 @@ _080E7880:
.pool
_080E7894:
movs r0, 0
- bl sub_800A2A4
+ bl GetLinkPlayerTrainerId
movs r1, 0x9
bl __umodsi3
adds r2, r0, 0
@@ -1523,7 +1523,7 @@ _080E79CE:
adds r4, r1, 0
adds r4, 0x20
adds r0, r4, 0
- bl sub_8009228
+ bl IsStringJapanese
cmp r0, 0
beq _080E79F2
adds r0, r4, 0
@@ -1738,7 +1738,7 @@ sub_80E7B60: @ 80E7B60
ldr r0, =gLinkPlayers
ldrh r0, [r0, 0x4]
bl SeedRng2
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r4, r0, 24
movs r0, 0
@@ -1878,7 +1878,7 @@ _080E7C9A:
bne _080E7CEE
adds r0, r5, 0
adds r0, 0x24
- bl sub_8009228
+ bl IsStringJapanese
cmp r0, 0
beq _080E7CBA
adds r0, r5, 0
@@ -1901,7 +1901,7 @@ _080E7CC6:
adds r4, r0, 0
adds r0, r5, 0
adds r0, 0x2C
- bl sub_8009228
+ bl IsStringJapanese
cmp r0, 0
beq _080E7CE2
ldrb r0, [r4]
@@ -1931,7 +1931,7 @@ _080E7CFA:
lsrs r0, 16
mov r8, r0
_080E7D04:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r8, r0
@@ -2266,7 +2266,7 @@ sub_80E7F68: @ 80E7F68
bne _080E7FE4
ldrh r0, [r4]
movs r1, 0x1
- bl sub_80D6D1C
+ bl CheckPCHasItem
lsls r0, 24
cmp r0, 0
bne _080E7FE4
@@ -3557,7 +3557,7 @@ sub_80E89AC: @ 80E89AC
adds r6, r0, 0
mov r8, r1
mov r9, r2
- bl sub_8009FCC
+ bl GetLinkPlayerCount
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
diff --git a/asm/recorded_battle.s b/asm/recorded_battle.s
index e742cbe7d..2209312c2 100644
--- a/asm/recorded_battle.s
+++ b/asm/recorded_battle.s
@@ -125,7 +125,7 @@ _08184EAC:
bl GetMultiplayerId
ldr r1, =gUnknown_0203C7B4
strb r0, [r1]
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
mov r10, r0
@@ -505,7 +505,7 @@ _081851D0:
adds r4, 0x1C
adds r5, 0x1
_081851DA:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r5, r0
diff --git a/asm/reset_rtc_screen.s b/asm/reset_rtc_screen.s
index ac2c1181c..1f5ef83d8 100644
--- a/asm/reset_rtc_screen.s
+++ b/asm/reset_rtc_screen.s
@@ -291,7 +291,7 @@ sub_809EB04: @ 809EB04
lsrs r5, 24
ldr r0, =gUnknown_085104C4
bl LoadSpritePalette
- ldr r0, =gUnknown_085104F0
+ ldr r0, =gSpriteTemplate_85104F0
mov r8, r0
movs r1, 0x35
movs r2, 0x44
@@ -655,7 +655,7 @@ sub_809EDE8: @ 809EDE8
lsls r0, r4, 1
adds r0, r4
lsls r0, 2
- ldr r1, =gUnknown_0851041C
+ ldr r1, =gUnknown_08510420 - 0x4
adds r2, r0, r1
ldr r1, =gMain
ldrh r3, [r1, 0x2E]
diff --git a/asm/reshow_battle_screen.s b/asm/reshow_battle_screen.s
deleted file mode 100644
index d9b679750..000000000
--- a/asm/reshow_battle_screen.s
+++ /dev/null
@@ -1,1040 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start nullsub_35
-nullsub_35: @ 80A92F4
- bx lr
- thumb_func_end nullsub_35
-
- thumb_func_start ReshowBattleScreenAfterMenu
-ReshowBattleScreenAfterMenu: @ 80A92F8
- push {lr}
- ldr r2, =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- movs r0, 0
- bl SetHBlankCallback
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0x4C
- movs r1, 0
- bl SetGpuReg
- ldr r0, =gBattleScripting
- adds r2, r0, 0
- adds r2, 0x21
- movs r1, 0
- strb r1, [r2]
- adds r0, 0x22
- strb r1, [r0]
- ldr r0, =c2_80777E8
- bl SetMainCallback2
- pop {r0}
- bx r0
- .pool
- thumb_func_end ReshowBattleScreenAfterMenu
-
- thumb_func_start c2_80777E8
-c2_80777E8: @ 80A933C
- push {r4-r7,lr}
- sub sp, 0x8
- ldr r0, =gBattleScripting
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0x13
- bls _080A934C
- b _080A95A4
-_080A934C:
- lsls r0, 2
- ldr r1, =_080A9360
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080A9360:
- .4byte _080A93B0
- .4byte _080A942C
- .4byte _080A9444
- .4byte _080A944A
- .4byte _080A9450
- .4byte _080A9460
- .4byte _080A9466
- .4byte _080A948E
- .4byte _080A9492
- .4byte _080A9496
- .4byte _080A949A
- .4byte _080A94B8
- .4byte _080A94C0
- .4byte _080A94C8
- .4byte _080A94D0
- .4byte _080A94D8
- .4byte _080A94E0
- .4byte _080A94E8
- .4byte _080A94F0
- .4byte _080A94F8
-_080A93B0:
- bl dp12_8087EA4
- bl trs_config
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0
- bl SetBgAttribute
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0
- bl SetBgAttribute
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
- bl ResetPaletteFade
- ldr r0, =gBattle_BG0_X
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gBattle_BG0_Y
- strh r1, [r0]
- ldr r0, =gBattle_BG1_X
- strh r1, [r0]
- ldr r0, =gBattle_BG1_Y
- strh r1, [r0]
- ldr r0, =gBattle_BG2_X
- strh r1, [r0]
- ldr r0, =gBattle_BG2_Y
- strh r1, [r0]
- ldr r0, =gBattle_BG3_X
- strh r1, [r0]
- ldr r0, =gBattle_BG3_Y
- strh r1, [r0]
- b _080A95D2
- .pool
-_080A942C:
- movs r0, 0
- str r0, [sp, 0x4]
- movs r1, 0xC0
- lsls r1, 19
- ldr r2, =0x01006000
- add r0, sp, 0x4
- bl CpuFastSet
- b _080A95D2
- .pool
-_080A9444:
- bl LoadBattleTextboxAndBackground
- b _080A95D2
-_080A944A:
- bl ResetSpriteData
- b _080A95D2
-_080A9450:
- bl FreeAllSpritePalettes
- ldr r1, =gReservedSpritePaletteCount
- movs r0, 0x4
- strb r0, [r1]
- b _080A95D2
- .pool
-_080A9460:
- bl sub_805E350
- b _080A95D2
-_080A9466:
- ldr r5, =gBattleScripting
- adds r4, r5, 0
- adds r4, 0x22
- ldrb r0, [r4]
- bl sub_805E08C
- lsls r0, 24
- cmp r0, 0
- beq _080A9484
- movs r0, 0
- strb r0, [r4]
- b _080A95D2
- .pool
-_080A9484:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- adds r1, r5, 0
- b _080A94AA
-_080A948E:
- movs r0, 0
- b _080A949C
-_080A9492:
- movs r0, 0x1
- b _080A949C
-_080A9496:
- movs r0, 0x2
- b _080A949C
-_080A949A:
- movs r0, 0x3
-_080A949C:
- bl sub_80A9614
- lsls r0, 24
- cmp r0, 0
- beq _080A94A8
- b _080A95D2
-_080A94A8:
- ldr r1, =gBattleScripting
-_080A94AA:
- adds r1, 0x21
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- b _080A95D2
- .pool
-_080A94B8:
- movs r0, 0
- bl sub_80A9708
- b _080A95D2
-_080A94C0:
- movs r0, 0x1
- bl sub_80A9708
- b _080A95D2
-_080A94C8:
- movs r0, 0x2
- bl sub_80A9708
- b _080A95D2
-_080A94D0:
- movs r0, 0x3
- bl sub_80A9708
- b _080A95D2
-_080A94D8:
- movs r0, 0
- bl sub_80A9ADC
- b _080A95D2
-_080A94E0:
- movs r0, 0x1
- bl sub_80A9ADC
- b _080A95D2
-_080A94E8:
- movs r0, 0x2
- bl sub_80A9ADC
- b _080A95D2
-_080A94F0:
- movs r0, 0x3
- bl sub_80A9ADC
- b _080A95D2
-_080A94F8:
- bl sub_805EC84
- movs r0, 0x1
- bl GetBankByIdentity
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r7, =gBattlePartyID
- lsls r0, r4, 1
- adds r0, r7
- ldrh r0, [r0]
- movs r6, 0x64
- muls r0, r6
- ldr r5, =gEnemyParty
- adds r0, r5
- movs r1, 0xB
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_805EE54
- bl battle_type_is_double
- lsls r0, 24
- cmp r0, 0
- beq _080A955C
- movs r0, 0x3
- bl GetBankByIdentity
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r0, r4, 1
- adds r0, r7
- ldrh r0, [r0]
- muls r0, r6
- adds r0, r5
- movs r1, 0xB
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_805EE54
-_080A955C:
- ldr r1, =gActionSelectionCursor
- ldr r0, =gBankInMenu
- ldrb r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- movs r1, 0
- bl sub_8059CB4
- ldr r0, =gLinkVSyncDisabled
- ldrb r0, [r0]
- cmp r0, 0
- beq _080A95D2
- ldr r0, =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _080A95D2
- bl sub_800E0E8
- movs r0, 0
- movs r1, 0
- bl sub_800DFB4
- b _080A95D2
- .pool
-_080A95A4:
- ldr r0, =VBlankCB_Battle
- bl SetVBlankCallback
- bl sub_80A95F4
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0xFF
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginHardwarePaletteFade
- ldr r2, =gPaletteFade
- ldrb r1, [r2, 0x8]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2, 0x8]
- ldr r0, =BattleMainCB2
- bl SetMainCallback2
- bl sub_805EF14
-_080A95D2:
- ldr r1, =gBattleScripting
- adds r1, 0x21
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end c2_80777E8
-
- thumb_func_start sub_80A95F4
-sub_80A95F4: @ 80A95F4
- ldr r3, =0x0400000a
- ldrb r2, [r3]
- movs r1, 0xD
- negs r1, r1
- adds r0, r1, 0
- ands r0, r2
- strb r0, [r3]
- ldr r2, =0x0400000c
- ldrb r0, [r2]
- ands r1, r0
- strb r1, [r2]
- bx lr
- .pool
- thumb_func_end sub_80A95F4
-
- thumb_func_start sub_80A9614
-sub_80A9614: @ 80A9614
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r4, r0
- bcs _080A96FC
- adds r0, r4, 0
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080A9676
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r1, [r0]
- lsls r0, r4, 2
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- bne _080A966C
- ldr r1, =gBattlePartyID
- lsls r0, r4, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gEnemyParty
- adds r0, r1
- adds r1, r4, 0
- bl sub_805DC0C
- b _080A96F4
- .pool
-_080A966C:
- adds r0, r4, 0
- movs r1, 0
- bl sub_805E7DC
- b _080A96F4
-_080A9676:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r2, 0x80
- ands r1, r2
- cmp r1, 0
- beq _080A9698
- cmp r4, 0
- bne _080A9698
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- b _080A96AA
- .pool
-_080A9698:
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 2
- ands r0, r1
- cmp r0, 0
- beq _080A96B2
- cmp r4, 0
- bne _080A96B2
- movs r0, 0x6
-_080A96AA:
- movs r1, 0
- bl sub_805DF84
- b _080A96F4
-_080A96B2:
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r1, [r0]
- lsls r0, r4, 2
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- bne _080A96EC
- ldr r1, =gBattlePartyID
- lsls r0, r4, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- adds r1, r4, 0
- bl sub_805DD7C
- b _080A96F4
- .pool
-_080A96EC:
- adds r0, r4, 0
- movs r1, 0
- bl sub_805E7DC
-_080A96F4:
- ldr r0, =gBattleScripting
- adds r0, 0x22
- movs r1, 0
- strb r1, [r0]
-_080A96FC:
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80A9614
-
- thumb_func_start sub_80A9708
-sub_80A9708: @ 80A9708
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r7, r0
- bcc _080A9722
- b _080A9AA0
-_080A9722:
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0]
- lsls r2, r7, 2
- adds r0, r2, r0
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- str r2, [sp]
- cmp r0, 0
- beq _080A9748
- adds r0, r7, 0
- bl sub_80A614C
- b _080A974E
- .pool
-_080A9748:
- adds r0, r7, 0
- bl sub_80A6138
-_080A974E:
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- adds r0, r7, 0
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _080A9762
- b _080A986C
-_080A9762:
- ldr r1, =gBattlePartyID
- lsls r0, r7, 1
- adds r6, r0, r1
- ldrh r0, [r6]
- movs r1, 0x64
- mov r10, r1
- mov r2, r10
- muls r2, r0
- adds r0, r2, 0
- ldr r1, =gEnemyParty
- mov r9, r1
- add r0, r9
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _080A9786
- b _080A9AA0
-_080A9786:
- ldrh r0, [r6]
- mov r2, r10
- muls r2, r0
- adds r0, r2, 0
- add r0, r9
- movs r1, 0xB
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r7, 0
- bl GetBankIdentity
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_806A068
- ldr r5, =gUnknown_0202499C
- adds r0, r7, 0
- movs r1, 0x2
- bl sub_80A5C6C
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r7, 0
- bl sub_80A82E4
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- adds r0, r5, 0
- adds r1, r4, 0
- mov r2, r8
- bl CreateSprite
- ldr r1, =gBankSpriteIds
- adds r4, r7, r1
- strb r0, [r4]
- ldr r5, =gSprites
- ldrb r0, [r4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- lsls r3, r7, 4
- ldrb r2, [r1, 0x5]
- movs r0, 0xF
- ands r0, r2
- orrs r0, r3
- strb r0, [r1, 0x5]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r5, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, =SpriteCallbackDummy
- str r1, [r0]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r7, [r0, 0x2E]
- ldrh r0, [r6]
- mov r1, r10
- muls r1, r0
- adds r0, r1, 0
- add r0, r9
- movs r1, 0xB
- bl GetMonData
- ldrb r2, [r4]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r5
- strh r0, [r1, 0x32]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r1, =gBattleMonForms
- adds r1, r7, r1
- ldrb r1, [r1]
- bl StartSpriteAnim
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0]
- ldr r2, [sp]
- adds r0, r2, r0
- b _080A9A50
- .pool
-_080A986C:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r2, 0x80
- ands r1, r2
- cmp r1, 0
- beq _080A98D0
- cmp r7, 0
- bne _080A98D0
- ldr r5, =gSaveBlock2Ptr
- ldr r0, [r5]
- ldrb r4, [r0, 0x8]
- movs r0, 0
- bl GetBankIdentity
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_806A12C
- ldr r6, =gUnknown_0202499C
- ldr r1, =gUnknown_08305D2C
- ldr r0, [r5]
- ldrb r0, [r0, 0x8]
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0]
- movs r4, 0x8
- subs r4, r0
- lsls r4, 18
- movs r0, 0xA0
- lsls r0, 15
- adds r4, r0
- asrs r4, 16
- movs r0, 0
- bl sub_80A82E4
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- adds r0, r6, 0
- b _080A9914
- .pool
-_080A98D0:
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 2
- ands r0, r1
- cmp r0, 0
- beq _080A9968
- cmp r7, 0
- bne _080A9968
- movs r0, 0
- bl GetBankIdentity
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x6
- bl sub_806A12C
- ldr r5, =gUnknown_0202499C
- ldr r0, =gUnknown_08305D2C
- ldrb r0, [r0, 0x18]
- movs r4, 0x8
- subs r4, r0
- lsls r4, 18
- movs r1, 0xA0
- lsls r1, 15
- adds r4, r1
- asrs r4, 16
- movs r0, 0
- bl sub_80A82E4
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- adds r0, r5, 0
-_080A9914:
- movs r1, 0x50
- adds r2, r4, 0
- bl CreateSprite
- ldr r3, =gBankSpriteIds
- strb r0, [r3]
- ldr r4, =gSprites
- ldrb r0, [r3]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r2, [r1, 0x5]
- movs r0, 0xF
- ands r0, r2
- strb r0, [r1, 0x5]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r4, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, =SpriteCallbackDummy
- str r1, [r0]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- strh r7, [r0, 0x2E]
- b _080A9A70
- .pool
-_080A9968:
- ldr r1, =gBattlePartyID
- lsls r0, r7, 1
- adds r6, r0, r1
- ldrh r0, [r6]
- movs r2, 0x64
- mov r10, r2
- mov r1, r10
- muls r1, r0
- adds r0, r1, 0
- ldr r2, =gPlayerParty
- mov r9, r2
- add r0, r9
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _080A998C
- b _080A9AA0
-_080A998C:
- ldrh r0, [r6]
- mov r1, r10
- muls r1, r0
- adds r0, r1, 0
- add r0, r9
- movs r1, 0xB
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r7, 0
- bl GetBankIdentity
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_806A068
- ldr r5, =gUnknown_0202499C
- adds r0, r7, 0
- movs r1, 0x2
- bl sub_80A5C6C
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r7, 0
- bl sub_80A82E4
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- adds r0, r5, 0
- adds r1, r4, 0
- mov r2, r8
- bl CreateSprite
- ldr r1, =gBankSpriteIds
- adds r4, r7, r1
- strb r0, [r4]
- ldr r5, =gSprites
- ldrb r0, [r4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- lsls r3, r7, 4
- ldrb r2, [r1, 0x5]
- movs r0, 0xF
- ands r0, r2
- orrs r0, r3
- strb r0, [r1, 0x5]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r5, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, =SpriteCallbackDummy
- str r1, [r0]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r7, [r0, 0x2E]
- ldrh r0, [r6]
- mov r2, r10
- muls r2, r0
- adds r0, r2, 0
- add r0, r9
- movs r1, 0xB
- bl GetMonData
- ldrb r2, [r4]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r5
- strh r0, [r1, 0x32]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r1, =gBattleMonForms
- adds r1, r7, r1
- ldrb r1, [r1]
- bl StartSpriteAnim
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0]
- ldr r1, [sp]
- adds r0, r1, r0
-_080A9A50:
- ldrh r1, [r0, 0x2]
- ldr r0, =0x00000181
- cmp r1, r0
- bne _080A9A70
- ldrb r0, [r4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r0, r5, 0
- adds r0, 0x8
- adds r1, r0
- ldr r0, =gUnknown_08309AAC
- ldr r2, =0x00000604
- adds r0, r2
- ldr r0, [r0]
- str r0, [r1]
-_080A9A70:
- ldr r1, =gSprites
- ldr r0, =gBankSpriteIds
- adds r0, r7, r0
- ldrb r0, [r0]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r1
- ldr r0, =gBattleSpritesDataPtr
- ldr r0, [r0]
- ldr r0, [r0]
- ldr r1, [sp]
- adds r0, r1, r0
- ldr r1, [r0]
- lsls r1, 31
- adds r2, 0x3E
- lsrs r1, 31
- lsls r1, 2
- ldrb r3, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
-_080A9AA0:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A9708
-
- thumb_func_start sub_80A9ADC
-sub_80A9ADC: @ 80A9ADC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r5, r0
- bcc _080A9AEC
- b _080A9C5E
-_080A9AEC:
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r2, 0x80
- ands r1, r2
- cmp r1, 0
- beq _080A9B0C
- cmp r5, 0
- bne _080A9B0C
- bl battle_make_oam_safari_battle
- b _080A9B24
- .pool
-_080A9B0C:
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 2
- ands r0, r1
- cmp r0, 0
- beq _080A9B1E
- cmp r5, 0
- bne _080A9B1E
- b _080A9C5E
-_080A9B1E:
- adds r0, r5, 0
- bl battle_make_oam_normal_battle
-_080A9B24:
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, =gHealthBoxesIds
- adds r4, r5, r0
- strb r6, [r4]
- adds r0, r5, 0
- bl sub_8072B18
- adds r0, r6, 0
- bl sub_80729D0
- adds r0, r5, 0
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080A9B6C
- ldrb r0, [r4]
- ldr r1, =gBattlePartyID
- lsls r4, r5, 1
- adds r1, r4, r1
- ldrh r2, [r1]
- movs r1, 0x64
- muls r1, r2
- ldr r2, =gEnemyParty
- adds r1, r2
- movs r2, 0
- bl healthbar_draw_field_maybe
- b _080A9BB8
- .pool
-_080A9B6C:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080A9BA0
- ldrb r0, [r4]
- ldr r1, =gBattlePartyID
- lsls r4, r5, 1
- adds r1, r4, r1
- ldrh r2, [r1]
- movs r1, 0x64
- muls r1, r2
- ldr r2, =gPlayerParty
- adds r1, r2
- movs r2, 0xA
- bl healthbar_draw_field_maybe
- b _080A9BB8
- .pool
-_080A9BA0:
- ldrb r0, [r4]
- ldr r1, =gBattlePartyID
- lsls r4, r5, 1
- adds r1, r4, r1
- ldrh r2, [r1]
- movs r1, 0x64
- muls r1, r2
- ldr r2, =gPlayerParty
- adds r1, r2
- movs r2, 0
- bl healthbar_draw_field_maybe
-_080A9BB8:
- adds r0, r5, 0
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- beq _080A9BD4
- adds r0, r5, 0
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _080A9BF0
-_080A9BD4:
- ldr r0, =gHealthBoxesIds
- adds r0, r5, r0
- ldrb r0, [r0]
- movs r1, 0x1
- bl nullsub_30
- b _080A9BFC
- .pool
-_080A9BF0:
- ldr r0, =gHealthBoxesIds
- adds r0, r5, r0
- ldrb r0, [r0]
- movs r1, 0
- bl nullsub_30
-_080A9BFC:
- adds r0, r5, 0
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080A9C34
- ldr r0, =gBattlePartyID
- adds r0, r4, r0
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gEnemyParty
- adds r0, r1
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _080A9C5E
- adds r0, r6, 0
- bl sub_8072984
- b _080A9C5E
- .pool
-_080A9C34:
- ldr r0, =gBattleTypeFlags
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080A9C5E
- ldr r0, =gBattlePartyID
- adds r0, r4, r0
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _080A9C5E
- adds r0, r6, 0
- bl sub_8072984
-_080A9C5E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80A9ADC
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/rom3.s b/asm/rom3.s
index bde493568..0159a453a 100644
--- a/asm/rom3.s
+++ b/asm/rom3.s
@@ -1963,7 +1963,7 @@ _08033726:
lsls r0, r1, 24
lsrs r4, r0, 24
_0803372C:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r4, r0
@@ -3259,8 +3259,8 @@ _0803413E:
.pool
thumb_func_end sub_8034110
- thumb_func_start dp01_build_cmdbuf_x21_a_bb
-dp01_build_cmdbuf_x21_a_bb: @ 8034158
+ thumb_func_start EmitCmd_x21
+EmitCmd_x21: @ 8034158
push {r4,lr}
adds r4, r1, 0
lsls r0, 24
@@ -3280,7 +3280,7 @@ dp01_build_cmdbuf_x21_a_bb: @ 8034158
pop {r0}
bx r0
.pool
- thumb_func_end dp01_build_cmdbuf_x21_a_bb
+ thumb_func_end EmitCmd_x21
thumb_func_start dp01_build_cmdbuf_x22_a_three_bytes
dp01_build_cmdbuf_x22_a_three_bytes: @ 8034184
diff --git a/asm/rom4.s b/asm/rom4.s
index 0a624620d..bf682fc51 100644
--- a/asm/rom4.s
+++ b/asm/rom4.s
@@ -36,15 +36,15 @@ flag_var_implications_of_teleport_: @ 8084660
push {lr}
bl player_avatar_init_params_reset
ldr r0, =0x0000088b
- bl FlagReset
+ bl FlagClear
ldr r0, =0x0000088d
- bl FlagReset
+ bl FlagClear
ldr r0, =0x0000088c
- bl FlagReset
+ bl FlagClear
ldr r0, =0x00000889
- bl FlagReset
+ bl FlagClear
ldr r0, =0x00000888
- bl FlagReset
+ bl FlagClear
pop {r0}
bx r0
.pool
@@ -55,15 +55,15 @@ sub_808469C: @ 808469C
push {lr}
bl player_avatar_init_params_reset
ldr r0, =0x0000088b
- bl FlagReset
+ bl FlagClear
ldr r0, =0x0000088d
- bl FlagReset
+ bl FlagClear
ldr r0, =0x0000088c
- bl FlagReset
+ bl FlagClear
ldr r0, =0x00000889
- bl FlagReset
+ bl FlagClear
ldr r0, =0x00000888
- bl FlagReset
+ bl FlagClear
ldr r0, =gUnknown_08271862
bl ScriptContext2_RunNewScript
pop {r0}
@@ -76,15 +76,15 @@ flagmods_08054D70: @ 80846E4
push {lr}
bl player_avatar_init_params_reset
ldr r0, =0x0000088b
- bl FlagReset
+ bl FlagClear
ldr r0, =0x0000088d
- bl FlagReset
+ bl FlagClear
ldr r0, =0x0000088c
- bl FlagReset
+ bl FlagClear
ldr r0, =0x00000889
- bl FlagReset
+ bl FlagClear
ldr r0, =0x00000888
- bl FlagReset
+ bl FlagClear
pop {r0}
bx r0
.pool
@@ -95,15 +95,15 @@ sub_8084720: @ 8084720
push {r4,lr}
bl player_avatar_init_params_reset
ldr r0, =0x0000088b
- bl FlagReset
+ bl FlagClear
ldr r0, =0x0000088d
- bl FlagReset
+ bl FlagClear
ldr r0, =0x0000088c
- bl FlagReset
+ bl FlagClear
ldr r0, =0x00000889
- bl FlagReset
+ bl FlagClear
ldr r0, =0x00000888
- bl FlagReset
+ bl FlagClear
ldr r4, =0x00004039
adds r0, r4, 0
bl VarGet
@@ -128,7 +128,7 @@ _08084764:
sub_8084788: @ 8084788
push {lr}
ldr r0, =0x0000088c
- bl FlagReset
+ bl FlagClear
bl sub_8085B2C
bl wild_pokemon_reroll
bl UpdateLocationHistoryForRoamer
@@ -324,8 +324,8 @@ _080848F4:
.pool
thumb_func_end CopyFieldObjectTemplateCoordsToSav1
- thumb_func_start update_saveblock1_field_object_coords
-update_saveblock1_field_object_coords: @ 8084910
+ thumb_func_start Overworld_SetMapObjTemplateCoords
+Overworld_SetMapObjTemplateCoords: @ 8084910
push {r4-r6,lr}
lsls r0, 24
lsrs r5, r0, 24
@@ -356,10 +356,10 @@ _08084944:
pop {r4-r6}
pop {r0}
bx r0
- thumb_func_end update_saveblock1_field_object_coords
+ thumb_func_end Overworld_SetMapObjTemplateCoords
- thumb_func_start update_saveblock1_field_object_movement_behavior
-update_saveblock1_field_object_movement_behavior: @ 808494C
+ thumb_func_start Overworld_SetMapObjTemplateMovementType
+Overworld_SetMapObjTemplateMovementType: @ 808494C
push {r4,r5,lr}
lsls r0, 24
lsrs r4, r0, 24
@@ -387,7 +387,7 @@ _08084978:
pop {r4,r5}
pop {r0}
bx r0
- thumb_func_end update_saveblock1_field_object_movement_behavior
+ thumb_func_end Overworld_SetMapObjTemplateMovementType
thumb_func_start mapdata_load_assets_to_gpu_and_full_redraw
mapdata_load_assets_to_gpu_and_full_redraw: @ 8084980
@@ -710,9 +710,9 @@ warp_in: @ 8084BD8
bx r0
thumb_func_end warp_in
- thumb_func_start warp1_set
-@ void warp1_set(char bank, char map, char warpid, char enter_x, char enter_y)
-warp1_set: @ 8084BEC
+ thumb_func_start Overworld_SetWarpDestination
+@ void Overworld_SetWarpDestination(char bank, char map, char warpid, char enter_x, char enter_y)
+Overworld_SetWarpDestination: @ 8084BEC
push {r4-r6,lr}
sub sp, 0x8
adds r4, r0, 0
@@ -741,7 +741,7 @@ warp1_set: @ 8084BEC
pop {r0}
bx r0
.pool
- thumb_func_end warp1_set
+ thumb_func_end Overworld_SetWarpDestination
thumb_func_start warp1_set_2
@ void warp1_set_2(char bank, char map, char warpid)
@@ -757,7 +757,7 @@ warp1_set_2: @ 8084C28
movs r3, 0x1
negs r3, r3
str r3, [sp]
- bl warp1_set
+ bl Overworld_SetWarpDestination
add sp, 0x4
pop {r0}
bx r0
@@ -857,7 +857,7 @@ sub_8084CCC: @ 8084CCC
lsls r4, 24
asrs r4, 24
str r4, [sp]
- bl warp1_set
+ bl Overworld_SetWarpDestination
_08084CFA:
add sp, 0x4
pop {r4}
@@ -879,8 +879,8 @@ copy_saved_warp3_bank_and_enter_x_to_warp1: @ 8084D04
.pool
thumb_func_end copy_saved_warp3_bank_and_enter_x_to_warp1
- thumb_func_start sub_8084D1C
-sub_8084D1C: @ 8084D1C
+ thumb_func_start Overworld_SetHealLocationWarp
+Overworld_SetHealLocationWarp: @ 8084D1C
push {r4,r5,lr}
sub sp, 0x8
lsls r0, 24
@@ -911,7 +911,7 @@ _08084D50:
pop {r0}
bx r0
.pool
- thumb_func_end sub_8084D1C
+ thumb_func_end Overworld_SetHealLocationWarp
thumb_func_start sub_8084D5C
sub_8084D5C: @ 8084D5C
@@ -1126,7 +1126,7 @@ _08084EF0:
lsls r4, r6, 24
asrs r4, 24
str r4, [sp]
- bl warp1_set
+ bl Overworld_SetWarpDestination
_08084F0A:
add sp, 0x4
pop {r4-r6}
@@ -1289,7 +1289,7 @@ sub_8084FF8: @ 8084FF8
lsls r4, r5, 24
asrs r4, 24
str r4, [sp]
- bl warp1_set
+ bl Overworld_SetWarpDestination
b _0808504C
_08085030:
bl mapheader_run_script_with_tag_x6
@@ -1365,7 +1365,7 @@ mliX_load_map: @ 8085098
negs r3, r3
str r3, [sp]
adds r2, r3, 0
- bl warp1_set
+ bl Overworld_SetWarpDestination
ldr r4, =gMapHeader
ldrb r0, [r4, 0x14]
cmp r0, 0x3A
@@ -1382,7 +1382,7 @@ _080850C8:
adds r0, r6, 0
adds r1, r5, 0
bl sub_80B21B4
- bl sub_809E7B0
+ bl DoTimeBasedEvents
bl sub_80AEDBC
bl sub_8085B2C
bl update_sav1_flash_used_on_map
@@ -1404,7 +1404,7 @@ _08085116:
bl sub_80A0A2C
bl UpdateLocationHistoryForRoamer
bl RoamerMove
- bl sub_80AEE20
+ bl DoCurrentWeather
bl wild_encounter_reset_coro_args
bl mapheader_run_script_with_tag_x5
ldr r2, =gMapHeader
@@ -1481,14 +1481,14 @@ _080851A2:
bl sub_80B21B4
cmp r7, 0x1
beq _080851EE
- bl sub_809E7B0
+ bl DoTimeBasedEvents
_080851EE:
bl sub_80AEDBC
bl sub_8085B2C
cmp r5, 0
beq _08085200
ldr r0, =0x00000888
- bl FlagReset
+ bl FlagClear
_08085200:
bl update_sav1_flash_used_on_map
bl sav1_reset_battle_music_maybe
@@ -1858,8 +1858,8 @@ _080854DE:
.pool
thumb_func_end update_sav1_flash_used_on_map
- thumb_func_start sub_80854EC
-sub_80854EC: @ 80854EC
+ thumb_func_start Overworld_SetFlashLevel
+Overworld_SetFlashLevel: @ 80854EC
push {lr}
adds r1, r0, 0
cmp r1, 0
@@ -1878,7 +1878,7 @@ _080854FE:
pop {r0}
bx r0
.pool
- thumb_func_end sub_80854EC
+ thumb_func_end Overworld_SetFlashLevel
thumb_func_start sav1_get_flash_used_on_map
sav1_get_flash_used_on_map: @ 8085514
@@ -2263,14 +2263,14 @@ _080857E8:
.pool
thumb_func_end sub_8085784
- thumb_func_start sav1_set_battle_music_maybe
-sav1_set_battle_music_maybe: @ 80857F4
+ thumb_func_start Overworld_SetSavedMusic
+Overworld_SetSavedMusic: @ 80857F4
ldr r1, =gSaveBlock1Ptr
ldr r1, [r1]
strh r0, [r1, 0x2C]
bx lr
.pool
- thumb_func_end sav1_set_battle_music_maybe
+ thumb_func_end Overworld_SetSavedMusic
thumb_func_start sav1_reset_battle_music_maybe
sav1_reset_battle_music_maybe: @ 8085800
@@ -2339,8 +2339,8 @@ _08085890:
bx r0
thumb_func_end sub_8085810
- thumb_func_start sub_8085898
-sub_8085898: @ 8085898
+ thumb_func_start Overworld_ChangeMusicToDefault
+Overworld_ChangeMusicToDefault: @ 8085898
push {r4,lr}
bl GetCurrentMapMusic
adds r4, r0, 0
@@ -2360,10 +2360,10 @@ _080858BE:
pop {r4}
pop {r0}
bx r0
- thumb_func_end sub_8085898
+ thumb_func_end Overworld_ChangeMusicToDefault
- thumb_func_start sub_80858C4
-sub_80858C4: @ 80858C4
+ thumb_func_start Overworld_ChangeMusicTo
+Overworld_ChangeMusicTo: @ 80858C4
push {r4,lr}
lsls r0, 16
lsrs r4, r0, 16
@@ -2383,7 +2383,7 @@ _080858E4:
pop {r0}
bx r0
.pool
- thumb_func_end sub_80858C4
+ thumb_func_end Overworld_ChangeMusicTo
thumb_func_start is_warp1_light_level_8_or_9
is_warp1_light_level_8_or_9: @ 80858F0
@@ -3525,8 +3525,8 @@ _08086278:
_08086286:
bl CopyFieldObjectTemplateCoordsToSav1
_0808628A:
- bl sub_809757C
- bl sub_809E7B0
+ bl UnfreezeMapObjects
+ bl DoTimeBasedEvents
bl sub_8084788
ldr r0, =gMapHeader
ldrh r1, [r0, 0x12]
diff --git a/asm/rom6.s b/asm/rom6.s
index 0a8960811..5a2584edd 100644
--- a/asm/rom6.s
+++ b/asm/rom6.s
@@ -167,7 +167,7 @@ sub_8135578: @ 8135578
cmp r4, 0
bne _081355FC
bl player_get_direction_lower_nybble
- ldr r6, =gFieldEffectSpawnParams
+ ldr r6, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
str r0, [r6, 0x4]
@@ -303,7 +303,7 @@ _081356AC:
sub_81356C4: @ 81356C4
push {lr}
bl brm_get_pokemon_selection
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
str r0, [r1]
@@ -380,7 +380,7 @@ hm2_dig: @ 8135760
movs r0, 0x26
bl FieldEffectStart
bl brm_get_pokemon_selection
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
str r0, [r1]
@@ -3381,7 +3381,7 @@ hm2_flash: @ 8137178
lsls r4, 24
lsrs r4, 24
bl brm_get_pokemon_selection
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
lsls r0, 24
lsrs r0, 24
str r0, [r1]
@@ -4121,7 +4121,7 @@ _081377BC:
add r2, sp, 0x18
bl SetMonData
adds r0, r4, 0
- bl sub_80EE5A4
+ bl GetRibbonCount
strb r0, [r5, 0x1]
movs r7, 0x1
_0813780A:
@@ -4337,7 +4337,7 @@ sub_8137988: @ 8137988
.pool
_081379C8:
ldr r0, =0x0000089a
- bl FlagReset
+ bl FlagClear
_081379CE:
pop {r0}
bx r0
@@ -4629,7 +4629,7 @@ sub_8137C10: @ 8137C10
ldr r0, =gSpecialVar_0x8004
ldrh r0, [r0]
bl sub_8137A98
- bl box_related_two__2
+ bl ShowFieldMessage
pop {r0}
bx r0
.pool
@@ -5030,7 +5030,7 @@ _08137F6E:
movs r1, 0
bl VarSet
movs r0, 0
- bl sav1_set_battle_music_maybe
+ bl Overworld_SetSavedMusic
_08137F7C:
pop {r4}
pop {r0}
@@ -5056,7 +5056,7 @@ sub_8137F90: @ 8137F90
sub_8137FB0: @ 8137FB0
push {lr}
ldr r0, =0x0000088d
- bl FlagReset
+ bl FlagClear
pop {r0}
bx r0
.pool
@@ -5399,13 +5399,13 @@ sub_8138240: @ 8138240
bl GetMultiplayerId
lsls r0, 24
lsrs r7, r0, 24
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r5, r0, 24
movs r4, 0
cmp r4, r5
bcs _0813828A
- ldr r0, =gUnknown_0858D144
+ ldr r0, =gTVStringVarPtrs
mov r8, r0
_08138262:
cmp r7, r4
@@ -6378,7 +6378,7 @@ sub_8138AA4: @ 8138AA4
sub_8138AC0: @ 8138AC0
push {lr}
ldr r0, =gStringVar4
- bl box_related_two__2
+ bl ShowFieldMessage
pop {r0}
bx r0
.pool
@@ -6485,7 +6485,7 @@ sub_8138B8C: @ 8138B8C
movs r0, 0x13
movs r1, 0
movs r3, 0x6
- bl warp1_set
+ bl Overworld_SetWarpDestination
b _08138BC2
.pool
_08138BB0:
@@ -6496,7 +6496,7 @@ _08138BB0:
movs r0, 0x13
movs r1, 0x1
movs r3, 0x6
- bl warp1_set
+ bl Overworld_SetWarpDestination
_08138BC2:
add sp, 0x4
pop {r0}
@@ -6537,7 +6537,7 @@ _08138BF6:
thumb_func_start sub_8138C04
sub_8138C04: @ 8138C04
push {r4,lr}
- bl sub_8139688
+ bl GetLeadMonIndex
lsls r0, 24
lsrs r0, 24
movs r1, 0x64
@@ -7051,7 +7051,7 @@ sub_8138FEC: @ 8138FEC
ldr r1, =gSpecialVar_0x8004
ldr r0, =0x000001f5
strh r0, [r1]
- bl FlagReset
+ bl FlagClear
pop {r0}
bx r0
.pool
@@ -7060,7 +7060,7 @@ sub_8138FEC: @ 8138FEC
thumb_func_start sub_8139004
sub_8139004: @ 8139004
push {lr}
- bl sub_8139688
+ bl GetLeadMonIndex
lsls r0, 24
lsrs r0, 24
movs r1, 0x64
@@ -7084,7 +7084,7 @@ _0813902A:
thumb_func_start sub_8139030
sub_8139030: @ 8139030
push {lr}
- bl sub_8139688
+ bl GetLeadMonIndex
lsls r0, 24
lsrs r0, 24
movs r1, 0x64
@@ -7108,7 +7108,7 @@ _08139056:
thumb_func_start sub_813905C
sub_813905C: @ 813905C
push {lr}
- bl sub_8139688
+ bl GetLeadMonIndex
lsls r0, 24
lsrs r0, 24
movs r1, 0x64
@@ -7132,7 +7132,7 @@ _08139082:
thumb_func_start sub_8139088
sub_8139088: @ 8139088
push {lr}
- bl sub_8139688
+ bl GetLeadMonIndex
lsls r0, 24
lsrs r0, 24
movs r1, 0x64
@@ -7156,7 +7156,7 @@ _081390AE:
thumb_func_start sub_81390B4
sub_81390B4: @ 81390B4
push {lr}
- bl sub_8139688
+ bl GetLeadMonIndex
lsls r0, 24
lsrs r0, 24
movs r1, 0x64
@@ -7295,7 +7295,7 @@ RemoveScriptFieldObject: @ 81391AC
thumb_func_start sub_81391D0
sub_81391D0: @ 81391D0
push {lr}
- bl sub_8139688
+ bl GetLeadMonIndex
lsls r0, 24
lsrs r0, 24
movs r1, 0x64
@@ -7347,7 +7347,7 @@ sub_8139228: @ 8139228
sub_8139238: @ 8139238
push {lr}
ldr r0, =gStringVar1
- bl sub_8165284
+ bl GetEreaderTrainerName
pop {r0}
bx r0
.pool
@@ -7479,7 +7479,7 @@ _08139342:
thumb_func_start sub_8139348
sub_8139348: @ 8139348
push {lr}
- bl sub_8139688
+ bl GetLeadMonIndex
lsls r0, 24
lsrs r0, 24
movs r1, 0x64
@@ -7507,7 +7507,7 @@ sub_8139370: @ 8139370
movs r1, 0x1
mov r0, sp
strb r1, [r0]
- bl sub_8139688
+ bl GetLeadMonIndex
lsls r0, 24
lsrs r0, 24
movs r1, 0x64
@@ -7519,7 +7519,7 @@ sub_8139370: @ 8139370
mov r2, sp
bl SetMonData
adds r0, r4, 0
- bl sub_80EE5A4
+ bl GetRibbonCount
lsls r0, 24
lsrs r0, 24
cmp r0, 0x4
@@ -7538,7 +7538,7 @@ _081393B6:
thumb_func_start sub_81393C8
sub_81393C8: @ 81393C8
push {lr}
- bl sub_8139688
+ bl GetLeadMonIndex
lsls r0, 24
lsrs r0, 24
movs r1, 0x64
@@ -7858,7 +7858,7 @@ sub_8139648: @ 8139648
cmp r0, 0x1
beq _08139664
movs r0, 0x14
- bl sub_80AED7C
+ bl SetSav1Weather
_08139664:
pop {r0}
bx r0
@@ -7876,14 +7876,14 @@ sub_8139668: @ 8139668
cmp r0, 0x1
beq _08139684
movs r0, 0x15
- bl sub_80AED7C
+ bl SetSav1Weather
_08139684:
pop {r0}
bx r0
thumb_func_end sub_8139668
- thumb_func_start sub_8139688
-sub_8139688: @ 8139688
+ thumb_func_start GetLeadMonIndex
+GetLeadMonIndex: @ 8139688
push {r4-r6,lr}
bl CalculatePlayerPartyCount
lsls r0, 24
@@ -7926,7 +7926,7 @@ _081396D8:
pop {r4-r6}
pop {r1}
bx r1
- thumb_func_end sub_8139688
+ thumb_func_end GetLeadMonIndex
thumb_func_start sub_81396E0
sub_81396E0: @ 81396E0
@@ -8050,7 +8050,7 @@ sub_81397C4: @ 81397C4
cmp r1, r0
bls _081397E0
movs r0, 0
- bl sub_80EF340
+ bl TV_PrintIntToStringVar
b _08139862
.pool
_081397E0:
@@ -9094,7 +9094,7 @@ _0813A062:
lsls r0, 2
adds r0, r7
ldr r0, [r0]
- bl box_related_two__2
+ bl ShowFieldMessage
pop {r4-r7}
pop {r0}
bx r0
@@ -9996,7 +9996,7 @@ _0813A7C6:
lsrs r0, 22
adds r0, r1
ldr r0, [r0]
- bl box_related_two__2
+ bl ShowFieldMessage
pop {r0}
bx r0
.pool
@@ -10036,7 +10036,7 @@ sub_813A820: @ 813A820
lsls r0, r4, 2
adds r0, r1
ldr r0, [r0]
- bl box_related_two__2
+ bl ShowFieldMessage
ldr r0, =0x00004031
adds r1, r4, 0
bl VarSet
@@ -10056,7 +10056,7 @@ sub_813A854: @ 813A854
lsrs r0, 14
adds r0, r4
ldr r0, [r0]
- bl box_related_two__2
+ bl ShowFieldMessage
pop {r4}
pop {r0}
bx r0
@@ -11039,7 +11039,7 @@ _0813B0F8:
ldr r0, =sub_813B160
movs r1, 0x8
bl CreateTask
- ldr r3, =gFieldEffectSpawnParams
+ ldr r3, =gFieldEffectArguments
movs r0, 0x1
str r0, [r3]
movs r0, 0x3A
@@ -11074,7 +11074,7 @@ _0813B13A:
adds r0, r5, r0
ldrb r2, [r0]
movs r0, 0x1
- bl update_saveblock1_field_object_coords
+ bl Overworld_SetMapObjTemplateCoords
add sp, 0x4
pop {r4,r5}
pop {r0}
@@ -11238,7 +11238,7 @@ _0813B27E:
cmp r0, r4
beq _0813B2A6
ldr r0, =0x000008d7
- bl FlagReset
+ bl FlagClear
_0813B2A6:
ldr r0, =0x00004036
lsrs r1, r7, 16
@@ -11778,7 +11778,7 @@ _0813B728:
cmp r0, 0x2
bne _0813B790
ldr r0, =gUnknown_0824979B
- bl box_related_two__3
+ bl ShowFieldAutoScrollMessage
b _0813B790
.pool
_0813B74C:
@@ -11787,7 +11787,7 @@ _0813B74C:
cmp r0, 0x3
bne _0813B790
ldr r0, =gUnknown_0824979B
- bl box_related_two__3
+ bl ShowFieldAutoScrollMessage
b _0813B790
.pool
_0813B764:
@@ -12075,7 +12075,7 @@ sub_813B9A0: @ 813B9A0
cmp r1, r0
bne _0813B9B6
movs r0, 0x3
- bl sub_8084D1C
+ bl Overworld_SetHealLocationWarp
_0813B9B6:
pop {r0}
bx r0
@@ -12187,16 +12187,16 @@ sub_813BA60: @ 813BA60
adds r1, r2
strh r0, [r1]
ldr r0, =0x00000315
- bl FlagReset
+ bl FlagClear
ldr r0, =0x00000316
- bl FlagReset
+ bl FlagClear
ldr r0, =0x00000317
- bl FlagReset
+ bl FlagClear
movs r0, 0xC6
lsls r0, 2
- bl FlagReset
+ bl FlagClear
ldr r0, =0x000002da
- bl FlagReset
+ bl FlagClear
ldr r0, =0x00004095
movs r1, 0x1
bl VarSet
diff --git a/asm/rom_80A5C6C.s b/asm/rom_80A5C6C.s
index bb74b3713..0e328358b 100644
--- a/asm/rom_80A5C6C.s
+++ b/asm/rom_80A5C6C.s
@@ -419,11 +419,11 @@ _080A5FE8:
lsls r0, 1
cmp r4, r0
bls _080A5FF8
- ldr r0, =gUnknown_08305DCC
+ ldr r0, =gEnemyMonElevation
b _080A5FFC
.pool
_080A5FF8:
- ldr r0, =gUnknown_08305DCC
+ ldr r0, =gEnemyMonElevation
adds r0, r7, r0
_080A5FFC:
ldrb r5, [r0]
@@ -1928,15 +1928,15 @@ _080A6B1A:
bx r1
thumb_func_end sub_80A6A90
- thumb_func_start battle_type_is_double
-battle_type_is_double: @ 80A6B20
+ thumb_func_start IsDoubleBattle
+IsDoubleBattle: @ 80A6B20
ldr r0, =gBattleTypeFlags
ldr r0, [r0]
movs r1, 0x1
ands r0, r1
bx lr
.pool
- thumb_func_end battle_type_is_double
+ thumb_func_end IsDoubleBattle
thumb_func_start sub_80A6B30
sub_80A6B30: @ 80A6B30
@@ -5807,7 +5807,7 @@ _080A8946:
bl sub_80A5C6C
lsls r0, 24
lsrs r7, r0, 24
- bl battle_type_is_double
+ bl IsDoubleBattle
lsls r0, 24
cmp r0, 0
beq _080A8998
diff --git a/asm/scrcmd.s b/asm/scrcmd.s
deleted file mode 100644
index f2e61a946..000000000
--- a/asm/scrcmd.s
+++ /dev/null
@@ -1,5744 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start s00_nop
-s00_nop: @ 80992CC
- movs r0, 0
- bx lr
- thumb_func_end s00_nop
-
- thumb_func_start s01_nop
-s01_nop: @ 80992D0
- movs r0, 0
- bx lr
- thumb_func_end s01_nop
-
- thumb_func_start s02_end
-s02_end: @ 80992D4
- push {lr}
- bl StopScript
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s02_end
-
- thumb_func_start s24_execute_ASM_2
-s24_execute_ASM_2: @ 80992E0
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadWord
- adds r1, r0, 0
- adds r0, r4, 0
- bl SetupNativeScript
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s24_execute_ASM_2
-
- thumb_func_start s25_extended_cmd
-s25_extended_cmd: @ 80992F8
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- ldr r1, =gUnknown_081DBA64
- lsrs r0, 14
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end s25_extended_cmd
-
- thumb_func_start s26_extended_cmd_setvar
-s26_extended_cmd_setvar: @ 8099318
- push {r4-r6,lr}
- adds r5, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl GetVarPointer
- adds r6, r0, 0
- ldr r4, =gUnknown_081DBA64
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 14
- adds r0, r4
- ldr r0, [r0]
- bl _call_via_r0
- strh r0, [r6]
- movs r0, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s26_extended_cmd_setvar
-
- thumb_func_start s23_execute_ASM
-s23_execute_ASM: @ 809934C
- push {lr}
- bl ScriptReadWord
- bl _call_via_r0
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s23_execute_ASM
-
- thumb_func_start s27_set_to_waitstate
-s27_set_to_waitstate: @ 809935C
- push {lr}
- bl ScriptContext1_Stop
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end s27_set_to_waitstate
-
- thumb_func_start s05_goto
-s05_goto: @ 8099368
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadWord
- adds r1, r0, 0
- adds r0, r4, 0
- bl ScriptJump
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s05_goto
-
- thumb_func_start s03_return
-s03_return: @ 8099380
- push {lr}
- bl ScriptReturn
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s03_return
-
- thumb_func_start s04_call
-s04_call: @ 809938C
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadWord
- adds r1, r0, 0
- adds r0, r4, 0
- bl ScriptCall
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s04_call
-
- thumb_func_start s06_if_jump
-@ int s06_if_jump(script_env *env)
-s06_if_jump: @ 80993A4
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r4, [r0]
- adds r0, 0x1
- str r0, [r5, 0x8]
- adds r0, r5, 0
- bl ScriptReadWord
- adds r2, r0, 0
- ldr r1, =gUnknown_085102C0
- lsls r0, r4, 1
- adds r0, r4
- ldrb r3, [r5, 0x2]
- adds r0, r3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080993D2
- adds r0, r5, 0
- adds r1, r2, 0
- bl ScriptJump
-_080993D2:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s06_if_jump
-
- thumb_func_start s07_if_call
-s07_if_call: @ 80993E0
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r4, [r0]
- adds r0, 0x1
- str r0, [r5, 0x8]
- adds r0, r5, 0
- bl ScriptReadWord
- adds r2, r0, 0
- ldr r1, =gUnknown_085102C0
- lsls r0, r4, 1
- adds r0, r4
- ldrb r3, [r5, 0x2]
- adds r0, r3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0809940E
- adds r0, r5, 0
- adds r1, r2, 0
- bl ScriptCall
-_0809940E:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s07_if_call
-
- thumb_func_start sB8_set_virtual_address
-@ int sB8_set_virtual_address(script_env *env)
-sB8_set_virtual_address: @ 809941C
- push {r4,lr}
- ldr r4, [r0, 0x8]
- subs r4, 0x1
- bl ScriptReadWord
- ldr r1, =gUnknown_020375C4
- subs r0, r4
- str r0, [r1]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sB8_set_virtual_address
-
- thumb_func_start sB9_virtual_jump
-@ int sB9_virtual_jump(script_env *env)
-sB9_virtual_jump: @ 8099438
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadWord
- adds r1, r0, 0
- ldr r0, =gUnknown_020375C4
- ldr r0, [r0]
- subs r1, r0
- adds r0, r4, 0
- bl ScriptJump
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sB9_virtual_jump
-
- thumb_func_start sBA_virtual_call
-sBA_virtual_call: @ 809945C
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadWord
- adds r1, r0, 0
- ldr r0, =gUnknown_020375C4
- ldr r0, [r0]
- subs r1, r0
- adds r0, r4, 0
- bl ScriptCall
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sBA_virtual_call
-
- thumb_func_start sBB_virtual_if_jump
-sBB_virtual_if_jump: @ 8099480
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r4, [r0]
- adds r0, 0x1
- str r0, [r5, 0x8]
- adds r0, r5, 0
- bl ScriptReadWord
- ldr r1, =gUnknown_020375C4
- ldr r1, [r1]
- subs r2, r0, r1
- ldr r1, =gUnknown_085102C0
- lsls r0, r4, 1
- adds r0, r4
- ldrb r3, [r5, 0x2]
- adds r0, r3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080994B2
- adds r0, r5, 0
- adds r1, r2, 0
- bl ScriptJump
-_080994B2:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sBB_virtual_if_jump
-
- thumb_func_start sBC_virtual_if_call
-sBC_virtual_if_call: @ 80994C4
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r4, [r0]
- adds r0, 0x1
- str r0, [r5, 0x8]
- adds r0, r5, 0
- bl ScriptReadWord
- ldr r1, =gUnknown_020375C4
- ldr r1, [r1]
- subs r2, r0, r1
- ldr r1, =gUnknown_085102C0
- lsls r0, r4, 1
- adds r0, r4
- ldrb r3, [r5, 0x2]
- adds r0, r3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080994F6
- adds r0, r5, 0
- adds r1, r2, 0
- bl ScriptCall
-_080994F6:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sBC_virtual_if_call
-
- thumb_func_start s08_jumpstd
-s08_jumpstd: @ 8099508
- push {lr}
- adds r2, r0, 0
- ldr r0, [r2, 0x8]
- ldrb r1, [r0]
- adds r0, 0x1
- str r0, [r2, 0x8]
- lsls r1, 2
- ldr r0, =gUnknown_081DC2A0
- adds r1, r0
- ldr r0, =gUnknown_081DC2CC
- cmp r1, r0
- bcs _08099528
- ldr r1, [r1]
- adds r0, r2, 0
- bl ScriptJump
-_08099528:
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end s08_jumpstd
-
- thumb_func_start s09_callstd
-s09_callstd: @ 8099538
- push {lr}
- adds r2, r0, 0
- ldr r0, [r2, 0x8]
- ldrb r1, [r0]
- adds r0, 0x1
- str r0, [r2, 0x8]
- lsls r1, 2
- ldr r0, =gUnknown_081DC2A0
- adds r1, r0
- ldr r0, =gUnknown_081DC2CC
- cmp r1, r0
- bcs _08099558
- ldr r1, [r1]
- adds r0, r2, 0
- bl ScriptCall
-_08099558:
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end s09_callstd
-
- thumb_func_start s0A_jumpstd_if
-s0A_jumpstd_if: @ 8099568
- push {r4,lr}
- adds r3, r0, 0
- ldr r0, [r3, 0x8]
- ldrb r2, [r0]
- adds r0, 0x1
- str r0, [r3, 0x8]
- ldrb r4, [r0]
- adds r0, 0x1
- str r0, [r3, 0x8]
- ldr r1, =gUnknown_085102C0
- lsls r0, r2, 1
- adds r0, r2
- ldrb r2, [r3, 0x2]
- adds r0, r2
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080995A0
- lsls r0, r4, 2
- ldr r1, =gUnknown_081DC2A0
- adds r1, r0, r1
- ldr r0, =gUnknown_081DC2CC
- cmp r1, r0
- bcs _080995A0
- ldr r1, [r1]
- adds r0, r3, 0
- bl ScriptJump
-_080995A0:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s0A_jumpstd_if
-
- thumb_func_start s0B_callstd_if
-s0B_callstd_if: @ 80995B4
- push {r4,lr}
- adds r3, r0, 0
- ldr r0, [r3, 0x8]
- ldrb r2, [r0]
- adds r0, 0x1
- str r0, [r3, 0x8]
- ldrb r4, [r0]
- adds r0, 0x1
- str r0, [r3, 0x8]
- ldr r1, =gUnknown_085102C0
- lsls r0, r2, 1
- adds r0, r2
- ldrb r2, [r3, 0x2]
- adds r0, r2
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080995EC
- lsls r0, r4, 2
- ldr r1, =gUnknown_081DC2A0
- adds r1, r0, r1
- ldr r0, =gUnknown_081DC2CC
- cmp r1, r0
- bcs _080995EC
- ldr r1, [r1]
- adds r0, r3, 0
- bl ScriptCall
-_080995EC:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s0B_callstd_if
-
- thumb_func_start s0C_restore_execution_after_sCF
-s0C_restore_execution_after_sCF: @ 8099600
- push {lr}
- ldr r1, =gUnknown_020375C0
- ldr r1, [r1]
- bl ScriptJump
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end s0C_restore_execution_after_sCF
-
- thumb_func_start s0D_endscript_killram
-s0D_endscript_killram: @ 8099614
- push {r4,lr}
- adds r4, r0, 0
- bl ClearRamScript
- adds r0, r4, 0
- bl StopScript
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s0D_endscript_killram
-
- thumb_func_start s0E_set_byte
-s0E_set_byte: @ 809962C
- push {lr}
- ldr r1, [r0, 0x8]
- ldrb r2, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- adds r0, r2, 0
- bl sub_81538C4
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s0E_set_byte
-
- thumb_func_start s0F_u32_var_to_const
-@ int s0F_u32_var_to_const(script_env *env)
-s0F_u32_var_to_const: @ 8099644
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0x8]
- ldrb r5, [r0]
- adds r0, 0x1
- str r0, [r4, 0x8]
- adds r0, r4, 0
- bl ScriptReadWord
- lsls r5, 2
- adds r4, 0x64
- adds r4, r5
- str r0, [r4]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end s0F_u32_var_to_const
-
- thumb_func_start s12_u32_var_to_ptr
-@ int s12_u32_var_to_ptr(script_env *env)
-s12_u32_var_to_ptr: @ 8099668
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0x8]
- ldrb r5, [r0]
- adds r0, 0x1
- str r0, [r4, 0x8]
- adds r0, r4, 0
- bl ScriptReadWord
- lsls r5, 2
- adds r4, 0x64
- adds r4, r5
- ldrb r0, [r0]
- str r0, [r4]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end s12_u32_var_to_ptr
-
- thumb_func_start s11_u8_ptr_to_const
-@ int s11_u8_ptr_to_const(script_env *env)
-s11_u8_ptr_to_const: @ 809968C
- push {r4,lr}
- ldr r1, [r0, 0x8]
- ldrb r4, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- bl ScriptReadWord
- strb r4, [r0]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s11_u8_ptr_to_const
-
- thumb_func_start s10_u8_var_to_const
-@ int s10_u8_var_to_const(script_env *env)
-s10_u8_var_to_const: @ 80996A4
- ldr r1, [r0, 0x8]
- ldrb r3, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- lsls r3, 2
- adds r2, r0, 0
- adds r2, 0x64
- adds r2, r3
- ldrb r3, [r1]
- str r3, [r2]
- adds r1, 0x1
- str r1, [r0, 0x8]
- movs r0, 0
- bx lr
- thumb_func_end s10_u8_var_to_const
-
- thumb_func_start s13_u8_var_to_ptr
-@ int s13_u8_var_to_ptr(script_env *env)
-s13_u8_var_to_ptr: @ 80996C0
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0x8]
- ldrb r5, [r0]
- adds r0, 0x1
- str r0, [r4, 0x8]
- adds r0, r4, 0
- bl ScriptReadWord
- lsls r5, 2
- adds r4, 0x64
- adds r4, r5
- ldr r1, [r4]
- strb r1, [r0]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end s13_u8_var_to_ptr
-
- thumb_func_start s14_u32_var_to_var
-s14_u32_var_to_var: @ 80996E4
- ldr r1, [r0, 0x8]
- ldrb r3, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- ldrb r2, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- lsls r3, 2
- adds r0, 0x64
- adds r3, r0, r3
- lsls r2, 2
- adds r0, r2
- ldr r0, [r0]
- str r0, [r3]
- movs r0, 0
- bx lr
- thumb_func_end s14_u32_var_to_var
-
- thumb_func_start s15_u8_ptr_to_ptr
-s15_u8_ptr_to_ptr: @ 8099704
- push {r4,r5,lr}
- adds r4, r0, 0
- bl ScriptReadWord
- adds r5, r0, 0
- adds r0, r4, 0
- bl ScriptReadWord
- ldrb r0, [r0]
- strb r0, [r5]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end s15_u8_ptr_to_ptr
-
- thumb_func_start s16_u16_gvar_to_const
-s16_u16_gvar_to_const: @ 8099720
- push {r4,r5,lr}
- adds r5, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl GetVarPointer
- adds r4, r0, 0
- adds r0, r5, 0
- bl ScriptReadHalfword
- strh r0, [r4]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end s16_u16_gvar_to_const
-
- thumb_func_start s19_u16_gvar_gvar
-s19_u16_gvar_gvar: @ 8099744
- push {r4,r5,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl GetVarPointer
- adds r5, r0, 0
- adds r0, r4, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl GetVarPointer
- ldrh r0, [r0]
- strh r0, [r5]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end s19_u16_gvar_gvar
-
- thumb_func_start s1A_u16_gvar_gvar
-s1A_u16_gvar_gvar: @ 8099770
- push {r4,r5,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl GetVarPointer
- adds r5, r0, 0
- adds r0, r4, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- strh r0, [r5]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end s1A_u16_gvar_gvar
-
- thumb_func_start compare_012
-compare_012: @ 809979C
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 16
- lsrs r1, 16
- cmp r0, r1
- bcs _080997AE
- movs r0, 0
- b _080997B8
-_080997AE:
- cmp r0, r1
- beq _080997B6
- movs r0, 0x2
- b _080997B8
-_080997B6:
- movs r0, 0x1
-_080997B8:
- pop {r1}
- bx r1
- thumb_func_end compare_012
-
- thumb_func_start s1B_cmp_u8_var_var
-s1B_cmp_u8_var_var: @ 80997BC
- push {r4,lr}
- adds r4, r0, 0
- ldr r2, [r4, 0x8]
- ldrb r0, [r2]
- lsls r0, 2
- adds r3, r4, 0
- adds r3, 0x64
- adds r0, r3, r0
- ldrb r0, [r0]
- adds r2, 0x1
- str r2, [r4, 0x8]
- ldrb r1, [r2]
- lsls r1, 2
- adds r3, r1
- ldrb r1, [r3]
- adds r2, 0x1
- str r2, [r4, 0x8]
- bl compare_012
- strb r0, [r4, 0x2]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s1B_cmp_u8_var_var
-
- thumb_func_start s1C_cmp_u8_var_const
-s1C_cmp_u8_var_const: @ 80997EC
- push {r4,lr}
- adds r4, r0, 0
- ldr r2, [r4, 0x8]
- ldrb r1, [r2]
- lsls r1, 2
- adds r0, 0x64
- adds r0, r1
- ldrb r0, [r0]
- adds r2, 0x1
- str r2, [r4, 0x8]
- ldrb r1, [r2]
- adds r2, 0x1
- str r2, [r4, 0x8]
- bl compare_012
- strb r0, [r4, 0x2]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s1C_cmp_u8_var_const
-
- thumb_func_start s1D_cmp_u8_var_ptr
-s1D_cmp_u8_var_ptr: @ 8099814
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r2, [r4, 0x8]
- ldrb r1, [r2]
- lsls r1, 2
- adds r0, 0x64
- adds r0, r1
- ldrb r5, [r0]
- adds r2, 0x1
- str r2, [r4, 0x8]
- adds r0, r4, 0
- bl ScriptReadWord
- ldrb r1, [r0]
- adds r0, r5, 0
- bl compare_012
- strb r0, [r4, 0x2]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end s1D_cmp_u8_var_ptr
-
- thumb_func_start s1E_cmp_u8_ptr_var
-s1E_cmp_u8_ptr_var: @ 8099840
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadWord
- ldrb r0, [r0]
- ldr r3, [r4, 0x8]
- ldrb r2, [r3]
- lsls r2, 2
- adds r1, r4, 0
- adds r1, 0x64
- adds r1, r2
- ldrb r1, [r1]
- adds r3, 0x1
- str r3, [r4, 0x8]
- bl compare_012
- strb r0, [r4, 0x2]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s1E_cmp_u8_ptr_var
-
- thumb_func_start s1F_cmp_u8_ptr_const
-s1F_cmp_u8_ptr_const: @ 809986C
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadWord
- ldrb r0, [r0]
- ldr r2, [r4, 0x8]
- ldrb r1, [r2]
- adds r2, 0x1
- str r2, [r4, 0x8]
- bl compare_012
- strb r0, [r4, 0x2]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s1F_cmp_u8_ptr_const
-
- thumb_func_start s20_cmp_u8_ptr_ptr
-s20_cmp_u8_ptr_ptr: @ 809988C
- push {r4,r5,lr}
- adds r4, r0, 0
- bl ScriptReadWord
- ldrb r5, [r0]
- adds r0, r4, 0
- bl ScriptReadWord
- ldrb r1, [r0]
- adds r0, r5, 0
- bl compare_012
- strb r0, [r4, 0x2]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end s20_cmp_u8_ptr_ptr
-
- thumb_func_start s21_cmp_u16_gvar_const
-s21_cmp_u16_gvar_const: @ 80998B0
- push {r4,r5,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl GetVarPointer
- ldrh r5, [r0]
- adds r0, r4, 0
- bl ScriptReadHalfword
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r5, 0
- bl compare_012
- strb r0, [r4, 0x2]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end s21_cmp_u16_gvar_const
-
- thumb_func_start s22_cmp_u16_gvar_gvar
-s22_cmp_u16_gvar_gvar: @ 80998E0
- push {r4,r5,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl GetVarPointer
- adds r5, r0, 0
- adds r0, r4, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl GetVarPointer
- ldrh r2, [r5]
- ldrh r1, [r0]
- adds r0, r2, 0
- bl compare_012
- strb r0, [r4, 0x2]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end s22_cmp_u16_gvar_gvar
-
- thumb_func_start s17_u16_gvar_add_const
-s17_u16_gvar_add_const: @ 8099914
- push {r4,r5,lr}
- adds r5, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl GetVarPointer
- adds r4, r0, 0
- adds r0, r5, 0
- bl ScriptReadHalfword
- ldrh r1, [r4]
- adds r0, r1
- strh r0, [r4]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end s17_u16_gvar_add_const
-
- thumb_func_start sub_809993C
-sub_809993C: @ 809993C
- push {r4,r5,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl GetVarPointer
- adds r5, r0, 0
- adds r0, r4, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldrh r1, [r5]
- subs r1, r0
- strh r1, [r5]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_809993C
-
- thumb_func_start s8F_get_random_val
-s8F_get_random_val: @ 809996C
- push {r4,r5,lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldr r5, =gScriptResult
- bl Random
- lsls r0, 16
- lsrs r0, 16
- adds r1, r4, 0
- bl __umodsi3
- strh r0, [r5]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s8F_get_random_val
-
- thumb_func_start sub_80999A0
-sub_80999A0: @ 80999A0
- push {r4,r5,lr}
- adds r5, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r1, r0, 0
- ldr r5, =gScriptResult
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl AddBagItem
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80999A0
-
- thumb_func_start sub_80999E4
-sub_80999E4: @ 80999E4
- push {r4,r5,lr}
- adds r5, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r1, r0, 0
- ldr r5, =gScriptResult
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl RemoveBagItem
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80999E4
-
- thumb_func_start sub_8099A28
-sub_8099A28: @ 8099A28
- push {r4,r5,lr}
- adds r5, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r1, r0, 0
- ldr r5, =gScriptResult
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl CheckBagHasSpace
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8099A28
-
- thumb_func_start sub_8099A6C
-sub_8099A6C: @ 8099A6C
- push {r4,r5,lr}
- adds r5, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r1, r0, 0
- ldr r5, =gScriptResult
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl CheckBagHasItem
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8099A6C
-
- thumb_func_start s48_get_item_type
-s48_get_item_type: @ 8099AB0
- push {r4,lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- ldr r4, =gScriptResult
- bl GetPocketByItemId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s48_get_item_type
-
- thumb_func_start sub_8099ADC
-sub_8099ADC: @ 8099ADC
- push {r4,r5,lr}
- adds r5, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldr r5, =gScriptResult
- adds r0, r4, 0
- bl sub_80D6D70
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8099ADC
-
- thumb_func_start sub_8099B20
-sub_8099B20: @ 8099B20
- push {r4,r5,lr}
- adds r5, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- ldr r5, =gScriptResult
- adds r0, r4, 0
- bl sub_80D6D1C
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8099B20
-
- thumb_func_start sub_8099B64
-sub_8099B64: @ 8099B64
- push {r4,lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r4, =gScriptResult
- lsls r0, 24
- lsrs r0, 24
- bl DecorationAdd
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8099B64
-
- thumb_func_start sub_8099B90
-sub_8099B90: @ 8099B90
- push {r4,lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r4, =gScriptResult
- lsls r0, 24
- lsrs r0, 24
- bl DecorationRemove
- lsls r0, 24
- asrs r0, 24
- strh r0, [r4]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8099B90
-
- thumb_func_start sub_8099BBC
-sub_8099BBC: @ 8099BBC
- push {r4,lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r4, =gScriptResult
- lsls r0, 24
- lsrs r0, 24
- bl DecorationCheckSpace
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8099BBC
-
- thumb_func_start sub_8099BE8
-sub_8099BE8: @ 8099BE8
- push {r4,lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r4, =gScriptResult
- lsls r0, 24
- lsrs r0, 24
- bl sub_8161918
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8099BE8
-
- thumb_func_start s29_flag_set
-@ int s29_flag_set(script_env *env)
-s29_flag_set: @ 8099C14
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl FlagSet
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s29_flag_set
-
- thumb_func_start s2A_flag_clear
-@ int s2A_flag_clear(script_env *env)
-s2A_flag_clear: @ 8099C28
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl FlagReset
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s2A_flag_clear
-
- thumb_func_start s2B_flag_check
-@ int s2B_flag_check(script_env *env)
-s2B_flag_check: @ 8099C3C
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl FlagGet
- strb r0, [r4, 0x2]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s2B_flag_check
-
- thumb_func_start sC3_unknown
-@ int sC3_unknown(script_env *env)
-sC3_unknown: @ 8099C58
- push {lr}
- ldr r1, [r0, 0x8]
- ldrb r2, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- adds r0, r2, 0
- bl IncrementGameStat
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sC3_unknown
-
- thumb_func_start s9A_unknown
-@ int s9A_unknown(script_env *env)
-s9A_unknown: @ 8099C70
- push {lr}
- ldr r1, [r0, 0x8]
- ldrb r2, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- adds r0, r2, 0
- bl sub_80B009C
- bl ScriptContext1_Stop
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end s9A_unknown
-
- thumb_func_start s99_unknown
-@ int s99_unknown(script_env *env)
-s99_unknown: @ 8099C8C
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- bl sub_80854EC
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s99_unknown
-
- thumb_func_start sub_8099CA8
-sub_8099CA8: @ 8099CA8
- push {lr}
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08099CC0
- movs r0, 0
- b _08099CC2
- .pool
-_08099CC0:
- movs r0, 0x1
-_08099CC2:
- pop {r1}
- bx r1
- thumb_func_end sub_8099CA8
-
- thumb_func_start s97_screen_special_effect
-@ int s97_screen_special_effect(script_env *env)
-s97_screen_special_effect: @ 8099CC8
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, [r4, 0x8]
- ldrb r0, [r1]
- adds r1, 0x1
- str r1, [r4, 0x8]
- movs r1, 0
- bl fade_screen
- ldr r1, =sub_8099CA8
- adds r0, r4, 0
- bl SetupNativeScript
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s97_screen_special_effect
-
- thumb_func_start s98_refade_with_timer
-@ int s98_refade_with_timer(script_env *env)
-s98_refade_with_timer: @ 8099CF0
- push {r4,lr}
- adds r4, r0, 0
- ldr r2, [r4, 0x8]
- ldrb r0, [r2]
- adds r2, 0x1
- str r2, [r4, 0x8]
- ldrb r1, [r2]
- adds r2, 0x1
- str r2, [r4, 0x8]
- lsls r1, 24
- asrs r1, 24
- bl fade_screen
- ldr r1, =sub_8099CA8
- adds r0, r4, 0
- bl SetupNativeScript
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s98_refade_with_timer
-
- thumb_func_start sub_8099D20
-@ int sub_8099D20(script_env *env)
-sub_8099D20: @ 8099D20
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r4, [r0]
- adds r0, 0x1
- str r0, [r5, 0x8]
- cmp r4, 0x1
- beq _08099D3E
- cmp r4, 0x1
- bgt _08099D3A
- cmp r4, 0
- beq _08099D60
- b _08099D3E
-_08099D3A:
- cmp r4, 0x2
- beq _08099D60
-_08099D3E:
- ldr r0, =gPlttBufferUnfaded
- ldr r1, =gPaletteDecompressionBuffer
- ldr r2, =0x04000100
- bl CpuSet
- adds r0, r4, 0
- movs r1, 0
- bl fade_screen
- b _08099D72
- .pool
-_08099D60:
- ldr r0, =gPaletteDecompressionBuffer
- ldr r1, =gPlttBufferUnfaded
- ldr r2, =0x04000100
- bl CpuSet
- adds r0, r4, 0
- movs r1, 0
- bl fade_screen
-_08099D72:
- ldr r1, =sub_8099CA8
- adds r0, r5, 0
- bl SetupNativeScript
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_8099D20
-
- thumb_func_start s28_pause_asm
-s28_pause_asm: @ 8099D94
- push {lr}
- ldr r1, =gUnknown_020375C8
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- cmp r0, 0
- beq _08099DAC
- movs r0, 0
- b _08099DAE
- .pool
-_08099DAC:
- movs r0, 0x1
-_08099DAE:
- pop {r1}
- bx r1
- thumb_func_end s28_pause_asm
-
- thumb_func_start s28_pause
-@ int s28_pause(script_env *env)
-s28_pause: @ 8099DB4
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- ldr r1, =gUnknown_020375C8
- strh r0, [r1]
- ldr r1, =s28_pause_asm
- adds r0, r4, 0
- bl SetupNativeScript
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s28_pause
-
- thumb_func_start s2C_unknown
-@ int s2C_unknown(script_env *env)
-s2C_unknown: @ 8099DD8
- push {r4,r5,lr}
- adds r5, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl RtcInitLocalTimeOffset
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end s2C_unknown
-
- thumb_func_start s2D_unknown
-@ int s2D_unknown(script_env *env)
-s2D_unknown: @ 8099E10
- push {lr}
- bl sub_809E7B0
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s2D_unknown
-
- thumb_func_start s2E_unknown
-@ int s2E_unknown(script_env *env)
-s2E_unknown: @ 8099E1C
- push {lr}
- bl RtcCalcLocalTime
- ldr r2, =gSpecialVar_0x8000
- ldr r1, =gLocalTime
- movs r0, 0x2
- ldrsb r0, [r1, r0]
- strh r0, [r2]
- ldr r2, =gSpecialVar_0x8001
- movs r0, 0x3
- ldrsb r0, [r1, r0]
- strh r0, [r2]
- ldr r2, =gSpecialVar_0x8002
- movs r0, 0x4
- ldrsb r0, [r1, r0]
- strh r0, [r2]
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end s2E_unknown
-
- thumb_func_start sA4_set_weather_data
-@ int sA4_set_weather_data(script_env *env)
-sA4_set_weather_data: @ 8099E54
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- bl sub_80AED7C
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sA4_set_weather_data
-
- thumb_func_start sA3_set_standard_weather_data
-@ int sA3_set_standard_weather_data(script_env *env)
-sA3_set_standard_weather_data: @ 8099E70
- push {lr}
- bl sub_80AEDBC
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sA3_set_standard_weather_data
-
- thumb_func_start sub_8099E7C
-@ int sub_8099E7C(script_env *env)
-sub_8099E7C: @ 8099E7C
- push {lr}
- bl sub_80AEE20
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sub_8099E7C
-
- thumb_func_start sA6_activate_per_step_callback_eg_ash
-@ int sA6_activate_per_step_callback_eg_ash(script_env *env)
-sA6_activate_per_step_callback_eg_ash: @ 8099E88
- push {lr}
- ldr r1, [r0, 0x8]
- ldrb r2, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- adds r0, r2, 0
- bl activate_per_step_callback
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sA6_activate_per_step_callback_eg_ash
-
- thumb_func_start sA7_set_new_map_footer
-@ int sA7_set_new_map_footer(script_env *env)
-sA7_set_new_map_footer: @ 8099EA0
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- bl sub_8085524
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sA7_set_new_map_footer
-
- thumb_func_start s39_warp_sfx
-@ int s39_warp_sfx(script_env *env)
-s39_warp_sfx: @ 8099EBC
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r1, r0, 0x1
- str r1, [r5, 0x8]
- ldrb r6, [r0, 0x1]
- adds r1, 0x1
- str r1, [r5, 0x8]
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- mov r1, r9
- lsls r1, 24
- asrs r1, 24
- mov r9, r1
- mov r1, r8
- lsls r1, 24
- asrs r1, 24
- mov r8, r1
- lsls r6, 24
- asrs r6, 24
- lsls r4, 24
- asrs r4, 24
- lsls r0, 24
- asrs r0, 24
- str r0, [sp]
- mov r0, r9
- adds r2, r6, 0
- adds r3, r4, 0
- bl warp1_set
- bl sub_80AF734
- bl player_avatar_init_params_reset
- movs r0, 0x1
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end s39_warp_sfx
-
- thumb_func_start s3A_warp_new_music
-@ int s3A_warp_new_music(script_env *env)
-s3A_warp_new_music: @ 8099F44
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r1, r0, 0x1
- str r1, [r5, 0x8]
- ldrb r6, [r0, 0x1]
- adds r1, 0x1
- str r1, [r5, 0x8]
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- mov r1, r9
- lsls r1, 24
- asrs r1, 24
- mov r9, r1
- mov r1, r8
- lsls r1, 24
- asrs r1, 24
- mov r8, r1
- lsls r6, 24
- asrs r6, 24
- lsls r4, 24
- asrs r4, 24
- lsls r0, 24
- asrs r0, 24
- str r0, [sp]
- mov r0, r9
- adds r2, r6, 0
- adds r3, r4, 0
- bl warp1_set
- bl sp13E_warp_to_last_warp
- bl player_avatar_init_params_reset
- movs r0, 0x1
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end s3A_warp_new_music
-
- thumb_func_start s3B_warp_keep_music
-@ int s3B_warp_keep_music(script_env *env)
-s3B_warp_keep_music: @ 8099FCC
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r1, r0, 0x1
- str r1, [r5, 0x8]
- ldrb r6, [r0, 0x1]
- adds r1, 0x1
- str r1, [r5, 0x8]
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- mov r1, r9
- lsls r1, 24
- asrs r1, 24
- mov r9, r1
- mov r1, r8
- lsls r1, 24
- asrs r1, 24
- mov r8, r1
- lsls r6, 24
- asrs r6, 24
- lsls r4, 24
- asrs r4, 24
- lsls r0, 24
- asrs r0, 24
- str r0, [sp]
- mov r0, r9
- adds r2, r6, 0
- adds r3, r4, 0
- bl warp1_set
- bl sub_80AF7D0
- bl player_avatar_init_params_reset
- movs r0, 0x1
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end s3B_warp_keep_music
-
- thumb_func_start sub_809A054
-sub_809A054: @ 809A054
- push {r4-r6,lr}
- sub sp, 0x8
- ldr r1, [r0, 0x8]
- ldrb r6, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- ldrb r5, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- mov r4, sp
- adds r4, 0x6
- add r0, sp, 0x4
- adds r1, r4, 0
- bl PlayerGetDestCoords
- cmp r6, 0xFF
- bne _0809A092
- cmp r5, 0xFF
- bne _0809A092
- add r0, sp, 0x4
- ldrh r0, [r0]
- subs r0, 0x7
- lsls r0, 16
- asrs r0, 16
- ldrh r1, [r4]
- subs r1, 0x7
- lsls r1, 16
- asrs r1, 16
- bl sub_8084EBC
- b _0809A0B6
-_0809A092:
- lsls r0, r6, 24
- asrs r0, 24
- lsls r1, r5, 24
- asrs r1, 24
- movs r2, 0x1
- negs r2, r2
- add r3, sp, 0x4
- ldrb r3, [r3]
- subs r3, 0x7
- lsls r3, 24
- asrs r3, 24
- ldrb r4, [r4]
- subs r4, 0x7
- lsls r4, 24
- asrs r4, 24
- str r4, [sp]
- bl warp1_set
-_0809A0B6:
- bl sp13F_fall_to_last_warp
- bl player_avatar_init_params_reset
- movs r0, 0x1
- add sp, 0x8
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_809A054
-
- thumb_func_start s3D_warp_v4
-s3D_warp_v4: @ 809A0C8
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r1, r0, 0x1
- str r1, [r5, 0x8]
- ldrb r6, [r0, 0x1]
- adds r1, 0x1
- str r1, [r5, 0x8]
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- mov r1, r9
- lsls r1, 24
- asrs r1, 24
- mov r9, r1
- mov r1, r8
- lsls r1, 24
- asrs r1, 24
- mov r8, r1
- lsls r6, 24
- asrs r6, 24
- lsls r4, 24
- asrs r4, 24
- lsls r0, 24
- asrs r0, 24
- str r0, [sp]
- mov r0, r9
- adds r2, r6, 0
- adds r3, r4, 0
- bl warp1_set
- bl sub_80AF848
- bl player_avatar_init_params_reset
- movs r0, 0x1
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end s3D_warp_v4
-
- thumb_func_start sub_809A150
-sub_809A150: @ 809A150
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r1, r0, 0x1
- str r1, [r5, 0x8]
- ldrb r6, [r0, 0x1]
- adds r1, 0x1
- str r1, [r5, 0x8]
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- mov r1, r9
- lsls r1, 24
- asrs r1, 24
- mov r9, r1
- mov r1, r8
- lsls r1, 24
- asrs r1, 24
- mov r8, r1
- lsls r6, 24
- asrs r6, 24
- lsls r4, 24
- asrs r4, 24
- lsls r0, 24
- asrs r0, 24
- str r0, [sp]
- mov r0, r9
- adds r2, r6, 0
- adds r3, r4, 0
- bl warp1_set
- bl sub_80AF87C
- bl player_avatar_init_params_reset
- movs r0, 0x1
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_809A150
-
- thumb_func_start s3E_set_new_map
-s3E_set_new_map: @ 809A1D8
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r1, r0, 0x1
- str r1, [r5, 0x8]
- ldrb r6, [r0, 0x1]
- adds r1, 0x1
- str r1, [r5, 0x8]
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- mov r1, r9
- lsls r1, 24
- asrs r1, 24
- mov r9, r1
- mov r1, r8
- lsls r1, 24
- asrs r1, 24
- mov r8, r1
- lsls r6, 24
- asrs r6, 24
- lsls r4, 24
- asrs r4, 24
- lsls r0, 24
- asrs r0, 24
- str r0, [sp]
- mov r0, r9
- adds r2, r6, 0
- adds r3, r4, 0
- bl warp1_set
- movs r0, 0
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end s3E_set_new_map
-
- thumb_func_start s3F_set_new_map_DMA
-s3F_set_new_map_DMA: @ 809A258
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x8
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r1, r0, 0x1
- str r1, [r5, 0x8]
- ldrb r6, [r0, 0x1]
- adds r1, 0x1
- str r1, [r5, 0x8]
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- mov r1, r9
- lsls r1, 24
- asrs r1, 24
- mov r9, r1
- mov r1, r8
- lsls r1, 24
- asrs r1, 24
- mov r8, r1
- lsls r6, 24
- asrs r6, 24
- lsls r4, 24
- asrs r4, 24
- str r4, [sp]
- lsls r0, 24
- asrs r0, 24
- str r0, [sp, 0x4]
- movs r0, 0
- mov r1, r9
- mov r2, r8
- adds r3, r6, 0
- bl saved_warp2_set_2
- movs r0, 0
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end s3F_set_new_map_DMA
-
- thumb_func_start sub_809A2DC
-sub_809A2DC: @ 809A2DC
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r1, r0, 0x1
- str r1, [r5, 0x8]
- ldrb r6, [r0, 0x1]
- adds r1, 0x1
- str r1, [r5, 0x8]
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- mov r1, r9
- lsls r1, 24
- asrs r1, 24
- mov r9, r1
- mov r1, r8
- lsls r1, 24
- asrs r1, 24
- mov r8, r1
- lsls r6, 24
- asrs r6, 24
- lsls r4, 24
- asrs r4, 24
- lsls r0, 24
- asrs r0, 24
- str r0, [sp]
- mov r0, r9
- adds r2, r6, 0
- adds r3, r4, 0
- bl sub_8084E2C
- movs r0, 0
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_809A2DC
-
- thumb_func_start sub_809A35C
-sub_809A35C: @ 809A35C
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r1, r0, 0x1
- str r1, [r5, 0x8]
- ldrb r6, [r0, 0x1]
- adds r1, 0x1
- str r1, [r5, 0x8]
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- mov r1, r9
- lsls r1, 24
- asrs r1, 24
- mov r9, r1
- mov r1, r8
- lsls r1, 24
- asrs r1, 24
- mov r8, r1
- lsls r6, 24
- asrs r6, 24
- lsls r4, 24
- asrs r4, 24
- lsls r0, 24
- asrs r0, 24
- str r0, [sp]
- mov r0, r9
- adds r2, r6, 0
- adds r3, r4, 0
- bl sub_8084E80
- movs r0, 0
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_809A35C
-
- thumb_func_start sC4_unknown
-sC4_unknown: @ 809A3DC
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r1, r0, 0x1
- str r1, [r5, 0x8]
- ldrb r6, [r0, 0x1]
- adds r1, 0x1
- str r1, [r5, 0x8]
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- mov r1, r9
- lsls r1, 24
- asrs r1, 24
- mov r9, r1
- mov r1, r8
- lsls r1, 24
- asrs r1, 24
- mov r8, r1
- lsls r6, 24
- asrs r6, 24
- lsls r4, 24
- asrs r4, 24
- lsls r0, 24
- asrs r0, 24
- str r0, [sp]
- mov r0, r9
- adds r2, r6, 0
- adds r3, r4, 0
- bl sub_8084DD4
- movs r0, 0
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sC4_unknown
-
- thumb_func_start s42_get_map_camera_pos
-@ int s42_get_map_camera_pos(script_env *env)
-s42_get_map_camera_pos: @ 809A45C
- push {r4,r5,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl GetVarPointer
- adds r5, r0, 0
- adds r0, r4, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl GetVarPointer
- ldr r2, =gSaveBlock1Ptr
- ldr r1, [r2]
- ldrh r1, [r1]
- strh r1, [r5]
- ldr r1, [r2]
- ldrh r1, [r1, 0x2]
- strh r1, [r0]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s42_get_map_camera_pos
-
- thumb_func_start s43_get_player_party_count
-s43_get_player_party_count: @ 809A498
- push {r4,lr}
- ldr r4, =gScriptResult
- bl CalculatePlayerPartyCount
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s43_get_player_party_count
-
- thumb_func_start s2F_music_play
-s2F_music_play: @ 809A4B4
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl PlaySE
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s2F_music_play
-
- thumb_func_start s30_music_check_asm
-s30_music_check_asm: @ 809A4C8
- push {lr}
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- beq _0809A4D8
- movs r0, 0
- b _0809A4DA
-_0809A4D8:
- movs r0, 0x1
-_0809A4DA:
- pop {r1}
- bx r1
- thumb_func_end s30_music_check_asm
-
- thumb_func_start s30_music_check
-s30_music_check: @ 809A4E0
- push {lr}
- ldr r1, =s30_music_check_asm
- bl SetupNativeScript
- movs r0, 0x1
- pop {r1}
- bx r1
- .pool
- thumb_func_end s30_music_check
-
- thumb_func_start s31_PlayFanfare
-s31_PlayFanfare: @ 809A4F4
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl PlayFanfare
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s31_PlayFanfare
-
- thumb_func_start s32_fanfare_wait_asm
-s32_fanfare_wait_asm: @ 809A508
- push {lr}
- bl IsFanfareTaskInactive
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end s32_fanfare_wait_asm
-
- thumb_func_start s32_fanfare_wait
-s32_fanfare_wait: @ 809A518
- push {lr}
- ldr r1, =s32_fanfare_wait_asm
- bl SetupNativeScript
- movs r0, 0x1
- pop {r1}
- bx r1
- .pool
- thumb_func_end s32_fanfare_wait
-
- thumb_func_start s33_play_music
-@ int s33_play_music(script_env *env)
-s33_play_music: @ 809A52C
- push {r4,r5,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r2, r0, 16
- adds r5, r2, 0
- ldr r0, [r4, 0x8]
- ldrb r1, [r0]
- adds r0, 0x1
- str r0, [r4, 0x8]
- cmp r1, 0x1
- bne _0809A54C
- adds r0, r2, 0
- bl sav1_set_battle_music_maybe
-_0809A54C:
- adds r0, r5, 0
- bl PlayNewMapMusic
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end s33_play_music
-
- thumb_func_start s34_unknown
-s34_unknown: @ 809A55C
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl sav1_set_battle_music_maybe
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s34_unknown
-
- thumb_func_start s35_fade_to_default
-s35_fade_to_default: @ 809A570
- push {lr}
- bl sub_8085898
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s35_fade_to_default
-
- thumb_func_start s36_fade_to_music
-s36_fade_to_music: @ 809A57C
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl sub_80858C4
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s36_fade_to_music
-
- thumb_func_start s37_fadeout
-s37_fadeout: @ 809A590
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0x8]
- ldrb r1, [r0]
- adds r0, 0x1
- str r0, [r4, 0x8]
- cmp r1, 0
- beq _0809A5AA
- lsls r0, r1, 26
- lsrs r0, 24
- bl FadeOutBGMTemporarily
- b _0809A5B0
-_0809A5AA:
- movs r0, 0x4
- bl FadeOutBGMTemporarily
-_0809A5B0:
- ldr r1, =IsBGMPausedOrStopped
- adds r0, r4, 0
- bl SetupNativeScript
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s37_fadeout
-
- thumb_func_start s38_fadein
-s38_fadein: @ 809A5C4
- push {lr}
- ldr r1, [r0, 0x8]
- ldrb r2, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- cmp r2, 0
- beq _0809A5DC
- lsls r0, r2, 26
- lsrs r0, 24
- bl FadeInBGM
- b _0809A5E2
-_0809A5DC:
- movs r0, 0x4
- bl FadeInBGM
-_0809A5E2:
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s38_fadein
-
- thumb_func_start s4F_execute_movement
-s4F_execute_movement: @ 809A5E8
- push {r4,r5,lr}
- adds r5, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadWord
- adds r3, r0, 0
- lsls r0, r4, 24
- lsrs r0, 24
- ldr r1, =gSaveBlock1Ptr
- ldr r2, [r1]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- bl exec_movement
- ldr r0, =gUnknown_020375CA
- strh r4, [r0]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s4F_execute_movement
-
- thumb_func_start s50_execute_movement_remote
-s50_execute_movement_remote: @ 809A62C
- push {r4,r5,lr}
- adds r5, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadWord
- adds r3, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r2, [r0]
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- adds r0, 0x1
- str r0, [r5, 0x8]
- lsls r0, r4, 24
- lsrs r0, 24
- bl exec_movement
- ldr r0, =gUnknown_020375CA
- strh r4, [r0]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s50_execute_movement_remote
-
- thumb_func_start s51a_0806B288
-s51a_0806B288: @ 809A670
- push {lr}
- ldr r0, =gUnknown_020375CA
- ldrb r0, [r0]
- ldr r1, =gUnknown_020375CE
- ldrb r1, [r1]
- ldr r2, =gUnknown_020375CC
- ldrb r2, [r2]
- bl sub_80D3340
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .pool
- thumb_func_end s51a_0806B288
-
- thumb_func_start s51_waitmove
-s51_waitmove: @ 809A698
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- beq _0809A6B4
- ldr r0, =gUnknown_020375CA
- strh r1, [r0]
-_0809A6B4:
- ldr r1, =gUnknown_020375CC
- ldr r0, =gSaveBlock1Ptr
- ldr r2, [r0]
- movs r0, 0x4
- ldrsb r0, [r2, r0]
- strh r0, [r1]
- ldr r1, =gUnknown_020375CE
- movs r0, 0x5
- ldrsb r0, [r2, r0]
- strh r0, [r1]
- ldr r1, =s51a_0806B288
- adds r0, r4, 0
- bl SetupNativeScript
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s51_waitmove
-
- thumb_func_start s52_waitmove_remote
-s52_waitmove_remote: @ 809A6EC
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- beq _0809A708
- ldr r0, =gUnknown_020375CA
- strh r1, [r0]
-_0809A708:
- ldr r0, [r4, 0x8]
- ldrb r2, [r0]
- adds r0, 0x1
- str r0, [r4, 0x8]
- ldrb r1, [r0]
- adds r0, 0x1
- str r0, [r4, 0x8]
- ldr r0, =gUnknown_020375CC
- strh r2, [r0]
- ldr r0, =gUnknown_020375CE
- strh r1, [r0]
- ldr r1, =s51a_0806B288
- adds r0, r4, 0
- bl SetupNativeScript
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s52_waitmove_remote
-
- thumb_func_start s53_hide_sprite
-s53_hide_sprite: @ 809A740
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gSaveBlock1Ptr
- ldr r2, [r1]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- bl RemoveFieldObjectByLocalIdAndMap
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end s53_hide_sprite
-
- thumb_func_start s54_hide_sprite_set_coords
-s54_hide_sprite_set_coords: @ 809A768
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r3, [r4, 0x8]
- ldrb r2, [r3]
- adds r3, 0x1
- str r3, [r4, 0x8]
- ldrb r1, [r3]
- adds r3, 0x1
- str r3, [r4, 0x8]
- lsls r0, 24
- lsrs r0, 24
- bl RemoveFieldObjectByLocalIdAndMap
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s54_hide_sprite_set_coords
-
- thumb_func_start s55_show_sprite
-s55_show_sprite: @ 809A798
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gSaveBlock1Ptr
- ldr r2, [r1]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- bl show_sprite
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end s55_show_sprite
-
- thumb_func_start s56_show_sprite_set_coords
-s56_show_sprite_set_coords: @ 809A7C0
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r3, [r4, 0x8]
- ldrb r2, [r3]
- adds r3, 0x1
- str r3, [r4, 0x8]
- ldrb r1, [r3]
- adds r3, 0x1
- str r3, [r4, 0x8]
- lsls r0, 24
- lsrs r0, 24
- bl show_sprite
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s56_show_sprite_set_coords
-
- thumb_func_start s57_move_sprites
-s57_move_sprites: @ 809A7F0
- push {r4-r6,lr}
- sub sp, 0x4
- adds r6, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r6, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r6, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r5, 24
- lsrs r5, 24
- ldr r1, =gSaveBlock1Ptr
- ldr r2, [r1]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- lsls r4, 16
- asrs r4, 16
- lsls r0, 16
- asrs r0, 16
- str r0, [sp]
- adds r0, r5, 0
- adds r3, r4, 0
- bl sub_808EBA8
- movs r0, 0
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s57_move_sprites
-
- thumb_func_start s63_new_sprite_location_permanent
-s63_new_sprite_location_permanent: @ 809A858
- push {r4-r6,lr}
- adds r6, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r6, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r6, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r2, r0, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, 16
- asrs r4, 16
- lsls r2, 16
- asrs r2, 16
- adds r0, r5, 0
- adds r1, r4, 0
- bl update_saveblock1_field_object_coords
- movs r0, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end s63_new_sprite_location_permanent
-
- thumb_func_start s64_set_sprite_top_left_corner
-s64_set_sprite_top_left_corner: @ 809A8B0
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gSaveBlock1Ptr
- ldr r2, [r1]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- bl sub_808F254
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end s64_set_sprite_top_left_corner
-
- thumb_func_start s58_npc_f1_clear_x20
-s58_npc_f1_clear_x20: @ 809A8D8
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r3, [r4, 0x8]
- ldrb r2, [r3]
- adds r3, 0x1
- str r3, [r4, 0x8]
- ldrb r1, [r3]
- adds r3, 0x1
- str r3, [r4, 0x8]
- lsls r0, 24
- lsrs r0, 24
- movs r3, 0
- bl npc_by_local_id_and_map_set_field_1_bit_x20
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s58_npc_f1_clear_x20
-
- thumb_func_start s59_npc_f1_set_x20
-s59_npc_f1_set_x20: @ 809A908
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r3, [r4, 0x8]
- ldrb r2, [r3]
- adds r3, 0x1
- str r3, [r4, 0x8]
- ldrb r1, [r3]
- adds r3, 0x1
- str r3, [r4, 0x8]
- lsls r0, 24
- lsrs r0, 24
- movs r3, 0x1
- bl npc_by_local_id_and_map_set_field_1_bit_x20
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s59_npc_f1_set_x20
-
- thumb_func_start sA8_unknown
-sA8_unknown: @ 809A938
- push {r4,r5,lr}
- adds r5, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r3, [r5, 0x8]
- ldrb r2, [r3]
- adds r3, 0x1
- str r3, [r5, 0x8]
- ldrb r1, [r3]
- adds r4, r3, 0x1
- str r4, [r5, 0x8]
- ldrb r3, [r3, 0x1]
- adds r4, 0x1
- str r4, [r5, 0x8]
- lsls r0, 24
- lsrs r0, 24
- adds r3, 0x53
- lsls r3, 24
- lsrs r3, 24
- bl sub_808E78C
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sA8_unknown
-
- thumb_func_start sA9_unknown
-sA9_unknown: @ 809A974
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r3, [r4, 0x8]
- ldrb r2, [r3]
- adds r3, 0x1
- str r3, [r4, 0x8]
- ldrb r1, [r3]
- adds r3, 0x1
- str r3, [r4, 0x8]
- lsls r0, 24
- lsrs r0, 24
- bl sub_808E7E4
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sA9_unknown
-
- thumb_func_start s5A_face_player
-s5A_face_player: @ 809A9A4
- push {r4,lr}
- ldr r2, =gMapObjects
- ldr r0, =gSelectedMapObject
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r4, r0, r2
- ldrb r0, [r4]
- lsls r0, 31
- cmp r0, 0
- beq _0809A9CC
- bl player_get_direction_lower_nybble
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl FieldObjectFaceOppositeDirection
-_0809A9CC:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s5A_face_player
-
- thumb_func_start s5B_npc_set_direction
-s5B_npc_set_direction: @ 809A9DC
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r1, [r4, 0x8]
- ldrb r3, [r1]
- adds r1, 0x1
- str r1, [r4, 0x8]
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gSaveBlock1Ptr
- ldr r2, [r1]
- ldrb r1, [r2, 0x5]
- ldrb r2, [r2, 0x4]
- bl FieldObjectTurnByLocalIdAndMap
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s5B_npc_set_direction
-
- thumb_func_start s65_set_sprite_behaviour
-s65_set_sprite_behaviour: @ 809AA10
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r2, [r4, 0x8]
- ldrb r1, [r2]
- adds r2, 0x1
- str r2, [r4, 0x8]
- lsls r0, 24
- lsrs r0, 24
- bl update_saveblock1_field_object_movement_behavior
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s65_set_sprite_behaviour
-
- thumb_func_start sAA_create_new_sprite
-sAA_create_new_sprite: @ 809AA38
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x8
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r6, [r0]
- adds r0, 0x1
- str r0, [r5, 0x8]
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r3, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r2, [r0]
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- adds r0, 0x1
- str r0, [r5, 0x8]
- lsls r4, 16
- asrs r4, 16
- lsls r3, 16
- asrs r3, 16
- str r2, [sp]
- str r1, [sp, 0x4]
- mov r0, r8
- adds r1, r6, 0
- adds r2, r4, 0
- bl sprite_new
- movs r0, 0
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sAA_create_new_sprite
-
- thumb_func_start sAB_unknown
-sAB_unknown: @ 809AAA8
- push {lr}
- ldr r2, [r0, 0x8]
- ldrb r3, [r2]
- adds r2, 0x1
- str r2, [r0, 0x8]
- ldrb r1, [r2]
- adds r2, 0x1
- str r2, [r0, 0x8]
- adds r0, r3, 0
- bl sub_8097B78
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sAB_unknown
-
- thumb_func_start sub_809AAC4
-sub_809AAC4: @ 809AAC4
- push {r4,lr}
- adds r4, r0, 0
- bl is_c1_link_related_active
- cmp r0, 0
- bne _0809AAE4
- bl sub_80983E8
- ldr r1, =sub_80983C4
- adds r0, r4, 0
- bl SetupNativeScript
- movs r0, 0x1
- b _0809AAE6
- .pool
-_0809AAE4:
- movs r0, 0
-_0809AAE6:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_809AAC4
-
- thumb_func_start sub_809AAEC
-sub_809AAEC: @ 809AAEC
- push {r4,lr}
- adds r4, r0, 0
- bl is_c1_link_related_active
- cmp r0, 0
- beq _0809AAFC
- movs r0, 0
- b _0809AB3A
-_0809AAFC:
- ldr r2, =gMapObjects
- ldr r0, =gSelectedMapObject
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 31
- cmp r0, 0
- beq _0809AB2C
- bl sub_80984A0
- ldr r1, =sub_809847C
- adds r0, r4, 0
- bl SetupNativeScript
- b _0809AB38
- .pool
-_0809AB2C:
- bl sub_80983E8
- ldr r1, =sub_80983C4
- adds r0, r4, 0
- bl SetupNativeScript
-_0809AB38:
- movs r0, 0x1
-_0809AB3A:
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809AAEC
-
- thumb_func_start s6B_release
-s6B_release: @ 809AB44
- push {lr}
- bl textbox_close
- movs r0, 0xFF
- movs r1, 0
- movs r2, 0
- bl GetFieldObjectIdByLocalIdAndMap
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =gMapObjects
- adds r0, r1
- bl FieldObjectClearAnimIfSpecialAnimFinished
- bl sub_80D338C
- bl sub_809757C
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end s6B_release
-
- thumb_func_start s6C_release_2
-s6C_release_2: @ 809AB7C
- push {r4,lr}
- bl textbox_close
- ldr r4, =gMapObjects
- ldr r0, =gSelectedMapObject
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r4
- ldrb r0, [r1]
- lsls r0, 31
- cmp r0, 0
- beq _0809AB9E
- adds r0, r1, 0
- bl FieldObjectClearAnimIfSpecialAnimFinished
-_0809AB9E:
- movs r0, 0xFF
- movs r1, 0
- movs r2, 0
- bl GetFieldObjectIdByLocalIdAndMap
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl FieldObjectClearAnimIfSpecialAnimFinished
- bl sub_80D338C
- bl sub_809757C
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s6C_release_2
-
- thumb_func_start s67_execute_box
-s67_execute_box: @ 809ABD4
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadWord
- cmp r0, 0
- bne _0809ABE2
- ldr r0, [r4, 0x64]
-_0809ABE2:
- bl box_related_two__2
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s67_execute_box
-
- thumb_func_start sub_809ABF0
-sub_809ABF0: @ 809ABF0
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadWord
- cmp r0, 0
- bne _0809ABFE
- ldr r0, [r4, 0x64]
-_0809ABFE:
- bl sub_8098238
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_809ABF0
-
- thumb_func_start s9B_unknown
-s9B_unknown: @ 809AC0C
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadWord
- adds r3, r0, 0
- cmp r3, 0
- bne _0809AC1C
- ldr r3, [r4, 0x64]
-_0809AC1C:
- ldr r2, =gTextFlags
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r2]
- adds r0, r3, 0
- bl box_related_two__3
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s9B_unknown
-
- thumb_func_start sub_809AC3C
-sub_809AC3C: @ 809AC3C
- push {r4,r5,lr}
- sub sp, 0xC
- adds r5, r0, 0
- bl ScriptReadWord
- adds r4, r0, 0
- cmp r4, 0
- bne _0809AC4E
- ldr r4, [r5, 0x64]
-_0809AC4E:
- bl sub_81973A4
- movs r0, 0
- movs r1, 0x1
- bl sub_81973C4
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- movs r1, 0x1
- adds r2, r4, 0
- movs r3, 0
- bl PrintTextOnWindow
- movs r0, 0
- add sp, 0xC
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_809AC3C
-
- thumb_func_start sub_809AC78
-sub_809AC78: @ 809AC78
- push {lr}
- ldr r1, =sub_809833C
- bl SetupNativeScript
- movs r0, 0x1
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809AC78
-
- thumb_func_start s68_close_box
-s68_close_box: @ 809AC8C
- push {lr}
- bl textbox_close
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s68_close_box
-
- thumb_func_start sub_809AC98
-sub_809AC98: @ 809AC98
- push {lr}
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0809ACB8
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _0809ACB8
- movs r0, 0
- b _0809ACBA
- .pool
-_0809ACB8:
- movs r0, 0x1
-_0809ACBA:
- pop {r1}
- bx r1
- thumb_func_end sub_809AC98
-
- thumb_func_start sub_809ACC0
-sub_809ACC0: @ 809ACC0
- push {lr}
- ldr r1, =sub_809AC98
- bl SetupNativeScript
- movs r0, 0x1
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809ACC0
-
- thumb_func_start s6E_yes_no
-s6E_yes_no: @ 809ACD4
- push {lr}
- ldr r2, [r0, 0x8]
- ldrb r3, [r2]
- adds r2, 0x1
- str r2, [r0, 0x8]
- ldrb r1, [r2]
- adds r2, 0x1
- str r2, [r0, 0x8]
- adds r0, r3, 0
- bl yes_no_box
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0809ACF6
- movs r0, 0
- b _0809ACFC
-_0809ACF6:
- bl ScriptContext1_Stop
- movs r0, 0x1
-_0809ACFC:
- pop {r1}
- bx r1
- thumb_func_end s6E_yes_no
-
- thumb_func_start s6F_multichoice
-s6F_multichoice: @ 809AD00
- push {r4,r5,lr}
- ldr r2, [r0, 0x8]
- ldrb r5, [r2]
- adds r2, 0x1
- str r2, [r0, 0x8]
- ldrb r1, [r2]
- adds r3, r2, 0x1
- str r3, [r0, 0x8]
- ldrb r2, [r2, 0x1]
- adds r4, r3, 0x1
- str r4, [r0, 0x8]
- ldrb r3, [r3, 0x1]
- adds r4, 0x1
- str r4, [r0, 0x8]
- adds r0, r5, 0
- bl Multichoice
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0809AD2E
- movs r0, 0
- b _0809AD34
-_0809AD2E:
- bl ScriptContext1_Stop
- movs r0, 0x1
-_0809AD34:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end s6F_multichoice
-
- thumb_func_start sub_809AD3C
-sub_809AD3C: @ 809AD3C
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x4
- ldr r2, [r0, 0x8]
- ldrb r1, [r2]
- mov r8, r1
- adds r2, 0x1
- str r2, [r0, 0x8]
- ldrb r1, [r2]
- adds r3, r2, 0x1
- str r3, [r0, 0x8]
- ldrb r2, [r2, 0x1]
- adds r5, r3, 0x1
- str r5, [r0, 0x8]
- ldrb r6, [r3, 0x1]
- adds r4, r5, 0x1
- str r4, [r0, 0x8]
- ldrb r3, [r5, 0x1]
- adds r4, 0x1
- str r4, [r0, 0x8]
- str r6, [sp]
- mov r0, r8
- bl sub_80E1E58
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0809AD7A
- movs r0, 0
- b _0809AD80
-_0809AD7A:
- bl ScriptContext1_Stop
- movs r0, 0x1
-_0809AD80:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_809AD3C
-
- thumb_func_start sub_809AD8C
-sub_809AD8C: @ 809AD8C
- movs r0, 0
- bx lr
- thumb_func_end sub_809AD8C
-
- thumb_func_start sub_809AD90
-sub_809AD90: @ 809AD90
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x4
- ldr r2, [r0, 0x8]
- ldrb r1, [r2]
- mov r8, r1
- adds r2, 0x1
- str r2, [r0, 0x8]
- ldrb r1, [r2]
- adds r3, r2, 0x1
- str r3, [r0, 0x8]
- ldrb r2, [r2, 0x1]
- adds r5, r3, 0x1
- str r5, [r0, 0x8]
- ldrb r6, [r3, 0x1]
- adds r4, r5, 0x1
- str r4, [r0, 0x8]
- ldrb r3, [r5, 0x1]
- adds r4, 0x1
- str r4, [r0, 0x8]
- str r6, [sp]
- mov r0, r8
- bl sub_80E21D0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0809ADCE
- movs r0, 0
- b _0809ADD4
-_0809ADCE:
- bl ScriptContext1_Stop
- movs r0, 0x1
-_0809ADD4:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_809AD90
-
- thumb_func_start s73_nop_skip_word
-s73_nop_skip_word: @ 809ADE0
- ldr r1, [r0, 0x8]
- adds r1, 0x4
- str r1, [r0, 0x8]
- movs r0, 0
- bx lr
- thumb_func_end s73_nop_skip_word
-
- thumb_func_start sub_809ADEC
-sub_809ADEC: @ 809ADEC
- ldr r1, [r0, 0x8]
- adds r1, 0x4
- str r1, [r0, 0x8]
- movs r0, 0
- bx lr
- thumb_func_end sub_809ADEC
-
- thumb_func_start sub_809ADF8
-sub_809ADF8: @ 809ADF8
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- ldr r3, [r4, 0x8]
- ldrb r1, [r3]
- adds r3, 0x1
- str r3, [r4, 0x8]
- ldrb r2, [r3]
- adds r3, 0x1
- str r3, [r4, 0x8]
- bl sub_80E2900
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_809ADF8
-
- thumb_func_start s76_close_picture_box
-s76_close_picture_box: @ 809AE28
- push {r4,lr}
- adds r4, r0, 0
- bl picbox_close
- adds r1, r0, 0
- cmp r1, 0
- beq _0809AE40
- adds r0, r4, 0
- bl SetupNativeScript
- movs r0, 0x1
- b _0809AE42
-_0809AE40:
- movs r0, 0
-_0809AE42:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s76_close_picture_box
-
- thumb_func_start sub_809AE48
-sub_809AE48: @ 809AE48
- push {lr}
- ldr r1, [r0, 0x8]
- ldrb r2, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- cmp r2, 0
- beq _0809AE5C
- adds r0, r2, 0
- bl sub_812FDA8
-_0809AE5C:
- bl sub_80F8ADC
- bl ScriptContext1_Stop
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end sub_809AE48
-
- thumb_func_start sub_809AE6C
-sub_809AE6C: @ 809AE6C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x20
- bl ScriptReadWord
- adds r1, r0, 0
- ldr r4, =gStringVar4
- adds r1, 0x6
- adds r0, r4, 0
- bl StringExpandPlaceholders
- movs r2, 0x1
- negs r2, r2
- movs r0, 0x6
- adds r1, r4, 0
- bl GetStringWidth
- lsrs r0, 3
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x1C
- bls _0809AE9C
- movs r7, 0x1C
-_0809AE9C:
- movs r5, 0x4
- ldrb r0, [r4]
- adds r2, r7, 0x2
- add r1, sp, 0x18
- mov r8, r1
- cmp r0, 0xFF
- beq _0809AEC0
- adds r1, r4, 0
-_0809AEAC:
- ldrb r0, [r1]
- adds r1, 0x1
- cmp r0, 0xFE
- bne _0809AEBA
- adds r0, r5, 0x3
- lsls r0, 24
- lsrs r5, r0, 24
-_0809AEBA:
- ldrb r0, [r1]
- cmp r0, 0xFF
- bne _0809AEAC
-_0809AEC0:
- cmp r5, 0x12
- bls _0809AEC6
- movs r5, 0x12
-_0809AEC6:
- lsls r0, r2, 24
- lsrs r0, 24
- movs r2, 0x1E
- subs r2, r0
- lsrs r0, r2, 31
- adds r2, r0
- asrs r2, 1
- lsls r2, 24
- adds r0, r5, 0x2
- lsls r0, 24
- lsrs r0, 24
- movs r4, 0x14
- subs r4, r0
- lsrs r0, r4, 31
- adds r4, r0
- asrs r4, 1
- lsls r4, 24
- lsrs r6, r2, 24
- movs r0, 0x80
- lsls r0, 17
- adds r2, r0
- lsrs r2, 24
- lsrs r3, r4, 24
- movs r1, 0x80
- lsls r1, 18
- adds r4, r1
- lsrs r4, 24
- subs r6, r2, r6
- subs r6, 0x1
- lsls r6, 3
- adds r6, 0x3
- lsls r6, 24
- lsrs r6, 24
- subs r4, r3
- subs r4, 0x1
- lsls r4, 27
- lsrs r4, 24
- adds r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- str r7, [sp]
- str r5, [sp, 0x4]
- movs r0, 0xF
- str r0, [sp, 0x8]
- movs r0, 0x1
- str r0, [sp, 0xC]
- add r0, sp, 0x10
- movs r1, 0
- bl sub_8198A50
- ldr r0, [sp, 0x10]
- ldr r1, [sp, 0x14]
- str r0, [sp, 0x18]
- str r1, [sp, 0x1C]
- ldr r5, =gUnknown_03000F30
- mov r0, r8
- bl AddWindow
- strb r0, [r5]
- ldrb r0, [r5]
- movs r1, 0x85
- lsls r1, 2
- movs r2, 0xE0
- bl sub_809882C
- ldrb r0, [r5]
- movs r1, 0
- bl sub_81973FC
- ldrb r0, [r5]
- bl PutWindowTilemap
- ldrb r0, [r5]
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldrb r0, [r5]
- ldr r2, =gStringVar4
- str r4, [sp]
- movs r1, 0xFF
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x6
- adds r3, r6, 0
- bl PrintTextOnWindow
- ldrb r0, [r5]
- movs r1, 0x3
- bl CopyWindowToVram
- movs r0, 0
- add sp, 0x20
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809AE6C
-
- thumb_func_start sub_809AF94
-sub_809AF94: @ 809AF94
- push {lr}
- bl sub_809BDB4
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sub_809AF94
-
- thumb_func_start sBD_virtual_message
-sBD_virtual_message: @ 809AFA0
- push {lr}
- bl ScriptReadWord
- ldr r1, =gUnknown_020375C4
- ldr r1, [r1]
- subs r0, r1
- bl box_related_two__2
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sBD_virtual_message
-
- thumb_func_start s7D_load_pokename
-s7D_load_pokename: @ 809AFBC
- push {r4,lr}
- ldr r1, [r0, 0x8]
- ldrb r4, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- ldr r1, =gUnknown_085102D4
- lsls r4, 2
- adds r4, r1
- ldr r2, [r4]
- movs r1, 0xB
- muls r1, r0
- ldr r0, =gSpeciesNames
- adds r1, r0
- adds r0, r2, 0
- bl StringCopy
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s7D_load_pokename
-
- thumb_func_start s7E_load_first_pokenames
-s7E_load_first_pokenames: @ 809AFFC
- push {r4,lr}
- ldr r1, [r0, 0x8]
- ldrb r2, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- ldr r0, =gUnknown_085102D4
- lsls r2, 2
- adds r2, r0
- ldr r4, [r2]
- bl sub_8139688
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- movs r1, 0xB
- muls r1, r0
- ldr r0, =gSpeciesNames
- adds r1, r0
- adds r0, r4, 0
- bl StringCopy
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s7E_load_first_pokenames
-
- thumb_func_start s7F_load_pokename_team
-s7F_load_pokename_team: @ 809B048
- push {r4,lr}
- ldr r1, [r0, 0x8]
- ldrb r4, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- ldr r1, =gUnknown_085102D4
- lsls r4, 2
- adds r4, r1
- ldr r4, [r4]
- movs r1, 0x2
- adds r2, r4, 0
- bl GetMonData
- adds r0, r4, 0
- bl StringGetEnd10
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s7F_load_pokename_team
-
- thumb_func_start s80_load_item_name
-s80_load_item_name: @ 809B090
- push {r4,lr}
- ldr r1, [r0, 0x8]
- ldrb r4, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- ldr r1, =gUnknown_085102D4
- lsls r4, 2
- adds r4, r1
- ldr r1, [r4]
- bl CopyItemName
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s80_load_item_name
-
- thumb_func_start sub_809B0C4
-sub_809B0C4: @ 809B0C4
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r6, [r0]
- adds r0, 0x1
- str r0, [r5, 0x8]
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r2, r0, 0
- lsls r2, 16
- lsrs r2, 16
- ldr r0, =gUnknown_085102D4
- lsls r6, 2
- adds r6, r0
- ldr r1, [r6]
- adds r0, r4, 0
- bl CopyItemNameHandlePlural
- movs r0, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809B0C4
-
- thumb_func_start sub_809B114
-sub_809B114: @ 809B114
- push {r4,lr}
- ldr r1, [r0, 0x8]
- ldrb r4, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r1, r0, 0
- lsls r1, 16
- ldr r0, =gUnknown_085102D4
- lsls r4, 2
- adds r4, r0
- ldr r0, [r4]
- lsrs r1, 11
- ldr r2, =gDecorations + 1
- adds r1, r2
- bl StringCopy
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809B114
-
- thumb_func_start s82_load_item_name
-s82_load_item_name: @ 809B150
- push {r4,lr}
- ldr r1, [r0, 0x8]
- ldrb r4, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- ldr r1, =gUnknown_085102D4
- lsls r4, 2
- adds r4, r1
- ldr r2, [r4]
- movs r1, 0xD
- muls r1, r0
- ldr r0, =gMoveNames
- adds r1, r0
- adds r0, r2, 0
- bl StringCopy
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s82_load_item_name
-
- thumb_func_start s83_load_textvar_var
-s83_load_textvar_var: @ 809B190
- push {r4,r5,lr}
- ldr r1, [r0, 0x8]
- ldrb r5, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r4, 0
- bl sub_80EF370
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- ldr r0, =gUnknown_085102D4
- lsls r5, 2
- adds r5, r0
- ldr r0, [r5]
- adds r1, r4, 0
- movs r2, 0
- bl ConvertIntToDecimalStringN
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s83_load_textvar_var
-
- thumb_func_start s84_load_textvar_std_expression
-s84_load_textvar_std_expression: @ 809B1D4
- push {r4,lr}
- ldr r1, [r0, 0x8]
- ldrb r4, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- ldr r1, =gUnknown_085102D4
- lsls r4, 2
- adds r4, r1
- ldr r2, [r4]
- ldr r1, =gUnknown_0858BAF0
- lsrs r0, 14
- adds r0, r1
- ldr r1, [r0]
- adds r0, r2, 0
- bl StringCopy
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s84_load_textvar_std_expression
-
- thumb_func_start sub_809B214
-sub_809B214: @ 809B214
- push {r4,lr}
- ldr r1, [r0, 0x8]
- ldrb r4, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r1, r0, 0
- ldr r0, =gUnknown_085102D4
- lsls r4, 2
- adds r4, r0
- ldr r0, [r4]
- lsls r1, 24
- lsrs r1, 24
- bl sub_818E868
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809B214
-
- thumb_func_start s85_load_textvar_pointer
-s85_load_textvar_pointer: @ 809B248
- push {r4,lr}
- ldr r1, [r0, 0x8]
- ldrb r4, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- bl ScriptReadWord
- adds r1, r0, 0
- ldr r0, =gUnknown_085102D4
- lsls r4, 2
- adds r4, r0
- ldr r0, [r4]
- bl StringCopy
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s85_load_textvar_pointer
-
- thumb_func_start sBE_virtual_load_text
-sBE_virtual_load_text: @ 809B270
- push {lr}
- bl ScriptReadWord
- adds r1, r0, 0
- ldr r0, =gUnknown_020375C4
- ldr r0, [r0]
- subs r1, r0
- ldr r0, =gStringVar4
- bl StringExpandPlaceholders
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sBE_virtual_load_text
-
- thumb_func_start sBF_virtual_load_textbuffer
-sBF_virtual_load_textbuffer: @ 809B294
- push {r4,lr}
- ldr r1, [r0, 0x8]
- ldrb r4, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- bl ScriptReadWord
- adds r1, r0, 0
- ldr r0, =gUnknown_020375C4
- ldr r0, [r0]
- subs r1, r0
- ldr r0, =gUnknown_085102D4
- lsls r4, 2
- adds r4, r0
- ldr r0, [r4]
- bl StringCopy
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sBF_virtual_load_textbuffer
-
- thumb_func_start sC6_load_textvar_box_label
-sC6_load_textvar_box_label: @ 809B2C8
- push {r4,lr}
- ldr r1, [r0, 0x8]
- ldrb r4, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r1, =gUnknown_085102D4
- lsls r4, 2
- adds r4, r1
- ldr r4, [r4]
- lsls r0, 24
- lsrs r0, 24
- bl GetBoxNamePtr
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sC6_load_textvar_box_label
-
- thumb_func_start s79_give_pokemon
-s79_give_pokemon: @ 809B304
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x8
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r6, r0, 0
- lsls r6, 16
- lsrs r6, 16
- ldr r0, [r4, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r4, 0x8]
- adds r0, r4, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r4, 0
- bl ScriptReadWord
- mov r8, r0
- adds r0, r4, 0
- bl ScriptReadWord
- ldr r1, [r4, 0x8]
- ldrb r2, [r1]
- adds r1, 0x1
- str r1, [r4, 0x8]
- ldr r4, =gScriptResult
- str r0, [sp]
- str r2, [sp, 0x4]
- adds r0, r6, 0
- mov r1, r9
- adds r2, r5, 0
- mov r3, r8
- bl sub_80F9244
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- movs r0, 0
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s79_give_pokemon
-
- thumb_func_start s7A_create_egg
-s7A_create_egg: @ 809B384
- push {r4,lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- ldr r4, =gScriptResult
- bl sub_80F92C8
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s7A_create_egg
-
- thumb_func_start s7B_change_pokedata_AP
-s7B_change_pokedata_AP: @ 809B3B0
- push {r4,r5,lr}
- ldr r1, [r0, 0x8]
- ldrb r5, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- ldrb r4, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- bl ScriptReadHalfword
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r5, 0
- adds r2, r4, 0
- bl sub_80F9400
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end s7B_change_pokedata_AP
-
- thumb_func_start sub_809B3DC
-sub_809B3DC: @ 809B3DC
- push {r4-r7,lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r7, r0, 16
- ldr r1, =gScriptResult
- movs r0, 0x6
- strh r0, [r1]
- movs r6, 0
- b _0809B42A
- .pool
-_0809B3F4:
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _0809B424
- adds r0, r4, 0
- adds r1, r7, 0
- bl pokemon_has_move
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0809B424
- ldr r0, =gScriptResult
- strh r6, [r0]
- ldr r0, =gSpecialVar_0x8004
- strh r5, [r0]
- b _0809B44A
- .pool
-_0809B424:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
-_0809B42A:
- cmp r6, 0x5
- bhi _0809B44A
- movs r0, 0x64
- adds r1, r6, 0
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0
- bne _0809B3F4
-_0809B44A:
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809B3DC
-
- thumb_func_start s90_AddMoney
-@ int s90_AddMoney(script_env *env)
-s90_AddMoney: @ 809B458
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadWord
- adds r2, r0, 0
- ldr r0, [r4, 0x8]
- ldrb r1, [r0]
- adds r0, 0x1
- str r0, [r4, 0x8]
- cmp r1, 0
- bne _0809B47E
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- movs r1, 0x92
- lsls r1, 3
- adds r0, r1
- adds r1, r2, 0
- bl AddMoney
-_0809B47E:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s90_AddMoney
-
- thumb_func_start s91_SubtractMoney
-@ int s91_SubtractMoney(script_env *env)
-s91_SubtractMoney: @ 809B48C
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadWord
- adds r2, r0, 0
- ldr r0, [r4, 0x8]
- ldrb r1, [r0]
- adds r0, 0x1
- str r0, [r4, 0x8]
- cmp r1, 0
- bne _0809B4B2
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- movs r1, 0x92
- lsls r1, 3
- adds r0, r1
- adds r1, r2, 0
- bl SubtractMoney
-_0809B4B2:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s91_SubtractMoney
-
- thumb_func_start s92_check_money
-@ int s92_check_money(script_env *env)
-s92_check_money: @ 809B4C0
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadWord
- adds r2, r0, 0
- ldr r0, [r4, 0x8]
- ldrb r1, [r0]
- adds r0, 0x1
- str r0, [r4, 0x8]
- cmp r1, 0
- bne _0809B4EE
- ldr r4, =gScriptResult
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- movs r1, 0x92
- lsls r1, 3
- adds r0, r1
- adds r1, r2, 0
- bl IsEnoughMoney
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
-_0809B4EE:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s92_check_money
-
- thumb_func_start s93_display_money
-@ int s93_display_money(script_env *env)
-s93_display_money: @ 809B500
- push {r4,r5,lr}
- ldr r1, [r0, 0x8]
- ldrb r5, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- ldrb r4, [r1]
- adds r2, r1, 0x1
- str r2, [r0, 0x8]
- ldrb r1, [r1, 0x1]
- adds r2, 0x1
- str r2, [r0, 0x8]
- cmp r1, 0
- bne _0809B530
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- movs r1, 0x92
- lsls r1, 3
- adds r0, r1
- bl GetMoney
- adds r1, r5, 0
- adds r2, r4, 0
- bl DrawMoneyBox
-_0809B530:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s93_display_money
-
- thumb_func_start s94_hide_money
-s94_hide_money: @ 809B53C
- push {lr}
- bl HideMoneyBox
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s94_hide_money
-
- thumb_func_start s95_update_money
-@ int s95_update_money(script_env *env)
-s95_update_money: @ 809B548
- push {lr}
- ldr r1, [r0, 0x8]
- adds r1, 0x1
- adds r2, r1, 0x1
- str r2, [r0, 0x8]
- ldrb r1, [r1, 0x1]
- adds r2, 0x1
- str r2, [r0, 0x8]
- cmp r1, 0
- bne _0809B56E
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- movs r1, 0x92
- lsls r1, 3
- adds r0, r1
- bl GetMoney
- bl ChangeAmountInMoneyBox
-_0809B56E:
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end s95_update_money
-
- thumb_func_start sub_809B578
-sub_809B578: @ 809B578
- push {r4,r5,lr}
- ldr r1, [r0, 0x8]
- ldrb r5, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- ldrb r4, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- bl GetCoins
- lsls r0, 16
- lsrs r0, 16
- adds r1, r5, 0
- adds r2, r4, 0
- bl ShowCoinsWindow
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_809B578
-
- thumb_func_start sC1_hide_coins
-sC1_hide_coins: @ 809B5A0
- push {lr}
- ldr r1, [r0, 0x8]
- adds r1, 0x2
- str r1, [r0, 0x8]
- bl HideCoinsWindow
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sC1_hide_coins
-
- thumb_func_start sC2_update_coins
-sC2_update_coins: @ 809B5B4
- push {lr}
- ldr r1, [r0, 0x8]
- adds r1, 0x2
- str r1, [r0, 0x8]
- bl GetCoins
- lsls r0, 16
- lsrs r0, 16
- bl PrintCoinsString
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sC2_update_coins
-
- thumb_func_start s5C_trainer_battle_configure_and_start
-s5C_trainer_battle_configure_and_start: @ 809B5D0
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0x8]
- bl TrainerBattleConfigure
- str r0, [r4, 0x8]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s5C_trainer_battle_configure_and_start
-
- thumb_func_start sub_809B5E4
-sub_809B5E4: @ 809B5E4
- push {lr}
- bl sub_80B17E0
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end sub_809B5E4
-
- thumb_func_start sub_809B5F0
-sub_809B5F0: @ 809B5F0
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80B1AF8
- str r0, [r4, 0x8]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_809B5F0
-
- thumb_func_start sub_809B604
-@ bool8 sub_809B604(struct script_env *env)
-sub_809B604: @ 809B604
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80B1B10
- str r0, [r4, 0x8]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_809B604
-
- thumb_func_start s60_check_trainer_flag
-s60_check_trainer_flag: @ 809B618
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- bl trainer_flag_check
- strb r0, [r4, 0x2]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end s60_check_trainer_flag
-
- thumb_func_start s61_set_trainer_flag
-s61_set_trainer_flag: @ 809B63C
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- bl trainer_flag_set
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s61_set_trainer_flag
-
- thumb_func_start s62_unset_trainer_flag
-s62_unset_trainer_flag: @ 809B658
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- bl trainer_flag_clear
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s62_unset_trainer_flag
-
- thumb_func_start sB6_load_battle
-sB6_load_battle: @ 809B674
- push {r4-r6,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- ldr r0, [r4, 0x8]
- ldrb r6, [r0]
- adds r0, 0x1
- str r0, [r4, 0x8]
- adds r0, r4, 0
- bl ScriptReadHalfword
- adds r2, r0, 0
- lsls r2, 16
- lsrs r2, 16
- adds r0, r5, 0
- adds r1, r6, 0
- bl sub_80F93A0
- movs r0, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sB6_load_battle
-
- thumb_func_start sub_809B6A8
-sub_809B6A8: @ 809B6A8
- push {lr}
- bl sub_80B08A8
- bl ScriptContext1_Stop
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end sub_809B6A8
-
- thumb_func_start s86_pokemart
-s86_pokemart: @ 809B6B8
- push {lr}
- bl ScriptReadWord
- bl CreatePokemartMenu
- bl ScriptContext1_Stop
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end s86_pokemart
-
- thumb_func_start s87_pokemartdecor
-s87_pokemartdecor: @ 809B6CC
- push {lr}
- bl ScriptReadWord
- bl CreateDecorationShop1Menu
- bl ScriptContext1_Stop
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end s87_pokemartdecor
-
- thumb_func_start s88_pokemartbp
-s88_pokemartbp: @ 809B6E0
- push {lr}
- bl ScriptReadWord
- bl CreateDecorationShop2Menu
- bl ScriptContext1_Stop
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end s88_pokemartbp
-
- thumb_func_start s89_open_casino_game1
-s89_open_casino_game1: @ 809B6F4
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl sub_812A540
- bl ScriptContext1_Stop
- movs r0, 0x1
- pop {r1}
- bx r1
- .pool
- thumb_func_end s89_open_casino_game1
-
- thumb_func_start berry_script_cmd
-@ bool8 berry_script_cmd(struct script_env *env)
-berry_script_cmd: @ 809B71C
- push {r4,r5,lr}
- ldr r1, [r0, 0x8]
- ldrb r5, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- ldrb r3, [r1]
- adds r2, r1, 0x1
- str r2, [r0, 0x8]
- ldrb r4, [r1, 0x1]
- adds r2, 0x1
- str r2, [r0, 0x8]
- cmp r3, 0
- bne _0809B744
- adds r0, r5, 0
- movs r1, 0
- adds r2, r4, 0
- movs r3, 0
- bl PlantBerryTree
- b _0809B750
-_0809B744:
- adds r0, r5, 0
- adds r1, r3, 0
- adds r2, r4, 0
- movs r3, 0
- bl PlantBerryTree
-_0809B750:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end berry_script_cmd
-
- thumb_func_start sub_809B758
-sub_809B758: @ 809B758
- push {r4,lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r4, =gScriptResult
- lsls r0, 24
- lsrs r0, 24
- bl GetPriceReduction
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809B758
-
- thumb_func_start sub_809B784
-sub_809B784: @ 809B784
- push {lr}
- bl sub_81B9404
- bl ScriptContext1_Stop
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end sub_809B784
-
- thumb_func_start sub_809B794
-sub_809B794: @ 809B794
- push {lr}
- bl sub_80F840C
- bl ScriptContext1_Stop
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end sub_809B794
-
- thumb_func_start sub_809B7A4
-sub_809B7A4: @ 809B7A4
- push {lr}
- bl sub_80F8484
- bl ScriptContext1_Stop
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end sub_809B7A4
-
- thumb_func_start sub_809B7B4
-sub_809B7B4: @ 809B7B4
- push {lr}
- ldr r0, =gUnknown_02039F2C
- ldrb r0, [r0]
- bl sub_80F84C4
- bl ScriptContext1_Stop
- movs r0, 0x1
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809B7B4
-
- thumb_func_start s9C_execute_HM
-s9C_execute_HM: @ 809B7CC
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- ldr r1, =gUnknown_020375D0
- strh r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- bl FieldEffectStart
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end s9C_execute_HM
-
- thumb_func_start s9D_set_HM_animation_data
-s9D_set_HM_animation_data: @ 809B7F4
- push {r4,lr}
- ldr r1, [r0, 0x8]
- ldrb r4, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r1, =gFieldEffectSpawnParams
- lsls r4, 2
- adds r4, r1
- lsls r0, 16
- asrs r0, 16
- str r0, [r4]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s9D_set_HM_animation_data
-
- thumb_func_start sub_809B824
-sub_809B824: @ 809B824
- push {lr}
- ldr r0, =gUnknown_020375D0
- ldrb r0, [r0]
- bl FieldEffectActiveListContains
- lsls r0, 24
- cmp r0, 0
- beq _0809B83C
- movs r0, 0
- b _0809B83E
- .pool
-_0809B83C:
- movs r0, 0x1
-_0809B83E:
- pop {r1}
- bx r1
- thumb_func_end sub_809B824
-
- thumb_func_start s9E_checkarray_HM_animation
-s9E_checkarray_HM_animation: @ 809B844
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- ldr r1, =gUnknown_020375D0
- strh r0, [r1]
- ldr r1, =sub_809B824
- adds r0, r4, 0
- bl SetupNativeScript
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end s9E_checkarray_HM_animation
-
- thumb_func_start s9F_changeposition_fly
-s9F_changeposition_fly: @ 809B870
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 24
- lsrs r0, 24
- bl sub_8084D1C
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end s9F_changeposition_fly
-
- thumb_func_start sA0_check_gender
-sA0_check_gender: @ 809B88C
- ldr r1, =gScriptResult
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- strh r0, [r1]
- movs r0, 0
- bx lr
- .pool
- thumb_func_end sA0_check_gender
-
- thumb_func_start sA1_play_cry
-sA1_play_cry: @ 809B8A4
- push {r4,r5,lr}
- adds r5, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl PlayCry5
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sA1_play_cry
-
- thumb_func_start sub_809B8DC
-sub_809B8DC: @ 809B8DC
- push {lr}
- ldr r1, =IsCryFinished
- bl SetupNativeScript
- movs r0, 0x1
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809B8DC
-
- thumb_func_start sA2_setmaptile
-sA2_setmaptile: @ 809B8F0
- push {r4-r7,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r6, r0, 16
- adds r0, r4, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r7, r0, 16
- adds r0, r4, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- adds r1, r6, 0x7
- lsls r1, 16
- lsrs r6, r1, 16
- adds r1, r5, 0x7
- lsls r1, 16
- lsrs r5, r1, 16
- cmp r0, 0
- bne _0809B954
- adds r0, r6, 0
- adds r1, r5, 0
- adds r2, r7, 0
- bl MapGridSetMetatileIdAt
- b _0809B966
-_0809B954:
- movs r1, 0xC0
- lsls r1, 4
- adds r0, r1, 0
- adds r2, r7, 0
- orrs r2, r0
- adds r0, r6, 0
- adds r1, r5, 0
- bl MapGridSetMetatileIdAt
-_0809B966:
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sA2_setmaptile
-
- thumb_func_start sAC_open_door
-sAC_open_door: @ 809B970
- push {r4,r5,lr}
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r4, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- adds r5, 0x7
- lsls r5, 16
- lsrs r5, 16
- movs r0, 0xE0
- lsls r0, 11
- adds r4, r0
- lsrs r4, 16
- adds r0, r5, 0
- adds r1, r4, 0
- bl cur_mapdata_get_door_sound_at
- lsls r0, 16
- lsrs r0, 16
- bl PlaySE
- adds r0, r5, 0
- adds r1, r4, 0
- bl task_overworld_door_add_if_role_69_for_opening_door_at
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sAC_open_door
-
- thumb_func_start sub_809B9C8
-sub_809B9C8: @ 809B9C8
- push {r4,r5,lr}
- adds r5, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r1, r0, 0
- lsls r1, 16
- adds r4, 0x7
- lsls r4, 16
- lsrs r4, 16
- movs r0, 0xE0
- lsls r0, 11
- adds r1, r0
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_808A8AC
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_809B9C8
-
- thumb_func_start sub_809BA0C
-sub_809BA0C: @ 809BA0C
- push {lr}
- bl sub_808A91C
- lsls r0, 24
- cmp r0, 0
- beq _0809BA1C
- movs r0, 0
- b _0809BA1E
-_0809BA1C:
- movs r0, 0x1
-_0809BA1E:
- pop {r1}
- bx r1
- thumb_func_end sub_809BA0C
-
- thumb_func_start sub_809BA24
-sub_809BA24: @ 809BA24
- push {lr}
- ldr r1, =sub_809BA0C
- bl SetupNativeScript
- movs r0, 0x1
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809BA24
-
- thumb_func_start sub_809BA38
-sub_809BA38: @ 809BA38
- push {r4,r5,lr}
- adds r5, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r1, r0, 0
- lsls r1, 16
- adds r4, 0x7
- lsls r4, 16
- lsrs r4, 16
- movs r0, 0xE0
- lsls r0, 11
- adds r1, r0
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_808A854
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_809BA38
-
- thumb_func_start sub_809BA7C
-sub_809BA7C: @ 809BA7C
- push {r4,r5,lr}
- adds r5, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r1, r0, 0
- lsls r1, 16
- adds r4, 0x7
- lsls r4, 16
- lsrs r4, 16
- movs r0, 0xE0
- lsls r0, 11
- adds r1, r0
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_808A880
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_809BA7C
-
- thumb_func_start sub_809BAC0
-sub_809BAC0: @ 809BAC0
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0x8]
- adds r0, 0x1
- str r0, [r4, 0x8]
- adds r0, r4, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r0, r4, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r0, r4, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_809BAC0
-
- thumb_func_start sub_809BAFC
-sub_809BAFC: @ 809BAFC
- movs r0, 0
- bx lr
- thumb_func_end sub_809BAFC
-
- thumb_func_start sB3_get_coin_amount
-sB3_get_coin_amount: @ 809BB00
- push {r4,lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl GetVarPointer
- adds r4, r0, 0
- bl GetCoins
- strh r0, [r4]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sB3_get_coin_amount
-
- thumb_func_start sub_809BB20
-sub_809BB20: @ 809BB20
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- bl AddCoins
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0809BB48
- ldr r1, =gScriptResult
- movs r0, 0
- b _0809BB4C
- .pool
-_0809BB48:
- ldr r1, =gScriptResult
- movs r0, 0x1
-_0809BB4C:
- strh r0, [r1]
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809BB20
-
- thumb_func_start sub_809BB58
-sub_809BB58: @ 809BB58
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- bl SubtractCoins
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0809BB80
- ldr r1, =gScriptResult
- movs r0, 0
- b _0809BB84
- .pool
-_0809BB80:
- ldr r1, =gScriptResult
- movs r0, 0x1
-_0809BB84:
- strh r0, [r1]
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809BB58
-
- thumb_func_start sub_809BB90
-sub_809BB90: @ 809BB90
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 24
- lsrs r0, 24
- bl sub_81A89A0
- ldr r1, =gUnknown_020375CA
- strh r0, [r1]
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809BB90
-
- thumb_func_start sub_809BBB4
-sub_809BBB4: @ 809BBB4
- push {lr}
- bl sub_81A8AF8
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sub_809BBB4
-
- thumb_func_start ScrCmd_MossdeepGymSwitch
-ScrCmd_MossdeepGymSwitch: @ 809BBC0
- push {lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 24
- lsrs r0, 24
- bl sub_81A8934
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end ScrCmd_MossdeepGymSwitch
-
- thumb_func_start sub_809BBDC
-sub_809BBDC: @ 809BBDC
- push {lr}
- bl sub_81A895C
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sub_809BBDC
-
- thumb_func_start sub_809BBE8
-sub_809BBE8: @ 809BBE8
- push {lr}
- bl sub_80B47BC
- ldr r1, =gSelectedMapObject
- strb r0, [r1]
- movs r0, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809BBE8
-
- thumb_func_start sub_809BBFC
-sub_809BBFC: @ 809BBFC
- push {r4,lr}
- adds r4, r0, 0
- bl is_c1_link_related_active
- cmp r0, 0
- beq _0809BC0C
- movs r0, 0
- b _0809BC30
-_0809BC0C:
- ldr r2, =gMapObjects
- ldr r0, =gSelectedMapObject
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 31
- cmp r0, 0
- beq _0809BC2E
- bl sub_8098630
- ldr r1, =sub_8098734
- adds r0, r4, 0
- bl SetupNativeScript
-_0809BC2E:
- movs r0, 0x1
-_0809BC30:
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809BBFC
-
- thumb_func_start sCD_set_obedient_bit
-sCD_set_obedient_bit: @ 809BC44
- push {lr}
- sub sp, 0x4
- movs r2, 0x1
- mov r1, sp
- strb r2, [r1]
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x50
- mov r2, sp
- bl SetMonData
- movs r0, 0
- add sp, 0x4
- pop {r1}
- bx r1
- .pool
- thumb_func_end sCD_set_obedient_bit
-
- thumb_func_start sCE_check_obedient_bit
-sCE_check_obedient_bit: @ 809BC7C
- push {r4,lr}
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- ldr r4, =gScriptResult
- movs r1, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x50
- movs r2, 0
- bl GetMonData
- strh r0, [r4]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sCE_check_obedient_bit
-
- thumb_func_start sCF_execute_RAM_script_DMA
-sCF_execute_RAM_script_DMA: @ 809BCB4
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8099244
- adds r2, r0, 0
- cmp r2, 0
- beq _0809BCD0
- ldr r1, =gUnknown_020375C0
- ldr r0, [r4, 0x8]
- str r0, [r1]
- adds r0, r4, 0
- adds r1, r2, 0
- bl ScriptJump
-_0809BCD0:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sCF_execute_RAM_script_DMA
-
- thumb_func_start sD1_warp_v5
-sD1_warp_v5: @ 809BCDC
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r1, r0, 0x1
- str r1, [r5, 0x8]
- ldrb r6, [r0, 0x1]
- adds r1, 0x1
- str r1, [r5, 0x8]
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- mov r1, r9
- lsls r1, 24
- asrs r1, 24
- mov r9, r1
- mov r1, r8
- lsls r1, 24
- asrs r1, 24
- mov r8, r1
- lsls r6, 24
- asrs r6, 24
- lsls r4, 24
- asrs r4, 24
- lsls r0, 24
- asrs r0, 24
- str r0, [sp]
- mov r0, r9
- adds r2, r6, 0
- adds r3, r4, 0
- bl warp1_set
- bl player_get_direction_lower_nybble
- lsls r0, 24
- lsrs r0, 24
- bl sub_808D074
- bl sub_80B0244
- bl player_avatar_init_params_reset
- movs r0, 0x1
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sD1_warp_v5
-
- thumb_func_start sub_809BD70
-sub_809BD70: @ 809BD70
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r3, r0, 16
- ldr r0, [r4, 0x8]
- ldrb r2, [r0]
- mov r1, sp
- strb r2, [r1]
- adds r0, 0x1
- str r0, [r4, 0x8]
- cmp r3, 0x5
- bhi _0809BDA6
- movs r0, 0x64
- muls r0, r3
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x23
- mov r2, sp
- bl SetMonData
-_0809BDA6:
- movs r0, 0
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809BD70
-
- thumb_func_start sub_809BDB4
-sub_809BDB4: @ 809BDB4
- push {r4,lr}
- ldr r4, =gUnknown_03000F30
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_819746C
- ldrb r0, [r4]
- bl RemoveWindow
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_809BDB4
-
- thumb_func_start sub_809BDD0
-sub_809BDD0: @ 809BDD0
- push {r4,lr}
- ldr r1, [r0, 0x8]
- ldrb r4, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- ldr r1, =gUnknown_085102D4
- lsls r4, 2
- adds r4, r1
- ldr r4, [r4]
- bl GetTrainerClassNameFromId
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809BDD0
-
- thumb_func_start sub_809BE0C
-sub_809BE0C: @ 809BE0C
- push {r4,lr}
- ldr r1, [r0, 0x8]
- ldrb r4, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- ldr r1, =gUnknown_085102D4
- lsls r4, 2
- adds r4, r1
- ldr r4, [r4]
- bl GetTrainerNameFromId
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_809BE0C
-
- thumb_func_start sub_809BE48
-sub_809BE48: @ 809BE48
- ldr r1, =gUnknown_020375CA
- strh r0, [r1]
- bx lr
- .pool
- thumb_func_end sub_809BE48
-
- thumb_func_start sub_809BE54
-sub_809BE54: @ 809BE54
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r5, r0, 0
- ldr r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r5, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r1, r0, 0x1
- str r1, [r5, 0x8]
- ldrb r6, [r0, 0x1]
- adds r1, 0x1
- str r1, [r5, 0x8]
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- bl ScriptReadHalfword
- lsls r0, 16
- lsrs r0, 16
- bl VarGet
- mov r1, r9
- lsls r1, 24
- asrs r1, 24
- mov r9, r1
- mov r1, r8
- lsls r1, 24
- asrs r1, 24
- mov r8, r1
- lsls r6, 24
- asrs r6, 24
- lsls r4, 24
- asrs r4, 24
- lsls r0, 24
- asrs r0, 24
- str r0, [sp]
- mov r0, r9
- adds r2, r6, 0
- adds r3, r4, 0
- bl warp1_set
- bl sub_80AF79C
- bl player_avatar_init_params_reset
- movs r0, 0x1
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_809BE54
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/script_menu.s b/asm/script_menu.s
index 8aecbf696..55ce5736a 100644
--- a/asm/script_menu.s
+++ b/asm/script_menu.s
@@ -5,9 +5,9 @@
.text
- thumb_func_start Multichoice
-@ bool8 Multichoice(u8 x, u8 y, u8 menuId, bool8 noCancelling)
-Multichoice: @ 80E1E08
+ thumb_func_start ScriptMenu_Multichoice
+@ bool8 ScriptMenu_Multichoice(u8 x, u8 y, u8 menuId, bool8 noCancelling)
+ScriptMenu_Multichoice: @ 80E1E08
push {r4-r7,lr}
sub sp, 0x4
lsls r0, 24
@@ -44,10 +44,10 @@ _080E1E4E:
pop {r4-r7}
pop {r1}
bx r1
- thumb_func_end Multichoice
+ thumb_func_end ScriptMenu_Multichoice
- thumb_func_start sub_80E1E58
-sub_80E1E58: @ 80E1E58
+ thumb_func_start ScriptMenu_MultichoiceWithDefault
+ScriptMenu_MultichoiceWithDefault: @ 80E1E58
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -91,7 +91,7 @@ _080E1EAA:
pop {r4-r7}
pop {r1}
bx r1
- thumb_func_end sub_80E1E58
+ thumb_func_end ScriptMenu_MultichoiceWithDefault
thumb_func_start sub_80E1EB8
sub_80E1EB8: @ 80E1EB8
@@ -379,8 +379,8 @@ _080E20FC:
.pool
thumb_func_end sub_80E2058
- thumb_func_start yes_no_box
-yes_no_box: @ 80E2108
+ thumb_func_start ScriptMenu_YesNo
+ScriptMenu_YesNo: @ 80E2108
push {r4,lr}
ldr r4, =task_yes_no_maybe
adds r0, r4, 0
@@ -405,7 +405,7 @@ _080E213A:
pop {r4}
pop {r1}
bx r1
- thumb_func_end yes_no_box
+ thumb_func_end ScriptMenu_YesNo
thumb_func_start sub_80E2140
sub_80E2140: @ 80E2140
@@ -485,8 +485,8 @@ _080E21C4:
.pool
thumb_func_end task_yes_no_maybe
- thumb_func_start sub_80E21D0
-sub_80E21D0: @ 80E21D0
+ thumb_func_start ScriptMenu_MultichoiceGrid
+ScriptMenu_MultichoiceGrid: @ 80E21D0
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -627,7 +627,7 @@ _080E22E8:
pop {r1}
bx r1
.pool
- thumb_func_end sub_80E21D0
+ thumb_func_end ScriptMenu_MultichoiceGrid
thumb_func_start sub_80E2308
sub_80E2308: @ 80E2308
@@ -1334,8 +1334,8 @@ _080E28F8:
bx r0
thumb_func_end task_picbox
- thumb_func_start sub_80E2900
-sub_80E2900: @ 80E2900
+ thumb_func_start ScriptMenu_ShowPokemonPic
+ScriptMenu_ShowPokemonPic: @ 80E2900
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -1422,10 +1422,10 @@ _080E29BA:
pop {r4-r7}
pop {r1}
bx r1
- thumb_func_end sub_80E2900
+ thumb_func_end ScriptMenu_ShowPokemonPic
- thumb_func_start picbox_close
-picbox_close: @ 80E29C4
+ thumb_func_start ScriptMenu_GetPicboxWaitFunc
+ScriptMenu_GetPicboxWaitFunc: @ 80E29C4
push {lr}
ldr r0, =task_picbox
bl FindTaskIdByFunc
@@ -1449,7 +1449,7 @@ _080E29F4:
_080E29F6:
pop {r1}
bx r1
- thumb_func_end picbox_close
+ thumb_func_end ScriptMenu_GetPicboxWaitFunc
thumb_func_start sub_80E29FC
sub_80E29FC: @ 80E29FC
diff --git a/asm/script_movement.s b/asm/script_movement.s
index f28fc9d44..5f06fd179 100755
--- a/asm/script_movement.s
+++ b/asm/script_movement.s
@@ -5,8 +5,8 @@
.text
- thumb_func_start exec_movement
-exec_movement: @ 80D32E8
+ thumb_func_start ScriptMovement_StartObjectMovementScript
+ScriptMovement_StartObjectMovementScript: @ 80D32E8
push {r4,lr}
sub sp, 0x4
adds r4, r3, 0
@@ -47,10 +47,10 @@ _080D3332:
pop {r1}
bx r1
.pool
- thumb_func_end exec_movement
+ thumb_func_end ScriptMovement_StartObjectMovementScript
- thumb_func_start sub_80D3340
-sub_80D3340: @ 80D3340
+ thumb_func_start ScriptMovement_IsObjectMovementFinished
+ScriptMovement_IsObjectMovementFinished: @ 80D3340
push {r4,lr}
sub sp, 0x4
lsls r0, 24
@@ -87,7 +87,7 @@ _080D3384:
pop {r4}
pop {r1}
bx r1
- thumb_func_end sub_80D3340
+ thumb_func_end ScriptMovement_IsObjectMovementFinished
thumb_func_start sub_80D338C
sub_80D338C: @ 80D338C
diff --git a/asm/script_pokemon_util_80F87D8.s b/asm/script_pokemon_util_80F87D8.s
index 231879f02..18d7b7fe3 100644
--- a/asm/script_pokemon_util_80F87D8.s
+++ b/asm/script_pokemon_util_80F87D8.s
@@ -83,7 +83,7 @@ sub_80F8850: @ 80F8850
thumb_func_start sub_80F8864
sub_80F8864: @ 80F8864
push {lr}
- ldr r0, =gUnknown_02039F2C
+ ldr r0, =gScriptContestCategory
ldrh r0, [r0]
cmp r0, 0x4
bhi _080F88A4
@@ -222,7 +222,7 @@ sub_80F8970: @ 80F8970
mov r12, r0
ldr r1, =gSpecialVar_0x8006
mov r9, r1
- ldr r2, =gUnknown_02039E02
+ ldr r2, =gUnknown_02039E00 + 2
mov r10, r2
mov r2, r12
mov r1, sp
@@ -397,8 +397,8 @@ sub_80F8ACC: @ 80F8ACC
.pool
thumb_func_end sub_80F8ACC
- thumb_func_start sub_80F8ADC
-sub_80F8ADC: @ 80F8ADC
+ thumb_func_start ShowContestWinner
+ShowContestWinner: @ 80F8ADC
push {lr}
ldr r0, =sub_812FDEC
bl SetMainCallback2
@@ -408,7 +408,7 @@ sub_80F8ADC: @ 80F8ADC
pop {r0}
bx r0
.pool
- thumb_func_end sub_80F8ADC
+ thumb_func_end ShowContestWinner
thumb_func_start sub_80F8AFC
sub_80F8AFC: @ 80F8AFC
@@ -625,7 +625,7 @@ sub_80F8C7C: @ 80F8C7C
ldrb r0, [r6]
muls r0, r5
adds r0, r4
- bl sub_80EE5A4
+ bl GetRibbonCount
lsls r0, 24
lsrs r0, 24
cmp r0, 0x4
@@ -1269,9 +1269,9 @@ _080F922C:
.pool
thumb_func_end sp000_heal_pokemon
- thumb_func_start sub_80F9244
-@ void sub_80F9244(s16 species_num, u8 level, int held_item)
-sub_80F9244: @ 80F9244
+ thumb_func_start ScriptGiveMon
+@ void ScriptGiveMon(s16 species_num, u8 level, int held_item)
+ScriptGiveMon: @ 80F9244
push {r4-r6,lr}
mov r6, r8
push {r6}
@@ -1332,10 +1332,10 @@ _080F92B8:
pop {r4-r6}
pop {r1}
bx r1
- thumb_func_end sub_80F9244
+ thumb_func_end ScriptGiveMon
- thumb_func_start sub_80F92C8
-sub_80F92C8: @ 80F92C8
+ thumb_func_start ScriptGiveEgg
+ScriptGiveEgg: @ 80F92C8
push {lr}
sub sp, 0x68
adds r1, r0, 0
@@ -1357,7 +1357,7 @@ sub_80F92C8: @ 80F92C8
add sp, 0x68
pop {r1}
bx r1
- thumb_func_end sub_80F92C8
+ thumb_func_end ScriptGiveEgg
thumb_func_start sub_80F92F8
sub_80F92F8: @ 80F92F8
@@ -1450,8 +1450,8 @@ _080F9392:
.pool
thumb_func_end sub_80F9370
- thumb_func_start sub_80F93A0
-sub_80F93A0: @ 80F93A0
+ thumb_func_start CreateScriptedWildMon
+CreateScriptedWildMon: @ 80F93A0
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -1496,10 +1496,10 @@ _080F93EE:
pop {r0}
bx r0
.pool
- thumb_func_end sub_80F93A0
+ thumb_func_end CreateScriptedWildMon
- thumb_func_start sub_80F9400
-sub_80F9400: @ 80F9400
+ thumb_func_start ScriptSetMonMoveSlot
+ScriptSetMonMoveSlot: @ 80F9400
push {r4,lr}
lsls r0, 24
lsrs r3, r0, 24
@@ -1525,7 +1525,7 @@ _080F941C:
pop {r0}
bx r0
.pool
- thumb_func_end sub_80F9400
+ thumb_func_end ScriptSetMonMoveSlot
thumb_func_start sub_80F9438
sub_80F9438: @ 80F9438
diff --git a/asm/secret_base.s b/asm/secret_base.s
index 0290e9f7f..d433f5df2 100644
--- a/asm/secret_base.s
+++ b/asm/secret_base.s
@@ -861,7 +861,7 @@ sub_80E916C: @ 80E916C
asrs r0, 24
str r0, [sp]
adds r0, r5, 0
- bl warp1_set
+ bl Overworld_SetWarpDestination
bl warp_in
ldr r1, =gFieldCallback
ldr r0, =sub_80E9108
@@ -1208,7 +1208,7 @@ _080E9462:
adds r0, 0xAE
lsls r0, 16
lsrs r0, 16
- bl FlagReset
+ bl FlagClear
ldrb r0, [r6]
ldr r5, =gSaveBlock1Ptr
ldr r2, [r5]
@@ -4494,7 +4494,7 @@ sub_80EAF80: @ 80EAF80
bne _080EAF9A
b _080EB16A
_080EAF9A:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2
diff --git a/asm/shop.s b/asm/shop.s
index 08e935bb1..94756624c 100644
--- a/asm/shop.s
+++ b/asm/shop.s
@@ -2465,7 +2465,7 @@ BuyMenuSubtractMoney: @ 80E0F88
lsls r2, 6
adds r1, r2
ldr r1, [r1]
- bl SubtractMoney
+ bl RemoveMoney
movs r0, 0x5F
bl PlaySE
ldr r0, [r5]
diff --git a/asm/slot_machine.s b/asm/slot_machine.s
index 6bd62ed9f..6390ae992 100644
--- a/asm/slot_machine.s
+++ b/asm/slot_machine.s
@@ -55,8 +55,8 @@ _0812A530:
.pool
thumb_func_end sub_812A4DC
- thumb_func_start sub_812A540
-sub_812A540: @ 812A540
+ thumb_func_start PlaySlotMachine
+PlaySlotMachine: @ 812A540
push {r4-r6,lr}
adds r4, r0, 0
adds r6, r1, 0
@@ -85,7 +85,7 @@ sub_812A540: @ 812A540
pop {r0}
bx r0
.pool
- thumb_func_end sub_812A540
+ thumb_func_end PlaySlotMachine
thumb_func_start sub_812A588
sub_812A588: @ 812A588
diff --git a/asm/trade.s b/asm/trade.s
index d4c54cef6..31c16195e 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -6603,7 +6603,7 @@ _0807A97C:
adds r4, 0x1C
adds r5, 0x1
_0807A980:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r5, r0
@@ -6632,7 +6632,7 @@ _0807A9B0:
adds r4, 0x1C
adds r5, 0x1
_0807A9B4:
- bl sub_8009FCC
+ bl GetLinkPlayerCount
lsls r0, 24
lsrs r0, 24
cmp r5, r0
diff --git a/asm/trainer_rematch.s b/asm/trainer_rematch.s
index 0c30cfea9..b814934a3 100755
--- a/asm/trainer_rematch.s
+++ b/asm/trainer_rematch.s
@@ -185,7 +185,7 @@ _081DA6D4:
adds r0, r1
adds r0, r6
ldrh r0, [r0]
- bl trainer_flag_check
+ bl HasTrainerAlreadyBeenFought
lsls r0, 24
cmp r0, 0
bne _081DA6F0
diff --git a/asm/trainer_see.s b/asm/trainer_see.s
index d57ad1815..59dd9f74b 100644
--- a/asm/trainer_see.s
+++ b/asm/trainer_see.s
@@ -267,7 +267,7 @@ CheckIfTrainerCanApproachPlayer: @ 80B3DF0
mov r8, r4
cmp r0, 0x1
bne _080B3E50
- ldr r1, =gUnknown_0855072C
+ ldr r1, =gIsTrainerInRange
ldrb r0, [r7, 0x18]
lsls r0, 28
lsrs r0, 26
@@ -300,7 +300,7 @@ _080B3E4C:
_080B3E50:
movs r5, 0
_080B3E52:
- ldr r0, =gUnknown_0855072C
+ ldr r0, =gIsTrainerInRange
lsls r4, r5, 2
adds r4, r0
ldrb r1, [r7, 0x1D]
@@ -702,7 +702,7 @@ c3_8081EDC: @ 80B4118
b _080B416C
.pool
_080B4150:
- ldr r7, =gUnknown_0855073C
+ ldr r7, =gTrainerSeeFuncList
_080B4152:
movs r1, 0x8
ldrsh r0, [r4, r1]
@@ -734,7 +734,7 @@ sub_80B417C: @ 80B417C
push {r4,r5,lr}
adds r5, r1, 0
adds r4, r2, 0
- ldr r1, =gFieldEffectSpawnParams
+ ldr r1, =gFieldEffectArguments
adds r2, r1, 0x4
adds r3, r1, 0
adds r3, 0x8
@@ -1050,7 +1050,7 @@ sub_80B43E0: @ 80B43E0
lsls r0, 24
cmp r0, 0
beq _080B4426
- ldr r2, =gFieldEffectSpawnParams
+ ldr r2, =gFieldEffectArguments
movs r1, 0x10
ldrsh r0, [r4, r1]
str r0, [r2]
@@ -1186,7 +1186,7 @@ sub_80B44C8: @ 80B44C8
adds r0, 0x1
strh r0, [r4, 0x16]
_080B44FA:
- ldr r1, =gUnknown_0855076C
+ ldr r1, =gTrainerSeeFuncList2
movs r2, 0x8
ldrsh r0, [r4, r2]
lsls r0, 2
@@ -1303,7 +1303,7 @@ sub_80B45D0: @ 80B45D0
ldr r1, =gScriptResult
movs r0, 0x1
strh r0, [r1]
- bl sub_809757C
+ bl UnfreezeMapObjects
ldr r0, =gUnknown_03006090
ldrb r0, [r0, 0xC]
bl sub_80974D0
@@ -1322,4 +1322,324 @@ _080B4616:
.pool
thumb_func_end sub_80B45D0
+ thumb_func_start oei_exclamation_mark
+oei_exclamation_mark: @ 80B4620
+ push {lr}
+ ldr r0, =gSpriteTemplate_85507B4
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0x53
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x40
+ beq _080B4648
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, =gSprites
+ adds r0, r1
+ movs r1, 0
+ movs r2, 0
+ bl sub_80B46D8
+_080B4648:
+ movs r0, 0
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end oei_exclamation_mark
+
+ thumb_func_start sub_80B4658
+sub_80B4658: @ 80B4658
+ push {lr}
+ ldr r0, =gSpriteTemplate_85507B4
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0x52
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x40
+ beq _080B4680
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, =gSprites
+ adds r0, r1
+ movs r1, 0x21
+ movs r2, 0x1
+ bl sub_80B46D8
+_080B4680:
+ movs r0, 0
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_80B4658
+
+ thumb_func_start sub_80B4690
+sub_80B4690: @ 80B4690
+ push {r4,lr}
+ ldr r0, =gSpriteTemplate_85507CC
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0x52
+ bl CreateSpriteAtEnd
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x40
+ beq _080B46C6
+ lsls r4, r0, 4
+ adds r4, r0
+ lsls r4, 2
+ ldr r0, =gSprites
+ adds r4, r0
+ adds r0, r4, 0
+ movs r1, 0x2E
+ movs r2, 0
+ bl sub_80B46D8
+ ldrb r1, [r4, 0x5]
+ movs r0, 0xF
+ ands r0, r1
+ movs r1, 0x20
+ orrs r0, r1
+ strb r0, [r4, 0x5]
+_080B46C6:
+ movs r0, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_80B4690
+
+ thumb_func_start sub_80B46D8
+@ void sub_80B46D8(struct obj *object, s16 a2, u8 a3)
+sub_80B46D8: @ 80B46D8
+ push {r4,lr}
+ lsls r2, 24
+ lsrs r2, 24
+ ldrb r4, [r0, 0x5]
+ movs r3, 0xD
+ negs r3, r3
+ ands r3, r4
+ movs r4, 0x4
+ orrs r3, r4
+ strb r3, [r0, 0x5]
+ movs r3, 0x3E
+ adds r3, r0
+ mov r12, r3
+ ldrb r3, [r3]
+ movs r4, 0x2
+ orrs r3, r4
+ mov r4, r12
+ strb r3, [r4]
+ ldr r4, =gFieldEffectArguments
+ ldr r3, [r4]
+ strh r3, [r0, 0x2E]
+ ldr r3, [r4, 0x4]
+ strh r3, [r0, 0x30]
+ ldr r3, [r4, 0x8]
+ strh r3, [r0, 0x32]
+ ldr r3, =0x0000fffb
+ strh r3, [r0, 0x34]
+ strh r1, [r0, 0x3C]
+ adds r1, r2, 0
+ bl StartSpriteAnim
+ pop {r4}
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80B46D8
+
+ thumb_func_start objc_exclamation_mark_probably
+objc_exclamation_mark_probably: @ 80B4724
+ push {r4,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ ldrh r0, [r4, 0x2E]
+ lsls r0, 24
+ lsrs r0, 24
+ ldrh r1, [r4, 0x30]
+ lsls r1, 24
+ lsrs r1, 24
+ ldrh r2, [r4, 0x32]
+ lsls r2, 24
+ lsrs r2, 24
+ mov r3, sp
+ bl TryGetFieldObjectIdByLocalIdAndMap
+ lsls r0, 24
+ cmp r0, 0
+ bne _080B4756
+ adds r0, r4, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _080B4764
+_080B4756:
+ ldrh r1, [r4, 0x3C]
+ lsls r1, 24
+ lsrs r1, 24
+ adds r0, r4, 0
+ bl FieldEffectStop
+ b _080B47B2
+_080B4764:
+ ldr r2, =gMapObjects
+ mov r0, sp
+ ldrb r1, [r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r0, [r0, 0x4]
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, =gSprites
+ adds r1, r0
+ ldrh r3, [r4, 0x34]
+ ldrh r0, [r4, 0x36]
+ adds r2, r3, r0
+ strh r2, [r4, 0x36]
+ ldrh r0, [r1, 0x20]
+ strh r0, [r4, 0x20]
+ ldrh r0, [r1, 0x22]
+ subs r0, 0x10
+ strh r0, [r4, 0x22]
+ ldrh r0, [r1, 0x24]
+ strh r0, [r4, 0x24]
+ ldrh r0, [r1, 0x26]
+ adds r0, r2
+ strh r0, [r4, 0x26]
+ lsls r2, 16
+ asrs r2, 16
+ cmp r2, 0
+ beq _080B47B0
+ adds r0, r3, 0x1
+ strh r0, [r4, 0x34]
+ b _080B47B2
+ .pool
+_080B47B0:
+ strh r2, [r4, 0x34]
+_080B47B2:
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end objc_exclamation_mark_probably
+
+ thumb_func_start sub_80B47BC
+sub_80B47BC: @ 80B47BC
+ push {lr}
+ ldr r0, =gUnknown_02038BFC
+ ldrb r0, [r0]
+ cmp r0, 0
+ beq _080B47D4
+ ldr r0, =gUnknown_03006090
+ ldrb r0, [r0, 0xC]
+ b _080B47D8
+ .pool
+_080B47D4:
+ ldr r0, =gUnknown_03006090
+ ldrb r0, [r0]
+_080B47D8:
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_80B47BC
+
+ thumb_func_start sub_80B47E0
+sub_80B47E0: @ 80B47E0
+ push {lr}
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x1
+ bls _080B47EE
+ movs r0, 0
+ b _080B4800
+_080B47EE:
+ cmp r0, 0
+ beq _080B47FC
+ ldr r0, =gUnknown_03006090
+ ldrb r0, [r0, 0xC]
+ b _080B4800
+ .pool
+_080B47FC:
+ ldr r0, =gUnknown_03006090
+ ldrb r0, [r0]
+_080B4800:
+ pop {r1}
+ bx r1
+ .pool
+ thumb_func_end sub_80B47E0
+
+ thumb_func_start sub_80B4808
+sub_80B4808: @ 80B4808
+ push {lr}
+ ldr r0, =gUnknown_030060AC
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _080B4870
+ ldr r2, =gUnknown_03006090
+ ldr r0, =gUnknown_03006080
+ ldrh r1, [r0]
+ lsls r0, r1, 1
+ adds r0, r1
+ lsls r0, 2
+ adds r0, r2
+ ldrb r1, [r0]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, =gMapObjects
+ adds r0, r1
+ ldrb r0, [r0, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl GetOppositeDirection
+ lsls r0, 24
+ lsrs r0, 24
+ bl GetFaceDirectionAnimId
+ ldr r3, =gUnknown_03006084
+ strb r0, [r3]
+ movs r0, 0xFE
+ strb r0, [r3, 0x1]
+ ldr r0, =gSaveBlock1Ptr
+ ldr r0, [r0]
+ ldrb r1, [r0, 0x5]
+ ldrb r2, [r0, 0x4]
+ movs r0, 0xFF
+ bl ScriptMovement_StartObjectMovementScript
+ b _080B489E
+ .pool
+_080B4870:
+ ldr r0, =gPlayerAvatar
+ ldrb r1, [r0, 0x5]
+ lsls r0, r1, 3
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, =gMapObjects
+ adds r0, r1
+ ldrb r0, [r0, 0x18]
+ lsls r0, 28
+ lsrs r0, 28
+ bl GetFaceDirectionAnimId
+ ldr r3, =gUnknown_03006084
+ strb r0, [r3]
+ movs r0, 0xFE
+ strb r0, [r3, 0x1]
+ ldr r0, =gSaveBlock1Ptr
+ ldr r0, [r0]
+ ldrb r1, [r0, 0x5]
+ ldrb r2, [r0, 0x4]
+ movs r0, 0xFF
+ bl ScriptMovement_StartObjectMovementScript
+_080B489E:
+ movs r0, 0xFF
+ bl sub_809BE48
+ pop {r0}
+ bx r0
+ .pool
+ thumb_func_end sub_80B4808
+
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/tv.s b/asm/tv.s
deleted file mode 100644
index d61392fa1..000000000
--- a/asm/tv.s
+++ /dev/null
@@ -1,16938 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start ClearTVShowData
-ClearTVShowData: @ 80EBEE0
- push {r4-r7,lr}
- movs r3, 0
- ldr r6, =gSaveBlock1Ptr
- movs r5, 0
- ldr r7, =0x000027ce
-_080EBEEA:
- ldr r0, [r6]
- lsls r1, r3, 3
- adds r1, r3
- lsls r1, 2
- adds r0, r1
- ldr r2, =0x000027cc
- adds r0, r2
- strb r5, [r0]
- ldr r0, [r6]
- adds r0, r1
- adds r2, 0x1
- adds r0, r2
- strb r5, [r0]
- movs r2, 0
- adds r4, r3, 0x1
- adds r3, r1, 0
-_080EBF0A:
- ldr r0, [r6]
- adds r1, r2, r3
- adds r0, r7
- adds r0, r1
- strb r5, [r0]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x21
- bls _080EBF0A
- lsls r0, r4, 24
- lsrs r3, r0, 24
- cmp r3, 0x18
- bls _080EBEEA
- bl sub_80EEE5C
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ClearTVShowData
-
- thumb_func_start special_0x44
-special_0x44: @ 80EBF3C
- push {r4-r7,lr}
- movs r4, 0x5
- ldr r1, =gSaveBlock1Ptr
- ldr r0, [r1]
- movs r2, 0xA2
- lsls r2, 6
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _080EBF70
- adds r3, r1, 0
- subs r2, 0xB4
-_080EBF54:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x17
- bhi _080EBF70
- ldr r0, [r3]
- lsls r1, r4, 3
- adds r1, r4
- lsls r1, 2
- adds r0, r1
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _080EBF54
-_080EBF70:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- adds r1, r4, 0
- bl __modsi3
- lsls r0, 24
- lsrs r5, r0, 24
- adds r7, r5, 0
- ldr r6, =gSaveBlock1Ptr
-_080EBF86:
- ldr r1, [r6]
- lsls r0, r5, 3
- adds r0, r5
- lsls r4, r0, 2
- adds r1, r4
- ldr r0, =0x000027cc
- adds r1, r0
- ldrb r0, [r1]
- bl sub_80EFFE0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- beq _080EBFBC
- ldr r0, [r6]
- adds r0, r4
- ldr r1, =0x000027cd
- adds r0, r1
- ldrb r0, [r0]
- b _080EBFCC
- .pool
-_080EBFBC:
- ldr r2, =0x000027cc
- adds r0, r4, r2
- ldr r1, [r6]
- adds r1, r0
- ldrh r0, [r1, 0x16]
- cmp r0, 0
- bne _080EBFD8
- ldrb r0, [r1, 0x1]
-_080EBFCC:
- cmp r0, 0x1
- bne _080EBFD8
- adds r0, r5, 0
- b _080EBFEC
- .pool
-_080EBFD8:
- cmp r5, 0
- bne _080EBFE0
- movs r5, 0x17
- b _080EBFE6
-_080EBFE0:
- subs r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
-_080EBFE6:
- cmp r5, r7
- bne _080EBF86
- movs r0, 0xFF
-_080EBFEC:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end special_0x44
-
- thumb_func_start sub_80EBFF4
-sub_80EBFF4: @ 80EBFF4
- push {lr}
- bl special_0x44
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xFF
- bne _080EC006
- movs r0, 0xFF
- b _080EC03E
-_080EC006:
- ldr r0, =gSaveBlock1Ptr
- ldr r2, [r0]
- ldr r3, =0x00002b90
- adds r0, r2, r3
- ldrh r0, [r0]
- cmp r0, 0
- beq _080EC03C
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2, r0
- ldr r2, =0x000027cc
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0x29
- bne _080EC03C
- bl sub_80EC18C
- lsls r0, 24
- lsrs r0, 24
- b _080EC03E
- .pool
-_080EC03C:
- adds r0, r1, 0
-_080EC03E:
- pop {r1}
- bx r1
- thumb_func_end sub_80EBFF4
-
- thumb_func_start UpdateTVScreensOnMap
-@ void UpdateTVScreensOnMap(s32 mapWidth, s32 mapHeight)
-UpdateTVScreensOnMap: @ 80EC044
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r0, =0x00000891
- bl FlagSet
- bl CheckForBigMovieOrEmergencyNewsOnTV
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080EC06A
- cmp r0, 0x2
- beq _080EC0BE
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrh r0, [r0, 0x4]
- cmp r0, 0xD
- bne _080EC080
-_080EC06A:
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x3
- bl SetTVMetatilesOnMap
- b _080EC0BE
- .pool
-_080EC080:
- ldr r0, =0x00000892
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _080EC0BE
- bl sub_80EBFF4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _080EC0AE
- bl sub_80EEF20
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _080EC0AE
- bl IsTVShowInSearchOfTrainersAiring
- lsls r0, 24
- cmp r0, 0
- beq _080EC0BE
-_080EC0AE:
- ldr r0, =0x00000891
- bl FlagReset
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x3
- bl SetTVMetatilesOnMap
-_080EC0BE:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end UpdateTVScreensOnMap
-
- thumb_func_start SetTVMetatilesOnMap
-@ void SetTVMetatilesOnMap(s32 mapWidth, s32 mapHeight, u16 metatileId)
-SetTVMetatilesOnMap: @ 80EC0CC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- mov r9, r0
- mov r10, r1
- lsls r2, 16
- lsrs r2, 16
- movs r5, 0
- cmp r5, r10
- bge _080EC120
- movs r1, 0xC0
- lsls r1, 4
- adds r0, r1, 0
- mov r8, r2
- mov r1, r8
- orrs r1, r0
- mov r8, r1
-_080EC0F2:
- movs r4, 0
- adds r7, r5, 0x1
- cmp r4, r9
- bge _080EC11A
- mov r0, r8
- lsls r6, r0, 16
-_080EC0FE:
- adds r0, r4, 0
- adds r1, r5, 0
- bl MapGridGetMetatileBehaviorAt
- cmp r0, 0x86
- bne _080EC114
- adds r0, r4, 0
- adds r1, r5, 0
- lsrs r2, r6, 16
- bl MapGridSetMetatileIdAt
-_080EC114:
- adds r4, 0x1
- cmp r4, r9
- blt _080EC0FE
-_080EC11A:
- adds r5, r7, 0
- cmp r5, r10
- blt _080EC0F2
-_080EC120:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end SetTVMetatilesOnMap
-
- thumb_func_start TurnOffTVScreen
-TurnOffTVScreen: @ 80EC130
- push {lr}
- ldr r1, =gUnknown_03005DC0
- ldr r0, [r1]
- ldr r1, [r1, 0x4]
- movs r2, 0x2
- bl SetTVMetatilesOnMap
- bl DrawWholeMapView
- pop {r0}
- bx r0
- .pool
- thumb_func_end TurnOffTVScreen
-
- thumb_func_start TurnOnTVScreen
-TurnOnTVScreen: @ 80EC14C
- push {lr}
- ldr r1, =gUnknown_03005DC0
- ldr r0, [r1]
- ldr r1, [r1, 0x4]
- movs r2, 0x3
- bl SetTVMetatilesOnMap
- bl DrawWholeMapView
- pop {r0}
- bx r0
- .pool
- thumb_func_end TurnOnTVScreen
-
- thumb_func_start special_0x45
-special_0x45: @ 80EC168
- ldr r0, =gSaveBlock1Ptr
- ldr r1, [r0]
- ldr r0, =gSpecialVar_0x8004
- ldrh r2, [r0]
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- adds r1, r0
- ldr r0, =0x000027cc
- adds r1, r0
- ldrb r0, [r1]
- bx lr
- .pool
- thumb_func_end special_0x45
-
- thumb_func_start sub_80EC18C
-sub_80EC18C: @ 80EC18C
- push {r4,lr}
- movs r2, 0
- ldr r0, =gSaveBlock1Ptr
- ldr r3, [r0]
-_080EC194:
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- adds r1, r3, r0
- ldr r4, =0x000027cc
- adds r0, r1, r4
- ldrb r0, [r0]
- cmp r0, 0
- beq _080EC1C0
- cmp r0, 0x29
- beq _080EC1C0
- adds r4, 0x1
- adds r0, r1, r4
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080EC1C0
- adds r0, r2, 0
- b _080EC1CC
- .pool
-_080EC1C0:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x17
- bls _080EC194
- movs r0, 0xFF
-_080EC1CC:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80EC18C
-
- thumb_func_start special_0x4a
-special_0x4a: @ 80EC1D4
- push {lr}
- ldr r3, =gSaveBlock1Ptr
- ldr r2, =gSpecialVar_0x8004
- ldrh r1, [r2]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r3, [r3]
- adds r0, r3, r0
- ldrb r0, [r0]
- cmp r0, 0x29
- bne _080EC214
- ldr r1, =0x00002b90
- adds r0, r3, r1
- ldrh r0, [r0]
- cmp r0, 0
- beq _080EC214
- bl sub_80EC18C
- lsls r0, 24
- lsrs r0, 24
- b _080EC216
- .pool
-_080EC214:
- ldrb r0, [r2]
-_080EC216:
- pop {r1}
- bx r1
- thumb_func_end special_0x4a
-
- thumb_func_start ResetGabbyAndTy
-ResetGabbyAndTy: @ 80EC21C
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- ldr r3, =gSaveBlock1Ptr
- ldr r2, [r3]
- ldr r1, =0x00002ba4
- adds r0, r2, r1
- movs r4, 0
- mov r10, r4
- movs r1, 0
- strh r1, [r0]
- ldr r4, =0x00002ba6
- adds r0, r2, r4
- strh r1, [r0]
- adds r4, 0x2
- adds r0, r2, r4
- strh r1, [r0]
- ldr r0, =0x00002baa
- adds r1, r2, r0
- ldr r0, =0x0000ffff
- strh r0, [r1]
- adds r4, 0x6
- adds r2, r4
- ldrb r1, [r2]
- movs r0, 0x2
- negs r0, r0
- mov r9, r0
- ands r0, r1
- strb r0, [r2]
- ldr r1, [r3]
- adds r1, r4
- ldrb r2, [r1]
- movs r0, 0x3
- negs r0, r0
- mov r8, r0
- ands r0, r2
- strb r0, [r1]
- ldr r1, [r3]
- adds r1, r4
- ldrb r2, [r1]
- movs r6, 0x5
- negs r6, r6
- adds r0, r6, 0
- ands r0, r2
- strb r0, [r1]
- ldr r1, [r3]
- adds r1, r4
- ldrb r2, [r1]
- movs r5, 0x9
- negs r5, r5
- adds r0, r5, 0
- ands r0, r2
- strb r0, [r1]
- ldr r1, [r3]
- adds r1, r4
- ldrb r2, [r1]
- movs r0, 0x11
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- ldr r1, [r3]
- adds r1, r4
- ldrb r2, [r1]
- movs r0, 0x1F
- ands r0, r2
- strb r0, [r1]
- ldr r0, [r3]
- ldr r2, =0x00002baf
- adds r0, r2
- ldrb r1, [r0]
- mov r4, r9
- ands r4, r1
- strb r4, [r0]
- ldr r0, [r3]
- adds r0, r2
- ldrb r1, [r0]
- mov r4, r8
- ands r4, r1
- strb r4, [r0]
- ldr r0, [r3]
- adds r0, r2
- ldrb r1, [r0]
- ands r6, r1
- strb r6, [r0]
- ldr r0, [r3]
- adds r0, r2
- ldrb r1, [r0]
- ands r5, r1
- strb r5, [r0]
- ldr r1, [r3]
- adds r1, r2
- ldrb r2, [r1]
- movs r0, 0xF
- ands r0, r2
- strb r0, [r1]
- ldr r0, [r3]
- ldr r1, =0x00002bac
- adds r0, r1
- mov r4, r10
- strb r4, [r0]
- ldr r0, [r3]
- adds r1, 0x1
- adds r0, r1
- strb r4, [r0]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end ResetGabbyAndTy
-
- thumb_func_start GabbyAndTyBeforeInterview
-GabbyAndTyBeforeInterview: @ 80EC31C
- push {r4,lr}
- ldr r3, =gSaveBlock1Ptr
- ldr r2, [r3]
- ldr r0, =gBattleResults
- mov r12, r0
- ldrh r1, [r0, 0x6]
- ldr r4, =0x00002ba4
- adds r0, r2, r4
- strh r1, [r0]
- mov r0, r12
- ldrh r1, [r0, 0x26]
- adds r4, 0x2
- adds r0, r2, r4
- strh r1, [r0]
- mov r0, r12
- ldrh r1, [r0, 0x22]
- adds r4, 0x2
- adds r0, r2, r4
- strh r1, [r0]
- ldr r0, =0x00002bad
- adds r2, r0
- ldrb r1, [r2]
- adds r0, r1, 0
- adds r4, r3, 0
- cmp r0, 0xFF
- beq _080EC354
- adds r0, r1, 0x1
- strb r0, [r2]
-_080EC354:
- ldr r2, [r4]
- mov r0, r12
- ldrb r1, [r0, 0x5]
- lsls r1, 31
- ldr r0, =0x00002bae
- adds r2, r0
- lsrs r1, 31
- ldrb r3, [r2]
- movs r0, 0x2
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
- mov r1, r12
- ldrb r0, [r1]
- cmp r0, 0
- beq _080EC398
- ldr r0, [r4]
- ldr r1, =0x00002bae
- adds r0, r1
- ldrb r1, [r0]
- movs r2, 0x2
- orrs r1, r2
- b _080EC3A6
- .pool
-_080EC398:
- ldr r0, [r4]
- ldr r1, =0x00002bae
- adds r0, r1
- ldrb r2, [r0]
- movs r1, 0x3
- negs r1, r1
- ands r1, r2
-_080EC3A6:
- strb r1, [r0]
- mov r1, r12
- ldrb r0, [r1, 0x3]
- cmp r0, 0
- beq _080EC3C4
- ldr r0, [r4]
- ldr r1, =0x00002bae
- adds r0, r1
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- b _080EC3D2
- .pool
-_080EC3C4:
- ldr r0, [r4]
- ldr r1, =0x00002bae
- adds r0, r1
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
-_080EC3D2:
- strb r1, [r0]
- mov r0, r12
- ldrb r1, [r0, 0x5]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _080EC410
- movs r1, 0
- mov r0, r12
- adds r0, 0x36
- ldrb r0, [r0]
- cmp r0, 0
- bne _080EC410
-_080EC3EC:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xA
- bhi _080EC41E
- mov r0, r12
- adds r0, 0x36
- adds r0, r1, r0
- ldrb r0, [r0]
- cmp r0, 0
- beq _080EC3EC
- ldr r0, [r4]
- ldr r4, =0x00002bae
- adds r0, r4
- b _080EC416
- .pool
-_080EC410:
- ldr r0, [r4]
- ldr r1, =0x00002bae
- adds r0, r1
-_080EC416:
- ldrb r1, [r0]
- movs r2, 0x8
- orrs r1, r2
- strb r1, [r0]
-_080EC41E:
- bl TakeTVShowInSearchOfTrainersOffTheAir
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r4, =0x00002ba8
- adds r0, r4
- ldrh r0, [r0]
- cmp r0, 0
- bne _080EC436
- movs r0, 0x1
- bl FlagSet
-_080EC436:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end GabbyAndTyBeforeInterview
-
- thumb_func_start GabbyAndTyAfterInterview
-GabbyAndTyAfterInterview: @ 80EC448
- push {r4-r6,lr}
- ldr r5, =gSaveBlock1Ptr
- ldr r2, [r5]
- ldr r6, =0x00002bae
- adds r0, r2, r6
- ldrb r1, [r0]
- lsls r1, 31
- ldr r4, =0x00002baf
- adds r2, r4
- lsrs r1, 31
- ldrb r3, [r2]
- movs r0, 0x2
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
- ldr r2, [r5]
- adds r0, r2, r6
- ldrb r0, [r0]
- adds r2, r4
- movs r1, 0x2
- ands r1, r0
- ldrb r3, [r2]
- movs r0, 0x3
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
- ldr r2, [r5]
- adds r0, r2, r6
- ldrb r0, [r0]
- adds r2, r4
- movs r1, 0x4
- ands r1, r0
- ldrb r3, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
- ldr r2, [r5]
- adds r0, r2, r6
- ldrb r0, [r0]
- adds r2, r4
- movs r1, 0x8
- ands r1, r0
- ldrb r3, [r2]
- movs r0, 0x9
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
- ldr r1, [r5]
- adds r1, r6
- ldrb r0, [r1]
- movs r2, 0x10
- orrs r0, r2
- strb r0, [r1]
- ldr r0, [r5]
- ldr r1, =gMapHeader
- ldrb r1, [r1, 0x14]
- ldr r2, =0x00002bac
- adds r0, r2
- strb r1, [r0]
- movs r0, 0x6
- bl IncrementGameStat
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end GabbyAndTyAfterInterview
-
- thumb_func_start TakeTVShowInSearchOfTrainersOffTheAir
-TakeTVShowInSearchOfTrainersOffTheAir: @ 80EC4E8
- ldr r0, =gSaveBlock1Ptr
- ldr r1, [r0]
- ldr r0, =0x00002bae
- adds r1, r0
- ldrb r2, [r1]
- movs r0, 0x11
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- bx lr
- .pool
- thumb_func_end TakeTVShowInSearchOfTrainersOffTheAir
-
- thumb_func_start GabbyAndTyGetBattleNum
-GabbyAndTyGetBattleNum: @ 80EC504
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r2, =0x00002bad
- adds r1, r0, r2
- ldrb r0, [r1]
- cmp r0, 0x5
- bls _080EC522
- ldrb r0, [r1]
- movs r1, 0x3
- bl __umodsi3
- adds r0, 0x6
- lsls r0, 24
- lsrs r0, 24
-_080EC522:
- pop {r1}
- bx r1
- .pool
- thumb_func_end GabbyAndTyGetBattleNum
-
- thumb_func_start IsTVShowInSearchOfTrainersAiring
-IsTVShowInSearchOfTrainersAiring: @ 80EC530
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00002bae
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 27
- lsrs r0, 31
- bx lr
- .pool
- thumb_func_end IsTVShowInSearchOfTrainersAiring
-
- thumb_func_start GabbyAndTyGetLastQuote
-GabbyAndTyGetLastQuote: @ 80EC548
- push {r4,r5,lr}
- ldr r5, =gSaveBlock1Ptr
- ldr r0, [r5]
- ldr r2, =0x00002baa
- adds r1, r0, r2
- ldrh r0, [r1]
- ldr r4, =0x0000ffff
- cmp r0, r4
- beq _080EC584
- ldr r0, =gStringVar1
- ldrh r1, [r1]
- bl CopyEasyChatWord
- ldr r1, [r5]
- ldr r0, =0x00002baa
- adds r1, r0
- ldrh r2, [r1]
- adds r0, r4, 0
- orrs r0, r2
- strh r0, [r1]
- movs r0, 0x1
- b _080EC586
- .pool
-_080EC584:
- movs r0, 0
-_080EC586:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end GabbyAndTyGetLastQuote
-
- thumb_func_start GabbyAndTyGetLastBattleTrivia
-GabbyAndTyGetLastBattleTrivia: @ 80EC58C
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00002baf
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080EC5AC
- movs r0, 0x1
- b _080EC5D2
- .pool
-_080EC5AC:
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _080EC5B8
- movs r0, 0x2
- b _080EC5D2
-_080EC5B8:
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080EC5C4
- movs r0, 0x3
- b _080EC5D2
-_080EC5C4:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _080EC5D0
- movs r0, 0
- b _080EC5D2
-_080EC5D0:
- movs r0, 0x4
-_080EC5D2:
- pop {r1}
- bx r1
- thumb_func_end GabbyAndTyGetLastBattleTrivia
-
- thumb_func_start GabbyAndTySetScriptVarsToFieldObjectLocalIds
-GabbyAndTySetScriptVarsToFieldObjectLocalIds: @ 80EC5D8
- push {lr}
- bl GabbyAndTyGetBattleNum
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x1
- cmp r0, 0x7
- bhi _080EC6B0
- lsls r0, 2
- ldr r1, =_080EC5F8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080EC5F8:
- .4byte _080EC618
- .4byte _080EC62C
- .4byte _080EC640
- .4byte _080EC654
- .4byte _080EC668
- .4byte _080EC67C
- .4byte _080EC690
- .4byte _080EC6A4
-_080EC618:
- ldr r1, =gSpecialVar_0x8004
- movs r0, 0xE
- strh r0, [r1]
- ldr r1, =gSpecialVar_0x8005
- movs r0, 0xD
- b _080EC6AE
- .pool
-_080EC62C:
- ldr r1, =gSpecialVar_0x8004
- movs r0, 0x5
- strh r0, [r1]
- ldr r1, =gSpecialVar_0x8005
- movs r0, 0x6
- b _080EC6AE
- .pool
-_080EC640:
- ldr r1, =gSpecialVar_0x8004
- movs r0, 0x12
- strh r0, [r1]
- ldr r1, =gSpecialVar_0x8005
- movs r0, 0x11
- b _080EC6AE
- .pool
-_080EC654:
- ldr r1, =gSpecialVar_0x8004
- movs r0, 0x15
- strh r0, [r1]
- ldr r1, =gSpecialVar_0x8005
- movs r0, 0x16
- b _080EC6AE
- .pool
-_080EC668:
- ldr r1, =gSpecialVar_0x8004
- movs r0, 0x8
- strh r0, [r1]
- ldr r1, =gSpecialVar_0x8005
- movs r0, 0x9
- b _080EC6AE
- .pool
-_080EC67C:
- ldr r1, =gSpecialVar_0x8004
- movs r0, 0x13
- strh r0, [r1]
- ldr r1, =gSpecialVar_0x8005
- movs r0, 0x14
- b _080EC6AE
- .pool
-_080EC690:
- ldr r1, =gSpecialVar_0x8004
- movs r0, 0x17
- strh r0, [r1]
- ldr r1, =gSpecialVar_0x8005
- movs r0, 0x18
- b _080EC6AE
- .pool
-_080EC6A4:
- ldr r1, =gSpecialVar_0x8004
- movs r0, 0xA
- strh r0, [r1]
- ldr r1, =gSpecialVar_0x8005
- movs r0, 0xB
-_080EC6AE:
- strh r0, [r1]
-_080EC6B0:
- pop {r0}
- bx r0
- .pool
- thumb_func_end GabbyAndTySetScriptVarsToFieldObjectLocalIds
-
- thumb_func_start InterviewAfter
-InterviewAfter: @ 80EC6BC
- push {lr}
- ldr r0, =gSpecialVar_0x8005
- ldrh r0, [r0]
- subs r0, 0x1
- cmp r0, 0x7
- bhi _080EC724
- lsls r0, 2
- ldr r1, =_080EC6DC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080EC6DC:
- .4byte _080EC6FC
- .4byte _080EC702
- .4byte _080EC708
- .4byte _080EC70E
- .4byte _080EC724
- .4byte _080EC714
- .4byte _080EC71A
- .4byte _080EC720
-_080EC6FC:
- bl sub_80ED548
- b _080EC724
-_080EC702:
- bl sub_80ED5B8
- b _080EC724
-_080EC708:
- bl sub_80ED610
- b _080EC724
-_080EC70E:
- bl TaskDummy5
- b _080EC724
-_080EC714:
- bl sub_80ECF5C
- b _080EC724
-_080EC71A:
- bl sub_80ED164
- b _080EC724
-_080EC720:
- bl sub_80ECA38
-_080EC724:
- pop {r0}
- bx r0
- thumb_func_end InterviewAfter
-
- thumb_func_start sub_80EC728
-sub_80EC728: @ 80EC728
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r4, 0
- bl sub_80EED88
- bl sub_80ED718
- ldr r5, =gBattleResults
- ldrh r0, [r5, 0x28]
- cmp r0, 0
- bne _080EC74C
- bl sub_80EC8FC
- b _080EC888
- .pool
-_080EC74C:
- bl sub_80EC8A4
- ldr r0, =0x0000ffff
- bl sub_80EFB38
- lsls r0, 24
- cmp r0, 0
- beq _080EC75E
- b _080EC888
-_080EC75E:
- ldrh r1, [r5, 0x28]
- movs r0, 0xB
- muls r0, r1
- ldr r1, =gSpeciesNames
- adds r0, r1
- adds r1, r5, 0
- adds r1, 0x2A
- bl StringCompare
- cmp r0, 0
- bne _080EC776
- b _080EC888
-_080EC776:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x000027cc
- adds r0, r1
- bl sub_80EFB08
- ldr r1, =gUnknown_030060BC
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EC888
- movs r0, 0x15
- movs r1, 0
- bl sub_80EF46C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080EC888
- movs r2, 0
- adds r1, r5, 0
- adds r1, 0x36
-_080EC7A8:
- adds r0, r2, r1
- ldrb r0, [r0]
- adds r0, r4, r0
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xA
- bls _080EC7A8
- cmp r4, 0
- bne _080EC7CA
- ldrb r1, [r5, 0x5]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080EC888
-_080EC7CA:
- movs r4, 0
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gUnknown_030060BC
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r6, r1, r0
- movs r0, 0x15
- strb r0, [r6]
- strb r4, [r6, 0x1]
- ldrb r1, [r5, 0x5]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080EC81C
- movs r4, 0x1
- movs r0, 0x1
- adds r3, r6, 0
- adds r3, 0x13
- ldr r1, =gSaveBlock2Ptr
- mov r8, r1
- adds r7, r6, 0x4
- b _080EC84E
- .pool
-_080EC81C:
- movs r2, 0
- ldr r0, =gLastUsedItem
- mov r12, r0
- adds r3, r6, 0
- adds r3, 0x13
- ldr r1, =gSaveBlock2Ptr
- mov r8, r1
- adds r7, r6, 0x4
- adds r1, r5, 0
- adds r1, 0x36
-_080EC830:
- adds r0, r2, r1
- ldrb r0, [r0]
- adds r0, r4, r0
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xA
- bls _080EC830
- cmp r4, 0xFF
- bls _080EC84A
- movs r4, 0xFF
-_080EC84A:
- mov r1, r12
- ldrh r0, [r1]
-_080EC84E:
- strb r4, [r6, 0x12]
- strb r0, [r6, 0xF]
- mov r0, r8
- ldr r1, [r0]
- adds r0, r3, 0
- bl StringCopy
- ldr r4, =gUnknown_03005D3A
- adds r0, r7, 0
- adds r1, r4, 0
- bl StringCopy
- adds r0, r7, 0
- bl sub_81DB604
- adds r5, r0, 0
- adds r0, r7, 0
- bl StripExtCtrlCodes
- subs r4, 0x2A
- ldrh r0, [r4, 0x28]
- strh r0, [r6, 0x10]
- adds r0, r6, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r6, 0x2]
- strb r5, [r6, 0x3]
-_080EC888:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EC728
-
- thumb_func_start sub_80EC8A4
-sub_80EC8A4: @ 80EC8A4
- push {r4,lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r1, [r0]
- ldr r0, =0x00002b2c
- adds r4, r1, r0
- ldrb r0, [r4]
- cmp r0, 0x19
- beq _080EC8CA
- ldr r2, =0x000027cc
- adds r0, r1, r2
- movs r1, 0x18
- bl sub_80EF910
- movs r0, 0x5
- bl GetGameStat
- strh r0, [r4, 0x6]
- movs r0, 0x19
- strb r0, [r4]
-_080EC8CA:
- ldrh r0, [r4, 0x2]
- adds r0, 0x1
- strh r0, [r4, 0x2]
- ldr r1, =gBattleResults
- ldrh r0, [r1, 0x28]
- strh r0, [r4, 0x4]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x8]
- ldr r0, =gMapHeader
- ldrb r0, [r0, 0x14]
- strb r0, [r4, 0xA]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EC8A4
-
- thumb_func_start sub_80EC8FC
-sub_80EC8FC: @ 80EC8FC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r0, =0x0000ffff
- bl sub_80EFB38
- lsls r0, 24
- cmp r0, 0
- bne _080EC9B4
- movs r1, 0
- movs r5, 0
- ldr r2, =gUnknown_03005D46
-_080EC914:
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r0, r5, r0
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xA
- bls _080EC914
- cmp r5, 0xFF
- bls _080EC92E
- movs r5, 0xFF
-_080EC92E:
- cmp r5, 0x2
- bls _080EC9B4
- ldr r0, =gBattleOutcome
- mov r8, r0
- ldrb r0, [r0]
- cmp r0, 0x6
- beq _080EC940
- cmp r0, 0x1
- bne _080EC9B4
-_080EC940:
- ldr r7, =gSaveBlock1Ptr
- ldr r0, [r7]
- ldr r6, =0x000027cc
- adds r0, r6
- bl sub_80EFB08
- ldr r4, =gUnknown_030060BC
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EC9B4
- movs r0, 0x17
- movs r1, 0
- bl sub_80EF46C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080EC9B4
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldr r4, [r7]
- adds r4, r0
- movs r1, 0
- movs r0, 0x17
- strb r0, [r4]
- strb r1, [r4, 0x1]
- ldr r1, =gBattleResults
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0xC]
- ldrh r0, [r1, 0x20]
- strh r0, [r4, 0xE]
- strb r5, [r4, 0x10]
- mov r1, r8
- ldrb r0, [r1]
- strb r0, [r4, 0x11]
- ldr r0, =gMapHeader
- ldrb r0, [r0, 0x14]
- strb r0, [r4, 0x12]
- adds r0, r4, 0
- adds r0, 0x13
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- adds r0, r4, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x2]
-_080EC9B4:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EC8FC
-
- thumb_func_start sub_80EC9E8
-sub_80EC9E8: @ 80EC9E8
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80F0020
- strb r0, [r4, 0x1E]
- lsrs r2, r0, 8
- strb r2, [r4, 0x1F]
- adds r1, r4, 0
- adds r1, 0x20
- strb r0, [r1]
- adds r1, 0x1
- strb r2, [r1]
- adds r1, 0x1
- strb r0, [r1]
- adds r0, r4, 0
- adds r0, 0x23
- strb r2, [r0]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80EC9E8
-
- thumb_func_start sub_80ECA10
-sub_80ECA10: @ 80ECA10
- push {r4,lr}
- adds r4, r0, 0
- bl sub_80F0020
- adds r1, r4, 0
- adds r1, 0x20
- strb r0, [r1]
- lsrs r1, r0, 8
- adds r2, r4, 0
- adds r2, 0x21
- strb r1, [r2]
- adds r2, 0x1
- strb r0, [r2]
- adds r0, r4, 0
- adds r0, 0x23
- strb r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80ECA10
-
- thumb_func_start sub_80ECA38
-sub_80ECA38: @ 80ECA38
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r0, =gSaveBlock1Ptr
- mov r8, r0
- ldr r7, [r0]
- ldr r1, =0x00002b2c
- adds r6, r7, r1
- ldrb r1, [r6]
- cmp r1, 0x8
- bne _080ECACE
- ldr r0, =gUnknown_030060BC
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r4, r0, 3
- adds r4, r0
- lsls r4, 2
- ldr r5, =0x000027cc
- adds r4, r5
- adds r4, r7, r4
- strb r1, [r4]
- movs r0, 0x1
- strb r0, [r4, 0x1]
- adds r0, r4, 0
- adds r0, 0x14
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- ldr r0, =gUnknown_02039F2C
- ldrh r0, [r0]
- strb r0, [r4, 0x1C]
- ldr r0, =gUnknown_02039F24
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- strh r0, [r4, 0x12]
- ldrh r0, [r6, 0x2]
- strh r0, [r4, 0x2]
- ldrb r0, [r6, 0xC]
- strb r0, [r4, 0xC]
- ldrb r0, [r6, 0xD]
- strb r0, [r4, 0xD]
- ldrb r0, [r6, 0xE]
- strb r0, [r4, 0xE]
- ldrh r0, [r6, 0x10]
- strh r0, [r4, 0x10]
- ldrb r0, [r6, 0xF]
- strb r0, [r4, 0xF]
- adds r0, r4, 0x4
- ldr r2, =0x00002b30
- adds r1, r7, r2
- bl StringCopy
- adds r0, r4, 0
- bl sub_80ECA10
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x1D]
- ldrb r0, [r6, 0x1E]
- strb r0, [r4, 0x1E]
- mov r1, r8
- ldr r0, [r1]
- adds r0, r5
- movs r1, 0x18
- bl sub_80EF910
-_080ECACE:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ECA38
-
- thumb_func_start sub_80ECB00
-sub_80ECB00: @ 80ECB00
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r1, 16
- lsrs r1, 16
- mov r10, r1
- lsls r2, 16
- lsrs r2, 16
- mov r9, r2
- lsls r3, 16
- lsrs r3, 16
- mov r8, r3
- ldr r6, =gSaveBlock1Ptr
- ldr r0, [r6]
- ldr r5, =0x000027cc
- adds r0, r5
- bl sub_80EFADC
- ldr r4, =gUnknown_030060BC
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080ECBEC
- movs r0, 0xA
- bl sub_80EF550
- ldr r0, =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0x1
- beq _080ECBEC
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r1, [r6]
- adds r4, r1, r0
- movs r0, 0xA
- strb r0, [r4]
- movs r5, 0x1
- strb r5, [r4, 0x1]
- adds r0, r4, 0x4
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- ldr r0, =gBattleTypeFlags
- ldr r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _080ECBA0
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- beq _080ECBA2
- strb r5, [r4, 0x18]
- b _080ECBA4
- .pool
-_080ECBA0:
- movs r0, 0x2
-_080ECBA2:
- strb r0, [r4, 0x18]
-_080ECBA4:
- mov r0, r10
- strh r0, [r4, 0x14]
- mov r0, r9
- strh r0, [r4, 0x16]
- mov r0, r8
- strh r0, [r4, 0x2]
- lsls r0, r7, 3
- subs r0, r7
- lsls r5, r0, 2
- ldr r6, =gLinkPlayers + 8
- adds r1, r5, r6
- mov r0, sp
- bl StringCopy
- mov r0, sp
- bl StripExtCtrlCodes
- adds r0, r4, 0
- adds r0, 0xC
- mov r1, sp
- bl StringCopy
- adds r0, r4, 0
- bl sub_80ECA10
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x19]
- cmp r0, 0x1
- beq _080ECBE8
- adds r0, r6, r5
- ldrh r0, [r0, 0x12]
- cmp r0, 0x1
- bne _080ECBEA
-_080ECBE8:
- movs r0, 0x1
-_080ECBEA:
- strb r0, [r4, 0x1A]
-_080ECBEC:
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ECB00
-
- thumb_func_start sub_80ECC04
-sub_80ECC04: @ 80ECC04
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x24
- mov r10, r0
- ldr r0, [sp, 0x44]
- lsls r1, 24
- lsrs r5, r1, 24
- lsls r2, 24
- lsrs r6, r2, 24
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x20]
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r0, =gSaveBlock1Ptr
- mov r8, r0
- ldr r0, [r0]
- ldr r7, =0x000027cc
- adds r0, r7
- bl sub_80EFADC
- ldr r4, =gUnknown_030060BC
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080ECC54
- movs r0, 0x9
- bl sub_80EF550
- ldr r0, =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0x1
- bne _080ECC68
-_080ECC54:
- movs r0, 0
- b _080ECCEE
- .pool
-_080ECC68:
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- mov r2, r8
- ldr r1, [r2]
- adds r4, r1, r0
- movs r0, 0x9
- strb r0, [r4]
- movs r7, 0x1
- strb r7, [r4, 0x1]
- adds r0, r4, 0
- adds r0, 0xC
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- mov r0, sp
- mov r1, r10
- bl StringCopy
- mov r0, sp
- bl StripExtCtrlCodes
- adds r0, r4, 0x4
- mov r1, sp
- bl StringCopy
- movs r0, 0x7
- ands r5, r0
- ldrb r1, [r4, 0x3]
- subs r0, 0xF
- ands r0, r1
- orrs r0, r5
- movs r1, 0x3
- ands r6, r1
- lsls r2, r6, 3
- subs r1, 0x1C
- ands r0, r1
- orrs r0, r2
- strb r0, [r4, 0x3]
- add r0, sp, 0x20
- ldrb r0, [r0]
- strb r0, [r4, 0x2]
- adds r0, r4, 0
- bl sub_80ECA10
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x14]
- cmp r0, 0x1
- beq _080ECCDA
- mov r1, r9
- cmp r1, 0x1
- bne _080ECCE8
-_080ECCDA:
- strb r7, [r4, 0x15]
- b _080ECCEC
- .pool
-_080ECCE8:
- mov r2, r9
- strb r2, [r4, 0x15]
-_080ECCEC:
- movs r0, 0x1
-_080ECCEE:
- add sp, 0x24
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80ECC04
-
- thumb_func_start sub_80ECD00
-sub_80ECD00: @ 80ECD00
- push {r4-r6,lr}
- sub sp, 0x20
- ldr r6, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8006
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r6]
- adds r4, r1, r0
- ldr r0, =gSpecialVar_0x8005
- ldrh r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 1
- strb r0, [r4, 0x16]
- adds r0, r4, 0x2
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- movs r0, 0xB
- strb r0, [r4]
- movs r5, 0x1
- strb r5, [r4, 0x1]
- bl sub_80F0020
- strb r0, [r4, 0xA]
- lsrs r0, 8
- strb r0, [r4, 0xB]
- ldr r1, =gStringVar1
- mov r0, sp
- bl StringCopy
- mov r0, sp
- bl StripExtCtrlCodes
- adds r0, r4, 0
- adds r0, 0xC
- mov r1, sp
- bl StringCopy
- adds r0, r4, 0
- bl sub_80ECA10
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x17]
- cmp r0, 0x1
- beq _080ECD74
- ldr r0, [r6]
- ldr r1, =0x000031a0
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080ECD98
-_080ECD74:
- strb r5, [r4, 0x18]
- b _080ECD9A
- .pool
-_080ECD98:
- strb r0, [r4, 0x18]
-_080ECD9A:
- add sp, 0x20
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80ECD00
-
- thumb_func_start sub_80ECDA4
-sub_80ECDA4: @ 80ECDA4
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r5, =gSaveBlock1Ptr
- ldr r0, [r5]
- ldr r4, =0x000027cc
- adds r0, r4
- movs r1, 0x18
- bl sub_80EF910
- ldr r0, [r5]
- adds r0, r4
- bl sub_80EFADC
- ldr r1, =gUnknown_030060BC
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080ECDDC
- ldr r0, [r5]
- ldr r1, =0x00002b2c
- adds r0, r1
- strb r6, [r0, 0xD]
- movs r1, 0x8
- strb r1, [r0]
-_080ECDDC:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ECDA4
-
- thumb_func_start sub_80ECDF4
-sub_80ECDF4: @ 80ECDF4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00002b2c
- adds r4, r0, r1
- ldr r1, =0x000027cc
- adds r0, r1
- bl sub_80EFADC
- ldr r1, =gUnknown_030060BC
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080ECE1C
- strb r5, [r4, 0xE]
-_080ECE1C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ECDF4
-
- thumb_func_start sub_80ECE34
-sub_80ECE34: @ 80ECE34
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00002b2c
- adds r4, r0, r1
- ldr r1, =0x000027cc
- adds r0, r1
- bl sub_80EFADC
- ldr r1, =gUnknown_030060BC
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080ECE5C
- strb r5, [r4, 0xF]
-_080ECE5C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ECE34
-
- thumb_func_start sub_80ECE74
-sub_80ECE74: @ 80ECE74
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00002b2c
- adds r4, r0, r1
- ldr r1, =0x000027cc
- adds r0, r1
- bl sub_80EFADC
- ldr r1, =gUnknown_030060BC
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080ECE9C
- strh r5, [r4, 0x10]
-_080ECE9C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ECE74
-
- thumb_func_start sub_80ECEB4
-sub_80ECEB4: @ 80ECEB4
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r1, 24
- lsrs r6, r1, 24
- ldr r0, =gSaveBlock1Ptr
- ldr r4, [r0]
- ldr r0, =0x00002b2c
- adds r5, r4, r0
- ldr r1, =0x000027cc
- adds r0, r4, r1
- bl sub_80EFADC
- ldr r1, =gUnknown_030060BC
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080ECF4C
- ldr r2, =gUnknown_02039E00
- lsls r1, r6, 6
- adds r0, r1, r2
- ldrh r0, [r0]
- strh r0, [r5, 0x2]
- ldr r0, =0x00002b30
- adds r4, r0
- adds r2, 0xD
- adds r1, r2
- adds r0, r4, 0
- bl StringCopy
- adds r0, r4, 0
- bl StripExtCtrlCodes
- strb r7, [r5, 0xC]
- adds r1, r6, 0x1
- ldr r0, =gUnknown_02039F30
- ldrb r0, [r0]
- cmp r1, r0
- ble _080ECF30
- ldr r0, =gLinkPlayers
- ldrh r0, [r0, 0x1A]
- b _080ECF4A
- .pool
-_080ECF30:
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _080ECF48
- ldr r1, =gLinkPlayers
- lsls r0, r6, 3
- subs r0, r6
- lsls r0, 2
- adds r0, r1
- ldrh r0, [r0, 0x1A]
- cmp r0, 0x1
- bne _080ECF4A
-_080ECF48:
- movs r0, 0x1
-_080ECF4A:
- strb r0, [r5, 0x1E]
-_080ECF4C:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ECEB4
-
- thumb_func_start sub_80ECF5C
-sub_80ECF5C: @ 80ECF5C
- push {r4-r7,lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r6, [r0]
- ldr r0, =0x00002b2c
- adds r5, r6, r0
- ldrb r2, [r5]
- cmp r2, 0x6
- bne _080ED02C
- ldr r0, =gUnknown_030060BC
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- adds r4, r6, r0
- strb r2, [r4]
- movs r7, 0x1
- strb r7, [r4, 0x1]
- ldrh r0, [r5, 0x2]
- strh r0, [r4, 0x2]
- adds r0, r4, 0
- adds r0, 0x16
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- adds r0, r4, 0
- adds r0, 0x8
- ldr r2, =0x00002b34
- adds r1, r6, r2
- bl StringCopy
- ldrb r0, [r5, 0x13]
- lsls r0, 29
- lsrs r0, 29
- ldrb r2, [r4, 0x13]
- movs r3, 0x8
- negs r3, r3
- adds r1, r3, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r4, 0x13]
- ldrb r2, [r5, 0x13]
- movs r0, 0x18
- ands r0, r2
- movs r2, 0x19
- negs r2, r2
- ands r2, r1
- orrs r2, r0
- strb r2, [r4, 0x13]
- ldrh r0, [r5, 0x14]
- strh r0, [r4, 0x14]
- ldrb r0, [r5, 0x13]
- movs r1, 0x60
- ands r1, r0
- movs r0, 0x61
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x13]
- ldrb r1, [r5, 0x13]
- lsls r1, 29
- lsrs r1, 29
- ands r0, r3
- orrs r0, r1
- strb r0, [r4, 0x13]
- adds r0, r4, 0
- bl sub_80ECA10
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x1E]
- cmp r0, 0x1
- beq _080ECFFA
- ldrb r0, [r5, 0x1F]
- cmp r0, 0x1
- bne _080ED01C
-_080ECFFA:
- strb r7, [r4, 0x1F]
- b _080ED01E
- .pool
-_080ED01C:
- strb r0, [r4, 0x1F]
-_080ED01E:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x000027cc
- adds r0, r1
- movs r1, 0x18
- bl sub_80EF910
-_080ED02C:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ECF5C
-
- thumb_func_start sub_80ED03C
-sub_80ED03C: @ 80ED03C
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r4, =gSaveBlock1Ptr
- ldr r0, [r4]
- ldr r1, =0x00002b2c
- adds r5, r0, r1
- bl sub_80EF7B4
- ldr r0, [r4]
- ldr r1, =0x000027cc
- adds r0, r1
- bl sub_80EFADC
- ldr r1, =gUnknown_030060BC
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080ED07A
- ldr r0, [r4]
- ldr r1, =0x000027cc
- adds r0, r1
- movs r1, 0x18
- bl sub_80EF910
- strh r6, [r5, 0x14]
- movs r0, 0x6
- strb r0, [r5]
-_080ED07A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ED03C
-
- thumb_func_start sub_80ED090
-sub_80ED090: @ 80ED090
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gSaveBlock1Ptr
- ldr r4, [r0]
- ldr r0, =0x00002b2c
- adds r7, r4, r0
- ldr r1, =0x000027cc
- adds r0, r4, r1
- bl sub_80EFADC
- ldr r1, =gUnknown_030060BC
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080ED134
- movs r3, 0x3
- adds r0, r5, 0
- ands r0, r3
- lsls r0, 5
- ldrb r1, [r7, 0x13]
- movs r2, 0x61
- negs r2, r2
- ands r2, r1
- orrs r2, r0
- strb r2, [r7, 0x13]
- ldr r0, =gUnknown_02039F2C
- ldrb r0, [r0]
- movs r1, 0x7
- ands r1, r0
- movs r0, 0x8
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r7, 0x13]
- ldr r1, =gUnknown_02039F2E
- ldrb r1, [r1]
- ands r3, r1
- lsls r3, 3
- movs r1, 0x19
- negs r1, r1
- ands r0, r1
- orrs r0, r3
- strb r0, [r7, 0x13]
- ldr r0, =gUnknown_02039F24
- mov r8, r0
- ldrb r0, [r0]
- movs r6, 0x64
- muls r0, r6
- ldr r5, =gPlayerParty
- adds r0, r5
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- strh r0, [r7, 0x2]
- mov r1, r8
- ldrb r0, [r1]
- muls r0, r6
- adds r0, r5
- ldr r1, =0x00002b34
- adds r4, r1
- movs r1, 0x2
- adds r2, r4, 0
- bl GetMonData
- adds r0, r4, 0
- bl StripExtCtrlCodes
- mov r1, r8
- ldrb r0, [r1]
- muls r0, r6
- adds r0, r5
- movs r1, 0x3
- bl GetMonData
- strb r0, [r7, 0x1F]
-_080ED134:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ED090
-
- thumb_func_start sub_80ED164
-sub_80ED164: @ 80ED164
- push {r4-r6,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gUnknown_030060BC
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r6, r1, r0
- movs r0, 0x7
- strb r0, [r6]
- movs r0, 0x1
- strb r0, [r6, 0x1]
- adds r0, r6, 0x2
- ldr r4, =gSaveBlock2Ptr
- ldr r1, [r4]
- bl StringCopy
- adds r0, r6, 0
- adds r0, 0xC
- ldr r1, [r4]
- ldr r2, =0x00000bd8
- adds r1, r2
- bl StringCopy
- ldr r1, [r4]
- ldr r2, =0x00000bd4
- adds r0, r1, r2
- ldrh r0, [r0]
- strh r0, [r6, 0xA]
- adds r2, 0x2
- adds r0, r1, r2
- ldrh r0, [r0]
- strh r0, [r6, 0x14]
- ldr r5, =0x00000d07
- adds r1, r5
- ldrb r0, [r1]
- movs r1, 0
- bl sub_8164FCC
- strh r0, [r6, 0x16]
- ldr r0, [r4]
- ldr r1, =0x00000d06
- adds r0, r1
- ldrb r0, [r0]
- strb r0, [r6, 0x1C]
- ldr r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- cmp r0, 0
- bne _080ED1F4
- movs r0, 0x32
- b _080ED1F6
- .pool
-_080ED1F4:
- movs r0, 0x64
-_080ED1F6:
- strb r0, [r6, 0x1A]
- ldr r0, =gSpecialVar_0x8004
- ldrh r0, [r0]
- strb r0, [r6, 0x1B]
- adds r0, r6, 0
- bl sub_80ECA10
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r6, 0x1D]
- cmp r0, 0x1
- beq _080ED21C
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r2, =0x00000beb
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080ED21E
-_080ED21C:
- movs r0, 0x1
-_080ED21E:
- strb r0, [r6, 0x1E]
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ED164
-
- thumb_func_start SaveRecordedItemPurchasesForTVShow
-@ void SaveRecordedItemPurchasesForTVShow()
-SaveRecordedItemPurchasesForTVShow: @ 80ED238
- push {r4-r7,lr}
- ldr r5, =gSaveBlock1Ptr
- ldr r0, [r5]
- ldrh r1, [r0, 0x4]
- ldr r0, =0x00003c1a
- cmp r1, r0
- beq _080ED2F2
- ldr r0, =0x0000371a
- cmp r1, r0
- beq _080ED2F2
- ldr r0, =0x00005555
- bl sub_80EFB38
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _080ED2F2
- ldr r0, [r5]
- ldr r7, =0x000027cc
- adds r0, r7
- bl sub_80EFB08
- ldr r6, =gUnknown_030060BC
- strb r0, [r6]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080ED2F2
- movs r0, 0x16
- movs r1, 0
- bl sub_80EF46C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080ED2F2
- bl sub_80EF500
- ldr r2, =gUnknown_02039F80
- ldrh r0, [r2, 0x2]
- cmp r0, 0x13
- bls _080ED2F2
- movs r1, 0
- ldrsb r1, [r6, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- ldr r1, [r5]
- adds r5, r1, r0
- movs r0, 0x16
- strb r0, [r5]
- strb r4, [r5, 0x1]
- ldr r0, =gMapHeader
- ldrb r0, [r0, 0x14]
- strb r0, [r5, 0x12]
- movs r4, 0
- adds r7, r5, 0x6
- mov r12, r2
- adds r6, r5, 0
- adds r6, 0xC
-_080ED2B6:
- lsls r2, r4, 1
- adds r3, r7, r2
- lsls r1, r4, 2
- add r1, r12
- ldrh r0, [r1]
- strh r0, [r3]
- adds r2, r6, r2
- ldrh r0, [r1, 0x2]
- strh r0, [r2]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x2
- bls _080ED2B6
- movs r0, 0x1
- bl GetPriceReduction
- strb r0, [r5, 0x2]
- adds r0, r5, 0
- adds r0, 0x13
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- adds r0, r5, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r5, 0x3]
-_080ED2F2:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end SaveRecordedItemPurchasesForTVShow
-
- thumb_func_start sub_80ED320
-sub_80ED320: @ 80ED320
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- bl sub_80EF7A8
- ldr r0, =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0x1
- beq _080ED400
- ldr r0, =gSpecialVar_0x8004
- mov r8, r0
- ldrh r0, [r0]
- movs r7, 0x64
- muls r0, r7
- ldr r6, =gPlayerParty
- adds r0, r6
- ldr r4, =gStringVar1
- movs r1, 0x2
- adds r2, r4, 0
- bl GetMonData
- ldr r1, =gSaveBlock2Ptr
- mov r9, r1
- ldr r0, [r1]
- bl StringLength
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bls _080ED400
- adds r0, r4, 0
- bl StringLength
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bls _080ED400
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gUnknown_030060BC
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r4, [r2]
- adds r4, r0
- movs r0, 0x5
- strb r0, [r4]
- movs r5, 0x1
- strb r5, [r4, 0x1]
- mov r2, r8
- ldrh r0, [r2]
- muls r0, r7
- adds r0, r6
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- strh r0, [r4, 0x2]
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __umodsi3
- strb r0, [r4, 0x1A]
- bl Random
- lsls r0, 16
- lsrs r0, 16
- ands r0, r5
- strb r0, [r4, 0x1B]
- ldrh r0, [r4, 0x2]
- bl sub_80EFA24
- strh r0, [r4, 0x1C]
- adds r0, r4, 0
- adds r0, 0xF
- mov r2, r9
- ldr r1, [r2]
- bl StringCopy
- mov r1, r8
- ldrh r0, [r1]
- muls r0, r7
- adds r0, r6
- adds r5, r4, 0x4
- movs r1, 0x2
- adds r2, r5, 0
- bl GetMonData
- adds r0, r5, 0
- bl StripExtCtrlCodes
- adds r0, r4, 0
- bl sub_80ECA10
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x1E]
- mov r2, r8
- ldrh r0, [r2]
- muls r0, r7
- adds r0, r6
- movs r1, 0x3
- bl GetMonData
- strb r0, [r4, 0x1F]
-_080ED400:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ED320
-
- thumb_func_start StartMassOutbreak
-StartMassOutbreak: @ 80ED430
- push {r4,r5,lr}
- ldr r4, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r0, [r0]
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- ldr r0, =0x000027cc
- adds r1, r0
- ldr r2, [r4]
- adds r1, r2, r1
- ldrh r3, [r1, 0xC]
- ldr r5, =0x00002b90
- adds r0, r2, r5
- strh r3, [r0]
- ldrb r0, [r1, 0x10]
- ldr r3, =0x00002b92
- adds r2, r3
- strb r0, [r2]
- ldr r0, [r4]
- ldrb r2, [r1, 0x11]
- adds r5, 0x3
- adds r0, r5
- strb r2, [r0]
- ldr r0, [r4]
- ldrb r2, [r1, 0x14]
- adds r3, 0x2
- adds r0, r3
- strb r2, [r0]
- ldr r0, [r4]
- ldrb r2, [r1, 0x2]
- adds r5, 0x2
- adds r0, r5
- strb r2, [r0]
- ldr r2, [r4]
- ldrh r3, [r1, 0xE]
- adds r5, 0x1
- adds r0, r2, r5
- strh r3, [r0]
- ldrh r3, [r1, 0x4]
- adds r5, 0x2
- adds r0, r2, r5
- strh r3, [r0]
- ldrh r3, [r1, 0x6]
- adds r5, 0x2
- adds r0, r2, r5
- strh r3, [r0]
- ldrh r3, [r1, 0x8]
- adds r5, 0x2
- adds r0, r2, r5
- strh r3, [r0]
- ldrh r3, [r1, 0xA]
- adds r5, 0x2
- adds r0, r2, r5
- strh r3, [r0]
- ldrb r0, [r1, 0x3]
- ldr r3, =0x00002ba0
- adds r2, r3
- strb r0, [r2]
- ldr r0, [r4]
- ldrb r1, [r1, 0x13]
- adds r5, 0x3
- adds r0, r5
- strb r1, [r0]
- ldr r0, [r4]
- ldr r1, =0x00002ba2
- adds r0, r1
- movs r1, 0x2
- strh r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end StartMassOutbreak
-
- thumb_func_start sub_80ED4DC
-sub_80ED4DC: @ 80ED4DC
- push {r4,lr}
- bl sub_80EFA88
- ldr r0, =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0x1
- beq _080ED532
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gUnknown_030060BC
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- adds r0, r4, 0
- adds r0, 0x17
- bl sub_818E848
- movs r0, 0x2
- strb r0, [r4, 0x18]
- movs r0, 0xC
- strb r0, [r4]
- movs r0, 0x1
- strb r0, [r4, 0x1]
- adds r0, r4, 0x2
- bl sub_818E81C
- adds r0, r4, 0
- adds r0, 0xA
- adds r1, r4, 0
- adds r1, 0xB
- bl sub_818E7E0
- bl sub_818E880
- strb r0, [r4, 0x16]
- adds r0, r4, 0
- bl sub_80ECA10
-_080ED532:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ED4DC
-
- thumb_func_start sub_80ED548
-sub_80ED548: @ 80ED548
- push {r4,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gUnknown_030060BC
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r4, [r2]
- adds r4, r0
- movs r0, 0x1
- strb r0, [r4]
- strb r0, [r4, 0x1]
- adds r0, r4, 0
- adds r0, 0x10
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- bl sub_8139688
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- strh r0, [r4, 0x2]
- adds r0, r4, 0
- bl sub_80ECA10
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x18]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ED548
-
- thumb_func_start sub_80ED5B8
-sub_80ED5B8: @ 80ED5B8
- push {r4,r5,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gUnknown_030060BC
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r4, [r2]
- adds r4, r0
- movs r5, 0
- movs r0, 0x2
- strb r0, [r4]
- movs r0, 0x1
- strb r0, [r4, 0x1]
- adds r0, r4, 0
- adds r0, 0x10
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- strh r5, [r4, 0x2]
- adds r0, r4, 0
- bl sub_80ECA10
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x18]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ED5B8
-
- thumb_func_start sub_80ED610
-sub_80ED610: @ 80ED610
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gUnknown_030060BC
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r5, r1, r0
- movs r0, 0x3
- strb r0, [r5]
- movs r0, 0x1
- mov r8, r0
- mov r1, r8
- strb r1, [r5, 0x1]
- bl sub_8139688
- lsls r0, 24
- lsrs r0, 24
- movs r7, 0x64
- muls r0, r7
- ldr r6, =gPlayerParty
- adds r0, r6
- movs r1, 0x20
- movs r2, 0
- bl GetMonData
- lsrs r0, 4
- movs r1, 0xF
- ands r0, r1
- ldrb r2, [r5, 0x4]
- movs r1, 0x10
- negs r1, r1
- ands r1, r2
- orrs r1, r0
- strb r1, [r5, 0x4]
- ldr r0, =gSpecialVar_0x8007
- ldrb r0, [r0]
- lsls r0, 4
- movs r2, 0xF
- ands r1, r2
- orrs r1, r0
- strb r1, [r5, 0x4]
- adds r0, r5, 0x5
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- bl sub_8139688
- lsls r0, 24
- lsrs r0, 24
- muls r0, r7
- adds r0, r6
- adds r4, r5, 0
- adds r4, 0x10
- movs r1, 0x2
- adds r2, r4, 0
- bl GetMonData
- adds r0, r4, 0
- bl StripExtCtrlCodes
- bl sub_8139688
- lsls r0, 24
- lsrs r0, 24
- muls r0, r7
- adds r0, r6
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- strh r0, [r5, 0x2]
- adds r0, r5, 0
- bl sub_80ECA10
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r5, 0xD]
- cmp r0, 0x1
- beq _080ED6D4
- bl sub_8139688
- lsls r0, 24
- lsrs r0, 24
- muls r0, r7
- adds r0, r6
- movs r1, 0x3
- bl GetMonData
- cmp r0, 0x1
- bne _080ED6F4
-_080ED6D4:
- mov r0, r8
- b _080ED706
- .pool
-_080ED6F4:
- bl sub_8139688
- lsls r0, 24
- lsrs r0, 24
- muls r0, r7
- adds r0, r6
- movs r1, 0x3
- bl GetMonData
-_080ED706:
- strb r0, [r5, 0xE]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80ED610
-
- thumb_func_start TaskDummy5
-TaskDummy5: @ 80ED714
- bx lr
- thumb_func_end TaskDummy5
-
- thumb_func_start sub_80ED718
-sub_80ED718: @ 80ED718
- push {r4-r6,lr}
- ldr r0, =0x00000864
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _080ED7E4
- movs r1, 0
- ldr r0, =gSaveBlock1Ptr
- ldr r2, [r0]
- ldr r3, =0x000027cc
-_080ED72E:
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2, r0
- adds r0, r3
- ldrb r0, [r0]
- cmp r0, 0x29
- beq _080ED7E4
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x17
- bls _080ED72E
- ldr r0, =0x00000147
- bl sub_80EFB38
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _080ED7E4
- ldr r6, =gSaveBlock1Ptr
- ldr r0, [r6]
- ldr r1, =0x000027cc
- adds r0, r1
- bl sub_80EFADC
- ldr r4, =gUnknown_030060BC
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080ED7E4
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x5
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- movs r2, 0
- ldrsb r2, [r4, r2]
- lsls r1, r2, 3
- adds r1, r2
- lsls r1, 2
- ldr r2, =0x000027cc
- adds r1, r2
- ldr r4, [r6]
- adds r4, r1
- movs r1, 0x29
- strb r1, [r4]
- movs r3, 0x1
- strb r3, [r4, 0x1]
- ldr r2, =gUnknown_0858D094
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r0, [r1, 0xA]
- strb r0, [r4, 0x14]
- strb r5, [r4, 0x2]
- strb r5, [r4, 0x3]
- ldrh r0, [r1]
- movs r2, 0
- strh r0, [r4, 0xC]
- strh r5, [r4, 0xE]
- ldrh r0, [r1, 0x2]
- strh r0, [r4, 0x4]
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x6]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x8]
- ldrh r0, [r1, 0x8]
- strh r0, [r4, 0xA]
- ldrb r0, [r1, 0xB]
- strb r0, [r4, 0x10]
- strb r2, [r4, 0x11]
- strb r2, [r4, 0x12]
- movs r0, 0x32
- strb r0, [r4, 0x13]
- strb r2, [r4, 0x15]
- strh r3, [r4, 0x16]
- adds r0, r4, 0
- bl sub_80ECA10
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x18]
-_080ED7E4:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ED718
-
- thumb_func_start EndMassOutbreak
-EndMassOutbreak: @ 80ED808
- push {r4,r5,lr}
- ldr r3, =gSaveBlock1Ptr
- ldr r0, [r3]
- ldr r2, =0x00002b90
- adds r1, r0, r2
- movs r4, 0
- movs r2, 0
- strh r2, [r1]
- ldr r5, =0x00002b92
- adds r0, r5
- strb r4, [r0]
- ldr r0, [r3]
- ldr r1, =0x00002b93
- adds r0, r1
- strb r4, [r0]
- ldr r0, [r3]
- adds r5, 0x2
- adds r0, r5
- strb r4, [r0]
- ldr r0, [r3]
- adds r1, 0x2
- adds r0, r1
- strb r4, [r0]
- ldr r0, [r3]
- adds r5, 0x2
- adds r1, r0, r5
- strh r2, [r1]
- adds r5, 0x2
- adds r1, r0, r5
- strh r2, [r1]
- adds r5, 0x2
- adds r1, r0, r5
- strh r2, [r1]
- adds r5, 0x2
- adds r1, r0, r5
- strh r2, [r1]
- adds r5, 0x2
- adds r1, r0, r5
- strh r2, [r1]
- ldr r1, =0x00002ba0
- adds r0, r1
- strb r4, [r0]
- ldr r0, [r3]
- adds r5, 0x3
- adds r0, r5
- strb r4, [r0]
- ldr r0, [r3]
- adds r1, 0x2
- adds r0, r1
- strh r2, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end EndMassOutbreak
-
- thumb_func_start sub_80ED888
-sub_80ED888: @ 80ED888
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r4, 0
- bl sub_80ED8B4
- adds r0, r4, 0
- bl UpdateMassOutbreakTimeLeft
- adds r0, r4, 0
- bl sub_80EF120
- adds r0, r4, 0
- bl sub_80EDA48
- adds r0, r4, 0
- bl sub_80EEB98
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80ED888
-
- thumb_func_start sub_80ED8B4
-sub_80ED8B4: @ 80ED8B4
- push {r4-r7,lr}
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r1, =gSaveBlock1Ptr
- ldr r0, [r1]
- ldr r2, =0x00002b90
- adds r0, r2
- ldrh r0, [r0]
- mov r12, r1
- cmp r0, 0
- bne _080ED91C
- movs r1, 0
- ldr r6, =0x000027cc
-_080ED8CE:
- mov r7, r12
- ldr r4, [r7]
- lsls r0, r1, 3
- adds r0, r1
- lsls r3, r0, 2
- adds r2, r4, r3
- adds r0, r2, r6
- ldrb r0, [r0]
- cmp r0, 0x29
- bne _080ED912
- ldr r7, =0x000027cd
- adds r0, r2, r7
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080ED912
- adds r0, r3, r6
- adds r1, r4, r0
- ldrh r0, [r1, 0x16]
- cmp r0, r5
- bcs _080ED90C
- movs r0, 0
- strh r0, [r1, 0x16]
- b _080ED91C
- .pool
-_080ED90C:
- subs r0, r5
- strh r0, [r1, 0x16]
- b _080ED91C
-_080ED912:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x17
- bls _080ED8CE
-_080ED91C:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80ED8B4
-
- thumb_func_start UpdateMassOutbreakTimeLeft
-UpdateMassOutbreakTimeLeft: @ 80ED924
- push {lr}
- lsls r0, 16
- lsrs r2, r0, 16
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r3, =0x00002ba2
- adds r1, r0, r3
- ldrh r0, [r1]
- cmp r0, r2
- bhi _080ED948
- bl EndMassOutbreak
- b _080ED94C
- .pool
-_080ED948:
- subs r0, r2
- strh r0, [r1]
-_080ED94C:
- pop {r0}
- bx r0
- thumb_func_end UpdateMassOutbreakTimeLeft
-
- thumb_func_start sub_80ED950
-sub_80ED950: @ 80ED950
- push {r4,lr}
- lsls r0, 24
- cmp r0, 0
- beq _080ED978
- ldr r4, =gUnknown_0203A026
- ldrh r0, [r4]
- lsrs r0, 8
- cmp r0, 0x4
- bls _080ED966
- bl sub_80ED9A8
-_080ED966:
- ldrb r0, [r4]
- strh r0, [r4]
- cmp r0, 0xFF
- beq _080ED99C
- adds r0, 0x1
- b _080ED99A
- .pool
-_080ED978:
- ldr r4, =gUnknown_0203A026
- ldrb r0, [r4]
- cmp r0, 0x4
- bls _080ED984
- bl sub_80ED9A8
-_080ED984:
- ldrh r0, [r4]
- movs r1, 0xFF
- lsls r1, 8
- ands r1, r0
- strh r1, [r4]
- lsrs r0, r1, 8
- cmp r0, 0xFF
- beq _080ED99C
- movs r2, 0x80
- lsls r2, 1
- adds r0, r1, r2
-_080ED99A:
- strh r0, [r4]
-_080ED99C:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ED950
-
- thumb_func_start sub_80ED9A8
-sub_80ED9A8: @ 80ED9A8
- push {r4-r6,lr}
- ldr r6, =gSaveBlock1Ptr
- ldr r0, [r6]
- ldr r5, =0x000027cc
- adds r0, r5
- bl sub_80EFB08
- ldr r4, =gUnknown_030060BC
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EDA18
- movs r0, 0x18
- movs r1, 0
- bl sub_80EF46C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080EDA18
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r4, [r6]
- adds r4, r0
- movs r1, 0
- movs r0, 0x18
- strb r0, [r4]
- strb r1, [r4, 0x1]
- ldr r1, =gUnknown_0203A026
- ldrh r0, [r1]
- strb r0, [r4, 0x2]
- ldrh r0, [r1]
- lsrs r0, 8
- strb r0, [r4, 0x3]
- ldr r0, =gUnknown_0203A024
- ldrh r0, [r0]
- strh r0, [r4, 0x4]
- adds r0, r4, 0
- adds r0, 0x13
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- adds r0, r4, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x6]
-_080EDA18:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80ED9A8
-
- thumb_func_start sub_80EDA3C
-sub_80EDA3C: @ 80EDA3C
- ldr r1, =gUnknown_0203A024
- strh r0, [r1]
- bx lr
- .pool
- thumb_func_end sub_80EDA3C
-
- thumb_func_start sub_80EDA48
-sub_80EDA48: @ 80EDA48
- push {r4,lr}
- ldr r4, =gSaveBlock1Ptr
- ldr r0, [r4]
- ldr r2, =0x00002b2c
- adds r1, r0, r2
- ldrb r0, [r1]
- cmp r0, 0x19
- bne _080EDA6E
- ldrh r0, [r1, 0x2]
- cmp r0, 0x13
- bls _080EDA62
- bl sub_80EDA80
-_080EDA62:
- ldr r0, [r4]
- ldr r1, =0x000027cc
- adds r0, r1
- movs r1, 0x18
- bl sub_80EF910
-_080EDA6E:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EDA48
-
- thumb_func_start sub_80EDA80
-sub_80EDA80: @ 80EDA80
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r7, =gSaveBlock1Ptr
- ldr r0, [r7]
- ldr r1, =0x00002b2c
- adds r5, r0, r1
- ldr r0, =0x0000ffff
- bl sub_80EFB38
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- bne _080EDB1C
- ldr r0, [r7]
- ldr r1, =0x000027cc
- mov r8, r1
- add r0, r8
- bl sub_80EFB08
- ldr r4, =gUnknown_030060BC
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EDB1C
- movs r0, 0x19
- movs r1, 0
- bl sub_80EF46C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080EDB1C
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- add r0, r8
- ldr r4, [r7]
- adds r4, r0
- movs r0, 0x19
- strb r0, [r4]
- strb r6, [r4, 0x1]
- ldrh r0, [r5, 0x2]
- strh r0, [r4, 0x2]
- movs r0, 0x5
- bl GetGameStat
- ldrh r1, [r5, 0x6]
- subs r0, r1
- strh r0, [r4, 0x6]
- ldrh r0, [r5, 0x4]
- strh r0, [r4, 0x4]
- ldrh r0, [r5, 0x8]
- strh r0, [r4, 0x8]
- ldrb r0, [r5, 0xA]
- strb r0, [r4, 0xA]
- adds r0, r4, 0
- adds r0, 0x13
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- adds r0, r4, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0xB]
- ldr r0, [r7]
- add r0, r8
- movs r1, 0x18
- bl sub_80EF910
-_080EDB1C:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EDA80
-
- thumb_func_start sub_80EDB44
-sub_80EDB44: @ 80EDB44
- push {r4-r7,lr}
- movs r0, 0x1A
- movs r1, 0x1
- bl sub_80EF46C
- ldr r4, =gSaveBlock1Ptr
- ldr r0, [r4]
- ldr r1, =0x000027cc
- adds r0, r1
- bl sub_80EFB08
- ldr r2, =gUnknown_030060BC
- strb r0, [r2]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EDC40
- movs r1, 0
- ldrsb r1, [r2, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r2, =0x000027cc
- adds r0, r2
- ldr r1, [r4]
- adds r4, r1, r0
- movs r1, 0
- movs r0, 0x1A
- strb r0, [r4]
- strb r1, [r4, 0x1]
- ldr r6, =0x00000867
- movs r5, 0
-_080EDB88:
- lsls r0, r6, 16
- lsrs r0, 16
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _080EDB9C
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
-_080EDB9C:
- adds r6, 0x1
- ldr r0, =0x0000086e
- cmp r6, r0
- bls _080EDB88
- strb r5, [r4, 0x4]
- bl IsNationalPokedexEnabled
- cmp r0, 0
- beq _080EDBCC
- movs r0, 0x1
- bl pokedex_count
- b _080EDBD2
- .pool
-_080EDBCC:
- movs r0, 0x1
- bl sub_80C0844
-_080EDBD2:
- strh r0, [r4, 0x2]
- ldr r1, =gMapHeader
- ldrb r0, [r1, 0x14]
- strb r0, [r4, 0x7]
- ldrh r0, [r1, 0x12]
- movs r1, 0
- strh r0, [r4, 0xA]
- strb r1, [r4, 0x5]
- strb r1, [r4, 0x6]
- movs r6, 0
- adds r7, r4, 0
- adds r7, 0x13
-_080EDBEA:
- ldr r0, =gUnknown_0858D0DE
- lsls r5, r6, 1
- adds r0, r5, r0
- ldrh r0, [r0]
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080EDC04
- ldrb r0, [r4, 0x5]
- adds r0, 0x1
- strb r0, [r4, 0x5]
-_080EDC04:
- ldr r0, =gUnknown_0858D0D0
- adds r0, r5, r0
- ldrh r0, [r0]
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080EDC1C
- ldrb r0, [r4, 0x6]
- adds r0, 0x1
- strb r0, [r4, 0x6]
-_080EDC1C:
- adds r6, 0x1
- cmp r6, 0x6
- bls _080EDBEA
- ldr r0, =gSaveBlock2Ptr
- ldr r1, [r0]
- ldr r2, =0x00000eb8
- adds r0, r1, r2
- ldrh r0, [r0]
- strh r0, [r4, 0x8]
- adds r0, r7, 0
- bl StringCopy
- adds r0, r4, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0xC]
-_080EDC40:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EDB44
-
- thumb_func_start sub_80EDC60
-sub_80EDC60: @ 80EDC60
- push {r4-r7,lr}
- adds r5, r0, 0
- ldr r7, =gSaveBlock1Ptr
- ldr r0, [r7]
- ldr r6, =0x000027cc
- adds r0, r6
- bl sub_80EFB08
- ldr r4, =gUnknown_030060BC
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EDCCE
- movs r0, 0x1B
- movs r1, 0
- bl sub_80EF46C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080EDCCE
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldr r4, [r7]
- adds r4, r0
- movs r1, 0
- movs r0, 0x1B
- strb r0, [r4]
- strb r1, [r4, 0x1]
- ldr r1, =gSaveBlock2Ptr
- ldr r0, [r1]
- ldrb r0, [r0, 0x8]
- strb r0, [r4, 0x8]
- ldrh r0, [r5]
- strh r0, [r4, 0x4]
- ldrh r0, [r5, 0x2]
- strh r0, [r4, 0x6]
- adds r0, r4, 0
- adds r0, 0x13
- ldr r1, [r1]
- bl StringCopy
- adds r0, r4, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x9]
-_080EDCCE:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EDC60
-
- thumb_func_start sub_80EDCE8
-sub_80EDCE8: @ 80EDCE8
- push {r4-r6,lr}
- ldr r6, =gSaveBlock1Ptr
- ldr r0, [r6]
- ldr r5, =0x000027cc
- adds r0, r5
- bl sub_80EFB08
- ldr r4, =gUnknown_030060BC
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EDD56
- movs r0, 0x1C
- movs r1, 0
- bl sub_80EF46C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080EDD56
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r4, [r6]
- adds r4, r0
- movs r1, 0
- movs r0, 0x1C
- strb r0, [r4]
- strb r1, [r4, 0x1]
- ldr r0, =gSpecialVar_0x8005
- ldrh r0, [r0]
- strh r0, [r4, 0x2]
- ldr r1, =gMapHeader
- ldrb r0, [r1, 0x14]
- strb r0, [r4, 0x4]
- ldrh r0, [r1, 0x12]
- strh r0, [r4, 0x6]
- adds r0, r4, 0
- adds r0, 0x13
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- adds r0, r4, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x5]
-_080EDD56:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EDCE8
-
- thumb_func_start sub_80EDD78
-sub_80EDD78: @ 80EDD78
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x000027cc
- adds r0, r1
- bl sub_80EFB08
- ldr r1, =gUnknown_030060BC
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EDE54
- movs r0, 0x1D
- movs r1, 0
- bl sub_80EF46C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080EDE54
- movs r5, 0
- ldr r0, =gUnknown_0203A02A
- ldrb r1, [r0]
- adds r6, r0, 0
- cmp r1, 0
- beq _080EDDCC
- cmp r1, 0x1
- beq _080EDDEE
- b _080EDE54
- .pool
-_080EDDCC:
- ldr r0, =gUnknown_0203A028
- ldrh r1, [r0]
- adds r0, r1, 0
- adds r0, 0xC8
- cmp r4, r0
- blt _080EDDE4
- movs r5, 0x1
- subs r0, r4, r1
- b _080EDE12
- .pool
-_080EDDE4:
- cmp r1, 0x63
- bls _080EDE54
- adds r0, r1, 0
- subs r0, 0x64
- b _080EDE0C
-_080EDDEE:
- ldr r0, =gUnknown_0203A028
- ldrh r1, [r0]
- adds r0, r1, 0
- adds r0, 0x32
- cmp r4, r0
- blt _080EDE04
- movs r5, 0x1
- subs r0, r4, r1
- b _080EDE12
- .pool
-_080EDE04:
- cmp r1, 0x31
- bls _080EDE54
- adds r0, r1, 0
- subs r0, 0x32
-_080EDE0C:
- cmp r4, r0
- bgt _080EDE54
- subs r0, r1, r4
-_080EDE12:
- lsls r0, 16
- lsrs r3, r0, 16
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gUnknown_030060BC
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r4, [r2]
- adds r4, r0
- movs r1, 0
- movs r0, 0x1D
- strb r0, [r4]
- strb r1, [r4, 0x1]
- strh r3, [r4, 0x4]
- ldrb r0, [r6]
- strb r0, [r4, 0x3]
- strb r5, [r4, 0x2]
- adds r0, r4, 0
- adds r0, 0x13
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- adds r0, r4, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x8]
-_080EDE54:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EDD78
-
- thumb_func_start sub_80EDE70
-sub_80EDE70: @ 80EDE70
- ldr r2, =gUnknown_0203A02A
- movs r1, 0
- strb r1, [r2]
- ldr r1, =gUnknown_0203A028
- strh r0, [r1]
- bx lr
- .pool
- thumb_func_end sub_80EDE70
-
- thumb_func_start sub_80EDE84
-sub_80EDE84: @ 80EDE84
- ldr r2, =gUnknown_0203A02A
- movs r1, 0x1
- strb r1, [r2]
- ldr r1, =gUnknown_0203A028
- strh r0, [r1]
- bx lr
- .pool
- thumb_func_end sub_80EDE84
-
- thumb_func_start sub_80EDE98
-sub_80EDE98: @ 80EDE98
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- mov r8, r0
- movs r3, 0
- ldr r6, =gUnknown_030060D0
- ldr r7, =gSaveBlock1Ptr
- adds r2, r6, 0
- movs r1, 0
-_080EDEAC:
- adds r0, r3, r2
- strb r1, [r0]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0xF
- bls _080EDEAC
- movs r3, 0
- movs r5, 0
-_080EDEBE:
- ldr r0, [r7]
- ldr r1, =0x00001aae
- adds r0, r1
- adds r0, r3
- ldrb r4, [r0]
- adds r3, 0x1
- cmp r4, 0
- beq _080EDF0A
- movs r1, 0
- ldrb r0, [r6]
- cmp r0, 0
- bne _080EDEE8
- strb r4, [r6]
- b _080EDF04
- .pool
-_080EDEE8:
- adds r0, r1, r6
- ldrb r0, [r0]
- cmp r0, r4
- beq _080EDF0A
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xF
- bhi _080EDF0A
- adds r2, r1, r6
- ldrb r0, [r2]
- cmp r0, 0
- bne _080EDEE8
- strb r4, [r2]
-_080EDF04:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
-_080EDF0A:
- lsls r0, r3, 24
- lsrs r3, r0, 24
- cmp r3, 0xF
- bls _080EDEBE
- cmp r5, 0x4
- bls _080EDF1E
- movs r0, 0x4
- mov r1, r8
- strb r0, [r1, 0x3]
- b _080EDF22
-_080EDF1E:
- mov r0, r8
- strb r5, [r0, 0x3]
-_080EDF22:
- mov r1, r8
- ldrb r0, [r1, 0x3]
- cmp r0, 0
- beq _080EDFA4
- cmp r0, 0x1
- bne _080EDF34
- ldrb r0, [r6]
- strb r0, [r1, 0x4]
- b _080EDFA4
-_080EDF34:
- movs r6, 0
- adds r7, r5, 0
- muls r7, r5
- cmp r6, r7
- bge _080EDF7E
- ldr r0, =gUnknown_030060D0
- mov r9, r0
-_080EDF42:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- adds r1, r5, 0
- bl __modsi3
- lsls r0, 24
- lsrs r4, r0, 24
- bl Random
- lsls r0, 16
- lsrs r0, 16
- adds r1, r5, 0
- bl __modsi3
- lsls r0, 24
- lsrs r1, r0, 24
- mov r0, r9
- adds r2, r4, r0
- ldrb r3, [r2]
- add r1, r9
- ldrb r0, [r1]
- strb r0, [r2]
- strb r3, [r1]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, r7
- blt _080EDF42
-_080EDF7E:
- movs r3, 0
- mov r1, r8
- ldrb r1, [r1, 0x3]
- cmp r3, r1
- bcs _080EDFA4
- mov r2, r8
- adds r2, 0x4
- ldr r4, =gUnknown_030060D0
-_080EDF8E:
- adds r1, r2, r3
- adds r0, r3, r4
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- mov r0, r8
- ldrb r0, [r0, 0x3]
- cmp r3, r0
- bcc _080EDF8E
-_080EDFA4:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EDE98
-
- thumb_func_start sub_80EDFB4
-sub_80EDFB4: @ 80EDFB4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- mov r10, r0
- movs r7, 0
- movs r0, 0
- mov r9, r0
- ldr r1, =gUnknown_030060C0
- mov r8, r1
-_080EDFCA:
- movs r0, 0x64
- adds r1, r7, 0
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _080EE094
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _080EE094
- adds r0, r4, 0
- movs r1, 0x38
- bl GetMonData
- ldr r2, =gUnknown_030060E0
- mov r3, r9
- lsls r1, r3, 3
- adds r6, r1, r2
- strb r0, [r6]
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- strh r0, [r6, 0x2]
- movs r5, 0
- adds r0, r4, 0
- movs r1, 0xD
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- beq _080EE020
- mov r0, r8
- strh r1, [r0]
- movs r5, 0x1
-_080EE020:
- adds r0, r4, 0
- movs r1, 0xE
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- beq _080EE03C
- lsls r0, r5, 1
- add r0, r8
- strh r1, [r0]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
-_080EE03C:
- adds r0, r4, 0
- movs r1, 0xF
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- beq _080EE058
- lsls r0, r5, 1
- add r0, r8
- strh r1, [r0]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
-_080EE058:
- adds r0, r4, 0
- movs r1, 0x10
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- beq _080EE074
- lsls r0, r5, 1
- add r0, r8
- strh r1, [r0]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
-_080EE074:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- adds r1, r5, 0
- bl __modsi3
- lsls r0, 1
- add r0, r8
- ldrh r0, [r0]
- strh r0, [r6, 0x4]
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_080EE094:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0x5
- bls _080EDFCA
- movs r7, 0
- movs r1, 0
- cmp r1, r9
- bcs _080EE0BE
- ldr r2, =gUnknown_030060E0
-_080EE0A8:
- lsls r0, r7, 3
- adds r0, r2
- ldrb r0, [r0]
- adds r0, r1, r0
- lsls r0, 16
- lsrs r1, r0, 16
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, r9
- bcc _080EE0A8
-_080EE0BE:
- adds r0, r1, 0
- mov r1, r9
- bl __divsi3
- mov r1, r10
- strb r0, [r1, 0x2]
- bl Random
- lsls r0, 16
- lsrs r0, 16
- mov r1, r9
- bl __modsi3
- lsls r0, 16
- ldr r1, =gUnknown_030060E0
- lsrs r0, 13
- adds r0, r1
- ldrh r1, [r0, 0x2]
- mov r2, r10
- strh r1, [r2, 0x8]
- ldrh r0, [r0, 0x4]
- strh r0, [r2, 0xA]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EDFB4
-
- thumb_func_start sub_80EE104
-sub_80EE104: @ 80EE104
- push {r4,lr}
- movs r0, 0x1F
- movs r1, 0x1
- bl sub_80EF46C
- ldr r4, =gSaveBlock1Ptr
- ldr r0, [r4]
- ldr r1, =0x000027cc
- adds r0, r1
- bl sub_80EFB08
- ldr r2, =gUnknown_030060BC
- strb r0, [r2]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EE168
- movs r1, 0
- ldrsb r1, [r2, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r4, [r4]
- adds r4, r0
- movs r1, 0
- movs r0, 0x1F
- strb r0, [r4]
- strb r1, [r4, 0x1]
- adds r0, r4, 0
- adds r0, 0x13
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- adds r0, r4, 0
- bl sub_80EDE98
- adds r0, r4, 0
- bl sub_80EDFB4
- adds r0, r4, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0xC]
-_080EE168:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EE104
-
- thumb_func_start sub_80EE184
-sub_80EE184: @ 80EE184
- push {r4-r7,lr}
- ldr r6, =gSaveBlock1Ptr
- ldr r0, [r6]
- ldr r5, =0x000027cc
- adds r0, r5
- bl sub_80EFB08
- ldr r4, =gUnknown_030060BC
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _080EE1A4
- b _080EE2C2
-_080EE1A4:
- movs r0, 0x1E
- movs r1, 0
- bl sub_80EF46C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080EE1B6
- b _080EE2C2
-_080EE1B6:
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r1, [r6]
- adds r4, r1, r0
- movs r1, 0
- movs r0, 0x1E
- strb r0, [r4]
- strb r1, [r4, 0x1]
- movs r5, 0
- ldr r6, =gBattleResults
- ldr r3, =gMapHeader
- ldr r7, =gSaveBlock2Ptr
- adds r2, r6, 0
- adds r2, 0x36
-_080EE1DA:
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r0, r5, r0
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xA
- bls _080EE1DA
- ldrb r1, [r6, 0x5]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080EE1FE
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
-_080EE1FE:
- ldrb r0, [r3, 0x14]
- strb r0, [r4, 0x4]
- adds r0, r4, 0
- adds r0, 0x13
- ldr r1, [r7]
- bl StringCopy
- ldrh r0, [r6, 0x6]
- strh r0, [r4, 0xA]
- ldr r0, =gBattleOutcome
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r0, 0x9
- bhi _080EE282
- lsls r0, 2
- ldr r1, =_080EE244
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080EE244:
- .4byte _080EE276
- .4byte _080EE26C
- .4byte _080EE26C
- .4byte _080EE27A
- .4byte _080EE27A
- .4byte _080EE27E
- .4byte _080EE272
- .4byte _080EE27A
- .4byte _080EE282
- .4byte _080EE27E
-_080EE26C:
- movs r0, 0
- strb r0, [r4]
- b _080EE2C2
-_080EE272:
- movs r0, 0
- b _080EE280
-_080EE276:
- movs r0, 0x1
- b _080EE280
-_080EE27A:
- movs r0, 0x2
- b _080EE280
-_080EE27E:
- movs r0, 0x3
-_080EE280:
- strb r0, [r4, 0x5]
-_080EE282:
- ldr r1, =gBattleResults
- ldrh r0, [r1, 0x20]
- strh r0, [r4, 0x2]
- ldrb r0, [r4, 0x5]
- cmp r0, 0x1
- beq _080EE2B2
- cmp r0, 0x1
- bgt _080EE2B6
- cmp r0, 0
- bne _080EE2B6
- ldrb r1, [r1, 0x5]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080EE2A8
- movs r0, 0x1
- b _080EE2AC
- .pool
-_080EE2A8:
- lsls r0, r1, 26
- lsrs r0, 28
-_080EE2AC:
- strh r0, [r4, 0x6]
- strh r5, [r4, 0x8]
- b _080EE2B6
-_080EE2B2:
- ldrh r0, [r1, 0x22]
- strh r0, [r4, 0xC]
-_080EE2B6:
- adds r0, r4, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0xE]
-_080EE2C2:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EE184
-
- thumb_func_start sub_80EE2CC
-sub_80EE2CC: @ 80EE2CC
- push {r4-r6,lr}
- ldr r6, =gSaveBlock1Ptr
- ldr r0, [r6]
- ldr r5, =0x000027cc
- adds r0, r5
- bl sub_80EFB08
- ldr r4, =gUnknown_030060BC
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EE33A
- movs r0, 0x20
- movs r1, 0
- bl sub_80EF46C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080EE33A
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r4, [r6]
- adds r4, r0
- movs r1, 0
- movs r0, 0x20
- strb r0, [r4]
- strb r1, [r4, 0x1]
- adds r0, r4, 0
- adds r0, 0x13
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- ldr r0, =gSpecialVar_0x8004
- ldrb r1, [r0]
- movs r0, 0x4
- subs r0, r1
- strb r0, [r4, 0x4]
- ldr r0, =gSpecialVar_0x8005
- ldrh r0, [r0]
- strh r0, [r4, 0x2]
- adds r0, r4, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x5]
-_080EE33A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EE2CC
-
- thumb_func_start sub_80EE35C
-sub_80EE35C: @ 80EE35C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- adds r7, r3, 0
- ldr r3, [sp, 0x24]
- lsls r0, 16
- lsrs r0, 16
- mov r10, r0
- lsls r1, 16
- lsrs r1, 16
- mov r9, r1
- lsls r2, 24
- lsrs r6, r2, 24
- lsls r3, 16
- lsrs r3, 16
- str r3, [sp]
- ldr r0, =gSaveBlock1Ptr
- mov r8, r0
- ldr r0, [r0]
- ldr r5, =0x000027cc
- adds r0, r5
- bl sub_80EFB08
- ldr r4, =gUnknown_030060BC
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EE426
- movs r0, 0x21
- movs r1, 0
- bl sub_80EF46C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080EE426
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- mov r2, r8
- ldr r1, [r2]
- adds r4, r1, r0
- movs r1, 0
- movs r0, 0x21
- strb r0, [r4]
- strb r1, [r4, 0x1]
- adds r0, r4, 0
- adds r0, 0x13
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- mov r0, r10
- strh r0, [r4, 0x4]
- mov r1, r9
- strh r1, [r4, 0x6]
- lsls r0, r6, 1
- adds r0, r7
- ldrh r0, [r0]
- strh r0, [r4, 0x2]
- movs r2, 0
- movs r3, 0
- adds r5, r4, 0
- adds r5, 0x8
-_080EE3EE:
- cmp r2, r6
- beq _080EE408
- lsls r0, r2, 1
- adds r0, r7
- ldrh r1, [r0]
- cmp r1, 0
- beq _080EE408
- lsls r0, r3, 1
- adds r0, r5, r0
- strh r1, [r0]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
-_080EE408:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x3
- bls _080EE3EE
- strb r3, [r4, 0x10]
- mov r2, sp
- ldrh r2, [r2]
- strh r2, [r4, 0xE]
- adds r0, r4, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x11]
-_080EE426:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EE35C
-
- thumb_func_start sub_80EE44C
-sub_80EE44C: @ 80EE44C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r1, 24
- lsrs r7, r1, 24
- ldr r6, =gSaveBlock1Ptr
- ldr r0, [r6]
- ldr r5, =0x000027cc
- adds r0, r5
- bl sub_80EFB08
- ldr r4, =gUnknown_030060BC
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EE4BE
- movs r0, 0x27
- movs r1, 0
- bl sub_80EF46C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080EE4BE
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r4, [r6]
- adds r4, r0
- movs r1, 0
- movs r0, 0x27
- strb r0, [r4]
- strb r1, [r4, 0x1]
- adds r0, r4, 0
- adds r0, 0x13
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- mov r0, r8
- strb r0, [r4, 0x2]
- strb r7, [r4, 0x3]
- adds r0, r4, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x4]
-_080EE4BE:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EE44C
-
- thumb_func_start sub_80EE4DC
-sub_80EE4DC: @ 80EE4DC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- ldr r7, =gSaveBlock1Ptr
- ldr r0, [r7]
- ldr r5, =0x000027cc
- adds r0, r5
- bl sub_80EFB08
- ldr r4, =gUnknown_030060BC
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EE59A
- movs r0, 0x23
- movs r1, 0
- bl sub_80EF46C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080EE59A
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r1, [r7]
- adds r5, r1, r0
- movs r1, 0
- movs r0, 0x23
- strb r0, [r5]
- strb r1, [r5, 0x1]
- adds r0, r5, 0
- adds r0, 0x13
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- adds r4, r5, 0x4
- adds r0, r6, 0
- movs r1, 0x2
- adds r2, r4, 0
- bl GetMonData
- adds r0, r4, 0
- bl StripExtCtrlCodes
- adds r0, r6, 0
- bl sub_80EE5A4
- strb r0, [r5, 0x2]
- mov r0, r8
- bl sub_80EE69C
- strb r0, [r5, 0x3]
- adds r0, r5, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r5, 0xF]
- cmp r0, 0x1
- beq _080EE578
- adds r0, r6, 0
- movs r1, 0x3
- bl GetMonData
- cmp r0, 0x1
- bne _080EE590
-_080EE578:
- movs r0, 0x1
- b _080EE598
- .pool
-_080EE590:
- adds r0, r6, 0
- movs r1, 0x3
- bl GetMonData
-_080EE598:
- strb r0, [r5, 0x10]
-_080EE59A:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80EE4DC
-
- thumb_func_start sub_80EE5A4
-sub_80EE5A4: @ 80EE5A4
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x32
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x33
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x34
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x35
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x36
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x43
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x44
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x45
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x46
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x47
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x48
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x49
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x4A
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x4B
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x4C
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x4D
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x4E
- bl GetMonData
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80EE5A4
-
- thumb_func_start sub_80EE69C
-sub_80EE69C: @ 80EE69C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x43
- beq _080EE722
- cmp r0, 0x32
- bne _080EE6AE
- movs r0, 0x1
- b _080EE728
-_080EE6AE:
- cmp r0, 0x33
- bne _080EE6B6
- movs r0, 0x5
- b _080EE728
-_080EE6B6:
- cmp r0, 0x34
- bne _080EE6BE
- movs r0, 0x9
- b _080EE728
-_080EE6BE:
- cmp r0, 0x35
- bne _080EE6C6
- movs r0, 0xD
- b _080EE728
-_080EE6C6:
- cmp r0, 0x36
- bne _080EE6CE
- movs r0, 0x11
- b _080EE728
-_080EE6CE:
- cmp r0, 0x44
- bne _080EE6D6
- movs r0, 0x15
- b _080EE728
-_080EE6D6:
- cmp r0, 0x45
- bne _080EE6DE
- movs r0, 0x16
- b _080EE728
-_080EE6DE:
- cmp r0, 0x46
- bne _080EE6E6
- movs r0, 0x17
- b _080EE728
-_080EE6E6:
- cmp r0, 0x47
- bne _080EE6EE
- movs r0, 0x18
- b _080EE728
-_080EE6EE:
- cmp r0, 0x48
- bne _080EE6F6
- movs r0, 0x19
- b _080EE728
-_080EE6F6:
- cmp r0, 0x49
- bne _080EE6FE
- movs r0, 0x1A
- b _080EE728
-_080EE6FE:
- cmp r0, 0x4A
- bne _080EE706
- movs r0, 0x1B
- b _080EE728
-_080EE706:
- cmp r0, 0x4B
- bne _080EE70E
- movs r0, 0x1C
- b _080EE728
-_080EE70E:
- cmp r0, 0x4C
- bne _080EE716
- movs r0, 0x1D
- b _080EE728
-_080EE716:
- cmp r0, 0x4D
- bne _080EE71E
- movs r0, 0x1E
- b _080EE728
-_080EE71E:
- cmp r0, 0x4E
- beq _080EE726
-_080EE722:
- movs r0, 0
- b _080EE728
-_080EE726:
- movs r0, 0x1F
-_080EE728:
- pop {r1}
- bx r1
- thumb_func_end sub_80EE69C
-
- thumb_func_start sub_80EE72C
-sub_80EE72C: @ 80EE72C
- push {r4-r6,lr}
- ldr r5, =gSaveBlock1Ptr
- ldr r0, [r5]
- ldr r6, =0x000027cc
- adds r0, r6
- bl sub_80EFB08
- ldr r4, =gUnknown_030060BC
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EE79C
- movs r0, 0x22
- movs r1, 0
- bl sub_80EF46C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080EE79C
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldr r4, [r5]
- adds r4, r0
- movs r1, 0
- movs r0, 0x22
- strb r0, [r4]
- strb r1, [r4, 0x1]
- adds r0, r4, 0
- adds r0, 0x13
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- ldr r0, [r5]
- ldr r2, =0x00002bb0
- adds r1, r0, r2
- ldrh r1, [r1]
- strh r1, [r4, 0x4]
- ldr r1, =0x00002bb2
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r4, 0x6]
- adds r0, r4, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x8]
-_080EE79C:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EE72C
-
- thumb_func_start sub_80EE7C0
-sub_80EE7C0: @ 80EE7C0
- push {r4,lr}
- ldr r4, =gSaveBlock1Ptr
- ldr r0, [r4]
- ldr r1, =0x000027cc
- adds r0, r1
- bl sub_80EFADC
- ldr r1, =gUnknown_030060BC
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EE810
- movs r0, 0xB
- bl sub_80EF550
- ldr r0, =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0x1
- beq _080EE810
- ldr r0, [r4]
- ldr r1, =0x00003150
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _080EE810
- movs r0, 0
- b _080EE812
- .pool
-_080EE810:
- movs r0, 0x1
-_080EE812:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80EE7C0
-
- thumb_func_start sub_80EE818
-sub_80EE818: @ 80EE818
- push {r4-r7,lr}
- movs r0, 0x24
- movs r1, 0
- bl sub_80EF46C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080EE870
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x000027cc
- adds r7, r0, r1
- bl sub_80F0020
- adds r4, r0, 0
- movs r6, 0x5
- lsrs r5, r4, 8
-_080EE83C:
- lsls r0, r6, 3
- adds r0, r6
- lsls r0, 2
- adds r1, r0, r7
- ldrb r0, [r1]
- cmp r0, 0x24
- bne _080EE866
- movs r3, 0xFF
- adds r0, r4, 0
- ands r0, r3
- adds r2, r1, 0
- adds r2, 0x22
- ldrb r2, [r2]
- cmp r0, r2
- bne _080EE866
- adds r0, r5, 0
- ands r0, r3
- adds r1, 0x23
- ldrb r1, [r1]
- cmp r0, r1
- beq _080EE89C
-_080EE866:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x17
- bls _080EE83C
-_080EE870:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x000027cc
- adds r0, r1
- bl sub_80EFB08
- ldr r1, =gUnknown_030060BC
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EE8C0
- movs r0, 0x1
- b _080EE8C2
- .pool
-_080EE89C:
- ldr r5, =gSaveBlock1Ptr
- ldr r0, [r5]
- ldr r4, =0x000027cc
- adds r0, r4
- adds r1, r6, 0
- bl sub_80EF910
- ldr r0, [r5]
- adds r0, r4
- bl sub_80EF93C
- movs r0, 0x1
- b _080EE8C2
- .pool
-_080EE8C0:
- movs r0, 0
-_080EE8C2:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80EE818
-
- thumb_func_start sub_80EE8C8
-sub_80EE8C8: @ 80EE8C8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r1, 24
- lsrs r4, r1, 24
- ldr r5, =gSaveBlock1Ptr
- ldr r0, [r5]
- ldr r1, =0x000027cc
- adds r0, r1
- bl sub_80EFB08
- ldr r2, =gUnknown_030060BC
- strb r0, [r2]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _080EE8F4
- b _080EEA52
-_080EE8F4:
- movs r1, 0
- ldrsb r1, [r2, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r2, =0x000027cc
- adds r0, r2
- ldr r1, [r5]
- adds r7, r1, r0
- movs r1, 0
- movs r0, 0x24
- strb r0, [r7]
- strb r1, [r7, 0x1]
- adds r0, r7, 0
- adds r0, 0x13
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- strh r6, [r7, 0x2]
- strb r4, [r7, 0xD]
- subs r0, r4, 0x1
- cmp r0, 0xC
- bls _080EE926
- b _080EEA46
-_080EE926:
- lsls r0, 2
- ldr r1, =_080EE944
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080EE944:
- .4byte _080EE978
- .4byte _080EE9A8
- .4byte _080EE9E8
- .4byte _080EEA00
- .4byte _080EE978
- .4byte _080EE978
- .4byte _080EE978
- .4byte _080EE978
- .4byte _080EE978
- .4byte _080EE978
- .4byte _080EE978
- .4byte _080EE978
- .4byte _080EE978
-_080EE978:
- ldr r4, =gPlayerParty
- adds r0, r4, 0
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- strh r0, [r7, 0x4]
- adds r0, r4, 0
- adds r0, 0x64
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- strh r0, [r7, 0x6]
- adds r4, 0xC8
- adds r0, r4, 0
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- strh r0, [r7, 0x8]
- b _080EEA46
- .pool
-_080EE9A8:
- ldr r4, =gPlayerParty
- adds r0, r4, 0
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- strh r0, [r7, 0x4]
- adds r0, r4, 0
- adds r0, 0x64
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- strh r0, [r7, 0x6]
- adds r0, r4, 0
- adds r0, 0xC8
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- strh r0, [r7, 0x8]
- movs r1, 0x96
- lsls r1, 1
- adds r0, r4, r1
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- strh r0, [r7, 0xA]
- b _080EEA46
- .pool
-_080EE9E8:
- ldr r4, =gPlayerParty
- adds r0, r4, 0
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- strh r0, [r7, 0x4]
- adds r4, 0x64
- adds r0, r4, 0
- b _080EEA3C
- .pool
-_080EEA00:
- ldr r2, =gSaveBlock1Ptr
- mov r8, r2
- ldr r6, =gSaveBlock2Ptr
- ldr r0, [r6]
- ldr r1, =0x00000caa
- adds r0, r1
- ldrh r0, [r0]
- movs r5, 0x64
- adds r1, r0, 0
- muls r1, r5
- movs r4, 0xEA
- lsls r4, 1
- adds r1, r4
- ldr r0, [r2]
- adds r0, r1
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- strh r0, [r7, 0x4]
- ldr r0, [r6]
- ldr r2, =0x00000cac
- adds r0, r2
- ldrh r0, [r0]
- adds r1, r0, 0
- muls r1, r5
- adds r1, r4
- mov r2, r8
- ldr r0, [r2]
- adds r0, r1
-_080EEA3C:
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- strh r0, [r7, 0x6]
-_080EEA46:
- adds r0, r7, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r7, 0xC]
-_080EEA52:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EE8C8
-
- thumb_func_start sub_80EEA70
-sub_80EEA70: @ 80EEA70
- push {r4-r7,lr}
- sub sp, 0x20
- movs r0, 0x26
- movs r1, 0
- bl sub_80EF46C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080EEA86
- b _080EEB8C
-_080EEA86:
- ldr r7, =gSaveBlock1Ptr
- ldr r0, [r7]
- ldr r1, =0x000027cc
- adds r0, r1
- bl sub_80EFB08
- ldr r2, =gUnknown_030060BC
- strb r0, [r2]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EEB8C
- movs r1, 0
- ldrsb r1, [r2, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r7]
- adds r5, r1, r0
- movs r1, 0
- movs r0, 0x26
- strb r0, [r5]
- strb r1, [r5, 0x1]
- adds r0, r5, 0
- adds r0, 0x13
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- ldr r0, =0x000040ec
- bl VarGet
- strh r0, [r5, 0x2]
- bl sub_80E980C
- ldr r1, =gStringVar1
- mov r0, sp
- bl StringCopy
- mov r0, sp
- bl StripExtCtrlCodes
- adds r0, r5, 0x4
- mov r1, sp
- bl StringCopy
- ldr r0, =0x000040ed
- bl VarGet
- strh r0, [r5, 0x10]
- ldr r0, =0x000040ee
- bl VarGet
- adds r4, r0, 0
- ldr r0, =0x000040ef
- bl VarGet
- lsls r4, 16
- lsrs r4, 16
- lsls r0, 16
- adds r4, r0
- str r4, [r5, 0xC]
- adds r0, r5, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r5, 0x1B]
- cmp r0, 0x1
- beq _080EEB3A
- ldr r4, [r7]
- ldr r6, =0x00004054
- adds r0, r6, 0
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 5
- adds r4, r1
- ldr r0, =0x00001aa9
- adds r4, r0
- ldrb r0, [r4]
- cmp r0, 0x1
- bne _080EEB70
-_080EEB3A:
- movs r0, 0x1
- b _080EEB8A
- .pool
-_080EEB70:
- adds r0, r6, 0
- bl VarGet
- ldr r2, [r7]
- lsls r0, 16
- lsrs r0, 16
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 5
- adds r2, r1
- ldr r1, =0x00001aa9
- adds r2, r1
- ldrb r0, [r2]
-_080EEB8A:
- strb r0, [r5, 0x1C]
-_080EEB8C:
- add sp, 0x20
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EEA70
-
- thumb_func_start sub_80EEB98
-sub_80EEB98: @ 80EEB98
- push {r4-r7,lr}
- movs r5, 0
- ldr r6, =gUnknown_0858D0EC
- adds r7, r6, 0x2
- b _080EEBAE
- .pool
-_080EEBA8:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
-_080EEBAE:
- cmp r5, 0x6
- bhi _080EEBCE
- lsls r4, r5, 2
- adds r0, r4, r6
- ldrh r0, [r0]
- bl VarGet
- adds r4, r7
- lsls r0, 16
- lsrs r0, 16
- ldrh r4, [r4]
- cmp r0, r4
- bcc _080EEBA8
- adds r0, r5, 0
- bl sub_80EEBF4
-_080EEBCE:
- movs r5, 0
- ldr r4, =gUnknown_0858D0EC
-_080EEBD2:
- lsls r0, r5, 2
- adds r0, r4
- ldrh r0, [r0]
- movs r1, 0
- bl VarSet
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x6
- bls _080EEBD2
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EEB98
-
- thumb_func_start sub_80EEBF4
-sub_80EEBF4: @ 80EEBF4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r0, 0x25
- movs r1, 0x1
- bl sub_80EF46C
- ldr r4, =gSaveBlock1Ptr
- ldr r0, [r4]
- ldr r1, =0x000027cc
- adds r0, r1
- bl sub_80EFB08
- ldr r2, =gUnknown_030060BC
- strb r0, [r2]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EEC60
- movs r1, 0
- ldrsb r1, [r2, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r4, [r4]
- adds r4, r0
- movs r1, 0
- movs r0, 0x25
- strb r0, [r4]
- strb r1, [r4, 0x1]
- adds r0, r4, 0
- adds r0, 0x13
- ldr r1, =gSaveBlock2Ptr
- ldr r1, [r1]
- bl StringCopy
- strb r5, [r4, 0x4]
- ldr r1, =gUnknown_0858D0EC
- lsls r0, r5, 2
- adds r0, r1
- ldrh r0, [r0]
- bl VarGet
- strh r0, [r4, 0x2]
- adds r0, r4, 0
- bl sub_80EC9E8
- ldr r0, =gGameLanguage
- ldrb r0, [r0]
- strb r0, [r4, 0x5]
-_080EEC60:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EEBF4
-
- thumb_func_start sub_80EEC80
-sub_80EEC80: @ 80EEC80
- push {r4,lr}
- ldr r4, =0x000040e6
- adds r0, r4, 0
- bl VarGet
- adds r1, r0, 0
- adds r1, 0x1
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl VarSet
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EEC80
-
- thumb_func_start sub_80EECA4
-sub_80EECA4: @ 80EECA4
- push {r4,lr}
- ldr r4, =0x000040eb
- adds r0, r4, 0
- bl VarGet
- adds r1, r0, 0
- adds r1, 0x1
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl VarSet
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EECA4
-
- thumb_func_start sub_80EECC8
-sub_80EECC8: @ 80EECC8
- push {r4,lr}
- ldr r4, =0x000040e7
- adds r0, r4, 0
- bl VarGet
- adds r1, r0, 0
- adds r1, 0x1
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl VarSet
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EECC8
-
- thumb_func_start sub_80EECEC
-sub_80EECEC: @ 80EECEC
- push {r4,lr}
- ldr r4, =0x000040e8
- adds r0, r4, 0
- bl VarGet
- adds r1, r0, 0
- adds r1, 0x1
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl VarSet
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EECEC
-
- thumb_func_start sub_80EED10
-sub_80EED10: @ 80EED10
- push {r4,lr}
- ldr r4, =0x000040e9
- adds r0, r4, 0
- bl VarGet
- adds r1, r0, 0
- adds r1, 0x1
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl VarSet
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EED10
-
- thumb_func_start sub_80EED34
-sub_80EED34: @ 80EED34
- push {r4,lr}
- ldr r4, =0x000040ea
- adds r0, r4, 0
- bl VarGet
- adds r1, r0, 0
- ldr r0, =gSpecialVar_0x8006
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl VarSet
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EED34
-
- thumb_func_start sub_80EED60
-sub_80EED60: @ 80EED60
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldr r5, =0x000040f1
- adds r0, r5, 0
- bl VarGet
- adds r4, r0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- adds r1, r4, 0
- bl VarSet
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EED60
-
- thumb_func_start sub_80EED88
-sub_80EED88: @ 80EED88
- push {r4-r7,lr}
- ldr r0, =0x00000864
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _080EEE0C
- ldr r6, =gSaveBlock1Ptr
- ldr r0, [r6]
- ldr r7, =0x00002b50
- adds r0, r7
- bl sub_80EEE30
- ldr r5, =gUnknown_030060BC
- strb r0, [r5]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080EEE0C
- ldr r0, =0x0000028f
- bl sub_80EFB38
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080EEE0C
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- ands r0, r1
- adds r4, r0, 0x1
- adds r0, r4, 0
- bl sub_80EF0E4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080EEE0C
- ldr r1, [r6]
- movs r0, 0
- ldrsb r0, [r5, r0]
- lsls r0, 2
- adds r1, r0
- adds r1, r7
- strb r4, [r1]
- ldr r2, [r6]
- movs r0, 0
- ldrsb r0, [r5, r0]
- lsls r0, 2
- adds r0, r2, r0
- ldr r1, =0x00002b52
- adds r0, r1
- movs r1, 0x4
- strh r1, [r0]
- movs r0, 0
- ldrsb r0, [r5, r0]
- lsls r0, 2
- adds r2, r0
- ldr r0, =0x00002b51
- adds r2, r0
- movs r0, 0x1
- strb r0, [r2]
-_080EEE0C:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EED88
-
- thumb_func_start sub_80EEE30
-sub_80EEE30: @ 80EEE30
- push {lr}
- adds r2, r0, 0
- movs r1, 0
-_080EEE36:
- lsls r0, r1, 24
- asrs r1, r0, 24
- lsls r0, r1, 2
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _080EEE48
- adds r0, r1, 0
- b _080EEE58
-_080EEE48:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- asrs r0, 24
- cmp r0, 0xF
- ble _080EEE36
- movs r0, 0x1
- negs r0, r0
-_080EEE58:
- pop {r1}
- bx r1
- thumb_func_end sub_80EEE30
-
- thumb_func_start sub_80EEE5C
-sub_80EEE5C: @ 80EEE5C
- push {r4,lr}
- movs r4, 0
-_080EEE60:
- adds r0, r4, 0
- bl sub_80EEE78
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xF
- bls _080EEE60
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80EEE5C
-
- thumb_func_start sub_80EEE78
-sub_80EEE78: @ 80EEE78
- push {r4,lr}
- lsls r0, 24
- ldr r3, =gSaveBlock1Ptr
- ldr r1, [r3]
- lsrs r0, 22
- adds r1, r0
- ldr r2, =0x00002b50
- adds r1, r2
- movs r2, 0
- strb r2, [r1]
- ldr r1, [r3]
- adds r1, r0
- ldr r4, =0x00002b51
- adds r1, r4
- strb r2, [r1]
- ldr r1, [r3]
- adds r1, r0
- ldr r0, =0x00002b52
- adds r1, r0
- strh r2, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EEE78
-
- thumb_func_start sub_80EEEB8
-sub_80EEEB8: @ 80EEEB8
- push {r4-r7,lr}
- movs r2, 0
- ldr r6, =gSaveBlock1Ptr
-_080EEEBE:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- lsls r1, r2, 2
- adds r0, r1
- ldr r3, =0x00002b50
- adds r0, r3
- ldrb r0, [r0]
- adds r5, r2, 0x1
- cmp r0, 0
- bne _080EEF12
- lsls r0, r5, 24
- b _080EEF0C
- .pool
-_080EEEE0:
- ldr r3, [r6]
- lsls r4, r2, 2
- adds r0, r3, r4
- ldr r7, =0x00002b50
- adds r0, r7
- ldrb r0, [r0]
- cmp r0, 0
- beq _080EEF08
- adds r0, r3, r7
- adds r1, r0, r1
- adds r0, r4
- ldr r0, [r0]
- str r0, [r1]
- adds r0, r2, 0
- bl sub_80EEE78
- b _080EEF12
- .pool
-_080EEF08:
- adds r0, r2, 0x1
- lsls r0, 24
-_080EEF0C:
- lsrs r2, r0, 24
- cmp r2, 0xF
- bls _080EEEE0
-_080EEF12:
- lsls r0, r5, 24
- lsrs r2, r0, 24
- cmp r2, 0xE
- bls _080EEEBE
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80EEEB8
-
- thumb_func_start sub_80EEF20
-sub_80EEF20: @ 80EEF20
- push {r4,lr}
- movs r2, 0
- ldr r0, =gSaveBlock1Ptr
- ldr r3, [r0]
-_080EEF28:
- lsls r0, r2, 2
- adds r1, r3, r0
- ldr r4, =0x00002b50
- adds r0, r1, r4
- ldrb r0, [r0]
- cmp r0, 0
- beq _080EEF58
- adds r4, 0x1
- adds r0, r1, r4
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080EEF58
- adds r4, 0x1
- adds r0, r1, r4
- ldrh r0, [r0]
- cmp r0, 0x2
- bhi _080EEF58
- adds r0, r2, 0
- b _080EEF64
- .pool
-_080EEF58:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xF
- bls _080EEF28
- movs r0, 0xFF
-_080EEF64:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80EEF20
-
- thumb_func_start sub_80EEF6C
-sub_80EEF6C: @ 80EEF6C
- push {r4,r5,lr}
- bl sub_80EEF20
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- bne _080EEF84
- ldr r1, =gScriptResult
- movs r0, 0
- b _080EF01A
- .pool
-_080EEF84:
- ldr r5, =gSaveBlock1Ptr
- ldr r0, [r5]
- lsls r4, r2, 2
- adds r1, r0, r4
- ldr r0, =0x00002b52
- adds r2, r1, r0
- ldrh r0, [r2]
- cmp r0, 0
- bne _080EEFE8
- ldr r2, =0x00002b51
- adds r1, r2
- movs r0, 0x2
- strb r0, [r1]
- ldr r0, =gLocalTime
- ldrb r0, [r0, 0x2]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x13
- bgt _080EEFC8
- ldr r1, =gUnknown_0858D11C
- ldr r0, [r5]
- adds r0, r4
- subs r2, 0x1
- b _080EEFD0
- .pool
-_080EEFC8:
- ldr r1, =gUnknown_0858D130
- ldr r0, [r5]
- adds r0, r4
- ldr r2, =0x00002b50
-_080EEFD0:
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl box_related_two__2
- b _080EF016
- .pool
-_080EEFE8:
- ldrh r1, [r2]
- ldr r0, =gStringVar1
- movs r2, 0
- movs r3, 0x1
- bl ConvertIntToDecimalStringN
- ldr r0, [r5]
- adds r0, r4
- ldr r1, =0x00002b51
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- ldr r1, =gUnknown_0858D108
- ldr r0, [r5]
- adds r0, r4
- ldr r2, =0x00002b50
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl box_related_two__2
-_080EF016:
- ldr r1, =gScriptResult
- movs r0, 0x1
-_080EF01A:
- strh r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EEF6C
-
- thumb_func_start GetPriceReduction
-GetPriceReduction: @ 80EF038
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0
- bne _080EF048
- b _080EF08A
-_080EF044:
- movs r0, 0x1
- b _080EF08C
-_080EF048:
- movs r2, 0
- ldr r4, =gSaveBlock1Ptr
-_080EF04C:
- ldr r1, [r4]
- lsls r0, r2, 2
- adds r1, r0
- ldr r5, =0x00002b50
- adds r0, r1, r5
- ldrb r0, [r0]
- cmp r0, r3
- bne _080EF080
- ldr r2, =0x00002b51
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _080EF08A
- adds r0, r3, 0
- bl IsPriceDiscounted
- lsls r0, 24
- cmp r0, 0
- bne _080EF044
- b _080EF08A
- .pool
-_080EF080:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xF
- bls _080EF04C
-_080EF08A:
- movs r0, 0
-_080EF08C:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end GetPriceReduction
-
- thumb_func_start IsPriceDiscounted
-IsPriceDiscounted: @ 80EF094
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080EF0A6
- cmp r0, 0x3
- beq _080EF0C8
-_080EF0A2:
- movs r0, 0x1
- b _080EF0D6
-_080EF0A6:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrh r1, [r0, 0x4]
- movs r0, 0x80
- lsls r0, 1
- cmp r1, r0
- bne _080EF0D4
- ldr r0, =gScriptLastTalked
- ldrh r0, [r0]
- cmp r0, 0x19
- beq _080EF0A2
- b _080EF0D4
- .pool
-_080EF0C8:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrh r1, [r0, 0x4]
- ldr r0, =0x0000150d
- cmp r1, r0
- beq _080EF0A2
-_080EF0D4:
- movs r0, 0
-_080EF0D6:
- pop {r1}
- bx r1
- .pool
- thumb_func_end IsPriceDiscounted
-
- thumb_func_start sub_80EF0E4
-sub_80EF0E4: @ 80EF0E4
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- bne _080EF0F2
-_080EF0EE:
- movs r0, 0x1
- b _080EF112
-_080EF0F2:
- movs r1, 0
- ldr r0, =gSaveBlock1Ptr
- ldr r3, [r0]
- ldr r4, =0x00002b50
-_080EF0FA:
- lsls r0, r1, 2
- adds r0, r3, r0
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, r2
- beq _080EF0EE
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xF
- bls _080EF0FA
- movs r0, 0
-_080EF112:
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80EF0E4
-
- thumb_func_start sub_80EF120
-sub_80EF120: @ 80EF120
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 16
- lsrs r7, r0, 16
- movs r6, 0
- ldr r0, =gSaveBlock1Ptr
- mov r8, r0
-_080EF130:
- mov r1, r8
- ldr r0, [r1]
- lsls r1, r6, 2
- adds r2, r0, r1
- ldr r3, =0x00002b50
- adds r0, r2, r3
- ldrb r0, [r0]
- adds r4, r1, 0
- cmp r0, 0
- beq _080EF196
- ldr r1, =0x00002b52
- adds r0, r2, r1
- ldrh r0, [r0]
- cmp r0, r7
- bcs _080EF164
- adds r0, r6, 0
- bl sub_80EEE78
- b _080EF196
- .pool
-_080EF164:
- ldr r5, =0x00002b51
- adds r0, r2, r5
- ldrb r0, [r0]
- cmp r0, 0
- bne _080EF186
- ldr r0, =0x00000864
- bl FlagGet
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x1
- bne _080EF186
- mov r2, r8
- ldr r0, [r2]
- adds r0, r4
- adds r0, r5
- strb r1, [r0]
-_080EF186:
- mov r3, r8
- ldr r1, [r3]
- adds r1, r4
- ldr r0, =0x00002b52
- adds r1, r0
- ldrh r0, [r1]
- subs r0, r7
- strh r0, [r1]
-_080EF196:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0xF
- bls _080EF130
- bl sub_80EEEB8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EF120
-
- thumb_func_start sub_80EF1BC
-sub_80EF1BC: @ 80EF1BC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- adds r2, r1, 0
- cmp r1, 0x1
- beq _080EF1FC
- cmp r1, 0x1
- bgt _080EF1D6
- cmp r1, 0
- beq _080EF1E0
- b _080EF244
-_080EF1D6:
- cmp r2, 0x2
- beq _080EF218
- cmp r2, 0x3
- beq _080EF234
- b _080EF244
-_080EF1E0:
- ldr r1, =gUnknown_0858D144
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =gUnknown_0858BAF0
- ldr r1, [r1, 0x14]
- bl StringCopy
- b _080EF244
- .pool
-_080EF1FC:
- ldr r1, =gUnknown_0858D144
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =gUnknown_0858BAF0
- ldr r1, [r1, 0x18]
- bl StringCopy
- b _080EF244
- .pool
-_080EF218:
- ldr r1, =gUnknown_0858D144
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =gUnknown_0858BAF0
- ldr r1, [r1, 0x1C]
- bl StringCopy
- b _080EF244
- .pool
-_080EF234:
- ldr r1, =gUnknown_0858D144
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =gUnknown_0858BAF0
- ldr r1, [r1, 0x20]
- bl StringCopy
-_080EF244:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EF1BC
-
- thumb_func_start CopyContestCategoryToStringVar
-@ void CopyContestCategoryToStringVar(u8 stringVarIndex, u8 contestCategoryId)
-CopyContestCategoryToStringVar: @ 80EF250
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 24
- lsrs r0, r1, 24
- cmp r0, 0x4
- bhi _080EF300
- lsls r0, 2
- ldr r1, =_080EF26C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080EF26C:
- .4byte _080EF280
- .4byte _080EF29C
- .4byte _080EF2B8
- .4byte _080EF2D4
- .4byte _080EF2F0
-_080EF280:
- ldr r1, =gUnknown_0858D144
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =gUnknown_0858BAF0
- ldr r1, [r1]
- bl StringCopy
- b _080EF300
- .pool
-_080EF29C:
- ldr r1, =gUnknown_0858D144
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =gUnknown_0858BAF0
- ldr r1, [r1, 0x4]
- bl StringCopy
- b _080EF300
- .pool
-_080EF2B8:
- ldr r1, =gUnknown_0858D144
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =gUnknown_0858BAF0
- ldr r1, [r1, 0x8]
- bl StringCopy
- b _080EF300
- .pool
-_080EF2D4:
- ldr r1, =gUnknown_0858D144
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =gUnknown_0858BAF0
- ldr r1, [r1, 0xC]
- bl StringCopy
- b _080EF300
- .pool
-_080EF2F0:
- ldr r1, =gUnknown_0858D144
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, =gUnknown_0858BAF0
- ldr r1, [r1, 0x10]
- bl StringCopy
-_080EF300:
- pop {r0}
- bx r0
- .pool
- thumb_func_end CopyContestCategoryToStringVar
-
- thumb_func_start SetContestCategoryStringVarForInterview
-@ void SetContestCategoryStringVarForInterview()
-SetContestCategoryStringVarForInterview: @ 80EF30C
- push {lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r1, r0
- ldrb r1, [r1, 0x13]
- lsls r1, 29
- lsrs r1, 29
- movs r0, 0x1
- bl CopyContestCategoryToStringVar
- pop {r0}
- bx r0
- .pool
- thumb_func_end SetContestCategoryStringVarForInterview
-
- thumb_func_start sub_80EF340
-sub_80EF340: @ 80EF340
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- bl sub_80EF370
- adds r3, r0, 0
- ldr r0, =gUnknown_0858D144
- lsls r4, 2
- adds r4, r0
- ldr r0, [r4]
- lsls r3, 24
- lsrs r3, 24
- adds r1, r5, 0
- movs r2, 0
- bl ConvertIntToDecimalStringN
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EF340
-
- thumb_func_start sub_80EF370
-sub_80EF370: @ 80EF370
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0xA
- bl __divsi3
- cmp r0, 0
- beq _080EF3FC
- adds r0, r4, 0
- movs r1, 0x64
- bl __divsi3
- cmp r0, 0
- bne _080EF38E
- movs r0, 0x2
- b _080EF406
-_080EF38E:
- movs r1, 0xFA
- lsls r1, 2
- adds r0, r4, 0
- bl __divsi3
- cmp r0, 0
- bne _080EF3A0
- movs r0, 0x3
- b _080EF406
-_080EF3A0:
- ldr r1, =0x00002710
- adds r0, r4, 0
- bl __divsi3
- cmp r0, 0
- bne _080EF3B4
- movs r0, 0x4
- b _080EF406
- .pool
-_080EF3B4:
- ldr r1, =0x000186a0
- adds r0, r4, 0
- bl __divsi3
- cmp r0, 0
- bne _080EF3C8
- movs r0, 0x5
- b _080EF406
- .pool
-_080EF3C8:
- ldr r1, =0x000f4240
- adds r0, r4, 0
- bl __divsi3
- cmp r0, 0
- bne _080EF3DC
- movs r0, 0x6
- b _080EF406
- .pool
-_080EF3DC:
- ldr r1, =0x00989680
- adds r0, r4, 0
- bl __divsi3
- cmp r0, 0
- bne _080EF3F0
- movs r0, 0x7
- b _080EF406
- .pool
-_080EF3F0:
- ldr r1, =0x05f5e100
- adds r0, r4, 0
- bl __divsi3
- cmp r0, 0
- beq _080EF404
-_080EF3FC:
- movs r0, 0x1
- b _080EF406
- .pool
-_080EF404:
- movs r0, 0x8
-_080EF406:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80EF370
-
- thumb_func_start sub_80EF40C
-sub_80EF40C: @ 80EF40C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r1, 0
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r7, 0
- movs r5, 0
-_080EF41E:
- lsls r4, r5, 1
- adds r0, r6, 0x6
- adds r1, r0, r4
- ldrh r0, [r1]
- cmp r0, 0
- beq _080EF43E
- bl itemid_get_market_price
- lsls r0, 16
- lsrs r0, 16
- adds r1, r6, 0
- adds r1, 0xC
- adds r1, r4
- ldrh r1, [r1]
- muls r0, r1
- adds r7, r0
-_080EF43E:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x2
- bls _080EF41E
- ldrb r0, [r6, 0x2]
- cmp r0, 0x1
- bne _080EF458
- asrs r1, r7, 1
- mov r0, r8
- bl sub_80EF340
- b _080EF460
-_080EF458:
- mov r0, r8
- adds r1, r7, 0
- bl sub_80EF340
-_080EF460:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80EF40C
-
- thumb_func_start sub_80EF46C
-sub_80EF46C: @ 80EF46C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- ldr r5, =gSaveBlock1Ptr
- ldr r0, [r5]
- ldr r4, =0x000027cc
- adds r0, r4
- mov r8, r0
- bl sub_80F0020
- adds r7, r0, 0
- movs r6, 0x5
-_080EF494:
- lsls r0, r6, 3
- adds r0, r6
- lsls r0, 2
- mov r2, r8
- adds r1, r0, r2
- ldrb r0, [r1]
- cmp r0, r10
- bne _080EF4E4
- movs r3, 0xFF
- adds r0, r7, 0
- ands r0, r3
- adds r2, r1, 0
- adds r2, 0x22
- ldrb r2, [r2]
- cmp r0, r2
- bne _080EF4E4
- lsrs r0, r7, 8
- ands r0, r3
- adds r1, 0x23
- ldrb r1, [r1]
- cmp r0, r1
- bne _080EF4E4
- mov r0, r9
- cmp r0, 0x1
- bne _080EF4D8
- ldr r0, [r5]
- adds r0, r4
- adds r1, r6, 0
- bl sub_80EF910
- ldr r0, [r5]
- adds r0, r4
- bl sub_80EF93C
-_080EF4D8:
- movs r0, 0x1
- b _080EF4F0
- .pool
-_080EF4E4:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x17
- bls _080EF494
- movs r0, 0
-_080EF4F0:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80EF46C
-
- thumb_func_start sub_80EF500
-sub_80EF500: @ 80EF500
- push {r4-r7,lr}
- movs r2, 0
-_080EF504:
- adds r1, r2, 0x1
- lsls r0, r1, 24
- lsrs r5, r0, 24
- adds r7, r1, 0
- cmp r5, 0x2
- bhi _080EF53C
- ldr r6, =gUnknown_02039F80
- lsls r0, r2, 2
- adds r4, r0, r6
-_080EF516:
- lsls r0, r5, 2
- adds r3, r0, r6
- ldrh r0, [r4, 0x2]
- ldrh r1, [r3, 0x2]
- cmp r0, r1
- bcs _080EF532
- ldrh r1, [r4]
- adds r2, r0, 0
- ldrh r0, [r3]
- strh r0, [r4]
- ldrh r0, [r3, 0x2]
- strh r0, [r4, 0x2]
- strh r1, [r3]
- strh r2, [r3, 0x2]
-_080EF532:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x2
- bls _080EF516
-_080EF53C:
- lsls r0, r7, 24
- lsrs r2, r0, 24
- cmp r2, 0x1
- bls _080EF504
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EF500
-
- thumb_func_start sub_80EF550
-sub_80EF550: @ 80EF550
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r1, 0
- ldr r5, =gSaveBlock1Ptr
- ldr r4, =0x000027cc
-_080EF55C:
- ldr r3, [r5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r2, r3, r0
- adds r0, r2, r4
- ldrb r0, [r0]
- cmp r0, r6
- bne _080EF5A4
- ldr r6, =0x000027cd
- adds r0, r2, r6
- ldrb r2, [r0]
- cmp r2, 0x1
- bne _080EF590
- ldr r0, =gScriptResult
- strh r2, [r0]
- b _080EF5B2
- .pool
-_080EF590:
- adds r0, r3, r4
- bl sub_80EF910
- ldr r0, [r5]
- adds r0, r4
- bl sub_80EF93C
- bl sub_80EFA88
- b _080EF5B2
-_080EF5A4:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x4
- bls _080EF55C
- bl sub_80EFA88
-_080EF5B2:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80EF550
-
- thumb_func_start InterviewBefore
-InterviewBefore: @ 80EF5B8
- push {lr}
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gSpecialVar_0x8005
- ldrh r0, [r0]
- subs r0, 0x1
- cmp r0, 0xA
- bhi _080EF646
- lsls r0, 2
- ldr r1, =_080EF5E0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080EF5E0:
- .4byte _080EF60C
- .4byte _080EF612
- .4byte _080EF618
- .4byte _080EF61E
- .4byte _080EF624
- .4byte _080EF62A
- .4byte _080EF630
- .4byte _080EF636
- .4byte _080EF63C
- .4byte _080EF646
- .4byte _080EF642
-_080EF60C:
- bl sub_80EF64C
- b _080EF646
-_080EF612:
- bl sub_80EF6C4
- b _080EF646
-_080EF618:
- bl sub_80EF704
- b _080EF646
-_080EF61E:
- bl sub_80EF79C
- b _080EF646
-_080EF624:
- bl sub_80EF7A8
- b _080EF646
-_080EF62A:
- bl sub_80EF7B4
- b _080EF646
-_080EF630:
- bl sub_80EF80C
- b _080EF646
-_080EF636:
- bl sub_80EF7F4
- b _080EF646
-_080EF63C:
- bl sub_80EF800
- b _080EF646
-_080EF642:
- bl sub_80EF84C
-_080EF646:
- pop {r0}
- bx r0
- thumb_func_end InterviewBefore
-
- thumb_func_start sub_80EF64C
-sub_80EF64C: @ 80EF64C
- push {r4,lr}
- movs r0, 0x1
- bl sub_80EF550
- ldr r0, =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0
- bne _080EF6A0
- ldr r4, =gStringVar1
- bl sub_8139688
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- movs r1, 0xB
- muls r1, r0
- ldr r0, =gSpeciesNames
- adds r1, r0
- adds r0, r4, 0
- bl StringCopy
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gUnknown_030060BC
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, [r2]
- adds r0, r1
- ldr r1, =0x000027d0
- adds r0, r1
- movs r1, 0x6
- bl sub_811F88C
-_080EF6A0:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EF64C
-
- thumb_func_start sub_80EF6C4
-sub_80EF6C4: @ 80EF6C4
- push {lr}
- movs r0, 0x2
- bl sub_80EF550
- ldr r0, =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0
- bne _080EF6F0
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gUnknown_030060BC
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, [r2]
- adds r0, r1
- ldr r1, =0x000027d0
- adds r0, r1
- movs r1, 0x6
- bl sub_811F88C
-_080EF6F0:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EF6C4
-
- thumb_func_start sub_80EF704
-sub_80EF704: @ 80EF704
- push {r4-r6,lr}
- movs r0, 0x3
- bl sub_80EF550
- ldr r0, =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0
- bne _080EF774
- ldr r6, =gStringVar1
- bl sub_8139688
- lsls r0, 24
- lsrs r0, 24
- movs r5, 0x64
- muls r0, r5
- ldr r4, =gPlayerParty
- adds r0, r4
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- movs r1, 0xB
- muls r1, r0
- ldr r0, =gSpeciesNames
- adds r1, r0
- adds r0, r6, 0
- bl StringCopy
- bl sub_8139688
- lsls r0, 24
- lsrs r0, 24
- muls r0, r5
- adds r0, r4
- ldr r4, =gStringVar2
- movs r1, 0x2
- adds r2, r4, 0
- bl GetMonData
- adds r0, r4, 0
- bl StringGetEnd10
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gUnknown_030060BC
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, [r2]
- adds r0, r1
- ldr r1, =0x000027e8
- adds r0, r1
- movs r1, 0x2
- bl sub_811F88C
-_080EF774:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EF704
-
- thumb_func_start sub_80EF79C
-sub_80EF79C: @ 80EF79C
- ldr r1, =gScriptResult
- movs r0, 0x1
- strh r0, [r1]
- bx lr
- .pool
- thumb_func_end sub_80EF79C
-
- thumb_func_start sub_80EF7A8
-sub_80EF7A8: @ 80EF7A8
- push {lr}
- movs r0, 0x5
- bl sub_80EF550
- pop {r0}
- bx r0
- thumb_func_end sub_80EF7A8
-
- thumb_func_start sub_80EF7B4
-sub_80EF7B4: @ 80EF7B4
- push {lr}
- movs r0, 0x6
- bl sub_80EF550
- ldr r0, =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0
- bne _080EF7E0
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gUnknown_030060BC
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, [r2]
- adds r0, r1
- ldr r1, =0x000027d0
- adds r0, r1
- movs r1, 0x2
- bl sub_811F88C
-_080EF7E0:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EF7B4
-
- thumb_func_start sub_80EF7F4
-sub_80EF7F4: @ 80EF7F4
- push {lr}
- movs r0, 0x8
- bl sub_80EF550
- pop {r0}
- bx r0
- thumb_func_end sub_80EF7F4
-
- thumb_func_start sub_80EF800
-sub_80EF800: @ 80EF800
- push {lr}
- movs r0, 0x9
- bl sub_80EF550
- pop {r0}
- bx r0
- thumb_func_end sub_80EF800
-
- thumb_func_start sub_80EF80C
-sub_80EF80C: @ 80EF80C
- push {lr}
- movs r0, 0x7
- bl sub_80EF550
- ldr r0, =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0
- bne _080EF838
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gUnknown_030060BC
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, [r2]
- adds r0, r1
- ldr r1, =0x000027e4
- adds r0, r1
- movs r1, 0x1
- bl sub_811F88C
-_080EF838:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EF80C
-
- thumb_func_start sub_80EF84C
-sub_80EF84C: @ 80EF84C
- push {lr}
- movs r0, 0xB
- bl sub_80EF550
- ldr r0, =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0
- bne _080EF878
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gUnknown_030060BC
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, [r2]
- adds r0, r1
- ldr r1, =0x000027e0
- adds r0, r1
- movs r1, 0x1
- bl sub_811F88C
-_080EF878:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EF84C
-
- thumb_func_start sub_80EF88C
-sub_80EF88C: @ 80EF88C
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r1, r0
- ldr r0, =gPlayerParty
- adds r5, r1, r0
- ldr r6, =gStringVar1
- adds r0, r5, 0
- movs r1, 0x2
- adds r2, r6, 0
- bl GetMonData
- mov r4, sp
- adds r0, r5, 0
- movs r1, 0x3
- mov r2, sp
- bl GetMonData
- strb r0, [r4]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _080EF8EC
- adds r0, r5, 0
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- movs r1, 0xB
- muls r0, r1
- ldr r1, =gSpeciesNames
- adds r0, r1
- adds r1, r6, 0
- bl StringCompare
- cmp r0, 0
- bne _080EF8EC
- movs r0, 0
- b _080EF8EE
- .pool
-_080EF8EC:
- movs r0, 0x1
-_080EF8EE:
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80EF88C
-
- thumb_func_start sub_80EF8F8
-sub_80EF8F8: @ 80EF8F8
- push {lr}
- bl sub_8139688
- lsls r0, 24
- lsrs r0, 24
- bl sub_80EF88C
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_80EF8F8
-
- thumb_func_start sub_80EF910
-sub_80EF910: @ 80EF910
- push {lr}
- lsls r1, 24
- lsrs r1, 24
- lsls r2, r1, 3
- adds r2, r1
- lsls r2, 2
- adds r2, r0
- movs r0, 0
- strb r0, [r2]
- strb r0, [r2, 0x1]
- movs r1, 0
- adds r2, 0x2
- movs r3, 0
-_080EF92A:
- adds r0, r2, r1
- strb r3, [r0]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x21
- bls _080EF92A
- pop {r0}
- bx r0
- thumb_func_end sub_80EF910
-
- thumb_func_start sub_80EF93C
-sub_80EF93C: @ 80EF93C
- push {r4-r7,lr}
- adds r4, r0, 0
- movs r5, 0
-_080EF942:
- lsls r0, r5, 3
- adds r0, r5
- lsls r1, r0, 2
- adds r0, r1, r4
- ldrb r0, [r0]
- cmp r0, 0
- bne _080EF986
- adds r0, r5, 0x1
- b _080EF97E
-_080EF954:
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- adds r3, r0, r4
- ldrb r0, [r3]
- cmp r0, 0
- beq _080EF97C
- adds r1, r4
- adds r0, r3, 0
- ldm r0!, {r3,r6,r7}
- stm r1!, {r3,r6,r7}
- ldm r0!, {r3,r6,r7}
- stm r1!, {r3,r6,r7}
- ldm r0!, {r3,r6,r7}
- stm r1!, {r3,r6,r7}
- adds r0, r4, 0
- adds r1, r2, 0
- bl sub_80EF910
- b _080EF986
-_080EF97C:
- adds r0, r2, 0x1
-_080EF97E:
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x4
- bls _080EF954
-_080EF986:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x3
- bls _080EF942
- movs r5, 0x5
-_080EF992:
- lsls r0, r5, 3
- adds r0, r5
- lsls r1, r0, 2
- adds r0, r1, r4
- ldrb r0, [r0]
- adds r5, 0x1
- cmp r0, 0
- bne _080EF9D8
- lsls r0, r5, 24
- b _080EF9D2
-_080EF9A6:
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- adds r3, r0, r4
- ldrb r0, [r3]
- cmp r0, 0
- beq _080EF9CE
- adds r1, r4
- adds r0, r3, 0
- ldm r0!, {r3,r6,r7}
- stm r1!, {r3,r6,r7}
- ldm r0!, {r3,r6,r7}
- stm r1!, {r3,r6,r7}
- ldm r0!, {r3,r6,r7}
- stm r1!, {r3,r6,r7}
- adds r0, r4, 0
- adds r1, r2, 0
- bl sub_80EF910
- b _080EF9D8
-_080EF9CE:
- adds r0, r2, 0x1
- lsls r0, 24
-_080EF9D2:
- lsrs r2, r0, 24
- cmp r2, 0x17
- bls _080EF9A6
-_080EF9D8:
- lsls r0, r5, 24
- lsrs r5, r0, 24
- cmp r5, 0x17
- bls _080EF992
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80EF93C
-
- thumb_func_start sub_80EF9E8
-sub_80EF9E8: @ 80EF9E8
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r0, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r0, 16
- lsrs r0, 16
- bl sub_80EFA24
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- ldr r0, =gUnknown_0858D144
- lsls r4, 2
- adds r4, r0
- ldr r0, [r4]
- movs r1, 0xB
- muls r1, r5
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- adds r0, r5, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80EF9E8
-
- thumb_func_start sub_80EFA24
-sub_80EFA24: @ 80EFA24
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r5, r0, 16
- bl Random
- lsls r0, 16
- lsrs r0, 16
- ldr r1, =0x0000019b
- bl __umodsi3
- adds r0, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- adds r6, r4, 0
- b _080EFA62
- .pool
-_080EFA48:
- cmp r4, 0x1
- bne _080EFA54
- ldr r4, =0x0000019b
- b _080EFA5A
- .pool
-_080EFA54:
- subs r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
-_080EFA5A:
- cmp r4, r6
- bne _080EFA62
- adds r4, r5, 0
- b _080EFA7E
-_080EFA62:
- adds r0, r4, 0
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0
- bl GetSetPokedexFlag
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x1
- bne _080EFA48
- cmp r4, r5
- beq _080EFA48
-_080EFA7E:
- adds r0, r4, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80EFA24
-
- thumb_func_start sub_80EFA88
-sub_80EFA88: @ 80EFA88
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x000027cc
- adds r0, r1
- bl sub_80EFADC
- ldr r1, =gUnknown_030060BC
- strb r0, [r1]
- ldr r2, =gSpecialVar_0x8006
- ldrb r1, [r1]
- lsls r1, 24
- asrs r1, 24
- strh r1, [r2]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _080EFACC
- ldr r1, =gScriptResult
- movs r0, 0x1
- b _080EFAD0
- .pool
-_080EFACC:
- ldr r1, =gScriptResult
- movs r0, 0
-_080EFAD0:
- strh r0, [r1]
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EFA88
-
- thumb_func_start sub_80EFADC
-sub_80EFADC: @ 80EFADC
- push {lr}
- adds r2, r0, 0
- movs r1, 0
-_080EFAE2:
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _080EFAF6
- lsls r0, r1, 24
- asrs r0, 24
- b _080EFB04
-_080EFAF6:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x4
- bls _080EFAE2
- movs r0, 0x1
- negs r0, r0
-_080EFB04:
- pop {r1}
- bx r1
- thumb_func_end sub_80EFADC
-
- thumb_func_start sub_80EFB08
-sub_80EFB08: @ 80EFB08
- push {lr}
- adds r2, r0, 0
- movs r1, 0x5
-_080EFB0E:
- lsls r0, r1, 24
- asrs r1, r0, 24
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _080EFB24
- adds r0, r1, 0
- b _080EFB34
-_080EFB24:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- asrs r0, 24
- cmp r0, 0x17
- ble _080EFB0E
- movs r0, 0x1
- negs r0, r0
-_080EFB34:
- pop {r1}
- bx r1
- thumb_func_end sub_80EFB08
-
- thumb_func_start sub_80EFB38
-sub_80EFB38: @ 80EFB38
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- bl Random
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r4
- bls _080EFB50
- movs r0, 0x1
- b _080EFB52
-_080EFB50:
- movs r0, 0
-_080EFB52:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80EFB38
-
- thumb_func_start sub_80EFB58
-sub_80EFB58: @ 80EFB58
- push {r4-r6,lr}
- adds r4, r0, 0
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x6
- bl __umodsi3
- lsls r0, 24
- lsrs r2, r0, 24
- adds r5, r4, 0x4
- ldr r6, =0x0000ffff
- b _080EFB7E
- .pool
-_080EFB78:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
-_080EFB7E:
- cmp r2, 0x6
- bne _080EFB84
- movs r2, 0
-_080EFB84:
- lsls r1, r2, 1
- adds r0, r5, r1
- ldrh r0, [r0]
- adds r3, r4, 0x4
- cmp r0, r6
- beq _080EFB78
- ldr r0, =gStringVar3
- adds r1, r3, r1
- ldrh r1, [r1]
- bl CopyEasyChatWord
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EFB58
-
- thumb_func_start sub_80EFBA4
-sub_80EFBA4: @ 80EFBA4
- push {lr}
- adds r2, r0, 0
- movs r3, 0
- movs r1, 0
- ldrb r0, [r2, 0x4]
- cmp r0, 0xFF
- beq _080EFBD0
- adds r2, 0x4
-_080EFBB4:
- adds r0, r2, r1
- ldrb r0, [r0]
- adds r0, r3, r0
- lsls r0, 16
- lsrs r3, r0, 16
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xA
- bhi _080EFBD0
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _080EFBB4
-_080EFBD0:
- movs r0, 0x7
- ands r3, r0
- adds r0, r3, 0
- pop {r1}
- bx r1
- thumb_func_end sub_80EFBA4
-
- thumb_func_start sub_80EFBDC
-sub_80EFBDC: @ 80EFBDC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x10
- ldr r4, [sp, 0x2C]
- ldr r5, [sp, 0x30]
- mov r8, r5
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r1, 24
- lsrs r5, r1, 24
- lsls r2, 24
- lsrs r6, r2, 24
- lsls r3, 16
- lsrs r3, 16
- lsls r4, 16
- lsrs r4, 16
- movs r2, 0
- movs r7, 0xFF
-_080EFC06:
- mov r1, sp
- adds r0, r1, r2
- ldrb r1, [r0]
- orrs r1, r7
- strb r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x2
- bls _080EFC06
- cmp r3, 0
- bne _080EFC72
- mov r4, r8
- adds r4, 0xF
- adds r0, r4, 0
- bl StringLength
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r6, 0
- bne _080EFC36
- mov r0, sp
- adds r1, r4, r5
- b _080EFC40
-_080EFC36:
- cmp r6, 0x1
- bne _080EFC46
- mov r0, sp
- subs r1, r2, r5
- adds r1, r4, r1
-_080EFC40:
- ldrb r1, [r1]
- strb r1, [r0]
- b _080EFC6C
-_080EFC46:
- cmp r6, 0x2
- bne _080EFC56
- mov r1, sp
- adds r0, r4, r5
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r5, 0x1
- b _080EFC66
-_080EFC56:
- mov r1, sp
- subs r0, r2, 0x2
- subs r0, r5
- adds r0, r4, r0
- ldrb r0, [r0]
- strb r0, [r1]
- subs r0, r2, 0x1
- subs r0, r5
-_080EFC66:
- adds r0, r4, r0
- ldrb r0, [r0]
- strb r0, [r1, 0x1]
-_080EFC6C:
- mov r2, r8
- ldrb r1, [r2, 0x1E]
- b _080EFCC8
-_080EFC72:
- cmp r3, 0x1
- bne _080EFCD0
- mov r4, r8
- adds r4, 0x4
- adds r0, r4, 0
- bl StringLength
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r6, 0
- bne _080EFC8E
- mov r0, sp
- adds r1, r4, r5
- b _080EFC98
-_080EFC8E:
- cmp r6, 0x1
- bne _080EFC9E
- mov r0, sp
- subs r1, r2, r5
- adds r1, r4, r1
-_080EFC98:
- ldrb r1, [r1]
- strb r1, [r0]
- b _080EFCC4
-_080EFC9E:
- cmp r6, 0x2
- bne _080EFCAE
- mov r1, sp
- adds r0, r4, r5
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r5, 0x1
- b _080EFCBE
-_080EFCAE:
- mov r1, sp
- subs r0, r2, 0x2
- subs r0, r5
- adds r0, r4, r0
- ldrb r0, [r0]
- strb r0, [r1]
- subs r0, r2, 0x1
- subs r0, r5
-_080EFCBE:
- adds r0, r4, r0
- ldrb r0, [r0]
- strb r0, [r1, 0x1]
-_080EFCC4:
- mov r5, r8
- ldrb r1, [r5, 0x1F]
-_080EFCC8:
- mov r0, sp
- bl ConvertInternationalString
- b _080EFD30
-_080EFCD0:
- movs r0, 0xB
- muls r4, r0
- ldr r7, =gSpeciesNames
- adds r0, r4, r7
- bl StringLength
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r6, 0
- bne _080EFCF0
- mov r0, sp
- adds r1, r5, r4
- b _080EFCFA
- .pool
-_080EFCF0:
- cmp r6, 0x1
- bne _080EFD02
- mov r0, sp
- subs r1, r2, r5
- adds r1, r4
-_080EFCFA:
- adds r1, r7
- ldrb r1, [r1]
- strb r1, [r0]
- b _080EFD30
-_080EFD02:
- cmp r6, 0x2
- bne _080EFD16
- mov r1, sp
- adds r0, r5, r4
- adds r0, r7
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r4, 0x1
- adds r0, r5, r0
- b _080EFD2A
-_080EFD16:
- mov r1, sp
- subs r0, r2, 0x2
- subs r0, r5
- adds r0, r4
- adds r0, r7
- ldrb r0, [r0]
- strb r0, [r1]
- subs r0, r2, 0x1
- subs r0, r5
- adds r0, r4
-_080EFD2A:
- adds r0, r7
- ldrb r0, [r0]
- strb r0, [r1, 0x1]
-_080EFD30:
- ldr r0, =gUnknown_0858D144
- mov r2, r9
- lsls r1, r2, 2
- adds r1, r0
- ldr r0, [r1]
- mov r1, sp
- bl StringCopy
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EFBDC
-
- thumb_func_start sub_80EFD54
-sub_80EFD54: @ 80EFD54
- push {r4,lr}
- movs r1, 0
- ldr r0, =gSaveBlock1Ptr
- ldr r3, [r0]
- ldr r0, =gSpecialVar_0x8004
- ldrh r2, [r0]
- ldr r4, =0x000027cc
-_080EFD62:
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r3, r0
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, r2
- bne _080EFD84
- movs r0, 0x1
- b _080EFD90
- .pool
-_080EFD84:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x4
- bls _080EFD62
- movs r0, 0
-_080EFD90:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80EFD54
-
- thumb_func_start sub_80EFD98
-sub_80EFD98: @ 80EFD98
- push {r4,lr}
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- ldr r4, =gStringVar1
- movs r1, 0x2
- adds r2, r4, 0
- bl GetMonData
- ldr r0, =gStringVar3
- adds r1, r4, 0
- bl StringCompare
- cmp r0, 0
- beq _080EFDD4
- bl sub_80ED320
- movs r0, 0x1
- b _080EFDD6
- .pool
-_080EFDD4:
- movs r0, 0
-_080EFDD6:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80EFD98
-
- thumb_func_start sub_80EFDDC
-sub_80EFDDC: @ 80EFDDC
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- sub sp, 0x8
- ldr r0, =gSpecialVar_0x8004
- mov r9, r0
- ldrh r0, [r0]
- movs r1, 0x64
- mov r8, r1
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- ldr r6, =gPlayerParty
- adds r0, r6
- ldr r2, =gStringVar3
- movs r1, 0x2
- bl GetMonData
- mov r1, r9
- ldrh r0, [r1]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r6
- ldr r1, =gStringVar2
- mov r10, r1
- movs r1, 0x2
- mov r2, r10
- bl GetMonData
- mov r1, r9
- ldrh r0, [r1]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r6
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- mov r1, r9
- ldrh r0, [r1]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r6
- bl GetMonGender
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- mov r1, r9
- ldrh r0, [r1]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r6
- movs r1, 0
- movs r2, 0
- bl GetMonData
- str r0, [sp]
- ldr r0, =c2_080CC144
- str r0, [sp, 0x4]
- movs r0, 0x3
- mov r1, r10
- adds r2, r5, 0
- adds r3, r4, 0
- bl DoNamingScreen
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EFDDC
-
- thumb_func_start c2_080CC144
-c2_080CC144: @ 80EFE98
- push {lr}
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- ldr r2, =gStringVar2
- movs r1, 0x2
- bl SetMonData
- bl c2_exit_to_overworld_1_continue_scripts_restart_music
- pop {r0}
- bx r0
- .pool
- thumb_func_end c2_080CC144
-
- thumb_func_start sub_80EFEC4
-sub_80EFEC4: @ 80EFEC4
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x8
- ldr r0, =gSpecialVar_0x8012
- ldrb r0, [r0]
- ldr r1, =gSpecialVar_0x8013
- ldrb r1, [r1]
- bl GetBoxedMonPtr
- adds r6, r0, 0
- ldr r2, =gStringVar3
- movs r1, 0x2
- bl GetBoxMonData
- ldr r0, =gStringVar2
- mov r8, r0
- adds r0, r6, 0
- movs r1, 0x2
- mov r2, r8
- bl GetBoxMonData
- adds r0, r6, 0
- movs r1, 0xB
- movs r2, 0
- bl GetBoxMonData
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r6, 0
- bl GetBoxMonGender
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r6, 0
- movs r1, 0
- movs r2, 0
- bl GetBoxMonData
- str r0, [sp]
- ldr r0, =sub_80EFF48
- str r0, [sp, 0x4]
- movs r0, 0x3
- mov r1, r8
- adds r2, r5, 0
- adds r3, r4, 0
- bl DoNamingScreen
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EFEC4
-
- thumb_func_start sub_80EFF48
-sub_80EFF48: @ 80EFF48
- push {lr}
- ldr r0, =gSpecialVar_0x8012
- ldrb r0, [r0]
- ldr r1, =gSpecialVar_0x8013
- ldrb r1, [r1]
- ldr r2, =gStringVar2
- bl SetBoxMonNickFromAnyBox
- bl c2_exit_to_overworld_1_continue_scripts_restart_music
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EFF48
-
- thumb_func_start sub_80EFF6C
-sub_80EFF6C: @ 80EFF6C
- push {r4,lr}
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- ldr r4, =gStringVar1
- movs r1, 0x2
- adds r2, r4, 0
- bl GetMonData
- adds r0, r4, 0
- bl StringGetEnd10
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EFF6C
-
- thumb_func_start sub_80EFF9C
-sub_80EFF9C: @ 80EFF9C
- push {r4,lr}
- bl sub_80F0020
- adds r4, r0, 0
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, =gPlayerParty
- adds r0, r1
- movs r1, 0x1
- movs r2, 0
- bl GetMonData
- cmp r4, r0
- bne _080EFFD0
- ldr r1, =gScriptResult
- movs r0, 0
- b _080EFFD4
- .pool
-_080EFFD0:
- ldr r1, =gScriptResult
- movs r0, 0x1
-_080EFFD4:
- strh r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80EFF9C
-
- thumb_func_start sub_80EFFE0
-sub_80EFFE0: @ 80EFFE0
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- adds r2, r1, 0
- cmp r1, 0
- beq _080F0016
- subs r0, r1, 0x1
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x13
- bhi _080EFFFA
- movs r0, 0x2
- b _080F001C
-_080EFFFA:
- adds r0, r1, 0
- subs r0, 0x15
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x13
- bhi _080F000A
- movs r0, 0x3
- b _080F001C
-_080F000A:
- adds r0, r2, 0
- subs r0, 0x29
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x13
- bls _080F001A
-_080F0016:
- movs r0, 0
- b _080F001C
-_080F001A:
- movs r0, 0x4
-_080F001C:
- pop {r1}
- bx r1
- thumb_func_end sub_80EFFE0
-
- thumb_func_start sub_80F0020
-sub_80F0020: @ 80F0020
- ldr r0, =gSaveBlock2Ptr
- ldr r2, [r0]
- ldrb r0, [r2, 0xD]
- lsls r0, 24
- ldrb r1, [r2, 0xC]
- lsls r1, 16
- orrs r0, r1
- ldrb r1, [r2, 0xB]
- lsls r1, 8
- orrs r0, r1
- ldrb r1, [r2, 0xA]
- orrs r0, r1
- bx lr
- .pool
- thumb_func_end sub_80F0020
-
- thumb_func_start CheckForBigMovieOrEmergencyNewsOnTV
-CheckForBigMovieOrEmergencyNewsOnTV: @ 80F0040
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r1, [r0]
- movs r0, 0x4
- ldrsb r0, [r1, r0]
- cmp r0, 0x1
- bne _080F0060
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- cmp r0, 0
- bne _080F006C
- movs r0, 0x5
- ldrsb r0, [r1, r0]
- cmp r0, 0
- beq _080F0074
-_080F0060:
- movs r0, 0
- b _080F009E
- .pool
-_080F006C:
- movs r0, 0x5
- ldrsb r0, [r1, r0]
- cmp r0, 0x2
- bne _080F0060
-_080F0074:
- ldr r0, =0x000008bd
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080F0092
- movs r0, 0x89
- lsls r0, 4
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080F009C
-_080F0092:
- movs r0, 0x1
- b _080F009E
- .pool
-_080F009C:
- movs r0, 0x2
-_080F009E:
- pop {r1}
- bx r1
- thumb_func_end CheckForBigMovieOrEmergencyNewsOnTV
-
- thumb_func_start GetMomOrDadStringForTVMessage
-GetMomOrDadStringForTVMessage: @ 80F00A4
- push {r4,lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r1, [r0]
- movs r0, 0x4
- ldrsb r0, [r1, r0]
- cmp r0, 0x1
- bne _080F0104
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- cmp r0, 0
- bne _080F00EC
- movs r0, 0x5
- ldrsb r0, [r1, r0]
- cmp r0, 0
- bne _080F0104
- ldr r0, =gStringVar1
- ldr r1, =gText_Mom
- bl StringCopy
- ldr r0, =0x00004003
- movs r1, 0x1
- bl VarSet
- b _080F0104
- .pool
-_080F00EC:
- movs r0, 0x5
- ldrsb r0, [r1, r0]
- cmp r0, 0x2
- bne _080F0104
- ldr r0, =gStringVar1
- ldr r1, =gText_Mom
- bl StringCopy
- ldr r0, =0x00004003
- movs r1, 0x1
- bl VarSet
-_080F0104:
- ldr r4, =0x00004003
- adds r0, r4, 0
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- beq _080F0142
- adds r0, r4, 0
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x2
- beq _080F0158
- adds r0, r4, 0
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x2
- bls _080F016C
- adds r0, r4, 0
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080F0158
-_080F0142:
- ldr r0, =gStringVar1
- ldr r1, =gText_Mom
- bl StringCopy
- b _080F01A8
- .pool
-_080F0158:
- ldr r0, =gStringVar1
- ldr r1, =gText_Dad
- bl StringCopy
- b _080F01A8
- .pool
-_080F016C:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080F0198
- ldr r0, =gStringVar1
- ldr r1, =gText_Mom
- bl StringCopy
- adds r0, r4, 0
- movs r1, 0x1
- bl VarSet
- b _080F01A8
- .pool
-_080F0198:
- ldr r0, =gStringVar1
- ldr r1, =gText_Dad
- bl StringCopy
- adds r0, r4, 0
- movs r1, 0x2
- bl VarSet
-_080F01A8:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end GetMomOrDadStringForTVMessage
-
- thumb_func_start sub_80F01B8
-sub_80F01B8: @ 80F01B8
- push {lr}
- ldr r0, =0x000040bc
- movs r1, 0
- bl VarSet
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrb r1, [r0, 0x5]
- ldrb r2, [r0, 0x4]
- movs r0, 0x5
- bl RemoveFieldObjectByLocalIdAndMap
- ldr r0, =0x00000396
- bl FlagSet
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F01B8
-
- thumb_func_start sub_80F01E8
-sub_80F01E8: @ 80F01E8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r7, r0, 0
- adds r5, r1, 0
- lsls r2, 24
- lsrs r6, r2, 24
- movs r0, 0xE1
- lsls r0, 4
- bl Alloc
- mov r8, r0
- cmp r0, 0
- bne _080F0206
- b _080F0344
-_080F0206:
- movs r4, 0
-_080F0208:
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 5
- adds r0, r4
- lsls r0, 2
- add r0, r8
- adds r1, r4, 0
- muls r1, r5
- adds r1, r7, r1
- movs r2, 0xE1
- lsls r2, 2
- bl memcpy
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _080F0208
- mov r5, r8
- movs r4, 0
- ldr r7, =gLinkPlayers
- b _080F0276
- .pool
-_080F0238:
- lsls r0, r4, 3
- subs r2, r0, r4
- lsls r0, r2, 2
- adds r3, r0, r7
- ldrb r1, [r3]
- subs r0, r1, 0x1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bhi _080F025A
- lsls r0, r2, 5
- adds r0, r4
- lsls r0, 2
- adds r0, r5, r0
- bl sub_80F1254
- b _080F0270
-_080F025A:
- cmp r1, 0x3
- bne _080F0270
- ldrh r0, [r3, 0x1A]
- cmp r0, 0x1
- bne _080F0270
- lsls r0, r2, 5
- adds r0, r4
- lsls r0, 2
- adds r0, r5, r0
- bl sub_80F12A4
-_080F0270:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_080F0276:
- bl sub_8009FCC
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bcc _080F0238
- cmp r6, 0x1
- beq _080F02C4
- cmp r6, 0x1
- bgt _080F0290
- cmp r6, 0
- beq _080F029A
- b _080F031E
-_080F0290:
- cmp r6, 0x2
- beq _080F02DC
- cmp r6, 0x3
- beq _080F0304
- b _080F031E
-_080F029A:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x000027cc
- adds r0, r1
- movs r2, 0xE1
- lsls r2, 2
- adds r1, r5, r2
- movs r3, 0xE1
- lsls r3, 3
- adds r2, r5, r3
- ldr r4, =0x00000a8c
- adds r3, r5, r4
- bl sub_80F0358
- b _080F031E
- .pool
-_080F02C4:
- ldr r0, =gSaveBlock1Ptr
- ldr r1, [r0]
- ldr r0, =0x000027cc
- adds r1, r0
- movs r3, 0xE1
- lsls r3, 3
- adds r2, r5, r3
- b _080F02EA
- .pool
-_080F02DC:
- movs r0, 0xE1
- lsls r0, 2
- adds r1, r5, r0
- ldr r0, =gSaveBlock1Ptr
- ldr r2, [r0]
- ldr r3, =0x000027cc
- adds r2, r3
-_080F02EA:
- ldr r4, =0x00000a8c
- adds r3, r5, r4
- adds r0, r5, 0
- bl sub_80F0358
- b _080F031E
- .pool
-_080F0304:
- movs r0, 0xE1
- lsls r0, 2
- adds r1, r5, r0
- movs r3, 0xE1
- lsls r3, 3
- adds r2, r5, r3
- ldr r0, =gSaveBlock1Ptr
- ldr r3, [r0]
- ldr r4, =0x000027cc
- adds r3, r4
- adds r0, r5, 0
- bl sub_80F0358
-_080F031E:
- ldr r5, =gSaveBlock1Ptr
- ldr r0, [r5]
- ldr r4, =0x000027cc
- adds r0, r4
- bl sub_80EF93C
- bl sub_80F0C04
- ldr r0, [r5]
- adds r0, r4
- bl sub_80EF93C
- bl sub_80F0708
- bl sub_80F0B64
- mov r0, r8
- bl Free
-_080F0344:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F01E8
-
- thumb_func_start sub_80F0358
-sub_80F0358: @ 80F0358
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- str r0, [sp, 0x10]
- str r1, [sp, 0x14]
- str r2, [sp, 0x18]
- str r3, [sp, 0x1C]
- add r0, sp, 0x10
- str r0, [sp]
- add r0, sp, 0x14
- str r0, [sp, 0x4]
- add r0, sp, 0x18
- str r0, [sp, 0x8]
- add r0, sp, 0x1C
- str r0, [sp, 0xC]
- bl sub_8009FCC
- ldr r1, =gUnknown_03001174
- strb r0, [r1]
-_080F0384:
- movs r6, 0
- ldr r0, =gUnknown_03001174
- ldrb r1, [r0]
- cmp r6, r1
- bcs _080F0384
- mov r10, r0
-_080F0390:
- cmp r6, 0
- bne _080F0398
- ldr r2, =gUnknown_0203A02C
- strb r6, [r2]
-_080F0398:
- lsls r4, r6, 2
- mov r3, sp
- adds r0, r3, r4
- ldr r0, [r0]
- ldr r0, [r0]
- bl sub_80F06D0
- ldr r1, =gUnknown_03001176
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- adds r7, r4, 0
- cmp r0, r1
- bne _080F03E0
- ldr r1, =gUnknown_0203A02C
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- mov r2, r10
- ldrb r2, [r2]
- cmp r0, r2
- beq _080F048C
- adds r6, 0x1
- mov r9, r6
- b _080F0470
- .pool
-_080F03E0:
- movs r5, 0
- mov r3, r10
- ldrb r0, [r3]
- subs r0, 0x1
- adds r2, r6, 0x1
- mov r9, r2
- cmp r5, r0
- bge _080F0456
- ldr r3, =gUnknown_03001174
- mov r8, r3
-_080F03F4:
- adds r0, r6, r5
- adds r4, r0, 0x1
- mov r0, r8
- ldrb r1, [r0]
- adds r0, r4, 0
- bl __modsi3
- lsls r0, 2
- add r0, sp
- ldr r0, [r0]
- ldr r0, [r0]
- bl sub_80EFB08
- ldr r1, =gUnknown_030060BC
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080F0446
- mov r2, r8
- ldrb r1, [r2]
- adds r0, r4, 0
- bl __modsi3
- adds r2, r0, 0
- lsls r0, r2, 2
- add r0, sp
- ldr r0, [r0]
- mov r3, sp
- adds r1, r3, r7
- ldr r1, [r1]
- lsls r2, 24
- lsrs r2, 24
- bl sub_80F049C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080F0456
-_080F0446:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- mov r1, r8
- ldrb r0, [r1]
- subs r0, 0x1
- cmp r5, r0
- blt _080F03F4
-_080F0456:
- mov r2, r10
- ldrb r0, [r2]
- subs r0, 0x1
- cmp r5, r0
- bne _080F0470
- mov r3, sp
- adds r0, r3, r7
- ldr r0, [r0]
- ldr r0, [r0]
- ldr r1, =gUnknown_03001176
- ldrb r1, [r1]
- bl sub_80EF910
-_080F0470:
- mov r1, r9
- lsls r0, r1, 24
- lsrs r6, r0, 24
- mov r2, r10
- ldrb r2, [r2]
- cmp r6, r2
- bcc _080F0390
- b _080F0384
- .pool
-_080F048C:
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80F0358
-
- thumb_func_start sub_80F049C
-sub_80F049C: @ 80F049C
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r2, 24
- lsrs r7, r2, 24
- ldr r4, [r0]
- ldr r6, [r1]
- movs r5, 0
- ldr r2, =gUnknown_03001176
- movs r1, 0
- ldrsb r1, [r2, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrb r0, [r0]
- str r2, [sp]
- bl sub_80EFFE0
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- ldr r2, [sp]
- cmp r0, 0x3
- beq _080F050C
- cmp r0, 0x3
- bgt _080F04DC
- cmp r0, 0x2
- beq _080F04E2
- b _080F055A
- .pool
-_080F04DC:
- cmp r1, 0x4
- beq _080F0534
- b _080F055A
-_080F04E2:
- ldr r0, =gUnknown_030060BC
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r4, r0
- ldrb r2, [r2]
- lsls r2, 24
- asrs r2, 24
- lsls r1, r2, 3
- adds r1, r2
- lsls r1, 2
- adds r1, r6, r1
- adds r2, r7, 0
- bl sub_80F0580
- b _080F0556
- .pool
-_080F050C:
- ldr r0, =gUnknown_030060BC
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r4, r0
- ldrb r2, [r2]
- lsls r2, 24
- asrs r2, 24
- lsls r1, r2, 3
- adds r1, r2
- lsls r1, 2
- adds r1, r6, r1
- adds r2, r7, 0
- bl sub_80F05E8
- b _080F0556
- .pool
-_080F0534:
- ldr r0, =gUnknown_030060BC
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r4, r0
- ldrb r2, [r2]
- lsls r2, 24
- asrs r2, 24
- lsls r1, r2, 3
- adds r1, r2
- lsls r1, 2
- adds r1, r6, r1
- adds r2, r7, 0
- bl sub_80F0668
-_080F0556:
- lsls r0, 24
- lsrs r5, r0, 24
-_080F055A:
- cmp r5, 0x1
- beq _080F0568
- movs r0, 0
- b _080F0574
- .pool
-_080F0568:
- ldr r0, =gUnknown_03001176
- ldrb r1, [r0]
- adds r0, r6, 0
- bl sub_80EF910
- movs r0, 0x1
-_080F0574:
- add sp, 0x4
- pop {r4-r7}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80F049C
-
- thumb_func_start sub_80F0580
-sub_80F0580: @ 80F0580
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- lsls r0, r2, 24
- lsrs r0, 24
- bl sub_800A2A4
- adds r5, r0, 0
- movs r2, 0xFF
- ands r0, r2
- adds r1, r4, 0
- adds r1, 0x22
- ldrb r1, [r1]
- cmp r0, r1
- bne _080F05B0
- lsrs r0, r5, 8
- ands r0, r2
- adds r1, r4, 0
- adds r1, 0x23
- ldrb r1, [r1]
- cmp r0, r1
- bne _080F05B0
- movs r0, 0
- b _080F05E0
-_080F05B0:
- adds r1, r4, 0
- adds r1, 0x20
- ldrb r0, [r1]
- adds r2, r4, 0
- adds r2, 0x22
- strb r0, [r2]
- adds r3, r4, 0
- adds r3, 0x21
- ldrb r0, [r3]
- adds r2, 0x1
- strb r0, [r2]
- strb r5, [r1]
- lsrs r0, r5, 8
- strb r0, [r3]
- adds r1, r6, 0
- adds r0, r4, 0
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- movs r0, 0x1
- strb r0, [r6, 0x1]
-_080F05E0:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80F0580
-
- thumb_func_start sub_80F05E8
-sub_80F05E8: @ 80F05E8
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- lsls r0, r2, 24
- lsrs r0, 24
- bl sub_800A2A4
- adds r2, r0, 0
- movs r3, 0xFF
- ands r0, r3
- adds r1, r4, 0
- adds r1, 0x20
- ldrb r1, [r1]
- cmp r0, r1
- bne _080F0614
- lsrs r0, r2, 8
- ands r0, r3
- adds r1, r4, 0
- adds r1, 0x21
- ldrb r1, [r1]
- cmp r0, r1
- beq _080F0634
-_080F0614:
- movs r3, 0xFF
- adds r0, r2, 0
- ands r0, r3
- adds r1, r4, 0
- adds r1, 0x22
- lsrs r5, r2, 8
- ldrb r1, [r1]
- cmp r0, r1
- bne _080F0638
- adds r0, r5, 0
- ands r0, r3
- adds r1, r4, 0
- adds r1, 0x23
- ldrb r1, [r1]
- cmp r0, r1
- bne _080F0638
-_080F0634:
- movs r0, 0
- b _080F0660
-_080F0638:
- ldrb r1, [r4, 0x1E]
- adds r0, r4, 0
- adds r0, 0x20
- strb r1, [r0]
- ldrb r0, [r4, 0x1F]
- adds r1, r4, 0
- adds r1, 0x21
- strb r0, [r1]
- strb r2, [r4, 0x1E]
- strb r5, [r4, 0x1F]
- adds r1, r6, 0
- adds r0, r4, 0
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- movs r0, 0x1
- strb r0, [r6, 0x1]
-_080F0660:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80F05E8
-
- thumb_func_start sub_80F0668
-sub_80F0668: @ 80F0668
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r4, r1, 0
- lsls r0, r2, 24
- lsrs r0, 24
- bl sub_800A2A4
- adds r5, r0, 0
- movs r2, 0xFF
- ands r0, r2
- adds r1, r4, 0
- adds r1, 0x22
- ldrb r1, [r1]
- cmp r0, r1
- bne _080F0698
- lsrs r0, r5, 8
- ands r0, r2
- adds r1, r4, 0
- adds r1, 0x23
- ldrb r1, [r1]
- cmp r0, r1
- bne _080F0698
- movs r0, 0
- b _080F06CA
-_080F0698:
- adds r1, r4, 0
- adds r1, 0x20
- ldrb r0, [r1]
- adds r2, r4, 0
- adds r2, 0x22
- strb r0, [r2]
- adds r3, r4, 0
- adds r3, 0x21
- ldrb r0, [r3]
- adds r2, 0x1
- strb r0, [r2]
- strb r5, [r1]
- lsrs r0, r5, 8
- strb r0, [r3]
- adds r1, r6, 0
- adds r0, r4, 0
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- movs r0, 0x1
- strb r0, [r6, 0x1]
- strh r0, [r6, 0x16]
-_080F06CA:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80F0668
-
- thumb_func_start sub_80F06D0
-sub_80F06D0: @ 80F06D0
- push {lr}
- adds r3, r0, 0
- movs r2, 0
-_080F06D6:
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- adds r1, r0, r3
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- bne _080F06F6
- ldrb r0, [r1]
- subs r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3B
- bhi _080F06F6
- lsls r0, r2, 24
- asrs r0, 24
- b _080F0704
-_080F06F6:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x17
- bls _080F06D6
- movs r0, 0x1
- negs r0, r0
-_080F0704:
- pop {r1}
- bx r1
- thumb_func_end sub_80F06D0
-
- thumb_func_start sub_80F0708
-sub_80F0708: @ 80F0708
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- movs r0, 0
- mov r9, r0
-_080F0716:
- ldr r3, =gSaveBlock1Ptr
- ldr r1, [r3]
- mov r4, r9
- lsls r2, r4, 3
- adds r0, r2, r4
- lsls r0, 2
- adds r1, r0
- ldr r0, =0x000027cc
- adds r1, r0
- ldrb r0, [r1]
- adds r7, r2, 0
- cmp r0, 0x29
- bls _080F0732
- b _080F0AD8
-_080F0732:
- lsls r0, 2
- ldr r1, =_080F0748
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F0748:
- .4byte _080F0AE2
- .4byte _080F0848
- .4byte _080F0AE2
- .4byte _080F0860
- .4byte _080F0878
- .4byte _080F0890
- .4byte _080F08BC
- .4byte _080F08D4
- .4byte _080F07F0
- .4byte _080F0AE2
- .4byte _080F081C
- .4byte _080F0AE2
- .4byte _080F0AE2
- .4byte _080F0AD8
- .4byte _080F0AD8
- .4byte _080F0AD8
- .4byte _080F0AD8
- .4byte _080F0AD8
- .4byte _080F0AD8
- .4byte _080F0AD8
- .4byte _080F0AD8
- .4byte _080F0900
- .4byte _080F0AE2
- .4byte _080F0918
- .4byte _080F0944
- .4byte _080F095C
- .4byte _080F0AE2
- .4byte _080F0AE2
- .4byte _080F0AE2
- .4byte _080F0AE2
- .4byte _080F0974
- .4byte _080F09A0
- .4byte _080F0AE2
- .4byte _080F09C0
- .4byte _080F0AE2
- .4byte _080F0AE2
- .4byte _080F09F4
- .4byte _080F0AE2
- .4byte _080F0AE2
- .4byte _080F0AE2
- .4byte _080F0AD8
- .4byte _080F0AE2
-_080F07F0:
- ldr r0, [r3]
- mov r1, r9
- adds r4, r7, r1
- lsls r4, 2
- adds r0, r4, r0
- ldr r6, =0x000027cc
- adds r0, r6
- ldrh r0, [r0, 0x12]
- lsls r5, r1, 24
- lsrs r5, 24
- adds r1, r5, 0
- str r3, [sp, 0x4]
- bl sub_80F0B24
- ldr r3, [sp, 0x4]
- ldr r0, [r3]
- adds r4, r0
- adds r4, r6
- ldrh r0, [r4, 0x2]
- b _080F09E6
- .pool
-_080F081C:
- ldr r0, [r3]
- mov r2, r9
- adds r4, r7, r2
- lsls r4, 2
- adds r0, r4, r0
- ldr r6, =0x000027cc
- adds r0, r6
- ldrh r0, [r0, 0x16]
- lsls r5, r2, 24
- lsrs r5, 24
- adds r1, r5, 0
- str r3, [sp, 0x4]
- bl sub_80F0B24
- ldr r3, [sp, 0x4]
- ldr r0, [r3]
- adds r4, r0
- adds r4, r6
- ldrh r0, [r4, 0x2]
- b _080F09E6
- .pool
-_080F0848:
- ldr r0, [r3]
- mov r4, r9
- adds r1, r7, r4
- lsls r1, 2
- adds r1, r0
- ldr r0, =0x000027cc
- adds r1, r0
- ldrh r0, [r1, 0x2]
- b _080F09B0
- .pool
-_080F0860:
- ldr r0, [r3]
- mov r2, r9
- adds r1, r7, r2
- lsls r1, 2
- adds r1, r0
- ldr r4, =0x000027cc
- adds r1, r4
- ldrh r0, [r1, 0x2]
- lsls r1, r2, 24
- b _080F09B2
- .pool
-_080F0878:
- ldr r0, [r3]
- mov r2, r9
- adds r1, r7, r2
- lsls r1, 2
- adds r1, r0
- ldr r4, =0x000027cc
- adds r1, r4
- ldrh r0, [r1, 0x6]
- lsls r1, r2, 24
- b _080F09B2
- .pool
-_080F0890:
- ldr r0, [r3]
- mov r1, r9
- adds r4, r7, r1
- lsls r4, 2
- adds r0, r4, r0
- ldr r6, =0x000027cc
- adds r0, r6
- ldrh r0, [r0, 0x2]
- lsls r5, r1, 24
- lsrs r5, 24
- adds r1, r5, 0
- str r3, [sp, 0x4]
- bl sub_80F0B24
- ldr r3, [sp, 0x4]
- ldr r0, [r3]
- adds r4, r0
- adds r4, r6
- ldrh r0, [r4, 0x1C]
- b _080F09E6
- .pool
-_080F08BC:
- ldr r0, [r3]
- mov r2, r9
- adds r1, r7, r2
- lsls r1, 2
- adds r1, r0
- ldr r4, =0x000027cc
- adds r1, r4
- ldrh r0, [r1, 0x2]
- lsls r1, r2, 24
- b _080F09B2
- .pool
-_080F08D4:
- ldr r0, [r3]
- mov r1, r9
- adds r4, r7, r1
- lsls r4, 2
- adds r0, r4, r0
- ldr r6, =0x000027cc
- adds r0, r6
- ldrh r0, [r0, 0xA]
- lsls r5, r1, 24
- lsrs r5, 24
- adds r1, r5, 0
- str r3, [sp, 0x4]
- bl sub_80F0B24
- ldr r3, [sp, 0x4]
- ldr r0, [r3]
- adds r4, r0
- adds r4, r6
- ldrh r0, [r4, 0x14]
- b _080F09E6
- .pool
-_080F0900:
- ldr r0, [r3]
- mov r2, r9
- adds r1, r7, r2
- lsls r1, 2
- adds r1, r0
- ldr r4, =0x000027cc
- adds r1, r4
- ldrh r0, [r1, 0x10]
- lsls r1, r2, 24
- b _080F09B2
- .pool
-_080F0918:
- ldr r0, [r3]
- mov r1, r9
- adds r4, r7, r1
- lsls r4, 2
- adds r0, r4, r0
- ldr r6, =0x000027cc
- adds r0, r6
- ldrh r0, [r0, 0xC]
- lsls r5, r1, 24
- lsrs r5, 24
- adds r1, r5, 0
- str r3, [sp, 0x4]
- bl sub_80F0B24
- ldr r3, [sp, 0x4]
- ldr r0, [r3]
- adds r4, r0
- adds r4, r6
- ldrh r0, [r4, 0xE]
- b _080F09E6
- .pool
-_080F0944:
- ldr r0, [r3]
- mov r2, r9
- adds r1, r7, r2
- lsls r1, 2
- adds r1, r0
- ldr r4, =0x000027cc
- adds r1, r4
- ldrh r0, [r1, 0x4]
- lsls r1, r2, 24
- b _080F09B2
- .pool
-_080F095C:
- ldr r0, [r3]
- mov r1, r9
- adds r4, r7, r1
- lsls r4, 2
- adds r0, r4, r0
- ldr r6, =0x000027cc
- adds r0, r6
- ldrh r0, [r0, 0x8]
- b _080F09D0
- .pool
-_080F0974:
- ldr r0, [r3]
- mov r2, r9
- adds r4, r7, r2
- lsls r4, 2
- adds r0, r4, r0
- ldr r6, =0x000027cc
- adds r0, r6
- ldrh r0, [r0, 0x2]
- lsls r5, r2, 24
- lsrs r5, 24
- adds r1, r5, 0
- str r3, [sp, 0x4]
- bl sub_80F0B24
- ldr r3, [sp, 0x4]
- ldr r0, [r3]
- adds r4, r0
- adds r4, r6
- ldrh r0, [r4, 0xA]
- b _080F09E6
- .pool
-_080F09A0:
- ldr r0, [r3]
- mov r4, r9
- adds r1, r7, r4
- lsls r1, 2
- adds r1, r0
- ldr r0, =0x000027cc
- adds r1, r0
- ldrh r0, [r1, 0x8]
-_080F09B0:
- lsls r1, r4, 24
-_080F09B2:
- lsrs r1, 24
- bl sub_80F0B24
- b _080F0AE2
- .pool
-_080F09C0:
- ldr r0, [r3]
- mov r1, r9
- adds r4, r7, r1
- lsls r4, 2
- adds r0, r4, r0
- ldr r6, =0x000027cc
- adds r0, r6
- ldrh r0, [r0, 0x6]
-_080F09D0:
- lsls r5, r1, 24
- lsrs r5, 24
- adds r1, r5, 0
- str r3, [sp, 0x4]
- bl sub_80F0B24
- ldr r3, [sp, 0x4]
- ldr r0, [r3]
- adds r4, r0
- adds r4, r6
- ldrh r0, [r4, 0x4]
-_080F09E6:
- adds r1, r5, 0
- bl sub_80F0B24
- b _080F0AE2
- .pool
-_080F09F4:
- ldr r0, [r3]
- mov r2, r9
- adds r4, r7, r2
- lsls r4, 2
- adds r0, r4, r0
- ldr r5, =0x000027cc
- adds r0, r5
- ldrh r0, [r0, 0x4]
- lsls r2, 24
- mov r8, r2
- lsrs r6, r2, 24
- adds r1, r6, 0
- str r3, [sp, 0x4]
- bl sub_80F0B24
- ldr r3, [sp, 0x4]
- ldr r0, [r3]
- adds r0, r4, r0
- adds r0, r5
- ldrh r0, [r0, 0x6]
- adds r1, r6, 0
- bl sub_80F0B24
- ldr r3, [sp, 0x4]
- ldr r0, [r3]
- adds r4, r0
- adds r4, r5
- ldrb r0, [r4, 0xD]
- subs r0, 0x1
- mov r6, r8
- cmp r0, 0xC
- bhi _080F0AE2
- lsls r0, 2
- ldr r1, =_080F0A48
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F0A48:
- .4byte _080F0A7C
- .4byte _080F0AA0
- .4byte _080F0AE2
- .4byte _080F0AE2
- .4byte _080F0A7C
- .4byte _080F0A7C
- .4byte _080F0A7C
- .4byte _080F0A7C
- .4byte _080F0A7C
- .4byte _080F0A7C
- .4byte _080F0A7C
- .4byte _080F0A7C
- .4byte _080F0A7C
-_080F0A7C:
- ldr r0, =gSaveBlock1Ptr
- ldr r1, [r0]
- mov r4, r9
- adds r0, r7, r4
- lsls r0, 2
- adds r0, r1
- ldr r1, =0x000027cc
- adds r0, r1
- ldrh r0, [r0, 0x8]
- lsrs r1, r6, 24
- bl sub_80F0B24
- b _080F0AE2
- .pool
-_080F0AA0:
- ldr r2, =gSaveBlock1Ptr
- ldr r0, [r2]
- mov r1, r9
- adds r4, r7, r1
- lsls r4, 2
- adds r0, r4, r0
- ldr r5, =0x000027cc
- adds r0, r5
- ldrh r0, [r0, 0x8]
- lsrs r6, 24
- adds r1, r6, 0
- str r2, [sp]
- bl sub_80F0B24
- ldr r2, [sp]
- ldr r0, [r2]
- adds r4, r0
- adds r4, r5
- ldrh r0, [r4, 0xA]
- adds r1, r6, 0
- bl sub_80F0B24
- b _080F0AE2
- .pool
-_080F0AD8:
- mov r2, r9
- lsls r0, r2, 24
- lsrs r0, 24
- bl sub_80F0B00
-_080F0AE2:
- mov r0, r9
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- cmp r0, 0x17
- bhi _080F0AF2
- b _080F0716
-_080F0AF2:
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80F0708
-
- thumb_func_start sub_80F0B00
-sub_80F0B00: @ 80F0B00
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gSaveBlock1Ptr
- ldr r2, [r1]
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- adds r2, r1
- ldr r0, =0x000027cd
- adds r2, r0
- movs r0, 0
- strb r0, [r2]
- bx lr
- .pool
- thumb_func_end sub_80F0B00
-
- thumb_func_start sub_80F0B24
-sub_80F0B24: @ 80F0B24
- push {r4,lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 24
- lsrs r4, r1, 24
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0
- bl GetSetPokedexFlag
- lsls r0, 24
- asrs r2, r0, 24
- cmp r2, 0
- bne _080F0B56
- ldr r0, =gSaveBlock1Ptr
- ldr r1, [r0]
- lsls r0, r4, 3
- adds r0, r4
- lsls r0, 2
- adds r1, r0
- ldr r0, =0x000027cd
- adds r1, r0
- strb r2, [r1]
-_080F0B56:
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F0B24
-
- thumb_func_start sub_80F0B64
-sub_80F0B64: @ 80F0B64
- push {r4-r6,lr}
- ldr r0, =0x00000864
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080F0BA2
- movs r2, 0
- ldr r4, =0x000027cd
- movs r3, 0
- ldr r5, =gSaveBlock1Ptr
-_080F0B7C:
- ldr r0, [r5]
- lsls r1, r2, 3
- adds r1, r2
- lsls r1, 2
- adds r1, r0, r1
- ldr r6, =0x000027cc
- adds r0, r1, r6
- ldrb r0, [r0]
- cmp r0, 0x7
- beq _080F0B94
- cmp r0, 0x29
- bne _080F0B98
-_080F0B94:
- adds r0, r1, r4
- strb r3, [r0]
-_080F0B98:
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x17
- bls _080F0B7C
-_080F0BA2:
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F0B64
-
- thumb_func_start sub_80F0BB8
-sub_80F0BB8: @ 80F0BB8
- push {r4-r6,lr}
- movs r5, 0
- ldr r6, =gSaveBlock1Ptr
-_080F0BBE:
- ldr r1, [r6]
- lsls r0, r5, 3
- adds r0, r5
- lsls r4, r0, 2
- adds r1, r4
- ldr r0, =0x000027cc
- adds r1, r0
- ldrb r0, [r1]
- bl sub_80EFFE0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _080F0BE6
- ldr r0, [r6]
- adds r0, r4
- ldr r1, =0x000027cd
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
-_080F0BE6:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x4
- bls _080F0BBE
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F0BB8
-
- thumb_func_start sub_80F0C04
-sub_80F0C04: @ 80F0C04
- push {r4,r5,lr}
- movs r3, 0
- movs r2, 0x5
- ldr r0, =gSaveBlock1Ptr
- ldr r4, [r0]
- ldr r5, =0x000027cc
-_080F0C10:
- lsls r0, r2, 24
- asrs r1, r0, 24
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r4, r0
- adds r0, r5
- ldrb r0, [r0]
- cmp r0, 0
- bne _080F0C2E
- lsls r0, r3, 24
- movs r2, 0x80
- lsls r2, 17
- adds r0, r2
- lsrs r3, r0, 24
-_080F0C2E:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- asrs r0, 24
- cmp r0, 0x17
- ble _080F0C10
- movs r2, 0
- lsls r0, r3, 24
- asrs r0, 24
- movs r1, 0x5
- subs r0, r1, r0
- cmp r2, r0
- bge _080F0C6E
- adds r5, r0, 0
-_080F0C4A:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x000027cc
- adds r0, r1
- lsls r1, r2, 24
- asrs r4, r1, 24
- movs r2, 0xA0
- lsls r2, 19
- adds r1, r2
- lsrs r1, 24
- bl sub_80EF910
- adds r4, 0x1
- lsls r4, 24
- lsrs r2, r4, 24
- asrs r4, 24
- cmp r4, r5
- blt _080F0C4A
-_080F0C6E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F0C04
-
- thumb_func_start sub_80F0C7C
-sub_80F0C7C: @ 80F0C7C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- mov r8, r0
- adds r7, r1, 0
- lsls r2, 24
- lsrs r6, r2, 24
- movs r0, 0x80
- lsls r0, 1
- bl Alloc
- adds r5, r0, 0
- cmp r5, 0
- beq _080F0D4C
- movs r4, 0
-_080F0C9A:
- lsls r0, r4, 6
- adds r0, r5
- adds r1, r4, 0
- muls r1, r7
- add r1, r8
- movs r2, 0x40
- bl memcpy
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _080F0C9A
- cmp r6, 0x1
- beq _080F0CF0
- cmp r6, 0x1
- bgt _080F0CC2
- cmp r6, 0
- beq _080F0CCC
- b _080F0D3E
-_080F0CC2:
- cmp r6, 0x2
- beq _080F0D08
- cmp r6, 0x3
- beq _080F0D28
- b _080F0D3E
-_080F0CCC:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00002b50
- adds r0, r1
- adds r1, r5, 0
- adds r1, 0x40
- adds r2, r5, 0
- adds r2, 0x80
- adds r3, r5, 0
- adds r3, 0xC0
- bl sub_80F0D60
- b _080F0D3E
- .pool
-_080F0CF0:
- ldr r0, =gSaveBlock1Ptr
- ldr r1, [r0]
- ldr r0, =0x00002b50
- adds r1, r0
- adds r2, r5, 0
- adds r2, 0x80
- b _080F0D14
- .pool
-_080F0D08:
- adds r1, r5, 0
- adds r1, 0x40
- ldr r0, =gSaveBlock1Ptr
- ldr r2, [r0]
- ldr r0, =0x00002b50
- adds r2, r0
-_080F0D14:
- adds r3, r5, 0
- adds r3, 0xC0
- adds r0, r5, 0
- bl sub_80F0D60
- b _080F0D3E
- .pool
-_080F0D28:
- adds r1, r5, 0
- adds r1, 0x40
- adds r2, r5, 0
- adds r2, 0x80
- ldr r0, =gSaveBlock1Ptr
- ldr r3, [r0]
- ldr r0, =0x00002b50
- adds r3, r0
- adds r0, r5, 0
- bl sub_80F0D60
-_080F0D3E:
- bl sub_80F0EEC
- bl sub_80F0F24
- adds r0, r5, 0
- bl Free
-_080F0D4C:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F0C7C
-
- thumb_func_start sub_80F0D60
-sub_80F0D60: @ 80F0D60
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x24
- str r0, [sp, 0x10]
- str r1, [sp, 0x14]
- str r2, [sp, 0x18]
- str r3, [sp, 0x1C]
- add r0, sp, 0x10
- str r0, [sp]
- add r0, sp, 0x14
- str r0, [sp, 0x4]
- add r0, sp, 0x18
- str r0, [sp, 0x8]
- add r0, sp, 0x1C
- str r0, [sp, 0xC]
- bl sub_8009FCC
- ldr r1, =gUnknown_03001175
- strb r0, [r1]
- movs r0, 0
- mov r10, r0
-_080F0D90:
- movs r7, 0
- mov r1, r10
- adds r1, 0x1
- str r1, [sp, 0x20]
- b _080F0E28
- .pool
-_080F0DA0:
- lsls r4, r7, 2
- mov r1, sp
- adds r0, r1, r4
- ldr r0, [r0]
- ldr r0, [r0]
- mov r1, r10
- bl sub_80F0ECC
- ldr r1, =gUnknown_03001176
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- mov r8, r4
- adds r1, r7, 0x1
- mov r9, r1
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080F0E22
- movs r5, 0
- ldr r1, =gUnknown_03001175
- ldrb r0, [r1]
- subs r0, 0x1
- cmp r5, r0
- bge _080F0E22
- adds r6, r1, 0
-_080F0DD4:
- adds r0, r7, r5
- adds r4, r0, 0x1
- ldrb r1, [r6]
- adds r0, r4, 0
- bl __modsi3
- lsls r0, 2
- add r0, sp
- ldr r0, [r0]
- ldr r0, [r0]
- bl sub_80EEE30
- ldr r1, =gUnknown_030060BC
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _080F0E14
- ldrb r1, [r6]
- adds r0, r4, 0
- bl __modsi3
- lsls r0, 2
- add r0, sp
- ldr r0, [r0]
- mov r1, sp
- add r1, r8
- ldr r1, [r1]
- bl sub_80F0E58
-_080F0E14:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- ldrb r0, [r6]
- subs r0, 0x1
- cmp r5, r0
- blt _080F0DD4
-_080F0E22:
- mov r1, r9
- lsls r0, r1, 24
- lsrs r7, r0, 24
-_080F0E28:
- ldr r0, =gUnknown_03001175
- ldrb r0, [r0]
- cmp r7, r0
- bcc _080F0DA0
- ldr r1, [sp, 0x20]
- lsls r0, r1, 24
- lsrs r0, 24
- mov r10, r0
- cmp r0, 0xF
- bls _080F0D90
- add sp, 0x24
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F0D60
-
- thumb_func_start sub_80F0E58
-sub_80F0E58: @ 80F0E58
- push {lr}
- ldr r0, [r0]
- ldr r1, [r1]
- ldr r2, =gUnknown_03001176
- ldrb r2, [r2]
- lsls r2, 24
- asrs r2, 24
- lsls r2, 2
- adds r1, r2
- ldr r2, =gUnknown_030060BC
- ldrb r2, [r2]
- lsls r2, 24
- asrs r2, 24
- bl sub_80F0E84
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F0E58
-
- thumb_func_start sub_80F0E84
-sub_80F0E84: @ 80F0E84
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r2, 24
- lsrs r6, r2, 24
- ldrb r3, [r5]
- adds r0, r3, 0
- cmp r0, 0
- bne _080F0E9A
-_080F0E96:
- movs r0, 0
- b _080F0EC6
-_080F0E9A:
- movs r1, 0
- adds r2, r3, 0
- adds r3, r0, 0
-_080F0EA0:
- lsls r0, r1, 2
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, r3
- beq _080F0E96
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xF
- bls _080F0EA0
- lsls r0, r6, 24
- asrs r0, 22
- adds r0, r4
- strb r2, [r0]
- movs r1, 0x1
- strb r1, [r0, 0x1]
- ldrh r1, [r5, 0x2]
- strh r1, [r0, 0x2]
- movs r0, 0x1
-_080F0EC6:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80F0E84
-
- thumb_func_start sub_80F0ECC
-sub_80F0ECC: @ 80F0ECC
- push {lr}
- lsls r1, 24
- lsrs r2, r1, 24
- lsls r1, r2, 2
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0
- beq _080F0EE2
- lsls r0, r2, 24
- asrs r0, 24
- b _080F0EE6
-_080F0EE2:
- movs r0, 0x1
- negs r0, r0
-_080F0EE6:
- pop {r1}
- bx r1
- thumb_func_end sub_80F0ECC
-
- thumb_func_start sub_80F0EEC
-sub_80F0EEC: @ 80F0EEC
- push {r4,lr}
- movs r4, 0
-_080F0EF0:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- lsls r1, r4, 2
- adds r0, r1
- ldr r1, =0x00002b50
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x4
- bls _080F0F08
- adds r0, r4, 0
- bl sub_80EEE78
-_080F0F08:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xF
- bls _080F0EF0
- bl sub_80EEEB8
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F0EEC
-
- thumb_func_start sub_80F0F24
-sub_80F0F24: @ 80F0F24
- push {r4,r5,lr}
- ldr r0, =0x00000864
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _080F0F50
- movs r2, 0
- ldr r5, =gSaveBlock1Ptr
- ldr r4, =0x00002b51
- movs r3, 0
-_080F0F3C:
- ldr r0, [r5]
- lsls r1, r2, 2
- adds r0, r1
- adds r0, r4
- strb r3, [r0]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xF
- bls _080F0F3C
-_080F0F50:
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80F0F24
-
- thumb_func_start sub_80F0F64
-sub_80F0F64: @ 80F0F64
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r5, r1, 0
- movs r0, 0x2C
- bl AllocZeroed
- adds r4, r0, 0
- movs r7, 0
-_080F0F74:
- lsls r0, r7, 3
- adds r1, r0, r7
- lsls r1, 2
- adds r1, r6
- ldrb r1, [r1]
- subs r1, 0x1
- adds r2, r0, 0
- cmp r1, 0x28
- bls _080F0F88
- b _080F11F4
-_080F0F88:
- lsls r0, r1, 2
- ldr r1, =_080F0F98
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F0F98:
- .4byte _080F103C
- .4byte _080F103C
- .4byte _080F105A
- .4byte _080F11F4
- .4byte _080F1152
- .4byte _080F111E
- .4byte _080F10E6
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F1092
- .4byte _080F10C6
- .4byte _080F118A
- .4byte _080F11AA
- .4byte _080F11CA
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11F4
- .4byte _080F11EA
-_080F103C:
- adds r0, r2, r7
- lsls r0, 2
- adds r0, r6, r0
- str r0, [r4]
- adds r0, 0x10
- bl sub_8009228
- cmp r0, 0
- beq _080F1056
- ldr r1, [r4]
- movs r0, 0x1
- strb r0, [r1, 0x18]
- b _080F11F4
-_080F1056:
- ldr r0, [r4]
- b _080F11F2
-_080F105A:
- adds r0, r2, r7
- lsls r0, 2
- adds r0, r6, r0
- str r0, [r4, 0x4]
- adds r0, 0x5
- bl sub_8009228
- cmp r0, 0
- beq _080F1074
- ldr r1, [r4, 0x4]
- movs r0, 0x1
- strb r0, [r1, 0xD]
- b _080F1078
-_080F1074:
- ldr r0, [r4, 0x4]
- strb r5, [r0, 0xD]
-_080F1078:
- ldr r0, [r4, 0x4]
- adds r0, 0x10
- bl sub_8009228
- cmp r0, 0
- beq _080F108C
- ldr r1, [r4, 0x4]
- movs r0, 0x1
- strb r0, [r1, 0xE]
- b _080F11F4
-_080F108C:
- ldr r0, [r4, 0x4]
- strb r5, [r0, 0xE]
- b _080F11F4
-_080F1092:
- adds r0, r2, r7
- lsls r0, 2
- adds r0, r6, r0
- str r0, [r4, 0x18]
- adds r0, 0x13
- bl sub_8009228
- cmp r0, 0
- beq _080F10AC
- ldr r1, [r4, 0x18]
- movs r0, 0x1
- strb r0, [r1, 0x2]
- b _080F10B0
-_080F10AC:
- ldr r0, [r4, 0x18]
- strb r5, [r0, 0x2]
-_080F10B0:
- ldr r0, [r4, 0x18]
- adds r0, 0x4
- bl sub_8009228
- cmp r0, 0
- beq _080F10C0
- ldr r1, [r4, 0x18]
- b _080F10DA
-_080F10C0:
- ldr r0, [r4, 0x18]
- strb r5, [r0, 0x3]
- b _080F11F4
-_080F10C6:
- adds r0, r2, r7
- lsls r0, 2
- adds r0, r6, r0
- str r0, [r4, 0x1C]
- adds r0, 0x13
- bl sub_8009228
- cmp r0, 0
- beq _080F10E0
- ldr r1, [r4, 0x1C]
-_080F10DA:
- movs r0, 0x1
- strb r0, [r1, 0x3]
- b _080F11F4
-_080F10E0:
- ldr r0, [r4, 0x1C]
- strb r5, [r0, 0x3]
- b _080F11F4
-_080F10E6:
- adds r0, r2, r7
- lsls r0, 2
- adds r0, r6, r0
- str r0, [r4, 0x14]
- adds r0, 0x2
- bl sub_8009228
- cmp r0, 0
- beq _080F1100
- ldr r1, [r4, 0x14]
- movs r0, 0x1
- strb r0, [r1, 0x1D]
- b _080F1104
-_080F1100:
- ldr r0, [r4, 0x14]
- strb r5, [r0, 0x1D]
-_080F1104:
- ldr r0, [r4, 0x14]
- adds r0, 0xC
- bl sub_8009228
- cmp r0, 0
- beq _080F1118
- ldr r1, [r4, 0x14]
- movs r0, 0x1
- strb r0, [r1, 0x1E]
- b _080F11F4
-_080F1118:
- ldr r0, [r4, 0x14]
- strb r5, [r0, 0x1E]
- b _080F11F4
-_080F111E:
- adds r0, r2, r7
- lsls r0, 2
- adds r0, r6, r0
- str r0, [r4, 0x10]
- adds r0, 0x16
- bl sub_8009228
- cmp r0, 0
- beq _080F1138
- ldr r1, [r4, 0x10]
- movs r0, 0x1
- strb r0, [r1, 0x1E]
- b _080F113C
-_080F1138:
- ldr r0, [r4, 0x10]
- strb r5, [r0, 0x1E]
-_080F113C:
- ldr r0, [r4, 0x10]
- adds r0, 0x8
- bl sub_8009228
- cmp r0, 0
- beq _080F114C
- ldr r1, [r4, 0x10]
- b _080F117E
-_080F114C:
- ldr r0, [r4, 0x10]
- strb r5, [r0, 0x1F]
- b _080F11F4
-_080F1152:
- adds r0, r2, r7
- lsls r0, 2
- adds r0, r6, r0
- str r0, [r4, 0xC]
- adds r0, 0xF
- bl sub_8009228
- cmp r0, 0
- beq _080F116C
- ldr r1, [r4, 0xC]
- movs r0, 0x1
- strb r0, [r1, 0x1E]
- b _080F1170
-_080F116C:
- ldr r0, [r4, 0xC]
- strb r5, [r0, 0x1E]
-_080F1170:
- ldr r0, [r4, 0xC]
- adds r0, 0x4
- bl sub_8009228
- cmp r0, 0
- beq _080F1184
- ldr r1, [r4, 0xC]
-_080F117E:
- movs r0, 0x1
- strb r0, [r1, 0x1F]
- b _080F11F4
-_080F1184:
- ldr r0, [r4, 0xC]
- strb r5, [r0, 0x1F]
- b _080F11F4
-_080F118A:
- adds r0, r2, r7
- lsls r0, 2
- adds r0, r6, r0
- str r0, [r4, 0x8]
- adds r0, 0x13
- bl sub_8009228
- cmp r0, 0
- beq _080F11A4
- ldr r1, [r4, 0x8]
- movs r0, 0x1
- strb r0, [r1, 0x2]
- b _080F11F4
-_080F11A4:
- ldr r0, [r4, 0x8]
- strb r5, [r0, 0x2]
- b _080F11F4
-_080F11AA:
- adds r0, r2, r7
- lsls r0, 2
- adds r0, r6, r0
- str r0, [r4, 0x20]
- adds r0, 0x13
- bl sub_8009228
- cmp r0, 0
- beq _080F11C4
- ldr r1, [r4, 0x20]
- movs r0, 0x1
- strb r0, [r1, 0x6]
- b _080F11F4
-_080F11C4:
- ldr r0, [r4, 0x20]
- strb r5, [r0, 0x6]
- b _080F11F4
-_080F11CA:
- adds r0, r2, r7
- lsls r0, 2
- adds r0, r6, r0
- str r0, [r4, 0x24]
- adds r0, 0x13
- bl sub_8009228
- cmp r0, 0
- beq _080F11E4
- ldr r1, [r4, 0x24]
- movs r0, 0x1
- strb r0, [r1, 0xB]
- b _080F11F4
-_080F11E4:
- ldr r0, [r4, 0x24]
- strb r5, [r0, 0xB]
- b _080F11F4
-_080F11EA:
- adds r0, r2, r7
- lsls r0, 2
- adds r0, r6, r0
- str r0, [r4, 0x28]
-_080F11F2:
- strb r5, [r0, 0x18]
-_080F11F4:
- adds r7, 0x1
- cmp r7, 0x17
- bgt _080F11FC
- b _080F0F74
-_080F11FC:
- adds r0, r4, 0
- bl Free
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80F0F64
-
- thumb_func_start sub_80F1208
-sub_80F1208: @ 80F1208
- push {r4,r5,lr}
- adds r5, r0, 0
- bl sub_80F14F8
- adds r4, r5, 0
- movs r1, 0xD8
- lsls r1, 2
- adds r0, r4, r1
- cmp r4, r0
- bcs _080F124C
-_080F121C:
- ldrb r0, [r4]
- cmp r0, 0x7
- bne _080F1240
- ldrb r0, [r4, 0x1D]
- cmp r0, 0x1
- bne _080F1230
- ldrb r0, [r4, 0x1E]
- cmp r0, 0x1
- bne _080F1236
- b _080F1240
-_080F1230:
- ldrb r0, [r4, 0x1E]
- cmp r0, 0x1
- bne _080F1240
-_080F1236:
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x24
- bl memset
-_080F1240:
- adds r4, 0x24
- movs r1, 0xD8
- lsls r1, 2
- adds r0, r5, r1
- cmp r4, r0
- bcc _080F121C
-_080F124C:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80F1208
-
- thumb_func_start sub_80F1254
-sub_80F1254: @ 80F1254
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r4, 0
- movs r1, 0xD8
- lsls r1, 2
- adds r0, r4, r1
- cmp r4, r0
- bcs _080F128A
-_080F1264:
- ldrb r0, [r4]
- cmp r0, 0x7
- bne _080F127E
- adds r0, r4, 0
- adds r0, 0xC
- bl sub_8009228
- cmp r0, 0
- beq _080F127A
- movs r0, 0x1
- b _080F127C
-_080F127A:
- movs r0, 0x2
-_080F127C:
- strb r0, [r4, 0x1E]
-_080F127E:
- adds r4, 0x24
- movs r1, 0xD8
- lsls r1, 2
- adds r0, r5, r1
- cmp r4, r0
- bcc _080F1264
-_080F128A:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80F1254
-
- thumb_func_start sub_80F1290
-sub_80F1290: @ 80F1290
- push {lr}
- bl sub_8009228
- movs r1, 0x2
- cmp r0, 0
- beq _080F129E
- movs r1, 0x1
-_080F129E:
- adds r0, r1, 0
- pop {r1}
- bx r1
- thumb_func_end sub_80F1290
-
- thumb_func_start sub_80F12A4
-sub_80F12A4: @ 80F12A4
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r4, 0
- movs r1, 0xD8
- lsls r1, 2
- adds r0, r4, r1
- cmp r4, r0
- bcc _080F12B6
- b _080F14F0
-_080F12B6:
- ldrb r0, [r4]
- subs r0, 0x1
- cmp r0, 0x28
- bls _080F12C0
- b _080F14E2
-_080F12C0:
- lsls r0, 2
- ldr r1, =_080F12D0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F12D0:
- .4byte _080F1374
- .4byte _080F137A
- .4byte _080F1380
- .4byte _080F138E
- .4byte _080F139A
- .4byte _080F13A8
- .4byte _080F13BE
- .4byte _080F13CC
- .4byte _080F13E0
- .4byte _080F13F4
- .4byte _080F1408
- .4byte _080F1416
- .4byte _080F14E2
- .4byte _080F14E2
- .4byte _080F14E2
- .4byte _080F14E2
- .4byte _080F14E2
- .4byte _080F14E2
- .4byte _080F14E2
- .4byte _080F14E2
- .4byte _080F142A
- .4byte _080F1438
- .4byte _080F1444
- .4byte _080F1450
- .4byte _080F145C
- .4byte _080F14AC
- .4byte _080F1468
- .4byte _080F14B8
- .4byte _080F148C
- .4byte _080F1474
- .4byte _080F14AC
- .4byte _080F14B8
- .4byte _080F1480
- .4byte _080F148C
- .4byte _080F1498
- .4byte _080F14AC
- .4byte _080F14B8
- .4byte _080F14C4
- .4byte _080F14D8
- .4byte _080F14E2
- .4byte _080F14E2
-_080F1374:
- adds r0, r4, 0
- adds r0, 0x10
- b _080F1422
-_080F137A:
- adds r0, r4, 0
- adds r0, 0x10
- b _080F1422
-_080F1380:
- adds r0, r4, 0x5
- bl sub_80F1290
- strb r0, [r4, 0xD]
- adds r0, r4, 0
- adds r0, 0x10
- b _080F1478
-_080F138E:
- adds r0, r4, 0
- adds r0, 0xB
- bl sub_80F1290
- strb r0, [r4, 0x17]
- b _080F14E2
-_080F139A:
- adds r0, r4, 0
- adds r0, 0xF
- bl sub_80F1290
- strb r0, [r4, 0x1E]
- adds r0, r4, 0x4
- b _080F13B6
-_080F13A8:
- adds r0, r4, 0
- adds r0, 0x16
- bl sub_80F1290
- strb r0, [r4, 0x1E]
- adds r0, r4, 0
- adds r0, 0x8
-_080F13B6:
- bl sub_80F1290
- strb r0, [r4, 0x1F]
- b _080F14E2
-_080F13BE:
- adds r0, r4, 0x2
- bl sub_80F1290
- strb r0, [r4, 0x1D]
- adds r0, r4, 0
- adds r0, 0xC
- b _080F13D8
-_080F13CC:
- adds r0, r4, 0
- adds r0, 0x14
- bl sub_80F1290
- strb r0, [r4, 0x1D]
- adds r0, r4, 0x4
-_080F13D8:
- bl sub_80F1290
- strb r0, [r4, 0x1E]
- b _080F14E2
-_080F13E0:
- adds r0, r4, 0
- adds r0, 0xC
- bl sub_80F1290
- strb r0, [r4, 0x14]
- adds r0, r4, 0x4
- bl sub_80F1290
- strb r0, [r4, 0x15]
- b _080F14E2
-_080F13F4:
- adds r0, r4, 0x4
- bl sub_80F1290
- strb r0, [r4, 0x19]
- adds r0, r4, 0
- adds r0, 0xC
- bl sub_80F1290
- strb r0, [r4, 0x1A]
- b _080F14E2
-_080F1408:
- adds r0, r4, 0x2
- bl sub_80F1290
- strb r0, [r4, 0x17]
- adds r0, r4, 0
- adds r0, 0xC
- b _080F1422
-_080F1416:
- adds r0, r4, 0x2
- bl sub_80F1290
- strb r0, [r4, 0x17]
- adds r0, r4, 0
- adds r0, 0xB
-_080F1422:
- bl sub_80F1290
- strb r0, [r4, 0x18]
- b _080F14E2
-_080F142A:
- adds r0, r4, 0
- adds r0, 0x13
- bl sub_80F1290
- strb r0, [r4, 0x2]
- adds r0, r4, 0x4
- b _080F143C
-_080F1438:
- adds r0, r4, 0
- adds r0, 0x13
-_080F143C:
- bl sub_80F1290
- strb r0, [r4, 0x3]
- b _080F14E2
-_080F1444:
- adds r0, r4, 0
- adds r0, 0x13
- bl sub_80F1290
- strb r0, [r4, 0x2]
- b _080F14E2
-_080F1450:
- adds r0, r4, 0
- adds r0, 0x13
- bl sub_80F1290
- strb r0, [r4, 0x6]
- b _080F14E2
-_080F145C:
- adds r0, r4, 0
- adds r0, 0x13
- bl sub_80F1290
- strb r0, [r4, 0xB]
- b _080F14E2
-_080F1468:
- adds r0, r4, 0
- adds r0, 0x13
- bl sub_80F1290
- strb r0, [r4, 0x9]
- b _080F14E2
-_080F1474:
- adds r0, r4, 0
- adds r0, 0x13
-_080F1478:
- bl sub_80F1290
- strb r0, [r4, 0xE]
- b _080F14E2
-_080F1480:
- adds r0, r4, 0
- adds r0, 0x13
- bl sub_80F1290
- strb r0, [r4, 0x11]
- b _080F14E2
-_080F148C:
- adds r0, r4, 0
- adds r0, 0x13
- bl sub_80F1290
- strb r0, [r4, 0x8]
- b _080F14E2
-_080F1498:
- adds r0, r4, 0
- adds r0, 0x13
- bl sub_80F1290
- strb r0, [r4, 0xF]
- adds r0, r4, 0x4
- bl sub_80F1290
- strb r0, [r4, 0x10]
- b _080F14E2
-_080F14AC:
- adds r0, r4, 0
- adds r0, 0x13
- bl sub_80F1290
- strb r0, [r4, 0xC]
- b _080F14E2
-_080F14B8:
- adds r0, r4, 0
- adds r0, 0x13
- bl sub_80F1290
- strb r0, [r4, 0x5]
- b _080F14E2
-_080F14C4:
- adds r0, r4, 0
- adds r0, 0x13
- bl sub_80F1290
- strb r0, [r4, 0x1B]
- adds r0, r4, 0x4
- bl sub_80F1290
- strb r0, [r4, 0x1C]
- b _080F14E2
-_080F14D8:
- adds r0, r4, 0
- adds r0, 0x13
- bl sub_80F1290
- strb r0, [r4, 0x4]
-_080F14E2:
- adds r4, 0x24
- movs r1, 0xD8
- lsls r1, 2
- adds r0, r5, r1
- cmp r4, r0
- bcs _080F14F0
- b _080F12B6
-_080F14F0:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80F12A4
-
- thumb_func_start sub_80F14F8
-sub_80F14F8: @ 80F14F8
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r4, r5, 0
- movs r6, 0x17
-_080F1500:
- ldrb r0, [r4]
- cmp r0, 0x17
- beq _080F151C
- cmp r0, 0x19
- bne _080F152C
- ldrb r0, [r4, 0xA]
- cmp r0, 0x58
- bls _080F152C
- adds r0, r5, 0
- movs r1, 0
- movs r2, 0x24
- bl memset
- b _080F152C
-_080F151C:
- ldrb r0, [r4, 0x12]
- cmp r0, 0x58
- bls _080F152C
- adds r0, r5, 0
- movs r1, 0
- movs r2, 0x24
- bl memset
-_080F152C:
- adds r4, 0x24
- adds r5, 0x24
- subs r6, 0x1
- cmp r6, 0
- bge _080F1500
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80F14F8
-
- thumb_func_start sub_80F153C
-sub_80F153C: @ 80F153C
- push {lr}
- ldr r0, =gSaveBlock1Ptr
- ldr r2, [r0]
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r2, r0
- ldr r1, =0x000027cd
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _080F155A
- b _080F16E6
-_080F155A:
- subs r1, 0x1
- adds r0, r2, r1
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r0, 0x28
- bls _080F1568
- b _080F16E6
-_080F1568:
- lsls r0, 2
- ldr r1, =_080F1584
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F1584:
- .4byte _080F1628
- .4byte _080F162E
- .4byte _080F1634
- .4byte _080F163A
- .4byte _080F165E
- .4byte _080F1646
- .4byte _080F164C
- .4byte _080F1664
- .4byte _080F1670
- .4byte _080F166A
- .4byte _080F16B8
- .4byte _080F16E2
- .4byte _080F16E6
- .4byte _080F16E6
- .4byte _080F16E6
- .4byte _080F16E6
- .4byte _080F16E6
- .4byte _080F16E6
- .4byte _080F16E6
- .4byte _080F16E6
- .4byte _080F1652
- .4byte _080F1658
- .4byte _080F1676
- .4byte _080F167C
- .4byte _080F1682
- .4byte _080F1688
- .4byte _080F168E
- .4byte _080F1694
- .4byte _080F169A
- .4byte _080F16A0
- .4byte _080F16A6
- .4byte _080F16AC
- .4byte _080F16B2
- .4byte _080F16BE
- .4byte _080F16C4
- .4byte _080F16CA
- .4byte _080F16D0
- .4byte _080F16D6
- .4byte _080F16DC
- .4byte _080F16E6
- .4byte _080F1640
-_080F1628:
- bl DoTVShowPokemonFanClubLetter
- b _080F16E6
-_080F162E:
- bl DoTVShowRecentHappenings
- b _080F16E6
-_080F1634:
- bl DoTVShowPokemonFanClubOpinions
- b _080F16E6
-_080F163A:
- bl DoTVShowDummiedOut
- b _080F16E6
-_080F1640:
- bl DoTVShowPokemonNewsMassOutbreak
- b _080F16E6
-_080F1646:
- bl DoTVShowBravoTrainerPokemonProfile
- b _080F16E6
-_080F164C:
- bl DoTVShowBravoTrainerBattleTower
- b _080F16E6
-_080F1652:
- bl DoTVShowPokemonTodaySuccessfulCapture
- b _080F16E6
-_080F1658:
- bl DoTVShowTodaysSmartShopper
- b _080F16E6
-_080F165E:
- bl DoTVShowTheNameRaterShow
- b _080F16E6
-_080F1664:
- bl DoTVShowPokemonContestLiveUpdates
- b _080F16E6
-_080F166A:
- bl DoTVShowPokemonBattleUpdate
- b _080F16E6
-_080F1670:
- bl DoTVShow3CheersForPokeblocks
- b _080F16E6
-_080F1676:
- bl DoTVShowPokemonTodayFailedCapture
- b _080F16E6
-_080F167C:
- bl DoTVShowPokemonAngler
- b _080F16E6
-_080F1682:
- bl DoTVShowTheWorldOfMasters
- b _080F16E6
-_080F1688:
- bl DoTVShowTodaysRivalTrainer
- b _080F16E6
-_080F168E:
- bl DoTVShowDewfordTrendWatcherNetwork
- b _080F16E6
-_080F1694:
- bl DoTVShowHoennTreasureInvestigators
- b _080F16E6
-_080F169A:
- bl DoTVShowFindThatGamer
- b _080F16E6
-_080F16A0:
- bl DoTVShowBreakingNewsTV
- b _080F16E6
-_080F16A6:
- bl DoTVShowSecretBaseVisit
- b _080F16E6
-_080F16AC:
- bl DoTVShowPokemonLotterWinnerFlashReport
- b _080F16E6
-_080F16B2:
- bl DoTVShowThePokemonBattleSeminar
- b _080F16E6
-_080F16B8:
- bl DoTVShowTrainerFanClubSpecial
- b _080F16E6
-_080F16BE:
- bl DoTVShowTrainerFanClub
- b _080F16E6
-_080F16C4:
- bl DoTVShowSpotTheCuties
- b _080F16E6
-_080F16CA:
- bl DoTVShowPokemonNewsBattleFrontier
- b _080F16E6
-_080F16D0:
- bl DoTVShowWhatsNo1InHoennToday
- b _080F16E6
-_080F16D6:
- bl DoTVShowSecretBaseSecrets
- b _080F16E6
-_080F16DC:
- bl DoTVShowSafariFanClub
- b _080F16E6
-_080F16E2:
- bl DoTVShowPokemonContestLiveUpdates2
-_080F16E6:
- pop {r0}
- bx r0
- thumb_func_end sub_80F153C
-
- thumb_func_start DoTVShowBravoTrainerPokemonProfile
-DoTVShowBravoTrainerPokemonProfile: @ 80F16EC
- push {r4,r5,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r5, [r0]
- cmp r5, 0x8
- bls _080F1712
- b _080F1952
-_080F1712:
- lsls r0, r5, 2
- ldr r1, =_080F1734
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F1734:
- .4byte _080F1758
- .4byte _080F17B0
- .4byte _080F17E8
- .4byte _080F1818
- .4byte _080F184C
- .4byte _080F1880
- .4byte _080F18C4
- .4byte _080F190C
- .4byte _080F193C
-_080F1758:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x16
- ldrb r2, [r4, 0x1E]
- bl sub_81DB5E8
- ldrb r1, [r4, 0x13]
- lsls r1, 29
- lsrs r1, 29
- movs r0, 0x1
- bl CopyContestCategoryToStringVar
- ldrb r1, [r4, 0x13]
- lsls r1, 27
- lsrs r1, 30
- movs r0, 0x2
- bl sub_80EF1BC
- ldrh r1, [r4, 0x2]
- movs r0, 0xB
- muls r0, r1
- ldr r1, =gSpeciesNames
- adds r0, r1
- adds r1, r4, 0
- adds r1, 0x8
- bl StringCompare
- cmp r0, 0
- bne _080F17A4
- ldr r1, =gUnknown_0203A030
- movs r0, 0x8
- b _080F1950
- .pool
-_080F17A4:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- b _080F1950
- .pool
-_080F17B0:
- ldr r0, =gStringVar1
- ldrh r2, [r4, 0x2]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar2
- adds r1, r4, 0
- adds r1, 0x8
- ldrb r2, [r4, 0x1F]
- bl sub_81DB5E8
- ldrb r1, [r4, 0x13]
- lsls r1, 29
- lsrs r1, 29
- movs r0, 0x2
- bl CopyContestCategoryToStringVar
- b _080F194C
- .pool
-_080F17E8:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x16
- ldrb r2, [r4, 0x1E]
- bl sub_81DB5E8
- ldrb r1, [r4, 0x13]
- movs r0, 0x60
- ands r0, r1
- cmp r0, 0
- bne _080F180C
- ldr r1, =gUnknown_0203A030
- movs r0, 0x3
- b _080F1950
- .pool
-_080F180C:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x4
- b _080F1950
- .pool
-_080F1818:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x16
- ldrb r2, [r4, 0x1E]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r1, [r4, 0x4]
- bl CopyEasyChatWord
- ldrb r1, [r4, 0x13]
- lsls r1, 25
- lsrs r1, 30
- adds r1, 0x1
- movs r0, 0x2
- bl sub_80EF340
- ldr r1, =gUnknown_0203A030
- movs r0, 0x5
- b _080F1950
- .pool
-_080F184C:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x16
- ldrb r2, [r4, 0x1E]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r1, [r4, 0x4]
- bl CopyEasyChatWord
- ldrb r1, [r4, 0x13]
- lsls r1, 25
- lsrs r1, 30
- adds r1, 0x1
- movs r0, 0x2
- bl sub_80EF340
- ldr r1, =gUnknown_0203A030
- movs r0, 0x5
- b _080F1950
- .pool
-_080F1880:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x16
- ldrb r2, [r4, 0x1E]
- bl sub_81DB5E8
- ldrb r1, [r4, 0x13]
- lsls r1, 29
- lsrs r1, 29
- movs r0, 0x1
- bl CopyContestCategoryToStringVar
- ldr r0, =gStringVar3
- ldrh r1, [r4, 0x6]
- bl CopyEasyChatWord
- ldrh r0, [r4, 0x14]
- cmp r0, 0
- beq _080F18B8
- ldr r1, =gUnknown_0203A030
- movs r0, 0x6
- b _080F1950
- .pool
-_080F18B8:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x7
- b _080F1950
- .pool
-_080F18C4:
- ldr r0, =gStringVar1
- ldrh r2, [r4, 0x2]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar2
- ldrh r2, [r4, 0x14]
- movs r1, 0xD
- muls r1, r2
- ldr r2, =gMoveNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- ldrh r1, [r4, 0x6]
- bl CopyEasyChatWord
- ldr r1, =gUnknown_0203A030
- movs r0, 0x7
- b _080F1950
- .pool
-_080F190C:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x16
- ldrb r2, [r4, 0x1E]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r4, 0x2]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- bl TVShowDone
- b _080F1952
- .pool
-_080F193C:
- ldr r0, =gStringVar1
- ldrh r2, [r4, 0x2]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
-_080F194C:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
-_080F1950:
- strb r0, [r1]
-_080F1952:
- ldr r0, =gUnknown_0858D204
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowBravoTrainerPokemonProfile
-
- thumb_func_start DoTVShowBravoTrainerBattleTower
-DoTVShowBravoTrainerBattleTower: @ 80F1974
- push {r4,r5,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r5, [r0]
- adds r2, r0, 0
- cmp r5, 0xE
- bls _080F199C
- b _080F1BEA
-_080F199C:
- lsls r0, r5, 2
- ldr r1, =_080F19C0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F19C0:
- .4byte _080F19FC
- .4byte _080F1A40
- .4byte _080F1A90
- .4byte _080F1AB4
- .4byte _080F1AE0
- .4byte _080F1B28
- .4byte _080F1B38
- .4byte _080F1B48
- .4byte _080F1B4E
- .4byte _080F1B4E
- .4byte _080F1B4E
- .4byte _080F1B68
- .4byte _080F1B94
- .4byte _080F1B94
- .4byte _080F1BCC
-_080F19FC:
- ldr r0, =gStringVar1
- adds r1, r4, 0x2
- ldrb r2, [r4, 0x1D]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r4, 0xA]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldrh r0, [r4, 0x16]
- cmp r0, 0x6
- bls _080F1A34
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- b _080F1BEA
- .pool
-_080F1A34:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
- strb r0, [r1]
- b _080F1BEA
- .pool
-_080F1A40:
- ldrb r0, [r4, 0x1A]
- cmp r0, 0x32
- bne _080F1A58
- ldr r0, =gStringVar1
- ldr r1, =gText_Lv50
- bl StringCopy
- b _080F1A60
- .pool
-_080F1A58:
- ldr r0, =gStringVar1
- ldr r1, =gText_OpenLevel
- bl StringCopy
-_080F1A60:
- ldrh r1, [r4, 0x16]
- movs r0, 0x1
- bl sub_80EF340
- ldrb r0, [r4, 0x1C]
- cmp r0, 0x1
- bne _080F1A84
- ldr r1, =gUnknown_0203A030
- movs r0, 0x3
- strb r0, [r1]
- b _080F1BEA
- .pool
-_080F1A84:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x4
- strb r0, [r1]
- b _080F1BEA
- .pool
-_080F1A90:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0xC
- ldrb r2, [r4, 0x1E]
- bl sub_81DB5E8
- ldrh r1, [r4, 0x16]
- adds r1, 0x1
- movs r0, 0x1
- bl sub_80EF340
-_080F1AA6:
- ldrb r0, [r4, 0x1B]
- cmp r0, 0
- beq _080F1B02
- b _080F1B1C
- .pool
-_080F1AB4:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0xC
- ldrb r2, [r4, 0x1E]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r4, 0x14]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- b _080F1AA6
- .pool
-_080F1AE0:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0xC
- ldrb r2, [r4, 0x1E]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r4, 0x14]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldrb r0, [r4, 0x1B]
- cmp r0, 0
- bne _080F1B1C
-_080F1B02:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x5
- strb r0, [r1]
- b _080F1BEA
- .pool
-_080F1B1C:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x6
- strb r0, [r1]
- b _080F1BEA
- .pool
-_080F1B28:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0xC
- ldrb r2, [r4, 0x1E]
- b _080F1B54
- .pool
-_080F1B38:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0xC
- ldrb r2, [r4, 0x1E]
- b _080F1B54
- .pool
-_080F1B48:
- movs r0, 0xB
- strb r0, [r2]
- b _080F1BEA
-_080F1B4E:
- ldr r0, =gStringVar1
- adds r1, r4, 0x2
- ldrb r2, [r4, 0x1D]
-_080F1B54:
- bl sub_81DB5E8
- ldr r1, =gUnknown_0203A030
- movs r0, 0xB
- strb r0, [r1]
- b _080F1BEA
- .pool
-_080F1B68:
- ldr r0, =gStringVar1
- ldrh r1, [r4, 0x18]
- bl CopyEasyChatWord
- ldrb r0, [r4, 0x1B]
- cmp r0, 0
- bne _080F1B88
- ldr r1, =gUnknown_0203A030
- movs r0, 0xC
- strb r0, [r1]
- b _080F1BEA
- .pool
-_080F1B88:
- ldr r1, =gUnknown_0203A030
- movs r0, 0xD
- strb r0, [r1]
- b _080F1BEA
- .pool
-_080F1B94:
- ldr r0, =gStringVar1
- ldrh r1, [r4, 0x18]
- bl CopyEasyChatWord
- ldr r0, =gStringVar2
- adds r1, r4, 0x2
- ldrb r2, [r4, 0x1D]
- bl sub_81DB5E8
- ldr r0, =gStringVar3
- adds r1, r4, 0
- adds r1, 0xC
- ldrb r2, [r4, 0x1E]
- bl sub_81DB5E8
- ldr r1, =gUnknown_0203A030
- movs r0, 0xE
- strb r0, [r1]
- b _080F1BEA
- .pool
-_080F1BCC:
- ldr r0, =gStringVar1
- adds r1, r4, 0x2
- ldrb r2, [r4, 0x1D]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r4, 0xA]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- bl TVShowDone
-_080F1BEA:
- ldr r0, =gUnknown_0858D240
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowBravoTrainerBattleTower
-
- thumb_func_start DoTVShowTodaysSmartShopper
-DoTVShowTodaysSmartShopper: @ 80F1C0C
- push {r4-r6,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r5, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r6, [r0]
- adds r2, r0, 0
- cmp r6, 0xC
- bls _080F1C34
- b _080F1E2C
-_080F1C34:
- lsls r0, r6, 2
- ldr r1, =_080F1C58
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F1C58:
- .4byte _080F1C8C
- .4byte _080F1CC8
- .4byte _080F1D10
- .4byte _080F1D22
- .4byte _080F1D10
- .4byte _080F1D10
- .4byte _080F1D4C
- .4byte _080F1D7C
- .4byte _080F1DAC
- .4byte _080F1DB8
- .4byte _080F1DC6
- .4byte _080F1DD8
- .4byte _080F1E1C
-_080F1C8C:
- ldr r0, =gStringVar1
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x3]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrb r1, [r5, 0x12]
- movs r2, 0
- bl GetMapName
- ldrh r0, [r5, 0xC]
- cmp r0, 0xFE
- bls _080F1CBC
- ldr r1, =gUnknown_0203A030
- movs r0, 0xB
- strb r0, [r1]
- b _080F1E2C
- .pool
-_080F1CBC:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- b _080F1E2C
- .pool
-_080F1CC8:
- ldr r0, =gStringVar1
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x3]
- bl sub_81DB5E8
- ldr r4, =gStringVar2
- ldrh r0, [r5, 0x6]
- bl ItemId_GetItem
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldrh r1, [r5, 0xC]
- movs r0, 0x2
- bl sub_80EF340
- ldr r4, =gUnknown_0203A030
- bl Random
- ldrb r2, [r4]
- adds r2, 0x1
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- ands r0, r1
- adds r0, r2
- strb r0, [r4]
- b _080F1E2C
- .pool
-_080F1D10:
- ldrh r0, [r5, 0x8]
- cmp r0, 0
- beq _080F1D1C
- movs r0, 0x6
- strb r0, [r2]
- b _080F1E2C
-_080F1D1C:
- movs r0, 0xA
- strb r0, [r2]
- b _080F1E2C
-_080F1D22:
- ldrh r1, [r5, 0xC]
- adds r1, 0x1
- movs r0, 0x2
- bl sub_80EF340
- ldrh r0, [r5, 0x8]
- cmp r0, 0
- beq _080F1D40
- ldr r1, =gUnknown_0203A030
- movs r0, 0x6
- strb r0, [r1]
- b _080F1E2C
- .pool
-_080F1D40:
- ldr r1, =gUnknown_0203A030
- movs r0, 0xA
- strb r0, [r1]
- b _080F1E2C
- .pool
-_080F1D4C:
- ldr r4, =gStringVar2
- ldrh r0, [r5, 0x8]
- bl ItemId_GetItem
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldrh r1, [r5, 0xE]
- movs r0, 0x2
- bl sub_80EF340
- ldrh r0, [r5, 0xA]
- cmp r0, 0
- beq _080F1D94
- ldr r1, =gUnknown_0203A030
- movs r0, 0x7
- strb r0, [r1]
- b _080F1E2C
- .pool
-_080F1D7C:
- ldr r4, =gStringVar2
- ldrh r0, [r5, 0xA]
- bl ItemId_GetItem
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldrh r1, [r5, 0x10]
- movs r0, 0x2
- bl sub_80EF340
-_080F1D94:
- ldrb r0, [r5, 0x2]
- cmp r0, 0x1
- beq _080F1DFA
- ldr r1, =gUnknown_0203A030
- movs r0, 0x9
- strb r0, [r1]
- b _080F1E2C
- .pool
-_080F1DAC:
- ldrh r0, [r5, 0xC]
- cmp r0, 0xFE
- bls _080F1DD2
- movs r0, 0xC
- strb r0, [r2]
- b _080F1E2C
-_080F1DB8:
- movs r0, 0x1
- adds r1, r5, 0
- bl sub_80EF40C
- bl TVShowDone
- b _080F1E2C
-_080F1DC6:
- ldrb r0, [r5, 0x2]
- cmp r0, 0x1
- bne _080F1DD2
- movs r0, 0x8
- strb r0, [r2]
- b _080F1E2C
-_080F1DD2:
- movs r0, 0x9
- strb r0, [r2]
- b _080F1E2C
-_080F1DD8:
- ldr r0, =gStringVar1
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x3]
- bl sub_81DB5E8
- ldr r4, =gStringVar2
- ldrh r0, [r5, 0x6]
- bl ItemId_GetItem
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldrb r0, [r5, 0x2]
- cmp r0, 0x1
- bne _080F1E10
-_080F1DFA:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x8
- strb r0, [r1]
- b _080F1E2C
- .pool
-_080F1E10:
- ldr r1, =gUnknown_0203A030
- movs r0, 0xC
- strb r0, [r1]
- b _080F1E2C
- .pool
-_080F1E1C:
- ldr r0, =gStringVar1
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x3]
- bl sub_81DB5E8
- bl TVShowDone
-_080F1E2C:
- ldr r0, =gUnknown_0858D1D0
- lsls r1, r6, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowTodaysSmartShopper
-
- thumb_func_start DoTVShowTheNameRaterShow
-DoTVShowTheNameRaterShow: @ 80F1E48
- push {r4-r6,lr}
- sub sp, 0x8
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r5, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r6, [r0]
- adds r2, r0, 0
- cmp r6, 0x12
- bls _080F1E72
- b _080F20FE
-_080F1E72:
- lsls r0, r6, 2
- ldr r1, =_080F1E94
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F1E94:
- .4byte _080F1EE0
- .4byte _080F1F28
- .4byte _080F1F4A
- .4byte _080F1F28
- .4byte _080F1F28
- .4byte _080F1F28
- .4byte _080F1F28
- .4byte _080F1F28
- .4byte _080F1F28
- .4byte _080F1F90
- .4byte _080F1F90
- .4byte _080F1F90
- .4byte _080F20EC
- .4byte _080F1FCC
- .4byte _080F200C
- .4byte _080F202C
- .4byte _080F2074
- .4byte _080F20A4
- .4byte _080F20F0
-_080F1EE0:
- ldr r0, =gStringVar1
- adds r1, r5, 0
- adds r1, 0xF
- ldrb r2, [r5, 0x1E]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r5, 0x2]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- adds r1, r5, 0x4
- ldrb r2, [r5, 0x1F]
- bl sub_81DB5E8
- ldr r4, =gUnknown_0203A030
- adds r0, r5, 0
- bl sub_80EFBA4
- adds r0, 0x1
- strb r0, [r4]
- b _080F20FE
- .pool
-_080F1F28:
- ldrb r0, [r5, 0x1A]
- cmp r0, 0
- bne _080F1F34
- movs r0, 0x9
- strb r0, [r2]
- b _080F20FE
-_080F1F34:
- cmp r0, 0x1
- bne _080F1F3E
- movs r0, 0xA
- strb r0, [r2]
- b _080F20FE
-_080F1F3E:
- cmp r0, 0x2
- beq _080F1F44
- b _080F20FE
-_080F1F44:
- movs r0, 0xB
- strb r0, [r2]
- b _080F20FE
-_080F1F4A:
- ldr r0, =gStringVar1
- adds r1, r5, 0
- adds r1, 0xF
- ldrb r2, [r5, 0x1E]
- bl sub_81DB5E8
- ldrb r0, [r5, 0x1A]
- cmp r0, 0
- bne _080F1F6C
- ldr r1, =gUnknown_0203A030
- movs r0, 0x9
- strb r0, [r1]
- b _080F20FE
- .pool
-_080F1F6C:
- cmp r0, 0x1
- bne _080F1F7C
- ldr r1, =gUnknown_0203A030
- movs r0, 0xA
- strb r0, [r1]
- b _080F20FE
- .pool
-_080F1F7C:
- cmp r0, 0x2
- beq _080F1F82
- b _080F20FE
-_080F1F82:
- ldr r1, =gUnknown_0203A030
- movs r0, 0xB
- strb r0, [r1]
- b _080F20FE
- .pool
-_080F1F90:
- ldr r0, =gStringVar1
- adds r1, r5, 0x4
- ldrb r2, [r5, 0x1F]
- bl sub_81DB5E8
- movs r4, 0
- str r4, [sp]
- str r5, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0x1
- bl sub_80EFBDC
- str r4, [sp]
- str r5, [sp, 0x4]
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0
- movs r3, 0x1
- bl sub_80EFBDC
- ldr r1, =gUnknown_0203A030
- movs r0, 0xC
- strb r0, [r1]
- b _080F20FE
- .pool
-_080F1FCC:
- ldr r0, =gStringVar1
- adds r1, r5, 0
- adds r1, 0xF
- ldrb r2, [r5, 0x1E]
- bl sub_81DB5E8
- movs r4, 0
- str r4, [sp]
- str r5, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0x2
- movs r3, 0
- bl sub_80EFBDC
- str r4, [sp]
- str r5, [sp, 0x4]
- movs r0, 0x2
- movs r1, 0
- movs r2, 0x3
- movs r3, 0x1
- bl sub_80EFBDC
- ldr r1, =gUnknown_0203A030
- movs r0, 0xE
- strb r0, [r1]
- b _080F20FE
- .pool
-_080F200C:
- movs r4, 0
- str r4, [sp]
- str r5, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0x2
- movs r3, 0x1
- bl sub_80EFBDC
- str r4, [sp]
- str r5, [sp, 0x4]
- movs r0, 0x2
- movs r1, 0
- movs r2, 0x3
- movs r3, 0
- b _080F20D2
-_080F202C:
- movs r0, 0
- str r0, [sp]
- str r5, [sp, 0x4]
- movs r1, 0
- movs r2, 0x2
- movs r3, 0x1
- bl sub_80EFBDC
- ldr r0, =gStringVar2
- ldrh r2, [r5, 0x2]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldrh r0, [r5, 0x2]
- str r0, [sp]
- str r5, [sp, 0x4]
- movs r0, 0x2
- movs r1, 0
- movs r2, 0x3
- movs r3, 0x2
- bl sub_80EFBDC
- ldr r1, =gUnknown_0203A030
- movs r0, 0x10
- strb r0, [r1]
- b _080F20FE
- .pool
-_080F2074:
- ldrh r0, [r5, 0x2]
- str r0, [sp]
- str r5, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0x2
- movs r3, 0x2
- bl sub_80EFBDC
- movs r0, 0
- str r0, [sp]
- str r5, [sp, 0x4]
- movs r0, 0x2
- movs r1, 0
- movs r2, 0x3
- movs r3, 0x1
- bl sub_80EFBDC
- ldr r1, =gUnknown_0203A030
- movs r0, 0x11
- strb r0, [r1]
- b _080F20FE
- .pool
-_080F20A4:
- movs r0, 0
- str r0, [sp]
- str r5, [sp, 0x4]
- movs r1, 0
- movs r2, 0x2
- movs r3, 0x1
- bl sub_80EFBDC
- ldr r0, =gStringVar2
- ldrh r2, [r5, 0x1C]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldrh r0, [r5, 0x1C]
- str r0, [sp]
- str r5, [sp, 0x4]
- movs r0, 0x2
- movs r1, 0
- movs r2, 0x3
- movs r3, 0x2
-_080F20D2:
- bl sub_80EFBDC
- ldr r1, =gUnknown_0203A030
- movs r0, 0x12
- strb r0, [r1]
- b _080F20FE
- .pool
-_080F20EC:
- movs r6, 0x12
- strb r6, [r2]
-_080F20F0:
- ldr r0, =gStringVar1
- adds r1, r5, 0x4
- ldrb r2, [r5, 0x1F]
- bl sub_81DB5E8
- bl TVShowDone
-_080F20FE:
- ldr r0, =gUnknown_0858D338
- lsls r1, r6, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowTheNameRaterShow
-
- thumb_func_start DoTVShowPokemonTodaySuccessfulCapture
-DoTVShowPokemonTodaySuccessfulCapture: @ 80F211C
- push {r4-r6,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r5, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r6, [r0]
- adds r2, r0, 0
- cmp r6, 0xB
- bls _080F2144
- b _080F2358
-_080F2144:
- lsls r0, r6, 2
- ldr r1, =_080F2168
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F2168:
- .4byte _080F2198
- .4byte _080F21EC
- .4byte _080F21F2
- .4byte _080F222C
- .4byte _080F2264
- .4byte _080F226A
- .4byte _080F22A0
- .4byte _080F22F4
- .4byte _080F22F4
- .4byte _080F2324
- .4byte _080F2324
- .4byte _080F2354
-_080F2198:
- ldr r0, =gStringVar1
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x2]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r5, 0x10]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- adds r1, r5, 0x4
- ldrb r2, [r5, 0x3]
- bl sub_81DB5E8
- ldrb r0, [r5, 0xF]
- cmp r0, 0x1
- bne _080F21E0
- ldr r1, =gUnknown_0203A030
- movs r0, 0x5
- strb r0, [r1]
- b _080F2358
- .pool
-_080F21E0:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- b _080F2358
- .pool
-_080F21EC:
- movs r0, 0x2
- strb r0, [r2]
- b _080F2358
-_080F21F2:
- ldr r4, =gStringVar2
- ldrb r0, [r5, 0xF]
- bl ItemId_GetItem
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldrb r1, [r5, 0x12]
- movs r0, 0x2
- bl sub_80EF340
- ldrb r0, [r5, 0x12]
- cmp r0, 0x3
- bhi _080F2220
- ldr r1, =gUnknown_0203A030
- movs r0, 0x3
- strb r0, [r1]
- b _080F2358
- .pool
-_080F2220:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x4
- strb r0, [r1]
- b _080F2358
- .pool
-_080F222C:
- ldr r0, =gStringVar1
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x2]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r5, 0x10]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- adds r1, r5, 0x4
- ldrb r2, [r5, 0x3]
- bl sub_81DB5E8
- b _080F2286
- .pool
-_080F2264:
- movs r0, 0x6
- strb r0, [r2]
- b _080F2358
-_080F226A:
- ldr r0, =gStringVar1
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x2]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r5, 0x10]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
-_080F2286:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x6
- strb r0, [r1]
- b _080F2358
- .pool
-_080F22A0:
- ldr r0, =gStringVar1
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x2]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r5, 0x10]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- adds r1, r5, 0x4
- ldrb r2, [r5, 0x3]
- bl sub_81DB5E8
- ldr r4, =gUnknown_0203A030
- bl Random
- ldrb r2, [r4]
- adds r2, 0x1
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- ands r0, r1
- adds r0, r2
- strb r0, [r4]
- b _080F2358
- .pool
-_080F22F4:
- ldr r0, =gStringVar1
- ldrh r1, [r5, 0x10]
- movs r4, 0xB
- muls r1, r4
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar2
- adds r1, r5, 0x4
- ldrb r2, [r5, 0x3]
- bl sub_81DB5E8
- ldrh r1, [r5, 0x10]
- movs r0, 0x2
- bl sub_80EF9E8
- b _080F233E
- .pool
-_080F2324:
- ldr r0, =gStringVar1
- ldrh r1, [r5, 0x10]
- movs r4, 0xB
- muls r1, r4
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar2
- adds r1, r5, 0x4
- ldrb r2, [r5, 0x3]
- bl sub_81DB5E8
-_080F233E:
- ldr r0, =gUnknown_0203A030
- strb r4, [r0]
- b _080F2358
- .pool
-_080F2354:
- bl TVShowDone
-_080F2358:
- ldr r0, =gUnknown_0858D1A0
- lsls r1, r6, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowPokemonTodaySuccessfulCapture
-
- thumb_func_start DoTVShowPokemonTodayFailedCapture
-DoTVShowPokemonTodayFailedCapture: @ 80F2370
- push {r4,r5,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r5, [r0]
- cmp r5, 0x6
- bls _080F2396
- b _080F24C0
-_080F2396:
- lsls r0, r5, 2
- ldr r1, =_080F23B8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F23B8:
- .4byte _080F23D4
- .4byte _080F2408
- .4byte _080F245C
- .4byte _080F245C
- .4byte _080F24A0
- .4byte _080F24A0
- .4byte _080F24BC
-_080F23D4:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x2]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r4, 0xC]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- b _080F24C0
- .pool
-_080F2408:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x2]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrb r1, [r4, 0x12]
- movs r2, 0
- bl GetMapName
- ldr r0, =gStringVar3
- ldrh r2, [r4, 0xE]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldrb r0, [r4, 0x11]
- cmp r0, 0x1
- bne _080F2450
- ldr r1, =gUnknown_0203A030
- movs r0, 0x3
- strb r0, [r1]
- b _080F24C0
- .pool
-_080F2450:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
- strb r0, [r1]
- b _080F24C0
- .pool
-_080F245C:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x2]
- bl sub_81DB5E8
- ldrb r1, [r4, 0x10]
- movs r0, 0x1
- bl sub_80EF340
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __umodsi3
- lsls r0, 16
- cmp r0, 0
- bne _080F2494
- ldr r1, =gUnknown_0203A030
- movs r0, 0x5
- strb r0, [r1]
- b _080F24C0
- .pool
-_080F2494:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x4
- strb r0, [r1]
- b _080F24C0
- .pool
-_080F24A0:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x2]
- bl sub_81DB5E8
- ldr r1, =gUnknown_0203A030
- movs r0, 0x6
- strb r0, [r1]
- b _080F24C0
- .pool
-_080F24BC:
- bl TVShowDone
-_080F24C0:
- ldr r0, =gUnknown_0858D394
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowPokemonTodayFailedCapture
-
- thumb_func_start DoTVShowPokemonFanClubLetter
-DoTVShowPokemonFanClubLetter: @ 80F24D8
- push {r4-r7,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r5, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r7, [r0]
- adds r6, r0, 0
- cmp r7, 0x33
- bls _080F2500
- b _080F26F0
-_080F2500:
- lsls r0, r7, 2
- ldr r1, =_080F2524
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F2524:
- .4byte _080F25F4
- .4byte _080F2628
- .4byte _080F2654
- .4byte _080F265A
- .4byte _080F2672
- .4byte _080F2672
- .4byte _080F2672
- .4byte _080F2684
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26F0
- .4byte _080F26A6
- .4byte _080F26CC
-_080F25F4:
- ldr r0, =gStringVar1
- adds r1, r5, 0
- adds r1, 0x10
- ldrb r2, [r5, 0x18]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r5, 0x2]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r1, =gUnknown_0203A030
- movs r0, 0x32
- strb r0, [r1]
- b _080F26F0
- .pool
-_080F2628:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- ands r0, r1
- adds r2, r0, 0x1
- cmp r2, 0x1
- bne _080F2648
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
- strb r0, [r1]
- b _080F26F0
- .pool
-_080F2648:
- ldr r1, =gUnknown_0203A030
- adds r0, r2, 0x2
- strb r0, [r1]
- b _080F26F0
- .pool
-_080F2654:
- movs r0, 0x33
- strb r0, [r6]
- b _080F26F0
-_080F265A:
- bl Random
- ldrb r4, [r6]
- adds r4, 0x1
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __umodsi3
- adds r0, r4
- strb r0, [r6]
- b _080F26F0
-_080F2672:
- adds r0, r5, 0
- bl sub_80EFB58
- ldr r1, =gUnknown_0203A030
- movs r0, 0x7
- strb r0, [r1]
- b _080F26F0
- .pool
-_080F2684:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1F
- bl __umodsi3
- adds r0, 0x46
- lsls r0, 16
- lsrs r2, r0, 16
- movs r0, 0x2
- adds r1, r2, 0
- bl sub_80EF340
- bl TVShowDone
- b _080F26F0
-_080F26A6:
- ldr r4, =gStringVar4
- adds r1, r5, 0x4
- adds r0, r4, 0
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertEasyChatWordsToString
- adds r0, r4, 0
- bl box_related_two__2
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- b _080F26FC
- .pool
-_080F26CC:
- ldr r4, =gStringVar4
- adds r1, r5, 0x4
- adds r0, r4, 0
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertEasyChatWordsToString
- adds r0, r4, 0
- bl box_related_two__2
- ldr r1, =gUnknown_0203A030
- movs r0, 0x3
- strb r0, [r1]
- b _080F26FC
- .pool
-_080F26F0:
- ldr r0, =gUnknown_0858D150
- lsls r1, r7, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
-_080F26FC:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowPokemonFanClubLetter
-
- thumb_func_start DoTVShowRecentHappenings
-DoTVShowRecentHappenings: @ 80F2708
- push {r4-r7,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r5, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r6, [r0]
- adds r7, r0, 0
- cmp r6, 0x32
- bls _080F2730
- b _080F288C
-_080F2730:
- lsls r0, r6, 2
- ldr r1, =_080F2754
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F2754:
- .4byte _080F2820
- .4byte _080F2844
- .4byte _080F285C
- .4byte _080F285C
- .4byte _080F285C
- .4byte _080F2862
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F288C
- .4byte _080F2868
-_080F2820:
- ldr r0, =gStringVar1
- adds r1, r5, 0
- adds r1, 0x10
- ldrb r2, [r5, 0x18]
- bl sub_81DB5E8
- adds r0, r5, 0
- bl sub_80EFB58
- ldr r1, =gUnknown_0203A030
- movs r0, 0x32
- strb r0, [r1]
- b _080F288C
- .pool
-_080F2844:
- bl Random
- ldrb r4, [r7]
- adds r4, 0x1
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __umodsi3
- adds r0, r4
- strb r0, [r7]
- b _080F288C
-_080F285C:
- movs r0, 0x5
- strb r0, [r7]
- b _080F288C
-_080F2862:
- bl TVShowDone
- b _080F288C
-_080F2868:
- ldr r4, =gStringVar4
- adds r1, r5, 0x4
- adds r0, r4, 0
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertEasyChatWordsToString
- adds r0, r4, 0
- bl box_related_two__2
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- b _080F2898
- .pool
-_080F288C:
- ldr r0, =gUnknown_0858D170
- lsls r1, r6, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
-_080F2898:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowRecentHappenings
-
- thumb_func_start DoTVShowPokemonFanClubOpinions
-DoTVShowPokemonFanClubOpinions: @ 80F28A4
- push {r4-r6,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r6, =gUnknown_0203A030
- ldrb r5, [r6]
- cmp r5, 0x3
- bgt _080F28E8
- cmp r5, 0x1
- bge _080F2930
- cmp r5, 0
- beq _080F28EE
- b _080F297E
- .pool
-_080F28E8:
- cmp r5, 0x4
- beq _080F2968
- b _080F297E
-_080F28EE:
- ldr r0, =gStringVar1
- adds r1, r4, 0x5
- ldrb r2, [r4, 0xD]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r4, 0x2]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- adds r1, r4, 0
- adds r1, 0x10
- ldrb r2, [r4, 0xE]
- bl sub_81DB5E8
- ldrb r0, [r4, 0x4]
- lsrs r0, 4
- adds r0, 0x1
- strb r0, [r6]
- b _080F297E
- .pool
-_080F2930:
- ldr r0, =gStringVar1
- adds r1, r4, 0x5
- ldrb r2, [r4, 0xD]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r4, 0x2]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- ldrh r1, [r4, 0x1C]
- bl CopyEasyChatWord
- movs r0, 0x4
- strb r0, [r6]
- b _080F297E
- .pool
-_080F2968:
- ldr r0, =gStringVar1
- adds r1, r4, 0x5
- ldrb r2, [r4, 0xD]
- bl sub_81DB5E8
- ldr r0, =gStringVar3
- ldrh r1, [r4, 0x1E]
- bl CopyEasyChatWord
- bl TVShowDone
-_080F297E:
- ldr r0, =gUnknown_0858D188
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowPokemonFanClubOpinions
-
- thumb_func_start DoTVShowDummiedOut
-DoTVShowDummiedOut: @ 80F299C
- bx lr
- thumb_func_end DoTVShowDummiedOut
-
- thumb_func_start DoTVShowPokemonNewsMassOutbreak
-DoTVShowPokemonNewsMassOutbreak: @ 80F29A0
- push {r4,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r4, [r2]
- adds r4, r0
- ldr r0, =gStringVar1
- ldrb r1, [r4, 0x10]
- movs r2, 0
- bl GetMapName
- ldr r0, =gStringVar2
- ldrh r2, [r4, 0xC]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- bl TVShowDone
- bl StartMassOutbreak
- ldr r1, =gUnknown_0858D19C
- ldr r0, =gUnknown_0203A030
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl box_related_two__2
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowPokemonNewsMassOutbreak
-
- thumb_func_start DoTVShowPokemonContestLiveUpdates
-DoTVShowPokemonContestLiveUpdates: @ 80F2A10
- push {r4-r7,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r6, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r7, [r0]
- adds r2, r0, 0
- cmp r7, 0x20
- bls _080F2A38
- b _080F311C
-_080F2A38:
- lsls r0, r7, 2
- ldr r1, =_080F2A5C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F2A5C:
- .4byte _080F2AE0
- .4byte _080F2B54
- .4byte _080F2BA2
- .4byte _080F2BC8
- .4byte _080F2BF4
- .4byte _080F2D2C
- .4byte _080F2D40
- .4byte _080F2D54
- .4byte _080F2D68
- .4byte _080F2DE8
- .4byte _080F2DFC
- .4byte _080F2E10
- .4byte _080F2E24
- .4byte _080F2E38
- .4byte _080F2E4C
- .4byte _080F2ECC
- .4byte _080F2EE0
- .4byte _080F2EF4
- .4byte _080F2F08
- .4byte _080F2F1C
- .4byte _080F2F30
- .4byte _080F2F44
- .4byte _080F2F58
- .4byte _080F2F94
- .4byte _080F3064
- .4byte _080F3080
- .4byte _080F30E0
- .4byte _080F30E0
- .4byte _080F30A8
- .4byte _080F30AE
- .4byte _080F30E0
- .4byte _080F30E0
- .4byte _080F30FC
-_080F2AE0:
- ldr r0, =gStringVar1
- ldrb r1, [r6, 0x1C]
- bl sub_818E868
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- adds r1, r6, 0
- adds r1, 0x14
- ldrb r2, [r6, 0x1D]
- bl sub_81DB5E8
- ldrb r0, [r6, 0xD]
- ldrb r1, [r6, 0xE]
- cmp r0, r1
- bne _080F2B38
- cmp r0, 0
- bne _080F2B2C
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2B2C:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x3
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2B38:
- cmp r0, r1
- bls _080F2B48
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2B48:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x4
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2B54:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldrb r1, [r6, 0xF]
- cmp r1, 0x8
- bne _080F2B6C
- b _080F2CF0
-_080F2B6C:
- cmp r1, 0x8
- bgt _080F2B88
-_080F2B70:
- cmp r1, 0x2
- bne _080F2B76
- b _080F2CD8
-_080F2B76:
- cmp r1, 0x2
- bgt _080F2B7C
- b _080F2C96
-_080F2B7C:
- b _080F2CAC
- .pool
-_080F2B88:
- cmp r1, 0x20
- bne _080F2B8E
- b _080F2D08
-_080F2B8E:
- cmp r1, 0x20
- bgt _080F2B94
- b _080F2CBA
-_080F2B94:
- cmp r1, 0x40
- bne _080F2B9A
- b _080F2D14
-_080F2B9A:
- cmp r1, 0x80
- beq _080F2BA0
- b _080F311C
-_080F2BA0:
- b _080F2D20
-_080F2BA2:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
-_080F2BB2:
- ldrb r1, [r6, 0xF]
- cmp r1, 0x8
- bne _080F2BBA
- b _080F2CF0
-_080F2BBA:
- cmp r1, 0x8
- ble _080F2B70
- b _080F2B88
- .pool
-_080F2BC8:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- adds r1, r6, 0
- adds r1, 0x14
- ldrb r2, [r6, 0x1D]
- bl sub_81DB5E8
- b _080F2BB2
- .pool
-_080F2BF4:
- ldrb r0, [r6, 0x1C]
- cmp r0, 0x4
- bhi _080F2C74
- lsls r0, 2
- ldr r1, =_080F2C08
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F2C08:
- .4byte _080F2C1C
- .4byte _080F2C30
- .4byte _080F2C44
- .4byte _080F2C58
- .4byte _080F2C6C
-_080F2C1C:
- ldr r0, =gStringVar1
- ldr r1, =gText_Cool
- bl StringCopy
- b _080F2C74
- .pool
-_080F2C30:
- ldr r0, =gStringVar1
- ldr r1, =gText_Beauty
- bl StringCopy
- b _080F2C74
- .pool
-_080F2C44:
- ldr r0, =gStringVar1
- ldr r1, =gText_Cute
- bl StringCopy
- b _080F2C74
- .pool
-_080F2C58:
- ldr r0, =gStringVar1
- ldr r1, =gText_Smart
- bl StringCopy
- b _080F2C74
- .pool
-_080F2C6C:
- ldr r0, =gStringVar1
- ldr r1, =gText_Tough
- bl StringCopy
-_080F2C74:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldrb r1, [r6, 0xF]
- cmp r1, 0x8
- beq _080F2CF0
- cmp r1, 0x8
- bgt _080F2CB2
- cmp r1, 0x2
- beq _080F2CD8
- cmp r1, 0x2
- bgt _080F2CAC
-_080F2C96:
- cmp r1, 0x1
- beq _080F2CCA
- b _080F311C
- .pool
-_080F2CAC:
- cmp r1, 0x4
- beq _080F2CE4
- b _080F311C
-_080F2CB2:
- cmp r1, 0x20
- beq _080F2D08
- cmp r1, 0x20
- bgt _080F2CC0
-_080F2CBA:
- cmp r1, 0x10
- beq _080F2CFC
- b _080F311C
-_080F2CC0:
- cmp r1, 0x40
- beq _080F2D14
- cmp r1, 0x80
- beq _080F2D20
- b _080F311C
-_080F2CCA:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x8
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2CD8:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x5
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2CE4:
- ldr r1, =gUnknown_0203A030
- movs r0, 0xE
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2CF0:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x7
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2CFC:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x6
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2D08:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x14
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2D14:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x15
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2D20:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x16
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2D2C:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- b _080F2F72
- .pool
-_080F2D40:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- b _080F2F72
- .pool
-_080F2D54:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- b _080F2F72
- .pool
-_080F2D68:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldrb r0, [r6, 0x1C]
- cmp r0, 0x4
- bls _080F2D80
- b _080F311C
-_080F2D80:
- lsls r0, 2
- ldr r1, =_080F2D98
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F2D98:
- .4byte _080F2DAC
- .4byte _080F2DB8
- .4byte _080F2DC4
- .4byte _080F2DD0
- .4byte _080F2DDC
-_080F2DAC:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x9
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2DB8:
- ldr r1, =gUnknown_0203A030
- movs r0, 0xA
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2DC4:
- ldr r1, =gUnknown_0203A030
- movs r0, 0xB
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2DD0:
- ldr r1, =gUnknown_0203A030
- movs r0, 0xC
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2DDC:
- ldr r1, =gUnknown_0203A030
- movs r0, 0xD
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2DE8:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- b _080F2F72
- .pool
-_080F2DFC:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- b _080F2F72
- .pool
-_080F2E10:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- b _080F2F72
- .pool
-_080F2E24:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- b _080F2F72
- .pool
-_080F2E38:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- b _080F2F72
- .pool
-_080F2E4C:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldrb r0, [r6, 0x1C]
- cmp r0, 0x4
- bls _080F2E64
- b _080F311C
-_080F2E64:
- lsls r0, 2
- ldr r1, =_080F2E7C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F2E7C:
- .4byte _080F2E90
- .4byte _080F2E9C
- .4byte _080F2EA8
- .4byte _080F2EB4
- .4byte _080F2EC0
-_080F2E90:
- ldr r1, =gUnknown_0203A030
- movs r0, 0xF
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2E9C:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x10
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2EA8:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x11
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2EB4:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x12
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2EC0:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x13
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2ECC:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- b _080F2F72
- .pool
-_080F2EE0:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- b _080F2F72
- .pool
-_080F2EF4:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- b _080F2F72
- .pool
-_080F2F08:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- b _080F2F72
- .pool
-_080F2F1C:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- b _080F2F72
- .pool
-_080F2F30:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- b _080F2F72
- .pool
-_080F2F44:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- b _080F2F72
- .pool
-_080F2F58:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- ldrh r2, [r6, 0x10]
- movs r1, 0xD
- muls r1, r2
- ldr r2, =gMoveNames
-_080F2F72:
- adds r1, r2
- bl StringCopy
- ldr r1, =gUnknown_0203A030
- movs r0, 0x17
- strb r0, [r1]
- b _080F311C
- .pool
-_080F2F94:
- ldr r0, =gStringVar1
- ldrh r1, [r6, 0x12]
- movs r5, 0xB
- muls r1, r5
- ldr r4, =gSpeciesNames
- adds r1, r4
- bl StringCopy
- ldr r0, =gStringVar2
- adds r1, r6, 0x4
- ldrb r2, [r6, 0x1E]
- bl sub_81DB5E8
- ldr r0, =gStringVar3
- ldrh r1, [r6, 0x2]
- muls r1, r5
- adds r1, r4
- bl StringCopy
- ldrb r0, [r6, 0xC]
- cmp r0, 0x8
- beq _080F3028
- cmp r0, 0x8
- bgt _080F2FEA
- cmp r0, 0x2
- beq _080F3010
- cmp r0, 0x2
- bgt _080F2FE4
- cmp r0, 0x1
- beq _080F3002
- b _080F311C
- .pool
-_080F2FE4:
- cmp r0, 0x4
- beq _080F301C
- b _080F311C
-_080F2FEA:
- cmp r0, 0x20
- beq _080F3040
- cmp r0, 0x20
- bgt _080F2FF8
- cmp r0, 0x10
- beq _080F3034
- b _080F311C
-_080F2FF8:
- cmp r0, 0x40
- beq _080F304C
- cmp r0, 0x80
- beq _080F3058
- b _080F311C
-_080F3002:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1F
- strb r0, [r1]
- b _080F311C
- .pool
-_080F3010:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1E
- strb r0, [r1]
- b _080F311C
- .pool
-_080F301C:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1D
- strb r0, [r1]
- b _080F311C
- .pool
-_080F3028:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1C
- strb r0, [r1]
- b _080F311C
- .pool
-_080F3034:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1B
- strb r0, [r1]
- b _080F311C
- .pool
-_080F3040:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1A
- strb r0, [r1]
- b _080F311C
- .pool
-_080F304C:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x19
- strb r0, [r1]
- b _080F311C
- .pool
-_080F3058:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x18
- strb r0, [r1]
- b _080F311C
- .pool
-_080F3064:
- ldr r0, =gStringVar1
- ldrh r2, [r6, 0x2]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- b _080F30EA
- .pool
-_080F3080:
- ldr r0, =gStringVar1
- adds r1, r6, 0x4
- ldrb r2, [r6, 0x1E]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x2]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- b _080F30EA
- .pool
-_080F30A8:
- movs r0, 0x20
- strb r0, [r2]
- b _080F311C
-_080F30AE:
- ldr r0, =gStringVar1
- adds r1, r6, 0
- adds r1, 0x14
- ldrb r2, [r6, 0x1D]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- b _080F30E2
- .pool
-_080F30E0:
- ldr r0, =gStringVar1
-_080F30E2:
- adds r1, r6, 0x4
- ldrb r2, [r6, 0x1E]
- bl sub_81DB5E8
-_080F30EA:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x20
- strb r0, [r1]
- b _080F311C
- .pool
-_080F30FC:
- ldr r0, =gStringVar1
- adds r1, r6, 0
- adds r1, 0x14
- ldrb r2, [r6, 0x1D]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x12]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- bl TVShowDone
-_080F311C:
- ldr r0, =gUnknown_0858D27C
- lsls r1, r7, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowPokemonContestLiveUpdates
-
- thumb_func_start DoTVShowPokemonBattleUpdate
-DoTVShowPokemonBattleUpdate: @ 80F3140
- push {r4,r5,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r5, [r0]
- adds r2, r0, 0
- cmp r5, 0x7
- bls _080F3168
- b _080F3362
-_080F3168:
- lsls r0, r5, 2
- ldr r1, =_080F318C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F318C:
- .4byte _080F31AC
- .4byte _080F31CA
- .4byte _080F321C
- .4byte _080F3268
- .4byte _080F329C
- .4byte _080F32C0
- .4byte _080F32EC
- .4byte _080F3338
-_080F31AC:
- ldrb r1, [r4, 0x18]
- cmp r1, 0
- bge _080F31B4
- b _080F3362
-_080F31B4:
- cmp r1, 0x1
- ble _080F31BE
- cmp r1, 0x2
- beq _080F31C4
- b _080F3362
-_080F31BE:
- movs r0, 0x1
- strb r0, [r2]
- b _080F3362
-_080F31C4:
- movs r0, 0x5
- strb r0, [r2]
- b _080F3362
-_080F31CA:
- ldr r0, =gStringVar1
- adds r1, r4, 0x4
- ldrb r2, [r4, 0x19]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- adds r1, r4, 0
- adds r1, 0xC
- ldrb r2, [r4, 0x1A]
- bl sub_81DB5E8
- ldrb r0, [r4, 0x18]
- cmp r0, 0
- bne _080F3200
- ldr r0, =gStringVar3
- ldr r1, =gText_Single
- bl StringCopy
- b _080F3208
- .pool
-_080F3200:
- ldr r0, =gStringVar3
- ldr r1, =gText_Double
- bl StringCopy
-_080F3208:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
- strb r0, [r1]
- b _080F3362
- .pool
-_080F321C:
- ldr r0, =gStringVar1
- adds r1, r4, 0x4
- ldrb r2, [r4, 0x19]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r4, 0x16]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- ldrh r2, [r4, 0x14]
- movs r1, 0xD
- muls r1, r2
- ldr r2, =gMoveNames
- adds r1, r2
- bl StringCopy
- ldr r1, =gUnknown_0203A030
- movs r0, 0x3
- strb r0, [r1]
- b _080F3362
- .pool
-_080F3268:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0xC
- ldrb r2, [r4, 0x1A]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r4, 0x2]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r1, =gUnknown_0203A030
- movs r0, 0x4
- strb r0, [r1]
- b _080F3362
- .pool
-_080F329C:
- ldr r0, =gStringVar1
- adds r1, r4, 0x4
- ldrb r2, [r4, 0x19]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- adds r1, r4, 0
- adds r1, 0xC
- ldrb r2, [r4, 0x1A]
- bl sub_81DB5E8
- bl TVShowDone
- b _080F3362
- .pool
-_080F32C0:
- ldr r0, =gStringVar1
- adds r1, r4, 0x4
- ldrb r2, [r4, 0x19]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- adds r1, r4, 0
- adds r1, 0xC
- ldrb r2, [r4, 0x1A]
- bl sub_81DB5E8
- ldr r1, =gUnknown_0203A030
- movs r0, 0x6
- strb r0, [r1]
- b _080F3362
- .pool
-_080F32EC:
- ldr r0, =gStringVar1
- adds r1, r4, 0x4
- ldrb r2, [r4, 0x19]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r4, 0x16]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- ldrh r2, [r4, 0x14]
- movs r1, 0xD
- muls r1, r2
- ldr r2, =gMoveNames
- adds r1, r2
- bl StringCopy
- ldr r1, =gUnknown_0203A030
- movs r0, 0x7
- strb r0, [r1]
- b _080F3362
- .pool
-_080F3338:
- ldr r0, =gStringVar1
- adds r1, r4, 0x4
- ldrb r2, [r4, 0x19]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- adds r1, r4, 0
- adds r1, 0xC
- ldrb r2, [r4, 0x1A]
- bl sub_81DB5E8
- ldr r0, =gStringVar3
- ldrh r2, [r4, 0x2]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- bl TVShowDone
-_080F3362:
- ldr r0, =gUnknown_0858D300
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowPokemonBattleUpdate
-
- thumb_func_start DoTVShow3CheersForPokeblocks
-DoTVShow3CheersForPokeblocks: @ 80F3388
- push {r4,r5,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r5, [r0]
- cmp r5, 0x5
- bls _080F33AE
- b _080F3624
-_080F33AE:
- lsls r0, r5, 2
- ldr r1, =_080F33D0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F33D0:
- .4byte _080F33E8
- .4byte _080F3418
- .4byte _080F3500
- .4byte _080F350C
- .4byte _080F35F4
- .4byte _080F3620
-_080F33E8:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0xC
- ldrb r2, [r4, 0x14]
- bl sub_81DB5E8
- ldrb r0, [r4, 0x2]
- cmp r0, 0x14
- bls _080F340C
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- b _080F3624
- .pool
-_080F340C:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x3
- strb r0, [r1]
- b _080F3624
- .pool
-_080F3418:
- ldrb r0, [r4, 0x3]
- lsls r0, 29
- lsrs r0, 29
- cmp r0, 0x4
- bhi _080F349C
- lsls r0, 2
- ldr r1, =_080F3430
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F3430:
- .4byte _080F3444
- .4byte _080F3458
- .4byte _080F346C
- .4byte _080F3480
- .4byte _080F3494
-_080F3444:
- ldr r0, =gStringVar1
- ldr r1, =gText_Spicy2
- bl StringCopy
- b _080F349C
- .pool
-_080F3458:
- ldr r0, =gStringVar1
- ldr r1, =gText_Dry2
- bl StringCopy
- b _080F349C
- .pool
-_080F346C:
- ldr r0, =gStringVar1
- ldr r1, =gText_Sweet2
- bl StringCopy
- b _080F349C
- .pool
-_080F3480:
- ldr r0, =gStringVar1
- ldr r1, =gText_Bitter2
- bl StringCopy
- b _080F349C
- .pool
-_080F3494:
- ldr r0, =gStringVar1
- ldr r1, =gText_Sour2
- bl StringCopy
-_080F349C:
- ldrb r0, [r4, 0x2]
- cmp r0, 0x18
- bls _080F34BC
- ldr r0, =gStringVar2
- ldr r1, =gText_Excellent
- bl StringCopy
- b _080F34DC
- .pool
-_080F34BC:
- cmp r0, 0x16
- bls _080F34D4
- ldr r0, =gStringVar2
- ldr r1, =gText_VeryGood
- bl StringCopy
- b _080F34DC
- .pool
-_080F34D4:
- ldr r0, =gStringVar2
- ldr r1, =gText_Good
- bl StringCopy
-_080F34DC:
- ldr r0, =gStringVar3
- adds r1, r4, 0
- adds r1, 0xC
- ldrb r2, [r4, 0x14]
- bl sub_81DB5E8
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
- strb r0, [r1]
- b _080F3624
- .pool
-_080F3500:
- ldr r0, =gStringVar1
- adds r1, r4, 0x4
- ldrb r2, [r4, 0x15]
- b _080F3606
- .pool
-_080F350C:
- ldrb r0, [r4, 0x3]
- lsls r0, 29
- lsrs r0, 29
- cmp r0, 0x4
- bhi _080F3590
- lsls r0, 2
- ldr r1, =_080F3524
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F3524:
- .4byte _080F3538
- .4byte _080F354C
- .4byte _080F3560
- .4byte _080F3574
- .4byte _080F3588
-_080F3538:
- ldr r0, =gStringVar1
- ldr r1, =gText_Spicy2
- bl StringCopy
- b _080F3590
- .pool
-_080F354C:
- ldr r0, =gStringVar1
- ldr r1, =gText_Dry2
- bl StringCopy
- b _080F3590
- .pool
-_080F3560:
- ldr r0, =gStringVar1
- ldr r1, =gText_Sweet2
- bl StringCopy
- b _080F3590
- .pool
-_080F3574:
- ldr r0, =gStringVar1
- ldr r1, =gText_Bitter2
- bl StringCopy
- b _080F3590
- .pool
-_080F3588:
- ldr r0, =gStringVar1
- ldr r1, =gText_Sour2
- bl StringCopy
-_080F3590:
- ldrb r0, [r4, 0x2]
- cmp r0, 0x10
- bls _080F35B0
- ldr r0, =gStringVar2
- ldr r1, =gText_SoSo
- bl StringCopy
- b _080F35D0
- .pool
-_080F35B0:
- cmp r0, 0xD
- bls _080F35C8
- ldr r0, =gStringVar2
- ldr r1, =gText_Bad
- bl StringCopy
- b _080F35D0
- .pool
-_080F35C8:
- ldr r0, =gStringVar2
- ldr r1, =gText_TheWorst
- bl StringCopy
-_080F35D0:
- ldr r0, =gStringVar3
- adds r1, r4, 0
- adds r1, 0xC
- ldrb r2, [r4, 0x14]
- bl sub_81DB5E8
- ldr r1, =gUnknown_0203A030
- movs r0, 0x4
- strb r0, [r1]
- b _080F3624
- .pool
-_080F35F4:
- ldr r0, =gStringVar1
- adds r1, r4, 0x4
- ldrb r2, [r4, 0x15]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- adds r1, r4, 0
- adds r1, 0xC
- ldrb r2, [r4, 0x14]
-_080F3606:
- bl sub_81DB5E8
- ldr r1, =gUnknown_0203A030
- movs r0, 0x5
- strb r0, [r1]
- b _080F3624
- .pool
-_080F3620:
- bl TVShowDone
-_080F3624:
- ldr r0, =gUnknown_0858D228
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShow3CheersForPokeblocks
-
- thumb_func_start DoTVShowInSearchOfTrainers
-DoTVShowInSearchOfTrainers: @ 80F363C
- push {r4-r7,lr}
- ldr r0, =gScriptResult
- movs r1, 0
- strh r1, [r0]
- ldr r0, =gUnknown_0203A030
- ldrb r7, [r0]
- adds r2, r0, 0
- cmp r7, 0x8
- bls _080F3650
- b _080F37EA
-_080F3650:
- lsls r0, r7, 2
- ldr r1, =_080F3668
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F3668:
- .4byte _080F368C
- .4byte _080F36D4
- .4byte _080F36DA
- .4byte _080F372C
- .4byte _080F379C
- .4byte _080F379C
- .4byte _080F379C
- .4byte _080F379C
- .4byte _080F37A2
-_080F368C:
- ldr r0, =gStringVar1
- ldr r4, =gSaveBlock1Ptr
- ldr r1, [r4]
- ldr r2, =0x00002bac
- adds r1, r2
- ldrb r1, [r1]
- movs r2, 0
- bl GetMapName
- ldr r0, [r4]
- ldr r1, =0x00002bad
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bls _080F36C8
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- b _080F37EA
- .pool
-_080F36C8:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
- strb r0, [r1]
- b _080F37EA
- .pool
-_080F36D4:
- movs r0, 0x2
- strb r0, [r2]
- b _080F37EA
-_080F36DA:
- ldr r0, =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, =0x00002bae
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080F36FC
- movs r0, 0x4
- strb r0, [r2]
- b _080F37EA
- .pool
-_080F36FC:
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _080F370A
- movs r0, 0x5
- strb r0, [r2]
- b _080F37EA
-_080F370A:
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080F3718
- movs r0, 0x6
- strb r0, [r2]
- b _080F37EA
-_080F3718:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080F3726
- movs r0, 0x7
- strb r0, [r2]
- b _080F37EA
-_080F3726:
- movs r0, 0x3
- strb r0, [r2]
- b _080F37EA
-_080F372C:
- ldr r0, =gStringVar1
- ldr r4, =gSaveBlock1Ptr
- ldr r1, [r4]
- ldr r2, =0x00002ba4
- adds r1, r2
- ldrh r1, [r1]
- movs r6, 0xB
- muls r1, r6
- ldr r5, =gSpeciesNames
- adds r1, r5
- bl StringCopy
- ldr r0, =gStringVar2
- ldr r1, [r4]
- ldr r2, =0x00002ba8
- adds r1, r2
- ldrh r2, [r1]
- movs r1, 0xD
- muls r1, r2
- ldr r2, =gMoveNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- ldr r1, [r4]
- ldr r2, =0x00002ba6
- adds r1, r2
- ldrh r1, [r1]
- muls r1, r6
- adds r1, r5
- bl StringCopy
- ldr r1, =gUnknown_0203A030
- movs r0, 0x8
- strb r0, [r1]
- b _080F37EA
- .pool
-_080F379C:
- movs r0, 0x8
- strb r0, [r2]
- b _080F37EA
-_080F37A2:
- ldr r0, =gStringVar1
- ldr r4, =gSaveBlock1Ptr
- ldr r1, [r4]
- ldr r2, =0x00002baa
- adds r1, r2
- ldrh r1, [r1]
- bl CopyEasyChatWord
- ldr r0, =gStringVar2
- ldr r1, [r4]
- ldr r2, =0x00002ba4
- adds r1, r2
- ldrh r1, [r1]
- movs r6, 0xB
- muls r1, r6
- ldr r5, =gSpeciesNames
- adds r1, r5
- bl StringCopy
- ldr r0, =gStringVar3
- ldr r1, [r4]
- ldr r2, =0x00002ba6
- adds r1, r2
- ldrh r1, [r1]
- muls r1, r6
- adds r1, r5
- bl StringCopy
- ldr r1, =gScriptResult
- movs r0, 0x1
- strh r0, [r1]
- ldr r1, =gUnknown_0203A030
- movs r0, 0
- strb r0, [r1]
- bl TakeTVShowInSearchOfTrainersOffTheAir
-_080F37EA:
- ldr r0, =gUnknown_0858D66C
- lsls r1, r7, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowInSearchOfTrainers
-
- thumb_func_start DoTVShowPokemonAngler
-DoTVShowPokemonAngler: @ 80F3828
- push {r4,r5,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- ldr r0, =gScriptResult
- movs r1, 0
- strh r1, [r0]
- ldrb r0, [r4, 0x2]
- ldrb r2, [r4, 0x3]
- cmp r0, r2
- bcs _080F3868
- ldr r0, =gUnknown_0203A030
- strb r1, [r0]
- b _080F3870
- .pool
-_080F3868:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- adds r0, r1, 0
-_080F3870:
- ldrb r5, [r0]
- cmp r5, 0
- beq _080F3880
- cmp r5, 0x1
- beq _080F38B8
- b _080F38E0
- .pool
-_080F3880:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x6]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r4, 0x4]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldrb r1, [r4, 0x3]
- movs r0, 0x2
- bl sub_80EF340
- bl TVShowDone
- b _080F38E0
- .pool
-_080F38B8:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x6]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r4, 0x4]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldrb r1, [r4, 0x2]
- movs r0, 0x2
- bl sub_80EF340
- bl TVShowDone
-_080F38E0:
- ldr r0, =gUnknown_0858D3B0
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowPokemonAngler
-
- thumb_func_start DoTVShowTheWorldOfMasters
-DoTVShowTheWorldOfMasters: @ 80F3904
- push {r4-r6,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r6, =gUnknown_0203A030
- ldrb r5, [r6]
- cmp r5, 0x1
- beq _080F3974
- cmp r5, 0x1
- bgt _080F3948
- cmp r5, 0
- beq _080F394E
- b _080F39BE
- .pool
-_080F3948:
- cmp r5, 0x2
- beq _080F3994
- b _080F39BE
-_080F394E:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0xB]
- bl sub_81DB5E8
- ldrh r1, [r4, 0x6]
- movs r0, 0x1
- bl sub_80EF340
- ldrh r1, [r4, 0x2]
- movs r0, 0x2
- bl sub_80EF340
- movs r0, 0x1
- strb r0, [r6]
- b _080F39BE
- .pool
-_080F3974:
- ldr r0, =gStringVar1
- ldrh r2, [r4, 0x8]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- movs r0, 0x2
- strb r0, [r6]
- b _080F39BE
- .pool
-_080F3994:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0xB]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrb r1, [r4, 0xA]
- movs r2, 0
- bl GetMapName
- ldr r0, =gStringVar3
- ldrh r2, [r4, 0x4]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- bl TVShowDone
-_080F39BE:
- ldr r0, =gUnknown_0858D3B8
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowTheWorldOfMasters
-
- thumb_func_start DoTVShowTodaysRivalTrainer
-DoTVShowTodaysRivalTrainer: @ 80F39E4
- push {r4,r5,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r5, [r0]
- adds r2, r0, 0
- cmp r5, 0xA
- bls _080F3A0C
- b _080F3BE8
-_080F3A0C:
- lsls r0, r5, 2
- ldr r1, =_080F3A30
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F3A30:
- .4byte _080F3A5C
- .4byte _080F3B30
- .4byte _080F3B58
- .4byte _080F3B90
- .4byte _080F3BA2
- .4byte _080F3BC4
- .4byte _080F3BD8
- .4byte _080F3A92
- .4byte _080F3AC0
- .4byte _080F3ADC
- .4byte _080F3AF8
-_080F3A5C:
- ldrb r0, [r4, 0x7]
- cmp r0, 0x56
- beq _080F3A6C
- cmp r0, 0x57
- beq _080F3A72
- movs r0, 0x7
- strb r0, [r2]
- b _080F3BE8
-_080F3A6C:
- movs r0, 0x8
- strb r0, [r2]
- b _080F3BE8
-_080F3A72:
- ldrh r1, [r4, 0xA]
- ldr r0, =0x00000117
- cmp r1, r0
- bgt _080F3A8C
- subs r0, 0x2
- cmp r1, r0
- blt _080F3A8C
- movs r0, 0xA
- strb r0, [r2]
- b _080F3BE8
- .pool
-_080F3A8C:
- movs r0, 0x9
- strb r0, [r2]
- b _080F3BE8
-_080F3A92:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0xC]
- bl sub_81DB5E8
- ldrh r1, [r4, 0x2]
- movs r0, 0x1
- bl sub_80EF340
- ldr r0, =gStringVar3
- ldrb r1, [r4, 0x7]
- movs r2, 0
- bl GetMapName
-_080F3AB0:
- ldrb r0, [r4, 0x4]
- cmp r0, 0
- bne _080F3B12
- b _080F3B24
- .pool
-_080F3AC0:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0xC]
- bl sub_81DB5E8
- ldrh r1, [r4, 0x2]
- movs r0, 0x1
- bl sub_80EF340
- b _080F3AB0
- .pool
-_080F3ADC:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0xC]
- bl sub_81DB5E8
- ldrh r1, [r4, 0x2]
- movs r0, 0x1
- bl sub_80EF340
- b _080F3AB0
- .pool
-_080F3AF8:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0xC]
- bl sub_81DB5E8
- ldrh r1, [r4, 0x2]
- movs r0, 0x1
- bl sub_80EF340
- ldrb r0, [r4, 0x4]
- cmp r0, 0
- beq _080F3B24
-_080F3B12:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- b _080F3BE8
- .pool
-_080F3B24:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
- strb r0, [r1]
- b _080F3BE8
- .pool
-_080F3B30:
- ldrb r1, [r4, 0x4]
- movs r0, 0
- bl sub_80EF340
- ldr r0, =0x000008a8
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _080F3BCC
- ldr r0, [r4, 0x4]
- ldr r1, =0x00ffff00
- ands r0, r1
- cmp r0, 0
- bne _080F3B6E
- b _080F3B84
- .pool
-_080F3B58:
- ldr r0, =0x000008a8
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _080F3BCC
- ldr r0, [r4, 0x4]
- ldr r1, =0x00ffff00
- ands r0, r1
- cmp r0, 0
- beq _080F3B84
-_080F3B6E:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x4
- strb r0, [r1]
- b _080F3BE8
- .pool
-_080F3B84:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x3
- strb r0, [r1]
- b _080F3BE8
- .pool
-_080F3B90:
- ldrh r0, [r4, 0x8]
- cmp r0, 0
- bne _080F3B9C
- movs r0, 0x6
- strb r0, [r2]
- b _080F3BE8
-_080F3B9C:
- movs r0, 0x5
- strb r0, [r2]
- b _080F3BE8
-_080F3BA2:
- ldrb r1, [r4, 0x6]
- movs r0, 0
- bl sub_80EF340
- ldrb r1, [r4, 0x5]
- movs r0, 0x1
- bl sub_80EF340
- ldrh r0, [r4, 0x8]
- cmp r0, 0
- beq _080F3BCC
- ldr r1, =gUnknown_0203A030
- movs r0, 0x5
- strb r0, [r1]
- b _080F3BE8
- .pool
-_080F3BC4:
- ldrh r1, [r4, 0x8]
- movs r0, 0
- bl sub_80EF340
-_080F3BCC:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x6
- strb r0, [r1]
- b _080F3BE8
- .pool
-_080F3BD8:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0xC]
- bl sub_81DB5E8
- bl TVShowDone
-_080F3BE8:
- ldr r0, =gUnknown_0858D3C4
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowTodaysRivalTrainer
-
- thumb_func_start DoTVShowDewfordTrendWatcherNetwork
-DoTVShowDewfordTrendWatcherNetwork: @ 80F3C04
- push {r4,r5,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r5, [r0]
- cmp r5, 0x6
- bls _080F3C2A
- b _080F3D54
-_080F3C2A:
- lsls r0, r5, 2
- ldr r1, =_080F3C4C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F3C4C:
- .4byte _080F3C68
- .4byte _080F3CA0
- .4byte _080F3CA0
- .4byte _080F3CD4
- .4byte _080F3D0C
- .4byte _080F3D0C
- .4byte _080F3D40
-_080F3C68:
- ldr r0, =gStringVar1
- ldrh r1, [r4, 0x4]
- bl CopyEasyChatWord
- ldr r0, =gStringVar2
- ldrh r1, [r4, 0x6]
- bl CopyEasyChatWord
- ldrb r0, [r4, 0x8]
- cmp r0, 0
- bne _080F3C94
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- b _080F3D54
- .pool
-_080F3C94:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
- strb r0, [r1]
- b _080F3D54
- .pool
-_080F3CA0:
- ldr r0, =gStringVar1
- ldrh r1, [r4, 0x4]
- bl CopyEasyChatWord
- ldr r0, =gStringVar2
- ldrh r1, [r4, 0x6]
- bl CopyEasyChatWord
- ldr r0, =gStringVar3
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x9]
- bl sub_81DB5E8
- ldr r1, =gUnknown_0203A030
- movs r0, 0x3
- strb r0, [r1]
- b _080F3D54
- .pool
-_080F3CD4:
- ldr r0, =gStringVar1
- ldrh r1, [r4, 0x4]
- bl CopyEasyChatWord
- ldr r0, =gStringVar2
- ldrh r1, [r4, 0x6]
- bl CopyEasyChatWord
- ldrb r0, [r4, 0x8]
- cmp r0, 0
- bne _080F3D00
- ldr r1, =gUnknown_0203A030
- movs r0, 0x4
- strb r0, [r1]
- b _080F3D54
- .pool
-_080F3D00:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x5
- strb r0, [r1]
- b _080F3D54
- .pool
-_080F3D0C:
- ldr r0, =gStringVar1
- ldrh r1, [r4, 0x4]
- bl CopyEasyChatWord
- ldr r0, =gStringVar2
- ldrh r1, [r4, 0x6]
- bl CopyEasyChatWord
- ldr r0, =gStringVar3
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x9]
- bl sub_81DB5E8
- ldr r1, =gUnknown_0203A030
- movs r0, 0x6
- strb r0, [r1]
- b _080F3D54
- .pool
-_080F3D40:
- ldr r0, =gStringVar1
- ldrh r1, [r4, 0x4]
- bl CopyEasyChatWord
- ldr r0, =gStringVar2
- ldrh r1, [r4, 0x6]
- bl CopyEasyChatWord
- bl TVShowDone
-_080F3D54:
- ldr r0, =gUnknown_0858D3F0
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowDewfordTrendWatcherNetwork
-
- thumb_func_start DoTVShowHoennTreasureInvestigators
-DoTVShowHoennTreasureInvestigators: @ 80F3D74
- push {r4-r7,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r5, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r7, =gUnknown_0203A030
- ldrb r6, [r7]
- cmp r6, 0x1
- beq _080F3E02
- cmp r6, 0x1
- bgt _080F3DB8
- cmp r6, 0
- beq _080F3DBE
- b _080F3E5C
- .pool
-_080F3DB8:
- cmp r6, 0x2
- beq _080F3E3C
- b _080F3E5C
-_080F3DBE:
- ldr r4, =gStringVar1
- ldrh r0, [r5, 0x2]
- bl ItemId_GetItem
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldrb r0, [r5, 0x4]
- cmp r0, 0x57
- bne _080F3DFC
- ldrh r1, [r5, 0x6]
- ldr r0, =0x00000117
- cmp r1, r0
- bgt _080F3DF0
- subs r0, 0x2
- cmp r1, r0
- blt _080F3DF0
- movs r0, 0x2
- strb r0, [r7]
- b _080F3E5C
- .pool
-_080F3DF0:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- b _080F3E5C
- .pool
-_080F3DFC:
- movs r0, 0x1
- strb r0, [r7]
- b _080F3E5C
-_080F3E02:
- ldr r4, =gStringVar1
- ldrh r0, [r5, 0x2]
- bl ItemId_GetItem
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldr r0, =gStringVar2
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x5]
- bl sub_81DB5E8
- ldr r0, =gStringVar3
- ldrb r1, [r5, 0x4]
- movs r2, 0
- bl GetMapName
- bl TVShowDone
- b _080F3E5C
- .pool
-_080F3E3C:
- ldr r4, =gStringVar1
- ldrh r0, [r5, 0x2]
- bl ItemId_GetItem
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldr r0, =gStringVar2
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x5]
- bl sub_81DB5E8
- bl TVShowDone
-_080F3E5C:
- ldr r0, =gUnknown_0858D40C
- lsls r1, r6, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowHoennTreasureInvestigators
-
- thumb_func_start DoTVShowFindThatGamer
-DoTVShowFindThatGamer: @ 80F3E7C
- push {r4,r5,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r5, [r0]
- cmp r5, 0x1
- beq _080F3F28
- cmp r5, 0x1
- bgt _080F3EC0
- cmp r5, 0
- beq _080F3ECC
- b _080F4008
- .pool
-_080F3EC0:
- cmp r5, 0x2
- beq _080F3F78
- cmp r5, 0x3
- bne _080F3ECA
- b _080F3FCC
-_080F3ECA:
- b _080F4008
-_080F3ECC:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x8]
- bl sub_81DB5E8
- ldrb r0, [r4, 0x3]
- cmp r0, 0
- beq _080F3EE8
- cmp r0, 0x1
- beq _080F3EFC
- b _080F3F04
- .pool
-_080F3EE8:
- ldr r0, =gStringVar2
- ldr r1, =gText_Slots
- bl StringCopy
- b _080F3F04
- .pool
-_080F3EFC:
- ldr r0, =gStringVar2
- ldr r1, =gText_Roulette
- bl StringCopy
-_080F3F04:
- ldrb r1, [r4, 0x2]
- cmp r1, 0x1
- bne _080F3F1C
- ldr r0, =gUnknown_0203A030
- strb r1, [r0]
- b _080F4008
- .pool
-_080F3F1C:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
- strb r0, [r1]
- b _080F4008
- .pool
-_080F3F28:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x8]
- bl sub_81DB5E8
- ldrb r0, [r4, 0x3]
- cmp r0, 0
- beq _080F3F44
- cmp r0, 0x1
- beq _080F3F58
- b _080F3F60
- .pool
-_080F3F44:
- ldr r0, =gStringVar2
- ldr r1, =gText_Slots
- bl StringCopy
- b _080F3F60
- .pool
-_080F3F58:
- ldr r0, =gStringVar2
- ldr r1, =gText_Roulette
- bl StringCopy
-_080F3F60:
- ldrh r1, [r4, 0x4]
- movs r0, 0x2
- bl sub_80EF340
- bl TVShowDone
- b _080F4008
- .pool
-_080F3F78:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x8]
- bl sub_81DB5E8
- ldrb r0, [r4, 0x3]
- cmp r0, 0
- beq _080F3F94
- cmp r0, 0x1
- beq _080F3FA8
- b _080F3FB0
- .pool
-_080F3F94:
- ldr r0, =gStringVar2
- ldr r1, =gText_Slots
- bl StringCopy
- b _080F3FB0
- .pool
-_080F3FA8:
- ldr r0, =gStringVar2
- ldr r1, =gText_Roulette
- bl StringCopy
-_080F3FB0:
- ldrh r1, [r4, 0x4]
- movs r0, 0x2
- bl sub_80EF340
- ldr r1, =gUnknown_0203A030
- movs r0, 0x3
- strb r0, [r1]
- b _080F4008
- .pool
-_080F3FCC:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x8]
- bl sub_81DB5E8
- ldrb r1, [r4, 0x3]
- cmp r1, 0
- beq _080F3FE8
- cmp r1, 0x1
- beq _080F3FFC
- b _080F4004
- .pool
-_080F3FE8:
- ldr r0, =gStringVar2
- ldr r1, =gText_Roulette
- bl StringCopy
- b _080F4004
- .pool
-_080F3FFC:
- ldr r0, =gStringVar2
- ldr r1, =gText_Slots
- bl StringCopy
-_080F4004:
- bl TVShowDone
-_080F4008:
- ldr r0, =gUnknown_0858D418
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowFindThatGamer
-
- thumb_func_start DoTVShowBreakingNewsTV
-DoTVShowBreakingNewsTV: @ 80F4028
- push {r4-r7,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r6, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r7, [r0]
- adds r2, r0, 0
- cmp r7, 0xC
- bls _080F4050
- b _080F4344
-_080F4050:
- lsls r0, r7, 2
- ldr r1, =_080F4074
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F4074:
- .4byte _080F40A8
- .4byte _080F40BA
- .4byte _080F40FC
- .4byte _080F4140
- .4byte _080F4168
- .4byte _080F418C
- .4byte _080F41D0
- .4byte _080F4254
- .4byte _080F42C8
- .4byte _080F42F4
- .4byte _080F42F4
- .4byte _080F4334
- .4byte _080F4284
-_080F40A8:
- ldrb r0, [r6, 0x5]
- cmp r0, 0
- bne _080F40B4
- movs r0, 0x1
- strb r0, [r2]
- b _080F4344
-_080F40B4:
- movs r0, 0x5
- strb r0, [r2]
- b _080F4344
-_080F40BA:
- ldr r0, =gStringVar1
- adds r1, r6, 0
- adds r1, 0x13
- ldrb r2, [r6, 0xE]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x2]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- ldrb r1, [r6, 0x4]
- movs r2, 0
- bl GetMapName
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
- strb r0, [r1]
- b _080F4344
- .pool
-_080F40FC:
- ldr r0, =gStringVar1
- adds r1, r6, 0
- adds r1, 0x13
- ldrb r2, [r6, 0xE]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r1, [r6, 0x2]
- movs r5, 0xB
- muls r1, r5
- ldr r4, =gSpeciesNames
- adds r1, r4
- bl StringCopy
- ldr r0, =gStringVar3
- ldrh r1, [r6, 0xA]
- muls r1, r5
- adds r1, r4
- bl StringCopy
- ldr r1, =gUnknown_0203A030
- movs r0, 0x3
- strb r0, [r1]
- b _080F4344
- .pool
-_080F4140:
- ldrh r1, [r6, 0x8]
- movs r0, 0
- bl sub_80EF340
- ldr r4, =gStringVar2
- ldrh r0, [r6, 0x6]
- bl ItemId_GetItem
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldr r1, =gUnknown_0203A030
- movs r0, 0x4
- strb r0, [r1]
- b _080F4344
- .pool
-_080F4168:
- ldr r0, =gStringVar1
- adds r1, r6, 0
- adds r1, 0x13
- ldrb r2, [r6, 0xE]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrb r1, [r6, 0x4]
- movs r2, 0
- bl GetMapName
- bl TVShowDone
- b _080F4344
- .pool
-_080F418C:
- ldr r0, =gStringVar1
- adds r1, r6, 0
- adds r1, 0x13
- ldrb r2, [r6, 0xE]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x2]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- ldrb r1, [r6, 0x4]
- movs r2, 0
- bl GetMapName
- ldr r1, =gUnknown_0203A030
- movs r0, 0x6
- strb r0, [r1]
- b _080F4344
- .pool
-_080F41D0:
- ldr r0, =gStringVar1
- adds r1, r6, 0
- adds r1, 0x13
- ldrb r2, [r6, 0xE]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r1, [r6, 0x2]
- movs r5, 0xB
- muls r1, r5
- ldr r4, =gSpeciesNames
- adds r1, r4
- bl StringCopy
- ldr r0, =gStringVar3
- ldrh r1, [r6, 0xA]
- muls r1, r5
- adds r1, r4
- bl StringCopy
- ldrb r0, [r6, 0x5]
- cmp r0, 0x2
- beq _080F423C
- cmp r0, 0x2
- bgt _080F4218
- cmp r0, 0x1
- beq _080F421E
- b _080F4344
- .pool
-_080F4218:
- cmp r0, 0x3
- beq _080F4248
- b _080F4344
-_080F421E:
- ldrh r0, [r6, 0xC]
- cmp r0, 0
- bne _080F4230
- ldr r1, =gUnknown_0203A030
- movs r0, 0xC
- strb r0, [r1]
- b _080F4344
- .pool
-_080F4230:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x7
- strb r0, [r1]
- b _080F4344
- .pool
-_080F423C:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x9
- strb r0, [r1]
- b _080F4344
- .pool
-_080F4248:
- ldr r1, =gUnknown_0203A030
- movs r0, 0xA
- strb r0, [r1]
- b _080F4344
- .pool
-_080F4254:
- ldr r0, =gStringVar1
- ldrh r2, [r6, 0xC]
- movs r1, 0xD
- muls r1, r2
- ldr r2, =gMoveNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0xA]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- b _080F42A8
- .pool
-_080F4284:
- ldr r0, =gStringVar1
- adds r1, r6, 0
- adds r1, 0x13
- ldrb r2, [r6, 0xE]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r1, [r6, 0x2]
- movs r5, 0xB
- muls r1, r5
- ldr r4, =gSpeciesNames
- adds r1, r4
- bl StringCopy
- ldr r0, =gStringVar3
- ldrh r1, [r6, 0xA]
- muls r1, r5
- adds r1, r4
-_080F42A8:
- bl StringCopy
- ldr r1, =gUnknown_0203A030
- movs r0, 0x8
- strb r0, [r1]
- b _080F4344
- .pool
-_080F42C8:
- ldr r0, =gStringVar1
- adds r1, r6, 0
- adds r1, 0x13
- ldrb r2, [r6, 0xE]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrb r1, [r6, 0x4]
- movs r2, 0
- bl GetMapName
- ldr r1, =gUnknown_0203A030
- movs r0, 0xB
- strb r0, [r1]
- b _080F4344
- .pool
-_080F42F4:
- ldr r0, =gStringVar1
- adds r1, r6, 0
- adds r1, 0x13
- ldrb r2, [r6, 0xE]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r1, [r6, 0x2]
- movs r4, 0xB
- muls r1, r4
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- ldrb r1, [r6, 0x4]
- movs r2, 0
- bl GetMapName
- ldr r0, =gUnknown_0203A030
- strb r4, [r0]
- b _080F4344
- .pool
-_080F4334:
- ldr r0, =gStringVar1
- adds r1, r6, 0
- adds r1, 0x13
- ldrb r2, [r6, 0xE]
- bl sub_81DB5E8
- bl TVShowDone
-_080F4344:
- ldr r0, =gUnknown_0858D428
- lsls r1, r7, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowBreakingNewsTV
-
- thumb_func_start DoTVShowSecretBaseVisit
-DoTVShowSecretBaseVisit: @ 80F4360
- push {r4-r6,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r5, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r6, [r0]
- adds r2, r0, 0
- cmp r6, 0xD
- bls _080F4388
- b _080F4588
-_080F4388:
- lsls r0, r6, 2
- ldr r1, =_080F43AC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F43AC:
- .4byte _080F43E4
- .4byte _080F4414
- .4byte _080F44E4
- .4byte _080F4448
- .4byte _080F44E4
- .4byte _080F449C
- .4byte _080F44C0
- .4byte _080F44E4
- .4byte _080F44EA
- .4byte _080F4538
- .4byte _080F4538
- .4byte _080F4538
- .4byte _080F4538
- .4byte _080F4584
-_080F43E4:
- ldr r0, =gStringVar1
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0xC]
- bl sub_81DB5E8
- ldrb r0, [r5, 0x3]
- cmp r0, 0
- bne _080F4408
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
- strb r0, [r1]
- b _080F4588
- .pool
-_080F4408:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- b _080F4588
- .pool
-_080F4414:
- ldr r0, =gStringVar2
- ldrb r1, [r5, 0x4]
- lsls r1, 5
- ldr r2, =gDecorations + 1
- adds r1, r2
- bl StringCopy
- ldrb r0, [r5, 0x3]
- cmp r0, 0x1
- bne _080F443C
- ldr r1, =gUnknown_0203A030
- movs r0, 0x4
- strb r0, [r1]
- b _080F4588
- .pool
-_080F443C:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x3
- strb r0, [r1]
- b _080F4588
- .pool
-_080F4448:
- ldr r0, =gStringVar2
- ldrb r1, [r5, 0x5]
- lsls r1, 5
- ldr r2, =gDecorations + 1
- adds r1, r2
- bl StringCopy
- ldrb r1, [r5, 0x3]
- cmp r1, 0x3
- beq _080F4484
- cmp r1, 0x3
- bgt _080F4470
- cmp r1, 0x2
- beq _080F4476
- b _080F4588
- .pool
-_080F4470:
- cmp r1, 0x4
- beq _080F4490
- b _080F4588
-_080F4476:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x7
- strb r0, [r1]
- b _080F4588
- .pool
-_080F4484:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x6
- strb r0, [r1]
- b _080F4588
- .pool
-_080F4490:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x5
- strb r0, [r1]
- b _080F4588
- .pool
-_080F449C:
- ldr r0, =gStringVar2
- ldrb r1, [r5, 0x6]
- lsls r1, 5
- ldr r4, =gDecorations + 1
- adds r1, r4
- bl StringCopy
- ldr r0, =gStringVar3
- ldrb r1, [r5, 0x7]
- lsls r1, 5
- adds r1, r4
- b _080F44CA
- .pool
-_080F44C0:
- ldr r0, =gStringVar2
- ldrb r1, [r5, 0x6]
- lsls r1, 5
- ldr r2, =gDecorations + 1
- adds r1, r2
-_080F44CA:
- bl StringCopy
- ldr r1, =gUnknown_0203A030
- movs r0, 0x8
- strb r0, [r1]
- b _080F4588
- .pool
-_080F44E4:
- movs r0, 0x8
- strb r0, [r2]
- b _080F4588
-_080F44EA:
- ldr r0, =gStringVar1
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0xC]
- bl sub_81DB5E8
- ldrb r1, [r5, 0x2]
- cmp r1, 0x18
- bhi _080F450C
- ldr r1, =gUnknown_0203A030
- movs r0, 0xC
- strb r0, [r1]
- b _080F4588
- .pool
-_080F450C:
- cmp r1, 0x31
- bhi _080F451C
- ldr r1, =gUnknown_0203A030
- movs r0, 0xB
- strb r0, [r1]
- b _080F4588
- .pool
-_080F451C:
- cmp r1, 0x45
- bhi _080F452C
- ldr r1, =gUnknown_0203A030
- movs r0, 0xA
- strb r0, [r1]
- b _080F4588
- .pool
-_080F452C:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x9
- strb r0, [r1]
- b _080F4588
- .pool
-_080F4538:
- ldr r0, =gStringVar1
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0xC]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r5, 0x8]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- ldrh r1, [r5, 0xA]
- movs r4, 0xD
- muls r1, r4
- ldr r2, =gMoveNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gUnknown_0203A030
- strb r4, [r0]
- b _080F4588
- .pool
-_080F4584:
- bl TVShowDone
-_080F4588:
- ldr r0, =gUnknown_0858D45C
- lsls r1, r6, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowSecretBaseVisit
-
- thumb_func_start DoTVShowPokemonLotterWinnerFlashReport
-DoTVShowPokemonLotterWinnerFlashReport: @ 80F45A0
- push {r4-r6,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r5, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r6, [r0]
- ldr r0, =gStringVar1
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x5]
- bl sub_81DB5E8
- ldrb r0, [r5, 0x4]
- cmp r0, 0
- bne _080F45FC
- ldr r0, =gStringVar2
- ldr r1, =gText_Jackpot
- bl StringCopy
- b _080F4634
- .pool
-_080F45FC:
- cmp r0, 0x1
- bne _080F4614
- ldr r0, =gStringVar2
- ldr r1, =gText_First
- bl StringCopy
- b _080F4634
- .pool
-_080F4614:
- cmp r0, 0x2
- bne _080F462C
- ldr r0, =gStringVar2
- ldr r1, =gText_Second
- bl StringCopy
- b _080F4634
- .pool
-_080F462C:
- ldr r0, =gStringVar2
- ldr r1, =gText_Third
- bl StringCopy
-_080F4634:
- ldr r4, =gStringVar3
- ldrh r0, [r5, 0x2]
- bl ItemId_GetItem
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- bl TVShowDone
- ldr r1, =gUnknown_0858D494
- lsls r0, r6, 2
- adds r0, r1
- ldr r0, [r0]
- bl box_related_two__2
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowPokemonLotterWinnerFlashReport
-
- thumb_func_start DoTVShowThePokemonBattleSeminar
-DoTVShowThePokemonBattleSeminar: @ 80F466C
- push {r4-r7,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r6, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r7, [r0]
- cmp r7, 0x6
- bls _080F4692
- b _080F4858
-_080F4692:
- lsls r0, r7, 2
- ldr r1, =_080F46B4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F46B4:
- .4byte _080F46D0
- .4byte _080F4714
- .4byte _080F4760
- .4byte _080F47B4
- .4byte _080F47EC
- .4byte _080F4814
- .4byte _080F4838
-_080F46D0:
- ldr r0, =gStringVar1
- adds r1, r6, 0
- adds r1, 0x13
- ldrb r2, [r6, 0x11]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r1, [r6, 0x6]
- movs r5, 0xB
- muls r1, r5
- ldr r4, =gSpeciesNames
- adds r1, r4
- bl StringCopy
- ldr r0, =gStringVar3
- ldrh r1, [r6, 0x4]
- muls r1, r5
- adds r1, r4
- bl StringCopy
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- b _080F4858
- .pool
-_080F4714:
- ldr r0, =gStringVar1
- adds r1, r6, 0
- adds r1, 0x13
- ldrb r2, [r6, 0x11]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x4]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, =gStringVar3
- ldrh r2, [r6, 0x2]
- movs r1, 0xD
- muls r1, r2
- ldr r2, =gMoveNames
- adds r1, r2
- bl StringCopy
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
- strb r0, [r1]
- b _080F4858
- .pool
-_080F4760:
- ldr r0, =gStringVar1
- ldrh r2, [r6, 0x6]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldrb r1, [r6, 0x10]
- cmp r1, 0x2
- beq _080F479C
- cmp r1, 0x2
- bgt _080F4788
- cmp r1, 0x1
- beq _080F478E
- b _080F4824
- .pool
-_080F4788:
- cmp r1, 0x3
- beq _080F47A8
- b _080F4824
-_080F478E:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x5
- strb r0, [r1]
- b _080F4858
- .pool
-_080F479C:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x4
- strb r0, [r1]
- b _080F4858
- .pool
-_080F47A8:
- ldr r0, =gUnknown_0203A030
- strb r1, [r0]
- b _080F4858
- .pool
-_080F47B4:
- ldr r0, =gStringVar1
- ldrh r1, [r6, 0x8]
- movs r5, 0xD
- muls r1, r5
- ldr r4, =gMoveNames
- adds r1, r4
- bl StringCopy
- ldr r0, =gStringVar2
- ldrh r1, [r6, 0xA]
- muls r1, r5
- adds r1, r4
- bl StringCopy
- ldr r0, =gStringVar3
- ldrh r1, [r6, 0xC]
- muls r1, r5
- adds r1, r4
- b _080F4820
- .pool
-_080F47EC:
- ldr r0, =gStringVar1
- ldrh r1, [r6, 0x8]
- movs r5, 0xD
- muls r1, r5
- ldr r4, =gMoveNames
- adds r1, r4
- bl StringCopy
- ldr r0, =gStringVar2
- ldrh r1, [r6, 0xA]
- muls r1, r5
- adds r1, r4
- b _080F4820
- .pool
-_080F4814:
- ldr r0, =gStringVar2
- ldrh r2, [r6, 0x8]
- movs r1, 0xD
- muls r1, r2
- ldr r2, =gMoveNames
- adds r1, r2
-_080F4820:
- bl StringCopy
-_080F4824:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x6
- strb r0, [r1]
- b _080F4858
- .pool
-_080F4838:
- ldr r0, =gStringVar1
- ldrh r1, [r6, 0xE]
- movs r5, 0xD
- muls r1, r5
- ldr r4, =gMoveNames
- adds r1, r4
- bl StringCopy
- ldr r0, =gStringVar2
- ldrh r1, [r6, 0x2]
- muls r1, r5
- adds r1, r4
- bl StringCopy
- bl TVShowDone
-_080F4858:
- ldr r0, =gUnknown_0858D498
- lsls r1, r7, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowThePokemonBattleSeminar
-
- thumb_func_start DoTVShowTrainerFanClubSpecial
-DoTVShowTrainerFanClubSpecial: @ 80F487C
- push {r4,r5,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r5, [r0]
- cmp r5, 0x5
- bls _080F48A2
- b _080F499A
-_080F48A2:
- lsls r0, r5, 2
- ldr r1, =_080F48C4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F48C4:
- .4byte _080F48DC
- .4byte _080F4944
- .4byte _080F4944
- .4byte _080F4944
- .4byte _080F4944
- .4byte _080F4978
-_080F48DC:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0xC
- ldrb r2, [r4, 0x18]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- adds r1, r4, 0x2
- ldrb r2, [r4, 0x17]
- bl sub_81DB5E8
- ldr r0, =gStringVar3
- ldrh r1, [r4, 0x14]
- bl CopyEasyChatWord
- ldrb r1, [r4, 0x16]
- cmp r1, 0x59
- bls _080F4918
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- b _080F499A
- .pool
-_080F4918:
- cmp r1, 0x45
- bls _080F4928
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
- strb r0, [r1]
- b _080F499A
- .pool
-_080F4928:
- cmp r1, 0x1D
- bls _080F4938
- ldr r1, =gUnknown_0203A030
- movs r0, 0x3
- strb r0, [r1]
- b _080F499A
- .pool
-_080F4938:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x4
- strb r0, [r1]
- b _080F499A
- .pool
-_080F4944:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0xC
- ldrb r2, [r4, 0x18]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- adds r1, r4, 0x2
- ldrb r2, [r4, 0x17]
- bl sub_81DB5E8
- ldrb r1, [r4, 0x16]
- movs r0, 0x2
- bl sub_80EF340
- ldr r1, =gUnknown_0203A030
- movs r0, 0x5
- strb r0, [r1]
- b _080F499A
- .pool
-_080F4978:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0xC
- ldrb r2, [r4, 0x18]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- adds r1, r4, 0x2
- ldrb r2, [r4, 0x17]
- bl sub_81DB5E8
- ldr r0, =gStringVar3
- ldrh r1, [r4, 0x14]
- bl CopyEasyChatWord
- bl TVShowDone
-_080F499A:
- ldr r0, =gUnknown_0858D320
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowTrainerFanClubSpecial
-
- thumb_func_start DoTVShowTrainerFanClub
-DoTVShowTrainerFanClub: @ 80F49BC
- push {r4,r5,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r5, [r0]
- adds r2, r0, 0
- cmp r5, 0xB
- bls _080F49E4
- b _080F4B3A
-_080F49E4:
- lsls r0, r5, 2
- ldr r1, =_080F4A08
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F4A08:
- .4byte _080F4A38
- .4byte _080F4B14
- .4byte _080F4B14
- .4byte _080F4B14
- .4byte _080F4B14
- .4byte _080F4B14
- .4byte _080F4B14
- .4byte _080F4B14
- .4byte _080F4B14
- .4byte _080F4B14
- .4byte _080F4B14
- .4byte _080F4B1A
-_080F4A38:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x8]
- bl sub_81DB5E8
- adds r0, r4, 0
- adds r0, 0x23
- ldrb r0, [r0]
- lsls r0, 8
- adds r1, r4, 0
- adds r1, 0x22
- ldrb r1, [r1]
- adds r0, r1
- movs r1, 0xA
- bl __umodsi3
- cmp r0, 0x9
- bls _080F4A60
- b _080F4B3A
-_080F4A60:
- lsls r0, 2
- ldr r1, =_080F4A74
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F4A74:
- .4byte _080F4A9C
- .4byte _080F4AA8
- .4byte _080F4AB4
- .4byte _080F4AC0
- .4byte _080F4ACC
- .4byte _080F4AD8
- .4byte _080F4AE4
- .4byte _080F4AF0
- .4byte _080F4AFC
- .4byte _080F4B08
-_080F4A9C:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- b _080F4B3A
- .pool
-_080F4AA8:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
- strb r0, [r1]
- b _080F4B3A
- .pool
-_080F4AB4:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x3
- strb r0, [r1]
- b _080F4B3A
- .pool
-_080F4AC0:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x4
- strb r0, [r1]
- b _080F4B3A
- .pool
-_080F4ACC:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x5
- strb r0, [r1]
- b _080F4B3A
- .pool
-_080F4AD8:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x6
- strb r0, [r1]
- b _080F4B3A
- .pool
-_080F4AE4:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x7
- strb r0, [r1]
- b _080F4B3A
- .pool
-_080F4AF0:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x8
- strb r0, [r1]
- b _080F4B3A
- .pool
-_080F4AFC:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x9
- strb r0, [r1]
- b _080F4B3A
- .pool
-_080F4B08:
- ldr r1, =gUnknown_0203A030
- movs r0, 0xA
- strb r0, [r1]
- b _080F4B3A
- .pool
-_080F4B14:
- movs r0, 0xB
- strb r0, [r2]
- b _080F4B3A
-_080F4B1A:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x8]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- ldrh r1, [r4, 0x4]
- bl CopyEasyChatWord
- ldr r0, =gStringVar3
- ldrh r1, [r4, 0x6]
- bl CopyEasyChatWord
- bl TVShowDone
-_080F4B3A:
- ldr r0, =gUnknown_0858D4B4
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowTrainerFanClub
-
- thumb_func_start DoTVShowSpotTheCuties
-DoTVShowSpotTheCuties: @ 80F4B5C
- push {r4,r5,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r5, [r0]
- cmp r5, 0xF
- bls _080F4B82
- b _080F4D84
-_080F4B82:
- lsls r0, r5, 2
- ldr r1, =_080F4BA4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F4BA4:
- .4byte _080F4BE4
- .4byte _080F4C30
- .4byte _080F4C30
- .4byte _080F4C30
- .4byte _080F4C64
- .4byte _080F4D64
- .4byte _080F4D64
- .4byte _080F4D64
- .4byte _080F4D64
- .4byte _080F4D64
- .4byte _080F4D64
- .4byte _080F4D64
- .4byte _080F4D64
- .4byte _080F4D64
- .4byte _080F4D64
- .4byte _080F4D80
-_080F4BE4:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0xF]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- adds r1, r4, 0x4
- ldrb r2, [r4, 0x10]
- bl sub_81DB5E8
- ldrb r1, [r4, 0x2]
- cmp r1, 0x9
- bhi _080F4C14
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- b _080F4D84
- .pool
-_080F4C14:
- cmp r1, 0x13
- bhi _080F4C24
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
- strb r0, [r1]
- b _080F4D84
- .pool
-_080F4C24:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x3
- strb r0, [r1]
- b _080F4D84
- .pool
-_080F4C30:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0xF]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- adds r1, r4, 0x4
- ldrb r2, [r4, 0x10]
- bl sub_81DB5E8
- ldrb r1, [r4, 0x2]
- movs r0, 0x2
- bl sub_80EF340
- ldr r1, =gUnknown_0203A030
- movs r0, 0x4
- strb r0, [r1]
- b _080F4D84
- .pool
-_080F4C64:
- ldr r0, =gStringVar2
- adds r1, r4, 0x4
- ldrb r2, [r4, 0x10]
- bl sub_81DB5E8
- ldrb r0, [r4, 0x3]
- cmp r0, 0x18
- bls _080F4C76
- b _080F4D84
-_080F4C76:
- lsls r0, 2
- ldr r1, =_080F4C88
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F4C88:
- .4byte _080F4CEC
- .4byte _080F4CF8
- .4byte _080F4CF8
- .4byte _080F4CF8
- .4byte _080F4CF8
- .4byte _080F4D04
- .4byte _080F4D04
- .4byte _080F4D04
- .4byte _080F4D04
- .4byte _080F4D10
- .4byte _080F4D10
- .4byte _080F4D10
- .4byte _080F4D10
- .4byte _080F4D1C
- .4byte _080F4D1C
- .4byte _080F4D1C
- .4byte _080F4D1C
- .4byte _080F4D28
- .4byte _080F4D28
- .4byte _080F4D28
- .4byte _080F4D28
- .4byte _080F4D34
- .4byte _080F4D40
- .4byte _080F4D4C
- .4byte _080F4D58
-_080F4CEC:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x5
- strb r0, [r1]
- b _080F4D84
- .pool
-_080F4CF8:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x6
- strb r0, [r1]
- b _080F4D84
- .pool
-_080F4D04:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x7
- strb r0, [r1]
- b _080F4D84
- .pool
-_080F4D10:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x8
- strb r0, [r1]
- b _080F4D84
- .pool
-_080F4D1C:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x9
- strb r0, [r1]
- b _080F4D84
- .pool
-_080F4D28:
- ldr r1, =gUnknown_0203A030
- movs r0, 0xA
- strb r0, [r1]
- b _080F4D84
- .pool
-_080F4D34:
- ldr r1, =gUnknown_0203A030
- movs r0, 0xB
- strb r0, [r1]
- b _080F4D84
- .pool
-_080F4D40:
- ldr r1, =gUnknown_0203A030
- movs r0, 0xC
- strb r0, [r1]
- b _080F4D84
- .pool
-_080F4D4C:
- ldr r1, =gUnknown_0203A030
- movs r0, 0xD
- strb r0, [r1]
- b _080F4D84
- .pool
-_080F4D58:
- ldr r1, =gUnknown_0203A030
- movs r0, 0xE
- strb r0, [r1]
- b _080F4D84
- .pool
-_080F4D64:
- ldr r0, =gStringVar2
- adds r1, r4, 0x4
- ldrb r2, [r4, 0x10]
- bl sub_81DB5E8
- ldr r1, =gUnknown_0203A030
- movs r0, 0xF
- strb r0, [r1]
- b _080F4D84
- .pool
-_080F4D80:
- bl TVShowDone
-_080F4D84:
- ldr r0, =gUnknown_0858D4E4
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowSpotTheCuties
-
- thumb_func_start DoTVShowPokemonNewsBattleFrontier
-DoTVShowPokemonNewsBattleFrontier: @ 80F4D9C
- push {r4-r7,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r6, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r7, [r0]
- adds r2, r0, 0
- cmp r7, 0x12
- bls _080F4DC4
- b _080F5014
-_080F4DC4:
- lsls r0, r7, 2
- ldr r1, =_080F4DE8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F4DE8:
- .4byte _080F4E34
- .4byte _080F4F18
- .4byte _080F4ECE
- .4byte _080F4EF4
- .4byte _080F4EF4
- .4byte _080F4F18
- .4byte _080F4F18
- .4byte _080F4F18
- .4byte _080F4F18
- .4byte _080F4F18
- .4byte _080F4F18
- .4byte _080F4F18
- .4byte _080F4F18
- .4byte _080F4F18
- .4byte _080F4F3C
- .4byte _080F4F74
- .4byte _080F4F9C
- .4byte _080F4FE0
- .4byte _080F5004
-_080F4E34:
- ldrb r0, [r6, 0xD]
- subs r0, 0x1
- cmp r0, 0xC
- bls _080F4E3E
- b _080F5014
-_080F4E3E:
- lsls r0, 2
- ldr r1, =_080F4E4C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F4E4C:
- .4byte _080F4E80
- .4byte _080F4E86
- .4byte _080F4E8C
- .4byte _080F4E92
- .4byte _080F4E98
- .4byte _080F4E9E
- .4byte _080F4EA4
- .4byte _080F4EAA
- .4byte _080F4EB0
- .4byte _080F4EB6
- .4byte _080F4EBC
- .4byte _080F4EC2
- .4byte _080F4EC8
-_080F4E80:
- movs r0, 0x1
- strb r0, [r2]
- b _080F5014
-_080F4E86:
- movs r0, 0x2
- strb r0, [r2]
- b _080F5014
-_080F4E8C:
- movs r0, 0x3
- strb r0, [r2]
- b _080F5014
-_080F4E92:
- movs r0, 0x4
- strb r0, [r2]
- b _080F5014
-_080F4E98:
- movs r0, 0x5
- strb r0, [r2]
- b _080F5014
-_080F4E9E:
- movs r0, 0x6
- strb r0, [r2]
- b _080F5014
-_080F4EA4:
- movs r0, 0x7
- strb r0, [r2]
- b _080F5014
-_080F4EAA:
- movs r0, 0x8
- strb r0, [r2]
- b _080F5014
-_080F4EB0:
- movs r0, 0x9
- strb r0, [r2]
- b _080F5014
-_080F4EB6:
- movs r0, 0xA
- strb r0, [r2]
- b _080F5014
-_080F4EBC:
- movs r0, 0xB
- strb r0, [r2]
- b _080F5014
-_080F4EC2:
- movs r0, 0xC
- strb r0, [r2]
- b _080F5014
-_080F4EC8:
- movs r0, 0xD
- strb r0, [r2]
- b _080F5014
-_080F4ECE:
- ldr r0, =gStringVar1
- adds r1, r6, 0
- adds r1, 0x13
- ldrb r2, [r6, 0xC]
- bl sub_81DB5E8
- ldrh r1, [r6, 0x2]
- movs r0, 0x1
- bl sub_80EF340
- ldr r1, =gUnknown_0203A030
- movs r0, 0x10
- strb r0, [r1]
- b _080F5014
- .pool
-_080F4EF4:
- ldr r0, =gStringVar1
- adds r1, r6, 0
- adds r1, 0x13
- ldrb r2, [r6, 0xC]
- bl sub_81DB5E8
- ldrh r1, [r6, 0x2]
- movs r0, 0x1
- bl sub_80EF340
- ldr r1, =gUnknown_0203A030
- movs r0, 0xF
- strb r0, [r1]
- b _080F5014
- .pool
-_080F4F18:
- ldr r0, =gStringVar1
- adds r1, r6, 0
- adds r1, 0x13
- ldrb r2, [r6, 0xC]
- bl sub_81DB5E8
- ldrh r1, [r6, 0x2]
- movs r0, 0x1
- bl sub_80EF340
- ldr r1, =gUnknown_0203A030
- movs r0, 0xE
- strb r0, [r1]
- b _080F5014
- .pool
-_080F4F3C:
- ldr r0, =gStringVar1
- ldrh r1, [r6, 0x4]
- movs r5, 0xB
- muls r1, r5
- ldr r4, =gSpeciesNames
- adds r1, r4
- bl StringCopy
- ldr r0, =gStringVar2
- ldrh r1, [r6, 0x6]
- muls r1, r5
- adds r1, r4
- bl StringCopy
- ldr r0, =gStringVar3
- ldrh r1, [r6, 0x8]
- muls r1, r5
- adds r1, r4
- b _080F4FEC
- .pool
-_080F4F74:
- ldr r0, =gStringVar1
- ldrh r1, [r6, 0x4]
- movs r5, 0xB
- muls r1, r5
- ldr r4, =gSpeciesNames
- adds r1, r4
- bl StringCopy
- ldr r0, =gStringVar2
- ldrh r1, [r6, 0x6]
- muls r1, r5
- adds r1, r4
- b _080F4FEC
- .pool
-_080F4F9C:
- ldr r0, =gStringVar1
- ldrh r1, [r6, 0x4]
- movs r5, 0xB
- muls r1, r5
- ldr r4, =gSpeciesNames
- adds r1, r4
- bl StringCopy
- ldr r0, =gStringVar2
- ldrh r1, [r6, 0x6]
- muls r1, r5
- adds r1, r4
- bl StringCopy
- ldr r0, =gStringVar3
- ldrh r1, [r6, 0x8]
- muls r1, r5
- adds r1, r4
- bl StringCopy
- ldr r1, =gUnknown_0203A030
- movs r0, 0x11
- strb r0, [r1]
- b _080F5014
- .pool
-_080F4FE0:
- ldr r0, =gStringVar1
- ldrh r2, [r6, 0xA]
- movs r1, 0xB
- muls r1, r2
- ldr r2, =gSpeciesNames
- adds r1, r2
-_080F4FEC:
- bl StringCopy
- ldr r1, =gUnknown_0203A030
- movs r0, 0x12
- strb r0, [r1]
- b _080F5014
- .pool
-_080F5004:
- ldr r0, =gStringVar1
- adds r1, r6, 0
- adds r1, 0x13
- ldrb r2, [r6, 0xC]
- bl sub_81DB5E8
- bl TVShowDone
-_080F5014:
- ldr r0, =gUnknown_0858D524
- lsls r1, r7, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowPokemonNewsBattleFrontier
-
- thumb_func_start DoTVShowWhatsNo1InHoennToday
-DoTVShowWhatsNo1InHoennToday: @ 80F5030
- push {r4,r5,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r5, [r0]
- cmp r5, 0x8
- bls _080F5056
- b _080F5164
-_080F5056:
- lsls r0, r5, 2
- ldr r1, =_080F5078
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F5078:
- .4byte _080F509C
- .4byte _080F5130
- .4byte _080F5130
- .4byte _080F5130
- .4byte _080F5130
- .4byte _080F5130
- .4byte _080F5130
- .4byte _080F5130
- .4byte _080F5154
-_080F509C:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x5]
- bl sub_81DB5E8
- ldrb r0, [r4, 0x4]
- cmp r0, 0x6
- bhi _080F5164
- lsls r0, 2
- ldr r1, =_080F50C0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F50C0:
- .4byte _080F50DC
- .4byte _080F50E8
- .4byte _080F50F4
- .4byte _080F5100
- .4byte _080F510C
- .4byte _080F5118
- .4byte _080F5124
-_080F50DC:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x1
- strb r0, [r1]
- b _080F5164
- .pool
-_080F50E8:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
- strb r0, [r1]
- b _080F5164
- .pool
-_080F50F4:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x3
- strb r0, [r1]
- b _080F5164
- .pool
-_080F5100:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x4
- strb r0, [r1]
- b _080F5164
- .pool
-_080F510C:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x5
- strb r0, [r1]
- b _080F5164
- .pool
-_080F5118:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x6
- strb r0, [r1]
- b _080F5164
- .pool
-_080F5124:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x7
- strb r0, [r1]
- b _080F5164
- .pool
-_080F5130:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x5]
- bl sub_81DB5E8
- ldrh r1, [r4, 0x2]
- movs r0, 0x1
- bl sub_80EF340
- ldr r1, =gUnknown_0203A030
- movs r0, 0x8
- strb r0, [r1]
- b _080F5164
- .pool
-_080F5154:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x5]
- bl sub_81DB5E8
- bl TVShowDone
-_080F5164:
- ldr r0, =gUnknown_0858D570
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowWhatsNo1InHoennToday
-
- thumb_func_start sub_80F5180
-sub_80F5180: @ 80F5180
- push {r4,lr}
- movs r1, 0
- movs r2, 0
- ldr r3, [r0, 0xC]
- movs r4, 0x1
-_080F518A:
- adds r0, r3, 0
- lsrs r0, r1
- ands r0, r4
- cmp r0, 0
- beq _080F519A
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
-_080F519A:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x1F
- bls _080F518A
- adds r0, r2, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_80F5180
-
- thumb_func_start sub_80F51AC
-sub_80F51AC: @ 80F51AC
- push {r4-r6,lr}
- lsls r1, 24
- lsrs r4, r1, 24
- movs r2, 0
- movs r3, 0
- ldr r1, [r0, 0xC]
- movs r5, 0x1
- ldr r6, =gUnknown_0858D690
-_080F51BC:
- adds r0, r1, 0
- lsrs r0, r2
- ands r0, r5
- cmp r0, 0
- beq _080F51DA
- cmp r3, r4
- bne _080F51D4
- adds r0, r2, r6
- ldrb r0, [r0]
- b _080F51E6
- .pool
-_080F51D4:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
-_080F51DA:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x1F
- bls _080F51BC
- movs r0, 0
-_080F51E6:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80F51AC
-
- thumb_func_start DoTVShowSecretBaseSecrets
-DoTVShowSecretBaseSecrets: @ 80F51EC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r5, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r2, [r0]
- mov r9, r2
- adds r2, r0, 0
- mov r0, r9
- cmp r0, 0x2B
- bls _080F521E
- b _080F552A
-_080F521E:
- lsls r0, 2
- ldr r1, =_080F5240
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F5240:
- .4byte _080F52F0
- .4byte _080F5348
- .4byte _080F53C4
- .4byte _080F5444
- .4byte _080F5498
- .4byte _080F5498
- .4byte _080F5498
- .4byte _080F54C4
- .4byte _080F54E8
- .4byte _080F54EC
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F54F0
- .4byte _080F5510
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
- .4byte _080F5526
-_080F52F0:
- ldr r0, =gStringVar1
- adds r1, r5, 0x4
- ldrb r2, [r5, 0x1C]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x1B]
- bl sub_81DB5E8
- adds r0, r5, 0
- bl sub_80F5180
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- bne _080F5328
- ldr r1, =gUnknown_0203A030
- movs r0, 0x8
- strb r0, [r1]
- b _080F552A
- .pool
-_080F5328:
- movs r0, 0x1
- strb r0, [r5, 0x12]
- bl Random
- ldr r4, =gUnknown_0203A031
- lsls r0, 16
- lsrs r0, 16
- adds r1, r6, 0
- bl __modsi3
- strb r0, [r4]
- ldrb r1, [r4]
- b _080F542A
- .pool
-_080F5348:
- ldr r0, =gStringVar2
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x1B]
- bl sub_81DB5E8
- adds r0, r5, 0
- bl sub_80F5180
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x1
- beq _080F53DE
- cmp r6, 0x2
- beq _080F5370
- movs r4, 0
- b _080F538A
- .pool
-_080F5370:
- strb r6, [r5, 0x12]
- ldr r0, =gUnknown_0203A031
- ldrb r0, [r0]
- cmp r0, 0
- bne _080F5384
- adds r0, r5, 0
- movs r1, 0x1
- b _080F542C
- .pool
-_080F5384:
- adds r0, r5, 0
- movs r1, 0
- b _080F542C
-_080F538A:
- bl Random
- ldr r7, =gUnknown_0203A031
- lsls r0, 16
- lsrs r0, 16
- adds r1, r6, 0
- bl __modsi3
- strb r0, [r7, 0x1]
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r7]
- cmp r0, r1
- bne _080F53B2
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r0, =0x0000fffe
- cmp r4, r0
- bls _080F538A
-_080F53B2:
- movs r0, 0x2
- strb r0, [r5, 0x12]
- ldrb r1, [r7, 0x1]
- b _080F542A
- .pool
-_080F53C4:
- ldr r0, =gStringVar2
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x1B]
- bl sub_81DB5E8
- adds r0, r5, 0
- bl sub_80F5180
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x2
- bne _080F53F0
-_080F53DE:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x9
- strb r0, [r1]
- b _080F552A
- .pool
-_080F53F0:
- movs r4, 0
- ldr r7, =gUnknown_0203A031
- ldr r2, =0x0000fffe
- mov r8, r2
-_080F53F8:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- adds r1, r6, 0
- bl __modsi3
- strb r0, [r7, 0x2]
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r7]
- cmp r0, r1
- beq _080F5418
- ldrb r2, [r7, 0x1]
- cmp r0, r2
- bne _080F5422
-_080F5418:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, r8
- bls _080F53F8
-_080F5422:
- movs r0, 0x3
- strb r0, [r5, 0x12]
- ldr r0, =gUnknown_0203A031
- ldrb r1, [r0, 0x2]
-_080F542A:
- adds r0, r5, 0
-_080F542C:
- bl sub_80F51AC
- ldr r1, =gUnknown_0203A030
- strb r0, [r1]
- b _080F552A
- .pool
-_080F5444:
- ldr r0, =gStringVar1
- adds r1, r5, 0x4
- ldrb r2, [r5, 0x1C]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x1B]
- bl sub_81DB5E8
- ldrh r1, [r5, 0x2]
- movs r0, 0x2
- bl sub_80EF340
- ldrh r0, [r5, 0x2]
- cmp r0, 0x1E
- bhi _080F547C
- ldr r1, =gUnknown_0203A030
- movs r0, 0x4
- strb r0, [r1]
- b _080F552A
- .pool
-_080F547C:
- cmp r0, 0x64
- bhi _080F548C
- ldr r1, =gUnknown_0203A030
- movs r0, 0x5
- strb r0, [r1]
- b _080F552A
- .pool
-_080F548C:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x6
- strb r0, [r1]
- b _080F552A
- .pool
-_080F5498:
- ldr r0, =gStringVar1
- adds r1, r5, 0x4
- ldrb r2, [r5, 0x1C]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x1B]
- bl sub_81DB5E8
- ldr r1, =gUnknown_0203A030
- movs r0, 0x7
- strb r0, [r1]
- b _080F552A
- .pool
-_080F54C4:
- ldr r0, =gStringVar1
- adds r1, r5, 0x4
- ldrb r2, [r5, 0x1C]
- bl sub_81DB5E8
- ldr r0, =gStringVar2
- adds r1, r5, 0
- adds r1, 0x13
- ldrb r2, [r5, 0x1B]
- bl sub_81DB5E8
- bl TVShowDone
- b _080F552A
- .pool
-_080F54E8:
- movs r0, 0x3
- b _080F5528
-_080F54EC:
- movs r0, 0x3
- b _080F5528
-_080F54F0:
- ldr r4, =gStringVar2
- ldrh r0, [r5, 0x10]
- bl ItemId_GetItem
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldr r1, =gUnknown_0203A030
- ldrb r0, [r5, 0x12]
- strb r0, [r1]
- b _080F552A
- .pool
-_080F5510:
- adds r0, r5, 0
- adds r0, 0x22
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080F5522
- movs r0, 0x16
- b _080F5528
-_080F5522:
- movs r0, 0x15
- b _080F5528
-_080F5526:
- ldrb r0, [r5, 0x12]
-_080F5528:
- strb r0, [r2]
-_080F552A:
- ldr r0, =gUnknown_0858D594
- mov r2, r9
- lsls r1, r2, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowSecretBaseSecrets
-
- thumb_func_start DoTVShowSafariFanClub
-DoTVShowSafariFanClub: @ 80F5548
- push {r4,r5,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r0, =gUnknown_0203A030
- ldrb r5, [r0]
- adds r2, r0, 0
- cmp r5, 0xA
- bls _080F5570
- b _080F56BC
-_080F5570:
- lsls r0, r5, 2
- ldr r1, =_080F5594
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080F5594:
- .4byte _080F55C0
- .4byte _080F55DC
- .4byte _080F5614
- .4byte _080F5628
- .4byte _080F569A
- .4byte _080F562E
- .4byte _080F5650
- .4byte _080F5680
- .4byte _080F5694
- .4byte _080F569A
- .4byte _080F56B8
-_080F55C0:
- ldrb r1, [r4, 0x2]
- cmp r1, 0
- bne _080F55CC
- movs r0, 0x6
- strb r0, [r2]
- b _080F56BC
-_080F55CC:
- cmp r1, 0x3
- bhi _080F55D6
- movs r0, 0x5
- strb r0, [r2]
- b _080F56BC
-_080F55D6:
- movs r0, 0x1
- strb r0, [r2]
- b _080F56BC
-_080F55DC:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x4]
- bl sub_81DB5E8
- ldrb r1, [r4, 0x2]
- movs r0, 0x1
- bl sub_80EF340
- ldrb r0, [r4, 0x3]
- cmp r0, 0
- bne _080F5608
- ldr r1, =gUnknown_0203A030
- movs r0, 0x3
- strb r0, [r1]
- b _080F56BC
- .pool
-_080F5608:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x2
- strb r0, [r1]
- b _080F56BC
- .pool
-_080F5614:
- ldrb r1, [r4, 0x3]
- movs r0, 0x1
- bl sub_80EF340
- ldr r1, =gUnknown_0203A030
- movs r0, 0x4
- strb r0, [r1]
- b _080F56BC
- .pool
-_080F5628:
- movs r0, 0x4
- strb r0, [r2]
- b _080F56BC
-_080F562E:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x4]
- bl sub_81DB5E8
- ldrb r1, [r4, 0x2]
- movs r0, 0x1
- bl sub_80EF340
- ldrb r0, [r4, 0x3]
- cmp r0, 0
- beq _080F5662
- b _080F5674
- .pool
-_080F5650:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x4]
- bl sub_81DB5E8
- ldrb r0, [r4, 0x3]
- cmp r0, 0
- bne _080F5674
-_080F5662:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x8
- strb r0, [r1]
- b _080F56BC
- .pool
-_080F5674:
- ldr r1, =gUnknown_0203A030
- movs r0, 0x7
- strb r0, [r1]
- b _080F56BC
- .pool
-_080F5680:
- ldrb r1, [r4, 0x3]
- movs r0, 0x1
- bl sub_80EF340
- ldr r1, =gUnknown_0203A030
- movs r0, 0x9
- strb r0, [r1]
- b _080F56BC
- .pool
-_080F5694:
- movs r0, 0x9
- strb r0, [r2]
- b _080F56BC
-_080F569A:
- ldr r0, =gStringVar1
- adds r1, r4, 0
- adds r1, 0x13
- ldrb r2, [r4, 0x4]
- bl sub_81DB5E8
- ldr r1, =gUnknown_0203A030
- movs r0, 0xA
- strb r0, [r1]
- b _080F56BC
- .pool
-_080F56B8:
- bl TVShowDone
-_080F56BC:
- ldr r0, =gUnknown_0858D640
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowSafariFanClub
-
- thumb_func_start DoTVShowPokemonContestLiveUpdates2
-DoTVShowPokemonContestLiveUpdates2: @ 80F56D4
- push {r4-r6,lr}
- ldr r2, =gSaveBlock1Ptr
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, =0x000027cc
- adds r0, r1
- ldr r1, [r2]
- adds r4, r1, r0
- ldr r1, =gScriptResult
- movs r0, 0
- strh r0, [r1]
- ldr r6, =gUnknown_0203A030
- ldrb r5, [r6]
- cmp r5, 0x2
- bgt _080F5718
- cmp r5, 0x1
- bge _080F5744
- cmp r5, 0
- beq _080F571E
- b _080F575E
- .pool
-_080F5718:
- cmp r5, 0x3
- beq _080F574E
- b _080F575E
-_080F571E:
- ldr r0, =gStringVar1
- ldrb r1, [r4, 0xA]
- bl sub_818E868
- ldrb r1, [r4, 0x16]
- cmp r1, 0x1
- bne _080F5734
- strb r1, [r6]
- b _080F575E
- .pool
-_080F5734:
- cmp r1, 0
- bne _080F573E
- movs r0, 0x2
- strb r0, [r6]
- b _080F575E
-_080F573E:
- movs r0, 0x3
- strb r0, [r6]
- b _080F575E
-_080F5744:
- ldr r0, =gStringVar3
- adds r1, r4, 0x2
- ldrb r2, [r4, 0x17]
- bl sub_81DB5E8
-_080F574E:
- ldr r0, =gStringVar2
- adds r1, r4, 0
- adds r1, 0xB
- ldrb r2, [r4, 0x18]
- bl sub_81DB5E8
- bl TVShowDone
-_080F575E:
- ldr r0, =gUnknown_0858D384
- lsls r1, r5, 2
- adds r1, r0
- ldr r0, [r1]
- bl box_related_two__2
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end DoTVShowPokemonContestLiveUpdates2
-
- thumb_func_start TVShowDone
-TVShowDone: @ 80F577C
- ldr r1, =gScriptResult
- movs r0, 0x1
- strh r0, [r1]
- ldr r1, =gUnknown_0203A030
- movs r0, 0
- strb r0, [r1]
- ldr r0, =gSaveBlock1Ptr
- ldr r2, [r0]
- ldr r0, =gSpecialVar_0x8004
- ldrh r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r2, r0
- ldr r0, =0x000027cd
- adds r2, r0
- movs r0, 0
- strb r0, [r2]
- bx lr
- .pool
- thumb_func_end TVShowDone
-
- thumb_func_start ResetTVShowState
-ResetTVShowState: @ 80F57B8
- ldr r1, =gUnknown_0203A030
- movs r0, 0
- strb r0, [r1]
- bx lr
- .pool
- thumb_func_end ResetTVShowState
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/charmap.txt b/charmap.txt
index 8fe4147cc..05eff3012 100644
--- a/charmap.txt
+++ b/charmap.txt
@@ -355,12 +355,12 @@ B_LINK_OPPONENT_MON1_NAME = FD 0A
B_LINK_PLAYER_MON2_NAME = FD 0B
B_LINK_OPPONENT_MON2_NAME = FD 0C
B_ATK_NAME_WITH_PREFIX_MON1 = FD 0D
-B_ATK_NAME = FD 0E
+B_ATK_PARTNER_NAME = FD 0E
B_ATK_NAME_WITH_PREFIX = FD 0F
B_DEF_NAME_WITH_PREFIX = FD 10
B_EFF_NAME_WITH_PREFIX = FD 11 @ EFF = short for gEffectBank
-B_SCR_ACTIVE_NAME_WITH_PREFIX = FD 12
-B_ACTIVE_NAME_WITH_PREFIX = FD 13
+B_ACTIVE_NAME_WITH_PREFIX = FD 12
+B_SCR_ACTIVE_NAME_WITH_PREFIX = FD 13
B_CURRENT_MOVE = FD 14
B_LAST_MOVE = FD 15
B_LAST_ITEM = FD 16
diff --git a/common_syms/tv.txt b/common_syms/tv.txt
new file mode 100644
index 000000000..0370f65e1
--- /dev/null
+++ b/common_syms/tv.txt
@@ -0,0 +1,4 @@
+sCurTVShowSlot
+sTV_SecretBaseVisitMovesTemp
+sTV_DecorationsBuffer
+sTV_SecretBaseVisitMonsTemp
diff --git a/data/battle_1.s b/data/battle_1.s
new file mode 100644
index 000000000..37f68bfd6
--- /dev/null
+++ b/data/battle_1.s
@@ -0,0 +1,12 @@
+
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .section .rodata
+
+ .align 2
+gUnknown_082FF1C8:: @ 82FF1C8
+ .byte 0x01, 0x04, 0x10, 0x40
+ .byte 0x02, 0x04, 0x08, 0x20
+ .byte 0x02, 0x04, 0x08, 0x20
+ .byte 0x00, 0x00, 0x00, 0x00
diff --git a/data/battle_anims.s b/data/battle_anims.s
index 8b285f7be..13e1bdc2f 100644
--- a/data/battle_anims.s
+++ b/data/battle_anims.s
@@ -4,6 +4,8 @@
.section .rodata
.align 2, 0
+ @ only partially done because this file terrifies me
+
gUnknown_08524904:: @ 8524904
.byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00
@@ -291,62 +293,740 @@ gUnknown_08524B34:: @ 8524B34
gUnknown_08524B3C:: @ 8524B3C
.byte 0x00, 0x87, 0x00, 0xc0, 0x00, 0x08, 0x00, 0x00
+ .align 2
gUnknown_08524B44:: @ 8524B44
- .incbin "baserom.gba", 0x524b44, 0x1d0
-
+ obj_tiles 0x08c02538, 0x0200, 0x2710
+ obj_tiles 0x08c1c6e0, 0x0300, 0x2711
+ obj_tiles 0x08c20784, 0x0200, 0x2712
+ obj_tiles 0x08c025e8, 0x0100, 0x2713
+ obj_tiles 0x08c0265c, 0x0200, 0x2714
+ obj_tiles 0x08c0270c, 0x0400, 0x2715
+ obj_tiles 0x08c027e0, 0x0180, 0x2716
+ obj_tiles 0x08c029cc, 0x0800, 0x2717
+ obj_tiles 0x08c02b68, 0x0020, 0x2718
+ obj_tiles 0x08c02fa4, 0x0400, 0x2719
+ obj_tiles 0x08c02bc4, 0x1200, 0x271a
+ obj_tiles 0x08c032ac, 0x0180, 0x271b
+ obj_tiles 0x08c0334c, 0x0080, 0x271c
+ obj_tiles 0x08c03438, 0x0080, 0x271d
+ obj_tiles 0x08c1fbd4, 0x0280, 0x271e
+ obj_tiles 0x08c03484, 0x0080, 0x271f
+ obj_tiles 0x08c03518, 0x0100, 0x2720
+ obj_tiles 0x08c03598, 0x0020, 0x2721
+ obj_tiles 0x08c24d7c, 0x0080, 0x2722
+ obj_tiles 0x08c035f8, 0x0400, 0x2723
+ obj_tiles 0x08c036b8, 0x0200, 0x2724
+ obj_tiles 0x08c03a28, 0x0a00, 0x2725
+ obj_tiles 0x08c03a28, 0x0a00, 0x2726
+ obj_tiles 0x08c037d4, 0x0380, 0x2727
+ obj_tiles 0x08c03ea0, 0x0300, 0x2728
+ obj_tiles 0x08c03db0, 0x0a00, 0x2729
+ obj_tiles 0x08c04494, 0x0a00, 0x272a
+ obj_tiles 0x08c0481c, 0x0a00, 0x272b
+ obj_tiles 0x08c04b40, 0x0a00, 0x272c
+ obj_tiles 0x08c04e90, 0x0a00, 0x272d
+ obj_tiles 0x08c05170, 0x0a00, 0x272e
+ obj_tiles 0x08c03f80, 0x0e00, 0x272f
+ obj_tiles 0x08c043a8, 0x0380, 0x2730
+ obj_tiles 0x08c0557c, 0x1000, 0x2731
+ obj_tiles 0x08c05eec, 0x0800, 0x2732
+ obj_tiles 0x08c062b8, 0x0a00, 0x2733
+ obj_tiles 0x08c06678, 0x0800, 0x2734
+ obj_tiles 0x08c06a4c, 0x0a00, 0x2735
+ obj_tiles 0x08c07964, 0x0a00, 0x2736
+ obj_tiles 0x08c07b88, 0x0a00, 0x2737
+ obj_tiles 0x08c07e84, 0x0a00, 0x2738
+ obj_tiles 0x08c08090, 0x0a00, 0x2739
+ obj_tiles 0x08c082c4, 0x0a00, 0x273a
+ obj_tiles 0x08c085bc, 0x0a00, 0x273b
+ obj_tiles 0x08c08a0c, 0x0a00, 0x273c
+ obj_tiles 0x08c08ca0, 0x0a00, 0x273d
+ obj_tiles 0x08c09604, 0x1000, 0x273e
+ obj_tiles 0x08c09604, 0x1000, 0x273f
+ obj_tiles 0x08c09cf0, 0x1000, 0x2740
+ obj_tiles 0x08c09cf0, 0x1000, 0x2741
+ obj_tiles 0x08c09ffc, 0x0200, 0x2742
+ obj_tiles 0x08c0a09c, 0x0200, 0x2743
+ obj_tiles 0x08c0a148, 0x0200, 0x2744
+ obj_tiles 0x08c2e830, 0x0800, 0x2745
+ obj_tiles 0x08c0a3a8, 0x0080, 0x2746
+ obj_tiles 0x08c0a8bc, 0x0200, 0x2747
+ obj_tiles 0x08c0a3ec, 0x1000, 0x2748
+ obj_tiles 0x08c0a980, 0x0180, 0x2749
+
+ .align 2
gUnknown_08524D14:: @ 8524D14
- .incbin "baserom.gba", 0x524d14, 0x270
-
+ obj_tiles 0x08c0aa2c, 0x0c00, 0x274a
+ obj_tiles 0x08c0aebc, 0x0100, 0x274b
+ obj_tiles 0x08c0af38, 0x0040, 0x274c
+ obj_tiles 0x08c0af7c, 0x0180, 0x274d
+ obj_tiles 0x08c0b04c, 0x0800, 0x274e
+ obj_tiles 0x08c0b444, 0x0480, 0x274f
+ obj_tiles 0x08c23104, 0x0200, 0x2750
+ obj_tiles 0x08c0b6bc, 0x0200, 0x2751
+ obj_tiles 0x08c0b7f0, 0x0100, 0x2752
+ obj_tiles 0x08c0b6bc, 0x0200, 0x2753
+ obj_tiles 0x08c0b6bc, 0x0200, 0x2754
+ obj_tiles 0x08c0b6bc, 0x0200, 0x2755
+ obj_tiles 0x08c0b864, 0x0200, 0x2756
+ obj_tiles 0x08c0b90c, 0x0a00, 0x2757
+ obj_tiles 0x08c0bb38, 0x0300, 0x2758
+ obj_tiles 0x08c0bc20, 0x0180, 0x2759
+ obj_tiles 0x08c1b29c, 0x00a0, 0x275a
+ obj_tiles 0x08c0bd5c, 0x0700, 0x275b
+ obj_tiles 0x08c14cec, 0x0400, 0x275c
+ obj_tiles 0x08c14f50, 0x0200, 0x275d
+ obj_tiles 0x08c0bffc, 0x0300, 0x275e
+ obj_tiles 0x08c0c1bc, 0x0c00, 0x275f
+ obj_tiles 0x08c0c5ec, 0x0a00, 0x2760
+ obj_tiles 0x08c0c974, 0x0080, 0x2761
+ obj_tiles 0x08c0cb90, 0x0040, 0x2762
+ obj_tiles 0x08c0ce18, 0x0e00, 0x2763
+ obj_tiles 0x08c0d2bc, 0x0e00, 0x2764
+ obj_tiles 0x08c0d680, 0x0280, 0x2765
+ obj_tiles 0x08c0d738, 0x0200, 0x2766
+ obj_tiles 0x08c24cfc, 0x0080, 0x2767
+ obj_tiles 0x08c0d8a8, 0x00c0, 0x2768
+ obj_tiles 0x08c0d8f8, 0x0a00, 0x2769
+ obj_tiles 0x08c0db6c, 0x0200, 0x276a
+ obj_tiles 0x08c0dbfc, 0x0180, 0x276b
+ obj_tiles 0x08c0dd30, 0x0080, 0x276c
+ obj_tiles 0x08c0ddac, 0x1000, 0x276d
+ obj_tiles 0x08c0e47c, 0x0a00, 0x276e
+ obj_tiles 0x08c0e620, 0x0180, 0x276f
+ obj_tiles 0x08c0e6d0, 0x0380, 0x2770
+ obj_tiles 0x08c0e840, 0x0c00, 0x2771
+ obj_tiles 0x08c0ea20, 0x0200, 0x2772
+ obj_tiles 0x08c27cec, 0x0200, 0x2773
+ obj_tiles 0x08c0eb58, 0x0200, 0x2774
+ obj_tiles 0x08c0ec58, 0x0200, 0x2775
+ obj_tiles 0x08c0ed88, 0x0400, 0x2776
+ obj_tiles 0x08c0ef20, 0x0080, 0x2777
+ obj_tiles 0x08c0ef8c, 0x0400, 0x2778
+ obj_tiles 0x08c0f174, 0x0c00, 0x2779
+ obj_tiles 0x08c0f720, 0x0200, 0x277a
+ obj_tiles 0x08c0f810, 0x1000, 0x277b
+ obj_tiles 0x08c0fbe4, 0x0a00, 0x277c
+ obj_tiles 0x08c0ff68, 0x0020, 0x277d
+ obj_tiles 0x08c0ffb8, 0x0e00, 0x277e
+ obj_tiles 0x08c1039c, 0x0080, 0x277f
+ obj_tiles 0x08c10404, 0x0a00, 0x2780
+ obj_tiles 0x08c10754, 0x0400, 0x2781
+ obj_tiles 0x08c109e8, 0x0200, 0x2782
+ obj_tiles 0x08c115e4, 0x0700, 0x2783
+ obj_tiles 0x08c12e88, 0x0800, 0x2784
+ obj_tiles 0x08c1315c, 0x0a00, 0x2785
+ obj_tiles 0x08c133b4, 0x0600, 0x2786
+ obj_tiles 0x08c13568, 0x0800, 0x2787
+ obj_tiles 0x08c13820, 0x0200, 0x2788
+ obj_tiles 0x08c1393c, 0x0040, 0x2789
+ obj_tiles 0x08c1398c, 0x0180, 0x278a
+ obj_tiles 0x08c13aa4, 0x0600, 0x278b
+ obj_tiles 0x08c13be0, 0x0600, 0x278c
+ obj_tiles 0x08c13ea0, 0x0200, 0x278d
+ obj_tiles 0x08c13fb4, 0x0080, 0x278e
+ obj_tiles 0x08c1403c, 0x0200, 0x278f
+ obj_tiles 0x08c14200, 0x0800, 0x2790
+ obj_tiles 0x08c1448c, 0x0080, 0x2791
+ obj_tiles 0x08c144f0, 0x0a00, 0x2792
+ obj_tiles 0x08c148e8, 0x0280, 0x2793
+ obj_tiles 0x08c14a58, 0x0280, 0x2794
+ obj_tiles 0x08c14b78, 0x0100, 0x2795
+ obj_tiles 0x08c14c1c, 0x0200, 0x2796
+ obj_tiles 0x08c1a3a0, 0x0200, 0x2797
+
+ .align 2
gUnknown_08524F84:: @ 8524F84
- .incbin "baserom.gba", 0x524f84, 0x308
-
+ obj_tiles 0x08c1a540, 0x0020, 0x2798
+ obj_tiles 0x08c1a58c, 0x0a00, 0x2799
+ obj_tiles 0x08c1ab40, 0x0800, 0x279a
+ obj_tiles 0x08c1a790, 0x0800, 0x279b
+ obj_tiles 0x08c1ac8c, 0x00c0, 0x279c
+ obj_tiles 0x08c1ad2c, 0x01c0, 0x279d
+ obj_tiles 0x08c1ae54, 0x0100, 0x279e
+ obj_tiles 0x08c2cbac, 0x0800, 0x279f
+ obj_tiles 0x08c1bc64, 0x0200, 0x27a0
+ obj_tiles 0x08c1a9a0, 0x0800, 0x27a1
+ obj_tiles 0x08c02478, 0x0180, 0x27a2
+ obj_tiles 0x08c1af6c, 0x0180, 0x27a3
+ obj_tiles 0x08c1b178, 0x0200, 0x27a4
+ obj_tiles 0x08c1b0a8, 0x0200, 0x27a5
+ obj_tiles 0x08c1b328, 0x0180, 0x27a6
+ obj_tiles 0x08c1b418, 0x0400, 0x27a7
+ obj_tiles 0x08c033cc, 0x0080, 0x27a8
+ obj_tiles 0x08c1b510, 0x0100, 0x27a9
+ obj_tiles 0x08c1b594, 0x0100, 0x27aa
+ obj_tiles 0x08c1b660, 0x0140, 0x27ab
+ obj_tiles 0x08c1b748, 0x0800, 0x27ac
+ obj_tiles 0x08c1b988, 0x0200, 0x27ad
+ obj_tiles 0x08c1ba04, 0x0100, 0x27ae
+ obj_tiles 0x08c1baf0, 0x00a0, 0x27af
+ obj_tiles 0x08c1bb94, 0x0100, 0x27b0
+ obj_tiles 0x08c0297c, 0x0080, 0x27b1
+ obj_tiles 0x08c1be40, 0x0300, 0x27b2
+ obj_tiles 0x08c1bee4, 0x0100, 0x27b3
+ obj_tiles 0x08c1bee4, 0x0100, 0x27b4
+ obj_tiles 0x08c1bee4, 0x0100, 0x27b5
+ obj_tiles 0x08c1bfa4, 0x0800, 0x27b6
+ obj_tiles 0x08c1bfa4, 0x0800, 0x27b7
+ obj_tiles 0x08c1bfa4, 0x0800, 0x27b8
+ obj_tiles 0x08c1bfa4, 0x0800, 0x27b9
+ obj_tiles 0x08c1bfa4, 0x0800, 0x27ba
+ obj_tiles 0x08c1c350, 0x0080, 0x27bb
+ obj_tiles 0x08c1bc64, 0x0200, 0x27bc
+ obj_tiles 0x08c1c7bc, 0x0200, 0x27bd
+ obj_tiles 0x08c1d5fc, 0x0200, 0x27be
+ obj_tiles 0x08c1d6c4, 0x0080, 0x27bf
+ obj_tiles 0x08c1d750, 0x0200, 0x27c0
+ obj_tiles 0x08c1d8d0, 0x0500, 0x27c1
+ obj_tiles 0x08c1d9ac, 0x0800, 0x27c2
+ obj_tiles 0x08c1db64, 0x0400, 0x27c3
+ obj_tiles 0x08c1dc40, 0x0020, 0x27c4
+ obj_tiles 0x08c1dc58, 0x0800, 0x27c5
+ obj_tiles 0x08c1dfe8, 0x0100, 0x27c6
+ obj_tiles 0x08c1e0b4, 0x0800, 0x27c7
+ obj_tiles 0x08c1e354, 0x0400, 0x27c8
+ obj_tiles 0x08c1e4d0, 0x0a00, 0x27c9
+ obj_tiles 0x08c1edd8, 0x1000, 0x27ca
+ obj_tiles 0x08c1ebc8, 0x0800, 0x27cb
+ obj_tiles 0x08d966c0, 0x0400, 0x27cc
+ obj_tiles 0x08c20198, 0x0200, 0x27cd
+ obj_tiles 0x08c1fc84, 0x0800, 0x27ce
+ obj_tiles 0x08c1ff04, 0x0800, 0x27cf
+ obj_tiles 0x08c2023c, 0x0800, 0x27d0
+ obj_tiles 0x08c204e4, 0x0200, 0x27d1
+ obj_tiles 0x08c20c4c, 0x0800, 0x27d2
+ obj_tiles 0x08c20fac, 0x0200, 0x27d3
+ obj_tiles 0x08c20890, 0x0800, 0x27d4
+ obj_tiles 0x08c21084, 0x0200, 0x27d5
+ obj_tiles 0x08c2121c, 0x0800, 0x27d6
+ obj_tiles 0x08c21634, 0x0400, 0x27d7
+ obj_tiles 0x08c21718, 0x0200, 0x27d8
+ obj_tiles 0x08c21874, 0x0a80, 0x27d9
+ obj_tiles 0x08c220a8, 0x0600, 0x27da
+ obj_tiles 0x08c22234, 0x0800, 0x27db
+ obj_tiles 0x08c21f0c, 0x0200, 0x27dc
+ obj_tiles 0x08c226a4, 0x0600, 0x27dd
+ obj_tiles 0x08c22404, 0x0800, 0x27de
+ obj_tiles 0x08c228fc, 0x0180, 0x27df
+ obj_tiles 0x08c229ec, 0x0800, 0x27e0
+ obj_tiles 0x08c22ddc, 0x0800, 0x27e1
+ obj_tiles 0x08c23218, 0x0080, 0x27e2
+ obj_tiles 0x08c242b0, 0x0080, 0x27e3
+ obj_tiles 0x08c2407c, 0x0800, 0x27e4
+ obj_tiles 0x08c24300, 0x0800, 0x27e5
+ obj_tiles 0x08c24590, 0x0600, 0x27e6
+ obj_tiles 0x08c24820, 0x0600, 0x27e7
+ obj_tiles 0x08c23218, 0x0080, 0x27e8
+ obj_tiles 0x08c23ff4, 0x0080, 0x27e9
+ obj_tiles 0x08c24c50, 0x0180, 0x27ea
+ obj_tiles 0x08c23218, 0x0080, 0x27eb
+ obj_tiles 0x08c24dfc, 0x0200, 0x27ec
+ obj_tiles 0x08c24f48, 0x0400, 0x27ed
+ obj_tiles 0x08c251ac, 0x0a00, 0x27ee
+ obj_tiles 0x08c254e0, 0x0800, 0x27ef
+ obj_tiles 0x08c25794, 0x0200, 0x27f0
+ obj_tiles 0x08c27764, 0x0400, 0x27f1
+ obj_tiles 0x08c27a58, 0x0080, 0x27f2
+ obj_tiles 0x08c27910, 0x0800, 0x27f3
+ obj_tiles 0x08c25b1c, 0x0200, 0x27f4
+ obj_tiles 0x08c27b08, 0x0300, 0x27f5
+ obj_tiles 0x08c258b8, 0x0800, 0x27f6
+ obj_tiles 0x08c28394, 0x0380, 0x27f7
+ obj_tiles 0x08c27e34, 0x0800, 0x27f8
+
+ .align 2
gUnknown_0852528C:: @ 852528C
- .incbin "baserom.gba", 0x52528c, 0x120
-
+ obj_tiles 0x08c28564, 0x00c0, 0x27f9
+ obj_tiles 0x08c28610, 0x0800, 0x27fa
+ obj_tiles 0x08c28880, 0x0060, 0x27fb
+ obj_tiles 0x08c28880, 0x0060, 0x27fc
+ obj_tiles 0x08c28880, 0x0060, 0x27fd
+ obj_tiles 0x08c287f4, 0x0080, 0x27fe
+ obj_tiles 0x08c2caa0, 0x0180, 0x27ff
+ obj_tiles 0x08c2cdf4, 0x0180, 0x2800
+ obj_tiles 0x08c2d348, 0x0200, 0x2801
+ obj_tiles 0x08c2d570, 0x0200, 0x2802
+ obj_tiles 0x08c2d6d0, 0x0020, 0x2803
+ obj_tiles 0x08c2e554, 0x0400, 0x2804
+ obj_tiles 0x08c2df08, 0x0600, 0x2805
+ obj_tiles 0x08c2e0ac, 0x1000, 0x2806
+ obj_tiles 0x08c2e64c, 0x0400, 0x2807
+ obj_tiles 0x08c2eba4, 0x0020, 0x2808
+ obj_tiles 0x08c2ebd4, 0x0080, 0x2809
+ obj_tiles 0x08c2ec44, 0x0800, 0x280a
+ obj_tiles 0x08c2ee38, 0x0080, 0x280b
+ obj_tiles 0x08c2eeb4, 0x0200, 0x280c
+ obj_tiles 0x08c2eff0, 0x0400, 0x280d
+ obj_tiles 0x08c2f1f4, 0x0200, 0x280e
+ obj_tiles 0x08c2f354, 0x0200, 0x280f
+ obj_tiles 0x08c2f4f0, 0x0800, 0x2810
+ obj_tiles 0x08c2f8a4, 0x0280, 0x2811
+ obj_tiles 0x08c2f3e0, 0x0200, 0x2812
+ obj_tiles 0x08c1b0a8, 0x0200, 0x2813
+ obj_tiles 0x08d8dae0, 0x0400, 0x2814
+ obj_tiles 0x08d8d2a4, 0x0200, 0x2815
+ obj_tiles 0x08d8e840, 0x0200, 0x2816
+ obj_tiles 0x08d93b44, 0x0080, 0x2817
+ obj_tiles 0x08d8ea54, 0x0020, 0x2818
+ obj_tiles 0x08d8ea54, 0x0020, 0x2819
+ obj_tiles 0x08d93b9c, 0x0080, 0x281a
+ obj_tiles 0x08c2407c, 0x0800, 0x281b
+ obj_tiles 0x08d8ea54, 0x0020, 0x281c
+
+ .align 2
gUnknown_085253AC:: @ 85253AC
- .incbin "baserom.gba", 0x5253ac, 0x270
-
+ obj_tiles 0x08d8ef2c, 0x0080, 0x281d
+ obj_tiles 0x08dba378, 0x0400, 0x281e
+ obj_tiles 0x08dba4b8, 0x0080, 0x281f
+ obj_tiles 0x08d8ecc4, 0x0800, 0x2820
+ obj_tiles 0x08d8ef04, 0x0020, 0x2821
+ obj_tiles 0x08d8ef98, 0x0800, 0x2822
+ obj_tiles 0x08d8f118, 0x0800, 0x2823
+ obj_tiles 0x08d8f284, 0x0800, 0x2824
+ obj_tiles 0x08d92eec, 0x1000, 0x2825
+ obj_tiles 0x08d93c24, 0x0800, 0x2826
+ obj_tiles 0x08d93e4c, 0x00a0, 0x2827
+ obj_tiles 0x08d8f780, 0x0800, 0x2828
+ obj_tiles 0x08d93eb4, 0x0200, 0x2829
+ obj_tiles 0x08dba174, 0x0600, 0x282a
+ obj_tiles 0x08d93474, 0x0200, 0x282b
+ obj_tiles 0x08d94658, 0x0800, 0x282c
+ obj_tiles 0x08d949f0, 0x0200, 0x282d
+ obj_tiles 0x08c1e0b4, 0x0800, 0x282e
+ obj_tiles 0x08c0a3ec, 0x1000, 0x282f
+ obj_tiles 0x08c1bee4, 0x0100, 0x2830
+
+ obj_pal 0x08c028cc, 0x2710
+ obj_pal 0x08c1c794, 0x2711
+ obj_pal 0x08c20868, 0x2712
+ obj_pal 0x08c028f0, 0x2713
+ obj_pal 0x08c02918, 0x2714
+ obj_pal 0x08c0292c, 0x2715
+ obj_pal 0x08c02954, 0x2716
+ obj_pal 0x08c02b48, 0x2717
+ obj_pal 0x08c02b88, 0x2718
+ obj_pal 0x08c0328c, 0x2719
+ obj_pal 0x08c02ba4, 0x271a
+ obj_pal 0x08c03324, 0x271b
+ obj_pal 0x08c033b4, 0x271c
+ obj_pal 0x08c0346c, 0x271d
+ obj_pal 0x08c1fc68, 0x271e
+ obj_pal 0x08c034f0, 0x271f
+ obj_pal 0x08c03588, 0x2720
+ obj_pal 0x08c03588, 0x2721
+ obj_pal 0x08c24db8, 0x2722
+ obj_pal 0x08c035dc, 0x2723
+ obj_pal 0x08c03784, 0x2724
+ obj_pal 0x08c03a00, 0x2725
+ obj_pal 0x08c03d60, 0x2726
+ obj_pal 0x08c037ac, 0x2727
+ obj_pal 0x08c03f6c, 0x2728
+ obj_pal 0x08c03d88, 0x2729
+ obj_pal 0x08c047cc, 0x272a
+ obj_pal 0x08c047f4, 0x272b
+ obj_pal 0x08c04b18, 0x272c
+ obj_pal 0x08c05148, 0x272d
+ obj_pal 0x08c05530, 0x272e
+ obj_pal 0x08c04360, 0x272f
+ obj_pal 0x08c04380, 0x2730
+ obj_pal 0x08c05554, 0x2731
+ obj_pal 0x08c05554, 0x2732
+ obj_pal 0x08c05554, 0x2733
+ obj_pal 0x08c06650, 0x2734
+ obj_pal 0x08c06650, 0x2735
+ obj_pal 0x08c07914, 0x2736
+ obj_pal 0x08c0793c, 0x2737
+ obj_pal 0x08c07914, 0x2738
+ obj_pal 0x08c07914, 0x2739
+ obj_pal 0x08c08594, 0x273a
+ obj_pal 0x08c089bc, 0x273b
+ obj_pal 0x08c089e4, 0x273c
+ obj_pal 0x08c08c78, 0x273d
+ obj_pal 0x08c099e4, 0x273e
+ obj_pal 0x08c09a04, 0x273e
+ obj_pal 0x08c09f88, 0x2740
+ obj_pal 0x08c09fb0, 0x2741
+ obj_pal 0x08c09fd8, 0x2742
+ obj_pal 0x08c09fd8, 0x2743
+ obj_pal 0x08c09fd8, 0x2744
+ obj_pal 0x08c047cc, 0x2745
+ obj_pal 0x08c0a3d4, 0x2746
+ obj_pal 0x08c09fd8, 0x2747
+ obj_pal 0x08c0a894, 0x2748
+ obj_pal 0x08c0aa08, 0x2749
+
+ .align 2
gUnknown_0852561C:: @ 852561C
- .incbin "baserom.gba", 0x52561c, 0x270
-
+ obj_pal 0x08c0ae94, 0x274a
+ obj_pal 0x08c0af1c, 0x274b
+ obj_pal 0x08c0af60, 0x274c
+ obj_pal 0x08c0b02c, 0x274d
+ obj_pal 0x08c0b41c, 0x274e
+ obj_pal 0x08c0b600, 0x274f
+ obj_pal 0x08c231f4, 0x2750
+ obj_pal 0x08c0b7d0, 0x2751
+ obj_pal 0x08c0b83c, 0x2752
+ obj_pal 0x08d8eaa4, 0x2753
+ obj_pal 0x08d8eac4, 0x2754
+ obj_pal 0x08c0b7d0, 0x2755
+ obj_pal 0x08c0b8e4, 0x2756
+ obj_pal 0x08c0b8e4, 0x2757
+ obj_pal 0x08c0bc08, 0x2758
+ obj_pal 0x08c0bd3c, 0x2759
+ obj_pal 0x08c1b304, 0x275a
+ obj_pal 0x08c0bfd8, 0x275b
+ obj_pal 0x08c14f28, 0x275c
+ obj_pal 0x08c14f28, 0x275d
+ obj_pal 0x08c0c194, 0x275e
+ obj_pal 0x08c0c194, 0x275f
+ obj_pal 0x08c0c950, 0x2760
+ obj_pal 0x08c0c9f8, 0x2761
+ obj_pal 0x08c0cbb4, 0x2762
+ obj_pal 0x08c0cbc8, 0x2763
+ obj_pal 0x08c0cbf0, 0x2764
+ obj_pal 0x08c0cc18, 0x2765
+ obj_pal 0x08c0cc30, 0x2766
+ obj_pal 0x08c24d54, 0x2767
+ obj_pal 0x08c0cc58, 0x2768
+ obj_pal 0x08c0cc74, 0x2769
+ obj_pal 0x08c0cc9c, 0x276a
+ obj_pal 0x08c0b698, 0x276b
+ obj_pal 0x08c0ccc0, 0x276c
+ obj_pal 0x08c0ccdc, 0x276d
+ obj_pal 0x08c0cd04, 0x276e
+ obj_pal 0x08c0cd44, 0x276f
+ obj_pal 0x08c0cd6c, 0x2770
+ obj_pal 0x08c0cd88, 0x2771
+ obj_pal 0x08c0cd04, 0x2772
+ obj_pal 0x08c27e0c, 0x2773
+ obj_pal 0x08c0cdb0, 0x2774
+ obj_pal 0x08c0cdcc, 0x2775
+ obj_pal 0x08c0cdcc, 0x2776
+ obj_pal 0x08c0cdf4, 0x2777
+ obj_pal 0x08c0f14c, 0x2778
+ obj_pal 0x08c0f6f8, 0x2779
+ obj_pal 0x08c0f6f8, 0x277a
+ obj_pal 0x08c0fbbc, 0x277b
+ obj_pal 0x08c0fbbc, 0x277c
+ obj_pal 0x08c0ff90, 0x277d
+ obj_pal 0x08c0ff90, 0x277e
+ obj_pal 0x08c103e0, 0x277f
+ obj_pal 0x08c1072c, 0x2780
+ obj_pal 0x08c109c0, 0x2781
+ obj_pal 0x08c10adc, 0x2782
+ obj_pal 0x08c028ac, 0x2783
+ obj_pal 0x08c13134, 0x2784
+ obj_pal 0x08c13398, 0x2785
+ obj_pal 0x08c1354c, 0x2786
+ obj_pal 0x08c137f8, 0x2787
+ obj_pal 0x08c13914, 0x2788
+ obj_pal 0x08c13968, 0x2789
+ obj_pal 0x08c13a88, 0x278a
+ obj_pal 0x08c13a88, 0x278b
+ obj_pal 0x08c13e78, 0x278c
+ obj_pal 0x08c13f8c, 0x278d
+ obj_pal 0x08c1401c, 0x278e
+ obj_pal 0x08c141dc, 0x278f
+ obj_pal 0x08c1446c, 0x2790
+ obj_pal 0x08c1446c, 0x2791
+ obj_pal 0x08c148c0, 0x2792
+ obj_pal 0x08c148c0, 0x2793
+ obj_pal 0x08c14b58, 0x2794
+ obj_pal 0x08c14bf4, 0x2795
+ obj_pal 0x08c14bf4, 0x2796
+ obj_pal 0x08c1a478, 0x2797
+
+ .align 2
gUnknown_0852588C:: @ 852588C
- .incbin "baserom.gba", 0x52588c, 0x308
-
+ obj_pal 0x08c1a564, 0x2798
+ obj_pal 0x08c1a478, 0x2799
+ obj_pal 0x08c1a478, 0x279a
+ obj_pal 0x08c1a980, 0x279b
+ obj_pal 0x08c1ad0c, 0x279c
+ obj_pal 0x08c1ae34, 0x279d
+ obj_pal 0x08c1ae34, 0x279e
+ obj_pal 0x08c2cddc, 0x279f
+ obj_pal 0x08c1bcdc, 0x27a0
+ obj_pal 0x08c1a980, 0x27a1
+ obj_pal 0x08c028ac, 0x27a2
+ obj_pal 0x08c1b080, 0x27a3
+ obj_pal 0x08c1b25c, 0x27a4
+ obj_pal 0x08c1b25c, 0x27a5
+ obj_pal 0x08c1b3fc, 0x27a6
+ obj_pal 0x08c1b3fc, 0x27a7
+ obj_pal 0x08c03414, 0x27a8
+ obj_pal 0x08c1b57c, 0x27a9
+ obj_pal 0x08c1b640, 0x27aa
+ obj_pal 0x08c1b728, 0x27ab
+ obj_pal 0x08c1b960, 0x27ac
+ obj_pal 0x08c1b9ec, 0x27ad
+ obj_pal 0x08c1bacc, 0x27ae
+ obj_pal 0x08c1bb6c, 0x27af
+ obj_pal 0x08c1bc3c, 0x27b0
+ obj_pal 0x08c029a4, 0x27b1
+ obj_pal 0x08c1bec4, 0x27b2
+ obj_pal 0x08c1bf44, 0x27b3
+ obj_pal 0x08c1bf74, 0x27b4
+ obj_pal 0x08c1bf8c, 0x27b5
+ obj_pal 0x08c1c2b0, 0x27b6
+ obj_pal 0x08c1c2d0, 0x27b7
+ obj_pal 0x08c1c2f0, 0x27b8
+ obj_pal 0x08c1c310, 0x27b9
+ obj_pal 0x08c1c330, 0x27ba
+ obj_pal 0x08c1c39c, 0x27bb
+ obj_pal 0x08c1c3c4, 0x27bc
+ obj_pal 0x08c1c794, 0x27bd
+ obj_pal 0x08c1d69c, 0x27be
+ obj_pal 0x08c1d728, 0x27bf
+ obj_pal 0x08c1d8a8, 0x27c0
+ obj_pal 0x08c1d994, 0x27c1
+ obj_pal 0x08c1db14, 0x27c2
+ obj_pal 0x08c1db3c, 0x27c3
+ obj_pal 0x08c1db3c, 0x27c4
+ obj_pal 0x08c1db3c, 0x27c5
+ obj_pal 0x08c1e08c, 0x27c6
+ obj_pal 0x08c1e32c, 0x27c7
+ obj_pal 0x08c1e4a8, 0x27c8
+ obj_pal 0x08c1e8e4, 0x27c9
+ obj_pal 0x08c1f1a4, 0x27ca
+ obj_pal 0x08c1edb8, 0x27cb
+ obj_pal 0x08d967d4, 0x27cc
+ obj_pal 0x08c2021c, 0x27cd
+ obj_pal 0x08c1fee0, 0x27ce
+ obj_pal 0x08c20170, 0x27cf
+ obj_pal 0x08c204bc, 0x27d0
+ obj_pal 0x08c20640, 0x27d1
+ obj_pal 0x08c20f84, 0x27d2
+ obj_pal 0x08c21064, 0x27d3
+ obj_pal 0x08c20c34, 0x27d4
+ obj_pal 0x08c211f4, 0x27d5
+ obj_pal 0x08c2160c, 0x27d6
+ obj_pal 0x08c216fc, 0x27d7
+ obj_pal 0x08c21858, 0x27d8
+ obj_pal 0x08c21ee4, 0x27d9
+ obj_pal 0x08c22210, 0x27da
+ obj_pal 0x08c223e0, 0x27db
+ obj_pal 0x08c22080, 0x27dc
+ obj_pal 0x08c228d8, 0x27dd
+ obj_pal 0x08c22610, 0x27de
+ obj_pal 0x08c229c8, 0x27df
+ obj_pal 0x08c1c2d0, 0x27e0
+ obj_pal 0x08c230e4, 0x27e1
+ obj_pal 0x08c232a0, 0x27e2
+ obj_pal 0x08c2456c, 0x27e3
+ obj_pal 0x08c2456c, 0x27e4
+ obj_pal 0x08c2456c, 0x27e5
+ obj_pal 0x08c231f4, 0x27e6
+ obj_pal 0x08c249ac, 0x27e7
+ obj_pal 0x08c232c0, 0x27e8
+ obj_pal 0x08c2405c, 0x27e9
+ obj_pal 0x08c24c28, 0x27ea
+ obj_pal 0x08c23280, 0x27eb
+ obj_pal 0x08c24dd4, 0x27ec
+ obj_pal 0x08c24f28, 0x27ed
+ obj_pal 0x08c25498, 0x27ee
+ obj_pal 0x08c254c0, 0x27ef
+ obj_pal 0x08c25774, 0x27f0
+ obj_pal 0x08c278e8, 0x27f1
+ obj_pal 0x08c27ae4, 0x27f2
+ obj_pal 0x08c27ae4, 0x27f3
+ obj_pal 0x08c25afc, 0x27f4
+ obj_pal 0x08c27cc4, 0x27f5
+ obj_pal 0x08c25890, 0x27f6
+ obj_pal 0x08c2836c, 0x27f7
+ obj_pal 0x08c2836c, 0x27f8
+
+ .align 2
gUnknown_08525B94:: @ 8525B94
- .incbin "baserom.gba", 0x525b94, 0x120
-
+ obj_pal 0x08c285e8, 0x27f9
+ obj_pal 0x08c287d0, 0x27fa
+ obj_pal 0x08c288d0, 0x27fb
+ obj_pal 0x08c288ec, 0x27fc
+ obj_pal 0x08c28908, 0x27fd
+ obj_pal 0x08c2885c, 0x27fe
+ obj_pal 0x08c2cb84, 0x27ff
+ obj_pal 0x08c2ce94, 0x2800
+ obj_pal 0x08c2d40c, 0x2801
+ obj_pal 0x08c2d6ac, 0x2802
+ obj_pal 0x08c2d6f8, 0x2803
+ obj_pal 0x08c2e630, 0x2804
+ obj_pal 0x08c2dee0, 0x2805
+ obj_pal 0x08c2dee0, 0x2806
+ obj_pal 0x08c231f4, 0x2807
+ obj_pal 0x08c2ebbc, 0x2808
+ obj_pal 0x08c2ec24, 0x2809
+ obj_pal 0x08c2ec24, 0x280a
+ obj_pal 0x08c2ee9c, 0x280b
+ obj_pal 0x08c2efcc, 0x280c
+ obj_pal 0x08c2f1cc, 0x280d
+ obj_pal 0x08c2f32c, 0x280e
+ obj_pal 0x08c2f3cc, 0x280f
+ obj_pal 0x08c2f87c, 0x2810
+ obj_pal 0x08c2f9c0, 0x2811
+ obj_pal 0x08c2f4c8, 0x2812
+ obj_pal 0x08c1b27c, 0x2813
+ obj_pal 0x08d8dc9c, 0x2814
+ obj_pal 0x08d8dab8, 0x2815
+ obj_pal 0x08d8e914, 0x2816
+ obj_pal 0x08d93b84, 0x2817
+ obj_pal 0x08d8ea74, 0x2818
+ obj_pal 0x08d8ea8c, 0x2819
+ obj_pal 0x08d93bdc, 0x281a
+ obj_pal 0x08d93bf4, 0x281b
+ obj_pal 0x08d93c0c, 0x281c
+
+ .align 2
gUnknown_08525CB4:: @ 8525CB4
- .incbin "baserom.gba", 0x525cb4, 0xa0
-
+ obj_pal 0x08d8ef80, 0x281d
+ obj_pal 0x08dba35c, 0x281e
+ obj_pal 0x08dba4a0, 0x281f
+ obj_pal 0x08d8eee0, 0x2820
+ obj_pal 0x08d8eee0, 0x2821
+ obj_pal 0x08d8f3ec, 0x2822
+ obj_pal 0x08d8f3ec, 0x2823
+ obj_pal 0x08d8f3ec, 0x2824
+ obj_pal 0x08d92ec4, 0x2825
+ obj_pal 0x08d93e30, 0x2826
+ obj_pal 0x08d93e98, 0x2827
+ obj_pal 0x08d8fb7c, 0x2828
+ obj_pal 0x08d9403c, 0x2829
+ obj_pal 0x08dba14c, 0x282a
+ obj_pal 0x08d93458, 0x282b
+ obj_pal 0x08d949d4, 0x282c
+ obj_pal 0x08d94a90, 0x282d
+ obj_pal 0x08d96698, 0x282e
+ obj_pal 0x08d9104c, 0x282f
+ obj_pal 0x08c1bf5c, 0x2830
+
+ .align 2
gUnknown_08525D54:: @ 8525D54
- .incbin "baserom.gba", 0x525d54, 0x144
-
+ .4byte 0x08c1c844, 0x08c1ce3c, 0x08c1ce5c
+ .4byte 0x08c1c844, 0x08c1ce3c, 0x08c1ce5c
+ .4byte 0x08d90074, 0x08d90d3c, 0x08d90d58
+ .4byte 0x08c1e90c, 0x08c1eadc, 0x08c1eb00
+ .4byte 0x08c25bec, 0x08c25bc4, 0x08c26958
+ .4byte 0x08c25bec, 0x08c25bc4, 0x08c26e54
+ .4byte 0x08c25bec, 0x08c25bc4, 0x08c27324
+ .4byte 0x08c28924, 0x08c28acc, 0x08c28b1c
+ .4byte 0x08c28924, 0x08c28acc, 0x08c28cac
+ .4byte 0x08c29dbc, 0x08c29d7c, 0x08c29a84
+ .4byte 0x08c29dbc, 0x08c29d7c, 0x08c2a33c
+ .4byte 0x08c2bde4, 0x08c2c780, 0x08c2c7a8
+ .4byte 0x08c2b05c, 0x08c2bdc4, 0x08c2a808
+ .4byte 0x08c2b05c, 0x08c2bdc4, 0x08c2aad0
+ .4byte 0x08c2b05c, 0x08c2bdc4, 0x08c2adcc
+ .4byte 0x08d8dcb4, 0x08d8e624, 0x08d8e648
+ .4byte 0x08d92b28, 0x08d92b00, 0x08d92d88
+ .4byte 0x08d8f414, 0x08d8f570, 0x08d8f598
+ .4byte 0x08c28924, 0x08c28af4, 0x08c28b1c
+ .4byte 0x08c28924, 0x08c28af4, 0x08c28cac
+ .4byte 0x08c28e38, 0x08c29860, 0x08c29880
+ .4byte 0x08d9405c, 0x08d94350, 0x08d9436c
+ .4byte 0x08c29dbc, 0x08c29d9c, 0x08c29a84
+ .4byte 0x08c29dbc, 0x08c29d9c, 0x08c2a33c
+ .4byte 0x08c25bec, 0x08d91074, 0x08c26958
+ .4byte 0x08c25bec, 0x08d91074, 0x08c26e54
+ .4byte 0x08c25bec, 0x08d91074, 0x08c27324
+
+ .align 2
gUnknown_08525E98:: @ 8525E98
- .incbin "baserom.gba", 0x525e98, 0xc0
-
+ .4byte ma00_load_graphics
+ .4byte ma01_080728D0
+ .4byte ma02_instanciate_template
+ .4byte sub_80A3ECC
+ .4byte ma04_wait_countdown
+ .4byte sub_80A3F88
+ .4byte nullsub_6
+ .4byte nullsub_7
+ .4byte sub_80A3FC4
+ .4byte ma09_play_sound
+ .4byte sub_80A41D8
+ .4byte ma0B_0807324C
+ .4byte ma0C_set_BLDCNT_to_x3F40_and_BLDALPHA_to_argument
+ .4byte ma0D_reset_BLDCNT_and_BLDALPHA
+ .4byte ma0E_call
+ .4byte sub_80A4D00
+ .4byte ma10_080736AC
+ .4byte ma11_if_else
+ .4byte ma12_cond_if
+ .4byte ma13_goto
+ .4byte ma14_load_background
+ .4byte ma15_load_battle_screen_elements
+ .4byte ma16_wait_for_battle_screen_elements_s2
+ .4byte sub_80A5124
+ .4byte ma18_load_background_probably
+ .4byte ma19_08073BC8
+ .4byte ma1A_8073C00
+ .4byte ma1B_8073C2C
+ .4byte ma1C_8073ED0
+ .4byte ma1D_08073FB4
+ .4byte ma1E_set_BLDCNT
+ .4byte sub_80A57F8
+ .4byte ma20_wait_for_something
+ .4byte ma21_08074164
+ .4byte sub_80A4A18
+ .4byte ma23_8073484
+ .4byte sub_80A5944
+ .4byte sub_80A4E5C
+ .4byte sub_80A5508
+ .4byte sub_80A559C
+ .4byte sub_80A5984
+ .4byte sub_80A59DC
+ .4byte sub_80A5A0C
+ .4byte ma2B_make_side_invisible
+ .4byte ma2C_make_side_visible
+ .4byte sub_80A5AFC
+ .4byte sub_80A5BAC
+ .4byte ma2F_stop_music
+
+ .align 2
gUnknown_08525F58:: @ 8525F58
- .incbin "baserom.gba", 0x525f58, 0x20
+ .byte 0x48, 0x50, 0x00, 0x00, 0xb0, 0x28, 0x00, 0x00
+ .byte 0x30, 0x28, 0x00, 0x00, 0x70, 0x50, 0x00, 0x00
+ .byte 0x20, 0x50, 0x00, 0x00, 0xc8, 0x28, 0x00, 0x00
+ .byte 0x5a, 0x58, 0x00, 0x00, 0x98, 0x20, 0x00, 0x00
+ .align 2
gCastformFrontSpriteCoords:: @ 8525F78
- .incbin "baserom.gba", 0x525f78, 0x10
+ .byte 0x44, 0x11, 0x00, 0x00, 0x66, 0x09, 0x00, 0x00
+ .byte 0x46, 0x09, 0x00, 0x00, 0x86, 0x08, 0x00, 0x00
+ .align 2
gUnknown_08525F88:: @ 8525F88
- .incbin "baserom.gba", 0x525f88, 0x4
+ .byte 0x0d, 0x0e, 0x0d, 0x0d
+ .align 2
gUnknown_08525F8C:: @ 8525F8C
- .incbin "baserom.gba", 0x525f8c, 0x4
+ .byte 0x00, 0x00, 0x00, 0x00
+ .align 2
gUnknown_08525F90:: @ 8525F90
- .incbin "baserom.gba", 0x525f90, 0x30
+ spr_template 0xd755, 0xd755, gUnknown_0852497C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+ spr_template 0xd756, 0xd756, gUnknown_0852497C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+ .align 2
gUnknown_08525FC0:: @ 8525FC0
- .incbin "baserom.gba", 0x525fc0, 0x18f80
+ obj_tiles gMiscBlank_Gfx, 0x0800, 0xd755
+ obj_tiles gMiscBlank_Gfx, 0x0800, 0xd756
+ .align 2
+@ the mother of all baserom includes
+ .incbin "baserom.gba", 0x525fd0, 0x18f60
+
+ .align 2
+gUnknown_0853EF30:: @ 853EF30
+ .byte 0xf0, 0xf0, 0x0c, 0x80, 0xf0, 0x30, 0x0d, 0x84, 0x30, 0xf0, 0x0e, 0x86, 0x30, 0x30, 0x08, 0x88
+
+ .align 2
gUnknown_0853EF40:: @ 853EF40
- .incbin "baserom.gba", 0x53ef40, 0x8
+ .4byte 0x00000004, gUnknown_0853EF30
+ .align 2
gUnknown_0853EF48:: @ 853EF48
- .incbin "baserom.gba", 0x53ef48, 0x18
+ spr_template 0x271a, 0x271a, gUnknown_08524A3C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+ .align 2
gUnknown_0853EF60:: @ 853EF60
- .incbin "baserom.gba", 0x53ef60, 0xf8
+ spr_template 0x2798, 0x2798, gUnknown_08524904, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80A9E44
+
diff --git a/data/battle_message.s b/data/battle_message.s
deleted file mode 100644
index 4c72557d8..000000000
--- a/data/battle_message.s
+++ /dev/null
@@ -1,2083 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-gText_Buffer36:: @ 85C9B78
- .string "{STRING 36}$"
-
-gText_PkmnGainedEXP:: @ 85C9B7B
- .string "{STRING 0} gained{PLAYER}\n{STRING 52} EXP. Points!\p$"
-
-gText_EmptyString4:: @ 85C9B98
- .string "$"
-
-gText_ABoosted:: @ 85C9B99
- .string " a boosted$"
-
-gText_PkmnGrewToLv:: @ 85C9BA4
- .string "{STRING 0} grew to\nLV. {PLAYER}!{UNKNOWN_A}\p$"
-
-gText_PkmnLearnedMove:: @ 85C9BBA
- .string "{STRING 0} learned\n{PLAYER}!{UNKNOWN_A}\p$"
-
-gText_TryToLearnMove1:: @ 85C9BCC
- .string "{STRING 0} is trying to\nlearn {PLAYER}.\p$"
-
-gText_TryToLearnMove2:: @ 85C9BE7
- .string "But, {STRING 0} can’t learn\nmore than four moves.\p$"
-
-gText_TryToLearnMove3:: @ 85C9C12
- .string "Delete a move to make\nroom for {PLAYER}?$"
-
-gText_PkmnForgotMove:: @ 85C9C35
- .string "{STRING 0} forgot\n{PLAYER}.\p$"
-
-gText_StopLearningMove:: @ 85C9C44
- .string "{PAUSE 32}Stop learning\n{PLAYER}?$"
-
-gText_DidNotLearnMove:: @ 85C9C59
- .string "{STRING 0} did not learn\n{PLAYER}.\p$"
-
-gText_UseNextPkmn:: @ 85C9C6F
- .string "Use next POKéMON?$"
-
-gText_AttackMissed:: @ 85C9C81
- .string "{STRING 15}’s\nattack missed!$"
-
-gText_PkmnProtectedItself:: @ 85C9C95
- .string "{STRING 16}\nprotected itself!$"
-
-gText_AvoidedDamage:: @ 85C9CAA
- .string "{STRING 16} avoided\ndamage with {STRING 25}!$"
-
-gText_PkmnMakesGroundMiss:: @ 85C9CC5
- .string "{STRING 16} makes GROUND\nmoves miss with {STRING 25}!$"
-
-gText_PkmnAvoidedAttack:: @ 85C9CE9
- .string "{STRING 16} avoided\nthe attack!$"
-
-gText_ItDoesntAffect:: @ 85C9D00
- .string "It doesn’t affect\n{STRING 16}…$"
-
-gText_PkmnFainted:: @ 85C9D16
- .string "{STRING 15}\nfainted!\p$"
-
-gText_PkmnFainted2:: @ 85C9D23
- .string "{STRING 16}\nfainted!\p$"
-
-gText_PlayerGotMoney:: @ 85C9D30
- .string "{STRING 35} got ¥{STRING 0}\nfor winning!\p$"
-
-gText_PlayerWhiteout:: @ 85C9D49
- .string "{STRING 35} is out of\nusable POKéMON!\p$"
-
-gText_PlayerWhiteout2:: @ 85C9D67
- .string "{STRING 35} whited out!{PAUSE_UNTIL_PRESS}$"
-
-gText_PreventsEscape:: @ 85C9D78
- .string "{STRING 19} prevents\nescape with {STRING 26}!\p$"
-
-gText_CantEscape2:: @ 85C9D95
- .string "Can’t escape!\p$"
-
-gText_PkmnCantEscape2:: @ 85C9DA4
- .string "{STRING 15} can’t escape!$"
-
-gText_HitXTimes:: @ 85C9DB5
- .string "Hit {STRING 0} time(s)!$"
-
-gText_PkmnFellAsleep:: @ 85C9DC5
- .string "{STRING 17}\nfell asleep!$"
-
-gText_PkmnMadeSleep:: @ 85C9DD5
- .string "{STRING 19}’s {STRING 26}\nmade {STRING 17} sleep!$"
-
-gText_PkmnAlreadyAsleep:: @ 85C9DEC
- .string "{STRING 16} is\nalready asleep!$"
-
-gText_PkmnAlreadyAsleep2:: @ 85C9E02
- .string "{STRING 15} is\nalready asleep!$"
-
-gText_PkmnWasntAffected:: @ 85C9E18
- .string "{STRING 16}\nwasn’t affected!$"
-
-gText_PkmnWasPoisoned:: @ 85C9E2C
- .string "{STRING 17}\nwas poisoned!$"
-
-gText_PkmnPoisonedBy:: @ 85C9E3D
- .string "{STRING 19}’s {STRING 26}\npoisoned {STRING 17}!$"
-
-gText_PkmnHurtByPoison:: @ 85C9E52
- .string "{STRING 15} is hurt\nby poison!$"
-
-gText_PkmnAlreadyPoisoned:: @ 85C9E68
- .string "{STRING 16} is already\npoisoned.$"
-
-gText_PkmnBadlyPoisoned:: @ 85C9E80
- .string "{STRING 17} is badly\npoisoned!$"
-
-gText_PkmnEnergyDrained:: @ 85C9E96
- .string "{STRING 16} had its\nenergy drained!$"
-
-gText_PkmnWasBurned:: @ 85C9EB1
- .string "{STRING 17} was burned!$"
-
-gText_PkmnBurnedBy:: @ 85C9EC0
- .string "{STRING 19}’s {STRING 26}\nburned {STRING 17}!$"
-
-gText_PkmnHurtByBurn:: @ 85C9ED3
- .string "{STRING 15} is hurt\nby its burn!$"
-
-gText_PkmnAlreadyHasBurn:: @ 85C9EEB
- .string "{STRING 16} already\nhas a burn.$"
-
-gText_PkmnWasFrozen:: @ 85C9F02
- .string "{STRING 17} was\nfrozen solid!$"
-
-gText_PkmnFrozenBy:: @ 85C9F17
- .string "{STRING 19}’s {STRING 26}\nfroze {STRING 17} solid!$"
-
-gText_PkmnIsFrozen:: @ 85C9F2F
- .string "{STRING 15} is\nfrozen solid!$"
-
-gText_PkmnWasDefrosted:: @ 85C9F43
- .string "{STRING 16} was\ndefrosted!$"
-
-gText_PkmnWasDefrosted2:: @ 85C9F55
- .string "{STRING 15} was\ndefrosted!$"
-
-gText_PkmnWasDefrostedBy:: @ 85C9F67
- .string "{STRING 15} was\ndefrosted by {STRING 20}!$"
-
-gText_PkmnWasParalyzed:: @ 85C9F7F
- .string "{STRING 17} is paralyzed!\nIt may be unable to move!$"
-
-gText_PkmnWasParalyzedBy:: @ 85C9FAA
- .string "{STRING 19}’s {STRING 26}\nparalyzed {STRING 17}!\lIt may be unable to move!$"
-
-gText_PkmnIsParalyzed:: @ 85C9FDA
- .string "{STRING 15} is paralyzed!\nIt can’t move!$"
-
-gText_PkmnIsAlreadyParalyzed:: @ 85C9FFA
- .string "{STRING 16} is\nalready paralyzed!$"
-
-gText_PkmnHealedParalysis:: @ 85CA013
- .string "{STRING 16} was\nhealed of paralysis!$"
-
-gText_PkmnDreamEaten:: @ 85CA02F
- .string "{STRING 16}’s\ndream was eaten!$"
-
-gText_StatsWontIncrease:: @ 85CA045
- .string "{STRING 15}’s {STRING 0}\nwon’t go higher!$"
-
-gText_StatsWontDecrease:: @ 85CA05E
- .string "{STRING 16}’s {STRING 0}\nwon’t go lower!$"
-
-gText_TeamStoppedWorking:: @ 85CA076
- .string "Your team’s {STRING 0}\nstopped working!$"
-
-gText_FoeStoppedWorking:: @ 85CA096
- .string "The foe’s {STRING 0}\nstopped working!$"
-
-gText_PkmnIsConfused:: @ 85CA0B4
- .string "{STRING 15} is\nconfused!$"
-
-gText_PkmnHealedConfusion:: @ 85CA0C4
- .string "{STRING 15} snapped\nout of confusion!$"
-
-gText_PkmnWasConfused:: @ 85CA0E1
- .string "{STRING 17} became\nconfused!$"
-
-gText_PkmnAlreadyConfused:: @ 85CA0F5
- .string "{STRING 16} is\nalready confused!$"
-
-gText_PkmnFellInLove:: @ 85CA10D
- .string "{STRING 16}\nfell in love!$"
-
-gText_PkmnInLove:: @ 85CA11E
- .string "{STRING 15} is in love\nwith {STRING 19}!$"
-
-gText_PkmnImmobilizedByLove:: @ 85CA135
- .string "{STRING 15} is\nimmobilized by love!$"
-
-gText_PkmnBlownAway:: @ 85CA150
- .string "{STRING 16} was\nblown away!$"
-
-gText_PkmnChangedType:: @ 85CA163
- .string "{STRING 15} transformed\ninto the {STRING 0} type!$"
-
-gText_PkmnFlinched:: @ 85CA184
- .string "{STRING 15} flinched!$"
-
-gText_PkmnRegainedHealth:: @ 85CA191
- .string "{STRING 16} regained\nhealth!$"
-
-gText_PkmnHPFull:: @ 85CA1A5
- .string "{STRING 16}’s\nHP is full!$"
-
-gText_PkmnRaisedSpDef:: @ 85CA1B6
- .string "{STRING 42}’s {STRING 20}\nraised SP. DEF!$"
-
-gText_PkmnRaisedSpDefALittle:: @ 85CA1CE
- .string "{STRING 42}’s {STRING 20}\nraised SP. DEF a little!$"
-
-gText_PkmnRaisedDef:: @ 85CA1EF
- .string "{STRING 42}’s {STRING 20}\nraised DEFENSE!$"
-
-gText_PkmnRaisedDefALittle:: @ 85CA207
- .string "{STRING 42}’s {STRING 20}\nraised DEFENSE a little!$"
-
-gText_PkmnCoveredByVeil:: @ 85CA228
- .string "{STRING 42}’s party is covered\nby a veil!$"
-
-gText_PkmnUsedSafeguard:: @ 85CA249
- .string "{STRING 16}’s party is protected\nby SAFEGUARD!$"
-
-gText_PkmnSafeguardExpired:: @ 85CA26F
- .string "{STRING 44}’s party is no longer\nprotected by SAFEGUARD!$"
-
-gText_PkmnWentToSleep:: @ 85CA29F
- .string "{STRING 15} went\nto sleep!$"
-
-gText_PkmnSleptHealthy:: @ 85CA2B1
- .string "{STRING 15} slept and\nbecame healthy!$"
-
-gText_PkmnWhippedWhirlwind:: @ 85CA2CE
- .string "{STRING 15} whipped\nup a whirlwind!$"
-
-gText_PkmnTookSunlight:: @ 85CA2E9
- .string "{STRING 15} took\nin sunlight!$"
-
-gText_PkmnLoweredHead:: @ 85CA2FE
- .string "{STRING 15} lowered\nits head!$"
-
-gText_PkmnIsGlowing:: @ 85CA313
- .string "{STRING 15} is glowing!$"
-
-gText_PkmnFlewHigh:: @ 85CA322
- .string "{STRING 15} flew\nup high!$"
-
-gText_PkmnDugHole:: @ 85CA333
- .string "{STRING 15} dug a hole!$"
-
-gText_PkmnHidUnderwater:: @ 85CA342
- .string "{STRING 15} hid\nunderwater!$"
-
-gText_PkmnSprangUp:: @ 85CA355
- .string "{STRING 15} sprang up!$"
-
-gText_PkmnSqueezedByBind:: @ 85CA363
- .string "{STRING 16} was squeezed by\n{STRING 15}’s BIND!$"
-
-gText_PkmnTrappedInVortex:: @ 85CA381
- .string "{STRING 16} was trapped\nin the vortex!$"
-
-gText_PkmnTrappedBySandTomb:: @ 85CA39F
- .string "{STRING 16} was trapped\nby SAND TOMB!$"
-
-gText_PkmnWrappedBy:: @ 85CA3BC
- .string "{STRING 16} was WRAPPED by\n{STRING 15}!$"
-
-gText_PkmnClamped:: @ 85CA3D2
- .string "{STRING 15} CLAMPED\n{STRING 16}!$"
-
-gText_PkmnHurtBy:: @ 85CA3E1
- .string "{STRING 15} is hurt\nby {STRING 0}!$"
-
-gText_PkmnFreedFrom:: @ 85CA3F3
- .string "{STRING 15} was freed\nfrom {STRING 0}!$"
-
-gText_PkmnCrashed:: @ 85CA409
- .string "{STRING 15} kept going\nand crashed!$"
-
-gText_PkmnShroudedInMist:: @ 85CA424
- .string "{STRING 42} became\nshrouded in MIST!$"
-
-gText_PkmnProtectedByMist:: @ 85CA440
- .string "{STRING 19} is protected\nby MIST!$"
-
-gText_PkmnGettingPumped:: @ 85CA459
- .string "{STRING 15} is getting\npumped!$"
-
-gText_PkmnHitWithRecoil:: @ 85CA46F
- .string "{STRING 15} is hit\nwith recoil!$"
-
-gText_PkmnProtectedItself2:: @ 85CA486
- .string "{STRING 15} protected\nitself!$"
-
-gText_PkmnBuffetedBySandstorm:: @ 85CA49B
- .string "{STRING 15} is buffeted\nby the sandstorm!$"
-
-gText_PkmnPeltedByHail:: @ 85CA4BC
- .string "{STRING 15} is pelted\nby HAIL!$"
-
-gText_PkmnsXWoreOff:: @ 85CA4D2
- .string "{STRING 40}’s {STRING 0}\nwore off!$"
-
-gText_PkmnSeeded:: @ 85CA4E4
- .string "{STRING 16} was seeded!$"
-
-gText_PkmnEvadedAttack:: @ 85CA4F3
- .string "{STRING 16} evaded\nthe attack!$"
-
-gText_PkmnSappedByLeechSeed:: @ 85CA509
- .string "{STRING 15}’s health is\nsapped by LEECH SEED!$"
-
-gText_PkmnFastAsleep:: @ 85CA52E
- .string "{STRING 15} is fast\nasleep.$"
-
-gText_PkmnWokeUp:: @ 85CA541
- .string "{STRING 15} woke up!$"
-
-gText_PkmnUproarKeptAwake:: @ 85CA54D
- .string "But {STRING 19}’s UPROAR\nkept it awake!$"
-
-gText_PkmnWokeUpInUproar:: @ 85CA56C
- .string "{STRING 15} woke up\nin the UPROAR!$"
-
-gText_PkmnCausedUproar:: @ 85CA586
- .string "{STRING 15} caused\nan UPROAR!$"
-
-gText_PkmnMakingUproar:: @ 85CA59B
- .string "{STRING 15} is making\nan UPROAR!$"
-
-gText_PkmnCalmedDown:: @ 85CA5B3
- .string "{STRING 15} calmed down.$"
-
-gText_PkmnCantSleepInUproar:: @ 85CA5C3
- .string "But {STRING 16} can’t\nsleep in an UPROAR!$"
-
-gText_PkmnStockpiled:: @ 85CA5E4
- .string "{STRING 15} STOCKPILED\n{STRING 0}!$"
-
-gText_PkmnCantStockpile:: @ 85CA5F6
- .string "{STRING 15} can’t\nSTOCKPILE any more!$"
-
-gText_PkmnCantSleepInUproar2:: @ 85CA613
- .string "But {STRING 16} can’t\nsleep in an UPROAR!$"
-
-gText_UproarKeptPkmnAwake:: @ 85CA634
- .string "But the UPROAR kept\n{STRING 16} awake!$"
-
-gText_PkmnStayedAwakeUsing:: @ 85CA652
- .string "{STRING 16} stayed awake\nusing its {STRING 25}!$"
-
-gText_PkmnStoringEnergy:: @ 85CA670
- .string "{STRING 15} is storing\nenergy!$"
-
-gText_PkmnUnleashedEnergy:: @ 85CA686
- .string "{STRING 15} unleashed\nenergy!$"
-
-gText_PkmnFatigueConfusion:: @ 85CA69B
- .string "{STRING 15} became\nconfused due to fatigue!$"
-
-gText_PkmnPickedUpItem:: @ 85CA6BE
- .string "{STRING 35} picked up\n¥{STRING 0}!\p$"
-
-gText_PkmnUnaffected:: @ 85CA6D1
- .string "{STRING 16} is\nunaffected!$"
-
-gText_PkmnTransformedInto:: @ 85CA6E3
- .string "{STRING 15} transformed\ninto {STRING 0}!$"
-
-gText_PkmnMadeSubstitute:: @ 85CA6FB
- .string "{STRING 15} made\na SUBSTITUTE!$"
-
-gText_PkmnHasSubstitute:: @ 85CA711
- .string "{STRING 15} already\nhas a SUBSTITUTE!$"
-
-gText_SubstituteDamaged:: @ 85CA72E
- .string "The SUBSTITUTE took damage\nfor {STRING 16}!\p$"
-
-gText_PkmnSubstituteFaded:: @ 85CA752
- .string "{STRING 16}’s\nSUBSTITUTE faded!\p$"
-
-gText_PkmnMustRecharge:: @ 85CA76A
- .string "{STRING 15} must\nrecharge!$"
-
-gText_PkmnRageBuilding:: @ 85CA76C
- .string "{STRING 16}’s RAGE\nis building!$"
-
-gText_PkmnMoveWasDisabled:: @ 85CA793
- .string "{STRING 16}’s {STRING 0}\nwas disabled!$"
-
-gText_PkmnMoveDisabledNoMore:: @ 85CA7A9
- .string "{STRING 15} is disabled\nno more!$"
-
-gText_PkmnGotEncore:: @ 85CA7C1
- .string "{STRING 16} got\nan ENCORE!$"
-
-gText_PkmnEncoreEnded:: @ 85CA7D3
- .string "{STRING 15}’s ENCORE\nended!$"
-
-gText_PkmnTookAim:: @ 85CA7E6
- .string "{STRING 15} took aim\nat {STRING 16}!$"
-
-gText_PkmnSketchedMove:: @ 85CA7F9
- .string "{STRING 15} SKETCHED\n{STRING 0}!$"
-
-gText_PkmnTryingToTakeFoe:: @ 85CA809
- .string "{STRING 15} is trying\nto take its foe with it!$"
-
-gText_PkmnTookFoe:: @ 85CA82F
- .string "{STRING 16} took\n{STRING 15} with it!$"
-
-gText_PkmnReducedPP:: @ 85CA843
- .string "Reduced {STRING 16}’s\n{STRING 0} by {PLAYER}!$"
-
-gText_PkmnStoleItem:: @ 85CA85A
- .string "{STRING 15} stole\n{STRING 16}’s {STRING 22}!$"
-
-gText_PkmnCantEscape:: @ 85CA86C
- .string "{STRING 16} can’t\nescape now!$"
-
-gText_PkmnFellIntoNightmare:: @ 85CA881
- .string "{STRING 16} fell into\na NIGHTMARE!$"
-
-gText_PkmnLockedInNightmare:: @ 85CA89B
- .string "{STRING 15} is locked\nin a NIGHTMARE!$"
-
-gText_PkmnLaidCurse:: @ 85CA8B8
- .string "{STRING 15} cut its own HP and\nlaid a CURSE on {STRING 16}!$"
-
-gText_PkmnAfflictedByCurse:: @ 85CA8E2
- .string "{STRING 15} is afflicted\nby the CURSE!$"
-
-gText_SpikesScattered:: @ 85CA900
- .string "SPIKES were scattered all around\nthe opponent’s side!$"
-
-gText_PkmnHurtBySpikes:: @ 85CA936
- .string "{STRING 19} is hurt\nby SPIKES!$"
-
-gText_PkmnIdentified:: @ 85CA94C
- .string "{STRING 15} identified\n{STRING 16}!$"
-
-gText_PkmnPerishCountFell:: @ 85CA95E
- .string "{STRING 15}’s PERISH count\nfell to {STRING 0}!$"
-
-gText_PkmnBracedItself:: @ 85CA97C
- .string "{STRING 15} braced\nitself!$"
-
-gText_PkmnEnduredHit:: @ 85CA98E
- .string "{STRING 16} ENDURED\nthe hit!$"
-
-gText_MagnitudeStrength:: @ 85CA9A2
- .string "MAGNITUDE {STRING 0}!$"
-
-gText_PkmnCutHPMaxedAttack:: @ 85CA9B0
- .string "{STRING 15} cut its own HP\nand maximized ATTACK!$"
-
-gText_PkmnCopiedStatChanges:: @ 85CA9D8
- .string "{STRING 15} copied\n{STRING 16}’s stat changes!$"
-
-gText_PkmnGotFree:: @ 85CA9F5
- .string "{STRING 15} got free of\n{STRING 16}’s {STRING 0}!$"
-
-gText_PkmnShedLeechSeed:: @ 85CAA0D
- .string "{STRING 15} shed\nLEECH SEED!$"
-
-gText_PkmnBlewAwaySpikes:: @ 85CAA21
- .string "{STRING 15} blew away\nSPIKES!$"
-
-gText_PkmnFledFromBattle:: @ 85CAA36
- .string "{STRING 15} fled from\nbattle!$"
-
-gText_PkmnForesawAttack:: @ 85CAA4B
- .string "{STRING 15} foresaw\nan attack!$"
-
-gText_PkmnTookAttack:: @ 85CAA61
- .string "{STRING 16} took the\n{STRING 0} attack!$"
-
-gText_PkmnChoseXAsDestiny:: @ 85CAA78
- .string "{STRING 15} chose\n{STRING 20} as its destiny!$"
-
-gText_PkmnAttack:: @ 85CAA94
- .string "{STRING 0}’s attack!$"
-
-gText_PkmnCenterAttention:: @ 85CAAA1
- .string "{STRING 15} became the\ncenter of attention!$"
-
-gText_PkmnChargingPower:: @ 85CAAC4
- .string "{STRING 15} began\ncharging power!$"
-
-gText_NaturePowerTurnedInto:: @ 85CAADD
- .string "NATURE POWER turned into\n{STRING 20}!$"
-
-gText_PkmnStatusNormal:: @ 85CAAFA
- .string "{STRING 15}’s status\nreturned to normal!$"
-
-gText_PkmnSubjectedToTorment:: @ 85CAB1A
- .string "{STRING 16} was subjected\nto TORMENT!$"
-
-gText_PkmnTighteningFocus:: @ 85CAB37
- .string "{STRING 15} is tightening\nits focus!$"
-
-gText_PkmnFellForTaunt:: @ 85CAB53
- .string "{STRING 16} fell for\nthe TAUNT!$"
-
-gText_PkmnReadyToHelp:: @ 85CAB6A
- .string "{STRING 15} is ready to\nhelp {STRING 16}!$"
-
-gText_PkmnSwitchedItems:: @ 85CAB82
- .string "{STRING 15} switched\nitems with its opponent!$"
-
-gText_PkmnObtainedX:: @ 85CABA7
- .string "{STRING 15} obtained\n{STRING 0}.$"
-
-gText_PkmnObtainedX2:: @ 85CABB7
- .string "{STRING 16} obtained\n{PLAYER}.$"
-
-gText_PkmnObtainedXYObtainedZ:: @ 85CABC7
- .string "{STRING 15} obtained\n{STRING 0}.\p{STRING 16} obtained\n{PLAYER}.$"
-
-gText_PkmnCopiedFoe:: @ 85CAB82
- .string "{STRING 15} copied\n{STRING 16}’s {STRING 25}!$"
-
-gText_PkmnMadeWish:: @ 85CABFA
- .string "{STRING 15} made a WISH!$"
-
-gText_PkmnWishCameTrue:: @ 85CAC0A
- .string "{STRING 0}’s WISH\ncame true!$"
-
-gText_PkmnPlantedRoots:: @ 85CAC1F
- .string "{STRING 15} planted its roots!$"
-
-gText_PkmnAbsorbedNutrients:: @ 85CAC35
- .string "{STRING 15} absorbed\nnutrients with its roots!$"
-
-gText_PkmnAnchoredItself:: @ 85CAC5B
- .string "{STRING 16} anchored\nitself with its roots!$"
-
-gText_PkmnWasMadeDrowsy:: @ 85CAC7E
- .string "{STRING 15} made\n{STRING 16} drowsy!$"
-
-gText_PkmnKnockedOff:: @ 85CAC91
- .string "{STRING 15} knocked off\n{STRING 16}’s {STRING 22}!$"
-
-gText_PkmnSwappedAbilities:: @ 85CACA9
- .string "{STRING 15} swapped abilities\nwith its opponent!$"
-
-gText_PkmnSealedOpponentMove:: @ 85CACD1
- .string "{STRING 15} sealed the\nopponent’s move(s)!$"
-
-gText_PkmnWantsGrudge:: @ 85CACF3
- .string "{STRING 15} wants the\nopponent to bear a GRUDGE!$"
-
-gText_PkmnLostPPGrudge:: @ 85CAD1B
- .string "{STRING 15}’s {STRING 0} lost\nall its PP due to the GRUDGE!$"
-
-gText_PkmnShroudedItself:: @ 85CAD46
- .string "{STRING 15} shrouded\nitself in {STRING 20}!$"
-
-gText_PkmnMoveBounced:: @ 85CAD60
- .string "{STRING 15}’s {STRING 20}\nwas bounced back by MAGIC COAT!$"
-
-gText_PkmnWaitsForTarget:: @ 85CAD88
- .string "{STRING 15} waits for a target\nto make a move!$"
-
-gText_PkmnSnatchedMove:: @ 85CADAE
- .string "{STRING 16} SNATCHED\n{STRING 19}’s move!$"
-
-gText_ElectricityWeakened:: @ 85CADC5
- .string "Electricity’s power was\nweakened!$"
-
-gText_FireWeakened:: @ 85CADE7
- .string "Fire’s power was\nweakened!$"
-
-gText_XFoundOneY:: @ 85CAE02
- .string "{STRING 15} found\none {STRING 22}!$"
-
-gText_SoothingAroma:: @ 85CAE13
- .string "A soothing aroma wafted\nthrough the area!$"
-
-gText_ItemsCantBeUsedNow:: @ 85CAE3D
- .string "Items can’t be used now.{PAUSE 64}$"
-
-gText_ForXCommaYZ:: @ 85CAE59
- .string "For {STRING 19},\n{STRING 22} {STRING 0}$"
-
-gText_PkmnUsedXToGetPumped:: @ 85CAE67
- .string "{STRING 19} used\n{STRING 22} to get pumped!$"
-
-gText_PkmnLostFocus:: @ 85CAE81
- .string "{STRING 15} lost its\nfocus and couldn’t move!$"
-
-gText_PkmnWasDraggedOut:: @ 85CAEA6
- .string "{STRING 16} was\ndragged out!\p$"
-
-gText_TheWallShattered:: @ 85CAEBB
- .string "The wall shattered!$"
-
-gText_ButNoEffect:: @ 85CAECF
- .string "But it had no effect!$"
-
-gText_PkmnHasNoMovesLeft:: @ 85CAEE5
- .string "{STRING 18} has no\nmoves left!\p$"
-
-gText_PkmnMoveIsDisabled:: @ 85CAEFC
- .string "{STRING 18}’s {STRING 20}\nis disabled!\p$"
-
-gText_PkmnCantUseMoveTorment:: @ 85CAF12
- .string "{STRING 18} can’t use the same\nmove in a row due to the TORMENT!\p$"
-
-gText_PkmnCantUseMoveTaunt:: @ 85CAF4B
- .string "{STRING 18} can’t use\n{STRING 20} after the TAUNT!\p$"
-
-gText_PkmnCantUseMoveSealed:: @ 85CAF6D
- .string "{STRING 18} can’t use the\nsealed {STRING 20}!\p$"
-
-gText_PkmnMadeItRain:: @ 85CAF8A
- .string "{STRING 19}’s {STRING 26}\nmade it rain!$"
-
-gText_PkmnRaisedSpeed:: @ 85CAFA0
- .string "{STRING 19}’s {STRING 26}\nraised its SPEED!$"
-
-gText_PkmnProtectedBy:: @ 85CAFBA
- .string "{STRING 16} was protected\nby {STRING 25}!$"
-
-gText_PkmnPreventsUsage:: @ 85CAFD2
- .string "{STRING 16}’s {STRING 25}\nprevents {STRING 15}\lfrom using {STRING 20}!$"
-
-gText_PkmnRestoredHPUsing:: @ 85CAFF5
- .string "{STRING 16} restored HP\nusing its {STRING 25}!$"
-
-gText_PkmnsXMadeYUseless:: @ 85CB012
- .string "{STRING 16}’s {STRING 25}\nmade {STRING 20} useless!$"
-
-gText_PkmnChangedTypeWith:: @ 85CB02B
- .string "{STRING 16}’s {STRING 25}\nmade it the {STRING 0} type!$"
-
-gText_PkmnPreventsParalysisWith:: @ 85CB048
- .string "{STRING 17}’s {STRING 25}\nprevents paralysis!$"
-
-gText_PkmnPreventsRomanceWith:: @ 85CB064
- .string "{STRING 16}’s {STRING 25}\nprevents romance!$"
-
-gText_PkmnPreventsPoisoningWith:: @ 85CB07E
- .string "{STRING 17}’s {STRING 25}\nprevents poisoning!$"
-
-gText_PkmnPreventsConfusionWith:: @ 85CB09A
- .string "{STRING 16}’s {STRING 25}\nprevents confusion!$"
-
-gText_PkmnRaisedFirePowerWith:: @ 85CB0B6
- .string "{STRING 16}’s {STRING 25}\nraised its FIRE power!$"
-
-gText_PkmnAnchorsItselfWith:: @ 85CB0D5
- .string "{STRING 16} anchors\nitself with {STRING 25}!$"
-
-gText_PkmnCutsAttackWith:: @ 85CB0F0
- .string "{STRING 19}’s {STRING 26}\ncuts {STRING 16}’s ATTACK!$"
-
-gText_PkmnPreventsStatLossWith:: @ 85CB10A
- .string "{STRING 19}’s {STRING 26}\nprevents stat loss!$"
-
-gText_PkmnHurtsWith:: @ 85CB126
- .string "{STRING 16}’s {STRING 25}\nhurt {STRING 15}!$"
-
-gText_PkmnTraced:: @ 85CB137
- .string "{STRING 19} TRACED\n{STRING 0}’s {PLAYER}!$"
-
-gText_PkmnsXPreventsBurns:: @ 85CB14A
- .string "{STRING 17}’s {STRING 27}\nprevents burns!$"
-
-gText_PkmnsXBlocksY:: @ 85CB162
- .string "{STRING 16}’s {STRING 25}\nblocks {STRING 20}!$"
-
-gText_PkmnsXBlocksY2:: @ 85CB175
- .string "{STRING 19}’s {STRING 26}\nblocks {STRING 20}!$"
-
-gText_PkmnsXRestoredHPALittle2:: @ 85CB188
- .string "{STRING 15}’s {STRING 24}\nrestored its HP a little!$"
-
-gText_PkmnsXWhippedUpSandstorm:: @ 85CB1AA
- .string "{STRING 19}’s {STRING 26}\nwhipped up a sandstorm!$"
-
-gText_PkmnsXIntensifiedSun:: @ 85CB1CA
- .string "{STRING 19}’s {STRING 26}\nintensified the sun’s rays!$"
-
-gText_PkmnsXPreventsYLoss:: @ 85CB1EE
- .string "{STRING 19}’s {STRING 26}\nprevents {STRING 0} loss!$"
-
-gText_PkmnsXInfatuatedY:: @ 85CB208
- .string "{STRING 16}’s {STRING 25}\ninfatuated {STRING 15}!$"
-
-gText_PkmnsXMadeYIneffective:: @ 85CB21F
- .string "{STRING 16}’s {STRING 25}\nmade {STRING 20} ineffective!$"
-
-gText_PkmnsXCuredYProblem:: @ 85CB23C
- .string "{STRING 19}’s {STRING 26}\ncured its {STRING 0} problem!$"
-
-gText_ItSuckedLiquidOoze:: @ 85CB25A
- .string "It sucked up the\nLIQUID OOZE!$"
-
-gText_PkmnTransformed:: @ 85CB278
- .string "{STRING 19} transformed!$"
-
-gText_PkmnsXTookAttack:: @ 85CB288
- .string "{STRING 16}’s {STRING 25}\ntook the attack!$"
-
-gText_PkmnsXPreventsSwitching:: @ 85CB2A1
- .string "{STRING 0}’s {STRING 23}\nprevents switching!\p$"
-
-gText_PreventedFromWorking:: @ 85CB2BE
- .string "{STRING 16}’s {STRING 25}\nprevented {STRING 19}’s\l{STRING 0} from working!$"
-
-gText_PkmnsXMadeItIneffective:: @ 85CB2E6
- .string "{STRING 19}’s {STRING 26}\nmade it ineffective!$"
-
-gText_PkmnsXPreventsFlinching:: @ 85CB303
- .string "{STRING 17}’s {STRING 27}\nprevents flinching!$"
-
-gText_PkmnsXPreventsYsZ:: @ 85CB31F
- .string "{STRING 15}’s {STRING 24}\nprevents {STRING 16}’s\l{STRING 25} from working!$"
-
-gText_PkmnsXCuredItsYProblem:: @ 85CB346
- .string "{STRING 19}’s {STRING 26}\ncured its {STRING 0} problem!$"
-
-gText_PkmnsXHadNoEffectOnY:: @ 85CB364
- .string "{STRING 19}’s {STRING 26}\nhad no effect on {STRING 17}!$"
-
-gText_StatSharply:: @ 85CB381
- .string "sharply $"
-
-gText_StatRose:: @ 85CB38A
- .string "rose!$"
-
-gText_StatHarshly:: @ 85CB390
- .string "harshly $"
-
-gText_StatFell:: @ 85CB399
- .string "fell!$"
-
-gText_PkmnsStatChanged:: @ 85CB39F
- .string "{STRING 15}’s {STRING 0}\n{PLAYER}$"
-
-gText_PkmnsStatChanged2:: @ 85CB3AA
- .string "{STRING 16}’s {STRING 0}\n{PLAYER}$"
-
-gText_UsingXTheYOfZN:: @ 85CB3B5
- .string "Using {STRING 22}, the {STRING 0}\nof {STRING 19} {PLAYER}$"
-
-gText_PkmnsStatChanged3:: @ 85CB3CF
- .string "{STRING 15}’s {STRING 0}\n{PLAYER}$"
-
-gText_PkmnsStatChanged4:: @ 85CB3DA
- .string "{STRING 16}’s {STRING 0}\n{PLAYER}$"
-
-gText_StatsWontIncrease2:: @ 85CB3E5
- .string "{STRING 15}’s stats won’t\ngo any higher!$"
-
-gText_StatsWontDecrease2:: @ 85CB405
- .string "{STRING 16}’s stats won’t\ngo any lower!$"
-
-gText_CriticalHit:: @ 85CB424
- .string "A critical hit!$"
-
-gText_OneHitKO:: @ 85CB434
- .string "It’s a one-hit KO!$"
-
-gText_123Poof:: @ 85CB447
- .string "{PAUSE 32}1, {PAUSE 15}2, and{PAUSE 15}… {PAUSE 15}… {PAUSE 15}… {PAUSE 15}{PLAY_SE 0x0038}Poof!\p$"
-
-gText_AndEllipsis:: @ 85CB473
- .string "And…\p$"
-
-gText_HMMovesCantBeForgotten:: @ 85CB479
- .string "HM moves can’t be\nforgotten now.\p$"
-
-gText_NotVeryEffective:: @ 85CB49B
- .string "It’s not very effective…$"
-
-gText_SuperEffective:: @ 85CB4B4
- .string "It’s super effective!$"
-
-gText_GotAwaySafely:: @ 85CB4CA
- .string "{PLAY_SE 0x0011}Got away safely!\p$"
-
-gText_PkmnFledUsingIts:: @ 85CB4E0
- .string "{PLAY_SE 0x0011}{STRING 15} fled\nusing its {STRING 22}!\p$"
-
-gText_PkmnFledUsing:: @ 85CB4FB
- .string "{PLAY_SE 0x0011}{STRING 15} fled\nusing {STRING 24}!\p$"
-
-gText_WildPkmnFled:: @ 85CB512
- .string "{PLAY_SE 0x0011}Wild {STRING 0} fled!$"
-
-gText_PlayerDefeated:: @ 85CB524
- .string "Player defeated\n{STRING 32}!$"
-
-gText_PlayerBeatTwo:: @ 85CB538
- .string "Player beat {STRING 32}\nand {STRING 33}!$"
-
-gText_PlayerLostAgainst:: @ 85CB54F
- .string "Player lost against\n{STRING 32}!$"
-
-gText_PlayerLostToTwo:: @ 85CB567
- .string "Player lost to {STRING 32}\nand {STRING 33}!$"
-
-gText_PlayerBattledToDraw:: @ 85CB581
- .string "Player battled to a draw against\n{STRING 32}!$"
-
-gText_PlayerBattledToDrawVsTwo:: @ 85CB5A6
- .string "Player battled to a draw against\n{STRING 32} and {STRING 33}!$"
-
-gText_WildFled:: @ 85CB5D2
- .string "{PLAY_SE 0x0011}{STRING 32} fled!$"
-
-gText_TwoWildFled:: @ 85CB5DF
- .string "{PLAY_SE 0x0011}{STRING 32} and\n{STRING 33} fled!$"
-
-gText_NoRunningFromTrainers:: @ 85CB5F3
- .string "No! There’s no running\nfrom a TRAINER battle!\p$"
-
-gText_CantEscape:: @ 85CB622
- .string "Can’t escape!\p$"
-
-gText_DontLeaveBirch:: @ 85CB631
- .string "PROF. BIRCH: Don’t leave me like this!\p$"
-
-gText_ButNothingHappened:: @ 85CB659
- .string "But nothing happened!$"
-
-gText_ButItFailed:: @ 85CB66F
- .string "But it failed!$"
-
-gText_ItHurtConfusion:: @ 85CB67E
- .string "It hurt itself in its\nconfusion!$"
-
-gText_MirrorMoveFailed:: @ 85CB69F
- .string "The MIRROR MOVE failed!$"
-
-gText_StartedToRain:: @ 85CB6B7
- .string "It started to rain!$"
-
-gText_DownpourStarted:: @ 85CB6CB
- .string "A downpour started!$"
-
-gText_RainContinues:: @ 85CB6DF
- .string "Rain continues to fall.$"
-
-gText_DownpourContinues:: @ 85CB6F7
- .string "The downpour continues.$"
-
-gText_RainStopped:: @ 85CB70F
- .string "The rain stopped.$"
-
-gText_SandstormBrewed:: @ 85CB721
- .string "A sandstorm brewed!$"
-
-gText_SandstormRages:: @ 85CB735
- .string "The sandstorm rages.$"
-
-gText_SandstormSubsided:: @ 85CB74A
- .string "The sandstorm subsided.$"
-
-gText_SunlightGotBright:: @ 85CB762
- .string "The sunlight got bright!$"
-
-gText_SunlightStrong:: @ 85CB77B
- .string "The sunlight is strong.$"
-
-gText_SunlightFaded:: @ 85CB793
- .string "The sunlight faded.$"
-
-gText_StartedHail:: @ 85CB7A7
- .string "It started to hail!$"
-
-gText_HailContinues:: @ 85CB7BB
- .string "Hail continues to fall.$"
-
-gText_HailStopped:: @ 85CB7D3
- .string "The hail stopped.$"
-
-gText_FailedToSpitUp:: @ 85CB7E5
- .string "But it failed to SPIT UP\na thing!$"
-
-gText_FailedToSwallow:: @ 85CB807
- .string "But it failed to SWALLOW\na thing!$"
-
-gText_WindBecameHeatWave:: @ 85CB829
- .string "The wind turned into a\nHEAT WAVE!$"
-
-gText_StatChangesGone:: @ 85CB84B
- .string "All stat changes were\neliminated!$"
-
-gText_CoinsScattered:: @ 85CB86D
- .string "Coins scattered everywhere!$"
-
-gText_TooWeakForSubstitute:: @ 85CB889
- .string "It was too weak to make\na SUBSTITUTE!$"
-
-gText_SharedPain:: @ 85CB8AF
- .string "The battlers shared\ntheir pain!$"
-
-gText_BellChimed:: @ 85CB8CF
- .string "A bell chimed!$"
-
-gText_FaintInThree:: @ 85CB8DE
- .string "All affected POKéMON will\nfaint in three turns!$"
-
-gText_NoPPLeft:: @ 85CB90E
- .string "There’s no PP left for\nthis move!\p$"
-
-gText_ButNoPPLeft:: @ 85CB931
- .string "But there was no PP left\nfor the move!$"
-
-gText_PkmnIgnoresAsleep:: @ 85CB958
- .string "{STRING 15} ignored\norders while asleep!$"
-
-gText_PkmnIgnoredOrders:: @ 85CB978
- .string "{STRING 15} ignored\norders!$"
-
-gText_PkmnBeganToNap:: @ 85CB98B
- .string "{STRING 15} began to nap!$"
-
-gText_PkmnLoafing:: @ 85CB99C
- .string "{STRING 15} is\nloafing around!$"
-
-gText_PkmnWontObey:: @ 85CB9B2
- .string "{STRING 15} won’t\nobey!$"
-
-gText_PkmnTurnedAway:: @ 85CB9C1
- .string "{STRING 15} turned away!$"
-
-gText_PkmnPretendNotNotice:: @ 85CB9D1
- .string "{STRING 15} pretended\nnot to notice!$"
-
-gText_EnemyAboutToSwitchPkmn:: @ 85CB9ED
- .string "{STRING 28} {STRING 29} is\nabout to use {PLAYER}.\pWill {STRING 35} change\nPOKéMON?$"
-
-gText_PkmnLearnedMove2:: @ 85CBA1F
- .string "{STRING 15} learned\n{STRING 0}!$"
-
-gText_PlayerDefeatedXY:: @ 85CBA2E
- .string "Player defeated\n{STRING 28} {STRING 29}!\p$"
-
-gText_CreptCloser:: @ 85CBA46
- .string "{STRING 35} crept closer to\n{RIVAL}!$"
-
-gText_CantGetCloser:: @ 85CBA5D
- .string "{STRING 35} can’t get any closer!$"
-
-gText_PkmnWatchingCarefully:: @ 85CBA76
- .string "{RIVAL} is watching\ncarefully!$"
-
-gText_PkmnCuriousAboutX:: @ 85CBA90
- .string "{RIVAL} is curious about\nthe {STRING 0}!$"
-
-gText_PkmnEnthralledByX:: @ 85CBAAC
- .string "{RIVAL} is enthralled by\nthe {STRING 0}!$"
-
-gText_PkmnIgnoredX:: @ 85CBAC8
- .string "{RIVAL} completely ignored\nthe {STRING 0}!$"
-
-gText_ThrewPokeblockAtPkmn:: @ 85CBAE6
- .string "{STRING 35} threw a {POKEBLOCK}\nat the {RIVAL}!$"
-
-gText_OutOfSafariBalls:: @ 85CBB02
- .string "{PLAY_SE 0x0049}ANNOUNCER: You’re out of\nSAFARI BALLS! Game over!\p$"
-
- .string "{RIVAL} appeared!\p$"
-
-gText_WildPkmnAppeared:: @ 85CBB47
- .string "Wild {RIVAL} appeared!\p$"
-
-gText_WildPkmnAppeared2:: @ 85CBB5A
- .string "Wild {RIVAL} appeared!\p$"
-
-gText_WildPkmnAppearedPause:: @ 85CBB6D
- .string "Wild {RIVAL} appeared!{PAUSE 127}$"
-
-gText_TwoWildPkmnAppeared:: @ 85CBB82
- .string "Wild {RIVAL} and\n{AQUA} appeared!\p$"
-
-gText_TrainerXYWantsToBattle:: @ 85CBB9C
- .string "{STRING 28} {STRING 29}\nwould like to battle!\p$"
-
-gText_TrainerXWantsToBattle:: @ 85CBBB9
- .string "{STRING 32}\nwants to battle!$"
-
-gText_TwoTrainersWantToBattle:: @ 85CBBCD
- .string "{STRING 32} and {STRING 33}\nwant to battle!$"
-
-gText_TrainerXYSentOutPkmn:: @ 85CBBE7
- .string "{STRING 28} {STRING 29} sent\nout {RIVAL}!$"
-
-gText_TrainerXYSentOutTwoPkmn:: @ 85CBBFA
- .string "{STRING 28} {STRING 29} sent\nout {RIVAL} and {AQUA}!$"
-
-gText_TrainerXYSentOutPkmn2:: @ 85CBC14
- .string "{STRING 28} {STRING 29} sent\nout {STRING 0}!$"
-
-gText_TrainerXSentOutPkmn:: @ 85CBC27
- .string "{STRING 32} sent out\n{RIVAL}!$"
-
-gText_TrainerXSentOutTwoPkmn:: @ 85CBC37
- .string "{STRING 32} sent out\n{RIVAL} and {AQUA}!$"
-
-gText_TwoTrainersSentOutPkmn:: @ 85CBC4E
- .string "{STRING 32} sent out {STRING 10}!\n{STRING 33} sent out {STRING 12}!$"
-
-gText_TrainerXSentOutPkmn2:: @ 85CBC6E
- .string "{STRING 32} sent out\n{STRING 0}!$"
-
-gText_TrainerXSentOutPkmn3:: @ 85CBC7E
- .string "{STRING 34} sent out\n{STRING 0}!$"
-
-gText_GoPkmn:: @ 85CBC8E
- .string "Go! {STRING 5}!$"
-
-gText_GoTwoPkmn:: @ 85CBC96
- .string "Go! {STRING 5} and\n{VERSION}!$"
-
-gText_GoPkmn2:: @ 85CBCA5
- .string "Go! {STRING 0}!$"
-
-gText_DoItPkmn:: @ 85CBCAD
- .string "Do it! {STRING 0}!$"
-
-gText_GoForItPkmn:: @ 85CBCB8
- .string "Go for it, {STRING 0}!$"
-
-gText_YourFoesWeakGetEmPkmn:: @ 85CBCC7
- .string "Your foe’s weak!\nGet ’em, {STRING 0}!$"
-
-gText_EnemySentOutPkmnGoPkmn:: @ 85CBCE5
- .string "{STRING 31} sent out {STRING 11}!\nGo! {STRING 9}!$"
-
-gText_PkmnThatsEnough:: @ 85CBCFD
- .string "{STRING 0}, that’s enough!\nCome back!$"
-
-gText_PkmnComeBack:: @ 85CBD1B
- .string "{STRING 0}, come back!$"
-
-gText_PkmnOkComeBack:: @ 85CBD2A
- .string "{STRING 0}, OK!\nCome back!$"
-
-gText_PkmnGoodComeBack:: @ 85CBD3D
- .string "{STRING 0}, good!\nCome back!$"
-
-gText_TrainerXYWithdrewPkmn:: @ 85CBD52
- .string "{STRING 28} {STRING 29}\nwithdrew {STRING 0}!$"
-
-gText_TrainerXWithdrewPkmn:: @ 85CBD65
- .string "{STRING 32} withdrew\n{STRING 0}!$"
-
-gText_TrainerXWithdrewPkmn2:: @ 85CBD75
- .string "{STRING 34} withdrew\n{STRING 0}!$"
-
-gText_WildPkmnPrefix:: @ 85CBD85
- .string "Wild $"
-
-gText_FoePkmnPrefix:: @ 85CBD8B
- .string "Foe $"
-
- .string "$"
-
-gText_FoePkmnPrefix2:: @ 85CBD91
- .string "Foe$"
-
-gText_AllyPkmnPrefix:: @ 85CBD95
- .string "Ally$"
-
-gText_FoePkmnPrefix3:: @ 85CBD9A
- .string "Foe$"
-
-gText_AllyPkmnPrefix2:: @ 85CBD9E
- .string "Ally$"
-
-gText_FoePkmnPrefix4:: @ 85CBDA3
- .string "Foe$"
-
-gText_AllyPkmnPrefix3:: @ 85CBDA7
- .string "Ally$"
-
-gText_XUsedY2:: @ 85CBDAC
- .string "{STRING 15} used\n{PLAYER}$"
-
-gText_ExclamationMark:: @ 85CBDB7
- .string "!$"
-
-gText_ExclamationMark2:: @ 85CBDB9
- .string "!$"
-
-gText_ExclamationMark3:: @ 85CBDBB
- .string "!$"
-
-gText_ExclamationMark4:: @ 85CBDBD
- .string "!$"
-
-gText_ExclamationMark5:: @ 85CBDBF
- .string "!$"
-
-gText_HP2:: @ 85CBDC1
- .string "HP$"
-
-gText_Attack2:: @ 85CBDC4
- .string "ATTACK$"
-
-gText_Defense2:: @ 85CBDCB
- .string "DEFENSE$"
-
-gText_Speed:: @ 85CBDD3
- .string "SPEED$"
-
-gText_SpAtk2:: @ 85CBDD9
- .string "SP. ATK$"
-
-gText_SpDef2:: @ 85CBDE1
- .string "SP. DEF$"
-
-gText_Accuracy:: @ 85CBDE9
- .string "accuracy$"
-
-gText_Evasiveness:: @ 85CBDF2
- .string "evasiveness$"
-
- .align 2
-gStatNamesTable:: @ 85CBE00
- .4byte gText_HP2
- .4byte gText_Attack2
- .4byte gText_Defense2
- .4byte gText_Speed
- .4byte gText_SpAtk2
- .4byte gText_SpDef2
- .4byte gText_Accuracy
- .4byte gText_Evasiveness
-
-gText_PokeblockWasTooSpicy:: @ 85CBE20
- .string "was too spicy!$"
-
-gText_PokeblockWasTooDry:: @ 85CBE2F
- .string "was too dry!$"
-
-gText_PokeblockWasTooSweet:: @ 85CBE3C
- .string "was too sweet!$"
-
-gText_PokeblockWasTooBitter:: @ 85CBE4B
- .string "was too bitter!$"
-
-gText_PokeblockWasTooSour:: @ 85CBE5B
- .string "was too sour!$"
-
- .align 2
-gPokeblockWasTooXStringTable:: @ 85CBE6C
- .4byte gText_PokeblockWasTooSpicy
- .4byte gText_PokeblockWasTooDry
- .4byte gText_PokeblockWasTooSweet
- .4byte gText_PokeblockWasTooBitter
- .4byte gText_PokeblockWasTooSour
-
-gText_XUsedY:: @ 85CBE80
- .string "{STRING 35} used\n{STRING 22}!$"
-
-gText_WallyUsedY:: @ 85CBE8C
- .string "WALLY used\n{STRING 22}!$"
-
-gText_XYUsedZ:: @ 85CBE9B
- .string "{STRING 28} {STRING 29}\nused {STRING 22}!$"
-
-gText_TrainerBlockedBall:: @ 85CBEAA
- .string "The TRAINER blocked the BALL!$"
-
-gText_DontBeAThief:: @ 85CBEC8
- .string "Don’t be a thief!$"
-
-gText_ItDodgedBall:: @ 85CBEDA
- .string "It dodged the thrown BALL!\nThis POKéMON can’t be caught!$"
-
-gText_YouMissedPkmn:: @ 85CBF13
- .string "You missed the POKéMON!$"
-
-gText_PkmnBrokeFree:: @ 85CBF2B
- .string "Oh, no!\nThe POKéMON broke free!$"
-
-gText_ItAppearedCaught:: @ 85CBF4B
- .string "Aww!\nIt appeared to be caught!$"
-
-gText_AarghAlmostHadIt:: @ 85CBF6A
- .string "Aargh!\nAlmost had it!$"
-
-gText_ShootSoClose:: @ 85CBF80
- .string "Shoot!\nIt was so close, too!$"
-
-gText_GotchaPkmnCaught:: @ 85CBF9D
- .string "Gotcha!\n{RIVAL} was caught!{UNKNOWN_A}{PLAY_BGM BGM_KACHI22}\p$"
-
-gText_GotchaPkmnCaught2:: @ 85CBFBB
- .string "Gotcha!\n{RIVAL} was caught!{UNKNOWN_A}{PLAY_BGM BGM_KACHI22}{PAUSE 127}$"
-
-gText_GiveNicknameCaptured:: @ 85CBFDB
- .string "Give a nickname to the\ncaptured {RIVAL}?$"
-
-gText_PkmnSentToPC:: @ 85CBFFF
- .string "{RIVAL} was sent to\n{STRING 39} PC.$"
-
-gText_Someones:: @ 85CC015
- .string "someone’s$"
-
-gText_Lanettes:: @ 85CC01F
- .string "LANETTE’s$"
-
-gText_PkmnDataAddedToDex:: @ 85CC029
- .string "{RIVAL}’s data was\nadded to the POKéDEX.\p$"
-
-gText_ItIsRaining:: @ 85CC04E
- .string "It is raining.$"
-
-gText_SandstormIsRaging:: @ 85CC05D
- .string "A sandstorm is raging.$"
-
-gText_BoxIsFull:: @ 85CC074
- .string "The BOX is full!\nYou can’t catch any more!\p$"
-
-gText_EnigmaBerry:: @ 85CC0A0
- .string "ENIGMA BERRY$"
-
-gText_BerrySuffix:: @ 85CC0AD
- .string " BERRY$"
-
-gText_PkmnsXCuredParalysis:: @ 85CC0B4
- .string "{STRING 19}’s {STRING 22}\ncured paralysis!$"
-
-gText_PkmnsXCuredPoison:: @ 85CC0CD
- .string "{STRING 19}’s {STRING 22}\ncured poison!$"
-
-gText_PkmnsXHealedBurn:: @ 85CC0E3
- .string "{STRING 19}’s {STRING 22}\nhealed its burn!$"
-
-gText_PkmnsXDefrostedIt:: @ 85CC0FC
- .string "{STRING 19}’s {STRING 22}\ndefrosted it!$"
-
-gText_PkmnsXWokeIt:: @ 85CC112
- .string "{STRING 19}’s {STRING 22}\nwoke it from its sleep!$"
-
-gText_PkmnsXSnappedOut:: @ 85CC132
- .string "{STRING 19}’s {STRING 22}\nsnapped it out of confusion!$"
-
-gText_PkmnsXCuredProblem:: @ 85CC157
- .string "{STRING 19}’s {STRING 22}\ncured its {STRING 0} problem!$"
-
-gText_PkmnsXNormalizedStatus:: @ 85CC175
- .string "{STRING 19}’s {STRING 22}\nnormalized its status!$"
-
-gText_PkmnsXRestoredHealth:: @ 85CC194
- .string "{STRING 19}’s {STRING 22}\nrestored health!$"
-
-gText_PkmnsXRestoredPP:: @ 85CC1AD
- .string "{STRING 19}’s {STRING 22}\nrestored {STRING 0}’s PP!$"
-
-gText_PkmnsXRestoredStatus:: @ 85CC1C7
- .string "{STRING 19}’s {STRING 22}\nrestored its status!$"
-
-gText_PkmnsXRestoredHPALittle:: @ 85CC1E4
- .string "{STRING 19}’s {STRING 22}\nrestored its HP a little!$"
-
-gText_XAllowsOnlyY:: @ 85CC206
- .string "{STRING 22} allows the\nuse of only {STRING 20}!\p$"
-
-gText_PkmnHungOnWithX:: @ 85CC225
- .string "{STRING 16} hung on\nusing its {STRING 22}!$"
-
-gText_EmptyString3:: @ 85CC23E
- .string "$"
-
-gText_YouThrowABallNowRight:: @ 85CC23F
- .string "You throw a BALL now, right?\nI… I’ll do my best!$"
-
- .align 2
-gBattleStringsTable:: @ 85CC270
- .4byte gText_Buffer36
- .4byte gText_PkmnGainedEXP
- .4byte gText_PkmnGrewToLv
- .4byte gText_PkmnLearnedMove
- .4byte gText_TryToLearnMove1
- .4byte gText_TryToLearnMove2
- .4byte gText_TryToLearnMove3
- .4byte gText_PkmnForgotMove
- .4byte gText_StopLearningMove
- .4byte gText_DidNotLearnMove
- .4byte gText_PkmnLearnedMove2
- .4byte gText_AttackMissed
- .4byte gText_PkmnProtectedItself
- .4byte gText_StatsWontIncrease2
- .4byte gText_AvoidedDamage
- .4byte gText_ItDoesntAffect
- .4byte gText_PkmnFainted
- .4byte gText_PkmnFainted2
- .4byte gText_PlayerGotMoney
- .4byte gText_PlayerWhiteout
- .4byte gText_PlayerWhiteout2
- .4byte gText_PreventsEscape
- .4byte gText_HitXTimes
- .4byte gText_PkmnFellAsleep
- .4byte gText_PkmnMadeSleep
- .4byte gText_PkmnAlreadyAsleep
- .4byte gText_PkmnAlreadyAsleep2
- .4byte gText_PkmnWasntAffected
- .4byte gText_PkmnWasPoisoned
- .4byte gText_PkmnPoisonedBy
- .4byte gText_PkmnHurtByPoison
- .4byte gText_PkmnAlreadyPoisoned
- .4byte gText_PkmnBadlyPoisoned
- .4byte gText_PkmnEnergyDrained
- .4byte gText_PkmnWasBurned
- .4byte gText_PkmnBurnedBy
- .4byte gText_PkmnHurtByBurn
- .4byte gText_PkmnWasFrozen
- .4byte gText_PkmnFrozenBy
- .4byte gText_PkmnIsFrozen
- .4byte gText_PkmnWasDefrosted
- .4byte gText_PkmnWasDefrosted2
- .4byte gText_PkmnWasDefrostedBy
- .4byte gText_PkmnWasParalyzed
- .4byte gText_PkmnWasParalyzedBy
- .4byte gText_PkmnIsParalyzed
- .4byte gText_PkmnIsAlreadyParalyzed
- .4byte gText_PkmnHealedParalysis
- .4byte gText_PkmnDreamEaten
- .4byte gText_StatsWontIncrease
- .4byte gText_StatsWontDecrease
- .4byte gText_TeamStoppedWorking
- .4byte gText_FoeStoppedWorking
- .4byte gText_PkmnIsConfused
- .4byte gText_PkmnHealedConfusion
- .4byte gText_PkmnWasConfused
- .4byte gText_PkmnAlreadyConfused
- .4byte gText_PkmnFellInLove
- .4byte gText_PkmnInLove
- .4byte gText_PkmnImmobilizedByLove
- .4byte gText_PkmnBlownAway
- .4byte gText_PkmnChangedType
- .4byte gText_PkmnFlinched
- .4byte gText_PkmnRegainedHealth
- .4byte gText_PkmnHPFull
- .4byte gText_PkmnRaisedSpDef
- .4byte gText_PkmnRaisedDef
- .4byte gText_PkmnCoveredByVeil
- .4byte gText_PkmnUsedSafeguard
- .4byte gText_PkmnSafeguardExpired
- .4byte gText_PkmnWentToSleep
- .4byte gText_PkmnSleptHealthy
- .4byte gText_PkmnWhippedWhirlwind
- .4byte gText_PkmnTookSunlight
- .4byte gText_PkmnLoweredHead
- .4byte gText_PkmnIsGlowing
- .4byte gText_PkmnFlewHigh
- .4byte gText_PkmnDugHole
- .4byte gText_PkmnSqueezedByBind
- .4byte gText_PkmnTrappedInVortex
- .4byte gText_PkmnWrappedBy
- .4byte gText_PkmnClamped
- .4byte gText_PkmnHurtBy
- .4byte gText_PkmnFreedFrom
- .4byte gText_PkmnCrashed
- .4byte gText_PkmnShroudedInMist
- .4byte gText_PkmnProtectedByMist
- .4byte gText_PkmnGettingPumped
- .4byte gText_PkmnHitWithRecoil
- .4byte gText_PkmnProtectedItself2
- .4byte gText_PkmnBuffetedBySandstorm
- .4byte gText_PkmnPeltedByHail
- .4byte gText_PkmnSeeded
- .4byte gText_PkmnEvadedAttack
- .4byte gText_PkmnSappedByLeechSeed
- .4byte gText_PkmnFastAsleep
- .4byte gText_PkmnWokeUp
- .4byte gText_PkmnUproarKeptAwake
- .4byte gText_PkmnWokeUpInUproar
- .4byte gText_PkmnCausedUproar
- .4byte gText_PkmnMakingUproar
- .4byte gText_PkmnCalmedDown
- .4byte gText_PkmnCantSleepInUproar
- .4byte gText_PkmnStockpiled
- .4byte gText_PkmnCantStockpile
- .4byte gText_PkmnCantSleepInUproar2
- .4byte gText_UproarKeptPkmnAwake
- .4byte gText_PkmnStayedAwakeUsing
- .4byte gText_PkmnStoringEnergy
- .4byte gText_PkmnUnleashedEnergy
- .4byte gText_PkmnFatigueConfusion
- .4byte gText_PkmnPickedUpItem
- .4byte gText_PkmnUnaffected
- .4byte gText_PkmnTransformedInto
- .4byte gText_PkmnMadeSubstitute
- .4byte gText_PkmnHasSubstitute
- .4byte gText_SubstituteDamaged
- .4byte gText_PkmnSubstituteFaded
- .4byte gText_PkmnMustRecharge
- .4byte gText_PkmnRageBuilding
- .4byte gText_PkmnMoveWasDisabled
- .4byte gText_PkmnMoveIsDisabled
- .4byte gText_PkmnMoveDisabledNoMore
- .4byte gText_PkmnGotEncore
- .4byte gText_PkmnEncoreEnded
- .4byte gText_PkmnTookAim
- .4byte gText_PkmnSketchedMove
- .4byte gText_PkmnTryingToTakeFoe
- .4byte gText_PkmnTookFoe
- .4byte gText_PkmnReducedPP
- .4byte gText_PkmnStoleItem
- .4byte gText_PkmnCantEscape
- .4byte gText_PkmnFellIntoNightmare
- .4byte gText_PkmnLockedInNightmare
- .4byte gText_PkmnLaidCurse
- .4byte gText_PkmnAfflictedByCurse
- .4byte gText_SpikesScattered
- .4byte gText_PkmnHurtBySpikes
- .4byte gText_PkmnIdentified
- .4byte gText_PkmnPerishCountFell
- .4byte gText_PkmnBracedItself
- .4byte gText_PkmnEnduredHit
- .4byte gText_MagnitudeStrength
- .4byte gText_PkmnCutHPMaxedAttack
- .4byte gText_PkmnCopiedStatChanges
- .4byte gText_PkmnGotFree
- .4byte gText_PkmnShedLeechSeed
- .4byte gText_PkmnBlewAwaySpikes
- .4byte gText_PkmnFledFromBattle
- .4byte gText_PkmnForesawAttack
- .4byte gText_PkmnTookAttack
- .4byte gText_PkmnAttack
- .4byte gText_PkmnCenterAttention
- .4byte gText_PkmnChargingPower
- .4byte gText_NaturePowerTurnedInto
- .4byte gText_PkmnStatusNormal
- .4byte gText_PkmnHasNoMovesLeft
- .4byte gText_PkmnSubjectedToTorment
- .4byte gText_PkmnCantUseMoveTorment
- .4byte gText_PkmnTighteningFocus
- .4byte gText_PkmnFellForTaunt
- .4byte gText_PkmnCantUseMoveTaunt
- .4byte gText_PkmnReadyToHelp
- .4byte gText_PkmnSwitchedItems
- .4byte gText_PkmnCopiedFoe
- .4byte gText_PkmnMadeWish
- .4byte gText_PkmnWishCameTrue
- .4byte gText_PkmnPlantedRoots
- .4byte gText_PkmnAbsorbedNutrients
- .4byte gText_PkmnAnchoredItself
- .4byte gText_PkmnWasMadeDrowsy
- .4byte gText_PkmnKnockedOff
- .4byte gText_PkmnSwappedAbilities
- .4byte gText_PkmnSealedOpponentMove
- .4byte gText_PkmnCantUseMoveSealed
- .4byte gText_PkmnWantsGrudge
- .4byte gText_PkmnLostPPGrudge
- .4byte gText_PkmnShroudedItself
- .4byte gText_PkmnMoveBounced
- .4byte gText_PkmnWaitsForTarget
- .4byte gText_PkmnSnatchedMove
- .4byte gText_PkmnMadeItRain
- .4byte gText_PkmnRaisedSpeed
- .4byte gText_PkmnProtectedBy
- .4byte gText_PkmnPreventsUsage
- .4byte gText_PkmnRestoredHPUsing
- .4byte gText_PkmnChangedTypeWith
- .4byte gText_PkmnPreventsParalysisWith
- .4byte gText_PkmnPreventsRomanceWith
- .4byte gText_PkmnPreventsPoisoningWith
- .4byte gText_PkmnPreventsConfusionWith
- .4byte gText_PkmnRaisedFirePowerWith
- .4byte gText_PkmnAnchorsItselfWith
- .4byte gText_PkmnCutsAttackWith
- .4byte gText_PkmnPreventsStatLossWith
- .4byte gText_PkmnHurtsWith
- .4byte gText_PkmnTraced
- .4byte gText_StatSharply
- .4byte gText_StatRose
- .4byte gText_StatHarshly
- .4byte gText_StatFell
- .4byte gText_PkmnsStatChanged
- .4byte gText_PkmnsStatChanged2
- .4byte gText_PkmnsStatChanged3
- .4byte gText_PkmnsStatChanged4
- .4byte gText_CriticalHit
- .4byte gText_OneHitKO
- .4byte gText_123Poof
- .4byte gText_AndEllipsis
- .4byte gText_NotVeryEffective
- .4byte gText_SuperEffective
- .4byte gText_GotAwaySafely
- .4byte gText_WildPkmnFled
- .4byte gText_NoRunningFromTrainers
- .4byte gText_CantEscape
- .4byte gText_DontLeaveBirch
- .4byte gText_ButNothingHappened
- .4byte gText_ButItFailed
- .4byte gText_ItHurtConfusion
- .4byte gText_MirrorMoveFailed
- .4byte gText_StartedToRain
- .4byte gText_DownpourStarted
- .4byte gText_RainContinues
- .4byte gText_DownpourContinues
- .4byte gText_RainStopped
- .4byte gText_SandstormBrewed
- .4byte gText_SandstormRages
- .4byte gText_SandstormSubsided
- .4byte gText_SunlightGotBright
- .4byte gText_SunlightStrong
- .4byte gText_SunlightFaded
- .4byte gText_StartedHail
- .4byte gText_HailContinues
- .4byte gText_HailStopped
- .4byte gText_FailedToSpitUp
- .4byte gText_FailedToSwallow
- .4byte gText_WindBecameHeatWave
- .4byte gText_StatChangesGone
- .4byte gText_CoinsScattered
- .4byte gText_TooWeakForSubstitute
- .4byte gText_SharedPain
- .4byte gText_BellChimed
- .4byte gText_FaintInThree
- .4byte gText_NoPPLeft
- .4byte gText_ButNoPPLeft
- .4byte gText_XUsedY
- .4byte gText_WallyUsedY
- .4byte gText_TrainerBlockedBall
- .4byte gText_DontBeAThief
- .4byte gText_ItDodgedBall
- .4byte gText_YouMissedPkmn
- .4byte gText_PkmnBrokeFree
- .4byte gText_ItAppearedCaught
- .4byte gText_AarghAlmostHadIt
- .4byte gText_ShootSoClose
- .4byte gText_GotchaPkmnCaught
- .4byte gText_GotchaPkmnCaught2
- .4byte gText_GiveNicknameCaptured
- .4byte gText_PkmnSentToPC
- .4byte gText_PkmnDataAddedToDex
- .4byte gText_ItIsRaining
- .4byte gText_SandstormIsRaging
- .4byte gText_CantEscape2
- .4byte gText_PkmnIgnoresAsleep
- .4byte gText_PkmnIgnoredOrders
- .4byte gText_PkmnBeganToNap
- .4byte gText_PkmnLoafing
- .4byte gText_PkmnWontObey
- .4byte gText_PkmnTurnedAway
- .4byte gText_PkmnPretendNotNotice
- .4byte gText_EnemyAboutToSwitchPkmn
- .4byte gText_CreptCloser
- .4byte gText_CantGetCloser
- .4byte gText_PkmnWatchingCarefully
- .4byte gText_PkmnCuriousAboutX
- .4byte gText_PkmnEnthralledByX
- .4byte gText_PkmnIgnoredX
- .4byte gText_ThrewPokeblockAtPkmn
- .4byte gText_OutOfSafariBalls
- .4byte gText_PkmnsXCuredParalysis
- .4byte gText_PkmnsXCuredPoison
- .4byte gText_PkmnsXHealedBurn
- .4byte gText_PkmnsXDefrostedIt
- .4byte gText_PkmnsXWokeIt
- .4byte gText_PkmnsXSnappedOut
- .4byte gText_PkmnsXCuredProblem
- .4byte gText_PkmnsXRestoredHealth
- .4byte gText_PkmnsXRestoredPP
- .4byte gText_PkmnsXRestoredStatus
- .4byte gText_PkmnsXRestoredHPALittle
- .4byte gText_XAllowsOnlyY
- .4byte gText_PkmnHungOnWithX
- .4byte gText_EmptyString3
- .4byte gText_PkmnsXPreventsBurns
- .4byte gText_PkmnsXBlocksY
- .4byte gText_PkmnsXRestoredHPALittle2
- .4byte gText_PkmnsXWhippedUpSandstorm
- .4byte gText_PkmnsXPreventsYLoss
- .4byte gText_PkmnsXInfatuatedY
- .4byte gText_PkmnsXMadeYIneffective
- .4byte gText_PkmnsXCuredYProblem
- .4byte gText_ItSuckedLiquidOoze
- .4byte gText_PkmnTransformed
- .4byte gText_ElectricityWeakened
- .4byte gText_FireWeakened
- .4byte gText_PkmnHidUnderwater
- .4byte gText_PkmnSprangUp
- .4byte gText_HMMovesCantBeForgotten
- .4byte gText_XFoundOneY
- .4byte gText_PlayerDefeatedXY
- .4byte gText_SoothingAroma
- .4byte gText_ItemsCantBeUsedNow
- .4byte gText_ForXCommaYZ
- .4byte gText_UsingXTheYOfZN
- .4byte gText_PkmnUsedXToGetPumped
- .4byte gText_PkmnsXMadeYUseless
- .4byte gText_PkmnTrappedBySandTomb
- .4byte gText_EmptyString4
- .4byte gText_ABoosted
- .4byte gText_PkmnsXIntensifiedSun
- .4byte gText_PkmnMakesGroundMiss
- .4byte gText_YouThrowABallNowRight
- .4byte gText_PkmnsXTookAttack
- .4byte gText_PkmnChoseXAsDestiny
- .4byte gText_PkmnLostFocus
- .4byte gText_UseNextPkmn
- .4byte gText_PkmnFledUsingIts
- .4byte gText_PkmnFledUsing
- .4byte gText_PkmnWasDraggedOut
- .4byte gText_PreventedFromWorking
- .4byte gText_PkmnsXNormalizedStatus
- .4byte gText_XYUsedZ
- .4byte gText_BoxIsFull
- .4byte gText_PkmnAvoidedAttack
- .4byte gText_PkmnsXMadeItIneffective
- .4byte gText_PkmnsXPreventsFlinching
- .4byte gText_PkmnAlreadyHasBurn
- .4byte gText_StatsWontDecrease2
- .4byte gText_PkmnsXBlocksY2
- .4byte gText_PkmnsXWoreOff
- .4byte gText_PkmnRaisedDefALittle
- .4byte gText_PkmnRaisedSpDefALittle
- .4byte gText_TheWallShattered
- .4byte gText_PkmnsXPreventsYsZ
- .4byte gText_PkmnsXCuredItsYProblem
- .4byte gText_PkmnCantEscape2
- .4byte gText_PkmnObtainedX
- .4byte gText_PkmnObtainedX2
- .4byte gText_PkmnObtainedXYObtainedZ
- .4byte gText_ButNoEffect
- .4byte gText_PkmnsXHadNoEffectOnY
- .4byte gText_TwoEnemiesDefeated
- .4byte gText_String48
- .4byte gText_PkmnIncapableOfPower
- .4byte gText_GlintAppearsInEye
- .4byte gText_PkmnGettingIntoPosition
- .4byte gText_PkmnBeganGrowlingDeeply
- .4byte gText_PkmnEagerForMore
- .4byte gText_DefeatedOpponentByReferee
- .4byte gText_LostToOpponentByReferee
- .4byte gText_TiedOpponentByReferee
- .4byte gText_QuestionForfeitMatch
- .4byte gText_ForfeitedMatch
- .4byte gText_PkmnTransferredSomeonesPC
- .4byte gText_PkmnTransferredLanettesPC
- .4byte gText_PkmnBoxSomeonesPCFull
- .4byte gText_PkmnBoxLanettesPCFull
- .4byte gText_String37
- .4byte gText_String49
-
- .align 2
-gMissStringIds:: @ 85CC834
- .2byte 0x0017, 0x0018, 0x0159, 0x001a, 0x014c
-
-gUnknown_085CC83E:: @ 85CC83E
- .2byte 0x00e2, 0x00e3, 0x0021
- .2byte 0x0112, 0x0165, 0x00e8, 0x00e9, 0x00e5, 0x00ed, 0x00f0, 0x00f3
- .2byte 0x00ee, 0x00f4, 0x0066, 0x0067, 0x00ef, 0x00f5, 0x00ea, 0x00eb
- .2byte 0x00ec, 0x0065, 0x0098, 0x00e5, 0x00e5, 0x004e, 0x0160, 0x004d
- .2byte 0x0161, 0x004f, 0x0068, 0x0069, 0x001b, 0x006a, 0x0139, 0x0052
- .2byte 0x0053, 0x0070, 0x0071, 0x0073, 0x0074, 0x006c, 0x006e, 0x00f7
- .2byte 0x004c, 0x0075, 0x0076, 0x0077, 0x00d5, 0x00d6, 0x003d, 0x0130
- .2byte 0x0145, 0x0146, 0x00d7, 0x00d8, 0x003e, 0x0130, 0x0054, 0x0055
- .2byte 0x0056, 0x0057, 0x0058, 0x0059, 0x013d, 0x013e, 0x005a, 0x005c
- .2byte 0x005b, 0x005d, 0x005b, 0x0148, 0x0061, 0x00e5, 0x0063, 0x00e5
- .2byte 0x007d, 0x00e5, 0x007e, 0x00fb, 0x0028, 0x0029, 0x0037, 0x0038
- .2byte 0x0023, 0x0024, 0x002e, 0x002f, 0x0031, 0x0032, 0x0035, 0x0036
- .2byte 0x0017, 0x007c, 0x0045, 0x0136, 0x002d, 0x0139, 0x013b, 0x013c
- .2byte 0x00fd, 0x00fd, 0x00fd, 0x00fd, 0x0142, 0x00a1, 0x014f, 0x0107
- .2byte 0x0108, 0x0109, 0x010a, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110
- .2byte 0x0110, 0x0110, 0x0110, 0x0111, 0x0110, 0x0110, 0x0110, 0x00f1
- .2byte 0x0110, 0x0110, 0x0110, 0x0116, 0x0117, 0x0118, 0x0119, 0x016d
- .2byte 0x011b, 0x011c, 0x011e, 0x011f, 0x0120, 0x0128, 0x0123, 0x0126
- .2byte 0x0125, 0x0124, 0x0127, 0x0129, 0x0156, 0x0131, 0x0163, 0x016a
- .2byte 0x00c7, 0x0163, 0x016a, 0x00c9, 0x0163, 0x016a, 0x0166, 0x0167
- .2byte 0x0168, 0x00cb, 0x0137, 0x0177, 0x0178, 0x0179, 0x017a
-
-gTrappingMoves:: @ 85CC982
- .2byte MOVE_BIND, MOVE_WRAP, MOVE_FIRE_SPIN, MOVE_CLAMP, MOVE_WHIRLPOOL, MOVE_SAND_TOMB, 0xffff
-
-gText_PkmnIsEvolving:: @ 85CC990
- .string "What?\n{STR_VAR_1} is evolving!$"
-
-gText_CongratsPkmnEvolved:: @ 85CC9A6
- .string "Congratulations! Your {STR_VAR_1}\nevolved into {STR_VAR_2}!{UNKNOWN_A}\p$"
-
-gText_PkmnStoppedEvolving:: @ 85CC9D3
- .string "Huh? {STR_VAR_1}\nstopped evolving!\p$"
-
-gText_EllipsisQuestionMark:: @ 85CC9EE
- .string "……?\p$"
-
-gText_WhatWillPkmnDo:: @ 85CC9F3
- .string "What will\n{STRING 18} do?$"
-
-gText_WhatWillPkmnDo2:: @ 85CCA04
- .string "What will\n{STRING 35} do?$"
-
-gText_WhatWillWallyDo:: @ 85CCA15
- .string "What will\nWALLY do?$"
-
-gText_LinkStandby:: @ 85CCA29
- .string "{PAUSE 16}Link standby…$"
-
-gText_BattleMenu:: @ 85CCA3A
- .string "FIGHT{CLEAR_TO 56}BAG\nPOKéMON{CLEAR_TO 56}RUN$"
-
-gText_SafariZoneMenu:: @ 85CCA54
- .string "BALL{CLEAR_TO 56}{POKEBLOCK}\nGO NEAR{CLEAR_TO 56}RUN$"
-
-gText_MoveInterfacePP:: @ 85CCA6F
- .string "PP $"
-
-gText_MoveInterfaceType:: @ 85CCA73
- .string "TYPE/$"
-
- .string "{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}PP\nTYPE/$"
- .string "{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}$"
- .string "{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}Which move should\nbe forgotten?$"
-
-gText_BattleYesNoChoice:: @ 85CCABB
- .string "{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}Yes\nNo$"
-
-gText_BattleSwitchWhich:: @ 85CCACA
- .string "{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}Switch\nwhich?$"
-
- .string "{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}$"
- .string "{UP_ARROW}$"
- .string "{ESCAPE 4}$"
- .string "-$"
-
-gText_HP:: @ 85CCAF1
- .string "HP$"
-
-gText_Attack:: @ 85CCAF4
- .string "ATTACK$"
-
-gText_Defense:: @ 85CCAFB
- .string "DEFENSE$"
-
-gText_SpAtk:: @ 85CCB03
- .string "SP. ATK$"
-
-gText_SpDef:: @ 85CCB0B
- .string "SP. DEF$"
-
- .align 2
- .4byte gText_HP
- .4byte gText_SpAtk
- .4byte gText_Attack
- .4byte gText_SpDef
- .4byte gText_Defense
- .4byte gText_Speed
-
-gText_SafariBalls:: @ 85CCB2C
- .string "{HIGHLIGHT DARK_GREY}SAFARI BALLS$"
-
-gText_SafariBallLeft:: @ 85CCB3C
- .string "{HIGHLIGHT DARK_GREY}Left: $"
- .string "{HIGHLIGHT DARK_GREY}$"
-gText_Sleep::
- .string "sleep$"
-gText_Poison::
- .string "poison$"
-gText_Burn::
- .string "burn$"
-gText_Paralysis::
- .string "paralysis$"
-gText_Ice::
- .string "ice$"
-gText_Confusion::
- .string "confusion$"
-gText_Love::
- .string "love$"
-
-gText_SpaceAndSpace:: @ 85CCB79
- .string " and $"
-
-gText_CommaSpace:: @ 85CCB7F
- .string ", $"
-
-gText_Space2:: @ 85CCB82
- .string " $"
-
-gText_ScrollTextUp:: @ 85CCB84
- .string "\l$"
-
-gText_NewLine:: @ 85CCB86
- .string "\n$"
-
-gText_Are:: @ 85CCB88
- .string "are$"
-
-gText_Are2:: @ 85CCB8C
- .string "are$"
-
-gText_BadEgg:: @ 85CCB90
- .string "Bad EGG$"
-
-gText_BattleWallyName:: @ 85CCB98
- .string "WALLY$"
-
-gText_Win:: @ 85CCB9E
- .string "{HIGHLIGHT TRANSPARENT}Win$"
-
-gText_Loss:: @ 85CCBA5
- .string "{HIGHLIGHT TRANSPARENT}Loss$"
-
-gText_Draw:: @ 85CCBAD
- .string "{HIGHLIGHT TRANSPARENT}Draw$"
-
-gText_SpaceIs:: @ 85CCBB5
- .string " is$"
-
-gText_ApostropheS:: @ 85CCBB9
- .string "’s$"
-
-gText_UnknownMoveTypes:: @ 85CCBBC
- .string "a NORMAL move$ "
- .string "a FIGHTING move$ "
- .string "a FLYING move$ "
- .string "a POISON move$ "
- .string "a GROUND move$ "
- .string "a ROCK move$ "
- .string "a BUG move$ "
- .string "a GHOST move$ "
- .string "a STEEL move$ "
- .string "a ??? move$ "
- .string "a FIRE move$ "
- .string "a WATER move$ "
- .string "a GRASS move$ "
- .string "an ELECTRIC move$"
- .string "a PSYCHIC move$ "
- .string "an ICE move$ "
- .string "a DRAGON move$ "
- .string "a DARK move$ "
-
-gText_BattleTourney:: @ 85CCCEE
- .string "BATTLE TOURNEY$"
-
-gText_Round1:: @ 85CCCFD
- .string "Round 1$"
-
-gText_Round2:: @ 85CCD05
- .string "Round 2$"
-
-gText_Semifinal:: @ 85CCC0D
- .string "Semifinal$"
-
-gText_Final:: @ 85CCD17
- .string "Final$"
-
- .align 2
-gRoundsStringTable:: @ 85CCD20
- .4byte gText_Round1
- .4byte gText_Round2
- .4byte gText_Semifinal
- .4byte gText_Final
-
- .string "The great new hope!\p$"
- .string "Will the championship dream come true?!\p$"
- .string "A former CHAMPION!\p$"
- .string "The previous CHAMPION!\p$"
- .string "The unbeaten CHAMPION!\p$"
-
-gText_JapaneseHonorific:: @ 85CCDB2
- .string "{KUN}$"
-
-gText_Vs:: @ 85CCDB5
- .string "VS$"
-
-gText_RivalBuffer:: @ 85CCDB8
- .string "{RIVAL}$"
-
-gText_Mind:: @ 85CCDBB
- .string "Mind$"
-
-gText_Skill:: @ 85CCDC0
- .string "Skill$"
-
-gText_Body:: @ 85CCDC6
- .string "Body$"
-
-gText_Judgement:: @ 85CCDCB
- .string "{STRING 0}{CLEAR 13}Judgment{CLEAR 13}{PLAYER}$"
-
-gText_TwoTrainersSentPkmn:: @ 85CCDDE
- .string "{STRING 28} {STRING 29} sent\nout {RIVAL}!\p{STRING 46} {STRING 47} sent\nout {AQUA}!$"
-
-gText_TrainerXYSentOutPkmn3:: @ 85CCE04
- .string "{STRING 46} {STRING 47} sent\nout {STRING 0}!$"
-
-gText_TwoTrainersWantToBattle2:: @ 85CCE17
- .string "{STRING 28} {STRING 29} and\n{STRING 46} {STRING 47}\lwant to battle!\p$"
-
-gText_TrainerXYSentOutZGoN:: @ 85CCE38
- .string "{STRING 50} {STRING 51} sent\nout {VERSION}!\lGo, {STRING 5}!$"
-
-gText_TwoEnemiesDefeated:: @ 85CCE53
- .string "{STRING 28} {STRING 29} and\n{STRING 46} {STRING 47}\lwere defeated!\p$"
-
-gText_String48:: @ 85CCE73
- .string "{STRING 48}$"
-
-gText_PkmnIncapableOfPower:: @ 85CCE76
- .string "{STRING 15} appears incapable\nof using its power!$"
-
-gText_GlintAppearsInEye:: @ 85CCE9F
- .string "A glint appears in\n{STRING 19}’s eyes!$"
-
-gText_PkmnGettingIntoPosition:: @ 85CCEBD
- .string "{STRING 19} is getting into\nposition!$"
-
-gText_PkmnBeganGrowlingDeeply:: @ 85CCEDA
- .string "{STRING 19} began growling deeply!$"
-
-gText_PkmnEagerForMore:: @ 85CCEF4
- .string "{STRING 19} is eager for more!$"
-
-gUnknown_085CCF0A:: @ 85CCF0A
- .2byte 0x016E, 0x016F, 0x0170, 0x0171
-
-gText_RefIfNothingIsDecided:: @ 85CCF12
- .string "REFEREE: If nothing is decided in\n3 turns, we will go to judging!$"
-
-gText_RefThatsIt:: @ 85CCF54
- .string "REFEREE: That’s it! We will now go to\njudging to determine the winner!$"
-
-gText_RefJudgeMind:: @ 85CCF9B
- .string "REFEREE: Judging category 1, Mind!\nThe POKéMON showing the most guts!\p$"
-
-gText_RefJudgeSkill:: @ 85CCFE2
- .string "REFEREE: Judging category 2, Skill!\nThe POKéMON using moves the best!\p$"
-
-gText_RefJudgeBody:: @ 85CD029
- .string "REFEREE: Judging category 3, Body!\nThe POKéMON with the most vitality!\p$"
-
-gText_RefJudgement1:: @ 85CD071
- .string "REFEREE: Judgment: {STRING 0} to {PLAYER}!\nThe winner is {STRING 35}’s {STRING 5}!\p$"
-
-gText_RefJudgement2:: @ 85CD0A6
- .string "REFEREE: Judgment: {STRING 0} to {PLAYER}!\nThe winner is {STRING 29}’s {RIVAL}!\p$"
-
-gText_RefJudgement3:: @ 85CD0DB
- .string "REFEREE: Judgment: 3 to 3!\nWe have a draw!\p$"
-
-gText_DefeatedOpponentByReferee:: @ 85CD107
- .string "{STRING 5} defeated the opponent\n{RIVAL} in a REFEREE’s decision!$"
-
-gText_LostToOpponentByReferee:: @ 85CD13C
- .string "{STRING 5} lost to the opponent\n{RIVAL} in a REFEREE’s decision!$"
-
-gText_TiedOpponentByReferee:: @ 85CD170
- .string "{STRING 5} tied the opponent\n{RIVAL} in a REFEREE’s decision!$"
-
-gText_RefCommenceBattle:: @ 85CD1A1
- .string "REFEREE: {STRING 5} VS {RIVAL}!\nCommence battling!$"
-
- .align 2
-gRefereeStringsTable:: @ 85CD1C8
- .4byte gText_RefIfNothingIsDecided
- .4byte gText_RefThatsIt
- .4byte gText_RefJudgeMind
- .4byte gText_RefJudgeSkill
- .4byte gText_RefJudgeBody
- .4byte gText_RefJudgement1
- .4byte gText_RefJudgement2
- .4byte gText_RefJudgement3
- .4byte gText_RefCommenceBattle
-
-gText_QuestionForfeitMatch:: @ 85CD1EC
- .string "Would you like to forfeit the match\nand quit now?$"
-
-gText_ForfeitedMatch:: @ 85CD21E
- .string "{STRING 35} forfeited the match!$"
-
-gText_String37:: @ 85CD236
- .string "{STRING 37}$"
-
-gText_String49:: @ 85CD239
- .string "{STRING 49}$"
-
- .string "{PLAY_SE 0x0011}{STRING 28} {STRING 29} fled!$"
-
-gText_PlayerLostAgainst2:: @ 85CD24C
- .string "Player lost against\n{STRING 28} {STRING 29}!$"
-
-gText_PlayerBattledToDraw2:: @ 85CD267
- .string "Player battled to a draw against\n{STRING 28} {STRING 29}!$"
-
-gText_RecordBattleToPass:: @ 85CD28F
- .string "Would you like to record your battle\non your FRONTIER PASS?$"
-
-gText_BattleRecordedOnPass:: @ 85CD2CB
- .string "{STRING 35}’s battle result was recorded\non the FRONTIER PASS.$"
-
-gText_TrainerWantsToBattle:: @ 85CD301
- .string "{STRING 32}\nwants to battle!{PAUSE 49}$"
-
-gText_TwoTrainersWantToBattle3:: @ 85CD318
- .string "{STRING 32} and {STRING 33}\nwant to battle!{PAUSE 49}$"
-
- .align 1
-gUnknown_085CD336:: @ 85CD336
- .2byte 0x000e, 0x0046, 0x004a, 0x006a, 0x006b, 0x006c, 0x006e, 0x006f
- .2byte 0x0079, 0x007b, 0x007d, 0x0094, 0x0096, 0x0097, 0x009b, 0x009c
- .2byte 0x009f, 0x00a4, 0x00aa, 0x00ad, 0x00b6, 0x00bf, 0x00cb, 0x00cd
- .2byte 0x00cf, 0x00d6, 0x00ed, 0x00f4, 0x00f5, 0x010a, 0x010f, 0x0112
- .2byte 0x0113, 0x011a, 0x0125, 0x0136, 0x013c, 0x0140, 0x0149, 0x014a
- .2byte 0x014e, 0x0154, 0x0000, 0x0064, 0x0069, 0x0075, 0x0085, 0x00af
- .2byte 0x010d, 0x0153, 0x0000, 0x0060, 0x0061, 0x0066, 0x0068, 0x008c
- .2byte 0x0090, 0x00a5, 0x00b8, 0x010c, 0x0111, 0x0118, 0x0119, 0x0129
- .2byte 0x012a, 0x012c, 0x0139, 0x015a, 0x015b, 0x0000, 0x0001, 0x000a
- .2byte 0x000b, 0x0011, 0x0013, 0x0014, 0x0015, 0x001e, 0x0023, 0x0025
- .2byte 0x0027, 0x002b, 0x002c, 0x002d, 0x002e, 0x002f, 0x0040, 0x0047
- .2byte 0x0051, 0x0059, 0x005a, 0x005b, 0x005c, 0x0067, 0x0076, 0x007a
- .2byte 0x0080, 0x0084, 0x008b, 0x0091, 0x00a3, 0x00a9, 0x00ab, 0x00ae
- .2byte 0x00c1, 0x00cc, 0x00d5, 0x00f9, 0x00fd, 0x00ff, 0x0100, 0x0103
- .2byte 0x0104, 0x0110, 0x011b, 0x0141, 0x0157, 0x0000
-
-gUnknown_085CD422:: @ 85CD422
- .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
-
- .align 2
-gUnknown_085CD42C:: @ 85CD42C
- .2byte 0x01ff, 0x0100, 0x0000, 0x0101, 0x060f, 0x0000, 0x01ff, 0x0101
- .2byte 0x0000, 0x0100, 0x060f, 0x0000, 0x01ee, 0x0100, 0x0000, 0x0d00
- .2byte 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000
- .2byte 0x07ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x07ee, 0x0100
- .2byte 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00
- .2byte 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0c00, 0x0b0e, 0x0000
- .2byte 0x01ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x0102
- .2byte 0x0000, 0x0c00, 0x0b0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00
- .2byte 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000
- .2byte 0x01ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x0100
- .2byte 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x0100, 0x0120, 0x0000, 0x0100
- .2byte 0x0200, 0x0000, 0x01ee, 0x01ff, 0x0000, 0x0d00, 0x0f0e, 0x0000
- .2byte 0x01ee, 0x01ff, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x01ff
- .2byte 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x01ff, 0x0000, 0x0d00
- .2byte 0x0f0e, 0x0000, 0x01ee, 0x01ff, 0x0000, 0x0d00, 0x0f0e, 0x0000
- .2byte 0x01ee, 0x01ff, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x0100, 0x01ff
- .2byte 0x0000, 0x0100, 0x0600, 0x0000, 0x0100, 0x01ff, 0x0000, 0x0100
- .2byte 0x0600, 0x0000, 0x0100, 0x01ff, 0x0000, 0x0100, 0x0600, 0x0000
-
- .align 2
-gUnknown_085CD54C:: @ 85C54C
- .2byte 0x01ff, 0x0100, 0x0000, 0x0101, 0x060f, 0x0000, 0x01ff, 0x0101
- .2byte 0x0000, 0x0100, 0x060f, 0x0000, 0x01ee, 0x0100, 0x0000, 0x0d00
- .2byte 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000
- .2byte 0x07ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x07ee, 0x0100
- .2byte 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00
- .2byte 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0c00, 0x0b0e, 0x0000
- .2byte 0x01ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x0102
- .2byte 0x0000, 0x0c00, 0x0b0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00
- .2byte 0x0f0e, 0x0000, 0x07ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000
- .2byte 0x01ee, 0x0100, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x0100
- .2byte 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x0100, 0x0120, 0x0000, 0x0100
- .2byte 0x0200, 0x0000, 0x01ee, 0x01ff, 0x0000, 0x0100, 0x0f0e, 0x0000
- .2byte 0x01ee, 0x01ff, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x01ff
- .2byte 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x01ff, 0x0000, 0x0d00
- .2byte 0x0f0e, 0x0000, 0x01ee, 0x01ff, 0x0000, 0x0d00, 0x0f0e, 0x0000
- .2byte 0x01ee, 0x01ff, 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x01ee, 0x01ff
- .2byte 0x0000, 0x0d00, 0x0f0e, 0x0000, 0x0111, 0x0100, 0x0000, 0x0201
- .2byte 0x0301, 0x0000
-
- .align 2
-gUnknown_085CD660:: @ 85CD660
- .4byte gUnknown_085CD42C
- .4byte gUnknown_085CD54C
-
- .align 2
-gUnknown_085CD668:: @ 85CD668
- .byte 0x08, 0x04, 0x01, 0x00
diff --git a/data/bike.s b/data/bike.s
index 26bcc8745..ffb33e52b 100644
--- a/data/bike.s
+++ b/data/bike.s
@@ -5,19 +5,54 @@
.align 2, 0
gUnknown_0859744C:: @ 859744C
- .incbin "baserom.gba", 0x59744c, 0x10
+ .4byte sub_8119224
+ .4byte sub_8119238
+ .4byte sub_8119280
+ .4byte sub_8119344
+ .align 2
gUnknown_0859745C:: @ 859745C
- .incbin "baserom.gba", 0x59745c, 0xc
+ .4byte PlayerGoSpeed0
+ .4byte PlayerGoSpeed1
+ .4byte PlayerGoSpeed3
+ .align 2
gUnknown_08597468:: @ 8597468
- .incbin "baserom.gba", 0x597468, 0x34
+ .4byte sub_81197E4
+ .4byte sub_81197F4
+ .4byte sub_8119830
+ .4byte sub_81198C0
+ .4byte sub_81198FC
+ .4byte sub_8119938
+ .4byte sub_8119974
+ .4byte sub_81199B0
+ .4byte sub_8119A24
+ .4byte sub_8119A94
+ .4byte sub_8119AA4
+ .4byte sub_8119B34
+ .4byte sub_8119BC4
+ .align 2
gUnknown_0859749C:: @ 859749C
- .incbin "baserom.gba", 0x59749c, 0x1c
+ .4byte CheckMovementInputAcroBikeNormal
+ .4byte CheckMovementInputAcroBikeChangingDirection
+ .4byte CheckMovementInputAcroBikeStandingWheelie
+ .4byte CheckMovementInputAcroBikeBunnyHop
+ .4byte CheckMovementInputAcroBikeMovingWheelie
+ .4byte CheckMovementInputAcroBikeUnknownMode5
+ .4byte CheckMovementInputAcroBikeUnknownMode6
+ .align 2
gUnknown_085974B8:: @ 85974B8
- .incbin "baserom.gba", 0x5974b8, 0x8
+ .2byte 0x0001, 0x0002, 0x0004
+ .align 1
+gUnknown_085974BE:: @ 85974BE
+ .2byte 0x0004
+
+ .align 2
gUnknown_085974C0:: @ 85974C0
- .incbin "baserom.gba", 0x5974c0, 0x70
+ .4byte 0x00000001, 0x00000002, 0x0000000f, 0x0000000f, gUnknown_085974BE, gUnknown_085974BE, 0x00000001
+ .4byte 0x00000002, 0x00000002, 0x0000000f, 0x0000000f, gUnknown_085974BE, gUnknown_085974BE, 0x00000002
+ .4byte 0x00000003, 0x00000002, 0x0000000f, 0x0000000f, gUnknown_085974BE, gUnknown_085974BE, 0x00000003
+ .4byte 0x00000004, 0x00000002, 0x0000000f, 0x0000000f, gUnknown_085974BE, gUnknown_085974BE, 0x00000004
diff --git a/data/cable_club.s b/data/cable_club.s
index 4961cb1cc..f62b0b90a 100644
--- a/data/cable_club.s
+++ b/data/cable_club.s
@@ -4,8 +4,13 @@
.section .rodata
.align 2, 0
+ .align 2
gUnknown_08550594:: @ 8550594
- .incbin "baserom.gba", 0x550594, 0x8
+ window_template 0x00, 0x10, 0x0b, 0x0b, 0x02, 0x0f, 0x0125
+ .align 2
gUnknown_0855059C:: @ 855059C
- .incbin "baserom.gba", 0x55059c, 0x190
+ .4byte gText_BronzeCard
+ .4byte gText_CopperCard
+ .4byte gText_SilverCard
+ .4byte gText_GoldCard
diff --git a/data/data2b.s b/data/data2b.s
index 802399fca..e723b4c97 100644
--- a/data/data2b.s
+++ b/data/data2b.s
@@ -6,154 +6,4627 @@
.section .rodata
.align 2
+gUnknown_082FF1D8:: @ 82FF1D8
+ .incbin "graphics/link/minigame_digits.gbapal"
+ .align 2
+gUnknown_082FF1F8:: @ 82FF1F8
+ .incbin "graphics/link/minigame_digits.4bpp.lz"
-gUnknown_082FECFC:: @ 82FECFC
- .incbin "baserom.gba", 0x2fecfc, 0x40
+ .align 2
+gUnknown_082FF2B8:: @ 82FF2B8
+ .incbin "graphics/link/minigame_digits2.4bpp.lz"
-gUnknown_082FED3C:: @ 82FED3C
- .incbin "baserom.gba", 0x2fed3c, 0x1b4
+ .align 2
+gUnknown_082FF3A8:: @ 82FF3A8
+ .byte 0x00, 0x80, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
+ .byte 0x00, 0x88, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
+ .byte 0x00, 0x90, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
+ .byte 0x00, 0x98, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
-gUnknown_082FEEF0:: @ 82FEEF0
- .incbin "baserom.gba", 0x2feef0, 0x128
+ .align 2
+gUnknown_082FF3C8:: @ 82FF3C8
+ .byte 0x00, 0xa0, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
+ .byte 0x00, 0xa8, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
+ .byte 0x00, 0xb0, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
+ .byte 0x00, 0xb8, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
-gUnknown_082FF018:: @ 82FF018
- .incbin "baserom.gba", 0x2ff018, 0x2
+ .align 2
+gUnknown_082FF3E8:: @ 82FF3E8
+ .byte 0x00, 0xc0, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
+ .byte 0x00, 0xc8, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
+ .byte 0x00, 0xd0, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
+ .byte 0x00, 0xd8, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
-gUnknown_082FF01A:: @ 82FF01A
- .incbin "baserom.gba", 0x2ff01a, 0xe
+ .align 2
+gUnknown_082FF408:: @ 82FF408
+ .byte 0x00, 0xe0, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
+ .byte 0x00, 0xe8, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
+ .byte 0x00, 0xf0, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
+ .byte 0x00, 0xf8, 0x00, 0x02, 0x00, 0x08, 0x00, 0x00
-gUnknown_082FF028:: @ 82FF028
- .incbin "baserom.gba", 0x2ff028, 0x10
+ .align 2
+gUnknown_082FF428:: @ 82FF428
+ obj_frame_tiles gTrainerBackPic_Brendan, 0x0800
+ obj_frame_tiles gTrainerBackPic_Brendan + 0x0800, 0x0800
+ obj_frame_tiles gTrainerBackPic_Brendan + 0x1000, 0x0800
+ obj_frame_tiles gTrainerBackPic_Brendan + 0x1800, 0x0800
-gUnknown_082FF038:: @ 82FF038
- .incbin "baserom.gba", 0x2ff038, 0x10
+ .align 2
+gUnknown_082FF448:: @ 82FF448
+ obj_frame_tiles gTrainerBackPic_May, 0x0800
+ obj_frame_tiles gTrainerBackPic_May + 0x0800, 0x0800
+ obj_frame_tiles gTrainerBackPic_May + 0x1000, 0x0800
+ obj_frame_tiles gTrainerBackPic_May + 0x1800, 0x0800
-gUnknown_082FF048:: @ 82FF048
- .incbin "baserom.gba", 0x2ff048, 0x28
+ .align 2
+gUnknown_082FF468:: @ 82FF468
+ obj_frame_tiles gTrainerBackPic_Red, 0x0800
+ obj_frame_tiles gTrainerBackPic_Red + 0x0800, 0x0800
+ obj_frame_tiles gTrainerBackPic_Red + 0x1000, 0x0800
+ obj_frame_tiles gTrainerBackPic_Red + 0x1800, 0x0800
+ obj_frame_tiles gTrainerBackPic_Red + 0x2000, 0x0800
-gUnknown_082FF070:: @ 82FF070
- .incbin "baserom.gba", 0x2ff070, 0x10
+ .align 2
+gUnknown_082FF490:: @ 82FF490
+ obj_frame_tiles gTrainerBackPic_Leaf, 0x0800
+ obj_frame_tiles gTrainerBackPic_Leaf + 0x0800, 0x0800
+ obj_frame_tiles gTrainerBackPic_Leaf + 0x1000, 0x0800
+ obj_frame_tiles gTrainerBackPic_Leaf + 0x1800, 0x0800
+ obj_frame_tiles gTrainerBackPic_Leaf + 0x2000, 0x0800
-gUnknown_082FF080:: @ 82FF080
- .incbin "baserom.gba", 0x2ff080, 0x8
+ .align 2
+gUnknown_082FF4B8:: @ 82FF4B8
+ obj_frame_tiles gTrainerBackPic_RubySapphireBrendan, 0x0800
+ obj_frame_tiles gTrainerBackPic_RubySapphireBrendan + 0x0800, 0x0800
+ obj_frame_tiles gTrainerBackPic_RubySapphireBrendan + 0x1000, 0x0800
+ obj_frame_tiles gTrainerBackPic_RubySapphireBrendan + 0x1800, 0x0800
-gUnknown_082FF088:: @ 82FF088
- .incbin "baserom.gba", 0x2ff088, 0x18
+ .align 2
+gUnknown_082FF4D8:: @ 82FF4D8
+ obj_frame_tiles gTrainerBackPic_RubySapphireMay, 0x0800
+ obj_frame_tiles gTrainerBackPic_RubySapphireMay + 0x0800, 0x0800
+ obj_frame_tiles gTrainerBackPic_RubySapphireMay + 0x1000, 0x0800
+ obj_frame_tiles gTrainerBackPic_RubySapphireMay + 0x1800, 0x0800
-gUnknown_082FF0A0:: @ 82FF0A0
- .incbin "baserom.gba", 0x2ff0a0, 0x20
+ .align 2
+gUnknown_082FF4F8:: @ 82FF4F8
+ obj_frame_tiles gTrainerBackPic_Wally, 0x0800
+ obj_frame_tiles gTrainerBackPic_Wally + 0x0800, 0x0800
+ obj_frame_tiles gTrainerBackPic_Wally + 0x1000, 0x0800
+ obj_frame_tiles gTrainerBackPic_Wally + 0x1800, 0x0800
-gUnknown_082FF0C0:: @ 82FF0C0
- .incbin "baserom.gba", 0x2ff0c0, 0x20
+ .align 2
+gUnknown_082FF518:: @ 82FF518
+ obj_frame_tiles gTrainerBackPic_Steven, 0x0800
+ obj_frame_tiles gTrainerBackPic_Steven + 0x0800, 0x0800
+ obj_frame_tiles gTrainerBackPic_Steven + 0x1000, 0x0800
+ obj_frame_tiles gTrainerBackPic_Steven + 0x1800, 0x0800
-gUnknown_082FF0E0:: @ 82FF0E0
- .incbin "baserom.gba", 0x2ff0e0, 0x3
+ .align 2
+gAnimCmd_General_Frame0:: @ 82FF538
+ obj_image_anim_frame 0, 0
+ obj_image_anim_end
-gUnknown_082FF0E3:: @ 82FF0E3
- .incbin "baserom.gba", 0x2ff0e3, 0x5
+ .align 2
+AnimCmd_82FF540:: @ 82FF540
+ .2byte 0x0003, 0x0000, 0xffff, 0x0000
-gUnknown_082FF0E8:: @ 82FF0E8
- .incbin "baserom.gba", 0x2ff0e8, 0x8
+ .align 2
+gUnknown_082FF548:: @ 82FF548
+ .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-gUnknown_082FF0F0:: @ 82FF0F0
- .incbin "baserom.gba", 0x2ff0f0, 0x4
+ .align 2
+gUnknown_082FF558:: @ 82FF558
+ .2byte 0xff00, 0x0100, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-gUnknown_082FF0F4:: @ 82FF0F4
- .incbin "baserom.gba", 0x2ff0f4, 0x20
+ .align 2
+gUnknown_082FF568:: @ 82FF568
+ .2byte 0x0028, 0x0028, 0x0000, 0x0000, 0x0012, 0x0012, 0x0c00, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
-gUnknown_082FF114:: @ 82FF114
- .incbin "baserom.gba", 0x2ff114, 0x4
+ .align 2
+gUnknown_082FF580:: @ 82FF580
+ .2byte 0xfffe, 0xfffe, 0x1200, 0x0000, 0xfff0, 0xfff0, 0x0f00, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
-gUnknown_082FF118:: @ 82FF118
- .incbin "baserom.gba", 0x2ff118, 0x10
+ .align 2
+gUnknown_082FF598:: @ 82FF598
+ .2byte 0x00a0, 0x0100, 0x0000, 0x0000, 0x0004, 0x0000, 0x0800, 0x0000
+ .2byte 0xfffc, 0x0000, 0x0800, 0x0000, 0x7ffe, 0x0001, 0x0000, 0x0000
-gUnknown_082FF128:: @ 82FF128
- .incbin "baserom.gba", 0x2ff128, 0x50
+ .align 2
+gUnknown_082FF5B8:: @ 82FF5B8
+ .2byte 0x0002, 0x0002, 0x1400, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-gUnknown_082FF178:: @ 82FF178
- .incbin "baserom.gba", 0x2ff178, 0x50
+ .align 2
+gUnknown_082FF5C8:: @ 82FF5C8
+ .2byte 0xfffe, 0xfffe, 0x1400, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-gUnknown_082FF1C8:: @ 82FF1C8
- .incbin "baserom.gba", 0x2ff1c8, 0x10
+ .align 2
+gUnknown_082FF5D8:: @ 82FF5D8
+ .2byte 0x0100, 0x0100, 0x0000, 0x0000, 0xfff0, 0xfff0, 0x0900, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
-gUnknown_082FF1D8:: @ 82FF1D8
- .incbin "baserom.gba", 0x2ff1d8, 0x20
+ .align 2
+gUnknown_082FF5F0:: @ 82FF5F0
+ .2byte 0x0004, 0x0004, 0x3f00, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
-gUnknown_082FF1F8:: @ 82FF1F8
- .incbin "baserom.gba", 0x2ff1f8, 0x420
+ .align 2
+gUnknown_082FF600:: @ 82FF600
+ .2byte 0x0000, 0x0000, 0x05fd, 0x0000, 0x0000, 0x0000, 0x0503, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
+ .align 2
gUnknown_082FF618:: @ 82FF618
- .incbin "baserom.gba", 0x2ff618, 0x7c
+ .4byte gUnknown_082FF548
+ .4byte gUnknown_082FF568
+ .4byte gUnknown_082FF580
+ .4byte gUnknown_082FF598
+ .4byte gUnknown_082FF5B8
+ .4byte gUnknown_082FF5C8
+ .4byte gUnknown_082FF5F0
+ .4byte gUnknown_082FF600
+ .4byte gUnknown_082FF5D8
+
+ .align 2
+gUnknown_082FF63C:: @ 82FF63C
+ .2byte 0xfffc, 0xfffc, 0x3f04, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_082FF64C:: @ 82FF64C
+ .2byte 0x0000, 0x0000, 0x0503, 0x0000, 0x0000, 0x0000, 0x05fd, 0x0000
+ .2byte 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_082FF664:: @ 82FF664
+ .2byte 0x0000, 0x0000, 0x14fb, 0x0000, 0x0000, 0x0000, 0x1400, 0x0000
+ .2byte 0x0000, 0x0000, 0x1405, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+ .align 2
+gUnknown_082FF684:: @ 82FF684
+ .2byte 0x0000, 0x0000, 0x6e09, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
gUnknown_082FF694:: @ 82FF694
- .incbin "baserom.gba", 0x2ff694, 0x2c
+ .4byte gUnknown_082FF548
+ .4byte gUnknown_082FF568
+ .4byte gUnknown_082FF580
+ .4byte gUnknown_082FF598
+ .4byte gUnknown_082FF5B8
+ .4byte gUnknown_082FF5C8
+ .4byte gUnknown_082FF63C
+ .4byte gUnknown_082FF64C
+ .4byte gUnknown_082FF664
+ .4byte gUnknown_082FF5D8
+ .4byte gUnknown_082FF684
+ .align 2
gUnknown_082FF6C0:: @ 82FF6C0
- .incbin "baserom.gba", 0x2ff6c0, 0x4c
+ .4byte gUnknown_082FF558
+ .4byte gUnknown_082FF568
+ .4byte gUnknown_082FF580
+ .4byte gUnknown_082FF598
+ .4byte gUnknown_082FF5B8
+ .4byte gUnknown_082FF5C8
+ .4byte gUnknown_082FF63C
+ .4byte gUnknown_082FF64C
+ .4byte gUnknown_082FF664
+ .4byte gUnknown_082FF5D8
+ .4byte gUnknown_082FF684
+
+ .align 2
+gUnknown_082FF6EC:: @ 82FF6EC
+ .2byte 0x0000, 0x0000, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF6F4:: @ 82FF6F4
+ .2byte 0x0001, 0x0000, 0xffff, 0x0000
+ .align 2
+gUnknown_082FF6FC:: @ 82FF6FC
+ .2byte 0x0002, 0x0000, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF704:: @ 82FF704
+ .2byte 0x0003, 0x0000, 0xffff, 0x0000
+
+ .align 2
gUnknown_082FF70C:: @ 82FF70C
- .incbin "baserom.gba", 0x2ff70c, 0x162c
+ .4byte gUnknown_082FF6EC
+ .4byte gUnknown_082FF6F4
+ .4byte gUnknown_082FF6FC
+ .4byte gUnknown_082FF704
+
+ .align 2
+gUnknown_082FF71C:: @ 82FF71C
+ .2byte 0x0000, 0x0001, 0x0001, 0x0019, 0x0000, 0x0007, 0x0001, 0x0007
+ .2byte 0x0000, 0x0007, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF734:: @ 82FF734
+ .2byte 0x0000, 0x0001, 0x0002, 0x0008, 0x0000, 0x0008, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF744:: @ 82FF744
+ .2byte 0x0000, 0x000a, 0x0002, 0x000a, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF750:: @ 82FF750
+ .2byte 0x0000, 0x000a, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF758:: @ 82FF758
+ .2byte 0x0000, 0x0001, 0x0001, 0x0005, 0x0000, 0x0005, 0x0001, 0x0005
+ .2byte 0x0000, 0x0005, 0x0001, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF774:: @ 82FF774
+ .2byte 0x0000, 0x0001, 0x0002, 0x000c, 0x0000, 0x000e, 0x0002, 0x000c
+ .2byte 0x0000, 0x000e, 0x0002, 0x000c, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF790:: @ 82FF790
+ .2byte 0x0000, 0x000e, 0x0002, 0x000c, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF79C:: @ 82FF79C
+ .2byte 0x0000, 0x000a, 0x0001, 0x000a, 0x0000, 0x000a, 0x0001, 0x000a, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF7B0:: @ 82FF7B0
+ .2byte 0x0000, 0x000a, 0x0002, 0x000a, 0x0000, 0x000a, 0x0002, 0x000a, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF7C4:: @ 82FF7C4
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF7CC:: @ 82FF7CC
+ .2byte 0x0000, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF7D4:: @ 82FF7D4
+ .2byte 0x0000, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF7DC:: @ 82FF7DC
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF7E4:: @ 82FF7E4
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF7EC:: @ 82FF7EC
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF7F4:: @ 82FF7F4
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF7FC:: @ 82FF7FC
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF804:: @ 82FF804
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF80C:: @ 82FF80C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF814:: @ 82FF814
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF81C:: @ 82FF81C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF824:: @ 82FF824
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF82C:: @ 82FF82C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF834:: @ 82FF834
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF83C:: @ 82FF83C
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF844:: @ 82FF844
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF84C:: @ 82FF84C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF854:: @ 82FF854
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF85C:: @ 82FF85C
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF864:: @ 82FF864
+ .2byte 0x0000, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF86C:: @ 82FF86C
+ .2byte 0x0000, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF874:: @ 82FF874
+ .2byte 0x0000, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF87C:: @ 82FF87C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF884:: @ 82FF884
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF88C:: @ 82FF88C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF894:: @ 82FF894
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF89C:: @ 82FF89C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF8A4:: @ 82FF8A4
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF8AC:: @ 82FF8AC
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF8B4:: @ 82FF8B4
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF8BC:: @ 82FF8BC
+ .2byte 0x0000, 0x000f, 0x0008, 0x000f, 0x0002, 0x0016, 0x0008, 0x0005
+ .2byte 0x0003, 0x0008, 0x0004, 0x0005, 0x0006, 0x0005, 0x0004, 0x0005
+ .2byte 0x0006, 0x0005, 0x0004, 0x0005, 0x0006, 0x0005, 0x0004, 0x0005
+ .2byte 0x0006, 0x0005, 0x0005, 0x0005, 0x0007, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF8FC:: @ 82FF8FC
+ .2byte 0x0000, 0x000a, 0x0008, 0x000f, 0x0002, 0x000f, 0x0008, 0x000f
+ .2byte 0x0009, 0x000f, 0x0000, 0x000a, 0x0009, 0x000a, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF91C:: @ 82FF91C
+ .2byte 0x0000, 0x000a, 0x0009, 0x000a, 0x0000, 0x000a, 0x000a, 0x0014, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF930:: @ 82FF930
+ .2byte 0x0000, 0x000f, 0x000b, 0x000f, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF93C:: @ 82FF93C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF944:: @ 82FF944
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF94C:: @ 82FF94C
+ .2byte 0x0000, 0x000a, 0x0001, 0x0007, 0x0002, 0x0007, 0x0003, 0x0004
+ .2byte 0x0004, 0x0004, 0x0003, 0x0004, 0x0004, 0x0004, 0x0003, 0x0004
+ .2byte 0x0004, 0x0004, 0x0003, 0x0004, 0x0001, 0x0006, 0x0005, 0x0002
+ .2byte 0x0000, 0x0002, 0x0005, 0x0002, 0x0000, 0x0002, 0x0005, 0x0002
+ .2byte 0x0006, 0x0002, 0x0005, 0x0002, 0x0006, 0x0002, 0x0006, 0x000a
+ .2byte 0x0005, 0x0004, 0x0000, 0x000a, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FF9A8:: @ 82FF9A8
+ .2byte 0x0000, 0x000c, 0x0007, 0x000c, 0x0008, 0x000c, 0x0000, 0x000c
+ .2byte 0x0007, 0x000c, 0x0008, 0x000c, 0x0000, 0x000c, 0x0007, 0x000c
+ .2byte 0x0008, 0x000c, 0x0000, 0x000c, 0x0007, 0x000c, 0x0008, 0x000c
+ .2byte 0x0000, 0x000c, 0x0007, 0x000c, 0x0008, 0x000c, 0x0009, 0x0003
+ .2byte 0x0000, 0x0003, 0x0009, 0x0003, 0x0000, 0x0003, 0x0007, 0x000c
+ .2byte 0x0008, 0x000c, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFA00:: @ 82FFA00
+ .2byte 0x0000, 0x000c, 0x0007, 0x000c, 0x0008, 0x000c, 0x0000, 0x000c
+ .2byte 0x0007, 0x000c, 0x0008, 0x000c, 0x0000, 0x000c, 0x0007, 0x000c
+ .2byte 0x0008, 0x000c, 0x0000, 0x000c, 0x0007, 0x000c, 0x0008, 0x000c
+ .2byte 0x0000, 0x000c, 0x0007, 0x000c, 0x0008, 0x000c, 0x0009, 0x0003
+ .2byte 0x0000, 0x0003, 0x0009, 0x0003, 0x0000, 0x0003, 0x0007, 0x000c
+ .2byte 0x0008, 0x000c, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFA58:: @ 82FFA58
+ .2byte 0x0000, 0x0012, 0x000a, 0x0012, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFA64:: @ 82FFA64
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFA6C:: @ 82FFA6C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFA74:: @ 82FFA74
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFA7C:: @ 82FFA7C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFA84:: @ 82FFA84
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFA8C:: @ 82FFA8C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFA94:: @ 82FFA94
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFA9C:: @ 82FFA9C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFAA4:: @ 82FFAA4
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFAAC:: @ 82FFAAC
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFAB4:: @ 82FFAB4
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFABC:: @ 82FFABC
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFAC4:: @ 82FFAC4
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFACC:: @ 82FFACC
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFAD4:: @ 82FFAD4
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFADC:: @ 82FFADC
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFAE4:: @ 82FFAE4
+ .2byte 0x0000, 0x003f, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFAEC:: @ 82FFAEC
+ .2byte 0x0000, 0x003f, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFAF4:: @ 82FFAF4
+ .2byte 0x0000, 0x003f, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFAFC:: @ 82FFAFC
+ .2byte 0x0000, 0x003f, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFB04:: @ 82FFB04
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFB0C:: @ 82FFB0C
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFB14:: @ 82FFB14
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFB1C:: @ 82FFB1C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFB24:: @ 82FFB24
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFB2C:: @ 82FFB2C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFB34:: @ 82FFB34
+ .2byte 0x0000, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFB3C:: @ 82FFB3C
+ .2byte 0x0000, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFB44:: @ 82FFB44
+ .2byte 0x0000, 0x0001, 0x0001, 0x0012, 0x0000, 0x0012, 0x0001, 0x0012
+ .2byte 0x0000, 0x0012, 0x0001, 0x0012, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFB60:: @ 82FFB60
+ .2byte 0x0000, 0x0001, 0x0002, 0x0012, 0x0000, 0x0012, 0x0002, 0x0012
+ .2byte 0x0000, 0x0012, 0x0002, 0x0012, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFB7C:: @ 82FFB7C
+ .2byte 0x0000, 0x0005, 0x0002, 0x0005, 0x0003, 0x0006, 0x0001, 0x0005
+ .2byte 0x0000, 0x0005, 0x0002, 0x0005, 0x0003, 0x0005, 0x0001, 0x0005
+ .2byte 0x0000, 0x0005, 0x0001, 0x0007, 0x0000, 0x0004, 0x0004, 0x0004
+ .2byte 0x0000, 0x0004, 0x0004, 0x0004, 0x0000, 0x0014, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFBBC:: @ 82FFBBC
+ .2byte 0x0000, 0x0006, 0x0001, 0x0006, 0x0002, 0x0006, 0x0003, 0x0006
+ .2byte 0x0001, 0x0006, 0x0000, 0x0006, 0x0001, 0x0006, 0x0000, 0x001e
+ .2byte 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFBE0:: @ 82FFBE0
+ .2byte 0x0000, 0x000c, 0x0005, 0x000c, 0x0000, 0x000c, 0x0006, 0x000c, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFBF4:: @ 82FFBF4
+ .2byte 0x0007, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFBFC:: @ 82FFBFC
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFC04:: @ 82FFC04
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFC0C:: @ 82FFC0C
+ .2byte 0x0000, 0x003f, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFC14:: @ 82FFC14
+ .2byte 0x0000, 0x003f, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFC1C:: @ 82FFC1C
+ .2byte 0x0000, 0x003f, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFC24:: @ 82FFC24
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFC2C:: @ 82FFC2C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFC34:: @ 82FFC34
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFC3C:: @ 82FFC3C
+ .2byte 0x0000, 0x0001, 0x0001, 0x000a, 0x0000, 0x000a, 0x0001, 0x000a
+ .2byte 0x0000, 0x000a, 0x0001, 0x000a, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFC58:: @ 82FFC58
+ .2byte 0x0000, 0x0001, 0x0002, 0x0008, 0x0000, 0x000c, 0x0002, 0x0008
+ .2byte 0x0000, 0x000c, 0x0002, 0x0008, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFC74:: @ 82FFC74
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFC7C:: @ 82FFC7C
+ .2byte 0x0000, 0x000a, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFC84:: @ 82FFC84
+ .2byte 0x0001, 0x0009, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFC8C:: @ 82FFC8C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFC94:: @ 82FFC94
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFC9C:: @ 82FFC9C
+ .2byte 0x0000, 0x000a, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFCA4:: @ 82FFCA4
+ .2byte 0x0001, 0x000a, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFCAC:: @ 82FFCAC
+ .2byte 0x0000, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFCB4:: @ 82FFCB4
+ .2byte 0x0000, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFCBC:: @ 82FFCBC
+ .2byte 0x0000, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFCC4:: @ 82FFCC4
+ .2byte 0x0000, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFCCC:: @ 82FFCCC
+ .2byte 0x0000, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFCD4:: @ 82FFCD4
+ .2byte 0x0000, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFCDC:: @ 82FFCDC
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFCE4:: @ 82FFCE4
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFCEC:: @ 82FFCEC
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFCF4:: @ 82FFCF4
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFCFC:: @ 82FFCFC
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFD04:: @ 82FFD04
+ .2byte 0x0000, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFD0C:: @ 82FFD0C
+ .2byte 0x0000, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFD14:: @ 82FFD14
+ .2byte 0x0000, 0x0005, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFD1C:: @ 82FFD1C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFD24:: @ 82FFD24
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFD2C:: @ 82FFD2C
+ .2byte 0x0002, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFD34:: @ 82FFD34
+ .2byte 0x0003, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFD3C:: @ 82FFD3C
+ .2byte 0x0000, 0x003f, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFD44:: @ 82FFD44
+ .2byte 0x0000, 0x003f, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFD4C:: @ 82FFD4C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFD54:: @ 82FFD54
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFD5C:: @ 82FFD5C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFD64:: @ 82FFD64
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFD6C:: @ 82FFD6C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFD74:: @ 82FFD74
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFD7C:: @ 82FFD7C
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFD84:: @ 82FFD84
+ .2byte 0x0001, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFD8C:: @ 82FFD8C
+ .2byte 0x0000, 0x0014, 0x0001, 0x001e, 0x0000, 0x0014, 0x0001, 0x001e, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFDA0:: @ 82FFDA0
+ .2byte 0x0000, 0x0014, 0x0002, 0x0014, 0x0000, 0x0014, 0x0002, 0x0014, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFDB4:: @ 82FFDB4
+ .2byte 0x0000, 0x000a, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFDBC:: @ 82FFDBC
+ .2byte 0x0000, 0x000a, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFDC4:: @ 82FFDC4
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_082FFDCC:: @ 82FFDCC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFDD0:: @ 82FFDD0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFDD4:: @ 82FFDD4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFDD8:: @ 82FFDD8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFDDC:: @ 82FFDDC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFDE0:: @ 82FFDE0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFDE4:: @ 82FFDE4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFDE8:: @ 82FFDE8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFDEC:: @ 82FFDEC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFDF0:: @ 82FFDF0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFDF4:: @ 82FFDF4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFDF8:: @ 82FFDF8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFDFC:: @ 82FFDFC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE00:: @ 82FFE00
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE04:: @ 82FFE04
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE08:: @ 82FFE08
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE0C:: @ 82FFE0C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE10:: @ 82FFE10
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE14:: @ 82FFE14
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE18:: @ 82FFE18
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE1C:: @ 82FFE1C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE20:: @ 82FFE20
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE24:: @ 82FFE24
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE28:: @ 82FFE28
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE2C:: @ 82FFE2C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE30:: @ 82FFE30
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE34:: @ 82FFE34
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE38:: @ 82FFE38
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE3C:: @ 82FFE3C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE40:: @ 82FFE40
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE44:: @ 82FFE44
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE48:: @ 82FFE48
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE4C:: @ 82FFE4C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE50:: @ 82FFE50
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE54:: @ 82FFE54
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE58:: @ 82FFE58
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE5C:: @ 82FFE5C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE60:: @ 82FFE60
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE64:: @ 82FFE64
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE68:: @ 82FFE68
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE6C:: @ 82FFE6C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE70:: @ 82FFE70
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE74:: @ 82FFE74
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE78:: @ 82FFE78
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE7C:: @ 82FFE7C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE80:: @ 82FFE80
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE84:: @ 82FFE84
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE88:: @ 82FFE88
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE8C:: @ 82FFE8C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE90:: @ 82FFE90
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE94:: @ 82FFE94
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE98:: @ 82FFE98
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFE9C:: @ 82FFE9C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEA0:: @ 82FFEA0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEA4:: @ 82FFEA4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEA8:: @ 82FFEA8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEAC:: @ 82FFEAC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEB0:: @ 82FFEB0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEB4:: @ 82FFEB4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEB8:: @ 82FFEB8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEBC:: @ 82FFEBC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEC0:: @ 82FFEC0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEC4:: @ 82FFEC4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEC8:: @ 82FFEC8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFECC:: @ 82FFECC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFED0:: @ 82FFED0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFED4:: @ 82FFED4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFED8:: @ 82FFED8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEDC:: @ 82FFEDC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEE0:: @ 82FFEE0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEE4:: @ 82FFEE4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEE8:: @ 82FFEE8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEEC:: @ 82FFEEC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEF0:: @ 82FFEF0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEF4:: @ 82FFEF4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEF8:: @ 82FFEF8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFEFC:: @ 82FFEFC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF00:: @ 82FFF00
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF04:: @ 82FFF04
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF08:: @ 82FFF08
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF0C:: @ 82FFF0C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF10:: @ 82FFF10
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF14:: @ 82FFF14
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF18:: @ 82FFF18
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF1C:: @ 82FFF1C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF20:: @ 82FFF20
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF24:: @ 82FFF24
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF28:: @ 82FFF28
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF2C:: @ 82FFF2C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF30:: @ 82FFF30
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF34:: @ 82FFF34
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF38:: @ 82FFF38
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF3C:: @ 82FFF3C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF40:: @ 82FFF40
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF44:: @ 82FFF44
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF48:: @ 82FFF48
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF4C:: @ 82FFF4C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF50:: @ 82FFF50
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF54:: @ 82FFF54
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF58:: @ 82FFF58
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF5C:: @ 82FFF5C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF60:: @ 82FFF60
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF64:: @ 82FFF64
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF68:: @ 82FFF68
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF6C:: @ 82FFF6C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF70:: @ 82FFF70
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF74:: @ 82FFF74
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF78:: @ 82FFF78
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF7C:: @ 82FFF7C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF80:: @ 82FFF80
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF84:: @ 82FFF84
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF88:: @ 82FFF88
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF8C:: @ 82FFF8C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF90:: @ 82FFF90
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF94:: @ 82FFF94
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF98:: @ 82FFF98
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFF9C:: @ 82FFF9C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFA0:: @ 82FFFA0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFA4:: @ 82FFFA4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFA8:: @ 82FFFA8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFAC:: @ 82FFFAC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFB0:: @ 82FFFB0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFB4:: @ 82FFFB4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFB8:: @ 82FFFB8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFBC:: @ 82FFFBC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFC0:: @ 82FFFC0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFC4:: @ 82FFFC4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFC8:: @ 82FFFC8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFCC:: @ 82FFFCC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFD0:: @ 82FFFD0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFD4:: @ 82FFFD4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFD8:: @ 82FFFD8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFDC:: @ 82FFFDC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFE0:: @ 82FFFE0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFE4:: @ 82FFFE4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFE8:: @ 82FFFE8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFEC:: @ 82FFFEC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFF0:: @ 82FFFF0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFF4:: @ 82FFFF4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFF8:: @ 82FFFF8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_082FFFFC:: @ 82FFFFC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300000:: @ 8300000
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300004:: @ 8300004
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300008:: @ 8300008
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830000C:: @ 830000C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300010:: @ 8300010
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300014:: @ 8300014
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300018:: @ 8300018
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830001C:: @ 830001C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300020:: @ 8300020
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300024:: @ 8300024
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300028:: @ 8300028
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830002C:: @ 830002C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300030:: @ 8300030
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300034:: @ 8300034
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300038:: @ 8300038
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830003C:: @ 830003C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300040:: @ 8300040
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300044:: @ 8300044
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300048:: @ 8300048
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830004C:: @ 830004C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300050:: @ 8300050
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300054:: @ 8300054
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300058:: @ 8300058
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830005C:: @ 830005C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300060:: @ 8300060
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300064:: @ 8300064
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300068:: @ 8300068
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830006C:: @ 830006C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300070:: @ 8300070
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300074:: @ 8300074
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300078:: @ 8300078
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830007C:: @ 830007C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300080:: @ 8300080
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300084:: @ 8300084
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300088:: @ 8300088
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830008C:: @ 830008C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300090:: @ 8300090
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300094:: @ 8300094
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300098:: @ 8300098
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830009C:: @ 830009C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000A0:: @ 83000A0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000A4:: @ 83000A4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000A8:: @ 83000A8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000AC:: @ 83000AC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000B0:: @ 83000B0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000B4:: @ 83000B4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000B8:: @ 83000B8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000BC:: @ 83000BC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000C0:: @ 83000C0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000C4:: @ 83000C4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000C8:: @ 83000C8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000CC:: @ 83000CC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000D0:: @ 83000D0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000D4:: @ 83000D4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000D8:: @ 83000D8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000DC:: @ 83000DC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000E0:: @ 83000E0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000E4:: @ 83000E4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000E8:: @ 83000E8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000EC:: @ 83000EC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000F0:: @ 83000F0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000F4:: @ 83000F4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000F8:: @ 83000F8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083000FC:: @ 83000FC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300100:: @ 8300100
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300104:: @ 8300104
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300108:: @ 8300108
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830010C:: @ 830010C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300110:: @ 8300110
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300114:: @ 8300114
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300118:: @ 8300118
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830011C:: @ 830011C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300120:: @ 8300120
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300124:: @ 8300124
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300128:: @ 8300128
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830012C:: @ 830012C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300130:: @ 8300130
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300134:: @ 8300134
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300138:: @ 8300138
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830013C:: @ 830013C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300140:: @ 8300140
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300144:: @ 8300144
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300148:: @ 8300148
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830014C:: @ 830014C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300150:: @ 8300150
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300154:: @ 8300154
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300158:: @ 8300158
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830015C:: @ 830015C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300160:: @ 8300160
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300164:: @ 8300164
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300168:: @ 8300168
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830016C:: @ 830016C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300170:: @ 8300170
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300174:: @ 8300174
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300178:: @ 8300178
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830017C:: @ 830017C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300180:: @ 8300180
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300184:: @ 8300184
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300188:: @ 8300188
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830018C:: @ 830018C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300190:: @ 8300190
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300194:: @ 8300194
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300198:: @ 8300198
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830019C:: @ 830019C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083001A0:: @ 83001A0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083001A4:: @ 83001A4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083001A8:: @ 83001A8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083001AC:: @ 83001AC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083001B0:: @ 83001B0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083001B4:: @ 83001B4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083001B8:: @ 83001B8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083001BC:: @ 83001BC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083001C0:: @ 83001C0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083001C4:: @ 83001C4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083001C8:: @ 83001C8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083001CC:: @ 83001CC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083001D0: @ 83001D0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083001D4:: @ 83001D4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF71C
+ .4byte gUnknown_082FF734
+ .4byte gUnknown_082FF744
+ .4byte gUnknown_082FF750
+
+ .align 2
+gUnknown_083001E8:: @ 83001E8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083001EC:: @ 83001EC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF758
+ .4byte gUnknown_082FF774
+ .4byte gUnknown_082FF790
+
+ .align 2
+gUnknown_083001FC:: @ 83001FC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300200:: @ 8300200
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF79C
+ .4byte gUnknown_082FF7B0
+
+ .align 2
+gUnknown_0830020C:: @ 830020C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF7C4
+
+ .align 2
+gUnknown_08300214:: @ 8300214
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF7CC
+
+ .align 2
+gUnknown_0830021C:: @ 830021C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF7D4
+
+ .align 2
+gUnknown_08300224:: @ 8300224
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF7DC
+ .4byte gUnknown_082FF7E4
+
+ .align 2
+gUnknown_08300230:: @ 8300230
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF7EC
+ .4byte gUnknown_082FF7F4
+
+ .align 2
+gUnknown_0830023C:: @ 830023C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF7FC
+ .4byte gUnknown_082FF804
+
+ .align 2
+gUnknown_08300248:: @ 8300248
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF80C
+ .4byte gUnknown_082FF814
+
+ .align 2
+gUnknown_08300254:: @ 8300254
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF81C
+ .4byte gUnknown_082FF824
+
+ .align 2
+gUnknown_08300260:: @ 8300260
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300264:: @ 8300264
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF82C
+
+ .align 2
+gUnknown_0830026C:: @ 830026C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF834
+ .4byte gUnknown_082FF83C
+
+ .align 2
+gUnknown_08300278:: @ 8300278
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF844
+
+ .align 2
+gUnknown_08300280:: @ 8300280
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF84C
+
+ .align 2
+gUnknown_08300288:: @ 8300288
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF854
+ .4byte gUnknown_082FF85C
+
+ .align 2
+gUnknown_08300294:: @ 8300294
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300298:: @ 8300298
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830029C:: @ 830029C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083002A0:: @ 83002A0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF864
+
+ .align 2
+gUnknown_083002A8:: @ 83002A8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF86C
+
+ .align 2
+gUnknown_083002B0:: @ 83002B0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF874
+
+ .align 2
+gUnknown_083002B8:: @ 83002B8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF87C
+
+ .align 2
+gUnknown_083002C0:: @ 83002C0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083002C4:: @ 83002C4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF884
+
+ .align 2
+gUnknown_083002CC:: @ 83002CC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF88C
+ .4byte gUnknown_082FF894
+
+ .align 2
+gUnknown_083002D8:: @ 83002D8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF89C
+ .4byte gUnknown_082FF8A4
+
+ .align 2
+gUnknown_083002E4:: @ 83002E4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF8AC
+ .4byte gUnknown_082FF8B4
+
+ .align 2
+gUnknown_083002F0:: @ 83002F0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF8BC
+ .4byte gUnknown_082FF8FC
+ .4byte gUnknown_082FF91C
+ .4byte gUnknown_082FF930
+
+ .align 2
+gUnknown_08300304:: @ 8300304
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300308:: @ 8300308
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF93C
+
+ .align 2
+gUnknown_08300310:: @ 8300310
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF944
+
+ .align 2
+gUnknown_08300318:: @ 8300318
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FF94C
+ .4byte gUnknown_082FF9A8
+ .4byte gUnknown_082FFA00
+ .4byte gUnknown_082FFA58
+
+ .align 2
+gUnknown_0830032C:: @ 830032C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFA64
+
+ .align 2
+gUnknown_08300334:: @ 8300334
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFA6C
+
+ .align 2
+gUnknown_0830033C:: @ 830033C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFA74
+
+ .align 2
+gUnknown_08300344:: @ 8300344
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300348:: @ 8300348
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFA7C
+ .4byte gUnknown_082FFA84
+
+ .align 2
+gUnknown_08300354:: @ 8300354
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300358:: @ 8300358
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830035C:: @ 830035C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFA8C
+ .4byte gUnknown_082FFA94
+
+ .align 2
+gUnknown_08300368:: @ 8300368
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830036C:: @ 830036C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300370:: @ 8300370
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFA9C
+ .4byte gUnknown_082FFAA4
+
+ .align 2
+gUnknown_0830037C:: @ 830037C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFAAC
+ .4byte gUnknown_082FFAB4
+
+ .align 2
+gUnknown_08300388:: @ 8300388
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFABC
+ .4byte gUnknown_082FFAC4
+
+ .align 2
+gUnknown_08300394:: @ 8300394
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFACC
+ .4byte gUnknown_082FFAD4
+
+ .align 2
+gUnknown_083003A0:: @ 83003A0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFADC
+
+ .align 2
+gUnknown_083003A8:: @ 83003A8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFAE4
+
+ .align 2
+gUnknown_083003B0:: @ 83003B0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFAEC
+
+ .align 2
+gUnknown_083003B8:: @ 83003B8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFAF4
+
+ .align 2
+gUnknown_083003C0:: @ 83003C0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFAFC
+
+ .align 2
+gUnknown_083003C8:: @ 83003C8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFB04
+ .4byte gUnknown_082FFB0C
+
+ .align 2
+gUnknown_083003D4:: @ 83003D4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFB14
+
+ .align 2
+gUnknown_083003DC:: @ 83003DC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFB1C
+ .4byte gUnknown_082FFB24
+
+ .align 2
+gUnknown_083003E8:: @ 83003E8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFB2C
+
+ .align 2
+gUnknown_083003F0:: @ 83003F0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFB34
+
+ .align 2
+gUnknown_083003F8:: @ 83003F8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFB3C
+
+ .align 2
+gUnknown_08300400:: @ 8300400
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFB44
+ .4byte gUnknown_082FFB60
+
+ .align 2
+gUnknown_0830040C:: @ 830040C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300410:: @ 8300410
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300414:: @ 8300414
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300418:: @ 8300418
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830041C:: @ 830041C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300420:: @ 8300420
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300424:: @ 8300424
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFB7C
+ .4byte gUnknown_082FFBBC
+ .4byte gUnknown_082FFBE0
+ .4byte gUnknown_082FFBF4
+
+ .align 2
+gUnknown_08300438:: @ 8300438
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFBFC
+ .4byte gUnknown_082FFC04
+
+ .align 2
+gUnknown_08300444:: @ 8300444
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFC0C
+
+ .align 2
+gUnknown_0830044C:: @ 830044C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFC14
+
+ .align 2
+gUnknown_08300454:: @ 8300454
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFC1C
+
+ .align 2
+gUnknown_0830045C:: @ 830045C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFC24
+
+ .align 2
+gUnknown_08300464:: @ 8300464
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFC2C
+
+ .align 2
+gUnknown_0830046C:: @ 830046C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFC34
+
+ .align 2
+gUnknown_08300474:: @ 8300474
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFC3C
+ .4byte gUnknown_082FFC58
+
+ .align 2
+gUnknown_08300480:: @ 8300480
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFC74
+
+ .align 2
+gUnknown_08300488:: @ 8300488
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFC7C
+ .4byte gUnknown_082FFC84
+
+ .align 2
+gUnknown_08300494:: @ 8300494
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFC8C
+ .4byte gUnknown_082FFC94
+
+ .align 2
+gUnknown_083004A0:: @ 83004A0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFC9C
+ .4byte gUnknown_082FFCA4
+
+ .align 2
+gUnknown_083004AC:: @ 83004AC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083004B0:: @ 83004B0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFCAC
+
+ .align 2
+gUnknown_083004B8:: @ 83004B8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFCB4
+
+ .align 2
+gUnknown_083004C0:: @ 83004C0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFCBC
+
+ .align 2
+gUnknown_083004C8:: @ 83004C8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFCC4
+
+ .align 2
+gUnknown_083004D0:: @ 83004D0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFCCC
+
+ .align 2
+gUnknown_083004D8:: @ 83004D8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFCD4
+
+ .align 2
+gUnknown_083004E0:: @ 83004E0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083004E4:: @ 83004E4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083004E8:: @ 83004E8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083004EC:: @ 83004EC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFCDC
+
+ .align 2
+gUnknown_083004F4:: @ 83004F4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083004F8:: @ 83004F8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083004FC:: @ 83004FC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFCE4
+
+ .align 2
+gUnknown_08300504:: @ 8300504
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFCEC
+ .4byte gUnknown_082FFCF4
+
+ .align 2
+gUnknown_08300510:: @ 8300510
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFCFC
+
+ .align 2
+gUnknown_08300518:: @ 8300518
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830051C:: @ 830051C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300520:: @ 8300520
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300524:: @ 8300524
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFD04
+
+ .align 2
+gUnknown_0830052C:: @ 830052C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFD0C
+
+ .align 2
+gUnknown_08300534:: @ 8300534
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFD14
+
+ .align 2
+gUnknown_0830053C:: @ 830053C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFD1C
+ .4byte gUnknown_082FFD24
+ .4byte gUnknown_082FFD2C
+ .4byte gUnknown_082FFD34
+
+ .align 2
+gUnknown_08300550:: @ 8300550
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFD3C
+
+ .align 2
+gUnknown_08300558:: @ 8300558
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFD44
+
+ .align 2
+gUnknown_08300560:: @ 8300560
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300564:: @ 8300564
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300568:: @ 8300568
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830056C:: @ 830056C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300570:: @ 8300570
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300574:: @ 8300574
+ .4byte gAnimCmd_General_Frame0
+ .align 2
+gUnknown_08300578:: @ 8300578
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830057C:: @ 830057C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFD4C
+ .4byte gUnknown_082FFD54
+
+ .align 2
+gUnknown_08300588:: @ 8300588
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830058C:: @ 830058C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFD5C
+ .4byte gUnknown_082FFD64
+
+ .align 2
+gUnknown_08300598:: @ 8300598
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830059C:: @ 830059C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083005A0:: @ 83005A0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083005A4:: @ 83005A4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFD6C
+
+ .align 2
+gUnknown_083005AC:: @ 83005AC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFD74
+
+ .align 2
+gUnknown_083005B4:: @ 83005B4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFD7C
+ .4byte gUnknown_082FFD84
+
+ .align 2
+gUnknown_083005C0:: @ 83005C0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083005C4:: @ 83005C4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083005C8:: @ 83005C8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFD8C
+ .4byte gUnknown_082FFDA0
+
+ .align 2
+gUnknown_083005D4:: @ 83005D4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083005D8:: @ 83005D8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083005DC:: @ 83005DC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_082FFDC4
+
+ .align 2
+gUnknown_083005E4:: @ 83005E4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083005E8:: @ 83005E8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083005EC:: @ 83005EC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083005F0:: @ 83005F0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083005F4:: @ 83005F4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083005F8:: @ 83005F8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083005FC:: @ 83005FC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300600:: @ 8300600
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300604:: @ 8300604
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300608:: @ 8300608
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830060C:: @ 830060C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300610:: @ 8300610
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300614:: @ 8300614
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300618:: @ 8300618
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830061C:: @ 830061C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300620:: @ 8300620
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300624:: @ 8300624
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300628:: @ 8300628
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830062C:: @ 830062C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300630:: @ 8300630
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300634:: @ 8300634
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300638:: @ 8300638
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830063C:: @ 830063C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300640:: @ 8300640
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300644:: @ 8300644
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300648:: @ 8300648
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830064C:: @ 830064C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300650:: @ 8300650
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08300654:: @ 8300654
+ .4byte gAnimCmd_General_Frame0
+
+ .4byte gUnknown_082FFDCC
+ .4byte gUnknown_082FFDD0
+ .4byte gUnknown_082FFDD4
+ .4byte gUnknown_082FFDD8
+ .4byte gUnknown_082FFDDC
+ .4byte gUnknown_082FFDE0
+ .4byte gUnknown_082FFDE4
+ .4byte gUnknown_082FFDE8
+ .4byte gUnknown_082FFDEC
+ .4byte gUnknown_082FFDF0
+ .4byte gUnknown_082FFDF4
+ .4byte gUnknown_082FFDF8
+ .4byte gUnknown_082FFDFC
+ .4byte gUnknown_082FFE00
+ .4byte gUnknown_082FFE04
+ .4byte gUnknown_082FFE08
+ .4byte gUnknown_082FFE0C
+ .4byte gUnknown_082FFE10
+ .4byte gUnknown_082FFE14
+ .4byte gUnknown_082FFE18
+ .4byte gUnknown_082FFE1C
+ .4byte gUnknown_082FFE20
+ .4byte gUnknown_082FFE24
+ .4byte gUnknown_082FFE28
+ .4byte gUnknown_082FFE2C
+ .4byte gUnknown_082FFE30
+ .4byte gUnknown_082FFE34
+ .4byte gUnknown_082FFE38
+ .4byte gUnknown_082FFE3C
+ .4byte gUnknown_082FFE40
+ .4byte gUnknown_082FFE44
+ .4byte gUnknown_082FFE48
+ .4byte gUnknown_082FFE4C
+ .4byte gUnknown_082FFE50
+ .4byte gUnknown_082FFE54
+ .4byte gUnknown_082FFE58
+ .4byte gUnknown_082FFE5C
+ .4byte gUnknown_082FFE60
+ .4byte gUnknown_082FFE64
+ .4byte gUnknown_082FFE68
+ .4byte gUnknown_082FFE6C
+ .4byte gUnknown_082FFE70
+ .4byte gUnknown_082FFE74
+ .4byte gUnknown_082FFE78
+ .4byte gUnknown_082FFE7C
+ .4byte gUnknown_082FFE80
+ .4byte gUnknown_082FFE84
+ .4byte gUnknown_082FFE88
+ .4byte gUnknown_082FFE8C
+ .4byte gUnknown_082FFE90
+ .4byte gUnknown_082FFE94
+ .4byte gUnknown_082FFE98
+ .4byte gUnknown_082FFE9C
+ .4byte gUnknown_082FFEA0
+ .4byte gUnknown_082FFEA4
+ .4byte gUnknown_082FFEA8
+ .4byte gUnknown_082FFEAC
+ .4byte gUnknown_082FFEB0
+ .4byte gUnknown_082FFEB4
+ .4byte gUnknown_082FFEB8
+ .4byte gUnknown_082FFEBC
+ .4byte gUnknown_082FFEC0
+ .4byte gUnknown_082FFEC4
+ .4byte gUnknown_082FFEC8
+ .4byte gUnknown_082FFECC
+ .4byte gUnknown_082FFED0
+ .4byte gUnknown_082FFED4
+ .4byte gUnknown_082FFED8
+ .4byte gUnknown_082FFEDC
+ .4byte gUnknown_082FFEE0
+ .4byte gUnknown_082FFEE4
+ .4byte gUnknown_082FFEE8
+ .4byte gUnknown_082FFEEC
+ .4byte gUnknown_082FFEF0
+ .4byte gUnknown_082FFEF4
+ .4byte gUnknown_082FFEF8
+ .4byte gUnknown_082FFEFC
+ .4byte gUnknown_082FFF00
+ .4byte gUnknown_082FFF04
+ .4byte gUnknown_082FFF08
+ .4byte gUnknown_082FFF0C
+ .4byte gUnknown_082FFF10
+ .4byte gUnknown_082FFF14
+ .4byte gUnknown_082FFF18
+ .4byte gUnknown_082FFF1C
+ .4byte gUnknown_082FFF20
+ .4byte gUnknown_082FFF24
+ .4byte gUnknown_082FFF28
+ .4byte gUnknown_082FFF2C
+ .4byte gUnknown_082FFF30
+ .4byte gUnknown_082FFF34
+ .4byte gUnknown_082FFF38
+ .4byte gUnknown_082FFF3C
+ .4byte gUnknown_082FFF40
+ .4byte gUnknown_082FFF44
+ .4byte gUnknown_082FFF48
+ .4byte gUnknown_082FFF4C
+ .4byte gUnknown_082FFF50
+ .4byte gUnknown_082FFF54
+ .4byte gUnknown_082FFF58
+ .4byte gUnknown_082FFF5C
+ .4byte gUnknown_082FFF60
+ .4byte gUnknown_082FFF64
+ .4byte gUnknown_082FFF68
+ .4byte gUnknown_082FFF6C
+ .4byte gUnknown_082FFF70
+ .4byte gUnknown_082FFF74
+ .4byte gUnknown_082FFF78
+ .4byte gUnknown_082FFF7C
+ .4byte gUnknown_082FFF80
+ .4byte gUnknown_082FFF84
+ .4byte gUnknown_082FFF88
+ .4byte gUnknown_082FFF8C
+ .4byte gUnknown_082FFF90
+ .4byte gUnknown_082FFF94
+ .4byte gUnknown_082FFF98
+ .4byte gUnknown_082FFF9C
+ .4byte gUnknown_082FFFA0
+ .4byte gUnknown_082FFFA4
+ .4byte gUnknown_082FFFA8
+ .4byte gUnknown_082FFFAC
+ .4byte gUnknown_082FFFB0
+ .4byte gUnknown_082FFFB4
+ .4byte gUnknown_082FFFB8
+ .4byte gUnknown_082FFFBC
+ .4byte gUnknown_082FFFC0
+ .4byte gUnknown_082FFFC4
+ .4byte gUnknown_082FFFC8
+ .4byte gUnknown_082FFFCC
+ .4byte gUnknown_082FFFD0
+ .4byte gUnknown_082FFFD4
+ .4byte gUnknown_082FFFD8
+ .4byte gUnknown_082FFFDC
+ .4byte gUnknown_082FFFE0
+ .4byte gUnknown_082FFFE4
+ .4byte gUnknown_082FFFE8
+ .4byte gUnknown_082FFFEC
+ .4byte gUnknown_082FFFF0
+ .4byte gUnknown_082FFFF4
+ .4byte gUnknown_082FFFF8
+ .4byte gUnknown_082FFFFC
+ .4byte gUnknown_08300000
+ .4byte gUnknown_08300004
+ .4byte gUnknown_08300008
+ .4byte gUnknown_0830000C
+ .4byte gUnknown_08300010
+ .4byte gUnknown_08300014
+ .4byte gUnknown_08300018
+ .4byte gUnknown_0830001C
+ .4byte gUnknown_08300020
+ .4byte gUnknown_08300024
+ .4byte gUnknown_08300028
+ .4byte gUnknown_0830002C
+ .4byte gUnknown_08300030
+ .4byte gUnknown_08300034
+ .4byte gUnknown_08300038
+ .4byte gUnknown_0830003C
+ .4byte gUnknown_08300040
+ .4byte gUnknown_08300044
+ .4byte gUnknown_08300048
+ .4byte gUnknown_0830004C
+ .4byte gUnknown_08300050
+ .4byte gUnknown_08300054
+ .4byte gUnknown_08300058
+ .4byte gUnknown_0830005C
+ .4byte gUnknown_08300060
+ .4byte gUnknown_08300064
+ .4byte gUnknown_08300068
+ .4byte gUnknown_0830006C
+ .4byte gUnknown_08300070
+ .4byte gUnknown_08300074
+ .4byte gUnknown_08300078
+ .4byte gUnknown_0830007C
+ .4byte gUnknown_08300080
+ .4byte gUnknown_08300084
+ .4byte gUnknown_08300088
+ .4byte gUnknown_0830008C
+ .4byte gUnknown_08300090
+ .4byte gUnknown_08300094
+ .4byte gUnknown_08300098
+ .4byte gUnknown_0830009C
+ .4byte gUnknown_083000A0
+ .4byte gUnknown_083000A4
+ .4byte gUnknown_083000A8
+ .4byte gUnknown_083000AC
+ .4byte gUnknown_083000B0
+ .4byte gUnknown_083000B4
+ .4byte gUnknown_083000B8
+ .4byte gUnknown_083000BC
+ .4byte gUnknown_083000C0
+ .4byte gUnknown_083000C4
+ .4byte gUnknown_083000C8
+ .4byte gUnknown_083000CC
+ .4byte gUnknown_083000D0
+ .4byte gUnknown_083000D4
+ .4byte gUnknown_083000D8
+ .4byte gUnknown_083000DC
+ .4byte gUnknown_083000E0
+ .4byte gUnknown_083000E4
+ .4byte gUnknown_083000E8
+ .4byte gUnknown_083000EC
+ .4byte gUnknown_083000F0
+ .4byte gUnknown_083000F4
+ .4byte gUnknown_083000F8
+ .4byte gUnknown_083000FC
+ .4byte gUnknown_08300100
+ .4byte gUnknown_08300104
+ .4byte gUnknown_08300108
+ .4byte gUnknown_0830010C
+ .4byte gUnknown_08300110
+ .4byte gUnknown_08300114
+ .4byte gUnknown_08300118
+ .4byte gUnknown_0830011C
+ .4byte gUnknown_08300120
+ .4byte gUnknown_08300124
+ .4byte gUnknown_08300128
+ .4byte gUnknown_0830012C
+ .4byte gUnknown_08300130
+ .4byte gUnknown_08300134
+ .4byte gUnknown_08300138
+ .4byte gUnknown_0830013C
+ .4byte gUnknown_08300140
+ .4byte gUnknown_08300144
+ .4byte gUnknown_08300148
+ .4byte gUnknown_0830014C
+ .4byte gUnknown_08300150
+ .4byte gUnknown_08300154
+ .4byte gUnknown_08300158
+ .4byte gUnknown_0830015C
+ .4byte gUnknown_08300160
+ .4byte gUnknown_08300164
+ .4byte gUnknown_08300168
+ .4byte gUnknown_0830016C
+ .4byte gUnknown_08300170
+ .4byte gUnknown_08300174
+ .4byte gUnknown_08300178
+ .4byte gUnknown_0830017C
+ .4byte gUnknown_08300180
+ .4byte gUnknown_08300184
+ .4byte gUnknown_08300188
+ .4byte gUnknown_0830018C
+ .4byte gUnknown_08300190
+ .4byte gUnknown_08300194
+ .4byte gUnknown_08300198
+ .4byte gUnknown_0830019C
+ .4byte gUnknown_083001A0
+ .4byte gUnknown_083001A4
+ .4byte gUnknown_083001A8
+ .4byte gUnknown_083001AC
+ .4byte gUnknown_083001B0
+ .4byte gUnknown_083001B4
+ .4byte gUnknown_083001B8
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001BC
+ .4byte gUnknown_083001C0
+ .4byte gUnknown_083001C4
+ .4byte gUnknown_083001C8
+ .4byte gUnknown_083001CC
+ .4byte gUnknown_083001D0
+ .4byte gUnknown_083001D4
+ .4byte gUnknown_083001E8
+ .4byte gUnknown_083001EC
+ .4byte gUnknown_083001FC
+ .4byte gUnknown_08300200
+ .4byte gUnknown_0830020C
+ .4byte gUnknown_08300214
+ .4byte gUnknown_0830021C
+ .4byte gUnknown_08300224
+ .4byte gUnknown_08300230
+ .4byte gUnknown_0830023C
+ .4byte gUnknown_08300248
+ .4byte gUnknown_08300254
+ .4byte gUnknown_08300260
+ .4byte gUnknown_08300264
+ .4byte gUnknown_0830026C
+ .4byte gUnknown_08300278
+ .4byte gUnknown_08300280
+ .4byte gUnknown_08300288
+ .4byte gUnknown_08300294
+ .4byte gUnknown_08300298
+ .4byte gUnknown_0830029C
+ .4byte gUnknown_083002A0
+ .4byte gUnknown_083002A8
+ .4byte gUnknown_083002B0
+ .4byte gUnknown_083002B8
+ .4byte gUnknown_083002C0
+ .4byte gUnknown_083002C4
+ .4byte gUnknown_083002CC
+ .4byte gUnknown_083002D8
+ .4byte gUnknown_083002E4
+ .4byte gUnknown_083002F0
+ .4byte gUnknown_08300304
+ .4byte gUnknown_08300308
+ .4byte gUnknown_08300310
+ .4byte gUnknown_08300318
+ .4byte gUnknown_0830032C
+ .4byte gUnknown_08300334
+ .4byte gUnknown_0830033C
+ .4byte gUnknown_08300344
+ .4byte gUnknown_08300348
+ .4byte gUnknown_08300354
+ .4byte gUnknown_08300358
+ .4byte gUnknown_0830035C
+ .4byte gUnknown_08300368
+ .4byte gUnknown_0830036C
+ .4byte gUnknown_08300370
+ .4byte gUnknown_0830037C
+ .4byte gUnknown_08300388
+ .4byte gUnknown_08300394
+ .4byte gUnknown_083003A0
+ .4byte gUnknown_083003A8
+ .4byte gUnknown_083003B0
+ .4byte gUnknown_083003B8
+ .4byte gUnknown_083003C0
+ .4byte gUnknown_083003C8
+ .4byte gUnknown_083003D4
+ .4byte gUnknown_083003DC
+ .4byte gUnknown_083003E8
+ .4byte gUnknown_083003F0
+ .4byte gUnknown_083003F8
+ .4byte gUnknown_08300400
+ .4byte gUnknown_0830040C
+ .4byte gUnknown_08300410
+ .4byte gUnknown_08300414
+ .4byte gUnknown_08300418
+ .4byte gUnknown_0830041C
+ .4byte gUnknown_08300420
+ .4byte gUnknown_08300424
+ .4byte gUnknown_08300438
+ .4byte gUnknown_08300444
+ .4byte gUnknown_0830044C
+ .4byte gUnknown_08300454
+ .4byte gUnknown_0830045C
+ .4byte gUnknown_08300464
+ .4byte gUnknown_0830046C
+ .4byte gUnknown_08300474
+ .4byte gUnknown_08300480
+ .4byte gUnknown_08300488
+ .4byte gUnknown_08300494
+ .4byte gUnknown_083004A0
+ .4byte gUnknown_083004AC
+ .4byte gUnknown_083004B0
+ .4byte gUnknown_083004B8
+ .4byte gUnknown_083004C0
+ .4byte gUnknown_083004C8
+ .4byte gUnknown_083004D0
+ .4byte gUnknown_083004D8
+ .4byte gUnknown_083004E0
+ .4byte gUnknown_083004E4
+ .4byte gUnknown_083004E8
+ .4byte gUnknown_083004EC
+ .4byte gUnknown_083004F4
+ .4byte gUnknown_083004F8
+ .4byte gUnknown_083004FC
+ .4byte gUnknown_08300504
+ .4byte gUnknown_08300510
+ .4byte gUnknown_08300518
+ .4byte gUnknown_0830051C
+ .4byte gUnknown_08300520
+ .4byte gUnknown_08300524
+ .4byte gUnknown_0830052C
+ .4byte gUnknown_08300534
+ .4byte gUnknown_0830053C
+ .4byte gUnknown_08300550
+ .4byte gUnknown_08300558
+ .4byte gUnknown_08300560
+ .4byte gUnknown_08300564
+ .4byte gUnknown_08300568
+ .4byte gUnknown_0830056C
+ .4byte gUnknown_08300570
+ .4byte gUnknown_08300574
+ .4byte gUnknown_08300578
+ .4byte gUnknown_0830057C
+ .4byte gUnknown_08300588
+ .4byte gUnknown_0830058C
+ .4byte gUnknown_08300598
+ .4byte gUnknown_0830059C
+ .4byte gUnknown_083005A0
+ .4byte gUnknown_083005A4
+ .4byte gUnknown_083005AC
+ .4byte gUnknown_083005B4
+ .4byte gUnknown_083005C0
+ .4byte gUnknown_083005C4
+ .4byte gUnknown_083005C8
+ .4byte gUnknown_083005D4
+ .4byte gUnknown_083005D8
+ .4byte gUnknown_083005DC
+ .4byte gUnknown_083005E4
+ .4byte gUnknown_083005E8
+ .4byte gUnknown_083005EC
+ .4byte gUnknown_083005EC
+ .4byte gUnknown_083005F0
+ .4byte gUnknown_083005F4
+ .4byte gUnknown_083005F8
+ .4byte gUnknown_083005FC
+ .4byte gUnknown_08300600
+ .4byte gUnknown_08300604
+ .4byte gUnknown_08300608
+ .4byte gUnknown_0830060C
+ .4byte gUnknown_08300610
+ .4byte gUnknown_08300614
+ .4byte gUnknown_08300618
+ .4byte gUnknown_0830061C
+ .4byte gUnknown_08300620
+ .4byte gUnknown_08300624
+ .4byte gUnknown_08300628
+ .4byte gUnknown_0830062C
+ .4byte gUnknown_08300630
+ .4byte gUnknown_08300634
+ .4byte gUnknown_08300638
+ .4byte gUnknown_0830063C
+ .4byte gUnknown_08300640
+ .4byte gUnknown_08300644
+ .4byte gUnknown_08300648
+ .4byte gUnknown_0830064C
+ .4byte gUnknown_08300650
+ .4byte gUnknown_08300654
+
+ .align 2
gMonFrontPicCoords:: @ 8300D38
- .incbin "baserom.gba", 0x300d38, 0x6e0
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x45, 0x0e, 0x00, 0x00
+ .byte 0x56, 0x0a, 0x00, 0x00
+ .byte 0x88, 0x03, 0x00, 0x00
+ .byte 0x55, 0x0c, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x65, 0x0d, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x45, 0x10, 0x00, 0x00
+ .byte 0x54, 0x14, 0x00, 0x00
+ .byte 0x76, 0x09, 0x00, 0x00
+ .byte 0x54, 0x12, 0x00, 0x00
+ .byte 0x45, 0x0e, 0x00, 0x00
+ .byte 0x86, 0x09, 0x00, 0x00
+ .byte 0x65, 0x0d, 0x00, 0x00
+ .byte 0x67, 0x0b, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x44, 0x10, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x45, 0x0f, 0x00, 0x00
+ .byte 0x78, 0x00, 0x00, 0x00
+ .byte 0x65, 0x0c, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x67, 0x09, 0x00, 0x00
+ .byte 0x67, 0x04, 0x00, 0x00
+ .byte 0x55, 0x0e, 0x00, 0x00
+ .byte 0x76, 0x09, 0x00, 0x00
+ .byte 0x45, 0x0f, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x78, 0x03, 0x00, 0x00
+ .byte 0x55, 0x0c, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x78, 0x02, 0x00, 0x00
+ .byte 0x55, 0x10, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x65, 0x0c, 0x00, 0x00
+ .byte 0x88, 0x03, 0x00, 0x00
+ .byte 0x45, 0x10, 0x00, 0x00
+ .byte 0x67, 0x08, 0x00, 0x00
+ .byte 0x67, 0x06, 0x00, 0x00
+ .byte 0x88, 0x03, 0x00, 0x00
+ .byte 0x45, 0x0f, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x77, 0x06, 0x00, 0x00
+ .byte 0x55, 0x0f, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x54, 0x12, 0x00, 0x00
+ .byte 0x75, 0x0d, 0x00, 0x00
+ .byte 0x55, 0x0c, 0x00, 0x00
+ .byte 0x77, 0x07, 0x00, 0x00
+ .byte 0x56, 0x09, 0x00, 0x00
+ .byte 0x78, 0x02, 0x00, 0x00
+ .byte 0x65, 0x0e, 0x00, 0x00
+ .byte 0x77, 0x07, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x74, 0x13, 0x00, 0x00
+ .byte 0x76, 0x0a, 0x00, 0x00
+ .byte 0x76, 0x08, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x77, 0x05, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x56, 0x0b, 0x00, 0x00
+ .byte 0x67, 0x06, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x65, 0x0f, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x77, 0x05, 0x00, 0x00
+ .byte 0x46, 0x09, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x54, 0x12, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x77, 0x05, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x43, 0x15, 0x00, 0x00
+ .byte 0x76, 0x08, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x57, 0x05, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x76, 0x0a, 0x00, 0x00
+ .byte 0x87, 0x07, 0x00, 0x00
+ .byte 0x65, 0x0c, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x55, 0x10, 0x00, 0x00
+ .byte 0x87, 0x05, 0x00, 0x00
+ .byte 0x77, 0x06, 0x00, 0x00
+ .byte 0x77, 0x05, 0x00, 0x00
+ .byte 0x77, 0x05, 0x00, 0x00
+ .byte 0x78, 0x02, 0x00, 0x00
+ .byte 0x77, 0x07, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x65, 0x0d, 0x00, 0x00
+ .byte 0x88, 0x03, 0x00, 0x00
+ .byte 0x44, 0x13, 0x00, 0x00
+ .byte 0x55, 0x0e, 0x00, 0x00
+ .byte 0x87, 0x07, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x55, 0x0f, 0x00, 0x00
+ .byte 0x76, 0x0b, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x67, 0x04, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x76, 0x09, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x76, 0x09, 0x00, 0x00
+ .byte 0x67, 0x07, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x45, 0x0f, 0x00, 0x00
+ .byte 0x67, 0x07, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x77, 0x06, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x78, 0x02, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x78, 0x00, 0x00, 0x00
+ .byte 0x67, 0x06, 0x00, 0x00
+ .byte 0x88, 0x08, 0x00, 0x00
+ .byte 0x85, 0x0d, 0x00, 0x00
+ .byte 0x54, 0x11, 0x00, 0x00
+ .byte 0x56, 0x09, 0x00, 0x00
+ .byte 0x67, 0x06, 0x00, 0x00
+ .byte 0x76, 0x09, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x55, 0x0d, 0x00, 0x00
+ .byte 0x45, 0x0f, 0x00, 0x00
+ .byte 0x67, 0x07, 0x00, 0x00
+ .byte 0x54, 0x11, 0x00, 0x00
+ .byte 0x88, 0x03, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x87, 0x05, 0x00, 0x00
+ .byte 0x88, 0x03, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x75, 0x0e, 0x00, 0x00
+ .byte 0x87, 0x06, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x55, 0x0d, 0x00, 0x00
+ .byte 0x75, 0x0d, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x55, 0x0e, 0x00, 0x00
+ .byte 0x76, 0x08, 0x00, 0x00
+ .byte 0x78, 0x00, 0x00, 0x00
+ .byte 0x55, 0x0f, 0x00, 0x00
+ .byte 0x67, 0x06, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x47, 0x04, 0x00, 0x00
+ .byte 0x67, 0x07, 0x00, 0x00
+ .byte 0x55, 0x0d, 0x00, 0x00
+ .byte 0x58, 0x03, 0x00, 0x00
+ .byte 0x56, 0x0c, 0x00, 0x00
+ .byte 0x67, 0x04, 0x00, 0x00
+ .byte 0x54, 0x13, 0x00, 0x00
+ .byte 0x87, 0x05, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x75, 0x10, 0x00, 0x00
+ .byte 0x87, 0x0b, 0x00, 0x00
+ .byte 0x45, 0x0c, 0x00, 0x00
+ .byte 0x44, 0x14, 0x00, 0x00
+ .byte 0x44, 0x12, 0x00, 0x00
+ .byte 0x34, 0x14, 0x00, 0x00
+ .byte 0x46, 0x09, 0x00, 0x00
+ .byte 0x44, 0x14, 0x00, 0x00
+ .byte 0x47, 0x07, 0x00, 0x00
+ .byte 0x55, 0x10, 0x00, 0x00
+ .byte 0x56, 0x0a, 0x00, 0x00
+ .byte 0x77, 0x05, 0x00, 0x00
+ .byte 0x45, 0x0e, 0x00, 0x00
+ .byte 0x65, 0x0e, 0x00, 0x00
+ .byte 0x76, 0x09, 0x00, 0x00
+ .byte 0x67, 0x06, 0x00, 0x00
+ .byte 0x67, 0x06, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x55, 0x0f, 0x00, 0x00
+ .byte 0x77, 0x07, 0x00, 0x00
+ .byte 0x58, 0x03, 0x00, 0x00
+ .byte 0x44, 0x10, 0x00, 0x00
+ .byte 0x56, 0x08, 0x00, 0x00
+ .byte 0x86, 0x0a, 0x00, 0x00
+ .byte 0x54, 0x10, 0x00, 0x00
+ .byte 0x77, 0x07, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x67, 0x08, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x58, 0x01, 0x00, 0x00
+ .byte 0x55, 0x0c, 0x00, 0x00
+ .byte 0x35, 0x0f, 0x00, 0x00
+ .byte 0x77, 0x06, 0x00, 0x00
+ .byte 0x88, 0x03, 0x00, 0x00
+ .byte 0x56, 0x0a, 0x00, 0x00
+ .byte 0x76, 0x09, 0x00, 0x00
+ .byte 0x74, 0x11, 0x00, 0x00
+ .byte 0x78, 0x03, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x55, 0x0d, 0x00, 0x00
+ .byte 0x57, 0x06, 0x00, 0x00
+ .byte 0x56, 0x0a, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x88, 0x03, 0x00, 0x00
+ .byte 0x67, 0x05, 0x00, 0x00
+ .byte 0x45, 0x0d, 0x00, 0x00
+ .byte 0x78, 0x01, 0x00, 0x00
+ .byte 0x45, 0x0d, 0x00, 0x00
+ .byte 0x57, 0x0d, 0x00, 0x00
+ .byte 0x43, 0x14, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x65, 0x0c, 0x00, 0x00
+ .byte 0x55, 0x0e, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x56, 0x08, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x56, 0x0b, 0x00, 0x00
+ .byte 0x77, 0x05, 0x00, 0x00
+ .byte 0x78, 0x04, 0x00, 0x00
+ .byte 0x54, 0x10, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x55, 0x0f, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x77, 0x06, 0x00, 0x00
+ .byte 0x46, 0x09, 0x00, 0x00
+ .byte 0x67, 0x05, 0x00, 0x00
+ .byte 0x35, 0x0f, 0x00, 0x00
+ .byte 0x76, 0x0a, 0x00, 0x00
+ .byte 0x45, 0x0d, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x77, 0x06, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x46, 0x09, 0x00, 0x00
+ .byte 0x56, 0x09, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x55, 0x0e, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x56, 0x08, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x56, 0x0c, 0x00, 0x00
+ .byte 0x67, 0x06, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x55, 0x0c, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x85, 0x0f, 0x00, 0x00
+ .byte 0x78, 0x03, 0x00, 0x00
+ .byte 0x45, 0x0e, 0x00, 0x00
+ .byte 0x75, 0x11, 0x00, 0x00
+ .byte 0x86, 0x09, 0x00, 0x00
+ .byte 0x74, 0x10, 0x00, 0x00
+ .byte 0x86, 0x0f, 0x00, 0x00
+ .byte 0x65, 0x0e, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x46, 0x10, 0x00, 0x00
+ .byte 0x56, 0x08, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x74, 0x12, 0x00, 0x00
+ .byte 0x86, 0x0a, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x64, 0x10, 0x00, 0x00
+ .byte 0x87, 0x06, 0x00, 0x00
+ .byte 0x54, 0x10, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x68, 0x08, 0x00, 0x00
+ .byte 0x84, 0x18, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x65, 0x0f, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x75, 0x0f, 0x00, 0x00
+ .byte 0x87, 0x0a, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x67, 0x07, 0x00, 0x00
+ .byte 0x55, 0x10, 0x00, 0x00
+ .byte 0x78, 0x06, 0x00, 0x00
+ .byte 0x56, 0x0c, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x46, 0x0b, 0x00, 0x00
+ .byte 0x76, 0x09, 0x00, 0x00
+ .byte 0x46, 0x18, 0x00, 0x00
+ .byte 0x66, 0x0c, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x46, 0x0d, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x67, 0x06, 0x00, 0x00
+ .byte 0x78, 0x03, 0x00, 0x00
+ .byte 0x54, 0x10, 0x00, 0x00
+ .byte 0x86, 0x0c, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x65, 0x0c, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x64, 0x12, 0x00, 0x00
+ .byte 0x67, 0x04, 0x00, 0x00
+ .byte 0x65, 0x0f, 0x00, 0x00
+ .byte 0x87, 0x09, 0x00, 0x00
+ .byte 0x65, 0x10, 0x00, 0x00
+ .byte 0x86, 0x0a, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x74, 0x10, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x56, 0x0b, 0x00, 0x00
+ .byte 0x76, 0x0a, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x55, 0x0f, 0x00, 0x00
+ .byte 0x46, 0x09, 0x00, 0x00
+ .byte 0x77, 0x05, 0x00, 0x00
+ .byte 0x56, 0x0e, 0x00, 0x00
+ .byte 0x66, 0x0c, 0x00, 0x00
+ .byte 0x76, 0x08, 0x00, 0x00
+ .byte 0x65, 0x0c, 0x00, 0x00
+ .byte 0x68, 0x01, 0x00, 0x00
+ .byte 0x76, 0x11, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x55, 0x0c, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x77, 0x05, 0x00, 0x00
+ .byte 0x76, 0x08, 0x00, 0x00
+ .byte 0x74, 0x12, 0x00, 0x00
+ .byte 0x78, 0x00, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x55, 0x12, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x55, 0x0e, 0x00, 0x00
+ .byte 0x78, 0x03, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x55, 0x0e, 0x00, 0x00
+ .byte 0x78, 0x03, 0x00, 0x00
+ .byte 0x86, 0x0b, 0x00, 0x00
+ .byte 0x68, 0x00, 0x00, 0x00
+ .byte 0x56, 0x0e, 0x00, 0x00
+ .byte 0x55, 0x0c, 0x00, 0x00
+ .byte 0x77, 0x08, 0x00, 0x00
+ .byte 0x87, 0x05, 0x00, 0x00
+ .byte 0x77, 0x0b, 0x00, 0x00
+ .byte 0x43, 0x14, 0x00, 0x00
+ .byte 0x75, 0x0d, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x34, 0x11, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x56, 0x08, 0x00, 0x00
+ .byte 0x67, 0x07, 0x00, 0x00
+ .byte 0x78, 0x00, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x35, 0x0f, 0x00, 0x00
+ .byte 0x47, 0x06, 0x00, 0x00
+ .byte 0x78, 0x01, 0x00, 0x00
+ .byte 0x56, 0x0b, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x55, 0x0f, 0x00, 0x00
+ .byte 0x87, 0x07, 0x00, 0x00
+ .byte 0x87, 0x06, 0x00, 0x00
+ .byte 0x78, 0x04, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x03, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x66, 0x0d, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x37, 0x06, 0x00, 0x00
+ .byte 0x33, 0x14, 0x00, 0x00
+ .byte 0x34, 0x10, 0x00, 0x00
+ .byte 0x44, 0x10, 0x00, 0x00
+ .byte 0x44, 0x10, 0x00, 0x00
+ .byte 0x44, 0x11, 0x00, 0x00
+ .byte 0x44, 0x11, 0x00, 0x00
+ .byte 0x35, 0x0e, 0x00, 0x00
+ .byte 0x44, 0x10, 0x00, 0x00
+ .byte 0x34, 0x10, 0x00, 0x00
+ .byte 0x34, 0x11, 0x00, 0x00
+ .byte 0x44, 0x11, 0x00, 0x00
+ .byte 0x34, 0x13, 0x00, 0x00
+ .byte 0x44, 0x13, 0x00, 0x00
+ .byte 0x43, 0x14, 0x00, 0x00
+ .byte 0x44, 0x10, 0x00, 0x00
+ .byte 0x34, 0x13, 0x00, 0x00
+ .byte 0x43, 0x15, 0x00, 0x00
+ .byte 0x34, 0x13, 0x00, 0x00
+ .byte 0x45, 0x0c, 0x00, 0x00
+ .byte 0x34, 0x12, 0x00, 0x00
+ .byte 0x44, 0x12, 0x00, 0x00
+ .byte 0x44, 0x12, 0x00, 0x00
+ .byte 0x44, 0x13, 0x00, 0x00
+ .byte 0x33, 0x15, 0x00, 0x00
+ .byte 0x34, 0x11, 0x00, 0x00
+ .byte 0x34, 0x10, 0x00, 0x00
+ .byte 0x35, 0x0f, 0x00, 0x00
+ .byte 0x35, 0x0d, 0x00, 0x00
@ 8301418
- .include "data/graphics/pokemon/mon_still_front_pic_table.inc"
+ .include "data/graphics/pokemon/still_front_pic_table.inc"
+ .align 2
gUnknown_083021D8:: @ 83021D8
- .incbin "baserom.gba", 0x3021d8, 0x6e0
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x64, 0x10, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x87, 0x07, 0x00, 0x00
+ .byte 0x65, 0x0e, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x65, 0x0e, 0x00, 0x00
+ .byte 0x76, 0x0a, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x55, 0x0f, 0x00, 0x00
+ .byte 0x65, 0x0c, 0x00, 0x00
+ .byte 0x87, 0x06, 0x00, 0x00
+ .byte 0x56, 0x0b, 0x00, 0x00
+ .byte 0x46, 0x0a, 0x00, 0x00
+ .byte 0x86, 0x09, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x85, 0x0c, 0x00, 0x00
+ .byte 0x78, 0x02, 0x00, 0x00
+ .byte 0x65, 0x0d, 0x00, 0x00
+ .byte 0x75, 0x0d, 0x00, 0x00
+ .byte 0x65, 0x0c, 0x00, 0x00
+ .byte 0x87, 0x05, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x77, 0x07, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x65, 0x0d, 0x00, 0x00
+ .byte 0x86, 0x09, 0x00, 0x00
+ .byte 0x55, 0x0c, 0x00, 0x00
+ .byte 0x86, 0x0a, 0x00, 0x00
+ .byte 0x77, 0x06, 0x00, 0x00
+ .byte 0x56, 0x08, 0x00, 0x00
+ .byte 0x86, 0x09, 0x00, 0x00
+ .byte 0x88, 0x03, 0x00, 0x00
+ .byte 0x65, 0x0d, 0x00, 0x00
+ .byte 0x76, 0x0a, 0x00, 0x00
+ .byte 0x76, 0x09, 0x00, 0x00
+ .byte 0x77, 0x05, 0x00, 0x00
+ .byte 0x65, 0x0d, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x76, 0x0b, 0x00, 0x00
+ .byte 0x87, 0x06, 0x00, 0x00
+ .byte 0x56, 0x0b, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x87, 0x07, 0x00, 0x00
+ .byte 0x63, 0x14, 0x00, 0x00
+ .byte 0x87, 0x07, 0x00, 0x00
+ .byte 0x77, 0x06, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x54, 0x10, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x65, 0x0c, 0x00, 0x00
+ .byte 0x87, 0x07, 0x00, 0x00
+ .byte 0x67, 0x07, 0x00, 0x00
+ .byte 0x77, 0x05, 0x00, 0x00
+ .byte 0x76, 0x0b, 0x00, 0x00
+ .byte 0x77, 0x07, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x87, 0x06, 0x00, 0x00
+ .byte 0x74, 0x10, 0x00, 0x00
+ .byte 0x65, 0x0c, 0x00, 0x00
+ .byte 0x86, 0x0b, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x76, 0x08, 0x00, 0x00
+ .byte 0x67, 0x05, 0x00, 0x00
+ .byte 0x65, 0x0c, 0x00, 0x00
+ .byte 0x76, 0x09, 0x00, 0x00
+ .byte 0x67, 0x04, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x87, 0x06, 0x00, 0x00
+ .byte 0x56, 0x0a, 0x00, 0x00
+ .byte 0x86, 0x0b, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x75, 0x0c, 0x00, 0x00
+ .byte 0x84, 0x10, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x87, 0x05, 0x00, 0x00
+ .byte 0x85, 0x0e, 0x00, 0x00
+ .byte 0x86, 0x0a, 0x00, 0x00
+ .byte 0x43, 0x14, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x77, 0x05, 0x00, 0x00
+ .byte 0x75, 0x0c, 0x00, 0x00
+ .byte 0x87, 0x05, 0x00, 0x00
+ .byte 0x76, 0x0b, 0x00, 0x00
+ .byte 0x87, 0x06, 0x00, 0x00
+ .byte 0x85, 0x0e, 0x00, 0x00
+ .byte 0x76, 0x08, 0x00, 0x00
+ .byte 0x76, 0x09, 0x00, 0x00
+ .byte 0x78, 0x00, 0x00, 0x00
+ .byte 0x65, 0x0d, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x55, 0x0e, 0x00, 0x00
+ .byte 0x65, 0x0d, 0x00, 0x00
+ .byte 0x65, 0x0d, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x65, 0x0c, 0x00, 0x00
+ .byte 0x65, 0x0c, 0x00, 0x00
+ .byte 0x65, 0x0e, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x77, 0x06, 0x00, 0x00
+ .byte 0x85, 0x0c, 0x00, 0x00
+ .byte 0x88, 0x03, 0x00, 0x00
+ .byte 0x86, 0x0b, 0x00, 0x00
+ .byte 0x85, 0x0e, 0x00, 0x00
+ .byte 0x77, 0x05, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x76, 0x0b, 0x00, 0x00
+ .byte 0x65, 0x0d, 0x00, 0x00
+ .byte 0x85, 0x0e, 0x00, 0x00
+ .byte 0x85, 0x0d, 0x00, 0x00
+ .byte 0x77, 0x07, 0x00, 0x00
+ .byte 0x86, 0x0a, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x85, 0x0d, 0x00, 0x00
+ .byte 0x76, 0x09, 0x00, 0x00
+ .byte 0x78, 0x00, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x54, 0x11, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x87, 0x06, 0x00, 0x00
+ .byte 0x67, 0x05, 0x00, 0x00
+ .byte 0x65, 0x0d, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x65, 0x0d, 0x00, 0x00
+ .byte 0x77, 0x05, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x86, 0x0b, 0x00, 0x00
+ .byte 0x65, 0x0c, 0x00, 0x00
+ .byte 0x76, 0x0b, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x78, 0x00, 0x00, 0x00
+ .byte 0x87, 0x06, 0x00, 0x00
+ .byte 0x78, 0x01, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x56, 0x0a, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x78, 0x00, 0x00, 0x00
+ .byte 0x76, 0x09, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x67, 0x07, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x67, 0x05, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x68, 0x03, 0x00, 0x00
+ .byte 0x76, 0x0b, 0x00, 0x00
+ .byte 0x77, 0x07, 0x00, 0x00
+ .byte 0x73, 0x15, 0x00, 0x00
+ .byte 0x86, 0x0b, 0x00, 0x00
+ .byte 0x87, 0x05, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x65, 0x0f, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x54, 0x10, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x54, 0x11, 0x00, 0x00
+ .byte 0x76, 0x08, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x75, 0x0c, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x65, 0x0d, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x56, 0x0a, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x85, 0x0f, 0x00, 0x00
+ .byte 0x76, 0x08, 0x00, 0x00
+ .byte 0x76, 0x0b, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x66, 0x09, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x36, 0x08, 0x00, 0x00
+ .byte 0x75, 0x0c, 0x00, 0x00
+ .byte 0x87, 0x05, 0x00, 0x00
+ .byte 0x65, 0x0f, 0x00, 0x00
+ .byte 0x84, 0x10, 0x00, 0x00
+ .byte 0x85, 0x0f, 0x00, 0x00
+ .byte 0x87, 0x05, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x76, 0x0a, 0x00, 0x00
+ .byte 0x87, 0x05, 0x00, 0x00
+ .byte 0x77, 0x07, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x56, 0x0b, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x88, 0x03, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x76, 0x09, 0x00, 0x00
+ .byte 0x63, 0x15, 0x00, 0x00
+ .byte 0x75, 0x0d, 0x00, 0x00
+ .byte 0x65, 0x0c, 0x00, 0x00
+ .byte 0x75, 0x0d, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x67, 0x06, 0x00, 0x00
+ .byte 0x87, 0x07, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x55, 0x0c, 0x00, 0x00
+ .byte 0x87, 0x07, 0x00, 0x00
+ .byte 0x87, 0x06, 0x00, 0x00
+ .byte 0x65, 0x0e, 0x00, 0x00
+ .byte 0x85, 0x0d, 0x00, 0x00
+ .byte 0x76, 0x0a, 0x00, 0x00
+ .byte 0x78, 0x03, 0x00, 0x00
+ .byte 0x76, 0x0a, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x87, 0x05, 0x00, 0x00
+ .byte 0x56, 0x09, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x87, 0x07, 0x00, 0x00
+ .byte 0x85, 0x0d, 0x00, 0x00
+ .byte 0x86, 0x0a, 0x00, 0x00
+ .byte 0x87, 0x06, 0x00, 0x00
+ .byte 0x88, 0x03, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x67, 0x05, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x87, 0x06, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x67, 0x05, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x77, 0x05, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x87, 0x05, 0x00, 0x00
+ .byte 0x76, 0x09, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x76, 0x0b, 0x00, 0x00
+ .byte 0x85, 0x0f, 0x00, 0x00
+ .byte 0x76, 0x0b, 0x00, 0x00
+ .byte 0x83, 0x15, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x73, 0x14, 0x00, 0x00
+ .byte 0x83, 0x14, 0x00, 0x00
+ .byte 0x75, 0x0f, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x86, 0x0a, 0x00, 0x00
+ .byte 0x86, 0x09, 0x00, 0x00
+ .byte 0x76, 0x0a, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x83, 0x14, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x77, 0x06, 0x00, 0x00
+ .byte 0x64, 0x11, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x85, 0x0d, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x85, 0x0e, 0x00, 0x00
+ .byte 0x87, 0x06, 0x00, 0x00
+ .byte 0x86, 0x0b, 0x00, 0x00
+ .byte 0x88, 0x00, 0x00, 0x00
+ .byte 0x83, 0x15, 0x00, 0x00
+ .byte 0x83, 0x16, 0x00, 0x00
+ .byte 0x86, 0x0a, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x87, 0x06, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x87, 0x07, 0x00, 0x00
+ .byte 0x85, 0x0c, 0x00, 0x00
+ .byte 0x86, 0x0a, 0x00, 0x00
+ .byte 0x76, 0x08, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x86, 0x0a, 0x00, 0x00
+ .byte 0x46, 0x0a, 0x00, 0x00
+ .byte 0x77, 0x07, 0x00, 0x00
+ .byte 0x87, 0x05, 0x00, 0x00
+ .byte 0x67, 0x07, 0x00, 0x00
+ .byte 0x68, 0x02, 0x00, 0x00
+ .byte 0x87, 0x07, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x75, 0x0e, 0x00, 0x00
+ .byte 0x74, 0x11, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x76, 0x0b, 0x00, 0x00
+ .byte 0x87, 0x07, 0x00, 0x00
+ .byte 0x84, 0x10, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x86, 0x0b, 0x00, 0x00
+ .byte 0x84, 0x13, 0x00, 0x00
+ .byte 0x64, 0x12, 0x00, 0x00
+ .byte 0x86, 0x0a, 0x00, 0x00
+ .byte 0x87, 0x06, 0x00, 0x00
+ .byte 0x85, 0x0f, 0x00, 0x00
+ .byte 0x87, 0x07, 0x00, 0x00
+ .byte 0x76, 0x0a, 0x00, 0x00
+ .byte 0x85, 0x0c, 0x00, 0x00
+ .byte 0x87, 0x05, 0x00, 0x00
+ .byte 0x87, 0x05, 0x00, 0x00
+ .byte 0x86, 0x0a, 0x00, 0x00
+ .byte 0x56, 0x0b, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x76, 0x08, 0x00, 0x00
+ .byte 0x76, 0x08, 0x00, 0x00
+ .byte 0x87, 0x04, 0x00, 0x00
+ .byte 0x76, 0x0b, 0x00, 0x00
+ .byte 0x68, 0x03, 0x00, 0x00
+ .byte 0x86, 0x09, 0x00, 0x00
+ .byte 0x87, 0x06, 0x00, 0x00
+ .byte 0x77, 0x07, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x85, 0x0f, 0x00, 0x00
+ .byte 0x86, 0x0a, 0x00, 0x00
+ .byte 0x86, 0x08, 0x00, 0x00
+ .byte 0x66, 0x0b, 0x00, 0x00
+ .byte 0x77, 0x06, 0x00, 0x00
+ .byte 0x87, 0x07, 0x00, 0x00
+ .byte 0x85, 0x0d, 0x00, 0x00
+ .byte 0x86, 0x09, 0x00, 0x00
+ .byte 0x88, 0x03, 0x00, 0x00
+ .byte 0x85, 0x0d, 0x00, 0x00
+ .byte 0x68, 0x02, 0x00, 0x00
+ .byte 0x77, 0x05, 0x00, 0x00
+ .byte 0x78, 0x03, 0x00, 0x00
+ .byte 0x77, 0x06, 0x00, 0x00
+ .byte 0x65, 0x0c, 0x00, 0x00
+ .byte 0x88, 0x03, 0x00, 0x00
+ .byte 0x88, 0x01, 0x00, 0x00
+ .byte 0x86, 0x0a, 0x00, 0x00
+ .byte 0x54, 0x11, 0x00, 0x00
+ .byte 0x84, 0x11, 0x00, 0x00
+ .byte 0x87, 0x07, 0x00, 0x00
+ .byte 0x45, 0x0d, 0x00, 0x00
+ .byte 0x76, 0x08, 0x00, 0x00
+ .byte 0x67, 0x06, 0x00, 0x00
+ .byte 0x86, 0x09, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x83, 0x17, 0x00, 0x00
+ .byte 0x77, 0x05, 0x00, 0x00
+ .byte 0x45, 0x0d, 0x00, 0x00
+ .byte 0x57, 0x06, 0x00, 0x00
+ .byte 0x77, 0x04, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x85, 0x0d, 0x00, 0x00
+ .byte 0x77, 0x06, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x84, 0x10, 0x00, 0x00
+ .byte 0x83, 0x14, 0x00, 0x00
+ .byte 0x86, 0x0a, 0x00, 0x00
+ .byte 0x85, 0x0e, 0x00, 0x00
+ .byte 0x85, 0x0e, 0x00, 0x00
+ .byte 0x84, 0x13, 0x00, 0x00
+ .byte 0x87, 0x07, 0x00, 0x00
+ .byte 0x78, 0x00, 0x00, 0x00
+ .byte 0x88, 0x02, 0x00, 0x00
+ .byte 0x88, 0x03, 0x00, 0x00
+ .byte 0x87, 0x05, 0x00, 0x00
+ .byte 0x86, 0x09, 0x00, 0x00
+ .byte 0x47, 0x07, 0x00, 0x00
+ .byte 0x36, 0x0a, 0x00, 0x00
+ .byte 0x56, 0x09, 0x00, 0x00
+ .byte 0x67, 0x06, 0x00, 0x00
+ .byte 0x56, 0x08, 0x00, 0x00
+ .byte 0x56, 0x0a, 0x00, 0x00
+ .byte 0x66, 0x0a, 0x00, 0x00
+ .byte 0x57, 0x05, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x37, 0x07, 0x00, 0x00
+ .byte 0x46, 0x09, 0x00, 0x00
+ .byte 0x57, 0x07, 0x00, 0x00
+ .byte 0x46, 0x0a, 0x00, 0x00
+ .byte 0x65, 0x0d, 0x00, 0x00
+ .byte 0x65, 0x0d, 0x00, 0x00
+ .byte 0x66, 0x08, 0x00, 0x00
+ .byte 0x46, 0x0a, 0x00, 0x00
+ .byte 0x55, 0x0f, 0x00, 0x00
+ .byte 0x45, 0x0c, 0x00, 0x00
+ .byte 0x57, 0x04, 0x00, 0x00
+ .byte 0x45, 0x0d, 0x00, 0x00
+ .byte 0x65, 0x0d, 0x00, 0x00
+ .byte 0x56, 0x0b, 0x00, 0x00
+ .byte 0x55, 0x0d, 0x00, 0x00
+ .byte 0x55, 0x0f, 0x00, 0x00
+ .byte 0x46, 0x0a, 0x00, 0x00
+ .byte 0x46, 0x0a, 0x00, 0x00
+ .byte 0x37, 0x06, 0x00, 0x00
+ .byte 0x47, 0x06, 0x00, 0x00
@ 83028B8
- .include "data/graphics/pokemon/mon_back_pic_table.inc"
+ .include "data/graphics/pokemon/back_pic_table.inc"
@ 8303678
- .include "data/graphics/pokemon/mon_palette_table.inc"
+ .include "data/graphics/pokemon/palette_table.inc"
@ 8304438
- .include "data/graphics/pokemon/mon_shiny_palette_table.inc"
+ .include "data/graphics/pokemon/shiny_palette_table.inc"
+
+gUnknown_083051F8:: @ 83051F8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083051FC:: @ 83051FC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305200:: @ 8305200
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305204:: @ 8305204
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305208:: @ 8305208
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830520C:: @ 830520C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305210:: @ 8305210
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305214:: @ 8305214
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305218:: @ 8305218
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830521C:: @ 830521C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305220:: @ 8305220
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305224:: @ 8305224
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305228:: @ 8305228
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830522C:: @ 830522C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305230:: @ 8305230
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305234:: @ 8305234
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305238:: @ 8305238
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830523C:: @ 830523C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305240:: @ 8305240
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305244:: @ 8305244
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305248:: @ 8305248
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830524C:: @ 830524C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305250:: @ 8305250
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305254:: @ 8305254
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305258:: @ 8305258
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830525C:: @ 830525C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305260:: @ 8305260
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305264:: @ 8305264
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305268:: @ 8305268
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830526C:: @ 830526C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305270:: @ 8305270
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305274:: @ 8305274
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305278:: @ 8305278
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830527C:: @ 830527C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305280:: @ 8305280
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305284:: @ 8305284
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305288:: @ 8305288
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830528C:: @ 830528C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305290:: @ 8305290
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305294:: @ 8305294
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305298:: @ 8305298
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830529C:: @ 830529C
+ .4byte gAnimCmd_General_Frame0
-@ 83051F8
- .incbin "baserom.gba", 0x3051f8, 0x174
+ .align 2
+gUnknown_083052A0:: @ 83052A0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052A4:: @ 83052A4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052A8:: @ 83052A8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052AC:: @ 83052AC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052B0:: @ 83052B0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052B4:: @ 83052B4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052B8:: @ 83052B8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052BC:: @ 83052BC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052C0:: @ 83052C0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052C4:: @ 83052C4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052C8:: @ 83052C8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052CC:: @ 83052CC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052D0:: @ 83052D0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052D4:: @ 83052D4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052D8:: @ 83052D8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052DC:: @ 83052DC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052E0:: @ 83052E0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052E4:: @ 83052E4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052E8:: @ 83052E8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052EC:: @ 83052EC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052F0:: @ 83052F0
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052F4:: @ 83052F4
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052F8:: @ 83052F8
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_083052FC:: @ 83052FC
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305300:: @ 8305300
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305304:: @ 8305304
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305308:: @ 8305308
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830530C:: @ 830530C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305310:: @ 8305310
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305314:: @ 8305314
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305318:: @ 8305318
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830531C:: @ 830531C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305320:: @ 8305320
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305324:: @ 8305324
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305328:: @ 8305328
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830532C:: @ 830532C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305330:: @ 8305330
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305334:: @ 8305334
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305338:: @ 8305338
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830533C:: @ 830533C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305340:: @ 8305340
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305344:: @ 8305344
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305348:: @ 8305348
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830534C:: @ 830534C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305350:: @ 8305350
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305354:: @ 8305354
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305358:: @ 8305358
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_0830535C:: @ 830535C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305360:: @ 8305360
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gUnknown_08305364:: @ 8305364
+ .4byte gAnimCmd_General_Frame0
+ .align 2
+gUnknown_08305368:: @ 8305368
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
gUnknown_0830536C:: @ 830536C
- .incbin "baserom.gba", 0x30536c, 0x174
+ .4byte gUnknown_083051F8
+ .4byte gUnknown_083051FC
+ .4byte gUnknown_08305200
+ .4byte gUnknown_08305204
+ .4byte gUnknown_08305208
+ .4byte gUnknown_0830520C
+ .4byte gUnknown_08305210
+ .4byte gUnknown_08305214
+ .4byte gUnknown_08305218
+ .4byte gUnknown_0830521C
+ .4byte gUnknown_08305220
+ .4byte gUnknown_08305224
+ .4byte gUnknown_08305228
+ .4byte gUnknown_0830522C
+ .4byte gUnknown_08305230
+ .4byte gUnknown_08305234
+ .4byte gUnknown_08305238
+ .4byte gUnknown_0830523C
+ .4byte gUnknown_08305240
+ .4byte gUnknown_08305244
+ .4byte gUnknown_08305248
+ .4byte gUnknown_0830524C
+ .4byte gUnknown_08305250
+ .4byte gUnknown_08305254
+ .4byte gUnknown_08305258
+ .4byte gUnknown_0830525C
+ .4byte gUnknown_08305260
+ .4byte gUnknown_08305264
+ .4byte gUnknown_08305268
+ .4byte gUnknown_0830526C
+ .4byte gUnknown_08305270
+ .4byte gUnknown_08305274
+ .4byte gUnknown_08305278
+ .4byte gUnknown_0830527C
+ .4byte gUnknown_08305280
+ .4byte gUnknown_08305284
+ .4byte gUnknown_08305288
+ .4byte gUnknown_0830528C
+ .4byte gUnknown_08305290
+ .4byte gUnknown_08305294
+ .4byte gUnknown_08305298
+ .4byte gUnknown_0830529C
+ .4byte gUnknown_083052A0
+ .4byte gUnknown_083052A4
+ .4byte gUnknown_083052A8
+ .4byte gUnknown_083052AC
+ .4byte gUnknown_083052B0
+ .4byte gUnknown_083052B4
+ .4byte gUnknown_083052B8
+ .4byte gUnknown_083052BC
+ .4byte gUnknown_083052C0
+ .4byte gUnknown_083052C4
+ .4byte gUnknown_083052C8
+ .4byte gUnknown_083052CC
+ .4byte gUnknown_083052D0
+ .4byte gUnknown_083052D4
+ .4byte gUnknown_083052D8
+ .4byte gUnknown_083052DC
+ .4byte gUnknown_083052E0
+ .4byte gUnknown_083052E4
+ .4byte gUnknown_083052E8
+ .4byte gUnknown_083052EC
+ .4byte gUnknown_083052F0
+ .4byte gUnknown_083052F4
+ .4byte gUnknown_083052F8
+ .4byte gUnknown_083052FC
+ .4byte gUnknown_08305300
+ .4byte gUnknown_08305304
+ .4byte gUnknown_08305308
+ .4byte gUnknown_0830530C
+ .4byte gUnknown_08305310
+ .4byte gUnknown_08305314
+ .4byte gUnknown_08305318
+ .4byte gUnknown_0830531C
+ .4byte gUnknown_08305320
+ .4byte gUnknown_08305324
+ .4byte gUnknown_08305328
+ .4byte gUnknown_0830532C
+ .4byte gUnknown_08305330
+ .4byte gUnknown_08305334
+ .4byte gUnknown_08305338
+ .4byte gUnknown_0830533C
+ .4byte gUnknown_08305340
+ .4byte gUnknown_08305344
+ .4byte gUnknown_08305348
+ .4byte gUnknown_0830534C
+ .4byte gUnknown_08305350
+ .4byte gUnknown_08305354
+ .4byte gUnknown_08305358
+ .4byte gUnknown_0830535C
+ .4byte gUnknown_08305360
+ .4byte gUnknown_08305364
+ .4byte gUnknown_08305368
-gUnknown_083054E0:: @ 83054E0
- .incbin "baserom.gba", 0x3054e0, 0x174
+@ 83054E0
+ .include "data/graphics/trainers/front_pic_coords.inc"
@ 8305654
- .include "data/graphics/trainers/trainer_front_pic_table.inc"
+ .include "data/graphics/trainers/front_pic_table.inc"
@ 830593C
- .include "data/graphics/trainers/trainer_front_pic_palette_table.inc"
+ .include "data/graphics/trainers/front_pic_palette_table.inc"
+
+gUnknown_08305C24:: @ 8305C24
+ .2byte 0x0000, 0x0018, 0x0001, 0x0009, 0x0002, 0x0018, 0x0000, 0x0009
+ .2byte 0x0003, 0x0032, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08305C3C:: @ 8305C3C
+ .2byte 0x0000, 0x0018, 0x0001, 0x0009, 0x0002, 0x0018, 0x0000, 0x0009
+ .2byte 0x0003, 0x0032, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08305C54:: @ 8305C54
+ .2byte 0x0000, 0x0018, 0x0001, 0x0009, 0x0002, 0x0018, 0x0000, 0x0009
+ .2byte 0x0003, 0x0032, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08305C6C:: @ 8305C6C
+ .2byte 0x0001, 0x0014, 0x0002, 0x0006, 0x0003, 0x0006, 0x0004, 0x0018
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08305C84:: @ 8305C84
+ .2byte 0x0001, 0x0014, 0x0002, 0x0006, 0x0003, 0x0006, 0x0004, 0x0018
+ .2byte 0x0000, 0x0001, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08305C9C:: @ 8305C9C
+ .2byte 0x0000, 0x0018, 0x0001, 0x0009, 0x0002, 0x0018, 0x0000, 0x0009
+ .2byte 0x0003, 0x0032, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08305CB4:: @ 8305CB4
+ .2byte 0x0000, 0x0018, 0x0001, 0x0009, 0x0002, 0x0018, 0x0000, 0x0009
+ .2byte 0x0003, 0x0032, 0xffff, 0x0000
+
+ .align 2
+gUnknown_08305CCC:: @ 8305CCC
+ .4byte AnimCmd_82FF540
+ .4byte gUnknown_08305C24
+
+ .align 2
+gUnknown_08305CD4:: @ 8305CD4
+ .4byte AnimCmd_82FF540
+ .4byte gUnknown_08305C3C
+
+ .align 2
+gUnknown_08305CDC:: @ 8305CDC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_08305C6C
-@ 8305C24
- .incbin "baserom.gba", 0x305c24, 0xe8
+ .align 2
+gUnknown_08305CE4:: @ 8305CE4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gUnknown_08305C84
+
+ .align 2
+gUnknown_08305CEC:: @ 8305CEC
+ .4byte AnimCmd_82FF540
+ .4byte gUnknown_08305C9C
+ .align 2
+gUnknown_08305CF4:: @ 8305CF4
+ .4byte AnimCmd_82FF540
+ .4byte gUnknown_08305CB4
+
+ .align 2
+gUnknown_08305CFC:: @ 8305CFC
+ .4byte AnimCmd_82FF540
+ .4byte gUnknown_08305C54
+
+ .align 2
+gUnknown_08305D04:: @ 8305D04
+ .4byte AnimCmd_82FF540
+ .4byte gUnknown_08305C3C
+
+ .align 2
gUnknown_08305D0C:: @ 8305D0C
- .incbin "baserom.gba", 0x305d0c, 0x20
+ .4byte gUnknown_08305CCC
+ .4byte gUnknown_08305CD4
+ .4byte gUnknown_08305CDC
+ .4byte gUnknown_08305CE4
+ .4byte gUnknown_08305CEC
+ .4byte gUnknown_08305CF4
+ .4byte gUnknown_08305CFC
+ .4byte gUnknown_08305D04
+
-gUnknown_08305D2C:: @ 8305D2C
- .incbin "baserom.gba", 0x305d2c, 0x20
+@ 8305D2C
+ .include "data/graphics/trainers/back_pic_coords.inc"
@ 8305D4C
- .include "data/graphics/trainers/trainer_back_pic_table.inc"
+ .include "data/graphics/trainers/back_pic_table.inc"
@ 8305D8C
- .include "data/graphics/trainers/trainer_back_pic_palette_table.inc"
+ .include "data/graphics/trainers/back_pic_palette_table.inc"
-gUnknown_08305DCC:: @ 8305DCC
- .incbin "baserom.gba", 0x305dcc, 0x3ce0
+@ 8305DCC
+ .include "data/enemy_mon_elevation.inc"
-gUnknown_08309AAC:: @ 8309AAC
- .incbin "baserom.gba", 0x309aac, 0x6e0
+@ 8305F68
+ .include "data/graphics/pokemon/front_anims.inc"
@ 830A18C
- .include "data/graphics/pokemon/mon_front_pic_table.inc"
+ .include "data/graphics/pokemon/front_pic_table.inc"
@ 830AF4C
- .incbin "baserom.gba", 0x30af4c, 0x6e0
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000088, 0x00000888, 0x00000888, 0x00000886
+ .4byte 0x00000888, 0x00000886, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000886, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000886, 0x00000886
+ .4byte 0x00000888, 0x00000088, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000888, 0x00000886, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000886, 0x00000886
+ .4byte 0x00000888, 0x00000088, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000886, 0x00000886, 0x00000088
+ .4byte 0x00000886, 0x00000886, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000886, 0x00000888, 0x00000088, 0x00000088
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000886
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000886
+ .4byte 0x00000886, 0x00000886, 0x00000886, 0x00000886
+ .4byte 0x00000886, 0x00000886, 0x00000888, 0x00000888
+ .4byte 0x00000886, 0x00000886, 0x00000886, 0x00000886
+ .4byte 0x00000886, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000886, 0x00000886, 0x00000888
+ .4byte 0x00000886, 0x00000886, 0x00000888, 0x00000888
+ .4byte 0x00000088, 0x00000088, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000886, 0x00000886, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000088, 0x00000886
+ .4byte 0x00000888, 0x00000088, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000888, 0x00000886, 0x00000888
+ .4byte 0x00000088, 0x00000088, 0x00000886, 0x00000886
+ .4byte 0x00000088, 0x00000088, 0x00000888, 0x00000886
+ .4byte 0x00000886, 0x00000888, 0x00000888, 0x00000088
+ .4byte 0x00000888, 0x00000886, 0x00000886, 0x00000888
+ .4byte 0x00000886, 0x00000888, 0x00000888, 0x00000886
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000088, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000088, 0x00000888, 0x00000888, 0x00000886
+ .4byte 0x00000886, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000886
+ .4byte 0x00000888, 0x00000886, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000888, 0x00000088, 0x00000888
+ .4byte 0x00000888, 0x00000088, 0x00000088, 0x00000888
+ .4byte 0x00000886, 0x00000888, 0x00000886, 0x00000886
+ .4byte 0x00000886, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000088, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000088, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000088, 0x00000088
+ .4byte 0x00000886, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000088, 0x00000888
+ .4byte 0x00000886, 0x00000888, 0x00000088, 0x00000088
+ .4byte 0x00000888, 0x00000888, 0x00000088, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000088
+ .4byte 0x00000888, 0x00000888, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000888, 0x00000088, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000886, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000886, 0x00000886, 0x00000886
+ .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000886
+ .4byte 0x00000088, 0x00000886, 0x00000886, 0x00000886
+ .4byte 0x00000088, 0x00000886, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000886
+ .4byte 0x00000886, 0x00000886, 0x00000888, 0x00000888
+ .4byte 0x00000886, 0x00000886, 0x00000886, 0x00000886
+ .4byte 0x00000088, 0x00000088, 0x00000886, 0x00000886
+ .4byte 0x00001882, 0x00000088, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000886, 0x00000886, 0x00000886
+ .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000088
+ .4byte 0x00000886, 0x00000088, 0x00000886, 0x00000088
+ .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000088, 0x00000886, 0x00000886
+ .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000886
+ .4byte 0x00000886, 0x00000088, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000088, 0x00000886, 0x00000088
+ .4byte 0x00000088, 0x00000886, 0x00000886, 0x00000886
+ .4byte 0x00000886, 0x00000886, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000886
+ .4byte 0x00000886, 0x00000886, 0x00000886, 0x00000088
+ .4byte 0x00000886, 0x00000088, 0x00000886, 0x00000886
+ .4byte 0x00000886, 0x00000088, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000088, 0x00000886, 0x00000886
+ .4byte 0x00000886, 0x00000888, 0x00000886, 0x00000886
+ .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000088
+ .4byte 0x00000886, 0x00000886, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000088, 0x00000088, 0x00000088
+ .4byte 0x00000088, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
+ .4byte 0x00000888, 0x00000888, 0x00000888, 0x00000888
@ 830B62C
.include "data/trainer_parties.inc"
@@ -170,52 +4643,235 @@ gUnknown_08309AAC:: @ 8309AAC
@ 831977C
.include "data/text/move_names.inc"
- .incbin "baserom.gba", 0x31a983, 0x4d
+.align 2
+ .2byte 0x0300, 0x0000
+ .align 2
+gUnknown_0831A988:: @ 831A988
+ .byte 0x00, 0x03, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00
+
+ .align 2
+gUnknown_0831A990:: @ 831A990
+ .byte 0x00, 0x03, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x00
+
+ .align 2
+gUnknown_0831A998:: @ 831A998
+ .2byte 0x0080, 0x0080, 0x0000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_0831A9A8:: @ 831A9A8
+ .2byte 0x0080, 0x0080, 0x0000, 0x0000, 0x0018, 0x0018, 0x8000, 0x0000
+ .2byte 0x0018, 0x0018, 0x8000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_0831A9C8:: @ 831A9C8
+ .4byte gUnknown_0831A998
+ .4byte gUnknown_0831A9A8
+
+ .align 2
gUnknown_0831A9D0:: @ 831A9D0
- .incbin "baserom.gba", 0x31a9d0, 0x18
+ spr_template 0x2710, 0x2710, gUnknown_0831A988, gDummySpriteAnimTable, NULL, gUnknown_0831A9C8, nullsub_17
+ .align 2
gUnknown_0831A9E8:: @ 831A9E8
- .incbin "baserom.gba", 0x31a9e8, 0x18
+ spr_template 0x2710, 0x2710, gUnknown_0831A990, gDummySpriteAnimTable, NULL, gUnknown_0831A9C8, nullsub_17
+ .align 2
gUnknown_0831AA00:: @ 831AA00
- .incbin "baserom.gba", 0x31aa00, 0x8
+ obj_tiles gUnknown_08D77B0C, 0x1000, 0x2710
+ .align 2
gUnknown_0831AA08:: @ 831AA08
- .incbin "baserom.gba", 0x31aa08, 0x198
+ .4byte 0x00000580, 0x000005c5, 0x000013e6, 0x000033ab
+ .align 2
+gUnknown_0831AA18:: @ 831AA18
+ window_template 0x00, 0x02, 0x0f, 0x1a, 0x04, 0x00, 0x0090
+ window_template 0x00, 0x01, 0x23, 0x0e, 0x04, 0x00, 0x01c0
+ window_template 0x00, 0x11, 0x23, 0x0c, 0x04, 0x05, 0x0190
+ window_template 0x00, 0x02, 0x37, 0x08, 0x02, 0x05, 0x0300
+ window_template 0x00, 0x0b, 0x37, 0x08, 0x02, 0x05, 0x0310
+ window_template 0x00, 0x02, 0x39, 0x08, 0x02, 0x05, 0x0320
+ window_template 0x00, 0x0b, 0x39, 0x08, 0x02, 0x05, 0x0330
+ window_template 0x00, 0x15, 0x37, 0x04, 0x02, 0x05, 0x0290
+ window_template 0x00, 0x15, 0x39, 0x00, 0x00, 0x05, 0x0298
+ window_template 0x00, 0x19, 0x37, 0x04, 0x02, 0x05, 0x0298
+ window_template 0x00, 0x15, 0x39, 0x08, 0x02, 0x05, 0x02a0
+ window_template 0x00, 0x15, 0x37, 0x08, 0x04, 0x05, 0x02b0
+ window_template 0x00, 0x1a, 0x09, 0x03, 0x04, 0x05, 0x0100
+ window_template 0x01, 0x13, 0x08, 0x0a, 0x0b, 0x05, 0x0100
+ window_template 0x02, 0x12, 0x00, 0x0c, 0x03, 0x06, 0x016e
+ window_template 0x01, 0x02, 0x03, 0x06, 0x02, 0x05, 0x0020
+ window_template 0x02, 0x02, 0x03, 0x06, 0x02, 0x05, 0x0040
+ window_template 0x01, 0x02, 0x02, 0x06, 0x02, 0x05, 0x0020
+ window_template 0x02, 0x02, 0x02, 0x06, 0x02, 0x05, 0x0040
+ window_template 0x01, 0x02, 0x06, 0x06, 0x02, 0x05, 0x0060
+ window_template 0x02, 0x02, 0x06, 0x06, 0x02, 0x05, 0x0080
+ window_template 0x00, 0x0c, 0x02, 0x06, 0x02, 0x00, 0x00a0
+ window_template 0x00, 0x04, 0x02, 0x07, 0x02, 0x00, 0x00a0
+ window_template 0x00, 0x13, 0x02, 0x07, 0x02, 0x00, 0x00b0
+ window_template_terminator
+
+ .align 2
+gUnknown_0831AAE0:: @ 831AAE0
+ window_template 0x00, 0x02, 0x0f, 0x1a, 0x04, 0x00, 0x0090
+ window_template 0x00, 0x01, 0x23, 0x0e, 0x04, 0x00, 0x01c0
+ window_template 0x00, 0x11, 0x23, 0x0c, 0x04, 0x05, 0x0190
+ window_template 0x00, 0x02, 0x37, 0x08, 0x02, 0x05, 0x0300
+ window_template 0x00, 0x0b, 0x37, 0x08, 0x02, 0x05, 0x0310
+ window_template 0x00, 0x02, 0x39, 0x08, 0x02, 0x05, 0x0320
+ window_template 0x00, 0x0b, 0x39, 0x08, 0x02, 0x05, 0x0330
+ window_template 0x00, 0x15, 0x37, 0x04, 0x02, 0x05, 0x0290
+ window_template 0x00, 0x15, 0x39, 0x00, 0x00, 0x05, 0x0298
+ window_template 0x00, 0x19, 0x37, 0x04, 0x02, 0x05, 0x0298
+ window_template 0x00, 0x15, 0x39, 0x08, 0x02, 0x05, 0x02a0
+ window_template 0x00, 0x15, 0x37, 0x08, 0x04, 0x05, 0x02b0
+ window_template 0x00, 0x1a, 0x09, 0x03, 0x04, 0x05, 0x0100
+ window_template 0x01, 0x13, 0x08, 0x0a, 0x0b, 0x05, 0x0100
+ window_template 0x02, 0x12, 0x00, 0x0c, 0x03, 0x06, 0x016e
+ window_template 0x00, 0x06, 0x01, 0x08, 0x02, 0x05, 0x0100
+ window_template 0x00, 0x0e, 0x01, 0x02, 0x02, 0x05, 0x0110
+ window_template 0x00, 0x10, 0x01, 0x08, 0x02, 0x05, 0x0114
+ window_template 0x00, 0x0c, 0x04, 0x06, 0x02, 0x05, 0x0124
+ window_template 0x00, 0x0c, 0x06, 0x06, 0x02, 0x05, 0x0130
+ window_template 0x00, 0x0c, 0x08, 0x06, 0x02, 0x05, 0x013c
+ window_template 0x00, 0x08, 0x0b, 0x0e, 0x02, 0x05, 0x0148
+ window_template 0x00, 0x02, 0x0f, 0x1a, 0x04, 0x07, 0x0090
+ window_template_terminator
+
+ .align 2
gUnknown_0831ABA0:: @ 831ABA0
- .incbin "baserom.gba", 0x31aba0, 0x8
+ .4byte gUnknown_0831AA18
+ .4byte gUnknown_0831AAE0
+
+ .align 2
+gBattleTerrainTable:: @ 831ABA8
+ @ tall_grass
+ .4byte gUnknown_08D77D68
+ .4byte gUnknown_08D78350
+ .4byte gUnknown_08D7E280
+ .4byte gUnknown_08D7E808
+ .4byte gUnknown_08D78318
+
+ @ long_grass
+ .4byte gUnknown_08D78600
+ .4byte gUnknown_08D78CB8
+ .4byte gUnknown_08D7E9C4
+ .4byte gUnknown_08D7F0D4
+ .4byte gUnknown_08D78C78
-gUnknown_0831ABA8:: @ 831ABA8
- .incbin "baserom.gba", 0x31aba8, 0xc8
+ @ sand
+ .4byte gUnknown_08D78F68
+ .4byte gUnknown_08D795A8
+ .4byte gUnknown_08D7F30C
+ .4byte gUnknown_08D7F850
+ .4byte gUnknown_08D79560
+ @ underwater
+ .4byte gUnknown_08D79858
+ .4byte gUnknown_08D79E58
+ .4byte gUnknown_08D7F9F8
+ .4byte gUnknown_08D7FEC4
+ .4byte gUnknown_08D79E10
+
+ @ water
+ .4byte gUnknown_08D7A108
+ .4byte gUnknown_08D7A720
+ .4byte gUnknown_08D80054
+ .4byte gUnknown_08D80660
+ .4byte gUnknown_08D7A6DC
+
+ @ pond_water
+ .4byte gUnknown_08D7A9D0
+ .4byte gUnknown_08D7AFB8
+ .4byte gUnknown_08D80804
+ .4byte gUnknown_08D80D50
+ .4byte gUnknown_08D7AF78
+
+ @ rock
+ .4byte gUnknown_08D7B268
+ .4byte gUnknown_08D7B864
+ .4byte gUnknown_08D80E9C
+ .4byte gUnknown_08D8147C
+ .4byte gUnknown_08D7B828
+
+ @ cave
+ .4byte gUnknown_08D7BB14
+ .4byte gUnknown_08D7C154
+ .4byte gUnknown_08D81610
+ .4byte gUnknown_08D81E2C
+ .4byte gUnknown_08D7C10C
+
+ @ building
+ .4byte gUnknown_08D7C440
+ .4byte gUnknown_08D7CA28
+ .4byte gUnknown_08D820D4
+ .4byte gUnknown_08D824E4
+ .4byte gUnknown_08D7DEB4
+
+ @ plain
+ .4byte gUnknown_08D7C440
+ .4byte gUnknown_08D7CA28
+ .4byte gUnknown_08D820D4
+ .4byte gUnknown_08D824E4
+ .4byte gUnknown_08D7C404
+
+ .align 2
gUnknown_0831AC70:: @ 831AC70
- .incbin "baserom.gba", 0x31ac70, 0x18
+ .4byte REG_BG3HOFS
+ .4byte ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1
+ .4byte 1
+ .4byte REG_BG3HOFS
+ .4byte ((DMA_ENABLE | DMA_START_HBLANK | DMA_32BIT | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1
+ .4byte 1
+ .align 2
gUnknown_0831AC88:: @ 831AC88
- .incbin "baserom.gba", 0x31ac88, 0x18
+ spr_template 0x0000, 0x0000, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8038528
gText_ShedinjaJapaneseName:: @ 831ACA0
- .string "ヌケニン$" @Nukenin
+ .string "ヌケニン$" @ Nukenin
-.align 2
-
+ .align 2
gUnknown_0831ACA8:: @ 831ACA8
- .incbin "baserom.gba", 0x31aca8, 0x38
+ .2byte 0x0100
+ .2byte 0xC000
+ .2byte 0x0800
+
+ .align 2
+gUnknown_0831ACB0:: @ 831ACB0
+ .2byte 0x0100
+ .2byte 0xC000
+ .2byte 0x2800
+
+ .align 2
+gUnknown_0831ACB8:: @ 831ACB8
+ .2byte 0x0000, 0x0005, 0xfffe, 0x0000
+ .align 2
+gUnknown_0831ACC0:: @ 831ACC0
+ .4byte gUnknown_0831ACB8
+
+ .align 2
+gUnknown_0831ACC4:: @ 831ACC4
+ .2byte 0xfff0, 0x0000, 0x0400, 0x0000, 0x0000, 0x0000, 0x3c00, 0x0000, 0x7ffe, 0x0001, 0x0000, 0x0000
+
+ .align 2
+gUnknown_0831ACDC:: @ 831ACDC
+ .4byte gUnknown_0831ACC4
+
+ .align 2
gUnknown_0831ACE0:: @ 831ACE0
- .incbin "baserom.gba", 0x31ace0, 0x8
+ .byte 0xe0, 0xf0, 0xf0, 0xe0, 0xe0, 0x00, 0x00, 0x00
-gTypeEffectiveness:: @ 831ACE8
- .incbin "baserom.gba", 0x31ace8, 0x150
+@ 831ACE8
+ .include "data/type_effectiveness.inc"
@ 831AE38
.include "data/text/type_names.inc"
- .align 2
-gTrainerMoneyTable:: @ 831AEB8
- .incbin "baserom.gba", 0x31aeb8, 0xe0
+@ 831AEB8
+ .include "data/trainer_money.inc"
@ 831AF98
.include "data/text/ability_descriptions.inc"
diff --git a/data/data2c.s b/data/data2c.s
index 26f237c1c..be715493c 100644
--- a/data/data2c.s
+++ b/data/data2c.s
@@ -11,8 +11,9 @@
@ 831C898
.include "data/battle_moves.inc"
- @ 0x31d93c unreferenced unknown data
-.byte 0x34, 0x00, 0x10, 0x00, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00
+@ 0x31d93c
+@ unreferenced unknown data
+ .byte 0x34, 0x00, 0x10, 0x00, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00
@ 831D94C
.include "data/pokedex_order.inc"
@@ -53,56 +54,142 @@
@ 832937C
.include "data/level_up_learnset_pointers.inc"
-gMonFrontAnimIdsTable:: @ 83299EC
- .incbin "baserom.gba", 0x3299ec, 0x19b
+@ 83299EC
+ .include "data/graphics/pokemon/front_anim_ids_table.inc"
-gMonAnimationDelayTable:: @ 8329B87
- .incbin "baserom.gba", 0x329b87, 0x19b
+@ 8329B87
+ .include "data/graphics/pokemon/animation_delay_table.inc"
+ .align 1
gUnknown_08329D22:: @ 8329D22
- .incbin "baserom.gba", 0x329d22, 0x4
+@ Masks for getting PP Up count, also PP Max values
+ .byte 0x03, 0x0c, 0x30, 0xc0
+ .align 1
gUnknown_08329D26:: @ 8329D26
- .incbin "baserom.gba", 0x329d26, 0x4
+@ Masks for setting PP Up count
+ .byte 0xfc, 0xf3, 0xcf, 0x3f
+ .align 1
gUnknown_08329D2A:: @ 8329D2A
- .incbin "baserom.gba", 0x329d2a, 0x4
+@ Values added to PP Up count
+ .byte 0x01, 0x04, 0x10, 0x40
+ .align 1
gStatStageRatios:: @ 8329D2E
- .incbin "baserom.gba", 0x329d2e, 0x1a
-
+ .byte 0x0a, 0x28
+ .byte 0x0a, 0x23
+ .byte 0x0a, 0x1e
+ .byte 0x0a, 0x19
+ .byte 0x0a, 0x14
+ .byte 0x0a, 0x0f
+ .byte 0x0a, 0x0a
+ .byte 0x0f, 0x0a
+ .byte 0x14, 0x0a
+ .byte 0x19, 0x0a
+ .byte 0x1e, 0x0a
+ .byte 0x23, 0x0a
+ .byte 0x28, 0x0a
+
+ .align 1
gUnknown_08329D48:: @ 8329D48
- .incbin "baserom.gba", 0x329d48, 0xc
+ .2byte 0x0032, 0x005f, 0x005a, 0x00b4, 0x005f, 0x005a
+ .align 1
gUnknown_08329D54:: @ 8329D54
- .incbin "baserom.gba", 0x329d54, 0x20
+ .2byte 0x0003, 0x000a, 0x001b, 0x002b, 0x001e, 0x0043, 0x0042, 0x0019
+ .2byte 0x0012, 0x000c, 0x001c, 0x0047, 0x001f, 0x0036, 0x0002, 0x0014
+ .align 1
gHoldEffectToType:: @ 8329D74
- .incbin "baserom.gba", 0x329d74, 0x24
+ .byte 0x1f, 0x06
+ .byte 0x2a, 0x08
+ .byte 0x2e, 0x04
+ .byte 0x2f, 0x05
+ .byte 0x30, 0x0c
+ .byte 0x31, 0x11
+ .byte 0x32, 0x01
+ .byte 0x33, 0x0d
+ .byte 0x34, 0x0b
+ .byte 0x35, 0x02
+ .byte 0x36, 0x03
+ .byte 0x37, 0x0f
+ .byte 0x38, 0x07
+ .byte 0x39, 0x0e
+ .byte 0x3a, 0x0a
+ .byte 0x3b, 0x10
+ .byte 0x3c, 0x00
+ .byte 0x00, 0x00
+ .align 2
gUnknown_08329D98:: @ 8329D98
- .incbin "baserom.gba", 0x329d98, 0x60
+ spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF3A8, gUnknown_082FF618, sub_8039BB4
+ spr_template 0xffff, 0x0000, gUnknown_0831ACA8, NULL, gUnknown_082FF3C8, gUnknown_082FF694, oac_poke_opponent
+ spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF3E8, gUnknown_082FF618, sub_8039BB4
+ spr_template 0xffff, 0x0000, gUnknown_0831ACA8, NULL, gUnknown_082FF408, gUnknown_082FF694, oac_poke_opponent
+ .align 2
gUnknown_08329DF8:: @ 8329DF8
- .incbin "baserom.gba", 0x329df8, 0xc0
+ spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF428, gUnknown_082FF618, sub_8039BB4
+ spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF448, gUnknown_082FF618, sub_8039BB4
+ spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF468, gUnknown_082FF618, sub_8039BB4
+ spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF490, gUnknown_082FF618, sub_8039BB4
+ spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF4B8, gUnknown_082FF618, sub_8039BB4
+ spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF4D8, gUnknown_082FF618, sub_8039BB4
+ spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF4F8, gUnknown_082FF618, sub_8039BB4
+ spr_template 0xffff, 0x0000, gUnknown_0831ACB0, NULL, gUnknown_082FF518, gUnknown_082FF618, sub_8039BB4
gSecretBaseTrainerClasses:: @ 8329EB8
- .incbin "baserom.gba", 0x329eb8, 0xa
+ .byte TRAINER_CLASS_YOUNGSTER, TRAINER_CLASS_BUG_CATCHER, TRAINER_CLASS_RICH_BOY, TRAINER_CLASS_CAMPER, TRAINER_CLASS_COOLTRAINER_1
+ .byte TRAINER_CLASS_LASS, TRAINER_CLASS_SCHOOL_KID_2, TRAINER_CLASS_LADY, TRAINER_CLASS_PICNICKER, TRAINER_CLASS_COOLTRAINER_2
gUnknown_08329EC2:: @ 8329EC2
- .incbin "baserom.gba", 0x329ec2, 0x6
+ .byte 0x1a, 0x1b, 0x1c, 0x1d, 0x1f, 0x1e
gUnknown_08329EC8:: @ 8329EC8
- .incbin "baserom.gba", 0x329ec8, 0x6
+ .byte 1, 1, 3, 2, 4, 6
gUnknown_08329ECE:: @ 8329ECE
- .incbin "baserom.gba", 0x329ece, 0x1c
-
+@ Happiness deltas
+ .byte 0x05, 0x03, 0x02
+ .byte 0x05, 0x03, 0x02
+ .byte 0x01, 0x01, 0x00
+ .byte 0x03, 0x02, 0x01
+ .byte 0x01, 0x01, 0x00
+ .byte 0x01, 0x01, 0x01
+ .byte 0xff, 0xff, 0xff
+ .byte 0xfb, 0xfb, 0xf6
+ .byte 0xfb, 0xfb, 0xf6
+
+ .align 1
gHMMoves:: @ 8329EEA
- .incbin "baserom.gba", 0x329eea, 0x12
-
+ .2byte MOVE_CUT
+ .2byte MOVE_FLY
+ .2byte MOVE_SURF
+ .2byte MOVE_STRENGTH
+ .2byte MOVE_FLASH
+ .2byte MOVE_ROCK_SMASH
+ .2byte MOVE_WATERFALL
+ .2byte MOVE_DIVE
+ .2byte 0xffff
+
+ .align 1
gAlteringCaveWildMonHeldItems:: @ 8329EFC
- .incbin "baserom.gba", 0x329efc, 0x2c
+ .2byte 0, ITEM_NONE
+ .2byte SPECIES_MAREEP, ITEM_GANLON_BERRY
+ .2byte SPECIES_PINECO, ITEM_APICOT_BERRY
+ .2byte SPECIES_HOUNDOUR, ITEM_BIG_MUSHROOM
+ .2byte SPECIES_TEDDIURSA, ITEM_PETAYA_BERRY
+ .2byte SPECIES_AIPOM, ITEM_BERRY_JUICE
+ .2byte SPECIES_SHUCKLE, ITEM_BERRY_JUICE
+ .2byte SPECIES_STANTLER, ITEM_PETAYA_BERRY
+ .2byte SPECIES_SMEARGLE, ITEM_SALAC_BERRY
+ .align 2
+gUnknown_08329F20:: @ 8329F20
+ .byte 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00
+
+ .align 2
gUnknown_08329F28:: @ 8329F28
- .incbin "baserom.gba", 0x329f28, 0x18
+ spr_template 0xffff, 0xffff, gUnknown_08329F20, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+
diff --git a/data/enemy_mon_elevation.inc b/data/enemy_mon_elevation.inc
new file mode 100644
index 000000000..2dadadd07
--- /dev/null
+++ b/data/enemy_mon_elevation.inc
@@ -0,0 +1,415 @@
+@ This determines how much higher above the usual position the enemy Pokémon
+@ is during battle. Species that float or fly have nonzero values.
+gEnemyMonElevation:: @ 8305DCC
+ .byte 0 @ 0
+ .byte 0 @ SPECIES_BULBASAUR
+ .byte 0 @ SPECIES_IVYSAUR
+ .byte 0 @ SPECIES_VENUSAUR
+ .byte 0 @ SPECIES_CHARMANDER
+ .byte 0 @ SPECIES_CHARMELEON
+ .byte 0 @ SPECIES_CHARIZARD
+ .byte 0 @ SPECIES_SQUIRTLE
+ .byte 0 @ SPECIES_WARTORTLE
+ .byte 0 @ SPECIES_BLASTOISE
+ .byte 0 @ SPECIES_CATERPIE
+ .byte 0 @ SPECIES_METAPOD
+ .byte 8 @ SPECIES_BUTTERFREE
+ .byte 0 @ SPECIES_WEEDLE
+ .byte 0 @ SPECIES_KAKUNA
+ .byte 8 @ SPECIES_BEEDRILL
+ .byte 16 @ SPECIES_PIDGEY
+ .byte 0 @ SPECIES_PIDGEOTTO
+ .byte 4 @ SPECIES_PIDGEOT
+ .byte 0 @ SPECIES_RATTATA
+ .byte 0 @ SPECIES_RATICATE
+ .byte 0 @ SPECIES_SPEAROW
+ .byte 6 @ SPECIES_FEAROW
+ .byte 0 @ SPECIES_EKANS
+ .byte 0 @ SPECIES_ARBOK
+ .byte 0 @ SPECIES_PIKACHU
+ .byte 0 @ SPECIES_RAICHU
+ .byte 0 @ SPECIES_SANDSHREW
+ .byte 0 @ SPECIES_SANDSLASH
+ .byte 0 @ SPECIES_NIDORAN_F
+ .byte 0 @ SPECIES_NIDORINA
+ .byte 0 @ SPECIES_NIDOQUEEN
+ .byte 0 @ SPECIES_NIDORAN_M
+ .byte 0 @ SPECIES_NIDORINO
+ .byte 0 @ SPECIES_NIDOKING
+ .byte 0 @ SPECIES_CLEFAIRY
+ .byte 0 @ SPECIES_CLEFABLE
+ .byte 0 @ SPECIES_VULPIX
+ .byte 0 @ SPECIES_NINETALES
+ .byte 0 @ SPECIES_JIGGLYPUFF
+ .byte 0 @ SPECIES_WIGGLYTUFF
+ .byte 8 @ SPECIES_ZUBAT
+ .byte 8 @ SPECIES_GOLBAT
+ .byte 0 @ SPECIES_ODDISH
+ .byte 0 @ SPECIES_GLOOM
+ .byte 0 @ SPECIES_VILEPLUME
+ .byte 0 @ SPECIES_PARAS
+ .byte 0 @ SPECIES_PARASECT
+ .byte 0 @ SPECIES_VENONAT
+ .byte 8 @ SPECIES_VENOMOTH
+ .byte 0 @ SPECIES_DIGLETT
+ .byte 0 @ SPECIES_DUGTRIO
+ .byte 0 @ SPECIES_MEOWTH
+ .byte 0 @ SPECIES_PERSIAN
+ .byte 0 @ SPECIES_PSYDUCK
+ .byte 0 @ SPECIES_GOLDUCK
+ .byte 0 @ SPECIES_MANKEY
+ .byte 0 @ SPECIES_PRIMEAPE
+ .byte 0 @ SPECIES_GROWLITHE
+ .byte 0 @ SPECIES_ARCANINE
+ .byte 0 @ SPECIES_POLIWAG
+ .byte 0 @ SPECIES_POLIWHIRL
+ .byte 0 @ SPECIES_POLIWRATH
+ .byte 0 @ SPECIES_ABRA
+ .byte 0 @ SPECIES_KADABRA
+ .byte 0 @ SPECIES_ALAKAZAM
+ .byte 0 @ SPECIES_MACHOP
+ .byte 0 @ SPECIES_MACHOKE
+ .byte 0 @ SPECIES_MACHAMP
+ .byte 0 @ SPECIES_BELLSPROUT
+ .byte 0 @ SPECIES_WEEPINBELL
+ .byte 0 @ SPECIES_VICTREEBEL
+ .byte 0 @ SPECIES_TENTACOOL
+ .byte 0 @ SPECIES_TENTACRUEL
+ .byte 16 @ SPECIES_GEODUDE
+ .byte 0 @ SPECIES_GRAVELER
+ .byte 0 @ SPECIES_GOLEM
+ .byte 0 @ SPECIES_PONYTA
+ .byte 0 @ SPECIES_RAPIDASH
+ .byte 0 @ SPECIES_SLOWPOKE
+ .byte 0 @ SPECIES_SLOWBRO
+ .byte 16 @ SPECIES_MAGNEMITE
+ .byte 8 @ SPECIES_MAGNETON
+ .byte 0 @ SPECIES_FARFETCHD
+ .byte 0 @ SPECIES_DODUO
+ .byte 0 @ SPECIES_DODRIO
+ .byte 0 @ SPECIES_SEEL
+ .byte 0 @ SPECIES_DEWGONG
+ .byte 0 @ SPECIES_GRIMER
+ .byte 0 @ SPECIES_MUK
+ .byte 0 @ SPECIES_SHELLDER
+ .byte 0 @ SPECIES_CLOYSTER
+ .byte 4 @ SPECIES_GASTLY
+ .byte 4 @ SPECIES_HAUNTER
+ .byte 0 @ SPECIES_GENGAR
+ .byte 0 @ SPECIES_ONIX
+ .byte 0 @ SPECIES_DROWZEE
+ .byte 0 @ SPECIES_HYPNO
+ .byte 0 @ SPECIES_KRABBY
+ .byte 0 @ SPECIES_KINGLER
+ .byte 10 @ SPECIES_VOLTORB
+ .byte 12 @ SPECIES_ELECTRODE
+ .byte 0 @ SPECIES_EXEGGCUTE
+ .byte 0 @ SPECIES_EXEGGUTOR
+ .byte 0 @ SPECIES_CUBONE
+ .byte 0 @ SPECIES_MAROWAK
+ .byte 0 @ SPECIES_HITMONLEE
+ .byte 0 @ SPECIES_HITMONCHAN
+ .byte 0 @ SPECIES_LICKITUNG
+ .byte 8 @ SPECIES_KOFFING
+ .byte 6 @ SPECIES_WEEZING
+ .byte 0 @ SPECIES_RHYHORN
+ .byte 0 @ SPECIES_RHYDON
+ .byte 0 @ SPECIES_CHANSEY
+ .byte 0 @ SPECIES_TANGELA
+ .byte 0 @ SPECIES_KANGASKHAN
+ .byte 0 @ SPECIES_HORSEA
+ .byte 0 @ SPECIES_SEADRA
+ .byte 0 @ SPECIES_GOLDEEN
+ .byte 0 @ SPECIES_SEAKING
+ .byte 0 @ SPECIES_STARYU
+ .byte 0 @ SPECIES_STARMIE
+ .byte 0 @ SPECIES_MR_MIME
+ .byte 0 @ SPECIES_SCYTHER
+ .byte 0 @ SPECIES_JYNX
+ .byte 0 @ SPECIES_ELECTABUZZ
+ .byte 0 @ SPECIES_MAGMAR
+ .byte 0 @ SPECIES_PINSIR
+ .byte 0 @ SPECIES_TAUROS
+ .byte 0 @ SPECIES_MAGIKARP
+ .byte 0 @ SPECIES_GYARADOS
+ .byte 0 @ SPECIES_LAPRAS
+ .byte 0 @ SPECIES_DITTO
+ .byte 0 @ SPECIES_EEVEE
+ .byte 0 @ SPECIES_VAPOREON
+ .byte 0 @ SPECIES_JOLTEON
+ .byte 0 @ SPECIES_FLAREON
+ .byte 0 @ SPECIES_PORYGON
+ .byte 0 @ SPECIES_OMANYTE
+ .byte 0 @ SPECIES_OMASTAR
+ .byte 0 @ SPECIES_KABUTO
+ .byte 0 @ SPECIES_KABUTOPS
+ .byte 7 @ SPECIES_AERODACTYL
+ .byte 0 @ SPECIES_SNORLAX
+ .byte 6 @ SPECIES_ARTICUNO
+ .byte 8 @ SPECIES_ZAPDOS
+ .byte 5 @ SPECIES_MOLTRES
+ .byte 0 @ SPECIES_DRATINI
+ .byte 0 @ SPECIES_DRAGONAIR
+ .byte 6 @ SPECIES_DRAGONITE
+ .byte 0 @ SPECIES_MEWTWO
+ .byte 8 @ SPECIES_MEW
+ .byte 0 @ SPECIES_CHIKORITA
+ .byte 0 @ SPECIES_BAYLEEF
+ .byte 0 @ SPECIES_MEGANIUM
+ .byte 0 @ SPECIES_CYNDAQUIL
+ .byte 0 @ SPECIES_QUILAVA
+ .byte 0 @ SPECIES_TYPHLOSION
+ .byte 0 @ SPECIES_TOTODILE
+ .byte 0 @ SPECIES_CROCONAW
+ .byte 0 @ SPECIES_FERALIGATR
+ .byte 0 @ SPECIES_SENTRET
+ .byte 0 @ SPECIES_FURRET
+ .byte 0 @ SPECIES_HOOTHOOT
+ .byte 0 @ SPECIES_NOCTOWL
+ .byte 0 @ SPECIES_LEDYBA
+ .byte 8 @ SPECIES_LEDIAN
+ .byte 0 @ SPECIES_SPINARAK
+ .byte 0 @ SPECIES_ARIADOS
+ .byte 6 @ SPECIES_CROBAT
+ .byte 0 @ SPECIES_CHINCHOU
+ .byte 0 @ SPECIES_LANTURN
+ .byte 0 @ SPECIES_PICHU
+ .byte 0 @ SPECIES_CLEFFA
+ .byte 0 @ SPECIES_IGGLYBUFF
+ .byte 0 @ SPECIES_TOGEPI
+ .byte 0 @ SPECIES_TOGETIC
+ .byte 0 @ SPECIES_NATU
+ .byte 0 @ SPECIES_XATU
+ .byte 0 @ SPECIES_MAREEP
+ .byte 0 @ SPECIES_FLAAFFY
+ .byte 0 @ SPECIES_AMPHAROS
+ .byte 0 @ SPECIES_BELLOSSOM
+ .byte 0 @ SPECIES_MARILL
+ .byte 0 @ SPECIES_AZUMARILL
+ .byte 0 @ SPECIES_SUDOWOODO
+ .byte 0 @ SPECIES_POLITOED
+ .byte 11 @ SPECIES_HOPPIP
+ .byte 12 @ SPECIES_SKIPLOOM
+ .byte 9 @ SPECIES_JUMPLUFF
+ .byte 0 @ SPECIES_AIPOM
+ .byte 0 @ SPECIES_SUNKERN
+ .byte 0 @ SPECIES_SUNFLORA
+ .byte 8 @ SPECIES_YANMA
+ .byte 0 @ SPECIES_WOOPER
+ .byte 0 @ SPECIES_QUAGSIRE
+ .byte 0 @ SPECIES_ESPEON
+ .byte 0 @ SPECIES_UMBREON
+ .byte 0 @ SPECIES_MURKROW
+ .byte 0 @ SPECIES_SLOWKING
+ .byte 8 @ SPECIES_MISDREAVUS
+ .byte 8 @ SPECIES_UNOWN
+ .byte 0 @ SPECIES_WOBBUFFET
+ .byte 0 @ SPECIES_GIRAFARIG
+ .byte 0 @ SPECIES_PINECO
+ .byte 0 @ SPECIES_FORRETRESS
+ .byte 0 @ SPECIES_DUNSPARCE
+ .byte 6 @ SPECIES_GLIGAR
+ .byte 0 @ SPECIES_STEELIX
+ .byte 0 @ SPECIES_SNUBBULL
+ .byte 0 @ SPECIES_GRANBULL
+ .byte 0 @ SPECIES_QWILFISH
+ .byte 0 @ SPECIES_SCIZOR
+ .byte 0 @ SPECIES_SHUCKLE
+ .byte 0 @ SPECIES_HERACROSS
+ .byte 0 @ SPECIES_SNEASEL
+ .byte 0 @ SPECIES_TEDDIURSA
+ .byte 0 @ SPECIES_URSARING
+ .byte 0 @ SPECIES_SLUGMA
+ .byte 0 @ SPECIES_MAGCARGO
+ .byte 0 @ SPECIES_SWINUB
+ .byte 0 @ SPECIES_PILOSWINE
+ .byte 0 @ SPECIES_CORSOLA
+ .byte 0 @ SPECIES_REMORAID
+ .byte 0 @ SPECIES_OCTILLERY
+ .byte 0 @ SPECIES_DELIBIRD
+ .byte 0 @ SPECIES_MANTINE
+ .byte 0 @ SPECIES_SKARMORY
+ .byte 0 @ SPECIES_HOUNDOUR
+ .byte 0 @ SPECIES_HOUNDOOM
+ .byte 0 @ SPECIES_KINGDRA
+ .byte 0 @ SPECIES_PHANPY
+ .byte 0 @ SPECIES_DONPHAN
+ .byte 0 @ SPECIES_PORYGON2
+ .byte 0 @ SPECIES_STANTLER
+ .byte 0 @ SPECIES_SMEARGLE
+ .byte 0 @ SPECIES_TYROGUE
+ .byte 0 @ SPECIES_HITMONTOP
+ .byte 0 @ SPECIES_SMOOCHUM
+ .byte 0 @ SPECIES_ELEKID
+ .byte 0 @ SPECIES_MAGBY
+ .byte 0 @ SPECIES_MILTANK
+ .byte 0 @ SPECIES_BLISSEY
+ .byte 0 @ SPECIES_RAIKOU
+ .byte 0 @ SPECIES_ENTEI
+ .byte 0 @ SPECIES_SUICUNE
+ .byte 0 @ SPECIES_LARVITAR
+ .byte 0 @ SPECIES_PUPITAR
+ .byte 0 @ SPECIES_TYRANITAR
+ .byte 6 @ SPECIES_LUGIA
+ .byte 6 @ SPECIES_HO_OH
+ .byte 15 @ SPECIES_CELEBI
+ .byte 0 @ 252
+ .byte 0 @ 253
+ .byte 0 @ 254
+ .byte 0 @ 255
+ .byte 0 @ 256
+ .byte 0 @ 257
+ .byte 0 @ 258
+ .byte 0 @ 259
+ .byte 0 @ 260
+ .byte 0 @ 261
+ .byte 0 @ 262
+ .byte 0 @ 263
+ .byte 0 @ 264
+ .byte 0 @ 265
+ .byte 0 @ 266
+ .byte 0 @ 267
+ .byte 0 @ 268
+ .byte 0 @ 269
+ .byte 0 @ 270
+ .byte 0 @ 271
+ .byte 0 @ 272
+ .byte 0 @ 273
+ .byte 0 @ 274
+ .byte 0 @ 275
+ .byte 0 @ 276
+ .byte 0 @ SPECIES_TREECKO
+ .byte 0 @ SPECIES_GROVYLE
+ .byte 0 @ SPECIES_SCEPTILE
+ .byte 0 @ SPECIES_TORCHIC
+ .byte 0 @ SPECIES_COMBUSKEN
+ .byte 0 @ SPECIES_BLAZIKEN
+ .byte 0 @ SPECIES_MUDKIP
+ .byte 0 @ SPECIES_MARSHTOMP
+ .byte 0 @ SPECIES_SWAMPERT
+ .byte 0 @ SPECIES_POOCHYENA
+ .byte 0 @ SPECIES_MIGHTYENA
+ .byte 0 @ SPECIES_ZIGZAGOON
+ .byte 0 @ SPECIES_LINOONE
+ .byte 0 @ SPECIES_WURMPLE
+ .byte 0 @ SPECIES_SILCOON
+ .byte 8 @ SPECIES_BEAUTIFLY
+ .byte 0 @ SPECIES_CASCOON
+ .byte 10 @ SPECIES_DUSTOX
+ .byte 0 @ SPECIES_LOTAD
+ .byte 0 @ SPECIES_LOMBRE
+ .byte 0 @ SPECIES_LUDICOLO
+ .byte 0 @ SPECIES_SEEDOT
+ .byte 0 @ SPECIES_NUZLEAF
+ .byte 0 @ SPECIES_SHIFTRY
+ .byte 0 @ SPECIES_NINCADA
+ .byte 10 @ SPECIES_NINJASK
+ .byte 8 @ SPECIES_SHEDINJA
+ .byte 0 @ SPECIES_TAILLOW
+ .byte 0 @ SPECIES_SWELLOW
+ .byte 0 @ SPECIES_SHROOMISH
+ .byte 0 @ SPECIES_BRELOOM
+ .byte 0 @ SPECIES_SPINDA
+ .byte 16 @ SPECIES_WINGULL
+ .byte 8 @ SPECIES_PELIPPER
+ .byte 0 @ SPECIES_SURSKIT
+ .byte 10 @ SPECIES_MASQUERAIN
+ .byte 0 @ SPECIES_WAILMER
+ .byte 0 @ SPECIES_WAILORD
+ .byte 0 @ SPECIES_SKITTY
+ .byte 0 @ SPECIES_DELCATTY
+ .byte 0 @ SPECIES_KECLEON
+ .byte 4 @ SPECIES_BALTOY
+ .byte 10 @ SPECIES_CLAYDOL
+ .byte 0 @ SPECIES_NOSEPASS
+ .byte 0 @ SPECIES_TORKOAL
+ .byte 0 @ SPECIES_SABLEYE
+ .byte 0 @ SPECIES_BARBOACH
+ .byte 0 @ SPECIES_WHISCASH
+ .byte 0 @ SPECIES_LUVDISC
+ .byte 0 @ SPECIES_CORPHISH
+ .byte 0 @ SPECIES_CRAWDAUNT
+ .byte 0 @ SPECIES_FEEBAS
+ .byte 0 @ SPECIES_MILOTIC
+ .byte 0 @ SPECIES_CARVANHA
+ .byte 0 @ SPECIES_SHARPEDO
+ .byte 0 @ SPECIES_TRAPINCH
+ .byte 0 @ SPECIES_VIBRAVA
+ .byte 7 @ SPECIES_FLYGON
+ .byte 0 @ SPECIES_MAKUHITA
+ .byte 0 @ SPECIES_HARIYAMA
+ .byte 0 @ SPECIES_ELECTRIKE
+ .byte 0 @ SPECIES_MANECTRIC
+ .byte 0 @ SPECIES_NUMEL
+ .byte 0 @ SPECIES_CAMERUPT
+ .byte 0 @ SPECIES_SPHEAL
+ .byte 0 @ SPECIES_SEALEO
+ .byte 0 @ SPECIES_WALREIN
+ .byte 0 @ SPECIES_CACNEA
+ .byte 0 @ SPECIES_CACTURNE
+ .byte 0 @ SPECIES_SNORUNT
+ .byte 12 @ SPECIES_GLALIE
+ .byte 13 @ SPECIES_LUNATONE
+ .byte 4 @ SPECIES_SOLROCK
+ .byte 0 @ SPECIES_AZURILL
+ .byte 0 @ SPECIES_SPOINK
+ .byte 0 @ SPECIES_GRUMPIG
+ .byte 0 @ SPECIES_PLUSLE
+ .byte 0 @ SPECIES_MINUN
+ .byte 0 @ SPECIES_MAWILE
+ .byte 0 @ SPECIES_MEDITITE
+ .byte 0 @ SPECIES_MEDICHAM
+ .byte 12 @ SPECIES_SWABLU
+ .byte 8 @ SPECIES_ALTARIA
+ .byte 0 @ SPECIES_WYNAUT
+ .byte 9 @ SPECIES_DUSKULL
+ .byte 0 @ SPECIES_DUSCLOPS
+ .byte 0 @ SPECIES_ROSELIA
+ .byte 0 @ SPECIES_SLAKOTH
+ .byte 0 @ SPECIES_VIGOROTH
+ .byte 0 @ SPECIES_SLAKING
+ .byte 0 @ SPECIES_GULPIN
+ .byte 0 @ SPECIES_SWALOT
+ .byte 0 @ SPECIES_TROPIUS
+ .byte 0 @ SPECIES_WHISMUR
+ .byte 0 @ SPECIES_LOUDRED
+ .byte 0 @ SPECIES_EXPLOUD
+ .byte 0 @ SPECIES_CLAMPERL
+ .byte 0 @ SPECIES_HUNTAIL
+ .byte 0 @ SPECIES_GOREBYSS
+ .byte 0 @ SPECIES_ABSOL
+ .byte 12 @ SPECIES_SHUPPET
+ .byte 8 @ SPECIES_BANETTE
+ .byte 0 @ SPECIES_SEVIPER
+ .byte 0 @ SPECIES_ZANGOOSE
+ .byte 0 @ SPECIES_RELICANTH
+ .byte 0 @ SPECIES_ARON
+ .byte 0 @ SPECIES_LAIRON
+ .byte 0 @ SPECIES_AGGRON
+ .byte 16 @ SPECIES_CASTFORM
+ .byte 0 @ SPECIES_VOLBEAT
+ .byte 0 @ SPECIES_ILLUMISE
+ .byte 0 @ SPECIES_LILEEP
+ .byte 0 @ SPECIES_CRADILY
+ .byte 0 @ SPECIES_ANORITH
+ .byte 0 @ SPECIES_ARMALDO
+ .byte 0 @ SPECIES_RALTS
+ .byte 0 @ SPECIES_KIRLIA
+ .byte 0 @ SPECIES_GARDEVOIR
+ .byte 0 @ SPECIES_BAGON
+ .byte 0 @ SPECIES_SHELGON
+ .byte 0 @ SPECIES_SALAMENCE
+ .byte 8 @ SPECIES_BELDUM
+ .byte 0 @ SPECIES_METANG
+ .byte 0 @ SPECIES_METAGROSS
+ .byte 0 @ SPECIES_REGIROCK
+ .byte 0 @ SPECIES_REGICE
+ .byte 0 @ SPECIES_REGISTEEL
+ .byte 0 @ SPECIES_KYOGRE
+ .byte 0 @ SPECIES_GROUDON
+ .byte 6 @ SPECIES_RAYQUAZA
+ .byte 6 @ SPECIES_LATIAS
+ .byte 6 @ SPECIES_LATIOS
+ .byte 12 @ SPECIES_JIRACHI
+ .byte 8 @ SPECIES_DEOXYS
+ .byte 12 @ SPECIES_CHIMECHO
diff --git a/data/event_script_command_function_table.inc b/data/event_script_command_function_table.inc
index f44cdb7db..7cd00c37d 100644
--- a/data/event_script_command_function_table.inc
+++ b/data/event_script_command_function_table.inc
@@ -1,229 +1,229 @@
.align 2
gScriptCmdTable:: @ 81DB67C
- .4byte s00_nop
- .4byte s01_nop
- .4byte s02_end
- .4byte s03_return
- .4byte s04_call
- .4byte s05_goto
- .4byte s06_if_jump
- .4byte s07_if_call
- .4byte s08_jumpstd
- .4byte s09_callstd
- .4byte s0A_jumpstd_if
- .4byte s0B_callstd_if
- .4byte s0C_restore_execution_after_sCF
- .4byte s0D_endscript_killram
- .4byte s0E_set_byte
- .4byte s0F_u32_var_to_const
- .4byte s10_u8_var_to_const
- .4byte s11_u8_ptr_to_const
- .4byte s12_u32_var_to_ptr
- .4byte s13_u8_var_to_ptr
- .4byte s14_u32_var_to_var
- .4byte s15_u8_ptr_to_ptr
- .4byte s16_u16_gvar_to_const
- .4byte s17_u16_gvar_add_const
- .4byte sub_809993C
- .4byte s19_u16_gvar_gvar
- .4byte s1A_u16_gvar_gvar
- .4byte s1B_cmp_u8_var_var
- .4byte s1C_cmp_u8_var_const
- .4byte s1D_cmp_u8_var_ptr
- .4byte s1E_cmp_u8_ptr_var
- .4byte s1F_cmp_u8_ptr_const
- .4byte s20_cmp_u8_ptr_ptr
- .4byte s21_cmp_u16_gvar_const
- .4byte s22_cmp_u16_gvar_gvar
- .4byte s23_execute_ASM
- .4byte s24_execute_ASM_2
- .4byte s25_extended_cmd
- .4byte s26_extended_cmd_setvar
- .4byte s27_set_to_waitstate
- .4byte s28_pause
- .4byte s29_flag_set
- .4byte s2A_flag_clear
- .4byte s2B_flag_check
- .4byte s2C_unknown
- .4byte s2D_unknown
- .4byte s2E_unknown
- .4byte s2F_music_play
- .4byte s30_music_check
- .4byte s31_PlayFanfare
- .4byte s32_fanfare_wait
- .4byte s33_play_music
- .4byte s34_unknown
- .4byte s35_fade_to_default
- .4byte s36_fade_to_music
- .4byte s37_fadeout
- .4byte s38_fadein
- .4byte s39_warp_sfx
- .4byte s3A_warp_new_music
- .4byte s3B_warp_keep_music
- .4byte sub_809A054
- .4byte s3D_warp_v4
- .4byte s3E_set_new_map
- .4byte s3F_set_new_map_DMA
- .4byte sub_809A2DC
- .4byte sub_809A35C
- .4byte s42_get_map_camera_pos
- .4byte s43_get_player_party_count
- .4byte sub_80999A0
- .4byte sub_80999E4
- .4byte sub_8099A28
- .4byte sub_8099A6C
- .4byte s48_get_item_type
- .4byte sub_8099ADC
- .4byte sub_8099B20
- .4byte sub_8099B64
- .4byte sub_8099B90
- .4byte sub_8099BE8
- .4byte sub_8099BBC
- .4byte s4F_execute_movement
- .4byte s50_execute_movement_remote
- .4byte s51_waitmove
- .4byte s52_waitmove_remote
- .4byte s53_hide_sprite
- .4byte s54_hide_sprite_set_coords
- .4byte s55_show_sprite
- .4byte s56_show_sprite_set_coords
- .4byte s57_move_sprites
- .4byte s58_npc_f1_clear_x20
- .4byte s59_npc_f1_set_x20
- .4byte s5A_face_player
- .4byte s5B_npc_set_direction
- .4byte s5C_trainer_battle_configure_and_start
- .4byte sub_809B5E4
- .4byte sub_809B5F0
- .4byte sub_809B604
- .4byte s60_check_trainer_flag
- .4byte s61_set_trainer_flag
- .4byte s62_unset_trainer_flag
- .4byte s63_new_sprite_location_permanent
- .4byte s64_set_sprite_top_left_corner
- .4byte s65_set_sprite_behaviour
- .4byte sub_809AC78
- .4byte s67_execute_box
- .4byte s68_close_box
- .4byte sub_809AAC4
- .4byte sub_809AAEC
- .4byte s6B_release
- .4byte s6C_release_2
- .4byte sub_809ACC0
- .4byte s6E_yes_no
- .4byte s6F_multichoice
- .4byte sub_809AD3C
- .4byte sub_809AD90
- .4byte sub_809AD8C
- .4byte s73_nop_skip_word
- .4byte sub_809ADEC
- .4byte sub_809ADF8
- .4byte s76_close_picture_box
- .4byte sub_809AE48
- .4byte sub_809AE6C
- .4byte s79_give_pokemon
- .4byte s7A_create_egg
- .4byte s7B_change_pokedata_AP
- .4byte sub_809B3DC
- .4byte s7D_load_pokename
- .4byte s7E_load_first_pokenames
- .4byte s7F_load_pokename_team
- .4byte s80_load_item_name
- .4byte sub_809B114
- .4byte s82_load_item_name
- .4byte s83_load_textvar_var
- .4byte s84_load_textvar_std_expression
- .4byte s85_load_textvar_pointer
- .4byte s86_pokemart
- .4byte s87_pokemartdecor
- .4byte s88_pokemartbp
- .4byte s89_open_casino_game1
- .4byte berry_script_cmd
- .4byte sub_809B784
- .4byte sub_809B794
- .4byte sub_809B7A4
- .4byte sub_809B7B4
- .4byte s8F_get_random_val
- .4byte s90_AddMoney
- .4byte s91_SubtractMoney
- .4byte s92_check_money
- .4byte s93_display_money
- .4byte s94_hide_money
- .4byte s95_update_money
- .4byte sub_809B758
- .4byte s97_screen_special_effect
- .4byte s98_refade_with_timer
- .4byte s99_unknown
- .4byte s9A_unknown
- .4byte s9B_unknown
- .4byte s9C_execute_HM
- .4byte s9D_set_HM_animation_data
- .4byte s9E_checkarray_HM_animation
- .4byte s9F_changeposition_fly
- .4byte sA0_check_gender
- .4byte sA1_play_cry
- .4byte sA2_setmaptile
- .4byte sA3_set_standard_weather_data
- .4byte sA4_set_weather_data
- .4byte sub_8099E7C
- .4byte sA6_activate_per_step_callback_eg_ash
- .4byte sA7_set_new_map_footer
- .4byte sA8_unknown
- .4byte sA9_unknown
- .4byte sAA_create_new_sprite
- .4byte sAB_unknown
- .4byte sAC_open_door
- .4byte sub_809B9C8
- .4byte sub_809BA24
- .4byte sub_809BA38
- .4byte sub_809BA7C
- .4byte sub_809BAC0
- .4byte sub_809BAFC
- .4byte sB3_get_coin_amount
- .4byte sub_809BB20
- .4byte sub_809BB58
- .4byte sB6_load_battle
- .4byte sub_809B6A8
- .4byte sB8_set_virtual_address
- .4byte sB9_virtual_jump
- .4byte sBA_virtual_call
- .4byte sBB_virtual_if_jump
- .4byte sBC_virtual_if_call
- .4byte sBD_virtual_message
- .4byte sBE_virtual_load_text
- .4byte sBF_virtual_load_textbuffer
- .4byte sub_809B578
- .4byte sC1_hide_coins
- .4byte sC2_update_coins
- .4byte sC3_unknown
- .4byte sC4_unknown
- .4byte sub_809B8DC
- .4byte sC6_load_textvar_box_label
- .4byte s01_nop
- .4byte s01_nop
- .4byte s01_nop
- .4byte s01_nop
- .4byte s01_nop
- .4byte s01_nop
- .4byte sCD_set_obedient_bit
- .4byte sCE_check_obedient_bit
- .4byte sCF_execute_RAM_script_DMA
- .4byte s01_nop
- .4byte sD1_warp_v5
- .4byte sub_809BD70
- .4byte sub_809BB90
- .4byte sub_809BBB4
- .4byte ScrCmd_MossdeepGymSwitch
- .4byte sub_809BBDC
- .4byte sub_809A150
- .4byte sub_809BBE8
- .4byte sub_809BBFC
- .4byte sub_809AF94
- .4byte sub_809AC3C
- .4byte sub_8099D20
- .4byte sub_809BDD0
- .4byte sub_809BE0C
- .4byte sub_809ABF0
- .4byte sub_809BE54
- .4byte sub_809B214
- .4byte sub_809B0C4
+ .4byte ScrCmd_nop
+ .4byte ScrCmd_nop1
+ .4byte ScrCmd_end
+ .4byte ScrCmd_return
+ .4byte ScrCmd_call
+ .4byte ScrCmd_goto
+ .4byte ScrCmd_goto_if
+ .4byte ScrCmd_call_if
+ .4byte ScrCmd_gotostd
+ .4byte ScrCmd_callstd
+ .4byte ScrCmd_gotostd_if
+ .4byte ScrCmd_callstd_if
+ .4byte ScrCmd_gotoram
+ .4byte ScrCmd_killscript
+ .4byte ScrCmd_setmysteryeventstatus
+ .4byte ScrCmd_loadword
+ .4byte ScrCmd_loadbyte
+ .4byte ScrCmd_writebytetoaddr
+ .4byte ScrCmd_loadbytefromaddr
+ .4byte ScrCmd_setptrbyte
+ .4byte ScrCmd_copylocal
+ .4byte ScrCmd_copybyte
+ .4byte ScrCmd_setvar
+ .4byte ScrCmd_addvar
+ .4byte ScrCmd_subvar
+ .4byte ScrCmd_copyvar
+ .4byte ScrCmd_setorcopyvar
+ .4byte ScrCmd_compare_local_to_local
+ .4byte ScrCmd_compare_local_to_value
+ .4byte ScrCmd_compare_local_to_addr
+ .4byte ScrCmd_compare_addr_to_local
+ .4byte ScrCmd_compare_addr_to_value
+ .4byte ScrCmd_compare_addr_to_addr
+ .4byte ScrCmd_compare_var_to_value
+ .4byte ScrCmd_compare_var_to_var
+ .4byte ScrCmd_callnative
+ .4byte ScrCmd_gotonative
+ .4byte ScrCmd_special
+ .4byte ScrCmd_specialvar
+ .4byte ScrCmd_waitstate
+ .4byte ScrCmd_delay
+ .4byte ScrCmd_setflag
+ .4byte ScrCmd_clearflag
+ .4byte ScrCmd_checkflag
+ .4byte ScrCmd_initclock
+ .4byte ScrCmd_dodailyevents
+ .4byte ScrCmd_gettime
+ .4byte ScrCmd_playse
+ .4byte ScrCmd_waitse
+ .4byte ScrCmd_playfanfare
+ .4byte ScrCmd_waitfanfare
+ .4byte ScrCmd_playbgm
+ .4byte ScrCmd_savebgm
+ .4byte ScrCmd_fadedefaultbgm
+ .4byte ScrCmd_fadenewbgm
+ .4byte ScrCmd_fadeoutbgm
+ .4byte ScrCmd_fadeinbgm
+ .4byte ScrCmd_warp
+ .4byte ScrCmd_warpsilent
+ .4byte ScrCmd_warpdoor
+ .4byte ScrCmd_warphole
+ .4byte ScrCmd_warpteleport
+ .4byte ScrCmd_setwarp
+ .4byte ScrCmd_setdynamicwarp
+ .4byte ScrCmd_setdivewarp
+ .4byte ScrCmd_setholewarp
+ .4byte ScrCmd_getplayerxy
+ .4byte ScrCmd_countpokemon
+ .4byte ScrCmd_additem
+ .4byte ScrCmd_removeitem
+ .4byte ScrCmd_checkitemspace
+ .4byte ScrCmd_checkitem
+ .4byte ScrCmd_checkitemtype
+ .4byte ScrCmd_addpcitem
+ .4byte ScrCmd_checkpcitem
+ .4byte ScrCmd_adddecor
+ .4byte ScrCmd_removedecor
+ .4byte ScrCmd_hasdecor
+ .4byte ScrCmd_checkdecor
+ .4byte ScrCmd_applymovement
+ .4byte ScrCmd_applymovement_at
+ .4byte ScrCmd_waitmovement
+ .4byte ScrCmd_waitmovement_at
+ .4byte ScrCmd_removeobject
+ .4byte ScrCmd_removeobject_at
+ .4byte ScrCmd_addobject
+ .4byte ScrCmd_addobject_at
+ .4byte ScrCmd_setobjectxy
+ .4byte ScrCmd_showobject
+ .4byte ScrCmd_hideobject
+ .4byte ScrCmd_faceplayer
+ .4byte ScrCmd_turnobject
+ .4byte ScrCmd_trainerbattle
+ .4byte ScrCmd_battlebegin
+ .4byte ScrCmd_ontrainerbattleend
+ .4byte ScrCmd_ontrainerbattleendgoto
+ .4byte ScrCmd_checktrainerflag
+ .4byte ScrCmd_settrainerflag
+ .4byte ScrCmd_cleartrainerflag
+ .4byte ScrCmd_setobjectxyperm
+ .4byte ScrCmd_moveobjectoffscreen
+ .4byte ScrCmd_setobjectmovementtype
+ .4byte ScrCmd_waitmessage
+ .4byte ScrCmd_message
+ .4byte ScrCmd_closemessage
+ .4byte ScrCmd_lockall
+ .4byte ScrCmd_lock
+ .4byte ScrCmd_releaseall
+ .4byte ScrCmd_release
+ .4byte ScrCmd_waitbutton
+ .4byte ScrCmd_yesnobox
+ .4byte ScrCmd_multichoice
+ .4byte ScrCmd_multichoicedefault
+ .4byte ScrCmd_multichoicegrid
+ .4byte ScrCmd_drawbox
+ .4byte ScrCmd_erasebox
+ .4byte ScrCmd_drawboxtext
+ .4byte ScrCmd_drawpokepic
+ .4byte ScrCmd_erasepokepic
+ .4byte ScrCmd_drawcontestwinner
+ .4byte ScrCmd_braillemessage
+ .4byte ScrCmd_givepoke
+ .4byte ScrCmd_giveegg
+ .4byte ScrCmd_setpokemove
+ .4byte ScrCmd_checkpokemove
+ .4byte ScrCmd_getspeciesname
+ .4byte ScrCmd_getfirstpartypokename
+ .4byte ScrCmd_getpartypokename
+ .4byte ScrCmd_getitemname
+ .4byte ScrCmd_getdecorname
+ .4byte ScrCmd_getmovename
+ .4byte ScrCmd_getnumberstring
+ .4byte ScrCmd_getstdstring
+ .4byte ScrCmd_getstring
+ .4byte ScrCmd_pokemart
+ .4byte ScrCmd_pokemartdecor
+ .4byte ScrCmd_pokemartbp
+ .4byte ScrCmd_playslotmachine
+ .4byte ScrCmd_plantberrytree
+ .4byte ScrCmd_choosecontestpkmn
+ .4byte ScrCmd_startcontest
+ .4byte ScrCmd_showcontestresults
+ .4byte ScrCmd_contestlinktransfer
+ .4byte ScrCmd_random
+ .4byte ScrCmd_givemoney
+ .4byte ScrCmd_takemoney
+ .4byte ScrCmd_checkmoney
+ .4byte ScrCmd_showmoneybox
+ .4byte ScrCmd_hidemoneybox
+ .4byte ScrCmd_updatemoneybox
+ .4byte ScrCmd_getpricereduction
+ .4byte ScrCmd_fadescreen
+ .4byte ScrCmd_fadescreendelay
+ .4byte ScrCmd_setdarklevel
+ .4byte ScrCmd_animdarklevel
+ .4byte ScrCmd_messageautoscroll
+ .4byte ScrCmd_dofieldeffect
+ .4byte ScrCmd_setfieldeffect
+ .4byte ScrCmd_waitfieldeffect
+ .4byte ScrCmd_sethealplace
+ .4byte ScrCmd_checkplayergender
+ .4byte ScrCmd_playpokecry
+ .4byte ScrCmd_setmaptile
+ .4byte ScrCmd_resetweather
+ .4byte ScrCmd_setweather
+ .4byte ScrCmd_doweather
+ .4byte ScrCmd_tileeffect
+ .4byte ScrCmd_setmaplayoutindex
+ .4byte ScrCmd_setobjectpriority
+ .4byte ScrCmd_resetobjectpriority
+ .4byte ScrCmd_createvobject
+ .4byte ScrCmd_turnvobject
+ .4byte ScrCmd_opendoor
+ .4byte ScrCmd_closedoor
+ .4byte ScrCmd_waitdooranim
+ .4byte ScrCmd_setdooropen
+ .4byte ScrCmd_setdoorclosed
+ .4byte ScrCmd_addelevmenuitem
+ .4byte ScrCmd_showelevmenu
+ .4byte ScrCmd_checkcoins
+ .4byte ScrCmd_givecoins
+ .4byte ScrCmd_takecoins
+ .4byte ScrCmd_setwildbattle
+ .4byte ScrCmd_dowildbattle
+ .4byte ScrCmd_setvaddress
+ .4byte ScrCmd_vgoto
+ .4byte ScrCmd_vcall
+ .4byte ScrCmd_vgoto_if
+ .4byte ScrCmd_vcall_if
+ .4byte ScrCmd_vmessage
+ .4byte ScrCmd_vloadword
+ .4byte ScrCmd_vgetstring
+ .4byte ScrCmd_showcoinsbox
+ .4byte ScrCmd_hidecoinsbox
+ .4byte ScrCmd_updatecoinsbox
+ .4byte ScrCmd_incrementgamestat
+ .4byte ScrCmd_setescapewarp
+ .4byte ScrCmd_waitpokecry
+ .4byte ScrCmd_getboxname
+ .4byte ScrCmd_nop1
+ .4byte ScrCmd_nop1
+ .4byte ScrCmd_nop1
+ .4byte ScrCmd_nop1
+ .4byte ScrCmd_nop1
+ .4byte ScrCmd_nop1
+ .4byte ScrCmd_setpokeobedient
+ .4byte ScrCmd_checkpokeobedience
+ .4byte ScrCmd_cmdCF
+ .4byte ScrCmd_nop1
+ .4byte ScrCmd_warpD1
+ .4byte ScrCmd_setpokemetlocation
+ .4byte ScrCmd_mossdeepgym1
+ .4byte ScrCmd_mossdeepgym2
+ .4byte ScrCmd_mossdeepgym3
+ .4byte ScrCmd_mossdeepgym4
+ .4byte ScrCmd_warpD7
+ .4byte ScrCmd_cmdD8
+ .4byte ScrCmd_cmdD9
+ .4byte ScrCmd_cmdDA
+ .4byte ScrCmd_cmdDB
+ .4byte ScrCmd_fadescreenswapbuffers
+ .4byte ScrCmd_gettrainerclass
+ .4byte ScrCmd_gettrainername
+ .4byte ScrCmd_pokenavcall
+ .4byte ScrCmd_warpE0
+ .4byte ScrCmd_getcontesttype
+ .4byte ScrCmd_getitemnameplural
diff --git a/data/event_scripts.s b/data/event_scripts.s
index 4dd5761e5..0f6ea494e 100644
--- a/data/event_scripts.s
+++ b/data/event_scripts.s
@@ -12,13 +12,13 @@ gScriptCmdTableEnd:: @ 81DBA08
gSpecialVars:: @ 81DBA0C
.incbin "baserom.gba", 0x1dba0c, 0x58
-gUnknown_081DBA64:: @ 81DBA64
+gSpecials:: @ 81DBA64
.incbin "baserom.gba", 0x1dba64, 0x83c
-gUnknown_081DC2A0:: @ 81DC2A0
+gStdScripts:: @ 81DC2A0
.incbin "baserom.gba", 0x1dc2a0, 0x2c
-gUnknown_081DC2CC:: @ 81DC2CC
+gStdScripts_End:: @ 81DC2CC
.incbin "baserom.gba", 0x1dc2cc, 0x34ee
gUnknown_081DF7BA:: @ 81DF7BA
@@ -822,7 +822,15 @@ gUnknown_0827EE09:: @ 27EE09
.incbin "baserom.gba", 0x27ee09, 0x2
gUnknown_0827EE0B:: @ 827EE0B
- .incbin "baserom.gba", 0x27ee0b, 0x118fa
+ .incbin "baserom.gba", 0x27ee0b, 0x46a
+
+ .include "data/text/tv.inc"
+
+ .incbin "baserom.gba", 0x0028c7e9, 0x90f
+
+ .include "data/text/pokemon_news.inc"
+
+ .incbin "baserom.gba", 0x28e066, 0x269f
gUnknown_08290705:: @ 8290705
.incbin "baserom.gba", 0x290705, 0xeb
diff --git a/data/fanfares.s b/data/fanfares.s
index 26d2d82d1..2a0c2576a 100644
--- a/data/fanfares.s
+++ b/data/fanfares.s
@@ -5,4 +5,22 @@
.align 2, 0
sFanfares:: @ 85248BC
- .incbin "baserom.gba", 0x5248bc, 0x48
+@ song number, duration
+ .2byte 0x016f, 0x0050
+ .2byte 0x0172, 0x00a0
+ .2byte 0x0173, 0x00dc
+ .2byte 0x0174, 0x00dc
+ .2byte 0x0170, 0x00a0
+ .2byte 0x0171, 0x0154
+ .2byte 0x017a, 0x00b4
+ .2byte 0x0183, 0x0078
+ .2byte 0x0184, 0x02c6
+ .2byte 0x0185, 0x00fa
+ .2byte 0x0186, 0x0096
+ .2byte 0x0187, 0x00a0
+ .2byte 0x0226, 0x01c2
+ .2byte 0x0212, 0x00aa
+ .2byte 0x0211, 0x00c4
+ .2byte 0x01cb, 0x0139
+ .2byte 0x01d2, 0x013e
+ .2byte 0x01cc, 0x0087
diff --git a/data/fldeff_emotion.s b/data/fldeff_emotion.s
deleted file mode 100644
index f2c90d637..000000000
--- a/data/fldeff_emotion.s
+++ /dev/null
@@ -1,11 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2, 0
-
-gUnknown_085507B4:: @ 85507B4
- .incbin "baserom.gba", 0x5507b4, 0x18
-
-gUnknown_085507CC:: @ 85507CC
- .incbin "baserom.gba", 0x5507cc, 0x18
diff --git a/data/graphics.s b/data/graphics.s
index e817e62dd..e1b76565a 100644
--- a/data/graphics.s
+++ b/data/graphics.s
@@ -207,10 +207,10 @@ gUnknown_08C2EA9C:: @ 8C2EA9C
.incbin "baserom.gba", 0xc2ea9c, 0xf6c
@ 8C2FA08
- .include "data/graphics/pokemon/mon_graphics.inc"
+ .include "data/graphics/pokemon/graphics.inc"
@ 8D51DC8
- .include "data/graphics/trainers/trainer_graphics.inc"
+ .include "data/graphics/trainers/graphics.inc"
.align 2
gMonIcon_QuestionMark:: @ 8D774D0
@@ -230,19 +230,82 @@ gUnknown_08D77AE4:: @ 8D77AE4
.incbin "baserom.gba", 0xd77ae4, 0x28
gUnknown_08D77B0C:: @ 8D77B0C
- .incbin "baserom.gba", 0xd77b0c, 0x25fc
+ .incbin "baserom.gba", 0xd77b0c, 0x25c
+
+gUnknown_08D77D68:: @ 8D77D68
+ .incbin "baserom.gba", 0xd77d68, 0x5b0
+
+gUnknown_08D78318:: @ 8D78318
+ .incbin "baserom.gba", 0xd78318, 0x38
+
+gUnknown_08D78350:: @ 8D78350
+ .incbin "baserom.gba", 0xd78350, 0x2b0
+
+gUnknown_08D78600:: @ 8D78600
+ .incbin "baserom.gba", 0xd78600, 0x678
+
+gUnknown_08D78C78:: @ 8D78C78
+ .incbin "baserom.gba", 0xd78C78, 0x40
+
+gUnknown_08D78CB8:: @ 8D78CB8
+ .incbin "baserom.gba", 0xd78CB8, 0x2b0
+
+gUnknown_08D78F68:: @ 8D78F68
+ .incbin "baserom.gba", 0xd78f68, 0x5f8
+
+gUnknown_08D79560:: @ 8D79560
+ .incbin "baserom.gba", 0xd79560, 0x48
+
+gUnknown_08D795A8:: @ 8D795A8
+ .incbin "baserom.gba", 0xd795A8, 0x2b0
+
+gUnknown_08D79858:: @ 8D79858
+ .incbin "baserom.gba", 0xd79858, 0x5b8
+
+gUnknown_08D79E10:: @ 8D79E10
+ .incbin "baserom.gba", 0xd79E10, 0x48
+
+gUnknown_08D79E58:: @ 8D79E58
+ .incbin "baserom.gba", 0xd79e58, 0x2b0
gUnknown_08D7A108:: @ 8D7A108
- .incbin "baserom.gba", 0xd7a108, 0x618
+ .incbin "baserom.gba", 0xd7a108, 0x5d4
+
+gUnknown_08D7A6DC:: @ 8D7A6DC
+ .incbin "baserom.gba", 0xd7a6DC, 0x44
gUnknown_08D7A720:: @ 8D7A720
- .incbin "baserom.gba", 0xd7a720, 0x13f4
+ .incbin "baserom.gba", 0xd7a720, 0x2b0
+
+gUnknown_08D7A9D0:: @ 8D7A9D0
+ .incbin "baserom.gba", 0xd7a9D0, 0x5a8
+
+gUnknown_08D7AF78:: @ 8D7AF78
+ .incbin "baserom.gba", 0xd7af78, 0x40
+
+gUnknown_08D7AFB8:: @ 8D7AFB8
+ .incbin "baserom.gba", 0xd7aFB8, 0x2b0
+
+gUnknown_08D7B268:: @ 8D7B268
+ .incbin "baserom.gba", 0xd7b268, 0x5c0
+
+gUnknown_08D7B828:: @ 8D7B828
+ .incbin "baserom.gba", 0xd7b828, 0x3c
+
+gUnknown_08D7B864:: @ 8D7B864
+ .incbin "baserom.gba", 0xd7b864, 0x2b0
gUnknown_08D7BB14:: @ 8D7BB14
- .incbin "baserom.gba", 0xd7bb14, 0x640
+ .incbin "baserom.gba", 0xd7bb14, 0x5f8
+
+gUnknown_08D7C10C:: @ 8D7C10C
+ .incbin "baserom.gba", 0xd7c10c, 0x48
gUnknown_08D7C154:: @ 8D7C154
- .incbin "baserom.gba", 0xd7c154, 0x2ec
+ .incbin "baserom.gba", 0xd7c154, 0x2b0
+
+gUnknown_08D7C404:: @ 8D7C404
+ .incbin "baserom.gba", 0xd7c404, 0x3c
gUnknown_08D7C440:: @ 8D7C440
.incbin "baserom.gba", 0xd7c440, 0x5ac
@@ -263,7 +326,10 @@ gUnknown_08D7D590:: @ 8D7D590
.incbin "baserom.gba", 0xd7d590, 0x674
gUnknown_08D7DC04:: @ 8D7DC04
- .incbin "baserom.gba", 0xd7dc04, 0x2f0
+ .incbin "baserom.gba", 0xd7dc04, 0x2b0
+
+gUnknown_08D7DEB4:: @ 8D7DEB4
+ .incbin "baserom.gba", 0xd7deb4, 0x40
gUnknown_08D7DEF4:: @ 8D7DEF4
.incbin "baserom.gba", 0xd7def4, 0x3c
@@ -299,13 +365,49 @@ gUnknown_08D7E1F8:: @ 8D7E1F8
.incbin "baserom.gba", 0xd7e1f8, 0x3c
gUnknown_08D7E234:: @ 8D7E234
- .incbin "baserom.gba", 0xd7e234, 0x17c4
+ .incbin "baserom.gba", 0xd7e234, 0x4c
+
+gUnknown_08D7E280:: @ 8D7E280
+ .incbin "baserom.gba", 0xd7e280, 0x588
+
+gUnknown_08D7E808:: @ 8D7E808
+ .incbin "baserom.gba", 0xd7e808, 0x1bc
+
+gUnknown_08D7E9C4:: @ 8D7E9C4
+ .incbin "baserom.gba", 0xd7e9C4, 0x710
+
+gUnknown_08D7F0D4:: @ 8D7F0D4
+ .incbin "baserom.gba", 0xd7F0D4, 0x238
+
+gUnknown_08D7F30C:: @ 8D7F30C
+ .incbin "baserom.gba", 0xd7F30c, 0x544
+
+gUnknown_08D7F850:: @ 8D7F850
+ .incbin "baserom.gba", 0xd7F850, 0x1a8
gUnknown_08D7F9F8:: @ 8D7F9F8
.incbin "baserom.gba", 0xd7f9f8, 0x4cc
gUnknown_08D7FEC4:: @ 8D7FEC4
- .incbin "baserom.gba", 0xd7fec4, 0x174c
+ .incbin "baserom.gba", 0xd7fec4, 0x190
+
+gUnknown_08D80054:: @ 8D80054
+ .incbin "baserom.gba", 0xd80054, 0x60c
+
+gUnknown_08D80660:: @ 8D80660
+ .incbin "baserom.gba", 0xd80660, 0x1a4
+
+gUnknown_08D80804:: @ 8D80804
+ .incbin "baserom.gba", 0xd80804, 0x54c
+
+gUnknown_08D80D50:: @ 8D80D50
+ .incbin "baserom.gba", 0xd80d50, 0x14C
+
+gUnknown_08D80E9C:: @ 8D80E9C
+ .incbin "baserom.gba", 0xd80e9c, 0x5e0
+
+gUnknown_08D8147C:: @ 8D8147C
+ .incbin "baserom.gba", 0xd8147C, 0x194
gUnknown_08D81610:: @ 8D81610
.incbin "baserom.gba", 0xd81610, 0x81c
diff --git a/data/graphics/pokemon/animation_delay_table.inc b/data/graphics/pokemon/animation_delay_table.inc
new file mode 100644
index 000000000..55d602bab
--- /dev/null
+++ b/data/graphics/pokemon/animation_delay_table.inc
@@ -0,0 +1,412 @@
+gMonAnimationDelayTable:: @ 8329B87
+ .byte 0x00 @ SPECIES_BULBASAUR
+ .byte 0x00 @ SPECIES_IVYSAUR
+ .byte 0x00 @ SPECIES_VENUSAUR
+ .byte 0x00 @ SPECIES_CHARMANDER
+ .byte 0x00 @ SPECIES_CHARMELEON
+ .byte 0x00 @ SPECIES_CHARIZARD
+ .byte 0x00 @ SPECIES_SQUIRTLE
+ .byte 0x00 @ SPECIES_WARTORTLE
+ .byte 0x32 @ SPECIES_BLASTOISE
+ .byte 0x00 @ SPECIES_CATERPIE
+ .byte 0x00 @ SPECIES_METAPOD
+ .byte 0x00 @ SPECIES_BUTTERFREE
+ .byte 0x0a @ SPECIES_WEEDLE
+ .byte 0x14 @ SPECIES_KAKUNA
+ .byte 0x23 @ SPECIES_BEEDRILL
+ .byte 0x00 @ SPECIES_PIDGEY
+ .byte 0x19 @ SPECIES_PIDGEOTTO
+ .byte 0x00 @ SPECIES_PIDGEOT
+ .byte 0x00 @ SPECIES_RATTATA
+ .byte 0x00 @ SPECIES_RATICATE
+ .byte 0x00 @ SPECIES_SPEAROW
+ .byte 0x02 @ SPECIES_FEAROW
+ .byte 0x1e @ SPECIES_EKANS
+ .byte 0x00 @ SPECIES_ARBOK
+ .byte 0x00 @ SPECIES_PIKACHU
+ .byte 0x00 @ SPECIES_RAICHU
+ .byte 0x00 @ SPECIES_SANDSHREW
+ .byte 0x00 @ SPECIES_SANDSLASH
+ .byte 0x1c @ SPECIES_NIDORAN_F
+ .byte 0x00 @ SPECIES_NIDORINA
+ .byte 0x00 @ SPECIES_NIDOQUEEN
+ .byte 0x00 @ SPECIES_NIDORAN_M
+ .byte 0x00 @ SPECIES_NIDORINO
+ .byte 0x19 @ SPECIES_NIDOKING
+ .byte 0x00 @ SPECIES_CLEFAIRY
+ .byte 0x00 @ SPECIES_CLEFABLE
+ .byte 0x00 @ SPECIES_VULPIX
+ .byte 0x00 @ SPECIES_NINETALES
+ .byte 0x00 @ SPECIES_JIGGLYPUFF
+ .byte 0x00 @ SPECIES_WIGGLYTUFF
+ .byte 0x00 @ SPECIES_ZUBAT
+ .byte 0x00 @ SPECIES_GOLBAT
+ .byte 0x00 @ SPECIES_ODDISH
+ .byte 0x00 @ SPECIES_GLOOM
+ .byte 0x00 @ SPECIES_VILEPLUME
+ .byte 0x0a @ SPECIES_PARAS
+ .byte 0x2d @ SPECIES_PARASECT
+ .byte 0x14 @ SPECIES_VENONAT
+ .byte 0x00 @ SPECIES_VENOMOTH
+ .byte 0x19 @ SPECIES_DIGLETT
+ .byte 0x23 @ SPECIES_DUGTRIO
+ .byte 0x28 @ SPECIES_MEOWTH
+ .byte 0x14 @ SPECIES_PERSIAN
+ .byte 0x00 @ SPECIES_PSYDUCK
+ .byte 0x00 @ SPECIES_GOLDUCK
+ .byte 0x14 @ SPECIES_MANKEY
+ .byte 0x00 @ SPECIES_PRIMEAPE
+ .byte 0x1e @ SPECIES_GROWLITHE
+ .byte 0x28 @ SPECIES_ARCANINE
+ .byte 0x00 @ SPECIES_POLIWAG
+ .byte 0x05 @ SPECIES_POLIWHIRL
+ .byte 0x00 @ SPECIES_POLIWRATH
+ .byte 0x00 @ SPECIES_ABRA
+ .byte 0x00 @ SPECIES_KADABRA
+ .byte 0x00 @ SPECIES_ALAKAZAM
+ .byte 0x00 @ SPECIES_MACHOP
+ .byte 0x00 @ SPECIES_MACHOKE
+ .byte 0x00 @ SPECIES_MACHAMP
+ .byte 0x00 @ SPECIES_BELLSPROUT
+ .byte 0x03 @ SPECIES_WEEPINBELL
+ .byte 0x00 @ SPECIES_VICTREEBEL
+ .byte 0x00 @ SPECIES_TENTACOOL
+ .byte 0x00 @ SPECIES_TENTACRUEL
+ .byte 0x00 @ SPECIES_GEODUDE
+ .byte 0x00 @ SPECIES_GRAVELER
+ .byte 0x00 @ SPECIES_GOLEM
+ .byte 0x00 @ SPECIES_PONYTA
+ .byte 0x00 @ SPECIES_RAPIDASH
+ .byte 0x00 @ SPECIES_SLOWPOKE
+ .byte 0x00 @ SPECIES_SLOWBRO
+ .byte 0x00 @ SPECIES_MAGNEMITE
+ .byte 0x00 @ SPECIES_MAGNETON
+ .byte 0x00 @ SPECIES_FARFETCH_D
+ .byte 0x00 @ SPECIES_DODUO
+ .byte 0x00 @ SPECIES_DODRIO
+ .byte 0x00 @ SPECIES_SEEL
+ .byte 0x00 @ SPECIES_DEWGONG
+ .byte 0x00 @ SPECIES_GRIMER
+ .byte 0x2d @ SPECIES_MUK
+ .byte 0x14 @ SPECIES_SHELLDER
+ .byte 0x00 @ SPECIES_CLOYSTER
+ .byte 0x00 @ SPECIES_GASTLY
+ .byte 0x17 @ SPECIES_HAUNTER
+ .byte 0x00 @ SPECIES_GENGAR
+ .byte 0x00 @ SPECIES_ONIX
+ .byte 0x30 @ SPECIES_DROWZEE
+ .byte 0x28 @ SPECIES_HYPNO
+ .byte 0x00 @ SPECIES_KRABBY
+ .byte 0x00 @ SPECIES_KINGLER
+ .byte 0x00 @ SPECIES_VOLTORB
+ .byte 0x00 @ SPECIES_ELECTRODE
+ .byte 0x00 @ SPECIES_EXEGGCUTE
+ .byte 0x00 @ SPECIES_EXEGGUTOR
+ .byte 0x00 @ SPECIES_CUBONE
+ .byte 0x00 @ SPECIES_MAROWAK
+ .byte 0x00 @ SPECIES_HITMONLEE
+ .byte 0x19 @ SPECIES_HITMONCHAN
+ .byte 0x00 @ SPECIES_LICKITUNG
+ .byte 0x00 @ SPECIES_KOFFING
+ .byte 0x00 @ SPECIES_WEEZING
+ .byte 0x00 @ SPECIES_RHYHORN
+ .byte 0x00 @ SPECIES_RHYDON
+ .byte 0x00 @ SPECIES_CHANSEY
+ .byte 0x00 @ SPECIES_TANGELA
+ .byte 0x00 @ SPECIES_KANGASKHAN
+ .byte 0x00 @ SPECIES_HORSEA
+ .byte 0x00 @ SPECIES_SEADRA
+ .byte 0x00 @ SPECIES_GOLDEEN
+ .byte 0x00 @ SPECIES_SEAKING
+ .byte 0x00 @ SPECIES_STARYU
+ .byte 0x00 @ SPECIES_STARMIE
+ .byte 0x00 @ SPECIES_MR_MIME
+ .byte 0x0a @ SPECIES_SCYTHER
+ .byte 0x00 @ SPECIES_JYNX
+ .byte 0x00 @ SPECIES_ELECTABUZZ
+ .byte 0x00 @ SPECIES_MAGMAR
+ .byte 0x00 @ SPECIES_PINSIR
+ .byte 0x0a @ SPECIES_TAUROS
+ .byte 0x00 @ SPECIES_MAGIKARP
+ .byte 0x00 @ SPECIES_GYARADOS
+ .byte 0x00 @ SPECIES_LAPRAS
+ .byte 0x00 @ SPECIES_DITTO
+ .byte 0x00 @ SPECIES_EEVEE
+ .byte 0x00 @ SPECIES_VAPOREON
+ .byte 0x00 @ SPECIES_JOLTEON
+ .byte 0x00 @ SPECIES_FLAREON
+ .byte 0x00 @ SPECIES_PORYGON
+ .byte 0x00 @ SPECIES_OMANYTE
+ .byte 0x00 @ SPECIES_OMASTAR
+ .byte 0x00 @ SPECIES_KABUTO
+ .byte 0x00 @ SPECIES_KABUTOPS
+ .byte 0x00 @ SPECIES_AERODACTYL
+ .byte 0x00 @ SPECIES_SNORLAX
+ .byte 0x00 @ SPECIES_ARTICUNO
+ .byte 0x00 @ SPECIES_ZAPDOS
+ .byte 0x00 @ SPECIES_MOLTRES
+ .byte 0x00 @ SPECIES_DRATINI
+ .byte 0x00 @ SPECIES_DRAGONAIR
+ .byte 0x00 @ SPECIES_DRAGONITE
+ .byte 0x00 @ SPECIES_MEWTWO
+ .byte 0x00 @ SPECIES_MEW
+ .byte 0x00 @ SPECIES_CHIKORITA
+ .byte 0x00 @ SPECIES_BAYLEEF
+ .byte 0x00 @ SPECIES_MEGANIUM
+ .byte 0x00 @ SPECIES_CYNDAQUIL
+ .byte 0x00 @ SPECIES_QUILAVA
+ .byte 0x14 @ SPECIES_TYPHLOSION
+ .byte 0x00 @ SPECIES_TOTODILE
+ .byte 0x00 @ SPECIES_CROCONAW
+ .byte 0x05 @ SPECIES_FERALIGATR
+ .byte 0x00 @ SPECIES_SENTRET
+ .byte 0x00 @ SPECIES_FURRET
+ .byte 0x00 @ SPECIES_HOOTHOOT
+ .byte 0x00 @ SPECIES_NOCTOWL
+ .byte 0x00 @ SPECIES_LEDYBA
+ .byte 0x00 @ SPECIES_LEDIAN
+ .byte 0x00 @ SPECIES_SPINARAK
+ .byte 0x00 @ SPECIES_ARIADOS
+ .byte 0x00 @ SPECIES_CROBAT
+ .byte 0x00 @ SPECIES_CHINCHOU
+ .byte 0x00 @ SPECIES_LANTURN
+ .byte 0x00 @ SPECIES_PICHU
+ .byte 0x00 @ SPECIES_CLEFFA
+ .byte 0x00 @ SPECIES_IGGLYBUFF
+ .byte 0x00 @ SPECIES_TOGEPI
+ .byte 0x00 @ SPECIES_TOGETIC
+ .byte 0x1e @ SPECIES_NATU
+ .byte 0x00 @ SPECIES_XATU
+ .byte 0x32 @ SPECIES_MAREEP
+ .byte 0x00 @ SPECIES_FLAAFFY
+ .byte 0x0a @ SPECIES_AMPHAROS
+ .byte 0x00 @ SPECIES_BELLOSSOM
+ .byte 0x00 @ SPECIES_MARILL
+ .byte 0x00 @ SPECIES_AZUMARILL
+ .byte 0x00 @ SPECIES_SUDOWOODO
+ .byte 0x28 @ SPECIES_POLITOED
+ .byte 0x00 @ SPECIES_HOPPIP
+ .byte 0x00 @ SPECIES_SKIPLOOM
+ .byte 0x00 @ SPECIES_JUMPLUFF
+ .byte 0x00 @ SPECIES_AIPOM
+ .byte 0x00 @ SPECIES_SUNKERN
+ .byte 0x00 @ SPECIES_SUNFLORA
+ .byte 0x00 @ SPECIES_YANMA
+ .byte 0x00 @ SPECIES_WOOPER
+ .byte 0x00 @ SPECIES_QUAGSIRE
+ .byte 0x00 @ SPECIES_ESPEON
+ .byte 0x00 @ SPECIES_UMBREON
+ .byte 0x00 @ SPECIES_MURKROW
+ .byte 0x00 @ SPECIES_SLOWKING
+ .byte 0x00 @ SPECIES_MISDREAVUS
+ .byte 0x00 @ SPECIES_UNOWN
+ .byte 0x00 @ SPECIES_WOBBUFFET
+ .byte 0x00 @ SPECIES_GIRAFARIG
+ .byte 0x00 @ SPECIES_PINECO
+ .byte 0x00 @ SPECIES_FORRETRESS
+ .byte 0x0a @ SPECIES_DUNSPARCE
+ .byte 0x00 @ SPECIES_GLIGAR
+ .byte 0x2d @ SPECIES_STEELIX
+ .byte 0x00 @ SPECIES_SNUBBULL
+ .byte 0x00 @ SPECIES_GRANBULL
+ .byte 0x27 @ SPECIES_QWILFISH
+ .byte 0x13 @ SPECIES_SCIZOR
+ .byte 0x00 @ SPECIES_SHUCKLE
+ .byte 0x00 @ SPECIES_HERACROSS
+ .byte 0x00 @ SPECIES_SNEASEL
+ .byte 0x00 @ SPECIES_TEDDIURSA
+ .byte 0x00 @ SPECIES_URSARING
+ .byte 0x00 @ SPECIES_SLUGMA
+ .byte 0x00 @ SPECIES_MAGCARGO
+ .byte 0x00 @ SPECIES_SWINUB
+ .byte 0x00 @ SPECIES_PILOSWINE
+ .byte 0x00 @ SPECIES_CORSOLA
+ .byte 0x00 @ SPECIES_REMORAID
+ .byte 0x14 @ SPECIES_OCTILLERY
+ .byte 0x00 @ SPECIES_DELIBIRD
+ .byte 0x00 @ SPECIES_MANTINE
+ .byte 0x00 @ SPECIES_SKARMORY
+ .byte 0x00 @ SPECIES_HOUNDOUR
+ .byte 0x00 @ SPECIES_HOUNDOOM
+ .byte 0x00 @ SPECIES_KINGDRA
+ .byte 0x00 @ SPECIES_PHANPY
+ .byte 0x00 @ SPECIES_DONPHAN
+ .byte 0x00 @ SPECIES_PORYGON2
+ .byte 0x00 @ SPECIES_STANTLER
+ .byte 0x00 @ SPECIES_SMEARGLE
+ .byte 0x00 @ SPECIES_TYROGUE
+ .byte 0x00 @ SPECIES_HITMONTOP
+ .byte 0x28 @ SPECIES_SMOOCHUM
+ .byte 0x00 @ SPECIES_ELEKID
+ .byte 0x00 @ SPECIES_MAGBY
+ .byte 0x00 @ SPECIES_MILTANK
+ .byte 0x00 @ SPECIES_BLISSEY
+ .byte 0x00 @ SPECIES_RAIKOU
+ .byte 0x00 @ SPECIES_ENTEI
+ .byte 0x00 @ SPECIES_SUICUNE
+ .byte 0x00 @ SPECIES_LARVITAR
+ .byte 0x00 @ SPECIES_PUPITAR
+ .byte 0x0a @ SPECIES_TYRANITAR
+ .byte 0x14 @ SPECIES_LUGIA
+ .byte 0x00 @ SPECIES_HO_OH
+ .byte 0x00 @ SPECIES_CELEBI
+ .byte 0x00 @ 252
+ .byte 0x00 @ 253
+ .byte 0x00 @ 254
+ .byte 0x00 @ 255
+ .byte 0x00 @ 256
+ .byte 0x00 @ 257
+ .byte 0x00 @ 258
+ .byte 0x00 @ 259
+ .byte 0x00 @ 260
+ .byte 0x00 @ 261
+ .byte 0x00 @ 262
+ .byte 0x00 @ 263
+ .byte 0x00 @ 264
+ .byte 0x00 @ 265
+ .byte 0x00 @ 266
+ .byte 0x00 @ 267
+ .byte 0x00 @ 268
+ .byte 0x00 @ 269
+ .byte 0x00 @ 270
+ .byte 0x00 @ 271
+ .byte 0x00 @ 272
+ .byte 0x00 @ 273
+ .byte 0x00 @ 274
+ .byte 0x00 @ 275
+ .byte 0x00 @ 276
+ .byte 0x00 @ SPECIES_TREECKO
+ .byte 0x00 @ SPECIES_GROVYLE
+ .byte 0x00 @ SPECIES_SCEPTILE
+ .byte 0x00 @ SPECIES_TORCHIC
+ .byte 0x00 @ SPECIES_COMBUSKEN
+ .byte 0x00 @ SPECIES_BLAZIKEN
+ .byte 0x00 @ SPECIES_MUDKIP
+ .byte 0x00 @ SPECIES_MARSHTOMP
+ .byte 0x00 @ SPECIES_SWAMPERT
+ .byte 0x00 @ SPECIES_POOCHYENA
+ .byte 0x00 @ SPECIES_MIGHTYENA
+ .byte 0x00 @ SPECIES_ZIGZAGOON
+ .byte 0x00 @ SPECIES_LINOONE
+ .byte 0x00 @ SPECIES_WURMPLE
+ .byte 0x00 @ SPECIES_SILCOON
+ .byte 0x00 @ SPECIES_BEAUTIFLY
+ .byte 0x00 @ SPECIES_CASCOON
+ .byte 0x00 @ SPECIES_DUSTOX
+ .byte 0x00 @ SPECIES_LOTAD
+ .byte 0x00 @ SPECIES_LOMBRE
+ .byte 0x00 @ SPECIES_LUDICOLO
+ .byte 0x00 @ SPECIES_SEEDOT
+ .byte 0x00 @ SPECIES_NUZLEAF
+ .byte 0x00 @ SPECIES_SHIFTRY
+ .byte 0x00 @ SPECIES_NINCADA
+ .byte 0x00 @ SPECIES_NINJASK
+ .byte 0x00 @ SPECIES_SHEDINJA
+ .byte 0x00 @ SPECIES_TAILLOW
+ .byte 0x00 @ SPECIES_SWELLOW
+ .byte 0x00 @ SPECIES_SHROOMISH
+ .byte 0x00 @ SPECIES_BRELOOM
+ .byte 0x00 @ SPECIES_SPINDA
+ .byte 0x00 @ SPECIES_WINGULL
+ .byte 0x00 @ SPECIES_PELIPPER
+ .byte 0x00 @ SPECIES_SURSKIT
+ .byte 0x00 @ SPECIES_MASQUERAIN
+ .byte 0x00 @ SPECIES_WAILMER
+ .byte 0x0a @ SPECIES_WAILORD
+ .byte 0x00 @ SPECIES_SKITTY
+ .byte 0x00 @ SPECIES_DELCATTY
+ .byte 0x1e @ SPECIES_KECLEON
+ .byte 0x00 @ SPECIES_BALTOY
+ .byte 0x00 @ SPECIES_CLAYDOL
+ .byte 0x00 @ SPECIES_NOSEPASS
+ .byte 0x00 @ SPECIES_TORKOAL
+ .byte 0x00 @ SPECIES_SABLEYE
+ .byte 0x00 @ SPECIES_BARBOACH
+ .byte 0x00 @ SPECIES_WHISCASH
+ .byte 0x00 @ SPECIES_LUVDISC
+ .byte 0x00 @ SPECIES_CORPHISH
+ .byte 0x00 @ SPECIES_CRAWDAUNT
+ .byte 0x00 @ SPECIES_FEEBAS
+ .byte 0x2d @ SPECIES_MILOTIC
+ .byte 0x00 @ SPECIES_CARVANHA
+ .byte 0x00 @ SPECIES_SHARPEDO
+ .byte 0x00 @ SPECIES_TRAPINCH
+ .byte 0x00 @ SPECIES_VIBRAVA
+ .byte 0x00 @ SPECIES_FLYGON
+ .byte 0x00 @ SPECIES_MAKUHITA
+ .byte 0x00 @ SPECIES_HARIYAMA
+ .byte 0x00 @ SPECIES_ELECTRIKE
+ .byte 0x00 @ SPECIES_MANECTRIC
+ .byte 0x00 @ SPECIES_NUMEL
+ .byte 0x00 @ SPECIES_CAMERUPT
+ .byte 0x0f @ SPECIES_SPHEAL
+ .byte 0x00 @ SPECIES_SEALEO
+ .byte 0x00 @ SPECIES_WALREIN
+ .byte 0x00 @ SPECIES_CACNEA
+ .byte 0x00 @ SPECIES_CACTURNE
+ .byte 0x14 @ SPECIES_SNORUNT
+ .byte 0x00 @ SPECIES_GLALIE
+ .byte 0x00 @ SPECIES_LUNATONE
+ .byte 0x00 @ SPECIES_SOLROCK
+ .byte 0x00 @ SPECIES_AZURILL
+ .byte 0x00 @ SPECIES_SPOINK
+ .byte 0x0f @ SPECIES_GRUMPIG
+ .byte 0x00 @ SPECIES_PLUSLE
+ .byte 0x00 @ SPECIES_MINUN
+ .byte 0x00 @ SPECIES_MAWILE
+ .byte 0x00 @ SPECIES_MEDITITE
+ .byte 0x00 @ SPECIES_MEDICHAM
+ .byte 0x00 @ SPECIES_SWABLU
+ .byte 0x00 @ SPECIES_ALTARIA
+ .byte 0x0f @ SPECIES_WYNAUT
+ .byte 0x00 @ SPECIES_DUSKULL
+ .byte 0x1e @ SPECIES_DUSCLOPS
+ .byte 0x00 @ SPECIES_ROSELIA
+ .byte 0x00 @ SPECIES_SLAKOTH
+ .byte 0x00 @ SPECIES_VIGOROTH
+ .byte 0x00 @ SPECIES_SLAKING
+ .byte 0x00 @ SPECIES_GULPIN
+ .byte 0x00 @ SPECIES_SWALOT
+ .byte 0x00 @ SPECIES_TROPIUS
+ .byte 0x00 @ SPECIES_WHISMUR
+ .byte 0x00 @ SPECIES_LOUDRED
+ .byte 0x00 @ SPECIES_EXPLOUD
+ .byte 0x00 @ SPECIES_CLAMPERL
+ .byte 0x00 @ SPECIES_HUNTAIL
+ .byte 0x00 @ SPECIES_GOREBYSS
+ .byte 0x2d @ SPECIES_ABSOL
+ .byte 0x00 @ SPECIES_SHUPPET
+ .byte 0x00 @ SPECIES_BANETTE
+ .byte 0x00 @ SPECIES_SEVIPER
+ .byte 0x00 @ SPECIES_ZANGOOSE
+ .byte 0x00 @ SPECIES_RELICANTH
+ .byte 0x00 @ SPECIES_ARON
+ .byte 0x00 @ SPECIES_LAIRON
+ .byte 0x00 @ SPECIES_AGGRON
+ .byte 0x00 @ SPECIES_CASTFORM
+ .byte 0x00 @ SPECIES_VOLBEAT
+ .byte 0x00 @ SPECIES_ILLUMISE
+ .byte 0x00 @ SPECIES_LILEEP
+ .byte 0x00 @ SPECIES_CRADILY
+ .byte 0x00 @ SPECIES_ANORITH
+ .byte 0x00 @ SPECIES_ARMALDO
+ .byte 0x00 @ SPECIES_RALTS
+ .byte 0x00 @ SPECIES_KIRLIA
+ .byte 0x00 @ SPECIES_GARDEVOIR
+ .byte 0x00 @ SPECIES_BAGON
+ .byte 0x00 @ SPECIES_SHELGON
+ .byte 0x46 @ SPECIES_SALAMENCE
+ .byte 0x00 @ SPECIES_BELDUM
+ .byte 0x00 @ SPECIES_METANG
+ .byte 0x00 @ SPECIES_METAGROSS
+ .byte 0x00 @ SPECIES_REGIROCK
+ .byte 0x00 @ SPECIES_REGICE
+ .byte 0x00 @ SPECIES_REGISTEEL
+ .byte 0x3c @ SPECIES_KYOGRE
+ .byte 0x00 @ SPECIES_GROUDON
+ .byte 0x3c @ SPECIES_RAYQUAZA
+ .byte 0x00 @ SPECIES_LATIAS
+ .byte 0x00 @ SPECIES_LATIOS
+ .byte 0x00 @ SPECIES_JIRACHI
+ .byte 0x00 @ SPECIES_DEOXYS
+ .byte 0x00 @ SPECIES_CHIMECHO
diff --git a/data/graphics/pokemon/mon_back_pic_table.inc b/data/graphics/pokemon/back_pic_table.inc
index b1b477f30..b1b477f30 100644
--- a/data/graphics/pokemon/mon_back_pic_table.inc
+++ b/data/graphics/pokemon/back_pic_table.inc
diff --git a/data/graphics/pokemon/mon_footprint_table.inc b/data/graphics/pokemon/footprint_table.inc
index b5de0e11d..b5de0e11d 100644
--- a/data/graphics/pokemon/mon_footprint_table.inc
+++ b/data/graphics/pokemon/footprint_table.inc
diff --git a/data/graphics/pokemon/front_anim_ids_table.inc b/data/graphics/pokemon/front_anim_ids_table.inc
new file mode 100644
index 000000000..6e2d7fe0e
--- /dev/null
+++ b/data/graphics/pokemon/front_anim_ids_table.inc
@@ -0,0 +1,412 @@
+gMonFrontAnimIdsTable:: @ 83299EC
+ .byte 0x06 @ SPECIES_BULBASAUR
+ .byte 0x17 @ SPECIES_IVYSAUR
+ .byte 0x2f @ SPECIES_VENUSAUR
+ .byte 0x52 @ SPECIES_CHARMANDER
+ .byte 0x25 @ SPECIES_CHARMELEON
+ .byte 0x10 @ SPECIES_CHARIZARD
+ .byte 0x0b @ SPECIES_SQUIRTLE
+ .byte 0x13 @ SPECIES_WARTORTLE
+ .byte 0x19 @ SPECIES_BLASTOISE
+ .byte 0x0b @ SPECIES_CATERPIE
+ .byte 0x0b @ SPECIES_METAPOD
+ .byte 0x1d @ SPECIES_BUTTERFREE
+ .byte 0x46 @ SPECIES_WEEDLE
+ .byte 0x20 @ SPECIES_KAKUNA
+ .byte 0x02 @ SPECIES_BEEDRILL
+ .byte 0x47 @ SPECIES_PIDGEY
+ .byte 0x17 @ SPECIES_PIDGEOTTO
+ .byte 0x29 @ SPECIES_PIDGEOT
+ .byte 0x43 @ SPECIES_RATTATA
+ .byte 0x2b @ SPECIES_RATICATE
+ .byte 0x18 @ SPECIES_SPEAROW
+ .byte 0x2b @ SPECIES_FEAROW
+ .byte 0x16 @ SPECIES_EKANS
+ .byte 0x17 @ SPECIES_ARBOK
+ .byte 0x2c @ SPECIES_PIKACHU
+ .byte 0x17 @ SPECIES_RAICHU
+ .byte 0x2d @ SPECIES_SANDSHREW
+ .byte 0x17 @ SPECIES_SANDSLASH
+ .byte 0x00 @ SPECIES_NIDORAN_F
+ .byte 0x17 @ SPECIES_NIDORINA
+ .byte 0x0f @ SPECIES_NIDOQUEEN
+ .byte 0x09 @ SPECIES_NIDORAN_M
+ .byte 0x13 @ SPECIES_NIDORINO
+ .byte 0x0f @ SPECIES_NIDOKING
+ .byte 0x00 @ SPECIES_CLEFAIRY
+ .byte 0x4a @ SPECIES_CLEFABLE
+ .byte 0x17 @ SPECIES_VULPIX
+ .byte 0x10 @ SPECIES_NINETALES
+ .byte 0x48 @ SPECIES_JIGGLYPUFF
+ .byte 0x31 @ SPECIES_WIGGLYTUFF
+ .byte 0x00 @ SPECIES_ZUBAT
+ .byte 0x1d @ SPECIES_GOLBAT
+ .byte 0x00 @ SPECIES_ODDISH
+ .byte 0x45 @ SPECIES_GLOOM
+ .byte 0x49 @ SPECIES_VILEPLUME
+ .byte 0x46 @ SPECIES_PARAS
+ .byte 0x0f @ SPECIES_PARASECT
+ .byte 0x06 @ SPECIES_VENONAT
+ .byte 0x4b @ SPECIES_VENOMOTH
+ .byte 0x10 @ SPECIES_DIGLETT
+ .byte 0x4c @ SPECIES_DUGTRIO
+ .byte 0x52 @ SPECIES_MEOWTH
+ .byte 0x17 @ SPECIES_PERSIAN
+ .byte 0x06 @ SPECIES_PSYDUCK
+ .byte 0x4c @ SPECIES_GOLDUCK
+ .byte 0x32 @ SPECIES_MANKEY
+ .byte 0x48 @ SPECIES_PRIMEAPE
+ .byte 0x25 @ SPECIES_GROWLITHE
+ .byte 0x02 @ SPECIES_ARCANINE
+ .byte 0x00 @ SPECIES_POLIWAG
+ .byte 0x32 @ SPECIES_POLIWHIRL
+ .byte 0x19 @ SPECIES_POLIWRATH
+ .byte 0x31 @ SPECIES_ABRA
+ .byte 0x09 @ SPECIES_KADABRA
+ .byte 0x17 @ SPECIES_ALAKAZAM
+ .byte 0x00 @ SPECIES_MACHOP
+ .byte 0x10 @ SPECIES_MACHOKE
+ .byte 0x31 @ SPECIES_MACHAMP
+ .byte 0x17 @ SPECIES_BELLSPROUT
+ .byte 0x0d @ SPECIES_WEEPINBELL
+ .byte 0x32 @ SPECIES_VICTREEBEL
+ .byte 0x00 @ SPECIES_TENTACOOL
+ .byte 0x00 @ SPECIES_TENTACRUEL
+ .byte 0x48 @ SPECIES_GEODUDE
+ .byte 0x48 @ SPECIES_GRAVELER
+ .byte 0x2f @ SPECIES_GOLEM
+ .byte 0x20 @ SPECIES_PONYTA
+ .byte 0x11 @ SPECIES_RAPIDASH
+ .byte 0x45 @ SPECIES_SLOWPOKE
+ .byte 0x0b @ SPECIES_SLOWBRO
+ .byte 0x54 @ SPECIES_MAGNEMITE
+ .byte 0x2c @ SPECIES_MAGNETON
+ .byte 0x48 @ SPECIES_FARFETCH_D
+ .byte 0x4c @ SPECIES_DODUO
+ .byte 0x41 @ SPECIES_DODRIO
+ .byte 0x0b @ SPECIES_SEEL
+ .byte 0x45 @ SPECIES_DEWGONG
+ .byte 0x46 @ SPECIES_GRIMER
+ .byte 0x30 @ SPECIES_MUK
+ .byte 0x12 @ SPECIES_SHELLDER
+ .byte 0x1d @ SPECIES_CLOYSTER
+ .byte 0x15 @ SPECIES_GASTLY
+ .byte 0x35 @ SPECIES_HAUNTER
+ .byte 0x3a @ SPECIES_GENGAR
+ .byte 0x43 @ SPECIES_ONIX
+ .byte 0x4f @ SPECIES_DROWZEE
+ .byte 0x09 @ SPECIES_HYPNO
+ .byte 0x03 @ SPECIES_KRABBY
+ .byte 0x4b @ SPECIES_KINGLER
+ .byte 0x00 @ SPECIES_VOLTORB
+ .byte 0x00 @ SPECIES_ELECTRODE
+ .byte 0x46 @ SPECIES_EXEGGCUTE
+ .byte 0x32 @ SPECIES_EXEGGUTOR
+ .byte 0x48 @ SPECIES_CUBONE
+ .byte 0x05 @ SPECIES_MAROWAK
+ .byte 0x16 @ SPECIES_HITMONLEE
+ .byte 0x09 @ SPECIES_HITMONCHAN
+ .byte 0x45 @ SPECIES_LICKITUNG
+ .byte 0x13 @ SPECIES_KOFFING
+ .byte 0x04 @ SPECIES_WEEZING
+ .byte 0x10 @ SPECIES_RHYHORN
+ .byte 0x13 @ SPECIES_RHYDON
+ .byte 0x45 @ SPECIES_CHANSEY
+ .byte 0x48 @ SPECIES_TANGELA
+ .byte 0x17 @ SPECIES_KANGASKHAN
+ .byte 0x12 @ SPECIES_HORSEA
+ .byte 0x04 @ SPECIES_SEADRA
+ .byte 0x0d @ SPECIES_GOLDEEN
+ .byte 0x1c @ SPECIES_SEAKING
+ .byte 0x4e @ SPECIES_STARYU
+ .byte 0x12 @ SPECIES_STARMIE
+ .byte 0x46 @ SPECIES_MR_MIME
+ .byte 0x02 @ SPECIES_SCYTHER
+ .byte 0x17 @ SPECIES_JYNX
+ .byte 0x2c @ SPECIES_ELECTABUZZ
+ .byte 0x0f @ SPECIES_MAGMAR
+ .byte 0x09 @ SPECIES_PINSIR
+ .byte 0x19 @ SPECIES_TAUROS
+ .byte 0x05 @ SPECIES_MAGIKARP
+ .byte 0x48 @ SPECIES_GYARADOS
+ .byte 0x17 @ SPECIES_LAPRAS
+ .byte 0x01 @ SPECIES_DITTO
+ .byte 0x17 @ SPECIES_EEVEE
+ .byte 0x17 @ SPECIES_VAPOREON
+ .byte 0x00 @ SPECIES_JOLTEON
+ .byte 0x17 @ SPECIES_FLAREON
+ .byte 0x52 @ SPECIES_PORYGON
+ .byte 0x51 @ SPECIES_OMANYTE
+ .byte 0x09 @ SPECIES_OMASTAR
+ .byte 0x1d @ SPECIES_KABUTO
+ .byte 0x0f @ SPECIES_KABUTOPS
+ .byte 0x47 @ SPECIES_AERODACTYL
+ .byte 0x0b @ SPECIES_SNORLAX
+ .byte 0x09 @ SPECIES_ARTICUNO
+ .byte 0x2c @ SPECIES_ZAPDOS
+ .byte 0x45 @ SPECIES_MOLTRES
+ .byte 0x00 @ SPECIES_DRATINI
+ .byte 0x10 @ SPECIES_DRAGONAIR
+ .byte 0x47 @ SPECIES_DRAGONITE
+ .byte 0x09 @ SPECIES_MEWTWO
+ .byte 0x0d @ SPECIES_MEW
+ .byte 0x00 @ SPECIES_CHIKORITA
+ .byte 0x00 @ SPECIES_BAYLEEF
+ .byte 0x17 @ SPECIES_MEGANIUM
+ .byte 0x52 @ SPECIES_CYNDAQUIL
+ .byte 0x17 @ SPECIES_QUILAVA
+ .byte 0x10 @ SPECIES_TYPHLOSION
+ .byte 0x31 @ SPECIES_TOTODILE
+ .byte 0x0f @ SPECIES_CROCONAW
+ .byte 0x0f @ SPECIES_FERALIGATR
+ .byte 0x00 @ SPECIES_SENTRET
+ .byte 0x32 @ SPECIES_FURRET
+ .byte 0x47 @ SPECIES_HOOTHOOT
+ .byte 0x17 @ SPECIES_NOCTOWL
+ .byte 0x52 @ SPECIES_LEDYBA
+ .byte 0x47 @ SPECIES_LEDIAN
+ .byte 0x4f @ SPECIES_SPINARAK
+ .byte 0x0f @ SPECIES_ARIADOS
+ .byte 0x00 @ SPECIES_CROBAT
+ .byte 0x45 @ SPECIES_CHINCHOU
+ .byte 0x51 @ SPECIES_LANTURN
+ .byte 0x1e @ SPECIES_PICHU
+ .byte 0x52 @ SPECIES_CLEFFA
+ .byte 0x0c @ SPECIES_IGGLYBUFF
+ .byte 0x0b @ SPECIES_TOGEPI
+ .byte 0x00 @ SPECIES_TOGETIC
+ .byte 0x31 @ SPECIES_NATU
+ .byte 0x09 @ SPECIES_XATU
+ .byte 0x00 @ SPECIES_MAREEP
+ .byte 0x1e @ SPECIES_FLAAFFY
+ .byte 0x2c @ SPECIES_AMPHAROS
+ .byte 0x0b @ SPECIES_BELLOSSOM
+ .byte 0x00 @ SPECIES_MARILL
+ .byte 0x4a @ SPECIES_AZUMARILL
+ .byte 0x46 @ SPECIES_SUDOWOODO
+ .byte 0x32 @ SPECIES_POLITOED
+ .byte 0x1c @ SPECIES_HOPPIP
+ .byte 0x18 @ SPECIES_SKIPLOOM
+ .byte 0x51 @ SPECIES_JUMPLUFF
+ .byte 0x32 @ SPECIES_AIPOM
+ .byte 0x52 @ SPECIES_SUNKERN
+ .byte 0x00 @ SPECIES_SUNFLORA
+ .byte 0x2b @ SPECIES_YANMA
+ .byte 0x00 @ SPECIES_WOOPER
+ .byte 0x16 @ SPECIES_QUAGSIRE
+ .byte 0x09 @ SPECIES_ESPEON
+ .byte 0x10 @ SPECIES_UMBREON
+ .byte 0x00 @ SPECIES_MURKROW
+ .byte 0x13 @ SPECIES_SLOWKING
+ .byte 0x1c @ SPECIES_MISDREAVUS
+ .byte 0x0a @ SPECIES_UNOWN
+ .byte 0x30 @ SPECIES_WOBBUFFET
+ .byte 0x1e @ SPECIES_GIRAFARIG
+ .byte 0x0b @ SPECIES_PINECO
+ .byte 0x10 @ SPECIES_FORRETRESS
+ .byte 0x00 @ SPECIES_DUNSPARCE
+ .byte 0x13 @ SPECIES_GLIGAR
+ .byte 0x0f @ SPECIES_STEELIX
+ .byte 0x17 @ SPECIES_SNUBBULL
+ .byte 0x10 @ SPECIES_GRANBULL
+ .byte 0x3a @ SPECIES_QWILFISH
+ .byte 0x02 @ SPECIES_SCIZOR
+ .byte 0x0b @ SPECIES_SHUCKLE
+ .byte 0x41 @ SPECIES_HERACROSS
+ .byte 0x16 @ SPECIES_SNEASEL
+ .byte 0x17 @ SPECIES_TEDDIURSA
+ .byte 0x10 @ SPECIES_URSARING
+ .byte 0x17 @ SPECIES_SLUGMA
+ .byte 0x17 @ SPECIES_MAGCARGO
+ .byte 0x00 @ SPECIES_SWINUB
+ .byte 0x0f @ SPECIES_PILOSWINE
+ .byte 0x03 @ SPECIES_CORSOLA
+ .byte 0x52 @ SPECIES_REMORAID
+ .byte 0x17 @ SPECIES_OCTILLERY
+ .byte 0x52 @ SPECIES_DELIBIRD
+ .byte 0x0d @ SPECIES_MANTINE
+ .byte 0x17 @ SPECIES_SKARMORY
+ .byte 0x17 @ SPECIES_HOUNDOUR
+ .byte 0x10 @ SPECIES_HOUNDOOM
+ .byte 0x42 @ SPECIES_KINGDRA
+ .byte 0x32 @ SPECIES_PHANPY
+ .byte 0x19 @ SPECIES_DONPHAN
+ .byte 0x00 @ SPECIES_PORYGON2
+ .byte 0x00 @ SPECIES_STANTLER
+ .byte 0x31 @ SPECIES_SMEARGLE
+ .byte 0x16 @ SPECIES_TYROGUE
+ .byte 0x02 @ SPECIES_HITMONTOP
+ .byte 0x09 @ SPECIES_SMOOCHUM
+ .byte 0x2c @ SPECIES_ELEKID
+ .byte 0x00 @ SPECIES_MAGBY
+ .byte 0x45 @ SPECIES_MILTANK
+ .byte 0x00 @ SPECIES_BLISSEY
+ .byte 0x2c @ SPECIES_RAIKOU
+ .byte 0x09 @ SPECIES_ENTEI
+ .byte 0x10 @ SPECIES_SUICUNE
+ .byte 0x52 @ SPECIES_LARVITAR
+ .byte 0x10 @ SPECIES_PUPITAR
+ .byte 0x0f @ SPECIES_TYRANITAR
+ .byte 0x3a @ SPECIES_LUGIA
+ .byte 0x09 @ SPECIES_HO_OH
+ .byte 0x18 @ SPECIES_CELEBI
+ .byte 0x00 @ 252
+ .byte 0x00 @ 253
+ .byte 0x00 @ 254
+ .byte 0x00 @ 255
+ .byte 0x00 @ 256
+ .byte 0x00 @ 257
+ .byte 0x00 @ 258
+ .byte 0x00 @ 259
+ .byte 0x00 @ 260
+ .byte 0x00 @ 261
+ .byte 0x00 @ 262
+ .byte 0x00 @ 263
+ .byte 0x00 @ 264
+ .byte 0x00 @ 265
+ .byte 0x00 @ 266
+ .byte 0x00 @ 267
+ .byte 0x00 @ 268
+ .byte 0x00 @ 269
+ .byte 0x00 @ 270
+ .byte 0x00 @ 271
+ .byte 0x00 @ 272
+ .byte 0x00 @ 273
+ .byte 0x00 @ 274
+ .byte 0x00 @ 275
+ .byte 0x00 @ 276
+ .byte 0x00 @ SPECIES_TREECKO
+ .byte 0x17 @ SPECIES_GROVYLE
+ .byte 0x10 @ SPECIES_SCEPTILE
+ .byte 0x16 @ SPECIES_TORCHIC
+ .byte 0x06 @ SPECIES_COMBUSKEN
+ .byte 0x0f @ SPECIES_BLAZIKEN
+ .byte 0x01 @ SPECIES_MUDKIP
+ .byte 0x04 @ SPECIES_MARSHTOMP
+ .byte 0x1e @ SPECIES_SWAMPERT
+ .byte 0x10 @ SPECIES_POOCHYENA
+ .byte 0x10 @ SPECIES_MIGHTYENA
+ .byte 0x03 @ SPECIES_ZIGZAGOON
+ .byte 0x09 @ SPECIES_LINOONE
+ .byte 0x00 @ SPECIES_WURMPLE
+ .byte 0x00 @ SPECIES_SILCOON
+ .byte 0x04 @ SPECIES_BEAUTIFLY
+ .byte 0x04 @ SPECIES_CASCOON
+ .byte 0x06 @ SPECIES_DUSTOX
+ .byte 0x00 @ SPECIES_LOTAD
+ .byte 0x00 @ SPECIES_LOMBRE
+ .byte 0x49 @ SPECIES_LUDICOLO
+ .byte 0x05 @ SPECIES_SEEDOT
+ .byte 0x00 @ SPECIES_NUZLEAF
+ .byte 0x02 @ SPECIES_SHIFTRY
+ .byte 0x00 @ SPECIES_NINCADA
+ .byte 0x46 @ SPECIES_NINJASK
+ .byte 0x1c @ SPECIES_SHEDINJA
+ .byte 0x1e @ SPECIES_TAILLOW
+ .byte 0x01 @ SPECIES_SWELLOW
+ .byte 0x00 @ SPECIES_SHROOMISH
+ .byte 0x00 @ SPECIES_BRELOOM
+ .byte 0x31 @ SPECIES_SPINDA
+ .byte 0x1b @ SPECIES_WINGULL
+ .byte 0x1c @ SPECIES_PELIPPER
+ .byte 0x00 @ SPECIES_SURSKIT
+ .byte 0x00 @ SPECIES_MASQUERAIN
+ .byte 0x01 @ SPECIES_WAILMER
+ .byte 0x1c @ SPECIES_WAILORD
+ .byte 0x00 @ SPECIES_SKITTY
+ .byte 0x17 @ SPECIES_DELCATTY
+ .byte 0x35 @ SPECIES_KECLEON
+ .byte 0x1d @ SPECIES_BALTOY
+ .byte 0x51 @ SPECIES_CLAYDOL
+ .byte 0x49 @ SPECIES_NOSEPASS
+ .byte 0x17 @ SPECIES_TORKOAL
+ .byte 0x15 @ SPECIES_SABLEYE
+ .byte 0x49 @ SPECIES_BARBOACH
+ .byte 0x49 @ SPECIES_WHISCASH
+ .byte 0x1d @ SPECIES_LUVDISC
+ .byte 0x10 @ SPECIES_CORPHISH
+ .byte 0x09 @ SPECIES_CRAWDAUNT
+ .byte 0x49 @ SPECIES_FEEBAS
+ .byte 0x22 @ SPECIES_MILOTIC
+ .byte 0x49 @ SPECIES_CARVANHA
+ .byte 0x56 @ SPECIES_SHARPEDO
+ .byte 0x10 @ SPECIES_TRAPINCH
+ .byte 0x0f @ SPECIES_VIBRAVA
+ .byte 0x4b @ SPECIES_FLYGON
+ .byte 0x0b @ SPECIES_MAKUHITA
+ .byte 0x34 @ SPECIES_HARIYAMA
+ .byte 0x00 @ SPECIES_ELECTRIKE
+ .byte 0x00 @ SPECIES_MANECTRIC
+ .byte 0x04 @ SPECIES_NUMEL
+ .byte 0x10 @ SPECIES_CAMERUPT
+ .byte 0x53 @ SPECIES_SPHEAL
+ .byte 0x17 @ SPECIES_SEALEO
+ .byte 0x0f @ SPECIES_WALREIN
+ .byte 0x49 @ SPECIES_CACNEA
+ .byte 0x04 @ SPECIES_CACTURNE
+ .byte 0x45 @ SPECIES_SNORUNT
+ .byte 0x0a @ SPECIES_GLALIE
+ .byte 0x0e @ SPECIES_LUNATONE
+ .byte 0x08 @ SPECIES_SOLROCK
+ .byte 0x00 @ SPECIES_AZURILL
+ .byte 0x56 @ SPECIES_SPOINK
+ .byte 0x32 @ SPECIES_GRUMPIG
+ .byte 0x00 @ SPECIES_PLUSLE
+ .byte 0x01 @ SPECIES_MINUN
+ .byte 0x00 @ SPECIES_MAWILE
+ .byte 0x05 @ SPECIES_MEDITITE
+ .byte 0x45 @ SPECIES_MEDICHAM
+ .byte 0x04 @ SPECIES_SWABLU
+ .byte 0x16 @ SPECIES_ALTARIA
+ .byte 0x32 @ SPECIES_WYNAUT
+ .byte 0x0a @ SPECIES_DUSKULL
+ .byte 0x02 @ SPECIES_DUSCLOPS
+ .byte 0x45 @ SPECIES_ROSELIA
+ .byte 0x45 @ SPECIES_SLAKOTH
+ .byte 0x31 @ SPECIES_VIGOROTH
+ .byte 0x45 @ SPECIES_SLAKING
+ .byte 0x00 @ SPECIES_GULPIN
+ .byte 0x45 @ SPECIES_SWALOT
+ .byte 0x10 @ SPECIES_TROPIUS
+ .byte 0x03 @ SPECIES_WHISMUR
+ .byte 0x49 @ SPECIES_LOUDRED
+ .byte 0x19 @ SPECIES_EXPLOUD
+ .byte 0x12 @ SPECIES_CLAMPERL
+ .byte 0x09 @ SPECIES_HUNTAIL
+ .byte 0x1c @ SPECIES_GOREBYSS
+ .byte 0x11 @ SPECIES_ABSOL
+ .byte 0x1c @ SPECIES_SHUPPET
+ .byte 0x0d @ SPECIES_BANETTE
+ .byte 0x17 @ SPECIES_SEVIPER
+ .byte 0x09 @ SPECIES_ZANGOOSE
+ .byte 0x1a @ SPECIES_RELICANTH
+ .byte 0x45 @ SPECIES_ARON
+ .byte 0x00 @ SPECIES_LAIRON
+ .byte 0x19 @ SPECIES_AGGRON
+ .byte 0x1d @ SPECIES_CASTFORM
+ .byte 0x00 @ SPECIES_VOLBEAT
+ .byte 0x05 @ SPECIES_ILLUMISE
+ .byte 0x17 @ SPECIES_LILEEP
+ .byte 0x19 @ SPECIES_CRADILY
+ .byte 0x12 @ SPECIES_ANORITH
+ .byte 0x10 @ SPECIES_ARMALDO
+ .byte 0x45 @ SPECIES_RALTS
+ .byte 0x00 @ SPECIES_KIRLIA
+ .byte 0x00 @ SPECIES_GARDEVOIR
+ .byte 0x19 @ SPECIES_BAGON
+ .byte 0x04 @ SPECIES_SHELGON
+ .byte 0x0f @ SPECIES_SALAMENCE
+ .byte 0x0f @ SPECIES_BELDUM
+ .byte 0x04 @ SPECIES_METANG
+ .byte 0x10 @ SPECIES_METAGROSS
+ .byte 0x01 @ SPECIES_REGIROCK
+ .byte 0x44 @ SPECIES_REGICE
+ .byte 0x09 @ SPECIES_REGISTEEL
+ .byte 0x2d @ SPECIES_KYOGRE
+ .byte 0x10 @ SPECIES_GROUDON
+ .byte 0x0f @ SPECIES_RAYQUAZA
+ .byte 0x2d @ SPECIES_LATIAS
+ .byte 0x10 @ SPECIES_LATIOS
+ .byte 0x0d @ SPECIES_JIRACHI
+ .byte 0x1b @ SPECIES_DEOXYS
+ .byte 0x1d @ SPECIES_CHIMECHO
diff --git a/data/graphics/pokemon/front_anims.inc b/data/graphics/pokemon/front_anims.inc
new file mode 100644
index 000000000..69341c88d
--- /dev/null
+++ b/data/graphics/pokemon/front_anims.inc
@@ -0,0 +1,6915 @@
+
+ .align 2
+gAnimCmd_NONE_1:: @ 8305F68
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BULBASAUR_1:: @ 8305F78
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_IVYSAUR_1:: @ 8305F88
+ obj_image_anim_frame 0, 1
+ obj_image_anim_frame 1, 36
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_VENUSAUR_1:: @ 8305F98
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CHARMANDER_1:: @ 8305FA8
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 46
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CHARMELEON_1:: @ 8305FB8
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 30
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CHARIZARD_1:: @ 8305FC8
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SQUIRTLE_1:: @ 8305FD4
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_WARTORTLE_1:: @ 8305FE4
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BLASTOISE_1:: @ 8305FF4
+ obj_image_anim_frame 0, 50
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CATERPIE_1:: @ 830600C
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_METAPOD_1:: @ 8306030
+ obj_image_anim_frame 1, 45
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BUTTERFREE_1:: @ 830603C
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 25
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_WEEDLE_1:: @ 8306074
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_KAKUNA_1:: @ 8306094
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BEEDRILL_1:: @ 83060C4
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 35
+ obj_image_anim_frame 0, 28
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PIDGEY_1:: @ 83060DC
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PIDGEOTTO_1:: @ 8306110
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 35
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PIDGEOT_1:: @ 8306128
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_RATTATA_1:: @ 830613C
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 1, 28
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_RATICATE_1:: @ 8306150
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SPEAROW_1:: @ 8306184
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_FEAROW_1:: @ 83061C8
+ obj_image_anim_frame 1, 7
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 7
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 7
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 7
+ obj_image_anim_frame 0, 7
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_EKANS_1:: @ 83061EC
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 8
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ARBOK_1:: @ 8306208
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 35
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PIKACHU_1:: @ 8306218
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PIKACHU_2:: @ 8306230
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_RAICHU_1:: @ 8306244
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_RAICHU_2:: @ 830625C
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SANDSHREW_1:: @ 8306270
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SANDSHREW_2:: @ 8306288
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SANDSLASH_1:: @ 830629C
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SANDSLASH_2:: @ 83062B4
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_NIDORAN_F_1:: @ 83062C8
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 50
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_NIDORINA_1:: @ 83062F0
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_NIDOQUEEN_1:: @ 83062FC
+ obj_image_anim_frame 1, 45
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_NIDORAN_M_1:: @ 8306308
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_NIDORINO_1:: @ 8306318
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_NIDOKING_1:: @ 8306328
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CLEFAIRY_1:: @ 830633C
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CLEFABLE_1:: @ 830634C
+ obj_image_anim_frame 1, 27
+ obj_image_anim_frame 0, 27
+ obj_image_anim_frame 1, 24
+ obj_image_anim_frame 0, 25
+ obj_image_anim_frame 1, 27
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_VULPIX_1:: @ 8306368
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_VULPIX_2:: @ 8306380
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_NINETALES_1:: @ 8306394
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_NINETALES_2:: @ 83063AC
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_JIGGLYPUFF_1:: @ 83063C0
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_JIGGLYPUFF_2:: @ 83063D8
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_WIGGLYTUFF_1:: @ 83063EC
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_WIGGLYTUFF_2:: @ 8306404
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ZUBAT_1:: @ 8306418
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GOLBAT_1:: @ 8306450
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ODDISH_1:: @ 83064A0
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 11
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 11
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 11
+ obj_image_anim_frame 0, 6
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GLOOM_1:: @ 83064C0
+ obj_image_anim_frame 0, 21
+ obj_image_anim_frame 1, 45
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_VILEPLUME_1:: @ 83064D4
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 21
+ obj_image_anim_frame 0, 13
+ obj_image_anim_frame 1, 21
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PARAS_1:: @ 83064EC
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PARASECT_1:: @ 8306530
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 35
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_VENONAT_1:: @ 830654C
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 35
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_VENOMOTH_1:: @ 8306568
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 4
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DIGLETT_1:: @ 83065C4
+ obj_image_anim_frame 0, 25
+ obj_image_anim_frame 1, 35
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DUGTRIO_1:: @ 83065D4
+ obj_image_anim_frame 1, 35
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MEOWTH_1:: @ 8306600
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 17
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PERSIAN_1:: @ 830661C
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PSYDUCK_1:: @ 8306628
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PSYDUCK_2:: @ 8306640
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GOLDUCK_1:: @ 8306654
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GOLDUCK_2:: @ 830666C
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MANKEY_1:: @ 8306680
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 28
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PRIMEAPE_1:: @ 830669C
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GROWLITHE_1:: @ 83066B8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ARCANINE_1:: @ 83066D4
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_POLIWAG_1:: @ 83066F0
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_POLIWHIRL_1:: @ 8306700
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_POLIWRATH_1:: @ 8306718
+ obj_image_anim_frame 1, 45
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ABRA_1:: @ 8306724
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 21
+ obj_image_anim_frame 0, 13
+ obj_image_anim_frame 1, 21
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_KADABRA_1:: @ 830673C
+ obj_image_anim_frame 0, 12
+ obj_image_anim_frame 1, 45
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ALAKAZAM_1:: @ 830674C
+ obj_image_anim_frame 0, 9
+ obj_image_anim_frame 1, 54
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MACHOP_1:: @ 830675C
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MACHOKE_1:: @ 830677C
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 1, 44
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MACHAMP_1:: @ 830678C
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 11
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 11
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 11
+ obj_image_anim_frame 0, 11
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BELLSPROUT_1:: @ 83067AC
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_WEEPINBELL_1:: @ 83067BC
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_VICTREEBEL_1:: @ 83067DC
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_TENTACOOL_1:: @ 83067FC
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 11
+ obj_image_anim_frame 0, 11
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_TENTACRUEL_1:: @ 8306814
+ obj_image_anim_frame 0, 19
+ obj_image_anim_frame 1, 35
+ obj_image_anim_frame 0, 19
+ obj_image_anim_frame 1, 19
+ obj_image_anim_frame 0, 8
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GEODUDE_1:: @ 830682C
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 36
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GRAVELER_1:: @ 830683C
+ obj_image_anim_frame 0, 16
+ obj_image_anim_frame 1, 16
+ obj_image_anim_frame 0, 16
+ obj_image_anim_frame 1, 16
+ obj_image_anim_frame 0, 16
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GOLEM_1:: @ 8306854
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 31
+ obj_image_anim_frame 0, 1
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 0, 8
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PONYTA_1:: @ 830686C
+ obj_image_anim_frame 1, 45
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_RAPIDASH_1:: @ 8306878
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SLOWPOKE_1:: @ 8306888
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SLOWBRO_1:: @ 8306898
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 1, 45
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MAGNEMITE_1:: @ 83068A8
+ obj_image_anim_frame 0, 28
+ obj_image_anim_frame 1, 28
+ obj_image_anim_frame 0, 28
+ obj_image_anim_frame 1, 28
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MAGNETON_1:: @ 83068C0
+ obj_image_anim_frame 0, 14
+ obj_image_anim_frame 1, 14
+ obj_image_anim_frame 0, 14
+ obj_image_anim_frame 1, 14
+ obj_image_anim_frame 0, 14
+ obj_image_anim_frame 1, 14
+ obj_image_anim_frame 0, 14
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_FARFETCHD_1:: @ 83068E0
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DODUO_1:: @ 8306914
+ obj_image_anim_frame 0, 18
+ obj_image_anim_frame 1, 18
+ obj_image_anim_frame 0, 18
+ obj_image_anim_frame 1, 18
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DODRIO_1:: @ 830692C
+ obj_image_anim_frame 0, 12
+ obj_image_anim_frame 1, 12
+ obj_image_anim_frame 0, 12
+ obj_image_anim_frame 1, 12
+ obj_image_anim_frame 0, 12
+ obj_image_anim_frame 1, 12
+ obj_image_anim_frame 0, 12
+ obj_image_anim_frame 1, 12
+ obj_image_anim_frame 0, 8
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SEEL_1:: @ 8306954
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DEWGONG_1:: @ 8306978
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 30
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GRIMER_1:: @ 8306988
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GRIMER_2:: @ 83069A0
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MUK_1:: @ 83069B4
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MUK_2:: @ 83069CC
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SHELLDER_1:: @ 83069E0
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 45
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CLOYSTER_1:: @ 83069F4
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 25
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GASTLY_1:: @ 8306A38
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_HAUNTER_1:: @ 8306A48
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 35
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GENGAR_1:: @ 8306A60
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ONIX_1:: @ 8306A70
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 30
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DROWZEE_1:: @ 8306A80
+ obj_image_anim_frame 1, 12
+ obj_image_anim_frame 0, 12
+ obj_image_anim_frame 1, 12
+ obj_image_anim_frame 0, 12
+ obj_image_anim_frame 1, 45
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_HYPNO_1:: @ 8306A9C
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_KRABBY_1:: @ 8306ABC
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_KINGLER_1:: @ 8306AD8
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 25
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_VOLTORB_1:: @ 8306B00
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 4
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ELECTRODE_1:: @ 8306B18
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 8
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_EXEGGCUTE_1:: @ 8306B30
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_EXEGGUTOR_1:: @ 8306B58
+ obj_image_anim_frame 1, 35
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CUBONE_1:: @ 8306B64
+ obj_image_anim_frame 1, 14
+ obj_image_anim_frame 0, 14
+ obj_image_anim_frame 1, 14
+ obj_image_anim_frame 0, 14
+ obj_image_anim_frame 1, 14
+ obj_image_anim_frame 0, 14
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MAROWAK_1:: @ 8306B80
+ obj_image_anim_frame 1, 14
+ obj_image_anim_frame 0, 14
+ obj_image_anim_frame 1, 14
+ obj_image_anim_frame 0, 14
+ obj_image_anim_frame 1, 14
+ obj_image_anim_frame 0, 14
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_HITMONLEE_1:: @ 8306B9C
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_HITMONCHAN_1:: @ 8306BA8
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LICKITUNG_1:: @ 8306BCC
+ obj_image_anim_frame 0, 28
+ obj_image_anim_frame 1, 32
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_KOFFING_1:: @ 8306BDC
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_KOFFING_2:: @ 8306BF4
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_WEEZING_1:: @ 8306C08
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_WEEZING_2:: @ 8306C20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_RHYHORN_1:: @ 8306C34
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_RHYHORN_2:: @ 8306C4C
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_RHYDON_1:: @ 8306C60
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 48
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_RHYDON_2:: @ 8306C78
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CHANSEY_1:: @ 8306C8C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_TANGELA_1:: @ 8306C9C
+ obj_image_anim_frame 1, 9
+ obj_image_anim_frame 0, 9
+ obj_image_anim_frame 1, 9
+ obj_image_anim_frame 0, 9
+ obj_image_anim_frame 1, 9
+ obj_image_anim_frame 0, 9
+ obj_image_anim_frame 1, 9
+ obj_image_anim_frame 0, 9
+ obj_image_anim_frame 1, 9
+ obj_image_anim_frame 0, 9
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_KANGASKHAN_1:: @ 8306CC8
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_HORSEA_1:: @ 8306CDC
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_HORSEA_2:: @ 8306CF4
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SEADRA_1:: @ 8306D08
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SEADRA_2:: @ 8306D20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GOLDEEN_1:: @ 8306D34
+ obj_image_anim_frame 0, 16
+ obj_image_anim_frame 1, 16
+ obj_image_anim_frame 0, 16
+ obj_image_anim_frame 1, 16
+ obj_image_anim_frame 0, 16
+ obj_image_anim_frame 1, 16
+ obj_image_anim_frame 0, 16
+ obj_image_anim_frame 1, 16
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SEAKING_1:: @ 8306D5C
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_STARYU_1:: @ 8306D74
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_STARYU_2:: @ 8306D8C
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_STARMIE_1:: @ 8306DA0
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_STARMIE_2:: @ 8306DB8
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MR_MIME_1:: @ 8306DCC
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SCYTHER_1:: @ 8306DE8
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_JYNX_1:: @ 8306E0C
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ELECTABUZZ_1:: @ 8306E24
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MAGMAR_1:: @ 8306E38
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PINSIR_1:: @ 8306E44
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PINSIR_2:: @ 8306E5C
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_TAUROS_1:: @ 8306E70
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MAGIKARP_1:: @ 8306E84
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GYARADOS_1:: @ 8306EAC
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 32
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LAPRAS_1:: @ 8306EBC
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DITTO_1:: @ 8306EC8
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_EEVEE_1:: @ 8306EDC
+ obj_image_anim_frame 1, 33
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_VAPOREON_1:: @ 8306EE8
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_JOLTEON_1:: @ 8306EF4
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_FLAREON_1:: @ 8306F00
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 30
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PORYGON_1:: @ 8306F0C
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_OMANYTE_1:: @ 8306F20
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_OMASTAR_1:: @ 8306F44
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_KABUTO_1:: @ 8306F58
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_KABUTOPS_1:: @ 8306F7C
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_AERODACTYL_1:: @ 8306F90
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 25
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 25
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SNORLAX_1:: @ 8306FA4
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ARTICUNO_1:: @ 8306FB4
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ZAPDOS_1:: @ 8306FC8
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MOLTRES_1:: @ 8306FDC
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DRATINI_1:: @ 8307060
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DRAGONAIR_1:: @ 8307070
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DRAGONITE_1:: @ 8307084
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MEWTWO_1:: @ 8307094
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MEW_1:: @ 83070A0
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CHIKORITA_1:: @ 83070B0
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BAYLEEF_1:: @ 83070C0
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MEGANIUM_1:: @ 83070CC
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CYNDAQUIL_1:: @ 83070D8
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_QUILAVA_1:: @ 83070EC
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_TYPHLOSION_1:: @ 83070F8
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_TOTODILE_1:: @ 8307104
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CROCONAW_1:: @ 8307120
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_FERALIGATR_1:: @ 830712C
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 40
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SENTRET_1:: @ 8307140
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_FURRET_1:: @ 8307154
+ obj_image_anim_frame 1, 35
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_HOOTHOOT_1:: @ 8307160
+ obj_image_anim_frame 1, 7
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 7
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 7
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 7
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 7
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 7
+ obj_image_anim_frame 0, 7
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_NOCTOWL_1:: @ 8307194
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LEDYBA_1:: @ 83071A0
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LEDIAN_1:: @ 83071B4
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SPINARAK_1:: @ 8307220
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ARIADOS_1:: @ 8307244
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CROBAT_1:: @ 8307258
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CHINCHOU_1:: @ 83072A0
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CHINCHOU_2:: @ 83072B8
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LANTURN_1:: @ 83072CC
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LANTURN_2:: @ 83072E4
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PICHU_1:: @ 83072F8
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PICHU_2:: @ 8307310
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CLEFFA_1:: @ 8307324
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_IGGLYBUFF_1:: @ 8307338
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_IGGLYBUFF_2:: @ 8307350
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_TOGEPI_1:: @ 8307364
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_TOGETIC_1:: @ 8307374
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_NATU_1:: @ 8307384
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_NATU_2:: @ 830739C
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_XATU_1:: @ 83073B0
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 45
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_XATU_2:: @ 83073D0
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MAREEP_1:: @ 83073E4
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_FLAAFFY_1:: @ 8307400
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_AMPHAROS_1:: @ 8307414
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BELLOSSOM_1:: @ 8307424
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 22
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MARILL_1:: @ 8307444
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 1, 44
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 44
+ obj_image_anim_frame 0, 11
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_AZUMARILL_1:: @ 830745C
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 11
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SUDOWOODO_1:: @ 8307474
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_POLITOED_1:: @ 8307490
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 35
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_HOPPIP_1:: @ 83074AC
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 25
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 25
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SKIPLOOM_1:: @ 83074C0
+ obj_image_anim_frame 1, 12
+ obj_image_anim_frame 0, 12
+ obj_image_anim_frame 1, 12
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 12
+ obj_image_anim_frame 0, 12
+ obj_image_anim_frame 1, 12
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_JUMPLUFF_1:: @ 83074E4
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 25
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 25
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_AIPOM_1:: @ 8307500
+ obj_image_anim_frame 1, 35
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SUNKERN_1:: @ 830750C
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SUNFLORA_1:: @ 8307520
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_YANMA_1:: @ 8307530
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_WOOPER_1:: @ 830758C
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_QUAGSIRE_1:: @ 830759C
+ obj_image_anim_frame 1, 32
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ESPEON_1:: @ 83075A8
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UMBREON_1:: @ 83075B8
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MURKROW_1:: @ 83075C4
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SLOWKING_1:: @ 83075D0
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MISDREAVUS_1:: @ 83075E0
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_1:: @ 830760C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_WOBBUFFET_1:: @ 830761C
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_WOBBUFFET_2:: @ 8307634
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GIRAFARIG_1:: @ 8307648
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GIRAFARIG_2:: @ 8307668
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PINECO_1:: @ 830767C
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_FORRETRESS_1:: @ 83076A0
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DUNSPARCE_1:: @ 83076B4
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GLIGAR_1:: @ 83076C8
+ obj_image_anim_frame 1, 17
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_STEELIX_1:: @ 83076D4
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 1, 35
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SNUBBULL_1:: @ 83076F0
+ obj_image_anim_frame 1, 32
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GRANBULL_1:: @ 83076FC
+ obj_image_anim_frame 1, 35
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_QWILFISH_1:: @ 8307708
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 30
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SCIZOR_1:: @ 8307728
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SHUCKLE_1:: @ 8307734
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 0, 30
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_HERACROSS_1:: @ 8307744
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_HERACROSS_2:: @ 830775C
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SNEASEL_1:: @ 8307770
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_TEDDIURSA_1:: @ 830777C
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_URSARING_1:: @ 8307788
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SLUGMA_1:: @ 8307794
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SLUGMA_2:: @ 83077AC
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MAGCARGO_1:: @ 83077C0
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MAGCARGO_2:: @ 83077D8
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SWINUB_1:: @ 83077EC
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PILOSWINE_1:: @ 8307800
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CORSOLA_1:: @ 8307814
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CORSOLA_2:: @ 830782C
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_REMORAID_1:: @ 8307840
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_OCTILLERY_1:: @ 8307854
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DELIBIRD_1:: @ 8307868
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MANTINE_1:: @ 830787C
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 40
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SKARMORY_1:: @ 8307890
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SKARMORY_2:: @ 83078A8
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_HOUNDOUR_1:: @ 83078BC
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_HOUNDOOM_1:: @ 83078D0
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 30
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_KINGDRA_1:: @ 83078DC
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_KINGDRA_2:: @ 83078F4
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PHANPY_1:: @ 8307908
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PHANPY_2:: @ 8307928
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DONPHAN_1:: @ 830793C
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DONPHAN_2:: @ 830795C
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PORYGON2_1:: @ 8307970
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_STANTLER_1:: @ 8307988
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SMEARGLE_1:: @ 8307994
+ obj_image_anim_frame 1, 12
+ obj_image_anim_frame 0, 12
+ obj_image_anim_frame 1, 12
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_TYROGUE_1:: @ 83079A8
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_HITMONTOP_1:: @ 83079B4
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 4
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SMOOCHUM_1:: @ 83079E4
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ELEKID_1:: @ 8307A00
+ obj_image_anim_frame 1, 50
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MAGBY_1:: @ 8307A10
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MILTANK_1:: @ 8307A30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 30
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BLISSEY_1:: @ 8307A3C
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_RAIKOU_1:: @ 8307A48
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ENTEI_1:: @ 8307A5C
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SUICUNE_1:: @ 8307A68
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LARVITAR_1:: @ 8307A74
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PUPITAR_1:: @ 8307A88
+ obj_image_anim_frame 1, 40
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_TYRANITAR_1:: @ 8307A94
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LUGIA_1:: @ 8307AA8
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_HO_OH_1:: @ 8307AB4
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CELEBI_1:: @ 8307AC0
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 30
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_OLD_UNOWN_B_1:: @ 8307AD4
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_TREECKO_1:: @ 8307AE4
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 3
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GROVYLE_1:: @ 8307AFC
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 18
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 12
+ obj_image_anim_frame 0, 6
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SCEPTILE_1:: @ 8307B14
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 26
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_TORCHIC_1:: @ 8307B24
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_COMBUSKEN_1:: @ 8307B44
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 12
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BLAZIKEN_1:: @ 8307B54
+ obj_image_anim_frame 0, 1
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 7
+ obj_image_anim_frame 0, 7
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BLAZIKEN_2:: @ 8307B6C
+ obj_image_anim_frame 0, 1
+ obj_image_anim_frame 2, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BLAZIKEN_3:: @ 8307B7C
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 2, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BLAZIKEN_4:: @ 8307B88
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MUDKIP_1:: @ 8307B90
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 13
+ obj_image_anim_frame 0, 7
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MARSHTOMP_1:: @ 8307BA8
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SWAMPERT_1:: @ 8307BD0
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 44
+ obj_image_anim_frame 0, 18
+ obj_image_anim_frame 1, 18
+ obj_image_anim_frame 0, 7
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_POOCHYENA_1:: @ 8307BE8
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 44
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MIGHTYENA_1:: @ 8307BF8
+ obj_image_anim_frame 0, 27
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ZIGZAGOON_1:: @ 8307C10
+ obj_image_anim_frame 0, 27
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LINOONE_1:: @ 8307C28
+ obj_image_anim_frame 0, 14
+ obj_image_anim_frame 1, 14
+ obj_image_anim_frame 0, 14
+ obj_image_anim_frame 1, 14
+ obj_image_anim_frame 0, 14
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_WURMPLE_1:: @ 8307C40
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 35
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SILCOON_1:: @ 8307C50
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SILCOON_2:: @ 8307C60
+ obj_image_anim_frame 1, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BEAUTIFLY_1:: @ 8307C68
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BEAUTIFLY_2:: @ 8307C90
+ obj_image_anim_frame 1, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CASCOON_1:: @ 8307C98
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CASCOON_2:: @ 8307CB0
+ obj_image_anim_frame 1, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DUSTOX_1:: @ 8307CB8
+ obj_image_anim_frame 0, 1
+ obj_image_anim_frame 1, 1
+ obj_image_anim_frame 0, 1
+ obj_image_anim_frame 1, 1
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 1, 4
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 12
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DUSTOX_2:: @ 8307CF8
+ obj_image_anim_frame 1, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LOTAD_1:: @ 8307D00
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 55
+ obj_image_anim_frame 0, 22
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LOMBRE_1:: @ 8307D10
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 7
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LUDICOLO_1:: @ 8307D28
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 22
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SEEDOT_1:: @ 8307D48
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_NUZLEAF_1:: @ 8307D70
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 7
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SHIFTRY_1:: @ 8307D98
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 35
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_NINCADA_1:: @ 8307DA8
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 33
+ obj_image_anim_frame 0, 11
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_NINJASK_1:: @ 8307DC0
+ obj_image_anim_frame 0, 1
+ obj_image_anim_frame 1, 1
+ obj_image_anim_frame 0, 1
+ obj_image_anim_frame 1, 1
+ obj_image_anim_frame 0, 1
+ obj_image_anim_frame 1, 1
+ obj_image_anim_frame 0, 1
+ obj_image_anim_frame 1, 1
+ obj_image_anim_frame 0, 33
+ obj_image_anim_frame 0, 1
+ obj_image_anim_frame 1, 1
+ obj_image_anim_frame 0, 1
+ obj_image_anim_frame 1, 1
+ obj_image_anim_frame 0, 1
+ obj_image_anim_frame 1, 1
+ obj_image_anim_frame 0, 1
+ obj_image_anim_frame 1, 1
+ obj_image_anim_frame 0, 11
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SHEDINJA_1:: @ 8307E0C
+ obj_image_anim_frame 0, 33
+ obj_image_anim_frame 1, 33
+ obj_image_anim_frame 0, 33
+ obj_image_anim_frame 1, 33
+ obj_image_anim_frame 0, 11
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_TAILLOW_1:: @ 8307E24
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SWELLOW_1:: @ 8307E4C
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 18
+ obj_image_anim_frame 0, 11
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SHROOMISH_1:: @ 8307E5C
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BRELOOM_1:: @ 8307E8C
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 7
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_WINGULL_1:: @ 8307EA4
+ obj_image_anim_frame 0, 17
+ obj_image_anim_frame 1, 23
+ obj_image_anim_frame 0, 13
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PELIPPER_1:: @ 8307EB4
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 5
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SURSKIT_1:: @ 8307EDC
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 18
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 18
+ obj_image_anim_frame 0, 8
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SURSKIT_2:: @ 8307EF4
+ obj_image_anim_frame 1, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MASQUERAIN_1:: @ 8307EFC
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MASQUERAIN_2:: @ 8307F24
+ obj_image_anim_frame 1, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_WAILMER_1:: @ 8307F2C
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 22
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_WAILORD_1:: @ 8307F4C
+ obj_image_anim_frame 0, 26
+ obj_image_anim_frame 1, 48
+ obj_image_anim_frame 0, 33
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SKITTY_1:: @ 8307F5C
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 35
+ obj_image_anim_frame 0, 9
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DELCATTY_1:: @ 8307F6C
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 46
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_KECLEON_1:: @ 8307F7C
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 18
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BALTOY_1:: @ 8307F94
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 50
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CLAYDOL_1:: @ 8307FB4
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_NOSEPASS_1:: @ 8307FD4
+ obj_image_anim_frame 0, 27
+ obj_image_anim_frame 1, 27
+ obj_image_anim_frame 0, 27
+ obj_image_anim_frame 1, 27
+ obj_image_anim_frame 0, 27
+ obj_image_anim_frame 1, 27
+ obj_image_anim_frame 0, 3
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_TORKOAL_1:: @ 8307FF4
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SABLEYE_1:: @ 830800C
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BARBOACH_1:: @ 8308024
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 50
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_WHISCASH_1:: @ 830805C
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LUVDISC_1:: @ 8308094
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CORPHISH_1:: @ 83080AC
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 50
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CRAWDAUNT_1:: @ 83080CC
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_FEEBAS_1:: @ 83080E4
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MILOTIC_1:: @ 8308104
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CARVANHA_1:: @ 8308124
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SHARPEDO_1:: @ 830814C
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 22
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_TRAPINCH_1:: @ 8308174
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_VIBRAVA_1:: @ 830818C
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 50
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_FLYGON_1:: @ 83081AC
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 50
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MAKUHITA_1:: @ 83081CC
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 7
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 22
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_HARIYAMA_1:: @ 83081F4
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 1, 16
+ obj_image_anim_frame 0, 11
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ELECTRIKE_1:: @ 8308208
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 17
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 3
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MANECTRIC_1:: @ 8308220
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 33
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 3
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_NUMEL_1:: @ 8308238
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 40
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CAMERUPT_1:: @ 8308250
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SPHEAL_1:: @ 8308270
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 43
+ obj_image_anim_frame 1, 60
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SEALEO_1:: @ 8308294
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_WALREIN_1:: @ 83082AC
+ obj_image_anim_frame 0, 2
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CACNEA_1:: @ 83082C4
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CACTURNE_1:: @ 83082F4
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SNORUNT_1:: @ 830830C
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GLALIE_1:: @ 8308324
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LUNATONE_1:: @ 830833C
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LUNATONE_2:: @ 8308354
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SOLROCK_1:: @ 8308368
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SOLROCK_2:: @ 8308380
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_AZURILL_1:: @ 8308394
+ obj_image_anim_frame 0, 12
+ obj_image_anim_frame 1, 12
+ obj_image_anim_frame 0, 12
+ obj_image_anim_frame 1, 12
+ obj_image_anim_frame 0, 12
+ obj_image_anim_frame 1, 12
+ obj_image_anim_frame 0, 12
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SPOINK_1:: @ 83083B4
+ obj_image_anim_frame 0, 5
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GRUMPIG_1:: @ 83083E4
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_PLUSLE_1:: @ 83083FC
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MINUN_1:: @ 8308414
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MAWILE_1:: @ 830842C
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MEDITITE_1:: @ 830844C
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 2
+ obj_image_anim_frame 0, 22
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_MEDICHAM_1:: @ 830845C
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 11
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 11
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 11
+ obj_image_anim_frame 0, 11
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SWABLU_1:: @ 830847C
+ obj_image_anim_frame 0, 1
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SWABLU_2:: @ 830849C
+ obj_image_anim_frame 0, 1
+ obj_image_anim_frame 2, 8
+ obj_image_anim_frame 0, 12
+ obj_image_anim_frame 2, 8
+ obj_image_anim_frame 0, 12
+ obj_image_anim_frame 2, 8
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ALTARIA_1:: @ 83084B8
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ALTARIA_2:: @ 83084D0
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_WYNAUT_1:: @ 83084E4
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DUSKULL_1:: @ 83084FC
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DUSCLOPS_1:: @ 8308514
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ROSELIA_1:: @ 830852C
+ obj_image_anim_frame 0, 18
+ obj_image_anim_frame 1, 44
+ obj_image_anim_frame 0, 22
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SLAKOTH_1:: @ 830853C
+ obj_image_anim_frame 0, 13
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 0, 11
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_VIGOROTH_1:: @ 8308558
+ obj_image_anim_frame 0, 13
+ obj_image_anim_frame 1, 7
+ obj_image_anim_frame 0, 13
+ obj_image_anim_frame 1, 7
+ obj_image_anim_frame 0, 13
+ obj_image_anim_frame 1, 7
+ obj_image_anim_frame 0, 11
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SLAKING_1:: @ 8308578
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 22
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GULPIN_1:: @ 8308598
+ obj_image_anim_frame 0, 14
+ obj_image_anim_frame 1, 14
+ obj_image_anim_frame 0, 14
+ obj_image_anim_frame 1, 14
+ obj_image_anim_frame 0, 4
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SWALOT_1:: @ 83085B0
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 30
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_TROPIUS_1:: @ 83085C4
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_WHISMUR_1:: @ 83085DC
+ obj_image_anim_frame 0, 9
+ obj_image_anim_frame 1, 9
+ obj_image_anim_frame 0, 9
+ obj_image_anim_frame 1, 9
+ obj_image_anim_frame 0, 33
+ obj_image_anim_frame 0, 9
+ obj_image_anim_frame 1, 9
+ obj_image_anim_frame 0, 9
+ obj_image_anim_frame 1, 9
+ obj_image_anim_frame 0, 9
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LOUDRED_1:: @ 8308608
+ obj_image_anim_frame 0, 9
+ obj_image_anim_frame 1, 9
+ obj_image_anim_frame 0, 9
+ obj_image_anim_frame 1, 9
+ obj_image_anim_frame 0, 33
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_EXPLOUD_1:: @ 8308620
+ obj_image_anim_frame 0, 9
+ obj_image_anim_frame 1, 44
+ obj_image_anim_frame 0, 9
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CLAMPERL_1:: @ 8308630
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_HUNTAIL_1:: @ 8308648
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GOREBYSS_1:: @ 8308660
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ABSOL_1:: @ 8308678
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SHUPPET_1:: @ 8308690
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BANETTE_1:: @ 83086B0
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SEVIPER_1:: @ 83086D0
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 50
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ZANGOOSE_1:: @ 83086F0
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 50
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_RELICANTH_1:: @ 8308710
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ARON_1:: @ 8308728
+ obj_image_anim_frame 0, 33
+ obj_image_anim_frame 1, 44
+ obj_image_anim_frame 0, 33
+ obj_image_anim_frame 1, 33
+ obj_image_anim_frame 0, 11
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LAIRON_1:: @ 8308740
+ obj_image_anim_frame 0, 12
+ obj_image_anim_frame 1, 29
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 29
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_AGGRON_1:: @ 8308758
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 44
+ obj_image_anim_frame 0, 11
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CASTFORM_0:: @ 8308768
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CASTFORM_1:: @ 8308770
+ obj_image_anim_frame 1, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CASTFORM_2:: @ 8308778
+ obj_image_anim_frame 2, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CASTFORM_3:: @ 8308780
+ obj_image_anim_frame 3, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_VOLBEAT_1:: @ 8308788
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 11
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 11
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 11
+ obj_image_anim_frame 0, 5
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ILLUMISE_1:: @ 83087A8
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 22
+ obj_image_anim_frame 0, 11
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LILEEP_1:: @ 83087C0
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CRADILY_1:: @ 83087D8
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ANORITH_1:: @ 83087F8
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_ARMALDO_1:: @ 8308818
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_RALTS_1:: @ 8308830
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 25
+ obj_image_anim_frame 0, 8
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_KIRLIA_1:: @ 8308840
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 39
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GARDEVOIR_1:: @ 8308850
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 3
+ obj_image_anim_frame 1, 3
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BAGON_1:: @ 8308888
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SHELGON_1:: @ 83088A0
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_SALAMENCE_1:: @ 83088B8
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_BELDUM_1:: @ 83088D0
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_METANG_1:: @ 83088E8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 8
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_METAGROSS_1:: @ 8308900
+ obj_image_anim_frame 0, 16
+ obj_image_anim_frame 1, 16
+ obj_image_anim_frame 0, 16
+ obj_image_anim_frame 1, 16
+ obj_image_anim_frame 0, 16
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_REGIROCK_1:: @ 8308918
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_REGIROCK_2:: @ 8308930
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_REGICE_1:: @ 8308944
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 18
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_REGISTEEL_1:: @ 830895C
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_REGISTEEL_2:: @ 8308974
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_KYOGRE_1:: @ 8308988
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_KYOGRE_2:: @ 83089A0
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GROUDON_1:: @ 83089B4
+ obj_image_anim_frame 0, 11
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 20
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_GROUDON_2:: @ 83089CC
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_RAYQUAZA_1:: @ 83089E0
+ obj_image_anim_frame 0, 1
+ obj_image_anim_frame 1, 8
+ obj_image_anim_frame 0, 22
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 0, 6
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_RAYQUAZA_2:: @ 83089F8
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LATIAS_1:: @ 8308A0C
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LATIAS_2:: @ 8308A24
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LATIOS_1:: @ 8308A38
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_LATIOS_2:: @ 8308A50
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_JIRACHI_1:: @ 8308A64
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_frame 1, 10
+ obj_image_anim_frame 0, 10
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_JIRACHI_2:: @ 8308A90
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DEOXYS_1:: @ 8308AA4
+ obj_image_anim_frame 0, 16
+ obj_image_anim_frame 1, 16
+ obj_image_anim_frame 0, 26
+ obj_image_anim_frame 1, 16
+ obj_image_anim_frame 0, 16
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_DEOXYS_2:: @ 8308ABC
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_frame 0, 20
+ obj_image_anim_frame 2, 20
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_CHIMECHO_1:: @ 8308AD0
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_frame 1, 15
+ obj_image_anim_frame 0, 15
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_EGG_1:: @ 8308AF8
+ obj_image_anim_frame 0, 6
+ obj_image_anim_frame 1, 6
+ obj_image_anim_frame 2, 6
+ obj_image_anim_frame 3, 6
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_B_1:: @ 8308B0C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_C_1:: @ 8308B1C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_D_1:: @ 8308B2C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_E_1:: @ 8308B3C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_F_1:: @ 8308B4C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_G_1:: @ 8308B5C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_H_1:: @ 8308B6C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_I_1:: @ 8308B7C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_J_1:: @ 8308B8C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_K_1:: @ 8308B9C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_L_1:: @ 8308BAC
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_M_1:: @ 8308BBC
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_N_1:: @ 8308BCC
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_O_1:: @ 8308BDC
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_P_1:: @ 8308BEC
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_Q_1:: @ 8308BFC
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_R_1:: @ 8308C0C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_S_1:: @ 8308C1C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_T_1:: @ 8308C2C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_U_1:: @ 8308C3C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_V_1:: @ 8308C4C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_W_1:: @ 8308C5C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_X_1:: @ 8308C6C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_Y_1:: @ 8308C7C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_Z_1:: @ 8308C8C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_EMARK_1:: @ 8308C9C
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnimCmd_UNOWN_QMARK_1:: @ 8308CAC
+ obj_image_anim_frame 0, 30
+ obj_image_anim_frame 1, 30
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
+
+ .align 2
+gAnims_NONE:: @ 8308CBC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_NONE_1
+
+ .align 2
+gAnims_BULBASAUR:: @ 8308CC4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_BULBASAUR_1
+
+ .align 2
+gAnims_IVYSAUR:: @ 8308CCC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_IVYSAUR_1
+
+ .align 2
+gAnims_VENUSAUR:: @ 8308CD4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_VENUSAUR_1
+
+ .align 2
+gAnims_CHARMANDER:: @ 8308CDC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CHARMANDER_1
+
+ .align 2
+gAnims_CHARMELEON:: @ 8308CE4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CHARMELEON_1
+
+ .align 2
+gAnims_CHARIZARD:: @ 8308CEC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CHARIZARD_1
+
+ .align 2
+gAnims_SQUIRTLE:: @ 8308CF4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SQUIRTLE_1
+
+ .align 2
+gAnims_WARTORTLE:: @ 8308CFC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_WARTORTLE_1
+
+ .align 2
+gAnims_BLASTOISE:: @ 8308D04
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_BLASTOISE_1
+
+ .align 2
+gAnims_CATERPIE:: @ 8308D0C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CATERPIE_1
+
+ .align 2
+gAnims_METAPOD:: @ 8308D14
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_METAPOD_1
+
+ .align 2
+gAnims_BUTTERFREE:: @ 8308D1C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_BUTTERFREE_1
+
+ .align 2
+gAnims_WEEDLE:: @ 8308D24
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_WEEDLE_1
+
+ .align 2
+gAnims_KAKUNA:: @ 8308D2C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_KAKUNA_1
+
+ .align 2
+gAnims_BEEDRILL:: @ 8308D34
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_BEEDRILL_1
+
+ .align 2
+gAnims_PIDGEY:: @ 8308D3C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PIDGEY_1
+
+ .align 2
+gAnims_PIDGEOTTO:: @ 8308D44
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PIDGEOTTO_1
+
+ .align 2
+gAnims_PIDGEOT:: @ 8308D4C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PIDGEOT_1
+
+ .align 2
+gAnims_RATTATA:: @ 8308D54
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_RATTATA_1
+
+ .align 2
+gAnims_RATICATE:: @ 8308D5C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_RATICATE_1
+
+ .align 2
+gAnims_SPEAROW:: @ 8308D64
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SPEAROW_1
+
+ .align 2
+gAnims_FEAROW:: @ 8308D6C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_FEAROW_1
+
+ .align 2
+gAnims_EKANS:: @ 8308D74
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_EKANS_1
+
+ .align 2
+gAnims_ARBOK:: @ 8308D7C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ARBOK_1
+
+ .align 2
+gAnims_PIKACHU:: @ 8308D84
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PIKACHU_1
+ .4byte gAnimCmd_PIKACHU_2
+
+ .align 2
+gAnims_RAICHU:: @ 8308D90
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_RAICHU_1
+ .4byte gAnimCmd_RAICHU_2
+
+ .align 2
+gAnims_SANDSHREW:: @ 8308D9C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SANDSHREW_1
+ .4byte gAnimCmd_SANDSHREW_2
+
+ .align 2
+gAnims_SANDSLASH:: @ 8308DA8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SANDSLASH_1
+ .4byte gAnimCmd_SANDSLASH_2
+
+ .align 2
+gAnims_NIDORAN_F:: @ 8308DB4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_NIDORAN_F_1
+
+ .align 2
+gAnims_NIDORINA:: @ 8308DBC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_NIDORINA_1
+
+ .align 2
+gAnims_NIDOQUEEN:: @ 8308DC4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_NIDOQUEEN_1
+
+ .align 2
+gAnims_NIDORAN_M:: @ 8308DCC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_NIDORAN_M_1
+
+ .align 2
+gAnims_NIDORINO:: @ 8308DD4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_NIDORINO_1
+
+ .align 2
+gAnims_NIDOKING:: @ 8308DDC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_NIDOKING_1
+
+ .align 2
+gAnims_CLEFAIRY:: @ 8308DE4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CLEFAIRY_1
+
+ .align 2
+gAnims_CLEFABLE:: @ 8308DEC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CLEFABLE_1
+
+ .align 2
+gAnims_VULPIX:: @ 8308DF4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_VULPIX_1
+ .4byte gAnimCmd_VULPIX_2
+
+ .align 2
+gAnims_NINETALES:: @ 8308E00
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_NINETALES_1
+ .4byte gAnimCmd_NINETALES_2
+
+ .align 2
+gAnims_JIGGLYPUFF:: @ 8308E0C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_JIGGLYPUFF_1
+ .4byte gAnimCmd_JIGGLYPUFF_2
+
+ .align 2
+gAnims_WIGGLYTUFF:: @ 8308E18
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_WIGGLYTUFF_1
+ .4byte gAnimCmd_WIGGLYTUFF_2
+
+ .align 2
+gAnims_ZUBAT:: @ 8308E24
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ZUBAT_1
+
+ .align 2
+gAnims_GOLBAT:: @ 8308E2C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GOLBAT_1
+
+ .align 2
+gAnims_ODDISH:: @ 8308E34
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ODDISH_1
+
+ .align 2
+gAnims_GLOOM:: @ 8308E3C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GLOOM_1
+
+ .align 2
+gAnims_VILEPLUME:: @ 8308E44
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_VILEPLUME_1
+
+ .align 2
+gAnims_PARAS:: @ 8308E4C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PARAS_1
+
+ .align 2
+gAnims_PARASECT:: @ 8308E54
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PARASECT_1
+
+ .align 2
+gAnims_VENONAT:: @ 8308E5C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_VENONAT_1
+
+ .align 2
+gAnims_VENOMOTH:: @ 8308E64
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_VENOMOTH_1
+
+ .align 2
+gAnims_DIGLETT:: @ 8308E6C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_DIGLETT_1
+
+ .align 2
+gAnims_DUGTRIO:: @ 8308E74
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_DUGTRIO_1
+
+ .align 2
+gAnims_MEOWTH:: @ 8308E7C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MEOWTH_1
+
+ .align 2
+gAnims_PERSIAN:: @ 8308E84
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PERSIAN_1
+
+ .align 2
+gAnims_PSYDUCK:: @ 8308E8C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PSYDUCK_1
+ .4byte gAnimCmd_PSYDUCK_2
+
+ .align 2
+gAnims_GOLDUCK:: @ 8308E98
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GOLDUCK_1
+ .4byte gAnimCmd_GOLDUCK_2
+
+ .align 2
+gAnims_MANKEY:: @ 8308EA4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MANKEY_1
+
+ .align 2
+gAnims_PRIMEAPE:: @ 8308EAC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PRIMEAPE_1
+
+ .align 2
+gAnims_GROWLITHE:: @ 8308EB4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GROWLITHE_1
+
+ .align 2
+gAnims_ARCANINE:: @ 8308EBC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ARCANINE_1
+
+ .align 2
+gAnims_POLIWAG:: @ 8308EC4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_POLIWAG_1
+
+ .align 2
+gAnims_POLIWHIRL:: @ 8308ECC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_POLIWHIRL_1
+
+ .align 2
+gAnims_POLIWRATH:: @ 8308ED4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_POLIWRATH_1
+
+ .align 2
+gAnims_ABRA:: @ 8308EDC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ABRA_1
+
+ .align 2
+gAnims_KADABRA:: @ 8308EE4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_KADABRA_1
+
+ .align 2
+gAnims_ALAKAZAM:: @ 8308EEC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ALAKAZAM_1
+
+ .align 2
+gAnims_MACHOP:: @ 8308EF4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MACHOP_1
+
+ .align 2
+gAnims_MACHOKE:: @ 8308EFC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MACHOKE_1
+
+ .align 2
+gAnims_MACHAMP:: @ 8308F04
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MACHAMP_1
+
+ .align 2
+gAnims_BELLSPROUT:: @ 8308F0C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_BELLSPROUT_1
+
+ .align 2
+gAnims_WEEPINBELL:: @ 8308F14
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_WEEPINBELL_1
+
+ .align 2
+gAnims_VICTREEBEL:: @ 8308F1C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_VICTREEBEL_1
+
+ .align 2
+gAnims_TENTACOOL:: @ 8308F24
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_TENTACOOL_1
+
+ .align 2
+gAnims_TENTACRUEL:: @ 8308F2C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_TENTACRUEL_1
+
+ .align 2
+gAnims_GEODUDE:: @ 8308F34
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GEODUDE_1
+
+ .align 2
+gAnims_GRAVELER:: @ 8308F3C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GRAVELER_1
+
+ .align 2
+gAnims_GOLEM:: @ 8308F44
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GOLEM_1
+
+ .align 2
+gAnims_PONYTA:: @ 8308F4C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PONYTA_1
+
+ .align 2
+gAnims_RAPIDASH:: @ 8308F54
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_RAPIDASH_1
+
+ .align 2
+gAnims_SLOWPOKE:: @ 8308F5C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SLOWPOKE_1
+
+ .align 2
+gAnims_SLOWBRO:: @ 8308F64
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SLOWBRO_1
+
+ .align 2
+gAnims_MAGNEMITE:: @ 8308F6C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MAGNEMITE_1
+
+ .align 2
+gAnims_MAGNETON:: @ 8308F74
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MAGNETON_1
+
+ .align 2
+gAnims_FARFETCHD:: @ 8308F7C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_FARFETCHD_1
+
+ .align 2
+gAnims_DODUO:: @ 8308F84
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_DODUO_1
+
+ .align 2
+gAnims_DODRIO:: @ 8308F8C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_DODRIO_1
+
+ .align 2
+gAnims_SEEL:: @ 8308F94
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SEEL_1
+
+ .align 2
+gAnims_DEWGONG:: @ 8308F9C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_DEWGONG_1
+
+ .align 2
+gAnims_GRIMER:: @ 8308FA4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GRIMER_1
+ .4byte gAnimCmd_GRIMER_2
+
+ .align 2
+gAnims_MUK:: @ 8308FB0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MUK_1
+ .4byte gAnimCmd_MUK_2
+
+ .align 2
+gAnims_SHELLDER:: @ 8308FBC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SHELLDER_1
+
+ .align 2
+gAnims_CLOYSTER:: @ 8308FC4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CLOYSTER_1
+
+ .align 2
+gAnims_GASTLY:: @ 8308FCC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GASTLY_1
+
+ .align 2
+gAnims_HAUNTER:: @ 8308FD4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_HAUNTER_1
+
+ .align 2
+gAnims_GENGAR:: @ 8308FDC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GENGAR_1
+
+ .align 2
+gAnims_ONIX:: @ 8308FE4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ONIX_1
+
+ .align 2
+gAnims_DROWZEE:: @ 8308FEC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_DROWZEE_1
+
+ .align 2
+gAnims_HYPNO:: @ 8308FF4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_HYPNO_1
+
+ .align 2
+gAnims_KRABBY:: @ 8308FFC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_KRABBY_1
+
+ .align 2
+gAnims_KINGLER:: @ 8309004
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_KINGLER_1
+
+ .align 2
+gAnims_VOLTORB:: @ 830900C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_VOLTORB_1
+
+ .align 2
+gAnims_ELECTRODE:: @ 8309014
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ELECTRODE_1
+
+ .align 2
+gAnims_EXEGGCUTE:: @ 830901C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_EXEGGCUTE_1
+
+ .align 2
+gAnims_EXEGGUTOR:: @ 8309024
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_EXEGGUTOR_1
+
+ .align 2
+gAnims_CUBONE:: @ 830902C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CUBONE_1
+
+ .align 2
+gAnims_MAROWAK:: @ 8309034
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MAROWAK_1
+
+ .align 2
+gAnims_HITMONLEE:: @ 830903C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_HITMONLEE_1
+
+ .align 2
+gAnims_HITMONCHAN:: @ 8309044
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_HITMONCHAN_1
+
+ .align 2
+gAnims_LICKITUNG:: @ 830904C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_LICKITUNG_1
+
+ .align 2
+gAnims_KOFFING:: @ 8309054
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_KOFFING_1
+ .4byte gAnimCmd_KOFFING_2
+
+ .align 2
+gAnims_WEEZING:: @ 8309060
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_WEEZING_1
+ .4byte gAnimCmd_WEEZING_2
+
+ .align 2
+gAnims_RHYHORN:: @ 830906C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_RHYHORN_1
+ .4byte gAnimCmd_RHYHORN_2
+
+ .align 2
+gAnims_RHYDON:: @ 8309078
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_RHYDON_1
+ .4byte gAnimCmd_RHYDON_2
+
+ .align 2
+gAnims_CHANSEY:: @ 8309084
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CHANSEY_1
+
+ .align 2
+gAnims_TANGELA:: @ 830908C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_TANGELA_1
+
+ .align 2
+gAnims_KANGASKHAN:: @ 8309094
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_KANGASKHAN_1
+
+ .align 2
+gAnims_HORSEA:: @ 830909C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_HORSEA_1
+ .4byte gAnimCmd_HORSEA_2
+
+ .align 2
+gAnims_SEADRA:: @ 83090A8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SEADRA_1
+ .4byte gAnimCmd_SEADRA_2
+
+ .align 2
+gAnims_GOLDEEN:: @ 83090B4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GOLDEEN_1
+
+ .align 2
+gAnims_SEAKING:: @ 83090BC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SEAKING_1
+
+ .align 2
+gAnims_STARYU:: @ 83090C4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_STARYU_1
+ .4byte gAnimCmd_STARYU_2
+
+ .align 2
+gAnims_STARMIE:: @ 83090D0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_STARMIE_1
+ .4byte gAnimCmd_STARMIE_2
+
+ .align 2
+gAnims_MR_MIME:: @ 83090DC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MR_MIME_1
+
+ .align 2
+gAnims_SCYTHER:: @ 83090E4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SCYTHER_1
+
+ .align 2
+gAnims_JYNX:: @ 83090EC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_JYNX_1
+
+ .align 2
+gAnims_ELECTABUZZ:: @ 83090F4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ELECTABUZZ_1
+
+ .align 2
+gAnims_MAGMAR:: @ 83090FC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MAGMAR_1
+
+ .align 2
+gAnims_PINSIR:: @ 8309104
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PINSIR_1
+ .4byte gAnimCmd_PINSIR_2
+
+ .align 2
+gAnims_TAUROS:: @ 8309110
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_TAUROS_1
+
+ .align 2
+gAnims_MAGIKARP:: @ 8309118
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MAGIKARP_1
+
+ .align 2
+gAnims_GYARADOS:: @ 8309120
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GYARADOS_1
+
+ .align 2
+gAnims_LAPRAS:: @ 8309128
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_LAPRAS_1
+
+ .align 2
+gAnims_DITTO:: @ 8309130
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_DITTO_1
+
+ .align 2
+gAnims_EEVEE:: @ 8309138
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_EEVEE_1
+
+ .align 2
+gAnims_VAPOREON:: @ 8309140
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_VAPOREON_1
+
+ .align 2
+gAnims_JOLTEON:: @ 8309148
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_JOLTEON_1
+
+ .align 2
+gAnims_FLAREON:: @ 8309150
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_FLAREON_1
+
+ .align 2
+gAnims_PORYGON:: @ 8309158
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PORYGON_1
+
+ .align 2
+gAnims_OMANYTE:: @ 8309160
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_OMANYTE_1
+
+ .align 2
+gAnims_OMASTAR:: @ 8309168
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_OMASTAR_1
+
+ .align 2
+gAnims_KABUTO:: @ 8309170
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_KABUTO_1
+
+ .align 2
+gAnims_KABUTOPS:: @ 8309178
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_KABUTOPS_1
+
+ .align 2
+gAnims_AERODACTYL:: @ 8309180
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_AERODACTYL_1
+
+ .align 2
+gAnims_SNORLAX:: @ 8309188
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SNORLAX_1
+
+ .align 2
+gAnims_ARTICUNO:: @ 8309190
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ARTICUNO_1
+
+ .align 2
+gAnims_ZAPDOS:: @ 8309198
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ZAPDOS_1
+
+ .align 2
+gAnims_MOLTRES:: @ 83091A0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MOLTRES_1
+
+ .align 2
+gAnims_DRATINI:: @ 83091A8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_DRATINI_1
+
+ .align 2
+gAnims_DRAGONAIR:: @ 83091B0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_DRAGONAIR_1
+
+ .align 2
+gAnims_DRAGONITE:: @ 83091B8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_DRAGONITE_1
+
+ .align 2
+gAnims_MEWTWO:: @ 83091C0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MEWTWO_1
+
+ .align 2
+gAnims_MEW:: @ 83091C8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MEW_1
+
+ .align 2
+gAnims_CHIKORITA:: @ 83091D0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CHIKORITA_1
+
+ .align 2
+gAnims_BAYLEEF:: @ 83091D8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_BAYLEEF_1
+
+ .align 2
+gAnims_MEGANIUM:: @ 83091E0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MEGANIUM_1
+
+ .align 2
+gAnims_CYNDAQUIL:: @ 83091E8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CYNDAQUIL_1
+
+ .align 2
+gAnims_QUILAVA:: @ 83091F0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_QUILAVA_1
+
+ .align 2
+gAnims_TYPHLOSION:: @ 83091F8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_TYPHLOSION_1
+
+ .align 2
+gAnims_TOTODILE:: @ 8309200
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_TOTODILE_1
+
+ .align 2
+gAnims_CROCONAW:: @ 8309208
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CROCONAW_1
+
+ .align 2
+gAnims_FERALIGATR:: @ 8309210
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_FERALIGATR_1
+
+ .align 2
+gAnims_SENTRET:: @ 8309218
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SENTRET_1
+
+ .align 2
+gAnims_FURRET:: @ 8309220
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_FURRET_1
+
+ .align 2
+gAnims_HOOTHOOT:: @ 8309228
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_HOOTHOOT_1
+
+ .align 2
+gAnims_NOCTOWL:: @ 8309230
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_NOCTOWL_1
+
+ .align 2
+gAnims_LEDYBA:: @ 8309238
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_LEDYBA_1
+
+ .align 2
+gAnims_LEDIAN:: @ 8309240
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_LEDIAN_1
+
+ .align 2
+gAnims_SPINARAK:: @ 8309248
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SPINARAK_1
+
+ .align 2
+gAnims_ARIADOS:: @ 8309250
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ARIADOS_1
+
+ .align 2
+gAnims_CROBAT:: @ 8309258
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CROBAT_1
+
+ .align 2
+gAnims_CHINCHOU:: @ 8309260
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CHINCHOU_1
+ .4byte gAnimCmd_CHINCHOU_2
+
+ .align 2
+gAnims_LANTURN:: @ 830926C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_LANTURN_1
+ .4byte gAnimCmd_LANTURN_2
+
+ .align 2
+gAnims_PICHU:: @ 8309278
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PICHU_1
+ .4byte gAnimCmd_PICHU_2
+
+ .align 2
+gAnims_CLEFFA:: @ 8309284
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CLEFFA_1
+
+ .align 2
+gAnims_IGGLYBUFF:: @ 830928C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_IGGLYBUFF_1
+ .4byte gAnimCmd_IGGLYBUFF_2
+
+ .align 2
+gAnims_TOGEPI:: @ 8309298
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_TOGEPI_1
+
+ .align 2
+gAnims_TOGETIC:: @ 83092A0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_TOGETIC_1
+
+ .align 2
+gAnims_NATU:: @ 83092A8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_NATU_1
+ .4byte gAnimCmd_NATU_2
+
+ .align 2
+gAnims_XATU:: @ 83092B4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_XATU_1
+ .4byte gAnimCmd_XATU_2
+
+ .align 2
+gAnims_MAREEP:: @ 83092C0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MAREEP_1
+
+ .align 2
+gAnims_FLAAFFY:: @ 83092C8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_FLAAFFY_1
+
+ .align 2
+gAnims_AMPHAROS:: @ 83092D0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_AMPHAROS_1
+
+ .align 2
+gAnims_BELLOSSOM:: @ 83092D8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_BELLOSSOM_1
+
+ .align 2
+gAnims_MARILL:: @ 83092E0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MARILL_1
+
+ .align 2
+gAnims_AZUMARILL:: @ 83092E8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_AZUMARILL_1
+
+ .align 2
+gAnims_SUDOWOODO:: @ 83092F0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SUDOWOODO_1
+
+ .align 2
+gAnims_POLITOED:: @ 83092F8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_POLITOED_1
+
+ .align 2
+gAnims_HOPPIP:: @ 8309300
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_HOPPIP_1
+
+ .align 2
+gAnims_SKIPLOOM:: @ 8309308
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SKIPLOOM_1
+
+ .align 2
+gAnims_JUMPLUFF:: @ 8309310
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_JUMPLUFF_1
+
+ .align 2
+gAnims_AIPOM:: @ 8309318
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_AIPOM_1
+
+ .align 2
+gAnims_SUNKERN:: @ 8309320
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SUNKERN_1
+
+ .align 2
+gAnims_SUNFLORA:: @ 8309328
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SUNFLORA_1
+
+ .align 2
+gAnims_YANMA:: @ 8309330
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_YANMA_1
+
+ .align 2
+gAnims_WOOPER:: @ 8309338
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_WOOPER_1
+
+ .align 2
+gAnims_QUAGSIRE:: @ 8309340
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_QUAGSIRE_1
+
+ .align 2
+gAnims_ESPEON:: @ 8309348
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ESPEON_1
+
+ .align 2
+gAnims_UMBREON:: @ 8309350
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UMBREON_1
+
+ .align 2
+gAnims_MURKROW:: @ 8309358
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MURKROW_1
+
+ .align 2
+gAnims_SLOWKING:: @ 8309360
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SLOWKING_1
+
+ .align 2
+gAnims_MISDREAVUS:: @ 8309368
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MISDREAVUS_1
+
+ .align 2
+gAnims_UNOWN:: @ 8309370
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_1
+
+ .align 2
+gAnims_WOBBUFFET:: @ 8309378
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_WOBBUFFET_1
+ .4byte gAnimCmd_WOBBUFFET_2
+
+ .align 2
+gAnims_GIRAFARIG:: @ 8309384
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GIRAFARIG_1
+ .4byte gAnimCmd_GIRAFARIG_2
+
+ .align 2
+gAnims_PINECO:: @ 8309390
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PINECO_1
+
+ .align 2
+gAnims_FORRETRESS:: @ 8309398
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_FORRETRESS_1
+
+ .align 2
+gAnims_DUNSPARCE:: @ 83093A0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_DUNSPARCE_1
+
+ .align 2
+gAnims_GLIGAR:: @ 83093A8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GLIGAR_1
+
+ .align 2
+gAnims_STEELIX:: @ 83093B0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_STEELIX_1
+
+ .align 2
+gAnims_SNUBBULL:: @ 83093B8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SNUBBULL_1
+
+ .align 2
+gAnims_GRANBULL:: @ 83093C0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GRANBULL_1
+
+ .align 2
+gAnims_QWILFISH:: @ 83093C8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_QWILFISH_1
+
+ .align 2
+gAnims_SCIZOR:: @ 83093D0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SCIZOR_1
+
+ .align 2
+gAnims_SHUCKLE:: @ 83093D8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SHUCKLE_1
+
+ .align 2
+gAnims_HERACROSS:: @ 83093E0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_HERACROSS_1
+ .4byte gAnimCmd_HERACROSS_2
+
+ .align 2
+gAnims_SNEASEL:: @ 83093EC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SNEASEL_1
+
+ .align 2
+gAnims_TEDDIURSA:: @ 83093F4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_TEDDIURSA_1
+
+ .align 2
+gAnims_URSARING:: @ 83093FC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_URSARING_1
+
+ .align 2
+gAnims_SLUGMA:: @ 8309404
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SLUGMA_1
+ .4byte gAnimCmd_SLUGMA_2
+
+ .align 2
+gAnims_MAGCARGO:: @ 8309410
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MAGCARGO_1
+ .4byte gAnimCmd_MAGCARGO_2
+
+ .align 2
+gAnims_SWINUB:: @ 830941C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SWINUB_1
+
+ .align 2
+gAnims_PILOSWINE:: @ 8309424
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PILOSWINE_1
+
+ .align 2
+gAnims_CORSOLA:: @ 830942C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CORSOLA_1
+ .4byte gAnimCmd_CORSOLA_2
+
+ .align 2
+gAnims_REMORAID:: @ 8309438
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_REMORAID_1
+
+ .align 2
+gAnims_OCTILLERY:: @ 8309440
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_OCTILLERY_1
+
+ .align 2
+gAnims_DELIBIRD:: @ 8309448
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_DELIBIRD_1
+
+ .align 2
+gAnims_MANTINE:: @ 8309450
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MANTINE_1
+
+ .align 2
+gAnims_SKARMORY:: @ 8309458
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SKARMORY_1
+ .4byte gAnimCmd_SKARMORY_2
+
+ .align 2
+gAnims_HOUNDOUR:: @ 8309464
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_HOUNDOUR_1
+
+ .align 2
+gAnims_HOUNDOOM:: @ 830946C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_HOUNDOOM_1
+
+ .align 2
+gAnims_KINGDRA:: @ 8309474
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_KINGDRA_1
+ .4byte gAnimCmd_KINGDRA_2
+
+ .align 2
+gAnims_PHANPY:: @ 8309480
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PHANPY_1
+ .4byte gAnimCmd_PHANPY_2
+
+ .align 2
+gAnims_DONPHAN:: @ 830948C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_DONPHAN_1
+ .4byte gAnimCmd_DONPHAN_2
+
+ .align 2
+gAnims_PORYGON2:: @ 8309498
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PORYGON2_1
+
+ .align 2
+gAnims_STANTLER:: @ 83094A0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_STANTLER_1
+
+ .align 2
+gAnims_SMEARGLE:: @ 83094A8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SMEARGLE_1
+
+ .align 2
+gAnims_TYROGUE:: @ 83094B0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_TYROGUE_1
+
+ .align 2
+gAnims_HITMONTOP:: @ 83094B8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_HITMONTOP_1
+
+ .align 2
+gAnims_SMOOCHUM:: @ 83094C0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SMOOCHUM_1
+
+ .align 2
+gAnims_ELEKID:: @ 83094C8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ELEKID_1
+
+ .align 2
+gAnims_MAGBY:: @ 83094D0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MAGBY_1
+
+ .align 2
+gAnims_MILTANK:: @ 83094D8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MILTANK_1
+
+ .align 2
+gAnims_BLISSEY:: @ 83094E0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_BLISSEY_1
+
+ .align 2
+gAnims_RAIKOU:: @ 83094E8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_RAIKOU_1
+
+ .align 2
+gAnims_ENTEI:: @ 83094F0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ENTEI_1
+
+ .align 2
+gAnims_SUICUNE:: @ 83094F8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SUICUNE_1
+
+ .align 2
+gAnims_LARVITAR:: @ 8309500
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_LARVITAR_1
+
+ .align 2
+gAnims_PUPITAR:: @ 8309508
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PUPITAR_1
+
+ .align 2
+gAnims_TYRANITAR:: @ 8309510
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_TYRANITAR_1
+
+ .align 2
+gAnims_LUGIA:: @ 8309518
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_LUGIA_1
+
+ .align 2
+gAnims_HO_OH:: @ 8309520
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_HO_OH_1
+
+ .align 2
+gAnims_CELEBI:: @ 8309528
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CELEBI_1
+
+ .align 2
+gAnims_OLD_UNOWN_B:: @ 8309530
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_OLD_UNOWN_B_1
+
+ .align 2
+gAnims_TREECKO:: @ 8309538
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_TREECKO_1
+
+ .align 2
+gAnims_GROVYLE:: @ 8309540
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GROVYLE_1
+
+ .align 2
+gAnims_SCEPTILE:: @ 8309548
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SCEPTILE_1
+
+ .align 2
+gAnims_TORCHIC:: @ 8309550
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_TORCHIC_1
+
+ .align 2
+gAnims_COMBUSKEN:: @ 8309558
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_COMBUSKEN_1
+
+ .align 2
+gAnims_BLAZIKEN:: @ 8309560
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_BLAZIKEN_1
+ .4byte gAnimCmd_BLAZIKEN_2
+ .4byte gAnimCmd_BLAZIKEN_3
+ .4byte gAnimCmd_BLAZIKEN_4
+
+ .align 2
+gAnims_MUDKIP:: @ 8309574
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MUDKIP_1
+
+ .align 2
+gAnims_MARSHTOMP:: @ 830957C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MARSHTOMP_1
+
+ .align 2
+gAnims_SWAMPERT:: @ 8309584
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SWAMPERT_1
+
+ .align 2
+gAnims_POOCHYENA:: @ 830958C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_POOCHYENA_1
+
+ .align 2
+gAnims_MIGHTYENA:: @ 8309594
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MIGHTYENA_1
+
+ .align 2
+gAnims_ZIGZAGOON:: @ 830959C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ZIGZAGOON_1
+
+ .align 2
+gAnims_LINOONE:: @ 83095A4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_LINOONE_1
+
+ .align 2
+gAnims_WURMPLE:: @ 83095AC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_WURMPLE_1
+
+ .align 2
+gAnims_SILCOON:: @ 83095B4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SILCOON_1
+ .4byte gAnimCmd_SILCOON_2
+
+ .align 2
+gAnims_BEAUTIFLY:: @ 83095C0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_BEAUTIFLY_1
+ .4byte gAnimCmd_BEAUTIFLY_2
+
+ .align 2
+gAnims_CASCOON:: @ 83095CC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CASCOON_1
+ .4byte gAnimCmd_CASCOON_2
+
+ .align 2
+gAnims_DUSTOX:: @ 83095D8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_DUSTOX_1
+ .4byte gAnimCmd_DUSTOX_2
+
+ .align 2
+gAnims_LOTAD:: @ 83095E4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_LOTAD_1
+
+ .align 2
+gAnims_LOMBRE:: @ 83095EC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_LOMBRE_1
+
+ .align 2
+gAnims_LUDICOLO:: @ 83095F4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_LUDICOLO_1
+
+ .align 2
+gAnims_SEEDOT:: @ 83095FC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SEEDOT_1
+
+ .align 2
+gAnims_NUZLEAF:: @ 8309604
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_NUZLEAF_1
+
+ .align 2
+gAnims_SHIFTRY:: @ 830960C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SHIFTRY_1
+
+ .align 2
+gAnims_NINCADA:: @ 8309614
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_NINCADA_1
+
+ .align 2
+gAnims_NINJASK:: @ 830961C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_NINJASK_1
+
+ .align 2
+gAnims_SHEDINJA:: @ 8309624
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SHEDINJA_1
+
+ .align 2
+gAnims_TAILLOW:: @ 830962C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_TAILLOW_1
+
+ .align 2
+gAnims_SWELLOW:: @ 8309634
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SWELLOW_1
+
+ .align 2
+gAnims_SHROOMISH:: @ 830963C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SHROOMISH_1
+
+ .align 2
+gAnims_BRELOOM:: @ 8309644
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_BRELOOM_1
+
+ .align 2
+gAnims_SPINDA:: @ 830964C
+ .4byte gAnimCmd_General_Frame0
+
+ .align 2
+gAnims_WINGULL:: @ 8309650
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_WINGULL_1
+
+ .align 2
+gAnims_PELIPPER:: @ 8309658
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PELIPPER_1
+
+ .align 2
+gAnims_SURSKIT:: @ 8309660
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SURSKIT_1
+ .4byte gAnimCmd_SURSKIT_2
+
+ .align 2
+gAnims_MASQUERAIN:: @ 830966C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MASQUERAIN_1
+ .4byte gAnimCmd_MASQUERAIN_2
+
+ .align 2
+gAnims_WAILMER:: @ 8309678
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_WAILMER_1
+
+ .align 2
+gAnims_WAILORD:: @ 8309680
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_WAILORD_1
+
+ .align 2
+gAnims_SKITTY:: @ 8309688
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SKITTY_1
+
+ .align 2
+gAnims_DELCATTY:: @ 8309690
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_DELCATTY_1
+
+ .align 2
+gAnims_KECLEON:: @ 8309698
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_KECLEON_1
+
+ .align 2
+gAnims_BALTOY:: @ 83096A0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_BALTOY_1
+
+ .align 2
+gAnims_CLAYDOL:: @ 83096A8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CLAYDOL_1
+
+ .align 2
+gAnims_NOSEPASS:: @ 83096B0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_NOSEPASS_1
+
+ .align 2
+gAnims_TORKOAL:: @ 83096B8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_TORKOAL_1
+
+ .align 2
+gAnims_SABLEYE:: @ 83096C0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SABLEYE_1
+
+ .align 2
+gAnims_BARBOACH:: @ 83096C8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_BARBOACH_1
+
+ .align 2
+gAnims_WHISCASH:: @ 83096D0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_WHISCASH_1
+
+ .align 2
+gAnims_LUVDISC:: @ 83096D8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_LUVDISC_1
+
+ .align 2
+gAnims_CORPHISH:: @ 83096E0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CORPHISH_1
+
+ .align 2
+gAnims_CRAWDAUNT:: @ 83096E8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CRAWDAUNT_1
+
+ .align 2
+gAnims_FEEBAS:: @ 83096F0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_FEEBAS_1
+
+ .align 2
+gAnims_MILOTIC:: @ 83096F8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MILOTIC_1
+
+ .align 2
+gAnims_CARVANHA:: @ 8309700
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CARVANHA_1
+
+ .align 2
+gAnims_SHARPEDO:: @ 8309708
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SHARPEDO_1
+
+ .align 2
+gAnims_TRAPINCH:: @ 8309710
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_TRAPINCH_1
+
+ .align 2
+gAnims_VIBRAVA:: @ 8309718
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_VIBRAVA_1
+
+ .align 2
+gAnims_FLYGON:: @ 8309720
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_FLYGON_1
+
+ .align 2
+gAnims_MAKUHITA:: @ 8309728
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MAKUHITA_1
+
+ .align 2
+gAnims_HARIYAMA:: @ 8309730
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_HARIYAMA_1
+
+ .align 2
+gAnims_ELECTRIKE:: @ 8309738
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ELECTRIKE_1
+
+ .align 2
+gAnims_MANECTRIC:: @ 8309740
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MANECTRIC_1
+
+ .align 2
+gAnims_NUMEL:: @ 8309748
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_NUMEL_1
+
+ .align 2
+gAnims_CAMERUPT:: @ 8309750
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CAMERUPT_1
+
+ .align 2
+gAnims_SPHEAL:: @ 8309758
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SPHEAL_1
+
+ .align 2
+gAnims_SEALEO:: @ 8309760
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SEALEO_1
+
+ .align 2
+gAnims_WALREIN:: @ 8309768
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_WALREIN_1
+
+ .align 2
+gAnims_CACNEA:: @ 8309770
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CACNEA_1
+
+ .align 2
+gAnims_CACTURNE:: @ 8309778
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CACTURNE_1
+
+ .align 2
+gAnims_SNORUNT:: @ 8309780
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SNORUNT_1
+
+ .align 2
+gAnims_GLALIE:: @ 8309788
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GLALIE_1
+
+ .align 2
+gAnims_LUNATONE:: @ 8309790
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_LUNATONE_1
+ .4byte gAnimCmd_LUNATONE_2
+
+ .align 2
+gAnims_SOLROCK:: @ 830979C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SOLROCK_1
+ .4byte gAnimCmd_SOLROCK_2
+
+ .align 2
+gAnims_AZURILL:: @ 83097A8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_AZURILL_1
+
+ .align 2
+gAnims_SPOINK:: @ 83097B0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SPOINK_1
+
+ .align 2
+gAnims_GRUMPIG:: @ 83097B8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GRUMPIG_1
+
+ .align 2
+gAnims_PLUSLE:: @ 83097C0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_PLUSLE_1
+
+ .align 2
+gAnims_MINUN:: @ 83097C8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MINUN_1
+
+ .align 2
+gAnims_MAWILE:: @ 83097D0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MAWILE_1
+
+ .align 2
+gAnims_MEDITITE:: @ 83097D8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MEDITITE_1
+
+ .align 2
+gAnims_MEDICHAM:: @ 83097E0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_MEDICHAM_1
+
+ .align 2
+gAnims_SWABLU:: @ 83097E8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SWABLU_1
+ .4byte gAnimCmd_SWABLU_2
+
+ .align 2
+gAnims_ALTARIA:: @ 83097F4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ALTARIA_1
+ .4byte gAnimCmd_ALTARIA_2
+
+ .align 2
+gAnims_WYNAUT:: @ 8309800
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_WYNAUT_1
+
+ .align 2
+gAnims_DUSKULL:: @ 8309808
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_DUSKULL_1
+
+ .align 2
+gAnims_DUSCLOPS:: @ 8309810
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_DUSCLOPS_1
+
+ .align 2
+gAnims_ROSELIA:: @ 8309818
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ROSELIA_1
+
+ .align 2
+gAnims_SLAKOTH:: @ 8309820
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SLAKOTH_1
+
+ .align 2
+gAnims_VIGOROTH:: @ 8309828
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_VIGOROTH_1
+
+ .align 2
+gAnims_SLAKING:: @ 8309830
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SLAKING_1
+
+ .align 2
+gAnims_GULPIN:: @ 8309838
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GULPIN_1
+
+ .align 2
+gAnims_SWALOT:: @ 8309840
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SWALOT_1
+
+ .align 2
+gAnims_TROPIUS:: @ 8309848
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_TROPIUS_1
+
+ .align 2
+gAnims_WHISMUR:: @ 8309850
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_WHISMUR_1
+
+ .align 2
+gAnims_LOUDRED:: @ 8309858
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_LOUDRED_1
+
+ .align 2
+gAnims_EXPLOUD:: @ 8309860
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_EXPLOUD_1
+
+ .align 2
+gAnims_CLAMPERL:: @ 8309868
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CLAMPERL_1
+
+ .align 2
+gAnims_HUNTAIL:: @ 8309870
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_HUNTAIL_1
+
+ .align 2
+gAnims_GOREBYSS:: @ 8309878
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GOREBYSS_1
+
+ .align 2
+gAnims_ABSOL:: @ 8309880
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ABSOL_1
+
+ .align 2
+gAnims_SHUPPET:: @ 8309888
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SHUPPET_1
+
+ .align 2
+gAnims_BANETTE:: @ 8309890
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_BANETTE_1
+
+ .align 2
+gAnims_SEVIPER:: @ 8309898
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SEVIPER_1
+
+ .align 2
+gAnims_ZANGOOSE:: @ 83098A0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ZANGOOSE_1
+
+ .align 2
+gAnims_RELICANTH:: @ 83098A8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_RELICANTH_1
+
+ .align 2
+gAnims_ARON:: @ 83098B0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ARON_1
+
+ .align 2
+gAnims_LAIRON:: @ 83098B8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_LAIRON_1
+
+ .align 2
+gAnims_AGGRON:: @ 83098C0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_AGGRON_1
+
+ .align 2
+gAnims_CASTFORM:: @ 83098C8
+ .4byte gAnimCmd_CASTFORM_0
+ .4byte gAnimCmd_CASTFORM_1
+ .4byte gAnimCmd_CASTFORM_2
+ .4byte gAnimCmd_CASTFORM_3
+
+ .align 2
+gAnims_VOLBEAT:: @ 83098D8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_VOLBEAT_1
+
+ .align 2
+gAnims_ILLUMISE:: @ 83098E0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ILLUMISE_1
+
+ .align 2
+gAnims_LILEEP:: @ 83098E8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_LILEEP_1
+
+ .align 2
+gAnims_CRADILY:: @ 83098F0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CRADILY_1
+
+ .align 2
+gAnims_ANORITH:: @ 83098F8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ANORITH_1
+
+ .align 2
+gAnims_ARMALDO:: @ 8309900
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_ARMALDO_1
+
+ .align 2
+gAnims_RALTS:: @ 8309908
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_RALTS_1
+
+ .align 2
+gAnims_KIRLIA:: @ 8309910
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_KIRLIA_1
+
+ .align 2
+gAnims_GARDEVOIR:: @ 8309918
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GARDEVOIR_1
+
+ .align 2
+gAnims_BAGON:: @ 8309920
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_BAGON_1
+
+ .align 2
+gAnims_SHELGON:: @ 8309928
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SHELGON_1
+
+ .align 2
+gAnims_SALAMENCE:: @ 8309930
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_SALAMENCE_1
+
+ .align 2
+gAnims_BELDUM:: @ 8309938
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_BELDUM_1
+
+ .align 2
+gAnims_METANG:: @ 8309940
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_METANG_1
+
+ .align 2
+gAnims_METAGROSS:: @ 8309948
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_METAGROSS_1
+
+ .align 2
+gAnims_REGIROCK:: @ 8309950
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_REGIROCK_1
+ .4byte gAnimCmd_REGIROCK_2
+
+ .align 2
+gAnims_REGICE:: @ 830995C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_REGICE_1
+
+ .align 2
+gAnims_REGISTEEL:: @ 8309964
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_REGISTEEL_1
+ .4byte gAnimCmd_REGISTEEL_2
+
+ .align 2
+gAnims_KYOGRE:: @ 8309970
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_KYOGRE_1
+ .4byte gAnimCmd_KYOGRE_2
+
+ .align 2
+gAnims_GROUDON:: @ 830997C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_GROUDON_1
+ .4byte gAnimCmd_GROUDON_2
+
+ .align 2
+gAnims_RAYQUAZA:: @ 8309988
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_RAYQUAZA_1
+ .4byte gAnimCmd_RAYQUAZA_2
+
+ .align 2
+gAnims_LATIAS:: @ 8309994
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_LATIAS_1
+ .4byte gAnimCmd_LATIAS_2
+
+ .align 2
+gAnims_LATIOS:: @ 83099A0
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_LATIOS_1
+ .4byte gAnimCmd_LATIOS_2
+
+ .align 2
+gAnims_JIRACHI:: @ 83099AC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_JIRACHI_1
+ .4byte gAnimCmd_JIRACHI_2
+
+ .align 2
+gAnims_DEOXYS:: @ 83099B8
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_DEOXYS_1
+ .4byte gAnimCmd_DEOXYS_2
+
+ .align 2
+gAnims_CHIMECHO:: @ 83099C4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_CHIMECHO_1
+
+ .align 2
+gAnims_EGG:: @ 83099CC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_EGG_1
+
+ .align 2
+gAnims_UNOWN_B:: @ 83099D4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_B_1
+
+ .align 2
+gAnims_UNOWN_C:: @ 83099DC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_C_1
+
+ .align 2
+gAnims_UNOWN_D:: @ 83099E4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_D_1
+
+ .align 2
+gAnims_UNOWN_E:: @ 83099EC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_E_1
+
+ .align 2
+gAnims_UNOWN_F:: @ 83099F4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_F_1
+
+ .align 2
+gAnims_UNOWN_G:: @ 83099FC
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_G_1
+
+ .align 2
+gAnims_UNOWN_H:: @ 8309A04
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_H_1
+
+ .align 2
+gAnims_UNOWN_I:: @ 8309A0C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_I_1
+
+ .align 2
+gAnims_UNOWN_J:: @ 8309A14
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_J_1
+
+ .align 2
+gAnims_UNOWN_K:: @ 8309A1C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_K_1
+
+ .align 2
+gAnims_UNOWN_L:: @ 8309A24
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_L_1
+
+ .align 2
+gAnims_UNOWN_M:: @ 8309A2C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_M_1
+
+ .align 2
+gAnims_UNOWN_N:: @ 8309A34
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_N_1
+
+ .align 2
+gAnims_UNOWN_O:: @ 8309A3C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_O_1
+
+ .align 2
+gAnims_UNOWN_P:: @ 8309A44
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_P_1
+
+ .align 2
+gAnims_UNOWN_Q:: @ 8309A4C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_Q_1
+
+ .align 2
+gAnims_UNOWN_R:: @ 8309A54
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_R_1
+
+ .align 2
+gAnims_UNOWN_S:: @ 8309A5C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_S_1
+
+ .align 2
+gAnims_UNOWN_T:: @ 8309A64
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_T_1
+
+ .align 2
+gAnims_UNOWN_U:: @ 8309A6C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_U_1
+
+ .align 2
+gAnims_UNOWN_V:: @ 8309A74
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_V_1
+
+ .align 2
+gAnims_UNOWN_W:: @ 8309A7C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_W_1
+
+ .align 2
+gAnims_UNOWN_X:: @ 8309A84
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_X_1
+
+ .align 2
+gAnims_UNOWN_Y:: @ 8309A8C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_Y_1
+
+ .align 2
+gAnims_UNOWN_Z:: @ 8309A94
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_Z_1
+
+ .align 2
+gAnims_UNOWN_EMARK:: @ 8309A9C
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_EMARK_1
+
+ .align 2
+gAnims_UNOWN_QMARK:: @ 8309AA4
+ .4byte gAnimCmd_General_Frame0
+ .4byte gAnimCmd_UNOWN_QMARK_1
+
+ .align 2
+gMonAnimationsSpriteAnimsPtrTable:: @ 8309AAC
+ .4byte gAnims_NONE
+ .4byte gAnims_BULBASAUR
+ .4byte gAnims_IVYSAUR
+ .4byte gAnims_VENUSAUR
+ .4byte gAnims_CHARMANDER
+ .4byte gAnims_CHARMELEON
+ .4byte gAnims_CHARIZARD
+ .4byte gAnims_SQUIRTLE
+ .4byte gAnims_WARTORTLE
+ .4byte gAnims_BLASTOISE
+ .4byte gAnims_CATERPIE
+ .4byte gAnims_METAPOD
+ .4byte gAnims_BUTTERFREE
+ .4byte gAnims_WEEDLE
+ .4byte gAnims_KAKUNA
+ .4byte gAnims_BEEDRILL
+ .4byte gAnims_PIDGEY
+ .4byte gAnims_PIDGEOTTO
+ .4byte gAnims_PIDGEOT
+ .4byte gAnims_RATTATA
+ .4byte gAnims_RATICATE
+ .4byte gAnims_SPEAROW
+ .4byte gAnims_FEAROW
+ .4byte gAnims_EKANS
+ .4byte gAnims_ARBOK
+ .4byte gAnims_PIKACHU
+ .4byte gAnims_RAICHU
+ .4byte gAnims_SANDSHREW
+ .4byte gAnims_SANDSLASH
+ .4byte gAnims_NIDORAN_F
+ .4byte gAnims_NIDORINA
+ .4byte gAnims_NIDOQUEEN
+ .4byte gAnims_NIDORAN_M
+ .4byte gAnims_NIDORINO
+ .4byte gAnims_NIDOKING
+ .4byte gAnims_CLEFAIRY
+ .4byte gAnims_CLEFABLE
+ .4byte gAnims_VULPIX
+ .4byte gAnims_NINETALES
+ .4byte gAnims_JIGGLYPUFF
+ .4byte gAnims_WIGGLYTUFF
+ .4byte gAnims_ZUBAT
+ .4byte gAnims_GOLBAT
+ .4byte gAnims_ODDISH
+ .4byte gAnims_GLOOM
+ .4byte gAnims_VILEPLUME
+ .4byte gAnims_PARAS
+ .4byte gAnims_PARASECT
+ .4byte gAnims_VENONAT
+ .4byte gAnims_VENOMOTH
+ .4byte gAnims_DIGLETT
+ .4byte gAnims_DUGTRIO
+ .4byte gAnims_MEOWTH
+ .4byte gAnims_PERSIAN
+ .4byte gAnims_PSYDUCK
+ .4byte gAnims_GOLDUCK
+ .4byte gAnims_MANKEY
+ .4byte gAnims_PRIMEAPE
+ .4byte gAnims_GROWLITHE
+ .4byte gAnims_ARCANINE
+ .4byte gAnims_POLIWAG
+ .4byte gAnims_POLIWHIRL
+ .4byte gAnims_POLIWRATH
+ .4byte gAnims_ABRA
+ .4byte gAnims_KADABRA
+ .4byte gAnims_ALAKAZAM
+ .4byte gAnims_MACHOP
+ .4byte gAnims_MACHOKE
+ .4byte gAnims_MACHAMP
+ .4byte gAnims_BELLSPROUT
+ .4byte gAnims_WEEPINBELL
+ .4byte gAnims_VICTREEBEL
+ .4byte gAnims_TENTACOOL
+ .4byte gAnims_TENTACRUEL
+ .4byte gAnims_GEODUDE
+ .4byte gAnims_GRAVELER
+ .4byte gAnims_GOLEM
+ .4byte gAnims_PONYTA
+ .4byte gAnims_RAPIDASH
+ .4byte gAnims_SLOWPOKE
+ .4byte gAnims_SLOWBRO
+ .4byte gAnims_MAGNEMITE
+ .4byte gAnims_MAGNETON
+ .4byte gAnims_FARFETCHD
+ .4byte gAnims_DODUO
+ .4byte gAnims_DODRIO
+ .4byte gAnims_SEEL
+ .4byte gAnims_DEWGONG
+ .4byte gAnims_GRIMER
+ .4byte gAnims_MUK
+ .4byte gAnims_SHELLDER
+ .4byte gAnims_CLOYSTER
+ .4byte gAnims_GASTLY
+ .4byte gAnims_HAUNTER
+ .4byte gAnims_GENGAR
+ .4byte gAnims_ONIX
+ .4byte gAnims_DROWZEE
+ .4byte gAnims_HYPNO
+ .4byte gAnims_KRABBY
+ .4byte gAnims_KINGLER
+ .4byte gAnims_VOLTORB
+ .4byte gAnims_ELECTRODE
+ .4byte gAnims_EXEGGCUTE
+ .4byte gAnims_EXEGGUTOR
+ .4byte gAnims_CUBONE
+ .4byte gAnims_MAROWAK
+ .4byte gAnims_HITMONLEE
+ .4byte gAnims_HITMONCHAN
+ .4byte gAnims_LICKITUNG
+ .4byte gAnims_KOFFING
+ .4byte gAnims_WEEZING
+ .4byte gAnims_RHYHORN
+ .4byte gAnims_RHYDON
+ .4byte gAnims_CHANSEY
+ .4byte gAnims_TANGELA
+ .4byte gAnims_KANGASKHAN
+ .4byte gAnims_HORSEA
+ .4byte gAnims_SEADRA
+ .4byte gAnims_GOLDEEN
+ .4byte gAnims_SEAKING
+ .4byte gAnims_STARYU
+ .4byte gAnims_STARMIE
+ .4byte gAnims_MR_MIME
+ .4byte gAnims_SCYTHER
+ .4byte gAnims_JYNX
+ .4byte gAnims_ELECTABUZZ
+ .4byte gAnims_MAGMAR
+ .4byte gAnims_PINSIR
+ .4byte gAnims_TAUROS
+ .4byte gAnims_MAGIKARP
+ .4byte gAnims_GYARADOS
+ .4byte gAnims_LAPRAS
+ .4byte gAnims_DITTO
+ .4byte gAnims_EEVEE
+ .4byte gAnims_VAPOREON
+ .4byte gAnims_JOLTEON
+ .4byte gAnims_FLAREON
+ .4byte gAnims_PORYGON
+ .4byte gAnims_OMANYTE
+ .4byte gAnims_OMASTAR
+ .4byte gAnims_KABUTO
+ .4byte gAnims_KABUTOPS
+ .4byte gAnims_AERODACTYL
+ .4byte gAnims_SNORLAX
+ .4byte gAnims_ARTICUNO
+ .4byte gAnims_ZAPDOS
+ .4byte gAnims_MOLTRES
+ .4byte gAnims_DRATINI
+ .4byte gAnims_DRAGONAIR
+ .4byte gAnims_DRAGONITE
+ .4byte gAnims_MEWTWO
+ .4byte gAnims_MEW
+ .4byte gAnims_CHIKORITA
+ .4byte gAnims_BAYLEEF
+ .4byte gAnims_MEGANIUM
+ .4byte gAnims_CYNDAQUIL
+ .4byte gAnims_QUILAVA
+ .4byte gAnims_TYPHLOSION
+ .4byte gAnims_TOTODILE
+ .4byte gAnims_CROCONAW
+ .4byte gAnims_FERALIGATR
+ .4byte gAnims_SENTRET
+ .4byte gAnims_FURRET
+ .4byte gAnims_HOOTHOOT
+ .4byte gAnims_NOCTOWL
+ .4byte gAnims_LEDYBA
+ .4byte gAnims_LEDIAN
+ .4byte gAnims_SPINARAK
+ .4byte gAnims_ARIADOS
+ .4byte gAnims_CROBAT
+ .4byte gAnims_CHINCHOU
+ .4byte gAnims_LANTURN
+ .4byte gAnims_PICHU
+ .4byte gAnims_CLEFFA
+ .4byte gAnims_IGGLYBUFF
+ .4byte gAnims_TOGEPI
+ .4byte gAnims_TOGETIC
+ .4byte gAnims_NATU
+ .4byte gAnims_XATU
+ .4byte gAnims_MAREEP
+ .4byte gAnims_FLAAFFY
+ .4byte gAnims_AMPHAROS
+ .4byte gAnims_BELLOSSOM
+ .4byte gAnims_MARILL
+ .4byte gAnims_AZUMARILL
+ .4byte gAnims_SUDOWOODO
+ .4byte gAnims_POLITOED
+ .4byte gAnims_HOPPIP
+ .4byte gAnims_SKIPLOOM
+ .4byte gAnims_JUMPLUFF
+ .4byte gAnims_AIPOM
+ .4byte gAnims_SUNKERN
+ .4byte gAnims_SUNFLORA
+ .4byte gAnims_YANMA
+ .4byte gAnims_WOOPER
+ .4byte gAnims_QUAGSIRE
+ .4byte gAnims_ESPEON
+ .4byte gAnims_UMBREON
+ .4byte gAnims_MURKROW
+ .4byte gAnims_SLOWKING
+ .4byte gAnims_MISDREAVUS
+ .4byte gAnims_UNOWN
+ .4byte gAnims_WOBBUFFET
+ .4byte gAnims_GIRAFARIG
+ .4byte gAnims_PINECO
+ .4byte gAnims_FORRETRESS
+ .4byte gAnims_DUNSPARCE
+ .4byte gAnims_GLIGAR
+ .4byte gAnims_STEELIX
+ .4byte gAnims_SNUBBULL
+ .4byte gAnims_GRANBULL
+ .4byte gAnims_QWILFISH
+ .4byte gAnims_SCIZOR
+ .4byte gAnims_SHUCKLE
+ .4byte gAnims_HERACROSS
+ .4byte gAnims_SNEASEL
+ .4byte gAnims_TEDDIURSA
+ .4byte gAnims_URSARING
+ .4byte gAnims_SLUGMA
+ .4byte gAnims_MAGCARGO
+ .4byte gAnims_SWINUB
+ .4byte gAnims_PILOSWINE
+ .4byte gAnims_CORSOLA
+ .4byte gAnims_REMORAID
+ .4byte gAnims_OCTILLERY
+ .4byte gAnims_DELIBIRD
+ .4byte gAnims_MANTINE
+ .4byte gAnims_SKARMORY
+ .4byte gAnims_HOUNDOUR
+ .4byte gAnims_HOUNDOOM
+ .4byte gAnims_KINGDRA
+ .4byte gAnims_PHANPY
+ .4byte gAnims_DONPHAN
+ .4byte gAnims_PORYGON2
+ .4byte gAnims_STANTLER
+ .4byte gAnims_SMEARGLE
+ .4byte gAnims_TYROGUE
+ .4byte gAnims_HITMONTOP
+ .4byte gAnims_SMOOCHUM
+ .4byte gAnims_ELEKID
+ .4byte gAnims_MAGBY
+ .4byte gAnims_MILTANK
+ .4byte gAnims_BLISSEY
+ .4byte gAnims_RAIKOU
+ .4byte gAnims_ENTEI
+ .4byte gAnims_SUICUNE
+ .4byte gAnims_LARVITAR
+ .4byte gAnims_PUPITAR
+ .4byte gAnims_TYRANITAR
+ .4byte gAnims_LUGIA
+ .4byte gAnims_HO_OH
+ .4byte gAnims_CELEBI
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_OLD_UNOWN_B
+ .4byte gAnims_TREECKO
+ .4byte gAnims_GROVYLE
+ .4byte gAnims_SCEPTILE
+ .4byte gAnims_TORCHIC
+ .4byte gAnims_COMBUSKEN
+ .4byte gAnims_BLAZIKEN
+ .4byte gAnims_MUDKIP
+ .4byte gAnims_MARSHTOMP
+ .4byte gAnims_SWAMPERT
+ .4byte gAnims_POOCHYENA
+ .4byte gAnims_MIGHTYENA
+ .4byte gAnims_ZIGZAGOON
+ .4byte gAnims_LINOONE
+ .4byte gAnims_WURMPLE
+ .4byte gAnims_SILCOON
+ .4byte gAnims_BEAUTIFLY
+ .4byte gAnims_CASCOON
+ .4byte gAnims_DUSTOX
+ .4byte gAnims_LOTAD
+ .4byte gAnims_LOMBRE
+ .4byte gAnims_LUDICOLO
+ .4byte gAnims_SEEDOT
+ .4byte gAnims_NUZLEAF
+ .4byte gAnims_SHIFTRY
+ .4byte gAnims_NINCADA
+ .4byte gAnims_NINJASK
+ .4byte gAnims_SHEDINJA
+ .4byte gAnims_TAILLOW
+ .4byte gAnims_SWELLOW
+ .4byte gAnims_SHROOMISH
+ .4byte gAnims_BRELOOM
+ .4byte gAnims_SPINDA
+ .4byte gAnims_WINGULL
+ .4byte gAnims_PELIPPER
+ .4byte gAnims_SURSKIT
+ .4byte gAnims_MASQUERAIN
+ .4byte gAnims_WAILMER
+ .4byte gAnims_WAILORD
+ .4byte gAnims_SKITTY
+ .4byte gAnims_DELCATTY
+ .4byte gAnims_KECLEON
+ .4byte gAnims_BALTOY
+ .4byte gAnims_CLAYDOL
+ .4byte gAnims_NOSEPASS
+ .4byte gAnims_TORKOAL
+ .4byte gAnims_SABLEYE
+ .4byte gAnims_BARBOACH
+ .4byte gAnims_WHISCASH
+ .4byte gAnims_LUVDISC
+ .4byte gAnims_CORPHISH
+ .4byte gAnims_CRAWDAUNT
+ .4byte gAnims_FEEBAS
+ .4byte gAnims_MILOTIC
+ .4byte gAnims_CARVANHA
+ .4byte gAnims_SHARPEDO
+ .4byte gAnims_TRAPINCH
+ .4byte gAnims_VIBRAVA
+ .4byte gAnims_FLYGON
+ .4byte gAnims_MAKUHITA
+ .4byte gAnims_HARIYAMA
+ .4byte gAnims_ELECTRIKE
+ .4byte gAnims_MANECTRIC
+ .4byte gAnims_NUMEL
+ .4byte gAnims_CAMERUPT
+ .4byte gAnims_SPHEAL
+ .4byte gAnims_SEALEO
+ .4byte gAnims_WALREIN
+ .4byte gAnims_CACNEA
+ .4byte gAnims_CACTURNE
+ .4byte gAnims_SNORUNT
+ .4byte gAnims_GLALIE
+ .4byte gAnims_LUNATONE
+ .4byte gAnims_SOLROCK
+ .4byte gAnims_AZURILL
+ .4byte gAnims_SPOINK
+ .4byte gAnims_GRUMPIG
+ .4byte gAnims_PLUSLE
+ .4byte gAnims_MINUN
+ .4byte gAnims_MAWILE
+ .4byte gAnims_MEDITITE
+ .4byte gAnims_MEDICHAM
+ .4byte gAnims_SWABLU
+ .4byte gAnims_ALTARIA
+ .4byte gAnims_WYNAUT
+ .4byte gAnims_DUSKULL
+ .4byte gAnims_DUSCLOPS
+ .4byte gAnims_ROSELIA
+ .4byte gAnims_SLAKOTH
+ .4byte gAnims_VIGOROTH
+ .4byte gAnims_SLAKING
+ .4byte gAnims_GULPIN
+ .4byte gAnims_SWALOT
+ .4byte gAnims_TROPIUS
+ .4byte gAnims_WHISMUR
+ .4byte gAnims_LOUDRED
+ .4byte gAnims_EXPLOUD
+ .4byte gAnims_CLAMPERL
+ .4byte gAnims_HUNTAIL
+ .4byte gAnims_GOREBYSS
+ .4byte gAnims_ABSOL
+ .4byte gAnims_SHUPPET
+ .4byte gAnims_BANETTE
+ .4byte gAnims_SEVIPER
+ .4byte gAnims_ZANGOOSE
+ .4byte gAnims_RELICANTH
+ .4byte gAnims_ARON
+ .4byte gAnims_LAIRON
+ .4byte gAnims_AGGRON
+ .4byte gAnims_CASTFORM
+ .4byte gAnims_VOLBEAT
+ .4byte gAnims_ILLUMISE
+ .4byte gAnims_LILEEP
+ .4byte gAnims_CRADILY
+ .4byte gAnims_ANORITH
+ .4byte gAnims_ARMALDO
+ .4byte gAnims_RALTS
+ .4byte gAnims_KIRLIA
+ .4byte gAnims_GARDEVOIR
+ .4byte gAnims_BAGON
+ .4byte gAnims_SHELGON
+ .4byte gAnims_SALAMENCE
+ .4byte gAnims_BELDUM
+ .4byte gAnims_METANG
+ .4byte gAnims_METAGROSS
+ .4byte gAnims_REGIROCK
+ .4byte gAnims_REGICE
+ .4byte gAnims_REGISTEEL
+ .4byte gAnims_KYOGRE
+ .4byte gAnims_GROUDON
+ .4byte gAnims_RAYQUAZA
+ .4byte gAnims_LATIAS
+ .4byte gAnims_LATIOS
+ .4byte gAnims_JIRACHI
+ .4byte gAnims_DEOXYS
+ .4byte gAnims_CHIMECHO
+ .4byte gAnims_EGG
+ .4byte gAnims_UNOWN_B
+ .4byte gAnims_UNOWN_C
+ .4byte gAnims_UNOWN_D
+ .4byte gAnims_UNOWN_E
+ .4byte gAnims_UNOWN_F
+ .4byte gAnims_UNOWN_G
+ .4byte gAnims_UNOWN_H
+ .4byte gAnims_UNOWN_I
+ .4byte gAnims_UNOWN_J
+ .4byte gAnims_UNOWN_K
+ .4byte gAnims_UNOWN_L
+ .4byte gAnims_UNOWN_M
+ .4byte gAnims_UNOWN_N
+ .4byte gAnims_UNOWN_O
+ .4byte gAnims_UNOWN_P
+ .4byte gAnims_UNOWN_Q
+ .4byte gAnims_UNOWN_R
+ .4byte gAnims_UNOWN_S
+ .4byte gAnims_UNOWN_T
+ .4byte gAnims_UNOWN_U
+ .4byte gAnims_UNOWN_V
+ .4byte gAnims_UNOWN_W
+ .4byte gAnims_UNOWN_X
+ .4byte gAnims_UNOWN_Y
+ .4byte gAnims_UNOWN_Z
+ .4byte gAnims_UNOWN_EMARK
+ .4byte gAnims_UNOWN_QMARK
diff --git a/data/graphics/pokemon/mon_front_pic_table.inc b/data/graphics/pokemon/front_pic_table.inc
index 7f481e190..7f481e190 100644
--- a/data/graphics/pokemon/mon_front_pic_table.inc
+++ b/data/graphics/pokemon/front_pic_table.inc
diff --git a/data/graphics/pokemon/mon_graphics.inc b/data/graphics/pokemon/graphics.inc
index 45ddfe1b5..45ddfe1b5 100644
--- a/data/graphics/pokemon/mon_graphics.inc
+++ b/data/graphics/pokemon/graphics.inc
diff --git a/data/graphics/pokemon/mon_icon_palette_indices.inc b/data/graphics/pokemon/icon_palette_indices.inc
index f1d57466c..f1d57466c 100644
--- a/data/graphics/pokemon/mon_icon_palette_indices.inc
+++ b/data/graphics/pokemon/icon_palette_indices.inc
diff --git a/data/graphics/pokemon/mon_icon_palette_table.inc b/data/graphics/pokemon/icon_palette_table.inc
index eb7919423..eb7919423 100644
--- a/data/graphics/pokemon/mon_icon_palette_table.inc
+++ b/data/graphics/pokemon/icon_palette_table.inc
diff --git a/data/graphics/pokemon/mon_icon_table.inc b/data/graphics/pokemon/icon_table.inc
index 06a86de43..06a86de43 100644
--- a/data/graphics/pokemon/mon_icon_table.inc
+++ b/data/graphics/pokemon/icon_table.inc
diff --git a/data/graphics/pokemon/mon_palette_table.inc b/data/graphics/pokemon/palette_table.inc
index d636d13ec..d636d13ec 100644
--- a/data/graphics/pokemon/mon_palette_table.inc
+++ b/data/graphics/pokemon/palette_table.inc
diff --git a/data/graphics/pokemon/mon_shiny_palette_table.inc b/data/graphics/pokemon/shiny_palette_table.inc
index 724820221..724820221 100644
--- a/data/graphics/pokemon/mon_shiny_palette_table.inc
+++ b/data/graphics/pokemon/shiny_palette_table.inc
diff --git a/data/graphics/pokemon/mon_still_front_pic_table.inc b/data/graphics/pokemon/still_front_pic_table.inc
index 448729955..448729955 100644
--- a/data/graphics/pokemon/mon_still_front_pic_table.inc
+++ b/data/graphics/pokemon/still_front_pic_table.inc
diff --git a/data/graphics/trainers/back_pic_coords.inc b/data/graphics/trainers/back_pic_coords.inc
new file mode 100644
index 000000000..57a45c71e
--- /dev/null
+++ b/data/graphics/trainers/back_pic_coords.inc
@@ -0,0 +1,10 @@
+ .align 2
+gTrainerBackPicCoords:: @ 8305D2C
+ .byte 0x08, 0x04, 0x00, 0x00
+ .byte 0x08, 0x04, 0x00, 0x00
+ .byte 0x08, 0x05, 0x00, 0x00
+ .byte 0x08, 0x05, 0x00, 0x00
+ .byte 0x08, 0x04, 0x00, 0x00
+ .byte 0x08, 0x04, 0x00, 0x00
+ .byte 0x08, 0x04, 0x00, 0x00
+ .byte 0x08, 0x04, 0x00, 0x00
diff --git a/data/graphics/trainers/trainer_back_pic_palette_table.inc b/data/graphics/trainers/back_pic_palette_table.inc
index 46e56f2ac..46e56f2ac 100644
--- a/data/graphics/trainers/trainer_back_pic_palette_table.inc
+++ b/data/graphics/trainers/back_pic_palette_table.inc
diff --git a/data/graphics/trainers/trainer_back_pic_table.inc b/data/graphics/trainers/back_pic_table.inc
index e67c2a073..e67c2a073 100644
--- a/data/graphics/trainers/trainer_back_pic_table.inc
+++ b/data/graphics/trainers/back_pic_table.inc
diff --git a/data/graphics/trainers/front_pic_coords.inc b/data/graphics/trainers/front_pic_coords.inc
new file mode 100644
index 000000000..8d20f0a9e
--- /dev/null
+++ b/data/graphics/trainers/front_pic_coords.inc
@@ -0,0 +1,95 @@
+ .align 2
+gTrainerFrontPicCoords:: @ 83054E0
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x02, 0x00, 0x00
+ .byte 0x08, 0x02, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x02, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x02, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x02, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x02, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
+ .byte 0x08, 0x01, 0x00, 0x00
diff --git a/data/graphics/trainers/trainer_front_pic_palette_table.inc b/data/graphics/trainers/front_pic_palette_table.inc
index 44cf98dab..44cf98dab 100644
--- a/data/graphics/trainers/trainer_front_pic_palette_table.inc
+++ b/data/graphics/trainers/front_pic_palette_table.inc
diff --git a/data/graphics/trainers/trainer_front_pic_table.inc b/data/graphics/trainers/front_pic_table.inc
index 91294d170..91294d170 100644
--- a/data/graphics/trainers/trainer_front_pic_table.inc
+++ b/data/graphics/trainers/front_pic_table.inc
diff --git a/data/graphics/trainers/trainer_graphics.inc b/data/graphics/trainers/graphics.inc
index 897cb9ffb..897cb9ffb 100644
--- a/data/graphics/trainers/trainer_graphics.inc
+++ b/data/graphics/trainers/graphics.inc
diff --git a/data/main_menu.s b/data/main_menu.s
new file mode 100644
index 000000000..fba0e7ddb
--- /dev/null
+++ b/data/main_menu.s
@@ -0,0 +1,141 @@
+@ the second big chunk of data
+
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .section .rodata
+
+ .align 2
+gUnknown_082FECFC:: @ 82FECFC
+ .incbin "graphics/birch_speech/bg0.gbapal"
+ .incbin "graphics/birch_speech/bg1.gbapal"
+
+ .align 2
+gBirchIntroShadowGfx:: @ 82FED3C
+ .incbin "graphics/birch_speech/shadow.4bpp.lz"
+
+ .align 2
+gUnknown_082FEEF0:: @ 82FEEF0
+ .incbin "graphics/birch_speech/map.bin.lz"
+
+ .align 2
+gUnknown_082FF018:: @ 82FF018
+ .incbin "graphics/birch_speech/bg2.gbapal"
+
+ .align 2
+gUnknown_082FF028:: @ 82FF028
+ .space 16
+
+ .align 2
+gUnknown_082FF038:: @ 82FF038
+ window_template 0x00, 0x02, 0x01, 0x1a, 0x02, 0x0f, 0x0001
+ window_template 0x00, 0x02, 0x05, 0x1a, 0x02, 0x0f, 0x0035
+
+ .align 2
+gUnknown_082FF048:: @ 82FF048
+ window_template 0x00, 0x02, 0x01, 0x1a, 0x06, 0x0f, 0x0001
+ window_template 0x00, 0x02, 0x09, 0x1a, 0x02, 0x0f, 0x009d
+ window_template 0x00, 0x02, 0x0d, 0x1a, 0x02, 0x0f, 0x00d1
+ window_template 0x00, 0x02, 0x11, 0x1a, 0x02, 0x0f, 0x0105
+ window_template 0x00, 0x02, 0x15, 0x1a, 0x02, 0x0f, 0x0139
+
+ .align 2
+gUnknown_082FF070:: @ 82FF070
+ window_template 0x00, 0x02, 0x0f, 0x1a, 0x04, 0x0f, 0x016d
+ window_template_terminator
+
+ .align 2
+gUnknown_082FF080:: @ 82FF080
+ window_template 0x00, 0x02, 0x0f, 0x1b, 0x04, 0x0f, 0x0001
+
+ .align 2
+gUnknown_082FF088:: @ 82FF088
+ window_template 0x00, 0x03, 0x05, 0x06, 0x04, 0x0f, 0x006d
+ window_template 0x00, 0x03, 0x02, 0x09, 0x0a, 0x0f, 0x0085
+ window_template_terminator
+
+ .align 2
+gMainMenuBgPal:: @ 82FF0A0
+ .incbin "graphics/misc/main_menu_bg.gbapal"
+
+ .align 2
+gMainMenuTextPal:: @ 82FF0C0
+ .incbin "graphics/misc/main_menu_text.gbapal"
+
+ .align 2
+gUnknown_082FF0E0:: @ 82FF0E0
+ .byte 0x0a, 0x0b, 0x0c
+
+gUnknown_082FF0E3:: @ 82FF0E3
+ .byte 0x0a, 0x01, 0x0c
+
+ .align 2
+gUnknown_082FF0E8:: @ 82FF0E8
+ .4byte 0x000001e8, 0x00003071
+
+ .align 2
+gUnknown_082FF0F0:: @ 82FF0F0
+ .4byte 0x000001ec
+
+ .align 2
+gUnknown_082FF0F4:: @ 82FF0F4
+ .byte 0x02, 0x78, 0x08, 0x03, 0x78, 0x98, 0x03, 0x00, 0x04, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00
+
+ .align 2
+gUnknown_082FF104:: @ 82FF104
+ .2byte 0xfffe, 0xfffe, 0x3000, 0x0000, 0x7fff, 0x0000, 0x0000, 0x0000
+
+ .align 2
+gUnknown_082FF114:: @ 82FF114
+ .4byte gUnknown_082FF104
+
+ .align 2
+gUnknown_082FF118:: @ 82FF118
+ .4byte gText_BirchBoy, 0x00000000
+ .4byte gText_BirchGirl, 0x00000000
+
+ .align 2
+gMalePresetNames:: @ 82FF128
+ .4byte gText_DefaultNameStu
+ .4byte gText_DefaultNameMilton
+ .4byte gText_DefaultNameTom
+ .4byte gText_DefaultNameKenny
+ .4byte gText_DefaultNameReid
+ .4byte gText_DefaultNameJude
+ .4byte gText_DefaultNameJaxson
+ .4byte gText_DefaultNameEaston
+ .4byte gText_DefaultNameWalker
+ .4byte gText_DefaultNameTeru
+ .4byte gText_DefaultNameJohnny
+ .4byte gText_DefaultNameBrett
+ .4byte gText_DefaultNameSeth
+ .4byte gText_DefaultNameTerry
+ .4byte gText_DefaultNameCasey
+ .4byte gText_DefaultNameDarren
+ .4byte gText_DefaultNameLandon
+ .4byte gText_DefaultNameCollin
+ .4byte gText_DefaultNameStanley
+ .4byte gText_DefaultNameQuincy
+
+ .align 2
+gFemalePresetNames:: @ 82FF178
+ .4byte gText_DefaultNameKimmy
+ .4byte gText_DefaultNameTiara
+ .4byte gText_DefaultNameBella
+ .4byte gText_DefaultNameJayla
+ .4byte gText_DefaultNameAllie
+ .4byte gText_DefaultNameLianna
+ .4byte gText_DefaultNameSara
+ .4byte gText_DefaultNameMonica
+ .4byte gText_DefaultNameCamila
+ .4byte gText_DefaultNameAubree
+ .4byte gText_DefaultNameRuthie
+ .4byte gText_DefaultNameHazel
+ .4byte gText_DefaultNameNadine
+ .4byte gText_DefaultNameTanja
+ .4byte gText_DefaultNameYasmin
+ .4byte gText_DefaultNameNicola
+ .4byte gText_DefaultNameLillie
+ .4byte gText_DefaultNameTerra
+ .4byte gText_DefaultNameLucy
+ .4byte gText_DefaultNameHalie
diff --git a/data/pokedex.s b/data/pokedex.s
index e81a3d78a..3ba94dbc5 100644
--- a/data/pokedex.s
+++ b/data/pokedex.s
@@ -95,7 +95,7 @@ gUnknown_0856E688:: @ 856E688
.incbin "baserom.gba", 0x56e688, 0xc
@ 856E694
- .include "data/graphics/pokemon/mon_footprint_table.inc"
+ .include "data/graphics/pokemon/footprint_table.inc"
gUnknown_0856ED08:: @ 856ED08
.incbin "baserom.gba", 0x56ed08, 0x28
diff --git a/data/pokemon_icon.s b/data/pokemon_icon.s
index ab3824f35..9d6c7ac2e 100644
--- a/data/pokemon_icon.s
+++ b/data/pokemon_icon.s
@@ -5,19 +5,20 @@
.align 2, 0
@ 857BCA8
- .include "data/graphics/pokemon/mon_icon_table.inc"
+ .include "data/graphics/pokemon/icon_table.inc"
@ 857C388
- .include "data/graphics/pokemon/mon_icon_palette_indices.inc"
+ .include "data/graphics/pokemon/icon_palette_indices.inc"
@ 857C540
- .include "data/graphics/pokemon/mon_icon_palette_table.inc"
+ .include "data/graphics/pokemon/icon_palette_table.inc"
gUnknown_0857C570:: @ 857C570
.incbin "baserom.gba", 0x57c570, 0x44
gUnknown_0857C5B4:: @ 857C5B4
- .incbin "baserom.gba", 0x57c5b4, 0x34
+ .incbin "baserom.gba", 0x57c5b4, 0x14
+ .incbin "baserom.gba", 0x57c5c8, 0x20
gUnknown_0857C5E8:: @ 857C5E8
.incbin "baserom.gba", 0x57c5e8, 0x8
diff --git a/data/pokemon_summary_screen.s b/data/pokemon_summary_screen.s
index ac28d47c5..fc1c79096 100644
--- a/data/pokemon_summary_screen.s
+++ b/data/pokemon_summary_screen.s
@@ -40,7 +40,10 @@ gUnknown_0861CD14:: @ 861CD14
.incbin "baserom.gba", 0x61cd14, 0x18
gUnknown_0861CD2C:: @ 861CD2C
- .incbin "baserom.gba", 0x61cd2c, 0xa7
+ .incbin "baserom.gba", 0x61cd2c, 0x27
+
+gUnknown_0861CD53:: @ 861CD53
+ .incbin "baserom.gba", 0x61cd53, 0x80
gUnknown_0861CDD3:: @ 861CDD3
.incbin "baserom.gba", 0x61cdd3, 0x81
diff --git a/data/reset_rtc_screen.s b/data/reset_rtc_screen.s
index 2ed5f746c..f680a87bc 100644
--- a/data/reset_rtc_screen.s
+++ b/data/reset_rtc_screen.s
@@ -4,20 +4,75 @@
.section .rodata
.align 2, 0
-gUnknown_08510404:: @ 8510404
- .incbin "baserom.gba", 0x510404, 0x4
+gUnknown_08510404:: @ 8510404 struct BgTemplate
+ .4byte 0x000001f0
+ .align 2
gUnknown_08510408:: @ 8510408
- .incbin "baserom.gba", 0x510408, 0x14
-
-gUnknown_0851041C:: @ 851041C
- .incbin "baserom.gba", 0x51041c, 0x4
+ window_template 0x00, 0x01, 0x01, 0x13, 0x09, 0x0f, 0x0155
+ window_template 0x00, 0x02, 0x0f, 0x1b, 0x04, 0x0f, 0x00e9
+ window_template_terminator
+ .align 2
gUnknown_08510420:: @ 8510420
- .incbin "baserom.gba", 0x510420, 0xa4
+ window_template 0x00, 0x04, 0x09, 0x15, 0x02, 0x0f, 0x00bf
+
+ .align 2
+gUnknown_08510428:: @ 8510428
+ .byte 3, 0, 1, 0, 15, 39, 0, 2, 0, 0, 0, 0
+ .byte 4, 0, 0, 0, 23, 0, 1, 3, 0, 0, 0, 0
+ .byte 5, 0, 0, 0, 59, 0, 2, 4, 0, 0, 0, 0
+ .byte 6, 0, 0, 0, 59, 0, 3, 5, 0, 0, 0, 0
+ .byte 7, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0
+
+ .align 2
+gOamData_08510464:: @ 8510464
+ .2byte 0x0000
+ .2byte 0x0000
+ .2byte 0x0000
+
+ .align 2
+gResetRtcScreen_DownArrowGfx:: @ 851046C
+ .incbin "graphics/misc/reset_rtc_screen_downarrow.4bpp"
+
+ .align 2
+gResetRtcScreen_RightArrowGfx:: @ 851048C
+ .incbin "graphics/misc/reset_rtc_screen_rightarrow.4bpp"
+
+ .align 2
+gResetRtcScreen_ArrowPal: @ 85104AC
+ .incbin "graphics/misc/reset_rtc_screen_arrow.gbapal"
+ .align 2
+gSpriteImageTable_85104B4:: @ 85104B4
+ obj_frame_tiles gResetRtcScreen_DownArrowGfx, 0x20
+ obj_frame_tiles gResetRtcScreen_RightArrowGfx, 0x20
+
+ .align 2
gUnknown_085104C4:: @ 85104C4
- .incbin "baserom.gba", 0x5104c4, 0x2c
+ obj_pal gResetRtcScreen_ArrowPal, 0x1000
+
+ .align 2
+gSpriteAnim_85104CC:: @ 85104CC
+ obj_image_anim_frame 0, 30
+ obj_image_anim_jump 0
+
+ .align 2
+gSpriteAnim_85104D4: @ 85104D4
+ obj_image_anim_frame 0, 30, OBJ_IMAGE_ANIM_V_FLIP
+ obj_image_anim_jump 0
+
+ .align 2
+gSpriteAnim_85104DC:: @ 85104DC
+ obj_image_anim_frame 1, 30
+ obj_image_anim_jump 0
+
+ .align 2
+gSpriteAnimTable_85104E4:: @ 85104E4
+ .4byte gSpriteAnim_85104CC
+ .4byte gSpriteAnim_85104D4
+ .4byte gSpriteAnim_85104DC
-gUnknown_085104F0:: @ 85104F0
- .incbin "baserom.gba", 0x5104f0, 0x18
+ .align 2
+gSpriteTemplate_85104F0:: @ 85104F0
+ spr_template 0xFFFF, 0x1000, gOamData_08510464, gSpriteAnimTable_85104E4, gSpriteImageTable_85104B4, gDummySpriteAffineAnimTable, SpriteCallbackDummy
diff --git a/data/scrcmd.s b/data/scrcmd.s
deleted file mode 100644
index dfa802684..000000000
--- a/data/scrcmd.s
+++ /dev/null
@@ -1,14 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2, 0
-
-gNullScriptPtr:: @ 85102BC
- .incbin "baserom.gba", 0x5102bc, 0x4
-
-gUnknown_085102C0:: @ 85102C0
- .incbin "baserom.gba", 0x5102c0, 0x14
-
-gUnknown_085102D4:: @ 85102D4
- .incbin "baserom.gba", 0x5102d4, 0xc
diff --git a/data/strings.s b/data/strings.s
index 5fb8ca902..90ccad90f 100644
--- a/data/strings.s
+++ b/data/strings.s
@@ -165,130 +165,130 @@ gText_PickCancel:: @ 85E8574
gText_UnkCtrlF800Exit:: @ 85E8588
.string "{UNK_CTRL_F800}EXIT$"
-gUnknown_085E858F:: @ 85E858F
+gText_BirchBoy:: @ 85E858F
.string "BOY$"
-gUnknown_085E8593:: @ 85E8593
+gText_BirchGirl:: @ 85E8593
.string "GIRL$"
-gUnknown_085E8598:: @ 85E8598
+gText_DefaultNameStu:: @ 85E8598
.string "STU$"
-gUnknown_085E859C:: @ 85E859C
+gText_DefaultNameMilton:: @ 85E859C
.string "MILTON$"
-gUnknown_085E85A3:: @ 85E85A3
+gText_DefaultNameTom:: @ 85E85A3
.string "TOM$"
-gUnknown_085E85A7:: @ 85E85A7
+gText_DefaultNameKenny:: @ 85E85A7
.string "KENNY$"
-gUnknown_085E85AD:: @ 85E85AD
+gText_DefaultNameReid:: @ 85E85AD
.string "REID$"
-gUnknown_085E85B2:: @ 85E85B2
+gText_DefaultNameJude:: @ 85E85B2
.string "JUDE$"
-gUnknown_085E85B7:: @ 85E85B7
+gText_DefaultNameJaxson:: @ 85E85B7
.string "JAXSON$"
-gUnknown_085E85BE:: @ 85E85BE
+gText_DefaultNameEaston:: @ 85E85BE
.string "EASTON$"
-gUnknown_085E85C5:: @ 85E85C5
+gText_DefaultNameWalker:: @ 85E85C5
.string "WALKER$"
-gUnknown_085E85CC:: @ 85E85CC
+gText_DefaultNameTeru:: @ 85E85CC
.string "TERU$"
-gUnknown_085E85D1:: @ 85E85D1
+gText_DefaultNameJohnny:: @ 85E85D1
.string "JOHNNY$"
-gUnknown_085E85D8:: @ 85E85D8
+gText_DefaultNameBrett:: @ 85E85D8
.string "BRETT$"
-gUnknown_085E85DE:: @ 85E85DE
+gText_DefaultNameSeth:: @ 85E85DE
.string "SETH$"
-gUnknown_085E85E3:: @ 85E85E3
+gText_DefaultNameTerry:: @ 85E85E3
.string "TERRY$"
-gUnknown_085E85E9:: @ 85E85E9
+gText_DefaultNameCasey:: @ 85E85E9
.string "CASEY$"
-gUnknown_085E85EF:: @ 85E85EF
+gText_DefaultNameDarren:: @ 85E85EF
.string "DARREN$"
-gUnknown_085E85F6:: @ 85E85F6
+gText_DefaultNameLandon:: @ 85E85F6
.string "LANDON$"
-gUnknown_085E85FD:: @ 85E85FD
+gText_DefaultNameCollin:: @ 85E85FD
.string "COLLIN$"
-gUnknown_085E8604:: @ 85E8604
+gText_DefaultNameStanley:: @ 85E8604
.string "STANLEY$"
-gUnknown_085E860C:: @ 85E860C
+gText_DefaultNameQuincy:: @ 85E860C
.string "QUINCY$"
-gUnknown_085E8613:: @ 85E8613
+gText_DefaultNameKimmy:: @ 85E8613
.string "KIMMY$"
-gUnknown_085E8619:: @ 85E8619
+gText_DefaultNameTiara:: @ 85E8619
.string "TIARA$"
-gUnknown_085E861F:: @ 85E861F
+gText_DefaultNameBella:: @ 85E861F
.string "BELLA$"
-gUnknown_085E8625:: @ 85E8625
+gText_DefaultNameJayla:: @ 85E8625
.string "JAYLA$"
-gUnknown_085E862B:: @ 85E862B
+gText_DefaultNameAllie:: @ 85E862B
.string "ALLIE$"
-gUnknown_085E8631:: @ 85E8631
+gText_DefaultNameLianna:: @ 85E8631
.string "LIANNA$"
-gUnknown_085E8638:: @ 85E8638
+gText_DefaultNameSara:: @ 85E8638
.string "SARA$"
-gUnknown_085E863D:: @ 85E863D
+gText_DefaultNameMonica:: @ 85E863D
.string "MONICA$"
-gUnknown_085E8644:: @ 85E8644
+gText_DefaultNameCamila:: @ 85E8644
.string "CAMILA$"
-gUnknown_085E864B:: @ 85E864B
+gText_DefaultNameAubree:: @ 85E864B
.string "AUBREE$"
-gUnknown_085E8652:: @ 85E8652
+gText_DefaultNameRuthie:: @ 85E8652
.string "RUTHIE$"
-gUnknown_085E8659:: @ 85E8659
+gText_DefaultNameHazel:: @ 85E8659
.string "HAZEL$"
-gUnknown_085E865F:: @ 85E865F
+gText_DefaultNameNadine:: @ 85E865F
.string "NADINE$"
-gUnknown_085E8666:: @ 85E8666
+gText_DefaultNameTanja:: @ 85E8666
.string "TANJA$"
-gUnknown_085E866C:: @ 85E866C
+gText_DefaultNameYasmin:: @ 85E866C
.string "YASMIN$"
-gUnknown_085E8673:: @ 85E8673
+gText_DefaultNameNicola:: @ 85E8673
.string "NICOLA$"
-gUnknown_085E867A:: @ 85E867A
+gText_DefaultNameLillie:: @ 85E867A
.string "LILLIE$"
-gUnknown_085E8681:: @ 85E8681
+gText_DefaultNameTerra:: @ 85E8681
.string "TERRA$"
-gUnknown_085E8687:: @ 85E8687
+gText_DefaultNameLucy:: @ 85E8687
.string "LUCY$"
-gUnknown_085E868C:: @ 85E868C
+gText_DefaultNameHalie:: @ 85E868C
.string "HALIE$"
gText_ThisIsAPokemon:: @ 85E8692
@@ -4452,16 +4452,16 @@ gText_ButtonTypeLEqualsA:: @ 85EE65D
gText_XPLink:: @ 85EE667
.string "{STR_VAR_1}P LINK$"
-gUnknown_085EE670:: @ 85EE670
+gText_BronzeCard:: @ 85EE670
.string "BRONZE$"
-gUnknown_085EE677:: @ 85EE677
+gText_CopperCard:: @ 85EE677
.string "COPPER$"
-gUnknown_085EE67E:: @ 85EE67E
+gText_SilverCard:: @ 85EE67E
.string "SILVER$"
-gUnknown_085EE685:: @ 85EE685
+gText_GoldCard:: @ 85EE685
.string "GOLD$"
gText_Day:: @ 85EE68A
diff --git a/data/text/pokemon_news.inc b/data/text/pokemon_news.inc
new file mode 100644
index 000000000..5af4e2994
--- /dev/null
+++ b/data/text/pokemon_news.inc
@@ -0,0 +1,165 @@
+
+gPokeNewsTextSlateport_Upcoming:: @ 0828D0F8
+ .string "Greetings!\n"
+ .string "It’s time for POKéMON NEWS.\p"
+ .string "SLATEPORT’s most popular kind of guy,\n"
+ .string "the ENERGY GURU, is in the news again!\p"
+ .string "He promises to, “Stupendously go for\n"
+ .string "it in just this many days: {STR_VAR_1}!”\p"
+ .string "While he refused to elaborate on what\n"
+ .string "he will stupendously go for, the\l"
+ .string "ENERGY GURU advised, “Save up your\l"
+ .string "money. That’ll be good…”\p"
+ .string "It sounds like a trip to SLATEPORT\n"
+ .string "would be well worth your while that day.\p"
+ .string "That’s the news on POKéMON NEWS.$"
+
+gPokeNewsTextSlateport_Ongoing:: @ 0828D2A1
+ .string "Greetings!\n"
+ .string "It’s time for POKéMON NEWS.\p"
+ .string "This is the news you’ve all been\n"
+ .string "waiting for!\p"
+ .string "SLATEPORT’S ENERGY GURU is going\n"
+ .string "for it stupendously in the MARKET!\p"
+ .string "He promises unbeatable bargain\n"
+ .string "prices on CALCIUM and PROTEIN!\p"
+ .string "A trip to SLATEPORT CITY sounds\n"
+ .string "worthwhile. Why not visit and shop\l"
+ .string "to your heart’s content?\p"
+ .string "That’s the news on POKéMON NEWS.$"
+
+gPokeNewsTextSlateport_Ending:: @ 0828D3F5
+ .string "Greetings!\n"
+ .string "It’s time for POKéMON NEWS.\p"
+ .string "This is the news you’ve all been\n"
+ .string "waiting for!\p"
+ .string "SLATEPORT’S ENERGY GURU is going\n"
+ .string "for it stupendously in the MARKET!\p"
+ .string "He promises unbeatable bargain\n"
+ .string "prices on CALCIUM and PROTEIN!\p"
+ .string "According to the ENERGY GURU, he\n"
+ .string "still has ample merchandise left.\p"
+ .string "Why not visit SLATEPORT CITY for\n"
+ .string "a most enjoyable shopping trip?\p"
+ .string "That’s the news on POKéMON NEWS.$"
+
+gPokeNewsTextGameCorner_Upcoming:: @ 0828D571
+ .string "Greetings!\n"
+ .string "It’s time for POKéMON NEWS.\p"
+ .string "It’s approaching!\n"
+ .string "It’s finally coming!\p"
+ .string "The GAME CORNER’s service day will be\n"
+ .string "here in just this many days: {STR_VAR_1}!\p"
+ .string "Even those who are usually unlucky\n"
+ .string "may be lucky on this particular day!\p"
+ .string "That’s the news on POKéMON NEWS.$"
+
+gPokeNewsTextGameCorner_Ongoing:: @ 0828D66F
+ .string "Greetings!\n"
+ .string "It’s time for POKéMON NEWS.\p"
+ .string "It’s here!\n"
+ .string "It’s finally arrived!\p"
+ .string "GAME CORNER’s service day has finally\n"
+ .string "arrived!\p"
+ .string "Could you be lucky at the SLOTS \n"
+ .string "and ROULETTE?\p"
+ .string "The location is MAUVILLE CITY.\n"
+ .string "This is the place!\p"
+ .string "That’s the news on POKéMON NEWS.$"
+
+gPokeNewsTextGameCorner_Ending:: @ 0828D768
+ .string "Greetings!\n"
+ .string "It’s time for POKéMON NEWS.\p"
+ .string "It’s here!\n"
+ .string "It’s finally arrived!\p"
+ .string "GAME CORNER’s service day has finally\n"
+ .string "arrived!\p"
+ .string "Could you be lucky at the SLOTS\n"
+ .string "and ROULETTE?\p"
+ .string "Time is limited and has almost run out.\n"
+ .string "The location is MAUVILLE CITY.\p"
+ .string "That’s the news on POKéMON NEWS.$"
+
+gPokeNewsTextLilycove_Upcoming:: @ 0828D875
+ .string "Greetings!\n"
+ .string "It’s time for POKéMON NEWS.\p"
+ .string "We’ve just received wonderful news\n"
+ .string "from LILYCOVE DEPARTMENT STORE.\p"
+ .string "The DEPARTMENT STORE’s clear-out sale\n"
+ .string "will be in just this many days: {STR_VAR_1}!\p"
+ .string "That thingamajig or that doodad that\n"
+ .string "you’ve always wanted could be yours!\p"
+ .string "That’s the news on POKéMON NEWS.$"
+
+gPokeNewsTextLilycove_Ongoing:: @ 0828D994
+ .string "Greetings!\n"
+ .string "It’s time for POKéMON NEWS.\p"
+ .string "This is the news you’ve all been\n"
+ .string "waiting for!\p"
+ .string "LILYCOVE DEPARTMENT STORE’s clear-out\n"
+ .string "sale has finally arrived!\p"
+ .string "All the thingamajigs and doodads that\n"
+ .string "you’ve always dreamt about…\p"
+ .string "You may be in for fateful encounters\n"
+ .string "with them all!\p"
+ .string "That’s the news on POKéMON NEWS.$"
+
+gPokeNewsTextLilycove_Ending:: @ 0828DAC0
+ .string "Greetings!\n"
+ .string "It’s time for POKéMON NEWS.\p"
+ .string "This is the news you’ve all been\n"
+ .string "waiting for!\p"
+ .string "LILYCOVE DEPARTMENT STORE’s clear-out\n"
+ .string "sale has finally arrived!\p"
+ .string "All the thingamajigs and doodads that\n"
+ .string "you’ve always dreamt about…\p"
+ .string "You may be in for fateful encounters\n"
+ .string "with them all!\p"
+ .string "That’s the news on POKéMON NEWS.$"
+
+gPokeNewsTextBlendMaster_Upcoming:: @ 0828DBEC
+ .string "Greetings!\n"
+ .string "It’s time for POKéMON NEWS.\p"
+ .string "We have big news for everyone\n"
+ .string "involved in the making of {POKEBLOCK}S.\p"
+ .string "The legendary BLEND MASTER will be\n"
+ .string "appearing in LILYCOVE CITY with just\l"
+ .string "a mere {STR_VAR_1}-day wait to go!\p"
+ .string "The BLEND MASTER is said to be\n"
+ .string "the best in all HOENN when it comes to\l"
+ .string "spinning a BERRY BLENDER.\p"
+ .string "Those people who want to make great\n"
+ .string "{POKEBLOCK}S or see the MASTER in action\l"
+ .string "are urged to save their BERRIES.\p"
+ .string "That’s the news on POKéMON NEWS.$"
+
+gPokeNewsTextBlendMaster_Ongoing:: @ 0828DD9E
+ .string "Greetings!\n"
+ .string "It’s time for POKéMON NEWS.\p"
+ .string "We have big news for everyone\n"
+ .string "involved in the making of {POKEBLOCK}S.\p"
+ .string "The legendary BLEND MASTER has\n"
+ .string "finally appeared!\p"
+ .string "The BLEND MASTER is spinning\n"
+ .string "the BERRY BLENDER at the LILYCOVE\l"
+ .string "CONTEST HALL.\p"
+ .string "Those people who want to make great\n"
+ .string "{POKEBLOCK}S or see the MASTER in action\l"
+ .string "should hurry to LILYCOVE.\p"
+ .string "That’s the news on POKéMON NEWS.$"
+
+gPokeNewsTextBlendMaster_Ending:: @ 0828DF05
+ .string "Greetings!\n"
+ .string "It’s time for POKéMON NEWS.\p"
+ .string "It’s incredible!\n"
+ .string "Too incredible, even!\p"
+ .string "The BERRY BLENDER is spinning at\n"
+ .string "a dizzying pace!\p"
+ .string "The BLEND MASTER has lived up to\n"
+ .string "his reputation!\p"
+ .string "The BLEND MASTER will soon be\n"
+ .string "leaving LILYCOVE.\p"
+ .string "If you haven’t seen the MASTER in\n"
+ .string "action, don’t waste this chance!\l"
+ .string "Head to LILYCOVE right now!\p"
+ .string "That’s the news on POKéMON NEWS.$"
diff --git a/data/text/tv.inc b/data/text/tv.inc
new file mode 100644
index 000000000..fa2d0ac73
--- /dev/null
+++ b/data/text/tv.inc
@@ -0,0 +1,2891 @@
+gTVBravoTrainerText00:: @ 0827F275
+ .string "Yeah!\n"
+ .string "It’s BRAVO TRAINER time!\p"
+ .string "Today, we’re going to profile a POKéMON\n"
+ .string "belonging to {STR_VAR_1}.\p"
+ .string "Now, this POKéMON boasts a {STR_VAR_3}\n"
+ .string "Rank in the {STR_VAR_2} Category.$"
+
+gTVBravoTrainerText01:: @ 0827F304
+ .string "Introducing {STR_VAR_2} the\n"
+ .string "{STR_VAR_1}!\p"
+ .string "The nickname {STR_VAR_2}…\p"
+ .string "Even the nickname exudes an air that\n"
+ .string "proclaims “{STR_VAR_3}”!$"
+
+gTVBravoTrainerText02:: @ 0827F361
+ .string "Anyway, when the TRAINER {STR_VAR_1}\n"
+ .string "entered the POKéMON in a CONTEST,\l"
+ .string "we managed to get a few impassioned\l"
+ .string "quotes about the trusty partner.$"
+
+gTVBravoTrainerText03:: @ 0827F3E4
+ .string "Asked about the CONTEST afterwards,\n"
+ .string "{STR_VAR_1} happily replied with a huge\l"
+ .string "grin, “{STR_VAR_2}!”\p"
+ .string "Well, sure, {STR_VAR_1}’s POKéMON came in\n"
+ .string "number {STR_VAR_3} in the CONTEST.\p"
+ .string "That line perfectly suits {STR_VAR_1}\n"
+ .string "right now, I’d say!$"
+
+gTVBravoTrainerText04:: @ 0827F49F
+ .string "Asked about the CONTEST afterwards,\n"
+ .string "{STR_VAR_1} replied with a tinge of\l"
+ .string "bitterness, “{STR_VAR_2}.”\p"
+ .string "Well, sure, {STR_VAR_1}’s POKéMON came in\n"
+ .string "number {STR_VAR_3} in the CONTEST.\p"
+ .string "{STR_VAR_1}’s disappointment comes across\n"
+ .string "loud and clear, I’d say!$"
+
+gTVBravoTrainerText05:: @ 0827F565
+ .string "Wouldn’t you also like to know what\n"
+ .string "{STR_VAR_1} imagines {STR_VAR_2} to be?\p"
+ .string "You bet we did!\n"
+ .string "So we asked, of course!\p"
+ .string "The answer is all perfectly condensed:\n"
+ .string "“{STR_VAR_3}!”\p"
+ .string "That’s what the concept of {STR_VAR_2}\n"
+ .string "represents to {STR_VAR_1}!$"
+
+gTVBravoTrainerText06:: @ 0827F624
+ .string "The last move {STR_VAR_2} used by\n"
+ .string "the {STR_VAR_1} is entirely about\l"
+ .string "“{STR_VAR_3}”!$"
+
+gTVBravoTrainerText07:: @ 0827F65C
+ .string "Bravo, {STR_VAR_1}!\n"
+ .string "Bravo, {STR_VAR_2}!\p"
+ .string "I hope we can count on seeing\n"
+ .string "{STR_VAR_1} scale even greater heights!\p"
+ .string "That’s all the time we have!\n"
+ .string "Until next time, see you!$"
+
+gTVBravoTrainerText08:: @ 0827F6E6
+ .string "Introducing the TRAINER’s {STR_VAR_1}!$"
+
+ .string "Hello! You’re the TRAINER who just had\n"
+ .string "a battle, right?\p"
+ .string "I’m gathering interviews with TRAINERS\n"
+ .string "all over the place.\p"
+ .string "May I get a few words from you about\n"
+ .string "your impressions on battling?$"
+
+ .string "You will? Really?\n"
+ .string "Thank you!\l"
+ .string "Then, uh…\p"
+ .string "How did things turn out in\n"
+ .string "the BATTLE TOWER today?\p"
+ .string "Were you satisfied with the battle?\n"
+ .string "Or are you unhappy?$"
+
+ .string "Oh…\n"
+ .string "Sorry we disturbed you.\p"
+ .string "Please give us an interview the next\n"
+ .string "time you visit the BATTLE TOWER.$"
+
+ .string "Well, of course!\p"
+ .string "That unmistakable look of satisfaction\n"
+ .string "on your face…\p"
+ .string "It’s obvious that you’ve had a great\n"
+ .string "battle.$"
+
+ .string "Oh, I see…\p"
+ .string "Well, it certainly is difficult to make a\n"
+ .string "battle turn out exactly as planned.$"
+
+ .string "Oh, oh, may I ask one more question?\p"
+ .string "If you were to describe your\n"
+ .string "impressions about this battle with\l"
+ .string "one saying, what would it be?$"
+
+ .string "Oh, that is stunningly cool!\p"
+ .string "That’s a great line!\n"
+ .string "I hope you’ll do great next time, too.\p"
+ .string "I hope to see you again!$"
+
+ .string "Oh, I see…\p"
+ .string "Still, being the silent type is also\n"
+ .string "cool, isn’t it?\p"
+ .string "I hope you’ll give me the opportunity\n"
+ .string "to share your thoughts again!$"
+
+ .string "I’ll be looking forward to your\n"
+ .string "next battle!$"
+
+gTVBravoTrainerBattleTowerText00:: @ 0827FB20
+ .string "Yeah!\n"
+ .string "It’s BRAVO TRAINER time!\p"
+ .string "Today, we’re going to profile {STR_VAR_1},\n"
+ .string "who took the BATTLE TOWER challenge!\p"
+ .string "For the challenge, {STR_VAR_1} entered\n"
+ .string "one wicked {STR_VAR_2}.$"
+
+gTVBravoTrainerBattleTowerText01:: @ 0827FBB3
+ .string "The pair set a new record of {STR_VAR_2} wins\n"
+ .string "in a row in {STR_VAR_1} competition!\l"
+ .string "Bravo, TRAINER!$"
+
+gTVBravoTrainerBattleTowerText02:: @ 0827FC04
+ .string "The twosome finally succumbed to\n"
+ .string "{STR_VAR_1} in match number {STR_VAR_2}.\l"
+ .string "Nice try, TRAINER!\p"
+ .string "But, hey, it’s just bad luck to run into\n"
+ .string "{STR_VAR_1} so early in the challenge.\p"
+ .string "We asked the TRAINER for impressions\n"
+ .string "on the match with {STR_VAR_1}.$"
+
+gTVBravoTrainerBattleTowerText03:: @ 0827FCD1
+ .string "The twosome won it all by defeating\n"
+ .string "{STR_VAR_1}’s {STR_VAR_2} thoroughly.\l"
+ .string "Bravo, TRAINER!\p"
+ .string "Knocking off even {STR_VAR_1}…\n"
+ .string "It defies belief! Simply astounding!\p"
+ .string "We asked the TRAINER for impressions\n"
+ .string "on the moment of glory.$"
+
+gTVBravoTrainerBattleTowerText04:: @ 0827FD91
+ .string "After a string of wins, the pair finally\n"
+ .string "succumbed to {STR_VAR_1}’s {STR_VAR_2},\l"
+ .string "their final hurdle.\p"
+ .string "Nice try, TRAINER!\p"
+ .string "Still, you have to give credit.\n"
+ .string "You don’t see many famous combinations\l"
+ .string "like {STR_VAR_1} and {STR_VAR_2}.\p"
+ .string "We asked the TRAINER for impressions\n"
+ .string "on battling the celebrity pair.$"
+
+gTVBravoTrainerBattleTowerText05:: @ 0827FE93
+ .string "This is what the TRAINER had to say:\n"
+ .string "“I’m satisfied!”\p"
+ .string "Now isn’t that a refreshing reply?\n"
+ .string "Bravo, TRAINER!\p"
+ .string "Isn’t it out-and-out awesome to be\n"
+ .string "able to battle to full satisfaction?\p"
+ .string "I found out exactly how satisfied\n"
+ .string "when I heard the TRAINER say this:$"
+
+gTVBravoTrainerBattleTowerText06:: @ 0827FF89
+ .string "This is what the TRAINER had to say:\n"
+ .string "“I’m not satisfied…”\p"
+ .string "Our TRAINER was obviously a little down\n"
+ .string "when that was uttered.\p"
+ .string "Still, it’s not easy to be able to battle\n"
+ .string "with complete satisfaction, am I right?\p"
+ .string "Anyway, I found out how dissatisfied\n"
+ .string "our TRAINER was when I heard this:$"
+
+gTVBravoTrainerBattleTowerText07:: @ 0828009C
+ .string "None$"
+
+gTVBravoTrainerBattleTowerText08:: @ 082800A1
+ .string "None$"
+
+gTVBravoTrainerBattleTowerText09:: @ 082800A6
+ .string "None$"
+
+gTVBravoTrainerBattleTowerText10:: @ 082800AB
+ .string "None$"
+
+gTVBravoTrainerBattleTowerText11:: @ 082800B0
+ .string "“{STR_VAR_1}.”$"
+
+gTVBravoTrainerBattleTowerText12:: @ 082800B6
+ .string "“{STR_VAR_1}.”\n"
+ .string "Now isn’t that great?\p"
+ .string "It really expresses {STR_VAR_2}’s joy,\n"
+ .string "I’d say.\p"
+ .string "That battle with {STR_VAR_3} at the\n"
+ .string "end… It really was what you’d call\l"
+ .string "“{STR_VAR_1}”!$"
+
+gTVBravoTrainerBattleTowerText13:: @ 0828013D
+ .string "“{STR_VAR_1}.”\n"
+ .string "Now isn’t that fitting?\p"
+ .string "That battle with {STR_VAR_3} at the\n"
+ .string "end… You can’t describe it as anything\l"
+ .string "else but “{STR_VAR_1}”!\p"
+ .string "{STR_VAR_2}’s disappointment comes across\n"
+ .string "loud and clear, I’d say!$"
+
+gTVBravoTrainerBattleTowerText14:: @ 082801E6
+ .string "Bravo, {STR_VAR_1}!\n"
+ .string "Bravo, {STR_VAR_2}!\p"
+ .string "I hope we can count on seeing\n"
+ .string "{STR_VAR_1} scale even greater heights!\p"
+ .string "That’s all the time we have!\n"
+ .string "Until next time, see you!$"
+
+ .string "Wow!\p"
+ .string "It’s plain to see that you lavish your\n"
+ .string "love on your {STR_VAR_1}.\p"
+ .string "Okay, it’s named {STR_VAR_2}.\p"
+ .string "Can I ask you a favor?\p"
+ .string "I’m a TV reporter, and I’m running\n"
+ .string "a survey on POKéMON.\p"
+ .string "Would you be willing to answer a few\n"
+ .string "simple questions for me?$"
+
+ .string "Great! Thank you!\p"
+ .string "Okay, here goes.\n"
+ .string "I just need quick answers, okay?$"
+
+ .string "When you first met {STR_VAR_1},\n"
+ .string "what did you feel?\p"
+ .string "How would you describe your feelings\n"
+ .string "at the time?$"
+
+ .string "Your {STR_VAR_1} is cared for lovingly.\p"
+ .string "If you were to liken it to something\n"
+ .string "that you like, what would it be?$"
+
+ .string "This question also relates to your\n"
+ .string "beloved {STR_VAR_1}.\p"
+ .string "What was it about {STR_VAR_1} that\n"
+ .string "attracted you?$"
+
+ .string "Okay, that makes sense.\p"
+ .string "The next question might be a little\n"
+ .string "on the tough side.\p"
+ .string "Here goes…\p"
+ .string "What do POKéMON mean to you?$"
+
+ .string "I see!\p"
+ .string "Hmhm…\p"
+ .string "Okay!\n"
+ .string "Thanks for helping me out.\p"
+ .string "It was fun and enlightening\n"
+ .string "chatting with you.\p"
+ .string "It’s possible that our interview will\n"
+ .string "end up on TV. Tune in and check!\p"
+ .string "Okay, that’s all.\n"
+ .string "Bye-bye!$"
+
+ .string "Oh, okay…\p"
+ .string "Well, if you get the urge to tell me\n"
+ .string "about POKéMON, I’ll be here!$"
+
+ .string "I enjoy this job--you get to learn\n"
+ .string "about POKéMON by doing interviews.$"
+
+ .string "Hi, you seem to be very close to your\n"
+ .string "{STR_VAR_1}.\p"
+ .string "Do you know what?\n"
+ .string "I’m a TV reporter.\p"
+ .string "I travel around interviewing people\n"
+ .string "about POKéMON.\p"
+ .string "I’m wondering if you’d be willing to tell\n"
+ .string "me a little about your {STR_VAR_1}?$"
+
+ .string "Wow, thank you!\p"
+ .string "Okay, then, please tell me anything\n"
+ .string "you’d like about your {STR_VAR_1}.$"
+
+ .string "Wow…\n"
+ .string "That’s an interesting account.\p"
+ .string "You really are tight with {STR_VAR_1},\n"
+ .string "aren’t you?\p"
+ .string "I get the feeling that your account\n"
+ .string "will make a great TV story.\p"
+ .string "I promise that I’ll turn this into\n"
+ .string "an entertaining show.\l"
+ .string "Keep your eyes out for it.\p"
+ .string "Okay, that’s all.\n"
+ .string "Bye-bye!$"
+
+gTVFanClubOpinionsText00:: @ 08280886
+ .string "WE ARE THE POKéMON FAN CLUB!\p"
+ .string "We’re on the air!\p"
+ .string "On this program, we get your opinions,\n"
+ .string "and I shout them out on your behalf!\l"
+ .string "Isn’t it a fantastic program concept?\p"
+ .string "Today, we bring you this report from\n"
+ .string "our reporter, who we sent out to the\l"
+ .string "POKéMON FAN CLUB.\p"
+ .string "So, just who is today’s featured\n"
+ .string "POKéMON fan?\p"
+ .string "… … … … … … … …\p"
+ .string "{STR_VAR_1}!\p"
+ .string "So, let’s hear what {STR_VAR_1} has to\n"
+ .string "say about {STR_VAR_3} the {STR_VAR_2}.\p"
+ .string "And, I will shout those words of love\n"
+ .string "out loud on TV!\p"
+ .string "Hoo-hah!\p"
+ .string "Let’s shout!$"
+
+gTVFanClubOpinionsText01:: @ 08280A44
+ .string "We asked {STR_VAR_1}, “When you first\n"
+ .string "laid eyes on your {STR_VAR_2}, what was\l"
+ .string "your initial thought?”\p"
+ .string "“{STR_VAR_3}!”\p"
+ .string "Yeahah! That’s a mighty fine shout!\p"
+ .string "Doesn’t it bring back memories of those\n"
+ .string "days long gone by?$"
+
+gTVFanClubOpinionsText02:: @ 08280AFC
+ .string "We asked {STR_VAR_1}, “If you were to\n"
+ .string "liken your {STR_VAR_2} to something,\l"
+ .string "it would be…”\p"
+ .string "… … … … … … … …\p"
+ .string "“{STR_VAR_3}!”\p"
+ .string "Whoah-oh, now that’s an original idea!\p"
+ .string "You sure can sense the intensity of\n"
+ .string "feeling the TRAINER has for\l"
+ .string "{STR_VAR_2}.$"
+
+gTVFanClubOpinionsText03:: @ 08280BC4
+ .string "And let’s see…\n"
+ .string "What was it about that {STR_VAR_2}\l"
+ .string "that so attracted {STR_VAR_1}?\p"
+ .string "… … … … … … … …\p"
+ .string "“{STR_VAR_3}!”\p"
+ .string "Whoa! Such a spectacular declaration!\p"
+ .string "The TRAINER’s love for the {STR_VAR_2}\n"
+ .string "comes across loud and clear!$"
+
+gTVFanClubOpinionsText04:: @ 08280C7A
+ .string "Hm? Oh, there’s still more.\n"
+ .string "Let’s check it out!\p"
+ .string "Let me see, now…\p"
+ .string "We asked {STR_VAR_1}, “What do POKéMON\n"
+ .string "mean to you?”\p"
+ .string "… … … … … …\p"
+ .string "“{STR_VAR_3}!”\p"
+ .string "Bravo!\p"
+ .string "That’s the best shout I’ve had all day!\p"
+ .string "“{STR_VAR_3}!”\p"
+ .string "It makes you want to shout it out loud\n"
+ .string "again and again!\p"
+ .string "Now that we’ve had a great shout, it’s\n"
+ .string "time to say good-bye until next time!\p"
+ .string "So, let’s all have one last shout!\n"
+ .string "All together now…\p"
+ .string "“{STR_VAR_3}!”$"
+
+gTVFanClubText00:: @ 08280DEE
+ .string "WE ARE THE POKéMON FAN CLUB!\p"
+ .string "We’re on the air!\p"
+ .string "Today, we’ll get rolling with the\n"
+ .string "POKéMON SURVEY CORNER.\p"
+ .string "Out of all the tales woven by POKéMON\n"
+ .string "and TRAINERS, what startling new drama\l"
+ .string "will grab our attention today?\p"
+ .string "Let me see…\p"
+ .string "This one!\p"
+ .string "We’ll start with this letter!\p"
+ .string "It’s a letter from {STR_VAR_1} about a\n"
+ .string "beloved {STR_VAR_2}.\p"
+ .string "Let’s see how passionately our writer\n"
+ .string "can express love for the {STR_VAR_2}!\l"
+ .string "Hmhm…$"
+
+gTVFanClubText01:: @ 08280F69
+ .string "Whoah!\n"
+ .string "What an amazing letter!$"
+
+gTVFanClubText02:: @ 08280F88
+ .string "I loved it, so here it is again!$"
+
+gTVFanClubText03:: @ 08280FA9
+ .string "A great letter bears reading over\n"
+ .string "and over!$"
+
+gTVFanClubText04:: @ 08280FD5
+ .string "The bit “{STR_VAR_3},” that really\n"
+ .string "accentuates emotional impact!\p"
+ .string "It’s a great letter that has real\n"
+ .string "heartfelt depth!$"
+
+gTVFanClubText05:: @ 08281040
+ .string "Especially that “{STR_VAR_3}” bit!\p"
+ .string "I love how “{STR_VAR_3}” is used!$"
+
+gTVFanClubText06:: @ 08281073
+ .string "By the way, and it’s not important,\n"
+ .string "but “{STR_VAR_3}” is a great saying.\p"
+ .string "I’ve been using “{STR_VAR_3}” a lot\n"
+ .string "in conversations lately.$"
+
+gTVFanClubText07:: @ 082810E7
+ .string "If I had to score this letter,\n"
+ .string "I’d give it {STR_VAR_3} points.\p"
+ .string "Next time, I’ll be expecting an even\n"
+ .string "better letter, {STR_VAR_1}!\p"
+ .string "A-whoops, will you look at the time?\n"
+ .string "Time to say good-bye until next time!$"
+
+ .string "Oh?\n"
+ .string "Do you perhaps like POKéMON?\p"
+ .string "I’m on assignment with the TV network.\p"
+ .string "I’m gathering stories on POKéMON and\n"
+ .string "TRAINERS that occurred recently.\p"
+ .string "If you don’t mind, could you tell me\n"
+ .string "something about yourself?$"
+
+ .string "I’m gathering stories on POKéMON and\n"
+ .string "TRAINERS that occurred recently.\p"
+ .string "If you don’t mind, could you tell me\n"
+ .string "something about yourself?$"
+
+ .string "Oh, you will?\n"
+ .string "Thank you!\p"
+ .string "Then, please, tell me anything of\n"
+ .string "interest that you experienced recently\l"
+ .string "involving POKéMON.$"
+
+ .string "Oh, I see…\p"
+ .string "Well, if you do have an interesting\n"
+ .string "story to tell, please let me know.$"
+
+ .string "Oh, what an uplifting story!\p"
+ .string "I’ll be sure to get your story told\n"
+ .string "on television.\p"
+ .string "It should be aired sometime, I think,\n"
+ .string "so please look forward to it.$"
+
+ .string "Hmmm…\n"
+ .string "I’ve got a good story for a TV program.\p"
+ .string "I’d better write it up in a hurry!$"
+
+gTVRecentHappeningsText00:: @ 0828149E
+ .string "Hello, it’s time for RECENT HAPPENINGS.\p"
+ .string "For POKéMON TRAINERS, every day\n"
+ .string "is a storybook tale.\p"
+ .string "What we want to do is to introduce you\n"
+ .string "to some of these POKéMON tales.\p"
+ .string "Today, we bring you the story\n"
+ .string "of the TRAINER {STR_VAR_1}.\p"
+ .string "What did {STR_VAR_1} experience recently?\n"
+ .string "Let’s find out.\p"
+ .string "Let’s see…$"
+
+gTVRecentHappeningsText01:: @ 082815AF
+ .string "Wasn’t that enlightening?\p"
+ .string "The story gives you a clear idea of what\n"
+ .string "{STR_VAR_1} has experienced recently.\l"
+ .string "It’s as if we were there as witnesses!$"
+
+gTVRecentHappeningsText02:: @ 08281636
+ .string "“{STR_VAR_3}.” That\n"
+ .string "accents the tale and gives it depth.$"
+
+gTVRecentHappeningsText03:: @ 08281666
+ .string "“{STR_VAR_3}.”\n"
+ .string "That gives the tale a sense of place.\l"
+ .string "It lets us envision the tale’s setting.$"
+
+gTVRecentHappeningsText04:: @ 082816BA
+ .string "The “{STR_VAR_3}”\n"
+ .string "section of the tale is very expressive.$"
+
+gTVRecentHappeningsText05:: @ 082816EB
+ .string "{STR_VAR_1} has recounted a wonderful\n"
+ .string "tale involving POKéMON.\p"
+ .string "And now {STR_VAR_1}’s tale is indelibly\n"
+ .string "etched into your soul, too.\p"
+ .string "That’s it for today.\n"
+ .string "Please tune in next time.$"
+
+gTVMassOutbreakText00:: @ 0828178A
+ .string "Greetings!\n"
+ .string "It’s time for POKéMON NEWS.\p"
+ .string "We’ve just received word of a very\n"
+ .string "rare occurrence.\p"
+ .string "There have been reports of a mass\n"
+ .string "outbreak of {STR_VAR_2} in the vicinity\l"
+ .string "of {STR_VAR_1}.\p"
+ .string "{STR_VAR_2}, as you’re probably aware,\n"
+ .string "is known as a POKéMON that’s rare\l"
+ .string "and hard to find.\p"
+ .string "It sounds like a rare opportunity to\n"
+ .string "see the mystifying outbreak of\l"
+ .string "{STR_VAR_2} in the wild.\p"
+ .string "That’s the news on POKéMON NEWS.$"
+
+gTV3CheersForPokeblocksText00:: @ 082818F4
+ .string "MC: We hope you’re in good cheer,\n"
+ .string "“3 CHEERS FOR {POKEBLOCK}S” is here!\p"
+ .string "Today, we examine the {POKEBLOCK} blended\n"
+ .string "by {STR_VAR_1} and associates.\p"
+ .string "Without any delay, let me feed it\n"
+ .string "to my gourmet POKéMON GULPIN.\p"
+ .string "… … … … … …\n"
+ .string "… … … … … …$"
+
+gTV3CheersForPokeblocksText01:: @ 082819C7
+ .string "GULPIN: Gubi! Gubii!\p"
+ .string "MC: And the verdict is very {STR_VAR_1}!\n"
+ .string "GULPIN says it tastes “{STR_VAR_2}!”\p"
+ .string "Thank you so much, {STR_VAR_3}!$"
+
+gTV3CheersForPokeblocksText02:: @ 08281A2F
+ .string "{STR_VAR_1}’s blending performance\n"
+ .string "left something to be desired.\p"
+ .string "If this TRAINER could blend better,\n"
+ .string "the {POKEBLOCK} would be much tastier.$"
+
+gTV3CheersForPokeblocksText03:: @ 08281AAC
+ .string "GULPIN: Gubi! Gubii!\p"
+ .string "MC: Hmm… It’s too {STR_VAR_1}.\n"
+ .string "GULPIN says it tastes “{STR_VAR_2}!”\p"
+ .string "It looks like {STR_VAR_3}’s errors\n"
+ .string "hurt the blending quality…$"
+
+gTV3CheersForPokeblocksText04:: @ 08281B28
+ .string "It’s too bad that {STR_VAR_1}’s\n"
+ .string "leading effort went to waste.\p"
+ .string "Let’s hope {STR_VAR_2} can turn in\n"
+ .string "a better showing next time!$"
+
+gTV3CheersForPokeblocksText05:: @ 08281B93
+ .string "Tune in next time!\n"
+ .string "Our slogan is “3 CHEERS FOR {POKEBLOCK}S!”$"
+
+ .string "Hi, there!\p"
+ .string "I’m a big fan of {STR_VAR_1}.\n"
+ .string "What’s your opinion of {STR_VAR_1}?$"
+
+ .string "I see, I see. That’s what you think\n"
+ .string "about the TRAINER.$"
+
+ .string "Have you completely forgotten\n"
+ .string "about {STR_VAR_1}?$"
+
+ .string "I’m a big fan of {STR_VAR_1}.\n"
+ .string "What’s your opinion of {STR_VAR_1}?$"
+
+ .string "How strong would you rate {STR_VAR_1}\n"
+ .string "on a scale of one hundred?$"
+
+ .string "Have you completely forgotten\n"
+ .string "about {STR_VAR_1}?$"
+
+ .string "Oh, I see!\n"
+ .string "You should meet {STR_VAR_1} sometime.\l"
+ .string "I’m sure you’ll become a fan, too!$"
+
+ .string "I see, I see.\p"
+ .string "Thank you!\n"
+ .string "That’s very useful to know.\p"
+ .string "I’ll share this information with other\n"
+ .string "{STR_VAR_1} fans and discuss it.$"
+
+ .string "There’s going to be a TV special on\n"
+ .string "{STR_VAR_1} very soon.\p"
+ .string "I hope you catch it!$"
+
+gTVTrainerFanClubSpecialText00:: @ 08281DFB
+ .string "TRAINER FAN CLUB\n"
+ .string "{STR_VAR_1} SPECIAL!\p"
+ .string "This is a special presentation for\n"
+ .string "the fans of {STR_VAR_1} all over HOENN!\p"
+ .string "Today, we ask the question, “What do\n"
+ .string "people think of {STR_VAR_1}?”\p"
+ .string "We posed the question to {STR_VAR_2}\n"
+ .string "as the TRAINER representative.\p"
+ .string "We asked, “In one word, how would\n"
+ .string "you describe {STR_VAR_1}?”\p"
+ .string "The reply: “{STR_VAR_3}.”\p"
+ .string "Kudos to {STR_VAR_2}!\n"
+ .string "What a perceptive opinion!\p"
+ .string "“{STR_VAR_3} {STR_VAR_1}.”\n"
+ .string "It has such a nice ring to it!\p"
+ .string "{STR_VAR_2} also scored {STR_VAR_1}’s\n"
+ .string "strength from 0 to 100.$"
+
+gTVTrainerFanClubSpecialText01:: @ 08281F90
+ .string "The score was {STR_VAR_3} points!\n"
+ .string "That is a very high score indeed!\p"
+ .string "{STR_VAR_2} must obviously hold\n"
+ .string "{STR_VAR_1} in very high esteem.$"
+
+gTVTrainerFanClubSpecialText02:: @ 08281FFA
+ .string "The score was {STR_VAR_3} points!\n"
+ .string "That is quite a good score.\p"
+ .string "{STR_VAR_2} must consider\n"
+ .string "{STR_VAR_1} to be a rival.$"
+
+gTVTrainerFanClubSpecialText03:: @ 08282052
+ .string "The score was {STR_VAR_3} points!\n"
+ .string "That’s a rather weak score.\p"
+ .string "{STR_VAR_2} must consider\n"
+ .string "{STR_VAR_1} to be a mere sidekick.$"
+
+gTVTrainerFanClubSpecialText04:: @ 082820B2
+ .string "The score was {STR_VAR_3} point(s)!\n"
+ .string "That’s a terrible score.\p"
+ .string "{STR_VAR_2} must consider\n"
+ .string "{STR_VAR_1} to be an underling.$"
+
+gTVTrainerFanClubSpecialText05:: @ 0828210E
+ .string "There you have it, folks!\p"
+ .string "I think we all learned something\n"
+ .string "new about {STR_VAR_1}.\p"
+ .string "In closing, I’ll leave you with\n"
+ .string "{STR_VAR_2}’s words.\p"
+ .string "{STR_VAR_3} {STR_VAR_1}!$"
+
+gTVNameRaterText00:: @ 0828218A
+ .string "And now, it’s time for…\n"
+ .string "THE NAME RATER SHOW.\p"
+ .string "I tell your POKéMON’s fortune from\n"
+ .string "the nickname you’ve bestowed.\p"
+ .string "Advice is what I have to give, and it is\n"
+ .string "helpful advice that I offer.\p"
+ .string "Today, I shall do a reading of\n"
+ .string "the nickname {STR_VAR_3} of {STR_VAR_1}’s\l"
+ .string "POKéMON {STR_VAR_2}.\p"
+ .string "Hmhm…\p"
+ .string "Hmm…\n"
+ .string "This nickname is…$"
+
+gTVNameRaterText01:: @ 0828229E
+ .string "A nickname that hints at talent in many\n"
+ .string "different ways.\p"
+ .string "I urge this TRAINER to take courage\n"
+ .string "and take on many challenges.$"
+
+gTVNameRaterText02:: @ 08282317
+ .string "A nickname that perfectly complements\n"
+ .string "{STR_VAR_1}, the TRAINER’s name.\p"
+ .string "It suggests that you will forge a fine\n"
+ .string "partnership with precise timing.$"
+
+gTVNameRaterText03:: @ 0828239D
+ .string "A nickname fit for a unique individual\n"
+ .string "of a POKéMON!\p"
+ .string "If raised properly, this POKéMON’s\n"
+ .string "uniqueness will bloom excessively!$"
+
+gTVNameRaterText04:: @ 08282418
+ .string "A nickname that will nurture the caring\n"
+ .string "and compassionate side of POKéMON.\p"
+ .string "If raised properly, this POKéMON will\n"
+ .string "come to exhibit real warmth!$"
+
+gTVNameRaterText05:: @ 082824A6
+ .string "A very fine nickname that hints at\n"
+ .string "greatness to come.\p"
+ .string "I am intrigued about what the future\n"
+ .string "holds in store for this POKéMON.$"
+
+gTVNameRaterText06:: @ 08282522
+ .string "A good nickname that should make the\n"
+ .string "POKéMON hale and hearty!\p"
+ .string "That POKéMON should remain fit and\n"
+ .string "robust for a long, long time.$"
+
+gTVNameRaterText07:: @ 082825A1
+ .string "A good nickname that should make the\n"
+ .string "POKéMON very active!\p"
+ .string "I should think that this POKéMON will be\n"
+ .string "a strong performer in battles.$"
+
+gTVNameRaterText08:: @ 08282623
+ .string "An appealing nickname that should make\n"
+ .string "the POKéMON very charming!\p"
+ .string "I don’t doubt that this POKéMON will be\n"
+ .string "quite the charmer in POKéMON CONTESTS.$"
+
+gTVNameRaterText09:: @ 082826B4
+ .string "The nickname {STR_VAR_1} is rooted by\n"
+ .string "the letter “{STR_VAR_3}.”\p"
+ .string "That letter is supported by the first\n"
+ .string "letter “{STR_VAR_2},” which gives it a solid sense\l"
+ .string "of presence as a nickname.$"
+
+gTVNameRaterText10:: @ 0828274D
+ .string "The nickname {STR_VAR_1} is very\n"
+ .string "shapely in a pleasing manner.\p"
+ .string "The presence of the letters “{STR_VAR_2}” and\n"
+ .string "“{STR_VAR_3}”--now that is remarkably good!$"
+
+gTVNameRaterText11:: @ 082827CB
+ .string "The nickname {STR_VAR_1}--it has a\n"
+ .string "sublime, flowing feel to it.\p"
+ .string "The flow from the initial letter “{STR_VAR_2}” to\n"
+ .string "“{STR_VAR_3}” is especially wonderful.$"
+
+gTVNameRaterText12:: @ 08282849
+ .string "Let’s examine other examples of fine\n"
+ .string "nicknames, shall we?$"
+
+gTVNameRaterText13:: @ 08282883
+ .string "Try this example. Take a part of the\n"
+ .string "TRAINER name of {STR_VAR_1}, and end\l"
+ .string "up with the fine nickname {STR_VAR_2}{STR_VAR_3}.$"
+
+gTVNameRaterText14:: @ 082828E4
+ .string "The nickname {STR_VAR_2}{STR_VAR_3} would also work\n"
+ .string "quite well.$"
+
+gTVNameRaterText15:: @ 08282912
+ .string "The POKéMON’s species name of\n"
+ .string "{STR_VAR_2} could be used as the basis\l"
+ .string "for making the nickname {STR_VAR_1}{STR_VAR_3}.$"
+
+gTVNameRaterText16:: @ 0828296C
+ .string "{STR_VAR_1}{STR_VAR_3} would also be an effective\n"
+ .string "nickname.$"
+
+gTVNameRaterText17:: @ 08282996
+ .string "What should always be avoided is using\n"
+ .string "another POKéMON species name.\p"
+ .string "For instance, avoid taking the name of\n"
+ .string "{STR_VAR_2} to make the nickname {STR_VAR_1}{STR_VAR_3}.\l"
+ .string "That is unacceptable.$"
+
+gTVNameRaterText18:: @ 08282A36
+ .string "I must say that {STR_VAR_1} is quite\n"
+ .string "a good nickname.\p"
+ .string "I hope that the TRAINER will continue\n"
+ .string "to treat {STR_VAR_1} with love.\p"
+ .string "That’s it for today’s show.\n"
+ .string "May we meet again.$"
+
+gTVPokemonAnglerText00:: @ 08282ACF
+ .string "{STR_VAR_2} ANGLER\p"
+ .string "ANNOUNCER: Hello! Today, we’ll get tips\n"
+ .string "on fishing for {STR_VAR_2}.\p"
+ .string "GURU, what advice can you give for\n"
+ .string "catching {STR_VAR_2}?\p"
+ .string "GURU: Hm? Catching {STR_VAR_2}?\n"
+ .string "Well, let me tell you, be patient and\l"
+ .string "wait. That’s the bottom line.\p"
+ .string "Do you see {STR_VAR_1} over there?\n"
+ .string "That TRAINER makes a good example.\p"
+ .string "That TRAINER’s already had\n"
+ .string "{STR_VAR_3} POKéMON get away.\p"
+ .string "But there {STR_VAR_1} waits. No giving up.\n"
+ .string "That’s the law for catching {STR_VAR_2}.\p"
+ .string "ANNOUNCER: I see…\p"
+ .string "Oh! {STR_VAR_1} has finally landed an\n"
+ .string "elusive {STR_VAR_2}!\p"
+ .string "The TRAINER appears close to tears\n"
+ .string "out of sheer joy!\p"
+ .string "Seeing that elated look, I’m getting\n"
+ .string "the itch to go fishing, too!\p"
+ .string "Viewers, why not take this as a cue to\n"
+ .string "try some {STR_VAR_2} fishing?\p"
+ .string "Until our next broadcast, farewell and\n"
+ .string "good fishing to you all!$"
+
+gTVPokemonAnglerText01:: @ 08282D7C
+ .string "{STR_VAR_2} ANGLER\p"
+ .string "ANNOUNCER: Hello! Today, we’ll get tips\n"
+ .string "on fishing for {STR_VAR_2}.\p"
+ .string "GURU, what advice can you give for\n"
+ .string "catching {STR_VAR_2}?\p"
+ .string "GURU: Hm? Catching {STR_VAR_2}?\n"
+ .string "Well, let me tell you, use your fishing\l"
+ .string "ROD with vigor!\p"
+ .string "Do you see {STR_VAR_1} over there?\n"
+ .string "See how the ROD is handled?\p"
+ .string "That TRAINER’s already caught\n"
+ .string "{STR_VAR_3} in a row.\p"
+ .string "ANNOUNCER: It’s incredible!\n"
+ .string "It looks like a storm…\p"
+ .string "Seeing technique of that caliber, I’m\n"
+ .string "getting the itch to go fishing, too.\p"
+ .string "Viewers, why not take this as a cue to\n"
+ .string "try some {STR_VAR_2} fishing?\p"
+ .string "Until our next broadcast, farewell and\n"
+ .string "good fishing to you all!$"
+
+gTVPokemonTodayFailedText00:: @ 08282F9B
+ .string "Hello!\p"
+ .string "It’s time for POKéMON TODAY!\p"
+ .string "BIG SIS: Hi! Is everyone peachy and\n"
+ .string "perky today?\p"
+ .string "Today, we’re going to look at {STR_VAR_1}’s\n"
+ .string "POKéMON {STR_VAR_2}!\p"
+ .string "BIG BRO: Yeah! That’s what we’re going\n"
+ .string "to do!$"
+
+gTVPokemonTodayFailedText01:: @ 0828304D
+ .string "Oh!\n"
+ .string "Speaking of {STR_VAR_1}…\p"
+ .string "BIG SIS, I saw the TRAINER with my very\n"
+ .string "own eyes!\p"
+ .string "BIG SIS: Oh, what did you see?\p"
+ .string "BIG BRO: Well, I had to go on a trip to\n"
+ .string "{STR_VAR_2}.\p"
+ .string "That’s when I happened to come across\n"
+ .string "{STR_VAR_1}, who was trying to catch the\l"
+ .string "POKéMON {STR_VAR_3}, but…$"
+
+gTVPokemonTodayFailedText02:: @ 08283135
+ .string "The POKéMON managed to get away!\p"
+ .string "It ended up wasting this many\n"
+ .string "POKé BALLS: {STR_VAR_2}!\p"
+ .string "You should have seen the expression\n"
+ .string "of frustration on {STR_VAR_1}’s face when\l"
+ .string "the POKéMON took off!$"
+
+gTVPokemonTodayFailedText03:: @ 082831DF
+ .string "But {STR_VAR_1} goofed and made the\n"
+ .string "POKéMON faint!\p"
+ .string "It ended up wasting this many\n"
+ .string "POKé BALLS: {STR_VAR_2}!\p"
+ .string "You should have seen the expression\n"
+ .string "of stunned dismay on {STR_VAR_1}’s face\l"
+ .string "when the POKéMON fainted!$"
+
+gTVPokemonTodayFailedText04:: @ 08283294
+ .string "BIG SIS: Hey, there!\n"
+ .string "That’s not nice!\p"
+ .string "You shouldn’t be laughing at other\n"
+ .string "people’s misfortune!\p"
+ .string "Oh, poor {STR_VAR_1}.\n"
+ .string "What a shame!\p"
+ .string "BIG BRO: That’s true!\n"
+ .string "Sorry for laughing.$"
+
+gTVPokemonTodayFailedText05:: @ 08283337
+ .string "BIG SIS: Bufufu…\p"
+ .string "BIG BRO: Hey!\n"
+ .string "You just laughed, too!\p"
+ .string "BIG SIS: Huh?!\p"
+ .string "I didn’t laugh!\n"
+ .string "Honestly, I didn’t!\p"
+ .string "Oh, poor {STR_VAR_1}.\n"
+ .string "What a shame!\p"
+ .string "BIG BRO: …$"
+
+gTVPokemonTodayFailedText06:: @ 082833C6
+ .string "BIG SIS: That’s enough silliness!\n"
+ .string "Let’s look at today’s POKéMON…\p"
+ .string "Huh?\n"
+ .string "We’re out of time already?\p"
+ .string "Aww!\n"
+ .string "We couldn’t profile a POKéMON today!\p"
+ .string "BIG BRO: See you again next time!\p"
+ .string "BIG SIS: Hey, don’t end the show\n"
+ .string "without me!$"
+
+gTVPokemonTodaySuccessfulText00:: @ 082834A0
+ .string "Hello!\p"
+ .string "It’s time for POKéMON TODAY!\p"
+ .string "BIG SIS: Hi! Is everyone peachy and\n"
+ .string "perky today?\p"
+ .string "Today, we’re going to look at {STR_VAR_1}’s\n"
+ .string "POKéMON {STR_VAR_2}!\p"
+ .string "BIG BRO: Yeah! That’s what we’re going\n"
+ .string "to do!$"
+
+gTVPokemonTodaySuccessfulText01:: @ 08283552
+ .string "BIG SIS: {STR_VAR_1} gave the nickname\n"
+ .string "{STR_VAR_3} to the {STR_VAR_2}!\p"
+ .string "It sounds like {STR_VAR_3} is getting\n"
+ .string "good, loving care!$"
+
+gTVPokemonTodaySuccessfulText02:: @ 082835AE
+ .string "BIG BRO: The TRAINER had to throw this\n"
+ .string "many POKé BALLS to catch it: {STR_VAR_3}!\p"
+ .string "It finally took a single {STR_VAR_2}\n"
+ .string "to catch it!$"
+
+gTVPokemonTodaySuccessfulText03:: @ 0828361F
+ .string "BIG SIS: If it was that easy to catch,\n"
+ .string "it must have been destiny that brought\l"
+ .string "{STR_VAR_1} and the {STR_VAR_2} together!$"
+
+gTVPokemonTodaySuccessfulText04:: @ 08283685
+ .string "BIG SIS: Wow! That’s so neat!\p"
+ .string "But you know what they say, a POKéMON\n"
+ .string "that takes a lot of effort to catch\l"
+ .string "earns the love of its TRAINER!$"
+
+gTVPokemonTodaySuccessfulText05:: @ 0828370C
+ .string "BIG SIS: {STR_VAR_1}’s {STR_VAR_2} is a\n"
+ .string "memorable POKéMON because it took an\l"
+ .string "invaluable MASTER BALL to catch!\p"
+ .string "BIG BRO: Wow! That’s mega-awesome!\p"
+ .string "BIG SIS: {STR_VAR_1} must have really\n"
+ .string "wanted that {STR_VAR_2}, for sure!$"
+
+gTVPokemonTodaySuccessfulText06:: @ 082837C2
+ .string "BIG BRO: Then to give the nickname\n"
+ .string "{STR_VAR_3} to that {STR_VAR_2}…\p"
+ .string "You really get a good idea about\n"
+ .string "{STR_VAR_1}’s TRAINER sense.\p"
+ .string "BIG SIS: I second that notion!$"
+
+gTVPokemonTodaySuccessfulText07:: @ 08283848
+ .string "If it were me, I’d give that nickname\n"
+ .string "to something like this {STR_VAR_3}!\p"
+ .string "BIG BRO: Whoa! That could be the start\n"
+ .string "of something new!$"
+
+gTVPokemonTodaySuccessfulText08:: @ 082838C2
+ .string "{STR_VAR_2} the {STR_VAR_1}?\n"
+ .string "Doesn’t that sound perfect?\p"
+ .string "The letters and everything--they\n"
+ .string "sound just right for the POKéMON\l"
+ .string "{STR_VAR_1}!\p"
+ .string "BIG BRO: Yeah, true, that!$"
+
+gTVPokemonTodaySuccessfulText09:: @ 0828394A
+ .string "As far as I know, no TRAINER has ever\n"
+ .string "given the nickname {STR_VAR_2} to their\l"
+ .string "{STR_VAR_1}!\p"
+ .string "BIG BRO: That just goes to show what\n"
+ .string "great taste the TRAINER has in picking\l"
+ .string "nicknames!$"
+
+gTVPokemonTodaySuccessfulText10:: @ 082839EA
+ .string "The next time I catch a POKéMON,\n"
+ .string "I should give it the name {STR_VAR_2}.\p"
+ .string "BIG BRO: Huh? Me, too!\n"
+ .string "I’ll use the nickname {STR_VAR_2}, too!$"
+
+gTVPokemonTodaySuccessfulText11:: @ 08283A5F
+ .string "BIG SIS: Oh, no!\n"
+ .string "Look at the time!\p"
+ .string "Well, gang, this is it for today.\n"
+ .string "See you again next time!\p"
+ .string "BIG BRO: Remember, it could be your\n"
+ .string "POKéMON in the spotlight next time!$"
+
+gTVTodaysSmartShopperText00:: @ 08283B05
+ .string "Hello!\p"
+ .string "It’s time for TODAY’S SMART SHOPPER.\p"
+ .string "INTERVIEWER: How are you, viewers?\p"
+ .string "Today we’re visiting a shop\n"
+ .string "in {STR_VAR_2}.\p"
+ .string "Let’s check on what the hot sellers\n"
+ .string "have been recently.$"
+
+gTVTodaysSmartShopperText01:: @ 08283BAF
+ .string "Let’s interview the clerk to get the\n"
+ .string "lowdown.\p"
+ .string "Hi, how’s your business?\p"
+ .string "CLERK: Oh, we’re doing excellent.\p"
+ .string "Recently, {STR_VAR_2} has been\n"
+ .string "selling especially strongly.\p"
+ .string "Why, just the other day a TRAINER\n"
+ .string "named {STR_VAR_1} bought {STR_VAR_3}.$"
+
+gTVTodaysSmartShopperText02:: @ 08283C81
+ .string "INTERVIEWER: The TRAINER bought\n"
+ .string "{STR_VAR_3} {STR_VAR_2}S? That’s a haul!\p"
+ .string "If I may say so, {STR_VAR_1} must have\n"
+ .string "been stocking up for a long journey\l"
+ .string "to far-off places.\p"
+ .string "For traveling, {STR_VAR_2}S are so\n"
+ .string "important!$"
+
+gTVTodaysSmartShopperText03:: @ 08283D32
+ .string "INTERVIEWER: Speaking of the item\n"
+ .string "{STR_VAR_2}, I just bought {STR_VAR_3} of\l"
+ .string "them recently.\p"
+ .string "After all, {STR_VAR_2}’s a great item!$"
+
+gTVTodaysSmartShopperText04:: @ 08283D99
+ .string "INTERVIEWER: {STR_VAR_2}?!\n"
+ .string "But {STR_VAR_3} of them?!\p"
+ .string "I didn’t think there would be anyone\n"
+ .string "buying that many.\p"
+ .string "My goodness, I can only afford one or\n"
+ .string "two at a time…$"
+
+gTVTodaysSmartShopperText05:: @ 08283E28
+ .string "INTERVIEWER: One time, I bought\n"
+ .string "a whole lot of the item {STR_VAR_2}.\p"
+ .string "But it turned out to be too many.\n"
+ .string "I ended up regretting it…\p"
+ .string "Since then, I only buy strictly what\n"
+ .string "I absolutely need…\p"
+ .string "Oops!\p"
+ .string "There’s no point talking about me!$"
+
+gTVTodaysSmartShopperText06:: @ 08283F01
+ .string "CLERK: {STR_VAR_1} also bought the item\n"
+ .string "{STR_VAR_2} in bulk, taking {STR_VAR_3}.\p"
+ .string "INTERVIEWER: Oh, that’s smart.\n"
+ .string "{STR_VAR_2}’s a very good item, too.$"
+
+gTVTodaysSmartShopperText07:: @ 08283F72
+ .string "CLERK: And, the TRAINER also bought\n"
+ .string "{STR_VAR_3} of the item {STR_VAR_2}.$"
+
+gTVTodaysSmartShopperText08:: @ 08283FA9
+ .string "CLERK: Plus, it was during a big sale.\n"
+ .string "That’s smart shopping.$"
+
+gTVTodaysSmartShopperText09:: @ 08283FE7
+ .string "INTERVIEWER: Hmm… {STR_VAR_1} sounds like\n"
+ .string "quite the shrewd bargain hunter!\p"
+ .string "In total, {STR_VAR_1}’s purchases came to…\p"
+ .string "¥{STR_VAR_2}?!\n"
+ .string "What an amazing sum!\p"
+ .string "Oops! We’re out of time!\n"
+ .string "See you on our next broadcast!$"
+
+gTVTodaysSmartShopperText10:: @ 0828409E
+ .string "CLERK: {STR_VAR_1} is a VIP customer,\n"
+ .string "no doubt about it.$"
+
+gTVTodaysSmartShopperText11:: @ 082840CE
+ .string "Let’s interview the clerk to get the\n"
+ .string "lowdown.\p"
+ .string "Hi, how’s your business?\p"
+ .string "CLERK: Oh, we’re doing unbelievable\n"
+ .string "business. It’s almost overwhelming.\p"
+ .string "Recently, a TRAINER named {STR_VAR_1}\n"
+ .string "bought the item {STR_VAR_2} in bulk.\p"
+ .string "The TRAINER almost cleared out our\n"
+ .string "entire stock of {STR_VAR_2}S.\p"
+ .string "I never dreamt that any customer\n"
+ .string "would ever need so many {STR_VAR_2}S.\l"
+ .string "It’s just unheard of!\p"
+ .string "INTERVIEWER: So that would be like 100\n"
+ .string "or 200 sold?\p"
+ .string "CLERK: Oh, no, much more than that!\p"
+ .string "INTERVIEWER: Oh, my goodness!\n"
+ .string "{STR_VAR_1} must be a special shopper!\p"
+ .string "CLERK: {STR_VAR_1} is a VIP customer,\n"
+ .string "no doubt about it.$"
+
+gTVTodaysSmartShopperText12:: @ 082842E6
+ .string "INTERVIEWER: Hmm…\n"
+ .string "That is amazing.\p"
+ .string "But why would the TRAINER need to buy\n"
+ .string "so many?\p"
+ .string "… …\p"
+ .string "The mystery deepens, but this is all\n"
+ .string "the time we have today.\l"
+ .string "See you on our next broadcast!\p"
+ .string "Still, {STR_VAR_1} is certainly an enigma…$"
+
+gTVWorldOfMastersText00:: @ 082843BA
+ .string "THE WORLD OF MASTERS\p"
+ .string "Hello, viewers.\p"
+ .string "Perhaps you are aware of a TRAINER\n"
+ .string "named {STR_VAR_1}.\p"
+ .string "{STR_VAR_1} is famous as a master at\n"
+ .string "catching POKéMON.\p"
+ .string "{STR_VAR_1}’s quest for POKéMON depends\n"
+ .string "entirely on a careful search on foot.\p"
+ .string "On one memorable day, the TRAINER\n"
+ .string "walked some {STR_VAR_2} steps.\p"
+ .string "The total number of POKéMON caught\n"
+ .string "that day reached an impressive {STR_VAR_3}!$"
+
+gTVWorldOfMastersText01:: @ 082844FD
+ .string "That remarkable feat must have been\n"
+ .string "possible because of the trust between\l"
+ .string "the TRAINER and {STR_VAR_1}.$"
+
+gTVWorldOfMastersText02:: @ 0828455B
+ .string "The master caught the day’s last\n"
+ .string "{STR_VAR_3} near {STR_VAR_2}.\p"
+ .string "That POKéMON apparently enjoys\n"
+ .string "a special status as a record holder.\p"
+ .string "Skilled TRAINERS should be encouraged\n"
+ .string "to challenge this fine record.\p"
+ .string "That’s all for today.\n"
+ .string "Please tune in next time.$"
+
+gTVTodaysRivalTrainerText00:: @ 08284641
+ .string "TODAY’S RIVAL TRAINER!\p"
+ .string "Hello, fellow POKéMON TRAINERS!\n"
+ .string "How are we all doing today?\p"
+ .string "Today, like every other day,\n"
+ .string "we’ll examine one of our rivals!$"
+
+gTVTodaysRivalTrainerText07:: @ 082846D2
+ .string "Today’s rival TRAINER is {STR_VAR_1},\n"
+ .string "who’s around {STR_VAR_3} now.\p"
+ .string "{STR_VAR_1} has so far registered\n"
+ .string "{STR_VAR_2} POKéMON in the POKéDEX.$"
+
+gTVTodaysRivalTrainerText08:: @ 08284738
+ .string "Today’s rival TRAINER is {STR_VAR_1},\n"
+ .string "who’s in a SECRET BASE now.\p"
+ .string "{STR_VAR_1} has so far registered\n"
+ .string "{STR_VAR_2} POKéMON in the POKéDEX.$"
+
+gTVTodaysRivalTrainerText09:: @ 082847A5
+ .string "Today’s rival TRAINER is {STR_VAR_1}.\p"
+ .string "So far, {STR_VAR_1} has registered\n"
+ .string "{STR_VAR_2} POKéMON in the POKéDEX.$"
+
+gTVTodaysRivalTrainerText10:: @ 082847F7
+ .string "Today’s rival TRAINER is {STR_VAR_1},\n"
+ .string "who’s on a ferry now.\p"
+ .string "{STR_VAR_1} has so far registered\n"
+ .string "{STR_VAR_2} POKéMON in the POKéDEX.$"
+
+ .string "$"
+
+gTVTodaysRivalTrainerText01:: @ 0828485F
+ .string "And how many BADGES does our rival\n"
+ .string "have? The number is {STR_VAR_1}!$"
+
+gTVTodaysRivalTrainerText02:: @ 0828489A
+ .string "But our rival hasn’t obtained\n"
+ .string "a single BADGE yet!$"
+
+gTVTodaysRivalTrainerText03:: @ 082848CC
+ .string "Our rival hasn’t obtained a single\n"
+ .string "BATTLE FRONTIER Symbol yet.$"
+
+gTVTodaysRivalTrainerText04:: @ 0828490B
+ .string "Let’s see how many BATTLE FRONTIER\n"
+ .string "Symbols our rival has.\p"
+ .string "Gold Symbols: {STR_VAR_1}!\n"
+ .string "Silver Symbols: {STR_VAR_2}!$"
+
+gTVTodaysRivalTrainerText05:: @ 0828496B
+ .string "Our rival has collected {STR_VAR_1} Battle\n"
+ .string "Point(s) at the BATTLE FRONTIER.$"
+
+gTVTodaysRivalTrainerText06:: @ 082849AE
+ .string "So, how did you measure up in\n"
+ .string "comparison to {STR_VAR_1}?\p"
+ .string "The adventure rolls on!\p"
+ .string "Fellow TRAINERS!\p"
+ .string "Let’s all keep moving forward\n"
+ .string "and ahead of our rivals!$"
+
+gTVDewfordTrendWatcherNetworkText00:: @ 08284A3E
+ .string "DEWFORD TREND-WATCHER NETWORK!\p"
+ .string "MC: Wassup?\n"
+ .string "We’ll keep it real with the latest on\l"
+ .string "what’s hip and happening in DEWFORD.\p"
+ .string "Our guest today is this old cat whose\n"
+ .string "claim to fame is being the authority\l"
+ .string "on all things in DEWFORD.\p"
+ .string "Old man: Glad to be here.\p"
+ .string "MC: Let’s cut to the chase, right on.\p"
+ .string "What’s your word on what’s groovin’\n"
+ .string "the good folks of DEWFORD?\p"
+ .string "Old man: {STR_VAR_1} {STR_VAR_2}.\p"
+ .string "MC: {STR_VAR_1} {STR_VAR_2},\n"
+ .string "you say?\p"
+ .string "Old man: No.\p"
+ .string "{STR_VAR_1} {STR_VAR_2} never\n"
+ .string "did get popular at all.\p"
+ .string "Would you like to hear about it?\p"
+ .string "MC: Uh, no. What we want to know is\n"
+ .string "what’s the in thing of the moment…$"
+
+gTVDewfordTrendWatcherNetworkText01:: @ 08284C55
+ .string "Old man: {STR_VAR_1} {STR_VAR_2}\n"
+ .string "was what {STR_VAR_3} from LITTLEROOT\l"
+ .string "taught me as being trendy…$"
+
+gTVDewfordTrendWatcherNetworkText02:: @ 08284C9B
+ .string "Old man: {STR_VAR_1} {STR_VAR_2}\n"
+ .string "was what {STR_VAR_3} from LITTLEROOT\l"
+ .string "taught me as being trendy…$"
+
+gTVDewfordTrendWatcherNetworkText03:: @ 08284CE1
+ .string "But it was utterly hopeless.\p"
+ .string "{STR_VAR_1} {STR_VAR_2} festival!\p"
+ .string "{STR_VAR_1} {STR_VAR_2} contest!\p"
+ .string "I tried teaching everyone the best\n"
+ .string "I could, but…\p"
+ .string "Perhaps the {STR_VAR_1} part just\n"
+ .string "wasn’t right…\p"
+ .string "MC: Uh, excuse me, compadre, I need\n"
+ .string "to hear about what’s in now…$"
+
+gTVDewfordTrendWatcherNetworkText04:: @ 08284DB6
+ .string "Old man: {STR_VAR_3}!\n"
+ .string "Please, tell me something bigger than\l"
+ .string "that {STR_VAR_1} {STR_VAR_2}!$"
+
+gTVDewfordTrendWatcherNetworkText05:: @ 08284DF5
+ .string "Old man: {STR_VAR_3}!\n"
+ .string "Please, tell me something bigger than\l"
+ .string "that {STR_VAR_1} {STR_VAR_2}!$"
+
+gTVDewfordTrendWatcherNetworkText06:: @ 08284E34
+ .string "MC: …Uh… So, there you have it,\n"
+ .string "all you trendy, hep cats out there!\p"
+ .string "{STR_VAR_1} {STR_VAR_2}…uh…\n"
+ .string "Didn’t get hip or happening in DEWFORD!\p"
+ .string "My time is up. Catch you on the fly!\p"
+ .string "Old man: {STR_VAR_1} {STR_VAR_2}!$"
+
+gTVHoennTreasureInvestigatorsText00:: @ 08284EDF
+ .string "HOENN TREASURE INVESTIGATORS!\p"
+ .string "Hi, gang!\n"
+ .string "Score any secret items lately?\p"
+ .string "As always, we’ll examine eyewitness\n"
+ .string "reports of secrets from all over!\p"
+ .string "Let’s start with a letter.\n"
+ .string "It says, “{STR_VAR_1} discovered!”$"
+
+gTVHoennTreasureInvestigatorsText01:: @ 08284FA1
+ .string "Wow, we’d better check this letter\n"
+ .string "out! Let me read it to you.\p"
+ .string "…Dear INVESTIGATORS,\n"
+ .string "I hope you are well.\p"
+ .string "I recently saw {STR_VAR_2} somewhere\n"
+ .string "around {STR_VAR_3}.\p"
+ .string "The TRAINER found the item\n"
+ .string "{STR_VAR_1}. It made me envious.\p"
+ .string "…Well, good going, {STR_VAR_2}!\p"
+ .string "Viewers, let that motivate you to\n"
+ .string "fire up your ITEMFINDERS and search!\p"
+ .string "I’ll be waiting for exciting news\n"
+ .string "from all of you!$"
+
+gTVHoennTreasureInvestigatorsText02:: @ 082850F5
+ .string "Wow, we’d better check this letter\n"
+ .string "out! Let me read it to you.\p"
+ .string "…Dear INVESTIGATORS,\n"
+ .string "I hope you are well.\p"
+ .string "I recently saw {STR_VAR_2} on a ferry.\p"
+ .string "The TRAINER found the item\n"
+ .string "{STR_VAR_1}. It made me envious.\p"
+ .string "…Well, good going, {STR_VAR_2}!\p"
+ .string "Viewers, let that motivate you to\n"
+ .string "fire up your ITEMFINDERS and search!\p"
+ .string "I’ll be waiting for exciting news\n"
+ .string "from all of you!$"
+
+gTVFindThatGamerText00:: @ 08285240
+ .string "FIND THAT GAMER!\p"
+ .string "Hey, all you gamers!\n"
+ .string "How’s your {STR_VAR_2} spinning?\p"
+ .string "Like always, we’ll cast our spotlight\n"
+ .string "on a rare TRAINER who’s visited the\l"
+ .string "GAME CORNER!\p"
+ .string "Today, our no. 1 gamer is…\n"
+ .string "{STR_VAR_1}!$"
+
+gTVFindThatGamerText01:: @ 082852F4
+ .string "{STR_VAR_1} played the {STR_VAR_2} game\n"
+ .string "and won a rare {STR_VAR_3} COINS.\p"
+ .string "“When {STR_VAR_1} comes, we need to\n"
+ .string "make sure we have enough COINS.”\p"
+ .string "That’s what the GAME CORNER clerks\n"
+ .string "mutter when our gamer is in play!\p"
+ .string "Viewers, it’s best to watch your COINS\n"
+ .string "like {STR_VAR_1} if you visit the GAME\l"
+ .string "CORNER and play the {STR_VAR_2} game.\p"
+ .string "This is live from the GAME CORNER--\n"
+ .string "where you can feel the excitement!\p"
+ .string "That’s all for today!$"
+
+gTVFindThatGamerText02:: @ 08285463
+ .string "{STR_VAR_1} played the {STR_VAR_2} game\n"
+ .string "and lost {STR_VAR_3} COINS.\p"
+ .string "“When {STR_VAR_1} comes, our COIN\n"
+ .string "sales seem to increase.”\p"
+ .string "That’s what the GAME CORNER clerks\n"
+ .string "say when our gamer is in play!$"
+
+gTVFindThatGamerText03:: @ 08285500
+ .string "Viewers, it’s best to watch your COINS\n"
+ .string "like {STR_VAR_1} if you visit the GAME\l"
+ .string "CORNER and play the {STR_VAR_2} game.\p"
+ .string "This is live from the GAME CORNER--\n"
+ .string "where you can feel the excitement!\p"
+ .string "That’s all for today!$"
+
+gTVBreakingNewsText00:: @ 082855BF
+ .string "BREAKING NEWS TV!$"
+
+gTVBreakingNewsText01:: @ 082855D1
+ .string "Rare {STR_VAR_2} caught by\n"
+ .string "{STR_VAR_1}!\p"
+ .string "We’re live from the vicinity of\n"
+ .string "{STR_VAR_3}!\p"
+ .string "{STR_VAR_1} successfully captured\n"
+ .string "a rare {STR_VAR_2} earlier here!$"
+
+gTVBreakingNewsText02:: @ 0828563C
+ .string "When {STR_VAR_1} encountered the rare\n"
+ .string "{STR_VAR_2}, the TRAINER sent out\l"
+ .string "the POKéMON {STR_VAR_3}.$"
+
+gTVBreakingNewsText03:: @ 08285682
+ .string "In the battle, the number of POKé\n"
+ .string "BALLS thrown by the TRAINER was {STR_VAR_1}.\p"
+ .string "Ultimately, the rare POKéMON was\n"
+ .string "caught by the {STR_VAR_2} used last.$"
+
+gTVBreakingNewsText04:: @ 08285705
+ .string "In that instant, {STR_VAR_2}\n"
+ .string "echoed with {STR_VAR_1}’s roars of\l"
+ .string "triumphant joy.\p"
+ .string "I must say I’m a little envious of\n"
+ .string "{STR_VAR_1}. I’d love to roar, too.\p"
+ .string "…That ends the live feed from\n"
+ .string "the happy scene!$"
+
+gTVBreakingNewsText05:: @ 082857B0
+ .string "{STR_VAR_1} fails to capture a rare\n"
+ .string "{STR_VAR_2}!\p"
+ .string "We’re live from the vicinity of\n"
+ .string "{STR_VAR_3}!\p"
+ .string "It was here that {STR_VAR_1} failed\n"
+ .string "to capture a rare {STR_VAR_2}!$"
+
+gTVBreakingNewsText06:: @ 08285824
+ .string "When {STR_VAR_1} encountered the rare\n"
+ .string "{STR_VAR_2}, the TRAINER sent out\l"
+ .string "the POKéMON {STR_VAR_3}.$"
+
+gTVBreakingNewsText07:: @ 0828586A
+ .string "The TRAINER made the {STR_VAR_2}\n"
+ .string "use the move {STR_VAR_1}.\p"
+ .string "Without meaning to, the TRAINER\n"
+ .string "made the rare POKéMON faint…$"
+
+gTVBreakingNewsText12:: @ 082858D0
+ .string "However, {STR_VAR_1} panicked at\n"
+ .string "the sight of the rare {STR_VAR_2}.\p"
+ .string "In confusion, the TRAINER ordered\n"
+ .string "{STR_VAR_3} to attack.\p"
+ .string "Without meaning to, the TRAINER\n"
+ .string "made the rare POKéMON faint.$"
+
+gTVBreakingNewsText08:: @ 0828596F
+ .string "In that instant, {STR_VAR_2}\n"
+ .string "echoed with {STR_VAR_1}’s shrieks of\l"
+ .string "frustration…$"
+
+gTVBreakingNewsText09:: @ 082859AC
+ .string "However, {STR_VAR_1} seemed to run\n"
+ .string "out of POKé BALLS.\p"
+ .string "The TRAINER had to break off\n"
+ .string "the battle with the rare {STR_VAR_2}.\p"
+ .string "In that instant, {STR_VAR_3}\n"
+ .string "echoed with {STR_VAR_1}’s shrieks of\l"
+ .string "frustration…$"
+
+gTVBreakingNewsText10:: @ 08285A50
+ .string "However, the {STR_VAR_2} fled without\n"
+ .string "warning.\p"
+ .string "In that instant, {STR_VAR_3}\n"
+ .string "echoed with {STR_VAR_1}’s shrieks of\l"
+ .string "frustration…$"
+
+gTVBreakingNewsText11:: @ 08285AB3
+ .string "I must say I feel for {STR_VAR_1}.\n"
+ .string "Why, it makes me want to shriek, too.\p"
+ .string "…That ends the live feed from\n"
+ .string "the melancholy scene!$"
+
+gTVSecretBaseVisitText00:: @ 08285B27
+ .string "Hello, folks!\n"
+ .string "It’s time again for\l"
+ .string "a SECRET BASE VISIT.\p"
+ .string "Today, we visit the SECRET BASE\n"
+ .string "of {STR_VAR_1}.\p"
+ .string "How has {STR_VAR_1} personalized\n"
+ .string "the SECRET BASE?\p"
+ .string "Let’s find out!\n"
+ .string "… … … … … …$"
+
+gTVSecretBaseVisitText01:: @ 08285BCA
+ .string "Oh!\n"
+ .string "How marvelous!\p"
+ .string "This {STR_VAR_2}…\n"
+ .string "It’s not what one would expect to\l"
+ .string "find here!$"
+
+gTVSecretBaseVisitText02:: @ 08285C13
+ .string "Oh!\n"
+ .string "How remarkable!\p"
+ .string "There isn’t a single piece\n"
+ .string "of furniture or interior goods!\p"
+ .string "Mere mortals couldn’t hope to\n"
+ .string "imitate this bold statement!\p"
+ .string "It’s simple, but it bursts, yes,\n"
+ .string "bursts with wildness!\p"
+ .string "My hat’s off to you, {STR_VAR_1}.\n"
+ .string "It had to be you!$"
+
+gTVSecretBaseVisitText03:: @ 08285CFF
+ .string "Oh! I see!\n"
+ .string "With perfect clarity, I see it!\p"
+ .string "This {STR_VAR_2} being here…\n"
+ .string "It sends an effective message!$"
+
+gTVSecretBaseVisitText04:: @ 08285D5D
+ .string "Oh! I see!\n"
+ .string "With perfect clarity, I see it!\p"
+ .string "This space is kept deliberately\n"
+ .string "clear of interior items!\p"
+ .string "It sends an effective message!$"
+
+gTVSecretBaseVisitText05:: @ 08285DE0
+ .string "Wheeew!\p"
+ .string "The pairing of the {STR_VAR_2}\n"
+ .string "with the {STR_VAR_3}!\p"
+ .string "It’s a dream combination if there\n"
+ .string "ever was one!$"
+
+gTVSecretBaseVisitText06:: @ 08285E3B
+ .string "Wheeew!\p"
+ .string "The placement of this {STR_VAR_2}\n"
+ .string "right here…\p"
+ .string "It has a presence that fills\n"
+ .string "the entire SECRET BASE!$"
+
+gTVSecretBaseVisitText07:: @ 08285E9D
+ .string "Wheeew!\p"
+ .string "There’s nothing in place here.\p"
+ .string "This empty space has an effect on\n"
+ .string "the entire SECRET BASE.$"
+
+gTVSecretBaseVisitText08:: @ 08285EFE
+ .string "Oh!\n"
+ .string "Here comes {STR_VAR_1}!\l"
+ .string "Let’s challenge the TRAINER!\p"
+ .string "… … … … … …\n"
+ .string "… … … … … …$"
+
+gTVSecretBaseVisitText09:: @ 08285F46
+ .string "Sigh…\n"
+ .string "I’ve got to hand it to {STR_VAR_1}.\p"
+ .string "The TRAINER’s POKéMON were truly\n"
+ .string "worthy of the CHAMPION’s title.\p"
+ .string "They gave ample proof of {STR_VAR_1}’s\n"
+ .string "toughness as a TRAINER.\p"
+ .string "That the {STR_VAR_2} knew the move\n"
+ .string "{STR_VAR_3}…\p"
+ .string "It shows you what sort of a TRAINER\n"
+ .string "{STR_VAR_1} is.\p"
+ .string "Certainly, it was quite a lesson!$"
+
+gTVSecretBaseVisitText10:: @ 08286049
+ .string "Aiyeeh!\n"
+ .string "I’ve got to hand it to {STR_VAR_1}.\p"
+ .string "The TRAINER’s POKéMON were\n"
+ .string "monstrously tough!\p"
+ .string "They gave ample proof of {STR_VAR_1}’s\n"
+ .string "tenacity as a TRAINER.\p"
+ .string "That the {STR_VAR_2} knew the move\n"
+ .string "{STR_VAR_3}…\p"
+ .string "It shows you what sort of a TRAINER\n"
+ .string "{STR_VAR_1} is.\p"
+ .string "Certainly, it was quite a lesson!$"
+
+gTVSecretBaseVisitText11:: @ 0828613A
+ .string "Wheeew!\n"
+ .string "I’ve got to hand it to {STR_VAR_1}.\p"
+ .string "The TRAINER’s POKéMON were clearly\n"
+ .string "raised in a well-balanced manner.\p"
+ .string "They gave ample proof of {STR_VAR_1}’s\n"
+ .string "thoughtfulness as a TRAINER.\p"
+ .string "That the {STR_VAR_2} knew the move\n"
+ .string "{STR_VAR_3}…\p"
+ .string "It shows you what sort of a TRAINER\n"
+ .string "{STR_VAR_1} is.\p"
+ .string "Certainly, it was quite a lesson!$"
+
+gTVSecretBaseVisitText12:: @ 08286248
+ .string "Well, well!\n"
+ .string "I’ve got to hand it to {STR_VAR_1}.\p"
+ .string "The TRAINER’s POKéMON showed\n"
+ .string "great promise for future growth.\p"
+ .string "They represented {STR_VAR_1}’s\n"
+ .string "hopes and dreams.\p"
+ .string "That the {STR_VAR_2} knew the move\n"
+ .string "{STR_VAR_3}…\p"
+ .string "It shows you what sort of a TRAINER\n"
+ .string "{STR_VAR_1} is.\p"
+ .string "Certainly, it was quite a lesson!$"
+
+gTVSecretBaseVisitText13:: @ 08286340
+ .string "I must say, what a superb SECRET BASE\n"
+ .string "it was!\p"
+ .string "Viewers, if you have the chance,\n"
+ .string "do visit {STR_VAR_1}’s SECRET BASE.\p"
+ .string "Until next time, I bid you adieu!$"
+
+gTVPokemonLotteryWinnerFlashReportText00:: @ 082863CC
+ .string "It’s exciting!\n"
+ .string "It’s dramatic!\p"
+ .string "It’s the POKéMON LOTTERY\n"
+ .string "WINNER FLASH REPORT!\p"
+ .string "Hello! We’re coming at you live from\n"
+ .string "the POKéMON LOTTERY CORNER on\l"
+ .string "the ground floor of the LILYCOVE\l"
+ .string "DEPARTMENT STORE!\p"
+ .string "Like it always happens, another\n"
+ .string "lucky TRAINER appeared today!\p"
+ .string "That TRAINER’s name…\n"
+ .string "{STR_VAR_1}!\p"
+ .string "{STR_VAR_1} won the {STR_VAR_2} prize\n"
+ .string "and took home the {STR_VAR_3}!\p"
+ .string "{STR_VAR_1}!\n"
+ .string "Congratulations!\p"
+ .string "Viewers, don’t just watch,\n"
+ .string "get in on the action!\p"
+ .string "All of us at the LILYCOVE DEPARTMENT\n"
+ .string "STORE look forward to your next visit!\p"
+ .string "This has been a live broadcast from\n"
+ .string "the LILYCOVE DEPARTMENT STORE,\l"
+ .string "offering you the greatest selection\l"
+ .string "in all HOENN!$"
+
+gTVThePokemonBattleSeminarText00:: @ 08286616
+ .string "THE POKéMON BATTLE SEMINAR!\p"
+ .string "We examine battles to see what\n"
+ .string "lessons we may learn from others.\p"
+ .string "Today’s case study is on {STR_VAR_1}’s\n"
+ .string "battle.\p"
+ .string "{STR_VAR_1}’s {STR_VAR_2} was\n"
+ .string "battling one {STR_VAR_3}…$"
+
+gTVThePokemonBattleSeminarText01:: @ 082866B6
+ .string "And it used the move {STR_VAR_3}\n"
+ .string "on the {STR_VAR_2}…\p"
+ .string "Hmm… {STR_VAR_1}!\n"
+ .string "That’s the wrong thing to do!$"
+
+gTVThePokemonBattleSeminarText02:: @ 08286700
+ .string "In addition to the doomed move,\n"
+ .string "the TRAINER’s {STR_VAR_1} also knew$"
+
+gTVThePokemonBattleSeminarText03:: @ 0828673B
+ .string "the moves {STR_VAR_1}, {STR_VAR_2},\n"
+ .string "and {STR_VAR_3}.$"
+
+gTVThePokemonBattleSeminarText04:: @ 08286755
+ .string "the moves {STR_VAR_1} and\n"
+ .string "{STR_VAR_2}.$"
+
+gTVThePokemonBattleSeminarText05:: @ 0828676A
+ .string "the move {STR_VAR_2}.$"
+
+gTVThePokemonBattleSeminarText06:: @ 08286777
+ .string "So, in this situation, what should\n"
+ .string "the TRAINER have used?\p"
+ .string "… … … … … …\n"
+ .string "The move {STR_VAR_1}!\p"
+ .string "The move {STR_VAR_1} would have been\n"
+ .string "absolutely better than {STR_VAR_2}.\p"
+ .string "Viewers, I urge you to learn from this\n"
+ .string "case and battle with intelligence!\p"
+ .string "Until next time, farewell!$"
+
+gTVTrainerFanClubText00:: @ 08286866
+ .string "All together now!\n"
+ .string "TRAINER FAN CLUB!\p"
+ .string "MC: How’s everyone groovin’?\n"
+ .string "Today, we’ve rounded up the fans of\l"
+ .string "the hyper-popular TRAINER {STR_VAR_1}!\p"
+ .string "FANS: Wrooooooaaaaah!\p"
+ .string "FANS: {STR_VAR_1}!\p"
+ .string "MC: Everyone!\n"
+ .string "How do you like {STR_VAR_1}?!\p"
+ .string "FANS: We love {STR_VAR_1}!\p"
+ .string "MC: What do you love about\n"
+ .string "{STR_VAR_1}?!$"
+
+gTVTrainerFanClubText01:: @ 0828695E
+ .string "FANS: Their cool way of throwing\n"
+ .string "POKé BALLS!$"
+
+gTVTrainerFanClubText02:: @ 0828698B
+ .string "FANS: Their adorable way of running!$"
+
+gTVTrainerFanClubText03:: @ 082869B0
+ .string "FANS: How the TRAINER turns tough\n"
+ .string "when the going gets tough!$"
+
+gTVTrainerFanClubText04:: @ 082869ED
+ .string "FANS: The TRAINER’s knowledge of\n"
+ .string "POKéMON!$"
+
+gTVTrainerFanClubText05:: @ 08286A17
+ .string "FANS: The TRAINER’s kindness toward\n"
+ .string "all POKéMON!$"
+
+gTVTrainerFanClubText06:: @ 08286A48
+ .string "FANS: The TRAINER’s amazing\n"
+ .string "BIKE-riding techniques!$"
+
+gTVTrainerFanClubText07:: @ 08286A7C
+ .string "FANS: The TRAINER’s impressive\n"
+ .string "item-buying style!$"
+
+gTVTrainerFanClubText08:: @ 08286AAE
+ .string "FANS: The TRAINER’s charming way\n"
+ .string "of nicknaming POKéMON!$"
+
+gTVTrainerFanClubText09:: @ 08286AE6
+ .string "FANS: The TRAINER’s nifty style of\n"
+ .string "decorating a SECRET BASE!$"
+
+gTVTrainerFanClubText10:: @ 08286B23
+ .string "FANS: The TRAINER’s bold ways of\n"
+ .string "using TMs!$"
+
+gTVTrainerFanClubText11:: @ 08286B4F
+ .string "MC: As you’ve just seen, {STR_VAR_1}\n"
+ .string "is hot! Like, too hot to touch, yow!\p"
+ .string "Among {STR_VAR_1}’s FANS\n"
+ .string "there’s a special slogan!\p"
+ .string "MC: When I say {STR_VAR_1},\n"
+ .string "you say…\p"
+ .string "FANS: {STR_VAR_2}!\p"
+ .string "FANS: {STR_VAR_3}!\p"
+ .string "FANS: {STR_VAR_2}!\p"
+ .string "FANS: {STR_VAR_3}!\p"
+ .string "MC: That’s right, when someone says,\n"
+ .string "“{STR_VAR_1}”…\p"
+ .string "Come back with, “{STR_VAR_2}\n"
+ .string "{STR_VAR_3}!”\p"
+ .string "That has such a unique ring to it!\n"
+ .string "I can see why people become FANS\l"
+ .string "of {STR_VAR_1}!\p"
+ .string "Okay, you, in front of the TV, join us!\n"
+ .string "All together now!\p"
+ .string "MC: When I say {STR_VAR_1},\n"
+ .string "you say…\p"
+ .string "FANS: {STR_VAR_2}!\p"
+ .string "FANS: {STR_VAR_3}!\p"
+ .string "FANS: {STR_VAR_2}!\p"
+ .string "FANS: {STR_VAR_3}!\p"
+ .string "MC: Thanks for joining us, all you\n"
+ .string "wild FANS of {STR_VAR_1}!\l"
+ .string "That’s the show! See you again!\p"
+ .string "MC: When I say {STR_VAR_1},\n"
+ .string "you say…\p"
+ .string "FANS: {STR_VAR_2}!\p"
+ .string "FANS: {STR_VAR_3}!$"
+
+gTVCutiesText00:: @ 08286D8F
+ .string "SPOT THE CUTIES!\n"
+ .string "POKéMON IN RIBBONS!\p"
+ .string "Hello, my sweet viewers!\p"
+ .string "I just know you’ll agree, but a POKéMON\n"
+ .string "wearing RIBBONS is simply divine!\p"
+ .string "Today, I want to share with you\n"
+ .string "a lovely POKéMON I spotted while\l"
+ .string "out on a stroll in town.\p"
+ .string "Today’s featured pretty POKéMON\n"
+ .string "is {STR_VAR_1}’s {STR_VAR_2}.$"
+
+gTVCutiesText01:: @ 08286E9D
+ .string "The number of RIBBONS that\n"
+ .string "{STR_VAR_2} wears is {STR_VAR_3}.\p"
+ .string "It says a lot about how much\n"
+ .string "{STR_VAR_1} adores the POKéMON.$"
+
+gTVCutiesText02:: @ 08286EFC
+ .string "{STR_VAR_2} wears an amazing\n"
+ .string "{STR_VAR_3} RIBBONS!\p"
+ .string "It speaks volumes about {STR_VAR_1}’s\n"
+ .string "commitment to the POKéMON!$"
+
+gTVCutiesText03:: @ 08286F54
+ .string "{STR_VAR_2} wears an incredible\n"
+ .string "{STR_VAR_3} RIBBONS!\p"
+ .string "It shows you {STR_VAR_1}’s total\n"
+ .string "dedication as a collector!$"
+
+gTVCutiesText04:: @ 08286FAA
+ .string "Let us take a closer look at the many\n"
+ .string "RIBBONS worn by {STR_VAR_2}.$"
+
+gTVCutiesText05:: @ 08286FE4
+ .string "The CHAMPION RIBBON is especially\n"
+ .string "fetching.\p"
+ .string "{STR_VAR_2} received it upon entering\n"
+ .string "the HALL OF FAME.\p"
+ .string "It verily draws out the bravery\n"
+ .string "of {STR_VAR_2}.\p"
+ .string "{STR_VAR_2} and the CHAMP RIBBON!\n"
+ .string "The combination is super effective!$"
+
+gTVCutiesText06:: @ 082870A3
+ .string "The COOL RIBBON is especially\n"
+ .string "fetching.\p"
+ .string "{STR_VAR_2} received it for winning\n"
+ .string "a COOL CONTEST.\p"
+ .string "It verily draws out the coolness\n"
+ .string "of {STR_VAR_2}.\p"
+ .string "{STR_VAR_2} and the COOL RIBBON!\n"
+ .string "The combination is super effective!$"
+
+gTVCutiesText07:: @ 0828715A
+ .string "The BEAUTY RIBBON is especially\n"
+ .string "fetching.\p"
+ .string "{STR_VAR_2} received it for winning\n"
+ .string "a BEAUTY CONTEST.\p"
+ .string "It verily draws out the beauty\n"
+ .string "of {STR_VAR_2}.\p"
+ .string "{STR_VAR_2} and the BEAUTY RIBBON!\n"
+ .string "The combination is super effective!$"
+
+gTVCutiesText08:: @ 08287215
+ .string "The CUTE RIBBON is especially\n"
+ .string "fetching.\p"
+ .string "{STR_VAR_2} received it for winning\n"
+ .string "a CUTE CONTEST.\p"
+ .string "It verily draws out the cuteness\n"
+ .string "of {STR_VAR_2}.\p"
+ .string "{STR_VAR_2} and the CUTE RIBBON!\n"
+ .string "The combination is super effective!$"
+
+gTVCutiesText09:: @ 082872CC
+ .string "The SMART RIBBON is especially\n"
+ .string "fetching.\p"
+ .string "{STR_VAR_2} received it for winning\n"
+ .string "a SMART CONTEST.\p"
+ .string "It verily draws out the smartness\n"
+ .string "of {STR_VAR_2}.\p"
+ .string "{STR_VAR_2} and the SMART RIBBON!\n"
+ .string "The combination is super effective!$"
+
+gTVCutiesText10:: @ 08287387
+ .string "The TOUGH RIBBON is especially\n"
+ .string "fetching.\p"
+ .string "{STR_VAR_2} received it for winning\n"
+ .string "a TOUGH CONTEST.\p"
+ .string "It verily draws out the toughness\n"
+ .string "of {STR_VAR_2}.\p"
+ .string "{STR_VAR_2} and the TOUGH RIBBON!\n"
+ .string "The combination is super effective!$"
+
+gTVCutiesText11:: @ 08287442
+ .string "The WINNING RIBBON is especially\n"
+ .string "fetching.\p"
+ .string "{STR_VAR_2} received it for its feats\n"
+ .string "at the BATTLE TOWER.\p"
+ .string "It verily draws out the mightiness\n"
+ .string "of {STR_VAR_2}.\p"
+ .string "{STR_VAR_2} and the WINNING RIBBON!\n"
+ .string "The combination is super effective!$"
+
+gTVCutiesText12:: @ 08287508
+ .string "The VICTORY RIBBON is especially\n"
+ .string "fetching.\p"
+ .string "{STR_VAR_2} received it for its feats\n"
+ .string "at the BATTLE TOWER.\p"
+ .string "It verily draws out the incredible\n"
+ .string "mightiness of {STR_VAR_2}.\p"
+ .string "{STR_VAR_2} and the VICTORY RIBBON!\n"
+ .string "The combination is super effective!$"
+
+gTVCutiesText13:: @ 082875D9
+ .string "The ARTIST RIBBON is especially\n"
+ .string "fetching.\p"
+ .string "{STR_VAR_2} received it for being\n"
+ .string "the model for an artist.\p"
+ .string "It verily draws out the pop-star charm\n"
+ .string "of {STR_VAR_2}.\p"
+ .string "{STR_VAR_2} and the ARTIST RIBBON!\n"
+ .string "The combination is super effective!$"
+
+gTVCutiesText14:: @ 082876A1
+ .string "The Hard Worker RIBBON is\n"
+ .string "especially fetching.\p"
+ .string "{STR_VAR_2} received it for being\n"
+ .string "an especially dedicated worker.\p"
+ .string "It verily draws out the determination\n"
+ .string "of {STR_VAR_2}.\p"
+ .string "{STR_VAR_2} and the Hard Worker RIBBON!\n"
+ .string "The combination is super effective!$"
+
+gTVCutiesText15:: @ 08287779
+ .string "…Sigh…\p"
+ .string "RIBBONS and POKéMON…\n"
+ .string "They go so wonderfully together!\p"
+ .string "Before I swoon,\n"
+ .string "I bid you all farewell!$"
+
+gTVPokemonNewsBattleFrontierText00:: @ 082877DE
+ .string "Greetings!\n"
+ .string "It’s time for POKéMON NEWS.\p"
+ .string "We’ve got some uplifting news from\n"
+ .string "the BATTLE FRONTIER.$"
+
+gTVPokemonNewsBattleFrontierText01:: @ 0828783D
+ .string "The TRAINER {STR_VAR_1} set a new\n"
+ .string "{STR_VAR_2}-win-streak record while on\l"
+ .string "the BATTLE TOWER’s SINGLE BATTLE\l"
+ .string "ROOM challenge.\p"
+ .string "Here’s to {STR_VAR_1}!$"
+
+gTVPokemonNewsBattleFrontierText02:: @ 082878B3
+ .string "The TRAINER {STR_VAR_1} set a new\n"
+ .string "{STR_VAR_2}-win-streak record while on\l"
+ .string "the BATTLE TOWER’s DOUBLE BATTLE\l"
+ .string "ROOM challenge.\p"
+ .string "Here’s to {STR_VAR_1}!$"
+
+gTVPokemonNewsBattleFrontierText03:: @ 08287929
+ .string "The TRAINER {STR_VAR_1} set a new\n"
+ .string "{STR_VAR_2}-win-streak record while on\l"
+ .string "the BATTLE TOWER’s MULTI BATTLE\l"
+ .string "ROOM challenge.\p"
+ .string "Here’s to {STR_VAR_1}!$"
+
+gTVPokemonNewsBattleFrontierText04:: @ 0828799E
+ .string "The TRAINER {STR_VAR_1} set a new\n"
+ .string "{STR_VAR_2}-win-streak record while on\l"
+ .string "the BATTLE TOWER’s LINK MULTI BATTLE\l"
+ .string "ROOM challenge.\p"
+ .string "Here’s to {STR_VAR_1}!$"
+
+gTVPokemonNewsBattleFrontierText05:: @ 08287A18
+ .string "The TRAINER {STR_VAR_1} set a new\n"
+ .string "{STR_VAR_2}-championship-streak record\l"
+ .string "competing in the BATTLE DOME’s\l"
+ .string "SINGLE BATTLE Tournaments.\p"
+ .string "Here’s to {STR_VAR_1}!$"
+
+gTVPokemonNewsBattleFrontierText06:: @ 08287A97
+ .string "The TRAINER {STR_VAR_1} set a new\n"
+ .string "{STR_VAR_2}-championship-streak record\l"
+ .string "competing in the BATTLE DOME’s\l"
+ .string "DOUBLE BATTLE Tournaments.\p"
+ .string "Here’s to {STR_VAR_1}!$"
+
+gTVPokemonNewsBattleFrontierText07:: @ 08287B16
+ .string "The TRAINER {STR_VAR_1} set a new\n"
+ .string "{STR_VAR_2}-win-streak record while on\l"
+ .string "the BATTLE FACTORY’s Battle\l"
+ .string "Swap Single challenge.\p"
+ .string "Here’s to {STR_VAR_1}!$"
+
+gTVPokemonNewsBattleFrontierText08:: @ 08287B8E
+ .string "The TRAINER {STR_VAR_1} set a new\n"
+ .string "{STR_VAR_2}-win-streak record while on\l"
+ .string "the BATTLE FACTORY’s Battle\l"
+ .string "Swap Double challenge.\p"
+ .string "Here’s to {STR_VAR_1}!$"
+
+gTVPokemonNewsBattleFrontierText09:: @ 08287C06
+ .string "The TRAINER {STR_VAR_1} set a new\n"
+ .string "record of clearing {STR_VAR_2} rooms\l"
+ .string "while on the BATTLE PIKE’s Battle\l"
+ .string "Choice challenge.\p"
+ .string "Here’s to {STR_VAR_1}!$"
+
+gTVPokemonNewsBattleFrontierText10:: @ 08287C7D
+ .string "The TRAINER {STR_VAR_1} set a new\n"
+ .string "{STR_VAR_2}-win-streak record while\l"
+ .string "competing in the BATTLE ARENA’s\l"
+ .string "Set KO Tournaments.\p"
+ .string "Here’s to {STR_VAR_1}!$"
+
+gTVPokemonNewsBattleFrontierText11:: @ 08287CF3
+ .string "The TRAINER {STR_VAR_1} set a new\n"
+ .string "{STR_VAR_2}-win-streak record while on\l"
+ .string "the BATTLE PALACE’s SINGLE BATTLE\l"
+ .string "HALL challenge.\p"
+ .string "Here’s to {STR_VAR_1}!$"
+
+gTVPokemonNewsBattleFrontierText12:: @ 08287D6A
+ .string "The TRAINER {STR_VAR_1} set a new\n"
+ .string "{STR_VAR_2}-win-streak record while on\l"
+ .string "the BATTLE PALACE’s DOUBLE BATTLE\l"
+ .string "HALL challenge.\p"
+ .string "Here’s to {STR_VAR_1}!$"
+
+gTVPokemonNewsBattleFrontierText13:: @ 08287DE1
+ .string "The TRAINER {STR_VAR_1} set a new\n"
+ .string "record of clearing {STR_VAR_2} floors\l"
+ .string "while on the BATTLE PYRAMID’s\l"
+ .string "Battle Quest challenge.\p"
+ .string "Here’s to {STR_VAR_1}!$"
+
+gTVPokemonNewsBattleFrontierText14:: @ 08287E5B
+ .string "And to the three POKéMON, {STR_VAR_1},\n"
+ .string "{STR_VAR_2}, and {STR_VAR_3}!\p"
+ .string "Congratulations for your\n"
+ .string "record-breaking performance!$"
+
+gTVPokemonNewsBattleFrontierText15:: @ 08287EBB
+ .string "And to the two POKéMON, {STR_VAR_1}\n"
+ .string "and {STR_VAR_2}!\p"
+ .string "Congratulations for your\n"
+ .string "record-breaking performance!$"
+
+gTVPokemonNewsBattleFrontierText16:: @ 08287F14
+ .string "And to the four POKéMON: {STR_VAR_1}!\p"
+ .string "{STR_VAR_2}!\p"
+ .string "{STR_VAR_3}!$"
+
+gTVPokemonNewsBattleFrontierText17:: @ 08287F39
+ .string "And {STR_VAR_1}!\p"
+ .string "Congratulations for your\n"
+ .string "record-breaking performance!$"
+
+gTVPokemonNewsBattleFrontierText18:: @ 08287F77
+ .string "Let’s hope for more record-setting\n"
+ .string "feats from {STR_VAR_1} and the loyal\l"
+ .string "POKéMON!\p"
+ .string "That’s the news on POKéMON NEWS!$"
+
+gTVWhatsNo1InHoennTodayText00:: @ 08287FE0
+ .string "WHAT’S NO. 1 IN HOENN TODAY?\n"
+ .string "Yes, it’s that time again!\p"
+ .string "Hello, viewers! Are you giving your\n"
+ .string "best at whatever you do?\p"
+ .string "Let’s have a look at the TRAINER\n"
+ .string "who did the very best today!\p"
+ .string "Today’s no. 1 TRAINER is none other\n"
+ .string "than {STR_VAR_1}!$"
+
+gTVWhatsNo1InHoennTodayText01:: @ 082880C0
+ .string "In one day, {STR_VAR_1} spun the SLOTS\n"
+ .string "at the GAME CORNER {STR_VAR_2} times.\p"
+ .string "While playing, {STR_VAR_1} was heard\n"
+ .string "murmuring, “For me, the reels don’t\l"
+ .string "even move…”\l"
+ .string "Isn’t that interesting?$"
+
+gTVWhatsNo1InHoennTodayText02:: @ 0828815F
+ .string "In one day, {STR_VAR_1} played\n"
+ .string "the ROULETTE game at the GAME\l"
+ .string "CORNER {STR_VAR_2} times.\p"
+ .string "While playing, {STR_VAR_1} shouted,\n"
+ .string "“Let the balls decide!”\p"
+ .string "The TRAINER’s eyes were focused and\n"
+ .string "the face showed concentration.$"
+
+gTVWhatsNo1InHoennTodayText03:: @ 0828821A
+ .string "In one day, {STR_VAR_1} battled\n"
+ .string "wild POKéMON {STR_VAR_2} times!\p"
+ .string "Apparently, {STR_VAR_1}’s POKéMON\n"
+ .string "have grown incomparably stronger.\p"
+ .string "They appear eager to battle anywhere,\n"
+ .string "anytime, and anyhow!$"
+
+gTVWhatsNo1InHoennTodayText04:: @ 082882BE
+ .string "In just one day, {STR_VAR_1} spun\n"
+ .string "the BERRY BLENDER {STR_VAR_2} times!\p"
+ .string "Toward the end, even {STR_VAR_1}\n"
+ .string "seemed to get dizzy.\p"
+ .string "The TRAINER appeared to totter\n"
+ .string "around like a SPINDA!$"
+
+gTVWhatsNo1InHoennTodayText05:: @ 08288355
+ .string "In just one day, {STR_VAR_1} planted\n"
+ .string "{STR_VAR_2} BERRIES!\p"
+ .string "As a result, {STR_VAR_1}’s clothes\n"
+ .string "became filthy with dirt.\p"
+ .string "Where the TRAINER planted, countless\n"
+ .string "flowers have burst into bloom.\p"
+ .string "The flowers are said to soothe\n"
+ .string "the emotions of people.$"
+
+gTVWhatsNo1InHoennTodayText06:: @ 0828842B
+ .string "In just one day, {STR_VAR_1} picked\n"
+ .string "{STR_VAR_2} BERRIES!\p"
+ .string "{STR_VAR_1}’s BAG became so filled\n"
+ .string "with BERRIES, the TRAINER had trouble\l"
+ .string "walking afterward!$"
+
+gTVWhatsNo1InHoennTodayText07:: @ 082884A5
+ .string "In just one day, {STR_VAR_1} obtained\n"
+ .string "{STR_VAR_2} Battle Points!\p"
+ .string "{STR_VAR_1} was later seen wrestling\n"
+ .string "with the choice of exchanging\l"
+ .string "the Battle Points for a cool item or\l"
+ .string "a nifty interior decoration.\p"
+ .string "The TRAINER reportedly was grinning\n"
+ .string "while mulling options.$"
+
+gTVWhatsNo1InHoennTodayText08:: @ 0828858B
+ .string "Well, isn’t that something!\p"
+ .string "{STR_VAR_1}!\n"
+ .string "You’re today’s no. 1 TRAINER!\p"
+ .string "Viewers, take heart from {STR_VAR_1}!\n"
+ .string "You, too, can be no. 1 every day!$"
+
+gTVSecretBaseSecretsText00:: @ 08288608
+ .string "SECRET BASE SECRETS!\p"
+ .string "What do TRAINERS do in the secrecy\n"
+ .string "of SECRET BASES?\p"
+ .string "Today, we investigate {STR_VAR_1}’s\n"
+ .string "SECRET BASE.\p"
+ .string "Oh? It looks like {STR_VAR_2} has come\n"
+ .string "for a visit.\p"
+ .string "Let’s have a peek!\p"
+ .string "What will {STR_VAR_2} do?$"
+
+gTVSecretBaseSecretsText01:: @ 082886C8
+ .string "What will {STR_VAR_2} do next?$"
+
+gTVSecretBaseSecretsText02:: @ 082886DE
+ .string "And now, what will {STR_VAR_2} do?$"
+
+gTVSecretBaseSecretsText03:: @ 082886F8
+ .string "In the end, {STR_VAR_2} took {STR_VAR_3} steps\n"
+ .string "in {STR_VAR_1}’s SECRET BASE before\l"
+ .string "leaving.$"
+
+gTVSecretBaseSecretsText04:: @ 08288739
+ .string "Hmm…\p"
+ .string "It appears as if {STR_VAR_1}’s SECRET\n"
+ .string "BASE failed to interest {STR_VAR_2}…$"
+
+gTVSecretBaseSecretsText05:: @ 08288777
+ .string "{STR_VAR_2} appears to have enjoyed\n"
+ .string "{STR_VAR_1}’s SECRET BASE thoroughly.$"
+
+gTVSecretBaseSecretsText06:: @ 082887AF
+ .string "{STR_VAR_2} appears to have become\n"
+ .string "a huge fan of {STR_VAR_1}’s\l"
+ .string "SECRET BASE.$"
+
+gTVSecretBaseSecretsText07:: @ 082887E9
+ .string "Viewers may want to check out\n"
+ .string "{STR_VAR_1}’s SECRET BASE, too.\p"
+ .string "Tune in next time as we visit another\n"
+ .string "SECRET BASE! Thanks for joining us!$"
+
+gTVSecretBaseSecretsText08:: @ 08288868
+ .string "The visitor has stopped!\p"
+ .string "The visitor isn’t moving at all!\p"
+ .string "Was {STR_VAR_1}’s SECRET BASE\n"
+ .string "that unimpressive?$"
+
+gTVSecretBaseSecretsText09:: @ 082888CA
+ .string "The visitor has stopped!\p"
+ .string "The visitor isn’t moving at all!\p"
+ .string "Is it fatigue?\n"
+ .string "Has the visitor grown weary?$"
+
+gTVSecretBaseSecretsText10:: @ 08288930
+ .string "The visitor sat down on a chair!\n"
+ .string "The visitor is seated!\p"
+ .string "Look at that look of delight!\p"
+ .string "That chair must be very comfortable\n"
+ .string "to get that response!$"
+
+gTVSecretBaseSecretsText11:: @ 082889C0
+ .string "The visitor charged at a balloon!\p"
+ .string "It burst!\n"
+ .string "Oh, my goodness, it popped!\p"
+ .string "The visitor appears startled by\n"
+ .string "the sudden noise!$"
+
+gTVSecretBaseSecretsText12:: @ 08288A3A
+ .string "The visitor entered a TENT!\p"
+ .string "The visitor is running around!\p"
+ .string "Oh, my, the visitor is frolicking!\p"
+ .string "The visitor appears surprised by\n"
+ .string "the TENT’s size!$"
+
+gTVSecretBaseSecretsText13:: @ 08288ACA
+ .string "The visitor is examining\n"
+ .string "a potted plant!\p"
+ .string "The visitor has surprisingly\n"
+ .string "mature taste!$"
+
+gTVSecretBaseSecretsText14:: @ 08288B1E
+ .string "The visitor is examining\n"
+ .string "a GOLD SHIELD!\p"
+ .string "The visitor’s eyes appear to be\n"
+ .string "lit up with wonder!$"
+
+gTVSecretBaseSecretsText15:: @ 08288B7A
+ .string "The visitor is examining\n"
+ .string "a SILVER SHIELD!\p"
+ .string "The visitor appears to be wide-eyed!$"
+
+gTVSecretBaseSecretsText16:: @ 08288BC9
+ .string "The visitor is examining\n"
+ .string "a GLASS ORNAMENT!\p"
+ .string "Oh, no!\p"
+ .string "The visitor is touching it!\p"
+ .string "It’s getting covered with\n"
+ .string "fingerprints…$"
+
+gTVSecretBaseSecretsText17:: @ 08288C40
+ .string "The visitor is watching television!\p"
+ .string "Looks like we have a big fan of TV!$"
+
+gTVSecretBaseSecretsText18:: @ 08288C88
+ .string "The visitor stomped on a MUD BALL!\p"
+ .string "The visitor looks delighted!$"
+
+gTVSecretBaseSecretsText19:: @ 08288CC8
+ .string "…Oh?\p"
+ .string "The visitor is reaching for their own\n"
+ .string "BAG and rummaging about in it!\p"
+ .string "The visitor pulled out\n"
+ .string "one {STR_VAR_2}!\p"
+ .string "Look at the visitor smile while\n"
+ .string "holding up the {STR_VAR_2}!\p"
+ .string "It’s like a TV commercial!$"
+
+gTVSecretBaseSecretsText20:: @ 08288D7F
+ .string "The visitor grabs a cushion and…$"
+
+gTVSecretBaseSecretsText21:: @ 08288DA0
+ .string "…begins hitting it!\p"
+ .string "Is the visitor under a lot of stress?$"
+
+gTVSecretBaseSecretsText22:: @ 08288DDA
+ .string "…hugs it tight!\p"
+ .string "Could the visitor be feeling happy\n"
+ .string "about something?$"
+
+gTVSecretBaseSecretsText23:: @ 08288E1E
+ .string "The visitor is chatting with\n"
+ .string "{STR_VAR_1}!\p"
+ .string "It looks like they’re going to\n"
+ .string "have a battle!\p"
+ .string "And…\p"
+ .string "It’s the visitor!\n"
+ .string "The visitor won an away match!\p"
+ .string "The visitor is doing\n"
+ .string "a victory dance!$"
+
+gTVSecretBaseSecretsText24:: @ 08288EC9
+ .string "The visitor is chatting with\n"
+ .string "{STR_VAR_1}!\p"
+ .string "It looks like they’re going to\n"
+ .string "have a battle!\p"
+ .string "And…\p"
+ .string "It’s {STR_VAR_1}!\n"
+ .string "The visitor has lost!\p"
+ .string "The visitor looks dejected!$"
+
+gTVSecretBaseSecretsText25:: @ 08288F58
+ .string "The visitor is chatting with\n"
+ .string "{STR_VAR_1}!\p"
+ .string "It looks like they’re going to\n"
+ .string "have a battle!\p"
+ .string "And…\p"
+ .string "No, the visitor has refused!\p"
+ .string "There won’t be a battle after all!\p"
+ .string "Did the visitor find {STR_VAR_1}\n"
+ .string "unappealing?$"
+
+gTVSecretBaseSecretsText26:: @ 08289011
+ .string "The visitor is staring intently\n"
+ .string "at a poster!\p"
+ .string "Is the poster to the visitor’s\n"
+ .string "liking?\p"
+ .string "…But… There’s something disturbing\n"
+ .string "about the visitor’s stares.$"
+
+gTVSecretBaseSecretsText27:: @ 082890A4
+ .string "The visitor stepped on a NOTE MAT!\p"
+ .string "…Hmm…\n"
+ .string "The visitor composed a funny tune!$"
+
+gTVSecretBaseSecretsText28:: @ 082890F0
+ .string "The visitor is chatting with\n"
+ .string "{STR_VAR_1}!\p"
+ .string "It looks like they’re going to\n"
+ .string "have a battle!\p"
+ .string "And…\p"
+ .string "It’s a draw!\n"
+ .string "Nothing’s resolved!\p"
+ .string "Both TRAINERS appear to be very\n"
+ .string "disappointed!$"
+
+gTVSecretBaseSecretsText29:: @ 08289193
+ .string "The visitor stepped on\n"
+ .string "a SPIN MAT!\p"
+ .string "It looks like the visitor is dizzy!\p"
+ .string "The visitor is tottering about!\n"
+ .string "Look out!$"
+
+gTVSecretBaseSecretsText30:: @ 08289204
+ .string "The visitor is reaching for\n"
+ .string "a SAND ORNAMENT!\p"
+ .string "Oh!\p"
+ .string "It crumbled!\n"
+ .string "It’s fallen apart!\p"
+ .string "The visitor looks sheepish\n"
+ .string "and guilty!$"
+
+gTVSecretBaseSecretsText31:: @ 0828927C
+ .string "The visitor is rubbing a desktop\n"
+ .string "with their finger!\p"
+ .string "Apparently, the visitor disapproves\n"
+ .string "of dust!\p"
+ .string "The visitor is surprisingly concerned\n"
+ .string "about neatness!$"
+
+gTVSecretBaseSecretsText32:: @ 08289313
+ .string "The visitor is staring at a BRICK!\p"
+ .string "Perhaps the visitor is thinking about\n"
+ .string "the object on the BRICK.$"
+
+gTVSecretBaseSecretsText33:: @ 08289375
+ .string "The visitor is walking across\n"
+ .string "the SOLID BOARD.\p"
+ .string "The visitor keeps looking down.\p"
+ .string "The visitor appears to be surprisingly\n"
+ .string "timid and cautious!$"
+
+gTVSecretBaseSecretsText34:: @ 082893FF
+ .string "The visitor is looking intently\n"
+ .string "at a FENCE!\p"
+ .string "Has a new idea for a trap popped\n"
+ .string "into the visitor’s head?$"
+
+gTVSecretBaseSecretsText35:: @ 08289465
+ .string "The visitor stepped on\n"
+ .string "a GLITTER MAT!\p"
+ .string "The visitor is striking a variety\n"
+ .string "of poses!\p"
+ .string "The visitor appears to be fantasizing\n"
+ .string "about being an idol!$"
+
+gTVSecretBaseSecretsText36:: @ 082894F2
+ .string "The visitor is staring intently\n"
+ .string "at a TIRE!\p"
+ .string "Could the visitor be thinking about\n"
+ .string "the kind of car that would use it?$"
+
+gTVSecretBaseSecretsText37:: @ 08289564
+ .string "The visitor climbed a STAND!\p"
+ .string "The visitor is looking out across\n"
+ .string "{STR_VAR_1}’s BASE from high up!\p"
+ .string "And…\p"
+ .string "Lets loose a roar!\n"
+ .string "The visitor is roaring!$"
+
+gTVSecretBaseSecretsText38:: @ 082895EB
+ .string "The visitor charged headlong into\n"
+ .string "a BREAKABLE DOOR!\p"
+ .string "The visitor is laughing uproariously!$"
+
+gTVSecretBaseSecretsText39:: @ 08289645
+ .string "The visitor is talking to a DOLL!\p"
+ .string "…It’s a little creepy…$"
+
+gTVSecretBaseSecretsText40:: @ 0828967E
+ .string "The visitor is climbing the ladder\n"
+ .string "on a SLIDE!\p"
+ .string "And…\p"
+ .string "The visitor slid down!\p"
+ .string "Looks like the visitor is having\n"
+ .string "a grand old time!$"
+
+gTVSecretBaseSecretsText41:: @ 082896FC
+ .string "The visitor is climbing the ladder\n"
+ .string "on a SLIDE!\p"
+ .string "And…\p"
+ .string "The visitor went back down\n"
+ .string "the ladder!\p"
+ .string "Did the visitor suddenly chicken out?$"
+
+gTVSecretBaseSecretsText42:: @ 0828977D
+ .string "The visitor stepped on\n"
+ .string "a JUMP MAT!\p"
+ .string "The visitor jumped once!\p"
+ .string "Jumped twice!\p"
+ .string "And a successful landing!\p"
+ .string "The visitor is clapping!\n"
+ .string "What a solo performance!$"
+
+gTVSafariFanClubText00:: @ 08289813
+ .string "SAFARI FAN CLUB!\p"
+ .string "REPORTER: All right, mates!\n"
+ .string "Tossing them SAFARI BALLS, are you?\p"
+ .string "You can bet I am here in the SAFARI\n"
+ .string "ZONE chock-full of amazing POKéMON!\p"
+ .string "Let’s get with it and have a chat with\n"
+ .string "this good fellow of a SAFARI GUIDE!\p"
+ .string "All right, mate, how are the visiting\n"
+ .string "TRAINERS looking?$"
+
+gTVSafariFanClubText01:: @ 0828992F
+ .string "GUIDE: Everyone seems to be going\n"
+ .string "hard at it.\p"
+ .string "{STR_VAR_1} is doing especially well.\p"
+ .string "Why, before, {STR_VAR_1} caught\n"
+ .string "{STR_VAR_2} POKéMON.$"
+
+gTVSafariFanClubText02:: @ 0828999D
+ .string "The TRAINER is clever with {POKEBLOCK}S.\n"
+ .string "Used {STR_VAR_2} that time, I think.$"
+
+gTVSafariFanClubText03:: @ 082899DC
+ .string "The TRAINER didn’t use a single\n"
+ .string "{POKEBLOCK}! Not a one!\p"
+ .string "There’s an expert for you.$"
+
+gTVSafariFanClubText04:: @ 08289A29
+ .string "REPORTER: Is that right, then?\p"
+ .string "Sounds like our mate {STR_VAR_1}\n"
+ .string "is a stout SAFARI master!\p"
+ .string "GUIDE: I hope the TRAINER comes back\n"
+ .string "and shows us that great technique.$"
+
+gTVSafariFanClubText05:: @ 08289AC2
+ .string "GUIDE: No one seems to be doing\n"
+ .string "very well.\p"
+ .string "{STR_VAR_1} had it especially bad.\p"
+ .string "Why, before, the TRAINER only\n"
+ .string "managed to catch {STR_VAR_2} POKéMON.$"
+
+gTVSafariFanClubText06:: @ 08289B42
+ .string "GUIDE: No one seems to be doing\n"
+ .string "very well.\p"
+ .string "{STR_VAR_1} had it especially bad.\p"
+ .string "Why, before, the TRAINER didn’t\n"
+ .string "catch one POKéMON. Not a one!$"
+
+gTVSafariFanClubText07:: @ 08289BC5
+ .string "The TRAINER does use {POKEBLOCK}S.\n"
+ .string "Used {STR_VAR_2} that time, I think.\p"
+ .string "But, boy, I wish the TRAINER would\n"
+ .string "get a bit better at this.$"
+
+gTVSafariFanClubText08:: @ 08289C3B
+ .string "I think the TRAINER would have better\n"
+ .string "luck using {POKEBLOCK}S, which weren’t\l"
+ .string "used at all that time.$"
+
+gTVSafariFanClubText09:: @ 08289C99
+ .string "REPORTER: Is that right, then?\p"
+ .string "Sounds like our mate {STR_VAR_1}\n"
+ .string "needs more SAFARI seasoning.\p"
+ .string "GUIDE: I hope the TRAINER visits\n"
+ .string "over and over to get the hang of it.$"
+
+gTVSafariFanClubText10:: @ 08289D33
+ .string "REPORTER: Quite right, it is!\n"
+ .string "Facing up to challenges is important!\p"
+ .string "Viewers, come on down to the SAFARI\n"
+ .string "and make the challenge yourself!\p"
+ .string "Until next time, cheerio!$"
+
+gTVContestLiveUpdatesText00:: @ 08289DD6
+ .string "“POKéMON CONTEST LIVE UPDATES!”\p"
+ .string "MC: Thanks for joining us!\p"
+ .string "We’re live from the just-ended\n"
+ .string "{STR_VAR_1} site.\p"
+ .string "The hall is still filled with\n"
+ .string "an audience unwilling to leave.\p"
+ .string "Spectator: {STR_VAR_2}!\p"
+ .string "Spectator: {STR_VAR_3}!\p"
+ .string "MC: As you’ve just heard, the CONTEST\n"
+ .string "was won by the POKéMON {STR_VAR_2}\l"
+ .string "of {STR_VAR_3}.\p"
+ .string "Spectator: {STR_VAR_2}!\n"
+ .string "You’re the best!\p"
+ .string "Spectator: {STR_VAR_3}!\n"
+ .string "Way to go!\p"
+ .string "MC: Let’s hear what the fans have\n"
+ .string "to say about this CONTEST.$"
+
+gTVContestLiveUpdatesText01:: @ 08289F53
+ .string "Spectator: The {STR_VAR_2} was tops in\n"
+ .string "both primary and secondary judging!\p"
+ .string "That {STR_VAR_2} will keep winning!$"
+
+gTVContestLiveUpdatesText02:: @ 08289FB0
+ .string "Spectator: The {STR_VAR_2} didn’t do\n"
+ .string "well in the primary judging, but it\l"
+ .string "cleaned up in the secondary judging!\p"
+ .string "It was a miraculous comeback\n"
+ .string "for that {STR_VAR_2}. Yippee!$"
+
+gTVContestLiveUpdatesText03:: @ 0828A047
+ .string "Spectator: The {STR_VAR_2} remained\n"
+ .string "consistent throughout both primary\l"
+ .string "and secondary judging.\p"
+ .string "{STR_VAR_3} and the {STR_VAR_2},\n"
+ .string "they’re no ordinary combo!$"
+
+gTVContestLiveUpdatesText04:: @ 0828A0C6
+ .string "Spectator: In terms of being {STR_VAR_1},\n"
+ .string "that {STR_VAR_2} was outstanding.\p"
+ .string "I hope it makes better appeals\n"
+ .string "next time, though.$"
+
+gTVContestLiveUpdatesText05:: @ 0828A132
+ .string "Spectator: When the {STR_VAR_2} got\n"
+ .string "nervous, I couldn’t stop myself from\l"
+ .string "shouting encouragement.\p"
+ .string "I’d like to say this to that\n"
+ .string "{STR_VAR_2}, “Congratulations!”$"
+
+gTVContestLiveUpdatesText06:: @ 0828A1BE
+ .string "Spectator: That {STR_VAR_2}’s appeal\n"
+ .string "startled even me!\p"
+ .string "{STR_VAR_2}, you were awesome!$"
+
+gTVContestLiveUpdatesText07:: @ 0828A202
+ .string "Spectator: That {STR_VAR_2}’s combo\n"
+ .string "appeal was stunning!\p"
+ .string "It’s shaken me to the core!$"
+
+gTVContestLiveUpdatesText08:: @ 0828A24E
+ .string "Spectator: The winning {STR_VAR_2}’s\n"
+ .string "appeal got my heart pounding!$"
+
+gTVContestLiveUpdatesText09:: @ 0828A288
+ .string "{STR_VAR_2}!\n"
+ .string "You were cool!$"
+
+gTVContestLiveUpdatesText10:: @ 0828A29B
+ .string "{STR_VAR_2}!\n"
+ .string "You were beautiful!$"
+
+gTVContestLiveUpdatesText11:: @ 0828A2B3
+ .string "{STR_VAR_2}!\n"
+ .string "You were cute!$"
+
+gTVContestLiveUpdatesText12:: @ 0828A2C6
+ .string "{STR_VAR_2}!\n"
+ .string "You were smart!$"
+
+gTVContestLiveUpdatesText13:: @ 0828A2DA
+ .string "{STR_VAR_2}!\n"
+ .string "You were tough!$"
+
+gTVContestLiveUpdatesText14:: @ 0828A2EE
+ .string "Spectator: The winning {STR_VAR_2}’s\n"
+ .string "appeal still has my heart pounding!$"
+
+gTVContestLiveUpdatesText15:: @ 0828A32E
+ .string "{STR_VAR_2}!\n"
+ .string "You’re the last word in cool!$"
+
+gTVContestLiveUpdatesText16:: @ 0828A350
+ .string "{STR_VAR_2}!\n"
+ .string "You’re the most beautiful!$"
+
+gTVContestLiveUpdatesText17:: @ 0828A36F
+ .string "{STR_VAR_2}!\n"
+ .string "You’re simply the cutest!$"
+
+gTVContestLiveUpdatesText18:: @ 0828A38D
+ .string "{STR_VAR_2}!\n"
+ .string "You’re the smartest among the smart!$"
+
+gTVContestLiveUpdatesText19:: @ 0828A3B6
+ .string "{STR_VAR_2}!\n"
+ .string "You’re the toughest of the tough!$"
+
+gTVContestLiveUpdatesText20:: @ 0828A3DC
+ .string "Spectator: Even when the {STR_VAR_2}\n"
+ .string "took a break from making appeals,\l"
+ .string "I couldn’t take my eyes off it.\p"
+ .string "I’m captivated by that {STR_VAR_2}.$"
+
+gTVContestLiveUpdatesText21:: @ 0828A455
+ .string "Spectator: When the {STR_VAR_2} was\n"
+ .string "startled by another POKéMON’s appeal,\l"
+ .string "I was close to tears.\p"
+ .string "{STR_VAR_2}, you were resilient!\n"
+ .string "Way to go!$"
+
+gTVContestLiveUpdatesText22:: @ 0828A4CF
+ .string "Spectator: Oh…\n"
+ .string "That {STR_VAR_2}’s {STR_VAR_3}!\l"
+ .string "{STR_VAR_2}’s {STR_VAR_3}!\l"
+ .string "{STR_VAR_2}’s {STR_VAR_3}!\l"
+ .string "How could it be so wonderful?$"
+
+gTVContestLiveUpdatesText23:: @ 0828A51C
+ .string "MC: Well, there you have it. This place\n"
+ .string "is full of the {STR_VAR_1}’s fans!\p"
+ .string "I should also mention that another\n"
+ .string "POKéMON, {STR_VAR_2}’s {STR_VAR_3}, \l"
+ .string "caught my eye.\p"
+ .string "{STR_VAR_2}’s {STR_VAR_3}…$"
+
+gTVContestLiveUpdatesText24:: @ 0828A5AC
+ .string "It failed to make a single appeal during\n"
+ .string "secondary judging out of nervousness.\p"
+ .string "Next time, I would like to see this\n"
+ .string "{STR_VAR_1} make even one appeal.$"
+
+gTVContestLiveUpdatesText25:: @ 0828A638
+ .string "It came dead last in both primary\n"
+ .string "and secondary judging.\p"
+ .string "I hope that {STR_VAR_1} will retrain this\n"
+ .string "{STR_VAR_2} and erase the shame of\l"
+ .string "this undisputed last-place finish.$"
+
+gTVContestLiveUpdatesText26:: @ 0828A6CF
+ .string "It failed to take advantage of\n"
+ .string "the audience’s excitement and make\l"
+ .string "an appropriate appeal.\p"
+ .string "We hope {STR_VAR_1} will learn how to get\n"
+ .string "a feel for the audience and whip their\l"
+ .string "excitement to a fever pitch next time.$"
+
+gTVContestLiveUpdatesText27:: @ 0828A797
+ .string "While finishing first in the primary\n"
+ .string "judging, its appeals in the secondary\l"
+ .string "judging failed to click.\p"
+ .string "It suffered a humiliating come-from-\n"
+ .string "behind loss.\p"
+ .string "I’m sure {STR_VAR_1} is studying how to\n"
+ .string "make more effective appeals now.$"
+
+gTVContestLiveUpdatesText28:: @ 0828A86D
+ .string "The audience never got excited by its\n"
+ .string "appeals during the secondary judging.\p"
+ .string "We hope it will stop worrying about\n"
+ .string "other POKéMON and learn to pitch\l"
+ .string "its appeals to the audience more.$"
+
+gTVContestLiveUpdatesText29:: @ 0828A920
+ .string "It lost to {STR_VAR_1}’s {STR_VAR_2}\n"
+ .string "by only a small margin.\p"
+ .string "It must be heartbreaking to come\n"
+ .string "so close to victory only to fail.\p"
+ .string "I wouldn’t be surprised if {STR_VAR_3}\n"
+ .string "were weeping over this outcome.$"
+
+gTVContestLiveUpdatesText30:: @ 0828A9CC
+ .string "It disappointed the JUDGE by\n"
+ .string "repeating the same appeals.\p"
+ .string "It’s an unforgivable error in any\n"
+ .string "CONTEST, and the POKéMON paid.\p"
+ .string "{STR_VAR_1} should feel guilty for\n"
+ .string "this sorry showing.$"
+
+gTVContestLiveUpdatesText31:: @ 0828AA74
+ .string "{STR_VAR_1} turned in a valiant effort,\n"
+ .string "but…\p"
+ .string "It was all for naught, finishing last.\p"
+ .string "{STR_VAR_1} should learn from this loss\n"
+ .string "and put the knowledge to good use.$"
+
+gTVContestLiveUpdatesText32:: @ 0828AB01
+ .string "I’d like to end this program with our\n"
+ .string "usual farewell to the winners.\p"
+ .string "This time, it’s {STR_VAR_1} and\n"
+ .string "the {STR_VAR_2}!\p"
+ .string "MC: Is everyone ready?\n"
+ .string "All together now!\p"
+ .string "Audience: {STR_VAR_1}! {STR_VAR_2}!\n"
+ .string "Congratulations!\l"
+ .string "You’re the CONTEST winner!$"
+
+gTVPokemonBattleUpdateText00:: @ 0828ABCC
+ .string "“POKéMON BATTLE UPDATE!”\p"
+ .string "Bringing you the results of POKéMON\n"
+ .string "battles as they come in!$"
+
+gTVPokemonBattleUpdateText01:: @ 0828AC22
+ .string "The TRAINERS {STR_VAR_1} and\n"
+ .string "{STR_VAR_2} faced each other in\l"
+ .string "a {STR_VAR_3} BATTLE.\p"
+ .string "This match ended in victory for\n"
+ .string "{STR_VAR_1}!$"
+
+gTVPokemonBattleUpdateText02:: @ 0828AC7E
+ .string "In the battle, {STR_VAR_1}’s\n"
+ .string "{STR_VAR_2} was a formidable force\l"
+ .string "using {STR_VAR_3}!$"
+
+gTVPokemonBattleUpdateText03:: @ 0828ACB6
+ .string "{STR_VAR_1}’s {STR_VAR_2} had a weak\n"
+ .string "showing that really hurt.$"
+
+gTVPokemonBattleUpdateText04:: @ 0828ACE3
+ .string "Congratulations on your victory,\n"
+ .string "{STR_VAR_1}!\p"
+ .string "And for the defeated {STR_VAR_2},\n"
+ .string "we hope for a better result next time!\p"
+ .string "This concludes this episode of\n"
+ .string "“POKéMON BATTLE UPDATE!”$"
+
+gTVPokemonBattleUpdateText05:: @ 0828AD80
+ .string "The teams of TRAINERS {STR_VAR_1} and\n"
+ .string "{STR_VAR_2} met in a MULTI BATTLE.\p"
+ .string "This match ended in victory for\n"
+ .string "{STR_VAR_1}’s team.$"
+
+gTVPokemonBattleUpdateText06:: @ 0828ADE2
+ .string "In the battle, the {STR_VAR_2} on\n"
+ .string "{STR_VAR_1}’s team was a formidable\l"
+ .string "force using {STR_VAR_3}.$"
+
+gTVPokemonBattleUpdateText07:: @ 0828AE26
+ .string "The weak showing by the {STR_VAR_3}\n"
+ .string "on {STR_VAR_2}’s team really hurt.\p"
+ .string "Congratulations on your team’s\n"
+ .string "victory, {STR_VAR_1}!\p"
+ .string "As for the defeated {STR_VAR_2}’s team,\n"
+ .string "we hope for a better result next time!\p"
+ .string "This concludes this episode of\n"
+ .string "“POKéMON BATTLE UPDATE!”$"
+
+ .string "GABBY: Oh! We’ve just spotted a tough-\n"
+ .string "looking TRAINER here of all places!\p"
+ .string "Okay, roll camera!\n"
+ .string "Let’s get this interview.$"
+
+ .string "GABBY: Oh! You’re {PLAYER}! Hi!\n"
+ .string "Do you remember us from last time?\p"
+ .string "Can you show us how much stronger\n"
+ .string "you’ve become? Okay, cue interview!$"
+
+ .string "GABBY: My eyes didn’t lie!\n"
+ .string "I did discover an astonishing TRAINER!$"
+
+ .string "GABBY: Awesome! Awesome!\n"
+ .string "Who are you?!\p"
+ .string "I knew we were onto something wild\n"
+ .string "when we spotted you!\p"
+ .string "Oh, please let me explain. We travel\n"
+ .string "around everywhere interviewing all\l"
+ .string "sorts of TRAINERS.\p"
+ .string "So, would you give us a bit of your time\n"
+ .string "for an interview?$"
+
+ .string "GABBY: “{STR_VAR_1}!”\p"
+ .string "Remember? That’s the quote you gave\n"
+ .string "us as the battle clincher last time.\p"
+ .string "I never, ever forget stuff like that!$"
+
+ .string "The last time we battled, you stomped\n"
+ .string "us before we could brace ourselves…\p"
+ .string "Anyway, what do you think?\n"
+ .string "Do you want to be interviewed again?$"
+
+ .string "The last time we battled, didn’t you\n"
+ .string "throw a POKé BALL at us?\p"
+ .string "We were shocked! So we told everyone,\n"
+ .string "just everyone, about it!\p"
+ .string "Anyway, what do you think?\n"
+ .string "Do you want to be interviewed again?$"
+
+ .string "The last time we battled, your item\n"
+ .string "skills cleverly did us in.\p"
+ .string "Anyway, what do you think?\n"
+ .string "Do you want to be interviewed again?$"
+
+ .string "The last time we battled, we managed\n"
+ .string "to look respectable.\p"
+ .string "Anyway, what do you think?\n"
+ .string "Do you want to be interviewed again?$"
+
+ .string "Anyway, what do you think?\n"
+ .string "Do you want to be interviewed again?$"
+
+ .string "You will?\n"
+ .string "Thank you!\p"
+ .string "Okay, I need you to describe your\n"
+ .string "feelings about our battle, but it\l"
+ .string "has to be short and sweet. Go!$"
+
+ .string "GABBY: Mmm, yeah!\n"
+ .string "That’s the perfect clincher!\p"
+ .string "I get the feeling that this will make\n"
+ .string "a great TV show.\p"
+ .string "There’s a chance that they’ll air this\n"
+ .string "on TV, so make sure to look for us!\p"
+ .string "Okay!\n"
+ .string "We’ll be seeing you!$"
+
+ .string "GABBY: Oh…\p"
+ .string "Okay, but don’t give up!\n"
+ .string "We’ll be keeping an eye out for you!$"
+
+ .string "GABBY: We’ll be keeping an eye out\n"
+ .string "for you!$"
+
+ .string "GABBY: Is there a strong TRAINER\n"
+ .string "anywhere with a lot of POKéMON?$"
+
+ .string "GABBY: Wow, you are something!\p"
+ .string "You’ve gotten a lot stronger--a lot--\n"
+ .string "since we last battled.\p"
+ .string "We were right about you when we\n"
+ .string "spotted you as a hot TRAINER.\p"
+ .string "So, anyway, what do you think?\n"
+ .string "Are you willing to give us an interview\l"
+ .string "this time?$"
+
+ .string "GABBY: That was an intense battle!\n"
+ .string "Did you get all that on camera?$"
+
+ .string "TY: Hey, lookie here! A tough-looking\n"
+ .string "TRAINER here, of all places!\l"
+ .string "Camera’s rolling!$"
+
+ .string "TY: Hey, lookie here!\n"
+ .string "I remember you!\p"
+ .string "I’ll get this battle all on this\n"
+ .string "here camera!$"
+
+ .string "TY: You’re a natural!\n"
+ .string "Got me some prime footage right here!$"
+
+ .string "TY: Do you only have the one POKéMON\n"
+ .string "and that’s it?\p"
+ .string "If you had more POKéMON, it’d make for\n"
+ .string "better footage, but…$"
+
+ .string "TY: Yep, we sure spotted a hot TRAINER.\n"
+ .string "This is a huge scoop for us!$"
+
+ .string "TY: Yep, I got it all.\n"
+ .string "That whole battle’s on camera.$"
+
+gTVInSearchOfTrainersText00:: @ 0828B92C
+ .string "IN SEARCH OF TRAINERS…\p"
+ .string "GABBY: Hi! Today I’m visiting an area\n"
+ .string "near {STR_VAR_1}.\p"
+ .string "We’re trying to spot some up-and-\n"
+ .string "coming new talent in the field.\p"
+ .string "Today, we turned our lens on the\n"
+ .string "TRAINER {PLAYER}.\p"
+ .string "There’s something about this TRAINER\n"
+ .string "that piqued our interest.$"
+
+gTVInSearchOfTrainersText01:: @ 0828BA20
+ .string "We’ve battled {PLAYER} before, but we\n"
+ .string "can attest that the TRAINER has most\l"
+ .string "definitely improved from before.\p"
+ .string "I knew we were onto someone special\n"
+ .string "when we spotted this TRAINER!$"
+
+gTVInSearchOfTrainersText02:: @ 0828BAC8
+ .string "The best way to determine how strong\n"
+ .string "a TRAINER is…\p"
+ .string "Well, the fastest way is to battle.\n"
+ .string "And so we began our investigation!\p"
+ .string "… …\p"
+ .string "That’s how we ended up in battle\n"
+ .string "with {PLAYER}.\p"
+ .string "In a dominating performance, we were\n"
+ .string "flattened, rolled up, and tossed aside!\p"
+ .string "{PLAYER} is ruthlessly strong…\p"
+ .string "Here’s our impressions after having\n"
+ .string "battled our featured TRAINER.$"
+
+gTVInSearchOfTrainersText03:: @ 0828BC18
+ .string "The combination of {STR_VAR_1} and\n"
+ .string "{STR_VAR_3} was divine!\p"
+ .string "The sight of them--{STR_VAR_1} and\n"
+ .string "{STR_VAR_3}--selflessly supporting\l"
+ .string "each other in the thick of battle…\p"
+ .string "It was a marvelous sight to behold!\p"
+ .string "{STR_VAR_2} was the move the TRAINER\n"
+ .string "used last in our battle.\p"
+ .string "The move {STR_VAR_2} is {STR_VAR_1}\n"
+ .string "and {STR_VAR_3}’s sign of friendship!$"
+
+gTVInSearchOfTrainersText04:: @ 0828BD20
+ .string "…I lost confidence in myself as\n"
+ .string "a result of our encounter.\p"
+ .string "We were beaten before we could launch\n"
+ .string "a single attack.\l"
+ .string "Ohhh… Snivel…\p"
+ .string "In spite of that, {PLAYER}’s battles\n"
+ .string "are worth seeing.\p"
+ .string "I recommend confident TRAINERS to\n"
+ .string "challenge {PLAYER}.$"
+
+gTVInSearchOfTrainersText05:: @ 0828BE01
+ .string "There’s only one thing to be said.\n"
+ .string "Don’t you dare throw a POKé BALL during\l"
+ .string "a TRAINER battle!\p"
+ .string "{PLAYER} is certainly strong, but has\n"
+ .string "no clue about the basic rules.\p"
+ .string "To our TV audience, I have a request.\p"
+ .string "If you see {PLAYER}, please caution\n"
+ .string "the TRAINER!$"
+
+gTVInSearchOfTrainersText06:: @ 0828BEEE
+ .string "{PLAYER} is adept at reading the\n"
+ .string "opponent’s actions.\p"
+ .string "The timing of item usage was remarkably\n"
+ .string "effective!$"
+
+gTVInSearchOfTrainersText07:: @ 0828BF50
+ .string "Honestly speaking, I thought that\n"
+ .string "I might even be pretty good.\p"
+ .string "While we did end up losing, we did have\n"
+ .string "a hotly contested battle.\p"
+ .string "But if you’re struggling against me,\n"
+ .string "you have a ways to go, {PLAYER}!$"
+
+gTVInSearchOfTrainersText08:: @ 0828C011
+ .string "After our battle, we asked {PLAYER} for\n"
+ .string "a succinct summary.\p"
+ .string "The TRAINER replied, “{STR_VAR_1}.”\p"
+ .string "{PLAYER}’s POKéMON {STR_VAR_2} and\n"
+ .string "{STR_VAR_3}…\l"
+ .string "And “{STR_VAR_1}”…\p"
+ .string "Mmm! That’s deep! There’s deep\n"
+ .string "significance behind that quote!\p"
+ .string "It’s no surprise--a good TRAINER has\n"
+ .string "good things to say.\p"
+ .string "That’s all for today!\n"
+ .string "See you again on our next broadcast!$"
+
+gTVPokemonContestLiveUpdates2Text00:: @ 0828C137
+ .string "“POKéMON CONTEST LIVE UPDATES!”\p"
+ .string "MC: Sorry to interrupt the regular\n"
+ .string "programming, and thanks for joining us!\p"
+ .string "We bring you this live from\n"
+ .string "the scene of a just-completed\l"
+ .string "{STR_VAR_1}!\p"
+ .string "Spectators: ?!!!!\p"
+ .string "MC: Oh! It looks like the CONTEST\n"
+ .string "participants are headed this way!\p"
+ .string "I’ll try to get an impromptu interview\n"
+ .string "for you folks at home!\p"
+ .string "Spectators: ?!!!!\n"
+ .string "?!!!!$"
+
+gTVPokemonContestLiveUpdates2Text01:: @ 0828C28C
+ .string "MC: Excuse me!\n"
+ .string "Thanks for joining us on live TV!\p"
+ .string "May I congratulate you on your win?\p"
+ .string "What was the key factor in today’s\n"
+ .string "stunning victory?\p"
+ .string "BEAUTY: We gave it our best effort\n"
+ .string "today, my {STR_VAR_2} and I!\p"
+ .string "But I’m sure we wouldn’t have made it\n"
+ .string "if it weren’t for all the help we\l"
+ .string "received leading up to the CONTEST!\p"
+ .string "MC: Do you have a special someone\n"
+ .string "with whom you’d like to share your joy?\l"
+ .string "Let’s hear it live!\p"
+ .string "BEAUTY: Hey, out there!\p"
+ .string "{STR_VAR_3}! Are you watching?\n"
+ .string "We did it!\l"
+ .string "Thank you!$"
+
+gTVPokemonContestLiveUpdates2Text02:: @ 0828C45B
+ .string "MC: Excuse me!\n"
+ .string "Thanks for joining us on live TV!\p"
+ .string "You must be disappointed by that turn\n"
+ .string "of events. Do you have any comments?\p"
+ .string "BEAUTY: It’s heartbreaking…\n"
+ .string "My {STR_VAR_2} and I, we did our best…\p"
+ .string "But I feel like I’ve let down everyone\n"
+ .string "who has supported us through this.\p"
+ .string "MC: I hate to say it, but the POKéMON’s\n"
+ .string "coloration is a little wanting.\p"
+ .string "BEAUTY: {STR_VAR_3}, I’m so sorry…\n"
+ .string "I’ll do better next time, I swear…\l"
+ .string "…Sniff… Waaaaah!\p"
+ .string "Spectators: See that?\n"
+ .string "The poor girl!\p"
+ .string "MC: Uh… Uh-oh…\p"
+ .string "Uh… That’s all the time we have today!\n"
+ .string "Thanks for tuning in!$"
+
+gTVPokemonContestLiveUpdates2Text03:: @ 0828C662
+ .string "MC: Excuse me!\n"
+ .string "Thanks for joining us on live TV!\p"
+ .string "How did your CONTEST appearance go?\p"
+ .string "BEAUTY: Nothing went right…\n"
+ .string "For some reason, my {STR_VAR_2}\l"
+ .string "couldn’t attract any popularity.\p"
+ .string "MC: I hate to say it, but the POKéMON’s\n"
+ .string "coloration is a little wanting.\p"
+ .string "BEAUTY: … … … … … …\n"
+ .string "…Sniff… Waaaaah!\p"
+ .string "Spectators: See that?\n"
+ .string "The poor girl!\p"
+ .string "MC: Uh… Uh-oh…\p"
+ .string "Uh… That’s all the time we have today!\n"
+ .string "Thanks for tuning in!$"
diff --git a/data/title_screen.s b/data/title_screen.s
index 525790271..b07464ce9 100644
--- a/data/title_screen.s
+++ b/data/title_screen.s
@@ -1,9 +1,12 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
- .section .rodata
- .align 2, 0
+ .section .rodata
+ .align 2, 0
+ .incbin "graphics/title_screen/unk_853EF78.gbapal"
+
+ .align 2
gTitleScreenRayquazaGfx:: @ 853F058
.incbin "graphics/title_screen/rayquaza.4bpp.lz"
diff --git a/data/trainer_money.inc b/data/trainer_money.inc
new file mode 100644
index 000000000..1e06668bd
--- /dev/null
+++ b/data/trainer_money.inc
@@ -0,0 +1,59 @@
+@ This is a factor in how much money you get for beating a trainer.
+ .align 2
+gTrainerMoneyTable:: @ 831AEB8
+ .byte TRAINER_CLASS_NAME_TEAM_AQUA, 5, 0, 0
+ .byte TRAINER_CLASS_NAME_AQUA_ADMIN, 10, 0, 0
+ .byte TRAINER_CLASS_NAME_AQUA_LEADER, 20, 0, 0
+ .byte TRAINER_CLASS_NAME_AROMA_LADY, 10, 0, 0
+ .byte TRAINER_CLASS_NAME_RUIN_MANIAC, 15, 0, 0
+ .byte TRAINER_CLASS_NAME_INTERVIEWER, 12, 0, 0
+ .byte TRAINER_CLASS_NAME_TUBER_1, 1, 0, 0
+ .byte TRAINER_CLASS_NAME_TUBER_2, 1, 0, 0
+ .byte TRAINER_CLASS_NAME_SIS_AND_BRO, 3, 0, 0
+ .byte TRAINER_CLASS_NAME_COOLTRAINER_1, 12, 0, 0
+ .byte TRAINER_CLASS_NAME_HEX_MANIAC, 6, 0, 0
+ .byte TRAINER_CLASS_NAME_LADY, 50, 0, 0
+ .byte TRAINER_CLASS_NAME_BEAUTY, 20, 0, 0
+ .byte TRAINER_CLASS_NAME_RICH_BOY, 50, 0, 0
+ .byte TRAINER_CLASS_NAME_POKEMANIAC, 15, 0, 0
+ .byte TRAINER_CLASS_NAME_SWIMMER_M, 2, 0, 0
+ .byte TRAINER_CLASS_NAME_BLACK_BELT, 8, 0, 0
+ .byte TRAINER_CLASS_NAME_GUITARIST, 8, 0, 0
+ .byte TRAINER_CLASS_NAME_KINDLER, 8, 0, 0
+ .byte TRAINER_CLASS_NAME_CAMPER, 4, 0, 0
+ .byte TRAINER_CLASS_NAME_OLD_COUPLE, 10, 0, 0
+ .byte TRAINER_CLASS_NAME_BUG_MANIAC, 15, 0, 0
+ .byte TRAINER_CLASS_NAME_PSYCHIC, 6, 0, 0
+ .byte TRAINER_CLASS_NAME_GENTLEMAN, 20, 0, 0
+ .byte TRAINER_CLASS_NAME_ELITE_FOUR, 25, 0, 0
+ .byte TRAINER_CLASS_NAME_LEADER, 25, 0, 0
+ .byte TRAINER_CLASS_NAME_SCHOOL_KID, 5, 0, 0
+ .byte TRAINER_CLASS_NAME_SR_AND_JR, 4, 0, 0
+ .byte TRAINER_CLASS_NAME_POKEFAN, 20, 0, 0
+ .byte TRAINER_CLASS_NAME_EXPERT, 10, 0, 0
+ .byte TRAINER_CLASS_NAME_YOUNGSTER, 4, 0, 0
+ .byte TRAINER_CLASS_NAME_CHAMPION, 50, 0, 0
+ .byte TRAINER_CLASS_NAME_FISHERMAN, 10, 0, 0
+ .byte TRAINER_CLASS_NAME_TRIATHLETE, 10, 0, 0
+ .byte TRAINER_CLASS_NAME_DRAGON_TAMER, 12, 0, 0
+ .byte TRAINER_CLASS_NAME_BIRD_KEEPER, 8, 0, 0
+ .byte TRAINER_CLASS_NAME_NINJA_BOY, 3, 0, 0
+ .byte TRAINER_CLASS_NAME_BATTLE_GIRL, 6, 0, 0
+ .byte TRAINER_CLASS_NAME_PARASOL_LADY, 10, 0, 0
+ .byte TRAINER_CLASS_NAME_SWIMMER_F, 2, 0, 0
+ .byte TRAINER_CLASS_NAME_PICNICKER, 4, 0, 0
+ .byte TRAINER_CLASS_NAME_TWINS, 3, 0, 0
+ .byte TRAINER_CLASS_NAME_SAILOR, 8, 0, 0
+ .byte TRAINER_CLASS_NAME_COLLECTOR, 15, 0, 0
+ .byte TRAINER_CLASS_NAME_PKMN_TRAINER_3, 15, 0, 0
+ .byte TRAINER_CLASS_NAME_PKMN_BREEDER, 10, 0, 0
+ .byte TRAINER_CLASS_NAME_PKMN_RANGER, 12, 0, 0
+ .byte TRAINER_CLASS_NAME_TEAM_MAGMA, 5, 0, 0
+ .byte TRAINER_CLASS_NAME_MAGMA_ADMIN, 10, 0, 0
+ .byte TRAINER_CLASS_NAME_MAGMA_LEADER, 20, 0, 0
+ .byte TRAINER_CLASS_NAME_LASS, 4, 0, 0
+ .byte TRAINER_CLASS_NAME_BUG_CATCHER, 4, 0, 0
+ .byte TRAINER_CLASS_NAME_HIKER, 10, 0, 0
+ .byte TRAINER_CLASS_NAME_YOUNG_COUPLE, 8, 0, 0
+ .byte TRAINER_CLASS_LEADER_1, 10, 0, 0
+ .byte -1, 5, 0, 0
diff --git a/data/trainer_see.s b/data/trainer_see.s
index 7480cb290..bff3004a7 100644
--- a/data/trainer_see.s
+++ b/data/trainer_see.s
@@ -2,13 +2,82 @@
.include "constants/constants.inc"
.section .rodata
- .align 2, 0
-gUnknown_0855072C:: @ 855072C
- .incbin "baserom.gba", 0x55072c, 0x10
+ .align 2
+gEmotion_ExclamationMarkGfx:: @ 85505AC
+ .incbin "graphics/misc/emotion_exclamation.4bpp"
-gUnknown_0855073C:: @ 855073C
- .incbin "baserom.gba", 0x55073c, 0x30
+ .align 2
+gEmotion_QuestionMarkGfx:: @ 855062C
+ .incbin "graphics/misc/emotion_question.4bpp"
-gUnknown_0855076C:: @ 855076C
- .incbin "baserom.gba", 0x55076c, 0x48
+ .align 2
+gEmotion_HeartGfx:: @ 85506AC
+ .incbin "graphics/misc/emotion_heart.4bpp"
+
+ .align 2
+gIsTrainerInRange:: @ 855072C
+ .4byte IsTrainerInRangeSouth
+ .4byte IsTrainerInRangeNorth
+ .4byte IsTrainerInRangeWest
+ .4byte IsTrainerInRangeEast
+
+ .align 2
+gTrainerSeeFuncList:: @ 855073C
+ .4byte sub_80B4178
+ .4byte sub_80B417C
+ .4byte sub_80B41C0
+ .4byte sub_80B4200
+ .4byte sub_80B425C
+ .4byte sub_80B4318
+ .4byte sub_80B435C
+ .4byte sub_80B4390
+ .4byte sub_80B43AC
+ .4byte sub_80B43E0
+ .4byte sub_80B4438
+ .4byte sub_80B44AC
+
+ .align 2
+gTrainerSeeFuncList2:: @ 855076C
+ .4byte sub_80B43AC
+ .4byte sub_80B43E0
+ .4byte sub_80B4438
+ .4byte sub_80B44AC
+
+ .align 2
+gOamData_855077C:: @ 855077C
+ .2byte 0x0000
+ .2byte 0x4000
+ .2byte 0x0400
+
+ .align 2
+gSpriteImageTable_8550784:: @ 8550784
+ obj_frame_tiles gEmotion_ExclamationMarkGfx, 0x0080
+ obj_frame_tiles gEmotion_QuestionMarkGfx, 0x0080
+
+ .align 2
+gSpriteImageTable_8550794:: @ 8550794
+ obj_frame_tiles gEmotion_HeartGfx, 0x0080
+
+ .align 2
+gSpriteAnim_855079C:: @ 855079C
+ obj_image_anim_frame 0, 60
+ obj_image_anim_end
+
+ .align 2
+gSpriteAnim_85507A4:: @ 85507A4
+ obj_image_anim_frame 1, 60
+ obj_image_anim_end
+
+ .align 2
+gSpriteAnimTable_85507AC:: @ 85507AC
+ .4byte gSpriteAnim_855079C
+ .4byte gSpriteAnim_85507A4
+
+ .align 2
+gSpriteTemplate_85507B4:: @ 85507B4
+ spr_template 0xffff, 0xffff, gOamData_855077C, gSpriteAnimTable_85507AC, gSpriteImageTable_8550784, gDummySpriteAffineAnimTable, objc_exclamation_mark_probably
+
+ .align 2
+gSpriteTemplate_85507CC:: @ 85507CC
+ spr_template 0xffff, 0x1004, gOamData_855077C, gSpriteAnimTable_85507AC, gSpriteImageTable_8550794, gDummySpriteAffineAnimTable, objc_exclamation_mark_probably
diff --git a/data/tv.s b/data/tv.s
deleted file mode 100644
index 4d2a608c4..000000000
--- a/data/tv.s
+++ /dev/null
@@ -1,128 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2, 0
-
-gUnknown_0858D094:: @ 858D094
- .incbin "baserom.gba", 0x58d094, 0x3c
-
-gUnknown_0858D0D0:: @ 858D0D0
- .incbin "baserom.gba", 0x58d0d0, 0xe
-
-gUnknown_0858D0DE:: @ 858D0DE
- .incbin "baserom.gba", 0x58d0de, 0xe
-
-gUnknown_0858D0EC:: @ 858D0EC
- .incbin "baserom.gba", 0x58d0ec, 0x1c
-
-gUnknown_0858D108:: @ 858D108
- .incbin "baserom.gba", 0x58d108, 0x14
-
-gUnknown_0858D11C:: @ 858D11C
- .incbin "baserom.gba", 0x58d11c, 0x14
-
-gUnknown_0858D130:: @ 858D130
- .incbin "baserom.gba", 0x58d130, 0x14
-
-gUnknown_0858D144:: @ 858D144
- .incbin "baserom.gba", 0x58d144, 0xc
-
-gUnknown_0858D150:: @ 858D150
- .incbin "baserom.gba", 0x58d150, 0x20
-
-gUnknown_0858D170:: @ 858D170
- .incbin "baserom.gba", 0x58d170, 0x18
-
-gUnknown_0858D188:: @ 858D188
- .incbin "baserom.gba", 0x58d188, 0x14
-
-gUnknown_0858D19C:: @ 858D19C
- .incbin "baserom.gba", 0x58d19c, 0x4
-
-gUnknown_0858D1A0:: @ 858D1A0
- .incbin "baserom.gba", 0x58d1a0, 0x30
-
-gUnknown_0858D1D0:: @ 858D1D0
- .incbin "baserom.gba", 0x58d1d0, 0x34
-
-gUnknown_0858D204:: @ 858D204
- .incbin "baserom.gba", 0x58d204, 0x24
-
-gUnknown_0858D228:: @ 858D228
- .incbin "baserom.gba", 0x58d228, 0x18
-
-gUnknown_0858D240:: @ 858D240
- .incbin "baserom.gba", 0x58d240, 0x3c
-
-gUnknown_0858D27C:: @ 858D27C
- .incbin "baserom.gba", 0x58d27c, 0x84
-
-gUnknown_0858D300:: @ 858D300
- .incbin "baserom.gba", 0x58d300, 0x20
-
-gUnknown_0858D320:: @ 858D320
- .incbin "baserom.gba", 0x58d320, 0x18
-
-gUnknown_0858D338:: @ 858D338
- .incbin "baserom.gba", 0x58d338, 0x4c
-
-gUnknown_0858D384:: @ 858D384
- .incbin "baserom.gba", 0x58d384, 0x10
-
-gUnknown_0858D394:: @ 858D394
- .incbin "baserom.gba", 0x58d394, 0x1c
-
-gUnknown_0858D3B0:: @ 858D3B0
- .incbin "baserom.gba", 0x58d3b0, 0x8
-
-gUnknown_0858D3B8:: @ 858D3B8
- .incbin "baserom.gba", 0x58d3b8, 0xc
-
-gUnknown_0858D3C4:: @ 858D3C4
- .incbin "baserom.gba", 0x58d3c4, 0x2c
-
-gUnknown_0858D3F0:: @ 858D3F0
- .incbin "baserom.gba", 0x58d3f0, 0x1c
-
-gUnknown_0858D40C:: @ 858D40C
- .incbin "baserom.gba", 0x58d40c, 0xc
-
-gUnknown_0858D418:: @ 858D418
- .incbin "baserom.gba", 0x58d418, 0x10
-
-gUnknown_0858D428:: @ 858D428
- .incbin "baserom.gba", 0x58d428, 0x34
-
-gUnknown_0858D45C:: @ 858D45C
- .incbin "baserom.gba", 0x58d45c, 0x38
-
-gUnknown_0858D494:: @ 858D494
- .incbin "baserom.gba", 0x58d494, 0x4
-
-gUnknown_0858D498:: @ 858D498
- .incbin "baserom.gba", 0x58d498, 0x1c
-
-gUnknown_0858D4B4:: @ 858D4B4
- .incbin "baserom.gba", 0x58d4b4, 0x30
-
-gUnknown_0858D4E4:: @ 858D4E4
- .incbin "baserom.gba", 0x58d4e4, 0x40
-
-gUnknown_0858D524:: @ 858D524
- .incbin "baserom.gba", 0x58d524, 0x4c
-
-gUnknown_0858D570:: @ 858D570
- .incbin "baserom.gba", 0x58d570, 0x24
-
-gUnknown_0858D594:: @ 858D594
- .incbin "baserom.gba", 0x58d594, 0xac
-
-gUnknown_0858D640:: @ 858D640
- .incbin "baserom.gba", 0x58d640, 0x2c
-
-gUnknown_0858D66C:: @ 858D66C
- .incbin "baserom.gba", 0x58d66c, 0x24
-
-gUnknown_0858D690:: @ 858D690
- .incbin "baserom.gba", 0x58d690, 0x20
diff --git a/data/type_effectiveness.inc b/data/type_effectiveness.inc
new file mode 100644
index 000000000..a24615592
--- /dev/null
+++ b/data/type_effectiveness.inc
@@ -0,0 +1,119 @@
+@ format: attacking type, defending type, damage multiplier
+@ the multiplier is a (decimal) fixed-point number:
+@ 20 is ×2.0
+@ 05 is ×0.5
+@ 00 is ×0
+
+gTypeEffectiveness:: @ 831ACE8
+ .byte TYPE_NORMAL, TYPE_ROCK, 5
+ .byte TYPE_NORMAL, TYPE_STEEL, 5
+ .byte TYPE_FIRE, TYPE_FIRE, 5
+ .byte TYPE_FIRE, TYPE_WATER, 5
+ .byte TYPE_FIRE, TYPE_GRASS, 20
+ .byte TYPE_FIRE, TYPE_ICE, 20
+ .byte TYPE_FIRE, TYPE_BUG, 20
+ .byte TYPE_FIRE, TYPE_ROCK, 5
+ .byte TYPE_FIRE, TYPE_DRAGON, 5
+ .byte TYPE_FIRE, TYPE_STEEL, 20
+ .byte TYPE_WATER, TYPE_FIRE, 20
+ .byte TYPE_WATER, TYPE_WATER, 5
+ .byte TYPE_WATER, TYPE_GRASS, 5
+ .byte TYPE_WATER, TYPE_GROUND, 20
+ .byte TYPE_WATER, TYPE_ROCK, 20
+ .byte TYPE_WATER, TYPE_DRAGON, 5
+ .byte TYPE_ELECTRIC, TYPE_WATER, 20
+ .byte TYPE_ELECTRIC, TYPE_ELECTRIC, 5
+ .byte TYPE_ELECTRIC, TYPE_GRASS, 5
+ .byte TYPE_ELECTRIC, TYPE_GROUND, 0
+ .byte TYPE_ELECTRIC, TYPE_FLYING, 20
+ .byte TYPE_ELECTRIC, TYPE_DRAGON, 5
+ .byte TYPE_GRASS, TYPE_FIRE, 5
+ .byte TYPE_GRASS, TYPE_WATER, 20
+ .byte TYPE_GRASS, TYPE_GRASS, 5
+ .byte TYPE_GRASS, TYPE_POISON, 5
+ .byte TYPE_GRASS, TYPE_GROUND, 20
+ .byte TYPE_GRASS, TYPE_FLYING, 5
+ .byte TYPE_GRASS, TYPE_BUG, 5
+ .byte TYPE_GRASS, TYPE_ROCK, 20
+ .byte TYPE_GRASS, TYPE_DRAGON, 5
+ .byte TYPE_GRASS, TYPE_STEEL, 5
+ .byte TYPE_ICE, TYPE_WATER, 5
+ .byte TYPE_ICE, TYPE_GRASS, 20
+ .byte TYPE_ICE, TYPE_ICE, 5
+ .byte TYPE_ICE, TYPE_GROUND, 20
+ .byte TYPE_ICE, TYPE_FLYING, 20
+ .byte TYPE_ICE, TYPE_DRAGON, 20
+ .byte TYPE_ICE, TYPE_STEEL, 5
+ .byte TYPE_ICE, TYPE_FIRE, 5
+ .byte TYPE_FIGHTING, TYPE_NORMAL, 20
+ .byte TYPE_FIGHTING, TYPE_ICE, 20
+ .byte TYPE_FIGHTING, TYPE_POISON, 5
+ .byte TYPE_FIGHTING, TYPE_FLYING, 5
+ .byte TYPE_FIGHTING, TYPE_PSYCHIC, 5
+ .byte TYPE_FIGHTING, TYPE_BUG, 5
+ .byte TYPE_FIGHTING, TYPE_ROCK, 20
+ .byte TYPE_FIGHTING, TYPE_DARK, 20
+ .byte TYPE_FIGHTING, TYPE_STEEL, 20
+ .byte TYPE_POISON, TYPE_GRASS, 20
+ .byte TYPE_POISON, TYPE_POISON, 5
+ .byte TYPE_POISON, TYPE_GROUND, 5
+ .byte TYPE_POISON, TYPE_ROCK, 5
+ .byte TYPE_POISON, TYPE_GHOST, 5
+ .byte TYPE_POISON, TYPE_STEEL, 0
+ .byte TYPE_GROUND, TYPE_FIRE, 20
+ .byte TYPE_GROUND, TYPE_ELECTRIC, 20
+ .byte TYPE_GROUND, TYPE_GRASS, 5
+ .byte TYPE_GROUND, TYPE_POISON, 20
+ .byte TYPE_GROUND, TYPE_FLYING, 0
+ .byte TYPE_GROUND, TYPE_BUG, 5
+ .byte TYPE_GROUND, TYPE_ROCK, 20
+ .byte TYPE_GROUND, TYPE_STEEL, 20
+ .byte TYPE_FLYING, TYPE_ELECTRIC, 5
+ .byte TYPE_FLYING, TYPE_GRASS, 20
+ .byte TYPE_FLYING, TYPE_FIGHTING, 20
+ .byte TYPE_FLYING, TYPE_BUG, 20
+ .byte TYPE_FLYING, TYPE_ROCK, 5
+ .byte TYPE_FLYING, TYPE_STEEL, 5
+ .byte TYPE_PSYCHIC, TYPE_FIGHTING, 20
+ .byte TYPE_PSYCHIC, TYPE_POISON, 20
+ .byte TYPE_PSYCHIC, TYPE_PSYCHIC, 5
+ .byte TYPE_PSYCHIC, TYPE_DARK, 0
+ .byte TYPE_PSYCHIC, TYPE_STEEL, 5
+ .byte TYPE_BUG, TYPE_FIRE, 5
+ .byte TYPE_BUG, TYPE_GRASS, 20
+ .byte TYPE_BUG, TYPE_FIGHTING, 5
+ .byte TYPE_BUG, TYPE_POISON, 5
+ .byte TYPE_BUG, TYPE_FLYING, 5
+ .byte TYPE_BUG, TYPE_PSYCHIC, 20
+ .byte TYPE_BUG, TYPE_GHOST, 5
+ .byte TYPE_BUG, TYPE_DARK, 20
+ .byte TYPE_BUG, TYPE_STEEL, 5
+ .byte TYPE_ROCK, TYPE_FIRE, 20
+ .byte TYPE_ROCK, TYPE_ICE, 20
+ .byte TYPE_ROCK, TYPE_FIGHTING, 5
+ .byte TYPE_ROCK, TYPE_GROUND, 5
+ .byte TYPE_ROCK, TYPE_FLYING, 20
+ .byte TYPE_ROCK, TYPE_BUG, 20
+ .byte TYPE_ROCK, TYPE_STEEL, 5
+ .byte TYPE_GHOST, TYPE_NORMAL, 0
+ .byte TYPE_GHOST, TYPE_PSYCHIC, 20
+ .byte TYPE_GHOST, TYPE_DARK, 5
+ .byte TYPE_GHOST, TYPE_STEEL, 5
+ .byte TYPE_GHOST, TYPE_GHOST, 20
+ .byte TYPE_DRAGON, TYPE_DRAGON, 20
+ .byte TYPE_DRAGON, TYPE_STEEL, 5
+ .byte TYPE_DARK, TYPE_FIGHTING, 5
+ .byte TYPE_DARK, TYPE_PSYCHIC, 20
+ .byte TYPE_DARK, TYPE_GHOST, 20
+ .byte TYPE_DARK, TYPE_DARK, 5
+ .byte TYPE_DARK, TYPE_STEEL, 5
+ .byte TYPE_STEEL, TYPE_FIRE, 5
+ .byte TYPE_STEEL, TYPE_WATER, 5
+ .byte TYPE_STEEL, TYPE_ELECTRIC, 5
+ .byte TYPE_STEEL, TYPE_ICE, 20
+ .byte TYPE_STEEL, TYPE_ROCK, 20
+ .byte TYPE_STEEL, TYPE_STEEL, 5
+ .byte 0xFE, 0xFE, 0
+ .byte TYPE_NORMAL, TYPE_GHOST, 0
+ .byte TYPE_FIGHTING, TYPE_GHOST, 0
+ .byte 0xFF, 0xFF, 0
diff --git a/graphics/birch_speech/bg0.pal b/graphics/birch_speech/bg0.pal
new file mode 100644
index 000000000..31b66d4b3
--- /dev/null
+++ b/graphics/birch_speech/bg0.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+255 255 164
+255 255 106
+222 222 90
+189 189 74
+156 156 57
+123 123 49
+90 90 32
+57 57 16
+197 255 205
+123 255 131
+115 222 106
+106 189 90
+98 156 65
+90 123 49
+0 0 0
diff --git a/graphics/birch_speech/bg1.pal b/graphics/birch_speech/bg1.pal
new file mode 100644
index 000000000..31b66d4b3
--- /dev/null
+++ b/graphics/birch_speech/bg1.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+255 255 164
+255 255 106
+222 222 90
+189 189 74
+156 156 57
+123 123 49
+90 90 32
+57 57 16
+197 255 205
+123 255 131
+115 222 106
+106 189 90
+98 156 65
+90 123 49
+0 0 0
diff --git a/graphics/birch_speech/bg2.pal b/graphics/birch_speech/bg2.pal
new file mode 100644
index 000000000..3457f9b45
--- /dev/null
+++ b/graphics/birch_speech/bg2.pal
@@ -0,0 +1,11 @@
+JASC-PAL
+0100
+8
+255 255 164
+255 255 106
+222 222 90
+189 189 74
+156 156 57
+123 123 49
+90 90 32
+57 57 16
diff --git a/graphics/birch_speech/map.bin b/graphics/birch_speech/map.bin
new file mode 100644
index 000000000..ad5540b7c
--- /dev/null
+++ b/graphics/birch_speech/map.bin
Binary files differ
diff --git a/graphics/birch_speech/shadow.png b/graphics/birch_speech/shadow.png
new file mode 100644
index 000000000..4487ea9ea
--- /dev/null
+++ b/graphics/birch_speech/shadow.png
Binary files differ
diff --git a/graphics/link/minigame_digits.pal b/graphics/link/minigame_digits.pal
new file mode 100644
index 000000000..e27640830
--- /dev/null
+++ b/graphics/link/minigame_digits.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+205 205 205
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/link/minigame_digits.png b/graphics/link/minigame_digits.png
new file mode 100644
index 000000000..172994249
--- /dev/null
+++ b/graphics/link/minigame_digits.png
Binary files differ
diff --git a/graphics/link/minigame_digits2.png b/graphics/link/minigame_digits2.png
new file mode 100644
index 000000000..285aa4aed
--- /dev/null
+++ b/graphics/link/minigame_digits2.png
Binary files differ
diff --git a/graphics/misc/emotion_exclamation.png b/graphics/misc/emotion_exclamation.png
new file mode 100644
index 000000000..595566d2f
--- /dev/null
+++ b/graphics/misc/emotion_exclamation.png
Binary files differ
diff --git a/graphics/misc/emotion_heart.png b/graphics/misc/emotion_heart.png
new file mode 100644
index 000000000..9995984b4
--- /dev/null
+++ b/graphics/misc/emotion_heart.png
Binary files differ
diff --git a/graphics/misc/emotion_question.png b/graphics/misc/emotion_question.png
new file mode 100644
index 000000000..7376fd058
--- /dev/null
+++ b/graphics/misc/emotion_question.png
Binary files differ
diff --git a/graphics/misc/main_menu_bg.pal b/graphics/misc/main_menu_bg.pal
new file mode 100644
index 000000000..7aca54c52
--- /dev/null
+++ b/graphics/misc/main_menu_bg.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+139 148 255
+255 255 255
+49 57 82
+90 98 115
+8 8 16
+148 156 172
+205 222 238
+180 180 189
+189 205 222
+32 32 49
+123 131 139
+49 82 123
+41 123 197
+57 139 213
+90 164 230
+139 197 246
diff --git a/graphics/misc/main_menu_text.pal b/graphics/misc/main_menu_text.pal
new file mode 100644
index 000000000..25a3ac1d2
--- /dev/null
+++ b/graphics/misc/main_menu_text.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 255 255
+255 255 255
+98 98 98
+213 213 205
+230 8 8
+255 189 115
+32 156 8
+148 246 148
+49 82 205
+164 197 246
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/graphics/misc/reset_rtc_screen_arrow.pal b/graphics/misc/reset_rtc_screen_arrow.pal
new file mode 100644
index 000000000..b2e8a5f5f
--- /dev/null
+++ b/graphics/misc/reset_rtc_screen_arrow.pal
@@ -0,0 +1,7 @@
+JASC-PAL
+0100
+4
+0 0 0
+255 0 0
+74 74 74
+0 0 0
diff --git a/graphics/misc/reset_rtc_screen_downarrow.png b/graphics/misc/reset_rtc_screen_downarrow.png
new file mode 100644
index 000000000..8f7b3480d
--- /dev/null
+++ b/graphics/misc/reset_rtc_screen_downarrow.png
Binary files differ
diff --git a/graphics/misc/reset_rtc_screen_rightarrow.png b/graphics/misc/reset_rtc_screen_rightarrow.png
new file mode 100644
index 000000000..785b3c1db
--- /dev/null
+++ b/graphics/misc/reset_rtc_screen_rightarrow.png
Binary files differ
diff --git a/graphics/title_screen/unk_853EF78.pal b/graphics/title_screen/unk_853EF78.pal
new file mode 100644
index 000000000..0cc3bebc1
--- /dev/null
+++ b/graphics/title_screen/unk_853EF78.pal
@@ -0,0 +1,115 @@
+JASC-PAL
+0100
+112
+0 0 0
+0 0 0
+16 16 16
+32 32 32
+49 49 49
+65 65 65
+90 90 90
+106 106 106
+123 123 123
+139 139 139
+156 156 156
+180 180 180
+197 197 197
+213 213 213
+255 255 255
+255 0 0
+0 0 0
+98 148 16
+98 156 16
+106 164 24
+115 172 32
+123 180 41
+131 197 49
+139 205 57
+148 213 65
+156 222 74
+180 106 172
+0 0 0
+0 0 0
+148 115 115
+123 131 65
+197 197 197
+123 131 65
+255 255 255
+255 255 255
+255 255 255
+0 32 0
+8 41 8
+24 57 16
+41 74 32
+49 90 41
+65 106 49
+82 123 65
+255 255 255
+255 255 255
+255 255 255
+255 255 255
+255 255 255
+189 106 8
+0 139 74
+255 255 255
+8 106 49
+8 115 57
+16 123 65
+16 131 74
+24 148 82
+24 156 90
+32 164 98
+41 180 115
+8 65 57
+205 255 197
+255 255 255
+255 0 0
+0 0 0
+123 131 65
+255 255 255
+255 255 255
+255 255 255
+0 0 0
+8 8 8
+24 24 24
+41 41 41
+49 49 49
+65 65 65
+82 82 82
+0 123 230
+255 255 255
+255 255 255
+255 0 0
+255 189 0
+255 255 255
+255 255 255
+255 255 255
+255 255 255
+0 0 0
+41 74 32
+65 106 49
+90 139 74
+115 180 98
+139 213 123
+172 255 148
+0 123 230
+255 255 255
+255 255 255
+255 0 0
+255 189 0
+189 106 8
+0 139 74
+255 255 255
+8 106 49
+8 115 57
+16 123 65
+16 131 74
+24 148 82
+24 156 90
+32 164 98
+41 180 115
+8 65 57
+180 230 172
+255 255 255
+255 0 0
+255 189 0
diff --git a/include/battle.h b/include/battle.h
index 10cdfaa73..9875f265e 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -5,6 +5,7 @@
#include "battle_util.h"
#include "battle_script_commands.h"
#include "battle_2.h"
+#include "battle_ai_switch_items.h"
/*
Banks are a name given to what could be called a 'battlerId' or 'monControllerId'.
@@ -77,6 +78,7 @@
#define BATTLE_PLAYER_TELEPORTED 0x5
#define BATTLE_POKE_FLED 0x6
#define BATTLE_CAUGHT 0x7
+#define BATTLE_SAFARI_OUT_OF_BALLS 0x8
#define BATTLE_FORFEITED 0x9
#define BATTLE_OPPONENT_TELEPORTED 0xA
@@ -498,7 +500,7 @@ struct BattleHistory
struct UsedMoves usedMoves[BATTLE_BANKS_COUNT];
u8 abilities[BATTLE_BANKS_COUNT];
u8 itemEffects[BATTLE_BANKS_COUNT];
- u16 TrainerItems[BATTLE_BANKS_COUNT];
+ u16 trainerItems[BATTLE_BANKS_COUNT];
u8 itemsNo;
};
@@ -549,11 +551,11 @@ struct BattleResults
u8 playerSwitchesCounter; // 0x2
u8 unk3; // 0x3
u8 unk4; // 0x4
- u8 unk5_0:1; // 0x5 , 0x1
- u8 unk5_1:1; // 0x5 , 0x2
- u8 caughtMonBall:4; // 0x5 , 0x4/0x8/0x10/0x20
- u8 unk5_6:1; // 0x5 , 0x40
- u8 unk5_7:1; // 0x5 , 0x80
+ u8 unk5_0:1; // 0x5
+ u8 usedMasterBall:1; // 0x5
+ u8 caughtMonBall:4; // 0x5
+ u8 unk5_6:1; // 0x5
+ u8 unk5_7:1; // 0x5
u16 playerMon1Species; // 0x6
u8 playerMon1Name[11]; // 0x8
u8 battleTurnCounter; // 0x13
@@ -566,7 +568,7 @@ struct BattleResults
u16 caughtMonSpecies; // 0x28
u8 caughtMonNick[10]; // 0x2A
u8 filler34[2];
- u8 catchAttempts[12]; // 0x36
+ u8 catchAttempts[11]; // 0x36
};
extern struct BattleResults gBattleResults;
@@ -626,7 +628,7 @@ struct BattleStruct
u8 field_8B;
u8 field_8C;
u8 field_8D;
- u8 field_8E;
+ u8 stringMoveType;
u8 expGetterBank;
u8 field_90;
u8 field_91;
@@ -654,8 +656,8 @@ struct BattleStruct
void (*savedCallback)(void);
u16 usedHeldItems[BATTLE_BANKS_COUNT];
u8 field_C0[4];
- u8 field_C4[2];
- u8 field_C6[2];
+ u8 AI_itemType[2];
+ u8 AI_itemFlags[2];
u16 choicedMove[BATTLE_BANKS_COUNT];
u16 changedItems[BATTLE_BANKS_COUNT];
u8 intimidateBank;
@@ -830,8 +832,8 @@ struct BattleScripting
u8 atk6C_state;
u8 learnMoveState;
u8 field_20;
- u8 field_21;
- u8 field_22;
+ u8 reshowMainState;
+ u8 reshowHelperState;
u8 field_23;
u8 field_24;
u8 multiplayerId;
@@ -861,9 +863,29 @@ void FreeBattleSpritesData(void);
void AllocateMonSpritesGfx(void);
void FreeMonSpritesGfx(void);
void BattleMusicStop(void);
-void sub_805E990(struct Pokemon* mon, u8 bank);
+void sub_805E990(struct Pokemon *mon, u8 bank);
void sub_805EF14(void);
bool8 BattleInitAllSprites(u8 *state1, u8 *state2);
+void sub_805E350(void);
+bool8 BattleLoadAllHealthBoxesGfx(u8 state);
+void LoadAndCreateEnemyShadowSprites(void);
+void SetBankEnemyShadowSpriteCallback(u8 bank, u16 species);
+void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 bank);
+void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 bank);
+void BattleLoadSubstituteSpriteGfx(u8 bank, bool8 arg1);
+
+enum
+{
+ BACK_PIC_BRENDAN,
+ BACK_PIC_MAY,
+ BACK_PIC_RED,
+ BACK_PIC_LEAF,
+ BACK_PIC_RS_BRENDAN,
+ BACK_PIC_RS_MAY,
+ BACK_PIC_WALLY,
+ BACK_PIC_STEVEN
+};
+void LoadBackTrainerBankSpriteGfx(u8 backPicId, u8 bank);
// rom_80A5C6C
u8 GetBankSide(u8 bank);
@@ -923,6 +945,10 @@ struct MonSpritesGfx
struct SpriteTemplate templates[4];
};
+extern struct BattleSpritesGfx* gMonSpritesGfx;
+extern u8 gBattleOutcome;
+extern u16 gLastUsedItem;
+extern u32 gBattleTypeFlags;
extern struct MonSpritesGfx* gMonSpritesGfxPtr;
#endif // GUARD_BATTLE_H
diff --git a/include/battle_2.h b/include/battle_2.h
index edd6b6ef3..677bf0505 100644
--- a/include/battle_2.h
+++ b/include/battle_2.h
@@ -15,6 +15,7 @@ void SwapTurnOrder(u8 id1, u8 id2);
void BattleTurnPassed(void);
void RunBattleScriptCommands_PopCallbacksStack(void);
void RunBattleScriptCommands(void);
+u32 sub_80397C4(u32 setId, u32 tableId);
void sub_8039E9C(struct Sprite *sprite);
extern const u8 gStatusConditionString_PoisonJpn[8];
@@ -25,6 +26,6 @@ extern const u8 gStatusConditionString_IceJpn[8];
extern const u8 gStatusConditionString_ConfusionJpn[8];
extern const u8 gStatusConditionString_LoveJpn[8];
-extern const u8 * const gStatusConditionStringsTable[][2];
+extern const u8 * const gStatusConditionStringsTable[7][2];
#endif // GUARD_BATTLE_2_H
diff --git a/include/battle_ai_switch_items.h b/include/battle_ai_switch_items.h
new file mode 100644
index 000000000..0a230e7f6
--- /dev/null
+++ b/include/battle_ai_switch_items.h
@@ -0,0 +1,17 @@
+#ifndef GUARD_BATTLE_AI_SWITCH_ITEMS_H
+#define GUARD_BATTLE_AI_SWITCH_ITEMS_H
+
+enum
+{
+ AI_ITEM_FULL_RESTORE = 1,
+ AI_ITEM_HEAL_HP,
+ AI_ITEM_CURE_CONDITION,
+ AI_ITEM_X_STAT,
+ AI_ITEM_GUARD_SPECS,
+ AI_ITEM_NOT_RECOGNIZABLE
+};
+
+void AI_TrySwitchOrUseItem(void);
+u8 GetMostSuitableMonToSwitchInto(void);
+
+#endif // GUARD_BATTLE_AI_SWITCH_ITEMS_H
diff --git a/include/battle_controller_player.h b/include/battle_controller_player.h
new file mode 100644
index 000000000..6d095efe7
--- /dev/null
+++ b/include/battle_controller_player.h
@@ -0,0 +1,7 @@
+#ifndef GUARD_BATTLE_CONTROLLER_PLAYER_H
+#define GUARD_BATTLE_CONTROLLER_PLAYER_H
+
+void ActionSelectionCreateCursorAt(u8 cursorPos, u8 unused);
+void ActionSelectionDestroyCursorAt(u8 cursorPos);
+
+#endif // GUARD_BATTLE_CONTROLLER_PLAYER_H
diff --git a/include/battle_controllers.h b/include/battle_controllers.h
index 2281fdaff..e710deea5 100644
--- a/include/battle_controllers.h
+++ b/include/battle_controllers.h
@@ -1,6 +1,8 @@
#ifndef GUARD_BATTLE_CONTROLLERS_H
#define GUARD_BATTLE_CONTROLLERS_H
+#include "battle_controller_player.h"
+
#define REQUEST_ALL_BATTLE 0x0
#define REQUEST_SPECIES_BATTLE 0x1
#define REQUEST_HELDITEM_BATTLE 0x2
@@ -39,8 +41,8 @@ struct MovePpInfo
struct ChooseMoveStruct
{
u16 moves[4];
- u8 ppNumbers[4];
- u8 ppWithBonusNumbers[4];
+ u8 currentPp[4];
+ u8 maxPp[4];
u16 species;
u8 monType1;
u8 monType2;
@@ -84,5 +86,6 @@ void Emit_x32(u8 bufferId);
void EmitPrintString(u8 bufferId, u16 stringId);
void EmitResetActionMoveSelection(u8 bufferId, u8 caseId);
void EmitBallThrow(u8 bufferId, u8 caseId);
+void EmitCmd_x21(u8 bufferId, u8 arg1, u16 arg2);
#endif // GUARD_BATTLE_CONTROLLERS_H
diff --git a/include/battle_frontier_2.h b/include/battle_frontier_2.h
new file mode 100644
index 000000000..4f37248cc
--- /dev/null
+++ b/include/battle_frontier_2.h
@@ -0,0 +1,9 @@
+#ifndef GUARD_BATTLE_FRONTIER_2_H
+#define GUARD_BATTLE_FRONTIER_2_H
+
+void sub_81A8934(u8);
+void sub_81A895C(void);
+u16 sub_81A89A0(u8);
+void sub_81A8AF8(void);
+
+#endif // GUARD_BATTLE_FRONTIER_2_H
diff --git a/include/battle_interface.h b/include/battle_interface.h
new file mode 100644
index 000000000..cecc7bd1f
--- /dev/null
+++ b/include/battle_interface.h
@@ -0,0 +1,28 @@
+#ifndef GUARD_BATTLE_INTERFACE_H
+#define GUARD_BATTLE_INTERFACE_H
+
+enum
+{
+ HEALTHBOX_ALL,
+ HEALTHBOX_CURRENT_HP,
+ HEALTHBOX_MAX_HP,
+ HEALTHBOX_LEVEL,
+ HEALTHBOX_NICK,
+ HEALTHBOX_HEALTH_BAR,
+ HEALTHBOX_EXP_BAR,
+ HEALTHBOX_7,
+ HEALTHBOX_8,
+ HEALTHBOX_STATUS_ICON,
+ HEALTHBOX_SAFARI_ALL_TEXT,
+ HEALTHBOX_SAFARI_BALLS_TEXT
+};
+
+u8 CreateBankHealthboxSprites(u8 bank);
+u8 CreateSafariPlayerHealthboxSprites(void);
+void SetBankHealthboxSpritePos(u8 bank);
+void SetHealthboxSpriteVisible(u8 healthboxSpriteId);
+void SetHealthboxSpriteInvisible(u8 healthboxSpriteId);
+void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elementId);
+void nullsub_30(u8 healthboxSpriteId, bool8 isDoubleBattleBankOnly);
+
+#endif // GUARD_BATTLE_INTERFACE_H
diff --git a/include/battle_message.h b/include/battle_message.h
index 3bc7117bb..3b154c5a6 100644
--- a/include/battle_message.h
+++ b/include/battle_message.h
@@ -3,59 +3,59 @@
// for 0xFD
-#define B_TXT_BUFF1 00
-#define B_TXT_BUFF2 01
-#define B_TXT_COPY_VAR_1 02
-#define B_TXT_COPY_VAR_2 03
-#define B_TXT_COPY_VAR_3 04
-#define B_TXT_PLAYER_MON1_NAME 05
-#define B_TXT_OPPONENT_MON1_NAME 06
-#define B_TXT_PLAYER_MON2_NAME 07
-#define B_TXT_OPPONENT_MON2_NAME 08
-#define B_TXT_LINK_PLAYER_MON1_NAME 09
-#define B_TXT_LINK_OPPONENT_MON1_NAME 0A
-#define B_TXT_LINK_PLAYER_MON2_NAME 0B
-#define B_TXT_LINK_OPPONENT_MON2_NAME 0C
-#define B_TXT_ATK_NAME_WITH_PREFIX_MON1 0D
-#define B_TXT_ATK_NAME 0E
-#define B_TXT_ATK_NAME_WITH_PREFIX 0F
-#define B_TXT_DEF_NAME_WITH_PREFIX 10
-#define B_TXT_EFF_NAME_WITH_PREFIX 11 // EFF = short for gEffectBank
-#define B_TXT_SCR_ACTIVE_NAME_WITH_PREFIX 12
-#define B_TXT_ACTIVE_NAME_WITH_PREFIX 13
-#define B_TXT_CURRENT_MOVE 14
-#define B_TXT_LAST_MOVE 15
-#define B_TXT_LAST_ITEM 16
-#define B_TXT_LAST_ABILITY 17
-#define B_TXT_ATK_ABILITY 18
-#define B_TXT_DEF_ABILITY 19
-#define B_TXT_SCR_ACTIVE_ABILITY 1A
-#define B_TXT_EFF_ABILITY 1B
-#define B_TXT_TRAINER1_CLASS 1C
-#define B_TXT_TRAINER1_NAME 1D
-#define B_TXT_1E 1E // trainer name for a link player
-#define B_TXT_1F 1F // trainer name for a link player
-#define B_TXT_20 20 // trainer name for a link player
-#define B_TXT_21 21 // trainer name for a link player
-#define B_TXT_22 22 // trainer name for a link player
-#define B_TXT_PLAYER_NAME 23
-#define B_TXT_TRAINER1_LOSE_TEXT 24
-#define B_TXT_TRAINER1_WIN_TEXT 25
-#define B_TXT_26 26
-#define B_TXT_PC_CREATOR_NAME 27
-#define B_TXT_ATK_PREFIX1 28
-#define B_TXT_DEF_PREFIX1 29
-#define B_TXT_ATK_PREFIX2 2A
-#define B_TXT_DEF_PREFIX2 2B
-#define B_TXT_ATK_PREFIX3 2C
-#define B_TXT_DEF_PREFIX3 2D
-#define B_TXT_TRAINER2_CLASS 2E
-#define B_TXT_TRAINER2_NAME 2F
-#define B_TXT_TRAINER2_LOSE_TEXT 30
-#define B_TXT_TRAINER2_WIN_TEXT 31
-#define B_TXT_PARTNER_CLASS 32
-#define B_TXT_PARTNER_NAME 33
-#define B_TXT_BUFF3 34
+#define B_TXT_BUFF1 0x0
+#define B_TXT_BUFF2 0x1
+#define B_TXT_COPY_VAR_1 0x2
+#define B_TXT_COPY_VAR_2 0x3
+#define B_TXT_COPY_VAR_3 0x4
+#define B_TXT_PLAYER_MON1_NAME 0x5
+#define B_TXT_OPPONENT_MON1_NAME 0x6
+#define B_TXT_PLAYER_MON2_NAME 0x7
+#define B_TXT_OPPONENT_MON2_NAME 0x8
+#define B_TXT_LINK_PLAYER_MON1_NAME 0x9
+#define B_TXT_LINK_OPPONENT_MON1_NAME 0xA
+#define B_TXT_LINK_PLAYER_MON2_NAME 0xB
+#define B_TXT_LINK_OPPONENT_MON2_NAME 0xC
+#define B_TXT_ATK_NAME_WITH_PREFIX_MON1 0xD
+#define B_TXT_ATK_PARTNER_NAME 0xE
+#define B_TXT_ATK_NAME_WITH_PREFIX 0xF
+#define B_TXT_DEF_NAME_WITH_PREFIX 0x10
+#define B_TXT_EFF_NAME_WITH_PREFIX 0x11 // EFF = short for gEffectBank
+#define B_TXT_ACTIVE_NAME_WITH_PREFIX 0x12
+#define B_TXT_SCR_ACTIVE_NAME_WITH_PREFIX 0x13
+#define B_TXT_CURRENT_MOVE 0x14
+#define B_TXT_LAST_MOVE 0x15
+#define B_TXT_LAST_ITEM 0x16
+#define B_TXT_LAST_ABILITY 0x17
+#define B_TXT_ATK_ABILITY 0x18
+#define B_TXT_DEF_ABILITY 0x19
+#define B_TXT_SCR_ACTIVE_ABILITY 0x1A
+#define B_TXT_EFF_ABILITY 0x1B
+#define B_TXT_TRAINER1_CLASS 0x1C
+#define B_TXT_TRAINER1_NAME 0x1D
+#define B_TXT_1E 0x1E // trainer name for a link player
+#define B_TXT_1F 0x1F // trainer name for a link player
+#define B_TXT_20 0x20 // trainer name for a link player
+#define B_TXT_21 0x21 // trainer name for a link player
+#define B_TXT_22 0x22 // trainer name for a link player
+#define B_TXT_PLAYER_NAME 0x23
+#define B_TXT_TRAINER1_LOSE_TEXT 0x24
+#define B_TXT_TRAINER1_WIN_TEXT 0x25
+#define B_TXT_26 0x26
+#define B_TXT_PC_CREATOR_NAME 0x27
+#define B_TXT_ATK_PREFIX1 0x28
+#define B_TXT_DEF_PREFIX1 0x29
+#define B_TXT_ATK_PREFIX2 0x2A
+#define B_TXT_DEF_PREFIX2 0x2B
+#define B_TXT_ATK_PREFIX3 0x2C
+#define B_TXT_DEF_PREFIX3 0x2D
+#define B_TXT_TRAINER2_CLASS 0x2E
+#define B_TXT_TRAINER2_NAME 0x2F
+#define B_TXT_TRAINER2_LOSE_TEXT 0x30
+#define B_TXT_TRAINER2_WIN_TEXT 0x31
+#define B_TXT_PARTNER_CLASS 0x32
+#define B_TXT_PARTNER_NAME 0x33
+#define B_TXT_BUFF3 0x34
// for B_TXT_BUFF1, B_TXT_BUFF2 and B_TXT_BUFF3
@@ -205,12 +205,22 @@ void BufferStringBattle(u16 stringID);
u32 BattleStringExpandPlaceholdersToDisplayedString(const u8* src);
u32 BattleStringExpandPlaceholders(const u8* src, u8* dst);
void sub_814F9EC(const u8* text, u8 arg1);
+void SetPpNumbersPaletteInMoveSelection(void);
+u8 GetCurrentPpToMaxPpState(u8 currentPp, u8 maxPp);
-extern u8 gBattleTextBuff1[];
-extern u8 gBattleTextBuff2[];
-extern u8 gBattleTextBuff3[];
-extern u8 gDisplayedStringBattle[];
+#define TEXT_BUFF_ARRAY_COUNT 16
+extern u8 gDisplayedStringBattle[300];
+extern u8 gBattleTextBuff1[TEXT_BUFF_ARRAY_COUNT];
+extern u8 gBattleTextBuff2[TEXT_BUFF_ARRAY_COUNT];
+extern u8 gBattleTextBuff3[TEXT_BUFF_ARRAY_COUNT];
+
+extern const u8* const gStatNamesTable[];
+extern const u8* const gPokeblockWasTooXStringTable[];
extern const u8* const gRefereeStringsTable[];
+extern const u8* const gStatNamesTable2[];
+
+extern const u16 gMissStringIds[];
+extern const u16 gTrappingMoves[];
#endif // GUARD_BATTLE_MESSAGE_H
diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h
index ae0d20f28..590944f02 100644
--- a/include/battle_script_commands.h
+++ b/include/battle_script_commands.h
@@ -43,7 +43,7 @@
void AI_CalcDmg(u8 bankAtk, u8 bankDef);
u8 TypeCalc(u16 move, u8 bankAtk, u8 bankDef);
-u8 AI_TypeCalc(u16 move, u16 species, u8 ability);
+u8 AI_TypeCalc(u16 move, u16 targetSpecies, u8 targetAbility);
u8 BankGetTurnOrder(u8 bank);
void SetMoveEffect(bool8 primary, u8 certain);
void BattleDestroyCursorAt(u8 cursorPosition);
diff --git a/include/battle_setup.h b/include/battle_setup.h
index 80fb55da2..e4acd8601 100644
--- a/include/battle_setup.h
+++ b/include/battle_setup.h
@@ -1,6 +1,15 @@
#ifndef GUARD_BATTLE_SETUP_H
#define GUARD_BATTLE_SETUP_H
+void BattleSetup_StartScriptedWildBattle(void);
u8 BattleSetup_GetTerrainId(void);
+u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data);
+
+u8 HasTrainerAlreadyBeenFought(u16);
+void trainer_flag_set(u16);
+void trainer_flag_clear(u16);
+void BattleSetup_StartTrainerBattle(void);
+u8 *BattleSetup_GetScriptAddrAfterBattle(void);
+u8 *BattleSetup_GetTrainerPostBattleScript(void);
#endif // GUARD_BATTLE_SETUP_H
diff --git a/include/battle_string_ids.h b/include/battle_string_ids.h
new file mode 100644
index 000000000..f242284b0
--- /dev/null
+++ b/include/battle_string_ids.h
@@ -0,0 +1,387 @@
+#ifndef GUARD_BATTLE_STRING_IDS_H
+#define GUARD_BATTLE_STRING_IDS_H
+
+#define BATTLESTRINGS_COUNT 369
+
+#define BATTLESTRINGS_ID_ADDER 12 // all battlestrings have its ID + 12, because first 5 are reserved
+
+#define STRINGID_INTROMSG 0
+#define STRINGID_INTROSENDOUT 1
+#define STRINGID_RETURNMON 2
+#define STRINGID_SWITCHINMON 3
+#define STRINGID_USEDMOVE 4
+#define STRINGID_BATTLEEND 5
+
+
+// todo: make some of those names less vague: attacker/target vs pkmn, etc.
+#define STRINGID_TRAINER1LOSETEXT 12
+#define STRINGID_PKMNGAINEDEXP 13
+#define STRINGID_PKMNGREWTOLV 14
+#define STRINGID_PKMNLEARNEDMOVE 15
+#define STRINGID_TRYTOLEARNMOVE1 16
+#define STRINGID_TRYTOLEARNMOVE2 17
+#define STRINGID_TRYTOLEARNMOVE3 18
+#define STRINGID_PKMNFORGOTMOVE 19
+#define STRINGID_STOPLEARNINGMOVE 20
+#define STRINGID_DIDNOTLEARNMOVE 21
+#define STRINGID_PKMNLEARNEDMOVE2 22
+#define STRINGID_ATTACKMISSED 23
+#define STRINGID_PKMNPROTECTEDITSELF 24
+#define STRINGID_STATSWONTINCREASE2 25
+#define STRINGID_AVOIDEDDAMAGE 26
+#define STRINGID_ITDOESNTAFFECT 27
+#define STRINGID_ATTACKERFAINTED 28
+#define STRINGID_TARGETFAINTED 29
+#define STRINGID_PLAYERGOTMONEY 30
+#define STRINGID_PLAYERWHITEOUT 31
+#define STRINGID_PLAYERWHITEOUT2 32
+#define STRINGID_PREVENTSESCAPE 33
+#define STRINGID_HITXTIMES 34
+#define STRINGID_PKMNFELLASLEEP 35
+#define STRINGID_PKMNMADESLEEP 36
+#define STRINGID_PKMNALREADYASLEEP 37
+#define STRINGID_PKMNALREADYASLEEP2 38
+#define STRINGID_PKMNWASNTAFFECTED 39
+#define STRINGID_PKMNWASPOISONED 40
+#define STRINGID_PKMNPOISONEDBY 41
+#define STRINGID_PKMNHURTBYPOISON 42
+#define STRINGID_PKMNALREADYPOISONED 43
+#define STRINGID_PKMNBADLYPOISONED 44
+#define STRINGID_PKMNENERGYDRAINED 45
+#define STRINGID_PKMNWASBURNED 46
+#define STRINGID_PKMNBURNEDBY 47
+#define STRINGID_PKMNHURTBYBURN 48
+#define STRINGID_PKMNWASFROZEN 49
+#define STRINGID_PKMNFROZENBY 50
+#define STRINGID_PKMNISFROZEN 51
+#define STRINGID_PKMNWASDEFROSTED 52
+#define STRINGID_PKMNWASDEFROSTED2 53
+#define STRINGID_PKMNWASDEFROSTEDBY 54
+#define STRINGID_PKMNWASPARALYZED 55
+#define STRINGID_PKMNWASPARALYZEDBY 56
+#define STRINGID_PKMNISPARALYZED 57
+#define STRINGID_PKMNISALREADYPARALYZED 58
+#define STRINGID_PKMNHEALEDPARALYSIS 59
+#define STRINGID_PKMNDREAMEATEN 60
+#define STRINGID_STATSWONTINCREASE 61
+#define STRINGID_STATSWONTDECREASE 62
+#define STRINGID_TEAMSTOPPEDWORKING 63
+#define STRINGID_FOESTOPPEDWORKING 64
+#define STRINGID_PKMNISCONFUSED 65
+#define STRINGID_PKMNHEALEDCONFUSION 66
+#define STRINGID_PKMNWASCONFUSED 67
+#define STRINGID_PKMNALREADYCONFUSED 68
+#define STRINGID_PKMNFELLINLOVE 69
+#define STRINGID_PKMNINLOVE 70
+#define STRINGID_PKMNIMMOBILIZEDBYLOVE 71
+#define STRINGID_PKMNBLOWNAWAY 72
+#define STRINGID_PKMNCHANGEDTYPE 73
+#define STRINGID_PKMNFLINCHED 74
+#define STRINGID_PKMNREGAINEDHEALTH 75
+#define STRINGID_PKMNHPFULL 76
+#define STRINGID_PKMNRAISEDSPDEF 77
+#define STRINGID_PKMNRAISEDDEF 78
+#define STRINGID_PKMNCOVEREDBYVEIL 79
+#define STRINGID_PKMNUSEDSAFEGUARD 80
+#define STRINGID_PKMNSAFEGUARDEXPIRED 81
+#define STRINGID_PKMNWENTTOSLEEP 82
+#define STRINGID_PKMNSLEPTHEALTHY 83
+#define STRINGID_PKMNWHIPPEDWHIRLWIND 84
+#define STRINGID_PKMNTOOKSUNLIGHT 85
+#define STRINGID_PKMNLOWEREDHEAD 86
+#define STRINGID_PKMNISGLOWING 87
+#define STRINGID_PKMNFLEWHIGH 88
+#define STRINGID_PKMNDUGHOLE 89
+#define STRINGID_PKMNSQUEEZEDBYBIND 90
+#define STRINGID_PKMNTRAPPEDINVORTEX 91
+#define STRINGID_PKMNWRAPPEDBY 92
+#define STRINGID_PKMNCLAMPED 93
+#define STRINGID_PKMNHURTBY 94
+#define STRINGID_PKMNFREEDFROM 95
+#define STRINGID_PKMNCRASHED 96
+#define STRINGID_PKMNSHROUDEDINMIST 97
+#define STRINGID_PKMNPROTECTEDBYMIST 98
+#define STRINGID_PKMNGETTINGPUMPED 99
+#define STRINGID_PKMNHITWITHRECOIL 100
+#define STRINGID_PKMNPROTECTEDITSELF2 101
+#define STRINGID_PKMNBUFFETEDBYSANDSTORM 102
+#define STRINGID_PKMNPELTEDBYHAIL 103
+#define STRINGID_PKMNSEEDED 104
+#define STRINGID_PKMNEVADEDATTACK 105
+#define STRINGID_PKMNSAPPEDBYLEECHSEED 106
+#define STRINGID_PKMNFASTASLEEP 107
+#define STRINGID_PKMNWOKEUP 108
+#define STRINGID_PKMNUPROARKEPTAWAKE 109
+#define STRINGID_PKMNWOKEUPINUPROAR 110
+#define STRINGID_PKMNCAUSEDUPROAR 111
+#define STRINGID_PKMNMAKINGUPROAR 112
+#define STRINGID_PKMNCALMEDDOWN 113
+#define STRINGID_PKMNCANTSLEEPINUPROAR 114
+#define STRINGID_PKMNSTOCKPILED 115
+#define STRINGID_PKMNCANTSTOCKPILE 116
+#define STRINGID_PKMNCANTSLEEPINUPROAR2 117
+#define STRINGID_UPROARKEPTPKMNAWAKE 118
+#define STRINGID_PKMNSTAYEDAWAKEUSING 119
+#define STRINGID_PKMNSTORINGENERGY 120
+#define STRINGID_PKMNUNLEASHEDENERGY 121
+#define STRINGID_PKMNFATIGUECONFUSION 122
+#define STRINGID_PKMNPICKEDUPITEM 123
+#define STRINGID_PKMNUNAFFECTED 124
+#define STRINGID_PKMNTRANSFORMEDINTO 125
+#define STRINGID_PKMNMADESUBSTITUTE 126
+#define STRINGID_PKMNHASSUBSTITUTE 127
+#define STRINGID_SUBSTITUTEDAMAGED 128
+#define STRINGID_PKMNSUBSTITUTEFADED 129
+#define STRINGID_PKMNMUSTRECHARGE 130
+#define STRINGID_PKMNRAGEBUILDING 131
+#define STRINGID_PKMNMOVEWASDISABLED 132
+#define STRINGID_PKMNMOVEISDISABLED 133
+#define STRINGID_PKMNMOVEDISABLEDNOMORE 134
+#define STRINGID_PKMNGOTENCORE 135
+#define STRINGID_PKMNENCOREENDED 136
+#define STRINGID_PKMNTOOKAIM 137
+#define STRINGID_PKMNSKETCHEDMOVE 138
+#define STRINGID_PKMNTRYINGTOTAKEFOE 139
+#define STRINGID_PKMNTOOKFOE 140
+#define STRINGID_PKMNREDUCEDPP 141
+#define STRINGID_PKMNSTOLEITEM 142
+#define STRINGID_TARGETCANTESCAPENOW 143
+#define STRINGID_PKMNFELLINTONIGHTMARE 144
+#define STRINGID_PKMNLOCKEDINNIGHTMARE 145
+#define STRINGID_PKMNLAIDCURSE 146
+#define STRINGID_PKMNAFFLICTEDBYCURSE 147
+#define STRINGID_SPIKESSCATTERED 148
+#define STRINGID_PKMNHURTBYSPIKES 149
+#define STRINGID_PKMNIDENTIFIED 150
+#define STRINGID_PKMNPERISHCOUNTFELL 151
+#define STRINGID_PKMNBRACEDITSELF 152
+#define STRINGID_PKMNENDUREDHIT 153
+#define STRINGID_MAGNITUDESTRENGTH 154
+#define STRINGID_PKMNCUTHPMAXEDATTACK 155
+#define STRINGID_PKMNCOPIEDSTATCHANGES 156
+#define STRINGID_PKMNGOTFREE 157
+#define STRINGID_PKMNSHEDLEECHSEED 158
+#define STRINGID_PKMNBLEWAWAYSPIKES 159
+#define STRINGID_PKMNFLEDFROMBATTLE 160
+#define STRINGID_PKMNFORESAWATTACK 161
+#define STRINGID_PKMNTOOKATTACK 162
+#define STRINGID_PKMNATTACK 163
+#define STRINGID_PKMNCENTERATTENTION 164
+#define STRINGID_PKMNCHARGINGPOWER 165
+#define STRINGID_NATUREPOWERTURNEDINTO 166
+#define STRINGID_PKMNSTATUSNORMAL 167
+#define STRINGID_PKMNHASNOMOVESLEFT 168
+#define STRINGID_PKMNSUBJECTEDTOTORMENT 169
+#define STRINGID_PKMNCANTUSEMOVETORMENT 170
+#define STRINGID_PKMNTIGHTENINGFOCUS 171
+#define STRINGID_PKMNFELLFORTAUNT 172
+#define STRINGID_PKMNCANTUSEMOVETAUNT 173
+#define STRINGID_PKMNREADYTOHELP 174
+#define STRINGID_PKMNSWITCHEDITEMS 175
+#define STRINGID_PKMNCOPIEDFOE 176
+#define STRINGID_PKMNMADEWISH 177
+#define STRINGID_PKMNWISHCAMETRUE 178
+#define STRINGID_PKMNPLANTEDROOTS 179
+#define STRINGID_PKMNABSORBEDNUTRIENTS 180
+#define STRINGID_PKMNANCHOREDITSELF 181
+#define STRINGID_PKMNWASMADEDROWSY 182
+#define STRINGID_PKMNKNOCKEDOFF 183
+#define STRINGID_PKMNSWAPPEDABILITIES 184
+#define STRINGID_PKMNSEALEDOPPONENTMOVE 185
+#define STRINGID_PKMNCANTUSEMOVESEALED 186
+#define STRINGID_PKMNWANTSGRUDGE 187
+#define STRINGID_PKMNLOSTPPGRUDGE 188
+#define STRINGID_PKMNSHROUDEDITSELF 189
+#define STRINGID_PKMNMOVEBOUNCED 190
+#define STRINGID_PKMNWAITSFORTARGET 191
+#define STRINGID_PKMNSNATCHEDMOVE 192
+#define STRINGID_PKMNMADEITRAIN 193
+#define STRINGID_PKMNRAISEDSPEED 194
+#define STRINGID_PKMNPROTECTEDBY 195
+#define STRINGID_PKMNPREVENTSUSAGE 196
+#define STRINGID_PKMNRESTOREDHPUSING 197
+#define STRINGID_PKMNCHANGEDTYPEWITH 198
+#define STRINGID_PKMNPREVENTSPARALYSISWITH 199
+#define STRINGID_PKMNPREVENTSROMANCEWITH 200
+#define STRINGID_PKMNPREVENTSPOISONINGWITH 201
+#define STRINGID_PKMNPREVENTSCONFUSIONWITH 202
+#define STRINGID_PKMNRAISEDFIREPOWERWITH 203
+#define STRINGID_PKMNANCHORSITSELFWITH 204
+#define STRINGID_PKMNCUTSATTACKWITH 205
+#define STRINGID_PKMNPREVENTSSTATLOSSWITH 206
+#define STRINGID_PKMNHURTSWITH 207
+#define STRINGID_PKMNTRACED 208
+#define STRINGID_STATSHARPLY 209
+#define STRINGID_STATROSE 210
+#define STRINGID_STATHARSHLY 211
+#define STRINGID_STATFELL 212
+#define STRINGID_PKMNSSTATCHANGED 213
+#define STRINGID_PKMNSSTATCHANGED2 214
+#define STRINGID_PKMNSSTATCHANGED3 215
+#define STRINGID_PKMNSSTATCHANGED4 216
+#define STRINGID_CRITICALHIT 217
+#define STRINGID_ONEHITKO 218
+#define STRINGID_123POOF 219
+#define STRINGID_ANDELLIPSIS 220
+#define STRINGID_NOTVERYEFFECTIVE 221
+#define STRINGID_SUPEREFFECTIVE 222
+#define STRINGID_GOTAWAYSAFELY 223
+#define STRINGID_WILDPKMNFLED 224
+#define STRINGID_NORUNNINGFROMTRAINERS 225
+#define STRINGID_CANTESCAPE 226
+#define STRINGID_DONTLEAVEBIRCH 227
+#define STRINGID_BUTNOTHINGHAPPENED 228
+#define STRINGID_BUTITFAILED 229
+#define STRINGID_ITHURTCONFUSION 230
+#define STRINGID_MIRRORMOVEFAILED 231
+#define STRINGID_STARTEDTORAIN 232
+#define STRINGID_DOWNPOURSTARTED 233
+#define STRINGID_RAINCONTINUES 234
+#define STRINGID_DOWNPOURCONTINUES 235
+#define STRINGID_RAINSTOPPED 236
+#define STRINGID_SANDSTORMBREWED 237
+#define STRINGID_SANDSTORMRAGES 238
+#define STRINGID_SANDSTORMSUBSIDED 239
+#define STRINGID_SUNLIGHTGOTBRIGHT 240
+#define STRINGID_SUNLIGHTSTRONG 241
+#define STRINGID_SUNLIGHTFADED 242
+#define STRINGID_STARTEDHAIL 243
+#define STRINGID_HAILCONTINUES 244
+#define STRINGID_HAILSTOPPED 245
+#define STRINGID_FAILEDTOSPITUP 246
+#define STRINGID_FAILEDTOSWALLOW 247
+#define STRINGID_WINDBECAMEHEATWAVE 248
+#define STRINGID_STATCHANGESGONE 249
+#define STRINGID_COINSSCATTERED 250
+#define STRINGID_TOOWEAKFORSUBSTITUTE 251
+#define STRINGID_SHAREDPAIN 252
+#define STRINGID_BELLCHIMED 253
+#define STRINGID_FAINTINTHREE 254
+#define STRINGID_NOPPLEFT 255
+#define STRINGID_BUTNOPPLEFT 256
+#define STRINGID_PLAYERUSEDITEM 257
+#define STRINGID_WALLYUSEDITEM 258
+#define STRINGID_TRAINERBLOCKEDBALL 259
+#define STRINGID_DONTBEATHIEF 260
+#define STRINGID_ITDODGEDBALL 261
+#define STRINGID_YOUMISSEDPKMN 262
+#define STRINGID_PKMNBROKEFREE 263
+#define STRINGID_ITAPPEAREDCAUGHT 264
+#define STRINGID_AARGHALMOSTHADIT 265
+#define STRINGID_SHOOTSOCLOSE 266
+#define STRINGID_GOTCHAPKMNCAUGHT 267
+#define STRINGID_GOTCHAPKMNCAUGHT2 268
+#define STRINGID_GIVENICKNAMECAPTURED 269
+#define STRINGID_PKMNSENTTOPC 270
+#define STRINGID_PKMNDATAADDEDTODEX 271
+#define STRINGID_ITISRAINING 272
+#define STRINGID_SANDSTORMISRAGING 273
+#define STRINGID_CANTESCAPE2 274
+#define STRINGID_PKMNIGNORESASLEEP 275
+#define STRINGID_PKMNIGNOREDORDERS 276
+#define STRINGID_PKMNBEGANTONAP 277
+#define STRINGID_PKMNLOAFING 278
+#define STRINGID_PKMNWONTOBEY 279
+#define STRINGID_PKMNTURNEDAWAY 280
+#define STRINGID_PKMNPRETENDNOTNOTICE 281
+#define STRINGID_ENEMYABOUTTOSWITCHPKMN 282
+#define STRINGID_CREPTCLOSER 283
+#define STRINGID_CANTGETCLOSER 284
+#define STRINGID_PKMNWATCHINGCAREFULLY 285
+#define STRINGID_PKMNCURIOUSABOUTX 286
+#define STRINGID_PKMNENTHRALLEDBYX 287
+#define STRINGID_PKMNIGNOREDX 288
+#define STRINGID_THREWPOKEBLOCKATPKMN 289
+#define STRINGID_OUTOFSAFARIBALLS 290
+#define STRINGID_PKMNSITEMCUREDPARALYSIS 291
+#define STRINGID_PKMNSITEMCUREDPOISON 292
+#define STRINGID_PKMNSITEMHEALEDBURN 293
+#define STRINGID_PKMNSITEMDEFROSTEDIT 294
+#define STRINGID_PKMNSITEMWOKEIT 295
+#define STRINGID_PKMNSITEMSNAPPEDOUT 296
+#define STRINGID_PKMNSITEMCUREDPROBLEM 297
+#define STRINGID_PKMNSITEMRESTOREDHEALTH 298
+#define STRINGID_PKMNSITEMRESTOREDPP 299
+#define STRINGID_PKMNSITEMRESTOREDSTATUS 300
+#define STRINGID_PKMNSITEMRESTOREDHPALITTLE 301
+#define STRINGID_ITEMALLOWSONLYYMOVE 302
+#define STRINGID_PKMNHUNGONWITHX 303
+#define STRINGID_EMPTYSTRING3 304
+#define STRINGID_PKMNSXPREVENTSBURNS 305
+#define STRINGID_PKMNSXBLOCKSY 306
+#define STRINGID_PKMNSXRESTOREDHPALITTLE2 307
+#define STRINGID_PKMNSXWHIPPEDUPSANDSTORM 308
+#define STRINGID_PKMNSXPREVENTSYLOSS 309
+#define STRINGID_PKMNSXINFATUATEDY 310
+#define STRINGID_PKMNSXMADEYINEFFECTIVE 311
+#define STRINGID_PKMNSXCUREDYPROBLEM 312
+#define STRINGID_ITSUCKEDLIQUIDOOZE 313
+#define STRINGID_PKMNTRANSFORMED 314
+#define STRINGID_ELECTRICITYWEAKENED 315
+#define STRINGID_FIREWEAKENED 316
+#define STRINGID_PKMNHIDUNDERWATER 317
+#define STRINGID_PKMNSPRANGUP 318
+#define STRINGID_HMMOVESCANTBEFORGOTTEN 319
+#define STRINGID_XFOUNDONEY 320
+#define STRINGID_PLAYERDEFEATEDTRAINER1 321
+#define STRINGID_SOOTHINGAROMA 322
+#define STRINGID_ITEMSCANTBEUSEDNOW 323
+#define STRINGID_FORXCOMMAYZ 324
+#define STRINGID_USINGXTHEYOFZN 325
+#define STRINGID_PKMNUSEDXTOGETPUMPED 326
+#define STRINGID_PKMNSXMADEYUSELESS 327
+#define STRINGID_PKMNTRAPPEDBYSANDTOMB 328
+#define STRINGID_EMPTYSTRING4 329
+#define STRINGID_ABOOSTED 330
+#define STRINGID_PKMNSXINTENSIFIEDSUN 331
+#define STRINGID_PKMNMAKESGROUNDMISS 332
+#define STRINGID_YOUTHROWABALLNOWRIGHT 333
+#define STRINGID_PKMNSXTOOKATTACK 334
+#define STRINGID_PKMNCHOSEXASDESTINY 335
+#define STRINGID_PKMNLOSTFOCUS 336
+#define STRINGID_USENEXTPKMN 337
+#define STRINGID_PKMNFLEDUSINGITS 338
+#define STRINGID_PKMNFLEDUSING 339
+#define STRINGID_PKMNWASDRAGGEDOUT 340
+#define STRINGID_PREVENTEDFROMWORKING 341
+#define STRINGID_PKMNSITEMNORMALIZEDSTATUS 342
+#define STRINGID_TRAINER1USEDITEM 343
+#define STRINGID_BOXISFULL 344
+#define STRINGID_PKMNAVOIDEDATTACK 345
+#define STRINGID_PKMNSXMADEITINEFFECTIVE 346
+#define STRINGID_PKMNSXPREVENTSFLINCHING 347
+#define STRINGID_PKMNALREADYHASBURN 348
+#define STRINGID_STATSWONTDECREASE2 349
+#define STRINGID_PKMNSXBLOCKSY2 350
+#define STRINGID_PKMNSXWOREOFF 351
+#define STRINGID_PKMNRAISEDDEFALITTLE 352
+#define STRINGID_PKMNRAISEDSPDEFALITTLE 353
+#define STRINGID_THEWALLSHATTERED 354
+#define STRINGID_PKMNSXPREVENTSYSZ 355
+#define STRINGID_PKMNSXCUREDITSYPROBLEM 356
+#define STRINGID_ATTACKERCANTESCAPE 357
+#define STRINGID_PKMNOBTAINEDX 358
+#define STRINGID_PKMNOBTAINEDX2 359
+#define STRINGID_PKMNOBTAINEDXYOBTAINEDZ 360
+#define STRINGID_BUTNOEFFECT 361
+#define STRINGID_PKMNSXHADNOEFFECTONY 362
+#define STRINGID_TWOENEMIESDEFEATED 363
+#define STRINGID_TRAINER2LOSETEXT 364
+#define STRINGID_PKMNINCAPABLEOFPOWER 365
+#define STRINGID_GLINTAPPEARSINEYE 366
+#define STRINGID_PKMNGETTINGINTOPOSITION 367
+#define STRINGID_PKMNBEGANGROWLINGDEEPLY 368
+#define STRINGID_PKMNEAGERFORMORE 369
+#define STRINGID_DEFEATEDOPPONENTBYREFEREE 370
+#define STRINGID_LOSTTOOPPONENTBYREFEREE 371
+#define STRINGID_TIEDOPPONENTBYREFEREE 372
+#define STRINGID_QUESTIONFORFEITMATCH 373
+#define STRINGID_FORFEITEDMATCH 374
+#define STRINGID_PKMNTRANSFERREDSOMEONESPC 375
+#define STRINGID_PKMNTRANSFERREDLANETTESPC 376
+#define STRINGID_PKMNBOXSOMEONESPCFULL 377
+#define STRINGID_PKMNBOXLANETTESPCFULL 378
+#define STRINGID_TRAINER1WINTEXT 379
+#define STRINGID_TRAINER2WINTEXT 380
+
+#endif // GUARD_BATTLE_STRING_IDS_H
diff --git a/include/battle_tower.h b/include/battle_tower.h
new file mode 100644
index 000000000..25b439c1b
--- /dev/null
+++ b/include/battle_tower.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_BATTLE_TOWER_H
+#define GUARD_BATTLE_TOWER_H
+
+u16 sub_8164FCC(u8, u8);
+
+#endif //GUARD_BATTLE_TOWER_H
diff --git a/include/bg.h b/include/bg.h
index 0dcb84a34..0c6b4ac26 100644
--- a/include/bg.h
+++ b/include/bg.h
@@ -1,6 +1,16 @@
#ifndef GUARD_BG_H
#define GUARD_BG_H
+struct BGCntrlBitfield // for the I/O registers
+{
+ volatile u16 priority:2;
+ volatile u16 charBaseBlock:2;
+ volatile u16 field_0_2:4;
+ volatile u16 field_1_0:5;
+ volatile u16 areaOverflowMode:1;
+ volatile u16 screenSize:2;
+};
+
enum
{
BG_CTRL_ATTR_VISIBLE = 1,
diff --git a/include/clock.h b/include/clock.h
new file mode 100644
index 000000000..4e6560c91
--- /dev/null
+++ b/include/clock.h
@@ -0,0 +1,8 @@
+#ifndef GUARD_CLOCK_H
+#define GUARD_CLOCK_H
+
+// TODO: time of day and seconds in a day defines
+
+void DoTimeBasedEvents(void);
+
+#endif
diff --git a/include/coins.h b/include/coins.h
index 43434b227..996519605 100644
--- a/include/coins.h
+++ b/include/coins.h
@@ -6,7 +6,7 @@ void ShowCoinsWindow(u32 coinAmount, u8 x, u8 y);
void HideCoinsWindow(void);
u16 GetCoins(void);
void SetCoins(u16 coinAmount);
-bool8 AddCoins(u16 toAdd);
-bool8 SubtractCoins(u16 toSub);
+bool8 GiveCoins(u16 toAdd);
+bool8 TakeCoins(u16 toSub);
#endif // GUARD_COINS_H
diff --git a/include/contest.h b/include/contest.h
new file mode 100644
index 000000000..5c473bd2c
--- /dev/null
+++ b/include/contest.h
@@ -0,0 +1,18 @@
+#ifndef GUARD_CONTEST_H
+#define GUARD_CONTEST_H
+
+struct ContestStruct_02039E00 {
+ u16 unk_00;
+ u8 unk_02[11];
+ u8 unk_0d[8];
+ u8 filler_15[9];
+ u8 filler_1E[34];
+};
+
+extern struct ContestStruct_02039E00 gUnknown_02039E00[4];
+extern u8 gUnknown_02039F24;
+extern EWRAM_DATA u16 gScriptContestCategory;
+extern EWRAM_DATA u8 gUnknown_02039F2E;
+extern EWRAM_DATA u8 gUnknown_02039F30;
+
+#endif //GUARD_CONTEST_H
diff --git a/include/contest_link_80F57C4.h b/include/contest_link_80F57C4.h
new file mode 100644
index 000000000..98523c175
--- /dev/null
+++ b/include/contest_link_80F57C4.h
@@ -0,0 +1,8 @@
+#ifndef GUARD_CONTEST_LINK_80F57C4_H
+#define GUARD_CONTEST_LINK_80F57C4_H
+
+void sub_80F840C(void);
+void sub_80F8484(void);
+void sub_80F84C4(u8);
+
+#endif // GUARD_CONTEST_LINK_80F57C4_H
diff --git a/include/contest_painting.h b/include/contest_painting.h
new file mode 100644
index 000000000..f8366a997
--- /dev/null
+++ b/include/contest_painting.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_CONTESTPAINTING_H
+#define GUARD_CONTESTPAINTING_H
+
+void sub_812FDA8(u32);
+
+#endif
diff --git a/include/data2.h b/include/data2.h
new file mode 100644
index 000000000..db9532811
--- /dev/null
+++ b/include/data2.h
@@ -0,0 +1,19 @@
+#ifndef GUARD_DATA2_H
+#define GUARD_DATA2_H
+
+struct MonCoords
+{
+ // This would use a bitfield, but some function
+ // uses it as a u8 and casting won't match.
+ u8 coords; // u8 x:4, y:4;
+ u8 y_offset;
+};
+
+extern struct MonCoords gTrainerBackPicCoords[];
+
+extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1];
+extern const u8 gMoveNames[][13];
+extern const u8 gAbilityNames[][13];
+extern const u8 gTypeNames[][7];
+
+#endif // GUARD_DATA2_H
diff --git a/include/decoration.h b/include/decoration.h
new file mode 100644
index 000000000..bbb77d127
--- /dev/null
+++ b/include/decoration.h
@@ -0,0 +1,142 @@
+#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
+};
+
+struct Decoration
+{
+ /*0x00*/ u8 id;
+ /*0x01*/ u8 name[16];
+ /*0x11*/ u8 permission;
+ /*0x12*/ u8 shape;
+ /*0x13*/ u8 category;
+ /*0x14*/ u16 price;
+ /*0x18*/ const u8 *description;
+ /*0x1c*/ const u16 *tiles;
+};
+
+extern const struct Decoration gDecorations[];
+
+#endif //GUARD_DECORATION_H
diff --git a/include/decoration_inventory.h b/include/decoration_inventory.h
new file mode 100644
index 000000000..5ca345933
--- /dev/null
+++ b/include/decoration_inventory.h
@@ -0,0 +1,10 @@
+#ifndef GUARD_DECORATION_INVENTORY_H
+#define GUARD_DECORATION_INVENTORY_H
+
+void ClearDecorationInventories(void);
+u8 CheckHasDecoration(u8);
+u8 DecorationAdd(u8);
+u8 DecorationCheckSpace(u8);
+s8 DecorationRemove(u8);
+
+#endif // GUARD_DECORATION_INVENTORY_H
diff --git a/include/diploma.h b/include/diploma.h
new file mode 100644
index 000000000..8d730fa05
--- /dev/null
+++ b/include/diploma.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_DIPLOMA_H
+#define GUARD_DIPLOMA_H
+
+void CB2_ShowDiploma(void);
+
+#endif // GUARD_DIPLOMA_H
diff --git a/include/easy_chat.h b/include/easy_chat.h
index fc44b6a8a..b0a217320 100644
--- a/include/easy_chat.h
+++ b/include/easy_chat.h
@@ -30,7 +30,9 @@ enum
void InitEasyChatPhrases(void);
void easy_chat_input_maybe(void);
-void CopyEasyChatWord(u8 *, u16);
-bool32 sub_811F8D8(u16);
+void CopyEasyChatWord(u8 *dest, u16 word);
+bool32 sub_811F8D8(u16 word);
+void InitializeEasyChatWordArray(u16 *words, u16 length);
+void ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 length1, u16 length2);
#endif // GUARD_EASYCHAT_H
diff --git a/include/event_data.h b/include/event_data.h
index a2a501283..0bd11fdcd 100644
--- a/include/event_data.h
+++ b/include/event_data.h
@@ -27,7 +27,7 @@ bool8 VarSet(u16 id, u16 value);
u8 VarGetFieldObjectGraphicsId(u8 id);
u8 *GetFlagPointer(u16 id);
u8 FlagSet(u16 id);
-u8 FlagReset(u16 id);
+u8 FlagClear(u16 id);
bool8 FlagGet(u16 id);
extern u16 gSpecialVar_0x8000;
diff --git a/include/event_scripts.h b/include/event_scripts.h
index f1abdd6f6..bb0d6731b 100755
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -8,4 +8,353 @@
extern const u8 gUnknown_082766A2[];
extern const u8 gUnknown_082766A6[];
+extern const u8 gTVBravoTrainerText00[];
+extern const u8 gTVBravoTrainerText01[];
+extern const u8 gTVBravoTrainerText02[];
+extern const u8 gTVBravoTrainerText03[];
+extern const u8 gTVBravoTrainerText04[];
+extern const u8 gTVBravoTrainerText05[];
+extern const u8 gTVBravoTrainerText06[];
+extern const u8 gTVBravoTrainerText07[];
+extern const u8 gTVBravoTrainerText08[];
+extern const u8 gTVBravoTrainerBattleTowerText00[];
+extern const u8 gTVBravoTrainerBattleTowerText01[];
+extern const u8 gTVBravoTrainerBattleTowerText02[];
+extern const u8 gTVBravoTrainerBattleTowerText03[];
+extern const u8 gTVBravoTrainerBattleTowerText04[];
+extern const u8 gTVBravoTrainerBattleTowerText05[];
+extern const u8 gTVBravoTrainerBattleTowerText06[];
+extern const u8 gTVBravoTrainerBattleTowerText07[];
+extern const u8 gTVBravoTrainerBattleTowerText08[];
+extern const u8 gTVBravoTrainerBattleTowerText09[];
+extern const u8 gTVBravoTrainerBattleTowerText10[];
+extern const u8 gTVBravoTrainerBattleTowerText11[];
+extern const u8 gTVBravoTrainerBattleTowerText12[];
+extern const u8 gTVBravoTrainerBattleTowerText13[];
+extern const u8 gTVBravoTrainerBattleTowerText14[];
+extern const u8 gTVFanClubOpinionsText00[];
+extern const u8 gTVFanClubOpinionsText01[];
+extern const u8 gTVFanClubOpinionsText02[];
+extern const u8 gTVFanClubOpinionsText03[];
+extern const u8 gTVFanClubOpinionsText04[];
+extern const u8 gTVFanClubText00[];
+extern const u8 gTVFanClubText01[];
+extern const u8 gTVFanClubText02[];
+extern const u8 gTVFanClubText03[];
+extern const u8 gTVFanClubText04[];
+extern const u8 gTVFanClubText05[];
+extern const u8 gTVFanClubText06[];
+extern const u8 gTVFanClubText07[];
+extern const u8 gTVRecentHappeningsText00[];
+extern const u8 gTVRecentHappeningsText01[];
+extern const u8 gTVRecentHappeningsText02[];
+extern const u8 gTVRecentHappeningsText03[];
+extern const u8 gTVRecentHappeningsText04[];
+extern const u8 gTVRecentHappeningsText05[];
+extern const u8 gTVMassOutbreakText00[];
+extern const u8 gTV3CheersForPokeblocksText00[];
+extern const u8 gTV3CheersForPokeblocksText01[];
+extern const u8 gTV3CheersForPokeblocksText02[];
+extern const u8 gTV3CheersForPokeblocksText03[];
+extern const u8 gTV3CheersForPokeblocksText04[];
+extern const u8 gTV3CheersForPokeblocksText05[];
+extern const u8 gTVTrainerFanClubSpecialText00[];
+extern const u8 gTVTrainerFanClubSpecialText01[];
+extern const u8 gTVTrainerFanClubSpecialText02[];
+extern const u8 gTVTrainerFanClubSpecialText03[];
+extern const u8 gTVTrainerFanClubSpecialText04[];
+extern const u8 gTVTrainerFanClubSpecialText05[];
+extern const u8 gTVNameRaterText00[];
+extern const u8 gTVNameRaterText01[];
+extern const u8 gTVNameRaterText02[];
+extern const u8 gTVNameRaterText03[];
+extern const u8 gTVNameRaterText04[];
+extern const u8 gTVNameRaterText05[];
+extern const u8 gTVNameRaterText06[];
+extern const u8 gTVNameRaterText07[];
+extern const u8 gTVNameRaterText08[];
+extern const u8 gTVNameRaterText09[];
+extern const u8 gTVNameRaterText10[];
+extern const u8 gTVNameRaterText11[];
+extern const u8 gTVNameRaterText12[];
+extern const u8 gTVNameRaterText13[];
+extern const u8 gTVNameRaterText14[];
+extern const u8 gTVNameRaterText15[];
+extern const u8 gTVNameRaterText16[];
+extern const u8 gTVNameRaterText17[];
+extern const u8 gTVNameRaterText18[];
+extern const u8 gTVPokemonAnglerText00[];
+extern const u8 gTVPokemonAnglerText01[];
+extern const u8 gTVPokemonTodayFailedText00[];
+extern const u8 gTVPokemonTodayFailedText01[];
+extern const u8 gTVPokemonTodayFailedText02[];
+extern const u8 gTVPokemonTodayFailedText03[];
+extern const u8 gTVPokemonTodayFailedText04[];
+extern const u8 gTVPokemonTodayFailedText05[];
+extern const u8 gTVPokemonTodayFailedText06[];
+extern const u8 gTVPokemonTodaySuccessfulText00[];
+extern const u8 gTVPokemonTodaySuccessfulText01[];
+extern const u8 gTVPokemonTodaySuccessfulText02[];
+extern const u8 gTVPokemonTodaySuccessfulText03[];
+extern const u8 gTVPokemonTodaySuccessfulText04[];
+extern const u8 gTVPokemonTodaySuccessfulText05[];
+extern const u8 gTVPokemonTodaySuccessfulText06[];
+extern const u8 gTVPokemonTodaySuccessfulText07[];
+extern const u8 gTVPokemonTodaySuccessfulText08[];
+extern const u8 gTVPokemonTodaySuccessfulText09[];
+extern const u8 gTVPokemonTodaySuccessfulText10[];
+extern const u8 gTVPokemonTodaySuccessfulText11[];
+extern const u8 gTVTodaysSmartShopperText00[];
+extern const u8 gTVTodaysSmartShopperText01[];
+extern const u8 gTVTodaysSmartShopperText02[];
+extern const u8 gTVTodaysSmartShopperText03[];
+extern const u8 gTVTodaysSmartShopperText04[];
+extern const u8 gTVTodaysSmartShopperText05[];
+extern const u8 gTVTodaysSmartShopperText06[];
+extern const u8 gTVTodaysSmartShopperText07[];
+extern const u8 gTVTodaysSmartShopperText08[];
+extern const u8 gTVTodaysSmartShopperText09[];
+extern const u8 gTVTodaysSmartShopperText10[];
+extern const u8 gTVTodaysSmartShopperText11[];
+extern const u8 gTVTodaysSmartShopperText12[];
+extern const u8 gTVWorldOfMastersText00[];
+extern const u8 gTVWorldOfMastersText01[];
+extern const u8 gTVWorldOfMastersText02[];
+extern const u8 gTVTodaysRivalTrainerText00[];
+extern const u8 gTVTodaysRivalTrainerText07[];
+extern const u8 gTVTodaysRivalTrainerText08[];
+extern const u8 gTVTodaysRivalTrainerText09[];
+extern const u8 gTVTodaysRivalTrainerText10[];
+extern const u8 gTVTodaysRivalTrainerText01[];
+extern const u8 gTVTodaysRivalTrainerText02[];
+extern const u8 gTVTodaysRivalTrainerText03[];
+extern const u8 gTVTodaysRivalTrainerText04[];
+extern const u8 gTVTodaysRivalTrainerText05[];
+extern const u8 gTVTodaysRivalTrainerText06[];
+extern const u8 gTVDewfordTrendWatcherNetworkText00[];
+extern const u8 gTVDewfordTrendWatcherNetworkText01[];
+extern const u8 gTVDewfordTrendWatcherNetworkText02[];
+extern const u8 gTVDewfordTrendWatcherNetworkText03[];
+extern const u8 gTVDewfordTrendWatcherNetworkText04[];
+extern const u8 gTVDewfordTrendWatcherNetworkText05[];
+extern const u8 gTVDewfordTrendWatcherNetworkText06[];
+extern const u8 gTVHoennTreasureInvestigatorsText00[];
+extern const u8 gTVHoennTreasureInvestigatorsText01[];
+extern const u8 gTVHoennTreasureInvestigatorsText02[];
+extern const u8 gTVFindThatGamerText00[];
+extern const u8 gTVFindThatGamerText01[];
+extern const u8 gTVFindThatGamerText02[];
+extern const u8 gTVFindThatGamerText03[];
+extern const u8 gTVBreakingNewsText00[];
+extern const u8 gTVBreakingNewsText01[];
+extern const u8 gTVBreakingNewsText02[];
+extern const u8 gTVBreakingNewsText03[];
+extern const u8 gTVBreakingNewsText04[];
+extern const u8 gTVBreakingNewsText05[];
+extern const u8 gTVBreakingNewsText06[];
+extern const u8 gTVBreakingNewsText07[];
+extern const u8 gTVBreakingNewsText12[];
+extern const u8 gTVBreakingNewsText08[];
+extern const u8 gTVBreakingNewsText09[];
+extern const u8 gTVBreakingNewsText10[];
+extern const u8 gTVBreakingNewsText11[];
+extern const u8 gTVSecretBaseVisitText00[];
+extern const u8 gTVSecretBaseVisitText01[];
+extern const u8 gTVSecretBaseVisitText02[];
+extern const u8 gTVSecretBaseVisitText03[];
+extern const u8 gTVSecretBaseVisitText04[];
+extern const u8 gTVSecretBaseVisitText05[];
+extern const u8 gTVSecretBaseVisitText06[];
+extern const u8 gTVSecretBaseVisitText07[];
+extern const u8 gTVSecretBaseVisitText08[];
+extern const u8 gTVSecretBaseVisitText09[];
+extern const u8 gTVSecretBaseVisitText10[];
+extern const u8 gTVSecretBaseVisitText11[];
+extern const u8 gTVSecretBaseVisitText12[];
+extern const u8 gTVSecretBaseVisitText13[];
+extern const u8 gTVPokemonLotteryWinnerFlashReportText00[];
+extern const u8 gTVThePokemonBattleSeminarText00[];
+extern const u8 gTVThePokemonBattleSeminarText01[];
+extern const u8 gTVThePokemonBattleSeminarText02[];
+extern const u8 gTVThePokemonBattleSeminarText03[];
+extern const u8 gTVThePokemonBattleSeminarText04[];
+extern const u8 gTVThePokemonBattleSeminarText05[];
+extern const u8 gTVThePokemonBattleSeminarText06[];
+extern const u8 gTVTrainerFanClubText00[];
+extern const u8 gTVTrainerFanClubText01[];
+extern const u8 gTVTrainerFanClubText02[];
+extern const u8 gTVTrainerFanClubText03[];
+extern const u8 gTVTrainerFanClubText04[];
+extern const u8 gTVTrainerFanClubText05[];
+extern const u8 gTVTrainerFanClubText06[];
+extern const u8 gTVTrainerFanClubText07[];
+extern const u8 gTVTrainerFanClubText08[];
+extern const u8 gTVTrainerFanClubText09[];
+extern const u8 gTVTrainerFanClubText10[];
+extern const u8 gTVTrainerFanClubText11[];
+extern const u8 gTVCutiesText00[];
+extern const u8 gTVCutiesText01[];
+extern const u8 gTVCutiesText02[];
+extern const u8 gTVCutiesText03[];
+extern const u8 gTVCutiesText04[];
+extern const u8 gTVCutiesText05[];
+extern const u8 gTVCutiesText06[];
+extern const u8 gTVCutiesText07[];
+extern const u8 gTVCutiesText08[];
+extern const u8 gTVCutiesText09[];
+extern const u8 gTVCutiesText10[];
+extern const u8 gTVCutiesText11[];
+extern const u8 gTVCutiesText12[];
+extern const u8 gTVCutiesText13[];
+extern const u8 gTVCutiesText14[];
+extern const u8 gTVCutiesText15[];
+extern const u8 gTVPokemonNewsBattleFrontierText00[];
+extern const u8 gTVPokemonNewsBattleFrontierText01[];
+extern const u8 gTVPokemonNewsBattleFrontierText02[];
+extern const u8 gTVPokemonNewsBattleFrontierText03[];
+extern const u8 gTVPokemonNewsBattleFrontierText04[];
+extern const u8 gTVPokemonNewsBattleFrontierText05[];
+extern const u8 gTVPokemonNewsBattleFrontierText06[];
+extern const u8 gTVPokemonNewsBattleFrontierText07[];
+extern const u8 gTVPokemonNewsBattleFrontierText08[];
+extern const u8 gTVPokemonNewsBattleFrontierText09[];
+extern const u8 gTVPokemonNewsBattleFrontierText10[];
+extern const u8 gTVPokemonNewsBattleFrontierText11[];
+extern const u8 gTVPokemonNewsBattleFrontierText12[];
+extern const u8 gTVPokemonNewsBattleFrontierText13[];
+extern const u8 gTVPokemonNewsBattleFrontierText14[];
+extern const u8 gTVPokemonNewsBattleFrontierText15[];
+extern const u8 gTVPokemonNewsBattleFrontierText16[];
+extern const u8 gTVPokemonNewsBattleFrontierText17[];
+extern const u8 gTVPokemonNewsBattleFrontierText18[];
+extern const u8 gTVWhatsNo1InHoennTodayText00[];
+extern const u8 gTVWhatsNo1InHoennTodayText01[];
+extern const u8 gTVWhatsNo1InHoennTodayText02[];
+extern const u8 gTVWhatsNo1InHoennTodayText03[];
+extern const u8 gTVWhatsNo1InHoennTodayText04[];
+extern const u8 gTVWhatsNo1InHoennTodayText05[];
+extern const u8 gTVWhatsNo1InHoennTodayText06[];
+extern const u8 gTVWhatsNo1InHoennTodayText07[];
+extern const u8 gTVWhatsNo1InHoennTodayText08[];
+extern const u8 gTVSecretBaseSecretsText00[];
+extern const u8 gTVSecretBaseSecretsText01[];
+extern const u8 gTVSecretBaseSecretsText02[];
+extern const u8 gTVSecretBaseSecretsText03[];
+extern const u8 gTVSecretBaseSecretsText04[];
+extern const u8 gTVSecretBaseSecretsText05[];
+extern const u8 gTVSecretBaseSecretsText06[];
+extern const u8 gTVSecretBaseSecretsText07[];
+extern const u8 gTVSecretBaseSecretsText08[];
+extern const u8 gTVSecretBaseSecretsText09[];
+extern const u8 gTVSecretBaseSecretsText10[];
+extern const u8 gTVSecretBaseSecretsText11[];
+extern const u8 gTVSecretBaseSecretsText12[];
+extern const u8 gTVSecretBaseSecretsText13[];
+extern const u8 gTVSecretBaseSecretsText14[];
+extern const u8 gTVSecretBaseSecretsText15[];
+extern const u8 gTVSecretBaseSecretsText16[];
+extern const u8 gTVSecretBaseSecretsText17[];
+extern const u8 gTVSecretBaseSecretsText18[];
+extern const u8 gTVSecretBaseSecretsText19[];
+extern const u8 gTVSecretBaseSecretsText20[];
+extern const u8 gTVSecretBaseSecretsText21[];
+extern const u8 gTVSecretBaseSecretsText22[];
+extern const u8 gTVSecretBaseSecretsText23[];
+extern const u8 gTVSecretBaseSecretsText24[];
+extern const u8 gTVSecretBaseSecretsText25[];
+extern const u8 gTVSecretBaseSecretsText26[];
+extern const u8 gTVSecretBaseSecretsText27[];
+extern const u8 gTVSecretBaseSecretsText28[];
+extern const u8 gTVSecretBaseSecretsText29[];
+extern const u8 gTVSecretBaseSecretsText30[];
+extern const u8 gTVSecretBaseSecretsText31[];
+extern const u8 gTVSecretBaseSecretsText32[];
+extern const u8 gTVSecretBaseSecretsText33[];
+extern const u8 gTVSecretBaseSecretsText34[];
+extern const u8 gTVSecretBaseSecretsText35[];
+extern const u8 gTVSecretBaseSecretsText36[];
+extern const u8 gTVSecretBaseSecretsText37[];
+extern const u8 gTVSecretBaseSecretsText38[];
+extern const u8 gTVSecretBaseSecretsText39[];
+extern const u8 gTVSecretBaseSecretsText40[];
+extern const u8 gTVSecretBaseSecretsText41[];
+extern const u8 gTVSecretBaseSecretsText42[];
+extern const u8 gTVSafariFanClubText00[];
+extern const u8 gTVSafariFanClubText01[];
+extern const u8 gTVSafariFanClubText02[];
+extern const u8 gTVSafariFanClubText03[];
+extern const u8 gTVSafariFanClubText04[];
+extern const u8 gTVSafariFanClubText05[];
+extern const u8 gTVSafariFanClubText06[];
+extern const u8 gTVSafariFanClubText07[];
+extern const u8 gTVSafariFanClubText08[];
+extern const u8 gTVSafariFanClubText09[];
+extern const u8 gTVSafariFanClubText10[];
+extern const u8 gTVContestLiveUpdatesText00[];
+extern const u8 gTVContestLiveUpdatesText01[];
+extern const u8 gTVContestLiveUpdatesText02[];
+extern const u8 gTVContestLiveUpdatesText03[];
+extern const u8 gTVContestLiveUpdatesText04[];
+extern const u8 gTVContestLiveUpdatesText05[];
+extern const u8 gTVContestLiveUpdatesText06[];
+extern const u8 gTVContestLiveUpdatesText07[];
+extern const u8 gTVContestLiveUpdatesText08[];
+extern const u8 gTVContestLiveUpdatesText09[];
+extern const u8 gTVContestLiveUpdatesText10[];
+extern const u8 gTVContestLiveUpdatesText11[];
+extern const u8 gTVContestLiveUpdatesText12[];
+extern const u8 gTVContestLiveUpdatesText13[];
+extern const u8 gTVContestLiveUpdatesText14[];
+extern const u8 gTVContestLiveUpdatesText15[];
+extern const u8 gTVContestLiveUpdatesText16[];
+extern const u8 gTVContestLiveUpdatesText17[];
+extern const u8 gTVContestLiveUpdatesText18[];
+extern const u8 gTVContestLiveUpdatesText19[];
+extern const u8 gTVContestLiveUpdatesText20[];
+extern const u8 gTVContestLiveUpdatesText21[];
+extern const u8 gTVContestLiveUpdatesText22[];
+extern const u8 gTVContestLiveUpdatesText23[];
+extern const u8 gTVContestLiveUpdatesText24[];
+extern const u8 gTVContestLiveUpdatesText25[];
+extern const u8 gTVContestLiveUpdatesText26[];
+extern const u8 gTVContestLiveUpdatesText27[];
+extern const u8 gTVContestLiveUpdatesText28[];
+extern const u8 gTVContestLiveUpdatesText29[];
+extern const u8 gTVContestLiveUpdatesText30[];
+extern const u8 gTVContestLiveUpdatesText31[];
+extern const u8 gTVContestLiveUpdatesText32[];
+extern const u8 gTVPokemonBattleUpdateText00[];
+extern const u8 gTVPokemonBattleUpdateText01[];
+extern const u8 gTVPokemonBattleUpdateText02[];
+extern const u8 gTVPokemonBattleUpdateText03[];
+extern const u8 gTVPokemonBattleUpdateText04[];
+extern const u8 gTVPokemonBattleUpdateText05[];
+extern const u8 gTVPokemonBattleUpdateText06[];
+extern const u8 gTVPokemonBattleUpdateText07[];
+extern const u8 gTVInSearchOfTrainersText00[];
+extern const u8 gTVInSearchOfTrainersText01[];
+extern const u8 gTVInSearchOfTrainersText02[];
+extern const u8 gTVInSearchOfTrainersText03[];
+extern const u8 gTVInSearchOfTrainersText04[];
+extern const u8 gTVInSearchOfTrainersText05[];
+extern const u8 gTVInSearchOfTrainersText06[];
+extern const u8 gTVInSearchOfTrainersText07[];
+extern const u8 gTVInSearchOfTrainersText08[];
+extern const u8 gTVPokemonContestLiveUpdates2Text00[];
+extern const u8 gTVPokemonContestLiveUpdates2Text01[];
+extern const u8 gTVPokemonContestLiveUpdates2Text02[];
+extern const u8 gTVPokemonContestLiveUpdates2Text03[];
+extern const u8 gPokeNewsTextSlateport_Upcoming[];
+extern const u8 gPokeNewsTextSlateport_Ongoing[];
+extern const u8 gPokeNewsTextSlateport_Ending[];
+extern const u8 gPokeNewsTextGameCorner_Upcoming[];
+extern const u8 gPokeNewsTextGameCorner_Ongoing[];
+extern const u8 gPokeNewsTextGameCorner_Ending[];
+extern const u8 gPokeNewsTextLilycove_Upcoming[];
+extern const u8 gPokeNewsTextLilycove_Ongoing[];
+extern const u8 gPokeNewsTextLilycove_Ending[];
+extern const u8 gPokeNewsTextBlendMaster_Upcoming[];
+extern const u8 gPokeNewsTextBlendMaster_Ongoing[];
+extern const u8 gPokeNewsTextBlendMaster_Ending[];
+
#endif //GUARD_EVENT_SCRIPTS_H
diff --git a/include/field_camera.h b/include/field_camera.h
index 9fbaac6a2..f74fadd86 100644
--- a/include/field_camera.h
+++ b/include/field_camera.h
@@ -22,4 +22,6 @@ extern u16 gUnknown_03005DE8;
// Exported ROM declarations
+void DrawWholeMapView(void);
+
#endif //GUARD_FIELD_CAMERA_H
diff --git a/include/field_door.h b/include/field_door.h
new file mode 100644
index 000000000..f1dfc551d
--- /dev/null
+++ b/include/field_door.h
@@ -0,0 +1,11 @@
+#ifndef GUARD_FIELDDOOR_H
+#define GUARD_FIELDDOOR_H
+
+void FieldSetDoorOpened(u32, u32);
+void FieldSetDoorClosed(u32, u32);
+s8 FieldAnimateDoorClose(u32, u32);
+s8 FieldAnimateDoorOpen(u32, u32);
+bool8 FieldIsDoorAnimationRunning(void);
+u32 GetDoorSoundEffect(u32 x, u32 y);
+
+#endif
diff --git a/include/field_effect.h b/include/field_effect.h
index 7ec26b3d7..aa3f7eba0 100644
--- a/include/field_effect.h
+++ b/include/field_effect.h
@@ -1,7 +1,3 @@
-//
-// Created by Scott Norton on 9/15/17.
-//
-
#ifndef GUARD_FIELD_EFFECTS_H
#define GUARD_FIELD_EFFECTS_H
@@ -73,8 +69,9 @@ enum FieldEffectScriptIdx
FLDEFF_USE_TELEPORT
};
-extern u32 gFieldEffectSpawnParams[8];
-
u8 FieldEffectStart(u8);
+bool8 FieldEffectActiveListContains(u8 id);
+
+extern u32 gFieldEffectArguments[8];
#endif //GUARD_FIELD_EFFECTS_H
diff --git a/include/field_fadetransition.h b/include/field_fadetransition.h
new file mode 100644
index 000000000..7c2d16a24
--- /dev/null
+++ b/include/field_fadetransition.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_FIELD_FADETRANSITION_H
+#define GUARD_FIELD_FADETRANSITION_H
+
+void sub_80AF734(void);
+void sp13E_warp_to_last_warp(void);
+void sub_80AF7D0(void);
+void sp13F_fall_to_last_warp(void);
+
+void sub_80AF848(void);
+void sub_80AF87C(void);
+
+#endif // GUARD_FIELD_FADETRANSITION_H
diff --git a/include/field_map_obj.h b/include/field_map_obj.h
index 40cc64054..b18b6cfd3 100755
--- a/include/field_map_obj.h
+++ b/include/field_map_obj.h
@@ -33,6 +33,7 @@ u8 sub_808D4F4(void);
void RemoveFieldObjectByLocalIdAndMap(u8, u8, u8);
void npc_load_two_palettes__no_record(u16, u8);
void npc_load_two_palettes__and_record(u16, u8);
+void sub_808EBA8(u8, u8, u8, s16, s16);
void pal_patch_for_npc(u16, u8);
void sub_808E16C(s16, s16);
void sub_8092FF0(s16, s16, s16 *, s16 *);
@@ -63,6 +64,7 @@ void npc_coords_shift(struct MapObject *, s16, s16);
void sub_808EB08(struct MapObject *, s16, s16);
void sub_808F254(u8, u8, u8);
void FieldObjectStep(struct MapObject *, struct Sprite *, bool8(struct MapObject *, struct Sprite *));
+u8 FieldObjectFaceOppositeDirection(struct MapObject *, u8);
u8 GetOppositeDirection(u8);
u8 GetStepInPlaceDelay4AnimId(u32);
u8 GetStepInPlaceDelay8AnimId(u32);
@@ -71,6 +73,7 @@ u8 GetStepInPlaceDelay32AnimId(u32);
u8 npc_block_way(struct MapObject *, s16, s16, u32);
void MoveCoords(u8, s16 *, s16 *);
bool8 FieldObjectIsSpecialAnimActive(struct MapObject *);
+u8 FieldObjectClearAnimIfSpecialAnimFinished(struct MapObject *);
// Exported data declarations
diff --git a/include/field_map_obj_helpers.h b/include/field_map_obj_helpers.h
new file mode 100644
index 000000000..ba797ec98
--- /dev/null
+++ b/include/field_map_obj_helpers.h
@@ -0,0 +1,7 @@
+#ifndef GUARD_FIELDMAPOBJHELP_H
+#define GUARD_FIELDMAPOBJHELP_H
+
+void UnfreezeMapObjects(void);
+void sub_8097B78(u8, u8);
+
+#endif
diff --git a/include/field_message_box.h b/include/field_message_box.h
new file mode 100644
index 000000000..432c9078b
--- /dev/null
+++ b/include/field_message_box.h
@@ -0,0 +1,10 @@
+#ifndef GUARD_FIELD_MESSAGE_BOX_H
+#define GUARD_FIELD_MESSAGE_BOX_H
+
+bool8 ShowFieldMessage(const u8 *message);
+bool8 sub_8098238(const u8 *message);
+bool8 ShowFieldAutoScrollMessage(const u8 *message);
+void HideFieldMessageBox(void);
+bool8 IsFieldMessageBoxHidden(void);
+
+#endif // GUARD_FIELD_MESSAGE_BOX_H
diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h
index a787cf805..5c16e9414 100644
--- a/include/field_player_avatar.h
+++ b/include/field_player_avatar.h
@@ -1,7 +1,3 @@
-//
-// Created by Scott Norton on 9/6/17.
-//
-
#ifndef GUARD_FIELD_PLAYER_AVATAR_H
#define GUARD_FIELD_PLAYER_AVATAR_H
@@ -14,4 +10,6 @@ u8 player_get_direction_lower_nybble(void);
u8 player_get_direction_upper_nybble(void);
u8 player_get_x22(void);
+void sub_808D074(u8);
+
#endif //GUARD_FIELD_PLAYER_AVATAR_H
diff --git a/include/field_screen_effect.h b/include/field_screen_effect.h
new file mode 100644
index 000000000..ef81c2f9e
--- /dev/null
+++ b/include/field_screen_effect.h
@@ -0,0 +1,8 @@
+#ifndef GUARD_FIELD_SCREEN_EFFECT_H
+#define GUARD_FIELD_SCREEN_EFFECT_H
+
+void sub_80AF79C(void);
+void sub_80B009C(u8);
+void sub_80B0244(void);
+
+#endif // GUARD_FIELD_SCREEN_EFFECT_H
diff --git a/include/field_specials.h b/include/field_specials.h
new file mode 100644
index 000000000..1f8fbf147
--- /dev/null
+++ b/include/field_specials.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_FIELD_SPECIALS_H
+#define GUARD_FIELD_SPECIALS_H
+
+u8 GetLeadMonIndex(void);
+
+#endif // GUARD_FIELD_SPECIALS_H
diff --git a/include/field_tasks.h b/include/field_tasks.h
new file mode 100644
index 000000000..2a2a772d8
--- /dev/null
+++ b/include/field_tasks.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_FIELD_TASKS_H
+#define GUARD_FIELD_TASKS_H
+
+void ActivatePerStepCallback(u8);
+
+#endif // GUARD_FIELD_TASKS_H
diff --git a/include/field_weather.h b/include/field_weather.h
new file mode 100644
index 000000000..e12107e70
--- /dev/null
+++ b/include/field_weather.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_WEATHER_H
+#define GUARD_WEATHER_H
+
+void fade_screen(u8, s8);
+
+void SetSav1Weather(u32);
+u8 GetSav1Weather(void);
+void sub_80AEDBC(void);
+
+void DoCurrentWeather(void);
+
+#endif // GUARD_WEATHER_H
diff --git a/include/fieldmap.h b/include/fieldmap.h
index 7174d98cc..3efc5e36f 100644
--- a/include/fieldmap.h
+++ b/include/fieldmap.h
@@ -1,16 +1,13 @@
-//
-// Created by scott on 9/16/2017.
-//
-
#ifndef GUARD_FIELDMAP_H
#define GUARD_FIELDMAP_H
-// Exported type declarations
-
-// Exported RAM declarations
+extern struct MapCoords {
+ int width;
+ int height;
+} gUnknown_03005DC0;
-// Exported ROM declarations
-u8 MapGridGetMetatileBehaviorAt(s16, s16);
+u32 MapGridGetMetatileBehaviorAt(int, int);
+void MapGridSetMetatileIdAt(int, int, u16);
void GetCameraCoords(u16*, u16*);
bool8 MapGridIsImpassableAt(s16, s16);
s32 GetMapBorderIdAt(s16, s16);
diff --git a/include/flags.h b/include/flags.h
index 020fc59cb..7d825feba 100644
--- a/include/flags.h
+++ b/include/flags.h
@@ -3,7 +3,7 @@
#define TRAINER_FLAG_START 0x500
#define TRAINERS_FLAG_NO 0x356
-#define CODE_FLAGS (TRAINER_FLAG_START + TRAINERS_FLAG_NO + 0xA)
+#define CODE_FLAGS (TRAINER_FLAG_START + TRAINERS_FLAG_NO + 0xA) // 0x860
// SYSTEM FLAGS
@@ -84,6 +84,20 @@
#define SYS_CTRL_OBJ_DELETE CODE_FLAGS + 0x61
#define SYS_RESET_RTC_ENABLE CODE_FLAGS + 0x62
+#define SYS_TOWER_SILVER CODE_FLAGS + 0x64
+#define SYS_TOWER_GOLD CODE_FLAGS + 0x65
+#define SYS_DOME_SILVER CODE_FLAGS + 0x66
+#define SYS_DOME_GOLD CODE_FLAGS + 0x67
+#define SYS_PALACE_SILVER CODE_FLAGS + 0x68
+#define SYS_PALACE_GOLD CODE_FLAGS + 0x69
+#define SYS_ARENA_SILVER CODE_FLAGS + 0x6A
+#define SYS_ARENA_GOLD CODE_FLAGS + 0x6B
+#define SYS_FACTORY_SILVER CODE_FLAGS + 0x6C
+#define SYS_FACTORY_GOLD CODE_FLAGS + 0x6D
+#define SYS_PIKE_SILVER CODE_FLAGS + 0x6E
+#define SYS_PIKE_GOLD CODE_FLAGS + 0x6F
+#define SYS_PYRAMID_SILVER CODE_FLAGS + 0x70
+#define SYS_PYRAMID_GOLD CODE_FLAGS + 0x71
#define SYS_FRONTIER_PASS CODE_FLAGS + 0x72
#define SYS_STORAGE_UNKNOWN_FLAG CODE_FLAGS + 0x77
diff --git a/include/game_stat.h b/include/game_stat.h
index b8a5c3232..5979c531c 100644
--- a/include/game_stat.h
+++ b/include/game_stat.h
@@ -56,4 +56,7 @@
#define NUM_GAME_STATS 64
+void IncrementGameStat(u8);
+u32 GetGameStat(u8);
+
#endif // GUARD_GAME_STAT_H
diff --git a/include/global.h b/include/global.h
index e0c09d29a..58a0d79dc 100644
--- a/include/global.h
+++ b/include/global.h
@@ -197,7 +197,13 @@ struct SaveBlock2
// All below could be a one giant struct
- /*0x64C*/ u8 field_64C[1629];
+ /*0x64C*/ u8 field_64C[0x588];
+ /*0xBD4*/ u16 field_BD4;
+ /*0xBD6*/ u16 field_BD6;
+ /*0xBD8*/ u8 field_BD8[11];
+ /*0xBE3*/ u8 filler_BE3[8];
+ /*0xBEB*/ u8 field_BEB;
+ /*0xBE3*/ u8 filler_BEC[189];
/*0xCA9*/ u8 frontierChosenLvl : 2; // 0x1, 0x2 -> 0x3
/*0xCA9*/ u8 field_CA9_a : 1; // 0x4
/*0xCA9*/ u8 field_CA9_b : 1; // 0x8
@@ -205,7 +211,10 @@ struct SaveBlock2
/*0xCA9*/ u8 field_CA9_d : 1; // 0x20
/*0xCA9*/ u8 field_CA9_e : 1; // 0x40
/*0xCA9*/ u8 field_CA9_f : 1; // 0x80
- /*0xCAA*/ u8 field_CAA[368];
+ /*0xCAA*/ u16 field_CAA[0x2e];
+ /*0xD06*/ u8 field_D06;
+ /*0xD07*/ u8 field_D07;
+ /*0xd08*/ u8 filler_D08[0x112];
/*0xE1A*/ u16 battlePyramidFloor; // possibly?
/*0xE1C*/ u8 field_E1C[16];
/*0xE2C*/ struct PyramidBag pyramidBag;
@@ -225,29 +234,31 @@ extern struct SaveBlock2 *gSaveBlock2Ptr;
struct SecretBaseRecord
{
- /*ID?*/ /*0x1A08*/ u8 sbr_field_0;
- /*0x1A09*/ u8 sbr_field_1_0:4;
- /*0x1A09*/ u8 gender:1;
- /*0x1A09*/ u8 sbr_field_1_5:1;
- /*0x1A09*/ u8 sbr_field_1_6:2;
- /*0x1A0A*/ u8 sbr_field_2[7]; // 0xFF bytes?
- /*0x1A12*/ u8 trainerId[4]; // byte 0 is used for determining trainer class
- /*0x1A16*/ u16 sbr_field_e;
- /*0x1A18*/ u8 sbr_field_10;
- /*0x1A19*/ u8 sbr_field_11;
- /*0x1A1A*/ u8 decorations[16];
- /*0x1A2A*/ u8 decorationPos[16];
- /*0x1A3A*/ u32 partyPersonality[6];
- /*0x1A54*/ u16 partyMoves[6 * 4];
- /*0x1A84*/ u16 partySpecies[6];
- /*0x1A90*/ u16 partyHeldItems[6];
- /*0x1A9C*/ u8 partyLevels[6];
- /*0x1AA2*/ u8 partyEVs[6];
+ /*ID?*/ /*0x1A9C*/ u8 sbr_field_0;
+ /*0x1A9D*/ u8 sbr_field_1_0:4;
+ /*0x1A9D*/ u8 gender:1;
+ /*0x1A9D*/ u8 sbr_field_1_5:1;
+ /*0x1A9D*/ u8 sbr_field_1_6:2;
+ /*0x1A9E*/ u8 trainerName[7]; // 0xFF bytes?
+ /*0x1AA5*/ u8 trainerId[4]; // byte 0 is used for determining trainer class
+ /*0x1AA9*/ u8 language;
+ /*0x1AAA*/ u16 sbr_field_e;
+ /*0x1AAC*/ u8 sbr_field_10;
+ /*0x1AAD*/ u8 sbr_field_11;
+ /*0x1AAE*/ u8 decorations[16];
+ /*0x1ABE*/ u8 decorationPos[16];
+ /*0x1ACE*/ u32 partyPersonality[6];
+ /*0x1AE6*/ u16 partyMoves[6 * 4];
+ /*0x1B16*/ u16 partySpecies[6];
+ /*0x1B22*/ u16 partyHeldItems[6];
+ /*0x1B2E*/ u8 partyLevels[6];
+ /*0x1B34*/ u8 partyEVs[6];
};
#include "game_stat.h"
#include "global.fieldmap.h"
#include "global.berry.h"
+#include "global.tv.h"
#include "pokemon.h"
struct WarpData
@@ -316,218 +327,6 @@ struct EasyChatPair
u16 words[2];
}; /*size = 0x8*/
-struct TVShowCommon
-{
- /*0x00*/ u8 var00;
- /*0x01*/ u8 var01;
- /*0x02*/ u8 pad02[20];
- /*0x16*/ u16 var16[3];
- /*0x1C*/ u8 srcTrainerId3Lo;
- /*0x1D*/ u8 srcTrainerId3Hi;
- /*0x1E*/ u8 srcTrainerId2Lo;
- /*0x1F*/ u8 srcTrainerId2Hi;
- /*0x20*/ u8 srcTrainerIdLo;
- /*0x21*/ u8 srcTrainerIdHi;
- /*0x22*/ u8 trainerIdLo;
- /*0x23*/ u8 trainerIdHi;
-};
-
-struct TVShowFanClubLetter
-{
- /*0x00*/ u8 var00;
- /*0x01*/ u8 var01;
- /*0x02*/ u16 species;
- /*0x04*/ u16 pad04[6];
- /*0x10*/ u8 playerName[8];
- /*0x18*/ u8 language;
-};
-
-struct TVShowRecentHappenings
-{
- /*0x00*/ u8 var00;
- /*0x01*/ u8 var01;
- /*0x02*/ u16 var02;
- /*0x04*/ u16 var04[6];
- /*0x10*/ u8 playerName[8];
- /*0x18*/ u8 language;
- /*0x19*/ u8 pad19[10];
-};
-
-struct TVShowFanclubOpinions
-{
- /*0x00*/ u8 var00;
- /*0x01*/ u8 var01;
- /*0x02*/ u16 var02;
- /*0x04*/ u8 var04A:4;
- /*0x04*/ u8 var04B:4;
- /*0x05*/ u8 playerName[8];
- /*0x0D*/ u8 language;
- /*0x0E*/ u8 var0E;
- /*0x0F*/ u8 var0F;
- /*0x10*/ u8 var10[8];
- /*0x18*/ u16 var18[2];
- /*0x1C*/ u16 var1C[4];
-};
-
-struct TVShowUnknownType04
-{
- /*0x00*/ u8 var00;
- /*0x01*/ u8 var01;
- /*0x02*/ u8 pad02[4];
- /*0x06*/ u16 var06;
-};
-
-struct TVShowNameRaterShow
-{
- /*0x00*/ u8 var00;
- /*0x01*/ u8 var01;
- /*0x02*/ u16 species;
- /*0x04*/ u8 pokemonName[11];
- /*0x0F*/ u8 trainerName[11];
- /*0x1A*/ u8 random;
- /*0x1B*/ u8 random2;
- /*0x1C*/ u16 var1C;
- /*0x1E*/ u8 language;
- /*0x1F*/ u8 pokemonNameLanguage;
-};
-
-struct TVShowBravoTrainerPokemonProfiles
-{
- /*0x00*/ u8 var00;
- /*0x01*/ u8 var01;
- /*0x02*/ u16 species;
- /*0x04*/ u16 var04[2];
- /*0x08*/ u8 pokemonNickname[11];
- /*0x13*/ u8 contestCategory:3;
- /*0x13*/ u8 contestRank:2;
- /*0x13*/ u8 contestResult:2;
- /*0x13*/ u8 var13_7:1;
- /*0x14*/ u16 var14;
- /*0x16*/ u8 playerName[8];
- /*0x1E*/ u8 language;
- /*0x1F*/ u8 var1f;
-};
-
-struct TVShowBravoTrainerBattleTowerSpotlight
-{
- /*0x00*/ u8 var00;
- /*0x01*/ u8 var01;
- /*0x02*/ u8 trainerName[8];
- /*0x0A*/ u16 species;
- /*0x0C*/ u8 pokemonName[8];
- /*0x14*/ u16 defeatedSpecies;
- /*0x16*/ u16 var16;
- /*0x18*/ u16 var18[1];
- /*0x1A*/ u8 btLevel;
- /*0x1B*/ u8 var1b;
- /*0x1C*/ u8 var1c;
- /*0x1D*/ u8 language;
-};
-
-struct TVShowPokemonToday
-{
- /*0x00*/ u8 var00;
- /*0x01*/ u8 var01;
- /*0x02*/ u8 language;
- /*0x03*/ u8 language2;
- /*0x04*/ u8 nickname[11];
- /*0x0F*/ u8 ball;
- /*0x10*/ u16 species;
- /*0x12*/ u8 var12;
- /*0x13*/ u8 playerName[8];
-};
-
-struct TVShowSmartShopper
-{
- /*0x00*/ u8 var00;
- /*0x01*/ u8 var01;
- /*0x02*/ u8 priceReduced;
- /*0x03*/ u8 language;
- /*0x04*/ u8 pad04[2];
- /*0x06*/ u16 itemIds[3];
- /*0x0C*/ u16 itemAmounts[3];
- /*0x12*/ u8 shopLocation;
- /*0x13*/ u8 playerName[8];
-};
-
-struct TVShowPokemonTodayFailed
-{
- /*0x00*/ u8 var00;
- /*0x01*/ u8 var01;
- /*0x02*/ u8 language;
- /*0x03*/ u8 pad03[9];
- /*0x0c*/ u16 species;
- /*0x0e*/ u16 species2;
- /*0x10*/ u8 var10;
- /*0x11*/ u8 var11;
- /*0x12*/ u8 var12;
- /*0x13*/ u8 playerName[8];
-};
-
-struct TVShowPokemonAngler
-{
- /*0x00*/ u8 var00;
- /*0x01*/ u8 var01;
- /*0x02*/ u8 var02;
- /*0x03*/ u8 var03;
- /*0x04*/ u16 var04;
- /*0x06*/ u8 language;
- u8 pad07[12];
- /*0x13*/ u8 playerName[8];
-};
-
-struct TVShowWorldOfMasters
-{
- /*0x00*/ u8 var00;
- /*0x01*/ u8 var01;
- /*0x02*/ u16 var02;
- /*0x04*/ u16 var04;
- /*0x06*/ u16 var06;
- /*0x08*/ u16 var08;
- /*0x0a*/ u8 var0a;
- /*0x0b*/ u8 language;
- u8 pad0c[7];
- /*0x13*/ u8 playerName[8];
-};
-
-struct TVShowMassOutbreak
-{
- /*0x00*/ u8 var00;
- /*0x01*/ u8 var01;
- /*0x02*/ u8 var02;
- /*0x03*/ u8 var03;
- /*0x04*/ u16 moves[4];
- /*0x0C*/ u16 species;
- /*0x0E*/ u16 var0E;
- /*0x10*/ u8 locationMapNum;
- /*0x11*/ u8 locationMapGroup;
- /*0x12*/ u8 var12;
- /*0x13*/ u8 probability;
- /*0x14*/ u8 level;
- /*0x15*/ u8 var15;
- /*0x16*/ u16 var16;
- /*0x18*/ u8 language;
- u8 pad19[11];
-};
-
-typedef union TVShow
-{
- struct TVShowCommon common;
- struct TVShowFanClubLetter fanclubLetter;
- struct TVShowRecentHappenings recentHappenings;
- struct TVShowFanclubOpinions fanclubOpinions;
- struct TVShowUnknownType04 unkShow04;
- struct TVShowNameRaterShow nameRaterShow;
- struct TVShowBravoTrainerPokemonProfiles bravoTrainer;
- struct TVShowBravoTrainerBattleTowerSpotlight bravoTrainerTower;
- struct TVShowPokemonToday pokemonToday;
- struct TVShowSmartShopper smartshopperShow;
- struct TVShowPokemonTodayFailed pokemonTodayFailed;
- struct TVShowPokemonAngler pokemonAngler;
- struct TVShowWorldOfMasters worldOfMasters;
- struct TVShowMassOutbreak massOutbreak;
-} TVShow;
-
struct MailStruct
{
/*0x00*/ u16 words[9];
@@ -575,35 +374,6 @@ typedef union OldMan
u8 filler[0x40];
} OldMan;
-struct UnknownSaveStruct2ABC
-{
- u8 val0;
- u8 val1;
- u16 val2;
-};
-
-struct GabbyAndTyData
-{
- /*2b10*/ u16 mon1;
- /*2b12*/ u16 mon2;
- /*2b14*/ u16 lastMove;
- /*2b16*/ u16 quote;
- /*2b18*/ u8 mapnum;
- /*2b19*/ u8 battleNum;
- /*2b1a*/ u8 valA_0:1;
- /*2b1a*/ u8 valA_1:1;
- /*2b1a*/ u8 valA_2:1;
- /*2b1a*/ u8 valA_3:1;
- /*2b1a*/ u8 valA_4:1;
- /*2b1a*/ u8 valA_5:3;
- /*2b1b*/ u8 valB_0:1;
- /*2b1b*/ u8 valB_1:1;
- /*2b1b*/ u8 valB_2:1;
- /*2b1b*/ u8 valB_3:1;
- /*2b1b*/ u8 valB_4:1;
- /*2b1b*/ u8 valB_5:3;
-};
-
struct RecordMixing_UnknownStructSub
{
u32 unk0;
@@ -780,22 +550,22 @@ struct SaveBlock1
/*0x????*/ u8 decorCushion[10];
/*0x27CA*/ u8 padding_27CA[2];
/*0x27CC*/ TVShow tvShows[25];
- /*0x2B50*/ struct UnknownSaveStruct2ABC pokeNews[16];
+ /*0x2B50*/ PokeNews pokeNews[16];
/*0x2B90*/ u16 outbreakPokemonSpecies;
- /*0x????*/ u8 outbreakLocationMapNum;
- /*0x????*/ u8 outbreakLocationMapGroup;
- /*0x????*/ u8 outbreakPokemonLevel;
- /*0x????*/ u8 outbreakUnk1;
- /*0x????*/ u16 outbreakUnk2;
- /*0x????*/ u16 outbreakPokemonMoves[4];
- /*0x????*/ u8 outbreakUnk4;
- /*0x????*/ u8 outbreakPokemonProbability;
- /*0x????*/ u16 outbreakUnk5;
+ /*0x2B92*/ u8 outbreakLocationMapNum;
+ /*0x2B93*/ u8 outbreakLocationMapGroup;
+ /*0x2B94*/ u8 outbreakPokemonLevel;
+ /*0x2B95*/ u8 outbreakUnk1;
+ /*0x2B96*/ u16 outbreakUnk2;
+ /*0x2B98*/ u16 outbreakPokemonMoves[4];
+ /*0x2BA0*/ u8 outbreakUnk4;
+ /*0x2BA1*/ u8 outbreakPokemonProbability;
+ /*0x2BA2*/ u16 outbreakDaysLeft;
/*0x2BA4*/ struct GabbyAndTyData gabbyAndTyData;
- /*0x????*/ u16 unk2B1C[6];
- /*0x????*/ u16 unk2B28[6];
- /*0x????*/ u16 unk2B34[6];
- /*0x????*/ u16 unk2B3A[3];
+ /*0x2BB0*/ u16 unk2BB0[6];
+ /*0x2BBC*/ u16 unk2BBC[6];
+ /*0x2BC8*/ u16 unk2BC8[6];
+ /*0x2BD4*/ u16 unk2BD4[3];
/*0x2BE0*/ struct MailStruct mail[16];
/*0x2E20*/ u8 additionalPhrases[5]; // bitfield for 33 additional phrases in easy chat system
/*0x2E25*/ u8 unk2E25[3]; // possibly padding?
@@ -805,7 +575,8 @@ struct SaveBlock1
/*0x2e90*/ struct ContestWinner contestWinners[13]; // 0 - 5 used in contest hall, 6 - 7 unused?, 8 - 12 museum
/*0x3030*/ struct DaycareData daycare;
/*0x3150*/ struct LinkBattleRecord linkBattleRecords[5];
- /*0x31A0*/ u8 filler_31A0[8];
+ /*0x31A0*/ u8 unk_31A0;
+ /*0x31A1*/ u8 filler_31A1[7];
/*0x31A8*/ u8 giftRibbons[52];
/*0x31DC*/ struct Roamer roamer;
/*0x31F8*/ struct EnigmaBerry enigmaBerry;
diff --git a/include/global.tv.h b/include/global.tv.h
new file mode 100644
index 000000000..5f65aa8e0
--- /dev/null
+++ b/include/global.tv.h
@@ -0,0 +1,535 @@
+#ifndef GUARD_GLOBAL_TV_H
+#define GUARD_GLOBAL_TV_H
+
+enum
+{
+ TVSHOW_OFF_AIR,
+
+ TVSHOW_FAN_CLUB_LETTER = 1,
+ TVSHOW_RECENT_HAPPENINGS,
+ TVSHOW_PKMN_FAN_CLUB_OPINIONS,
+ TVSHOW_UNKN_SHOWTYPE_04,
+ TVSHOW_NAME_RATER_SHOW,
+ TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE,
+ TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE,
+ TVSHOW_CONTEST_LIVE_UPDATES,
+ TVSHOW_3_CHEERS_FOR_POKEBLOCKS,
+ TVSHOW_BATTLE_UPDATE,
+ TVSHOW_FAN_CLUB_SPECIAL,
+ TVSHOW_CONTEST_LIVE_UPDATES_2,
+
+ TVSHOW_POKEMON_TODAY_CAUGHT = 21,
+ TVSHOW_SMART_SHOPPER,
+ TVSHOW_POKEMON_TODAY_FAILED,
+ TVSHOW_FISHING_ADVICE,
+ TVSHOW_WORLD_OF_MASTERS,
+ TVSHOW_TODAYS_RIVAL_TRAINER,
+ TVSHOW_TREND_WATCHER,
+ TVSHOW_TREASURE_INVESTIGATORS,
+ TVSHOW_FIND_THAT_GAMER,
+ TVSHOW_BREAKING_NEWS,
+ TVSHOW_SECRET_BASE_VISIT,
+ TVSHOW_LOTTO_WINNER,
+ TVSHOW_BATTLE_SEMINAR,
+ TVSHOW_TRAINER_FAN_CLUB,
+ TVSHOW_CUTIES,
+ TVSHOW_FRONTIER,
+ TVSHOW_NUMBER_ONE,
+ TVSHOW_SECRET_BASE_SECRETS,
+ TVSHOW_SAFARI_FAN_CLUB,
+
+ TVSHOW_MASS_OUTBREAK = 41,
+};
+
+typedef union // size = 0x24
+{
+ // Common
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 pad02[26];
+ /*0x1C*/ u8 srcTrainerId3Lo;
+ /*0x1D*/ u8 srcTrainerId3Hi;
+ /*0x1E*/ u8 srcTrainerId2Lo;
+ /*0x1F*/ u8 srcTrainerId2Hi;
+ /*0x20*/ u8 srcTrainerIdLo;
+ /*0x21*/ u8 srcTrainerIdHi;
+ /*0x22*/ u8 trainerIdLo;
+ /*0x23*/ u8 trainerIdHi;
+ } common;
+
+ // Local shows
+ // TVSHOW_FAN_CLUB_LETTER
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 species;
+ /*0x04*/ u16 words[6];
+ /*0x10*/ u8 playerName[8];
+ /*0x18*/ u8 language;
+ } fanclubLetter;
+
+ // TVSHOW_RECENT_HAPPENINGS
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 var02;
+ /*0x04*/ u16 words[6];
+ /*0x10*/ u8 playerName[8];
+ /*0x18*/ u8 language;
+ } recentHappenings;
+
+ // TVSHOW_PKMN_FAN_CLUB_OPINIONS
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 species;
+ /*0x04*/ u8 friendshipHighNybble:4;
+ /*0x04*/ u8 questionAsked:4;
+ /*0x05*/ u8 playerName[8];
+ /*0x0D*/ u8 language;
+ /*0x0E*/ u8 pokemonNameLanguage;
+ /*0x0F*/ u8 filler_0F[1];
+ /*0x10*/ u8 nickname[8];
+ /*0x18*/ u8 filler_18[4];
+ /*0x1C*/ u16 words[4];
+ } fanclubOpinions;
+
+ // TVSHOW_UNKN_SHOWTYPE_04 (dummied out)
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 pad02[4];
+ /*0x06*/ u16 var06;
+ /*0x08*/ u8 pad_08[3];
+ /*0x0b*/ u8 string_0b[12];
+ /*0x17*/ u8 language;
+ } unkShow04;
+
+ // TVSHOW_NAME_RATER_SHOW
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 species;
+ /*0x04*/ u8 pokemonName[11];
+ /*0x0F*/ u8 trainerName[11];
+ /*0x1A*/ u8 random;
+ /*0x1B*/ u8 random2;
+ /*0x1C*/ u16 randomSpecies;
+ /*0x1E*/ u8 language;
+ /*0x1F*/ u8 pokemonNameLanguage;
+ } nameRaterShow;
+
+ // TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE (contest)
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 species;
+ /*0x04*/ u16 words[2];
+ /*0x08*/ u8 pokemonNickname[11];
+ /*0x13*/ u8 contestCategory:3;
+ /*0x13*/ u8 contestRank:2;
+ /*0x13*/ u8 contestResult:2;
+ /*0x14*/ u16 move;
+ /*0x16*/ u8 playerName[8];
+ /*0x1E*/ u8 language;
+ /*0x1F*/ u8 pokemonNameLanguage;
+ } bravoTrainer;
+
+ // TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 trainerName[8];
+ /*0x0A*/ u16 species;
+ /*0x0C*/ u8 pokemonName[8];
+ /*0x14*/ u16 defeatedSpecies;
+ /*0x16*/ u16 numFights;
+ /*0x18*/ u16 words[1];
+ /*0x1A*/ u8 btLevel;
+ /*0x1B*/ u8 interviewResponse;
+ /*0x1C*/ bool8 wonTheChallenge;
+ /*0x1D*/ u8 language;
+ /*0x1E*/ u8 pokemonNameLanguage;
+ } bravoTrainerTower;
+
+ // TVSHOW_CONTEST_LIVE_UPDATES
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 winningSpecies;
+ /*0x04*/ u8 winningTrainerName[8];
+ /*0x0C*/ u8 appealFlags2;
+ /*0x0D*/ u8 round1Rank;
+ /*0x0e*/ u8 round2Rank;
+ /*0x0f*/ u8 appealFlags1;
+ /*0x10*/ u16 move;
+ /*0x12*/ u16 species;
+ /*0x14*/ u8 playerName[8];
+ /*0x1C*/ u8 category;
+ /*0x1D*/ u8 language;
+ /*0x1E*/ u8 winningTrainerLanguage;
+ } contestLiveUpdates;
+
+ // TVSHOW_3_CHEERS_FOR_POKEBLOCKS
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 sheen;
+ /*0x03*/ u8 flavor:3;
+ /*0x03*/ u8 unk_03_3:2;
+ /*0x04*/ u8 worstBlenderName[8];
+ /*0x0C*/ u8 playerName[8];
+ /*0x14*/ u8 language;
+ /*0x15*/ u8 worstBlenderLanguage;
+ } threeCheers;
+
+ // TVSHOW_BATTLE_UPDATE
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 species;
+ /*0x04*/ u8 playerName[8];
+ /*0x0C*/ u8 linkOpponentName[8];
+ /*0x14*/ u16 move;
+ /*0x16*/ u16 species2;
+ /*0x18*/ u8 battleType;
+ /*0x19*/ u8 language;
+ /*0x1A*/ u8 linkOpponentLanguage;
+ } battleUpdate;
+
+ // TVSHOW_FAN_CLUB_SPECIAL
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 playerName[8];
+ /*0x0a*/ u8 idLo;
+ /*0x0b*/ u8 idHi;
+ /*0x0c*/ u8 idolName[8];
+ /*0x14*/ u16 words[1];
+ /*0x16*/ u8 score;
+ /*0x17*/ u8 language;
+ /*0x18*/ u8 idolNameLanguage;
+ } fanClubSpecial;
+
+ // TVSHOW_CONTEST_LIVE_UPDATES_2
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 playerName[8];
+ /*0x0a*/ u8 contestCategory;
+ /*0x0b*/ u8 nickname[11];
+ /*0x16*/ u8 pokeblockState;
+ /*0x17*/ u8 language;
+ /*0x18*/ u8 pokemonNameLanguage;
+ } contestLiveUpdates2;
+
+ // Record Mixing Shows
+ // TVSHOW_POKEMON_TODAY_CAUGHT
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 language;
+ /*0x03*/ u8 language2;
+ /*0x04*/ u8 nickname[11];
+ /*0x0F*/ u8 ball;
+ /*0x10*/ u16 species;
+ /*0x12*/ u8 nBallsUsed;
+ /*0x13*/ u8 playerName[8];
+ } pokemonToday;
+
+ // TVSHOW_SMART_SHOPPER
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 priceReduced;
+ /*0x03*/ u8 language;
+ /*0x04*/ u8 pad04[2];
+ /*0x06*/ u16 itemIds[3];
+ /*0x0C*/ u16 itemAmounts[3];
+ /*0x12*/ u8 shopLocation;
+ /*0x13*/ u8 playerName[8];
+ } smartshopperShow;
+
+ // TVSHOW_POKEMON_TODAY_FAILED
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 language;
+ /*0x03*/ u8 pad03[9];
+ /*0x0c*/ u16 species;
+ /*0x0e*/ u16 species2;
+ /*0x10*/ u8 nBallsUsed;
+ /*0x11*/ u8 outcome;
+ /*0x12*/ u8 location;
+ /*0x13*/ u8 playerName[8];
+ } pokemonTodayFailed;
+
+ // TVSHOW_FISHING_ADVICE
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 nBites;
+ /*0x03*/ u8 nFails;
+ /*0x04*/ u16 species;
+ /*0x06*/ u8 language;
+ /*0x07*/ u8 pad07[12];
+ /*0x13*/ u8 playerName[8];
+ } pokemonAngler;
+
+ // TVSHOW_WORLD_OF_MASTERS
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 numPokeCaught;
+ /*0x04*/ u16 caughtPoke;
+ /*0x06*/ u16 steps;
+ /*0x08*/ u16 species;
+ /*0x0a*/ u8 location;
+ /*0x0b*/ u8 language;
+ /*0x0c*/ u8 pad0c[7];
+ /*0x13*/ u8 playerName[8];
+ } worldOfMasters;
+
+ // TVSHOW_TODAYS_RIVAL_TRAINER
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 dexCount;
+ /*0x04*/ u8 badgeCount;
+ /*0x05*/ u8 nSilverSymbols;
+ /*0x06*/ u8 nGoldSymbols;
+ /*0x07*/ u8 location;
+ /*0x08*/ u16 battlePoints;
+ /*0x0a*/ u16 mapDataId;
+ /*0x0c*/ u8 language;
+ /*0x0d*/ u8 filler_0d[6];
+ /*0x13*/ u8 playerName[8];
+ } rivalTrainer;
+
+ // TVSHOW_TREND_WATCHER
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 filler_02[2];
+ /*0x04*/ u16 words[2];
+ /*0x08*/ u8 gender;
+ /*0x09*/ u8 language;
+ /*0x0a*/ u8 filler_0a[9];
+ /*0x13*/ u8 playerName[8];
+ } trendWatcher;
+
+ // TVSHOW_TREASURE_INVESTIGATORS
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 item;
+ /*0x04*/ u8 location;
+ /*0x05*/ u8 language;
+ /*0x06*/ u16 mapDataId;
+ /*0x08*/ u8 filler_08[11];
+ /*0x13*/ u8 playerName[8];
+ } treasureInvestigators;
+
+ // TVSHOW_FIND_THAT_GAMER
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 won;
+ /*0x03*/ u8 whichGame;
+ /*0x04*/ u16 nCoins;
+ /*0x06*/ u8 filler_06[2];
+ /*0x08*/ u8 language;
+ /*0x09*/ u8 filler_09[10];
+ /*0x13*/ u8 playerName[8];
+ } findThatGamer;
+
+ // TVSHOW_BREAKING_NEWS
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 lastOpponentSpecies;
+ /*0x04*/ u8 location;
+ /*0x05*/ u8 outcome;
+ /*0x06*/ u16 caughtMonBall;
+ /*0x08*/ u16 balls;
+ /*0x0a*/ u16 poke1Species;
+ /*0x0c*/ u16 lastUsedMove;
+ /*0x0e*/ u8 language;
+ /*0x0f*/ u8 filler_0f[4];
+ /*0x13*/ u8 playerName[8];
+ } breakingNews;
+
+ // TVSHOW_SECRET_BASE_VISIT
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 avgLevel;
+ /*0x03*/ u8 nDecorations;
+ /*0x04*/ u8 decorations[4];
+ /*0x08*/ u16 species;
+ /*0x0a*/ u16 move;
+ /*0x0c*/ u8 language;
+ /*0x0d*/ u8 filler_0d[6];
+ /*0x13*/ u8 playerName[8];
+ } secretBaseVisit;
+
+ // TVSHOW_LOTTO_WINNER
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 item;
+ /*0x04*/ u8 whichPrize;
+ /*0x05*/ u8 language;
+ /*0x06*/ u8 filler_06[13];
+ /*0x13*/ u8 playerName[8];
+ } lottoWinner;
+
+ // TVSHOW_BATTLE_SEMINAR
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 move;
+ /*0x04*/ u16 foeSpecies;
+ /*0x06*/ u16 species;
+ /*0x08*/ u16 otherMoves[3];
+ /*0x0e*/ u16 betterMove;
+ /*0x10*/ u8 nOtherMoves;
+ /*0x11*/ u8 language;
+ /*0x12*/ u8 filler_12[1];
+ /*0x13*/ u8 playerName[8];
+ } battleSeminar;
+
+ // TVSHOW_TRAINER_FAN_CLUB
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 filler_02[2];
+ /*0x04*/ u16 words[2];
+ /*0x08*/ u8 language;
+ /*0x09*/ u8 filler_09[10];
+ /*0x13*/ u8 playerName[8];
+ } trainerFanClub;
+
+ // TVSHOW_CUTIES
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 nRibbons;
+ /*0x03*/ u8 selectedRibbon;
+ /*0x04*/ u8 nickname[11];
+ /*0x0f*/ u8 language;
+ /*0x10*/ u8 pokemonNameLanguage;
+ /*0x11*/ u8 filler_12[2];
+ /*0x13*/ u8 playerName[8];
+ } cuties;
+
+ // TVSHOW_FRONTIER
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 winStreak;
+ /*0x04*/ u16 species1;
+ /*0x06*/ u16 species2;
+ /*0x08*/ u16 species3;
+ /*0x0a*/ u16 species4;
+ /*0x0c*/ u8 language;
+ /*0x0d*/ u8 facility;
+ /*0x0e*/ u8 filler_0e[5];
+ /*0x13*/ u8 playerName[8];
+ } frontier;
+
+ // TVSHOW_NUMBER_ONE
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 count;
+ /*0x04*/ u8 actionIdx;
+ /*0x05*/ u8 language;
+ /*0x06*/ u8 filler_06[13];
+ /*0x13*/ u8 playerName[8];
+ } numberOne;
+
+ // TVSHOW_SECRET_BASE_SECRETS
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u16 stepsInBase;
+ /*0x04*/ u8 baseOwnersName[8];
+ /*0x0c*/ u32 flags;
+ /*0x10*/ u16 item;
+ /*0x12*/ u8 savedState;
+ /*0x13*/ u8 playerName[8];
+ /*0x1b*/ u8 language;
+ /*0x1c*/ u8 baseOwnersNameLanguage;
+ } secretBaseSecrets;
+
+ // TVSHOW_SAFARI_FAN_CLUB
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 nMonsCaught;
+ /*0x03*/ u8 nPkblkUsed;
+ /*0x04*/ u8 language;
+ /*0x05*/ u8 filler_05[14];
+ /*0x13*/ u8 playerName[8];
+ } safariFanClub;
+
+ // Mass Outbreak
+ // TVSHOW_MASS_OUTBREAK
+ struct {
+ /*0x00*/ u8 kind;
+ /*0x01*/ bool8 active;
+ /*0x02*/ u8 var02;
+ /*0x03*/ u8 var03;
+ /*0x04*/ u16 moves[4];
+ /*0x0C*/ u16 species;
+ /*0x0E*/ u16 var0E;
+ /*0x10*/ u8 locationMapNum;
+ /*0x11*/ u8 locationMapGroup;
+ /*0x12*/ u8 var12;
+ /*0x13*/ u8 probability;
+ /*0x14*/ u8 level;
+ /*0x15*/ u8 var15;
+ /*0x16*/ u16 daysLeft;
+ /*0x18*/ u8 language;
+ } massOutbreak;
+} TVShow;
+
+enum {
+ POKENEWS_NONE,
+ POKENEWS_SLATEPORT,
+ POKENEWS_GAME_CORNER,
+ POKENEWS_LILYCOVE,
+ POKENEWS_BLENDMASTER
+};
+
+typedef struct // 2b50
+{
+ u8 kind;
+ u8 state;
+ u16 days;
+} PokeNews;
+
+struct GabbyAndTyData
+{
+ /*2ba4*/ u16 mon1;
+ /*2ba6*/ u16 mon2;
+ /*2ba8*/ u16 lastMove;
+ /*2baa*/ u16 quote[1];
+ /*2bac*/ u8 mapnum;
+ /*2bad*/ u8 battleNum;
+ /*2bae*/ u8 battleTookMoreThanOneTurn:1;
+ /*2bae*/ u8 playerLostAMon:1;
+ /*2bae*/ u8 playerUsedAnItem:1;
+ /*2bae*/ u8 playerThrewABall:1;
+ /*2bae*/ u8 onAir:1;
+ /*2bae*/ u8 valA_5:3;
+ /*2baf*/ u8 battleTookMoreThanOneTurn2:1;
+ /*2baf*/ u8 playerLostAMon2:1;
+ /*2baf*/ u8 playerUsedAnItem2:1;
+ /*2baf*/ u8 playerThrewABall2:1;
+ /*2baf*/ u8 valB_4:4;
+};
+
+#endif //GUARD_GLOBAL_TV_H
diff --git a/include/international_string_util.h b/include/international_string_util.h
new file mode 100644
index 000000000..11b5c633c
--- /dev/null
+++ b/include/international_string_util.h
@@ -0,0 +1,21 @@
+#ifndef GUARD_INTERNATIONAL_STRING_UTIL_H
+#define GUARD_INTERNATIONAL_STRING_UTIL_H
+
+s32 GetStringCenterAlignXOffset(s32 fontId, const u8 *str, s32 totalWidth);
+s32 GetStringRightAlignXOffset(s32 fontId, const u8 *str, s32 totalWidth);
+s32 GetStringCenterAlignXOffsetWithLetterSpacing(s32 fontId, const u8 *str, s32 totalWidth, s32 letterSpacing);
+s32 GetStringWidthDifference(s32 fontId, const u8 *str, s32 totalWidth, s32 letterSpacing);
+s32 GetMaxWidthInMenuTable(const u8 **str, s32 arg1);
+s32 sub_81DB3D8(const u8 **str, u8* arg1, s32 arg2);
+// sub_81DB41C
+// sub_81DB468
+// sub_81DB494
+// sub_81DB4DC
+// sub_81DB52C
+// sub_81DB554
+// sub_81DB5AC
+void TVShowConvertInternationalString(u8 *dest, const u8 *src, u8 language);
+u32 sub_81DB604(const u8 *);
+// sub_81DB620
+
+#endif // GUARD_INTERNATIONAL_STRING_UTIL_H
diff --git a/include/item.h b/include/item.h
index eaefa0298..a136f03ec 100644
--- a/include/item.h
+++ b/include/item.h
@@ -31,6 +31,7 @@ extern struct BagPocket gBagPockets[];
void GetBerryCountString(u8* dst, const u8* berryName, u32 quantity);
void CopyItemName(u16 itemId, u8 *string);
+void CopyItemNameHandlePlural(u16 itemId, u8 *string, u32 quantity);
bool8 IsBagPocketNonEmpty(u8 pocket);
bool8 CheckBagHasItem(u16 itemId, u16 count);
bool8 CheckBagHasSpace(u16 itemId, u16 count);
@@ -58,5 +59,6 @@ ItemUseFunc ItemId_GetFieldFunc(u16 itemId);
u8 ItemId_GetBattleUsage(u16 itemId);
ItemUseFunc ItemId_GetBattleFunc(u16 itemId);
u8 ItemId_GetSecondaryId(u16 itemId);
+u16 itemid_get_market_price(u16 itemId);
#endif // ITEM_H
diff --git a/include/link.h b/include/link.h
index 012c90480..5f5654e4d 100644
--- a/include/link.h
+++ b/include/link.h
@@ -177,12 +177,12 @@ u32 LinkMain1(u8 *, u16 *, u16[CMD_LENGTH][MAX_LINK_PLAYERS]);
void LinkVSync(void);
void Timer3Intr(void);
void SerialCB(void);
+u8 GetLinkPlayerCount(void);
void sub_800E0E8(void);
bool8 sub_800A520(void);
bool8 sub_8010500(void);
void sub_800DFB4(u8, u8);
void sub_800ADF8(void);
-u8 sub_8009FCC(void);
#endif // GUARD_LINK_H
diff --git a/include/malloc.h b/include/malloc.h
index 4568e244a..f3a731797 100644
--- a/include/malloc.h
+++ b/include/malloc.h
@@ -2,7 +2,7 @@
#define GUARD_MALLOC_H
#define malloc Alloc
-#define calloc AllocZeroed
+#define calloc(ct, sz) AllocZeroed((ct) * (sz))
#define free Free
extern u8 gHeap[];
diff --git a/include/map_obj_lock.h b/include/map_obj_lock.h
new file mode 100644
index 000000000..a10648f2f
--- /dev/null
+++ b/include/map_obj_lock.h
@@ -0,0 +1,11 @@
+#ifndef GUARD_MAP_OBJ_LOCK_H
+#define GUARD_MAP_OBJ_LOCK_H
+
+bool8 sub_80983C4(void);
+void ScriptFreezeMapObjects(void);
+bool8 sub_809847C(void);
+void LockSelectedMapObject(void);
+void sub_8098630(void);
+bool8 sub_8098734(void);
+
+#endif // GUARD_MAP_OBJ_LOCK_H
diff --git a/include/menu.h b/include/menu.h
index 766aa9d39..66ac73e03 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -19,5 +19,6 @@ void box_print(u8, u8, u8, u8, const void *, s8, const u8 *);
void sub_8198070(u8 windowId, bool8 copyToVram);
void SetWindowTemplateFields(struct WindowTemplate* template, u8 priority, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 palNum, u16 baseBlock);
void SetWindowBorderStyle(u8 windowId, bool8 copyToVram, u16 tileStart, u8 palette);
+void 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
#endif // GUARD_MENU_H
diff --git a/include/money.h b/include/money.h
index 22a3657f6..5c7c1c984 100644
--- a/include/money.h
+++ b/include/money.h
@@ -5,7 +5,7 @@ u32 GetMoney(u32* moneyPtr);
void SetMoney(u32* moneyPtr, u32 newValue);
bool8 IsEnoughMoney(u32* moneyPtr, u32 cost);
void AddMoney(u32* moneyPtr, u32 toAdd);
-void SubtractMoney(u32* moneyPtr, u32 toSub);
+void RemoveMoney(u32* moneyPtr, u32 toSub);
bool8 IsEnoughForCostInVar0x8005(void);
void SubtractMoneyFromVar0x8005(void);
void PrintMoneyAmountInMoneyBox(u8 windowId, int amount, u8 speed);
diff --git a/include/moves.h b/include/moves.h
index bc213cbc7..682f59506 100644
--- a/include/moves.h
+++ b/include/moves.h
@@ -359,6 +359,7 @@ enum
MOVE_DOOM_DESIRE,
MOVE_PSYCHO_BOOST,
};
+extern const u8 gMoveNames[][13];
#define LAST_MOVE_INDEX MOVE_PSYCHO_BOOST
diff --git a/include/mystery_event_script.h b/include/mystery_event_script.h
new file mode 100644
index 000000000..ab23a8d00
--- /dev/null
+++ b/include/mystery_event_script.h
@@ -0,0 +1,8 @@
+#ifndef GUARD_MYSTERY_EVENT_SCRIPT_H
+#define GUARD_MYSTERY_EVENT_SCRIPT_H
+
+u32 RunMysteryEventScript(u8 *);
+void SetMysteryEventScriptStatus(u32 val);
+u16 GetRecordMixingGift(void);
+
+#endif // GUARD_MYSTERY_EVENT_SCRIPT_H
diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h
new file mode 100644
index 000000000..6377897d3
--- /dev/null
+++ b/include/new_menu_helpers.h
@@ -0,0 +1,9 @@
+#ifndef GUARD_NEW_MENU_HELPERS_H
+#define GUARD_NEW_MENU_HELPERS_H
+
+void sub_81973A4(void);
+void sub_81973C4(u8, u8);
+void sub_819746C(u8 windowId, bool8 copyToVram);
+void sub_81973FC(u8, u8);
+
+#endif // GUARD_NEW_MENU_HELPERS_H
diff --git a/include/overworld.h b/include/overworld.h
new file mode 100644
index 000000000..0475e8e8c
--- /dev/null
+++ b/include/overworld.h
@@ -0,0 +1,58 @@
+#ifndef GUARD_ROM4_H
+#define GUARD_ROM4_H
+
+struct UnkPlayerStruct
+{
+ u8 player_field_0;
+ u8 player_field_1;
+};
+
+struct LinkPlayerMapObject
+{
+ u8 active;
+ u8 linkPlayerId;
+ u8 mapObjId;
+ u8 mode;
+};
+
+struct UCoords32
+{
+ u32 x, y;
+};
+
+extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4];
+
+void IncrementGameStat(u8 index);
+
+void Overworld_SetMapObjTemplateCoords(u8, s16, s16);
+void Overworld_SetMapObjTemplateMovementType(u8, u8);
+
+void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
+
+void saved_warp2_set_2(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
+void Overworld_SetHealLocationWarp(u8);
+void sub_8084DD4(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
+void sub_8084E2C(s8, s8, s8, s8, s8);
+void sub_8084E80(s8, s8, s8, s8, s8);
+void sub_8084EBC(s16, s16);
+
+void player_avatar_init_params_reset(void);
+
+void Overworld_SetFlashLevel(s32 a1);
+//u8 Overworld_GetFlashLevel(void);
+void sub_8085524(u16);
+
+void Overworld_SetSavedMusic(u16);
+void Overworld_ChangeMusicToDefault(void);
+void Overworld_ChangeMusicTo(u16);
+
+bool32 is_c1_link_related_active(void);
+
+void strange_npc_table_clear(void);
+const struct MapHeader *get_mapheader_by_bank_and_number(u8, u8);
+void FieldObjectMoveDestCoords(struct MapObject *, u32, s16 *, s16 *);
+void sub_8086230(void);
+void c2_exit_to_overworld_2_switch(void);
+void c2_exit_to_overworld_1_continue_scripts_restart_music(void);
+
+#endif //GUARD_ROM4_H
diff --git a/include/palette.h b/include/palette.h
index de2cf0083..d3bcd2271 100644
--- a/include/palette.h
+++ b/include/palette.h
@@ -8,6 +8,9 @@
#define gPaletteFade_delay (gPaletteFade.multipurpose2) // normal and hardware fade
#define gPaletteFade_submode (gPaletteFade.multipurpose2) // fast fade
+#define PLTT_BUFFER_SIZE 0x200
+#define PLTT_DECOMP_BUFFER_SIZE (PLTT_BUFFER_SIZE * 2)
+
enum
{
FAST_FADE_IN_FROM_WHITE,
diff --git a/include/party_menu.h b/include/party_menu.h
new file mode 100644
index 000000000..175aba639
--- /dev/null
+++ b/include/party_menu.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_PARTY_MENU_H
+#define GUARD_PARTY_MENU_H
+
+bool8 pokemon_has_move(struct Pokemon *, u16);
+
+#endif // GUARD_PARTY_MENU_H
diff --git a/include/pokedex.h b/include/pokedex.h
index 38aca0915..79721899f 100644
--- a/include/pokedex.h
+++ b/include/pokedex.h
@@ -16,6 +16,8 @@ enum
FLAG_SET_CAUGHT
};
-u8 GetSetPokedexFlag(u16 nationalNum, u8 caseId);
+s8 GetSetPokedexFlag(u16 nationalNum, u8 caseId);
+u16 pokedex_count(u8);
+u16 sub_80C0844(u8);
#endif // GUARD_POKEDEX_H
diff --git a/include/pokemon.h b/include/pokemon.h
index 263a37426..c26c28afa 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -642,6 +642,7 @@ void UpdatePartyPokerusTime(u16 days);
void PartySpreadPokerus(struct Pokemon *party);
s8 GetMonFlavourRelation(struct Pokemon *mon, u8 a2);
s8 GetFlavourRelationByPersonality(u32 personality, u8 a2);
+u8 GetItemEffectParamOffset(u16 itemId, u8 effectByte, u8 effectBit);
#include "sprite.h"
diff --git a/include/pokemon_3.h b/include/pokemon_3.h
new file mode 100644
index 000000000..5c9862d57
--- /dev/null
+++ b/include/pokemon_3.h
@@ -0,0 +1,7 @@
+#ifndef GUARD_POKEMON_3_H
+#define GUARD_POKEMON_3_H
+
+const u8* GetTrainerClassNameFromId(u16 trainerId);
+const u8* GetTrainerNameFromId(u16 trainerId);
+
+#endif // GUARD_POKEMON_3_H
diff --git a/include/pokemon_item_effects.h b/include/pokemon_item_effects.h
index 88f341317..505cc0f25 100644
--- a/include/pokemon_item_effects.h
+++ b/include/pokemon_item_effects.h
@@ -3,6 +3,60 @@
#include "pokemon.h"
+// TODO once pokemon item effects is decompiled
+/*
+struct PokemonItemEffect
+{
+ //field 0
+ u8 xAtk : 4; // x1, x2, x4, x8 = xF
+ u8 field_0_x10 : 1; // x10
+ u8 critRatioUp : 1; // x20
+ u8 field_0_x40 : 1; // x40
+ u8 cureInfatuation : 1; // x80
+
+ /*field 1
+ u8 xSpeed : 4; // x1, x2, x4, x8 = xF
+ u8 xDefense : 4; // x10, x20, x40, xF0
+
+ /*field 2
+ u8 xSpAtk : 4; // x1, x2, x4, x8 = xF
+ u8 xAccuracy : 4; // x10, x20, x40, xF0
+
+ /*field 3
+ u8 cureConfusion : 1; // x1
+ u8 cureParalysis : 1; // x2
+ u8 cureFreeze : 1; // x4
+ u8 cureBurn : 1; // x8
+ u8 curePoison : 1; // x10
+ u8 cureSleep : 1; // x20
+ u8 field_3_x40 : 1; // x40
+ u8 cantLowerStats : 1; // x80
+
+ /*field 4
+ u8 hpEv : 1; // x1
+ u8 attackEv : 1; // x2
+ u8 healHp : 1; // x4
+ u8 field_4_x8 : 1; // x8
+ u8 field_4_x10 : 1; // x10
+ u8 ppUp : 1; // x20
+ u8 levelUp : 1; // x40
+ u8 evolutionStone : 1; // x80
+
+ /*field 5
+ u8 defEv: 1; // x1
+ u8 speedEv : 1; // x2
+ u8 spDefEv : 1; // x4
+ u8 spAtkEv : 1; // x8
+ u8 ppMax : 1; // x10
+ u8 field_5_x20 : 1; // x20
+ u8 field_5_x40 : 1; // x40
+ u8 field_5_x80 : 1; // x80
+
+ /*field 6
+ u8 value;
+};
+*/
+
bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 itemId, u8 partyId, u8 monMoveIndex, u8 a5);
#endif // GUARD_POKEMON_ITEM_EFFECTS
diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h
index 5216e8450..49680793d 100644
--- a/include/pokemon_storage_system.h
+++ b/include/pokemon_storage_system.h
@@ -2,5 +2,7 @@
#define GUARD_POKEMON_STORAGE_SYSTEM_H
u8* GetBoxNamePtr(u8 boxNumber);
+struct BoxPokemon *GetBoxedMonPtr(u8, u8);
+void SetBoxMonNickFromAnyBox(u8, u8, u8 *);
#endif // GUARD_POKEMON_STORAGE_SYSTEM_H
diff --git a/include/region_map.h b/include/region_map.h
new file mode 100644
index 000000000..52e7376be
--- /dev/null
+++ b/include/region_map.h
@@ -0,0 +1,227 @@
+#ifndef GUARD_REGION_MAP_H
+#define GUARD_REGION_MAP_H
+
+// Exported type declarations
+
+enum {
+ REGION_MAP_LITTLEROOT_TOWN,
+ REGION_MAP_OLDALE_TOWN,
+ REGION_MAP_DEWFORD_TOWN,
+ REGION_MAP_LAVARIDGE_TOWN,
+ REGION_MAP_FALLARBOR_TOWN,
+ REGION_MAP_VERDANTURF_TOWN,
+ REGION_MAP_PACIFIDLOG_TOWN,
+ REGION_MAP_PETALBURG_CITY,
+ REGION_MAP_SLATEPORT_CITY,
+ REGION_MAP_MAUVILLE_CITY,
+ REGION_MAP_RUSTBORO_CITY,
+ REGION_MAP_FORTREE_CITY,
+ REGION_MAP_LILYCOVE_CITY,
+ REGION_MAP_MOSSDEEP_CITY,
+ REGION_MAP_SOOTOPOLIS_CITY,
+ REGION_MAP_EVER_GRANDE_CITY,
+ REGION_MAP_ROUTE_101,
+ REGION_MAP_ROUTE_102,
+ REGION_MAP_ROUTE_103,
+ REGION_MAP_ROUTE_104,
+ REGION_MAP_ROUTE_105,
+ REGION_MAP_ROUTE_106,
+ REGION_MAP_ROUTE_107,
+ REGION_MAP_ROUTE_108,
+ REGION_MAP_ROUTE_109,
+ REGION_MAP_ROUTE_110,
+ REGION_MAP_ROUTE_111,
+ REGION_MAP_ROUTE_112,
+ REGION_MAP_ROUTE_113,
+ REGION_MAP_ROUTE_114,
+ REGION_MAP_ROUTE_115,
+ REGION_MAP_ROUTE_116,
+ REGION_MAP_ROUTE_117,
+ REGION_MAP_ROUTE_118,
+ REGION_MAP_ROUTE_119,
+ REGION_MAP_ROUTE_120,
+ REGION_MAP_ROUTE_121,
+ REGION_MAP_ROUTE_122,
+ REGION_MAP_ROUTE_123,
+ REGION_MAP_ROUTE_124,
+ REGION_MAP_ROUTE_125,
+ REGION_MAP_ROUTE_126,
+ REGION_MAP_ROUTE_127,
+ REGION_MAP_ROUTE_128,
+ REGION_MAP_ROUTE_129,
+ REGION_MAP_ROUTE_130,
+ REGION_MAP_ROUTE_131,
+ REGION_MAP_ROUTE_132,
+ REGION_MAP_ROUTE_133,
+ REGION_MAP_ROUTE_134,
+ REGION_MAP_UNDERWATER_124,
+ REGION_MAP_UNDERWATER_125,
+ REGION_MAP_UNDERWATER_126,
+ REGION_MAP_UNDERWATER_127,
+ REGION_MAP_UNDERWATER_128,
+ REGION_MAP_GRANITE_CAVE,
+ REGION_MAP_MT_CHIMNEY,
+ REGION_MAP_SAFARI_ZONE,
+ REGION_MAP_BATTLE_FRONTIER,
+ REGION_MAP_PETALBURG_WOODS,
+ REGION_MAP_RUSTURF_TUNNEL,
+ REGION_MAP_ABANDONED_SHIP,
+ REGION_MAP_NEW_MAUVILLE,
+ REGION_MAP_METEOR_FALLS,
+ REGION_MAP_METEOR_FALLS2,
+ REGION_MAP_MT_PYRE,
+ REGION_MAP_AQUA_HIDEOUT_OLD,
+ REGION_MAP_SHOAL_CAVE,
+ REGION_MAP_SEAFLOOR_CAVERN,
+ REGION_MAP_UNDERWATER,
+ REGION_MAP_VICTORY_ROAD,
+ REGION_MAP_MIRAGE_ISLAND,
+ REGION_MAP_CAVE_OF_ORIGIN,
+ REGION_MAP_SOUTHERN_ISLAND,
+ REGION_MAP_FIERY_PATH,
+ REGION_MAP_FIERY_PATH2,
+ REGION_MAP_JAGGED_PASS,
+ REGION_MAP_JAGGED_PASS2,
+ REGION_MAP_SEALED_CHAMBER,
+ REGION_MAP_UNDERWATER_SEALED_CHAMBER,
+ REGION_MAP_SCORCHED_SLAB,
+ REGION_MAP_ISLAND_CAVE,
+ REGION_MAP_DESERT_RUINS,
+ REGION_MAP_ANCIENT_TOMB,
+ REGION_MAP_INSIDE_OF_TRUCK,
+ REGION_MAP_SKY_PILLAR,
+ REGION_MAP_SECRET_BASE,
+ REGION_MAP_NONE,
+ REGION_MAP_PALLET_TOWN,
+ REGION_MAP_VIRIDIAN_CITY,
+ REGION_MAP_PEWTER_CITY,
+ REGION_MAP_CERULEAN_CITY,
+ REGION_MAP_LAVENDER_TOWN,
+ REGION_MAP_VERMILION_CITY,
+ REGION_MAP_CELADON_CITY,
+ REGION_MAP_FUCHSIA_CITY,
+ REGION_MAP_CINNABAR_ISLAND,
+ REGION_MAP_INDIGO_PLATEAU,
+ REGION_MAP_SAFFRON_CITY,
+ REGION_MAP_ROUTE_4,
+ REGION_MAP_ROUTE_10,
+ REGION_MAP_ROUTE_1,
+ REGION_MAP_ROUTE_2,
+ REGION_MAP_ROUTE_3,
+ REGION_MAP_ROUTE_4_2,
+ REGION_MAP_ROUTE_5,
+ REGION_MAP_ROUTE_6,
+ REGION_MAP_ROUTE_7,
+ REGION_MAP_ROUTE_8,
+ REGION_MAP_ROUTE_9,
+ REGION_MAP_ROUTE_10_2,
+ REGION_MAP_ROUTE_11,
+ REGION_MAP_ROUTE_12,
+ REGION_MAP_ROUTE_13,
+ REGION_MAP_ROUTE_14,
+ REGION_MAP_ROUTE_15,
+ REGION_MAP_ROUTE_16,
+ REGION_MAP_ROUTE_17,
+ REGION_MAP_ROUTE_18,
+ REGION_MAP_ROUTE_19,
+ REGION_MAP_ROUTE_20,
+ REGION_MAP_ROUTE_21,
+ REGION_MAP_ROUTE_22,
+ REGION_MAP_ROUTE_23,
+ REGION_MAP_ROUTE_24,
+ REGION_MAP_ROUTE_25,
+ REGION_MAP_VIRIDIAN_FOREST,
+ REGION_MAP_MT_MOON,
+ REGION_MAP_S_S_ANNE,
+ REGION_MAP_UNDERGROUND_PATH,
+ REGION_MAP_UNDERGROUND_PATH_2,
+ REGION_MAP_DIGLETTS_CAVE,
+ REGION_MAP_KANTO_VICTORY_ROAD,
+ REGION_MAP_ROCKET_HIDEOUT,
+ REGION_MAP_SILPH_CO,
+ REGION_MAP_POKEMON_MANSION,
+ REGION_MAP_KANTO_SAFARI_ZONE,
+ REGION_MAP_POKEMON_LEAGUE,
+ REGION_MAP_ROCK_TUNNEL,
+ REGION_MAP_SEAFOAM_ISLANDS,
+ REGION_MAP_POKEMON_TOWER,
+ REGION_MAP_CERULEAN_CAVE,
+ REGION_MAP_POWER_PLANT,
+ REGION_MAP_ONE_ISLAND,
+ REGION_MAP_TWO_ISLAND,
+ REGION_MAP_THREE_ISLAND,
+ REGION_MAP_FOUR_ISLAND,
+ REGION_MAP_FIVE_ISLAND,
+ REGION_MAP_SEVEN_ISLAND,
+ REGION_MAP_SIX_ISLAND,
+ REGION_MAP_KINDLE_ROAD,
+ REGION_MAP_TREASURE_BEACH,
+ REGION_MAP_CAPE_BRINK,
+ REGION_MAP_BOND_BRIDGE,
+ REGION_MAP_THREE_ISLE_PORT,
+ REGION_MAP_SEVII_ISLE_6,
+ REGION_MAP_SEVII_ISLE_7,
+ REGION_MAP_SEVII_ISLE_8,
+ REGION_MAP_SEVII_ISLE_9,
+ REGION_MAP_RESORT_GORGEOUS,
+ REGION_MAP_WATER_LABYRINTH,
+ REGION_MAP_FIVE_ISLE_MEADOW,
+ REGION_MAP_MEMORIAL_PILLAR,
+ REGION_MAP_OUTCAST_ISLAND,
+ REGION_MAP_GREEN_PATH,
+ REGION_MAP_WATER_PATH,
+ REGION_MAP_RUIN_VALLEY,
+ REGION_MAP_TRAINER_TOWER,
+ REGION_MAP_CANYON_ENTRANCE,
+ REGION_MAP_SEVAULT_CANYON,
+ REGION_MAP_TANOBY_RUINS,
+ REGION_MAP_SEVII_ISLE_22,
+ REGION_MAP_SEVII_ISLE_23,
+ REGION_MAP_SEVII_ISLE_24,
+ REGION_MAP_NAVEL_ROCK,
+ REGION_MAP_MT_EMBER,
+ REGION_MAP_BERRY_FOREST,
+ REGION_MAP_ICEFALL_CAVE,
+ REGION_MAP_ROCKET_WAREHOUSE,
+ REGION_MAP_TRAINER_TOWER_2,
+ REGION_MAP_DOTTED_HOLE,
+ REGION_MAP_LOST_CAVE,
+ REGION_MAP_PATTERN_BUSH,
+ REGION_MAP_ALTERING_CAVE,
+ REGION_MAP_TANOBY_CHAMBERS,
+ REGION_MAP_THREE_ISLE_PATH,
+ REGION_MAP_TANOBY_KEY,
+ REGION_MAP_BIRTH_ISLAND,
+ REGION_MAP_MONEAN_CHAMBER,
+ REGION_MAP_LIPTOO_CHAMBER,
+ REGION_MAP_WEEPTH_CHAMBER,
+ REGION_MAP_DILFORD_CHAMBER,
+ REGION_MAP_SCUFIB_CHAMBER,
+ REGION_MAP_RIXY_CHAMBER,
+ REGION_MAP_VIAPOIS_CHAMBER,
+ REGION_MAP_EMBER_SPA,
+ REGION_MAP_SPECIAL_AREA,
+ REGION_MAP_AQUA_HIDEOUT,
+ REGION_MAP_MAGMA_HIDEOUT,
+ REGION_MAP_MIRAGE_TOWER,
+ REGION_MAP_BIRTH_ISLAND_2,
+ REGION_MAP_FARAWAY_ISLAND,
+ REGION_MAP_ARTISAN_CAVE,
+ REGION_MAP_MARINE_CAVE,
+ REGION_MAP_UNDERWATER_MARINE_CAVE,
+ REGION_MAP_TERRA_CAVE,
+ REGION_MAP_UNDERWATER_TERRA_CAVE,
+ REGION_MAP_UNDERWATER_UNK1,
+ REGION_MAP_UNDERWATER_UNK2,
+ REGION_MAP_DESERT_UNDERPASS,
+ REGION_MAP_ALTERING_CAVE_2,
+ REGION_MAP_NAVEL_ROCK2,
+ REGION_MAP_TRAINER_HILL
+};
+
+// Exported RAM declarations
+
+// Exported ROM declarations
+void GetMapName(u8 *, u16, u16);
+
+#endif //GUARD_REGION_MAP_H
diff --git a/include/reshow_battle_screen.h b/include/reshow_battle_screen.h
index 62773b48b..c22135280 100644
--- a/include/reshow_battle_screen.h
+++ b/include/reshow_battle_screen.h
@@ -1,6 +1,7 @@
#ifndef GUARD_RESHOW_BATTLE_SCREEN_H
#define GUARD_RESHOW_BATTLE_SCREEN_H
+void nullsub_35(void);
void ReshowBattleScreenAfterMenu(void);
#endif // GUARD_RESHOW_BATTLE_SCREEN_H
diff --git a/include/rom4.h b/include/rom4.h
deleted file mode 100644
index e19d277a6..000000000
--- a/include/rom4.h
+++ /dev/null
@@ -1,33 +0,0 @@
-
-#ifndef GUARD_ROM4_H
-#define GUARD_ROM4_H
-
-struct UnkPlayerStruct
-{
- u8 player_field_0;
- u8 player_field_1;
-};
-
-struct LinkPlayerMapObject
-{
- u8 active;
- u8 linkPlayerId;
- u8 mapObjId;
- u8 mode;
-};
-
-struct UCoords32
-{
- u32 x, y;
-};
-
-
-extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4];
-
-void strange_npc_table_clear(void);
-const struct MapHeader *get_mapheader_by_bank_and_number(u8, u8);
-void FieldObjectMoveDestCoords(struct MapObject *, u32, s16 *, s16 *);
-void sub_8086230(void);
-void c2_exit_to_overworld_2_switch(void);
-
-#endif //GUARD_ROM4_H
diff --git a/include/rom6.h b/include/rom6.h
index 15070616d..0e9927855 100644
--- a/include/rom6.h
+++ b/include/rom6.h
@@ -2,5 +2,6 @@
#define GUARD_ROM6_H
void sub_81357FC(u8, void(void));
+u8 GetLeadMonIndex(void);
#endif //GUARD_ROM6_H
diff --git a/include/save_location.h b/include/save_location.h
new file mode 100644
index 000000000..95b3a7d7d
--- /dev/null
+++ b/include/save_location.h
@@ -0,0 +1,9 @@
+#ifndef GUARD_SAVE_LOCATION_H
+#define GUARD_SAVE_LOCATION_H
+
+bool32 sub_81AFCEC(void);
+void TrySetMapSaveWarpStatus(void);
+void sub_81AFDA0(void);
+void sub_81AFDD0(void);
+
+#endif // GUARD_SAVE_LOCATION_H
diff --git a/include/script.h b/include/script.h
index ec6a212bc..2b5f8c2ce 100644
--- a/include/script.h
+++ b/include/script.h
@@ -28,8 +28,8 @@ void StopScript(struct ScriptContext *ctx);
bool8 RunScriptCommand(struct ScriptContext *ctx);
u8 ScriptPush(struct ScriptContext *ctx, const u8 *ptr);
const u8 *ScriptPop(struct ScriptContext *ctx);
-void ScriptJump(struct ScriptContext *ctx, u8 *ptr);
-void ScriptCall(struct ScriptContext *ctx, u8 *ptr);
+void ScriptJump(struct ScriptContext *ctx, const u8 *ptr);
+void ScriptCall(struct ScriptContext *ctx, const u8 *ptr);
void ScriptReturn(struct ScriptContext *ctx);
u16 ScriptReadHalfword(struct ScriptContext *ctx);
u32 ScriptReadWord(struct ScriptContext *ctx);
diff --git a/include/script_menu.h b/include/script_menu.h
new file mode 100644
index 000000000..717eda041
--- /dev/null
+++ b/include/script_menu.h
@@ -0,0 +1,13 @@
+#ifndef GUARD_SCRIPT_MENU_H
+#define GUARD_SCRIPT_MENU_H
+
+extern const u8 *const gUnknown_0858BAF0[9];
+
+bool8 ScriptMenu_Multichoice(u8 left, u8 top, u8 var3, u8 var4);
+bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 var3, u8 var4, u8 var5);
+bool8 ScriptMenu_YesNo(u8 var1, u8 var2);
+bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, u8 a4, u8 columnCount);
+bool8 ScriptMenu_ShowPokemonPic(u16 var1, u8 var2, u8 var3);
+bool8 (*ScriptMenu_GetPicboxWaitFunc(void))(void);
+
+#endif //GUARD_SCRIPT_MENU_H
diff --git a/include/script_movement.h b/include/script_movement.h
new file mode 100644
index 000000000..4c3fa6002
--- /dev/null
+++ b/include/script_movement.h
@@ -0,0 +1,8 @@
+#ifndef GUARD_SCRIPT_MOVEMENT_H
+#define GUARD_SCRIPT_MOVEMENT_H
+
+bool8 ScriptMovement_StartObjectMovementScript(u8, u8, u8, const u8 *);
+bool8 ScriptMovement_IsObjectMovementFinished(u8, u8, u8);
+void sub_80D338C(void);
+
+#endif // GUARD_SCRIPT_MOVEMENT_H
diff --git a/include/script_pokemon_80F8.h b/include/script_pokemon_80F8.h
new file mode 100644
index 000000000..8dd7ed0c0
--- /dev/null
+++ b/include/script_pokemon_80F8.h
@@ -0,0 +1,10 @@
+#ifndef GUARD_SCRIPTPOKE80F8_H
+#define GUARD_SCRIPTPOKE80F8_H
+
+void ShowContestWinner(void);
+u8 ScriptGiveMon(u16, u8, u16, u32, u32, u8);
+u8 ScriptGiveEgg(u16);
+void CreateScriptedWildMon(u16, u8, u16);
+void ScriptSetMonMoveSlot(u8, u16, u8);
+
+#endif
diff --git a/include/script_pokemon_81B9.h b/include/script_pokemon_81B9.h
new file mode 100644
index 000000000..1b8563ee6
--- /dev/null
+++ b/include/script_pokemon_81B9.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_SCRIPTPOKE81B9_H
+#define GUARD_SCRIPTPOKE81B9_H
+
+void sub_81B9404(void);
+
+#endif
diff --git a/include/secret_base.h b/include/secret_base.h
new file mode 100644
index 000000000..4f7b411da
--- /dev/null
+++ b/include/secret_base.h
@@ -0,0 +1,11 @@
+#ifndef GUARD_SECRET_BASE_H
+#define GUARD_SECRET_BASE_H
+
+// Exported type declarations
+
+// Exported RAM declarations
+
+// Exported ROM declarations
+void sub_80E980C(void);
+
+#endif //GUARD_SECRET_BASE_H
diff --git a/include/shop.h b/include/shop.h
new file mode 100644
index 000000000..d3e86408c
--- /dev/null
+++ b/include/shop.h
@@ -0,0 +1,10 @@
+#ifndef GUARD_SHOP_H
+#define GUARD_SHOP_H
+
+extern EWRAM_DATA struct ItemSlot gUnknown_02039F80[3];
+
+void CreatePokemartMenu(const u16 *);
+void CreateDecorationShop1Menu(const u16 *);
+void CreateDecorationShop2Menu(const u16 *);
+
+#endif // GUARD_SHOP_H
diff --git a/include/slot_machine.h b/include/slot_machine.h
new file mode 100644
index 000000000..8334e56fc
--- /dev/null
+++ b/include/slot_machine.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_SLOT_MACHINE_H
+#define GUARD_SLOT_MACHINE_H
+
+void PlaySlotMachine(u8, void *);
+
+#endif // GUARD_SLOT_MACHINE_H
diff --git a/include/species.h b/include/species.h
index 9ab0565cb..ac0797418 100644
--- a/include/species.h
+++ b/include/species.h
@@ -449,5 +449,6 @@ enum
};
#define NUM_SPECIES SPECIES_EGG
+extern const u8 gSpeciesNames[][11];
#endif // GUARD_SPECIES_H
diff --git a/include/string_util.h b/include/string_util.h
index 382f52251..f26646082 100644
--- a/include/string_util.h
+++ b/include/string_util.h
@@ -31,7 +31,7 @@ u8 *StringFillWithTerminator(u8 *dest, u16 n);
u8 *StringCopyN_Multibyte(u8 *dest, u8 *src, u32 n);
u32 StringLength_Multibyte(u8 *str);
u8 *WriteColorChangeControlCode(u8 *dest, u32 colorType, u8 color);
-bool32 sub_8009228(u8 *str);
+bool32 IsStringJapanese(u8 *str);
bool32 sub_800924C(u8 *str, s32 n);
u8 GetExtCtrlCodeLength(u8 code);
static const u8 *SkipExtCtrlCode(const u8 *s);
diff --git a/include/strings.h b/include/strings.h
new file mode 100644
index 000000000..5d1a9bba0
--- /dev/null
+++ b/include/strings.h
@@ -0,0 +1,33 @@
+#ifndef GUARD_strings_H
+#define GUARD_strings_H
+
+extern const u8 gText_Lv50[];
+extern const u8 gText_OpenLevel[];
+extern const u8 gText_Mom[];
+extern const u8 gText_Dad[];
+extern const u8 gText_Cool[];
+extern const u8 gText_Beauty[];
+extern const u8 gText_Cute[];
+extern const u8 gText_Smart[];
+extern const u8 gText_Tough[];
+extern const u8 gText_Single[];
+extern const u8 gText_Double[];
+extern const u8 gText_Spicy2[];
+extern const u8 gText_Dry2[];
+extern const u8 gText_Sweet2[];
+extern const u8 gText_Bitter2[];
+extern const u8 gText_Sour2[];
+extern const u8 gText_Excellent[];
+extern const u8 gText_VeryGood[];
+extern const u8 gText_Good[];
+extern const u8 gText_SoSo[];
+extern const u8 gText_Bad[];
+extern const u8 gText_TheWorst[];
+extern const u8 gText_Slots[];
+extern const u8 gText_Roulette[];
+extern const u8 gText_Jackpot[];
+extern const u8 gText_First[];
+extern const u8 gText_Second[];
+extern const u8 gText_Third[];
+
+#endif //GUARD_strings_H
diff --git a/include/text.h b/include/text.h
index 217de0687..594661717 100644
--- a/include/text.h
+++ b/include/text.h
@@ -103,7 +103,7 @@ struct TextPrinterSubStruct
struct TextSubPrinter // TODO: Better name
{
- u8* current_text_offset;
+ const u8* current_text_offset;
u8 windowId;
u8 fontId;
u8 x;
@@ -170,6 +170,7 @@ typedef struct {
u8 flag_0:1;
u8 flag_1:1;
u8 flag_2:1;
+ u8 flag_3:1;
} TextFlags;
extern TextFlags gTextFlags;
@@ -195,7 +196,7 @@ u8 gGlyphDimensions[0x2];
void SetFontsPointer(const struct FontInfo *fonts);
void DeactivateAllTextPrinters(void);
-u16 PrintTextOnWindow(u8 windowId, u8 fontId, u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextSubPrinter *, u16));
+u16 PrintTextOnWindow(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextSubPrinter *, u16));
bool16 AddTextPrinter(struct TextSubPrinter *textSubPrinter, u8 speed, void (*callback)(struct TextSubPrinter *, u16));
void RunTextPrinters(void);
bool16 IsTextPrinterActive(u8 id);
diff --git a/include/trainer_see.h b/include/trainer_see.h
index 3f39783b8..ab035d9f8 100644
--- a/include/trainer_see.h
+++ b/include/trainer_see.h
@@ -2,6 +2,7 @@
#define GUARD_TRAINER_SEE_H
void sub_80B4578(struct MapObject *);
+u8 sub_80B47BC(void);
void sub_8155D78(struct MapObject *);
#endif //GUARD_TRAINER_SEE_H
diff --git a/include/tv.h b/include/tv.h
new file mode 100644
index 000000000..9495387ef
--- /dev/null
+++ b/include/tv.h
@@ -0,0 +1,15 @@
+#ifndef GUARD_TV_H
+#define GUARD_TV_H
+
+extern u8 *const gTVStringVarPtrs[3];
+
+void ClearTVShowData(void);
+void PutPokemonTodayCaughtOnAir(void);
+u32 GetPlayerIDAsU32(void);
+bool8 GetPriceReduction(u8 newsKind);
+u8 GetRibbonCount(struct Pokemon *pokemon);
+void sub_80EE184(void);
+void sub_80F14F8(TVShow *shows);
+size_t sub_80EF370(int value);
+
+#endif //GUARD_TV_H
diff --git a/include/vars.h b/include/vars.h
index 7c0edeb77..67c0b67fc 100644
--- a/include/vars.h
+++ b/include/vars.h
@@ -53,4 +53,14 @@
#define VAR_0x40BC 0x40BC
#define VAR_0x40C2 0x40C2
+#define VAR_FRONTIER_FACILITY 0x40CF
+
+#define VAR_DAILY_SLOTS 0x40E6
+#define VAR_DAILY_WILDS 0x40E7
+#define VAR_DAILY_BLENDER 0x40E8
+#define VAR_DAILY_PLANTED_BERRIES 0x40E9
+#define VAR_DAILY_PICKED_BERRIES 0x40EA
+#define VAR_DAILY_ROULETTE 0x40EB
+#define VAR_DAILY_BP 0x40F1
+
#endif // GUARD_VARS_H
diff --git a/ld_script.txt b/ld_script.txt
index ec1272a7d..5bbd79956 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -64,7 +64,7 @@ SECTIONS {
asm/battle_controller_player.o(.text);
asm/battle_7.o(.text);
asm/battle_controller_opponent.o(.text);
- asm/battle_9.o(.text);
+ src/battle_ai_switch_items.o(.text);
asm/battle_controller_linkopponent.o(.text);
src/pokemon_1.o(.text);
asm/pokemon_1.o(.text);
@@ -101,7 +101,7 @@ SECTIONS {
asm/map_obj_lock.o(.text);
src/text_window.o(.text);
src/script.o(.text);
- asm/scrcmd.o(.text);
+ src/scrcmd.o(.text);
asm/field_control_avatar.o(.text);
src/event_data.o(.text);
asm/coord_event_weather.o(.text);
@@ -116,14 +116,13 @@ SECTIONS {
asm/battle_anim.o(.text);
asm/rom_80A5C6C.o(.text);
src/task.o(.text);
- asm/reshow_battle_screen.o(.text);
+ src/reshow_battle_screen.o(.text);
asm/battle_anim_80A9C70.o(.text);
asm/title_screen.o(.text);
asm/field_screen.o(.text);
asm/battle_setup.o(.text);
asm/cable_club.o(.text);
asm/trainer_see.o(.text);
- asm/fldeff_emotion.o(.text);
asm/wild_encounter.o(.text);
asm/field_effect.o(.text);
asm/unknown_task.o(.text);
@@ -149,7 +148,7 @@ SECTIONS {
asm/contest_effect.o(.text);
asm/record_mixing.o(.text);
asm/secret_base.o(.text);
- asm/tv.o(.text);
+ src/tv.o(.text);
asm/contest_link_80F57C4.o(.text);
asm/script_pokemon_util_80F87D8.o(.text);
asm/field_poison.o(.text);
@@ -190,7 +189,7 @@ SECTIONS {
asm/fldeff_strength.o(.text);
asm/battle_transition.o(.text);
asm/battle_controller_linkpartner.o(.text);
- asm/battle_message.o(.text);
+ src/battle_message.o(.text);
asm/cable_car.o(.text);
asm/math_util.o(.text);
asm/roulette_util.o(.text);
@@ -265,6 +264,7 @@ SECTIONS {
asm/unk_sprite_file.o(.text);
asm/unk_transition.o(.text);
asm/unk_transition_2.o(.text);
+ src/international_string_util.o(.text);
asm/international_string_util.o(.text);
} =0
@@ -325,6 +325,8 @@ SECTIONS {
src/string_util.o(.rodata);
data/link.o(.rodata);
src/rtc.o(.rodata);
+ data/main_menu.o(.rodata);
+ data/battle_1.o(.rodata);
data/data2b.o(.rodata);
src/battle_2.o(.rodata);
src/battle_util.o(.rodata);
@@ -354,7 +356,7 @@ SECTIONS {
data/field_ground_effect.o(.rodata);
data/map_obj_8097404.o(.rodata);
data/text_window.o(.rodata);
- data/scrcmd.o(.rodata);
+ src/scrcmd.o(.rodata);
data/coord_event_weather.o(.rodata);
data/field_tasks.o(.rodata);
data/reset_rtc_screen.o(.rodata);
@@ -368,7 +370,6 @@ SECTIONS {
data/battle_setup.o(.rodata);
data/cable_club.o(.rodata);
data/trainer_see.o(.rodata);
- data/fldeff_emotion.o(.rodata);
data/wild_encounter.o(.rodata);
data/field_effect.o(.rodata);
data/option_menu.o(.rodata);
@@ -388,7 +389,7 @@ SECTIONS {
data/contest_effect.o(.rodata);
data/record_mixing.o(.rodata);
data/secret_base.o(.rodata);
- data/tv.o(.rodata);
+ src/tv.o(.rodata);
data/contest_link_80F57C4.o(.rodata);
data/script_pokemon_util_80F87D8.o(.rodata);
src/pokemon_size_record.o(.rodata)
@@ -412,7 +413,7 @@ SECTIONS {
src/battle_ai_script_commands.o(.rodata);
data/data4.o(.rodata);
data/battle_controller_link_partner.o(.rodata);
- data/battle_message.o(.rodata);
+ src/battle_message.o(.rodata);
data/cable_car.o(.rodata);
data/save.o(.rodata);
data/field_effect_helpers.o(.rodata);
diff --git a/src/battle_2.c b/src/battle_2.c
index fd7cf6863..aeba69213 100644
--- a/src/battle_2.c
+++ b/src/battle_2.c
@@ -40,7 +40,9 @@
#include "trainer_classes.h"
#include "evolution_scene.h"
#include "roamer.h"
+#include "tv.h"
#include "safari_zone.h"
+#include "battle_string_ids.h"
struct UnknownStruct6
{
@@ -63,7 +65,6 @@ struct UnknownPokemonStruct2
/*0x1D*/ u8 language;
};
-extern u32 gBattleTypeFlags;
extern u8 gBattleCommunication[];
extern u8 gBattleTerrain;
extern u16 gBattle_BG0_X;
@@ -87,7 +88,6 @@ extern void (*gBattleMainFunc)(void);
extern void (*gUnknown_030061E8)(void);
extern struct UnknownPokemonStruct2 gUnknown_02022FF8[3]; // what is it used for?
extern struct UnknownPokemonStruct2* gUnknown_02023058; // what is it used for?
-extern u8 gBattleOutcome;
extern u8 gUnknown_02039B28[]; // possibly a struct?
extern struct UnknownStruct6 gUnknown_02038C28; // todo: identify & document
extern struct MusicPlayerInfo gMPlay_SE1;
@@ -138,7 +138,6 @@ extern u8 gActionForBanks[BATTLE_BANKS_COUNT];
extern u16 gChosenMovesByBanks[BATTLE_BANKS_COUNT];
extern u8 gCurrentActionFuncId;
extern u8 gLastUsedAbility;
-extern u16 gLastUsedItem;
extern u8 gUnknown_0203CF00[];
extern const u8* gBattlescriptPtrsForSelection[BATTLE_BANKS_COUNT];
extern const u8* gBattlescriptCurrInstr;
@@ -151,7 +150,6 @@ extern u8 gCurrMovePos;
extern u8 gUnknown_020241E9;
extern u16 gLastUsedMove;
-extern const u8 gSpeciesNames[][POKEMON_NAME_LENGTH + 1];
extern const struct BattleMove gBattleMoves[];
extern const u16 gUnknown_08C004E0[]; // battle textbox palette
extern const struct BgTemplate gUnknown_0831AA08[];
@@ -219,14 +217,12 @@ extern void sub_81B9150(void);
extern void sub_800AC34(void);
extern void sub_80B3AF8(u8 taskId); // cable club
extern void sub_8076918(u8 bank);
-extern void sub_80729D0(u8 healthoxSpriteId);
+extern void SetHealthboxSpriteVisible(u8 healthoxSpriteId);
extern void sub_81A56B4(void); // battle frontier 2
extern u8 sub_81A9E28(void); // battle frontier 2
extern void sub_81A56E8(u8 bank); // battle frontier 2
extern void sub_81B8FB0(u8, u8); // party menu
extern u8 pokemon_order_func(u8); // party menu
-extern void sub_80EC728(void); // tv
-extern void sub_80EE184(void); // tv
extern bool8 InBattlePyramid(void);
// this file's functions
@@ -245,7 +241,7 @@ static void sub_8038F34(void);
static void sub_80392A8(void);
static void sub_803937C(void);
static void sub_803939C(void);
-static void oac_poke_opponent(struct Sprite *sprite);
+void oac_poke_opponent(struct Sprite *sprite);
static void sub_803980C(struct Sprite *sprite);
static void sub_8039838(struct Sprite *sprite);
static void sub_8039894(struct Sprite *sprite);
@@ -343,7 +339,7 @@ const u8 gStatusConditionString_IceJpn[8] = _("こおり$$$$");
const u8 gStatusConditionString_ConfusionJpn[8] = _("こんらん$$$");
const u8 gStatusConditionString_LoveJpn[8] = _("メロメロ$$$");
-const u8 * const gStatusConditionStringsTable[][2] =
+const u8 * const gStatusConditionStringsTable[7][2] =
{
{gStatusConditionString_PoisonJpn, gText_Poison},
{gStatusConditionString_SleepJpn, gText_Sleep},
@@ -858,7 +854,7 @@ static void CB2_HandleStartBattle(void)
{
s32 i;
- for (i = 0; i < 2 && (gLinkPlayers[i].version & 0xFF) == 3; i++);
+ for (i = 0; i < 2 && (gLinkPlayers[i].version & 0xFF) == VERSION_EMERALD; i++);
if (i == 2)
gBattleCommunication[MULTIUSE_STATE] = 16;
@@ -1650,7 +1646,7 @@ void CB2_QuitRecordedBattle(void)
}
}
-static void sub_8038528(struct Sprite* sprite)
+void sub_8038528(struct Sprite* sprite)
{
sprite->data0 = 0;
sprite->callback = sub_8038538;
@@ -2072,7 +2068,7 @@ static void sub_8038F34(void)
else
monsCount = 2;
- for (i = 0; i < monsCount && (gLinkPlayers[i].version & 0xFF) == 3; i++);
+ for (i = 0; i < monsCount && (gLinkPlayers[i].version & 0xFF) == VERSION_EMERALD; i++);
if (!gSaveBlock2Ptr->field_CA9_b && i == monsCount)
{
@@ -2417,7 +2413,7 @@ u32 sub_80397C4(u32 setId, u32 tableId)
#define tBank data0
#define tSpeciesId data2
-static void oac_poke_opponent(struct Sprite *sprite)
+void oac_poke_opponent(struct Sprite *sprite)
{
sprite->callback = sub_803980C;
StartSpriteAnimIfDifferent(sprite, 0);
@@ -2441,7 +2437,7 @@ static void sub_8039838(struct Sprite *sprite)
if (sprite->animEnded)
{
sub_8076918(sprite->tBank);
- sub_80729D0(gHealthBoxesIds[sprite->tBank]);
+ SetHealthboxSpriteVisible(gHealthBoxesIds[sprite->tBank]);
sprite->callback = sub_8039894;
StartSpriteAnimIfDifferent(sprite, 0);
BeginNormalPaletteFade(0x20000, 0, 10, 0, 0x2108);
@@ -3299,7 +3295,7 @@ static void BattleIntroPrintTrainerWantsToBattle(void)
if (gBattleExecBuffer == 0)
{
gActiveBank = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
- PrepareStringBattle(0, gActiveBank);
+ PrepareStringBattle(STRINGID_INTROMSG, gActiveBank);
gBattleMainFunc = BattleIntroPrintOpponentSendsOut;
}
}
@@ -3309,7 +3305,7 @@ static void BattleIntroPrintWildMonAttacked(void)
if (gBattleExecBuffer == 0)
{
gBattleMainFunc = BattleIntroPrintPlayerSendsOut;
- PrepareStringBattle(0, 0);
+ PrepareStringBattle(STRINGID_INTROMSG, 0);
}
}
@@ -3332,7 +3328,7 @@ static void BattleIntroPrintOpponentSendsOut(void)
else
identity = IDENTITY_OPPONENT_MON1;
- PrepareStringBattle(1, GetBankByIdentity(identity));
+ PrepareStringBattle(STRINGID_INTROSENDOUT, GetBankByIdentity(identity));
gBattleMainFunc = BattleIntroOpponent1SendsOutMonAnimation;
}
@@ -3535,7 +3531,7 @@ static void BattleIntroPrintPlayerSendsOut(void)
identity = IDENTITY_PLAYER_MON1;
if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI))
- PrepareStringBattle(1, GetBankByIdentity(identity));
+ PrepareStringBattle(STRINGID_INTROSENDOUT, GetBankByIdentity(identity));
gBattleMainFunc = BattleIntroPlayer1SendsOutMonAnimation;
}
@@ -4006,8 +4002,8 @@ static void HandleTurnActionSelectionState(void)
for (i = 0; i < 4; i++)
{
moveInfo.moves[i] = gBattleMons[gActiveBank].moves[i];
- moveInfo.ppNumbers[i] = gBattleMons[gActiveBank].pp[i];
- moveInfo.ppWithBonusNumbers[i] = CalculatePPWithBonus(
+ moveInfo.currentPp[i] = gBattleMons[gActiveBank].pp[i];
+ moveInfo.maxPp[i] = CalculatePPWithBonus(
gBattleMons[gActiveBank].moves[i],
gBattleMons[gActiveBank].ppBonuses,
i);
@@ -4926,7 +4922,7 @@ static void HandleEndTurn_FinishBattle(void)
}
}
}
- sub_80EC728();
+ PutPokemonTodayCaughtOnAir();
}
if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK
@@ -5323,30 +5319,30 @@ static void HandleAction_UseItem(void)
{
gBattleScripting.bank = gBankAttacker;
- switch (*(gBattleStruct->field_C4 + (gBankAttacker >> 1)))
+ switch (*(gBattleStruct->AI_itemType + (gBankAttacker >> 1)))
{
- case 1:
- case 2:
+ case AI_ITEM_FULL_RESTORE:
+ case AI_ITEM_HEAL_HP:
break;
- case 3:
+ case AI_ITEM_CURE_CONDITION:
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
- if (*(gBattleStruct->field_C6 + gBankAttacker / 2) & 1)
+ if (*(gBattleStruct->AI_itemFlags + gBankAttacker / 2) & 1)
{
- if (*(gBattleStruct->field_C6 + gBankAttacker / 2) & 0x3E)
+ if (*(gBattleStruct->AI_itemFlags + gBankAttacker / 2) & 0x3E)
gBattleCommunication[MULTISTRING_CHOOSER] = 5;
}
else
{
- while (!(*(gBattleStruct->field_C6 + gBankAttacker / 2) & 1))
+ while (!(*(gBattleStruct->AI_itemFlags + gBankAttacker / 2) & 1))
{
- *(gBattleStruct->field_C6 + gBankAttacker / 2) >>= 1;
+ *(gBattleStruct->AI_itemFlags + gBankAttacker / 2) >>= 1;
gBattleCommunication[MULTISTRING_CHOOSER]++;
}
}
break;
- case 4:
+ case AI_ITEM_X_STAT:
gBattleCommunication[MULTISTRING_CHOOSER] = 4;
- if (*(gBattleStruct->field_C6 + (gBankAttacker >> 1)) & 0x80)
+ if (*(gBattleStruct->AI_itemFlags + (gBankAttacker >> 1)) & 0x80)
{
gBattleCommunication[MULTISTRING_CHOOSER] = 5;
}
@@ -5355,9 +5351,9 @@ static void HandleAction_UseItem(void)
PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_ATK)
PREPARE_STRING_BUFFER(gBattleTextBuff2, 0xD2)
- while (!((*(gBattleStruct->field_C6 + (gBankAttacker >> 1))) & 1))
+ while (!((*(gBattleStruct->AI_itemFlags + (gBankAttacker >> 1))) & 1))
{
- *(gBattleStruct->field_C6 + gBankAttacker / 2) >>= 1;
+ *(gBattleStruct->AI_itemFlags + gBankAttacker / 2) >>= 1;
gBattleTextBuff1[2]++;
}
@@ -5365,7 +5361,7 @@ static void HandleAction_UseItem(void)
gBattleScripting.animArg2 = 0;
}
break;
- case 5:
+ case AI_ITEM_GUARD_SPECS:
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
gBattleCommunication[MULTISTRING_CHOOSER] = 2;
else
@@ -5373,7 +5369,7 @@ static void HandleAction_UseItem(void)
break;
}
- gBattlescriptCurrInstr = gUnknown_082DBD3C[*(gBattleStruct->field_C4 + gBankAttacker / 2)];
+ gBattlescriptCurrInstr = gUnknown_082DBD3C[*(gBattleStruct->AI_itemType + gBankAttacker / 2)];
}
gCurrentActionFuncId = ACTION_RUN_BATTLESCRIPT;
}
diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c
index 92126e40c..24377eacc 100644
--- a/src/battle_ai_script_commands.c
+++ b/src/battle_ai_script_commands.c
@@ -7,11 +7,13 @@
#include "rng.h"
#include "item.h"
#include "battle_move_effects.h"
+#include "moves.h"
+#include "util.h"
#define AIScriptRead32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24)
#define AIScriptRead16(ptr) ((ptr)[0] | (ptr)[1] << 8)
#define AIScriptRead8(ptr) ((ptr)[0])
-#define AIScriptReadPtr(ptr) (u8*) AIScriptRead32(ptr)
+#define AIScriptReadPtr(ptr) (const u8*) AIScriptRead32(ptr)
#define AI_ACTION_DONE 0x0001
#define AI_ACTION_FLEE 0x0002
@@ -52,16 +54,16 @@ AI scripts.
extern u32 gBattleTypeFlags;
extern u8 gActiveBank;
-extern struct BattlePokemon gBattleMons[4];
+extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
extern u16 gCurrentMove;
extern u8 gBankTarget;
extern u8 gAbsentBankFlags;
-extern u16 gLastUsedMovesByBanks[4];
+extern u16 gLastUsedMovesByBanks[BATTLE_BANKS_COUNT];
extern u16 gTrainerBattleOpponent_A;
extern u16 gTrainerBattleOpponent_B;
-extern u32 gStatuses3[4];
+extern u32 gStatuses3[BATTLE_BANKS_COUNT];
extern u16 gSideAffecting[2];
-extern u16 gBattlePartyID[4];
+extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
extern u16 gDynamicBasePower;
extern u8 gBattleMoveFlags;
extern s32 gBattleMoveDamage;
@@ -70,13 +72,8 @@ extern u16 gBattleWeather;
extern const struct BattleMove gBattleMoves[];
extern const struct BaseStats gBaseStats[];
-extern const u32 gBitTable[];
-extern u8 * const gBattleAI_ScriptsTable[];
+extern const u8 * const gBattleAI_ScriptsTable[];
-extern u8 GetWhoStrikesFirst(u8, u8, u8);
-extern void AI_CalcDmg(u8, u8);
-
-extern u8 CheckMoveLimitations();
extern u32 GetAiScriptsInRecordedBattle();
extern u32 GetAiScriptsInBattleFactory();
@@ -116,8 +113,8 @@ static void BattleAICmd_if_move(void);
static void BattleAICmd_if_not_move(void);
static void BattleAICmd_if_in_bytes(void);
static void BattleAICmd_if_not_in_bytes(void);
-static void BattleAICmd_if_in_words(void);
-static void BattleAICmd_if_not_in_words(void);
+static void BattleAICmd_if_in_hwords(void);
+static void BattleAICmd_if_not_in_hwords(void);
static void BattleAICmd_if_user_can_damage(void);
static void BattleAICmd_if_user_cant_damage(void);
static void BattleAICmd_get_turn_count(void);
@@ -227,8 +224,8 @@ static const BattleAICmdFunc sBattleAICmdTable[] =
BattleAICmd_if_not_move, // 0x1A
BattleAICmd_if_in_bytes, // 0x1B
BattleAICmd_if_not_in_bytes, // 0x1C
- BattleAICmd_if_in_words, // 0x1D
- BattleAICmd_if_not_in_words, // 0x1E
+ BattleAICmd_if_in_hwords, // 0x1D
+ BattleAICmd_if_not_in_hwords, // 0x1E
BattleAICmd_if_user_can_damage, // 0x1F
BattleAICmd_if_user_cant_damage, // 0x20
BattleAICmd_get_turn_count, // 0x21
@@ -334,7 +331,7 @@ void BattleAI_HandleItemUseBeforeAISetup(u8 defaultScoreMoves)
{
if (gTrainers[gTrainerBattleOpponent_A].items[i] != 0)
{
- gBattleResources->battleHistory->TrainerItems[gBattleResources->battleHistory->itemsNo] = gTrainers[gTrainerBattleOpponent_A].items[i];
+ gBattleResources->battleHistory->trainerItems[gBattleResources->battleHistory->itemsNo] = gTrainers[gTrainerBattleOpponent_A].items[i];
gBattleResources->battleHistory->itemsNo++;
}
}
@@ -472,13 +469,11 @@ static u8 BattleAI_ChooseMoveOrAction_Singles(void)
return consideredMoveArray[Random() % numOfBestMoves];
}
-#ifdef NONMATCHING
static u8 BattleAI_ChooseMoveOrAction_Doubles(void)
{
s32 i;
s32 j;
s32 scriptsToRun;
- s16 mostMovePoints;
s16 bestMovePointsForTarget[4];
s8 mostViableTargetsArray[4];
u8 actionOrMoveIndex[4];
@@ -486,27 +481,27 @@ static u8 BattleAI_ChooseMoveOrAction_Doubles(void)
u8 mostViableMovesIndices[4];
s32 mostViableTargetsNo;
s32 mostViableMovesNo;
+ s16 mostMovePoints;
- for (i = 0; i < 4; i++) //08130D14
+ for (i = 0; i < 4; i++)
{
if (i == sBank_AI || gBattleMons[i].hp == 0)
{
- //_08130D2E
actionOrMoveIndex[i] = -1;
bestMovePointsForTarget[i] = -1;
}
- //_08130D48
else
{
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
BattleAI_SetupAIData(gBattleStruct->field_92 >> 4);
else
BattleAI_SetupAIData(0xF);
- //_08130D76
+
gBankTarget = i;
- if ((i & 1) != (sBank_AI & 1))
+
+ if ((i & BIT_SIDE) != (sBank_AI & BIT_SIDE))
RecordLastUsedMoveByTarget();
- //_08130D90
+
AI_THINKING_STRUCT->aiLogicId = 0;
AI_THINKING_STRUCT->movesetIndex = 0;
scriptsToRun = AI_THINKING_STRUCT->aiFlags;
@@ -521,14 +516,12 @@ static u8 BattleAI_ChooseMoveOrAction_Doubles(void)
AI_THINKING_STRUCT->aiLogicId++;
AI_THINKING_STRUCT->movesetIndex = 0;
}
- //_08130DD8
if (AI_THINKING_STRUCT->aiAction & AI_ACTION_FLEE)
actionOrMoveIndex[i] = 4;
else if (AI_THINKING_STRUCT->aiAction & AI_ACTION_WATCH)
actionOrMoveIndex[i] = 5;
else
{
- //_08130E10
mostViableMovesScores[0] = AI_THINKING_STRUCT->score[0];
mostViableMovesIndices[0] = 0;
mostViableMovesNo = 1;
@@ -555,17 +548,20 @@ static u8 BattleAI_ChooseMoveOrAction_Doubles(void)
bestMovePointsForTarget[i] = mostViableMovesScores[0];
// don't use a move against ally if it has less than 100 pts
- if (i == (sBank_AI ^ 2) && bestMovePointsForTarget[i] < 100)
+ if (i == (sBank_AI ^ BIT_MON) && bestMovePointsForTarget[i] < 100)
+ {
bestMovePointsForTarget[i] = -1;
+ mostViableMovesScores[0] = mostViableMovesScores[0]; // needed to match
+ }
+
}
}
- //_08130EAE
}
- //08130EC4
mostMovePoints = bestMovePointsForTarget[0];
mostViableTargetsArray[0] = 0;
mostViableTargetsNo = 1;
+
for (i = 1; i < 4; i++)
{
//_08130EDA
@@ -582,305 +578,10 @@ static u8 BattleAI_ChooseMoveOrAction_Doubles(void)
mostViableTargetsNo = 1;
}
}
+
gBankTarget = mostViableTargetsArray[Random() % mostViableTargetsNo];
return actionOrMoveIndex[gBankTarget];
}
-#else
-__attribute__((naked))
-static u8 BattleAI_ChooseMoveOrAction_Doubles(void)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x24\n\
- movs r0, 0\n\
- mov r8, r0\n\
- mov r1, sp\n\
- adds r1, 0xC\n\
- str r1, [sp, 0x1C]\n\
- mov r2, sp\n\
- adds r2, 0x8\n\
- str r2, [sp, 0x18]\n\
- str r1, [sp, 0x20]\n\
- mov r10, sp\n\
-_08130D14:\n\
- ldr r0, =sBank_AI\n\
- ldrb r0, [r0]\n\
- cmp r8, r0\n\
- beq _08130D2E\n\
- movs r0, 0x58\n\
- mov r7, r8\n\
- muls r7, r0\n\
- adds r0, r7, 0\n\
- ldr r1, =gBattleMons\n\
- adds r0, r1\n\
- ldrh r0, [r0, 0x28]\n\
- cmp r0, 0\n\
- bne _08130D48\n\
-_08130D2E:\n\
- movs r0, 0xFF\n\
- ldr r2, [sp, 0x20]\n\
- strb r0, [r2]\n\
- ldr r0, =0x0000ffff\n\
- mov r7, r10\n\
- strh r0, [r7]\n\
- b _08130EAE\n\
- .pool\n\
-_08130D48:\n\
- ldr r0, =gBattleTypeFlags\n\
- ldr r0, [r0]\n\
- movs r1, 0x80\n\
- lsls r1, 10\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08130D70\n\
- ldr r0, =gBattleStruct\n\
- ldr r0, [r0]\n\
- adds r0, 0x92\n\
- ldrb r0, [r0]\n\
- lsrs r0, 4\n\
- bl BattleAI_SetupAIData\n\
- b _08130D76\n\
- .pool\n\
-_08130D70:\n\
- movs r0, 0xF\n\
- bl BattleAI_SetupAIData\n\
-_08130D76:\n\
- ldr r0, =gBankTarget\n\
- mov r1, r8\n\
- strb r1, [r0]\n\
- movs r1, 0x1\n\
- mov r2, r8\n\
- ands r2, r1\n\
- ldr r0, =sBank_AI\n\
- ldrb r0, [r0]\n\
- ands r1, r0\n\
- cmp r2, r1\n\
- beq _08130D90\n\
- bl RecordLastUsedMoveByTarget\n\
-_08130D90:\n\
- ldr r2, =gBattleResources\n\
- ldr r0, [r2]\n\
- ldr r0, [r0, 0x14]\n\
- movs r1, 0\n\
- strb r1, [r0, 0x11]\n\
- ldr r0, [r2]\n\
- ldr r0, [r0, 0x14]\n\
- strb r1, [r0, 0x1]\n\
- ldr r0, [r2]\n\
- ldr r0, [r0, 0x14]\n\
- ldr r4, [r0, 0xC]\n\
- mov r9, r2\n\
- cmp r4, 0\n\
- beq _08130DD8\n\
- mov r5, r9\n\
- movs r6, 0\n\
-_08130DB0:\n\
- movs r0, 0x1\n\
- ands r0, r4\n\
- cmp r0, 0\n\
- beq _08130DC2\n\
- ldr r0, [r5]\n\
- ldr r0, [r0, 0x14]\n\
- strb r6, [r0]\n\
- bl BattleAI_DoAIProcessing\n\
-_08130DC2:\n\
- asrs r4, 1\n\
- ldr r0, [r5]\n\
- ldr r1, [r0, 0x14]\n\
- ldrb r0, [r1, 0x11]\n\
- adds r0, 0x1\n\
- strb r0, [r1, 0x11]\n\
- ldr r0, [r5]\n\
- ldr r0, [r0, 0x14]\n\
- strb r6, [r0, 0x1]\n\
- cmp r4, 0\n\
- bne _08130DB0\n\
-_08130DD8:\n\
- mov r2, r9\n\
- ldr r0, [r2]\n\
- ldr r3, [r0, 0x14]\n\
- ldrb r1, [r3, 0x10]\n\
- movs r0, 0x2\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08130DFC\n\
- movs r0, 0x4\n\
- ldr r7, [sp, 0x20]\n\
- strb r0, [r7]\n\
- b _08130EAE\n\
- .pool\n\
-_08130DFC:\n\
- movs r0, 0x4\n\
- ands r0, r1\n\
- lsls r0, 24\n\
- lsrs r2, r0, 24\n\
- cmp r2, 0\n\
- beq _08130E10\n\
- movs r0, 0x5\n\
- ldr r1, [sp, 0x20]\n\
- strb r0, [r1]\n\
- b _08130EAE\n\
-_08130E10:\n\
- add r1, sp, 0x10\n\
- ldrb r0, [r3, 0x4]\n\
- strb r0, [r1]\n\
- add r0, sp, 0x14\n\
- strb r2, [r0]\n\
- movs r5, 0x1\n\
- movs r3, 0x1\n\
- adds r6, r1, 0\n\
- ldr r0, =sBank_AI\n\
- ldrb r1, [r0]\n\
- movs r0, 0x58\n\
- muls r0, r1\n\
- ldr r2, =gBattleMons + 0xC\n\
- adds r0, r2\n\
- adds r4, r0, 0x2\n\
- add r7, sp, 0x14\n\
-_08130E30:\n\
- ldrh r0, [r4]\n\
- cmp r0, 0\n\
- beq _08130E72\n\
- ldrb r1, [r6]\n\
- mov r2, r9\n\
- ldr r0, [r2]\n\
- ldr r0, [r0, 0x14]\n\
- adds r0, 0x4\n\
- adds r2, r0, r3\n\
- movs r0, 0\n\
- ldrsb r0, [r2, r0]\n\
- cmp r1, r0\n\
- bne _08130E56\n\
- adds r0, r6, r5\n\
- ldrb r1, [r2]\n\
- strb r1, [r0]\n\
- adds r0, r7, r5\n\
- strb r3, [r0]\n\
- adds r5, 0x1\n\
-_08130E56:\n\
- ldrb r1, [r6]\n\
- mov r2, r9\n\
- ldr r0, [r2]\n\
- ldr r0, [r0, 0x14]\n\
- adds r0, 0x4\n\
- adds r2, r0, r3\n\
- movs r0, 0\n\
- ldrsb r0, [r2, r0]\n\
- cmp r1, r0\n\
- bge _08130E72\n\
- ldrb r0, [r2]\n\
- strb r0, [r6]\n\
- strb r3, [r7]\n\
- movs r5, 0x1\n\
-_08130E72:\n\
- adds r4, 0x2\n\
- adds r3, 0x1\n\
- cmp r3, 0x3\n\
- ble _08130E30\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- adds r1, r5, 0\n\
- bl __modsi3\n\
- add r0, sp\n\
- adds r0, 0x14\n\
- ldrb r0, [r0]\n\
- ldr r7, [sp, 0x20]\n\
- strb r0, [r7]\n\
- ldrb r2, [r6]\n\
- mov r0, r10\n\
- strh r2, [r0]\n\
- ldr r0, =sBank_AI\n\
- ldrb r1, [r0]\n\
- movs r0, 0x2\n\
- eors r0, r1\n\
- cmp r8, r0\n\
- bne _08130EAE\n\
- cmp r2, 0x63\n\
- bgt _08130EAE\n\
- ldr r0, =0x0000ffff\n\
- mov r1, r10\n\
- strh r0, [r1]\n\
-_08130EAE:\n\
- ldr r2, [sp, 0x20]\n\
- adds r2, 0x1\n\
- str r2, [sp, 0x20]\n\
- movs r7, 0x2\n\
- add r10, r7\n\
- movs r0, 0x1\n\
- add r8, r0\n\
- mov r1, r8\n\
- cmp r1, 0x3\n\
- bgt _08130EC4\n\
- b _08130D14\n\
-_08130EC4:\n\
- mov r0, sp\n\
- ldrh r5, [r0]\n\
- movs r0, 0\n\
- ldr r2, [sp, 0x18]\n\
- strb r0, [r2]\n\
- movs r4, 0x1\n\
- mov r8, r4\n\
- ldr r6, =gBankTarget\n\
- ldr r3, [sp, 0x18]\n\
- mov r1, sp\n\
- adds r1, 0x2\n\
-_08130EDA:\n\
- lsls r0, r5, 16\n\
- asrs r2, r0, 16\n\
- movs r7, 0\n\
- ldrsh r0, [r1, r7]\n\
- cmp r2, r0\n\
- bne _08130EEE\n\
- adds r0, r3, r4\n\
- mov r7, r8\n\
- strb r7, [r0]\n\
- adds r4, 0x1\n\
-_08130EEE:\n\
- movs r7, 0\n\
- ldrsh r0, [r1, r7]\n\
- cmp r2, r0\n\
- bge _08130EFE\n\
- ldrh r5, [r1]\n\
- mov r0, r8\n\
- strb r0, [r3]\n\
- movs r4, 0x1\n\
-_08130EFE:\n\
- adds r1, 0x2\n\
- movs r2, 0x1\n\
- add r8, r2\n\
- mov r7, r8\n\
- cmp r7, 0x3\n\
- ble _08130EDA\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- adds r1, r4, 0\n\
- bl __modsi3\n\
- ldr r1, [sp, 0x18]\n\
- adds r0, r1, r0\n\
- ldrb r0, [r0]\n\
- strb r0, [r6]\n\
- ldrb r0, [r6]\n\
- ldr r2, [sp, 0x1C]\n\
- adds r0, r2, r0\n\
- ldrb r0, [r0]\n\
- add sp, 0x24\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- .pool\n\
- .syntax divided\n");
-}
-#endif
static void BattleAI_DoAIProcessing(void)
{
@@ -888,7 +589,7 @@ static void BattleAI_DoAIProcessing(void)
{
switch (AI_THINKING_STRUCT->aiState)
{
- case AIState_DoNotProcess: //Needed to match.
+ case AIState_DoNotProcess: // Needed to match.
break;
case AIState_SettingUp:
gAIScriptPtr = gBattleAI_ScriptsTable[AI_THINKING_STRUCT->aiLogicId]; // set AI ptr to logic ID.
@@ -904,7 +605,7 @@ static void BattleAI_DoAIProcessing(void)
break;
case AIState_Processing:
if (AI_THINKING_STRUCT->moveConsidered != 0)
- sBattleAICmdTable[*gAIScriptPtr](); // run AI command.
+ sBattleAICmdTable[*gAIScriptPtr](); // Run AI command.
else
{
AI_THINKING_STRUCT->score[AI_THINKING_STRUCT->movesetIndex] = 0;
@@ -934,7 +635,7 @@ static void RecordLastUsedMoveByTarget(void)
{
if (gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] == gLastUsedMovesByBanks[gBankTarget])
break;
- if (gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] != gLastUsedMovesByBanks[gBankTarget] //HACK: This redundant condition is a hack to make the asm match.
+ if (gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] != gLastUsedMovesByBanks[gBankTarget] // HACK: This redundant condition is a hack to make the asm match.
&& gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] == 0)
{
gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] = gLastUsedMovesByBanks[gBankTarget];
@@ -1261,7 +962,7 @@ static void BattleAICmd_if_not_equal(void)
static void BattleAICmd_if_less_than_32(void)
{
- u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1);
+ const u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1);
if (AI_THINKING_STRUCT->funcResult < *temp)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
@@ -1271,7 +972,7 @@ static void BattleAICmd_if_less_than_32(void)
static void BattleAICmd_if_more_than_32(void)
{
- u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1);
+ const u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1);
if (AI_THINKING_STRUCT->funcResult > *temp)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
@@ -1281,7 +982,7 @@ static void BattleAICmd_if_more_than_32(void)
static void BattleAICmd_if_equal_32(void)
{
- u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1);
+ const u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1);
if (AI_THINKING_STRUCT->funcResult == *temp)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
@@ -1291,7 +992,7 @@ static void BattleAICmd_if_equal_32(void)
static void BattleAICmd_if_not_equal_32(void)
{
- u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1);
+ const u8 *temp = AIScriptReadPtr(gAIScriptPtr + 1);
if (AI_THINKING_STRUCT->funcResult != *temp)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
@@ -1321,7 +1022,7 @@ static void BattleAICmd_if_not_move(void)
static void BattleAICmd_if_in_bytes(void)
{
- u8 *ptr = AIScriptReadPtr(gAIScriptPtr + 1);
+ const u8 *ptr = AIScriptReadPtr(gAIScriptPtr + 1);
while (*ptr != 0xFF)
{
@@ -1337,7 +1038,7 @@ static void BattleAICmd_if_in_bytes(void)
static void BattleAICmd_if_not_in_bytes(void)
{
- u8 *ptr = AIScriptReadPtr(gAIScriptPtr + 1);
+ const u8 *ptr = AIScriptReadPtr(gAIScriptPtr + 1);
while (*ptr != 0xFF)
{
@@ -1351,9 +1052,9 @@ static void BattleAICmd_if_not_in_bytes(void)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 5);
}
-static void BattleAICmd_if_in_words(void)
+static void BattleAICmd_if_in_hwords(void)
{
- u16 *ptr = (u16 *)AIScriptReadPtr(gAIScriptPtr + 1);
+ const u16 *ptr = (const u16 *)AIScriptReadPtr(gAIScriptPtr + 1);
while (*ptr != 0xFFFF)
{
@@ -1367,9 +1068,9 @@ static void BattleAICmd_if_in_words(void)
gAIScriptPtr += 9;
}
-static void BattleAICmd_if_not_in_words(void)
+static void BattleAICmd_if_not_in_hwords(void)
{
- u16 *ptr = (u16 *)AIScriptReadPtr(gAIScriptPtr + 1);
+ const u16 *ptr = (u16 *)AIScriptReadPtr(gAIScriptPtr + 1);
while (*ptr != 0xFFFF)
{
@@ -1456,9 +1157,9 @@ static u8 BattleAI_GetWantedBank(u8 index)
default:
return gBankTarget;
case AI_USER_PARTNER:
- return sBank_AI ^ 2;
+ return sBank_AI ^ BIT_MON;
case AI_TARGET_PARTNER:
- return gBankTarget ^ 2;
+ return gBankTarget ^ BIT_MON;
}
}
@@ -1484,248 +1185,68 @@ static void BattleAICmd_get_last_used_bank_move_power(void)
gAIScriptPtr += 1;
}
-__attribute__((naked)) // not even going to try. if it doesnt match in ruby, it wont match in emerald (yet).
static void BattleAICmd_is_most_powerful_move(void)
{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x14\n\
- movs r3, 0\n\
- ldr r0, =sDiscouragedPowerfulMoveEffects\n\
- ldrh r1, [r0]\n\
- ldr r5, =0x0000ffff\n\
- ldr r6, =gBattleMoves\n\
- ldr r2, =gBattleResources\n\
- cmp r1, r5\n\
- beq _08131F86\n\
- ldr r0, [r2]\n\
- ldr r0, [r0, 0x14]\n\
- ldrh r1, [r0, 0x2]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r6\n\
- ldrb r4, [r0]\n\
- ldr r1, =sDiscouragedPowerfulMoveEffects\n\
-_08131F76:\n\
- ldrh r0, [r1]\n\
- cmp r4, r0\n\
- beq _08131F86\n\
- adds r1, 0x2\n\
- adds r3, 0x1\n\
- ldrh r0, [r1]\n\
- cmp r0, r5\n\
- bne _08131F76\n\
-_08131F86:\n\
- ldr r0, [r2]\n\
- ldr r0, [r0, 0x14]\n\
- ldrh r1, [r0, 0x2]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r6\n\
- ldrb r0, [r0, 0x1]\n\
- cmp r0, 0x1\n\
- bhi _08131F9C\n\
- b _08132126\n\
-_08131F9C:\n\
- lsls r0, r3, 1\n\
- ldr r1, =sDiscouragedPowerfulMoveEffects\n\
- adds r0, r1\n\
- ldrh r3, [r0]\n\
- ldr r0, =0x0000ffff\n\
- cmp r3, r0\n\
- beq _08131FAC\n\
- b _08132126\n\
-_08131FAC:\n\
- ldr r0, =gDynamicBasePower\n\
- movs r1, 0\n\
- strh r1, [r0]\n\
- ldr r0, =gBattleStruct\n\
- ldr r0, [r0]\n\
- strb r1, [r0, 0x13]\n\
- ldr r0, =gBattleScripting\n\
- movs r2, 0x1\n\
- strb r2, [r0, 0xE]\n\
- ldr r0, =gBattleMoveFlags\n\
- strb r1, [r0]\n\
- ldr r0, =gCritMultiplier\n\
- strb r2, [r0]\n\
- movs r6, 0\n\
- mov r9, r3\n\
- ldr r2, =sDiscouragedPowerfulMoveEffects\n\
- ldrh r2, [r2]\n\
- str r2, [sp, 0x10]\n\
-_08131FD0:\n\
- movs r3, 0\n\
- ldr r5, =gBattleMons\n\
- lsls r4, r6, 1\n\
- ldr r7, =sBank_AI\n\
- lsls r0, r6, 2\n\
- mov r8, r0\n\
- adds r1, r6, 0x1\n\
- mov r10, r1\n\
- ldr r2, [sp, 0x10]\n\
- cmp r2, r9\n\
- beq _08132014\n\
- ldr r2, =gBattleMoves\n\
- ldrb r1, [r7]\n\
- movs r0, 0x58\n\
- muls r0, r1\n\
- adds r0, r4, r0\n\
- adds r1, r5, 0\n\
- adds r1, 0xC\n\
- adds r0, r1\n\
- ldrh r1, [r0]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r2\n\
- ldrb r2, [r0]\n\
- ldr r1, =sDiscouragedPowerfulMoveEffects\n\
-_08132004:\n\
- ldrh r0, [r1]\n\
- cmp r2, r0\n\
- beq _08132014\n\
- adds r1, 0x2\n\
- adds r3, 0x1\n\
- ldrh r0, [r1]\n\
- cmp r0, r9\n\
- bne _08132004\n\
-_08132014:\n\
- ldrb r1, [r7]\n\
- movs r0, 0x58\n\
- muls r0, r1\n\
- adds r0, r4, r0\n\
- adds r1, r5, 0\n\
- adds r1, 0xC\n\
- adds r1, r0, r1\n\
- ldrh r0, [r1]\n\
- cmp r0, 0\n\
- beq _081320C0\n\
- lsls r0, r3, 1\n\
- ldr r2, =sDiscouragedPowerfulMoveEffects\n\
- adds r0, r2\n\
- ldrh r0, [r0]\n\
- cmp r0, r9\n\
- bne _081320C0\n\
- ldr r0, =gBattleMoves\n\
- ldrh r2, [r1]\n\
- lsls r1, r2, 1\n\
- adds r1, r2\n\
- lsls r1, 2\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x1]\n\
- cmp r0, 0x1\n\
- bls _081320C0\n\
- ldr r5, =gCurrentMove\n\
- strh r2, [r5]\n\
- ldrb r0, [r7]\n\
- ldr r4, =gBankTarget\n\
- ldrb r1, [r4]\n\
- bl AI_CalcDmg\n\
- ldrh r0, [r5]\n\
- ldrb r1, [r7]\n\
- ldrb r2, [r4]\n\
- bl TypeCalc\n\
- mov r4, sp\n\
- add r4, r8\n\
- ldr r2, =gBattleMoveDamage\n\
- ldr r0, =gBattleResources\n\
- ldr r0, [r0]\n\
- ldr r0, [r0, 0x14]\n\
- adds r0, 0x18\n\
- adds r0, r6\n\
- ldrb r1, [r0]\n\
- ldr r0, [r2]\n\
- muls r0, r1\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- str r0, [r4]\n\
- cmp r0, 0\n\
- bne _081320C8\n\
- movs r0, 0x1\n\
- str r0, [r4]\n\
- b _081320C8\n\
- .pool\n\
-_081320C0:\n\
- mov r1, sp\n\
- add r1, r8\n\
- movs r0, 0\n\
- str r0, [r1]\n\
-_081320C8:\n\
- mov r6, r10\n\
- cmp r6, 0x3\n\
- bgt _081320D0\n\
- b _08131FD0\n\
-_081320D0:\n\
- movs r6, 0\n\
- ldr r2, =gBattleResources\n\
- ldr r0, [r2]\n\
- ldr r0, [r0, 0x14]\n\
- ldrb r0, [r0, 0x1]\n\
- lsls r0, 2\n\
- add r0, sp\n\
- ldr r1, [sp]\n\
- ldr r0, [r0]\n\
- ldr r5, =gAIScriptPtr\n\
- cmp r1, r0\n\
- bgt _08132106\n\
- adds r4, r2, 0\n\
- mov r3, sp\n\
-_081320EC:\n\
- adds r3, 0x4\n\
- adds r6, 0x1\n\
- cmp r6, 0x3\n\
- bgt _08132106\n\
- ldr r0, [r4]\n\
- ldr r0, [r0, 0x14]\n\
- ldrb r0, [r0, 0x1]\n\
- lsls r0, 2\n\
- add r0, sp\n\
- ldr r1, [r3]\n\
- ldr r0, [r0]\n\
- cmp r1, r0\n\
- ble _081320EC\n\
-_08132106:\n\
- cmp r6, 0x4\n\
- bne _0813211C\n\
- ldr r0, [r2]\n\
- ldr r1, [r0, 0x14]\n\
- movs r0, 0x2\n\
- str r0, [r1, 0x8]\n\
- b _08132130\n\
- .pool\n\
-_0813211C:\n\
- ldr r0, [r2]\n\
- ldr r1, [r0, 0x14]\n\
- movs r0, 0x1\n\
- str r0, [r1, 0x8]\n\
- b _08132130\n\
-_08132126:\n\
- ldr r0, [r2]\n\
- ldr r1, [r0, 0x14]\n\
- movs r0, 0\n\
- str r0, [r1, 0x8]\n\
- ldr r5, =gAIScriptPtr\n\
-_08132130:\n\
- ldr r0, [r5]\n\
- adds r0, 0x1\n\
- str r0, [r5]\n\
- add sp, 0x14\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .pool\n\
- .syntax divided");
+ s32 i, checkedMove;
+ s32 moveDmgs[4];
+
+ for (i = 0; sDiscouragedPowerfulMoveEffects[i] != 0xFFFF; i++)
+ {
+ if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].effect == sDiscouragedPowerfulMoveEffects[i])
+ break;
+ }
+
+ if (gBattleMoves[AI_THINKING_STRUCT->moveConsidered].power > 1
+ && sDiscouragedPowerfulMoveEffects[i] == 0xFFFF)
+ {
+ gDynamicBasePower = 0;
+ *(&gBattleStruct->dynamicMoveType) = 0;
+ gBattleScripting.dmgMultiplier = 1;
+ gBattleMoveFlags = 0;
+ gCritMultiplier = 1;
+
+ for (checkedMove = 0; checkedMove < 4; checkedMove++)
+ {
+ for (i = 0; sDiscouragedPowerfulMoveEffects[i] != 0xFFFF; i++)
+ {
+ if (gBattleMoves[gBattleMons[sBank_AI].moves[checkedMove]].effect == sDiscouragedPowerfulMoveEffects[i])
+ break;
+ }
+
+ if (gBattleMons[sBank_AI].moves[checkedMove] != MOVE_NONE
+ && sDiscouragedPowerfulMoveEffects[i] == 0xFFFF
+ && gBattleMoves[gBattleMons[sBank_AI].moves[checkedMove]].power > 1)
+ {
+ gCurrentMove = gBattleMons[sBank_AI].moves[checkedMove];
+ AI_CalcDmg(sBank_AI, gBankTarget);
+ TypeCalc(gCurrentMove, sBank_AI, gBankTarget);
+ moveDmgs[checkedMove] = gBattleMoveDamage * AI_THINKING_STRUCT->simulatedRNG[checkedMove] / 100;
+ if (moveDmgs[checkedMove] == 0)
+ moveDmgs[checkedMove] = 1;
+ }
+ else
+ {
+ moveDmgs[checkedMove] = 0;
+ }
+ }
+
+ for (checkedMove = 0; checkedMove < 4; checkedMove++)
+ {
+ if (moveDmgs[checkedMove] > moveDmgs[AI_THINKING_STRUCT->movesetIndex])
+ break;
+ }
+
+ if (checkedMove == 4)
+ AI_THINKING_STRUCT->funcResult = 2; // is the most powerful
+ else
+ AI_THINKING_STRUCT->funcResult = 1; // not most powerful
+ }
+ else
+ {
+ AI_THINKING_STRUCT->funcResult = 0; // highly discouraged in terms of power
+ }
+
+ gAIScriptPtr++;
}
static void BattleAICmd_get_last_used_bank_move(void)
@@ -1756,7 +1277,7 @@ static void BattleAICmd_if_arg_not_equal(void)
static void BattleAICmd_if_would_go_first(void)
{
- if (GetWhoStrikesFirst(sBank_AI, gBankTarget, 1) == gAIScriptPtr[1])
+ if (GetWhoStrikesFirst(sBank_AI, gBankTarget, TRUE) == gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
@@ -1764,7 +1285,7 @@ static void BattleAICmd_if_would_go_first(void)
static void BattleAICmd_if_would_not_go_first(void)
{
- if (GetWhoStrikesFirst(sBank_AI, gBankTarget, 1) != gAIScriptPtr[1])
+ if (GetWhoStrikesFirst(sBank_AI, gBankTarget, TRUE) != gAIScriptPtr[1])
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
else
gAIScriptPtr += 6;
@@ -1792,7 +1313,7 @@ static void BattleAICmd_count_alive_pokemon(void)
else
index = gBankTarget;
- if (GetBankSide(index) == 0)
+ if (GetBankSide(index) == SIDE_PLAYER)
party = gPlayerParty;
else
party = gEnemyParty;
@@ -1896,11 +1417,10 @@ static void BattleAICmd_get_ability(void)
gAIScriptPtr += 2;
}
-#ifdef NONMATCHING
static void BattleAICmd_check_ability(void)
{
- u8 bank = BattleAI_GetWantedBank(gAIScriptPtr[1]);
- u8 ability = gAIScriptPtr[2];
+ u32 bank = BattleAI_GetWantedBank(gAIScriptPtr[1]);
+ u32 ability = gAIScriptPtr[2];
if (gAIScriptPtr[1] == AI_TARGET || gAIScriptPtr[1] == AI_TARGET_PARTNER)
{
@@ -1920,8 +1440,9 @@ static void BattleAICmd_check_ability(void)
{
if (gBaseStats[gBattleMons[bank].species].ability2 != ABILITY_NONE)
{
- if (gBaseStats[gBattleMons[bank].species].ability1 != ability
- && gBaseStats[gBattleMons[bank].species].ability2 != ability)
+ u8 abilityDummyVariable = ability; // needed to match
+ if (gBaseStats[gBattleMons[bank].species].ability1 != abilityDummyVariable
+ && gBaseStats[gBattleMons[bank].species].ability2 != abilityDummyVariable)
{
ability = gBaseStats[gBattleMons[bank].species].ability1;
}
@@ -1957,137 +1478,6 @@ static void BattleAICmd_check_ability(void)
}
gAIScriptPtr += 3;
}
-#else
-__attribute__((naked))
-static void BattleAICmd_check_ability(void)
-{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- ldr r4, =gAIScriptPtr\n\
- ldr r0, [r4]\n\
- ldrb r0, [r0, 0x1]\n\
- bl BattleAI_GetWantedBank\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- ldr r0, [r4]\n\
- ldrb r3, [r0, 0x2]\n\
- ldrb r0, [r0, 0x1]\n\
- cmp r0, 0\n\
- beq _0813253A\n\
- cmp r0, 0x2\n\
- bne _081325BC\n\
-_0813253A:\n\
- ldr r0, =gBattleResources\n\
- ldr r4, [r0]\n\
- ldr r1, [r4, 0x18]\n\
- adds r1, 0x40\n\
- adds r2, r1, r5\n\
- ldrb r1, [r2]\n\
- adds r6, r0, 0\n\
- cmp r1, 0\n\
- beq _0813255C\n\
- adds r3, r1, 0\n\
- ldr r0, [r4, 0x14]\n\
- str r3, [r0, 0x8]\n\
- b _081325CA\n\
- .pool\n\
-_0813255C:\n\
- ldr r1, =gBattleMons\n\
- movs r0, 0x58\n\
- muls r0, r5\n\
- adds r4, r0, r1\n\
- adds r0, r4, 0\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x17\n\
- beq _08132576\n\
- cmp r0, 0x2A\n\
- beq _08132576\n\
- cmp r0, 0x47\n\
- bne _08132588\n\
-_08132576:\n\
- movs r0, 0x58\n\
- muls r0, r5\n\
- adds r0, r1\n\
- adds r0, 0x20\n\
- ldrb r3, [r0]\n\
- b _081325CA\n\
- .pool\n\
-_08132588:\n\
- ldr r2, =gBaseStats\n\
- ldrh r1, [r4]\n\
- lsls r0, r1, 3\n\
- subs r0, r1\n\
- lsls r0, 2\n\
- adds r1, r0, r2\n\
- ldrb r4, [r1, 0x16]\n\
- cmp r4, 0\n\
- beq _081325B8\n\
- ldrb r2, [r1, 0x17]\n\
- cmp r2, 0\n\
- beq _081325B4\n\
- adds r0, r3, 0\n\
- cmp r4, r0\n\
- beq _081325CE\n\
- cmp r2, r0\n\
- beq _081325CE\n\
- adds r3, r4, 0\n\
- b _081325CA\n\
- .pool\n\
-_081325B4:\n\
- ldrb r3, [r1, 0x16]\n\
- b _081325CA\n\
-_081325B8:\n\
- ldrb r3, [r1, 0x17]\n\
- b _081325CA\n\
-_081325BC:\n\
- ldr r1, =gBattleMons\n\
- movs r0, 0x58\n\
- muls r0, r5\n\
- adds r0, r1\n\
- adds r0, 0x20\n\
- ldrb r3, [r0]\n\
- ldr r6, =gBattleResources\n\
-_081325CA:\n\
- cmp r3, 0\n\
- bne _081325E8\n\
-_081325CE:\n\
- ldr r0, [r6]\n\
- ldr r1, [r0, 0x14]\n\
- movs r0, 0x2\n\
- str r0, [r1, 0x8]\n\
- ldr r2, =gAIScriptPtr\n\
- b _08132608\n\
- .pool\n\
-_081325E8:\n\
- ldr r0, =gAIScriptPtr\n\
- ldr r1, [r0]\n\
- adds r2, r0, 0\n\
- ldrb r1, [r1, 0x2]\n\
- cmp r3, r1\n\
- bne _08132600\n\
- ldr r0, [r6]\n\
- ldr r1, [r0, 0x14]\n\
- movs r0, 0x1\n\
- b _08132606\n\
- .pool\n\
-_08132600:\n\
- ldr r0, [r6]\n\
- ldr r1, [r0, 0x14]\n\
- movs r0, 0\n\
-_08132606:\n\
- str r0, [r1, 0x8]\n\
-_08132608:\n\
- ldr r0, [r2]\n\
- adds r0, 0x3\n\
- str r0, [r2]\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .pool\n\
- .syntax divided");
-}
-#endif
static void BattleAICmd_get_highest_type_effectiveness(void)
{
@@ -2184,7 +1574,7 @@ static void BattleAICmd_if_status_in_party(void)
switch(gAIScriptPtr[1])
{
- case 1:
+ case AI_USER:
index = sBank_AI;
break;
default:
@@ -2397,7 +1787,7 @@ static void BattleAICmd_if_cant_faint(void)
static void BattleAICmd_if_has_move(void)
{
int i;
- u16 *temp_ptr = (u16 *)(gAIScriptPtr + 2);
+ const u16 *temp_ptr = (u16 *)(gAIScriptPtr + 2);
switch(gAIScriptPtr[1])
{
@@ -2464,7 +1854,7 @@ static void BattleAICmd_if_has_move(void)
static void BattleAICmd_if_dont_have_move(void)
{
int i;
- u16 *temp_ptr = (u16 *)(gAIScriptPtr + 2);
+ const u16 *temp_ptr = (u16 *)(gAIScriptPtr + 2);
switch(gAIScriptPtr[1])
{
@@ -2631,7 +2021,7 @@ static void BattleAICmd_if_curr_move_disabled_or_encored(void)
static void BattleAICmd_flee(void)
{
- AI_THINKING_STRUCT->aiAction |= (AI_ACTION_DONE | AI_ACTION_FLEE | AI_ACTION_DO_NOT_ATTACK); // what matters is UNK2 being enabled.
+ AI_THINKING_STRUCT->aiAction |= (AI_ACTION_DONE | AI_ACTION_FLEE | AI_ACTION_DO_NOT_ATTACK);
}
static void BattleAICmd_if_random_100(void)
@@ -2646,7 +2036,7 @@ static void BattleAICmd_if_random_100(void)
static void BattleAICmd_watch(void)
{
- AI_THINKING_STRUCT->aiAction |= (AI_ACTION_DONE | AI_ACTION_WATCH | AI_ACTION_DO_NOT_ATTACK); // what matters is UNK3 being enabled.
+ AI_THINKING_STRUCT->aiAction |= (AI_ACTION_DONE | AI_ACTION_WATCH | AI_ACTION_DO_NOT_ATTACK);
}
static void BattleAICmd_get_hold_effect(void)
@@ -2675,7 +2065,7 @@ static void BattleAICmd_if_holds_item(void)
u16 item;
u8 var1, var2;
- if ((bank & 1) == (sBank_AI & 1))
+ if ((bank & BIT_SIDE) == (sBank_AI & BIT_SIDE))
item = gBattleMons[bank].item;
else
item = BATTLE_HISTORY->itemEffects[bank];
@@ -2752,7 +2142,7 @@ static void BattleAICmd_get_used_held_item(void)
#ifdef NONMATCHING
AI_THINKING_STRUCT->funcResult = gBattleStruct->usedHeldItems[bank];
#else
- AI_THINKING_STRUCT->funcResult = *(u8*)((u8*)(gBattleStruct) + 0xB8 + (bank * 2));
+ AI_THINKING_STRUCT->funcResult = *(u8*)((u8*)(gBattleStruct) + offsetof(struct BattleStruct, usedHeldItems) + (bank * 2));
#endif // NONMATCHING
gAIScriptPtr += 2;
diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c
new file mode 100644
index 000000000..661759a98
--- /dev/null
+++ b/src/battle_ai_switch_items.c
@@ -0,0 +1,951 @@
+#include "global.h"
+#include "battle.h"
+#include "battle_controllers.h"
+#include "abilities.h"
+#include "moves.h"
+#include "pokemon.h"
+#include "species.h"
+#include "rng.h"
+#include "util.h"
+#include "items.h"
+#include "pokemon_item_effects.h"
+
+extern u8 gActiveBank;
+extern u8 gAbsentBankFlags;
+extern u32 gBattleTypeFlags;
+extern u32 gStatuses3[BATTLE_BANKS_COUNT];
+extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT];
+extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
+extern u16 gUnknown_02024250[BATTLE_BANKS_COUNT];
+extern u8 gUnknown_02024270[BATTLE_BANKS_COUNT];
+extern u16 gDynamicBasePower;
+extern u8 gBattleMoveFlags;
+extern u8 gCritMultiplier;
+extern s32 gBattleMoveDamage;
+
+extern const struct BattleMove gBattleMoves[];
+extern const struct BaseStats gBaseStats[];
+extern const u8 gTypeEffectiveness[];
+extern const u8 * const gItemEffectTable[]; // todo: fix once struct is declared
+
+// this file's functions
+static bool8 HasSuperEffectiveMoveAgainstOpponents(bool8 noRng);
+static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent);
+static bool8 ShouldUseItem(void);
+
+static bool8 ShouldSwitchIfPerishSong(void)
+{
+ if (gStatuses3[gActiveBank] & STATUS3_PERISH_SONG
+ && gDisableStructs[gActiveBank].perishSong1 == 0)
+ {
+ *(gBattleStruct->field_294 + gActiveBank) = 6;
+ EmitCmd_x21(1, 2, 0);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static bool8 ShouldSwitchIfWonderGuard(void)
+{
+ u8 opposingIdentity;
+ u8 opposingBank;
+ u8 moveFlags;
+ s32 i, j;
+ s32 firstId;
+ s32 lastId; // + 1
+ struct Pokemon *party = NULL;
+ u16 move;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ return FALSE;
+
+ opposingIdentity = GetBankIdentity(gActiveBank) ^ BIT_SIDE;
+
+ if (gBattleMons[GetBankByIdentity(opposingIdentity)].ability != ABILITY_WONDER_GUARD)
+ return FALSE;
+
+ // check if pokemon has a super effective move
+ for (opposingBank = GetBankByIdentity(opposingIdentity), i = 0; i < 4; i++)
+ {
+ move = gBattleMons[gActiveBank].moves[i];
+ if (move == MOVE_NONE)
+ continue;
+
+ moveFlags = AI_TypeCalc(move, gBattleMons[opposingBank].species, gBattleMons[opposingBank].ability);
+ if (moveFlags & MOVESTATUS_SUPEREFFECTIVE)
+ return FALSE;
+ }
+
+ // get party information
+ if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
+ {
+ if ((gActiveBank & BIT_MON) == 0)
+ firstId = 0, lastId = 3;
+ else
+ firstId = 3, lastId = 6;
+ }
+ else
+ {
+ firstId = 0, lastId = 6;
+ }
+
+ if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ party = gPlayerParty;
+ else
+ party = gEnemyParty;
+
+ // find a pokemon in the party that has a super effective move
+ for (i = firstId; i < lastId; i++)
+ {
+ if (GetMonData(&party[i], MON_DATA_HP) == 0)
+ continue;
+ if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_NONE)
+ continue;
+ if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG)
+ continue;
+ if (i == gBattlePartyID[gActiveBank])
+ continue;
+
+ GetMonData(&party[i], MON_DATA_SPECIES); // unused return value
+ GetMonData(&party[i], MON_DATA_ALT_ABILITY); // unused return value
+
+ for (opposingBank = GetBankByIdentity(opposingIdentity), j = 0; j < 4; j++)
+ {
+ move = GetMonData(&party[i], MON_DATA_MOVE1 + j);
+ if (move == MOVE_NONE)
+ continue;
+
+ moveFlags = AI_TypeCalc(move, gBattleMons[opposingBank].species, gBattleMons[opposingBank].ability);
+ if (moveFlags & MOVESTATUS_SUPEREFFECTIVE && Random() % 3 < 2)
+ {
+ // we found a mon
+ *(gBattleStruct->field_294 + gActiveBank) = i;
+ EmitCmd_x21(1, 2, 0);
+ return TRUE;
+ }
+ }
+ }
+
+ return FALSE; // at this point there is not a single pokemon in the party that has a super effective move against a pokemon with wonder guard
+}
+
+static bool8 FindMonThatAbsorbsOpponentsMove(void)
+{
+ u8 bankIn1, bankIn2;
+ u8 absorbingTypeAbility;
+ s32 firstId;
+ s32 lastId; // + 1
+ struct Pokemon *party;
+ s32 i;
+
+ if (HasSuperEffectiveMoveAgainstOpponents(TRUE) && Random() % 3 != 0)
+ return FALSE;
+ if (gUnknown_02024250[gActiveBank] == 0)
+ return FALSE;
+ if (gUnknown_02024250[gActiveBank] == 0xFFFF)
+ return FALSE;
+ if (gBattleMoves[gUnknown_02024250[gActiveBank]].power == 0)
+ return FALSE;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ bankIn1 = gActiveBank;
+ if (gAbsentBankFlags & gBitTable[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)])
+ bankIn2 = gActiveBank;
+ else
+ bankIn2 = GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON);
+ }
+ else
+ {
+ bankIn1 = gActiveBank;
+ bankIn2 = gActiveBank;
+ }
+
+ if (gBattleMoves[gUnknown_02024250[gActiveBank]].type == TYPE_FIRE)
+ absorbingTypeAbility = ABILITY_FLASH_FIRE;
+ else if (gBattleMoves[gUnknown_02024250[gActiveBank]].type == TYPE_WATER)
+ absorbingTypeAbility = ABILITY_WATER_ABSORB;
+ else if (gBattleMoves[gUnknown_02024250[gActiveBank]].type == TYPE_ELECTRIC)
+ absorbingTypeAbility = ABILITY_VOLT_ABSORB;
+ else
+ return FALSE;
+
+ if (gBattleMons[gActiveBank].ability == absorbingTypeAbility)
+ return FALSE;
+
+ if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
+ {
+ if ((gActiveBank & BIT_MON) == 0)
+ firstId = 0, lastId = 3;
+ else
+ firstId = 3, lastId = 6;
+ }
+ else
+ {
+ firstId = 0, lastId = 6;
+ }
+
+ if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ party = gPlayerParty;
+ else
+ party = gEnemyParty;
+
+ for (i = firstId; i < lastId; i++)
+ {
+ u16 species;
+ u8 monAbility;
+
+ if (GetMonData(&party[i], MON_DATA_HP) == 0)
+ continue;
+ if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_NONE)
+ continue;
+ if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG)
+ continue;
+ if (i == gBattlePartyID[bankIn1])
+ continue;
+ if (i == gBattlePartyID[bankIn2])
+ continue;
+ if (i == *(gBattleStruct->field_5C + bankIn1))
+ continue;
+ if (i == *(gBattleStruct->field_5C + bankIn2))
+ continue;
+
+ species = GetMonData(&party[i], MON_DATA_SPECIES);
+ if (GetMonData(&party[i], MON_DATA_ALT_ABILITY) != 0)
+ monAbility = gBaseStats[species].ability2;
+ else
+ monAbility = gBaseStats[species].ability1;
+
+ if (absorbingTypeAbility == monAbility && Random() & 1)
+ {
+ // we found a mon
+ *(gBattleStruct->field_294 + gActiveBank) = i;
+ EmitCmd_x21(1, 2, 0);
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+static bool8 ShouldSwitchIfNaturalCure(void)
+{
+ if (!(gBattleMons[gActiveBank].status1 & STATUS_SLEEP))
+ return FALSE;
+ if (gBattleMons[gActiveBank].ability != ABILITY_NATURAL_CURE)
+ return FALSE;
+ if (gBattleMons[gActiveBank].hp < gBattleMons[gActiveBank].maxHP / 2)
+ return FALSE;
+
+ if ((gUnknown_02024250[gActiveBank] == 0 || gUnknown_02024250[gActiveBank] == 0xFFFF) && Random() & 1)
+ {
+ *(gBattleStruct->field_294 + gActiveBank) = 6;
+ EmitCmd_x21(1, 2, 0);
+ return TRUE;
+ }
+ else if (gBattleMoves[gUnknown_02024250[gActiveBank]].power == 0 && Random() & 1)
+ {
+ *(gBattleStruct->field_294 + gActiveBank) = 6;
+ EmitCmd_x21(1, 2, 0);
+ return TRUE;
+ }
+
+ if (FindMonWithFlagsAndSuperEffective(MOVESTATUS_NOTAFFECTED, 1))
+ return TRUE;
+ if (FindMonWithFlagsAndSuperEffective(MOVESTATUS_NOTVERYEFFECTIVE, 1))
+ return TRUE;
+ if (Random() & 1)
+ {
+ *(gBattleStruct->field_294 + gActiveBank) = 6;
+ EmitCmd_x21(1, 2, 0);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static bool8 HasSuperEffectiveMoveAgainstOpponents(bool8 noRng)
+{
+ u8 opposingIdentity;
+ u8 opposingBank;
+ s32 i;
+ u8 moveFlags;
+ u16 move;
+
+ opposingIdentity = GetBankIdentity(gActiveBank) ^ BIT_SIDE;
+ opposingBank = GetBankByIdentity(opposingIdentity);
+
+ if (!(gAbsentBankFlags & gBitTable[opposingBank]))
+ {
+ for (i = 0; i < 4; i++)
+ {
+ move = gBattleMons[gActiveBank].moves[i];
+ if (move == MOVE_NONE)
+ continue;
+
+ moveFlags = AI_TypeCalc(move, gBattleMons[opposingBank].species, gBattleMons[opposingBank].ability);
+ if (moveFlags & MOVESTATUS_SUPEREFFECTIVE)
+ {
+ if (noRng)
+ return TRUE;
+ if (Random() % 10 != 0)
+ return TRUE;
+ }
+ }
+ }
+ if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ return FALSE;
+
+ opposingBank = GetBankByIdentity(opposingIdentity ^ BIT_MON);
+
+ if (!(gAbsentBankFlags & gBitTable[opposingBank]))
+ {
+ for (i = 0; i < 4; i++)
+ {
+ move = gBattleMons[gActiveBank].moves[i];
+ if (move == MOVE_NONE)
+ continue;
+
+ moveFlags = AI_TypeCalc(move, gBattleMons[opposingBank].species, gBattleMons[opposingBank].ability);
+ if (moveFlags & MOVESTATUS_SUPEREFFECTIVE)
+ {
+ if (noRng)
+ return TRUE;
+ if (Random() % 10 != 0)
+ return TRUE;
+ }
+ }
+ }
+
+ return FALSE;
+}
+
+static bool8 AreStatsRaised(void)
+{
+ u8 buffedStatsValue = 0;
+ s32 i;
+
+ for (i = 0; i < BATTLE_STATS_NO; i++)
+ {
+ if (gBattleMons[gActiveBank].statStages[i] > 6)
+ buffedStatsValue += gBattleMons[gActiveBank].statStages[i] - 6;
+ }
+
+ return (buffedStatsValue > 3);
+}
+
+static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent)
+{
+ u8 bankIn1, bankIn2;
+ s32 firstId;
+ s32 lastId; // + 1
+ struct Pokemon *party;
+ s32 i, j;
+ u16 move;
+ u8 moveFlags;
+
+ if (gUnknown_02024250[gActiveBank] == 0)
+ return FALSE;
+ if (gUnknown_02024250[gActiveBank] == 0xFFFF)
+ return FALSE;
+ if (gUnknown_02024270[gActiveBank] == 0xFF)
+ return FALSE;
+ if (gBattleMoves[gUnknown_02024250[gActiveBank]].power == 0)
+ return FALSE;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ bankIn1 = gActiveBank;
+ if (gAbsentBankFlags & gBitTable[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)])
+ bankIn2 = gActiveBank;
+ else
+ bankIn2 = GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON);
+ }
+ else
+ {
+ bankIn1 = gActiveBank;
+ bankIn2 = gActiveBank;
+ }
+
+ if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
+ {
+ if ((gActiveBank & BIT_MON) == 0)
+ firstId = 0, lastId = 3;
+ else
+ firstId = 3, lastId = 6;
+ }
+ else
+ {
+ firstId = 0, lastId = 6;
+ }
+
+ if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ party = gPlayerParty;
+ else
+ party = gEnemyParty;
+
+ for (i = firstId; i < lastId; i++)
+ {
+ u16 species;
+ u8 monAbility;
+
+ if (GetMonData(&party[i], MON_DATA_HP) == 0)
+ continue;
+ if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_NONE)
+ continue;
+ if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG)
+ continue;
+ if (i == gBattlePartyID[bankIn1])
+ continue;
+ if (i == gBattlePartyID[bankIn2])
+ continue;
+ if (i == *(gBattleStruct->field_5C + bankIn1))
+ continue;
+ if (i == *(gBattleStruct->field_5C + bankIn2))
+ continue;
+
+ species = GetMonData(&party[i], MON_DATA_SPECIES);
+ if (GetMonData(&party[i], MON_DATA_ALT_ABILITY) != 0)
+ monAbility = gBaseStats[species].ability2;
+ else
+ monAbility = gBaseStats[species].ability1;
+
+ moveFlags = AI_TypeCalc(gUnknown_02024250[gActiveBank], species, monAbility);
+ if (moveFlags & flags)
+ {
+ bankIn1 = gUnknown_02024270[gActiveBank];
+
+ for (j = 0; j < 4; j++)
+ {
+ move = GetMonData(&party[i], MON_DATA_MOVE1 + j);
+ if (move == 0)
+ continue;
+
+ moveFlags = AI_TypeCalc(move, gBattleMons[bankIn1].species, gBattleMons[bankIn1].ability);
+ if (moveFlags & MOVESTATUS_SUPEREFFECTIVE && Random() % moduloPercent == 0)
+ {
+ *(gBattleStruct->field_294 + gActiveBank) = i;
+ EmitCmd_x21(1, 2, 0);
+ return TRUE;
+ }
+ }
+ }
+ }
+
+ return FALSE;
+}
+
+static bool8 ShouldSwitch(void)
+{
+ u8 bankIn1, bankIn2;
+ u8 *activeBankPtr; // needed to match
+ s32 firstId;
+ s32 lastId; // + 1
+ struct Pokemon *party;
+ s32 i;
+ s32 availableToSwitch;
+
+ if (gBattleMons[*(activeBankPtr = &gActiveBank)].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION))
+ return FALSE;
+ if (gStatuses3[gActiveBank] & STATUS3_ROOTED)
+ return FALSE;
+ if (AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gActiveBank, ABILITY_SHADOW_TAG, 0, 0))
+ return FALSE;
+ if (AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gActiveBank, ABILITY_ARENA_TRAP, 0, 0))
+ return FALSE; // misses the flying or levitate check
+ if (AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_MAGNET_PULL, 0, 0))
+ {
+ if (gBattleMons[gActiveBank].type1 == TYPE_STEEL)
+ return FALSE;
+ if (gBattleMons[gActiveBank].type2 == TYPE_STEEL)
+ return FALSE;
+ }
+ if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
+ return FALSE;
+
+ availableToSwitch = 0;
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ bankIn1 = *activeBankPtr;
+ if (gAbsentBankFlags & gBitTable[GetBankByIdentity(GetBankIdentity(*activeBankPtr) ^ BIT_MON)])
+ bankIn2 = *activeBankPtr;
+ else
+ bankIn2 = GetBankByIdentity(GetBankIdentity(*activeBankPtr) ^ BIT_MON);
+ }
+ else
+ {
+ bankIn1 = *activeBankPtr;
+ bankIn2 = *activeBankPtr;
+ }
+
+ if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
+ {
+ if ((gActiveBank & BIT_MON) == 0)
+ firstId = 0, lastId = 3;
+ else
+ firstId = 3, lastId = 6;
+ }
+ else
+ {
+ firstId = 0, lastId = 6;
+ }
+
+ if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ party = gPlayerParty;
+ else
+ party = gEnemyParty;
+
+ for (i = firstId; i < lastId; i++)
+ {
+ if (GetMonData(&party[i], MON_DATA_HP) == 0)
+ continue;
+ if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_NONE)
+ continue;
+ if (GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG)
+ continue;
+ if (i == gBattlePartyID[bankIn1])
+ continue;
+ if (i == gBattlePartyID[bankIn2])
+ continue;
+ if (i == *(gBattleStruct->field_5C + bankIn1))
+ continue;
+ if (i == *(gBattleStruct->field_5C + bankIn2))
+ continue;
+
+ availableToSwitch++;
+ }
+
+ if (availableToSwitch == 0)
+ return FALSE;
+ if (ShouldSwitchIfPerishSong())
+ return TRUE;
+ if (ShouldSwitchIfWonderGuard())
+ return TRUE;
+ if (FindMonThatAbsorbsOpponentsMove())
+ return TRUE;
+ if (ShouldSwitchIfNaturalCure())
+ return TRUE;
+ if (HasSuperEffectiveMoveAgainstOpponents(FALSE))
+ return FALSE;
+ if (AreStatsRaised())
+ return FALSE;
+ if (FindMonWithFlagsAndSuperEffective(MOVESTATUS_NOTAFFECTED, 2)
+ || FindMonWithFlagsAndSuperEffective(MOVESTATUS_NOTVERYEFFECTIVE, 3))
+ return TRUE;
+
+ return FALSE;
+}
+
+void AI_TrySwitchOrUseItem(void)
+{
+ struct Pokemon *party;
+ u8 bankIn1, bankIn2;
+ s32 firstId;
+ s32 lastId; // + 1
+ u8 bankIdentity = GetBankIdentity(gActiveBank);
+
+ if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ party = gPlayerParty;
+ else
+ party = gEnemyParty;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ {
+ if (ShouldSwitch())
+ {
+ if (*(gBattleStruct->field_294 + gActiveBank) == 6)
+ {
+ s32 monToSwitchId = GetMostSuitableMonToSwitchInto();
+ if (monToSwitchId == 6)
+ {
+ if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ {
+ bankIn1 = GetBankByIdentity(bankIdentity);
+ bankIn2 = bankIn1;
+ }
+ else
+ {
+ bankIn1 = GetBankByIdentity(bankIdentity);
+ bankIn2 = GetBankByIdentity(bankIdentity ^ BIT_MON);
+ }
+
+ if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
+ {
+ if ((gActiveBank & BIT_MON) == 0)
+ firstId = 0, lastId = 3;
+ else
+ firstId = 3, lastId = 6;
+ }
+ else
+ {
+ firstId = 0, lastId = 6;
+ }
+
+ for (monToSwitchId = firstId; monToSwitchId < lastId; monToSwitchId++)
+ {
+ if (GetMonData(&party[monToSwitchId], MON_DATA_HP) == 0)
+ continue;
+ if (monToSwitchId == gBattlePartyID[bankIn1])
+ continue;
+ if (monToSwitchId == gBattlePartyID[bankIn2])
+ continue;
+ if (monToSwitchId == *(gBattleStruct->field_5C + bankIn1))
+ continue;
+ if (monToSwitchId == *(gBattleStruct->field_5C + bankIn2))
+ continue;
+
+ break;
+ }
+ }
+
+ *(gBattleStruct->field_294 + gActiveBank) = monToSwitchId;
+ }
+
+ *(gBattleStruct->field_5C + gActiveBank) = *(gBattleStruct->field_294 + gActiveBank);
+ return;
+ }
+ else if (ShouldUseItem())
+ {
+ return;
+ }
+ }
+
+ EmitCmd_x21(1, 0, (gActiveBank ^ BIT_SIDE) << 8);
+}
+
+#define TYPE_FORESIGHT 0xFE
+#define TYPE_ENDTABLE 0xFF
+
+static void ModulateByTypeEffectiveness(u8 atkType, u8 defType1, u8 defType2, u8 *var)
+{
+ s32 i = 0;
+
+ while (gTypeEffectiveness[i] != TYPE_ENDTABLE)
+ {
+ if (gTypeEffectiveness[i] == TYPE_FORESIGHT)
+ {
+ i += 3;
+ continue;
+ }
+ else if (gTypeEffectiveness[i] == atkType)
+ {
+ // check type1
+ if (gTypeEffectiveness[i + 1] == defType1)
+ *var = (*var * gTypeEffectiveness[i + 2]) / 10;
+ // check type2
+ if (gTypeEffectiveness[i + 1] == defType2 && defType1 != defType2)
+ *var = (*var * gTypeEffectiveness[i + 2]) / 10;
+ }
+ i += 3;
+ }
+}
+
+u8 GetMostSuitableMonToSwitchInto(void)
+{
+ u8 opposingBank;
+ u8 bestDmg; // note : should be changed to u32 for obvious reasons
+ u8 bestMonId;
+ u8 bankIn1, bankIn2;
+ s32 firstId;
+ s32 lastId; // + 1
+ struct Pokemon *party;
+ s32 i, j;
+ u8 invalidMons;
+ u16 move;
+
+ if (*(gBattleStruct->field_5C + gActiveBank) != 6)
+ return *(gBattleStruct->field_5C + gActiveBank);
+ if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
+ return gBattlePartyID[gActiveBank] + 1;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ bankIn1 = gActiveBank;
+ if (gAbsentBankFlags & gBitTable[GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON)])
+ bankIn2 = gActiveBank;
+ else
+ bankIn2 = GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_MON);
+
+ // UB: It considers the opponent only player's side even though it can battle alongside player;
+ opposingBank = Random() & BIT_MON;
+ if (gAbsentBankFlags & gBitTable[opposingBank])
+ opposingBank ^= BIT_MON;
+ }
+ else
+ {
+ opposingBank = GetBankByIdentity(GetBankIdentity(gActiveBank) ^ BIT_SIDE);
+ bankIn1 = gActiveBank;
+ bankIn2 = gActiveBank;
+ }
+
+ if (gBattleTypeFlags & (BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_x800000))
+ {
+ if ((gActiveBank & BIT_MON) == 0)
+ firstId = 0, lastId = 3;
+ else
+ firstId = 3, lastId = 6;
+ }
+ else
+ {
+ firstId = 0, lastId = 6;
+ }
+
+ if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ party = gPlayerParty;
+ else
+ party = gEnemyParty;
+
+ invalidMons = 0;
+
+ while (invalidMons != 0x3F) // all mons are invalid
+ {
+ bestDmg = 0;
+ bestMonId = 6;
+ // find the mon which type is the most suitable offensively
+ for (i = firstId; i < lastId; i++)
+ {
+ u16 species = GetMonData(&party[i], MON_DATA_SPECIES);
+ if (species != SPECIES_NONE
+ && GetMonData(&party[i], MON_DATA_HP) != 0
+ && !(gBitTable[i] & invalidMons)
+ && gBattlePartyID[bankIn1] != i
+ && gBattlePartyID[bankIn2] != i
+ && i != *(gBattleStruct->field_5C + bankIn1)
+ && i != *(gBattleStruct->field_5C + bankIn2))
+ {
+ u8 type1 = gBaseStats[species].type1;
+ u8 type2 = gBaseStats[species].type2;
+ u8 typeDmg = 10;
+ ModulateByTypeEffectiveness(gBattleMons[opposingBank].type1, type1, type2, &typeDmg);
+ ModulateByTypeEffectiveness(gBattleMons[opposingBank].type2, type1, type2, &typeDmg);
+ if (bestDmg < typeDmg)
+ {
+ bestDmg = typeDmg;
+ bestMonId = i;
+ }
+ }
+ else
+ {
+ invalidMons |= gBitTable[i];
+ }
+ }
+
+ // ok, we know the mon has the right typing but does it have at least one super effective move?
+ if (bestMonId != 6)
+ {
+ for (i = 0; i < 4; i++)
+ {
+ move = GetMonData(&party[bestMonId], MON_DATA_MOVE1 + i);
+ if (move != MOVE_NONE && TypeCalc(move, gActiveBank, opposingBank) & MOVESTATUS_SUPEREFFECTIVE)
+ break;
+ }
+
+ if (i != 4)
+ return bestMonId; // has both the typing and at least one super effective move
+
+ invalidMons |= gBitTable[bestMonId]; // sorry buddy, we want something better
+ }
+ else
+ {
+ invalidMons = 0x3F; // no viable mon to switch
+ }
+ }
+
+ gDynamicBasePower = 0;
+ gBattleStruct->dynamicMoveType = 0;
+ gBattleScripting.dmgMultiplier = 1;
+ gBattleMoveFlags = 0;
+ gCritMultiplier = 1;
+ bestDmg = 0;
+ bestMonId = 6;
+
+ // if we couldn't find the best mon in terms of typing, find the one that deals most damage
+ for (i = firstId; i < lastId; i++)
+ {
+ if ((u16)(GetMonData(&party[i], MON_DATA_SPECIES)) == SPECIES_NONE)
+ continue;
+ if (GetMonData(&party[i], MON_DATA_HP) == 0)
+ continue;
+ if (gBattlePartyID[bankIn1] == i)
+ continue;
+ if (gBattlePartyID[bankIn2] == i)
+ continue;
+ if (i == *(gBattleStruct->field_5C + bankIn1))
+ continue;
+ if (i == *(gBattleStruct->field_5C + bankIn2))
+ continue;
+
+ for (j = 0; j < 4; j++)
+ {
+ move = GetMonData(&party[i], MON_DATA_MOVE1 + j);
+ gBattleMoveDamage = 0;
+ if (move != MOVE_NONE && gBattleMoves[move].power != 1)
+ {
+ AI_CalcDmg(gActiveBank, opposingBank);
+ TypeCalc(move, gActiveBank, opposingBank);
+ }
+ if (bestDmg < gBattleMoveDamage)
+ {
+ bestDmg = gBattleMoveDamage;
+ bestMonId = i;
+ }
+ }
+ }
+
+ return bestMonId;
+}
+
+// TODO: use PokemonItemEffect struct instead of u8 once it's documented
+static u8 GetAI_ItemType(u8 itemId, const u8 *itemEffect) // NOTE: should take u16 as item Id argument
+{
+ if (itemId == ITEM_FULL_RESTORE)
+ return AI_ITEM_FULL_RESTORE;
+ if (itemEffect[4] & 4)
+ return AI_ITEM_HEAL_HP;
+ if (itemEffect[3] & 0x3F)
+ return AI_ITEM_CURE_CONDITION;
+ if (itemEffect[0] & 0x3F || itemEffect[1] != 0 || itemEffect[2] != 0)
+ return AI_ITEM_X_STAT;
+ if (itemEffect[3] & 0x80)
+ return AI_ITEM_GUARD_SPECS;
+
+ return AI_ITEM_NOT_RECOGNIZABLE;
+}
+
+static bool8 ShouldUseItem(void)
+{
+ struct Pokemon *party;
+ s32 i;
+ u8 validMons = 0;
+ bool8 shouldUse = FALSE;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && GetBankIdentity(gActiveBank) == IDENTITY_PLAYER_MON2)
+ return FALSE;
+
+ if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ party = gPlayerParty;
+ else
+ party = gEnemyParty;
+
+ for (i = 0; i < 6; i++)
+ {
+ if (GetMonData(&party[i], MON_DATA_HP) != 0
+ && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_NONE
+ && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG)
+ {
+ validMons++;
+ }
+ }
+
+ for (i = 0; i < 4; i++)
+ {
+ u16 item;
+ const u8 *itemEffects;
+ u8 paramOffset;
+ u8 bankSide;
+
+ if (i != 0 && validMons > (gBattleResources->battleHistory->itemsNo - i) + 1)
+ continue;
+ item = gBattleResources->battleHistory->trainerItems[i];
+ if (item == ITEM_NONE)
+ continue;
+ if (gItemEffectTable[item - 13] == NULL)
+ continue;
+
+ if (item == ITEM_ENIGMA_BERRY)
+ itemEffects = gSaveBlock1Ptr->enigmaBerry.itemEffect;
+ else
+ itemEffects = gItemEffectTable[item - 13];
+
+ *(gBattleStruct->AI_itemType + gActiveBank / 2) = GetAI_ItemType(item, itemEffects);
+
+ switch (*(gBattleStruct->AI_itemType + gActiveBank / 2))
+ {
+ case AI_ITEM_FULL_RESTORE:
+ if (gBattleMons[gActiveBank].hp >= gBattleMons[gActiveBank].maxHP / 4)
+ break;
+ if (gBattleMons[gActiveBank].hp == 0)
+ break;
+ shouldUse = TRUE;
+ break;
+ case AI_ITEM_HEAL_HP:
+ paramOffset = GetItemEffectParamOffset(item, 4, 4);
+ if (paramOffset == 0)
+ break;
+ if (gBattleMons[gActiveBank].hp == 0)
+ break;
+ if (gBattleMons[gActiveBank].hp < gBattleMons[gActiveBank].maxHP / 4 || gBattleMons[gActiveBank].maxHP - gBattleMons[gActiveBank].hp > itemEffects[paramOffset])
+ shouldUse = TRUE;
+ break;
+ case AI_ITEM_CURE_CONDITION:
+ *(gBattleStruct->AI_itemFlags + gActiveBank / 2) = 0;
+ if (itemEffects[3] & 0x20 && gBattleMons[gActiveBank].status1 & STATUS_SLEEP)
+ {
+ *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x20;
+ shouldUse = TRUE;
+ }
+ if (itemEffects[3] & 0x10 && (gBattleMons[gActiveBank].status1 & STATUS_POISON || gBattleMons[gActiveBank].status1 & STATUS_TOXIC_POISON))
+ {
+ *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x10;
+ shouldUse = TRUE;
+ }
+ if (itemEffects[3] & 0x8 && gBattleMons[gActiveBank].status1 & STATUS_BURN)
+ {
+ *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x8;
+ shouldUse = TRUE;
+ }
+ if (itemEffects[3] & 0x4 && gBattleMons[gActiveBank].status1 & STATUS_FREEZE)
+ {
+ *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x4;
+ shouldUse = TRUE;
+ }
+ if (itemEffects[3] & 0x2 && gBattleMons[gActiveBank].status1 & STATUS_PARALYSIS)
+ {
+ *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x2;
+ shouldUse = TRUE;
+ }
+ if (itemEffects[3] & 0x1 && gBattleMons[gActiveBank].status2 & STATUS2_CONFUSION)
+ {
+ *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x1;
+ shouldUse = TRUE;
+ }
+ break;
+ case AI_ITEM_X_STAT:
+ *(gBattleStruct->AI_itemFlags + gActiveBank / 2) = 0;
+ if (gDisableStructs[gActiveBank].isFirstTurn == 0)
+ break;
+ if (itemEffects[0] & 0xF)
+ *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x1;
+ if (itemEffects[1] & 0xF0)
+ *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x2;
+ if (itemEffects[1] & 0xF)
+ *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x4;
+ if (itemEffects[2] & 0xF)
+ *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x8;
+ if (itemEffects[2] & 0xF0)
+ *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x20;
+ if (itemEffects[0] & 0x30)
+ *(gBattleStruct->AI_itemFlags + gActiveBank / 2) |= 0x80;
+ shouldUse = TRUE;
+ break;
+ case AI_ITEM_GUARD_SPECS:
+ bankSide = GetBankSide(gActiveBank);
+ if (gDisableStructs[gActiveBank].isFirstTurn != 0 && gSideTimers[bankSide].mistTimer == 0)
+ shouldUse = TRUE;
+ break;
+ case AI_ITEM_NOT_RECOGNIZABLE:
+ return FALSE;
+ }
+
+ if (shouldUse)
+ {
+ EmitCmd_x21(1, 1, 0);
+ *(gBattleStruct->field_C0 + (gActiveBank / 2) * 2) = item;
+ gBattleResources->battleHistory->trainerItems[i] = 0;
+ return shouldUse;
+ }
+ }
+
+ return FALSE;
+}
diff --git a/src/battle_dome_cards.c b/src/battle_dome_cards.c
index c0557ac70..5251ee06a 100644
--- a/src/battle_dome_cards.c
+++ b/src/battle_dome_cards.c
@@ -17,7 +17,7 @@ extern const struct CompressedSpritePalette gTrainerFrontPicPaletteTable[];
extern const union AffineAnimCmd *const gUnknown_082FF618[];
extern const union AffineAnimCmd *const gUnknown_082FF694[];
extern const union AnimCmd *const gUnknown_082FF70C[];
-extern const union AnimCmd *const *const gUnknown_08309AAC[NUM_SPECIES];
+extern const union AnimCmd *const *const gMonAnimationsSpriteAnimsPtrTable[NUM_SPECIES];
extern const union AnimCmd *const *const gUnknown_0830536C[];
extern const u8 gUnknown_0831F578[];
@@ -282,7 +282,7 @@ u16 sub_818D3E4(u16 species, u32 otId, u32 personality, u8 flags, s16 x, s16 y,
images[j].size = 0x800;
}
gUnknown_0203CCEC.tileTag = 0xFFFF;
- gUnknown_0203CCEC.anims = gUnknown_08309AAC[species];
+ gUnknown_0203CCEC.anims = gMonAnimationsSpriteAnimsPtrTable[species];
gUnknown_0203CCEC.images = images;
if (flags2 == 0x01)
{
diff --git a/src/battle_message.c b/src/battle_message.c
new file mode 100644
index 000000000..aeff721d6
--- /dev/null
+++ b/src/battle_message.c
@@ -0,0 +1,2333 @@
+#include "global.h"
+#include "battle.h"
+#include "battle_message.h"
+#include "battle_string_ids.h"
+#include "moves.h"
+#include "text.h"
+#include "string_util.h"
+#include "items.h"
+#include "event_data.h"
+#include "link.h"
+#include "item.h"
+#include "window.h"
+#include "palette.h"
+#include "battle_controllers.h"
+
+extern u16 gLastUsedItem;
+extern u8 gLastUsedAbility;
+extern u8 gActiveBank;
+extern u8 gBankAttacker;
+extern u8 gBankTarget;
+extern u8 gStringBank;
+extern u8 gEffectBank;
+extern u8 gAbilitiesPerBank[BATTLE_BANKS_COUNT];
+extern u32 gBattleTypeFlags;
+extern u16 gTrainerBattleOpponent_A;
+extern u16 gTrainerBattleOpponent_B;
+extern u16 gPartnerTrainerId;
+extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
+extern struct BattleEnigmaBerry gEnigmaBerries[BATTLE_BANKS_COUNT];
+extern u8 gBattleBufferA[BATTLE_BANKS_COUNT][0x200];
+extern u8 gMoveSelectionCursor[BATTLE_BANKS_COUNT];
+extern u8 gUnknown_0203C7B4;
+extern struct StringInfoBattle *gStringInfo;
+
+extern const u8 gMoveNames[LAST_MOVE_INDEX + 1][13];
+extern const u8 gAbilityNames[][13];
+extern const u8 gTrainerClassNames[][13];
+extern const u8 gTypeNames[][7];
+extern const u16 gUnknown_08D85620[];
+
+// strings
+extern const u8 gText_PkmnBoxSomeonesPCFull[];
+extern const u8 gText_PkmnBoxLanettesPCFull[];
+extern const u8 gText_PkmnTransferredSomeonesPC[];
+extern const u8 gText_PkmnTransferredLanettesPC[];
+
+extern u16 sub_8068BB0(void); // pokemon_1
+extern u8 sub_81A4D00(void); // battle_frontier_2
+extern u8 GetFrontierOpponentClass(u16 trainerId); // battle_tower
+extern u8 sub_81D5530(u16 trainerId); // pokenav
+extern u8 GetEreaderTrainerClassId(void); // battle_tower
+extern void sub_81A4D50(u8 *txtPtr); // battle_frontier_2
+extern void sub_81D5554(u8 *txtPtr, u16 trainerId); // pokenav
+extern void GetEreaderTrainerName(u8 *txtPtr);
+extern void sub_81A36D0(u8 arg0, u16 trainerId); // battle_frontier_2
+extern void sub_81D572C(u8 arg0, u16 trainerId); // pokenav
+extern const u8* GetTrainer1LoseText(void); // battle_setup
+extern const u8* GetTrainer2LoseText(void); // battle_setup
+extern void GetFrontierTrainerName(u8 *dst, u16 trainerId);
+extern s32 GetStringCenterAlignXOffsetWithLetterSpacing(u8 fontId, const u8 *str, s32 totalWidth, s16 letterSpacing);
+extern u8 sub_8185FC4(void);
+extern u8 sav2_get_text_speed(void);
+
+// this file's functions
+static void sub_814F8F8(u8 *textPtr);
+static void sub_814F950(u8 *dst);
+static void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst);
+
+// ewram variables
+EWRAM_DATA u8 gDisplayedStringBattle[300] = {0};
+EWRAM_DATA u8 gBattleTextBuff1[TEXT_BUFF_ARRAY_COUNT] = {0};
+EWRAM_DATA u8 gBattleTextBuff2[TEXT_BUFF_ARRAY_COUNT] = {0};
+EWRAM_DATA u8 gBattleTextBuff3[TEXT_BUFF_ARRAY_COUNT] = {0};
+
+// const rom data
+// todo: make some of those names less vague: attacker/target vs pkmn, etc.
+
+const u8 gText_Trainer1LoseText[] = _("{B_TRAINER1_LOSE_TEXT}");
+const u8 gText_PkmnGainedEXP[] = _("{B_BUFF1} gained{B_BUFF2}\n{B_BUFF3} EXP. Points!\p");
+const u8 gText_EmptyString4[] = _("");
+const u8 gText_ABoosted[] = _(" a boosted");
+const u8 gText_PkmnGrewToLv[] = _("{B_BUFF1} grew to\nLV. {B_BUFF2}!{UNKNOWN_A}\p");
+const u8 gText_PkmnLearnedMove[] = _("{B_BUFF1} learned\n{B_BUFF2}!{UNKNOWN_A}\p");
+const u8 gText_TryToLearnMove1[] = _("{B_BUFF1} is trying to\nlearn {B_BUFF2}.\p");
+const u8 gText_TryToLearnMove2[] = _("But, {B_BUFF1} can’t learn\nmore than four moves.\p");
+const u8 gText_TryToLearnMove3[] = _("Delete a move to make\nroom for {B_BUFF2}?");
+const u8 gText_PkmnForgotMove[] = _("{B_BUFF1} forgot\n{B_BUFF2}.\p");
+const u8 gText_StopLearningMove[] = _("{PAUSE 32}Stop learning\n{B_BUFF2}?");
+const u8 gText_DidNotLearnMove[] = _("{B_BUFF1} did not learn\n{B_BUFF2}.\p");
+const u8 gText_UseNextPkmn[] = _("Use next POKéMON?");
+const u8 gText_AttackMissed[] = _("{B_ATK_NAME_WITH_PREFIX}’s\nattack missed!");
+const u8 gText_PkmnProtectedItself[] = _("{B_DEF_NAME_WITH_PREFIX}\nprotected itself!");
+const u8 gText_AvoidedDamage[] = _("{B_DEF_NAME_WITH_PREFIX} avoided\ndamage with {B_DEF_ABILITY}!");
+const u8 gText_PkmnMakesGroundMiss[] = _("{B_DEF_NAME_WITH_PREFIX} makes GROUND\nmoves miss with {B_DEF_ABILITY}!");
+const u8 gText_PkmnAvoidedAttack[] = _("{B_DEF_NAME_WITH_PREFIX} avoided\nthe attack!");
+const u8 gText_ItDoesntAffect[] = _("It doesn’t affect\n{B_DEF_NAME_WITH_PREFIX}…");
+const u8 gText_AttackerFainted[] = _("{B_ATK_NAME_WITH_PREFIX}\nfainted!\p");
+const u8 gText_TargetFainted[] = _("{B_DEF_NAME_WITH_PREFIX}\nfainted!\p");
+const u8 gText_PlayerGotMoney[] = _("{B_PLAYER_NAME} got ¥{B_BUFF1}\nfor winning!\p");
+const u8 gText_PlayerWhiteout[] = _("{B_PLAYER_NAME} is out of\nusable POKéMON!\p");
+const u8 gText_PlayerWhiteout2[] = _("{B_PLAYER_NAME} whited out!{PAUSE_UNTIL_PRESS}");
+const u8 gText_PreventsEscape[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} prevents\nescape with {B_SCR_ACTIVE_ABILITY}!\p");
+const u8 gText_CantEscape2[] = _("Can’t escape!\p");
+const u8 gText_AttackerCantEscape[] = _("{B_ATK_NAME_WITH_PREFIX} can’t escape!");
+const u8 gText_HitXTimes[] = _("Hit {B_BUFF1} time(s)!");
+const u8 gText_PkmnFellAsleep[] = _("{B_EFF_NAME_WITH_PREFIX}\nfell asleep!");
+const u8 gText_PkmnMadeSleep[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nmade {B_EFF_NAME_WITH_PREFIX} sleep!");
+const u8 gText_PkmnAlreadyAsleep[] = _("{B_DEF_NAME_WITH_PREFIX} is\nalready asleep!");
+const u8 gText_PkmnAlreadyAsleep2[] = _("{B_ATK_NAME_WITH_PREFIX} is\nalready asleep!");
+const u8 gText_PkmnWasntAffected[] = _("{B_DEF_NAME_WITH_PREFIX}\nwasn’t affected!");
+const u8 gText_PkmnWasPoisoned[] = _("{B_EFF_NAME_WITH_PREFIX}\nwas poisoned!");
+const u8 gText_PkmnPoisonedBy[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\npoisoned {B_EFF_NAME_WITH_PREFIX}!");
+const u8 gText_PkmnHurtByPoison[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt\nby poison!");
+const u8 gText_PkmnAlreadyPoisoned[] = _("{B_DEF_NAME_WITH_PREFIX} is already\npoisoned.");
+const u8 gText_PkmnBadlyPoisoned[] = _("{B_EFF_NAME_WITH_PREFIX} is badly\npoisoned!");
+const u8 gText_PkmnEnergyDrained[] = _("{B_DEF_NAME_WITH_PREFIX} had its\nenergy drained!");
+const u8 gText_PkmnWasBurned[] = _("{B_EFF_NAME_WITH_PREFIX} was burned!");
+const u8 gText_PkmnBurnedBy[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nburned {B_EFF_NAME_WITH_PREFIX}!");
+const u8 gText_PkmnHurtByBurn[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt\nby its burn!");
+const u8 gText_PkmnAlreadyHasBurn[] = _("{B_DEF_NAME_WITH_PREFIX} already\nhas a burn.");
+const u8 gText_PkmnWasFrozen[] = _("{B_EFF_NAME_WITH_PREFIX} was\nfrozen solid!");
+const u8 gText_PkmnFrozenBy[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nfroze {B_EFF_NAME_WITH_PREFIX} solid!");
+const u8 gText_PkmnIsFrozen[] = _("{B_ATK_NAME_WITH_PREFIX} is\nfrozen solid!");
+const u8 gText_PkmnWasDefrosted[] = _("{B_DEF_NAME_WITH_PREFIX} was\ndefrosted!");
+const u8 gText_PkmnWasDefrosted2[] = _("{B_ATK_NAME_WITH_PREFIX} was\ndefrosted!");
+const u8 gText_PkmnWasDefrostedBy[] = _("{B_ATK_NAME_WITH_PREFIX} was\ndefrosted by {B_CURRENT_MOVE}!");
+const u8 gText_PkmnWasParalyzed[] = _("{B_EFF_NAME_WITH_PREFIX} is paralyzed!\nIt may be unable to move!");
+const u8 gText_PkmnWasParalyzedBy[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nparalyzed {B_EFF_NAME_WITH_PREFIX}!\lIt may be unable to move!");
+const u8 gText_PkmnIsParalyzed[] = _("{B_ATK_NAME_WITH_PREFIX} is paralyzed!\nIt can’t move!");
+const u8 gText_PkmnIsAlreadyParalyzed[] = _("{B_DEF_NAME_WITH_PREFIX} is\nalready paralyzed!");
+const u8 gText_PkmnHealedParalysis[] = _("{B_DEF_NAME_WITH_PREFIX} was\nhealed of paralysis!");
+const u8 gText_PkmnDreamEaten[] = _("{B_DEF_NAME_WITH_PREFIX}’s\ndream was eaten!");
+const u8 gText_StatsWontIncrease[] = _("{B_ATK_NAME_WITH_PREFIX}’s {B_BUFF1}\nwon’t go higher!");
+const u8 gText_StatsWontDecrease[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_BUFF1}\nwon’t go lower!");
+const u8 gText_TeamStoppedWorking[] = _("Your team’s {B_BUFF1}\nstopped working!");
+const u8 gText_FoeStoppedWorking[] = _("The foe’s {B_BUFF1}\nstopped working!");
+const u8 gText_PkmnIsConfused[] = _("{B_ATK_NAME_WITH_PREFIX} is\nconfused!");
+const u8 gText_PkmnHealedConfusion[] = _("{B_ATK_NAME_WITH_PREFIX} snapped\nout of confusion!");
+const u8 gText_PkmnWasConfused[] = _("{B_EFF_NAME_WITH_PREFIX} became\nconfused!");
+const u8 gText_PkmnAlreadyConfused[] = _("{B_DEF_NAME_WITH_PREFIX} is\nalready confused!");
+const u8 gText_PkmnFellInLove[] = _("{B_DEF_NAME_WITH_PREFIX}\nfell in love!");
+const u8 gText_PkmnInLove[] = _("{B_ATK_NAME_WITH_PREFIX} is in love\nwith {B_SCR_ACTIVE_NAME_WITH_PREFIX}!");
+const u8 gText_PkmnImmobilizedByLove[] = _("{B_ATK_NAME_WITH_PREFIX} is\nimmobilized by love!");
+const u8 gText_PkmnBlownAway[] = _("{B_DEF_NAME_WITH_PREFIX} was\nblown away!");
+const u8 gText_PkmnChangedType[] = _("{B_ATK_NAME_WITH_PREFIX} transformed\ninto the {B_BUFF1} type!");
+const u8 gText_PkmnFlinched[] = _("{B_ATK_NAME_WITH_PREFIX} flinched!");
+const u8 gText_PkmnRegainedHealth[] = _("{B_DEF_NAME_WITH_PREFIX} regained\nhealth!");
+const u8 gText_PkmnHPFull[] = _("{B_DEF_NAME_WITH_PREFIX}’s\nHP is full!");
+const u8 gText_PkmnRaisedSpDef[] = _("{B_ATK_PREFIX2}’s {B_CURRENT_MOVE}\nraised SP. DEF!");
+const u8 gText_PkmnRaisedSpDefALittle[] = _("{B_ATK_PREFIX2}’s {B_CURRENT_MOVE}\nraised SP. DEF a little!");
+const u8 gText_PkmnRaisedDef[] = _("{B_ATK_PREFIX2}’s {B_CURRENT_MOVE}\nraised DEFENSE!");
+const u8 gText_PkmnRaisedDefALittle[] = _("{B_ATK_PREFIX2}’s {B_CURRENT_MOVE}\nraised DEFENSE a little!");
+const u8 gText_PkmnCoveredByVeil[] = _("{B_ATK_PREFIX2}’s party is covered\nby a veil!");
+const u8 gText_PkmnUsedSafeguard[] = _("{B_DEF_NAME_WITH_PREFIX}’s party is protected\nby SAFEGUARD!");
+const u8 gText_PkmnSafeguardExpired[] = _("{B_ATK_PREFIX3}’s party is no longer\nprotected by SAFEGUARD!");
+const u8 gText_PkmnWentToSleep[] = _("{B_ATK_NAME_WITH_PREFIX} went\nto sleep!");
+const u8 gText_PkmnSleptHealthy[] = _("{B_ATK_NAME_WITH_PREFIX} slept and\nbecame healthy!");
+const u8 gText_PkmnWhippedWhirlwind[] = _("{B_ATK_NAME_WITH_PREFIX} whipped\nup a whirlwind!");
+const u8 gText_PkmnTookSunlight[] = _("{B_ATK_NAME_WITH_PREFIX} took\nin sunlight!");
+const u8 gText_PkmnLoweredHead[] = _("{B_ATK_NAME_WITH_PREFIX} lowered\nits head!");
+const u8 gText_PkmnIsGlowing[] = _("{B_ATK_NAME_WITH_PREFIX} is glowing!");
+const u8 gText_PkmnFlewHigh[] = _("{B_ATK_NAME_WITH_PREFIX} flew\nup high!");
+const u8 gText_PkmnDugHole[] = _("{B_ATK_NAME_WITH_PREFIX} dug a hole!");
+const u8 gText_PkmnHidUnderwater[] = _("{B_ATK_NAME_WITH_PREFIX} hid\nunderwater!");
+const u8 gText_PkmnSprangUp[] = _("{B_ATK_NAME_WITH_PREFIX} sprang up!");
+const u8 gText_PkmnSqueezedByBind[] = _("{B_DEF_NAME_WITH_PREFIX} was squeezed by\n{B_ATK_NAME_WITH_PREFIX}’s BIND!");
+const u8 gText_PkmnTrappedInVortex[] = _("{B_DEF_NAME_WITH_PREFIX} was trapped\nin the vortex!");
+const u8 gText_PkmnTrappedBySandTomb[] = _("{B_DEF_NAME_WITH_PREFIX} was trapped\nby SAND TOMB!");
+const u8 gText_PkmnWrappedBy[] = _("{B_DEF_NAME_WITH_PREFIX} was WRAPPED by\n{B_ATK_NAME_WITH_PREFIX}!");
+const u8 gText_PkmnClamped[] = _("{B_ATK_NAME_WITH_PREFIX} CLAMPED\n{B_DEF_NAME_WITH_PREFIX}!");
+const u8 gText_PkmnHurtBy[] = _("{B_ATK_NAME_WITH_PREFIX} is hurt\nby {B_BUFF1}!");
+const u8 gText_PkmnFreedFrom[] = _("{B_ATK_NAME_WITH_PREFIX} was freed\nfrom {B_BUFF1}!");
+const u8 gText_PkmnCrashed[] = _("{B_ATK_NAME_WITH_PREFIX} kept going\nand crashed!");
+const u8 gText_PkmnShroudedInMist[] = _("{B_ATK_PREFIX2} became\nshrouded in MIST!");
+const u8 gText_PkmnProtectedByMist[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is protected\nby MIST!");
+const u8 gText_PkmnGettingPumped[] = _("{B_ATK_NAME_WITH_PREFIX} is getting\npumped!");
+const u8 gText_PkmnHitWithRecoil[] = _("{B_ATK_NAME_WITH_PREFIX} is hit\nwith recoil!");
+const u8 gText_PkmnProtectedItself2[] = _("{B_ATK_NAME_WITH_PREFIX} protected\nitself!");
+const u8 gText_PkmnBuffetedBySandstorm[] = _("{B_ATK_NAME_WITH_PREFIX} is buffeted\nby the sandstorm!");
+const u8 gText_PkmnPeltedByHail[] = _("{B_ATK_NAME_WITH_PREFIX} is pelted\nby HAIL!");
+const u8 gText_PkmnsXWoreOff[] = _("{B_ATK_PREFIX1}’s {B_BUFF1}\nwore off!");
+const u8 gText_PkmnSeeded[] = _("{B_DEF_NAME_WITH_PREFIX} was seeded!");
+const u8 gText_PkmnEvadedAttack[] = _("{B_DEF_NAME_WITH_PREFIX} evaded\nthe attack!");
+const u8 gText_PkmnSappedByLeechSeed[] = _("{B_ATK_NAME_WITH_PREFIX}’s health is\nsapped by LEECH SEED!");
+const u8 gText_PkmnFastAsleep[] = _("{B_ATK_NAME_WITH_PREFIX} is fast\nasleep.");
+const u8 gText_PkmnWokeUp[] = _("{B_ATK_NAME_WITH_PREFIX} woke up!");
+const u8 gText_PkmnUproarKeptAwake[] = _("But {B_SCR_ACTIVE_NAME_WITH_PREFIX}’s UPROAR\nkept it awake!");
+const u8 gText_PkmnWokeUpInUproar[] = _("{B_ATK_NAME_WITH_PREFIX} woke up\nin the UPROAR!");
+const u8 gText_PkmnCausedUproar[] = _("{B_ATK_NAME_WITH_PREFIX} caused\nan UPROAR!");
+const u8 gText_PkmnMakingUproar[] = _("{B_ATK_NAME_WITH_PREFIX} is making\nan UPROAR!");
+const u8 gText_PkmnCalmedDown[] = _("{B_ATK_NAME_WITH_PREFIX} calmed down.");
+const u8 gText_PkmnCantSleepInUproar[] = _("But {B_DEF_NAME_WITH_PREFIX} can’t\nsleep in an UPROAR!");
+const u8 gText_PkmnStockpiled[] = _("{B_ATK_NAME_WITH_PREFIX} STOCKPILED\n{B_BUFF1}!");
+const u8 gText_PkmnCantStockpile[] = _("{B_ATK_NAME_WITH_PREFIX} can’t\nSTOCKPILE any more!");
+const u8 gText_PkmnCantSleepInUproar2[] = _("But {B_DEF_NAME_WITH_PREFIX} can’t\nsleep in an UPROAR!");
+const u8 gText_UproarKeptPkmnAwake[] = _("But the UPROAR kept\n{B_DEF_NAME_WITH_PREFIX} awake!");
+const u8 gText_PkmnStayedAwakeUsing[] = _("{B_DEF_NAME_WITH_PREFIX} stayed awake\nusing its {B_DEF_ABILITY}!");
+const u8 gText_PkmnStoringEnergy[] = _("{B_ATK_NAME_WITH_PREFIX} is storing\nenergy!");
+const u8 gText_PkmnUnleashedEnergy[] = _("{B_ATK_NAME_WITH_PREFIX} unleashed\nenergy!");
+const u8 gText_PkmnFatigueConfusion[] = _("{B_ATK_NAME_WITH_PREFIX} became\nconfused due to fatigue!");
+const u8 gText_PkmnPickedUpItem[] = _("{B_PLAYER_NAME} picked up\n¥{B_BUFF1}!\p");
+const u8 gText_PkmnUnaffected[] = _("{B_DEF_NAME_WITH_PREFIX} is\nunaffected!");
+const u8 gText_PkmnTransformedInto[] = _("{B_ATK_NAME_WITH_PREFIX} transformed\ninto {B_BUFF1}!");
+const u8 gText_PkmnMadeSubstitute[] = _("{B_ATK_NAME_WITH_PREFIX} made\na SUBSTITUTE!");
+const u8 gText_PkmnHasSubstitute[] = _("{B_ATK_NAME_WITH_PREFIX} already\nhas a SUBSTITUTE!");
+const u8 gText_SubstituteDamaged[] = _("The SUBSTITUTE took damage\nfor {B_DEF_NAME_WITH_PREFIX}!\p");
+const u8 gText_PkmnSubstituteFaded[] = _("{B_DEF_NAME_WITH_PREFIX}’s\nSUBSTITUTE faded!\p");
+const u8 gText_PkmnMustRecharge[] = _("{B_ATK_NAME_WITH_PREFIX} must\nrecharge!");
+const u8 gText_PkmnRageBuilding[] = _("{B_DEF_NAME_WITH_PREFIX}’s RAGE\nis building!");
+const u8 gText_PkmnMoveWasDisabled[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_BUFF1}\nwas disabled!");
+const u8 gText_PkmnMoveDisabledNoMore[] = _("{B_ATK_NAME_WITH_PREFIX} is disabled\nno more!");
+const u8 gText_PkmnGotEncore[] = _("{B_DEF_NAME_WITH_PREFIX} got\nan ENCORE!");
+const u8 gText_PkmnEncoreEnded[] = _("{B_ATK_NAME_WITH_PREFIX}’s ENCORE\nended!");
+const u8 gText_PkmnTookAim[] = _("{B_ATK_NAME_WITH_PREFIX} took aim\nat {B_DEF_NAME_WITH_PREFIX}!");
+const u8 gText_PkmnSketchedMove[] = _("{B_ATK_NAME_WITH_PREFIX} SKETCHED\n{B_BUFF1}!");
+const u8 gText_PkmnTryingToTakeFoe[] = _("{B_ATK_NAME_WITH_PREFIX} is trying\nto take its foe with it!");
+const u8 gText_PkmnTookFoe[] = _("{B_DEF_NAME_WITH_PREFIX} took\n{B_ATK_NAME_WITH_PREFIX} with it!");
+const u8 gText_PkmnReducedPP[] = _("Reduced {B_DEF_NAME_WITH_PREFIX}’s\n{B_BUFF1} by {B_BUFF2}!");
+const u8 gText_PkmnStoleItem[] = _("{B_ATK_NAME_WITH_PREFIX} stole\n{B_DEF_NAME_WITH_PREFIX}’s {B_LAST_ITEM}!");
+const u8 gText_TargetCantEscapeNow[] = _("{B_DEF_NAME_WITH_PREFIX} can’t\nescape now!");
+const u8 gText_PkmnFellIntoNightmare[] = _("{B_DEF_NAME_WITH_PREFIX} fell into\na NIGHTMARE!");
+const u8 gText_PkmnLockedInNightmare[] = _("{B_ATK_NAME_WITH_PREFIX} is locked\nin a NIGHTMARE!");
+const u8 gText_PkmnLaidCurse[] = _("{B_ATK_NAME_WITH_PREFIX} cut its own HP and\nlaid a CURSE on {B_DEF_NAME_WITH_PREFIX}!");
+const u8 gText_PkmnAfflictedByCurse[] = _("{B_ATK_NAME_WITH_PREFIX} is afflicted\nby the CURSE!");
+const u8 gText_SpikesScattered[] = _("SPIKES were scattered all around\nthe opponent’s side!");
+const u8 gText_PkmnHurtBySpikes[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is hurt\nby SPIKES!");
+const u8 gText_PkmnIdentified[] = _("{B_ATK_NAME_WITH_PREFIX} identified\n{B_DEF_NAME_WITH_PREFIX}!");
+const u8 gText_PkmnPerishCountFell[] = _("{B_ATK_NAME_WITH_PREFIX}’s PERISH count\nfell to {B_BUFF1}!");
+const u8 gText_PkmnBracedItself[] = _("{B_ATK_NAME_WITH_PREFIX} braced\nitself!");
+const u8 gText_PkmnEnduredHit[] = _("{B_DEF_NAME_WITH_PREFIX} ENDURED\nthe hit!");
+const u8 gText_MagnitudeStrength[] = _("MAGNITUDE {B_BUFF1}!");
+const u8 gText_PkmnCutHPMaxedAttack[] = _("{B_ATK_NAME_WITH_PREFIX} cut its own HP\nand maximized ATTACK!");
+const u8 gText_PkmnCopiedStatChanges[] = _("{B_ATK_NAME_WITH_PREFIX} copied\n{B_DEF_NAME_WITH_PREFIX}’s stat changes!");
+const u8 gText_PkmnGotFree[] = _("{B_ATK_NAME_WITH_PREFIX} got free of\n{B_DEF_NAME_WITH_PREFIX}’s {B_BUFF1}!");
+const u8 gText_PkmnShedLeechSeed[] = _("{B_ATK_NAME_WITH_PREFIX} shed\nLEECH SEED!");
+const u8 gText_PkmnBlewAwaySpikes[] = _("{B_ATK_NAME_WITH_PREFIX} blew away\nSPIKES!");
+const u8 gText_PkmnFledFromBattle[] = _("{B_ATK_NAME_WITH_PREFIX} fled from\nbattle!");
+const u8 gText_PkmnForesawAttack[] = _("{B_ATK_NAME_WITH_PREFIX} foresaw\nan attack!");
+const u8 gText_PkmnTookAttack[] = _("{B_DEF_NAME_WITH_PREFIX} took the\n{B_BUFF1} attack!");
+const u8 gText_PkmnChoseXAsDestiny[] = _("{B_ATK_NAME_WITH_PREFIX} chose\n{B_CURRENT_MOVE} as its destiny!");
+const u8 gText_PkmnAttack[] = _("{B_BUFF1}’s attack!");
+const u8 gText_PkmnCenterAttention[] = _("{B_ATK_NAME_WITH_PREFIX} became the\ncenter of attention!");
+const u8 gText_PkmnChargingPower[] = _("{B_ATK_NAME_WITH_PREFIX} began\ncharging power!");
+const u8 gText_NaturePowerTurnedInto[] = _("NATURE POWER turned into\n{B_CURRENT_MOVE}!");
+const u8 gText_PkmnStatusNormal[] = _("{B_ATK_NAME_WITH_PREFIX}’s status\nreturned to normal!");
+const u8 gText_PkmnSubjectedToTorment[] = _("{B_DEF_NAME_WITH_PREFIX} was subjected\nto TORMENT!");
+const u8 gText_PkmnTighteningFocus[] = _("{B_ATK_NAME_WITH_PREFIX} is tightening\nits focus!");
+const u8 gText_PkmnFellForTaunt[] = _("{B_DEF_NAME_WITH_PREFIX} fell for\nthe TAUNT!");
+const u8 gText_PkmnReadyToHelp[] = _("{B_ATK_NAME_WITH_PREFIX} is ready to\nhelp {B_DEF_NAME_WITH_PREFIX}!");
+const u8 gText_PkmnSwitchedItems[] = _("{B_ATK_NAME_WITH_PREFIX} switched\nitems with its opponent!");
+const u8 gText_PkmnObtainedX[] = _("{B_ATK_NAME_WITH_PREFIX} obtained\n{B_BUFF1}.");
+const u8 gText_PkmnObtainedX2[] = _("{B_DEF_NAME_WITH_PREFIX} obtained\n{B_BUFF2}.");
+const u8 gText_PkmnObtainedXYObtainedZ[] = _("{B_ATK_NAME_WITH_PREFIX} obtained\n{B_BUFF1}.\p{B_DEF_NAME_WITH_PREFIX} obtained\n{B_BUFF2}.");
+const u8 gText_PkmnCopiedFoe[] = _("{B_ATK_NAME_WITH_PREFIX} copied\n{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}!");
+const u8 gText_PkmnMadeWish[] = _("{B_ATK_NAME_WITH_PREFIX} made a WISH!");
+const u8 gText_PkmnWishCameTrue[] = _("{B_BUFF1}’s WISH\ncame true!");
+const u8 gText_PkmnPlantedRoots[] = _("{B_ATK_NAME_WITH_PREFIX} planted its roots!");
+const u8 gText_PkmnAbsorbedNutrients[] = _("{B_ATK_NAME_WITH_PREFIX} absorbed\nnutrients with its roots!");
+const u8 gText_PkmnAnchoredItself[] = _("{B_DEF_NAME_WITH_PREFIX} anchored\nitself with its roots!");
+const u8 gText_PkmnWasMadeDrowsy[] = _("{B_ATK_NAME_WITH_PREFIX} made\n{B_DEF_NAME_WITH_PREFIX} drowsy!");
+const u8 gText_PkmnKnockedOff[] = _("{B_ATK_NAME_WITH_PREFIX} knocked off\n{B_DEF_NAME_WITH_PREFIX}’s {B_LAST_ITEM}!");
+const u8 gText_PkmnSwappedAbilities[] = _("{B_ATK_NAME_WITH_PREFIX} swapped abilities\nwith its opponent!");
+const u8 gText_PkmnSealedOpponentMove[] = _("{B_ATK_NAME_WITH_PREFIX} sealed the\nopponent’s move(s)!");
+const u8 gText_PkmnWantsGrudge[] = _("{B_ATK_NAME_WITH_PREFIX} wants the\nopponent to bear a GRUDGE!");
+const u8 gText_PkmnLostPPGrudge[] = _("{B_ATK_NAME_WITH_PREFIX}’s {B_BUFF1} lost\nall its PP due to the GRUDGE!");
+const u8 gText_PkmnShroudedItself[] = _("{B_ATK_NAME_WITH_PREFIX} shrouded\nitself in {B_CURRENT_MOVE}!");
+const u8 gText_PkmnMoveBounced[] = _("{B_ATK_NAME_WITH_PREFIX}’s {B_CURRENT_MOVE}\nwas bounced back by MAGIC COAT!");
+const u8 gText_PkmnWaitsForTarget[] = _("{B_ATK_NAME_WITH_PREFIX} waits for a target\nto make a move!");
+const u8 gText_PkmnSnatchedMove[] = _("{B_DEF_NAME_WITH_PREFIX} SNATCHED\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s move!");
+const u8 gText_ElectricityWeakened[] = _("Electricity’s power was\nweakened!");
+const u8 gText_FireWeakened[] = _("Fire’s power was\nweakened!");
+const u8 gText_XFoundOneY[] = _("{B_ATK_NAME_WITH_PREFIX} found\none {B_LAST_ITEM}!");
+const u8 gText_SoothingAroma[] = _("A soothing aroma wafted\nthrough the area!");
+const u8 gText_ItemsCantBeUsedNow[] = _("Items can’t be used now.{PAUSE 64}");
+const u8 gText_ForXCommaYZ[] = _("For {B_SCR_ACTIVE_NAME_WITH_PREFIX},\n{B_LAST_ITEM} {B_BUFF1}");
+const u8 gText_PkmnUsedXToGetPumped[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} used\n{B_LAST_ITEM} to get pumped!");
+const u8 gText_PkmnLostFocus[] = _("{B_ATK_NAME_WITH_PREFIX} lost its\nfocus and couldn’t move!");
+const u8 gText_PkmnWasDraggedOut[] = _("{B_DEF_NAME_WITH_PREFIX} was\ndragged out!\p");
+const u8 gText_TheWallShattered[] = _("The wall shattered!");
+const u8 gText_ButNoEffect[] = _("But it had no effect!");
+const u8 gText_PkmnHasNoMovesLeft[] = _("{B_ACTIVE_NAME_WITH_PREFIX} has no\nmoves left!\p");
+const u8 gText_PkmnMoveIsDisabled[] = _("{B_ACTIVE_NAME_WITH_PREFIX}’s {B_CURRENT_MOVE}\nis disabled!\p");
+const u8 gText_PkmnCantUseMoveTorment[] = _("{B_ACTIVE_NAME_WITH_PREFIX} can’t use the same\nmove in a row due to the TORMENT!\p");
+const u8 gText_PkmnCantUseMoveTaunt[] = _("{B_ACTIVE_NAME_WITH_PREFIX} can’t use\n{B_CURRENT_MOVE} after the TAUNT!\p");
+const u8 gText_PkmnCantUseMoveSealed[] = _("{B_ACTIVE_NAME_WITH_PREFIX} can’t use the\nsealed {B_CURRENT_MOVE}!\p");
+const u8 gText_PkmnMadeItRain[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nmade it rain!");
+const u8 gText_PkmnRaisedSpeed[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nraised its SPEED!");
+const u8 gText_PkmnProtectedBy[] = _("{B_DEF_NAME_WITH_PREFIX} was protected\nby {B_DEF_ABILITY}!");
+const u8 gText_PkmnPreventsUsage[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nprevents {B_ATK_NAME_WITH_PREFIX}\lfrom using {B_CURRENT_MOVE}!");
+const u8 gText_PkmnRestoredHPUsing[] = _("{B_DEF_NAME_WITH_PREFIX} restored HP\nusing its {B_DEF_ABILITY}!");
+const u8 gText_PkmnsXMadeYUseless[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nmade {B_CURRENT_MOVE} useless!");
+const u8 gText_PkmnChangedTypeWith[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nmade it the {B_BUFF1} type!");
+const u8 gText_PkmnPreventsParalysisWith[] = _("{B_EFF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nprevents paralysis!");
+const u8 gText_PkmnPreventsRomanceWith[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nprevents romance!");
+const u8 gText_PkmnPreventsPoisoningWith[] = _("{B_EFF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nprevents poisoning!");
+const u8 gText_PkmnPreventsConfusionWith[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nprevents confusion!");
+const u8 gText_PkmnRaisedFirePowerWith[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nraised its FIRE power!");
+const u8 gText_PkmnAnchorsItselfWith[] = _("{B_DEF_NAME_WITH_PREFIX} anchors\nitself with {B_DEF_ABILITY}!");
+const u8 gText_PkmnCutsAttackWith[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\ncuts {B_DEF_NAME_WITH_PREFIX}’s ATTACK!");
+const u8 gText_PkmnPreventsStatLossWith[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nprevents stat loss!");
+const u8 gText_PkmnHurtsWith[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nhurt {B_ATK_NAME_WITH_PREFIX}!");
+const u8 gText_PkmnTraced[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} TRACED\n{B_BUFF1}’s {B_BUFF2}!");
+const u8 gText_PkmnsXPreventsBurns[] = _("{B_EFF_NAME_WITH_PREFIX}’s {B_EFF_ABILITY}\nprevents burns!");
+const u8 gText_PkmnsXBlocksY[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nblocks {B_CURRENT_MOVE}!");
+const u8 gText_PkmnsXBlocksY2[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nblocks {B_CURRENT_MOVE}!");
+const u8 gText_PkmnsXRestoredHPALittle2[] = _("{B_ATK_NAME_WITH_PREFIX}’s {B_ATK_ABILITY}\nrestored its HP a little!");
+const u8 gText_PkmnsXWhippedUpSandstorm[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nwhipped up a sandstorm!");
+const u8 gText_PkmnsXIntensifiedSun[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nintensified the sun’s rays!");
+const u8 gText_PkmnsXPreventsYLoss[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nprevents {B_BUFF1} loss!");
+const u8 gText_PkmnsXInfatuatedY[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\ninfatuated {B_ATK_NAME_WITH_PREFIX}!");
+const u8 gText_PkmnsXMadeYIneffective[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nmade {B_CURRENT_MOVE} ineffective!");
+const u8 gText_PkmnsXCuredYProblem[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\ncured its {B_BUFF1} problem!");
+const u8 gText_ItSuckedLiquidOoze[] = _("It sucked up the\nLIQUID OOZE!");
+const u8 gText_PkmnTransformed[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} transformed!");
+const u8 gText_PkmnsXTookAttack[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\ntook the attack!");
+const u8 gText_PkmnsXPreventsSwitching[] = _("{B_BUFF1}’s {B_LAST_ABILITY}\nprevents switching!\p");
+const u8 gText_PreventedFromWorking[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_DEF_ABILITY}\nprevented {B_SCR_ACTIVE_NAME_WITH_PREFIX}’s\l{B_BUFF1} from working!");
+const u8 gText_PkmnsXMadeItIneffective[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nmade it ineffective!");
+const u8 gText_PkmnsXPreventsFlinching[] = _("{B_EFF_NAME_WITH_PREFIX}’s {B_EFF_ABILITY}\nprevents flinching!");
+const u8 gText_PkmnsXPreventsYsZ[] = _("{B_ATK_NAME_WITH_PREFIX}’s {B_ATK_ABILITY}\nprevents {B_DEF_NAME_WITH_PREFIX}’s\l{B_DEF_ABILITY} from working!");
+const u8 gText_PkmnsXCuredItsYProblem[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\ncured its {B_BUFF1} problem!");
+const u8 gText_PkmnsXHadNoEffectOnY[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_SCR_ACTIVE_ABILITY}\nhad no effect on {B_EFF_NAME_WITH_PREFIX}!");
+const u8 gText_StatSharply[] = _("sharply ");
+const u8 gText_StatRose[] = _("rose!");
+const u8 gText_StatHarshly[] = _("harshly ");
+const u8 gText_StatFell[] = _("fell!");
+const u8 gText_PkmnsStatChanged[] = _("{B_ATK_NAME_WITH_PREFIX}’s {B_BUFF1}\n{B_BUFF2}");
+const u8 gText_PkmnsStatChanged2[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_BUFF1}\n{B_BUFF2}");
+const u8 gText_UsingXTheYOfZN[] = _("Using {B_LAST_ITEM}, the {B_BUFF1}\nof {B_SCR_ACTIVE_NAME_WITH_PREFIX} {B_BUFF2}");
+const u8 gText_PkmnsStatChanged3[] = _("{B_ATK_NAME_WITH_PREFIX}’s {B_BUFF1}\n{B_BUFF2}");
+const u8 gText_PkmnsStatChanged4[] = _("{B_DEF_NAME_WITH_PREFIX}’s {B_BUFF1}\n{B_BUFF2}");
+const u8 gText_StatsWontIncrease2[] = _("{B_ATK_NAME_WITH_PREFIX}’s stats won’t\ngo any higher!");
+const u8 gText_StatsWontDecrease2[] = _("{B_DEF_NAME_WITH_PREFIX}’s stats won’t\ngo any lower!");
+const u8 gText_CriticalHit[] = _("A critical hit!");
+const u8 gText_OneHitKO[] = _("It’s a one-hit KO!");
+const u8 gText_123Poof[] = _("{PAUSE 32}1, {PAUSE 15}2, and{PAUSE 15}… {PAUSE 15}… {PAUSE 15}… {PAUSE 15}{PLAY_SE 0x0038}Poof!\p");
+const u8 gText_AndEllipsis[] = _("And…\p");
+const u8 gText_HMMovesCantBeForgotten[] = _("HM moves can’t be\nforgotten now.\p");
+const u8 gText_NotVeryEffective[] = _("It’s not very effective…");
+const u8 gText_SuperEffective[] = _("It’s super effective!");
+const u8 gText_GotAwaySafely[] = _("{PLAY_SE 0x0011}Got away safely!\p");
+const u8 gText_PkmnFledUsingIts[] = _("{PLAY_SE 0x0011}{B_ATK_NAME_WITH_PREFIX} fled\nusing its {B_LAST_ITEM}!\p");
+const u8 gText_PkmnFledUsing[] = _("{PLAY_SE 0x0011}{B_ATK_NAME_WITH_PREFIX} fled\nusing {B_ATK_ABILITY}!\p");
+const u8 gText_WildPkmnFled[] = _("{PLAY_SE 0x0011}Wild {B_BUFF1} fled!");
+const u8 gText_PlayerDefeatedLinkTrainer[] = _("Player defeated\n{B_20}!");
+const u8 gText_TwoLinkTrainersDefeated[] = _("Player beat {B_20}\nand {B_21}!");
+const u8 gText_PlayerLostAgainstLinkTrainer[] = _("Player lost against\n{B_20}!");
+const u8 gText_PlayerLostToTwo[] = _("Player lost to {B_20}\nand {B_21}!");
+const u8 gText_PlayerBattledToDrawLinkTrainer[] = _("Player battled to a draw against\n{B_20}!");
+const u8 gText_PlayerBattledToDrawVsTwo[] = _("Player battled to a draw against\n{B_20} and {B_21}!");
+const u8 gText_WildFled[] = _("{PLAY_SE 0x0011}{B_20} fled!");
+const u8 gText_TwoWildFled[] = _("{PLAY_SE 0x0011}{B_20} and\n{B_21} fled!");
+const u8 gText_NoRunningFromTrainers[] = _("No! There’s no running\nfrom a TRAINER battle!\p");
+const u8 gText_CantEscape[] = _("Can’t escape!\p");
+const u8 gText_DontLeaveBirch[] = _("PROF. BIRCH: Don’t leave me like this!\p");
+const u8 gText_ButNothingHappened[] = _("But nothing happened!");
+const u8 gText_ButItFailed[] = _("But it failed!");
+const u8 gText_ItHurtConfusion[] = _("It hurt itself in its\nconfusion!");
+const u8 gText_MirrorMoveFailed[] = _("The MIRROR MOVE failed!");
+const u8 gText_StartedToRain[] = _("It started to rain!");
+const u8 gText_DownpourStarted[] = _("A downpour started!");
+const u8 gText_RainContinues[] = _("Rain continues to fall.");
+const u8 gText_DownpourContinues[] = _("The downpour continues.");
+const u8 gText_RainStopped[] = _("The rain stopped.");
+const u8 gText_SandstormBrewed[] = _("A sandstorm brewed!");
+const u8 gText_SandstormRages[] = _("The sandstorm rages.");
+const u8 gText_SandstormSubsided[] = _("The sandstorm subsided.");
+const u8 gText_SunlightGotBright[] = _("The sunlight got bright!");
+const u8 gText_SunlightStrong[] = _("The sunlight is strong.");
+const u8 gText_SunlightFaded[] = _("The sunlight faded.");
+const u8 gText_StartedHail[] = _("It started to hail!");
+const u8 gText_HailContinues[] = _("Hail continues to fall.");
+const u8 gText_HailStopped[] = _("The hail stopped.");
+const u8 gText_FailedToSpitUp[] = _("But it failed to SPIT UP\na thing!");
+const u8 gText_FailedToSwallow[] = _("But it failed to SWALLOW\na thing!");
+const u8 gText_WindBecameHeatWave[] = _("The wind turned into a\nHEAT WAVE!");
+const u8 gText_StatChangesGone[] = _("All stat changes were\neliminated!");
+const u8 gText_CoinsScattered[] = _("Coins scattered everywhere!");
+const u8 gText_TooWeakForSubstitute[] = _("It was too weak to make\na SUBSTITUTE!");
+const u8 gText_SharedPain[] = _("The battlers shared\ntheir pain!");
+const u8 gText_BellChimed[] = _("A bell chimed!");
+const u8 gText_FaintInThree[] = _("All affected POKéMON will\nfaint in three turns!");
+const u8 gText_NoPPLeft[] = _("There’s no PP left for\nthis move!\p");
+const u8 gText_ButNoPPLeft[] = _("But there was no PP left\nfor the move!");
+const u8 gText_PkmnIgnoresAsleep[] = _("{B_ATK_NAME_WITH_PREFIX} ignored\norders while asleep!");
+const u8 gText_PkmnIgnoredOrders[] = _("{B_ATK_NAME_WITH_PREFIX} ignored\norders!");
+const u8 gText_PkmnBeganToNap[] = _("{B_ATK_NAME_WITH_PREFIX} began to nap!");
+const u8 gText_PkmnLoafing[] = _("{B_ATK_NAME_WITH_PREFIX} is\nloafing around!");
+const u8 gText_PkmnWontObey[] = _("{B_ATK_NAME_WITH_PREFIX} won’t\nobey!");
+const u8 gText_PkmnTurnedAway[] = _("{B_ATK_NAME_WITH_PREFIX} turned away!");
+const u8 gText_PkmnPretendNotNotice[] = _("{B_ATK_NAME_WITH_PREFIX} pretended\nnot to notice!");
+const u8 gText_EnemyAboutToSwitchPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} is\nabout to use {B_BUFF2}.\pWill {B_PLAYER_NAME} change\nPOKéMON?");
+const u8 gText_PkmnLearnedMove2[] = _("{B_ATK_NAME_WITH_PREFIX} learned\n{B_BUFF1}!");
+const u8 gText_PlayerDefeatedLinkTrainerTrainer1[] = _("Player defeated\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!\p");
+const u8 gText_CreptCloser[] = _("{B_PLAYER_NAME} crept closer to\n{B_OPPONENT_MON1_NAME}!");
+const u8 gText_CantGetCloser[] = _("{B_PLAYER_NAME} can’t get any closer!");
+const u8 gText_PkmnWatchingCarefully[] = _("{B_OPPONENT_MON1_NAME} is watching\ncarefully!");
+const u8 gText_PkmnCuriousAboutX[] = _("{B_OPPONENT_MON1_NAME} is curious about\nthe {B_BUFF1}!");
+const u8 gText_PkmnEnthralledByX[] = _("{B_OPPONENT_MON1_NAME} is enthralled by\nthe {B_BUFF1}!");
+const u8 gText_PkmnIgnoredX[] = _("{B_OPPONENT_MON1_NAME} completely ignored\nthe {B_BUFF1}!");
+const u8 gText_ThrewPokeblockAtPkmn[] = _("{B_PLAYER_NAME} threw a {POKEBLOCK}\nat the {B_OPPONENT_MON1_NAME}!");
+const u8 gText_OutOfSafariBalls[] = _("{PLAY_SE 0x0049}ANNOUNCER: You’re out of\nSAFARI BALLS! Game over!\p");
+const u8 gText_OpponentMon1Appeared[] = _("{B_OPPONENT_MON1_NAME} appeared!\p");
+const u8 gText_WildPkmnAppeared[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!\p");
+const u8 gText_WildPkmnAppeared2[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!\p");
+const u8 gText_WildPkmnAppearedPause[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!{PAUSE 127}");
+const u8 gText_TwoWildPkmnAppeared[] = _("Wild {B_OPPONENT_MON1_NAME} and\n{B_OPPONENT_MON2_NAME} appeared!\p");
+const u8 gText_Trainer1WantsToBattle[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\nwould like to battle!\p");
+const u8 gText_LinkTrainerWantsToBattle[] = _("{B_20}\nwants to battle!");
+const u8 gText_TwoLinkTrainersWantToBattle[] = _("{B_20} and {B_21}\nwant to battle!");
+const u8 gText_Trainer1SentOutPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_OPPONENT_MON1_NAME}!");
+const u8 gText_Trainer1SentOutTwoPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_OPPONENT_MON1_NAME} and {B_OPPONENT_MON2_NAME}!");
+const u8 gText_Trainer1SentOutPkmn2[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_BUFF1}!");
+const u8 gText_LinkTrainerSentOutPkmn[] = _("{B_20} sent out\n{B_OPPONENT_MON1_NAME}!");
+const u8 gText_LinkTrainerSentOutTwoPkmn[] = _("{B_20} sent out\n{B_OPPONENT_MON1_NAME} and {B_OPPONENT_MON2_NAME}!");
+const u8 gText_TwoLinkTrainersSentOutPkmn[] = _("{B_20} sent out {B_LINK_OPPONENT_MON1_NAME}!\n{B_21} sent out {B_LINK_OPPONENT_MON2_NAME}!");
+const u8 gText_LinkTrainerSentOutPkmn2[] = _("{B_20} sent out\n{B_BUFF1}!");
+const u8 gText_LinkTrainerMultiSentOutPkmn[] = _("{B_22} sent out\n{B_BUFF1}!");
+const u8 gText_GoPkmn[] = _("Go! {B_PLAYER_MON1_NAME}!");
+const u8 gText_GoTwoPkmn[] = _("Go! {B_PLAYER_MON1_NAME} and\n{B_PLAYER_MON2_NAME}!");
+const u8 gText_GoPkmn2[] = _("Go! {B_BUFF1}!");
+const u8 gText_DoItPkmn[] = _("Do it! {B_BUFF1}!");
+const u8 gText_GoForItPkmn[] = _("Go for it, {B_BUFF1}!");
+const u8 gText_YourFoesWeakGetEmPkmn[] = _("Your foe’s weak!\nGet ’em, {B_BUFF1}!");
+const u8 gText_LinkPartnerSentOutPkmnGoPkmn[] = _("{B_1F} sent out {B_LINK_PLAYER_MON2_NAME}!\nGo! {B_LINK_PLAYER_MON1_NAME}!");
+const u8 gText_PkmnThatsEnough[] = _("{B_BUFF1}, that’s enough!\nCome back!");
+const u8 gText_PkmnComeBack[] = _("{B_BUFF1}, come back!");
+const u8 gText_PkmnOkComeBack[] = _("{B_BUFF1}, OK!\nCome back!");
+const u8 gText_PkmnGoodComeBack[] = _("{B_BUFF1}, good!\nCome back!");
+const u8 gText_Trainer1WithdrewPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\nwithdrew {B_BUFF1}!");
+const u8 gText_LinkTrainer1WithdrewPkmn[] = _("{B_20} withdrew\n{B_BUFF1}!");
+const u8 gText_LinkTrainer2WithdrewPkmn[] = _("{B_22} withdrew\n{B_BUFF1}!");
+const u8 gText_WildPkmnPrefix[] = _("Wild ");
+const u8 gText_FoePkmnPrefix[] = _("Foe ");
+const u8 gText_EmptyString8[] = _( "");
+const u8 gText_FoePkmnPrefix2[] = _("Foe");
+const u8 gText_AllyPkmnPrefix[] = _("Ally");
+const u8 gText_FoePkmnPrefix3[] = _("Foe");
+const u8 gText_AllyPkmnPrefix2[] = _("Ally");
+const u8 gText_FoePkmnPrefix4[] = _("Foe");
+const u8 gText_AllyPkmnPrefix3[] = _("Ally");
+const u8 gText_AttackerUsedX[] = _("{B_ATK_NAME_WITH_PREFIX} used\n{B_BUFF2}");
+const u8 gText_ExclamationMark[] = _("!");
+const u8 gText_ExclamationMark2[] = _("!");
+const u8 gText_ExclamationMark3[] = _("!");
+const u8 gText_ExclamationMark4[] = _("!");
+const u8 gText_ExclamationMark5[] = _("!");
+const u8 gText_HP2[] = _("HP");
+const u8 gText_Attack2[] = _("ATTACK");
+const u8 gText_Defense2[] = _("DEFENSE");
+const u8 gText_Speed[] = _("SPEED");
+const u8 gText_SpAtk2[] = _("SP. ATK");
+const u8 gText_SpDef2[] = _("SP. DEF");
+const u8 gText_Accuracy[] = _("accuracy");
+const u8 gText_Evasiveness[] = _("evasiveness");
+
+const u8 * const gStatNamesTable[] =
+{
+ gText_HP2, gText_Attack2, gText_Defense2,
+ gText_Speed, gText_SpAtk2, gText_SpDef2,
+ gText_Accuracy, gText_Evasiveness
+};
+
+const u8 gText_PokeblockWasTooSpicy[] = _("was too spicy!");
+const u8 gText_PokeblockWasTooDry[] = _("was too dry!");
+const u8 gText_PokeblockWasTooSweet[] = _("was too sweet!");
+const u8 gText_PokeblockWasTooBitter[] = _("was too bitter!");
+const u8 gText_PokeblockWasTooSour[] = _("was too sour!");
+
+const u8 * const gPokeblockWasTooXStringTable[] =
+{
+ gText_PokeblockWasTooSpicy, gText_PokeblockWasTooDry,
+ gText_PokeblockWasTooSweet, gText_PokeblockWasTooBitter,
+ gText_PokeblockWasTooSour
+};
+
+const u8 gText_PlayerUsedItem[] = _("{B_PLAYER_NAME} used\n{B_LAST_ITEM}!");
+const u8 gText_WallyUsedItem[] = _("WALLY used\n{B_LAST_ITEM}!");
+const u8 gText_Trainer1UsedItem[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME}\nused {B_LAST_ITEM}!");
+const u8 gText_TrainerBlockedBall[] = _("The TRAINER blocked the BALL!");
+const u8 gText_DontBeAThief[] = _("Don’t be a thief!");
+const u8 gText_ItDodgedBall[] = _("It dodged the thrown BALL!\nThis POKéMON can’t be caught!");
+const u8 gText_YouMissedPkmn[] = _("You missed the POKéMON!");
+const u8 gText_PkmnBrokeFree[] = _("Oh, no!\nThe POKéMON broke free!");
+const u8 gText_ItAppearedCaught[] = _("Aww!\nIt appeared to be caught!");
+const u8 gText_AarghAlmostHadIt[] = _("Aargh!\nAlmost had it!");
+const u8 gText_ShootSoClose[] = _("Shoot!\nIt was so close, too!");
+const u8 gText_GotchaPkmnCaught[] = _("Gotcha!\n{B_OPPONENT_MON1_NAME} was caught!{UNKNOWN_A}{PLAY_BGM BGM_KACHI22}\p");
+const u8 gText_GotchaPkmnCaught2[] = _("Gotcha!\n{B_OPPONENT_MON1_NAME} was caught!{UNKNOWN_A}{PLAY_BGM BGM_KACHI22}{PAUSE 127}");
+const u8 gText_GiveNicknameCaptured[] = _("Give a nickname to the\ncaptured {B_OPPONENT_MON1_NAME}?");
+const u8 gText_PkmnSentToPC[] = _("{B_OPPONENT_MON1_NAME} was sent to\n{B_PC_CREATOR_NAME} PC.");
+const u8 gText_Someones[] = _("someone’s");
+const u8 gText_Lanettes[] = _("LANETTE’s");
+const u8 gText_PkmnDataAddedToDex[] = _("{B_OPPONENT_MON1_NAME}’s data was\nadded to the POKéDEX.\p");
+const u8 gText_ItIsRaining[] = _("It is raining.");
+const u8 gText_SandstormIsRaging[] = _("A sandstorm is raging.");
+const u8 gText_BoxIsFull[] = _("The BOX is full!\nYou can’t catch any more!\p");
+const u8 gText_EnigmaBerry[] = _("ENIGMA BERRY");
+const u8 gText_BerrySuffix[] = _(" BERRY");
+const u8 gText_PkmnsItemCuredParalysis[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\ncured paralysis!");
+const u8 gText_PkmnsItemCuredPoison[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\ncured poison!");
+const u8 gText_PkmnsItemHealedBurn[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nhealed its burn!");
+const u8 gText_PkmnsItemDefrostedIt[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\ndefrosted it!");
+const u8 gText_PkmnsItemWokeIt[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nwoke it from its sleep!");
+const u8 gText_PkmnsItemSnappedOut[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nsnapped it out of confusion!");
+const u8 gText_PkmnsItemCuredProblem[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\ncured its {B_BUFF1} problem!");
+const u8 gText_PkmnsItemNormalizedStatus[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nnormalized its status!");
+const u8 gText_PkmnsItemRestoredHealth[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nrestored health!");
+const u8 gText_PkmnsItemRestoredPP[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nrestored {B_BUFF1}’s PP!");
+const u8 gText_PkmnsItemRestoredStatus[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nrestored its status!");
+const u8 gText_PkmnsItemRestoredHPALittle[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s {B_LAST_ITEM}\nrestored its HP a little!");
+const u8 gText_ItemAllowsOnlyYMove[] = _("{B_LAST_ITEM} allows the\nuse of only {B_CURRENT_MOVE}!\p");
+const u8 gText_PkmnHungOnWithX[] = _("{B_DEF_NAME_WITH_PREFIX} hung on\nusing its {B_LAST_ITEM}!");
+const u8 gText_EmptyString3[] = _("");
+const u8 gText_YouThrowABallNowRight[] = _("You throw a BALL now, right?\nI… I’ll do my best!");
+
+// early declaration of strings
+const u8 gText_PkmnIncapableOfPower[];
+const u8 gText_GlintAppearsInEye[];
+const u8 gText_PkmnGettingIntoPosition[];
+const u8 gText_PkmnBeganGrowlingDeeply[];
+const u8 gText_PkmnEagerForMore[];
+const u8 gText_DefeatedOpponentByReferee[];
+const u8 gText_LostToOpponentByReferee[];
+const u8 gText_TiedOpponentByReferee[];
+const u8 gText_QuestionForfeitMatch[];
+const u8 gText_ForfeitedMatch[];
+const u8 gText_Trainer1WinText[];
+const u8 gText_Trainer2WinText[];
+const u8 gText_TwoInGameTrainersDefeated[];
+const u8 gText_Trainer2LoseText[];
+
+const u8 * const gBattleStringsTable[BATTLESTRINGS_COUNT] =
+{
+ gText_Trainer1LoseText,
+ gText_PkmnGainedEXP,
+ gText_PkmnGrewToLv,
+ gText_PkmnLearnedMove,
+ gText_TryToLearnMove1,
+ gText_TryToLearnMove2,
+ gText_TryToLearnMove3,
+ gText_PkmnForgotMove,
+ gText_StopLearningMove,
+ gText_DidNotLearnMove,
+ gText_PkmnLearnedMove2,
+ gText_AttackMissed,
+ gText_PkmnProtectedItself,
+ gText_StatsWontIncrease2,
+ gText_AvoidedDamage,
+ gText_ItDoesntAffect,
+ gText_AttackerFainted,
+ gText_TargetFainted,
+ gText_PlayerGotMoney,
+ gText_PlayerWhiteout,
+ gText_PlayerWhiteout2,
+ gText_PreventsEscape,
+ gText_HitXTimes,
+ gText_PkmnFellAsleep,
+ gText_PkmnMadeSleep,
+ gText_PkmnAlreadyAsleep,
+ gText_PkmnAlreadyAsleep2,
+ gText_PkmnWasntAffected,
+ gText_PkmnWasPoisoned,
+ gText_PkmnPoisonedBy,
+ gText_PkmnHurtByPoison,
+ gText_PkmnAlreadyPoisoned,
+ gText_PkmnBadlyPoisoned,
+ gText_PkmnEnergyDrained,
+ gText_PkmnWasBurned,
+ gText_PkmnBurnedBy,
+ gText_PkmnHurtByBurn,
+ gText_PkmnWasFrozen,
+ gText_PkmnFrozenBy,
+ gText_PkmnIsFrozen,
+ gText_PkmnWasDefrosted,
+ gText_PkmnWasDefrosted2,
+ gText_PkmnWasDefrostedBy,
+ gText_PkmnWasParalyzed,
+ gText_PkmnWasParalyzedBy,
+ gText_PkmnIsParalyzed,
+ gText_PkmnIsAlreadyParalyzed,
+ gText_PkmnHealedParalysis,
+ gText_PkmnDreamEaten,
+ gText_StatsWontIncrease,
+ gText_StatsWontDecrease,
+ gText_TeamStoppedWorking,
+ gText_FoeStoppedWorking,
+ gText_PkmnIsConfused,
+ gText_PkmnHealedConfusion,
+ gText_PkmnWasConfused,
+ gText_PkmnAlreadyConfused,
+ gText_PkmnFellInLove,
+ gText_PkmnInLove,
+ gText_PkmnImmobilizedByLove,
+ gText_PkmnBlownAway,
+ gText_PkmnChangedType,
+ gText_PkmnFlinched,
+ gText_PkmnRegainedHealth,
+ gText_PkmnHPFull,
+ gText_PkmnRaisedSpDef,
+ gText_PkmnRaisedDef,
+ gText_PkmnCoveredByVeil,
+ gText_PkmnUsedSafeguard,
+ gText_PkmnSafeguardExpired,
+ gText_PkmnWentToSleep,
+ gText_PkmnSleptHealthy,
+ gText_PkmnWhippedWhirlwind,
+ gText_PkmnTookSunlight,
+ gText_PkmnLoweredHead,
+ gText_PkmnIsGlowing,
+ gText_PkmnFlewHigh,
+ gText_PkmnDugHole,
+ gText_PkmnSqueezedByBind,
+ gText_PkmnTrappedInVortex,
+ gText_PkmnWrappedBy,
+ gText_PkmnClamped,
+ gText_PkmnHurtBy,
+ gText_PkmnFreedFrom,
+ gText_PkmnCrashed,
+ gText_PkmnShroudedInMist,
+ gText_PkmnProtectedByMist,
+ gText_PkmnGettingPumped,
+ gText_PkmnHitWithRecoil,
+ gText_PkmnProtectedItself2,
+ gText_PkmnBuffetedBySandstorm,
+ gText_PkmnPeltedByHail,
+ gText_PkmnSeeded,
+ gText_PkmnEvadedAttack,
+ gText_PkmnSappedByLeechSeed,
+ gText_PkmnFastAsleep,
+ gText_PkmnWokeUp,
+ gText_PkmnUproarKeptAwake,
+ gText_PkmnWokeUpInUproar,
+ gText_PkmnCausedUproar,
+ gText_PkmnMakingUproar,
+ gText_PkmnCalmedDown,
+ gText_PkmnCantSleepInUproar,
+ gText_PkmnStockpiled,
+ gText_PkmnCantStockpile,
+ gText_PkmnCantSleepInUproar2,
+ gText_UproarKeptPkmnAwake,
+ gText_PkmnStayedAwakeUsing,
+ gText_PkmnStoringEnergy,
+ gText_PkmnUnleashedEnergy,
+ gText_PkmnFatigueConfusion,
+ gText_PkmnPickedUpItem,
+ gText_PkmnUnaffected,
+ gText_PkmnTransformedInto,
+ gText_PkmnMadeSubstitute,
+ gText_PkmnHasSubstitute,
+ gText_SubstituteDamaged,
+ gText_PkmnSubstituteFaded,
+ gText_PkmnMustRecharge,
+ gText_PkmnRageBuilding,
+ gText_PkmnMoveWasDisabled,
+ gText_PkmnMoveIsDisabled,
+ gText_PkmnMoveDisabledNoMore,
+ gText_PkmnGotEncore,
+ gText_PkmnEncoreEnded,
+ gText_PkmnTookAim,
+ gText_PkmnSketchedMove,
+ gText_PkmnTryingToTakeFoe,
+ gText_PkmnTookFoe,
+ gText_PkmnReducedPP,
+ gText_PkmnStoleItem,
+ gText_TargetCantEscapeNow,
+ gText_PkmnFellIntoNightmare,
+ gText_PkmnLockedInNightmare,
+ gText_PkmnLaidCurse,
+ gText_PkmnAfflictedByCurse,
+ gText_SpikesScattered,
+ gText_PkmnHurtBySpikes,
+ gText_PkmnIdentified,
+ gText_PkmnPerishCountFell,
+ gText_PkmnBracedItself,
+ gText_PkmnEnduredHit,
+ gText_MagnitudeStrength,
+ gText_PkmnCutHPMaxedAttack,
+ gText_PkmnCopiedStatChanges,
+ gText_PkmnGotFree,
+ gText_PkmnShedLeechSeed,
+ gText_PkmnBlewAwaySpikes,
+ gText_PkmnFledFromBattle,
+ gText_PkmnForesawAttack,
+ gText_PkmnTookAttack,
+ gText_PkmnAttack,
+ gText_PkmnCenterAttention,
+ gText_PkmnChargingPower,
+ gText_NaturePowerTurnedInto,
+ gText_PkmnStatusNormal,
+ gText_PkmnHasNoMovesLeft,
+ gText_PkmnSubjectedToTorment,
+ gText_PkmnCantUseMoveTorment,
+ gText_PkmnTighteningFocus,
+ gText_PkmnFellForTaunt,
+ gText_PkmnCantUseMoveTaunt,
+ gText_PkmnReadyToHelp,
+ gText_PkmnSwitchedItems,
+ gText_PkmnCopiedFoe,
+ gText_PkmnMadeWish,
+ gText_PkmnWishCameTrue,
+ gText_PkmnPlantedRoots,
+ gText_PkmnAbsorbedNutrients,
+ gText_PkmnAnchoredItself,
+ gText_PkmnWasMadeDrowsy,
+ gText_PkmnKnockedOff,
+ gText_PkmnSwappedAbilities,
+ gText_PkmnSealedOpponentMove,
+ gText_PkmnCantUseMoveSealed,
+ gText_PkmnWantsGrudge,
+ gText_PkmnLostPPGrudge,
+ gText_PkmnShroudedItself,
+ gText_PkmnMoveBounced,
+ gText_PkmnWaitsForTarget,
+ gText_PkmnSnatchedMove,
+ gText_PkmnMadeItRain,
+ gText_PkmnRaisedSpeed,
+ gText_PkmnProtectedBy,
+ gText_PkmnPreventsUsage,
+ gText_PkmnRestoredHPUsing,
+ gText_PkmnChangedTypeWith,
+ gText_PkmnPreventsParalysisWith,
+ gText_PkmnPreventsRomanceWith,
+ gText_PkmnPreventsPoisoningWith,
+ gText_PkmnPreventsConfusionWith,
+ gText_PkmnRaisedFirePowerWith,
+ gText_PkmnAnchorsItselfWith,
+ gText_PkmnCutsAttackWith,
+ gText_PkmnPreventsStatLossWith,
+ gText_PkmnHurtsWith,
+ gText_PkmnTraced,
+ gText_StatSharply,
+ gText_StatRose,
+ gText_StatHarshly,
+ gText_StatFell,
+ gText_PkmnsStatChanged,
+ gText_PkmnsStatChanged2,
+ gText_PkmnsStatChanged3,
+ gText_PkmnsStatChanged4,
+ gText_CriticalHit,
+ gText_OneHitKO,
+ gText_123Poof,
+ gText_AndEllipsis,
+ gText_NotVeryEffective,
+ gText_SuperEffective,
+ gText_GotAwaySafely,
+ gText_WildPkmnFled,
+ gText_NoRunningFromTrainers,
+ gText_CantEscape,
+ gText_DontLeaveBirch,
+ gText_ButNothingHappened,
+ gText_ButItFailed,
+ gText_ItHurtConfusion,
+ gText_MirrorMoveFailed,
+ gText_StartedToRain,
+ gText_DownpourStarted,
+ gText_RainContinues,
+ gText_DownpourContinues,
+ gText_RainStopped,
+ gText_SandstormBrewed,
+ gText_SandstormRages,
+ gText_SandstormSubsided,
+ gText_SunlightGotBright,
+ gText_SunlightStrong,
+ gText_SunlightFaded,
+ gText_StartedHail,
+ gText_HailContinues,
+ gText_HailStopped,
+ gText_FailedToSpitUp,
+ gText_FailedToSwallow,
+ gText_WindBecameHeatWave,
+ gText_StatChangesGone,
+ gText_CoinsScattered,
+ gText_TooWeakForSubstitute,
+ gText_SharedPain,
+ gText_BellChimed,
+ gText_FaintInThree,
+ gText_NoPPLeft,
+ gText_ButNoPPLeft,
+ gText_PlayerUsedItem,
+ gText_WallyUsedItem,
+ gText_TrainerBlockedBall,
+ gText_DontBeAThief,
+ gText_ItDodgedBall,
+ gText_YouMissedPkmn,
+ gText_PkmnBrokeFree,
+ gText_ItAppearedCaught,
+ gText_AarghAlmostHadIt,
+ gText_ShootSoClose,
+ gText_GotchaPkmnCaught,
+ gText_GotchaPkmnCaught2,
+ gText_GiveNicknameCaptured,
+ gText_PkmnSentToPC,
+ gText_PkmnDataAddedToDex,
+ gText_ItIsRaining,
+ gText_SandstormIsRaging,
+ gText_CantEscape2,
+ gText_PkmnIgnoresAsleep,
+ gText_PkmnIgnoredOrders,
+ gText_PkmnBeganToNap,
+ gText_PkmnLoafing,
+ gText_PkmnWontObey,
+ gText_PkmnTurnedAway,
+ gText_PkmnPretendNotNotice,
+ gText_EnemyAboutToSwitchPkmn,
+ gText_CreptCloser,
+ gText_CantGetCloser,
+ gText_PkmnWatchingCarefully,
+ gText_PkmnCuriousAboutX,
+ gText_PkmnEnthralledByX,
+ gText_PkmnIgnoredX,
+ gText_ThrewPokeblockAtPkmn,
+ gText_OutOfSafariBalls,
+ gText_PkmnsItemCuredParalysis,
+ gText_PkmnsItemCuredPoison,
+ gText_PkmnsItemHealedBurn,
+ gText_PkmnsItemDefrostedIt,
+ gText_PkmnsItemWokeIt,
+ gText_PkmnsItemSnappedOut,
+ gText_PkmnsItemCuredProblem,
+ gText_PkmnsItemRestoredHealth,
+ gText_PkmnsItemRestoredPP,
+ gText_PkmnsItemRestoredStatus,
+ gText_PkmnsItemRestoredHPALittle,
+ gText_ItemAllowsOnlyYMove,
+ gText_PkmnHungOnWithX,
+ gText_EmptyString3,
+ gText_PkmnsXPreventsBurns,
+ gText_PkmnsXBlocksY,
+ gText_PkmnsXRestoredHPALittle2,
+ gText_PkmnsXWhippedUpSandstorm,
+ gText_PkmnsXPreventsYLoss,
+ gText_PkmnsXInfatuatedY,
+ gText_PkmnsXMadeYIneffective,
+ gText_PkmnsXCuredYProblem,
+ gText_ItSuckedLiquidOoze,
+ gText_PkmnTransformed,
+ gText_ElectricityWeakened,
+ gText_FireWeakened,
+ gText_PkmnHidUnderwater,
+ gText_PkmnSprangUp,
+ gText_HMMovesCantBeForgotten,
+ gText_XFoundOneY,
+ gText_PlayerDefeatedLinkTrainerTrainer1,
+ gText_SoothingAroma,
+ gText_ItemsCantBeUsedNow,
+ gText_ForXCommaYZ,
+ gText_UsingXTheYOfZN,
+ gText_PkmnUsedXToGetPumped,
+ gText_PkmnsXMadeYUseless,
+ gText_PkmnTrappedBySandTomb,
+ gText_EmptyString4,
+ gText_ABoosted,
+ gText_PkmnsXIntensifiedSun,
+ gText_PkmnMakesGroundMiss,
+ gText_YouThrowABallNowRight,
+ gText_PkmnsXTookAttack,
+ gText_PkmnChoseXAsDestiny,
+ gText_PkmnLostFocus,
+ gText_UseNextPkmn,
+ gText_PkmnFledUsingIts,
+ gText_PkmnFledUsing,
+ gText_PkmnWasDraggedOut,
+ gText_PreventedFromWorking,
+ gText_PkmnsItemNormalizedStatus,
+ gText_Trainer1UsedItem,
+ gText_BoxIsFull,
+ gText_PkmnAvoidedAttack,
+ gText_PkmnsXMadeItIneffective,
+ gText_PkmnsXPreventsFlinching,
+ gText_PkmnAlreadyHasBurn,
+ gText_StatsWontDecrease2,
+ gText_PkmnsXBlocksY2,
+ gText_PkmnsXWoreOff,
+ gText_PkmnRaisedDefALittle,
+ gText_PkmnRaisedSpDefALittle,
+ gText_TheWallShattered,
+ gText_PkmnsXPreventsYsZ,
+ gText_PkmnsXCuredItsYProblem,
+ gText_AttackerCantEscape,
+ gText_PkmnObtainedX,
+ gText_PkmnObtainedX2,
+ gText_PkmnObtainedXYObtainedZ,
+ gText_ButNoEffect,
+ gText_PkmnsXHadNoEffectOnY,
+ gText_TwoInGameTrainersDefeated,
+ gText_Trainer2LoseText,
+ gText_PkmnIncapableOfPower,
+ gText_GlintAppearsInEye,
+ gText_PkmnGettingIntoPosition,
+ gText_PkmnBeganGrowlingDeeply,
+ gText_PkmnEagerForMore,
+ gText_DefeatedOpponentByReferee,
+ gText_LostToOpponentByReferee,
+ gText_TiedOpponentByReferee,
+ gText_QuestionForfeitMatch,
+ gText_ForfeitedMatch,
+ gText_PkmnTransferredSomeonesPC,
+ gText_PkmnTransferredLanettesPC,
+ gText_PkmnBoxSomeonesPCFull,
+ gText_PkmnBoxLanettesPCFull,
+ gText_Trainer1WinText,
+ gText_Trainer2WinText,
+};
+
+const u16 gMissStringIds[] =
+{
+ STRINGID_ATTACKMISSED, STRINGID_PKMNPROTECTEDITSELF,
+ STRINGID_PKMNAVOIDEDATTACK, STRINGID_AVOIDEDDAMAGE,
+ STRINGID_PKMNMAKESGROUNDMISS
+};
+
+const u16 gNoEscapeStringIds[] =
+{
+ STRINGID_CANTESCAPE, STRINGID_DONTLEAVEBIRCH, STRINGID_PREVENTSESCAPE,
+ STRINGID_CANTESCAPE2, STRINGID_ATTACKERCANTESCAPE
+};
+
+const u16 gMoveWeatherChangeStringIds[] =
+{
+ STRINGID_STARTEDTORAIN, STRINGID_DOWNPOURSTARTED, STRINGID_BUTITFAILED,
+ STRINGID_SANDSTORMBREWED, STRINGID_SUNLIGHTGOTBRIGHT, STRINGID_STARTEDHAIL
+};
+
+const u16 gSandStormHailContinuesStringIds[] =
+{
+ STRINGID_SANDSTORMRAGES, STRINGID_HAILCONTINUES
+};
+
+const u16 gSandStormHailDmgStringIds[] =
+{
+ STRINGID_PKMNBUFFETEDBYSANDSTORM, STRINGID_PKMNPELTEDBYHAIL
+};
+
+// todo once battlescripts are dumped
+const u16 gTooLazyToSplitThemStringIds[] =
+{
+ STRINGID_SANDSTORMSUBSIDED, STRINGID_HAILSTOPPED, STRINGID_RAINCONTINUES, STRINGID_DOWNPOURCONTINUES,
+ STRINGID_RAINSTOPPED, STRINGID_PKMNPROTECTEDITSELF2, STRINGID_PKMNBRACEDITSELF,
+ STRINGID_BUTITFAILED, STRINGID_BUTITFAILED, STRINGID_PKMNRAISEDDEF,
+ STRINGID_PKMNRAISEDDEFALITTLE, STRINGID_PKMNRAISEDSPDEF, STRINGID_PKMNRAISEDSPDEFALITTLE,
+ STRINGID_PKMNCOVEREDBYVEIL, STRINGID_PKMNSEEDED, STRINGID_PKMNEVADEDATTACK,
+ STRINGID_ITDOESNTAFFECT, STRINGID_PKMNSAPPEDBYLEECHSEED, STRINGID_ITSUCKEDLIQUIDOOZE,
+ STRINGID_PKMNWENTTOSLEEP, STRINGID_PKMNSLEPTHEALTHY, STRINGID_PKMNMAKINGUPROAR,
+ STRINGID_PKMNCALMEDDOWN, STRINGID_PKMNSTOCKPILED, STRINGID_PKMNCANTSTOCKPILE,
+ STRINGID_PKMNWOKEUP, STRINGID_PKMNWOKEUPINUPROAR, STRINGID_FAILEDTOSWALLOW,
+ STRINGID_PKMNHPFULL, STRINGID_PKMNCANTSLEEPINUPROAR2, STRINGID_UPROARKEPTPKMNAWAKE,
+ STRINGID_PKMNSTAYEDAWAKEUSING, STRINGID_PKMNSSTATCHANGED, STRINGID_PKMNSSTATCHANGED2,
+ STRINGID_STATSWONTINCREASE, STRINGID_EMPTYSTRING3, STRINGID_USINGXTHEYOFZN,
+ STRINGID_PKMNUSEDXTOGETPUMPED, STRINGID_PKMNSSTATCHANGED3, STRINGID_PKMNSSTATCHANGED4,
+ STRINGID_STATSWONTDECREASE, STRINGID_EMPTYSTRING3, STRINGID_PKMNWHIPPEDWHIRLWIND,
+ STRINGID_PKMNTOOKSUNLIGHT, STRINGID_PKMNLOWEREDHEAD, STRINGID_PKMNISGLOWING,
+ STRINGID_PKMNFLEWHIGH, STRINGID_PKMNDUGHOLE, STRINGID_PKMNHIDUNDERWATER,
+ STRINGID_PKMNSPRANGUP, STRINGID_PKMNSQUEEZEDBYBIND, STRINGID_PKMNWRAPPEDBY,
+ STRINGID_PKMNTRAPPEDINVORTEX, STRINGID_PKMNCLAMPED, STRINGID_PKMNTRAPPEDINVORTEX,
+ STRINGID_PKMNTRAPPEDBYSANDTOMB, STRINGID_PKMNSHROUDEDINMIST, STRINGID_BUTITFAILED,
+ STRINGID_PKMNGETTINGPUMPED, STRINGID_BUTITFAILED, STRINGID_PKMNTRANSFORMEDINTO,
+ STRINGID_BUTITFAILED, STRINGID_PKMNMADESUBSTITUTE, STRINGID_TOOWEAKFORSUBSTITUTE,
+ STRINGID_PKMNWASPOISONED, STRINGID_PKMNPOISONEDBY, STRINGID_PKMNWASPARALYZED,
+ STRINGID_PKMNWASPARALYZEDBY, STRINGID_PKMNFELLASLEEP, STRINGID_PKMNMADESLEEP,
+ STRINGID_PKMNWASBURNED, STRINGID_PKMNBURNEDBY, STRINGID_PKMNWASFROZEN,
+ STRINGID_PKMNFROZENBY, STRINGID_PKMNWASDEFROSTED2, STRINGID_PKMNWASDEFROSTEDBY,
+ STRINGID_ATTACKMISSED, STRINGID_PKMNUNAFFECTED, STRINGID_PKMNFELLINLOVE,
+ STRINGID_PKMNSXINFATUATEDY, STRINGID_PKMNENERGYDRAINED, STRINGID_ITSUCKEDLIQUIDOOZE,
+ STRINGID_ELECTRICITYWEAKENED, STRINGID_FIREWEAKENED, STRINGID_BELLCHIMED,
+ STRINGID_BELLCHIMED, STRINGID_BELLCHIMED, STRINGID_BELLCHIMED,
+ STRINGID_SOOTHINGAROMA, STRINGID_PKMNFORESAWATTACK, STRINGID_PKMNCHOSEXASDESTINY,
+ STRINGID_PKMNBROKEFREE, STRINGID_ITAPPEAREDCAUGHT, STRINGID_AARGHALMOSTHADIT,
+ STRINGID_SHOOTSOCLOSE, STRINGID_ITISRAINING, STRINGID_ITISRAINING,
+ STRINGID_ITISRAINING, STRINGID_ITISRAINING, STRINGID_ITISRAINING,
+ STRINGID_ITISRAINING, STRINGID_ITISRAINING, STRINGID_ITISRAINING,
+ STRINGID_SANDSTORMISRAGING, STRINGID_ITISRAINING, STRINGID_ITISRAINING,
+ STRINGID_ITISRAINING, STRINGID_SUNLIGHTSTRONG, STRINGID_ITISRAINING,
+ STRINGID_ITISRAINING, STRINGID_ITISRAINING, STRINGID_PKMNLOAFING,
+ STRINGID_PKMNWONTOBEY, STRINGID_PKMNTURNEDAWAY, STRINGID_PKMNPRETENDNOTNOTICE,
+ STRINGID_PKMNINCAPABLEOFPOWER, STRINGID_CREPTCLOSER, STRINGID_CANTGETCLOSER,
+ STRINGID_PKMNCURIOUSABOUTX, STRINGID_PKMNENTHRALLEDBYX, STRINGID_PKMNIGNOREDX,
+ STRINGID_PKMNSITEMSNAPPEDOUT, STRINGID_PKMNSITEMCUREDPARALYSIS, STRINGID_PKMNSITEMDEFROSTEDIT,
+ STRINGID_PKMNSITEMHEALEDBURN, STRINGID_PKMNSITEMCUREDPOISON, STRINGID_PKMNSITEMWOKEIT,
+ STRINGID_PKMNSITEMCUREDPROBLEM, STRINGID_PKMNSITEMNORMALIZEDSTATUS, STRINGID_PKMNSXPREVENTSBURNS,
+ STRINGID_PKMNSXPREVENTSYSZ, STRINGID_PKMNSXHADNOEFFECTONY, STRINGID_PKMNPREVENTSPARALYSISWITH,
+ STRINGID_PKMNSXPREVENTSYSZ, STRINGID_PKMNSXHADNOEFFECTONY, STRINGID_PKMNPREVENTSPOISONINGWITH,
+ STRINGID_PKMNSXPREVENTSYSZ, STRINGID_PKMNSXHADNOEFFECTONY, STRINGID_PKMNOBTAINEDX,
+ STRINGID_PKMNOBTAINEDX2, STRINGID_PKMNOBTAINEDXYOBTAINEDZ, STRINGID_PKMNRAISEDFIREPOWERWITH,
+ STRINGID_PKMNSXMADEYINEFFECTIVE, STRINGID_PKMNTRANSFERREDSOMEONESPC, STRINGID_PKMNTRANSFERREDLANETTESPC,
+ STRINGID_PKMNBOXSOMEONESPCFULL, STRINGID_PKMNBOXLANETTESPCFULL,
+};
+
+const u16 gTrappingMoves[] =
+{
+ MOVE_BIND, MOVE_WRAP, MOVE_FIRE_SPIN, MOVE_CLAMP, MOVE_WHIRLPOOL, MOVE_SAND_TOMB, 0xFFFF
+};
+
+const u8 gText_PkmnIsEvolving[] = _("What?\n{STR_VAR_1} is evolving!");
+const u8 gText_CongratsPkmnEvolved[] = _("Congratulations! Your {STR_VAR_1}\nevolved into {STR_VAR_2}!{UNKNOWN_A}\p");
+const u8 gText_PkmnStoppedEvolving[] = _("Huh? {STR_VAR_1}\nstopped evolving!\p");
+const u8 gText_EllipsisQuestionMark[] = _("……?\p");
+const u8 gText_WhatWillPkmnDo[] = _("What will\n{B_ACTIVE_NAME_WITH_PREFIX} do?");
+const u8 gText_WhatWillPkmnDo2[] = _("What will\n{B_PLAYER_NAME} do?");
+const u8 gText_WhatWillWallyDo[] = _("What will\nWALLY do?");
+const u8 gText_LinkStandby[] = _("{PAUSE 16}Link standby…");
+const u8 gText_BattleMenu[] = _("FIGHT{CLEAR_TO 56}BAG\nPOKéMON{CLEAR_TO 56}RUN");
+const u8 gText_SafariZoneMenu[] = _("BALL{CLEAR_TO 56}{POKEBLOCK}\nGO NEAR{CLEAR_TO 56}RUN");
+const u8 gText_MoveInterfacePP[] = _("PP ");
+const u8 gText_MoveInterfaceType[] = _("TYPE/");
+const u8 gText_MoveInterfacePpType[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}PP\nTYPE/");
+const u8 gText_MoveInterfaceDynamicColors[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}");
+const u8 gText_WhichMoveToForget4[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}Which move should\nbe forgotten?");
+const u8 gText_BattleYesNoChoice[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}Yes\nNo");
+const u8 gText_BattleSwitchWhich[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}Switch\nwhich?");
+const u8 gText_BattleSwitchWhich2[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW DYNAMIC_COLOR4 DYNAMIC_COLOR5 DYNAMIC_COLOR6}");
+const u8 gText_BattleSwitchWhich3[] = _("{UP_ARROW}");
+const u8 gText_BattleSwitchWhich4[] = _("{ESCAPE 4}");
+const u8 gText_BattleSwitchWhich5[] = _("-");
+
+const u8 gText_HP[] = _("HP");
+const u8 gText_Attack[] = _("ATTACK");
+const u8 gText_Defense[] = _("DEFENSE");
+const u8 gText_SpAtk[] = _("SP. ATK");
+const u8 gText_SpDef[] = _("SP. DEF");
+
+const u8 * const gStatNamesTable2[] =
+{
+ gText_HP, gText_SpAtk, gText_Attack,
+ gText_SpDef, gText_Defense, gText_Speed
+};
+
+const u8 gText_SafariBalls[] = _("{HIGHLIGHT DARK_GREY}SAFARI BALLS");
+const u8 gText_SafariBallLeft[] = _("{HIGHLIGHT DARK_GREY}Left: $" "{HIGHLIGHT DARK_GREY}");const u8 gText_Sleep[] = _( "sleep");const u8 gText_Poison[] = _( "poison");const u8 gText_Burn[] = _( "burn");const u8 gText_Paralysis[] = _( "paralysis");const u8 gText_Ice[] = _( "ice");const u8 gText_Confusion[] = _( "confusion");const u8 gText_Love[] = _( "love");
+const u8 gText_SpaceAndSpace[] = _(" and ");
+const u8 gText_CommaSpace[] = _(", ");
+const u8 gText_Space2[] = _(" ");
+const u8 gText_ScrollTextUp[] = _("\l");
+const u8 gText_NewLine[] = _("\n");
+const u8 gText_Are[] = _("are");
+const u8 gText_Are2[] = _("are");
+const u8 gText_BadEgg[] = _("Bad EGG");
+const u8 gText_BattleWallyName[] = _("WALLY");
+const u8 gText_Win[] = _("{HIGHLIGHT TRANSPARENT}Win");
+const u8 gText_Loss[] = _("{HIGHLIGHT TRANSPARENT}Loss");
+const u8 gText_Draw[] = _("{HIGHLIGHT TRANSPARENT}Draw");
+const u8 gText_SpaceIs[] = _(" is");
+const u8 gText_ApostropheS[] = _("’s");
+
+const u8 gText_UnknownMoveTypes[][17] =
+{
+ _("a NORMAL move"),
+ _("a FIGHTING move"),
+ _("a FLYING move"),
+ _("a POISON move"),
+ _("a GROUND move"),
+ _("a ROCK move"),
+ _("a BUG move"),
+ _("a GHOST move"),
+ _("a STEEL move"),
+ _("a ??? move"),
+ _("a FIRE move"),
+ _("a WATER move"),
+ _("a GRASS move"),
+ _("an ELECTRIC move"),
+ _("a PSYCHIC move"),
+ _("an ICE move"),
+ _("a DRAGON move"),
+ _("a DARK move")
+};
+
+const u8 gText_BattleTourney[] = _("BATTLE TOURNEY");
+const u8 gText_Round1[] = _("Round 1");
+const u8 gText_Round2[] = _("Round 2");
+const u8 gText_Semifinal[] = _("Semifinal");
+const u8 gText_Final[] = _("Final");
+
+const u8 * const gRoundsStringTable[] =
+{
+ gText_Round1,
+ gText_Round2,
+ gText_Semifinal,
+ gText_Final
+};
+
+const u8 gText_TheGreatNewHope[] = _("The great new hope!\p");
+const u8 gText_WillChampinshipDreamComeTrue[] = _("Will the championship dream come true?!\p");
+const u8 gText_AFormerChampion[] = _("A former CHAMPION!\p");
+const u8 gText_ThePreviousChampion[] = _("The previous CHAMPION!\p");
+const u8 gText_TheUnbeatenChampion[] = _("The unbeaten CHAMPION!\p");
+const u8 gText_PlayerMon1Name[] = _("{B_PLAYER_MON1_NAME}");
+const u8 gText_Vs[] = _("VS");
+const u8 gText_OpponentMon1Name[] = _("{B_OPPONENT_MON1_NAME}");
+const u8 gText_Mind[] = _("Mind");
+const u8 gText_Skill[] = _("Skill");
+const u8 gText_Body[] = _("Body");
+const u8 gText_Judgement[] = _("{B_BUFF1}{CLEAR 13}Judgment{CLEAR 13}{B_BUFF2}");
+const u8 gText_TwoTrainersSentPkmn[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} sent\nout {B_OPPONENT_MON1_NAME}!\p{B_TRAINER2_CLASS} {B_TRAINER2_NAME} sent\nout {B_OPPONENT_MON2_NAME}!");
+const u8 gText_Trainer2SentOutPkmn[] = _("{B_TRAINER2_CLASS} {B_TRAINER2_NAME} sent\nout {B_BUFF1}!");
+const u8 gText_TwoTrainersWantToBattle[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} and\n{B_TRAINER2_CLASS} {B_TRAINER2_NAME}\lwant to battle!\p");
+const u8 gText_InGamePartnerSentOutZGoN[] = _("{B_PARTNER_CLASS} {B_PARTNER_NAME} sent\nout {B_PLAYER_MON2_NAME}!\lGo, {B_PLAYER_MON1_NAME}!");
+const u8 gText_TwoInGameTrainersDefeated[] = _("{B_TRAINER1_CLASS} {B_TRAINER1_NAME} and\n{B_TRAINER2_CLASS} {B_TRAINER2_NAME}\lwere defeated!\p");
+const u8 gText_Trainer2LoseText[] = _("{B_TRAINER2_LOSE_TEXT}");
+const u8 gText_PkmnIncapableOfPower[] = _("{B_ATK_NAME_WITH_PREFIX} appears incapable\nof using its power!");
+const u8 gText_GlintAppearsInEye[] = _("A glint appears in\n{B_SCR_ACTIVE_NAME_WITH_PREFIX}’s eyes!");
+const u8 gText_PkmnGettingIntoPosition[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is getting into\nposition!");
+const u8 gText_PkmnBeganGrowlingDeeply[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} began growling deeply!");
+const u8 gText_PkmnEagerForMore[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is eager for more!");
+
+const u16 gUnknown_085CCF0A[] =
+{
+ 0x016E, 0x016F, 0x0170, 0x0171
+};
+
+const u8 gText_RefIfNothingIsDecided[] = _("REFEREE: If nothing is decided in\n3 turns, we will go to judging!");
+const u8 gText_RefThatsIt[] = _("REFEREE: That’s it! We will now go to\njudging to determine the winner!");
+const u8 gText_RefJudgeMind[] = _("REFEREE: Judging category 1, Mind!\nThe POKéMON showing the most guts!\p");
+const u8 gText_RefJudgeSkill[] = _("REFEREE: Judging category 2, Skill!\nThe POKéMON using moves the best!\p");
+const u8 gText_RefJudgeBody[] = _("REFEREE: Judging category 3, Body!\nThe POKéMON with the most vitality!\p");
+const u8 gText_RefJudgement1[] = _("REFEREE: Judgment: {B_BUFF1} to {B_BUFF2}!\nThe winner is {B_PLAYER_NAME}’s {B_PLAYER_MON1_NAME}!\p");
+const u8 gText_RefJudgement2[] = _("REFEREE: Judgment: {B_BUFF1} to {B_BUFF2}!\nThe winner is {B_TRAINER1_NAME}’s {B_OPPONENT_MON1_NAME}!\p");
+const u8 gText_RefJudgement3[] = _("REFEREE: Judgment: 3 to 3!\nWe have a draw!\p");
+const u8 gText_DefeatedOpponentByReferee[] = _("{B_PLAYER_MON1_NAME} defeated the opponent\n{B_OPPONENT_MON1_NAME} in a REFEREE’s decision!");
+const u8 gText_LostToOpponentByReferee[] = _("{B_PLAYER_MON1_NAME} lost to the opponent\n{B_OPPONENT_MON1_NAME} in a REFEREE’s decision!");
+const u8 gText_TiedOpponentByReferee[] = _("{B_PLAYER_MON1_NAME} tied the opponent\n{B_OPPONENT_MON1_NAME} in a REFEREE’s decision!");
+const u8 gText_RefCommenceBattle[] = _("REFEREE: {B_PLAYER_MON1_NAME} VS {B_OPPONENT_MON1_NAME}!\nCommence battling!");
+
+const u8 * const gRefereeStringsTable[] =
+{
+ gText_RefIfNothingIsDecided,
+ gText_RefThatsIt,
+ gText_RefJudgeMind,
+ gText_RefJudgeSkill,
+ gText_RefJudgeBody,
+ gText_RefJudgement1,
+ gText_RefJudgement2,
+ gText_RefJudgement3,
+ gText_RefCommenceBattle,
+};
+
+const u8 gText_QuestionForfeitMatch[] = _("Would you like to forfeit the match\nand quit now?");
+const u8 gText_ForfeitedMatch[] = _("{B_PLAYER_NAME} forfeited the match!");
+const u8 gText_Trainer1WinText[] = _("{B_TRAINER1_WIN_TEXT}");
+const u8 gText_Trainer2WinText[] = _("{B_TRAINER2_WIN_TEXT}");
+const u8 gText_Trainer1Fled[] = _( "{PLAY_SE 0x0011}{B_TRAINER1_CLASS} {B_TRAINER1_NAME} fled!");
+const u8 gText_PlayerLostAgainstTrainer1[] = _("Player lost against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!");
+const u8 gText_PlayerBattledToDrawTrainer1[] = _("Player battled to a draw against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!");
+const u8 gText_RecordBattleToPass[] = _("Would you like to record your battle\non your FRONTIER PASS?");
+const u8 gText_BattleRecordedOnPass[] = _("{B_PLAYER_NAME}’s battle result was recorded\non the FRONTIER PASS.");
+const u8 gText_LinkTrainerWantsToBattlePause[] = _("{B_20}\nwants to battle!{PAUSE 49}");
+const u8 gText_TwoLinkTrainersWantToBattlePause[] = _("{B_20} and {B_21}\nwant to battle!{PAUSE 49}");
+
+static const u16 sUnknownMoveTable[] =
+{
+ MOVE_SWORDS_DANCE, MOVE_STRENGTH, MOVE_GROWTH,
+ MOVE_HARDEN, MOVE_MINIMIZE, MOVE_SMOKESCREEN,
+ MOVE_WITHDRAW, MOVE_DEFENSE_CURL, MOVE_EGG_BOMB,
+ MOVE_SMOG, MOVE_BONE_CLUB, MOVE_FLASH, MOVE_SPLASH,
+ MOVE_ACID_ARMOR, MOVE_BONEMERANG, MOVE_REST, MOVE_SHARPEN,
+ MOVE_SUBSTITUTE, MOVE_MIND_READER, MOVE_SNORE,
+ MOVE_PROTECT, MOVE_SPIKES, MOVE_ENDURE, MOVE_ROLLOUT,
+ MOVE_SWAGGER, MOVE_SLEEP_TALK, MOVE_HIDDEN_POWER,
+ MOVE_PSYCH_UP, MOVE_EXTREME_SPEED, MOVE_FOLLOW_ME,
+ MOVE_TRICK, MOVE_ASSIST, MOVE_INGRAIN, MOVE_KNOCK_OFF,
+ MOVE_CAMOUFLAGE, MOVE_ASTONISH, MOVE_ODOR_SLEUTH,
+ MOVE_GRASS_WHISTLE, MOVE_SHEER_COLD, MOVE_MUDDY_WATER,
+ MOVE_IRON_DEFENSE, MOVE_BOUNCE, MOVE_NONE,
+
+ MOVE_TELEPORT, MOVE_RECOVER, MOVE_BIDE, MOVE_AMNESIA,
+ MOVE_FLAIL, MOVE_TAUNT, MOVE_BULK_UP, MOVE_NONE,
+
+ MOVE_MEDITATE, MOVE_AGILITY, MOVE_MIMIC, MOVE_DOUBLE_TEAM,
+ MOVE_BARRAGE, MOVE_TRANSFORM, MOVE_STRUGGLE, MOVE_SCARY_FACE,
+ MOVE_CHARGE, MOVE_WISH, MOVE_BRICK_BREAK, MOVE_YAWN,
+ MOVE_FEATHER_DANCE, MOVE_TEETER_DANCE, MOVE_MUD_SPORT,
+ MOVE_FAKE_TEARS, MOVE_WATER_SPORT, MOVE_CALM_MIND, MOVE_NONE,
+
+ MOVE_POUND, MOVE_SCRATCH, MOVE_VICE_GRIP,
+ MOVE_WING_ATTACK, MOVE_FLY, MOVE_BIND, MOVE_SLAM,
+ MOVE_HORN_ATTACK, MOVE_WRAP, MOVE_THRASH, MOVE_TAIL_WHIP,
+ MOVE_LEER, MOVE_BITE, MOVE_GROWL, MOVE_ROAR,
+ MOVE_SING, MOVE_PECK, MOVE_ABSORB, MOVE_STRING_SHOT,
+ MOVE_EARTHQUAKE, MOVE_FISSURE, MOVE_DIG, MOVE_TOXIC,
+ MOVE_SCREECH, MOVE_METRONOME, MOVE_LICK, MOVE_CLAMP,
+ MOVE_CONSTRICT, MOVE_POISON_GAS, MOVE_BUBBLE,
+ MOVE_SLASH, MOVE_SPIDER_WEB, MOVE_NIGHTMARE, MOVE_CURSE,
+ MOVE_FORESIGHT, MOVE_CHARM, MOVE_ATTRACT, MOVE_ROCK_SMASH,
+ MOVE_UPROAR, MOVE_SPIT_UP, MOVE_SWALLOW, MOVE_TORMENT,
+ MOVE_FLATTER, MOVE_ROLE_PLAY, MOVE_ENDEAVOR, MOVE_TICKLE,
+ MOVE_COVET, MOVE_NONE
+};
+
+static const u8 sDummyWeirdStatusString[] = {EOS, EOS, EOS, EOS, EOS, EOS, EOS, EOS, 0, 0};
+
+static const u8 gUnknown_085CD42C[] =
+{
+ 0xFF, 0x1, 0x0, 0x1, 0x0, 0x0, 0x1, 0x1, 0xF, 0x6, 0x0, 0x0, 0xFF, 0x1,
+ 0x1, 0x1, 0x0, 0x0, 0x0, 0x1, 0xF, 0x6, 0x0, 0x0, 0xEE, 0x1, 0x0, 0x1, 0x0,
+ 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x7, 0x0, 0x1, 0x0, 0x0, 0x0,
+ 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x7, 0x0, 0x1, 0x0, 0x0, 0x0, 0xD,
+ 0xE, 0xF, 0x0, 0x0, 0xEE, 0x7, 0x0, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE,
+ 0xF, 0x0, 0x0, 0xEE, 0x7, 0x0, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF,
+ 0x0, 0x0, 0xEE, 0x7, 0x0, 0x1, 0x0, 0x0, 0x0, 0xC, 0xE, 0xB, 0x0, 0x0,
+ 0xEE, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE,
+ 0x1, 0x2, 0x1, 0x0, 0x0, 0x0, 0xC, 0xE, 0xB, 0x0, 0x0, 0xEE, 0x7, 0x0,
+ 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x7, 0x0, 0x1, 0x0,
+ 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0,
+ 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0xD,
+ 0xE, 0xF, 0x0, 0x0, 0x0, 0x1, 0x20, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x2,
+ 0x0, 0x0, 0xEE, 0x1, 0xFF, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0,
+ 0x0, 0xEE, 0x1, 0xFF, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0,
+ 0xEE, 0x1, 0xFF, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE,
+ 0x1, 0xFF, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x1,
+ 0xFF, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x1, 0xFF,
+ 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0x0, 0x1, 0xFF, 0x1, 0x0,
+ 0x0, 0x0, 0x1, 0x0, 0x6, 0x0, 0x0, 0x0, 0x1, 0xFF, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0,
+ 0x6, 0x0, 0x0, 0x0, 0x1, 0xFF, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x6, 0x0, 0x0
+};
+
+static const u8 gUnknown_085CD54C[] =
+{
+ 0xFF, 0x1, 0x0, 0x1, 0x0, 0x0, 0x1, 0x1, 0xF, 0x6, 0x0, 0x0, 0xFF, 0x1,
+ 0x1, 0x1, 0x0, 0x0, 0x0, 0x1, 0xF, 0x6, 0x0, 0x0, 0xEE, 0x1, 0x0, 0x1, 0x0,
+ 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x7, 0x0, 0x1, 0x0, 0x0, 0x0,
+ 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x7, 0x0, 0x1, 0x0, 0x0, 0x0, 0xD,
+ 0xE, 0xF, 0x0, 0x0, 0xEE, 0x7, 0x0, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE,
+ 0xF, 0x0, 0x0, 0xEE, 0x7, 0x0, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF,
+ 0x0, 0x0, 0xEE, 0x7, 0x0, 0x1, 0x0, 0x0, 0x0, 0xC, 0xE, 0xB, 0x0, 0x0,
+ 0xEE, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE,
+ 0x1, 0x2, 0x1, 0x0, 0x0, 0x0, 0xC, 0xE, 0xB, 0x0, 0x0, 0xEE, 0x7, 0x0,
+ 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x7, 0x0, 0x1, 0x0,
+ 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0,
+ 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x1, 0x0, 0x1, 0x0, 0x0, 0x0, 0xD,
+ 0xE, 0xF, 0x0, 0x0, 0x0, 0x1, 0x20, 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x2,
+ 0x0, 0x0, 0xEE, 0x1, 0xFF, 0x1, 0x0, 0x0, 0x0, 0x1, 0xE, 0xF, 0x0,
+ 0x0, 0xEE, 0x1, 0xFF, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0,
+ 0xEE, 0x1, 0xFF, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE,
+ 0x1, 0xFF, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x1,
+ 0xFF, 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x1, 0xFF,
+ 0x1, 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0xEE, 0x1, 0xFF, 0x1,
+ 0x0, 0x0, 0x0, 0xD, 0xE, 0xF, 0x0, 0x0, 0x11, 0x1, 0x0, 0x1, 0x0, 0x0,
+ 0x1, 0x2, 0x1, 0x3, 0x0, 0x0
+};
+
+static const u8 * const gUnknown_085CD660[] =
+{
+ gUnknown_085CD42C, gUnknown_085CD54C
+};
+
+static const u8 sRecordedBattleTextSpeeds[] = {8, 4, 1, 0};
+
+void BufferStringBattle(u16 stringID)
+{
+ s32 i;
+ const u8* stringPtr = NULL;
+
+ gStringInfo = (struct StringInfoBattle*)(&gBattleBufferA[gActiveBank][4]);
+ gLastUsedItem = gStringInfo->lastItem;
+ gLastUsedAbility = gStringInfo->lastAbility;
+ gBattleScripting.bank = gStringInfo->scrActive;
+ *(&gBattleStruct->field_52) = gStringInfo->unk1605E;
+ *(&gBattleStruct->hpScale) = gStringInfo->hpScale;
+ gStringBank = gStringInfo->StringBank;
+ *(&gBattleStruct->stringMoveType) = gStringInfo->moveType;
+
+ for (i = 0; i < BATTLE_BANKS_COUNT; i++)
+ {
+ gAbilitiesPerBank[i] = gStringInfo->abilities[i];
+ }
+ for (i = 0; i < TEXT_BUFF_ARRAY_COUNT; i++)
+ {
+ gBattleTextBuff1[i] = gStringInfo->textBuffs[0][i];
+ gBattleTextBuff2[i] = gStringInfo->textBuffs[1][i];
+ gBattleTextBuff3[i] = gStringInfo->textBuffs[2][i];
+ }
+
+ switch (stringID)
+ {
+ case STRINGID_INTROMSG: // first battle msg
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ {
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_x800000)
+ {
+ stringPtr = gText_TwoTrainersWantToBattle;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
+ stringPtr = gText_TwoLinkTrainersWantToBattlePause;
+ else
+ stringPtr = gText_TwoLinkTrainersWantToBattle;
+ }
+ else
+ {
+ if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00)
+ stringPtr = gText_Trainer1WantsToBattle;
+ else if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
+ stringPtr = gText_LinkTrainerWantsToBattlePause;
+ else
+ stringPtr = gText_LinkTrainerWantsToBattle;
+ }
+ }
+ else
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
+ stringPtr = gText_TwoTrainersWantToBattle;
+ else if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
+ stringPtr = gText_TwoTrainersWantToBattle;
+ else
+ stringPtr = gText_Trainer1WantsToBattle;
+ }
+ }
+ else
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY)
+ stringPtr = gText_WildPkmnAppeared2;
+ else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) // interesting, looks like they had something planned for wild double battles
+ stringPtr = gText_TwoWildPkmnAppeared;
+ else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL)
+ stringPtr = gText_WildPkmnAppearedPause;
+ else
+ stringPtr = gText_WildPkmnAppeared;
+ }
+ break;
+ case STRINGID_INTROSENDOUT: // poke first send-out
+ if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
+ stringPtr = gText_InGamePartnerSentOutZGoN;
+ else if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
+ stringPtr = gText_GoTwoPkmn;
+ else if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ stringPtr = gText_LinkPartnerSentOutPkmnGoPkmn;
+ else
+ stringPtr = gText_GoTwoPkmn;
+ }
+ else
+ {
+ stringPtr = gText_GoPkmn;
+ }
+ }
+ else
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
+ stringPtr = gText_TwoTrainersSentPkmn;
+ else if (gBattleTypeFlags & BATTLE_TYPE_x800000)
+ stringPtr = gText_TwoTrainersSentPkmn;
+ else if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ stringPtr = gText_TwoLinkTrainersSentOutPkmn;
+ else if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ stringPtr = gText_LinkTrainerSentOutTwoPkmn;
+ else
+ stringPtr = gText_Trainer1SentOutTwoPkmn;
+ }
+ else
+ {
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)))
+ stringPtr = gText_Trainer1SentOutPkmn;
+ else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00)
+ stringPtr = gText_Trainer1SentOutPkmn;
+ else
+ stringPtr = gText_LinkTrainerSentOutPkmn;
+ }
+ }
+ break;
+ case STRINGID_RETURNMON: // sending poke to ball msg
+ if (GetBankSide(gActiveBank) == SIDE_PLAYER)
+ {
+ if (*(&gBattleStruct->hpScale) == 0)
+ stringPtr = gText_PkmnThatsEnough;
+ else if (*(&gBattleStruct->hpScale) == 1 || gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ stringPtr = gText_PkmnComeBack;
+ else if (*(&gBattleStruct->hpScale) == 2)
+ stringPtr = gText_PkmnOkComeBack;
+ else
+ stringPtr = gText_PkmnGoodComeBack;
+ }
+ else
+ {
+ if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_800 || gBattleTypeFlags & BATTLE_TYPE_x2000000)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ stringPtr = gText_LinkTrainer2WithdrewPkmn;
+ else
+ stringPtr = gText_LinkTrainer1WithdrewPkmn;
+ }
+ else
+ {
+ stringPtr = gText_Trainer1WithdrewPkmn;
+ }
+ }
+ break;
+ case STRINGID_SWITCHINMON: // switch-in msg
+ if (GetBankSide(gBattleScripting.bank) == SIDE_PLAYER)
+ {
+ if (*(&gBattleStruct->hpScale) == 0 || gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ stringPtr = gText_GoPkmn2;
+ else if (*(&gBattleStruct->hpScale) == 1)
+ stringPtr = gText_DoItPkmn;
+ else if (*(&gBattleStruct->hpScale) == 2)
+ stringPtr = gText_GoForItPkmn;
+ else
+ stringPtr = gText_YourFoesWeakGetEmPkmn;
+ }
+ else
+ {
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_x800000)
+ {
+ if (gBattleScripting.bank == 1)
+ stringPtr = gText_Trainer1SentOutPkmn2;
+ else
+ stringPtr = gText_Trainer2SentOutPkmn;
+ }
+ else
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ stringPtr = gText_LinkTrainerMultiSentOutPkmn;
+ else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00)
+ stringPtr = gText_Trainer1SentOutPkmn2;
+ else
+ stringPtr = gText_LinkTrainerSentOutPkmn2;
+ }
+ }
+ else
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
+ {
+ if (gBattleScripting.bank == 1)
+ stringPtr = gText_Trainer1SentOutPkmn2;
+ else
+ stringPtr = gText_Trainer2SentOutPkmn;
+ }
+ else
+ {
+ stringPtr = gText_Trainer1SentOutPkmn2;
+ }
+ }
+ }
+ break;
+ case STRINGID_USEDMOVE: // pokemon used a move msg
+ sub_814F8F8(gBattleTextBuff1); // buff1 doesn't appear in the string, leftover from japanese move names?
+
+ if (gStringInfo->currentMove > LAST_MOVE_INDEX)
+ StringCopy(gBattleTextBuff2, gText_UnknownMoveTypes[*(&gBattleStruct->stringMoveType)]);
+ else
+ StringCopy(gBattleTextBuff2, gMoveNames[gStringInfo->currentMove]);
+
+ sub_814F950(gBattleTextBuff2);
+ stringPtr = gText_AttackerUsedX;
+ break;
+ case STRINGID_BATTLEEND: // battle end
+ if (gBattleTextBuff1[0] & BATTLE_OUTCOME_BIT_x80)
+ {
+ gBattleTextBuff1[0] &= ~(BATTLE_OUTCOME_BIT_x80);
+ if (GetBankSide(gActiveBank) == SIDE_OPPONENT && gBattleTextBuff1[0] != BATTLE_DREW)
+ gBattleTextBuff1[0] ^= (BATTLE_LOST | BATTLE_WON);
+
+ if (gBattleTextBuff1[0] == BATTLE_LOST || gBattleTextBuff1[0] == BATTLE_DREW)
+ stringPtr = gText_GotAwaySafely;
+ else if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ stringPtr = gText_TwoWildFled;
+ else
+ stringPtr = gText_WildFled;
+ }
+ else
+ {
+ if (GetBankSide(gActiveBank) == SIDE_OPPONENT && gBattleTextBuff1[0] != BATTLE_DREW)
+ gBattleTextBuff1[0] ^= (BATTLE_LOST | BATTLE_WON);
+
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ switch (gBattleTextBuff1[0])
+ {
+ case BATTLE_WON:
+ if (gBattleTypeFlags & BATTLE_TYPE_x800000)
+ stringPtr = gText_TwoInGameTrainersDefeated;
+ else
+ stringPtr = gText_TwoLinkTrainersDefeated;
+ break;
+ case BATTLE_LOST:
+ stringPtr = gText_PlayerLostToTwo;
+ break;
+ case BATTLE_DREW:
+ stringPtr = gText_PlayerBattledToDrawVsTwo;
+ break;
+ }
+ }
+ else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00)
+ {
+ switch (gBattleTextBuff1[0])
+ {
+ case BATTLE_WON:
+ stringPtr = gText_PlayerDefeatedLinkTrainerTrainer1;
+ break;
+ case BATTLE_LOST:
+ stringPtr = gText_PlayerLostAgainstTrainer1;
+ break;
+ case BATTLE_DREW:
+ stringPtr = gText_PlayerBattledToDrawTrainer1;
+ break;
+ }
+ }
+ else
+ {
+ switch (gBattleTextBuff1[0])
+ {
+ case BATTLE_WON:
+ stringPtr = gText_PlayerDefeatedLinkTrainer;
+ break;
+ case BATTLE_LOST:
+ stringPtr = gText_PlayerLostAgainstLinkTrainer;
+ break;
+ case BATTLE_DREW:
+ stringPtr = gText_PlayerBattledToDrawLinkTrainer;
+ break;
+ }
+ }
+ }
+ break;
+ default: // load a string from the table
+ if (stringID >= BATTLESTRINGS_COUNT + BATTLESTRINGS_ID_ADDER)
+ {
+ gDisplayedStringBattle[0] = EOS;
+ return;
+ }
+ else
+ {
+ stringPtr = gBattleStringsTable[stringID - BATTLESTRINGS_ID_ADDER];
+ }
+ break;
+ }
+
+ BattleStringExpandPlaceholdersToDisplayedString(stringPtr);
+}
+
+u32 BattleStringExpandPlaceholdersToDisplayedString(const u8* src)
+{
+ BattleStringExpandPlaceholders(src, gDisplayedStringBattle);
+}
+
+static const u8* TryGetStatusString(u8* src)
+{
+ u32 i;
+ u8 status[8];
+ u32 chars1, chars2;
+ u8* statusPtr;
+
+ memcpy(status, sDummyWeirdStatusString, 8);
+
+ statusPtr = status;
+ for (i = 0; i < 8; i++)
+ {
+ if (*src == EOS)
+ break;
+ *statusPtr = *src;
+ src++;
+ statusPtr++;
+ }
+
+ chars1 = *(u32*)(&status[0]);
+ chars2 = *(u32*)(&status[4]);
+
+ for (i = 0; i < ARRAY_COUNT(gStatusConditionStringsTable); i++)
+ {
+ if (chars1 == *(u32*)(&gStatusConditionStringsTable[i][0][0])
+ && chars2 == *(u32*)(&gStatusConditionStringsTable[i][0][4]))
+ return gStatusConditionStringsTable[i][1];
+ }
+ return NULL;
+}
+
+#define HANDLE_NICKNAME_STRING_CASE(bank, monIndex) \
+ if (GetBankSide(bank) != SIDE_PLAYER) \
+ { \
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) \
+ toCpy = gText_FoePkmnPrefix; \
+ else \
+ toCpy = gText_WildPkmnPrefix; \
+ while (*toCpy != EOS) \
+ { \
+ dst[dstID] = *toCpy; \
+ dstID++; \
+ toCpy++; \
+ } \
+ GetMonData(&gEnemyParty[monIndex], MON_DATA_NICKNAME, text); \
+ } \
+ else \
+ { \
+ GetMonData(&gPlayerParty[monIndex], MON_DATA_NICKNAME, text); \
+ } \
+ StringGetEnd10(text); \
+ toCpy = text;
+
+u32 BattleStringExpandPlaceholders(const u8* src, u8* dst)
+{
+ u32 dstID = 0; // if they used dstID, why not use srcID as well?
+ const u8* toCpy = NULL;
+ u8 text[30];
+ u8 multiplayerID;
+ s32 i;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_x2000000)
+ multiplayerID = gUnknown_0203C7B4;
+ else
+ multiplayerID = GetMultiplayerId();
+
+ while (*src != EOS)
+ {
+ if (*src == PLACEHOLDER_BEGIN)
+ {
+ src++;
+ switch (*src)
+ {
+ case B_TXT_BUFF1:
+ if (gBattleTextBuff1[0] == B_BUFF_PLACEHOLDER_BEGIN)
+ {
+ ExpandBattleTextBuffPlaceholders(gBattleTextBuff1, gStringVar1);
+ toCpy = gStringVar1;
+ }
+ else
+ {
+ toCpy = TryGetStatusString(gBattleTextBuff1);
+ if (toCpy == NULL)
+ toCpy = gBattleTextBuff1;
+ }
+ break;
+ case B_TXT_BUFF2:
+ if (gBattleTextBuff2[0] == B_BUFF_PLACEHOLDER_BEGIN)
+ {
+ ExpandBattleTextBuffPlaceholders(gBattleTextBuff2, gStringVar2);
+ toCpy = gStringVar2;
+ }
+ else
+ toCpy = gBattleTextBuff2;
+ break;
+ case B_TXT_BUFF3:
+ if (gBattleTextBuff3[0] == B_BUFF_PLACEHOLDER_BEGIN)
+ {
+ ExpandBattleTextBuffPlaceholders(gBattleTextBuff3, gStringVar3);
+ toCpy = gStringVar3;
+ }
+ else
+ toCpy = gBattleTextBuff3;
+ break;
+ case B_TXT_COPY_VAR_1:
+ toCpy = gStringVar1;
+ break;
+ case B_TXT_COPY_VAR_2:
+ toCpy = gStringVar2;
+ break;
+ case B_TXT_COPY_VAR_3:
+ toCpy = gStringVar3;
+ break;
+ case B_TXT_PLAYER_MON1_NAME: // first player poke name
+ GetMonData(&gPlayerParty[gBattlePartyID[GetBankByIdentity(IDENTITY_PLAYER_MON1)]],
+ MON_DATA_NICKNAME, text);
+ StringGetEnd10(text);
+ toCpy = text;
+ break;
+ case B_TXT_OPPONENT_MON1_NAME: // first enemy poke name
+ GetMonData(&gEnemyParty[gBattlePartyID[GetBankByIdentity(IDENTITY_OPPONENT_MON1)]],
+ MON_DATA_NICKNAME, text);
+ StringGetEnd10(text);
+ toCpy = text;
+ break;
+ case B_TXT_PLAYER_MON2_NAME: // second player poke name
+ GetMonData(&gPlayerParty[gBattlePartyID[GetBankByIdentity(IDENTITY_PLAYER_MON2)]],
+ MON_DATA_NICKNAME, text);
+ StringGetEnd10(text);
+ toCpy = text;
+ break;
+ case B_TXT_OPPONENT_MON2_NAME: // second enemy poke name
+ GetMonData(&gEnemyParty[gBattlePartyID[GetBankByIdentity(IDENTITY_OPPONENT_MON2)]],
+ MON_DATA_NICKNAME, text);
+ StringGetEnd10(text);
+ toCpy = text;
+ break;
+ case B_TXT_LINK_PLAYER_MON1_NAME: // link first player poke name
+ GetMonData(&gPlayerParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18]],
+ MON_DATA_NICKNAME, text);
+ StringGetEnd10(text);
+ toCpy = text;
+ break;
+ case B_TXT_LINK_OPPONENT_MON1_NAME: // link first opponent poke name
+ GetMonData(&gEnemyParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18 ^ 1]],
+ MON_DATA_NICKNAME, text);
+ StringGetEnd10(text);
+ toCpy = text;
+ break;
+ case B_TXT_LINK_PLAYER_MON2_NAME: // link second player poke name
+ GetMonData(&gPlayerParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18 ^ 2]],
+ MON_DATA_NICKNAME, text);
+ StringGetEnd10(text);
+ toCpy = text;
+ break;
+ case B_TXT_LINK_OPPONENT_MON2_NAME: // link second opponent poke name
+ GetMonData(&gEnemyParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18 ^ 3]],
+ MON_DATA_NICKNAME, text);
+ StringGetEnd10(text);
+ toCpy = text;
+ break;
+ case B_TXT_ATK_NAME_WITH_PREFIX_MON1: // attacker name with prefix, only bank 0/1
+ HANDLE_NICKNAME_STRING_CASE(gBankAttacker,
+ gBattlePartyID[GetBankByIdentity(GET_BANK_SIDE(gBankAttacker))])
+ break;
+ case B_TXT_ATK_PARTNER_NAME: // attacker partner name
+ if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ GetMonData(&gPlayerParty[gBattlePartyID[GetBankByIdentity(GET_BANK_SIDE(gBankAttacker)) + 2]], MON_DATA_NICKNAME, text);
+ else
+ GetMonData(&gEnemyParty[gBattlePartyID[GetBankByIdentity(GET_BANK_SIDE(gBankAttacker)) + 2]], MON_DATA_NICKNAME, text);
+
+ StringGetEnd10(text);
+ toCpy = text;
+ break;
+ case B_TXT_ATK_NAME_WITH_PREFIX: // attacker name with prefix
+ HANDLE_NICKNAME_STRING_CASE(gBankAttacker, gBattlePartyID[gBankAttacker])
+ break;
+ case B_TXT_DEF_NAME_WITH_PREFIX: // target name with prefix
+ HANDLE_NICKNAME_STRING_CASE(gBankTarget, gBattlePartyID[gBankTarget])
+ break;
+ case B_TXT_EFF_NAME_WITH_PREFIX: // effect bank name with prefix
+ HANDLE_NICKNAME_STRING_CASE(gEffectBank, gBattlePartyID[gEffectBank])
+ break;
+ case B_TXT_ACTIVE_NAME_WITH_PREFIX: // active bank name with prefix
+ HANDLE_NICKNAME_STRING_CASE(gActiveBank, gBattlePartyID[gActiveBank])
+ break;
+ case B_TXT_SCR_ACTIVE_NAME_WITH_PREFIX: // scripting active bank name with prefix
+ HANDLE_NICKNAME_STRING_CASE(gBattleScripting.bank, gBattlePartyID[gBattleScripting.bank])
+ break;
+ case B_TXT_CURRENT_MOVE: // current move name
+ if (gStringInfo->currentMove > LAST_MOVE_INDEX)
+ toCpy = gText_UnknownMoveTypes[gBattleStruct->stringMoveType];
+ else
+ toCpy = gMoveNames[gStringInfo->currentMove];
+ break;
+ case B_TXT_LAST_MOVE: // last used move name
+ if (gStringInfo->lastMove > LAST_MOVE_INDEX)
+ toCpy = gText_UnknownMoveTypes[gBattleStruct->stringMoveType];
+ else
+ toCpy = gMoveNames[gStringInfo->lastMove];
+ break;
+ case B_TXT_LAST_ITEM: // last used item
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ {
+ if (gLastUsedItem == ITEM_ENIGMA_BERRY)
+ {
+ if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
+ {
+ if ((gBattleScripting.multiplayerId != 0 && (gStringBank & BIT_SIDE))
+ || (gBattleScripting.multiplayerId == 0 && !(gStringBank & BIT_SIDE)))
+ {
+ StringCopy(text, gEnigmaBerries[gStringBank].name);
+ StringAppend(text, gText_BerrySuffix);
+ toCpy = text;
+ }
+ else
+ {
+ toCpy = gText_EnigmaBerry;
+ }
+ }
+ else
+ {
+ if (gLinkPlayers[gBattleScripting.multiplayerId].lp_field_18 == gStringBank)
+ {
+ StringCopy(text, gEnigmaBerries[gStringBank].name);
+ StringAppend(text, gText_BerrySuffix);
+ toCpy = text;
+ }
+ else
+ toCpy = gText_EnigmaBerry;
+ }
+ }
+ else
+ {
+ CopyItemName(gLastUsedItem, text);
+ toCpy = text;
+ }
+ }
+ else
+ {
+ CopyItemName(gLastUsedItem, text);
+ toCpy = text;
+ }
+ break;
+ case B_TXT_LAST_ABILITY: // last used ability
+ toCpy = gAbilityNames[gLastUsedAbility];
+ break;
+ case B_TXT_ATK_ABILITY: // attacker ability
+ toCpy = gAbilityNames[gAbilitiesPerBank[gBankAttacker]];
+ break;
+ case B_TXT_DEF_ABILITY: // target ability
+ toCpy = gAbilityNames[gAbilitiesPerBank[gBankTarget]];
+ break;
+ case B_TXT_SCR_ACTIVE_ABILITY: // scripting active ability
+ toCpy = gAbilityNames[gAbilitiesPerBank[gBattleScripting.bank]];
+ break;
+ case B_TXT_EFF_ABILITY: // effect bank ability
+ toCpy = gAbilityNames[gAbilitiesPerBank[gEffectBank]];
+ break;
+ case B_TXT_TRAINER1_CLASS: // trainer class name
+ if (gBattleTypeFlags & BATTLE_TYPE_SECRET_BASE)
+ toCpy = gTrainerClassNames[GetSecretBaseTrainerNameIndex()];
+ else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00)
+ toCpy = gTrainerClassNames[sub_8068BB0()];
+ else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_3FE)
+ toCpy = gTrainerClassNames[sub_81A4D00()];
+ else if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
+ toCpy = gTrainerClassNames[GetFrontierOpponentClass(gTrainerBattleOpponent_A)];
+ else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
+ toCpy = gTrainerClassNames[sub_81D5530(gTrainerBattleOpponent_A)];
+ else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER)
+ toCpy = gTrainerClassNames[GetEreaderTrainerClassId()];
+ else
+ toCpy = gTrainerClassNames[gTrainers[gTrainerBattleOpponent_A].trainerClass];
+ break;
+ case B_TXT_TRAINER1_NAME: // trainer1 name
+ if (gBattleTypeFlags & BATTLE_TYPE_SECRET_BASE)
+ {
+ for (i = 0; i < (s32) ARRAY_COUNT(gBattleResources->secretBase->trainerName); i++)
+ text[i] = gBattleResources->secretBase->trainerName[i];
+ text[i] = EOS;
+ ConvertInternationalString(text, gBattleResources->secretBase->language);
+ toCpy = text;
+ }
+ else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_C00)
+ {
+ toCpy = gLinkPlayers[multiplayerID ^ BIT_SIDE].name;
+ }
+ else if (gTrainerBattleOpponent_A == TRAINER_OPPONENT_3FE)
+ {
+ sub_81A4D50(text);
+ toCpy = text;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
+ {
+ GetFrontierTrainerName(text, gTrainerBattleOpponent_A);
+ toCpy = text;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
+ {
+ sub_81D5554(text, gTrainerBattleOpponent_A);
+ toCpy = text;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER)
+ {
+ GetEreaderTrainerName(text);
+ toCpy = text;
+ }
+ else
+ {
+ toCpy = gTrainers[gTrainerBattleOpponent_A].trainerName;
+ }
+ break;
+ case B_TXT_1E: // link player name?
+ toCpy = gLinkPlayers[multiplayerID].name;
+ break;
+ case B_TXT_1F: // link partner name?
+ toCpy = gLinkPlayers[sub_806D864(2 ^ gLinkPlayers[multiplayerID].lp_field_18)].name;
+ break;
+ case B_TXT_20: // link opponent 1 name?
+ toCpy = gLinkPlayers[sub_806D864(1 ^ gLinkPlayers[multiplayerID].lp_field_18)].name;
+ break;
+ case B_TXT_21: // link opponent 2 name?
+ toCpy = gLinkPlayers[sub_806D864(3 ^ gLinkPlayers[multiplayerID].lp_field_18)].name;
+ break;
+ case B_TXT_22: // link scripting active name
+ toCpy = gLinkPlayers[sub_806D864(gBattleScripting.bank)].name;
+ break;
+ case B_TXT_PLAYER_NAME: // player name
+ if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
+ toCpy = gLinkPlayers[0].name;
+ else
+ toCpy = gSaveBlock2Ptr->playerName;
+ break;
+ case B_TXT_TRAINER1_LOSE_TEXT: // trainerA lose text
+ if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
+ {
+ sub_81A36D0(2, gTrainerBattleOpponent_A);
+ toCpy = gStringVar4;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
+ {
+ sub_81D572C(4, gTrainerBattleOpponent_A);
+ toCpy = gStringVar4;
+ }
+ else
+ {
+ toCpy = GetTrainer1LoseText();
+ }
+ break;
+ case B_TXT_TRAINER1_WIN_TEXT: // trainerA win text
+ if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
+ {
+ sub_81A36D0(1, gTrainerBattleOpponent_A);
+ toCpy = gStringVar4;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
+ {
+ sub_81D572C(3, gTrainerBattleOpponent_A);
+ toCpy = gStringVar4;
+ }
+ break;
+ case B_TXT_26: // ?
+ HANDLE_NICKNAME_STRING_CASE(gBattleScripting.bank, *(&gBattleStruct->field_52))
+ break;
+ case B_TXT_PC_CREATOR_NAME: // lanette pc
+ if (FlagGet(SYS_PC_LANETTE))
+ toCpy = gText_Lanettes;
+ else
+ toCpy = gText_Someones;
+ break;
+ case B_TXT_ATK_PREFIX2:
+ if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ toCpy = gText_AllyPkmnPrefix2;
+ else
+ toCpy = gText_FoePkmnPrefix3;
+ break;
+ case B_TXT_DEF_PREFIX2:
+ if (GetBankSide(gBankTarget) == SIDE_PLAYER)
+ toCpy = gText_AllyPkmnPrefix2;
+ else
+ toCpy = gText_FoePkmnPrefix3;
+ break;
+ case B_TXT_ATK_PREFIX1:
+ if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ toCpy = gText_AllyPkmnPrefix;
+ else
+ toCpy = gText_FoePkmnPrefix2;
+ break;
+ case B_TXT_DEF_PREFIX1:
+ if (GetBankSide(gBankTarget) == SIDE_PLAYER)
+ toCpy = gText_AllyPkmnPrefix;
+ else
+ toCpy = gText_FoePkmnPrefix2;
+ break;
+ case B_TXT_ATK_PREFIX3:
+ if (GetBankSide(gBankAttacker) == SIDE_PLAYER)
+ toCpy = gText_AllyPkmnPrefix3;
+ else
+ toCpy = gText_FoePkmnPrefix4;
+ break;
+ case B_TXT_DEF_PREFIX3:
+ if (GetBankSide(gBankTarget) == SIDE_PLAYER)
+ toCpy = gText_AllyPkmnPrefix3;
+ else
+ toCpy = gText_FoePkmnPrefix4;
+ break;
+ case B_TXT_TRAINER2_CLASS:
+ if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
+ toCpy = gTrainerClassNames[GetFrontierOpponentClass(gTrainerBattleOpponent_B)];
+ else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
+ toCpy = gTrainerClassNames[sub_81D5530(gTrainerBattleOpponent_B)];
+ else
+ toCpy = gTrainerClassNames[gTrainers[gTrainerBattleOpponent_B].trainerClass];
+ break;
+ case B_TXT_TRAINER2_NAME:
+ if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
+ {
+ GetFrontierTrainerName(text, gTrainerBattleOpponent_B);
+ toCpy = text;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
+ {
+ sub_81D5554(text, gTrainerBattleOpponent_B);
+ toCpy = text;
+ }
+ else
+ {
+ toCpy = gTrainers[gTrainerBattleOpponent_B].trainerName;
+ }
+ break;
+ case B_TXT_TRAINER2_LOSE_TEXT:
+ if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
+ {
+ sub_81A36D0(2, gTrainerBattleOpponent_B);
+ toCpy = gStringVar4;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
+ {
+ sub_81D572C(4, gTrainerBattleOpponent_B);
+ toCpy = gStringVar4;
+ }
+ else
+ {
+ toCpy = GetTrainer2LoseText();
+ }
+ break;
+ case B_TXT_TRAINER2_WIN_TEXT:
+ if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER)
+ {
+ sub_81A36D0(1, gTrainerBattleOpponent_B);
+ toCpy = gStringVar4;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_x4000000)
+ {
+ sub_81D572C(3, gTrainerBattleOpponent_B);
+ toCpy = gStringVar4;
+ }
+ break;
+ case B_TXT_PARTNER_CLASS:
+ toCpy = gTrainerClassNames[GetFrontierOpponentClass(gPartnerTrainerId)];
+ break;
+ case B_TXT_PARTNER_NAME:
+ GetFrontierTrainerName(text, gPartnerTrainerId);
+ toCpy = text;
+ break;
+ }
+
+ // missing if (toCpy != NULL) check
+ while (*toCpy != EOS)
+ {
+ dst[dstID] = *toCpy;
+ dstID++;
+ toCpy++;
+ }
+ if (*src == B_TXT_TRAINER1_LOSE_TEXT || *src == B_TXT_TRAINER2_LOSE_TEXT
+ || *src == B_TXT_TRAINER1_WIN_TEXT || *src == B_TXT_TRAINER2_WIN_TEXT)
+ {
+ dst[dstID] = EXT_CTRL_CODE_BEGIN;
+ dstID++;
+ dst[dstID] = 9;
+ dstID++;
+ }
+ }
+ else
+ {
+ dst[dstID] = *src;
+ dstID++;
+ }
+ src++;
+ }
+
+ dst[dstID] = *src;
+ dstID++;
+
+ return dstID;
+}
+
+// TODO: move these to a general header like util.h
+#define ByteRead16(ptr) ((ptr)[0] | ((ptr)[1] << 8))
+#define ByteRead32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24)
+
+static void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst)
+{
+ u32 srcID = 1;
+ u32 value = 0;
+ u8 text[12];
+ u16 hword;
+
+ *dst = EOS;
+ while (src[srcID] != B_BUFF_EOS)
+ {
+ switch (src[srcID])
+ {
+ case B_BUFF_STRING: // battle string
+ hword = ByteRead16(&src[srcID + 1]);
+ StringAppend(dst, gBattleStringsTable[hword - BATTLESTRINGS_ID_ADDER]);
+ srcID += 3;
+ break;
+ case B_BUFF_NUMBER: // int to string
+ switch (src[srcID + 1])
+ {
+ case 1:
+ value = src[srcID + 3];
+ break;
+ case 2:
+ value = ByteRead16(&src[srcID + 3]);
+ break;
+ case 4:
+ value = ByteRead32(&src[srcID + 3]);
+ break;
+ }
+ ConvertIntToDecimalStringN(dst, value, 0, src[srcID + 2]);
+ srcID += src[srcID + 1] + 3;
+ break;
+ case B_BUFF_MOVE: // move name
+ StringAppend(dst, gMoveNames[ByteRead16(&src[srcID + 1])]);
+ srcID += 3;
+ break;
+ case B_BUFF_TYPE: // type name
+ StringAppend(dst, gTypeNames[src[srcID + 1]]);
+ srcID += 2;
+ break;
+ case B_BUFF_MON_NICK_WITH_PREFIX: // poke nick with prefix
+ if (GetBankSide(src[srcID + 1]) == SIDE_PLAYER)
+ {
+ GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, text);
+ }
+ else
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ StringAppend(dst, gText_FoePkmnPrefix);
+ else
+ StringAppend(dst, gText_WildPkmnPrefix);
+
+ GetMonData(&gEnemyParty[src[srcID + 2]], MON_DATA_NICKNAME, text);
+ }
+ StringGetEnd10(text);
+ StringAppend(dst, text);
+ srcID += 3;
+ break;
+ case B_BUFF_STAT: // stats
+ StringAppend(dst, gStatNamesTable[src[srcID + 1]]);
+ srcID += 2;
+ break;
+ case B_BUFF_SPECIES: // species name
+ GetSpeciesName(dst, ByteRead16(&src[srcID + 1]));
+ srcID += 3;
+ break;
+ case B_BUFF_MON_NICK: // poke nick without prefix
+ if (GetBankSide(src[srcID + 1]) == SIDE_PLAYER)
+ GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, dst);
+ else
+ GetMonData(&gEnemyParty[src[srcID + 2]], MON_DATA_NICKNAME, dst);
+ StringGetEnd10(dst);
+ srcID += 3;
+ break;
+ case B_BUFF_NEGATIVE_FLAVOUR: // flavour table
+ StringAppend(dst, gPokeblockWasTooXStringTable[src[srcID + 1]]);
+ srcID += 2;
+ break;
+ case B_BUFF_ABILITY: // ability names
+ StringAppend(dst, gAbilityNames[src[srcID + 1]]);
+ srcID += 2;
+ break;
+ case B_BUFF_ITEM: // item name
+ hword = ByteRead16(&src[srcID + 1]);
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ {
+ if (hword == ITEM_ENIGMA_BERRY)
+ {
+ if (gLinkPlayers[gBattleScripting.multiplayerId].lp_field_18 == gStringBank)
+ {
+ StringCopy(dst, gEnigmaBerries[gStringBank].name);
+ StringAppend(dst, gText_BerrySuffix);
+ }
+ else
+ StringAppend(dst, gText_EnigmaBerry);
+ }
+ else
+ CopyItemName(hword, dst);
+ }
+ else
+ CopyItemName(hword, dst);
+ srcID += 3;
+ break;
+ }
+ }
+}
+
+static void sub_814F8F8(u8* textBuff)
+{
+ s32 counter = 0;
+ u32 i = 0;
+
+ while (counter != 4)
+ {
+ if (sUnknownMoveTable[i] == MOVE_NONE)
+ counter++;
+ if (sUnknownMoveTable[i++] == gStringInfo->currentMove)
+ break;
+ }
+
+ if (counter >= 0)
+ {
+ if (counter <= 2)
+ StringCopy(textBuff, gText_SpaceIs); // is
+ else if (counter <= 4)
+ StringCopy(textBuff, gText_ApostropheS); // 's
+ }
+}
+
+static void sub_814F950(u8* dst)
+{
+ s32 counter = 0;
+ s32 i = 0;
+
+ while (*dst != EOS)
+ dst++;
+
+ while (counter != 4)
+ {
+ if (sUnknownMoveTable[i] == MOVE_NONE)
+ counter++;
+ if (sUnknownMoveTable[i++] == gStringInfo->currentMove)
+ break;
+ }
+
+ switch (counter)
+ {
+ case 0:
+ StringCopy(dst, gText_ExclamationMark);
+ break;
+ case 1:
+ StringCopy(dst, gText_ExclamationMark2);
+ break;
+ case 2:
+ StringCopy(dst, gText_ExclamationMark3);
+ break;
+ case 3:
+ StringCopy(dst, gText_ExclamationMark4);
+ break;
+ case 4:
+ StringCopy(dst, gText_ExclamationMark5);
+ break;
+ }
+}
+
+void sub_814F9EC(const u8 *text, u8 arg1)
+{
+ const u8 *r8 = gUnknown_085CD660[gBattleScripting.field_24];
+ bool32 r9;
+ struct TextSubPrinter textSubPrinter;
+ u8 speed;
+
+ if (arg1 & 0x80)
+ {
+ arg1 &= ~(0x80);
+ r9 = FALSE;
+ }
+ else
+ {
+ FillWindowPixelBuffer(arg1, r8[12 * arg1]);
+ r9 = TRUE;
+ }
+
+ textSubPrinter.current_text_offset = text;
+ textSubPrinter.windowId = arg1;
+ textSubPrinter.fontId = r8[(12 * arg1) + 1];
+ textSubPrinter.x = r8[(12 * arg1) + 2];
+ textSubPrinter.y = r8[(12 * arg1) + 3];
+ textSubPrinter.currentX = textSubPrinter.x;
+ textSubPrinter.currentY = textSubPrinter.y;
+ textSubPrinter.letterSpacing = r8[(12 * arg1) + 4];
+ textSubPrinter.lineSpacing = r8[(12 * arg1) + 5];
+ textSubPrinter.fontColor_l = 0;
+ textSubPrinter.fontColor_h = r8[(12 * arg1) + 7];
+ textSubPrinter.bgColor = r8[(12 * arg1) + 8];
+ textSubPrinter.shadowColor = r8[(12 * arg1) + 9];
+
+ if (textSubPrinter.x == 0xFF)
+ {
+ s32 var2;
+ u32 var = sub_80397C4(gBattleScripting.field_24, arg1);
+ var2 = GetStringCenterAlignXOffsetWithLetterSpacing(textSubPrinter.fontId, textSubPrinter.current_text_offset, var, textSubPrinter.letterSpacing);
+ textSubPrinter.x = textSubPrinter.currentX = var2;
+ }
+
+ if (arg1 == 0x16)
+ gTextFlags.flag_1 = 0;
+ else
+ gTextFlags.flag_1 = 1;
+
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED))
+ gTextFlags.flag_2 = 1;
+ else
+ gTextFlags.flag_2 = 0;
+
+ if (arg1 == 0 || arg1 == 0x16)
+ {
+ if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000))
+ speed = 1;
+ else if (gBattleTypeFlags & BATTLE_TYPE_RECORDED)
+ speed = sRecordedBattleTextSpeeds[sub_8185FC4()];
+ else
+ speed = sav2_get_text_speed();
+
+ gTextFlags.flag_0 = 1;
+ }
+ else
+ {
+ speed = r8[(12 * arg1) + 6];
+ gTextFlags.flag_0 = 0;
+ }
+
+ AddTextPrinter(&textSubPrinter, speed, NULL);
+
+ if (r9)
+ {
+ PutWindowTilemap(arg1);
+ CopyWindowToVram(arg1, 3);
+ }
+}
+
+void SetPpNumbersPaletteInMoveSelection(void)
+{
+ struct ChooseMoveStruct *chooseMoveStruct = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBank][4]);
+ const u16 *palPtr = gUnknown_08D85620;
+ u8 var = GetCurrentPpToMaxPpState(chooseMoveStruct->currentPp[gMoveSelectionCursor[gActiveBank]],
+ chooseMoveStruct->maxPp[gMoveSelectionCursor[gActiveBank]]);
+
+ gPlttBufferUnfaded[92] = palPtr[(var * 2) + 0];
+ gPlttBufferUnfaded[91] = palPtr[(var * 2) + 1];
+
+ CpuCopy16(&gPlttBufferUnfaded[92], &gPlttBufferFaded[92], sizeof(u16));
+ CpuCopy16(&gPlttBufferUnfaded[91], &gPlttBufferFaded[91], sizeof(u16));
+}
+
+u8 GetCurrentPpToMaxPpState(u8 currentPp, u8 maxPp)
+{
+ if (maxPp == currentPp)
+ {
+ return 3;
+ }
+ else if (maxPp <= 2)
+ {
+ if (currentPp > 1)
+ return 3;
+ else
+ return 2 - currentPp;
+ }
+ else if (maxPp <= 7)
+ {
+ if (currentPp > 2)
+ return 3;
+ else
+ return 2 - currentPp;
+ }
+ else
+ {
+ if (currentPp == 0)
+ return 2;
+ if (currentPp <= maxPp / 4)
+ return 1;
+ if (currentPp > maxPp / 2)
+ return 3;
+ }
+
+ return 0;
+}
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index e53292442..fb6a8272b 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -34,6 +34,7 @@
#include "pokemon_storage_system.h"
#include "task.h"
#include "naming_screen.h"
+#include "battle_string_ids.h"
// variables
@@ -1375,7 +1376,7 @@ static void atk02_attackstring(void)
return;
if (!(gHitMarker & (HITMARKER_NO_ATTACKSTRING | HITMARKER_ATTACKSTRING_PRINTED)))
{
- PrepareStringBattle(4, gBankAttacker);
+ PrepareStringBattle(STRINGID_USEDMOVE, gBankAttacker);
gHitMarker |= HITMARKER_ATTACKSTRING_PRINTED;
}
gBattlescriptCurrInstr++;
@@ -1771,11 +1772,11 @@ u8 TypeCalc(u16 move, u8 bankAtk, u8 bankDef)
return flags;
}
-u8 AI_TypeCalc(u16 move, u16 species, u8 ability)
+u8 AI_TypeCalc(u16 move, u16 targetSpecies, u8 targetAbility)
{
s32 i = 0;
u8 flags = 0;
- u8 type1 = gBaseStats[species].type1, type2 = gBaseStats[species].type2;
+ u8 type1 = gBaseStats[targetSpecies].type1, type2 = gBaseStats[targetSpecies].type2;
u8 moveType;
if (move == MOVE_STRUGGLE)
@@ -1783,7 +1784,7 @@ u8 AI_TypeCalc(u16 move, u16 species, u8 ability)
moveType = gBattleMoves[move].type;
- if (ability == ABILITY_LEVITATE && moveType == TYPE_GROUND)
+ if (targetAbility == ABILITY_LEVITATE && moveType == TYPE_GROUND)
{
flags = MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED;
}
@@ -1808,7 +1809,7 @@ u8 AI_TypeCalc(u16 move, u16 species, u8 ability)
i += 3;
}
}
- if (ability == ABILITY_WONDER_GUARD
+ if (targetAbility == ABILITY_WONDER_GUARD
&& (!(flags & MOVESTATUS_SUPEREFFECTIVE) || ((flags & (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)) == (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)))
&& gBattleMoves[move].power)
flags |= MOVESTATUS_NOTAFFECTED;
@@ -2000,7 +2001,7 @@ static void atk0B_healthbarupdate(void)
if (gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE && gDisableStructs[gActiveBank].substituteHP && !(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE))
{
- PrepareStringBattle(0x80, gActiveBank);
+ PrepareStringBattle(STRINGID_SUBSTITUTEDAMAGED, gActiveBank);
}
else
{
@@ -2157,7 +2158,7 @@ static void atk0D_critmessage(void)
{
if (gCritMultiplier == 2 && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
{
- PrepareStringBattle(0xD9, gBankAttacker);
+ PrepareStringBattle(STRINGID_CRITICALHIT, gBankAttacker);
gBattleCommunication[MSG_DISPLAY] = 1;
}
gBattlescriptCurrInstr++;
@@ -2229,22 +2230,22 @@ static void atk0F_resultmessage(void)
switch (gBattleMoveFlags & (u8)(~(MOVESTATUS_MISSED)))
{
case MOVESTATUS_SUPEREFFECTIVE:
- stringId = 0xDE;
+ stringId = STRINGID_SUPEREFFECTIVE;
break;
case MOVESTATUS_NOTVERYEFFECTIVE:
- stringId = 0xDD;
+ stringId = STRINGID_NOTVERYEFFECTIVE;
break;
case MOVESTATUS_ONEHITKO:
- stringId = 0xDA;
+ stringId = STRINGID_ONEHITKO;
break;
case MOVESTATUS_ENDURED:
- stringId = 0x99;
+ stringId = STRINGID_PKMNENDUREDHIT;
break;
case MOVESTATUS_FAILED:
- stringId = 0xE5;
+ stringId = STRINGID_BUTITFAILED;
break;
case MOVESTATUS_NOTAFFECTED:
- stringId = 0x1B;
+ stringId = STRINGID_ITDOESNTAFFECT;
break;
case MOVESTATUS_HUNGON:
gLastUsedItem = gBattleMons[gBankTarget].item;
@@ -2256,7 +2257,7 @@ static void atk0F_resultmessage(void)
default:
if (gBattleMoveFlags & MOVESTATUS_NOTAFFECTED)
{
- stringId = 0x1B;
+ stringId = STRINGID_ITDOESNTAFFECT;
}
else if (gBattleMoveFlags & MOVESTATUS_ONEHITKO)
{
@@ -2285,7 +2286,7 @@ static void atk0F_resultmessage(void)
}
else if (gBattleMoveFlags & MOVESTATUS_FAILED)
{
- stringId = 0xE5;
+ stringId = STRINGID_BUTITFAILED;
}
else
{
@@ -3592,7 +3593,7 @@ static void atk23_getexp(void)
PREPARE_WORD_NUMBER_BUFFER(gBattleTextBuff3, 5, gBattleMoveDamage)
- PrepareStringBattle(0xD, gBattleStruct->expGetterBank);
+ PrepareStringBattle(STRINGID_PKMNGAINEDEXP, gBattleStruct->expGetterBank);
MonGainEVs(&gPlayerParty[gBattleStruct->expGetterId], gBattleMons[gBank1].species);
}
gBattleStruct->sentInPokes >>= 1;
@@ -6181,7 +6182,7 @@ static void atk5A_yesnoboxlearnmove(void)
u16 moveId = GetMonData(&gPlayerParty[gBattleStruct->expGetterId], MON_DATA_MOVE1 + movePosition);
if (IsHMMove2(moveId))
{
- PrepareStringBattle(0x13F, gActiveBank);
+ PrepareStringBattle(STRINGID_HMMOVESCANTBEFORGOTTEN, gActiveBank);
gBattleScripting.learnMoveState = 6;
}
else
@@ -11086,7 +11087,7 @@ static void atkEF_pokeball_catch_calculation(void)
{
if (gLastUsedItem == ITEM_MASTER_BALL)
{
- gBattleResults.unk5_1 = 1;
+ gBattleResults.usedMasterBall = TRUE;
}
else
{
diff --git a/src/battle_util.c b/src/battle_util.c
index c6762dd99..0a0badb33 100644
--- a/src/battle_util.c
+++ b/src/battle_util.c
@@ -132,6 +132,8 @@ extern const u8 BattleScript_MoveHPDrain[];
extern const u8 BattleScript_MoveHPDrain_PPLoss[];
extern const u8 BattleScript_FlashFireBoost[];
extern const u8 BattleScript_FlashFireBoost_PPLoss[];
+extern const u8 gUnknown_082DB592[];
+extern const u8 gUnknown_082DB591[];
extern const u8 BattleScript_ColorChangeActivates[];
extern const u8 BattleScript_RoughSkinActivates[];
extern const u8 BattleScript_ApplySecondaryEffect[];
@@ -353,7 +355,7 @@ void sub_803F850(u8 arg0)
{
s32 i;
- for (i = 0; i < sub_8009FCC(); i++)
+ for (i = 0; i < GetLinkPlayerCount(); i++)
gBattleExecBuffer |= gBitTable[arg0] << (i << 2);
gBattleExecBuffer &= ~(0x10000000 << arg0);
@@ -1859,13 +1861,12 @@ u8 CastformDataTypeChange(u8 bank)
return formChange;
}
-// We meet again, ABE.
-#ifdef NONMATCHING
+// The largest function in the game, but even it could not save itself from decompiling.
u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
{
u8 effect = 0;
- struct Pokemon* pokeAtk;
- struct Pokemon* pokeDef;
+ struct Pokemon *pokeAtk;
+ struct Pokemon *pokeDef;
u16 speciesAtk;
u16 speciesDef;
u32 pidAtk;
@@ -1893,12 +1894,11 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI)) // why isn't that check done at the beginning?
{
- int i; // r4
+ u8 moveType;
+ s32 i;
u16 move;
- // Hmm...
- #define moveType moveArg
- //u16 moveType;
u8 side;
+ u8 target1;
if (special)
gLastUsedAbility = special;
@@ -1918,44 +1918,45 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
switch (caseID)
{
case ABILITYEFFECT_ON_SWITCHIN: // 0
- //_08042A18
if (gBankAttacker >= gNoOfAllBanks)
gBankAttacker = bank;
switch (gLastUsedAbility)
{
case ABILITYEFFECT_SWITCH_IN_WEATHER:
- //_08042A86
- switch (weather_get_current())
+ if (!(gBattleTypeFlags & BATTLE_TYPE_RECORDED))
{
- case 3:
- case 5:
- case 13:
- if (!(gBattleWeather & WEATHER_RAIN_ANY))
- {
- gBattleWeather = (WEATHER_RAIN_TEMPORARY | WEATHER_RAIN_PERMANENT);
- gBattleScripting.animArg1 = 0xA;
- gBattleScripting.bank = bank;
- effect++;
- }
- break;
- case 8:
- if (!(gBattleWeather & WEATHER_SANDSTORM_ANY))
- {
- gBattleWeather = (WEATHER_SANDSTORM_PERMANENT | WEATHER_SANDSTORM_TEMPORARY);
- gBattleScripting.animArg1 = 0xC;
- gBattleScripting.bank = bank;
- effect++;
- }
- break;
- case 12:
- if (!(gBattleWeather & WEATHER_SUN_ANY))
+ switch (weather_get_current())
{
- gBattleWeather = (WEATHER_SUN_PERMANENT | WEATHER_SUN_TEMPORARY);
- gBattleScripting.animArg1 = 0xB;
- gBattleScripting.bank = bank;
- effect++;
+ case 3:
+ case 5:
+ case 13:
+ if (!(gBattleWeather & WEATHER_RAIN_ANY))
+ {
+ gBattleWeather = (WEATHER_RAIN_TEMPORARY | WEATHER_RAIN_PERMANENT);
+ gBattleScripting.animArg1 = B_ANIM_RAIN_CONTINUES;
+ gBattleScripting.bank = bank;
+ effect++;
+ }
+ break;
+ case 8:
+ if (!(gBattleWeather & WEATHER_SANDSTORM_ANY))
+ {
+ gBattleWeather = (WEATHER_SANDSTORM_PERMANENT | WEATHER_SANDSTORM_TEMPORARY);
+ gBattleScripting.animArg1 = B_ANIM_SANDSTORM_CONTINUES;
+ gBattleScripting.bank = bank;
+ effect++;
+ }
+ break;
+ case 12:
+ if (!(gBattleWeather & WEATHER_SUN_ANY))
+ {
+ gBattleWeather = (WEATHER_SUN_PERMANENT | WEATHER_SUN_TEMPORARY);
+ gBattleScripting.animArg1 = B_ANIM_SUN_CONTINUES;
+ gBattleScripting.bank = bank;
+ effect++;
+ }
+ break;
}
- break;
}
if (effect)
{
@@ -1964,7 +1965,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_DRIZZLE:
- //_08042B78
if (!(gBattleWeather & WEATHER_RAIN_PERMANENT))
{
gBattleWeather = (WEATHER_RAIN_PERMANENT | WEATHER_RAIN_TEMPORARY);
@@ -1974,7 +1974,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_SAND_STREAM:
- //_08042BA8
if (!(gBattleWeather & WEATHER_SANDSTORM_PERMANENT))
{
gBattleWeather = (WEATHER_SANDSTORM_PERMANENT | WEATHER_SANDSTORM_TEMPORARY);
@@ -1984,7 +1983,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_DROUGHT:
- //_08042BD8
if (!(gBattleWeather & WEATHER_SUN_PERMANENT))
{
gBattleWeather = (WEATHER_SUN_PERMANENT | WEATHER_SUN_TEMPORARY);
@@ -1994,7 +1992,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_INTIMIDATE:
- //_08042C08
if (!(gSpecialStatuses[bank].intimidatedPoke))
{
gStatuses3[bank] |= STATUS3_INTIMIDATE_POKES;
@@ -2002,13 +1999,12 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_FORECAST:
- //_08042C3C
effect = CastformDataTypeChange(bank);
if (effect != 0)
{
BattleScriptPushCursorAndCallback(BattleScript_CastformChange);
gBattleScripting.bank = bank;
- gBattleStruct->formToChangeInto = effect - 1;
+ *(&gBattleStruct->formToChangeInto) = effect - 1;
}
break;
case ABILITY_TRACE:
@@ -2021,18 +2017,15 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
case ABILITY_CLOUD_NINE:
case ABILITY_AIR_LOCK:
{
- u8 i;
-
- for (i = 0; i < gNoOfAllBanks; i++)
+ // that's a weird choice for a variable, why not use i or bank?
+ for (target1 = 0; target1 < gNoOfAllBanks; target1++)
{
- // TODO: i should be in r6 here
- //asm("":::"r4","r5");
- effect = CastformDataTypeChange(i);
+ effect = CastformDataTypeChange(target1);
if (effect != 0)
{
BattleScriptPushCursorAndCallback(BattleScript_CastformChange);
- gBattleScripting.bank = i;
- gBattleStruct->formToChangeInto = effect - 1;
+ gBattleScripting.bank = target1;
+ *(&gBattleStruct->formToChangeInto) = effect - 1;
break;
}
}
@@ -2041,18 +2034,16 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_ENDTURN: // 1
- //_08042CDC
if (gBattleMons[bank].hp != 0)
{
gBankAttacker = bank;
switch (gLastUsedAbility)
{
case ABILITY_RAIN_DISH:
- //_08042D22
if (WEATHER_HAS_EFFECT && (gBattleWeather & WEATHER_RAIN_ANY)
&& gBattleMons[bank].maxHP > gBattleMons[bank].hp)
{
- gLastUsedAbility = ABILITY_RAIN_DISH; //why
+ gLastUsedAbility = ABILITY_RAIN_DISH; // why
BattleScriptPushCursorAndCallback(BattleScript_RainDishActivates);
gBattleMoveDamage = gBattleMons[bank].maxHP / 16;
if (gBattleMoveDamage == 0)
@@ -2062,7 +2053,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_SHED_SKIN:
- //_08042DA0
if ((gBattleMons[bank].status1 & STATUS_ANY) && (Random() % 3) == 0)
{
if (gBattleMons[bank].status1 & (STATUS_POISON | STATUS_TOXIC_POISON))
@@ -2076,7 +2066,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
if (gBattleMons[bank].status1 & STATUS_FREEZE)
StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn);
gBattleMons[bank].status1 = 0;
- gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); // fix nighmare glitch
+ gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); // fix nightmare glitch
gBattleScripting.bank = gActiveBank = bank;
BattleScriptPushCursorAndCallback(BattleScript_ShedSkinActivates);
EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[bank].status1);
@@ -2085,7 +2075,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_SPEED_BOOST:
- //_08042E84
if (gBattleMons[bank].statStages[STAT_STAGE_SPEED] < 0xC && gDisableStructs[bank].isFirstTurn != 2)
{
gBattleMons[bank].statStages[STAT_STAGE_SPEED]++;
@@ -2103,7 +2092,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_MOVES_BLOCK: // 2
- //_08042EF8
if (gLastUsedAbility == ABILITY_SOUNDPROOF)
{
for (i = 0; sSoundMovesTable[i] != 0xFFFF; i++)
@@ -2132,6 +2120,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
gBattlescriptCurrInstr = BattleScript_MoveHPDrain;
else
gBattlescriptCurrInstr = BattleScript_MoveHPDrain_PPLoss;
+
effect = 1;
}
break;
@@ -2142,11 +2131,11 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
gBattlescriptCurrInstr = BattleScript_MoveHPDrain;
else
gBattlescriptCurrInstr = BattleScript_MoveHPDrain_PPLoss;
+
effect = 1;
}
break;
case ABILITY_FLASH_FIRE:
- //_0804305C
if (moveType == TYPE_FIRE && !(gBattleMons[bank].status1 & STATUS_FREEZE))
{
if (!(gBattleResources->flags->flags[bank] & UNKNOWN_FLAG_FLASH_FIRE))
@@ -2156,6 +2145,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
gBattlescriptCurrInstr = BattleScript_FlashFireBoost;
else
gBattlescriptCurrInstr = BattleScript_FlashFireBoost_PPLoss;
+
gBattleResources->flags->flags[bank] |= UNKNOWN_FLAG_FLASH_FIRE;
effect = 2;
}
@@ -2166,6 +2156,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
gBattlescriptCurrInstr = BattleScript_FlashFireBoost;
else
gBattlescriptCurrInstr = BattleScript_FlashFireBoost_PPLoss;
+
effect = 2;
}
}
@@ -2176,9 +2167,9 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
if (gBattleMons[bank].maxHP == gBattleMons[bank].hp)
{
if ((gProtectStructs[gBankAttacker].notFirstStrike))
- gBattlescriptCurrInstr = BattleScript_MoveHPDrain;
+ gBattlescriptCurrInstr = gUnknown_082DB592;
else
- gBattlescriptCurrInstr = BattleScript_MoveHPDrain_PPLoss;
+ gBattlescriptCurrInstr = gUnknown_082DB591;
}
else
{
@@ -2191,11 +2182,9 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_CONTACT: // 4
- //_080431AC
switch (gLastUsedAbility)
{
case ABILITY_COLOR_CHANGE:
- //_08043288
if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
&& move != MOVE_STRUGGLE
&& gBattleMoves[move].power != 0
@@ -2206,17 +2195,13 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
{
gBattleMons[bank].type1 = moveType;
gBattleMons[bank].type2 = moveType;
- gBattleTextBuff1[0] = 0xFD;
- gBattleTextBuff1[1] = 3;
- gBattleTextBuff1[2] = moveType;
- gBattleTextBuff1[3] = 0xFF;
+ PREPARE_TYPE_BUFFER(gBattleTextBuff1, moveType)
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_ColorChangeActivates;
effect++;
}
break;
case ABILITY_ROUGH_SKIN:
- //_08043350
if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
&& gBattleMons[gBankAttacker].hp != 0
&& !gProtectStructs[gBankAttacker].confusionSelfDmg
@@ -2232,7 +2217,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_EFFECT_SPORE:
- //_08043410
if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
&& gBattleMons[gBankAttacker].hp != 0
&& !gProtectStructs[gBankAttacker].confusionSelfDmg
@@ -2244,9 +2228,11 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
{
gBattleCommunication[MOVE_EFFECT_BYTE] = Random() & 3;
} while (gBattleCommunication[MOVE_EFFECT_BYTE] == 0);
- if (gBattleCommunication[MOVE_EFFECT_BYTE] == 3)
- gBattleCommunication[MOVE_EFFECT_BYTE] += 2;
- gBattleCommunication[MOVE_EFFECT_BYTE] += 0x40;
+
+ if (gBattleCommunication[MOVE_EFFECT_BYTE] == MOVE_EFFECT_BURN)
+ gBattleCommunication[MOVE_EFFECT_BYTE] += 2; // 5 MOVE_EFFECT_PARALYSIS
+
+ gBattleCommunication[MOVE_EFFECT_BYTE] += MOVE_EFFECT_AFFECTS_USER;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
@@ -2261,7 +2247,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
&& (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
&& (Random() % 3) == 0)
{
- gBattleCommunication[MOVE_EFFECT_BYTE] = 0x42;
+ gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_POISON;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
@@ -2276,7 +2262,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
&& (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
&& (Random() % 3) == 0)
{
- gBattleCommunication[MOVE_EFFECT_BYTE] = 0x45;
+ gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_PARALYSIS;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
@@ -2291,7 +2277,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
&& (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
&& (Random() % 3) == 0)
{
- gBattleCommunication[MOVE_EFFECT_BYTE] = 0x43;
+ gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_BURN;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
@@ -2299,7 +2285,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_CUTE_CHARM:
- //_0804379C
if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
&& gBattleMons[gBankAttacker].hp != 0
&& !gProtectStructs[gBankAttacker].confusionSelfDmg
@@ -2310,10 +2295,10 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
&& gBattleMons[gBankAttacker].ability != ABILITY_OBLIVIOUS
&& GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != GetGenderFromSpeciesAndPersonality(speciesDef, pidDef)
&& !(gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION)
- && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != 0xFF
- && GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) != 0xFF)
+ && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != MON_GENDERLESS
+ && GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) != MON_GENDERLESS)
{
- gBattleMons[gBankAttacker].status2 |= (gBitTable[gBankTarget] << 0x10);
+ gBattleMons[gBankAttacker].status2 |= STATUS2_INFATUATED_WITH(gBankTarget);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_CuteCharmActivates;
effect++;
@@ -2323,28 +2308,26 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
break;
case ABILITYEFFECT_IMMUNITY: // 5
{
- #define i bank
- for (i = 0; i < gNoOfAllBanks; i++)
+ for (bank = 0; bank < gNoOfAllBanks; bank++)
{
- switch (gBattleMons[i].ability)
+ switch (gBattleMons[bank].ability)
{
case ABILITY_IMMUNITY:
- if (gBattleMons[i].status1 & (STATUS_POISON | STATUS_TOXIC_POISON | 0xF00)) // TODO: what is 0xF00?
+ if (gBattleMons[bank].status1 & (STATUS_POISON | STATUS_TOXIC_POISON | STATUS_TOXIC_COUNTER))
{
StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn);
effect = 1;
}
break;
case ABILITY_OWN_TEMPO:
- //_08043A7C
- if (gBattleMons[i].status2 & STATUS2_CONFUSION)
+ if (gBattleMons[bank].status2 & STATUS2_CONFUSION)
{
StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn);
effect = 2;
}
break;
case ABILITY_LIMBER:
- if (gBattleMons[i].status1 & STATUS_PARALYSIS)
+ if (gBattleMons[bank].status1 & STATUS_PARALYSIS)
{
StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn);
effect = 1;
@@ -2352,30 +2335,29 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
break;
case ABILITY_INSOMNIA:
case ABILITY_VITAL_SPIRIT:
- if (gBattleMons[i].status1 & STATUS_SLEEP)
+ if (gBattleMons[bank].status1 & STATUS_SLEEP)
{
- gBattleMons[i].status2 &= ~(STATUS2_NIGHTMARE);
+ gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE);
StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn);
effect = 1;
}
break;
case ABILITY_WATER_VEIL:
- if (gBattleMons[i].status1 & STATUS_BURN)
+ if (gBattleMons[bank].status1 & STATUS_BURN)
{
StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn);
effect = 1;
}
break;
case ABILITY_MAGMA_ARMOR:
- if (gBattleMons[i].status1 & STATUS_FREEZE)
+ if (gBattleMons[bank].status1 & STATUS_FREEZE)
{
StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn);
effect = 1;
}
break;
case ABILITY_OBLIVIOUS:
- //_08043B70
- if (gBattleMons[i].status2 & STATUS2_INFATUATION)
+ if (gBattleMons[bank].status2 & STATUS2_INFATUATION)
{
StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn);
effect = 3;
@@ -2387,56 +2369,52 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
switch (effect)
{
case 1: // status cleared
- gBattleMons[i].status1 = 0;
+ gBattleMons[bank].status1 = 0;
break;
case 2: // get rid of confusion
- gBattleMons[i].status2 &= ~(STATUS2_CONFUSION);
+ gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION);
break;
case 3: // get rid of infatuation
- gBattleMons[i].status2 &= ~(STATUS2_INFATUATION);
+ gBattleMons[bank].status2 &= ~(STATUS2_INFATUATION);
break;
}
+
BattleScriptPushCursor();
gBattlescriptCurrInstr = gUnknown_082DB68C;
- gBattleScripting.bank = i;
- gActiveBank = i;
+ gBattleScripting.bank = bank;
+ gActiveBank = bank;
EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
MarkBufferBankForExecution(gActiveBank);
return effect;
}
}
- #undef i
}
break;
case ABILITYEFFECT_FORECAST: // 6
+ for (bank = 0; bank < gNoOfAllBanks; bank++)
{
- #define i bank
- for (i = 0; i < gNoOfAllBanks; i++)
+ if (gBattleMons[bank].ability == ABILITY_FORECAST)
{
- if (gBattleMons[i].ability == ABILITY_FORECAST)
+ effect = CastformDataTypeChange(bank);
+ if (effect)
{
- effect = CastformDataTypeChange(i);
- if (effect)
- {
- BattleScriptPushCursorAndCallback(BattleScript_CastformChange);
- gBattleScripting.bank = i;
- gBattleStruct->formToChangeInto = effect - 1;
- return effect;
- }
+ BattleScriptPushCursorAndCallback(BattleScript_CastformChange);
+ gBattleScripting.bank = bank;
+ *(&gBattleStruct->formToChangeInto) = effect - 1;
+ return effect;
}
}
- #undef i
}
break;
case ABILITYEFFECT_SYNCHRONIZE: // 7
- //_08043CBC
if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT))
{
gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT);
- gBattleStruct->synchronizeMoveEffect &= 0x3F;
- if (gBattleStruct->synchronizeMoveEffect == 6)
- gBattleStruct->synchronizeMoveEffect = 2;
- gBattleCommunication[MOVE_EFFECT_BYTE] = gBattleStruct->synchronizeMoveEffect + 0x40;
+ gBattleStruct->synchronizeMoveEffect &= ~(MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN);
+ if (gBattleStruct->synchronizeMoveEffect == MOVE_EFFECT_TOXIC)
+ gBattleStruct->synchronizeMoveEffect = MOVE_EFFECT_POISON;
+
+ gBattleCommunication[MOVE_EFFECT_BYTE] = gBattleStruct->synchronizeMoveEffect + MOVE_EFFECT_AFFECTS_USER;
gBattleScripting.bank = gBankTarget;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_SynchronizeActivates;
@@ -2448,9 +2426,10 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT))
{
gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT);
- gBattleStruct->synchronizeMoveEffect &= 0x3F;
- if (gBattleStruct->synchronizeMoveEffect == 6)
- gBattleStruct->synchronizeMoveEffect = 2;
+ gBattleStruct->synchronizeMoveEffect &= ~(MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN);
+ if (gBattleStruct->synchronizeMoveEffect == MOVE_EFFECT_TOXIC)
+ gBattleStruct->synchronizeMoveEffect = MOVE_EFFECT_POISON;
+
gBattleCommunication[MOVE_EFFECT_BYTE] = gBattleStruct->synchronizeMoveEffect;
gBattleScripting.bank = gBankAttacker;
BattleScriptPushCursor();
@@ -2478,15 +2457,16 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
{
if (gBattleMons[i].ability == ABILITY_TRACE && (gStatuses3[i] & STATUS3_TRACE))
{
- u8 opposite = (GetBankIdentity(i) ^ 1) & 1;
- u8 target1 = GetBankByIdentity(opposite);
- u8 target2 = GetBankByIdentity(opposite + 2);
+ u8 target2;
+ side = (GetBankIdentity(i) ^ BIT_SIDE) & BIT_SIDE; // side of the opposing pokemon
+ target1 = GetBankByIdentity(side);
+ target2 = GetBankByIdentity(side + BIT_MON);
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
if (gBattleMons[target1].ability != 0 && gBattleMons[target1].hp != 0
&& gBattleMons[target2].ability != 0 && gBattleMons[target2].hp != 0)
{
- gActiveBank = GetBankByIdentity(((Random() & 1) * 2) | opposite);
+ gActiveBank = GetBankByIdentity(((Random() & 1) * 2) | side);
gBattleMons[i].ability = gBattleMons[gActiveBank].ability;
gLastUsedAbility = gBattleMons[gActiveBank].ability;
effect++;
@@ -2522,16 +2502,8 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
gStatuses3[i] &= ~(STATUS3_TRACE);
gBattleScripting.bank = i;
- gBattleTextBuff1[0] = 0xFD;
- gBattleTextBuff1[1] = 4;
- gBattleTextBuff1[2] = gActiveBank;
- gBattleTextBuff1[3] = gBattlePartyID[gActiveBank];
- gBattleTextBuff1[4] = EOS;
-
- gBattleTextBuff2[0] = 0xFD;
- gBattleTextBuff2[1] = 9;
- gBattleTextBuff2[2] = gLastUsedAbility;
- gBattleTextBuff2[3] = EOS;
+ PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gActiveBank, gBattlePartyID[gActiveBank])
+ PREPARE_ABILITY_BUFFER(gBattleTextBuff2, gLastUsedAbility)
break;
}
}
@@ -2656,3045 +2628,13 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
}
- if (effect && caseID < 0xC && gLastUsedAbility != 0xFF)
+
+ if (effect && caseID < ABILITYEFFECT_CHECK_OTHER_SIDE && gLastUsedAbility != 0xFF)
RecordAbilityBattle(bank, gLastUsedAbility);
}
return effect;
}
-#else
-__attribute__((naked))
-u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
-{
- asm(
- "\n\
- .syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x28\n\
- ldr r4, [sp, 0x48]\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- str r0, [sp, 0x4]\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- mov r10, r1\n\
- lsls r2, 24\n\
- lsrs r6, r2, 24\n\
- lsls r3, 24\n\
- lsrs r3, 24\n\
- mov r8, r3\n\
- lsls r4, 16\n\
- lsrs r4, 16\n\
- movs r0, 0\n\
- mov r9, r0\n\
- ldr r5, =gBankAttacker\n\
- ldr r1, =gNoOfAllBanks\n\
- ldrb r0, [r5]\n\
- ldrb r1, [r1]\n\
- cmp r0, r1\n\
- bcc _08042864\n\
- mov r1, r10\n\
- strb r1, [r5]\n\
-_08042864:\n\
- ldrb r0, [r5]\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _08042894\n\
- ldr r1, =gBattlePartyID\n\
- ldrb r0, [r5]\n\
- lsls r0, 1\n\
- adds r0, r1\n\
- ldrh r1, [r0]\n\
- movs r0, 0x64\n\
- muls r1, r0\n\
- ldr r0, =gPlayerParty\n\
- b _080428A4\n\
- .pool\n\
-_08042894:\n\
- ldr r1, =gBattlePartyID\n\
- ldrb r0, [r5]\n\
- lsls r0, 1\n\
- adds r0, r1\n\
- ldrh r1, [r0]\n\
- movs r0, 0x64\n\
- muls r1, r0\n\
- ldr r0, =gEnemyParty\n\
-_080428A4:\n\
- adds r7, r1, r0\n\
- ldr r5, =gBankTarget\n\
- ldr r1, =gNoOfAllBanks\n\
- ldrb r0, [r5]\n\
- ldrb r1, [r1]\n\
- cmp r0, r1\n\
- bcc _080428B6\n\
- mov r2, r10\n\
- strb r2, [r5]\n\
-_080428B6:\n\
- ldrb r0, [r5]\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _080428E8\n\
- ldr r1, =gBattlePartyID\n\
- ldrb r0, [r5]\n\
- lsls r0, 1\n\
- adds r0, r1\n\
- ldrh r1, [r0]\n\
- movs r0, 0x64\n\
- muls r1, r0\n\
- ldr r0, =gPlayerParty\n\
- b _080428F8\n\
- .pool\n\
-_080428E8:\n\
- ldr r1, =gBattlePartyID\n\
- ldrb r0, [r5]\n\
- lsls r0, 1\n\
- adds r0, r1\n\
- ldrh r1, [r0]\n\
- movs r0, 0x64\n\
- muls r1, r0\n\
- ldr r0, =gEnemyParty\n\
-_080428F8:\n\
- adds r5, r1, r0\n\
- adds r0, r7, 0\n\
- movs r1, 0xB\n\
- bl GetMonData\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x8]\n\
- adds r0, r7, 0\n\
- movs r1, 0\n\
- bl GetMonData\n\
- str r0, [sp, 0x10]\n\
- adds r0, r5, 0\n\
- movs r1, 0xB\n\
- bl GetMonData\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0xC]\n\
- adds r0, r5, 0\n\
- movs r1, 0\n\
- bl GetMonData\n\
- str r0, [sp, 0x14]\n\
- ldr r0, =gBattleTypeFlags\n\
- ldr r0, [r0]\n\
- movs r1, 0x80\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0804293A\n\
- bl _0804443A\n\
-_0804293A:\n\
- mov r3, r8\n\
- cmp r3, 0\n\
- beq _08042958\n\
- ldr r0, =gLastUsedAbility\n\
- strb r3, [r0]\n\
- adds r7, r0, 0\n\
- b _0804296E\n\
- .pool\n\
-_08042958:\n\
- ldr r2, =gLastUsedAbility\n\
- ldr r1, =gBattleMons\n\
- movs r0, 0x58\n\
- mov r5, r10\n\
- muls r5, r0\n\
- adds r0, r5, 0\n\
- adds r0, r1\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- strb r0, [r2]\n\
- adds r7, r2, 0\n\
-_0804296E:\n\
- cmp r4, 0\n\
- beq _08042980\n\
- adds r5, r4, 0\n\
- b _08042984\n\
- .pool\n\
-_08042980:\n\
- ldr r0, =gCurrentMove\n\
- ldrh r5, [r0]\n\
-_08042984:\n\
- ldr r1, =gBattleStruct\n\
- ldr r0, [r1]\n\
- ldrb r0, [r0, 0x13]\n\
- mov r8, r1\n\
- cmp r0, 0\n\
- beq _080429A0\n\
- movs r3, 0x3F\n\
- ands r3, r0\n\
- b _080429AC\n\
- .pool\n\
-_080429A0:\n\
- ldr r1, =gBattleMoves\n\
- lsls r0, r5, 1\n\
- adds r0, r5\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r3, [r0, 0x2]\n\
-_080429AC:\n\
- ldr r0, [sp, 0x4]\n\
- cmp r0, 0x13\n\
- bls _080429B6\n\
- bl _0804441E\n\
-_080429B6:\n\
- lsls r0, 2\n\
- ldr r1, =_080429C8\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .pool\n\
- .align 2, 0\n\
-_080429C8:\n\
- .4byte _08042A18\n\
- .4byte _08042CDC\n\
- .4byte _08042EF8\n\
- .4byte _08042F8C\n\
- .4byte _080431AC\n\
- .4byte _08043908\n\
- .4byte _08043C6C\n\
- .4byte _08043CBC\n\
- .4byte _08043D40\n\
- .4byte _08043DC4\n\
- .4byte _08043FE4\n\
- .4byte _08043E08\n\
- .4byte _08044028\n\
- .4byte _08044084\n\
- .4byte _080440E0\n\
- .4byte _080441DC\n\
- .4byte _08044220\n\
- .4byte _0804427C\n\
- .4byte _080443EC\n\
- .4byte _08044196\n\
-_08042A18:\n\
- ldr r2, =gBankAttacker\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r1, [r2]\n\
- adds r5, r0, 0\n\
- ldrb r3, [r5]\n\
- cmp r1, r3\n\
- bcc _08042A2A\n\
- mov r0, r10\n\
- strb r0, [r2]\n\
-_08042A2A:\n\
- ldrb r0, [r7]\n\
- cmp r0, 0x2D\n\
- bne _08042A32\n\
- b _08042BA8\n\
-_08042A32:\n\
- cmp r0, 0x2D\n\
- bgt _08042A64\n\
- cmp r0, 0xD\n\
- bne _08042A3C\n\
- b _08042CA4\n\
-_08042A3C:\n\
- cmp r0, 0xD\n\
- bgt _08042A54\n\
- cmp r0, 0x2\n\
- bne _08042A46\n\
- b _08042B78\n\
-_08042A46:\n\
- bl _0804441E\n\
- .pool\n\
-_08042A54:\n\
- cmp r0, 0x16\n\
- bne _08042A5A\n\
- b _08042C08\n\
-_08042A5A:\n\
- cmp r0, 0x24\n\
- bne _08042A60\n\
- b _08042C68\n\
-_08042A60:\n\
- bl _0804441E\n\
-_08042A64:\n\
- cmp r0, 0x46\n\
- bne _08042A6A\n\
- b _08042BD8\n\
-_08042A6A:\n\
- cmp r0, 0x46\n\
- bgt _08042A78\n\
- cmp r0, 0x3B\n\
- bne _08042A74\n\
- b _08042C3C\n\
-_08042A74:\n\
- bl _0804441E\n\
-_08042A78:\n\
- cmp r0, 0x4D\n\
- bne _08042A7E\n\
- b _08042CA4\n\
-_08042A7E:\n\
- cmp r0, 0xFF\n\
- beq _08042A86\n\
- bl _0804441E\n\
-_08042A86:\n\
- ldr r0, =gBattleTypeFlags\n\
- ldr r0, [r0]\n\
- movs r1, 0x80\n\
- lsls r1, 17\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08042B4C\n\
- bl weather_get_current\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- subs r0, 0x3\n\
- cmp r0, 0xA\n\
- bhi _08042B4C\n\
- lsls r0, 2\n\
- ldr r1, =_08042AB4\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .pool\n\
- .align 2, 0\n\
-_08042AB4:\n\
- .4byte _08042AE0\n\
- .4byte _08042B4C\n\
- .4byte _08042AE0\n\
- .4byte _08042B4C\n\
- .4byte _08042B4C\n\
- .4byte _08042B04\n\
- .4byte _08042B4C\n\
- .4byte _08042B4C\n\
- .4byte _08042B4C\n\
- .4byte _08042B28\n\
- .4byte _08042AE0\n\
-_08042AE0:\n\
- ldr r2, =gBattleWeather\n\
- ldrh r1, [r2]\n\
- movs r0, 0x7\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08042B4C\n\
- movs r0, 0x5\n\
- strh r0, [r2]\n\
- ldr r1, =gBattleScripting\n\
- movs r0, 0xA\n\
- strb r0, [r1, 0x10]\n\
- mov r2, r10\n\
- strb r2, [r1, 0x17]\n\
- b _08042B42\n\
- .pool\n\
-_08042B04:\n\
- ldr r3, =gBattleWeather\n\
- ldrh r1, [r3]\n\
- movs r2, 0x18\n\
- adds r0, r2, 0\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08042B4C\n\
- strh r2, [r3]\n\
- ldr r1, =gBattleScripting\n\
- movs r0, 0xC\n\
- strb r0, [r1, 0x10]\n\
- mov r3, r10\n\
- strb r3, [r1, 0x17]\n\
- b _08042B42\n\
- .pool\n\
-_08042B28:\n\
- ldr r3, =gBattleWeather\n\
- ldrh r1, [r3]\n\
- movs r2, 0x60\n\
- adds r0, r2, 0\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08042B4C\n\
- strh r2, [r3]\n\
- ldr r1, =gBattleScripting\n\
- movs r0, 0xB\n\
- strb r0, [r1, 0x10]\n\
- mov r5, r10\n\
- strb r5, [r1, 0x17]\n\
-_08042B42:\n\
- mov r0, r9\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
-_08042B4C:\n\
- mov r0, r9\n\
- cmp r0, 0\n\
- bne _08042B56\n\
- bl _0804443A\n\
-_08042B56:\n\
- bl weather_get_current\n\
- ldr r1, =gBattleCommunication\n\
- strb r0, [r1, 0x5]\n\
- ldr r0, =gUnknown_082DACE7\n\
- bl BattleScriptPushCursorAndCallback\n\
- bl _0804441E\n\
- .pool\n\
-_08042B78:\n\
- ldr r2, =gBattleWeather\n\
- ldrh r1, [r2]\n\
- movs r0, 0x4\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08042B88\n\
- bl _0804441E\n\
-_08042B88:\n\
- movs r0, 0x5\n\
- strh r0, [r2]\n\
- ldr r0, =BattleScript_DrizzleActivates\n\
- bl BattleScriptPushCursorAndCallback\n\
- ldr r0, =gBattleScripting\n\
- mov r1, r10\n\
- strb r1, [r0, 0x17]\n\
- bl _080443D0\n\
- .pool\n\
-_08042BA8:\n\
- ldr r2, =gBattleWeather\n\
- ldrh r1, [r2]\n\
- movs r0, 0x10\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08042BB8\n\
- bl _0804441E\n\
-_08042BB8:\n\
- movs r0, 0x18\n\
- strh r0, [r2]\n\
- ldr r0, =BattleScript_SandstreamActivates\n\
- bl BattleScriptPushCursorAndCallback\n\
- ldr r0, =gBattleScripting\n\
- mov r2, r10\n\
- strb r2, [r0, 0x17]\n\
- bl _080443D0\n\
- .pool\n\
-_08042BD8:\n\
- ldr r2, =gBattleWeather\n\
- ldrh r1, [r2]\n\
- movs r0, 0x40\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08042BE8\n\
- bl _0804441E\n\
-_08042BE8:\n\
- movs r0, 0x60\n\
- strh r0, [r2]\n\
- ldr r0, =BattleScript_DroughtActivates\n\
- bl BattleScriptPushCursorAndCallback\n\
- ldr r0, =gBattleScripting\n\
- mov r3, r10\n\
- strb r3, [r0, 0x17]\n\
- bl _080443D0\n\
- .pool\n\
-_08042C08:\n\
- ldr r0, =gSpecialStatuses\n\
- mov r5, r10\n\
- lsls r2, r5, 2\n\
- adds r1, r2, r5\n\
- lsls r1, 2\n\
- adds r3, r1, r0\n\
- ldrb r0, [r3]\n\
- lsls r0, 28\n\
- cmp r0, 0\n\
- bge _08042C20\n\
- bl _0804441E\n\
-_08042C20:\n\
- ldr r1, =gStatuses3\n\
- adds r1, r2, r1\n\
- ldr r0, [r1]\n\
- movs r2, 0x80\n\
- lsls r2, 12\n\
- orrs r0, r2\n\
- str r0, [r1]\n\
- ldrb r0, [r3]\n\
- movs r1, 0x8\n\
- b _08042C92\n\
- .pool\n\
-_08042C3C:\n\
- mov r0, r10\n\
- bl CastformDataTypeChange\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
- cmp r0, 0\n\
- bne _08042C50\n\
- bl _0804443A\n\
-_08042C50:\n\
- ldr r0, =BattleScript_CastformChange\n\
- bl BattleScriptPushCursorAndCallback\n\
- ldr r0, =gBattleScripting\n\
- mov r1, r10\n\
- strb r1, [r0, 0x17]\n\
- bl _080442E2\n\
- .pool\n\
-_08042C68:\n\
- ldr r0, =gSpecialStatuses\n\
- mov r3, r10\n\
- lsls r2, r3, 2\n\
- adds r1, r2, r3\n\
- lsls r1, 2\n\
- adds r3, r1, r0\n\
- ldrb r0, [r3]\n\
- lsls r0, 27\n\
- cmp r0, 0\n\
- bge _08042C80\n\
- bl _0804441E\n\
-_08042C80:\n\
- ldr r1, =gStatuses3\n\
- adds r1, r2, r1\n\
- ldr r0, [r1]\n\
- movs r2, 0x80\n\
- lsls r2, 13\n\
- orrs r0, r2\n\
- str r0, [r1]\n\
- ldrb r0, [r3]\n\
- movs r1, 0x10\n\
-_08042C92:\n\
- orrs r0, r1\n\
- strb r0, [r3]\n\
- bl _0804441E\n\
- .pool\n\
-_08042CA4:\n\
- movs r6, 0\n\
- ldrb r5, [r5]\n\
- cmp r6, r5\n\
- bcc _08042CB0\n\
- bl _0804441E\n\
-_08042CB0:\n\
- adds r0, r6, 0\n\
- bl CastformDataTypeChange\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
- cmp r0, 0\n\
- beq _08042CC4\n\
- bl _080442D8\n\
-_08042CC4:\n\
- adds r0, r6, 0x1\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r6, r0\n\
- bcc _08042CB0\n\
- bl _0804441E\n\
- .pool\n\
-_08042CDC:\n\
- ldr r5, =gBattleMons\n\
- mov r8, r5\n\
- movs r0, 0x58\n\
- mov r6, r10\n\
- muls r6, r0\n\
- adds r4, r6, r5\n\
- ldrh r0, [r4, 0x28]\n\
- cmp r0, 0\n\
- bne _08042CF2\n\
- bl _0804441E\n\
-_08042CF2:\n\
- ldr r0, =gBankAttacker\n\
- mov r1, r10\n\
- strb r1, [r0]\n\
- ldrb r5, [r7]\n\
- cmp r5, 0x2C\n\
- beq _08042D22\n\
- cmp r5, 0x2C\n\
- bgt _08042D14\n\
- cmp r5, 0x3\n\
- bne _08042D08\n\
- b _08042E84\n\
-_08042D08:\n\
- bl _0804441E\n\
- .pool\n\
-_08042D14:\n\
- cmp r5, 0x36\n\
- bne _08042D1A\n\
- b _08042ED0\n\
-_08042D1A:\n\
- cmp r5, 0x3D\n\
- beq _08042DA0\n\
- bl _0804441E\n\
-_08042D22:\n\
- movs r0, 0\n\
- str r0, [sp]\n\
- movs r0, 0x13\n\
- movs r1, 0\n\
- movs r2, 0xD\n\
- movs r3, 0\n\
- bl AbilityBattleEffects\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0\n\
- beq _08042D3E\n\
- bl _0804441E\n\
-_08042D3E:\n\
- str r0, [sp]\n\
- movs r0, 0x13\n\
- movs r1, 0\n\
- movs r2, 0x4D\n\
- movs r3, 0\n\
- bl AbilityBattleEffects\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _08042D56\n\
- bl _0804441E\n\
-_08042D56:\n\
- ldr r0, =gBattleWeather\n\
- ldrh r1, [r0]\n\
- movs r0, 0x7\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08042D66\n\
- bl _0804441E\n\
-_08042D66:\n\
- ldrh r0, [r4, 0x2C]\n\
- ldrh r2, [r4, 0x28]\n\
- cmp r0, r2\n\
- bhi _08042D72\n\
- bl _0804441E\n\
-_08042D72:\n\
- strb r5, [r7]\n\
- ldr r0, =BattleScript_RainDishActivates\n\
- bl BattleScriptPushCursorAndCallback\n\
- ldr r1, =gBattleMoveDamage\n\
- ldrh r0, [r4, 0x2C]\n\
- lsrs r0, 4\n\
- str r0, [r1]\n\
- cmp r0, 0\n\
- bne _08042D8A\n\
- movs r0, 0x1\n\
- str r0, [r1]\n\
-_08042D8A:\n\
- ldr r0, [r1]\n\
- negs r0, r0\n\
- str r0, [r1]\n\
- bl _080443D0\n\
- .pool\n\
-_08042DA0:\n\
- mov r0, r8\n\
- adds r0, 0x4C\n\
- adds r5, r6, r0\n\
- ldrb r0, [r5]\n\
- cmp r0, 0\n\
- bne _08042DB0\n\
- bl _0804441E\n\
-_08042DB0:\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- movs r1, 0x3\n\
- bl __umodsi3\n\
- lsls r0, 16\n\
- lsrs r4, r0, 16\n\
- cmp r4, 0\n\
- beq _08042DCA\n\
- bl _0804441E\n\
-_08042DCA:\n\
- ldr r0, [r5]\n\
- movs r1, 0x88\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08042DDC\n\
- ldr r0, =gBattleTextBuff1\n\
- ldr r1, =gStatusConditionString_PoisonJpn\n\
- bl StringCopy\n\
-_08042DDC:\n\
- ldr r0, [r5]\n\
- movs r1, 0x7\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08042DEE\n\
- ldr r0, =gBattleTextBuff1\n\
- ldr r1, =gStatusConditionString_SleepJpn\n\
- bl StringCopy\n\
-_08042DEE:\n\
- ldr r0, [r5]\n\
- movs r1, 0x40\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08042E00\n\
- ldr r0, =gBattleTextBuff1\n\
- ldr r1, =gStatusConditionString_ParalysisJpn\n\
- bl StringCopy\n\
-_08042E00:\n\
- ldr r0, [r5]\n\
- movs r1, 0x10\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08042E12\n\
- ldr r0, =gBattleTextBuff1\n\
- ldr r1, =gStatusConditionString_BurnJpn\n\
- bl StringCopy\n\
-_08042E12:\n\
- ldr r0, [r5]\n\
- movs r1, 0x20\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08042E24\n\
- ldr r0, =gBattleTextBuff1\n\
- ldr r1, =gStatusConditionString_IceJpn\n\
- bl StringCopy\n\
-_08042E24:\n\
- str r4, [r5]\n\
- mov r1, r8\n\
- adds r1, 0x50\n\
- adds r1, r6, r1\n\
- ldr r0, [r1]\n\
- ldr r2, =0xf7ffffff\n\
- ands r0, r2\n\
- str r0, [r1]\n\
- ldr r0, =gBattleScripting\n\
- ldr r4, =gActiveBank\n\
- mov r3, r10\n\
- strb r3, [r4]\n\
- strb r3, [r0, 0x17]\n\
- ldr r0, =BattleScript_ShedSkinActivates\n\
- bl BattleScriptPushCursorAndCallback\n\
- str r5, [sp]\n\
- movs r0, 0\n\
- movs r1, 0x28\n\
- movs r2, 0\n\
- movs r3, 0x4\n\
- bl EmitSetMonData\n\
- ldrb r0, [r4]\n\
- bl MarkBufferBankForExecution\n\
- bl _080443D0\n\
- .pool\n\
-_08042E84:\n\
- ldrb r2, [r4, 0x1B]\n\
- movs r0, 0x1B\n\
- ldrsb r0, [r4, r0]\n\
- cmp r0, 0xB\n\
- ble _08042E92\n\
- bl _0804441E\n\
-_08042E92:\n\
- ldr r0, =gDisableStructs\n\
- mov r5, r10\n\
- lsls r1, r5, 3\n\
- subs r1, r5\n\
- lsls r1, 2\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x16]\n\
- cmp r0, 0x2\n\
- bne _08042EA8\n\
- bl _0804441E\n\
-_08042EA8:\n\
- adds r0, r2, 0x1\n\
- movs r1, 0\n\
- strb r0, [r4, 0x1B]\n\
- ldr r4, =gBattleScripting\n\
- movs r0, 0x11\n\
- strb r0, [r4, 0x10]\n\
- strb r1, [r4, 0x11]\n\
- ldr r0, =BattleScript_SpeedBoostActivates\n\
- bl BattleScriptPushCursorAndCallback\n\
- strb r5, [r4, 0x17]\n\
- bl _080443D0\n\
- .pool\n\
-_08042ED0:\n\
- ldr r2, =gDisableStructs\n\
- ldrb r0, [r0]\n\
- lsls r1, r0, 3\n\
- subs r1, r0\n\
- lsls r1, 2\n\
- adds r1, r2\n\
- ldrb r3, [r1, 0x18]\n\
- lsls r0, r3, 31\n\
- lsrs r0, 31\n\
- movs r2, 0x1\n\
- eors r2, r0\n\
- movs r0, 0x2\n\
- negs r0, r0\n\
- ands r0, r3\n\
- orrs r0, r2\n\
- strb r0, [r1, 0x18]\n\
- bl _0804441E\n\
- .pool\n\
-_08042EF8:\n\
- ldrb r0, [r7]\n\
- cmp r0, 0x2B\n\
- beq _08042F02\n\
- bl _0804441E\n\
-_08042F02:\n\
- movs r4, 0\n\
- ldr r0, =sSoundMovesTable\n\
- ldrh r2, [r0]\n\
- ldr r3, =0x0000ffff\n\
- adds r1, r0, 0\n\
- cmp r2, r3\n\
- bne _08042F14\n\
- bl _0804441E\n\
-_08042F14:\n\
- cmp r2, r5\n\
- beq _08042F2C\n\
- adds r2, r1, 0\n\
-_08042F1A:\n\
- adds r2, 0x2\n\
- adds r4, 0x1\n\
- ldrh r0, [r2]\n\
- cmp r0, r3\n\
- bne _08042F28\n\
- bl _0804441E\n\
-_08042F28:\n\
- cmp r0, r5\n\
- bne _08042F1A\n\
-_08042F2C:\n\
- lsls r0, r4, 1\n\
- adds r0, r1\n\
- ldrh r1, [r0]\n\
- ldr r0, =0x0000ffff\n\
- cmp r1, r0\n\
- bne _08042F3C\n\
- bl _0804441E\n\
-_08042F3C:\n\
- ldr r1, =gBattleMons\n\
- ldr r0, =gBankAttacker\n\
- ldrb r2, [r0]\n\
- movs r0, 0x58\n\
- muls r0, r2\n\
- adds r1, 0x50\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- movs r1, 0x80\n\
- lsls r1, 5\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08042F62\n\
- ldr r0, =gHitMarker\n\
- ldr r1, [r0]\n\
- movs r2, 0x80\n\
- lsls r2, 4\n\
- orrs r1, r2\n\
- str r1, [r0]\n\
-_08042F62:\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =BattleScript_SoundproofProtected\n\
- str r0, [r1]\n\
- movs r0, 0x1\n\
- mov r9, r0\n\
- bl _08044424\n\
- .pool\n\
-_08042F8C:\n\
- cmp r5, 0\n\
- bne _08042F94\n\
- bl _0804441E\n\
-_08042F94:\n\
- ldrb r0, [r7]\n\
- cmp r0, 0xB\n\
- beq _08043004\n\
- cmp r0, 0xB\n\
- bgt _08042FA4\n\
- cmp r0, 0xA\n\
- beq _08042FAA\n\
- b _08043126\n\
-_08042FA4:\n\
- cmp r0, 0x12\n\
- beq _0804305C\n\
- b _08043126\n\
-_08042FAA:\n\
- cmp r3, 0xD\n\
- beq _08042FB0\n\
- b _08043126\n\
-_08042FB0:\n\
- ldr r0, =gBattleMoves\n\
- lsls r1, r5, 1\n\
- adds r1, r5\n\
- lsls r1, 2\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x1]\n\
- cmp r0, 0\n\
- bne _08042FC2\n\
- b _08043126\n\
-_08042FC2:\n\
- ldr r1, =gProtectStructs\n\
- ldr r0, =gBankAttacker\n\
- ldrb r0, [r0]\n\
- lsls r0, 4\n\
- adds r0, r1\n\
- ldrb r0, [r0, 0x2]\n\
- lsls r0, 28\n\
- cmp r0, 0\n\
- bge _08042FF0\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =BattleScript_MoveHPDrain\n\
- b _08042FF4\n\
- .pool\n\
-_08042FF0:\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =BattleScript_MoveHPDrain_PPLoss\n\
-_08042FF4:\n\
- str r0, [r1]\n\
- movs r1, 0x1\n\
- b _08043124\n\
- .pool\n\
-_08043004:\n\
- cmp r3, 0xB\n\
- beq _0804300A\n\
- b _08043126\n\
-_0804300A:\n\
- ldr r0, =gBattleMoves\n\
- lsls r1, r5, 1\n\
- adds r1, r5\n\
- lsls r1, 2\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x1]\n\
- cmp r0, 0\n\
- bne _0804301C\n\
- b _08043126\n\
-_0804301C:\n\
- ldr r1, =gProtectStructs\n\
- ldr r0, =gBankAttacker\n\
- ldrb r0, [r0]\n\
- lsls r0, 4\n\
- adds r0, r1\n\
- ldrb r0, [r0, 0x2]\n\
- lsls r0, 28\n\
- cmp r0, 0\n\
- bge _08043048\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =BattleScript_MoveHPDrain\n\
- b _0804304C\n\
- .pool\n\
-_08043048:\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =BattleScript_MoveHPDrain_PPLoss\n\
-_0804304C:\n\
- str r0, [r1]\n\
- movs r2, 0x1\n\
- mov r9, r2\n\
- b _08043126\n\
- .pool\n\
-_0804305C:\n\
- cmp r3, 0xA\n\
- bne _08043126\n\
- ldr r1, =gBattleMons\n\
- movs r0, 0x58\n\
- mov r3, r10\n\
- muls r3, r0\n\
- adds r0, r3, 0\n\
- adds r1, 0x4C\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- movs r1, 0x20\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08043126\n\
- ldr r2, =gBattleResources\n\
- ldr r0, [r2]\n\
- ldr r0, [r0, 0x4]\n\
- mov r5, r10\n\
- lsls r1, r5, 2\n\
- adds r0, r1\n\
- ldr r3, [r0]\n\
- movs r4, 0x1\n\
- ands r3, r4\n\
- adds r5, r1, 0\n\
- cmp r3, 0\n\
- bne _080430EC\n\
- ldr r0, =gBattleCommunication\n\
- strb r3, [r0, 0x5]\n\
- ldr r1, =gProtectStructs\n\
- ldr r0, =gBankAttacker\n\
- ldrb r0, [r0]\n\
- lsls r0, 4\n\
- adds r0, r1\n\
- ldrb r0, [r0, 0x2]\n\
- lsls r0, 28\n\
- cmp r0, 0\n\
- bge _080430C8\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =BattleScript_FlashFireBoost\n\
- b _080430CC\n\
- .pool\n\
-_080430C8:\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =BattleScript_FlashFireBoost_PPLoss\n\
-_080430CC:\n\
- str r0, [r1]\n\
- ldr r0, [r2]\n\
- ldr r1, [r0, 0x4]\n\
- adds r1, r5\n\
- ldr r0, [r1]\n\
- movs r2, 0x1\n\
- orrs r0, r2\n\
- str r0, [r1]\n\
- movs r0, 0x2\n\
- mov r9, r0\n\
- b _08043126\n\
- .pool\n\
-_080430EC:\n\
- ldr r0, =gBattleCommunication\n\
- strb r4, [r0, 0x5]\n\
- ldr r1, =gProtectStructs\n\
- ldr r0, =gBankAttacker\n\
- ldrb r0, [r0]\n\
- lsls r0, 4\n\
- adds r0, r1\n\
- ldrb r0, [r0, 0x2]\n\
- lsls r0, 28\n\
- cmp r0, 0\n\
- bge _0804311C\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =BattleScript_FlashFireBoost\n\
- b _08043120\n\
- .pool\n\
-_0804311C:\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =BattleScript_FlashFireBoost_PPLoss\n\
-_08043120:\n\
- str r0, [r1]\n\
- movs r1, 0x2\n\
-_08043124:\n\
- mov r9, r1\n\
-_08043126:\n\
- mov r2, r9\n\
- cmp r2, 0x1\n\
- beq _08043130\n\
- bl _0804441E\n\
-_08043130:\n\
- ldr r1, =gBattleMons\n\
- movs r0, 0x58\n\
- mov r3, r10\n\
- muls r3, r0\n\
- adds r0, r3, 0\n\
- adds r1, r0, r1\n\
- ldrh r0, [r1, 0x2C]\n\
- ldrh r5, [r1, 0x28]\n\
- cmp r0, r5\n\
- bne _0804318C\n\
- ldr r1, =gProtectStructs\n\
- ldr r0, =gBankAttacker\n\
- ldrb r0, [r0]\n\
- lsls r0, 4\n\
- adds r0, r1\n\
- ldrb r0, [r0, 0x2]\n\
- lsls r0, 28\n\
- cmp r0, 0\n\
- bge _08043178\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =gUnknown_082DB592\n\
- str r0, [r1]\n\
- bl _0804441E\n\
- .pool\n\
-_08043178:\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =gUnknown_082DB591\n\
- str r0, [r1]\n\
- bl _0804441E\n\
- .pool\n\
-_0804318C:\n\
- ldr r2, =gBattleMoveDamage\n\
- ldrh r0, [r1, 0x2C]\n\
- lsrs r0, 2\n\
- str r0, [r2]\n\
- cmp r0, 0\n\
- bne _0804319C\n\
- mov r0, r9\n\
- str r0, [r2]\n\
-_0804319C:\n\
- ldr r0, [r2]\n\
- negs r0, r0\n\
- str r0, [r2]\n\
- bl _0804441E\n\
- .pool\n\
-_080431AC:\n\
- ldrb r0, [r7]\n\
- subs r0, 0x9\n\
- cmp r0, 0x2F\n\
- bls _080431B8\n\
- bl _0804441E\n\
-_080431B8:\n\
- lsls r0, 2\n\
- ldr r1, =_080431C8\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .pool\n\
- .align 2, 0\n\
-_080431C8:\n\
- .4byte _080435E4\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _08043288\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _08043350\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _08043410\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _08043508\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _080436C0\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804441E\n\
- .4byte _0804379C\n\
-_08043288:\n\
- ldr r0, =gBattleMoveFlags\n\
- ldrb r1, [r0]\n\
- movs r0, 0x29\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08043298\n\
- bl _0804441E\n\
-_08043298:\n\
- cmp r5, 0xA5\n\
- bne _080432A0\n\
- bl _0804441E\n\
-_080432A0:\n\
- ldr r0, =gBattleMoves\n\
- lsls r1, r5, 1\n\
- adds r1, r5\n\
- lsls r1, 2\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x1]\n\
- cmp r0, 0\n\
- bne _080432B4\n\
- bl _0804441E\n\
-_080432B4:\n\
- ldr r2, =gSpecialStatuses\n\
- ldr r0, =gBankTarget\n\
- ldrb r1, [r0]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r1, r0, 2\n\
- adds r0, r2, 0\n\
- adds r0, 0x8\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _080432DC\n\
- adds r0, r2, 0\n\
- adds r0, 0xC\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _080432DC\n\
- bl _0804441E\n\
-_080432DC:\n\
- ldr r1, =gBattleMons\n\
- movs r0, 0x58\n\
- mov r2, r10\n\
- muls r2, r0\n\
- adds r0, r2, 0\n\
- adds r1, r0, r1\n\
- adds r4, r1, 0\n\
- adds r4, 0x21\n\
- ldrb r0, [r4]\n\
- cmp r0, r3\n\
- bne _080432F6\n\
- bl _0804441E\n\
-_080432F6:\n\
- adds r2, r1, 0\n\
- adds r2, 0x22\n\
- ldrb r0, [r2]\n\
- cmp r0, r3\n\
- bne _08043304\n\
- bl _0804441E\n\
-_08043304:\n\
- ldrh r0, [r1, 0x28]\n\
- cmp r0, 0\n\
- bne _0804330E\n\
- bl _0804441E\n\
-_0804330E:\n\
- strb r3, [r4]\n\
- strb r3, [r2]\n\
- ldr r1, =gBattleTextBuff1\n\
- movs r0, 0xFD\n\
- strb r0, [r1]\n\
- movs r0, 0x3\n\
- strb r0, [r1, 0x1]\n\
- strb r3, [r1, 0x2]\n\
- movs r0, 0xFF\n\
- strb r0, [r1, 0x3]\n\
- bl BattleScriptPushCursor\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =BattleScript_ColorChangeActivates\n\
- str r0, [r1]\n\
- bl _080443D0\n\
- .pool\n\
-_08043350:\n\
- ldr r0, =gBattleMoveFlags\n\
- ldrb r1, [r0]\n\
- movs r0, 0x29\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08043360\n\
- bl _0804441E\n\
-_08043360:\n\
- ldr r1, =gBattleMons\n\
- ldr r0, =gBankAttacker\n\
- ldrb r2, [r0]\n\
- movs r0, 0x58\n\
- muls r0, r2\n\
- adds r3, r0, r1\n\
- ldrh r0, [r3, 0x28]\n\
- cmp r0, 0\n\
- bne _08043376\n\
- bl _0804441E\n\
-_08043376:\n\
- ldr r0, =gProtectStructs\n\
- lsls r1, r2, 4\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x1]\n\
- lsls r0, 31\n\
- cmp r0, 0\n\
- beq _08043388\n\
- bl _0804441E\n\
-_08043388:\n\
- ldr r2, =gSpecialStatuses\n\
- ldr r0, =gBankTarget\n\
- ldrb r1, [r0]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r1, r0, 2\n\
- adds r0, r2, 0\n\
- adds r0, 0x8\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _080433B0\n\
- adds r0, r2, 0\n\
- adds r0, 0xC\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _080433B0\n\
- bl _0804441E\n\
-_080433B0:\n\
- ldr r1, =gBattleMoves\n\
- lsls r0, r5, 1\n\
- adds r0, r5\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r1, [r0, 0x8]\n\
- movs r2, 0x1\n\
- adds r0, r2, 0\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _080433CA\n\
- bl _0804441E\n\
-_080433CA:\n\
- ldr r1, =gBattleMoveDamage\n\
- ldrh r0, [r3, 0x2C]\n\
- lsrs r0, 4\n\
- str r0, [r1]\n\
- cmp r0, 0\n\
- bne _080433D8\n\
- str r2, [r1]\n\
-_080433D8:\n\
- bl BattleScriptPushCursor\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =BattleScript_RoughSkinActivates\n\
- str r0, [r1]\n\
- bl _080443D0\n\
- .pool\n\
-_08043410:\n\
- ldr r0, =gBattleMoveFlags\n\
- ldrb r1, [r0]\n\
- movs r0, 0x29\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08043420\n\
- bl _0804441E\n\
-_08043420:\n\
- ldr r1, =gBattleMons\n\
- ldr r0, =gBankAttacker\n\
- ldrb r2, [r0]\n\
- movs r0, 0x58\n\
- muls r0, r2\n\
- adds r0, r1\n\
- ldrh r0, [r0, 0x28]\n\
- cmp r0, 0\n\
- bne _08043436\n\
- bl _0804441E\n\
-_08043436:\n\
- ldr r0, =gProtectStructs\n\
- lsls r1, r2, 4\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x1]\n\
- lsls r0, 31\n\
- cmp r0, 0\n\
- beq _08043448\n\
- bl _0804441E\n\
-_08043448:\n\
- ldr r2, =gSpecialStatuses\n\
- ldr r0, =gBankTarget\n\
- ldrb r1, [r0]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r1, r0, 2\n\
- adds r0, r2, 0\n\
- adds r0, 0x8\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _08043470\n\
- adds r0, r2, 0\n\
- adds r0, 0xC\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _08043470\n\
- bl _0804441E\n\
-_08043470:\n\
- ldr r1, =gBattleMoves\n\
- lsls r0, r5, 1\n\
- adds r0, r5\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r1, [r0, 0x8]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08043488\n\
- bl _0804441E\n\
-_08043488:\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- movs r1, 0xA\n\
- bl __umodsi3\n\
- lsls r0, 16\n\
- cmp r0, 0\n\
- beq _080434A0\n\
- bl _0804441E\n\
-_080434A0:\n\
- ldr r5, =gBattleCommunication\n\
- movs r4, 0x3\n\
-_080434A4:\n\
- bl Random\n\
- ands r0, r4\n\
- strb r0, [r5, 0x3]\n\
- cmp r0, 0\n\
- beq _080434A4\n\
- ldr r1, =gBattleCommunication\n\
- ldrb r0, [r1, 0x3]\n\
- cmp r0, 0x3\n\
- bne _080434BC\n\
- adds r0, 0x2\n\
- strb r0, [r1, 0x3]\n\
-_080434BC:\n\
- ldrb r0, [r1, 0x3]\n\
- adds r0, 0x40\n\
- strb r0, [r1, 0x3]\n\
- bl BattleScriptPushCursor\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =BattleScript_ApplySecondaryEffect\n\
- str r0, [r1]\n\
- ldr r2, =gHitMarker\n\
- ldr r0, [r2]\n\
- movs r1, 0x80\n\
- lsls r1, 6\n\
- orrs r0, r1\n\
- str r0, [r2]\n\
- bl _080443D0\n\
- .pool\n\
-_08043508:\n\
- ldr r0, =gBattleMoveFlags\n\
- ldrb r1, [r0]\n\
- movs r0, 0x29\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08043518\n\
- bl _0804441E\n\
-_08043518:\n\
- ldr r1, =gBattleMons\n\
- ldr r0, =gBankAttacker\n\
- ldrb r2, [r0]\n\
- movs r0, 0x58\n\
- muls r0, r2\n\
- adds r0, r1\n\
- ldrh r0, [r0, 0x28]\n\
- cmp r0, 0\n\
- bne _0804352E\n\
- bl _0804441E\n\
-_0804352E:\n\
- ldr r0, =gProtectStructs\n\
- lsls r1, r2, 4\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x1]\n\
- lsls r0, 31\n\
- cmp r0, 0\n\
- beq _08043540\n\
- bl _0804441E\n\
-_08043540:\n\
- ldr r2, =gSpecialStatuses\n\
- ldr r0, =gBankTarget\n\
- ldrb r1, [r0]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r1, r0, 2\n\
- adds r0, r2, 0\n\
- adds r0, 0x8\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _08043568\n\
- adds r0, r2, 0\n\
- adds r0, 0xC\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _08043568\n\
- bl _0804441E\n\
-_08043568:\n\
- ldr r1, =gBattleMoves\n\
- lsls r0, r5, 1\n\
- adds r0, r5\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r1, [r0, 0x8]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08043580\n\
- bl _0804441E\n\
-_08043580:\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- movs r1, 0x3\n\
- bl __umodsi3\n\
- lsls r0, 16\n\
- cmp r0, 0\n\
- beq _08043598\n\
- bl _0804441E\n\
-_08043598:\n\
- ldr r1, =gBattleCommunication\n\
- movs r0, 0x42\n\
- strb r0, [r1, 0x3]\n\
- bl BattleScriptPushCursor\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =BattleScript_ApplySecondaryEffect\n\
- str r0, [r1]\n\
- ldr r2, =gHitMarker\n\
- ldr r0, [r2]\n\
- movs r1, 0x80\n\
- lsls r1, 6\n\
- orrs r0, r1\n\
- str r0, [r2]\n\
- bl _080443D0\n\
- .pool\n\
-_080435E4:\n\
- ldr r0, =gBattleMoveFlags\n\
- ldrb r1, [r0]\n\
- movs r0, 0x29\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080435F4\n\
- bl _0804441E\n\
-_080435F4:\n\
- ldr r1, =gBattleMons\n\
- ldr r0, =gBankAttacker\n\
- ldrb r2, [r0]\n\
- movs r0, 0x58\n\
- muls r0, r2\n\
- adds r0, r1\n\
- ldrh r0, [r0, 0x28]\n\
- cmp r0, 0\n\
- bne _0804360A\n\
- bl _0804441E\n\
-_0804360A:\n\
- ldr r0, =gProtectStructs\n\
- lsls r1, r2, 4\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x1]\n\
- lsls r0, 31\n\
- cmp r0, 0\n\
- beq _0804361C\n\
- bl _0804441E\n\
-_0804361C:\n\
- ldr r2, =gSpecialStatuses\n\
- ldr r0, =gBankTarget\n\
- ldrb r1, [r0]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r1, r0, 2\n\
- adds r0, r2, 0\n\
- adds r0, 0x8\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _08043644\n\
- adds r0, r2, 0\n\
- adds r0, 0xC\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _08043644\n\
- bl _0804441E\n\
-_08043644:\n\
- ldr r1, =gBattleMoves\n\
- lsls r0, r5, 1\n\
- adds r0, r5\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r1, [r0, 0x8]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0804365C\n\
- bl _0804441E\n\
-_0804365C:\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- movs r1, 0x3\n\
- bl __umodsi3\n\
- lsls r0, 16\n\
- cmp r0, 0\n\
- beq _08043674\n\
- bl _0804441E\n\
-_08043674:\n\
- ldr r1, =gBattleCommunication\n\
- movs r0, 0x45\n\
- strb r0, [r1, 0x3]\n\
- bl BattleScriptPushCursor\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =BattleScript_ApplySecondaryEffect\n\
- str r0, [r1]\n\
- ldr r2, =gHitMarker\n\
- ldr r0, [r2]\n\
- movs r1, 0x80\n\
- lsls r1, 6\n\
- orrs r0, r1\n\
- str r0, [r2]\n\
- bl _080443D0\n\
- .pool\n\
-_080436C0:\n\
- ldr r0, =gBattleMoveFlags\n\
- ldrb r1, [r0]\n\
- movs r0, 0x29\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080436D0\n\
- bl _0804441E\n\
-_080436D0:\n\
- ldr r1, =gBattleMons\n\
- ldr r0, =gBankAttacker\n\
- ldrb r2, [r0]\n\
- movs r0, 0x58\n\
- muls r0, r2\n\
- adds r0, r1\n\
- ldrh r0, [r0, 0x28]\n\
- cmp r0, 0\n\
- bne _080436E6\n\
- bl _0804441E\n\
-_080436E6:\n\
- ldr r0, =gProtectStructs\n\
- lsls r1, r2, 4\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x1]\n\
- lsls r0, 31\n\
- cmp r0, 0\n\
- beq _080436F8\n\
- bl _0804441E\n\
-_080436F8:\n\
- ldr r1, =gBattleMoves\n\
- lsls r0, r5, 1\n\
- adds r0, r5\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r1, [r0, 0x8]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08043710\n\
- bl _0804441E\n\
-_08043710:\n\
- ldr r2, =gSpecialStatuses\n\
- ldr r0, =gBankTarget\n\
- ldrb r1, [r0]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r1, r0, 2\n\
- adds r0, r2, 0\n\
- adds r0, 0x8\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _08043738\n\
- adds r0, r2, 0\n\
- adds r0, 0xC\n\
- adds r0, r1, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _08043738\n\
- bl _0804441E\n\
-_08043738:\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- movs r1, 0x3\n\
- bl __umodsi3\n\
- lsls r0, 16\n\
- cmp r0, 0\n\
- beq _08043750\n\
- bl _0804441E\n\
-_08043750:\n\
- ldr r1, =gBattleCommunication\n\
- movs r0, 0x43\n\
- strb r0, [r1, 0x3]\n\
- bl BattleScriptPushCursor\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =BattleScript_ApplySecondaryEffect\n\
- str r0, [r1]\n\
- ldr r2, =gHitMarker\n\
- ldr r0, [r2]\n\
- movs r1, 0x80\n\
- lsls r1, 6\n\
- orrs r0, r1\n\
- str r0, [r2]\n\
- bl _080443D0\n\
- .pool\n\
-_0804379C:\n\
- ldr r0, =gBattleMoveFlags\n\
- ldrb r1, [r0]\n\
- movs r0, 0x29\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080437AC\n\
- bl _0804441E\n\
-_080437AC:\n\
- ldr r6, =gBattleMons\n\
- ldr r3, =gBankAttacker\n\
- mov r8, r3\n\
- ldrb r1, [r3]\n\
- movs r7, 0x58\n\
- adds r0, r1, 0\n\
- muls r0, r7\n\
- adds r0, r6\n\
- ldrh r0, [r0, 0x28]\n\
- cmp r0, 0\n\
- bne _080437C6\n\
- bl _0804441E\n\
-_080437C6:\n\
- ldr r0, =gProtectStructs\n\
- lsls r1, 4\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x1]\n\
- lsls r0, 31\n\
- cmp r0, 0\n\
- beq _080437D8\n\
- bl _0804441E\n\
-_080437D8:\n\
- ldr r1, =gBattleMoves\n\
- lsls r0, r5, 1\n\
- adds r0, r5\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r1, [r0, 0x8]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _080437F0\n\
- bl _0804441E\n\
-_080437F0:\n\
- ldr r3, =gSpecialStatuses\n\
- ldr r5, =gBankTarget\n\
- ldrb r1, [r5]\n\
- lsls r0, r1, 2\n\
- adds r0, r1\n\
- lsls r2, r0, 2\n\
- adds r0, r3, 0\n\
- adds r0, 0x8\n\
- adds r0, r2, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _08043818\n\
- adds r0, r3, 0\n\
- adds r0, 0xC\n\
- adds r0, r2, r0\n\
- ldr r0, [r0]\n\
- cmp r0, 0\n\
- bne _08043818\n\
- bl _0804441E\n\
-_08043818:\n\
- adds r0, r1, 0\n\
- muls r0, r7\n\
- adds r0, r6\n\
- ldrh r0, [r0, 0x28]\n\
- cmp r0, 0\n\
- bne _08043828\n\
- bl _0804441E\n\
-_08043828:\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- movs r1, 0x3\n\
- bl __umodsi3\n\
- lsls r0, 16\n\
- cmp r0, 0\n\
- beq _08043840\n\
- bl _0804441E\n\
-_08043840:\n\
- mov r1, r8\n\
- ldrb r0, [r1]\n\
- muls r0, r7\n\
- adds r0, r6\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, 0xC\n\
- bne _08043854\n\
- bl _0804441E\n\
-_08043854:\n\
- ldr r0, [sp, 0x8]\n\
- ldr r1, [sp, 0x10]\n\
- bl GetGenderFromSpeciesAndPersonality\n\
- adds r4, r0, 0\n\
- ldr r0, [sp, 0xC]\n\
- ldr r1, [sp, 0x14]\n\
- bl GetGenderFromSpeciesAndPersonality\n\
- lsls r4, 24\n\
- lsls r0, 24\n\
- cmp r4, r0\n\
- bne _08043872\n\
- bl _0804441E\n\
-_08043872:\n\
- mov r2, r8\n\
- ldrb r0, [r2]\n\
- muls r0, r7\n\
- adds r4, r6, 0\n\
- adds r4, 0x50\n\
- adds r0, r4\n\
- ldr r0, [r0]\n\
- movs r1, 0xF0\n\
- lsls r1, 12\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0804388E\n\
- bl _0804441E\n\
-_0804388E:\n\
- ldr r0, [sp, 0x8]\n\
- ldr r1, [sp, 0x10]\n\
- bl GetGenderFromSpeciesAndPersonality\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0xFF\n\
- bne _080438A2\n\
- bl _0804441E\n\
-_080438A2:\n\
- ldr r0, [sp, 0xC]\n\
- ldr r1, [sp, 0x14]\n\
- bl GetGenderFromSpeciesAndPersonality\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0xFF\n\
- bne _080438B6\n\
- bl _0804441E\n\
-_080438B6:\n\
- mov r3, r8\n\
- ldrb r0, [r3]\n\
- adds r2, r0, 0\n\
- muls r2, r7\n\
- adds r2, r4\n\
- ldr r1, =gBitTable\n\
- ldrb r0, [r5]\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldr r1, [r0]\n\
- lsls r1, 16\n\
- ldr r0, [r2]\n\
- orrs r0, r1\n\
- str r0, [r2]\n\
- bl BattleScriptPushCursor\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =BattleScript_CuteCharmActivates\n\
- str r0, [r1]\n\
- bl _080443D0\n\
- .pool\n\
-_08043908:\n\
- movs r5, 0\n\
- mov r10, r5\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r10, r0\n\
- bcc _08043918\n\
- bl _0804441E\n\
-_08043918:\n\
- ldr r1, =gBattleMons\n\
- movs r0, 0x58\n\
- mov r2, r10\n\
- muls r2, r0\n\
- adds r0, r2, 0\n\
- adds r0, r1\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- subs r0, 0x7\n\
- adds r2, r1, 0\n\
- cmp r0, 0x41\n\
- bls _08043932\n\
- b _08043B96\n\
-_08043932:\n\
- lsls r0, 2\n\
- ldr r1, =_08043948\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .pool\n\
- .align 2, 0\n\
-_08043948:\n\
- .4byte _08043AAC\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B70\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043AD4\n\
- .4byte _08043B96\n\
- .4byte _08043A50\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043A7C\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B40\n\
- .4byte _08043B10\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043B96\n\
- .4byte _08043AD4\n\
-_08043A50:\n\
- movs r0, 0x58\n\
- mov r3, r10\n\
- muls r3, r0\n\
- adds r0, r3, 0\n\
- adds r1, r2, 0\n\
- adds r1, 0x4C\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- ldr r1, =0x00000f88\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08043A6A\n\
- b _08043B96\n\
-_08043A6A:\n\
- ldr r0, =gBattleTextBuff1\n\
- ldr r1, =gStatusConditionString_PoisonJpn\n\
- b _08043B5C\n\
- .pool\n\
-_08043A7C:\n\
- movs r0, 0x58\n\
- mov r1, r10\n\
- muls r1, r0\n\
- adds r0, r1, 0\n\
- adds r1, r2, 0\n\
- adds r1, 0x50\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- movs r1, 0x7\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08043A96\n\
- b _08043B96\n\
-_08043A96:\n\
- ldr r0, =gBattleTextBuff1\n\
- ldr r1, =gStatusConditionString_ConfusionJpn\n\
- bl StringCopy\n\
- movs r2, 0x2\n\
- mov r9, r2\n\
- b _08043B9C\n\
- .pool\n\
-_08043AAC:\n\
- movs r0, 0x58\n\
- mov r3, r10\n\
- muls r3, r0\n\
- adds r0, r3, 0\n\
- adds r1, r2, 0\n\
- adds r1, 0x4C\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- movs r1, 0x40\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08043B96\n\
- ldr r0, =gBattleTextBuff1\n\
- ldr r1, =gStatusConditionString_ParalysisJpn\n\
- b _08043B5C\n\
- .pool\n\
-_08043AD4:\n\
- movs r0, 0x58\n\
- mov r3, r10\n\
- muls r3, r0\n\
- adds r0, r2, 0\n\
- adds r0, 0x4C\n\
- adds r0, r3, r0\n\
- ldr r0, [r0]\n\
- movs r1, 0x7\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08043B96\n\
- adds r2, 0x50\n\
- adds r2, r3, r2\n\
- ldr r0, [r2]\n\
- ldr r1, =0xf7ffffff\n\
- ands r0, r1\n\
- str r0, [r2]\n\
- ldr r0, =gBattleTextBuff1\n\
- ldr r1, =gStatusConditionString_SleepJpn\n\
- bl StringCopy\n\
- movs r0, 0x1\n\
- mov r9, r0\n\
- b _08043B9C\n\
- .pool\n\
-_08043B10:\n\
- movs r0, 0x58\n\
- mov r1, r10\n\
- muls r1, r0\n\
- adds r0, r1, 0\n\
- adds r1, r2, 0\n\
- adds r1, 0x4C\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- movs r1, 0x10\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08043B96\n\
- ldr r0, =gBattleTextBuff1\n\
- ldr r1, =gStatusConditionString_BurnJpn\n\
- bl StringCopy\n\
- movs r2, 0x1\n\
- mov r9, r2\n\
- b _08043B9C\n\
- .pool\n\
-_08043B40:\n\
- movs r0, 0x58\n\
- mov r3, r10\n\
- muls r3, r0\n\
- adds r0, r3, 0\n\
- adds r1, r2, 0\n\
- adds r1, 0x4C\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- movs r1, 0x20\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08043B96\n\
- ldr r0, =gBattleTextBuff1\n\
- ldr r1, =gStatusConditionString_IceJpn\n\
-_08043B5C:\n\
- bl StringCopy\n\
- movs r5, 0x1\n\
- mov r9, r5\n\
- b _08043B9C\n\
- .pool\n\
-_08043B70:\n\
- movs r0, 0x58\n\
- mov r1, r10\n\
- muls r1, r0\n\
- adds r0, r1, 0\n\
- adds r1, r2, 0\n\
- adds r1, 0x50\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- movs r1, 0xF0\n\
- lsls r1, 12\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08043B96\n\
- ldr r0, =gBattleTextBuff1\n\
- ldr r1, =gStatusConditionString_LoveJpn\n\
- bl StringCopy\n\
- movs r2, 0x3\n\
- mov r9, r2\n\
-_08043B96:\n\
- mov r3, r9\n\
- cmp r3, 0\n\
- beq _08043C50\n\
-_08043B9C:\n\
- mov r5, r9\n\
- cmp r5, 0x2\n\
- beq _08043BD0\n\
- cmp r5, 0x2\n\
- bgt _08043BB4\n\
- cmp r5, 0x1\n\
- beq _08043BBC\n\
- b _08043BFC\n\
- .pool\n\
-_08043BB4:\n\
- mov r0, r9\n\
- cmp r0, 0x3\n\
- beq _08043BE8\n\
- b _08043BFC\n\
-_08043BBC:\n\
- ldr r1, =gBattleMons\n\
- movs r0, 0x58\n\
- mov r2, r10\n\
- muls r2, r0\n\
- adds r1, 0x4C\n\
- adds r2, r1\n\
- movs r0, 0\n\
- b _08043BFA\n\
- .pool\n\
-_08043BD0:\n\
- ldr r1, =gBattleMons\n\
- movs r0, 0x58\n\
- mov r2, r10\n\
- muls r2, r0\n\
- adds r1, 0x50\n\
- adds r2, r1\n\
- ldr r0, [r2]\n\
- movs r1, 0x8\n\
- negs r1, r1\n\
- b _08043BF8\n\
- .pool\n\
-_08043BE8:\n\
- ldr r1, =gBattleMons\n\
- movs r0, 0x58\n\
- mov r2, r10\n\
- muls r2, r0\n\
- adds r1, 0x50\n\
- adds r2, r1\n\
- ldr r0, [r2]\n\
- ldr r1, =0xfff0ffff\n\
-_08043BF8:\n\
- ands r0, r1\n\
-_08043BFA:\n\
- str r0, [r2]\n\
-_08043BFC:\n\
- bl BattleScriptPushCursor\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =gUnknown_082DB68C\n\
- str r0, [r1]\n\
- ldr r0, =gBattleScripting\n\
- mov r1, r10\n\
- strb r1, [r0, 0x17]\n\
- ldr r4, =gActiveBank\n\
- strb r1, [r4]\n\
- ldrb r1, [r4]\n\
- movs r0, 0x58\n\
- muls r0, r1\n\
- ldr r1, =gBattleMons + 0x4C\n\
- adds r0, r1\n\
- str r0, [sp]\n\
- movs r0, 0\n\
- movs r1, 0x28\n\
- movs r2, 0\n\
- movs r3, 0x4\n\
- bl EmitSetMonData\n\
- ldrb r0, [r4]\n\
- bl MarkBufferBankForExecution\n\
- bl _0804443A\n\
- .pool\n\
-_08043C50:\n\
- mov r0, r10\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r10, r0\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r10, r0\n\
- bcs _08043C64\n\
- b _08043918\n\
-_08043C64:\n\
- bl _0804441E\n\
- .pool\n\
-_08043C6C:\n\
- movs r2, 0\n\
- mov r10, r2\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r10, r0\n\
- bcc _08043C7A\n\
- b _0804441E\n\
-_08043C7A:\n\
- ldr r4, =gBattleMons\n\
-_08043C7C:\n\
- movs r0, 0x58\n\
- mov r3, r10\n\
- muls r3, r0\n\
- adds r0, r3, 0\n\
- adds r0, r4\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x3B\n\
- bne _08043CA0\n\
- mov r0, r10\n\
- bl CastformDataTypeChange\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
- cmp r0, 0\n\
- beq _08043CA0\n\
- b _080442FC\n\
-_08043CA0:\n\
- mov r0, r10\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r10, r0\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r10, r0\n\
- bcc _08043C7C\n\
- b _0804441E\n\
- .pool\n\
-_08043CBC:\n\
- ldrb r0, [r7]\n\
- cmp r0, 0x1C\n\
- beq _08043CC4\n\
- b _0804441E\n\
-_08043CC4:\n\
- ldr r4, =gHitMarker\n\
- ldr r1, [r4]\n\
- movs r0, 0x80\n\
- lsls r0, 7\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08043CD4\n\
- b _0804441E\n\
-_08043CD4:\n\
- ldr r0, =0xffffbfff\n\
- ands r1, r0\n\
- str r1, [r4]\n\
- mov r5, r8\n\
- ldr r1, [r5]\n\
- adds r1, 0xB2\n\
- ldrb r2, [r1]\n\
- movs r0, 0x3F\n\
- ands r0, r2\n\
- strb r0, [r1]\n\
- ldr r0, [r5]\n\
- adds r1, r0, 0\n\
- adds r1, 0xB2\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x6\n\
- bne _08043CF8\n\
- movs r0, 0x2\n\
- strb r0, [r1]\n\
-_08043CF8:\n\
- ldr r1, =gBattleCommunication\n\
- mov r2, r8\n\
- ldr r0, [r2]\n\
- adds r0, 0xB2\n\
- ldrb r0, [r0]\n\
- adds r0, 0x40\n\
- strb r0, [r1, 0x3]\n\
- ldr r1, =gBattleScripting\n\
- ldr r0, =gBankTarget\n\
- ldrb r0, [r0]\n\
- strb r0, [r1, 0x17]\n\
- bl BattleScriptPushCursor\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =BattleScript_SynchronizeActivates\n\
- str r0, [r1]\n\
- ldr r0, [r4]\n\
- movs r1, 0x80\n\
- lsls r1, 6\n\
- orrs r0, r1\n\
- str r0, [r4]\n\
- b _080443D0\n\
- .pool\n\
-_08043D40:\n\
- ldrb r0, [r7]\n\
- cmp r0, 0x1C\n\
- beq _08043D48\n\
- b _0804441E\n\
-_08043D48:\n\
- ldr r4, =gHitMarker\n\
- ldr r1, [r4]\n\
- movs r0, 0x80\n\
- lsls r0, 7\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08043D58\n\
- b _0804441E\n\
-_08043D58:\n\
- ldr r0, =0xffffbfff\n\
- ands r1, r0\n\
- str r1, [r4]\n\
- mov r3, r8\n\
- ldr r1, [r3]\n\
- adds r1, 0xB2\n\
- ldrb r2, [r1]\n\
- movs r0, 0x3F\n\
- ands r0, r2\n\
- strb r0, [r1]\n\
- ldr r0, [r3]\n\
- adds r1, r0, 0\n\
- adds r1, 0xB2\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x6\n\
- bne _08043D7C\n\
- movs r0, 0x2\n\
- strb r0, [r1]\n\
-_08043D7C:\n\
- ldr r1, =gBattleCommunication\n\
- mov r3, r8\n\
- ldr r0, [r3]\n\
- adds r0, 0xB2\n\
- ldrb r0, [r0]\n\
- strb r0, [r1, 0x3]\n\
- ldr r1, =gBattleScripting\n\
- ldr r0, =gBankAttacker\n\
- ldrb r0, [r0]\n\
- strb r0, [r1, 0x17]\n\
- bl BattleScriptPushCursor\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =BattleScript_SynchronizeActivates\n\
- str r0, [r1]\n\
- ldr r0, [r4]\n\
- movs r1, 0x80\n\
- lsls r1, 6\n\
- orrs r0, r1\n\
- str r0, [r4]\n\
- b _080443D0\n\
- .pool\n\
-_08043DC4:\n\
- movs r4, 0\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r1, [r0]\n\
- cmp r4, r1\n\
- blt _08043DD0\n\
- b _0804441E\n\
-_08043DD0:\n\
- ldr r0, =gBattleMons\n\
- adds r5, r1, 0\n\
- ldr r2, =gStatuses3\n\
- adds r3, r0, 0\n\
- adds r3, 0x20\n\
- movs r6, 0x80\n\
- lsls r6, 12\n\
-_08043DDE:\n\
- ldrb r1, [r3]\n\
- cmp r1, 0x16\n\
- bne _08043DEE\n\
- ldr r0, [r2]\n\
- ands r0, r6\n\
- cmp r0, 0\n\
- beq _08043DEE\n\
- b _08044324\n\
-_08043DEE:\n\
- adds r2, 0x4\n\
- adds r3, 0x58\n\
- adds r4, 0x1\n\
- cmp r4, r5\n\
- blt _08043DDE\n\
- b _0804441E\n\
- .pool\n\
-_08043E08:\n\
- movs r4, 0\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _08043E14\n\
- b _0804441E\n\
-_08043E14:\n\
- ldr r5, =gActiveBank\n\
- mov r8, r5\n\
- ldr r0, =gBattleMons\n\
- adds r0, 0x20\n\
- str r0, [sp, 0x1C]\n\
- movs r1, 0\n\
- str r1, [sp, 0x20]\n\
-_08043E22:\n\
- ldr r2, [sp, 0x1C]\n\
- ldrb r0, [r2]\n\
- cmp r0, 0x24\n\
- beq _08043E2C\n\
- b _08043FBE\n\
-_08043E2C:\n\
- ldr r0, =gStatuses3\n\
- ldr r3, [sp, 0x20]\n\
- adds r0, r3, r0\n\
- ldr r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 13\n\
- ands r1, r0\n\
- str r3, [sp, 0x18]\n\
- cmp r1, 0\n\
- bne _08043E42\n\
- b _08043FBE\n\
-_08043E42:\n\
- lsls r0, r4, 24\n\
- lsrs r0, 24\n\
- bl GetBankIdentity\n\
- movs r1, 0x1\n\
- adds r5, r0, 0\n\
- eors r5, r1\n\
- ands r5, r1\n\
- adds r0, r5, 0\n\
- bl GetBankByIdentity\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- adds r0, r5, 0x2\n\
- bl GetBankByIdentity\n\
- lsls r0, 24\n\
- lsrs r7, r0, 24\n\
- ldr r0, =gBattleTypeFlags\n\
- ldr r0, [r0]\n\
- movs r2, 0x1\n\
- ands r0, r2\n\
- cmp r0, 0\n\
- bne _08043E74\n\
- b _08043F84\n\
-_08043E74:\n\
- movs r1, 0x58\n\
- adds r0, r6, 0\n\
- muls r0, r1\n\
- ldr r3, =gBattleMons\n\
- adds r1, r0, r3\n\
- adds r0, r1, 0\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- beq _08043F40\n\
- ldrh r0, [r1, 0x28]\n\
- cmp r0, 0\n\
- beq _08043EFC\n\
- movs r1, 0x58\n\
- adds r0, r7, 0\n\
- muls r0, r1\n\
- adds r1, r0, r3\n\
- adds r0, r1, 0\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- beq _08043EFC\n\
- ldrh r0, [r1, 0x28]\n\
- cmp r0, 0\n\
- beq _08043EFC\n\
- str r2, [sp, 0x24]\n\
- bl Random\n\
- ldr r2, [sp, 0x24]\n\
- adds r1, r2, 0\n\
- ands r1, r0\n\
- lsls r1, 1\n\
- orrs r5, r1\n\
- adds r0, r5, 0\n\
- bl GetBankByIdentity\n\
- mov r2, r8\n\
- strb r0, [r2]\n\
- ldrb r0, [r2]\n\
- movs r3, 0x58\n\
- muls r0, r3\n\
- ldr r5, =gBattleMons\n\
- adds r0, r5\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- ldr r1, [sp, 0x1C]\n\
- strb r0, [r1]\n\
- ldrb r0, [r2]\n\
- muls r0, r3\n\
- adds r0, r5\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- ldr r2, =gLastUsedAbility\n\
- strb r0, [r2]\n\
- b _08043FAC\n\
- .pool\n\
-_08043EFC:\n\
- ldr r3, =gBattleMons\n\
- movs r2, 0x58\n\
- adds r0, r6, 0\n\
- muls r0, r2\n\
- adds r1, r0, r3\n\
- adds r0, r1, 0\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- beq _08043F40\n\
- ldrh r0, [r1, 0x28]\n\
- cmp r0, 0\n\
- beq _08043F40\n\
- mov r5, r8\n\
- strb r6, [r5]\n\
- adds r1, r4, 0\n\
- muls r1, r2\n\
- adds r1, r3\n\
- ldrb r0, [r5]\n\
- muls r0, r2\n\
- adds r0, r3\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- adds r1, 0x20\n\
- strb r0, [r1]\n\
- ldrb r0, [r5]\n\
- muls r0, r2\n\
- adds r0, r3\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- b _08043FA8\n\
- .pool\n\
-_08043F40:\n\
- ldr r3, =gBattleMons\n\
- movs r2, 0x58\n\
- adds r0, r7, 0\n\
- muls r0, r2\n\
- adds r1, r0, r3\n\
- adds r0, r1, 0\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- beq _08043FB6\n\
- ldrh r0, [r1, 0x28]\n\
- cmp r0, 0\n\
- beq _08043FB6\n\
- mov r5, r8\n\
- strb r7, [r5]\n\
- adds r1, r4, 0\n\
- muls r1, r2\n\
- adds r1, r3\n\
- ldrb r0, [r5]\n\
- muls r0, r2\n\
- adds r0, r3\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- adds r1, 0x20\n\
- strb r0, [r1]\n\
- ldrb r0, [r5]\n\
- muls r0, r2\n\
- adds r0, r3\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- b _08043FA8\n\
- .pool\n\
-_08043F84:\n\
- mov r2, r8\n\
- strb r6, [r2]\n\
- movs r3, 0x58\n\
- adds r0, r6, 0\n\
- muls r0, r3\n\
- ldr r5, =gBattleMons\n\
- adds r0, r5\n\
- adds r2, r0, 0\n\
- adds r2, 0x20\n\
- ldrb r1, [r2]\n\
- cmp r1, 0\n\
- beq _08043FB6\n\
- ldrh r0, [r0, 0x28]\n\
- cmp r0, 0\n\
- beq _08043FB6\n\
- ldr r0, [sp, 0x1C]\n\
- strb r1, [r0]\n\
- ldrb r0, [r2]\n\
-_08043FA8:\n\
- ldr r1, =gLastUsedAbility\n\
- strb r0, [r1]\n\
-_08043FAC:\n\
- mov r0, r9\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
-_08043FB6:\n\
- mov r2, r9\n\
- cmp r2, 0\n\
- beq _08043FBE\n\
- b _08044340\n\
-_08043FBE:\n\
- ldr r3, [sp, 0x1C]\n\
- adds r3, 0x58\n\
- str r3, [sp, 0x1C]\n\
- ldr r5, [sp, 0x20]\n\
- adds r5, 0x4\n\
- str r5, [sp, 0x20]\n\
- adds r4, 0x1\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- bge _08043FD6\n\
- b _08043E22\n\
-_08043FD6:\n\
- b _0804441E\n\
- .pool\n\
-_08043FE4:\n\
- movs r4, 0\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r1, [r0]\n\
- cmp r4, r1\n\
- blt _08043FF0\n\
- b _0804441E\n\
-_08043FF0:\n\
- ldr r0, =gBattleMons\n\
- adds r5, r1, 0\n\
- ldr r2, =gStatuses3\n\
- adds r3, r0, 0\n\
- adds r3, 0x20\n\
- movs r6, 0x80\n\
- lsls r6, 12\n\
-_08043FFE:\n\
- ldrb r1, [r3]\n\
- cmp r1, 0x16\n\
- bne _0804400E\n\
- ldr r0, [r2]\n\
- ands r0, r6\n\
- cmp r0, 0\n\
- beq _0804400E\n\
- b _080443B4\n\
-_0804400E:\n\
- adds r2, 0x4\n\
- adds r3, 0x58\n\
- adds r4, 0x1\n\
- cmp r4, r5\n\
- blt _08043FFE\n\
- b _0804441E\n\
- .pool\n\
-_08044028:\n\
- mov r0, r10\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- movs r4, 0\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _0804403E\n\
- b _0804441E\n\
-_0804403E:\n\
- ldr r7, =gBattleMons\n\
-_08044040:\n\
- lsls r0, r4, 24\n\
- lsrs r0, 24\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- adds r3, r4, 0x1\n\
- cmp r0, r5\n\
- beq _0804406A\n\
- movs r0, 0x58\n\
- muls r0, r4\n\
- adds r0, r7\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, r6\n\
- bne _0804406A\n\
- ldr r0, =gLastUsedAbility\n\
- strb r6, [r0]\n\
- lsls r0, r3, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
-_0804406A:\n\
- adds r4, r3, 0\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _08044040\n\
- b _0804441E\n\
- .pool\n\
-_08044084:\n\
- mov r0, r10\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- movs r4, 0\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _0804409A\n\
- b _0804441E\n\
-_0804409A:\n\
- ldr r7, =gBattleMons\n\
-_0804409C:\n\
- lsls r0, r4, 24\n\
- lsrs r0, 24\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- adds r3, r4, 0x1\n\
- cmp r0, r5\n\
- bne _080440C6\n\
- movs r0, 0x58\n\
- muls r0, r4\n\
- adds r0, r7\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, r6\n\
- bne _080440C6\n\
- ldr r0, =gLastUsedAbility\n\
- strb r6, [r0]\n\
- lsls r0, r3, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
-_080440C6:\n\
- adds r4, r3, 0\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _0804409C\n\
- b _0804441E\n\
- .pool\n\
-_080440E0:\n\
- ldrb r0, [r7]\n\
- cmp r0, 0xFD\n\
- beq _08044104\n\
- cmp r0, 0xFE\n\
- beq _0804413C\n\
- movs r4, 0\n\
- ldr r0, =gNoOfAllBanks\n\
- adds r5, r0, 0\n\
- ldrb r0, [r5]\n\
- cmp r4, r0\n\
- blt _080440F8\n\
- b _0804441E\n\
-_080440F8:\n\
- ldr r2, =gBattleMons\n\
- b _08044174\n\
- .pool\n\
-_08044104:\n\
- movs r4, 0\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _08044110\n\
- b _0804441E\n\
-_08044110:\n\
- ldr r5, =gStatuses3\n\
- movs r2, 0x80\n\
- lsls r2, 9\n\
- adds r1, r0, 0\n\
-_08044118:\n\
- lsls r0, r4, 2\n\
- adds r0, r5\n\
- ldr r0, [r0]\n\
- ands r0, r2\n\
- adds r3, r4, 0x1\n\
- cmp r0, 0\n\
- beq _0804412C\n\
- lsls r0, r3, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
-_0804412C:\n\
- adds r4, r3, 0\n\
- cmp r4, r1\n\
- blt _08044118\n\
- b _0804441E\n\
- .pool\n\
-_0804413C:\n\
- movs r4, 0\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _08044148\n\
- b _0804441E\n\
-_08044148:\n\
- ldr r5, =gStatuses3\n\
- movs r2, 0x80\n\
- lsls r2, 10\n\
- adds r1, r0, 0\n\
-_08044150:\n\
- lsls r0, r4, 2\n\
- adds r0, r5\n\
- ldr r0, [r0]\n\
- ands r0, r2\n\
- adds r3, r4, 0x1\n\
- cmp r0, 0\n\
- beq _08044164\n\
- lsls r0, r3, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
-_08044164:\n\
- adds r4, r3, 0\n\
- cmp r4, r1\n\
- blt _08044150\n\
- b _0804441E\n\
- .pool\n\
-_08044174:\n\
- movs r0, 0x58\n\
- muls r0, r4\n\
- adds r0, r2\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- adds r3, r4, 0x1\n\
- cmp r0, r6\n\
- bne _0804418C\n\
- strb r6, [r7]\n\
- lsls r0, r3, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
-_0804418C:\n\
- adds r4, r3, 0\n\
- ldrb r1, [r5]\n\
- cmp r4, r1\n\
- blt _08044174\n\
- b _0804441E\n\
-_08044196:\n\
- movs r4, 0\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _080441A2\n\
- b _0804441E\n\
-_080441A2:\n\
- ldr r2, =gBattleMons\n\
- mov r8, r2\n\
- adds r2, r0, 0\n\
- movs r5, 0x58\n\
-_080441AA:\n\
- adds r0, r4, 0\n\
- muls r0, r5\n\
- mov r3, r8\n\
- adds r1, r0, r3\n\
- adds r0, r1, 0\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- adds r3, r4, 0x1\n\
- cmp r0, r6\n\
- bne _080441CC\n\
- ldrh r0, [r1, 0x28]\n\
- cmp r0, 0\n\
- beq _080441CC\n\
- strb r6, [r7]\n\
- lsls r0, r3, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
-_080441CC:\n\
- adds r4, r3, 0\n\
- cmp r4, r2\n\
- blt _080441AA\n\
- b _0804441E\n\
- .pool\n\
-_080441DC:\n\
- movs r4, 0\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _080441E8\n\
- b _0804441E\n\
-_080441E8:\n\
- ldr r7, =gBattleMons\n\
- adds r1, r0, 0\n\
- movs r5, 0x58\n\
- ldr r2, =gLastUsedAbility\n\
-_080441F0:\n\
- adds r0, r4, 0\n\
- muls r0, r5\n\
- adds r0, r7\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- adds r3, r4, 0x1\n\
- cmp r0, r6\n\
- bne _0804420C\n\
- cmp r4, r10\n\
- beq _0804420C\n\
- strb r6, [r2]\n\
- lsls r0, r3, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
-_0804420C:\n\
- adds r4, r3, 0\n\
- cmp r4, r1\n\
- blt _080441F0\n\
- b _0804441E\n\
- .pool\n\
-_08044220:\n\
- mov r0, r10\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- movs r4, 0\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _08044236\n\
- b _0804441E\n\
-_08044236:\n\
- ldr r7, =gBattleMons\n\
-_08044238:\n\
- lsls r0, r4, 24\n\
- lsrs r0, 24\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, r5\n\
- beq _08044264\n\
- movs r0, 0x58\n\
- muls r0, r4\n\
- adds r0, r7\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, r6\n\
- bne _08044264\n\
- ldr r0, =gLastUsedAbility\n\
- strb r6, [r0]\n\
- mov r0, r9\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
-_08044264:\n\
- adds r4, 0x1\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _08044238\n\
- b _0804441E\n\
- .pool\n\
-_0804427C:\n\
- mov r0, r10\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- movs r4, 0\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _08044292\n\
- b _0804441E\n\
-_08044292:\n\
- ldr r7, =gBattleMons\n\
-_08044294:\n\
- lsls r0, r4, 24\n\
- lsrs r0, 24\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, r5\n\
- bne _080442C0\n\
- movs r0, 0x58\n\
- muls r0, r4\n\
- adds r0, r7\n\
- adds r0, 0x20\n\
- ldrb r0, [r0]\n\
- cmp r0, r6\n\
- bne _080442C0\n\
- ldr r0, =gLastUsedAbility\n\
- strb r6, [r0]\n\
- mov r0, r9\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
-_080442C0:\n\
- adds r4, 0x1\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r0, [r0]\n\
- cmp r4, r0\n\
- blt _08044294\n\
- b _0804441E\n\
- .pool\n\
-_080442D8:\n\
- ldr r0, =BattleScript_CastformChange\n\
- bl BattleScriptPushCursorAndCallback\n\
- ldr r0, =gBattleScripting\n\
- strb r6, [r0, 0x17]\n\
-_080442E2:\n\
- ldr r0, =gBattleStruct\n\
- ldr r0, [r0]\n\
- adds r0, 0x7F\n\
- mov r1, r9\n\
- subs r1, 0x1\n\
- strb r1, [r0]\n\
- b _0804441E\n\
- .pool\n\
-_080442FC:\n\
- ldr r0, =BattleScript_CastformChange\n\
- bl BattleScriptPushCursorAndCallback\n\
- ldr r0, =gBattleScripting\n\
- mov r5, r10\n\
- strb r5, [r0, 0x17]\n\
- ldr r0, =gBattleStruct\n\
- ldr r0, [r0]\n\
- adds r0, 0x7F\n\
- mov r1, r9\n\
- subs r1, 0x1\n\
- strb r1, [r0]\n\
- b _0804443A\n\
- .pool\n\
-_08044324:\n\
- strb r1, [r7]\n\
- ldr r0, [r2]\n\
- ldr r1, =0xfff7ffff\n\
- ands r0, r1\n\
- str r0, [r2]\n\
- ldr r0, =gUnknown_082DB4B8\n\
- bl BattleScriptPushCursorAndCallback\n\
- b _080443C8\n\
- .pool\n\
-_08044340:\n\
- ldr r0, =BattleScript_TraceActivates\n\
- bl BattleScriptPushCursorAndCallback\n\
- ldr r1, =gStatuses3\n\
- ldr r0, [sp, 0x18]\n\
- adds r1, r0, r1\n\
- ldr r0, [r1]\n\
- ldr r2, =0xffefffff\n\
- ands r0, r2\n\
- str r0, [r1]\n\
- ldr r0, =gBattleScripting\n\
- strb r4, [r0, 0x17]\n\
- ldr r1, =gBattleTextBuff1\n\
- movs r4, 0xFD\n\
- strb r4, [r1]\n\
- movs r0, 0x4\n\
- strb r0, [r1, 0x1]\n\
- ldr r2, =gActiveBank\n\
- ldrb r0, [r2]\n\
- strb r0, [r1, 0x2]\n\
- ldr r3, =gBattlePartyID\n\
- ldrb r0, [r2]\n\
- lsls r0, 1\n\
- adds r0, r3\n\
- ldrh r0, [r0]\n\
- strb r0, [r1, 0x3]\n\
- movs r0, 0xFF\n\
- strb r0, [r1, 0x4]\n\
- ldr r1, =gBattleTextBuff2\n\
- strb r4, [r1]\n\
- movs r0, 0x9\n\
- strb r0, [r1, 0x1]\n\
- ldr r0, =gLastUsedAbility\n\
- ldrb r0, [r0]\n\
- strb r0, [r1, 0x2]\n\
- movs r0, 0x1\n\
- negs r0, r0\n\
- strb r0, [r1, 0x3]\n\
- b _0804441E\n\
- .pool\n\
-_080443B4:\n\
- strb r1, [r7]\n\
- ldr r0, [r2]\n\
- ldr r1, =0xfff7ffff\n\
- ands r0, r1\n\
- str r0, [r2]\n\
- bl BattleScriptPushCursor\n\
- ldr r1, =gBattlescriptCurrInstr\n\
- ldr r0, =gUnknown_082DB4C1\n\
- str r0, [r1]\n\
-_080443C8:\n\
- ldr r0, =gBattleStruct\n\
- ldr r0, [r0]\n\
- adds r0, 0xD8\n\
- strb r4, [r0]\n\
-_080443D0:\n\
- mov r0, r9\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
- b _0804441E\n\
- .pool\n\
-_080443EC:\n\
- movs r4, 0\n\
- ldr r0, =gNoOfAllBanks\n\
- ldrb r1, [r0]\n\
- cmp r4, r1\n\
- bge _0804441E\n\
- ldr r0, =gBattleMons\n\
- adds r2, r1, 0\n\
- adds r1, r0, 0\n\
- adds r1, 0x20\n\
- ldr r3, =gLastUsedAbility\n\
-_08044400:\n\
- ldrb r0, [r1]\n\
- cmp r0, r6\n\
- bne _08044416\n\
- cmp r4, r10\n\
- beq _08044416\n\
- strb r6, [r3]\n\
- mov r0, r9\n\
- adds r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r9, r0\n\
-_08044416:\n\
- adds r1, 0x58\n\
- adds r4, 0x1\n\
- cmp r4, r2\n\
- blt _08044400\n\
-_0804441E:\n\
- mov r1, r9\n\
- cmp r1, 0\n\
- beq _0804443A\n\
-_08044424:\n\
- ldr r2, [sp, 0x4]\n\
- cmp r2, 0xB\n\
- bhi _0804443A\n\
- ldr r1, =gLastUsedAbility\n\
- ldrb r0, [r1]\n\
- cmp r0, 0xFF\n\
- beq _0804443A\n\
- adds r1, r0, 0\n\
- mov r0, r10\n\
- bl RecordAbilityBattle\n\
-_0804443A:\n\
- mov r0, r9\n\
- add sp, 0x28\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- .pool\n\
- .syntax divided");
-}
-#endif // NONMATCHING
void BattleScriptExecute(const u8* BS_ptr)
{
diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c
index 83d32b56c..9a6f0371c 100755
--- a/src/braille_puzzles.c
+++ b/src/braille_puzzles.c
@@ -220,7 +220,7 @@ bool8 ShouldDoBrailleStrengthEffect(void)
void sub_8179834(void)
{
- gFieldEffectSpawnParams[0] = brm_get_pokemon_selection();
+ gFieldEffectArguments[0] = brm_get_pokemon_selection();
FieldEffectStart(FLDEFF_USE_FLY_ANCIENT_TOMB);
}
@@ -256,7 +256,7 @@ bool8 ShouldDoBrailleFlyEffect(void)
void sub_8179918(void)
{
- gFieldEffectSpawnParams[0] = brm_get_pokemon_selection();
+ gFieldEffectArguments[0] = brm_get_pokemon_selection();
FieldEffectStart(FLDEFF_USE_FLY_ANCIENT_TOMB);
}
@@ -417,7 +417,7 @@ bool8 ShouldDoBrailleRegicePuzzle(void)
}
// TODO: Find what flags 2 and 3 are.
FlagSet(3);
- FlagReset(2);
+ FlagClear(2);
return FALSE;
}
#else
@@ -568,7 +568,7 @@ _08179B44:\n\
movs r0, 0x3\n\
bl FlagSet\n\
movs r0, 0x2\n\
- bl FlagReset\n\
+ bl FlagClear\n\
_08179B5A:\n\
movs r0, 0\n\
_08179B5C:\n\
diff --git a/src/coins.c b/src/coins.c
index 4ee601b22..e1694b29c 100644
--- a/src/coins.c
+++ b/src/coins.c
@@ -5,12 +5,12 @@
#include "text_window.h"
#include "string_util.h"
#include "menu.h"
+#include "international_string_util.h"
#define MAX_COINS 9999
EWRAM_DATA u8 sCoinsWindowId = 0;
-extern s32 GetStringRightAlignXOffset(u8 fontId, u8 *str, s32 totalWidth);
extern void sub_819746C(u8 windowId, bool8 copyToVram);
extern const u8 gText_Coins[];
@@ -54,7 +54,7 @@ void SetCoins(u16 coinAmount)
}
/* Can't match it lol
-bool8 AddCoins(u16 toAdd)
+bool8 GiveCoins(u16 toAdd)
{
u16 newAmount;
u16 ownedCoins = GetCoins();
diff --git a/src/diploma.c b/src/diploma.c
index f2cbcabb7..d4a269757 100755
--- a/src/diploma.c
+++ b/src/diploma.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "diploma.h"
#include "palette.h"
#include "main.h"
#include "gpu_regs.h"
@@ -33,7 +34,7 @@ static void InitDiplomaBg(void);
static void InitDiplomaWindow(void);
static void PrintDiplomaText(u8 *, u8, u8);
-EWRAM_DATA void **gDiplomaTilemapPtr = {NULL};
+EWRAM_DATA static void **sDiplomaTilemapPtr = {NULL};
static void VBlankCB(void)
{
@@ -42,14 +43,14 @@ static void VBlankCB(void)
TransferPlttBuffer();
}
-static const u16 gDiplomaPalettes[][16] =
+static const u16 sDiplomaPalettes[][16] =
{
INCBIN_U16("graphics/misc/diploma_national.gbapal"),
INCBIN_U16("graphics/misc/diploma_hoenn.gbapal"),
};
-static const u8 gDiplomaTilemap[] = INCBIN_U8("graphics/misc/diploma_map.bin.lz");
-static const u8 gDiplomaTiles[] = INCBIN_U8("graphics/misc/diploma.4bpp.lz");
+static const u8 sDiplomaTilemap[] = INCBIN_U8("graphics/misc/diploma_map.bin.lz");
+static const u8 sDiplomaTiles[] = INCBIN_U8("graphics/misc/diploma.4bpp.lz");
void CB2_ShowDiploma(void)
{
@@ -76,15 +77,15 @@ void CB2_ShowDiploma(void)
ResetSpriteData();
ResetPaletteFade();
FreeAllSpritePalettes();
- LoadPalette(gDiplomaPalettes, 0, 64);
- gDiplomaTilemapPtr = malloc(0x1000);
+ LoadPalette(sDiplomaPalettes, 0, 64);
+ sDiplomaTilemapPtr = malloc(0x1000);
InitDiplomaBg();
InitDiplomaWindow();
reset_temp_tile_data_buffers();
- decompress_and_copy_tile_data_to_vram(1, &gDiplomaTiles, 0, 0, 0);
+ decompress_and_copy_tile_data_to_vram(1, &sDiplomaTiles, 0, 0, 0);
while (free_temp_tile_data_buffers_if_possible())
;
- LZDecompressWram(&gDiplomaTilemap, gDiplomaTilemapPtr);
+ LZDecompressWram(&sDiplomaTilemap, sDiplomaTilemapPtr);
CopyBgTilemapBufferToVram(1);
DisplayDiplomaText();
BlendPalettes(-1, 16, 0);
@@ -122,7 +123,7 @@ static void Task_DiplomaFadeOut(u8 taskId)
{
if (!gPaletteFade.active)
{
- Free(gDiplomaTilemapPtr);
+ Free(sDiplomaTilemapPtr);
FreeAllWindowBuffers();
DestroyTask(taskId);
SetMainCallback2(sub_80861E8);
@@ -147,7 +148,7 @@ static void DisplayDiplomaText(void)
CopyWindowToVram(0, 3);
}
-static const struct BgTemplate gDiplomaBgTemplates[2] =
+static const struct BgTemplate sDiplomaBgTemplates[2] =
{
{
.bg = 0,
@@ -172,8 +173,8 @@ static const struct BgTemplate gDiplomaBgTemplates[2] =
static void InitDiplomaBg(void)
{
ResetBgsAndClearDma3BusyFlags(0);
- InitBgsFromTemplates(0, gDiplomaBgTemplates, 2);
- SetBgTilemapBuffer(1, gDiplomaTilemapPtr);
+ InitBgsFromTemplates(0, sDiplomaBgTemplates, 2);
+ SetBgTilemapBuffer(1, sDiplomaTilemapPtr);
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
ShowBg(0);
ShowBg(1);
@@ -182,7 +183,7 @@ static void InitDiplomaBg(void)
SetGpuReg(REG_OFFSET_BLDY, DISPCNT_MODE_0);
}
-static const struct WindowTemplate gDiplomaWinTemplates[2] =
+static const struct WindowTemplate sDiplomaWinTemplates[2] =
{
{
.priority = 0,
@@ -198,7 +199,7 @@ static const struct WindowTemplate gDiplomaWinTemplates[2] =
static void InitDiplomaWindow(void)
{
- InitWindows(gDiplomaWinTemplates);
+ InitWindows(sDiplomaWinTemplates);
DeactivateAllTextPrinters();
LoadPalette(gUnknown_0860F074, 0xF0, 0x20);
FillWindowPixelBuffer(0, 0);
diff --git a/src/egg_hatch.c b/src/egg_hatch.c
index 4e4c10090..a1f187b85 100644
--- a/src/egg_hatch.c
+++ b/src/egg_hatch.c
@@ -59,7 +59,7 @@ extern u8* GetMonNick(struct Pokemon* mon, u8* dst);
extern u8* GetBoxMonNick(struct BoxPokemon* boxMon, u8* dst);
extern u8 sav1_map_get_name(void);
extern s8 sub_8198C58(void);
-extern void sub_81DB5E8(u8* str1, u8* str2, u8);
+extern void TVShowConvertInternationalString(u8* str1, u8* str2, u8);
extern void sub_806A068(u16, u8);
extern void fade_screen(u8, u8);
extern void overworld_free_bg_tilemaps(void);
@@ -404,8 +404,8 @@ static bool8 sub_807158C(struct DaycareData* daycare, u8 daycareId)
|| StringCompareWithoutExtCtrlCodes(gSaveBlock2Ptr->playerName, daycareMon->OT_name) != 0))
{
StringCopy(gStringVar1, nick);
- sub_81DB5E8(gStringVar2, daycareMon->OT_name, daycareMon->language_maybe);
- sub_81DB5E8(gStringVar3, daycareMon->monName, daycareMon->unknown);
+ TVShowConvertInternationalString(gStringVar2, daycareMon->OT_name, daycareMon->language_maybe);
+ TVShowConvertInternationalString(gStringVar3, daycareMon->monName, daycareMon->unknown);
return TRUE;
}
return FALSE;
diff --git a/src/event_data.c b/src/event_data.c
index fb2edb063..19a310db5 100644
--- a/src/event_data.c
+++ b/src/event_data.c
@@ -40,11 +40,11 @@ void ClearTempFieldEventData(void)
{
memset(gSaveBlock1Ptr->flags, 0, TEMP_FLAGS_SIZE);
memset(gSaveBlock1Ptr->vars, 0, TEMP_VARS_SIZE);
- FlagReset(SYS_ENC_UP_ITEM);
- FlagReset(SYS_ENC_DOWN_ITEM);
- FlagReset(SYS_USE_STRENGTH);
- FlagReset(SYS_CTRL_OBJ_DELETE);
- FlagReset(SYS_UNKNOWN_880);
+ FlagClear(SYS_ENC_UP_ITEM);
+ FlagClear(SYS_ENC_DOWN_ITEM);
+ FlagClear(SYS_USE_STRENGTH);
+ FlagClear(SYS_CTRL_OBJ_DELETE);
+ FlagClear(SYS_UNKNOWN_880);
}
// probably had different flag splits at one point.
@@ -58,7 +58,7 @@ void DisableNationalPokedex(void)
u16 *nationalDexVar = GetVarPointer(VAR_NATIONAL_DEX);
gSaveBlock2Ptr->pokedex.nationalMagic = 0;
*nationalDexVar = 0;
- FlagReset(SYS_NATIONAL_DEX);
+ FlagClear(SYS_NATIONAL_DEX);
}
void EnableNationalPokedex(void)
@@ -82,7 +82,7 @@ bool32 IsNationalPokedexEnabled(void)
void DisableMysteryEvent(void)
{
- FlagReset(SYS_MYSTERY_EVENT_ENABLE);
+ FlagClear(SYS_MYSTERY_EVENT_ENABLE);
}
void EnableMysteryEvent(void)
@@ -97,7 +97,7 @@ bool32 IsMysteryEventEnabled(void)
void DisableMysteryGift(void)
{
- FlagReset(SYS_MYSTERY_GIFT_ENABLE);
+ FlagClear(SYS_MYSTERY_GIFT_ENABLE);
}
void EnableMysteryGift(void)
@@ -112,22 +112,22 @@ bool32 IsMysteryGiftEnabled(void)
void sub_809D4D8(void)
{
- FlagReset(0x1E4);
- FlagReset(0x1E5);
- FlagReset(0x1E6);
- FlagReset(0x1E7);
- FlagReset(0x1E8);
- FlagReset(0x1E9);
- FlagReset(0x1EA);
- FlagReset(0x1EB);
- FlagReset(0x1EC);
- FlagReset(0x1ED);
- FlagReset(0x1EE);
- FlagReset(0x1EF);
- FlagReset(0x1F0);
- FlagReset(0x1F1);
- FlagReset(0x1F2);
- FlagReset(0x1F3);
+ FlagClear(0x1E4);
+ FlagClear(0x1E5);
+ FlagClear(0x1E6);
+ FlagClear(0x1E7);
+ FlagClear(0x1E8);
+ FlagClear(0x1E9);
+ FlagClear(0x1EA);
+ FlagClear(0x1EB);
+ FlagClear(0x1EC);
+ FlagClear(0x1ED);
+ FlagClear(0x1EE);
+ FlagClear(0x1EF);
+ FlagClear(0x1F0);
+ FlagClear(0x1F1);
+ FlagClear(0x1F2);
+ FlagClear(0x1F3);
}
void sub_809D570(void)
@@ -145,7 +145,7 @@ void sub_809D570(void)
void DisableResetRTC(void)
{
VarSet(VAR_RESET_RTC_ENABLE, 0);
- FlagReset(SYS_RESET_RTC_ENABLE);
+ FlagClear(SYS_RESET_RTC_ENABLE);
}
void EnableResetRTC(void)
@@ -214,7 +214,7 @@ u8 FlagSet(u16 id)
return 0;
}
-u8 FlagReset(u16 id)
+u8 FlagClear(u16 id)
{
u8 *ptr = GetFlagPointer(id);
if (ptr)
diff --git a/src/field_map_obj.c b/src/field_map_obj.c
index e80e402c8..e822fc1ca 100755
--- a/src/field_map_obj.c
+++ b/src/field_map_obj.c
@@ -3,7 +3,7 @@
#include "global.h"
#include "malloc.h"
#include "sprite.h"
-#include "rom4.h"
+#include "overworld.h"
#include "rng.h"
#include "event_scripts.h"
#include "berry.h"
@@ -2386,10 +2386,10 @@ bool8 do_berry_tree_growth_sparkle_1 (struct MapObject *mapObject, struct Sprite
{
if (!(sprite->data7 & 0x0004) && sprite->animNum == 4)
{
- gFieldEffectSpawnParams[0] = mapObject->coords2.x;
- gFieldEffectSpawnParams[1] = mapObject->coords2.y;
- gFieldEffectSpawnParams[2] = sprite->subpriority - 1;
- gFieldEffectSpawnParams[3] = sprite->oam.priority;
+ gFieldEffectArguments[0] = mapObject->coords2.x;
+ gFieldEffectArguments[1] = mapObject->coords2.y;
+ gFieldEffectArguments[2] = sprite->subpriority - 1;
+ gFieldEffectArguments[3] = sprite->oam.priority;
FieldEffectStart(FLDEFF_BERRY_TREE_GROWTH_SPARKLE);
sprite->animNum = berryStage;
}
@@ -2425,10 +2425,10 @@ bool8 do_berry_tree_growth_sparkle_2 (struct MapObject *mapObject, struct Sprite
sprite->data1 = 3;
sprite->data2 = 0;
sprite->data7 |= 0x0002;
- gFieldEffectSpawnParams[0] = mapObject->coords2.x;
- gFieldEffectSpawnParams[1] = mapObject->coords2.y;
- gFieldEffectSpawnParams[2] = sprite->subpriority - 1;
- gFieldEffectSpawnParams[3] = sprite->oam.priority;
+ gFieldEffectArguments[0] = mapObject->coords2.x;
+ gFieldEffectArguments[1] = mapObject->coords2.y;
+ gFieldEffectArguments[2] = sprite->subpriority - 1;
+ gFieldEffectArguments[3] = sprite->oam.priority;
FieldEffectStart(FLDEFF_BERRY_TREE_GROWTH_SPARKLE);
return TRUE;
}
@@ -3425,7 +3425,7 @@ void FieldObjectCB_TreeDisguise(struct Sprite *sprite)
mapObject = &gMapObjects[sprite->data0];
if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && !sprite->data7))
{
- FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectSpawnParams[0], (u8 *)&gFieldEffectSpawnParams[1], (u8 *)&gFieldEffectSpawnParams[2]);
+ FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]);
mapObject->mapobj_unk_1A = FieldEffectStart(FLDEFF_TREE_DISGUISE);
mapObject->mapobj_unk_21 = 1;
sprite->data7 ++;
@@ -3446,7 +3446,7 @@ void FieldObjectCB_MountainDisguise(struct Sprite *sprite)
mapObject = &gMapObjects[sprite->data0];
if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && !sprite->data7))
{
- FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectSpawnParams[0], (u8 *)&gFieldEffectSpawnParams[1], (u8 *)&gFieldEffectSpawnParams[2]);
+ FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]);
mapObject->mapobj_unk_1A = FieldEffectStart(FLDEFF_MOUNTAIN_DISGUISE);
mapObject->mapobj_unk_21 = 1;
sprite->data7 ++;
@@ -4693,7 +4693,7 @@ bool8 sub_80954CC(struct MapObject *mapObject, struct Sprite *sprite)
bool8 do_exclamation_mark_bubble_1(struct MapObject *mapObject, struct Sprite *sprite)
{
- FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectSpawnParams[0], (u8 *)&gFieldEffectSpawnParams[1], (u8 *)&gFieldEffectSpawnParams[2]);
+ FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]);
FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON_1);
sprite->data2 = 1;
return TRUE;
@@ -4701,7 +4701,7 @@ bool8 do_exclamation_mark_bubble_1(struct MapObject *mapObject, struct Sprite *s
bool8 do_exclamation_mark_bubble_2(struct MapObject *mapObject, struct Sprite *sprite)
{
- FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectSpawnParams[0], (u8 *)&gFieldEffectSpawnParams[1], (u8 *)&gFieldEffectSpawnParams[2]);
+ FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]);
FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON_2);
sprite->data2 = 1;
return TRUE;
@@ -4709,7 +4709,7 @@ bool8 do_exclamation_mark_bubble_2(struct MapObject *mapObject, struct Sprite *s
bool8 do_heart_bubble(struct MapObject *mapObject, struct Sprite *sprite)
{
- FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectSpawnParams[0], (u8 *)&gFieldEffectSpawnParams[1], (u8 *)&gFieldEffectSpawnParams[2]);
+ FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]);
FieldEffectStart(FLDEFF_HEART_ICON);
sprite->data2 = 1;
return TRUE;
diff --git a/src/field_special_scene.c b/src/field_special_scene.c
index 9c35a33da..54c1d8144 100755
--- a/src/field_special_scene.c
+++ b/src/field_special_scene.c
@@ -13,10 +13,10 @@
#define SECONDS(value) ((signed) (60.0 * value + 0.5))
extern u8 GetSSTidalLocation(s8 *, s8 *, s16 *, s16 *); // should be in field_specials.h
-extern void warp1_set(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
-extern bool8 sub_80D3340(u8, u8, u8);
+extern void Overworld_SetWarpDestination(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
+extern bool8 ScriptMovement_IsObjectMovementFinished(u8, u8, u8);
extern bool32 CountSSTidalStep(u16);
-extern bool8 exec_movement(u8, u8, u8, u8 *);
+extern bool8 ScriptMovement_StartObjectMovementScript(u8, u8, u8, u8 *);
extern void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused);
extern void sp13E_warp_to_last_warp(void);
extern void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId);
@@ -264,7 +264,7 @@ bool8 sub_80FB59C(void)
}
else
{
- warp1_set(mapGroup, mapNum, -1, x, y);
+ Overworld_SetWarpDestination(mapGroup, mapNum, -1, x, y);
return TRUE;
}
}
@@ -287,7 +287,7 @@ void Task_HandlePorthole(u8 taskId)
case IDLE_CHECK: // idle and move.
if (gMain.newKeys & A_BUTTON)
data[1] = 1;
- if (!sub_80D3340(0xFF, location->mapNum, location->mapGroup))
+ if (!ScriptMovement_IsObjectMovementFinished(0xFF, location->mapNum, location->mapGroup))
return;
if (CountSSTidalStep(1) == TRUE)
{
@@ -308,18 +308,18 @@ void Task_HandlePorthole(u8 taskId)
// run this once.
if (*var == 2) // which direction?
{
- exec_movement(0xFF, location->mapNum, location->mapGroup, gUnknown_0858E8AB);
+ ScriptMovement_StartObjectMovementScript(0xFF, location->mapNum, location->mapGroup, gUnknown_0858E8AB);
data[0] = IDLE_CHECK; // run case 1.
}
else
{
- exec_movement(0xFF, location->mapNum, location->mapGroup, gUnknown_0858E8AD);
+ ScriptMovement_StartObjectMovementScript(0xFF, location->mapNum, location->mapGroup, gUnknown_0858E8AD);
data[0] = IDLE_CHECK; // run case 1.
}
break;
case EXIT_PORTHOLE: // exit porthole.
- FlagReset(0x4001);
- FlagReset(0x4000);
+ FlagClear(0x4001);
+ FlagClear(0x4000);
copy_saved_warp2_bank_and_enter_x_to_warp1(0);
sp13E_warp_to_last_warp();
DestroyTask(taskId);
diff --git a/src/international_string_util.c b/src/international_string_util.c
new file mode 100644
index 000000000..c77b4f8ff
--- /dev/null
+++ b/src/international_string_util.c
@@ -0,0 +1,57 @@
+#include "global.h"
+#include "international_string_util.h"
+#include "text.h"
+
+extern s32 convert_pixel_width_to_tile_width(s32 a0); // script menu
+
+s32 GetStringCenterAlignXOffset(s32 fontId, const u8 *str, s32 totalWidth)
+{
+ return GetStringCenterAlignXOffsetWithLetterSpacing(fontId, str, totalWidth, 0);
+}
+
+s32 GetStringRightAlignXOffset(s32 fontId, const u8 *str, s32 totalWidth)
+{
+ return GetStringWidthDifference(fontId, str, totalWidth, 0);
+}
+
+s32 GetStringCenterAlignXOffsetWithLetterSpacing(s32 fontId, const u8 *str, s32 totalWidth, s32 letterSpacing)
+{
+ return GetStringWidthDifference(fontId, str, totalWidth, letterSpacing) / 2;
+}
+
+s32 GetStringWidthDifference(s32 fontId, const u8 *str, s32 totalWidth, s32 letterSpacing)
+{
+ s32 stringWidth = GetStringWidth(fontId, str, letterSpacing);
+ if (totalWidth > stringWidth)
+ return totalWidth - stringWidth;
+ else
+ return 0;
+}
+
+s32 GetMaxWidthInMenuTable(const u8 **str, s32 arg1)
+{
+ s32 i, var;
+
+ for (var = 0, i = 0; i < arg1; i++)
+ {
+ s32 stringWidth = GetStringWidth(1, str[i * 2], 0);
+ if (stringWidth > var)
+ var = stringWidth;
+ }
+
+ return convert_pixel_width_to_tile_width(var);
+}
+
+s32 sub_81DB3D8(const u8 **str, u8* arg1, s32 arg2)
+{
+ s32 i, var;
+
+ for (var = 0, i = 0; i < arg2; i++)
+ {
+ s32 stringWidth = GetStringWidth(1, str[arg1[i] * 2], 0);
+ if (stringWidth > var)
+ var = stringWidth;
+ }
+
+ return convert_pixel_width_to_tile_width(var);
+}
diff --git a/src/lilycove_lady.c b/src/lilycove_lady.c
index 9f38824f9..3b7ae49f2 100644
--- a/src/lilycove_lady.c
+++ b/src/lilycove_lady.c
@@ -4,7 +4,7 @@
#include "global.h"
#include "main.h"
-#include "rom4.h"
+#include "overworld.h"
#include "rom6.h"
#include "event_data.h"
#include "script.h"
diff --git a/src/money.c b/src/money.c
index 65a45b158..98f25a42a 100644
--- a/src/money.c
+++ b/src/money.c
@@ -110,7 +110,7 @@ void AddMoney(u32* moneyPtr, u32 toAdd)
SetMoney(moneyPtr, toSet);
}
-void SubtractMoney(u32* moneyPtr, u32 toSub)
+void RemoveMoney(u32* moneyPtr, u32 toSub)
{
u32 toSet = GetMoney(moneyPtr);
@@ -130,7 +130,7 @@ bool8 IsEnoughForCostInVar0x8005(void)
void SubtractMoneyFromVar0x8005(void)
{
- SubtractMoney(&gSaveBlock1Ptr->money, gSpecialVar_0x8005);
+ RemoveMoney(&gSaveBlock1Ptr->money, gSpecialVar_0x8005);
}
void PrintMoneyAmountInMoneyBox(u8 windowId, int amount, u8 speed)
diff --git a/src/new_game.c b/src/new_game.c
index 5a482c593..d0666dd71 100644
--- a/src/new_game.c
+++ b/src/new_game.c
@@ -17,6 +17,7 @@
#include "easy_chat.h"
#include "event_data.h"
#include "money.h"
+#include "tv.h"
#include "coins.h"
#include "text.h"
@@ -28,7 +29,7 @@ extern u8 gUnknown_030060B0;
// TODO: replace those declarations with file headers
extern u16 GetGeneratedTrainerIdLower(void);
extern void ClearContestWinnerPicsInContestHall(void);
-extern void warp1_set(s8 mapBank, s8 mapNo, s8 warpNo, s8 xPos, s8 yPos);
+extern void Overworld_SetWarpDestination(s8 mapBank, s8 mapNo, s8 warpNo, s8 xPos, s8 yPos);
extern void warp_in(void);
extern void sub_80BB358(void);
extern void ResetBagScrollPositions(void);
@@ -36,7 +37,6 @@ extern void sub_813624C(void); // clears something pokeblock related
extern void ResetPokedex(void);
extern void sub_8084400(void);
extern void ClearMailData(void);
-extern void ClearTVShowData(void);
extern void ResetGabbyAndTy(void);
extern void ResetSecretBases(void);
extern void ResetLinkContestBoolean(void);
@@ -131,7 +131,7 @@ void sub_8084400(void)
void WarpToTruck(void)
{
- warp1_set(25, 40, -1, -1, -1); // inside of truck
+ Overworld_SetWarpDestination(25, 40, -1, -1, -1); // inside of truck
warp_in();
}
diff --git a/src/palette.c b/src/palette.c
index d60efdbc5..d4bb593da 100644
--- a/src/palette.c
+++ b/src/palette.c
@@ -53,13 +53,13 @@ static void UpdateBlendRegisters(void);
static bool8 IsSoftwarePaletteFadeFinishing(void);
static void sub_80A2D54(u8 taskId);
-EWRAM_DATA u16 gPlttBufferUnfaded[0x200] = {0};
-EWRAM_DATA u16 gPlttBufferFaded[0x200] = {0};
+EWRAM_DATA u16 gPlttBufferUnfaded[PLTT_BUFFER_SIZE] = {0};
+EWRAM_DATA u16 gPlttBufferFaded[PLTT_BUFFER_SIZE] = {0};
EWRAM_DATA struct PaletteStruct sPaletteStructs[0x10] = {0};
EWRAM_DATA struct PaletteFadeControl gPaletteFade = {0};
static EWRAM_DATA u32 gFiller_2037FE0 = 0;
static EWRAM_DATA u32 sPlttBufferTransferPending = 0;
-EWRAM_DATA u8 gPaletteDecompressionBuffer[0x400] = {0};
+EWRAM_DATA u8 gPaletteDecompressionBuffer[PLTT_DECOMP_BUFFER_SIZE] = {0};
static const struct PaletteStructTemplate gDummyPaletteStructTemplate = {
.uid = 0xFFFF,
diff --git a/src/pokemon_2.c b/src/pokemon_2.c
index 8a16954a7..27441f952 100644
--- a/src/pokemon_2.c
+++ b/src/pokemon_2.c
@@ -28,7 +28,7 @@ extern const u32 gBitTable[];
extern const struct SpriteTemplate gUnknown_08329D98[];
extern const struct SpriteTemplate gUnknown_08329DF8[];
extern const union AnimCmd* gUnknown_082FF70C[];
-extern const union AnimCmd* const * const gUnknown_08309AAC[];
+extern const union AnimCmd* const * const gMonAnimationsSpriteAnimsPtrTable[];
extern const union AnimCmd* const * const gUnknown_08305D0C[];
extern const union AnimCmd* const * const gUnknown_0830536C[];
extern const u8 gText_BadEgg[];
@@ -165,9 +165,9 @@ void sub_806A068(u16 species, u8 bankIdentity)
if (bankIdentity == 0 || bankIdentity == 2)
gUnknown_0202499C.anims = gUnknown_082FF70C;
else if (species > 500)
- gUnknown_0202499C.anims = gUnknown_08309AAC[species - 500];
+ gUnknown_0202499C.anims = gMonAnimationsSpriteAnimsPtrTable[species - 500];
else
- gUnknown_0202499C.anims = gUnknown_08309AAC[species];
+ gUnknown_0202499C.anims = gMonAnimationsSpriteAnimsPtrTable[species];
}
void sub_806A12C(u16 trainerSpriteId, u8 bankIdentity)
@@ -1089,7 +1089,7 @@ u8 SendMonToPC(struct Pokemon* mon)
gSpecialVar_0x8012 = boxNo;
gSpecialVar_0x8013 = boxPos;
if (get_unknown_box_id() != boxNo)
- FlagReset(SYS_STORAGE_UNKNOWN_FLAG);
+ FlagClear(SYS_STORAGE_UNKNOWN_FLAG);
VarSet(VAR_STORAGE_UNKNOWN, boxNo);
return MON_GIVEN_TO_PC;
}
diff --git a/src/reset_save_heap.c b/src/reset_save_heap.c
index b786ff9f8..d4dbc5f42 100644
--- a/src/reset_save_heap.c
+++ b/src/reset_save_heap.c
@@ -5,7 +5,7 @@
#include "load_save.h"
#include "save.h"
#include "new_game.h"
-#include "rom4.h"
+#include "overworld.h"
#include "malloc.h"
void sub_81700F8(void)
diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c
new file mode 100644
index 000000000..25c2ca658
--- /dev/null
+++ b/src/reshow_battle_screen.c
@@ -0,0 +1,354 @@
+#include "global.h"
+#include "reshow_battle_screen.h"
+#include "battle.h"
+#include "palette.h"
+#include "main.h"
+#include "unknown_task.h"
+#include "text.h"
+#include "gpu_regs.h"
+#include "bg.h"
+#include "battle_controllers.h"
+#include "link.h"
+#include "sprite.h"
+#include "species.h"
+#include "battle_interface.h"
+
+extern u16 gBattle_BG0_X;
+extern u16 gBattle_BG0_Y;
+extern u16 gBattle_BG1_X;
+extern u16 gBattle_BG1_Y;
+extern u16 gBattle_BG2_X;
+extern u16 gBattle_BG2_Y;
+extern u16 gBattle_BG3_X;
+extern u16 gBattle_BG3_Y;
+extern u8 gReservedSpritePaletteCount;
+extern u8 gActionSelectionCursor[BATTLE_BANKS_COUNT];
+extern u8 gBankInMenu;
+extern u16 gBattlePartyID[BATTLE_BANKS_COUNT];
+extern u8 gNoOfAllBanks;
+extern u32 gBattleTypeFlags;
+extern u8 gBankSpriteIds[BATTLE_BANKS_COUNT];
+extern u8 gBattleMonForms[BATTLE_BANKS_COUNT];
+extern u8 gHealthBoxesIds[BATTLE_BANKS_COUNT];
+extern struct SpriteTemplate gUnknown_0202499C;
+
+extern const union AnimCmd * const * const gMonAnimationsSpriteAnimsPtrTable[];
+
+extern void dp12_8087EA4(void);
+extern void trs_config(void);
+extern bool8 IsDoubleBattle(void);
+extern u8 sub_80A614C(u8 bank);
+extern u8 sub_80A6138(u8 bank);
+extern u8 sub_80A82E4(u8 bank);
+extern void sub_806A068(u16 species, u8 bankIdentity);
+extern void sub_806A12C(u16 backPicId, u8 bankIdentity);
+extern u8 sub_80A5C6C(u8 bank, u8 caseId);
+
+// this file's functions
+static void CB2_ReshowBattleScreenAfterMenu(void);
+static bool8 LoadBankSpriteGfx(u8 bank);
+static void CreateBankSprite(u8 bank);
+static void CreateHealthboxSprite(u8 bank);
+static void sub_80A95F4(void);
+
+void nullsub_35(void)
+{
+
+}
+
+void ReshowBattleScreenAfterMenu(void)
+{
+ gPaletteFade.bufferTransferDisabled = 1;
+ SetHBlankCallback(NULL);
+ SetVBlankCallback(NULL);
+ SetGpuReg(REG_OFFSET_MOSAIC, 0);
+ gBattleScripting.reshowMainState = 0;
+ gBattleScripting.reshowHelperState = 0;
+ SetMainCallback2(CB2_ReshowBattleScreenAfterMenu);
+}
+
+static void CB2_ReshowBattleScreenAfterMenu(void)
+{
+ switch (gBattleScripting.reshowMainState)
+ {
+ case 0:
+ dp12_8087EA4();
+ trs_config();
+ SetBgAttribute(1, BG_CTRL_ATTR_VISIBLE, 0);
+ SetBgAttribute(2, BG_CTRL_ATTR_VISIBLE, 0);
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+ ShowBg(3);
+ ResetPaletteFade();
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = 0;
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0;
+ gBattle_BG2_X = 0;
+ gBattle_BG2_Y = 0;
+ gBattle_BG3_X = 0;
+ gBattle_BG3_Y = 0;
+ break;
+ case 1:
+ CpuFastFill(0, (void*)(VRAM), VRAM_SIZE);
+ break;
+ case 2:
+ LoadBattleTextboxAndBackground();
+ break;
+ case 3:
+ ResetSpriteData();
+ break;
+ case 4:
+ FreeAllSpritePalettes();
+ gReservedSpritePaletteCount = 4;
+ break;
+ case 5:
+ sub_805E350();
+ break;
+ case 6:
+ if (BattleLoadAllHealthBoxesGfx(gBattleScripting.reshowHelperState))
+ {
+ gBattleScripting.reshowHelperState = 0;
+ }
+ else
+ {
+ gBattleScripting.reshowHelperState++;
+ gBattleScripting.reshowMainState--;
+ }
+ break;
+ case 7:
+ if (!LoadBankSpriteGfx(0))
+ gBattleScripting.reshowMainState--;
+ break;
+ case 8:
+ if (!LoadBankSpriteGfx(1))
+ gBattleScripting.reshowMainState--;
+ break;
+ case 9:
+ if (!LoadBankSpriteGfx(2))
+ gBattleScripting.reshowMainState--;
+ break;
+ case 10:
+ if (!LoadBankSpriteGfx(3))
+ gBattleScripting.reshowMainState--;
+ break;
+ case 11:
+ CreateBankSprite(0);
+ break;
+ case 12:
+ CreateBankSprite(1);
+ break;
+ case 13:
+ CreateBankSprite(2);
+ break;
+ case 14:
+ CreateBankSprite(3);
+ break;
+ case 15:
+ CreateHealthboxSprite(0);
+ break;
+ case 16:
+ CreateHealthboxSprite(1);
+ break;
+ case 17:
+ CreateHealthboxSprite(2);
+ break;
+ case 18:
+ CreateHealthboxSprite(3);
+ break;
+ case 19:
+ {
+ u8 opponentBank;
+ u16 species;
+
+ LoadAndCreateEnemyShadowSprites();
+
+ opponentBank = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
+ species = GetMonData(&gEnemyParty[gBattlePartyID[opponentBank]], MON_DATA_SPECIES);
+ SetBankEnemyShadowSpriteCallback(opponentBank, species);
+
+ if (IsDoubleBattle())
+ {
+ opponentBank = GetBankByIdentity(IDENTITY_OPPONENT_MON2);
+ species = GetMonData(&gEnemyParty[gBattlePartyID[opponentBank]], MON_DATA_SPECIES);
+ SetBankEnemyShadowSpriteCallback(opponentBank, species);
+ }
+
+ ActionSelectionCreateCursorAt(gActionSelectionCursor[gBankInMenu], 0);
+
+ if (gLinkVSyncDisabled != 0 && gReceivedRemoteLinkPlayers != 0)
+ {
+ sub_800E0E8();
+ sub_800DFB4(0, 0);
+ }
+ }
+ break;
+ default:
+ SetVBlankCallback(VBlankCB_Battle);
+ sub_80A95F4();
+ BeginHardwarePaletteFade(0xFF, 0, 0x10, 0, 1);
+ gPaletteFade.bufferTransferDisabled = 0;
+ SetMainCallback2(BattleMainCB2);
+ sub_805EF14();
+ break;
+ }
+
+ gBattleScripting.reshowMainState++;
+}
+
+static void sub_80A95F4(void)
+{
+ struct BGCntrlBitfield *regBgcnt1, *regBgcnt2;
+
+ regBgcnt1 = (struct BGCntrlBitfield *)(&REG_BG1CNT);
+ regBgcnt1->charBaseBlock = 0;
+
+ regBgcnt2 = (struct BGCntrlBitfield *)(&REG_BG2CNT);
+ regBgcnt2->charBaseBlock = 0;
+}
+
+static bool8 LoadBankSpriteGfx(u8 bank)
+{
+ if (bank < gNoOfAllBanks)
+ {
+ if (GetBankSide(bank) != SIDE_PLAYER)
+ {
+ if (!gBattleSpritesDataPtr->bankData[bank].behindSubstitute)
+ BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlePartyID[bank]], bank);
+ else
+ BattleLoadSubstituteSpriteGfx(bank, FALSE);
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0)
+ LoadBackTrainerBankSpriteGfx(gSaveBlock2Ptr->playerGender, bank);
+ else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0)
+ LoadBackTrainerBankSpriteGfx(BACK_PIC_WALLY, bank);
+ else if (!gBattleSpritesDataPtr->bankData[bank].behindSubstitute)
+ BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlePartyID[bank]], bank);
+ else
+ BattleLoadSubstituteSpriteGfx(bank, FALSE);
+
+ gBattleScripting.reshowHelperState = 0;
+ }
+ return TRUE;
+}
+
+// todo: get rid of it once the struct is declared in a header
+struct MonCoords
+{
+ // This would use a bitfield, but sub_8079F44
+ // uses it as a u8 and casting won't match.
+ u8 coords; // u8 x:4, y:4;
+ u8 y_offset;
+};
+extern const struct MonCoords gTrainerBackPicCoords[];
+
+static void CreateBankSprite(u8 bank)
+{
+ if (bank < gNoOfAllBanks)
+ {
+ u8 posY;
+
+ if (gBattleSpritesDataPtr->bankData[bank].behindSubstitute)
+ posY = sub_80A614C(bank);
+ else
+ posY = sub_80A6138(bank);
+
+ if (GetBankSide(bank) != SIDE_PLAYER)
+ {
+ if (GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_HP) == 0)
+ return;
+
+ sub_806A068(GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES), GetBankIdentity(bank));
+ gBankSpriteIds[bank] = CreateSprite(&gUnknown_0202499C, sub_80A5C6C(bank, 2), posY, sub_80A82E4(bank));
+ gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
+ gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
+ gSprites[gBankSpriteIds[bank]].data0 = bank;
+ gSprites[gBankSpriteIds[bank]].data2 = GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
+
+ StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
+ if (gBattleSpritesDataPtr->bankData[bank].transformSpecies == SPECIES_CASTFORM)
+ gSprites[gBankSpriteIds[bank]].anims = gMonAnimationsSpriteAnimsPtrTable[SPECIES_CASTFORM];
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0)
+ {
+ sub_806A12C(gSaveBlock2Ptr->playerGender, GetBankIdentity(IDENTITY_PLAYER_MON1));
+ gBankSpriteIds[bank] = CreateSprite(&gUnknown_0202499C, 0x50,
+ (8 - gTrainerBackPicCoords[gSaveBlock2Ptr->playerGender].coords) * 4 + 80,
+ sub_80A82E4(0));
+ gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
+ gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
+ gSprites[gBankSpriteIds[bank]].data0 = bank;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0)
+ {
+ sub_806A12C(BACK_PIC_WALLY, GetBankIdentity(0));
+ gBankSpriteIds[bank] = CreateSprite(&gUnknown_0202499C, 0x50,
+ (8 - gTrainerBackPicCoords[BACK_PIC_WALLY].coords) * 4 + 80,
+ sub_80A82E4(0));
+ gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
+ gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
+ gSprites[gBankSpriteIds[bank]].data0 = bank;
+ }
+ else
+ {
+ if (GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_HP) == 0)
+ return;
+
+ sub_806A068(GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES), GetBankIdentity(bank));
+ gBankSpriteIds[bank] = CreateSprite(&gUnknown_0202499C, sub_80A5C6C(bank, 2), posY, sub_80A82E4(bank));
+ gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
+ gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
+ gSprites[gBankSpriteIds[bank]].data0 = bank;
+ gSprites[gBankSpriteIds[bank]].data2 = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
+
+ StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
+ if (gBattleSpritesDataPtr->bankData[bank].transformSpecies == SPECIES_CASTFORM)
+ gSprites[gBankSpriteIds[bank]].anims = gMonAnimationsSpriteAnimsPtrTable[SPECIES_CASTFORM];
+ }
+
+ gSprites[gBankSpriteIds[bank]].invisible = gBattleSpritesDataPtr->bankData[bank].invisible;
+ }
+}
+
+static void CreateHealthboxSprite(u8 bank)
+{
+ if (bank < gNoOfAllBanks)
+ {
+ u8 healthboxSpriteId;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0)
+ healthboxSpriteId = CreateSafariPlayerHealthboxSprites();
+ else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0)
+ return;
+ else
+ healthboxSpriteId = CreateBankHealthboxSprites(bank);
+
+ gHealthBoxesIds[bank] = healthboxSpriteId;
+ SetBankHealthboxSpritePos(bank);
+ SetHealthboxSpriteVisible(healthboxSpriteId);
+
+ if (GetBankSide(bank) != SIDE_PLAYER)
+ UpdateHealthboxAttribute(gHealthBoxesIds[bank], &gEnemyParty[gBattlePartyID[bank]], HEALTHBOX_ALL);
+ else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
+ UpdateHealthboxAttribute(gHealthBoxesIds[bank], &gPlayerParty[gBattlePartyID[bank]], HEALTHBOX_SAFARI_ALL_TEXT);
+ else
+ UpdateHealthboxAttribute(gHealthBoxesIds[bank], &gPlayerParty[gBattlePartyID[bank]], HEALTHBOX_ALL);
+
+ if (GetBankIdentity(bank) == IDENTITY_OPPONENT_MON2 || GetBankIdentity(bank) == IDENTITY_PLAYER_MON2)
+ nullsub_30(gHealthBoxesIds[bank], TRUE);
+ else
+ nullsub_30(gHealthBoxesIds[bank], FALSE);
+
+ if (GetBankSide(bank) != SIDE_PLAYER)
+ {
+ if (GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_HP) == 0)
+ SetHealthboxSpriteInvisible(healthboxSpriteId);
+ }
+ else if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI))
+ {
+ if (GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_HP) == 0)
+ SetHealthboxSpriteInvisible(healthboxSpriteId);
+ }
+ }
+}
diff --git a/src/safari_zone.c b/src/safari_zone.c
index 3e25468bf..a1ec38920 100644
--- a/src/safari_zone.c
+++ b/src/safari_zone.c
@@ -60,7 +60,7 @@ void SetSafariZoneFlag(void)
void ResetSafariZoneFlag(void)
{
- FlagReset(SYS_SAFARI_MODE);
+ FlagClear(SYS_SAFARI_MODE);
}
void EnterSafariMode(void)
@@ -114,7 +114,7 @@ void sub_80FC190(void)
{
SetMainCallback2(c2_exit_to_overworld_2_switch);
}
- else if (gBattleOutcome == 8)
+ else if (gBattleOutcome == BATTLE_SAFARI_OUT_OF_BALLS)
{
ScriptContext2_RunNewScript(gUnknown_082A4B4C);
warp_in();
diff --git a/src/save_location.c b/src/save_location.c
index 87067e14d..61a5fd30d 100755
--- a/src/save_location.c
+++ b/src/save_location.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "save_location.h"
#include "map_constants.h"
// used to make the list defines a little less ugly.
@@ -26,7 +27,7 @@ static bool32 IsCurMapInLocationList(const u16 *list)
}
// TODO: Not require a packed u16 array for these lists
-static const u16 gSaveLocationPokeCenterList[] =
+static const u16 sSaveLocationPokeCenterList[] =
{
MAP(OLDALE_TOWN_POKEMON_CENTER_1F),
MAP(OLDALE_TOWN_POKEMON_CENTER_2F),
@@ -71,10 +72,10 @@ static const u16 gSaveLocationPokeCenterList[] =
static bool32 IsCurMapPokeCenter(void)
{
- return IsCurMapInLocationList(gSaveLocationPokeCenterList);
+ return IsCurMapInLocationList(sSaveLocationPokeCenterList);
}
-static const u16 gSaveLocationReloadLocList[] = // there's only 1 location, and it's presumed its for the save reload feature for battle tower
+static const u16 sSaveLocationReloadLocList[] = // there's only 1 location, and it's presumed its for the save reload feature for battle tower
{
MAP(BATTLE_TOWER_LOBBY),
0xFFFF,
@@ -82,18 +83,18 @@ static const u16 gSaveLocationReloadLocList[] = // there's only 1 location, and
static bool32 IsCurMapReloadLocation(void)
{
- return IsCurMapInLocationList(gSaveLocationReloadLocList);
+ return IsCurMapInLocationList(sSaveLocationReloadLocList);
}
// nulled out list. unknown what this would have been
-static const u16 gUnknown_0861440E[] =
+static const u16 sUnknown_0861440E[] =
{
0xFFFF,
};
bool32 sub_81AFCEC(void)
{
- return IsCurMapInLocationList(gUnknown_0861440E);
+ return IsCurMapInLocationList(sUnknown_0861440E);
}
static void TrySetPokeCenterWarpStatus(void)
diff --git a/src/scrcmd.c b/src/scrcmd.c
index b56a53caf..af314609c 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -1,15 +1,2452 @@
-
-// Includes
#include "global.h"
+#include "battle_frontier_2.h"
+#include "battle_setup.h"
+#include "berry.h"
+#include "clock.h"
+#include "coins.h"
+#include "contest_link_80F57C4.h"
+#include "contest_painting.h"
+#include "data2.h"
+#include "decoration.h"
+#include "decoration_inventory.h"
+#include "event_data.h"
+#include "field_door.h"
+#include "field_effect.h"
+#include "field_fadetransition.h"
+#include "field_map_obj.h"
+#include "field_map_obj_helpers.h"
+#include "field_message_box.h"
+#include "field_player_avatar.h"
+#include "field_screen_effect.h"
+#include "field_specials.h"
+#include "field_tasks.h"
+#include "field_weather.h"
+#include "fieldmap.h"
+#include "item.h"
+#include "lilycove_lady.h"
+#include "main.h"
+#include "map_obj_lock.h"
+#include "menu.h"
+#include "money.h"
+#include "mystery_event_script.h"
+#include "new_menu_helpers.h"
+#include "palette.h"
+#include "party_menu.h"
+#include "pokemon_3.h"
+#include "pokemon_storage_system.h"
+#include "rng.h"
+#include "overworld.h"
+#include "rtc.h"
+#include "script.h"
+#include "script_menu.h"
+#include "script_movement.h"
+#include "script_pokemon_80F8.h"
+#include "script_pokemon_81B9.h"
+#include "shop.h"
+#include "slot_machine.h"
+#include "sound.h"
+#include "string_util.h"
+#include "text.h"
+#include "text_window.h"
+#include "trainer_see.h"
+#include "tv.h"
+#include "window.h"
+
+typedef u16 (*SpecialFunc)(void);
+typedef void (*NativeFunc)(void);
+
+extern u32 gUnknown_020375C0;
+
+static EWRAM_DATA u32 gUnknown_020375C4 = 0;
+static EWRAM_DATA u16 sPauseCounter = 0;
+static EWRAM_DATA u16 sMovingNpcId = 0;
+static EWRAM_DATA u16 sMovingNpcMapBank = 0;
+static EWRAM_DATA u16 sMovingNpcMapId = 0;
+static EWRAM_DATA u16 sFieldEffectScriptId = 0;
-// Static type declarations
+extern u16 gSpecialVar_0x8000;
+extern u16 gSpecialVar_0x8001;
+extern u16 gSpecialVar_0x8002;
+extern u16 gSpecialVar_0x8004;
-// Static RAM declarations
+extern u16 gScriptResult;
+
+extern u16 gScriptContestCategory;
IWRAM_DATA u8 gUnknown_03000F30;
-// Static ROM declarations
+extern const SpecialFunc gSpecials[];
+extern const u8 *gStdScripts[];
+extern const u8 *gStdScripts_End[];
+
+void sub_809BDB4(void);
+
+// This is defined in here so the optimizer can't see its value when compiling
+// script.c.
+void * const gNullScriptPtr = NULL;
+
+static const u8 sScriptConditionTable[6][3] =
+{
+// < = >
+ 1, 0, 0, // <
+ 0, 1, 0, // =
+ 0, 0, 1, // >
+ 1, 1, 0, // <=
+ 0, 1, 1, // >=
+ 1, 0, 1, // !=
+};
+
+static u8 * const sScriptStringVars[] =
+{
+ gStringVar1,
+ gStringVar2,
+ gStringVar3,
+};
+
+bool8 ScrCmd_nop(struct ScriptContext *ctx)
+{
+ return FALSE;
+}
+
+bool8 ScrCmd_nop1(struct ScriptContext *ctx)
+{
+ return FALSE;
+}
+
+bool8 ScrCmd_end(struct ScriptContext *ctx)
+{
+ StopScript(ctx);
+ return FALSE;
+}
+
+bool8 ScrCmd_gotonative(struct ScriptContext *ctx)
+{
+ bool8 (*addr)(void) = (bool8 (*)(void))ScriptReadWord(ctx);
+
+ SetupNativeScript(ctx, addr);
+ return TRUE;
+}
+
+bool8 ScrCmd_special(struct ScriptContext *ctx)
+{
+ u16 index = ScriptReadHalfword(ctx);
+
+ gSpecials[index]();
+ return FALSE;
+}
+
+bool8 ScrCmd_specialvar(struct ScriptContext *ctx)
+{
+ u16 *var = GetVarPointer(ScriptReadHalfword(ctx));
+
+ *var = gSpecials[ScriptReadHalfword(ctx)]();
+ return FALSE;
+}
+
+bool8 ScrCmd_callnative(struct ScriptContext *ctx)
+{
+ NativeFunc func = (NativeFunc)ScriptReadWord(ctx);
+
+ func();
+ return FALSE;
+}
+
+bool8 ScrCmd_waitstate(struct ScriptContext *ctx)
+{
+ ScriptContext1_Stop();
+ return TRUE;
+}
+
+bool8 ScrCmd_goto(struct ScriptContext *ctx)
+{
+ const u8 *ptr = (const u8 *)ScriptReadWord(ctx);
+
+ ScriptJump(ctx, ptr);
+ return FALSE;
+}
+
+bool8 ScrCmd_return(struct ScriptContext *ctx)
+{
+ ScriptReturn(ctx);
+ return FALSE;
+}
+
+bool8 ScrCmd_call(struct ScriptContext *ctx)
+{
+ const u8 *ptr = (const u8 *)ScriptReadWord(ctx);
+
+ ScriptCall(ctx, ptr);
+ return FALSE;
+}
+
+bool8 ScrCmd_goto_if(struct ScriptContext *ctx)
+{
+ u8 condition = ScriptReadByte(ctx);
+ const u8 *ptr = (const u8 *)ScriptReadWord(ctx);
+
+ if (sScriptConditionTable[condition][ctx->comparisonResult] == 1)
+ ScriptJump(ctx, ptr);
+ return FALSE;
+}
+
+bool8 ScrCmd_call_if(struct ScriptContext *ctx)
+{
+ u8 condition = ScriptReadByte(ctx);
+ const u8 *ptr = (const u8 *)ScriptReadWord(ctx);
+
+ if (sScriptConditionTable[condition][ctx->comparisonResult] == 1)
+ ScriptCall(ctx, ptr);
+ return FALSE;
+}
+
+bool8 ScrCmd_setvaddress(struct ScriptContext *ctx)
+{
+ u32 addr1 = (u32)ctx->scriptPtr - 1;
+ u32 addr2 = ScriptReadWord(ctx);
+
+ gUnknown_020375C4 = addr2 - addr1;
+ return FALSE;
+}
+
+bool8 ScrCmd_vgoto(struct ScriptContext *ctx)
+{
+ u32 addr = ScriptReadWord(ctx);
+
+ ScriptJump(ctx, (u8 *)(addr - gUnknown_020375C4));
+ return FALSE;
+}
+
+bool8 ScrCmd_vcall(struct ScriptContext *ctx)
+{
+ u32 addr = ScriptReadWord(ctx);
+
+ ScriptCall(ctx, (u8 *)(addr - gUnknown_020375C4));
+ return FALSE;
+}
+
+bool8 ScrCmd_vgoto_if(struct ScriptContext *ctx)
+{
+ u8 condition = ScriptReadByte(ctx);
+ const u8 *ptr = (const u8 *)(ScriptReadWord(ctx) - gUnknown_020375C4);
+
+ if (sScriptConditionTable[condition][ctx->comparisonResult] == 1)
+ ScriptJump(ctx, ptr);
+ return FALSE;
+}
+
+bool8 ScrCmd_vcall_if(struct ScriptContext *ctx)
+{
+ u8 condition = ScriptReadByte(ctx);
+ const u8 *ptr = (const u8 *)(ScriptReadWord(ctx) - gUnknown_020375C4);
+
+ if (sScriptConditionTable[condition][ctx->comparisonResult] == 1)
+ ScriptCall(ctx, ptr);
+ return FALSE;
+}
+
+bool8 ScrCmd_gotostd(struct ScriptContext *ctx)
+{
+ u8 index = ScriptReadByte(ctx);
+ const u8 **ptr = &gStdScripts[index];
+
+ if (ptr < gStdScripts_End)
+ ScriptJump(ctx, *ptr);
+ return FALSE;
+}
+
+bool8 ScrCmd_callstd(struct ScriptContext *ctx)
+{
+ u8 index = ScriptReadByte(ctx);
+ const u8 **ptr = &gStdScripts[index];
+
+ if (ptr < gStdScripts_End)
+ ScriptCall(ctx, *ptr);
+ return FALSE;
+}
+
+bool8 ScrCmd_gotostd_if(struct ScriptContext *ctx)
+{
+ u8 condition = ScriptReadByte(ctx);
+ u8 index = ScriptReadByte(ctx);
+
+ if (sScriptConditionTable[condition][ctx->comparisonResult] == 1)
+ {
+ const u8 **ptr = &gStdScripts[index];
+ if (ptr < gStdScripts_End)
+ ScriptJump(ctx, *ptr);
+ }
+ return FALSE;
+}
+
+bool8 ScrCmd_callstd_if(struct ScriptContext *ctx)
+{
+ u8 condition = ScriptReadByte(ctx);
+ u8 index = ScriptReadByte(ctx);
+
+ if (sScriptConditionTable[condition][ctx->comparisonResult] == 1)
+ {
+ const u8 **ptr = &gStdScripts[index];
+ if (ptr < gStdScripts_End)
+ ScriptCall(ctx, *ptr);
+ }
+ return FALSE;
+}
+
+bool8 ScrCmd_gotoram(struct ScriptContext *ctx)
+{
+ ScriptJump(ctx, (const u8 *)gUnknown_020375C0);
+ return FALSE;
+}
+
+bool8 ScrCmd_killscript(struct ScriptContext *ctx)
+{
+ ClearRamScript();
+ StopScript(ctx);
+ return TRUE;
+}
+
+bool8 ScrCmd_setmysteryeventstatus(struct ScriptContext *ctx)
+{
+ u8 value = ScriptReadByte(ctx);
+
+ SetMysteryEventScriptStatus(value);
+ return FALSE;
+}
+
+bool8 ScrCmd_loadword(struct ScriptContext *ctx)
+{
+ u8 index = ScriptReadByte(ctx);
+
+ ctx->data[index] = ScriptReadWord(ctx);
+ return FALSE;
+}
+
+bool8 ScrCmd_loadbytefromaddr(struct ScriptContext *ctx)
+{
+ u8 index = ScriptReadByte(ctx);
+
+ ctx->data[index] = *(const u8 *)ScriptReadWord(ctx);
+ return FALSE;
+}
+
+bool8 ScrCmd_writebytetoaddr(struct ScriptContext *ctx)
+{
+ u8 value = ScriptReadByte(ctx);
+
+ *(u8 *)ScriptReadWord(ctx) = value;
+ return FALSE;
+}
+
+bool8 ScrCmd_loadbyte(struct ScriptContext *ctx)
+{
+ u8 index = ScriptReadByte(ctx);
+
+ ctx->data[index] = ScriptReadByte(ctx);
+ return FALSE;
+}
+
+bool8 ScrCmd_setptrbyte(struct ScriptContext *ctx)
+{
+ u8 index = ScriptReadByte(ctx);
+
+ *(u8 *)ScriptReadWord(ctx) = ctx->data[index];
+ return FALSE;
+}
+
+bool8 ScrCmd_copylocal(struct ScriptContext *ctx)
+{
+ u8 destIndex = ScriptReadByte(ctx);
+ u8 srcIndex = ScriptReadByte(ctx);
+
+ ctx->data[destIndex] = ctx->data[srcIndex];
+ return FALSE;
+}
+
+bool8 ScrCmd_copybyte(struct ScriptContext *ctx)
+{
+ u8 *ptr = (u8 *)ScriptReadWord(ctx);
+ *ptr = *(const u8 *)ScriptReadWord(ctx);
+ return FALSE;
+}
+
+bool8 ScrCmd_setvar(struct ScriptContext *ctx)
+{
+ u16 *ptr = GetVarPointer(ScriptReadHalfword(ctx));
+ *ptr = ScriptReadHalfword(ctx);
+ return FALSE;
+}
+
+bool8 ScrCmd_copyvar(struct ScriptContext *ctx)
+{
+ u16 *ptr = GetVarPointer(ScriptReadHalfword(ctx));
+ *ptr = *GetVarPointer(ScriptReadHalfword(ctx));
+ return FALSE;
+}
+
+bool8 ScrCmd_setorcopyvar(struct ScriptContext *ctx)
+{
+ u16 *ptr = GetVarPointer(ScriptReadHalfword(ctx));
+ *ptr = VarGet(ScriptReadHalfword(ctx));
+ return FALSE;
+}
+
+u8 compare_012(u16 a1, u16 a2)
+{
+ if (a1 < a2)
+ return 0;
+ if (a1 == a2)
+ return 1;
+ return 2;
+}
+
+// comparelocaltolocal
+bool8 ScrCmd_compare_local_to_local(struct ScriptContext *ctx)
+{
+ const u8 value1 = ctx->data[ScriptReadByte(ctx)];
+ const u8 value2 = ctx->data[ScriptReadByte(ctx)];
+
+ ctx->comparisonResult = compare_012(value1, value2);
+ return FALSE;
+}
+
+// comparelocaltoimm
+bool8 ScrCmd_compare_local_to_value(struct ScriptContext *ctx)
+{
+ const u8 value1 = ctx->data[ScriptReadByte(ctx)];
+ const u8 value2 = ScriptReadByte(ctx);
+
+ ctx->comparisonResult = compare_012(value1, value2);
+ return FALSE;
+}
+
+bool8 ScrCmd_compare_local_to_addr(struct ScriptContext *ctx)
+{
+ const u8 value1 = ctx->data[ScriptReadByte(ctx)];
+ const u8 value2 = *(const u8 *)ScriptReadWord(ctx);
+
+ ctx->comparisonResult = compare_012(value1, value2);
+ return FALSE;
+}
+
+bool8 ScrCmd_compare_addr_to_local(struct ScriptContext *ctx)
+{
+ const u8 value1 = *(const u8 *)ScriptReadWord(ctx);
+ const u8 value2 = ctx->data[ScriptReadByte(ctx)];
+
+ ctx->comparisonResult = compare_012(value1, value2);
+ return FALSE;
+}
+
+bool8 ScrCmd_compare_addr_to_value(struct ScriptContext *ctx)
+{
+ const u8 value1 = *(const u8 *)ScriptReadWord(ctx);
+ const u8 value2 = ScriptReadByte(ctx);
+
+ ctx->comparisonResult = compare_012(value1, value2);
+ return FALSE;
+}
+
+bool8 ScrCmd_compare_addr_to_addr(struct ScriptContext *ctx)
+{
+ const u8 value1 = *(const u8 *)ScriptReadWord(ctx);
+ const u8 value2 = *(const u8 *)ScriptReadWord(ctx);
+
+ ctx->comparisonResult = compare_012(value1, value2);
+ return FALSE;
+}
+
+bool8 ScrCmd_compare_var_to_value(struct ScriptContext *ctx)
+{
+ const u16 value1 = *GetVarPointer(ScriptReadHalfword(ctx));
+ const u16 value2 = ScriptReadHalfword(ctx);
+
+ ctx->comparisonResult = compare_012(value1, value2);
+ return FALSE;
+}
+
+bool8 ScrCmd_compare_var_to_var(struct ScriptContext *ctx)
+{
+ const u16 *ptr1 = GetVarPointer(ScriptReadHalfword(ctx));
+ const u16 *ptr2 = GetVarPointer(ScriptReadHalfword(ctx));
+
+ ctx->comparisonResult = compare_012(*ptr1, *ptr2);
+ return FALSE;
+}
+
+bool8 ScrCmd_addvar(struct ScriptContext *ctx)
+{
+ u16 *ptr = GetVarPointer(ScriptReadHalfword(ctx));
+ *ptr += ScriptReadHalfword(ctx);
+ return FALSE;
+}
+
+bool8 ScrCmd_subvar(struct ScriptContext *ctx)
+{
+ u16 *ptr = GetVarPointer(ScriptReadHalfword(ctx));
+ *ptr -= VarGet(ScriptReadHalfword(ctx));
+ return FALSE;
+}
+
+bool8 ScrCmd_random(struct ScriptContext *ctx)
+{
+ u16 max = VarGet(ScriptReadHalfword(ctx));
+
+ gScriptResult = Random() % max;
+ return FALSE;
+}
+
+bool8 ScrCmd_additem(struct ScriptContext *ctx)
+{
+ u16 itemId = VarGet(ScriptReadHalfword(ctx));
+ u32 quantity = VarGet(ScriptReadHalfword(ctx));
+
+ gScriptResult = AddBagItem(itemId, (u8)quantity);
+ return FALSE;
+}
+
+bool8 ScrCmd_removeitem(struct ScriptContext *ctx)
+{
+ u16 itemId = VarGet(ScriptReadHalfword(ctx));
+ u32 quantity = VarGet(ScriptReadHalfword(ctx));
+
+ gScriptResult = RemoveBagItem(itemId, (u8)quantity);
+ return FALSE;
+}
+
+bool8 ScrCmd_checkitemspace(struct ScriptContext *ctx)
+{
+ u16 itemId = VarGet(ScriptReadHalfword(ctx));
+ u32 quantity = VarGet(ScriptReadHalfword(ctx));
+
+ gScriptResult = CheckBagHasSpace(itemId, (u8)quantity);
+ return FALSE;
+}
+
+bool8 ScrCmd_checkitem(struct ScriptContext *ctx)
+{
+ u16 itemId = VarGet(ScriptReadHalfword(ctx));
+ u32 quantity = VarGet(ScriptReadHalfword(ctx));
+
+ gScriptResult = CheckBagHasItem(itemId, (u8)quantity);
+ return FALSE;
+}
+
+bool8 ScrCmd_checkitemtype(struct ScriptContext *ctx)
+{
+ u16 itemId = VarGet(ScriptReadHalfword(ctx));
+
+ gScriptResult = GetPocketByItemId(itemId);
+ return FALSE;
+}
+
+bool8 ScrCmd_addpcitem(struct ScriptContext *ctx)
+{
+ u16 itemId = VarGet(ScriptReadHalfword(ctx));
+ u16 quantity = VarGet(ScriptReadHalfword(ctx));
+
+ gScriptResult = AddPCItem(itemId, quantity);
+ return FALSE;
+}
+
+bool8 ScrCmd_checkpcitem(struct ScriptContext *ctx)
+{
+ u16 itemId = VarGet(ScriptReadHalfword(ctx));
+ u16 quantity = VarGet(ScriptReadHalfword(ctx));
+
+ gScriptResult = CheckPCHasItem(itemId, quantity);
+ return FALSE;
+}
+
+bool8 ScrCmd_adddecor(struct ScriptContext *ctx)
+{
+ u32 decorId = VarGet(ScriptReadHalfword(ctx));
+
+ gScriptResult = DecorationAdd(decorId);
+ return FALSE;
+}
+
+bool8 ScrCmd_removedecor(struct ScriptContext *ctx)
+{
+ u32 decorId = VarGet(ScriptReadHalfword(ctx));
+
+ gScriptResult = DecorationRemove(decorId);
+ return FALSE;
+}
+
+bool8 ScrCmd_checkdecor(struct ScriptContext *ctx)
+{
+ u32 decorId = VarGet(ScriptReadHalfword(ctx));
+
+ gScriptResult = DecorationCheckSpace(decorId);
+ return FALSE;
+}
+
+bool8 ScrCmd_hasdecor(struct ScriptContext *ctx)
+{
+ u32 decorId = VarGet(ScriptReadHalfword(ctx));
+
+ gScriptResult = CheckHasDecoration(decorId);
+ return FALSE;
+}
+
+bool8 ScrCmd_setflag(struct ScriptContext *ctx)
+{
+ FlagSet(ScriptReadHalfword(ctx));
+ return FALSE;
+}
+
+bool8 ScrCmd_clearflag(struct ScriptContext *ctx)
+{
+ FlagClear(ScriptReadHalfword(ctx));
+ return FALSE;
+}
+
+bool8 ScrCmd_checkflag(struct ScriptContext *ctx)
+{
+ ctx->comparisonResult = FlagGet(ScriptReadHalfword(ctx));
+ return FALSE;
+}
+
+bool8 ScrCmd_incrementgamestat(struct ScriptContext *ctx)
+{
+ IncrementGameStat(ScriptReadByte(ctx));
+ return FALSE;
+}
+
+bool8 ScrCmd_animdarklevel(struct ScriptContext *ctx)
+{
+ sub_80B009C(ScriptReadByte(ctx));
+ ScriptContext1_Stop();
+ return TRUE;
+}
+
+bool8 ScrCmd_setdarklevel(struct ScriptContext *ctx)
+{
+ u16 flashLevel = VarGet(ScriptReadHalfword(ctx));
+
+ Overworld_SetFlashLevel(flashLevel);
+ return FALSE;
+}
+
+static bool8 IsPaletteNotActive(void)
+{
+ if (!gPaletteFade.active)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 ScrCmd_fadescreen(struct ScriptContext *ctx)
+{
+ fade_screen(ScriptReadByte(ctx), 0);
+ SetupNativeScript(ctx, IsPaletteNotActive);
+ return TRUE;
+}
+
+bool8 ScrCmd_fadescreendelay(struct ScriptContext *ctx)
+{
+ u8 mode = ScriptReadByte(ctx);
+ u8 delay = ScriptReadByte(ctx);
+
+ fade_screen(mode, delay);
+ SetupNativeScript(ctx, IsPaletteNotActive);
+ return TRUE;
+}
+
+bool8 ScrCmd_fadescreenswapbuffers(struct ScriptContext *ctx)
+{
+ u8 mode = ScriptReadByte(ctx);
+
+ switch (mode)
+ {
+ case 1:
+ default:
+ CpuCopy32(gPlttBufferUnfaded, gPaletteDecompressionBuffer, PLTT_DECOMP_BUFFER_SIZE);
+ fade_screen(mode, 0);
+ break;
+ case 0:
+ case 2:
+ CpuCopy32(gPaletteDecompressionBuffer, gPlttBufferUnfaded, PLTT_DECOMP_BUFFER_SIZE);
+ fade_screen(mode, 0);
+ break;
+ }
+
+ SetupNativeScript(ctx, IsPaletteNotActive);
+ return TRUE;
+}
+
+static bool8 RunPauseTimer(void)
+{
+ sPauseCounter--;
+
+ if (sPauseCounter == 0)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 ScrCmd_delay(struct ScriptContext *ctx)
+{
+ sPauseCounter = ScriptReadHalfword(ctx);
+ SetupNativeScript(ctx, RunPauseTimer);
+ return TRUE;
+}
+
+bool8 ScrCmd_initclock(struct ScriptContext *ctx)
+{
+ u8 hour = VarGet(ScriptReadHalfword(ctx));
+ u8 minute = VarGet(ScriptReadHalfword(ctx));
+
+ RtcInitLocalTimeOffset(hour, minute);
+ return FALSE;
+}
+
+bool8 ScrCmd_dodailyevents(struct ScriptContext *ctx)
+{
+ DoTimeBasedEvents();
+ return FALSE;
+}
+
+bool8 ScrCmd_gettime(struct ScriptContext *ctx)
+{
+ RtcCalcLocalTime();
+ gSpecialVar_0x8000 = gLocalTime.hours;
+ gSpecialVar_0x8001 = gLocalTime.minutes;
+ gSpecialVar_0x8002 = gLocalTime.seconds;
+ return FALSE;
+}
+
+bool8 ScrCmd_setweather(struct ScriptContext *ctx)
+{
+ u16 weather = VarGet(ScriptReadHalfword(ctx));
+
+ SetSav1Weather(weather);
+ return FALSE;
+}
+
+bool8 ScrCmd_resetweather(struct ScriptContext *ctx)
+{
+ sub_80AEDBC();
+ return FALSE;
+}
+
+bool8 ScrCmd_doweather(struct ScriptContext *ctx)
+{
+ DoCurrentWeather();
+ return FALSE;
+}
+
+bool8 ScrCmd_tileeffect(struct ScriptContext *ctx)
+{
+ ActivatePerStepCallback(ScriptReadByte(ctx));
+ return FALSE;
+}
+
+bool8 ScrCmd_setmaplayoutindex(struct ScriptContext *ctx)
+{
+ u16 value = VarGet(ScriptReadHalfword(ctx));
+
+ sub_8085524(value);
+ return FALSE;
+}
+
+bool8 ScrCmd_warp(struct ScriptContext *ctx)
+{
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+ u8 warpId = ScriptReadByte(ctx);
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+
+ Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y);
+ sub_80AF734();
+ player_avatar_init_params_reset();
+ return TRUE;
+}
+
+bool8 ScrCmd_warpsilent(struct ScriptContext *ctx)
+{
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+ u8 warpId = ScriptReadByte(ctx);
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+
+ Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y);
+ sp13E_warp_to_last_warp();
+ player_avatar_init_params_reset();
+ return TRUE;
+}
+
+bool8 ScrCmd_warpdoor(struct ScriptContext *ctx)
+{
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+ u8 warpId = ScriptReadByte(ctx);
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+
+ Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y);
+ sub_80AF7D0();
+ player_avatar_init_params_reset();
+ return TRUE;
+}
+
+bool8 ScrCmd_warphole(struct ScriptContext *ctx)
+{
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+ u16 x;
+ u16 y;
+
+ PlayerGetDestCoords(&x, &y);
+ if (mapGroup == 0xFF && mapNum == 0xFF)
+ sub_8084EBC(x - 7, y - 7);
+ else
+ Overworld_SetWarpDestination(mapGroup, mapNum, -1, x - 7, y - 7);
+ sp13F_fall_to_last_warp();
+ player_avatar_init_params_reset();
+ return TRUE;
+}
+
+bool8 ScrCmd_warpteleport(struct ScriptContext *ctx)
+{
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+ u8 warpId = ScriptReadByte(ctx);
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+
+ Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y);
+ sub_80AF848();
+ player_avatar_init_params_reset();
+ return TRUE;
+}
+
+bool8 ScrCmd_warpD7(struct ScriptContext *ctx)
+{
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+ u8 warpId = ScriptReadByte(ctx);
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+
+ Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y);
+ sub_80AF87C();
+ player_avatar_init_params_reset();
+ return TRUE;
+}
+
+bool8 ScrCmd_setwarp(struct ScriptContext *ctx)
+{
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+ u8 warpId = ScriptReadByte(ctx);
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+
+ Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y);
+ return FALSE;
+}
+
+bool8 ScrCmd_setdynamicwarp(struct ScriptContext *ctx)
+{
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+ u8 warpId = ScriptReadByte(ctx);
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+
+ saved_warp2_set_2(0, mapGroup, mapNum, warpId, x, y);
+ return FALSE;
+}
+
+bool8 ScrCmd_setdivewarp(struct ScriptContext *ctx)
+{
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+ u8 warpId = ScriptReadByte(ctx);
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+
+ sub_8084E2C(mapGroup, mapNum, warpId, x, y);
+ return FALSE;
+}
+
+bool8 ScrCmd_setholewarp(struct ScriptContext *ctx)
+{
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+ u8 warpId = ScriptReadByte(ctx);
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+
+ sub_8084E80(mapGroup, mapNum, warpId, x, y);
+ return FALSE;
+}
+
+bool8 ScrCmd_setescapewarp(struct ScriptContext *ctx)
+{
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+ u8 warpId = ScriptReadByte(ctx);
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+
+ sub_8084DD4(mapGroup, mapNum, warpId, x, y);
+ return FALSE;
+}
+
+bool8 ScrCmd_getplayerxy(struct ScriptContext *ctx)
+{
+ u16 *pX = GetVarPointer(ScriptReadHalfword(ctx));
+ u16 *pY = GetVarPointer(ScriptReadHalfword(ctx));
+
+ *pX = gSaveBlock1Ptr->pos.x;
+ *pY = gSaveBlock1Ptr->pos.y;
+ return FALSE;
+}
+
+bool8 ScrCmd_countpokemon(struct ScriptContext *ctx)
+{
+ gScriptResult = CalculatePlayerPartyCount();
+ return FALSE;
+}
+
+bool8 ScrCmd_playse(struct ScriptContext *ctx)
+{
+ PlaySE(ScriptReadHalfword(ctx));
+ return FALSE;
+}
+
+static bool8 WaitForSoundEffectFinish(void)
+{
+ if (!IsSEPlaying())
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 ScrCmd_waitse(struct ScriptContext *ctx)
+{
+ SetupNativeScript(ctx, WaitForSoundEffectFinish);
+ return TRUE;
+}
+
+bool8 ScrCmd_playfanfare(struct ScriptContext *ctx)
+{
+ PlayFanfare(ScriptReadHalfword(ctx));
+ return FALSE;
+}
+
+static bool8 WaitForFanfareFinish(void)
+{
+ return IsFanfareTaskInactive();
+}
+
+bool8 ScrCmd_waitfanfare(struct ScriptContext *ctx)
+{
+ SetupNativeScript(ctx, WaitForFanfareFinish);
+ return TRUE;
+}
+
+bool8 ScrCmd_playbgm(struct ScriptContext *ctx)
+{
+ u16 songId = ScriptReadHalfword(ctx);
+ bool8 val = ScriptReadByte(ctx);
+
+ if (val == TRUE)
+ Overworld_SetSavedMusic(songId);
+ PlayNewMapMusic(songId);
+ return FALSE;
+}
+
+bool8 ScrCmd_savebgm(struct ScriptContext *ctx)
+{
+ Overworld_SetSavedMusic(ScriptReadHalfword(ctx));
+ return FALSE;
+}
+
+bool8 ScrCmd_fadedefaultbgm(struct ScriptContext *ctx)
+{
+ Overworld_ChangeMusicToDefault();
+ return FALSE;
+}
+
+bool8 ScrCmd_fadenewbgm(struct ScriptContext *ctx)
+{
+ Overworld_ChangeMusicTo(ScriptReadHalfword(ctx));
+ return FALSE;
+}
+
+bool8 ScrCmd_fadeoutbgm(struct ScriptContext *ctx)
+{
+ u8 speed = ScriptReadByte(ctx);
+
+ if (speed != 0)
+ FadeOutBGMTemporarily(4 * speed);
+ else
+ FadeOutBGMTemporarily(4);
+ SetupNativeScript(ctx, IsBGMPausedOrStopped);
+ return TRUE;
+}
+
+bool8 ScrCmd_fadeinbgm(struct ScriptContext *ctx)
+{
+ u8 speed = ScriptReadByte(ctx);
+
+ if (speed != 0)
+ FadeInBGM(4 * speed);
+ else
+ FadeInBGM(4);
+ return FALSE;
+}
+
+bool8 ScrCmd_applymovement(struct ScriptContext *ctx)
+{
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+ const void *movementScript = (const void *)ScriptReadWord(ctx);
+
+ ScriptMovement_StartObjectMovementScript(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, movementScript);
+ sMovingNpcId = localId;
+ return FALSE;
+}
+
+bool8 ScrCmd_applymovement_at(struct ScriptContext *ctx)
+{
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+ const void *movementScript = (const void *)ScriptReadWord(ctx);
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+
+ ScriptMovement_StartObjectMovementScript(localId, mapNum, mapGroup, movementScript);
+ sMovingNpcId = localId;
+ return FALSE;
+}
+
+static bool8 WaitForMovementFinish(void)
+{
+ return ScriptMovement_IsObjectMovementFinished(sMovingNpcId, sMovingNpcMapId, sMovingNpcMapBank);
+}
+
+bool8 ScrCmd_waitmovement(struct ScriptContext *ctx)
+{
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+
+ if (localId != 0)
+ sMovingNpcId = localId;
+ sMovingNpcMapBank = gSaveBlock1Ptr->location.mapGroup;
+ sMovingNpcMapId = gSaveBlock1Ptr->location.mapNum;
+ SetupNativeScript(ctx, WaitForMovementFinish);
+ return TRUE;
+}
+
+bool8 ScrCmd_waitmovement_at(struct ScriptContext *ctx)
+{
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+ u8 mapBank;
+ u8 mapId;
+
+ if (localId != 0)
+ sMovingNpcId = localId;
+ mapBank = ScriptReadByte(ctx);
+ mapId = ScriptReadByte(ctx);
+ sMovingNpcMapBank = mapBank;
+ sMovingNpcMapId = mapId;
+ SetupNativeScript(ctx, WaitForMovementFinish);
+ return TRUE;
+}
+
+bool8 ScrCmd_removeobject(struct ScriptContext *ctx)
+{
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+
+ RemoveFieldObjectByLocalIdAndMap(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+ return FALSE;
+}
+
+bool8 ScrCmd_removeobject_at(struct ScriptContext *ctx)
+{
+ u16 objectId = VarGet(ScriptReadHalfword(ctx));
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+
+ RemoveFieldObjectByLocalIdAndMap(objectId, mapNum, mapGroup);
+ return FALSE;
+}
+
+bool8 ScrCmd_addobject(struct ScriptContext *ctx)
+{
+ u16 objectId = VarGet(ScriptReadHalfword(ctx));
+
+ show_sprite(objectId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+ return FALSE;
+}
+
+bool8 ScrCmd_addobject_at(struct ScriptContext *ctx)
+{
+ u16 objectId = VarGet(ScriptReadHalfword(ctx));
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+
+ show_sprite(objectId, mapNum, mapGroup);
+ return FALSE;
+}
+
+bool8 ScrCmd_setobjectxy(struct ScriptContext *ctx)
+{
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+
+ sub_808EBA8(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, x, y);
+ return FALSE;
+}
+
+bool8 ScrCmd_setobjectxyperm(struct ScriptContext *ctx)
+{
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+
+ Overworld_SetMapObjTemplateCoords(localId, x, y);
+ return FALSE;
+}
+
+bool8 ScrCmd_moveobjectoffscreen(struct ScriptContext *ctx)
+{
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+
+ sub_808F254(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+ return FALSE;
+}
+
+bool8 ScrCmd_showobject(struct ScriptContext *ctx)
+{
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+
+ npc_by_local_id_and_map_set_field_1_bit_x20(localId, mapNum, mapGroup, 0);
+ return FALSE;
+}
+
+bool8 ScrCmd_hideobject(struct ScriptContext *ctx)
+{
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+
+ npc_by_local_id_and_map_set_field_1_bit_x20(localId, mapNum, mapGroup, 1);
+ return FALSE;
+}
+
+bool8 ScrCmd_setobjectpriority(struct ScriptContext *ctx)
+{
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+ u8 priority = ScriptReadByte(ctx);
+
+ sub_808E78C(localId, mapNum, mapGroup, priority + 83);
+ return FALSE;
+}
+
+bool8 ScrCmd_resetobjectpriority(struct ScriptContext *ctx)
+{
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+
+ sub_808E7E4(localId, mapNum, mapGroup);
+ return FALSE;
+}
+
+bool8 ScrCmd_faceplayer(struct ScriptContext *ctx)
+{
+ if (gMapObjects[gSelectedMapObject].active)
+ {
+ FieldObjectFaceOppositeDirection(&gMapObjects[gSelectedMapObject],
+ player_get_direction_lower_nybble());
+ }
+ return FALSE;
+}
+
+bool8 ScrCmd_turnobject(struct ScriptContext *ctx)
+{
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+ u8 direction = ScriptReadByte(ctx);
+
+ FieldObjectTurnByLocalIdAndMap(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, direction);
+ return FALSE;
+}
+
+bool8 ScrCmd_setobjectmovementtype(struct ScriptContext *ctx)
+{
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+ u8 movementType = ScriptReadByte(ctx);
+
+ Overworld_SetMapObjTemplateMovementType(localId, movementType);
+ return FALSE;
+}
+
+bool8 ScrCmd_createvobject(struct ScriptContext *ctx)
+{
+ u8 graphicsId = ScriptReadByte(ctx);
+ u8 v2 = ScriptReadByte(ctx);
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u32 y = VarGet(ScriptReadHalfword(ctx));
+ u8 elevation = ScriptReadByte(ctx);
+ u8 direction = ScriptReadByte(ctx);
+
+ sprite_new(graphicsId, v2, x, y, elevation, direction);
+ return FALSE;
+}
+
+bool8 ScrCmd_turnvobject(struct ScriptContext *ctx)
+{
+ u8 v1 = ScriptReadByte(ctx);
+ u8 direction = ScriptReadByte(ctx);
+
+ sub_8097B78(v1, direction);
+ return FALSE;
+}
+
+bool8 ScrCmd_lockall(struct ScriptContext *ctx)
+{
+ if (is_c1_link_related_active())
+ {
+ return FALSE;
+ }
+ else
+ {
+ ScriptFreezeMapObjects();
+ SetupNativeScript(ctx, sub_80983C4);
+ return TRUE;
+ }
+}
+
+bool8 ScrCmd_lock(struct ScriptContext *ctx)
+{
+ if (is_c1_link_related_active())
+ {
+ return FALSE;
+ }
+ else
+ {
+ if (gMapObjects[gSelectedMapObject].active)
+ {
+ LockSelectedMapObject();
+ SetupNativeScript(ctx, sub_809847C);
+ }
+ else
+ {
+ ScriptFreezeMapObjects();
+ SetupNativeScript(ctx, sub_80983C4);
+ }
+ return TRUE;
+ }
+}
+
+bool8 ScrCmd_releaseall(struct ScriptContext *ctx)
+{
+ u8 objectId;
+
+ HideFieldMessageBox();
+ objectId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[objectId]);
+ sub_80D338C();
+ UnfreezeMapObjects();
+ return FALSE;
+}
+
+bool8 ScrCmd_release(struct ScriptContext *ctx)
+{
+ u8 objectId;
+
+ HideFieldMessageBox();
+ if (gMapObjects[gSelectedMapObject].active)
+ FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[gSelectedMapObject]);
+ objectId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[objectId]);
+ sub_80D338C();
+ UnfreezeMapObjects();
+ return FALSE;
+}
+
+bool8 ScrCmd_message(struct ScriptContext *ctx)
+{
+ const u8 *msg = (const u8 *)ScriptReadWord(ctx);
+
+ if (msg == NULL)
+ msg = (const u8 *)ctx->data[0];
+ ShowFieldMessage(msg);
+ return FALSE;
+}
+
+bool8 ScrCmd_pokenavcall(struct ScriptContext *ctx)
+{
+ const u8 *msg = (const u8 *)ScriptReadWord(ctx);
+
+ if (msg == NULL)
+ msg = (const u8 *)ctx->data[0];
+ sub_8098238(msg);
+ return FALSE;
+}
+
+bool8 ScrCmd_messageautoscroll(struct ScriptContext *ctx)
+{
+ const u8 *msg = (const u8 *)ScriptReadWord(ctx);
+
+ if (msg == NULL)
+ msg = (const u8 *)ctx->data[0];
+ gTextFlags.flag_2 = TRUE;
+ gTextFlags.flag_3 = TRUE;
+ ShowFieldAutoScrollMessage(msg);
+ return FALSE;
+}
+
+bool8 ScrCmd_cmdDB(struct ScriptContext *ctx)
+{
+ const u8 *msg = (const u8 *)ScriptReadWord(ctx);
+
+ if (msg == NULL)
+ msg = (const u8 *)ctx->data[0];
+ sub_81973A4();
+ sub_81973C4(0, 1);
+ PrintTextOnWindow(0, 1, msg, 0, 1, 0, 0);
+ return FALSE;
+}
+
+bool8 ScrCmd_waitmessage(struct ScriptContext *ctx)
+{
+ SetupNativeScript(ctx, IsFieldMessageBoxHidden);
+ return TRUE;
+}
+
+bool8 ScrCmd_closemessage(struct ScriptContext *ctx)
+{
+ HideFieldMessageBox();
+ return FALSE;
+}
+
+static bool8 WaitForAorBPress(void)
+{
+ if (gMain.newKeys & A_BUTTON)
+ return TRUE;
+ if (gMain.newKeys & B_BUTTON)
+ return TRUE;
+ return FALSE;
+}
+
+bool8 ScrCmd_waitbutton(struct ScriptContext *ctx)
+{
+ SetupNativeScript(ctx, WaitForAorBPress);
+ return TRUE;
+}
+
+bool8 ScrCmd_yesnobox(struct ScriptContext *ctx)
+{
+ u8 left = ScriptReadByte(ctx);
+ u8 top = ScriptReadByte(ctx);
+
+ if (ScriptMenu_YesNo(left, top) == TRUE)
+ {
+ ScriptContext1_Stop();
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+bool8 ScrCmd_multichoice(struct ScriptContext *ctx)
+{
+ u8 left = ScriptReadByte(ctx);
+ u8 top = ScriptReadByte(ctx);
+ u8 multichoiceId = ScriptReadByte(ctx);
+ u8 ignoreBPress = ScriptReadByte(ctx);
+
+ if (ScriptMenu_Multichoice(left, top, multichoiceId, ignoreBPress) == TRUE)
+ {
+ ScriptContext1_Stop();
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+bool8 ScrCmd_multichoicedefault(struct ScriptContext *ctx)
+{
+ u8 left = ScriptReadByte(ctx);
+ u8 top = ScriptReadByte(ctx);
+ u8 multichoiceId = ScriptReadByte(ctx);
+ u8 defaultChoice = ScriptReadByte(ctx);
+ u8 ignoreBPress = ScriptReadByte(ctx);
+
+ if (ScriptMenu_MultichoiceWithDefault(left, top, multichoiceId, ignoreBPress, defaultChoice) == TRUE)
+ {
+ ScriptContext1_Stop();
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+bool8 ScrCmd_drawbox(struct ScriptContext *ctx)
+{
+ /*u8 left = ScriptReadByte(ctx);
+ u8 top = ScriptReadByte(ctx);
+ u8 right = ScriptReadByte(ctx);
+ u8 bottom = ScriptReadByte(ctx);
+
+ MenuDrawTextWindow(left, top, right, bottom);*/
+ return FALSE;
+}
+
+bool8 ScrCmd_multichoicegrid(struct ScriptContext *ctx)
+{
+ u8 left = ScriptReadByte(ctx);
+ u8 top = ScriptReadByte(ctx);
+ u8 multichoiceId = ScriptReadByte(ctx);
+ u8 numColumns = ScriptReadByte(ctx);
+ u8 ignoreBPress = ScriptReadByte(ctx);
+
+ if (ScriptMenu_MultichoiceGrid(left, top, multichoiceId, ignoreBPress, numColumns) == TRUE)
+ {
+ ScriptContext1_Stop();
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+bool8 ScrCmd_erasebox(struct ScriptContext *ctx)
+{
+ u8 left = ScriptReadByte(ctx);
+ u8 top = ScriptReadByte(ctx);
+ u8 right = ScriptReadByte(ctx);
+ u8 bottom = ScriptReadByte(ctx);
+
+ // MenuZeroFillWindowRect(left, top, right, bottom);
+ return FALSE;
+}
+
+bool8 ScrCmd_drawboxtext(struct ScriptContext *ctx)
+{
+ u8 left = ScriptReadByte(ctx);
+ u8 top = ScriptReadByte(ctx);
+ u8 multichoiceId = ScriptReadByte(ctx);
+ u8 ignoreBPress = ScriptReadByte(ctx);
+
+ /*if (Multichoice(left, top, multichoiceId, ignoreBPress) == TRUE)
+ {
+ ScriptContext1_Stop();
+ return TRUE;
+ }*/
+ return FALSE;
+}
+
+bool8 ScrCmd_drawpokepic(struct ScriptContext *ctx)
+{
+ u16 species = VarGet(ScriptReadHalfword(ctx));
+ u8 x = ScriptReadByte(ctx);
+ u8 y = ScriptReadByte(ctx);
+
+ ScriptMenu_ShowPokemonPic(species, x, y);
+ return FALSE;
+}
+
+bool8 ScrCmd_erasepokepic(struct ScriptContext *ctx)
+{
+ bool8 (*func)(void) = ScriptMenu_GetPicboxWaitFunc();
+
+ if (func == NULL)
+ return FALSE;
+ SetupNativeScript(ctx, func);
+ return TRUE;
+}
+
+bool8 ScrCmd_drawcontestwinner(struct ScriptContext *ctx)
+{
+ u8 v1 = ScriptReadByte(ctx);
+
+ if (v1)
+ sub_812FDA8(v1);
+ ShowContestWinner();
+ ScriptContext1_Stop();
+ return TRUE;
+}
+
+// Lots of math, can't figure it out.
+/*
+bool8 ScrCmd_braillemessage(struct ScriptContext *ctx)
+{
+ u8 *ptr = (u8 *)ScriptReadWord(ctx);
+ struct WindowTemplate template1;
+ struct WindowTemplate template2;
+ int i;
+ u8 width;
+ u8 height;
+ int temp1;
+ int temp2;
+ u8 x;
+ u8 y;
+
+ StringExpandPlaceholders(gStringVar4, ptr + 6);
+
+ width = GetStringWidth(6, gStringVar4, -1) / 8;
+
+ if (width > 0x1C)
+ width = 0x1C;
+
+ for (i = 0, height = 4; gStringVar4[i] != 0xFF;)
+ {
+ if (gStringVar4[i++] == 0xFE)
+ height += 3;
+ }
+
+ if (height > 0x12)
+ height = 0x12;
+
+ x = width + 2;
+ temp1 = (0x1E - x) / 2;
+ x = temp1 + 1;
+ temp1 = ((x - temp1 - 1) * 8 + 3);
+
+ y = height + 2;
+ temp2 = (0x14 - y) / 2;
+ y = temp2 + 2;
+ temp2 = ((y - temp2 - 1) * 8);
+
+ sub_8198A50(&template1, 0, x, y, width, height, 0xF, 0x1);
+ template2 = template1;
+ gUnknown_03000F30 = AddWindow(&template2);
+ sub_809882C(gUnknown_03000F30, 0x214, 0xE0);
+ sub_81973FC(gUnknown_03000F30, 0);
+ PutWindowTilemap(gUnknown_03000F30);
+ FillWindowPixelBuffer(gUnknown_03000F30, 0x11);
+ PrintTextOnWindow(gUnknown_03000F30, 6, gStringVar4, temp1, temp2, 0xFF, 0x0);
+ CopyWindowToVram(gUnknown_03000F30, 3);
+ return FALSE;
+}*/
+__attribute__((naked))
+bool8 ScrCmd_braillemessage(struct ScriptContext *ctx)
+{
+ asm("push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ sub sp, #0x20\n\
+ bl ScriptReadWord\n\
+ add r1, r0, #0\n\
+ ldr r4, =gStringVar4\n\
+ add r1, #0x6\n\
+ add r0, r4, #0\n\
+ bl StringExpandPlaceholders\n\
+ mov r2, #0x1\n\
+ neg r2, r2\n\
+ mov r0, #0x6\n\
+ add r1, r4, #0\n\
+ bl GetStringWidth\n\
+ lsr r0, #3\n\
+ lsl r0, #24\n\
+ lsr r7, r0, #24\n\
+ cmp r7, #0x1C\n\
+ bls _0809AE9C\n\
+ mov r7, #0x1C\n\
+_0809AE9C:\n\
+ mov r5, #0x4\n\
+ ldrb r0, [r4]\n\
+ add r2, r7, #0x2\n\
+ add r1, sp, #0x18\n\
+ mov r8, r1\n\
+ cmp r0, #0xFF\n\
+ beq _0809AEC0\n\
+ add r1, r4, #0\n\
+_0809AEAC:\n\
+ ldrb r0, [r1]\n\
+ add r1, #0x1\n\
+ cmp r0, #0xFE\n\
+ bne _0809AEBA\n\
+ add r0, r5, #0x3\n\
+ lsl r0, #24\n\
+ lsr r5, r0, #24\n\
+_0809AEBA:\n\
+ ldrb r0, [r1]\n\
+ cmp r0, #0xFF\n\
+ bne _0809AEAC\n\
+_0809AEC0:\n\
+ cmp r5, #0x12\n\
+ bls _0809AEC6\n\
+ mov r5, #0x12\n\
+_0809AEC6:\n\
+ lsl r0, r2, #24\n\
+ lsr r0, #24\n\
+ mov r2, #0x1E\n\
+ sub r2, r0\n\
+ lsr r0, r2, #31\n\
+ add r2, r0\n\
+ asr r2, #1\n\
+ lsl r2, #24\n\
+ add r0, r5, #0x2\n\
+ lsl r0, #24\n\
+ lsr r0, #24\n\
+ mov r4, #0x14\n\
+ sub r4, r0\n\
+ lsr r0, r4, #31\n\
+ add r4, r0\n\
+ asr r4, #1\n\
+ lsl r4, #24\n\
+ lsr r6, r2, #24\n\
+ mov r0, #0x80\n\
+ lsl r0, #17\n\
+ add r2, r0\n\
+ lsr r2, #24\n\
+ lsr r3, r4, #24\n\
+ mov r1, #0x80\n\
+ lsl r1, #18\n\
+ add r4, r1\n\
+ lsr r4, #24\n\
+ sub r6, r2, r6\n\
+ sub r6, #0x1\n\
+ lsl r6, #3\n\
+ add r6, #0x3\n\
+ lsl r6, #24\n\
+ lsr r6, #24\n\
+ sub r4, r3\n\
+ sub r4, #0x1\n\
+ lsl r4, #27\n\
+ lsr r4, #24\n\
+ add r3, #0x1\n\
+ lsl r3, #24\n\
+ lsr r3, #24\n\
+ str r7, [sp]\n\
+ str r5, [sp, #0x4]\n\
+ mov r0, #0xF\n\
+ str r0, [sp, #0x8]\n\
+ mov r0, #0x1\n\
+ str r0, [sp, #0xC]\n\
+ add r0, sp, #0x10\n\
+ mov r1, #0\n\
+ bl sub_8198A50\n\
+ ldr r0, [sp, #0x10]\n\
+ ldr r1, [sp, #0x14]\n\
+ str r0, [sp, #0x18]\n\
+ str r1, [sp, #0x1C]\n\
+ ldr r5, =gUnknown_03000F30\n\
+ mov r0, r8\n\
+ bl AddWindow\n\
+ strb r0, [r5]\n\
+ ldrb r0, [r5]\n\
+ mov r1, #0x85\n\
+ lsl r1, #2\n\
+ mov r2, #0xE0\n\
+ bl sub_809882C\n\
+ ldrb r0, [r5]\n\
+ mov r1, #0\n\
+ bl sub_81973FC\n\
+ ldrb r0, [r5]\n\
+ bl PutWindowTilemap\n\
+ ldrb r0, [r5]\n\
+ mov r1, #0x11\n\
+ bl FillWindowPixelBuffer\n\
+ ldrb r0, [r5]\n\
+ ldr r2, =gStringVar4\n\
+ str r4, [sp]\n\
+ mov r1, #0xFF\n\
+ str r1, [sp, #0x4]\n\
+ mov r1, #0\n\
+ str r1, [sp, #0x8]\n\
+ mov r1, #0x6\n\
+ add r3, r6, #0\n\
+ bl PrintTextOnWindow\n\
+ ldrb r0, [r5]\n\
+ mov r1, #0x3\n\
+ bl CopyWindowToVram\n\
+ mov r0, #0\n\
+ add sp, #0x20\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .pool");
+}
+
+bool8 ScrCmd_cmdDA(struct ScriptContext *ctx)
+{
+ sub_809BDB4();
+ return FALSE;
+}
+
+bool8 ScrCmd_vmessage(struct ScriptContext *ctx)
+{
+ u32 v1 = ScriptReadWord(ctx);
+
+ ShowFieldMessage((u8 *)(v1 - gUnknown_020375C4));
+ return FALSE;
+}
+
+bool8 ScrCmd_getspeciesname(struct ScriptContext *ctx)
+{
+ u8 stringVarIndex = ScriptReadByte(ctx);
+ u16 species = VarGet(ScriptReadHalfword(ctx));
+
+ StringCopy(sScriptStringVars[stringVarIndex], gSpeciesNames[species]);
+ return FALSE;
+}
+
+bool8 ScrCmd_getfirstpartypokename(struct ScriptContext *ctx)
+{
+ u8 stringVarIndex = ScriptReadByte(ctx);
+
+ u8 *dest = sScriptStringVars[stringVarIndex];
+ u8 partyIndex = GetLeadMonIndex();
+ u32 species = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPECIES, NULL);
+ StringCopy(dest, gSpeciesNames[species]);
+ return FALSE;
+}
+
+bool8 ScrCmd_getpartypokename(struct ScriptContext *ctx)
+{
+ u8 stringVarIndex = ScriptReadByte(ctx);
+ u16 partyIndex = VarGet(ScriptReadHalfword(ctx));
+
+ GetMonData(&gPlayerParty[partyIndex], MON_DATA_NICKNAME, sScriptStringVars[stringVarIndex]);
+ StringGetEnd10(sScriptStringVars[stringVarIndex]);
+ return FALSE;
+}
+
+bool8 ScrCmd_getitemname(struct ScriptContext *ctx)
+{
+ u8 stringVarIndex = ScriptReadByte(ctx);
+ u16 itemId = VarGet(ScriptReadHalfword(ctx));
+
+ CopyItemName(itemId, sScriptStringVars[stringVarIndex]);
+ return FALSE;
+}
+
+bool8 ScrCmd_getitemnameplural(struct ScriptContext *ctx)
+{
+ u8 stringVarIndex = ScriptReadByte(ctx);
+ u16 itemId = VarGet(ScriptReadHalfword(ctx));
+ u16 quantity = VarGet(ScriptReadHalfword(ctx));
+
+ CopyItemNameHandlePlural(itemId, sScriptStringVars[stringVarIndex], quantity);
+ return FALSE;
+}
+
+bool8 ScrCmd_getdecorname(struct ScriptContext *ctx)
+{
+ u8 stringVarIndex = ScriptReadByte(ctx);
+ u16 decorId = VarGet(ScriptReadHalfword(ctx));
+
+ StringCopy(sScriptStringVars[stringVarIndex], gDecorations[decorId].name);
+ return FALSE;
+}
+
+bool8 ScrCmd_getmovename(struct ScriptContext *ctx)
+{
+ u8 stringVarIndex = ScriptReadByte(ctx);
+ u16 moveId = VarGet(ScriptReadHalfword(ctx));
+
+ StringCopy(sScriptStringVars[stringVarIndex], gMoveNames[moveId]);
+ return FALSE;
+}
+
+bool8 ScrCmd_getnumberstring(struct ScriptContext *ctx)
+{
+ u8 stringVarIndex = ScriptReadByte(ctx);
+ u16 v1 = VarGet(ScriptReadHalfword(ctx));
+ u8 v2 = sub_80EF370(v1);
+
+ ConvertIntToDecimalStringN(sScriptStringVars[stringVarIndex], v1, 0, v2);
+ return FALSE;
+}
+
+bool8 ScrCmd_getstdstring(struct ScriptContext *ctx)
+{
+ u8 stringVarIndex = ScriptReadByte(ctx);
+ u16 index = VarGet(ScriptReadHalfword(ctx));
+
+ StringCopy(sScriptStringVars[stringVarIndex], gUnknown_0858BAF0[index]);
+ return FALSE;
+}
+
+bool8 ScrCmd_getcontesttype(struct ScriptContext *ctx)
+{
+ u8 stringVarIndex = ScriptReadByte(ctx);
+ u16 index = VarGet(ScriptReadHalfword(ctx));
+
+ sub_818E868(sScriptStringVars[stringVarIndex], index);
+ return FALSE;
+}
+
+bool8 ScrCmd_getstring(struct ScriptContext *ctx)
+{
+ u8 stringVarIndex = ScriptReadByte(ctx);
+ const u8 *text = (u8 *)ScriptReadWord(ctx);
+
+ StringCopy(sScriptStringVars[stringVarIndex], text);
+ return FALSE;
+}
+
+bool8 ScrCmd_vloadword(struct ScriptContext *ctx)
+{
+ const u8 *ptr = (u8 *)(ScriptReadWord(ctx) - gUnknown_020375C4);
+
+ StringExpandPlaceholders(gStringVar4, ptr);
+ return FALSE;
+}
+
+bool8 ScrCmd_vgetstring(struct ScriptContext *ctx)
+{
+ u8 stringVarIndex = ScriptReadByte(ctx);
+ u32 addr = ScriptReadWord(ctx);
+
+ const u8 *src = (u8 *)(addr - gUnknown_020375C4);
+ u8 *dest = sScriptStringVars[stringVarIndex];
+ StringCopy(dest, src);
+ return FALSE;
+}
+
+bool8 ScrCmd_getboxname(struct ScriptContext *ctx)
+{
+ u8 stringVarIndex = ScriptReadByte(ctx);
+ u16 boxId = VarGet(ScriptReadHalfword(ctx));
+
+ StringCopy(sScriptStringVars[stringVarIndex], GetBoxNamePtr(boxId));
+ return FALSE;
+}
+
+bool8 ScrCmd_givepoke(struct ScriptContext *ctx)
+{
+ u16 species = VarGet(ScriptReadHalfword(ctx));
+ u8 level = ScriptReadByte(ctx);
+ u16 item = VarGet(ScriptReadHalfword(ctx));
+ u32 unkParam1 = ScriptReadWord(ctx);
+ u32 unkParam2 = ScriptReadWord(ctx);
+ u8 unkParam3 = ScriptReadByte(ctx);
+
+ gScriptResult = ScriptGiveMon(species, level, item, unkParam1, unkParam2, unkParam3);
+ return FALSE;
+}
+
+bool8 ScrCmd_giveegg(struct ScriptContext *ctx)
+{
+ u16 species = VarGet(ScriptReadHalfword(ctx));
+
+ gScriptResult = ScriptGiveEgg(species);
+ return FALSE;
+}
+
+bool8 ScrCmd_setpokemove(struct ScriptContext *ctx)
+{
+ u8 partyIndex = ScriptReadByte(ctx);
+ u8 slot = ScriptReadByte(ctx);
+ u16 move = ScriptReadHalfword(ctx);
+
+ ScriptSetMonMoveSlot(partyIndex, move, slot);
+ return FALSE;
+}
+
+bool8 ScrCmd_checkpokemove(struct ScriptContext *ctx)
+{
+ u8 i;
+ u16 moveId = ScriptReadHalfword(ctx);
+
+ gScriptResult = 6;
+ for (i = 0; i < 6; i++)
+ {
+ u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES, NULL);
+ if (!species)
+ break;
+ // UB: GetMonData() arguments don't match function definition
+ if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) && pokemon_has_move(&gPlayerParty[i], moveId) == TRUE)
+ {
+ gScriptResult = i;
+ gSpecialVar_0x8004 = species;
+ break;
+ }
+ }
+ return FALSE;
+}
+
+bool8 ScrCmd_givemoney(struct ScriptContext *ctx)
+{
+ u32 amount = ScriptReadWord(ctx);
+ u8 ignore = ScriptReadByte(ctx);
+
+ if (!ignore)
+ AddMoney(&gSaveBlock1Ptr->money, amount);
+ return FALSE;
+}
+
+bool8 ScrCmd_takemoney(struct ScriptContext *ctx)
+{
+ u32 amount = ScriptReadWord(ctx);
+ u8 ignore = ScriptReadByte(ctx);
+
+ if (!ignore)
+ RemoveMoney(&gSaveBlock1Ptr->money, amount);
+ return FALSE;
+}
+
+bool8 ScrCmd_checkmoney(struct ScriptContext *ctx)
+{
+ u32 amount = ScriptReadWord(ctx);
+ u8 ignore = ScriptReadByte(ctx);
+
+ if (!ignore)
+ gScriptResult = IsEnoughMoney(&gSaveBlock1Ptr->money, amount);
+ return FALSE;
+}
+
+bool8 ScrCmd_showmoneybox(struct ScriptContext *ctx)
+{
+ u8 x = ScriptReadByte(ctx);
+ u8 y = ScriptReadByte(ctx);
+ u8 ignore = ScriptReadByte(ctx);
+
+ if (!ignore)
+ DrawMoneyBox(GetMoney(&gSaveBlock1Ptr->money), x, y);
+ return FALSE;
+}
+
+bool8 ScrCmd_hidemoneybox(struct ScriptContext *ctx)
+{
+ /*u8 x = ScriptReadByte(ctx);
+ u8 y = ScriptReadByte(ctx);*/
+
+ HideMoneyBox();
+ return FALSE;
+}
+
+bool8 ScrCmd_updatemoneybox(struct ScriptContext *ctx)
+{
+ u8 x = ScriptReadByte(ctx);
+ u8 y = ScriptReadByte(ctx);
+ u8 ignore = ScriptReadByte(ctx);
+
+ if (!ignore)
+ ChangeAmountInMoneyBox(GetMoney(&gSaveBlock1Ptr->money));
+ return FALSE;
+}
+
+bool8 ScrCmd_showcoinsbox(struct ScriptContext *ctx)
+{
+ u8 x = ScriptReadByte(ctx);
+ u8 y = ScriptReadByte(ctx);
+
+ ShowCoinsWindow(GetCoins(), x, y);
+ return FALSE;
+}
+
+bool8 ScrCmd_hidecoinsbox(struct ScriptContext *ctx)
+{
+ u8 x = ScriptReadByte(ctx);
+ u8 y = ScriptReadByte(ctx);
+
+ HideCoinsWindow();
+ return FALSE;
+}
+
+bool8 ScrCmd_updatecoinsbox(struct ScriptContext *ctx)
+{
+ u8 x = ScriptReadByte(ctx);
+ u8 y = ScriptReadByte(ctx);
+
+ PrintCoinsString(GetCoins());
+ return FALSE;
+}
+
+bool8 ScrCmd_trainerbattle(struct ScriptContext *ctx)
+{
+ ctx->scriptPtr = BattleSetup_ConfigureTrainerBattle(ctx->scriptPtr);
+ return FALSE;
+}
+
+bool8 ScrCmd_battlebegin(struct ScriptContext *ctx)
+{
+ BattleSetup_StartTrainerBattle();
+ return TRUE;
+}
+
+bool8 ScrCmd_ontrainerbattleend(struct ScriptContext *ctx)
+{
+ ctx->scriptPtr = BattleSetup_GetScriptAddrAfterBattle();
+ return FALSE;
+}
+
+bool8 ScrCmd_ontrainerbattleendgoto(struct ScriptContext *ctx)
+{
+ ctx->scriptPtr = BattleSetup_GetTrainerPostBattleScript();
+ return FALSE;
+}
+
+bool8 ScrCmd_checktrainerflag(struct ScriptContext *ctx)
+{
+ u16 index = VarGet(ScriptReadHalfword(ctx));
+
+ ctx->comparisonResult = HasTrainerAlreadyBeenFought(index);
+ return FALSE;
+}
+
+bool8 ScrCmd_settrainerflag(struct ScriptContext *ctx)
+{
+ u16 index = VarGet(ScriptReadHalfword(ctx));
+
+ trainer_flag_set(index);
+ return FALSE;
+}
+
+bool8 ScrCmd_cleartrainerflag(struct ScriptContext *ctx)
+{
+ u16 index = VarGet(ScriptReadHalfword(ctx));
+
+ trainer_flag_clear(index);
+ return FALSE;
+}
+
+bool8 ScrCmd_setwildbattle(struct ScriptContext *ctx)
+{
+ u16 species = ScriptReadHalfword(ctx);
+ u8 level = ScriptReadByte(ctx);
+ u16 item = ScriptReadHalfword(ctx);
+
+ CreateScriptedWildMon(species, level, item);
+ return FALSE;
+}
+
+bool8 ScrCmd_dowildbattle(struct ScriptContext *ctx)
+{
+ BattleSetup_StartScriptedWildBattle();
+ ScriptContext1_Stop();
+ return TRUE;
+}
+
+bool8 ScrCmd_pokemart(struct ScriptContext *ctx)
+{
+ const void *ptr = (void *)ScriptReadWord(ctx);
+
+ CreatePokemartMenu(ptr);
+ ScriptContext1_Stop();
+ return TRUE;
+}
+
+bool8 ScrCmd_pokemartdecor(struct ScriptContext *ctx)
+{
+ const void *ptr = (void *)ScriptReadWord(ctx);
+
+ CreateDecorationShop1Menu(ptr);
+ ScriptContext1_Stop();
+ return TRUE;
+}
+
+bool8 ScrCmd_pokemartbp(struct ScriptContext *ctx)
+{
+ const void *ptr = (void *)ScriptReadWord(ctx);
+
+ CreateDecorationShop2Menu(ptr);
+ ScriptContext1_Stop();
+ return TRUE;
+}
+
+bool8 ScrCmd_playslotmachine(struct ScriptContext *ctx)
+{
+ u8 slotMachineIndex = VarGet(ScriptReadHalfword(ctx));
+
+ PlaySlotMachine(slotMachineIndex, c2_exit_to_overworld_1_continue_scripts_restart_music);
+ ScriptContext1_Stop();
+ return TRUE;
+}
+
+bool8 ScrCmd_plantberrytree(struct ScriptContext *ctx)
+{
+ u8 treeId = ScriptReadByte(ctx);
+ u8 berry = ScriptReadByte(ctx);
+ u8 growthStage = ScriptReadByte(ctx);
+
+ if (berry == 0)
+ PlantBerryTree(treeId, 0, growthStage, FALSE);
+ else
+ PlantBerryTree(treeId, berry, growthStage, FALSE);
+ return FALSE;
+}
+
+bool8 ScrCmd_getpricereduction(struct ScriptContext *ctx)
+{
+ u16 value = VarGet(ScriptReadHalfword(ctx));
+
+ gScriptResult = GetPriceReduction(value);
+ return FALSE;
+}
+
+bool8 ScrCmd_choosecontestpkmn(struct ScriptContext *ctx)
+{
+ sub_81B9404();
+ ScriptContext1_Stop();
+ return TRUE;
+}
+
+
+bool8 ScrCmd_startcontest(struct ScriptContext *ctx)
+{
+ sub_80F840C();
+ ScriptContext1_Stop();
+ return TRUE;
+}
+
+bool8 ScrCmd_showcontestresults(struct ScriptContext *ctx)
+{
+ sub_80F8484();
+ ScriptContext1_Stop();
+ return TRUE;
+}
+
+bool8 ScrCmd_contestlinktransfer(struct ScriptContext *ctx)
+{
+ sub_80F84C4(gScriptContestCategory);
+ ScriptContext1_Stop();
+ return TRUE;
+}
+
+bool8 ScrCmd_dofieldeffect(struct ScriptContext *ctx)
+{
+ u16 effectId = VarGet(ScriptReadHalfword(ctx));
+
+ sFieldEffectScriptId = effectId;
+ FieldEffectStart(sFieldEffectScriptId);
+ return FALSE;
+}
+
+bool8 ScrCmd_setfieldeffect(struct ScriptContext *ctx)
+{
+ u8 argNum = ScriptReadByte(ctx);
+
+ gFieldEffectArguments[argNum] = (s16)VarGet(ScriptReadHalfword(ctx));
+ return FALSE;
+}
+
+static bool8 WaitForFieldEffectFinish(void)
+{
+ if (!FieldEffectActiveListContains(sFieldEffectScriptId))
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 ScrCmd_waitfieldeffect(struct ScriptContext *ctx)
+{
+ sFieldEffectScriptId = VarGet(ScriptReadHalfword(ctx));
+ SetupNativeScript(ctx, WaitForFieldEffectFinish);
+ return TRUE;
+}
+
+bool8 ScrCmd_sethealplace(struct ScriptContext *ctx)
+{
+ u16 healLocationId = VarGet(ScriptReadHalfword(ctx));
+
+ Overworld_SetHealLocationWarp(healLocationId);
+ return FALSE;
+}
+
+bool8 ScrCmd_checkplayergender(struct ScriptContext *ctx)
+{
+ gScriptResult = gSaveBlock2Ptr->playerGender;
+ return FALSE;
+}
+
+bool8 ScrCmd_playpokecry(struct ScriptContext *ctx)
+{
+ u16 species = VarGet(ScriptReadHalfword(ctx));
+ u16 mode = VarGet(ScriptReadHalfword(ctx));
+
+ PlayCry5(species, mode);
+ return FALSE;
+}
+
+bool8 ScrCmd_waitpokecry(struct ScriptContext *ctx)
+{
+ SetupNativeScript(ctx, IsCryFinished);
+ return TRUE;
+}
+
+bool8 ScrCmd_setmaptile(struct ScriptContext *ctx)
+{
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+ u16 tileId = VarGet(ScriptReadHalfword(ctx));
+ u16 v8 = VarGet(ScriptReadHalfword(ctx));
+
+ x += 7;
+ y += 7;
+ if (!v8)
+ MapGridSetMetatileIdAt(x, y, tileId);
+ else
+ MapGridSetMetatileIdAt(x, y, tileId | 0xC00);
+ return FALSE;
+}
+
+bool8 ScrCmd_opendoor(struct ScriptContext *ctx)
+{
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+
+ x += 7;
+ y += 7;
+ PlaySE(GetDoorSoundEffect(x, y));
+ FieldAnimateDoorOpen(x, y);
+ return FALSE;
+}
+
+bool8 ScrCmd_closedoor(struct ScriptContext *ctx)
+{
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+
+ x += 7;
+ y += 7;
+ FieldAnimateDoorClose(x, y);
+ return FALSE;
+}
+
+static bool8 IsDoorAnimationStopped(void)
+{
+ if (!FieldIsDoorAnimationRunning())
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 ScrCmd_waitdooranim(struct ScriptContext *ctx)
+{
+ SetupNativeScript(ctx, IsDoorAnimationStopped);
+ return TRUE;
+}
+
+bool8 ScrCmd_setdooropen(struct ScriptContext *ctx)
+{
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+
+ x += 7;
+ y += 7;
+ FieldSetDoorOpened(x, y);
+ return FALSE;
+}
+
+bool8 ScrCmd_setdoorclosed(struct ScriptContext *ctx)
+{
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+
+ x += 7;
+ y += 7;
+ FieldSetDoorClosed(x, y);
+ return FALSE;
+}
+
+bool8 ScrCmd_addelevmenuitem(struct ScriptContext *ctx)
+{
+ u8 v3 = ScriptReadByte(ctx);
+ u16 v5 = VarGet(ScriptReadHalfword(ctx));
+ u16 v7 = VarGet(ScriptReadHalfword(ctx));
+ u16 v9 = VarGet(ScriptReadHalfword(ctx));
+
+ //ScriptAddElevatorMenuItem(v3, v5, v7, v9);
+ return FALSE;
+}
+
+bool8 ScrCmd_showelevmenu(struct ScriptContext *ctx)
+{
+ /*ScriptShowElevatorMenu();
+ ScriptContext1_Stop();
+ return TRUE;*/
+ return FALSE;
+}
+
+bool8 ScrCmd_checkcoins(struct ScriptContext *ctx)
+{
+ u16 *ptr = GetVarPointer(ScriptReadHalfword(ctx));
+ *ptr = GetCoins();
+ return FALSE;
+}
+
+bool8 ScrCmd_givecoins(struct ScriptContext *ctx)
+{
+ u16 coins = VarGet(ScriptReadHalfword(ctx));
+
+ if (GiveCoins(coins) == TRUE)
+ gScriptResult = 0;
+ else
+ gScriptResult = 1;
+ return FALSE;
+}
+
+bool8 ScrCmd_takecoins(struct ScriptContext *ctx)
+{
+ u16 coins = VarGet(ScriptReadHalfword(ctx));
+
+ if (TakeCoins(coins) == TRUE)
+ gScriptResult = 0;
+ else
+ gScriptResult = 1;
+ return FALSE;
+}
+
+bool8 ScrCmd_mossdeepgym1(struct ScriptContext *ctx)
+{
+ u16 v1 = VarGet(ScriptReadHalfword(ctx));
+
+ sMovingNpcId = sub_81A89A0(v1);
+ return FALSE;
+}
+
+bool8 ScrCmd_mossdeepgym2(struct ScriptContext *ctx)
+{
+ sub_81A8AF8();
+ return FALSE;
+}
+
+bool8 ScrCmd_mossdeepgym3(struct ScriptContext *ctx)
+{
+ u16 v1 = VarGet(ScriptReadHalfword(ctx));
+
+ sub_81A8934(v1);
+ return FALSE;
+}
+
+bool8 ScrCmd_mossdeepgym4(struct ScriptContext *ctx)
+{
+ sub_81A895C();
+ return FALSE;
+}
+
+bool8 ScrCmd_cmdD8(struct ScriptContext *ctx)
+{
+ gSelectedMapObject = sub_80B47BC();
+ return FALSE;
+}
+
+bool8 ScrCmd_cmdD9(struct ScriptContext *ctx)
+{
+ if (is_c1_link_related_active())
+ {
+ return FALSE;
+ }
+ else
+ {
+ if (gMapObjects[gSelectedMapObject].active)
+ {
+ sub_8098630();
+ SetupNativeScript(ctx, sub_8098734);
+ }
+ return TRUE;
+ }
+}
+
+// This command will force the Pokémon to be obedient, you don't get to choose which value to set its obedience to
+bool8 ScrCmd_setpokeobedient(struct ScriptContext *ctx)
+{
+ bool8 obedient = TRUE;
+ u16 partyIndex = VarGet(ScriptReadHalfword(ctx));
+
+ SetMonData(&gPlayerParty[partyIndex], MON_DATA_OBEDIENCE, &obedient);
+ return FALSE;
+}
+
+bool8 ScrCmd_checkpokeobedience(struct ScriptContext *ctx)
+{
+ u16 partyIndex = VarGet(ScriptReadHalfword(ctx));
+
+ gScriptResult = GetMonData(&gPlayerParty[partyIndex], MON_DATA_OBEDIENCE, NULL);
+ return FALSE;
+}
+
+bool8 ScrCmd_cmdCF(struct ScriptContext *ctx)
+{
+ const u8* v1 = sub_8099244();
+
+ if (v1)
+ {
+ ((u8*)gUnknown_020375C0) = ctx->scriptPtr;
+ ScriptJump(ctx, v1);
+ }
+ return FALSE;
+}
+
+bool8 ScrCmd_warpD1(struct ScriptContext *ctx)
+{
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+ u8 warpId = ScriptReadByte(ctx);
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+
+ Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y);
+ sub_808D074(player_get_direction_lower_nybble());
+ sub_80B0244();
+ player_avatar_init_params_reset();
+ return TRUE;
+}
+
+bool8 ScrCmd_setpokemetlocation(struct ScriptContext *ctx)
+{
+ u16 partyIndex = VarGet(ScriptReadHalfword(ctx));
+ u8 location = ScriptReadByte(ctx);
+
+ if (partyIndex < PARTY_SIZE)
+ SetMonData(&gPlayerParty[partyIndex], MON_DATA_MET_LOCATION, &location);
+ return FALSE;
+}
+
+void sub_809BDB4(void)
+{
+ sub_819746C(gUnknown_03000F30, 1);
+ RemoveWindow(gUnknown_03000F30);
+}
+
+bool8 ScrCmd_gettrainerclass(struct ScriptContext *ctx)
+{
+ u8 stringVarIndex = ScriptReadByte(ctx);
+ u16 trainerClassId = VarGet(ScriptReadHalfword(ctx));
+
+ StringCopy(sScriptStringVars[stringVarIndex], GetTrainerClassNameFromId(trainerClassId));
+ return FALSE;
+}
+
+bool8 ScrCmd_gettrainername(struct ScriptContext *ctx)
+{
+ u8 stringVarIndex = ScriptReadByte(ctx);
+ u16 trainerClassId = VarGet(ScriptReadHalfword(ctx));
+
+ StringCopy(sScriptStringVars[stringVarIndex], GetTrainerNameFromId(trainerClassId));
+ return FALSE;
+}
+
+void sub_809BE48(u16 npcId)
+{
+ sMovingNpcId = npcId;
+}
-// .rodata
+bool8 ScrCmd_warpE0(struct ScriptContext *ctx)
+{
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+ u8 warpId = ScriptReadByte(ctx);
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
-// .text
+ Overworld_SetWarpDestination(mapGroup, mapNum, warpId, x, y);
+ sub_80AF79C();
+ player_avatar_init_params_reset();
+ return TRUE;
+}
diff --git a/src/script.c b/src/script.c
index b2809a137..5a1c5daa9 100644
--- a/src/script.c
+++ b/src/script.c
@@ -134,12 +134,12 @@ const u8 *ScriptPop(struct ScriptContext *ctx)
return ctx->stack[ctx->stackDepth];
}
-void ScriptJump(struct ScriptContext *ctx, u8 *ptr)
+void ScriptJump(struct ScriptContext *ctx, const u8 *ptr)
{
ctx->scriptPtr = ptr;
}
-void ScriptCall(struct ScriptContext *ctx, u8 *ptr)
+void ScriptCall(struct ScriptContext *ctx, const u8 *ptr)
{
ScriptPush(ctx, ctx->scriptPtr);
ctx->scriptPtr = ptr;
diff --git a/src/start_menu.c b/src/start_menu.c
index ac393ce2e..be30d0e53 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -170,13 +170,13 @@ extern const u8 gText_BattlePyramidFloor[];
void DisplayPyramidFloorWindow(void)
{
// TODO: fix location
- if (*(u16*)(&gSaveBlock2Ptr->field_CAA[8]) == 7)
+ if (gSaveBlock2Ptr->field_CAA[4] == 7)
sBattlePyramidFloorWindowId = AddWindow(&gPyramidFloorWindowTemplate_1);
else
sBattlePyramidFloorWindowId = AddWindow(&gPyramidFloorWindowTemplate_2);
PutWindowTilemap(sBattlePyramidFloorWindowId);
sub_81973FC(sBattlePyramidFloorWindowId, 0);
- StringCopy(gStringVar1, gUnknown_08510510[*(u16*)(&gSaveBlock2Ptr->field_CAA[8])]);
+ StringCopy(gStringVar1, gUnknown_08510510[gSaveBlock2Ptr->field_CAA[4]]);
StringExpandPlaceholders(gStringVar4, gText_BattlePyramidFloor);
PrintTextOnWindow(sBattlePyramidFloorWindowId, 1, gStringVar4, 0, 1, 0xFF, NULL);
CopyWindowToVram(sBattlePyramidFloorWindowId, 2);
diff --git a/src/string_util.c b/src/string_util.c
index 92e9f19e8..ea50ba5a5 100644
--- a/src/string_util.c
+++ b/src/string_util.c
@@ -625,7 +625,7 @@ u8 *WriteColorChangeControlCode(u8 *dest, u32 colorType, u8 color)
return dest;
}
-bool32 sub_8009228(u8 *str)
+bool32 IsStringJapanese(u8 *str)
{
while (*str != EOS)
{
diff --git a/src/text.c b/src/text.c
index 7cc46cd92..8108a6867 100644
--- a/src/text.c
+++ b/src/text.c
@@ -145,7 +145,7 @@ void DeactivateAllTextPrinters (void)
gTextPrinters[printer].sub_union.sub.active = 0;
}
-u16 PrintTextOnWindow(u8 windowId, u8 fontId, u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextSubPrinter *, u16))
+u16 PrintTextOnWindow(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextSubPrinter *, u16))
{
struct TextSubPrinter subPrinter;
diff --git a/src/tv.c b/src/tv.c
new file mode 100644
index 000000000..7f64b46ac
--- /dev/null
+++ b/src/tv.c
@@ -0,0 +1,7927 @@
+
+// Includes
+#include "global.h"
+#include "rtc.h"
+#include "overworld.h"
+#include "map_constants.h"
+#include "rng.h"
+#include "event_data.h"
+#include "fieldmap.h"
+#include "field_camera.h"
+#include "strings.h"
+#include "string_util.h"
+#include "international_string_util.h"
+#include "pokemon_storage_system.h"
+#include "field_message_box.h"
+#include "easy_chat.h"
+#include "species.h"
+#include "moves.h"
+#include "battle.h"
+#include "battle_tower.h"
+#include "contest.h"
+#include "items.h"
+#include "item.h"
+#include "link.h"
+#include "main.h"
+#include "event_scripts.h"
+#include "shop.h"
+#include "lilycove_lady.h"
+#include "rom6.h"
+#include "pokedex.h"
+#include "field_map_obj.h"
+#include "text.h"
+#include "script_menu.h"
+#include "naming_screen.h"
+#include "malloc.h"
+#include "region_map.h"
+#include "decoration.h"
+#include "secret_base.h"
+#include "tv.h"
+
+// Static type declarations
+
+#define rbernoulli(num, den) TV_BernoulliTrial(0xFFFF * (num) / (den))
+
+// Static RAM declarations
+
+s8 sCurTVShowSlot;
+u16 sTV_SecretBaseVisitMovesTemp[8];
+u8 sTV_DecorationsBuffer[16];
+struct {
+ u8 level;
+ u16 species;
+ u16 move;
+} sTV_SecretBaseVisitMonsTemp[10];
+
+IWRAM_DATA u8 sTVShowMixingNumPlayers;
+IWRAM_DATA u8 sTVShowNewsMixingNumPlayers;
+IWRAM_DATA s8 sTVShowMixingCurSlot;
+
+EWRAM_DATA u16 sPokemonAnglerSpecies = 0;
+EWRAM_DATA u16 sPokemonAnglerAttemptCounters = 0;
+EWRAM_DATA u16 sFindThatGamerCoinsSpent = 0;
+EWRAM_DATA bool8 sFindThatGamerWhichGame = FALSE;
+EWRAM_DATA ALIGNED(4) u8 sRecordMixingPartnersWithoutShowsToShare = 0;
+EWRAM_DATA ALIGNED(4) u8 sTVShowState = 0;
+EWRAM_DATA u8 sTVSecretBaseSecretsRandomValues[3] = {};
+
+// Static ROM declarations
+
+extern const u8 *const sTVBravoTrainerTextGroup[];
+extern const u8 *const sTVBravoTrainerBattleTowerTextGroup[];
+
+void ClearPokemonNews(void);
+u8 GetTVChannelByShowType(u8 kind);
+u8 FindFirstActiveTVShowThatIsNotAMassOutbreak(void);
+u8 CheckForBigMovieOrEmergencyNewsOnTV(void);
+void SetTVMetatilesOnMap(int width, int height, u16 tileId);
+u8 FindAnyTVNewsOnTheAir(void);
+bool8 IsTVShowInSearchOfTrainersAiring(void);
+void TakeTVShowInSearchOfTrainersOffTheAir(void);
+bool8 TV_BernoulliTrial(u16 ratio);
+s8 FindEmptyTVSlotBeyondFirstFiveShowsOfArray(TVShow *shows);
+bool8 HasMixableShowAlreadyBeenSpawnedWithPlayerID(u8 kind, bool8 flag);
+void tv_store_id_3x(TVShow *show);
+void DeleteTVShowInArrayByIdx(TVShow *shows, u8 idx);
+s8 FindEmptyTVSlotWithinFirstFiveShowsOfArray(TVShow *shows);
+void FindActiveBroadcastByShowType_SetScriptResult(u8 kind);
+void InterviewBefore_BravoTrainerPkmnProfile(void);
+void InterviewBefore_NameRater(void);
+u16 TV_GetSomeOtherSpeciesAlreadySeenByPlayer(u16 passedSpecies);
+void sub_80EFA88(void);
+void sub_80EF93C(TVShow *shows);
+s8 sub_80EEE30(PokeNews *pokeNews);
+bool8 sub_80EF0E4(u8 newsKind);
+void ClearPokemonNewsI(u8 i);
+void sub_80F1254(TVShow *shows);
+void sub_80F12A4(TVShow *shows);
+void sub_80F0358(TVShow *player1, TVShow *player2, TVShow *player3, TVShow *player4);
+void sub_80F0C04(void);
+void sub_80F0708(void);
+void sub_80F0B64(void);
+s8 sub_80F06D0(TVShow *tvShows);
+bool8 sub_80F049C(TVShow *dest[], TVShow *src[], u8 idx);
+bool8 sub_80F0580(TVShow *tv1, TVShow *tv2, u8 idx);
+bool8 sub_80F05E8(TVShow *tv1, TVShow *tv2, u8 idx);
+bool8 sub_80F0668(TVShow *tv1, TVShow *tv2, u8 idx);
+void sub_80F0B00(u8 showIdx);
+void sub_80F0B24(u16 species, u8 showIdx);
+void sub_80F0D60(PokeNews *player1, PokeNews *player2, PokeNews *player3, PokeNews *player4);
+void sub_80F0EEC(void);
+void sub_80F0F24(void);
+s8 sub_80F0ECC(PokeNews *pokeNews, u8 idx);
+void sub_80F0E58(PokeNews *dest[], PokeNews *src[]);
+bool8 sub_80F0E84(PokeNews *dest, PokeNews *src, s8 slot);
+void TVShowDone(void);
+void InterviewAfter_FanClubLetter(void);
+void InterviewAfter_RecentHappenings(void);
+void InterviewAfter_PkmnFanClubOpinions(void);
+void InterviewAfter_DummyShow4(void);
+void InterviewAfter_BravoTrainerPokemonProfile(void);
+void InterviewAfter_BravoTrainerBattleTowerProfile(void);
+void InterviewAfter_ContestLiveUpdates(void);
+void UpdateWorldOfMastersAndPutItOnTheAir(void);
+void PutPokemonTodayFailedOnTheAir(void);
+void sub_80ED718(void);
+void sub_80EED88(void);
+void TV_SortPurchasesByQuantity(void);
+void sub_80ED8B4(u16 days);
+void UpdateMassOutbreakTimeLeft(u16 days);
+void sub_80EF120(u16 days);
+void sub_80EDA48(u16 days);
+void sub_80EEB98(u16 days);
+void PutFishingAdviceShowOnTheAir(void);
+void sub_80EDA80(void);
+u8 TV_MonDataIdxToRibbon(u8 monDataIdx);
+void sub_80EEBF4(u8 actionIdx);
+bool8 IsPriceDiscounted(u8 newsKind);
+void InterviewBefore_FanClubLetter(void);
+void InterviewBefore_RecentHappenings(void);
+void InterviewBefore_PkmnFanClubOpinions(void);
+void InterviewBefore_Dummy(void);
+void InterviewBefore_BravoTrainerBTProfile(void);
+void InterviewBefore_ContestLiveUpdates(void);
+void InterviewBefore_3CheersForPokeblocks(void);
+void InterviewBefore_FanClubSpecial(void);
+void ChangeBoxPokemonNickname_CB(void);
+void DoTVShowPokemonFanClubLetter(void);
+void DoTVShowRecentHappenings(void);
+void DoTVShowPokemonFanClubOpinions(void);
+void DoTVShowDummiedOut(void);
+void DoTVShowPokemonNewsMassOutbreak(void);
+void DoTVShowBravoTrainerPokemonProfile(void);
+void DoTVShowBravoTrainerBattleTower(void);
+void DoTVShowPokemonTodaySuccessfulCapture(void);
+void DoTVShowTodaysSmartShopper(void);
+void DoTVShowTheNameRaterShow(void);
+void DoTVShowPokemonContestLiveUpdates(void);
+void DoTVShowPokemonBattleUpdate(void);
+void DoTVShow3CheersForPokeblocks(void);
+void DoTVShowPokemonTodayFailedCapture(void);
+void DoTVShowPokemonAngler(void);
+void DoTVShowTheWorldOfMasters(void);
+void DoTVShowTodaysRivalTrainer(void);
+void DoTVShowDewfordTrendWatcherNetwork(void);
+void DoTVShowHoennTreasureInvestigators(void);
+void DoTVShowFindThatGamer(void);
+void DoTVShowBreakingNewsTV(void);
+void DoTVShowSecretBaseVisit(void);
+void DoTVShowPokemonLotteryWinnerFlashReport(void);
+void DoTVShowThePokemonBattleSeminar(void);
+void DoTVShowTrainerFanClubSpecial(void);
+void DoTVShowTrainerFanClub(void);
+void DoTVShowSpotTheCuties(void);
+void DoTVShowPokemonNewsBattleFrontier(void);
+void DoTVShowWhatsNo1InHoennToday(void);
+void DoTVShowSecretBaseSecrets(void);
+void DoTVShowSafariFanClub(void);
+void DoTVShowPokemonContestLiveUpdates2(void);
+
+// .rodata
+
+const struct {
+ u16 species;
+ u16 moves[4];
+ u8 level;
+ u8 location;
+} sPokeOutbreakSpeciesList[] = {
+ {
+ SPECIES_SEEDOT,
+ {MOVE_BIDE, MOVE_HARDEN, MOVE_LEECH_SEED},
+ 3, 0x11 // Route 102
+ },
+ {
+ SPECIES_NUZLEAF,
+ {MOVE_HARDEN, MOVE_GROWTH, MOVE_NATURE_POWER, MOVE_LEECH_SEED},
+ 15, 0x1D // Route 114
+ },
+ {
+ SPECIES_SEEDOT,
+ {MOVE_HARDEN, MOVE_GROWTH, MOVE_NATURE_POWER, MOVE_LEECH_SEED},
+ 13, 0x20 // Route 117
+ },
+ {
+ SPECIES_SEEDOT,
+ {MOVE_GIGA_DRAIN, MOVE_FRUSTRATION, MOVE_SOLAR_BEAM, MOVE_LEECH_SEED},
+ 25, 0x23 // Route 110
+ },
+ {
+ SPECIES_SKITTY,
+ {MOVE_GROWL, MOVE_TACKLE, MOVE_TAIL_WHIP, MOVE_ATTRACT},
+ 8, 0x1F // Route 116
+ }
+};
+
+// TODO: Figure out what these are, and define constants in include/flags.h
+const u16 sGoldSymbolFlags[] = {
+ SYS_TOWER_GOLD,
+ SYS_DOME_GOLD,
+ SYS_PALACE_GOLD,
+ SYS_ARENA_GOLD,
+ SYS_FACTORY_GOLD,
+ SYS_PIKE_GOLD,
+ SYS_PYRAMID_GOLD
+};
+
+const u16 sSilverSymbolFlags[] = {
+ SYS_TOWER_SILVER,
+ SYS_DOME_SILVER,
+ SYS_PALACE_SILVER,
+ SYS_ARENA_SILVER,
+ SYS_FACTORY_SILVER,
+ SYS_PIKE_SILVER,
+ SYS_PYRAMID_SILVER
+};
+
+// TODO: Figure out what these are, and define constants in include/vars.h
+const u16 sNumberOneVarsAndThresholds[][2] = {
+ {VAR_DAILY_SLOTS, 100},
+ {VAR_DAILY_ROULETTE, 50},
+ {VAR_DAILY_WILDS, 100},
+ {VAR_DAILY_BLENDER, 20},
+ {VAR_DAILY_PLANTED_BERRIES, 20},
+ {VAR_DAILY_PICKED_BERRIES, 20},
+ {VAR_DAILY_BP, 30}
+};
+
+const u8 *const sPokeNewsTextGroup_Upcoming[] = {
+ NULL,
+ gPokeNewsTextSlateport_Upcoming,
+ gPokeNewsTextGameCorner_Upcoming,
+ gPokeNewsTextLilycove_Upcoming,
+ gPokeNewsTextBlendMaster_Upcoming
+};
+
+const u8 *const sPokeNewsTextGroup_Ongoing[] = {
+ NULL,
+ gPokeNewsTextSlateport_Ongoing,
+ gPokeNewsTextGameCorner_Ongoing,
+ gPokeNewsTextLilycove_Ongoing,
+ gPokeNewsTextBlendMaster_Ongoing
+};
+
+const u8 *const sPokeNewsTextGroup_Ending[] = {
+ NULL,
+ gPokeNewsTextSlateport_Ending,
+ gPokeNewsTextGameCorner_Ending,
+ gPokeNewsTextLilycove_Ending,
+ gPokeNewsTextBlendMaster_Ending
+};
+
+u8 *const gTVStringVarPtrs[] = {
+ gStringVar1,
+ gStringVar2,
+ gStringVar3
+};
+
+const u8 *const sTVFanClubTextGroup[] = {
+ gTVFanClubText00,
+ gTVFanClubText01,
+ gTVFanClubText02,
+ gTVFanClubText03,
+ gTVFanClubText04,
+ gTVFanClubText05,
+ gTVFanClubText06,
+ gTVFanClubText07
+};
+
+const u8 *const sTVRecentHappeninssTextGroup[] = {
+ gTVRecentHappeningsText00,
+ gTVRecentHappeningsText01,
+ gTVRecentHappeningsText02,
+ gTVRecentHappeningsText03,
+ gTVRecentHappeningsText04,
+ gTVRecentHappeningsText05
+};
+
+const u8 *const sTVFanClubOpinionsTextGroup[] = {
+ gTVFanClubOpinionsText00,
+ gTVFanClubOpinionsText01,
+ gTVFanClubOpinionsText02,
+ gTVFanClubOpinionsText03,
+ gTVFanClubOpinionsText04
+};
+
+const u8 *const sTVMassOutbreakTextGroup[] = {
+ gTVMassOutbreakText00
+};
+
+const u8 *const sTVPokemonTodaySuccessfulTextGroup[] = {
+ gTVPokemonTodaySuccessfulText00,
+ gTVPokemonTodaySuccessfulText01,
+ gTVPokemonTodaySuccessfulText02,
+ gTVPokemonTodaySuccessfulText03,
+ gTVPokemonTodaySuccessfulText04,
+ gTVPokemonTodaySuccessfulText05,
+ gTVPokemonTodaySuccessfulText06,
+ gTVPokemonTodaySuccessfulText07,
+ gTVPokemonTodaySuccessfulText08,
+ gTVPokemonTodaySuccessfulText09,
+ gTVPokemonTodaySuccessfulText10,
+ gTVPokemonTodaySuccessfulText11
+};
+
+const u8 *const sTVTodaysSmartShopperTextGroup[] = {
+ gTVTodaysSmartShopperText00,
+ gTVTodaysSmartShopperText01,
+ gTVTodaysSmartShopperText02,
+ gTVTodaysSmartShopperText03,
+ gTVTodaysSmartShopperText04,
+ gTVTodaysSmartShopperText05,
+ gTVTodaysSmartShopperText06,
+ gTVTodaysSmartShopperText07,
+ gTVTodaysSmartShopperText08,
+ gTVTodaysSmartShopperText09,
+ gTVTodaysSmartShopperText10,
+ gTVTodaysSmartShopperText11,
+ gTVTodaysSmartShopperText12
+};
+
+const u8 *const sTVBravoTrainerTextGroup[] = {
+ gTVBravoTrainerText00,
+ gTVBravoTrainerText01,
+ gTVBravoTrainerText02,
+ gTVBravoTrainerText03,
+ gTVBravoTrainerText04,
+ gTVBravoTrainerText05,
+ gTVBravoTrainerText06,
+ gTVBravoTrainerText07,
+ gTVBravoTrainerText08
+};
+
+const u8 *const sTV3CheersForPokeblocksTextGroup[] = {
+ gTV3CheersForPokeblocksText00,
+ gTV3CheersForPokeblocksText01,
+ gTV3CheersForPokeblocksText02,
+ gTV3CheersForPokeblocksText03,
+ gTV3CheersForPokeblocksText04,
+ gTV3CheersForPokeblocksText05
+};
+
+const u8 *const sTVBravoTrainerBattleTowerTextGroup[] = {
+ gTVBravoTrainerBattleTowerText00,
+ gTVBravoTrainerBattleTowerText01,
+ gTVBravoTrainerBattleTowerText02,
+ gTVBravoTrainerBattleTowerText03,
+ gTVBravoTrainerBattleTowerText04,
+ gTVBravoTrainerBattleTowerText05,
+ gTVBravoTrainerBattleTowerText06,
+ gTVBravoTrainerBattleTowerText07,
+ gTVBravoTrainerBattleTowerText08,
+ gTVBravoTrainerBattleTowerText09,
+ gTVBravoTrainerBattleTowerText10,
+ gTVBravoTrainerBattleTowerText11,
+ gTVBravoTrainerBattleTowerText12,
+ gTVBravoTrainerBattleTowerText13,
+ gTVBravoTrainerBattleTowerText14
+};
+
+const u8 *const sTVContestLiveUpdatesTextGroup[] = {
+ gTVContestLiveUpdatesText00,
+ gTVContestLiveUpdatesText01,
+ gTVContestLiveUpdatesText02,
+ gTVContestLiveUpdatesText03,
+ gTVContestLiveUpdatesText04,
+ gTVContestLiveUpdatesText05,
+ gTVContestLiveUpdatesText06,
+ gTVContestLiveUpdatesText07,
+ gTVContestLiveUpdatesText08,
+ gTVContestLiveUpdatesText09,
+ gTVContestLiveUpdatesText10,
+ gTVContestLiveUpdatesText11,
+ gTVContestLiveUpdatesText12,
+ gTVContestLiveUpdatesText13,
+ gTVContestLiveUpdatesText14,
+ gTVContestLiveUpdatesText15,
+ gTVContestLiveUpdatesText16,
+ gTVContestLiveUpdatesText17,
+ gTVContestLiveUpdatesText18,
+ gTVContestLiveUpdatesText19,
+ gTVContestLiveUpdatesText20,
+ gTVContestLiveUpdatesText21,
+ gTVContestLiveUpdatesText22,
+ gTVContestLiveUpdatesText23,
+ gTVContestLiveUpdatesText24,
+ gTVContestLiveUpdatesText25,
+ gTVContestLiveUpdatesText26,
+ gTVContestLiveUpdatesText27,
+ gTVContestLiveUpdatesText28,
+ gTVContestLiveUpdatesText29,
+ gTVContestLiveUpdatesText30,
+ gTVContestLiveUpdatesText31,
+ gTVContestLiveUpdatesText32
+};
+
+const u8 *const sTVPokemonBattleUpdateTextGroup[] = {
+ gTVPokemonBattleUpdateText00,
+ gTVPokemonBattleUpdateText01,
+ gTVPokemonBattleUpdateText02,
+ gTVPokemonBattleUpdateText03,
+ gTVPokemonBattleUpdateText04,
+ gTVPokemonBattleUpdateText05,
+ gTVPokemonBattleUpdateText06,
+ gTVPokemonBattleUpdateText07
+};
+
+const u8 *const sTVTrainerFanClubSpecialTextGroup[] = {
+ gTVTrainerFanClubSpecialText00,
+ gTVTrainerFanClubSpecialText01,
+ gTVTrainerFanClubSpecialText02,
+ gTVTrainerFanClubSpecialText03,
+ gTVTrainerFanClubSpecialText04,
+ gTVTrainerFanClubSpecialText05
+};
+
+const u8 *const sTVNameRaterTextGroup[] = {
+ gTVNameRaterText00,
+ gTVNameRaterText01,
+ gTVNameRaterText02,
+ gTVNameRaterText03,
+ gTVNameRaterText04,
+ gTVNameRaterText05,
+ gTVNameRaterText06,
+ gTVNameRaterText07,
+ gTVNameRaterText08,
+ gTVNameRaterText09,
+ gTVNameRaterText10,
+ gTVNameRaterText11,
+ gTVNameRaterText12,
+ gTVNameRaterText13,
+ gTVNameRaterText14,
+ gTVNameRaterText15,
+ gTVNameRaterText16,
+ gTVNameRaterText17,
+ gTVNameRaterText18
+};
+
+const u8 *const sTVPokemonContestLiveUpdates2TextGroup[] = {
+ gTVPokemonContestLiveUpdates2Text00,
+ gTVPokemonContestLiveUpdates2Text01,
+ gTVPokemonContestLiveUpdates2Text02,
+ gTVPokemonContestLiveUpdates2Text03
+};
+
+const u8 *const sTVPokemonTodayFailedTextGroup[] = {
+ gTVPokemonTodayFailedText00,
+ gTVPokemonTodayFailedText01,
+ gTVPokemonTodayFailedText02,
+ gTVPokemonTodayFailedText03,
+ gTVPokemonTodayFailedText04,
+ gTVPokemonTodayFailedText05,
+ gTVPokemonTodayFailedText06
+};
+
+const u8 *const sTVPokemonAnslerTextGroup[] = {
+ gTVPokemonAnglerText00,
+ gTVPokemonAnglerText01
+};
+
+const u8 *const sTVWorldOfMastersTextGroup[] = {
+ gTVWorldOfMastersText00,
+ gTVWorldOfMastersText01,
+ gTVWorldOfMastersText02
+};
+
+const u8 *const sTVTodaysRivalTrainerTextGroup[] = {
+ gTVTodaysRivalTrainerText00,
+ gTVTodaysRivalTrainerText01,
+ gTVTodaysRivalTrainerText02,
+ gTVTodaysRivalTrainerText03,
+ gTVTodaysRivalTrainerText04,
+ gTVTodaysRivalTrainerText05,
+ gTVTodaysRivalTrainerText06,
+ gTVTodaysRivalTrainerText07,
+ gTVTodaysRivalTrainerText08,
+ gTVTodaysRivalTrainerText09,
+ gTVTodaysRivalTrainerText10
+};
+
+const u8 *const sTVDewfordTrendWatcherNetworkTextGroup[] = {
+ gTVDewfordTrendWatcherNetworkText00,
+ gTVDewfordTrendWatcherNetworkText01,
+ gTVDewfordTrendWatcherNetworkText02,
+ gTVDewfordTrendWatcherNetworkText03,
+ gTVDewfordTrendWatcherNetworkText04,
+ gTVDewfordTrendWatcherNetworkText05,
+ gTVDewfordTrendWatcherNetworkText06
+};
+
+const u8 *const sTVHoennTreasureInvestisatorsTextGroup[] = {
+ gTVHoennTreasureInvestigatorsText00,
+ gTVHoennTreasureInvestigatorsText01,
+ gTVHoennTreasureInvestigatorsText02
+};
+
+const u8 *const sTVFindThatGamerTextGroup[] = {
+ gTVFindThatGamerText00,
+ gTVFindThatGamerText01,
+ gTVFindThatGamerText02,
+ gTVFindThatGamerText03
+};
+
+const u8 *const sTVBreakinsNewsTextGroup[] = {
+ gTVBreakingNewsText00,
+ gTVBreakingNewsText01,
+ gTVBreakingNewsText02,
+ gTVBreakingNewsText03,
+ gTVBreakingNewsText04,
+ gTVBreakingNewsText05,
+ gTVBreakingNewsText06,
+ gTVBreakingNewsText07,
+ gTVBreakingNewsText08,
+ gTVBreakingNewsText09,
+ gTVBreakingNewsText10,
+ gTVBreakingNewsText11,
+ gTVBreakingNewsText12
+};
+
+const u8 *const sTVSecretBaseVisitTextGroup[] = {
+ gTVSecretBaseVisitText00,
+ gTVSecretBaseVisitText01,
+ gTVSecretBaseVisitText02,
+ gTVSecretBaseVisitText03,
+ gTVSecretBaseVisitText04,
+ gTVSecretBaseVisitText05,
+ gTVSecretBaseVisitText06,
+ gTVSecretBaseVisitText07,
+ gTVSecretBaseVisitText08,
+ gTVSecretBaseVisitText09,
+ gTVSecretBaseVisitText10,
+ gTVSecretBaseVisitText11,
+ gTVSecretBaseVisitText12,
+ gTVSecretBaseVisitText13
+};
+
+const u8 *const sTVPokemonLotteryWinnerFlashReportTextGroup[] = {
+ gTVPokemonLotteryWinnerFlashReportText00
+};
+
+const u8 *const sTVThePokemonBattleSeminarTextGroup[] = {
+ gTVThePokemonBattleSeminarText00,
+ gTVThePokemonBattleSeminarText01,
+ gTVThePokemonBattleSeminarText02,
+ gTVThePokemonBattleSeminarText03,
+ gTVThePokemonBattleSeminarText04,
+ gTVThePokemonBattleSeminarText05,
+ gTVThePokemonBattleSeminarText06
+};
+
+const u8 *const sTVTrainerFanClubTextGroup[] = {
+ gTVTrainerFanClubText00,
+ gTVTrainerFanClubText01,
+ gTVTrainerFanClubText02,
+ gTVTrainerFanClubText03,
+ gTVTrainerFanClubText04,
+ gTVTrainerFanClubText05,
+ gTVTrainerFanClubText06,
+ gTVTrainerFanClubText07,
+ gTVTrainerFanClubText08,
+ gTVTrainerFanClubText09,
+ gTVTrainerFanClubText10,
+ gTVTrainerFanClubText11
+};
+
+const u8 *const sTVCutiesTextGroup[] = {
+ gTVCutiesText00,
+ gTVCutiesText01,
+ gTVCutiesText02,
+ gTVCutiesText03,
+ gTVCutiesText04,
+ gTVCutiesText05,
+ gTVCutiesText06,
+ gTVCutiesText07,
+ gTVCutiesText08,
+ gTVCutiesText09,
+ gTVCutiesText10,
+ gTVCutiesText11,
+ gTVCutiesText12,
+ gTVCutiesText13,
+ gTVCutiesText14,
+ gTVCutiesText15
+};
+
+const u8 *const sTVPokemonNewsBattleFrontierTextGroup[] = {
+ gTVPokemonNewsBattleFrontierText00,
+ gTVPokemonNewsBattleFrontierText01,
+ gTVPokemonNewsBattleFrontierText02,
+ gTVPokemonNewsBattleFrontierText03,
+ gTVPokemonNewsBattleFrontierText04,
+ gTVPokemonNewsBattleFrontierText05,
+ gTVPokemonNewsBattleFrontierText06,
+ gTVPokemonNewsBattleFrontierText07,
+ gTVPokemonNewsBattleFrontierText08,
+ gTVPokemonNewsBattleFrontierText09,
+ gTVPokemonNewsBattleFrontierText10,
+ gTVPokemonNewsBattleFrontierText11,
+ gTVPokemonNewsBattleFrontierText12,
+ gTVPokemonNewsBattleFrontierText13,
+ gTVPokemonNewsBattleFrontierText14,
+ gTVPokemonNewsBattleFrontierText15,
+ gTVPokemonNewsBattleFrontierText16,
+ gTVPokemonNewsBattleFrontierText17,
+ gTVPokemonNewsBattleFrontierText18
+};
+
+const u8 *const sTVWhatsNo1InHoennTodayTextGroup[] = {
+ gTVWhatsNo1InHoennTodayText00,
+ gTVWhatsNo1InHoennTodayText01,
+ gTVWhatsNo1InHoennTodayText02,
+ gTVWhatsNo1InHoennTodayText03,
+ gTVWhatsNo1InHoennTodayText04,
+ gTVWhatsNo1InHoennTodayText05,
+ gTVWhatsNo1InHoennTodayText06,
+ gTVWhatsNo1InHoennTodayText07,
+ gTVWhatsNo1InHoennTodayText08
+};
+
+const u8 *const sTVSecretBaseSecretsTextGroup[] = {
+ gTVSecretBaseSecretsText00,
+ gTVSecretBaseSecretsText01,
+ gTVSecretBaseSecretsText02,
+ gTVSecretBaseSecretsText03,
+ gTVSecretBaseSecretsText04,
+ gTVSecretBaseSecretsText05,
+ gTVSecretBaseSecretsText06,
+ gTVSecretBaseSecretsText07,
+ gTVSecretBaseSecretsText08,
+ gTVSecretBaseSecretsText09,
+ gTVSecretBaseSecretsText10,
+ gTVSecretBaseSecretsText11,
+ gTVSecretBaseSecretsText12,
+ gTVSecretBaseSecretsText13,
+ gTVSecretBaseSecretsText14,
+ gTVSecretBaseSecretsText15,
+ gTVSecretBaseSecretsText16,
+ gTVSecretBaseSecretsText17,
+ gTVSecretBaseSecretsText18,
+ gTVSecretBaseSecretsText19,
+ gTVSecretBaseSecretsText20,
+ gTVSecretBaseSecretsText21,
+ gTVSecretBaseSecretsText22,
+ gTVSecretBaseSecretsText23,
+ gTVSecretBaseSecretsText24,
+ gTVSecretBaseSecretsText25,
+ gTVSecretBaseSecretsText26,
+ gTVSecretBaseSecretsText27,
+ gTVSecretBaseSecretsText28,
+ gTVSecretBaseSecretsText29,
+ gTVSecretBaseSecretsText30,
+ gTVSecretBaseSecretsText31,
+ gTVSecretBaseSecretsText32,
+ gTVSecretBaseSecretsText33,
+ gTVSecretBaseSecretsText34,
+ gTVSecretBaseSecretsText35,
+ gTVSecretBaseSecretsText36,
+ gTVSecretBaseSecretsText37,
+ gTVSecretBaseSecretsText38,
+ gTVSecretBaseSecretsText39,
+ gTVSecretBaseSecretsText40,
+ gTVSecretBaseSecretsText41,
+ gTVSecretBaseSecretsText42
+};
+
+const u8 *const sTVSafariFanClubTextGroup[] = {
+ gTVSafariFanClubText00,
+ gTVSafariFanClubText01,
+ gTVSafariFanClubText02,
+ gTVSafariFanClubText03,
+ gTVSafariFanClubText04,
+ gTVSafariFanClubText05,
+ gTVSafariFanClubText06,
+ gTVSafariFanClubText07,
+ gTVSafariFanClubText08,
+ gTVSafariFanClubText09,
+ gTVSafariFanClubText10
+};
+
+const u8 *const sTVInSearchOfTrainersTextGroup[] = {
+ gTVInSearchOfTrainersText00,
+ gTVInSearchOfTrainersText01,
+ gTVInSearchOfTrainersText02,
+ gTVInSearchOfTrainersText03,
+ gTVInSearchOfTrainersText04,
+ gTVInSearchOfTrainersText05,
+ gTVInSearchOfTrainersText06,
+ gTVInSearchOfTrainersText07,
+ gTVInSearchOfTrainersText08
+};
+
+const u8 sTVSecretBaseSecretsStateLookup[] = {
+ 0x0a,
+ 0x0b,
+ 0x0c,
+ 0x0d,
+ 0x0e,
+ 0x0f,
+ 0x10,
+ 0x11,
+ 0x12,
+ 0x13,
+ 0x14,
+ 0x17,
+ 0x18,
+ 0x19,
+ 0x1a,
+ 0x1b,
+ 0x1c,
+ 0x1d,
+ 0x1e,
+ 0x1f,
+ 0x20,
+ 0x21,
+ 0x22,
+ 0x23,
+ 0x24,
+ 0x25,
+ 0x26,
+ 0x27,
+ 0x28,
+ 0x29,
+ 0x2a,
+ 0x2b
+};
+
+// .text
+
+void ClearTVShowData(void)
+{
+ u8 i;
+ u8 j;
+
+ for (i = 0; i < ARRAY_COUNT(gSaveBlock1Ptr->tvShows); i ++)
+ {
+ gSaveBlock1Ptr->tvShows[i].common.kind = 0;
+ gSaveBlock1Ptr->tvShows[i].common.active = 0;
+ for (j = 0; j < sizeof(TVShow) - 2; j ++)
+ {
+ gSaveBlock1Ptr->tvShows[i].common.pad02[j] = 0;
+ }
+ }
+ ClearPokemonNews();
+}
+
+u8 special_0x44(void)
+{
+ u8 i;
+ u8 j;
+ u8 selIdx;
+ TVShow *show;
+
+ for (i = 5; i < ARRAY_COUNT(gSaveBlock1Ptr->tvShows) - 1; i ++)
+ {
+ if (gSaveBlock1Ptr->tvShows[i].common.kind == 0)
+ {
+ break;
+ }
+ }
+ j = Random() % i;
+ selIdx = j;
+ do
+ {
+ if (GetTVChannelByShowType(gSaveBlock1Ptr->tvShows[j].common.kind) != 4)
+ {
+ if (gSaveBlock1Ptr->tvShows[j].common.active == TRUE)
+ {
+ return j;
+ }
+ }
+ else
+ {
+ show = &gSaveBlock1Ptr->tvShows[j];
+ if (show->massOutbreak.daysLeft == 0 && show->massOutbreak.active == TRUE)
+ {
+ return j;
+ }
+ }
+ if (j == 0)
+ {
+ j = ARRAY_COUNT(gSaveBlock1Ptr->tvShows) - 2;
+ }
+ else
+ {
+ j --;
+ }
+ } while (j != selIdx);
+ return 0xFF;
+}
+
+u8 FindAnyTVShowOnTheAir(void)
+{
+ u8 response;
+
+ response = special_0x44();
+ if (response == 0xFF)
+ {
+ return 0xFF;
+ }
+ if (gSaveBlock1Ptr->outbreakPokemonSpecies != SPECIES_NONE && gSaveBlock1Ptr->tvShows[response].common.kind == TVSHOW_MASS_OUTBREAK)
+ {
+ return FindFirstActiveTVShowThatIsNotAMassOutbreak();
+ }
+ return response;
+}
+
+void UpdateTVScreensOnMap(int width, int height)
+{
+ FlagSet(SYS_TV_WATCH);
+ switch (CheckForBigMovieOrEmergencyNewsOnTV())
+ {
+ case 1:
+ SetTVMetatilesOnMap(width, height, 0x3);
+ break;
+ case 2:
+ break;
+ default:
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_LILYCOVE_CITY_COVE_LILY_MOTEL_1F && gSaveBlock1Ptr->location.mapNum == MAP_ID_LILYCOVE_CITY_COVE_LILY_MOTEL_1F)
+ {
+ SetTVMetatilesOnMap(width, height, 0x3);
+ }
+ else if (FlagGet(SYS_TV_START) && (FindAnyTVShowOnTheAir() != 0xff || FindAnyTVNewsOnTheAir() != 0xff || IsTVShowInSearchOfTrainersAiring()))
+ {
+ FlagClear(SYS_TV_WATCH);
+ SetTVMetatilesOnMap(width, height, 0x3);
+ }
+ break;
+ }
+}
+
+void SetTVMetatilesOnMap(int width, int height, u16 tileId)
+{
+ int x;
+ int y;
+
+ for (y = 0; y < height; y ++)
+ {
+ for (x = 0; x < width; x ++)
+ {
+ if (MapGridGetMetatileBehaviorAt(x, y) == 0x86) // is this tile a TV?
+ {
+ MapGridSetMetatileIdAt(x, y, tileId | 0xc00);
+ }
+ }
+ }
+}
+
+void TurnOffTVScreen(void)
+{
+ SetTVMetatilesOnMap(gUnknown_03005DC0.width, gUnknown_03005DC0.height, 0x0002);
+ DrawWholeMapView();
+}
+
+void TurnOnTVScreen(void)
+{
+ SetTVMetatilesOnMap(gUnknown_03005DC0.width, gUnknown_03005DC0.height, 0x0003);
+ DrawWholeMapView();
+}
+
+u8 special_0x45(void)
+{
+ return gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004].common.kind;
+}
+
+u8 FindFirstActiveTVShowThatIsNotAMassOutbreak(void)
+{
+ u8 i;
+
+ for (i = 0; i < ARRAY_COUNT(gSaveBlock1Ptr->tvShows) - 1; i ++)
+ {
+ if (gSaveBlock1Ptr->tvShows[i].common.kind != 0 && gSaveBlock1Ptr->tvShows[i].common.kind != TVSHOW_MASS_OUTBREAK && gSaveBlock1Ptr->tvShows[i].common.active == TRUE)
+ {
+ return i;
+ }
+ }
+ return 0xFF;
+}
+
+u8 special_0x4a(void)
+{
+ TVShow *tvShow;
+
+ tvShow = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ if (tvShow->common.kind == TVSHOW_MASS_OUTBREAK && gSaveBlock1Ptr->outbreakPokemonSpecies != SPECIES_NONE)
+ {
+ return FindFirstActiveTVShowThatIsNotAMassOutbreak();
+ }
+ return gSpecialVar_0x8004;
+}
+
+// IN SEARCH OF TRAINERS
+
+void ResetGabbyAndTy(void)
+{
+ gSaveBlock1Ptr->gabbyAndTyData.mon1 = SPECIES_NONE;
+ gSaveBlock1Ptr->gabbyAndTyData.mon2 = SPECIES_NONE;
+ gSaveBlock1Ptr->gabbyAndTyData.lastMove = MOVE_NONE;
+ gSaveBlock1Ptr->gabbyAndTyData.quote[0] = -1;
+ gSaveBlock1Ptr->gabbyAndTyData.battleTookMoreThanOneTurn = FALSE;
+ gSaveBlock1Ptr->gabbyAndTyData.playerLostAMon = FALSE;
+ gSaveBlock1Ptr->gabbyAndTyData.playerUsedAnItem = FALSE;
+ gSaveBlock1Ptr->gabbyAndTyData.playerThrewABall = FALSE;
+ gSaveBlock1Ptr->gabbyAndTyData.onAir = FALSE;
+ gSaveBlock1Ptr->gabbyAndTyData.valA_5 = 0;
+ gSaveBlock1Ptr->gabbyAndTyData.battleTookMoreThanOneTurn2 = FALSE;
+ gSaveBlock1Ptr->gabbyAndTyData.playerLostAMon2 = FALSE;
+ gSaveBlock1Ptr->gabbyAndTyData.playerUsedAnItem2 = FALSE;
+ gSaveBlock1Ptr->gabbyAndTyData.playerThrewABall2 = FALSE;
+ gSaveBlock1Ptr->gabbyAndTyData.valB_4 = 0;
+ gSaveBlock1Ptr->gabbyAndTyData.mapnum = 0;
+ gSaveBlock1Ptr->gabbyAndTyData.battleNum = 0;
+}
+
+void GabbyAndTyBeforeInterview(void)
+{
+ u8 i;
+
+ gSaveBlock1Ptr->gabbyAndTyData.mon1 = gBattleResults.playerMon1Species;
+ gSaveBlock1Ptr->gabbyAndTyData.mon2 = gBattleResults.playerMon2Species;
+ gSaveBlock1Ptr->gabbyAndTyData.lastMove = gBattleResults.lastUsedMovePlayer;
+ if (gSaveBlock1Ptr->gabbyAndTyData.battleNum != 0xFF)
+ {
+ gSaveBlock1Ptr->gabbyAndTyData.battleNum ++;
+ }
+ gSaveBlock1Ptr->gabbyAndTyData.battleTookMoreThanOneTurn = gBattleResults.unk5_0;
+ if (gBattleResults.playerFaintCounter != 0)
+ {
+ gSaveBlock1Ptr->gabbyAndTyData.playerLostAMon = TRUE;
+ }
+ else
+ {
+ gSaveBlock1Ptr->gabbyAndTyData.playerLostAMon = FALSE;
+ }
+ if (gBattleResults.unk3 != 0)
+ {
+ gSaveBlock1Ptr->gabbyAndTyData.playerUsedAnItem = TRUE;
+ }
+ else
+ {
+ gSaveBlock1Ptr->gabbyAndTyData.playerUsedAnItem = FALSE;
+ }
+ if (!gBattleResults.usedMasterBall)
+ {
+ for (i = 0; i < 11; i ++)
+ {
+ if (gBattleResults.catchAttempts[i])
+ {
+ gSaveBlock1Ptr->gabbyAndTyData.playerThrewABall = TRUE;
+ break;
+ }
+ }
+ }
+ else
+ {
+ gSaveBlock1Ptr->gabbyAndTyData.playerThrewABall = TRUE;
+ }
+ TakeTVShowInSearchOfTrainersOffTheAir();
+ if (gSaveBlock1Ptr->gabbyAndTyData.lastMove == MOVE_NONE)
+ {
+ FlagSet(0x0001);
+ }
+}
+
+void GabbyAndTyAfterInterview(void)
+{
+ gSaveBlock1Ptr->gabbyAndTyData.battleTookMoreThanOneTurn2 = gSaveBlock1Ptr->gabbyAndTyData.battleTookMoreThanOneTurn;
+ gSaveBlock1Ptr->gabbyAndTyData.playerLostAMon2 = gSaveBlock1Ptr->gabbyAndTyData.playerLostAMon;
+ gSaveBlock1Ptr->gabbyAndTyData.playerUsedAnItem2 = gSaveBlock1Ptr->gabbyAndTyData.playerUsedAnItem;
+ gSaveBlock1Ptr->gabbyAndTyData.playerThrewABall2 = gSaveBlock1Ptr->gabbyAndTyData.playerThrewABall;
+ gSaveBlock1Ptr->gabbyAndTyData.onAir = TRUE;
+ gSaveBlock1Ptr->gabbyAndTyData.mapnum = gMapHeader.regionMapSectionId;
+ IncrementGameStat(GAME_STAT_GOT_INTERVIEWED);
+}
+
+void TakeTVShowInSearchOfTrainersOffTheAir(void)
+{
+ gSaveBlock1Ptr->gabbyAndTyData.onAir = FALSE;
+}
+
+u8 GabbyAndTyGetBattleNum(void)
+{
+ if (gSaveBlock1Ptr->gabbyAndTyData.battleNum > 5)
+ {
+ return (gSaveBlock1Ptr->gabbyAndTyData.battleNum % 3) + 6;
+ }
+ return gSaveBlock1Ptr->gabbyAndTyData.battleNum;
+}
+
+bool8 IsTVShowInSearchOfTrainersAiring(void)
+{
+ return gSaveBlock1Ptr->gabbyAndTyData.onAir;
+}
+
+bool8 GabbyAndTyGetLastQuote(void)
+{
+ if (gSaveBlock1Ptr->gabbyAndTyData.quote[0] == 0xFFFF)
+ {
+ return FALSE;
+ }
+ CopyEasyChatWord(gStringVar1, gSaveBlock1Ptr->gabbyAndTyData.quote[0]);
+ gSaveBlock1Ptr->gabbyAndTyData.quote[0] = -1;
+ return TRUE;
+}
+
+u8 GabbyAndTyGetLastBattleTrivia(void)
+{
+ if (!gSaveBlock1Ptr->gabbyAndTyData.battleTookMoreThanOneTurn2)
+ {
+ return 1;
+ }
+ if (gSaveBlock1Ptr->gabbyAndTyData.playerThrewABall2)
+ {
+ return 2;
+ }
+ if (gSaveBlock1Ptr->gabbyAndTyData.playerUsedAnItem2)
+ {
+ return 3;
+ }
+ if (gSaveBlock1Ptr->gabbyAndTyData.playerLostAMon2)
+ {
+ return 4;
+ }
+ return 0;
+}
+
+void GabbyAndTySetScriptVarsToFieldObjectLocalIds(void)
+{
+ switch (GabbyAndTyGetBattleNum())
+ {
+ case 1:
+ gSpecialVar_0x8004 = 14;
+ gSpecialVar_0x8005 = 13;
+ break;
+ case 2:
+ gSpecialVar_0x8004 = 5;
+ gSpecialVar_0x8005 = 6;
+ break;
+ case 3:
+ gSpecialVar_0x8004 = 18;
+ gSpecialVar_0x8005 = 17;
+ break;
+ case 4:
+ gSpecialVar_0x8004 = 21;
+ gSpecialVar_0x8005 = 22;
+ break;
+ case 5:
+ gSpecialVar_0x8004 = 8;
+ gSpecialVar_0x8005 = 9;
+ break;
+ case 6:
+ gSpecialVar_0x8004 = 19;
+ gSpecialVar_0x8005 = 20;
+ break;
+ case 7:
+ gSpecialVar_0x8004 = 23;
+ gSpecialVar_0x8005 = 24;
+ break;
+ case 8:
+ gSpecialVar_0x8004 = 10;
+ gSpecialVar_0x8005 = 11;
+ break;
+ }
+}
+
+void InterviewAfter(void)
+{
+ switch (gSpecialVar_0x8005)
+ {
+ case TVSHOW_FAN_CLUB_LETTER:
+ InterviewAfter_FanClubLetter();
+ break;
+ case TVSHOW_RECENT_HAPPENINGS:
+ InterviewAfter_RecentHappenings();
+ break;
+ case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
+ InterviewAfter_PkmnFanClubOpinions();
+ break;
+ case TVSHOW_UNKN_SHOWTYPE_04:
+ InterviewAfter_DummyShow4();
+ break;
+ case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
+ InterviewAfter_BravoTrainerPokemonProfile();
+ break;
+ case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
+ InterviewAfter_BravoTrainerBattleTowerProfile();
+ break;
+ case TVSHOW_CONTEST_LIVE_UPDATES:
+ InterviewAfter_ContestLiveUpdates();
+ break;
+ }
+}
+
+void PutPokemonTodayCaughtOnAir(void)
+{
+ u8 i;
+ u16 ct;
+ TVShow *show;
+ u32 language2;
+ u16 itemLastUsed;
+
+ ct = 0;
+ sub_80EED88();
+ sub_80ED718();
+ if (gBattleResults.caughtMonSpecies == SPECIES_NONE)
+ {
+ PutPokemonTodayFailedOnTheAir();
+ }
+ else
+ {
+ UpdateWorldOfMastersAndPutItOnTheAir();
+ if (!rbernoulli(1, 1) && StringCompare(gSpeciesNames[gBattleResults.caughtMonSpecies], gBattleResults.caughtMonNick))
+ {
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_POKEMON_TODAY_CAUGHT, FALSE) != TRUE)
+ {
+ for (i = 0; i < 11; i ++)
+ {
+ ct += gBattleResults.catchAttempts[i];
+ }
+ if (ct != 0 || gBattleResults.usedMasterBall)
+ {
+ ct = 0;
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->pokemonToday.kind = TVSHOW_POKEMON_TODAY_CAUGHT;
+ show->pokemonToday.active = FALSE;
+ if (gBattleResults.usedMasterBall)
+ {
+ ct = 1;
+ itemLastUsed = ITEM_MASTER_BALL;
+ }
+ else
+ {
+ for (i = 0; i < 11; i ++)
+ {
+ ct += gBattleResults.catchAttempts[i];
+ }
+ if (ct > 0xFF)
+ {
+ ct = 0xFF;
+ }
+ itemLastUsed = gLastUsedItem;
+ }
+ show->pokemonToday.nBallsUsed = ct;
+ show->pokemonToday.ball = itemLastUsed;
+ StringCopy(show->pokemonToday.playerName, gSaveBlock2Ptr->playerName);
+ StringCopy(show->pokemonToday.nickname, gBattleResults.caughtMonNick);
+ language2 = sub_81DB604(show->pokemonToday.nickname);
+ StripExtCtrlCodes(show->pokemonToday.nickname);
+ show->pokemonToday.species = gBattleResults.caughtMonSpecies;
+ tv_store_id_3x(show);
+ show->pokemonToday.language = gGameLanguage;
+ show->pokemonToday.language2 = language2;
+ }
+ }
+ }
+ }
+}
+
+void UpdateWorldOfMastersAndPutItOnTheAir(void)
+{
+ TVShow *show;
+
+ show = &gSaveBlock1Ptr->tvShows[24];
+ if (show->worldOfMasters.kind != TVSHOW_WORLD_OF_MASTERS)
+ {
+ DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, 24);
+ show->worldOfMasters.steps = GetGameStat(GAME_STAT_STEPS);
+ show->worldOfMasters.kind = TVSHOW_WORLD_OF_MASTERS;
+ }
+ show->worldOfMasters.numPokeCaught ++;
+ show->worldOfMasters.caughtPoke = gBattleResults.caughtMonSpecies;
+ show->worldOfMasters.species = gBattleResults.playerMon1Species;
+ show->worldOfMasters.location = gMapHeader.regionMapSectionId;
+}
+
+void PutPokemonTodayFailedOnTheAir(void)
+{
+ u16 ct;
+ u8 i;
+ TVShow *show;
+
+ if (!rbernoulli(1, 1))
+ {
+ for (i = 0, ct = 0; i < 11; i ++)
+ {
+ ct += gBattleResults.catchAttempts[i];
+ }
+ if (ct > 0xFF)
+ {
+ ct = 0xFF;
+ }
+ if (ct > 2 && (gBattleOutcome == BATTLE_POKE_FLED || gBattleOutcome == BATTLE_WON))
+ {
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_POKEMON_TODAY_FAILED, FALSE) != TRUE)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->pokemonTodayFailed.kind = TVSHOW_POKEMON_TODAY_FAILED;
+ show->pokemonTodayFailed.active = FALSE;
+ show->pokemonTodayFailed.species = gBattleResults.playerMon1Species;
+ show->pokemonTodayFailed.species2 = gBattleResults.lastOpponentSpecies;
+ show->pokemonTodayFailed.nBallsUsed = ct;
+ show->pokemonTodayFailed.outcome = gBattleOutcome;
+ show->pokemonTodayFailed.location = gMapHeader.regionMapSectionId;
+ StringCopy(show->pokemonTodayFailed.playerName, gSaveBlock2Ptr->playerName);
+ tv_store_id_3x(show);
+ show->pokemonTodayFailed.language = gGameLanguage;
+ }
+ }
+ }
+}
+
+void tv_store_id_3x(TVShow *show)
+{
+ u32 id;
+
+ id = GetPlayerIDAsU32();
+ show->common.srcTrainerId2Lo = id;
+ show->common.srcTrainerId2Hi = id >> 8;
+ show->common.srcTrainerIdLo = id;
+ show->common.srcTrainerIdHi = id >> 8;
+ show->common.trainerIdLo = id;
+ show->common.trainerIdHi = id >> 8;
+}
+
+void tv_store_id_2x(TVShow *show)
+{
+ u32 id;
+
+ id = GetPlayerIDAsU32();
+ show->common.srcTrainerIdLo = id;
+ show->common.srcTrainerIdHi = id >> 8;
+ show->common.trainerIdLo = id;
+ show->common.trainerIdHi = id >> 8;
+}
+
+void InterviewAfter_ContestLiveUpdates(void)
+{
+ TVShow *show;
+ TVShow *show2;
+
+ show = &gSaveBlock1Ptr->tvShows[24];
+ if (show->contestLiveUpdates.kind == TVSHOW_CONTEST_LIVE_UPDATES)
+ {
+ show2 = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show2->contestLiveUpdates.kind = TVSHOW_CONTEST_LIVE_UPDATES;
+ show2->contestLiveUpdates.active = TRUE;
+ StringCopy(show2->contestLiveUpdates.playerName, gSaveBlock2Ptr->playerName);
+ show2->contestLiveUpdates.category = gScriptContestCategory;
+ show2->contestLiveUpdates.species = GetMonData(&gPlayerParty[gUnknown_02039F24], MON_DATA_SPECIES, NULL);
+ show2->contestLiveUpdates.winningSpecies = show->contestLiveUpdates.winningSpecies;
+ show2->contestLiveUpdates.appealFlags2 = show->contestLiveUpdates.appealFlags2;
+ show2->contestLiveUpdates.round1Rank = show->contestLiveUpdates.round1Rank;
+ show2->contestLiveUpdates.round2Rank = show->contestLiveUpdates.round2Rank;
+ show2->contestLiveUpdates.move = show->contestLiveUpdates.move;
+ show2->contestLiveUpdates.appealFlags1 = show->contestLiveUpdates.appealFlags1;
+ StringCopy(show2->contestLiveUpdates.winningTrainerName, show->contestLiveUpdates.winningTrainerName);
+ tv_store_id_2x(show2);
+ show2->contestLiveUpdates.language = gGameLanguage;
+ show2->contestLiveUpdates.winningTrainerLanguage = show->contestLiveUpdates.winningTrainerLanguage;
+ DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, 24);
+ }
+}
+
+void PutBattleUpdateOnTheAir(u8 a0, u16 a1, u16 a2, u16 a3)
+{
+ TVShow *show;
+ u8 name[32];
+
+ sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1)
+ {
+ FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_BATTLE_UPDATE);
+ if (gScriptResult != 1)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->battleUpdate.kind = TVSHOW_BATTLE_UPDATE;
+ show->battleUpdate.active = TRUE;
+ StringCopy(show->battleUpdate.playerName, gSaveBlock2Ptr->playerName);
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ show->battleUpdate.battleType = 2;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ show->battleUpdate.battleType = 1;
+ }
+ else
+ {
+ show->battleUpdate.battleType = 0;
+ }
+ show->battleUpdate.move = a1;
+ show->battleUpdate.species2 = a2;
+ show->battleUpdate.species = a3;
+ StringCopy(name, gLinkPlayers[a0].name);
+ StripExtCtrlCodes(name);
+ StringCopy(show->battleUpdate.linkOpponentName, name);
+ tv_store_id_2x(show);
+ show->battleUpdate.language = gGameLanguage;
+ if (show->battleUpdate.language == LANGUAGE_JAPANESE || gLinkPlayers[a0].language == LANGUAGE_JAPANESE)
+ {
+ show->battleUpdate.linkOpponentLanguage = LANGUAGE_JAPANESE;
+ }
+ else
+ {
+ show->battleUpdate.linkOpponentLanguage = gLinkPlayers[a0].language;
+ }
+ }
+ }
+}
+
+bool8 Put3CheersForPokeblocksOnTheAir(const u8 *partnersName, u8 flavor, u8 unused, u8 sheen, u8 language)
+{
+ TVShow *show;
+ u8 name[32];
+
+ sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot == -1)
+ {
+ return FALSE;
+ }
+ FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_3_CHEERS_FOR_POKEBLOCKS);
+ if (gScriptResult == 1)
+ {
+ return FALSE;
+ }
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->threeCheers.kind = TVSHOW_3_CHEERS_FOR_POKEBLOCKS;
+ show->threeCheers.active = TRUE;
+ StringCopy(show->threeCheers.playerName, gSaveBlock2Ptr->playerName);
+ StringCopy(name, partnersName);
+ StripExtCtrlCodes(name);
+ StringCopy(show->threeCheers.worstBlenderName, name);
+ show->threeCheers.flavor = flavor;
+ show->threeCheers.unk_03_3 = unused;
+ show->threeCheers.sheen = sheen;
+ tv_store_id_2x(show);
+ show->threeCheers.language = gGameLanguage;
+ if (show->threeCheers.language == LANGUAGE_JAPANESE || language == LANGUAGE_JAPANESE)
+ {
+ show->threeCheers.worstBlenderLanguage = LANGUAGE_JAPANESE;
+ }
+ else
+ {
+ show->threeCheers.worstBlenderLanguage = language;
+ }
+ return TRUE;
+}
+
+void PutFanClubSpecialOnTheAir(void)
+{
+ TVShow *show;
+ u8 name[32];
+ u32 id;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8006];
+ show->fanClubSpecial.score = gSpecialVar_0x8005 * 10;
+ StringCopy(show->fanClubSpecial.playerName, gSaveBlock2Ptr->playerName);
+ show->fanClubSpecial.kind = TVSHOW_FAN_CLUB_SPECIAL;
+ show->fanClubSpecial.active = TRUE;
+ id = GetPlayerIDAsU32();
+ show->fanClubSpecial.idLo = id;
+ show->fanClubSpecial.idHi = id >> 8;
+ StringCopy(name, gStringVar1);
+ StripExtCtrlCodes(name);
+ StringCopy(show->fanClubSpecial.idolName, name);
+ tv_store_id_2x(show);
+ show->fanClubSpecial.language = gGameLanguage;
+ if (show->fanClubSpecial.language == LANGUAGE_JAPANESE || gSaveBlock1Ptr->unk_31A0 == LANGUAGE_JAPANESE)
+ {
+ show->fanClubSpecial.idolNameLanguage = LANGUAGE_JAPANESE;
+ }
+ else
+ {
+ show->fanClubSpecial.idolNameLanguage = gSaveBlock1Ptr->unk_31A0;
+ }
+}
+
+void ContestLiveUpdates_BeforeInterview_1(u8 a0)
+{
+ TVShow *show;
+
+ DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, 24);
+ sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1)
+ {
+ show = &gSaveBlock1Ptr->tvShows[24];
+ show->contestLiveUpdates.round1Rank = a0;
+ show->contestLiveUpdates.kind = TVSHOW_CONTEST_LIVE_UPDATES;
+ }
+}
+
+void ContestLiveUpdates_BeforeInterview_2(u8 a0)
+{
+ TVShow *show;
+
+ show = &gSaveBlock1Ptr->tvShows[24];
+ sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1)
+ {
+ show->contestLiveUpdates.round2Rank = a0;
+ }
+}
+
+void ContestLiveUpdates_BeforeInterview_3(u8 a0)
+{
+ TVShow *show;
+
+ show = &gSaveBlock1Ptr->tvShows[24];
+ sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1)
+ {
+ show->contestLiveUpdates.appealFlags1 = a0;
+ }
+}
+
+void ContestLiveUpdates_BeforeInterview_4(u16 a0)
+{
+ TVShow *show;
+
+ show = &gSaveBlock1Ptr->tvShows[24];
+ sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1)
+ {
+ show->contestLiveUpdates.move = a0;
+ }
+}
+
+void ContestLiveUpdates_BeforeInterview_5(u8 a0, u8 a1)
+{
+ TVShow *show;
+
+ show = &gSaveBlock1Ptr->tvShows[24];
+ sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1)
+ {
+ show->contestLiveUpdates.winningSpecies = gUnknown_02039E00[a1].unk_00;
+ StringCopy(show->contestLiveUpdates.winningTrainerName, gUnknown_02039E00[a1].unk_0d);
+ StripExtCtrlCodes(show->contestLiveUpdates.winningTrainerName);
+ show->contestLiveUpdates.appealFlags2 = a0;
+ if (a1 + 1 > gUnknown_02039F30)
+ {
+ show->contestLiveUpdates.winningTrainerLanguage = gLinkPlayers[0].language;
+ }
+ else if (gGameLanguage == LANGUAGE_JAPANESE || gLinkPlayers[a1].language == LANGUAGE_JAPANESE)
+ {
+ show->contestLiveUpdates.winningTrainerLanguage = LANGUAGE_JAPANESE;
+ }
+ else
+ {
+ show->contestLiveUpdates.winningTrainerLanguage = gLinkPlayers[a1].language;
+ }
+ }
+}
+
+void InterviewAfter_BravoTrainerPokemonProfile(void)
+{
+ TVShow *show;
+ TVShow *show2;
+
+ show = &gSaveBlock1Ptr->tvShows[24];
+ if (show->bravoTrainer.kind == TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE)
+ {
+ show2 = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show2->bravoTrainer.kind = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE;
+ show2->bravoTrainer.active = TRUE;
+ show2->bravoTrainer.species = show->bravoTrainer.species;
+ StringCopy(show2->bravoTrainer.playerName, gSaveBlock2Ptr->playerName);
+ StringCopy(show2->bravoTrainer.pokemonNickname, show->bravoTrainer.pokemonNickname);
+ show2->bravoTrainer.contestCategory = show->bravoTrainer.contestCategory;
+ show2->bravoTrainer.contestRank = show->bravoTrainer.contestRank;
+ show2->bravoTrainer.move = show->bravoTrainer.move;
+ show2->bravoTrainer.contestResult = show->bravoTrainer.contestResult;
+ show2->bravoTrainer.contestCategory = show->bravoTrainer.contestCategory;
+ tv_store_id_2x(show2);
+ show2->bravoTrainer.language = gGameLanguage;
+ if (show2->bravoTrainer.language == LANGUAGE_JAPANESE || show->bravoTrainer.pokemonNameLanguage == LANGUAGE_JAPANESE)
+ {
+ show2->bravoTrainer.pokemonNameLanguage = LANGUAGE_JAPANESE;
+ }
+ else
+ {
+ show2->bravoTrainer.pokemonNameLanguage = show->bravoTrainer.pokemonNameLanguage;
+ }
+ DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, 24);
+ }
+}
+
+void BravoTrainerPokemonProfile_BeforeInterview1(u16 a0)
+{
+ TVShow *show;
+
+ show = &gSaveBlock1Ptr->tvShows[24];
+ InterviewBefore_BravoTrainerPkmnProfile();
+ sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1)
+ {
+ DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, 24);
+ show->bravoTrainer.move = a0;
+ show->bravoTrainer.kind = TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE;
+ }
+}
+
+void BravoTrainerPokemonProfile_BeforeInterview2(u8 a0)
+{
+ TVShow *show;
+
+ show = &gSaveBlock1Ptr->tvShows[24];
+ sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1)
+ {
+ show->bravoTrainer.contestResult = a0;
+ show->bravoTrainer.contestCategory = gScriptContestCategory;
+ show->bravoTrainer.contestRank = gUnknown_02039F2E;
+ show->bravoTrainer.species = GetMonData(&gPlayerParty[gUnknown_02039F24], MON_DATA_SPECIES, NULL);
+ GetMonData(&gPlayerParty[gUnknown_02039F24], MON_DATA_NICKNAME, show->bravoTrainer.pokemonNickname);
+ StripExtCtrlCodes(show->bravoTrainer.pokemonNickname);
+ show->bravoTrainer.pokemonNameLanguage = GetMonData(&gPlayerParty[gUnknown_02039F24], MON_DATA_LANGUAGE);
+ }
+}
+
+void InterviewAfter_BravoTrainerBattleTowerProfile(void)
+{
+ TVShow *show;
+
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->bravoTrainerTower.kind = TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE;
+ show->bravoTrainerTower.active = TRUE;
+ StringCopy(show->bravoTrainerTower.trainerName, gSaveBlock2Ptr->playerName);
+ StringCopy(show->bravoTrainerTower.pokemonName, gSaveBlock2Ptr->field_BD8);
+ show->bravoTrainerTower.species = gSaveBlock2Ptr->field_BD4;
+ show->bravoTrainerTower.defeatedSpecies = gSaveBlock2Ptr->field_BD6;
+ show->bravoTrainerTower.numFights = sub_8164FCC(gSaveBlock2Ptr->field_D07, 0);
+ show->bravoTrainerTower.wonTheChallenge = gSaveBlock2Ptr->field_D06;
+ if (gSaveBlock2Ptr->field_D07 == 0)
+ {
+ show->bravoTrainerTower.btLevel = 50;
+ }
+ else
+ {
+ show->bravoTrainerTower.btLevel = 100;
+ }
+ show->bravoTrainerTower.interviewResponse = gSpecialVar_0x8004;
+ tv_store_id_2x(show);
+ show->bravoTrainerTower.language = gGameLanguage;
+ if (show->bravoTrainerTower.language == LANGUAGE_JAPANESE || gSaveBlock2Ptr->field_BEB == LANGUAGE_JAPANESE)
+ {
+ show->bravoTrainerTower.pokemonNameLanguage = LANGUAGE_JAPANESE;
+ }
+ else
+ {
+ show->bravoTrainerTower.pokemonNameLanguage = gSaveBlock2Ptr->field_BEB;
+ }
+}
+
+void SaveRecordedItemPurchasesForTVShow(void)
+{
+ TVShow *show;
+ u8 i;
+
+ if (!(gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_TRAINER_HILL_LOBBY && gSaveBlock1Ptr->location.mapNum == MAP_ID_TRAINER_HILL_LOBBY) && !(gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_BATTLE_FRONTIER_MART && gSaveBlock1Ptr->location.mapNum == MAP_ID_BATTLE_FRONTIER_MART) && !rbernoulli(1, 3))
+ {
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_SMART_SHOPPER, FALSE) != TRUE)
+ {
+ TV_SortPurchasesByQuantity();
+ if (gUnknown_02039F80[0].quantity >= 20)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->smartshopperShow.kind = TVSHOW_SMART_SHOPPER;
+ show->smartshopperShow.active = FALSE;
+ show->smartshopperShow.shopLocation = gMapHeader.regionMapSectionId;
+ for (i = 0; i < 3; i ++)
+ {
+ show->smartshopperShow.itemIds[i] = gUnknown_02039F80[i].itemId;
+ show->smartshopperShow.itemAmounts[i] = gUnknown_02039F80[i].quantity;
+ }
+ show->smartshopperShow.priceReduced = GetPriceReduction(1);
+ StringCopy(show->smartshopperShow.playerName, gSaveBlock2Ptr->playerName);
+ tv_store_id_3x(show);
+ show->smartshopperShow.language = gGameLanguage;
+ }
+ }
+ }
+}
+
+void PutNameRaterShowOnTheAir(void)
+{
+ TVShow *show;
+
+ InterviewBefore_NameRater();
+ if (gScriptResult != 1)
+ {
+ GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar1);
+ if (StringLength(gSaveBlock2Ptr->playerName) > 1 && StringLength(gStringVar1) > 1)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->nameRaterShow.kind = TVSHOW_NAME_RATER_SHOW;
+ show->nameRaterShow.active = TRUE;
+ show->nameRaterShow.species = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPECIES, NULL);
+ show->nameRaterShow.random = Random() % 3;
+ show->nameRaterShow.random2 = Random() % 2;
+ show->nameRaterShow.randomSpecies = TV_GetSomeOtherSpeciesAlreadySeenByPlayer(show->nameRaterShow.species);
+ StringCopy(show->nameRaterShow.trainerName, gSaveBlock2Ptr->playerName);
+ GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, show->nameRaterShow.pokemonName);
+ StripExtCtrlCodes(show->nameRaterShow.pokemonName);
+ tv_store_id_2x(show);
+ show->nameRaterShow.language = gGameLanguage;
+ show->nameRaterShow.pokemonNameLanguage = GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_LANGUAGE);
+ }
+ }
+}
+
+void StartMassOutbreak(void)
+{
+ TVShow *show;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gSaveBlock1Ptr->outbreakPokemonSpecies = show->massOutbreak.species;
+ gSaveBlock1Ptr->outbreakLocationMapNum = show->massOutbreak.locationMapNum;
+ gSaveBlock1Ptr->outbreakLocationMapGroup = show->massOutbreak.locationMapGroup;
+ gSaveBlock1Ptr->outbreakPokemonLevel = show->massOutbreak.level;
+ gSaveBlock1Ptr->outbreakUnk1 = show->massOutbreak.var02;
+ gSaveBlock1Ptr->outbreakUnk2 = show->massOutbreak.var0E;
+ gSaveBlock1Ptr->outbreakPokemonMoves[0] = show->massOutbreak.moves[0];
+ gSaveBlock1Ptr->outbreakPokemonMoves[1] = show->massOutbreak.moves[1];
+ gSaveBlock1Ptr->outbreakPokemonMoves[2] = show->massOutbreak.moves[2];
+ gSaveBlock1Ptr->outbreakPokemonMoves[3] = show->massOutbreak.moves[3];
+ gSaveBlock1Ptr->outbreakUnk4 = show->massOutbreak.var03;
+ gSaveBlock1Ptr->outbreakPokemonProbability = show->massOutbreak.probability;
+ gSaveBlock1Ptr->outbreakDaysLeft = 2;
+}
+
+void PutLilycoveContestLadyShowOnTheAir(void)
+{
+ TVShow *show;
+
+ sub_80EFA88();
+ if (gScriptResult != TRUE)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ sub_818E848(&show->contestLiveUpdates2.language);
+ show->contestLiveUpdates2.pokemonNameLanguage = LANGUAGE_ENGLISH;
+ show->contestLiveUpdates2.kind = TVSHOW_CONTEST_LIVE_UPDATES_2;
+ show->contestLiveUpdates2.active = TRUE;
+ sub_818E81C(show->contestLiveUpdates2.playerName);
+ sub_818E7E0(&show->contestLiveUpdates2.contestCategory, show->contestLiveUpdates2.nickname);
+ show->contestLiveUpdates2.pokeblockState = sub_818E880();
+ tv_store_id_2x(show);
+ }
+}
+
+void InterviewAfter_FanClubLetter(void)
+{
+ TVShow *show;
+
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->fanclubLetter.kind = TVSHOW_FAN_CLUB_LETTER;
+ show->fanclubLetter.active = TRUE;
+ StringCopy(show->fanclubLetter.playerName, gSaveBlock2Ptr->playerName);
+ show->fanclubLetter.species = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL);
+ tv_store_id_2x(show);
+ show->fanclubLetter.language = gGameLanguage;
+}
+
+void InterviewAfter_RecentHappenings(void)
+{
+ TVShow *show;
+
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->recentHappenings.kind = TVSHOW_RECENT_HAPPENINGS;
+ show->recentHappenings.active = TRUE;
+ StringCopy(show->recentHappenings.playerName, gSaveBlock2Ptr->playerName);
+ show->recentHappenings.var02 = 0;
+ tv_store_id_2x(show);
+ show->recentHappenings.language = gGameLanguage;
+}
+
+void InterviewAfter_PkmnFanClubOpinions(void)
+{
+ TVShow *show;
+
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->fanclubOpinions.kind = TVSHOW_PKMN_FAN_CLUB_OPINIONS;
+ show->fanclubOpinions.active = TRUE;
+ show->fanclubOpinions.friendshipHighNybble = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_FRIENDSHIP, NULL) >> 4;
+ show->fanclubOpinions.questionAsked = gSpecialVar_0x8007;
+ StringCopy(show->fanclubOpinions.playerName, gSaveBlock2Ptr->playerName);
+ GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_NICKNAME, show->fanclubOpinions.nickname);
+ StripExtCtrlCodes(show->fanclubOpinions.nickname);
+ show->fanclubOpinions.species = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL);
+ tv_store_id_2x(show);
+ show->fanclubOpinions.language = gGameLanguage;
+ if (gGameLanguage == LANGUAGE_JAPANESE || GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE)
+ {
+ show->fanclubOpinions.pokemonNameLanguage = LANGUAGE_JAPANESE;
+ }
+ else
+ {
+ show->fanclubOpinions.pokemonNameLanguage = GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_LANGUAGE);
+ }
+}
+
+void InterviewAfter_DummyShow4()
+{
+ TVShow *show;
+
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+}
+
+void sub_80ED718(void)
+{
+ u8 i;
+ u16 outbreakIdx;
+ TVShow *show;
+
+ if (FlagGet(SYS_GAME_CLEAR))
+ {
+ for (i = 0; i < 24; i ++)
+ {
+ if (gSaveBlock1Ptr->tvShows[i].common.kind == TVSHOW_MASS_OUTBREAK)
+ {
+ return;
+ }
+ }
+ if (!rbernoulli(1, 200))
+ {
+ sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1)
+ {
+ outbreakIdx = Random() % ARRAY_COUNT(sPokeOutbreakSpeciesList);
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->massOutbreak.kind = TVSHOW_MASS_OUTBREAK;
+ show->massOutbreak.active = TRUE;
+ show->massOutbreak.level = sPokeOutbreakSpeciesList[outbreakIdx].level;
+ show->massOutbreak.var02 = 0;
+ show->massOutbreak.var03 = 0;
+ show->massOutbreak.species = sPokeOutbreakSpeciesList[outbreakIdx].species;
+ show->massOutbreak.var0E = 0;
+ show->massOutbreak.moves[0] = sPokeOutbreakSpeciesList[outbreakIdx].moves[0];
+ show->massOutbreak.moves[1] = sPokeOutbreakSpeciesList[outbreakIdx].moves[1];
+ show->massOutbreak.moves[2] = sPokeOutbreakSpeciesList[outbreakIdx].moves[2];
+ show->massOutbreak.moves[3] = sPokeOutbreakSpeciesList[outbreakIdx].moves[3];
+ show->massOutbreak.locationMapNum = sPokeOutbreakSpeciesList[outbreakIdx].location;
+ show->massOutbreak.locationMapGroup = 0;
+ show->massOutbreak.var12 = 0;
+ show->massOutbreak.probability = 50;
+ show->massOutbreak.var15 = 0;
+ show->massOutbreak.daysLeft = 1;
+ tv_store_id_2x(show);
+ show->massOutbreak.language = gGameLanguage;
+ }
+ }
+ }
+}
+
+void EndMassOutbreak(void)
+{
+ gSaveBlock1Ptr->outbreakPokemonSpecies = SPECIES_NONE;
+ gSaveBlock1Ptr->outbreakLocationMapNum = 0;
+ gSaveBlock1Ptr->outbreakLocationMapGroup = 0;
+ gSaveBlock1Ptr->outbreakPokemonLevel = 0;
+ gSaveBlock1Ptr->outbreakUnk1 = 0;
+ gSaveBlock1Ptr->outbreakUnk2 = 0;
+ gSaveBlock1Ptr->outbreakPokemonMoves[0] = MOVE_NONE;
+ gSaveBlock1Ptr->outbreakPokemonMoves[1] = MOVE_NONE;
+ gSaveBlock1Ptr->outbreakPokemonMoves[2] = MOVE_NONE;
+ gSaveBlock1Ptr->outbreakPokemonMoves[3] = MOVE_NONE;
+ gSaveBlock1Ptr->outbreakUnk4 = 0;
+ gSaveBlock1Ptr->outbreakPokemonProbability = 0;
+ gSaveBlock1Ptr->outbreakDaysLeft = 0;
+}
+
+void sub_80ED888(u16 days)
+{
+
+ sub_80ED8B4(days);
+ UpdateMassOutbreakTimeLeft(days);
+ sub_80EF120(days);
+ sub_80EDA48(days);
+ sub_80EEB98(days);
+}
+
+void sub_80ED8B4(u16 days)
+{
+ u8 i;
+ TVShow *show;
+
+ if (gSaveBlock1Ptr->outbreakPokemonSpecies == SPECIES_NONE)
+ {
+ for (i = 0; i < 24; i ++)
+ {
+ if (gSaveBlock1Ptr->tvShows[i].massOutbreak.kind == TVSHOW_MASS_OUTBREAK && gSaveBlock1Ptr->tvShows[i].massOutbreak.active == TRUE)
+ {
+ show = &gSaveBlock1Ptr->tvShows[i];
+ if (show->massOutbreak.daysLeft < days)
+ {
+ show->massOutbreak.daysLeft = 0;
+ }
+ else
+ {
+ show->massOutbreak.daysLeft -= days;
+ }
+ break;
+ }
+ }
+ }
+}
+
+void UpdateMassOutbreakTimeLeft(u16 days)
+{
+ if (gSaveBlock1Ptr->outbreakDaysLeft <= days)
+ {
+ EndMassOutbreak();
+ }
+ else
+ {
+ gSaveBlock1Ptr->outbreakDaysLeft -= days;
+ }
+}
+
+void sub_80ED950(bool8 flag)
+{
+ if (flag)
+ {
+ if (sPokemonAnglerAttemptCounters >> 8 > 4)
+ {
+ PutFishingAdviceShowOnTheAir();
+ }
+ sPokemonAnglerAttemptCounters &= 0xFF;
+ if (sPokemonAnglerAttemptCounters != 0xFF)
+ {
+ sPokemonAnglerAttemptCounters += 0x01;
+ }
+ }
+ else
+ {
+ if ((u8)sPokemonAnglerAttemptCounters > 4)
+ {
+ PutFishingAdviceShowOnTheAir();
+ }
+ sPokemonAnglerAttemptCounters &= 0xFF00;
+ if (sPokemonAnglerAttemptCounters >> 8 != 0xFF)
+ {
+ sPokemonAnglerAttemptCounters += 0x0100;
+ }
+ }
+}
+
+void PutFishingAdviceShowOnTheAir(void)
+{
+ TVShow *show;
+
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_FISHING_ADVICE, FALSE) != TRUE)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->pokemonAngler.kind = TVSHOW_FISHING_ADVICE;
+ show->pokemonAngler.active = FALSE;
+ show->pokemonAngler.nBites = sPokemonAnglerAttemptCounters;
+ show->pokemonAngler.nFails = sPokemonAnglerAttemptCounters >> 8;
+ show->pokemonAngler.species = sPokemonAnglerSpecies;
+ StringCopy(show->pokemonAngler.playerName, gSaveBlock2Ptr->playerName);
+ tv_store_id_3x(show);
+ show->pokemonAngler.language = gGameLanguage;
+ }
+}
+
+void sub_80EDA3C(u16 species)
+{
+ sPokemonAnglerSpecies = species;
+}
+
+void sub_80EDA48(u16 days)
+{
+ TVShow *show;
+
+ show = &gSaveBlock1Ptr->tvShows[24];
+ if (show->worldOfMasters.kind == TVSHOW_WORLD_OF_MASTERS)
+ {
+ if (show->worldOfMasters.numPokeCaught >= 20)
+ {
+ sub_80EDA80();
+ }
+ DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, 24);
+ }
+}
+
+void sub_80EDA80(void)
+{
+ TVShow *show;
+ TVShow *show2;
+
+ show = &gSaveBlock1Ptr->tvShows[24];
+ if (!rbernoulli(1, 1))
+ {
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_WORLD_OF_MASTERS, FALSE) != TRUE)
+ {
+ show2 = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show2->worldOfMasters.kind = TVSHOW_WORLD_OF_MASTERS;
+ show2->worldOfMasters.active = FALSE;
+ show2->worldOfMasters.numPokeCaught = show->worldOfMasters.numPokeCaught;
+ show2->worldOfMasters.steps = GetGameStat(GAME_STAT_STEPS) - show->worldOfMasters.steps;
+ show2->worldOfMasters.caughtPoke = show->worldOfMasters.caughtPoke;
+ show2->worldOfMasters.species = show->worldOfMasters.species;
+ show2->worldOfMasters.location = show->worldOfMasters.location;
+ StringCopy(show2->worldOfMasters.playerName, gSaveBlock2Ptr->playerName);
+ tv_store_id_3x(show2);
+ show2->worldOfMasters.language = gGameLanguage;
+ DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, 24);
+ }
+ }
+}
+
+void sub_80EDB44(void)
+{
+ TVShow *show;
+ u32 i;
+ u8 nBadges;
+
+ HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_TODAYS_RIVAL_TRAINER, TRUE);
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->rivalTrainer.kind = TVSHOW_TODAYS_RIVAL_TRAINER;
+ show->rivalTrainer.active = FALSE;
+ for (i = BADGE01_GET, nBadges = 0; i < BADGE01_GET + 8; i ++)
+ {
+ if (FlagGet(i))
+ {
+ nBadges ++;
+ }
+ }
+ show->rivalTrainer.badgeCount = nBadges;
+ if (IsNationalPokedexEnabled())
+ {
+ show->rivalTrainer.dexCount = pokedex_count(0x01);
+ }
+ else
+ {
+ show->rivalTrainer.dexCount = sub_80C0844(0x01);
+ }
+ show->rivalTrainer.location = gMapHeader.regionMapSectionId;
+ show->rivalTrainer.mapDataId = gMapHeader.mapDataId;
+ show->rivalTrainer.nSilverSymbols = 0;
+ show->rivalTrainer.nGoldSymbols = 0;
+ for (i = 0; i < 7; i ++)
+ {
+ if (FlagGet(sSilverSymbolFlags[i]) == TRUE)
+ {
+ show->rivalTrainer.nSilverSymbols ++;
+ }
+ if (FlagGet(sGoldSymbolFlags[i]) == TRUE)
+ {
+ show->rivalTrainer.nGoldSymbols ++;
+ }
+ }
+ show->rivalTrainer.battlePoints = gSaveBlock2Ptr->frontierBattlePoints;
+ StringCopy(show->rivalTrainer.playerName, gSaveBlock2Ptr->playerName);
+ tv_store_id_3x(show);
+ show->rivalTrainer.language = gGameLanguage;
+ }
+}
+
+void sub_80EDC60(const u16 *words)
+{
+ TVShow *show;
+
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_TREND_WATCHER, FALSE) != TRUE)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->trendWatcher.kind = TVSHOW_TREND_WATCHER;
+ show->trendWatcher.active = FALSE;
+ show->trendWatcher.gender = gSaveBlock2Ptr->playerGender;
+ show->trendWatcher.words[0] = words[0];
+ show->trendWatcher.words[1] = words[1];
+ StringCopy(show->trendWatcher.playerName, gSaveBlock2Ptr->playerName);
+ tv_store_id_3x(show);
+ show->trendWatcher.language = gGameLanguage;
+ }
+}
+
+void sub_80EDCE8(void)
+{
+ TVShow *show;
+
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_TREASURE_INVESTIGATORS, FALSE) != TRUE)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->treasureInvestigators.kind = TVSHOW_TREASURE_INVESTIGATORS;
+ show->treasureInvestigators.active = FALSE;
+ show->treasureInvestigators.item = gSpecialVar_0x8005;
+ show->treasureInvestigators.location = gMapHeader.regionMapSectionId;
+ show->treasureInvestigators.mapDataId = gMapHeader.mapDataId;
+ StringCopy(show->treasureInvestigators.playerName, gSaveBlock2Ptr->playerName);
+ tv_store_id_3x(show);
+ show->treasureInvestigators.language = gGameLanguage;
+ }
+}
+
+void sub_80EDD78(u16 nCoinsPaidOut)
+{
+ TVShow *show;
+ bool8 flag;
+ u16 nCoinsWon;
+
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_FIND_THAT_GAMER, FALSE) != TRUE)
+ {
+ flag = FALSE;
+ switch (sFindThatGamerWhichGame)
+ {
+ case FALSE:
+ if (nCoinsPaidOut >= sFindThatGamerCoinsSpent + 200)
+ {
+ flag = TRUE;
+ nCoinsWon = nCoinsPaidOut - sFindThatGamerCoinsSpent;
+ break;
+ }
+ if (sFindThatGamerCoinsSpent >= 100 && nCoinsPaidOut <= sFindThatGamerCoinsSpent - 100)
+ {
+ nCoinsWon = sFindThatGamerCoinsSpent - nCoinsPaidOut;
+ break;
+ }
+ return;
+ case TRUE:
+ if (nCoinsPaidOut >= sFindThatGamerCoinsSpent + 50)
+ {
+ flag = TRUE;
+ nCoinsWon = nCoinsPaidOut - sFindThatGamerCoinsSpent;
+ break;
+ }
+ if (sFindThatGamerCoinsSpent >= 50 && nCoinsPaidOut <= sFindThatGamerCoinsSpent - 50)
+ {
+ nCoinsWon = sFindThatGamerCoinsSpent - nCoinsPaidOut;
+ break;
+ }
+ return;
+ default:
+ return;
+ }
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->findThatGamer.kind = TVSHOW_FIND_THAT_GAMER;
+ show->findThatGamer.active = FALSE;
+ show->findThatGamer.nCoins = nCoinsWon;
+ show->findThatGamer.whichGame = sFindThatGamerWhichGame;
+ show->findThatGamer.won = flag;
+ StringCopy(show->findThatGamer.playerName, gSaveBlock2Ptr->playerName);
+ tv_store_id_3x(show);
+ show->findThatGamer.language = gGameLanguage;
+ }
+}
+
+void sub_80EDE70(u16 nCoinsSpent)
+{
+ sFindThatGamerWhichGame = FALSE;
+ sFindThatGamerCoinsSpent = nCoinsSpent;
+}
+
+void sub_80EDE84(u16 nCoinsSpent)
+{
+ sFindThatGamerWhichGame = TRUE;
+ sFindThatGamerCoinsSpent = nCoinsSpent;
+}
+
+#ifdef NONMATCHING // FIXME: Register allocation shenanigans
+void sub_80EDE98(TVShow *show)
+{
+ u8 i;
+ u8 j;
+ u16 k;
+ u8 n;
+ u8 deco;
+ u8 x;
+
+ for (i = 0; i < 16; i ++)
+ {
+ sTV_DecorationsBuffer[i] = 0;
+ }
+ for (i = 0, n = 0; i < 16; i ++)
+ {
+ deco = gSaveBlock1Ptr->secretBases[0].decorations[i];
+ if (deco)
+ {
+ for (j = 0; j < 16; j ++)
+ {
+ if (sTV_DecorationsBuffer[j] == 0)
+ {
+ sTV_DecorationsBuffer[j] = deco;
+ n ++;
+ break;
+ }
+ if (sTV_DecorationsBuffer[j] == deco)
+ {
+ break;
+ }
+ }
+ }
+ }
+ if (n > 4)
+ {
+ show->secretBaseVisit.nDecorations = 4;
+ }
+ else
+ {
+ show->secretBaseVisit.nDecorations = n;
+ }
+ switch (show->secretBaseVisit.nDecorations)
+ {
+ case 0:
+ break;
+ case 1:
+ show->secretBaseVisit.decorations[0] = sTV_DecorationsBuffer[0];
+ break;
+ default:
+ for (k = 0; k < n * n; k ++)
+ {
+ i = Random() % n;
+ j = Random() % n;
+ x = sTV_DecorationsBuffer[i];
+ sTV_DecorationsBuffer[i] = sTV_DecorationsBuffer[j];
+ sTV_DecorationsBuffer[j] = x;
+ }
+ for (i = 0; i < show->secretBaseVisit.nDecorations; i ++)
+ {
+ show->secretBaseVisit.decorations[i] = sTV_DecorationsBuffer[i];
+ }
+ break;
+ }
+}
+#else
+__attribute__((naked))
+void sub_80EDE98(TVShow *show)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r9\n"
+ "\tmov r6, r8\n"
+ "\tpush {r6,r7}\n"
+ "\tmov r8, r0\n"
+ "\tmovs r3, 0\n"
+ "\tldr r6, =sTV_DecorationsBuffer\n"
+ "\tldr r7, =gSaveBlock1Ptr\n"
+ "\tadds r2, r6, 0\n"
+ "\tmovs r1, 0\n"
+ "_080EDEAC:\n"
+ "\tadds r0, r3, r2\n"
+ "\tstrb r1, [r0]\n"
+ "\tadds r0, r3, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r3, r0, 24\n"
+ "\tcmp r3, 0xF\n"
+ "\tbls _080EDEAC\n"
+ "\tmovs r3, 0\n"
+ "\tmovs r5, 0\n"
+ "_080EDEBE:\n"
+ "\tldr r0, [r7]\n"
+ "\tldr r1, =0x00001aae\n"
+ "\tadds r0, r1\n"
+ "\tadds r0, r3\n"
+ "\tldrb r4, [r0]\n"
+ "\tadds r3, 0x1\n"
+ "\tcmp r4, 0\n"
+ "\tbeq _080EDF0A\n"
+ "\tmovs r1, 0\n"
+ "\tldrb r0, [r6]\n"
+ "\tcmp r0, 0\n"
+ "\tbne _080EDEE8\n"
+ "\tstrb r4, [r6]\n"
+ "\tb _080EDF04\n"
+ "\t.pool\n"
+ "_080EDEE8:\n"
+ "\tadds r0, r1, r6\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r0, r4\n"
+ "\tbeq _080EDF0A\n"
+ "\tadds r0, r1, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r1, r0, 24\n"
+ "\tcmp r1, 0xF\n"
+ "\tbhi _080EDF0A\n"
+ "\tadds r2, r1, r6\n"
+ "\tldrb r0, [r2]\n"
+ "\tcmp r0, 0\n"
+ "\tbne _080EDEE8\n"
+ "\tstrb r4, [r2]\n"
+ "_080EDF04:\n"
+ "\tadds r0, r5, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r5, r0, 24\n"
+ "_080EDF0A:\n"
+ "\tlsls r0, r3, 24\n"
+ "\tlsrs r3, r0, 24\n"
+ "\tcmp r3, 0xF\n"
+ "\tbls _080EDEBE\n"
+ "\tcmp r5, 0x4\n"
+ "\tbls _080EDF1E\n"
+ "\tmovs r0, 0x4\n"
+ "\tmov r1, r8\n"
+ "\tstrb r0, [r1, 0x3]\n"
+ "\tb _080EDF22\n"
+ "_080EDF1E:\n"
+ "\tmov r0, r8\n"
+ "\tstrb r5, [r0, 0x3]\n"
+ "_080EDF22:\n"
+ "\tmov r1, r8\n"
+ "\tldrb r0, [r1, 0x3]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _080EDFA4\n"
+ "\tcmp r0, 0x1\n"
+ "\tbne _080EDF34\n"
+ "\tldrb r0, [r6]\n"
+ "\tstrb r0, [r1, 0x4]\n"
+ "\tb _080EDFA4\n"
+ "_080EDF34:\n"
+ "\tmovs r6, 0\n"
+ "\tadds r7, r5, 0\n"
+ "\tmuls r7, r5\n"
+ "\tcmp r6, r7\n"
+ "\tbge _080EDF7E\n"
+ "\tldr r0, =sTV_DecorationsBuffer\n"
+ "\tmov r9, r0\n"
+ "_080EDF42:\n"
+ "\tbl Random\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tadds r1, r5, 0\n"
+ "\tbl __modsi3\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r4, r0, 24\n"
+ "\tbl Random\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tadds r1, r5, 0\n"
+ "\tbl __modsi3\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r1, r0, 24\n"
+ "\tmov r0, r9\n"
+ "\tadds r2, r4, r0\n"
+ "\tldrb r3, [r2]\n"
+ "\tadd r1, r9\n"
+ "\tldrb r0, [r1]\n"
+ "\tstrb r0, [r2]\n"
+ "\tstrb r3, [r1]\n"
+ "\tadds r0, r6, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r6, r0, 16\n"
+ "\tcmp r6, r7\n"
+ "\tblt _080EDF42\n"
+ "_080EDF7E:\n"
+ "\tmovs r3, 0\n"
+ "\tmov r1, r8\n"
+ "\tldrb r1, [r1, 0x3]\n"
+ "\tcmp r3, r1\n"
+ "\tbcs _080EDFA4\n"
+ "\tmov r2, r8\n"
+ "\tadds r2, 0x4\n"
+ "\tldr r4, =sTV_DecorationsBuffer\n"
+ "_080EDF8E:\n"
+ "\tadds r1, r2, r3\n"
+ "\tadds r0, r3, r4\n"
+ "\tldrb r0, [r0]\n"
+ "\tstrb r0, [r1]\n"
+ "\tadds r0, r3, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r3, r0, 24\n"
+ "\tmov r0, r8\n"
+ "\tldrb r0, [r0, 0x3]\n"
+ "\tcmp r3, r0\n"
+ "\tbcc _080EDF8E\n"
+ "_080EDFA4:\n"
+ "\tpop {r3,r4}\n"
+ "\tmov r8, r3\n"
+ "\tmov r9, r4\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.pool");
+}
+#endif
+
+void sub_80EDFB4(TVShow *show)
+{
+ u8 i;
+ u16 move;
+ u16 j;
+ u8 nMoves;
+ u8 nPokemon;
+ u16 sum;
+
+ for (i = 0, nPokemon = 0; i < PARTY_SIZE; i ++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != SPECIES_NONE && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
+ {
+ sTV_SecretBaseVisitMonsTemp[nPokemon].level = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL);
+ sTV_SecretBaseVisitMonsTemp[nPokemon].species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES);
+ nMoves = 0;
+ move = GetMonData(&gPlayerParty[i], MON_DATA_MOVE1);
+ if (move != MOVE_NONE)
+ {
+ sTV_SecretBaseVisitMovesTemp[nMoves] = move;
+ nMoves ++;
+ }
+ move = GetMonData(&gPlayerParty[i], MON_DATA_MOVE2);
+ if (move != MOVE_NONE)
+ {
+ sTV_SecretBaseVisitMovesTemp[nMoves] = move;
+ nMoves ++;
+ }
+ move = GetMonData(&gPlayerParty[i], MON_DATA_MOVE3);
+ if (move != MOVE_NONE)
+ {
+ sTV_SecretBaseVisitMovesTemp[nMoves] = move;
+ nMoves ++;
+ }
+ move = GetMonData(&gPlayerParty[i], MON_DATA_MOVE4);
+ if (move != MOVE_NONE)
+ {
+ sTV_SecretBaseVisitMovesTemp[nMoves] = move;
+ nMoves ++;
+ }
+ sTV_SecretBaseVisitMonsTemp[nPokemon].move = sTV_SecretBaseVisitMovesTemp[Random() % nMoves];
+ nPokemon ++;
+ }
+ }
+ for (i = 0, sum = 0; i < nPokemon; i ++)
+ {
+ sum += sTV_SecretBaseVisitMonsTemp[i].level;
+ }
+ show->secretBaseVisit.avgLevel = sum / nPokemon;
+ j = Random() % nPokemon;
+ show->secretBaseVisit.species = sTV_SecretBaseVisitMonsTemp[j].species;
+ show->secretBaseVisit.move = sTV_SecretBaseVisitMonsTemp[j].move;
+}
+
+void sub_80EE104(void)
+{
+ TVShow *show;
+
+ HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_SECRET_BASE_VISIT, TRUE);
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->secretBaseVisit.kind = TVSHOW_SECRET_BASE_VISIT;
+ show->secretBaseVisit.active = FALSE;
+ StringCopy(show->secretBaseVisit.playerName, gSaveBlock2Ptr->playerName);
+ sub_80EDE98(show);
+ sub_80EDFB4(show);
+ tv_store_id_3x(show);
+ show->secretBaseVisit.language = gGameLanguage;
+ }
+}
+
+void sub_80EE184(void)
+{
+ TVShow *show;
+ u8 i;
+ u16 balls;
+
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_BREAKING_NEWS, FALSE) != TRUE)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->breakingNews.kind = TVSHOW_BREAKING_NEWS;
+ show->breakingNews.active = FALSE;
+ balls = 0;
+ for (i = 0; i < 11; i ++)
+ {
+ balls += gBattleResults.catchAttempts[i];
+ }
+ if (gBattleResults.usedMasterBall)
+ {
+ balls ++;
+ }
+ show->breakingNews.location = gMapHeader.regionMapSectionId;
+ StringCopy(show->breakingNews.playerName, gSaveBlock2Ptr->playerName);
+ show->breakingNews.poke1Species = gBattleResults.playerMon1Species;
+ switch (gBattleOutcome)
+ {
+ case BATTLE_LOST:
+ case BATTLE_DREW:
+ show->breakingNews.kind = TVSHOW_OFF_AIR;
+ return;
+ case BATTLE_CAUGHT:
+ show->breakingNews.outcome = 0;
+ break;
+ case BATTLE_WON:
+ show->breakingNews.outcome = 1;
+ break;
+ case BATTLE_RAN:
+ case BATTLE_PLAYER_TELEPORTED:
+ case BATTLE_SAFARI_OUT_OF_BALLS:
+ show->breakingNews.outcome = 2;
+ break;
+ case BATTLE_POKE_FLED:
+ case BATTLE_OPPONENT_TELEPORTED:
+ show->breakingNews.outcome = 3;
+ break;
+ }
+ show->breakingNews.lastOpponentSpecies = gBattleResults.lastOpponentSpecies;
+ switch (show->breakingNews.outcome)
+ {
+ case 0:
+ if (gBattleResults.usedMasterBall)
+ {
+ show->breakingNews.caughtMonBall = ITEM_MASTER_BALL;
+ }
+ else
+ {
+ show->breakingNews.caughtMonBall = gBattleResults.caughtMonBall;
+ }
+ show->breakingNews.balls = balls;
+ break;
+ case 1:
+ show->breakingNews.lastUsedMove = gBattleResults.lastUsedMovePlayer;
+ break;
+ case 2:
+ break;
+ case 3:
+ break;
+ }
+ tv_store_id_3x(show);
+ show->breakingNews.language = gGameLanguage;
+ }
+}
+
+void sub_80EE2CC(void)
+{
+ TVShow *show;
+
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_LOTTO_WINNER, FALSE) != TRUE)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->lottoWinner.kind = TVSHOW_LOTTO_WINNER;
+ show->lottoWinner.active = FALSE;
+ StringCopy(show->lottoWinner.playerName, gSaveBlock2Ptr->playerName);
+ show->lottoWinner.whichPrize = 4 - gSpecialVar_0x8004;
+ show->lottoWinner.item = gSpecialVar_0x8005;
+ tv_store_id_3x(show);
+ show->lottoWinner.language = gGameLanguage;
+ }
+}
+
+void sub_80EE35C(u16 foeSpecies, u16 species, u8 moveIdx, const u16 *movePtr, u16 betterMove)
+{
+ TVShow *show;
+ u8 i;
+ u8 j;
+
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_BATTLE_SEMINAR, FALSE) != TRUE)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->battleSeminar.kind = TVSHOW_BATTLE_SEMINAR;
+ show->battleSeminar.active = FALSE;
+ StringCopy(show->battleSeminar.playerName, gSaveBlock2Ptr->playerName);
+ show->battleSeminar.foeSpecies = foeSpecies;
+ show->battleSeminar.species = species;
+ show->battleSeminar.move = movePtr[moveIdx];
+ for (i = 0, j = 0; i < 4; i ++)
+ {
+ if (i != moveIdx && movePtr[i])
+ {
+ show->battleSeminar.otherMoves[j] = movePtr[i];
+ j ++;
+ }
+ }
+ show->battleSeminar.nOtherMoves = j;
+ show->battleSeminar.betterMove = betterMove;
+ tv_store_id_3x(show);
+ show->battleSeminar.language = gGameLanguage;
+ }
+}
+
+void sub_80EE44C(u8 nMonsCaught, u8 nPkblkUsed)
+{
+ TVShow *show;
+
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_SAFARI_FAN_CLUB, FALSE) != TRUE)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->safariFanClub.kind = TVSHOW_SAFARI_FAN_CLUB;
+ show->safariFanClub.active = FALSE;
+ StringCopy(show->safariFanClub.playerName, gSaveBlock2Ptr->playerName);
+ show->safariFanClub.nMonsCaught = nMonsCaught;
+ show->safariFanClub.nPkblkUsed = nPkblkUsed;
+ tv_store_id_3x(show);
+ show->safariFanClub.language = gGameLanguage;
+ }
+}
+
+void sub_80EE4DC(struct Pokemon *pokemon, u8 ribbonMonDataIdx)
+{
+ TVShow *show;
+
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_CUTIES, FALSE) != TRUE)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->cuties.kind = TVSHOW_CUTIES;
+ show->cuties.active = FALSE;
+ StringCopy(show->cuties.playerName, gSaveBlock2Ptr->playerName);
+ GetMonData(pokemon, MON_DATA_NICKNAME, show->cuties.nickname);
+ StripExtCtrlCodes(show->cuties.nickname);
+ show->cuties.nRibbons = GetRibbonCount(pokemon);
+ show->cuties.selectedRibbon = TV_MonDataIdxToRibbon(ribbonMonDataIdx);
+ tv_store_id_3x(show);
+ show->cuties.language = gGameLanguage;
+ if (show->cuties.language == LANGUAGE_JAPANESE || GetMonData(pokemon, MON_DATA_LANGUAGE) == LANGUAGE_JAPANESE)
+ {
+ show->cuties.pokemonNameLanguage = LANGUAGE_JAPANESE;
+ }
+ else
+ {
+ show->cuties.pokemonNameLanguage = GetMonData(pokemon, MON_DATA_LANGUAGE);
+ }
+ }
+}
+
+u8 GetRibbonCount(struct Pokemon *pokemon)
+{
+ u8 nRibbons;
+
+ nRibbons = 0;
+ nRibbons += GetMonData(pokemon, MON_DATA_COOL_RIBBON);
+ nRibbons += GetMonData(pokemon, MON_DATA_BEAUTY_RIBBON);
+ nRibbons += GetMonData(pokemon, MON_DATA_CUTE_RIBBON);
+ nRibbons += GetMonData(pokemon, MON_DATA_SMART_RIBBON);
+ nRibbons += GetMonData(pokemon, MON_DATA_TOUGH_RIBBON);
+ nRibbons += GetMonData(pokemon, MON_DATA_CHAMPION_RIBBON);
+ nRibbons += GetMonData(pokemon, MON_DATA_WINNING_RIBBON);
+ nRibbons += GetMonData(pokemon, MON_DATA_VICTORY_RIBBON);
+ nRibbons += GetMonData(pokemon, MON_DATA_ARTIST_RIBBON);
+ nRibbons += GetMonData(pokemon, MON_DATA_EFFORT_RIBBON);
+ nRibbons += GetMonData(pokemon, MON_DATA_GIFT_RIBBON_1);
+ nRibbons += GetMonData(pokemon, MON_DATA_GIFT_RIBBON_2);
+ nRibbons += GetMonData(pokemon, MON_DATA_GIFT_RIBBON_3);
+ nRibbons += GetMonData(pokemon, MON_DATA_GIFT_RIBBON_4);
+ nRibbons += GetMonData(pokemon, MON_DATA_GIFT_RIBBON_5);
+ nRibbons += GetMonData(pokemon, MON_DATA_GIFT_RIBBON_6);
+ nRibbons += GetMonData(pokemon, MON_DATA_GIFT_RIBBON_7);
+ return nRibbons;
+}
+
+u8 TV_MonDataIdxToRibbon(u8 monDataIdx)
+{
+ if (monDataIdx == MON_DATA_CHAMPION_RIBBON) return 0;
+ if (monDataIdx == MON_DATA_COOL_RIBBON) return 1;
+ if (monDataIdx == MON_DATA_BEAUTY_RIBBON) return 5;
+ if (monDataIdx == MON_DATA_CUTE_RIBBON) return 9;
+ if (monDataIdx == MON_DATA_SMART_RIBBON) return 13;
+ if (monDataIdx == MON_DATA_TOUGH_RIBBON) return 17;
+ if (monDataIdx == MON_DATA_WINNING_RIBBON) return 21;
+ if (monDataIdx == MON_DATA_VICTORY_RIBBON) return 22;
+ if (monDataIdx == MON_DATA_ARTIST_RIBBON) return 23;
+ if (monDataIdx == MON_DATA_EFFORT_RIBBON) return 24;
+ if (monDataIdx == MON_DATA_GIFT_RIBBON_1) return 25;
+ if (monDataIdx == MON_DATA_GIFT_RIBBON_2) return 26;
+ if (monDataIdx == MON_DATA_GIFT_RIBBON_3) return 27;
+ if (monDataIdx == MON_DATA_GIFT_RIBBON_4) return 28;
+ if (monDataIdx == MON_DATA_GIFT_RIBBON_5) return 29;
+ if (monDataIdx == MON_DATA_GIFT_RIBBON_6) return 30;
+ if (monDataIdx == MON_DATA_GIFT_RIBBON_7) return 31;
+ return 0;
+}
+
+void sub_80EE72C(void)
+{
+ TVShow *show;
+
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1 && HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_TRAINER_FAN_CLUB, FALSE) != TRUE)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->trainerFanClub.kind = TVSHOW_TRAINER_FAN_CLUB;
+ show->trainerFanClub.active = FALSE;
+ StringCopy(show->trainerFanClub.playerName, gSaveBlock2Ptr->playerName);
+ show->trainerFanClub.words[0] = gSaveBlock1Ptr->unk2BB0[0];
+ show->trainerFanClub.words[1] = gSaveBlock1Ptr->unk2BB0[1];
+ tv_store_id_3x(show);
+ show->trainerFanClub.language = gGameLanguage;
+ }
+}
+
+bool8 sub_80EE7C0(void)
+{
+ sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot == -1)
+ {
+ return TRUE;
+ }
+ FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_FAN_CLUB_SPECIAL);
+ if (gScriptResult == TRUE)
+ {
+ return TRUE;
+ }
+ if (gSaveBlock1Ptr->linkBattleRecords[0].name[0] == EOS)
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_80EE818(void)
+{
+ u32 playerId;
+ u8 showIdx;
+ TVShow *shows;
+
+ if (HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_FRONTIER, FALSE) == TRUE)
+ {
+ shows = gSaveBlock1Ptr->tvShows;
+ playerId = GetPlayerIDAsU32();
+ for (showIdx = 5; showIdx < 24; showIdx ++)
+ {
+ if (shows[showIdx].common.kind == TVSHOW_FRONTIER && (playerId & 0xFF) == shows[showIdx].common.trainerIdLo && ((playerId >> 8) & 0xFF) == shows[showIdx].common.trainerIdHi)
+ {
+ DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, showIdx);
+ sub_80EF93C(gSaveBlock1Ptr->tvShows);
+ return TRUE;
+ }
+ }
+ }
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot == -1)
+ {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+void sub_80EE8C8(u16 winStreak, u8 facility)
+{
+ TVShow *show;
+
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->frontier.kind = TVSHOW_FRONTIER;
+ show->frontier.active = FALSE;
+ StringCopy(show->frontier.playerName, gSaveBlock2Ptr->playerName);
+ show->frontier.winStreak = winStreak;
+ show->frontier.facility = facility;
+ switch (facility)
+ {
+ case 1:
+ case 5:
+ case 6:
+ case 7:
+ case 8:
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ case 13:
+ show->frontier.species1 = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES, NULL);
+ show->frontier.species2 = GetMonData(&gPlayerParty[1], MON_DATA_SPECIES, NULL);
+ show->frontier.species3 = GetMonData(&gPlayerParty[2], MON_DATA_SPECIES, NULL);
+ break;
+ case 2:
+ show->frontier.species1 = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES, NULL);
+ show->frontier.species2 = GetMonData(&gPlayerParty[1], MON_DATA_SPECIES, NULL);
+ show->frontier.species3 = GetMonData(&gPlayerParty[2], MON_DATA_SPECIES, NULL);
+ show->frontier.species4 = GetMonData(&gPlayerParty[3], MON_DATA_SPECIES, NULL);
+ break;
+ case 3:
+ show->frontier.species1 = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES, NULL);
+ show->frontier.species2 = GetMonData(&gPlayerParty[1], MON_DATA_SPECIES, NULL);
+ break;
+ case 4:
+ show->frontier.species1 = GetMonData(&gSaveBlock1Ptr->playerParty[gSaveBlock2Ptr->field_CAA[0] - 1], MON_DATA_SPECIES, NULL);
+ show->frontier.species2 = GetMonData(&gSaveBlock1Ptr->playerParty[gSaveBlock2Ptr->field_CAA[1] - 1], MON_DATA_SPECIES, NULL);
+ break;
+ }
+ tv_store_id_3x(show);
+ show->frontier.language = gGameLanguage;
+ }
+}
+
+void sub_80EEA70(void)
+{
+ TVShow *show;
+ u8 strbuf[32];
+
+ if (HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_SECRET_BASE_SECRETS, FALSE) != TRUE)
+ {
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->secretBaseSecrets.kind = TVSHOW_SECRET_BASE_SECRETS;
+ show->secretBaseSecrets.active = FALSE;
+ StringCopy(show->secretBaseSecrets.playerName, gSaveBlock2Ptr->playerName);
+ show->secretBaseSecrets.stepsInBase = VarGet(0x40ec);
+ sub_80E980C();
+ StringCopy(strbuf, gStringVar1);
+ StripExtCtrlCodes(strbuf);
+ StringCopy(show->secretBaseSecrets.baseOwnersName, strbuf);
+ show->secretBaseSecrets.item = VarGet(0x40ed);
+ show->secretBaseSecrets.flags = VarGet(0x40ee) + (VarGet(0x40ef) << 16);
+ tv_store_id_3x(show);
+ show->secretBaseSecrets.language = gGameLanguage;
+ if (show->secretBaseSecrets.language == LANGUAGE_JAPANESE || gSaveBlock1Ptr->secretBases[VarGet(VAR_0x4054)].language == LANGUAGE_JAPANESE)
+ {
+ show->secretBaseSecrets.baseOwnersNameLanguage = LANGUAGE_JAPANESE;
+ }
+ else
+ {
+ show->secretBaseSecrets.baseOwnersNameLanguage = gSaveBlock1Ptr->secretBases[VarGet(VAR_0x4054)].language;
+ }
+ }
+ }
+}
+
+void sub_80EEB98(u16 days)
+{
+ u8 i;
+
+ for (i = 0; i < ARRAY_COUNT(sNumberOneVarsAndThresholds); i ++)
+ {
+ if (VarGet(sNumberOneVarsAndThresholds[i][0]) >= sNumberOneVarsAndThresholds[i][1])
+ {
+ sub_80EEBF4(i);
+ break;
+ }
+ }
+ for (i = 0; i < ARRAY_COUNT(sNumberOneVarsAndThresholds); i ++)
+ {
+ VarSet(sNumberOneVarsAndThresholds[i][0], 0);
+ }
+}
+
+void sub_80EEBF4(u8 actionIdx)
+{
+ TVShow *show;
+
+ HasMixableShowAlreadyBeenSpawnedWithPlayerID(TVSHOW_NUMBER_ONE, TRUE);
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ if (sCurTVShowSlot != -1)
+ {
+ show = &gSaveBlock1Ptr->tvShows[sCurTVShowSlot];
+ show->numberOne.kind = TVSHOW_NUMBER_ONE;
+ show->numberOne.active = FALSE;
+ StringCopy(show->numberOne.playerName, gSaveBlock2Ptr->playerName);
+ show->numberOne.actionIdx = actionIdx;
+ show->numberOne.count = VarGet(sNumberOneVarsAndThresholds[actionIdx][0]);
+ tv_store_id_3x(show);
+ show->numberOne.language = gGameLanguage;
+ }
+}
+
+void sub_80EEC80(void)
+{
+ VarSet(VAR_DAILY_SLOTS, VarGet(VAR_DAILY_SLOTS) + 1);
+}
+
+void sub_80EECA4(void)
+{
+ VarSet(VAR_DAILY_ROULETTE, VarGet(VAR_DAILY_ROULETTE) + 1);
+}
+
+void sub_80EECC8(void)
+{
+ VarSet(VAR_DAILY_WILDS, VarGet(VAR_DAILY_WILDS) + 1);
+}
+
+void sub_80EECEC(void)
+{
+ VarSet(VAR_DAILY_BLENDER, VarGet(VAR_DAILY_BLENDER) + 1);
+}
+
+void sub_80EED10(void)
+{
+ VarSet(VAR_DAILY_PLANTED_BERRIES, VarGet(VAR_DAILY_PLANTED_BERRIES) + 1);
+}
+
+void sub_80EED34(void)
+{
+ VarSet(VAR_DAILY_PICKED_BERRIES, VarGet(VAR_DAILY_PICKED_BERRIES) + gSpecialVar_0x8006);
+}
+
+void sub_80EED60(u16 delta)
+{
+ VarSet(VAR_DAILY_BP, VarGet(VAR_DAILY_BP) + delta);
+}
+
+// PokeNews
+
+void sub_80EED88(void)
+{
+ u8 newsKind;
+
+ if (FlagGet(SYS_GAME_CLEAR))
+ {
+ sCurTVShowSlot = sub_80EEE30(gSaveBlock1Ptr->pokeNews);
+ if (sCurTVShowSlot != -1 && rbernoulli(1, 100) != TRUE)
+ {
+ newsKind = (Random() % 4) + POKENEWS_SLATEPORT;
+ if (sub_80EF0E4(newsKind) != TRUE)
+ {
+ gSaveBlock1Ptr->pokeNews[sCurTVShowSlot].kind = newsKind;
+ gSaveBlock1Ptr->pokeNews[sCurTVShowSlot].days = 4;
+ gSaveBlock1Ptr->pokeNews[sCurTVShowSlot].state = TRUE;
+ }
+ }
+ }
+}
+
+s8 sub_80EEE30(PokeNews *pokeNews)
+{
+ s8 i;
+
+ for (i = 0; i < 16; i ++)
+ {
+ if (pokeNews[i].kind == 0)
+ {
+ return i;
+ }
+ }
+ return -1;
+}
+
+void ClearPokemonNews(void)
+{
+ u8 i;
+
+ for (i = 0; i < 16; i ++)
+ {
+ ClearPokemonNewsI(i);
+ }
+}
+
+void ClearPokemonNewsI(u8 i)
+{
+ gSaveBlock1Ptr->pokeNews[i].kind = POKENEWS_NONE;
+ gSaveBlock1Ptr->pokeNews[i].state = FALSE;
+ gSaveBlock1Ptr->pokeNews[i].days = 0;
+}
+
+void sub_80EEEB8(void)
+{
+ u8 i;
+ u8 j;
+
+ for (i = 0; i < 15; i ++)
+ {
+ if (gSaveBlock1Ptr->pokeNews[i].kind == POKENEWS_NONE)
+ {
+ for (j = i + 1; j < 16; j ++)
+ {
+ if (gSaveBlock1Ptr->pokeNews[j].kind != POKENEWS_NONE)
+ {
+ gSaveBlock1Ptr->pokeNews[i] = gSaveBlock1Ptr->pokeNews[j];
+ ClearPokemonNewsI(j);
+ break;
+ }
+ }
+ }
+ }
+}
+
+u8 FindAnyTVNewsOnTheAir(void)
+{
+ u8 i;
+
+ for (i = 0; i < 16; i ++)
+ {
+ if (gSaveBlock1Ptr->pokeNews[i].kind != POKENEWS_NONE && gSaveBlock1Ptr->pokeNews[i].state == TRUE && gSaveBlock1Ptr->pokeNews[i].days < 3)
+ {
+ return i;
+ }
+ }
+ return -1;
+}
+
+void DoPokeNews(void)
+{
+ u8 i;
+ u16 n;
+
+ i = FindAnyTVNewsOnTheAir();
+ if (i == 0xFF)
+ {
+ gScriptResult = FALSE;
+ }
+ else
+ {
+ if (gSaveBlock1Ptr->pokeNews[i].days == 0)
+ {
+ gSaveBlock1Ptr->pokeNews[i].state = 2;
+ if (gLocalTime.hours < 20)
+ {
+ ShowFieldMessage(sPokeNewsTextGroup_Ongoing[gSaveBlock1Ptr->pokeNews[i].kind]);
+ }
+ else
+ {
+ ShowFieldMessage(sPokeNewsTextGroup_Ending[gSaveBlock1Ptr->pokeNews[i].kind]);
+ }
+ }
+ else
+ {
+ n = gSaveBlock1Ptr->pokeNews[i].days;
+ ConvertIntToDecimalStringN(gStringVar1, n, STR_CONV_MODE_LEFT_ALIGN, 1);
+ gSaveBlock1Ptr->pokeNews[i].state = 0;
+ ShowFieldMessage(sPokeNewsTextGroup_Upcoming[gSaveBlock1Ptr->pokeNews[i].kind]);
+ }
+ gScriptResult = TRUE;
+ }
+}
+
+bool8 GetPriceReduction(u8 newsKind)
+{
+ u8 i;
+
+ if (newsKind == 0)
+ {
+ return FALSE;
+ }
+ for (i = 0; i < 16; i ++)
+ {
+ if (gSaveBlock1Ptr->pokeNews[i].kind == newsKind)
+ {
+ if (gSaveBlock1Ptr->pokeNews[i].state == 2 && IsPriceDiscounted(newsKind))
+ {
+ return TRUE;
+ }
+ return FALSE;
+ }
+ }
+ return FALSE;
+}
+
+bool8 IsPriceDiscounted(u8 newsKind)
+{
+ switch (newsKind)
+ {
+ case POKENEWS_SLATEPORT:
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_SLATEPORT_CITY && gSaveBlock1Ptr->location.mapNum == MAP_ID_SLATEPORT_CITY && gScriptLastTalked == 25)
+ {
+ return TRUE;
+ }
+ return FALSE;
+ case POKENEWS_LILYCOVE:
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP && gSaveBlock1Ptr->location.mapNum == MAP_ID_LILYCOVE_CITY_DEPARTMENT_STORE_ROOFTOP)
+ {
+ return TRUE;
+ }
+ return FALSE;
+ }
+ return TRUE;
+}
+
+bool8 sub_80EF0E4(u8 newsKind)
+{
+ u8 i;
+ if (newsKind == POKENEWS_NONE)
+ {
+ return TRUE;
+ }
+ for (i = 0; i < 16; i ++)
+ {
+ if (gSaveBlock1Ptr->pokeNews[i].kind == newsKind)
+ {
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+void sub_80EF120(u16 days)
+{
+ u8 i;
+
+ for (i = 0; i < 16; i ++)
+ {
+ if (gSaveBlock1Ptr->pokeNews[i].kind != POKENEWS_NONE)
+ {
+ if (gSaveBlock1Ptr->pokeNews[i].days < days)
+ {
+ ClearPokemonNewsI(i);
+ }
+ else
+ {
+ if (gSaveBlock1Ptr->pokeNews[i].state == 0 && FlagGet(SYS_GAME_CLEAR) == TRUE)
+ {
+ gSaveBlock1Ptr->pokeNews[i].state = 1;
+ }
+ gSaveBlock1Ptr->pokeNews[i].days -= days;
+ }
+ }
+ }
+ sub_80EEEB8();
+}
+
+void CopyContestRankToStringVar(u8 varIdx, u8 rank)
+{
+ switch (rank)
+ {
+ case 0: // NORMAL
+ StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[5]);
+ break;
+ case 1: // SUPER
+ StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[6]);
+ break;
+ case 2: // HYPER
+ StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[7]);
+ break;
+ case 3: // MASTER
+ StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[8]);
+ break;
+ }
+}
+
+void CopyContestCategoryToStringVar(u8 varIdx, u8 category)
+{
+ switch (category)
+ {
+ case 0: // COOL
+ StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[0]);
+ break;
+ case 1: // BEAUTY
+ StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[1]);
+ break;
+ case 2: // CUTE
+ StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[2]);
+ break;
+ case 3: // SMART
+ StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[3]);
+ break;
+ case 4: // TOUGH
+ StringCopy(gTVStringVarPtrs[varIdx], gUnknown_0858BAF0[4]);
+ break;
+ }
+}
+
+void SetContestCategoryStringVarForInterview(void)
+{
+ TVShow *show;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ CopyContestCategoryToStringVar(1, show->bravoTrainer.contestCategory);
+}
+
+void TV_PrintIntToStringVar(u8 varIdx, int value)
+{
+ int nDigits;
+
+ nDigits = sub_80EF370(value);
+ ConvertIntToDecimalStringN(gTVStringVarPtrs[varIdx], value, STR_CONV_MODE_LEFT_ALIGN, nDigits);
+}
+
+size_t sub_80EF370(int value)
+{
+ if (value / 10 == 0)
+ {
+ return 1;
+ }
+ if (value / 100 == 0)
+ {
+ return 2;
+ }
+ if (value / 1000 == 0)
+ {
+ return 3;
+ }
+ if (value / 10000 == 0)
+ {
+ return 4;
+ }
+ if (value / 100000 == 0)
+ {
+ return 5;
+ }
+ if (value / 1000000 == 0)
+ {
+ return 6;
+ }
+ if (value / 10000000 == 0)
+ {
+ return 7;
+ }
+ if (value / 100000000 == 0)
+ {
+ return 8;
+ }
+ return 1;
+}
+
+void sub_80EF40C(u8 varIdx, TVShow *show)
+{
+ u8 i;
+ int price;
+
+ price = 0;
+ for (i = 0; i < 3; i ++)
+ {
+ if (show->smartshopperShow.itemIds[i] != ITEM_NONE)
+ {
+ price += itemid_get_market_price(show->smartshopperShow.itemIds[i]) * show->smartshopperShow.itemAmounts[i];
+ }
+ }
+ if (show->smartshopperShow.priceReduced == TRUE)
+ {
+ TV_PrintIntToStringVar(varIdx, price >> 1);
+ }
+ else
+ {
+ TV_PrintIntToStringVar(varIdx, price);
+ }
+}
+
+bool8 HasMixableShowAlreadyBeenSpawnedWithPlayerID(u8 kind, bool8 flag)
+{
+ u32 playerId;
+ TVShow *shows;
+ u8 i;
+
+ shows = gSaveBlock1Ptr->tvShows;
+ playerId = GetPlayerIDAsU32();
+ for (i = 5; i < 24; i ++)
+ {
+ if (shows[i].common.kind == kind && (playerId & 0xFF) == shows[i].common.trainerIdLo && ((playerId >> 8) & 0xFF) == shows[i].common.trainerIdHi)
+ {
+ if (flag == TRUE)
+ {
+ DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, i);
+ sub_80EF93C(gSaveBlock1Ptr->tvShows);
+ }
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+void TV_SortPurchasesByQuantity(void)
+{
+ u8 i;
+ u8 j;
+ u16 tmpId;
+ u16 tmpQn;
+
+ for (i = 0; i < 2; i ++)
+ {
+ for (j = i + 1; j < 3; j ++)
+ {
+ if (gUnknown_02039F80[i].quantity < gUnknown_02039F80[j].quantity)
+ {
+ tmpId = gUnknown_02039F80[i].itemId;
+ tmpQn = gUnknown_02039F80[i].quantity;
+ gUnknown_02039F80[i].itemId = gUnknown_02039F80[j].itemId;
+ gUnknown_02039F80[i].quantity = gUnknown_02039F80[j].quantity;
+ gUnknown_02039F80[j].itemId = tmpId;
+ gUnknown_02039F80[j].quantity = tmpQn;
+ }
+ }
+ }
+}
+
+void FindActiveBroadcastByShowType_SetScriptResult(u8 kind)
+{
+ u8 i;
+ for (i = 0; i < 5; i ++)
+ {
+ if (gSaveBlock1Ptr->tvShows[i].common.kind == kind)
+ {
+ if (gSaveBlock1Ptr->tvShows[i].common.active == TRUE)
+ {
+ gScriptResult = TRUE;
+ }
+ else
+ {
+ DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, i);
+ sub_80EF93C(gSaveBlock1Ptr->tvShows);
+ sub_80EFA88();
+ }
+ return;
+ }
+ }
+ sub_80EFA88();
+}
+
+void InterviewBefore(void)
+{
+ gScriptResult = FALSE;
+ switch (gSpecialVar_0x8005)
+ {
+ case TVSHOW_FAN_CLUB_LETTER:
+ InterviewBefore_FanClubLetter();
+ break;
+ case TVSHOW_RECENT_HAPPENINGS:
+ InterviewBefore_RecentHappenings();
+ break;
+ case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
+ InterviewBefore_PkmnFanClubOpinions();
+ break;
+ case TVSHOW_UNKN_SHOWTYPE_04:
+ InterviewBefore_Dummy();
+ break;
+ case TVSHOW_NAME_RATER_SHOW:
+ InterviewBefore_NameRater();
+ break;
+ case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
+ InterviewBefore_BravoTrainerPkmnProfile();
+ break;
+ case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
+ InterviewBefore_BravoTrainerBTProfile();
+ break;
+ case TVSHOW_CONTEST_LIVE_UPDATES:
+ InterviewBefore_ContestLiveUpdates();
+ break;
+ case TVSHOW_3_CHEERS_FOR_POKEBLOCKS:
+ InterviewBefore_3CheersForPokeblocks();
+ break;
+ case TVSHOW_FAN_CLUB_SPECIAL:
+ InterviewBefore_FanClubSpecial();
+ break;
+ }
+}
+
+void InterviewBefore_FanClubLetter(void)
+{
+ FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_FAN_CLUB_LETTER);
+ if (!gScriptResult)
+ {
+ StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL)]);
+ InitializeEasyChatWordArray(gSaveBlock1Ptr->tvShows[sCurTVShowSlot].fanclubLetter.words, 6);
+ }
+}
+
+void InterviewBefore_RecentHappenings(void)
+{
+ FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_RECENT_HAPPENINGS);
+ if (!gScriptResult)
+ {
+ InitializeEasyChatWordArray(gSaveBlock1Ptr->tvShows[sCurTVShowSlot].recentHappenings.words, 6);
+ }
+}
+
+void InterviewBefore_PkmnFanClubOpinions(void)
+{
+ FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_PKMN_FAN_CLUB_OPINIONS);
+ if (!gScriptResult)
+ {
+ StringCopy(gStringVar1, gSpeciesNames[GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_SPECIES, NULL)]);
+ GetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_NICKNAME, gStringVar2);
+ StringGetEnd10(gStringVar2);
+ InitializeEasyChatWordArray(gSaveBlock1Ptr->tvShows[sCurTVShowSlot].fanclubOpinions.words, 2);
+ }
+}
+
+void InterviewBefore_Dummy(void)
+{
+ gScriptResult = TRUE;
+}
+
+void InterviewBefore_NameRater(void)
+{
+ FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_NAME_RATER_SHOW);
+}
+
+void InterviewBefore_BravoTrainerPkmnProfile(void)
+{
+ FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE);
+ if (!gScriptResult)
+ {
+ InitializeEasyChatWordArray(gSaveBlock1Ptr->tvShows[sCurTVShowSlot].bravoTrainer.words, 2);
+ }
+}
+
+void InterviewBefore_ContestLiveUpdates(void)
+{
+ FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_CONTEST_LIVE_UPDATES);
+}
+
+void InterviewBefore_3CheersForPokeblocks(void)
+{
+ FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_3_CHEERS_FOR_POKEBLOCKS);
+}
+
+void InterviewBefore_BravoTrainerBTProfile(void)
+{
+ FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE);
+ if (!gScriptResult)
+ {
+ InitializeEasyChatWordArray(gSaveBlock1Ptr->tvShows[sCurTVShowSlot].bravoTrainerTower.words, 1);
+ }
+}
+
+void InterviewBefore_FanClubSpecial(void)
+{
+ FindActiveBroadcastByShowType_SetScriptResult(TVSHOW_FAN_CLUB_SPECIAL);
+ if (!gScriptResult)
+ {
+ InitializeEasyChatWordArray(gSaveBlock1Ptr->tvShows[sCurTVShowSlot].fanClubSpecial.words, 1);
+ }
+}
+
+bool8 sub_80EF88C(u8 monIdx)
+{
+ struct Pokemon *pokemon;
+ u8 language;
+
+ pokemon = &gPlayerParty[monIdx];
+ GetMonData(pokemon, MON_DATA_NICKNAME, gStringVar1);
+ language = GetMonData(pokemon, MON_DATA_LANGUAGE, &language);
+ if (language == LANGUAGE_ENGLISH && !StringCompare(gSpeciesNames[GetMonData(pokemon, MON_DATA_SPECIES, NULL)], gStringVar1))
+ {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+bool8 sub_80EF8F8(void)
+{
+ return sub_80EF88C(GetLeadMonIndex());
+}
+
+void DeleteTVShowInArrayByIdx(TVShow *shows, u8 idx)
+{
+ u8 i;
+
+ shows[idx].common.kind = TVSHOW_OFF_AIR;
+ shows[idx].common.active = FALSE;
+ for (i = 0; i < 34; i ++)
+ {
+ shows[idx].common.pad02[i] = 0;
+ }
+}
+
+void sub_80EF93C(TVShow *shows)
+{
+ u8 i;
+ u8 j;
+
+ for (i = 0; i < 4; i ++)
+ {
+ if (shows[i].common.kind == TVSHOW_OFF_AIR)
+ {
+ for (j = i + 1; j < 5; j ++)
+ {
+ if (shows[j].common.kind != TVSHOW_OFF_AIR)
+ {
+ shows[i] = shows[j];
+ DeleteTVShowInArrayByIdx(shows, j);
+ break;
+ }
+ }
+ }
+ }
+ for (i = 5; i < 24; i ++)
+ {
+ if (shows[i].common.kind == TVSHOW_OFF_AIR)
+ {
+ for (j = i + 1; j < 24; j ++)
+ {
+ if (shows[j].common.kind != TVSHOW_OFF_AIR)
+ {
+ shows[i] = shows[j];
+ DeleteTVShowInArrayByIdx(shows, j);
+ break;
+ }
+ }
+ }
+ }
+}
+
+u16 TV_GetSomeOtherSpeciesAlreadySeenByPlayer_AndPrintName(u8 varIdx, u16 passedSpecies)
+{
+ u16 species;
+
+ species = TV_GetSomeOtherSpeciesAlreadySeenByPlayer(passedSpecies);
+ StringCopy(gTVStringVarPtrs[varIdx], gSpeciesNames[species]);
+ return species;
+}
+
+u16 TV_GetSomeOtherSpeciesAlreadySeenByPlayer(u16 passedSpecies)
+{
+ u16 species;
+ u16 initSpecies;
+
+ species = (Random() % (NUM_SPECIES - 1)) + 1;
+ initSpecies = species;
+ while (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), 0) != 1 || species == passedSpecies)
+ {
+ if (species == 1)
+ {
+ species = NUM_SPECIES - 1;
+ }
+ else
+ {
+ species --;
+ }
+ if (species == initSpecies)
+ {
+ species = passedSpecies;
+ return species;
+ }
+ };
+ return species;
+}
+
+void sub_80EFA88(void)
+{
+ sCurTVShowSlot = FindEmptyTVSlotWithinFirstFiveShowsOfArray(gSaveBlock1Ptr->tvShows);
+ gSpecialVar_0x8006 = sCurTVShowSlot;
+ if (sCurTVShowSlot == -1)
+ {
+ gScriptResult = TRUE;
+ }
+ else
+ {
+ gScriptResult = FALSE;
+ }
+}
+
+s8 FindEmptyTVSlotWithinFirstFiveShowsOfArray(TVShow *shows)
+{
+ u8 i;
+
+ for (i = 0; i < 5; i ++)
+ {
+ if (shows[i].common.kind == TVSHOW_OFF_AIR)
+ {
+ return i;
+ }
+ }
+ return -1;
+}
+
+s8 FindEmptyTVSlotBeyondFirstFiveShowsOfArray(TVShow *shows)
+{
+ s8 i;
+
+ for (i = 5; i < 24; i ++)
+ {
+ if (shows[i].common.kind == TVSHOW_OFF_AIR)
+ {
+ return i;
+ }
+ }
+ return -1;
+}
+
+bool8 TV_BernoulliTrial(u16 ratio)
+{
+ if (Random() <= ratio)
+ {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+void TV_FanClubLetter_RandomWordToStringVar3(TVShow *show)
+{
+ u8 i;
+
+ i = Random() % 6;
+ while (TRUE)
+ {
+ if (i == 6)
+ {
+ i = 0;
+ }
+ if (show->fanclubLetter.words[i] != 0xFFFF)
+ {
+ break;
+ }
+ i ++;
+ }
+ CopyEasyChatWord(gStringVar3, show->fanclubLetter.words[i]);
+}
+
+u8 TV_GetNicknameSumMod8(TVShow *show)
+{
+ u8 i;
+ u16 ct;
+
+ ct = 0;
+ for (i = 0; i < 11; i ++)
+ {
+ if (show->nameRaterShow.pokemonName[i] == EOS)
+ {
+ break;
+ }
+ ct += show->nameRaterShow.pokemonName[i];
+ }
+ return ct & 7;
+}
+
+void TV_GetNicknameSubstring(u8 varIdx, u8 whichPosition, u8 charParam, u16 whichString, u16 species, TVShow *show)
+{
+ u8 buff[16];
+ u8 i;
+ u16 strlen;
+
+ for (i = 0; i < 3; i ++)
+ {
+ buff[i] = EOS;
+ }
+ if (whichString == 0)
+ {
+ strlen = StringLength(show->nameRaterShow.trainerName);
+ if (charParam == 0)
+ {
+ buff[0] = show->nameRaterShow.trainerName[whichPosition];
+ }
+ else if (charParam == 1)
+ {
+ buff[0] = show->nameRaterShow.trainerName[strlen - whichPosition];
+ }
+ else if (charParam == 2)
+ {
+ buff[0] = show->nameRaterShow.trainerName[whichPosition];
+ buff[1] = show->nameRaterShow.trainerName[whichPosition + 1];
+ }
+ else
+ {
+ buff[0] = show->nameRaterShow.trainerName[strlen - (whichPosition + 2)];
+ buff[1] = show->nameRaterShow.trainerName[strlen - (whichPosition + 1)];
+ }
+ ConvertInternationalString(buff, show->nameRaterShow.language);
+ }
+ else if (whichString == 1)
+ {
+ strlen = StringLength(show->nameRaterShow.pokemonName);
+ if (charParam == 0)
+ {
+ buff[0] = show->nameRaterShow.pokemonName[whichPosition];
+ }
+ else if (charParam == 1)
+ {
+ buff[0] = show->nameRaterShow.pokemonName[strlen - whichPosition];
+ }
+ else if (charParam == 2)
+ {
+ buff[0] = show->nameRaterShow.pokemonName[whichPosition];
+ buff[1] = show->nameRaterShow.pokemonName[whichPosition + 1];
+ }
+ else
+ {
+ buff[0] = show->nameRaterShow.pokemonName[strlen - (whichPosition + 2)];
+ buff[1] = show->nameRaterShow.pokemonName[strlen - (whichPosition + 1)];
+ }
+ ConvertInternationalString(buff, show->nameRaterShow.pokemonNameLanguage);
+ }
+ else
+ {
+ strlen = StringLength(gSpeciesNames[species]);
+ if (charParam == 0)
+ {
+ buff[0] = gSpeciesNames[species][whichPosition];
+ }
+ else if (charParam == 1)
+ {
+ buff[0] = gSpeciesNames[species][strlen - whichPosition];
+ }
+ else if (charParam == 2)
+ {
+ buff[0] = gSpeciesNames[species][whichPosition];
+ buff[1] = gSpeciesNames[species][whichPosition + 1];
+ }
+ else
+ {
+ buff[0] = gSpeciesNames[species][strlen - (whichPosition + 2)];
+ buff[1] = gSpeciesNames[species][strlen - (whichPosition + 1)];
+ }
+ }
+ StringCopy(gTVStringVarPtrs[varIdx], buff);
+}
+
+bool8 TV_IsScriptShowKindAlreadyInQueue(void)
+{
+ u8 i;
+
+ for (i = 0; i < 5; i ++)
+ {
+ if (gSaveBlock1Ptr->tvShows[i].common.kind == gSpecialVar_0x8004)
+ {
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+bool8 TV_PutNameRaterShowOnTheAirIfNicnkameChanged(void)
+{
+ GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar1);
+ if (!StringCompare(gStringVar3, gStringVar1))
+ {
+ return FALSE;
+ }
+ PutNameRaterShowOnTheAir();
+ return TRUE;
+}
+
+void ChangePokemonNickname(void)
+{
+ void ChangePokemonNickname_CB(void);
+
+ GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar3);
+ GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar2);
+ DoNamingScreen(3, gStringVar2, GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_SPECIES, NULL), GetMonGender(&gPlayerParty[gSpecialVar_0x8004]), GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_PERSONALITY, NULL), ChangePokemonNickname_CB);
+}
+
+void ChangePokemonNickname_CB(void)
+{
+ SetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar2);
+ c2_exit_to_overworld_1_continue_scripts_restart_music();
+}
+
+void ChangeBoxPokemonNickname(void)
+{
+ struct BoxPokemon *boxMon;
+
+ boxMon = GetBoxedMonPtr(gSpecialVar_0x8012, gSpecialVar_0x8013);
+ GetBoxMonData(boxMon, MON_DATA_NICKNAME, gStringVar3);
+ GetBoxMonData(boxMon, MON_DATA_NICKNAME, gStringVar2);
+ DoNamingScreen(3, gStringVar2, GetBoxMonData(boxMon, MON_DATA_SPECIES, NULL), GetBoxMonGender(boxMon), GetBoxMonData(boxMon, MON_DATA_PERSONALITY, NULL), ChangeBoxPokemonNickname_CB);
+}
+
+void ChangeBoxPokemonNickname_CB(void)
+{
+ SetBoxMonNickFromAnyBox(gSpecialVar_0x8012, gSpecialVar_0x8013, gStringVar2);
+ c2_exit_to_overworld_1_continue_scripts_restart_music();
+}
+
+void TV_CopyNicknameToStringVar1AndEnsureTerminated(void)
+{
+ GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar1);
+ StringGetEnd10(gStringVar1);
+}
+
+void TV_CheckMonOTIDEqualsPlayerID(void)
+{
+ if (GetPlayerIDAsU32() == GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_OT_ID, NULL))
+ {
+ gScriptResult = FALSE;
+ }
+ else
+ {
+ gScriptResult = TRUE;
+ }
+}
+
+u8 GetTVChannelByShowType(u8 kind)
+{
+ if (kind == TVSHOW_OFF_AIR)
+ {
+ return 0;
+ }
+ if (kind >= TVSHOW_FAN_CLUB_LETTER && kind < TVSHOW_POKEMON_TODAY_CAUGHT)
+ {
+ return 2;
+ }
+ if (kind >= TVSHOW_POKEMON_TODAY_CAUGHT && kind < TVSHOW_MASS_OUTBREAK)
+ {
+ return 3;
+ }
+ if (kind >= TVSHOW_MASS_OUTBREAK && kind < 61)
+ {
+ return 4;
+ }
+ return 0;
+}
+
+u32 GetPlayerIDAsU32(void)
+{
+ return (gSaveBlock2Ptr->playerTrainerId[3] << 24) | (gSaveBlock2Ptr->playerTrainerId[2] << 16) | (gSaveBlock2Ptr->playerTrainerId[1] << 8) | gSaveBlock2Ptr->playerTrainerId[0];
+}
+
+u8 CheckForBigMovieOrEmergencyNewsOnTV(void)
+{
+ if (gSaveBlock1Ptr->location.mapGroup != MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F)
+ {
+ return 0;
+ }
+ if (gSaveBlock2Ptr->playerGender == MALE)
+ {
+ if (gSaveBlock1Ptr->location.mapNum != MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F)
+ {
+ return 0;
+ }
+ }
+ else
+ {
+ if (gSaveBlock1Ptr->location.mapNum != MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_1F)
+ {
+ return 0;
+ }
+ }
+ if (FlagGet(SYS_TV_LATI) == TRUE)
+ {
+ return 1;
+ }
+ if (FlagGet(SYS_TV_HOME) == TRUE)
+ {
+ return 2;
+ }
+ return 1;
+}
+
+void GetMomOrDadStringForTVMessage(void)
+{
+ if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F)
+ {
+ if (gSaveBlock2Ptr->playerGender == MALE)
+ {
+ if (gSaveBlock1Ptr->location.mapNum == MAP_ID_LITTLEROOT_TOWN_BRENDANS_HOUSE_1F)
+ {
+ StringCopy(gStringVar1, gText_Mom);
+ VarSet(VAR_0x4003, 1);
+ }
+ }
+ else
+ {
+ if (gSaveBlock1Ptr->location.mapNum == MAP_ID_LITTLEROOT_TOWN_MAYS_HOUSE_1F)
+ {
+ StringCopy(gStringVar1, gText_Mom);
+ VarSet(VAR_0x4003, 1);
+ }
+ }
+ }
+ if (VarGet(VAR_0x4003) == 1)
+ {
+ StringCopy(gStringVar1, gText_Mom);
+ }
+ else if (VarGet(VAR_0x4003) == 2)
+ {
+ StringCopy(gStringVar1, gText_Dad);
+ }
+ else if (VarGet(VAR_0x4003) > 2)
+ {
+ if (VarGet(VAR_0x4003) % 2 == 0)
+ StringCopy(gStringVar1, gText_Mom);
+ else
+ StringCopy(gStringVar1, gText_Dad);
+ }
+ else
+ {
+ if (Random() % 2 != 0)
+ {
+ StringCopy(gStringVar1, gText_Mom);
+ VarSet(VAR_0x4003, 1);
+ }
+ else
+ {
+ StringCopy(gStringVar1, gText_Dad);
+ VarSet(VAR_0x4003, 2);
+ }
+ }
+}
+
+void sub_80F01B8(void)
+{
+ VarSet(VAR_0x40BC, 0);
+ RemoveFieldObjectByLocalIdAndMap(5, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
+ FlagSet(0x396);
+}
+
+void sub_80F01E8(void *src, u32 size, u8 masterIdx)
+{
+ u8 i;
+ u16 version;
+ TVShow (*rmBuffer2)[4][25];
+ TVShow (*rmBuffer)[4][25];
+
+ rmBuffer2 = malloc(4 * 25 * sizeof(TVShow));
+ if (rmBuffer2 != NULL)
+ {
+ for (i = 0; i < 4; i ++)
+ {
+ memcpy((*rmBuffer2)[i], src + i * size, sizeof((*rmBuffer2)[i]));
+ }
+ rmBuffer = rmBuffer2;
+ for (i = 0; i < GetLinkPlayerCount(); i ++)
+ {
+ version = (u8)gLinkPlayers[i].version;
+ if (version == VERSION_RUBY || version == VERSION_SAPPHIRE)
+ {
+ sub_80F1254((*rmBuffer)[i]);
+ }
+ else if (version == VERSION_EMERALD && gLinkPlayers[i].language == LANGUAGE_JAPANESE)
+ {
+ sub_80F12A4((*rmBuffer)[i]);
+ }
+ }
+ switch (masterIdx)
+ {
+ case 0:
+ sub_80F0358(gSaveBlock1Ptr->tvShows, (*rmBuffer)[1], (*rmBuffer)[2], (*rmBuffer)[3]);
+ break;
+ case 1:
+ sub_80F0358((*rmBuffer)[0], gSaveBlock1Ptr->tvShows, (*rmBuffer)[2], (*rmBuffer)[3]);
+ break;
+ case 2:
+ sub_80F0358((*rmBuffer)[0], (*rmBuffer)[1], gSaveBlock1Ptr->tvShows, (*rmBuffer)[3]);
+ break;
+ case 3:
+ sub_80F0358((*rmBuffer)[0], (*rmBuffer)[1], (*rmBuffer)[2], gSaveBlock1Ptr->tvShows);
+ break;
+ }
+ sub_80EF93C(gSaveBlock1Ptr->tvShows);
+ sub_80F0C04();
+ sub_80EF93C(gSaveBlock1Ptr->tvShows);
+ sub_80F0708();
+ sub_80F0B64();
+ free(rmBuffer2);
+ }
+}
+
+void sub_80F0358(TVShow player1[25], TVShow player2[25], TVShow player3[25], TVShow player4[25])
+{
+ u8 i;
+ u8 j;
+ TVShow **argslist[4];
+
+ argslist[0] = &player1;
+ argslist[1] = &player2;
+ argslist[2] = &player3;
+ argslist[3] = &player4;
+ sTVShowMixingNumPlayers = GetLinkPlayerCount();
+ while (1)
+ {
+ for (i = 0; i < sTVShowMixingNumPlayers; i ++)
+ {
+ if (i == 0)
+ {
+ sRecordMixingPartnersWithoutShowsToShare = i;
+ }
+ sTVShowMixingCurSlot = sub_80F06D0(argslist[i][0]);
+ if (sTVShowMixingCurSlot == -1)
+ {
+ sRecordMixingPartnersWithoutShowsToShare ++;
+ if (sRecordMixingPartnersWithoutShowsToShare == sTVShowMixingNumPlayers)
+ {
+ return;
+ }
+ }
+ else
+ {
+ for (j = 0; j < sTVShowMixingNumPlayers - 1; j ++)
+ {
+ sCurTVShowSlot = FindEmptyTVSlotBeyondFirstFiveShowsOfArray(argslist[(i + j + 1) % sTVShowMixingNumPlayers][0]);
+ if (sCurTVShowSlot != -1
+ && sub_80F049C(&argslist[(i + j + 1) % sTVShowMixingNumPlayers][0], &argslist[i][0], (i + j + 1) % sTVShowMixingNumPlayers) == 1)
+ {
+ break;
+ }
+ }
+ if (j == sTVShowMixingNumPlayers - 1)
+ {
+ DeleteTVShowInArrayByIdx(argslist[i][0], sTVShowMixingCurSlot);
+ }
+ }
+ }
+ }
+}
+
+bool8 sub_80F049C(TVShow *dest[25], TVShow *src[25], u8 idx)
+{
+ u8 value;
+ u8 switchval;
+ TVShow *tv1;
+ TVShow *tv2;
+
+ tv1 = *dest;
+ tv2 = *src;
+ value = FALSE;
+ switchval = GetTVChannelByShowType(tv2[sTVShowMixingCurSlot].common.kind);
+ switch (switchval)
+ {
+ case 2:
+ value = sub_80F0580(&tv1[sCurTVShowSlot], &tv2[sTVShowMixingCurSlot], idx);
+ break;
+ case 3:
+ value = sub_80F05E8(&tv1[sCurTVShowSlot], &tv2[sTVShowMixingCurSlot], idx);
+ break;
+ case 4:
+ value = sub_80F0668(&tv1[sCurTVShowSlot], &tv2[sTVShowMixingCurSlot], idx);
+ break;
+ }
+ if (value == TRUE)
+ {
+ DeleteTVShowInArrayByIdx(tv2, sTVShowMixingCurSlot);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+u8 sub_80F0580(TVShow *tv1, TVShow *tv2, u8 idx)
+{
+ u32 linkTrainerId = GetLinkPlayerTrainerId(idx);
+
+ if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi)
+ {
+ return FALSE;
+ }
+ tv2->common.trainerIdLo = tv2->common.srcTrainerIdLo;
+ tv2->common.trainerIdHi = tv2->common.srcTrainerIdHi;
+ tv2->common.srcTrainerIdLo = linkTrainerId & 0xFF;
+ tv2->common.srcTrainerIdHi = linkTrainerId >> 8;
+ *tv1 = *tv2;
+ tv1->common.active = TRUE;
+ return TRUE;
+}
+
+u8 sub_80F05E8(TVShow *tv1, TVShow *tv2, u8 idx)
+{
+ u32 linkTrainerId = GetLinkPlayerTrainerId(idx);
+ if ((linkTrainerId & 0xFF) == tv2->common.srcTrainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.srcTrainerIdHi)
+ {
+ return FALSE;
+ }
+ if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi)
+ {
+ return FALSE;
+ }
+ tv2->common.srcTrainerIdLo = tv2->common.srcTrainerId2Lo;
+ tv2->common.srcTrainerIdHi = tv2->common.srcTrainerId2Hi;
+ tv2->common.srcTrainerId2Lo = linkTrainerId & 0xFF;
+ tv2->common.srcTrainerId2Hi = linkTrainerId >> 8;
+ *tv1 = *tv2;
+ tv1->common.active = TRUE;
+ return TRUE;
+}
+
+u8 sub_80F0668(TVShow *tv1, TVShow *tv2, u8 idx)
+{
+ u32 linkTrainerId = GetLinkPlayerTrainerId(idx);
+ if ((linkTrainerId & 0xFF) == tv2->common.trainerIdLo && ((linkTrainerId >> 8) & 0xFF) == tv2->common.trainerIdHi)
+ {
+ return FALSE;
+ }
+ tv2->common.trainerIdLo = tv2->common.srcTrainerIdLo;
+ tv2->common.trainerIdHi = tv2->common.srcTrainerIdHi;
+ tv2->common.srcTrainerIdLo = linkTrainerId & 0xFF;
+ tv2->common.srcTrainerIdHi = linkTrainerId >> 8;
+ *tv1 = *tv2;
+ tv1->common.active = TRUE;
+ tv1->massOutbreak.daysLeft = 1;
+ return TRUE;
+}
+
+s8 sub_80F06D0(TVShow *tvShows)
+{
+ u8 i;
+
+ for (i = 0; i < 24; i ++)
+ {
+ if (tvShows[i].common.active == FALSE && (u8)(tvShows[i].common.kind - 1) < 60)
+ {
+ return i;
+ }
+ }
+ return -1;
+}
+
+#ifdef NONMATCHING
+void sub_80F0708(void) // FIXME: register allocation shenanigans
+{
+ u16 i;
+ TVShow *show;
+
+ for (i = 0; i < 24; i ++)
+ {
+ switch (gSaveBlock1Ptr->tvShows[i].common.kind)
+ {
+ case TVSHOW_CONTEST_LIVE_UPDATES:
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->contestLiveUpdates.species, i);
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->contestLiveUpdates.winningSpecies, i);
+ break;
+ case TVSHOW_3_CHEERS_FOR_POKEBLOCKS:
+ break;
+ case TVSHOW_BATTLE_UPDATE:
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->battleUpdate.species2, i);
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->battleUpdate.species, i);
+ break;
+ case TVSHOW_FAN_CLUB_SPECIAL:
+ break;
+ case TVSHOW_CONTEST_LIVE_UPDATES_2:
+ break;
+
+ case TVSHOW_OFF_AIR:
+ break;
+ case TVSHOW_FAN_CLUB_LETTER:
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->fanclubLetter.species, i);
+ break;
+ case TVSHOW_RECENT_HAPPENINGS:
+ break;
+ case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->fanclubOpinions.species, i);
+ break;
+ case TVSHOW_UNKN_SHOWTYPE_04:
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->unkShow04.var06, i);
+ break;
+ case TVSHOW_NAME_RATER_SHOW:
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->nameRaterShow.species, i);
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->nameRaterShow.randomSpecies, i);
+ break;
+ case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->bravoTrainer.species, i);
+ break;
+ case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->bravoTrainerTower.species, i);
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->bravoTrainerTower.defeatedSpecies, i);
+ break;
+
+ case TVSHOW_POKEMON_TODAY_CAUGHT:
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->pokemonToday.species, i);
+ break;
+ case TVSHOW_SMART_SHOPPER:
+ break;
+ case TVSHOW_POKEMON_TODAY_FAILED:
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->pokemonTodayFailed.species, i);
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->pokemonTodayFailed.species2, i);
+ break;
+ case TVSHOW_FISHING_ADVICE:
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->pokemonAngler.species, i);
+ break;
+ case TVSHOW_WORLD_OF_MASTERS:
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->worldOfMasters.species, i);
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->worldOfMasters.caughtPoke, i);
+ break;
+
+ case TVSHOW_TODAYS_RIVAL_TRAINER:
+ break;
+ case TVSHOW_TREND_WATCHER:
+ break;
+ case TVSHOW_TREASURE_INVESTIGATORS:
+ break;
+ case TVSHOW_FIND_THAT_GAMER:
+ break;
+ case TVSHOW_BREAKING_NEWS:
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->breakingNews.lastOpponentSpecies, i);
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->breakingNews.poke1Species, i);
+ break;
+ case TVSHOW_SECRET_BASE_VISIT:
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->secretBaseVisit.species, i);
+ break;
+ case TVSHOW_LOTTO_WINNER:
+ break;
+ case TVSHOW_BATTLE_SEMINAR:
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->battleSeminar.species, i);
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->battleSeminar.foeSpecies, i);
+ break;
+ case TVSHOW_TRAINER_FAN_CLUB:
+ break;
+ case TVSHOW_CUTIES:
+ break;
+ case TVSHOW_FRONTIER:
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->frontier.species1, i);
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->frontier.species2, i);
+ switch ((&gSaveBlock1Ptr->tvShows[i])->frontier.facility)
+ {
+ case 3:
+ case 4:
+ break;
+ case 1:
+ case 5 ... 13:
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->frontier.species3, i);
+ break;
+ case 2:
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->frontier.species3, i);
+ sub_80F0B24((&gSaveBlock1Ptr->tvShows[i])->frontier.species4, i);
+ break;
+ }
+ break;
+ case TVSHOW_NUMBER_ONE:
+ break;
+ case TVSHOW_SECRET_BASE_SECRETS:
+ break;
+ case TVSHOW_SAFARI_FAN_CLUB:
+ break;
+
+ case TVSHOW_MASS_OUTBREAK:
+ break;
+
+ default:
+ sub_80F0B00(i);
+ break;
+ }
+ }
+}
+#else
+__attribute__((naked)) void sub_80F0708(void)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r9\n"
+ "\tmov r6, r8\n"
+ "\tpush {r6,r7}\n"
+ "\tsub sp, 0x8\n"
+ "\tmovs r0, 0\n"
+ "\tmov r9, r0\n"
+ "_080F0716:\n"
+ "\tldr r3, =gSaveBlock1Ptr\n"
+ "\tldr r1, [r3]\n"
+ "\tmov r4, r9\n"
+ "\tlsls r2, r4, 3\n"
+ "\tadds r0, r2, r4\n"
+ "\tlsls r0, 2\n"
+ "\tadds r1, r0\n"
+ "\tldr r0, =0x000027cc\n"
+ "\tadds r1, r0\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r7, r2, 0\n"
+ "\tcmp r0, 0x29\n"
+ "\tbls _080F0732\n"
+ "\tb _080F0AD8\n"
+ "_080F0732:\n"
+ "\tlsls r0, 2\n"
+ "\tldr r1, =_080F0748\n"
+ "\tadds r0, r1\n"
+ "\tldr r0, [r0]\n"
+ "\tmov pc, r0\n"
+ "\t.pool\n"
+ "\t.align 2, 0\n"
+ "_080F0748:\n"
+ "\t.4byte _080F0AE2_break @ TVSHOW_OFF_AIR\n"
+ "\t.4byte _080F0848 @ TVSHOW_FAN_CLUB_LETTER\n"
+ "\t.4byte _080F0AE2_break @ TVSHOW_RECENT_HAPPENINGS\n"
+ "\t.4byte _080F0860 @ TVSHOW_PKMN_FAN_CLUB_OPINIONS\n"
+ "\t.4byte _080F0878 @ TVSHOW_UNKN_SHOWTYPE_04\n"
+ "\t.4byte _080F0890 @ TVSHOW_NAME_RATER_SHOW\n"
+ "\t.4byte _080F08BC @ TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE\n"
+ "\t.4byte _080F08D4 @ TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE\n"
+ "\t.4byte _080F07F0 @ TVSHOW_CONTEST_LIVE_UPDATES\n"
+ "\t.4byte _080F0AE2_break @ TVSHOW_3_CHEERS_FOR_POKEBLOCKS\n"
+ "\t.4byte _080F081C @ TVSHOW_BATTLE_UPDATE\n"
+ "\t.4byte _080F0AE2_break @ TVSHOW_FAN_CLUB_SPECIAL\n"
+ "\t.4byte _080F0AE2_break @ TVSHOW_CONTEST_LIVE_UPDATES_2\n"
+ "\t.4byte _080F0AD8 @ \n"
+ "\t.4byte _080F0AD8 @ \n"
+ "\t.4byte _080F0AD8 @ \n"
+ "\t.4byte _080F0AD8 @ \n"
+ "\t.4byte _080F0AD8 @ \n"
+ "\t.4byte _080F0AD8 @ \n"
+ "\t.4byte _080F0AD8 @ \n"
+ "\t.4byte _080F0AD8 @ \n"
+ "\t.4byte _080F0900 @ TVSHOW_POKEMON_TODAY_CAUGHT\n"
+ "\t.4byte _080F0AE2_break @ TVSHOW_SMART_SHOPPER\n"
+ "\t.4byte _080F0918 @ TVSHOW_POKEMON_TODAY_FAILED\n"
+ "\t.4byte _080F0944 @ TVSHOW_FISHING_ADVICE\n"
+ "\t.4byte _080F095C @ TVSHOW_WORLD_OF_MASTERS\n"
+ "\t.4byte _080F0AE2_break @ TVSHOW_TODAYS_RIVAL_TRAINER\n"
+ "\t.4byte _080F0AE2_break @ TVSHOW_TREND_WATCHER\n"
+ "\t.4byte _080F0AE2_break @ TVSHOW_TREASURE_INVESTIGATORS\n"
+ "\t.4byte _080F0AE2_break @ TVSHOW_FIND_THAT_GAMER\n"
+ "\t.4byte _080F0974 @ TVSHOW_BREAKING_NEWS\n"
+ "\t.4byte _080F09A0 @ TVSHOW_SECRET_BASE_VISIT\n"
+ "\t.4byte _080F0AE2_break @ TVSHOW_LOTTO_WINNER\n"
+ "\t.4byte _080F09C0 @ TVSHOW_BATTLE_SEMINAR\n"
+ "\t.4byte _080F0AE2_break @ TVSHOW_TRAINER_FAN_CLUB\n"
+ "\t.4byte _080F0AE2_break @ TVSHOW_CUTIES\n"
+ "\t.4byte _080F09F4 @ TVSHOW_FRONTIER\n"
+ "\t.4byte _080F0AE2_break @ TVSHOW_NUMBER_ONE\n"
+ "\t.4byte _080F0AE2_break @ TVSHOW_SECRET_BASE_SECRETS\n"
+ "\t.4byte _080F0AE2_break @ TVSHOW_SAFARI_FAN_CLUB\n"
+ "\t.4byte _080F0AD8 @ \n"
+ "\t.4byte _080F0AE2_break @ TVSHOW_MASS_OUTBREAK\n"
+ "_080F07F0:\n"
+ "\tldr r0, [r3]\n"
+ "\tmov r1, r9\n"
+ "\tadds r4, r7, r1\n"
+ "\tlsls r4, 2\n"
+ "\tadds r0, r4, r0\n"
+ "\tldr r6, =0x000027cc\n"
+ "\tadds r0, r6\n"
+ "\tldrh r0, [r0, 0x12]\n"
+ "\tlsls r5, r1, 24\n"
+ "\tlsrs r5, 24\n"
+ "\tadds r1, r5, 0\n"
+ "\tstr r3, [sp, 0x4]\n"
+ "\tbl sub_80F0B24\n"
+ "\tldr r3, [sp, 0x4]\n"
+ "\tldr r0, [r3]\n"
+ "\tadds r4, r0\n"
+ "\tadds r4, r6\n"
+ "\tldrh r0, [r4, 0x2]\n"
+ "\tb _080F09E6\n"
+ "\t.pool\n"
+ "_080F081C:\n"
+ "\tldr r0, [r3]\n"
+ "\tmov r2, r9\n"
+ "\tadds r4, r7, r2\n"
+ "\tlsls r4, 2\n"
+ "\tadds r0, r4, r0\n"
+ "\tldr r6, =0x000027cc\n"
+ "\tadds r0, r6\n"
+ "\tldrh r0, [r0, 0x16]\n"
+ "\tlsls r5, r2, 24\n"
+ "\tlsrs r5, 24\n"
+ "\tadds r1, r5, 0\n"
+ "\tstr r3, [sp, 0x4]\n"
+ "\tbl sub_80F0B24\n"
+ "\tldr r3, [sp, 0x4]\n"
+ "\tldr r0, [r3]\n"
+ "\tadds r4, r0\n"
+ "\tadds r4, r6\n"
+ "\tldrh r0, [r4, 0x2]\n"
+ "\tb _080F09E6\n"
+ "\t.pool\n"
+ "_080F0848:\n"
+ "\tldr r0, [r3]\n"
+ "\tmov r4, r9\n"
+ "\tadds r1, r7, r4\n"
+ "\tlsls r1, 2\n"
+ "\tadds r1, r0\n"
+ "\tldr r0, =0x000027cc\n"
+ "\tadds r1, r0\n"
+ "\tldrh r0, [r1, 0x2]\n"
+ "\tb _080F09B0\n"
+ "\t.pool\n"
+ "_080F0860:\n"
+ "\tldr r0, [r3]\n"
+ "\tmov r2, r9\n"
+ "\tadds r1, r7, r2\n"
+ "\tlsls r1, 2\n"
+ "\tadds r1, r0\n"
+ "\tldr r4, =0x000027cc\n"
+ "\tadds r1, r4\n"
+ "\tldrh r0, [r1, 0x2]\n"
+ "\tlsls r1, r2, 24\n"
+ "\tb _080F09B2\n"
+ "\t.pool\n"
+ "_080F0878:\n"
+ "\tldr r0, [r3]\n"
+ "\tmov r2, r9\n"
+ "\tadds r1, r7, r2\n"
+ "\tlsls r1, 2\n"
+ "\tadds r1, r0\n"
+ "\tldr r4, =0x000027cc\n"
+ "\tadds r1, r4\n"
+ "\tldrh r0, [r1, 0x6]\n"
+ "\tlsls r1, r2, 24\n"
+ "\tb _080F09B2\n"
+ "\t.pool\n"
+ "_080F0890:\n"
+ "\tldr r0, [r3]\n"
+ "\tmov r1, r9\n"
+ "\tadds r4, r7, r1\n"
+ "\tlsls r4, 2\n"
+ "\tadds r0, r4, r0\n"
+ "\tldr r6, =0x000027cc\n"
+ "\tadds r0, r6\n"
+ "\tldrh r0, [r0, 0x2]\n"
+ "\tlsls r5, r1, 24\n"
+ "\tlsrs r5, 24\n"
+ "\tadds r1, r5, 0\n"
+ "\tstr r3, [sp, 0x4]\n"
+ "\tbl sub_80F0B24\n"
+ "\tldr r3, [sp, 0x4]\n"
+ "\tldr r0, [r3]\n"
+ "\tadds r4, r0\n"
+ "\tadds r4, r6\n"
+ "\tldrh r0, [r4, 0x1C]\n"
+ "\tb _080F09E6\n"
+ "\t.pool\n"
+ "_080F08BC:\n"
+ "\tldr r0, [r3]\n"
+ "\tmov r2, r9\n"
+ "\tadds r1, r7, r2\n"
+ "\tlsls r1, 2\n"
+ "\tadds r1, r0\n"
+ "\tldr r4, =0x000027cc\n"
+ "\tadds r1, r4\n"
+ "\tldrh r0, [r1, 0x2]\n"
+ "\tlsls r1, r2, 24\n"
+ "\tb _080F09B2\n"
+ "\t.pool\n"
+ "_080F08D4:\n"
+ "\tldr r0, [r3]\n"
+ "\tmov r1, r9\n"
+ "\tadds r4, r7, r1\n"
+ "\tlsls r4, 2\n"
+ "\tadds r0, r4, r0\n"
+ "\tldr r6, =0x000027cc\n"
+ "\tadds r0, r6\n"
+ "\tldrh r0, [r0, 0xA]\n"
+ "\tlsls r5, r1, 24\n"
+ "\tlsrs r5, 24\n"
+ "\tadds r1, r5, 0\n"
+ "\tstr r3, [sp, 0x4]\n"
+ "\tbl sub_80F0B24\n"
+ "\tldr r3, [sp, 0x4]\n"
+ "\tldr r0, [r3]\n"
+ "\tadds r4, r0\n"
+ "\tadds r4, r6\n"
+ "\tldrh r0, [r4, 0x14]\n"
+ "\tb _080F09E6\n"
+ "\t.pool\n"
+ "_080F0900:\n"
+ "\tldr r0, [r3]\n"
+ "\tmov r2, r9\n"
+ "\tadds r1, r7, r2\n"
+ "\tlsls r1, 2\n"
+ "\tadds r1, r0\n"
+ "\tldr r4, =0x000027cc\n"
+ "\tadds r1, r4\n"
+ "\tldrh r0, [r1, 0x10]\n"
+ "\tlsls r1, r2, 24\n"
+ "\tb _080F09B2\n"
+ "\t.pool\n"
+ "_080F0918:\n"
+ "\tldr r0, [r3]\n"
+ "\tmov r1, r9\n"
+ "\tadds r4, r7, r1\n"
+ "\tlsls r4, 2\n"
+ "\tadds r0, r4, r0\n"
+ "\tldr r6, =0x000027cc\n"
+ "\tadds r0, r6\n"
+ "\tldrh r0, [r0, 0xC]\n"
+ "\tlsls r5, r1, 24\n"
+ "\tlsrs r5, 24\n"
+ "\tadds r1, r5, 0\n"
+ "\tstr r3, [sp, 0x4]\n"
+ "\tbl sub_80F0B24\n"
+ "\tldr r3, [sp, 0x4]\n"
+ "\tldr r0, [r3]\n"
+ "\tadds r4, r0\n"
+ "\tadds r4, r6\n"
+ "\tldrh r0, [r4, 0xE]\n"
+ "\tb _080F09E6\n"
+ "\t.pool\n"
+ "_080F0944:\n"
+ "\tldr r0, [r3]\n"
+ "\tmov r2, r9\n"
+ "\tadds r1, r7, r2\n"
+ "\tlsls r1, 2\n"
+ "\tadds r1, r0\n"
+ "\tldr r4, =0x000027cc\n"
+ "\tadds r1, r4\n"
+ "\tldrh r0, [r1, 0x4]\n"
+ "\tlsls r1, r2, 24\n"
+ "\tb _080F09B2\n"
+ "\t.pool\n"
+ "_080F095C:\n"
+ "\tldr r0, [r3]\n"
+ "\tmov r1, r9\n"
+ "\tadds r4, r7, r1\n"
+ "\tlsls r4, 2\n"
+ "\tadds r0, r4, r0\n"
+ "\tldr r6, =0x000027cc\n"
+ "\tadds r0, r6\n"
+ "\tldrh r0, [r0, 0x8]\n"
+ "\tb _080F09D0\n"
+ "\t.pool\n"
+ "_080F0974:\n"
+ "\tldr r0, [r3]\n"
+ "\tmov r2, r9\n"
+ "\tadds r4, r7, r2\n"
+ "\tlsls r4, 2\n"
+ "\tadds r0, r4, r0\n"
+ "\tldr r6, =0x000027cc\n"
+ "\tadds r0, r6\n"
+ "\tldrh r0, [r0, 0x2]\n"
+ "\tlsls r5, r2, 24\n"
+ "\tlsrs r5, 24\n"
+ "\tadds r1, r5, 0\n"
+ "\tstr r3, [sp, 0x4]\n"
+ "\tbl sub_80F0B24\n"
+ "\tldr r3, [sp, 0x4]\n"
+ "\tldr r0, [r3]\n"
+ "\tadds r4, r0\n"
+ "\tadds r4, r6\n"
+ "\tldrh r0, [r4, 0xA]\n"
+ "\tb _080F09E6\n"
+ "\t.pool\n"
+ "_080F09A0:\n"
+ "\tldr r0, [r3]\n"
+ "\tmov r4, r9\n"
+ "\tadds r1, r7, r4\n"
+ "\tlsls r1, 2\n"
+ "\tadds r1, r0\n"
+ "\tldr r0, =0x000027cc\n"
+ "\tadds r1, r0\n"
+ "\tldrh r0, [r1, 0x8]\n"
+ "_080F09B0:\n"
+ "\tlsls r1, r4, 24\n"
+ "_080F09B2:\n"
+ "\tlsrs r1, 24\n"
+ "\tbl sub_80F0B24\n"
+ "\tb _080F0AE2_break\n"
+ "\t.pool\n"
+ "_080F09C0:\n"
+ "\tldr r0, [r3]\n"
+ "\tmov r1, r9\n"
+ "\tadds r4, r7, r1\n"
+ "\tlsls r4, 2\n"
+ "\tadds r0, r4, r0\n"
+ "\tldr r6, =0x000027cc\n"
+ "\tadds r0, r6\n"
+ "\tldrh r0, [r0, 0x6]\n"
+ "_080F09D0:\n"
+ "\tlsls r5, r1, 24\n"
+ "\tlsrs r5, 24\n"
+ "\tadds r1, r5, 0\n"
+ "\tstr r3, [sp, 0x4]\n"
+ "\tbl sub_80F0B24\n"
+ "\tldr r3, [sp, 0x4]\n"
+ "\tldr r0, [r3]\n"
+ "\tadds r4, r0\n"
+ "\tadds r4, r6\n"
+ "\tldrh r0, [r4, 0x4]\n"
+ "_080F09E6:\n"
+ "\tadds r1, r5, 0\n"
+ "\tbl sub_80F0B24\n"
+ "\tb _080F0AE2_break\n"
+ "\t.pool\n"
+ "_080F09F4:\n"
+ "\tldr r0, [r3]\n"
+ "\tmov r2, r9\n"
+ "\tadds r4, r7, r2\n"
+ "\tlsls r4, 2\n"
+ "\tadds r0, r4, r0\n"
+ "\tldr r5, =0x000027cc\n"
+ "\tadds r0, r5\n"
+ "\tldrh r0, [r0, 0x4]\n"
+ "\tlsls r2, 24\n"
+ "\tmov r8, r2\n"
+ "\tlsrs r6, r2, 24\n"
+ "\tadds r1, r6, 0\n"
+ "\tstr r3, [sp, 0x4]\n"
+ "\tbl sub_80F0B24\n"
+ "\tldr r3, [sp, 0x4]\n"
+ "\tldr r0, [r3]\n"
+ "\tadds r0, r4, r0\n"
+ "\tadds r0, r5\n"
+ "\tldrh r0, [r0, 0x6]\n"
+ "\tadds r1, r6, 0\n"
+ "\tbl sub_80F0B24\n"
+ "\tldr r3, [sp, 0x4]\n"
+ "\tldr r0, [r3]\n"
+ "\tadds r4, r0\n"
+ "\tadds r4, r5\n"
+ "\tldrb r0, [r4, 0xD]\n"
+ "\tsubs r0, 0x1\n"
+ "\tmov r6, r8\n"
+ "\tcmp r0, 0xC\n"
+ "\tbhi _080F0AE2_break\n"
+ "\tlsls r0, 2\n"
+ "\tldr r1, =_080F0A48\n"
+ "\tadds r0, r1\n"
+ "\tldr r0, [r0]\n"
+ "\tmov pc, r0\n"
+ "\t.pool\n"
+ "\t.align 2, 0\n"
+ "_080F0A48:\n"
+ "\t.4byte _080F0A7C\n"
+ "\t.4byte _080F0AA0\n"
+ "\t.4byte _080F0AE2_break\n"
+ "\t.4byte _080F0AE2_break\n"
+ "\t.4byte _080F0A7C\n"
+ "\t.4byte _080F0A7C\n"
+ "\t.4byte _080F0A7C\n"
+ "\t.4byte _080F0A7C\n"
+ "\t.4byte _080F0A7C\n"
+ "\t.4byte _080F0A7C\n"
+ "\t.4byte _080F0A7C\n"
+ "\t.4byte _080F0A7C\n"
+ "\t.4byte _080F0A7C\n"
+ "_080F0A7C:\n"
+ "\tldr r0, =gSaveBlock1Ptr\n"
+ "\tldr r1, [r0]\n"
+ "\tmov r4, r9\n"
+ "\tadds r0, r7, r4\n"
+ "\tlsls r0, 2\n"
+ "\tadds r0, r1\n"
+ "\tldr r1, =0x000027cc\n"
+ "\tadds r0, r1\n"
+ "\tldrh r0, [r0, 0x8]\n"
+ "\tlsrs r1, r6, 24\n"
+ "\tbl sub_80F0B24\n"
+ "\tb _080F0AE2_break\n"
+ "\t.pool\n"
+ "_080F0AA0:\n"
+ "\tldr r2, =gSaveBlock1Ptr\n"
+ "\tldr r0, [r2]\n"
+ "\tmov r1, r9\n"
+ "\tadds r4, r7, r1\n"
+ "\tlsls r4, 2\n"
+ "\tadds r0, r4, r0\n"
+ "\tldr r5, =0x000027cc\n"
+ "\tadds r0, r5\n"
+ "\tldrh r0, [r0, 0x8]\n"
+ "\tlsrs r6, 24\n"
+ "\tadds r1, r6, 0\n"
+ "\tstr r2, [sp]\n"
+ "\tbl sub_80F0B24\n"
+ "\tldr r2, [sp]\n"
+ "\tldr r0, [r2]\n"
+ "\tadds r4, r0\n"
+ "\tadds r4, r5\n"
+ "\tldrh r0, [r4, 0xA]\n"
+ "\tadds r1, r6, 0\n"
+ "\tbl sub_80F0B24\n"
+ "\tb _080F0AE2_break\n"
+ "\t.pool\n"
+ "_080F0AD8:\n"
+ "\tmov r2, r9\n"
+ "\tlsls r0, r2, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tbl sub_80F0B00\n"
+ "_080F0AE2_break:\n"
+ "\tmov r0, r9\n"
+ "\tadds r0, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tmov r9, r0\n"
+ "\tcmp r0, 0x17\n"
+ "\tbhi _080F0AF2\n"
+ "\tb _080F0716\n"
+ "_080F0AF2:\n"
+ "\tadd sp, 0x8\n"
+ "\tpop {r3,r4}\n"
+ "\tmov r8, r3\n"
+ "\tmov r9, r4\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0");
+}
+#endif
+
+void sub_80F0B00(u8 showIdx)
+{
+ gSaveBlock1Ptr->tvShows[showIdx].common.active = FALSE;
+}
+
+void sub_80F0B24(u16 species, u8 showIdx)
+{
+ if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), 0) == 0)
+ {
+ gSaveBlock1Ptr->tvShows[showIdx].common.active = FALSE;
+ }
+}
+
+void sub_80F0B64(void)
+{
+ u16 i;
+
+ if (FlagGet(SYS_GAME_CLEAR) != TRUE)
+ {
+ for (i = 0; i < 24; i ++)
+ {
+ if (gSaveBlock1Ptr->tvShows[i].common.kind == TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE)
+ {
+ gSaveBlock1Ptr->tvShows[i].common.active = FALSE;
+ }
+ else if (gSaveBlock1Ptr->tvShows[i].common.kind == TVSHOW_MASS_OUTBREAK)
+ {
+ gSaveBlock1Ptr->tvShows[i].common.active = FALSE;
+ }
+ }
+ }
+}
+
+void sub_80F0BB8(void)
+{
+ u8 i;
+
+ for (i = 0; i < 5; i ++)
+ {
+ if (GetTVChannelByShowType(gSaveBlock1Ptr->tvShows[i].common.kind) == 2)
+ {
+ gSaveBlock1Ptr->tvShows[i].common.active = FALSE;
+ }
+ }
+}
+
+void sub_80F0C04(void)
+{
+ s8 i;
+ s8 ct;
+
+ ct = 0;
+ for (i = 5; i < 24; i ++)
+ {
+ if (gSaveBlock1Ptr->tvShows[i].common.kind == TVSHOW_OFF_AIR)
+ {
+ ct ++;
+ }
+ }
+ for (i = 0; i < 5 - ct; i ++)
+ {
+ DeleteTVShowInArrayByIdx(gSaveBlock1Ptr->tvShows, i + 5);
+ }
+}
+
+void sub_80F0C7C(void *src, u32 size, u8 masterIdx)
+{
+ u8 i;
+ PokeNews (*rmBuffer2)[4][16];
+ PokeNews (*rmBuffer)[4][16];
+
+ rmBuffer2 = malloc(4 * 16 * sizeof(PokeNews));
+ if (rmBuffer2 != NULL)
+ {
+ for (i = 0; i < 4; i ++)
+ {
+ memcpy((*rmBuffer2)[i], src + i * size, sizeof((*rmBuffer2)[i]));
+ }
+ rmBuffer = rmBuffer2;
+ switch (masterIdx)
+ {
+ case 0:
+ sub_80F0D60(gSaveBlock1Ptr->pokeNews, (*rmBuffer)[1], (*rmBuffer)[2], (*rmBuffer)[3]);
+ break;
+ case 1:
+ sub_80F0D60((*rmBuffer)[0], gSaveBlock1Ptr->pokeNews, (*rmBuffer)[2], (*rmBuffer)[3]);
+ break;
+ case 2:
+ sub_80F0D60((*rmBuffer)[0], (*rmBuffer)[1], gSaveBlock1Ptr->pokeNews, (*rmBuffer)[3]);
+ break;
+ case 3:
+ sub_80F0D60((*rmBuffer)[0], (*rmBuffer)[1], (*rmBuffer)[2], gSaveBlock1Ptr->pokeNews);
+ break;
+ }
+ sub_80F0EEC();
+ sub_80F0F24();
+ free(rmBuffer2);
+ }
+}
+
+void sub_80F0D60(PokeNews player1[16], PokeNews player2[16], PokeNews player3[16], PokeNews player4[16])
+{
+ u8 i;
+ u8 j;
+ u8 k;
+ PokeNews **argslist[4];
+
+ argslist[0] = &player1;
+ argslist[1] = &player2;
+ argslist[2] = &player3;
+ argslist[3] = &player4;
+ sTVShowNewsMixingNumPlayers = GetLinkPlayerCount();
+ for (i = 0; i < 16; i ++)
+ {
+ for (j = 0; j < sTVShowNewsMixingNumPlayers; j ++)
+ {
+ sTVShowMixingCurSlot = sub_80F0ECC(*argslist[j], i);
+ if (sTVShowMixingCurSlot != -1)
+ {
+ for (k = 0; k < sTVShowNewsMixingNumPlayers - 1; k++)
+ {
+ sCurTVShowSlot = sub_80EEE30(*argslist[(j + k + 1) % sTVShowNewsMixingNumPlayers]);
+ if (sCurTVShowSlot != -1)
+ {
+ sub_80F0E58(argslist[(j + k + 1) % sTVShowNewsMixingNumPlayers], argslist[j]);
+ }
+ }
+ }
+ }
+ }
+}
+
+void sub_80F0E58(PokeNews *dest[16], PokeNews *src[16])
+{
+ PokeNews *ptr1;
+ PokeNews *ptr2;
+
+ ptr1 = *dest;
+ ptr2 = *src;
+ ptr2 += sTVShowMixingCurSlot;
+ sub_80F0E84(ptr1, ptr2, sCurTVShowSlot);
+}
+
+bool8 sub_80F0E84(PokeNews *dest, PokeNews *src, s8 slot)
+{
+ u8 i;
+ u8 kind;
+
+ if (src->kind == POKENEWS_NONE)
+ {
+ return FALSE;
+ }
+ for (i = 0; i < 16; i ++)
+ {
+ if (dest[i].kind == src->kind)
+ {
+ return FALSE;
+ }
+ }
+ dest[slot].kind = src->kind;
+ dest[slot].state = 1;
+ dest[slot].days = src->days;
+ return TRUE;
+}
+
+s8 sub_80F0ECC(PokeNews *pokeNews, u8 idx)
+{
+ if (pokeNews[idx].kind == POKENEWS_NONE)
+ {
+ return -1;
+ }
+ return idx;
+}
+
+void sub_80F0EEC(void)
+{
+ u8 i;
+
+ for (i = 0; i < 16; i ++)
+ {
+ if (gSaveBlock1Ptr->pokeNews[i].kind > POKENEWS_BLENDMASTER)
+ {
+ ClearPokemonNewsI(i);
+ }
+ }
+ sub_80EEEB8();
+}
+
+void sub_80F0F24(void)
+{
+ u8 i;
+
+ if (FlagGet(SYS_GAME_CLEAR) != TRUE)
+ {
+ for (i = 0; i < 16; i ++)
+ {
+ gSaveBlock1Ptr->pokeNews[i].state = 0;
+ }
+ }
+}
+
+#define tvlangfix(strptr, langptr, langfix) \
+if (IsStringJapanese(strptr)) \
+{ \
+ (langptr) = LANGUAGE_JAPANESE; \
+} \
+else \
+{ \
+ (langptr) = langfix; \
+}
+
+void sub_80F0F64(TVShow *show, u32 language)
+{
+ int i;
+ TVShow **r4;
+
+ r4 = calloc(11, sizeof(TVShow *));
+ for (i = 0; i < 24; i ++)
+ {
+ switch (show[i].common.kind)
+ {
+ case TVSHOW_FAN_CLUB_LETTER:
+ case TVSHOW_RECENT_HAPPENINGS:
+ r4[0] = &show[i];
+ tvlangfix(r4[0]->fanclubLetter.playerName, r4[0]->fanclubLetter.language, language);
+ break;
+ case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
+ r4[1] = &show[i];
+ tvlangfix(r4[1]->fanclubOpinions.playerName, r4[1]->fanclubOpinions.language, language);
+ tvlangfix(r4[1]->fanclubOpinions.nickname, r4[1]->fanclubOpinions.pokemonNameLanguage, language);
+ break;
+ case TVSHOW_POKEMON_TODAY_CAUGHT:
+ r4[6] = &show[i];
+ tvlangfix(r4[6]->pokemonToday.playerName, r4[6]->pokemonToday.language, language);
+ tvlangfix(r4[6]->pokemonToday.nickname, r4[6]->pokemonToday.language2, language);
+ break;
+ case TVSHOW_SMART_SHOPPER:
+ r4[7] = &show[i];
+ tvlangfix(r4[7]->smartshopperShow.playerName, r4[7]->smartshopperShow.language, language);
+ break;
+ case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
+ r4[5] = &show[i];
+ tvlangfix(r4[5]->bravoTrainerTower.trainerName, r4[5]->bravoTrainerTower.language, language);
+ tvlangfix(r4[5]->bravoTrainerTower.pokemonName, r4[5]->bravoTrainerTower.pokemonNameLanguage, language);
+ break;
+ case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
+ r4[4] = &show[i];
+ tvlangfix(r4[4]->bravoTrainer.playerName, r4[4]->bravoTrainer.language, language);
+ tvlangfix(r4[4]->bravoTrainer.pokemonNickname, r4[4]->bravoTrainer.pokemonNameLanguage, language);
+ break;
+ case TVSHOW_NAME_RATER_SHOW:
+ r4[3] = &show[i];
+ tvlangfix(r4[3]->nameRaterShow.trainerName, r4[3]->nameRaterShow.language, language);
+ tvlangfix(r4[3]->nameRaterShow.pokemonName, r4[3]->nameRaterShow.pokemonNameLanguage, language);
+ break;
+ case TVSHOW_POKEMON_TODAY_FAILED:
+ r4[2] = &show[i];
+ tvlangfix(r4[2]->pokemonTodayFailed.playerName, r4[2]->pokemonTodayFailed.language, language);
+ break;
+ case TVSHOW_FISHING_ADVICE:
+ r4[8] = &show[i];
+ tvlangfix(r4[8]->pokemonAngler.playerName, r4[8]->pokemonAngler.language, language);
+ break;
+ case TVSHOW_WORLD_OF_MASTERS:
+ r4[9] = &show[i];
+ tvlangfix(r4[9]->worldOfMasters.playerName, r4[9]->worldOfMasters.language, language);
+ break;
+ case TVSHOW_MASS_OUTBREAK:
+ r4[10] = &show[i];
+ r4[10]->massOutbreak.language = language;
+ break;
+ }
+ }
+ free(r4);
+}
+
+void sub_80F1208(TVShow *shows)
+{
+ TVShow *curShow;
+
+ sub_80F14F8(shows);
+ for (curShow = shows; curShow < shows + 24; curShow ++)
+ {
+ if (curShow->bravoTrainerTower.kind == TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE)
+ {
+ if ((curShow->bravoTrainerTower.language == LANGUAGE_JAPANESE && curShow->bravoTrainerTower.pokemonNameLanguage != LANGUAGE_JAPANESE) || (curShow->bravoTrainerTower.language != LANGUAGE_JAPANESE && curShow->bravoTrainerTower.pokemonNameLanguage == LANGUAGE_JAPANESE))
+ {
+ memset(curShow, 0, sizeof(TVShow));
+ }
+ }
+ }
+}
+
+void sub_80F1254(TVShow *shows)
+{
+ TVShow *curShow;
+
+ for (curShow = shows; curShow < shows + 24; curShow ++)
+ {
+ if (curShow->bravoTrainerTower.kind == TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE)
+ {
+ if (IsStringJapanese(curShow->bravoTrainerTower.pokemonName))
+ {
+ curShow->bravoTrainerTower.pokemonNameLanguage = LANGUAGE_JAPANESE;
+ }
+ else
+ {
+ curShow->bravoTrainerTower.pokemonNameLanguage = LANGUAGE_ENGLISH;
+ }
+ }
+ }
+}
+
+u8 TV_GetStringLanguage(u8 *str)
+{
+ return IsStringJapanese(str) ? LANGUAGE_JAPANESE : LANGUAGE_ENGLISH;
+}
+
+void sub_80F12A4(TVShow *shows)
+{
+ TVShow *curShow;
+
+ for (curShow = shows; curShow < shows + 24; curShow ++)
+ {
+ switch(curShow->common.kind)
+ {
+ case TVSHOW_FAN_CLUB_LETTER:
+ curShow->fanclubLetter.language = TV_GetStringLanguage(curShow->fanclubLetter.playerName);
+ break;
+ case TVSHOW_RECENT_HAPPENINGS:
+ curShow->recentHappenings.language = TV_GetStringLanguage(curShow->recentHappenings.playerName);
+ break;
+ case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
+ curShow->fanclubOpinions.language = TV_GetStringLanguage(curShow->fanclubOpinions.playerName);
+ curShow->fanclubOpinions.pokemonNameLanguage = TV_GetStringLanguage(curShow->fanclubOpinions.nickname);
+ break;
+ case TVSHOW_UNKN_SHOWTYPE_04:
+ curShow->unkShow04.language = TV_GetStringLanguage(curShow->unkShow04.string_0b);
+ break;
+ case TVSHOW_NAME_RATER_SHOW:
+ curShow->nameRaterShow.language = TV_GetStringLanguage(curShow->nameRaterShow.trainerName);
+ curShow->nameRaterShow.pokemonNameLanguage = TV_GetStringLanguage(curShow->nameRaterShow.pokemonName);
+ break;
+ case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
+ curShow->bravoTrainer.language = TV_GetStringLanguage(curShow->bravoTrainer.playerName);
+ curShow->bravoTrainer.pokemonNameLanguage = TV_GetStringLanguage(curShow->bravoTrainer.pokemonNickname);
+ break;
+ case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
+ curShow->bravoTrainerTower.language = TV_GetStringLanguage(curShow->bravoTrainerTower.trainerName);
+ curShow->bravoTrainerTower.pokemonNameLanguage = TV_GetStringLanguage(curShow->bravoTrainerTower.pokemonName);
+ break;
+ case TVSHOW_CONTEST_LIVE_UPDATES:
+ curShow->contestLiveUpdates.language = TV_GetStringLanguage(curShow->contestLiveUpdates.playerName);
+ curShow->contestLiveUpdates.winningTrainerLanguage = TV_GetStringLanguage(curShow->contestLiveUpdates.winningTrainerName);
+ break;
+ case TVSHOW_3_CHEERS_FOR_POKEBLOCKS:
+ curShow->threeCheers.language = TV_GetStringLanguage(curShow->threeCheers.playerName);
+ curShow->threeCheers.worstBlenderLanguage = TV_GetStringLanguage(curShow->threeCheers.worstBlenderName);
+ break;
+ case TVSHOW_BATTLE_UPDATE:
+ curShow->battleUpdate.language = TV_GetStringLanguage(curShow->battleUpdate.playerName);
+ curShow->battleUpdate.linkOpponentLanguage = TV_GetStringLanguage(curShow->battleUpdate.linkOpponentName);
+ break;
+ case TVSHOW_FAN_CLUB_SPECIAL:
+ curShow->fanClubSpecial.language = TV_GetStringLanguage(curShow->fanClubSpecial.playerName);
+ curShow->fanClubSpecial.idolNameLanguage = TV_GetStringLanguage(curShow->fanClubSpecial.idolName);
+ break;
+ case TVSHOW_CONTEST_LIVE_UPDATES_2:
+ curShow->contestLiveUpdates2.language = TV_GetStringLanguage(curShow->contestLiveUpdates2.playerName);
+ curShow->contestLiveUpdates2.pokemonNameLanguage = TV_GetStringLanguage(curShow->contestLiveUpdates2.nickname);
+ break;
+
+ case TVSHOW_POKEMON_TODAY_CAUGHT:
+ curShow->pokemonToday.language = TV_GetStringLanguage(curShow->pokemonToday.playerName);
+ curShow->pokemonToday.language2 = TV_GetStringLanguage(curShow->pokemonToday.nickname);
+ break;
+ case TVSHOW_SMART_SHOPPER:
+ curShow->smartshopperShow.language = TV_GetStringLanguage(curShow->smartshopperShow.playerName);
+ break;
+ case TVSHOW_POKEMON_TODAY_FAILED:
+ curShow->pokemonTodayFailed.language = TV_GetStringLanguage(curShow->pokemonTodayFailed.playerName);
+ break;
+ case TVSHOW_FISHING_ADVICE:
+ curShow->pokemonAngler.language = TV_GetStringLanguage(curShow->pokemonAngler.playerName);
+ break;
+ case TVSHOW_WORLD_OF_MASTERS:
+ curShow->worldOfMasters.language = TV_GetStringLanguage(curShow->worldOfMasters.playerName);
+ break;
+ case TVSHOW_TREND_WATCHER:
+ curShow->trendWatcher.language = TV_GetStringLanguage(curShow->trendWatcher.playerName);
+ break;
+ case TVSHOW_BREAKING_NEWS:
+ curShow->breakingNews.language = TV_GetStringLanguage(curShow->breakingNews.playerName);
+ break;
+ case TVSHOW_BATTLE_SEMINAR:
+ curShow->battleSeminar.language = TV_GetStringLanguage(curShow->battleSeminar.playerName);
+ break;
+ case TVSHOW_FIND_THAT_GAMER:
+ case TVSHOW_TRAINER_FAN_CLUB:
+ curShow->trainerFanClub.language = TV_GetStringLanguage(curShow->trainerFanClub.playerName);
+ break;
+ case TVSHOW_CUTIES:
+ curShow->cuties.language = TV_GetStringLanguage(curShow->cuties.playerName);
+ curShow->cuties.pokemonNameLanguage = TV_GetStringLanguage(curShow->cuties.nickname);
+ break;
+ case TVSHOW_TODAYS_RIVAL_TRAINER:
+ case TVSHOW_SECRET_BASE_VISIT:
+ case TVSHOW_FRONTIER:
+ curShow->rivalTrainer.language = TV_GetStringLanguage(curShow->rivalTrainer.playerName);
+ break;
+ case TVSHOW_TREASURE_INVESTIGATORS:
+ case TVSHOW_LOTTO_WINNER:
+ case TVSHOW_NUMBER_ONE:
+ curShow->treasureInvestigators.language = TV_GetStringLanguage(curShow->treasureInvestigators.playerName);
+ break;
+ case TVSHOW_SECRET_BASE_SECRETS:
+ curShow->secretBaseSecrets.language = TV_GetStringLanguage(curShow->secretBaseSecrets.playerName);
+ curShow->secretBaseSecrets.baseOwnersNameLanguage = TV_GetStringLanguage(curShow->secretBaseSecrets.baseOwnersName);
+ break;
+ case TVSHOW_SAFARI_FAN_CLUB:
+ curShow->safariFanClub.language = TV_GetStringLanguage(curShow->safariFanClub.playerName);
+ break;
+ case TVSHOW_MASS_OUTBREAK:
+ break;
+ }
+ }
+}
+
+void sub_80F14F8(TVShow *shows)
+{
+ int i;
+
+ for (i = 0; i < 24; i ++)
+ {
+ switch (shows[i].common.kind)
+ {
+ case TVSHOW_WORLD_OF_MASTERS:
+ if (shows[i].worldOfMasters.location > 0x58)
+ {
+ memset(&shows[i], 0, sizeof(TVShow));
+ }
+ break;
+ case TVSHOW_POKEMON_TODAY_FAILED:
+ if (shows[i].pokemonTodayFailed.location > 0x58)
+ {
+ memset(&shows[i], 0, sizeof(TVShow));
+ }
+ break;
+ }
+ }
+}
+
+void DoTVShow(void)
+{
+ if (gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004].common.active)
+ {
+ switch (gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004].common.kind)
+ {
+ case TVSHOW_FAN_CLUB_LETTER:
+ DoTVShowPokemonFanClubLetter();
+ break;
+ case TVSHOW_RECENT_HAPPENINGS:
+ DoTVShowRecentHappenings();
+ break;
+ case TVSHOW_PKMN_FAN_CLUB_OPINIONS:
+ DoTVShowPokemonFanClubOpinions();
+ break;
+ case TVSHOW_UNKN_SHOWTYPE_04:
+ DoTVShowDummiedOut();
+ break;
+ case TVSHOW_MASS_OUTBREAK:
+ DoTVShowPokemonNewsMassOutbreak();
+ break;
+ case TVSHOW_BRAVO_TRAINER_POKEMON_PROFILE:
+ DoTVShowBravoTrainerPokemonProfile();
+ break;
+ case TVSHOW_BRAVO_TRAINER_BATTLE_TOWER_PROFILE:
+ DoTVShowBravoTrainerBattleTower();
+ break;
+ case TVSHOW_POKEMON_TODAY_CAUGHT:
+ DoTVShowPokemonTodaySuccessfulCapture();
+ break;
+ case TVSHOW_SMART_SHOPPER:
+ DoTVShowTodaysSmartShopper();
+ break;
+ case TVSHOW_NAME_RATER_SHOW:
+ DoTVShowTheNameRaterShow();
+ break;
+ case TVSHOW_CONTEST_LIVE_UPDATES:
+ DoTVShowPokemonContestLiveUpdates();
+ break;
+ case TVSHOW_BATTLE_UPDATE:
+ DoTVShowPokemonBattleUpdate();
+ break;
+ case TVSHOW_3_CHEERS_FOR_POKEBLOCKS:
+ DoTVShow3CheersForPokeblocks();
+ break;
+ case TVSHOW_POKEMON_TODAY_FAILED:
+ DoTVShowPokemonTodayFailedCapture();
+ break;
+ case TVSHOW_FISHING_ADVICE:
+ DoTVShowPokemonAngler();
+ break;
+ case TVSHOW_WORLD_OF_MASTERS:
+ DoTVShowTheWorldOfMasters();
+ break;
+ case TVSHOW_TODAYS_RIVAL_TRAINER:
+ DoTVShowTodaysRivalTrainer();
+ break;
+ case TVSHOW_TREND_WATCHER:
+ DoTVShowDewfordTrendWatcherNetwork();
+ break;
+ case TVSHOW_TREASURE_INVESTIGATORS:
+ DoTVShowHoennTreasureInvestigators();
+ break;
+ case TVSHOW_FIND_THAT_GAMER:
+ DoTVShowFindThatGamer();
+ break;
+ case TVSHOW_BREAKING_NEWS:
+ DoTVShowBreakingNewsTV();
+ break;
+ case TVSHOW_SECRET_BASE_VISIT:
+ DoTVShowSecretBaseVisit();
+ break;
+ case TVSHOW_LOTTO_WINNER:
+ DoTVShowPokemonLotteryWinnerFlashReport();
+ break;
+ case TVSHOW_BATTLE_SEMINAR:
+ DoTVShowThePokemonBattleSeminar();
+ break;
+ case TVSHOW_FAN_CLUB_SPECIAL:
+ DoTVShowTrainerFanClubSpecial();
+ break;
+ case TVSHOW_TRAINER_FAN_CLUB:
+ DoTVShowTrainerFanClub();
+ break;
+ case TVSHOW_CUTIES:
+ DoTVShowSpotTheCuties();
+ break;
+ case TVSHOW_FRONTIER:
+ DoTVShowPokemonNewsBattleFrontier();
+ break;
+ case TVSHOW_NUMBER_ONE:
+ DoTVShowWhatsNo1InHoennToday();
+ break;
+ case TVSHOW_SECRET_BASE_SECRETS:
+ DoTVShowSecretBaseSecrets();
+ break;
+ case TVSHOW_SAFARI_FAN_CLUB:
+ DoTVShowSafariFanClub();
+ break;
+ case TVSHOW_CONTEST_LIVE_UPDATES_2:
+ DoTVShowPokemonContestLiveUpdates2();
+ break;
+ }
+ }
+}
+
+void DoTVShowBravoTrainerPokemonProfile(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainer.playerName, show->bravoTrainer.language);
+ CopyContestCategoryToStringVar(1, show->bravoTrainer.contestCategory);
+ CopyContestRankToStringVar(2, show->bravoTrainer.contestRank);
+ if (!StringCompare(gSpeciesNames[show->bravoTrainer.species], show->bravoTrainer.pokemonNickname))
+ sTVShowState = 8;
+ else
+ sTVShowState = 1;
+ break;
+ case 1:
+ StringCopy(gStringVar1, gSpeciesNames[show->bravoTrainer.species]);
+ TVShowConvertInternationalString(gStringVar2, show->bravoTrainer.pokemonNickname, show->bravoTrainer.pokemonNameLanguage);
+ CopyContestCategoryToStringVar(2, show->bravoTrainer.contestCategory);
+ sTVShowState = 2;
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainer.playerName, show->bravoTrainer.language);
+ if (show->bravoTrainer.contestResult == 0) // placed first
+ sTVShowState = 3;
+ else
+ sTVShowState = 4;
+ break;
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainer.playerName, show->bravoTrainer.language);
+ CopyEasyChatWord(gStringVar2, show->bravoTrainer.words[0]);
+ TV_PrintIntToStringVar(2, show->bravoTrainer.contestResult + 1);
+ sTVShowState = 5;
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainer.playerName, show->bravoTrainer.language);
+ CopyEasyChatWord(gStringVar2, show->bravoTrainer.words[0]);
+ TV_PrintIntToStringVar(2, show->bravoTrainer.contestResult + 1);
+ sTVShowState = 5;
+ break;
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainer.playerName, show->bravoTrainer.language);
+ CopyContestCategoryToStringVar(1, show->bravoTrainer.contestCategory);
+ CopyEasyChatWord(gStringVar3, show->bravoTrainer.words[1]);
+ if (show->bravoTrainer.move)
+ sTVShowState = 6;
+ else
+ sTVShowState = 7;
+ break;
+ case 6:
+ StringCopy(gStringVar1, gSpeciesNames[show->bravoTrainer.species]);
+ StringCopy(gStringVar2, gMoveNames[show->bravoTrainer.move]);
+ CopyEasyChatWord(gStringVar3, show->bravoTrainer.words[1]);
+ sTVShowState = 7;
+ break;
+ case 7:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainer.playerName, show->bravoTrainer.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainer.species]);
+ TVShowDone();
+ break;
+ case 8:
+ StringCopy(gStringVar1, gSpeciesNames[show->bravoTrainer.species]);
+ sTVShowState = 2;
+ break;
+ }
+ ShowFieldMessage(sTVBravoTrainerTextGroup[state]);
+}
+
+void DoTVShowBravoTrainerBattleTower(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch(state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.trainerName, show->bravoTrainerTower.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainerTower.species]);
+ if (show->bravoTrainerTower.numFights >= 7)
+ sTVShowState = 1;
+ else
+ sTVShowState = 2;
+ break;
+ case 1:
+ if (show->bravoTrainerTower.btLevel == 50)
+ {
+ StringCopy(gStringVar1, gText_Lv50);
+ }
+ else
+ {
+ StringCopy(gStringVar1, gText_OpenLevel);
+ }
+ TV_PrintIntToStringVar(1, show->bravoTrainerTower.numFights);
+ if (show->bravoTrainerTower.wonTheChallenge == TRUE)
+ sTVShowState = 3;
+ else
+ sTVShowState = 4;
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage);
+ TV_PrintIntToStringVar(1, show->bravoTrainerTower.numFights + 1);
+ if (show->bravoTrainerTower.interviewResponse == 0)
+ sTVShowState = 5;
+ else
+ sTVShowState = 6;
+ break;
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage);
+ StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainerTower.defeatedSpecies]);
+ if (show->bravoTrainerTower.interviewResponse == 0)
+ sTVShowState = 5;
+ else
+ sTVShowState = 6;
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage);
+ StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainerTower.defeatedSpecies]);
+ if (show->bravoTrainerTower.interviewResponse == 0)
+ sTVShowState = 5;
+ else
+ sTVShowState = 6;
+ break;
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage);
+ sTVShowState = 11;
+ break;
+ case 6:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage);
+ sTVShowState = 11;
+ break;
+ case 7:
+ sTVShowState = 11;
+ break;
+ case 8:
+ case 9:
+ case 10:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.trainerName, show->bravoTrainerTower.language);
+ sTVShowState = 11;
+ break;
+ case 11:
+ CopyEasyChatWord(gStringVar1, show->bravoTrainerTower.words[0]);
+ if (show->bravoTrainerTower.interviewResponse == 0)
+ sTVShowState = 12;
+ else
+ sTVShowState = 13;
+ break;
+ case 12:
+ case 13:
+ CopyEasyChatWord(gStringVar1, show->bravoTrainerTower.words[0]);
+ TVShowConvertInternationalString(gStringVar2, show->bravoTrainerTower.trainerName, show->bravoTrainerTower.language);
+ TVShowConvertInternationalString(gStringVar3, show->bravoTrainerTower.pokemonName, show->bravoTrainerTower.pokemonNameLanguage);
+ sTVShowState = 14;
+ break;
+ case 14:
+ TVShowConvertInternationalString(gStringVar1, show->bravoTrainerTower.trainerName, show->bravoTrainerTower.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->bravoTrainerTower.species]);
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVBravoTrainerBattleTowerTextGroup[state]);
+}
+
+void DoTVShowTodaysSmartShopper(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch(state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->smartshopperShow.playerName, show->smartshopperShow.language);
+ GetMapName(gStringVar2, show->smartshopperShow.shopLocation, 0);
+ if (show->smartshopperShow.itemAmounts[0] >= 255)
+ {
+ sTVShowState = 11;
+ }
+ else
+ {
+ sTVShowState = 1;
+ }
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, show->smartshopperShow.playerName, show->smartshopperShow.language);
+ StringCopy(gStringVar2, ItemId_GetItem(show->smartshopperShow.itemIds[0])->name);
+ TV_PrintIntToStringVar(2, show->smartshopperShow.itemAmounts[0]);
+ sTVShowState += 1 + (Random() % 4);
+ break;
+ case 2:
+ case 4:
+ case 5:
+ if (show->smartshopperShow.itemIds[1] != ITEM_NONE)
+ {
+ sTVShowState = 6;
+ }
+ else
+ {
+ sTVShowState = 10;
+ }
+ break;
+ case 3:
+ TV_PrintIntToStringVar(2, show->smartshopperShow.itemAmounts[0] + 1);
+ if (show->smartshopperShow.itemIds[1] != ITEM_NONE)
+ {
+ sTVShowState = 6;
+ }
+ else
+ {
+ sTVShowState = 10;
+ }
+ break;
+ case 6:
+ StringCopy(gStringVar2, ItemId_GetItem(show->smartshopperShow.itemIds[1])->name);
+ TV_PrintIntToStringVar(2, show->smartshopperShow.itemAmounts[1]);
+ if (show->smartshopperShow.itemIds[2] != ITEM_NONE)
+ {
+ sTVShowState = 7;
+ }
+ else if (show->smartshopperShow.priceReduced == TRUE)
+ {
+ sTVShowState = 8;
+ }
+ else
+ {
+ sTVShowState = 9;
+ }
+ break;
+ case 7:
+ StringCopy(gStringVar2, ItemId_GetItem(show->smartshopperShow.itemIds[2])->name);
+ TV_PrintIntToStringVar(2, show->smartshopperShow.itemAmounts[2]);
+ if (show->smartshopperShow.priceReduced == TRUE)
+ {
+ sTVShowState = 8;
+ }
+ else
+ {
+ sTVShowState = 9;
+ }
+ break;
+ case 8:
+ if (show->smartshopperShow.itemAmounts[0] >= 255)
+ {
+ sTVShowState = 12;
+ }
+ else
+ {
+ sTVShowState = 9;
+ }
+ break;
+ case 9:
+ sub_80EF40C(1, show);
+ TVShowDone();
+ break;
+ case 10:
+ if (show->smartshopperShow.priceReduced == TRUE)
+ {
+ sTVShowState = 8;
+ }
+ else
+ {
+ sTVShowState = 9;
+ }
+ break;
+ case 11:
+ TVShowConvertInternationalString(gStringVar1, show->smartshopperShow.playerName, show->smartshopperShow.language);
+ StringCopy(gStringVar2, ItemId_GetItem(show->smartshopperShow.itemIds[0])->name);
+ if (show->smartshopperShow.priceReduced == TRUE)
+ {
+ sTVShowState = 8;
+ }
+ else
+ {
+ sTVShowState = 12;
+ }
+ break;
+ case 12:
+ TVShowConvertInternationalString(gStringVar1, show->smartshopperShow.playerName, show->smartshopperShow.language);
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVTodaysSmartShopperTextGroup[state]);
+}
+
+void DoTVShowTheNameRaterShow(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->nameRaterShow.trainerName, show->nameRaterShow.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->nameRaterShow.species]);
+ TVShowConvertInternationalString(gStringVar3, show->nameRaterShow.pokemonName, show->nameRaterShow.pokemonNameLanguage);
+ sTVShowState = TV_GetNicknameSumMod8(show) + 1;
+ break;
+ case 1:
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ case 8:
+ if (show->nameRaterShow.random == 0)
+ {
+ sTVShowState = 9;
+ }
+ else if (show->nameRaterShow.random == 1)
+ {
+ sTVShowState = 10;
+ }
+ else if (show->nameRaterShow.random == 2)
+ {
+ sTVShowState = 11;
+ }
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, show->nameRaterShow.trainerName, show->nameRaterShow.language);
+ if (show->nameRaterShow.random == 0)
+ {
+ sTVShowState = 9;
+ }
+ else if (show->nameRaterShow.random == 1)
+ {
+ sTVShowState = 10;
+ }
+ else if (show->nameRaterShow.random == 2)
+ {
+ sTVShowState = 11;
+ }
+ break;
+ case 9:
+ case 10:
+ case 11:
+ TVShowConvertInternationalString(gStringVar1, show->nameRaterShow.pokemonName, show->nameRaterShow.pokemonNameLanguage);
+ TV_GetNicknameSubstring(1, 0, 0, 1, 0, show);
+ TV_GetNicknameSubstring(2, 1, 0, 1, 0, show);
+ sTVShowState = 12;
+ break;
+ case 13:
+ TVShowConvertInternationalString(gStringVar1, show->nameRaterShow.trainerName, show->nameRaterShow.language);
+ TV_GetNicknameSubstring(1, 0, 2, 0, 0, show);
+ TV_GetNicknameSubstring(2, 0, 3, 1, 0, show);
+ sTVShowState = 14;
+ break;
+ case 14:
+ TV_GetNicknameSubstring(1, 0, 2, 1, 0, show);
+ TV_GetNicknameSubstring(2, 0, 3, 0, 0, show);
+ sTVShowState = 18;
+ break;
+ case 15:
+ TV_GetNicknameSubstring(0, 0, 2, 1, 0, show);
+ StringCopy(gStringVar2, gSpeciesNames[show->nameRaterShow.species]);
+ TV_GetNicknameSubstring(2, 0, 3, 2, show->nameRaterShow.species, show);
+ sTVShowState = 16;
+ break;
+ case 16:
+ TV_GetNicknameSubstring(0, 0, 2, 2, show->nameRaterShow.species, show);
+ TV_GetNicknameSubstring(2, 0, 3, 1, 0, show);
+ sTVShowState = 17;
+ break;
+ case 17:
+ TV_GetNicknameSubstring(0, 0, 2, 1, 0, show);
+ StringCopy(gStringVar2, gSpeciesNames[show->nameRaterShow.randomSpecies]);
+ TV_GetNicknameSubstring(2, 0, 3, 2, show->nameRaterShow.randomSpecies, show);
+ sTVShowState = 18;
+ break;
+ case 12:
+ state = 18;
+ sTVShowState = 18;
+ case 18:
+ TVShowConvertInternationalString(gStringVar1, show->nameRaterShow.pokemonName, show->nameRaterShow.pokemonNameLanguage);
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVNameRaterTextGroup[state]);
+}
+
+void DoTVShowPokemonTodaySuccessfulCapture(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->pokemonToday.playerName, show->pokemonToday.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->pokemonToday.species]);
+ TVShowConvertInternationalString(gStringVar3, show->pokemonToday.nickname, show->pokemonToday.language2);
+ if (show->pokemonToday.ball == ITEM_MASTER_BALL)
+ {
+ sTVShowState = 5;
+ }
+ else
+ {
+ sTVShowState = 1;
+ }
+ break;
+ case 1:
+ sTVShowState = 2;
+ break;
+ case 2:
+ StringCopy(gStringVar2, ItemId_GetItem(show->pokemonToday.ball)->name);
+ TV_PrintIntToStringVar(2, show->pokemonToday.nBallsUsed);
+ if (show->pokemonToday.nBallsUsed < 4)
+ {
+ sTVShowState = 3;
+ }
+ else
+ {
+ sTVShowState = 4;
+ }
+ break;
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, show->pokemonToday.playerName, show->pokemonToday.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->pokemonToday.species]);
+ TVShowConvertInternationalString(gStringVar3, show->pokemonToday.nickname, show->pokemonToday.language2);
+ sTVShowState = 6;
+ break;
+ case 4:
+ sTVShowState = 6;
+ break;
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, show->pokemonToday.playerName, show->pokemonToday.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->pokemonToday.species]);
+ sTVShowState = 6;
+ break;
+ case 6:
+ TVShowConvertInternationalString(gStringVar1, show->pokemonToday.playerName, show->pokemonToday.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->pokemonToday.species]);
+ TVShowConvertInternationalString(gStringVar3, show->pokemonToday.nickname, show->pokemonToday.language2);
+ sTVShowState += 1 + (Random() % 4);
+ break;
+ case 7:
+ case 8:
+ StringCopy(gStringVar1, gSpeciesNames[show->pokemonToday.species]);
+ TVShowConvertInternationalString(gStringVar2, show->pokemonToday.nickname, show->pokemonToday.language2);
+ TV_GetSomeOtherSpeciesAlreadySeenByPlayer_AndPrintName(2, show->pokemonToday.species);
+ sTVShowState = 11;
+ break;
+ case 9:
+ case 10:
+ StringCopy(gStringVar1, gSpeciesNames[show->pokemonToday.species]);
+ TVShowConvertInternationalString(gStringVar2, show->pokemonToday.nickname, show->pokemonToday.language2);
+ sTVShowState = 11;
+ break;
+ case 11:
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVPokemonTodaySuccessfulTextGroup[state]);
+}
+
+void DoTVShowPokemonTodayFailedCapture(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->pokemonTodayFailed.playerName, show->pokemonTodayFailed.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->pokemonTodayFailed.species]);
+ sTVShowState = 1;
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, show->pokemonTodayFailed.playerName, show->pokemonTodayFailed.language);
+ GetMapName(gStringVar2, show->pokemonTodayFailed.location, 0);
+ StringCopy(gStringVar3, gSpeciesNames[show->pokemonTodayFailed.species2]);
+ if (show->pokemonTodayFailed.outcome == 1)
+ {
+ sTVShowState = 3;
+ }
+ else
+ {
+ sTVShowState = 2;
+ }
+ break;
+ case 2:
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, show->pokemonTodayFailed.playerName, show->pokemonTodayFailed.language);
+ TV_PrintIntToStringVar(1, show->pokemonTodayFailed.nBallsUsed);
+ if (Random() % 3 == 0)
+ {
+ sTVShowState = 5;
+ }
+ else
+ {
+ sTVShowState = 4;
+ }
+ break;
+ case 4:
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, show->pokemonTodayFailed.playerName, show->pokemonTodayFailed.language);
+ sTVShowState = 6;
+ break;
+ case 6:
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVPokemonTodayFailedTextGroup[state]);
+}
+
+void DoTVShowPokemonFanClubLetter(void)
+{
+ TVShow *show;
+ u8 state;
+ u16 rval;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->fanclubLetter.playerName, show->fanclubLetter.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->fanclubLetter.species]);
+ sTVShowState = 50;
+ break;
+ case 1:
+ rval = (Random() % 4) + 1;
+ if (rval == 1)
+ sTVShowState = 2;
+ else
+ sTVShowState = rval + 2;
+ break;
+ case 2:
+ sTVShowState = 51;
+ break;
+ case 3:
+ sTVShowState += (Random() % 3) + 1;
+ break;
+ case 4:
+ case 5:
+ case 6:
+ TV_FanClubLetter_RandomWordToStringVar3(show);
+ sTVShowState = 7;
+ break;
+ case 7:
+ rval = (Random() % 0x1f) + 0x46;
+ TV_PrintIntToStringVar(2, rval);
+ TVShowDone();
+ break;
+ case 50:
+ ConvertEasyChatWordsToString(gStringVar4, show->fanclubLetter.words, 2, 2);
+ ShowFieldMessage(gStringVar4);
+ sTVShowState = 1;
+ return;
+ case 51:
+ ConvertEasyChatWordsToString(gStringVar4, show->fanclubLetter.words, 2, 2);
+ ShowFieldMessage(gStringVar4);
+ sTVShowState = 3;
+ return;
+ }
+ ShowFieldMessage(sTVFanClubTextGroup[state]);
+}
+
+void DoTVShowRecentHappenings(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->recentHappenings.playerName, show->recentHappenings.language);
+ TV_FanClubLetter_RandomWordToStringVar3(show);
+ sTVShowState = 50;
+ break;
+ case 1:
+ sTVShowState += 1 + (Random() % 3);
+ break;
+ case 2:
+ case 3:
+ case 4:
+ sTVShowState = 5;
+ break;
+ case 5:
+ TVShowDone();
+ break;
+ case 50:
+ ConvertEasyChatWordsToString(gStringVar4, show->recentHappenings.words, 2, 2);
+ ShowFieldMessage(gStringVar4);
+ sTVShowState = 1;
+ return;
+ }
+ ShowFieldMessage(sTVRecentHappeninssTextGroup[state]);
+}
+
+void DoTVShowPokemonFanClubOpinions(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->fanclubOpinions.playerName, show->fanclubOpinions.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->fanclubOpinions.species]);
+ TVShowConvertInternationalString(gStringVar3, show->fanclubOpinions.nickname, show->fanclubOpinions.pokemonNameLanguage);
+ sTVShowState = show->fanclubOpinions.questionAsked + 1;
+ break;
+ case 1:
+ case 2:
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, show->fanclubOpinions.playerName, show->fanclubOpinions.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->fanclubOpinions.species]);
+ CopyEasyChatWord(gStringVar3, show->fanclubOpinions.words[0]);
+ sTVShowState = 4;
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar1, show->fanclubOpinions.playerName, show->fanclubOpinions.language);
+ CopyEasyChatWord(gStringVar3, show->fanclubOpinions.words[1]);
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVFanClubOpinionsTextGroup[state]);
+}
+
+void DoTVShowDummiedOut(void)
+{
+
+}
+
+void DoTVShowPokemonNewsMassOutbreak(void)
+{
+ TVShow *show;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ GetMapName(gStringVar1, show->massOutbreak.locationMapNum, 0);
+ StringCopy(gStringVar2, gSpeciesNames[show->massOutbreak.species]);
+ TVShowDone();
+ StartMassOutbreak();
+ ShowFieldMessage(sTVMassOutbreakTextGroup[sTVShowState]);
+}
+
+void DoTVShowPokemonContestLiveUpdates(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ sub_818E868(gStringVar1, show->contestLiveUpdates.category);
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ TVShowConvertInternationalString(gStringVar3, show->contestLiveUpdates.playerName, show->contestLiveUpdates.language);
+ if (show->contestLiveUpdates.round1Rank == show->contestLiveUpdates.round2Rank)
+ {
+ if (show->contestLiveUpdates.round1Rank == 0)
+ {
+ sTVShowState = 1;
+ }
+ else
+ {
+ sTVShowState = 3;
+ }
+ }
+ else if (show->contestLiveUpdates.round1Rank > show->contestLiveUpdates.round2Rank)
+ {
+ sTVShowState = 2;
+ }
+ else
+ {
+ sTVShowState = 4;
+ }
+ break;
+ case 1:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ switch (show->contestLiveUpdates.appealFlags1)
+ {
+ case 0x01:
+ sTVShowState = 8;
+ break;
+ case 0x02:
+ sTVShowState = 5;
+ break;
+ case 0x04:
+ sTVShowState = 14;
+ break;
+ case 0x08:
+ sTVShowState = 7;
+ break;
+ case 0x10:
+ sTVShowState = 6;
+ break;
+ case 0x20:
+ sTVShowState = 20;
+ break;
+ case 0x40:
+ sTVShowState = 21;
+ break;
+ case 0x80:
+ sTVShowState = 22;
+ break;
+ }
+ break;
+ case 2:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ switch (show->contestLiveUpdates.appealFlags1)
+ {
+ case 0x01:
+ sTVShowState = 8;
+ break;
+ case 0x02:
+ sTVShowState = 5;
+ break;
+ case 0x04:
+ sTVShowState = 14;
+ break;
+ case 0x08:
+ sTVShowState = 7;
+ break;
+ case 0x10:
+ sTVShowState = 6;
+ break;
+ case 0x20:
+ sTVShowState = 20;
+ break;
+ case 0x40:
+ sTVShowState = 21;
+ break;
+ case 0x80:
+ sTVShowState = 22;
+ break;
+ }
+ break;
+ case 3:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ TVShowConvertInternationalString(gStringVar3, show->contestLiveUpdates.playerName, show->contestLiveUpdates.language);
+ switch (show->contestLiveUpdates.appealFlags1)
+ {
+ case 0x01:
+ sTVShowState = 8;
+ break;
+ case 0x02:
+ sTVShowState = 5;
+ break;
+ case 0x04:
+ sTVShowState = 14;
+ break;
+ case 0x08:
+ sTVShowState = 7;
+ break;
+ case 0x10:
+ sTVShowState = 6;
+ break;
+ case 0x20:
+ sTVShowState = 20;
+ break;
+ case 0x40:
+ sTVShowState = 21;
+ break;
+ case 0x80:
+ sTVShowState = 22;
+ break;
+ }
+ break;
+ case 4:
+ switch (show->contestLiveUpdates.category)
+ {
+ case 0:
+ StringCopy(gStringVar1, gText_Cool);
+ break;
+ case 1:
+ StringCopy(gStringVar1, gText_Beauty);
+ break;
+ case 2:
+ StringCopy(gStringVar1, gText_Cute);
+ break;
+ case 3:
+ StringCopy(gStringVar1, gText_Smart);
+ break;
+ case 4:
+ StringCopy(gStringVar1, gText_Tough);
+ break;
+ }
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ switch (show->contestLiveUpdates.appealFlags1)
+ {
+ case 0x01:
+ sTVShowState = 8;
+ break;
+ case 0x02:
+ sTVShowState = 5;
+ break;
+ case 0x04:
+ sTVShowState = 14;
+ break;
+ case 0x08:
+ sTVShowState = 7;
+ break;
+ case 0x10:
+ sTVShowState = 6;
+ break;
+ case 0x20:
+ sTVShowState = 20;
+ break;
+ case 0x40:
+ sTVShowState = 21;
+ break;
+ case 0x80:
+ sTVShowState = 22;
+ break;
+ }
+ break;
+ case 5:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ sTVShowState = 23;
+ break;
+ case 6:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ sTVShowState = 23;
+ break;
+ case 7:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ sTVShowState = 23;
+ break;
+ case 8:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ switch (show->contestLiveUpdates.category)
+ {
+ case 0:
+ sTVShowState = 9;
+ break;
+ case 1:
+ sTVShowState = 10;
+ break;
+ case 2:
+ sTVShowState = 11;
+ break;
+ case 3:
+ sTVShowState = 12;
+ break;
+ case 4:
+ sTVShowState = 13;
+ break;
+ }
+ break;
+ case 9:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ sTVShowState = 23;
+ break;
+ case 10:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ sTVShowState = 23;
+ break;
+ case 11:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ sTVShowState = 23;
+ break;
+ case 12:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ sTVShowState = 23;
+ break;
+ case 13:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ sTVShowState = 23;
+ break;
+ case 14:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ switch (show->contestLiveUpdates.category)
+ {
+ case 0:
+ sTVShowState = 15;
+ break;
+ case 1:
+ sTVShowState = 16;
+ break;
+ case 2:
+ sTVShowState = 17;
+ break;
+ case 3:
+ sTVShowState = 18;
+ break;
+ case 4:
+ sTVShowState = 19;
+ break;
+ }
+ break;
+ case 15:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ sTVShowState = 23;
+ break;
+ case 16:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ sTVShowState = 23;
+ break;
+ case 17:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ sTVShowState = 23;
+ break;
+ case 18:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ sTVShowState = 23;
+ break;
+ case 19:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ sTVShowState = 23;
+ break;
+ case 20:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ sTVShowState = 23;
+ break;
+ case 21:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ sTVShowState = 23;
+ break;
+ case 22:
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ StringCopy(gStringVar3, gMoveNames[show->contestLiveUpdates.move]);
+ sTVShowState = 23;
+ break;
+ case 23:
+ StringCopy(gStringVar1, gSpeciesNames[show->contestLiveUpdates.species]);
+ TVShowConvertInternationalString(gStringVar2, show->contestLiveUpdates.winningTrainerName, show->contestLiveUpdates.winningTrainerLanguage);
+ StringCopy(gStringVar3, gSpeciesNames[show->contestLiveUpdates.winningSpecies]);
+ switch (show->contestLiveUpdates.appealFlags2)
+ {
+ case 0x01:
+ sTVShowState = 31;
+ break;
+ case 0x02:
+ sTVShowState = 30;
+ break;
+ case 0x04:
+ sTVShowState = 29;
+ break;
+ case 0x08:
+ sTVShowState = 28;
+ break;
+ case 0x10:
+ sTVShowState = 27;
+ break;
+ case 0x20:
+ sTVShowState = 26;
+ break;
+ case 0x40:
+ sTVShowState = 25;
+ break;
+ case 0x80:
+ sTVShowState = 24;
+ break;
+ }
+ break;
+ case 24:
+ StringCopy(gStringVar1, gSpeciesNames[show->contestLiveUpdates.winningSpecies]);
+ sTVShowState = 32;
+ break;
+ case 25:
+ TVShowConvertInternationalString(gStringVar1, show->contestLiveUpdates.winningTrainerName, show->contestLiveUpdates.winningTrainerLanguage);
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.winningSpecies]);
+ sTVShowState = 32;
+ break;
+ case 28:
+ sTVShowState = 32;
+ break;
+ case 29:
+ TVShowConvertInternationalString(gStringVar1, show->contestLiveUpdates.playerName, show->contestLiveUpdates.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ TVShowConvertInternationalString(gStringVar3, show->contestLiveUpdates.winningTrainerName, show->contestLiveUpdates.winningTrainerLanguage);
+ sTVShowState = 32;
+ break;
+ case 26:
+ case 27:
+ case 30:
+ case 31:
+ TVShowConvertInternationalString(gStringVar1, show->contestLiveUpdates.winningTrainerName, show->contestLiveUpdates.winningTrainerLanguage);
+ sTVShowState = 32;
+ break;
+ case 32:
+
+ TVShowConvertInternationalString(gStringVar1, show->contestLiveUpdates.playerName, show->contestLiveUpdates.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->contestLiveUpdates.species]);
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVContestLiveUpdatesTextGroup[state]);
+}
+
+void DoTVShowPokemonBattleUpdate(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ switch (show->battleUpdate.battleType)
+ {
+ case 0:
+ case 1:
+ sTVShowState = 1;
+ break;
+ case 2:
+ sTVShowState = 5;
+ break;
+ }
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, show->battleUpdate.playerName, show->battleUpdate.language);
+ TVShowConvertInternationalString(gStringVar2, show->battleUpdate.linkOpponentName, show->battleUpdate.linkOpponentLanguage);
+ if (show->battleUpdate.battleType == 0)
+ {
+ StringCopy(gStringVar3, gText_Single);
+ }
+ else
+ {
+ StringCopy(gStringVar3, gText_Double);
+ }
+ sTVShowState = 2;
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, show->battleUpdate.playerName, show->battleUpdate.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->battleUpdate.species2]);
+ StringCopy(gStringVar3, gMoveNames[show->battleUpdate.move]);
+ sTVShowState = 3;
+ break;
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, show->battleUpdate.linkOpponentName, show->battleUpdate.linkOpponentLanguage);
+ StringCopy(gStringVar2, gSpeciesNames[show->battleUpdate.species]);
+ sTVShowState = 4;
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar1, show->battleUpdate.playerName, show->battleUpdate.language);
+ TVShowConvertInternationalString(gStringVar2, show->battleUpdate.linkOpponentName, show->battleUpdate.linkOpponentLanguage);
+ TVShowDone();
+ break;
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, show->battleUpdate.playerName, show->battleUpdate.language);
+ TVShowConvertInternationalString(gStringVar2, show->battleUpdate.linkOpponentName, show->battleUpdate.linkOpponentLanguage);
+ sTVShowState = 6;
+ break;
+ case 6:
+ TVShowConvertInternationalString(gStringVar1, show->battleUpdate.playerName, show->battleUpdate.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->battleUpdate.species2]);
+ StringCopy(gStringVar3, gMoveNames[show->battleUpdate.move]);
+ sTVShowState = 7;
+ break;
+ case 7:
+ TVShowConvertInternationalString(gStringVar1, show->battleUpdate.playerName, show->battleUpdate.language);
+ TVShowConvertInternationalString(gStringVar2, show->battleUpdate.linkOpponentName, show->battleUpdate.linkOpponentLanguage);
+ StringCopy(gStringVar3, gSpeciesNames[show->battleUpdate.species]);
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVPokemonBattleUpdateTextGroup[state]);
+}
+
+void DoTVShow3CheersForPokeblocks(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->threeCheers.playerName, show->threeCheers.language);
+ if (show->threeCheers.sheen > 20)
+ {
+ sTVShowState = 1;
+ }
+ else
+ {
+ sTVShowState = 3;
+ }
+ break;
+ case 1:
+ switch (show->threeCheers.flavor)
+ {
+ case 0:
+ StringCopy(gStringVar1, gText_Spicy2);
+ break;
+ case 1:
+ StringCopy(gStringVar1, gText_Dry2);
+ break;
+ case 2:
+ StringCopy(gStringVar1, gText_Sweet2);
+ break;
+ case 3:
+ StringCopy(gStringVar1, gText_Bitter2);
+ break;
+ case 4:
+ StringCopy(gStringVar1, gText_Sour2);
+ break;
+ }
+ if (show->threeCheers.sheen > 24)
+ {
+ StringCopy(gStringVar2, gText_Excellent);
+ } else if (show->threeCheers.sheen > 22)
+ {
+ StringCopy(gStringVar2, gText_VeryGood);
+ }
+ else
+ {
+ StringCopy(gStringVar2, gText_Good);
+ }
+ TVShowConvertInternationalString(gStringVar3, show->threeCheers.playerName, show->threeCheers.language);
+ sTVShowState = 2;
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, show->threeCheers.worstBlenderName, show->threeCheers.worstBlenderLanguage);
+ sTVShowState = 5;
+ break;
+ case 3:
+ switch (show->threeCheers.flavor)
+ {
+ case 0:
+ StringCopy(gStringVar1, gText_Spicy2);
+ break;
+ case 1:
+ StringCopy(gStringVar1, gText_Dry2);
+ break;
+ case 2:
+ StringCopy(gStringVar1, gText_Sweet2);
+ break;
+ case 3:
+ StringCopy(gStringVar1, gText_Bitter2);
+ break;
+ case 4:
+ StringCopy(gStringVar1, gText_Sour2);
+ break;
+ }
+ if (show->threeCheers.sheen > 16)
+ {
+ StringCopy(gStringVar2, gText_SoSo);
+ } else if (show->threeCheers.sheen > 13)
+ {
+ StringCopy(gStringVar2, gText_Bad);
+ }
+ else
+ {
+ StringCopy(gStringVar2, gText_TheWorst);
+ }
+ TVShowConvertInternationalString(gStringVar3, show->threeCheers.playerName, show->threeCheers.language);
+ sTVShowState = 4;
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar1, show->threeCheers.worstBlenderName, show->threeCheers.worstBlenderLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->threeCheers.playerName, show->threeCheers.language);
+ sTVShowState = 5;
+ break;
+ case 5:
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTV3CheersForPokeblocksTextGroup[state]);
+}
+
+void DoTVShowInSearchOfTrainers(void)
+{
+ u8 state;
+
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ GetMapName(gStringVar1, gSaveBlock1Ptr->gabbyAndTyData.mapnum, 0);
+ if (gSaveBlock1Ptr->gabbyAndTyData.battleNum > 1)
+ {
+ sTVShowState = 1;
+ }
+ else
+ {
+ sTVShowState = 2;
+ }
+ break;
+ case 1:
+ sTVShowState = 2;
+ break;
+ case 2:
+ if (!gSaveBlock1Ptr->gabbyAndTyData.battleTookMoreThanOneTurn)
+ {
+ sTVShowState = 4;
+ }
+ else if (gSaveBlock1Ptr->gabbyAndTyData.playerThrewABall)
+ {
+ sTVShowState = 5;
+ }
+ else if (gSaveBlock1Ptr->gabbyAndTyData.playerUsedAnItem)
+ {
+ sTVShowState = 6;
+ }
+ else if (gSaveBlock1Ptr->gabbyAndTyData.playerLostAMon)
+ {
+ sTVShowState = 7;
+ }
+ else
+ {
+ sTVShowState = 3;
+ }
+ break;
+ case 3:
+ StringCopy(gStringVar1, gSpeciesNames[gSaveBlock1Ptr->gabbyAndTyData.mon1]);
+ StringCopy(gStringVar2, gMoveNames[gSaveBlock1Ptr->gabbyAndTyData.lastMove]);
+ StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1Ptr->gabbyAndTyData.mon2]);
+ sTVShowState = 8;
+ break;
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ sTVShowState = 8;
+ break;
+ case 8:
+ CopyEasyChatWord(gStringVar1, gSaveBlock1Ptr->gabbyAndTyData.quote[0]);
+ StringCopy(gStringVar2, gSpeciesNames[gSaveBlock1Ptr->gabbyAndTyData.mon1]);
+ StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1Ptr->gabbyAndTyData.mon2]);
+ gScriptResult = TRUE;
+ sTVShowState = 0;
+ TakeTVShowInSearchOfTrainersOffTheAir();
+ break;
+ }
+ ShowFieldMessage(sTVInSearchOfTrainersTextGroup[state]);
+}
+
+void DoTVShowPokemonAngler(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ if (show->pokemonAngler.nBites < show->pokemonAngler.nFails)
+ {
+ sTVShowState = 0;
+ }
+ else
+ {
+ sTVShowState = 1;
+ }
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->pokemonAngler.playerName, show->pokemonAngler.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->pokemonAngler.species]);
+ TV_PrintIntToStringVar(2, show->pokemonAngler.nFails);
+ TVShowDone();
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, show->pokemonAngler.playerName, show->pokemonAngler.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->pokemonAngler.species]);
+ TV_PrintIntToStringVar(2, show->pokemonAngler.nBites);
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVPokemonAnslerTextGroup[state]);
+}
+
+void DoTVShowTheWorldOfMasters(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->worldOfMasters.playerName, show->worldOfMasters.language);
+ TV_PrintIntToStringVar(1, show->worldOfMasters.steps);
+ TV_PrintIntToStringVar(2, show->worldOfMasters.numPokeCaught);
+ sTVShowState = 1;
+ break;
+ case 1:
+ StringCopy(gStringVar1, gSpeciesNames[show->worldOfMasters.species]);
+ sTVShowState = 2;
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, show->worldOfMasters.playerName, show->worldOfMasters.language);
+ GetMapName(gStringVar2, show->worldOfMasters.location, 0);
+ StringCopy(gStringVar3, gSpeciesNames[show->worldOfMasters.caughtPoke]);
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVWorldOfMastersTextGroup[state]);
+}
+
+void DoTVShowTodaysRivalTrainer(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ switch (show->rivalTrainer.location)
+ {
+ default:
+ sTVShowState = 7;
+ break;
+ case REGION_MAP_SECRET_BASE:
+ sTVShowState = 8;
+ break;
+ case REGION_MAP_NONE:
+ switch (show->rivalTrainer.mapDataId)
+ {
+ case 0x115 ... 0x117:
+ sTVShowState = 10;
+ break;
+ default:
+ sTVShowState = 9;
+ break;
+ }
+ break;
+ }
+ break;
+ case 7:
+ TVShowConvertInternationalString(gStringVar1, show->rivalTrainer.playerName, show->rivalTrainer.language);
+ TV_PrintIntToStringVar(1, show->rivalTrainer.dexCount);
+ GetMapName(gStringVar3, show->rivalTrainer.location, 0);
+ if (show->rivalTrainer.badgeCount != 0)
+ {
+ sTVShowState = 1;
+ }
+ else
+ {
+ sTVShowState = 2;
+ }
+ break;
+ case 8:
+ TVShowConvertInternationalString(gStringVar1, show->rivalTrainer.playerName, show->rivalTrainer.language);
+ TV_PrintIntToStringVar(1, show->rivalTrainer.dexCount);
+ if (show->rivalTrainer.badgeCount != 0)
+ {
+ sTVShowState = 1;
+ }
+ else
+ {
+ sTVShowState = 2;
+ }
+ break;
+ case 9:
+ TVShowConvertInternationalString(gStringVar1, show->rivalTrainer.playerName, show->rivalTrainer.language);
+ TV_PrintIntToStringVar(1, show->rivalTrainer.dexCount);
+ if (show->rivalTrainer.badgeCount != 0)
+ {
+ sTVShowState = 1;
+ }
+ else
+ {
+ sTVShowState = 2;
+ }
+ break;
+ case 10:
+ TVShowConvertInternationalString(gStringVar1, show->rivalTrainer.playerName, show->rivalTrainer.language);
+ TV_PrintIntToStringVar(1, show->rivalTrainer.dexCount);
+ if (show->rivalTrainer.badgeCount != 0)
+ {
+ sTVShowState = 1;
+ }
+ else
+ {
+ sTVShowState = 2;
+ }
+ break;
+ case 1:
+ TV_PrintIntToStringVar(0, show->rivalTrainer.badgeCount);
+ if (FlagGet(CODE_FLAGS + 0x48))
+ {
+ if (show->rivalTrainer.nSilverSymbols || show->rivalTrainer.nGoldSymbols)
+ {
+ sTVShowState = 4;
+ }
+ else
+ {
+ sTVShowState = 3;
+ }
+ }
+ else
+ {
+ sTVShowState = 6;
+ }
+ break;
+ case 2:
+ if (FlagGet(CODE_FLAGS + 0x48))
+ {
+ if (show->rivalTrainer.nSilverSymbols || show->rivalTrainer.nGoldSymbols)
+ {
+ sTVShowState = 4;
+ }
+ else
+ {
+ sTVShowState = 3;
+ }
+ }
+ else
+ {
+ sTVShowState = 6;
+ }
+ break;
+ case 3:
+ if (show->rivalTrainer.battlePoints == 0)
+ {
+ sTVShowState = 6;
+ }
+ else
+ {
+ sTVShowState = 5;
+ }
+ break;
+ case 4:
+ TV_PrintIntToStringVar(0, show->rivalTrainer.nGoldSymbols);
+ TV_PrintIntToStringVar(1, show->rivalTrainer.nSilverSymbols);
+ if (show->rivalTrainer.battlePoints == 0)
+ {
+ sTVShowState = 6;
+ }
+ else
+ {
+ sTVShowState = 5;
+ }
+ break;
+ case 5:
+ TV_PrintIntToStringVar(0, show->rivalTrainer.battlePoints);
+ sTVShowState = 6;
+ break;
+ case 6:
+ TVShowConvertInternationalString(gStringVar1, show->rivalTrainer.playerName, show->rivalTrainer.language);
+ TVShowDone();
+ }
+ ShowFieldMessage(sTVTodaysRivalTrainerTextGroup[state]);
+}
+
+void DoTVShowDewfordTrendWatcherNetwork(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ CopyEasyChatWord(gStringVar1, show->trendWatcher.words[0]);
+ CopyEasyChatWord(gStringVar2, show->trendWatcher.words[1]);
+ if (show->trendWatcher.gender == MALE)
+ {
+ sTVShowState = 1;
+ }
+ else
+ {
+ sTVShowState = 2;
+ }
+ break;
+ case 1:
+ case 2:
+ CopyEasyChatWord(gStringVar1, show->trendWatcher.words[0]);
+ CopyEasyChatWord(gStringVar2, show->trendWatcher.words[1]);
+ TVShowConvertInternationalString(gStringVar3, show->trendWatcher.playerName, show->trendWatcher.language);
+ sTVShowState = 3;
+ break;
+ case 3:
+ CopyEasyChatWord(gStringVar1, show->trendWatcher.words[0]);
+ CopyEasyChatWord(gStringVar2, show->trendWatcher.words[1]);
+ if (show->trendWatcher.gender == MALE)
+ {
+ sTVShowState = 4;
+ }
+ else
+ {
+ sTVShowState = 5;
+ }
+ break;
+ case 4:
+ case 5:
+ CopyEasyChatWord(gStringVar1, show->trendWatcher.words[0]);
+ CopyEasyChatWord(gStringVar2, show->trendWatcher.words[1]);
+ TVShowConvertInternationalString(gStringVar3, show->trendWatcher.playerName, show->trendWatcher.language);
+ sTVShowState = 6;
+ break;
+ case 6:
+ CopyEasyChatWord(gStringVar1, show->trendWatcher.words[0]);
+ CopyEasyChatWord(gStringVar2, show->trendWatcher.words[1]);
+ TVShowDone();
+ }
+ ShowFieldMessage(sTVDewfordTrendWatcherNetworkTextGroup[state]);
+}
+
+void DoTVShowHoennTreasureInvestigators(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ StringCopy(gStringVar1, ItemId_GetItem(show->treasureInvestigators.item)->name);
+ if (show->treasureInvestigators.location == REGION_MAP_NONE)
+ {
+ switch (show->treasureInvestigators.mapDataId)
+ {
+ case 0x115 ... 0x117:
+ sTVShowState = 2;
+ break;
+ default:
+ sTVShowState = 1;
+ break;
+ }
+ }
+ else
+ {
+ sTVShowState = 1;
+ }
+ break;
+ case 1:
+ StringCopy(gStringVar1, ItemId_GetItem(show->treasureInvestigators.item)->name);
+ TVShowConvertInternationalString(gStringVar2, show->treasureInvestigators.playerName, show->treasureInvestigators.language);
+ GetMapName(gStringVar3, show->treasureInvestigators.location, 0);
+ TVShowDone();
+ break;
+ case 2:
+ StringCopy(gStringVar1, ItemId_GetItem(show->treasureInvestigators.item)->name);
+ TVShowConvertInternationalString(gStringVar2, show->treasureInvestigators.playerName, show->treasureInvestigators.language);
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVHoennTreasureInvestisatorsTextGroup[state]);
+}
+
+void DoTVShowFindThatGamer(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->findThatGamer.playerName, show->findThatGamer.language);
+ switch (show->findThatGamer.whichGame)
+ {
+ case 0:
+ StringCopy(gStringVar2, gText_Slots);
+ break;
+ case 1:
+ StringCopy(gStringVar2, gText_Roulette);
+ break;
+ }
+ if (show->findThatGamer.won == TRUE)
+ {
+ sTVShowState = 1;
+ }
+ else
+ {
+ sTVShowState = 2;
+ }
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, show->findThatGamer.playerName, show->findThatGamer.language);
+ switch (show->findThatGamer.whichGame)
+ {
+ case 0:
+ StringCopy(gStringVar2, gText_Slots);
+ break;
+ case 1:
+ StringCopy(gStringVar2, gText_Roulette);
+ break;
+ }
+ TV_PrintIntToStringVar(2, show->findThatGamer.nCoins);
+ TVShowDone(); break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, show->findThatGamer.playerName, show->findThatGamer.language);
+ switch (show->findThatGamer.whichGame)
+ {
+ case 0:
+ StringCopy(gStringVar2, gText_Slots);
+ break;
+ case 1:
+ StringCopy(gStringVar2, gText_Roulette);
+ break;
+ }
+ TV_PrintIntToStringVar(2, show->findThatGamer.nCoins);
+ sTVShowState = 3;
+ break;
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, show->findThatGamer.playerName, show->findThatGamer.language);
+ switch (show->findThatGamer.whichGame)
+ {
+ case 0:
+ StringCopy(gStringVar2, gText_Roulette);
+ break;
+ case 1:
+ StringCopy(gStringVar2, gText_Slots);
+ break;
+ }
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVFindThatGamerTextGroup[state]);
+}
+
+void DoTVShowBreakingNewsTV(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ if (show->breakingNews.outcome == 0)
+ {
+ sTVShowState = 1;
+ }
+ else
+ {
+ sTVShowState = 5;
+ }
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->breakingNews.lastOpponentSpecies]);
+ GetMapName(gStringVar3, show->breakingNews.location, 0);
+ sTVShowState = 2;
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->breakingNews.lastOpponentSpecies]);
+ StringCopy(gStringVar3, gSpeciesNames[show->breakingNews.poke1Species]);
+ sTVShowState = 3;
+ break;
+ case 3:
+ TV_PrintIntToStringVar(0, show->breakingNews.balls);
+ StringCopy(gStringVar2, ItemId_GetItem(show->breakingNews.caughtMonBall)->name);
+ sTVShowState = 4;
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language);
+ GetMapName(gStringVar2, show->breakingNews.location, 0);
+ TVShowDone();
+ break;
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->breakingNews.lastOpponentSpecies]);
+ GetMapName(gStringVar3, show->breakingNews.location, 0);
+ sTVShowState = 6;
+ break;
+ case 6:
+ TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->breakingNews.lastOpponentSpecies]);
+ StringCopy(gStringVar3, gSpeciesNames[show->breakingNews.poke1Species]);
+ switch (show->breakingNews.outcome)
+ {
+ case 1:
+ if (show->breakingNews.lastUsedMove == MOVE_NONE)
+ {
+ sTVShowState = 12;
+ }
+ else
+ {
+ sTVShowState = 7;
+ }
+ break;
+ case 2:
+ sTVShowState = 9;
+ break;
+ case 3:
+ sTVShowState = 10;
+ break;
+ }
+ break;
+ case 7:
+ StringCopy(gStringVar1, gMoveNames[show->breakingNews.lastUsedMove]);
+ StringCopy(gStringVar2, gSpeciesNames[show->breakingNews.poke1Species]);
+ sTVShowState = 8;
+ break;
+ case 12:
+ TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->breakingNews.lastOpponentSpecies]);
+ StringCopy(gStringVar3, gSpeciesNames[show->breakingNews.poke1Species]);
+ sTVShowState = 8;
+ break;
+ case 8:
+ TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language);
+ GetMapName(gStringVar2, show->breakingNews.location, 0);
+ sTVShowState = 11;
+ break;
+ case 9:
+ case 10:
+ TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->breakingNews.lastOpponentSpecies]);
+ GetMapName(gStringVar3, show->breakingNews.location, 0);
+ sTVShowState = 11;
+ break;
+ case 11:
+ TVShowConvertInternationalString(gStringVar1, show->breakingNews.playerName, show->breakingNews.language);
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVBreakinsNewsTextGroup[state]);
+}
+
+void DoTVShowSecretBaseVisit(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->secretBaseVisit.playerName, show->secretBaseVisit.language);
+ if (show->secretBaseVisit.nDecorations == 0)
+ {
+ sTVShowState = 2;
+ }
+ else
+ {
+ sTVShowState = 1;
+ }
+ break;
+ case 1:
+ StringCopy(gStringVar2, gDecorations[show->secretBaseVisit.decorations[0]].name);
+ if (show->secretBaseVisit.nDecorations == 1)
+ {
+ sTVShowState = 4;
+ }
+ else
+ {
+ sTVShowState = 3;
+ }
+ break;
+ case 3:
+ StringCopy(gStringVar2, gDecorations[show->secretBaseVisit.decorations[1]].name);
+ switch (show->secretBaseVisit.nDecorations)
+ {
+ case 2:
+ sTVShowState = 7;
+ break;
+ case 3:
+ sTVShowState = 6;
+ break;
+ case 4:
+ sTVShowState = 5;
+ break;
+ }
+ break;
+ case 5:
+ StringCopy(gStringVar2, gDecorations[show->secretBaseVisit.decorations[2]].name);
+ StringCopy(gStringVar3, gDecorations[show->secretBaseVisit.decorations[3]].name);
+ sTVShowState = 8;
+ break;
+ case 6:
+ StringCopy(gStringVar2, gDecorations[show->secretBaseVisit.decorations[2]].name);
+ sTVShowState = 8;
+ break;
+ case 2:
+ case 4:
+ case 7:
+ sTVShowState = 8;
+ break;
+ case 8:
+ TVShowConvertInternationalString(gStringVar1, show->secretBaseVisit.playerName, show->secretBaseVisit.language);
+ if (show->secretBaseVisit.avgLevel < 25)
+ {
+ sTVShowState = 12;
+ }
+ else if (show->secretBaseVisit.avgLevel < 50)
+ {
+ sTVShowState = 11;
+ }
+ else if (show->secretBaseVisit.avgLevel < 70)
+ {
+ sTVShowState = 10;
+ }
+ else
+ {
+ sTVShowState = 9;
+ }
+ break;
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ TVShowConvertInternationalString(gStringVar1, show->secretBaseVisit.playerName, show->secretBaseVisit.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->secretBaseVisit.species]);
+ StringCopy(gStringVar3, gMoveNames[show->secretBaseVisit.move]);
+ sTVShowState = 13;
+ break;
+ case 13:
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVSecretBaseVisitTextGroup[state]);
+}
+
+void DoTVShowPokemonLotteryWinnerFlashReport(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ TVShowConvertInternationalString(gStringVar1, show->lottoWinner.playerName, show->lottoWinner.language);
+ if (show->lottoWinner.whichPrize == 0)
+ {
+ StringCopy(gStringVar2, gText_Jackpot);
+ }
+ else if (show->lottoWinner.whichPrize == 1)
+ {
+ StringCopy(gStringVar2, gText_First);
+ }
+ else if (show->lottoWinner.whichPrize == 2)
+ {
+ StringCopy(gStringVar2, gText_Second);
+ }
+ else
+ {
+ StringCopy(gStringVar2, gText_Third);
+ }
+ StringCopy(gStringVar3, ItemId_GetItem(show->lottoWinner.item)->name);
+ TVShowDone();
+ ShowFieldMessage(sTVPokemonLotteryWinnerFlashReportTextGroup[state]);
+}
+
+void DoTVShowThePokemonBattleSeminar(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->battleSeminar.playerName, show->battleSeminar.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->battleSeminar.species]);
+ StringCopy(gStringVar3, gSpeciesNames[show->battleSeminar.foeSpecies]);
+ sTVShowState = 1;
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, show->battleSeminar.playerName, show->battleSeminar.language);
+ StringCopy(gStringVar2, gSpeciesNames[show->battleSeminar.foeSpecies]);
+ StringCopy(gStringVar3, gMoveNames[show->battleSeminar.move]);
+ sTVShowState = 2;
+ break;
+ case 2:
+ StringCopy(gStringVar1, gSpeciesNames[show->battleSeminar.species]);
+ switch (show->battleSeminar.nOtherMoves)
+ {
+ case 1:
+ sTVShowState = 5;
+ break;
+ case 2:
+ sTVShowState = 4;
+ break;
+ case 3:
+ sTVShowState = 3;
+ break;
+ default:
+ sTVShowState = 6;
+ break;
+ }
+ break;
+ case 3:
+ StringCopy(gStringVar1, gMoveNames[show->battleSeminar.otherMoves[0]]);
+ StringCopy(gStringVar2, gMoveNames[show->battleSeminar.otherMoves[1]]);
+ StringCopy(gStringVar3, gMoveNames[show->battleSeminar.otherMoves[2]]);
+ sTVShowState = 6;
+ break;
+ case 4:
+ StringCopy(gStringVar1, gMoveNames[show->battleSeminar.otherMoves[0]]);
+ StringCopy(gStringVar2, gMoveNames[show->battleSeminar.otherMoves[1]]);
+ sTVShowState = 6;
+ break;
+ case 5:
+ StringCopy(gStringVar2, gMoveNames[show->battleSeminar.otherMoves[0]]);
+ sTVShowState = 6;
+ break;
+ case 6:
+ StringCopy(gStringVar1, gMoveNames[show->battleSeminar.betterMove]);
+ StringCopy(gStringVar2, gMoveNames[show->battleSeminar.move]);
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVThePokemonBattleSeminarTextGroup[state]);
+}
+
+void DoTVShowTrainerFanClubSpecial(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->fanClubSpecial.idolName, show->fanClubSpecial.idolNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->fanClubSpecial.playerName, show->fanClubSpecial.language);
+ CopyEasyChatWord(gStringVar3, show->fanClubSpecial.words[0]);
+ if (show->fanClubSpecial.score >= 90)
+ {
+ sTVShowState = 1;
+ }
+ else if (show->fanClubSpecial.score >= 70)
+ {
+ sTVShowState = 2;
+ }
+ else if (show->fanClubSpecial.score >= 30)
+ {
+ sTVShowState = 3;
+ }
+ else
+ {
+ sTVShowState = 4;
+ }
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, show->fanClubSpecial.idolName, show->fanClubSpecial.idolNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->fanClubSpecial.playerName, show->fanClubSpecial.language);
+ TV_PrintIntToStringVar(2, show->fanClubSpecial.score);
+ sTVShowState = 5;
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, show->fanClubSpecial.idolName, show->fanClubSpecial.idolNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->fanClubSpecial.playerName, show->fanClubSpecial.language);
+ TV_PrintIntToStringVar(2, show->fanClubSpecial.score);
+ sTVShowState = 5;
+ break;
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, show->fanClubSpecial.idolName, show->fanClubSpecial.idolNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->fanClubSpecial.playerName, show->fanClubSpecial.language);
+ TV_PrintIntToStringVar(2, show->fanClubSpecial.score);
+ sTVShowState = 5;
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar1, show->fanClubSpecial.idolName, show->fanClubSpecial.idolNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->fanClubSpecial.playerName, show->fanClubSpecial.language);
+ TV_PrintIntToStringVar(2, show->fanClubSpecial.score);
+ sTVShowState = 5;
+ break;
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, show->fanClubSpecial.idolName, show->fanClubSpecial.idolNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->fanClubSpecial.playerName, show->fanClubSpecial.language);
+ CopyEasyChatWord(gStringVar3, show->fanClubSpecial.words[0]);
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVTrainerFanClubSpecialTextGroup[state]);
+}
+
+void DoTVShowTrainerFanClub(void)
+{
+ TVShow *show;
+ u8 state;
+ u32 playerId;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->trainerFanClub.playerName, show->trainerFanClub.language);
+ playerId = ((show->common.trainerIdHi << 8) + show->common.trainerIdLo);
+ switch (playerId % 10)
+ {
+ case 0:
+ sTVShowState = 1;
+ break;
+ case 1:
+ sTVShowState = 2;
+ break;
+ case 2:
+ sTVShowState = 3;
+ break;
+ case 3:
+ sTVShowState = 4;
+ break;
+ case 4:
+ sTVShowState = 5;
+ break;
+ case 5:
+ sTVShowState = 6;
+ break;
+ case 6:
+ sTVShowState = 7;
+ break;
+ case 7:
+ sTVShowState = 8;
+ break;
+ case 8:
+ sTVShowState = 9;
+ break;
+ case 9:
+ sTVShowState = 10;
+ break;
+ }
+ break;
+ case 1:
+ sTVShowState = 11;
+ break;
+ case 2:
+ sTVShowState = 11;
+ break;
+ case 3:
+ sTVShowState = 11;
+ break;
+ case 4:
+ sTVShowState = 11;
+ break;
+ case 5:
+ sTVShowState = 11;
+ break;
+ case 6:
+ sTVShowState = 11;
+ break;
+ case 7:
+ sTVShowState = 11;
+ break;
+ case 8:
+ sTVShowState = 11;
+ break;
+ case 9:
+ sTVShowState = 11;
+ break;
+ case 10:
+ sTVShowState = 11;
+ break;
+ case 11:
+ TVShowConvertInternationalString(gStringVar1, show->trainerFanClub.playerName, show->trainerFanClub.language);
+ CopyEasyChatWord(gStringVar2, show->trainerFanClub.words[0]);
+ CopyEasyChatWord(gStringVar3, show->trainerFanClub.words[1]);
+ TVShowDone();
+ }
+ ShowFieldMessage(sTVTrainerFanClubTextGroup[state]);
+}
+
+void DoTVShowSpotTheCuties(void)
+{
+ TVShow *show;
+ u8 state;
+ u32 playerId;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->cuties.playerName, show->cuties.language);
+ TVShowConvertInternationalString(gStringVar2, show->cuties.nickname, show->cuties.pokemonNameLanguage);
+ if (show->cuties.nRibbons < 10)
+ {
+ sTVShowState = 1;
+ }
+ else if (show->cuties.nRibbons < 20)
+ {
+ sTVShowState = 2;
+ }
+ else
+ {
+ sTVShowState = 3;
+ }
+ break;
+ case 1:
+ case 2:
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, show->cuties.playerName, show->cuties.language);
+ TVShowConvertInternationalString(gStringVar2, show->cuties.nickname, show->cuties.pokemonNameLanguage);
+ TV_PrintIntToStringVar(2, show->cuties.nRibbons);
+ sTVShowState = 4;
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar2, show->cuties.nickname, show->cuties.pokemonNameLanguage);
+ switch (show->cuties.selectedRibbon)
+ {
+ case 0:
+ sTVShowState = 5;
+ break;
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ sTVShowState = 6;
+ break;
+ case 5:
+ case 6:
+ case 7:
+ case 8:
+ sTVShowState = 7;
+ break;
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ sTVShowState = 8;
+ break;
+ case 13:
+ case 14:
+ case 15:
+ case 16:
+ sTVShowState = 9;
+ break;
+ case 17:
+ case 18:
+ case 19:
+ case 20:
+ sTVShowState = 10;
+ break;
+ case 21:
+ sTVShowState = 11;
+ break;
+ case 22:
+ sTVShowState = 12;
+ break;
+ case 23:
+ sTVShowState = 13;
+ break;
+ case 24:
+ sTVShowState = 14;
+ break;
+ }
+ break;
+ case 5:
+ case 6:
+ case 7:
+ case 8:
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ case 13:
+ case 14:
+ TVShowConvertInternationalString(gStringVar2, show->cuties.nickname, show->cuties.pokemonNameLanguage);
+ sTVShowState = 15;
+ break;
+ case 15:
+ TVShowDone();
+ }
+ ShowFieldMessage(sTVCutiesTextGroup[state]);
+}
+
+void DoTVShowPokemonNewsBattleFrontier(void)
+{
+ TVShow *show;
+ u8 state;
+ u32 playerId;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ switch (show->frontier.facility)
+ {
+ case 1:
+ sTVShowState = 1;
+ break;
+ case 2:
+ sTVShowState = 2;
+ break;
+ case 3:
+ sTVShowState = 3;
+ break;
+ case 4:
+ sTVShowState = 4;
+ break;
+ case 5:
+ sTVShowState = 5;
+ break;
+ case 6:
+ sTVShowState = 6;
+ break;
+ case 7:
+ sTVShowState = 7;
+ break;
+ case 8:
+ sTVShowState = 8;
+ break;
+ case 9:
+ sTVShowState = 9;
+ break;
+ case 10:
+ sTVShowState = 10;
+ break;
+ case 11:
+ sTVShowState = 11;
+ break;
+ case 12:
+ sTVShowState = 12;
+ break;
+ case 13:
+ sTVShowState = 13;
+ break;
+ }
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ TV_PrintIntToStringVar(1, show->frontier.winStreak);
+ sTVShowState = 14;
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ TV_PrintIntToStringVar(1, show->frontier.winStreak);
+ sTVShowState = 16;
+ break;
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ TV_PrintIntToStringVar(1, show->frontier.winStreak);
+ sTVShowState = 15;
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ TV_PrintIntToStringVar(1, show->frontier.winStreak);
+ sTVShowState = 15;
+ break;
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ TV_PrintIntToStringVar(1, show->frontier.winStreak);
+ sTVShowState = 14;
+ break;
+ case 6:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ TV_PrintIntToStringVar(1, show->frontier.winStreak);
+ sTVShowState = 14;
+ break;
+ case 7:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ TV_PrintIntToStringVar(1, show->frontier.winStreak);
+ sTVShowState = 14;
+ break;
+ case 8:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ TV_PrintIntToStringVar(1, show->frontier.winStreak);
+ sTVShowState = 14;
+ break;
+ case 9:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ TV_PrintIntToStringVar(1, show->frontier.winStreak);
+ sTVShowState = 14;
+ break;
+ case 10:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ TV_PrintIntToStringVar(1, show->frontier.winStreak);
+ sTVShowState = 14;
+ break;
+ case 11:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ TV_PrintIntToStringVar(1, show->frontier.winStreak);
+ sTVShowState = 14;
+ break;
+ case 12:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ TV_PrintIntToStringVar(1, show->frontier.winStreak);
+ sTVShowState = 14;
+ break;
+ case 13:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ TV_PrintIntToStringVar(1, show->frontier.winStreak);
+ sTVShowState = 14;
+ break;
+ case 14:
+ StringCopy(gStringVar1, gSpeciesNames[show->frontier.species1]);
+ StringCopy(gStringVar2, gSpeciesNames[show->frontier.species2]);
+ StringCopy(gStringVar3, gSpeciesNames[show->frontier.species3]);
+ sTVShowState = 18;
+ break;
+ case 15:
+ StringCopy(gStringVar1, gSpeciesNames[show->frontier.species1]);
+ StringCopy(gStringVar2, gSpeciesNames[show->frontier.species2]);
+ sTVShowState = 18;
+ break;
+ case 16:
+ StringCopy(gStringVar1, gSpeciesNames[show->frontier.species1]);
+ StringCopy(gStringVar2, gSpeciesNames[show->frontier.species2]);
+ StringCopy(gStringVar3, gSpeciesNames[show->frontier.species3]);
+ sTVShowState = 17;
+ break;
+ case 17:
+ StringCopy(gStringVar1, gSpeciesNames[show->frontier.species4]);
+ sTVShowState = 18;
+ break;
+ case 18:
+ TVShowConvertInternationalString(gStringVar1, show->frontier.playerName, show->frontier.language);
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVPokemonNewsBattleFrontierTextGroup[state]);
+}
+
+void DoTVShowWhatsNo1InHoennToday(void)
+{
+ TVShow *show;
+ u8 state;
+ u32 playerId;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language);
+ switch (show->numberOne.actionIdx)
+ {
+ case 0:
+ sTVShowState = 1;
+ break;
+ case 1:
+ sTVShowState = 2;
+ break;
+ case 2:
+ sTVShowState = 3;
+ break;
+ case 3:
+ sTVShowState = 4;
+ break;
+ case 4:
+ sTVShowState = 5;
+ break;
+ case 5:
+ sTVShowState = 6;
+ break;
+ case 6:
+ sTVShowState = 7;
+ break;
+ }
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language);
+ TV_PrintIntToStringVar(1, show->numberOne.count);
+ sTVShowState = 8;
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language);
+ TV_PrintIntToStringVar(1, show->numberOne.count);
+ sTVShowState = 8;
+ break;
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language);
+ TV_PrintIntToStringVar(1, show->numberOne.count);
+ sTVShowState = 8;
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language);
+ TV_PrintIntToStringVar(1, show->numberOne.count);
+ sTVShowState = 8;
+ break;
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language);
+ TV_PrintIntToStringVar(1, show->numberOne.count);
+ sTVShowState = 8;
+ break;
+ case 6:
+ TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language);
+ TV_PrintIntToStringVar(1, show->numberOne.count);
+ sTVShowState = 8;
+ break;
+ case 7:
+ TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language);
+ TV_PrintIntToStringVar(1, show->numberOne.count);
+ sTVShowState = 8;
+ break;
+ case 8:
+ TVShowConvertInternationalString(gStringVar1, show->numberOne.playerName, show->numberOne.language);
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVWhatsNo1InHoennTodayTextGroup[state]);
+}
+
+u8 sub_80F5180(TVShow *show)
+{
+ u8 i;
+ u8 tot;
+
+ for (i = 0, tot = 0; i < 32; i ++)
+ {
+ if ((show->secretBaseSecrets.flags >> i) & 1)
+ {
+ tot ++;
+ }
+ }
+ return tot;
+}
+
+u8 sub_80F51AC(TVShow *show, u8 a1)
+{
+ u8 i;
+ u8 tot;
+
+ for (i = 0, tot = 0; i < 32; i ++)
+ {
+ if ((show->secretBaseSecrets.flags >> i) & 1)
+ {
+ if (tot == a1)
+ {
+ return sTVSecretBaseSecretsStateLookup[i];
+ }
+ tot ++;
+ }
+ }
+ return 0;
+}
+
+void DoTVShowSecretBaseSecrets(void)
+{
+ TVShow *show;
+ u8 state;
+ u8 bitCount;
+ u16 i;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
+ bitCount = sub_80F5180(show);
+ if (bitCount == 0)
+ {
+ sTVShowState = 8;
+ }
+ else
+ {
+ show->secretBaseSecrets.savedState = 1;
+ sTVSecretBaseSecretsRandomValues[0] = Random() % bitCount;
+ sTVShowState = sub_80F51AC(show, sTVSecretBaseSecretsRandomValues[0]);
+ }
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
+ bitCount = sub_80F5180(show);
+ switch (bitCount)
+ {
+ case 1:
+ sTVShowState = 9;
+ break;
+ case 2:
+ show->secretBaseSecrets.savedState = 2;
+ if (sTVSecretBaseSecretsRandomValues[0] == 0)
+ {
+ sTVShowState = sub_80F51AC(show, 1);
+ }
+ else
+ {
+ sTVShowState = sub_80F51AC(show, 0);
+ }
+ break;
+ default:
+ for (i = 0; i < 0xFFFF; i ++)
+ {
+ sTVSecretBaseSecretsRandomValues[1] = Random() % bitCount;
+ if (sTVSecretBaseSecretsRandomValues[1] != sTVSecretBaseSecretsRandomValues[0])
+ {
+ break;
+ }
+ }
+ show->secretBaseSecrets.savedState = 2;
+ sTVShowState = sub_80F51AC(show, sTVSecretBaseSecretsRandomValues[1]);
+ break;
+ }
+ break;
+ case 2:
+ TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
+ bitCount = sub_80F5180(show);
+ if (bitCount == 2)
+ {
+ sTVShowState = 9;
+ }
+ else
+ {
+ for (i = 0; i < 0xFFFF; i ++)
+ {
+ sTVSecretBaseSecretsRandomValues[2] = Random() % bitCount;
+ if (sTVSecretBaseSecretsRandomValues[2] != sTVSecretBaseSecretsRandomValues[0] && sTVSecretBaseSecretsRandomValues[2] != sTVSecretBaseSecretsRandomValues[1])
+ {
+ break;
+ }
+ }
+ show->secretBaseSecrets.savedState = 3;
+ sTVShowState = sub_80F51AC(show, sTVSecretBaseSecretsRandomValues[2]);
+ }
+ break;
+ case 3:
+ TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
+ TV_PrintIntToStringVar(2, show->secretBaseSecrets.stepsInBase);
+ if (show->secretBaseSecrets.stepsInBase <= 30)
+ {
+ sTVShowState = 4;
+ }
+ else if (show->secretBaseSecrets.stepsInBase <= 100)
+ {
+ sTVShowState = 5;
+ }
+ else
+ {
+ sTVShowState = 6;
+ }
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
+ sTVShowState = 7;
+ break;
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
+ sTVShowState = 7;
+ break;
+ case 6:
+ TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
+ sTVShowState = 7;
+ break;
+ case 7:
+ TVShowConvertInternationalString(gStringVar1, show->secretBaseSecrets.baseOwnersName, show->secretBaseSecrets.baseOwnersNameLanguage);
+ TVShowConvertInternationalString(gStringVar2, show->secretBaseSecrets.playerName, show->secretBaseSecrets.language);
+ TVShowDone();
+ break;
+ case 8:
+ sTVShowState = 3;
+ break;
+ case 9:
+ sTVShowState = 3;
+ break;
+ case 10:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 11:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 12:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 13:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 14:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 15:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 16:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 17:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 18:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 19:
+ StringCopy(gStringVar2, ItemId_GetItem(show->secretBaseSecrets.item)->name);
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 20:
+ if (show->common.trainerIdLo & 1)
+ {
+ sTVShowState = 22;
+ }
+ else
+ {
+ sTVShowState = 21;
+ }
+ break;
+ case 21:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 22:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 23:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 24:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 25:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 26:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 27:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 28:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 29:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 30:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 31:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 32:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 33:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 34:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 35:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 36:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 37:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 38:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 39:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 40:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 41:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 42:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ case 43:
+ sTVShowState = show->secretBaseSecrets.savedState;
+ break;
+ }
+ ShowFieldMessage(sTVSecretBaseSecretsTextGroup[state]);
+}
+
+void DoTVShowSafariFanClub(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ if (show->safariFanClub.nMonsCaught == 0)
+ {
+ sTVShowState = 6;
+ }
+ else if (show->safariFanClub.nMonsCaught < 4)
+ {
+ sTVShowState = 5;
+ }
+ else
+ {
+ sTVShowState = 1;
+ }
+ break;
+ case 1:
+ TVShowConvertInternationalString(gStringVar1, show->safariFanClub.playerName, show->safariFanClub.language);
+ TV_PrintIntToStringVar(1, show->safariFanClub.nMonsCaught);
+ if (show->safariFanClub.nPkblkUsed == 0)
+ {
+ sTVShowState = 3;
+ }
+ else
+ {
+ sTVShowState = 2;
+ }
+ break;
+ case 2:
+ TV_PrintIntToStringVar(1, show->safariFanClub.nPkblkUsed);
+ sTVShowState = 4;
+ break;
+ case 3:
+ sTVShowState = 4;
+ break;
+ case 4:
+ TVShowConvertInternationalString(gStringVar1, show->safariFanClub.playerName, show->safariFanClub.language);
+ sTVShowState = 10;
+ break;
+ case 5:
+ TVShowConvertInternationalString(gStringVar1, show->safariFanClub.playerName, show->safariFanClub.language);
+ TV_PrintIntToStringVar(1, show->safariFanClub.nMonsCaught);
+ if (show->safariFanClub.nPkblkUsed == 0)
+ {
+ sTVShowState = 8;
+ }
+ else
+ {
+ sTVShowState = 7;
+ }
+ break;
+ case 6:
+ TVShowConvertInternationalString(gStringVar1, show->safariFanClub.playerName, show->safariFanClub.language);
+ if (show->safariFanClub.nPkblkUsed == 0)
+ {
+ sTVShowState = 8;
+ }
+ else
+ {
+ sTVShowState = 7;
+ }
+ break;
+ case 7:
+ TV_PrintIntToStringVar(1, show->safariFanClub.nPkblkUsed);
+ sTVShowState = 9;
+ break;
+ case 8:
+ sTVShowState = 9;
+ break;
+ case 9:
+ TVShowConvertInternationalString(gStringVar1, show->safariFanClub.playerName, show->safariFanClub.language);
+ sTVShowState = 10;
+ break;
+ case 10:
+ TVShowDone();
+ }
+ ShowFieldMessage(sTVSafariFanClubTextGroup[state]);
+}
+
+void DoTVShowPokemonContestLiveUpdates2(void)
+{
+ TVShow *show;
+ u8 state;
+
+ show = &gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004];
+ gScriptResult = FALSE;
+ state = sTVShowState;
+ switch (state)
+ {
+ case 0:
+ sub_818E868(gStringVar1, show->contestLiveUpdates2.contestCategory);
+ if (show->contestLiveUpdates2.pokeblockState == 1)
+ {
+ sTVShowState = 1;
+ }
+ else if (show->contestLiveUpdates2.pokeblockState == 0)
+ {
+ sTVShowState = 2;
+ }
+ else
+ {
+ sTVShowState = 3;
+ }
+ break;
+ case 1:
+ case 2:
+ TVShowConvertInternationalString(gStringVar3, show->contestLiveUpdates2.playerName, show->contestLiveUpdates2.language);
+ case 3:
+ TVShowConvertInternationalString(gStringVar2, show->contestLiveUpdates2.nickname, show->contestLiveUpdates2.pokemonNameLanguage);
+ TVShowDone();
+ break;
+ }
+ ShowFieldMessage(sTVPokemonContestLiveUpdates2TextGroup[state]);
+}
+
+void TVShowDone(void)
+{
+ gScriptResult = TRUE;
+ sTVShowState = 0;
+ gSaveBlock1Ptr->tvShows[gSpecialVar_0x8004].common.active = FALSE;
+}
+
+void ResetTVShowState(void)
+{
+ sTVShowState = 0;
+}
diff --git a/src/util.c b/src/util.c
index 27b7c5ee5..58088c3ee 100644
--- a/src/util.c
+++ b/src/util.c
@@ -112,7 +112,7 @@ static const u16 sCrc16Table[] =
0x7BC7, 0x6A4E, 0x58D5, 0x495C, 0x3DE3, 0x2C6A, 0x1EF1, 0x0F78,
};
-const u8 gMiscBlank_Gfx[] = INCBIN_U8("graphics/interface/blank.4bpp"); // unused in Emerald
+const u8 gMiscBlank_Gfx[] = INCBIN_U8("graphics/interface/blank.4bpp");
u8 CreateInvisibleSpriteWithCallback(void (*callback)(struct Sprite *))
{
diff --git a/sym_bss.txt b/sym_bss.txt
index f32300b15..db7495182 100644
--- a/sym_bss.txt
+++ b/sym_bss.txt
@@ -25,16 +25,9 @@
.include "src/fldeff_cut.o"
.include "src/script_menu.o"
.include "src/record_mixing.o"
+ .include "src/tv.o"
-gUnknown_03001174: @ 3001174
- .space 0x1
-
-gUnknown_03001175: @ 3001175
- .space 0x1
-
-gUnknown_03001176: @ 3001176
- .space 0x2
-
+ .space 1 @ TODO: define this u32 in mauville_old_man
gUnknown_03001178: @ 3001178
.space 0x4
diff --git a/sym_common.txt b/sym_common.txt
index 7ba414cab..acc6cf862 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -210,13 +210,7 @@ gBattleMainFunc: @ 3005D04
.space 0xC
gBattleResults: @ 3005D10
- .space 0x2A
-
-gUnknown_03005D3A: @ 3005D3A
- .space 0xC
-
-gUnknown_03005D46: @ 3005D46
- .space 0xE
+ .space 0x44
gLeveledUpInBattle: @ 3005D54
.space 0xC
@@ -326,17 +320,7 @@ gUnknown_030060B4: @ 30060B4
gUnknown_030060B8: @ 30060B8
.space 0x4
-gUnknown_030060BC: @ 30060BC
- .space 0x4
-
-gUnknown_030060C0: @ 30060C0
- .space 0x10
-
-gUnknown_030060D0: @ 30060D0
- .space 0x10
-
-gUnknown_030060E0: @ 30060E0
- .space 0x50
+ .include "tv.o"
gUnknown_03006130: @ 3006130
.space 0x34
@@ -393,7 +377,7 @@ gUnknown_030061EC: @ 30061EC
.space 0x4
.include"save.o"
-
+
.space 0x8
gRamSaveSectionLocations: @ 3006220
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 166ea64d0..8ce7ce8df 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -238,26 +238,7 @@ gBattle_WIN1H: @ 2022E28
gBattle_WIN1V: @ 2022E2A
.space 0x2
-gDisplayedStringBattle: @ 2022E2C
- .space 0x12C
-
-gBattleTextBuff1: @ 2022F58
- .space 0x2
-
-gUnknown_02022F5A: @ 2022F5A
- .space 0x2
-
-gUnknown_02022F5C: @ 2022F5C
- .space 0xC
-
-gBattleTextBuff2: @ 2022F68
- .space 0x2
-
-gUnknown_02022F6A: @ 2022F6A
- .space 0xE
-
-gBattleTextBuff3: @ 2022F78
- .space 0x10
+ .include "src/battle_message.o"
gUnknown_02022F88: @ 2022F88
.space 0x64
@@ -699,24 +680,9 @@ gUnknown_020375BC: @ 20375BC
gUnknown_020375C0: @ 20375C0
.space 0x4
-gUnknown_020375C4: @ 20375C4
- .space 0x4
-
-gUnknown_020375C8: @ 20375C8
- .space 0x2
-
-gUnknown_020375CA: @ 20375CA
- .space 0x2
-
-gUnknown_020375CC: @ 20375CC
- .space 0x2
-
-gUnknown_020375CE: @ 20375CE
- .space 0x2
-
-gUnknown_020375D0: @ 20375D0
- .space 0x4
+ .include "src/scrcmd.o"
+ .align 2
gUnknown_020375D4: @ 20375D4
.space 0x2
@@ -897,7 +863,7 @@ gUnknown_02038C00: @ 2038C00
gUnknown_02038C04: @ 2038C04
.space 0x4
-gFieldEffectSpawnParams: @ 2038C08
+gFieldEffectArguments: @ 2038C08
.space 0x20
gUnknown_02038C28: @ 2038C28
@@ -1048,16 +1014,7 @@ gBagPockets: @ 2039DD8
.space 0x28
gUnknown_02039E00: @ 2039E00
- .space 0x2
-
-gUnknown_02039E02: @ 2039E02
- .space 0xB
-
-gUnknown_02039E0D: @ 2039E0D
- .space 0x11
-
-gUnknown_02039E1E: @ 2039E1E
- .space 0xE2
+ .space 0x100
gUnknown_02039F00: @ 2039F00
.space 0x8
@@ -1089,7 +1046,7 @@ gUnknown_02039F2A: @ 2039F2A
gUnknown_02039F2B: @ 2039F2B
.space 0x1
-gUnknown_02039F2C: @ 2039F2C
+gScriptContestCategory: @ 2039F2C
.space 0x2
gUnknown_02039F2E: @ 2039F2E
@@ -1164,26 +1121,7 @@ gUnknown_0203A01D: @ 203A01D
gUnknown_0203A020: @ 203A020
.space 0x4
-gUnknown_0203A024: @ 203A024
- .space 0x2
-
-gUnknown_0203A026: @ 203A026
- .space 0x2
-
-gUnknown_0203A028: @ 203A028
- .space 0x2
-
-gUnknown_0203A02A: @ 203A02A
- .space 0x2
-
-gUnknown_0203A02C: @ 203A02C
- .space 0x4
-
-gUnknown_0203A030: @ 203A030
- .space 0x1
-
-gUnknown_0203A031: @ 203A031
- .space 0x3
+ .include "src/tv.o"
gUnknown_0203A034: @ 203A034
.space 0x4