diff options
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 @@ -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 Binary files differnew file mode 100644 index 000000000..ad5540b7c --- /dev/null +++ b/graphics/birch_speech/map.bin diff --git a/graphics/birch_speech/shadow.png b/graphics/birch_speech/shadow.png Binary files differnew file mode 100644 index 000000000..4487ea9ea --- /dev/null +++ b/graphics/birch_speech/shadow.png 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 Binary files differnew file mode 100644 index 000000000..172994249 --- /dev/null +++ b/graphics/link/minigame_digits.png diff --git a/graphics/link/minigame_digits2.png b/graphics/link/minigame_digits2.png Binary files differnew file mode 100644 index 000000000..285aa4aed --- /dev/null +++ b/graphics/link/minigame_digits2.png diff --git a/graphics/misc/emotion_exclamation.png b/graphics/misc/emotion_exclamation.png Binary files differnew file mode 100644 index 000000000..595566d2f --- /dev/null +++ b/graphics/misc/emotion_exclamation.png diff --git a/graphics/misc/emotion_heart.png b/graphics/misc/emotion_heart.png Binary files differnew file mode 100644 index 000000000..9995984b4 --- /dev/null +++ b/graphics/misc/emotion_heart.png diff --git a/graphics/misc/emotion_question.png b/graphics/misc/emotion_question.png Binary files differnew file mode 100644 index 000000000..7376fd058 --- /dev/null +++ b/graphics/misc/emotion_question.png 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 Binary files differnew file mode 100644 index 000000000..8f7b3480d --- /dev/null +++ b/graphics/misc/reset_rtc_screen_downarrow.png diff --git a/graphics/misc/reset_rtc_screen_rightarrow.png b/graphics/misc/reset_rtc_screen_rightarrow.png Binary files differnew file mode 100644 index 000000000..785b3c1db --- /dev/null +++ b/graphics/misc/reset_rtc_screen_rightarrow.png 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 *)(®_BG1CNT); + regBgcnt1->charBaseBlock = 0; + + regBgcnt2 = (struct BGCntrlBitfield *)(®_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 |