summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@users.noreply.github.com>2019-01-03 21:05:13 -0500
committerGitHub <noreply@github.com>2019-01-03 21:05:13 -0500
commit3a4f44ef36c1f0eb6a25bd86234cb94ef73a0c59 (patch)
tree3fdb692dd75014069d0ec086568844b570098bf2
parent84e22a9ecf52bb73993feadce91524355f1bb70f (diff)
parent1de4e55185f4f3e6e5f59541236abc10b69d51aa (diff)
Merge pull request #36 from PikalaxALT/trainer_tower
Trainer tower (phase 1)
-rw-r--r--Makefile4
-rw-r--r--asm/region_map.s4
-rw-r--r--asm/trainer_tower.s1146
-rw-r--r--data/data.s154
-rw-r--r--data/data_835B488.s115
-rw-r--r--data/data_8471F00.s166
-rw-r--r--data/graphics.s36
-rw-r--r--data/graphics/unk_847a348.pngbin0 -> 828 bytes
-rw-r--r--data/text/map_section_names.inc327
-rw-r--r--data/text/move_descriptions.inc1065
-rw-r--r--data/trainer_tower.s616
-rw-r--r--data/trainer_tower/trainers.inc5113
-rw-r--r--graphics/berry_fix/gba_small.binbin0 -> 2048 bytes
-rw-r--r--graphics/berry_fix/gba_small.pal35
-rw-r--r--graphics/berry_fix/gba_small.pngbin0 -> 2790 bytes
-rw-r--r--graphics/berry_fix/gba_transfer.binbin0 -> 2048 bytes
-rw-r--r--graphics/berry_fix/gba_transfer.pal35
-rw-r--r--graphics/berry_fix/gba_transfer.pngbin0 -> 2311 bytes
-rw-r--r--graphics/berry_fix/gba_transfer_error.binbin0 -> 2048 bytes
-rw-r--r--graphics/berry_fix/gba_transfer_error.pal35
-rw-r--r--graphics/berry_fix/gba_transfer_error.pngbin0 -> 1865 bytes
-rw-r--r--graphics/berry_fix/gba_transfer_highlight.binbin0 -> 2048 bytes
-rw-r--r--graphics/berry_fix/gba_transfer_highlight.pal35
-rw-r--r--graphics/berry_fix/gba_transfer_highlight.pngbin0 -> 2207 bytes
-rw-r--r--graphics/berry_fix/logo.binbin0 -> 2048 bytes
-rw-r--r--graphics/berry_fix/logo.pal51
-rw-r--r--graphics/berry_fix/logo.pngbin0 -> 2531 bytes
-rw-r--r--graphics/berry_fix/window.binbin0 -> 2048 bytes
-rw-r--r--graphics/berry_fix/window.pal35
-rw-r--r--graphics/berry_fix/window.pngbin0 -> 1430 bytes
-rw-r--r--include/cereader_tool.h2
-rw-r--r--include/constants/facility_trainer_classes.h155
-rw-r--r--include/constants/flags.h2
-rw-r--r--include/constants/region_map.h115
-rw-r--r--include/constants/trainer_classes.h112
-rw-r--r--include/constants/vars.h2
-rw-r--r--include/global.h176
-rw-r--r--include/main.h1
-rw-r--r--include/overworld.h2
-rw-r--r--include/region_map.h113
-rw-r--r--include/trainer_classes.h118
-rw-r--r--ld_script.txt4
-rw-r--r--src/trainer_tower.c694
-rw-r--r--sym_ewram.txt7
44 files changed, 8951 insertions, 1524 deletions
diff --git a/Makefile b/Makefile
index e33d1a469..495279735 100644
--- a/Makefile
+++ b/Makefile
@@ -121,6 +121,8 @@ $(C_BUILDDIR)/m4a_4.o: CC1 := tools/agbcc/bin/old_agbcc
$(C_BUILDDIR)/isagbprn.o: CC1 := tools/agbcc/bin/old_agbcc
$(C_BUILDDIR)/isagbprn.o: CFLAGS := -mthumb-interwork
+#$(C_BUILDDIR)/trainer_tower.o: CFLAGS += -ffreestanding
+
ifeq ($(NODEP),1)
$(C_BUILDDIR)/%.o: c_dep :=
else
@@ -149,7 +151,7 @@ $(DATA_ASM_BUILDDIR)/%.o: data_dep = $(shell $(SCANINC) $(DATA_ASM_SUBDIR)/$*.s)
endif
$(DATA_ASM_BUILDDIR)/%.o: $(DATA_ASM_SUBDIR)/%.s $$(data_dep)
- $(PREPROC) $< charmap.txt | $(CPP) -I include - | $(AS) $(ASFLAGS) -o $@
+ $(PREPROC) $< charmap.txt | $(CPP) -I include -nostdinc -undef - | $(AS) $(ASFLAGS) -o $@
$(SONG_BUILDDIR)/%.o: $(SONG_SUBDIR)/%.s
$(AS) $(ASFLAGS) -I sound -o $@ $<
diff --git a/asm/region_map.s b/asm/region_map.s
index f860c6065..168ca47c3 100644
--- a/asm/region_map.s
+++ b/asm/region_map.s
@@ -9706,11 +9706,11 @@ sub_80C4D78: @ 80C4D78
bl sub_80C4D40
cmp r0, 0x1
bne _080C4DA4
- ldr r1, _080C4DA0 @ =gUnknown_83EF22E
+ ldr r1, _080C4DA0 @ =gMapSecName_CeladonDept
b _080C4DAC
.align 2, 0
_080C4D9C: .4byte 0xffa80000
-_080C4DA0: .4byte gUnknown_83EF22E
+_080C4DA0: .4byte gMapSecName_CeladonDept
_080C4DA4:
ldr r0, _080C4DB8 @ =gUnknown_83F1CAC
lsls r1, r5, 2
diff --git a/asm/trainer_tower.s b/asm/trainer_tower.s
index 5b65927d5..c1da74a98 100644
--- a/asm/trainer_tower.s
+++ b/asm/trainer_tower.s
@@ -5,1152 +5,6 @@
.text
- thumb_func_start sub_815D7BC
-sub_815D7BC: @ 815D7BC
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- movs r0, 0x1E
- bl TryCopySpecialSaveSection
- cmp r0, 0x1
- bne _0815D804
- ldr r2, _0815D800 @ =0x00000f88
- adds r0, r5, 0
- adds r1, r4, 0
- bl memcpy
- movs r0, 0x1F
- adds r1, r4, 0
- bl TryCopySpecialSaveSection
- cmp r0, 0x1
- bne _0815D804
- ldr r1, _0815D800 @ =0x00000f88
- adds r0, r5, r1
- movs r2, 0xF8
- lsls r2, 4
- adds r1, r4, 0
- bl memcpy
- adds r0, r5, 0
- bl sub_815D6B4
- cmp r0, 0
- beq _0815D804
- movs r0, 0x1
- b _0815D806
- .align 2, 0
-_0815D800: .4byte 0x00000f88
-_0815D804:
- movs r0, 0
-_0815D806:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_815D7BC
-
- thumb_func_start sub_815D80C
-sub_815D80C: @ 815D80C
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r0, 0x80
- lsls r0, 5
- bl AllocZeroed
- adds r5, r0, 0
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_815D7BC
- adds r4, r0, 0
- adds r0, r5, 0
- bl Free
- adds r0, r4, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_815D80C
-
- thumb_func_start sub_815D834
-sub_815D834: @ 815D834
- movs r0, 0
- bx lr
- thumb_func_end sub_815D834
-
- thumb_func_start sub_815D838
-sub_815D838: @ 815D838
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- movs r2, 0
- ldr r0, _0815D8C0 @ =gUnknown_8479D38
- mov r10, r0
- movs r1, 0xFA
- lsls r1, 2
- adds r5, r1, 0
-_0815D84E:
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r1, r0, 0
- add r1, r10
- mov r8, r1
- mov r1, r10
- adds r1, 0x8
- adds r7, r0, r1
- ldr r1, _0815D8C4 @ =gUnknown_8479D48
- adds r6, r0, r1
- movs r4, 0
- adds r2, 0x1
- mov r9, r2
-_0815D86A:
- mov r0, r8
- adds r1, r0, r4
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _0815D87C
- ldrb r1, [r1]
- adds r0, r5, r1
- bl FlagSet
-_0815D87C:
- adds r1, r7, r4
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _0815D88C
- ldrb r1, [r1]
- adds r0, r5, r1
- bl FlagSet
-_0815D88C:
- adds r1, r6, r4
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _0815D89C
- ldrb r1, [r1]
- adds r0, r5, r1
- bl FlagSet
-_0815D89C:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x7
- bls _0815D86A
- mov r1, r9
- lsls r0, r1, 24
- lsrs r2, r0, 24
- cmp r2, 0xE
- bls _0815D84E
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0815D8C0: .4byte gUnknown_8479D38
-_0815D8C4: .4byte gUnknown_8479D48
- thumb_func_end sub_815D838
-
- thumb_func_start sub_815D8C8
-sub_815D8C8: @ 815D8C8
- push {r4,lr}
- ldr r4, _0815D8F0 @ =0x00004023
- adds r0, r4, 0
- bl VarGet
- lsls r0, 16
- lsrs r1, r0, 16
- ldr r0, _0815D8F4 @ =0x000005db
- cmp r1, r0
- bhi _0815D8E8
- adds r1, 0x1
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl VarSet
-_0815D8E8:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0815D8F0: .4byte 0x00004023
-_0815D8F4: .4byte 0x000005db
- thumb_func_end sub_815D8C8
-
- thumb_func_start sub_815D8F8
-sub_815D8F8: @ 815D8F8
- push {r4-r6,lr}
- movs r4, 0xFF
- movs r2, 0
- ldr r6, _0815D95C @ =gUnknown_8479D34
- ldr r0, _0815D960 @ =gSaveBlock1Ptr
- ldr r3, [r0]
- movs r5, 0x4
- ldrsb r5, [r3, r5]
-_0815D908:
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r1, r0, r6
- movs r0, 0
- ldrsb r0, [r1, r0]
- cmp r0, r5
- bne _0815D928
- ldrb r1, [r1, 0x1]
- lsls r1, 24
- asrs r1, 24
- movs r0, 0x5
- ldrsb r0, [r3, r0]
- cmp r1, r0
- bne _0815D928
- adds r4, r2, 0
-_0815D928:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xE
- bls _0815D908
- cmp r4, 0xFF
- beq _0815D956
- ldr r4, _0815D964 @ =0x00004023
- adds r0, r4, 0
- bl VarGet
- lsls r0, 16
- ldr r1, _0815D968 @ =0x05db0000
- cmp r0, r1
- bls _0815D956
- adds r0, r4, 0
- movs r1, 0
- bl VarSet
- bl sub_815D838
- bl sub_815D96C
-_0815D956:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0815D95C: .4byte gUnknown_8479D34
-_0815D960: .4byte gSaveBlock1Ptr
-_0815D964: .4byte 0x00004023
-_0815D968: .4byte 0x05db0000
- thumb_func_end sub_815D8F8
-
- thumb_func_start sub_815D96C
-sub_815D96C: @ 815D96C
- push {r4-r6,lr}
- movs r6, 0
-_0815D970:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x59
- bls _0815D994
- lsls r0, r6, 3
- subs r0, r6
- lsls r0, 2
- ldr r1, _0815D990 @ =gUnknown_8479D38
- b _0815D9B0
- .align 2, 0
-_0815D990: .4byte gUnknown_8479D38
-_0815D994:
- cmp r0, 0x3B
- bls _0815D9A8
- lsls r0, r6, 3
- subs r0, r6
- lsls r0, 2
- ldr r1, _0815D9A4 @ =gUnknown_8479D40
- b _0815D9B0
- .align 2, 0
-_0815D9A4: .4byte gUnknown_8479D40
-_0815D9A8:
- lsls r0, r6, 3
- subs r0, r6
- lsls r0, 2
- ldr r1, _0815D9E4 @ =gUnknown_8479D48
-_0815D9B0:
- adds r5, r0, r1
- movs r4, 0
- adds r6, 0x1
-_0815D9B6:
- adds r1, r5, r4
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _0815D9CC
- movs r2, 0xFA
- lsls r2, 2
- adds r0, r2, 0
- ldrb r1, [r1]
- adds r0, r1
- bl FlagClear
-_0815D9CC:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x7
- bls _0815D9B6
- lsls r0, r6, 24
- lsrs r6, r0, 24
- cmp r6, 0xE
- bls _0815D970
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0815D9E4: .4byte gUnknown_8479D48
- thumb_func_end sub_815D96C
-
- thumb_func_start sub_815D9E8
-sub_815D9E8: @ 815D9E8
- push {lr}
- bl sub_815DC8C
- ldr r1, _0815DA08 @ =gUnknown_847A230
- ldr r0, _0815DA0C @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- bl sub_815DD2C
- pop {r0}
- bx r0
- .align 2, 0
-_0815DA08: .4byte gUnknown_847A230
-_0815DA0C: .4byte gSpecialVar_0x8004
- thumb_func_end sub_815D9E8
-
- thumb_func_start sub_815DA10
-sub_815DA10: @ 815DA10
- ldr r1, _0815DA20 @ =gFacilityClassToTrainerClass
- ldr r0, _0815DA24 @ =gUnknown_203F45C
- ldr r0, [r0]
- adds r0, 0x3D
- ldrb r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0815DA20: .4byte gFacilityClassToTrainerClass
-_0815DA24: .4byte gUnknown_203F45C
- thumb_func_end sub_815DA10
-
- thumb_func_start sub_815DA28
-sub_815DA28: @ 815DA28
- push {lr}
- ldr r1, _0815DA38 @ =gUnknown_203F45C
- ldr r1, [r1]
- movs r2, 0xB
- bl StringCopyN
- pop {r0}
- bx r0
- .align 2, 0
-_0815DA38: .4byte gUnknown_203F45C
- thumb_func_end sub_815DA28
-
- thumb_func_start sub_815DA3C
-sub_815DA3C: @ 815DA3C
- ldr r1, _0815DA4C @ =gFacilityClassToPicIndex
- ldr r0, _0815DA50 @ =gUnknown_203F45C
- ldr r0, [r0]
- adds r0, 0x3D
- ldrb r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0815DA4C: .4byte gFacilityClassToPicIndex
-_0815DA50: .4byte gUnknown_203F45C
- thumb_func_end sub_815DA3C
-
- thumb_func_start sub_815DA54
-sub_815DA54: @ 815DA54
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- bl sub_815DC8C
- ldr r5, _0815DBC4 @ =gUnknown_203F45C
- movs r0, 0x40
- bl AllocZeroed
- str r0, [r5]
- ldr r0, _0815DBC8 @ =0x00004001
- bl VarGet
- lsls r0, 16
- lsrs r0, 16
- mov r10, r0
- ldr r0, [r5]
- ldr r1, _0815DBCC @ =gUnknown_203F458
- ldr r1, [r1]
- ldrb r3, [r1]
- lsls r2, r3, 5
- subs r2, r3
- lsls r2, 5
- adds r2, 0xC
- adds r1, r2
- mov r2, r10
- lsls r6, r2, 2
- adds r4, r6, r2
- lsls r4, 3
- add r4, r10
- lsls r4, 3
- adds r2, r4, 0x4
- adds r1, r2
- movs r2, 0xB
- bl StringCopyN
- movs r0, 0
- mov r9, r0
- str r6, [sp]
- mov r12, r4
- mov r1, r10
- adds r1, 0x1
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r1
- lsls r5, r0, 3
-_0815DAB8:
- ldr r0, _0815DBC4 @ =gUnknown_203F45C
- ldr r0, [r0]
- mov r8, r0
- mov r1, r9
- lsls r4, r1, 1
- mov r2, r8
- adds r2, 0xC
- adds r2, r4
- ldr r0, _0815DBCC @ =gUnknown_203F458
- ldr r3, [r0]
- ldrb r1, [r3]
- lsls r0, r1, 5
- subs r0, r1
- lsls r0, 5
- add r0, r12
- adds r7, r3, 0
- adds r7, 0x2A
- adds r0, r7, r0
- ldrh r0, [r0]
- strh r0, [r2]
- mov r2, r8
- adds r2, 0x18
- adds r2, r4
- ldrb r1, [r3]
- lsls r0, r1, 5
- subs r0, r1
- lsls r0, 5
- add r0, r12
- adds r6, r3, 0
- adds r6, 0x36
- adds r0, r6, r0
- ldrh r0, [r0]
- strh r0, [r2]
- ldrb r1, [r3]
- lsls r0, r1, 5
- subs r0, r1
- lsls r2, r0, 5
- adds r0, r3, r2
- ldrb r0, [r0, 0xE]
- cmp r0, 0x1
- bne _0815DB2E
- mov r1, r8
- adds r1, 0x24
- adds r1, r4
- adds r0, r5, r2
- adds r0, r7, r0
- ldrh r0, [r0]
- strh r0, [r1]
- mov r2, r8
- adds r2, 0x30
- adds r2, r4
- ldrb r1, [r3]
- lsls r0, r1, 5
- subs r0, r1
- lsls r0, 5
- adds r0, r5, r0
- adds r0, r6, r0
- ldrh r0, [r0]
- strh r0, [r2]
-_0815DB2E:
- movs r2, 0x2
- add r12, r2
- adds r5, 0x2
- movs r0, 0x1
- add r9, r0
- mov r1, r9
- cmp r1, 0x5
- ble _0815DAB8
- ldr r2, _0815DBC4 @ =gUnknown_203F45C
- ldr r3, [r2]
- ldr r0, _0815DBCC @ =gUnknown_203F458
- ldr r1, [r0]
- ldrb r2, [r1]
- lsls r0, r2, 5
- subs r0, r2
- lsls r0, 5
- adds r1, r0
- ldrb r0, [r1, 0xE]
- adds r3, 0x3C
- strb r0, [r3]
- ldr r1, _0815DBC4 @ =gUnknown_203F45C
- ldr r4, [r1]
- ldr r2, _0815DBCC @ =gUnknown_203F458
- ldr r3, [r2]
- ldr r1, [sp]
- add r1, r10
- lsls r1, 3
- add r1, r10
- lsls r1, 3
- ldrb r2, [r3]
- lsls r0, r2, 5
- subs r0, r2
- lsls r0, 5
- adds r0, r1, r0
- adds r3, r0
- ldrb r0, [r3, 0x1B]
- adds r4, 0x3D
- strb r0, [r4]
- ldr r0, _0815DBC4 @ =gUnknown_203F45C
- ldr r4, [r0]
- ldr r2, _0815DBCC @ =gUnknown_203F458
- ldr r3, [r2]
- ldrb r2, [r3]
- lsls r0, r2, 5
- subs r0, r2
- lsls r0, 5
- adds r1, r0
- adds r3, r1
- ldrb r0, [r3, 0x1C]
- adds r4, 0x3E
- strb r0, [r4]
- ldr r0, _0815DBD0 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r2, _0815DBD4 @ =0x00003d34
- adds r1, r0, r2
- ldr r2, [r1]
- lsls r1, r2, 1
- adds r1, r2
- lsls r1, 2
- ldr r2, _0815DBD8 @ =0x00003d38
- adds r1, r2
- adds r0, r1
- bl SetVBlankCounter1Ptr
- bl sub_815DD2C
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0815DBC4: .4byte gUnknown_203F45C
-_0815DBC8: .4byte 0x00004001
-_0815DBCC: .4byte gUnknown_203F458
-_0815DBD0: .4byte gSaveBlock1Ptr
-_0815DBD4: .4byte 0x00003d34
-_0815DBD8: .4byte 0x00003d38
- thumb_func_end sub_815DA54
-
- thumb_func_start sub_815DBDC
-sub_815DBDC: @ 815DBDC
- push {r4,lr}
- ldr r4, _0815DBF0 @ =gUnknown_203F45C
- ldr r0, [r4]
- bl Free
- movs r0, 0
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0815DBF0: .4byte gUnknown_203F45C
- thumb_func_end sub_815DBDC
-
- thumb_func_start sub_815DBF4
-sub_815DBF4: @ 815DBF4
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r4, r1, 24
- lsrs r4, 24
- ldr r0, _0815DC28 @ =0x00004003
- adds r1, r4, 0
- bl VarSet
- ldr r5, _0815DC2C @ =gUnknown_203F45C
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x3C
- ldrb r0, [r0]
- adds r1, 0x3D
- ldrb r1, [r1]
- bl sub_815E068
- cmp r4, 0
- bne _0815DC30
- ldr r0, [r5]
- adds r0, 0xC
- adds r1, r6, 0
- bl sub_815DEFC
- b _0815DC3A
- .align 2, 0
-_0815DC28: .4byte 0x00004003
-_0815DC2C: .4byte gUnknown_203F45C
-_0815DC30:
- ldr r0, [r5]
- adds r0, 0x24
- adds r1, r6, 0
- bl sub_815DEFC
-_0815DC3A:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_815DBF4
-
- thumb_func_start sub_815DC40
-sub_815DC40: @ 815DC40
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r4, r1, 24
- lsrs r4, 24
- ldr r0, _0815DC74 @ =0x00004003
- adds r1, r4, 0
- bl VarSet
- ldr r5, _0815DC78 @ =gUnknown_203F45C
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x3C
- ldrb r0, [r0]
- adds r1, 0x3D
- ldrb r1, [r1]
- bl sub_815E068
- cmp r4, 0
- bne _0815DC7C
- ldr r0, [r5]
- adds r0, 0x18
- adds r1, r6, 0
- bl sub_815DEFC
- b _0815DC86
- .align 2, 0
-_0815DC74: .4byte 0x00004003
-_0815DC78: .4byte gUnknown_203F45C
-_0815DC7C:
- ldr r0, [r5]
- adds r0, 0x30
- adds r1, r6, 0
- bl sub_815DEFC
-_0815DC86:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_815DC40
-
- thumb_func_start sub_815DC8C
-sub_815DC8C: @ 815DC8C
- push {r4-r7,lr}
- ldr r0, _0815DCBC @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldr r1, _0815DCC0 @ =0x00003d34
- adds r0, r1
- ldr r5, [r0]
- ldr r4, _0815DCC4 @ =gUnknown_203F458
- ldr r0, _0815DCC8 @ =0x00001f0c
- bl AllocZeroed
- str r0, [r4]
- ldr r1, _0815DCCC @ =gMapHeader
- ldrb r1, [r1, 0x12]
- subs r1, 0x2A
- strb r1, [r0]
- bl sub_815D834
- cmp r0, 0x1
- bne _0815DCD0
- ldr r0, [r4]
- adds r0, 0x4
- bl sub_815D80C
- b _0815DD18
- .align 2, 0
-_0815DCBC: .4byte gSaveBlock1Ptr
-_0815DCC0: .4byte 0x00003d34
-_0815DCC4: .4byte gUnknown_203F458
-_0815DCC8: .4byte 0x00001f0c
-_0815DCCC: .4byte gMapHeader
-_0815DCD0:
- ldr r0, [r4]
- ldr r1, _0815DD20 @ =gUnknown_84827AC
- adds r0, 0x4
- movs r2, 0x8
- bl memcpy
- lsls r1, r5, 5
- ldr r0, _0815DD24 @ =gUnknown_84827B4
- adds r7, r1, r0
- movs r5, 0
- movs r4, 0x7
-_0815DCE6:
- ldr r6, _0815DD28 @ =gUnknown_203F458
- ldr r0, [r6]
- adds r0, r5, r0
- adds r0, 0xC
- ldm r7!, {r1}
- movs r2, 0xF8
- lsls r2, 2
- bl memcpy
- movs r0, 0xF8
- lsls r0, 2
- adds r5, r0
- subs r4, 0x1
- cmp r4, 0
- bge _0815DCE6
- ldr r0, [r6]
- adds r0, 0xC
- movs r1, 0xF8
- lsls r1, 5
- bl CalcByteArraySum
- ldr r1, [r6]
- str r0, [r1, 0x8]
- bl sub_815EC0C
-_0815DD18:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0815DD20: .4byte gUnknown_84827AC
-_0815DD24: .4byte gUnknown_84827B4
-_0815DD28: .4byte gUnknown_203F458
- thumb_func_end sub_815DC8C
-
- thumb_func_start sub_815DD2C
-sub_815DD2C: @ 815DD2C
- push {r4,lr}
- ldr r4, _0815DD40 @ =gUnknown_203F458
- ldr r0, [r4]
- bl Free
- movs r0, 0
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0815DD40: .4byte gUnknown_203F458
- thumb_func_end sub_815DD2C
-
- thumb_func_start sub_815DD44
-sub_815DD44: @ 815DD44
- push {r4,lr}
- ldr r0, _0815DD68 @ =gMapHeader
- ldrh r0, [r0, 0x12]
- ldr r1, _0815DD6C @ =0xfffffed7
- adds r0, r1
- ldr r1, _0815DD70 @ =gUnknown_203F458
- ldr r4, [r1]
- ldrb r1, [r4, 0x4]
- cmp r0, r1
- ble _0815DD78
- ldr r0, _0815DD74 @ =gSpecialVar_Result
- movs r1, 0x3
- strh r1, [r0]
- movs r0, 0x99
- lsls r0, 1
- bl sub_8055D40
- b _0815DDA2
- .align 2, 0
-_0815DD68: .4byte gMapHeader
-_0815DD6C: .4byte 0xfffffed7
-_0815DD70: .4byte gUnknown_203F458
-_0815DD74: .4byte gSpecialVar_Result
-_0815DD78:
- ldr r3, _0815DDA8 @ =gSpecialVar_Result
- ldrb r1, [r4]
- lsls r0, r1, 5
- subs r0, r1
- lsls r0, 5
- adds r0, r4, r0
- ldrb r0, [r0, 0xE]
- strh r0, [r3]
- ldr r2, _0815DDAC @ =gUnknown_847A284
- ldrb r1, [r4]
- lsls r0, r1, 1
- adds r0, r1
- ldrh r3, [r3]
- adds r0, r3
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- bl sub_8055D40
- bl sub_815DDB0
-_0815DDA2:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0815DDA8: .4byte gSpecialVar_Result
-_0815DDAC: .4byte gUnknown_847A284
- thumb_func_end sub_815DD44
-
- thumb_func_start sub_815DDB0
-sub_815DDB0: @ 815DDB0
- push {r4-r6,lr}
- ldr r0, _0815DDD0 @ =gUnknown_203F458
- ldr r2, [r0]
- ldrb r1, [r2]
- lsls r0, r1, 5
- subs r0, r1
- lsls r0, 5
- adds r2, r0
- ldrb r0, [r2, 0xE]
- cmp r0, 0x1
- beq _0815DE18
- cmp r0, 0x1
- bgt _0815DDD4
- cmp r0, 0
- beq _0815DDDA
- b _0815DEF0
- .align 2, 0
-_0815DDD0: .4byte gUnknown_203F458
-_0815DDD4:
- cmp r0, 0x2
- beq _0815DE64
- b _0815DEF0
-_0815DDDA:
- ldrb r2, [r2, 0x1B]
- movs r3, 0
- ldr r0, _0815DE04 @ =gUnknown_8479ED8
- ldrb r1, [r0, 0x1]
- adds r6, r0, 0
- cmp r1, r2
- beq _0815DDF8
- adds r1, r6, 0
-_0815DDEA:
- adds r1, 0x4
- adds r3, 0x1
- cmp r3, 0x52
- bhi _0815DDF8
- ldrb r0, [r1, 0x1]
- cmp r0, r2
- bne _0815DDEA
-_0815DDF8:
- cmp r3, 0x53
- beq _0815DE08
- lsls r0, r3, 2
- adds r0, r6
- ldrb r1, [r0]
- b _0815DE0A
- .align 2, 0
-_0815DE04: .4byte gUnknown_8479ED8
-_0815DE08:
- movs r1, 0x12
-_0815DE0A:
- ldr r0, _0815DE14 @ =0x00004011
- bl VarSet
- b _0815DEF0
- .align 2, 0
-_0815DE14: .4byte 0x00004011
-_0815DE18:
- ldrb r2, [r2, 0x1B]
- movs r3, 0
- ldr r0, _0815DE44 @ =gUnknown_847A024
- ldrb r1, [r0, 0x2]
- adds r4, r0, 0
- cmp r1, r2
- beq _0815DE36
- adds r1, r4, 0
-_0815DE28:
- adds r1, 0x8
- adds r3, 0x1
- cmp r3, 0x9
- bhi _0815DE36
- ldrb r0, [r1, 0x2]
- cmp r0, r2
- bne _0815DE28
-_0815DE36:
- cmp r3, 0xA
- beq _0815DE48
- lsls r0, r3, 3
- adds r0, r4
- ldrb r1, [r0]
- ldrb r4, [r0, 0x1]
- b _0815DE4C
- .align 2, 0
-_0815DE44: .4byte gUnknown_847A024
-_0815DE48:
- movs r1, 0x12
- movs r4, 0x12
-_0815DE4C:
- ldr r0, _0815DE5C @ =0x00004010
- bl VarSet
- ldr r0, _0815DE60 @ =0x00004013
- adds r1, r4, 0
- bl VarSet
- b _0815DEF0
- .align 2, 0
-_0815DE5C: .4byte 0x00004010
-_0815DE60: .4byte 0x00004013
-_0815DE64:
- movs r4, 0
- ldr r6, _0815DEAC @ =gUnknown_8479ED8
-_0815DE68:
- ldr r0, _0815DEB0 @ =gUnknown_203F458
- ldr r3, [r0]
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r4
- lsls r1, 3
- ldrb r2, [r3]
- lsls r0, r2, 5
- subs r0, r2
- lsls r0, 5
- adds r1, r0
- adds r3, r1
- ldrb r2, [r3, 0x1B]
- movs r3, 0
- ldr r1, _0815DEAC @ =gUnknown_8479ED8
- ldrb r0, [r1, 0x1]
- adds r5, r4, 0x1
- cmp r0, r2
- beq _0815DE9E
-_0815DE90:
- adds r1, 0x4
- adds r3, 0x1
- cmp r3, 0x52
- bhi _0815DE9E
- ldrb r0, [r1, 0x1]
- cmp r0, r2
- bne _0815DE90
-_0815DE9E:
- cmp r3, 0x53
- beq _0815DEB4
- lsls r0, r3, 2
- adds r0, r6
- ldrb r1, [r0]
- b _0815DEB6
- .align 2, 0
-_0815DEAC: .4byte gUnknown_8479ED8
-_0815DEB0: .4byte gUnknown_203F458
-_0815DEB4:
- movs r1, 0x12
-_0815DEB6:
- cmp r4, 0x1
- beq _0815DED8
- cmp r4, 0x1
- bgt _0815DEC4
- cmp r4, 0
- beq _0815DECA
- b _0815DEEA
-_0815DEC4:
- cmp r4, 0x2
- beq _0815DEE4
- b _0815DEEA
-_0815DECA:
- ldr r0, _0815DED4 @ =0x00004012
- bl VarSet
- b _0815DEEA
- .align 2, 0
-_0815DED4: .4byte 0x00004012
-_0815DED8:
- ldr r0, _0815DEE0 @ =0x00004010
- bl VarSet
- b _0815DEEA
- .align 2, 0
-_0815DEE0: .4byte 0x00004010
-_0815DEE4:
- ldr r0, _0815DEF8 @ =0x00004011
- bl VarSet
-_0815DEEA:
- adds r4, r5, 0
- cmp r4, 0x2
- ble _0815DE68
-_0815DEF0:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0815DEF8: .4byte 0x00004011
- thumb_func_end sub_815DDB0
-
- thumb_func_start sub_815DEFC
-sub_815DEFC: @ 815DEFC
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x3
- movs r3, 0x2
- bl ConvertEasyChatWordsToString
- movs r2, 0x1
- negs r2, r2
- movs r0, 0x2
- adds r1, r4, 0
- bl GetStringWidth
- cmp r0, 0xC4
- bls _0815DF4E
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x2
- movs r3, 0x3
- bl ConvertEasyChatWordsToString
- ldrb r0, [r4]
- movs r1, 0x1
- cmp r0, 0xFE
- beq _0815DF40
-_0815DF32:
- adds r0, r4, r1
- ldrb r0, [r0]
- adds r1, 0x1
- cmp r0, 0xFE
- bne _0815DF32
- b _0815DF40
-_0815DF3E:
- adds r1, 0x1
-_0815DF40:
- adds r0, r4, r1
- ldrb r0, [r0]
- cmp r0, 0xFE
- bne _0815DF3E
- adds r1, r4, r1
- movs r0, 0xFA
- strb r0, [r1]
-_0815DF4E:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_815DEFC
-
- thumb_func_start sub_815DF54
-sub_815DF54: @ 815DF54
- push {r4,r5,lr}
- ldr r0, _0815DF90 @ =gSpecialVar_0x8006
- ldrh r4, [r0]
- ldr r2, _0815DF94 @ =gUnknown_203F458
- ldr r3, [r2]
- ldrb r1, [r3]
- lsls r0, r1, 5
- subs r0, r1
- lsls r1, r0, 5
- adds r0, r3, r1
- ldrb r5, [r0, 0xE]
- cmp r5, 0x1
- beq _0815DF7C
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- adds r0, r3, r0
-_0815DF7C:
- ldrb r1, [r0, 0x1B]
- ldr r0, _0815DF98 @ =gSpecialVar_0x8005
- ldrh r0, [r0]
- cmp r0, 0x3
- beq _0815DFD4
- cmp r0, 0x3
- bgt _0815DF9C
- cmp r0, 0x2
- beq _0815DFA6
- b _0815E05C
- .align 2, 0
-_0815DF90: .4byte gSpecialVar_0x8006
-_0815DF94: .4byte gUnknown_203F458
-_0815DF98: .4byte gSpecialVar_0x8005
-_0815DF9C:
- cmp r0, 0x4
- beq _0815E000
- cmp r0, 0x5
- beq _0815E038
- b _0815E05C
-_0815DFA6:
- adds r0, r5, 0
- bl sub_815E068
- ldr r0, _0815DFD0 @ =gUnknown_203F458
- ldr r0, [r0]
- ldrb r2, [r0]
- lsls r1, r2, 5
- subs r1, r2
- lsls r1, 5
- adds r1, 0xC
- adds r0, r1
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r4
- lsls r1, 3
- adds r1, 0x4
- adds r0, r1
- adds r0, 0xE
- b _0815E026
- .align 2, 0
-_0815DFD0: .4byte gUnknown_203F458
-_0815DFD4:
- adds r0, r5, 0
- bl sub_815E068
- ldr r0, _0815DFFC @ =gUnknown_203F458
- ldr r0, [r0]
- ldrb r2, [r0]
- lsls r1, r2, 5
- subs r1, r2
- lsls r1, 5
- adds r1, 0xC
- adds r0, r1
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r4
- lsls r1, 3
- adds r1, 0x4
- adds r0, r1
- adds r0, 0x1A
- b _0815E026
- .align 2, 0
-_0815DFFC: .4byte gUnknown_203F458
-_0815E000:
- adds r0, r5, 0
- bl sub_815E068
- ldr r0, _0815E030 @ =gUnknown_203F458
- ldr r0, [r0]
- ldrb r2, [r0]
- lsls r1, r2, 5
- subs r1, r2
- lsls r1, 5
- adds r1, 0xC
- adds r0, r1
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r4
- lsls r1, 3
- adds r1, 0x4
- adds r0, r1
- adds r0, 0x26
-_0815E026:
- ldr r1, _0815E034 @ =gStringVar4
- bl sub_815DEFC
- b _0815E05C
- .align 2, 0
-_0815E030: .4byte gUnknown_203F458
-_0815E034: .4byte gStringVar4
-_0815E038:
- ldr r0, [r2]
- ldrb r2, [r0]
- lsls r1, r2, 5
- subs r1, r2
- lsls r1, 5
- adds r1, 0xC
- adds r0, r1
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r4
- lsls r1, 3
- adds r1, 0x4
- adds r0, r1
- adds r0, 0x32
- ldr r1, _0815E064 @ =gStringVar4
- bl sub_815DEFC
-_0815E05C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0815E064: .4byte gStringVar4
- thumb_func_end sub_815DF54
-
thumb_func_start sub_815E068
sub_815E068: @ 815E068
push {r4,r5,lr}
diff --git a/data/data.s b/data/data.s
index 01587d3c6..505dde2c1 100644
--- a/data/data.s
+++ b/data/data.s
@@ -1,3 +1,6 @@
+#include "constants/region_map.h"
+#include "constants/trainer_classes.h"
+
.section .rodata
.align 2
@@ -327,7 +330,156 @@ gFacilityClassToPicIndex:: @ 82538A8
.incbin "baserom.gba", 0x2538A8, 0x96
gFacilityClassToTrainerClass:: @ 825393E
- .incbin "baserom.gba", 0x25393E, 0x96
+ .byte CLASS_AQUA_LEADER
+ .byte CLASS_TEAM_AQUA
+ .byte CLASS_TEAM_AQUA
+ .byte CLASS_AROMA_LADY
+ .byte CLASS_RUIN_MANIAC
+ .byte CLASS_INTERVIEWER
+ .byte CLASS_TUBER
+ .byte CLASS_TUBER_2
+ .byte CLASS_COOLTRAINER
+ .byte CLASS_COOLTRAINER
+ .byte CLASS_HEX_MANIAC
+ .byte CLASS_LADY
+ .byte CLASS_BEAUTY
+ .byte CLASS_RICH_BOY
+ .byte CLASS_POKEMANIAC
+ .byte CLASS_SWIMMER_MALE
+ .byte CLASS_BLACK_BELT
+ .byte CLASS_GUITARIST
+ .byte CLASS_KINDLER
+ .byte CLASS_CAMPER
+ .byte CLASS_BUG_MANIAC
+ .byte CLASS_PSYCHIC
+ .byte CLASS_PSYCHIC
+ .byte CLASS_GENTLEMAN
+ .byte CLASS_ELITE_FOUR
+ .byte CLASS_ELITE_FOUR
+ .byte CLASS_LEADER
+ .byte CLASS_LEADER
+ .byte CLASS_LEADER
+ .byte CLASS_SCHOOL_KID
+ .byte CLASS_SCHOOL_KID
+ .byte CLASS_SR_AND_JR
+ .byte CLASS_POKEFAN
+ .byte CLASS_POKEFAN
+ .byte CLASS_EXPERT
+ .byte CLASS_EXPERT
+ .byte CLASS_YOUNGSTER
+ .byte CLASS_CHAMPION
+ .byte CLASS_FISHERMAN
+ .byte CLASS_TRIATHLETE
+ .byte CLASS_TRIATHLETE
+ .byte CLASS_TRIATHLETE
+ .byte CLASS_TRIATHLETE
+ .byte CLASS_TRIATHLETE
+ .byte CLASS_TRIATHLETE
+ .byte CLASS_DRAGON_TAMER
+ .byte CLASS_BIRD_KEEPER
+ .byte CLASS_NINJA_BOY
+ .byte CLASS_BATTLE_GIRL
+ .byte CLASS_PARASOL_LADY
+ .byte CLASS_SWIMMER_FEMALE
+ .byte CLASS_PICNICKER
+ .byte CLASS_TWINS
+ .byte CLASS_SAILOR
+ .byte CLASS_BOARDER
+ .byte CLASS_BOARDER
+ .byte CLASS_COLLECTOR
+ .byte CLASS_PKMN_TRAINER_3
+ .byte CLASS_PKMN_TRAINER_3
+ .byte CLASS_PKMN_TRAINER_3
+ .byte CLASS_PKMN_TRAINER_3
+ .byte CLASS_PKMN_TRAINER_3
+ .byte CLASS_PKMN_TRAINER_3
+ .byte CLASS_PKMN_TRAINER_3
+ .byte CLASS_PKMN_BREEDER
+ .byte CLASS_PKMN_BREEDER
+ .byte CLASS_PKMN_RANGER
+ .byte CLASS_PKMN_RANGER
+ .byte CLASS_MAGMA_LEADER
+ .byte CLASS_TEAM_MAGMA
+ .byte CLASS_TEAM_MAGMA
+ .byte CLASS_LASS
+ .byte CLASS_BUG_CATCHER
+ .byte CLASS_HIKER
+ .byte CLASS_YOUNG_COUPLE
+ .byte CLASS_OLD_COUPLE
+ .byte CLASS_SIS_AND_BRO
+ .byte CLASS_AQUA_ADMIN
+ .byte CLASS_AQUA_ADMIN
+ .byte CLASS_MAGMA_ADMIN
+ .byte CLASS_MAGMA_ADMIN
+ .byte CLASS_LEADER
+ .byte CLASS_LEADER
+ .byte CLASS_LEADER
+ .byte CLASS_LEADER
+ .byte CLASS_LEADER
+ .byte CLASS_ELITE_FOUR
+ .byte CLASS_ELITE_FOUR
+ .byte CLASS_YOUNGSTER_2
+ .byte CLASS_BUG_CATCHER_2
+ .byte CLASS_LASS_2
+ .byte CLASS_SAILOR_2
+ .byte CLASS_CAMPER_2
+ .byte CLASS_PICNICKER_2
+ .byte CLASS_POKEMANIAC_2
+ .byte CLASS_SUPER_NERD
+ .byte CLASS_HIKER_2
+ .byte CLASS_BIKER
+ .byte CLASS_BURGLAR
+ .byte CLASS_ENGINEER
+ .byte CLASS_FISHERMAN_2
+ .byte CLASS_SWIMMER_MALE_2
+ .byte CLASS_CUE_BALL
+ .byte CLASS_GAMER
+ .byte CLASS_BEAUTY_2
+ .byte CLASS_SWIMMER_FEMALE_2
+ .byte CLASS_PSYCHIC_2
+ .byte CLASS_ROCKER
+ .byte CLASS_JUGGLER
+ .byte CLASS_TAMER
+ .byte CLASS_BIRD_KEEPER_2
+ .byte CLASS_BLACK_BELT_2
+ .byte CLASS_RIVAL
+ .byte CLASS_SCIENTIST
+ .byte CLASS_BOSS
+ .byte CLASS_TEAM_ROCKET
+ .byte CLASS_COOLTRAINER_2
+ .byte CLASS_COOLTRAINER_2
+ .byte CLASS_ELITE_FOUR_2
+ .byte CLASS_ELITE_FOUR_2
+ .byte CLASS_LEADER_2
+ .byte CLASS_LEADER_2
+ .byte CLASS_GENTLEMAN_2
+ .byte CLASS_RIVAL_2
+ .byte CLASS_CHAMPION_2
+ .byte CLASS_CHANNELER
+ .byte CLASS_TWINS_2
+ .byte CLASS_COOL_COUPLE
+ .byte CLASS_YOUNG_COUPLE_2
+ .byte CLASS_CRUSH_KIN
+ .byte CLASS_SIS_AND_BRO_2
+ .byte CLASS_PKMN_PROF
+ .byte CLASS_PLAYER
+ .byte CLASS_PLAYER
+ .byte CLASS_PLAYER
+ .byte CLASS_PLAYER
+ .byte CLASS_TEAM_ROCKET
+ .byte CLASS_PSYCHIC_2
+ .byte CLASS_CRUSH_GIRL
+ .byte CLASS_TUBER_3
+ .byte CLASS_PKMN_BREEDER_2
+ .byte CLASS_PKMN_RANGER_2
+ .byte CLASS_PKMN_RANGER_2
+ .byte CLASS_AROMA_LADY_2
+ .byte CLASS_RUIN_MANIAC_2
+ .byte CLASS_LADY_2
+ .byte CLASS_PAINTER
+ .byte CLASS_ELITE_FOUR_2
+ .byte CLASS_ELITE_FOUR_2
+ .byte CLASS_CHAMPION_2
gUnknown_82539D4:: @ 82539D4
.incbin "baserom.gba", 0x2539D4, 0x110
diff --git a/data/data_835B488.s b/data/data_835B488.s
index 44e4fe725..8d2183672 100644
--- a/data/data_835B488.s
+++ b/data/data_835B488.s
@@ -2002,10 +2002,9 @@ gUnknown_83EEC98:: @ 83EEC98
.incbin "baserom.gba", 0x3EEC98, 0x50
gUnknown_83EECE8:: @ 83EECE8
- .incbin "baserom.gba", 0x3EECE8, 0x546
+ .incbin "baserom.gba", 0x3EECE8, 0x14
-gUnknown_83EF22E:: @ 83EF22E
- .incbin "baserom.gba", 0x3EF22E, 0xE
+ .include "data/text/map_section_names.inc"
gUnknown_83EF23C:: @ 83EF23C
.incbin "baserom.gba", 0x3EF23C, 0x1E
@@ -2197,7 +2196,115 @@ gUnknown_83F1CA8:: @ 83F1CA8
.incbin "baserom.gba", 0x3F1CA8, 0x4
gUnknown_83F1CAC:: @ 83F1CAC
- .incbin "baserom.gba", 0x3F1CAC, 0x1B4
+ .4byte gMapSecName_PalletTown
+ .4byte gMapSecName_ViridianCity
+ .4byte gMapSecName_PewterCity
+ .4byte gMapSecName_CeruleanCity
+ .4byte gMapSecName_LavenderTown
+ .4byte gMapSecName_VermilionCity
+ .4byte gMapSecName_CeladonCity
+ .4byte gMapSecName_FuchsiaCity
+ .4byte gMapSecName_CinnabarIsland
+ .4byte gMapSecName_IndigoPlateau
+ .4byte gMapSecName_SaffronCity
+ .4byte gMapSecName_Route4
+ .4byte gMapSecName_Route10
+ .4byte gMapSecName_Route1
+ .4byte gMapSecName_Route2
+ .4byte gMapSecName_Route3
+ .4byte gMapSecName_Route4_2
+ .4byte gMapSecName_Route5
+ .4byte gMapSecName_Route6
+ .4byte gMapSecName_Route7
+ .4byte gMapSecName_Route8
+ .4byte gMapSecName_Route9
+ .4byte gMapSecName_Route10_2
+ .4byte gMapSecName_Route11
+ .4byte gMapSecName_Route12
+ .4byte gMapSecName_Route13
+ .4byte gMapSecName_Route14
+ .4byte gMapSecName_Route15
+ .4byte gMapSecName_Route16
+ .4byte gMapSecName_Route17
+ .4byte gMapSecName_Route18
+ .4byte gMapSecName_Route19
+ .4byte gMapSecName_Route20
+ .4byte gMapSecName_Route21
+ .4byte gMapSecName_Route22
+ .4byte gMapSecName_Route23
+ .4byte gMapSecName_Route24
+ .4byte gMapSecName_Route25
+ .4byte gMapSecName_ViridianForest
+ .4byte gMapSecName_MtMoon
+ .4byte gMapSecName_SSAnne
+ .4byte gMapSecName_UndergroundPath
+ .4byte gMapSecName_UndergroundPath_2
+ .4byte gMapSecName_DiglettsCave
+ .4byte gMapSecName_VictoryRoad
+ .4byte gMapSecName_RocketHideout
+ .4byte gMapSecName_SilphCo
+ .4byte gMapSecName_PokemonMansion
+ .4byte gMapSecName_SafariZone
+ .4byte gMapSecName_PokemonLeague
+ .4byte gMapSecName_RockTunnel
+ .4byte gMapSecName_SeafoamIslands
+ .4byte gMapSecName_PokemonTower
+ .4byte gMapSecName_CeruleanCave
+ .4byte gMapSecName_PowerPlant
+ .4byte gMapSecName_OneIsland
+ .4byte gMapSecName_TwoIsland
+ .4byte gMapSecName_ThreeIsland
+ .4byte gMapSecName_FourIsland
+ .4byte gMapSecName_FiveIsland
+ .4byte gMapSecName_SevenIsland
+ .4byte gMapSecName_SixIsland
+ .4byte gMapSecName_KindleRoad
+ .4byte gMapSecName_TreasureBeach
+ .4byte gMapSecName_CapeBrink
+ .4byte gMapSecName_BondBridge
+ .4byte gMapSecName_ThreeIslePort
+ .4byte gMapSecName_SeviiIsle6
+ .4byte gMapSecName_SeviiIsle7
+ .4byte gMapSecName_SeviiIsle8
+ .4byte gMapSecName_SeviiIsle9
+ .4byte gMapSecName_ResortGorgeous
+ .4byte gMapSecName_WaterLabyrinth
+ .4byte gMapSecName_FiveIsleMeadow
+ .4byte gMapSecName_MemorialPillar
+ .4byte gMapSecName_OutcastIsland
+ .4byte gMapSecName_GreenPath
+ .4byte gMapSecName_WaterPath
+ .4byte gMapSecName_RuinValley
+ .4byte gMapSecName_TrainerTower
+ .4byte gMapSecName_CanyonEntrance
+ .4byte gMapSecName_SevaultCanyon
+ .4byte gMapSecName_TanobyRuins
+ .4byte gMapSecName_SeviiIsle22
+ .4byte gMapSecName_SeviiIsle23
+ .4byte gMapSecName_SeviiIsle24
+ .4byte gMapSecName_NavelRock
+ .4byte gMapSecName_MtEmber
+ .4byte gMapSecName_BerryForest
+ .4byte gMapSecName_IcefallCave
+ .4byte gMapSecName_RocketWarehouse
+ .4byte gMapSecName_TrainerTower_2
+ .4byte gMapSecName_DottedHole
+ .4byte gMapSecName_LostCave
+ .4byte gMapSecName_PatternBush
+ .4byte gMapSecName_AlteringCave
+ .4byte gMapSecName_TanobyChambers
+ .4byte gMapSecName_ThreeIslePath
+ .4byte gMapSecName_TanobyKey
+ .4byte gMapSecName_BirthIsland
+ .4byte gMapSecName_MoneanChamber
+ .4byte gMapSecName_LiptooChamber
+ .4byte gMapSecName_WeepthChamber
+ .4byte gMapSecName_DilfordChamber
+ .4byte gMapSecName_ScufibChamber
+ .4byte gMapSecName_RixyChamber
+ .4byte gMapSecName_ViapoisChamber
+ .4byte gMapSecName_EmberSpa
+ .4byte gMapSecName_CeladonDept
gUnknown_83F1E60:: @ 83F1E60
.incbin "baserom.gba", 0x3F1E60, 0x318
diff --git a/data/data_8471F00.s b/data/data_8471F00.s
index 28454ac2d..6733b3f4d 100644
--- a/data/data_8471F00.s
+++ b/data/data_8471F00.s
@@ -1,3 +1,13 @@
+#include "constants/species.h"
+#include "constants/items.h"
+#include "constants/moves.h"
+#include "constants/easy_chat.h"
+#include "constants/facility_trainer_classes.h"
+
+#define NULL 0
+
+ .include "asm/macros.inc"
+
.section .rodata
.align 2
@@ -265,74 +275,148 @@ gUnknown_8479D10:: @ 8479D10
gUnknown_8479D24:: @ 8479D24
.asciz "ttdata->id == 0"
-gUnknown_8479D34:: @ 8479D34
- .incbin "baserom.gba", 0x479D34, 0x4
+ // trainer_tower
+
+ .section .rodata.after_trainer_tower
-gUnknown_8479D38:: @ 8479D38
- .incbin "baserom.gba", 0x479D38, 0x8
+ // unk_815F138
-gUnknown_8479D40:: @ 8479D40
- .incbin "baserom.gba", 0x479D40, 0x8
+gUnknown_847A328::
+ .incbin "data/graphics/unk_847a348.gbapal"
-gUnknown_8479D48:: @ 8479D48
- .incbin "baserom.gba", 0x479D48, 0x190
+gUnknown_847A348::
+ .incbin "data/graphics/unk_847a348.4bpp.lz"
-gUnknown_8479ED8:: @ 8479ED8
- .incbin "baserom.gba", 0x479ED8, 0x14C
+gUnknown_847A79C:: @ 847A79C
+ obj_tiles gUnknown_847A348, 0xE00, 0
-gUnknown_847A024:: @ 847A024
- .incbin "baserom.gba", 0x47A024, 0x50
+gUnknown_847A7A4:: @ 847A7A4
+ obj_pal gUnknown_847A328, 0
-gUnknown_847A074:: @ 847A074
- .incbin "baserom.gba", 0x47A074, 0x1A4
+gOamData_847A7AC::
+ .4byte 0x80000300, 0x00000000
-gUnknown_847A218:: @ 847A218
- .incbin "baserom.gba", 0x47A218, 0x14
+gOamData_847A7B4::
+ .4byte 0xc0004000, 0x00000000
-gUnknown_847A22C:: @ 847A22C
- .incbin "baserom.gba", 0x47A22C, 0x4
+gUnknown_847A7BC::
+ obj_image_anim_frame 0, 1
+ obj_image_anim_end
-gUnknown_847A230:: @ 847A230
- .incbin "baserom.gba", 0x47A230, 0x54
+gUnknown_847A7C4::
+ obj_image_anim_frame 16, 1
+ obj_image_anim_end
-gUnknown_847A284:: @ 847A284
- .incbin "baserom.gba", 0x47A284, 0x30
+gUnknown_847A7CC::
+ obj_image_anim_frame 32, 1
+ obj_image_anim_end
-gUnknown_847A2B4:: @ 847A2B4
- .incbin "baserom.gba", 0x47A2B4, 0x1E
+gUnknown_847A7D4::
+ .4byte gUnknown_847A7BC
+ .4byte gUnknown_847A7C4
+ .4byte gUnknown_847A7CC
-gUnknown_847A2D2:: @ 847A2D2
- .incbin "baserom.gba", 0x47A2D2, 0x1C
+gUnknown_847A7E0::
+ obj_image_anim_frame 48, 1
+ obj_image_anim_end
-gUnknown_847A2EE:: @ 847A2EE
- .incbin "baserom.gba", 0x47A2EE, 0x10
+gUnknown_847A7E8::
+ obj_image_anim_frame 80, 1
+ obj_image_anim_end
-gUnknown_847A2FE:: @ 847A2FE
- .incbin "baserom.gba", 0x47A2FE, 0x10
+gUnknown_847A7F0::
+ .4byte gUnknown_847A7E0
+ .4byte gUnknown_847A7E8
-gUnknown_847A30E:: @ 847A30E
- .incbin "baserom.gba", 0x47A30E, 0x48E
+gUnknown_847A7F8::
+ obj_rot_scal_anim_frame 0x100, 0x100, 0, 0
+ obj_rot_scal_anim_end
-gUnknown_847A79C:: @ 847A79C
- .incbin "baserom.gba", 0x47A79C, 0x8
+gUnknown_847A808::
+ obj_rot_scal_anim_frame 0x100, 0x100, 0, 0
+ obj_rot_scal_anim_frame 0x10, -0x10, 0, 8
+ obj_rot_scal_anim_end
-gUnknown_847A7A4:: @ 847A7A4
- .incbin "baserom.gba", 0x47A7A4, 0xBC
+gUnknown_847A820::
+ obj_rot_scal_anim_frame -0x12, 0x12, 0, 8
+ obj_rot_scal_anim_end
+
+gUnknown_847A830::
+ obj_rot_scal_anim_frame 0x6, -0x6, 0, 8
+ obj_rot_scal_anim_frame -0x4, 0x4, 0, 8
+ obj_rot_scal_anim_frame 0x100, 0x100, 0, 0
+ obj_rot_scal_anim_end
+
+gUnknown_847A850::
+ .4byte gUnknown_847A7F8
+ .4byte gUnknown_847A808
+ .4byte gUnknown_847A820
+ .4byte gUnknown_847A830
gUnknown_847A860:: @ 847A860
- .incbin "baserom.gba", 0x47A860, 0x18
+ spr_template 0, 0, gOamData_847A7AC, gUnknown_847A7D4, NULL, gUnknown_847A850, SpriteCallbackDummy
gUnknown_847A878:: @ 847A878
- .incbin "baserom.gba", 0x47A878, 0x18
+ spr_template 0, 0, gOamData_847A7B4, gUnknown_847A7F0, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+
+ // berry_fix_program
gUnknown_847A890:: @ 847A890
- .incbin "baserom.gba", 0x47A890, 0x7F1C
+ .4byte gUnknown_8EA467C, gUnknown_8EA52B8, gUnknown_8EA463C
+ .4byte gUnknown_8EA5664, gUnknown_8EA60C8, gUnknown_8EA5604
+ .4byte gUnknown_8EA6408, gUnknown_8EA7028, gUnknown_8EA63C8
+ .4byte gUnknown_8EA7320, gUnknown_8EA8118, gUnknown_8EA72E0
+ .4byte gUnknown_8EA8408, gUnknown_8EA8CC8, gUnknown_8EA83C8
+ .4byte gUnknown_8EA8F40, gUnknown_8EA9588, gUnknown_8EA8F00
+
+ .incbin "baserom.gba", 0x47A8D8, 0x2D4
+ // trainer_tower (again?)
+
+ @ 847ABAC
+ .include "data/trainer_tower/trainers.inc"
+
+ .align 2
gUnknown_84827AC:: @ 84827AC
- .incbin "baserom.gba", 0x4827AC, 0x8
+ .byte 0x08, 0x01
+ .align 2
+ .4byte 0
gUnknown_84827B4:: @ 84827B4
- .incbin "baserom.gba", 0x4827B4, 0x5F34
+ .4byte gUnknown_847F16C
+ .4byte gUnknown_847D26C
+ .4byte gUnknown_84808AC
+ .4byte gUnknown_847ABAC
+ .4byte gUnknown_847CAAC
+ .4byte gUnknown_847E9AC
+ .4byte gUnknown_847AF8C
+ .4byte gUnknown_847CE8C
+ .4byte gUnknown_847DA2C
+ .4byte gUnknown_847BF0C
+ .4byte gUnknown_847D64C
+ .4byte gUnknown_847DE0C
+ .4byte gUnknown_847B74C
+ .4byte gUnknown_847BB2C
+ .4byte gUnknown_848182C
+ .4byte gUnknown_847F92C
+ .4byte gUnknown_847C2EC
+ .4byte gUnknown_847C6CC
+ .4byte gUnknown_847E5CC
+ .4byte gUnknown_84804CC
+ .4byte gUnknown_84823CC
+ .4byte gUnknown_8481FEC
+ .4byte gUnknown_84800EC
+ .4byte gUnknown_847E1EC
+ .4byte gUnknown_847ED8C
+ .4byte gUnknown_848106C
+ .4byte gUnknown_8480C8C
+ .4byte gUnknown_847F92C
+ .4byte gUnknown_847F54C
+ .4byte gUnknown_847E1EC
+ .4byte gUnknown_847D64C
+ .4byte gUnknown_847C6CC
+
+ .include "data/text/move_descriptions.inc"
gUnknown_84886E8:: @ 84886E8
.incbin "baserom.gba", 0x4886E8, 0x588
diff --git a/data/graphics.s b/data/graphics.s
index 990a3dd9c..a1e421f2c 100644
--- a/data/graphics.s
+++ b/data/graphics.s
@@ -16222,58 +16222,58 @@ gUnknown_8EA1D68:: @ 8EA1D68
.incbin "baserom.gba", 0xEA1D68, 0x28D4
gUnknown_8EA463C:: @ 8EA463C
- .incbin "baserom.gba", 0xEA463C, 0x40 @UNKNOWN
+ .incbin "graphics/berry_fix/gba_small.gbapal"
gUnknown_8EA467C:: @ 8EA467C
- .incbin "baserom.gba", 0xEA467C, 0xC3C
+ .incbin "graphics/berry_fix/gba_small.4bpp.lz"
gUnknown_8EA52B8:: @ 8EA52B8
- .incbin "baserom.gba", 0xEA52B8, 0x34C
+ .incbin "graphics/berry_fix/gba_small.bin.lz"
gUnknown_8EA5604:: @ 8EA5604
- .incbin "baserom.gba", 0xEA5604, 0x60 @UNKNOWN
+ .incbin "graphics/berry_fix/logo.gbapal"
gUnknown_8EA5664:: @ 8EA5664
- .incbin "baserom.gba", 0xEA5664, 0xA64
+ .incbin "graphics/berry_fix/logo.4bpp.lz"
gUnknown_8EA60C8:: @ 8EA60C8
- .incbin "baserom.gba", 0xEA60C8, 0x300
+ .incbin "graphics/berry_fix/logo.bin.lz"
gUnknown_8EA63C8:: @ 8EA63C8
- .incbin "baserom.gba", 0xEA63C8, 0x40 @UNKNOWN
+ .incbin "graphics/berry_fix/gba_transfer.gbapal"
gUnknown_8EA6408:: @ 8EA6408
- .incbin "baserom.gba", 0xEA6408, 0xC20
+ .incbin "graphics/berry_fix/gba_transfer.4bpp.lz"
gUnknown_8EA7028:: @ 8EA7028
- .incbin "baserom.gba", 0xEA7028, 0x2B8
+ .incbin "graphics/berry_fix/gba_transfer.bin.lz"
gUnknown_8EA72E0:: @ 8EA72E0
- .incbin "baserom.gba", 0xEA72E0, 0x40 @UNKNOWN
+ .incbin "graphics/berry_fix/gba_transfer_highlight.gbapal"
gUnknown_8EA7320:: @ 8EA7320
- .incbin "baserom.gba", 0xEA7320, 0xDF8
+ .incbin "graphics/berry_fix/gba_transfer_highlight.4bpp.lz"
gUnknown_8EA8118:: @ 8EA8118
- .incbin "baserom.gba", 0xEA8118, 0x2B0
+ .incbin "graphics/berry_fix/gba_transfer_highlight.bin.lz"
gUnknown_8EA83C8:: @ 8EA83C8
- .incbin "baserom.gba", 0xEA83C8, 0x40 @UNKNOWN
+ .incbin "graphics/berry_fix/gba_transfer_error.gbapal"
gUnknown_8EA8408:: @ 8EA8408
- .incbin "baserom.gba", 0xEA8408, 0x8C0
+ .incbin "graphics/berry_fix/gba_transfer_error.4bpp.lz"
gUnknown_8EA8CC8:: @ 8EA8CC8
- .incbin "baserom.gba", 0xEA8CC8, 0x238
+ .incbin "graphics/berry_fix/gba_transfer_error.bin.lz"
gUnknown_8EA8F00:: @ 8EA8F00
- .incbin "baserom.gba", 0xEA8F00, 0x40 @UNKNOWN
+ .incbin "graphics/berry_fix/window.gbapal"
gUnknown_8EA8F40:: @ 8EA8F40
- .incbin "baserom.gba", 0xEA8F40, 0x648
+ .incbin "graphics/berry_fix/window.4bpp.lz"
gUnknown_8EA9588:: @ 8EA9588
- .incbin "baserom.gba", 0xEA9588, 0x26C
+ .incbin "graphics/berry_fix/window.bin.lz"
gUnknown_8EA97F4:: @ 8EA97F4
.incbin "baserom.gba", 0xEA97F4, 0x120 @UNKNOWN
diff --git a/data/graphics/unk_847a348.png b/data/graphics/unk_847a348.png
new file mode 100644
index 000000000..9897a6d36
--- /dev/null
+++ b/data/graphics/unk_847a348.png
Binary files differ
diff --git a/data/text/map_section_names.inc b/data/text/map_section_names.inc
new file mode 100644
index 000000000..e91368a40
--- /dev/null
+++ b/data/text/map_section_names.inc
@@ -0,0 +1,327 @@
+gMapSecName_PalletTown::
+ .string "PALLET TOWN$"
+
+gMapSecName_ViridianCity::
+ .string "VIRIDIAN CITY$"
+
+gMapSecName_PewterCity::
+ .string "PEWTER CITY$"
+
+gMapSecName_CeruleanCity::
+ .string "CERULEAN CITY$"
+
+gMapSecName_LavenderTown::
+ .string "LAVENDER TOWN$"
+
+gMapSecName_VermilionCity::
+ .string "VERMILION CITY$"
+
+gMapSecName_CeladonCity::
+ .string "CELADON CITY$"
+
+gMapSecName_FuchsiaCity::
+ .string "FUCHSIA CITY$"
+
+gMapSecName_CinnabarIsland::
+ .string "CINNABAR ISLAND$"
+
+gMapSecName_IndigoPlateau::
+ .string "INDIGO PLATEAU$"
+
+gMapSecName_SaffronCity::
+ .string "SAFFRON CITY$"
+
+gMapSecName_Route4::
+ .string "ROUTE 4$"
+
+gMapSecName_Route10::
+ .string "ROUTE 10$"
+
+gMapSecName_Route1::
+ .string "ROUTE 1$"
+
+gMapSecName_Route2::
+ .string "ROUTE 2$"
+
+gMapSecName_Route3::
+ .string "ROUTE 3$"
+
+gMapSecName_Route4_2::
+ .string "ROUTE 4$"
+
+gMapSecName_Route5::
+ .string "ROUTE 5$"
+
+gMapSecName_Route6::
+ .string "ROUTE 6$"
+
+gMapSecName_Route7::
+ .string "ROUTE 7$"
+
+gMapSecName_Route8::
+ .string "ROUTE 8$"
+
+gMapSecName_Route9::
+ .string "ROUTE 9$"
+
+gMapSecName_Route10_2::
+ .string "ROUTE 10$"
+
+gMapSecName_Route11::
+ .string "ROUTE 11$"
+
+gMapSecName_Route12::
+ .string "ROUTE 12$"
+
+gMapSecName_Route13::
+ .string "ROUTE 13$"
+
+gMapSecName_Route14::
+ .string "ROUTE 14$"
+
+gMapSecName_Route15::
+ .string "ROUTE 15$"
+
+gMapSecName_Route16::
+ .string "ROUTE 16$"
+
+gMapSecName_Route17::
+ .string "ROUTE 17$"
+
+gMapSecName_Route18::
+ .string "ROUTE 18$"
+
+gMapSecName_Route19::
+ .string "ROUTE 19$"
+
+gMapSecName_Route20::
+ .string "ROUTE 20$"
+
+gMapSecName_Route21::
+ .string "ROUTE 21$"
+
+gMapSecName_Route22::
+ .string "ROUTE 22$"
+
+gMapSecName_Route23::
+ .string "ROUTE 23$"
+
+gMapSecName_Route24::
+ .string "ROUTE 24$"
+
+gMapSecName_Route25::
+ .string "ROUTE 25$"
+
+gMapSecName_ViridianForest::
+ .string "VIRIDIAN FOREST$"
+
+gMapSecName_MtMoon::
+ .string "MT. MOON$"
+
+gMapSecName_SSAnne::
+ .string "S.S. ANNE$"
+
+gMapSecName_UndergroundPath::
+ .string "UNDERGROUND PATH$"
+
+gMapSecName_UndergroundPath_2::
+ .string "UNDERGROUND PATH$"
+
+gMapSecName_DiglettsCave::
+ .string "DIGLETT’S CAVE$"
+
+gMapSecName_VictoryRoad::
+ .string "VICTORY ROAD$"
+
+gMapSecName_RocketHideout::
+ .string "ROCKET HIDEOUT$"
+
+gMapSecName_SilphCo::
+ .string "SILPH CO.$"
+
+gMapSecName_PokemonMansion::
+ .string "POKéMON MANSION$"
+
+gMapSecName_SafariZone::
+ .string "SAFARI ZONE$"
+
+gMapSecName_PokemonLeague::
+ .string "POKéMON LEAGUE$"
+
+gMapSecName_RockTunnel::
+ .string "ROCK TUNNEL$"
+
+gMapSecName_SeafoamIslands::
+ .string "SEAFOAM ISLANDS$"
+
+gMapSecName_PokemonTower::
+ .string "POKéMON TOWER$"
+
+gMapSecName_CeruleanCave::
+ .string "CERULEAN CAVE$"
+
+gMapSecName_PowerPlant::
+ .string "POWER PLANT$"
+
+gMapSecName_OneIsland::
+ .string "ONE ISLAND$"
+
+gMapSecName_TwoIsland::
+ .string "TWO ISLAND$"
+
+gMapSecName_ThreeIsland::
+ .string "THREE ISLAND$"
+
+gMapSecName_FourIsland::
+ .string "FOUR ISLAND$"
+
+gMapSecName_FiveIsland::
+ .string "FIVE ISLAND$"
+
+gMapSecName_SevenIsland::
+ .string "SEVEN ISLAND$"
+
+gMapSecName_SixIsland::
+ .string "SIX ISLAND$"
+
+gMapSecName_KindleRoad::
+ .string "KINDLE ROAD$"
+
+gMapSecName_TreasureBeach::
+ .string "TREASURE BEACH$"
+
+gMapSecName_CapeBrink::
+ .string "CAPE BRINK$"
+
+gMapSecName_BondBridge::
+ .string "BOND BRIDGE$"
+
+gMapSecName_ThreeIslePort::
+ .string "THREE ISLE PORT$"
+
+gMapSecName_SeviiIsle6::
+ .string "SEVII ISLE 6$"
+
+gMapSecName_SeviiIsle7::
+ .string "SEVII ISLE 7$"
+
+gMapSecName_SeviiIsle8::
+ .string "SEVII ISLE 8$"
+
+gMapSecName_SeviiIsle9::
+ .string "SEVII ISLE 9$"
+
+gMapSecName_ResortGorgeous::
+ .string "RESORT GORGEOUS$"
+
+gMapSecName_WaterLabyrinth::
+ .string "WATER LABYRINTH$"
+
+gMapSecName_FiveIsleMeadow::
+ .string "FIVE ISLE MEADOW$"
+
+gMapSecName_MemorialPillar::
+ .string "MEMORIAL PILLAR$"
+
+gMapSecName_OutcastIsland::
+ .string "OUTCAST ISLAND$"
+
+gMapSecName_GreenPath::
+ .string "GREEN PATH$"
+
+gMapSecName_WaterPath::
+ .string "WATER PATH$"
+
+gMapSecName_RuinValley::
+ .string "RUIN VALLEY$"
+
+gMapSecName_TrainerTower::
+ .string "TRAINER TOWER$"
+
+gMapSecName_CanyonEntrance::
+ .string "CANYON ENTRANCE$"
+
+gMapSecName_SevaultCanyon::
+ .string "SEVAULT CANYON$"
+
+gMapSecName_TanobyRuins::
+ .string "TANOBY RUINS$"
+
+gMapSecName_SeviiIsle22::
+ .string "SEVII ISLE 22$"
+
+gMapSecName_SeviiIsle23::
+ .string "SEVII ISLE 23$"
+
+gMapSecName_SeviiIsle24::
+ .string "SEVII ISLE 24$"
+
+gMapSecName_NavelRock::
+ .string "NAVEL ROCK$"
+
+gMapSecName_MtEmber::
+ .string "MT. EMBER$"
+
+gMapSecName_BerryForest::
+ .string "BERRY FOREST$"
+
+gMapSecName_IcefallCave::
+ .string "ICEFALL CAVE$"
+
+gMapSecName_RocketWarehouse::
+ .string "ROCKET WAREHOUSE$"
+
+gMapSecName_TrainerTower_2::
+ .string "TRAINER TOWER$"
+
+gMapSecName_DottedHole::
+ .string "DOTTED HOLE$"
+
+gMapSecName_LostCave::
+ .string "LOST CAVE$"
+
+gMapSecName_PatternBush::
+ .string "PATTERN BUSH$"
+
+gMapSecName_AlteringCave::
+ .string "ALTERING CAVE$"
+
+gMapSecName_TanobyChambers::
+ .string "TANOBY CHAMBERS$"
+
+gMapSecName_ThreeIslePath::
+ .string "THREE ISLE PATH$"
+
+gMapSecName_TanobyKey::
+ .string "TANOBY KEY$"
+
+gMapSecName_BirthIsland::
+ .string "BIRTH ISLAND$"
+
+gMapSecName_MoneanChamber::
+ .string "MONEAN CHAMBER$"
+
+gMapSecName_LiptooChamber::
+ .string "LIPTOO CHAMBER$"
+
+gMapSecName_WeepthChamber::
+ .string "WEEPTH CHAMBER$"
+
+gMapSecName_DilfordChamber::
+ .string "DILFORD CHAMBER$"
+
+gMapSecName_ScufibChamber::
+ .string "SCUFIB CHAMBER$"
+
+gMapSecName_RixyChamber::
+ .string "RIXY CHAMBER$"
+
+gMapSecName_ViapoisChamber::
+ .string "VIAPOIS CHAMBER$"
+
+gMapSecName_EmberSpa::
+ .string "EMBER SPA$"
+
+gMapSecName_CeladonDept::
+ .string "CELADON DEPT.$"
+
diff --git a/data/text/move_descriptions.inc b/data/text/move_descriptions.inc
new file mode 100644
index 000000000..78822e1d8
--- /dev/null
+++ b/data/text/move_descriptions.inc
@@ -0,0 +1,1065 @@
+gUnknown_8482834::
+ .string "A physical attack\ndelivered with a\nlong tail or a\nforeleg, etc.$"
+
+gUnknown_8482874:: @ 8482874
+ .string "The foe is attacked\nwith a sharp chop.\nIt has a high\ncritical-hit ratio.$"
+
+gUnknown_84828BD:: @ 84828BD
+ .string "The foe is slapped\nrepeatedly, back\nand forth, two to\nfive times.$"
+
+gUnknown_84828FF:: @ 84828FF
+ .string "The foe is hit with\na flurry of punches\nthat strike two to\nfive times.$"
+
+gUnknown_8482946:: @ 8482946
+ .string "The foe is slugged\nby a punch thrown\nwith muscle-packed\npower.$"
+
+gUnknown_8482985:: @ 8482985
+ .string "Numerous coins are\nhurled at the foe.\nMoney is earned\nafter battle.$"
+
+gUnknown_84829C9:: @ 84829C9
+ .string "The foe is punched\nwith a fiery fist.\nIt may leave the\nfoe with a burn.$"
+
+gUnknown_8482A11:: @ 8482A11
+ .string "The foe is punched\nwith an icy fist.\nIt may leave the\nfoe frozen.$"
+
+gUnknown_8482A53:: @ 8482A53
+ .string "The foe is punched\nwith an electrified\nfist. It may leave\nthe foe paralyzed.$"
+
+gUnknown_8482AA0:: @ 8482AA0
+ .string "Hard, pointed, and\nsharp claws rake\nthe foe.$"
+
+gUnknown_8482ACD:: @ 8482ACD
+ .string "Huge, impressive\npincers grip and\nsqueeze the foe.$"
+
+gUnknown_8482B00:: @ 8482B00
+ .string "A vicious tearing\nattack with pincers.\nThe foe will faint\nif it hits.$"
+
+gUnknown_8482B46:: @ 8482B46
+ .string "Blades of wind hit\nthe foe on the 2nd\nturn. It has a high\ncritical-hit ratio.$"
+
+gUnknown_8482B94:: @ 8482B94
+ .string "A frenetic dance of\nfighting. It sharply\nraises the ATTACK\nstat.$"
+
+gUnknown_8482BD5:: @ 8482BD5
+ .string "A basic attack.\nIt can be used to\ncut down thin trees\nand grass.$"
+
+gUnknown_8482C16:: @ 8482C16
+ .string "Strikes the foe\nwith a gust of wind\nwhipped up by\nwings.$"
+
+gUnknown_8482C4F:: @ 8482C4F
+ .string "The foe is struck\nwith large, imposing\nwings spread wide.$"
+
+gUnknown_8482C89:: @ 8482C89
+ .string "The foe is made to\nswitch out with an\nally. In the wild,\nthe battle ends.$"
+
+gUnknown_8482CD3:: @ 8482CD3
+ .string "A 2-turn move that\nhits on the 2nd\nturn. Use it to fly\nto any known town.$"
+
+gUnknown_8482D1D:: @ 8482D1D
+ .string "A long body or\ntentacles are used\nto bind the foe for\ntwo to five turns.$"
+
+gUnknown_8482D66:: @ 8482D66
+ .string "The foe is struck\nwith a long tail,\nvines, etc.$"
+
+gUnknown_8482D96:: @ 8482D96
+ .string "The foe is struck\nwith slender, whip-\nlike vines.$"
+
+gUnknown_8482DC8:: @ 8482DC8
+ .string "The foe is stomped\nwith a big foot.\nIt may make the\nfoe flinch.$"
+
+gUnknown_8482E08:: @ 8482E08
+ .string "Two legs are used\nto quickly kick the\nfoe twice in one\nturn.$"
+
+gUnknown_8482E45:: @ 8482E45
+ .string "The foe is attacked\nby a kick fired\nwith muscle-packed\npower.$"
+
+gUnknown_8482E83:: @ 8482E83
+ .string "The user jumps up\nhigh, then kicks.\nIf it misses, the\nuser hurts itself.$"
+
+gUnknown_8482ECC:: @ 8482ECC
+ .string "A quick kick from a\nrolling spin.\nIt may make the\nfoe flinch.$"
+
+gUnknown_8482F0A:: @ 8482F0A
+ .string "A lot of sand is\nhurled in the foe’s\nface, reducing its\naccuracy.$"
+
+gUnknown_8482F4C:: @ 8482F4C
+ .string "The user sticks its\nhead out and rams.\nIt may make the\nfoe flinch.$"
+
+gUnknown_8482F8F:: @ 8482F8F
+ .string "The foe is jabbed\nwith a sharply\npointed horn to\ninflict damage.$"
+
+gUnknown_8482FD0:: @ 8482FD0
+ .string "The foe is jabbed\nrepeatedly with a\nhorn or beak two to\nfive times.$"
+
+gUnknown_8483014:: @ 8483014
+ .string "The horn is rotated\nlike a drill to ram.\nThe foe will faint\nif it hits.$"
+
+gUnknown_848305C:: @ 848305C
+ .string "A physical attack\nin which the user\ncharges, full body,\ninto the foe.$"
+
+gUnknown_84830A2:: @ 84830A2
+ .string "The user drops its\nfull body on the\nfoe. It may leave\nthe foe paralyzed.$"
+
+gUnknown_84830EB:: @ 84830EB
+ .string "A long body or\nvines are used to\nwrap the foe for\ntwo to five turns.$"
+
+gUnknown_8483130:: @ 8483130
+ .string "A reckless, full-\nbody charge attack\nthat also hurts the\nuser a little.$"
+
+gUnknown_8483178:: @ 8483178
+ .string "The user rampages\nabout for two to\nthree turns, then\nbecomes confused.$"
+
+gUnknown_84831BF:: @ 84831BF
+ .string "A reckless, life-\nrisking tackle that\nalso hurts the user\na little.$"
+
+gUnknown_8483203:: @ 8483203
+ .string "The user wags its\ntail cutely, making\nthe foe lower its\nDEFENSE stat.$"
+
+gUnknown_8483249:: @ 8483249
+ .string "The foe is stabbed\nwith a toxic barb,\netc. It may poison\nthe foe.$"
+
+gUnknown_848328B:: @ 848328B
+ .string "The foe is stabbed\ntwice with foreleg\nstingers. It may\npoison the foe.$"
+
+gUnknown_84832D2:: @ 84832D2
+ .string "Sharp pins are shot\nat the foe and hit\ntwo to five times\nat once.$"
+
+gUnknown_8483314:: @ 8483314
+ .string "The foe is given an\nintimidating look\nthat lowers its\nDEFENSE stat.$"
+
+gUnknown_8483358:: @ 8483358
+ .string "The user bites with\nvicious fangs.\nIt may make the\nfoe flinch.$"
+
+gUnknown_8483397:: @ 8483397
+ .string "The user growls in\na cute way, making\nthe foe lower its\nATTACK stat.$"
+
+gUnknown_84833DC:: @ 84833DC
+ .string "The foe is made to\nswitch out with an\nally. In the wild,\nthe battle ends.$"
+
+gUnknown_8483426:: @ 8483426
+ .string "A soothing song\nin a calming voice\nlulls the foe into\na deep slumber.$"
+
+gUnknown_848346C:: @ 848346C
+ .string "The user generates\nodd sound waves.\nIt may confuse the\nfoe.$"
+
+gUnknown_84834A8:: @ 84834A8
+ .string "The foe is hit with\na shock wave that\nalways inflicts 20-\nHP damage.$"
+
+gUnknown_84834ED:: @ 84834ED
+ .string "For a few turns,\nit prevents the foe\nfrom using the move\nit last used.$"
+
+gUnknown_8483534:: @ 8483534
+ .string "The foe is sprayed\nwith a harsh, hide-\nmelting acid that\nmay lower DEFENSE.$"
+
+gUnknown_8483580:: @ 8483580
+ .string "The foe is attacked\nwith small flames.\nThe foe may suffer\na burn.$"
+
+gUnknown_84835C2:: @ 84835C2
+ .string "The foe is scorched\nwith intense flames.\nThe foe may suffer\na burn.$"
+
+gUnknown_8483606:: @ 8483606
+ .string "The ally party is\nprotected by a\nmist that prevents\nstat reductions.$"
+
+gUnknown_848364B:: @ 848364B
+ .string "The foe is struck\nwith a lot of water\nexpelled forcibly\nfrom the mouth.$"
+
+gUnknown_8483693:: @ 8483693
+ .string "A high volume of\nwater is blasted at\nthe foe under great\npressure.$"
+
+gUnknown_84836D6:: @ 84836D6
+ .string "A big wave crashes\ndown on the foe.\nCan also be used\nfor crossing water.$"
+
+gUnknown_848371F:: @ 848371F
+ .string "The foe is struck\nwith an icy beam.\nIt may freeze the\nfoe solid.$"
+
+gUnknown_8483760:: @ 8483760
+ .string "The foe is blasted\nwith a blizzard.\nIt may freeze the\nfoe solid.$"
+
+gUnknown_84837A1:: @ 84837A1
+ .string "A peculiar ray is\nshot at the foe.\nIt may leave the\nfoe confused.$"
+
+gUnknown_84837E3:: @ 84837E3
+ .string "A spray of bubbles\nstrikes the foe.\nIt may lower the\nfoe’s SPEED stat.$"
+
+gUnknown_848382A:: @ 848382A
+ .string "A rainbow-colored\nattack beam.\nIt may lower the\nfoe’s ATTACK stat.$"
+
+gUnknown_848386D:: @ 848386D
+ .string "A severely damaging\nattack that makes\nthe user rest on\nthe next turn.$"
+
+gUnknown_84838B3:: @ 84838B3
+ .string "The foe is jabbed\nwith a sharply\npointed beak or\nhorn.$"
+
+gUnknown_84838EA:: @ 84838EA
+ .string "A corkscrewing\nattack with the\nsharp beak acting\nas a drill.$"
+
+gUnknown_8483927:: @ 8483927
+ .string "A reckless, full-\nbody throw attack\nthat also hurts the\nuser a little.$"
+
+gUnknown_848396E:: @ 848396E
+ .string "A low, tripping kick\nthat inflicts more\ndamage on heavier\nfoes.$"
+
+gUnknown_84839AE:: @ 84839AE
+ .string "A retaliation move\nthat counters any\nphysical hit with\ndouble the damage.$"
+
+gUnknown_84839F8:: @ 84839F8
+ .string "A gravity-fed throw\nthat causes damage\nmatching the user’s\nlevel.$"
+
+gUnknown_8483A3A:: @ 8483A3A
+ .string "The foe is slugged\nat maximum power.\nCan also be used\nto move boulders.$"
+
+gUnknown_8483A82:: @ 8483A82
+ .string "An attack that\nabsorbs half the\ndamage it inflicted\nto restore HP.$"
+
+gUnknown_8483AC5:: @ 8483AC5
+ .string "A tough attack that\ndrains half the\ndamage it inflicted\nto restore HP.$"
+
+gUnknown_8483B0C:: @ 8483B0C
+ .string "A seed is planted\non the foe to steal\nsome HP for the \nuser on every turn.$"
+
+gUnknown_8483B57:: @ 8483B57
+ .string "The user’s body is\nforced to grow,\nraising the SP.\nATK stat.$"
+
+gUnknown_8483B94:: @ 8483B94
+ .string "The foe is hit with\na cutting leaf.\nIt has a high\ncritical-hit ratio.$"
+
+gUnknown_8483BDA:: @ 8483BDA
+ .string "A 2-turn move that\nblasts the foe with\nabsorbed energy in\nthe 2nd turn.$"
+
+gUnknown_8483C22:: @ 8483C22
+ .string "A cloud of toxic\ndust is scattered.\nIt may poison the\nfoe.$"
+
+gUnknown_8483C5D:: @ 8483C5D
+ .string "Paralyzing dust is\nscattered wildly.\nIt may paralyze\nthe foe.$"
+
+gUnknown_8483C9B:: @ 8483C9B
+ .string "A sleep-inducing\ndust is scattered\nin high volume\naround a foe.$"
+
+gUnknown_8483CDB:: @ 8483CDB
+ .string "The user attacks\nwith petals for two\nto three turns,\nthen gets confused.$"
+
+gUnknown_8483D24:: @ 8483D24
+ .string "The foe is bound\nwith strings shot\nfrom the mouth to\nreduce its SPEED.$"
+
+gUnknown_8483D6B:: @ 8483D6B
+ .string "The foe is hit with\na shock wave that\nalways inflicts 40-\nHP damage.$"
+
+gUnknown_8483DB0:: @ 8483DB0
+ .string "The foe is trapped\nin an intense spiral\nof fire that rages\ntwo to five turns.$"
+
+gUnknown_8483DFE:: @ 8483DFE
+ .string "An electric shock\nattack that may\nalso leave the foe\nparalyzed.$"
+
+gUnknown_8483E3E:: @ 8483E3E
+ .string "A strong electrical\nattack that may\nalso leave the foe\nparalyzed.$"
+
+gUnknown_8483E80:: @ 8483E80
+ .string "A weak electric\nshock that is sure\nto cause paralysis\nif it hits.$"
+
+gUnknown_8483EC2:: @ 8483EC2
+ .string "A brutal lightning\nattack that may\nalso leave the foe\nparalyzed.$"
+
+gUnknown_8483F03:: @ 8483F03
+ .string "The foe is attacked\nwith a shower of\nsmall, easily\nthrown rocks.$"
+
+gUnknown_8483F44:: @ 8483F44
+ .string "An earthquake that\nstrikes all POKéMON\nin battle excluding\nthe user.$"
+
+gUnknown_8483F89:: @ 8483F89
+ .string "The foe is dropped\ninto a fissure.\nThe foe faints if it\nhits.$"
+
+gUnknown_8483FC7:: @ 8483FC7
+ .string "An attack that hits\non the 2nd turn.\nCan also be used\nto exit dungeons.$"
+
+gUnknown_848400F:: @ 848400F
+ .string "A move that badly\npoisons the foe.\nIts poison damage\nworsens every turn.$"
+
+gUnknown_8484058:: @ 8484058
+ .string "A weak telekinetic\nattack that may\nalso leave the foe\nconfused.$"
+
+gUnknown_8484098:: @ 8484098
+ .string "A strong telekinetic\nattack. It may also\nlower the foe’s\nSP. DEF stat.$"
+
+gUnknown_84840DF:: @ 84840DF
+ .string "Hypnotic suggestion\nis used to make the\nfoe fall into a\ndeep sleep.$"
+
+gUnknown_8484123:: @ 8484123
+ .string "The user meditates\nto awaken its power\nand raise its\nATTACK stat.$"
+
+gUnknown_8484165:: @ 8484165
+ .string "The user relaxes\nand lightens its\nbody to sharply\nboost its SPEED.$"
+
+gUnknown_84841A8:: @ 84841A8
+ .string "An almost invisibly\nfast attack that\nis certain to strike\nfirst.$"
+
+gUnknown_84841E9:: @ 84841E9
+ .string "An attack that\nbecomes stronger\neach time the user\nis hit in battle.$"
+
+gUnknown_848422E:: @ 848422E
+ .string "Use it to flee from\nany wild POKéMON.\nAlso warps to the\nlast POKé CENTER.$"
+
+gUnknown_8484278:: @ 8484278
+ .string "An attack with a\nmirage that inflicts\ndamage matching\nthe user’s level.$"
+
+gUnknown_84842C0:: @ 84842C0
+ .string "The user copies the\nmove last used by\nthe foe for the\nrest of the battle.$"
+
+gUnknown_848430A:: @ 848430A
+ .string "An ear-splitting\nscreech is emitted\nto sharply reduce\nthe foe’s DEFENSE.$"
+
+gUnknown_8484353:: @ 8484353
+ .string "The user creates\nillusory copies of\nitself to raise its\nevasiveness.$"
+
+gUnknown_8484398:: @ 8484398
+ .string "A self-healing move\nthat restores HP by\nup to half of the\nuser’s maximum HP.$"
+
+gUnknown_84843E5:: @ 84843E5
+ .string "The user stiffens\nall the muscles in\nits body to raise\nits DEFENSE stat.$"
+
+gUnknown_848442E:: @ 848442E
+ .string "The user compresses\nall the cells in its\nbody to raise its\nevasiveness.$"
+
+gUnknown_8484476:: @ 8484476
+ .string "An obscuring cloud\nof smoke or ink\nreduces the foe’s\naccuracy.$"
+
+gUnknown_84844B5:: @ 84844B5
+ .string "The foe is exposed\nto a sinister ray\nthat triggers\nconfusion.$"
+
+gUnknown_84844F3:: @ 84844F3
+ .string "The user withdraws\nits body in its hard\nshell, raising its\nDEFENSE stat.$"
+
+gUnknown_848453C:: @ 848453C
+ .string "The user curls up\nto conceal weak\nspots and raise its\nDEFENSE stat.$"
+
+gUnknown_8484580:: @ 8484580
+ .string "The user creates a\nsturdy wall that\nsharply raises its\nDEFENSE stat.$"
+
+gUnknown_84845C5:: @ 84845C5
+ .string "A wall of light\ncuts damage from\nSP. ATK attacks\nfor five turns.$"
+
+gUnknown_8484606:: @ 8484606
+ .string "Eliminates all stat\nchanges among all\nPOKéMON engaged in\nbattle.$"
+
+gUnknown_8484647:: @ 8484647
+ .string "A wall of light\ncuts damage from\nphysical attacks\nfor five turns.$"
+
+gUnknown_8484689:: @ 8484689
+ .string "The user takes a\ndeep breath and\nfocuses to raise its\ncritical-hit ratio.$"
+
+gUnknown_84846D3:: @ 84846D3
+ .string "The user endures\nattacks for two\nturns, then strikes\nback double.$"
+
+gUnknown_8484715:: @ 8484715
+ .string "Waggles a finger\nand stimulates the\nbrain into using any\nmove at random.$"
+
+gUnknown_848475E:: @ 848475E
+ .string "The user counters\nthe move last used\nby the foe with the\nsame move.$"
+
+gUnknown_84847A2:: @ 84847A2
+ .string "The user blows up\nto inflict severe\ndamage, even\nmaking itself faint.$"
+
+gUnknown_84847E8:: @ 84847E8
+ .string "A large egg is\nhurled with great\nforce at the foe to\ninflict damage.$"
+
+gUnknown_848482D:: @ 848482D
+ .string "The foe is licked\nand hit with a long\ntongue. It may\nalso paralyze.$"
+
+gUnknown_8484871:: @ 8484871
+ .string "The foe is attacked\nwith exhaust gases.\nIt may also poison\nthe foe.$"
+
+gUnknown_84848B5:: @ 84848B5
+ .string "Toxic sludge is\nhurled at the foe.\nIt may poison the\ntarget.$"
+
+gUnknown_84848F2:: @ 84848F2
+ .string "The foe is clubbed\nwith a bone held in\nhand. It may make\nthe foe flinch.$"
+
+gUnknown_848493B:: @ 848493B
+ .string "The foe is hit with\nan intense flame.\nIt may leave the\ntarget with a burn.$"
+
+gUnknown_8484986:: @ 8484986
+ .string "A powerful charge\nattack. It can also\nbe used to climb\na waterfall.$"
+
+gUnknown_84849CA:: @ 84849CA
+ .string "The foe is clamped\nand squeezed by\nthe user’s shell for\ntwo to five turns.$"
+
+gUnknown_8484A15:: @ 8484A15
+ .string "Star-shaped rays\nthat never miss are\nfired at all foes in\nbattle.$"
+
+gUnknown_8484A57:: @ 8484A57
+ .string "The user raises its\nDEFENSE in the 1st\nturn, then attacks\nin the 2nd turn.$"
+
+gUnknown_8484AA2:: @ 8484AA2
+ .string "Sharp spikes are\nfired at the foe to\nstrike two to five\ntimes.$"
+
+gUnknown_8484AE1:: @ 8484AE1
+ .string "The foe is attacked\nwith long tentacles\nor vines. It may\nlower SPEED.$"
+
+gUnknown_8484B27:: @ 8484B27
+ .string "Forgets about\nsomething and\nsharply raises\nSP. DEF.$"
+
+gUnknown_8484B5B:: @ 8484B5B
+ .string "The user distracts\nthe foe by bending\na spoon. It may\nlower accuracy.$"
+
+gUnknown_8484BA1:: @ 8484BA1
+ .string "Heals the user by\nup to half its full\nHP. It can be used\nto heal an ally.$"
+
+gUnknown_8484BEB:: @ 8484BEB
+ .string "A strong jumping\nknee kick. If it\nmisses, the user is\nhurt.$"
+
+gUnknown_8484C27:: @ 8484C27
+ .string "The user intimidates\nthe foe with the\ndesign on its belly\nto cause paralysis.$"
+
+gUnknown_8484C75:: @ 8484C75
+ .string "Absorbs half the\ndamage it inflicted\non a sleeping foe\nto restore HP.$"
+
+gUnknown_8484CBB:: @ 8484CBB
+ .string "The foe is sprayed\nwith a cloud of\ntoxic gas that may\npoison the foe.$"
+
+gUnknown_8484D01:: @ 8484D01
+ .string "Round objects are\nhurled at the foe\nto strike two to\nfive times.$"
+
+gUnknown_8484D42:: @ 8484D42
+ .string "An attack that\nabsorbs half the\ndamage it inflicted\nto restore HP.$"
+
+gUnknown_8484D85:: @ 8484D85
+ .string "The user forces a\nkiss on the foe\nwith a scary face\nthat induces sleep.$"
+
+gUnknown_8484DCD:: @ 8484DCD
+ .string "A 2nd-turn attack\nmove with a high\ncritical-hit ratio.\nThe foe may flinch.$"
+
+gUnknown_8484E18:: @ 8484E18
+ .string "The user transforms\ninto a copy of the\nfoe with even the\nsame move set.$"
+
+gUnknown_8484E60:: @ 8484E60
+ .string "A spray of bubbles\nhits the foe.\nIt may lower the\nfoe’s SPEED stat.$"
+
+gUnknown_8484EA4:: @ 8484EA4
+ .string "The foe is hit with\na rhythmic punch\nthat may leave it\nconfused.$"
+
+gUnknown_8484EE5:: @ 8484EE5
+ .string "The user scatters\nbursts of fine\nspores that induce\nsleep.$"
+
+gUnknown_8484F20:: @ 8484F20
+ .string "A blast of light\nthat cuts the foe’s\naccuracy. It also\nilluminates caves.$"
+
+gUnknown_8484F6A:: @ 8484F6A
+ .string "The foe is attacked\nwith an odd, hot\nenergy wave that\nvaries in intensity.$"
+
+gUnknown_8484FB5:: @ 8484FB5
+ .string "The user just flops\nand splashes around\nwithout having any\neffect.$"
+
+gUnknown_8484FF8:: @ 8484FF8
+ .string "The user alters its\ncells to liquefy\nitself and sharply\nraise DEFENSE.$"
+
+gUnknown_848503F:: @ 848503F
+ .string "A large pincer is\nused to hammer the\nfoe. It has a high\ncritical-hit ratio.$"
+
+gUnknown_848508B:: @ 848508B
+ .string "The user explodes\nto inflict terrible\ndamage even while\nfainting itself.$"
+
+gUnknown_84850D4:: @ 84850D4
+ .string "The foe is raked\nwith sharp claws or\nscythes two to five\ntimes.$"
+
+gUnknown_8485114:: @ 8485114
+ .string "The user throws a\nbone that hits the\nfoe once, then once\nagain on return.$"
+
+gUnknown_848515E:: @ 848515E
+ .string "The user sleeps for\ntwo turns to fully\nrestore HP and heal\nany status problem.$"
+
+gUnknown_84851AD:: @ 84851AD
+ .string "Large boulders are\nhurled at the foe.\nIt may make the\nfoe flinch.$"
+
+gUnknown_84851EF:: @ 84851EF
+ .string "The foe is attacked\nwith sharp fangs.\nIt may make the\nfoe flinch.$"
+
+gUnknown_8485231:: @ 8485231
+ .string "The user reduces\nits polygon count\nto sharpen edges\nand raise ATTACK.$"
+
+gUnknown_8485277:: @ 8485277
+ .string "The user changes\nits type to match\nthe type of one of\nits moves.$"
+
+gUnknown_84852B8:: @ 84852B8
+ .string "A simultaneous\n3-beam attack that\nmay paralyze, burn,\nor freeze the foe.$"
+
+gUnknown_8485301:: @ 8485301
+ .string "The user attacks\nwith sharp fangs\nand halves the\nfoe’s HP.$"
+
+gUnknown_848533C:: @ 848533C
+ .string "The foe is slashed\nwith claws, etc.\nIt has a high\ncritical-hit ratio.$"
+
+gUnknown_8485382:: @ 8485382
+ .string "The user creates a\ndecoy using one-\nquarter of its full\nHP.$"
+
+gUnknown_84853BE:: @ 84853BE
+ .string "An attack that is\nused only if there\nis no PP. It also\nhurts the user.$"
+
+gUnknown_8485405:: @ 8485405
+ .string "This move copies\nthe move last used\nby the foe, then\ndisappears.$"
+
+gUnknown_8485446:: @ 8485446
+ .string "A 3-kick attack\nthat becomes more\npowerful with each\nsuccessive hit.$"
+
+gUnknown_848548B:: @ 848548B
+ .string "An attack that may\ntake the foe’s held\nitem if the user\nisn’t holding one.$"
+
+gUnknown_84854D6:: @ 84854D6
+ .string "Ensnares the foe \nwith sticky string\nso it doesn’t flee\nor switch out.$"
+
+gUnknown_848551D:: @ 848551D
+ .string "The user predicts\nthe foe’s action to\nensure its next\nattack hits.$"
+
+gUnknown_8485560:: @ 8485560
+ .string "A sleeping foe is\nshown a nightmare\nthat inflicts some\ndamage every turn.$"
+
+gUnknown_84855AA:: @ 84855AA
+ .string "The user makes a\nfiery charge at the\nfoe. It may cause\na burn.$"
+
+gUnknown_84855E9:: @ 84855E9
+ .string "An attack that can\nbe used only while\nasleep. It may\ncause flinching.$"
+
+gUnknown_848562F:: @ 848562F
+ .string "A move that works\ndifferently for the\nGHOST-type and all\nthe other types.$"
+
+gUnknown_8485679:: @ 8485679
+ .string "A desperate attack\nthat becomes more\npowerful the less\nHP the user has.$"
+
+gUnknown_84856C1:: @ 84856C1
+ .string "The user changes\ntype to make itself\nresistant to the\nlast attack it took.$"
+
+gUnknown_848570C:: @ 848570C
+ .string "A vortex of air is\nshot at the foe.\nIt has a high\ncritical-hit ratio.$"
+
+gUnknown_8485752:: @ 8485752
+ .string "Cotton-like spores\ncling to the foe,\nsharply reducing\nits SPEED stat.$"
+
+gUnknown_8485798:: @ 8485798
+ .string "An all-out attack\nthat becomes more\npowerful the less\nHP the user has.$"
+
+gUnknown_84857DF:: @ 84857DF
+ .string "A move that cuts\n2 to 5 PP from the\nmove last used by\nthe foe.$"
+
+gUnknown_848581E:: @ 848581E
+ .string "Blasts the foe with\na snowy gust.\nIt may cause\nfreezing.$"
+
+gUnknown_8485857:: @ 8485857
+ .string "Enables the user to\nevade all attacks.\nIt may fail if used\nin succession.$"
+
+gUnknown_84858A1:: @ 84858A1
+ .string "A punch thrown at\nblinding speed.\nIt is certain to\nstrike first.$"
+
+gUnknown_84858E2:: @ 84858E2
+ .string "Frightens the foe\nwith a scary face\nto sharply reduce\nits SPEED.$"
+
+gUnknown_8485923:: @ 8485923
+ .string "The user draws up\nclose to the foe\ndisarmingly, then\nhits without fail.$"
+
+gUnknown_848596B:: @ 848596B
+ .string "The user kisses\nthe foe with sweet\ncuteness that\ncauses confusion.$"
+
+gUnknown_84859AE:: @ 84859AE
+ .string "The user maximizes\nits ATTACK stat at\nthe cost of half\nits full HP.$"
+
+gUnknown_84859F2:: @ 84859F2
+ .string "Filthy sludge is\nhurled at the foe.\nIt may poison the\ntarget.$"
+
+gUnknown_8485A30:: @ 8485A30
+ .string "Mud is hurled in\nthe foe’s face to\ninflict damage and\nlower its accuracy.$"
+
+gUnknown_8485A7A:: @ 8485A7A
+ .string "Ink is blasted in\nthe foe’s face or\neyes to damage and\nlower accuracy.$"
+
+gUnknown_8485AC1:: @ 8485AC1
+ .string "A trap of spikes is\nlaid around the\nfoe’s party to hurt\nfoes switching in.$"
+
+gUnknown_8485B0C:: @ 8485B0C
+ .string "An electric blast is\nfired like a cannon\nto inflict damage\nand paralyze.$"
+
+gUnknown_8485B55:: @ 8485B55
+ .string "Completely negates\nthe foe’s efforts to\nheighten its ability\nto evade.$"
+
+gUnknown_8485B9C:: @ 8485B9C
+ .string "If the user faints,\nthe foe delivering\nthe final hit also\nfaints.$"
+
+gUnknown_8485BDE:: @ 8485BDE
+ .string "Any battler that\nhears this faints\nin three turns\nunless it switches.$"
+
+gUnknown_8485C24:: @ 8485C24
+ .string "A chilling wind is\nused to attack.\nIt also lowers the\nSPEED stat.$"
+
+gUnknown_8485C66:: @ 8485C66
+ .string "Enables the user to\nevade all attacks.\nIt may fail if used\nin succession.$"
+
+gUnknown_8485CB0:: @ 8485CB0
+ .string "The user strikes\nthe foe with a bone\nin hand two to five\ntimes.$"
+
+gUnknown_8485CF0:: @ 8485CF0
+ .string "The user locks on\nto the foe, making\nthe next move sure\nto hit.$"
+
+gUnknown_8485D30:: @ 8485D30
+ .string "The user thrashes\nabout for two to\nthree turns, then\nbecomes confused.$"
+
+gUnknown_8485D77:: @ 8485D77
+ .string "A 5-turn sandstorm\nthat damages all\ntypes except ROCK,\nGROUND, and STEEL.$"
+
+gUnknown_8485DC1:: @ 8485DC1
+ .string "A harsh attack that\nabsorbs half the\ndamage it inflicted\nto restore HP.$"
+
+gUnknown_8485E09:: @ 8485E09
+ .string "The user endures\nany hit with 1 HP\nleft. It may fail if\nused in succession.$"
+
+gUnknown_8485E55:: @ 8485E55
+ .string "The foe is charmed\nby the user’s cute\nappeals, sharply\ncutting its ATTACK.$"
+
+gUnknown_8485EA0:: @ 8485EA0
+ .string "A 5-turn rolling\nattack that becomes\nstronger each time\nit hits.$"
+
+gUnknown_8485EE1:: @ 8485EE1
+ .string "A restrained attack\nthat always leaves\nthe foe with at\nleast 1 HP.$"
+
+gUnknown_8485F24:: @ 8485F24
+ .string "A move that makes\nthe foe confused,\nbut also sharply\nraises its ATTACK.$"
+
+gUnknown_8485F6C:: @ 8485F6C
+ .string "Heals the user by\nup to half its full\nHP. It can be used\nto heal an ally.$"
+
+gUnknown_8485FB6:: @ 8485FB6
+ .string "An electrically\ncharged tackle that\nmay also paralyze\nthe foe.$"
+
+gUnknown_8485FF5:: @ 8485FF5
+ .string "An attack that\ngrows stronger on\neach successive\nhit.$"
+
+gUnknown_848602B:: @ 848602B
+ .string "The foe is hit with\nwings of steel.\nIt may also raise\nthe user’s DEFENSE.$"
+
+gUnknown_8486075:: @ 8486075
+ .string "The foe is fixed\nwith a mean look\nthat prevents it\nfrom escaping.$"
+
+gUnknown_84860B7:: @ 84860B7
+ .string "If it is the other\ngender, the foe is\nmade infatuated and\nunlikely to attack.$"
+
+gUnknown_8486105:: @ 8486105
+ .string "While asleep, the\nuser randomly uses\none of the moves it\nknows.$"
+
+gUnknown_8486145:: @ 8486145
+ .string "A soothing bell\nchimes to heal the\nstatus problems of\nall allies.$"
+
+gUnknown_8486187:: @ 8486187
+ .string "This attack move\ngrows more powerful\nthe more the user\nlikes its TRAINER.$"
+
+gUnknown_84861D1:: @ 84861D1
+ .string "The foe is given a\nbooby-trapped gift.\nIt restores HP\nsometimes, however.$"
+
+gUnknown_848621B:: @ 848621B
+ .string "This attack move\ngrows more powerful\nthe less the user\nlikes its TRAINER.$"
+
+gUnknown_8486265:: @ 8486265
+ .string "It protects the\nuser’s party from\nall status problems\nfor five turns.$"
+
+gUnknown_84862AB:: @ 84862AB
+ .string "The user adds its\nHP to the foe’s HP,\nthen equally shares\nthe total HP.$"
+
+gUnknown_84862F3:: @ 84862F3
+ .string "A mystical and\npowerful fire\nattack that may\ninflict a burn.$"
+
+gUnknown_8486330:: @ 8486330
+ .string "A ground-shaking\nattack against all\nstanding POKéMON.\nIts power varies.$"
+
+gUnknown_8486378:: @ 8486378
+ .string "The foe is punched\nwith the user’s full\npower. It confuses\nthe foe if it hits.$"
+
+gUnknown_84863C7:: @ 84863C7
+ .string "A brutal ramming\nattack delivered\nwith a tough and\nimpressive horn.$"
+
+gUnknown_848640B:: @ 848640B
+ .string "The foe is hit with\nan incredible blast\nof breath that may\nalso paralyze.$"
+
+gUnknown_8486455:: @ 8486455
+ .string "The user switches\nout, passing along\nany stat changes\nto the new battler.$"
+
+gUnknown_848649F:: @ 848649F
+ .string "Makes the foe use\nthe move it last\nused repeatedly for\ntwo to six turns.$"
+
+gUnknown_84864E8:: @ 84864E8
+ .string "An attack move that\nworks especially\nwell on a foe that\nis switching out.$"
+
+gUnknown_8486532:: @ 8486532
+ .string "An attack that\nfrees the user from\nBIND, WRAP, LEECH\nSEED, and SPIKES.$"
+
+gUnknown_8486579:: @ 8486579
+ .string "Allures the foe to\nreduce evasiveness.\nIt also attracts\nwild POKéMON.$"
+
+gUnknown_84865BF:: @ 84865BF
+ .string "An attack with a\nsteel-hard tail.\nIt may lower the\nfoe’s DEFENSE stat.$"
+
+gUnknown_8486606:: @ 8486606
+ .string "The foe is attacked\nwith steel claws.\nIt may also raise\nthe user’s ATTACK.$"
+
+gUnknown_8486651:: @ 8486651
+ .string "Makes the user\nattack after the\nfoe. In return,\nit will not miss.$"
+
+gUnknown_8486693:: @ 8486693
+ .string "Restores the user’s\nHP. The amount of\nHP regained varies\nwith the weather.$"
+
+gUnknown_84866DE:: @ 84866DE
+ .string "Restores the user’s\nHP. The amount of\nHP regained varies\nwith the weather.$"
+
+gUnknown_8486729:: @ 8486729
+ .string "Restores the user’s\nHP. The amount of\nHP regained varies\nwith the weather.$"
+
+gUnknown_8486774:: @ 8486774
+ .string "An attack that\nvaries in type and\nintensity depending\non the user.$"
+
+gUnknown_84867B7:: @ 84867B7
+ .string "The foe is hit with\ndouble chops.\nIt has a high\ncritical-hit ratio.$"
+
+gUnknown_84867FB:: @ 84867FB
+ .string "A vicious twister\nattacks the foe.\nIt may make the\nfoe flinch.$"
+
+gUnknown_848683A:: @ 848683A
+ .string "A heavy rain falls\nfor five turns,\npowering up WATER-\ntype moves.$"
+
+gUnknown_848687C:: @ 848687C
+ .string "The sun blazes for\nfive turns, powering\nup FIRE-type\nmoves.$"
+
+gUnknown_84868B8:: @ 84868B8
+ .string "The foe is crunched\nwith sharp fangs.\nIt may lower the\nfoe’s SP. DEF.$"
+
+gUnknown_84868FE:: @ 84868FE
+ .string "A retaliation move\nthat pays back the\nfoe’s special attack\ndouble.$"
+
+gUnknown_8486941:: @ 8486941
+ .string "The user hypnotizes\nitself into copying\nany stat change\nmade by the foe.$"
+
+gUnknown_848698A:: @ 848698A
+ .string "A blindingly speedy\ncharge attack that\nalways goes before\nany other.$"
+
+gUnknown_84869CF:: @ 84869CF
+ .string "An ancient power is\nused to attack. It\nmay also raise all\nthe user’s stats.$"
+
+gUnknown_8486A1B:: @ 8486A1B
+ .string "A shadowy blob is\nhurled at the foe.\nMay also lower the\nfoe’s SP. DEF.$"
+
+gUnknown_8486A62:: @ 8486A62
+ .string "Two turns after\nthis move is used,\nthe foe is attacked\npsychically.$"
+
+gUnknown_8486AA6:: @ 8486AA6
+ .string "An attack that may\nalso cut DEFENSE.\nIt can also smash\ncracked boulders.$"
+
+gUnknown_8486AEF:: @ 8486AEF
+ .string "The foe is trapped\nin a fast, vicious\nwhirlpool for two\nto five turns.$"
+
+gUnknown_8486B36:: @ 8486B36
+ .string "All party POKéMON\njoin in the attack.\nThe more allies,\nthe more damage.$"
+
+gUnknown_8486B7E:: @ 8486B7E
+ .string "An attack that hits\nfirst and causes\nflinching. Usable\nonly on 1st turn.$"
+
+gUnknown_8486BC7:: @ 8486BC7
+ .string "The user attacks in\nan uproar that\nprevents sleep for\ntwo to five turns.$"
+
+gUnknown_8486C10:: @ 8486C10
+ .string "The user charges\nup power for use\nlater. It can be\nused three times.$"
+
+gUnknown_8486C55:: @ 8486C55
+ .string "The power built\nusing STOCKPILE is\nreleased at once\nfor attack.$"
+
+gUnknown_8486C95:: @ 8486C95
+ .string "The energy it built\nusing STOCKPILE is\nabsorbed to restore\nHP.$"
+
+gUnknown_8486CD4:: @ 8486CD4
+ .string "The user exhales a\nheated breath to\nattack. It may also\ninflict a burn.$"
+
+gUnknown_8486D1C:: @ 8486D1C
+ .string "A hailstorm lasting\nfive turns damages\nall POKéMON except\nthe ICE-type.$"
+
+gUnknown_8486D64:: @ 8486D64
+ .string "It enrages the foe,\nmaking it incapable\nof using the same\nmove successively.$"
+
+gUnknown_8486DB1:: @ 8486DB1
+ .string "Flattery is used to\nconfuse the foe,\nbut its SP. ATK\nalso rises.$"
+
+gUnknown_8486DF2:: @ 8486DF2
+ .string "A sinister, bluish\nwhite flame is shot\nat the foe to\ninflict a burn.$"
+
+gUnknown_8486E37:: @ 8486E37
+ .string "The user faints,\nbut sharply lowers\nthe foe’s ATTACK\nand SP. ATK.$"
+
+gUnknown_8486E79:: @ 8486E79
+ .string "An attack that is\nboosted if user is\nburned, poisoned,\nor paralyzed.$"
+
+gUnknown_8486EBE:: @ 8486EBE
+ .string "An attack that is\nexecuted last.\nThe user flinches\nif hit beforehand.$"
+
+gUnknown_8486F04:: @ 8486F04
+ .string "Doubly effective on\na paralyzed foe,\nbut it also cures\nthe foe’s paralysis.$"
+
+gUnknown_8486F50:: @ 8486F50
+ .string "The user draws\nattention to itself,\nmaking foes attack\nonly the user.$"
+
+gUnknown_8486F96:: @ 8486F96
+ .string "An attack that\nchanges type\ndepending on the\nuser’s location.$"
+
+gUnknown_8486FD4:: @ 8486FD4
+ .string "The user charges\npower to boost the\nELECTRIC move it\nuses next.$"
+
+gUnknown_8487014:: @ 8487014
+ .string "The foe is taunted\ninto a rage that\nallows it to use\nonly attack moves.$"
+
+gUnknown_848705C:: @ 848705C
+ .string "A move that boosts\nthe power of the\nally’s attack in a\nbattle.$"
+
+gUnknown_848709B:: @ 848709B
+ .string "A move that tricks\nthe foe into\ntrading held items\nwith the user.$"
+
+gUnknown_84870DD:: @ 84870DD
+ .string "The user mimics the\nfoe completely and\ncopies the foe’s\nability.$"
+
+gUnknown_848711E:: @ 848711E
+ .string "A self-healing move\nthat restores half\nthe full HP on the\nnext turn.$"
+
+gUnknown_8487163:: @ 8487163
+ .string "The user randomly\npicks and uses a\nmove of an allied\nPOKéMON.$"
+
+gUnknown_84871A1:: @ 84871A1
+ .string "The user lays roots\nthat restore HP on\nevery turn.\nIt can’t switch out.$"
+
+gUnknown_84871E9:: @ 84871E9
+ .string "A powerful attack,\nbut it also lowers\nthe user’s ATTACK\nand DEFENSE stats.$"
+
+gUnknown_8487234:: @ 8487234
+ .string "Reflects back the\nfoe’s LEECH SEED\nand any status-\ndamaging move.$"
+
+gUnknown_8487276:: @ 8487276
+ .string "A move that\nrecycles a used\nitem for use once\nmore.$"
+
+gUnknown_84872AA:: @ 84872AA
+ .string "An attack move that\ngains in intensity if\nthe target has hurt\nthe user.$"
+
+gUnknown_84872F2:: @ 84872F2
+ .string "An attack that also\nbreaks any barrier\nlike LIGHT SCREEN\nand REFLECT.$"
+
+gUnknown_8487338:: @ 8487338
+ .string "A huge yawn lulls\nthe foe into falling\nasleep on the next\nturn.$"
+
+gUnknown_8487378:: @ 8487378
+ .string "Knocks down the\nfoe’s held item to\nprevent its use\nduring the battle.$"
+
+gUnknown_84873BE:: @ 84873BE
+ .string "Gains power the\nfewer HP the user\nhas compared with\nthe foe.$"
+
+gUnknown_84873FB:: @ 84873FB
+ .string "The higher the\nuser’s HP, the more\npowerful this\nattack becomes.$"
+
+gUnknown_848743C:: @ 848743C
+ .string "The user employs\nits psychic power\nto swap abilities\nwith the foe.$"
+
+gUnknown_848747F:: @ 848747F
+ .string "Prevents foes from\nusing any move\nthat is also known\nby the user.$"
+
+gUnknown_84874C1:: @ 84874C1
+ .string "A self-healing move\nthat cures the user\nof a poisoning,\nburn, or paralysis.$"
+
+gUnknown_848750D:: @ 848750D
+ .string "If the user faints,\nthis move deletes\nthe PP of the move\nthat finished it.$"
+
+gUnknown_8487558:: @ 8487558
+ .string "Steals the effects\nof the foe’s\nhealing or status-\nchanging move.$"
+
+gUnknown_848759A:: @ 848759A
+ .string "An attack that may\nhave an additional\neffect that varies\nwith the terrain.$"
+
+gUnknown_84875E5:: @ 84875E5
+ .string "The user dives\nunderwater on the\nfirst turn and\nstrikes next turn.$"
+
+gUnknown_8487628:: @ 8487628
+ .string "A quick flurry of\nstraight-arm\npunches that hit\ntwo to five times.$"
+
+gUnknown_848766B:: @ 848766B
+ .string "Alters the user’s\ntype depending on\nthe location’s\nterrain.$"
+
+gUnknown_84876A7:: @ 84876A7
+ .string "The user flashes a\nlight that sharply\nraises its SP. ATK\nstat.$"
+
+gUnknown_84876E6:: @ 84876E6
+ .string "A burst of light\ninjures the foe. It\nmay also lower the\nfoe’s SP. DEF.$"
+
+gUnknown_848772D:: @ 848772D
+ .string "A flurry of down\nhits the foe. It\nmay also lower the\nfoe’s SP. ATK.$"
+
+gUnknown_8487771:: @ 8487771
+ .string "The foe is covered\nwith a mass of down\nthat sharply cuts\nthe ATTACK stat.$"
+
+gUnknown_84877BB:: @ 84877BB
+ .string "A wobbly dance\nthat confuses all\nthe POKéMON in\nbattle.$"
+
+gUnknown_84877F3:: @ 84877F3
+ .string "A fiery kick with a\nhigh critical-hit\nratio. It may also\nburn the foe.$"
+
+gUnknown_848783A:: @ 848783A
+ .string "Weakens ELECTRIC-\ntype attacks while\nthe user is in the\nbattle.$"
+
+gUnknown_848787A:: @ 848787A
+ .string "A 5-turn rolling\nattack that becomes\nstronger each time\nit rolls.$"
+
+gUnknown_84878BC:: @ 84878BC
+ .string "An attack using\nthorny arms.\nIt may make the\nfoe flinch.$"
+
+gUnknown_84878F5:: @ 84878F5
+ .string "The user slacks off\nand restores its HP\nby half its full\nHP.$"
+
+gUnknown_8487932:: @ 8487932
+ .string "The user lets loose\na horribly loud\nshout with the\npower to damage.$"
+
+gUnknown_8487976:: @ 8487976
+ .string "The foe is bitten\nwith toxic fangs.\nIt may also badly\npoison the foe.$"
+
+gUnknown_84879BC:: @ 84879BC
+ .string "The foe is attacked\nwith sharp claws.\nIt may also lower\nthe foe’s DEFENSE.$"
+
+gUnknown_8487A07:: @ 8487A07
+ .string "The foe is hit with\na huge explosion.\nThe user can’t move\non the next turn.$"
+
+gUnknown_8487A53:: @ 8487A53
+ .string "The foe is hit with\na watery cannon.\nThe user can’t move\non the next turn.$"
+
+gUnknown_8487A9E:: @ 8487A9E
+ .string "The foe is hit with\na hard, fast punch.\nIt may also raise\nthe user’s ATTACK.$"
+
+gUnknown_8487AEB:: @ 8487AEB
+ .string "An attack using a\nstartling shout.\nIt also may make\nthe foe flinch.$"
+
+gUnknown_8487B2F:: @ 8487B2F
+ .string "An attack that\nvaries in power and\ntype depending on\nthe weather.$"
+
+gUnknown_8487B71:: @ 8487B71
+ .string "A soothing scent is\nreleased to heal\nall status problems\nin the user’s party.$"
+
+gUnknown_8487BBF:: @ 8487BBF
+ .string "The user feigns\ncrying to sharply\nlower the foe’s\nSP. DEF stat.$"
+
+gUnknown_8487BFF:: @ 8487BFF
+ .string "The foe is hit with\nrazor-like wind.\nIt has a high\ncritical-hit ratio.$"
+
+gUnknown_8487C46:: @ 8487C46
+ .string "An intense attack\nthat also sharply\nreduces the user’s\nSP. ATK stat.$"
+
+gUnknown_8487C8B:: @ 8487C8B
+ .string "Completely negates\nthe foe’s efforts to\nheighten its ability\nto evade.$"
+
+gUnknown_8487CD2:: @ 8487CD2
+ .string "Boulders are hurled\nat the foe. It also\nlowers the foe’s\nSPEED if it hits.$"
+
+gUnknown_8487D1D:: @ 8487D1D
+ .string "The foe is attacked\nwith a silver dust.\nIt may raise all\nthe user’s stats.$"
+
+gUnknown_8487D68:: @ 8487D68
+ .string "A horrible metallic\nscreech is used to\nsharply lower the\nfoe’s SP. DEF.$"
+
+gUnknown_8487DB0:: @ 8487DB0
+ .string "A pleasant melody\nis played to lull\nthe foe into a deep\nsleep.$"
+
+gUnknown_8487DEF:: @ 8487DEF
+ .string "The foe is made to\nlaugh, reducing its\nATTACK and DEFENSE\nstats.$"
+
+gUnknown_8487E30:: @ 8487E30
+ .string "The user absorbs a\nmystic power to\nraise its DEFENSE\nand SP. DEF.$"
+
+gUnknown_8487E72:: @ 8487E72
+ .string "The higher the\nuser’s HP, the more\npowerful this\nattack becomes.$"
+
+gUnknown_8487EB3:: @ 8487EB3
+ .string "The foe is hit with\na flashing beam\nthat may also\ncause confusion.$"
+
+gUnknown_8487EF6:: @ 8487EF6
+ .string "The user throws a\npunch from the\nshadows. It cannot\nbe evaded.$"
+
+gUnknown_8487F35:: @ 8487F35
+ .string "The user attacks\nwith an odd power\nthat may make the\nfoe flinch.$"
+
+gUnknown_8487F76:: @ 8487F76
+ .string "The user attacks\nwith an uppercut\nthrown skywards\nwith force.$"
+
+gUnknown_8487FB4:: @ 8487FB4
+ .string "The foe is trapped\ninside a painful\nsandstorm for two\nto five turns.$"
+
+gUnknown_8487FF9:: @ 8487FF9
+ .string "The foe is attacked\nwith ultimate cold\nthat causes fainting\nif it hits.$"
+
+gUnknown_8488041:: @ 8488041
+ .string "The user attacks\nwith muddy water.\nIt may also lower\nthe foe’s accuracy.$"
+
+gUnknown_848808A:: @ 848808A
+ .string "The user shoots\nseeds at the foe.\nTwo to five seeds\nare shot at once.$"
+
+gUnknown_84880D0:: @ 84880D0
+ .string "An extremely fast\nattack against one\ntarget. It can’t be\nevaded.$"
+
+gUnknown_8488111:: @ 8488111
+ .string "Sharp icicles are\nfired at the foe.\nIt strikes two to\nfive times.$"
+
+gUnknown_8488153:: @ 8488153
+ .string "The user hardens\nits body’s surface\nto sharply raise its\nDEFENSE stat.$"
+
+gUnknown_848819A:: @ 848819A
+ .string "The user blocks the\nfoe’s way with arms\nspread wide to\nprevent escape.$"
+
+gUnknown_84881E1:: @ 84881E1
+ .string "The user howls to\nraise its spirit and\nboost its ATTACK\nstat.$"
+
+gUnknown_848821F:: @ 848821F
+ .string "Sharp, huge claws\nhook and slash the\nfoe quickly and\nwith great power.$"
+
+gUnknown_8488266:: @ 8488266
+ .string "The foe is hit with\nan enormous branch.\nThe user can’t move\non the next turn.$"
+
+gUnknown_84882B4:: @ 84882B4
+ .string "The user bulks up\nits body to boost\nboth its ATTACK and\nDEFENSE stats.$"
+
+gUnknown_84882FB:: @ 84882FB
+ .string "The user bounces\non the foe on the\n2nd turn. It may\nparalyze the foe.$"
+
+gUnknown_8488341:: @ 8488341
+ .string "The user attacks by\nhurling mud.\nIt also reduces the\nfoe’s SPEED.$"
+
+gUnknown_8488383:: @ 8488383
+ .string "An attack with a\nhigh critical-hit\nratio. It may also\npoison the foe.$"
+
+gUnknown_84883C9:: @ 84883C9
+ .string "A cutely executed\nattack that also\nsteals the foe’s\nhold item.$"
+
+gUnknown_8488408:: @ 8488408
+ .string "The user throws an\nelectrified tackle.\nIt hurts the user\na little.$"
+
+gUnknown_848844B:: @ 848844B
+ .string "The foe is attacked\nwith a strange leaf\nthat cannot be\nevaded.$"
+
+gUnknown_848848A:: @ 848848A
+ .string "Weakens FIRE-type\nattacks while the\nuser is in the\nbattle.$"
+
+gUnknown_84884C5:: @ 84884C5
+ .string "The user focuses\nits mind to raise\nthe SP. ATK and\nSP. DEF stats.$"
+
+gUnknown_8488507:: @ 8488507
+ .string "The foe is slashed\nwith a sharp leaf.\nIt has a high\ncritical-hit ratio.$"
+
+gUnknown_848854F:: @ 848854F
+ .string "A mystic, powerful\ndance that boosts\nthe user’s ATTACK\nand SPEED stats.$"
+
+gUnknown_8488597:: @ 8488597
+ .string "The user hurls two\nto five hard rocks\nat the foe to\nattack.$"
+
+gUnknown_84885D3:: @ 84885D3
+ .string "A rapid jolt of\nelectricity strikes\nthe foe. It can’t\nbe evaded.$"
+
+gUnknown_8488614:: @ 8488614
+ .string "An attack with a\npulsing blast of\nwater. It may also\nconfuse the foe.$"
+
+gUnknown_848865A:: @ 848865A
+ .string "A move that attacks\nthe foe with a\nblast of light two\nturns after use.$"
+
+gUnknown_84886A1:: @ 84886A1
+ .string "An intense attack\nthat also sharply\nreduces the user’s\nSP. ATK stat.$"
+
+gUnknown_84886E6:: @ 84886E6
+ .string " "
+
diff --git a/data/trainer_tower.s b/data/trainer_tower.s
new file mode 100644
index 000000000..f90d1dd2b
--- /dev/null
+++ b/data/trainer_tower.s
@@ -0,0 +1,616 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .section .rodata
+
+ .align 2
+gUnknown_8479D34::
+ .byte 0x03, 0x26
+ .align 2
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0x99, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+
+ .align 2
+ .byte 0x03, 0x27
+ .align 2
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0x9a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+
+ .align 2
+ .byte 0x01, 0x1f
+ .align 2
+ .byte 0x4c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+
+ .align 2
+ .byte 0x01, 0x22
+ .align 2
+ .byte 0x53, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+
+ .align 2
+ .byte 0x03, 0x41
+ .align 2
+ .byte 0x40, 0x41, 0x42, 0x43, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+
+ .align 2
+ .byte 0x01, 0x02
+ .align 2
+ .byte 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0xff, 0xff
+ .byte 0x54, 0x55, 0x56, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+
+ .align 2
+ .byte 0x01, 0x6d
+ .align 2
+ .byte 0x5b, 0x5d, 0x5e, 0x5f, 0x63, 0x64, 0x65, 0x66
+ .byte 0x5b, 0x5d, 0x5e, 0x5f, 0x63, 0x64, 0x65, 0xff
+ .byte 0x5a, 0x5c, 0x60, 0x61, 0x62, 0xff, 0xff, 0xff
+
+ .align 2
+ .byte 0x03, 0x2e
+ .align 2
+ .byte 0x6b, 0x6c, 0x6d, 0x6e, 0xff, 0xff, 0xff, 0xff
+ .byte 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0xff, 0xff
+ .byte 0x6b, 0x6c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+
+ .align 2
+ .byte 0x03, 0x30
+ .align 2
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xa6, 0xa7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+
+ .align 2
+ .byte 0x03, 0x0f
+ .align 2
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xa8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xa9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+
+ .align 2
+ .byte 0x03, 0x39
+ .align 2
+ .byte 0xaa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+
+ .align 2
+ .byte 0x03, 0x36
+ .align 2
+ .byte 0xae, 0xb0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xaf, 0xb1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+
+ .align 2
+ .byte 0x03, 0x3a
+ .align 2
+ .byte 0xb2, 0xb3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+
+ .align 2
+ .byte 0x03, 0x3b
+ .align 2
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xb4, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+
+ .align 2
+ .byte 0x03, 0x3e
+ .align 2
+ .byte 0xb9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xba, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+ .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
+
+gUnknown_8479ED8:: @ 8479ED8
+ .align 2
+ .byte 0x1c, 0x03, 0x01
+ .align 2
+ .byte 0x38, 0x04, 0x00
+ .align 2
+ .byte 0x25, 0x06, 0x01
+ .align 2
+ .byte 0x26, 0x07, 0x00
+ .align 2
+ .byte 0x29, 0x08, 0x00
+ .align 2
+ .byte 0x2a, 0x09, 0x01
+ .align 2
+ .byte 0x34, 0x0a, 0x00
+ .align 2
+ .byte 0x1c, 0x0b, 0x01
+ .align 2
+ .byte 0x1d, 0x0c, 0x01
+ .align 2
+ .byte 0x13, 0x0d, 0x00
+ .align 2
+ .byte 0x34, 0x0e, 0x00
+ .align 2
+ .byte 0x2d, 0x0f, 0x00
+ .align 2
+ .byte 0x36, 0x10, 0x00
+ .align 2
+ .byte 0x1a, 0x11, 0x00
+ .align 2
+ .byte 0x1a, 0x12, 0x00
+ .align 2
+ .byte 0x27, 0x13, 0x00
+ .align 2
+ .byte 0x34, 0x14, 0x00
+ .align 2
+ .byte 0x13, 0x15, 0x00
+ .align 2
+ .byte 0x17, 0x16, 0x01
+ .align 2
+ .byte 0x3d, 0x17, 0x00
+ .align 2
+ .byte 0x13, 0x1d, 0x00
+ .align 2
+ .byte 0x17, 0x1e, 0x01
+ .align 2
+ .byte 0x1e, 0x20, 0x00
+ .align 2
+ .byte 0x1f, 0x21, 0x01
+ .align 2
+ .byte 0x20, 0x22, 0x00
+ .align 2
+ .byte 0x23, 0x23, 0x01
+ .align 2
+ .byte 0x12, 0x24, 0x00
+ .align 2
+ .byte 0x39, 0x26, 0x00
+ .align 2
+ .byte 0x29, 0x2d, 0x00
+ .align 2
+ .byte 0x1a, 0x2e, 0x00
+ .align 2
+ .byte 0x10, 0x2f, 0x00
+ .align 2
+ .byte 0x18, 0x30, 0x01
+ .align 2
+ .byte 0x1d, 0x31, 0x01
+ .align 2
+ .byte 0x2e, 0x32, 0x01
+ .align 2
+ .byte 0x28, 0x33, 0x01
+ .align 2
+ .byte 0x3e, 0x35, 0x00
+ .align 2
+ .byte 0x1b, 0x38, 0x00
+ .align 2
+ .byte 0x19, 0x40, 0x00
+ .align 2
+ .byte 0x1c, 0x41, 0x01
+ .align 2
+ .byte 0x27, 0x42, 0x00
+ .align 2
+ .byte 0x28, 0x43, 0x01
+ .align 2
+ .byte 0x16, 0x47, 0x01
+ .align 2
+ .byte 0x14, 0x48, 0x00
+ .align 2
+ .byte 0x38, 0x49, 0x00
+ .align 2
+ .byte 0x12, 0x58, 0x00
+ .align 2
+ .byte 0x14, 0x59, 0x00
+ .align 2
+ .byte 0x16, 0x5a, 0x01
+ .align 2
+ .byte 0x3e, 0x5b, 0x00
+ .align 2
+ .byte 0x27, 0x5c, 0x00
+ .align 2
+ .byte 0x28, 0x5d, 0x01
+ .align 2
+ .byte 0x34, 0x5e, 0x00
+ .align 2
+ .byte 0x34, 0x5f, 0x00
+ .align 2
+ .byte 0x38, 0x60, 0x00
+ .align 2
+ .byte 0x35, 0x61, 0x00
+ .align 2
+ .byte 0x34, 0x62, 0x00
+ .align 2
+ .byte 0x1e, 0x63, 0x00
+ .align 2
+ .byte 0x39, 0x64, 0x00
+ .align 2
+ .byte 0x2d, 0x65, 0x00
+ .align 2
+ .byte 0x35, 0x66, 0x00
+ .align 2
+ .byte 0x20, 0x67, 0x00
+ .align 2
+ .byte 0x1d, 0x68, 0x01
+ .align 2
+ .byte 0x2e, 0x69, 0x01
+ .align 2
+ .byte 0x13, 0x6a, 0x00
+ .align 2
+ .byte 0x1a, 0x6b, 0x00
+ .align 2
+ .byte 0x1a, 0x6c, 0x00
+ .align 2
+ .byte 0x19, 0x6d, 0x00
+ .align 2
+ .byte 0x1a, 0x6e, 0x00
+ .align 2
+ .byte 0x36, 0x6f, 0x00
+ .align 2
+ .byte 0x37, 0x71, 0x00
+ .align 2
+ .byte 0x29, 0x74, 0x00
+ .align 2
+ .byte 0x2a, 0x75, 0x01
+ .align 2
+ .byte 0x3d, 0x7a, 0x00
+ .align 2
+ .byte 0x3a, 0x7d, 0x01
+ .align 2
+ .byte 0x17, 0x89, 0x01
+ .align 2
+ .byte 0x18, 0x8a, 0x01
+ .align 2
+ .byte 0x25, 0x8b, 0x01
+ .align 2
+ .byte 0x1c, 0x8c, 0x01
+ .align 2
+ .byte 0x27, 0x8d, 0x00
+ .align 2
+ .byte 0x28, 0x8e, 0x01
+ .align 2
+ .byte 0x1c, 0x8f, 0x01
+ .align 2
+ .byte 0x38, 0x90, 0x00
+ .align 2
+ .byte 0x1c, 0x91, 0x01
+ .align 2
+ .byte 0x16, 0x92, 0x01
+ .align 2
+
+gUnknown_847A024:: @ 847A024
+ .byte 0x1d, 0x17, 0x1f, 0x01, 0x01
+ .align 2
+ .byte 0x11, 0x11, 0x34, 0x01, 0x01
+ .align 2
+ .byte 0x1d, 0x19, 0x4a, 0x01, 0x00
+ .align 2
+ .byte 0x20, 0x23, 0x4b, 0x00, 0x01
+ .align 2
+ .byte 0x26, 0x2e, 0x4c, 0x00, 0x01
+ .align 2
+ .byte 0x11, 0x11, 0x7e, 0x01, 0x01
+ .align 2
+ .byte 0x29, 0x2a, 0x7f, 0x00, 0x01
+ .align 2
+ .byte 0x1d, 0x19, 0x80, 0x01, 0x00
+ .align 2
+ .byte 0x18, 0x36, 0x81, 0x01, 0x00
+ .align 2
+ .byte 0x2e, 0x26, 0x82, 0x01, 0x00
+
+ .align 2
+gUnknown_847A074:: @ 847A074
+ .byte 0x03, 0x06
+ .align 2
+ .byte 0x37, 0x06
+ .align 2
+ .byte 0x02, 0x06
+ .align 2
+ .byte 0x67, 0x01
+ .align 2
+ .byte 0x04, 0x01
+ .align 2
+ .byte 0x24, 0x04
+ .align 2
+ .byte 0x4a, 0x01
+ .align 2
+ .byte 0x26, 0x01
+ .align 2
+ .byte 0x2a, 0x00
+ .align 2
+ .byte 0x42, 0x03
+ .align 2
+ .byte 0x1b, 0x09
+ .align 2
+ .byte 0x4c, 0x03
+ .align 2
+ .byte 0x44, 0x03
+ .align 2
+ .byte 0x21, 0x04
+ .align 2
+ .byte 0x43, 0x03
+ .align 2
+ .byte 0x6a, 0x01
+ .align 2
+ .byte 0x5d, 0x05
+ .align 2
+ .byte 0x56, 0x05
+ .align 2
+ .byte 0x09, 0x05
+ .align 2
+ .byte 0x11, 0x04
+ .align 2
+ .byte 0x48, 0x03
+ .align 2
+ .byte 0x3c, 0x00
+ .align 2
+ .byte 0x29, 0x00
+ .align 2
+ .byte 0x5c, 0x09
+ .align 2
+ .byte 0x28, 0x09
+ .align 2
+ .byte 0x06, 0x0c
+ .align 2
+ .byte 0x68, 0x0b
+ .align 2
+ .byte 0x05, 0x0b
+ .align 2
+ .byte 0x58, 0x0d
+ .align 2
+ .byte 0x16, 0x0d
+ .align 2
+ .byte 0x46, 0x08
+ .align 2
+ .byte 0x0f, 0x01
+ .align 2
+ .byte 0x3f, 0x03
+ .align 2
+ .byte 0x0e, 0x03
+ .align 2
+ .byte 0x5f, 0x04
+ .align 2
+ .byte 0x63, 0x04
+ .align 2
+ .byte 0x50, 0x04
+ .align 2
+ .byte 0x10, 0x04
+ .align 2
+ .byte 0x52, 0x03
+ .align 2
+ .byte 0x35, 0x04
+ .align 2
+ .byte 0x5b, 0x03
+ .align 2
+ .byte 0x14, 0x03
+ .align 2
+ .byte 0x3d, 0x00
+ .align 2
+ .byte 0x13, 0x00
+ .align 2
+ .byte 0x12, 0x0b
+ .align 2
+ .byte 0x30, 0x07
+ .align 2
+ .byte 0x38, 0x07
+ .align 2
+ .byte 0x2f, 0x07
+ .align 2
+ .byte 0x3b, 0x01
+ .align 2
+ .byte 0x31, 0x01
+ .align 2
+ .byte 0x4e, 0x0b
+ .align 2
+ .byte 0x3a, 0x00
+ .align 2
+ .byte 0x32, 0x00
+ .align 2
+ .byte 0x23, 0x03
+ .align 2
+ .byte 0x0d, 0x0d
+ .align 2
+ .byte 0x0a, 0x03
+ .align 2
+ .byte 0x49, 0x01
+ .align 2
+ .byte 0x0c, 0x01
+ .align 2
+ .byte 0x69, 0x01
+ .align 2
+ .byte 0x0b, 0x01
+ .align 2
+ .byte 0x25, 0x01
+ .align 2
+ .byte 0x3e, 0x02
+ .align 2
+ .byte 0x27, 0x02
+ .align 2
+ .byte 0x65, 0x01
+ .align 2
+ .byte 0x2d, 0x01
+ .align 2
+ .byte 0x61, 0x01
+ .align 2
+ .byte 0x2b, 0x03
+ .align 2
+ .byte 0x66, 0x05
+ .align 2
+ .byte 0x2e, 0x05
+ .align 2
+ .byte 0x2c, 0x00
+ .align 2
+ .byte 0x5e, 0x02
+ .align 2
+ .byte 0x34, 0x02
+ .align 2
+ .byte 0x51, 0x00
+ .align 2
+ .byte 0x59, 0x00
+ .align 2
+ .byte 0x40, 0x03
+ .align 2
+ .byte 0x55, 0x06
+ .align 2
+ .byte 0x53, 0x06
+ .align 2
+ .byte 0x4b, 0x04
+ .align 2
+ .byte 0x15, 0x04
+ .align 2
+ .byte 0x1a, 0x09
+ .align 2
+ .byte 0x57, 0x0a
+ .align 2
+ .byte 0x17, 0x01
+ .align 2
+ .byte 0x47, 0x03
+ .align 2
+ .byte 0x62, 0x01
+ .align 2
+ .byte 0x39, 0x00
+ .align 2
+ .byte 0x1d, 0x00
+ .align 2
+ .byte 0x1c, 0x04
+ .align 2
+ .byte 0x20, 0x00
+ .align 2
+ .byte 0x4f, 0x05
+ .align 2
+ .byte 0x22, 0x05
+ .align 2
+ .byte 0x45, 0x0b
+ .align 2
+ .byte 0x1f, 0x0b
+ .align 2
+ .byte 0x5a, 0x00
+ .align 2
+ .byte 0x1e, 0x00
+ .align 2
+ .byte 0x08, 0x00
+ .align 2
+ .byte 0x64, 0x02
+ .align 2
+ .byte 0x07, 0x02
+ .align 2
+ .byte 0x60, 0x08
+ .align 2
+ .byte 0x36, 0x08
+ .align 2
+ .byte 0x41, 0x0b
+ .align 2
+ .byte 0x33, 0x0b
+ .align 2
+ .byte 0x54, 0x00
+ .align 2
+ .byte 0x18, 0x01
+ .align 2
+ .byte 0x4d, 0x0b
+ .align 2
+ .byte 0x19, 0x00
+
+ .align 2
+gUnknown_847A218:: @ 847A218
+ @ window template
+ .byte 0x00, 0x03, 0x01, 0x1b, 0x12, 0x0f
+ .2byte 0x0001
+
+gUnknown_847A220:: @ 847A220
+ .byte 0xFF, 0, 0, 0, 0, 0
+ .2byte 0
+
+gUnknown_847A228::
+ .4byte 0x70
+
+gUnknown_847A22C:: @ 847A22C
+ .byte 0x00, 0x02, 0x03
+
+ .align 2
+gUnknown_847A230:: @ 847A230
+ .4byte sub_815DD44
+ .4byte sub_815DF54
+ .4byte sub_815E160
+ .4byte sub_815E1C0
+ .4byte sub_815E1F0
+ .4byte sub_815E218
+ .4byte sub_815E28C
+ .4byte sub_815E394
+ .4byte sub_815E408
+ .4byte sub_815E4B0
+ .4byte sub_815E56C
+ .4byte sub_815E5C4
+ .4byte sub_815E5F0
+ .4byte sub_815E658
+ .4byte sub_815E720
+ .4byte sub_815E88C
+ .4byte sub_815E8B4
+ .4byte sub_815E8CC
+ .4byte sub_815E908
+ .4byte sub_815E948
+ .4byte sub_815E9C8
+
+gUnknown_847A284:: @ 847A284
+ .2byte 0x012a, 0x016e, 0x0176
+ .2byte 0x012b, 0x016f, 0x0177
+ .2byte 0x012c, 0x0170, 0x0178
+ .2byte 0x012d, 0x0171, 0x0179
+ .2byte 0x012e, 0x0172, 0x017a
+ .2byte 0x012f, 0x0173, 0x017b
+ .2byte 0x0130, 0x0174, 0x017c
+ .2byte 0x0131, 0x0175, 0x017d
+
+gUnknown_847A2B4:: @ 847A2B4
+ .2byte 0x3f, 0x40, 0x41, 0x42, 0x43, 0x46, 0xb3, 0xb4, 0xb9, 0xba, 0xbb, 0xc6, 0xc7, 0xc9, 0xda
+
+gUnknown_847A2D2:: @ 847A2D2
+ .2byte 0x011d
+ .2byte 0x011c
+ .2byte 0x011c
+ .2byte 0x011b
+ .2byte 0x011d
+ .2byte 0x011d
+ .2byte 0x011b
+ .2byte 0x011b
+ .2byte 0x011d
+ .2byte 0x011c
+ .2byte 0x011d
+ .2byte 0x011d
+ .2byte 0x011d
+ .2byte 0x011d
+
+gUnknown_847A2EE:: @ 847A2EE
+ .byte 0x00, 0x02
+ .byte 0x01, 0x03
+ .byte 0x02, 0x04
+ .byte 0x03, 0x05
+ .byte 0x04, 0x01
+ .byte 0x05, 0x02
+ .byte 0x00, 0x03
+ .byte 0x01, 0x04
+
+gUnknown_847A2FE:: @ 847A2FE
+ .byte 0x00, 0x01
+ .byte 0x01, 0x03
+ .byte 0x02, 0x00
+ .byte 0x03, 0x04
+ .byte 0x04, 0x02
+ .byte 0x05, 0x02
+ .byte 0x00, 0x03
+ .byte 0x01, 0x05
+
+gUnknown_847A30E:: @ 847A30E
+ .byte 0x00, 0x02
+ .byte 0x04, 0x01
+ .byte 0x03, 0x05
+ .byte 0x02, 0x03
+ .byte 0x01, 0x03
+ .byte 0x04, 0x00
+ .byte 0x04, 0x01
+ .byte 0x02, 0x05
+ .byte 0x00, 0x03
+ .byte 0x00, 0x05
+ .byte 0x02, 0x01
+ .byte 0x04, 0x05
+ .byte 0x00, 0x00
diff --git a/data/trainer_tower/trainers.inc b/data/trainer_tower/trainers.inc
new file mode 100644
index 000000000..e2f7dd121
--- /dev/null
+++ b/data/trainer_tower/trainers.inc
@@ -0,0 +1,5113 @@
+ .macro ivs hp, atk, def, speed, spatk, spdef, altability
+ .4byte \hp | (\atk << 5) | (\def << 10) | (\speed << 15) | (\spatk << 20) | (\spdef << 25) | (\altability << 31)
+ .endm
+
+ .macro trainerid id, secret
+ .4byte \id | (\secret << 16)
+ .endm
+
+ .macro dummy_tower_mon
+ .align 2
+ .2byte SPECIES_NONE, ITEM_NONE
+ .2byte MOVE_NONE, MOVE_NONE, MOVE_NONE, MOVE_NONE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 0 @ OT ID
+ ivs 0, 0, 0, 0, 0, 0, 0 @ IVs, ability
+ .4byte 0x00000000 @ personality
+ .string "$$$$$$$$$$$", 11
+ .byte 0 @ friendship
+ .endm
+
+ .macro dummy_tower_team
+ .string "$", 11
+ .byte FACILITY_CLASS_AQUA_LEADER, 0x01, 0x00
+
+ .2byte 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF
+ .2byte 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF
+ .2byte 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF
+ .2byte 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF
+
+ dummy_tower_mon
+ dummy_tower_mon
+ dummy_tower_mon
+ dummy_tower_mon
+ dummy_tower_mon
+ dummy_tower_mon
+ .endm
+
+ .align 2
+gUnknown_847ABAC::
+ .byte 0x01, 0x08, 0x00, 0x07
+ .string "COLE$", 11
+ .byte FACILITY_CLASS_YOUNGSTER_2, 0x01, 0x00
+
+ .2byte EC_WORD_AHAHA, EC_WORD_YOU_RE, EC_WORD_NOT, EC_WORD_GOING, EC_WORD_ANYWHERE, EC_WORD_EXCL
+ .2byte EC_WORD_ALL_RIGHT, EC_WORD_EXCL, EC_WORD_BYE_BYE, EC_WORD_EXCL, 0xFFFF, 0xFFFF
+ .2byte EC_WORD_HIYAH, EC_WORD_EXCL_EXCL, EC_WORD_DONE, EC_WORD_IN, EC_WORD_TOTALLY, EC_WORD_EXCL_EXCL
+ .2byte EC_WORD_TCH, EC_WORD_TCH, EC_WORD_YOU_RE, EC_WORD_TOO_STRONG, 0xFFFF, 0xFFFF
+
+ .align 2
+ .2byte SPECIES_RATICATE, ITEM_SITRUS_BERRY
+ .2byte MOVE_SHOCK_WAVE, MOVE_HYPER_FANG, MOVE_SCARY_FACE, MOVE_ENDEAVOR
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 110, 0, 200, 0, 0, 200 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability
+ .4byte 0x00000016 @ personality
+ .string "RATICATE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_MAGMAR, ITEM_SITRUS_BERRY
+ .2byte MOVE_FIRE_PUNCH, MOVE_SUNNY_DAY, MOVE_SMOG, MOVE_STRENGTH
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 100, 0, 0, 210, 100, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000056 @ personality
+ .string "MAGMAR$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_MAGCARGO, ITEM_SITRUS_BERRY
+ .2byte MOVE_FLAMETHROWER, MOVE_AMNESIA, MOVE_BODY_SLAM, MOVE_HARDEN
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 110, 200, 0, 0, 200, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability
+ .4byte 0x00000002 @ personality
+ .string "MAGCARGO$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_PRIMEAPE, ITEM_SITRUS_BERRY
+ .2byte MOVE_OVERHEAT, MOVE_SEISMIC_TOSS, MOVE_SWAGGER, MOVE_KARATE_CHOP
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 100, 0, 0, 210, 200, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000087 @ personality
+ .string "PRIMEAPE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_GOLBAT, ITEM_SITRUS_BERRY
+ .2byte MOVE_GIGA_DRAIN, MOVE_CONFUSE_RAY, MOVE_SLUDGE_BOMB, MOVE_MEAN_LOOK
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 200, 0, 110, 200, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000081 @ personality
+ .string "GOLBAT$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_SLOWBRO, ITEM_SITRUS_BERRY
+ .2byte MOVE_SUNNY_DAY, MOVE_YAWN, MOVE_FLAMETHROWER, MOVE_CONFUSION
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 100, 0, 100, 0, 210, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability
+ .4byte 0x00000011 @ personality
+ .string "SLOWBRO$", 11
+ .byte 255 @ friendship
+
+ dummy_tower_team
+ dummy_tower_team
+ .byte 0xab, 0x6a, 0x01
+
+ .align 2
+gUnknown_847AF8C::
+ .byte 0x02, 0x08, 0x00, 0x0d
+ .string "JAC$", 11
+ .byte FACILITY_CLASS_BURGLAR, 0x01, 0x00
+
+ .2byte EC_WORD_I_AM, EC_WORD_A, EC_MOVE2(THIEF), EC_WORD_EXCL, EC_WORD_GIVE_ME, EC_WORD_SOMETHING
+ .2byte EC_WORD_YOU_VE, EC_WORD_GOT, EC_WORD_NOTHING, EC_WORD_THAT, EC_WORD_I, EC_WORD_WANT
+ .2byte EC_WORD_EEK, EC_WORD_EXCL_EXCL, EC_WORD_I_AM, EC_WORD_SORRY, EC_WORD_I, EC_WORD_SURRENDER
+ .2byte EC_WORD_I, EC_WORD_WILL, EC_WORD_STOP, EC_WORD_BEING, EC_WORD_A, EC_MOVE2(THIEF)
+
+ .align 2
+ .2byte SPECIES_MEOWTH, ITEM_LIECHI_BERRY
+ .2byte MOVE_SWAGGER, MOVE_SUBSTITUTE, MOVE_FAKE_OUT, MOVE_SLASH
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 200, 110, 0, 200, 0, 0 @ EVs
+ .align 2
+ trainerid 138, 0 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x0000008A @ personality
+ .string "MEOWTH$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_FLAREON, ITEM_PETAYA_BERRY
+ .2byte MOVE_FLAMETHROWER, MOVE_BITE, MOVE_SAND_ATTACK, MOVE_FIRE_SPIN
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 110, 0, 200, 0, 200, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000007 @ personality
+ .string "FLAREON$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_PORYGON, ITEM_PETAYA_BERRY
+ .2byte MOVE_TRI_ATTACK, MOVE_RECYCLE, MOVE_PSYBEAM, MOVE_CONVERSION_2
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 100, 0, 210, 0, 200, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000007 @ personality
+ .string "PORYGON$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_CHANSEY, ITEM_LUCKY_PUNCH
+ .2byte MOVE_FLAMETHROWER, MOVE_LIGHT_SCREEN, MOVE_BODY_SLAM, MOVE_MINIMIZE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 0, 255, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability
+ .4byte 0x00000010 @ personality
+ .string "CHANSEY$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_FARFETCHD, ITEM_STICK
+ .2byte MOVE_KNOCK_OFF, MOVE_SWORDS_DANCE, MOVE_FLY, MOVE_SAND_ATTACK
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 100, 100, 100, 100, 0, 110 @ EVs
+ .align 2
+ trainerid 133, 0 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability
+ .4byte 0x00000085 @ personality
+ .string "FARFETCH’D$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_MR_MIME, ITEM_SCOPE_LENS
+ .2byte MOVE_SUBSTITUTE, MOVE_SHOCK_WAVE, MOVE_LIGHT_SCREEN, MOVE_BRICK_BREAK
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 255, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 130, 0 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000082 @ personality
+ .string "MR. MIME$", 11
+ .byte 255 @ friendship
+
+ dummy_tower_team
+ dummy_tower_team
+ .byte 0x56, 0x64, 0x01
+
+ .align 2
+gUnknown_847B36C::
+ .byte 0x03, 0x08, 0x00, 0x02
+ .string "MILY$", 11
+ .byte FACILITY_CLASS_PSYCHIC_4, 0x01, 0x00
+
+ .2byte EC_WORD_LOOK, EC_WORD_AT, EC_WORD_MY, EC_WORD_POKEMON, EC_MOVE2(SUPERPOWER), EC_WORD_EXCL
+ .2byte EC_WORD_ISN_T, EC_WORD_IT, EC_WORD_INCREDIBLE, EC_WORD_QUES, EC_WORD_POKEMON, EC_WORD_POWER
+ .2byte EC_WORD_THIS, EC_WORD_IS, EC_WORD_AN, EC_WORD_AWFUL, EC_MOVE(NIGHTMARE), EC_WORD_ELLIPSIS_EXCL
+ .2byte EC_WORD_THIS, EC_WORD_IS, EC_WORD_A, EC_WORD_DREAM, EC_WORD_NOTHING, EC_WORD_MORE
+
+ .align 2
+ .2byte SPECIES_CHANSEY, ITEM_ORAN_BERRY
+ .2byte MOVE_LIGHT_SCREEN, MOVE_EGG_BOMB, MOVE_MINIMIZE, MOVE_SECRET_POWER
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 255, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability
+ .4byte 0x00000008 @ personality
+ .string "CHANSEY$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_CLEFABLE, ITEM_ORAN_BERRY
+ .2byte MOVE_METRONOME, MOVE_REFLECT, MOVE_SING, MOVE_POUND
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 110, 0, 200, 0, 0, 200 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000016 @ personality
+ .string "CLEFABLE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_TOGETIC, ITEM_ORAN_BERRY
+ .2byte MOVE_METRONOME, MOVE_REFLECT, MOVE_SWEET_KISS, MOVE_PECK
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 0, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability
+ .4byte 0x00000016 @ personality
+ .string "TOGETIC$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_TOGETIC, ITEM_ORAN_BERRY
+ .2byte MOVE_METRONOME, MOVE_HIDDEN_POWER, MOVE_ATTRACT, MOVE_LIGHT_SCREEN
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 255, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability
+ .4byte 0x00000020 @ personality
+ .string "TOGETIC$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_CHANSEY, ITEM_ORAN_BERRY
+ .2byte MOVE_FLAMETHROWER, MOVE_SOFT_BOILED, MOVE_LIGHT_SCREEN, MOVE_SECRET_POWER
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 255, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability
+ .4byte 0x00000005 @ personality
+ .string "CHANSEY$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_CLEFABLE, ITEM_ORAN_BERRY
+ .2byte MOVE_REFLECT, MOVE_FLAMETHROWER, MOVE_SING, MOVE_BODY_SLAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 110, 0, 200, 0, 200, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x000000C0 @ personality
+ .string "CLEFABLE$", 11
+ .byte 255 @ friendship
+
+ dummy_tower_team
+ dummy_tower_team
+ .byte 0xec, 0x64, 0x01
+
+ .align 2
+gUnknown_847B74C::
+ .byte 0x04, 0x08, 0x01, 0x09
+ .string "JOS & ANNE$", 11
+ .byte FACILITY_CLASS_COOL_COUPLE, 0x07, 0x00
+
+ .2byte EC_WORD_I, EC_WORD_CAN_T, EC_WORD_LOSE, EC_WORD_TO, EC_WORD_YOU, EC_WORD_HERE
+ .2byte EC_WORD_VERY, EC_WORD_WELL, EC_WORD_DONE, EC_WORD_EXCL, EC_WORD_GOOD, EC_WORD_BATTLE
+ .2byte EC_WORD_UNBELIEVABLE, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF
+ .2byte EC_WORD_I_AM, EC_WORD_DISAPPOINTED, EC_WORD_BUT, EC_WORD_YOU, EC_WORD_WIN, EC_WORD_ELLIPSIS
+
+ .align 2
+ .2byte SPECIES_RAPIDASH, ITEM_WHITE_HERB
+ .2byte MOVE_BOUNCE, MOVE_OVERHEAT, MOVE_HYPNOSIS, MOVE_RETURN
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 100, 100, 0, 110, 100, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 1 @ IVs, ability
+ .4byte 0x00000010 @ personality
+ .string "RAPIDASH$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_NINETALES, ITEM_CHARCOAL
+ .2byte MOVE_CONFUSE_RAY, MOVE_WILL_O_WISP, MOVE_HEAT_WAVE, MOVE_DIG
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 110, 0, 0, 200, 200, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x00000015 @ personality
+ .string "NINETALES$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_MISDREAVUS, ITEM_LEFTOVERS
+ .2byte MOVE_GRUDGE, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_THUNDERBOLT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 200, 0, 0, 210, 100, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x0000000A @ personality
+ .string "MISDREAVUS$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_ALAKAZAM, ITEM_LEFTOVERS
+ .2byte MOVE_LIGHT_SCREEN, MOVE_RECOVER, MOVE_PSYCHIC, MOVE_THUNDER_PUNCH
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 255, 255, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x0000000A @ personality
+ .string "ALAKAZAM$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_BLISSEY, ITEM_LEFTOVERS
+ .2byte MOVE_LIGHT_SCREEN, MOVE_ATTRACT, MOVE_RETURN, MOVE_PSYCHIC
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 0, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 1 @ IVs, ability
+ .4byte 0x00000016 @ personality
+ .string "BLISSEY$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_CROBAT, ITEM_LEFTOVERS
+ .2byte MOVE_TOXIC, MOVE_FLY, MOVE_CONFUSE_RAY, MOVE_SHADOW_BALL
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 100, 0, 100, 210, 0, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x00000017 @ personality
+ .string "CROBAT$", 11
+ .byte 255 @ friendship
+
+ .string "JOS & ANNE$", 11
+ .byte FACILITY_CLASS_COOL_COUPLE, 0x07, 0x00
+
+ .2byte EC_WORD_HERE_GOES, EC_WORD_EXCL_EXCL, EC_WORD_GET, EC_WORD_READY, EC_WORD_TO, EC_WORD_LOSE
+ .2byte EC_WORD_PERFECT, EC_WORD_EXCL, EC_WORD_WE, EC_WORD_GET, EC_WORD_THE, EC_WORD_WIN
+ .2byte EC_WORD_LOST, EC_WORD_QUES_EXCL, EC_WORD_YOU, EC_WORD_MUST_BE, EC_WORD_JOKING, EC_WORD_EXCL
+ .2byte EC_WORD_HOW, EC_WORD_COULD, EC_WORD_I, EC_WORD_LOSE, EC_WORD_THIS, EC_WORD_QUES
+
+ .align 2
+ .2byte SPECIES_HOUNDOOM, ITEM_CHARCOAL
+ .2byte MOVE_TAUNT, MOVE_FLAMETHROWER, MOVE_WILL_O_WISP, MOVE_CRUNCH
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 255, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 1 @ IVs, ability
+ .4byte 0x00000082 @ personality
+ .string "HOUNDOOM$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_AERODACTYL, ITEM_LEFTOVERS
+ .2byte MOVE_ROAR, MOVE_FIRE_BLAST, MOVE_HYPER_BEAM, MOVE_AERIAL_ACE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 255, 0, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 1 @ IVs, ability
+ .4byte 0x00000033 @ personality
+ .string "AERODACTYL$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_ARCANINE, ITEM_CHARCOAL
+ .2byte MOVE_HEAT_WAVE, MOVE_EXTREME_SPEED, MOVE_ROAR, MOVE_DIG
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 210, 0, 0, 200, 0, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x00000056 @ personality
+ .string "ARCANINE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_WEEZING, ITEM_LEFTOVERS
+ .2byte MOVE_EXPLOSION, MOVE_SMOKESCREEN, MOVE_SLUDGE_BOMB, MOVE_THUNDERBOLT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 100, 100, 100, 0, 100, 110 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x0000008E @ personality
+ .string "WEEZING$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_CHARIZARD, ITEM_WHITE_HERB
+ .2byte MOVE_OVERHEAT, MOVE_OUTRAGE, MOVE_DRAGON_RAGE, MOVE_SMOKESCREEN
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 100, 110, 0, 100, 100, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x00000033 @ personality
+ .string "CHARIZARD$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_GENGAR, ITEM_LEFTOVERS
+ .2byte MOVE_HYPNOSIS, MOVE_DREAM_EATER, MOVE_SHADOW_BALL, MOVE_THUNDERBOLT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 55, 0, 100, 255, 0, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x00000087 @ personality
+ .string "GENGAR$", 11
+ .byte 255 @ friendship
+
+ dummy_tower_team
+ .byte 0x08, 0x79, 0x01
+
+ .align 2
+gUnknown_847BB2C::
+ .byte 0x05, 0x08, 0x01, 0x04
+ .string "EMY & ALEK$", 11
+ .byte FACILITY_CLASS_YOUNG_COUPLE_2, 0x01, 0x00
+
+ .2byte EC_WORD_I_AM, EC_WORD_SO, EC_WORD_LOST, EC_WORD_IN, EC_WORD_LOVEY_DOVEY, EC_WORD_HAPPINESS
+ .2byte EC_WORD_OH, EC_WORD_OH, EC_WORD_HE, EC_WORD_IS, EC_WORD_REALLY, EC_WORD_AWESOME
+ .2byte EC_WORD_AIYEEH, EC_WORD_EXCL_EXCL, EC_WORD_YOU_RE, EC_WORD_NOT, EC_WORD_SERIOUS, EC_WORD_QUES
+ .2byte EC_WORD_WHO, EC_WORD_ARE, EC_WORD_YOU, EC_WORD_QUES, 0xFFFF, 0xFFFF
+
+ .align 2
+ .2byte SPECIES_TAUROS, ITEM_LUM_BERRY
+ .2byte MOVE_FLAMETHROWER, MOVE_REST, MOVE_SHOCK_WAVE, MOVE_DOUBLE_TEAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 255, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x0000000A @ personality
+ .string "TAUROS$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_KANGASKHAN, ITEM_LUM_BERRY
+ .2byte MOVE_FLAMETHROWER, MOVE_DIZZY_PUNCH, MOVE_REST, MOVE_FAKE_OUT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 0, 0, 255, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000002 @ personality
+ .string "KANGASKHAN$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_FEAROW, ITEM_LUM_BERRY
+ .2byte MOVE_DRILL_PECK, MOVE_TRI_ATTACK, MOVE_DOUBLE_EDGE, MOVE_REST
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 100, 210, 100, 0, 0, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000094 @ personality
+ .string "FEAROW$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_TOGETIC, ITEM_LUM_BERRY
+ .2byte MOVE_FLAMETHROWER, MOVE_LIGHT_SCREEN, MOVE_REST, MOVE_ANCIENT_POWER
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 255, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability
+ .4byte 0x00000024 @ personality
+ .string "TOGETIC$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_PIDGEOT, ITEM_LUM_BERRY
+ .2byte MOVE_STEEL_WING, MOVE_FLY, MOVE_MIRROR_MOVE, MOVE_REST
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 100, 110, 100, 100, 0, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x0000000D @ personality
+ .string "PIDGEOT$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_URSARING, ITEM_LUM_BERRY
+ .2byte MOVE_REST, MOVE_SNORE, MOVE_DIG, MOVE_SLASH
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 255, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x0000008A @ personality
+ .string "URSARING$", 11
+ .byte 255 @ friendship
+
+ .string "EMY & ALEK$", 11
+ .byte FACILITY_CLASS_YOUNG_COUPLE_2, 0x01, 0x00
+
+ .2byte EC_WORD_I_AM, EC_WORD_GIDDY, EC_WORD_WITH, EC_WORD_LOVEY_DOVEY, EC_WORD_JOY, EC_WORD_EXCL_EXCL
+ .2byte EC_WORD_SIGH, EC_WORD_ELLIPSIS, EC_WORD_MY, EC_WORD_GIRL, EC_WORD_IS, EC_WORD_CUTE
+ .2byte EC_WORD_WAAAH, EC_WORD_EXCL_EXCL, EC_WORD_YOU, EC_WORD_CAN_T, EC_WORD_BE, EC_WORD_SERIOUS
+ .2byte EC_WORD_WAIT, EC_WORD_ELLIPSIS, EC_WORD_WHO, EC_WORD_ARE, EC_WORD_YOU, EC_WORD_QUES
+
+ .align 2
+ .2byte SPECIES_LICKITUNG, ITEM_SHELL_BELL
+ .2byte MOVE_FLAMETHROWER, MOVE_EARTHQUAKE, MOVE_REST, MOVE_SLEEP_TALK
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 100, 255, 0, 55, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability
+ .4byte 0x00000016 @ personality
+ .string "LICKITUNG$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_NOCTOWL, ITEM_SHELL_BELL
+ .2byte MOVE_HYPNOSIS, MOVE_DREAM_EATER, MOVE_REFLECT, MOVE_AERIAL_ACE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 255, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x0000000B @ personality
+ .string "NOCTOWL$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_FURRET, ITEM_SHELL_BELL
+ .2byte MOVE_FLAMETHROWER, MOVE_AMNESIA, MOVE_SHOCK_WAVE, MOVE_SLASH
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 255, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability
+ .4byte 0x0000000E @ personality
+ .string "FURRET$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_RATICATE, ITEM_SHELL_BELL
+ .2byte MOVE_SUPER_FANG, MOVE_QUICK_ATTACK, MOVE_SWAGGER, MOVE_ENDEAVOR
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 255, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability
+ .4byte 0x0000008A @ personality
+ .string "RATICATE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_WIGGLYTUFF, ITEM_SHELL_BELL
+ .2byte MOVE_SUNNY_DAY, MOVE_FLAMETHROWER, MOVE_ATTRACT, MOVE_BODY_SLAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 255, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x0000000B @ personality
+ .string "WIGGLYTUFF$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_PORYGON2, ITEM_SHELL_BELL
+ .2byte MOVE_THUNDERBOLT, MOVE_CONVERSION_2, MOVE_TRI_ATTACK, MOVE_RECOVER
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 255, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x0000000A @ personality
+ .string "PORYGON2$", 11
+ .byte 255 @ friendship
+
+ dummy_tower_team
+ .byte 0x3b, 0x5d, 0x01
+
+ .align 2
+gUnknown_847BF0C::
+ .byte 0x06, 0x08, 0x01, 0x00
+ .string "JO & HALEY$", 11
+ .byte FACILITY_CLASS_CRUSH_KIN, 0x05, 0x00
+
+ .2byte EC_WORD_WE_RE, EC_WORD_USING, EC_WORD_THAT, EC_WORD_STRATEGY, EC_WORD_OKAY, EC_WORD_QUES
+ .2byte EC_WORD_YAY, EC_WORD_WE, EC_WORD_WON, EC_WORD_EXCL, EC_WORD_SORRY, EC_WORD_EXCL
+ .2byte EC_WORD_AWW, EC_WORD_EXCL, EC_WORD_THAT_WAS, EC_WORD_REALLY, EC_WORD_TERRIBLE, EC_WORD_EXCL
+ .2byte EC_WORD_ALL, EC_WORD_I, EC_WORD_DO, EC_WORD_IS, EC_WORD_LOSE, EC_WORD_ELLIPSIS
+
+ .align 2
+ .2byte SPECIES_SNEASEL, ITEM_SALAC_BERRY
+ .2byte MOVE_SHADOW_BALL, MOVE_SUNNY_DAY, MOVE_TAUNT, MOVE_AERIAL_ACE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 200, 0, 50, 210, 0, 50 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability
+ .4byte 0x0000000D @ personality
+ .string "SNEASEL$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_ALAKAZAM, ITEM_SALAC_BERRY
+ .2byte MOVE_FIRE_PUNCH, MOVE_RECOVER, MOVE_PSYCHIC, MOVE_SUNNY_DAY
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 255, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000005 @ personality
+ .string "ALAKAZAM$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_HITMONTOP, ITEM_SALAC_BERRY
+ .2byte MOVE_MEGA_KICK, MOVE_ENDEAVOR, MOVE_DIG, MOVE_SUNNY_DAY
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 100, 210, 0, 200, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000008 @ personality
+ .string "HITMONTOP$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_GIRAFARIG, ITEM_SALAC_BERRY
+ .2byte MOVE_LIGHT_SCREEN, MOVE_SUNNY_DAY, MOVE_SHADOW_BALL, MOVE_PSYBEAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 255, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability
+ .4byte 0x0000000A @ personality
+ .string "GIRAFARIG$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_XATU, ITEM_SALAC_BERRY
+ .2byte MOVE_SUNNY_DAY, MOVE_DRILL_PECK, MOVE_CONFUSE_RAY, MOVE_PSYCHIC
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 110, 0, 100, 100, 100, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000014 @ personality
+ .string "XATU$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_MR_MIME, ITEM_SALAC_BERRY
+ .2byte MOVE_REFLECT, MOVE_SUNNY_DAY, MOVE_PSYCHIC, MOVE_SHOCK_WAVE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 110, 0, 200, 200, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000005 @ personality
+ .string "MR. MIME$", 11
+ .byte 255 @ friendship
+
+ .string "JO & HALEY$", 11
+ .byte FACILITY_CLASS_CRUSH_KIN, 0x05, 0x00
+
+ .2byte EC_WORD_YOU, EC_WORD_YOU, EC_WORD_YOU, EC_WORD_BETTER, EC_WORD_NOT, EC_WORD_WIN
+ .2byte EC_WORD_YOU_RE, EC_WORD_NOT, EC_WORD_JOKING, EC_WORD_QUES, EC_WORD_WE, EC_WORD_WON
+ .2byte EC_WORD_WIMPY, EC_WORD_ELLIPSIS, EC_WORD_WE, EC_WORD_WERE, EC_WORD_WEAK, EC_WORD_ELLIPSIS
+ .2byte EC_WORD_HAHAHA, EC_WORD_ELLIPSIS, EC_WORD_WE_RE, EC_WORD_TOTALLY, EC_WORD_USELESS, EC_WORD_ELLIPSIS
+
+ .align 2
+ .2byte SPECIES_HYPNO, ITEM_FOCUS_BAND
+ .2byte MOVE_FIRE_PUNCH, MOVE_HYPNOSIS, MOVE_PSYCHIC, MOVE_NIGHTMARE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 255, 255, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000087 @ personality
+ .string "HYPNO$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_HITMONCHAN, ITEM_FOCUS_BAND
+ .2byte MOVE_FIRE_PUNCH, MOVE_THUNDER_PUNCH, MOVE_ICE_PUNCH, MOVE_DETECT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 255, 255, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x0000000F @ personality
+ .string "HITMONCHAN$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_MACHAMP, ITEM_FOCUS_BAND
+ .2byte MOVE_FLAMETHROWER, MOVE_BRICK_BREAK, MOVE_SCARY_FACE, MOVE_DIG
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 0, 255, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000043 @ personality
+ .string "MACHAMP$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_HOUNDOOM, ITEM_FOCUS_BAND
+ .2byte MOVE_ROAR, MOVE_FLAMETHROWER, MOVE_BITE, MOVE_PROTECT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 255, 255, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000087 @ personality
+ .string "HOUNDOOM$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_PRIMEAPE, ITEM_FOCUS_BAND
+ .2byte MOVE_OVERHEAT, MOVE_SWAGGER, MOVE_SEISMIC_TOSS, MOVE_DOUBLE_TEAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 100, 0, 100, 100, 110, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x0000008C @ personality
+ .string "PRIMEAPE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_HERACROSS, ITEM_FOCUS_BAND
+ .2byte MOVE_MEGAHORN, MOVE_EARTHQUAKE, MOVE_COUNTER, MOVE_LEER
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 110, 0, 200, 0, 0, 200 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000085 @ personality
+ .string "HERACROSS$", 11
+ .byte 255 @ friendship
+
+ dummy_tower_team
+ .byte 0xb1, 0x60, 0x01
+
+ .align 2
+gUnknown_847C2EC::
+ .byte 0x07, 0x08, 0x02, 0x0c
+ .string "JORDY$", 11
+ .byte FACILITY_CLASS_BIKER, 0x03, 0x00
+
+ .2byte EC_WORD_DON_T, EC_WORD_MAKE, EC_WORD_ME, EC_WORD_GIGGLE, EC_WORD_YOU, EC_WORD_PUSHOVER
+ .2byte EC_WORD_WHAT, EC_WORD_A_LITTLE, EC_WORD_PUSHOVER, EC_WORD_YOU, EC_WORD_ARE, EC_WORD_EXCL
+ .2byte EC_WORD_YOU, EC_WORD_WERE, EC_WORD_READY, EC_WORD_TO, EC_WORD_ROCK, EC_WORD_EXCL
+ .2byte EC_WORD_DARN, EC_WORD_EXCL, EC_WORD_I, EC_WORD_DON_T, EC_WORD_GET, EC_WORD_IT
+
+ .align 2
+ .2byte SPECIES_MAGBY, ITEM_LAX_INCENSE
+ .2byte MOVE_SMOKESCREEN, MOVE_CONFUSE_RAY, MOVE_FLAMETHROWER, MOVE_SCREECH
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 210, 30, 30, 0, 210, 30 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000043 @ personality
+ .string "MAGBY$", 11
+ .byte 0 @ friendship
+
+ .align 2
+ .2byte SPECIES_CLEFFA, ITEM_LAX_INCENSE
+ .2byte MOVE_ATTRACT, MOVE_CHARM, MOVE_SECRET_POWER, MOVE_FLASH
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 210, 210, 30, 0, 30, 30 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x000000CA @ personality
+ .string "CLEFFA$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_IGGLYBUFF, ITEM_LAX_INCENSE
+ .2byte MOVE_SING, MOVE_HIDDEN_POWER, MOVE_CHARM, MOVE_DOUBLE_TEAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 210, 0, 45, 210, 0, 45 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x000000D2 @ personality
+ .string "IGGLYBUFF$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_SMOOCHUM, ITEM_LAX_INCENSE
+ .2byte MOVE_FAKE_TEARS, MOVE_PSYCHIC, MOVE_MEAN_LOOK, MOVE_SING
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 210, 0, 45, 0, 210, 45 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000011 @ personality
+ .string "SMOOCHUM$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_TOGEPI, ITEM_LAX_INCENSE
+ .2byte MOVE_SWEET_KISS, MOVE_YAWN, MOVE_ANCIENT_POWER, MOVE_DOUBLE_TEAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 210, 210, 45, 0, 0, 45 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability
+ .4byte 0x00000034 @ personality
+ .string "TOGEPI$", 11
+ .byte 0 @ friendship
+
+ .align 2
+ .2byte SPECIES_PICHU, ITEM_LAX_INCENSE
+ .2byte MOVE_THUNDER_WAVE, MOVE_SHOCK_WAVE, MOVE_SWEET_KISS, MOVE_FLASH
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 210, 0, 45, 0, 210, 45 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x0000008E @ personality
+ .string "PICHU$", 11
+ .byte 0 @ friendship
+
+ .string "ERNEST$", 11
+ .byte FACILITY_CLASS_BIKER, 0x01, 0x00
+
+ .2byte EC_WORD_IT_S, EC_WORD_SLEEP, EC_WORD_TIME, EC_WORD_FOR, EC_WORD_CHILDREN, EC_WORD_EXCL
+ .2byte EC_WORD_NOT, EC_WORD_GUTSY, EC_WORD_ENOUGH, 0xFFFF, 0xFFFF, 0xFFFF
+ .2byte EC_WORD_WHY, EC_WORD_DID, EC_WORD_YOU, EC_WORD_CRUSH, EC_WORD_ME, EC_WORD_QUES
+ .2byte EC_WORD_I_AM, EC_WORD_BEAT, EC_WORD_I, EC_WORD_NEED, EC_WORD_A, EC_WORD_NAP
+
+ .align 2
+ .2byte SPECIES_CLEFFA, ITEM_QUICK_CLAW
+ .2byte MOVE_SWEET_KISS, MOVE_FRUSTRATION, MOVE_SING, MOVE_ATTRACT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 210, 210, 45, 0, 0, 45 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x000000CA @ personality
+ .string "CLEFFA$", 11
+ .byte 0 @ friendship
+
+ .align 2
+ .2byte SPECIES_MAGBY, ITEM_QUICK_CLAW
+ .2byte MOVE_FRUSTRATION, MOVE_CONFUSE_RAY, MOVE_FLAMETHROWER, MOVE_TOXIC
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 90, 210, 0, 0, 210, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x0000004D @ personality
+ .string "MAGBY$", 11
+ .byte 0 @ friendship
+
+ .align 2
+ .2byte SPECIES_TOGEPI, ITEM_QUICK_CLAW
+ .2byte MOVE_FRUSTRATION, MOVE_DOUBLE_TEAM, MOVE_TOXIC, MOVE_SWEET_KISS
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 210, 210, 45, 0, 0, 45 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability
+ .4byte 0x00000034 @ personality
+ .string "TOGEPI$", 11
+ .byte 0 @ friendship
+
+ .align 2
+ .2byte SPECIES_SMOOCHUM, ITEM_QUICK_CLAW
+ .2byte MOVE_MEAN_LOOK, MOVE_PERISH_SONG, MOVE_TOXIC, MOVE_FLASH
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 90, 0, 210, 0, 0, 210 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000016 @ personality
+ .string "SMOOCHUM$", 11
+ .byte 0 @ friendship
+
+ .align 2
+ .2byte SPECIES_IGGLYBUFF, ITEM_QUICK_CLAW
+ .2byte MOVE_DOUBLE_TEAM, MOVE_SWEET_KISS, MOVE_SEISMIC_TOSS, MOVE_FLASH
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 210, 0, 45, 210, 0, 45 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x0000000A @ personality
+ .string "IGGLYBUFF$", 11
+ .byte 0 @ friendship
+
+ .align 2
+ .2byte SPECIES_PICHU, ITEM_QUICK_CLAW
+ .2byte MOVE_TAIL_WHIP, MOVE_FRUSTRATION, MOVE_ATTRACT, MOVE_THUNDER_WAVE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 90, 210, 0, 210, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000080 @ personality
+ .string "PICHU$", 11
+ .byte 0 @ friendship
+
+ .string "GABRIEL$", 11
+ .byte FACILITY_CLASS_CUE_BALL, 0x01, 0x00
+
+ .2byte EC_WORD_YAHOO, EC_WORD_EXCL, EC_WORD_HERE_I_COME, EC_WORD_TO, EC_WORD_SWARM, EC_WORD_YOU
+ .2byte EC_WORD_I_AM, EC_WORD_INVINCIBLE, EC_WORD_YOU, EC_WORD_GOT, EC_WORD_THAT, EC_WORD_QUES
+ .2byte EC_WORD_WHAT, EC_WORD_WAS, EC_WORD_THAT, EC_WORD_QUES, 0xFFFF, 0xFFFF
+ .2byte EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_WIN, EC_WORD_NEXT, EC_WORD_TIME
+
+ .align 2
+ .2byte SPECIES_PICHU, ITEM_BRIGHT_POWDER
+ .2byte MOVE_THUNDER_WAVE, MOVE_FRUSTRATION, MOVE_THUNDERBOLT, MOVE_ATTRACT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 90, 210, 0, 0, 210, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000081 @ personality
+ .string "PICHU$", 11
+ .byte 0 @ friendship
+
+ .align 2
+ .2byte SPECIES_TOGEPI, ITEM_BRIGHT_POWDER
+ .2byte MOVE_ATTRACT, MOVE_FRUSTRATION, MOVE_TOXIC, MOVE_SUBSTITUTE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 210, 210, 0, 0, 0, 90 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability
+ .4byte 0x00000033 @ personality
+ .string "TOGEPI$", 11
+ .byte 0 @ friendship
+
+ .align 2
+ .2byte SPECIES_CLEFFA, ITEM_BRIGHT_POWDER
+ .2byte MOVE_ENCORE, MOVE_TOXIC, MOVE_DOUBLE_TEAM, MOVE_FLASH
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 210, 0, 150, 0, 0, 150 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x000000CF @ personality
+ .string "CLEFFA$", 11
+ .byte 0 @ friendship
+
+ .align 2
+ .2byte SPECIES_IGGLYBUFF, ITEM_BRIGHT_POWDER
+ .2byte MOVE_ATTRACT, MOVE_SUBSTITUTE, MOVE_SING, MOVE_PERISH_SONG
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 210, 0, 210, 0, 0, 90 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x000000CF @ personality
+ .string "IGGLYBUFF$", 11
+ .byte 0 @ friendship
+
+ .align 2
+ .2byte SPECIES_SMOOCHUM, ITEM_BRIGHT_POWDER
+ .2byte MOVE_SWEET_KISS, MOVE_PERISH_SONG, MOVE_TOXIC, MOVE_ATTRACT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 110, 0, 200, 0, 0, 200 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000016 @ personality
+ .string "SMOOCHUM$", 11
+ .byte 0 @ friendship
+
+ .align 2
+ .2byte SPECIES_MAGBY, ITEM_BRIGHT_POWDER
+ .2byte MOVE_LEER, MOVE_FRUSTRATION, MOVE_SUBSTITUTE, MOVE_FLAMETHROWER
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 90, 210, 0, 0, 210, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x0000004D @ personality
+ .string "MAGBY$", 11
+ .byte 0 @ friendship
+
+ .byte 0x4a, 0x7a, 0x01
+
+ .align 2
+gUnknown_847C6CC::
+ .byte 0x08, 0x08, 0x02, 0x0e
+ .string "MIKE$", 11
+ .byte FACILITY_CLASS_HIKER_2, 0x05, 0x00
+
+ .2byte EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_FULL, EC_WORD_OF, EC_WORD_POWER
+ .2byte EC_WORD_WHAT_S_UP_QUES, EC_WORD_WHERE, EC_WORD_IS, EC_WORD_YOUR, EC_WORD_POWER, EC_WORD_QUES
+ .2byte EC_WORD_YOU, EC_WORD_GOT, EC_WORD_ME, EC_WORD_WITH, EC_WORD_YOUR, EC_MOVE2(FAKE_OUT)
+ .2byte EC_WORD_OH_YEAH, EC_WORD_EXCL, EC_WORD_THAT_S, EC_WORD_PRETTY, EC_WORD_EXCELLENT, EC_WORD_EXCL
+
+ .align 2
+ .2byte SPECIES_PINSIR, ITEM_SCOPE_LENS
+ .2byte MOVE_GUILLOTINE, MOVE_BRICK_BREAK, MOVE_DIG, MOVE_REVENGE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 100, 210, 0, 100, 0, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000080 @ personality
+ .string "PINSIR$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_CHARIZARD, ITEM_SCOPE_LENS
+ .2byte MOVE_DRAGON_CLAW, MOVE_METAL_CLAW, MOVE_AERIAL_ACE, MOVE_OUTRAGE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 200, 200, 0, 110, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000035 @ personality
+ .string "CHARIZARD$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_RHYDON, ITEM_SCOPE_LENS
+ .2byte MOVE_MEGAHORN, MOVE_HORN_DRILL, MOVE_CRUSH_CLAW, MOVE_BRICK_BREAK
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 100, 210, 200, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000009 @ personality
+ .string "RHYDON$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_ARCANINE, ITEM_SCOPE_LENS
+ .2byte MOVE_EXTREME_SPEED, MOVE_IRON_TAIL, MOVE_AERIAL_ACE, MOVE_DIG
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 110, 200, 0, 200, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x0000003F @ personality
+ .string "ARCANINE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_GOLEM, ITEM_SCOPE_LENS
+ .2byte MOVE_DOUBLE_EDGE, MOVE_ROLLOUT, MOVE_BRICK_BREAK, MOVE_DIG
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 100, 210, 200, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000002 @ personality
+ .string "GOLEM$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_HOUNDOOM, ITEM_SCOPE_LENS
+ .2byte MOVE_CRUNCH, MOVE_REVERSAL, MOVE_DOUBLE_EDGE, MOVE_COUNTER
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 200, 110, 200, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 1 @ IVs, ability
+ .4byte 0x00000008 @ personality
+ .string "HOUNDOOM$", 11
+ .byte 255 @ friendship
+
+ .string "REBECCA$", 11
+ .byte FACILITY_CLASS_CRUSH_GIRL, 0x05, 0x00
+
+ .2byte EC_WORD_I, EC_WORD_WILL, EC_WORD_WIN, EC_WORD_EXCL_EXCL, 0xFFFF, 0xFFFF
+ .2byte EC_WORD_IT_S, EC_WORD_TOO, EC_WORD_BAD, EC_WORD_BUT, EC_WORD_I_AM, EC_WORD_OVERWHELMING
+ .2byte EC_WORD_ARRGH, EC_WORD_EXCL_EXCL, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF
+ .2byte EC_WORD_YOU, EC_WORD_ANGER, EC_WORD_ME, EC_WORD_BUT, EC_WORD_YOU_RE, EC_WORD_TOUGH
+
+ .align 2
+ .2byte SPECIES_SANDSLASH, ITEM_SILK_SCARF
+ .2byte MOVE_CRUSH_CLAW, MOVE_DIG, MOVE_DOUBLE_EDGE, MOVE_AERIAL_ACE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 255, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x0000000D @ personality
+ .string "SANDSLASH$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_DRAGONAIR, ITEM_SILK_SCARF
+ .2byte MOVE_OUTRAGE, MOVE_IRON_TAIL, MOVE_DOUBLE_EDGE, MOVE_SLAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 0, 255, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000003 @ personality
+ .string "DRAGONAIR$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_RAPIDASH, ITEM_SILK_SCARF
+ .2byte MOVE_BOUNCE, MOVE_IRON_TAIL, MOVE_THRASH, MOVE_DOUBLE_EDGE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 110, 100, 100, 100, 0, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 1 @ IVs, ability
+ .4byte 0x00000094 @ personality
+ .string "RAPIDASH$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_FLAREON, ITEM_SILK_SCARF
+ .2byte MOVE_IRON_TAIL, MOVE_FLAIL, MOVE_BITE, MOVE_DOUBLE_EDGE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 255, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000021 @ personality
+ .string "FLAREON$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_NIDOQUEEN, ITEM_SILK_SCARF
+ .2byte MOVE_SUPERPOWER, MOVE_AERIAL_ACE, MOVE_BRICK_BREAK, MOVE_COUNTER
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 110, 100, 100, 100, 0, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000017 @ personality
+ .string "NIDOQUEEN$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_PERSIAN, ITEM_SILK_SCARF
+ .2byte MOVE_RETURN, MOVE_AERIAL_ACE, MOVE_IRON_TAIL, MOVE_DIG
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 110, 200, 0, 200, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000080 @ personality
+ .string "PERSIAN$", 11
+ .byte 255 @ friendship
+
+ .string "NICOLAS$", 11
+ .byte FACILITY_CLASS_BLACK_BELT_2, 0x05, 0x00
+
+ .2byte EC_WORD_THIS, EC_WORD_IS, EC_WORD_WHERE, EC_WORD_YOU, EC_WORD_STOP, EC_WORD_EXCL
+ .2byte EC_WORD_YOU_RE, EC_WORD_TOO_WEAK, EC_WORD_TO, EC_WORD_EVER, EC_WORD_BEAT, EC_WORD_ME
+ .2byte EC_WORD_WHY, EC_WORD_COULDN_T, EC_WORD_I, EC_WORD_BEAT, EC_WORD_YOU, EC_WORD_QUES
+ .2byte EC_WORD_I, EC_WORD_HAVE, EC_WORD_TO, EC_WORD_TRAIN, EC_WORD_SOME, EC_WORD_MORE
+
+ .align 2
+ .2byte SPECIES_HITMONLEE, ITEM_KINGS_ROCK
+ .2byte MOVE_MEGA_KICK, MOVE_REVERSAL, MOVE_FOCUS_PUNCH, MOVE_BRICK_BREAK
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 255, 255, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000008 @ personality
+ .string "HITMONLEE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_SCYTHER, ITEM_KINGS_ROCK
+ .2byte MOVE_SLASH, MOVE_REVERSAL, MOVE_STEEL_WING, MOVE_AERIAL_ACE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 255, 0, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000017 @ personality
+ .string "SCYTHER$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_MAGMAR, ITEM_KINGS_ROCK
+ .2byte MOVE_FIRE_PUNCH, MOVE_THUNDER_PUNCH, MOVE_BRICK_BREAK, MOVE_IRON_TAIL
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 110, 100, 100, 100, 0, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000053 @ personality
+ .string "MAGMAR$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_MACHAMP, ITEM_KINGS_ROCK
+ .2byte MOVE_DYNAMIC_PUNCH, MOVE_DIG, MOVE_CROSS_CHOP, MOVE_REVENGE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 255, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x0000003F @ personality
+ .string "MACHAMP$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_PRIMEAPE, ITEM_KINGS_ROCK
+ .2byte MOVE_THRASH, MOVE_CROSS_CHOP, MOVE_IRON_TAIL, MOVE_AERIAL_ACE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 200, 110, 0, 200 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000008 @ personality
+ .string "PRIMEAPE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_POLIWRATH, ITEM_KINGS_ROCK
+ .2byte MOVE_BODY_SLAM, MOVE_DIG, MOVE_MEGA_KICK, MOVE_COUNTER
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 110, 100, 100, 100, 0, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x0000000D @ personality
+ .string "POLIWRATH$", 11
+ .byte 255 @ friendship
+
+ .byte 0x05, 0x6f, 0x01
+
+ .align 2
+gUnknown_847CAAC::
+ .byte 0x09, 0x08, 0x00, 0x00
+ .string "JOEY$", 11
+ .byte FACILITY_CLASS_CAMPER_2, 0x01, 0x00
+
+ .2byte EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_SCARY, EC_WORD_STRONG, EC_WORD_EXCL
+ .2byte EC_WORD_WERE, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_TOO, EC_WORD_MUCH, EC_WORD_QUES
+ .2byte EC_WORD_YOUR, EC_WORD_POKEMON, EC_WORD_ARE, EC_WORD_WAY, EC_WORD_TOO_STRONG, EC_WORD_EXCL
+ .2byte EC_WORD_THE, EC_WORD_WAY, EC_WORD_POKEMON, EC_WORD_MATCH_UP, EC_WORD_IS, EC_WORD_IMPORTANT
+
+ .align 2
+ .2byte SPECIES_MURKROW, ITEM_BLACK_GLASSES
+ .2byte MOVE_FAINT_ATTACK, MOVE_AERIAL_ACE, MOVE_SHADOW_BALL, MOVE_CONFUSE_RAY
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 84, 84, 84, 84, 84, 84 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000089 @ personality
+ .string "MURKROW$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_TAUROS, ITEM_SILK_SCARF
+ .2byte MOVE_EARTHQUAKE, MOVE_BODY_SLAM, MOVE_ROCK_TOMB, MOVE_PURSUIT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 84, 84, 84, 84, 84, 84 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x0000000C @ personality
+ .string "TAUROS$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_SLOWBRO, ITEM_MYSTIC_WATER
+ .2byte MOVE_AMNESIA, MOVE_PSYCHIC, MOVE_SURF, MOVE_ICE_BEAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 84, 84, 84, 84, 84, 84 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability
+ .4byte 0x00000089 @ personality
+ .string "SLOWBRO$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_ARBOK, ITEM_POISON_BARB
+ .2byte MOVE_IRON_TAIL, MOVE_SLUDGE_BOMB, MOVE_ROCK_SLIDE, MOVE_TOXIC
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 84, 84, 84, 84, 84, 84 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability
+ .4byte 0x00000089 @ personality
+ .string "ARBOK$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_NIDOKING, ITEM_SOFT_SAND
+ .2byte MOVE_EARTHQUAKE, MOVE_MEGAHORN, MOVE_SLUDGE_BOMB, MOVE_ROCK_SLIDE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 84, 84, 84, 84, 84, 84 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x0000000C @ personality
+ .string "NIDOKING$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_RAPIDASH, ITEM_CHARCOAL
+ .2byte MOVE_FLAMETHROWER, MOVE_BOUNCE, MOVE_QUICK_ATTACK, MOVE_DOUBLE_KICK
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 84, 84, 84, 84, 84, 84 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability
+ .4byte 0x00000089 @ personality
+ .string "RAPIDASH$", 11
+ .byte 255 @ friendship
+
+ dummy_tower_team
+ dummy_tower_team
+ .byte 0x17, 0x64, 0x01
+
+ .align 2
+gUnknown_847CE8C::
+ .byte 0x0a, 0x08, 0x00, 0x0c
+ .string "LILY$", 11
+ .byte FACILITY_CLASS_PKMN_BREEDER_3, 0x01, 0x00
+
+ .2byte EC_WORD_I, EC_WORD_WANT, EC_WORD_SOMETHING, EC_WORD_IN, EC_MOVE(RETURN), EC_WORD_EXCL
+ .2byte EC_WORD_I, EC_WORD_BELIEVE, EC_WORD_IN, EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_EXCL
+ .2byte EC_WORD_I, EC_WORD_NEED, EC_WORD_SOMETHING, EC_WORD_IN, EC_MOVE(RETURN), EC_WORD_ELLIPSIS
+ .2byte EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_HAVE, EC_WORD_MY, EC_WORD_TRUST, EC_WORD_FOREVER
+
+ .align 2
+ .2byte SPECIES_CLEFAIRY, ITEM_SITRUS_BERRY
+ .2byte MOVE_CHARM, MOVE_METRONOME, MOVE_RETURN, MOVE_REST
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 255, 0, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x0000000C @ personality
+ .string "CLEFAIRY$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_TOGEPI, ITEM_SITRUS_BERRY
+ .2byte MOVE_CHARM, MOVE_METRONOME, MOVE_RETURN, MOVE_REST
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 255, 0, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability
+ .4byte 0x0000000C @ personality
+ .string "TOGEPI$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_MEOWTH, ITEM_SILK_SCARF
+ .2byte MOVE_CHARM, MOVE_ASSIST, MOVE_RETURN, MOVE_REST
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 255, 0, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000089 @ personality
+ .string "MEOWTH$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_JIGGLYPUFF, ITEM_SILK_SCARF
+ .2byte MOVE_CHARM, MOVE_ROLLOUT, MOVE_RETURN, MOVE_REST
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 255, 0, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x0000000C @ personality
+ .string "JIGGLYPUFF$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_SNORLAX, ITEM_LEFTOVERS
+ .2byte MOVE_CHARM, MOVE_ROLLOUT, MOVE_RETURN, MOVE_REST
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 255, 0, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000025 @ personality
+ .string "SNORLAX$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_SNUBBULL, ITEM_LEFTOVERS
+ .2byte MOVE_CHARM, MOVE_LICK, MOVE_RETURN, MOVE_REST
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 255, 0, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x0000000C @ personality
+ .string "SNUBBULL$", 11
+ .byte 255 @ friendship
+
+ dummy_tower_team
+ dummy_tower_team
+ .byte 0xb7, 0x6c, 0x01
+
+ .align 2
+gUnknown_847D26C::
+ .byte 0x0b, 0x08, 0x00, 0x0e
+ .string "BRANDON$", 11
+ .byte FACILITY_CLASS_BUG_CATCHER_2, 0x01, 0x00
+
+ .2byte EC_WORD_POISON, EC_WORD_IS, EC_WORD_JUST, EC_WORD_SO, EC_WORD_AWFUL, EC_WORD_ISN_T_IT_QUES
+ .2byte EC_WORD_SEE, EC_WORD_QUES, EC_WORD_ISN_T, EC_WORD_POISON, EC_WORD_TERRIBLE, EC_WORD_QUES
+ .2byte EC_WORD_HUH_QUES, EC_WORD_OUR, EC_WORD_POISON, EC_WORD_DIDN_T, EC_WORD_WORK, EC_WORD_QUES
+ .2byte EC_WORD_POISON, EC_WORD_IS, EC_WORD_A, EC_WORD_TERRIBLE, EC_MOVE(TORMENT), EC_WORD_ISN_T_IT_QUES
+
+ .align 2
+ .2byte SPECIES_BUTTERFREE, ITEM_BRIGHT_POWDER
+ .2byte MOVE_SILVER_WIND, MOVE_SLEEP_POWDER, MOVE_PSYCHIC, MOVE_SUPERSONIC
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 255, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x0000008A @ personality
+ .string "BUTTERFREE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_BEEDRILL, ITEM_BRIGHT_POWDER
+ .2byte MOVE_SLUDGE_BOMB, MOVE_TWINEEDLE, MOVE_DOUBLE_TEAM, MOVE_AERIAL_ACE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 255, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x0000008A @ personality
+ .string "BEEDRILL$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_PARASECT, ITEM_BRIGHT_POWDER
+ .2byte MOVE_GIGA_DRAIN, MOVE_LIGHT_SCREEN, MOVE_STUN_SPORE, MOVE_SLASH
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 255, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x0000008A @ personality
+ .string "PARASECT$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_YANMA, ITEM_BRIGHT_POWDER
+ .2byte MOVE_HYPNOSIS, MOVE_SONIC_BOOM, MOVE_QUICK_ATTACK, MOVE_AERIAL_ACE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 255, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 1 @ IVs, ability
+ .4byte 0x0000008A @ personality
+ .string "YANMA$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_SHUCKLE, ITEM_SITRUS_BERRY
+ .2byte MOVE_TOXIC, MOVE_ROCK_TOMB, MOVE_PROTECT, MOVE_REST
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 255, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x0000008A @ personality
+ .string "SHUCKLE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_FORRETRESS, ITEM_SITRUS_BERRY
+ .2byte MOVE_TOXIC, MOVE_GIGA_DRAIN, MOVE_PROTECT, MOVE_SANDSTORM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 255, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x0000008A @ personality
+ .string "FORRETRESS$", 11
+ .byte 255 @ friendship
+
+ dummy_tower_team
+ dummy_tower_team
+ .byte 0x1f, 0x6e, 0x01
+
+ .align 2
+gUnknown_847D64C::
+ .byte 0x0c, 0x08, 0x01, 0x02
+ .string "RIC & RENE$", 11
+ .byte FACILITY_CLASS_CRUSH_KIN, 0x05, 0x00
+
+ .2byte EC_WORD_MY, EC_WORD_BIG, EC_WORD_BROTHER, EC_WORD_IS, EC_WORD_REALLY, EC_WORD_AWESOME
+ .2byte EC_WORD_MY, EC_WORD_BIG, EC_WORD_BROTHER, EC_WORD_IS, EC_WORD_TOO, EC_WORD_AWESOME
+ .2byte EC_WORD_MY, EC_WORD_BIG, EC_WORD_BROTHER, EC_WORD_ISN_T, EC_WORD_AWESOME, EC_WORD_QUES
+ .2byte EC_WORD_BIG, EC_WORD_BROTHER, EC_WORD_FIGHT, EC_WORD_EXCL, 0xFFFF, 0xFFFF
+
+ .align 2
+ .2byte SPECIES_HITMONLEE, ITEM_SCOPE_LENS
+ .2byte MOVE_ROCK_TOMB, MOVE_HI_JUMP_KICK, MOVE_BULK_UP, MOVE_PROTECT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 255, 0, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000002 @ personality
+ .string "HITMONLEE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_RHYDON, ITEM_SHELL_BELL
+ .2byte MOVE_MEGAHORN, MOVE_ROCK_BLAST, MOVE_BRICK_BREAK, MOVE_PROTECT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 255, 0, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x0000007F @ personality
+ .string "RHYDON$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_GOLEM, ITEM_SCOPE_LENS
+ .2byte MOVE_BRICK_BREAK, MOVE_ROCK_BLAST, MOVE_DIG, MOVE_PROTECT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 255, 0, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability
+ .4byte 0x00000002 @ personality
+ .string "GOLEM$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_MAGMAR, ITEM_SHELL_BELL
+ .2byte MOVE_FIRE_PUNCH, MOVE_BRICK_BREAK, MOVE_CONFUSE_RAY, MOVE_PROTECT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 255, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x0000004F @ personality
+ .string "MAGMAR$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_HERACROSS, ITEM_FOCUS_BAND
+ .2byte MOVE_MEGAHORN, MOVE_BRICK_BREAK, MOVE_ROCK_TOMB, MOVE_PROTECT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 255, 0, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x0000007F @ personality
+ .string "HERACROSS$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_POLIWRATH, ITEM_SCOPE_LENS
+ .2byte MOVE_FOCUS_PUNCH, MOVE_SURF, MOVE_BULK_UP, MOVE_PROTECT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 255, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000097 @ personality
+ .string "POLIWRATH$", 11
+ .byte 255 @ friendship
+
+ .string "RIC & RENE$", 11
+ .byte FACILITY_CLASS_CRUSH_KIN, 0x05, 0x00
+
+ .2byte EC_WORD_I_AM, EC_WORD_REALLY, EC_WORD_AWESOME, EC_WORD_EXCL, 0xFFFF, 0xFFFF
+ .2byte EC_WORD_I_AM, EC_WORD_TOO, EC_WORD_AWESOME, EC_WORD_EXCL, 0xFFFF, 0xFFFF
+ .2byte EC_WORD_HUH_QUES, 0xFFFF, EC_WORD_I_AM, EC_WORD_NOT_VERY, EC_WORD_AWESOME, EC_WORD_QUES
+ .2byte EC_WORD_I, EC_WORD_WILL, EC_WORD_DO, EC_WORD_MY, EC_WORD_BEST, EC_WORD_EXCL
+
+ .align 2
+ .2byte SPECIES_MACHAMP, ITEM_SCOPE_LENS
+ .2byte MOVE_CROSS_CHOP, MOVE_SEISMIC_TOSS, MOVE_ROCK_TOMB, MOVE_PROTECT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 255, 0, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x0000004E @ personality
+ .string "MACHAMP$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_PINSIR, ITEM_FOCUS_BAND
+ .2byte MOVE_ROCK_TOMB, MOVE_SEISMIC_TOSS, MOVE_SUBMISSION, MOVE_PROTECT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 255, 0, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000080 @ personality
+ .string "PINSIR$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_MAROWAK, ITEM_SHELL_BELL
+ .2byte MOVE_BRICK_BREAK, MOVE_BONEMERANG, MOVE_AERIAL_ACE, MOVE_PROTECT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 255, 0, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability
+ .4byte 0x00000003 @ personality
+ .string "MAROWAK$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_HITMONCHAN, ITEM_SCOPE_LENS
+ .2byte MOVE_MACH_PUNCH, MOVE_THUNDER_PUNCH, MOVE_DOUBLE_TEAM, MOVE_PROTECT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 255, 0, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000003 @ personality
+ .string "HITMONCHAN$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_ELECTABUZZ, ITEM_SHELL_BELL
+ .2byte MOVE_THUNDER_PUNCH, MOVE_BRICK_BREAK, MOVE_THUNDER_WAVE, MOVE_PROTECT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 255, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x0000004F @ personality
+ .string "ELECTABUZZ$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_POLIWRATH, ITEM_SCOPE_LENS
+ .2byte MOVE_FOCUS_PUNCH, MOVE_SURF, MOVE_BULK_UP, MOVE_PROTECT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 255, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000097 @ personality
+ .string "POLIWRATH$", 11
+ .byte 255 @ friendship
+
+ dummy_tower_team
+ .byte 0xb4, 0x66, 0x01
+
+ .align 2
+gUnknown_847DA2C::
+ .byte 0x0d, 0x08, 0x01, 0x0d
+ .string "JEN & KIRA$", 11
+ .byte FACILITY_CLASS_TWINS_2, 0x05, 0x00
+
+ .2byte EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_TRY, EC_WORD_HARD, EC_WORD_EXCL
+ .2byte EC_WORD_EHEHE, EC_WORD_YAY, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF
+ .2byte EC_WORD_WAAAH, EC_WORD_EXCL, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF
+ .2byte EC_WORD_I, EC_WORD_WILL, EC_WORD_TRY, EC_WORD_TO, EC_WORD_GET, EC_WORD_BETTER
+
+ .align 2
+ .2byte SPECIES_JOLTEON, ITEM_QUICK_CLAW
+ .2byte MOVE_QUICK_ATTACK, MOVE_THUNDERBOLT, MOVE_DOUBLE_KICK, MOVE_PIN_MISSILE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 0, 0, 255, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000029 @ personality
+ .string "JOLTEON$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_ESPEON, ITEM_QUICK_CLAW
+ .2byte MOVE_QUICK_ATTACK, MOVE_PSYCHIC, MOVE_SHADOW_BALL, MOVE_BITE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 0, 0, 255, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000029 @ personality
+ .string "ESPEON$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_FLAREON, ITEM_QUICK_CLAW
+ .2byte MOVE_QUICK_ATTACK, MOVE_FLAMETHROWER, MOVE_SHADOW_BALL, MOVE_IRON_TAIL
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 0, 0, 255, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000033 @ personality
+ .string "FLAREON$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_VAPOREON, ITEM_QUICK_CLAW
+ .2byte MOVE_QUICK_ATTACK, MOVE_WATERFALL, MOVE_ICE_BEAM, MOVE_BITE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 0, 0, 255, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000010 @ personality
+ .string "VAPOREON$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_EEVEE, ITEM_QUICK_CLAW
+ .2byte MOVE_QUICK_ATTACK, MOVE_DOUBLE_EDGE, MOVE_BITE, MOVE_IRON_TAIL
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 0, 0, 255, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000010 @ personality
+ .string "EEVEE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_UMBREON, ITEM_QUICK_CLAW
+ .2byte MOVE_QUICK_ATTACK, MOVE_FAINT_ATTACK, MOVE_SHADOW_BALL, MOVE_IRON_TAIL
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 0, 0, 255, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000010 @ personality
+ .string "UMBREON$", 11
+ .byte 255 @ friendship
+
+ .string "JEN & KIRA$", 11
+ .byte FACILITY_CLASS_TWINS_2, 0x03, 0x00
+
+ .2byte EC_WORD_LET_S, EC_WORD_TRY, EC_WORD_HARD, EC_WORD_EXCL, 0xFFFF, 0xFFFF
+ .2byte EC_WORD_GIGGLE, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF
+ .2byte EC_WORD_WAAAH, EC_WORD_EXCL, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF
+ .2byte EC_WORD_WE, EC_WORD_HAVE, EC_WORD_TO, EC_WORD_WORK, EC_WORD_BETTER, 0xFFFF
+
+ .align 2
+ .2byte SPECIES_JOLTEON, ITEM_BRIGHT_POWDER
+ .2byte MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HELPING_HAND, MOVE_THUNDERBOLT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 255, 0, 0 @ EVs
+ .align 2
+ trainerid 10, 0 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x0000000A @ personality
+ .string "JOLTEON$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_ESPEON, ITEM_BRIGHT_POWDER
+ .2byte MOVE_LIGHT_SCREEN, MOVE_REFLECT, MOVE_HELPING_HAND, MOVE_PSYCHIC
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 255, 0, 0 @ EVs
+ .align 2
+ trainerid 10, 0 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x0000000A @ personality
+ .string "ESPEON$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_FLAREON, ITEM_BRIGHT_POWDER
+ .2byte MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HELPING_HAND, MOVE_FLAMETHROWER
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 255, 0, 0 @ EVs
+ .align 2
+ trainerid 13, 0 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x0000000D @ personality
+ .string "FLAREON$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_VAPOREON, ITEM_BRIGHT_POWDER
+ .2byte MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HELPING_HAND, MOVE_SURF
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 255, 0, 0 @ EVs
+ .align 2
+ trainerid 35, 0 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000023 @ personality
+ .string "VAPOREON$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_EEVEE, ITEM_BRIGHT_POWDER
+ .2byte MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HELPING_HAND, MOVE_DOUBLE_EDGE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 255, 0, 0 @ EVs
+ .align 2
+ trainerid 35, 0 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000023 @ personality
+ .string "EEVEE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_UMBREON, ITEM_BRIGHT_POWDER
+ .2byte MOVE_GROWL, MOVE_TAIL_WHIP, MOVE_HELPING_HAND, MOVE_FAINT_ATTACK
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 255, 0, 0 @ EVs
+ .align 2
+ trainerid 35, 0 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000023 @ personality
+ .string "UMBREON$", 11
+ .byte 255 @ friendship
+
+ dummy_tower_team
+ .byte 0xc2, 0x7f, 0x01
+
+ .align 2
+gUnknown_847DE0C::
+ .byte 0x0e, 0x08, 0x01, 0x08
+ .string "ISAC & MAG$", 11
+ .byte FACILITY_CLASS_COOL_COUPLE, 0x01, 0x00
+
+ .2byte EC_WORD_OUR, EC_MOVE(EARTHQUAKE), EC_WORD_WILL, EC_WORD_MAKE, EC_WORD_YOU, EC_WORD_SHAKY
+ .2byte EC_WORD_FEELING, EC_WORD_SHAKY, EC_WORD_HUH_QUES, 0xFFFF, 0xFFFF, 0xFFFF
+ .2byte EC_WORD_I_AM, EC_WORD_ALL, EC_WORD_SHAKY, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF
+ .2byte EC_WORD_MY, EC_WORD_GIRL, EC_WORD_ISN_T, EC_WORD_SHAKY, EC_WORD_SHE_IS, EC_WORD_LOVEY_DOVEY
+
+ .align 2
+ .2byte SPECIES_NIDOKING, ITEM_SOFT_SAND
+ .2byte MOVE_EARTHQUAKE, MOVE_MEGAHORN, MOVE_SHADOW_BALL, MOVE_FIRE_BLAST
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 0, 255, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000003 @ personality
+ .string "NIDOKING$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_GLIGAR, ITEM_SOFT_SAND
+ .2byte MOVE_EARTHQUAKE, MOVE_QUICK_ATTACK, MOVE_AERIAL_ACE, MOVE_IRON_TAIL
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 0, 255, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000080 @ personality
+ .string "GLIGAR$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_QUAGSIRE, ITEM_SOFT_SAND
+ .2byte MOVE_EARTHQUAKE, MOVE_SLUDGE_BOMB, MOVE_BLIZZARD, MOVE_BRICK_BREAK
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 0, 255, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000080 @ personality
+ .string "QUAGSIRE$", 11
+ .byte 0 @ friendship
+
+ .align 2
+ .2byte SPECIES_PILOSWINE, ITEM_SOFT_SAND
+ .2byte MOVE_EARTHQUAKE, MOVE_BLIZZARD, MOVE_ANCIENT_POWER, MOVE_BODY_SLAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 0, 255, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000080 @ personality
+ .string "PILOSWINE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_GOLEM, ITEM_SOFT_SAND
+ .2byte MOVE_EARTHQUAKE, MOVE_ROCK_BLAST, MOVE_BRICK_BREAK, MOVE_EXPLOSION
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 0, 255, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability
+ .4byte 0x00000080 @ personality
+ .string "GOLEM$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_STEELIX, ITEM_SOFT_SAND
+ .2byte MOVE_EARTHQUAKE, MOVE_IRON_TAIL, MOVE_DRAGON_BREATH, MOVE_DOUBLE_EDGE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 0, 255, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000080 @ personality
+ .string "STEELIX$", 11
+ .byte 255 @ friendship
+
+ .string "ISAC & MAG$", 11
+ .byte FACILITY_CLASS_COOL_COUPLE, 0x01, 0x00
+
+ .2byte EC_WORD_MY, EC_WORD_POKEMON, EC_WORD_DOESN_T, EC_WORD_GET, EC_WORD_ALL, EC_WORD_SHAKY
+ .2byte EC_WORD_SEE, EC_WORD_QUES, EC_WORD_I, EC_WORD_DIDN_T, EC_WORD_LIE, EC_WORD_EXCL
+ .2byte EC_WORD_HUH_QUES, EC_WORD_YOU, EC_WORD_LEFT, EC_WORD_ME, EC_WORD_FEELING, EC_WORD_SHAKY
+ .2byte EC_WORD_I_AM, EC_WORD_LOVEY_DOVEY, EC_WORD_FOR, EC_WORD_HIM, EC_WORD_NOT, EC_WORD_SHAKY
+
+ .align 2
+ .2byte SPECIES_SKARMORY, ITEM_KINGS_ROCK
+ .2byte MOVE_SANDSTORM, MOVE_STEEL_WING, MOVE_AIR_CUTTER, MOVE_SPIKES
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 255, 255, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x0000000B @ personality
+ .string "SKARMORY$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_MANTINE, ITEM_LUM_BERRY
+ .2byte MOVE_ICE_BEAM, MOVE_SURF, MOVE_CONFUSE_RAY, MOVE_AERIAL_ACE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 255, 255, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability
+ .4byte 0x0000000B @ personality
+ .string "MANTINE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_JUMPLUFF, ITEM_LUM_BERRY
+ .2byte MOVE_TAIL_WHIP, MOVE_SUNNY_DAY, MOVE_SOLAR_BEAM, MOVE_AERIAL_ACE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 255, 255, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x0000000B @ personality
+ .string "JUMPLUFF$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_GENGAR, ITEM_KINGS_ROCK
+ .2byte MOVE_SHADOW_BALL, MOVE_SLUDGE_BOMB, MOVE_THUNDERBOLT, MOVE_PSYCHIC
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 255, 255, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x0000000B @ personality
+ .string "GENGAR$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_CROBAT, ITEM_KINGS_ROCK
+ .2byte MOVE_GIGA_DRAIN, MOVE_POISON_FANG, MOVE_FLY, MOVE_STEEL_WING
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 255, 255, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x0000000B @ personality
+ .string "CROBAT$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_XATU, ITEM_LUM_BERRY
+ .2byte MOVE_PSYCHIC, MOVE_CONFUSE_RAY, MOVE_AERIAL_ACE, MOVE_LIGHT_SCREEN
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 255, 255, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x0000000B @ personality
+ .string "XATU$", 11
+ .byte 255 @ friendship
+
+ dummy_tower_team
+ .byte 0xb0, 0x6b, 0x01
+
+ .align 2
+gUnknown_847E1EC::
+ .byte 0x0f, 0x08, 0x02, 0x06
+ .string "CHELSEA$", 11
+ .byte FACILITY_CLASS_PKMN_RANGER_4, 0x07, 0x00
+
+ .2byte EC_WORD_THE, EC_WORD_GREEN, EC_WORD_WORLD, EC_WORD_IS, EC_WORD_IMPORTANT, EC_WORD_ISN_T_IT_QUES
+ .2byte EC_WORD_YOU, EC_WORD_TAKE, EC_WORD_THE, EC_WORD_LOSS, 0xFFFF, 0xFFFF
+ .2byte EC_WORD_BE, EC_WORD_KIND, EC_WORD_TO, EC_WORD_THE, EC_WORD_GREEN, EC_WORD_WORLD
+ .2byte EC_WORD_DON_T, EC_WORD_EVER, EC_WORD_POISON, EC_WORD_THE, EC_WORD_GREEN, EC_WORD_WORLD
+
+ .align 2
+ .2byte SPECIES_VILEPLUME, ITEM_PETAYA_BERRY
+ .2byte MOVE_INGRAIN, MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB, MOVE_STUN_SPORE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 0, 255, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x00000011 @ personality
+ .string "VILEPLUME$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_STARMIE, ITEM_PETAYA_BERRY
+ .2byte MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_WATERFALL, MOVE_RECOVER
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 0, 255, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 1 @ IVs, ability
+ .4byte 0x00000010 @ personality
+ .string "STARMIE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_URSARING, ITEM_LIECHI_BERRY
+ .2byte MOVE_FAINT_ATTACK, MOVE_BODY_SLAM, MOVE_BRICK_BREAK, MOVE_ROCK_TOMB
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 255, 0, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x00000001 @ personality
+ .string "URSARING$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_NOCTOWL, ITEM_LIECHI_BERRY
+ .2byte MOVE_HYPNOSIS, MOVE_DREAM_EATER, MOVE_FAINT_ATTACK, MOVE_AERIAL_ACE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 255, 0, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x00000001 @ personality
+ .string "NOCTOWL$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_NINETALES, ITEM_PETAYA_BERRY
+ .2byte MOVE_GRUDGE, MOVE_OVERHEAT, MOVE_FAINT_ATTACK, MOVE_WILL_O_WISP
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 255, 255, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x00000010 @ personality
+ .string "NINETALES$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_LEDIAN, ITEM_LIECHI_BERRY
+ .2byte MOVE_SILVER_WIND, MOVE_SWIFT, MOVE_AERIAL_ACE, MOVE_TOXIC
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 0, 255, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x00000001 @ personality
+ .string "LEDIAN$", 11
+ .byte 255 @ friendship
+
+ .string "TRENTON$", 11
+ .byte FACILITY_CLASS_PKMN_RANGER_3, 0x07, 0x00
+
+ .2byte EC_WORD_I, EC_MOVE2(PROTECT), EC_WORD_THE, EC_WORD_GREAT, EC_WORD_GREEN, EC_WORD_WORLD
+ .2byte EC_WORD_TAKE_THAT, EC_WORD_EXCL, EC_WORD_THE, EC_WORD_LOSS, EC_WORD_IS, EC_WORD_YOURS
+ .2byte EC_MOVE2(PROTECT), EC_WORD_THE, EC_WORD_GREEN, EC_WORD_WORLD, 0xFFFF, 0xFFFF
+ .2byte EC_MOVE2(PROTECT), EC_WORD_AND, EC_WORD_RESUSCITATE, EC_WORD_THE, EC_WORD_GREEN, EC_WORD_WORLD
+
+ .align 2
+ .2byte SPECIES_GYARADOS, ITEM_SITRUS_BERRY
+ .2byte MOVE_EARTHQUAKE, MOVE_WATERFALL, MOVE_BLIZZARD, MOVE_HYPER_BEAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 0, 0, 255, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x00000088 @ personality
+ .string "GYARADOS$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_VICTREEBEL, ITEM_SITRUS_BERRY
+ .2byte MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB, MOVE_REFLECT, MOVE_ATTRACT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 255, 0, 255, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x0000008E @ personality
+ .string "VICTREEBEL$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_DONPHAN, ITEM_SITRUS_BERRY
+ .2byte MOVE_EARTHQUAKE, MOVE_ANCIENT_POWER, MOVE_IRON_TAIL, MOVE_DOUBLE_EDGE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 255, 0, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x00000097 @ personality
+ .string "DONPHAN$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_FEAROW, ITEM_SITRUS_BERRY
+ .2byte MOVE_FAINT_ATTACK, MOVE_DRILL_PECK, MOVE_STEEL_WING, MOVE_DOUBLE_TEAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 255, 0, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x00000097 @ personality
+ .string "FEAROW$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_ARCANINE, ITEM_SITRUS_BERRY
+ .2byte MOVE_EXTREME_SPEED, MOVE_FIRE_BLAST, MOVE_CRUNCH, MOVE_AERIAL_ACE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 0, 0, 255, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x0000004F @ personality
+ .string "ARCANINE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_ARIADOS, ITEM_SITRUS_BERRY
+ .2byte MOVE_PSYCHIC, MOVE_SLUDGE_BOMB, MOVE_SIGNAL_BEAM, MOVE_TOXIC
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 255, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x00000097 @ personality
+ .string "ARIADOS$", 11
+ .byte 255 @ friendship
+
+ .string "ALBERT$", 11
+ .byte FACILITY_CLASS_COOLTRAINER_3, 0x07, 0x00
+
+ .2byte EC_WORD_LET_S, EC_WORD_HAVE, EC_WORD_AN, EC_WORD_EXCITING, EC_WORD_TIME, EC_WORD_HERE
+ .2byte EC_WORD_YOU_RE, EC_WORD_TOO_WEAK, EC_WORD_TO, EC_WORD_MAKE, EC_WORD_THINGS, EC_WORD_EXCITING
+ .2byte EC_WORD_YOU_RE, EC_WORD_STRONG, EC_WORD_THAT_WAS, EC_WORD_WILD, EC_WORD_AND, EC_WORD_EXCITING
+ .2byte EC_WORD_I_AM, EC_WORD_TIRED, EC_WORD_AFTER, EC_WORD_THAT, EC_WORD_EXCITING, EC_WORD_MATCH
+
+ .align 2
+ .2byte SPECIES_KINGDRA, ITEM_SALAC_BERRY
+ .2byte MOVE_TWISTER, MOVE_OCTAZOOKA, MOVE_AURORA_BEAM, MOVE_RETURN
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 0, 255, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x00000015 @ personality
+ .string "KINGDRA$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_GOLEM, ITEM_SALAC_BERRY
+ .2byte MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_BRICK_BREAK, MOVE_DOUBLE_EDGE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 0, 0, 255, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 1 @ IVs, ability
+ .4byte 0x0000007F @ personality
+ .string "GOLEM$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_DRAGONITE, ITEM_SALAC_BERRY
+ .2byte MOVE_THUNDER, MOVE_FIRE_BLAST, MOVE_BLIZZARD, MOVE_DRAGON_CLAW
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 0, 0, 255, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x00000001 @ personality
+ .string "DRAGONITE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_TYRANITAR, ITEM_SALAC_BERRY
+ .2byte MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_THUNDER, MOVE_FIRE_BLAST
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 255, 0, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x00000097 @ personality
+ .string "TYRANITAR$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_AMPHAROS, ITEM_SALAC_BERRY
+ .2byte MOVE_REFLECT, MOVE_THUNDER, MOVE_BRICK_BREAK, MOVE_RETURN
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 255, 0, 255, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x00000013 @ personality
+ .string "AMPHAROS$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_VENUSAUR, ITEM_SALAC_BERRY
+ .2byte MOVE_GIGA_DRAIN, MOVE_LEECH_SEED, MOVE_TOXIC, MOVE_BODY_SLAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 0, 255, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x0000002A @ personality
+ .string "VENUSAUR$", 11
+ .byte 255 @ friendship
+
+ .byte 0x4c, 0x84, 0x01
+
+ .align 2
+gUnknown_847E5CC::
+ .byte 0x10, 0x08, 0x02, 0x04
+ .string "CAMRYN$", 11
+ .byte FACILITY_CLASS_PICNICKER_2, 0x01, 0x00
+
+ .2byte EC_WORD_LET_S, EC_WORD_BATTLE, EC_WORD_I, EC_WORD_WON_T, EC_WORD_LOSE, EC_WORD_EXCL
+ .2byte EC_WORD_I, EC_WORD_SAID, EC_WORD_THAT, EC_WORD_I, EC_WORD_WOULD, EC_WORD_WIN
+ .2byte EC_WORD_OH_QUES, EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS, EC_WORD_DID, EC_WORD_I, EC_WORD_LOSE, EC_WORD_QUES
+ .2byte EC_WORD_YOU_RE, EC_WORD_TOO_STRONG, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF
+
+ .align 2
+ .2byte SPECIES_MURKROW, ITEM_BLACK_GLASSES
+ .2byte MOVE_AERIAL_ACE, MOVE_SHADOW_BALL, MOVE_FAINT_ATTACK, MOVE_CONFUSE_RAY
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 84, 84, 84, 84, 84, 84 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000089 @ personality
+ .string "MURKROW$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_RAPIDASH, ITEM_CHARCOAL
+ .2byte MOVE_BOUNCE, MOVE_FLAMETHROWER, MOVE_QUICK_ATTACK, MOVE_DOUBLE_KICK
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 84, 84, 84, 84, 84, 84 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability
+ .4byte 0x0000000C @ personality
+ .string "RAPIDASH$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_MILTANK, ITEM_SILK_SCARF
+ .2byte MOVE_MILK_DRINK, MOVE_BRICK_BREAK, MOVE_BODY_SLAM, MOVE_SHADOW_BALL
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 84, 84, 84, 84, 84, 84 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x0000000C @ personality
+ .string "MILTANK$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_GOLDUCK, ITEM_MYSTIC_WATER
+ .2byte MOVE_HYDRO_PUMP, MOVE_ICE_BEAM, MOVE_CALM_MIND, MOVE_LIGHT_SCREEN
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 84, 84, 84, 84, 84, 84 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000089 @ personality
+ .string "GOLDUCK$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_SANDSLASH, ITEM_SOFT_SAND
+ .2byte MOVE_SANDSTORM, MOVE_AERIAL_ACE, MOVE_EARTHQUAKE, MOVE_ROCK_TOMB
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 84, 84, 84, 84, 84, 84 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000089 @ personality
+ .string "SANDSLASH$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_NIDOQUEEN, ITEM_HARD_STONE
+ .2byte MOVE_EARTHQUAKE, MOVE_SUPERPOWER, MOVE_SLUDGE_BOMB, MOVE_ROCK_SLIDE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 84, 84, 84, 84, 84, 84 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x0000000C @ personality
+ .string "NIDOQUEEN$", 11
+ .byte 255 @ friendship
+
+ .string "NATALIA$", 11
+ .byte FACILITY_CLASS_AROMA_LADY_2, 0x01, 0x00
+
+ .2byte EC_WORD_THIS, EC_MOVE(SWEET_SCENT), EC_WORD_YOU, EC_WORD_LIKE, EC_WORD_IT, EC_WORD_QUES
+ .2byte EC_WORD_WASN_T, EC_WORD_THAT, EC_WORD_NICE, EC_WORD_QUES, 0xFFFF, 0xFFFF
+ .2byte EC_WORD_THAT, EC_WORD_WASN_T, EC_WORD_GOOD, EC_WORD_QUES, 0xFFFF, 0xFFFF
+ .2byte EC_WORD_I, EC_MOVE2(REFRESH), EC_WORD_THINGS, EC_WORD_WITH, EC_WORD_REFRESHING, EC_MOVE(AROMATHERAPY)
+
+ .align 2
+ .2byte SPECIES_BELLOSSOM, ITEM_PERSIM_BERRY
+ .2byte MOVE_SWEET_SCENT, MOVE_ATTRACT, MOVE_PETAL_DANCE, MOVE_FLAIL
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 84, 84, 84, 84, 84, 84 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x0000000C @ personality
+ .string "BELLOSSOM$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_VICTREEBEL, ITEM_MIRACLE_SEED
+ .2byte MOVE_SWEET_SCENT, MOVE_ATTRACT, MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 84, 84, 84, 84, 84, 84 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000089 @ personality
+ .string "VICTREEBEL$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_PARASECT, ITEM_MIRACLE_SEED
+ .2byte MOVE_SWEET_SCENT, MOVE_ATTRACT, MOVE_GIGA_DRAIN, MOVE_AERIAL_ACE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 84, 84, 84, 84, 84, 84 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000089 @ personality
+ .string "PARASECT$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_VILEPLUME, ITEM_PERSIM_BERRY
+ .2byte MOVE_SWEET_SCENT, MOVE_ATTRACT, MOVE_PETAL_DANCE, MOVE_SLUDGE_BOMB
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 84, 84, 84, 84, 84, 84 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x0000000C @ personality
+ .string "VILEPLUME$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_VENUSAUR, ITEM_PERSIM_BERRY
+ .2byte MOVE_SWEET_SCENT, MOVE_ATTRACT, MOVE_PETAL_DANCE, MOVE_SLUDGE_BOMB
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 84, 84, 84, 84, 84, 84 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x0000000C @ personality
+ .string "VENUSAUR$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_MEGANIUM, ITEM_MIRACLE_SEED
+ .2byte MOVE_SWEET_SCENT, MOVE_ATTRACT, MOVE_GIGA_DRAIN, MOVE_BODY_SLAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 84, 84, 84, 84, 84, 84 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000025 @ personality
+ .string "MEGANIUM$", 11
+ .byte 255 @ friendship
+
+ .string "KATHLEEN$", 11
+ .byte FACILITY_CLASS_COOLTRAINER_4, 0x07, 0x00
+
+ .2byte EC_WORD_TOO, EC_WORD_BAD, EC_WORD_IT_S, EC_WORD_OVER, EC_WORD_FOR, EC_WORD_YOU
+ .2byte EC_WORD_SORRY, EC_WORD_ELLIPSIS, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF
+ .2byte EC_WORD_THIS, EC_WORD_IS, EC_WORD_HARD, EC_WORD_TO, EC_WORD_BELIEVE, EC_WORD_ELLIPSIS
+ .2byte EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_PURE_POWER, EC_WORD_THAT, EC_WORD_IS, EC_WORD_NATURAL
+
+ .align 2
+ .2byte SPECIES_MAROWAK, ITEM_LUM_BERRY
+ .2byte MOVE_EARTHQUAKE, MOVE_BRICK_BREAK, MOVE_BONEMERANG, MOVE_AERIAL_ACE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 84, 84, 84, 84, 84, 84 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000089 @ personality
+ .string "MAROWAK$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_LAPRAS, ITEM_LUM_BERRY
+ .2byte MOVE_SURF, MOVE_BLIZZARD, MOVE_PSYCHIC, MOVE_THUNDER
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 84, 84, 84, 84, 84, 84 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability
+ .4byte 0x0000000C @ personality
+ .string "LAPRAS$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_ARCANINE, ITEM_LUM_BERRY
+ .2byte MOVE_EXTREME_SPEED, MOVE_FLAMETHROWER, MOVE_CRUNCH, MOVE_AERIAL_ACE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 84, 84, 84, 84, 84, 84 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability
+ .4byte 0x00000057 @ personality
+ .string "ARCANINE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_RAICHU, ITEM_LUM_BERRY
+ .2byte MOVE_THUNDERBOLT, MOVE_QUICK_ATTACK, MOVE_DOUBLE_TEAM, MOVE_IRON_TAIL
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 84, 84, 84, 84, 84, 84 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000089 @ personality
+ .string "RAICHU$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_TOGETIC, ITEM_LUM_BERRY
+ .2byte MOVE_ANCIENT_POWER, MOVE_SWEET_KISS, MOVE_PSYCHIC, MOVE_MAGICAL_LEAF
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 84, 84, 84, 84, 84, 84 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability
+ .4byte 0x0000000C @ personality
+ .string "TOGETIC$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_SNORLAX, ITEM_LUM_BERRY
+ .2byte MOVE_BODY_SLAM, MOVE_REST, MOVE_SNORE, MOVE_SHADOW_BALL
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 84, 84, 84, 84, 84, 84 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability
+ .4byte 0x0000000C @ personality
+ .string "SNORLAX$", 11
+ .byte 255 @ friendship
+
+ .byte 0x8c, 0x73, 0x01
+
+ .align 2
+gUnknown_847E9AC::
+ .byte 0x11, 0x08, 0x00, 0x03
+ .string "BRADEN$", 11
+ .byte FACILITY_CLASS_SWIMMER_MALE_2, 0x01, 0x00
+
+ .2byte EC_WORD_I_AM, EC_WORD_PRETTY, EC_WORD_HAPPY, EC_WORD_WITH, EC_WORD_MY, EC_WORD_TOUGHNESS
+ .2byte EC_WORD_WROOOAAR_EXCL, 0xFFFF, EC_WORD_SERIOUSLY, EC_WORD_I, EC_WORD_WON, EC_WORD_QUES
+ .2byte EC_WORD_YOU, EC_WORD_SHOCKED, EC_WORD_ME, EC_WORD_OUT, EC_WORD_OF, EC_WORD_HAPPINESS
+ .2byte EC_WORD_NICE, EC_WORD_WORK, EC_WORD_YOU, EC_WORD_EXCL, EC_WORD_YOU_RE, EC_WORD_FABULOUS
+
+ .align 2
+ .2byte SPECIES_VAPOREON, ITEM_CHERI_BERRY
+ .2byte MOVE_SURF, MOVE_ICE_BEAM, MOVE_SHADOW_BALL, MOVE_WISH
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 100, 0, 110, 0, 200, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000011 @ personality
+ .string "VAPOREON$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_SLOWBRO, ITEM_QUICK_CLAW
+ .2byte MOVE_SURF, MOVE_CONFUSION, MOVE_AMNESIA, MOVE_DISABLE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 0, 255, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability
+ .4byte 0x00000091 @ personality
+ .string "SLOWBRO$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_POLITOED, ITEM_CHESTO_BERRY
+ .2byte MOVE_SURF, MOVE_EARTHQUAKE, MOVE_HYPNOSIS, MOVE_SWAGGER
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 100, 100, 110, 0, 100, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability
+ .4byte 0x00000096 @ personality
+ .string "POLITOED$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_TENTACRUEL, ITEM_POISON_BARB
+ .2byte MOVE_SURF, MOVE_SLUDGE_BOMB, MOVE_ICE_BEAM, MOVE_MIRROR_COAT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 100, 0, 110, 0, 200, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability
+ .4byte 0x00000000 @ personality
+ .string "TENTACRUEL$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_RATICATE, ITEM_SITRUS_BERRY
+ .2byte MOVE_SUPER_FANG, MOVE_HYPER_FANG, MOVE_THUNDER_WAVE, MOVE_QUICK_ATTACK
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 110, 200, 100, 0, 0, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability
+ .4byte 0x00000080 @ personality
+ .string "RATICATE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_DUNSPARCE, ITEM_PERSIM_BERRY
+ .2byte MOVE_WATER_PULSE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_YAWN
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 255, 0, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x0000007F @ personality
+ .string "DUNSPARCE$", 11
+ .byte 255 @ friendship
+
+ dummy_tower_team
+ dummy_tower_team
+ .byte 0x30, 0x65, 0x01
+
+ .align 2
+gUnknown_847ED8C::
+ .byte 0x12, 0x08, 0x00, 0x0a
+ .string "ALLYSON$", 11
+ .byte FACILITY_CLASS_COOLTRAINER_4, 0x07, 0x00
+
+ .2byte EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_ABOUT, EC_WORD_TO, EC_WORD_LOSE, EC_WORD_TODAY
+ .2byte EC_WORD_YES, EC_WORD_EXCL_EXCL, EC_WORD_I, EC_WORD_ADORE, EC_WORD_MYSELF, EC_WORD_TODAY
+ .2byte EC_WORD_I_WAS, EC_WORD_CONFUSED, EC_WORD_ABOUT, EC_WORD_THINGS, EC_WORD_I, EC_WORD_THINK
+ .2byte EC_WORD_YOU_RE, EC_WORD_TOO, EC_WORD_STRONG, EC_WORD_TODAY, EC_WORD_THAT_S, EC_WORD_ALL
+
+ .align 2
+ .2byte SPECIES_STARMIE, ITEM_LUM_BERRY
+ .2byte MOVE_SURF, MOVE_PSYCHIC, MOVE_THUNDER_WAVE, MOVE_RECOVER
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 0, 255, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 1 @ IVs, ability
+ .4byte 0x0000000F @ personality
+ .string "STARMIE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_BLASTOISE, ITEM_SALAC_BERRY
+ .2byte MOVE_HYDRO_PUMP, MOVE_ICE_BEAM, MOVE_EARTHQUAKE, MOVE_MIRROR_COAT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 0, 255, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x00000032 @ personality
+ .string "BLASTOISE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_KINGDRA, ITEM_CHESTO_BERRY
+ .2byte MOVE_SURF, MOVE_ICE_BEAM, MOVE_DRAGON_BREATH, MOVE_REST
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 100, 0, 255, 155 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x0000008C @ personality
+ .string "KINGDRA$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_QUAGSIRE, ITEM_CHESTO_BERRY
+ .2byte MOVE_SURF, MOVE_EARTHQUAKE, MOVE_ICE_BEAM, MOVE_REST
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 100, 100, 0, 155, 155 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x00000016 @ personality
+ .string "QUAGSIRE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_LAPRAS, ITEM_LEFTOVERS
+ .2byte MOVE_SURF, MOVE_ICE_BEAM, MOVE_PSYCHIC, MOVE_ATTRACT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 100, 0, 255, 155 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 1 @ IVs, ability
+ .4byte 0x0000000F @ personality
+ .string "LAPRAS$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_DRAGONITE, ITEM_SHELL_BELL
+ .2byte MOVE_SURF, MOVE_ICE_BEAM, MOVE_EARTHQUAKE, MOVE_LIGHT_SCREEN
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 100, 0, 0, 155, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x00000096 @ personality
+ .string "DRAGONITE$", 11
+ .byte 255 @ friendship
+
+ dummy_tower_team
+ dummy_tower_team
+ .byte 0x32, 0x6e, 0x01
+
+ .align 2
+gUnknown_847F16C::
+ .byte 0x13, 0x08, 0x00, 0x0e
+ .string "ALBERTO$", 11
+ .byte FACILITY_CLASS_SAILOR_2, 0x05, 0x00
+
+ .2byte EC_WORD_LET_S, EC_WORD_GET, EC_WORD_WITH, EC_WORD_IT, EC_WORD_RIGHT, EC_WORD_AWAY
+ .2byte EC_WORD_YO, EC_WORD_EXCL_EXCL, EC_WORD_YOU, EC_WORD_GIVE_UP, EC_WORD_NOW, EC_WORD_EH_QUES
+ .2byte EC_WORD_IT_S, EC_WORD_ALL, EC_WORD_OVER, EC_WORD_ELLIPSIS, EC_WORD_I, EC_WORD_SURRENDER
+ .2byte EC_WORD_OKAY, EC_WORD_I, EC_WORD_CONCEDE, EC_WORD_ELLIPSIS, EC_WORD_I, EC_WORD_LOST
+
+ .align 2
+ .2byte SPECIES_FERALIGATR, ITEM_FOCUS_BAND
+ .2byte MOVE_SURF, MOVE_EARTHQUAKE, MOVE_CRUNCH, MOVE_DRAGON_CLAW
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 0, 0, 100, 155 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000032 @ personality
+ .string "FERALIGATR$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_POLIWRATH, ITEM_KINGS_ROCK
+ .2byte MOVE_SURF, MOVE_EARTHQUAKE, MOVE_MEGA_KICK, MOVE_ROCK_TOMB
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 100, 255, 0, 0, 0, 155 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 1 @ IVs, ability
+ .4byte 0x00000096 @ personality
+ .string "POLIWRATH$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_KANGASKHAN, ITEM_QUICK_CLAW
+ .2byte MOVE_CRUSH_CLAW, MOVE_EARTHQUAKE, MOVE_ROCK_TOMB, MOVE_AERIAL_ACE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 130, 0, 0, 125 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000003 @ personality
+ .string "KANGASKHAN$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_MILTANK, ITEM_LEFTOVERS
+ .2byte MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_ROCK_TOMB, MOVE_MILK_DRINK
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 155, 255, 0, 0, 0, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000003 @ personality
+ .string "MILTANK$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_GOLDUCK, ITEM_SCOPE_LENS
+ .2byte MOVE_CROSS_CHOP, MOVE_SURF, MOVE_ICE_BEAM, MOVE_DISABLE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 100, 100, 0, 100, 210 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 1 @ IVs, ability
+ .4byte 0x00000096 @ personality
+ .string "GOLDUCK$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_GRANBULL, ITEM_LIECHI_BERRY
+ .2byte MOVE_CRUNCH, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL, MOVE_SLUDGE_BOMB
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 130, 0, 0, 125 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x000000CA @ personality
+ .string "GRANBULL$", 11
+ .byte 255 @ friendship
+
+ dummy_tower_team
+ dummy_tower_team
+ .byte 0x90, 0x68, 0x01
+
+ .align 2
+gUnknown_847F54C::
+ .byte 0x14, 0x08, 0x01, 0x0c
+ .string "KAT & KIPP$", 11
+ .byte FACILITY_CLASS_SIS_AND_BRO_2, 0x04, 0x00
+
+ .2byte EC_WORD_I_AM, EC_WORD_GOING, EC_WORD_TO, EC_WORD_TRY, EC_WORD_MY, EC_WORD_BEST
+ .2byte EC_WORD_WAY, EC_WORD_TO, EC_WORD_GO, EC_WORD_MY, EC_WORD_AWESOME, EC_WORD_BROTHER
+ .2byte EC_WORD_SIGH, EC_WORD_ELLIPSIS, EC_WORD_THAT_S, EC_WORD_HOW, EC_WORD_IT, EC_WORD_GOES
+ .2byte EC_WORD_OKAY, EC_WORD_MY, EC_WORD_AWESOME, EC_WORD_BROTHER, EC_WORD_FIGHT, EC_WORD_FIGHT
+
+ .align 2
+ .2byte SPECIES_SNEASEL, ITEM_RAWST_BERRY
+ .2byte MOVE_DIG, MOVE_TORMENT, MOVE_REFLECT, MOVE_TAUNT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 155, 255, 0, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability
+ .4byte 0x0000000D @ personality
+ .string "SNEASEL$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_OMASTAR, ITEM_QUICK_CLAW
+ .2byte MOVE_DIVE, MOVE_LEER, MOVE_TICKLE, MOVE_SUPERSONIC
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 0, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x0000002D @ personality
+ .string "OMASTAR$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_DEWGONG, ITEM_PERSIM_BERRY
+ .2byte MOVE_DIVE, MOVE_ENCORE, MOVE_GROWL, MOVE_SAFEGUARD
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 200, 0, 100, 0, 0, 210 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000014 @ personality
+ .string "DEWGONG$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_QUAGSIRE, ITEM_QUICK_CLAW
+ .2byte MOVE_DIVE, MOVE_YAWN, MOVE_AMNESIA, MOVE_SAFEGUARD
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 200, 0, 110, 0, 0, 200 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000091 @ personality
+ .string "QUAGSIRE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_CORSOLA, ITEM_QUICK_CLAW
+ .2byte MOVE_DIG, MOVE_MIRROR_COAT, MOVE_RECOVER, MOVE_CONFUSE_RAY
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 155, 0, 100, 0, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000017 @ personality
+ .string "CORSOLA$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_SANDSLASH, ITEM_SITRUS_BERRY
+ .2byte MOVE_DIG, MOVE_COUNTER, MOVE_DEFENSE_CURL, MOVE_SAND_ATTACK
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 0, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000094 @ personality
+ .string "SANDSLASH$", 11
+ .byte 255 @ friendship
+
+ .string "KAT & KIPP$", 11
+ .byte FACILITY_CLASS_SIS_AND_BRO_2, 0x04, 0x00
+
+ .2byte EC_WORD_FUFUFU, EC_WORD_ELLIPSIS, EC_WORD_WE, EC_WORD_NEVER, EC_WORD_LOSE, EC_WORD_EXCL
+ .2byte EC_WORD_FUFUFU, EC_WORD_ELLIPSIS, EC_WORD_WE_RE, EC_WORD_TOO_STRONG, EC_WORD_TO, EC_WORD_LOSE
+ .2byte EC_WORD_WHAT, EC_WORD_HUH_QUES, EC_WORD_ARE, EC_WORD_YOU, EC_WORD_JOKING, EC_WORD_QUES
+ .2byte EC_WORD_WAAAH, EC_WORD_WAAAH, EC_WORD_OH, EC_WORD_BIG, EC_WORD_SISTER, EC_WORD_EXCL
+
+ .align 2
+ .2byte SPECIES_FURRET, ITEM_KINGS_ROCK
+ .2byte MOVE_DIG, MOVE_AMNESIA, MOVE_DEFENSE_CURL, MOVE_FOLLOW_ME
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 100, 0, 0, 155 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability
+ .4byte 0x00000080 @ personality
+ .string "FURRET$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_AZUMARILL, ITEM_WHITE_HERB
+ .2byte MOVE_DIVE, MOVE_LIGHT_SCREEN, MOVE_TAIL_WHIP, MOVE_DEFENSE_CURL
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 155, 0, 100, 0, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000014 @ personality
+ .string "AZUMARILL$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_KINGLER, ITEM_QUICK_CLAW
+ .2byte MOVE_DIVE, MOVE_HARDEN, MOVE_LEER, MOVE_AMNESIA
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 0, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability
+ .4byte 0x00000091 @ personality
+ .string "KINGLER$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_CLOYSTER, ITEM_QUICK_CLAW
+ .2byte MOVE_DIVE, MOVE_WITHDRAW, MOVE_PROTECT, MOVE_SUPERSONIC
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 0, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000014 @ personality
+ .string "CLOYSTER$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_QUAGSIRE, ITEM_QUICK_CLAW
+ .2byte MOVE_DIG, MOVE_YAWN, MOVE_AMNESIA, MOVE_SAFEGUARD
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 200, 0, 110, 0, 0, 200 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000094 @ personality
+ .string "QUAGSIRE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_KABUTOPS, ITEM_PECHA_BERRY
+ .2byte MOVE_DIG, MOVE_SAND_ATTACK, MOVE_ENDURE, MOVE_CONFUSE_RAY
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 0, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability
+ .4byte 0x00000030 @ personality
+ .string "KABUTOPS$", 11
+ .byte 255 @ friendship
+
+ dummy_tower_team
+ .byte 0x7c, 0x5d, 0x01
+
+ .align 2
+gUnknown_847F92C::
+ .byte 0x15, 0x08, 0x01, 0x08
+ .string "GEB&MEGAN$", 11
+ .byte FACILITY_CLASS_COOL_COUPLE, 0x07, 0x00
+
+ .2byte EC_WORD_YOU_RE, EC_WORD_OUR, EC_WORD_OPPONENT, EC_WORD_QUES, EC_WORD_PUSHOVER, EC_WORD_HAHAHA
+ .2byte EC_WORD_HAHAHA, EC_WORD_SORRY, EC_WORD_MY, EC_WORD_FRIEND, EC_WORD_TOUGH, EC_WORD_LOSS
+ .2byte EC_WORD_YOU_RE, EC_WORD_SERIOUS, EC_WORD_AREN_T, EC_WORD_YOU, EC_WORD_FRIEND, EC_WORD_QUES
+ .2byte EC_WORD_WON_T, EC_WORD_YOU, EC_WORD_GET, EC_WORD_LOST, EC_WORD_PLEASE, EC_WORD_QUES
+
+ .align 2
+ .2byte SPECIES_POLITOED, ITEM_KINGS_ROCK
+ .2byte MOVE_SURF, MOVE_HYPNOSIS, MOVE_PERISH_SONG, MOVE_SWAGGER
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 100, 0, 255, 155 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability
+ .4byte 0x0000008C @ personality
+ .string "POLITOED$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_GYARADOS, ITEM_SALAC_BERRY
+ .2byte MOVE_HYPER_BEAM, MOVE_DRAGON_DANCE, MOVE_THUNDER_WAVE, MOVE_THUNDERBOLT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 155, 0, 0, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000096 @ personality
+ .string "GYARADOS$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_LAPRAS, ITEM_SHELL_BELL
+ .2byte MOVE_SURF, MOVE_PSYCHIC, MOVE_THUNDERBOLT, MOVE_ICE_BEAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 100, 0, 255, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability
+ .4byte 0x0000000F @ personality
+ .string "LAPRAS$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_NIDOQUEEN, ITEM_FOCUS_BAND
+ .2byte MOVE_SURF, MOVE_EARTHQUAKE, MOVE_SUPERPOWER, MOVE_ROCK_SLIDE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 110, 100, 100, 0, 100, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000000 @ personality
+ .string "NIDOQUEEN$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_JYNX, ITEM_BRIGHT_POWDER
+ .2byte MOVE_WATER_PULSE, MOVE_REFLECT, MOVE_LIGHT_SCREEN, MOVE_PSYCHIC
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 155, 0, 0, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000000 @ personality
+ .string "JYNX$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_GIRAFARIG, ITEM_LUM_BERRY
+ .2byte MOVE_LIGHT_SCREEN, MOVE_CRUNCH, MOVE_PSYCHIC, MOVE_REFLECT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 210, 0, 100, 0, 100, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability
+ .4byte 0x0000008C @ personality
+ .string "GIRAFARIG$", 11
+ .byte 255 @ friendship
+
+ .string "GEB&MEGAN$", 11
+ .byte FACILITY_CLASS_COOL_COUPLE, 0x07, 0x00
+
+ .2byte EC_WORD_YOU_RE, EC_WORD_OUR, EC_WORD_FOE, EC_WORD_QUES, EC_WORD_GIGGLE, EC_WORD_ELLIPSIS
+ .2byte EC_WORD_GIGGLE, EC_WORD_ELLIPSIS, EC_WORD_I_AM, EC_WORD_SO, EC_WORD_SORRY, 0xFFFF
+ .2byte EC_WORD_MY, EC_WORD_WORD, EC_WORD_THIS, EC_WORD_IS, EC_WORD_JUST, EC_WORD_INCREDIBLE
+ .2byte EC_WORD_WE, EC_WORD_NEED, EC_WORD_TO, EC_WORD_TRAIN, EC_WORD_SOME, EC_WORD_MORE
+
+ .align 2
+ .2byte SPECIES_MAROWAK, ITEM_SALAC_BERRY
+ .2byte MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_AERIAL_ACE, MOVE_PROTECT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 0, 0, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability
+ .4byte 0x00000094 @ personality
+ .string "MAROWAK$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_URSARING, ITEM_SCOPE_LENS
+ .2byte MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_AERIAL_ACE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 155, 0, 0, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000080 @ personality
+ .string "URSARING$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_SLOWKING, ITEM_LEFTOVERS
+ .2byte MOVE_SURF, MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_SHADOW_BALL
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 110, 0, 0, 200, 200 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability
+ .4byte 0x00000011 @ personality
+ .string "SLOWKING$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_ALAKAZAM, ITEM_BRIGHT_POWDER
+ .2byte MOVE_PSYCHIC, MOVE_PROTECT, MOVE_LIGHT_SCREEN, MOVE_REFLECT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 110, 0, 200, 0, 0, 200 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000041 @ personality
+ .string "ALAKAZAM$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_NIDOKING, ITEM_FOCUS_BAND
+ .2byte MOVE_SURF, MOVE_MEGAHORN, MOVE_THUNDERBOLT, MOVE_ICE_BEAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 110, 100, 100, 0, 100, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000000 @ personality
+ .string "NIDOKING$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_RHYDON, ITEM_QUICK_CLAW
+ .2byte MOVE_EARTHQUAKE, MOVE_PROTECT, MOVE_MEGAHORN, MOVE_ROCK_SLIDE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 0, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000093 @ personality
+ .string "RHYDON$", 11
+ .byte 255 @ friendship
+
+ dummy_tower_team
+ .byte 0xf4, 0x60, 0x01
+
+ .align 2
+gUnknown_847FD0C::
+ .byte 0x16, 0x08, 0x01, 0x05
+ .string "LISA&LEAH$", 11
+ .byte FACILITY_CLASS_TWINS_2, 0x01, 0x00
+
+ .2byte EC_WORD_ABSOLUTELY, EC_WORD_WE_RE, EC_WORD_GOING, EC_WORD_TO, EC_WORD_WIN, EC_WORD_EXCL
+ .2byte EC_WORD_YEAH_YEAH, EC_WORD_EXCL_EXCL, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF
+ .2byte EC_WORD_AWW, EC_WORD_EXCL, EC_WORD_WAAAH, EC_WORD_EXCL_EXCL, 0xFFFF, 0xFFFF
+ .2byte EC_WORD_EXCUSE_ME, EC_WORD_BUT, EC_WORD_YOU_RE, EC_WORD_ALL, EC_WORD_TOO_STRONG, 0xFFFF
+
+ .align 2
+ .2byte SPECIES_POLIWAG, ITEM_CHERI_BERRY
+ .2byte MOVE_SURF, MOVE_PROTECT, MOVE_TOXIC, MOVE_DOUBLE_TEAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 100, 255, 0, 155 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000087 @ personality
+ .string "POLIWAG$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_SQUIRTLE, ITEM_MYSTIC_WATER
+ .2byte MOVE_WATER_PULSE, MOVE_PROTECT, MOVE_TOXIC, MOVE_MIRROR_COAT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 0, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x0000002D @ personality
+ .string "SQUIRTLE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_CHINCHOU, ITEM_MAGNET
+ .2byte MOVE_SURF, MOVE_THUNDER_WAVE, MOVE_CONFUSE_RAY, MOVE_THUNDERBOLT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 100, 255, 0, 155 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x0000000F @ personality
+ .string "CHINCHOU$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_NIDORAN_F, ITEM_POISON_BARB
+ .2byte MOVE_WATER_PULSE, MOVE_SLUDGE_BOMB, MOVE_CRUNCH, MOVE_DIG
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 110, 100, 100, 0, 100, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000000 @ personality
+ .string "NIDORAN♀$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_CLEFAIRY, ITEM_WHITE_HERB
+ .2byte MOVE_WATER_PULSE, MOVE_DOUBLE_TEAM, MOVE_SING, MOVE_MINIMIZE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 110, 0, 100, 100, 100, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x0000000F @ personality
+ .string "CLEFAIRY$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_HORSEA, ITEM_SITRUS_BERRY
+ .2byte MOVE_SURF, MOVE_SMOKESCREEN, MOVE_ATTRACT, MOVE_DRAGON_RAGE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 110, 0, 100, 100, 100, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x0000002D @ personality
+ .string "HORSEA$", 11
+ .byte 255 @ friendship
+
+ .string "LISA&LEAH$", 11
+ .byte FACILITY_CLASS_TWINS_2, 0x01, 0x00
+
+ .2byte EC_WORD_CAN, EC_WORD_WE, EC_WORD_WIN, EC_WORD_QUES, EC_WORD_IT_S, EC_WORD_EXCITING
+ .2byte EC_WORD_YEAH_YEAH, EC_WORD_EXCL_EXCL, EC_WORD_YOU, EC_WORD_MAKE, EC_WORD_ME, EC_WORD_HAPPY
+ .2byte EC_WORD_AWW, EC_WORD_EXCL, EC_WORD_WAAAH, EC_WORD_EXCL_EXCL, 0xFFFF, 0xFFFF
+ .2byte EC_WORD_YOU, EC_WORD_SHOULD, EC_WORD_NOT, EC_MOVE2(BEAT_UP), EC_WORD_ON, EC_WORD_CHILDREN
+
+ .align 2
+ .2byte SPECIES_WOOPER, ITEM_LEFTOVERS
+ .2byte MOVE_SURF, MOVE_EARTHQUAKE, MOVE_YAWN, MOVE_FLASH
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 110, 100, 100, 0, 100, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000093 @ personality
+ .string "WOOPER$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_PSYDUCK, ITEM_SCOPE_LENS
+ .2byte MOVE_SURF, MOVE_CROSS_CHOP, MOVE_HYPNOSIS, MOVE_DISABLE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 110, 100, 100, 0, 100, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 1 @ IVs, ability
+ .4byte 0x00000096 @ personality
+ .string "PSYDUCK$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_SNUBBULL, ITEM_PECHA_BERRY
+ .2byte MOVE_WATER_PULSE, MOVE_THUNDER_WAVE, MOVE_CRUNCH, MOVE_SHADOW_BALL
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 110, 100, 100, 100, 0, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000000 @ personality
+ .string "SNUBBULL$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_JIGGLYPUFF, ITEM_SITRUS_BERRY
+ .2byte MOVE_WATER_PULSE, MOVE_THUNDER_WAVE, MOVE_SING, MOVE_DISABLE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 110, 100, 100, 0, 100, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x0000000F @ personality
+ .string "JIGGLYPUFF$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_NIDORAN_M, ITEM_FOCUS_BAND
+ .2byte MOVE_WATER_PULSE, MOVE_SLUDGE_BOMB, MOVE_HORN_DRILL, MOVE_DIG
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 110, 100, 100, 0, 100, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000000 @ personality
+ .string "NIDORAN♂$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_TOTODILE, ITEM_BRIGHT_POWDER
+ .2byte MOVE_SURF, MOVE_PROTECT, MOVE_TOXIC, MOVE_DOUBLE_TEAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 110, 0, 100, 100, 100, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x0000002D @ personality
+ .string "TOTODILE$", 11
+ .byte 255 @ friendship
+
+ .string "$", 11
+ .byte FACILITY_CLASS_AQUA_LEADER, 0x01, 0x00
+
+ .2byte 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF
+ .2byte 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF
+ .2byte 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF
+ .2byte 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF
+
+ .align 2
+ .2byte SPECIES_NONE, ITEM_NONE
+ .2byte MOVE_NONE, MOVE_NONE, MOVE_NONE, MOVE_NONE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 0 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000000 @ personality
+ .string "$$$$$$$$$$$", 11
+ .byte 0 @ friendship
+
+ .align 2
+ .2byte SPECIES_NONE, ITEM_NONE
+ .2byte MOVE_NONE, MOVE_NONE, MOVE_NONE, MOVE_NONE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 0 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000000 @ personality
+ .string "$$$$$$$$$$$", 11
+ .byte 0 @ friendship
+
+ .align 2
+ .2byte SPECIES_NONE, ITEM_NONE
+ .2byte MOVE_NONE, MOVE_NONE, MOVE_NONE, MOVE_NONE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 0 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000000 @ personality
+ .string "$$$$$$$$$$$", 11
+ .byte 0 @ friendship
+
+ .align 2
+ .2byte SPECIES_NONE, ITEM_NONE
+ .2byte MOVE_NONE, MOVE_NONE, MOVE_NONE, MOVE_NONE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 0 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000000 @ personality
+ .string "$$$$$$$$$$$", 11
+ .byte 0 @ friendship
+
+ .align 2
+ .2byte SPECIES_NONE, ITEM_NONE
+ .2byte MOVE_NONE, MOVE_NONE, MOVE_NONE, MOVE_NONE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 0 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000000 @ personality
+ .string "$$$$$$$$$$$", 11
+ .byte 0 @ friendship
+
+ .align 2
+ .2byte SPECIES_NONE, ITEM_NONE
+ .2byte MOVE_NONE, MOVE_NONE, MOVE_NONE, MOVE_NONE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 0 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000000 @ personality
+ .string "$$$$$$$$$$$", 11
+ .byte 0 @ friendship
+
+ .byte 0xd4, 0x97, 0x01
+
+ .align 2
+gUnknown_84800EC::
+ .byte 0x17, 0x08, 0x02, 0x01
+ .string "PRISCILLA$", 11
+ .byte FACILITY_CLASS_TUBER_3, 0x01, 0x00
+
+ .2byte EC_WORD_I_AM, EC_WORD_A_LITTLE, EC_WORD_POKEMON, EC_WORD_GIRL, EC_WORD_HERE_I_COME, EC_WORD_EXCL
+ .2byte EC_WORD_WAAAH, EC_WORD_EXCL, EC_WORD_DID, EC_WORD_I, EC_WORD_WIN, EC_WORD_QUES
+ .2byte EC_WORD_OH_DEAR, EC_WORD_ELLIPSIS, EC_WORD_I, EC_WORD_COULDN_T, EC_WORD_WIN, EC_WORD_ELLIPSIS
+ .2byte EC_WORD_YOU_RE, EC_WORD_A, EC_WORD_NICE, EC_WORD_TRAINER, EC_WORD_THANK_YOU, EC_WORD_EXCL
+
+ .align 2
+ .2byte SPECIES_GOLDEEN, ITEM_SITRUS_BERRY
+ .2byte MOVE_WATER_PULSE, MOVE_MEGAHORN, MOVE_SUPERSONIC, MOVE_ICE_BEAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 110, 100, 100, 0, 100, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability
+ .4byte 0x00000096 @ personality
+ .string "GOLDEEN$", 11
+ .byte 0 @ friendship
+
+ .align 2
+ .2byte SPECIES_SEAKING, ITEM_SCOPE_LENS
+ .2byte MOVE_SURF, MOVE_MEGAHORN, MOVE_HORN_DRILL, MOVE_PROTECT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 100, 100, 100, 0, 100, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability
+ .4byte 0x00000000 @ personality
+ .string "SEAKING$", 11
+ .byte 0 @ friendship
+
+ .align 2
+ .2byte SPECIES_LANTURN, ITEM_SHELL_BELL
+ .2byte MOVE_SURF, MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_ICE_BEAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 100, 100, 100, 210 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x0000008C @ personality
+ .string "LANTURN$", 11
+ .byte 0 @ friendship
+
+ .align 2
+ .2byte SPECIES_LANTURN, ITEM_LEFTOVERS
+ .2byte MOVE_HYDRO_PUMP, MOVE_THUNDER, MOVE_ICE_BEAM, MOVE_RAIN_DANCE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 100, 100, 100, 210 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x0000000F @ personality
+ .string "LANTURN$", 11
+ .byte 0 @ friendship
+
+ .align 2
+ .2byte SPECIES_GOLDEEN, ITEM_APICOT_BERRY
+ .2byte MOVE_WATER_PULSE, MOVE_DOUBLE_EDGE, MOVE_TOXIC, MOVE_PSYBEAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 110, 100, 100, 0, 100, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability
+ .4byte 0x00000000 @ personality
+ .string "GOLDEEN$", 11
+ .byte 0 @ friendship
+
+ .align 2
+ .2byte SPECIES_SEAKING, ITEM_PETAYA_BERRY
+ .2byte MOVE_SURF, MOVE_HYPER_BEAM, MOVE_ICE_BEAM, MOVE_PSYBEAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 110, 100, 100, 0, 100, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability
+ .4byte 0x00000096 @ personality
+ .string "SEAKING$", 11
+ .byte 0 @ friendship
+
+ .string "CHARLOTTE$", 11
+ .byte FACILITY_CLASS_LADY_2, 0x01, 0x00
+
+ .2byte EC_WORD_HELLO, EC_WORD_THERE, EC_WORD_I_AM, EC_WORD_A, EC_WORD_POKEMON, EC_WORD_LADY
+ .2byte EC_WORD_OH, EC_WORD_MY, EC_WORD_MY, EC_WORD_ELLIPSIS, EC_WORD_I_AM, EC_WORD_SORRY
+ .2byte EC_WORD_YOU_RE, EC_WORD_BETTER, EC_WORD_THAN, EC_WORD_A, EC_WORD_POKEMON, EC_WORD_LADY
+ .2byte EC_WORD_HOHOHO, EC_WORD_THANK_YOU, EC_WORD_FOR, EC_WORD_AN, EC_WORD_AMUSING, EC_WORD_BATTLE
+
+ .align 2
+ .2byte SPECIES_OCTILLERY, ITEM_SITRUS_BERRY
+ .2byte MOVE_OCTAZOOKA, MOVE_ICE_BEAM, MOVE_PSYCHIC, MOVE_FLAMETHROWER
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 55, 0, 100, 0, 100, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x0000000F @ personality
+ .string "OCTILLERY$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_QWILFISH, ITEM_PERSIM_BERRY
+ .2byte MOVE_SURF, MOVE_TOXIC, MOVE_REVENGE, MOVE_DOUBLE_TEAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 200, 0, 0, 0, 100, 210 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000014 @ personality
+ .string "QWILFISH$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_REMORAID, ITEM_PECHA_BERRY
+ .2byte MOVE_SURF, MOVE_PSYCHIC, MOVE_ICE_BEAM, MOVE_THUNDER_WAVE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 255, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000096 @ personality
+ .string "REMORAID$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_REMORAID, ITEM_WHITE_HERB
+ .2byte MOVE_WATER_PULSE, MOVE_BLIZZARD, MOVE_FIRE_BLAST, MOVE_PROTECT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 255, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000000 @ personality
+ .string "REMORAID$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_OCTILLERY, ITEM_FOCUS_BAND
+ .2byte MOVE_OCTAZOOKA, MOVE_SLUDGE_BOMB, MOVE_THUNDER_WAVE, MOVE_HYPER_BEAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 155, 100, 0, 0, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000093 @ personality
+ .string "OCTILLERY$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_QWILFISH, ITEM_QUICK_CLAW
+ .2byte MOVE_HYDRO_PUMP, MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_DESTINY_BOND
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 100, 100, 0, 0, 100, 210 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000096 @ personality
+ .string "QWILFISH$", 11
+ .byte 255 @ friendship
+
+ .string "SHANIA$", 11
+ .byte FACILITY_CLASS_SWIMMER_FEMALE_2, 0x01, 0x00
+
+ .2byte EC_WORD_A, EC_WORD_POKEMON, EC_WORD_HEROINE, EC_WORD_THAT_S, EC_WORD_WHAT, EC_WORD_I_AM
+ .2byte EC_WORD_AHAHA, EC_WORD_NO, EC_WORD_WAY, EC_WORD_YOU_RE, EC_WORD_TOO_WEAK, EC_WORD_SERIOUSLY
+ .2byte EC_WORD_WHY, EC_WORD_QUES_EXCL, EC_WORD_YOU, EC_WORD_SHOULD, EC_WORD_NOT, EC_WORD_LIE
+ .2byte EC_WORD_NICE, EC_WORD_BATTLE, EC_WORD_THANKS, EC_WORD_FOR, EC_WORD_ENTERTAINING, EC_WORD_ME
+
+ .align 2
+ .2byte SPECIES_MANTINE, ITEM_BRIGHT_POWDER
+ .2byte MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_AERIAL_ACE, MOVE_ROCK_SLIDE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 0, 0, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000080 @ personality
+ .string "MANTINE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_MAGIKARP, ITEM_CHOICE_BAND
+ .2byte MOVE_SPLASH, MOVE_TACKLE, MOVE_NONE, MOVE_NONE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 255, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x0000000D @ personality
+ .string "MAGIKARP$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_MANTINE, ITEM_MENTAL_HERB
+ .2byte MOVE_SURF, MOVE_ICE_BEAM, MOVE_CONFUSE_RAY, MOVE_ATTRACT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 0, 255, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x0000000F @ personality
+ .string "MANTINE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_GYARADOS, ITEM_SHELL_BELL
+ .2byte MOVE_HYPER_BEAM, MOVE_THUNDER_WAVE, MOVE_EARTHQUAKE, MOVE_PROTECT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 255, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000003 @ personality
+ .string "GYARADOS$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_MAGIKARP, ITEM_CHOICE_BAND
+ .2byte MOVE_FLAIL, MOVE_TACKLE, MOVE_NONE, MOVE_NONE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 255, 0, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000094 @ personality
+ .string "MAGIKARP$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_GYARADOS, ITEM_KINGS_ROCK
+ .2byte MOVE_DOUBLE_EDGE, MOVE_THUNDER_WAVE, MOVE_EARTHQUAKE, MOVE_DRAGON_DANCE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 0, 0, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000080 @ personality
+ .string "GYARADOS$", 11
+ .byte 255 @ friendship
+
+ .byte 0x1d, 0x52, 0x01
+
+ .align 2
+gUnknown_84804CC::
+ .byte 0x18, 0x08, 0x02, 0x0d
+ .string "BRENNAN$", 11
+ .byte FACILITY_CLASS_SAILOR_2, 0x01, 0x00
+
+ .2byte EC_WORD_TAKE, EC_WORD_THINGS, EC_WORD_EASY, EC_WORD_ELLIPSIS, EC_WORD_THAT_S, EC_WORD_IMPORTANT
+ .2byte EC_WORD_YOU, EC_WORD_LOSE, EC_WORD_IF, EC_WORD_YOU, EC_WORD_GIVE_UP, EC_WORD_EXCL
+ .2byte EC_WORD_OOPS, EC_WORD_YOU, EC_WORD_GOT, EC_WORD_AN, EC_WORD_EASY, EC_WORD_WIN
+ .2byte EC_WORD_I, EC_WORD_DON_T, EC_MOVE(GRUDGE), EC_WORD_YOU, EC_WORD_BUT, EC_WORD_ELLIPSIS
+
+ .align 2
+ .2byte SPECIES_LAPRAS, ITEM_CHESTO_BERRY
+ .2byte MOVE_HYDRO_PUMP, MOVE_PSYCHIC, MOVE_ATTRACT, MOVE_REST
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 155, 0, 100, 255 @ EVs
+ .align 2
+ trainerid 15, 0 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability
+ .4byte 0x0000000F @ personality
+ .string "LAPRAS$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_KINGDRA, ITEM_CHESTO_BERRY
+ .2byte MOVE_HYDRO_PUMP, MOVE_BLIZZARD, MOVE_DRAGON_BREATH, MOVE_REST
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 0, 255, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x0000008C @ personality
+ .string "KINGDRA$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_MACHAMP, ITEM_SCOPE_LENS
+ .2byte MOVE_CROSS_CHOP, MOVE_EARTHQUAKE, MOVE_ROCK_SLIDE, MOVE_HYPER_BEAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 130, 0, 0, 125 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x0000004E @ personality
+ .string "MACHAMP$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_CHANSEY, ITEM_ORAN_BERRY
+ .2byte MOVE_WATER_PULSE, MOVE_SOFT_BOILED, MOVE_MINIMIZE, MOVE_THUNDER_WAVE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 255, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability
+ .4byte 0x00000005 @ personality
+ .string "CHANSEY$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_TAUROS, ITEM_LUM_BERRY
+ .2byte MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_ROCK_TOMB, MOVE_SWAGGER
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 110, 100, 100, 100, 0, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000003 @ personality
+ .string "TAUROS$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_SNORLAX, ITEM_ORAN_BERRY
+ .2byte MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_DOUBLE_TEAM, MOVE_REST
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 255, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000021 @ personality
+ .string "SNORLAX$", 11
+ .byte 255 @ friendship
+
+ .string "KADEN$", 11
+ .byte FACILITY_CLASS_FISHERMAN_2, 0x01, 0x00
+
+ .2byte EC_WORD_MY, EC_WORD_FISHING, EC_WORD_FASHION, EC_WORD_APPEAL, EC_WORD_IS, EC_WORD_FANTASTIC
+ .2byte EC_WORD_MY, EC_WORD_FANTASTIC, EC_WORD_FASHION, EC_WORD_APPEAL, EC_WORD_WINS, EC_WORD_OUT
+ .2byte EC_WORD_UH_OH, EC_WORD_ELLIPSIS, EC_WORD_I, EC_WORD_SEE, EC_WORD_I, EC_WORD_LOST
+ .2byte EC_WORD_FASHION, EC_WORD_APPEAL, EC_WORD_WON_T, EC_WORD_GET, EC_WORD_ME, EC_WORD_WINS
+
+ .align 2
+ .2byte SPECIES_CHINCHOU, ITEM_MAGNET
+ .2byte MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_CONFUSE_RAY, MOVE_PROTECT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 100, 0, 100, 100, 100, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000000 @ personality
+ .string "CHINCHOU$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_DRATINI, ITEM_SITRUS_BERRY
+ .2byte MOVE_WATER_PULSE, MOVE_THUNDER_WAVE, MOVE_DRAGON_BREATH, MOVE_PROTECT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 110, 0, 100, 100, 100, 100 @ EVs
+ .align 2
+ trainerid 0, 0 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000000 @ personality
+ .string "DRATINI$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_SLOWPOKE, ITEM_PECHA_BERRY
+ .2byte MOVE_WATER_PULSE, MOVE_YAWN, MOVE_DISABLE, MOVE_PROTECT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 0, 255, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000096 @ personality
+ .string "SLOWPOKE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_MAGIKARP, ITEM_BRIGHT_POWDER
+ .2byte MOVE_SPLASH, MOVE_FLAIL, MOVE_TACKLE, MOVE_NONE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 255, 0, 255 @ EVs
+ .align 2
+ trainerid 23, 0 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000017 @ personality
+ .string "MAGIKARP$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_SEAKING, ITEM_CHERI_BERRY
+ .2byte MOVE_HORN_DRILL, MOVE_MEGAHORN, MOVE_SUPERSONIC, MOVE_AGILITY
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 0, 0, 255 @ EVs
+ .align 2
+ trainerid 23, 0 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability
+ .4byte 0x00000017 @ personality
+ .string "SEAKING$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_TENTACRUEL, ITEM_FOCUS_BAND
+ .2byte MOVE_MIRROR_COAT, MOVE_SUPERSONIC, MOVE_PROTECT, MOVE_TOXIC
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 255, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability
+ .4byte 0x00000096 @ personality
+ .string "TENTACRUEL$", 11
+ .byte 255 @ friendship
+
+ .string "EMANUEL$", 11
+ .byte FACILITY_CLASS_GENTLEMAN_2, 0x01, 0x00
+
+ .2byte EC_WORD_HMM, EC_WORD_QUES, EC_WORD_ARE, EC_WORD_YOU, EC_WORD_SKILLED, EC_WORD_QUES
+ .2byte EC_WORD_I, EC_WORD_SEE, EC_WORD_I, EC_WORD_WASN_T, EC_WORD_RIGHT, EC_WORD_ELLIPSIS
+ .2byte EC_WORD_YOU, EC_WORD_TRULY, EC_WORD_ARE, EC_WORD_A, EC_WORD_MASTER, EC_WORD_TRAINER
+ .2byte EC_WORD_I_AM, EC_WORD_SORRY, EC_WORD_THAT, EC_WORD_I_WAS, EC_WORD_YOUR, EC_WORD_OPPONENT
+
+ .align 2
+ .2byte SPECIES_VAPOREON, ITEM_SHELL_BELL
+ .2byte MOVE_SURF, MOVE_ICE_BEAM, MOVE_ATTRACT, MOVE_BITE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 0, 255, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000014 @ personality
+ .string "VAPOREON$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_ESPEON, ITEM_CHESTO_BERRY
+ .2byte MOVE_PSYCHIC, MOVE_BITE, MOVE_REFLECT, MOVE_REST
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 110, 0, 200, 0, 0, 200 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x0000000F @ personality
+ .string "ESPEON$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_BLISSEY, ITEM_LEFTOVERS
+ .2byte MOVE_WATER_PULSE, MOVE_MINIMIZE, MOVE_THUNDER_WAVE, MOVE_PROTECT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 255, 0, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability
+ .4byte 0x00000005 @ personality
+ .string "BLISSEY$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_STARMIE, ITEM_LUM_BERRY
+ .2byte MOVE_SURF, MOVE_ICE_BEAM, MOVE_RECOVER, MOVE_PSYCHIC
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 100, 0, 0, 155 @ EVs
+ .align 2
+ trainerid 20, 0 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability
+ .4byte 0x00000014 @ personality
+ .string "STARMIE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_PERSIAN, ITEM_KINGS_ROCK
+ .2byte MOVE_SLASH, MOVE_SWAGGER, MOVE_PSYCH_UP, MOVE_FAKE_OUT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 130, 0, 0, 125 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x0000000D @ personality
+ .string "PERSIAN$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_AZUMARILL, ITEM_QUICK_CLAW
+ .2byte MOVE_SURF, MOVE_ENCORE, MOVE_ATTRACT, MOVE_DIG
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 100, 0, 255, 155 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000000 @ personality
+ .string "AZUMARILL$", 11
+ .byte 255 @ friendship
+
+ .byte 0x4b, 0x55, 0x01
+
+ .align 2
+gUnknown_84808AC::
+ .byte 0x19, 0x08, 0x00, 0x0c
+ .string "JARRETT$", 11
+ .byte FACILITY_CLASS_JUGGLER, 0x02, 0x00
+
+ .2byte EC_WORD_LET_S, EC_WORD_HAVE, EC_WORD_AN, EC_MOVE2(EXPLOSION), EC_WORD_PARTY, EC_WORD_EXCL
+ .2byte EC_WORD_CONGRATS, EC_WORD_FOR, EC_WORD_YOUR, EC_WORD_LOSS, EC_WORD_PARTY, EC_WORD_KID
+ .2byte EC_WORD_NICE, EC_MOVE(SELF_DESTRUCT), EC_WORD_THERE, EC_WORD_EXCL, EC_WORD_YOU_RE, EC_WORD_PERFECT
+ .2byte EC_WORD_WANT, EC_WORD_TO, EC_WORD_PARTY, EC_WORD_SOME, EC_WORD_MORE, EC_WORD_QUES
+
+ .align 2
+ .2byte SPECIES_ELECTRODE, ITEM_FOCUS_BAND
+ .2byte MOVE_EXPLOSION, MOVE_LIGHT_SCREEN, MOVE_SCREECH, MOVE_THUNDERBOLT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 10, 150, 100, 150, 0, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability
+ .4byte 0x0000000D @ personality
+ .string "ELECTRODE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_VOLTORB, ITEM_BRIGHT_POWDER
+ .2byte MOVE_EXPLOSION, MOVE_FLASH, MOVE_DOUBLE_TEAM, MOVE_THUNDER
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 155, 255, 0, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability
+ .4byte 0x0000000D @ personality
+ .string "VOLTORB$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_WEEZING, ITEM_SALAC_BERRY
+ .2byte MOVE_EXPLOSION, MOVE_SLUDGE_BOMB, MOVE_DESTINY_BOND, MOVE_THUNDERBOLT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 200, 155, 0, 0, 155 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000007 @ personality
+ .string "WEEZING$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_GOLEM, ITEM_SHELL_BELL
+ .2byte MOVE_EXPLOSION, MOVE_DOUBLE_EDGE, MOVE_EARTHQUAKE, MOVE_ROCK_TOMB
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 100, 0, 0, 150 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x0000007F @ personality
+ .string "GOLEM$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_EXEGGCUTE, ITEM_QUICK_CLAW
+ .2byte MOVE_EXPLOSION, MOVE_STUN_SPORE, MOVE_HYPNOSIS, MOVE_GIGA_DRAIN
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 255, 0, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000007 @ personality
+ .string "EXEGGCUTE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_FORRETRESS, ITEM_LEFTOVERS
+ .2byte MOVE_EXPLOSION, MOVE_GIGA_DRAIN, MOVE_DIG, MOVE_PROTECT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 100, 155, 0, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000084 @ personality
+ .string "FORRETRESS$", 11
+ .byte 255 @ friendship
+
+ dummy_tower_team
+ dummy_tower_team
+ .byte 0x6a, 0x5b, 0x01
+
+ .align 2
+gUnknown_8480C8C::
+ .byte 0x1a, 0x08, 0x00, 0x0d
+ .string "OWEN$", 11
+ .byte FACILITY_CLASS_SUPER_NERD, 0x02, 0x00
+
+ .2byte EC_WORD_HERE_IT_IS, EC_MOVE2(THUNDER_WAVE), EC_WORD_DON_T, EC_MOVE2(WRAP), EC_WORD_ME, EC_WORD_EXCL
+ .2byte EC_WORD_ACCEPT, EC_WORD_MY, EC_MOVE2(PRESENT), EC_WORD_OF, EC_MOVE2(THUNDER_WAVE), EC_WORD_EXCL
+ .2byte EC_MOVE2(WRAP), EC_MOVE(BIND), EC_WORD_ELECTRIC, EC_MOVE2(WHIRLWIND), EC_WORD_SPIRALING, EC_WORD_AROUND
+ .2byte EC_MOVE2(WHIRLWIND), EC_WORD_SPIRALING, 0xFFFF, 0xFFFF, EC_WORD_SPIRALING, EC_MOVE2(WHIRLWIND)
+
+ .align 2
+ .2byte SPECIES_MAGNETON, ITEM_LEFTOVERS
+ .2byte MOVE_PROTECT, MOVE_ZAP_CANNON, MOVE_TOXIC, MOVE_SUPERSONIC
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 125, 255, 0, 130 @ EVs
+ .align 2
+ trainerid 10, 0 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability
+ .4byte 0x0000000A @ personality
+ .string "MAGNETON$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_PIKACHU, ITEM_LIGHT_BALL
+ .2byte MOVE_THUNDER_WAVE, MOVE_THUNDERBOLT, MOVE_PROTECT, MOVE_DOUBLE_TEAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 150, 0, 255, 105 @ EVs
+ .align 2
+ trainerid 15, 0 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x0000000F @ personality
+ .string "PIKACHU$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_JOLTEON, ITEM_BRIGHT_POWDER
+ .2byte MOVE_THUNDER_WAVE, MOVE_THUNDERBOLT, MOVE_DOUBLE_TEAM, MOVE_TOXIC
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 255, 100, 0, 155 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000037 @ personality
+ .string "JOLTEON$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_BLISSEY, ITEM_LUM_BERRY
+ .2byte MOVE_THUNDER_WAVE, MOVE_BLIZZARD, MOVE_WATER_PULSE, MOVE_REST
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 255, 0, 255, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability
+ .4byte 0x00000005 @ personality
+ .string "BLISSEY$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_PORYGON2, ITEM_SALAC_BERRY
+ .2byte MOVE_THUNDER_WAVE, MOVE_ZAP_CANNON, MOVE_PSYCHIC, MOVE_RECOVER
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 125, 0, 255, 130 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000005 @ personality
+ .string "PORYGON2$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_PORYGON, ITEM_LAX_INCENSE
+ .2byte MOVE_THUNDER_WAVE, MOVE_ZAP_CANNON, MOVE_DOUBLE_TEAM, MOVE_PROTECT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 255, 0, 0, 255 @ EVs
+ .align 2
+ trainerid 5, 0 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000005 @ personality
+ .string "PORYGON$", 11
+ .byte 255 @ friendship
+
+ dummy_tower_team
+ dummy_tower_team
+ .byte 0xec, 0x60, 0x01
+
+ .align 2
+gUnknown_848106C::
+ .byte 0x1b, 0x08, 0x00, 0x01
+ .string "LORENZO$", 11
+ .byte FACILITY_CLASS_PSYCHIC_3, 0x01, 0x00
+
+ .2byte EC_WORD_THIS, EC_WORD_POWER, EC_WORD_IS, EC_WORD_NOW, EC_WORD_COMPLETE, EC_WORD_EXCL
+ .2byte EC_WORD_NO, EC_WORD_KEEN_EYE, EC_WORD_CAN, EC_WORD_STOP, EC_WORD_MY, EC_WORD_POWER
+ .2byte EC_WORD_HERE_IT_IS, EC_WORD_EXCL, EC_MOVE(KINESIS), EC_WORD_EXCL, EC_WORD_ELLIPSIS, EC_WORD_WHAT
+ .2byte EC_WORD_I, EC_WORD_WILL, EC_WORD_MAKE, EC_WORD_THE, EC_MOVE(KINESIS), EC_WORD_HALL_OF_FAME
+
+ .align 2
+ .2byte SPECIES_MR_MIME, ITEM_QUICK_CLAW
+ .2byte MOVE_THUNDERBOLT, MOVE_THUNDER_WAVE, MOVE_LIGHT_SCREEN, MOVE_REFLECT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 255, 0, 100, 155 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000007 @ personality
+ .string "MR. MIME$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_HYPNO, ITEM_SALAC_BERRY
+ .2byte MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_PSYCHIC
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 155, 0, 200, 155 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x0000008C @ personality
+ .string "HYPNO$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_ALAKAZAM, ITEM_CHOICE_BAND
+ .2byte MOVE_THUNDER_PUNCH, MOVE_FIRE_PUNCH, MOVE_ICE_PUNCH, MOVE_PSYCHIC
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 155, 150, 155, 50 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x0000000F @ personality
+ .string "ALAKAZAM$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_GENGAR, ITEM_LEFTOVERS
+ .2byte MOVE_THUNDERBOLT, MOVE_SHADOW_BALL, MOVE_HYPNOSIS, MOVE_TOXIC
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 200, 0, 100, 55, 155 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000088 @ personality
+ .string "GENGAR$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_GIRAFARIG, ITEM_LUM_BERRY
+ .2byte MOVE_THUNDERBOLT, MOVE_CRUNCH, MOVE_BODY_SLAM, MOVE_REST
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 100, 100, 155, 0, 155 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 1 @ IVs, ability
+ .4byte 0x00000003 @ personality
+ .string "GIRAFARIG$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_STARMIE, ITEM_APICOT_BERRY
+ .2byte MOVE_THUNDERBOLT, MOVE_SURF, MOVE_RECOVER, MOVE_ICE_BEAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 55, 250, 150, 55 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x0000000A @ personality
+ .string "STARMIE$", 11
+ .byte 255 @ friendship
+
+ dummy_tower_team
+ dummy_tower_team
+ .byte 0x4b, 0x62, 0x01
+
+ .align 2
+gUnknown_848144C::
+ .byte 0x1c, 0x08, 0x01, 0x0b
+ .string "NIA & CARL$", 11
+ .byte FACILITY_CLASS_COOL_COUPLE, 0x04, 0x00
+
+ .2byte EC_WORD_HERE_GOES, EC_WORD_MY, EC_WORD_DIGITAL, EC_WORD_ROMANTIC, EC_WORD_HERO, EC_WORD_STRATEGY
+ .2byte EC_WORD_THAT_S, EC_WORD_THE, EC_WORD_DIGITAL, EC_WORD_HYPER, EC_WORD_MODE, EC_WORD_POWER
+ .2byte EC_WORD_MY, EC_WORD_PERFECT, EC_WORD_STRATEGY, EC_WORD_WAS, EC_MOVE2(BEAT_UP), EC_WORD_QUES
+ .2byte EC_WORD_MY, EC_WORD_INVINCIBLE, EC_WORD_STRATEGY, EC_WORD_WAS, EC_WORD_DESTROYED, EC_WORD_ELLIPSIS
+
+ .align 2
+ .2byte SPECIES_MUK, ITEM_CHOICE_BAND
+ .2byte MOVE_THUNDERBOLT, MOVE_SLUDGE_BOMB, MOVE_SHADOW_BALL, MOVE_BODY_SLAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 155, 0, 0, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 1 @ IVs, ability
+ .4byte 0x00000007 @ personality
+ .string "MUK$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_GENGAR, ITEM_PETAYA_BERRY
+ .2byte MOVE_THUNDERBOLT, MOVE_CONFUSE_RAY, MOVE_PSYCHIC, MOVE_EXPLOSION
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 255, 155, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x00000015 @ personality
+ .string "GENGAR$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_ALAKAZAM, ITEM_GANLON_BERRY
+ .2byte MOVE_THUNDER_PUNCH, MOVE_PSYCHIC, MOVE_RECOVER, MOVE_REFLECT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 255, 255, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x0000000A @ personality
+ .string "ALAKAZAM$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_JOLTEON, ITEM_BRIGHT_POWDER
+ .2byte MOVE_THUNDERBOLT, MOVE_FLAIL, MOVE_THUNDER_WAVE, MOVE_DOUBLE_TEAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 50, 100, 160, 100, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x00000005 @ personality
+ .string "JOLTEON$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_ELECTRODE, ITEM_LIECHI_BERRY
+ .2byte MOVE_THUNDERBOLT, MOVE_EXPLOSION, MOVE_MIRROR_COAT, MOVE_LIGHT_SCREEN
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 55, 0, 100, 100, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x00000014 @ personality
+ .string "ELECTRODE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_RAICHU, ITEM_SALAC_BERRY
+ .2byte MOVE_THUNDERBOLT, MOVE_COUNTER, MOVE_REVERSAL, MOVE_LIGHT_SCREEN
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 55, 255, 0, 100, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x00000002 @ personality
+ .string "RAICHU$", 11
+ .byte 255 @ friendship
+
+ .string "NIA & CARL$", 11
+ .byte FACILITY_CLASS_COOL_COUPLE, 0x04, 0x00
+
+ .2byte EC_WORD_MASTER, EC_WORD_COMPLETE, EC_WORD_FASHION, EC_WORD_SYSTEM, EC_WORD_START, EC_WORD_EXCL
+ .2byte EC_WORD_THAT_S_IT_EXCL, EC_WORD_THE, EC_WORD_POWER, EC_WORD_OF, EC_WORD_OUR, EC_WORD_SYSTEM
+ .2byte EC_WORD_OKAY, EC_WORD_EXCL, EC_MOVE(THUNDERBOLT), EC_WORD_RUN_AWAY, EC_WORD_SYSTEM, EC_WORD_START
+ .2byte EC_WORD_GO, EC_WORD_ON, EC_WORD_PLEASE, EC_WORD_EXCL, EC_WORD_TCH, EC_WORD_ELLIPSIS
+
+ .align 2
+ .2byte SPECIES_KANGASKHAN, ITEM_SALAC_BERRY
+ .2byte MOVE_SHADOW_BALL, MOVE_REVERSAL, MOVE_ENDURE, MOVE_FAKE_OUT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 105, 0, 0, 150 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x00000003 @ personality
+ .string "KANGASKHAN$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_TAUROS, ITEM_LUM_BERRY
+ .2byte MOVE_DOUBLE_EDGE, MOVE_ROCK_TOMB, MOVE_SURF, MOVE_REST
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 100, 0, 0, 155 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x00000003 @ personality
+ .string "TAUROS$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_MILTANK, ITEM_SALAC_BERRY
+ .2byte MOVE_BODY_SLAM, MOVE_SHADOW_BALL, MOVE_MILK_DRINK, MOVE_ROCK_TOMB
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 155, 50, 250, 0, 55 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x00000003 @ personality
+ .string "MILTANK$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_RHYDON, ITEM_CHOICE_BAND
+ .2byte MOVE_THUNDERBOLT, MOVE_MEGAHORN, MOVE_HORN_DRILL, MOVE_ROCK_TOMB
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 0, 0, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 1 @ IVs, ability
+ .4byte 0x00000080 @ personality
+ .string "RHYDON$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_DRAGONITE, ITEM_SCOPE_LENS
+ .2byte MOVE_BLIZZARD, MOVE_SURF, MOVE_OUTRAGE, MOVE_FLAMETHROWER
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 0, 255, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 0 @ IVs, ability
+ .4byte 0x00000091 @ personality
+ .string "DRAGONITE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_LAPRAS, ITEM_SHELL_BELL
+ .2byte MOVE_THUNDERBOLT, MOVE_BLIZZARD, MOVE_SURF, MOVE_HORN_DRILL
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 155, 0, 255, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 31, 31, 31, 31, 31, 31, 1 @ IVs, ability
+ .4byte 0x00000091 @ personality
+ .string "LAPRAS$", 11
+ .byte 255 @ friendship
+
+ dummy_tower_team
+ .byte 0x60, 0x63, 0x01
+
+ .align 2
+gUnknown_848182C::
+ .byte 0x1d, 0x08, 0x01, 0x03
+ .string "AXE & REN$", 11
+ .byte FACILITY_CLASS_SIS_AND_BRO_2, 0x02, 0x00
+
+ .2byte EC_WORD_IT_S, EC_WORD_GOING, EC_WORD_TO, EC_WORD_GET, EC_WORD_AWFULLY, EC_WORD_COLD
+ .2byte EC_WORD_THAT_S, EC_WORD_THAT, EC_WORD_MAN, EC_WORD_I_AM, EC_WORD_COLD, EC_WORD_EXCL
+ .2byte EC_WORD_I, EC_WORD_CAN_T_WIN, EC_WORD_IN, EC_WORD_THIS, EC_MOVE(SHEER_COLD), EC_WORD_ELLIPSIS
+ .2byte EC_WORD_THIS, EC_MOVE(SHEER_COLD), EC_WORD_HAS, EC_WORD_ME, EC_WORD_FEELING, EC_WORD_SHAKY
+
+ .align 2
+ .2byte SPECIES_LANTURN, ITEM_BRIGHT_POWDER
+ .2byte MOVE_RAIN_DANCE, MOVE_SURF, MOVE_THUNDER, MOVE_ICE_BEAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 255, 255, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x0000000A @ personality
+ .string "LANTURN$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_MANTINE, ITEM_PETAYA_BERRY
+ .2byte MOVE_RAIN_DANCE, MOVE_SURF, MOVE_CONFUSE_RAY, MOVE_ICE_BEAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 155, 100, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000014 @ personality
+ .string "MANTINE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_DEWGONG, ITEM_LEFTOVERS
+ .2byte MOVE_RAIN_DANCE, MOVE_SURF, MOVE_SHEER_COLD, MOVE_BLIZZARD
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 100, 100, 0, 255, 55 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000011 @ personality
+ .string "DEWGONG$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_CLOYSTER, ITEM_KINGS_ROCK
+ .2byte MOVE_RAIN_DANCE, MOVE_SURF, MOVE_ICE_BEAM, MOVE_HYPER_BEAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 0, 255, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000011 @ personality
+ .string "CLOYSTER$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_TENTACRUEL, ITEM_QUICK_CLAW
+ .2byte MOVE_RAIN_DANCE, MOVE_SURF, MOVE_GIGA_DRAIN, MOVE_SLUDGE_BOMB
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 100, 100, 255, 55 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x0000000A @ personality
+ .string "TENTACRUEL$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_GYARADOS, ITEM_LIECHI_BERRY
+ .2byte MOVE_RAIN_DANCE, MOVE_SURF, MOVE_DRAGON_DANCE, MOVE_RETURN
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 0, 255, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000003 @ personality
+ .string "GYARADOS$", 11
+ .byte 255 @ friendship
+
+ .string "AXE & REN$", 11
+ .byte FACILITY_CLASS_SIS_AND_BRO_2, 0x02, 0x00
+
+ .2byte EC_WORD_OUR, EC_WORD_SWIFT_SWIM, EC_WORD_LEFT, EC_WORD_ME, EC_WORD_FEELING, EC_WORD_COLD
+ .2byte EC_WORD_I, EC_WORD_WON, EC_WORD_BUT, EC_WORD_I_AM, EC_WORD_NOT, EC_WORD_HOT
+ .2byte EC_WORD_I_AM, EC_WORD_HUNGRY, EC_WORD_FOR, EC_WORD_ANY, EC_WORD_HOT, EC_WORD_EATS
+ .2byte EC_WORD_SISTER, EC_WORD_I, EC_WORD_NEED, EC_WORD_SOMETHING, EC_WORD_HOT, EC_WORD_PLEASE
+
+ .align 2
+ .2byte SPECIES_ELECTABUZZ, ITEM_SCOPE_LENS
+ .2byte MOVE_THUNDER, MOVE_PSYCHIC, MOVE_CROSS_CHOP, MOVE_LIGHT_SCREEN
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 155, 155, 100, 100, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000040 @ personality
+ .string "ELECTABUZZ$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_MAGNETON, ITEM_PETAYA_BERRY
+ .2byte MOVE_THUNDER, MOVE_SONIC_BOOM, MOVE_METAL_SOUND, MOVE_REFLECT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 155, 255, 0, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability
+ .4byte 0x0000000A @ personality
+ .string "MAGNETON$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_PORYGON, ITEM_LEFTOVERS
+ .2byte MOVE_THUNDER, MOVE_PSYCHIC, MOVE_BLIZZARD, MOVE_PROTECT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 255, 0, 0, 0, 255, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000011 @ personality
+ .string "PORYGON$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_DRAGONAIR, ITEM_SHELL_BELL
+ .2byte MOVE_THUNDER, MOVE_SURF, MOVE_BLIZZARD, MOVE_OUTRAGE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 50, 155, 255, 50 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x0000000A @ personality
+ .string "DRAGONAIR$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_PERSIAN, ITEM_SHELL_BELL
+ .2byte MOVE_THUNDER, MOVE_FAKE_OUT, MOVE_WATER_PULSE, MOVE_RETURN
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 155, 0, 200, 155, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x0000000B @ personality
+ .string "PERSIAN$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_STARMIE, ITEM_GANLON_BERRY
+ .2byte MOVE_THUNDER, MOVE_SURF, MOVE_RECOVER, MOVE_REFLECT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 95, 255, 100, 60 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability
+ .4byte 0x00000005 @ personality
+ .string "STARMIE$", 11
+ .byte 255 @ friendship
+
+ dummy_tower_team
+ .byte 0x72, 0x52, 0x01
+
+ .align 2
+gUnknown_8481C0C::
+ .byte 0x1e, 0x08, 0x01, 0x05
+ .string "KATI & GEB$", 11
+ .byte FACILITY_CLASS_YOUNG_COUPLE_2, 0x02, 0x00
+
+ .2byte EC_WORD_WELCOME, EC_WORD_TO, EC_WORD_OUR, EC_WORD_LOVEY_DOVEY, EC_MOVE2(THUNDER_WAVE), EC_MOVE(SANDSTORM)
+ .2byte EC_WORD_LALALA, EC_WORD_LALALA, EC_WORD_OUR, EC_WORD_LOVEY_DOVEY, EC_WORD_LALALA, EC_WORD_LIFE
+ .2byte EC_WORD_I, EC_WORD_NEED, EC_WORD_TO, EC_WORD_LOSE, EC_WORD_MY, EC_MOVE2(FRUSTRATION)
+ .2byte EC_WORD_YOU_RE, EC_WORD_JUST, EC_WORD_A_LITTLE, EC_WORD_KID, EC_WORD_AHAHA, EC_WORD_EXCL
+
+ .align 2
+ .2byte SPECIES_FLAAFFY, ITEM_LEFTOVERS
+ .2byte MOVE_ATTRACT, MOVE_PROTECT, MOVE_THUNDERBOLT, MOVE_REFLECT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 255, 0, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000084 @ personality
+ .string "FLAAFFY$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_QUAGSIRE, ITEM_QUICK_CLAW
+ .2byte MOVE_ATTRACT, MOVE_SURF, MOVE_AMNESIA, MOVE_BLIZZARD
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 255, 0, 100, 155 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability
+ .4byte 0x00000093 @ personality
+ .string "QUAGSIRE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_PIKACHU, ITEM_SALAC_BERRY
+ .2byte MOVE_ATTRACT, MOVE_REVERSAL, MOVE_THUNDERBOLT, MOVE_IRON_TAIL
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 155, 100, 0, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x0000008A @ personality
+ .string "PIKACHU$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_ELECTABUZZ, ITEM_LIECHI_BERRY
+ .2byte MOVE_ATTRACT, MOVE_COUNTER, MOVE_ICE_PUNCH, MOVE_BODY_SLAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 150, 255, 0, 105 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000046 @ personality
+ .string "ELECTABUZZ$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_TOGETIC, ITEM_KINGS_ROCK
+ .2byte MOVE_ATTRACT, MOVE_BLIZZARD, MOVE_ANCIENT_POWER, MOVE_WATER_PULSE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 255, 0, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability
+ .4byte 0x0000002D @ personality
+ .string "TOGETIC$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_GOLDUCK, ITEM_SCOPE_LENS
+ .2byte MOVE_ATTRACT, MOVE_SURF, MOVE_DIG, MOVE_CROSS_CHOP
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 155, 50, 255, 0, 50 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability
+ .4byte 0x00000080 @ personality
+ .string "GOLDUCK$", 11
+ .byte 255 @ friendship
+
+ .string "KATI & GEB$", 11
+ .byte FACILITY_CLASS_YOUNG_COUPLE_2, 0x02, 0x00
+
+ .2byte EC_WORD_I_AM, EC_WORD_PLUS, EC_WORD_YOU_RE, EC_WORD_MINUS, EC_WORD_LOVEY_DOVEY, EC_WORD_MAGNET_PULL
+ .2byte EC_WORD_DON_T, EC_WORD_STOP, EC_WORD_OUR, EC_WORD_LOVEY_DOVEY, EC_WORD_LOCOMOTIVE, EC_WORD_EXCL
+ .2byte EC_WORD_HIS, EC_WORD_CRY, EC_WORD_HAS, EC_WORD_CUTE_CHARM, EC_WORD_TOO, EC_WORD_EXCL
+ .2byte EC_WORD_YOU, EC_WORD_HAVE, EC_WORD_TIME, EC_WORD_TO, EC_WORD_TALK, EC_WORD_QUES
+
+ .align 2
+ .2byte SPECIES_PICHU, ITEM_FOCUS_BAND
+ .2byte MOVE_ATTRACT, MOVE_PROTECT, MOVE_SWEET_KISS, MOVE_REVERSAL
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 0, 255, 0, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000003 @ personality
+ .string "PICHU$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_ELEKID, ITEM_BRIGHT_POWDER
+ .2byte MOVE_ATTRACT, MOVE_PROTECT, MOVE_DOUBLE_TEAM, MOVE_FOCUS_PUNCH
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 130, 0, 0, 125 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000002 @ personality
+ .string "ELEKID$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_TOGEPI, ITEM_FOCUS_BAND
+ .2byte MOVE_ATTRACT, MOVE_PROTECT, MOVE_YAWN, MOVE_WATER_PULSE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 255, 0, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability
+ .4byte 0x0000000F @ personality
+ .string "TOGEPI$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_PSYDUCK, ITEM_BRIGHT_POWDER
+ .2byte MOVE_ATTRACT, MOVE_PROTECT, MOVE_DIG, MOVE_DIVE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 255, 0, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000016 @ personality
+ .string "PSYDUCK$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_MAREEP, ITEM_BRIGHT_POWDER
+ .2byte MOVE_ATTRACT, MOVE_PROTECT, MOVE_LIGHT_SCREEN, MOVE_THUNDERBOLT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 255, 0, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 0 @ IVs, ability
+ .4byte 0x00000007 @ personality
+ .string "MAREEP$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_WOOPER, ITEM_FOCUS_BAND
+ .2byte MOVE_ATTRACT, MOVE_PROTECT, MOVE_SURF, MOVE_YAWN
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 255, 0, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 10, 10, 10, 10, 10, 10, 1 @ IVs, ability
+ .4byte 0x00000007 @ personality
+ .string "WOOPER$", 11
+ .byte 255 @ friendship
+
+ dummy_tower_team
+ .byte 0x66, 0x59, 0x01
+
+ .align 2
+gUnknown_8481FEC::
+ .byte 0x1f, 0x08, 0x02, 0x07
+ .string "BEN$", 11
+ .byte FACILITY_CLASS_ROCKER, 0x01, 0x00
+
+ .2byte EC_WORD_LALALA, EC_WORD_LET_S, EC_MOVE(SING), EC_WORD_ABOUT, EC_WORD_ELECTRIC, EC_WORD_POWER
+ .2byte EC_WORD_STATIC, EC_WORD_IS, EC_WORD_ELECTRIC, EC_WORD_YES, EC_WORD_IT, EC_WORD_IS
+ .2byte EC_WORD_ELECTRIC, EC_WORD_ABOUT, EC_WORD_MY, EC_WORD_DIGITAL, EC_WORD_TELEVISION, EC_WORD_I_AM
+ .2byte EC_WORD_ELECTRIC, EC_WORD_EXCL, EC_WORD_IT_S, EC_WORD_A, EC_WORD_NATURAL, EC_WORD_POWER
+
+ .align 2
+ .2byte SPECIES_ELECTRODE, ITEM_LIECHI_BERRY
+ .2byte MOVE_THUNDERBOLT, MOVE_MIRROR_COAT, MOVE_EXPLOSION, MOVE_THUNDER_WAVE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 55, 255, 100, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability
+ .4byte 0x00000014 @ personality
+ .string "ELECTRODE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_ELECTABUZZ, ITEM_CHOICE_BAND
+ .2byte MOVE_THUNDERBOLT, MOVE_FIRE_PUNCH, MOVE_PSYCHIC, MOVE_ICE_PUNCH
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 255, 0, 155, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x0000000F @ personality
+ .string "ELECTABUZZ$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_LANTURN, ITEM_CHOICE_BAND
+ .2byte MOVE_THUNDERBOLT, MOVE_DOUBLE_EDGE, MOVE_ICE_BEAM, MOVE_HYDRO_PUMP
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 125, 0, 255, 130 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x0000008E @ personality
+ .string "LANTURN$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_MAGNETON, ITEM_LIECHI_BERRY
+ .2byte MOVE_ZAP_CANNON, MOVE_HYPER_BEAM, MOVE_LOCK_ON, MOVE_SUPERSONIC
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 200, 255, 0, 55 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability
+ .4byte 0x00000014 @ personality
+ .string "MAGNETON$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_RAICHU, ITEM_SALAC_BERRY
+ .2byte MOVE_DOUBLE_EDGE, MOVE_MEGA_KICK, MOVE_REVERSAL, MOVE_BODY_SLAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 80, 100, 0, 75 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x0000008A @ personality
+ .string "RAICHU$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_AMPHAROS, ITEM_SHELL_BELL
+ .2byte MOVE_THUNDERBOLT, MOVE_MEGA_KICK, MOVE_COUNTER, MOVE_BODY_SLAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 200, 150, 0, 10, 150 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000007 @ personality
+ .string "AMPHAROS$", 11
+ .byte 255 @ friendship
+
+ .string "CAMDEN$", 11
+ .byte FACILITY_CLASS_ENGINEER, 0x01, 0x00
+
+ .2byte EC_WORD_LALALA, EC_WORD_LET_S, EC_MOVE(SING), EC_WORD_ABOUT, EC_WORD_ELECTRIC, EC_WORD_POWER
+ .2byte EC_WORD_A, EC_MOVE(THUNDERBOLT), EC_WORD_IS, EC_WORD_ELECTRIC, EC_WORD_TOO, EC_WORD_EXCL
+ .2byte EC_WORD_ELECTRIC, EC_WORD_EXCL, EC_WORD_IT_S, EC_WORD_ABOUT, EC_WORD_WIRELESS, EC_WORD_LINK
+ .2byte EC_WORD_ELECTRIC, EC_WORD_EXCL, EC_WORD_IT_S, EC_WORD_A, EC_WORD_TREASURE, EC_WORD_EXCL
+
+ .align 2
+ .2byte SPECIES_GRANBULL, ITEM_CHOICE_BAND
+ .2byte MOVE_THUNDERBOLT, MOVE_CRUNCH, MOVE_EARTHQUAKE, MOVE_ROCK_TOMB
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 55, 0, 100, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000002 @ personality
+ .string "GRANBULL$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_PERSIAN, ITEM_SCOPE_LENS
+ .2byte MOVE_THUNDERBOLT, MOVE_WATER_PULSE, MOVE_HYPNOSIS, MOVE_SLASH
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 100, 55, 255, 0, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000080 @ personality
+ .string "PERSIAN$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_LICKITUNG, ITEM_LEFTOVERS
+ .2byte MOVE_PROTECT, MOVE_SURF, MOVE_EARTHQUAKE, MOVE_SHADOW_BALL
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 200, 255, 0, 0, 55, 0 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000002 @ personality
+ .string "LICKITUNG$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_RATICATE, ITEM_SALAC_BERRY
+ .2byte MOVE_THUNDERBOLT, MOVE_HYPER_FANG, MOVE_SUPER_FANG, MOVE_REVERSAL
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 100, 50, 0, 105 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability
+ .4byte 0x00000094 @ personality
+ .string "RATICATE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_PRIMEAPE, ITEM_SCOPE_LENS
+ .2byte MOVE_THUNDERBOLT, MOVE_CROSS_CHOP, MOVE_EARTHQUAKE, MOVE_ROCK_TOMB
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 130, 0, 0, 125 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000002 @ personality
+ .string "PRIMEAPE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_KANGASKHAN, ITEM_LUM_BERRY
+ .2byte MOVE_THUNDERBOLT, MOVE_SURF, MOVE_CRUSH_CLAW, MOVE_REST
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 100, 155, 0, 100, 155 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000011 @ personality
+ .string "KANGASKHAN$", 11
+ .byte 255 @ friendship
+
+ .string "ZACKERY$", 11
+ .byte FACILITY_CLASS_SCIENTIST, 0x01, 0x00
+
+ .2byte EC_WORD_LALALA, EC_WORD_LET_S, EC_MOVE(SING), EC_WORD_ABOUT, EC_WORD_ELECTRIC, EC_WORD_POWER
+ .2byte EC_MOVE2(THUNDER_SHOCK), EC_WORD_IS, EC_WORD_ELECTRIC, EC_WORD_YOU, EC_WORD_KNOW, EC_WORD_QUES
+ .2byte EC_WORD_ELECTRIC, EC_WORD_EXCL, EC_MOVE2(FLASH), EC_MOVE2(FLASH), EC_MOVE2(FLASH), EC_WORD_EXCL_EXCL
+ .2byte EC_WORD_ALL, EC_WORD_TOGETHER, EC_WORD_NOW, EC_WORD_EXCL, EC_MOVE(SPARK), EC_MOVE(SPARK)
+
+ .align 2
+ .2byte SPECIES_WEEZING, ITEM_CHOICE_BAND
+ .2byte MOVE_THUNDERBOLT, MOVE_SLUDGE_BOMB, MOVE_FLAMETHROWER, MOVE_SHADOW_BALL
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 0, 0, 155, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000002 @ personality
+ .string "WEEZING$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_MUK, ITEM_LEFTOVERS
+ .2byte MOVE_THUNDERBOLT, MOVE_SLUDGE_BOMB, MOVE_GIGA_DRAIN, MOVE_CURSE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 150, 0, 255, 105 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 1 @ IVs, ability
+ .4byte 0x00000084 @ personality
+ .string "MUK$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_GENGAR, ITEM_PETAYA_BERRY
+ .2byte MOVE_THUNDERBOLT, MOVE_HYPNOSIS, MOVE_DREAM_EATER, MOVE_WILL_O_WISP
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 250, 155, 105 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x0000000A @ personality
+ .string "GENGAR$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_MISDREAVUS, ITEM_SALAC_BERRY
+ .2byte MOVE_PSYCHIC, MOVE_GRUDGE, MOVE_CONFUSE_RAY, MOVE_DESTINY_BOND
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 0, 150, 105, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x0000000A @ personality
+ .string "MISDREAVUS$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_CROBAT, ITEM_BRIGHT_POWDER
+ .2byte MOVE_SLUDGE_BOMB, MOVE_CONFUSE_RAY, MOVE_GIGA_DRAIN, MOVE_TOXIC
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 200, 110, 0, 200 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000087 @ personality
+ .string "CROBAT$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_HAUNTER, ITEM_SALAC_BERRY
+ .2byte MOVE_DESTINY_BOND, MOVE_HYPNOSIS, MOVE_CONFUSE_RAY, MOVE_TOXIC
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 155, 100, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 20, 20, 20, 20, 20, 20, 0 @ IVs, ability
+ .4byte 0x00000091 @ personality
+ .string "HAUNTER$", 11
+ .byte 255 @ friendship
+
+ .byte 0x49, 0x4f, 0x01
+
+ .align 2
+gUnknown_84823CC::
+ .byte 0x20, 0x08, 0x02, 0x0e
+ .string "MAURA$", 11
+ .byte FACILITY_CLASS_BEAUTY_2, 0x02, 0x00
+
+ .2byte EC_WORD_I_AM, EC_WORD_THE, EC_WORD_GROUP, EC_WORD_LEADER, EC_WORD_EXCL, 0xFFFF
+ .2byte EC_WORD_WHAT, EC_WORD_AM, EC_WORD_I, EC_WORD_LEADER, EC_WORD_OF, EC_WORD_QUES
+ .2byte EC_WORD_I_AM, EC_WORD_NO, EC_WORD_LEADER, EC_WORD_IT_S, EC_WORD_A_LITTLE, EC_WORD_LIE
+ .2byte EC_WORD_HEY, EC_WORD_EXCL, EC_WORD_THE, EC_WORD_GROUND, EC_WORD_IS, EC_WORD_SLIMY
+
+ .align 2
+ .2byte SPECIES_PICHU, ITEM_FOCUS_BAND
+ .2byte MOVE_THUNDER_SHOCK, MOVE_THUNDER_WAVE, MOVE_SWEET_KISS, MOVE_PROTECT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 255, 0, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000005 @ personality
+ .string "PICHU$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_MAREEP, ITEM_BRIGHT_POWDER
+ .2byte MOVE_THUNDER_SHOCK, MOVE_CHARGE, MOVE_PROTECT, MOVE_RETURN
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 255, 0, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000007 @ personality
+ .string "MAREEP$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_IGGLYBUFF, ITEM_QUICK_CLAW
+ .2byte MOVE_SING, MOVE_SWEET_KISS, MOVE_PRESENT, MOVE_PROTECT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 255, 0, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000007 @ personality
+ .string "IGGLYBUFF$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_CLEFFA, ITEM_LAX_INCENSE
+ .2byte MOVE_SING, MOVE_SWEET_KISS, MOVE_ENCORE, MOVE_METRONOME
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 255, 0, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000016 @ personality
+ .string "CLEFFA$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_NIDORAN_F, ITEM_SITRUS_BERRY
+ .2byte MOVE_CRUNCH, MOVE_DIG, MOVE_FLATTER, MOVE_ATTRACT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 255, 0, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000016 @ personality
+ .string "NIDORAN♀$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_NIDORAN_M, ITEM_SITRUS_BERRY
+ .2byte MOVE_HORN_DRILL, MOVE_SLUDGE_BOMB, MOVE_FLATTER, MOVE_ATTRACT
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 255, 0, 0, 255 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000007 @ personality
+ .string "NIDORAN♂$", 11
+ .byte 255 @ friendship
+
+ .string "MIKAELA$", 11
+ .byte FACILITY_CLASS_LASS_2, 0x01, 0x00
+
+ .2byte EC_WORD_I_AM, EC_WORD_REALLY, EC_WORD_THE, EC_WORD_NO_1, EC_WORD_TRAINER, EC_WORD_HERE
+ .2byte EC_WORD_NEVER, EC_WORD_SAID, EC_WORD_WHAT, EC_WORD_I_AM, EC_WORD_NO_1, EC_WORD_AT
+ .2byte EC_WORD_NEXT, EC_WORD_TIME, EC_WORD_I, EC_WORD_WILL, EC_WORD_BE, EC_WORD_OVERWHELMING
+ .2byte EC_WORD_YOU, EC_MOVE2(SPIT_UP), EC_WORD_ME, EC_WORD_AS_IF, EC_WORD_I_AM, EC_WORD_NOTHING
+
+ .align 2
+ .2byte SPECIES_NIDORINO, ITEM_CHOICE_BAND
+ .2byte MOVE_SHOCK_WAVE, MOVE_HORN_DRILL, MOVE_ICE_BEAM, MOVE_IRON_TAIL
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 155, 0, 255, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000007 @ personality
+ .string "NIDORINO$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_NIDORINA, ITEM_CHOICE_BAND
+ .2byte MOVE_SHOCK_WAVE, MOVE_CRUNCH, MOVE_BODY_SLAM, MOVE_COUNTER
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 155, 0, 0, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000016 @ personality
+ .string "NIDORINA$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_PIKACHU, ITEM_LIGHT_BALL
+ .2byte MOVE_SHOCK_WAVE, MOVE_THUNDER_WAVE, MOVE_COUNTER, MOVE_BODY_SLAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 200, 0, 255, 55 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000011 @ personality
+ .string "PIKACHU$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_FLAAFFY, ITEM_BRIGHT_POWDER
+ .2byte MOVE_SHOCK_WAVE, MOVE_DOUBLE_TEAM, MOVE_SEISMIC_TOSS, MOVE_BODY_SLAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 100, 0, 0, 150 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000007 @ personality
+ .string "FLAAFFY$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_JIGGLYPUFF, ITEM_CHOICE_BAND
+ .2byte MOVE_SHOCK_WAVE, MOVE_SHADOW_BALL, MOVE_FOCUS_PUNCH, MOVE_BODY_SLAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 150, 0, 0, 105 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000016 @ personality
+ .string "JIGGLYPUFF$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_CLEFAIRY, ITEM_CHOICE_BAND
+ .2byte MOVE_SHOCK_WAVE, MOVE_METEOR_MASH, MOVE_MOONLIGHT, MOVE_BODY_SLAM
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 100, 0, 0, 155 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000007 @ personality
+ .string "CLEFAIRY$", 11
+ .byte 255 @ friendship
+
+ .string "FLINT$", 11
+ .byte FACILITY_CLASS_ENGINEER, 0x04, 0x00
+
+ .2byte EC_WORD_I_AM, EC_WORD_THE, EC_MOVE2(MILK_DRINK), EC_WORD_WORLD, EC_WORD_LEADER, EC_WORD_EXCL
+ .2byte EC_WORD_I_VE, EC_WORD_WON, EC_WORD_THIS, EC_MOVE2(MILK_DRINK), EC_WORD_MATCH, EC_WORD_EXCL
+ .2byte EC_WORD_I, EC_WORD_CAN_T, EC_WORD_DRINK, EC_WORD_ANY, EC_WORD_MORE, EC_WORD_DRINKS
+ .2byte EC_WORD_WHOAH, EC_WORD_EXCL, EC_WORD_I_AM, EC_WORD_DROOLING, EC_WORD_ALL, EC_WORD_OVER
+
+ .align 2
+ .2byte SPECIES_WIGGLYTUFF, ITEM_CHOICE_BAND
+ .2byte MOVE_THUNDERBOLT, MOVE_PSYCHIC, MOVE_WATER_PULSE, MOVE_FLAMETHROWER
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 0, 155, 0, 255, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x000000CF @ personality
+ .string "WIGGLYTUFF$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_CLEFABLE, ITEM_SALAC_BERRY
+ .2byte MOVE_THUNDERBOLT, MOVE_SOFT_BOILED, MOVE_METEOR_MASH, MOVE_DOUBLE_EDGE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 100, 0, 0, 150 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x000000CF @ personality
+ .string "CLEFABLE$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_NIDOQUEEN, ITEM_CHOICE_BAND
+ .2byte MOVE_THUNDERBOLT, MOVE_CRUNCH, MOVE_SUPERPOWER, MOVE_SURF
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 200, 110, 0, 100, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000007 @ personality
+ .string "NIDOQUEEN$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_NIDOKING, ITEM_CHOICE_BAND
+ .2byte MOVE_THUNDERBOLT, MOVE_HYPER_BEAM, MOVE_MEGAHORN, MOVE_SHADOW_BALL
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 150, 0, 0, 100 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000002 @ personality
+ .string "NIDOKING$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_RAICHU, ITEM_SALAC_BERRY
+ .2byte MOVE_THUNDERBOLT, MOVE_REVERSAL, MOVE_IRON_TAIL, MOVE_DOUBLE_EDGE
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 155, 150, 100, 0, 105 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000080 @ personality
+ .string "RAICHU$", 11
+ .byte 255 @ friendship
+
+ .align 2
+ .2byte SPECIES_AMPHAROS, ITEM_LUM_BERRY
+ .2byte MOVE_THUNDERBOLT, MOVE_REST, MOVE_BODY_SLAM, MOVE_IRON_TAIL
+ .byte 0, 0x00 @ level, ppBonuses
+ .byte 0, 255, 150, 0, 0, 105 @ EVs
+ .align 2
+ trainerid 0, 4096 @ OT ID
+ ivs 15, 15, 15, 15, 15, 15, 0 @ IVs, ability
+ .4byte 0x00000080 @ personality
+ .string "AMPHAROS$", 11
+ .byte 255 @ friendship
+
+ .byte 0x80, 0x6b, 0x01
diff --git a/graphics/berry_fix/gba_small.bin b/graphics/berry_fix/gba_small.bin
new file mode 100644
index 000000000..86a29cf70
--- /dev/null
+++ b/graphics/berry_fix/gba_small.bin
Binary files differ
diff --git a/graphics/berry_fix/gba_small.pal b/graphics/berry_fix/gba_small.pal
new file mode 100644
index 000000000..0e177217f
--- /dev/null
+++ b/graphics/berry_fix/gba_small.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+0 0 0
+255 255 255
+32 32 32
+172 172 172
+230 8 8
+255 189 115
+32 156 8
+148 246 148
+49 82 205
+164 197 246
+164 213 90
+238 230 197
+148 197 213
+32 57 98
+106 148 197
+90 106 156
+255 255 255
+164 213 90
+32 32 32
+123 123 205
+255 255 255
+74 74 115
+197 197 197
+98 98 189
+106 106 197
+98 123 57
+131 131 131
+222 41 0
+189 123 41
+180 180 222
+0 0 0
+0 0 0
diff --git a/graphics/berry_fix/gba_small.png b/graphics/berry_fix/gba_small.png
new file mode 100644
index 000000000..59bfaf4d5
--- /dev/null
+++ b/graphics/berry_fix/gba_small.png
Binary files differ
diff --git a/graphics/berry_fix/gba_transfer.bin b/graphics/berry_fix/gba_transfer.bin
new file mode 100644
index 000000000..077beaa83
--- /dev/null
+++ b/graphics/berry_fix/gba_transfer.bin
Binary files differ
diff --git a/graphics/berry_fix/gba_transfer.pal b/graphics/berry_fix/gba_transfer.pal
new file mode 100644
index 000000000..0e177217f
--- /dev/null
+++ b/graphics/berry_fix/gba_transfer.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+0 0 0
+255 255 255
+32 32 32
+172 172 172
+230 8 8
+255 189 115
+32 156 8
+148 246 148
+49 82 205
+164 197 246
+164 213 90
+238 230 197
+148 197 213
+32 57 98
+106 148 197
+90 106 156
+255 255 255
+164 213 90
+32 32 32
+123 123 205
+255 255 255
+74 74 115
+197 197 197
+98 98 189
+106 106 197
+98 123 57
+131 131 131
+222 41 0
+189 123 41
+180 180 222
+0 0 0
+0 0 0
diff --git a/graphics/berry_fix/gba_transfer.png b/graphics/berry_fix/gba_transfer.png
new file mode 100644
index 000000000..a741fe1b9
--- /dev/null
+++ b/graphics/berry_fix/gba_transfer.png
Binary files differ
diff --git a/graphics/berry_fix/gba_transfer_error.bin b/graphics/berry_fix/gba_transfer_error.bin
new file mode 100644
index 000000000..9d1cfdae4
--- /dev/null
+++ b/graphics/berry_fix/gba_transfer_error.bin
Binary files differ
diff --git a/graphics/berry_fix/gba_transfer_error.pal b/graphics/berry_fix/gba_transfer_error.pal
new file mode 100644
index 000000000..0e177217f
--- /dev/null
+++ b/graphics/berry_fix/gba_transfer_error.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+0 0 0
+255 255 255
+32 32 32
+172 172 172
+230 8 8
+255 189 115
+32 156 8
+148 246 148
+49 82 205
+164 197 246
+164 213 90
+238 230 197
+148 197 213
+32 57 98
+106 148 197
+90 106 156
+255 255 255
+164 213 90
+32 32 32
+123 123 205
+255 255 255
+74 74 115
+197 197 197
+98 98 189
+106 106 197
+98 123 57
+131 131 131
+222 41 0
+189 123 41
+180 180 222
+0 0 0
+0 0 0
diff --git a/graphics/berry_fix/gba_transfer_error.png b/graphics/berry_fix/gba_transfer_error.png
new file mode 100644
index 000000000..766b9f28e
--- /dev/null
+++ b/graphics/berry_fix/gba_transfer_error.png
Binary files differ
diff --git a/graphics/berry_fix/gba_transfer_highlight.bin b/graphics/berry_fix/gba_transfer_highlight.bin
new file mode 100644
index 000000000..4683bab3a
--- /dev/null
+++ b/graphics/berry_fix/gba_transfer_highlight.bin
Binary files differ
diff --git a/graphics/berry_fix/gba_transfer_highlight.pal b/graphics/berry_fix/gba_transfer_highlight.pal
new file mode 100644
index 000000000..0e177217f
--- /dev/null
+++ b/graphics/berry_fix/gba_transfer_highlight.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+0 0 0
+255 255 255
+32 32 32
+172 172 172
+230 8 8
+255 189 115
+32 156 8
+148 246 148
+49 82 205
+164 197 246
+164 213 90
+238 230 197
+148 197 213
+32 57 98
+106 148 197
+90 106 156
+255 255 255
+164 213 90
+32 32 32
+123 123 205
+255 255 255
+74 74 115
+197 197 197
+98 98 189
+106 106 197
+98 123 57
+131 131 131
+222 41 0
+189 123 41
+180 180 222
+0 0 0
+0 0 0
diff --git a/graphics/berry_fix/gba_transfer_highlight.png b/graphics/berry_fix/gba_transfer_highlight.png
new file mode 100644
index 000000000..25b47d036
--- /dev/null
+++ b/graphics/berry_fix/gba_transfer_highlight.png
Binary files differ
diff --git a/graphics/berry_fix/logo.bin b/graphics/berry_fix/logo.bin
new file mode 100644
index 000000000..673ff47e4
--- /dev/null
+++ b/graphics/berry_fix/logo.bin
Binary files differ
diff --git a/graphics/berry_fix/logo.pal b/graphics/berry_fix/logo.pal
new file mode 100644
index 000000000..4c76f3f9a
--- /dev/null
+++ b/graphics/berry_fix/logo.pal
@@ -0,0 +1,51 @@
+JASC-PAL
+0100
+48
+0 0 0
+255 255 255
+32 32 32
+172 172 172
+230 8 8
+255 189 115
+32 156 8
+148 246 148
+49 82 205
+164 197 246
+164 213 90
+238 230 197
+148 197 213
+32 57 98
+106 148 197
+90 106 156
+255 255 255
+164 213 90
+32 32 32
+123 123 205
+255 255 255
+74 74 115
+197 197 197
+98 98 189
+106 106 197
+98 123 57
+131 131 131
+222 41 0
+189 123 41
+180 180 222
+0 0 0
+0 0 0
+0 0 0
+255 255 255
+238 238 238
+222 222 230
+205 205 222
+197 197 205
+180 180 197
+164 164 189
+156 156 172
+139 139 164
+123 123 156
+115 115 139
+98 98 131
+82 82 123
+74 74 115
+32 32 32
diff --git a/graphics/berry_fix/logo.png b/graphics/berry_fix/logo.png
new file mode 100644
index 000000000..ab91d5a26
--- /dev/null
+++ b/graphics/berry_fix/logo.png
Binary files differ
diff --git a/graphics/berry_fix/window.bin b/graphics/berry_fix/window.bin
new file mode 100644
index 000000000..100c5da6f
--- /dev/null
+++ b/graphics/berry_fix/window.bin
Binary files differ
diff --git a/graphics/berry_fix/window.pal b/graphics/berry_fix/window.pal
new file mode 100644
index 000000000..0e177217f
--- /dev/null
+++ b/graphics/berry_fix/window.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+0 0 0
+255 255 255
+32 32 32
+172 172 172
+230 8 8
+255 189 115
+32 156 8
+148 246 148
+49 82 205
+164 197 246
+164 213 90
+238 230 197
+148 197 213
+32 57 98
+106 148 197
+90 106 156
+255 255 255
+164 213 90
+32 32 32
+123 123 205
+255 255 255
+74 74 115
+197 197 197
+98 98 189
+106 106 197
+98 123 57
+131 131 131
+222 41 0
+189 123 41
+180 180 222
+0 0 0
+0 0 0
diff --git a/graphics/berry_fix/window.png b/graphics/berry_fix/window.png
new file mode 100644
index 000000000..5e437e727
--- /dev/null
+++ b/graphics/berry_fix/window.png
Binary files differ
diff --git a/include/cereader_tool.h b/include/cereader_tool.h
index 28ef526eb..05677dc79 100644
--- a/include/cereader_tool.h
+++ b/include/cereader_tool.h
@@ -4,6 +4,6 @@
#include "global.h"
bool32 sub_815D794(u8 *);
-u8 sub_815D6B4(u8 *);
+bool32 sub_815D6B4(u8 *);
#endif //GUARD_CEREADER_TOOL_H
diff --git a/include/constants/facility_trainer_classes.h b/include/constants/facility_trainer_classes.h
new file mode 100644
index 000000000..10500ff35
--- /dev/null
+++ b/include/constants/facility_trainer_classes.h
@@ -0,0 +1,155 @@
+#ifndef GUARD_CONSTANTS_FACILITY_TRAINER_CLASSES_H
+#define GUARD_CONSTANTS_FACILITY_TRAINER_CLASSES_H
+
+#define FACILITY_CLASS_AQUA_LEADER 0x00
+#define FACILITY_CLASS_TEAM_AQUA 0x01
+#define FACILITY_CLASS_TEAM_AQUA_2 0x02
+#define FACILITY_CLASS_AROMA_LADY 0x03
+#define FACILITY_CLASS_RUIN_MANIAC 0x04
+#define FACILITY_CLASS_INTERVIEWER 0x05
+#define FACILITY_CLASS_TUBER 0x06
+#define FACILITY_CLASS_TUBER_2 0x07
+#define FACILITY_CLASS_COOLTRAINER 0x08
+#define FACILITY_CLASS_COOLTRAINER_2 0x09
+#define FACILITY_CLASS_HEX_MANIAC 0x0A
+#define FACILITY_CLASS_LADY 0x0B
+#define FACILITY_CLASS_BEAUTY 0x0C
+#define FACILITY_CLASS_RICH_BOY 0x0D
+#define FACILITY_CLASS_POKEMANIAC 0x0E
+#define FACILITY_CLASS_SWIMMER_MALE 0x0F
+#define FACILITY_CLASS_BLACK_BELT 0x10
+#define FACILITY_CLASS_GUITARIST 0x11
+#define FACILITY_CLASS_KINDLER 0x12
+#define FACILITY_CLASS_CAMPER 0x13
+#define FACILITY_CLASS_BUG_MANIAC 0x14
+#define FACILITY_CLASS_PSYCHIC 0x15
+#define FACILITY_CLASS_PSYCHIC_2 0x16
+#define FACILITY_CLASS_GENTLEMAN 0x17
+#define FACILITY_CLASS_ELITE_FOUR 0x18
+#define FACILITY_CLASS_ELITE_FOUR_2 0x19
+#define FACILITY_CLASS_LEADER 0x1A
+#define FACILITY_CLASS_LEADER_2 0x1B
+#define FACILITY_CLASS_LEADER_3 0x1C
+#define FACILITY_CLASS_SCHOOL_KID 0x1D
+#define FACILITY_CLASS_SCHOOL_KID_2 0x1E
+#define FACILITY_CLASS_SR_AND_JR 0x1F
+#define FACILITY_CLASS_POKEFAN 0x20
+#define FACILITY_CLASS_POKEFAN_2 0x21
+#define FACILITY_CLASS_EXPERT 0x22
+#define FACILITY_CLASS_EXPERT_2 0x23
+#define FACILITY_CLASS_YOUNGSTER 0x24
+#define FACILITY_CLASS_CHAMPION 0x25
+#define FACILITY_CLASS_FISHERMAN 0x26
+#define FACILITY_CLASS_TRIATHLETE 0x27
+#define FACILITY_CLASS_TRIATHLETE_2 0x28
+#define FACILITY_CLASS_TRIATHLETE_3 0x29
+#define FACILITY_CLASS_TRIATHLETE_4 0x2A
+#define FACILITY_CLASS_TRIATHLETE_5 0x2B
+#define FACILITY_CLASS_TRIATHLETE_6 0x2C
+#define FACILITY_CLASS_DRAGON_TAMER 0x2D
+#define FACILITY_CLASS_BIRD_KEEPER 0x2E
+#define FACILITY_CLASS_NINJA_BOY 0x2F
+#define FACILITY_CLASS_BATTLE_GIRL 0x30
+#define FACILITY_CLASS_PARASOL_LADY 0x31
+#define FACILITY_CLASS_SWIMMER_FEMALE 0x32
+#define FACILITY_CLASS_PICNICKER 0x33
+#define FACILITY_CLASS_TWINS 0x34
+#define FACILITY_CLASS_SAILOR 0x35
+#define FACILITY_CLASS_BOARDER 0x36
+#define FACILITY_CLASS_BOARDER_2 0x37
+#define FACILITY_CLASS_COLLECTOR 0x38
+#define FACILITY_CLASS_PKMN_TRAINER 0x39
+#define FACILITY_CLASS_PKMN_TRAINER_2 0x3A
+#define FACILITY_CLASS_PKMN_TRAINER_3 0x3B
+#define FACILITY_CLASS_PKMN_TRAINER_4 0x3C
+#define FACILITY_CLASS_PKMN_TRAINER_5 0x3D
+#define FACILITY_CLASS_PKMN_TRAINER_6 0x3E
+#define FACILITY_CLASS_PKMN_TRAINER_7 0x3F
+#define FACILITY_CLASS_PKMN_BREEDER 0x40
+#define FACILITY_CLASS_PKMN_BREEDER_2 0x41
+#define FACILITY_CLASS_PKMN_RANGER 0x42
+#define FACILITY_CLASS_PKMN_RANGER_2 0x43
+#define FACILITY_CLASS_MAGMA_LEADER 0x44
+#define FACILITY_CLASS_TEAM_MAGMA 0x45
+#define FACILITY_CLASS_TEAM_MAGMA_2 0x46
+#define FACILITY_CLASS_LASS 0x47
+#define FACILITY_CLASS_BUG_CATCHER 0x48
+#define FACILITY_CLASS_HIKER 0x49
+#define FACILITY_CLASS_YOUNG_COUPLE 0x4A
+#define FACILITY_CLASS_OLD_COUPLE 0x4B
+#define FACILITY_CLASS_SIS_AND_BRO 0x4C
+#define FACILITY_CLASS_AQUA_ADMIN 0x4D
+#define FACILITY_CLASS_AQUA_ADMIN_2 0x4E
+#define FACILITY_CLASS_MAGMA_ADMIN 0x4F
+#define FACILITY_CLASS_MAGMA_ADMIN_2 0x50
+#define FACILITY_CLASS_LEADER_4 0x51
+#define FACILITY_CLASS_LEADER_5 0x52
+#define FACILITY_CLASS_LEADER_6 0x53
+#define FACILITY_CLASS_LEADER_7 0x54
+#define FACILITY_CLASS_LEADER_8 0x55
+#define FACILITY_CLASS_ELITE_FOUR_3 0x56
+#define FACILITY_CLASS_ELITE_FOUR_4 0x57
+#define FACILITY_CLASS_YOUNGSTER_2 0x58
+#define FACILITY_CLASS_BUG_CATCHER_2 0x59
+#define FACILITY_CLASS_LASS_2 0x5A
+#define FACILITY_CLASS_SAILOR_2 0x5B
+#define FACILITY_CLASS_CAMPER_2 0x5C
+#define FACILITY_CLASS_PICNICKER_2 0x5D
+#define FACILITY_CLASS_POKEMANIAC_2 0x5E
+#define FACILITY_CLASS_SUPER_NERD 0x5F
+#define FACILITY_CLASS_HIKER_2 0x60
+#define FACILITY_CLASS_BIKER 0x61
+#define FACILITY_CLASS_BURGLAR 0x62
+#define FACILITY_CLASS_ENGINEER 0x63
+#define FACILITY_CLASS_FISHERMAN_2 0x64
+#define FACILITY_CLASS_SWIMMER_MALE_2 0x65
+#define FACILITY_CLASS_CUE_BALL 0x66
+#define FACILITY_CLASS_GAMER 0x67
+#define FACILITY_CLASS_BEAUTY_2 0x68
+#define FACILITY_CLASS_SWIMMER_FEMALE_2 0x69
+#define FACILITY_CLASS_PSYCHIC_3 0x6A
+#define FACILITY_CLASS_ROCKER 0x6B
+#define FACILITY_CLASS_JUGGLER 0x6C
+#define FACILITY_CLASS_TAMER 0x6D
+#define FACILITY_CLASS_BIRD_KEEPER_2 0x6E
+#define FACILITY_CLASS_BLACK_BELT_2 0x6F
+#define FACILITY_CLASS_RIVAL 0x70
+#define FACILITY_CLASS_SCIENTIST 0x71
+#define FACILITY_CLASS_BOSS 0x72
+#define FACILITY_CLASS_TEAM_ROCKET 0x73
+#define FACILITY_CLASS_COOLTRAINER_3 0x74
+#define FACILITY_CLASS_COOLTRAINER_4 0x75
+#define FACILITY_CLASS_ELITE_FOUR_5 0x76
+#define FACILITY_CLASS_ELITE_FOUR_6 0x77
+#define FACILITY_CLASS_LEADER_9 0x78
+#define FACILITY_CLASS_LEADER_10 0x79
+#define FACILITY_CLASS_GENTLEMAN_2 0x7A
+#define FACILITY_CLASS_RIVAL_2 0x7B
+#define FACILITY_CLASS_CHAMPION_2 0x7C
+#define FACILITY_CLASS_CHANNELER 0x7D
+#define FACILITY_CLASS_TWINS_2 0x7E
+#define FACILITY_CLASS_COOL_COUPLE 0x7F
+#define FACILITY_CLASS_YOUNG_COUPLE_2 0x80
+#define FACILITY_CLASS_CRUSH_KIN 0x81
+#define FACILITY_CLASS_SIS_AND_BRO_2 0x82
+#define FACILITY_CLASS_PKMN_PROF 0x83
+#define FACILITY_CLASS_PLAYER 0x84
+#define FACILITY_CLASS_PLAYER_2 0x85
+#define FACILITY_CLASS_PLAYER_3 0x86
+#define FACILITY_CLASS_PLAYER_4 0x87
+#define FACILITY_CLASS_TEAM_ROCKET_2 0x88
+#define FACILITY_CLASS_PSYCHIC_4 0x89
+#define FACILITY_CLASS_CRUSH_GIRL 0x8A
+#define FACILITY_CLASS_TUBER_3 0x8B
+#define FACILITY_CLASS_PKMN_BREEDER_3 0x8C
+#define FACILITY_CLASS_PKMN_RANGER_3 0x8D
+#define FACILITY_CLASS_PKMN_RANGER_4 0x8E
+#define FACILITY_CLASS_AROMA_LADY_2 0x8F
+#define FACILITY_CLASS_RUIN_MANIAC_2 0x90
+#define FACILITY_CLASS_LADY_2 0x91
+#define FACILITY_CLASS_PAINTER 0x92
+#define FACILITY_CLASS_ELITE_FOUR_7 0x93
+#define FACILITY_CLASS_ELITE_FOUR_8 0x94
+#define FACILITY_CLASS_CHAMPION_3 0x95
+
+#endif //GUARD_CONSTANTS_FACILITY_TRAINER_CLASSES_H
diff --git a/include/constants/flags.h b/include/constants/flags.h
index ea2d7d8bc..daa8b3132 100644
--- a/include/constants/flags.h
+++ b/include/constants/flags.h
@@ -1002,6 +1002,8 @@
#define FLAG_0x3E5 0x3E5
#define FLAG_0x3E6 0x3E6
#define FLAG_0x3E7 0x3E7
+
+#define FLAG_TRAINER_TOWER_START 1000 // 0x3E8
#define FLAG_0x3E8 0x3E8
#define FLAG_0x3E9 0x3E9
#define FLAG_0x3EA 0x3EA
diff --git a/include/constants/region_map.h b/include/constants/region_map.h
new file mode 100644
index 000000000..87203f538
--- /dev/null
+++ b/include/constants/region_map.h
@@ -0,0 +1,115 @@
+#ifndef GUARD_CONSTANTS_REGION_MAP_H
+#define GUARD_CONSTANTS_REGION_MAP_H
+
+#define MAPSEC_PALLET_TOWN 0x0
+#define MAPSEC_VIRIDIAN_CITY 0x1
+#define MAPSEC_PEWTER_CITY 0x2
+#define MAPSEC_CERULEAN_CITY 0x3
+#define MAPSEC_LAVENDER_TOWN 0x4
+#define MAPSEC_VERMILION_CITY 0x5
+#define MAPSEC_CELADON_CITY 0x6
+#define MAPSEC_FUCHSIA_CITY 0x7
+#define MAPSEC_CINNABAR_ISLAND 0x8
+#define MAPSEC_INDIGO_PLATEAU 0x9
+#define MAPSEC_SAFFRON_CITY 0xA
+#define MAPSEC_ROUTE_4 0xB
+#define MAPSEC_ROUTE_10 0xC
+#define MAPSEC_ROUTE_1 0xD
+#define MAPSEC_ROUTE_2 0xE
+#define MAPSEC_ROUTE_3 0xF
+#define MAPSEC_ROUTE_4_2 0x10
+#define MAPSEC_ROUTE_5 0x11
+#define MAPSEC_ROUTE_6 0x12
+#define MAPSEC_ROUTE_7 0x13
+#define MAPSEC_ROUTE_8 0x14
+#define MAPSEC_ROUTE_9 0x15
+#define MAPSEC_ROUTE_10_2 0x16
+#define MAPSEC_ROUTE_11 0x17
+#define MAPSEC_ROUTE_12 0x18
+#define MAPSEC_ROUTE_13 0x19
+#define MAPSEC_ROUTE_14 0x1A
+#define MAPSEC_ROUTE_15 0x1B
+#define MAPSEC_ROUTE_16 0x1C
+#define MAPSEC_ROUTE_17 0x1D
+#define MAPSEC_ROUTE_18 0x1E
+#define MAPSEC_ROUTE_19 0x1F
+#define MAPSEC_ROUTE_20 0x20
+#define MAPSEC_ROUTE_21 0x21
+#define MAPSEC_ROUTE_22 0x22
+#define MAPSEC_ROUTE_23 0x23
+#define MAPSEC_ROUTE_24 0x24
+#define MAPSEC_ROUTE_25 0x25
+#define MAPSEC_VIRIDIAN_FOREST 0x26
+#define MAPSEC_MT_MOON 0x27
+#define MAPSEC_S_S_ANNE 0x28
+#define MAPSEC_UNDERGROUND_PATH 0x29
+#define MAPSEC_UNDERGROUND_PATH_2 0x2A
+#define MAPSEC_DIGLETTS_CAVE 0x2B
+#define MAPSEC_KANTO_VICTORY_ROAD 0x2C
+#define MAPSEC_ROCKET_HIDEOUT 0x2D
+#define MAPSEC_SILPH_CO 0x2E
+#define MAPSEC_POKEMON_MANSION 0x2F
+#define MAPSEC_KANTO_SAFARI_ZONE 0x30
+#define MAPSEC_POKEMON_LEAGUE 0x31
+#define MAPSEC_ROCK_TUNNEL 0x32
+#define MAPSEC_SEAFOAM_ISLANDS 0x33
+#define MAPSEC_POKEMON_TOWER 0x34
+#define MAPSEC_CERULEAN_CAVE 0x35
+#define MAPSEC_POWER_PLANT 0x36
+#define MAPSEC_ONE_ISLAND 0x37
+#define MAPSEC_TWO_ISLAND 0x38
+#define MAPSEC_THREE_ISLAND 0x39
+#define MAPSEC_FOUR_ISLAND 0x3A
+#define MAPSEC_FIVE_ISLAND 0x3B
+#define MAPSEC_SEVEN_ISLAND 0x3C
+#define MAPSEC_SIX_ISLAND 0x3D
+#define MAPSEC_KINDLE_ROAD 0x3E
+#define MAPSEC_TREASURE_BEACH 0x3F
+#define MAPSEC_CAPE_BRINK 0x40
+#define MAPSEC_BOND_BRIDGE 0x41
+#define MAPSEC_THREE_ISLE_PORT 0x42
+#define MAPSEC_SEVII_ISLE_6 0x43
+#define MAPSEC_SEVII_ISLE_7 0x44
+#define MAPSEC_SEVII_ISLE_8 0x45
+#define MAPSEC_SEVII_ISLE_9 0x46
+#define MAPSEC_RESORT_GORGEOUS 0x47
+#define MAPSEC_WATER_LABYRINTH 0x48
+#define MAPSEC_FIVE_ISLE_MEADOW 0x49
+#define MAPSEC_MEMORIAL_PILLAR 0x4A
+#define MAPSEC_OUTCAST_ISLAND 0x4B
+#define MAPSEC_GREEN_PATH 0x4C
+#define MAPSEC_WATER_PATH 0x4D
+#define MAPSEC_RUIN_VALLEY 0x4E
+#define MAPSEC_TRAINER_TOWER 0x4F
+#define MAPSEC_CANYON_ENTRANCE 0x50
+#define MAPSEC_SEVAULT_CANYON 0x51
+#define MAPSEC_TANOBY_RUINS 0x52
+#define MAPSEC_SEVII_ISLE_22 0x53
+#define MAPSEC_SEVII_ISLE_23 0x54
+#define MAPSEC_SEVII_ISLE_24 0x55
+#define MAPSEC_NAVEL_ROCK 0x56
+#define MAPSEC_MT_EMBER 0x57
+#define MAPSEC_BERRY_FOREST 0x58
+#define MAPSEC_ICEFALL_CAVE 0x59
+#define MAPSEC_ROCKET_WAREHOUSE 0x5A
+#define MAPSEC_TRAINER_TOWER_2 0x5B
+#define MAPSEC_DOTTED_HOLE 0x5C
+#define MAPSEC_LOST_CAVE 0x5D
+#define MAPSEC_PATTERN_BUSH 0x5E
+#define MAPSEC_ALTERING_CAVE 0x5F
+#define MAPSEC_TANOBY_CHAMBERS 0x60
+#define MAPSEC_THREE_ISLE_PATH 0x61
+#define MAPSEC_TANOBY_KEY 0x62
+#define MAPSEC_BIRTH_ISLAND 0x63
+#define MAPSEC_MONEAN_CHAMBER 0x64
+#define MAPSEC_LIPTOO_CHAMBER 0x65
+#define MAPSEC_WEEPTH_CHAMBER 0x66
+#define MAPSEC_DILFORD_CHAMBER 0x67
+#define MAPSEC_SCUFIB_CHAMBER 0x68
+#define MAPSEC_RIXY_CHAMBER 0x69
+#define MAPSEC_VIAPOIS_CHAMBER 0x6A
+#define MAPSEC_EMBER_SPA 0x6B
+#define MAPSEC_CELADON_DEPT 0x6C
+#define MAPSEC_NONE 0x6D
+
+#endif //GUARD_CONSTANTS_REGION_MAP_H
diff --git a/include/constants/trainer_classes.h b/include/constants/trainer_classes.h
new file mode 100644
index 000000000..f0c6d4123
--- /dev/null
+++ b/include/constants/trainer_classes.h
@@ -0,0 +1,112 @@
+#ifndef GUARD_TRAINER_CLASSES_H
+#define GUARD_TRAINER_CLASSES_H
+
+#define CLASS_PKMN_TRAINER 0x00
+#define CLASS_PKMN_TRAINER_2 0x01
+#define CLASS_AQUA_LEADER 0x02
+#define CLASS_TEAM_AQUA 0x03
+#define CLASS_AROMA_LADY 0x04
+#define CLASS_RUIN_MANIAC 0x05
+#define CLASS_INTERVIEWER 0x06
+#define CLASS_TUBER 0x07
+#define CLASS_TUBER_2 0x08
+#define CLASS_COOLTRAINER 0x09
+#define CLASS_HEX_MANIAC 0x0A
+#define CLASS_LADY 0x0B
+#define CLASS_BEAUTY 0x0C
+#define CLASS_RICH_BOY 0x0D
+#define CLASS_POKEMANIAC 0x0E
+#define CLASS_SWIMMER_MALE 0x0F
+#define CLASS_BLACK_BELT 0x10
+#define CLASS_GUITARIST 0x11
+#define CLASS_KINDLER 0x12
+#define CLASS_CAMPER 0x13
+#define CLASS_BUG_MANIAC 0x14
+#define CLASS_PSYCHIC 0x15
+#define CLASS_GENTLEMAN 0x16
+#define CLASS_ELITE_FOUR 0x17
+#define CLASS_LEADER 0x18
+#define CLASS_SCHOOL_KID 0x19
+#define CLASS_SR_AND_JR 0x1A
+#define CLASS_POKEFAN 0x1B
+#define CLASS_EXPERT 0x1C
+#define CLASS_YOUNGSTER 0x1D
+#define CLASS_CHAMPION 0x1E
+#define CLASS_FISHERMAN 0x1F
+#define CLASS_TRIATHLETE 0x20
+#define CLASS_DRAGON_TAMER 0x21
+#define CLASS_BIRD_KEEPER 0x22
+#define CLASS_NINJA_BOY 0x23
+#define CLASS_BATTLE_GIRL 0x24
+#define CLASS_PARASOL_LADY 0x25
+#define CLASS_SWIMMER_FEMALE 0x26
+#define CLASS_PICNICKER 0x27
+#define CLASS_TWINS 0x28
+#define CLASS_SAILOR 0x29
+#define CLASS_BOARDER 0x2A
+#define CLASS_COLLECTOR 0x2B
+#define CLASS_PKMN_TRAINER_3 0x2C
+#define CLASS_PKMN_BREEDER 0x2D
+#define CLASS_PKMN_RANGER 0x2E
+#define CLASS_MAGMA_LEADER 0x2F
+#define CLASS_TEAM_MAGMA 0x30
+#define CLASS_LASS 0x31
+#define CLASS_BUG_CATCHER 0x32
+#define CLASS_HIKER 0x33
+#define CLASS_YOUNG_COUPLE 0x34
+#define CLASS_OLD_COUPLE 0x35
+#define CLASS_SIS_AND_BRO 0x36
+#define CLASS_AQUA_ADMIN 0x37
+#define CLASS_MAGMA_ADMIN 0x38
+#define CLASS_YOUNGSTER_2 0x39
+#define CLASS_BUG_CATCHER_2 0x3A
+#define CLASS_LASS_2 0x3B
+#define CLASS_SAILOR_2 0x3C
+#define CLASS_CAMPER_2 0x3D
+#define CLASS_PICNICKER_2 0x3E
+#define CLASS_POKEMANIAC_2 0x3F
+#define CLASS_SUPER_NERD 0x40
+#define CLASS_HIKER_2 0x41
+#define CLASS_BIKER 0x42
+#define CLASS_BURGLAR 0x43
+#define CLASS_ENGINEER 0x44
+#define CLASS_FISHERMAN_2 0x45
+#define CLASS_SWIMMER_MALE_2 0x46
+#define CLASS_CUE_BALL 0x47
+#define CLASS_GAMER 0x48
+#define CLASS_BEAUTY_2 0x49
+#define CLASS_SWIMMER_FEMALE_2 0x4A
+#define CLASS_PSYCHIC_2 0x4B
+#define CLASS_ROCKER 0x4C
+#define CLASS_JUGGLER 0x4D
+#define CLASS_TAMER 0x4E
+#define CLASS_BIRD_KEEPER_2 0x4F
+#define CLASS_BLACK_BELT_2 0x50
+#define CLASS_RIVAL 0x51
+#define CLASS_SCIENTIST 0x52
+#define CLASS_BOSS 0x53
+#define CLASS_LEADER_2 0x54
+#define CLASS_TEAM_ROCKET 0x55
+#define CLASS_COOLTRAINER_2 0x56
+#define CLASS_ELITE_FOUR_2 0x57
+#define CLASS_GENTLEMAN_2 0x58
+#define CLASS_RIVAL_2 0x59
+#define CLASS_CHAMPION_2 0x5A
+#define CLASS_CHANNELER 0x5B
+#define CLASS_TWINS_2 0x5C
+#define CLASS_COOL_COUPLE 0x5D
+#define CLASS_YOUNG_COUPLE_2 0x5E
+#define CLASS_CRUSH_KIN 0x5F
+#define CLASS_SIS_AND_BRO_2 0x60
+#define CLASS_PKMN_PROF 0x61
+#define CLASS_PLAYER 0x62
+#define CLASS_CRUSH_GIRL 0x63
+#define CLASS_TUBER_3 0x64
+#define CLASS_PKMN_BREEDER_2 0x65
+#define CLASS_PKMN_RANGER_2 0x66
+#define CLASS_AROMA_LADY_2 0x67
+#define CLASS_RUIN_MANIAC_2 0x68
+#define CLASS_LADY_2 0x69
+#define CLASS_PAINTER 0x6A
+
+#endif // GUARD_TRAINER_CLASSES_H
diff --git a/include/constants/vars.h b/include/constants/vars.h
index c9340a3b4..886bae93c 100644
--- a/include/constants/vars.h
+++ b/include/constants/vars.h
@@ -38,7 +38,7 @@
#define VAR_RECYCLE_GOODS 0x4020
#define VAR_REPEL_STEP_COUNT 0x4021
#define VAR_ICE_STEP_COUNT 0x4022
-#define VAR_FIRST_POKE 0x4023
+#define VAR_0x4023 0x4023
#define VAR_MIRAGE_RND_H 0x4024
#define VAR_MIRAGE_RND_L 0x4025
#define VAR_SECRET_BASE_MAP 0x4026
diff --git a/include/global.h b/include/global.h
index c47bd2d15..858d95831 100644
--- a/include/global.h
+++ b/include/global.h
@@ -94,7 +94,7 @@ enum LanguageId {
LANGUAGE_ITALIAN = 4,
LANGUAGE_GERMAN = 5,
// 6 goes unused but the theory is it was meant to be Korean
- LANGUAGE_SPANISH = 7,
+ LANGUAGE_SPANISH = 7,
};
#define GAME_LANGUAGE (LANGUAGE_ENGLISH)
@@ -228,17 +228,44 @@ struct BerryCrush
struct LinkBattleRecord
{
- u8 name[PLAYER_NAME_LENGTH];
- u16 trainerId;
- u16 wins;
- u16 losses;
- u16 draws;
+ u8 name[PLAYER_NAME_LENGTH];
+ u16 trainerId;
+ u16 wins;
+ u16 losses;
+ u16 draws;
};
struct LinkBattleRecords
{
- struct LinkBattleRecord entries[LINK_B_RECORDS_COUNT];
- u8 languages[LINK_B_RECORDS_COUNT];
+ struct LinkBattleRecord entries[LINK_B_RECORDS_COUNT];
+ u8 languages[LINK_B_RECORDS_COUNT];
+};
+
+struct BattleTowerPokemon
+{
+ u16 species;
+ u16 heldItem;
+ u16 moves[4];
+ u8 level;
+ u8 ppBonuses;
+ u8 hpEV;
+ u8 attackEV;
+ u8 defenseEV;
+ u8 speedEV;
+ u8 spAttackEV;
+ u8 spDefenseEV;
+ u32 otId;
+ u32 hpIV:5;
+ u32 attackIV:5;
+ u32 defenseIV:5;
+ u32 speedIV:5;
+ u32 spAttackIV:5;
+ u32 spDefenseIV:5;
+ u32 gap:1;
+ u32 altAbility:1;
+ u32 personality;
+ u8 nickname[POKEMON_NAME_LENGTH + 1];
+ u8 friendship;
};
struct UnknownSaveBlock2Struct
@@ -263,17 +290,17 @@ struct UnknownSaveBlock2Struct
struct UnkSaveBlock2Substruct_55C
{
- /* 0x000:0x55C */ u8 unk_00_0:1;
- u8 unk_00_1:1;
- /* 0x001:0x55D */ u8 unk_01;
- /* 0x002:0x55E */ u8 unk_02[2];
- /* 0x004:0x560 */ u16 unk_04[2];
- /* 0x008:0x564 */ u16 unk_08[2];
- /* 0x00C:0x568 */ u16 unk_0C[2];
- /* 0x010:0x56C */ u8 unk_10;
- /* 0x011:0x56D */ u8 unk_11[3];
- /* 0x014:0x570 */ u16 unk_14;
- /* 0x016:0x572 */ u8 unk_16;
+ /* 0x000:0x55C */ u8 unk_00_0:1;
+ u8 unk_00_1:1;
+ /* 0x001:0x55D */ u8 unk_01;
+ /* 0x002:0x55E */ u8 unk_02[2];
+ /* 0x004:0x560 */ u16 unk_04[2];
+ /* 0x008:0x564 */ u16 unk_08[2];
+ /* 0x00C:0x568 */ u16 unk_0C[2];
+ /* 0x010:0x56C */ u8 unk_10;
+ /* 0x011:0x56D */ u8 unk_11[3];
+ /* 0x014:0x570 */ u16 unk_14;
+ /* 0x016:0x572 */ u8 unk_16;
}; // size: 0x018
struct SaveBlock2
@@ -288,11 +315,11 @@ struct SaveBlock2
/*0x012*/ u8 playTimeVBlanks;
/*0x013*/ u8 optionsButtonMode; // OPTIONS_BUTTON_MODE_[NORMAL/LR/L_EQUALS_A]
/*0x014*/ u16 optionsTextSpeed:3; // OPTIONS_TEXT_SPEED_[SLOW/MID/FAST]
- u16 optionsWindowFrameType:5; // Specifies one of the 20 decorative borders for text boxes
- u16 optionsSound:1; // OPTIONS_SOUND_[MONO/STEREO]
- u16 optionsBattleStyle:1; // OPTIONS_BATTLE_STYLE_[SHIFT/SET]
- u16 optionsBattleSceneOff:1; // whether battle animations are disabled
- u16 regionMapZoom:1; // whether the map is zoomed in
+ u16 optionsWindowFrameType:5; // Specifies one of the 20 decorative borders for text boxes
+ u16 optionsSound:1; // OPTIONS_SOUND_[MONO/STEREO]
+ u16 optionsBattleStyle:1; // OPTIONS_BATTLE_STYLE_[SHIFT/SET]
+ u16 optionsBattleSceneOff:1; // whether battle animations are disabled
+ u16 regionMapZoom:1; // whether the map is zoomed in
/*0x018*/ struct Pokedex pokedex;
/*0x090*/ u8 filler_90[0x8];
/*0x098*/ struct Time localTimeOffset;
@@ -422,14 +449,14 @@ struct MailStruct
struct UnkMauvilleOldManStruct
{
- u8 unk_2D94;
- u8 unk_2D95;
+ u8 unk_2D94;
+ u8 unk_2D95;
/*0x2D96*/ u16 mauvilleOldMan_ecArray[6];
/*0x2DA2*/ u16 mauvilleOldMan_ecArray2[6];
/*0x2DAE*/ u8 playerName[8];
/*0x2DB6*/ u8 filler_2DB6[0x3];
/*0x2DB9*/ u8 playerTrainerId[4];
- u8 unk_2DBD;
+ u8 unk_2DBD;
}; /*size = 0x2C*/
struct UnkMauvilleOldManStruct2
@@ -578,8 +605,8 @@ union QuestLogMovement
{
u16 ident_raw;
struct {
- u16 ident:12;
- u16 flags:4;
+ u16 ident:12;
+ u16 flags:4;
} ident_struct;
};
@@ -606,9 +633,9 @@ struct QuestLog
struct FameCheckerSaveData
{
- /*3a54*/ u16 pickState:2;
- u16 flavorTextFlags:12;
- u16 unk_0_E:2;
+ /*3a54*/ u16 pickState:2;
+ u16 flavorTextFlags:12;
+ u16 unk_0_E:2;
};
#define MAP_OBJECTS_COUNT 16
@@ -622,64 +649,64 @@ struct FameCheckerSaveData
struct MEventBuffer_3120_Sub
{
- u16 unk_00;
- u8 unk_02;
- u8 unk_03;
- u8 unk_04[40];
- u8 unk_2C[10][40];
+ u16 unk_00;
+ u8 unk_02;
+ u8 unk_03;
+ u8 unk_04[40];
+ u8 unk_2C[10][40];
};
struct MEventBuffer_3120
{
- u32 crc;
- struct MEventBuffer_3120_Sub data;
+ u32 crc;
+ struct MEventBuffer_3120_Sub data;
};
struct MEventBuffer_32E0_Sub
{
- u16 unk_00;
- u16 unk_02;
- u32 unk_04;
- u8 unk_08_0:2;
- u8 unk_08_2:4;
- u8 unk_08_6:2;
- u8 unk_09;
- u8 unk_0A[40];
- u8 unk_32[40];
- u8 unk_5A[4][40];
- u8 unk_FA[40];
- u8 unk_122[40];
+ u16 unk_00;
+ u16 unk_02;
+ u32 unk_04;
+ u8 unk_08_0:2;
+ u8 unk_08_2:4;
+ u8 unk_08_6:2;
+ u8 unk_09;
+ u8 unk_0A[40];
+ u8 unk_32[40];
+ u8 unk_5A[4][40];
+ u8 unk_FA[40];
+ u8 unk_122[40];
};
struct MEventBuffer_32E0
{
- u32 crc;
- struct MEventBuffer_32E0_Sub data;
+ u32 crc;
+ struct MEventBuffer_32E0_Sub data;
};
struct MEventBuffer_3430_Sub
{
- u16 unk_00;
- u16 unk_02;
- u16 unk_04;
- u16 unk_06;
- u16 unk_08[2][7];
+ u16 unk_00;
+ u16 unk_02;
+ u16 unk_04;
+ u16 unk_06;
+ u16 unk_08[2][7];
};
struct MEventBuffer_3430
{
- u32 crc;
- struct MEventBuffer_3430_Sub data;
+ u32 crc;
+ struct MEventBuffer_3430_Sub data;
};
struct MEventBuffers
{
- /*0x000 0x3120*/ struct MEventBuffer_3120 buffer_000;
- /*0x1c0 0x32e0*/ struct MEventBuffer_32E0 buffer_1c0;
- /*0x310 0x3430*/ struct MEventBuffer_3430 buffer_310;
- /*0x338 0x3458*/ u16 unk_338[4];
- /*0x340 0x3460*/ struct MysteryEventStruct unk_340;
- /*0x344 0x3464*/ u32 unk_344[2][5];
+ /*0x000 0x3120*/ struct MEventBuffer_3120 buffer_000;
+ /*0x1c0 0x32e0*/ struct MEventBuffer_32E0 buffer_1c0;
+ /*0x310 0x3430*/ struct MEventBuffer_3430 buffer_310;
+ /*0x338 0x3458*/ u16 unk_338[4];
+ /*0x340 0x3460*/ struct MysteryEventStruct unk_340;
+ /*0x344 0x3464*/ u32 unk_344[2][5];
}; // 0x36C 0x348C
struct SaveBlock1
@@ -707,8 +734,8 @@ struct SaveBlock1
/*0x0464*/ struct ItemSlot bagPocket_TMHM[BAG_TMHM_COUNT];
/*0x054c*/ struct ItemSlot bagPocket_Berries[BAG_BERRIES_COUNT];
/*0x05F8*/ u8 seen1[DEX_FLAGS_NO];
- /*0x062C*/ u16 berryBlenderRecords[3]; // unused
- /*0x0632*/ u8 field_632[6]; // unused?
+ /*0x062C*/ u16 berryBlenderRecords[3]; // unused
+ /*0x0632*/ u8 field_632[6]; // unused?
/*0x0638*/ u8 trainerRematchStepCounter;
/*0x063A*/ u8 ALIGNED(2) trainerRematches[100];
/*0x06A0*/ struct MapObject mapObjects[MAP_OBJECTS_COUNT];
@@ -717,10 +744,10 @@ struct SaveBlock1
/*0x1000*/ u16 vars[VARS_COUNT];
/*0x1200*/ u32 gameStats[NUM_GAME_STATS];
/*0x1300*/ struct QuestLog questLog[4];
- /*0x2CA0*/ u16 unk2CA0[6];
- /*0x2CAC*/ u16 unk2CAC[6];
- /*0x2CB8*/ u16 unk2CB8[6];
- /*0x2CC4*/ u16 unk2CC4[6];
+ /*0x2CA0*/ u16 unk2CA0[6];
+ /*0x2CAC*/ u16 unk2CAC[6];
+ /*0x2CB8*/ u16 unk2CB8[6];
+ /*0x2CC4*/ u16 unk2CC4[6];
/*0x2CD0*/ struct MailStruct mail[MAIL_COUNT];
/*0x2F10*/ u8 additionalPhrases[EASY_CHAT_EXTRA_PHRASES_SIZE];
/*0x2F18*/ OldMan oldMan; // unused
@@ -737,8 +764,9 @@ struct SaveBlock1
/*0x3A48*/ u8 filler_3a48[4];
/*0x3A4C*/ u8 rivalName[PLAYER_NAME_LENGTH];
/*0x3A54*/ struct FameCheckerSaveData fameChecker[NUM_FAMECHECKER_PERSONS];
- /*0x3A94*/ u8 filler3A94[0x2A4];
- u32 unkArray[4][3];
+ /*0x3A94*/ u8 filler3A94[0x2A0];
+ /*0x3D34*/ u32 unkArrayIdx;
+ /*0x3D38*/ u32 unkArray[4][3];
};
extern struct SaveBlock1* gSaveBlock1Ptr;
diff --git a/include/main.h b/include/main.h
index adbf1fb5d..3fb254c95 100644
--- a/include/main.h
+++ b/include/main.h
@@ -65,6 +65,7 @@ void InitFlashTimer(void);
void DoSoftReset(void);
void ClearPokemonCrySongs(void);
void RestoreSerialTimer3IntrHandlers(void);
+void SetVBlankCounter1Ptr(u32 *ptr);
extern const char RomHeaderGameCode[4];
extern const char RomHeaderSoftwareVersion;
diff --git a/include/overworld.h b/include/overworld.h
index 8cae07bdc..50ac09d9e 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -81,6 +81,8 @@ void sub_8055DC4(void);
u8 sav1_map_get_name(void);
+void sub_8055D40(u16 mapDataId);
+
extern u8 gUnknown_2031DD8;
extern u8 gUnknown_2036E28;
diff --git a/include/region_map.h b/include/region_map.h
index 12181ae5f..ea8a8130e 100644
--- a/include/region_map.h
+++ b/include/region_map.h
@@ -7,119 +7,6 @@
// Exported type declarations
-enum {
- MAPSEC_PALLET_TOWN,
- MAPSEC_VIRIDIAN_CITY,
- MAPSEC_PEWTER_CITY,
- MAPSEC_CERULEAN_CITY,
- MAPSEC_LAVENDER_TOWN,
- MAPSEC_VERMILION_CITY,
- MAPSEC_CELADON_CITY,
- MAPSEC_FUCHSIA_CITY,
- MAPSEC_CINNABAR_ISLAND,
- MAPSEC_INDIGO_PLATEAU,
- MAPSEC_SAFFRON_CITY,
- MAPSEC_ROUTE_4,
- MAPSEC_ROUTE_10,
- MAPSEC_ROUTE_1,
- MAPSEC_ROUTE_2,
- MAPSEC_ROUTE_3,
- MAPSEC_ROUTE_4_2,
- MAPSEC_ROUTE_5,
- MAPSEC_ROUTE_6,
- MAPSEC_ROUTE_7,
- MAPSEC_ROUTE_8,
- MAPSEC_ROUTE_9,
- MAPSEC_ROUTE_10_2,
- MAPSEC_ROUTE_11,
- MAPSEC_ROUTE_12,
- MAPSEC_ROUTE_13,
- MAPSEC_ROUTE_14,
- MAPSEC_ROUTE_15,
- MAPSEC_ROUTE_16,
- MAPSEC_ROUTE_17,
- MAPSEC_ROUTE_18,
- MAPSEC_ROUTE_19,
- MAPSEC_ROUTE_20,
- MAPSEC_ROUTE_21,
- MAPSEC_ROUTE_22,
- MAPSEC_ROUTE_23,
- MAPSEC_ROUTE_24,
- MAPSEC_ROUTE_25,
- MAPSEC_VIRIDIAN_FOREST,
- MAPSEC_MT_MOON,
- MAPSEC_S_S_ANNE,
- MAPSEC_UNDERGROUND_PATH,
- MAPSEC_UNDERGROUND_PATH_2,
- MAPSEC_DIGLETTS_CAVE,
- MAPSEC_KANTO_VICTORY_ROAD,
- MAPSEC_ROCKET_HIDEOUT,
- MAPSEC_SILPH_CO,
- MAPSEC_POKEMON_MANSION,
- MAPSEC_KANTO_SAFARI_ZONE,
- MAPSEC_POKEMON_LEAGUE,
- MAPSEC_ROCK_TUNNEL,
- MAPSEC_SEAFOAM_ISLANDS,
- MAPSEC_POKEMON_TOWER,
- MAPSEC_CERULEAN_CAVE,
- MAPSEC_POWER_PLANT,
- MAPSEC_ONE_ISLAND,
- MAPSEC_TWO_ISLAND,
- MAPSEC_THREE_ISLAND,
- MAPSEC_FOUR_ISLAND,
- MAPSEC_FIVE_ISLAND,
- MAPSEC_SEVEN_ISLAND,
- MAPSEC_SIX_ISLAND,
- MAPSEC_KINDLE_ROAD,
- MAPSEC_TREASURE_BEACH,
- MAPSEC_CAPE_BRINK,
- MAPSEC_BOND_BRIDGE,
- MAPSEC_THREE_ISLE_PORT,
- MAPSEC_SEVII_ISLE_6,
- MAPSEC_SEVII_ISLE_7,
- MAPSEC_SEVII_ISLE_8,
- MAPSEC_SEVII_ISLE_9,
- MAPSEC_RESORT_GORGEOUS,
- MAPSEC_WATER_LABYRINTH,
- MAPSEC_FIVE_ISLE_MEADOW,
- MAPSEC_MEMORIAL_PILLAR,
- MAPSEC_OUTCAST_ISLAND,
- MAPSEC_GREEN_PATH,
- MAPSEC_WATER_PATH,
- MAPSEC_RUIN_VALLEY,
- MAPSEC_TRAINER_TOWER,
- MAPSEC_CANYON_ENTRANCE,
- MAPSEC_SEVAULT_CANYON,
- MAPSEC_TANOBY_RUINS,
- MAPSEC_SEVII_ISLE_22,
- MAPSEC_SEVII_ISLE_23,
- MAPSEC_SEVII_ISLE_24,
- MAPSEC_NAVEL_ROCK,
- MAPSEC_MT_EMBER,
- MAPSEC_BERRY_FOREST,
- MAPSEC_ICEFALL_CAVE,
- MAPSEC_ROCKET_WAREHOUSE,
- MAPSEC_TRAINER_TOWER_2,
- MAPSEC_DOTTED_HOLE,
- MAPSEC_LOST_CAVE,
- MAPSEC_PATTERN_BUSH,
- MAPSEC_ALTERING_CAVE,
- MAPSEC_TANOBY_CHAMBERS,
- MAPSEC_THREE_ISLE_PATH,
- MAPSEC_TANOBY_KEY,
- MAPSEC_BIRTH_ISLAND,
- MAPSEC_MONEAN_CHAMBER,
- MAPSEC_LIPTOO_CHAMBER,
- MAPSEC_WEEPTH_CHAMBER,
- MAPSEC_DILFORD_CHAMBER,
- MAPSEC_SCUFIB_CHAMBER,
- MAPSEC_RIXY_CHAMBER,
- MAPSEC_VIAPOIS_CHAMBER,
- MAPSEC_EMBER_SPA,
- MAPSEC_CELADON_DEPT,
- MAPSEC_NONE
-};
-
enum
{
INPUT_EVENT_NONE,
diff --git a/include/trainer_classes.h b/include/trainer_classes.h
deleted file mode 100644
index aea2623d7..000000000
--- a/include/trainer_classes.h
+++ /dev/null
@@ -1,118 +0,0 @@
-#ifndef GUARD_TRAINER_CLASSES_H
-#define GUARD_TRAINER_CLASSES_H
-
-#include "global.h"
-
-enum
-{
- CLASS_PKMN_TRAINER0, // 0
- CLASS_PKMN_TRAINER1, // 1
- CLASS_AQUA_LEADER, // 2
- CLASS_TEAM_AQUA, // 3
- CLASS_AROMA_LADY, // 4
- CLASS_RUIN_MANIAC, // 5
- CLASS_INTERVIEWER, // 6
- CLASS_TUBER_FEMALE, // 7
- CLASS_TUBER_MALE, // 8
- CLASS_COOLTRAINER_2, // 9
- CLASS_HEX_MANIAC, // 0xA
- CLASS_LADY, // 0xB
- CLASS_BEAUTY, // 0xC
- CLASS_RICH_BOY, // 0xD
- CLASS_POKEMANIAC, // 0xE
- CLASS_SWIMMER_MALE, // 0xF
- CLASS_BLACK_BELT, // 0x10
- CLASS_GUITARIST, // 0x11
- CLASS_KINDLER, // 0x12
- CLASS_CAMPER, // 0x13
- CLASS_BUG_MANIAC, // 0x14
- CLASS_PSYCHIC, // 0x15
- CLASS_GENTLEMAN, // 0x16
- CLASS_ELITE_FOUR, // 0x17
- CLASS_LEADER, // 0x18
- CLASS_SCHOOL_KID, // 0x19
- CLASS_SCHOOL_SR_JR, // 0x1A
- CLASS_POKE_FAN, // 0x1B
- CLASS_EXPERT, // 0x1C
- CLASS_YOUNGSTER, // 0x1D
- CLASS_CHAMPION, // 0x1E
- CLASS_FISHERMAN, // 0x1F
- CLASS_TRIATHLETE, // 0x20
- CLASS_DRAGON_TAMER, // 0x21
- CLASS_BIRD_KEEPER, // 0x22
- CLASS_NINJA_BOY, // 0x23
- CLASS_BATTLE_GIRL, // 0x24
- CLASS_PARASOL_LADY, // 0x25
- CLASS_SWIMMER_FEMALE, // 0x26
- CLASS_PICKNICKER, // 0x27
- CLASS_TWINS, // 0x28
- CLASS_SAILOR, // 0x29
- CLASS_BOARDER, // 0x2A
- CLASS_COLLECTOR, // 0x2B
- CLASS_PKMN_TRAINER2, // 0x2C
- CLASS_PKMN_BREEDER, // 0x2D
- CLASS_PKMN_RANGER, // 0x2E
- CLASS_MAGMA_LEADER, // 0x2F
- CLASS_TEAM_MAGMA, // 0x30
- CLASS_LASS, // 0x31
- CLASS_BUG_CATCHER, // 0x32
- CLASS_HIKER, // 0x33
- CLASS_YOUNG_COUPLE, // 0x34
- CLASS_OLD_COUPLE, // 0x35
- CLASS_SIS_AND_BRO, // 0x36
- CLASS_AQUA_ADMIN, // 0x37
- CLASS_MAGMA_ADMIN, // 0x38
- CLASS_YOUNGSTER, // 0x39
- CLASS_BUG_CATCHER, // 0x3A
- CLASS_LASS, // 0x3B
- CLASS_SAILER, // 0x3C
- CLASS_CAMPER, // 0x3D
- CLASS_PICKNICKER, // 0x3E
- CLASS_POKEMANIAC, // 0x3F
- CLASS_SUPER_NERD, // 0x40
- CLASS_HIKER, // 0x41
- CLASS_BIKER, // 0x42
- CLASS_BURGLAR, // 0x43
- CLASS_ENGINEER, // 0x44
- CLASS_FISHERMAN, // 0x45
- CLASS_SWIMMER_MALE, // 0x46
- CLASS_CUE_BALL, // 0x47
- CLASS_GAMER, // 0x48
- CLASS_BEAUTY, // 0x49
- CLASS_SWIMMER_FEMALE, // 0x4A
- CLASS_PSYCHIC, // 0x4B
- CLASS_ROCKER, // 0x4C
- CLASS_JUGGLER, // 0x4D
- CLASS_TAMER, // 0x4E
- CLASS_BIRD_KEEPER, // 0x4F
- CLASS_BLACK_BELT, // 0X50
- CLASS_PKMN_TRAINER_RIVAL, // 0X51
- CLASS_SCIENTIST, // 0X52
- CLASS_BOSS, // 0X53
- CLASS_LEADER, // 0X54
- CLASS_TEAM_ROCKET, // 0X55
- CLASS_COOLTRAINER, // 0X56
- CLASS_ELITE_FOUR, // 0X57
- CLASS_GENTLEMAN, // 0X58
- CLASS_PKMN_TRAINER_RIVAL, // 0X59
- CLASS_CHAMPION, // 0X5A
- CLASS_CHANNERLER, // 0X5B
- CLASS_TWINS, // 0X5C
- CLASS_COOL_COUPLE, // 0X5D
- CLASS_YOUNG_COUPLE, // 0X5E
- CLASS_CRUSH_KIN, // 0X5F
- CLASS_SIS_AND_BRO, // 0X60
- CLASS_PROFESSOR, // 0X61
- CLASS_PLAYER, // 0X62
- CLASS_CRUSH_GIRL, // 0X63
- CLASS_TUBER2, // 0X64
- CLASS_PKMN_BREEDER, // 0X65
- CLASS_PKMN_RANGER, // 0X66
- CLASS_AROMA_LADY, // 0X67
- CLASS_RUIN_MANIAC, // 0X68
- CLASS_LADY, // 0X69
- CLASS_PAINTER, // 0X6A
-
-};
-
-#endif // GUARD_TRAINER_CLASSES_H
diff --git a/ld_script.txt b/ld_script.txt
index d37858b3f..8d188156b 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -266,6 +266,7 @@ SECTIONS {
asm/unk_815C980.o(.text);
asm/ss_anne.o(.text);
asm/cereader_tool.o(.text);
+ src/trainer_tower.o(.text);
asm/trainer_tower.o(.text);
asm/unk_815EDDC.o(.text);
asm/unk_815F138.o(.text);
@@ -389,6 +390,9 @@ SECTIONS {
data/data_8468C98.o(.rodata);
src/quest_log_8150454.o(.rodata);
data/data_8471F00.o(.rodata);
+ src/trainer_tower.o(.rodata);
+ data/trainer_tower.o(.rodata);
+ data/data_8471F00.o(.rodata.after_trainer_tower);
src/mystery_event_msg.o(.rodata);
data/mystery_event_msg.o(.rodata);
src/m4a_tables.o(.rodata);
diff --git a/src/trainer_tower.c b/src/trainer_tower.c
new file mode 100644
index 000000000..91132c07b
--- /dev/null
+++ b/src/trainer_tower.c
@@ -0,0 +1,694 @@
+#include "global.h"
+#include "main.h"
+#include "constants/flags.h"
+#include "constants/vars.h"
+#include "malloc.h"
+#include "save.h"
+#include "util.h"
+#include "string_util.h"
+#include "event_data.h"
+#include "random.h"
+#include "cereader_tool.h"
+#include "easy_chat.h"
+#include "text.h"
+#include "overworld.h"
+
+struct UnkStruct_8479D34
+{
+ s8 mapGroup;
+ s8 mapNum;
+ u8 filler[2];
+ u8 flags1[8];
+ u8 flags2[8];
+ u8 flags3[8];
+};
+
+struct UnkSubstruct_203F458_000C_004
+{
+ /* 0x000 */ u8 unk_000[11];
+ /* 0x00B */ u8 unk_00B;
+ /* 0x00C */ u8 unk_00C;
+ /* 0x00D */ u8 unk_00D;
+ /* 0x00E */ u16 unk_00E[6];
+ /* 0x01A */ u16 unk_01A[6];
+ /* 0x026 */ u16 unk_026[6];
+ /* 0x032 */ u16 unk_032[6];
+ /* 0x040 */ struct BattleTowerPokemon unk_040[PARTY_SIZE];
+}; // size: 328
+
+struct UnkSubstruct_203F458_000C
+{
+ /* 0x000 */ u8 filler_000[2];
+ /* 0x002 */ u8 unk_002;
+ /* 0x003 */ u8 unk_003;
+ /* 0x004 */ struct UnkSubstruct_203F458_000C_004 unk_004[3];
+ /* 0x3DC */ u8 filler_3DC[4];
+};
+
+struct Unk_203F458_Header
+{
+ u8 unk0;
+ u8 unk1;
+ u32 unk4;
+};
+
+struct UnkStruct_203F458_SaveBlock
+{
+ struct Unk_203F458_Header unk_0000;
+ struct UnkSubstruct_203F458_000C unk_0008[8];
+};
+
+struct UnkStruct_203F458
+{
+ /* 0x0000 */ u8 unk_0000;
+ /* 0x0004 */ struct UnkStruct_203F458_SaveBlock unk_0004;
+};
+
+struct UnkStruct_203F45C
+{
+ /* 0x00 */ u8 unk_00[11];
+ /* 0x0C */ u16 unk_0C[6];
+ /* 0x18 */ u16 unk_18[6];
+ /* 0x24 */ u16 unk_24[6];
+ /* 0x30 */ u16 unk_30[6];
+ /* 0x3C */ u8 unk_3C;
+ /* 0x3D */ u8 unk_3D;
+ /* 0x3E */ u8 unk_3E;
+};
+
+struct UnkStruct_8479ED8
+{
+ u8 unk0;
+ u8 unk1;
+ bool8 unk2;
+};
+
+struct UnkStruct_847A024
+{
+ u8 unk0;
+ u8 unk1;
+ u8 unk2;
+ bool8 unk3;
+ bool8 unk4;
+};
+
+EWRAM_DATA struct UnkStruct_203F458 * gUnknown_203F458 = NULL;
+EWRAM_DATA struct UnkStruct_203F45C * gUnknown_203F45C = NULL;
+
+void sub_815D96C(void);
+void sub_815DC8C(void); // setup
+void sub_815DD2C(void); // teardown
+void sub_815DD44(void);
+void sub_815DDB0(void);
+void sub_815DEFC(u16 * ecWords, u8 * dest);
+void sub_815DF54(void);
+void sub_815E068(u8 battleType, u8 facilityClass);
+void sub_815E160(void);
+void sub_815E1C0(void);
+void sub_815E1F0(void);
+void sub_815E218(void);
+void sub_815E28C(void);
+void sub_815E394(void);
+void sub_815E408(void);
+void sub_815E4B0(void);
+void sub_815E56C(void);
+void sub_815E5C4(void);
+void sub_815E5F0(void);
+void sub_815E658(void);
+void sub_815E720(void);
+void sub_815E88C(void);
+void sub_815E8B4(void);
+void sub_815E8CC(void);
+void sub_815E908(void);
+void sub_815E948(void);
+void sub_815E9C8(void);
+void sub_815EC0C(void);
+
+extern const struct UnkStruct_8479D34 gUnknown_8479D34[15];
+extern void (*const gUnknown_847A230[])(void);
+extern const struct Unk_203F458_Header gUnknown_84827AC;
+extern const struct UnkSubstruct_203F458_000C *const gUnknown_84827B4[][8];
+extern const u16 gUnknown_847A284[8][3];
+extern const struct UnkStruct_8479ED8 gUnknown_8479ED8[83];
+extern const struct UnkStruct_847A024 gUnknown_847A024[10];
+
+bool32 sub_815D7BC(void * dest, void * buffer)
+{
+ if (TryCopySpecialSaveSection(30, buffer) != 1)
+ return FALSE;
+ memcpy(dest + 0x000, buffer, 0xF88);
+
+ if (TryCopySpecialSaveSection(31, buffer) != 1)
+ return FALSE;
+ memcpy(dest + 0xF88, buffer, 0xF80);
+
+ if (!sub_815D6B4(dest))
+ return FALSE;
+ return TRUE;
+}
+
+bool32 sub_815D80C(void * dest)
+{
+ void * buffer = AllocZeroed(0x1000);
+ bool32 success = sub_815D7BC(dest, buffer);
+ Free(buffer);
+ return success;
+}
+
+bool32 sub_815D834(void)
+{
+ // Stubbed out?
+ return FALSE;
+}
+
+void sub_815D838(void)
+{
+ u8 i, j;
+
+ for (i = 0; i < 15; i++)
+ {
+ const u8 * flags1 = gUnknown_8479D34[i].flags1;
+ const u8 * flags2 = gUnknown_8479D34[i].flags2;
+ const u8 * flags3 = gUnknown_8479D34[i].flags3;
+ for (j = 0; j < 8; j++)
+ {
+ if (flags1[j] != 0xFF)
+ FlagSet(FLAG_TRAINER_TOWER_START + flags1[j]);
+ if (flags2[j] != 0xFF)
+ FlagSet(FLAG_TRAINER_TOWER_START + flags2[j]);
+ if (flags3[j] != 0xFF)
+ FlagSet(FLAG_TRAINER_TOWER_START + flags3[j]);
+ }
+ }
+}
+
+void sub_815D8C8(void)
+{
+ u16 var = VarGet(VAR_0x4023);
+ if (var < 1500) {
+ VarSet(VAR_0x4023, var + 1);
+ }
+}
+
+void sub_815D8F8(void) // fakematching
+{
+ u8 i;
+ register u32 found_map asm("r4") = 0xFF;
+ for (i = 0; i < 15; i++)
+ {
+ if (gUnknown_8479D34[i].mapGroup == gSaveBlock1Ptr->location.mapGroup && gUnknown_8479D34[i].mapNum == gSaveBlock1Ptr->location.mapNum)
+ found_map = i;
+ }
+
+ if (found_map == 0xFF)
+ return;
+ if (VarGet(VAR_0x4023) >= 1500)
+ {
+ VarSet(VAR_0x4023, 0);
+ sub_815D838();
+ sub_815D96C();
+ }
+}
+
+void sub_815D96C(void)
+{
+ u8 i, j;
+ const u8 * flags;
+ u16 rval;
+
+ for (i = 0; i < 15; i++)
+ {
+ rval = Random() % 100;
+ if (rval >= 90)
+ flags = gUnknown_8479D34[i].flags1;
+ else if (rval >= 60)
+ flags = gUnknown_8479D34[i].flags2;
+ else
+ flags = gUnknown_8479D34[i].flags3;
+ for (j = 0; j < 8; j++)
+ {
+ if (flags[j] != 0xFF)
+ FlagClear(FLAG_TRAINER_TOWER_START + flags[j]);
+ }
+ }
+}
+
+void sub_815D9E8(void)
+{
+ sub_815DC8C();
+ gUnknown_847A230[gSpecialVar_0x8004]();
+ sub_815DD2C();
+}
+
+u8 sub_815DA10(void)
+{
+ return gFacilityClassToTrainerClass[gUnknown_203F45C->unk_3D];
+}
+
+void sub_815DA28(u8 * dest)
+{
+ StringCopyN(dest, gUnknown_203F45C->unk_00, 11);
+}
+
+u8 sub_815DA3C(void)
+{
+ return gFacilityClassToPicIndex[gUnknown_203F45C->unk_3D];
+}
+
+void sub_815DA54(void)
+{
+ u16 r10;
+ s32 r9;
+
+ sub_815DC8C();
+ gUnknown_203F45C = AllocZeroed(sizeof(*gUnknown_203F45C));
+ r10 = VarGet(VAR_0x4001);
+ StringCopyN(gUnknown_203F45C->unk_00, gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r10].unk_000, 11);
+
+ for (r9 = 0; r9 < 6; r9++)
+ {
+ gUnknown_203F45C->unk_0C[r9] = gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r10].unk_01A[r9];
+ gUnknown_203F45C->unk_18[r9] = gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r10].unk_026[r9];
+
+ if (gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_002 == 1)
+ {
+ gUnknown_203F45C->unk_24[r9] = gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r10 + 1].unk_01A[r9];
+ gUnknown_203F45C->unk_30[r9] = gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r10 + 1].unk_026[r9];
+ }
+ }
+
+ gUnknown_203F45C->unk_3C = gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_002;
+ gUnknown_203F45C->unk_3D = gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r10].unk_00B;
+ gUnknown_203F45C->unk_3E = gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r10].unk_00C;
+ SetVBlankCounter1Ptr(gSaveBlock1Ptr->unkArray[gSaveBlock1Ptr->unkArrayIdx]);
+ sub_815DD2C();
+}
+
+void sub_815DBDC(void)
+{
+ Free(gUnknown_203F45C);
+ gUnknown_203F45C = NULL;
+}
+
+void sub_815DBF4(u8 * dest, u8 opponentIdx)
+// TTower_GetBeforeBattleMessage?
+{
+ VarSet(VAR_0x4003, opponentIdx);
+ sub_815E068(gUnknown_203F45C->unk_3C, gUnknown_203F45C->unk_3D);
+ if (opponentIdx == 0)
+ sub_815DEFC(gUnknown_203F45C->unk_0C, dest);
+ else
+ sub_815DEFC(gUnknown_203F45C->unk_24, dest);
+}
+
+void sub_815DC40(u8 * dest, u8 opponentIdx)
+// TTower_GetAfterBattleMessage?
+{
+ VarSet(VAR_0x4003, opponentIdx);
+ sub_815E068(gUnknown_203F45C->unk_3C, gUnknown_203F45C->unk_3D);
+ if (opponentIdx == 0)
+ sub_815DEFC(gUnknown_203F45C->unk_18, dest);
+ else
+ sub_815DEFC(gUnknown_203F45C->unk_30, dest);
+}
+
+#ifdef NONMATCHING
+void sub_815DC8C(void) // fakematching
+{
+ u32 whichTimer = gSaveBlock1Ptr->unkArrayIdx;
+ s32 r4;
+ const struct UnkSubstruct_203F458_000C *const * r7;
+
+ gUnknown_203F458 = AllocZeroed(sizeof(*gUnknown_203F458));
+ gUnknown_203F458->unk_0000 = gMapHeader.mapDataId - 0x2A;
+ if (sub_815D834() == TRUE)
+ sub_815D80C(&gUnknown_203F458->unk_0004);
+ else
+ {
+ struct UnkStruct_203F458 * r0_ = gUnknown_203F458;
+ const struct Unk_203F458_Header * r1 = &gUnknown_84827AC;
+// *r0_ = *r1;
+ memcpy(&r0_->unk_0004.unk_0000, r1, sizeof(struct Unk_203F458_Header));
+// gUnknown_203F458->unk_0004.unk_0000 = gUnknown_84827AC;
+ r7 = gUnknown_84827B4[whichTimer];
+ for (r4 = 0; r4 < 8; r4++)
+ {
+ void * r0 = gUnknown_203F458;
+ r0 = r4 * sizeof(struct UnkSubstruct_203F458_000C) + r0;
+ r0 += offsetof(struct UnkStruct_203F458, unk_0004.unk_0008);
+ memcpy(r0, r7[r4], sizeof(struct UnkSubstruct_203F458_000C));
+// r0[r4] = *r7[r4];
+ }
+ gUnknown_203F458->unk_0004.unk_0000.unk4 = CalcByteArraySum((void *)gUnknown_203F458->unk_0004.unk_0008, sizeof(gUnknown_203F458->unk_0004.unk_0008));
+ sub_815EC0C();
+ }
+}
+#else
+NAKED
+void sub_815DC8C(void)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tldr r0, _0815DCBC @ =gSaveBlock1Ptr\n"
+ "\tldr r0, [r0]\n"
+ "\tldr r1, _0815DCC0 @ =0x00003d34\n"
+ "\tadds r0, r1\n"
+ "\tldr r5, [r0]\n"
+ "\tldr r4, _0815DCC4 @ =gUnknown_203F458\n"
+ "\tldr r0, _0815DCC8 @ =0x00001f0c\n"
+ "\tbl AllocZeroed\n"
+ "\tstr r0, [r4]\n"
+ "\tldr r1, _0815DCCC @ =gMapHeader\n"
+ "\tldrb r1, [r1, 0x12]\n"
+ "\tsubs r1, 0x2A\n"
+ "\tstrb r1, [r0]\n"
+ "\tbl sub_815D834\n"
+ "\tcmp r0, 0x1\n"
+ "\tbne _0815DCD0\n"
+ "\tldr r0, [r4]\n"
+ "\tadds r0, 0x4\n"
+ "\tbl sub_815D80C\n"
+ "\tb _0815DD18\n"
+ "\t.align 2, 0\n"
+ "_0815DCBC: .4byte gSaveBlock1Ptr\n"
+ "_0815DCC0: .4byte 0x00003d34\n"
+ "_0815DCC4: .4byte gUnknown_203F458\n"
+ "_0815DCC8: .4byte 0x00001f0c\n"
+ "_0815DCCC: .4byte gMapHeader\n"
+ "_0815DCD0:\n"
+ "\tldr r0, [r4]\n"
+ "\tldr r1, _0815DD20 @ =gUnknown_84827AC\n"
+ "\tadds r0, 0x4\n"
+ "\tmovs r2, 0x8\n"
+ "\tbl memcpy\n"
+ "\tlsls r1, r5, 5\n"
+ "\tldr r0, _0815DD24 @ =gUnknown_84827B4\n"
+ "\tadds r7, r1, r0\n"
+ "\tmovs r5, 0\n"
+ "\tmovs r4, 0x7\n"
+ "_0815DCE6:\n"
+ "\tldr r6, _0815DD28 @ =gUnknown_203F458\n"
+ "\tldr r0, [r6]\n"
+ "\tadds r0, r5, r0\n"
+ "\tadds r0, 0xC\n"
+ "\tldm r7!, {r1}\n"
+ "\tmovs r2, 0xF8\n"
+ "\tlsls r2, 2\n"
+ "\tbl memcpy\n"
+ "\tmovs r0, 0xF8\n"
+ "\tlsls r0, 2\n"
+ "\tadds r5, r0\n"
+ "\tsubs r4, 0x1\n"
+ "\tcmp r4, 0\n"
+ "\tbge _0815DCE6\n"
+ "\tldr r0, [r6]\n"
+ "\tadds r0, 0xC\n"
+ "\tmovs r1, 0xF8\n"
+ "\tlsls r1, 5\n"
+ "\tbl CalcByteArraySum\n"
+ "\tldr r1, [r6]\n"
+ "\tstr r0, [r1, 0x8]\n"
+ "\tbl sub_815EC0C\n"
+ "_0815DD18:\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.align 2, 0\n"
+ "_0815DD20: .4byte gUnknown_84827AC\n"
+ "_0815DD24: .4byte gUnknown_84827B4\n"
+ "_0815DD28: .4byte gUnknown_203F458");
+}
+#endif // NONMATCHING
+
+void sub_815DD2C(void)
+{
+ Free(gUnknown_203F458);
+ gUnknown_203F458 = NULL;
+}
+
+void sub_815DD44(void)
+{
+ if (gMapHeader.mapDataId - 0x129 > gUnknown_203F458->unk_0004.unk_0000.unk0)
+ {
+ gSpecialVar_Result = 3;
+ sub_8055D40(0x132);
+ }
+ else
+ {
+ gSpecialVar_Result = gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_002;
+ sub_8055D40(gUnknown_847A284[gUnknown_203F458->unk_0000][gSpecialVar_Result]);
+ sub_815DDB0();
+ }
+}
+
+void sub_815DDB0(void)
+{
+ s32 r3, r4;
+ u8 r1, r2, r4_;
+ switch (gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_002)
+ {
+ case 0:
+ r2 = gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[0].unk_00B;
+ for (r3 = 0; r3 < NELEMS(gUnknown_8479ED8); r3++)
+ {
+ if (gUnknown_8479ED8[r3].unk1 == r2)
+ break;
+ }
+ if (r3 != NELEMS(gUnknown_8479ED8))
+ r1 = gUnknown_8479ED8[r3].unk0;
+ else
+ r1 = 18;
+ VarSet(VAR_0x4011, r1);
+ break;
+ case 1:
+ r2 = gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[0].unk_00B;
+ for (r3 = 0; r3 < NELEMS(gUnknown_847A024); r3++)
+ {
+ if (gUnknown_847A024[r3].unk2 == r2)
+ break;
+ }
+ if (r3 != NELEMS(gUnknown_847A024))
+ {
+ r1 = gUnknown_847A024[r3].unk0;
+ r4_ = gUnknown_847A024[r3].unk1;
+ }
+ else
+ {
+ r1 = 18;
+ r4_ = 18;
+ }
+ VarSet(VAR_0x4010, r1);
+ VarSet(VAR_0x4013, r4_);
+ break;
+ case 2:
+ for (r4 = 0; r4 < 3; r4++)
+ {
+ r2 = gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r4].unk_00B;
+ for (r3 = 0; r3 < NELEMS(gUnknown_8479ED8); r3++)
+ {
+ if (gUnknown_8479ED8[r3].unk1 == r2)
+ break;
+ }
+ if (r3 != NELEMS(gUnknown_8479ED8))
+ r1 = gUnknown_8479ED8[r3].unk0;
+ else
+ r1 = 18;
+ switch (r4)
+ {
+ case 0:
+ VarSet(VAR_0x4012, r1);
+ break;
+ case 1:
+ VarSet(VAR_0x4010, r1);
+ break;
+ case 2:
+ VarSet(VAR_0x4011, r1);
+ break;
+ }
+ }
+ }
+}
+
+void sub_815DEFC(u16 * ecWords, u8 * dest)
+{
+ s32 r1;
+ ConvertEasyChatWordsToString(dest, ecWords, 3, 2);
+ if ((unsigned)GetStringWidth(2, dest, -1) > 196)
+ {
+ ConvertEasyChatWordsToString(dest, ecWords, 2, 3);
+ r1 = 0;
+ while (dest[r1++] != CHAR_NEWLINE)
+ ;
+ while (dest[r1] != CHAR_NEWLINE)
+ r1++;
+ dest[r1] = CHAR_PROMPT_SCROLL;
+ }
+}
+
+#ifdef NONMATCHING
+void sub_815DF54(void)
+{
+ u16 r4 = gSpecialVar_0x8006;
+ u8 r1;
+ u8 r5 = gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_002;
+ // HOW DO I MATCH THIS CONTROL FLOW?!?!
+ r1 = gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r5 == 1 ? 0 : r4].unk_00B;
+ switch (gSpecialVar_0x8005)
+ {
+ case 2:
+ sub_815E068(r5, r1);
+ sub_815DEFC(gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r4].unk_00E, gStringVar4);
+ break;
+ case 3:
+ sub_815E068(r5, r1);
+ sub_815DEFC(gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r4].unk_01A, gStringVar4);
+ break;
+ case 4:
+ sub_815E068(r5, r1);
+ sub_815DEFC(gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r4].unk_026, gStringVar4);
+ break;
+ case 5:
+ sub_815DEFC(gUnknown_203F458->unk_0004.unk_0008[gUnknown_203F458->unk_0000].unk_004[r4].unk_032, gStringVar4);
+ break;
+ }
+}
+#else
+NAKED
+void sub_815DF54(void)
+{
+ asm_unified("\tpush {r4,r5,lr}\n"
+ "\tldr r0, _0815DF90 @ =gSpecialVar_0x8006\n"
+ "\tldrh r4, [r0]\n"
+ "\tldr r2, _0815DF94 @ =gUnknown_203F458\n"
+ "\tldr r3, [r2]\n"
+ "\tldrb r1, [r3]\n"
+ "\tlsls r0, r1, 5\n"
+ "\tsubs r0, r1\n"
+ "\tlsls r1, r0, 5\n"
+ "\tadds r0, r3, r1\n"
+ "\tldrb r5, [r0, 0xE]\n"
+ "\tcmp r5, 0x1\n"
+ "\tbeq _0815DF7C\n"
+ "\tlsls r0, r4, 2\n"
+ "\tadds r0, r4\n"
+ "\tlsls r0, 3\n"
+ "\tadds r0, r4\n"
+ "\tlsls r0, 3\n"
+ "\tadds r0, r1\n"
+ "\tadds r0, r3, r0\n"
+ "_0815DF7C:\n"
+ "\tldrb r1, [r0, 0x1B]\n"
+ "\tldr r0, _0815DF98 @ =gSpecialVar_0x8005\n"
+ "\tldrh r0, [r0]\n"
+ "\tcmp r0, 0x3\n"
+ "\tbeq _0815DFD4\n"
+ "\tcmp r0, 0x3\n"
+ "\tbgt _0815DF9C\n"
+ "\tcmp r0, 0x2\n"
+ "\tbeq _0815DFA6\n"
+ "\tb _0815E05C\n"
+ "\t.align 2, 0\n"
+ "_0815DF90: .4byte gSpecialVar_0x8006\n"
+ "_0815DF94: .4byte gUnknown_203F458\n"
+ "_0815DF98: .4byte gSpecialVar_0x8005\n"
+ "_0815DF9C:\n"
+ "\tcmp r0, 0x4\n"
+ "\tbeq _0815E000\n"
+ "\tcmp r0, 0x5\n"
+ "\tbeq _0815E038\n"
+ "\tb _0815E05C\n"
+ "_0815DFA6:\n"
+ "\tadds r0, r5, 0\n"
+ "\tbl sub_815E068\n"
+ "\tldr r0, _0815DFD0 @ =gUnknown_203F458\n"
+ "\tldr r0, [r0]\n"
+ "\tldrb r2, [r0]\n"
+ "\tlsls r1, r2, 5\n"
+ "\tsubs r1, r2\n"
+ "\tlsls r1, 5\n"
+ "\tadds r1, 0xC\n"
+ "\tadds r0, r1\n"
+ "\tlsls r1, r4, 2\n"
+ "\tadds r1, r4\n"
+ "\tlsls r1, 3\n"
+ "\tadds r1, r4\n"
+ "\tlsls r1, 3\n"
+ "\tadds r1, 0x4\n"
+ "\tadds r0, r1\n"
+ "\tadds r0, 0xE\n"
+ "\tb _0815E026\n"
+ "\t.align 2, 0\n"
+ "_0815DFD0: .4byte gUnknown_203F458\n"
+ "_0815DFD4:\n"
+ "\tadds r0, r5, 0\n"
+ "\tbl sub_815E068\n"
+ "\tldr r0, _0815DFFC @ =gUnknown_203F458\n"
+ "\tldr r0, [r0]\n"
+ "\tldrb r2, [r0]\n"
+ "\tlsls r1, r2, 5\n"
+ "\tsubs r1, r2\n"
+ "\tlsls r1, 5\n"
+ "\tadds r1, 0xC\n"
+ "\tadds r0, r1\n"
+ "\tlsls r1, r4, 2\n"
+ "\tadds r1, r4\n"
+ "\tlsls r1, 3\n"
+ "\tadds r1, r4\n"
+ "\tlsls r1, 3\n"
+ "\tadds r1, 0x4\n"
+ "\tadds r0, r1\n"
+ "\tadds r0, 0x1A\n"
+ "\tb _0815E026\n"
+ "\t.align 2, 0\n"
+ "_0815DFFC: .4byte gUnknown_203F458\n"
+ "_0815E000:\n"
+ "\tadds r0, r5, 0\n"
+ "\tbl sub_815E068\n"
+ "\tldr r0, _0815E030 @ =gUnknown_203F458\n"
+ "\tldr r0, [r0]\n"
+ "\tldrb r2, [r0]\n"
+ "\tlsls r1, r2, 5\n"
+ "\tsubs r1, r2\n"
+ "\tlsls r1, 5\n"
+ "\tadds r1, 0xC\n"
+ "\tadds r0, r1\n"
+ "\tlsls r1, r4, 2\n"
+ "\tadds r1, r4\n"
+ "\tlsls r1, 3\n"
+ "\tadds r1, r4\n"
+ "\tlsls r1, 3\n"
+ "\tadds r1, 0x4\n"
+ "\tadds r0, r1\n"
+ "\tadds r0, 0x26\n"
+ "_0815E026:\n"
+ "\tldr r1, _0815E034 @ =gStringVar4\n"
+ "\tbl sub_815DEFC\n"
+ "\tb _0815E05C\n"
+ "\t.align 2, 0\n"
+ "_0815E030: .4byte gUnknown_203F458\n"
+ "_0815E034: .4byte gStringVar4\n"
+ "_0815E038:\n"
+ "\tldr r0, [r2]\n"
+ "\tldrb r2, [r0]\n"
+ "\tlsls r1, r2, 5\n"
+ "\tsubs r1, r2\n"
+ "\tlsls r1, 5\n"
+ "\tadds r1, 0xC\n"
+ "\tadds r0, r1\n"
+ "\tlsls r1, r4, 2\n"
+ "\tadds r1, r4\n"
+ "\tlsls r1, 3\n"
+ "\tadds r1, r4\n"
+ "\tlsls r1, 3\n"
+ "\tadds r1, 0x4\n"
+ "\tadds r0, r1\n"
+ "\tadds r0, 0x32\n"
+ "\tldr r1, _0815E064 @ =gStringVar4\n"
+ "\tbl sub_815DEFC\n"
+ "_0815E05C:\n"
+ "\tpop {r4,r5}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.align 2, 0\n"
+ "_0815E064: .4byte gStringVar4");
+}
+#endif // NONMATCHING
diff --git a/sym_ewram.txt b/sym_ewram.txt
index d68a01f8f..f8e0df713 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -1753,11 +1753,10 @@ gUnknown_203F450: @ 203F450
gUnknown_203F454: @ 203F454
.space 0x4
-gUnknown_203F458: @ 203F458
- .space 0x4
+ .include "src/trainer_tower.o"
-gUnknown_203F45C: @ 203F45C
- .space 0x8
+gUnknown_203F460: @ 203F460
+ .space 0x4
gUnknown_203F464: @ 203F464
.space 0x1