summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@users.noreply.github.com>2019-06-12 20:29:24 -0400
committerGitHub <noreply@github.com>2019-06-12 20:29:24 -0400
commitad25741237f491c1b8b0241be2cd7fbfaa128b20 (patch)
treea2f36dd6f7b9671a2fbca48f42a41a6a8af79f02
parent423dc1aeb1f52567865c8619e8eb827ac404c929 (diff)
parentc993f5db4e0ab8052875ab80f980d4100b809764 (diff)
Merge pull request #66 from pret/help_system_812B1E0
Decompile help_system_812b1e0
-rw-r--r--asm/help_system.s18
-rw-r--r--asm/help_system_812B1E0.s1761
-rw-r--r--asm/save_failed_screen.s2
-rw-r--r--charmap.txt49
-rw-r--r--common_syms/help_system_812B1E0.txt2
-rw-r--r--data/data_83FECCC.s288
-rw-r--r--data/map_event_scripts.inc26
-rw-r--r--data/text/help_system.inc1879
-rw-r--r--graphics/help_system/unk_845BCB0.binbin0 -> 2048 bytes
-rw-r--r--include/constants/flags.h1
-rw-r--r--include/event_scripts.h372
-rw-r--r--include/help_system.h53
-rw-r--r--include/list_menu.h1
-rw-r--r--include/overworld.h1
-rw-r--r--include/save_location.h1
-rw-r--r--include/strings.h6
-rw-r--r--ld_script.txt3
-rw-r--r--src/fame_checker.c6
-rw-r--r--src/help_system_812B1E0.c1580
-rw-r--r--sym_common.txt8
-rw-r--r--sym_ewram.txt11
21 files changed, 4119 insertions, 1949 deletions
diff --git a/asm/help_system.s b/asm/help_system.s
index 7026c65d5..2ea845550 100644
--- a/asm/help_system.s
+++ b/asm/help_system.s
@@ -1031,8 +1031,8 @@ _0813C06A:
_0813C074: .4byte 0x000001fd
thumb_func_end sub_813C004
- thumb_func_start sub_813C078
-sub_813C078: @ 813C078
+ thumb_func_start HelpSystemRenderText
+HelpSystemRenderText: @ 813C078
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -1421,7 +1421,7 @@ _0813C39C:
pop {r4-r7}
pop {r0}
bx r0
- thumb_func_end sub_813C078
+ thumb_func_end HelpSystemRenderText
thumb_func_start sub_813C3AC
sub_813C3AC: @ 813C3AC
@@ -1527,7 +1527,7 @@ sub_813C454: @ 813C454
movs r0, 0x5
adds r2, r4, 0
movs r3, 0x6
- bl sub_813C078
+ bl HelpSystemRenderText
add sp, 0xC
pop {r4}
pop {r0}
@@ -1562,7 +1562,7 @@ sub_813C488: @ 813C488
movs r0, 0
adds r2, r5, 0
adds r3, r4, 0
- bl sub_813C078
+ bl HelpSystemRenderText
add sp, 0xC
pop {r4,r5}
pop {r0}
@@ -1595,7 +1595,7 @@ sub_813C4CC: @ 813C4CC
movs r0, 0x2
adds r2, r6, 0
adds r3, r5, 0
- bl sub_813C078
+ bl HelpSystemRenderText
add sp, 0xC
pop {r4-r6}
pop {r0}
@@ -1636,7 +1636,7 @@ sub_813C50C: @ 813C50C
adds r1, r4, 0
mov r2, r8
movs r3, 0
- bl sub_813C078
+ bl HelpSystemRenderText
movs r0, 0x9C
lsls r0, 4
adds r4, r0
@@ -1648,7 +1648,7 @@ sub_813C50C: @ 813C50C
adds r1, r4, 0
mov r2, r9
movs r3, 0
- bl sub_813C078
+ bl HelpSystemRenderText
add sp, 0x10
pop {r3,r4}
mov r8, r3
@@ -1690,7 +1690,7 @@ sub_813C584: @ 813C584
adds r1, r4, 0
adds r2, r5, 0
movs r3, 0x2
- bl sub_813C078
+ bl HelpSystemRenderText
add sp, 0x10
pop {r4,r5}
pop {r0}
diff --git a/asm/help_system_812B1E0.s b/asm/help_system_812B1E0.s
deleted file mode 100644
index b88a86b47..000000000
--- a/asm/help_system_812B1E0.s
+++ /dev/null
@@ -1,1761 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_812B1E0
-sub_812B1E0: @ 812B1E0
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0812B1EC @ =gUnknown_203B0EC
- strh r0, [r1]
- bx lr
- .align 2, 0
-_0812B1EC: .4byte gUnknown_203B0EC
- thumb_func_end sub_812B1E0
-
- thumb_func_start HelpSystem_SetSomeVariable2
-HelpSystem_SetSomeVariable2: @ 812B1F0
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r0, _0812B21C @ =gUnknown_203B0EC
- ldrh r2, [r0]
- cmp r2, 0x1A
- bgt _0812B216
- cmp r2, 0x17
- blt _0812B216
- cmp r1, 0x9
- beq _0812B218
- cmp r1, 0x5
- beq _0812B218
- cmp r1, 0x6
- beq _0812B218
- cmp r1, 0x7
- beq _0812B218
- cmp r1, 0x8
- beq _0812B218
-_0812B216:
- strh r1, [r0]
-_0812B218:
- pop {r0}
- bx r0
- .align 2, 0
-_0812B21C: .4byte gUnknown_203B0EC
- thumb_func_end HelpSystem_SetSomeVariable2
-
- thumb_func_start sub_812B220
-sub_812B220: @ 812B220
- ldr r0, _0812B22C @ =gUnknown_203B0EC
- ldr r1, _0812B230 @ =gSpecialVar_0x8004
- ldrh r1, [r1]
- strh r1, [r0]
- bx lr
- .align 2, 0
-_0812B22C: .4byte gUnknown_203B0EC
-_0812B230: .4byte gSpecialVar_0x8004
- thumb_func_end sub_812B220
-
- thumb_func_start sub_812B234
-sub_812B234: @ 812B234
- ldr r0, _0812B240 @ =gUnknown_3005EA0
- ldr r1, _0812B244 @ =gUnknown_203B0EC
- ldrh r1, [r1]
- strh r1, [r0]
- bx lr
- .align 2, 0
-_0812B240: .4byte gUnknown_3005EA0
-_0812B244: .4byte gUnknown_203B0EC
- thumb_func_end sub_812B234
-
- thumb_func_start sub_812B248
-sub_812B248: @ 812B248
- ldr r0, _0812B254 @ =gUnknown_203B0EC
- ldr r1, _0812B258 @ =gUnknown_3005EA0
- ldrh r1, [r1]
- strh r1, [r0]
- bx lr
- .align 2, 0
-_0812B254: .4byte gUnknown_203B0EC
-_0812B258: .4byte gUnknown_3005EA0
- thumb_func_end sub_812B248
-
- thumb_func_start sub_812B25C
-sub_812B25C: @ 812B25C
- push {lr}
- ldr r0, _0812B268 @ =gUnknown_845C594
- bl sub_812B27C
- pop {r1}
- bx r1
- .align 2, 0
-_0812B268: .4byte gUnknown_845C594
- thumb_func_end sub_812B25C
-
- thumb_func_start sub_812B26C
-sub_812B26C: @ 812B26C
- push {lr}
- ldr r0, _0812B278 @ =gUnknown_845C5BC
- bl sub_812B27C
- pop {r1}
- bx r1
- .align 2, 0
-_0812B278: .4byte gUnknown_845C5BC
- thumb_func_end sub_812B26C
-
- thumb_func_start sub_812B27C
-sub_812B27C: @ 812B27C
- push {r4,lr}
- adds r2, r0, 0
- ldr r0, _0812B2AC @ =gSaveBlock1Ptr
- ldr r0, [r0]
- movs r1, 0x4
- ldrsb r1, [r0, r1]
- lsls r1, 8
- ldrb r0, [r0, 0x5]
- lsls r0, 24
- asrs r0, 24
- adds r0, r1
- lsls r0, 16
- lsrs r3, r0, 16
- ldrh r0, [r2]
- ldr r1, _0812B2B0 @ =0x0000ffff
- cmp r0, r1
- beq _0812B2BC
- adds r4, r1, 0
- adds r1, r2, 0
-_0812B2A2:
- ldrh r0, [r1]
- cmp r0, r3
- bne _0812B2B4
- movs r0, 0x1
- b _0812B2BE
- .align 2, 0
-_0812B2AC: .4byte gSaveBlock1Ptr
-_0812B2B0: .4byte 0x0000ffff
-_0812B2B4:
- adds r1, 0x2
- ldrh r0, [r1]
- cmp r0, r4
- bne _0812B2A2
-_0812B2BC:
- movs r0, 0
-_0812B2BE:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_812B27C
-
- thumb_func_start sub_812B2C4
-sub_812B2C4: @ 812B2C4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- movs r5, 0
- ldr r0, _0812B2E8 @ =gUnknown_845C5CE
- mov r9, r0
- movs r0, 0x2
- add r0, r9
- mov r8, r0
-_0812B2D8:
- movs r6, 0
- mov r4, r9
- lsls r1, r5, 1
- adds r0, r1, r5
- add r0, r8
- adds r7, r1, 0
- b _0812B33A
- .align 2, 0
-_0812B2E8: .4byte gUnknown_845C5CE
-_0812B2EC:
- adds r3, r1, r5
- adds r0, r3, r4
- ldrb r1, [r0]
- ldr r0, _0812B324 @ =gSaveBlock1Ptr
- ldr r2, [r0]
- movs r0, 0x4
- ldrsb r0, [r2, r0]
- cmp r1, r0
- bne _0812B32C
- adds r0, r4, 0x1
- adds r0, r3, r0
- ldrb r0, [r0]
- adds r0, r6
- movs r1, 0x5
- ldrsb r1, [r2, r1]
- cmp r0, r1
- bne _0812B32C
- cmp r5, 0xF
- bne _0812B320
- ldr r0, _0812B328 @ =0x00000849
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0812B32C
-_0812B320:
- movs r0, 0x1
- b _0812B34C
- .align 2, 0
-_0812B324: .4byte gSaveBlock1Ptr
-_0812B328: .4byte 0x00000849
-_0812B32C:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r4, _0812B358 @ =gUnknown_845C5CE
- adds r1, r7, 0
- adds r0, r1, r5
- add r0, r8
-_0812B33A:
- ldrb r0, [r0]
- cmp r6, r0
- bcc _0812B2EC
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0xF
- bls _0812B2D8
- movs r0, 0
-_0812B34C:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0812B358: .4byte gUnknown_845C5CE
- thumb_func_end sub_812B2C4
-
- thumb_func_start sub_812B35C
-sub_812B35C: @ 812B35C
- push {lr}
- bl sub_812B4B8
- movs r0, 0x8
- bl TestPlayerAvatarFlags
- lsls r0, 24
- cmp r0, 0
- beq _0812B376
- movs r0, 0x16
- bl HelpSystem_SetSomeVariable2
- b _0812B406
-_0812B376:
- bl sub_812B2C4
- lsls r0, 24
- cmp r0, 0
- beq _0812B388
- movs r0, 0x15
- bl HelpSystem_SetSomeVariable2
- b _0812B406
-_0812B388:
- ldr r0, _0812B3B0 @ =gMapHeader
- ldrb r0, [r0, 0x17]
- bl is_light_level_8_or_9
- lsls r0, 24
- cmp r0, 0
- beq _0812B400
- ldr r0, _0812B3B4 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- ldrh r1, [r0, 0x4]
- cmp r1, 0x4
- beq _0812B3A8
- movs r0, 0x82
- lsls r0, 1
- cmp r1, r0
- bne _0812B3B8
-_0812B3A8:
- movs r0, 0xE
- bl HelpSystem_SetSomeVariable2
- b _0812B406
- .align 2, 0
-_0812B3B0: .4byte gMapHeader
-_0812B3B4: .4byte gSaveBlock1Ptr
-_0812B3B8:
- movs r0, 0xC1
- lsls r0, 2
- cmp r1, r0
- bne _0812B3C8
- movs r0, 0xF
- bl HelpSystem_SetSomeVariable2
- b _0812B406
-_0812B3C8:
- bl IsCurMapPokeCenter
- cmp r0, 0x1
- bne _0812B3D8
- movs r0, 0x10
- bl HelpSystem_SetSomeVariable2
- b _0812B406
-_0812B3D8:
- bl sub_812B25C
- cmp r0, 0x1
- bne _0812B3E8
- movs r0, 0x11
- bl HelpSystem_SetSomeVariable2
- b _0812B406
-_0812B3E8:
- bl sub_812B26C
- cmp r0, 0x1
- bne _0812B3F8
- movs r0, 0x12
- bl HelpSystem_SetSomeVariable2
- b _0812B406
-_0812B3F8:
- movs r0, 0x13
- bl HelpSystem_SetSomeVariable2
- b _0812B406
-_0812B400:
- movs r0, 0x14
- bl HelpSystem_SetSomeVariable2
-_0812B406:
- pop {r0}
- bx r0
- thumb_func_end sub_812B35C
-
- thumb_func_start sub_812B40C
-sub_812B40C: @ 812B40C
- push {lr}
- ldr r0, _0812B434 @ =gUnknown_203B0EE
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0812B42E
- ldr r0, _0812B438 @ =gSaveFileStatus
- ldrh r0, [r0]
- cmp r0, 0
- beq _0812B440
- cmp r0, 0x2
- beq _0812B440
- ldr r0, _0812B43C @ =0x0000083c
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _0812B440
-_0812B42E:
- movs r0, 0
- b _0812B44E
- .align 2, 0
-_0812B434: .4byte gUnknown_203B0EE
-_0812B438: .4byte gSaveFileStatus
-_0812B43C: .4byte 0x0000083c
-_0812B440:
- ldr r0, _0812B454 @ =0x0000083c
- bl FlagSet
- ldr r1, _0812B458 @ =gUnknown_203B0EE
- movs r0, 0x1
- strb r0, [r1]
- movs r0, 0x1
-_0812B44E:
- pop {r1}
- bx r1
- .align 2, 0
-_0812B454: .4byte 0x0000083c
-_0812B458: .4byte gUnknown_203B0EE
- thumb_func_end sub_812B40C
-
- thumb_func_start sub_812B45C
-sub_812B45C: @ 812B45C
- push {lr}
- ldr r0, _0812B46C @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0812B470
- movs r0, 0x1
- b _0812B472
- .align 2, 0
-_0812B46C: .4byte gReceivedRemoteLinkPlayers
-_0812B470:
- movs r0, 0
-_0812B472:
- pop {r1}
- bx r1
- thumb_func_end sub_812B45C
-
- thumb_func_start sub_812B478
-sub_812B478: @ 812B478
- ldr r1, _0812B480 @ =gUnknown_3005ECC
- movs r0, 0
- strb r0, [r1]
- bx lr
- .align 2, 0
-_0812B480: .4byte gUnknown_3005ECC
- thumb_func_end sub_812B478
-
- thumb_func_start sub_812B484
-sub_812B484: @ 812B484
- push {lr}
- ldr r0, _0812B4A4 @ =gUnknown_203ADFA
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _0812B49E
- ldr r1, _0812B4A8 @ =gUnknown_3005ECC
- movs r0, 0x1
- strb r0, [r1]
- bl sub_812B4B8
-_0812B49E:
- pop {r0}
- bx r0
- .align 2, 0
-_0812B4A4: .4byte gUnknown_203ADFA
-_0812B4A8: .4byte gUnknown_3005ECC
- thumb_func_end sub_812B484
-
- thumb_func_start sub_812B4AC
-sub_812B4AC: @ 812B4AC
- ldr r1, _0812B4B4 @ =gUnknown_203F175
- movs r0, 0x1
- strb r0, [r1]
- bx lr
- .align 2, 0
-_0812B4B4: .4byte gUnknown_203F175
- thumb_func_end sub_812B4AC
-
- thumb_func_start sub_812B4B8
-sub_812B4B8: @ 812B4B8
- ldr r1, _0812B4C0 @ =gUnknown_203F175
- movs r0, 0
- strb r0, [r1]
- bx lr
- .align 2, 0
-_0812B4C0: .4byte gUnknown_203F175
- thumb_func_end sub_812B4B8
-
- thumb_func_start sub_812B4C4
-sub_812B4C4: @ 812B4C4
- str r1, [r0]
- movs r2, 0x1
- movs r1, 0x1
- strh r1, [r0, 0x4]
- strh r1, [r0, 0x6]
- strb r2, [r0, 0x8]
- movs r1, 0x4
- strb r1, [r0, 0x9]
- bx lr
- thumb_func_end sub_812B4C4
-
- thumb_func_start sub_812B4D8
-sub_812B4D8: @ 812B4D8
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl sub_812B4C4
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_812B520
- ldr r0, _0812B518 @ =gUnknown_841DFAC
- bl sub_812BF74
- ldr r0, _0812B51C @ =gUnknown_3005E9C
- ldrb r2, [r0, 0x2]
- adds r0, r4, 0
- movs r1, 0
- bl sub_813C64C
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_812BF9C
- movs r0, 0x1
- bl sub_813BDA4
- movs r0, 0x1
- bl sub_813BD5C
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0812B518: .4byte gUnknown_841DFAC
-_0812B51C: .4byte gUnknown_3005E9C
- thumb_func_end sub_812B4D8
-
- thumb_func_start sub_812B520
-sub_812B520: @ 812B520
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r6, r0, 0
- adds r5, r1, 0
- movs r4, 0
- movs r3, 0
- ldr r0, _0812B598 @ =gUnknown_845C4B0
- mov r9, r0
- ldr r1, _0812B59C @ =gUnknown_203B0EC
- mov r8, r1
- ldr r0, _0812B5A0 @ =gUnknown_845C4B6
- mov r12, r0
- ldr r7, _0812B5A4 @ =gUnknown_845B080
-_0812B53E:
- mov r1, r9
- adds r0, r3, r1
- ldrb r2, [r0]
- mov r0, r8
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 1
- adds r0, r2, r0
- add r0, r12
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0812B56C
- lsls r1, r4, 3
- adds r1, r5
- lsls r0, r2, 2
- adds r0, r7
- ldr r0, [r0]
- str r0, [r1]
- str r2, [r1, 0x4]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_0812B56C:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x5
- bls _0812B53E
- lsls r0, r4, 3
- adds r0, r5
- subs r0, 0x8
- movs r1, 0x2
- negs r1, r1
- str r1, [r0, 0x4]
- movs r0, 0
- strh r4, [r6, 0x4]
- strh r4, [r6, 0x6]
- strb r0, [r6, 0x8]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812B598: .4byte gUnknown_845C4B0
-_0812B59C: .4byte gUnknown_203B0EC
-_0812B5A0: .4byte gUnknown_845C4B6
-_0812B5A4: .4byte gUnknown_845B080
- thumb_func_end sub_812B520
-
- thumb_func_start sub_812B5A8
-sub_812B5A8: @ 812B5A8
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r0, 0
- bl sub_813BDE8
- movs r0, 0
- bl sub_813BFC0
- movs r0, 0x1
- bl sub_813BE78
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_812B4C4
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_812B614
- ldr r0, _0812B608 @ =gUnknown_841DFC9
- bl sub_812BF74
- ldrb r1, [r4, 0xC]
- ldrb r2, [r4, 0xD]
- adds r0, r4, 0
- bl sub_813C64C
- ldr r1, _0812B60C @ =gUnknown_845B080
- ldr r0, _0812B610 @ =gUnknown_3005E9C
- ldrb r0, [r0, 0x1]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0
- movs r2, 0
- bl sub_813C4CC
- movs r0, 0x1
- bl sub_813BDA4
- movs r0, 0x1
- bl sub_813BD5C
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0812B608: .4byte gUnknown_841DFC9
-_0812B60C: .4byte gUnknown_845B080
-_0812B610: .4byte gUnknown_3005E9C
- thumb_func_end sub_812B5A8
-
- thumb_func_start sub_812B614
-sub_812B614: @ 812B614
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- mov r8, r0
- adds r5, r1, 0
- movs r6, 0
- ldr r3, _0812B664 @ =gUnknown_845B9E0
- ldr r0, _0812B668 @ =gUnknown_203B0EC
- ldrh r1, [r0]
- lsls r0, r1, 2
- ldr r2, _0812B66C @ =gUnknown_3005E9C
- adds r0, r1
- ldrb r2, [r2, 0x1]
- adds r0, r2
- lsls r0, 2
- adds r0, r3
- ldr r3, [r0]
- movs r7, 0
- ldrb r0, [r3]
- cmp r0, 0xFF
- beq _0812B6D0
-_0812B640:
- adds r4, r3, r7
- ldrb r0, [r4]
- str r3, [sp]
- bl sub_812B780
- lsls r0, 24
- lsrs r0, 24
- ldr r3, [sp]
- cmp r0, 0x1
- bne _0812B6C2
- ldr r0, _0812B66C @ =gUnknown_3005E9C
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- bne _0812B674
- lsls r1, r6, 3
- adds r1, r5
- ldr r2, _0812B670 @ =gUnknown_845B0B0
- b _0812B6AA
- .align 2, 0
-_0812B664: .4byte gUnknown_845B9E0
-_0812B668: .4byte gUnknown_203B0EC
-_0812B66C: .4byte gUnknown_3005E9C
-_0812B670: .4byte gUnknown_845B0B0
-_0812B674:
- cmp r0, 0x1
- bne _0812B684
- lsls r1, r6, 3
- adds r1, r5
- ldr r2, _0812B680 @ =gUnknown_845B218
- b _0812B6AA
- .align 2, 0
-_0812B680: .4byte gUnknown_845B218
-_0812B684:
- cmp r0, 0x2
- bne _0812B694
- lsls r1, r6, 3
- adds r1, r5
- ldr r2, _0812B690 @ =gUnknown_845B3A0
- b _0812B6AA
- .align 2, 0
-_0812B690: .4byte gUnknown_845B3A0
-_0812B694:
- cmp r0, 0x3
- bne _0812B6A4
- lsls r1, r6, 3
- adds r1, r5
- ldr r2, _0812B6A0 @ =gUnknown_845B500
- b _0812B6AA
- .align 2, 0
-_0812B6A0: .4byte gUnknown_845B500
-_0812B6A4:
- lsls r1, r6, 3
- adds r1, r5
- ldr r2, _0812B744 @ =gUnknown_845B540
-_0812B6AA:
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- str r0, [r1]
- lsls r0, r6, 3
- adds r0, r5
- ldrb r1, [r4]
- str r1, [r0, 0x4]
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
-_0812B6C2:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- adds r0, r3, r7
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _0812B640
-_0812B6D0:
- bl sub_812B754
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0812B710
- movs r7, 0
- ldr r3, _0812B748 @ =gUnknown_845B9BE
- ldrb r0, [r3]
- cmp r0, 0xFF
- beq _0812B710
- ldr r4, _0812B74C @ =gUnknown_845B3A0
-_0812B6E8:
- lsls r1, r6, 3
- adds r1, r5
- adds r2, r3, r7
- ldrb r0, [r2]
- lsls r0, 2
- adds r0, r4
- ldr r0, [r0]
- str r0, [r1]
- ldrb r0, [r2]
- str r0, [r1, 0x4]
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- adds r0, r3, r7
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _0812B6E8
-_0812B710:
- lsls r0, r6, 3
- adds r0, r5
- ldr r1, _0812B750 @ =gUnknown_81B2E6F
- str r1, [r0]
- movs r1, 0x2
- negs r1, r1
- str r1, [r0, 0x4]
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- movs r1, 0
- mov r0, r8
- strh r6, [r0, 0x4]
- movs r0, 0x7
- mov r2, r8
- strh r0, [r2, 0x6]
- strb r1, [r2, 0x8]
- movs r0, 0x15
- strb r0, [r2, 0x9]
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812B744: .4byte gUnknown_845B540
-_0812B748: .4byte gUnknown_845B9BE
-_0812B74C: .4byte gUnknown_845B3A0
-_0812B750: .4byte gUnknown_81B2E6F
- thumb_func_end sub_812B614
-
- thumb_func_start sub_812B754
-sub_812B754: @ 812B754
- push {lr}
- movs r0, 0x96
- lsls r0, 3
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0812B778
- ldr r0, _0812B774 @ =gUnknown_3005E9C
- ldrb r0, [r0, 0x1]
- cmp r0, 0x2
- bne _0812B778
- movs r0, 0x1
- b _0812B77A
- .align 2, 0
-_0812B774: .4byte gUnknown_3005E9C
-_0812B778:
- movs r0, 0
-_0812B77A:
- pop {r1}
- bx r1
- thumb_func_end sub_812B754
-
- thumb_func_start sub_812B780
-sub_812B780: @ 812B780
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r1, r0, 24
- adds r5, r1, 0
- movs r4, 0
- ldr r0, _0812B7A8 @ =gUnknown_3005E9C
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- beq _0812B794
- b _0812B8AC
-_0812B794:
- subs r0, r1, 0x1
- cmp r0, 0x2B
- bls _0812B79C
- b _0812BB04
-_0812B79C:
- lsls r0, 2
- ldr r1, _0812B7AC @ =_0812B7B0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0812B7A8: .4byte gUnknown_3005E9C
-_0812B7AC: .4byte _0812B7B0
- .align 2, 0
-_0812B7B0:
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812B860
- .4byte _0812BB08
- .4byte _0812B868
- .4byte _0812B870
- .4byte _0812BB08
- .4byte _0812B880
- .4byte _0812B868
- .4byte _0812B878
- .4byte _0812B890
- .4byte _0812B880
- .4byte _0812B880
- .4byte _0812B880
- .4byte _0812B868
- .4byte _0812B880
- .4byte _0812B880
- .4byte _0812B868
- .4byte _0812B880
- .4byte _0812B888
- .4byte _0812B868
- .4byte _0812B888
- .4byte _0812B878
- .4byte _0812B890
- .4byte _0812B880
- .4byte _0812B890
- .4byte _0812B896
- .4byte _0812B880
- .4byte _0812B890
- .4byte _0812B880
- .4byte _0812B890
- .4byte _0812B890
- .4byte _0812BB08
- .4byte _0812B868
- .4byte _0812B868
- .4byte _0812B880
- .4byte _0812BB08
- .4byte _0812B89C
- .4byte _0812B896
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812B8A4
-_0812B860:
- ldr r0, _0812B864 @ =0x000002cf
- b _0812BAF2
- .align 2, 0
-_0812B864: .4byte 0x000002cf
-_0812B868:
- ldr r0, _0812B86C @ =0x00000891
- b _0812BAF2
- .align 2, 0
-_0812B86C: .4byte 0x00000891
-_0812B870:
- ldr r0, _0812B874 @ =0x00000895
- b _0812BAF2
- .align 2, 0
-_0812B874: .4byte 0x00000895
-_0812B878:
- ldr r0, _0812B87C @ =0x000008a4
- b _0812BAF2
- .align 2, 0
-_0812B87C: .4byte 0x000008a4
-_0812B880:
- ldr r0, _0812B884 @ =0x00000828
- b _0812BAF2
- .align 2, 0
-_0812B884: .4byte 0x00000828
-_0812B888:
- ldr r0, _0812B88C @ =0x00000829
- b _0812BAF2
- .align 2, 0
-_0812B88C: .4byte 0x00000829
-_0812B890:
- movs r0, 0x82
- lsls r0, 4
- b _0812BAF2
-_0812B896:
- bl sub_812BB10
- b _0812BAF6
-_0812B89C:
- ldr r0, _0812B8A0 @ =0x0000029b
- b _0812BAF2
- .align 2, 0
-_0812B8A0: .4byte 0x0000029b
-_0812B8A4:
- ldr r0, _0812B8A8 @ =0x00000892
- b _0812BAF2
- .align 2, 0
-_0812B8A8: .4byte 0x00000892
-_0812B8AC:
- cmp r0, 0x1
- beq _0812B8B2
- b _0812B9D8
-_0812B8B2:
- subs r0, r1, 0x1
- cmp r0, 0x2F
- bls _0812B8BA
- b _0812BB04
-_0812B8BA:
- lsls r0, 2
- ldr r1, _0812B8C4 @ =_0812B8C8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0812B8C4: .4byte _0812B8C8
- .align 2, 0
-_0812B8C8:
- .4byte _0812B988
- .4byte _0812B9A0
- .4byte _0812B9A0
- .4byte _0812B9A8
- .4byte _0812B9A0
- .4byte _0812BB08
- .4byte _0812B9A0
- .4byte _0812B9A0
- .4byte _0812B9A0
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812B9A0
- .4byte _0812B990
- .4byte _0812B9BA
- .4byte _0812B9C0
- .4byte _0812B9C0
- .4byte _0812B9C6
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812B988
- .4byte _0812BB08
- .4byte _0812B9A0
- .4byte _0812B9A0
- .4byte _0812B9A8
- .4byte _0812B9A0
- .4byte _0812BB08
- .4byte _0812B988
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812B9A0
- .4byte _0812B9A0
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812B9D0
-_0812B988:
- ldr r0, _0812B98C @ =0x00000829
- b _0812BAF2
- .align 2, 0
-_0812B98C: .4byte 0x00000829
-_0812B990:
- ldr r0, _0812B99C @ =0x00000169
- movs r1, 0x1
- bl CheckBagHasItem
- b _0812BAF6
- .align 2, 0
-_0812B99C: .4byte 0x00000169
-_0812B9A0:
- ldr r0, _0812B9A4 @ =0x00000828
- b _0812BAF2
- .align 2, 0
-_0812B9A4: .4byte 0x00000828
-_0812B9A8:
- movs r0, 0x1
- bl sub_8088EDC
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bls _0812B9B8
- b _0812BB08
-_0812B9B8:
- b _0812BB04
-_0812B9BA:
- movs r0, 0x82
- lsls r0, 4
- b _0812BAF2
-_0812B9C0:
- bl sub_812BB10
- b _0812BAF6
-_0812B9C6:
- ldr r0, _0812B9CC @ =0x00000271
- b _0812BAF2
- .align 2, 0
-_0812B9CC: .4byte 0x00000271
-_0812B9D0:
- ldr r0, _0812B9D4 @ =0x0000082c
- b _0812BAF2
- .align 2, 0
-_0812B9D4: .4byte 0x0000082c
-_0812B9D8:
- cmp r0, 0x2
- beq _0812B9DE
- b _0812BADC
-_0812B9DE:
- bl sub_812B754
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0812BA0E
- ldr r0, _0812BA20 @ =gUnknown_845B9BE
- ldrb r1, [r0]
- adds r2, r0, 0
- cmp r1, 0xFF
- beq _0812BA0E
- adds r1, r2, 0
-_0812B9F6:
- adds r0, r4, r1
- ldrb r0, [r0]
- cmp r0, r5
- bne _0812BA00
- b _0812BB04
-_0812BA00:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, r2
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _0812B9F6
-_0812BA0E:
- subs r0, r5, 0x1
- cmp r0, 0x26
- bls _0812BA16
- b _0812BB08
-_0812BA16:
- lsls r0, 2
- ldr r1, _0812BA24 @ =_0812BA28
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0812BA20: .4byte gUnknown_845B9BE
-_0812BA24: .4byte _0812BA28
- .align 2, 0
-_0812BA28:
- .4byte _0812BAC4
- .4byte _0812BAC4
- .4byte _0812BAD2
- .4byte _0812BAC4
- .4byte _0812BAC4
- .4byte _0812BAC4
- .4byte _0812BAC4
- .4byte _0812BAC4
- .4byte _0812BAC4
- .4byte _0812BAC4
- .4byte _0812BAC4
- .4byte _0812BAC4
- .4byte _0812BAC4
- .4byte _0812BB08
- .4byte _0812BAD2
- .4byte _0812BAC4
- .4byte _0812BB08
- .4byte _0812BAD2
- .4byte _0812BAC4
- .4byte _0812BAC4
- .4byte _0812BAC4
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BB08
- .4byte _0812BACC
- .4byte _0812BACC
- .4byte _0812BB08
- .4byte _0812BAD2
-_0812BAC4:
- ldr r0, _0812BAC8 @ =0x00000828
- b _0812BAF2
- .align 2, 0
-_0812BAC8: .4byte 0x00000828
-_0812BACC:
- bl sub_812BB10
- b _0812BAF6
-_0812BAD2:
- ldr r0, _0812BAD8 @ =0x000008a4
- b _0812BAF2
- .align 2, 0
-_0812BAD8: .4byte 0x000008a4
-_0812BADC:
- cmp r0, 0x3
- bne _0812BB00
- cmp r5, 0x5
- beq _0812BAEA
- cmp r5, 0x6
- beq _0812BAF0
- b _0812BB08
-_0812BAEA:
- movs r0, 0x82
- lsls r0, 4
- b _0812BAF2
-_0812BAF0:
- ldr r0, _0812BAFC @ =0x00000821
-_0812BAF2:
- bl FlagGet
-_0812BAF6:
- lsls r0, 24
- lsrs r0, 24
- b _0812BB0A
- .align 2, 0
-_0812BAFC: .4byte 0x00000821
-_0812BB00:
- cmp r0, 0x4
- beq _0812BB08
-_0812BB04:
- movs r0, 0
- b _0812BB0A
-_0812BB08:
- movs r0, 0x1
-_0812BB0A:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_812B780
-
- thumb_func_start sub_812BB10
-sub_812BB10: @ 812BB10
- push {lr}
- ldr r0, _0812BB7C @ =0x00000237
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0812BB94
- movs r0, 0x8E
- lsls r0, 2
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0812BB94
- ldr r0, _0812BB80 @ =0x00000239
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0812BB94
- ldr r0, _0812BB84 @ =0x0000023a
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0812BB94
- ldr r0, _0812BB88 @ =0x0000023b
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0812BB94
- ldr r0, _0812BB8C @ =0x000002ef
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0812BB94
- ldr r0, _0812BB90 @ =0x000001f1
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0812BB94
- movs r0, 0
- b _0812BB96
- .align 2, 0
-_0812BB7C: .4byte 0x00000237
-_0812BB80: .4byte 0x00000239
-_0812BB84: .4byte 0x0000023a
-_0812BB88: .4byte 0x0000023b
-_0812BB8C: .4byte 0x000002ef
-_0812BB90: .4byte 0x000001f1
-_0812BB94:
- movs r0, 0x1
-_0812BB96:
- pop {r1}
- bx r1
- thumb_func_end sub_812BB10
-
- thumb_func_start sub_812BB9C
-sub_812BB9C: @ 812BB9C
- push {lr}
- adds r2, r0, 0
- adds r3, r1, 0
- ldrb r0, [r2, 0xE]
- cmp r0, 0xA
- bhi _0812BC4C
- lsls r0, 2
- ldr r1, _0812BBB4 @ =_0812BBB8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0812BBB4: .4byte _0812BBB8
- .align 2, 0
-_0812BBB8:
- .4byte _0812BC02
- .4byte _0812BC0C
- .4byte _0812BC16
- .4byte _0812BC20
- .4byte _0812BC2A
- .4byte _0812BC34
- .4byte _0812BC3E
- .4byte _0812BC4C
- .4byte _0812BBE4
- .4byte _0812BBEE
- .4byte _0812BBF8
-_0812BBE4:
- adds r0, r2, 0
- adds r1, r3, 0
- bl sub_812BC54
- b _0812BC46
-_0812BBEE:
- adds r0, r2, 0
- adds r1, r3, 0
- bl sub_812BC80
- b _0812BC46
-_0812BBF8:
- adds r0, r2, 0
- adds r1, r3, 0
- bl sub_812BCA8
- b _0812BC46
-_0812BC02:
- adds r0, r2, 0
- adds r1, r3, 0
- bl sub_812BCD0
- b _0812BC46
-_0812BC0C:
- adds r0, r2, 0
- adds r1, r3, 0
- bl sub_812BD2C
- b _0812BC46
-_0812BC16:
- adds r0, r2, 0
- adds r1, r3, 0
- bl sub_812BD64
- b _0812BC46
-_0812BC20:
- adds r0, r2, 0
- adds r1, r3, 0
- bl sub_812BD98
- b _0812BC46
-_0812BC2A:
- adds r0, r2, 0
- adds r1, r3, 0
- bl sub_812BE10
- b _0812BC46
-_0812BC34:
- adds r0, r2, 0
- adds r1, r3, 0
- bl sub_812BEEC
- b _0812BC46
-_0812BC3E:
- adds r0, r2, 0
- adds r1, r3, 0
- bl sub_812BF18
-_0812BC46:
- lsls r0, 24
- lsrs r0, 24
- b _0812BC4E
-_0812BC4C:
- movs r0, 0
-_0812BC4E:
- pop {r1}
- bx r1
- thumb_func_end sub_812BB9C
-
- thumb_func_start sub_812BC54
-sub_812BC54: @ 812BC54
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _0812BC7C @ =gUnknown_841DFA5
- bl sub_812BF74
- bl sub_812BF5C
- movs r0, 0x1
- bl sub_813BDA4
- movs r0, 0x1
- bl sub_813BD5C
- movs r0, 0x9
- strb r0, [r4, 0xE]
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0812BC7C: .4byte gUnknown_841DFA5
- thumb_func_end sub_812BC54
-
- thumb_func_start sub_812BC80
-sub_812BC80: @ 812BC80
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _0812BCA4 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0812BC9A
- movs r0, 0x5
- bl PlaySE
- movs r0, 0xA
- strb r0, [r4, 0xE]
-_0812BC9A:
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0812BCA4: .4byte gMain
- thumb_func_end sub_812BC80
-
- thumb_func_start sub_812BCA8
-sub_812BCA8: @ 812BCA8
- push {r4-r6,lr}
- adds r4, r0, 0
- adds r6, r1, 0
- ldr r0, _0812BCCC @ =gUnknown_3005E9C
- movs r5, 0
- strb r5, [r0, 0x2]
- adds r0, r4, 0
- bl sub_812BF94
- adds r0, r4, 0
- adds r1, r6, 0
- bl sub_812B4D8
- strb r5, [r4, 0xE]
- movs r0, 0x1
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0812BCCC: .4byte gUnknown_3005E9C
- thumb_func_end sub_812BCA8
-
- thumb_func_start sub_812BCD0
-sub_812BCD0: @ 812BCD0
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl sub_813C690
- adds r1, r0, 0
- adds r0, r1, 0x6
- cmp r0, 0x5
- bhi _0812BD16
- lsls r0, 2
- ldr r1, _0812BCEC @ =_0812BCF0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0812BCEC: .4byte _0812BCF0
- .align 2, 0
-_0812BCF0:
- .4byte _0812BD08
- .4byte _0812BD0C
- .4byte _0812BD0C
- .4byte _0812BD1E
- .4byte _0812BD08
- .4byte _0812BD1E
-_0812BD08:
- movs r0, 0
- b _0812BD20
-_0812BD0C:
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_812BF9C
- b _0812BD1E
-_0812BD16:
- ldr r0, _0812BD28 @ =gUnknown_3005E9C
- strb r1, [r0, 0x1]
- movs r0, 0x1
- strb r0, [r4, 0xE]
-_0812BD1E:
- movs r0, 0x1
-_0812BD20:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0812BD28: .4byte gUnknown_3005E9C
- thumb_func_end sub_812BCD0
-
- thumb_func_start sub_812BD2C
-sub_812BD2C: @ 812BD2C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r1, _0812BD60 @ =gUnknown_3005E9C
- movs r0, 0x1
- strb r0, [r1]
- ldrb r0, [r4, 0xD]
- strb r0, [r1, 0x2]
- adds r0, r4, 0
- bl sub_812BF94
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_812B5A8
- bl sub_813C75C
- movs r0, 0x2
- bl sub_813C684
- movs r0, 0x3
- strb r0, [r4, 0xE]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0812BD60: .4byte gUnknown_3005E9C
- thumb_func_end sub_812BD2C
-
- thumb_func_start sub_812BD64
-sub_812BD64: @ 812BD64
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r6, r1, 0
- movs r0, 0
- movs r1, 0
- bl sub_813C004
- movs r0, 0x1
- movs r1, 0
- bl sub_813C004
- ldr r0, _0812BD94 @ =gUnknown_3005E9C
- movs r4, 0
- strb r4, [r0]
- adds r0, r5, 0
- adds r1, r6, 0
- bl sub_812B4D8
- strb r4, [r5, 0xE]
- movs r0, 0x1
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0812BD94: .4byte gUnknown_3005E9C
- thumb_func_end sub_812BD64
-
- thumb_func_start sub_812BD98
-sub_812BD98: @ 812BD98
- push {r4,lr}
- adds r4, r0, 0
- bl sub_813C690
- adds r1, r0, 0
- adds r0, r1, 0x6
- cmp r0, 0x5
- bhi _0812BDD8
- lsls r0, 2
- ldr r1, _0812BDB4 @ =_0812BDB8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0812BDB4: .4byte _0812BDB8
- .align 2, 0
-_0812BDB8:
- .4byte _0812BDD0
- .4byte _0812BDE0
- .4byte _0812BDE0
- .4byte _0812BDE0
- .4byte _0812BDD4
- .4byte _0812BDE0
-_0812BDD0:
- movs r0, 0
- b _0812BDE2
-_0812BDD4:
- movs r0, 0x2
- b _0812BDDE
-_0812BDD8:
- ldr r0, _0812BDE8 @ =gUnknown_3005E9C
- strb r1, [r0, 0x3]
- movs r0, 0x4
-_0812BDDE:
- strb r0, [r4, 0xE]
-_0812BDE0:
- movs r0, 0x1
-_0812BDE2:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0812BDE8: .4byte gUnknown_3005E9C
- thumb_func_end sub_812BD98
-
- thumb_func_start sub_812BDEC
-sub_812BDEC: @ 812BDEC
- push {lr}
- ldr r1, _0812BE08 @ =gUnknown_845B080
- ldr r0, _0812BE0C @ =gUnknown_3005E9C
- ldrb r0, [r0, 0x1]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0
- movs r2, 0
- bl sub_813C4CC
- pop {r0}
- bx r0
- .align 2, 0
-_0812BE08: .4byte gUnknown_845B080
-_0812BE0C: .4byte gUnknown_3005E9C
- thumb_func_end sub_812BDEC
-
- thumb_func_start sub_812BE10
-sub_812BE10: @ 812BE10
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _0812BE4C @ =gUnknown_3005E9C
- movs r0, 0x2
- strb r0, [r4]
- movs r0, 0
- bl sub_813BDA4
- bl sub_813C624
- ldr r0, _0812BE50 @ =gUnknown_841DFBE
- bl sub_812BF74
- movs r0, 0x1
- bl sub_813BDE8
- movs r0, 0x1
- bl sub_813BEE4
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- bne _0812BE5C
- ldr r0, _0812BE54 @ =gUnknown_845B0B0
- ldrb r1, [r4, 0x3]
- lsls r1, 2
- adds r0, r1, r0
- ldr r0, [r0]
- ldr r2, _0812BE58 @ =gUnknown_845B164
- b _0812BEA4
- .align 2, 0
-_0812BE4C: .4byte gUnknown_3005E9C
-_0812BE50: .4byte gUnknown_841DFBE
-_0812BE54: .4byte gUnknown_845B0B0
-_0812BE58: .4byte gUnknown_845B164
-_0812BE5C:
- cmp r0, 0x1
- bne _0812BE78
- ldr r0, _0812BE70 @ =gUnknown_845B218
- ldrb r1, [r4, 0x3]
- lsls r1, 2
- adds r0, r1, r0
- ldr r0, [r0]
- ldr r2, _0812BE74 @ =gUnknown_845B2DC
- b _0812BEA4
- .align 2, 0
-_0812BE70: .4byte gUnknown_845B218
-_0812BE74: .4byte gUnknown_845B2DC
-_0812BE78:
- cmp r0, 0x2
- bne _0812BE94
- ldr r0, _0812BE8C @ =gUnknown_845B3A0
- ldrb r1, [r4, 0x3]
- lsls r1, 2
- adds r0, r1, r0
- ldr r0, [r0]
- ldr r2, _0812BE90 @ =gUnknown_845B450
- b _0812BEA4
- .align 2, 0
-_0812BE8C: .4byte gUnknown_845B3A0
-_0812BE90: .4byte gUnknown_845B450
-_0812BE94:
- cmp r0, 0x3
- bne _0812BEB8
- ldr r0, _0812BEB0 @ =gUnknown_845B500
- ldrb r1, [r4, 0x3]
- lsls r1, 2
- adds r0, r1, r0
- ldr r0, [r0]
- ldr r2, _0812BEB4 @ =gUnknown_845B520
-_0812BEA4:
- adds r1, r2
- ldr r1, [r1]
- bl sub_813C50C
- b _0812BECC
- .align 2, 0
-_0812BEB0: .4byte gUnknown_845B500
-_0812BEB4: .4byte gUnknown_845B520
-_0812BEB8:
- ldr r0, _0812BEE4 @ =gUnknown_845B540
- ldrb r1, [r4, 0x3]
- lsls r1, 2
- adds r0, r1, r0
- ldr r0, [r0]
- ldr r2, _0812BEE8 @ =gUnknown_845B5D0
- adds r1, r2
- ldr r1, [r1]
- bl sub_813C50C
-_0812BECC:
- movs r0, 0x1
- bl sub_813BDA4
- movs r0, 0x1
- bl sub_813BD5C
- movs r0, 0x6
- strb r0, [r5, 0xE]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0812BEE4: .4byte gUnknown_845B540
-_0812BEE8: .4byte gUnknown_845B5D0
- thumb_func_end sub_812BE10
-
- thumb_func_start sub_812BEEC
-sub_812BEEC: @ 812BEEC
- push {r4,lr}
- adds r4, r0, 0
- ldr r2, _0812BF14 @ =gUnknown_3005E9C
- movs r0, 0x1
- strb r0, [r2]
- adds r0, r4, 0
- bl sub_812B5A8
- bl sub_813C75C
- movs r0, 0x2
- bl sub_813C684
- movs r0, 0x3
- strb r0, [r4, 0xE]
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0812BF14: .4byte gUnknown_3005E9C
- thumb_func_end sub_812BEEC
-
- thumb_func_start sub_812BF18
-sub_812BF18: @ 812BF18
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _0812BF40 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _0812BF30
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0812BF44
-_0812BF30:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x5
- strb r0, [r4, 0xE]
- movs r0, 0x1
- b _0812BF54
- .align 2, 0
-_0812BF40: .4byte gMain
-_0812BF44:
- movs r0, 0xC0
- lsls r0, 2
- ands r0, r1
- cmp r0, 0
- bne _0812BF52
- movs r0, 0x1
- b _0812BF54
-_0812BF52:
- movs r0, 0
-_0812BF54:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_812BF18
-
- thumb_func_start sub_812BF5C
-sub_812BF5C: @ 812BF5C
- push {lr}
- bl sub_813C624
- ldr r0, _0812BF70 @ =gUnknown_81B2FC9
- movs r1, 0
- movs r2, 0
- bl sub_813C4CC
- pop {r0}
- bx r0
- .align 2, 0
-_0812BF70: .4byte gUnknown_81B2FC9
- thumb_func_end sub_812BF5C
-
- thumb_func_start sub_812BF74
-sub_812BF74: @ 812BF74
- push {r4,lr}
- adds r4, r0, 0
- bl sub_813C5FC
- adds r0, r4, 0
- bl sub_813C488
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_812BF74
-
- thumb_func_start sub_812BF88
-sub_812BF88: @ 812BF88
- ldr r0, _0812BF90 @ =gUnknown_3005E9C
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0812BF90: .4byte gUnknown_3005E9C
- thumb_func_end sub_812BF88
-
- thumb_func_start sub_812BF94
-sub_812BF94: @ 812BF94
- movs r1, 0
- strb r1, [r0, 0xC]
- strb r1, [r0, 0xD]
- bx lr
- thumb_func_end sub_812BF94
-
- thumb_func_start sub_812BF9C
-sub_812BF9C: @ 812BF9C
- push {lr}
- ldrb r2, [r0, 0xC]
- ldrb r0, [r0, 0xD]
- adds r2, r0
- lsls r2, 3
- adds r2, r1
- ldr r1, [r2, 0x4]
- movs r0, 0x2
- negs r0, r0
- cmp r1, r0
- bne _0812BFC0
- ldr r0, _0812BFBC @ =gUnknown_845B098
- ldr r0, [r0, 0x14]
- bl sub_813C584
- b _0812BFCC
- .align 2, 0
-_0812BFBC: .4byte gUnknown_845B098
-_0812BFC0:
- ldr r0, _0812BFD8 @ =gUnknown_845B098
- lsls r1, 2
- adds r1, r0
- ldr r0, [r1]
- bl sub_813C584
-_0812BFCC:
- movs r0, 0x1
- bl sub_813BE30
- pop {r0}
- bx r0
- .align 2, 0
-_0812BFD8: .4byte gUnknown_845B098
- thumb_func_end sub_812BF9C
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/save_failed_screen.s b/asm/save_failed_screen.s
index cbb07e4c7..4c2ac1f7e 100644
--- a/asm/save_failed_screen.s
+++ b/asm/save_failed_screen.s
@@ -419,7 +419,7 @@ sub_80F5404: @ 80F5404
adds r1, r4, 0
adds r2, r5, 0
movs r3, 0x2
- bl sub_813C078
+ bl HelpSystemRenderText
bl sub_80F5334
add sp, 0x10
pop {r4,r5}
diff --git a/charmap.txt b/charmap.txt
index 11941ca58..fe0747616 100644
--- a/charmap.txt
+++ b/charmap.txt
@@ -323,14 +323,47 @@ TALL_PLUS = FC 0C FB
@ TODO: Identify and declare F7 control codes
UNKNOWN_F7 = F7
-UNKNOWN_F8 = F8
-UNKNOWN_F9 = F9
+KEYGFX = F8
+EXTRA = F9
-KEYGFX_A_BUTTON = F8 00
-KEYGFX_B_BUTTON = F8 01
-KEYGFX_START_BUTTON = F8 04
-KEYGFX_DPAD_UP_DOWN = F8 0A
-KEYGFX_DPAD_ANY = F8 0C
+KEYGFX_A_BUTTON = F8 00
+KEYGFX_B_BUTTON = F8 01
+KEYGFX_L_BUTTON = F8 02
+KEYGFX_R_BUTTON = F8 03
+KEYGFX_START_BUTTON = F8 04
+KEYGFX_SELECT_BUTTON = F8 05
+KEYGFX_DPAD_UP = F8 06
+KEYGFX_DPAD_DOWN = F8 07
+KEYGFX_DPAD_LEFT = F8 08
+KEYGFX_DPAD_RIGHT = F8 09
+KEYGFX_DPAD_UP_DOWN = F8 0A
+KEYGFX_DPAD_LEFT_RIGHT = F8 0B
+KEYGFX_DPAD_ANY = F8 0C
+
+EXTRA_UPARROW = F9 00
+EXTRA_DOWNARROW = F9 01
+EXTRA_LEFTARROW = F9 02
+EXTRA_RIGHTARROW = F9 03
+EXTRA_PLUS = F9 04
+EXTRA_LV = F9 05
+EXTRA_PP = F9 06
+EXTRA_ID = F9 07
+EXTRA_NO = F9 08
+EXTRA_UNDERSCORE = F9 09
+EXTRA_CIRCLE_1 = F9 0A
+EXTRA_CIRCLE_2 = F9 0B
+EXTRA_CIRCLE_3 = F9 0C
+EXTRA_CIRCLE_4 = F9 0D
+EXTRA_CIRCLE_5 = F9 0E
+EXTRA_CIRCLE_6 = F9 0F
+EXTRA_CIRCLE_7 = F9 10
+EXTRA_CIRCLE_8 = F9 11
+EXTRA_CIRCLE_9 = F9 12
+EXTRA_LEFT_PAREN = F9 13
+EXTRA_RIGHT_PAREN = F9 14
+EXTRA_TARGET = F9 15
+EXTRA_TRIANGLE = F9 16
+EXTRA_X = F9 17
STRING = FD
@@ -377,7 +410,7 @@ PAUSE_UNTIL_PRESS = FC 09
UNKNOWN_A = FC 0A
PLAY_BGM = FC 0B
ESCAPE = FC 0C
-SHIFT_TEXT = FC 0D
+SHIFT_TEXT = FC 0D
UNKNOWN_E = FC 0E
UNKNOWN_F = FC 0F
PLAY_SE = FC 10
diff --git a/common_syms/help_system_812B1E0.txt b/common_syms/help_system_812B1E0.txt
new file mode 100644
index 000000000..7986bedb5
--- /dev/null
+++ b/common_syms/help_system_812B1E0.txt
@@ -0,0 +1,2 @@
+gUnknown_3005E9C
+gUnknown_3005EA0
diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s
index 1f61683bf..eb922b028 100644
--- a/data/data_83FECCC.s
+++ b/data/data_83FECCC.s
@@ -818,31 +818,33 @@ gUnknown_8416221:: @ 8416221
.string "♀$"
gText_Lv:: @ 8416223
- .string "{UNKNOWN_F9 0x05}$"
+ .string "{EXTRA_LV}$"
gOtherText_UnkF9_08_Clear_01:: @ 8416226
- .string "{UNKNOWN_F9 0x08}{CLEAR 0x01}$"
+ .string "{EXTRA_NO}{CLEAR 0x01}$"
gUnknown_841622C::
- .string "{UNKNOWN_F9 0x04}$"
+ .string "{EXTRA_PLUS}$"
gUnknown_841622F::
.string "{ESCAPE 0x03}$"
gUnknown_8416233::
- .string "{UNKNOWN_F9 0x07}{UNKNOWN_F9 0x08}$"
+ .string "{EXTRA_ID}{EXTRA_NO}$"
gUnknown_8416238:: @ 8416238
- .string "{UNKNOWN_F9 0x06}$"
+ .string "{EXTRA_PP}$"
gFameCheckerText_ListMenuCursor:: @ 841623B
.string "▶$"
gUnknown_841623D:: @ 841623D
- .string "YES\nNO$"
+ .string "YES\n"
+ .string "NO$"
gUnknown_8416244::
- .string "Go back to the\nprevious menu.$"
+ .string "Go back to the\n"
+ .string "previous menu.$"
gUnknown_8416262:: @ 8416262
.string "What would you like to do?$"
@@ -872,7 +874,8 @@ gUnknown_84162A2::
.string "RETIRE$"
gUnknown_84162A9:: @ 84162A9
- .string "{STR_VAR_1}/{STR_VAR_2}\nBALLS {STR_VAR_3}$"
+ .string "{STR_VAR_1}/{STR_VAR_2}\n"
+ .string "BALLS {STR_VAR_3}$"
gText_TimesStrVar1:: @ 84162B9
.string "×{STR_VAR_1}$"
@@ -893,7 +896,8 @@ gUnknown_84162FF:: @ 84162FF
.incbin "baserom.gba", 0x4162FF, 0x2
gText_IsSelected:: @ 8416301
- .string " is\nselected.$"
+ .string " is\n"
+ .string "selected.$"
gUnknown_841630F:: @ 841630F
.incbin "baserom.gba", 0x41630F, 0x1B
@@ -1344,7 +1348,8 @@ gFameCheckerText_FameCheckerWillBeClosed:: @ 84181C3
.string "The FAME CHECKER will be closed.$"
gFameCheckerText_ClearTextbox:: @ 84181E4
- .string "\n $"
+ .string "\n"
+ .string " $"
gUnknown_8418204:: @ 8418204
.incbin "baserom.gba", 0x00418204, 0x48c
@@ -1569,64 +1574,64 @@ gUnknown_841979D:: @ 841979D
gUnknown_84197B8:: @ 84197B8
.string "{UNKNOWN_F7 0x00} nature.\n"
.string "Met in a fateful encounter when\n"
- .string "at {UNKNOWN_F9 0x05} {UNKNOWN_F7 0x01}.$"
+ .string "at {EXTRA_LV} {UNKNOWN_F7 0x01}.$"
gUnknown_84197ED:: @ 84197ED
.string "{UNKNOWN_F7 0x00} nature.\n"
.string "Met in a fateful encounter when\n"
- .string "at {UNKNOWN_F9 0x05} {UNKNOWN_F7 0x01}.$"
+ .string "at {EXTRA_LV} {UNKNOWN_F7 0x01}.$"
gUnknown_8419822:: @ 8419822
.string "{UNKNOWN_F7 0x00} nature.\n"
- .string "Met in {UNKNOWN_F7 0x02} at {UNKNOWN_F9 0x05} {UNKNOWN_F7 0x01}.$"
+ .string "Met in {UNKNOWN_F7 0x02} at {EXTRA_LV} {UNKNOWN_F7 0x01}.$"
gUnknown_8419841:: @ 8419841
.string "{UNKNOWN_F7 0x00} nature.\n"
- .string "Met in {UNKNOWN_F7 0x02} at {UNKNOWN_F9 0x05} {UNKNOWN_F7 0x01}.$"
+ .string "Met in {UNKNOWN_F7 0x02} at {EXTRA_LV} {UNKNOWN_F7 0x01}.$"
gUnknown_8419860:: @ 8419860
.string "{UNKNOWN_F7 0x00} nature.\n"
.string "Apparently met in {UNKNOWN_F7 0x02}\n"
- .string "at {UNKNOWN_F9 0x05} {UNKNOWN_F7 0x01}.$"
+ .string "at {EXTRA_LV} {UNKNOWN_F7 0x01}.$"
gUnknown_841988A:: @ 841988A
.string "{UNKNOWN_F7 0x00} nature.\n"
.string "Apparently met in {UNKNOWN_F7 0x02}\n"
- .string "at {UNKNOWN_F9 0x05} {UNKNOWN_F7 0x01}.$"
+ .string "at {EXTRA_LV} {UNKNOWN_F7 0x01}.$"
gUnknown_84198B4:: @ 84198B4
.string "{UNKNOWN_F7 0x00} nature.\n"
.string "Hatched: {UNKNOWN_F7 0x02}\n"
- .string "at {UNKNOWN_F9 0x05} {UNKNOWN_F7 0x01}.$"
+ .string "at {EXTRA_LV} {UNKNOWN_F7 0x01}.$"
gUnknown_84198D5:: @ 84198D5
.string "{UNKNOWN_F7 0x00} nature.\n"
.string "Hatched: {UNKNOWN_F7 0x02}\n"
- .string "at {UNKNOWN_F9 0x05} {UNKNOWN_F7 0x01}.$"
+ .string "at {EXTRA_LV} {UNKNOWN_F7 0x01}.$"
@ TODO: Replace this gibberish with the proper Hiragana
gUnknown_84198F6:: @ 84198F6
- .string "{UNKNOWN_F7 0x00}ßÓÁÉË {UNKNOWN_F9 0x05}{UNKNOWN_F7 0x01}çÑÊ\n"
+ .string "{UNKNOWN_F7 0x00}ßÓÁÉË {EXTRA_LV}{UNKNOWN_F7 0x01}çÑÊ\n"
.string "{UNKNOWN_F7 0x02}で ÉÇっŒ ùÂだ$"
gUnknown_8419913:: @ 8419913
- .string "{UNKNOWN_F7 0x00}ÓÁÉË {UNKNOWN_F9 0x05}{UNKNOWN_F7 0x01}çÑÊ\n"
+ .string "{UNKNOWN_F7 0x00}ÓÁÉË {EXTRA_LV}{UNKNOWN_F7 0x01}çÑÊ\n"
.string "{UNKNOWN_F7 0x02}で ÉÇっŒ ùÂだ$"
gUnknown_841992F:: @ 841992F
.string "{UNKNOWN_F7 0x00} nature. Met in a fateful\n"
.string "encounter (hatched: {UNKNOWN_F7 0x02}\n"
- .string "at {UNKNOWN_F9 0x05} {UNKNOWN_F7 0x01}).$"
+ .string "at {EXTRA_LV} {UNKNOWN_F7 0x01}).$"
gUnknown_841996D:: @ 841996D
.string "{UNKNOWN_F7 0x00} nature. Met in a fateful\n"
.string "encounter (hatched: {UNKNOWN_F7 0x02}\n"
- .string "at {UNKNOWN_F9 0x05} {UNKNOWN_F7 0x01}).$"
+ .string "at {EXTRA_LV} {UNKNOWN_F7 0x01}).$"
gUnknown_84199AB:: @ 84199AB
.string "{UNKNOWN_F7 0x00} nature. Apparently met in\n"
.string "a fateful encounter (hatched:\n"
- .string "{UNKNOWN_F7 0x02} at {UNKNOWN_F9 0x05} {UNKNOWN_F7 0x01}).$"
+ .string "{UNKNOWN_F7 0x02} at {EXTRA_LV} {UNKNOWN_F7 0x01}).$"
gUnknown_84199F4:: @ 84199F4
.incbin "baserom.gba", 0x4199F4, 0x217
@@ -2136,37 +2141,84 @@ gUnknown_841DFA0:: @ 841DFA0
.string "GOLD$"
gUnknown_841DFA5:: @ 841DFA5
- .incbin "baserom.gba", 0x41DFA5, 0x7
+ .string "{KEYGFX_A_BUTTON}NEXT$"
gUnknown_841DFAC:: @ 841DFAC
- .incbin "baserom.gba", 0x41DFAC, 0x12
+ .string "{KEYGFX_DPAD_UP_DOWN}PICK {KEYGFX_A_BUTTON}OK {KEYGFX_B_BUTTON}END$"
gUnknown_841DFBE:: @ 841DFBE
- .incbin "baserom.gba", 0x41DFBE, 0xB
+ .string "{KEYGFX_A_BUTTON}{KEYGFX_B_BUTTON}CANCEL$"
gUnknown_841DFC9:: @ 841DFC9
- .incbin "baserom.gba", 0x41DFC9, 0xCA
-
+ .string "{KEYGFX_DPAD_UP_DOWN}PICK {KEYGFX_A_BUTTON}OK {KEYGFX_B_BUTTON}CANCEL$"
+
+ @ easy chat categories
+ .string "POKéMON$"
+ .string "TRAINER$"
+ .string "STATUS$"
+ .string "BATTLE$"
+ .string "GREETINGS$"
+ .string "PEOPLE$"
+ .string "VOICES$"
+ .string "SPEECH$"
+ .string "ENDINGS$"
+ .string "FEELINGS$"
+ .string "CONDITIONS$"
+ .string "ACTIONS$"
+ .string "LIFESTYLE$"
+ .string "HOBBIES$"
+ .string "TIME$"
+ .string "MISC.$"
+ .string "ADJECTIVES$"
+ .string "EVENTS$"
+ .string "MOVE 1$"
+ .string "MOVE 2$"
+ .string "TRENDY SAYING$"
+ .string "POKéMON2$"
+
+ @ trade-related
gUnknown_841E093:: @ 841E093
- .incbin "baserom.gba", 0x41E093, 0xC
+ .string "???$"
+ .string "$"
+ .string "Lv$"
+ .string "---$"
gUnknown_841E09F:: @ 841E09F
- .incbin "baserom.gba", 0x41E09F, 0x6
+ .string "????$"
+ .string "$"
gUnknown_841E0A5:: @ 841E0A5
- .incbin "baserom.gba", 0x41E0A5, 0x144
+ .string "Is this trade okay?$"
+ .string "CANCEL$"
+ .string "Choose a POKéMON.$"
+ .string "SUMMARY$"
+ .string "TRADE$"
+ .string "Cancel trade?$"
+ .string "Press the B Button to exit.$"
+ .string "SUMMARY$"
+ .string "TRADE$"
+ .string "{COLOR RED}{HIGHLIGHT DARK_GREY}{SHADOW GREEN}Communication standby…\n"
+ .string "Please wait.$"
+ .string "{COLOR RED}{HIGHLIGHT DARK_GREY}{SHADOW GREEN}The trade has been canceled.$"
+ .string "{COLOR RED}{HIGHLIGHT DARK_GREY}{SHADOW GREEN}That's your only POKéMON\n"
+ .string "for battle.$"
+ .string "{COLOR RED}{HIGHLIGHT DARK_GREY}{SHADOW GREEN}Waiting for your friend\n"
+ .string "to finish…$"
+ .string "Your friend wants\n"
+ .string "to trade POKéMON.$"
gUnknown_841E1E9:: @ 841E1E9
- .incbin "baserom.gba", 0x41E1E9, 0x17
+ .string "{STR_VAR_2} will be\n"
+ .string "sent to {STR_VAR_1}.$"
gUnknown_841E200:: @ 841E200
- .incbin "baserom.gba", 0x41E200, 0xD
+ .string "Bye-bye, {STR_VAR_2}!$"
gUnknown_841E20D:: @ 841E20D
- .incbin "baserom.gba", 0x41E20D, 0x11
+ .string "{STR_VAR_1} sent over {STR_VAR_3}.$"
gUnknown_841E21E:: @ 841E21E
- .incbin "baserom.gba", 0x41E21E, 0x16
+ .string "Take good care of {STR_VAR_3}!$"
gUnknown_841E234:: @ 841E234
.string "From $"
@@ -2241,22 +2293,25 @@ gUnknown_841E2F5:: @ 841E2F5
.incbin "baserom.gba", 0x41e2f5, 0x2d
gUnknown_841E322:: @ 841E322
- .string "{UNKNOWN_F9 0x07}$"
+ .string "{EXTRA_ID}$"
gUnknown_841E325:: @ 841E325
.string "Communication standby…$"
gDaycareText_GetAlongVeryWell:: @ 841E33C
- .string "The two seem to get along\nvery well.$"
+ .string "The two seem to get along\n"
+ .string "very well.$"
gDaycareText_GetAlong:: @ 841E361
.string "The two seem to get along.$"
gDaycareText_DontLikeOther:: @ 841E37C
- .string "The two don't seem to like\neach other much.$"
+ .string "The two don't seem to like\n"
+ .string "each other much.$"
gDaycareText_PlayOther:: @ 841E3A8
- .string "The two prefer to play with other\nPOKéMON than each other.$"
+ .string "The two prefer to play with other\n"
+ .string "POKéMON than each other.$"
gUnknown_841E3E3:: @ 841E3E3
.incbin "baserom.gba", 0x41E3E3, 0x18
@@ -2301,7 +2356,7 @@ gFameCheckerText_PickScreenUI:: @ 841E5B9
.string "{KEYGFX_START_BUTTON}PICK {KEYGFX_DPAD_UP_DOWN}SELECT {KEYGFX_B_BUTTON}CANCEL$"
gFameCheckerText_FlavorTextUI:: @ 841E5D2
- .string "{KEYGFX_DPAD_ANY}PICK {KEYGFX_A_BUTTON}READ {UNKNOWN_F8 0x01}CANCEL$"
+ .string "{KEYGFX_DPAD_ANY}PICK {KEYGFX_A_BUTTON}READ {KEYGFX_B_BUTTON}CANCEL$"
gFameCheckerOakName:: @ 841E5E9
.string "OAK$"
@@ -2330,19 +2385,24 @@ gText_ReturnToTitle:: @ 841E685
.string "Return to the title screen.$"
gText_DontHaveCardNewOneInput:: @ 841E6A1
- .string "You don't have a WONDER CARD,\nso a new CARD will be input.$"
+ .string "You don't have a WONDER CARD,\n"
+ .string "so a new CARD will be input.$"
gText_DontHaveNewsNewOneInput:: @ 841E6DC
- .string "You don't have any WONDER NEWS,\nso new NEWS will be input.$"
+ .string "You don't have any WONDER NEWS,\n"
+ .string "so new NEWS will be input.$"
gText_WhereShouldCardBeAccessed:: @ 841E717
- .string "Where should the WONDER CARD\nbe accessed?$"
+ .string "Where should the WONDER CARD\n"
+ .string "be accessed?$"
gText_WhereShouldNewsBeAccessed:: @ 841E741
- .string "Where should the WONDER NEWS\nbe accessed?$"
+ .string "Where should the WONDER NEWS\n"
+ .string "be accessed?$"
gUnknown_841E76B:: @ 841E76B
- .string "Link standby...\n... ... B Button: Cancel$"
+ .string "Link standby...\n"
+ .string "... ... B Button: Cancel$"
gText_Communicating:: @ 841E794
.string "Communicating…$"
@@ -2357,22 +2417,28 @@ gText_CommunicationCanceled:: @ 841E7D1
.string "Communication has been canceled.$"
gText_ThrowAwayWonderCard:: @ 841E7F2
- .string "Throw away the WONDER CARD\nand input a new CARD?$"
+ .string "Throw away the WONDER CARD\n"
+ .string "and input a new CARD?$"
gText_HaventReceivedCardsGift:: @ 841E823
- .string "You haven't received the CARD's gift\nyet. Input a new CARD anyway?$"
+ .string "You haven't received the CARD's gift\n"
+ .string "yet. Input a new CARD anyway?$"
gText_WonderCardReceivedFrom:: @ 841E866
- .string "A WONDER CARD has been received\nfrom {STR_VAR_1}.$"
+ .string "A WONDER CARD has been received\n"
+ .string "from {STR_VAR_1}.$"
gText_WonderNewsReceivedFrom:: @ 841E88F
- .string "A WONDER NEWS item has been\nreceived from {STR_VAR_1}.$"
+ .string "A WONDER NEWS item has been\n"
+ .string "received from {STR_VAR_1}.$"
gText_WonderCardReceived:: @ 841E8BD
- .string "A new WONDER CARD has been\nreceived.$"
+ .string "A new WONDER CARD has been\n"
+ .string "received.$"
gText_WonderNewsReceived:: @ 841E8E2
- .string "A new WONDER NEWS item has been\nreceived.$"
+ .string "A new WONDER NEWS item has been\n"
+ .string "received.$"
gText_NewStampReceived:: @ 841E90C
.string "A new STAMP has been received.$"
@@ -2381,34 +2447,43 @@ gText_NewTrainerReceived:: @ 841E92B
.string "A new TRAINER has arrived.$"
gText_AlreadyHadCard:: @ 841E946
- .string "You already had that\nWONDER CARD.$"
+ .string "You already had that\n"
+ .string "WONDER CARD.$"
gText_AlreadyHadNews:: @ 841E968
- .string "You already had that\nWONDER NEWS item.$"
+ .string "You already had that\n"
+ .string "WONDER NEWS item.$"
gText_AlreadyHadStamp:: @ 841E98F
- .string "You already had that\nSTAMP.$"
+ .string "You already had that\n"
+ .string "STAMP.$"
gText_NoMoreRoomForStamps:: @ 841E9AB
- .string "There's no more room for adding\nSTAMPS.$"
+ .string "There's no more room for adding\n"
+ .string "STAMPS.$"
gText_RecordUploadedViaWireless:: @ 841E9D3
- .string "Your record has been uploaded via\nWIRELESS COMMUNICATION.$"
+ .string "Your record has been uploaded via\n"
+ .string "WIRELESS COMMUNICATION.$"
gText_CantAcceptCardFromTrainer:: @ 841EA0D
- .string "You can't accept a WONDER CARD\nfrom this TRAINER.$"
+ .string "You can't accept a WONDER CARD\n"
+ .string "from this TRAINER.$"
gText_CantAcceptNewsFromTrainer:: @ 841EA3F
- .string "You can't accept WONDER NEWS\nfrom this TRAINER.$"
+ .string "You can't accept WONDER NEWS\n"
+ .string "from this TRAINER.$"
gText_NothingSentOver:: @ 841EA6F
.string "Nothing was sent over…$"
gText_WhatToDoWithCards:: @ 841EA86
- .string "What would you like to do\nwith the WONDER CARDS?$"
+ .string "What would you like to do\n"
+ .string "with the WONDER CARDS?$"
gText_WhatToDoWithNews:: @ 841EAB7
- .string "What would you like to do\nwith the WONDER NEWS?$"
+ .string "What would you like to do\n"
+ .string "with the WONDER NEWS?$"
gText_SendingWonderCard:: @ 841EAE7
.string "Sending your WONDER CARD…$"
@@ -2417,10 +2492,12 @@ gText_SendingWonderNews:: @ 841EB01
.string "Sending your WONDER NEWS item…$"
gText_WonderCardSentTo:: @ 841EB20
- .string "Your WONDER CARD has been sent\nto {STR_VAR_1}.$"
+ .string "Your WONDER CARD has been sent\n"
+ .string "to {STR_VAR_1}.$"
gText_WonderNewsSentTo:: @ 841EB46
- .string "Your WONDER NEWS item has been\nsent to {STR_VAR_1}.$"
+ .string "Your WONDER NEWS item has been\n"
+ .string "sent to {STR_VAR_1}.$"
gText_StampSentTo:: @ 841EB71
.string "A STAMP has been sent to {STR_VAR_1}.$"
@@ -2429,34 +2506,44 @@ gText_GiftSentTo:: @ 841EB8E
.string "A GIFT has been sent to {STR_VAR_1}.$"
gText_OtherTrainerHasCard:: @ 841EBAA
- .string "The other TRAINER has the same\nWONDER CARD already.$"
+ .string "The other TRAINER has the same\n"
+ .string "WONDER CARD already.$"
gText_OtherTrainerHasNews:: @ 841EBDE
- .string "The other TRAINER has the same\nWONDER NEWS already.$"
+ .string "The other TRAINER has the same\n"
+ .string "WONDER NEWS already.$"
gText_OtherTrainerHasStamp:: @ 841EC12
- .string "The other TRAINER has the same\nSTAMP already.$"
+ .string "The other TRAINER has the same\n"
+ .string "STAMP already.$"
gText_OtherTrainerCanceled:: @ 841EC40
- .string "The other TRAINER canceled\ncommunication.$"
+ .string "The other TRAINER canceled\n"
+ .string "communication.$"
gText_CantSendGiftToTrainer:: @ 841EC6A
- .string "You can't send a MYSTERY GIFT to\nthis TRAINER.$"
+ .string "You can't send a MYSTERY GIFT to\n"
+ .string "this TRAINER.$"
gText_IfThrowAwayCardEventWontHappen:: @ 841EC99
- .string "If you throw away the CARD,\nits event won't happen. Okay?$"
+ .string "If you throw away the CARD,\n"
+ .string "its event won't happen. Okay?$"
gText_OkayToDiscardNews:: @ 841ECD3
- .string "Is it okay to discard this\nNEWS item?$"
+ .string "Is it okay to discard this\n"
+ .string "NEWS item?$"
gText_HaventReceivedGiftOkayToDiscard:: @ 841ECF9
- .string "You haven't received the\nGIFT. Is it okay to discard?$"
+ .string "You haven't received the\n"
+ .string "GIFT. Is it okay to discard?$"
gText_DataWillBeSaved:: @ 841ED2F
- .string "Data will be saved.\nPlease wait.$"
+ .string "Data will be saved.\n"
+ .string "Please wait.$"
gText_SaveCompletedPressA:: @ 841ED50
- .string "Save completed.\nPlease press the A Button.$"
+ .string "Save completed.\n"
+ .string "Please press the A Button.$"
gText_WonderCardThrownAway:: @ 841ED7B
.string "The WONDER CARD was thrown away.$"
@@ -3726,60 +3813,3 @@ gUnknown_845B050:: @ 845B050
gUnknown_845B068:: @ 845B068
.incbin "baserom.gba", 0x45B068, 0x18
-
-gUnknown_845B080:: @ 845B080
- .incbin "baserom.gba", 0x45B080, 0x18
-
-gUnknown_845B098:: @ 845B098
- .incbin "baserom.gba", 0x45B098, 0x18
-
-gUnknown_845B0B0:: @ 845B0B0
- .incbin "baserom.gba", 0x45B0B0, 0xB4
-
-gUnknown_845B164:: @ 845B164
- .incbin "baserom.gba", 0x45B164, 0xB4
-
-gUnknown_845B218:: @ 845B218
- .incbin "baserom.gba", 0x45B218, 0xC4
-
-gUnknown_845B2DC:: @ 845B2DC
- .incbin "baserom.gba", 0x45B2DC, 0xC4
-
-gUnknown_845B3A0:: @ 845B3A0
- .incbin "baserom.gba", 0x45B3A0, 0xB0
-
-gUnknown_845B450:: @ 845B450
- .incbin "baserom.gba", 0x45B450, 0xB0
-
-gUnknown_845B500:: @ 845B500
- .incbin "baserom.gba", 0x45B500, 0x20
-
-gUnknown_845B520:: @ 845B520
- .incbin "baserom.gba", 0x45B520, 0x20
-
-gUnknown_845B540:: @ 845B540
- .incbin "baserom.gba", 0x45B540, 0x90
-
-gUnknown_845B5D0:: @ 845B5D0
- .incbin "baserom.gba", 0x45B5D0, 0x3EE
-
-gUnknown_845B9BE:: @ 845B9BE
- .incbin "baserom.gba", 0x45B9BE, 0x22
-
-gUnknown_845B9E0:: @ 845B9E0
- .incbin "baserom.gba", 0x45B9E0, 0xAD0
-
-gUnknown_845C4B0:: @ 845C4B0
- .incbin "baserom.gba", 0x45C4B0, 0x6
-
-gUnknown_845C4B6:: @ 845C4B6
- .incbin "baserom.gba", 0x45C4B6, 0xDE
-
-gUnknown_845C594:: @ 845C594
- .incbin "baserom.gba", 0x45C594, 0x28
-
-gUnknown_845C5BC:: @ 845C5BC
- .incbin "baserom.gba", 0x45C5BC, 0x12
-
-gUnknown_845C5CE:: @ 845C5CE
- .incbin "baserom.gba", 0x45C5CE, 0x32
diff --git a/data/map_event_scripts.inc b/data/map_event_scripts.inc
index 9a41120b1..460477812 100644
--- a/data/map_event_scripts.inc
+++ b/data/map_event_scripts.inc
@@ -3257,31 +3257,9 @@ CeladonCity_GameCorner_EventScript_1B2867:: @ 81B2867
.incbin "baserom.gba", 0x1B2867, 0xD1
FourIsland_House2_EventScript_1B2938:: @ 81B2938
- .incbin "baserom.gba", 0x1B2938, 0x4E4
+ .incbin "baserom.gba", 0x1B2938, 0x4C0
-gUnknown_81B2E1C:: @ 81B2E1C
- .string "How do I do this?$"
-
-gUnknown_81B2E2E:: @ 81B2E2E
- .string "What does this term mean?$"
-
-gUnknown_81B2E48:: @ 81B2E48
- .string "About this game$"
-
-gUnknown_81B2E58:: @ 81B2E58
- .string "Type Matchup List$"
-
-gUnknown_81B2E6A:: @ 81B2E6A
- .string "EXIT$"
-
-gUnknown_81B2E6F:: @ 81B2E6F
- .incbin "baserom.gba", 0x1B2E6F, 0x15A
-
-gUnknown_81B2FC9:: @ 81B2FC9
- .incbin "baserom.gba", 0x1B2FC9, 0x52
-
-gUnknown_81B301B:: @ 81B301B
- .incbin "baserom.gba", 0x1B301B, 0x8199
+ .include "data/text/help_system.inc"
CeladonCity_PokemonCenter_2F_MapScript4_1BB1B4:: @ 81BB1B4
CeruleanCity_PokemonCenter_2F_MapScript4_1BB1B4:: @ 81BB1B4
diff --git a/data/text/help_system.inc b/data/text/help_system.inc
new file mode 100644
index 000000000..a85af88a8
--- /dev/null
+++ b/data/text/help_system.inc
@@ -0,0 +1,1879 @@
+gUnknown_81B2DF8:: @ 81B2DF8
+ .string "What should I do in this situation?$"
+
+gUnknown_81B2E1C:: @ 81B2E1C
+ .string "How do I do this?$"
+
+gUnknown_81B2E2E:: @ 81B2E2E
+ .string "What does this term mean?$"
+
+gUnknown_81B2E48:: @ 81B2E48
+ .string "About this game$"
+
+gUnknown_81B2E58:: @ 81B2E58
+ .string "Type Matchup List$"
+
+gUnknown_81B2E6A:: @ 81B2E6A
+ .string "EXIT$"
+
+gUnknown_81B2E6F:: @ 81B2E6F
+ .string "CANCEL$"
+
+gUnknown_81B2E76::
+ .string "じぶんの ちからで やってみよう!$"
+
+gUnknown_81B2E88:: @ 81B2E88
+ .string "Select to obtain hints for getting\n"
+ .string "over challenging situations.$"
+
+gUnknown_81B2EC8:: @ 81B2EC8
+ .string "Detailed instructions are given for\n"
+ .string "various operations.$"
+
+gUnknown_81B2F00:: @ 81B2F00
+ .string "Detailed descriptions are given for\n"
+ .string "terms that appear in the game.$"
+
+gUnknown_81B2F43:: @ 81B2F43
+ .string "Detailed descriptions are given\n"
+ .string "about this game.$"
+
+gUnknown_81B2F74:: @ 81B2F74
+ .string "The matchups of POKéMON types\n"
+ .string "and moves are listed.$"
+
+gUnknown_81B2FA9:: @ 81B2FA9
+ .string "Select to exit the HELP System.$"
+
+gUnknown_81B2FC9:: @ 81B2FC9
+ .string "Greetings! This is the HELP System.\n"
+ .string "Call me up whenever and wherever you\l"
+ .string "need by p"
+
+gUnknown_81B301B:: @ 81B301B
+ .string "ressing the L or R Button.\l"
+ .string "The help messages change to suit the\l"
+ .string "situation, so check them often, please.$"
+
+gUnknown_81B3083:: @ 81B3083
+ .string "I'm playing for the first time. Help!$"
+
+gUnknown_81B30A9:: @ 81B30A9
+ .string "What should I be doing?$"
+
+gUnknown_81B30C1:: @ 81B30C1
+ .string "I can't get out of a room!$"
+
+gUnknown_81B30DC:: @ 81B30DC
+ .string "I can't find the person I want.$"
+
+gUnknown_81B30FC:: @ 81B30FC
+ .string "I've talked to everyone. Now what?$"
+
+gUnknown_81B311F:: @ 81B311F
+ .string "There's someone blocking my way!$"
+
+gUnknown_81B3140:: @ 81B3140
+ .string "I can't go on!$"
+
+gUnknown_81B314F:: @ 81B314F
+ .string "I'm out of things to do.$"
+
+gUnknown_81B3168:: @ 81B3168
+ .string "What happened to the item I got?$"
+
+gUnknown_81B3189:: @ 81B3189
+ .string "What are the basics of my adventure?$"
+
+gUnknown_81B31AE:: @ 81B31AE
+ .string "How are roads and forests different?$"
+
+gUnknown_81B31D3:: @ 81B31D3
+ .string "How are caves different?$"
+
+gUnknown_81B31EC:: @ 81B31EC
+ .string "How do I progress?$"
+
+gUnknown_81B31FF:: @ 81B31FF
+ .string "When can I use items?$"
+
+gUnknown_81B3215:: @ 81B3215
+ .string "What's a battle?$"
+
+gUnknown_81B3226:: @ 81B3226
+ .string "How do I prepare for battle?$"
+
+gUnknown_81B3243:: @ 81B3243
+ .string "What is a POKéMON's vitality?$"
+
+gUnknown_81B3261:: @ 81B3261
+ .string "My POKéMON are hurt!$"
+
+gUnknown_81B3276:: @ 81B3276
+ .string "What is a status problem?$"
+
+gUnknown_81B3290:: @ 81B3290
+ .string "What happens if all my POKéMON faint?$"
+
+gUnknown_81B32B6:: @ 81B32B6
+ .string "I can't catch POKéMON!$"
+
+gUnknown_81B32CD:: @ 81B32CD
+ .string "I ran out of POTIONS.$"
+
+gUnknown_81B32E3:: @ 81B32E3
+ .string "Can I buy POKé BALLS?$"
+
+gUnknown_81B32F9:: @ 81B32F9
+ .string "What's a TRAINER?$"
+
+gUnknown_81B330B:: @ 81B330B
+ .string "How do I win against a TRAINER?$"
+
+gUnknown_81B332B:: @ 81B332B
+ .string "Where do POKéMON appear?$"
+
+gUnknown_81B3344:: @ 81B3344
+ .string "What are POKéMON moves?$"
+
+gUnknown_81B335C:: @ 81B335C
+ .string "What are HIDDEN moves?$"
+
+gUnknown_81B3373:: @ 81B3373
+ .string "What moves should I use?$"
+
+gUnknown_81B338C:: @ 81B338C
+ .string "I want to add more moves.$"
+
+gUnknown_81B33A6:: @ 81B33A6
+ .string "I want to make my POKéMON stronger.$"
+
+gUnknown_81B33CA:: @ 81B33CA
+ .string "The foe POKéMON are too strong!$"
+
+gUnknown_81B33EA:: @ 81B33EA
+ .string "What do I do in a cave?$"
+
+gUnknown_81B3402:: @ 81B3402
+ .string "There's nothing that I want to know!$"
+
+gUnknown_81B3427:: @ 81B3427
+ .string "What's a POKéMON CENTER?$"
+
+gUnknown_81B3440:: @ 81B3440
+ .string "What's a POKéMON MART?$"
+
+gUnknown_81B3457:: @ 81B3457
+ .string "I want to end the game.$"
+
+gUnknown_81B346F:: @ 81B346F
+ .string "What's a POKéMON?$"
+
+gUnknown_81B3481:: @ 81B3481
+ .string "What is that person like?$"
+
+gUnknown_81B349B:: @ 81B349B
+ .string "What does a HIDDEN move do?$"
+
+gUnknown_81B34B7:: @ 81B34B7
+ .string "What do I do in a SAFARI GAME?$"
+
+gUnknown_81B34D6:: @ 81B34D6
+ .string "What are the SAFARI GAME rules?$"
+
+gUnknown_81B34F6:: @ 81B34F6
+ .string "I want to end this SAFARI GAME!$"
+
+gUnknown_81B3516:: @ 81B3516
+ .string "What is a GYM?$"
+
+gUnknown_81B3525:: @ 81B3525
+ .string "You become the main character,\n"
+ .string "exploring the world of POKéMON.\l"
+ .string "By talking to people and solving\l"
+ .string "mysteries, new paths will open to you.\l"
+ .string "Strive for the goal together with your\l"
+ .string "wonderful POKéMON.$"
+
+gUnknown_81B35E6:: @ 81B35E6
+ .string "When you come across another person,\n"
+ .string "go up to them and press the A Button.\l"
+ .string "That will get them to talk and interact\l"
+ .string "with your character. You may also\l"
+ .string "examine various items and objects in\l"
+ .string "the same way. Talk to people and check\l"
+ .string "things often to obtain information.$"
+
+gUnknown_81B36EB:: @ 81B36EB
+ .string "On the stairs or the exits of a\n"
+ .string "building is a red mat. Move your\l"
+ .string "character to stand on top of the\l"
+ .string "red mat. Press the {EXTRA_PLUS} Control Pad \l"
+ .string "toward the stairs or the exit to\l"
+ .string "advance.$"
+
+gUnknown_81B379A:: @ 81B379A
+ .string "This isn't something you should worry\n"
+ .string "about too much.\l"
+ .string "Talk to other people, check signs,\l"
+ .string "check things, and so on.\l"
+ .string "Sometimes, you may need to just move\l"
+ .string "to a new town or place.$"
+
+gUnknown_81B3849:: @ 81B3849
+ .string "Try moving on to a new road, town, or\n"
+ .string "place.$"
+
+gUnknown_81B3876:: @ 81B3876
+ .string "There could be something in the town\n"
+ .string "or inside a building that is the cause.\l"
+ .string "Try talking to the people in the area\l"
+ .string "again. If there is a problem that they\l"
+ .string "need solved, you may have to help.\l"
+ .string "Afterwards, try talking to the person\l"
+ .string "blocking your way again.$"
+
+gUnknown_81B3972:: @ 81B3972
+ .string "Try talking to people by going up to\n"
+ .string "them and pressing the A Button.\l"
+ .string "Also, try checking things like odd trees\l"
+ .string "and strange rocks with the A Button.\l"
+ .string "Press the {EXTRA_PLUS} Control Pad and try going\l"
+ .string "to places that look impassable, too.$"
+
+gUnknown_81B3A51:: @ 81B3A51
+ .string "Try going to places where you \n"
+ .string "haven't visited yet.\l"
+ .string "Also, check everything that looks\l"
+ .string "suspicious by pressing the A Button.$"
+
+gUnknown_81B3ACC:: @ 81B3ACC
+ .string "Any item that you are given by another\n"
+ .string "character goes in your BAG.\l"
+ .string "The item is automatically sorted and\l"
+ .string "placed in one of three pockets.\l"
+ .string "For instructions on the BAG's use,\l"
+ .string "please refer to the HELP System's\l"
+ .string "“How do I do this?” heading.$"
+
+gUnknown_81B3BB6:: @ 81B3BB6
+ .string "If POKéMON are hurt in battle,\n"
+ .string "take them to a POKéMON CENTER and\l"
+ .string "have them healed by the staff.\l"
+ .string "Get in the habit of saving your\l"
+ .string "game and recording your progress.\l"
+ .string "Stock up on healing items at\l"
+ .string "POKéMON MARTS before traveling far.$"
+
+gUnknown_81B3C99:: @ 81B3C99
+ .string "Forests are basically the same as\n"
+ .string "roads but they can be like mazes.\l"
+ .string "All forests have a way out, so don't\l"
+ .string "give up if you get lost.$"
+
+gUnknown_81B3D1B:: @ 81B3D1B
+ .string "Caves are dark and dangerous. Wild\n"
+ .string "POKéMON can appear anywhere in them.\l"
+ .string "If there is an emergency, rush to a\l"
+ .string "POKéMON CENTER or use items.\l"
+ .string "New towns await discovery beyond some\l"
+ .string "caves, so don't give up.$"
+
+gUnknown_81B3DE3:: @ 81B3DE3
+ .string "The object of the game is to train\n"
+ .string "your POKéMON and move forward.\l"
+ .string "You must collect info and solve\l"
+ .string "problems. For example, what do you\l"
+ .string "need to get around an obstacle?\l"
+ .string "What would get that impeding\l"
+ .string "person out of the way?$"
+
+gUnknown_81B3EBC:: @ 81B3EBC
+ .string "There are several kinds of items.\n"
+ .string "Some can be used only on the field.\l"
+ .string "Some are only for use during battle.\l"
+ .string "Some can be used anytime.\l"
+ .string "Try using an item - if it can't be used,\l"
+ .string "you will be alerted.$"
+
+gUnknown_81B3F7F:: @ 81B3F7F
+ .string "In a battle, POKéMON try to reduce\n"
+ .string "one another's vitality, expressed as\l"
+ .string "HP. If a POKéMON's HP falls to zero,\l"
+ .string "it faints, and the other POKéMON\l"
+ .string "wins. By winning a battle, POKéMON\l"
+ .string "earn EXP. Points, which help them\l"
+ .string "level up (grow stronger).$"
+
+gUnknown_81B406C:: @ 81B406C
+ .string "First, fully heal the POKéMON in your\n"
+ .string "party (the POKéMON with you) at any\l"
+ .string "POKéMON CENTER.\l"
+ .string "You should also buy healing items for\l"
+ .string "emergencies at a POKéMON MART.$"
+
+gUnknown_81B410B:: @ 81B410B
+ .string "A POKéMON's vitality is expressed in HP.\n"
+ .string "If a POKéMON is hurt in battle, HP is\l"
+ .string "subtracted. If its HP drops to zero,\l"
+ .string "the POKéMON faints.\l"
+ .string "Heal hurt or fainted POKéMON at a\l"
+ .string "POKéMON CENTER or by using items.$"
+
+gUnknown_81B41D7:: @ 81B41D7
+ .string "A POKéMON CENTER is like an inn for\n"
+ .string "POKéMON. It will fully heal POKéMON of\l"
+ .string "any status problems and fully restore\l"
+ .string "their HP using a special machine.\l"
+ .string "This service is free, so get in the\l"
+ .string "habit of healing your POKéMON often.$"
+
+gUnknown_81B42B3:: @ 81B42B3
+ .string "A status problem refers to an ailment\n"
+ .string "that is inflicted on a POKéMON by its\l"
+ .string "foe's attack. These include burns,\l"
+ .string "paralysis, poisoning, sleep, and\l"
+ .string "freezing. These can be healed by\l"
+ .string "visiting a POKéMON CENTER or using\l"
+ .string "the appropriate item.$"
+
+gUnknown_81B439D:: @ 81B439D
+ .string "If all the POKéMON in your party\n"
+ .string "(all the POKéMON with you) faint, you\l"
+ .string "lose some MONEY, and you are\l"
+ .string "returned home or to a POKéMON\l"
+ .string "CENTER. To reduce that chance, visit\l"
+ .string "POKéMON CENTERS often. Also, get\l"
+ .string "in the habit of saving often.$"
+
+gUnknown_81B4483:: @ 81B4483
+ .string "If a wild POKéMON escapes from a POKé\n"
+ .string "BALL, it's obviously still feisty.\l"
+ .string "Try reducing its HP some more, and\l"
+ .string "try to weaken it with paralysis or sleep\l"
+ .string "before trying to catch it.\l"
+ .string "If the POKé BALL rocks for a while,\l"
+ .string "the quarry is close to being caught!$"
+
+gUnknown_81B457C:: @ 81B457C
+ .string "There are shops, known as POKéMON\n"
+ .string "MARTS, that sell items.\l"
+ .string "You will not find POKéMON MARTS on\l"
+ .string "roads, in forests, or in caves.\l"
+ .string "Stock up on needed items while you are\l"
+ .string "visiting a town with a POKéMON MART.$"
+
+gUnknown_81B4645:: @ 81B4645
+ .string "You may buy POKé BALLS at any\n"
+ .string "POKéMON MART in any town.\l"
+ .string "You will not find POKéMON MARTS on\l"
+ .string "roads, in forests, or in caves.\l"
+ .string "Stock up on POKé BALLS while you are\l"
+ .string "visiting a town with a POKéMON MART.$"
+
+gUnknown_81B470A:: @ 81B470A
+ .string "A TRAINER is a person who raises\n"
+ .string "POKéMON through battling.\l"
+ .string "TRAINERS will challenge you \l"
+ .string "wherever they are - it could be on\l"
+ .string "a road, in forests, caves, anywhere.\l"
+ .string "If your eyes meet, you have to accept\l"
+ .string "their challenge. So be careful!$"
+
+gUnknown_81B47F0:: @ 81B47F0
+ .string "To beat a TRAINER in battle, use\n"
+ .string "POKéMON that have type advantages\l"
+ .string "over the foe's POKéMON. You may also\l"
+ .string "use highly trained POKéMON with\l"
+ .string "overwhelming power. Outnumbering the\l"
+ .string "foe's POKéMON is another obvious\l"
+ .string "tactic.$"
+
+gUnknown_81B48C6:: @ 81B48C6
+ .string "Wild POKéMON will appear in tall grass,\n"
+ .string "on roads, and in forests. They will\l"
+ .string "appear anywhere in dark caves.\l"
+ .string "There are no wild POKéMON or TRAINERS\l"
+ .string "in towns, so they are safe places.$"
+
+gUnknown_81B497A:: @ 81B497A
+ .string "POKéMON may learn up to four different\n"
+ .string "techniques, or moves. There is a great\l"
+ .string "variety of moves including attacks and\l"
+ .string "those with special effects. The kinds\l"
+ .string "of moves that can be learned vary\l"
+ .string "for each POKéMON. Some moves\l"
+ .string "can be learned from machines.$"
+
+gUnknown_81B4A72:: @ 81B4A72
+ .string "HIDDEN moves are those that are\n"
+ .string "especially important for your\l"
+ .string "adventure. To use such a move outside\l"
+ .string "of battle, open the “POKéMON” MENU\l"
+ .string "and make the POKéMON that knows the\l"
+ .string "move use it. A fainted POKéMON may use\l"
+ .string "a HIDDEN move outside of battle.$"
+
+gUnknown_81B4B65:: @ 81B4B65
+ .string "Select “FIGHT,” and the MENU of moves\n"
+ .string "will appear. Consider the type\l"
+ .string "matchups, and use the most effective\l"
+ .string "moves. You can check the effects of\l"
+ .string "moves by opening “POKéMON,”\l"
+ .string "picking a POKéMON, opening “SUMMARY,”\l"
+ .string "then opening “POKéMON SKILLS.”$"
+
+gUnknown_81B4C54:: @ 81B4C54
+ .string "The most a POKéMON can learn is four\n"
+ .string "moves. They are learned as the\l"
+ .string "POKéMON levels up. It can also be\l"
+ .string "taught a move using a TM (Technical\l"
+ .string "Machine) or HM (Hidden Machine).\l"
+ .string "There are also people who teach moves.$"
+
+gUnknown_81B4D26:: @ 81B4D26
+ .string "The key to making your POKéMON\n"
+ .string "strong is to battle and win often.\l"
+ .string "The EXP. (Experience) Points earned\l"
+ .string "by winning battles accumulate to\l"
+ .string "level up POKéMON that participated in\l"
+ .string "them. Battle wild POKéMON often to\l"
+ .string "level up your party.$"
+
+gUnknown_81B4E0B:: @ 81B4E0B
+ .string "If your foes are too strong, try\n"
+ .string "leveling up your POKéMON some more.\l"
+ .string "Go back the way you came and battle\l"
+ .string "wild POKéMON to level up your party.\l"
+ .string "You may also battle TRAINERS whom you\l"
+ .string "have not battled before.$"
+
+gUnknown_81B4ED8:: @ 81B4ED8
+ .string "Unlike roads and forests, wild POKéMON\n"
+ .string "can appear anywhere in caves.\l"
+ .string "If your POKéMON are hurt in a cave,\l"
+ .string "rush to a POKéMON CENTER or use items\l"
+ .string "to heal them right away. It is very\l"
+ .string "dangerous to force your luck in caves.$"
+
+gUnknown_81B4FB2:: @ 81B4FB2
+ .string "Trust your own knowledge and power.\n"
+ .string "Believe in yourself and find your way!$"
+
+gUnknown_81B4FFD:: @ 81B4FFD
+ .string "A POKéMON CENTER is identified by its\n"
+ .string "red roof and a “P.C” sign. Every\l"
+ .string "POKéMON CENTER offers such services as\l"
+ .string "fully healing POKéMON and free PC use,\l"
+ .string "making it essential for your travels.\l"
+ .string "On the upper floor are facilities for\l"
+ .string "linking with friends and others.$"
+
+gUnknown_81B50FF:: @ 81B50FF
+ .string "A POKéMON MART is identified by its\n"
+ .string "blue roof and a “MART” sign.\l"
+ .string "Items can be bought and sold at any\l"
+ .string "POKéMON MART. Some MARTS carry items\l"
+ .string "that are available only in their towns.$"
+
+gUnknown_81B51B1:: @ 81B51B1
+ .string "You can safely end your game by\n"
+ .string "selecting “SAVE” on the MENU.\l"
+ .string "Once you have saved, the game can be\l"
+ .string "safely turned off. When the game is\l"
+ .string "turned back on, you can resume from\l"
+ .string "where you last saved.$"
+
+gUnknown_81B5272:: @ 81B5272
+ .string "POKéMON are living beings about which\n"
+ .string "many mysteries still remain. You may\l"
+ .string "see them in grass, the sea, and caves.\l"
+ .string "They appear to obey the wishes of the\l"
+ .string "TRAINERS that caught them.$"
+
+gUnknown_81B5325:: @ 81B5325
+ .string "Use the FAME CHECKER among the\n"
+ .string "KEY ITEMS in your BAG.\l"
+ .string "It may give you a hint, so try it out.$"
+
+gUnknown_81B5382:: @ 81B5382
+ .string "A HIDDEN move is taught to a POKéMON\n"
+ .string "using an HM (Hidden Machine).\l"
+ .string "A HIDDEN move is important for helping\l"
+ .string "your adventure. For example, one is\l"
+ .string "used to light up dark caves. Another\l"
+ .string "cuts down small trees. There is one\l"
+ .string "for traveling on water, and so on.$"
+
+gUnknown_81B547C:: @ 81B547C
+ .string "Try to catch wild POKéMON by throwing\n"
+ .string "the special SAFARI BALLS.\l"
+ .string "You may keep any item you find, too.$"
+
+gUnknown_81B54E1:: @ 81B54E1
+ .string "Your SAFARI GAME ends once you have\n"
+ .string "traveled a certain distance or thrown\l"
+ .string "all your SAFARI BALLS.\l"
+ .string "Open the MENU to check the remaining\l"
+ .string "number of steps and SAFARI BALLS.$"
+
+gUnknown_81B5589:: @ 81B5589
+ .string "If you would like to cut your SAFARI\n"
+ .string "GAME short, open the MENU and select\l"
+ .string "“RETIRE” at the top of the list.$"
+
+gUnknown_81B55F4:: @ 81B55F4
+ .string "POKéMON GYMS are operated by the\n"
+ .string "POKéMON LEAGUE and are training\l"
+ .string "facilities for TRAINERS. They are all\l"
+ .string "across the land in cities and towns.\l"
+ .string "Each one is headed by a LEADER, who\l"
+ .string "is a very skilled TRAINER. Beat the\l"
+ .string "LEADER to collect a BADGE.$"
+
+gUnknown_81B56E3:: @ 81B56E3
+ .string " Using “POKéDEX”$"
+
+gUnknown_81B56F4:: @ 81B56F4
+ .string " Using “POKéMON”$"
+
+gUnknown_81B5705:: @ 81B5705
+ .string " Using “SUMMARY”$"
+
+gUnknown_81B5717:: @ 81B5717
+ .string " Using “SWITCH”$"
+
+gUnknown_81B5728:: @ 81B5728
+ .string " Using “ITEM”$"
+
+gUnknown_81B5737:: @ 81B5737
+ .string " Using “BAG”$"
+
+gUnknown_81B5744:: @ 81B5744
+ .string " Using an item$"
+
+gUnknown_81B5754:: @ 81B5754
+ .string " Using a key item$"
+
+gUnknown_81B5767:: @ 81B5767
+ .string " Using a POKé BALL$"
+
+gUnknown_81B577B:: @ 81B577B
+ .string " Using “{PLAYER}”$"
+
+gUnknown_81B5787:: @ 81B5787
+ .string " Using “SAVE”$"
+
+gUnknown_81B5795:: @ 81B5795
+ .string " Using “OPTION”$"
+
+gUnknown_81B57A5:: @ 81B57A5
+ .string " Using a POTION$"
+
+gUnknown_81B57B8:: @ 81B57B8
+ .string " Using the TOWN MAP$"
+
+gUnknown_81B57CF:: @ 81B57CF
+ .string " Using a TM$"
+
+gUnknown_81B57DE:: @ 81B57DE
+ .string " Using an HM$"
+
+gUnknown_81B57EE:: @ 81B57EE
+ .string "Using a move outside of battle$"
+
+gUnknown_81B580D:: @ 81B580D
+ .string " Riding the BICYCLE$"
+
+gUnknown_81B5824:: @ 81B5824
+ .string "Entering a name$"
+
+gUnknown_81B5834:: @ 81B5834
+ .string "Using a PC$"
+
+gUnknown_81B583F:: @ 81B583F
+ .string " Using “{STR_VAR_1}'S PC”$"
+
+gUnknown_81B5850:: @ 81B5850
+ .string " Using “WITHDRAW”$"
+
+gUnknown_81B5863:: @ 81B5863
+ .string " Using “DEPOSIT”$"
+
+gUnknown_81B5875:: @ 81B5875
+ .string " Using “MOVE”$"
+
+gUnknown_81B5884:: @ 81B5884
+ .string " Moving items$"
+
+gUnknown_81B5893:: @ 81B5893
+ .string " Using “{PLAYER}'s PC”$"
+
+gUnknown_81B58A4:: @ 81B58A4
+ .string " Using “WITHDRAW ITEM”$"
+
+gUnknown_81B58BC:: @ 81B58BC
+ .string " Using “DEPOSIT ITEM”$"
+
+gUnknown_81B58D3:: @ 81B58D3
+ .string " Using “MAILBOX”$"
+
+gUnknown_81B58E5:: @ 81B58E5
+ .string " Using “PROF. OAK'S PC”$"
+
+gUnknown_81B58FD:: @ 81B58FD
+ .string "Opening the MENU$"
+
+gUnknown_81B590E:: @ 81B590E
+ .string " Using “FIGHT”$"
+
+gUnknown_81B591D:: @ 81B591D
+ .string " Using “POKéMON”$"
+
+gUnknown_81B592E:: @ 81B592E
+ .string " Using “SHIFT”$"
+
+gUnknown_81B593E:: @ 81B593E
+ .string " Using “SUMMARY”$"
+
+gUnknown_81B5950:: @ 81B5950
+ .string " Using “BAG”$"
+
+gUnknown_81B595D:: @ 81B595D
+ .string " Reading the “POKéDEX”$"
+
+gUnknown_81B5974:: @ 81B5974
+ .string "Using the PC at home$"
+
+gUnknown_81B5989:: @ 81B5989
+ .string "Using the Item Storage System$"
+
+gUnknown_81B59A7:: @ 81B59A7
+ .string " Using “WITHDRAW ITEM”$"
+
+gUnknown_81B59BF:: @ 81B59BF
+ .string " Using “DEPOSIT ITEM”$"
+
+gUnknown_81B59D6:: @ 81B59D6
+ .string "Using the MAILBOX$"
+
+gUnknown_81B59E8:: @ 81B59E8
+ .string " Using “RUN”$"
+
+gUnknown_81B59F5:: @ 81B59F5
+ .string " “REGISTER” a key item$"
+
+gUnknown_81B5A0D:: @ 81B5A0D
+ .string " Using “BALL”$"
+
+gUnknown_81B5A1B:: @ 81B5A1B
+ .string " Using “BAIT”$"
+
+gUnknown_81B5A29:: @ 81B5A29
+ .string " Using “ROCK”$"
+
+gUnknown_81B5A37:: @ 81B5A37
+ .string " Using “HALL OF FAME”$"
+
+gUnknown_81B5A4D:: @ 81B5A4D
+ .string "{EXTRA_CIRCLE_1} Select “POKéDEX” on the MENU.\n"
+ .string "{EXTRA_CIRCLE_2} Choose POKéMON using commands such\n"
+ .string " as “POKéMON LIST,”\n"
+ .string " “HABITATS OF POKéMON,” and\n"
+ .string " “SEARCH.”\n"
+ .string "{EXTRA_CIRCLE_3} Select a POKéMON to obtain detailed\n"
+ .string " information.$"
+
+gUnknown_81B5B0C:: @ 81B5B0C
+ .string "{EXTRA_CIRCLE_1} Select “POKéMON” on the MENU.\n"
+ .string "{EXTRA_CIRCLE_2} Choose a POKéMON in your party.\n"
+ .string "{EXTRA_CIRCLE_3} Select “SUMMARY,” “SWITCH,”\n"
+ .string " or “ITEM.”$"
+
+gUnknown_81B5B7D:: @ 81B5B7D
+ .string "{EXTRA_CIRCLE_1} Select “SUMMARY.”\n"
+ .string "{EXTRA_CIRCLE_2} Press left or right on the {EXTRA_PLUS} Control\n"
+ .string " Pad to check the information:\n"
+ .string " “POKéMON INFO”\n"
+ .string " “POKéMON SKILLS”\n"
+ .string " “KNOWN MOVES”$"
+
+gUnknown_81B5C13:: @ 81B5C13
+ .string "{EXTRA_CIRCLE_1} Choose the POKéMON you want to\n"
+ .string " switch around.\n"
+ .string "{EXTRA_CIRCLE_2} Select “SWITCH.”\n"
+ .string "{EXTRA_CIRCLE_3} Select the POKéMON to switch with\n"
+ .string " the first one.\n"
+ .string "The POKéMON at the left of the screen\n"
+ .string "will be the first one out in a battle.$"
+
+gUnknown_81B5CDF:: @ 81B5CDF
+ .string "{EXTRA_CIRCLE_1} Select “ITEM.”\n"
+ .string "{EXTRA_CIRCLE_2} Select whether you want to “GIVE”\n"
+ .string " an item to the POKéMON to hold,\n"
+ .string " or “TAKE” an item it is holding.\n"
+ .string "A POKéMON can hold no more than one\n"
+ .string "item!$"
+
+gUnknown_81B5D87:: @ 81B5D87
+ .string "{EXTRA_CIRCLE_1} Select “BAG” on the MENU.\n"
+ .string "{EXTRA_CIRCLE_2} Press left or right on the {EXTRA_PLUS} Control\n"
+ .string " Pad to check the data headings:\n"
+ .string " “ITEMS”\n"
+ .string " “KEY ITEMS”\n"
+ .string " “POKé BALLS”\n"
+ .string " Press up or down to select an item.$"
+
+gUnknown_81B5E41:: @ 81B5E41
+ .string "{EXTRA_CIRCLE_1} Select the “ITEMS” POCKET.\n"
+ .string "{EXTRA_CIRCLE_2} Press up or down on the {EXTRA_PLUS} Control\n"
+ .string " Pad to select an item.\n"
+ .string "{EXTRA_CIRCLE_3} Select “USE” to use the selected\n"
+ .string " item.\n"
+ .string "Some items may not be used depending\n"
+ .string "on the place and/or situation.$"
+
+gUnknown_81B5F10:: @ 81B5F10
+ .string "{EXTRA_CIRCLE_1} Select the “KEY ITEMS” POCKET.\n"
+ .string "{EXTRA_CIRCLE_2} Press up or down on the {EXTRA_PLUS} Control\n"
+ .string " Pad to select a key item.\n"
+ .string "{EXTRA_CIRCLE_3} Select “USE” to use the selected\n"
+ .string " key item.$"
+
+gUnknown_81B5FA6:: @ 81B5FA6
+ .string "{EXTRA_CIRCLE_1} While battling a wild POKéMON,\n"
+ .string " select the BAG's “POKé BALLS”\n"
+ .string " POCKET.\n"
+ .string "{EXTRA_CIRCLE_2} Press up or down on the {EXTRA_PLUS} Control\n"
+ .string " Pad to select a POKé BALL.\n"
+ .string "{EXTRA_CIRCLE_3} Select “USE” to throw the selected\n"
+ .string " POKé BALL.$"
+
+gUnknown_81B606C:: @ 81B606C
+ .string "{EXTRA_CIRCLE_1} Select “{PLAYER}” on the MENU.\n"
+ .string "{EXTRA_CIRCLE_2} Your TRAINER CARD is displayed face\n"
+ .string " up with basic information. Press the\n"
+ .string " A Button to turn the CARD over.\n"
+ .string "{EXTRA_CIRCLE_3} A variety of data can be found on\n"
+ .string " the reverse side of the CARD.$"
+
+gUnknown_81B6140:: @ 81B6140
+ .string "{EXTRA_CIRCLE_1} Select “SAVE” on the MENU.\n"
+ .string "{EXTRA_CIRCLE_2} Select “YES” and your progress is\n"
+ .string " recorded in the save file.\n"
+ .string "Once the game is saved, you may turn\n"
+ .string "off the game. Your game can be resumed\n"
+ .string "from where you saved.$"
+
+gUnknown_81B6203:: @ 81B6203
+ .string "{EXTRA_CIRCLE_1} Select “OPTION” on the MENU.\n"
+ .string "{EXTRA_CIRCLE_2} Press up or down on the {EXTRA_PLUS} Control\n"
+ .string " Pad to select an optional item, then\n"
+ .string " press left or right to alter the\n"
+ .string " settings.\n"
+ .string "{EXTRA_CIRCLE_3} Select “CANCEL” or press the\n"
+ .string " B Button after making changes.$"
+
+gUnknown_81B62E4:: @ 81B62E4
+ .string "{EXTRA_CIRCLE_1} Open the MENU.\n"
+ .string "{EXTRA_CIRCLE_2} Press up or down on the {EXTRA_PLUS} Control\n"
+ .string " Pad and select “BAG.”\n"
+ .string "{EXTRA_CIRCLE_3} Select “POTION” in the “ITEMS”\n"
+ .string " POCKET.\n"
+ .string "{EXTRA_CIRCLE_4} Select “USE.”\n"
+ .string "{EXTRA_CIRCLE_5} Select the POKéMON to be healed.$"
+
+gUnknown_81B6397:: @ 81B6397
+ .string "{EXTRA_CIRCLE_1} Open the MENU.\n"
+ .string "{EXTRA_CIRCLE_2} Press up or down on the {EXTRA_PLUS} Control\n"
+ .string " Pad and select “BAG.”\n"
+ .string "{EXTRA_CIRCLE_3} Press left or right to open the\n"
+ .string " “KEY ITEMS” POCKET, then press\n"
+ .string " up or down to select “TOWN MAP.” \n"
+ .string "{EXTRA_CIRCLE_4} Select “USE” to open the TOWN MAP.$"
+
+gUnknown_81B6478:: @ 81B6478
+ .string "{EXTRA_CIRCLE_1} Open the MENU.\n"
+ .string "{EXTRA_CIRCLE_2} Open the “KEY ITEMS” POCKET in the\n"
+ .string " “BAG.”\n"
+ .string "{EXTRA_CIRCLE_3} “OPEN” the TM CASE.\n"
+ .string "{EXTRA_CIRCLE_4} Select and “USE” a TM.\n"
+ .string "{EXTRA_CIRCLE_5} Select a POKéMON that can learn the\n"
+ .string " move in the TM.$"
+
+gUnknown_81B6525:: @ 81B6525
+ .string "{EXTRA_CIRCLE_1} Open the MENU.\n"
+ .string "{EXTRA_CIRCLE_2} Open the “KEY ITEMS” POCKET in the\n"
+ .string " “BAG.”\n"
+ .string "{EXTRA_CIRCLE_3} “OPEN” the TM CASE.\n"
+ .string "{EXTRA_CIRCLE_4} Select and “USE” an HM.\n"
+ .string "{EXTRA_CIRCLE_5} Select a POKéMON that can learn it.\n"
+ .string "HMs are hard to remove, so be careful!$"
+
+gUnknown_81B65E7:: @ 81B65E7
+ .string "{EXTRA_CIRCLE_1} Open the MENU.\n"
+ .string "{EXTRA_CIRCLE_2} Select “POKéMON.”\n"
+ .string "{EXTRA_CIRCLE_3} Select a POKéMON that knows an\n"
+ .string " HM move. The usable HM move(s)\n"
+ .string " will be shown in blue. Select and\n"
+ .string " use the desired move to destroy an\n"
+ .string " obstacle, fly, surf, etc.$"
+
+gUnknown_81B66BA:: @ 81B66BA
+ .string "{EXTRA_CIRCLE_1} Open the MENU. Open the\n"
+ .string " “KEY ITEMS” POCKET in the “BAG”\n"
+ .string " and select the “BICYCLE.”\n"
+ .string "{EXTRA_CIRCLE_2} The BICYCLE can be ridden by\n"
+ .string " selecting “USE.” You may also\n"
+ .string " “REGISTER” it for instant use by\n"
+ .string " pressing SELECT.$"
+
+gUnknown_81B678E:: @ 81B678E
+ .string "{EXTRA_CIRCLE_1} Move the cursor to the letter you\n"
+ .string " want with the {EXTRA_PLUS} Control Pad, then\n"
+ .string " press the A Button to enter it.\n"
+ .string "{EXTRA_CIRCLE_2} Press the B Button to back up.\n"
+ .string "{EXTRA_CIRCLE_3} Press SELECT to switch between\n"
+ .string " uppercase and lowercase letters.\n"
+ .string "{EXTRA_CIRCLE_4} Press the A Button on “OK.”$"
+
+gUnknown_81B6883:: @ 81B6883
+ .string "{EXTRA_CIRCLE_1} Go to any POKéMON CENTER, go up\n"
+ .string " to the PC, then press the A Button.$"
+
+gUnknown_81B68CD:: @ 81B68CD
+ .string "{EXTRA_CIRCLE_1} Select “{STR_VAR_1}'S PC” on the PC.\n"
+ .string "{EXTRA_CIRCLE_2} Select from one of the top three\n"
+ .string " MENU items to access the POKéMON\n"
+ .string " Storage System.\n"
+ .string "If you catch a POKéMON when you have\n"
+ .string "six in your party, the POKéMON is sent\n"
+ .string "automatically to a BOX in the System!$"
+
+gUnknown_81B69B9:: @ 81B69B9
+ .string "{EXTRA_CIRCLE_1} Select a POKéMON in the open BOX\n"
+ .string " with the {EXTRA_PLUS} Control Pad.\n"
+ .string "{EXTRA_CIRCLE_2} Select “WITHDRAW” to remove the\n"
+ .string " POKéMON from the BOX and add it to\n"
+ .string " your party.\n"
+ .string "You may not withdraw a POKéMON if you\n"
+ .string "already have six POKéMON with you!$"
+
+gUnknown_81B6A9A:: @ 81B6A9A
+ .string "{EXTRA_CIRCLE_1} Select a POKéMON in your party with\n"
+ .string " the {EXTRA_PLUS} Control Pad.\n"
+ .string "{EXTRA_CIRCLE_2} Select “DEPOSIT.”\n"
+ .string "{EXTRA_CIRCLE_3} Select the BOX, then press the\n"
+ .string " A Button to store the POKéMON.\n"
+ .string "If you have only one POKéMON with you,\n"
+ .string "it may not be stored!$"
+
+gUnknown_81B6B6E:: @ 81B6B6E
+ .string "{EXTRA_CIRCLE_1} Select a POKéMON in the open BOX.\n"
+ .string "{EXTRA_CIRCLE_2} Pick up the POKéMON by selecting\n"
+ .string " “MOVE” and move it anywhere with\n"
+ .string " the {EXTRA_PLUS} Control Pad.\n"
+ .string "{EXTRA_CIRCLE_3} Move the POKéMON to the BOX name\n"
+ .string " and press left or right to move it\n"
+ .string " to another BOX.$"
+
+gUnknown_81B6C4F:: @ 81B6C4F
+ .string "{EXTRA_CIRCLE_1} Faintly shown POKéMON can be made\n"
+ .string " to hold an item by selecting it and\n"
+ .string " pressing the A Button.\n"
+ .string "{EXTRA_CIRCLE_2} Clearly shown POKéMON can be made\n"
+ .string " to give the item they are holding to\n"
+ .string " another POKéMON, or return the item\n"
+ .string " to the BAG with the A Button.$"
+
+gUnknown_81B6D4A:: @ 81B6D4A
+ .string "{EXTRA_CIRCLE_1} Select “{PLAYER}'s PC” on the PC.\n"
+ .string "{EXTRA_CIRCLE_2} Select either “ITEM STORAGE” or\n"
+ .string " “MAILBOX.”\n"
+ .string "You may store things in your own PC\n"
+ .string "if your BAG is full. You may also\n"
+ .string "withdraw items stored in your PC.$"
+
+gUnknown_81B6E02:: @ 81B6E02
+ .string "{EXTRA_CIRCLE_1} Select “WITHDRAW ITEM.”\n"
+ .string "{EXTRA_CIRCLE_2} Select the item to be withdrawn.\n"
+ .string "{EXTRA_CIRCLE_3} The item can be withdrawn and\n"
+ .string " placed in the BAG's ITEMS POCKET.\n"
+ .string " It may also be directly given to a\n"
+ .string " POKéMON to hold.$"
+
+gUnknown_81B6EC1:: @ 81B6EC1
+ .string "{EXTRA_CIRCLE_1} Select “DEPOSIT ITEM.”\n"
+ .string "{EXTRA_CIRCLE_2} Select the item in the BAG to be\n"
+ .string " deposited using the {EXTRA_PLUS} Control Pad.\n"
+ .string "{EXTRA_CIRCLE_3} If there is more than one \n"
+ .string " item to be deposited, enter the\n"
+ .string " quantity with the {EXTRA_PLUS} Control Pad,\n"
+ .string " then press the A Button.$"
+
+gUnknown_81B6FA8:: @ 81B6FA8
+ .string "When MAIL is taken from a POKéMON,\n"
+ .string "it is moved to the MAILBOX. If it has\n"
+ .string "no MAIL, the MAILBOX can't be used.\n"
+ .string "{EXTRA_CIRCLE_1} Select “{PLAYER}'S PC” on the PC.\n"
+ .string "{EXTRA_CIRCLE_2} Select “MAILBOX” to read MAIL or\n"
+ .string " make a POKéMON hold MAIL.$"
+
+gUnknown_81B7075:: @ 81B7075
+ .string "{EXTRA_CIRCLE_1} Select “PROF. OAK'S PC” on the PC.\n"
+ .string "{EXTRA_CIRCLE_2} PROF. OAK will evaluate your\n"
+ .string " POKéDEX.\n"
+ .string "His evaluations should give you hints\n"
+ .string "for catching more POKéMON!$"
+
+gUnknown_81B7108:: @ 81B7108
+ .string "{EXTRA_CIRCLE_1} Press START.\n"
+ .string "{EXTRA_CIRCLE_2} The MENU will open on the right.\n"
+ .string "{EXTRA_CIRCLE_3} Depending on the situation, the MENU\n"
+ .string " may feature different headings.\n"
+ .string "The MENU will not open in certain\n"
+ .string "situations such as when talking, doing\n"
+ .string "something, battling, etc.$"
+
+gUnknown_81B71EA:: @ 81B71EA
+ .string "{EXTRA_CIRCLE_1} Select “FIGHT.”\n"
+ .string "{EXTRA_CIRCLE_2} Select one of the moves shown,\n"
+ .string "and that move will be used!$"
+
+gUnknown_81B723B:: @ 81B723B
+ .string "{EXTRA_CIRCLE_1} Select “POKéMON.”\n"
+ .string "{EXTRA_CIRCLE_2} Select the POKéMON in your party\n"
+ .string " that you want to use.\n"
+ .string "{EXTRA_CIRCLE_3} If you have two or more POKéMON\n"
+ .string " with you, they may be switched by\n"
+ .string " selecting “SHIFT.” Check POKéMON\n"
+ .string " data by selecting “SUMMARY.”$"
+
+gUnknown_81B7319:: @ 81B7319
+ .string "This command switches the POKéMON in\n"
+ .string "battle with another one in your party.\n"
+ .string "{EXTRA_CIRCLE_1} Select the POKéMON to be sent out.\n"
+ .string "{EXTRA_CIRCLE_2} Select “SHIFT.”\n"
+ .string "{EXTRA_CIRCLE_3} The selected POKéMON will switch\n"
+ .string " places with the POKéMON in battle!$"
+
+gUnknown_81B73E8:: @ 81B73E8
+ .string "{EXTRA_CIRCLE_1} Select “SUMMARY.”\n"
+ .string "{EXTRA_CIRCLE_2} Press left or right on the {EXTRA_PLUS} Control\n"
+ .string " Pad to check the information:\n"
+ .string " “POKéMON INFO”\n"
+ .string " “POKéMON SKILLS”\n"
+ .string " “KNOWN MOVES”$"
+
+gUnknown_81B747E:: @ 81B747E
+ .string "{EXTRA_CIRCLE_1} Select “BAG.”\n"
+ .string "{EXTRA_CIRCLE_2} Press left or right on the {EXTRA_PLUS} Control\n"
+ .string " Pad to check the data headings:\n"
+ .string " “ITEMS”\n"
+ .string " “KEY ITEMS”\n"
+ .string " “POKé BALLS”\n"
+ .string " Press up or down to select an item.$"
+
+gUnknown_81B752C:: @ 81B752C
+ .string "{EXTRA_CIRCLE_1} POKéMON that you have caught are\n"
+ .string " identified by a POKé BALL mark on\n"
+ .string " the POKéDEX list.\n"
+ .string "{EXTRA_CIRCLE_2} A caught POKéMON will provide a\n"
+ .string " large amount of data.\n"
+ .string "{EXTRA_CIRCLE_3} Select “AREA” to display the TOWN\n"
+ .string " MAP with the POKéMON's habitat(s).$"
+
+gUnknown_81B7611:: @ 81B7611
+ .string "{EXTRA_CIRCLE_1} Go up to the PC at home, then press\n"
+ .string " the A Button.\n"
+ .string "{EXTRA_CIRCLE_2} The PC will turn on.\n"
+ .string "{EXTRA_CIRCLE_3} Select either “ITEM STORAGE” or\n"
+ .string " “MAILBOX.”$"
+
+gUnknown_81B7692:: @ 81B7692
+ .string "{EXTRA_CIRCLE_1} Select “WITHDRAW ITEM” to withdraw\n"
+ .string " an item stored on your PC.\n"
+ .string "{EXTRA_CIRCLE_2} Select “DEPOSIT ITEM” to put \n"
+ .string " an item from your BAG into your PC.$"
+
+gUnknown_81B771E:: @ 81B771E
+ .string "{EXTRA_CIRCLE_1} Select “WITHDRAW ITEM.”\n"
+ .string "{EXTRA_CIRCLE_2} Select the item to be withdrawn.\n"
+ .string "{EXTRA_CIRCLE_3} The item can be withdrawn and\n"
+ .string " placed in the BAG's ITEMS POCKET.\n"
+ .string " It may also be directly given to a\n"
+ .string " POKéMON to hold.$"
+
+gUnknown_81B77DD:: @ 81B77DD
+ .string "{EXTRA_CIRCLE_1} Select “DEPOSIT ITEM.”\n"
+ .string "{EXTRA_CIRCLE_2} Select the item in the BAG to be\n"
+ .string " deposited using the {EXTRA_PLUS} Control Pad.\n"
+ .string "{EXTRA_CIRCLE_3} If there is nothing in the BAG, this\n"
+ .string " command can't be used!$"
+
+gUnknown_81B7884:: @ 81B7884
+ .string "When MAIL is taken from a POKéMON,\n"
+ .string "it is moved to the MAILBOX. If it has\n"
+ .string "no MAIL, the MAILBOX can't be used.\n"
+ .string "{EXTRA_CIRCLE_1} Select MAIL by name to read it or\n"
+ .string " make a POKéMON hold it.$"
+
+gUnknown_81B7931:: @ 81B7931
+ .string "You may not “RUN” from a TRAINER\n"
+ .string "battle!\n"
+ .string "{EXTRA_CIRCLE_1} You may “RUN” from a wild POKéMON.\n"
+ .string "{EXTRA_CIRCLE_2} Your chance of escape is improved\n"
+ .string " if your POKéMON in battle is fast.$"
+
+gUnknown_81B79CB:: @ 81B79CB
+ .string "You may “REGISTER” a key item for\n"
+ .string "instant use by pressing SELECT!\n"
+ .string "{EXTRA_CIRCLE_1} Open the “KEY ITEMS” POCKET.\n"
+ .string "{EXTRA_CIRCLE_2} Select the key item, then select\n"
+ .string " “REGISTER.”$"
+
+gUnknown_81B7A60:: @ 81B7A60
+ .string "{EXTRA_CIRCLE_1} Select to throw the special POKé\n"
+ .string " BALL used only in the SAFARI ZONE.\n"
+ .string "When wild POKéMON appear, throw lots\n"
+ .string "of SAFARI BALLS to catch them!$"
+
+gUnknown_81B7AEE:: @ 81B7AEE
+ .string "{EXTRA_CIRCLE_1} Select to throw the special food\n"
+ .string " used only in the SAFARI ZONE.\n"
+ .string "It is POKéMON food rolled up into\n"
+ .string "a ball for easy eating. When BAIT is\n"
+ .string "thrown, the wild POKéMON may get\n"
+ .string "attracted by it, and may not flee!$"
+
+gUnknown_81B7BBE:: @ 81B7BBE
+ .string "{EXTRA_CIRCLE_1} Select to throw a rock lying on\n"
+ .string " the ground in the SAFARI ZONE.\n"
+ .string "Throwing a rock at a POKéMON may \n"
+ .string "make it run away, but it becomes easier\n"
+ .string "to catch!$"
+
+gUnknown_81B7C57:: @ 81B7C57
+ .string "{EXTRA_CIRCLE_1} Select “HALL OF FAME” on the PC.\n"
+ .string "{EXTRA_CIRCLE_2} The POKéMON that have entered the\n"
+ .string " HALL OF FAME can be examined.$"
+
+gUnknown_81B7CC1:: @ 81B7CC1
+ .string "HP$"
+
+gUnknown_81B7CC4:: @ 81B7CC4
+ .string "EXP. {EXTRA_LEFT_PAREN}EXP. Points{EXTRA_RIGHT_PAREN}$"
+
+gUnknown_81B7CD9:: @ 81B7CD9
+ .string "MOVES$"
+
+gUnknown_81B7CDF:: @ 81B7CDF
+ .string "ATTACK$"
+
+gUnknown_81B7CE6:: @ 81B7CE6
+ .string "DEFENSE$"
+
+gUnknown_81B7CEE:: @ 81B7CEE
+ .string "SP. ATK$"
+
+gUnknown_81B7CF6:: @ 81B7CF6
+ .string "SP. DEF$"
+
+gUnknown_81B7CFE:: @ 81B7CFE
+ .string "SPEED$"
+
+gUnknown_81B7D04:: @ 81B7D04
+ .string "Lv. {EXTRA_LEFT_PAREN}Level{EXTRA_RIGHT_PAREN}$"
+
+gUnknown_81B7D12:: @ 81B7D12
+ .string "TYPE$"
+
+gUnknown_81B7D17:: @ 81B7D17
+ .string "OT$"
+
+gUnknown_81B7D1A:: @ 81B7D1A
+ .string "ITEM$"
+
+gUnknown_81B7D1F:: @ 81B7D1F
+ .string "ABILITY$"
+
+gUnknown_81B7D27:: @ 81B7D27
+ .string "MONEY$"
+
+gUnknown_81B7D2D:: @ 81B7D2D
+ .string "MOVE TYPE$"
+
+gUnknown_81B7D37:: @ 81B7D37
+ .string "NATURE$"
+
+gUnknown_81B7D3E:: @ 81B7D3E
+ .string "ID No.$"
+
+gUnknown_81B7D45:: @ 81B7D45
+ .string "PP$"
+
+gUnknown_81B7D48:: @ 81B7D48
+ .string "POWER$"
+
+gUnknown_81B7D4E:: @ 81B7D4E
+ .string "ACCURACY$"
+
+gUnknown_81B7D57:: @ 81B7D57
+ .string "FNT$"
+
+gUnknown_81B7D5B:: @ 81B7D5B
+ .string "ITEMS$"
+
+gUnknown_81B7D61:: @ 81B7D61
+ .string "KEY ITEMS$"
+
+gUnknown_81B7D6B:: @ 81B7D6B
+ .string "POKé BALLS$"
+
+gUnknown_81B7D76:: @ 81B7D76
+ .string "POKéDEX$"
+
+gUnknown_81B7D7E:: @ 81B7D7E
+ .string "PLAY TIME$"
+
+gUnknown_81B7D88:: @ 81B7D88
+ .string "BADGES$"
+
+gUnknown_81B7D8F:: @ 81B7D8F
+ .string "TEXT SPEED$"
+
+gUnknown_81B7D9A:: @ 81B7D9A
+ .string "BATTLE SCENE$"
+
+gUnknown_81B7DA7:: @ 81B7DA7
+ .string "BATTLE STYLE$"
+
+gUnknown_81B7DB4:: @ 81B7DB4
+ .string "SOUND$"
+
+gUnknown_81B7DBA:: @ 81B7DBA
+ .string "BUTTON MODE$"
+
+gUnknown_81B7DC6:: @ 81B7DC6
+ .string "FRAME$"
+
+gUnknown_81B7DCC:: @ 81B7DCC
+ .string "CANCEL$"
+
+gUnknown_81B7DD3:: @ 81B7DD3
+ .string "TM$"
+
+gUnknown_81B7DD6:: @ 81B7DD6
+ .string "HM$"
+
+gUnknown_81B7DD9:: @ 81B7DD9
+ .string "HM MOVE$"
+
+gUnknown_81B7DE1:: @ 81B7DE1
+ .string "EVOLUTION$"
+
+gUnknown_81B7DEB:: @ 81B7DEB
+ .string "STATUS PROBLEM$"
+
+gUnknown_81B7DFA:: @ 81B7DFA
+ .string "POKéMON$"
+
+gUnknown_81B7E02:: @ 81B7E02
+ .string "ID No.$"
+
+gUnknown_81B7E09:: @ 81B7E09
+ .string "MONEY$"
+
+gUnknown_81B7E0F:: @ 81B7E0F
+ .string "BADGES$"
+
+gUnknown_81B7E16:: @ 81B7E16
+ .string "HP indicates a POKéMON's vitality.\n"
+ .string "If a POKéMON's HP drops to zero, it\l"
+ .string "faints and is unable to battle.\l"
+ .string "So, the key in battle is to try to\l"
+ .string "reduce the foe's HP to zero.\l"
+ .string "If your POKéMON are hurt, restore their\l"
+ .string "HP at a POKéMON CENTER or use items.$"
+
+gUnknown_81B7F0A:: @ 81B7F0A
+ .string "EXP. Points stands for “Experience\n"
+ .string "Points.” POKéMON gain EXP. Points by\l"
+ .string "participating in winning battles.\l"
+ .string "When a POKéMON accumulates sufficient\l"
+ .string "EXP. Points, it levels up. The EXP. Bar\l"
+ .string "indicates accumulated EXP. Points.\l"
+ .string "It returns to zero upon leveling up.$"
+
+gUnknown_81B800A:: @ 81B800A
+ .string "POKéMON may learn up to four different\n"
+ .string "moves. There are many kinds of moves\l"
+ .string "including attacks and those with\l"
+ .string "special effects. The kinds of moves\l"
+ .string "that can be learned vary for each\l"
+ .string "POKéMON. Some moves can be learned\l"
+ .string "from items.$"
+
+gUnknown_81B80EC:: @ 81B80EC
+ .string "ATTACK indicates the power of an\n"
+ .string "offensive move. The higher this stat,\l"
+ .string "the more powerful the move.\l"
+ .string "It is applied for the following move\l"
+ .string "types: NORMAL, POISON, GROUND,\l"
+ .string "FLYING, BUG, FIGHTING, ROCK, GHOST,\l"
+ .string "and STEEL.$"
+
+gUnknown_81B81C2:: @ 81B81C2
+ .string "DEFENSE indicates the resistance a\n"
+ .string "POKéMON has against physical attacks.\l"
+ .string "The higher this stat, the less damage\l"
+ .string "sustained from a foe's physical hit.$"
+
+gUnknown_81B8256:: @ 81B8256
+ .string "SP. ATK (Special Attack) indicates the\n"
+ .string "power of a special attack move.\l"
+ .string "The higher this stat, the more powerful\l"
+ .string "the special attack move.\l"
+ .string "It is applied for the following move\l"
+ .string "types: FIRE, WATER, ELECTRIC, GRASS,\l"
+ .string "ICE, PSYCHIC, DRAGON, and DARK.$"
+
+gUnknown_81B8348:: @ 81B8348
+ .string "SP. DEF (Special Defense) indicates\n"
+ .string "the resistance a POKéMON has against\l"
+ .string "special attacks.\l"
+ .string "The higher this stat, the less damage\l"
+ .string "sustained from a foe's special attack.$"
+
+gUnknown_81B83EF:: @ 81B83EF
+ .string "SPEED indicates the agility of a\n"
+ .string "POKéMON. If this stat exceeds the foe's\l"
+ .string "in battle, the POKéMON can make a move\l"
+ .string "before its slower opponent.$"
+
+gUnknown_81B847B:: @ 81B847B
+ .string "Lv. (Level) indicates the growth and\n"
+ .string "strength of a POKéMON.\l"
+ .string "In general, when a POKéMON levels up,\l"
+ .string "its stats such as HP, ATTACK, and\l"
+ .string "DEFENSE rise, making it stronger.\l"
+ .string "POKéMON may learn a new move upon\l"
+ .string "leveling up.$"
+
+gUnknown_81B8550:: @ 81B8550
+ .string "POKéMON and moves are classified by\n"
+ .string "type. Every type has advantageous and\l"
+ .string "disadvantageous matchups against\l"
+ .string "other types. For example, like a rock-\l"
+ .string "paper-scissors game, the WATER type is\l"
+ .string "strong against the FIRE type and weak\l"
+ .string "against the GRASS type.$"
+
+gUnknown_81B8647:: @ 81B8647
+ .string "OT stands for “Original TRAINER,”\n"
+ .string "the first TRAINER to have caught the\l"
+ .string "selected POKéMON.\l"
+ .string "Even if the POKéMON is traded, the OT\l"
+ .string "name will remain unchanged.$"
+
+gUnknown_81B86E2:: @ 81B86E2
+ .string "All POKéMON can be made to hold one\n"
+ .string "item each. Some items will be used by\l"
+ .string "the POKéMON automatically in certain\l"
+ .string "situations. To make a POKéMON hold an\l"
+ .string "item, select the item from the BAG and\l"
+ .string "“GIVE” it to the POKéMON.$"
+
+gUnknown_81B87B8:: @ 81B87B8
+ .string "All POKéMON have a special ABILITY.\n"
+ .string "There are many different kinds of these\l"
+ .string "abilities, some used in battle, some\l"
+ .string "elsewhere. The abilities differ from\l"
+ .string "species to species. Some species may\l"
+ .string "have more than one kind of ability.$"
+
+gUnknown_81B8897:: @ 81B8897
+ .string "Whenever you win a battle against a\n"
+ .string "TRAINER, you are given prize money.\l"
+ .string "Save up your prize money so you can\l"
+ .string "enjoy shopping at POKéMON MARTS!$"
+
+gUnknown_81B8924:: @ 81B8924
+ .string "Moves are also classified by types.\n"
+ .string "If a POKéMON of a certain type uses\l"
+ .string "a move of the same type, the move's\l"
+ .string "power is boosted. If the move's type\l"
+ .string "has a matchup advantage against the\l"
+ .string "target, its effectiveness is also\l"
+ .string "boosted.$"
+
+gUnknown_81B8A04:: @ 81B8A04
+ .string "All POKéMON have a personality,\n"
+ .string "or “NATURE.” The POKéMON's\l"
+ .string "nature appears to affect how the\l"
+ .string "POKéMON will grow upon leveling up.$"
+
+gUnknown_81B8A84:: @ 81B8A84
+ .string "The ID No. is a special number assigned\n"
+ .string "specifically to you as a TRAINER.\l"
+ .string "Together with the OT name, the ID No.\l"
+ .string "is used to precisely identify the\l"
+ .string "Original TRAINER.\l"
+ .string "The ID No. does not change even if the\l"
+ .string "POKéMON is traded.$"
+
+gUnknown_81B8B62:: @ 81B8B62
+ .string "PP stands for “Power Points.”\n"
+ .string "It indicates the number of times a\l"
+ .string "certain move can be used in battle.\l"
+ .string "Like HP, PP can be restored by visiting\l"
+ .string "a POKéMON CENTER or using certain\l"
+ .string "items.$"
+
+gUnknown_81B8C18:: @ 81B8C18
+ .string "POWER indicates the strength of an\n"
+ .string "attack. The higher this number, the\l"
+ .string "greater the damage that can be\l"
+ .string "inflicted on the foe!$"
+
+gUnknown_81B8C94:: @ 81B8C94
+ .string "ACCURACY indicates the probability of\n"
+ .string "the move hitting the foe.\l"
+ .string "The higher this number, the more likely\l"
+ .string "the move will strike the target.$"
+
+gUnknown_81B8D1D:: @ 81B8D1D
+ .string "FNT stands for “fainted.”\n"
+ .string "A POKéMON faints if its HP is reduced\l"
+ .string "to zero. It becomes incapable of taking\l"
+ .string "part in battle.\l"
+ .string "Restore a fainted POKéMON at a POKéMON\l"
+ .string "CENTER, or use an item.$"
+
+gUnknown_81B8DD4:: @ 81B8DD4
+ .string "Ordinary items bought at any POKéMON\n"
+ .string "MART are placed in the ITEMS POCKET.\l"
+ .string "Items may be used, given to a POKéMON\l"
+ .string "to hold, or tossed out as garbage.$"
+
+gUnknown_81B8E67:: @ 81B8E67
+ .string "Important items that you find or \n"
+ .string "receive from people are placed in the\l"
+ .string "KEY ITEMS POCKET.\l"
+ .string "Key items may be used, or registered\l"
+ .string "for use instantly with SELECT. Once\l"
+ .string "registered, the item can be used\l"
+ .string "without opening the MENU and BAG.$"
+
+gUnknown_81B8F4D:: @ 81B8F4D
+ .string "POKé BALLS, which are used for\n"
+ .string "catching wild POKéMON, are placed in\l"
+ .string "the POKé BALLS POCKET.\l"
+ .string "POKé BALLS may be bought at POKéMON\l"
+ .string "MARTS. They may be used, given to a\l"
+ .string "POKéMON to hold, or tossed out as\l"
+ .string "garbage.$"
+
+gUnknown_81B901B:: @ 81B901B
+ .string "This indicates the number of species of\n"
+ .string "POKéMON you have caught and/or\l"
+ .string "evolved to fill the POKéDEX.\l"
+ .string "Try hard to catch all sorts of\l"
+ .string "POKéMON!$"
+
+gUnknown_81B90A7:: @ 81B90A7
+ .string "This is the total amount of time that\n"
+ .string "you have played this game.$"
+
+gUnknown_81B90E8:: @ 81B90E8
+ .string "The POKéMON LEAGUE BADGES that you\n"
+ .string "have won are registered and shown.\l"
+ .string "Earn BADGES by defeating GYM LEADERS\l"
+ .string "in various cities and towns.$"
+
+gUnknown_81B9170:: @ 81B9170
+ .string "You can adjust how quickly the text is\n"
+ .string "displayed. Choose one: SLOW, MID,\l"
+ .string "or FAST.$"
+
+gUnknown_81B91C2:: @ 81B91C2
+ .string "You can choose to turn the battle\n"
+ .string "animation ON or OFF.$"
+
+gUnknown_81B91F9:: @ 81B91F9
+ .string "You can choose whether or not a\n"
+ .string "TRAINER can switch a POKéMON after\l"
+ .string "it has made its foe faint.\l"
+ .string "Set to “SHIFT” if you would like the\l"
+ .string "chance to switch a POKéMON after it\l"
+ .string "has made its foe faint.$"
+
+gUnknown_81B92B8:: @ 81B92B8
+ .string "You can choose between MONO and\n"
+ .string "STEREO sound output.$"
+
+gUnknown_81B92ED:: @ 81B92ED
+ .string "Set to “HELP” to display help messages\n"
+ .string "by pressing the L or R Button.\l"
+ .string "Set to “LR” to enable the switching\l"
+ .string "of the POKéDEX pages and BAG POCKETS\l"
+ .string "using the L and R Buttons.\l"
+ .string "Set to “L=A” to make the L Button\l"
+ .string "work the same as the A Button.$"
+
+gUnknown_81B93D8:: @ 81B93D8
+ .string "You may choose the design of the frame\n"
+ .string "around certain menus. Try them out and\l"
+ .string "see what you like.$"
+
+gUnknown_81B9439:: @ 81B9439
+ .string "The settings will be changed to the\n"
+ .string "selections shown in red, and you will\l"
+ .string "return to the MENU.$"
+
+gUnknown_81B9497:: @ 81B9497
+ .string "A TM (Technical Machine) is a device\n"
+ .string "used to teach a move to a POKéMON.\l"
+ .string "There are many different kinds.\l"
+ .string "Moves can be taught only to those\l"
+ .string "POKéMON capable of using them.\l"
+ .string "A TM breaks after a single use.$"
+
+gUnknown_81B9560:: @ 81B9560
+ .string "An HM (Hidden Machine) is a device used\n"
+ .string "to teach a HIDDEN move to a POKéMON.\l"
+ .string "A HIDDEN move can be taught only to\l"
+ .string "those POKéMON capable of using it.\l"
+ .string "Unlike a TM, an HM can be used over\l"
+ .string "and over. A HIDDEN move can be tough\l"
+ .string "for a POKéMON to forget.$"
+
+gUnknown_81B9656:: @ 81B9656
+ .string "HIDDEN moves are those that are\n"
+ .string "especially important for your\l"
+ .string "adventure. To use such a move outside\l"
+ .string "of battle, open the “POKéMON” MENU\l"
+ .string "and make the POKéMON that knows the\l"
+ .string "move use it. A fainted POKéMON may use\l"
+ .string "a HIDDEN move outside of battle.$"
+
+gUnknown_81B9749:: @ 81B9749
+ .string "Among POKéMON, there are some that\n"
+ .string "undergo major changes (evolution) upon\l"
+ .string "growing to certain levels. Evolution\l"
+ .string "causes a POKéMON to alter form, change\l"
+ .string "its name, and perhaps change the moves\l"
+ .string "it may learn. Some POKéMON evolve\l"
+ .string "due to reasons other than leveling up.$"
+
+gUnknown_81B984F:: @ 81B984F
+ .string "Status problems include:\n"
+ .string "Sleep: Can't use moves.\l"
+ .string "Poison: Causes steady HP loss.\l"
+ .string "Paralysis: May prevent moves.\l"
+ .string "Burn: HP loss and lowers ATTACK.\l"
+ .string "Freeze: Can't use moves.\l"
+ .string "These can be healed with items, etc.$"
+
+gUnknown_81B991C:: @ 81B991C
+ .string "POKéMON is a name given to describe\n"
+ .string "wondrous creatures that inhabit all\l"
+ .string "corners of this world.\l"
+ .string "People raise POKéMON to be their pets,\l"
+ .string "use them for battling, and so on.$"
+
+gUnknown_81B99C4:: @ 81B99C4
+ .string "The ID No. is a special number assigned\n"
+ .string "specifically to you as a TRAINER.\l"
+ .string "Together with the OT name, the ID No.\l"
+ .string "is used to precisely identify the\l"
+ .string "Original TRAINER.\l"
+ .string "The ID No. does not change even if the\l"
+ .string "POKéMON is traded.$"
+
+gUnknown_81B9AA2:: @ 81B9AA2
+ .string "Whenever you win a battle against a\n"
+ .string "TRAINER, you are given prize money.\l"
+ .string "Save up your prize money so you can\l"
+ .string "enjoy shopping at POKéMON MARTS!$"
+
+gUnknown_81B9B2F:: @ 81B9B2F
+ .string "This indicates the number of POKéMON\n"
+ .string "LEAGUE BADGES that you have won.\l"
+ .string "Earn BADGES by defeating GYM LEADERS\l"
+ .string "in various cities and towns.$"
+
+gUnknown_81B9BB7:: @ 81B9BB7
+ .string "The HELP System$"
+
+gUnknown_81B9BC7:: @ 81B9BC7
+ .string "The game$"
+
+gUnknown_81B9BD0:: @ 81B9BD0
+ .string "Wireless Adapter$"
+
+gUnknown_81B9BE1:: @ 81B9BE1
+ .string "Game fundamentals 1$"
+
+gUnknown_81B9BF5:: @ 81B9BF5
+ .string "Game fundamentals 2$"
+
+gUnknown_81B9C09:: @ 81B9C09
+ .string "Game fundamentals 3$"
+
+gUnknown_81B9C1D:: @ 81B9C1D
+ .string "What are POKéMON?$"
+
+gUnknown_81B9C2F:: @ 81B9C2F
+ .string "The help messages change depending on\n"
+ .string "how much you have progressed in the\l"
+ .string "game. They are designed to support you\l"
+ .string "when you need them. If there is\l"
+ .string "anything that you don't understand,\l"
+ .string "please look up the HELP System!$"
+
+gUnknown_81B9D04:: @ 81B9D04
+ .string "You become the main character to\n"
+ .string "explore the world of POKéMON!\l"
+ .string "By talking to people and solving\l"
+ .string "mysteries, new paths will open to you.\l"
+ .string "Strive for the goal together with your\l"
+ .string "wonderful POKéMON!$"
+
+gUnknown_81B9DC5:: @ 81B9DC5
+ .string "This game communicates over a wireless\n"
+ .string "link using the Wireless Adapter.\p"
+ .string "Go wireless anywhere, anytime, and\n"
+ .string "with anybody!\p"
+ .string "Try playing with the Wireless Adapter\n"
+ .string "always attached!$"
+
+gUnknown_81B9E75:: @ 81B9E75
+ .string "Visit every city and town, travel every\n"
+ .string "road, explore every cave, and face\l"
+ .string "every challenge as you strive to\l"
+ .string "become the greatest TRAINER of\l"
+ .string "POKéMON!$"
+
+gUnknown_81B9F09:: @ 81B9F09
+ .string "On your adventure, you will be faced\n"
+ .string "with many obstacles. Every obstacle\l"
+ .string "can be overcome by doing something\l"
+ .string "or by solving mysteries. Some obstacles\l"
+ .string "are affected by something that happens\l"
+ .string "far away.$"
+
+gUnknown_81B9FCE:: @ 81B9FCE
+ .string "Some of the obstacles in your way can\n"
+ .string "be removed once your POKéMON learn\l"
+ .string "specific moves.$"
+
+gUnknown_81BA027:: @ 81BA027
+ .string "POKéMON are wondrous creatures that\n"
+ .string "are shrouded in mystery. You may meet\l"
+ .string "them all over the world…in tall\l"
+ .string "grass, caves, the sea, and more.\l"
+ .string "They appear to grow obedient to the\l"
+ .string "TRAINERS that caught them.$"
+
+gUnknown_81BA0F1:: @ 81BA0F1
+ .string "Using the Type Matchup List$"
+
+gUnknown_81BA10D:: @ 81BA10D
+ .string "Own move type: DARK$"
+
+gUnknown_81BA121:: @ 81BA121
+ .string "Own POKéMON type: DARK$"
+
+gUnknown_81BA138:: @ 81BA138
+ .string "Own move type: ROCK$"
+
+gUnknown_81BA14C:: @ 81BA14C
+ .string "Own POKéMON type: ROCK$"
+
+gUnknown_81BA163:: @ 81BA163
+ .string "Own move type: PSYCHIC$"
+
+gUnknown_81BA17A:: @ 81BA17A
+ .string "Own POKéMON type: PSYCHIC$"
+
+gUnknown_81BA194:: @ 81BA194
+ .string "Own move type: FIGHTING$"
+
+gUnknown_81BA1AC:: @ 81BA1AC
+ .string "Own POKéMON type: FIGHTING$"
+
+gUnknown_81BA1C7:: @ 81BA1C7
+ .string "Own move type: GRASS$"
+
+gUnknown_81BA1DC:: @ 81BA1DC
+ .string "Own POKéMON type: GRASS$"
+
+gUnknown_81BA1F4:: @ 81BA1F4
+ .string "Own move type: GHOST$"
+
+gUnknown_81BA209:: @ 81BA209
+ .string "Own POKéMON type: GHOST$"
+
+gUnknown_81BA221:: @ 81BA221
+ .string "Own move type: ICE$"
+
+gUnknown_81BA234:: @ 81BA234
+ .string "Own POKéMON type: ICE$"
+
+gUnknown_81BA24A:: @ 81BA24A
+ .string "Own move type: GROUND$"
+
+gUnknown_81BA260:: @ 81BA260
+ .string "Own POKéMON type: GROUND$"
+
+gUnknown_81BA279:: @ 81BA279
+ .string "Own move type: ELECTRIC$"
+
+gUnknown_81BA291:: @ 81BA291
+ .string "Own POKéMON type: ELECTRIC$"
+
+gUnknown_81BA2AC:: @ 81BA2AC
+ .string "Own move type: POISON$"
+
+gUnknown_81BA2C2:: @ 81BA2C2
+ .string "Own POKéMON type: POISON$"
+
+gUnknown_81BA2DB:: @ 81BA2DB
+ .string "Own move type: DRAGON$"
+
+gUnknown_81BA2F1:: @ 81BA2F1
+ .string "Own POKéMON type: DRAGON$"
+
+gUnknown_81BA30A:: @ 81BA30A
+ .string "Own move type: NORMAL$"
+
+gUnknown_81BA320:: @ 81BA320
+ .string "Own POKéMON type: NORMAL$"
+
+gUnknown_81BA339:: @ 81BA339
+ .string "Own move type: STEEL$"
+
+gUnknown_81BA34E:: @ 81BA34E
+ .string "Own POKéMON type: STEEL$"
+
+gUnknown_81BA366:: @ 81BA366
+ .string "Own move type: FLYING$"
+
+gUnknown_81BA37C:: @ 81BA37C
+ .string "Own POKéMON type: FLYING$"
+
+gUnknown_81BA395:: @ 81BA395
+ .string "Own move type: FIRE$"
+
+gUnknown_81BA3A9:: @ 81BA3A9
+ .string "Own POKéMON type: FIRE$"
+
+gUnknown_81BA3C0:: @ 81BA3C0
+ .string "Own move type: WATER$"
+
+gUnknown_81BA3D5:: @ 81BA3D5
+ .string "Own POKéMON type: WATER$"
+
+gUnknown_81BA3ED:: @ 81BA3ED
+ .string "Own move type: BUG$"
+
+gUnknown_81BA400:: @ 81BA400
+ .string "Own POKéMON type: BUG$"
+
+gUnknown_81BA416:: @ 81BA416
+ .string "Depending on the matchup of the\n"
+ .string "move type and the target POKéMON's\l"
+ .string "type, the move's effectiveness varies:\l"
+ .string "{EXTRA_TARGET}: Super effective!\l"
+ .string "{EXTRA_TRIANGLE}: Not very effective\l"
+ .string "{EXTRA_X}: Not effective at all\l"
+ .string "(No changes for other matchups.)$"
+
+gUnknown_81BA4E6:: @ 81BA4E6
+ .string "Effect on the opposing POKéMON:\p"
+ .string " {EXTRA_TARGET}: PSYCHIC, GHOST\p"
+ .string " {EXTRA_TRIANGLE}: FIGHTING, DARK, STEEL$"
+
+gUnknown_81BA539:: @ 81BA539
+ .string "Effect of foe's move on own POKéMON:\p"
+ .string " {EXTRA_TARGET}: FIGHTING, BUG\p"
+ .string " {EXTRA_TRIANGLE}: GHOST, DARK\p"
+ .string " {EXTRA_X}: PSYCHIC$"
+
+gUnknown_81BA595:: @ 81BA595
+ .string "Effect on the opposing POKéMON:\p"
+ .string " {EXTRA_TARGET}: FIRE, ICE, FLYING, BUG\p"
+ .string " {EXTRA_TRIANGLE}: FIGHTING, GROUND, STEEL$"
+
+gUnknown_81BA5F2:: @ 81BA5F2
+ .string "Effect of foe's move on own POKéMON:\p"
+ .string " {EXTRA_TARGET}: WATER, GRASS, FIGHTING,\n"
+ .string " GROUND, STEEL\p"
+ .string " {EXTRA_TRIANGLE}: NORMAL, FIRE, POISON, FLYING$"
+
+gUnknown_81BA66F:: @ 81BA66F
+ .string "Effect on the opposing POKéMON:\p"
+ .string " {EXTRA_TARGET}: FIGHTING, POISON\p"
+ .string " {EXTRA_TRIANGLE}: PSYCHIC, STEEL\p"
+ .string " {EXTRA_X}: DARK$"
+
+gUnknown_81BA6C9:: @ 81BA6C9
+ .string "Effect of foe's move on own POKéMON:\p"
+ .string " {EXTRA_TARGET}: BUG, GHOST, DARK\p"
+ .string " {EXTRA_TRIANGLE}: FIGHTING, PSYCHIC$"
+
+gUnknown_81BA71F:: @ 81BA71F
+ .string "Effect on the opposing POKéMON:\p"
+ .string " {EXTRA_TARGET}: NORMAL, ICE, ROCK, DARK, STEEL\p"
+ .string " {EXTRA_TRIANGLE}: POISON, FLYING, PSYCHIC, BUG\p"
+ .string " {EXTRA_X}: GHOST$"
+
+gUnknown_81BA796:: @ 81BA796
+ .string "Effect of foe's move on own POKéMON:\p"
+ .string " {EXTRA_TARGET}: FLYING, PSYCHIC\p"
+ .string " {EXTRA_TRIANGLE}: BUG, ROCK, DARK$"
+
+gUnknown_81BA7E9:: @ 81BA7E9
+ .string "Effect on the opposing POKéMON:\p"
+ .string " {EXTRA_TARGET}: WATER, GROUND, ROCK\p"
+ .string " {EXTRA_TRIANGLE}: FIRE, GRASS, POISON, FLYING,\n"
+ .string " BUG, DRAGON, STEEL$"
+
+gUnknown_81BA862:: @ 81BA862
+ .string "Effect of foe's move on own POKéMON:\p"
+ .string " {EXTRA_TARGET}: FIRE, ICE, POISON, FLYING, BUG\p"
+ .string " {EXTRA_TRIANGLE}: WATER, ELECTRIC, GRASS, GROUND$"
+
+gUnknown_81BA8D3:: @ 81BA8D3
+ .string "Effect on the opposing POKéMON:\p"
+ .string " {EXTRA_TARGET}: PSYCHIC, GHOST\p"
+ .string " {EXTRA_TRIANGLE}: DARK, STEEL\p"
+ .string " {EXTRA_X}: NORMAL$"
+
+gUnknown_81BA92A:: @ 81BA92A
+ .string "Effect of foe's move on own POKéMON:\p"
+ .string " {EXTRA_TARGET}: GHOST, DARK\p"
+ .string " {EXTRA_TRIANGLE}: POISON, BUG\p"
+ .string " {EXTRA_X}: NORMAL, FIGHTING$"
+
+gUnknown_81BA98D:: @ 81BA98D
+ .string "Effect on the opposing POKéMON:\p"
+ .string " {EXTRA_TARGET}: GRASS, GROUND, FLYING, DRAGON\p"
+ .string " {EXTRA_TRIANGLE}: FIRE, WATER, ICE, STEEL$"
+
+gUnknown_81BA9F1:: @ 81BA9F1
+ .string "Effect of foe's move on own POKéMON:\p"
+ .string " {EXTRA_TARGET}: FIRE, FIGHTING, ROCK, STEEL\p"
+ .string " {EXTRA_TRIANGLE}: ICE$"
+
+gUnknown_81BAA44:: @ 81BAA44
+ .string "Effect on the opposing POKéMON:\p"
+ .string " {EXTRA_TARGET}: FIRE, ELECTRIC, POISON, ROCK,\n"
+ .string " STEEL\p"
+ .string " {EXTRA_TRIANGLE}: GRASS, BUG\n"
+ .string " {EXTRA_X}: FLYING$"
+
+gUnknown_81BAAB6:: @ 81BAAB6
+ .string "Effect of foe's move on own POKéMON:\p"
+ .string " {EXTRA_TARGET}: WATER, GRASS, ICE\p"
+ .string " {EXTRA_TRIANGLE}: POISON, ROCK\p"
+ .string " {EXTRA_X}: ELECTRIC$"
+
+gUnknown_81BAB18:: @ 81BAB18
+ .string "Effect on the opposing POKéMON:\p"
+ .string " {EXTRA_TARGET}: WATER, FLYING\p"
+ .string " {EXTRA_TRIANGLE}: ELECTRIC, GRASS, DRAGON\p"
+ .string " {EXTRA_X}: GROUND$"
+
+gUnknown_81BAB7A:: @ 81BAB7A
+ .string "Effect of foe's move on own POKéMON:\p"
+ .string " {EXTRA_TARGET}: GROUND\p"
+ .string " {EXTRA_TRIANGLE}: ELECTRIC, FLYING, STEEL$"
+
+gUnknown_81BABCC:: @ 81BABCC
+ .string "Effect on the opposing POKéMON:\p"
+ .string " {EXTRA_TARGET}: GRASS\p"
+ .string " {EXTRA_TRIANGLE}: POISON, GROUND, ROCK, GHOST\p"
+ .string " {EXTRA_X}: STEEL$"
+
+gUnknown_81BAC29:: @ 81BAC29
+ .string "Effect of foe's move on own POKéMON:\p"
+ .string " {EXTRA_TARGET}: GROUND, PSYCHIC\p"
+ .string " {EXTRA_TRIANGLE}: GRASS, FIGHTING, POISON, BUG$"
+
+gUnknown_81BAC89:: @ 81BAC89
+ .string "Effect on the opposing POKéMON:\p"
+ .string " {EXTRA_TARGET}: DRAGON\p"
+ .string " {EXTRA_TRIANGLE}: STEEL$"
+
+gUnknown_81BACC4:: @ 81BACC4
+ .string "Effect of foe's move on own POKéMON:\p"
+ .string " {EXTRA_TARGET}: ICE, DRAGON\p"
+ .string " {EXTRA_TRIANGLE}: FIRE, WATER, ELECTRIC, GRASS$"
+
+gUnknown_81BAD20:: @ 81BAD20
+ .string "Effect on the opposing POKéMON:\p"
+ .string " {EXTRA_TRIANGLE}: ROCK, STEEL\p"
+ .string " {EXTRA_X}: GHOST$"
+
+gUnknown_81BAD60:: @ 81BAD60
+ .string "Effect of foe's move on own POKéMON:\p"
+ .string " {EXTRA_TARGET}: FIGHTING\p"
+ .string " {EXTRA_X}: GHOST$"
+
+gUnknown_81BADA2:: @ 81BADA2
+ .string "Effect on the opposing POKéMON:\p"
+ .string " {EXTRA_TARGET}: ICE, ROCK\p"
+ .string " {EXTRA_TRIANGLE}: FIRE, WATER, ELECTRIC, STEEL$"
+
+gUnknown_81BADF7:: @ 81BADF7
+ .string "Effect of foe's move on own POKéMON:\p"
+ .string " {EXTRA_TARGET}: FIRE, FIGHTING, GROUND\n"
+ .string " {EXTRA_TRIANGLE}: NORMAL, GRASS, ICE, FLYING,\l"
+ .string " PSYCHIC, BUG, ROCK, GHOST,\l"
+ .string " DRAGON, DARK, STEEL\l"
+ .string " {EXTRA_X}: POISON$"
+
+gUnknown_81BAEA8:: @ 81BAEA8
+ .string "Effect on the opposing POKéMON:\p"
+ .string " {EXTRA_TARGET}: GRASS, FIGHTING, BUG\p"
+ .string " {EXTRA_TRIANGLE}: ELECTRIC, ROCK, STEEL$"
+
+gUnknown_81BAF01:: @ 81BAF01
+ .string "Effect of foe's move on own POKéMON:\p"
+ .string " {EXTRA_TARGET}: ELECTRIC, ICE, ROCK\p"
+ .string " {EXTRA_TRIANGLE}: GRASS, FIGHTING, BUG\p"
+ .string " {EXTRA_X}: GROUND$"
+
+gUnknown_81BAF6B:: @ 81BAF6B
+ .string "Effect on the opposing POKéMON:\p"
+ .string " {EXTRA_TARGET}: GRASS, ICE, BUG, STEEL\p"
+ .string " {EXTRA_TRIANGLE}: FIRE, WATER, ROCK, DRAGON$"
+
+gUnknown_81BAFCA:: @ 81BAFCA
+ .string "Effect of foe's move on own POKéMON:\p"
+ .string " {EXTRA_TARGET}: WATER, GROUND, ROCK\p"
+ .string " {EXTRA_TRIANGLE}: FIRE, GRASS, ICE, BUG, STEEL$"
+
+gUnknown_81BB02E:: @ 81BB02E
+ .string "Effect on the opposing POKéMON:\p"
+ .string " {EXTRA_TARGET}: FIRE, GROUND, ROCK\p"
+ .string " {EXTRA_TRIANGLE}: WATER, GRASS, DRAGON$"
+
+gUnknown_81BB084:: @ 81BB084
+ .string "Effect of foe's move on own POKéMON:\p"
+ .string " {EXTRA_TARGET}: ELECTRIC, GRASS\p"
+ .string " {EXTRA_TRIANGLE}: FIRE, WATER, ICE, STEEL$"
+
+gUnknown_81BB0DF:: @ 81BB0DF
+ .string "Effect on the opposing POKéMON:\p"
+ .string " {EXTRA_TARGET}: GRASS, PSYCHIC, DARK\p"
+ .string " {EXTRA_TRIANGLE}: FIRE, FIGHTING, POISON,\n"
+ .string " FLYING, GHOST, STEEL$"
+
+gUnknown_81BB156:: @ 81BB156
+ .string "Effect of foe's move on own POKéMON:\p"
+ .string " {EXTRA_TARGET}: FIRE, FLYING, ROCK\p"
+ .string " {EXTRA_TRIANGLE}: GRASS, FIGHTING, GROUND$"
+
diff --git a/graphics/help_system/unk_845BCB0.bin b/graphics/help_system/unk_845BCB0.bin
new file mode 100644
index 000000000..b7ceb5080
--- /dev/null
+++ b/graphics/help_system/unk_845BCB0.bin
Binary files differ
diff --git a/include/constants/flags.h b/include/constants/flags.h
index 8ecac9769..eed83d7c6 100644
--- a/include/constants/flags.h
+++ b/include/constants/flags.h
@@ -68,6 +68,7 @@
#define FLAG_0x82F 0x82F
#define FLAG_0x830 0x830
#define FLAG_0x834 0x834
+#define FLAG_0x83C 0x83C
#define FLAG_0x83E 0x83E
#define FLAG_0x841 0x841
#define FLAG_0x844 0x844
diff --git a/include/event_scripts.h b/include/event_scripts.h
index 1762faf8e..d5ee57d56 100644
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -772,4 +772,376 @@ extern const u8 gOakText_ConfirmRivalName[];
extern const u8 gOakText_RememberRivalName[];
extern const u8 gOakText_LegendAboutToUnfold[];
+// Help System
+extern const u8 gUnknown_81B2DF8[];
+extern const u8 gUnknown_81B2E1C[];
+extern const u8 gUnknown_81B2E2E[];
+extern const u8 gUnknown_81B2E48[];
+extern const u8 gUnknown_81B2E58[];
+extern const u8 gUnknown_81B2E6A[];
+extern const u8 gUnknown_81B2E6F[];
+extern const u8 gUnknown_81B2E76[];
+extern const u8 gUnknown_81B2E88[];
+extern const u8 gUnknown_81B2EC8[];
+extern const u8 gUnknown_81B2F00[];
+extern const u8 gUnknown_81B2F43[];
+extern const u8 gUnknown_81B2F74[];
+extern const u8 gUnknown_81B2FA9[];
+extern const u8 gUnknown_81B2FC9[];
+extern const u8 gUnknown_81B301B[];
+extern const u8 gUnknown_81B3083[];
+extern const u8 gUnknown_81B30A9[];
+extern const u8 gUnknown_81B30C1[];
+extern const u8 gUnknown_81B30DC[];
+extern const u8 gUnknown_81B30FC[];
+extern const u8 gUnknown_81B311F[];
+extern const u8 gUnknown_81B3140[];
+extern const u8 gUnknown_81B314F[];
+extern const u8 gUnknown_81B3168[];
+extern const u8 gUnknown_81B3189[];
+extern const u8 gUnknown_81B31AE[];
+extern const u8 gUnknown_81B31D3[];
+extern const u8 gUnknown_81B31EC[];
+extern const u8 gUnknown_81B31FF[];
+extern const u8 gUnknown_81B3215[];
+extern const u8 gUnknown_81B3226[];
+extern const u8 gUnknown_81B3243[];
+extern const u8 gUnknown_81B3261[];
+extern const u8 gUnknown_81B3276[];
+extern const u8 gUnknown_81B3290[];
+extern const u8 gUnknown_81B32B6[];
+extern const u8 gUnknown_81B32CD[];
+extern const u8 gUnknown_81B32E3[];
+extern const u8 gUnknown_81B32F9[];
+extern const u8 gUnknown_81B330B[];
+extern const u8 gUnknown_81B332B[];
+extern const u8 gUnknown_81B3344[];
+extern const u8 gUnknown_81B335C[];
+extern const u8 gUnknown_81B3373[];
+extern const u8 gUnknown_81B338C[];
+extern const u8 gUnknown_81B33A6[];
+extern const u8 gUnknown_81B33CA[];
+extern const u8 gUnknown_81B33EA[];
+extern const u8 gUnknown_81B3402[];
+extern const u8 gUnknown_81B3427[];
+extern const u8 gUnknown_81B3440[];
+extern const u8 gUnknown_81B3457[];
+extern const u8 gUnknown_81B346F[];
+extern const u8 gUnknown_81B3481[];
+extern const u8 gUnknown_81B349B[];
+extern const u8 gUnknown_81B34B7[];
+extern const u8 gUnknown_81B34D6[];
+extern const u8 gUnknown_81B34F6[];
+extern const u8 gUnknown_81B3516[];
+extern const u8 gUnknown_81B3525[];
+extern const u8 gUnknown_81B35E6[];
+extern const u8 gUnknown_81B36EB[];
+extern const u8 gUnknown_81B379A[];
+extern const u8 gUnknown_81B3849[];
+extern const u8 gUnknown_81B3876[];
+extern const u8 gUnknown_81B3972[];
+extern const u8 gUnknown_81B3A51[];
+extern const u8 gUnknown_81B3ACC[];
+extern const u8 gUnknown_81B3BB6[];
+extern const u8 gUnknown_81B3C99[];
+extern const u8 gUnknown_81B3D1B[];
+extern const u8 gUnknown_81B3DE3[];
+extern const u8 gUnknown_81B3EBC[];
+extern const u8 gUnknown_81B3F7F[];
+extern const u8 gUnknown_81B406C[];
+extern const u8 gUnknown_81B410B[];
+extern const u8 gUnknown_81B41D7[];
+extern const u8 gUnknown_81B42B3[];
+extern const u8 gUnknown_81B439D[];
+extern const u8 gUnknown_81B4483[];
+extern const u8 gUnknown_81B457C[];
+extern const u8 gUnknown_81B4645[];
+extern const u8 gUnknown_81B470A[];
+extern const u8 gUnknown_81B47F0[];
+extern const u8 gUnknown_81B48C6[];
+extern const u8 gUnknown_81B497A[];
+extern const u8 gUnknown_81B4A72[];
+extern const u8 gUnknown_81B4B65[];
+extern const u8 gUnknown_81B4C54[];
+extern const u8 gUnknown_81B4D26[];
+extern const u8 gUnknown_81B4E0B[];
+extern const u8 gUnknown_81B4ED8[];
+extern const u8 gUnknown_81B4FB2[];
+extern const u8 gUnknown_81B4FFD[];
+extern const u8 gUnknown_81B50FF[];
+extern const u8 gUnknown_81B51B1[];
+extern const u8 gUnknown_81B5272[];
+extern const u8 gUnknown_81B5325[];
+extern const u8 gUnknown_81B5382[];
+extern const u8 gUnknown_81B547C[];
+extern const u8 gUnknown_81B54E1[];
+extern const u8 gUnknown_81B5589[];
+extern const u8 gUnknown_81B55F4[];
+extern const u8 gUnknown_81B56E3[];
+extern const u8 gUnknown_81B56F4[];
+extern const u8 gUnknown_81B5705[];
+extern const u8 gUnknown_81B5717[];
+extern const u8 gUnknown_81B5728[];
+extern const u8 gUnknown_81B5737[];
+extern const u8 gUnknown_81B5744[];
+extern const u8 gUnknown_81B5754[];
+extern const u8 gUnknown_81B5767[];
+extern const u8 gUnknown_81B577B[];
+extern const u8 gUnknown_81B5787[];
+extern const u8 gUnknown_81B5795[];
+extern const u8 gUnknown_81B57A5[];
+extern const u8 gUnknown_81B57B8[];
+extern const u8 gUnknown_81B57CF[];
+extern const u8 gUnknown_81B57DE[];
+extern const u8 gUnknown_81B57EE[];
+extern const u8 gUnknown_81B580D[];
+extern const u8 gUnknown_81B5824[];
+extern const u8 gUnknown_81B5834[];
+extern const u8 gUnknown_81B583F[];
+extern const u8 gUnknown_81B5850[];
+extern const u8 gUnknown_81B5863[];
+extern const u8 gUnknown_81B5875[];
+extern const u8 gUnknown_81B5884[];
+extern const u8 gUnknown_81B5893[];
+extern const u8 gUnknown_81B58A4[];
+extern const u8 gUnknown_81B58BC[];
+extern const u8 gUnknown_81B58D3[];
+extern const u8 gUnknown_81B58E5[];
+extern const u8 gUnknown_81B58FD[];
+extern const u8 gUnknown_81B590E[];
+extern const u8 gUnknown_81B591D[];
+extern const u8 gUnknown_81B592E[];
+extern const u8 gUnknown_81B593E[];
+extern const u8 gUnknown_81B5950[];
+extern const u8 gUnknown_81B595D[];
+extern const u8 gUnknown_81B5974[];
+extern const u8 gUnknown_81B5989[];
+extern const u8 gUnknown_81B59A7[];
+extern const u8 gUnknown_81B59BF[];
+extern const u8 gUnknown_81B59D6[];
+extern const u8 gUnknown_81B59E8[];
+extern const u8 gUnknown_81B59F5[];
+extern const u8 gUnknown_81B5A0D[];
+extern const u8 gUnknown_81B5A1B[];
+extern const u8 gUnknown_81B5A29[];
+extern const u8 gUnknown_81B5A37[];
+extern const u8 gUnknown_81B5A4D[];
+extern const u8 gUnknown_81B5B0C[];
+extern const u8 gUnknown_81B5B7D[];
+extern const u8 gUnknown_81B5C13[];
+extern const u8 gUnknown_81B5CDF[];
+extern const u8 gUnknown_81B5D87[];
+extern const u8 gUnknown_81B5E41[];
+extern const u8 gUnknown_81B5F10[];
+extern const u8 gUnknown_81B5FA6[];
+extern const u8 gUnknown_81B606C[];
+extern const u8 gUnknown_81B6140[];
+extern const u8 gUnknown_81B6203[];
+extern const u8 gUnknown_81B62E4[];
+extern const u8 gUnknown_81B6397[];
+extern const u8 gUnknown_81B6478[];
+extern const u8 gUnknown_81B6525[];
+extern const u8 gUnknown_81B65E7[];
+extern const u8 gUnknown_81B66BA[];
+extern const u8 gUnknown_81B678E[];
+extern const u8 gUnknown_81B6883[];
+extern const u8 gUnknown_81B68CD[];
+extern const u8 gUnknown_81B69B9[];
+extern const u8 gUnknown_81B6A9A[];
+extern const u8 gUnknown_81B6B6E[];
+extern const u8 gUnknown_81B6C4F[];
+extern const u8 gUnknown_81B6D4A[];
+extern const u8 gUnknown_81B6E02[];
+extern const u8 gUnknown_81B6EC1[];
+extern const u8 gUnknown_81B6FA8[];
+extern const u8 gUnknown_81B7075[];
+extern const u8 gUnknown_81B7108[];
+extern const u8 gUnknown_81B71EA[];
+extern const u8 gUnknown_81B723B[];
+extern const u8 gUnknown_81B7319[];
+extern const u8 gUnknown_81B73E8[];
+extern const u8 gUnknown_81B747E[];
+extern const u8 gUnknown_81B752C[];
+extern const u8 gUnknown_81B7611[];
+extern const u8 gUnknown_81B7692[];
+extern const u8 gUnknown_81B771E[];
+extern const u8 gUnknown_81B77DD[];
+extern const u8 gUnknown_81B7884[];
+extern const u8 gUnknown_81B7931[];
+extern const u8 gUnknown_81B79CB[];
+extern const u8 gUnknown_81B7A60[];
+extern const u8 gUnknown_81B7AEE[];
+extern const u8 gUnknown_81B7BBE[];
+extern const u8 gUnknown_81B7C57[];
+extern const u8 gUnknown_81B7CC1[];
+extern const u8 gUnknown_81B7CC4[];
+extern const u8 gUnknown_81B7CD9[];
+extern const u8 gUnknown_81B7CDF[];
+extern const u8 gUnknown_81B7CE6[];
+extern const u8 gUnknown_81B7CEE[];
+extern const u8 gUnknown_81B7CF6[];
+extern const u8 gUnknown_81B7CFE[];
+extern const u8 gUnknown_81B7D04[];
+extern const u8 gUnknown_81B7D12[];
+extern const u8 gUnknown_81B7D17[];
+extern const u8 gUnknown_81B7D1A[];
+extern const u8 gUnknown_81B7D1F[];
+extern const u8 gUnknown_81B7D27[];
+extern const u8 gUnknown_81B7D2D[];
+extern const u8 gUnknown_81B7D37[];
+extern const u8 gUnknown_81B7D3E[];
+extern const u8 gUnknown_81B7D45[];
+extern const u8 gUnknown_81B7D48[];
+extern const u8 gUnknown_81B7D4E[];
+extern const u8 gUnknown_81B7D57[];
+extern const u8 gUnknown_81B7D5B[];
+extern const u8 gUnknown_81B7D61[];
+extern const u8 gUnknown_81B7D6B[];
+extern const u8 gUnknown_81B7D76[];
+extern const u8 gUnknown_81B7D7E[];
+extern const u8 gUnknown_81B7D88[];
+extern const u8 gUnknown_81B7D8F[];
+extern const u8 gUnknown_81B7D9A[];
+extern const u8 gUnknown_81B7DA7[];
+extern const u8 gUnknown_81B7DB4[];
+extern const u8 gUnknown_81B7DBA[];
+extern const u8 gUnknown_81B7DC6[];
+extern const u8 gUnknown_81B7DCC[];
+extern const u8 gUnknown_81B7DD3[];
+extern const u8 gUnknown_81B7DD6[];
+extern const u8 gUnknown_81B7DD9[];
+extern const u8 gUnknown_81B7DE1[];
+extern const u8 gUnknown_81B7DEB[];
+extern const u8 gUnknown_81B7DFA[];
+extern const u8 gUnknown_81B7E02[];
+extern const u8 gUnknown_81B7E09[];
+extern const u8 gUnknown_81B7E0F[];
+extern const u8 gUnknown_81B7E16[];
+extern const u8 gUnknown_81B7F0A[];
+extern const u8 gUnknown_81B800A[];
+extern const u8 gUnknown_81B80EC[];
+extern const u8 gUnknown_81B81C2[];
+extern const u8 gUnknown_81B8256[];
+extern const u8 gUnknown_81B8348[];
+extern const u8 gUnknown_81B83EF[];
+extern const u8 gUnknown_81B847B[];
+extern const u8 gUnknown_81B8550[];
+extern const u8 gUnknown_81B8647[];
+extern const u8 gUnknown_81B86E2[];
+extern const u8 gUnknown_81B87B8[];
+extern const u8 gUnknown_81B8897[];
+extern const u8 gUnknown_81B8924[];
+extern const u8 gUnknown_81B8A04[];
+extern const u8 gUnknown_81B8A84[];
+extern const u8 gUnknown_81B8B62[];
+extern const u8 gUnknown_81B8C18[];
+extern const u8 gUnknown_81B8C94[];
+extern const u8 gUnknown_81B8D1D[];
+extern const u8 gUnknown_81B8DD4[];
+extern const u8 gUnknown_81B8E67[];
+extern const u8 gUnknown_81B8F4D[];
+extern const u8 gUnknown_81B901B[];
+extern const u8 gUnknown_81B90A7[];
+extern const u8 gUnknown_81B90E8[];
+extern const u8 gUnknown_81B9170[];
+extern const u8 gUnknown_81B91C2[];
+extern const u8 gUnknown_81B91F9[];
+extern const u8 gUnknown_81B92B8[];
+extern const u8 gUnknown_81B92ED[];
+extern const u8 gUnknown_81B93D8[];
+extern const u8 gUnknown_81B9439[];
+extern const u8 gUnknown_81B9497[];
+extern const u8 gUnknown_81B9560[];
+extern const u8 gUnknown_81B9656[];
+extern const u8 gUnknown_81B9749[];
+extern const u8 gUnknown_81B984F[];
+extern const u8 gUnknown_81B991C[];
+extern const u8 gUnknown_81B99C4[];
+extern const u8 gUnknown_81B9AA2[];
+extern const u8 gUnknown_81B9B2F[];
+extern const u8 gUnknown_81B9BB7[];
+extern const u8 gUnknown_81B9BC7[];
+extern const u8 gUnknown_81B9BD0[];
+extern const u8 gUnknown_81B9BE1[];
+extern const u8 gUnknown_81B9BF5[];
+extern const u8 gUnknown_81B9C09[];
+extern const u8 gUnknown_81B9C1D[];
+extern const u8 gUnknown_81B9C2F[];
+extern const u8 gUnknown_81B9D04[];
+extern const u8 gUnknown_81B9DC5[];
+extern const u8 gUnknown_81B9E75[];
+extern const u8 gUnknown_81B9F09[];
+extern const u8 gUnknown_81B9FCE[];
+extern const u8 gUnknown_81BA027[];
+extern const u8 gUnknown_81BA0F1[];
+extern const u8 gUnknown_81BA10D[];
+extern const u8 gUnknown_81BA121[];
+extern const u8 gUnknown_81BA138[];
+extern const u8 gUnknown_81BA14C[];
+extern const u8 gUnknown_81BA163[];
+extern const u8 gUnknown_81BA17A[];
+extern const u8 gUnknown_81BA194[];
+extern const u8 gUnknown_81BA1AC[];
+extern const u8 gUnknown_81BA1C7[];
+extern const u8 gUnknown_81BA1DC[];
+extern const u8 gUnknown_81BA1F4[];
+extern const u8 gUnknown_81BA209[];
+extern const u8 gUnknown_81BA221[];
+extern const u8 gUnknown_81BA234[];
+extern const u8 gUnknown_81BA24A[];
+extern const u8 gUnknown_81BA260[];
+extern const u8 gUnknown_81BA279[];
+extern const u8 gUnknown_81BA291[];
+extern const u8 gUnknown_81BA2AC[];
+extern const u8 gUnknown_81BA2C2[];
+extern const u8 gUnknown_81BA2DB[];
+extern const u8 gUnknown_81BA2F1[];
+extern const u8 gUnknown_81BA30A[];
+extern const u8 gUnknown_81BA320[];
+extern const u8 gUnknown_81BA339[];
+extern const u8 gUnknown_81BA34E[];
+extern const u8 gUnknown_81BA366[];
+extern const u8 gUnknown_81BA37C[];
+extern const u8 gUnknown_81BA395[];
+extern const u8 gUnknown_81BA3A9[];
+extern const u8 gUnknown_81BA3C0[];
+extern const u8 gUnknown_81BA3D5[];
+extern const u8 gUnknown_81BA3ED[];
+extern const u8 gUnknown_81BA400[];
+extern const u8 gUnknown_81BA416[];
+extern const u8 gUnknown_81BA4E6[];
+extern const u8 gUnknown_81BA539[];
+extern const u8 gUnknown_81BA595[];
+extern const u8 gUnknown_81BA5F2[];
+extern const u8 gUnknown_81BA66F[];
+extern const u8 gUnknown_81BA6C9[];
+extern const u8 gUnknown_81BA71F[];
+extern const u8 gUnknown_81BA796[];
+extern const u8 gUnknown_81BA7E9[];
+extern const u8 gUnknown_81BA862[];
+extern const u8 gUnknown_81BA8D3[];
+extern const u8 gUnknown_81BA92A[];
+extern const u8 gUnknown_81BA98D[];
+extern const u8 gUnknown_81BA9F1[];
+extern const u8 gUnknown_81BAA44[];
+extern const u8 gUnknown_81BAAB6[];
+extern const u8 gUnknown_81BAB18[];
+extern const u8 gUnknown_81BAB7A[];
+extern const u8 gUnknown_81BABCC[];
+extern const u8 gUnknown_81BAC29[];
+extern const u8 gUnknown_81BAC89[];
+extern const u8 gUnknown_81BACC4[];
+extern const u8 gUnknown_81BAD20[];
+extern const u8 gUnknown_81BAD60[];
+extern const u8 gUnknown_81BADA2[];
+extern const u8 gUnknown_81BADF7[];
+extern const u8 gUnknown_81BAEA8[];
+extern const u8 gUnknown_81BAF01[];
+extern const u8 gUnknown_81BAF6B[];
+extern const u8 gUnknown_81BAFCA[];
+extern const u8 gUnknown_81BB02E[];
+extern const u8 gUnknown_81BB084[];
+extern const u8 gUnknown_81BB0DF[];
+extern const u8 gUnknown_81BB156[];
+
#endif //GUARD_EVENT_SCRIPTS_H
diff --git a/include/help_system.h b/include/help_system.h
index 97acec45e..1f8b7bbbb 100644
--- a/include/help_system.h
+++ b/include/help_system.h
@@ -2,12 +2,63 @@
#define GUARD_HELP_SYSTEM_H
#include "global.h"
+#include "list_menu.h"
+struct HelpSystemStruct_203F190_sub
+{
+ struct ListMenuItem * field_00;
+ u16 field_04;
+ u16 field_06;
+ u8 field_08;
+ u8 field_09;
+};
+
+struct HelpSystemStruct_203F190
+{
+ struct HelpSystemStruct_203F190_sub sub;
+ u8 field_0C;
+ u8 field_0D;
+ u8 field_0E;
+ u8 filler_10[0xC];
+};
+
+extern struct HelpSystemStruct_203F190 gUnknown_203F190;
+extern struct ListMenuItem gUnknown_203F1AC[];
extern bool8 gUnknown_3005ECC;
+extern u8 gUnknown_203F175;
-void sub_812B1E0(u16);
+void sub_812B1E0(u8);
void sub_812B484(void);
+void sub_812B4B8(void);
void HelpSystem_SetSomeVariable2(u8);
void sub_812B478(void);
+bool8 sub_812BC54(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1);
+bool8 sub_812BC80(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1);
+bool8 sub_812BCA8(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1);
+bool8 sub_812BCD0(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1);
+bool8 sub_812BD2C(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1);
+bool8 sub_812BD64(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1);
+bool8 sub_812BD98(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1);
+bool8 sub_812BE10(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1);
+bool8 sub_812BEEC(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1);
+bool8 sub_812BF18(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1);
+void sub_813C64C(struct HelpSystemStruct_203F190 *, u8, u8);
+void sub_813C4CC(const u8 *, u8, u8);
+void sub_813BDA4(u8);
+void sub_813BD5C(u8);
+void sub_813BDE8(u8);
+void sub_813BFC0(u8);
+void sub_813BE78(u8);
+s32 sub_813C690(void);
+void sub_813C75C(void);
+void sub_813C684(u8);
+void sub_813C004(u8, u8);
+void sub_813C50C(const u8 *a0, const u8 *a1);
+void sub_813BEE4(u8);
+void sub_813C624(void);
+void sub_813C5FC(void);
+void sub_813C488(const u8 *str);
+void sub_813C584(const u8 *str);
+void sub_813BE30(u8);
#endif //GUARD_HELP_SYSTEM_H
diff --git a/include/list_menu.h b/include/list_menu.h
index 79dc3ec3f..6116ee39a 100644
--- a/include/list_menu.h
+++ b/include/list_menu.h
@@ -2,6 +2,7 @@
#define GUARD_LIST_MENU_H
#include "global.h"
+#include "window.h"
// Exported type declarations
diff --git a/include/overworld.h b/include/overworld.h
index a3fe1161f..b8cf58b4d 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -111,5 +111,6 @@ void Overworld_FadeOutMapMusic(void);
void sub_805671C(void);
void sub_8055DC4(void);
bool8 sub_8055FC4(void);
+bool8 is_light_level_8_or_9(u8 mapType);
#endif //GUARD_ROM4_H
diff --git a/include/save_location.h b/include/save_location.h
index 69b39ea53..cd499643e 100644
--- a/include/save_location.h
+++ b/include/save_location.h
@@ -7,5 +7,6 @@ bool32 sub_81AFCEC(void);
void TrySetMapSaveWarpStatus(void);
void sub_81AFDA0(void);
void sub_81AFDD0(void);
+bool32 IsCurMapPokeCenter(void);
#endif // GUARD_SAVE_LOCATION_H
diff --git a/include/strings.h b/include/strings.h
index edc5136f8..6cc6b93c1 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -136,4 +136,10 @@ extern const u8 gTeachyTvText_CatchingScript2[];
extern const u8 gTeachyTvText_TMsScript2[];
extern const u8 gTeachyTvText_RegisterScript2[];
+// help_system_812B1E0
+extern const u8 gUnknown_841DFA5[];
+extern const u8 gUnknown_841DFAC[];
+extern const u8 gUnknown_841DFBE[];
+extern const u8 gUnknown_841DFC9[];
+
#endif //GUARD_STRINGS_H
diff --git a/ld_script.txt b/ld_script.txt
index d264549b7..5abc25e98 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -239,7 +239,7 @@ SECTIONS {
asm/pokemon_special_anim.o(.text);
asm/party_menu.o(.text);
asm/union_room_chat.o(.text);
- asm/help_system_812B1E0.o(.text);
+ src/help_system_812B1E0.o(.text);
src/quest_log_battle.o(.text);
src/fame_checker.o(.text);
src/menu2.o(.text);
@@ -419,6 +419,7 @@ SECTIONS {
data/data_83FECCC.o(.rodata.8453F6C);
src/quest_log.o(.rodata);
data/data_83FECCC.o(.rodata.8456C74);
+ src/help_system_812B1E0.o(.rodata);
src/fame_checker.o(.rodata);
src/menu2.o(.rodata);
src/oak_speech.o(.rodata);
diff --git a/src/fame_checker.c b/src/fame_checker.c
index b2ee17c93..b3988d156 100644
--- a/src/fame_checker.c
+++ b/src/fame_checker.c
@@ -127,9 +127,9 @@ extern const u8 gFameCheckerText_Cancel[];
extern const u8 gFameCheckerText_ListMenuCursor[];
extern const u8 gFameCheckerText_FameCheckerWillBeClosed[];
extern const u8 gFameCheckerText_ClearTextbox[];
-extern const u8 gFameCheckerText_MainScreenUI[]; // "{KEYGFX_START_BUTTON}PICK {KEYGFX_DPAD_UP_DOWN}SELECT {KEYGFX_A_BUTTON}OK$"
-extern const u8 gFameCheckerText_PickScreenUI[]; // "{KEYGFX_START_BUTTON}PICK {KEYGFX_DPAD_UP_DOWN}SELECT {KEYGFX_B_BUTTON}CANCEL$"
-extern const u8 gFameCheckerText_FlavorTextUI[]; // "{KEYGFX_DPAD_ANY}PICK {KEYGFX_A_BUTTON}READ {KEYGFX_B_BUTTON}CANCEL$"
+extern const u8 gFameCheckerText_MainScreenUI[]; // "{KEYGFX_DPAD_ANY}PICK {KEYGFX_DPAD_UP_DOWN}SELECT {KEYGFX_A_BUTTON}OK$"
+extern const u8 gFameCheckerText_PickScreenUI[]; // "{KEYGFX_DPAD_ANY}PICK {KEYGFX_DPAD_UP_DOWN}SELECT {KEYGFX_B_BUTTON}CANCEL$"
+extern const u8 gFameCheckerText_FlavorTextUI[]; // "{KEYGFX_START_BUTTON}PICK {KEYGFX_A_BUTTON}READ {KEYGFX_B_BUTTON}CANCEL$"
extern const u8 gFameCheckerOakName[]; // "OAK$"
extern const u8 gFameCheckerDaisyName[]; // "DAISY$"
extern const u8 gFameCheckerBillName[]; // "BILL$"
diff --git a/src/help_system_812B1E0.c b/src/help_system_812B1E0.c
new file mode 100644
index 000000000..1356db7d0
--- /dev/null
+++ b/src/help_system_812B1E0.c
@@ -0,0 +1,1580 @@
+#include "global.h"
+#include "event_data.h"
+#include "event_scripts.h"
+#include "field_player_avatar.h"
+#include "help_system.h"
+#include "item.h"
+#include "link.h"
+#include "overworld.h"
+#include "pokedex.h"
+#include "quest_log.h"
+#include "save.h"
+#include "save_location.h"
+#include "sound.h"
+#include "strings.h"
+#include "constants/items.h"
+#include "constants/maps.h"
+#include "constants/songs.h"
+
+static EWRAM_DATA u16 gUnknown_203B0EC = 0;
+static EWRAM_DATA u8 gUnknown_203B0EE = 0;
+
+u8 gUnknown_3005E9C[4];
+u16 gUnknown_3005EA0;
+
+static bool32 sub_812B27C(const u16 * mapIdxs);
+static void sub_812B520(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1);
+static void sub_812B614(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1);
+static bool8 sub_812B754(void);
+static bool8 sub_812B780(u8);
+static bool8 sub_812BB10(void);
+
+static void sub_812BF5C(void);
+static void sub_812BF74(const u8 *);
+static void sub_812BF94(struct HelpSystemStruct_203F190 * a0);
+static void sub_812BF9C(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1);
+
+static const u8 *const gUnknown_845B080[] = {
+ gUnknown_81B2DF8,
+ gUnknown_81B2E1C,
+ gUnknown_81B2E2E,
+ gUnknown_81B2E48,
+ gUnknown_81B2E58,
+ gUnknown_81B2E6A
+};
+
+static const u8 *const gUnknown_845B098[] = {
+ gUnknown_81B2E88,
+ gUnknown_81B2EC8,
+ gUnknown_81B2F00,
+ gUnknown_81B2F43,
+ gUnknown_81B2F74,
+ gUnknown_81B2FA9
+};
+
+static const u8 *const gUnknown_845B0B0[] = {
+ NULL,
+ gUnknown_81B3083,
+ gUnknown_81B30A9,
+ gUnknown_81B30C1,
+ gUnknown_81B30DC,
+ gUnknown_81B30FC,
+ gUnknown_81B311F,
+ gUnknown_81B3140,
+ gUnknown_81B314F,
+ gUnknown_81B3168,
+ gUnknown_81B3189,
+ gUnknown_81B31AE,
+ gUnknown_81B31D3,
+ gUnknown_81B31EC,
+ gUnknown_81B31FF,
+ gUnknown_81B3215,
+ gUnknown_81B3226,
+ gUnknown_81B3243,
+ gUnknown_81B3261,
+ gUnknown_81B3276,
+ gUnknown_81B3290,
+ gUnknown_81B32B6,
+ gUnknown_81B32CD,
+ gUnknown_81B32E3,
+ gUnknown_81B32F9,
+ gUnknown_81B330B,
+ gUnknown_81B332B,
+ gUnknown_81B3344,
+ gUnknown_81B335C,
+ gUnknown_81B3373,
+ gUnknown_81B338C,
+ gUnknown_81B33A6,
+ gUnknown_81B33CA,
+ gUnknown_81B33EA,
+ gUnknown_81B3402,
+ gUnknown_81B3427,
+ gUnknown_81B3440,
+ gUnknown_81B3457,
+ gUnknown_81B346F,
+ gUnknown_81B3481,
+ gUnknown_81B349B,
+ gUnknown_81B34B7,
+ gUnknown_81B34D6,
+ gUnknown_81B34F6,
+ gUnknown_81B3516
+};
+
+static const u8 *const gUnknown_845B164[] = {
+ NULL,
+ gUnknown_81B3525,
+ gUnknown_81B35E6,
+ gUnknown_81B36EB,
+ gUnknown_81B379A,
+ gUnknown_81B3849,
+ gUnknown_81B3876,
+ gUnknown_81B3972,
+ gUnknown_81B3A51,
+ gUnknown_81B3ACC,
+ gUnknown_81B3BB6,
+ gUnknown_81B3C99,
+ gUnknown_81B3D1B,
+ gUnknown_81B3DE3,
+ gUnknown_81B3EBC,
+ gUnknown_81B3F7F,
+ gUnknown_81B406C,
+ gUnknown_81B410B,
+ gUnknown_81B41D7,
+ gUnknown_81B42B3,
+ gUnknown_81B439D,
+ gUnknown_81B4483,
+ gUnknown_81B457C,
+ gUnknown_81B4645,
+ gUnknown_81B470A,
+ gUnknown_81B47F0,
+ gUnknown_81B48C6,
+ gUnknown_81B497A,
+ gUnknown_81B4A72,
+ gUnknown_81B4B65,
+ gUnknown_81B4C54,
+ gUnknown_81B4D26,
+ gUnknown_81B4E0B,
+ gUnknown_81B4ED8,
+ gUnknown_81B4FB2,
+ gUnknown_81B4FFD,
+ gUnknown_81B50FF,
+ gUnknown_81B51B1,
+ gUnknown_81B5272,
+ gUnknown_81B5325,
+ gUnknown_81B5382,
+ gUnknown_81B547C,
+ gUnknown_81B54E1,
+ gUnknown_81B5589,
+ gUnknown_81B55F4
+};
+
+static const u8 *const gUnknown_845B218[] = {
+ NULL,
+ gUnknown_81B56E3,
+ gUnknown_81B56F4,
+ gUnknown_81B5705,
+ gUnknown_81B5717,
+ gUnknown_81B5728,
+ gUnknown_81B5737,
+ gUnknown_81B5744,
+ gUnknown_81B5754,
+ gUnknown_81B5767,
+ gUnknown_81B577B,
+ gUnknown_81B5787,
+ gUnknown_81B5795,
+ gUnknown_81B57A5,
+ gUnknown_81B57B8,
+ gUnknown_81B57CF,
+ gUnknown_81B57DE,
+ gUnknown_81B57EE,
+ gUnknown_81B580D,
+ gUnknown_81B5824,
+ gUnknown_81B5834,
+ gUnknown_81B583F,
+ gUnknown_81B5850,
+ gUnknown_81B5863,
+ gUnknown_81B5875,
+ gUnknown_81B5884,
+ gUnknown_81B5893,
+ gUnknown_81B58A4,
+ gUnknown_81B58BC,
+ gUnknown_81B58D3,
+ gUnknown_81B58E5,
+ gUnknown_81B58FD,
+ gUnknown_81B590E,
+ gUnknown_81B591D,
+ gUnknown_81B592E,
+ gUnknown_81B593E,
+ gUnknown_81B5950,
+ gUnknown_81B595D,
+ gUnknown_81B5974,
+ gUnknown_81B5989,
+ gUnknown_81B59A7,
+ gUnknown_81B59BF,
+ gUnknown_81B59D6,
+ gUnknown_81B59E8,
+ gUnknown_81B59F5,
+ gUnknown_81B5A0D,
+ gUnknown_81B5A1B,
+ gUnknown_81B5A29,
+ gUnknown_81B5A37
+};
+
+static const u8 *const gUnknown_845B2DC[] = {
+ NULL,
+ gUnknown_81B5A4D,
+ gUnknown_81B5B0C,
+ gUnknown_81B5B7D,
+ gUnknown_81B5C13,
+ gUnknown_81B5CDF,
+ gUnknown_81B5D87,
+ gUnknown_81B5E41,
+ gUnknown_81B5F10,
+ gUnknown_81B5FA6,
+ gUnknown_81B606C,
+ gUnknown_81B6140,
+ gUnknown_81B6203,
+ gUnknown_81B62E4,
+ gUnknown_81B6397,
+ gUnknown_81B6478,
+ gUnknown_81B6525,
+ gUnknown_81B65E7,
+ gUnknown_81B66BA,
+ gUnknown_81B678E,
+ gUnknown_81B6883,
+ gUnknown_81B68CD,
+ gUnknown_81B69B9,
+ gUnknown_81B6A9A,
+ gUnknown_81B6B6E,
+ gUnknown_81B6C4F,
+ gUnknown_81B6D4A,
+ gUnknown_81B6E02,
+ gUnknown_81B6EC1,
+ gUnknown_81B6FA8,
+ gUnknown_81B7075,
+ gUnknown_81B7108,
+ gUnknown_81B71EA,
+ gUnknown_81B723B,
+ gUnknown_81B7319,
+ gUnknown_81B73E8,
+ gUnknown_81B747E,
+ gUnknown_81B752C,
+ gUnknown_81B7611,
+ gUnknown_81B7692,
+ gUnknown_81B771E,
+ gUnknown_81B77DD,
+ gUnknown_81B7884,
+ gUnknown_81B7931,
+ gUnknown_81B79CB,
+ gUnknown_81B7A60,
+ gUnknown_81B7AEE,
+ gUnknown_81B7BBE,
+ gUnknown_81B7C57
+};
+
+static const u8 *const gUnknown_845B3A0[] = {
+ NULL,
+ gUnknown_81B7CC1,
+ gUnknown_81B7CC4,
+ gUnknown_81B7CD9,
+ gUnknown_81B7CDF,
+ gUnknown_81B7CE6,
+ gUnknown_81B7CEE,
+ gUnknown_81B7CF6,
+ gUnknown_81B7CFE,
+ gUnknown_81B7D04,
+ gUnknown_81B7D12,
+ gUnknown_81B7D17,
+ gUnknown_81B7D1A,
+ gUnknown_81B7D1F,
+ gUnknown_81B7D27,
+ gUnknown_81B7D2D,
+ gUnknown_81B7D37,
+ gUnknown_81B7D3E,
+ gUnknown_81B7D45,
+ gUnknown_81B7D48,
+ gUnknown_81B7D4E,
+ gUnknown_81B7D57,
+ gUnknown_81B7D5B,
+ gUnknown_81B7D61,
+ gUnknown_81B7D6B,
+ gUnknown_81B7D76,
+ gUnknown_81B7D7E,
+ gUnknown_81B7D88,
+ gUnknown_81B7D8F,
+ gUnknown_81B7D9A,
+ gUnknown_81B7DA7,
+ gUnknown_81B7DB4,
+ gUnknown_81B7DBA,
+ gUnknown_81B7DC6,
+ gUnknown_81B7DCC,
+ gUnknown_81B7DD3,
+ gUnknown_81B7DD6,
+ gUnknown_81B7DD9,
+ gUnknown_81B7DE1,
+ gUnknown_81B7DEB,
+ gUnknown_81B7DFA,
+ gUnknown_81B7E02,
+ gUnknown_81B7E09,
+ gUnknown_81B7E0F
+};
+
+static const u8 *const gUnknown_845B450[] = {
+ NULL,
+ gUnknown_81B7E16,
+ gUnknown_81B7F0A,
+ gUnknown_81B800A,
+ gUnknown_81B80EC,
+ gUnknown_81B81C2,
+ gUnknown_81B8256,
+ gUnknown_81B8348,
+ gUnknown_81B83EF,
+ gUnknown_81B847B,
+ gUnknown_81B8550,
+ gUnknown_81B8647,
+ gUnknown_81B86E2,
+ gUnknown_81B87B8,
+ gUnknown_81B8897,
+ gUnknown_81B8924,
+ gUnknown_81B8A04,
+ gUnknown_81B8A84,
+ gUnknown_81B8B62,
+ gUnknown_81B8C18,
+ gUnknown_81B8C94,
+ gUnknown_81B8D1D,
+ gUnknown_81B8DD4,
+ gUnknown_81B8E67,
+ gUnknown_81B8F4D,
+ gUnknown_81B901B,
+ gUnknown_81B90A7,
+ gUnknown_81B90E8,
+ gUnknown_81B9170,
+ gUnknown_81B91C2,
+ gUnknown_81B91F9,
+ gUnknown_81B92B8,
+ gUnknown_81B92ED,
+ gUnknown_81B93D8,
+ gUnknown_81B9439,
+ gUnknown_81B9497,
+ gUnknown_81B9560,
+ gUnknown_81B9656,
+ gUnknown_81B9749,
+ gUnknown_81B984F,
+ gUnknown_81B991C,
+ gUnknown_81B99C4,
+ gUnknown_81B9AA2,
+ gUnknown_81B9B2F
+};
+
+static const u8 *const gUnknown_845B500[] = {
+ NULL,
+ gUnknown_81B9BB7,
+ gUnknown_81B9BC7,
+ gUnknown_81B9BD0,
+ gUnknown_81B9BE1,
+ gUnknown_81B9BF5,
+ gUnknown_81B9C09,
+ gUnknown_81B9C1D
+};
+
+static const u8 *const gUnknown_845B520[] = {
+ NULL,
+ gUnknown_81B9C2F,
+ gUnknown_81B9D04,
+ gUnknown_81B9DC5,
+ gUnknown_81B9E75,
+ gUnknown_81B9F09,
+ gUnknown_81B9FCE,
+ gUnknown_81BA027
+};
+
+static const u8 *const gUnknown_845B540[] = {
+ NULL,
+ gUnknown_81BA0F1,
+ gUnknown_81BA10D,
+ gUnknown_81BA121,
+ gUnknown_81BA138,
+ gUnknown_81BA14C,
+ gUnknown_81BA163,
+ gUnknown_81BA17A,
+ gUnknown_81BA194,
+ gUnknown_81BA1AC,
+ gUnknown_81BA1C7,
+ gUnknown_81BA1DC,
+ gUnknown_81BA1F4,
+ gUnknown_81BA209,
+ gUnknown_81BA221,
+ gUnknown_81BA234,
+ gUnknown_81BA24A,
+ gUnknown_81BA260,
+ gUnknown_81BA279,
+ gUnknown_81BA291,
+ gUnknown_81BA2AC,
+ gUnknown_81BA2C2,
+ gUnknown_81BA2DB,
+ gUnknown_81BA2F1,
+ gUnknown_81BA30A,
+ gUnknown_81BA320,
+ gUnknown_81BA339,
+ gUnknown_81BA34E,
+ gUnknown_81BA366,
+ gUnknown_81BA37C,
+ gUnknown_81BA395,
+ gUnknown_81BA3A9,
+ gUnknown_81BA3C0,
+ gUnknown_81BA3D5,
+ gUnknown_81BA3ED,
+ gUnknown_81BA400
+};
+
+static const u8 *const gUnknown_845B5D0[] = {
+ NULL,
+ gUnknown_81BA416,
+ gUnknown_81BA4E6,
+ gUnknown_81BA539,
+ gUnknown_81BA595,
+ gUnknown_81BA5F2,
+ gUnknown_81BA66F,
+ gUnknown_81BA6C9,
+ gUnknown_81BA71F,
+ gUnknown_81BA796,
+ gUnknown_81BA7E9,
+ gUnknown_81BA862,
+ gUnknown_81BA8D3,
+ gUnknown_81BA92A,
+ gUnknown_81BA98D,
+ gUnknown_81BA9F1,
+ gUnknown_81BAA44,
+ gUnknown_81BAAB6,
+ gUnknown_81BAB18,
+ gUnknown_81BAB7A,
+ gUnknown_81BABCC,
+ gUnknown_81BAC29,
+ gUnknown_81BAC89,
+ gUnknown_81BACC4,
+ gUnknown_81BAD20,
+ gUnknown_81BAD60,
+ gUnknown_81BADA2,
+ gUnknown_81BADF7,
+ gUnknown_81BAEA8,
+ gUnknown_81BAF01,
+ gUnknown_81BAF6B,
+ gUnknown_81BAFCA,
+ gUnknown_81BB02E,
+ gUnknown_81BB084,
+ gUnknown_81BB0DF,
+ gUnknown_81BB156
+};
+
+
+static const u8 gUnknown_845B660[] = {
+ 0x01, 0x02, 0x03, 0xff
+};
+
+static const u8 gUnknown_845B664[] = {
+ 0x01, 0x02, 0x03, 0xff
+};
+
+static const u8 gUnknown_845B668[] = {
+ 0x13, 0xff
+};
+
+static const u8 gUnknown_845B66A[] = {
+ 0x01, 0x02, 0x03, 0xff
+};
+
+static const u8 gUnknown_845B66E[] = {
+ 0x01, 0x25, 0xff
+};
+
+static const u8 gUnknown_845B671[] = {
+ 0x02, 0x03, 0x04, 0x05, 0x11, 0xff
+};
+
+static const u8 gUnknown_845B677[] = {
+ 0x09, 0x01, 0xff
+};
+
+static const u8 gUnknown_845B67A[] = {
+ 0x02, 0x03, 0xff
+};
+
+static const u8 gUnknown_845B67D[] = {
+ 0x09, 0x0a, 0x0b, 0x11, 0x0c, 0x10, 0xff
+};
+
+static const u8 gUnknown_845B684[] = {
+ 0x09, 0x01, 0x04, 0x05, 0x06, 0x07, 0x08, 0x02, 0x0d, 0xff
+};
+
+static const u8 gUnknown_845B68E[] = {
+ 0x09, 0x03, 0x0a, 0x0f, 0x12, 0x13, 0x14, 0xff
+};
+
+static const u8 gUnknown_845B696[] = {
+ 0x06, 0x07, 0x08, 0x2c, 0x09, 0x0d, 0x0e, 0x0f, 0x10, 0x12, 0xff
+};
+
+static const u8 gUnknown_845B6A1[] = {
+ 0x16, 0x17, 0x18, 0xff
+};
+
+static const u8 gUnknown_845B6A5[] = {
+ 0x0a, 0xff
+};
+
+static const u8 gUnknown_845B6A7[] = {
+ 0x11, 0x0e, 0x19, 0x1a, 0x1b, 0xff
+};
+
+static const u8 gUnknown_845B6AD[] = {
+ 0x0a, 0xff
+};
+
+static const u8 gUnknown_845B6AF[] = {
+ 0x0b, 0xff
+};
+
+static const u8 gUnknown_845B6B1[] = {
+ 0x2b, 0x19, 0x1a, 0xff
+};
+
+static const u8 gUnknown_845B6B5[] = {
+ 0x0c, 0xff
+};
+
+static const u8 gUnknown_845B6B7[] = {
+ 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0xff
+};
+
+static const u8 gUnknown_845B6BF[] = {
+ 0x02, 0x03, 0x04, 0xff
+};
+
+static const u8 gUnknown_845B6C3[] = {
+ 0x01, 0x02, 0x03, 0x07, 0xff
+};
+
+static const u8 gUnknown_845B6C8[] = {
+ 0x02, 0x04, 0x05, 0x09, 0x25, 0xff
+};
+
+static const u8 gUnknown_845B6CE[] = {
+ 0x1f, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x2c, 0x09, 0x0d, 0x0e, 0x0f, 0x10, 0x0a, 0x0b, 0x0c, 0x11, 0xff
+};
+
+static const u8 gUnknown_845B6E2[] = {
+ 0x09, 0x01, 0x02, 0x03, 0x0a, 0x28, 0xff
+};
+
+static const u8 gUnknown_845B6E9[] = {
+ 0x02, 0x05, 0x06, 0x0a, 0x23, 0x24, 0x09, 0x25, 0xff
+};
+
+static const u8 gUnknown_845B6F2[] = {
+ 0x1f, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x2c, 0x09, 0x0d, 0x0e, 0x0f, 0x10, 0x0a, 0x0b, 0x0c, 0x11, 0x14, 0xff
+};
+
+static const u8 gUnknown_845B707[] = {
+ 0x09, 0x01, 0x02, 0x03, 0x0a, 0x28, 0xff
+};
+
+static const u8 gUnknown_845B70E[] = {
+ 0x03, 0x07, 0x04, 0x05, 0x06, 0xff
+};
+
+static const u8 gUnknown_845B714[] = {
+ 0x02, 0x05, 0x06, 0x0a, 0x23, 0x24, 0x09, 0x25, 0xff
+};
+
+static const u8 gUnknown_845B71D[] = {
+ 0x1f, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x2c, 0x09, 0x0d, 0x0e, 0x0f, 0x10, 0x0a, 0x0b, 0x0c, 0x11, 0xff
+};
+
+static const u8 gUnknown_845B731[] = {
+ 0x09, 0x01, 0x02, 0x03, 0x0a, 0x0c, 0x0e, 0x16, 0x17, 0x18, 0x15, 0xff
+};
+
+static const u8 gUnknown_845B73D[] = {
+ 0x06, 0x0a, 0x23, 0x24, 0x09, 0x25, 0xff
+};
+
+static const u8 gUnknown_845B744[] = {
+ 0x1f, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x2c, 0x09, 0x0d, 0x0e, 0x0f, 0x10, 0x0a, 0x0b, 0x0c, 0x11, 0xff
+};
+
+static const u8 gUnknown_845B758[] = {
+ 0x09, 0x01, 0x02, 0x03, 0x0a, 0x15, 0xff
+};
+
+static const u8 gUnknown_845B75F[] = {
+ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0xff
+};
+
+static const u8 gUnknown_845B783[] = {
+ 0x02, 0x0a, 0x04, 0x05, 0x06, 0x07, 0x0d, 0x27, 0x08, 0x0b, 0x21, 0x23, 0x24, 0x2c, 0x09, 0x0e, 0x16, 0x17, 0x0f, 0x10, 0x11, 0x1a, 0x15, 0x1f, 0x20, 0x12, 0x13, 0x14, 0x18, 0x19, 0x1b, 0x1e, 0x1c, 0x28, 0x25, 0xff
+};
+
+static const u8 gUnknown_845B7A7[] = {
+ 0x1f, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x2c, 0x09, 0x0d, 0x0e, 0x0f, 0x10, 0x0a, 0x0b, 0x0c, 0x11, 0xff
+};
+
+static const u8 gUnknown_845B7BB[] = {
+ 0x09, 0x01, 0x02, 0x0a, 0x0b, 0x0c, 0x0d, 0x15, 0xff
+};
+
+static const u8 gUnknown_845B7C4[] = {
+ 0x02, 0x0a, 0x04, 0x05, 0x06, 0x07, 0x0d, 0x27, 0x08, 0x0b, 0x21, 0x23, 0x24, 0x2c, 0x09, 0x0e, 0x16, 0x17, 0x0f, 0x10, 0x11, 0x1a, 0x15, 0x1f, 0x20, 0x12, 0x13, 0x14, 0x18, 0x19, 0x1b, 0x1e, 0x1c, 0x28, 0x25, 0xff
+};
+
+static const u8 gUnknown_845B7E8[] = {
+ 0x1f, 0x01, 0x02, 0x06, 0x0a, 0x0b, 0x0c, 0x11, 0xff
+};
+
+static const u8 gUnknown_845B7F1[] = {
+ 0x09, 0x01, 0x02, 0x0a, 0x0b, 0x0c, 0x0d, 0x15, 0x28, 0xff
+};
+
+static const u8 gUnknown_845B7FB[] = {
+ 0x0a, 0x07, 0x0d, 0x27, 0x08, 0x0b, 0x21, 0x23, 0x24, 0x2c, 0x09, 0x0e, 0x16, 0x0f, 0x10, 0x11, 0x1a, 0x15, 0x1f, 0x20, 0x12, 0x13, 0x14, 0x18, 0x19, 0x1b, 0x1e, 0x1c, 0x28, 0x25, 0xff
+};
+
+static const u8 gUnknown_845B81A[] = {
+ 0x1f, 0x01, 0x02, 0x06, 0x0a, 0x0b, 0x0c, 0x11, 0xff
+};
+
+static const u8 gUnknown_845B823[] = {
+ 0x09, 0x01, 0x02, 0x0a, 0x0b, 0x0c, 0x0d, 0x15, 0xff
+};
+
+static const u8 gUnknown_845B82C[] = {
+ 0x07, 0x27, 0x08, 0x2c, 0x15, 0x1f, 0x20, 0x12, 0x13, 0x14, 0x18, 0x19, 0x1b, 0x1e, 0x1c, 0x28, 0x25, 0xff
+};
+
+static const u8 gUnknown_845B83E[] = {
+ 0x1f, 0x01, 0x02, 0x06, 0x0a, 0x0b, 0x0c, 0x11, 0xff
+};
+
+static const u8 gUnknown_845B847[] = {
+ 0x09, 0x01, 0x02, 0x0a, 0x0b, 0x0c, 0x0d, 0x15, 0xff
+};
+
+static const u8 gUnknown_845B850[] = {
+ 0x0f, 0x1b, 0x1d, 0x11, 0x12, 0x15, 0x17, 0x16, 0x1f, 0x20, 0x13, 0x14, 0xff
+};
+
+static const u8 gUnknown_845B85D[] = {
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x07, 0x09, 0x2b, 0xff
+};
+
+static const u8 gUnknown_845B866[] = {
+ 0x09, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x0a, 0x0d, 0x0f, 0x12, 0x13, 0x14, 0x27, 0x15, 0xff
+};
+
+static const u8 gUnknown_845B878[] = {
+ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0xff
+};
+
+static const u8 gUnknown_845B89C[] = {
+ 0x0f, 0x1b, 0x1d, 0x11, 0x12, 0x16, 0x1f, 0x20, 0x13, 0x14, 0xff
+};
+
+static const u8 gUnknown_845B8A7[] = {
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x07, 0x2b, 0xff
+};
+
+static const u8 gUnknown_845B8AF[] = {
+ 0x09, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x0a, 0x0d, 0x0f, 0x12, 0x13, 0x14, 0x27, 0x15, 0xff
+};
+
+static const u8 gUnknown_845B8C1[] = {
+ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0xff
+};
+
+static const u8 gUnknown_845B8E5[] = {
+ 0x0f, 0x1b, 0x1d, 0x11, 0x12, 0x16, 0x1f, 0x20, 0x13, 0x14, 0xff
+};
+
+static const u8 gUnknown_845B8F0[] = {
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x07, 0x2b, 0xff
+};
+
+static const u8 gUnknown_845B8F8[] = {
+ 0x09, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x0a, 0x0d, 0x0f, 0x12, 0x13, 0x14, 0x27, 0x15, 0xff
+};
+
+static const u8 gUnknown_845B90A[] = {
+ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0xff
+};
+
+static const u8 gUnknown_845B92E[] = {
+ 0x29, 0x2a, 0x2b, 0xff
+};
+
+static const u8 gUnknown_845B932[] = {
+ 0x2d, 0x2e, 0x2f, 0x2b, 0xff
+};
+
+static const u8 gUnknown_845B937[] = {
+ 0x09, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x0a, 0x0d, 0x0f, 0x12, 0x13, 0x14, 0xff
+};
+
+static const u8 gUnknown_845B947[] = {
+ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0xff
+};
+
+static const u8 gUnknown_845B96B[] = {
+ 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x30, 0xff
+};
+
+static const u8 gUnknown_845B978[] = {
+ 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x30, 0xff
+};
+
+static const u8 gUnknown_845B985[] = {
+ 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x30, 0xff
+};
+
+static const u8 gUnknown_845B992[] = {
+ 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x30, 0xff
+};
+
+static const u8 gUnknown_845B99F[] = {
+ 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x30, 0xff
+};
+
+static const u8 gUnknown_845B9AC[] = {
+ 0x26, 0x27, 0x28, 0x29, 0x2a, 0xff
+};
+
+static const u8 gUnknown_845B9B2[] = {
+ 0x26, 0x27, 0x28, 0x29, 0x2a, 0xff
+};
+
+static const u8 gUnknown_845B9B8[] = {
+ 0x26, 0x27, 0x28, 0x29, 0x2a, 0xff
+};
+
+static const u8 gUnknown_845B9BE[] = {
+ 0x09, 0x01, 0x02, 0x03, 0x23, 0x25, 0x24, 0x04, 0x05, 0x06, 0x07, 0x08, 0x0a, 0x0b, 0x0c, 0x0d, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x27, 0x15, 0x26, 0x16, 0x17, 0x18, 0x1a, 0x0e, 0x1b, 0xff
+};
+
+static const u8 *const gUnknown_845B9E0[] = {
+ NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, gUnknown_845B660, NULL,
+ NULL, NULL, NULL, gUnknown_845B664, NULL,
+ NULL, gUnknown_845B668, NULL, gUnknown_845B66A, NULL,
+ NULL, gUnknown_845B66E, NULL, NULL, NULL,
+ NULL, gUnknown_845B671, gUnknown_845B677, NULL, NULL,
+ NULL, gUnknown_845B67A, gUnknown_845B67D, NULL, NULL,
+ NULL, NULL, gUnknown_845B684, NULL, NULL,
+ NULL, NULL, gUnknown_845B68E, NULL, NULL,
+ NULL, gUnknown_845B696, gUnknown_845B6A1, NULL, NULL,
+ NULL, gUnknown_845B6A5, gUnknown_845B6A7, NULL, NULL,
+ NULL, gUnknown_845B6AD, NULL, NULL, NULL,
+ NULL, gUnknown_845B6AF, gUnknown_845B6B1, NULL, NULL,
+ NULL, gUnknown_845B6B5, gUnknown_845B6B7, NULL, NULL,
+ gUnknown_845B6BF, NULL, NULL, gUnknown_845B6C3, NULL,
+ gUnknown_845B6C8, gUnknown_845B6CE, gUnknown_845B6E2, NULL, NULL,
+ gUnknown_845B6E9, gUnknown_845B6F2, gUnknown_845B707, gUnknown_845B70E, NULL,
+ gUnknown_845B714, gUnknown_845B71D, gUnknown_845B731, NULL, NULL,
+ gUnknown_845B73D, gUnknown_845B744, gUnknown_845B758, NULL, gUnknown_845B75F,
+ gUnknown_845B783, gUnknown_845B7A7, gUnknown_845B7BB, NULL, NULL,
+ gUnknown_845B7C4, gUnknown_845B7E8, gUnknown_845B7F1, NULL, NULL,
+ gUnknown_845B7FB, gUnknown_845B81A, gUnknown_845B823, NULL, NULL,
+ gUnknown_845B82C, gUnknown_845B83E, gUnknown_845B847, NULL, NULL,
+ gUnknown_845B850, gUnknown_845B85D, gUnknown_845B866, NULL, gUnknown_845B878,
+ gUnknown_845B89C, gUnknown_845B8A7, gUnknown_845B8AF, NULL, gUnknown_845B8C1,
+ gUnknown_845B8E5, gUnknown_845B8F0, gUnknown_845B8F8, NULL, gUnknown_845B90A,
+ gUnknown_845B92E, gUnknown_845B932, gUnknown_845B937, NULL, gUnknown_845B947,
+ NULL, gUnknown_845B96B, NULL, NULL, NULL,
+ NULL, gUnknown_845B978, NULL, NULL, NULL,
+ NULL, gUnknown_845B985, NULL, NULL, NULL,
+ NULL, gUnknown_845B992, NULL, NULL, NULL,
+ NULL, gUnknown_845B99F, NULL, NULL, NULL,
+ NULL, gUnknown_845B9AC, NULL, NULL, NULL,
+ NULL, gUnknown_845B9B2, NULL, NULL, NULL,
+ NULL, gUnknown_845B9B8, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, NULL
+};
+
+static const u16 unref_845BCB0[] = INCBIN_U16("graphics/help_system/unk_845BCB0.bin");
+
+static const u8 gUnknown_845C4B0[] = {
+ 3, 0, 1, 2, 4, 5
+};
+
+static const u8 gUnknown_845C4B6[][6] = {
+ {0, 0, 0, 0, 0, 1},
+ {0, 0, 0, 1, 0, 1},
+ {0, 0, 0, 1, 0, 1},
+ {0, 1, 0, 1, 0, 1},
+ {0, 1, 0, 0, 0, 1},
+ {0, 1, 1, 0, 0, 1},
+ {0, 1, 1, 0, 0, 1},
+ {0, 0, 1, 0, 0, 1},
+ {0, 0, 1, 0, 0, 1},
+ {0, 1, 1, 0, 0, 1},
+ {0, 1, 1, 0, 0, 1},
+ {0, 1, 0, 0, 0, 1},
+ {0, 1, 1, 0, 0, 1},
+ {0, 1, 1, 0, 0, 1},
+ {1, 0, 0, 1, 0, 1},
+ {1, 1, 1, 0, 0, 1},
+ {1, 1, 1, 1, 0, 1},
+ {1, 1, 1, 0, 0, 1},
+ {1, 1, 1, 0, 1, 1},
+ {1, 1, 1, 0, 0, 1},
+ {1, 1, 1, 0, 0, 1},
+ {1, 1, 1, 0, 0, 1},
+ {1, 1, 1, 0, 0, 1},
+ {1, 1, 1, 0, 1, 1},
+ {1, 1, 1, 0, 1, 1},
+ {1, 1, 1, 0, 1, 1},
+ {1, 1, 1, 0, 1, 1},
+ {0, 1, 0, 0, 0, 1},
+ {0, 1, 0, 0, 0, 1},
+ {0, 1, 0, 0, 0, 1},
+ {0, 1, 0, 0, 0, 1},
+ {0, 1, 0, 0, 0, 1},
+ {0, 1, 0, 0, 0, 1},
+ {0, 1, 0, 0, 0, 1},
+ {0, 1, 0, 0, 0, 1},
+ {0, 0, 0, 0, 0, 0},
+ {0, 0, 0, 0, 0, 0}
+};
+
+static const u16 gUnknown_845C594[] = {
+ MAP_VIRIDIAN_CITY_MART,
+ MAP_PEWTER_CITY_MART,
+ MAP_CERULEAN_CITY_MART,
+ MAP_LAVENDER_TOWN_MART,
+ MAP_VERMILION_CITY_MART,
+ MAP_CELADON_CITY_DEPARTMENT_STORE_1F,
+ MAP_CELADON_CITY_DEPARTMENT_STORE_2F,
+ MAP_CELADON_CITY_DEPARTMENT_STORE_3F,
+ MAP_CELADON_CITY_DEPARTMENT_STORE_4F,
+ MAP_CELADON_CITY_DEPARTMENT_STORE_5F,
+ MAP_CELADON_CITY_DEPARTMENT_STORE_ROOF,
+ MAP_CELADON_CITY_DEPARTMENT_STORE_ELEVATOR,
+ MAP_FUCHSIA_CITY_MART,
+ MAP_CINNABAR_ISLAND_MART,
+ MAP_SAFFRON_CITY_MART,
+ MAP_THREE_ISLAND_MART,
+ MAP_FOUR_ISLAND_MART,
+ MAP_SEVEN_ISLAND_MART,
+ MAP_SIX_ISLAND_MART,
+ MAP_UNDEFINED
+};
+
+static const u16 gUnknown_845C5BC[] = {
+ MAP_PEWTER_CITY_GYM,
+ MAP_CERULEAN_CITY_GYM,
+ MAP_VERMILION_CITY_GYM,
+ MAP_CELADON_CITY_GYM,
+ MAP_FUCHSIA_CITY_GYM,
+ MAP_SAFFRON_CITY_GYM,
+ MAP_CINNABAR_ISLAND_GYM,
+ MAP_VIRIDIAN_CITY_GYM,
+ MAP_UNDEFINED
+};
+
+static const u8 gUnknown_845C5CE[][3] = {
+ { MAP_GROUP(VIRIDIAN_FOREST), MAP_NUM(VIRIDIAN_FOREST), 1 },
+ { MAP_GROUP(MT_MOON_1F), MAP_NUM(MT_MOON_1F), 3 },
+ { MAP_GROUP(ROCK_TUNNEL_1F), MAP_NUM(ROCK_TUNNEL_1F), 2 },
+ { MAP_GROUP(DIGLETTS_CAVE_NORTH_ENTRANCE), MAP_NUM(DIGLETTS_CAVE_NORTH_ENTRANCE), 3 },
+ { MAP_GROUP(SEAFOAM_ISLANDS_1F), MAP_NUM(SEAFOAM_ISLANDS_1F), 5 },
+ { MAP_GROUP(VICTORY_ROAD_1F), MAP_NUM(VICTORY_ROAD_1F), 3 },
+ { MAP_GROUP(CERULEAN_CAVE_1F), MAP_NUM(CERULEAN_CAVE_1F), 3 },
+ { MAP_GROUP(MT_EMBER_RUBY_PATH_B4F), MAP_NUM(MT_EMBER_RUBY_PATH_B4F), 1 },
+ { MAP_GROUP(MT_EMBER_SUMMIT_PATH_1F), MAP_NUM(MT_EMBER_SUMMIT_PATH_1F), 3 },
+ { MAP_GROUP(MT_EMBER_RUBY_PATH_B5F), MAP_NUM(MT_EMBER_RUBY_PATH_B5F), 7 },
+ { MAP_GROUP(THREE_ISLAND_BERRY_FOREST), MAP_NUM(THREE_ISLAND_BERRY_FOREST), 1 },
+ { MAP_GROUP(SIX_ISLAND_PATTERN_BUSH), MAP_NUM(SIX_ISLAND_PATTERN_BUSH), 1 },
+ { MAP_GROUP(FIVE_ISLAND_LOST_CAVE_ENTRANCE), MAP_NUM(FIVE_ISLAND_LOST_CAVE_ENTRANCE), 15 },
+ { MAP_GROUP(FOUR_ISLAND_ICEFALL_CAVE_ENTRANCE), MAP_NUM(FOUR_ISLAND_ICEFALL_CAVE_ENTRANCE), 4 },
+ { MAP_GROUP(SIX_ISLAND_ALTERING_CAVE), MAP_NUM(SIX_ISLAND_ALTERING_CAVE), 1 },
+ { MAP_GROUP(SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER), MAP_NUM(SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER), 7 }
+};
+
+void sub_812B1E0(u8 a0)
+{
+ gUnknown_203B0EC = a0;
+}
+
+void HelpSystem_SetSomeVariable2(u8 a0)
+{
+ switch (gUnknown_203B0EC)
+ {
+ case 23:
+ case 24:
+ case 25:
+ case 26:
+ if (a0 == 9 || a0 == 5 || a0 == 6 || a0 == 7 || a0 == 8)
+ break;
+ // fallthrough
+ default:
+ gUnknown_203B0EC = a0;
+ break;
+ }
+}
+
+void sub_812B220(void)
+{
+ gUnknown_203B0EC = gSpecialVar_0x8004;
+}
+
+void sub_812B234(void)
+{
+ gUnknown_3005EA0 = gUnknown_203B0EC;
+}
+
+void sub_812B248(void)
+{
+ gUnknown_203B0EC = gUnknown_3005EA0;
+}
+
+static bool32 sub_812B25C(void)
+{
+ return sub_812B27C(gUnknown_845C594);
+}
+
+static bool32 sub_812B26C(void)
+{
+ return sub_812B27C(gUnknown_845C5BC);
+}
+
+static bool32 sub_812B27C(const u16 * mapIdxs)
+{
+ u16 mapIdx = (gSaveBlock1Ptr->location.mapGroup << 8) + gSaveBlock1Ptr->location.mapNum;
+ s32 i;
+
+ for (i = 0; mapIdxs[i] != MAP_UNDEFINED; i++)
+ {
+ if (mapIdxs[i] == mapIdx)
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static bool8 sub_812B2C4(void)
+{
+ u8 i, j;
+
+ for (i = 0; i < 16; i++)
+ {
+ for (j = 0; j < gUnknown_845C5CE[i][2]; j++)
+ {
+ if (
+ gUnknown_845C5CE[i][0] == gSaveBlock1Ptr->location.mapGroup
+ && gUnknown_845C5CE[i][1] + j == gSaveBlock1Ptr->location.mapNum
+ && (i != 15 || FlagGet(FLAG_0x849) == TRUE)
+ )
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+void sub_812B35C(void)
+{
+ sub_812B4B8();
+ if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
+ HelpSystem_SetSomeVariable2(0x16);
+ else if (sub_812B2C4())
+ HelpSystem_SetSomeVariable2(0x15);
+ else if (is_light_level_8_or_9(gMapHeader.mapType))
+ {
+ if ((gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(PALLET_TOWN_PLAYERS_HOUSE_1F) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(PALLET_TOWN_PLAYERS_HOUSE_1F)) || (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(PALLET_TOWN_PLAYERS_HOUSE_2F) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(PALLET_TOWN_PLAYERS_HOUSE_2F)))
+ HelpSystem_SetSomeVariable2(0x0E);
+ else if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(PALLET_TOWN_PROFESSOR_OAKS_LAB) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(PALLET_TOWN_PROFESSOR_OAKS_LAB))
+ HelpSystem_SetSomeVariable2(0x0F);
+ else if (IsCurMapPokeCenter() == TRUE)
+ HelpSystem_SetSomeVariable2(0x10);
+ else if (sub_812B25C() == TRUE)
+ HelpSystem_SetSomeVariable2(0x11);
+ else if (sub_812B26C() == TRUE)
+ HelpSystem_SetSomeVariable2(0x12);
+ else
+ HelpSystem_SetSomeVariable2(0x13);
+ }
+ else
+ HelpSystem_SetSomeVariable2(0x14);
+}
+
+bool8 sub_812B40C(void)
+{
+ if (gUnknown_203B0EE == 1)
+ return FALSE;
+
+ if (gSaveFileStatus != SAVE_STATUS_EMPTY && gSaveFileStatus != SAVE_STATUS_INVALID && FlagGet(FLAG_0x83C))
+ return FALSE;
+
+ FlagSet(FLAG_0x83C);
+ gUnknown_203B0EE = 1;
+ return TRUE;
+}
+
+bool8 sub_812B45C(void)
+{
+ if (gReceivedRemoteLinkPlayers == 1)
+ return FALSE;
+ return TRUE;
+}
+
+void sub_812B478(void)
+{
+ gUnknown_3005ECC = 0;
+}
+
+void sub_812B484(void)
+{
+ if (gUnknown_203ADFA != 2 && gUnknown_203ADFA != 3)
+ {
+ gUnknown_3005ECC = 1;
+ sub_812B4B8();
+ }
+}
+
+void sub_812B4AC(void)
+{
+ gUnknown_203F175 = 1;
+}
+
+void sub_812B4B8(void)
+{
+ gUnknown_203F175 = 0;
+}
+
+static void sub_812B4C4(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1)
+{
+ a0->sub.field_00 = a1;
+ a0->sub.field_04 = 1;
+ a0->sub.field_06 = 1;
+ a0->sub.field_08 = 1;
+ a0->sub.field_09 = 4;
+}
+
+static void sub_812B4D8(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1)
+{
+ sub_812B4C4(a0, a1);
+ sub_812B520(a0, a1);
+ sub_812BF74(gUnknown_841DFAC);
+ sub_813C64C(a0, 0, gUnknown_3005E9C[2]);
+ sub_812BF9C(a0, a1);
+ sub_813BDA4(1);
+ sub_813BD5C(1);
+}
+
+static void sub_812B520(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1)
+{
+ u8 i;
+ u8 r4 = 0;
+ for (i = 0; i < 6; i++)
+ {
+ if (gUnknown_845C4B6[gUnknown_203B0EC][gUnknown_845C4B0[i]] == 1)
+ {
+ a1[r4].label = gUnknown_845B080[gUnknown_845C4B0[i]];
+ a1[r4].index = gUnknown_845C4B0[i];
+ r4++;
+ }
+ }
+ a1[r4 - 1].index = -2;
+ a0->sub.field_04 = r4;
+ a0->sub.field_06 = r4;
+ a0->sub.field_08 = 0;
+}
+
+static void sub_812B5A8(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1)
+{
+ sub_813BDE8(0);
+ sub_813BFC0(0);
+ sub_813BE78(1);
+ sub_812B4C4(a0, a1);
+ sub_812B614(a0, a1);
+ sub_812BF74(gUnknown_841DFC9);
+ sub_813C64C(a0, a0->field_0C, a0->field_0D);
+ sub_813C4CC(gUnknown_845B080[gUnknown_3005E9C[1]], 0, 0);
+ sub_813BDA4(1);
+ sub_813BD5C(1);
+}
+
+static void sub_812B614(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1)
+{
+ u8 r6 = 0;
+ const u8 * r3 = gUnknown_845B9E0[gUnknown_203B0EC * 5 + gUnknown_3005E9C[1]];
+ u8 i;
+ for (i = 0; r3[i] != 0xFF; i++)
+ {
+ if (sub_812B780(r3[i]) == TRUE)
+ {
+ if (gUnknown_3005E9C[1] == 0)
+ a1[r6].label = gUnknown_845B0B0[r3[i]];
+ else if (gUnknown_3005E9C[1] == 1)
+ a1[r6].label = gUnknown_845B218[r3[i]];
+ else if (gUnknown_3005E9C[1] == 2)
+ a1[r6].label = gUnknown_845B3A0[r3[i]];
+ else if (gUnknown_3005E9C[1] == 3)
+ a1[r6].label = gUnknown_845B500[r3[i]];
+ else
+ a1[r6].label = gUnknown_845B540[r3[i]];
+ a1[r6].index = r3[i];
+ r6++;
+ }
+ }
+ if (sub_812B754() == TRUE)
+ {
+ for (i = 0, r3 = gUnknown_845B9BE; r3[i] != 0xFF; i++)
+ {
+ a1[r6].label = gUnknown_845B3A0[r3[i]];
+ a1[r6].index = r3[i];
+ r6++;
+ }
+ }
+ a1[r6].label = gUnknown_81B2E6F;
+ a1[r6].index = -2;
+ r6++;
+ a0->sub.field_04 = r6;
+ a0->sub.field_06 = 7;
+ a0->sub.field_08 = 0;
+ a0->sub.field_09 = 21;
+}
+
+static bool8 sub_812B754(void)
+{
+ if (FlagGet(FLAG_0x4B0) == TRUE && gUnknown_3005E9C[1] == 2)
+ return TRUE;
+ return FALSE;
+}
+
+static bool8 sub_812B780(u8 id)
+{
+ u8 i = 0;
+
+ if (gUnknown_3005E9C[1] == 0)
+ {
+ switch (id)
+ {
+ case 1:
+ case 2:
+ case 3:
+ case 5:
+ case 8:
+ case 34:
+ case 38:
+ case 41:
+ case 42:
+ case 43:
+ return TRUE;
+ case 4:
+ return FlagGet(FLAG_0x2CF);
+ case 6:
+ case 10:
+ case 16:
+ case 19:
+ case 22:
+ case 35:
+ case 36:
+ return FlagGet(FLAG_WORLD_MAP_VIRIDIAN_CITY);
+ case 7:
+ return FlagGet(FLAG_WORLD_MAP_VERMILION_CITY);
+ case 11:
+ case 24:
+ return FlagGet(FLAG_0x8A4);
+ case 9:
+ case 13:
+ case 14:
+ case 15:
+ case 17:
+ case 18:
+ case 20:
+ case 26:
+ case 29:
+ case 31:
+ case 37:
+ return FlagGet(FLAG_0x828);
+ case 21:
+ case 23:
+ return FlagGet(FLAG_0x829);
+ case 12:
+ case 25:
+ case 27:
+ case 30:
+ case 32:
+ case 33:
+ return FlagGet(FLAG_UNK820);
+ case 28:
+ case 40:
+ return sub_812BB10();
+ case 39:
+ return FlagGet(FLAG_0x29B);
+ case 44:
+ return FlagGet(FLAG_WORLD_MAP_PEWTER_CITY);
+ }
+ return FALSE;
+ }
+ if (gUnknown_3005E9C[1] == 1)
+ {
+ switch (id)
+ {
+ case 06:
+ case 10:
+ case 11:
+ case 12:
+ case 19:
+ case 20:
+ case 21:
+ case 22:
+ case 23:
+ case 24:
+ case 25:
+ case 26:
+ case 27:
+ case 28:
+ case 29:
+ case 31:
+ case 36:
+ case 38:
+ case 39:
+ case 40:
+ case 41:
+ case 42:
+ case 45:
+ case 46:
+ case 47:
+ return TRUE;
+ case 1:
+ case 30:
+ case 37:
+ return FlagGet(FLAG_0x829);
+ case 14:
+ return CheckBagHasItem(ITEM_TOWN_MAP, 1);
+ case 2:
+ case 3:
+ case 5:
+ case 7:
+ case 8:
+ case 9:
+ case 13:
+ case 32:
+ case 33:
+ case 35:
+ case 43:
+ case 44:
+ return FlagGet(FLAG_0x828);
+ case 4:
+ case 34:
+ if (sub_8088EDC(1) > 1)
+ return TRUE;
+ return FALSE;
+ case 15:
+ return FlagGet(FLAG_UNK820);
+ case 16:
+ case 17:
+ return sub_812BB10();
+ case 18:
+ return FlagGet(FLAG_0x271);
+ case 48:
+ return FlagGet(FLAG_0x82C);
+ }
+ return FALSE;
+ }
+ if (gUnknown_3005E9C[1] == 2)
+ {
+ if (sub_812B754() == TRUE)
+ {
+ for (i = 0; gUnknown_845B9BE[i] != 0xFF; i++)
+ {
+ if (gUnknown_845B9BE[i] == id)
+ return FALSE;
+ }
+ }
+ switch (id)
+ {
+ case 14:
+ case 17:
+ case 22:
+ case 23:
+ case 24:
+ case 25:
+ case 26:
+ case 27:
+ case 28:
+ case 29:
+ case 30:
+ case 31:
+ case 32:
+ case 33:
+ case 34:
+ case 35:
+ case 38:
+ return TRUE;
+ case 1:
+ case 2:
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ case 8:
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ case 13:
+ case 16:
+ case 19:
+ case 20:
+ case 21:
+ return FlagGet(FLAG_0x828);
+ case 36:
+ case 37:
+ return sub_812BB10();
+ case 3:
+ case 15:
+ case 18:
+ case 39:
+ return FlagGet(FLAG_0x8A4);
+ }
+ return TRUE;
+ }
+ if (gUnknown_3005E9C[1] == 3)
+ {
+ switch (id)
+ {
+ case 5:
+ return FlagGet(FLAG_UNK820);
+ case 6:
+ return FlagGet(FLAG_0x821);
+ }
+ return TRUE;
+ }
+ if (gUnknown_3005E9C[1] == 4)
+ {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static bool8 sub_812BB10(void)
+{
+ if (FlagGet(FLAG_0x237) == TRUE)
+ return TRUE;
+ if (FlagGet(FLAG_0x238) == TRUE)
+ return TRUE;
+ if (FlagGet(FLAG_0x239) == TRUE)
+ return TRUE;
+ if (FlagGet(FLAG_0x23A) == TRUE)
+ return TRUE;
+ if (FlagGet(FLAG_0x23B) == TRUE)
+ return TRUE;
+ if (FlagGet(FLAG_0x2EF) == TRUE)
+ return TRUE;
+ if (FlagGet(FLAG_0x1F1) == TRUE)
+ return TRUE;
+ return FALSE;
+}
+
+bool8 sub_812BB9C(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1)
+{
+ switch (a0->field_0E)
+ {
+ case 8:
+ return sub_812BC54(a0, a1);
+ case 9:
+ return sub_812BC80(a0, a1);
+ case 10:
+ return sub_812BCA8(a0, a1);
+ case 0:
+ return sub_812BCD0(a0, a1);
+ case 1:
+ return sub_812BD2C(a0, a1);
+ case 2:
+ return sub_812BD64(a0, a1);
+ case 3:
+ return sub_812BD98(a0, a1);
+ case 4:
+ return sub_812BE10(a0, a1);
+ case 5:
+ return sub_812BEEC(a0, a1);
+ case 6:
+ return sub_812BF18(a0, a1);
+ }
+ return FALSE;
+}
+
+bool8 sub_812BC54(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1)
+{
+ sub_812BF74(gUnknown_841DFA5);
+ sub_812BF5C();
+ sub_813BDA4(1);
+ sub_813BD5C(1);
+ a0->field_0E = 9;
+ return TRUE;
+}
+
+bool8 sub_812BC80(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1)
+{
+ if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ a0->field_0E = 10;
+ }
+ return TRUE;
+}
+
+bool8 sub_812BCA8(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1)
+{
+ gUnknown_3005E9C[2] = 0;
+ sub_812BF94(a0);
+ sub_812B4D8(a0, a1);
+ a0->field_0E = 0;
+ return TRUE;
+}
+
+bool8 sub_812BCD0(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1)
+{
+ s32 v0 = sub_813C690();
+ switch (v0)
+ {
+ case -6:
+ case -2:
+ return FALSE;
+ case -5:
+ case -4:
+ sub_812BF9C(a0, a1);
+ break;
+ case -3:
+ case -1:
+ break;
+ default:
+ gUnknown_3005E9C[1] = v0;
+ a0->field_0E = 1;
+ break;
+ }
+ return TRUE;
+}
+
+bool8 sub_812BD2C(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1)
+{
+ gUnknown_3005E9C[0] = 1;
+ gUnknown_3005E9C[2] = a0->field_0D;
+ sub_812BF94(a0);
+ sub_812B5A8(a0, a1);
+ sub_813C75C();
+ sub_813C684(2);
+ a0->field_0E = 3;
+ return TRUE;
+}
+
+bool8 sub_812BD64(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1)
+{
+ sub_813C004(0, 0);
+ sub_813C004(1, 0);
+ gUnknown_3005E9C[0] = 0;
+ sub_812B4D8(a0, a1);
+ a0->field_0E = 0;
+ return TRUE;
+}
+
+bool8 sub_812BD98(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1)
+{
+ s32 v0 = sub_813C690();
+ switch (v0)
+ {
+ case -6:
+ return FALSE;
+ case -2:
+ a0->field_0E = 2;
+ break;
+ case -5:
+ case -4:
+ case -3:
+ case -1:
+ break;
+ default:
+ gUnknown_3005E9C[3] = v0;
+ a0->field_0E = 4;
+ break;
+ }
+ return TRUE;
+}
+
+void sub_812BDEC(void)
+{
+ sub_813C4CC(gUnknown_845B080[gUnknown_3005E9C[1]], 0, 0);
+}
+
+bool8 sub_812BE10(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1)
+{
+ gUnknown_3005E9C[0] = 2;
+ sub_813BDA4(0);
+ sub_813C624();
+ sub_812BF74(gUnknown_841DFBE);
+ sub_813BDE8(1);
+ sub_813BEE4(1);
+
+ if (gUnknown_3005E9C[1] == 0)
+ {
+ sub_813C50C(gUnknown_845B0B0[gUnknown_3005E9C[3]], gUnknown_845B164[gUnknown_3005E9C[3]]);
+ }
+ else if (gUnknown_3005E9C[1] == 1)
+ {
+ sub_813C50C(gUnknown_845B218[gUnknown_3005E9C[3]], gUnknown_845B2DC[gUnknown_3005E9C[3]]);
+ }
+ else if (gUnknown_3005E9C[1] == 2)
+ {
+ sub_813C50C(gUnknown_845B3A0[gUnknown_3005E9C[3]], gUnknown_845B450[gUnknown_3005E9C[3]]);
+ }
+ else if (gUnknown_3005E9C[1] == 3)
+ {
+ sub_813C50C(gUnknown_845B500[gUnknown_3005E9C[3]], gUnknown_845B520[gUnknown_3005E9C[3]]);
+ }
+ else
+ {
+ sub_813C50C(gUnknown_845B540[gUnknown_3005E9C[3]], gUnknown_845B5D0[gUnknown_3005E9C[3]]);
+ }
+ sub_813BDA4(1);
+ sub_813BD5C(1);
+ a0->field_0E = 6;
+ return TRUE;
+}
+
+bool8 sub_812BEEC(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1)
+{
+ gUnknown_3005E9C[0] = 1;
+ sub_812B5A8(a0, a1);
+ sub_813C75C();
+ sub_813C684(2);
+ a0->field_0E = 3;
+ return TRUE;
+}
+
+bool8 sub_812BF18(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1)
+{
+ if (JOY_NEW(B_BUTTON) || JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ a0->field_0E = 5;
+ return TRUE;
+ }
+ if (JOY_NEW(L_BUTTON | R_BUTTON))
+ return FALSE;
+ return TRUE;
+}
+
+static void sub_812BF5C(void)
+{
+ sub_813C624();
+ sub_813C4CC(gUnknown_81B2FC9, 0, 0);
+}
+
+static void sub_812BF74(const u8 * str)
+{
+ sub_813C5FC();
+ sub_813C488(str);
+}
+
+u8 sub_812BF88(void)
+{
+ return gUnknown_3005E9C[0];
+}
+
+static void sub_812BF94(struct HelpSystemStruct_203F190 * a0)
+{
+ a0->field_0C = 0;
+ a0->field_0D = 0;
+}
+
+static void sub_812BF9C(struct HelpSystemStruct_203F190 * a0, struct ListMenuItem * a1)
+{
+ s32 index = a1[a0->field_0C + a0->field_0D].index;
+ if (index == -2)
+ sub_813C584(gUnknown_845B098[5]);
+ else
+ sub_813C584(gUnknown_845B098[index]);
+ sub_813BE30(1);
+}
diff --git a/sym_common.txt b/sym_common.txt
index 56536bda2..429623cb7 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -318,12 +318,8 @@ gUnknown_3005E94: @ 3005E94
gUnknown_3005E98: @ 3005E98
.space 0x4
-gUnknown_3005E9C: @ 3005E9C
- .space 0x4
-
-gUnknown_3005EA0: @ 3005EA0
- .space 0x10
-
+ .include "help_system_812B1E0.o"
+ .align 4
.include "fame_checker.o"
gUnknown_3005ECC: @ 3005ECC
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 4bd540684..5219ec5ef 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -1483,14 +1483,13 @@ gUnknown_203B0E4: @ 203B0E4
gUnknown_203B0E8: @ 203B0E8
.space 0x4
-gUnknown_203B0EC: @ 203B0EC
- .space 0x2
-
-gUnknown_203B0EE: @ 203B0EE
- .space 0x2
-
+ .align 2
+ .include "src/help_system_812B1E0.o"
+ .align 2
.include "src/fame_checker.o"
+ .align 2
.include "src/oak_speech.o"
+ .align 2
.include "src/tm_case.o"
gUnknown_203B130: @ 203B130